All Your Bugs Are Belong To Ass

Hokkaido.pm #10 に行ってきたのでメモを晒したり感想をかいてみるよ!

8/31(土)に開催されたHokkaido.pm #10 に参加してきました!!

以前より参加したいなーという思いはあったのですがなかなか都合が付かず、これまではずるずると参加せずじまいでした。 今回関東から実際に参加してみて、「またいきたい!」と思わせるものでしたので、道内にお住まいのPerlに興味がある方はぜひ、次回以降参加するとよいと思います。

今回僕が発表に使ったスライドはこちら

懇親会では極端に飲みすぎて、気がついたら北広島の駅にいた、という大失態をやらかしたり、一緒に飲んでいたメタルなCPAN Authorの@itrysdさんの一言にじんわり来たり、onちゃんグッズを忘れて着払いで送っていただく等のイベント(?)も発生し、とても心に残る思い出となりました!

あと、こういう勉強会に参加するときはYAPCレポーターだったときのくせもあり、自分なりにザクザクッとしたメモをとっているのですが、折角なのでこれもほぼそのまま載せておきます。

レポートメモ

@jamadam - フォームバリデーションを自動化してみた

 field != validation rule
 formのDOM構造からValidation Ruleを自動化
 Mojolicious::Plugin::FormValidatorLazy
 HTML5で<input pattern="\d\d\d">のようにパターン指定したり、<input type="number">のような型指定をしたりできる
 問題点など
     JSバリバリのアプリでは役に立たない
     schemaの生成が高負荷
     Web Application Firewallという分野で既出か。
     session fixationの問題があるとの指摘がありました

@akiym - Perl meets ******* (Leap Motion)

 最近作ってるもの
     akictf - セキュリティ系のクイズを提供する
 Leap Motion
     次世代デバイス
     手のひら、細かく認識
     WebSocketでデータを取ってこれる
 Device::Leap
     とりあえずかいたっぽい
     モーションを取れない
     いけてない
 AnyEvent::LeapMotion をつくった
 OS Xでマウスを動かすモジュール Cocoa::GuiTestを作った。まだ不安定。
 まとめ
     PerlからLeap Motion
     Cocoaモジュール、まだすくない。
 github止まりモジュール5選
     Text::PicoTemplate - 変数のみサポート。置換よりは柔軟に。
     Text::Chinese::Numelize - 漢数字を数字に。正規表現で。
     Cocoa::NetworkChange - ネットワークが変更された時のトリガを提供。(OSX用)
     Iroh - Yet Another Teng (Iroha からaを引いた)
     WWW::FC2::Download::Video - www::なんとか::downloadシリーズ。うふふ動画ほしいれすw

@xtetsuji - イベント駆動とノンブロッキング

 後輩とAnyEvent::IRC::ClientとTwiggyの勉強をしていたとき、AE::timerなどとも連携してイベント駆動を実感。
 後輩「今作っているIRCBotが時折応答しなくなるんですが」
 ブロッキングとかノンブロッキングとかなんだ? - こっそりググる
 i/oブロッキング - ブロッキングの代表例、I/O。
 色々実験。AE::timerのcbでsleep 10; など。
 AnyEvent.pmを読む
     AnyEvent::Loop にwhile 1; があるはず・・・
         sub run { one_event while 1; }
     timesシステムコールをなるべく抑えるっぽい絶妙な仕組み
     効率化なのか、すごいリファレンス
     ビット演算
     読んで理解すれば充実感にひたれる?
 ここまでのまとめ
     イベント駆動=並列処理を実現するための手法の一つ
     他にはfork, threadなど
 イベント駆動ウェブサーバ
     C10K問題への対処
     NginxやPerl製各種webサーバの登場
     ApacheもEvent MPMを2.4から正式リリース。 - まだパフォーマンスがそこまで出ていない
 Apache Prefork MPMの頭打ち問題
 Nginx HTTP Perl Module
     mod_perl 1 の書法の影響が見られる
     HTTPに特化したもの
 N/W I/Oでとめないように気をつけるのは昨今の他のwebサーバと同様。 -> job queueへ依頼。
 ModPerl::PSGI - mod_perl2でかかれたPSGI実装
 URIのパースコストは結構高いケースがあったりする

@nekokak - Not Tech Talk 最近の取り組み

 前はエディタ、今はgmailとスプレッドシートがお友達
 スラングまじりの英語の学習
 fxxk fxxk ばっかかいてたら新卒に怒られる。
 共通技術基盤
     新規事業とかやって色々作る
     やっぱみんな同じとこで困っておなじように問題解決
     自分のチームで共通技術基盤チームをつくった
         自分たちで解決した問題を宣伝
         いろんなとこに首突っ込んで宣伝
         遺書にやってくれそうな別部署捕まえてすすめていく
         社内鉄区トークとかやってどういう取り組みをしているか宣伝
     そして生まれた - Baran (バラン)
         DeNA内のInfraに特化した内部共通モジュール群になった
         会社依存のない物はCPANモジュールにしたい(Baran::PushNotification など)
 新しい取り組み
     新規PJを始めるときは必ず新技術を取り入れるようにしてる
         nginx
         JSON-RPC Server Framework(Shiva)
         Auth Proxy Server(Vishnu)
         SOA化の推進
         JSON-RPCのmethod単位でplackup -> リクエスト数がメソッドによって異なるので用途ごとにスケールできるように
 マネージャになるときに思ったこと
     コードかきたくなることもあるが、本気でかいたらまけ
     一人で上げられる成果はたかが知れてる
 github止まりモジュール
     Komainu - fluentdにおきかえられt
     Class::Anon
     Data::Koyomi - NASAのデータAPI(月の運行データ)が必要
 PagerDuty
     アラート用のサービス。アラートメールを受けるようにしといて、誰も反応しなければ優先順に基づき電話がかかってくる。

@tokuhirom - CPANと私

 立場が変われば技術も変わる
     受託、納期・・・
 CPANモジュールの選び方
     他人のコードのおかげで動かないことは嫌い
 モジュールの客観的な選別手段
     更新日を見る
     CPANTestersの結果を見る
     t/が寂しいモジュールは使わない
     バグトラッカーへの登録数をみる
 作者による選別
     CPAN Authorsは個性にあふれすぎだが、くせがわかると割と何とかなる。
         ***は高速
         ***はテスト動かさない、インタフェース重厚
         ***さんのモジュールは実際には使ってない
         ***さんだから非互換の変更をする
         etc., etc...
     信頼の人たち
         gfx, dgolden, miyagawa, rjbs, makamaka ...
 速度
     メモリ消費量
 後方互換性
     最重要
     動いてたコードが動かなくなるのはすごく嫌
 結局他人にきくのが一番良い
     Twitter, Lingr, などなど。
 最終的には自分でメンテしてもいいな、というものを選ぶ。
 補足
     流行り廃り
     アーリーアダプターの穴掘りに付き合う必要なし
 実例
     アプリケーションサーバ
         Starlet good
         Twiggy good
         Starman catalystのサーバをplack向けにしたもの、Net::Serverベース。中身が追えない。
         FCGI bad - 中途半端でくせがある。
         CGI - まれに使う
         mod_perl - apacheつかってない
     オブジェクト指向関連
         Class::Accessor::Lite good
         Class::Accessor::Fast 
         Mouse good
         Moo 微妙だけどCPANモジュールかくのに使う。海外ではMouse嫌われてるようなので、Mooだとよい
         Moose bad
         AnyMoose bad
         今後はMOP::Redux
     CPAN インストーラ
         cpanm good
         cpanshell bad
         cpanplus bad
     ORM
         Teng good
         DBIx::Skinny コードが嫌い
         DBIx::Class Mooになって素直にメンテされてるが、使う理由が無い。どこでクエリが発行されてるのかわからなくなる
         Class::DBI bad
     日付関連
         Time::Piece good
         DateTime bad おもい。日付の計算の挙動がだめ
     JSON
         JSON::PP good 十分な速度
         JSON::XS good
         JSON.pm つかうなら上記いずれかを直接。
         Cpanel::JSON bad
         JSON::Any bad
 CPANモジュールの使い方
     plenv, cpanm, carton
     Linuxならsystem perlを使っても良い、が、-Dusethreadsなので速度遅い
     Perl-Build
         perl5 builder/installer
     PLENV_VERSION環境変数でもversion指定可能
 cpanmのはなし
     plenv install-cpanm
     インストールしなくても使える
     cpan とか perl -MCPAN -eshellとかやめたほうがいい
     cpanm -n Carton
 cartonのはなし
     cpanfileに依存関係をかいておく
     carton installで一通り入ってくれる。
     cpanfile.snapshotを元にlocal/を復元できる
 github止まりモジュール
     O/R Mapper-resultset
     PVIP Perl6パーサ
     Seis - Pwel5 is DSL for CPAN... Another DSL ? PERL6!
         Perl6 to Perl5 transpiler
         like coffee script
         内部的にautobox使っている。autoboxはパフォーマンス面でみても悪くない
     seis の demo

LT

 @aloelight - Plack::Middleware::Assets::RailsLike

 @techno_neko - PDLをつかってみよう

 @ytnobody - 天気関連のものやXML関連のものについて

 @irtysd - Guiter::Scale のはなし
Created at
by
ytnobody
Last modified at
2013-09-22 14:21
by
ytnobody