2012年1月31日火曜日

windows7(64bit)の調子がおかしい

windows7(64bit)にiPad用のiTunesをインストールしてあるんですが、iBooksに伴うVerUpのニュースがあったので更新しようとしました。
ところがなんかiTunesがうまく起動しません。ものすごく時間がかかったあと、ヘルプメニューから更新の確認をすると、Dialogは出るんですが真っ白け。そのまま変化がありません。強制終了も効かなくて、やむを得ず再起動しました。そこから状態がどんどん悪化、iTuneのVerUpどころか起動はうまくいかないは、あげくはAcrobat Readerまで起動しなくなってしまいました。メインで使っているゲームは問題なく動くんですが、これでは困ります。レジストリを調べてみようとツールを動かしたら、メモリアクセスエラーとでる始末。(appleの更新チェックデーモンでも、実行しようとするとでてきます)
このPCにはなんだかんだ色々インストールしてあるので、どれかがぶつかっているようです。iTuneを動かそうとするとQtと衝突してるとかいうようなメッセージが出てきたので、アンインストールしようとしてもうまく動きません。(レジストリがかなりやられてる?)
仕方ないので、新しいユーザーを作成しそれに管理者権限をもたせ、そちらからアンインストールです。どうも元々のユーザーのプロファイルはだいぶ傷ついているようで、アンインストールもできなかったのが、新しいユーザーでは動きました。ただ何故かアンインストールでのファイルの削除が異様に時間がかかります。確かにQt SDKはMinGも入っているのでファイルの階層も多いのですが1日以上かかってまだ終わりません。はたして復活できるのか。(OSからの再インストールになるのかな〜)

ディスクの反応速度がどうも遅い気がするので、まさかと思いイベントログを調べて見ましたが、案の定「不良ブロック」の検出がでています(-_-メ) NTFSが強力なジャーナリング機能を持っているので、時間をかけてそれなりに動いてしまっていたので気づくのが遅れました。運を天にまかせて修復をしてみます。
・「コンピュータ」を開く
・ドライブ「C:」を右クリックして「プロパティ」を選択、そこの「ツール」タブを選択する。


・ここで「エラーチェック」を選択すると以下の画面が出ます。


・「不良セクターをスキャンし回復する」を選択し「開始」を押します。システムドライブの場合は「実行を再スケジュールしますか」と聞かれ、それを選択し、一度マシンをシャットダウンします。(注:再起動ではだめです)
・電源を入れると、なつかしいCHKDSKが動いて修復してくれます。(時間はかかります)

これでiTuneの問題も、Acrobat Readerの問題も解決しました。ただイベントログにあいかわらず不良ブロックのイベントはでます。(但し2行だけ。以前はそれを使っていたので山のようにでていた)おそらく起動時のHWチェックなんだと思いますが、もう少し様子見です。

2012年1月2日月曜日

NoSQL:現状のまとめ

これまでいくつかのNoSQLを試してきましたが、この業界”栄枯盛衰”が激しく、競争が激しいです。ちょっと現状での状況をまとめておきます。


  1. CouchDB:ドキュメント指向という考え方で、今人気です。インターフェースもHTTPを持っており、非常に使いやすいと評判です。
  2. Redis:有名なオンメモリDBのmemcachedをファイルに永続化する機能を持っています。(以前、気に入っていたTTとかKTと考え方は同じです)インターフェースがtelnetしかないのが玉にキズですが、爆速だとのこと。(ただクライアントにjavaが用意されているのがちょっと理解しにくいですが。確かに今時のjavaは速いんですが、時にGC入ってしまって制御できないのが使いにくいんですが。)
  3. Cassandra:Facebookで開発され公開された有名なjavaで作成されたDBです。とにかくスケールするのが簡単で、巨大なDBもなんなく構築できます。インターフェースには、これまた特別に開発したthriftも開発がしやすく、魅力的です。
  4. HBase:Facebookのメッセージシステムに使われているそうです。インターフェースにはHTTP/thriftが用意されており、巨大テーブルが使えるのが特徴だとか。
  5. LevelDB:googleの公開しているnoSQLです。コンセプトはRedisと同じで、とにかく高速なのと、chrome内に内蔵させているSQLiteの入れ替えを考えているそうです。(ファイルへのデータの永続化に、高速圧縮ルーチン"Snappy"を使っているのも特徴です)昔、mixiでTTやKTを開発した方が今はgoogleに入社していますが、特にこれにはタッチしていないようですが、速度比較にはKTが使わています)

基本的に高速性をうたっているため、memcachedのファイル永続化をしているのがほとんどですが、なにせファイルベースだと、1ファイルのサイズの大きさにDBの大きさが制約されてしまう制限ができてしまいます。(だから速いんですが)

RDBMSだとデータベース管理者がどうしても必要になります。(ログの整理とか、バックアップなど時間のかかる手間がかかります)一方、NoSQLは手間がかからないかといえば、基本的にバックアップはマシンを増やして、そちらにコピーを常時作るという考え方なので、システムをスケールするのにかかる手間がどうかという話になります。ただそれでも、とにかく巨大なDB(TB級)が欲しいとなるとCassandraに行き着くんでしょうか。でも、結局技術の移り変わりが激しいんで、データベース管理者は減らせても、システム開発者は必要になるので、DBを「道具として」簡単に使ってシステム組みたい場合は従来のMySQLみたいなものの方で妥協してしまいますね。

2012年1月1日日曜日

Android emulatorが起動しなくなった?

eclipseでAndroidのプログラム作成の勉強をしていたのですが、あるとき急にeclipseから(emulatorの)実行ができなくなりました。最初はeclipseのキャッシュか何かの調子が悪くなったのかと思い、何度も再起動して、Windowsの再起動までしましたがだめです。以前、動いていたものまでemulatorが起動しても「反応しなくなりました」と言われてダメです。
eclipseのconsoleをみると、以下の様な赤いメッセージがでています。

Bad ram offset XXXXXX(ヘキサのアドレス)

理由がわからず、ぐぐってみたら英語のページに質問と回答がありました。どうもadbのデーモンを再起動すれば治るようです。windowsでやっていたので、コマンドプロンプトをだして、以下のコマンドを実行します。

> adb kill-server
> adb start-server

(当然、SDKへのPATHは通っているとします)ただ、なぜ急にダメになったのかはわかりません。