カテゴリ別 2003年 | 2004年 | 2005年 | 2006年 | 2007年 | 2008年
知り合いサイト: よんだもの / 暴想 / Linuxでやる夫 / 新宿Vipper / 僕だけが幸せになればいいのに。
先取り!Ruby 1.9.1 は、ささださんによる新しい Ruby の解説です。
「Ruby 1.9(実際の予定)」で挙げられている項目のうち、記事ではあまり触れられていないものについて少し。
RubyGems が標準で添付される予定です。Rubyist Magazine - シリーズ パッケージマネジメント 【第 1 回】 RubyGems (1) で書かれているように、Ruby のパッケージ管理はいくつか選択肢がありました。が、Rails が RubyGems を採用したために現在では RubyGems が Ruby のパッケージ管理のデフォルトになっています。これを受けて、次のバージョンの Ruby では RubyGems を取り入れることになりました。
標準添付ライブラリの追加と削除が行われます。他のライブラリに置き換えられたライブラリ、機能が Ruby 本体に組み込みなったライブラリ、メンテナンスをする人がいなくなったライブラリなどが削られます。一方 JSON のようなよく使われるであろうライブラリが追加される予定です。
何を追加して何を削除するかについては、ML で話し合われています。興味のある方は [ruby-dev:31320] Import RubyGems to Ruby 1.9 のスレッドを確認してみてください。削除予定ライブラリの最新のリストが [ruby-dev:31924] にあります。
先取り!Ruby 1.9.1 で紹介されているChanges in Ruby 1.9 が一番まとまった情報です。文法および組み込みライブラリへの変更点ですね。Ruby2 とあるものは将来のバージョン 2.x へ持ち越し、EXPERIMENTAL とあるものは実験的に導入されただけなので、1.9.1 に入るかもしれませんし入らないかもしれません。1.9 を試して分からない挙動に出会ったらこのページを参考にすると便利です。
追加でこれも。1.9 からはバージョン番号の付け方が変わります。今までは 1.7(開発系)1.8(安定系)と、マイナーバージョン番号が奇数か偶数かで開発版と安定版を区別していました。1.9 系は 1.9.0(開発版)、1.9.1 1.9.2...(安定版)となる予定です。バージョン番号に関するやりとりのまとめページ:リリース予想
年末でマイルが無効になるというので、楽天ポイントに変換してみました。ポイント口座に反映されるまで1週間から4週間かかるとのこと。
反映までかかる時間と、楽天ポイントの口座番号手入力で指定するだけというところから、おそらく人手で処理しているのだと推測しました。おそらく楽天はポイント交換者リストを日毎か週毎で ANA からもらって、ポイント付与ツールみたいなウェブアプリでぽちぽちとポイントを付与させているのだろうなあと。ポイントという擬似マネーを扱うので例外系の作りこみが大変になるので、システムだけで連携させるには初期コストがかかりすぎます。
表はスマートに見えても内部の運用はバタ足というのは多いですよね。やっぱ。あ、ANA と楽天の件は 100% 想像ですけども。
先月末に Rails 2.0 preview がリリースされました。Resources 周りが一番の変更点でしょうね。メジャーバージョンアップですが後方互換性も高いようで、劇的な変化というよりは正常な進化という印象です。
変更点について原文を読むのが面倒な方は、Rubricks Project - Rails2.0Preview登場 がまとめてくれていますので参考になると思います。
NHK 時計がすごいです。何がすごいのかといいますと、新技術への対応スピードです。
NHKは4日、Adobe Systemsのアプリケーション開発環境「AIR」を利用したアプリケーション「NHK時計」のテクニカルプレビュー版を公開した。
AdobeのAIRに対応した「NHK時計」のテクニカルプレビュー版が公開
アプリとしてはおなじみの NHK の地味な時計を表示するだけなのですが、
と、およそ留まることを知りません。
ところで Silverlight 版が出ないのは NHK 時計の選択眼なのでしょうか。
Rubyに標準で添付されているnet/httpsライブラリ(net/https.rb)において、このライブラリを使用してhttpsプロトコルを発行した場合、中間者によるなりすまし攻撃(man-in-the-middle attack)を検出できないという問題が発見されました。
http://www.ruby-lang.org/ja/news/2007/10/04/isecpartners-com-2007-006-rubyssl/">net/httpsライブラリにおける「中間者によるなりすまし攻撃」に対する脆弱性について
open-uri には元々問題はないとのことです(2007/10/05追記)。net/https あるいは open-uri で HTTPS 通信をしているプログラムは脆弱性があるということですね。
チェックを有効にするには Net::HTTP#enable_post_connection_check = true しましょうとありますが、1.8.6-p111 の open-uri はちゃんとそうなっています。
なお、Gentoo Linux では 9/30 に提供された ruby-1.8.6_p110-r1 で対応済みでした。
IronMonkey: Bringing Ruby and Python support to Tamarin 経由。
IronMonkey は IronPython や IronRuby を Tamarin 上で動かしちゃおうというプロジェクトです(多分)。
Tamarin は Adobe から Mozilla Foundation に寄贈された ActionScript のエンジンを元に ECMAScript 4 エンジンを開発するプロジェクトです。Mozilla Foundation の ECMAScript エンジン(Javascript エンジン)は SpiderMonkey と呼ばれ、Firefox などに使われています。将来の Firefox (Firefox4?)の Javascript エンジンが Adobe の高速な VM エンジンベースになることで、IE に比べて遅かった Javascript 実行速度も改善するのではと期待されます (詳細は Tamarin や jQuery/MozillaのJohn Resig氏が語るFirefoxの未来 を参照ください)。
はじめたばかりのようで、IronMonkey のページにはほとんど情報がないのですが、CLR(.NET の共通言語ランタイム)のバイトコード(CIL/共通中間言語)を Tamarin のバイトコードに変換する方法を採るようです。バイトコードにコンパイル済みの IronPython や IronRuby のプログラムを Tamarin 上で実行ということになるのでしょう。IronMonkey がバイトコードの変換だけを担うと考えるならば、Javascript のようにソースを HTML に埋め込んで実行するのではなく、Flash や Java Applet のようにコンパイル済みのコードをロードして実行する形になるのではないでしょうか。
さらに、Tamarin プロジェクトのページに書かれた Tamarin のソースコードは今後も、Adobe によって、Adobe©Flash©Player に含まれる「ActionScript™Virtual Machine」の一部として利用される予定です。
という言葉を楽観的に捉えれば、Flash 記述用の言語として ActionScript だけでなく Python や Ruby も使えるようになる可能性も技術的にはなくはないでしょう。
リアルタイムに変換すると実用的な速度を得るのが難しそうなので、事前に変換しておく使い方になるのかなあ。それとも IronRuby のコンパイラを使ってソースをバイトコードにコンパイル → それを Tamarin 用のバイトコードに変換 → Tamarin がバイトコードを実行、という流れをウェブページを開いたときに実施するのかな。コンパイル済みのバイトコードの実行しかできないなら、ソースをそのまま実行できる Silverlight の方が個人的には嬉しいかも。
宮川さんの del.cio.us 経由の OAuth: Share Your Ideas, Not Your Password 経由。OAuth は OpenID のようなオープンな認証プロトコルで、ウェブだけでなくデスクトップアプリなどでも対象としているようです。しっかりとした 仕様のドラフト がありますが、この量を読むのは骨ですね。ということで後で調べるタグ。
|m17n の全貌が分からないけれど、まずどこを見ればいいのかな? | * matz: 2007年9月末までには何か用意します | |という言葉がありました。 |今日で9月末が終わりそうですが、何か用意できましたか? 私の頭の中には。今週いっぱいくらいでテキストにダンプします。 日経Linuxの原稿に圧倒されなければ。[ruby-dev:31922] Re: m17nの全貌に関する何か
ということでしたが、進捗があったようです。
この時期になるもまだ詳細が未確定で、ショーストッパーになりかねないM17N開発を加速するべく開発会議を開催した。
Matzにっき(2007-09-26) - M17N開発会議
大きな方針は決まっていても、実用に耐えうるように詳細を煮詰めるのは確かに茨の道のようですね。今年中に 1.9.1 リリースが間に合うのかは、M17N 開発の行方にかかっていそうです。
M17N に関するリンクをいくつか。下二つはこの日記の過去記事です。
販契約で定価販売を義務づける出版業界で、「売れ残った本」をインターネット上で値引き販売しようという試みが、12日から本格的に始まる。これまでの絶版本や期間限定の割引販売から一歩進め、小学館や集英社、講談社、文芸春秋などの大手出版社が、絶版の一歩手前の「在庫僅少(きんしょう)本」を提供し、半額で通年販売する。
「売れ残った本」半額に 出版社17社、ネットで本格販売
これは本読みには嬉しい試みですね。古本以外では入手の難しい本でなければ古本で買うのは抵抗があるので個人的にも良。どんな本が並んでいるのか、ざっと眺めてみました。
皆川博子作品精華「迷宮」−ミステリー編ー が半額。持ってなかったら買ってましたね。しかしこれも在庫希少本なのか。
小栗 虫太郎の紅殻駱駝の秘密−覆刻 はすでに在庫 0 冊。好事家に人気がありますからね。
バートン版のアラビアンナイトがバーゲン。一冊 630 円なら買い揃えてもいいかという気分になります。ただし、1 巻、2 巻はなくて、空飛ぶ黒檀の馬−アラビアンナイト3、船乗りシンドバッドの冒険−アラビアンナイト4、巨蛇の女王−アラビアンナイト5、インドのジャリアッド王と宰相シマス−アラビアンナイト6 のみ。
出版社から調べることもできるので、国書刊行会、金の星社、山と溪谷社 というように趣向にあった出版社の本だけ調べるという手も。
言語の指向しているところや慣れの問題が大きいので、面倒すなわち優劣ではないですね。self や return が強制されている方が表記の揺れがないし、瑣末なところに気をまわさなくていいという考えもありますし。
個人的には Python に比べて Ruby の面倒なところ、というか変なところという記事が読みたいですね。
10月9日、Web Hypertext Application Technology Working Group(WHATWG)は、次世代のHTML仕様として策定中の「HTML5」に対応したパーサ「html5lib 0.10」をリリースした。
html5libはそのHTML5のパーサ。RubyとPythonのバージョンが用意されており、(以下略)
次世代HTML「HTML5」に対応したパーサ「html5lib 0.10」リリース:ニュース - ZDNet Japan
Ruby/Python 版だけ用意されているというのも珍しいですね。
しかし、ZDNet の記事は一切リンクがないですが、自分でぐぐれということなのでしょうか。リリースの告知は WHATWG のブログ上でされています。コードはGoogle Code 上でホスティングされています。
Ruby 版は gem で配られています。文字コード判別ライブラリ chardet に依存していますので、インストールは順番にします。
# gem install chardet # wget http://html5lib.googlecode.com/files/html5-0.10.0.gem # gem install html5-0.10.0.gem
gem をインストールすると html5 というコマンドもインストールされます。これに HTML ファイルをオプションで指定すれば簡単にパースできます。ライブラリとして使いたい場合には rdoc が多少助けになりますが、あんまり資料がないですね。
別名、Sun が全力で作っている JVM 上の Ruby よりも、ささださんが一人で作っている YARV 上の Ruby の方がまだ速い件(「全力で作っている」は JVM にかかります。YARV は専用 VM じゃんというつっこみは聞き流します)。
JRubyが遅いという話は過去のものになるかもしれません。
試してみたのは http://ja.doukaku.org/55/lang/ruby/ にある立方根を求める計算です。
trunkのJRubyがヤバいことになってる件 (recompile.net)
という高井さんの記事を読んで YARV(1.9) でも試してみました。
ロジックは http://ja.doukaku.org/55/lang/ruby/ のままです。メソッド内メソッドはいちいちメソッド再定義をしてパフォーマンスが悪化するので外に出しました。また、ベンチマークには Benchmark を使用。
require 'benchmark'
def close_enough?(x, y)
(x - y).abs < 5.0E-13
end
def search(f, negp, posp)
midp = (negp + posp) / 2
if(close_enough?(f.call(midp), 0.0))
return midp
else
test_value = f.call(midp)
case
when test_value > 0
search(f, negp, midp)
when test_value < 0
search(f, midp, posp)
else
midp
end
end
end
def half_interval_method(f, a, b)
a_value = f.call(a)
b_value = f.call(b)
case
when a_value < 0 && b_value > 0
search(f, a, b)
when a_value > 0 && b_value < 0
search(f, b, a)
else
puts "error"
exit
end
end
def cube_root(n)
half_interval_method(lambda{|x| x*x*x - n}, -0.001, n+1)
end
Benchmark.bm do |x|
x.report{ 50000.times{ cube_root(100.0) ** 3 } }
x.report{ 50000.times{ cube_root(100.0) ** 3 } }
x.report{ 50000.times{ cube_root(100.0) ** 3 } }
end
$ ruby18 -v cube_root.rb
ruby 1.8.6 (2007-09-24 patchlevel 111) [i686-linux]
user system total real
76.740000 2.970000 79.710000 ( 82.289728)
76.480000 2.890000 79.370000 ( 82.535441)
76.350000 2.930000 79.280000 ( 82.735216)
$ ruby19 -v cube_root.rb
ruby 1.9.0 (2007-10-11 patchlevel 0) [i686-linux]
user system total real
16.400000 0.020000 16.420000 ( 16.425822)
16.360000 0.040000 16.400000 ( 16.395199)
16.430000 0.000000 16.430000 ( 16.438130)
$ ./bin/jruby -v -O -J-server cube_root.rb
ruby 1.8.5 (2007-10-14 rev 3876) [i386-jruby1.1]
user system total real
23.121000 0.000000 23.121000 ( 23.110000)
20.084000 0.000000 20.084000 ( 20.084000)
22.273000 0.000000 22.273000 ( 22.273000)
実アプリでのベンチマークがほしいですね。
コード例にアニメや漫画のキャラを使うというソフトウェア開発におけるあるあるネタが Rails でも発動した模様です。
You wouldn’t think that Konata Izumi (a character from the anime, Lucky Star) and Ruby on Rails (a web MVC framework) would somehow be associated, but they are!
Konata Izumi in Edge Rails - redemption in a blog
ということで、revision 7905.をご覧ください。しかし、redemption 氏大喜びですね。
dzone The GoF patterns implemented in Ruby 経由。
I just finished implementing almost all of the GoF patterns in Ruby.
- Googlecode project: rubygof
- PDF on scribd: rubygof (pdf)
clipboarded: The GoF patterns implemented in Ruby
GoF のデザインパターン(の例)を Ruby で実装したとのことです。標準ライブラリに存在するものは省かれていますね。PDF で読むと手っ取り早いです。
デザインパターンそのものの説明は無いに等しいので、パターンは大体知っているものの実際に書くにあたって取っ掛かりがほしい、というくらいの理解度の人向きです。
はてブなどで話題になっている PORTA ですが、単純に文献検索としても便利ですね。雑誌記事索引からの検索ができるので、例えば「まつもとゆきひろ」で検索すると日経バイトの連載記事がヒットします。これくらいのことは、私が知らなかっただけで昔からできたのだとは思いますが。
ただ、Ajax をふんだんに使ってるためか、検索結果に URL がないのが残念です。せめて検索結果をブックマークできるようにしてほしいですね。
2007年10月27日に行われる第一回 Ruby認定試験 の対策として、NaCl の有志で模擬試験問題を作成しました。
Ruby認定試験対策問題
これら問題が全く的外れだったとしても責任は持てません。ご了承ください。
とのことです。
個人的には、コマンドラインオプションの仕様や irb の挙動など普段あまり気にしてない部分が穴になりそうです。1.4.4 とか試したことなかったですねえ。
TMail は青木さん作のメール統合ライブラリです。最近 RubyForge のニュースに Tmail の名前が出てくると思ったらメンテナが Mikel Lindsaar さん達に代わった ようですね。
TMail の最終リリース版は 2004 年 2 月でしたが、Rails の ActionMailer でも使われているのでバグ修正など手を入れたいところがあったのでしょう。
昨日リリースされた TMail 0.11.0 では Rails コアチームが ActionMailer のバンドル版に対して行ったパッチを取り込んだそうです。
Ruby Associationは2007年10月29日、Ruby公式ロゴ選定コンテスト「Rubyロゴコンテスト」の結果を発表した。Rubyの公式ロゴにはTom Schaub氏の作品が採用された。
Rubyの公式ロゴ決定! | エンタープライズ | マイコミジャーナル
公式ロゴが決定しました。おなじみのルビーを使っているせいか、そんなに代わり映えしないような。

まつもとさんが [ruby-list:44161]Ruby公式ロゴコンテスト結果発表 で選考基準を述べていますが、それぞれうなずける理由です。
興味深いと思ったのが、『「かわいい」ものは除く』という項。「エンタープライズ」という言葉も囁かれ始めている今日この頃、Rubyもそろそろ大人として扱われるようにという親心なのかもしれませんね。
Magic Multi-Connections は例の Twitter 騒ぎのときに Dr NIC さんが、Rails から複数データベースに接続するのもこんなに簡単にできるよ、ということで作ったライブラリです。
仕事の話なのですが、Ruby ではない某言語で作られたアプリケーションのデータベースがあって、これはユーザをキーに複数のデータベースに分割されています。統計情報採ったり、運用ツール作ったりをしたいのですが、某言語を使うのは(個人的に)面倒でしたので、どうにか Ruby+ActiveRecord で何とかならないかなと思っていました。が、はてブで見かけた Magic Multi-Connections を試されている方の記事を読んで解決しました。しかもコードほとんど書かずに。楽すぎて落とし穴があるんじゃないかと思う次第です。
Magic Multi-Connections が実サービスに使えるかまでは検証していませんが、とりあえず運用ツールを作るくらいの用途では十分そうです。コネクションの切った張ったもあんまり気にしなくていいですし。
参考にさせていただいた記事は以下の通りです。
最近のコメント:
RSS
![]()
This work is licensed under a
Creative Commons License
(note: text only. w/o web design, citations, (re)distributed softwares).
_ akr [open-uri はもともと問題ありません]
_ だて [すみません。訂正しておきました。]