2016-11-30

Docker for Mac でホストの特定のポートにつなぐ方法

Docker for Mac、安定してふつうに動くのですが、Linux 用のものとは違って docker0 のような仮想のネットワークアダプタが生えないために、ホスト OS の特定のポートにコンテナからつなぐ、というようなことが直感的にできません。

業務上、AWS の VPC 上にあるサーバの特定のポートに到達できるように SSH トンネルを刺して、ホスト OS に生やしたポートからアクセスできるようにして、コンテナからつなぎにいきたいことがまれによくあるので、これではこまります 🐰 💦

これでずーっと悩んでいたのですが、公式のドキュメント にひっそりとワークアラウンドが書かれていま...

2016-11-27

mozami.me を HTTPS 化して CI でデプロイできるようにした

ずっとやろうと思いつつ、なんとなくだるくてやってなかった mozami.me の HTTPS 化をしました。

構成は、S3 バケットをオリジンにした CloudFront の distribute を作って、証明書は ACM で発行したものを使ってます。静的なサイトなら定番の構成ですね。さようなら Github Pages..

ついでに、これまたやろうと思いつつだるくてやってなかったブログの自動デプロイを仕込みました。以下のような感じで Travis CI の設定を書くと、master ブランチに merge した瞬間に Middleman のビルドが走ってデプロイされます。

https...

2016-11-20

Itamae 用の Vim syntax プラグイン Itamae.vim の紹介

itamae.vim

インフラの構成管理が Ruby の DSL でできて便利な Itamae ですが、Vim で書いてるときに、キーワードっぽいメソッドに色がつかないのが地味に不便でした。

Itamae 向けの Vim の syntax が、ちょっと探してもなさそうだったのでサクッと作りました。以下の GitHub リポジトリからダウンロードできます。

https://github.com/mozamimy/itamae.vim

これを作るにあたっては、Nymphia.vim で得た知見が生きました。Ruby をベースとしてキーワードをハイライトする、という点では同様なので。

楽しい Itamae...

2016-11-13

SSH config を構造的に書くための Ruby の DSL Nymphia の紹介

たくさんのサーバを日々扱うエンジニアにとって、SSH config をキレイに保つことは大切です。 そもそも SSH config は構造的に書きにくい仕様になっているし、「まあそんなものか..」と妥協して、SSH config のメンテが適当になってしまうこともあると思います。

今までわたしもそうだったのですが、さすがにそろそろ破滅が見えてきていて、なんとなく Ruby で DSL を作るやっていきが高まったので、Ruby の DSL で設定を書くと SSH config を生成する Nymphia というものを作りました。

https://github.com/mozamimy/nymphia

2016-07-17

Itamae でレシピとリソースに共通のヘルパメソッドを定義するテクニック

Itamae 使ってますか?

Chef のような Ruby の DSL による気持ちのいい書き心地と、Ansible のようなシンプルさを兼ね備えており、わたしのお気に入りの構成管理ツールです。

レシピとリソースにヘルパメソッドを追加したい

ある程度 Itamae のレシピが増えてくると、コードを DRY にするために、特定の処理やデータをメソッドとしてくくりだしておいて、各所で使いたくなることがあります。

Itamae は結局 Ruby なので、この目的を達成する方法はいろいろあると思います。この記事では、それなりにキレイと思われる、レシピとリソースに共通のヘルパメソッドを定義...

2016-07-16

Node.js と AWS (S3・Lambda・SES)を使って CLI アップローダを作ってみた

Architecture

AWS の API であそぶ

ちかごろ、業務で本格的に AWS と向き合う機会が増えてきました。AWS の API を使いこなしていろいろなものが作れるようになりたいなと思ったので、前から遊んでみたかった Lambda を使って、CLI で使えるファイルアップローダを作ってみました。

ファイルの受け渡しがめんどくさい問題

ファイルアップローダは巷にたくさんありますが、たいていがブラウザベースで、わたしにとって使いやすいものではありません。CLI でシュッとファイルをアップロードしてメール送れたらな〜と常々思っていたのですが、ある日天啓が。

「AWS の API の勉強がてら、S3...

2016-05-14

Arch Linux の ufw を 0.35-2 にアップデートするときの注意点

Linux でのファイアウォール

Linux でファイアウォールを実現するためにはいろいろな方法があり、ユーザの好みや実現したい目的によってツールを切り替えることができます。挙動を細かくいじりたくて iptables を直接操作するのが好きな人もいれば、firewalld や ufw といった iptables のフロントエンドを使って、楽をするのが好きな人もいます。ちなみにわたしは Arch Linux で ufw を利用しています。

週 1 くらいのペースでパッケージのアップデートをしているのですが、今日 (2016-05-12) ufw を 0.34-1 から 0.35-2 に...

2016-04-27

LGTM 用 gif アニメをシュッと探せる Selemene 0.2.0 をリリースしました

LGTM 用の gif 画像をパッと探してポッと貼れるアプリを Electron で作ってみました で紹介した Selemene をアップデートしました。

Your inventory of animated gifs for LGTM. を実現すべく、いちばん欲しかった倉庫機能を実装しました。以下の GitHub ページからダウンロードできます。

Release v0.2.0

倉庫機能

Selemene

検索画面で適当にポチポチ F キーを押すと、gif アニメをお気に入りして倉庫にしまうことができます。また、L キーで倉庫画面に遷移して、検索画面と同じように、倉庫にしまった gif アニメ...

2016-04-10

Travis CI + Ruby 2.1.10 環境下で curses gem のビルドが落ちる問題のワークアラウンド

TL; DR

.travis.yml に以下のセクションを追加するとビルドが通ります。docker container を使っていない場合は、before_install セクションで sudo apt-get install -y libgmp-dev などとするとよいでしょう。

addons:
  apt:
    packages:
      - libgmp-dev

ワークアラウンドを見つけるまでの道のり

ことの発端

先日、Ruby 2.1.9 および 2.1.10 がリリースされたので、拙作のアプリ、rbtclk の .travis.yml ファイルに 2.1.10 ...

2016-04-07

いまさら「リーダブルコード」

(image from https://www.oreilly.co.jp/books/9784873115658/)

春もうららか、読書が気持ちいい季節になってきました。しばらくの間、夏ぐらいまで自由な時間が増えるので、積んでいる技術書を崩していく活動を始めました。

その中で、プログラマなら誰でも知ってるであろう、「リーダブルコード」をいまさらながらキチンと読んだので、印象に残った部分を読書メモとして残しておきたいと思います。

気づき

全体として 4 部に別れており、第 1 部で「表面上の改善」、第 2 部で「ループとロジックの単純化」、第 3 部で「コードの再構成」、第 4...