nazolabo

フリーランスのWebエンジニアが近況や思ったことを発信しています。

LOCAL DEVELOPER DAY '09 /Winterレポート

MogileFSの話(原さん)

  • 飛行機遅れてちゃんと聞けなかった…

IPv6の話(koyhogeさん)

  • そろそろIPv4なくなるよ
  • IPv4とv6の違い
    • アドレス長が違う
    • 1つのデバイスに複数のアドレスがつく
  • IPv6対応=v4でもv6でも動くようにする
  • OS側はほぼ対応済
  • APIに従ったアプリケーションなら大丈夫
  • mod_phpやCGIのようなものではPHP自体はIPv6とか気にする必要はない
  • fsockopenとかfile_get_contentsとかは問題ない
  • socket拡張を使うと自前で処理する必要がある
  • PEARとか使えばいいんじゃないの
  • ext/soapはOK
  • PEAR::NET_IPv6は機能不足
  • PEAR::Net_SocketはOK
    • だが途中にIPv4のための回りくどいコードがある
  • PEAR::Net_POP3/NET_IMAP/NET_SMTP/HTTP_RequestあたりはOK
  • PEAR::NET_Serverはsocket拡張を直接使っているので×
  • PEAR::NET_DNSはRR Typeを指定すればOK
  • 全体的にそこそこ対応されている
  • IPv6アドレスの解析は不十分
  • マルチキャスト/エニーキャストは考慮されていないけど使わないよね

PHP5.3の話(koyhogeさん)

  • PHP6の機能が全部来てしまってカオス
  • 5.2のコードは全部動く
  • namespaceの話
    • \←きもーい
    • ::は解決できない問題が
    • 1ファイルに複数のnamespaceを書いてもOK
    • {}で囲んでもOK
    • グローバル空間を指定するには頭に\をつければOK
      • でも書かないと勝手にグローバルを調べてくれるよ
      • クラス名だけは駄目
    • 可変クラス名もいける
    • useでimport
      • asで別名を付けれる
    • namespaceのネストは不可
    • useは必ずグローバルからになるが、newとかは現在の名前空間に影響される
    • 既存のライブラリはどうしようもない

MOONGIFTの中の人の話

  • 画像ネタが多いプレゼン
  • 80万PV
  • 仕事でOSSを使ってシステム構築をしてた→情報が集まってるし公開してみよう
  • 3件/日くらい
  • ユーザからの投稿はあまりない
  • 最初はlivedoorブログでやってた
  • ブログだけで食っていくのは無理
    • なので別の仕事がメイン
    • MOONGIFTは宣伝窓口
  • 情報は発信しないと集まらない
  • 毎日更新するのが大事
  • 作った人は偉い
  • 微妙なものも紹介するけどインスピレーションとかに繋がればいいんじゃない
  • ほとんどRSSから情報収集
  • 68フィードくらいしか読んでない(うちソフトウェア関係が40)
    • ほとんど英語の
  • Fastladderで読んでる
  • http://open.srcphp.com/とか
  • http://www.ghacks.net/とか
  • やっぱSBMが便利(del.icio.usのopensourceタグとか)
  • ただ紹介するだけでは意味がない
    • ちゃんと自分で理解しないといけない
    • できるだけ試してから記事にする
  • たまに自作ソフトウェアも紹介
  • 1時間半〜2時間
    • 記事だけなら45分くらい
    • 午前中に終わらせる
  • 1日大体10〜20くらいのネタがあるが、そこから書きやすいのを選んで書く
    • 時々数ヶ月後に発掘される
  • 昔に書いたものは大体覚えてる
  • バージョンアップのネタまでは無理
  • 2008年に話題になったPHPソフトウェア
    • Concrete5(CMS)
    • Deki Wiki(Wiki)
    • ClickHeart(HeatMap)
    • OpenX(元OpenAds)
    • USVN(SVN管理)
  • 最近紹介した便利そうなの
    • Aptana Studio(これ自体はIDE)
      • PHPをクラウド環境で実行するようなサービスがある(EC2より安い)
    • Sigma Visual Ajax GUI Builder(AjaxDnDで作成)
    • TypePublish CMS(企業ポータル向けCMS)
    • InDefero(プロジェクト管理)
  • 良かったこと
    • いろいろ
  • 悪かったこと
  • PHPは3から使ってる
  • こんなPHPソフトウェアは嫌だ
    • register_globals=On(未だにある)
    • ISO-8859直書き
    • Ajax文字化け
    • 日本語URL使えない(Wikiとかで)
    • display_errors=off
    • よくわからんExtensionとかライブラリとか
    • パスワードがわからない
    • O/Rマッパーとか使ってるのに初期設定はMySQL専用とか
    • SQLファイル多すぎ
    • データベース作成が前提とか
    • インストール手順ほしい
    • UTF-8使ってほしい
  • http://tatsuj.in/よろしく

初級者向けSQL入門〜SELECT、その魅力〜(id:iakioさん)

  • 普通のプログラムとSQLの違い
    • 普通のプログラム:書いた通りに動く
    • SQL:何がほしいかを書く
      • どうやって動いてるの?
  • RDBMSはテーブルの集まり
    • テーブルは行と列で構成されている
    • それぞれはスカラー値の集合
  • SELECT文はテーブルみたいなものからテーブルみたいなものを取り出す
    • テーブルをSELECTして取得したのもまたテーブルである
  • FROM→WHERE→SELECT
  • WHERE句には各行に対して真偽を返すスカラー値を書く
    • TRUEの行だけ取得される
  • NULLはTRUEでもFALSEでもない
    • 1+NULL=NULL
    • NULL IS NULL=TRUE
    • col=0でNULの行は来ない
  • WHERE句に書けるものはターゲットリストにも書ける
  • GROUP BY
    • グループに対して集約関数
    • ターゲットリストにはGROUP BYした列、集約関数、定数しか書けない(普通は)
    • GROUP BYした後にWHERE=HAVING
  • サブクエリ
    • FROM句で:SELECTの結果は表なので同じように扱うことができる
    • IN/EXISTS:スカラー値を返す
    • 1行1列だけ返すサブクエリはスカラー値として扱うことができる
  • FROM→WHERE→GROUP BY→HAVING→ORDER BY→OFFSET/LIMIT

モダンなモバイル開発(ゆどうふさん)

  • 資料
  • DoCoMo/SoftBank/auは必須
  • ほとんど3G
  • 3キャリア・3Gのみが楽
  • キャリア機種判定
    • HTTPヘッダから大体とれる
    • 主にUserAgent
    • 画面サイズとかもDoCoMo以外は飛んでくる
    • 端末ID
    • Net_UserAgent_Mobile
      • 定番
      • これだけでほとんど足りる
      • guid=onまではつけてくれない
      • 昔と違ってsingletonが実装された
      • VodafoneSoftBank
      • Net_UserAgent_Mobile_DoCoMo_ScreenInfo←手書き
  • HTML
    • キャリアでばらばら
    • XHTML/CSSが使えるようになった
      • でもばらばら
    • DoCoMoはHTTPヘッダにapplication/xhtml+xmlが必須
    • DoCoMoはインラインCSSしか使えない←このままだと3キャリア共通で外部CSSが使えない
    • auはCSSの子孫セレクタが使えない
    • SoftBankは文字サイズの拡縮が残念なことが
    • HTML_CSS_Mobile
      • DoCoMoの場合は外部CSSを展開
      • キャリア毎にCSSを切り替え=HTMLテンプレートは共通化
  • 絵文字と文字コード
  • エミュレータ(シミュレータ)
    • moxy/ssb
    • 公式のはいまいち
    • HTMLは実機確認するしかない
    • FireMobileSimulator
      • LiveHTTPHeadersと組み合わせれば大体足りる
  • パスワードログインとか最初から実装しないこともある

セキュリティの話(大垣さん)

  • もっとも簡単なセキュリティ対策=守るべきものを持たない
  • 基本的な対策=脆弱性を作らない、直す
  • なぜセキュリティ対策が必要か
    • 守るべき物があると安全性の確保が必要になる
  • COSOフレームワーク
  • セキュリティ問題=適切な行動を取ることによる、事故または故意に基づく行為からデータ・資源を守ること
  • セキュリティのCIA=機密性、完全性、可用性
    • 機密性=権限を持った人だけアクセスできる
    • 完全性=情報処理及び処理方法が正確であることを保護すること
    • 可用性=許可された利用者が必要なときに情報及び資産にアクセスできること
  • セキュリティ標準=ISMS
    • 他にもPマーク、PCI DSS、ITIL、COBIT、COSO Control Frameworkなど
  • CVE=脆弱性の統一番号
  • CVSS=脆弱性の危険度
  • 1970年代からセキュリティの研究は行われていた
  • 現在の脅威
    • 不正プログラム
    • 情報漏洩
    • 情報改ざん
    • DDoS
  • 攻撃目標
    • PCのBOT化(乗っ取り)
    • アカウント取得
  • 金銭被害が出る
  • 年を追う毎により危険になっているのではないか
  • 0day攻撃
  • パスワードとかどのサイトでも同じのを使ってる人とか
  • MD5の全データの逆引きをDB化とか今のHDD容量なら余裕
  • YouTubeにいろいろクラック動画がある
  • 攻撃側が一方的に有利
  • OWASP TOP 10
  • SANS TOP 20
  • 自分の書いたプログラム以外信用するな
  • HTTPSだからと言って安全ではない
  • NoScript使おう

openpear(riafさん)

  • openpear
    • 誰でも参加可能
    • svn+PEAR
    • ブラウザ上でパッケージング
  • 何故作った
    • 本家はパッケージ数少なすぎ
    • コミッタも少なすぎ
    • 本家は面倒なこと多すぎ
    • ライブラリが分散してしまう
  • きっかけは昨年
    • PHPユーザー会でPEARチャンネル作りましょうー
    • すすんでない
    • つくった
  • 2008/11リリース
  • 登録ライブラリもそこそこ増えてきたよ
  • openpearのしくみ
  • これから
    • ユーザー同士のFollow機能みたいなのも作りたい
    • タグ付けとか
    • APIリファレンスとか
    • ドキュメントとか
    • フォーラムとか
    • 国際化とか
    • チケットシステムとか
    • gitと連携とか
    • openpear自体をopenに
  • rhacoってライブラリがアツいらしい←超重要

PostgreSQL 8.4 Update(板垣さん)

  • 8.4は2009年Q1リリース予定
  • 8.0系は機能拡張がメイン
  • テーブルパーティショニングの簡略化
    • constraint_exclusion=partition
      • 今まではON/OFFしかなかった
      • CHECK制約の判定をパーティションだけに限定
    • EXECUTE USING in PL/pgSQL
      • 今まではINSERTのトリガで自前で分散テーブルに書き込み
      • IFの羅列で各テーブルへの書き込みを書かなくても動的にINSERTトリガを生成
  • ディスク先読み
    • effective_io_concurrency
      • Bitmap Heap Scanしか速くならない
      • リカバリはそこそこ速くなる(full_page_writes=off)
      • Windowsでは動かない(posix_fadvise(WILLNEED))
    • リカバリはどのくらい
      • ログのサイズも小さくなって高速
      • full_page_writes=offが怖ければpglesslogを(ただし使い方が面倒)
  • 論理リストア高速化
    • pg_restoreでマルチスレッドでリストア
      • -m, --multi-thread=[number-of-threads]
    • パラレルリストア
  • WITH(WITH RECURSIVE)句
    • 再帰クエリ
    • ツリー構造の子孫を全て取得とかが簡単に
    • ループ処理ができる
  • Window関数
    • 表を区間ごとに集計する
    • 行をまとめることはできない(GROUP BYとは違う)
    • ランキングとか
  • 互換性/移植性
    • 8.2→8.3でキャストが厳格化して動かなくなることが
    • キャストを再定義(INOUT)
    • 列の別名でASが不要に
    • DISTINCT高速化
    • PG/pgSQLにCASE構文
  • SQL履歴ビュー
    • shared_preload_libraries='pg_stat_statements'
    • prepared statementを使う必要がある
  • VACUUM
    • UPDATE=新規行を複製して古いのを削除
    • 8.4でVisibility Mapの追加
      • ガベージ位置を追跡してピンポイントで削除
    • Free Space Mapのメモリ割り当てが自動化
    • HOT
  • デッドロックログ
  • pgtune
    • 自動初期チューニング
    • postgresql.confを環境情報から勝手にチューニングしてくれる
  • pg_reorg
    • テーブルを再編成し、断片化を解消
    • 処理中も運用可能
    • ディスク容量を使う
  • 8.4は「痒いところに手が届く」リリース
  • 日本人の開発者多い

LT

  • メモ忘れた…