nDiki : PSGI

PSGI: Perl Web Server Gateway Interface

2011年10月15日 (土)

YAPC::Asia Tokyo 2011 2日目

@kazuho → @kazeburo → @nekokak → @hiratara → @comewalk → @aloelight → @sartak → @Yappo → LT → @hidek → @lestrrat

雨大丈夫かなーと思って家を出たら、いきなりザーザーで折り畳み傘をさしたものの、ちょっと濡れたかなって感じで、着替え調達を口実に昨日ちょっと欲しいなと思った Perl T シャツを買ったんだけれど、そのあとは雨はあがりましたとか。

トーク

続 Unix Programming with Perl Kazuho Oku

IPC::Open3 の話とか。

運用しやすいWebアプリケーションの構築方法 masahiro nagano

過去 Log::Log4perl とかをチョイスしていたけど、より Log::Minimal の方が手軽そうでいいな。

watch your log nekokak

DevOps なお話。

開発と運用のコミュニケーション大切。開発だけれど障害出ると「ヤバい俺か?」といつもビビる。

Monads in Perl Masahiro Honma

モナド。

今までスルーしてたので参考になった。「Perl でモナドってみた」については理解するのに良いけど、(Perl において)プラクティカルかというと微妙だなという第一印象。まだ掘り下げて学ぶ必要あり。

Evolution of API With Blogging Takatsugu Shigeta

Blog をとりまく今までの歴史など。

少人数でのWebアプリ開発 - CGIからPSGIまでの変遷 aloelight

私的開発スタイルの変遷について。

DTrace: printf debugging for seventh-level wizards sartak

DTrace で何かごにょごにょやってた。

Perl Hackers Hub の舞台裏 Kazuhiro Osawa

スピーカーが一方的に話すだけではない YAPC らしいセッションを試みるなど、チャレンジングな良いトーク。

LT

いろいろ。

Managing A Band Of Hackers Hideo Kimura

マネージメント視点での話。他に無いトークで良かった。 DeNA にもってかれた。

Closing Daisuke Maki

時間もおしてたので、マキで。

トークとしては、やはり聞いてる自分が「お、これは自分でもやってみたいな」とか「ここに生かせるな」と思えるものが印象に残るし満足感が高いね。ここは落とし穴だから注意ねとか、ハマッたのでこんな工夫してみたよとかも引きこまれる。

逆に Perl 的な話だったとしてもモジュールの羅列紹介とかだとちょっと退屈。

内容レベル的には、浅すぎず、後半だんだん高度な話になってきたところでギリギリついていけるぐらいがいいかなと。

以上はもし自分がトークする立場になった時の参考用のメモ。

YAPC::Asia Tokyo 2012 もぜひ開催を!

[ 10月15日全て ]

2013年9月20日 (金)

YAPC::Asia Tokyo 2013 1日目

image:/nDiki/Flickr/9831010525.jpg

YAPC::Asia Tokyo 2013 オープニング(941 @941 氏 藤原洋記念ホール)

いよいよ YAPC::Asia Tokyo 2013 スタート!

今回は席に電源があるので安心してノート PC・スマートフォンを使えるので嬉しい。 Wi-Fi がつながっても DHCP で アドレスがもらえなくて通信できなかったりすることがあるのでちょっと注意。いったいどれだけ接続してるんでしょうね。これだけ geek の集まる会場で Wi-Fi 環境整えるの相当ノウハウがいるのだろうなあ。

Postcards from the Edge: The State of Perl 5 Development (Ricardo Signes @rjbs 氏 藤原洋記念ホール)

Perl の今後の機能追加・変更(experimental features)についての話。まだまだ Perl 5 は Perl 5 のまま変わっていくと。便利になったり直観に反するものが減ったりとか良くなっていく。シンタックス/セマンティクスがさらに肥大化していくのは初学者にはちょっと厳しくなるのな。

この話につきものの互換性の話もあった。去年のスピーカー互換性を大事にするという話だったけれど、今回は互換性を恐れずに改良していくというニュアンスに感じられた(聞き間違えでなければ)。個人的には Perl は古いスクリプトがそのまま動くのがとてもいいと思っているので、そのあたりも引き続き大事にされると嬉しいな。

PSGI/Plack・Monocerosで学ぶハイパフォーマンスWebアプリケーションサーバの作り方 (Masahiro Nagano @kazeburo 氏 藤原洋記念ホール)

LINE株式会社では mod_perl から PSGI/Plack にほぼ移行済みとのこと。Starlet を使っている。

今回はリバースプロキシとアプリケーションサーバ間の大量のリクエストを捌くために Monoceros を開発しているというお話。あと PSGI/Plack の基本概念の解説もあって嬉しい。 Perl で書かれた HTTP サーバがハイパフォーマンス出せるなんて、昔は自分は考えもしなかった。

PSGI/Plack のサーバを書く人必見な、中身の濃いトークでした。

Perl and Riak - 分散データストア Riak を Perl から "爆速" で使うために - (Tatsuro Hisamori @myfinder 氏 藤原洋記念ホール)

RTB システムに Riak を使ってみたというトーク。良い Perl モジュールが無いので作ったとのこと。

大規模Perl初心者研修を支える技術 (Daisuke Tamada @tamaclaw 氏 藤原洋記念ホール)

DeNA の Perl エンジニア初心者研修プロジェクトについて。Class::Data::Inheritable がコードリーディング教材とし良いらしい。

SPDY、HTTP/2.0の使い方 (takesako @takesako 氏 藤原洋記念ホール)

高速化されたプロトコルの話かなと思っていたけれど、ドヤリングから暗号化という導入で引き込んでいく手慣れたトーク。本格的に使われ始めるのは来年以降?

昼休み

たまにお名前が話題にあがることのあった @bonar 氏と初対面のご挨拶をさせていただきました。今後ともよろしくお願いします。

Perl 談議 (@lapis25 氏 タリーズコーヒー 慶應日吉店)

社内の Perl 技術動向について談議。最近は解き放たれてきたねとか。

僕の考えたFuture Perl (Tokuhiro Matsuno @tokuhirom 氏 藤原洋記念ホール)

Perl 6 の話など。

Build Your Own Exobrain (Paul Fenwick @pjf 氏 藤原洋記念ホール)

Google 翻訳を使ったキュートなスライド(ほとんど聞いてなかった)。

Lightning Talks Day 1 (藤原洋記念ホール)

@kazuho 氏の prove のトークで始まって、最後日本人による中国語(のような違うような)でのトークでシメ。

YAPC::Asia Tokyo 2013 懇親会 (イベントホール)

乾杯。

1日目その他

多目的教室3は常に人気で入ろうとしたけど1度も入れなかった。部屋遠しが近いので人気なトークがあるとさっと集るのかもね。

そういえば今年の T シャツ、背中に pixiv って大きく書かれていて着用できないものだということに気がついた。残念。 ピクシブが T シャツスポンサーだからなのかな。スポンサーのおかげで運営ができたりチケット代が抑えられたりできていると思うので素晴しいと思うのだけれど T シャツについては有無でチケット代が違うので、大きく広告が載りますよってチケット発売時に明記してくれるといいと思う(自分は先行販売で買ったので T シャツの有無は選べないから関係なかったけど)。

[ 9月20日全て ]

2013年9月21日 (土)

YAPC::Asia Tokyo 2013 2日目

rimage:/nDiki/Flickr/9845809256.jpg

Mojoliciousでつくる!Webアプリ入門 (Yusuke Wada @yusukebe 氏 藤原洋記念ホール)

Mojolicious に限らず Web アプリケーション開発のかなり基礎のところから解説。ビギナーが「書けそう」って思えるトーク。

今年のベストトーク賞で2連覇達成。聞いた人が「帰って自分で何かできそう/やろう」という気持ちを起こさせる要素がきちんと入っているので yusukebe 氏のトークはいつもいいなと思ってます。

Programming AWS with Perl (Yasuhiro Horiuchi @horiuchi 氏 イベントホール)

プログラムを書いて AWS の管理を自動化できるという話。API もあるけど CLI もあるよと。AWS 使ってねと。

What's new in Carton & cpanm (Tatsuhiko Miyagawa @miyagawa 氏 イベントホール)

Carton:

ローカルで

 git commit cpanfile.snapshot

デプロイ先で

 carton install --deployment

cpanm、 Carton の最新の機能今後入れる予定の機能の紹介。テストに Travis CI を使い始めたとのこと。

昼休み

rimage:/nDiki/Flickr/9847363805.jpg おとよさんと学食。自分が通った大学もこれぐらい学食充実してくれてたら良かったなー(久しぶりに喫茶鳩のおじや(だっけ?)食べたい)。

YAPC::Asia Tokyo 2013 特別座談会 「Rubyの良いところ語ってください 〜そんなPerlで大丈夫か?〜」 (藤原洋記念ホール)

tDiary から Ruby に入った人が多いのかな。 Perl Monger にはザワザワする刺激のあるいい座談会。

結論的にはプログラミング言語の選択というのはプロダクト/サービス開発の一要素でしかないし、優れたエンジニアならどの言語でも書けるよねという無難な落とし所でまとめ。

本当にあったレガシーな話 (Daisuke Maki @lestrrat 氏 藤原洋記念ホール)

10周年目を迎える livedoor Blog の裏側。 エンジニアの総意工夫があったコードだけれどだんだんレガシーになってメンテナンスコスト大きくなるよねという話は mixi もそうで非常に同感。

PSGI/Plack への移行の実話がとても参考になった。

スマフォアプリ開発を支える認証認可アーキテクチャ (Rieko Suzuki @asyoulike007 氏 藤原洋記念ホール)

同一端末内の複数のアプリで、シングルサインオンする仕組み。

日吉キャンパスを散歩

日吉キャンパス、第1校舎と高等学校グランドの間の階段を降りていくとなんか田舎な風景が広がっていてトリップした感じになれて良い。

Lightning Talks Day 2 (Daisuke Maki @lestrrat 氏 藤原洋記念ホール)

安定の YAPC LT

Keynote (Tomohiro Ikebe 氏 藤原洋記念ホール)

一昨年の Hideo Kimura 氏、昨年の Gosuke Miyashita 氏と同様にマネージャーというポジションでのトーク。

YAPC::Asia Tokyo 2013 クロージング (Daisuke Maki @lestrrat 氏 藤原洋記念ホール)

今年は参加者1,131名。

牧氏・櫛氏の運営参加は今年が最後とのこと。お疲れさまでした。 なにか組織的にもいろいろな動きが裏でもあるのかもしれないし、あるいは新しい世代への交代を意図しているのかもしれない。

JANOG + LLNOC により構築されたネットワークのおかげで今年は昨年に比べて非常に快適だったことにも感謝。

YAPC::Asia Tokyo 2013 を終えて

今年は例年に比べてプログラミング言語 Perl についてのトークが多かったように思う。同時に今年はなんとなく Perl の人気の陰りを感じもした。昨今のネットサービスPerl が対応言語に含まれてないこともよくあるとかそのような。

Perl コミュニティとしてコミットしたりいろいろ働きかけていきましょうという話はあるし、次の世代による新しいコミュニティの立ち上がりもある感じだし、Perl 言語自体もまだまだ貪欲に機能改良が進んでいるという話もあるし悲観することはないのだけれどもね。

ここ数年とは違う空気感だったことは確か。Perl 的にも YAPC::Asia 的にも新しい時代が来るのかな。

Happy programming in Perl!

[ 9月21日全て ]

2013年11月18日 (月)

今日のさえずり: ポイントカード作った。 @ 青山ブックセンター 本店

2013年11月18日

[ 11月18日全て ]

2013年11月20日 (水)

Shibuya Plack/PSGI Conference (shibuya.pl) #1 #plackcon

LINE株式会社で開催された Shibuya Plack/PSGI Conference (shibuya.pl) #1 #plackcon 「秋のPlack/PSGI祭り」に参加してきた。今回は YAPC::Asia Tokyo でもよくトークされている masartz 氏とご一緒させていただいた。ここの会場にくるのは「第3.5回 データ構造と情報検索と言語処理勉強会」「PerlCasual #05」に続き3回目。

開催を知った時には定員60人すでに埋まっていて補欠だったんだけれど、その後定員80人に増やしてくれたようで参加できるようになった。当日時点ではキャンセル等で定員切っていてきたい人はこれるようになってたよ。

普通に使う Plack/PSGI Server @fujiwara 氏

会場アンケートをとりつつ、必須な/便利なモジュールや Plack::Middleware の紹介。

  • だいたい Starlet か Sterman を使っている。
  • リバースプロキシ使っている時には Plack::Middleware::ReverseProxy が便利。
  • Server::Starter の start_server では plackup を実行するシェルスクリプトを作ってそれを指定するようにするとパラメータ変更できるのでいいよ。
  • Devel::NYTProf する時には if $$ % 11 == 0 などで一部のプロセスだけでプロファイリングするようにすると不運な人は遅くなるけど、全体の影響抑えつつできるよ。

『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3 を受けての話題 @kazeburo 氏

YAPC::Asia Tokyo 2013 の発表の続き。

Plack/PSGI のパフォーマンス向上の取り組みが進めば Perl の適用領域を広がるし(リアルタイムな広告系とか)、Perl 使いの仕事も増えるよ。

Plack::BodyParser の話 @tokuhirom 氏

  • 最近のサーバーサイドの開発は JSON API の開発と管理画面の開発だよね。
  • HTTP ステータスコードの使い方をシンプルに。アクセス自体が成功したら 200 を返して、API の結果の方に API 処理自体のステータスを入れる方がシンプルだし、アクセスログ処理なども楽だよと。
  • JSON API のボディ内で返すステータスも HTTP ステータスコードと同じにしたら覚えることが少なくて楽。
  • URI の /v1/ とか入れたりするけど /v2/ とか出たためしがない。

など。プラクティカルなトーク。

Plack::Request with Encoding @moznion 氏

リクエスト中のパラメータの decode を Plack で一箇所でやってしまう話。

Mojolicious の知りたい 10 のコト @yusukebe 氏

  • morbo と hypnotoad。それほどパフォーマンス悪くない。
  • Mojo::Base は使わなくていい。それほど機能無いし、Web 系以外では Mojo に依存したくないし。

YAPC::Asia 2014 やります!」とのことです。

LT

@bayashi 氏の plackup -e でちょっとしたこといろいろできて便利だよという話や、@azumakuniyuki 氏の Haineko の話や、 @hkoba 氏のコントローラを書く人がいないプロジェクト向けのテンプレートエンジンの話や、@songmu 氏の .psgi からの卒業の話とか、@tasukuchan 氏のきまぐれオレンジ☆ロードについてのラジオみたいなビデオ LT とか。

空気を読まない(読めない)一方通行なビデオ LT は新しく。

今日のさえずり: きまぐれオレンジ☆ロードについてのラジオみたいなの

2013年11月20日

[ 11月20日全て ]

2013年12月10日 (火)

Plack Handbook 読んだりとか、技術交流的 LT における出会いの仕組み何がいいのかなとか 【日記】

SEO 的に重要なキーワードが前の方にあった方がいいらしいので「【日記】」というのは後ろにもってきてみる。

今日は久しぶり通勤時に冬の土砂降りで、家を出て2分で靴とジーンズがズブズブ。もうこれはどうしようもないレベル。やはり会社に靴と靴下置いておいた方が生産性に寄与する気がする。

あと昼に Plack Handbook を一読。今まで読んでいなかったのでモグリだった。チーム内の持ち回りのプチ勉強会CGIPSGI とかの話を担当する予定なんだけれど、Plack の部分はこれ読んでねで終わりな気がする。

あと技術交流的な LT 、交流がメインならトーク + 懇親会に一工夫なにかできないかなと考えたり。トークの後の懇親会でエンジニア同士交流ご自由だけでなくて、何か強制的にグルーピングしちゃうような。とか、名刺交換じゃなくてその場で強制友人申請大会にするとか。自分自身、社交型エンジニアじゃないのでそういう仕組みがあると出会いがあっていいなあと。

[ 12月10日全て ]

2014年2月19日 (水)

いよいよ WiKicker から WikiEngine のコードを抜いて DiKicker のみにする

2002年10月19日から開発を始めてしばらく公開・運用をしていた WikiEngine だけれど最近は WikiEngine そのものは使っていなくて、今はそのコードをベースに作った日記システムDiKicker 部分しか使っていない。DiKicker の方は自分自身で今後も使っていくんだけれど、さすがにいろいろ古いのでそろそろ大改修しようかなと。基盤部分的には

  • Perl 5.005_03Perl 5.6 系との互換処理を捨てる。
  • 文字列処理をバイナリ文字列ベースから(いわゆる UTF8 フラグ界隈的な)テキスト文字列ベースにする。
  • CGI.pm ベースから PSGI ベースへ移行する。
  • 中間管理用のストレージを Berkeley DB から SQLite にする。

などをして今後も使っていけるようにしたい。既に使っていないアプリケーションとしての WikiEngine 部分は移行させていく手間をかける必要はないと思うので、コードを削除していくことにした。WikiForum 立てるなら既にいろいろ他の選択肢があるしね。

CVS での管理もやめて Git 管理に変更。最後の公開 tarball を展開して git init して最初のコミットとし、その後に変更した作業ディレクトリを Git 側の作業ツリーに上乗せしていったんコミット。あらためて最後の公開コードの上に差分を積んでいくつもり。

[ 2月19日全て ]

2014年9月16日 (火)

社内でも動かしている PSGI アプリケーションに OpenID 認証をつけた

Plack::App::Directory::Markdown をベースにちょっと手を入れた Markdown ビューアを使っている(記事)んだけれど、閲覧要認証なシチュエーションが出てきた。

自分のみ閲覧のものは builder で Plack::Middleware::Auth::Digest を enable にして Digest 認証をかけ、htdigest コマンドでパスワード管理とかで済ませているのだけれど、複数人に閲覧してもらうのにこれは嫌だ。人のパスワード管理はしたくない。

OAuthGoogle アカウントとかの認証を使うというのもあるけれどキーとか面倒くさいので、せっかくだし mixi OpenID を使うことにした。Perl モジュールは Net::OpenID::Consumer::Lite を使用。

とりあえずやっつけで以下のような感じ。いきなり mixi OpenID 認証させるしエラー・キャンセル処理もほとんどないし、call の中にネジこんだりしてあるので、まだまだダメダメだけれどとりあえず認証はできた。後で整理する。

セッションを使うようにしておく

 $app = builder {
   enable 'Session', store => 'File';
   $app;
 };

call の先頭に以下を追加。

 my $session = $env->{'psgix.session'};
 my $request = Plack::Request->new($env);

 unless ($session->{openid}) {
   unless ($request->parameters->{'openid.mode'}) {
     my $check_url
       = Net::OpenID::Consumer::Lite->check_url(
       'https://mixi.jp/openid_server.pl',
       $request->uri);
     return [302, ['Location' => $check_url], []];
   }

   return Net::OpenID::Consumer::Lite->handle_server_response(
     $request->parameters => (
       not_openid => sub {
         return [503, [], []];
       },
       setup_required => sub {
         my $setup_url = shift;
         return [302, ['Location' => $setup_url], []];
       },
       cancelled => sub {
         return [403, [], []];
       },
       verified => sub {
         my $vident   = shift;
         my $identity = $vident->{identity};

         # %member に閲覧 OK の OpenID を入れてある。
         if (exists $member{$identity}) {
           $session->{openid} = $identity;
           return [302, ['Location' => $vident->{return_to}], []];
         }
         else {
           return [403, [], []];
         }
       },
       error => sub {
         my $err = shift;
         return [503, [], []];
       },
     )
   );
 }

 # 以下は認証済みの場合の処理を書く。

[ Naney と mixi ]

[ 9月16日全て ]

2015年8月3日 (月)

今日のさえずり: 管理人というと「音無響子」一択なのでしょうか

2015年08月03日

  • 13:33 今日 LTO18 だというのを思い出したのが朝の電車の中なので、ヒゲを剃っていないですし T シャツはジャブローです。 #lto18 http://bit.ly/1DeLWJA
  • 15:08 今日への字口だったら、左下の大きな口内炎のせいであります(熱いコーヒーは飲めません)。
  • 15:19 管理人というと「音無響子」一択なのでしょうか。
  • 18:02 普通、スーパーファミコンAC アダプタなんて舐めないですよね?
  • 19:40 そろそろ LTO18 行きます。 #lto18
  • 19:50 YYC のステッカーもらいましたよ。 #lto18
  • 19:59 運営委員会委員長俺得 LT イベントだと理解できました。 #lto18
  • 20:01 「日本の出会いが歩んできた道、そして今」 Takuya Iwamoto 氏のトークスタート! #lto18
  • 20:09 弊社の新卒研修でも話をしていただきたい充実した内容。 #lto18
  • 20:24 「商業作品内におけるトランス状態の重要性」 ブラックキャット氏のトークスタート! #lto18
  • 20:26 やばい。いつやられるかわからない緊張感のあるトーク。 #lto18
  • 20:30 やばい! 説法ダイヤルに電話して聞いている感じ! #lto18
  • 20:39 自己催眠は若い頃はトライしたことはあります。 #lto18
  • 20:47 Shibuya Plack/PSGI Conference (shibuya.pl) #1 #plackcon での @tasukuchan 氏の「ビデオ LT」思い出した。 #lto18
  • 21:02 変性意識についてのありがたいお話でした。 #lto18
  • 21:04 「ホール素子を使って紳士的なデバイスを作ってみた」 shima 氏のトークスタート! #lto18
  • 21:13 ホール素子って、まじホール素子の方でしたか……。 #lto18
  • 21:29 「Porn Reward のチカラ」 kuniwak 氏のトークスタート! #lto18
  • 21:35 LTO18 っぽくなってきた! #lto18
  • 22:21 3億円 x 3回。 https://flic.kr/p/wRmzib
[ 8月3日全て ]

2018年2月26日 (月)

Markdown で書いているノートWeb ブラウザで見るのに MkDocs を使う

ノート/メモははライティングアプリ Ulysses を使い Markdown で書いていて、検索・閲覧・整理も Ulysses で基本済ませています。ただいくつかの良く参照するファイルはブックマークやハイパーリンクから Web ブラウザでさっと表示させたかったりします。なので以前は Plack::App::Directory::Markdown を使った自作 PSGI アプリケーションを使ってました。

が、セットアップしたり保守したりという手間を今とれないなと思って、 Markdown ビューアを探してみたところ MkDocs が良さそうなので試してみました。

MkDocsHomebrew で入れてみる

MacBook ProHomebrew で入れて動かしてみます。

 $brew install MkDocs
 $mkdir -p ~/var/mkdocs
 $cd ~/var/mkdocs
 $mkdocs new local
 $cd local
 $mkdocs serve

Web サーバが立ち上がるので http://127.0.0.1:8000/ にアクセスすると ~/var/mkdocs/local/docs/index.md の内容を HTML に変換したものが表示されます。お手軽! 設定変更は ~/var/mkdocs/local/mkdocs.yml できます。

あとは docs の下に Markdown ファイルを置いておけば Web ブラウザで閲覧できます。docs の下に既存の Markdown ファイルノートディレクトリへシンボリックリンクを作ればそれらも辿って表示されます。

pip で入れ直す

試していてブラウザでのレンダリング表示が重いなと思って HTML ソースを見たら同じ JavaScript ファイルを何十回も読み込んでいて何か変ぽかったので Homebrew のをやめて pip で入れなおしました。どちらも現在 mkdocs 0.17.2 ですが pip で入れた方は問題なかったのでこちらを使うことにします。

 $brew uninstall mkdocs
 $brew install python
 $pip2 install mkdocs

MkDocs静的サイトジェネレータで、プレビューサーバは補助的機能ですがまずまず使えそうです。

[ 2月26日全て ]

About

Naney Naneymx

Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。

※本サイトの内容は個人的見解であり所属組織とは関係ありません。

Process Time: 0.034554s / load averages: 0.52, 0.41, 0.36