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ってなんぞや

「柔軟」、「伸縮自在」とかいう意味らしい。エロスティックって覚えとけばイイよね!

ドキュメントとか

今すぐ必要というわけではないけれど、ちょっとずつでいいからノウハウを貯めていこうと思ってる。