フォーチュンサモナーズ
最新 追記

Don'tStopMusic

2003|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|12|
2006|01|02|03|04|05|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|

カテゴリ別 2003年 | 2004年 | 2005年 | 2006年 | 2007年 | 2008年

知り合いサイト: よんだもの / 暴想 / Linuxでやる夫 / 新宿Vipper / 僕だけが幸せになればいいのに。


2007-06-01 この日を編集

_ [適当] フェローの件雑感 このエントリーを含むブックマーク

楽天は5月31日、6月1日付でオブジェクト指向のプログラミング言語「Ruby」の開発者、まつもとゆきひろ氏を同社の楽天技術研究所フェローに迎える人事を発表した。

「Ruby」のまつもとゆきひろ氏、楽天の技術研究所フェローに

うーん、楽天ねえというのが第一印象。こういう気分を表す言葉が日本語にはあって、微妙だな、という。

肩書きだけでしょ宣伝塔乙で済ませられればすぐに忘れるニュースだけどちょっと気になる。微妙感がどこに由来するのか考えてみると、まずは楽天かというのが一点。ベンチャーや OSS 系の企業の企業の技術顧問だったらへえーというところだろうか。Sun や IBM だったりするとなるほどになる。

もう一度ニュースを読み直すと以下のくだりが気になることがわかった。

まつもと氏のRubyやオープンソースソフトウェアの発展と普及活動を支援し、共同での技術研究を行っていくとしている。

「Ruby」のまつもとゆきひろ氏、楽天の技術研究所フェローに

Ruby の今後の方向性に変な影響がないだろうか、と思う。コミュニティ主導の Ruby の開発体制はいまのところうまくいっていて、Sun も JRuby においてはそのやり方を尊重している。Microsoft はちょっと心配だが、John Lam on Softwareを読んでいてそう悪い方向には転がらないんじゃないかなと思う。楽天がどういうやり方をするのかちょっと見えないのが心配だ。とはいえ、おそらく考えすぎなのだろう。

追記: 単純にまつもとさんがこれ以上忙しくなって Ruby の開発に影響がでないかが心配。

さらに追記: slashdot.jp で Matz氏、楽天技術研究所のフェローに就任 という記事。まつもとさん本人からコメント が。


2007-06-03 この日を編集

_ [メモ] libcsv 2.0.0 がリリースされてました このエントリーを含むブックマーク

libcsv は CSV ファイルのパース、作成のための C ライブラリです。これを使った Ruby 用の CSV ライブラリ SimpleCSV を作っています。

しかし、1.0.1 から 2.0.0 とはやけに一気にバージョン番号上げてますね。変更内容を確認するかな。

_ [近況] オリュンポス このエントリーを含むブックマーク

オリュンポス 読んでいるので更新が滞りがちです。これから下巻。


2007-06-05 この日を編集

_ [サイト運営] 鯖落ち このエントリーを含むブックマーク

一日ほど鯖落ちしていました。no-ip.org の DNS 更新に失敗していたようです。ついでにサーバの埃をエアダスターで払いました。

このサーバ、再起動にいつも失敗します。無線 LAN で繋いでいるのに設定が適当なためなのですが。今回の問題点をメモっておきます。

NIC のドライバをカーネルと違う gcc でコンパイルしていた

無線 LAN カードのチップが Atheros なので gentoo では wireless-tools と madwifi-ng を emerge しておけばオーケーです。

今回、起動時に ath_pci の format が invalid だというエラーメッセージが出ていました。カーネルをコンパイルした gcc が 3.3.6、madwifi-ng を emerge したときの gcc が 3.4.6 だったためでした。gcc-config で 3.3.6 に切り替えてから madwifi-ng を emerge しなおして解決しました。

/etc/conf.d/net の書き方が新しくなっていた

しばらく再起動しないうちに /etc/conf.d/net の書き方が新しくなっていました。/etc/conf.d/net.example と /etc/conf.d/wireless.example を参考にして修正。最近は ESSID や WEP キーも /etc/conf.d/net で設定できるのですね。

/etc/resolv.conf が書き換わっていた

LAN のほかのホストには ping が通るのに www.yahoo.co.jp に ping が通らないのでおかしいと調べたところ /etc/resolv.conf が書き換わっていました。nameserver 10.0.0.1 というデフォルトではたしかに名前解決できないですね……おそらく ath_pci を mod_probe したときに autocreate=ap をつけたせいで更新されたのではないかと踏んでいます。でなければ etc-update したときに気付かず更新したのか。


2007-06-07 この日を編集

_ [Ruby] Ruby と Java このエントリーを含むブックマーク

JavaからRubyへ ―マネージャのための実践移行ガイド という本が出たことからも伺えるように、Rails を含めた Ruby は Java の対抗馬あるいは Java を補完する存在として注目されているようです。

Ruby と Rails の研修やコンサルをしている Relevance, LLC のブログで、Ruby vs. Java Myth というシリーズ記事が公開されています。

「Java に比べて Ruby/Rails は○○なんでしょ」(○○にはスケーリングしない、大きなプロジェクトには向かないなどが入ります)という「神話」に対して、Rails 側に立って反論をしています。(まだちゃんと読んでませんので、内容についての検討はしません……)

いままでに書かれた記事は以下の 5 つ。

この記事は「Java 側から見て Ruby に不足している点」への反論なわけですが、この他の言語からの視点は重要なんじゃないかなと思います。神話だけじゃなく事実も多いでしょう。Ruby vs. Java Myth シリーズ記事にはそれぞれコメントがついてますが、こういう対話が Ruby/Rails が発展する糧になるんだと思います。とまとめてみるテスト。

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

_ ぺりめに [愛しています!]


2007-06-09 この日を編集

_ [Ruby] Ruby 会議 2007 一日目 このエントリーを含むブックマーク

参加しました。発表以外の部分の感想を箇条書きで。

  • RubyKaigi2007速報ログ クオリティ高い
  • 今後は非日本語圏の参加者への配慮が必要 - 必ずスライドに英語併記とか
  • 無線 LAN 結構ちゃんと繋がった
  • ノベルティは T シャツではなくバッグ。意外としっかりしてるし、これ T シャツよりいいです
  • 男子トイレ長蛇の列
  • 時間が余るライトニングトーク続出
  • 懇親会の食料あっという間になくなりすぎ

No Ruby, No Life バッグ
バッグ


2007-06-10 この日を編集

_ [Ruby] Ruby 会議 2007 二日目 このエントリーを含むブックマーク

スタッフのみなさんお疲れさまでした。また箇条書きで……

  • 10:00-18:30 は楽しいけど長くて疲れました
  • IRC は発表のフィードバックを即時に行える点でよかったです。同時通訳とか
  • 今回のテーマは「愛」:愛する子供のように言語を愛し育てましょう
  • マスコット重要
  • Dave Tomas のセッション超盛り上がり。スタンディングオベーション

ついでに。Ruby会議2007関連ブックマーク。参加レポートなどをひたすらブックマークしています。


2007-06-12 この日を編集

_ [redMine] 最近の redMine 05/29-05/12 このエントリーを含むブックマーク

svn へのコミットは 6/1 の r558 でストップしています。今までのペースが異様に早かっただけに燃え尽きてしまったのではと心配になります。

追記

そう書いたとたん r559-562 がコミットされました。杞憂だったみたいですね。


2007-06-14 この日を編集

_ [サイト運営] あわせて読みたい このエントリーを含むブックマーク

「あわせて読みたい」は、 あなたのブログ読者が読んでいるブログ を表示するサービスです。

あわせて読みたい

試しに設置してみました。クッキーを使わず画像を表示させているだけですが、「読者」の特定はどうやっているのかな。


2007-06-17 この日を編集

_ [調] 寒天のカロリーは 100g 3 キロカロリー このエントリーを含むブックマーク

最近甘味を食べることが多いのでちょっと気になって調べてみました。科学技術振興機構の食品成分データベース(日本食品標準成分表をデータソースとしています)によれば藻類/てんぐさ/寒天のカロリーは可食部 100g あたり 3 キロカロリー。寒天培地があるくらいだからそれなりにカロリーがあるのかと思いましたが、寒天培地 - Wikipediaによると寒天の物理的特性が培地に適しているようですね。なるほど。

_ [調] ロシア正教の十字架の意味 このエントリーを含むブックマーク

土曜に御茶ノ水界隈をぶらぶらしてニコライ堂に行ったのですが、見慣れない形の十字架がありました。よく見る十字架に加えて、横棒の上に短めの横棒、横棒の下に斜めの横棒が書かれていました。調べたところ八端十字架というそうです。


2007-06-18 この日を編集

_ [適当] Functioal Programming IAT このエントリーを含むブックマーク

「関数型指数 (潜在的な関数型プログラミングの嗜好度) をはかる潜在意識をはかる心理テスト」をやってみました。

あなたの関数型指数は 0.238035349473316 です。正が関数型、負が手続き型です。

Functioal Programming IAT

関数型は LISP を大学時代にかじったくらいですが、潜在的に求めているようです。ふーむ。確かに憧れはあります。

_ [redMine] 最近の redMine 06/13-06/18 このエントリーを含むブックマーク

先週の redMine trunk の気になる変更点をチェックです。r559-r565 が対象です。CVS や Mercurial のサポートを開始したのが大きな変更点です。

r559

CSV と Mercurial の基本的なサポートが追加されました。プロジェクトの作成時に SCM を選べます。既存のプロジェクトの SCM は変更できないみたいです。

SCMの選択

r564

バージョンに対して Wiki ページが作成できるようになりました。個人的には、いちいち名前を入れて作成しなくても適当な名前で自動的に作成されている方が楽なのではと思います。

バージョンの Wiki ページ


2007-06-25 この日を編集

_ [Ruby] デフォルト引数にメソッド定義を書いた時 このエントリーを含むブックマーク

dzone 経由。

def foo(a=def foo; puts "BAR"; end)
 
  puts "FOO"
 
end
 
foo
 
foo

This will end up printing:

FOO
 
BAR

Ruby Can Do What!?!: Part 1

メソッド定義は nil を返しますので a は nil です。よって引数にメソッド定義が書いてあるのはそこに書いたという以上の意味は特になく、以下と等価なはずです。

def foo
  def foo
    puts "BAR"
  end
  puts "FOO"
end
foo #=> "FOO"
foo #=> "BAR"

foo の返す結果が異なるのは、一回目の foo の呼び出しの時に

def foo
  puts "BAR"
end

が実行されて foo が動的に再定義されるためですね。ということで、デフォルト引数内にメソッド定義を書いたときにはメソッド内メソッド定義と同じ結果になります。名前空間が導入されれば main で定義された foo と foo の中で定義された foo は区別できるようになるんでしょうけども。

しかし、式の範囲が広くて式が書ける場所も多いので、こういった変なプログラムがいろいろ書けそうですね。でも、嬉しい場面の方が多いので変に制限を書けるようなことはしてほしくないものです。

_ [Ruby] Yahoo! 日本語形態素解析Webサービス を使ってみました このエントリーを含むブックマーク

指定の tDiary ページから本文を抜き出して品詞の出現回数を数えるスクリプトを書いてみました。

#!/usr/local/bin/ruby
require 'nkf'
require 'open-uri'
require 'rubygems'
require 'hpricot'
 
url = ARGV.shift || 'http://dontstopmusic.no-ip.org/diary/'
filter = ARGV.shift || '9'
 
# 指定の tDiary ページからテキストを抜き出す
doc = Hpricot(open(url).read)
text = doc.search('div[@class="section"]').inner_text
 
# API の利用準備 
host = 'api.jlp.yahoo.co.jp'
path = '/MAService/V1/parse'
result = ''
parameters = {
  'appid' => '<your-api-id>',
  'filter' => filter,
  'sentence' => URI.encode(NKF.nkf('-w', text)),
  'results' => 'uniq',
}
query = parameters.collect{|k,v| "#{k}=#{v}"}.join('&')
 
# API に POST でリクエスト
Net::HTTP.start(host, 80) do |http|
  http.request_post(path, query) do |response|
    result = response.body
  end
end
 
# 結果の XML をパースして品詞ごとの出現頻度のハッシュを作成
h = {}
doc = Hpricot(result)
words = doc.search('//word_list/word')
words.each do |word|
  count = word.search('//count/text()').text.to_i
  surface = word.search('//surface/text()').text
  h[surface] = count
end
 
# 結果を出力
threshold = (ARGV.shift || 5).to_i
h.reject!{|key, value| value < threshold}
h.sort_by{|i| i[1]}.reverse.each do |key, value|
  puts "#{value}:\t#{key}"
end

rexml は重いので hpricot で結果の XML を解析しています。tDiary ページからテキストを抜き出すのも hpricot 使用。デフォルトではこのサイトのトップページから名詞で5回以上出現するものを出力します。

$ ruby ma.rb
15:     foo
8:      Ruby
7:      定義
6:      メソッド
6:      end
5:      BAR
5:      def
5:      関数型
5:      寒天
5:      redMine
5:      puts

感動詞でフィルタすると文章の書き手の癖が見えるような気がします。

$ ruby ma.rb http://www.rubyist.net/~matz/ 3 1
2:      ちょっと
1:      まあ
1:      あ
1:      すみません
1:      め
1:      もう
1:      うーん

といいつつサンプルが少ないので分からないですね。

ところで、リクエストのサイズが 100KB を超えると Connection reset by peer (Errno::ECONNRESET) になるのはなんでですかね。


2007-06-26 この日を編集

_ [メモ][redMine] redMine の不満点 このエントリーを含むブックマーク

今更ながらまじめに使い始めました。まだ活用はしてませんので今のところの不満点は issue 周りですね。機能は十分ですが使い勝手がちょっと惜しい。

  • 前に書いたように新しい issue が作り辛い
  • 影舞や trac のように HTML タグやコードをコピペで記述したい
  • 全般的に文字が小さい
  • 検索ボックスをもっと目立つ位置にしてほしい

_ [Rails] ActiveScaffold このエントリーを含むブックマーク

今更ながら使ってみました。標準の scaffold は単独のモデルしか相手にしてくれませんが、これは関連するモデルもよきにはからってくれるのが素晴らしいですね。モデルの実装に集中できます。

_ [Ruby] Ruby 1.9 の気にいっているところ このエントリーを含むブックマーク

On The Horizon : Ten Things I like about Ruby 1.9 という記事がありました。項目だけ訳載してみます。

  1. Enumerator がコアに統合
  2. Enumerator#with_index
  3. より良い Array#to_s と Hash#to_s
  4. Method#receiver と Method#owner
  5. Process.daemon
  6. ブロックがブロック引数をとれる
  7. ブロック引数がブロックローカルに
  8. 新しいハッシュリテラル構文
  9. クラス変数が継承されない
  10. BasicObject

ついでにいくつか経緯などを調べてみました。

1. 2. Enumerator

Enumerator については、Rubyist Magazine - 標準添付ライブラリ紹介 【第 5 回】 enumeratorを参照ください。

3. より良い Array#to_s と Hash#to_s

Array#to_s と Hash#to_s は inspect の alias になりました。code golfer が困りそうですね。経緯は[ruby-dev:29374]のスレッドを参照ください。

4. Method#receiver と Method#owner

Matzにっき(2007-01-19) - [Ruby] receiver, name, owner of Method object に導入の経緯があります。

7. Process.daemon

これは、[ruby-dev:24030] の akr さんの提案によります。

8. 新しいハッシュリテラル構文

キーワード引数の 1.9 への導入は見送られましたが、{ :a => 1, :b => 2 } を { a: 1, b: 2 } と書けるようになりましたので、DSL でパラメタをより簡潔に書けるようになります。

9. クラス変数が継承されない

クラス変数は継承といいますか親子のクラス間で共有されてました。ActiveRecord なんかはこれに依存したコードになっていたような気がしますので、1.9 では書き直しですね。

追記:最近元に戻った(1.8 同様になった)とのことです。すみません。secondlife さんありがとうございます。→ Ruby 1.9 でクラス変数が継承されないのは間違い

手元の 1.9 は

$ ruby19 -v
ruby 1.9.0 (2006-12-21 patchlevel 0) [i686-linux]

とだいぶ古かったという罠。新しくします。

10. BasicObject

Matzにっき(2005-04-06) - [Ruby] Objectクラスの上に導入の理由が書かれています。


2007-06-29 この日を編集

_ [Ruby] Time.parse で対応していない形式をパースしたいときのワークアラウンド このエントリーを含むブックマーク

Time.parse は内部的に ParseDate.parsedate を利用しているので、さまざまなフォーマットをサポートしており、それなりに便利だ。逆に、サポートされていないフォーマットの文字列を変換するときは、事前に正規表現で変換するなどの泥臭い作業になる。

Ruby の Time.parse で文字列を Time に変換するときのエラーチェック - METAREAL

確かに面倒ですね。私はワークアラウンドでしのいでいます。例えば以下のような日付形式のデータがあるとします。

29/Jun/2007:02:16:18 +0900

これを Time.parse にかけると、

$ ruby -v -rtime -e 'p Time.parse("29/Jun/2007:02:16:18 +0900")'
ruby 1.8.6 (2007-06-07 patchlevel 36) [i686-linux]
/usr/lib/ruby/1.8/time.rb:184:in `local': argument out of range (ArgumentError)
        from /usr/lib/ruby/1.8/time.rb:184:in `make_time'
        from /usr/lib/ruby/1.8/time.rb:243:in `parse'
        from -e:1

残念な結果です。しょうがないので以下のようにしています。メソッドを再定義してサポートする形式を増やしています。+0900 しかないのでタイムゾーンは決め打ちです。

require 'time'
 
class << Time
  alias _parse parse
  undef parse
end
 
class Time
  def self.parse(str)
    pattern = %r!(\d{2})/(\w{3})/(\d{4}):(\d{2}):(\d{2}):(\d{2}) \+0900!
    if m = pattern.match(str)
      Time.local(m[3], m[2], m[1], m[4], m[5], m[6])
    else
      _parse(str)
    end
  end
end

これを require 'time/parse/hoge' とかで使えるようにしておくと、

$ ruby -v -rtime/parse/hoge -e 'p Time.parse("29/Jun/2007:02:16:18 +0900")'
ruby 1.8.6 (2007-06-07 patchlevel 36) [i686-linux]
./hoge.rb:8: warning: redefine parse
Fri Jun 29 02:16:18 +0900 2007

メソッド再定義の警告が出ますが、(undef しておくと警告はでません)一応 Time オブジェクト化できます。

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

_ 青木 [alias したあとに undef parse すると警告出なくなりますよ。]

_ だて [なるほど。ありがとうございます。undef すると元のメソッドがなくなるイメージがありましたが、それでなくなるなら ..]


最近のコメント:

  1. だて (07-01)
  2. 青木 (07-01)
  3. ぺりめに (06-08)

RSS
Creative Commons License
This work is licensed under a Creative Commons License
(note: text only. w/o web design, citations, (re)distributed softwares).