Apr 18, 2016

本日4月18日付でトレタに入社した。

長らく Perl を中心にフルスタックな形でやってきたけれど、今年は Ruby をメインにしつつサーバーサイドに集中して技術を磨きたい。

あと、有給消化期間に行ったシドニーひとり旅では予定どおり英語について打ちのめされた来たので、やはり英語は今年何とかしたい(シドニーはとてもよいところだったのでまた行きたい)。

がんばろう。

Feb 12, 2016

おととい使い始めた Qiita に引き続き投稿した。

この投稿とは関係ないけど、zaw か peco かという点では Qiita 内では圧倒的に peco のようだけど、 peco を試してみた時(だいぶ前なので今はちがうかも)補完候補選びで画面全体をつかうのがどうにも慣れず...。

zaw はカーソル位置のすぐ下に候補がでるので、

  • 視点移動がすくない
  • 画面大幅に書き換わらないので脳内コンテキストスイッチすくない

という2点が優れてるので zaw をずっと使ってるゾゥ。

Feb 10, 2016

会社で Qiita Organization 作っていくとかもあり Qiita に初投稿してみた。

初投稿をまず下書きしてみようと「投稿する」ボタンの横のプルダウンから「下書き」をクリックしたところ下書き一覧が表示され(下書き画面があるのかという思い込み)、そこに見に覚えのないだいぶ前に作ったらしいこの記事の下書きがあった...。 無駄に2回びっくり。

Jan 16, 2016

そういえばずっと Gem 化しないまま使っていた capistrano-scm-tar を rubygems.org にアップロードしていたのだった(気づいたら年が変わっている...)。

名前の通り Capistrano 3 の scm として振る舞いつつも実際はなんもしなくて、ただ tarball をデプロイするためのプラグイン。

設定は deploy.rb などで scm を指定するのみ。

set :scm, :tar

デプロイは Capistrano 実行環境にファイルをアップロードするなりして、package 環境変数にそのパスを与える。

$ cap deploy package=/tmp/v1.0.0.tar.gz

結局 tar。

Oct 03, 2015

Mojolicious で X-Forwarded-For からプロキシではなくクライアントの IP っぽいものをとってこれるプラグインを書いた。

使い方は SYNOPSIS の通り、

use Mojolicious::Lite;

plugin 'ClientIP';

get '/' => sub {
    my $c = shift;
    $c->render(text => $c->client_ip);
};

Mojolicious 的にはリモートアドレス取るとなったら $c->tx->remote_address を使うのが通常だと思われるけど、これは XFF があったら最後の IP を単に返すだけ。一方このプラグインではプライベートネットワークなアドレスは無視するようになっているので、

X-Forwarded-For: 192.0.2.100 10.0.0.2 10.0.0.1

みたいの受け取った時に、

$c->tx->remote_address;  # => '10.0.0.1'
$c->clien_ip;            # => '192.0.2.100'

こういう違いが出る。XFF がなかったり、全てプライベートアドレスだったりした場合は $c->tx->remote_address が呼ばれるので、環境やミドルウェア的なものにあんまり左右されずに『ユーザーの IP』っぽいものをとりたい時に普段使いできるはず。

通常これだけで事足りるはずだけど、事情があって無視したい グローバル IP があったりもしたので、任意の IP を追加で無視できるようにもなってる。これも SYNOPSIS の通り、

plugin 'ClientIP', ignore => [qw(192.0.2.1 192.0.2.16/28)];

CIDR 使えるので楽。

さすがに手段も目的も当たり前すぎるものなのでもうプラグインあるだろと思ったけどみあたらなかったので作った。