X-Forwarded-For の正しい取り扱い方とCloudFrontを通したときのクライアントIPの取得方法

X-Forwarded-For ってなに? プロキシやロードバランサーを通してサーバーにアクセスすると、サーバーから見たクライアントIPはプロキシのものになってしまいます。それを解決するために、プロキシで X-Forwarded-For HTTP Header にクライアントの Remote I…

PROXY protocol を使ってNLB配下のサーバーでクライアントの Remote IP を得る

背景 goproxy を使って HTTP Proxy server を作った その Proxy server は AWS Fargate で動作していてNLBでロードバランシングされている NLBはターゲットタイプがインスタンス以外だとRemote IPがNLBのものになってしまう Proxy server でクライアントのRe…

terraform コマンドをプロジェクトごとにポータブルにする

terraform コマンドのバージョンをプロジェクトごとに明記しておいても、それぞれのプロジェクトごとに都度指定のバージョンのバイナリを落としてくるのはちょっと面倒くさいので、 それを docker をつかって解決できないか考えてみました。以下のものを使い…

検索・集計がしやすいロギング環境の構築

調査しやすいロギング環境について社内勉強会で発表したやつをまとめたやつです。 問題が起きたときなどにログを調査することはよくあることだが、ここでは調査しやすログとはどのようなもので、どうやって構築していくかについて述べる。 何も考えずにロギ…

ClamAVによるアップロードファイルのウィルスチェック

とあるRailsアプリケーションでアップロードされたファイルをウィルスチェックしたいというのがあって、実装したのでメモ。 方針 ClamAVというオープンソースのアンチウィルスエンジンがあるのでこれを使う。各種言語にクライアントライブラリ(Rubyはclamav-…

git revert したブランチを再度マージする方法

先日あやまって、topic branch を master にマージしてしまったので、 マージコミットを revert しました。のちほど再度 merge しようとしたのですがうまくマージされませんでした。この場合は、git revert したときにできた revert commit に対して git rev…

UniRx を試してみた

Unity でイベント処理などが複雑になってきたので、どうにかできないかと思い UniRx を試しました。 github.com UniRx とは イベントを時系列に並んだシーケンスと捉え、それらを filter したり map したりすることでイベント処理を行うものです。 たとえば…

楽譜描画ライブラリVexFlowを使ってみた

最近、楽譜学習アプリを作っており楽譜を描画する必要があるので、なにか便利なライブラリがないか調べていたら VexFlowというJavaScript製のライブラリがあることを知りました。 このライブラリは、JavaScriptで五線や音符を操作するAPIを呼び出すことでSVG…

GitHubのContributionsを埋めるゲームを全クリした

去年の4月から1日1コミットを目標にしていましたが、先日全部埋めることができました。 正直いって結構しんどかったですが、常に進捗を意識できたのと、コミットの単位を短くなるようにできたのは良かったと思います。 しかし、体調があまり良くない時は正直…

WebMock のしくみを調査

前回のエントリーで cpp-netlib の client をモックにすげ替えることに成功しましたが、 任意のレスポンスを返すためにはどのようしたらいいか、という点は述べていませんでした。 このモックは、Ruby の WebMock のような設計にしようと考えているので、 We…

cpp-netlib にモックがほしい

C++でネットワークプログラミングをするときは、cpp-netlib という Boost.Asio をベース としたライブラリを使っているのですが、モックがほしいことがあります。 例えば下記のコードで、http://www.boost.org に実際にアクセスするのではなく任意のレスポン…

FirebrewのAnsibleモジュールを作ってみた

FirefoxのアドオンをCUIから管理するツールを作ってみたで紹介したFirebrewのAnsibleモジュールを作ってみました。GitHubにて公開しています。 インストール方法 このモジュールを使用したい Ansible Playbook があるディレクトリ直下にlibrary/ディレクトリ…

FirefoxのアドオンをCUIから管理するツールを作ってみた

先日、Firebrewというツールを作成し、RubyGemsにて公開しました。 Githubにて開発しています。 コレは何? FirefoxアドオンをCUIからインストールしたりアンインストールしたりできる、いわゆるパッケージマネージャーと呼ばれるものです。 これを用いれば…

indentLineプラグインを導入するとYAMLの構文強調がおかしくなる

Vimにはインデント階層を可視化してくれる indentLine というプラグインがあります。 このプラグイン、便利なので僕も使っているのですが、ひとつ問題点があります。このプラグインを導入すると、YAMLの構文強調がおかしくなるのです。 Fig. 1 indentLine無…

YAMLの構文強調・インデントを行うVimプラグインを作ってみた

はじめに Vim標準のYAMLのインデントルールが気に入らなかったので、Vim script の勉強がてらにプラグインを作ってみました。 YAMLの構文は、YAML Ain’t Markup Language (YAML™) Version 1.2 を参考にしています。プラグインのソースは、 Github: mrk21/yam…