FOSTEX GX100

last-updated at Nov 10, 2014 01:29, in /audio

Canon EOS M, EF-M22mm F2 STM, ISO 1600, f/2.0, 1/40 sec, 0 EV

親父から「スピーカー処分しようと思うけど要るか?」とメールが来たので、ホイホイもらってきた。

そこそこお高いだけあって、すごくいい。2000円ちょいの中華アンプで鳴らすのが申し訳なくなるくらい。

既存のテキストを Git 管理下に置くスクリプト

last-updated at Oct 25, 2014 01:49, in /tech/blosxom

ちょっと前に書いた、既存の blosxom 用テキスト群から Git リポジトリを作るスクリプト。 git init したワーキングコピーにドバッとテキストを置いて叩くと、各ファイルの mtime を元にコミット日時を設定して個別にコミットしてくれる。

#!/bin/bash
find . -name \*.txt | sort | while read file; do
    time="`stat --format=%Y $file` +0900"
    git add $file
    env GIT_AUTHOR_DATE="$time" GIT_COMMITTER_DATE="$time" \
        git commit -m 'initial revision' $file
done

まぁ、これを書いたきっかけは「テキストを Git 管理できたらナウいんじゃね?」という単なる思いつきで、生の .git を直接データとして見にいく blosxom プラグインもちょっと書いてはみたんだけど、

  • 履歴をどうテンプレートに渡して展開するのか
    • 標準のテンプレートじゃ無理だろ
  • 本当に些細な typo やマークアップの修正も問答無用で更新扱いにするのか
    • さらに言えば、その些細な修正の履歴が見えたところで誰得なのか
  • diff 見せなきゃ旨味半減だけど、そのインタフェースをどう用意するのか

とか考え始めたらいろいろめんどくさくなったので、きっとこのままお蔵入りだろうな。

Lepy (Lepai) LP-V3S

last-updated at Sep 03, 2014 23:34, in /audio

というわけでFOSTEXのAP05を通販で買おうと思ったんだけど、調べてたらLepaiという中華メーカーがアレゲな小型アンプを出してるのを知り、気がついたらLP-V3SをAmazonでポチってた。巷での評判はピンキリだけど、まぁハズレでもいいやくらいのノリで。だって、ついでに一緒にポチったCDよりも安いし。

我が家のオーディオ一式

スピーカーは親父から15年くらい前にもらったDIATONE DS-107V。引っ越しの時にそのまま段ボール箱に放り込んだりしても全然へっちゃらなタフなやつ。初代(?)J Soul Brothersの1stシングルのオマケだったステッカーがすっかりくすんでる。ついでにタブレットは、これまた親父からもらったAcer ICONIA TAB A500。OSが古くてもう正直使い物にならないので、いまや完全に音楽再生専用。もらいもんだらけ。

昔はこのスピーカーを鳴らすために、1000円くらいのやっすいアクティブスピーカーの基盤からケーブル引っぱり出してアンプ代わりにしたりしてたなぁ。電気計算とかガン無視で。懐かしい。最近はホームセンターで買ったやっすいスピーカーセットのサブウーファーをアンプ代わりにしてたんだけどこれがまたノイジーで、替えたいなぁと常々思ってた次第。

でLP-V3Sですよ。これがなかなか、上から下までちゃんと鳴る。ノブ回すと少しチリチリするけど、それ以外では全くと言っていいほどノイズが聞こえない。前モデルでは目立ってたという噂のポップノイズもほとんどない。まぁ音源・スピーカー・再生環境から聴く耳まで含めて音質云々を語れるレベルではないので、そのあたりのレビューはその筋のエンスーな皆様に任せます。少なくとも自分的には十分満足できるクオリティ。

ACアダプタは部屋を探したらいくつか出て来たので本体だけ買ったんだけど、古いLCDディスプレイについてた12V/3.4A出力のが普通に使えた。5A出せるのもあるにはあるんだけど、めんどくさいので音質の比較とかはしてない。本体には2Aと表記されてる一方で箱には3Aがベストと書いてあったりするけど、そのへんは謎。

機能面での印象は予想(覚悟?)してたよりも全然良いんだけど、モノとしての作りは正直ひどい。ボリュームノブは偏心してて12時過ぎの位置で下側がこすれてたので、上方向に少しだけ、ジワッと力を掛けたら直った。フレームは歪んでて置くとガタつくので、気が向いたら足をつけようかなぁと思ってるところ。あと御多分に洩れずうちのも入出力チャンネルがひっくり返ってるので、入力側のRCA端子を左右逆に繋いでごまかした。ちなみにミニピンプラグ入力の方は使う予定がないので未チェック。

このいかにも安っぽくて、実際ひどい作りなんだけど、なかなかどうして満足に動くというあたり、一時期ハマってたソビエトカメラに通ずるものがあってとても微笑ましい。で、ソビカメと一緒で使ってるうちにボロが出てきたりもするかもしれないけど、そしたらまた追記するかも。ひとまず第一印象としては、十分使えるやつでした、ということで。

BitTorrent Sync のシークレットキーに関する考察

last-updated at Jun 03, 2014 00:41, in /tech/bittorrent_sync

BitTorrent Sync は、チョー大まかに言うと

  1. デバイス A で、共有したいフォルダ fシークレットキー を生成する
  2. デバイス B で、 f と同期したいローカルのフォルダ f' と、先ほど生成した シークレットキー を設定する

というたったの2ステップで、デバイス ABff' を同期させることができる。 実際使ってみるとチョーお手軽。

で、「この仕組みって本当に安全なの?」という素朴な疑問が生まれる。 だってたった一つの、高々数十Byteの文字列を知ってさえいれば、他人のデータだろうが難なく読み取ることができちゃうわけで。 狙って攻撃できたり、そうでなくてもうっかり衝突しちゃったりとかしないの?

やっぱり皆おっかなびっくりらしく、フォーラムでも疑問の声は上がってたりする。 そうだよねぇ。

で、自分でもちょっと調べてみた。

適当なこと言ってるかもしれないので、デベロッパ向けのドキュメントユーザガイドも是非読んでみてください。 で、間違いとかあれば指摘していただけると‥‥。

シークレットキーの実際

シークレットキーの長さは仕様上、 20 byte (160 bit) もしくはそれ以上と決まってる。 自動生成すると33文字の英数字から成る文字列ができるけど、頭1文字はどうやら便宜上権限を示すらしく、実際のキーは残りの32文字。この文字列、可読性を上げるために Base32 エンコードされたものなので、 32 byte / 8 byte * 40 bit で確かに 20 byte (160 bit) ある。

試しに自動生成してみたシークレットキーがこれ。

                           12345678901234567890123456789012
                           +--------+---------+---------+--
シークレットキー          ACGT66NJPIFGVY6YI3GWCWJRYOBOK6XYN
読込専用シークレットキー  BJFMTOC234PX35OZYG4FZP7IMJVJ5KWXM

読込専用 シークレットキーは、シークレットキーからさらに一方向なロジック (じゃなきゃ意味ないし) で自動生成されたもの。 これを知ってるとそのフォルダを読むことだけはできる。

あと ワンタイム シークレットキーというのもあるらしいけど、興味のある人は自分で調べてください。

シークレットキーは門外不出

プロトコル上、シークレットキーが生でネットワーク上を流れることはない。 その代わりに SHA1(Secret):ip:port みたいなシークレットキーのハッシュ値を含んだ情報を各ピアが発信して、P2Pネットワークの中で同じシークレットキーを持ってるピアを探し出してる。

さらにピア同士は、お互いが知っているシークレットキーから生成した AES 暗号鍵を使ってデータをやり取りするので、シークレットキーを知らないピアが相手をだまくらかしてデータを盗むことは理論上不可能。

ピア同士のネットワーク構成によっては第三者ピア (リレーサーバ) を経由したりすることもあるらしいけど、基本はやっぱり一緒。

シークレットキーは十分長い

たとえば「地球上のすべての砂粒にIPアドレスを振ってもまだ余る」 (大学の講義で某エラい人が言ってた) と評される IPv6 のアドレス空間は 128bit 。これはつまり、

2^128 =
340282366920938463463374607431768211456 (約340潤) 個

のアドレスが存在し得るということ。

一方で BitTorrent Sync のシークレットキーは前述の通り (最小) 160bit。つまり、

2^160 =
1461501637330902918203684832716283019655932542976 (約1.5極) 個

のシークレットキーが存在し得るということ。ちなみに は 10^48 で、恒河沙の一つ下。ごうがしゃて。

さぁクラックしましょう。 地球上のすべての砂粒の 4294967296 倍よりもさらに多い砂粒の中からお目当ての一粒を探し出すには、仮に人手をかき集めて一秒に千粒チェックできたとして、果たして何年かかるでしょうか?

2^160 / 1000 / (60 * 60 * 24 * 365) =
46343912903694283301740386628497051612 年

ざっと46澗年かければ見つかりますね。半分くらいでヒットすると期待しても23澗年くらい。 余裕で人類滅ぶ、というか地球が太陽に呑まれてるわ。

次に、仮に全世界で十億個のフォルダが既に共有されているとして、ランダムで自動生成した一個のシークレットキーがうっかり他のフォルダのシークレットキー (読込専用も含む) に一致しちゃう確率は、

2 / 2^160 * 1000000000 =
約 0.0000000000000000000000000000000000001 %

730潤回くらい生成してると、少なくとも一つはヒットしちゃう計算ですね。 730かんかいて。

まとめ

乱数生成器が高品質な乱数を生成していて、 BitTorrent Sync の実装にバグがない限り、シークレットキーは十分な計算量的安全性を持ってるはず。 ただし所詮は確率計算上の話なので、世界のどこかで誰かが今頃うっかり俺のシークレットキーの一つを生成しちゃってて、身に覚えもなく落ちてきた大量の写真を見てしきりに首を傾げてるかもしれない。 そして俺は逆に、あまりのラッキーさに感激して失禁しちゃうはず。

まぁマジメな話、シークレットキーはデバイス本体と同じくらい本気で守りましょう。 平文でネットワークに流さないとか、物理的な紛失に注意するとか、そういう基本的なことだけど。 あと、できるだけ小分けしたり読込専用キーを上手く使って、必要なデバイスに必要なキーだけ入れるよう心がけると、万一の際に被害を最小限に抑えられるかと。

「もしや、キーが漏れたかも」と不安に駆られた時は、落ち着いて全部のデバイスのシークレットキーを変更して回りましょう。 少なくとも変更し終わった瞬間からは、再び1.5極の砂粒に潜ることができます。

FreeNAS 稼働開始

last-updated at Jun 01, 2014 03:23, in /tech/freenas

というわけでうっかりポチった HP ProLiant MicroServer N54L、とりあえず FreeNAS 入れて ZFS と戯れてみたけど、想像してた以上にメモリ喰らいなのがよくわかった。 パターン少ないけど、 fio で適当にベンチってみた結果、データサイズが小さいとアホみたいな性能出てウケる。

で、 replace とか expand とかの確認も終わったので、ちゃんと NAS としてセットアップしましょうと。

OS

ZFS 使いたいけど、たとえば FreeBSD でイチから構築するのは面倒だし、ストレージ領域用以外に HDD を積む気もないし、 USB スティック向けにいろいろ気を配るのも地味に大変そうなので、やっぱり安直に FreeNAS 一択。まぁ実際使ってみると FreeNAS が俺の中で至上かと言えば決してそうではないんだけど (特にプラグイン jail まわりは未だにすごく気持ち悪い)、どうせ安定稼働始めちゃえば意識しなくなるんだし、と自己暗示。

8GB の USB メモリにイメージ書き込んで Web からぽちぽちしてセットアップ完了。

ディスク構成

先代の ReadyNAS Duo は

  • 2 x 1TB HDD … X-RAIDミラー
  • 1 x 1TB USB HDD … 定期バックアップ

といういわば時間差三方向ミラー構成で、実効容量と実容量の比率で見れば贅沢な構成だった。 これは万一筐体が故障したときにX-RAIDの手復旧が難しそうなので、その保険を掛けてたつもり。

ストレージ容量はそんなに必要ないし、わざわざ RAID-Z 組んでいざってときにディスク2本から復旧ってのもトラブりそうなので、結局 FreeNAS でも普通に2本ミラーでスタート。 将来的にもし容量が欲しくなったら expand するかミラー足すことにする。 その場合、難を言えば、ディスク4本構成で RAID10 相当とか耐障害性の観点で至極残念だけど、今の段階で RAID-Z2 を組んどくモチベーションも特にない。

ハードウェア依存から晴れて脱却した (はず) ので、スナップショットとかバックアップとかは気が向いたら考える。

ファイル共有

Dropbox (使ったことないけど) いいなぁ、と前々から思ってたので、プライベートクラウド()的な感じを目指すことにする。

  • ローカルストレージと随時、勝手に同期してほしい。
  • Mac と Android のクロスプラットホームは必須。無理ならもう CIFS でいい。
  • LAN ならともかくインターネットに出るなら暗号化必須。無理ならもう AFP でいい。

この条件であーだこーだと検討した結果、 BitTorrent Sync を採用することにした。 FreeNASのプラグインもあるし。 他に ownCloud も候補ではあったけど、機能がゴテゴテしてるしクライアントアプリの評判も芳しくないので今回は見送り。

如何せんプロプライエタリなので BitTorrent Inc. がいつまでサポートしてくれるんだろう、という不安はうっすらあるものの、まぁその時はその時。あと、少なくとも Btsync プラグインの 1.3.94 では何をどう頑張っても umask が効かない。ソースから裏取ることもできないのでもんにょりしつつ、同期対象のフォルダは AFP とか別の手段では触らないことにした。

そういった細かい不満はあるものの、実際使った感じはすごく快適。 ビールを奢りたい。 1000BASE-T な LAN だと 30MB/s 程度は出るけど、そもそもそんなに速度が必要なものでもなかった。

VPSのバックアップ

地味に一番悩んだのがこれ。 Ready NAS Duo では Bacula プラグインを入れて Director と Storage Daemon を動かし、VPS (要はこの鯖) の File Daemon から TLS 通信でデータを吸い出してた。

FreeNAS にも Bacula プラグインはあるけど Storage Daemon のみで、しかも Web UI からは TLS 絡みの設定ができない。 Web UI があるものは極力そっちから触りたい (齟齬が起きたら嫌) ので手でガシガシ設定するのも受け入れ難く、そうなると Bacula は使えない。

で、結論としては必要なディレクトリだけ cpio なりでアーカイブして、 rsync over SSH で吸い出すことにする。 まだ設定してないけど。 Bacula 使ってた頃は「鯖吹っ飛んでもベアメタルリストアできるぜフハハ」とか思ってたけど、VPS のベアメタルリストア手法を確立してるわけでもないし、実際はどうせ手で再構築するんだろう?と自己暗示。

まとめ

そんなこんなで妥協と自己暗示を積み重ねながらも無事に FreeNAS が稼働を開始し、2010年の2月から頑張ってくれてた先代 ReadyNAS Duo v1 は (念のため) ディスク1本を残して箱に帰って行きましたとさ。

妙なこだわりを捨て去れば生き易いのかもしれない、としみじみ感じる今日この頃。

« 1 2 3 4 5 »