本を読む

読書やコンピュータなどに関するメモ

「エンジン・サマー」

エンジン・サマー (扶桑社ミステリー)
ジョン クロウリー
扶桑社
売り上げランキング: 37353
この物語にも蛇の手があるはずだ

 Engineの物語(SF)でもあり、Angelの物語(ファンタジー)でもあり、Indianの物語(寓話)でもある。現代(執筆当時の'70年代)への言及もあり、一種のメタフィクションでもある。

 そしてなにより、成長と喪失を描く、胸をしめつけられるような青春小説。

 そんな、マルチプレックスな傑作。

ぼくは聖人なんかになりたくない——それよりしあわせになりたい

「ヴィンランド・サガ」8巻

オレって奴ァどうしてこうドタン場のツキがないのかね…

 怒涛の展開で、わくわくと何度も読み返した。で、ふと、アシェラッドってそんなにアレとアレに思い入れてたっけかとか、ちょっと考えたので、前の巻を読み返してみるか。

 …というわけで、版元さん、帯でネタバレってのはごかんべんを。

「深夜食堂」1~4巻

猫まんま出してやると
うまそうに食ってさ、
「ニッ」と笑ったんだ。

 細かい説明なし、人生訓とか世相風刺とか哀愁とかなし、他愛ないというか素気ないというか、そんなところがいい感じの、短編連作人情話。

シェルスクリプトでHTTPサーバーを書いてみた

 Bash on Railsやらsh.inatraやら、pure bashなWAFもどきを作っていて、ApacheのCGIで呼ぶのが不徹底な感じがしてました。pure bashなHTTPサーバーってできないかなと思ったり。

 pure bashは無理でも、nc(netcat)でlistenすればできるか、とは考えてました。そのまま手をつけていなかったのですが、ふと書いてみたので公開しておきます。GitHubに置くほどのものでもないのですが。

 起動すると、デフォルトで3000番ポートでlistenします。

$ ./httpd.bash
Ctrl-C to shutdown server

 これで、カレントディレクトリをドキュメントルートとして、Webブラウザからアクセスできるようになります。sh.inatraなどを呼ぶ用途でしたら半分ぐらいのコードでいいと思いますが、インターフェイスとか考えていないのでとりあえず。

 なお、あくまでお遊びなので、セキュリティとか考えてません。くれぐれもインターネットに晒した状態で起動したりしないよう。

第98回カーネル読書会を聞いてきた

 Linuxのカーネルよりの勉強会である「カーネル読書会」に参加してきました。今回のお題は「はてなでのハード性能の引出し方」です。自分には理解しきれていませんが、とても興味深く話を聴けました。以下、メモのまとめです。

田中慎司(id:stanaka)さんの発表

 …といいつつ、YAPC::Asiaとのはしごで、最初の30分ぐらいを聴きそびれました。聴いた部分からのメモです。

 サーバーとしては、安価なハードを使うポリシーで、自作PCサーバーとソフトで賄う方針だそうです。いわく、Googleのサーバーの方針に似てるんじゃないかとのこと。コスト面ももちろんあるわけですが、それとともに、ソフトやインフラ、パーツの進化に追従するというのも理由として大きいようです。ちなみに、PixivやCerevoをまじえて自作サーバーカンファレンスをやりたいと語ってました。

 最近では特に、仮想化を前提とした構成を選んでいて、多コアCPU、大量のメモリ(ECCなし)、RAIDなどの管理機能は最小限、RAIDなしまたはソフトウェアRAIDという方向とのことでした。OSはCentOS 5だそうです。

 これらのサーバーマシンは、消費電力とパフォーマンスの比が悪くなったら引退させていて、それがだいたい2年ぐらいだそうです。引退マシンのパーツは秋葉原で売りさばいている(さすがにHDDなどは除いて)というトリビアも話されました。

 メモリ容量はデータ量に合わせて用意するという話もありました。DBは極力メモリに乗せて、I/Oを最小限に抑えるとのこと。たとえば、最近はてなブックマークのDBが16GBのメモリではおさまらなくなってI/O readが増加したので、32GBに増設したところメモリにおさまるようになった、という事例も話されました。

 I/Oがらみでは、最近SSDを導入していい感じという話でした。オンメモリDBとの性能比較データを示しながら、データ量が増えてもI/O waitが悪化しないので、構成によってはハードコストをおさえられると考えているそうです。具体的には、検索ロボットのDBスレーブで使っている(マスターはHDD)とのこと。安物のSSDは半年で壊れたので、インテルのSSDにして満足しているけど、不安点としては、経験がなくて障害パターンが不明なことだそうです。

 ネットワークについても紹介されました。半年前は1サブネットのシンプルな構成にしていたが、L2スイッチのARPテーブルがあふれたのをきっかけに、3層構成にしたそうです。ただし、ルーターとして、これも自作PCサーバーでやっているそうです。WebやDBのサーバーよりちょっといいマザーボードで、ECCメモリを使い、NIC 2つで、IPMIポートつきだそうです。

muranet(id:halfrack)さんの発表

 田中さんのルーター話を受けて、ルーターマシンの限界性能評価実験について解説されました。2009年7月にはてなに就職したそうで(その前はアルバイト)、家にハーフラックがあるそうです。FreeBSDが好きと自己紹介していました(笑)

 カーネル読書会らしく、カーネルやデバイスに踏み込んだ話でした。会場には、Linuxカーネルのネットワークスタックのメンテナーさんなどもいて、議論が交わされました。

 背景としては、インバウンドが頭打ちになってるようだったので、限界性能を測ったということです。この頃のルーターは、サーバーマシンにNICを追加しただけのハードで、XenのDom-Uで動いていたそうで、Xenの件はmuranetさんも「聞いてぎょっとした」とのことでした。

 測定方法は、MTUを152に変更し、netperfを4つ(コア数ぶん)走らせ、ethtoolとsarで観測したとのこと。その結果、だいたい片道200kbpsぐらいが限界、Xenを使っているとその半分、という数字になったというのを、グラフで見せました。

 このあたり、OSのパラメータを変えてもあまり影響がなくて、NICを変えるとがらっと変わったそうです。ルーターがボトルネックになっているときは、CPUが100%にならない場合もあり、NICのほうでサチってたりするそうです。また、TCPの輻輳制御がかかるためパケットロスはほとんどなかったそうです。

 このとき、sarでみるとCPU0だけ割り込みが高かったりして、デバイスから割り込みがかかるとCPU0に行ってしまうという話がありました。これに対し、CentOSならirqbalanceがデフォルトで動いているのでは、という質問があり、実はirqbalanceを止めているという回答がありました。そこから発展し、WIDEで通信速度の世界記録を出したときにはむしろIRQ固定にしたというエピソードも紹介されて、もうちょっとがんばれる気がするというコメントがありました(いや、世界記録と比較されても…)。

 また、同じマシンでiptablesなパケットフィルタリングも動かしているとのことで、それが重い可能性もあるんじゃないかという意見もありました。しまいには、oprofileでデータを採ってカーネルメンテナーさんに送りつけるのはどうかという話にも発展しました。

 そのほか、測定するときに意外とクライアントがボトルネックになりやすい(ルーターはL3までの処理だがクライアントはL4まで)とか、netperfでパケットを小さくするのに苦労したとか、ethtoolの表示が信用できないような気がするとかいったTipsなども紹介されました。

感想

 はてなのインフラについては、いままでもいろいろなところで公表されているのですが、実は日々進化しているということで、チャレンジの様子を面白く聴けました。

PHPカンファレンス2009に参加

 年に1度のPHPのお祭り、「PHPカンファレンス」に参加してきました。

 今回は10周年だそうで、2日間にわたって開催されました。スピーカーやスタッフのみなさん、ありがとうございました。ここのところ、LL系大型イベントが続いていますが、イベントや言語ごとに雰囲気が違って、それぞれ楽しいですね。

 中の人がgihyo.jpで早くて詳しいレポートを書いているので、ここでは自分として気になった部分を自分用メモとして残します。

1日目:ビジネスデイ

 1日目はビジネスデイと題して、比較的仕事に直結しやすいソフトや、事例などが発表されました。場所は青山のオラクル。とてもきれいなオフィスで、窓から見下ろす青山通りがきれいでした。

NetCommonsでオープンソースビジネスモデルの実現(永原篤)

 前半はCMSの話が続きます。最初はNetCommonsの発表でした。オールインワンというあたりが特徴のようです。

 以下、メモから。

  • 用途
    • Webサイト
    • 自分で使うデータを置いておくプライベートスペースとして
    • グループウェア
  • オールインワン
  • 管理画面ではなく編集モード
  • 操作性を統一し、モジュール間の違いがない
  • 1系
    • 開発終了、メンテナンス
    • GPLライセンス
    • XOOPSベース
  • 2系
    • FreeBSDライセンス
    • Mapleベース
  • 学校や公的機関での導入例
  • 神戸市:ライフラインとしてのNetCommons
    • 学校や幼稚園など全市で導入が決まっていた
    • そこにインフルエンザで、学級閉鎖
    • 導入している学校は、生徒や保護者が落ちついて対応
    • 導入していない学校では情報が錯綜
  • 国立情報学研究所:企業Webとして
    • 手離れがいい
  • NPO法人コモンズネットがブランド管理、登録商標
    • 開発講座なども
  • Install Maniacsコンテストで、IISにインストールしたらログインができなかった人が多かったという質問
    • パス設定1か所をミスするとApacheでもログインできないという例があるので、それかもという回答
  • 1系で3,000ユーザーぐらいの事例がある。ただし、2,000ユーザーぐらいから問題が出て、パッチをあてて運用

世界標準パブリッシングプラットフォームWordPress(マクラケン直子)

 2番手は、日本ではMovableTypeと人気を二分するWordPress。mixiのエンジニアブログがWordPressというのは、へぇでした。あと、公演中に「WordPress.comのHTTPヘッダを見ると | Shin x blog」なんてことを調べてる人もいて、これもへぇ。

 以下、メモから。

  • Automattic社
    • Happiness Engineer(本当の肩書)
    • 世界中でバーチャルオフィス
  • Automattic, Inc.によるレンタルブログWordPress.Com
    • カスタマイズされている
  • Technoratiの Top 100ブログの36%がWordPress、5%がWordPress.COM
  • WordPress.COMのトラフィックはアクセス数世界トップ19位(Alexa調べ)
  • 拡張性
    • 公式ディレクトリに950以上ののテーマ、6,300以上のプラグイン
  • mixiのEngineer's BlogはWordPress
  • WIREDブログ、ロイターブログ、TechCrunch Japanなどメディア系も利用
  • WordPressでマイクロブログふうにするP2 http://p2theme.com/
  • ソーシャルネットワークBuddyPress
    • WordPress multiuser
      • 複数のブログを作って管理するフォーク。WordPress.comも利用
  • 国内ユーザーコミュニティ
    • WordBench.org
    • WordCamp

eZ Publish ディスクール(藤田拓)

 エンタープライズ指向のCMSだそうです。既存のHTMLやWord、DTPなどの資産を容易に取り込める、というあたりが面白そう。

 以下、メモから。

  • エンタープライズニーズを満たす高機能CMS
    • コンテンツ投入
    • ワークフロー☆
    • アセット管理☆
    • ユーザー管理、権限管理☆
    • コンテンツ出力
  • ☆のへんができるブログツールはあまりない
  • オープンソースでライセンス無料。有償サービス
  • 米海軍でも利用
  • ERPなど既存システムとの連係も
  • HTML、Word、OpenOffice、CSV、InDesign、QuarkXpressからのインポート
    • オフライン編集
  • 出版系、政府系が多い
    • 事例:ELLE、ナショジオ
    • より新しいコンテンツを、より豊かなデータで(写真、動画)
  • http://www.shinshu-liveon.jp/
  • フレームワーク的な要素が強い
  • http://ezpedia.org/
  • プロジェクト管理「eZ Teamroom」1月リリース予定
  • ロードマップ
    • CauchDB対応
    • IBM sMash対応
    • Oracle DB対応

Oracleで加速させよう! PHPのビジネス活用(伊東裕揮)

 会場を提供したオラクルさんからの発表でした。自虐ネタっぽく入りつつOracleをアピール。yodobashi.comをmemcached相当のソフトで高速化した話が印象的でした。

 以下、メモから。

  • PHP人気
    • 不況下でも案件数が伸びている
  • 「OracleはPHPもサポートします」
    • PHP OCIドライバ開発
    • PHP Developer Center
  • Oracleの評判
    • 高い(笑)
      • 開発用途なら無償のExpress Edition(XE)もあるよ
    • 難しい
      • トレーニング、セミナー
  • Amazon EC2でPHP + Oracle XE
    • AMIイメージが利用できる
    • Oracle Enterprise Linux + Oracle DB + WebLogic Server
    • CPU単位のライセンスを使い回しできる
  • JALの空席検索をインメモリDBで高速化した
  • memcached相当のOracle Coherenceで、yodobashi.comを高速化した

ソーシャルメディアGREE(田中良和)

 ネットのサービス企業としての志を語るセッションでした。「いまのユーザーばかり見ていても10年後のことはわからない」という言葉が刺激的で、「イノベーションのジレンマ」とか「慣れたら死ぬぞ」とか、そういう言葉を連想しながら聞いてました。

 以下、メモから。

  • 「インターネットを通じて、世界をより良くする」
  • SNS(広告アプリ収入)+ ソーシャルアプリ(有料課金収入)の任天堂モデル
  • コミュニケーション要素を強くとり入れたゲーム
    • GREE以前はMMORPGなどのヘビーなものしかなかった
    • モバイルだからこそ
  • 家族で使ったり
    • バーチャルのようなリアルのような、ミックスして使う常識
  • 新聞広告、雑誌広告、TV-CM、屋外広告など
    • インターネット業界では珍しい
    • 代理店の常識とは違うため、独自のプロモーション
  • コミュニティ監視
  • 日本すべての人にサービスを提供する
    • PCを持ってない人が大量にいる。地方の人など
    • モバイル
    • 男女比率は53%:47%
    • モバイルに力を入れていると若い人向けのようだが、30代以上の人がいちばん増えている(4割)
  • 今のユーザーを対象にしているだけではいけない
    • あてにならん
  • 2006年に2010年のビジョンと3つの仮説
    • ネットの利用はPCからモバイル中心に
    • コミュニティサービスがネット利用の中心に
    • コミュニティがコンテンツを融合する
  • 携帯ユーザー層
    • 画面が小さいほうが見やすい
    • キーが少ないほうが使いやすい
    • パソコンは起動に時間がかかる
  • マスサービスとニッチサービス(数万人まで)は、設計思想が違う
  • TV:ボタンを押せば楽しい
  • 継続して開発、改善し続けられるチーム力が最も重要
  • 日本有数のマスメディアに

45分でわかる、安全なWebアプリケーション開発のための、発注・要件・検収(徳丸浩)

 Webアプリを発注する側が、コストをおさえてセキュアなシステムにしてもらうための方法を語る話でした。なまじ顧客の要求仕様で「ウイルス対策を入れること」という条項があるためにWindows Serverベースになるケースがけっこうある、という話が印象的でした。

 以下、メモから。

  • 発注者は自衛のために、要求仕様にセキュリティ要件を盛り込んでおくべき
  • 漠然としたものは効果がない
    • チューインガム条項
  • 脆弱性の名前を列挙する方法
    • ないよりはいいが、質を問うのは難しい
  • 実装方式を指定する方法
    • コスト増の要因にも
  • 検収の方法を指定する
    • コストは高くなる
  • 基本はベンダーに提案してもらう
    • そのうえで提示
  • 納品物としてセキュリティ検査結果を添付してもらう
    • 検収時に自らセキュリティ検査を実施
  • 「Web健康診断仕様」
  • 顧客からの要求仕様で「ウイルス対策を入れること」という条項
    • Linux/FreeBSDでは難しい→Windows Serverになる、というケース
    • けっこう多い?
  • 「安全なウェブサイトの作り方」
    • 「基本的なことしか書いてない」という声もあるが、内容は正確
  • mb_check_encoding
    • 活用するべき
  • ウェブ健康診断 http://www.nippon-net.ne.jp/cms/12,1284.html

2日目:テックデイ

 2日目はテックデイと題して、技術寄りの話が発表されました。場所は例年どおりの大田PIOで、2ホール並行の構成。私は1日、メイン会場のほうで話を聴いてました。

 …すみません、基調講演は聴きそびれました。

台湾PHPコミュニティの日々(江 明宋)

 台湾からのゲストの方が、台湾のPHP事情を紹介しました。国内市場が小さいから、という話などは、規模は違えど、日本もちょっと身につまされました。

 以下、メモから。

  • 台湾のコンピュータ業界は、ハードが王様
  • ソフトは
    • ソフトのコピーが中心
    • 日本のゲームが人気
  • SIは
    • 規模は小さい
    • 原因
      • マルチバイト文字
      • 違法コピー
      • ネットバブルの後遺症
      • 市場規模(人口)が小さい
  • PHP
    • phpnukeやxoopsなどが使われている
  • Taiwan PHP user groupサイト
    • twpug.net
    • 沿革
      • TIC100→osobiz.com
      • 技術的な話へ
      • Palmの話題をするpwpug.comがあった
      • 「p」をpalmからPHPにできないか
      • twpug.net発足
      • こちらのほうが活発に
    • 成長
      • 質問への回答
      • PHPアプリの収集、紹介、l10n
      • PHP関連のニュースの翻訳
  • もっとPHP開発者を
  • コスト削減が喜ばれる
  • 大陸のPHP開発者
  • WindowsベースからWebベースへの切りかえが進む
  • 就学率は高いが、学生は就職先を見つけてから勉強する
  • 課題
    • インターネットのインフラ
    • パッケージ販売からサービスへ
    • 競争からコラボレーションへ
      • 市場規模が小さいので
    • 特許や著作権から標準へ
      • 特許ゴロはソフトウェア業界の損害
  • 市場が小さいので、サイトを作るときは、3言語で作る
    • 英語、台湾のchinese、大陸のchinese
  • WebではPHPのシェアは高い
    • それ以外ではJavaやC++のシェアが高い

High Perforcence APC(Rrian Shire)

 Facebookの人であり、APCの人でもある人が、PHPアクセラレータのAPCを解説しました。内容もさることながら(いや、理解してないんですが)、RPGのマップをたどるようなプレゼンツールが印象的でした。あと、けっこう突っ込んだ話で、通訳さんが大変そうでした。

 以下、メモから。

  • PHPをコンパイル、キャッシュ
    • PHP処理系の生成したOpcodeをキャッシュ
  • configuration
    • コードを格納するshm(共有メモリ)のサイズが重要
  • Opcodeのキャッシュ
    • apc.stat = 0で高速化
    • ただしアップデートするにはApacheを再起動
    • VCSを使っていて、apc.stat = 1 にしているときはapc.stat_ctime = 1にする
  • バイナリダンプ
    • まだexperimental
    • 難読化ではない
  • User Variable Cache
    • 変数から任意の値をキャッシュにおさめるAPI
    • オブジェクトはシリアライズ必要。オーバーヘッド
    • 配列とかじゃなくて、小さな値を入れる
  • APCのパフォーマンスチューニング
    • Lock
      • Facebookもスピンロックを多用
      • 注意が必要
    • Lazy Loading
      • PHPにパッチを当てる必要がある
      • callされるまで実際はloadされない
      • Facebookはこれなしでいられない
  • APCの将来
    • いまはメモリを使いきるとやばい
      • memcachedのように、least-usedでエクスパイヤするようにする
    • Abstract Extension API
      • エクステンション間でやりとりしてキャッシュを有効利用
    • No-copy shared cache(研究中)
      • いきなりキャッシュから実行するように
  • フレームワークでAPCの効果が大きい(会場)
  • 導入した瞬間に速くなってしまって、あとは何もしないとかありがち。ここをいじったらいいというアドバイスは(会場)
    • スタックオプションやロッキングメカニズム。あとはUser Variable Cacheを使ってみるとか
  • ZendOptimizerを併用したら動かなかった
    • 仕様です(笑)

PHPを見える化する(新原雅司)

 PHPでのデバッグやチューニングの方法をいろいろ紹介するセッションでした。

 以下、メモから。

  • 基本
    • echo、print_r、var_dump
    • 配列やオブジェクトだと出力が違う
  • マニア
    • dubug_zval_dump
    • 型情報も
  • プロファイル
    • Xdebugがおすすめ
    • プロファイル用のデータファイルを出力する
    • データ解析や表示は別のツールで
  • WinCacheGrind、webgrind、XHprofなど
  • XdebugでFunction Trace
    • ソースコードを見てうなってるより、動かして調べよう
  • プログラムは思ったとおりではなく書かれたとおりに動く

CakePHPストーリー(安藤祐介)

 最近、人気上昇中のWebアプリケーションフレームワーク、CakePHPの紹介でした。イベント「CakeMatsuriTokyo」を10月に開催するそうです。

 以下、メモから。

  • すべてのレベルのPHPユーザー向け
  • フレームワークを使わない素のPHPの問題
    • 変更が大変
    • 人によって書きかたが異なる
  • フレームワーク
    • 生産性が高い、つまり楽
    • 保守性の向上。引きつぎなど
  • 小さくまとめるのがCakePHP流
    • コントローラを拡張するComponent
    • モデルを拡張するBehavior
    • ビューを拡張するHelper
    • アプリケーションの一部を再利用するPlugin
  • Google Trendで、最近はSmartyよりCakePHPのほうが検索が多い
    • 「HTMLを書けるようになったら、次のステップとしてCakePHP」
  • 事例
    • @nifty
    • Miss Universe
    • addons.mozilla.org
  • イベント
    • 東京でのCakePHP勉強会
    • CakePHP Conference
    • CakeFestBerlin(独)
  • 今後
    • CakePHP 1.3:大きな変更はない
    • CakePHP 2:PHP 5化
    • CakePHP 3:
      • フルスクラッチ
      • PHP 5.3化(namespace対応など)

PHPを「いじり倒す」10の方法(moriyoshi)

 PHP自体の実装を解説し、Extensionで機能を追加してみせるというセッションでした。autoboxでsplitしてクロージャーでeachする、というのがちょっとRubyっぽかった。

 以下、メモから。

  • PHPは「テンプレート界のオーバーテクノロジー」「プログラミング言語と勘違いされる」「テンプレートエンジン上でテンプレートエンジンを実装」(笑)
  • PHPの構造
    • SAPI module
      • Webサーバーの実装との糊(グルー)
      • PHP CLIもSAPI module
    • SAPI
      • SAPI moduleとextensionとのインターフェイス
    • ZendEngine
      • PHPのコア
    • Extensions
      • 関数を実装
  • TSRM
    • クラスプラットフォームのTLS (thread local storage) ライブラリ
    • PHPを無理矢理マルチスレッドなWebサーバーに対応させる
  • ZendEngineの構造
    • Lexer
    • Compiler
    • zend_op_array
      • opcodeを格納する配列を持つ構造体
    • zend_op
      • 1つのopcodeを表す構造体
    • znode
      • 構文解析のsemaitic value
      • opecodeのオペランドとして流用
      • 実態はunion
    • Virtual Machine
      • handler関数がopcodeを処理
      • 呼び出し方をコンパイル時に指定
  • 改造しましょう
  • #1: 関数を追加
    • htmlspecialchars()と打つのがめんどくさい、第2引数のデフォルトがうざい、第2引数はUTF-8でよくない?
    • →h関数
  • #2: autoboxを追加
    • aray(1,2,3)->join(',')
    • autoboxが必要なときに__autobox()というグローバル関数を呼び出す
  • #3: テンプレートエンジンとしてのPHPを強化
    • タグの論理構造
    • PHPのパーサーで
  • 改造のTips
    • --enable-debugつきでconfigure
    • PHPのソースに含まれる.gdbinitを活用
  • PHPのエクステンションを簡単に作る方法
    • Boost.PHP
      • Boost.Pythonを意識
      • module_class

Q4MとFlareを使ってスケーラブルなサービスを作る(nowel)

 スケールアップはQ4MによるキューとFlareのKVSでいきましょう、というセッションでした。

 以下、メモから。

  • グラフ作成&共有サイトvizooでQ4MとFlareを利用
  • Q4M
    • メッセージキュー
    • 高速、柔軟なAPI
  • Flare
    • KVS
    • memcachedコンパチ
    • ノード間レプリケーション
    • ノード監視
    • インデックスサーバーが便利
  • DBのread/writeが多い系
    • それQ4Mで
  • Webサーバーが頑張っちゃう系
    • それQ4Mで
  • 重いクエリ
    • それQ4Mで
  • DBがスケールアウトしにくい
    • それFlareで
      • セッション管理
      • インデックスサーバー
  • Flareをsymphonyのstorageとして実装
  • Q4M
    • priorityを使う
    • multi queueでキューを一元化
    • queueをバラまく
    • 大きくなったら細かくして分散
    • cronのかわりにQ4M
  • Flare
    • 小さくて共有するデータはFlareに

Symfony プロフェッショナルなウェブサイトのためのフレームワーク(Fabien Potencier)

 今回の(たぶん)一番の目玉、Symfonyの人の講演でした。

 以下、メモから。

  • MVCフレームワーク
  • 豊富なドキュメント
  • Symfony 1.0
    • ライブラリをつなげる糊(glue)
    • ほかの言語やフレームワークからコンセプト
  • symfony 1.2
    • 分離可能だがまとまりのあるコンポーネント。ばらして使える
    • コントローラはまだMojaviベース
  • 1.3
    • 2009年11月予定
  • 1.4
    • 1.xの最終バージョン
    • 1.3から廃止予定の機能を取り除いたもの
  • Symfonyエンタープライズバージョン
    • 通常版は1年間サポートのところを3年間サポート
    • 1.0LTS、1.4LTS
    • バグ・セキュリティ修正。PHP新バージョンへの互換性
    • 機能追加なし
  • 商用サポート
  • Symfonyだけのカンファレンス
    • symfony-live.com
    • Symfony Camp
    • Symfony Day 09(独)
    • 日本でも企画したい
  • Symfonyでたくさんのアプリケーションが開発されている
    • Yahoo!でいくつか
    • 動画共有サイトDaily Motion
  • プロフェッショナルのためのフレームワーク
    • セキュリティAdminジェネレータ、キャッシュ機構、きれいなURL、国際化、進んだformサポート、など
  • ばらばらにも使えるコンポーネント群
    • YAML、Dependency Injection、など
    • SymfonyのMVCフレームワークはSymfonyコンポーネントをベースにしている
    • コンポーネントのうえにコンフィギュレーション
      • Dependency Injection
      • コンフィギュレーションの上にMVC
  • 開発環境、テスト環境、(ステージング環境)、実運用環境の切りかえが簡単
    • それぞれごとに異なった設定
      • キャッシュ、ログなど
  • 開発ツール
    • エラーページ
    • 本番環境ではパスワードなどデータの中身が含まれないようにする
      • 開発環境ではより多くのデータを表示
    • ツールバー
  • セキュリティ
    • XSS、SQLインジェクションなど
    • 設定でcsrf_secret(ランダムに)、escaping_strategy
  • テスト重要
  • 多フォーマットのネイティブサポート
    • HTML、css、js、atom、jsonなど
    • コントロールとモデルは同じで、テンプレートで
  • Symfony 1.2でREST対応
  • Q:Formsのドキュメントを希望
    • A:formについてはドキュメントが未整備なところがある。今年の末までには。あなたがやってくれるのも歓迎(笑)
  • Q:1.2とAPCとの相性がよくない。メモリを使い切って止まってしまう
    • A:ルーティングのキャッシュで1.2.2に問題がある。factory.xmlで、sf-no-cacheに設定を変えるといい。直感に反する設定だが、これが効果がある。1.3では修正した

LT:Tokyo Tyrant + PHP(小山健一郎)

 ここからLT。まずは、Tokyo TyrantをPHPから使うライブラリの紹介と比較の発表でした。

  • KV DBも使ってみたい
    • Tokyo Tyrant
  • InterfaceやExtensionは4つ(独自バイナリプロトコルを扱うもの)
  • Net_TokyoTyrand
    • 個々一番さん
    • PurePHP
  • php-tokyo_tyrant
    • Mikko Koppanenさん
    • Extension
  • dbo_tokyo
    • Martin Samson
    • CakePHPのData Souce
  • tokyotyrant_php
    • 俺(小山さん)
    • tokyotyrant.rbに近づける実装
    • 最適化されていない

LT:phpall:PHPの全バージョンの挙動を試す(hnw)

 いろいろなバージョンのPHPでプログラムをテストする方法を、ユーモラスに紹介していました。twitterで流れてた話によると、SymfonyのFabienさんも同じようなことをやってるんだとか。

  • phpallコマンドを作った
    • ~/binの下にたくさんのPHP(笑)
    • 逐次実行してくれる
  • 古いPHPはhttp://museum.php.net/から
  • 全バージョンをビルドするinstall-all-php.sh。Githubにあるよ

LT:クラウド対応型フレームワーク「Monocheros」(萩原崇之)

 Java系っぽい感じのWebアプリケーションフレームワークの発表でした。

  • GAE + Quercus環境で動作するフレームワーク
    • QuercusはmoriyosiさんがGAE対応
  • クラウド対応
    • 環境ごとのクセを吸収
  • プラガブル
    • いろいろな環境に対応
  • MVFCアプローチ
    • Wicked、Liftがヒント
    • MVACが基本(コントローラが中心)
  • F = Flow
    • アクセス制御
  • 今後
    • Ajax連係
    • Flow部分の実装

LT:PHP4の現状とセキュリティパッチサービス(大垣靖男)

 PHPセキュリティで知られる大垣さんの発表。今回は「仕事モード」と謳って、「PHP4ベースのシステムを使い続けるには、サポートサービスを契約してね、という話でした。

  • PHP4はまだ安全に使える!
  • サポート終了から1年
  • PHPって安全?
    • 危険なのは言語よりもアプリの問題
    • RailsとかDjangoとかも重大な脆弱性が発見されている
  • ただ、PHPは脆弱性の影響が大きい
    • 標準で多数の関数があるせい?
  • Security of the Monthで数々の問題点が洗い出された
    • 実は未修正も多い
  • RHはCVEしか対応してない
  • PHP 5への移行は大変
    • 「セキュリティ対策のためだけには割にあわない」
  • そこでPHPセキュリティパッチサービス
    • セキュリティパッチをバックポート

LT:初めてのPHP Extension(yokkuns)

 PHP Extension開発の解説…と思いきや最後に(笑)。

  • Zend APIでCとPHPの間を変換
  • zval構造体
    • typeにデータ型情報
  • Extension作成方法
    • 昔はext_skel
    • いまはCodeGen_PECL
  • 続きは次回(笑)

「4Gbpsを超えるWebサービス構築術」

4Gbpsを超えるWebサービス構築術
伊勢 幸一 池邉 智洋 栗原 由樹 山下 拓也 谷口 公一 井原 郁央
ソフトバンククリエイティブ
売り上げランキング: 181

 ライブドアのインフラ技術を、中の人たちが解説する本。ライブドアはWeb系のレイヤーを上から下まで扱っていて、そのへんが本書でバランスよく解説されていると思う。しかも、実例をいろいろちりばめて、一般化しすぎないあたりで具体的に説明しているのがいい。ちなみに本書では、「Catalyst」といえば、Webアプリケーションフレームワークではなく、Cisco社のスイッチだったりする。

 本書で扱っている範囲を、だいたい上のレイヤーから並べると以下のとおり。だいたいなので、上とか下とかは適当で。

  • 携帯コンテンツ対応(文字コード、画像、絵文字、メール、固有番号、セッション管理)
  • 検索エンジン(Lucene、Orchestra)
  • アプリケーションのプロファイリング(Devel::NYTProf)
  • オブジェクトキャッシング(memcached)
  • キューイング(Gearman、TheSchwartz)
  • リバースプロキシ、HTMLキャッシング(mod_proxy、mod_proxy_balancer、Squid)
  • DBの入力バッファテーブル(Blackholeエンジン)
  • DBチューニング
  • 分散ストレージ(WebDAV、独自RESTプロトコル)
  • 監視(Cacti)
  • L2/3ネットワーク(接続形式、ルーティングプロトコル、L3スイッチ、VLAN、AS番号、IPv6)

 ちなみに、ライブドアといえばFreeBSDのイメージがあったのだけど、本書によると最近はCentOSベースなんだとか(p.253)。へー。

「諸葛孔明」上・下

諸葛孔明〈上〉 (中公文庫)
陳 舜臣
中央公論社
売り上げランキング: 59227
諸葛孔明〈下〉 (中公文庫)
陳 舜臣
中央公論社
売り上げランキング: 80930
孔明はそこにしばらくたちどまり、頭脳に焼きつけるまでみつめた。

 この小説での孔明は、奇計を好まず、陣頭指揮に立つのは南征が初陣で、法家。かわりに、情報収集と根回しの様子を描く。「七擒七縦」「死せる孔明生ける仲達を走らす」といった伝説系エピソードで裏の真相を加えているのが面白い。

 ちなみに、本書で知ったのだけど、孔明は膝を抱えて思索する癖があった(といわれている)のだとか。

「関の弥太っぺ」

 リバイバル流行りとはいえ、股旅物の元祖である長谷川伸の作品がいま漫画化されるとは、びっくり。

 ストーリーのアレンジやキャラ遊びなども含めて、漫画としての見せかたがうまいなぁ。

 | HOME | 

Categories

Recent Entries

Recent Comments

Recent Trackbacks

Appendix

emasaka

emasaka

フリーター。
連絡先はこのへん

Monthly