負け組アーキテクトの憂鬱

メモしておきたいことや読書の記録を淡々と書く。

2009年09月

[読書]ウェブ時代をゆく ─いかに働き、いかに学ぶか5

ウェブ時代をゆく ─いかに働き、いかに学ぶか (ちくま新書)ウェブ時代をゆく ─いかに働き、いかに学ぶか (ちくま新書)
著者:梅田 望夫
販売元:筑摩書房
発売日:2007-11-06
おすすめ度:4.5
クチコミを見る

かつて、コンピュータ専門誌やパソコン通信上で「半年前の自分は別人」という格言があった。

それは知識の量であったりスキルだったり、半年も勉強すれば出来ること分かることが急激に増えて、数ヶ月前の自分ですらあたかも別の人間かのように感じるという、「学習の高速道路理論」を疾走することそのものだった。自分も我武者羅に知識や知恵を吸収しては、半年前の自分は別人であることを実感し、ちょっとした喜びを感じていた時期が確かにあった。

もちろん今でも知的好奇心に正直に生きているつもりだけれども、はて、今から半年前の自分はどうかと言うと、もちろん確実に成長はしている実感はあるけれども、正直別人というほどのモノではないな、ということに気付いた。

自分自身のキャパシティの限界値が近づいているのか、これが疾走の先に待ち受ける大渋滞という奴なのかはわからないが、実際のところかつてのような高速道路上にいるという実感は薄い。

それでもまだ、高く険しい道に食らいつこうとしている。けものみちに降りるにはまだ早いのだ。

本書でウェブ時代をゆくための沢山のヒントを貰ったことだし、もう少し大渋滞であがいてみようかな、と思えた。

[読書]プロフェッショナルの原点4

プロフェッショナルの原点プロフェッショナルの原点
著者:P.F.ドラッカー
販売元:ダイヤモンド社
発売日:2008-02-16
おすすめ度:4.5
クチコミを見る

ビジネスにおける、いわゆる自己啓発書の類であるが、行動、成果、貢献、強み、真摯さなど、まるですり込まれるように数々のキーワードが散りばめられている。

引用文中心の構成だが、とるべき行動、身につけるべき姿勢が的確な短い言葉で表現されていて、どれも考えさせられる内容ばかりだ。原著での引用文と違い、訳書ではドラッカーの著書からの引用に置き換えられていると言う。よりドラッカー本人の言葉に近いのだろう。

本書の使い方の章の最後の言葉より。「成果をあげる能力は習得できる。習得しなければならない。」成果が出ないなどと嘆いてはいけないのだ。

[読書]お金は銀行に預けるな 金融リテラシーの基本と実践4

お金は銀行に預けるな   金融リテラシーの基本と実践 (光文社新書)お金は銀行に預けるな 金融リテラシーの基本と実践 (光文社新書)
著者:勝間 和代
販売元:光文社
発売日:2007-11-16
おすすめ度:3.5
クチコミを見る

証券口座を開設して、投資信託を始めるきっかけになった一冊。

金融リテラシーの第一歩を身につけるための本だ。金融初心者を対象に分かりやすい内容だが、中でも興味深かったのは、金融を通じた参政について。我々有権者は選挙を通じてしか政治に関わることができないと考えがちだが、目的の金融商品に投資することで積極的に世の中の変化に関わることが出来ると言う。投票した政党のマニフェスト云々も結構だが、環境事業関連ファンドを買ってみる方が確かに貢献している意識も高く持てるかもしれない。

くれぐれも、安直に株やFXは儲かるだとか、投資信託なら安全などと杓子定規に考えてはいけない。そんなことは書いてないし、そう読み取ってもいけない。リスクはコントロールしなければならず、またコントロールできるのはリスクだけなのだ。

CBQ.initを使ってLinuxでお手軽QoS

ネットワーク帯域上で必要な帯域をあらかじめ確保したり、必要以上のトラフィックを制限することを引っくるめて一般にQoS(Quality of Service)などと言うが、LinuxでIPのトラフィックコントロール(帯域制御)をするには、iprouteとtcを使う。

しかしこの設定は柔軟ではあるものの、直感的ではなく分かりづらい。こういうモノが必要な場合の大半は、アドレス帯毎に制限したいとかポート毎に制限したいとか、比較的目的がはっきりしているため、出来ればザックリと簡単に設定したいものだ。

そこで、CBQ.initというtcのwrapperとして使いやすいscriptがある。CBQというのはClass-Based Queuingと言って、トラフィック(パケット)をクラスとして定義し、それぞれに帯域上限値を設定しておく事で、上限値を超えたパケットを破棄するという方式だ。単純なqueueの優先順位付けの帯域制限方式と異なり、いつまで経ってもパケットがスケジューリングされず、事実上の通信断になってしまう事態を防ぐ事が出来る。

このCBQ.initをCentOS4で試してみた(たぶんCentOS5でもredhatでも同じでしょう)。必要なモジュールは最小構成でも用意されていたので、単純にscriptを設置するだけで良い。

まずはscriptをダウンロードし、適当はdirectoryに置いておく。redhat系のchkconfig形式のscriptのため、/etc/init.d/に置くなりlinkするなりしておくと、サービスとして管理することができる。分かりやすくするため、/etc/init.d/cbqというファイル名で設置してみた。

# chkconfig --add cbq
# chkconfig --list | grep cbq
cbq             0:off   1:off   2:off   3:off   4:off   5:off   6:off

こんな感じで見えれば正常。

あとは、script中のコメントに従って設定ファイルを用意する。設定ファイルもredhat系のdistributionならばおなじみの形式だ。設定ファイルの置き場はデフォルトでは/etc/sysconfig/cbq/なので、特に問題無ければここにすると良い。当然CentOSの標準構成には無いので作っておく。

# mkdir /etc/sysconfig/cbq/

設定ファイルは帯域制御したいクラス毎に、このdirectoryにファイルを置く。ファイル名の命名規則は以下のとおり。

cbq-lt;clsidgt;.lt;namegt;
  • clsidは帯域制御のクラスIDで、他のクラス(要は他の設定ファイル名)と重複してはいけない。0002からFFFFまでの値を指定する。
  • nameは任意の文字列。分かりやすい名前にでもしておく。

たとえば/etc/sysconfig/cbq/cbq-5963.for_httpsなどというファイルを作る。内容の例はこんな感じ。

DEVICE=eth0,1000Mbit,100Mbit
RATE=5Mbit
WEIGHT=500kbit
RULE=:443,
  • DEVICEには対象とするinterface名と、対応する物理NICのリンク速度、ウェイト(通常はリンク速度の1/10)を指定する。
  • RATEにはこのクラスへの割り当て帯域を指定する。
  • WEIGHTはウェイトを指定する。通常はRATEの1/10。
  • RULEは、[[saddr[/prefix]][:port[/mask]],][daddr[/prefix]][:port[/mask]]この形式で指定する。カンマ区切りで前半がソースアドレスとポート、後半がディスティネーションだ。特に指定しない(anyを指定する)場合は省略可能。

これがもっとも基本的で単純な使い方だ。上記の例だと、1Gbpsのインターフェイスeth0を通るパケットに対し、ソースポートが443であれば何れのソースアドレスでも、何れのディスティネーションでも5Mbpsの帯域とする、と言う意味。Webサーバなどに設定して、httpsの下り帯域を制限しているわけだ。

単なるwrapperとはいえ、設定出来る内容は多岐にわたり、かなりきめ細かい設定も出来る。scriptのコメントがとてもよく纏まっているので、いろいろ試してみると良い(CBQ.initという名前だけど、CBQ以外の制御もできる)。

chkconfigでサービスに登録してあれば、動作させるには

# service cbq start

だけで良い。動作状況の確認は以下のコマンドでできる。

# service cbq stats(帯域制御の状況を表示する)
# service cbq list(制御対象のリストを表示する)
# tc -s class ls dev eth0(tcで見る場合にはこんな感じ watchコマンドの引数にすると便利)

動作に問題が無ければ、chkconfigコマンドでonにしておけば、毎回OSのboot時に設定される。chkconfigを使わない場合は、そのままscriptの実行し、引数にstart,stop,stats,list等を指定すれば同じ結果になる。

[読書]Apacheモジュール プログラミングガイド5

Apacheモジュール プログラミングガイド (Advanced Server‐side programmingシリーズ)Apacheモジュール プログラミングガイド (Advanced Server‐side programmingシリーズ)
著者:小山 浩之
販売元:技術評論社
発売日:2003-08-01
おすすめ度:5.0
クチコミを見る

Apacheモジュール作成のための入門書という位置付けだが、Apache httpdの設計思想やアーキテクチャを知る上で非常に有用な内容だ。

対象としているhttpdのバージョンが1.3と古いものの、2.0との差分が付録にまとまっているなど、親切な構成だ。

モジュール作成者で無くても、リクエスト処理ループの考え方などは、httpd.confの書き方の理解を深めることは間違いない。Apache httpdの挙動の理解や、他のモジュールのソースを読む手がかりにもなるだろう。

現在は手に入りづらいようだが、最新版に合わせた内容での改訂を期待したい。

[読書]sedパズルブック4

sedパズルブック
著者:片山 裕
販売元:インプレス
発売日:1993-03
おすすめ度:5.0
クチコミを見る

正規表現の基礎から、なんとフィボナッチ級数展開までsed一つでやってしまおうという、何故そこまでsedに拘るのかという珠玉の一冊。

1997年当時にアルバイトしていた下北沢の編集プロダクションに置いてあった。以来、自分でも買おうと出版社にまで問い合わせたが「重版の予定なし」と言われ続け、数年前にAmazonのマーケットプレイスでようやく購入した思い出深い一冊でもある。

問題編と解答編を交互に繰り返す構成で、パズルブックの名にふさわしく楽しみながらsedのコマンドを学ぶことができる。前半は常識的な問題であるものの、後半はもう解答を見るだけで笑っちゃうような、目から鱗が落ちる問題ばかりだ。

現在では非常に手に入りづらいが、見かけたら是非手に取ってほしい。

[読書]フューチャリスト宣言5

フューチャリスト宣言 (ちくま新書)フューチャリスト宣言 (ちくま新書)
著者:梅田 望夫
販売元:筑摩書房
発売日:2007-05-08
おすすめ度:4.0
クチコミを見る

明るい未来を予測することは、一つの意志だ。

現実を悲観する事は簡単だし、守りに入るのであれば、すべきことは単純だろう。

サブカル化した知を嘆く茂木さんと、日本のWebを残念と表現する梅田さんが、それでも「ネットの側に賭ける」という未来を選択することは、決意であり意志表明である。

今まで様々な理由でunderdog(負け犬)として生きてこざるを得なかった世界中の人々が、インターネットの力でエンパワーされて攻めてくる。世界中で情報格差が急激になくなりつつある。経済圏の垣根など簡単に超えるだろう。

残念ながら、能力のある新興国の技術者に、能力の無い日本人の技術者が打ち負かされる未来はすぐそこまで来ている。

そんな中で我々日本人の技術者は、どんな明るさのどんな未来を予測すれば良いのだろうか。情報格差を無くしたネットの力をを驚異として捉えるのではなく、最大限に利用する。経済格差など関係のない純粋な競争に勝ち残る知性を志向すべきだ。

「未来は明るい」と言う意志が必要なのだ。

[読書]サーバ/インフラを支える技術 -スケーラビリティ、ハイパフォーマンス、省力運用5

[24時間365日] サーバ/インフラを支える技術 ?スケーラビリティ、ハイパフォーマンス、省力運用 (WEB+DB PRESS plusシリーズ)[24時間365日] サーバ/インフラを支える技術 ?スケーラビリティ、ハイパフォーマンス、省力運用 (WEB+DB PRESS plusシリーズ)
著者:安井 真伸
販売元:技術評論社
発売日:2008-08-07
おすすめ度:4.5
クチコミを見る

インフラ技術者必携。「まずは読んでこい」という一冊。

オープンソースメインで、商用ミドルウェアを使わずともここまで実装できるという好例でもある。

Googleを支える技術がかなり大規模システムを対象にしていた一方、こちらはある程度の規模さえあれば、明日からでも実践できるテクニックやノウハウが詰まっている。

なかでも、負荷に対する考え方については諳んじるまで読み込むべきだ。パフォーマンスチューニングの基礎的な考え方を学ぶ上でこれ以上の良書を知らない。先人の苦労が詰まった内容は、まさしく情報の高速道路と呼ぶに相応しいだろう。迷ったらまず手に取るべき一冊だ。