よたらぼ
自分の興味の赴くままにIT技術系のネタを取りとめもなくメモっています。
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?というのを見つけた。最近のサービス停止でメールサービスの入れ替えを行っていたようなので、これに該当するようになってしまった可能性もありそうだ。というわけで後でゆっくり見てみることにしよう。

[Misc] やっぱりSFにメールが届かない(2)

もう一度冷静にエラーメールのログを読んでみる(抜粋)。

  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. (1)のような数値化はallow?メソッドの中で実行する必要がある。(ループの外には出せない)
  2. 別にデータ構造自体Hashでなくてもいい。
  3. だいたい(90%以上で良いかな)うまくいけばOK。
  4. データは不可逆でOK。

本日のツッコミ(全4件) [ツッコミを入れる]

Before...

眠くなってきたzunda [こんなのはどうでしょう? @deny_urls = Hash.new( 0 ) def allow?(ref..]

むとう [あ、ごめんなさい。<と>間違えて書いてました。直しておきました。 #手書きなんです・・・(苦笑)。 ]

むとう [うーん、すごい。 zundaさん案のif文を整理しただけでも高速化するんですね! % ruby test3...]


January 20, 2007

[Ruby] 新年会(?)

ということで、須藤さん、スクリチ、ささださん、藤本さんと私の5名で新年会をしてきました。楽しかったです。みなさんありがとうございました。またぜひお会いしましょう。

ちなみにスクリチのファーストネームはVincentというのですが、「ヴィンセント」は英語読みで、「ヴァンサン」の方が正しい発音に近いそうです。そういうわけで、これからは「番さん」と呼びたいと思います。

[Misc] LCD-AD203GW(I・O DATA)

先週初めから微妙に調子の悪かった19inchCRTディスプレイがとうとう昨日、お亡くなりになった。何年使ったんだっけなぁ。長い間ありがとう。

で、さっそく今日、秋葉原まで行って液晶ディスプレイを買ってきた。CRTが1600x1200だったので同じスペックのものにしたらちょっと高かった。

家に帰ってセッティングしたらなんだか少し部屋が広くなった気がした。CRT大きかったもんなぁ。

ちょっとまぶしいな。オレはまぶしいと目が疲れるので輝度・コントラストを落として使うんだけど、このディスプレイだと共に20%くらいに絞ってもちょっとまぶしい感じだ。お、輝度は0%でもいい感じだぞ。

本日のツッコミ(全4件) [ツッコミを入れる]

Before...

むとう [あはは。それは良かった。 Mathieuも日本においでよ。]

hisa [きのうはどうもでした!自動化しないというこだわりの話おもしろく聞かせていただきました。]

むとう [こちらこそありがとうございました。 自動化、厳密にいえば「できない」ってことなんですよね。 中途半端に妥協することは..]


更新 設定