「実践デバッグ技法」読んだ
[日常] [趣味・読書]
'11/07/04(月曜日)04:19:11いわゆる「printfデバッグ」ばかりやっているような人に、デバッガいいよすごくいいよ、と宣伝している本。gdb、DDD、Eclipse(のデバッグ機能)についての一通りの使い方と、デバッガ以外のデバッグに役立ちそうなツール類の紹介をしている。
「実践」というからにはもっとつっこんだ内容かなと期待して買ったものの、あんまりそうでもなくてガッカリ気味です。デバッガなんてほとんど使ったことがないような人向けという前提なので、ばりばりデバッガ使っているような人が何か新しいバグ解析手法を知りたいと思って購入すると残念感が大きいです。UNIXのセグメンテーションフォルトについて詳しく書いているように見えて実は内容がいまいちだったり、ソケット・シグナル・スレッド周りのデバッグは難しいといいつつそれらについてのより実践的な話があるわけでもなく、極めつけはシグナルハンドラ内でprintfするサンプルコードが乗ってたり(バグの元です)、など。
どちらかというと、今まで知らなかったようなコマンドやツールをいくつか知ることができたことが収穫だと言えるのかもしれない。gdbの模擬配列「(int[25])*x」「*x@25」、displayの反対「undisplay」(実はこれを知らなくて今まで苦労していた、、)、gccの -fmudflap、OpenMP (gccでは -fopenmp)、SWIG、あたりかな。
ただまぁ、シグナル・スレッド・ソケット・malloc系とタイミングが絡むと、本当やっかいですよねぇ(誰に話してんのよ、、)
「USTREAMがメディアを変える」読んだ
[趣味・読書]
'11/02/22(火曜日)04:32:45テレビ番組含む映像制作に関わってきてメディア論の評論なんかを書いている小寺氏の本。最近露出が増えてきたUstreamについて、その特性をこれまでのテレビ放送と比較しながら説明しその将来にもふれている。
氏のブログにも書いてあるようにテレビ番組制作に関わってきた経験をふまえて書かれたということなんだけど、うーん、あんまりその傾向は感じられず、よくある「Ustreamって何なの」的なビジネス本と大差ないように思われた。6章のテレビ業界についての話や7章の著作権についての話がその一部だとは思うんだけど、「テレビ進化論」の方がその辺は詳しかったりして事前に知っていたので、個人的には目新しさがほとんどなかった。5章の番組制作についてなんかはこの本の独自色だといっていいけど、果たしてここまでの濃い話がこの本の読者に有益なのかどうかがについては微妙だったように思う。
この手の本としてはちゃんとは書かれていると思うので、Ustreamをあまり知らない人が読むビジネス書としては悪くはないと思う。だけど、すでに類似書を読んだ人があわせて積極的に読むほどではないかなぁというのが正直な感想です。
「実用Git」斜め読みした
[日常] [趣味・読書]
'10/11/27(土曜日)02:00:52ここ3年ほどで一気に広がった感のあるソースコード管理システム(SCM)のGitについて、その成り立ちやら設計思想やらにまで踏み込んで解説している本。Gitの基本的な使い方から内部の構造についてまでかなり幅広い内容を取り扱っている。
正直に書くと、この本ダメです。何がダメかというと、どういう読者をターゲットにしているのかが見えないんです。git のちょー基本的なコマンドを解説しているかと思いきや、内部で使っているSHA1の一意性の構造について語り出したりしていて、まとまりがものすごく悪いです。それにつられてか章立てもなんかいまいち。SCMにほとんどなじめていない初心者をターゲットにしているのか、ばりばり.gitの中まで見ているような人をターゲットにしているのかわからないです。
その点を棚に上げれば、なかなか知ることができないGitの内部構造についてや、無閉路有向グラフで表されるコミットのチェーンについての解説もあって、さらさら読み進めながら時々濃い内容のとこを熟読する程度にはよい。特に、分散レポジトリであるGitを理解する上で最大の難所といってもよい、ブランチがないのに分岐とマージが存在する無閉路有向グラフの様子(gitkで表示されるアレ)を理解するのは、Git初心者からの脱却には必須だったりするので、9章10章あたりは読んどいて損はないと思う。
最近注目を浴びつつある、SourceForgeやGitHubに代表されるようなSCMホスティングサイトについて紹介している付録Bは、正直必要なかったんじゃないかなぁ。
というわけで、よほどGitのことについて詳細に知りたいという人をのぞいて、あんまりこの本はお薦めしないです。SCM初心者には敷居が高い箇所が多いです。他のSCMになじみがあるGit初心者でも、他のコマンドの使い方解説を重視した本の方がよいです。そこそこGitに慣れてきたら、そもそもこの本に書いてあるような使い方はほぼ理解しているだろうしGitの内部構造なんて知っても仕方ないし、やっぱりこの本は必要ないです。
あとは、まだまだ進化を続けている感のあるGitなので、細かなコマンドの使い方はオンラインマニュアル読んだ方が早いです。個人的に大好きなコマンド「git status」「git show --stat」「git diff --stat」「git log --graph --left-right A...B」「git diff (SHA-1) | patch -p1 -R」
「大規模サービス技術入門」読んだ
[Linux] [趣味・読書]
'10/11/15(月曜日)04:23:39端的に言えば、はてなのインターン生向けに提供してたカリキュラムを本の形にまとめたもの。大きく、マシン単体についての説明(OS含む)、大規模データを前提としたアプリ実装、複数マシンを使ったサーバインフラ構築、の3つのテーマをはてなの実システムを基にして解説している。
インターン生を対象にしているということもあってか、この手の話にしては内容は比較的容易な反面、時間のこともあるのか内容ははしょり気味の駆け足気味の説明になっている。そのため、自分でインストールしたLinux内にアプリを作ってみたことがある程度の前提知識は必要で、またこれを読んでも内容を極めるというのには少し遠い。この本をすらすら読める程度になるのが理想という点では「スケーラブルWebサイト」に近いけど、後者よりはプログラミングへからは少し遠ざかって大規模アクセスのあるサイトの実運用という点に重みを置いている。
安物PCをたくさん使って安く中?大規模サイトを作るというはてなの基本姿勢が見えたという点で有益だった。Amazon CloudFrontやVarnish使ってるという実例がぼんぼん出てくるのもいい点かな。ただ、本の中でも何度も但し書きしているけど、あくまで今使っているのがこれだというだけでそれが最適かどうかはわからないという姿勢なのも注意すべき点かも。
Webアプリを作ってみたことはあるけど中・大規模なアクセスのあるサイトの運用のイメージがつかめないという人にはオススメ。
「続・ハイパフォーマンスWebサイト」読んだ
[インターネット一般] [趣味・読書]
'10/07/26(月曜日)04:23:18前回の続編が出たと言うことで購入。前回は結局のところ、いかにしてリクエストとダウンロードを早くするかという観点だったのに対し、今回はそれらも考慮しつつJavaScriptの処理の高速化(というより処理をブロックしないよう)の点にメインがおかれている。また、HTML5.0の中身についてや、各ブラウザの仕様と対応状況についてなんかもちょこちょこ書かれている。
個人的な主観が入るかもしれないけれど、私は今回の本はあまり評価できない。前回の本は、時間がかかる箇所はダウンロードとダウンロードしに行くまでの箇所だと明言してその点を深く掘り下げていたのに対し、今回はJavaScriptの実行速度やその仕様制限についてが増えてしまっている。また「今の」Webブラウザの実装状況に依存した小手先回避策が多くなってしまっている。特殊なWebアプリでない限りはJavaScriptの実行速度やDOMノード操作・CSSの読み込みと適用の時間が相対的に問題にはならないと明記しているのにもかかわらず、これらについて解説してしまっている。JavaScriptの処理のブロック(やシングルスレッド制約)にまつわるところなんて、もはや今のWebブラウザを実装する上での制約そのものに関わるところなのに、小手先で逃げられるところを模索しているだけにしか読めない。これじゃ、今回の本なんて読まずに前回の本で提起されたルールをきちんと見つめた方がよい。
cometやWebsocketについてもちらりと書かれているが、これらはこの本の範疇ではないはず。Flush(12章ドキュメントのフラッシュ)についてわざわざ説明しようとしているような読者をターゲットにしているのにもかかわらず、HTTPプロトコル上にある意味「強引に」作ったCometやTCPの生ソケットについての話題を持ってくる必要があるのだろうか。
JavaScriptについても、Webブラウザの今の実装に基づいて解説しすぎている気がする。せっかくのランタイム実行形式のJavaScriptなのだから、ヘタな小手先修正を解説するのではなくて、将来のランタイムの改善による実行高速化に期待した方がいいのではないだろうか。ヘタな小手先修正なんてしない方がよいというのが10年以上前のJavaからの教訓だったと思うんだけど。
もちろん、真に高速化・最適化を目指すにはあらゆることを考慮していかないといけないのはその通りだけど、あらゆることを考慮しないといけないレベルにはまだまだ達していない。ブラウザのバージョンごとの違いはどうなのか、Javascript実行エンジンの特性の違いは、DOM操作の速度は、レンダリング速度は、OSの違いは、CPUの違いは、想定するメモリ使用量は、コンテンツのHDDへのキャッシュ書き出し速度は、回線速度による違いは、回線レイテンシの違いは、NATやFWが足を引っ張っていないか、サーバ側のスクリプトはどうか、WebサーバはApacheでいいのか、mod_php,mod_perlちゃんと使っているか、MySQLがボトルネックになってないか、サーバのCPU/メモリリソースは十分か、とか言い出せばきりがないけど、それ以前にダウンロードにかかる時間とダウンロード要求が遅れないようにすることが相対的に重要になるはず。てかそれが重要だと前回の本から一貫して書いているはず。
というわけで、9?11章あたり以外はあんまりオススメできないです。よほどあらゆることを知っておきたい人以外は、前回の本をきっちりと理解する方へ労力を注いだ方が遙かによいです。
ikomaru > で、rarulんが、こういう本を必要とすうようなWebサイトを運営する日はいつくるんw ('10/07/26(月曜日)05:08:15)
rarul > 意外と早く来るかもしれないっすよ?(ぉ ('10/07/31(土曜日)23:47:35)
ののいず > 転職宣言キター? ('10/08/01(日曜日)21:44:54)