Gururi.log

id:Gururiの記録です。

自作FusionDrive

きっかけ

ひょんなことからMac mini Server版(Mid 2011・SSD256GB+HDD750GB)を入手したので、せっかくだからFusionDriveにしてみたもの。

やりかた

SecondSolution Mac mini(Late2012)自作Fusion Drive化を参考にした。ただし、4番の

diskutil coreStorage createVolume DC59AAB8-180C-4008-978D-13B184A73C09 jhts+ "Macintosh HD" 100%

diskutil coreStorage createVolume DC59AAB8-180C-4008-978D-13B184A73C09 jhfs+ "Macintosh HD" 100%

が正しい。
普段からTerminal使ってる人にとっては、「壊してしまうかもしれないという気持ちに打ち勝てる勇気を持てるか」よりも、こういう間違いの方が怖いと思う(まあ間違ってたら先に進めないだけだったけど)。

結果

Xbenchで測ってみた。常用しているMacBook Air 13(Mid 2011)特盛りが333.93、今回のFusion Driveが281.08とちょっと遅い。 HDDの分なんだろうか?

MacBook Air
Disk Test 333.93
Sequential 205.90
Uncached Write 388.40 238.47 MB/sec [4K blocks]
Uncached Write 350.74 198.45 MB/sec [256K blocks]
Uncached Read 86.38 25.28 MB/sec [4K blocks]
Uncached Read 412.39 207.27 MB/sec [256K blocks]
Random 883.05
Uncached Write 815.36 86.32 MB/sec [4K blocks]
Uncached Write 639.05 204.58 MB/sec [256K blocks]
Uncached Read 1556.55 11.03 MB/sec [4K blocks]
Uncached Read 912.36 169.29 MB/sec [256K blocks]

FusionDrive
Disk Test 281.08
Sequential 181.12
Uncached Write 291.83 179.18 MB/sec [4K blocks]
Uncached Write 260.85 147.59 MB/sec [256K blocks]
Uncached Read 82.93 24.27 MB/sec [4K blocks]
Uncached Read 361.64 181.76 MB/sec [256K blocks]
Random 627.18
Uncached Write 451.96 47.84 MB/sec [4K blocks]
Uncached Write 572.75 183.36 MB/sec [256K blocks]
Uncached Read 1587.11 11.25 MB/sec [4K blocks]
Uncached Read 558.94 103.71 MB/sec [256K blocks]

うーむ……。

iPhoneのBluetoothテザリングで自動接続

きっかけ

ひとりぶろぐ » MacBookに3G/LTE通信機能が搭載されたらいいのにな。そんな願いにアプローチするLidSyncPAN
iPhone5のテザリングは便利である。俺も常時Lightningケーブルを2本、ポケットに持ち歩いているが、やはりiPhoneを取り出し、ケーブルを繋ぎ、iPhoneが落っこちない場所を確保して、と結構面倒くさい。そんな中、上記の記事が流れて来た。確かはてブのホットエントリーだった気がするが、まあどうでもいい。俺的な問題点は

  • 蓋の開け閉めだけかぁ……
  • EasySIMBLが必要?あんまり入れたくないなあ……

この2点。よろしい、ならば自分で書くしかあるまい。

仕様

  • 基本的にAppleScriptで制御すること。
  • 特殊なユーティリティの使用禁止。Mavericksの基本機能だけで使えること。
  • より優先される他のネットワーク接続(たとえばWiFiによる接続)が検出されたらテザリング切断。
  • より優先される他のネットワーク接続が無くなったらテザリング開始

スクリプト

普通にポインタを操作して接続・接続解除を行う場合、

  1. メニューバーのBluetoothアイコンをクリック
  2. 接続したいiPhoneの名前をクリック
  3. 「ネットワークへ接続」または「ネットワークから接続解除」をクリック

という流れになる。てことはSystem Eventsだな。大前提として、メニューバーにはBluetoothが表示されているものとするのでその辺のエラー処理は省略。

まずは接続・接続解除のためのAppleScript

このスクリプトはコンパイルして適当な場所(~/Documents/AppleScript/TetheringController.scptとか)に放り込んでおく。

property iPhone : "Gururi's iPhone" --実際にメニューに表示される自分のiPhoneの名前を入れておくこと

on tethering(flag)
	if (flag) then
		set {select_menu, notifymessage, notifytitle} to {"ネットワークへ接続", "Bluetoothテザリングを開始しました", "テザリングを開始しました。"}
	else
		set {select_menu, notifymessage, notifytitle} to {"ネットワークから接続解除", "別の接続を認識したのでテザリングを停止しました", "テザリングを停止しました。"}
	end if
	tell application "System Events"
		tell application process "SystemUIServer"
			try
				tell menu bar 1
					set bt to item 1 of (menu bar items whose description is "bluetooth")
				end tell
				tell bt
					click it
					click menu item iPhone of menu 1
					click menu item select_menu of menu 1 of menu item iPhone of menu 1
				end tell
				display notification (notifymessage) with title notifytitle
			on error errMsg number errNum
				click bt
			end try
		end tell
	end tell
	return flag
end tethering

on tetheringon()
	return my tethering(true)
end tetheringon

on tetheringoff()
	return my tethering(false)
end tetheringoff
次に用意するのはシェルスクリプト

色々悩んだんだけど、networksetupの-getinfoサブコマンドでIP addressを取得できるかどうかで、そのnetworkserviceが接続されているかどうかを判断することにしてみた。とりあえず俺の環境ではメインがWi-FiでテザリングがBluetooth PANなのでこんな感じになってますが、必要に応じて該当する部分を変更・追加すれば使えるんじゃないかなー、と思います。サービス名とか、if文とか。

#!/bin/zsh
while [ 0 ]
do
PAN=`networksetup -getinfo "Bluetooth PAN" |grep '^IP address:' |wc -l`
WIFI=`networksetup -getinfo Wi-Fi |grep '^IP address:' |wc -l`
#-getinfoのあとの"Bluetooth PAN"やWi-Fiは、「ネットワーク」システム環境設定でのサービス名。
#サービス名が空白を含む場合は""で全体を囲むか、空白をエスケープすること。
if [ $WIFI -eq 0 ];then
	#$WIFIが0→Wi-FiでIPアドレス無し
	if [ $PAN -eq 0 ];then
		#$PANが0→Bluetooth PANにIPアドレス無し
		osascript -e 'tetheringon() of (load script alias (((home directory of (system info)) as string) & "Documents:AppleScript:TetheringController.scpt"))'
		#~/Documents/AppleScript/TetheringController.scptを読み込んでtetheringon()を実行
	fi
else
	#$WIFIが0でない→Wi-FiでIPアドレスあり
	if [ $PAN -eq 1 ];then
		#$PANが0でない→Bluetooth PANにIPアドレスあり
		osascript -e 'tetheringoff() of (load script alias (((home directory of (system info)) as string) & "Documents:AppleScript:TetheringController.scpt"))'
		#Wi-Fiの接続を使用するのでPANの接続は切る。
		#~/Documents/AppleScript/TetheringController.scptを読み込んでtetheringoff()を実行
	fi
fi
sleep 10
#次のループに行く前に10秒待ちます。この時間はお好みで。
done

こいつは/usr/local/bin/TetheringControllerにインストールして、

% sudo chown root:staff /usr/local/bin/TetheringController
% sudo chmod 755 /usr/local/bin/TetheringController

しておきます。

ほいでもってlaunchd用のplistファイル

TetheringControllerを呼び出して起動してくれるようにするための設定ファイルです。今回は自分だけで使うので、保存場所は~/Library/LaunchDaemons/com.gururi.tetheringcontroller.plistです。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>KeepAlive</key>
	<true/>
	<key>Label</key>
	<string>com.gururi.tetheringcontroller</string>
	<key>OnDemand</key>
	<false/>
	<key>ProgramArguments</key>
	<array>
		<string>/usr/local/bin/TetheringController</string>
	</array>
	<key>RunAtLoad</key>
	<true/>
</dict>
</plist>
監視のオンオフAppleScript

次で最後。こいつは~/Library/Scripts/に放り込んでおいて、スクリプトメニューバーに表示し、実行する度に監視の開始・停止を相互に切り替える。ファイル名、俺は「トグルテザリング監視」にしてる。まあファイル名は自分が分かればいいのでお好きにどうぞ。

on run
	do shell script "launchctl list|grep tetheringcontroller|wc -l"
	if (result as integer) = 0 then
		do shell script "launchctl load -w ~/Library/LaunchDaemons/com.gururi.tetheringcontroller.plist"
		display notification "テザリングの監視を開始しました" with title "テザリング監視開始"
	else
		do shell script "launchctl unload -w ~/Library/LaunchDaemons/com.gururi.tetheringcontroller.plist"
		display notification "テザリングの監視を停止しました" with title "テザリング監視停止"
	end if
end run

以上を適切な場所にインストールした上で、監視のAppleScriptを実行すればよろし。一度監視を開始すれば、ログアウト/再起動後も監視は継続されます。

インストーラパッケージ

基本的に俺が使うために作った物を「使う物好きもいるかもなー」的な考えで公開しているだけなので、そんなものは無い(・ω・)

追記

LidSyncPANと同様、初回起動時に「システム環境設定>セキュリティとプライバシー>プライバシー>アクセシビリティ」からTetheringControllerに対して制御の許可を与えてやる必要があります。

2013終了

振り返らない

振り返って見ると色々やらかした感のある1年なので、あまり振り返らないことにする。いや、反省はしてますよ、ええ。

艦これ

後半は艦こればかりやっていた気がします。夏のイベントをクリアできなかったのだけが心残りです。

来年もよろしくお願いします

今年は特にミニバス関係で忙しかったのですが、来年はそこそこになりそうな感じ。いや忙しくなったっていいんだよ?頑張ってくれ。

DNSサーバ

djbdnsとそれ以前

djbdnsを使えるようになったのは当然Classic Mac OSから抜け出した後であるわけだが、それ以前はどうしていたか、と言えばMacDNSを使っていた……ような気がする。気がする、というのは最早記憶が定かで無いためで……そもそもMacDNSを使っていた時代は自前でDNSを立てる必要が無かった(=ドメインを取っていなかった)ような気がする。ドメインを取ってしばらくも、namezeroの無料ドメインだったので、Webサーバもメールも、転送しか出来ず、DynamicDNSを使ってWebサーバを動かしていたという状態だったため、特に必要無かったわけだ。
たぶんきっかけはGoogle Apps for Your Domainだったと思う。自分でDNSサーバさえ動かせば、メールサービスはGoogleにお任せできるので、本当の意味での「自分のメールアドレス」が持てたのだ。しかも無料(当時)。そういうわけで、gururi.comは最初期にGoogle Appsに登録したので、今でも250ユーザまで作れるようになっています。250て。
で、その時最初に使ったのがdjbdbsだった、気がする。この辺時系列がよくわからないんだよなあ。djbdns使ってるのと同時期にqmailのインストールの話とか書いてるし。わけわからん。

nsd

Googleに本格的に依存した生活を始めて、結局qmailは使われなくなり、サーバで動いているのはapacheとtinydnsくらい、という状況で、「他のも試してみたいなあ」とか思い始めたときにnsdを見つけてしまう、とかそんな適当な理由だった記憶が。なお、移行したのは2009/08/27だった模様。

bind

さて、bindであるけども、実はその後使わないことになりました。職場のサーバで2台ほどbindを動かしていたわけだけど、上司から「macの場合、セキュリティパッチはどうなってるの?」と聞かれ、正直に「Apple次第」と答えてしまったので「じゃあちょっと何とかしないといけないねえ」と返されて何とかすることに。具体的には

  1. bindを自分でmakeして入れ換える
  2. 他のにする

という選択だったわけだが、 折角なので2を選んでみた。キャッシュサーバだけやってた奴にはunboundを、コンテンツサーバにはnsdをインストール。unboundの方は移行済み、nsdの方もまもなくテストが終了するので終了し次第完全移行の予定である。これでbindとおさらばできるぜ……

天気

晴れ

花粉症患者の大半は春先の晴れの日が嫌いなのでは無いだろうか。理由は言わずもがな、花粉の飛散量が増えるから。洗濯物を外に干したくても、花粉まみれになってしまうので干せないという話もよく聞く。我が家の場合は気にせずに干して、入れるときにバッサバッサと払うことにしているが、それで全部落ちるわけも無く……。

そんなわけで、雨の日は花粉の飛散が抑えられるので割と好きである。しかしながら、翌日以降の花粉飛散量が増える傾向にあるため、手放しでは喜べないのも確かである。雨→晴れのコンボは割とよくあるのでダメージ増大である(コンボだけに

嵐・大雨・大雪

嵐・大雨・大雪は大好きだが、今日のような雷だけは勘弁して欲しい。あれはマジで機械が壊れるからな。台風の季節ともなれば、コロッケを買って来て速報まで待機……まではやらないが、わりとチェックする方ではある。その一方でアニメが流れて涙を飲むこともしばしば。敵は大雨や大雪の災害情報だけではない。BS/CSの受信状況が悪化して、ブロックノイズがのりまくったり、録画が途中で切れたり、と、大雨や大雪で直接被害を受けることも。しかしそれもケーブルテレビ(青葉ケーブルテレビ)にしてからはほぼ無くなった。ほぼ、というのは結局のところケーブルを流れてくる放送波もどこかのアンテナで受信した物だからしかたない。その頃に比べたら受信できなくなることはまず無いと言って良い。極めて快適である。ついでにBフレッツからフレッツ光ネクストになったしな。まあ200Mbps契約なんだけど、NATループバックのためにBBR-4HGを使っている関係上、外は100Mbps縛りなんだけどな。これのギガビットイーサネット版が出たら速攻で買うんだけどなあ。

病気

花粉症・鼻中隔湾曲症

花粉症になったのは大学生の頃。世間でも花粉症なる言葉が市民権を得てきて、春先にくしゃみ鼻水鼻づまりの諸症状が出るのはどうやら杉やらなんやらの花粉のせいらしい、というのがみんなの共通認識になりつつあった頃と記憶している。しかも俺の場合は花粉によるアレルギーだけではなく、鼻の真ん中の壁(鼻中隔)が曲がっているせいで鼻の穴が狭くなっており、より鼻が詰まりやすい状態だった。通っていた耳鼻咽喉科でそれを治す手術を受けたのが20歳だったかな。鼻の穴から鑿を入れてガンガン削るという今考えても恐ろしいものでした。それに加えて減感作療法を数年続けて、大分症状は緩和してきたので、ここ数年は甜茶のサプリだけでなんとか過ごしてきたんだが、今年はちょっと酷くて、先週末、通っている病院でアレグラを処方して貰ったところ。効いてるんだか効いてないんだか微妙な気もするけど、たぶん効いてるはず。今日は家に帰った途端鼻が詰まり始めたけど……。

高尿酸血症

ここ数年、尿酸値が高めで推移していたのだが、昨年末に原因不明の足の痛みに襲われて、人に話をする度に「痛風じゃないの?」と言われて病院に行った結果まあ痛風だろうと言うことで処方された薬を飲んだら一応痛みは減る方向へ。たぶん合ってるんだろう。そのうちちゃんと検査して貰わないと行けないと思いつつ、先週もまた忘れて帰ってきてしまった次第。

水虫

で、その通ってる病院には、元々水虫治療のために通っております。水虫ってのは長ーい戦いですね……大分改善したんだけど、やはり根治にはまだ至っておりません。季節的なものもあるしね。毎日毎日、風呂上がりに薬を塗っております。足の裏が硬くなるタイプの水虫なんだけど、これが死んだ親父と同じ症状なんですよね。そうか、親父に貰ったやつか……(たぶん違う

年齢

20代以前

ぶっちゃけると「自分が将来大人になるという実感」が無かった時期。いつかはなるのかもしれないけど、それはまだまだ先だと思って、あるいは思い込んでいた。時間の感覚は今と全く違うよなあ……。
ぐるりと名付けられた*1のがたぶん19か20の時。まさか未だに使ってるとは(そしてドメイン名まで取ってるとは)その当時の俺も妹1も思ってなかっただろうなぁ。ちなみにアイコンも元々は妹1が描いた絵です。今使ってるアイコンは、お絵かきソフトを使って自分で描きました。
当時既に仙台在住でしたが、仙台はあんまりアニメやらないんですよね。地上波でやってる貴重なアニメはVHSで録画して見てました。マクロス7とか、レイアースとか。テープが高いのとでかくて保管場所に困ったのも今では良い思い出です。

30代

30代最初の年は人生に於いて重大な決断をした年でした。具体的に言うと家を買いました。なんたる無謀……というわけでもなく、実は嫁さんが半分出しています。残りの半分を俺がローンで払う、という形。しかし10年で金利は上がってしまうので出来れば10年で返したい、そんなの可能なのか……とか思ってた、最初の年は。翌年に父が亡くなり、保険金で組合から借りていたローンを一括で返すと、住宅金融公庫のローン返済に余裕が出てきた。そりゃそうだよね、公庫+組合で計画建ててたんだから。返済額を変えないと単純に一月当たりの負担はガクッと減る。そんなわけで、繰り上げました。合計10年での返済計画に変更。最初は割と無茶な気がしてましたが、人間何とかなるものです。慣れって恐い。ただ、それでも「こんなガキが家なんて買って大丈夫なのか」とか思ったし、ずっと思ってました。
30代後半には否応なしに町内会に巻き込まれ、俺が会計監査を引き受けたのに実際には嫁さんが監査した翌年度には嫁さんが会計になってました。これが世界の選択か(違います
この頃の趣味はほぼネットと本に偏っていた気がします。この時期はアニメを余り見た記憶がありません。CSもBSも設備が無かったですし。

40代

そんなわけで、40歳になった年の秋、具体的には去年の秋の返済で、めでたく住宅ローンが終了したわけです。長かったような、短かったような。一般の人に比べたら圧倒的に短いですが。職場でも同じくらいのタイミングで家を買った人が結構居ましたが*2、彼らの話を聞くと30年とか35年とか気が遠くなる話をされました。やはりフルタイム共働きだと違うのか。むしろ俺としてはなぜ家を買うのに共働きじゃないのかと問いたいところだが。
その後地デジ移行に伴ってテレビやらHDDレコーダやらを買ったらあーら不思議、ひたすらアニメを録画するおっさんの出来上がりです。特に30代の頃放送していたアニメがAT-Xで放映されると嬉々として録画している*3。20年前と何も変わってないというか、20年前に戻ってるというか。実際になってみてわかったのは、「40歳なんて全然大人じゃない」ってこと。実はみんな「自分だけ大人になれてないんじゃないか?」と思ってるのではないだろうか。そんなの当たり前か……。

*1:付けたのは嫁さんの上の妹。今後妹1と称す。本人が変更を願い出たら変更します。

*2:住宅ローン減税があったからであって年齢が近かったわけでは無い。

*3:ただし消化は進んでいない。