2013年5月28日火曜日

PostgreSQL インポートエラー

サーバリプレイスの為、PostgreSQL 8.1 コードセットUTF-8で作られたデータベースをpg_dumpでexportして、
新しいサーバのPostgreSQL 8.1にimportしようとしたところ、
invalid byte sequence for encoding "UTF8": 0xc030
でimportできない。(500MぐらいのDB)データ中に不正なコードがあるようで、
手当てするにもいったいどれだけあるのかも不明・・・

そこで、以下の手順を思いついた。nkfでUTF-8からUTF-8に変換したらいいのではないかと。

nkf -xw --no-best-fit-chars src.dmp > dst.dmp
dropdb abcd
createdb abcd
psql abcd < dst.dmp

importできました。メモに残しておきます。
結局、src.dmp と dst.dmpの差分を取ると、文字化けしていたレ―コードは2レコードだった。


※ -xは、半角カナは半角カナのままにする。
--no-best-fit-charsは、適当なキャラクターに変換しない。(例:全角「-」は全角「-」のまま)

2013年5月26日日曜日

パズドラ: Pazdof パズドフ for Android / Xperia arc (SO-01C) 2.3.2

Pazdof パズドフは、hiehieさんが作られているパズドラのコンボ解析アプリです。

Androi4.0以上だと、「パズドラCombo」があり解析に必要なスクリーンショットもroot権限なしで、電源ボタン+ボリューム(↓)同時押しで取れるのですが、自分の持ってるXperia arc (SO-01C) は、スクリーンショットはroot権限がないととれません。
しかもAndroid 2.3.2でそもそも「パズドラCombo」が使えません。

ここぞという時に使いたいので、Pazdof パズドフを使って見ることにしました。

<必要なツール>
■PCツール
・Android-SDK (adb)
 http://developer.android.com/sdk/index.html
・ffmpeg.exe
  http://blog.k-tai-douga.com/category/359294-1.html
  にコンパイル済みのものが配布されていました。

 *スクリーンショットを取るには、USBでPCと接続してPC上で取る必要があります。
  他のスマホ機種だとroot化していれば、アンドロイドアプリで取れるのですが、  Xperia arc 2.3.2だと全体的に赤みがかかってしまいます。
  Xperia arcはRGBXで、どのアプリもXRGBフォーマットで変換しているようで、使えません。

■Androidアプリ
・Pazdof パズドフ for Android
  https://play.google.com/store/apps/details?id=jp.hiehie.pazdof


<設定>
●PCとXperiaをUSBで繋げておく。
DOS窓で、以下を実行。-pix_fmtは、rgbaです。rgb32だと赤が抜けて青みになります。
フレームバッファから直接rawファイルをPULLして、ffmpegでpngに変換します。

1) adb pull /dev/graphics/fb0 fb0
2) ffmpeg  -vcodec rawvideo -f rawvideo -pix_fmt rgba -s 480x854 -i fb0 -f image2 -vcodec png c:\temp\image001.png

3) adb push C:\temp\image001.png /mnt/sdcard/Pictures/Screenshots/

●XperiaでPazdof パズドフ起動(Android 2.3.3以上ですが、2.3.2でも動作しました。)

1) [開始]ボタンを押します。
 ・スクリーンショット保存場所:デフォルト設定でOK。
 ・右90度回転はチェックを外す。
 ・ドロップ位置の調整(Y座標) -16でフィットしました。
  正しい位置にくると、解析結果が自動で表示されます。
 ・ルートの表示位置の調整(Y座標) -27ぐらい。

以上で、パズドラを起動すればPCでスクリーンショットを取ってAndroidに転送すれば自動で解析ルートが表示されます。
(*PCからのコマンド実行は、BATファイル作成してファイル名も時間を含むようにすると良い。)


[追記]
Xperia arc 2.3.2 でのスクリーンショットが赤色な謎がこの機会で分かった。
これで、自力でスクリーンショットアプリ作れます。(root化必要ですが)
/dev/graphics/fb0のフレームバッファーをRBGに変換すれば良いだけですので、
以前、カメラアプリを作った時のコンバートが利用できるかと。
https://play.google.com/store/apps/details?id=jp.picolix.camera.controll
http://dip.picolix.jp/disp9.html