YAPC::Asia Tokyo 2012 に行ってきた
東京大学で開催された、YAPC::Asia Tokyo 2012 に行ってきた。個人的には今回で5回目の参加。これだけ継続して参加している理由はなんだろうとふと考えたが、結局のところは Perl が好き。そして Perl のコミュニティが好きだという、極めてオーソドックスだけど、確固たるものがあると再認識できた。
聞いたセッションの詳しい内容は、スライド等にまかせて簡単な感想や覚書でも。
What Does Your Code Smell Like? | Larry Wallさん
英語はよく分からなかったけど、ライブコーディングで Perl5 のコードを Perl6 に書き換える内容だった。
sub に引数が書けたり、色々省略出来たりで良い感じ。覚えないといけないことは多そうだけど、その価値はすごくありそう。
あと、コードを直す速さにびっくりした。vi恐るべし。
Web::Security beyond HTML5 | Yosuke HASEGAWAさん
Webアプリケーションにおけるセキュリティのセッション。
Ajaxの脆弱性はブラウザ起因のものが多い。Android の古いのとか IE とか IE とか。古いブラウザは直らないしサーバ側で対応しましょう。
Nana/Tora - Perl5 から見える未来。Perl5 と共にあゆむ Perl6 ではないプログラミング言語、それは。 | Tokuhiro Matsunoさん
現在の Perl5 の問題点に対してどの様な改善点があるのかという内容。
印象的だったのは、npm を中心にみんなが好きな言語を使おう。
Perl Ocean - XMPP based realtime communication framework suite | KOMORI Kazukiさん
XMPP プロトコルにおけるリアルタイムコミュニケーションフレームワークスイートのセッション。
同時接続数やプロセスブロックの問題点の解決する方法として、gearmand を使ったりしている。
続・Mobage を支える技術 | Yuji Shimadaさん
"Mobage を支える技術"でカバー出来なかった内容のセッション。
Mobage で利用している Worker のシグナル処理を Demo を交えて解説。失敗例成功例の説明がわかりやすかった。
"die する!!" は耳に残った方も多いんじゃないでしょうか。
位置情報系処理のお話 a.k.a 続・自文書抽出日本的住所 | Kazuhiro Osawaさん
GeoHash 等の位置情報に関する内容。
僕個人としても、GPS やら GeoHash を勉強したことがあるし、ものすごく興味深いセッション。
住所を正規化するための正規表現は凄かった。
北陸と熊本の住所が難しいというのが印象的。
平均レスポンスタイム50msをPerlで捌く中規模サービスの実装/運用 | Tatsuro Hisamoriさん
広告枠の現物取引を実現するための枠組みについての内容。
一般的なLAMP構成で、"古典的でも地道にやる"という言葉が印象的。
Perlアプリケーションのベンチマークとプロファイリング | Shunichiro Fujiwaraさん
チューニングをするに際して、ベンチマークやプロファイリングで問題点を見つけて解決しようという内容。
Benchmark / Devel::NYTProf / Parallel::Benchmark を使ってのパフォーマンス計測や負荷試験の説明がわかりやすかった。
「新しい」を生み出すためのWebアプリ開発とその周辺 | Yusuke Wadaさん
過去のWebアプリケーションで他の環境で動作しなくなった経験を生かした、WAF 選定基準は非常に説得力があるものだった。
10 more things to be ripped off | Tatsuhiko Miyagawaさん
他の言語のいい所を Perl で使いやすい様に移植しよう。
他の言語の素晴らしい仕組みを紹介して、それを作ってみてはという提案も印象的でした。
Perlハッカーは息をするようにCPANモジュールを書く。 | Daisuke Muraseさん
CPAN モジュールのドキュメントに、そのモジュールへの熱い思いを書いて欲しい!というのが僕もそうだと思いましたし、そうでありたいと強く感じた。
ウェブアプリケーション開発の現状・課題とJSX | Kazuho Okuさん
トレンドの移り変わりや JSX の設計思想等のセッション。
個人的には、JavaScript だと class 定義をするにも色んなやり方があって、いわゆるベストプラクティスもわかりにくい。JSX の class 定義はスマートで分かりやすい。今後に大いに期待したいです。
Performance Profiling with Devel::NYTProf | Tim Bunceさん
英語は相変わらず分かんないけど、Devel::NYTProf まじですごい便利というのはスライドから伝わってきた。
KCachegrind がすごく便利そうで、すぐにでも導入してみたいです、
How Perl Changed My Life | Gosuke Miyashitaさん
今年の YAPC の クロージングキーノート。
Perl に関わりその中で学んだことや得たことの話。
エンジニアの評価制度をオープンにした話が個人的には印象的でした。
僕自身、Perl に出会ったのは 2004年。その時は Webサイトを作るのに必要だから覚えたというのがきっかけだった。
Perl が好きという感情に変わったのは、今まで Java とか C++ で書いてたちょっとしたツールを、Perl ですごくスマートに書けた時。気がついたら Perl の虜になってた。そして YAPC という素晴らしいイベントにも参加するようになってた。僕一人の力はそんなに大きくないかもしれないけど、Perl に恩返ししていきたいと強く感じてます。
終演後
Facebook や Twitter で交流があった、[twitter:@nekokak] さんとお会いして話をする機会があった。後片付け等があるみたいで、短い時間しか話は出来なかったけど、Teng や Sub::Args を利用させて頂いている僕としては本当に嬉しかった。本当にありがとうございました!
最後に
前夜祭には参加出来なかったけど、2日通して参加できた。1年ぶりに前職の同僚とも再会して、技術談義も盛り上がったりしたし、最高に楽しい2日間だった。来年は LT やってみたいなぁと感じている今日この頃です!
/etc/hosts と hostname が違う場合は Apache の起動ができない
開発用に使ってたドメインが失効して、違うドメインを割り当てて運用してた Apache が、突然起動に失敗するようになった。
エラーログを確認すると以下の様なメッセージが出ている。*1
[Fri Aug 10 17:23:27 2012] [alert] (EAI 2)Name or service not known: mod_unique_id: unable to find IPv4 address of "hoge.example.com"
hostname コマンドで表示されるホスト名が以前のものになってて、名前解決ができずにエラーになっているものと判断したので、以下の手順で修正した。
1.ホスト名の変更
% sudo -e /etc/sysconfig/network HOSTNAME=ホスト名 HOSTNAME=foo.example.jp
2./etc/hosts に記述しているホスト名を変更
% sudo -e /etc/hosts 127.0.0.1 foo.example.jp
*1:メッセージ中のホスト名は変更している
MySQL でシーケンスをエミュレートしてみた
Oracle とか PostgreSQL 等にあるシーケンスのエミュレートを、MySQLの公式ドキュメント で紹介されているので試してみた。
シーケンス用のテーブルの作成と初期値
数値型のカラムが一つあるテーブルが必要。
下記例では 1 から採番される。途中から採番したい場合は、初期値に 0 以外を入れればよい。
mysql> CREATE TABLE sequence (id INT NOT NULL); mysql> INSERT INTO sequence VALUES (0);
シーケンス値の取得方法
下記要領で取得する
mysql> UPDATE sequence SET id = LAST_INSERT_ID(id + 1); mysql> SELECT LAST_INSERT_ID();
これだけで、シーケンスのエミュレートができる。
上記の事が実現できるメカニズムは、LAST_INSERT_ID(expr)にある。LAST_INSERT_ID(expr)に引数が渡されると、そのコネクションにおける LAST_INSERT_ID() で取得できる値が設定される。
実際に試してみるのがわかりやすいと思う。
mysql> SELECT LAST_INSERT_ID(1000); mysql> SELECT LAST_INSERT_ID(); +------------------+ | LAST_INSERT_ID() | +------------------+ | 1000 | +------------------+
これらを踏まえて説明をすると、UPDATE 文で現在の値を +1 する。その値を LAST_INSERT_ID(expr)に渡して、LAST_INSERT_ID()(引数なし)で取得できるようにしている。
意外と簡単に実現できたが、実戦投入するには色々調査不足なので、この辺は慎重にやろう。
WEB+DB PRESS Vol.68 読了
WEB+DB PRESS Vol.68 が読み終わった。
- 作者: 名村卓,三宅陽一郎,白土慧,勝間亮,石田忠司,牧本慎平,A-Listers,近藤宇智朗,はまちや2,mala,じゅんいち☆かとう,並河祐貴,小野修司,中島聡,森田創,小飼弾,田籠聡,天野祐介,cho45,大和田純,WEB+DB PRESS編集部
- 出版社/メーカー: 技術評論社
- 発売日: 2012/04/24
- メディア: 大型本
- 購入: 4人 クリック: 189回
- この商品を含むブログ (10件) を見る
そろそろ Vol.69 が出そうな勢いだけど。いつも通り個人的に印象に残った記事の感想を紹介する。
新人時代に押さえておきたいWeb技術まるごと整理
Webの生い立ちや基礎的なことやCGIからAjax変遷。Web技術を支えるサーバの解説やクラウド技術。一昔前のWebから現在主流となっているWebに関することがわかりやすくまとめられている。新人が読むにはいい入門だし、ある程度知っている人が読むといい知識整理に使えると思う。
Node.js 実践入門
Node.jsの基礎からちょっとした応用まで、幅広く書かれていて、これから Node.js を試そうと思ってるなら是非読むべき記事だと思う。サンプルコードも多く載ってるし、実際に写経して動作確認を僕もやってみた。この特集だけでも Node.js のすごさ面白さは伝わってきた。
Perl Hackers Hub
僕が毎号楽しみにしているPerlの連載。今号は新しい Perl の機能やシンタックスについての解説がされている。書かれてることはある程度知ってはいたが、積極的に取り入れたりはしてなかったりする。僕自身が、まだ Perl5.8 系で動作してるシステムの運用をしていたりするので。defined-or 演算子とか何気に便利だし使っていきたいなぁと。
最後に
新しい事に取り組もうと思った時に、WEB+DB PRESS の記事から入門することが多いとあらためて感じる。リーンスタットアップも取り入れて行きたいと思っている。
NoSQLの調べたいことメモ
NoSQLについて色々比較したり、調査したいソフトウェアの雑多なメモ。
- Redis
- MongoDB
- MySQL Cluster
MySQL Clusterは業務で使ったこともあるし、最近はいい書籍も出てるから、勉強しなおそうかなと。
Redis/MongoDBはそれぞれの特徴を知るところから。
MySQL Cluster構築・運用バイブル ?仕組みからわかる基礎と実践のノウハウ
- 作者: 奥野幹也
- 出版社/メーカー: 技術評論社
- 発売日: 2012/04/10
- メディア: 単行本(ソフトカバー)
- 購入: 2人 クリック: 265回
- この商品を含むブログ (5件) を見る