Ruby言語やLinuxのネタが多いです。
January 20, 2003
■ [Misc] ライセンス
自分でツールを作ってそれを公開するとき、それに使用許諾条件(ライセンス)をつける。
でも、このライセンスというのは自分で考えるのはとてもめんどくさいので世に出回っている著名なライセンスを借りる。
そうすると、自分で考えるより遙かに堅牢で汎用的な条件をつけることができる。
■ しかし、そういったライセンスを使うことによる権利を享受する一方で、実は、そのツール自身がそのライセンスを積極的に守っていかなければならないという義務が発生することを忘れている人はいないだろうか。
■ っていうか、オレが忘れてたわ。いかんいかん(-o-;)。
January 20, 2004
■ [Ruby-GNOME2] Visecas
Jan Weilさん作。EcasoundのGUIフロントエンドだそうです。Ruby/GTK2とRuby/Libglade2を使ってるようです。
なぜかサウンド関連のアプリケーションが多いみたい。
■ [Misc] やっぱりSFにメールが届かない
一応、Highwayのサポートに届かないんだけど、ってメール出したら、紋切り型のつれない返事。とにかくこちらが書いたモノを読まずに一次回答用のテンプレートを送ってきたようだ。
■ そんなわけで、ちとむかついたので厳しくリプライ。
■ といっても、あの調子ではなかなか解決してくれないだろうから、 ひとまず、XREAのアカウントでSFのMLに入り直してしばらくはそちらのアカウントでやりとりすることにして当面を乗り切ることにした。
■ XREAのアカウントでSFのMLに入れるってことは、少なくともSFとhighway間か、あるいは、mutoh@highway.ne.jpというアカウント自体がまずいのかってとこだよなー。
動きを見ると、他のアカウントからのポスト(XREAのオレのアカウント以外も)はOKっぽいので、mutoh@highway.ne.jp自体がSFにrejectされてるのか?と思ってSF上のドキュメントを漁ってみるとWhy does Sourceforge reject my mail?というのを見つけた。最近のサービス停止でメールサービスの入れ替えを行っていたようなので、これに該当するようになってしまった可能性もありそうだ。というわけで後でゆっくり見てみることにしよう。
ruby-gnome2-devel-en-request@lists.sourceforge.net
SMTP error from remote mailer after RCPT TO::
host mail.sourceforge.net [66.35.250.206]: 550-Postmaster verification failed while checking
550-Called: 61.122.117.161
550-Sent: RCPT TO:
550-Response: 550 unknown user
550-Several RFCs state that you are required to have a postmaster
550-mailbox for each mail domain. This host does not accept mail
550-from domains whose servers reject the postmaster
■ postmasterアカウント(mailbox)がhighway側に存在しないのでrejectされる、ってこと?
January 20, 2006
■ [Ruby] 保存しておいた文字列を高速に検索する
同じHTTPリファラから10回以上のアクセスがあった場合、それ以上(11回目から)のアクセスができないようにするためにはどのような実装が良いのかな。
■ まずは、リファラのURLをHashのキーとして持つことを考えてみた。
@deny_urls = Hash.new
def allow?(referer)
ret = true
if @deny_urls[referer]
if @deny_urls[referer] >= 10
ret = false
else
@deny_urls[referer] += 1
end
else
@deny_urls[referer] = 1
end
ret
end
s = Time.now
(0...10000).each do |i|
(0...15).each do
allow?("http://www.yotabanana.com/#{i}")
allow?("http://www.yahoo.com/#{i}")
allow?("http://www.google.com/#{i}")
end
end
p Time.now - s
なんだか、if文だらけになっちゃったし、使用例の部分もいまいちだけど、まぁいっか。
■ まぁ、ともかく、次に、keyに文字列のhashを使ってみる(ってかRubyのHashってこういう使い方しても大丈夫なんだっけ?(^^;))。
def allow?(referer)
ret = true
hash = referer.hash #(1)
if @deny_urls[hash]
if @deny_urls[hash] >= 10
ret = false
else
@deny_urls[hash] += 1
end
else
@deny_urls[hash] = 1
end
ret
end
allow?メソッドのとこだけ書き換え。他は同じね。
■ で、両者の性能を測ると
% ruby test.rb 4.146538 % ruby test2.rb 3.488657
うーん、もうちょっと高速化したいなぁ。他に高速化する方法ってある?
ポイントとしては、以下の感じ。Rubyクイズスタート!応募はツッコミ欄で!!ちなみに応募しても何も出ません(ってオイ(^^;))
- (1)のような数値化はallow?メソッドの中で実行する必要がある。(ループの外には出せない)
- 別にデータ構造自体Hashでなくてもいい。
- だいたい(90%以上で良いかな)うまくいけばOK。
- データは不可逆でOK。
January 20, 2007
■ ちなみにスクリチのファーストネームはVincentというのですが、「ヴィンセント」は英語読みで、「ヴァンサン」の方が正しい発音に近いそうです。そういうわけで、これからは「番さん」と呼びたいと思います。
■ [Misc] LCD-AD203GW(I・O DATA)
先週初めから微妙に調子の悪かった19inchCRTディスプレイがとうとう昨日、お亡くなりになった。何年使ったんだっけなぁ。長い間ありがとう。
で、さっそく今日、秋葉原まで行って液晶ディスプレイを買ってきた。CRTが1600x1200だったので同じスペックのものにしたらちょっと高かった。
家に帰ってセッティングしたらなんだか少し部屋が広くなった気がした。CRT大きかったもんなぁ。
ちょっとまぶしいな。オレはまぶしいと目が疲れるので輝度・コントラストを落として使うんだけど、このディスプレイだと共に20%くらいに絞ってもちょっとまぶしい感じだ。お、輝度は0%でもいい感じだぞ。

Before...
▲ 眠くなってきたzunda [こんなのはどうでしょう? @deny_urls = Hash.new( 0 ) def allow?(ref..]
▲ むとう [あ、ごめんなさい。<と>間違えて書いてました。直しておきました。 #手書きなんです・・・(苦笑)。 ]
▲ むとう [うーん、すごい。 zundaさん案のif文を整理しただけでも高速化するんですね! % ruby test3...]