| (C)2001, `Rubyist!' Project Team. |
2001/11/6 (Tue)■[ML]CGeneratorJoel VanderWerfさんより[ruby-talk:24443]にて、 CGeneratorのアナウンスがありました[RAA:CGenerator]。 これはPerlのInlineモジュールのRuby版のようです。 これを使えば、CのコードをRubyにダイナミックに取りこむことが できるので、たとえばこんなこと↓
lib.define_global_function(:new_point).instance_eval {
arguments "x", "y" # 'VALUE' is assumed
declare :p => "point *p"
declare :result => "VALUE result"
# semicolons are added automatically
body %{
p = ALLOC(point);
p->x = NUM2DBL(x);
p->y = NUM2DBL(y);
result = Data_Wrap_Struct(#{C_name_Point}, 0, free, p);
rb_funcall(result, #{C_name_initialize}, 0);
}
returns "result"
# can put a return statement in the body, if preferred
}
や、こんなこと↓
for var in [:x, :y] # metaprogramming in C!
lib.define_method(Point, var).instance_eval {
declare :p => "point *p"
body %{
Data_Get_Struct(self, point, p);
}
returns "rb_float_new(p->#{var})"
}
end
ができるようになります。 (Maki) ■[RAA]Ruby リファレンスマニュアルHTML版現在はRWikiで管理されている Ruby 1.6リファレンスマニュアル ですが、しばらく前からこれの静的なHTML版の作成を行っていた 青木@横浜さんの分割HTML版(zip)の完成度がかなり高くなってきました。 リファレンスマニュアルといえば、Ruby1.4のころまでは静的なHTMLの リファレンスマニュアルを利用していた方が多いかと思います。青木@横浜さんの 分割HTML版はまさにそれを彷彿とさせてくれるうえ、RWiki上での編纂に励んできた 方々の成果により、内容はさらに充実したものになっているので、 『Rubyデスクトップリファレンス』や 『プログラミングRuby』をお持ちの方にもぜひおすすめしたいドキュメントです (いやまあ高速な回線を使ってて、Web版のリファレンスマニュアルでも 十分ストレスなく常用できる、という方ならいらないかもしれませんが)。 (Maki) ■[ML]Path v0.3.0Michael Witrantさんより[ruby-talk:24248] にて、Path v0.3.0の アナウンスがありました([RAA:Path])。 これはファイルシステムのパス名を扱うクラスを提供するライブラリです。 細かい仕様はこちらにあります。 DOSishも同様のもの(ただしこちらはDOS/Windowsに対応)だったりするわけで、 この辺りの機能をFileやDirとは独立したクラスとして利用したい、という 需要はそれなりにありそうです。 (Maki) ■[ML]__FILE__ == $0 refactored in Ruby?Chris Morris さんより[ruby-talk:24192]にて、 「__FILE__ == $0 というのをよく見るけどもうちょっと読みやすく できないか?」という問いかけがありました。 この話題、[ruby-talk:21504]でもNathaniel Talbottさん(Lapidaryの ひとですね)から提案があって、あんまり美しくないというのは思っている 人も少なくなさそうです。が、イディオムとして定着してしまっている ものを変えるのはちょっと大変かもしれません。 なお、今回の議論では、if __RUN__ do 〜 end という構文が提案された ところで終わっています。果たして誰かRCRにするひとはいるでしょうか? (Maki) ■[ML]OpenSSLとSSLSocketがマージ[ruby-talk:24015]にてMichal Rokosさんより、 OpenSSL([RAA:OpenSSL])と SSLSocket([RAA:SSLSocket])のマージが発表されました。 というか、なんか同じようなことやってるなあ、 と思っていたのですが、やっぱりそうだったようです。 OpenSSLは暗号化関連ライブラリのフレームワークをどうする? みたいな かなり大きな話にもなってきています。 また、SSLSocketの作者の後藤ゆうぞうさんは、これからはsourceforgeに 持っていって共同作業するかも?、みたいなことを言ってました。 (Maki) ■[RAA]RubyOokChad FowlerさんがRubyOokというアプリケーションをRAAに登録しています。 ([RAA:RubyOok]) これ、あの BrainF*ckの血を引く、というかそれのシンボルをちょっと 別の文字列に変えただけ、というサル向けプログラミング言語 「Ook」(やっぱり「うっきー」と読むべきでしょうか?)の、 Rubyで書かれたインタープリタです。いちおう動きます。Hello Worldを 表示するのに「Ook」という文字列が2000個以上必要になりますが。 どう考えても実用性は 「シークレットボイス ガンダム」以下のような気もしますが、 esoteric programming language(「難解プログラミング言語」?)マニア の方はどうぞ。 (Maki) ■[ETC]PyJUGそういえば先日、 Rubyの永遠のライバル(かもしれない)Pythonの、 日本における普及/発展を目論む日本Pythonユーザ会こと PyJUGの サイトへのリンクを、このページの下にある リンク集に加えました。 結構まめに更新されてますし、少なくともここよりは まじめな記事が多い(^^;ので、Rubyも好きだけどPythonも好き、 という方はどうぞご利用ください。 なお、他にもプログラミング言語(OOPやスクリプト言語ならさらに歓迎)関連の ニュースサイトなどがありましたら教えていただけるとうれしいです。 (Maki) ■[WWW]Ruby ML Topics分割RWikiにある Ruby ML Topicsのページがジャンル別に分割され、見やすくなりました。 今までは興味があってもあのページのでかさにびびっていた人も、これなら 使いやすいのではないでしょうか。活用しましょう。 (Maki) ■[ETC]eXtreme Programmingテスト技法どこで聞いたか忘れてしまったのですが、 eXtreme Programmingテスト技法 xUnitではじめる実践XPプログラミング という本で、RubyUnitとWebUnitが紹介されているそうです。 上のリンク先にある目次を見れば判る通り、基本的にはxUnit関連の本で、 特にRubyの本と言うわけではないのですが、他のxUnitやそれを用いた開発と 比較してみるのもいいかもしれません。 (Maki) ■[ML]Ruby Developer's Guideは12月発売[ruby-talk:24478]にてMichael Neumannさんから、 Ruby Developer's Guideの販売は12月になった、との アナウンスがありました。 Lyle Johnsonさんによれば、この本はRubyで開発してるひとにとっては 「must-have」になるんじゃないか、とのことです(先に読んだんでしょうか?)。 期待しましょう。 (Maki) ■[WWW]Double Dispatching vs Clumsy CoercingRubyGardenにて、 Double Dispatching vs Clumsy Coercingという 記事が出ています。これは、Rubyのcoerceはif-elsif-elseを 多用して複雑になってしまっているから嫌、ダブルディスパッチを 使うようにした方がいいのでは? という意見です。 ダブルディスパッチかcoerceか、というのはどちらも一長一短があると 思うのですが、いまどきの流行りはダブルディスパッチなんでしょうか。 coerceファンからの反論があってもいいかも、と思います。 (Maki) 2001/11/7 (Wed)■[ML]インラインなインターフェース記述言語[ruby-talk:24511]にてStefan Nobisさんから、インラインの ドキュメンテーションシステムについて、rdtoolの代わりに oxygenを使うことにしてはどうか? という提案がありました (タイトルはちょっとアレですが)。 それに対し(GPL絡みの話はおいといて)、oxygenの文法はちょっと、 もうちょっとシンプルな方がいいんじゃないの? という話から、 RDっぽいインターフェース記述用言語の提案が出ています。 詳しくは [ruby-talk:24608][ruby-talk:24595]など。 なんかRDの再発明のような気もしないではないのですが、 「用途限定でシンプルにしたRD」というのはありかも、とは 思います。RDラブのひとの意見も聞きたいところです。 (Maki) |