旅行中にふらりと立ち寄ったので、内容をメモしておきます。
「今年の夏休みは...」 / @charsbarさん
- Hokkaido.pm 1周年おめでとう!
- Mojolisious のプリント配布どもです
- YAPCのネタを考えよう
- Game Development in Perl
- アメリカのYAPCのスライド
- Perlで書かれたゲーム Frozen Bubble、Zumbies
- SDL モジュール(SDLのラッパー)
- sdl.perl.org
- 国内の例だと、ニコニコ動画にある
- Rubyでは本も出ているくらいメジャー
- レイヤー、ネットワークなど
- Games-Sokoban
- なぜか Marc Lehmann作
- これを使ったSDLのSokoban のサンプルを作ってみた : デモ
- コントローラのソース
- Gameコンテストの作品の紹介
- 会場にYAPCに参加する人は割といるが発表する人が少ない
- GAMEは受けがいいので発表しやすい。作って発表してみてはいかが?
- Sokoban はレイヤとか使えばいいはず。何かあればアドバイス欲しい
- Q. 作ったゲームはどう配布できる?
- A. CPANで配布できる。SDLもそのまま入るはず(Windowsでも入った)
- Q. FrozenBubble のコードは何行ある?
- A. コメント入れて6000行くらい
mod_perl温故知新 〜 Perl CGIの高速化からメールサーバまで〜 / @xtetsujiさん
スライドはこちら。
- Apache + mod_perlを振り返って見る
- WAF、PSGI/Plack があればいらないのでは?
- 知っておいて損はない。Apache2上で動かすと不具合があったりもする
- Apacheは最も使われている。どんなディストリビューションにもある
- 大人の事情でApache+CGIな環境をメンテしなければならない必要がある
- Apache1.3 = mod_perl1, Apache2.x → mod_perl2
- mod_perl1.99 は歴史の遺物なので注意
- mod_perlの歴史
- mod_perl1 1996、mod_perl2 2002
- 枯れているので安心して使える
- CGI.pm は裏でmod_perlの面倒を見てくれている
- mod_perl1での書き方 → レスポンスハンドラ $r を処理
- $r->send_http_header, $r->print など
- mod_perl2での書き方 → 基本は一緒だが、APIが違う
- ディレクティブが PerlResponseHandler となるので注意
- $r->content_type, $r->print など。使うメソッドに合わせてuse も必要。
- モトモト巨大だった物を、名前空間を分けたため
- Apacheの内部処理
- リクエストサイクルに合わせて、PerlXXXHandlerのディレクティブがある
- mod_perlの実例 : mod_rewriteのリファクタリング
- mod_rewriteは黒魔術
- PerlTransHandler を使って mod_rewriteの仕事を書ける
- Tr->uri を変更するハンドラを作り、 PerlTransHandler RewriteURL のように仕掛ける
- OK ではなく DECLINED を返す (mod_rewriteに動いてもらうため)
- 体験談
- PerlPostReadRequestHandler → DDoS の遮断
- PerlTransHandler → mod_rewrite の代わり
- Access, Authen, Authz → 認証。PHPとかでも。
- PerlTypeHandler, PerlFixupHandler → MIMEを決める
- PerlResponseHandler → アフィリエイト
- PerlLogHandler
- Apache2ではHTTP意外の処理が書ける
- PerlProcessConnectionHandler でSMTPサーバを作る例
- qpsmtpd → Perlのメールサーバ
- 堅い
- Apache::Qpsmtpd もある
libperl++ / @lapis_twさん
- 焼き鳥のお代として発表 → 発表して欲しい人には焼き鳥をごちそうしよう
- PerlとC++ をバインディングするライブラリ
- libperl++ はPerlとC++をバインディング。
- うごかなかった!
- GCC4.6.1 をさくらVPSでビルド
- Boost → libperl++ ヘッダファイルのインクルードだけでOK、ビルドも必要だと1GB必要
- ここまではOK
- libperl++ の怪しさ
- ビルドしてみた
- 大量のエラー
- スコープがおかしい、C++の仕様に対してill-formedな記述
- TODO、XXX、FIXME の記述が大量
- ackを使って TODO、XXX、FIXMEを見てみた
- 対処法 → pull-req 送りましょう!
- Q. パッチは書ける状態?
- A. 送れるように対処中
- Q. パッチで直せるレベルの量なの?
- A. 微妙
- Q. XSでもC++はできるのでは?
- A. やろうと思えば出来るが、手続きがマジキチなので、それはちょっと。おとなしくXSでCを書いた方が・・・
エンジニアリング - 意識の共有 / @nekokakさん
スライドはコチラ。
- @akiymさんの推しのお陰で@typesterさんに勝った!(JPA推薦的な意味で)
- 何を話すベキか @yusukebeさんに聞いてみた
- 「なんでもいんじゃないですかねー」→ 失敗
- スピリチュアル的なエンジニアリングな話をしたい
- YAPC::Asia 2010の省サーバ運用のトーク → スピリチュアルな話に近かった
- カンファレンスに来る時点で基本意識が高い → シンクロニシティ
- 現状の振り返り、将来の指標
- カンファレンスは、情熱をもらうところ
- 発表後
- 色々な方と意見が一致した。感激のメールも受け取った
- 特別なことも難しい話もしていない
- みんなが感じていることを、どう表現するのかが重要
- Teng, DBIx::Skinny の話
- 作った物を使いたい → CPANモジュールを使えないプロジェクトはある
- 折り合いの付け方 → 自プロダクトにこだわりすぎないが、技術的な負債になる
- 「ドックフードを食べよ」
- 自分で作ったプロダクトを、自分で使うことが大事
- 有りモノで満足できるなら有りモノを使う、そうでなければ自分で作るか、すごい人に作ってもらう
- 旧暦のモジュールを@lestrratさんに「すごいねすごいね」といって作ってもらった
- 例えばDBIx::Connector
- 違和感があったので DBIx::Handler を作ってみた
- OreOreが通用するかの見極めが大事
- 尊敬するエンジニア
- 樋口さん
- HandlerSocket を使いたいと相談したら、InnoDBを勧められた
- 客観的に状況を判断できる
- @tokuhirom さん
- 凄いとんがってる。言ってることもやってることも豪快
- 仲間を大事にする
- エンジニア視点でビジネスを考えられる
- 監視業務へも積極的に参加
- 樋口さん
- 本当にそのプロダクトが最適か。検証が重要
- パフォーマンス、導入の難易度、運用方法
- ビジネス要件にも最適か
- 使ってみたいだけ、はNG
- 物を作るだけ、使うだけのエンジニアで終わらない
- リーマンプログラマも時には必要だが、兵隊の能力が高ければ可能性も膨らむ
- 全ては自分次第
- ステージはいくらでもある
- Hokkaido.pmでの発表、YAPC::Asiaでの発表
- 社内勉強会、学生勉強会
- nekokakさんの歴史
- 文系出身で2~3年はリーマンプログラマ
- WEB+DB のPerlHacker座談会記事*1 → Shibuya.pm → このままでは駄目だ
- CPANモジュールを漁る。紹介記事を書く。moduleを書く。
- 転職
- Shibuya.pmのLTへの応募(ここのハードルが高かった)
- YAPC::Asiaに応募
- DevOps
- 開発者と運用者の垣根を取り払おう
- 自社サービスで運用のことを考えてないのはまずい
- 自社サービスへの愛情が必要
- エンジニアとしての幅も広がる
- 開発者と運用者のコラボ
- インフラの人達の要件を聞き、一緒に必要な仕組みを作る
- YAPC::Asia2011 の応募が始まるので、手を挙げましょう
- いつも同じメンツが発表している → ニューフェイスが登場してもいいころ
- PerlHackersHub への寄稿 → JobQueue
- Yappoさんが主体
- 北海道からコミュニティを盛り上げる
- 北海道はいいところ。中心となって欲しい。
- Q. 今の構成は省サーバ運用か??
- Q. 今回はDevOpsの話だったが、WEBじゃない人とWEBの人をつなぐには?
- A. 昔あったのは、デザイナーさんと協力して作ったものがあったが、挫折した
- Q. 今年のYAPCで話す予定がありますか?
- A. 最近新しい話題がないので、逆に狙い目
テスト駆動開発 / @dont_cocoaさん
(MacBook Airを持ってきているのに、)iPad2で作った資料をiPad2で発表です!
- Perlは元々テストを大事にする言語
- PHPは嫌いだが、相当長くなるので懇親会で。Perlが好き。
- PHPが流行ってから、ちゃんとしたテストを知らないエンジニアが増えた
- TDDBC → TDDを実践する
- 1月に札幌で行われた。@t-wada さんが講師
- 5月に1.5、6月に2.0
- @t-wada さんより講義 → ペアプロ形式
- 2日目はレガシーコードと戦う
- TDDの基礎 : 仕様 → テストコード → FAILさせる → 実装 → PASS
- 実践例 : Personクラス、 walk, say, stop
- 先にテストを書く use_ok "Person"; → FAIL
- package Person; 1; のみを実装 → PASS
- new_ok Person → sub new { bless {}, shift}
- can_ok $p, Person → sub walk{}, sub stop{}, sub say{}
- is $p->say, "止まっています" → sub say {..実装..}
- 細かくテストを作成、実装を繰り返す
- 仕様変更「runメソッドの追加」 → 同様にテスト、実装
- 不具合への対処
- バグを再現するテストを書く → FAIL → 修正 → PASS
- 実践した感想
- テストを書きやすいコード = 見通しのよいコードを書くようになった
- 肯定の進捗を把握しやすくなった
- 作業量は変わっていない → 慣れるとコストが減る
- 品質が向上(ただし、これは副産物)
- Q. 正常系のテストは書けるけど、異常系はどうしますか?
- A. 品質のテストは意識していない。品質が必要な場合は、異常系のテストも居るだろう。切り分けて考える必要があるかも。
- Q. テストにコメントがあるといいのでは
- A. 急いで作った資料なので、ほんとはつけた方が
- Q. バージョン管理システムとの辛みは??
- A. バージョン管理、テスト、自動化、の3つが重要。@t-wada さん曰く、バージョン管理が重要かも
- Q. 成功したときだけコミットした方がいい
LT
Base64を再実装する / @akiymさん
@onagataniさんから、「高校生をアピールして下さい!」という指示が。スライドはこちらです。
道具の要らないHelloWorld / @koji**さん
スライドなしの気合いのLTでした!
- ノートパソコンなしでHello Worldなしで
- perl -e 'print "Hello world!"' と指で書いてみよう!
- 一行で書ける。初心者向け
- 初学者は、とりあえずいじってみるといい
- 「perl」はコマンドラインの知識が必要
- 「-e」はオプション。コマンドの動きを変えるもの
- --help、-v とかは自然と覚えられる
- いきなりGoogle先生に聞くより、手が動かして見ると?
- オチ: 今書いたhello worldは動かない → 理由を調べてみよう
- perldoc のドキュメントを読んだ方がいい