クラス変数と継承

クラス変数は、そのクラスに存在するので、継承したときに継承したクラスの変数ができるわけではなく、 継承先の子から親の変数を指し示すことができるだけ。

class BaseClass @@s = “baseclass” def BaseClass.s @@s end def BaseClass.s=(val) @@s = val end end class ExtendClass < BaseClass end class ExtendClass2 < BaseClass end p BaseClass.s #=> “baseclass” p ExtendClass.s #=> “baseclass” p ExtendClass2.s #=> “baseclass” ExtendClass.s = “ab” p BaseClass.s #=> “ab” 親も変わる p ExtendClass.s #=> “ab” p ExtendClass2.s #=> [...]

jrubyのインストール

まずは公式からダウンロード

自分の環境はwin7の64bitなので、jruby 1.5.2 Windows Executable(x64)を選択。 ダウンロードしたファイルを実行すると、インストーラー開始 このへんはサクサクと進めます。 サンプルを実行してみたところ。 rubyからswingのダイアログを呼び出せている。

[...]

freebsdで、youtubeのファイルをダウンロードするports youtube_dlが便利

FreeBSDのportsの

/usr/ports/www/youtube_dl

を使うと、youtubeのflvファイルをダウンロードできる。 ffmpegと組み合わせて、プレイリストのファイルをダウンロードしたり。

#!/usr/local/bin/ruby $KCODE=”u” require ‘rubygems’ require ‘hpricot’ require ‘open-uri’

plist = ARGV[0].scan(/p=(\w*)/).first.first s = open “http://www.youtube.com/view_play_list?p=#{plist}”

doc = Hpricot s.read

YOUTUBE_ADDR = “http://www.youtube.com” i = ARGV[1].to_i || 1

doc.search(“a.video-thumb-120″).each do |l| addr = l.to_html.scan(/href=”([^"&]*).*”/) title = l.to_html.scan(/img title=”([^"]*).*”/).first.first.gsub(” “,””).gsub(“/”,”-”) downaddr = YOUTUBE_ADDR + addr.first.first filename = “#{Time.now.strftime(“%Y%m%d”) + ‘_’ + sprintf(“%04d”,i) + [...]

WWW::Mechanizeで日本語を含むURLを操作するときの注意点

だめな書き方

page = agent.get(“http://hoge.net/?c=ああああ”) page = agent.get(“http://hoge.net/?c=#{CGI.escape(‘ああああ’)}”)

正しくは

uri URI.parse(“http://hoge.net/?c=#{CGI.escape(‘ああああ’)}”) page = agent.get(uri)

理由は、urlに文字列を渡すとWWW::Mechanize内部で変換をしている箇所があり、そこで変な変換結果になってしまうことがあるため。

Hikiの(むりやり)UTF-8化

hikiのutf-8化 hikiは、rubyで書かれたwikiで、DBを必要としないため簡単に利用できるのがうれしい点。 ただし、現在のバージョン(0.8.7)ではUTF-8に対応していないため、UTF-8を使用すると自分で何とかする必要がある。 以下は、何とかしたときの作業ログです。 あまり推奨できるやり方では無いと思いますが、メモとして残しておきます。

前提 まっさらなところに新たにhikiをインストールするものとします。 すでにhikiを運用している場合にそのデータをUTF-8に対応させるのは本稿の対象外とします。

まずはダウンロード。

wget http://globalbase.dl.sourceforge.jp/hiki/25954/hiki-0.8.7.tar.gz tar xvzf hiki-0.8.7.tar.gz

できたフォルダで、以下を実行して強制的にUTF-8に変換を実施

find . -name ‘*.rb’ | xargs nkf –overwrite -w; find . -name ‘*.css’ | xargs nkf –overwrite -w; find . -name ‘*.conf’ | xargs nkf –overwrite -w; find . -name ‘*.cgi’ | xargs nkf –overwrite -w; find . -name ‘*.html’ [...]