DBD::Pg::st execute failed: ERROR: invalid input syntax for integer: “”

とある検索データ作成中です。

perlのDBD利用での、postgresデータベースのintegerへのNULL値のinsertエラーですが、以前は、
====
例)
dummy表:
 no integer
 name character varying
 level intger
====

$insert = “insert into dummy (no,name,level) values (?,?,?)”;
$sth_insert = $dbh->prepare($insert);
$data = “null”; #とか、$data = “”でもいけた時もあった。
$sth_insert->bind_param(1,”TEST”,$data);
$sts = $sth_insert->execute();

で、bind_paramの方で、NULL判断してくれてintgerにNULL値が入ってくれてたのにこれだとエラーする。
当然、$data = “”ではだめで、結局 $data = undef;
として、変数そのものをundef(未定義値)にしてOKとなった。

*自分が使ってるphpPgAdminもデータ挿入で、intger項目未入力だと””エラーとなる。
いつからこんなことに。PostgreSQL 8.?以降から。旧システムからの移行するとき注意が必要・・

木の歴龍 テクニカルダンジョン やっとグリフォン 最終日やっとゲットできた。

6/4から超級と地獄級でグリフォン追加されましたが、全然遭遇せず。
やっと最終日の2倍期間で、ゲットできました。
5Fに向けてスキル貯め調整してたけど、4Fで遭遇して2ターンで倒せきれずここは、コンティニューした。
超級、地獄級と合わせて通算36周はしたかと思います。

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は、適当なキャラクターに変換しない。(例:全角「-」は全角「-」のまま)

パズドラ: 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 480×854 -i fb0 -f image2 -vcodec png c:tempimage001.png

3) adb push C:tempimage001.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

Nexus 7 root化したらパズル&ドラゴンズが動かなくなってしまった。

Nexus 7にパズドラ(パズル&ドラゴンズ)入れて遊んで見たんですが、その後root化したらパズドラが動かなくなってしまった。

どうも、
/system/app/Superuser.apk
/system/xbin/su
この2つがあるとだめなようで、/system/app/Superuser.apkは、
/data/app/Superuser.apkに移動して、/system/xbin/suはとりあえず、suuにrenameして、
動作するようになった。

*書き換えメモ:/system フォルダを書き込み可能にする
$ adb shell 
$ su
# mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system

AndroidでICカード NFCタグを読み込み

会社で、開発用にNexus7を買ったのは実は、NFCタグを読み込みたかったのです。
(他の理由もありますが。)

http://www.atmarkit.co.jp/ait/articles/1211/27/news072.html

からサンプルコードを頂き、コンパイル&GOとしてみたところ、
[2013-04-24 00:46:27 – NfcDiscover] No Launcher activity found!
[2013-04-24 00:46:27 – NfcDiscover] The launch will only sync the application package on the device!
え?どういうこと?しばし悩むこと小一時間。
通常は、
<intent-filter>
       <action android:name=”android.intent.action.MAIN” />
       <category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>
ですが、これがなくてactivityが見つからないし、アイコンも登録されない。ただし設定-アプリのリスト中には存在している。

The launch will only sync the application package on the device!
=> ランチャーは、デバイスの同期で起動って書いてある。英文を読めば良かったのですね。
もう、一行目のNo Launcher で全て読み飛ばしてた!
そういうことです。これで問題なかったのです。

ということで、ICOCAカードをNexus7の背面上部に合わせると反応しました。

手持ちのICカードを調べてみると。
  1. ICOCA                       NfcF
  2. 京都ぷらすOSAKA PiTaPa NfcF
  3. JAL MILEAGE BANK        NfcF
  4. 運転免許証                 IsoDep/NfcB
となっていました。運転免許証 は3月に更新したばかりでICカードになってました。^^

Android Nexus7 で CrenaCam起動しない。

会社で、開発用にNexus7を入手したのでまず、CrenaCamを入れようとしたけど、Google Playで検索してもCrenaCam検索しても出てこないし、直接、URLで野良アプリ風でダウンロードしても、Androidで「お使いの端末はこのバージョンに対応していません。」のメッセージ。

デバッグしてみたところ、
Camera.open();
で落ちる。
http://stackoverflow.com/questions/16039670/android-camera-preview-code-not-working-with-nexus7-surfaceview-error
を見ると。

1)The problem is that Camera.open() will return null if there is no rear camera:
とのことで、フロントカメラは、Camera.open(0);にしろと記載があった。
で、Android 2.1だと、このパラメータは使えません。
Android 2.3.3だと、Camera.open(0);が使えた。

2)オートフォーカス設定で、
camera.setParametersを使ってセットしていますが、ここでも落ちる。
try{}chatch{}で逃げる。

以上でとりあえず、CrenaCamが起動しました。
ん~。Google本家のハードなのにいろいろと面倒です。

oracle プロシージャーのインポートに6時間がかかる

【メモ】

本番システムのoracleデータベースをexportしたものをimportしたのですが、プロシージャー以外はすんなりimportできましたが、プロシージャー(150本)は、6時間ぐらいかかってしまった。
(週末にimportを動かしたまま放置して、今朝みたら全部正常にimportできていた。)

プロシージャーがなぜこんなにも時間がかかったかみたところ、各プロシージャーの作成時間を調べてみると、大体30分区切りで一群のプロシージャができている模様。
どれがネックになっているか見てみるとどれも、データベースリンクを使用しているプロシージャーでした。

本番は、データベースリンク使っているのですが、今回開発しているところは、データベースリンクはいらないので、当然ありません。
データベースリンクが引けないので、多分タイムアウトするまで待っているものと思われます。

インポート時だけタイムアウトを短く設定できるか、精査不要のオプションがあればいいのに。。。

==== 追記 ====

インポートのCOMPILEオプションはデフォルト”Y”みたいですので、これを”N”でやれば
早かったかも。


imp system/xxxxxx file=abc.dmp fromuser=user1 touser=user2 ignore=y compile=n

Android 開発環境で IntelliJ にしてみた。

2年前 CrenaCam 0.9.2.5を作った時、Eclipseを使ってて、今回EclipseをバージョンアップしてAndroid 開発環境を最新にしようとしましたが、なんかユーザインターフェースがすごく変わってしまって、以前のProjectもimportしなくてはならず、なんとなくうまくProjectが操作できない。

そこで、 IntelliJというものがあり、こちらで紹介されていたので早速インストールしました。
http://www.devlog.alt-area.org/?p=1591

Import Projectで、以前作ったCrenaCamera-Release-0.9.2.5-flashをインポートして、RUNで動作しました。

署名付きAPKのエクスポートで、コマンドラインで作った以前のキーファイルを使えるか?
使えないと、Google Playに登録しているので違うアプリとして認識されてしまい困ったことになります。

Build->Generate Signed APKで作成します。以前作ったキーファイルを指定して
Key store password,Key alias,Key passwordの3つを入力してCameraCam.apkを作成します。
*↑の3つを忘れていたら同じデジタル署名は作成できません。

正式版のCrenaCamがインストールされた状態で、

C:Androidandroid-sdktools>adb install -r C:workandroidCrenaCamera-Release-0.9.2.5-flashCameraCam.apk
1033 KB/s (134450 bytes in 0.127s)
        pkg: /data/local/tmp/CameraCam.apk
Success

で、デジタル署名は前と同じ(当然か・・)でUPDATEできたのでこれからはIntelliJを使うことにします。

*ちなみに、Build->Generate Signed APKで新たに署名を作ってインストールすると、
C:Androidandroid-sdktools>adb install -r C:workandroidCrenaCamera-Release-0.9.2.5-flashCameraCam.apk
518 KB/s (134834 bytes in 0.254s)
        pkg: /data/local/tmp/CameraCam.apk
Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]
のようなことになり失敗します。(この場合は元のアプリを削除すればインストールできます。)