北海道苫小牧市出身の初老PGが書くブログ

永遠のプログラマを夢見る、苫小牧市出身のおじさんのちらしの裏

今日はShibuya.pm #14の日です

Shibuya Perl Mongersテクニカルトーク#14 に参加してくるつもりです。なんでこんな流れになっているのか全然理解してないですが、頑張って本を読まずに空気を読んできます。

本日のイベント開催趣旨について / 竹迫さん

  • IPAJPAがブログ等で混同されている
  • 両団体に来て頂いている

Perl 6 Language Update / @dankogaiさん

  • Perl6(Rakudo*) で FizzBuzz
    • 三項演算子は??と!!
    • 2.67秒。Perl5より1,000倍くらい遅い。ただし、夏の版より改善されている。
  • Rukudoのビルドは、Perlとあまり変わらず、楽
  • sub の中に sub を書ける
    • スコープも正しく扱われる(外から見えない)
  • $^n プレースホルダ → 引数であることを宣言
  • 他の言語と違い、CATCH節はtryの中にある
  • 無名関数.exception で直接例外を得られる
  • 0..* → 無限リスト
    • 無限リストへの map の適用は、現状ではまだできない
  • ~~ any(<Fizz Buzz FizzBuzz>) → スマートマッチ
  • multi sub → マルチディスパッチ。オーバーロード
  • infix:<!> → 演算子の定義
  • Perl6のオブジェクト指向は、後付けではないのできれい
    • 書式はほとんど Moose や Mouse に移植されている
    • メソッド呼び出しは、ドット(.)
    • self という予約語が使える
    • .から始めると、オブジェクトの表記を省略可能
  • Grammer → 正規表現をさらに強力にしたもの
  • Perl6だと、 Combinatory Logic(組合せ論理) を楽に書ける
  • 質疑応答
    • Q. 後何分?
    • A. もうオーバーしてます。

ぼくのかんがえたさいきょうのYAPC::Asia / @941さん

  1. 会場がすごい
  2. スピーカーがすごい
  3. スピーカーがすごい2
  4. 協賛がすごい
  5. 景品がすごい
  6. チケットがすごい!
    • 完売していたが、再販決定!! (18時より再販中)
    • 数量限定なのでお早めに。「チケット買ってね」

JPA活動報告 / @lestrrat さん

  • 活動したこと
    • YAPC、地方ユーザグループで講演(Fukuoka, Hokkaido, Kansai, Okayama)
    • WEB+DBプレス監修(最低来年の2月まではやる)
    • セミナー、有料研修(Catalyst等)
  • やりたいこと
    • 新人向け教材 → 数社の協業による
    • 技術認定試験
    • 地方への講師派遣
    • 定期的な勉強会
    • 予算の拡大 → Tシャツ等販売や、寄付
    • 他のイベント・団体との連携
  • 財務状況
    • 18社が協賛、YAPC収入
    • 経費 → オフィス移転、YAPCなど
    • 個人会員 → 還元方法を検討中
  • まとめ
    • Tシャツを買いましょう

memcached injection / 佐名木さん

  • memchachedのプロトコルは、簡単なテキスト
    • キーがエスケープできない。ライブラリによってはエスケープ処理が未実装。アプリで実装が必要
  • さまざまな言語での実体
  • カラムに対するSQL Injection
    • パラメータを直接カラム名としているような場合
  • 「あそこは攻撃が大好き」

memcachedの運用監視ノウハウ / @kazeburoさん

  • mixiの障害 → memcachedが落ちた → Twitter で色んなエンジニアが原因究明
  • 障害によってわかったこと → memcachedの重要性
    • 安定稼働が焦点 → PDCA サイクル
  • 「監視は継続的なテスト」 by 奥一穂さん
    • 自動化し、それを可視化
  • memcachedの監視
    • プロセスの確認 → pgrepコマンドとその終了ステータス($?) + cronlog
    • 死活監視 → nc -z にて11211を確認 (-wでタイムアウト指定可能)
    • コマンドに対するレスポンス → Perlで "version\r\n" コマンドを投げて、結果が戻ってくるか
      • NagiosPlugin 形式にする → 終了ステータス 0, 1, 2, 3 を割り当てる。(標準出力は補足情報)
      • 接続ができない場合は、UNKNOWNとして扱う(コマンドのテストなので)
    • コネクション数 → "status"コマンドを使い、最大接続数に対する接続数の割合を監視
    • uptimeを監視する → 5分に1度確認、uptimeが310秒以下ならアラート
      • daemontoolsmemcached を立ち上げると、死んだ後すぐ立ち上がるために死活監視が失敗する可能性
  • まとめ

IPA特別企画「身につけておきたい、今そこにあるシステムの救命措置」

IPA(独立行政法人情報処理推進機構)特別企画の、パネルディスカッションです。司会は園田さんです。

  • 長期にわたって直してもらえない件がある
    • エスケープのミス・忘れなのに、直せないのは何故
    • 危険サイトとして公開すべき? → デスマの原因、業務妨害
  • 安全なウェブサイトの作り方
    • 仕分けの影響で有料に?
    • 新規案件向け。稼働中案件に適用しにくい
  • 「稼働中のシステムにセキュリティ対策をしたい」
    • どういうプロセスが現実的か
    • ネックはなんなのか (技術、予算、体制、顧客の理解)
  • Twitter のボットに呟かせるのはどうか (by dankogaiさん)
  • 公開するとすぐ攻撃の対象となる。IPAが情報を保護している
  • 1000日ルールはどうか? 1000日経つと公開するとか。
  • 脆弱性のあるサイトのうち、IPAが把握しているのは何割か
    • 割合が低いとすれば、IPAに発見されるのが不運と捉えられる
  • クローラ等で広範囲にスキャンをかけていくといい?
    • →サンプリングは合法なのか。難しい。
  • 「町を歩いて強盗に襲われた」ではなく「戸締まりをしようね」と思われるような対策がよい
  • 現状は報告を受けているだけなので、サンプリングはしていいのか?
    • IPAだからこそできるはず。個人だと難しい
    • IPAとしてはちょっと苦しい結論
  • はまちちゃんにチクる(by dankogaiさん)
  • 昔のコードはひどい。5,000行程度あったり。「メンテして下さい」と頼まれるのは辛過ぎる。
  • @kazuhoさんでもどうしようもないなら、しょうがないw
  • 一定以上の基準をパスすれば入れる保険、とかはあるのか?
    • 一時期はあった。今は聞かない。
    • そういう保健等があると、モチベーションとなる。リスクヘッジとして使えるので。
  • 社会調整的な動きしか方法がないのか。エスケープミスとかの防止方法は?
    • Xslateなどは、エスケープ処理が初めから入っている。互換性は高いが、完璧ではない
    • WEBブラウザ・HTMLの構造の問題。データとコードが混在しているために発生する
  • アプリ開発者だけでなく、ブラウザ開発者を交えた方がやりやすい
  • コードが受け渡しできなくなるのではないか?
    • 受け渡したとしても、実行できなければよい
  • 今までのブラウザは「なんでもあり」「なんでも実行」 → mozilla と MS に制限をかけるよう交渉?
  • 開発側ではなく、プラットホーム側でなんとかするとよいのか
  • IPAの報告がめんどくさい。報告が適切に来なかったりする。直接やり取りした方が早い方が多い。なんとかならないか
    • 実際、時間がかかっている。「DNS特需」がきっかけ。IPAを介すだけでなく、直接報告することも推奨する
  • IPAを経由すると報告者の保護ともなる。報告によって報告者が不利になる事例を知りたい
    • IPAから警察に通報したりはしない。ただし、IPAに報告しても発見者は擁護されない
    • 2003年11月に、カンファレンスで発表をしてしまって不正アクセス禁止法に引っかかって逮捕に至った事例がある
  • IPAに報告したらIPAが代理で説明をしていると思うが、それは大変なのか?
    • 最近はマシになったが、大変。なかなか正しい連絡先(技術部)に辿り着けない。(開発者がTwitterに出ていれば)Twitterに叶わない
  • 技術的な説明では大変なことはないか?
    • 相手による。理解できる・メンテできる人・会社が居ないパターンもある。
  • ブログパーツのようなクロスサイトだと、切り分けはどうしているのか?
  • 新しく出てくる用語が多過ぎて、追いつけない部分もある。啓蒙も必要か
    • WEBアプリケーションのセキュリティには、色んな要素がある。アプリだけでなくブラウザも関連する
  • ブラウザを作っている人に言わせれば、HTMLをきちんと作っていないのが悪い。
  • 責任の所在が不明確だが、被害を被るのはユーザ
  • ブラウザのプラグインは、変なものは作りにくくなって来ている。よくなってきている。
  • 萌えキャラはどうか? → 人形で失敗したことがあるw

Perl 1,2,3,4 の歴史 / @mad_pさん

  • 1,2 は知らないので、3くらいから
  • 元ネタ → perldoc perlhist、history.perl.com、モダンPerlの世界へようこそ、など
  • 黎明期(インタネット前)、普及期(CGI爆発)、発展期(WEBサービス、構造化)
  • Perl1 1987年 基本的な機能
  • Perl2 1988年 subの再帰、local, \d, \s
  • Perl3 pack, unpack, foreach, GPL, ユーザ定義サブルーチン(XSの前身)
  • Perl4 1991年 Camel Book の発売に合わせただけ。エンディアンの解説が有名!
    • if + 巨大な正規表現の最適か機能はPerl5ではなかった
    • format 機能, awkの代わり、oraperl
    • JPerl 2バイト文字の扱い
  • 1995年 CGIインタフェースの登場 → KENT・・・
  • Perl5 1994 オブジェクト指向、use, my, perldoc
    • Perl5の普及は遅かった・・・'99にPerl5が何かの紹介のトークがあった
    • DBIの登場、BioPerl
  • 1995年 CPAN解説。anonymous FTP
  • Perl本が大量に登場
  • コミュニティが盛んに。1999年、YAPC
  • 1998年 Perl Conference Japan, 2000年 Perl/Ruby Conference, YARPC19010
  • miyagawaさんにShibuya.pmを作らせたのはTokyo.pmの大きな業績w
  • これからのPerlは皆さんが作って下さい!

Android + Perl / @naoya_ito さん

  • SL4A Androidバイス上で、Perlや"PHP"を実行する
    • Android のネイティブAPIを呼べる
    • RPCで投げている
  • Android SDK を利用
  • emacsで書いて、adb pushで送り込む
  • Perlモジュール → いくつか組み込みの。Socket.pmは入っている
  • telnetがないので、echoクライアントも書く必要がある
  • Publicなサーバも作れる(Pythonで5分で遠隔カメラサーバを作ったり)
  • PerlからWebViewのコールバックを呼んだり
  • SL4A for PHPもあります
  • SL4A for 「PHP」もあります

Data::MessagePack / tokuhiromさん

  • バイナリの永続化フォーマット
  • PHP, Java, Perl, Haskell, C++・・・大体の言語で使える
  • 非常にデータが小さい
  • ストリーミングデシリアライザ。ネットワーク向き
  • 使い方 → pack, unpack
  • Storable に比べた利点 → 速い、他言語との交換、データが小さい
    • 欠点 → blessが使えない
  • JSON::XS に比べた利点 → ちょっと速い、データサイズが小さい
    • 欠点 → 人間が読めない(バイナリなので)
  • 最近のData::MessagePackの動向
    • Pure Perlサポート
    • 高速化

String::Filter 構造化テキストの正しいエスケープについて / @kazuho さん

  • Twitter事件 @の直後の文字のエスケープ
    • ツイートをHTML化するアルゴリズムの不具合
    • HTMLへの変換が複数会行われていた
  • 対策 → 設計をなんとかする
  • 正しい設計をするだけじゃなく、「XSSが起きにくい設計」をする
    1. Tweetをパースする
    2. 次にHTMLをエンコードする
  • パース処理は難しいかもしれないが、バグは起きてもXSSは発生しない

Perl Parser Hacks vol.2 - @__gfx__さん

  • 前回は perly.y をいじった
  • pluggable keyword の利用 (Perl 5.12.0より)
    • デモはトラブルのため中止...
    • 欠点 → 使いにくい
  • parse_fullstmt() API (Perl5.13.5) → parseして構文木を返せる
    • Void.pm ・・・もデモできず
  • 単位がステートメントで、荒い。
  • Method signeture の実装に使われるAPIなのかも → 5.14に期待!?
  • 次回予告 → YAPCではXslateの話します

おまけ

@mad_pさんに、新Perlの国へようこそへサインをして頂きました。10年以上使っていて思い入れのある本だったので、とても嬉しいです。ありがとうございました!

新Perlの国へようこそ―Perl5対応版 (Computer Todayライブラリ (34))
4781907954

*1:thanks to @__gfx__