読者です 読者をやめる 読者になる 読者になる

脳みそスワップアウト

揮発性なもので。おもにPHPのこととか。

DmImage の 回転/反転 フィルタ

画像処理の DmImage というライブラリがある。
gd のラッパで、なかなか使いやすいので現在のプロジェクトに導入している。

携帯からの画像アップロードの要件が加わり、Exif の Orientation に基づく 回転/反転 処理が必要になった。

この機能は DmImage には元々は付いていないが、各処理はフィルタで定義していくことができる。
汎用的なものなのでライブラリ化した。
iamapen/dmimage-plugin

今後も、gd ベースの画像処理なら DmImage を使うと思う。
ImageMagick(php-imagick), GraphicsMagick(php-gmacick) と比べて勢力的にはどうなのかしら。

null を 空文字にしたい

そんな時、みんなどうやっているのだろうか。

たとえば WebAPI から JSON で何らかのデータを取得して、
HTMLを描画しようと innerText を使うと値が null だった場合に "null" と表示されてしまう。

JSは経験が少なくてプラクティスがわからない。

/**
 * nullを置換して返す
 * @param {String}|null str
 * @param {String} replace (optional) 初期値 ""
 * @returns {String}
 * @static
 */
StringUtil.ifnull = function(str, replace) {
  if(typeof replace === "undefined") {
    replace = "";
  }

  if(str === null) {
    return replace;
  }
  return str;
};

こんなの自分で書いたりしないよねたぶん。

オブジェクトのフィールドをループする

var obj = {foo:"HOGE", bar:"FUGA"};
Object.keys(obj).forEach(function(v, i){
  console.log(i + " " + v + " = " + obj[v]);
});

prototype は辿らない。
大抵の場合はこれ。

slow_log 関連

オンライン変更の時にいつも忘れるのでメモ

set global slow_query_log_file='/var/log/mysqld/slow_query.log';
set global long_query_time=0.1;
set global slow_query_log=1;

show global variables LIKE '%long%';
show global variables LIKE '%slow%';

openssl でサーバ証明書もろもろ

先日 GlobalSign で証明書を取得したところ、x509 と PKCS7 の両方の形式で証明書が送られてきて、 x509 の場合はさらに中間証明書をこのウェブページから探してねと書かれていて、 どれがどれやらよくわからず探すのが面倒だった。

openssl を使って、PKCS7 → x509 変換をすることができる。 変換した方が中間証明書を探す手間もかからないし、選択ミスも起こらない。

なお、 CertificateChainFile が無くなったのは Apache-2.4.8 からで、2.4.6 以下の場合は 2.2系と同じ設定方法になる。
2.4系からはx509に羅列だ、と思ってると CentOS-7.2 標準のApacheが 2.4.6 だったりしてハマる。

続きを読む