動かざることバグの如し

近づきたいよ 君の理想に

Dockerのphp-fpmでImageMagickを使う方法

やりたいこと

PHPの公式ドキュメントを見て貰えればわかるように、PHPからImageMagickを通して多くの画像処理を行うことができる。が、当然サーバー上にImageMagickがインストールされてなければならない。

docker上で操作したいときに若干はハマったのでメモ

環境

今使ってるイメージは公式のphp:5.6-fpm

インストール

FROM php:5.6-fpm

# (略)

RUN apt-get update && apt-get install libmagickwand-dev -y --no-install-recommends \
  && pecl install imagick-3.4.3 \
  && docker-php-ext-enable imagick

libmagickwand-devが結構ポイントで、ただのImageMagickではダメだった。。

RailsのActionMailerで差出人のメールアドレスを取得したい

環境

やりたいこと

ActionMailerを使ったメール送信周りのテストをしていて、

# メール1通送れているか
expect(ActionMailer::Base.deliveries.size).to eq(1)
mail = ActionMailer::Base.deliveries.last

expect(mail.subject).to eq("たいとる")
expect(mail.to).to eq(['aaaaaaaaaaa@example.com'])
expect(mail.body.encoded).to include("ほげほげ")
expect(mail.from).to eq(["aaaaa@example.com"])

といった形でメールに対してテストができる。mail.fromで差出人のメールアドレスが取得できるのだが、

はてなブログサポート事務局 <hatena@example.com>

のように名前を含むメールアドレスになってしまうと何故かうまく取れなくなる。(でテストにコケる

解決方法

mail[:from].value

で名前ごと取れる。つまり

mail = ActionMailer::Base.deliveries.last
expect(mail[:from].value).to eq('はてなブログサポート事務局 <hatena@example.com>')

みたいに可能。ベストなやり方かはわからんが

ちなみにこのやり方で取れるのは5以降らしい

参考リンク

msgpackをコマンドラインで使う

MessagePackと呼ばれるJSONのような、、だけど似て非なるオブジェクト形式がある。

具体的な説明は公式ドキュメントに譲るとして、phprubyPythonで扱うライブラリはあるものの、linuxのコマンドで使いたかったのでメモ

インストール方法

msgpack-toolsというのがあるのでありがたく使う

公式ドキュメントではパッケージでもインストールできるようだが、うまくいかなかったのでおとなしく自ビルドする。

git clone https://github.com/ludocode/msgpack-tools.git
cd msgpack-tools

ビルド自体は単純である。が、md2manに依存しているので gem install md2manが必要

./configure
make
make install

確認

$ echo '{"compact": true, "schema": 0}' | json2msgpack  | msgpack2json
{"compact":true,"schema":0}~/tmp/msgpack-tools

おk

毎回flexboxでググるのツラくなってきたので自分用まとめ

多分一番見やすい基本的な使い方まとめ

応用まとめ

ロゴだけ左端に、ほかは右寄せにってのがすごく役に立った(:first-child と margin-right: auto; の合わせ技)

playground