2013年09月30日

homebrew libpng and Imager::File::PNG with Carton

for cpanm
$ cpanm --look Imager::File::PNG
$ perl ./Makefile.PL --libpath=/usr/local/opt/libpng/lib --incpath=/usr/local/opt/libpng/include
for carton
$ cd /usr/lib
$ sudo ln -s /usr/local/opt/libpng/lib/libpng.dylib
$ cd /usr/include
$ sudo ln -s /usr/local/opt/libpng/include/png.h
$ sudo ln -s /usr/local/opt/libpng/include/pngconf.h
$ sudo ln -s /usr/local/opt/libpng/include/pnglibconf.h
普通だと Makefile.PL にオプション与えれば済むけど、 carton だとそういうの出来ないので手っ取り早く symlink でできるよ。
Posted by Yappo at 18:40 | Comments (0) | TrackBack

2013年09月24日

YAPC::Asia 2013 #yapcasia

今日みた夢が「blog 書かないと干すぞ!」ってがちぎれる941さんとlestrratさんがでてきたので書く事にした Yappo です。みなさん週末はいかがお過ごしでしたか?僕はカート大会いって箱根で温泉と美味しいご飯食べてきました。

本編発表資料

社内開発簡単化と世界で戦う開発を考える技術
明らかに会場でかくていっぱい人見に来る、裏発表の DeNA の人が Yappo に負けないクオリティにする!的な宣言してて泣きそうになったのでささやかな反撃でタイトルぱくりました。

1日目の午後一から40分の枠をもらったので、仕事向けのアプリケーション開発で考えなきゃいけない事と、雛形スクリプトを作る時に便利なKsgkの紹介をしました。基本的にはコピペ脳は害でしか無いのでいかにしてコピペを排除するか、ちゃんと自分の頭で考えていくか。のような話をしました。

わりとぐにゃらくんの発表内容に近い。というか作ってる雛形の思想が MobaSif に近い物があるので、雛形で生成されるコード(=WAF)は既存の有用なモジュールのグルーを提供する。みたいな事を僕も言ってたのですがぐにゃらくんも言ってたらしいですね。 GunyaSif のプレゼン見にいこうと思ってたら時間がすぎてたので何かでみようと思います。

割と最近僕はアウトプットしてなかったので、ここ一年で僕がやってきてた事の紹介をする。というテーマの裏には、同僚の人達へのプレゼンもついでに行うつもりでやってた、というか後者の目的が大きかったのですが、YAPC開催週に入社したての人が僕のを見てて実際にうんうんうなずかれると逆に照れて緊張するというのを発見した。

僕の発表が少しでも参考になって皆が楽になると嬉しいです。

LT: HTTP::Body::Builder

I NEEEEEEEEEEEEEED HTTP::Body::Builder !!!!!!1111

いっつも multipart/form-data の API を叩く時にまともに処理できる CPAN module が無くていらっとしてたんですが、まぁわりと〆切追われたりしてる時だから適当に乗り越えてたんですね。
ここ最近もそれやる必要になって mala に「いい方法しらない?」って聞いたら自分で作るしかないねって言われた事が発端となってやった LT です。

日本の LT とかだと割とこういう「俺の欲しいモジュール誰か作ってくれ!」プレゼンって少ないのですが、具体的な仕様を提示してお願いする感じにすると割とちゃんとした反応があるので有用かなと思います。今回もみんな HTTP::Body::Builder の必要性感じてくれましたし。

LT終わった後ひろむが資料よこせって言ったから、多分明日の LT で実装するだろうなと思って資料 pushして放置してたら二日目のLT直前にリリースしててましたね。
僕はその時 HUB してたのですが、慌てて缶ビール買いにいってました(作った人にビール奢るって宣言してた)。

ひろむのLTで最初 Test::Power やりだして焦ったけど、ちゃんと作ったよっていったので安心して壇上にあがりこんでビール渡せましたね!
941さんが近くにいたから、絶対止められるからどうすり抜けるかとかシミュレーションしてたのですが、そのへん意図汲み取ったのか忙しかったのか疲れてたのかでガードされずにすり抜けられた。
ビール渡して満足そうに帰ってる間にひろむがビール開けて追い出されてたらしいのを見逃したのが残念でした!缶ビール直接渡すと200%飲みだすだろうから裏を読んで服数本買ってコンビニの袋に入れて渡したのに意味なかった!1

こういう、誰かが発表してた内容をカンファレンス会期中に別の人の発表でレスポンスを返す。みたいな奴はもっとみんなやった方がいいですね!
人の発表中に上がり込むのは海外でも事例あんま聞かないけどw

あとはねこむに懇談会で HTTP::Body::Builder 作ってくれる?って聞いたらお腹ぽんぽんされてマッチョの方のボディビルダーと同じ言葉だったって気づいた。

前夜祭

わりとYAPCで発表した人って感想なにも書いてないから、たまには感想も書こうとおもったからこっから書く。

ビール飲みながら資料書いてたら終わってた。

現実逃避として拍手するサイトの DOS とかしてたけど、あれ皆でやってるから本当に自分が攻撃してるやつ成立するかわかりずらいので改善が必要だと思った。

前夜祭おわって適当に HUB に集まってみんなで飲んでたけど何話してたかだいぶ記憶にない。 bonnu さんが凄かったのだけ覚えてる。

1日目

朝一でいこうと思ってたけど深遠な理由により30分おくれて出発したけど、途中で特急待ちとかで次の電車が30分後くらいのエキセントリックな状況になったので東京駅から成田エクスプレスにのって武蔵小杉まで行った。乗り換えだるくて死にそうだった。

前日のうちから資料が出来てて余裕だったので kazeburo さんの話から参加して聞いてた。 kazeburo さんと一緒に ptrace した事あるから読めた。

kazeburo さんの終わってから昼飯までの記憶が無い。

ひるは学食。 overlast が「学食なんてどんなメニュー頼んでも全部同じ味だから一緒」とか酷い事言ってた。 miyagawa さんが持ち運び無線充電器の話してた。

自分のトーク終わってから、ぼーっと takesako さんの話みてたら会長から急遽今日の LT でれるか?!?って聞かれたので、今から作るでれるって応えた。

習字が飾ってある所で寝ながら資料作る。

ねるの秋田から BoF スペースで資料作ったら makamaka さんが Acme 大全の要望募集してまーすって言ってたから dan.pm 入れてっていったら「!?!?」ってされた。なんてこったい。

思量出来たからお店で飲食して休憩してから LT に行った。

準備とか資料公開であんま聞いてなかった。

懇親会

techno_neko さんに「本当は Plack::Middleware::ServerStatus::Audio 作って LT したかったんすよー」とか話してたら、それに近い話さっきしてたっていわれて、実際に作った人いた。けど、やっぱり全部 Perl で完結させたいからアイデア上げるから作って下さい!って言ったので完成楽しみ。あと Hokkaido.PM に呼んでくれるって言ってくれたのでそれも楽しみ。(ちなみに去年の懇談会で Fukuoka.PM 呼んでくれるって言ってくれて今に至るので嫌な予感しかしてない)

にこにこしながら dan さんがやってきて LT 資料の英語に凄いどや顔でつっこみ入れられてる時に makamaka さん通りがかったので捕まえて dan.pm ちゃんとみたかどうか聞いたけど dan さんがキョトンとしてどっかへ去った。

dan.pm って下らない事やってるけど、わりと皆のしらない Perl の機能つかってすごい頑張ってるから良いよ!って説明してて、今度はまた皆しらない機能使って Acme module 作るって宣言しといた。

あと Amon2::Plugin::L10N のお陰で仕事が凄く速くおわってたすかった!って言われたのでこんな僕でも生きてる価値が1mmくらいあるってわかった。

1日目夜

だんじょうさんが飲み屋に来た

2日目

最初のセッションから余裕で参加。 ikasama さんの見た。女の子の写真みて ikasama さんが癒されてた。

hidek さんの見ようと思ったけど gossy product 追っかけてなかったから、 hidek さん干しで見にいった。 PerlMotion 動くとこまでいっててよかった。みんなもこの辺のやるといいよ。

昼は LINE の会社の人事の人が弁当余らせてこまってたから、みんなでもらって適当に外でて地べたに座って食べた。

ruby session は mput さんが暴れないというサプライズがあった。

ruby session おわってから皆で HUB いった、 mput さんが Ruby 1.9.x からインデントが狂ってると警告を出すオプションが追加された、コアの方で実装されてる。って言ってて、これ便利そうだから Perl に持ってきたらいいと思った。あとは miyagawa さんが持ち運び無線充電器の話してた。

LT はじまるまでずっと HUB に居ててわりと本編みてない。わりと ruby session の続きの話を延々としてました。

barimi さんが言ってた初心者で twitter bot 作るってやつ。初心者は chat 的なやつの bot 作ると割とインタラクティヴ性あって楽しいので皆も初心者に与える題材として bot とか教えるといいですよ。

perl クイズで近藤さんが勝つの本当にチート過ぎて酷かったw

ikebe さんのアンコールセッションでサプライズ発表があると思ってたけど、本当にサプライズ卒業発表しててびびりましたね。

後夜祭

始まるまで適当な店入って時間潰してたら、超満員とか言ってたので gfx しました。さんまの刺身美味しかった。

わりともうみんな疲れてた

hackathon

こんかいみんな cookie とか言ってて良くわからないからググって cookie clicker hack してた。

javascript:setInterval(function () { $("#bigCookie").click(); }, 1);
javascript:setInterval(function () { if ($("#goldenCookie").style.display == "block") { $("#goldenCookie").click() }; }, 100); 

こんな感じで捗る事を理解した。

あとは makamaka さんと話してた Acme の実装作る為に perlguets の読み直しとか、実装の mock を作ったりとかしてたけど、だいぶ疲れてるからスローペースでしたね。

打ち上げの店のキュウリがおいしかった。

race

50msec で一周するカート大会にいってきた。道中の電車で心臓ばくばくしすぎてて死にそうだったけど、運転したらそういう疲れが全部吹き飛んだので、単純に室内にこもりすぎてて不健康になってっただけだったという結論になった。次 YAPC やる人は運動とか取り入れた方がいいですよ。

レース結果は僕のチームBが3位で、ベストラップの順位が2位だったので、うっかりトロフィー貰っ贈呈禁止規定に引っかかって処分されなくてよかった。

かえりは箱根ちかいから温泉いって、渓流沿いの飯やでうまいめしをくった。特に YAPC 中はちゃんと和食食えてなかったのでめちゃうまかったは。

next event

hackathon の後に、わりとイベント少なすぎるから皆気合い入れてあつまるからコンスタントにイベントやろう見たいな話をしてて、 Shibuya.pl という Plack のイベントをやる事にした。とりあえず fujiwara さんとか ISUCON3 で忙しいので、それが終わった後の11月の平日にでもやりましょう。
ikasama さんも11月くらいに Testing Casual やるって言ってるから要調整

「YAPC::Asia もう終わりって言ってるけど、やってほしいなでも自分はやりたくないな」とか思ってたら本気でもう開催されないってのを皆は認識した方が良くて、別に1000人とか集めなくていいので300人規模とかで来年からやるとかでもいいですね。僕も開催しないから適当だけど。

とりあえず来年は東北で YAPC::Asia が開催らしいから、いまから東北旅行楽しみです。

Perl徹底攻略 (WEB+DB PRESS plus)
大沢 和宏 cho45(さとう) 小林 篤 和田 裕介 嶋田 裕二(xaicron) 牧 大輔(lestrrat) 奥 一穂 広木 大地 伊藤 直也 長野 雅広 藤原 俊一郎 伊藤 智章 まかまか般若波羅蜜 小飼 弾 近藤 嘉雪 中川 勝樹 宮川 達彦 tokuhirom 藤 吾郎(gfx) 村瀬 大輔
技術評論社
売り上げランキング: 7,279
Posted by Yappo at 12:59 | Comments (0) | TrackBack

2013年09月19日

今日はYAPC前夜祭ですね & 明日のYAPC1日目でしゃべります

今日は YAPC の前夜祭ですね!
今年の YAPC の前夜祭は、去年の YAPC で好評を博した 前夜祭 が 慶応大学が会場 となって開催されます!
僕は 前夜祭 には参加者として参加していて、楽しい催しになるように努力しますので是非是非ご参加下さいませ!
前夜祭 - YAPC::Asia Tokyo 2013

さて、明日のYAPC1日目、13:00〜13:40 では僕が「社内開発簡単化と世界で戦う開発を考える技術」と題して発表致します。
が、なんかスライド書いてたら「amon2-setup.pl を俺色に染める」というよりは「僕の一年間の Open & Share」みたいな感じになってしまったので、
多分そういう感じの話になると思います。僕の一年間 に詳しい方は既に知っている情報が多い感じなので、そこら辺ご注意下さい!
本トークでは具体的に言うと以下の様な話をする予定です。

- ありがちな開発初期に行う呪文のコピペ
- コピペを無くす為に考える事
- それの失敗談
- アプリ開発で便利な最近僕が作ったモジュール
- ops のヒトから椅子飛んでこない為にやってる事
- 雛形で作ったアプリのテストを Ukigumo 連携する事についての所感

ただ、最後の Ukigumo の所はどうでしょうか、もしかしたら無理かもわかりませんね!
なぜならまだスライドが完成していないのです。ハラハラ。

アプリケーションのディレクトリ配置や、標準でセットアップされるべき機能から deploy 初期設定全般 の情報は非常に便利だと思っているんですが、その情報は最近表にでてこないので、そのあたりの知識の共有や議論なんかも出来ると素晴らしいと思っております。
「こんなことやってるぜ!」という知見をお持ちの方は talk 中に話割り込んできていいので是非教えてください!

それでは皆様、YAPC 会場でお会いしましょう!

参考文献

Posted by Yappo at 16:11 | Comments (0) | TrackBack

2013年09月05日

配布するスクリプトが依存しているモジュールを実行時にスマートに入れてもらう方法

社内ツールなどで Perl スクリプトを配布する時にいちばん気になるトピックとしては、スクリプト中で依存しているモジュールをどうやってインストールさせるか?
という所ですね、最近は toolchain が強まってきて cpanm --installdeps . とか carton install をやってもらえば良いのですが、たかだかちょっとしたツールだったら git clone してもらってすぐにスクリプト叩いてもらいたんじゃんすか

ってことで、スマートかつクールにこの問題に対処するスクリプトの雛形を書いてみました。 core module 以外には Carton を予め入れておく必要があるのがまだまだ敷居高いですが、エンジニア向けのツールだったらだいぶ手間は下がるでしょう。

ポイントとしては、コードで使うモジュールを use する前の BEGIN ブロックで必要なモジュールを既に入れておくので、 Acme::Hidek が未インストールな状態でもエラーにならずに実行可能という点と、 carton を使って依存モジュールをインストールしているので carton exec で起動した相当の処理を行っている点です。

ここから話を広げた話題を YAPC::Asia 2013 TOKYO で発表するので興味のある人は来るといいです。

Posted by Yappo at 17:43 | Comments (0) | TrackBack