2008-02-01から1ヶ月間の記事一覧

os.times() のバグ

Python 2.5 の os.times() はバグっていて、user time や system time の正しい値が採れない。bench.py def f(n): if n <= 0: return 1 else: return f(n-1) + f(n-2) import os, time t1 = os.times() f(34) t2 = os.times() utime = t2[0] - t1[0] stime =…

Python 2.5.2 リリース

Python 2.5.2 Release 絶望した! 新しいバージョンがリリースされたのに、IT 系ニュースサイトにまったく取り上げられない Python に絶望した! JRuby なんか、RC1 でもニュースになるというのに、この差は何なんだ?

EngineYardがmod_rubiniusとRubiniusに向けて開発者を雇用

InfoQ: EngineYardがmod_rubiniusとRubiniusに向けて開発者を雇用 Railsのホスティング会社であるEngine Yard(サイト・英語)は、最近、Rubiniusに取り組む開発チームを立ち上げたことで話題となった。今回、そこに新たな開発者としてEero Saynatkari(Rubiniu…

robot dance

すごすぎる。2 人目なんか同じ人間とは思えない。CG かと思った。

今日のびっくり

今日びっくりしたことは、超売れっ子漫画家がマガジンを買わずにコンビニでの立ち読みで済ませていること。 しかも叫び声をあげながらだとか。

型安全、動的/静的な型付け、強い/弱い型付け

ohai日記: 「型」に関して たいへん分かりやすい説明。要約するとこんな感じか。 型安全な言語 型の食い違いによる「意味のない」「正しくない」操作を全て検出できる言語。例: Ruby や Java は実行時エラーがでるので型安全、C はキャストがあるので型安全…

「Python コード添削道場」を添削する その 2

もうひとつ指摘しておきたい。プレゼンでは、次のようなコードが紹介された。 NUMBER_CLASSES = [int, float, long] def isnumber(obj): return any(isinstance(obj, cls) for cls in NUMBER_CLASSES) 添削結果は、「このコードはよいコードです。ただし、co…

「Python コード添削道場」を添削する

Python Workshop the Edge 2007: Pythonコード添削道場 どう書く?.org登場のきっかけとなったプレゼンで、内容はるびまの「あなたの Ruby コードを添削します」の Python 版。初心者にぜひ見てほしいプレゼンなのだが、残念ながら駆け足でのプレゼンなので、…

Rubinius を Tiger でコンパイルするためのパッチ

日本全国で 3 人くらいはいるんじゃないかと思っているんだけど、MacOS X 10.4 Tiger を使っていて、かつ Rubinius がコンパイルできなくで困っている人はいませんか。バグ登録して直してもらうようにお願いしたら、「みんな Leopard に移行したから直せない…

Google TechTalk: Ruby 1.9

YouTube: Ruby 1.9 まつもとさんによる、Google での講演。で、下の画面は 28 分ごろに出てくるスライド。 絶望した! Ruby 作者に忘れられている Rubinius に絶望した! ・・・うそです。そのあとの質疑応答で Rubinius の名前がでてました。

PHP のファイルから PHP の文と式だけを抜き出す

php

PHP ファイルに Syntax error があると、該当箇所を見つけるのはかなり困難である。理由は簡単で、HTML と PHP コードとが混じっているから。 たとえば と のあいだにたくさんの HTML タグが入っていると、それだけで '{' と '}' の対応を確認するのが難し…

File#flock が実装された

いつのまにか File#flock が実装されていた。ticket #251で足りないと指摘されていた #flock, #truncate, #chown, #mtime, #lstat はどれも実装されたようだ。よかった。これで rbTenjin を Rubinius ready にできそうだできた。

スクリプト言語の起動時間を調べてみた

実行してみると分かるが、Rubinius の起動は実に遅い。どのくらい遅いかというと、間違って Java を起動したんじゃないかと思うほど遅い。あまりに遅いので、Ruby と Rubinius の起動時間を調べてみた。ついでに、他のスクリプト言語の起動時間も計測してみ…

Ruby の CGI スクリプトで Exception をブラウザに表示させる

そこで、Ruby の CGI スクリプトでも、エラーをログファイルではなくブラウザに表示させるための小さなライブラリを書いてみた。cgi_exception.rb ## HTML エスケープ def _esc_html(s) s.to_s.gsub(/&/,'&amp;').gsub(/</,'&lt;').gsub(/>/,'&gt;').gsub(/"/,'&quot;') end ##…

Ruby が PHP に負けている点 #1: エラー内容がブラウザに表示されない

Ruby で CGI プログラムを書いていると、ときどき「PHP のほうが簡単だよなー」と思うときがある。そのひとつが、エラーが発生したときに、その内容が PHP ではブラウザに表示されるのに対し、Ruby ではブラウザには 500 Internal Server Error しか表示され…

eRuby のファイルから Ruby の文と式だけを抜き出す

eRuby ファイルに Syntax error があると、該当箇所を見つけるのはかなり困難である。理由は簡単で、HTML と Ruby コードとが混じっているから。 たとえば と のあいだにたくさんの HTML タグが入っていると、それだけで for と end の対応を確認するのが難…

影舞が復活したらしい

週記くらいによると、影舞の新しいバージョンがリリースされたみたい。2008/02/11 のスナップショットがダウンロードできるようになっているようです。 2008/02/11 のスナップショットがダウンロードできるようになっているようです。 今まで、CVSは修正され…

Rubinius がコンパイルできない

おとといくらいから MacOS X で Rubinius がコンパイルできない。rake build するとこんなエラーが。 $ rake build (in /tmp/ruby/rubinius.code) make vm cd shotgun; make rubinius cd lib; make library; CC archive.o In file included from ../../shotg…

Python で Rake を真似るとしたら

Python標準モジュールでRakeもどき Python でも distutils を使うと Rake みたいなことができるよという話。でも distutils って、依存性を解決してくれたっけ? たとえばタスク A を実行するためにはタスク B と C を先に実行しなければいけない、というよう…

ブラウザが OS になるために必要なこと

自由にアクセス制御可能なJavaScriptサンドボックスを作る JavaScript Sandboxに関する議論 このへんを見てみると、ブラウザをプラットフォームというか一種の OS として使いたいということなんだと思う。もしブラウザを OS として見なすなら、ブラウザにリ…

InfoQ: Ruby 1.9でのメソッドチェーンのタッピング

InfoQ: Ruby 1.9でのメソッドチェーンのタッピング なるほどね。たしかに便利かも。でもなあ、ほんの少し便利にするためだけに Object クラスにメソッドを追加するのは、ちょっとやりすぎだと思うなあ。なんかまた Ruby が初心者向けから遠のいたように感じ…

キリンの生中継

Network Camera キリン なんじゃこりゃ? キリンが映っているんだけど、ホンモノなんだろうか。

Python で eRuby を実現するには

インデントベースだとeRubyのようなテンプレートが難しい Matz日記:PythonをDISる Python はインデントベースなので、eRuby に限らずコード生成とは全般的に相性が悪い。しかし、eRuby 程度であれば以下のようなルールで実現できる。 テキストを print 文 (…

Ruby の Exception class を設計し直すとしたら

これの続き。MRI での Exception の問題点は、「メッセージ」=「表示文字列」となっていることだ。本来ならば、メッセージを get/set するメソッドとは別に、表示文字列を構築するメソッドを用意すべきだった。 class Exception def initialize(message) @m…

仕様が MRI と Rubinius で異なる場合の spec ファイルの書き方

SyntaxError のように仕様が MRI と Rubinius で異なる場合、spec ファイルの書き方には注意が必要である。一般的には、次のように書いてしまいがちだ。 if defined?(RBX_VERSION) # Rubinius のとき ... test code ... else # そうでないとき ... test code…

SyntaxError の仕様が Rubinis と MRI とで違う

Rubinis と MRI とでは、SyntaxError クラスの仕様が結構違う。 MRI では SyntaxError#message にファイル名と行番号が含まれるが、Rubinius では含まれない。 Rubinius には SyntaxError#file と SyntaxError#line が定義されており、これでファイル名と行…

spec ファイルを Rubinius 以外でテストする

Rubinius の spec ファイルは、なんと Rubinius 以外でも実行できるような仕掛けがすでに用意されていた。実行はいたって簡単で、bin/ci コマンドのオプションに -t ruby とか -t jruby とかをつけるだけ。 $ cd rubinius.code $ bin/ci -t ruby spec/ruby/1…

フレームワークや言語における思想の違い

これだけだと単なる Java 批判と取られるだろうから、そうじゃないことをアピールしてみる。 私の個人的な意見としては、一部の人(例えばアーキテクト)だけ、フレームワーク全体を把握していて、残りのメンバーは「限定されたことだけやっとけ」みたいなこと…

Re: Strutsをなめんな

Struts 撲滅委員会としては、見逃せないエントリ。 Strutsをなめんな ひがさんによる Struts 擁護論。なんだけど、どうだろ。ひがさんの意見は、ほぼ同意できることが多い (これとか) んだけど、今回のはちょっと同意できないな。 シンプルなら、なぜあんな…

InfoQ: 議論:Mavenはビルドに適したツールか?

InfoQ: 議論:Mavenはビルドに適したツールか? 言いたいことはとってもよくわかる。Maven の狙い所は悪くない。しかし pom.xml の複雑さは異常。 今のところ、Mavenはこれに完全に逆流しています。なぜプロジェクトを作りたいときに、いつもマニュアルを読…