何の因果かわかりませんが、お仕事でちょっと賢いリバースプロキシサーバ(以降、RPサーバ)を作る機会が2回ありました。
HTTPヘッダの内容によってプロキシ先のサーバを動的に切り替えるようなものです。

この要件を満たすため、RPサーバには以下のようなプログラムが必要になります。
- HTTPヘッダの内容を知るためにHTTPリクエストをパース
- プロキシ先のサーバへHTTPリクエストをプロキシ
- プロキシ先のサーバはRedisから取得
- レスポンスをクライアントへ返す
- 大量のリクエストも捌ける
1回目はRubyとI/O多重化のライブラリを使ってイベント駆動型のRPサーバを自作してみました。
が、振り返ってみるとこれは失敗でした。
Posted by
Nakamura Narihiro
on
March 23, 2016 ·
1 min read
プログラマがあまりやりたがらない作業のひとつとしてドキュメント作成がよく挙げられるかと思います。
〇〇仕様書とか〇〇設計書とか〇〇手順書などの作成作業ですね。
特に成果物がdocxやxlsxのようなプレーンテキストでない場合、次のような理由で気が滅入る方も多いのではないでしょうか。
- 手慣れた道具(エディタ)を使うことができない
- 専用のソフトでよくわからない機能が裏で勝手に動いたりしてて気持ち悪い
- 変更履歴をトラッキングしづらい、差分をマージしづらい
Markdownでさくっと書いてそれっぽいものができれば、GitHubのWikiなどにぼちぼち書き溜めておいて最後にコンパイルするみたいなやり方ができるなぁとか、そうすればわざわざドキュメント専用リポジトリを作ったりする必要もないなぁとかモヤモヤしながらいろいろ調査・検討したので以下の4構成でまとめたいと思います。
- Pandocについて
- Pandocを使って Markdown -> HTML, PDF を作成する
- Pandocを使って Markdown -> docx を作成する
- Pandocで作られたdocxをRubyで加工する
Posted by
Morohoshi Yuki
on
March 10, 2016 ·
2 mins read
チームで開発する際はコーディング規約を決めて行うことが多いと思います。
実際に書いたコードが規約に従っているかどうかを検査するため、筆者はRuboCopを使用しています。
コーディング規約そのものはWeb上に公開されているものを参考にして決めていますが、制限が厳しすぎる等の意見がチーム内であった場合は適宜規約を調整しています。
最近チーム内でABCSizeに基づく警告を出す閾値がもう少し高くても良いのではという意見が出たことをきっかけにいくつかのアプリケーションでの例を調べたので紹介します。
Posted by
Kumojima Kenta
on
February 23, 2016 ·
5 mins read
Posted by
Shugo Maeda
on
February 19, 2016 ·
1 min read
担当の石飛です。
NaClの本社が所在している島根県松江市はRubyCityMATSUEプロジェクト(ウェブサイト, facebook)というRubyによる地域振興を行っています。
私がNaClに入社するきっかけとなったのもこのRubyCityMATSUEプロジェクトが大きく関わっているため、簡単にですが紹介したいと思います。
Posted by
Hikasi Ishitobi
on
February 08, 2016 ·
1 min read