木曜日, 9月 30, 2010

ディスクリカバリー再び(その3)

ハードディスクが不調な時は、生のままでいいからとにかくデータを安全な場所に移したい。というわけで、dd コマンドを使ってローカルに持ってきている。買ったばかりのマックがあって良かった。なにせディスクが空に近いから。

まずは1GBずつ、エラったら128MBずつ小分けにして、その中でエラった箇所を4MB、128KB と小分けにしながら dd コマンドで吸い上げてゆく。9番目のGBブロックの5番目の128MBブロックならこんな感じ。

dd if=/dev/disk2s10 of=disk2s10_08.4 bs=4k count=32k skip=8x32k

大きなブロックで読めないときは、その中のどこかにエラー箇所があるだろうと思うけど、実際にやってみると、小分けにするとエラーにならずに読める場合がある。というか、意外とそういうことが多かった。(解せないので操作ミスも疑ったが、そうではなくて本当に読めているみたい。騙し騙しやるには小刻みの方が良い、ということか?)
とにかく、小さく分けて読んでいったら、結局のところ、一番細かい128KBブロックが1個読めないだけで、あとは全部読み出す事ができた。最後に、読めなかった128KBのブロックだけを、

dd if=/dev/disk2s10 of=disk2s10_06.3.00.00 bs=4k count=32 skip=1671168 conv=noerror,sync

でエラーを無視して読み込んだら、最終的に回収できなかったのは48KB分のみ、となった。まずは満足。
回収したデータをcatで繋いでひとつのファイルにまとめ、amazonで買ったNASに放り込む。さすがに80GB分だと時間がかかるので、続きの作業は明日にする。

ともかくこれで、ハードウェアのトラブルを気にせずに、純粋に論理的な修復作業に移れる。

この先の作業には、二つのやり方がある。
望ましいのは、まとめたファイルをディスクイメージとしてマウントできるようになること。ext3のマウントについてはここに情報があったので、MacFUSE と fuse-ext2 をインストールして試してみる。正常なディスクイメージではないので、もうひと手間かかるかも知れない。それが難しそうなら(面倒そうなら)、PhotoRecを使ってファイルだけでもサルベージする。写真や映像がほとんどなので、意外とこの方法でも十分かもしれない。

月曜日, 9月 27, 2010

ディスクリカバリー再び(その2)

エラーになる度に手作業でやるのはシンドイので、1GBずつ小分けに読み込んでファイル化し、読めなかった部分は更に128MBずつに小分けにしてファイルにし…、という戦法でいくことにした。128MBの読み込みは、1GBの時のエラー出力を元に自動化するようにスクリプトをつくる。

で、1GBごとに次々読ませてゆくと…、途中で

dd: /dev/disk2s10: Device not configured

というエラーが出て、その後は全部

dd: /dev/disk2s10: No such file or directory

になる。
これはパーティション全体を読み終えたのかな?と思ったがそうではなく、途中でディスクの認識が切れてしまったみたい。うーむ、ハードのトラブルだとこういうことも起こるか。
USBを抜き差ししてドライブを再認識させ、その続きを実行する、と。

さて、まだ時間がかかりそうだし、ひとまず寝るとするか。また途中で認識が切れるんだろうなー。週末で片付けるつもりだったけど、多少気長にやるしか無いかな。

そして、amazon に NAS を注文した。BUFFALO の LinkStation LS-XH1.0TL。あさってには届くであろう。

日曜日, 9月 26, 2010

ディスクリカバリー再び

外付けハードディスクがマウントできなくなった。読みに行くと、時計の秒針のような嫌な音が続く状態…。あ、これは物理的にやられたな、と思う訳だけど、昔の仕事やプライベートのムービーやら写真やら入っていて簡単には諦められない。ので、なんとかデータだけでも救い出したいと思う。

160GBのディスクを、80GBづつ、2つのパーティションに分けて使っているが、1つめのパーティションは以前ディスクエラーがあったパーティションで、今は使っていない。(考えてみたら、その時に、ディスクごと交換しておけば良かったのだ…。)

ディスクユーティリティ等で見ると、パーティションは見えているので、テーブルは読み出せている。問題のパーティションは/dev/sdb10と見えている。ext3フォーマットだ。が、パーティションの冒頭がやられているらしく、スーパーブロックが読めなくてマウントできず。

 e2fsck -b 32768 /dev/sdb10

などと代替スーパーブロックを指定してもダメ。

ヘタってるディスクをいつまでもいじっていたくないので、ディスクの空いている別のマシンにつなぎ直し、ddコマンドで必要なパーティションだけローカルのファイルにコピーする事にした。しかし、


 ch01% dd if=/dev/disk2s10 of=disk2s10 bs=4k
 dd: /dev/disk2: Input/output error
 0+0 records in
 0+0 records out
 0 bytes transferred in 28.886230 secs (0 bytes/sec)


というエラーで止まってしまう。skipでずっと先のブロックを指定すると読み込めるので、全部が読めないわけではないらしい。読めるとこまで読んで、エラーで止まったらその次のブロックから読む、というのを手作業でやっても良いが、以下のコマンドを走らせる事にした。


 dd if=/dev/disk2s10 of=disk2s10 bs=8k conv=noerror,sync >& disk2s10.error


conv=noerror を付けると、読み書きにエラーがあっても処理を中断せずに続けてくれる。今回の場合はディスクの読み込みエラーが頻発するので、その度にskipを手作業で指定して続けるのは大変なのでこうした。conv=syncを指定しておくと、エラーがあったブロックもnullを書き出してくれる。これをしないと後でサイズが合わなくなるので必須。

さて、読み出しを始めたが…、遅い。すごく遅い。エラーにぶつかる度に待ちが入るので、平均1.5kbyte/sec。エラーブロックの割合によるが、このままでは読み込みに数ヶ月かかる計算。これはまずい。
どうせゼロしか埋まってないんだから、ある程度手探りで、読めそうなところを読むか…。

というわけで、作業続く…。

日曜日, 8月 29, 2010

計算機に歌わせる関連 w/o GUI

言わずと知れたVOCALOIDにはVST/VSTiプラグインが存在。
歌詞はGUIで入力、あるいはあらかじめ指定したファイルを ProgramChange でファイル読み込み可。
UTAUのプラグインは編集用につき w/o GUI には不向き。

Cadencii
http://www9.atwiki.jp/boare/

VSQファイル(VOCALOIDのプロジェクトデータ)があれば vsq2wav で音にできる。
http://www.geocities.jp/hatsune_wave/
VSQフォーマット
http://www5d.biglobe.ne.jp/~noocyte/Programming/FileFormat/VSQ.html

それから、PDでVST/VSTiを動かす vst~, k_vst~ がある。
http://puredata.info/Members/thomas/vst
元情報はここから(linux上でVSTを動かす方法いろいろ)
http://quicktoots.linuxaudio.org/toots/vst-plugins/

関係ないが、MMDはすごいなー。

CREST方面でもいろいろ研究あり
http://www.crestmuse.jp/index-j.html

土曜日, 8月 07, 2010

glXCreateContext failed

症状:
OpenGLのプログラムを実行したとき、glXCreateContext failed というエラーが出る。

原因:
NVidiaのGLXが呼び出せないとこのエラーが出る。(他の原因でも出ることはあるが、うちの場合はほぼこれ)
サーバーログを見るとglxエクステンションが正しくない旨エラーが出ているので分かる。

敗因:
xorg xserver をアップデートしたときに、
/usr/lib/xorg/modules/extensions/libglx.so がxorg付属のものに置き換わってしまったためと思われる。
本来は、libglx.so.173.14.25 へのシンボリックリンクになっているべき。

解決:
libglx.so のシンボリックリンクを戻せば復旧できたと思うが、nvidia 173.14.27 が出ていたため、ドライバごと更新した。当然解決。

環境:debian squeeze, linux 2-6-32-5, nvidiaプロプライエタリドライバ 173.14.25

火曜日, 8月 03, 2010

USBからインストール・リカバー

Universal USB Installer が非常によい。
http://www.pendrivelinux.com/
Linuxの各種ディストリビューションのインストーラをWindows上で作れる。
MultiBoot USB を使うと、一つのUSBに複数のLinuxをインストールできて、カバリー用の起動ディスクになる。

火曜日, 7月 20, 2010

Python の unicode

Pythonで文字列を扱ってて、'ascii'でエンコードできない文字列です、とかエラーが出たら、unicodeを疑え!
→ http://lab.hde.co.jp/2008/08/pythonunicodeencodeerror.html

Python の unicode型は UTF-8等の文字列ではなく特殊な内部形式。
表示や処理(加算やスライス等)には文字列にエンコードが必要で、
何にエンコードされるかは、ロケールの決まった表示先(端末等)以外は
デフォルトのエンコード('ascii')になる。これが曲者。
なので、必要な時に明示的に hoge.encode('utf_8') などとして
文字列に変換すること。

土曜日, 6月 05, 2010

航空管制

【解説】
実践!航空無線
http://minacchan.hp.infoseek.co.jp/air/airband.html
【ライブ配信】
世界の空港官制
http://www.liveatc.net/

月曜日, 5月 31, 2010

CameraPreview+OpenGL

カメラプレビューの上にOpenGLレイヤを重ねる件、結局この辺が参考になりました。
http://groups.google.co.jp/group/android-developers/browse_thread/thread/59823f265354257f

別スレッドには、SurfaceViewは二枚重ねられない(あるいは非常にリソースを食う)のでカスタムのSurfaceViewを作るべし、という意見もありましたが、重ねられないことはないみたいだし、そもそもカメラプレビューとOpenGLを融合させるのは(プレビューイメージをバッファ経由で描画しないかぎり(ARToolkit絡みでそういう例もありました))難しいように思えます。
もっとも、その方法もやってみる価値はあるかも。イメージ転送とオーバレイのどちらが早いか、ですが、やってみないと分からないですね。時間ができたらやってみますか。

日曜日, 5月 30, 2010

航空機の識別関連

レーダー装置は
・SBS-1 Base station
 → http://www.kinetic-avionics.co.uk/sbs-1.php
・AirNavi RadarBox
 → http://www.airnavsystems.com/RadarBox/
などがあり、どちらも同じような仕様。
RadarBoxはネット経由で世界中の情報を得られる(有料)。
Base station はネットにデータストリームを送れる。

一般的な情報はWikipediaから「空中衝突防止装置

Mode-S 番号から機体番号(Registration)への変換は、
ガトウィック飛行協会が提供する以下のデータベースで変換可能。
http://www.gatwickaviationsociety.org.uk/

それから、航空無線データを解析する類のソフトがある。(デコーダーというらしい)
KG-ACARS http://www2.plala.or.jp/hikokibiyori/soft/kgacars/index.html
フリーウェア。

よくわからんが
http://www.navigraph.com

木曜日, 5月 13, 2010

Androidいろいろ

Android端末を手に入れ、ようやく本気で Android の開発をする気になった。
で、いろいろ勉強しているが…

まだpre-releaseだが、processing for Android というものがある。
http://android.processing.org/

Androidで使える組み込み用スクリプト言語としては、pnuts というのが良さそう。
https://pnuts.dev.java.net/

月曜日, 4月 12, 2010

ofTextureはGL_TEXTURE_2Dとは限らない

openFramwork の ofTexture は、テクスチャーの形式が GL_TEXTURE_2D ではなくて GL_TEXTURE_RECTANGLE_ARB になっているので注意が必要。これは、GLEEで拡張機能を調べ、Texture_rectangle拡張が有効な環境だとそうなる。
Texture_rectangleでは、
・2のべき乗以外のサイズの画像が使える
のは便利だが、
・textureTarget が GL_TEXTURE_RECTANGLE_ARB
・テクスチャー座標が[0-1]でなく[0-w][0-h]
・shader変数の型は sampler2D でなく sampler2DRect
・shaderでのサンプリング関数は texture2DRect
なので注意。
気付かなくてかなりハマった。
ofTexture は allocation時にオプションを与えて無効にできるが、ofImage や ofxFBOTexture 経由では無効化できない。

月曜日, 4月 05, 2010

openFrameworksでFBOを使う

ofxFBOTextureをインストールして、
→ http://addons.openframeworks.cc/projects/show/ofxfbotexture
以下のサンプルで試す。
http://www.openframeworks.cc/forum/viewtopic.php?f=9&t=1866

月曜日, 3月 29, 2010

How to install PS3Eye on windows

PS3EyeをWindowsにインストールした。
tbetaでも動作を確認。
調整機能が豊富で使いやすそう。
・露出とゲインの自動/マニュアル切替
・ホワイトバランスの自動/マニュアル切替
・XY方向のオフセット、キーストーン調整可能
・レンズ歪みの補正、デジタルズーム
赤外フィルタの除去が必要。除去したら戻せない。

●PS3EyeのWindows用ドライバーは以下
http://codelaboratories.com/products/eye/driver/

●PS3Eyeの赤外フィルターの外し方は以下
http://codelaboratories.com/research/view/ps3-eye-disassembly

日曜日, 2月 28, 2010

processingのSocketException

Processingでsketchをrunした時に以下のエラーが起こる。
環境:debian squeeze
---
Exception in thread "Thread-3" java.lang.Error: Unable to launch target VM: java.net.SocketException: 無効な引数です
at processing.app.debug.Runner.launchVirtualMachine(Runner.java:421)
at processing.app.debug.Runner.launch(Runner.java:122)
at processing.app.Editor$43.run(Editor.java:1652)
at java.lang.Thread.run(Thread.java:619)
---

対処法:
rootで /etc/sysctl.d/bindv6only.conf の以下の値を1から0に変更。
net.ipv6.bindv6only = 0
その後、
invoke-rc.d procps restart
を実行する。

情報源:
http://processing.org/discourse/yabb2/YaBB.pl?num=1261483799

日曜日, 2月 07, 2010

Nvidiaカーネルのアップデート

●カーネルモジュールの開発環境を整える。
※ http://www.hakodate-ct.ac.jp/~tokai/tokai/research/kmod.html より。
1)kernel-package と必要なソースパッケージを用意する。
2)Makefile中のEXTRAVERSIONを適宜書き換え
3)/boot/config-xxxxxxxxxx を .config にコピーして make
●nvidia-installerを実行する。
-K --kernel-module-only カーネルモジュールのみ更新(ドライバーはそのまま)
--ui=none ncursesを使わない
-k --kernel-name=KERNEL-NAME 起動中ではないカーネル用にビルドする
--no-runlevel-check ランレベルが1でなくてもアボートしない
--no-x-check Xサーバーが立っていてもアボートしない

土曜日, 1月 23, 2010

Twitter API

このページが役に立ったぞい。
http://usy.jp/twitter/index.php?Twitter%20API
http://snipplr.com/view/2585/python-twitter/

金曜日, 1月 08, 2010

空きを埋めるログ

開いてた期間を埋めるためにログっとくと、
・終わった。
・モノクロカメラのフレーム作った。
・スチールの棚をIKEAで買った。
・小物の工具類をいくつか買った。
・CNCが欲しくてたまらなくなっている。
・リアプロのスクリーンを吊るした。
・手持ちのDVカメラは赤外線をカットしていた。
・1394カメラならフレームレートが高いとは限らないようだ。
・今squeezeは1394カメラが使えない。
な感じ。

Twitter再開

しました。

土曜日, 12月 26, 2009

tbetaをdebian(squeeze)でコンパイルするメモ

1. 最新のソースを持ってくる。
% svn co http://nuicode.svnrepository.com/svn/tbeta/trunk/tbeta/Linux local-dir-name

2. rootになってscript/debianディレクトリの中のスクリプトを実行
# sh install_codeblocks.sh
↑必要ならCode::Blocksがインストールされる。
# sh install_dependancies.sh
↑必要ならMM系のライブラリがインストールされる。

3. code::blocksでtbetaプロジェクトを開く
[File]メニュー > [Open...]で以下のプロジェクトファイルを指定して開く。
apps/addonsExamples/Codeblocks_8_linux/Community Core Vision.cbp

4. Buildする。(ここまでは指定手順のとおり。でも失敗する。)
そこで、以下5,6の2点を修正。

5. Code::BlocksプラグインのLibrary Finder に必要項目を追加
[Plugins]メニュー > [Library Finder] を開き、以下のライブラリを登録する。
gstreamer-0.10 → pkg-config name に gstreamer-0.10
gstreamer-base-0.10 → pkg-config name に gstbase-0.10
gstreamer-video-0.10 → pkg-config name に gstvideo-0.10
livavcodec → pkg-config name に libavcodec
libavformat → pkg-config name に libavformat
libavutil → pkg-config name に libavutil
livswscale → pkg-config name  bsに libswscale

6. ビルド後スクリプトの修正
[Project]メニュー > [Build options...] を実行。[Pre/post build steps]タブの[Post-build steps]欄の4行めあたりを以下のように修正する。
(元)cp -r ../../../export/libs $(PROJECT_DIR)bin/
(修)cp -Rf ../../../export/libs $(PROJECT_DIR)bin/
こうしないと、シンボリックリンクが維持しないのと、svn管理ファイルが上書きできなくてエラーが出る。

7. もう一回、ビルドしてみる。
今度は成功。

おわり。
でも…、実行するとクラッシュするんだなこれが…。

【追記】
2009年12月26日時点のバイナリリリースがRev170みたいだけど、Rev170ではlibswscale絡みでコンパイル不可。Rev172ならコンパイルでき、クラッシュもしない。