ワタクシは横浜人ですので。
Perl でモンテカルロ法 〜最強の○×ゲームエンジン開発〜(jukuin2000さん)
- モンテカルロ法の説明
- 乱数と確率を使う -
扇形の面積を求めるデモモンテカルロ法と扇形の面積の公式を元に、πの値を求めるデモ
- 乱数と確率を使う -
- 人工知能の歴史
- 次に打つ手でシミュレートし、勝つ確率がもっとも高い手を選ぶ
- ○×ゲームで、この手法を実演
- モンテカルロ法の利点
- ゲーム特有の戦略(必勝法)が全く不要
- 作成者より強いプログラム、ゲームに詳しくない人でも書ける
- どんなゲームでも、ルールと終了条件だけ知ってれば後はひたすらシミュレーションするだけ
- ゲーム特有の戦略(必勝法)が全く不要
- モンテカルロ法が向いてないもの
- 将棋 → ランダムに打つと、終局しない(シミュレーションを終えにくい)
- Q. モンテカルロ法が一番進んでる分野は?
- A. ゲームのAIから入ってるので、モンテカルロ法自体には詳しくない
- Q. 後半に行くほど、シミュレーションが少なくなるので、早くなるのか?
- A. そう。ただし、実際は100万回全てをいきなりやるのではなく、有望な10万手だけを存続するような方法で高速化できる
TPF-J(仮) (lestrratさん)
- Shibuya.pm見てた人ばかりなので、さっくりとw
- サポートされていると言うアピール
- The Perl Foundation(米国) は、利用者ではなくPerl開発者のサポート
- 学生+ビジネスを囲い込む
- Perlの4つの指針
- Life Hack Tool
- ログとか、Webスクレイプとか、現実の業務
- 第2言語
- 別の言語やってる人もにもツールとして使ってもらう
- システム管理
- 半歩先の技術
- クラウドコンピューティングとかBusiness Process Managemetn Serviceとか
- Life Hack Tool
- やること
- 出張講師、研修
- YAPC運営
- Summer of Code(インターンみたいの)
- 野良プロジェクトのスポンサ
- 技術者認定試験
- リソースの整備(ドキュメント類)
- 会費
- 法人50万くらい? 個人5000円、学生無料
- 予定会員 -> ドワンゴも?w
- 組織形態: NPO法人では寄付だけなので辛い→一般社団法人*1
- (法人)会員募集中 → Perlな人材を送ったりできますよ!
ライブコーディング (typesterさん)
時間オーバーしたものの、これは面白かったです。vimEmacs*2とCatalystをここまで使いこなせたら、生産性もさぞかし高いでしょうねえ。
- Catalystでwiki作るよ!
- 名前は Yokohama.pmなんでYiki
- pmsetupで雛形
- gitへ放り込む
- 01_module.tから作る
- テストを書くってよりも使用イメージを固める
- File::Temp::tempdirを利用 → テストに便利
- APIをだらだら書いてみる
- $yiki->pages
- $yiki->page('title');
- $yiki->new_page('title');
- $yiki->content('this is content');
- $yiki->save($page);
- $yiki->render();
- それぞれ、どんな結果になるかを書いて、そのままテストにしてしまう
- proveでテスト実行 → 失敗する。ちょっとずつテストを通してく
- newで失敗 →use Moose
- pagesで失敗 → pagesメソッドの実装。
- MooseX::Types::Path::Class を利用 (Fileオブジェクト見たいなの)
- corceしとく
- data_dirフィールド と data_ext フィールド
- ディレクトリのファイル名を舐めて、拡張子を外して返す
- pageで失敗 → pageの実装
- タイトルに拡張しつけて取り出す・・・戻り値はYiki::Pageクラス
- ・・・あれ、テスト通らない → isとok間違えてたっぽい
- new_pagesがない → new_pagesの実装
- Yuki::Pageクラスを作成 (titleとcontentを持つだけ)
- saveがない → saveの実装
- ページのタイトルと拡張子でファイルを保存
- テストがこけた? → テスト名をつけてなかったので、ちょっと混乱
- rendar失敗 => 最後rendarの実装
- Text::Markdownを利用 = テキストをHTML化
- モジュール側完成!! → gitにコミット
- シンボリックリンクでCatalystを騙して、Yikiディレクトリの下にYiki::Webというモジュール群を作る
- 終わったらシンボリックリンクを消す
- Plugin::ConfigLoader, Lightyを利用
- helperとか言う名前のscript/create.plのエリアスを使ってるみたい
- Catalyst::Model::Adaptor の利用 (Yikiモジュールがモデルとして使えるようになる)
- モデル側に手を入れて、yamlを簡単にする
- :Chained、
:PathPath、:CaptureArgs、:PathPart、:Args*3 - pageをロードできるようにして、完成?
- typo → detachをdetashとしてた
- typo → :PathPartだったらしいw
- テンプレを作成
- editページを作成 (フォーム作って、コントローラに処理追加)
- 終了
ここからLTですよー。
webサービスかモジュールのなんか(仮)Perl Meets Music(bayashiさん)
- FIMML + JSMML テキストで音楽を鳴らせる
- Perlはテキストなら作れる
- 入力文字を文字種で分割し、音楽コードに変更
- 利用モジュール
- Music::Scales : 構成音を得る
- Music::Chord::Namer : 構成音からコード名
- Music::Chord::Note : コードから構成音
- 結論: 音楽をもっと学ばないと
TheSchwartzの拡張 (masartzさん)
- TheSchwartzの利用目的 : NWで分離されてたり、負荷が大きかったり
- 問題が色々
- Reload → workerプロセスはうごきっぱだから
- TheSchwartz::Worker::Plugin::ModuleReload
- Parallel - ジョブを作る度にplファイル作るの嫌だ
- Parallerl::Prefork
- Log → errorテーブルにインサートしかされない。ファイルに出せるようにした
- Manager → Reload, Parallel, Log をまとめて生やせるWorkerのベース
- PreData を今後やりたい
- まとめ: 全体的に他力。今後はCodeReposで
ここまでLTでしたー。
疲れたアナタにメソッド☆キャッシュド(bonnuさん)
- たんぽぽ開発グループ所属(たんぽぽ的な作業を無くすらしい)
- 前提: キャッシュ=Cache::Memchached::Fast、O/Rマッパは使ってない
- キャッシュが使われるシーン → 頻繁なアクセスがあるとこは全部
- 回数が多い(名前とか誕生日)
- マイ**シィ判定は、"$id1-$id2"と言うキーにLINKEDを入れて表す。$id1と$id2はソート
- クエリが複雑で高負荷(誕生日の人一覧とか見える日記一覧とか)
- レコードまるごとキャッシュ
- キャッシュしたいものの格納方法とかタイミング、全部バラバラ
- これまではキャッシュクラスを利用
- 巨大なクラスで、モデルをラップしている
- 悪いところ: 巨大過ぎ。影響でかい
- 新しい方法 → 中央集権をやめる
- Method::Cached
- attribute でキャッシュを指定
- ドメイン単位で、キャッシュクラスを指定
- すでにAttribute::Cachedってのがあったらしい
- TODO: まだ間違いがある、ドキュメントとか、キャッシュの有効期限に関数リファレンスとか
泣く子も黙るRPC(piarraさん)
Offline Webapp(ZIGOROUさん)
- Perlじゃないです!ニッチです。
- DOM Storage (IE8, Fx2, Fx3, Safari4 で対応)
- localStorage → ずっと残る
- sessionStorage → ブラウザ閉じると消える。windowごと
- 値を追加したり削除するとDOMイベントが発生
- Cookieとの違い
- 時間は指定不可
- 容量が多い
- Ex DOM Storage (IE6と7でのDOMStorage実装) 今日の話のメイン
- DHTML Behaavior 任意の要素にイベントハンドラを追加できる仕組み
- userData Behavior : IEにデフォルトでつくクライアントサイドストレージ
- ライフサイクル的には用途に合う
- keyの列挙がうまく行かないので、JSONで保存
- ロックがうまくいかない
- HTC(HTML Component Behavior)
- <script>要素によって、localStorageとsessionStorageを表現する
- 問題点
- storageイベントが、異なるwindowにうまく共有されない
- まとめ: DOM Storageがもうすぐクロスブラウザな技術になるよ!!
鹿(Yappoさん)
DBIx::Skinny (nekokakさん)
- DBIx::Skinny 超薄いO/Rマッパ
- DBIC便利だけど、もっとLiteに柔軟に
- DBI直接だと、inflate、utf8flag
- SQLで検索、条件指定で検索、resultsetっぽいのとか
- 問題
- SQL::Parserでパースしてるが、SQL::Parserの機能が弱い
- SQLのBNFを利用してパーサ作る?? → id:ZIGOROUさん
- 速度では、Data::Modelがダントツ(Yappoさん++)