その他/Tumblrに移行しました

今後のエントリはこちらに書いていくことにします。

http://monkeycoders.tumblr.com/

その他/エンジニアが信条によって生きるということ

Bret Victor氏の「Inventing on Principle」というプレゼンテーションが素晴らしく、また大変共感したので、その内容をすこし書いておきます。

Bret Victor - Inventing on Principle from CUSEC on Vimeo.




「Inventing on Principle」というのは、日本語で言うと「信条によって創造するということ」という感じでしょうか。

「信条」という言葉は、ソフトウェアエンジニアリングの世界ではそれほど目にしないというか、大事な言葉としては扱われていないように思います。


氏の信条とは、「モノを作る人は、作業とその結果が直に繋がっていなければならない」というものです。

このプレゼンテーションはJavascriptのビジュアルな編集環境から始まります。最初は、彼の意図は「WYSWYGな環境を極めるとこんなことが出来るよ!」という話かと思いましたが、それは本質ではありませんでした。

このプレゼンテーションは、冒頭に彼自身が言っていたように、どう生きるかということについてです。



その他/linux RAID autodetectのHDDが片方だけ手元にある場合のマウント方法

ブログのテーマと少々異なり、LinuxのソフトウェアRAIDの扱いについて書いておきます。あまり詳しい領域ではないので間違いもあるかも知れませんが、備忘録も兼ねつつ、同じ問題に当たった人がいたら参考になればと思っています。

発端は、最近解体したサーバー(RAID1構成)をMacでマウントしてデータをコピーする必要が発生したのですが、これをいかにして解決したかというところです。同サーバーは2台構成のRAID1なのですが、2台とも繋げて復旧するのは正直だるいので、1台だけでやろうという、そういう魂胆です。(RAID1なら可能なはずなので)

当初は、mountでファイルシステムとパーティションさえ指定すれば適当にマウントできるんじゃないか、なんて思っていたのですが、当然そう言う訳でもなく…。とはいえ、mdadmを利用すれば1台しかHDDがなくともマウント自体は可能ということが分かったので、正面から行くことにしました。


0.VMWareの用意

まず、Linux RAIDのドライブはMacではマウントできないので、バーチャルマシンを使用します。自分の場合はVMWare Fusion上にUbuntu-linuxの仮想マシンが作ってあったので、これを使用しました。

1. デバイスを接続し、ボリュームを確認
HDDデバイスをSATA-USBコネクタ等で接続します。

自分が使ったのはコレ↓
ノバック SATA HDDつなが~るKIT Super Speed USB3.0 NV-TS110U3

VMWare側で、USBデバイスの中のそれらしいデバイスをLinux側につないでやります。
「仮想マシン>USBとBluetooth> <デバイス名>に接続」のメニューを選べば接続されます。
ちなみに、ここでのデバイス名は接続中のHDDではなく、SATAのブリッジ・コントローラ名で認識されます。私のところでは「Fujitsu MB86C30A-REB」と出ました。HDDのメーカー名が出る訳ではないので、注意して下さい。

接続したら、Ubuntuの場合はSystem>Administration>Disk Utility を使うと、接続中のデバイスのマウントポイントやフォーマット、パーティション構成が直ぐに把握できてお手軽です。Macのディスクユーティリティみたいなもんですね。


1. mdadmをインストール
apt-get等でmdadm(Linux software RAID 管理ツール)をインストールします。コレがないと始まりません。


sudo apt-get install mdadm


2. RAIDボリュームを構成、実行
次に、接続したデバイスを使ってRAIDを構成する必要があります。ここで、私が使いたいデバイスは/dev/sdc3だったので、これをmd0とします。
また、RAID1の最小構成単位はデバイス2個です。1個では足りないのでデフォルトではRAID自体はスタートしません。なので、明示的にこのデバイスを開始させます。


sudo mdadm --assemble /dev/md0 /dev/sdc3
sudo mdadm --run /dev/md0



デバイスをマウント
RAIDが開始したら、このデバイスをマウントすることが出来るようになります。


sudo mount /dev/md0 /media/hoge


これで、開始したRAIDドライブが、hogeにマウントされました。

あとは、VMWare上のファイルとMac上のやりとりなので、D&Dでコピーしたりとか、好きなようにデータをサルベージすれば完了です。

最後に、使い終わったら


sudo umount /media/hoge
sudo mdadm --stop /dev/md0


として、さらにDisk Utilityから「Safe device removal」ボタンを押し、デバイスを外せば完了です。

その他/NADECで講演します

10月9日に@mnagakuさん主催のNADECという勉強会で講演します。15分のライトニングトークです。

私のお題は「C++で開発されるゲームのためのRTTIを使用しない高速なリフレクション(ソースもあるよ)(仮)」です。これは過去に私が担当してきた比較的大規模なゲームタイトル(PS3/Xbox360)で実装した技術を元に、オープンソースコミュニティ向けに一からライブラリを書き起こす、ということをやってみたモノの発表です。したがって、公開ソース自体の運用実績はありませんが、姉妹版を利用しているタイトルはいくつか存在します。

15分のセッションですので、他の類似システムとの性能比較など詳しいことは出せないかも知れませんが、当日はUstreamでの配信もあるそうですので、興味のある方はご覧下さい。

NADECの発表後、本ブログ等にてソースコードの取得先に関する情報なども公開します。


参考情報:
- NADEC: http://bit.ly/dovNbl

その他/プロジェクト依存関係を付けたiPad用のビルドリンクエラーが出る

先の記事でXcodeでのプロジェクト間の依存関係を設定する方法を紹介しましたが、この方法を使ってライブラリをリンクした際にiPadでプロジェクトをビルドすると、

"___restore_vfp_d8_d15_regs", referenced from: <シンボル名>
"___save_vfp_d8_d15_regs", referenced from: <シンボル名>
collect2: ld returned 1 exit status
ld: symbol(s) not found

というような形でリンクエラーが出ることがあります。

この原因は、ライブラリ側のアーキテクチャがarmv6なのに対して、アプリケーション側のアーキテクチャがarmv7であるためです。

この問題が起きた場合は、以下の様にすることで、問題が解決します。

1. ライブラリ側のxcodeprojを開く
2. アクティブSDKをDevice 3.2に設定
3. ターゲットを選択して右クリックで「情報を見る」
4. アーキテクチャを「Standard(armv6)」から、「Optimized(armv6 armv7)」に変更

これで、元のプロジェクトからクリーンビルドすると、上記のリンクエラーが解決します。