社内輪読会で二回目の発表
二度目の社内輪読会の担当を終えた。前回の時間オーバーの失敗を踏まえてなるべく短縮しようと思ったら相当早く終わってしまった。普段見てる周りの人達はきっちり時間通り納めてて本当にすごい。プレゼンツールもスライドの表現力(図とかアニメーションとか)についても工夫しているんだろうな
— kiyoshi nomo (@kysnm) 2015, 9月 1
まあこの tweet のままなんですが、やっぱりちょっと失敗してしまった感がある。 ただ反省して一応対策して挑んだので学びがあったのが良かった。
正直自分にとってはかなり難しい内容なんだけど確実に前回より理解できるようになっているのが実感できた。 その上でもっと読み込んでソースコードももう少し読みこめば良かったとかフローチャートかアクティビティ図で表現する方法に気づきたかったなという事も感じた。
理解度が曖昧だったのでその場でフワフワとこれで良いのかという不安にかられてしまったりした。 優秀な若い人達と一緒に学べることがとても幸せなんだけど、同時に彼らは自分の発表に自身を持って挑んでいるんだろうか、それともごまかしてうまく切り抜けていることもあるんだろうかという事を思ったりもした。
この後知人からこうすると良いよというアドバイスももらってありがたかったなー。 感謝してます!!!
社内の輪読会に参加して発表した
輪読のお題はこちら
O'Reilly Japan - 詳解 Linuxカーネル 第3版
「5章 カーネルの同期処理」を担当しました
自分にとってはかなり難易度高めです
振り返り
Problem
資料がまとめきれず時間内に説明し終えることが出来なかった
もう少し早めに準備すべきだった
自分の言葉で表現できなかったので説明がふらふらしてしまった
もう一度読みなおして再構成する余裕があれば良かったかも
Keep
輪読会の参加者のレベルが高く有意義な時間を過ごせている
- 逆に自分の不甲斐なさが不安になるけど「一番の下手くそ」になれる環境は貴重だ
Try
とはいえ発表するとなると理解度が上がるので次回も自分なりにまとめておきたい
- 読むのにだいぶ時間がかかるのが難点かなー
この輪読会を企画していただいた事、参加させていただいた事に感謝 (`・ω・´)ゞ
#http2study で libh2o の LT しました
実は初めての LT だったりします。
お聞き苦しい点があったかと思いますがご容赦ください。
スライドだけだとなんのこっちゃですが、h2o ドキュメント無いけど examples を見て xcode でデバッグしつつ頑張ればいろいろ出来そう ってなことを伝えたかった感じです。
だいたい include にある関数が使えると思われるのでいろいろやって みると楽しそうですよ!
追記:
初めての Ruby C 拡張だし、gem 書くのも初めてだったりします (汗
あと最後の方のスライドで(/ω・\)チラッと触れていますが、今日リリースされた h2o 1.2.0 から openssl から LibreSSL に変更されてバンドルされるようになったのでコンパイルがより手軽になっているようです。
自分が作った Ruby の C 拡張、別環境に落としてきたらうまく動かない…
2014年の振り返り
来年は書けるようにしたい
picohttpparser の addon を書いてみた
はじめに
このエントリーは Node.js Advent Calendar 2014 - Qiita と h2o Advent Calendar 2014 - Qiita の 21 日目の記事です。
現時点の node.js の安定版は v0.10.34、開発版は v0.11.14 で、v8 のバージョンはそれぞれ 3.14.5、3.26.33 です。 nan (Native Abstractions for Node.js) のバージョンは 1.4.1 です。
Motivation
以前も Node.js の http_parser の実装を追ってみたことがあって興味があったし、HTTP/2 を追うことでやはり parser に触れてきました。自分は普段は Rails のアプリケーションエンジニアをやっているので Ruby にも興味があります。そして以前は Perl も書いていました。なので @kazuho さんの作られた picohttpparser については耳にしていましたし、h2o で使われているのも知っていました。そんな中 Perl コミュニティで有名な @kazeburo さんが Ruby の C 拡張として pico_http_parser をリリースされました。前々から Node.js の addon は書いてみたかったので、この機会に Ruby の C 拡張の仕組みに触れつつ、picohttpparser の理解を深めるチャンスだと思いやってみました。
What's hard?
ほとんど @kazeburo さんの実装をそのまま使っていて、一部 Node.js の作法に合わせる形で実装しました。普段 C/C++ は書かないのでちょっとしたところでつまづきやすかったです。また nan が v8 のバージョン間の差異を埋めてくれるんですが、きちんと理解して使っていないのでトライアンドエラーで探り探りでした。結果としてまだ開発版での build が成功していないという体たらくです、すいません。
v8 のドキュメントは聞いた話だとソースコードから doxygen で生成するしかないとのことでした。doxygen をあまり使ったことがないのでドキュメントの生成の仕方がよくわからず、Eclipse でやってみたりしたんですがどうも狙ったバージョンのリファレンスが生成出来ず、現時点でバージョン間の差異をきちんと把握することが出来ていません。この辺詳しい方がいらっしゃったらぜひ教えていただきたいです。
またデバッグは Mac 上で行っていて、この Mac は半年くらい前に乗り換えたばかりで gdb の cert の設定 OS XでGDBを使う(ためにコード署名をする) - Qiita 等をするのが面倒だったで lldb を使っていました。gdb でどうかはわかりませんが、lldb の p、po では v8::String をうまく見ることが出来ずはかどりませんでした。この辺も詳しい方教えてください!
おわりに
というわけで一応 github に公開していますが、勉強がてら書いてみたものなので npm にリリースする予定はありません。また出来れば C++ で書きなおしたり、引数に callback を渡すスタイルを検討したりしてみたいと思ったので時間がある時にやれたら良いなーと思っています。まだ multi line のリクエストもうまく動かせていないのでそのへんのデバッグもしないとなー。
kysnm/node-pico-http-parser · GitHub
謝辞
picohttpparser の作者の @kazuho さん、実装を参考にさせていただいた @kazeburo さんに感謝いたします。ありがとうございました!