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

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

今日はYokohama.pm #9の日です

残念ながら横浜市民ではなくなりましたが、Yokohama.pm #9に参加しています。USTはこちら

myfinderさん - 転職して1年間(弱)やってきたこと

こちらのトークは、USTなしでした。

  • 自作サーバインフラ
    • 引継
    • ケーブリング修正
    • サーバが落ちる問題
  • WEB+DB PRESSの寄稿の計画 → 寄稿
  • MySQLのパフォーマンス改善 → 30分のトランザクションなど
  • web APIの整備
  • AWS
  • JPAスポンサー
  • YAPC::Asia 2012に
  • fluentd、TreasureData
  • 楽しいよ!

kanさん - use Smart::Options

  • Getopt::Long
    • 標準
    • 使い方がキモい
  • Getopt::Compat::WithCmd
    • けっこう複雑
  • opts
    • Smart::Argsをパクry
    • 型の変換
  • optimist(node.js)
    • 直感的、きっちりも使える
  • Smart::Options
    • ->parse を呼ぶとハッシュにまとめてくれる
    • ->boolean('y')などとして型を指定
    • ->alias 別名、 ->demand 必須、 ->default でフォルト値
    • dot notation は実装されてない
  • 展望
    • サブコマンド対応、DSL

Yappoさん - 10 Amon2 実践 Tips

  • perlbrewをそのままprojectに突っ込む
    • cartonは配布時にバージョン揃えるのには便利だけど、自社プロダクトには不要では
    • PERLBREW_ROOT 環境変数を指定して perlbrew init
    • buildのログはコミットしないように抜く
  • cpanmはラッパーかぶせて使う
    • 間違えてデフォルトのperlを使わないよう
  • plackup はdaemontoolsのrunファイルっぽいランチャーから使う
    • runファイルの方はこのランチャーを呼べば楽
  • batch用のconfigは元configを読んで少し書き換え
  • batchもランチャーから起動する
    • crontab でも嬉しい
  • 「カシュッ!!」
  • contextのbootstrapメソッドを呼んでおくとCLIとして使いやすい
  • Amon2::DBIは使わない
    • TengでもOK?
    • contextにdbhを取れるようメソッド生やす
    • FORCE_MASTERフィールドでマスタを呼ぶよう強制できるようにしておく
  • ログの処理はcontextに生やす
    • CLIでもWEB appでも使えるように
  • $cは引き回さない
    • ->context を呼べばよい
  • デフォルトで作られる *::Web の中身は早めにきれいにしておく
  • 次回のWEB+DB PressでAmon2の特集あるよ

nekoyaさん - インターネット広告とPerl、ここ数年の歩み

  • 広告枠 - SSP or ad server - adnetwork or DSP
    • 複数のシステムが連携している
    • Perlが使われている
  • Kauli - adnetwork + SSP
    • 日本初のRTB Kauli - FreakOut
  • SSP Supply Side Platform
    • 広告枠の最適化
    • 一般的にはRTB対応している(DSPが相手なので)
  • "50ms or die" VS "100ms or kill"
  • プレイヤーが多い → チャンス
  • 広告配信の特徴
    • 大量リクエスト (他所のサイトの分まで)
    • 高速レスポンス
    • 落とすとまずい (問題があったときに犬の写真を出しても許されない)
  • ふつうのことをふつうにやる
  • 検索システムと似ている → Googleを支える技術
  • 昔はJava、Cに向いた分野だった
    • ロジックが複雑になった
    • PHPだと遅くて厳しいのでは(newなど)
    • Perlが向いている
  • 2007年 → PHP、RAID1でコピー、sudo cpanDBI +DBD::mysql、Storable
  • 2008年 → PXE boot、Puppet、rsyncLVS、mod_perl2、Jocde.pm、DBIx::Class、tt
  • 2009年 → cobbler、capistranoLVS、nginx、starman、cronolog、daemontools、Any::MooseDBIx::Skinny
    • Mouseの出始めで安定してなかった
    • URI::Excape::XS
  • 2011年 → perlbrew、TokyoTyrant、Mouse、Text::Xslate、Object::Container
    • Mouseはlazyとdefaultが便利
  • 2012年 → 突然のPython
    • 社長がJavaPythonだった "代表者が使える言語を使う"
    • FreakOut社と人材競合しない
    • LVS、Redis、werkzeug
  • Pythonにも興味のある方の応募をお待ちしております

risouさん - "What Does Your Code Smell Like?"で学ぶPerl6

  • Larryのトークの内容を日本語で紹介
    • strand sortをPerl5からPerl6のCodeへ
  • シンタックスハイライトを変える
  • 引数の撮り方が変わる
  • 括弧を消せる
  • 全ての変数がリファレンス (@$は要らない)
  • 配列の添字に-1は使えない * - 1 whatever演算子
  • ^..^ 最初や最後の要素は省く
  • 見慣れないCode
    • infix: → 中値演算子を定義する。xxxx= という形でも使える
    • is rw → 通常はPerl6の変数は読み取り専用だけど
    • gather ... take → 遅延評価リスト
    • Inf → ∞
  • Perl5とPerl6は異なる言語
    • perl5でもPerl6::Gatherモジュールが使える

ikasam_aさん - As an Test Engineer

  • 1年やってたこと → Brownie、Perl Advent Test Track、QA Team
  • QA → 昔のイメージ「ポチポチ押す」
  • QAのミッション
    • プラットフォームエンジニアに対し、新しい機能開発のため、プラットフォームの品質を担保
  • QAの活動
    • プラットフォームの保証
    • 自動テストを書く
    • プラットフォームの品質を上げる
    • テスターではなく、テストエンジニア
  • 書いてるテストの内容
  • グレイボックステスト
    • モックなどは使わない。複雑なテストのため内部向けのデータを使う
  • 例: スマートフォンのゲーム
    • Amon2::Liteで書いたゲーム。Smartphone Emulated Browser
    • SEleniumのWebDriver
    • Capybara(ruby)を利用
  • 例: APIのテスト → ブラウザではなくHTTPでテスト。perlを利用。
  • 例: Developer Site → ブラウザ+Capybara(ruby)、Brownie(perl)
  • ポリシー
    • テストエンジニアはdeveloperである
    • グレイボックステストをする → コードへの理解。開発もできるスキル
    • テストコードの品質→Readable、Writable、Maintanable
  • まとめ「奥が深くて楽しい」(日本語)

LT

Csideさん - Modelより上のレイヤーのテスト
  • ロジックはモデル、コントローラからはModelを呼ぶ
  • fatコントローラだとモデルだけテストしてもしょうがない
  • コントローラのテスト → ページ変数、Mockが容易
    • 問題: WAFと密結合。WAFの実装が変わるとテストが壊れる
  • CPANモジュールを使う → Test::WWW::Mechanize、Plack::Test
  • 時間です!
  • JSないと動かないページ → Selenium
Songmuさん - 突然のMarkdown
  • Plack::App::Directory::Markdown
    • pad-markdown.pl → ディレクトリ内のマークダウンを閲覧するWEB app
    • --markdown_class の選択が可能 (Text::Markdown::Discount)
    • Plack::App::DataSectionを使い、_DATA_セクションにモジュールを突っ込んでる
  • Text::Markup::Any → 整形モジュールの差し替え
    • markupper "モジュール名";
bayashiさん - 小粒なユーティリティ書いたyo!
  • 「おねがいします」「もうすぐ1分」
  • mysqlコマンドの\G → App-YGコマンド。
    • httpdのエラーログを\G指定風に見やすく
    • -d
    • -n
    • -r
    • --digest
    • --match
    • --throwgh
    • .ygconfigファイル
  • 質疑応答
    • Q. YGって何の略?
    • A. Yen mark G
soh335さん - vim のはなし
  • 同じ行に({[があるとズレる
  • flymakeしたい
    • vim-watchdogs、Project::Libs
  • (今いるプロジェクトの)モジュールの補完
s.aska.orgさん - Dropbox Casual
xaicronさん - JSON Web Token Introduction
  • Googleとかで使っている
  • JWA、JWS、JWE → ドキュメントを読まないと
  • JWTはJWSとJWEのスーパーセット
  • Header、Payload、Signatureのどっと区切り。base64
  • JSON::WebTokenを書きました
    • JSON Encriptionには未対応
    • 詳細はZIGOROuさんに
Yusukebeさん -「横浜ラーメン紀行 横浜駅周辺編」
  • 判断基準 → 全ジャンル。うまい。雰囲気。
  • 5位: ゴル麺 → 藤沢の店の派生。二郎系っぽい
  • 4位: 一蘭 → 24h。飲んだ後に
  • 3位: 浜虎 → モロヘイヤラーメン。ヒップホップ
  • 2位: 中島家 → 家系。レタス。味は濃い
  • 1位: 麺や維新 → 今日食べてくるくらい美味い。ユズ塩。鳥チャーシュー
  • 選評: 吉村屋は並ぶ。二郎ない*1。ハンズの隣の油そばも。

懇親会

号令方式。43人。提供はDeNAさんでした。

*1:関内にあるよ