MIRACLE
メールサービス申込 ユーザー登録 パートナー情報
お問い合わせ FAQ サイトマップ
MIRACLE LINUXの特長 製品紹介 サービス案内 購入 サポート 技術フォーラム

プロフィール

吉岡 弘隆 - よしおか ひろたか

日本OSS推進フォーラム ステアリングコミッティ委員
OSDL Board of Directorsを歴任
カーネル読書会主宰

2000年6月、ミラクル・リナックスの創業に参加。
95年~98年、米国OracleにてOracle RDBMSの開発をおこなっていた。
98年にNetscapeのソースコード公開(Mozilla)に衝撃をうけ、オープンソースの世界に飛びこみ、ついには会社も立ち上げてしまう。
2008年6月取締役CTOを退任し一プログラマとなった。

ミラクル関連リンク

採用情報

サイト検索

2008年9月

  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        

« 2006年10月 | メイン | 2006年12月 »

Rubyの本読書会(会社編)

世間ではRubyの本読書会というのをやっているらしい。参加したかったのであるが、あっという間に定員オーバーで登録できなかった。残念。

とにかく本を「音読」するらしい。ということで、会社の有志をあつめてマネをしてみた。社内メールでRubyの本(プログラミングRuby 第2版 言語編)読書会の参加の募集をしたところ10名ちょっと参加者があつまったので、担当、順番、スケジュールなどを決め、先日やってみた。

第1章、第2章は、言いだしっぺのわたしが担当で、第3章以降、第I部分を一人一章わりあてた。第II部、第III部については今回はわりあてていない。第I部がおわってから考える。毎週一回1時間程度のペースでやるとだいたい3ヶ月で一巡するので、丁度お手頃という感じである。3ヶ月もやっていれば、当初と違った興味もわいてくるだろうし、ひょっとしたらもっと突込んだ議論もしたくなるかもしれないし、それはやってみないとわからないので、お試し期間という感じである。

方針というと大袈裟だが、以下のような感じで運営することにした。
  - 最低限、その章は読んでくること
  - すすめかたはケース・バイ・ケースだが基本は音読。
    担当によって宿題を出すなどは自由。
  - 事前に担当まで資料/スクリプトの有無を確認し、
    ノートPC/プロジェクタも用意する。
  - 飛び入り参加歓迎です。(^-^)

やってみての感想であるが、第1章はかなりとばし読みして、1.2 Rubyの実行あたりからじっくり、読んだ。kyagiさんがノートPCをプロジェクタにつないで、本の例題などを打ち込んでくれていたので、時々実行結果を見ながら理解が深まった。

第2章も順調に進み、ハッシュは要素を削除すると縮むのかという質問が出たが、実験してみたところ縮んだりして面白かった。if ... elsif という構文でelsifというのを初めて見たという人がいたが、elsifをとる言語って、他にどんな言語があるのだろうか?

というような調子でやって2.5 正規表現でお時間になった。次回は2.6ブロックとイテレータからで第3章あたりまでいきそうである。

音読すると意外と体力(?)を使うというか喉が乾くので飲み物を用意しておくと良いと思った。またノートPCを用意して、実装の動きを同時に見るというのも理解を深めるためによいと思った。

そのうち、読書会の最中にソースコードをハックする連中が出てくるのではと秘かに期待する今日この頃である。

参考:

本家
http://www.ruby-lang.org/ja/

マニュアル
http://www.ruby-doc.org/

きっかけ
未来のいつか/hyoshiokの日記
http://d.hatena.ne.jp/hyoshiok/20061105

BINARY HACKS

高林さんに献本(Binary Hacks)をいただく。本日到着しました。ありがとうございました。

昨年12月にあったBinary 2.0カンファレンスをきっかけにできあがった書籍である。素晴しい。わたしも高林さんのブログでBinary 2.0カンファレンスを知り、早速申し込んだ口であるが、無理矢理すべりこむため(だって、あっと言う間に満員で登録締切になってしまったから)、持ネタのCache Pollution Aware Patchを5分でプレゼンをした。

Binary 2.0で発表。
ライトニングトーク
Binary 2.0

先日、Gree主催のオープンソーステクノロジ勉強会で鵜飼さんの「プログラムが main()にたどりつくまで」を聞いたのだが、その宴会で高林さんからBINARY HACKSを送りますよ〜というありがたいお言葉。

さて、第6章プロファイラ・デバッガHackである。#87〜#89の例が残念ながらショボイ。人工的すぎてリアリティがない。やはり、rubyのキャッシュミスを測定するくらいの実アプリを意識した例になっていたらと思う。(おしい)

もちろんだからと言って本書の価値がそこなわれているわけではない。

#89でoprofileを有効にする場合のカーネルの設定でCONFIG_PROFILINGおよびCONFIG_OPROFILEをオンにしておくというのがあるが、コールグラフを計測するには、それに加え、Kernel HackingのCONFIG_FRAME_POINTERをオンにしておく必要があると思う。このフラグをオンにしていないのがデフォルトなので、結構はまるところである。

キャッシュミスを検出する(337ページ)でeventとしてBSQ_CACHE_REFERENCEを、マスクとして0x10fをあたえている。BSQ_CACHE_REFERENCEというのは、Pentium 4ないしXeonのイベントなので、PentiumIII以前や最近のCoreプロセッサでは当然違うイベントになるし、それらの情報については、IA-32 Intel Architecture Software Developer's Manual Volume 3B, System Programming Guide, Appendix Aの表を見よという情報がないと、わけがわからないと思う。#91「ハードウェアのデバッグ機能を使う」では上記のリファレンスが載っているので#89は若干不親切な気がする。

イベントマスクの0x10fなのであるが、当該マニュアルを見ると
Bit
0: RD_2ndL_HITS
1: RD_2ndL_HITE
2: RD_2ndL_HITM
3: RD_3rdL_HITS
4: RD_3rdL_HITE
5: RD_3rdL_HITM
8: RD_2ndL_MISS
9: RD_3rdL_MISS
10: WR_2ndL_MISS
となっているので、0x10fはRD_2ndL_MISS/RD_3rdL_HITS/RD_2ndL_HITM/RD_2ndL_HITE/RD_2ndL_HITSがオンだという事を示している。ということはL2キャッシュミス(RD_2ndL_MISS)だけではなく、L3キャッシュヒット(RD_3rdL_HITS)およびL2キャッシュヒット(RD_2ndL_HITM/RD_2ndL_HITE/RD_2ndL_HITS)も同時に計測しているような気がする。(いかがだろうか?)

#94「プロセッサのメモリオーダリングに注意」の例のプログラムだが、これはメモリオーダリングの例ではなくてアトミックな交換(xchg)が出来ていない例なのではないだろうか?

アプリケーションレベルでメモリオーダリングに注意しなければいけない例というのはあまり思いつかなかったのでもし適切な例があればご教示いただきたいところである。

以上重箱の隅をつつきまくったが、つつきたくなるほど素晴しい本である。通勤電車の行き帰り、没頭して乗り過す危険性が高い本でもある。この第二版の企画があったらぜひcrashダンプの読み方、kprobe/djprobeやsystemtapなどの話も追記してほしいところである。

高林さんのブログ
Binary Hacks が届きました/いやなブログ

小飼弾さんのブログ
Binary Hacks/404 Blog Not Found

Rubyのプロファイリングをするお話などは下記を参考。

コードを読むな、理解しろ
Rubyのプロファイリング

会社情報 採用情報 個人情報保護方針 商標等取り扱い事項 English
Copyright(c)2000-2006 MIRACLE LINUX CORPORATION. All Rights Reserved.