近況

移転しましたhttp://www.todesking.com/blog/

JMeter、試験中にorg.apache.commons.httpclient.NoHttpResponseException(The target server failed to respond)とか言われる理由

HTTPリクエスト設定でKeepAlive有効になってる場合、サーバ側で接続がタイムアウトしてる可能性あります。KeepAliveのタイムアウト設定を見なおしてみると幸せになれるかも。

Ruby、スーパークラスにメソッドが定義されている時だけsuperしたい

あけましておめでとうございます!!!!!!!!!!!!!表題の機能はinheritedメソッドが定義されてるモジュール複数includeする時などに欲しくなるわけですが、 def inherited(klass) super if defined?(super) end などとすることで実現できる。define…

Rubyでトポロジカルソートする

トポロジカルソート - Wikipedia依存関係を定義したグラフを元に処理順決めるときに使ったりするあれです、あれ。 gitのコミットオブジェクト(複数の親を持つ可能性がある)を並び替える必要があったので調べた。Rubyには tsortというライブラリが標準添付されて…

ActiveRecord、STIする時のクラス決定ルールを自由に決める

前提 ActiveRecord 3.2.11 実装 クラスの決定はActiveRecord::Inheritance#instantiate(record)内で行ってるので、そこにパッチ当てればいける。 https://gist.github.com/4690748ただ、クラスの決定はロード時にしか行われないわけで、動的に変わるカラムを…

Ruby、method_addeみたいに定数が定義されたときフックしたい

けど無理っぽいので本体改造してみたModule#const_addedを定義しておいて、定数定義する関数の本体が rb_const_set(VALUE klass, ID id, VALUE val) なので、そこに細工して定数セット後に const_added を呼んでやればOK。 ただしrb_const_setはRuby起動時のク…

Rails、ActiveRecord+mysql2、SQL実行時にwarning出たらエラーにする

MySQLのwarningって、 文字列が長すぎたから勝手に短くして保存しておいたよ! 数字が大きすぎたから適当な数字を保存しておいたよ!! 数値として解釈できない文字列があったから0とみなして比較したよ!!! など、無視すると死ぬ系メッセージであることが多いん…

Rails、レンダリングされたHTMLのどこがどのpartialから来たのかをコメントとして埋める

追記: Gem化されたよ!! カオティックなViewを修正する場合、ここの記述を直したいけどどのpartial見ればいいんだってことがたまによくあるのです。https://gist.github.com/4174687

Macはopt+spaceでU+00A0(No-Break Space, 0xC2A0)が入力できる

select * from users where id = 1; /* => Unknown column ' 1' in 'where clause' */ という用途に使えます。 便利ですね(;´Д`)

Mac、Spotlightの「デベロッパ」メニューを無効化する

Xcode入れるとSpotlightに勝手に「デベロッパ」という項目が追加され、システム環境設定から無効化できない!!!滅びろApple!!!!!!! 環境 OS X 10.7 やり方 ここ参照。 http://hints.macworld.com/article.php?story=20110805192212447 open ~/Libra…

Ruby, C++のBoost::Lambdaみたいなスタイルでブロック書けるgemつくった

boost_lambda_style_proc $ gem install boost_lambda_style_proc名前が長い…… 最初はboost_style_lambdaにしようと思ったけどLambdaじゃなくてProcを生成するためのライブラリなので誠実ではない!!!となった結果こうなった(長い)Boost::Lambdaっていうの…

Ruby、Enumerableから重み付きでランダムに要素を取り出すgemつくった

類似gemとしては ActiveRecord用のweighted_random {value => weight} 形式のHashを使う weighted_randomizer というのがあったけど、当方のユースケースには合わなかったので自作した。weighted_sample $ gem install weighted_sampleで入ります。 require …

terminal+bash+screen、ターミナルがバックグラウンドだった場合、コマンド終了時に通知してほしい

1. PS1に \[\033[\a\]を追加(プロンプト表示時にbellする)2. screenの設定でaudible bellを有効に3. terminalの設定でaudible bellを有効にで、バックグラウンドでコマンド終了→PS1が表示されてベルが鳴る→dockで通知されるということになる。なぜか音は出な…

Ruby+XMPP4RでJabberのグループチャットに投稿する

グループチャット使うにはJabber::MUC::MUCClientをつかうひつようがある。 # 環境: Ruby 1.9.2+xmpp4r 0.5 require 'xmpp4r' require 'xmpp4r/muc' # サーバにつなぐ client = Jabber::Client.new(Jabber::JID.new("todesking@im.example.com") client.conn…

Opera、 "the certificate is valid but permission denied." とやらでHTTPSなページにつながらない

環境 Opera 12.00 症状 一部のHTTPSなページ(私の場合GMailとかGoogle系サービスでした)を見ようとすると Unable to complete secure transaction Secure connection: fatal error (49) ... the certificate is valid but permission denied. とか言われてつ…

Opera for Mac、異常に重かったけど回復した

定期的にフリーズするような症状出てたんだけど、Tools→Delete private dataを選んでいろいろ消したらなおった。 キャッシュや履歴の同期が悪さしてたのかと思われる。 時は2012年、人々はアプリケーションのキャッシュを定期的に手動で消すことで速度の低下を回…

brainfxxk処理系を最適化した話

ニコニコ超会議における、Hogelog氏による最速brainfuck処理系の発表 残念なパンを食べながら残念な言語でハッカソンをする会の開催 といった現象が私の中で化学反応を起こした結果、BF処理系の最適化にゴールデンウイークを費やすという残念な結果となった。 …

確率の誤謬

ここに、二種類のくじがあります。 二分の一の確率で200円もらえる。二分の一の確率で何ももらえない。 二分の一の確率で一億円もらえる。二分の一の確率で五千万円の負債を背負う。 どちらか一方のくじを選んで、一回引かなければいけません。あなたはどちらにしま…

Exuberant ctags、attr_readerやActiveRecordの関連定義に対応する

明示的なメソッド定義以外も検出して欲しいですよね!!! class A < ActiveRecord::Base attr_reader :x attr_writer :y attr_accessor :z has_one :one belongs_to :one has_many :many has_and_belongs_to_many :mannny end ctags標準だとこれらのアクセ…

転職しました

4年弱勤務していたチームラボ株式会社を退職し、3月末から株式会社ドリコムで働いています。 転職のきっかけは、受託開発との関わり方に悩んだことでした。

近況

退職します

Rails3用に書かれたerbファイルの文法チェックをする

erubisの文法チェックなら $ erubis -zで可能かとおもいきや、RailsというかActionViewのERBは謎の文法拡張がされており無理であった(一部のケースでvalidなテンプレートが引っかかる)。ActionView::Template::Handlers::Erubisを使うことで正しく解釈可能。…

MacBook Air設定メモ

開発用MacBook Air(2011)をもらったので設定したメモ。以前個人用マシンを設定した時のメモ: MacBook Airを買った - <s>gnarl,</s>技術メモ”’<marquee><textarea>¥ 前回との違いは、 OSX Lion JIS配列</textarea></marquee>

Rubyによる形態素解析エンジンokura 0.0.1をリリースしました

12月にさくさくテキストマイニングで発表したpure Rubyによる形態素解析エンジンをgem化しました。 まだ発展途上で機能が少なかったりパフォーマンスが悪かったりしますが、いちおう動くレベル*1になったので公開します。 注意事項 バージョン0.0.xのうちは、イ…

Vim、Ruby編集時にinsert modeが異常に重くなる現象の解決方法

概要 Vimにおいて Ruby編集時に(filetype=ruby) foldmethod=syntaxを指定していて 括弧の対応が取れていない状態で Insertモードで文字入力すると すごく重い。ファイルのサイズが大きい場合に顕著。 # ... loop { array=[1,2, # たとえばこのへんで入力してる…

近況

退職します

JavaScriptの挙動は仕様を見ればだいたい書いてある

http://d.hatena.ne.jp/gfx/20120223/1329996834 (o.f=o.f)()はglobalになった これの解釈はどうすれば…。 こういうのは仕様書見ればだいたい解決する。http://www.ecmascript.org/docs.php 今回は3rdを参照しましたが5thでも同じであろう。 メソッド呼び出し…

mecab-NAIST-jdicのCSVは、カラムがダブルクオートで囲まれてることがある

手元にあった mecab-naist-jdic-0.6.3b-20111013 時点でこれくらい。 ',5,5,667,記号,一般,*,*,*,*,"'","'","'",, (,6,6,287,記号,括弧開,*,*,*,*,"(","(","(",, ),7,7,292,記号,括弧閉,*,*,*,*,")",")",")",, ",",10,10,-731,記号,読点,*,*,*,*,",",",",",",…

DataSpiderにおけるコンポーネント間のインタラクションの設計と実装、のクラス図とシーケンス図

この記事はDataSpiderにおけるコンポーネント間のインタラクションの設計と実装 : 小野和俊のブログの勝手に補足記事です。 コードが良くわからなかったので図を書いてみた。 詳細な説明は元記事へどうぞ。

S2Junit4、before()内でコンポーネントのルックアップに失敗する

ConfigFileIncluderで定義された設定ファイルがincludeされるのはbefore()の後です!!! 詳細はS2TestMethodRunner#runMethod()あたりを参照(initContainer内でinclude処理が行われている)。 前に別件で調査してんだけどすっかり忘れてた。 S2Junit、テスト…