Archive for 7 月, 2008
[php]大規模パッケージソフトウェアとPHP - PHPカンファレンス2008
大規模パッケージソフトウェアとPHP
- 自己紹介
- ガルーン2とは?
- Webグループウェア
- 300人以上の中大規模向け
- サーバー構成によって1万人以上も可能
- CyDE2フレームワーク
- 1200画面、2500テンプレート、4500ファイル、開発者:日本人10人・ベトナム人4~5人
- スケーラビリティ
- サーバー構成を自由に決められる
- 国際版開発中
- PHPとガルーン2
- 簡単インストール
- httpd.confを開かせたら負けだと思っている
- Webサーバ自動検出
- デプロイメント標準化
- 独自SAPIで実行可能
- Webサーバに設定不要
- Webサーバを選ばない
- etc..
- PHP拡張
- パフォーマンス必要ならCで書く
- 日付・時刻
- AES暗号
- XMlパーサ、CVSパーサ
- ライセンス処理
- パフォーマンス必要ならCで書く
- スケジューリングサービス
- 登録されたイベントを定期的に実行
- Windowsで使えるcron
- PHPからコントロールできるcron
- セキュリティ
- ホワイトリスト方式のXSS対策
- escape modifierを自動で埋め込む
- escapeしないときは{$value|grn_no_escape}
- サニタイズって言わない
- CSRFリスト
- アクションリスト
- 簡単インストール
- 国際化アーキテクチャ
- 日付・時刻
- ローカルタイムゾーンに変換
- Unixタイムスタンプと日付オブジェクトを相互変換
- サマータイムを考慮
- ローケル
- ローケルごとのリソースファイル
- 現在のローケルはDBから取得
- テンプレートジェネレータ(PHP)
- 負荷軽減
- デベロップメントモード
- リソース管理ツール
- 日付・時刻
- まとめ
- 簡単インストール
- デプロイ標準化
- セキュリティ対策の負荷軽減
- 実用的な国際化アーキテクチャ
- スケジューリングサービス
- cydn.cybozu.co.jp
[php]楽天におけるPHPの過去・現在・未来 - PHPカンファレンス2008
楽天におけるPHPの過去・現在・未来
- 自己紹介
- 安藤祐介
- 楽天(3年間くらい)
- CakePHP
- 安藤祐介
- よくわかる楽天
- イーグルス
- 楽天市場
- 11期目
- 1706人、連結3527人
- 楽天食堂はタダ
- Matzフェロー
- 楽天の開発体制
- 社内対応(ハードとソフトを両方社内でできる)
- データセンター構築・設計
- サーバ構築・管理
- アプリケーション開発
- 機器台数
- 6000台
- 「Sun 事例 楽天」で検索
- 「Oracle 楽天とラベル」で検索
- トラヒック
- 5年間で50倍
- 8.6Gbps
- OSS
- ハイブリッドに
- OSS
- 商用
- 各種サーバ製品
- 使用プロダクト
- PHP
- Tomcat
- Ruby
- MySQL/Senna商用
- Apache/Linux
- 利用の留意点
- 十分な検証
- セキュリティ面は継続監視
- 必要ならパッチも作る
- 外部から技術協力も
- 「藤本真樹 楽天」で検索
- ハイブリッドに
- 規模の指標
- アプリケーション数:PHPだけで150以上
- サーバー台数:800台以上
- PV:5000万PV/日
- 開発者人数:1000人以上のエンジニア
- 社内対応(ハードとソフトを両方社内でできる)
- アーキテクチャ
- 黎明期(2000年頃)
- PHP3
- 手軽
- Web機能
- 当時のエンジニアが持ち込む
- PHP3から4へ
- 作り替える
- 作りまくる
- PV上昇とともに負荷増大
- 試行錯誤
- 対応
- safe_mode
- Smarty/PEAR
- SlaveDB
- I/O処理チューニング
- PHP3
- 独自フレームワーク期(2003年頃)
- 標準化の開始
- プロジェクト構造がばらばら
- 社内で車輪の再開発
- 運用コスト徐々に増える
- 楽天GORA
- Mojavi似フレームワークを採用
- 種々の負荷対策
- 10名以上の平行開発
- 標準化の開始
- フレームワーク期(PHP4、2005年頃)
- Mojavi導入
- コードジェネレータの開発
- APC導入
- PHP4での開発スタイルの確立
- 新卒エンジニアの採用
- DB,ロジック周りは未整備
- Mojavi導入
- フレームワーク期(PHP5、2006年頃)
- symfony
- 社内標準
- Mojavi似
- スケルトン生成
- 事例
- Infoseekメール
- 課題
- 高機能
- 学習コスト、高
- Propelは様子見(使っていない)
- プラグインで各所対応
- 小さいサービスには大げさ
- CakePHP
- いくつかのサービスで試験導入
- 学習コスト、低
- ノウハウがたまたまあった(笑
- 軽量
- 事例
- お気に入りブックマークモバイル版
- 課題
- 大規模開発はどうなのか
- ライブラリが未整備
- 資産の兼ね合い
- Railsとの兼ね合い
- symfony
- 黎明期(2000年頃)
[php]PHPで作るぐるなび - PHPカンファレンス2008
PHPで作るぐるなび
- ぐるなび事業
- 1996/6
- (株)NKB
- 一部事業
- 2000/2
- (株)ぐるなび
- 掲載件数(2008/3)
- 50万件
- うち、詳細情報6万2千件以上
- アクセス数(ぐるなび事業連結)
- 7億2千万[PV/月]
- 会員数580万人
- PHP
- ほぼすべてのコンテンツに使用
- 1996/6
- システムの話
- 飲食店情報検索システム
- 第1世代(~2002)
- 管理UI:なし
- 店舗データ:Excel
- 店舗詳細:静的HTML(手作り)
- 検索システム:dbf
- 検索UI:Delphi
- サーバ:Windows+IIS
- 第2世代(~2004、全面リニューアル)
- 管理UI:PHP
- 店舗データ:PostgreSQL
- 店舗詳細:静的HTML(CMS)
- 検索システム:PostgreSQL
- 検索UI:PHP
- サーバ:Linux+Apache
- 第3世代(~2007)
- 管理UI:PHP
- 店舗データ:PostgreSQL
- 店舗詳細:静的HTML(CMS)
- 検索システム:MySQL/全文検索
- 検索UI:PHP
- サーバ:Linux+Apache
- 第4世代(2007~)
- 管理UI:PHP
- 店舗データ:Oracle/XML
- 店舗詳細:静的HTML(CMS)
- 検索システム:MySQL/全文検索
- 検索UI:PHP
- サーバ:Linux+Apache
- 第1世代(~2002)
- なぜPHP
- 動的スクリプト言語
- フロントエンドの軽量な実装
- 日本語の取り扱い
- 導入コスト低い
- セキュリティが心配
- 社内セキュリティセミナー
- 外部にセキュリティ調査を依頼
- php.ini
-
- recomment+alpha
- 内部エンコード:UTF-8
- ライブラリ
- PEAR
- Smarty
- Webサーバ構成
- (省略)
- 性能面
- Webサーバーをスケールアウトしやすい構成にする
- 検索エンジンやデータベースのパフォーマンスアップに注力
- 飲食店情報検索システム
- 今後の展望
- 課題
- PHP5
- 未だに1割しか導入していない
- 縦割り実装
- リファクタリングベースに移行
- 共通ライブラリ
- 基本ライブラリの充実
- ビジネスロジックの共通化
- Zend Framework
- マルチバイト系の処理が不安なので独自に改良を加える
- SimpleXML
- 直感的にデータアクセスできる
- 共通エンジン
- ベースモジュールの選定
- (ex)ぐるなびのSNSエンジンの場合
- OpenPNEを拡張
- PHP5
- 国際化
- 日本発、世界へ
- 上海・北京
- 当初Java開発
- 中国はPHPエンジニアよりJavaエンジニアのほうが多い
- 結局PHP開発
- 日本語版開発からfork
- 進行中
- 日本発、世界へ
- 課題
[Linux]confgureでC++ preprocessor “/lib/cpp” fails sanity check
Tripwireをソースコードからインストールするためにconfigureしようとしたら、
Bash:
-
configure: error: no acceptable C compiler found in $PATH
あれ?gccがないのかな?と思って、
Bash:
-
yum -y install gcc
でインストールしたら、やっぱりなかったみたい。無事にインストールされて、再びconfigureすると、
Bash:
-
configure: error: C++ preprocessor "/lib/cpp" fails sanity check
ぇ?インストールしたのに!!こういうときは、エラー文をGoogleに丸投げ【`・ω・´】ノ ゚ ポイ
ありました!
Nix::WebLab: configure: error: C++ preprocessor "/lib/cpp" fails sanity check
どうやら、gccにはC++コンパイラが当然含まれているものだと勘違いしていた俺。別途インストールなのか!
ってなわけで、
Bash:
-
yum -y install gcc-c++
でC++を入れて、三度目の正直っ。configureしたら、無事に通りましたとさ。
[php]基調講演 - PHPカンファレンス2008
※私が遅れて来たので、最初のほうはわかりません。またメモしか取れていません。
基調講演
- PHP 5.3
- mysqlnd
- MySQLのPHP用ネイティブドライバ
- 詳細はMySQL :: MySQL native driver for PHP - mysqlnd
- 名前空間
- namespace
- get_class()関数の戻り値が変わるので注意
- ラムダ関数・クロージャ
- コールバック関数などの一時的な利用に
- レキシカル変数が使用可能に
- ブロック内でのみ有効な変数
- useキーワード
- ext/intl
- Unicodeネイティブ対応の大本のライブラリ
- IBMのICUライブラリをベースにしている
- mbstringの機能(文字コード、文字列処理、mailなど)は現時点では未サポート
- Late Static Binding
- 実行時にスタティックイベントを処理
- (ex)ActiveRecordを正しく実装できる
- 下位互換性はない
- 実行時にスタティックイベントを処理
- 文法の拡張
- ?:演算子
- A ?: B
- if (A) then A else B と同じ
- (cf) A ? B : C (三項演算子)
- NOWDOC
- 変数を展開しないヒアドキュメント
- goto文
- 正しく使えば二重for文などをしっかりと抜けられる
- Dynamic Static Call
- ?:演算子
- mysqlnd
- PEAR 2
- PHP 5.3/6系をターゲットとする
- アーカイブ
- phar (PHP Archiver)
- インストーラ
- Pyrus


