plackconにいってきました。
Plack/PSGIまわり、みんなどうしてるのかなーって。 以下殴り書きの敬称略で。 皆様お疲れ様でした。楽しかったです。
<<plackcon>>
http://atnd.org/events/45276
プログラム(予定) 内容・順番・時間などは予告なく変更する場合があります。
18:30 開場
19:00 諸注意など – @yappo
ダブル基調講演
19:00 TBD – @fujiwara
・なんだかんだでPSGIで本番している人は半分くらい。
・デーモナイズはdaemontoolsがやや多いが、返答のあいまいな人が多かった。
・PSGIの前に配置しているのはnginxがやや多い。apacheは少なめ。
・Server::Starterはワーカー数をgracefulで反映できない。シェルスクリプトにして渡す。
・ServerStatus::Liteでワーカー数などをモニタできる。
・rand、使うならforkした後。randの仕様。
POSIX::AtForkでフックしてごにょごにょする。
・Middleware::MemoryUsageでメモリリークをチェックする。重いので本番投入は注意。
・fujiwaraさんのgithubにP::M::GTop::ProcMemがある。
・いつものDevel::NYTProf
19:20 『How to build a High Performance PSGI/Plack Server』のその後 – @kazeburo
・YAPCのものはslideshareにあがってる。
・Monocerosの最近。
accept4をつかってシステムコールの回数を減らした。
PerlIO(:perlio)をいじった。
use open "IO" => "UNIX"
・ISUCON3
Starlet改造してる。githubにあるよ。
nginxはunix domainをサポート。Apacheはしてない。
デバッグしにくい?
・通常はアプリケーション側のコストが、Plack/PSGIレイヤーのコストを大幅に上回る。
サービスによって効果を発揮する(ゲーム・広告)時にPlack/PSGIレイヤーのチューニングが効く。
・Monocerosは keepalive がミソ?
上記のPlack/PSGIレイヤーのチューニングが効く、という場合にMonocerosが使えるってこと?
そもそもオレkeepaliveのことよくわかってねーし。
Monoceros使ってうれしいシチュエーションの質問をしたらkeepaliveの話が出た。
19:40 休憩
第二部
19:50 Plack::Requestとエンコーディング – @moznion
・文字コード判定してくれる。
・P::M::AutoDetectEncoding?? --> do not use
20:00 HTTP body parser 高速化の実践と解釈 – @tokuhirom
・/json でリクエストが送られてくるのが、実装の動機
・サーバサイドはjson apiと管理画面の実装がメイン
・json apiのルール決め
数個のルール
運用が楽
実装が楽
・404とか返さないで、200の空を返す。APIの成否だけを返す。
・監視
4xx, 5xxいっぱい出てたらアラーとを上げる。
・APIのバージョンとかURLで管理もできるけど、ヘッダーに入れて処理する。x-api-status
・リバプロでアプリケーションのレスポンスを判定してFluentdに出したり。
20:10 コマイMojoliciousの話20個くらい – @yusukebe
・みんなあんまり使ってない。80人中5人くらいw
・Mojolicious::Validator、は便利ではない??
・MojoliciousというネームスペースはWebにまつわること。
・Mojoは内部のこと?
・yusukebeはmojoコマンドでつくられたapp.plは捨ててる。
・morbo 開発用
・hypnotoad 本番用(ホットデプロイもできる)
yusukebeは使ってない。Starman使ってる。
・Mojo::BaseつかわずMouse使ってるみたい。
・「ojo」というのがある。
perl -Mojo -E hogehoge
・sessionしょぼい
key/value+secretでencodeしてCookieにぶっこんでる。
・YAPC2014やるって。
20:20 休憩
LT
20:30 TBD – @bayashi
Test::Fake::HTTPD でテスト?
P::M::DebugRequestParamsでQueryパラメータのデバッグできる。
P::M::Woothee
20:35 Plackで実装したHTTP-SMTPリレーサーバHainekoのその後 – @azumakuniyuki
bounchammerつくってる人(データホテルで使ってる。)
20:40 PSGI に直接対応したテンプレートエンジン – @hkoba
YATT::Lite
20:45 .psgiからの卒業 – @songmu
Orepan2::Server
Github::Hooks::Mnager
トリ
20:50 魔改造Amon2から学ぶポストモダンWAF(仮) – @tasukuchan
ガラケー・スマホ対応
複数アプリを1プロセスで。(負荷を平準化したい。)
設計の失敗。
Plack寄せ
きまぐれオレンジロード的なやつ。
最後 退館のしかたについて – @yappo
rbenvでrailsを入れる。
備忘録的に。すごく簡単。
git clone git://github.com/sstephenson/rbenv.git .rbenv git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build .bashrcに下記を追加 ## rbenv export PATH="$HOME/.rbenv/bin:$PATH" eval "$(rbenv init -)" [kw@dev ~]$ rbenv install -l [kw@dev ~]$ rbenv install 2.0.0-p247 [kw@dev ~]$ rbenv global 2.0.0-p247 [kw@dev ~]$ rbenv version 2.0.0-p247 (set by /home/kw/.rbenv/version) [kw@dev ~]$ ruby -v ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux] [kw@dev ~]$ which gem ~/.rbenv/shims/gem [kw@dev ~]$ gem install rails [kw@dev ~]$ rbenv rehash [kw@dev ~]$ which rails ~/.rbenv/shims/rails [kw@dev ~]$ rails -v Rails 4.0.0
Carton備忘録
Carton初めて触ったので備忘録
1.Cartonのインストール $ cpanm Carton 2.cpanfileに記述 cpanfileに記述 #requires 'Mojolicious', '== 3.89'; #requires 'Mojolicious', '>=3.89, <4.20'; #requires 'Mojolicious', '< 3.89'; requires 'Mojolicious', '==3.89'; 3.carton installでlocal以下にインストール cpanfile.snapshotにインストールされたモジュールの情報が記述される 4.carton exec -- perldoc -m Mojolicious localディレクトリ以下にインストールしたモジュールを利用するにはcarton execを使う 5.carton bundle vendorディレクトリにtarballを保存してくれる 6.carton install --cached vendorディレクトリからインストールしてくれる 7.carton install --deployment carton.snapshotを更新しない。 bundleしたソースをコミットしておけば、cpanサーバにソースがなくなっていて versionが微妙に違うものがインストールされてcarton.snapshotが変化するということもない? 8.carton list モジュールの確認 cpanfile, cpanfile.snapshot, vendorをコミットしておけばよし?
jQuery Mobileをいぢる
一通りのUIを知って使いこなしたかったので
サンプルをいろいろと真似てみました。http://www.kjwtnb.net/jquery_mobile/
jQuery Mobileは最近あまり聞かないのでだいぶ枯れた頃かと思う。iPhoneやAndroidのネイティブアプリを触ってみるのがどうしても面倒に思えてしまうのと、やっぱりしばりのすくないWEBがいいよなーという思いが原動力となってjQuery Mobileくらいまでは守備範囲でした。
Twitter Bootstrapをいぢる。
一通りAPIを知っておこうと思って
本家サイトを写経して作ってみた。 http://www.kjwtnb.net/twitter_bootstrap/
jQuery Mobileも一通り触ってAPIを覚えれば、UIの共通語も覚えることになるしデザインに対する抵抗も減るかなと思っている
AWSでEC2を使ってみた。
チュートリアルをやった。
EC2(Elastic Compute Cloud)のインスタンスを起動し、EBS(Elastic Block Store)でハードディスクをマウントする。AMI(Amazon Machine Imageだと思う)を作っておく。AMIを作ることで、インスタンスの起動を柔軟に実行することができる。固定IPの紐付け(Elastic IP)をする。 インスタンスの停止。固定IPの開放。料金確認。
Elasticってなんぞや
「柔軟」、「伸縮自在」とかいう意味らしい。エロスティックって覚えとけばイイよね!
ドキュメントとか
- http://aws.amazon.com/jp/documentation/ec2/
- http://aws.amazon.com/jp/aws-first-step/
- http://aws.amazon.com/jp/aws-jp-introduction/
- http://aws.amazon.com/jp/certification/
今すぐ必要というわけではないけれど、ちょっとずつでいいからノウハウを貯めていこうと思ってる。