ruby

read_body の抜け方。

さっきの続きで次のようなコードを考えてみた。 $lasttime = Time.now def proc(uri) begin t = Thread.new { while true if(Time.now - $lasttime > TIMEOUT_SECONDS) raise "Read Chunk Timeout" end sleep TIMEOUT_SECONDS end } Net::HTTP.start(uri.hos…

イテレータのタイムアウト

たとえばこういう Ruby のコードがあって、 Net::HTTP.start(host, port) { |http| http.request(request) { |response| response.read_body { |chunk| func(chunk) } } } read_body {|chunk| ... } というイテレータで、「エンティティボディを少しづつ取得…

Twitter Streaming API + Ruby

いろいろうだうだはまったがなんとか動き出した。 ソースが長くなったんで、 wordpress の plugin では限界があるんで、 wiki の方に貼っておいた。 Twitter Streaming API + Ruby。 いろんなことが関わってくる。 MySQL/Ruby、Syslog、Daemon、Twitter Stre…

daemon + mysql

とりあえず、GETメソッドならこれでよし。 [ruby] require 'net/http' require 'uri' require 'rubygems' require 'json' require 'mysql' TWITTER_SCREEN_NAME = 'xxxxxx' TWITTER_PASSWORD = 'xxxxx' MYSQL_HOST = 'xxxxx' MYSQL_USER = 'xxxxx' MYSQL_PAS…

levenshtein-0.2.0-1.9

Erik Veenstra氏によるlevenshtein-0.2.0を wrsに使っていたのだが、 ruby が 1.9 になってからうまくコンパイルできなくなっていた。 いや、もともとうまくコンパイルできないんで、工夫が要ったのだけど。 それでなんかいつも授業準備ばかりで煮詰まったの…

Hash clear

だいぶ速くなってきたような気がするが、それでもまだ遅いのでいろいろいじる。 OptimizingRubyProgramによれば Hash は new するより clear する方が速いらしいので、そうしてみる。 Array は new するより clear するより replace([]) する方が速いらしい…

jawiki-20100107-pages-meta-history.xml.7z

さっそく処理開始。 さて、少しは速くなってくれたかな。 だめだ。 やはり GC.start は必要。

rbprof

RbProfを使ってみる。 Standard profiler (profile.rb) is slow (typically slows down your program by a factor of 60-200). Ruby 標準の profiler だとだいたい 60倍から 200倍遅くなる、と言っている。 Fast (typically 5-10 times faster than Ruby's s…

ruby profile

Ruby Profileって それ自体がかなり遅いようだな。 全然終わらんよ。 profile はそれ自身がオーバーヘッドになるためメソッド呼び出しあたりの処理時間がかなり遅くなります。 RAA - rbprof Profiler which is faster and more "to the point" than profile.…

ruby 周り

比較的ヒマなのと、リハビリを兼ねて Ruby をいじってみる。 fedora もいつのまにか 12 になってる。 fedora 11 では update しても ruby は 1.8.6 のまま。 1.8.7 または 1.9.1 では高速化しているというが、 1.9.1 使うと古いパッケージが動かない。 1.8.7…

ruby 1.9.1をfedora11に入れてみる。

けっこうむずい。 MySQL/Ruby もコンパイル。 yum なら yum install mysql-ruby一発なのだが。 yum で zlib-devel、mysql-devel なども入れる必要があるかも。 --with-mysql-config オプションつけるといける。 が、しかし、Levenshteinがうまくコンパイルで…

gem版levenshteinを使ってみる。

なんか、またしても無限ループから帰ってこないのでへこたれた。 原因不明だがまたlevenshteinのせいだろうか。 で、いっそのことCで書かれてて速いというライブラリ levenshtein0.2.0 を試してみることにする。 RubyForge levenshtein0.2.0 を拾ってくる。 …

やはり止まる。

またまたRubyが無言でお亡くなりになっていた。 800万件くらいすぎたところで。 やあ困ったな。 ウィキペディア英語版は今600万件あるらしいから、 特別ページや単なるリダイレクトを含めると実際の項目数はその倍くらいあるだろう。 ゴールは2000万件くらい…