Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

ArduinoでTDDをしたい際の選択肢

shuzo-kino.hateblo.jp
C言語のTDDという奴を試しました。
ArduinoC++の方言なので、厳密には適用できないケースは結構あります。
最近は状況が大分マシになったようで、いくつか案がでています。

arduinounit

専用テスト環境arduinounit!
公式配布ではなく、有志がつくったソフトウェアです。

ArduinoTap

更新状態が低調ですが、ArduinoTapという代案もあります。

sortコマンドの"-k"オプションで降順にしたり数値順にしたりする

sortコマンドの"-k"オプションではソート方法について指定ができます。
加えて、数珠繋ぎにできるので複雑なソートも可能です。

実際のところ

3番めのキーで昇順にソート、次いで1番目のキーを降順にソートという処理は以下の通り。

$ sort -t , -k 3 -k 1r  data.csv 
hello,2,a
bar,3,a
yeah,0,b
foo,1,c

sortコマンドでcsvファイル……やtsv的な謎独自ファイルの処理を行なう

実際のところ

こんなデータがあったとします。

$ cat data.csv 
hello,2,ab
yeah,0,ab
foo,1,ab
bar,3,cd

区切り文字を","、三番目のカラムをソートする場合

$ sort -t , -k 3 data.csv 
foo,1,ab
hello,2,ab
yeah,0,ab
bar,3,cd

区切り文字を","、一番目のカラムをソートする場合

$ sort -t , -k 1 data.csv 
bar,3,cd
foo,1,ab
hello,2,ab
yeah,0,ad

OpenSSLでmd5のハッシュ値を出す

OpenSSLでmd5ハッシュ値を出す方法です。
苦労してダウンロードしたUbuntuのイメージファイルが破損してないか調べたり、
テストツールで出した画像を比較したりする時に使えます。

実際のところ

同じテストファイルから、それぞれ別のタイミングで生成した画像o.pngとi.pngがあったとします。
ファイル名が違っても、内容が同じなら同一のハッシュ値がでます。

$ openssl md5 o.png
MD5(o.png)= 31065952ef2171b0dff33f866451e72b
$ openssl md5 i.png
MD5(i.png)= 31065952ef2171b0dff33f866451e72b

他にもSHA1とかもいけます。

参考もと

  • man openssl

PhantomJsで画像やらPDFやらがレンダリングされる場合

PhantomJsにて、バックヤードが自動生成でバイナリファイルを吐く場合
……たとえば画像やPDFを吐く場合は、標準出力に書き出すという技があるようです。
ダウンロードせんともエエのですね……。

実際のところ

アウトプットされた結果は
ハッシュ値比較や特徴点抽出なんかで比べてやれば良いでしょう。
流石に目視比較は不毛にも程がありますからね……。

画像

var webPage = require('webpage');
var page = webPage.create();
var fs = require("fs");

page.viewportSize = {
	width: 1920,
	height: 1080
};

page.open('http://phantomjs.org', function (status) {
  var base64data = page.renderBase64('PNG');
  var fs = require("fs");
  fs.write("/dev/stdout", base64data, "w");
  phantom.exit();
});

デコードするときにはbase64コマンドをつかうといいかと。

$ phantomjs phantomtest.js | base64 -D > i.png

pdf

page.render(output);
var fs = require("fs");
var pdf = fs.read(output);
fs.write("/dev/stdout", pdf, "w");
fs.remove(output);

PhantomJsで画面キャプチャ その2:ちゃんとViewportSizeを設定しよう

shuzo-kino.hateblo.jp
の続きです。
ある程度縦長だったり横幅によってレイアウトの差が大きいページはちゃんとViewportSizeを設定しましょう

実際のところ

var page = require('webpage').create();
page.viewportSize = {
	width: 1920,
	height: 1080
};

page.open('http://github.com/', function() {
  page.render('github.png');
  phantom.exit();
});

……少なくとも、前回よりもは情報がちゃんと出てきましたね。
f:id:shuzo_kino:20170401224838p:plain

フリーダイヤルは着信地域の指定が可能

フリーダイヤルは地域の指定が可能です。
公式によると以下のような区分での指定が可能とのこと。
都道府県単位、隣町まで限定といった指定が可能です。

大ブロック
市外局番2ケタまでの指定。
(例えば、04とご指定になりますと、0425、0474など、市外局番の初めの2ケタが04ではじまるすべての地域からの電話をおつなぎします。)

中ブロック
市外局番3ケタまでの指定。
(例えば、074とご指定になりますと、0742、0745など、市外局番の初めの3ケタが074ではじまるすべての地域からの電話をおつなぎします。)

小ブロック
3分間10円(税別)でかかる地域の指定。
なお、東京03、大阪06、名古屋052の3地域については、さらに細かい単位で指定できます。

番号一個あたりの基本契約金額は、なんと1000円。
自動車のナンバープレートよろしくゴロのいい番号は専門業者が抑えているようですが……。
特に拘らないなら、蕎麦屋の出前番号としても運用可能な位には安いですね。

オプションも中々に豊富です。
取次、転送……果てはWEBで動く管理コンソールなんてものまで。

参考もと

www.0120dial.com