Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
Matzにっき(2007-05-30)
[go: Go Back, main page]

«前の日記(2007-05-29) 最新 次の日記(2007-05-31)» 編集

Matzにっき

<< 2007/05/ 1 1. ITmedia エンタープライズ:刑務作業でRuby、世界初の受刑者によるソフトウェア開発
2. MS、「Silverlight」を複数プラットフォーム対応へ - CNET Japan
3. お客様
4. Calling Erlang from Ruby (Teaser)
2 1. random-state.net / Method Cache Hacking (May 1st 2007)
2. ICFP Programming Contest 2007
3. 「働く」って何だっけ?日本の労働観を再考せよ (新日本的経営の姿):NBonline(日経ビジネス オンライン)
3 1. 日経Linux 2007年7月号
2. The World of Hello World
3. 第5回 CodeGearデベロッパーキャンプ開催のお知らせ
4. Ext3cowファイルシステム
4 1. The Analytic Tradition Complexity in language design
2. サンは機能化(狩猟型)集団なのか - 代替案のある生活 [ITmedia オルタナティブ・ブログ]
3. A list of interesting Erlang links | aidanf.net
5 1. お菓子の壽城
2. Erlangish: Distributed Bug Tracking
3. O'Reilly Radar > lift/scala for web apps
4. Decimal Arithmetic - FAQ
6 1. 証会
7 1. PEP 3117 -- Postfix type declarations
2. The Concepts and Confusions of Prefix, Infix, Postfix and Fully Functional Notations
3. Lazylist implementation for Ruby
4. Foo Camp
5. 聖書の登場人物が戦う格闘ゲーム「Bible Fight」 - GIGAZINE
8 1. OSSで新たなビジネスモデルを模索、商用ソフトとの“ハイブリッド”で差別化--シーイーシー - ZDNet Japan
2. Joyeur: Joyeur: DTrace for Ruby is available
3. Freedom to Tinker >> Blog Archive >> You Can Own an Integer Too − Get Yours Here
4. Alarming Development >> Blog Archive >> Goodbye Java
5. 「Javaに並列処理と関数型言語の要素を」、ティム・ブレイ氏 − @IT
6. Sun: Pay open-source developers - Yahoo! News
7. るびま19号 言語探訪
9 1. [Python-3000] the future of the GIL
2. openjfx: The JavaFX Programming Language
3. e7
4. InfoQ: Mingle from ThoughtWorks is Big Win for JRuby
5. Hobo - The web app builder for Rails
6. GaucheNight
10 1. 平成18年度総会記念講演会 『Web2.0を支える国産技術 オブジェクト指向スクリプト言語「Ruby」』
2. 「本家Rubyより速い」、JRuby開発者に聞く − @IT
3. KeN's GNU/Linux Diary | LogicoolのWebカメラとEkigaでビデオ通話してみる
4. 採用基準について。 - トラパパ@TORAPAPA [ITmedia オルタナティブ・ブログ]
5. Obscene Art :: Being everywhere is a killer feature
6. Neil Mix >> Blog Archive >> The Paradox of Elegance
7. 痛いニュース(ノ∀`):「アメリカ人が作れるなら自分にも作れる」 独学で拳銃から実弾まで手作りして販売、男逮捕…福岡
11 1. GPLv3にはApache Licenseとの互換性が盛り込まれる見込み--FSF幹部 - CNET Japan
2. コミュニティへの参加は、好きだからこそ続けられる − @IT自分戦略研究所
3. John Rose @ Sun : JSR 292 Deep Dive Notes
4. Ruminations of a Programmer: XML - Not for Human Consumption
5. Ruby - Erlang二題
12 1. 授業参観
2. Unicode Chart
3. Ola Bini on Java, Lisp, Ruby and AI: JavaOne day 4: the final friday
4. taw's blog: Syntactic tradeoffs in functional languages
5. John Rose @ Sun : Longjumps Considered Inexpensive
6. The Problem with Threads
13 1. 母の日
14 1. Rubyを飲み込んでしまうJava − @IT
2. bashにて複数端末間でコマンド履歴(history)を共有する方法 (iandeth.)
3. Relevance: Static Typing and Readable Code
4. CodeGear、「Ruby on Rails」対応の開発ツールを発表へ - CNET Japan
15 1. YouTube - Ruby on Rails, web development that doesn't h...
2. YouTube - Ruby on Rails vs Java - RailsEnvy.com Commerical
3. Justdave’s Blog >> Why did it take Bugzilla 9 years to get from version 2.0 to 3.0?
4. A spelling corrector in Scala
16 1. 出張講演
2. Ruby+アジャイルで変化に強い開発を---永和システムとNaClがタッグ:ITpro
3. 野村総合研究所 オープンソース救急センター | オープンソースのトラブル、今すぐ対応!
4. Y combinator in Ruby
5. ITmedia エンタープライズ:第3回 ハッカーと仕事 (1/2)
17 1. ネット上での自分の活動を集約する「アバウトミーβ」,ニフティがRuby on Railsで構築:ITpro
2. アイデンティティはオープンソースプログラマ − @IT自分戦略研究所
3. [Mono:DLR] Hello, Dynamic Language Runtime-enabled World! - O'Reilly XML Blog
4. 404 Blog Not Found:そろそろerlangについて一言いっとくか
5. Akita On Rails : Big News! Akita joins Surgeworks
18 1. Rubyist Magazine - Rubyist Magazine 0019 号
2. 新サービスMyITproの裏側を暴露します:ITpro
3. Andy Tanenbaum hasn't learned anything
4. オープンソースサロン
19 1. O'Reilly Radar > DHH's Rails Keynote
2. IBM 境界を越える: Rails のケース・スタディー - Japan
3. 404 Blog Not Found:List は Array にあらず
20 1. 岡山
21 1. 若い人たちへのキャリアアドバイス
2. ChadFowler.com Changing the World
3. Greg Luck's WebLog: Ruby in decline...
4. What do you get in a commercial Common Lisp implementation?
5. [erlang-questions] some language changes
6. Ola Bini on Java, Lisp, Ruby and AI: ThoughtWorks, Mingle, RubyWorks and JRuby
22 1. Why insisting on semicolons? - O'Reilly ONLamp Blog
2. Is Faster Always Faster? - 10X Software Development
23 1. Radium Software - はじめてのプログラム
2. 404 Blog Not Found:君は新言語xtalを知っているか?
3. あらゆることがうまく行かなければどれくらいかかるか?
4. HOW DO YOU LIKE SILICON VALLEY? | SFBETA Geek Sessions Ruby on Rails: To Scale or Not to Scale
24 1. Headius: The Final Bugs
2. The Programming and Management Blog >> PHP Interview questions from YAHOO
3. ずっと君のターン - The World Is Mine
4. SimpleConsole - Building Console Apps
5. InfoQ: The Futures of Ruby Threading
6. Towards the best collection API
7. 平成19年度U-20プログラミング・コンテスト
25 1. 報國挺身日記 - 5.7.0がマージされた件について
2. InfoQ: Evan Phoenix hired to work on Rubinius
3. Ruby.Badbunny - Symantec.com
4. rubyneko - RubyでえせMapReduceもどきを作ってみた。
5. RubyForge: The Omnibus Concurrency Library
6. M17N化
26 1. Ruby-Like Syntax in C# 3.0
2. 4chan BBS - Evolution of a Python programmer
3. 体験! JavaFXの世界 - Javaが放つRIAプラットフォームの魅力を徹底解説 (1) あらゆるデバイスで実行可能なリッチなアプリケーションUIを実現
4. メール破産 | Okumura's Blog
5. Chi Parla ? a little SmallTalk version 3 derivate.
6. 404 Blog Not Found:perl - Tie::Array::Lazy
7. 404 Blog Not Found:新ゲーム - ランゲッジメーカー
27 1. 掃除方針
28 1. 松本へ
2. 松本市
3. 講演
4. Outbound Port 25 Blocking
5. hnwの日記 - PHPの奇妙なround関数
6. Yawa - Yet Another Web Application framework. - FrontPage
7. ストールマンは正しかった − @IT
29 1. 東京へ
2. プロコン実行委員会
3. 明日の準備
4. ホテル
5. Rail - Esolang
6. Google Translateよ、まつもとゆきひろ氏の出演はヒミツじゃありません - Allegro Barbaro [ITmedia オルタナティブ・ブログ]
7. ITmedia +D LifeStyle:飽和するコンパクトデジカメ、脱却の糸口を探す (1/3)
8. PHP is dead ... long live PHP! | Dries Buytaert
30 1. Linux World/Expo Tokyo 2007
2. [動画]Ruby設計者まつもとゆきひろといろいろ語りたい − @IT情報マネジメント
3. Vying Games : Blog : Ruby and Trust
4. >> RUBY: DRY up your Enumerations - DevChix - Blog Archive
5. ユメのチカラ: ポロシャツとハッカー
6. The rantings of Clinton Forbes: In 2004, there were only 30 days in October
7. インテル:「ソフトウェアもムーアの法則に従う必要がある」 - CNET Japan
8. PHP - スクリプトキャッシング
31 1. まつもとゆきひろ氏が楽天技術研究所のフェローに就任,楽天はRubyの活用を拡大へ:ITpro
2. Open Tech Press | イベントリポート:LinuxWorld2007――初日の講演から
3. 微酔半壊: Common Lisp: loopマクロ用法抄
4. 360 Degree DB Programming: Groovy, Ruby, PHP, Python: the revival of scripting languages
5. Code Quality コードリーディングによる非機能特性の識別技法
>>
Dr.Web 予測するアンチウイルス 持ち込み PC 対策でお悩みの方にオススメです。
ウイルス・スパイウェア検査・駆除 用ツール Dr.WEB CureIt! を無償配布中!

2007-05-30 [長年日記]

_ [Ruby] Linux World/Expo Tokyo 2007

プレゼンテーション。11時から最終練習という話だったが 少々遅刻した。ごめんね。

練習後、昼食。ビッグサイトはどこも満席。 かろうじてカレーを食べる。

1時からのSeasarのひがさんのセッションは大混雑。 すごい人気である。

と、思ったら、2時からの私のところも馬鹿にならない人数が集まる。 30分以上前から席を陣取ってる人までいるし。 最初30分弱は私がRubyをとりまく現状について話して、 残り15分くらいを山崎さんにデモしてもらう。

いつも、スライドばかりでおもしろくもないプレゼンだが 今回は趣向を変えて、と思ったのだが、担当になった山崎さんには いい迷惑だったかもしれない。せめて成長の糧にしてね。

デモのある発表は初めてであったが聴衆はどう感じたろうか。 数人に話を聞く限りでは、 おおむね好評だったのではないかと思う。

ただし、難点もあって、

  • スクリーンが思ったよりもずっと小さかった。 後ろの人は見えなかっただろう(特にデモは)
  • 一回、重大な操作ミスが。練習では一度もないことが起きるのが本番というものか

くらいは残念だった。まあ、こんなに人間が来ることを想定した会場設計ではなかったものな。

ほか、風呂グラマー、増井(masuidrive)さんに会ったり、あちこちブースをめぐったり。 増井さんはおととしのOSC札幌で私が英語で質疑応答したのに影響されて アメリカに引っ越すのだそうだ。すげーっ。

思わぬところで他人の人生に影響を与えてしまっている。 なんだか恐いような気がする。

_ [Ruby] [動画]Ruby設計者まつもとゆきひろといろいろ語りたい − @IT情報マネジメント

昨日公開された、私・平鍋さん・角谷さんの鼎談。 Linux World会場でもうちのブースで上映されていた。

今回はAgile・オブジェクト系言語の歴史概観。 ホワイトボードに書いていたものをタイムライン化したものも用意した。

うだうだとした話だが、これはこの後もずっと続きます。 ぜんぶで6話くらいになるとか聞いたような気がする。

_ [Ruby] Vying Games : Blog : Ruby and Trust

「Rubyの鍵は信頼である」という話。

信頼については昨年末の福岡での発表で強調した覚えがあるが、 この人はそれを(Google Translateかなにかで)翻訳して読んだのだろうか(スライド公開してないような)、それともRubyを見ていて独自にその見解に到達したのだろうか。

どうも後者のようだが、だとすると、その感覚は非常に鋭い。 まるで言語仕様(とわずかな私の言葉)だけから「Ruby Way」を切り出してきた Hal Fultonのように鋭い。

_ [Ruby] >> RUBY: DRY up your Enumerations - DevChix - Blog Archive

Enumerableを操作するのに

@stooges.select {|s| s.name == 'Mo'}

と書く代わりに

@stooges.that.have.name == 'Mo'

と書くためのライブラリ、ho_enumerable.rbについて。

非常にRailsというか、ActiveSupportと同じ臭いがするが、 それはそれでアリなんじゃないかと思う。 でも、こういうのをHigher Orderっていうのかなあ。

_ ユメのチカラ: ポロシャツとハッカー

というわけで、昨日U-20プロコン実行委員会でポロシャツをいただいたわけだが、

なんて書かれた(しかも出かける前にこのエントリを読んでしまった)からには、 着ていかないわけには行くまい。というわけで、Linux Worldでは 関係者でもないのもAsianuxポロシャツを来ている「自称ハッカー」が目撃されました、とさ。

あと、オライリーからも何枚もTシャツをいただいてしまった。 ありがとうございます。

_ The rantings of Clinton Forbes: In 2004, there were only 30 days in October

夏時間(Daylight Saving Time - DST)のせいで計算が狂って2004年10月には30日しかないことになってしまったプログラムの話。

もう何年も前の話になるが、RubyのTimeクラスにも面倒なバグがあって 半年に一回1時間ずれるというレポートに対処するのに大変苦労したことがある。 何年かに一回政治家たちが省エネとか訳のわからない理由を言い訳に サマータイム導入を口にするが、冗談じゃない。

夏時間がないのは日本の美徳だと断言したい。 そんなものは要らない。

_ インテル:「ソフトウェアもムーアの法則に従う必要がある」 - CNET Japan

「今まではハードがどんどん高速化してきたので、ソフトウェアの皆さんは(マシンのアップグレードで)自動的に性能向上を享受できていましたが、これからは諸般の事情でそういうことはできなくなります。ソフトウェアの皆さんもご協力を」という話。

っていうか、最初からそういう風に言ってほしいものだ。

_ [言語] PHP - スクリプトキャッシング

LinuxWorldでゼンドジャパンのブースに行って質問してきた。 あまり嫌みにならないよう、身分は隠して。

で、関心があったのはPHPのスクリプトキャッシング。 これにより実行速度が1.3から3倍になるのだそうだ。 どうにも納得が行かないのでいろいろ食い下がったが 対応してくださったのが内部までご存じの技術者ではなかったので 「理屈はともかく体感では確かに速くなります」とのことであった。 実体験を疑う理由はない。が、技術屋としては「なぜそうなるのか」がとても気になる。

私の理解が正しければ、スクリプトキャッシングは、 プログラムのロード時に構文解析を行い、内部的に用いる中間表現に変換したものを 保存しておくことにより、構文解析のコストを削減し、 高速化を実現する技術である。PHP以外にもたとえばPythonが同様のことを実現している (でも、Pythonは1.3倍とか言ってない)。

しかし、これにより実行速度が1.3から3倍になるということは、 単純に計算してアプリケーションの実行時間の23%から67%が 構文解析で消費されている必要があるのではないか。 Rubyではよっぽど特殊なケース以外では構文解析時間が 実行時間に対して大きな比率を占めたことはない。 各種プロファイルを行っても構文解析関係が上位に来たことは 私の経験では一度もない(ので、通常の感覚ではチューニングの対象にならない)。

にもかかわらず、PHPではこの結果というのはどういうことなのだろうか。 ソースも見てないので、断言はできないのだけど、いくつか考察してみる。 間違いがあれば(きっとある)、遠慮なく指摘してほしい。

  • 構文解析が予想以上にコスト高

    普通に考えたら、構文解析はそんなに重い処理ではないのだが、 実はそれは思いこみで、なんらかの事情でPHPでは構文解析のコストが非常に高い。

  • 構文解析が予想以上に頻繁に実行される

    普通に考えたら、mod_phpやfastcgiを使えば、構文解析はほとんど行われないと 思ってしまうが、実はそれは思いこみで、なんらかの事情でPHPでは構文解析の頻度が 非常に高い。あるいは実行速度が改善されたというのはCGIモードであった。

  • 実は単なるキャッシングではない

    スクリプトキャッシングは単なるキャッシングではなく、 同時になんらかの最適化も行っている。 キャッシングされて何度も実行されることが期待されるので、 かなり頑張って最適化しても、時間消費に見合う。 とはいえ、PHPのような言語でそんなに最適化が効くような気はしないけど。

謎は深まる。

本日のツッコミ(全7件) [ツッコミを入れる]
_ MoonWolf (2007-06-04 08:55)

Rubyでネイティブスレッドに対応する予定はあるんでしょうか?
デュアルコアが普及してもパフォーマンス上がらないのは困ります。
dRubyで分散プロセスだとオーバーヘッドが多いですしね。

_ まつもと (2007-06-04 09:43)

「対応」というのはどのレベルを考えていらっしゃるんでしょうね。

YARVではnative threadに「対応」していますが、それは

  * native threadを使っている
  * native threadを使っているライブラリとリンクしても落ちない

というレベルです。global interpreter lockを使っているので、native threadを使ってもさほど並列性はあがらず性能もあがりません。

というのも、オブジェクトアクセスひとつひとつを排他制御しなければならないので、コンフリクトは無視して問題が起きそうなら自分で対処というようなC++のような対応はスクリプト言語では難しいでしょう。

ささだくんは将来Multi-VMとかでnative threadを使った並列性の活用について構想しているようです。あるいはTermite[http://toute.ca/]のようなアプローチもありえるかもしれません。

また、PythonのGuido van Rossumはスクリプト言語の並列性について

http://mail.python.org/pipermail/python-3000/2007-May/007414.html

という(むしろforkを活用すべきという)意見を述べています。

_ kitaj (2007-06-04 13:35)

> 身分は隠して
きっとバレてる

_ odz (2007-06-04 13:57)

> 普通に考えたら、mod_phpやfastcgiを使えば、構文解析はほとんど行われないと 思ってしまうが

たしか、標準状態の PHP はリクエストの度に構文解析を行っていたかと思います。mod_php でもそれは同じだったはずです。

_ shiro (2007-06-04 15:46)

phpの中身を何にも知らないでコメントしますが、「内部的に用いる中間表現」が何かによってかなり変わって来るでしょうね。単なる構文木ならホントに節約されるのは構文解析だけですが。

Gaucheの場合、「構文解析」に当たるのはreadで、このコストは無視できます。その後のコンパイルステージは3パスに分かれていて、パス1でリストから変数束縛情報などを追加した内部表現に、パス2で最適化、パス3でコード生成を行うんですが、実はこのパス1がコンパイル時間の6割を占めています。なので、中間表現がある程度の解析を含むものなら、キャッシュすることでかなり速くなっても不思議は無いような。

_ shugo (2007-06-04 16:08)

PHPは毎回構文解析するみたいですね。
(PHPからRailsに来た人だとそれではまるらしいです。
productionで変更が反映されなくて。)

実は毎回環境を全部リセットしたりするんですかねえ。

_ wtnabe (2007-06-05 11:14)

毎回リセットのはずです。PHP の基本は高級 SSI ですから、いきなりキャッシュされると困るケースの方が多いんじゃないでしょうか。それと PHP 界隈ではアクセラレータという表現が一般的だったりします。

お名前:
E-mail:
コメント:
本日のリンク元
アンテナ
検索

«前の日記(2007-05-29) 最新 次の日記(2007-05-31)» 編集

RSS feed meter for http://www.rubyist.net/~matz/ Creative Commons License This work is licensed under a Creative Commons License.