LOCAL DEVELOPER DAY '09 /Winter

予告どおり、北海道行ってきたよ!


スタッフの方々、本当にお疲れ様です。
LOCAL | Leading Organization of Community Activity for LOCAL
LOCAL DEVELOPER DAY '09 /Winter で喋ります! - kazuhisya::備忘録的な何か



あと今回使った資料。
MogileFSについてだべりました。


沢山書きたいことがあるけど、多すぎてなにから順番に書いて良いかまとまらないw
一言で表すと、北海道最高過ぎです。


…と言うことで、メモった講演内容だけを淡々と貼り付けときます。
誤字・脱字とか抜けてる所も沢山あるけどキニシナイ。勢い大事。


2009/02/14 LDD@北海道

PHP IPv6の実際 小山さん

1.PHP IPv6プログラミング

  • 2010〜11あたりで枯渇
    • キャリアグレードNAT → ユーザーにはプライベートが割り当てられる?
    • 多段NAT厄介
  • v4とv6の違い
    • アドレス長が違う
    • インターフェース1に対して、v6は複数のアドレスが前提
  • v6対応とは?
    • v4,v6両方対応すること
    • OS系は結構対応済み(XPはオプション、Vistaからは実はv6がデフォ)
  • ホスト名→アドレス
  • API変更
    • なぜ必要?
      • 複数の情報が返ってくる可能性
  • mod_php/CGI
    • ネットワーク自体は、httpdが対応してれば面倒見てくれる
  • httpdに頼れない場合
    • 自前で用意しないといけない
  • PHPのネットワークIO
    • streamモデル
      • ソケットを直接使わなくても、ネットワーク入出力ができる
      • → gettaddrinfoを用いて、セオリー通りに
  • ext/sockets
    • socketそのままのAPI
    • 一応対応。v4,v6を明示的に指定する必要がある
    • → フォールバックができない。片手落ち。
  • DNS Query
    • dns_get_record
      • AAAAも含めてすべてのレコードがとれる
    • gethostbyname
      • 一応v6対応、OS依存Windowsのみ
  • 標準クステンションは?
    • SOARP
      • Streamの上で動いているのでOK
    • FTP
      • 問題なし
  • PEAR::Net_IPv6
    • Compress、Uncompress、CheckIPv6
  • PEAR::Net_Soket、pops、IMAPSMTP、HTTP_Request、Server、DNSなどなど。
  • まとめ
    • PHPは結構ちゃんとIPv6対応してる感じ。
    • 解析系はクラスがまだまだたりない
    • マルチキャスト/エニーキャストの考慮はない(あんまPHPでは使わんからおk)

2.PHP 5.3.0

  • 次期メジャー
  • 5.0以来の大拡張
  • 2009/01/29 Beta1
  • 基本的には5.2は下位互換
  • 名前空間
    • NameSpace
    • 5.0で入りかけたけど、中止になったアレ。
    • 6.0からのバックポート
    • 名前空間の区切り文字 → \ バックスラ
    • ファイルシステムよろしく、\で区切って使う
    • 定数や変数、現在の名前空間にない場合、グローバルに見に行く

Q&A

  • これからPHPで作るときは、v6を意識すべきか?
    • 腹のくくり方しだいかな?

Moongift 中津川さん

  • Moongiftについて
    • 業務
      • Blogで食ってくのは無理
      • Webサイトプロデュース、コンサル
      • Moongiftは窓口的に
    • 情報収集
      • 基本方針
        • ・情報は発信元に集まってくる
        • ・淡々と。暮れ盆正月も。
        • ・作った人は偉い。何者よりもえらい。
    • 情報源
      • RSSフィード97%
        • 購読フィード:68
          • ソフトウェア関係:40
          • 日本語フィード:1桁くらい?
          • Fastreaferで
      • お勧め
        • OpenSourcePHP
        • Ghacks
        • delicious.comのタグ「opensore」
      • 大事なこと
        • 情報を咀嚼して、特徴を捉えて役立つ知識にすること
      • なので
        • Moongiftみてくれ
          • → 記事は必ずインストールしてから書く
      • 一日の作業量
        • 3記事、45分
        • 一記事750文字くらい
        • お昼までに作業は終わる。
      • ネタの数
        • 一日20個くらいPickUp
        • うち、数個「下記やそうなもの」を選ぶ
      • これまでの記事の扱い
        • たいてい覚えている
      • 一週間の統計
        • 3万5千字くらい
      • そのほか
        • Aptana Studio(IDE) → AptanaCloud
        • SigmaVisualAjaxGUIBuilder
        • TypePublish CMS
        • InDefero(GoogleCodeライクなプロジェクト管理 Git,SVN,CVSほか)
      • 作業環境
      • 実行環境
      • おまけ
        • こんなPHPはいやだ
          • regisre-global=on
          • エンコードiso
          • display_errors=off
          • マニアックなExtension
          • パスワード明記なし!
        • DB周り
          • OPマッパー。DBラッパー使ってるのに、初期設定SQLファイルはMySQL専用とか

PostgreSQL SQL入門 SELECT 石田さん

  • ソフトウェア
    • 「どのように」を書く
    • 書いたとおりに動く
  • SQL
    • 「なにがほしいか」を書く
    • どのように取り出すかは、RDBMSが考えてくれる
  • RDBMSとは
    • おおざっぱに言うと、テーブルの集まり
      • テーブルとは
  • Select
    • SELECT * FROM hoge ;
      • * はすべての値
      • ポイント:SELECT文を発行して、かえって来た形も「テーブル」の形
      • SELECT hoge, fuga -> カラム
      • FROM table-- -> テーブルの様なもの
      • WHERE foo=bar- -> 各行に対して真偽を返すスカラー式(trueの時だけ結果を返す Nullの場合もある)
      • 式の評価順序
      • From → Where → Group by → Having → Order by → Offset/Limit

モダンなモバイルWeb開発 id:Yudoufuさん

モダンなモバイルWeb開発って

  • gdgdコードをライブラリとかで吸収しようよ
  • サポート対象を考える
    • キャリアとか世代とか
    • Docomo/au/SoftBank
    • 2Gと3G
      • 2G → move、WAP1.0、3GC以前
      • 「3キャリア、3Gのみ」がリーズナブル
  • キャリア/機種判定
    • 基本的にhttpヘッダかなら取得
      • 中には条件付も
    • キャリア/機種名
    • 画面サイズ
    • 端末(ユーザ)固有ID
    • どうとるか
      • Net_userAgent_Mobile
        • 超定番
        • 注意点
          • Docomoは画面サイズ情報を返さないので、自前のDBが必要
  • HTMLテンプレート
    • モバイルのHTML
      • XHTML/CSSの悩み
        • Docomo
          • 仕様が特殊 HTTPヘッダーに宣言が必須
          • 独自仕様大杉、外部CSSも使えない
        • どうするか
          • HTML_CSS_Mobile
  • 開発に便利なツール
    • FireMobileSimulator -> FireFox Add-on
    • これとLiveHTTPHeaderの組み合わせ最強
  • まとめ
    • 3キャリア・3Gサポートのみで行く
      • サービスしだいだけど。
    • 端末情報取得は定番、Net_UserAgent_mobile
    • テンプレート共通化はHTML_CSS_Mobile
    • ツールうまく使おう

Web開発者が知っておくべきセキュリティ対策 大垣さん

  • もっとも簡単なセキュリティ対策
    • 守るべきものを持たない!
      • カード情報とか
    • 脆弱性を作らない
    • 脆弱性を直す
  • なぜセキュリティ対策が必要か?
    • 守るべきものがある
    • たとえば、車。リスク<メリットになる場合
  • セキュリティ問題とは
    • セキュリティCIA
      • Confidentiality:機密性
      • Integrity:完全性
      • Availability:可用性
  • CVE
    • Common Vulnerability and Exposure
    • MITREが公開しているセキュリティ情報
    • 数値化:CVSS(10.0とか最強にヤヴァイ)
  • コンピューターセキュリティの研究
  • 現在のセキュリティ上の脅威/攻撃目標
    • PCのボット化
      • 踏み台とか
    • アカウントを取得
      • 特徴:攻撃する目的が明確。完全な犯罪者。
          • 自分が被害を直接受けなくても、誰かが受けてる可能性
    • 攻撃ものっそい儲かる。億単位。
      • RMT半年でうん千万、オークション・クレカ億単位
    • どれくらい危険?
      • WinXPの場合
        • ネットに接続したままセットアップする → 数分でマイルウェアに感染
      • 0dayか0dayに限りなく近い攻撃
        • パッチは速攻当てるべき
      • MD5 hashは簡単
        • MD5で完全ランダムだとしても、ほぼ100%抜けられる
  • トランスバウンダリ
    • 信用の境界線
      • 信用できるのは、自分の書いたコードのみ
      • SQLliteとかヤヴァイ。数字型のカラムに文字列入ったりするとか。
      • バリデーション処理超重要
      • 確実でない場合は、疑う
  • ネットワーク環境の問題
    • ネットワークの盗聴はかなり簡単
      • 無線LAN:WEP,WPA+TKLPとか超楽勝で突破される
    • DNSはキャッシュ汚染に対応できない
  • まとめ
    • 守る側が圧倒的に不利。攻撃者は1箇所のセキュリティホールがあれば十二分。
    • RSS:「セキュリティメモ」くらは読んどけ

php openpear riafさん

  • PEARに登録するまで
    • PEARのルールに則ってコードを記述
    • アカウントを取得
    • ライブラリと共に提案
    • 問題がなければ、投票
    • PEAR開発メンバーが票を入れる(マイナス投票あり)
    • で、3〜5票があつまればOK
    • …と、非常にメンドイ
    • → ライブラリ、情報の分散
    • つまり
      • PHPが書けて
      • Subversionが使えて
      • ブラウザが使えれば
      • PEAR開発ができる
  • 目指すところ
    • とにかく間口を広げたい
    • PHP開発者はもっともっとたくさんいるはず
    • PEARより素敵なライブラリ作者はいるはず
    • もっと表に出そうよ
    • これから
      • サーバ移転
        • さくら確保しました
      • ユーザ同士をつなげる
        • Follow機能的なもの
      • わかりにくすぎるUIを改善
      • カテゴライズとか
      • APIリファレンス自動生成
      • ドキュメント管理
      • プロジェクトごとにフォーラム
      • チケットシステム
      • 国際化(内部では既に部分的に対応)
      • Gitなどとの連携
      • openpear自体も、openにしちゃうかな?

PostgreSQL8.4 板垣さん


PostgreSQL8.4春リリース予定(4,5月くらい)

  • 大規模/高性能
    • 表分割(アップグレード)
    • 表分割は継承とCHECK制約の組み合わせで実現していた
      • CHECK制約の判定をパーティションだけに限定
      • パーティショニングに無関係のクエリは判定を免除
        • EXEUTE USING
      • パーティションが増減してもINSERTトリガを変更不要
    • ディスク先読み
      • ffective_io_concurrency
      • ビットマプヒープスキャンの場合のみでしか今のところ早くならない
      • → 1つのSQLで中程度の行を高速化
      • リカバリの高速化。しかもログサイズも少ないパターンでも高速
        • 最大7倍
    • 論理リストアの高速化
      • pg_restoreにマルチスレッドでリストアで行うオプションが追加された
      • パラレルリストア
        • CPUリソースを活用できる
  • 応用編
    • WITH/WITHRECURSIVE構文
    • ツリー:親のIDを指定してその子孫をすべて取得、とか
    • WITH句はSQL中にループ処理チックなものが使える
    • Window関数
      • 表を区間ごとに集計
      • GROUP BYとは異なり、行はまとめられない
        • row_number(),rank(),lag(),lead()などなど
        • 連番付与とか、上位n%をとる、今処理している行の1個前をとる
  • 互換性/移植性の向上
    • 8.2以前のバージョンとの互換性UP
      • 文字列との自動キャストを再定義可能
    • 他のDBMSからの移植性
    • 別名のASが不要になった
    • DISTINCTとGROUP BYが同じ速度になった
  • 運用管理
    • 稼動統計ビュー追加
      • SQLの実行時間回数と回数
      • ・関数の実行時間と回数
        • 両方とも
          • リアルタイムに集計可能
          • 性能劣化は3%くらい
          • HTMLレポートはない
            • SQL履歴ビューを使うときは再起動が必要
    • VACUUMの扱いが容易になった
      • Visibility Mapの追加
        • ガベージ位置を追跡し、VACUMの負荷低下+時間短縮
      • FreeSpaceMapのメモリ割り当てが自動化
        • 管理が楽になった
      • ちなみにHOTとの関連は?
        • HOT → 単にごみを減らすだけだし、競合はしない
  • 外部ツール
    • pgtune
      • 利用ハードウェアにあわせてパラメータによって設定を自動チューニングしてくれる
    • pg_reog
      • オンライン再編成
        • テーブルを再編成し、断面化を解消
        • 再編成処理も参照/更新処理をブロックしないことが特徴
          • VACUUM不足による肥大化からもサービスをとめずに回復
  • まとめ
    • 大規模/高性能
    • 応用編
    • 運用管理
    • 外部ツール
    • 「痒いところに手が届く」リリースになりそう
    • 8.5次のバージョンで、ホットスタンバイ、同期レプリケーション実装予定
    • イメージ的にはDRBDに近い感じ
    • これ、来年

keyword:LOCAL DEVELOPER DAY