脳みそスワップアウト

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

phpunit/dbunit のフォーク

phpunit/dbunit 終了 の続き

phpunit8 で動くようにこそこそ手直しをしていたのだけど (iamapen/dbunit)

すでに先人がいるのを発見した。
とくに kornrunner/dbunit の方がリリースタグも打っていて丁寧。

オリジナルが 4.0 で開発停止だから、バージョンは 4.1 として、self.version で replace されている。
phpunit8 だけでなく、phpunit7 への後方互換も持たせている模様。

packagistにも登録されている(kornrunner/dbunit) ので、こちらを使った方がよさそう。

「本気でメンテしていくつもりがないならフォークはダメよ」という注意書きを読んで私は登録を断念した。

phpunit/dbunit 終了

phpunit/dbunit が終了した。 Wanted (Maybe?): New Maintainer · Issue #217 · sebastianbergmann/dbunit · GitHub
2019-02時点で最新のphpunit8ではもう使えない。

私はこのツールを愛用してきた。
iamapen/commentable-data-set というニッチなものを作るくらいには。

とくに規模の小さなwebアプリの場合、ビジネスロジックがあまりない、少ない。
するとDB読み書きの比率が大きくなり、テスト対象としての優先度も上がる。

DB読み書きが中心のアプリにとって「プログラマが書いたSQLがビジネス要件的に正しいのか」はとても重要であり、このテストはモックではできない。

適切なデータセットに対してDBMSSQLを実行させて、その結果を確認する必要がある。
テストフェーズで目視で確認しているはずだ。
そこを自動化できる phpunit/dbunit はとても有用だった。

今日ではデータソースはRDBだけじゃないし、単体テストにDBは含めないのが流行、という話でもあるのだろう。

とはいえこれ以上のSQLのテストツールを知らない。
さて、どうしようか、、。

ffmpegで無劣化カット

無劣化でカット(切り取り・切り出し)する方法のメモ。
要は無変換とレンジを指定するのだけど、書き方が特殊。とくに -ss
無変換なので処理はとても速い。

input.mp4 の 1分38秒 時点から 46秒間 切り取り、output.mp4 として出力(無劣化)

ffmpeg -ss 00:01:38 -i input.mp4 -ss 0 -t 00:00:46 \
-c:v copy -c:a copy -async 1 output.mp4
-ss 開始時刻までシーク
-i 元ファイル
-ss 0 切り取り開始(==開始時刻)
-t 切り取る秒数(開始時刻との差分)
-c:v copy 映像無変換(無劣化)
-c:a copy 音声無変換(無劣化)
-async 1 音声同期を最初だけにして、後続のサンプルはそのまま

Windows7で記号入りのファイル名を検索する

Windows7(以降?)、どうもデフォルトでインデックスを使った検索になっているようで、独特な挙動をして悩む。

ファイル名で検索するには以下のようにする。

  • アンスコで始まる(前方一致)
~"_*"
  • アンスコを含む(部分一致)
~"*_*"

その他

続きを読む

ゴミ箱に触るとフリーズ

とあるWindows7Pro 64bitのマシンで、デスクトップのゴミ箱を右クリックすると固まるという現象が起きていた。
正確にいうと、デスクトップが固まる。(explorer.exe)

ゴミ箱の実体を削除すると発生しなくなった。(全ドライブ)

リモートでkillall - 脳みそスワップアウト の方法でexplorer.exe を全終了し、その後 C:\Windows\explorer.exe を実行するとデスクトップが復帰する。
その後この手順でゴミ箱自体を全削除すれば回復できる。

C:\Windows\system32>rd /s c:\$Recycle.Bin
c:\$Recycle.Bin、よろしいですか (Y/N)? y

C:\Windows\system32>rd /s e:\$Recycle.Bin
e:\$Recycle.Bin、よろしいですか (Y/N)? y

C:\Windows\system32>rd /s f:\$Recycle.Bin
f:\$Recycle.Bin、よろしいですか (Y/N)? y

C:\Windows\system32>rd /s h:\$Recycle.Bin
h:\$Recycle.Bin、よろしいですか (Y/N)? y

なお、これらはファイルがゴミ箱に行くシチュエーションで勝手に再生成される。