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は通っているとします)ただ、なぜ急にダメになったのかはわかりません。

2011年12月22日木曜日

Android Galaxy S2にプログラムがインストールできない?

しばらくAndroidのこと書いてませんでしたが、先月くらいにGalaxy S2のシステム更新(2.3.4→2.3.5)した頃くらいから、eclipseでプログラム作ってみても、Galaxy S2にインストールできなくなってました。(Windows & Macとも)
理由がわからないうちに、Googleの方でSDKの更新が進み、ディレクトリ構成が大幅に変わってわけわからない状態に・・・ あらためて調べなおしてみたら、Windows側はどうもUSBでGalaxyが認識ができなくなってる。(Macは認識できてるようだけど、いまいち動きがあやしい)さらに調べて、Samsungの「韓国語」のHPに新しいUSBドライバがDLできるようになってるとの情報が・・・ 行ってみたんですが、わからん。さらに見ると、どうもjp.samsungmobileというHPがあるらしいんですが、普通にいくと、そこは移動したとでてきますが、googleで、”jp.samsung”+galaxyで調べてHitしたところにいったら見れるページがあり、そこから新しいUSBドライバ(1.4.4.0)が落とせました。(24MBでしたが、これ実行したところwindows updateが動いた・・・ 何やってるんだ?)それでも、これで無事eclipseからプログラムをGalaxyにインストールできるようになりました。
それでもMacの方はまだダメなんだよな~~~

2011年12月3日土曜日

(日本語)テキストエディタの問題

普段簡単なメモを書いたりするのには、テキストエディタ(サクラエディタ)を使っています。行末コードや、日本語コードの自動変換(たまに失敗しますが、そのときは強制的に変換)など便利につかってました。ところが昨日、これに非常に苦しめられました。

WebGLを見てたんですが(Learning WebGL)、そこのサンプルのページをローカルに保存します。

こんな感じで表示されます。(最初、ちょっといやな気がしたんですよ。途中に半角空白+ハイフン+半角空白なんて)これをChromeで表示しようとしてもうまくいきません。なんで?とおもってサクラエディタで中身を確認しようにも何もでてきません???次は、メモ帳で見てみますと、JavaScriptが入っている同名のフォルダ名のとことが文字化けしています。
なんか中点になってる!?色々悩んですが、このHTMLのcharsetが、ISO-8859-1(通称、ラテン-1)なんですが、調べたらASCIIではなく欧米のドイツ語等、ウムラウトなどの特殊記号が含まれているコードです。それをメモ帳やサクラエディタは日本の文字コードに強制的に変換してしまうので、表示がおかしくなってしまったようです。上記ファイル名はWindows7(64bit)のせいかハイフンが心持ち長く見えますが、WidnowsXPだと、本当にハイフンと区別がつきません。サクラエディタだと、おそらくファイル名の解釈のところで、ここがオプション指定と勘違いしてしまったんでしょう。ファイル名を変更してやれば中身はみえましたが、ハイフンのところは空白になってました。
Windows7(64bit)だと、システムとして一応この文字コードが認識できるらしく、サクラエディタで開くこともできるし、ローカルで見ることもできますがエディタで編集ができません。
散々、困ったあげくVisualStudioで開くとうまく開いてくれて(ただ保存時に強制的にUnicodeと勘違いされてしまいます)、なんとか修正できました。(結局、Linuxで修正しました)
何か適当な欧米のテキストエディタさがすかしないといけないけど、Aptanaならうまくいくんだろうか?

2011年11月26日土曜日

Widnows7の起動が時間がかかる(-_-メ)

昨年かったばかりのWidnows7(64bit)も当初は起動が速くて快適だったんですが、一年にしてなんかやたら起動に時間がかかるようになりました。HDDのデフラグとか、起動時のスタートアップで動くプログラム(スタートアップフォルダ内にショートカットが作られます)とかありますが一向に改善しません。

どうも最近のプログラムは昔のようにスタートアップのフォルダないにショートカットを作るんではなく、直接Widnowsの制御ファイルに修正加えちゃうようです。直接実行(スタートメニュー内に入力欄があります。WidnowsXPだと「ファイル名を指定して実行」になります。)で”msconfig”を実行します。すると以下のようなWindowがでてきて、起動時の設定を変更できます。


すると、あるわあるわ・・・ 何でこうも自分のプログラムをスタートアップに入れたがるアプリばっかなんだ。(これまでインストールしたプログラムが大抵なにかしらのプログラムを起動時にデーモンを動かすよう仕込んでました)アプリ系のは片っ端からオフにしてやったら、やっと以前のような速度で起動するようになりました。(大抵はまずければなんか言ってくるか、アプリ起動時に必要なものを起動してくれますが、たまにアプリ起動が失敗するものもでてくるかもしれないので、そのあたりは自己責任ということになります)

2011年11月23日水曜日

AndroidでOpenGL(ESですけど)

AndroidでOpenGLによるプログラムの書き方を調べています。正確には組み込み用のOpenGL ESですが、OpenGLとそんなに違いはありません。というか、そこまで詳しくOpenGLを理解しているわけではないですが、一通りOpenGL、およびOpen InventorをSGI上でc++によりプログラムしてみたことあるので、関数は知っています。ただAndroidだとどのclassのどのメソッド上にOpenGLの各関数を実装したらいいのかがわかりません。(Androidのアプリはステートマシンのようなもので、状態遷移のたびにCallされる関数が決まっているようですから、その順番にあわせて必要なOpenGL関数を実装していかないといけません。

ところで、基本としてAndroidのアプリ上で画像を描くには、まずアクティビティ(Activity:画面)を生成して、そこに描画領域を指定します。この指定方法に2つの方法があり、CanvasとSurfaceViewです。Canvasはアプリケーションスレッド上で動作するのに対し、そこと並行した別スレッド上で動かすSurfaceViewというような感じです。そして、OpenGL ESはSurfaceView上で動きます。

処理速度的にあSurfaceViewは別スレッドで動くので高速に動くように見えますが、アプリが動いているときは当該スレッドが当然動いているので、別スレッドとして動くSurfaceViewではどうしてもCanvasには勝てません。

追記:
ChromeのNative clientという技術があります。chroniumのベータ版という実用化までは先が長い技術なんですが、急展開して日本のスクエニがこれでゲームを作りchrome storeで販売を始める予定だと。技術の内容的にchrome上でc,c++のコードを動かすSDKだとか、、、セキュリティどうやって確保するんだ?何か色々注意点が書かれてましたが(早いコードを書くのに注意する点とか)そこのWebGLを使う上での注意点がかなりコード細かく記載されていました。読んで見ると、なるほどと思える事が多くてためになります。AndroidでOpenGL ES使う時も注意した方がいいような話です。


後で削除するか、大幅修正するけどとりあえずメモ