upinetree's memo

Web系技術の話題や日常について。

docker diff が勉強に便利

たとえば

% docker run -it --name hoge ubuntu /bin/bash
root@db1da9fc72e9:/# useradd hoge
root@db1da9fc72e9:/# exit
% docker diff hoge
C /etc
C /etc/group
A /etc/group-
C /etc/gshadow
A /etc/gshadow-
C /etc/passwd
A /etc/passwd-
C /etc/shadow
A /etc/shadow-
C /etc/subgid
A /etc/subgid-
C /etc/subuid
A /etc/subuid-
C /root
A /root/.bash_history
C /var
C /var/log
C /var/log/faillog
C /var/log/lastlog
% docker start -i hoge
root@db1da9fc72e9:/# diff /etc/passwd{,-}
...

みたいな感じにコマンドがどういう変更を行うのかを追いやすい。

ちなみに先頭のアルファベットの意味は下記の通り。

  • A - Add
  • D - Delete
  • C - Change

差分も表示してくれると嬉しいがそういうオプションはなさそう。 そういうときはdocker exportしてtarballを吐いて、コンテナ間の差分を見れば良いのかな。

Dockerコンテナに対してAnsibleで雑にプロビジョニングする

Packer の ansible provisioner とか使っていると、変更差分の動作確認したくなってくる。 毎回 packer build するのは時間がかかり休憩が捗りすぎて進捗がでないという問題点があり、なんとかしたい。

しかしそのために環境作るのも面倒だ。そこで前回出力した docker image を元にコンテナ立ち上げてそこに ansible 走らせたらええやんと思いつく。 といってもsshd立てるのも面倒だし微妙らしいので方法を探していたら、どうやら Docker Connection Plugin というものが標準装備されているらしい。

$ docker-compose run --rm -u root web bash
$ ansible-playbook -i web_run_1, -c docker ansible/web.yml
  • -i (--inventory)のhostsはコンテナ名
  • -c (--connection)dockerを指定

Pakcer の ansible provisioner が用意する ansible とローカルの ansible のバージョンが違うことがあるのでそれだけ注意。

参考

vimprocのビルドで失敗するとき

vimプラグインマネージャをdein.vimにして(*1)、 Ubuntu 14.04.4 のVM:call dein#install()したら下記のような感じで怒られた。

(*1)たぶんdein.vimにしたことは関係ない

vimproc's DLL: "/home/vagrant/.vim/bundle/repos/github.com/Shougo/vimproc.vim/lib/vimproc_linux64.so" is not found.  Please read :help vimproc and make it.

vimprocがないとUnite.vim/asyncとか/gitとか使えなくて困るのでなんとかする。

エラーメッセージによると、makeしてsoを作れば良いらしい。

% .vim/bundle/repos/github.com/Shougo/vimproc.vim
% make
clang -W -O2 -Wall -Wno-unused -Wno-unused-parameter -std=gnu99 -pedantic -shared -fPIC  -o lib/vimproc_linux64.so src/proc.c -lutil
make[1]: clang: コマンドが見つかりませんでした
make[1]: *** [lib/vimproc_linux64.so] エラー 127
make[1]: ディレクトリ `/home/vagrant/.vim/bundle/repos/github.com/Shougo/vimproc.vim' から出ます
make: *** [all] エラー 2

ふむ。

% which clang
clang not found
% which gcc
/usr/bin/gcc

gccならある。

% make CC=gcc
% file lib/vimproc_linux64.so
lib/vimproc_linux64.so: ELF 64-bit LSB  shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=c624b2200f2f23cfff02e7c019707d36d0bff381, not stripped

OK。

(本当はclang入れたほうが良いんだろうけど面倒くさくて…)

ブログタイトルと説明を少し変えた

具体的にはこんな感じ:

- upinetree's tech blog
+ upinetree's memo

Qiitaに書き始めてからこのブログ全然書いてないのでもったいないなーと思い、ブログを書く敷居を少し下げてみました。

Qiitaにはちゃんと検証した技術ネタを書いて、こちらにはメモ的なものを残していければなと。

あと気が向いたら日常とか考えていることとか書くのも良いですね。気が向くかわからんけど。

Digitech RP360のファームウェア更新に失敗した時の直し方

http://www.digitechjapan.jp/products/RP360/rp360.html

これ(マルチエフェクター)の話です。 ちょっと焦ったのと、日本語の情報がなかったので書き残しておきます。

結論

RP360本体を再起動し、Windows10以外のマシンでアップデートする。

詳しく

先日、Windows10 PCに専用ライブラリアンアプリNexus を入れて起動したらファームウェアアップデートせよと言われたので、表示に従ってアップデートを試みました。 ところが更新に失敗。

RP360側のモニタは

RP 360 Upd V2.0.0.0
IN UPDATER: WAITING FOR HOST…

と表示したままで、再起動しても変化せず。

下記に類似の現象が何件か報告されている模様だったので読んでみることに。

すると、2番めの記事の一番後ろに「Windows10じゃ動かないよ。Vistaでアップデートしたら解決したよ」とのコメントが…。

僕はVista持ってなかったので、Mac (Yosemite)でもう一度アップデートを行うと、成功。 まあなんかWindows10大丈夫かとは思っていたけど、まさかソフトウェアが起動しないとかじゃなくて、ファームウェアがいかれるとは思ってなかった。 そしてあとから確認すると、こんな記載が…。

注意書きも読まずに最新バージョンのOSを常に使ってるとハマるよという教訓でした。 直ってよかった。

rails newのときのテンプレのアレ作った

rails newするたびに同じ設定するの面倒になったのでマイテンプレつくった。

https://github.com/upinetree/rails_template

まだ途中だけど、ちょっとずつ育てていこうかなと〜。

参考:

転職から1年経ったのでTokyuRuby会議08で樽酒割った

と書いてみたものの、題名の前半と後半は実はあんまり因果関係ないです。

僕がこんなエントリを書いて転職してから、はや一年が経ちました。

2013-11-01 - 転職します - upinetree's tech blog

今読むと妙に力が入っていて恥ずかしい感じがします。一年しか経ってないのに。 でも、たぶんこれはこのときしか書けないことだったんだろうなあ。

一方で、TokyuRuby会議が11/29に開催されました。

TokyuRuby会議08 - Regional RubyKaigi

このイベントで、弊社は樽酒を提供する形で支援していて、そのためLT枠と樽酒を割る権利をいただけることになったのでした。 樽酒を割っている写真はインターネット上のどこかに漂っていると思います。樽酒、なかなか簡単には割れないんですね…。

さて、このLTの話が回ってきて、思わず「やります!」って言ってしまったは良いものの、樽酒スポンサーとしてどんな発表をしたものか頭を悩ませていました。 そこで、ちょうど僕が万葉に入社してから一周年だったということを思い出したわけです。 これも良い節目ということで、こんな発表をしてきました。

お酒入ることを想定してだいぶテンション高めです。

この発表で喋ったように、本当に僕を取り巻く環境は全然変わってしまって、一年しか経ってないのに不思議なものだなあと常々思っています。 入社当初はRailsアプリ全然書けなかったですし、前職までずっとWinユーザでLinux系はほとんどさわれなかったのを思い出します。そんな状態でしたが、今は未熟ながらも業務で日々新たな技術、課題と闘いながらたのしく働いています。 (今回はあまり喋れなかったお客さんとの働き方とか、そのための具体的なプラクティス的な話をどこかでしたいなあ)

そして、転職当初からずっと参加している勉強会のyochiyochi.rbにはとても感謝しています。引っ越した翌日だったかに第0会に参加して、最近こちらも一周年でしたね。なんかいろいろあって顔出す頻度落ちてますが今後共よろしくお願いいたします。

ところで、最近自分は甘ったれている気もして、前職で色々やっていたのは逆境だったからこそというのはあったんだなあと気付かされました。(その分内面はボロボロになっていたけど…) いや、甘ったれているというよりは、健全に意見を出せるようになったし、健全に議論できるようになったのかもしれないですが、なんかもうあと一歩踏み出したいなあという思いがあります。

まとまりのない文章になってしまいましたが、つまり、まとめると、"We are hiring!!"ってことです!