Mixxxというアプリが神がかりすぎている件

Mixxxというアプリがすごいです。MacでDJ的な遊び方ができるソフトウェアを探してたんですが、これは必要最低限の機能が備わっていて、しかも無料ということで、少しでも音楽に触れる全てのMacユーザはダウンロードしておいて間違いないソフトウェアだと思います。
DJに関しては全く初心者な私ですが、ショートカットを駆使すると耳コピなんかにも威力を発揮しそうです。以下、便利だと思うショートカットを挙げておきます。

左デッキ(右デッキ)
d(l)       PLAY/POSE
Shift+d(Shift+l) 現在の位置にキューポイントを置く
e(o)       (再生中)キューポイントにジャンプ+停止
           (停止中)キューポイントにいれば押している間キューポイントから再生
                  キューポイントにいなければ新たにキューポイントを設定
a(j)       巻き戻し
s(k)       早送り
Shift+a(Shift+j) 再生中に逆再生。Shiftから先に離すとロックする
zxcv(m,./) キューポイント1,2,3,4の設定およびリプレイ。Shift同時押しで各リセット
t(y)        モニターのON/OFF
F2(F6)      スピードアップ
F1(F5)      スピードダウン
F4(F8)      一時的にスピードアップ
F3(F7)      一時的にスピードダウン
g           クロスフェーダを左へ
h           クロスフェーダを右へ

これで主要な操作は殆ど網羅してるのですが、他にも数字キーで周波数カットやエフェクトのON/OFFが簡単に出来たり、テンポの自動判別やオートシンクなどもできて至れり尽くせりです。

Graphviz練習

Qwerty(英語配列)でAに該当する位置を押すとDvorakではBになるという関係をA→BとしたときのグラフをGraphvizを使って出力してみた。

ソース

// q2d.dot

digraph q2d {
  graph [rankdir = LR];
  "a" -> "a";
  "b" -> "x";
  "c" -> "j";
  "d" -> "e";
  "e" -> ".";
  "f" -> "u";
  "g" -> "i";
  "h" -> "d";
  "i" -> "c";
  "j" -> "h";
  "k" -> "t";
  "l" -> "n";
  "m" -> "m";
  "n" -> "b";
  "o" -> "r";
  "p" -> "l";
  "q" -> "'";
  "r" -> "p";
  "s" -> "o";
  "t" -> "y";
  "u" -> "g";
  "v" -> "k";
  "w" -> ",";
  "x" -> "q";
  "y" -> "f";
  "z" -> ";";
  ";" -> "s";
  "'" -> "-";
  "/" -> "z";
  "-" -> "[";
  "=" -> "]";
  "," -> "w";
  "." -> "v";
  "[" -> "/";
  "]" -> "=";
}

変換

dot -Tgif q2d.dot -o q2d.gif

出力

もっと正方形に収めるにはどうすればいいんでしょう。

cjhde.vktyfugibxq'-[/z;sorpln という文字列は繰り返し打ち続けるとQwertyでもDvorakでも同じ手の動きになるというのが面白いです。

既に PHPUnit が入っている環境で WP-Unit を使うときは要注意?

とあるテストケースがどうしてもエラーになってしまい、ログにも残らないので大変嵌っていた。いろいろ調べた結果、$wpdb->dbh がどっかのタイミングでリソースではなく整数値 0 になってしまっていたというところまでは分かったが、それが何処かを特定するには至らなかった。
そこで、 WP-Unit には PHPUnit が付属しているものの、システムに PHPUnit がインストールされていればそちらを使うようになっていたことを思い出した。いわゆる「相性」の問題かもしれないと、下記の修正を施した。

<?php // wp-content/plugins/wp-unit/WPUnit.php

 $currdir = getcwd();

 //fixes php unit installation problems
-ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . ABSPATH . 'wp-content/plugins/wp-unit');
+ini_set('include_path',  ABSPATH . 'wp-content/plugins/wp-unit' . PATH_SEPARATOR .ini_get('include_path'));


 //require_once('wp-load.php');

つまり、付属のPHPUnitを先に読みに行くようにした。これにより、謎のエラーは出なくなった。後で暇だったら根本的な原因を探る。

WP-Unit の testcase に覚えのないクラスが含まれている件

テストなしで WordPressプラグインの開発をしていたが限界を感じたので、 WP-Unit なるプラグインを導入。 PHPUnit によるテスト体制を整えることを試みる。
が、おもむろにサンプルのテストを走らせてみると、いきなり出鼻を挫かれる。

testcase ディレクトリの中には見当たらない、 PHPUnit_Framework_Warning なるクラスが含まれている。どうやら PHPUnit フレームワークに含まれている、 PHPUnit_Framework_TestCase を継承したクラスのようだ。 WPUnit.php を覗いてみると、どうやら PHPUnit_Framework_TestCase を継承したクラスを全てテストに含んでいるようなので、以下のパッチをあてさせていただいた。

<?php // wp-content/plugins/wp-unit/WPUnit.php

        if($_POST['Submit'] =='Run')
        {
+               $predefined_classes =  wptest_get_all_test_cases();

                /*require all test cases within testcase directory*/
                $files = wptest_get_all_test_files(DIR_TESTCASE);
@@ -61,6 +62,7 @@ function manage_page()
                }

                $classes =  wptest_get_all_test_cases();
+               $classes = array_diff($classes, $predefined_classes);

                // run the tests and print the results