脳みそスワップアウト

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

.vbox が消えた

.vbox が消えて、VMを起動できなくなった。
.vbox-prev と vbox-tmp という2つのファイルがあった。

内容は の lastStateChange が、prevの方が古いだけで他は一緒だった。
これを .vbox にリネームしたら起動した。

m4a を mp3 に変換

iPhone のボイスメモで録音したものを共有するときなど。

ffmpeg -i input.m4a -ab 192k output.mp3

composerでローカルディスクのgitリポジトリを使う

repositories でディレクトリを指定すればよい。
Bareリポジトリじゃなくて大丈夫。

バージョンは、ブランチ名-dev を指定する。

指定したディレクトリ直下の composer.json の name が、require した名前と合致していればいい。

composer.json

{
  "repositories": [
    { "type": "vcs", "url": "/projects/poppy/testLib" }
  ],
  
  "require": {
    "iamapen/testlib": "1.1.x-dev"
  }
}
続きを読む

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;
};

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