Android 2.2のエミュレーターにFlash Playerをインストールしようとしたらできなかった

まずはマーケットのアプリをインストールしてそこからFlash Playerをインストールしようとしたら、それが見当たらなかった。あってもバージョン古いやつのみ。
というわけで、Flash Playerのapkを直接叩き込んでやろうかと思って探してみたら、配布しているサイトを3つ見つけた。
http://www.google.co.jp/search?hl=ja&source=hp&q=com.adobe.flashplayer-1.apk&btnG=Google+%E6%A4%9C%E7%B4%A2

"com.adobe.flashplayer-1.apk"のダウンロード

3つのサイトで、ひとつだけダウンロードしたファイルのbyte数が違うものがあった。
http://www.megaupload.com/?d=NT2ER7HX (4,457,157byte)
http://www.4shared.com/file/wa3_Lzdv/comadobeflashplayer-1.html (4,396,237byte)
http://filevo.com/2z8h2hsfx1jv.html (4,396,237byte)
最初の一個だけ違うほうをインストールしようとすると

Failure [INSTALL_FAILED_INVALID_APK]

こんな感じで怒られてインストールできない。APKファイルが間違っているぞ、と。
残り2つはFlash Playerのインストールまでは上手くいく。上手くいってManage ApplicationsにFlash Playerが表示された挙句、ブラウザを起動すると必ず途中で落ちる。もうだめだ。
んー、とりあえず「Android 2.2のエミュレーターにはFlash Playerを入れるの難しい」でいいのかな。不可能じゃないんだろうとは思うけれど、わりと頑張ってできなかった。ねる。

PHPからOCI関数を使用する際のORA-24816エラーを回避する方法

ORA-24816: Expanded non LONG bind data supplied after actual LONG or LOB column

というエラーが出た場合、Bind順を変更することによって解決ができる。
INSERT文ならVALUESの最後に持ってくる、UPDATEなら……、どうすればいいんだろう。
スマートな解決方法とは言えないけれど、WHERE句は全部BINDをやめて無理矢理SETの最後にLONGのカラムを持ってくる。
とても推奨できたものじゃないけれど、急場しのぎにこのやり方で解決してみた。

64bit版のOracleクライアントをPHPから使えない件

64bit版のCentOSOracleのinstantclientをRPMでインストールして、それをPHPから使おうとするとConfigureでエラーとなった。

 rpm -ivh oracle-instantclient-basic-10.2.0.3-1.x86_64.rpm
 rpm -ivh oracle-instantclient-devel-10.2.0.3-1.x86_64.rpm
 [root@localhost php-5.1.6]# ll /usr/lib/oracle/10.2.0.3/client64/lib

 lrwxrwxrwx  1 root root       17 1月  5日 11:34 libclntsh.so -> libclntsh.so.10.1
 -rw-r--r--  1 root root 20870419 12月 21日  2006 libclntsh.so.10.1
 -rw-r--r--  1 root root  3808761 12月 21日  2006 libnnz10.so
 lrwxrwxrwx  1 root root       15 1月  5日 11:34 libocci.so -> libocci.so.10.1
 -rw-r--r--  1 root root  1664148 12月 21日  2006 libocci.so.10.1
 -rw-r--r--  1 root root 72456247 12月 21日  2006 libociei.so
 -rw-r--r--  1 root root   137905 12月 21日  2006 libocijdbc10.so
 -rw-r--r--  1 root root  1545954 12月 21日  2006 ojdbc14.jar
 ./configure '--with-apxs2=/usr/local/apache2/bin/apxs' '--enable-mbregex' '--enable-mbstring' '--with-pear' '--with-curl' '--with-ttf' '--enable-gd-native-ttf' '--with-xpm-dir' '--enable-shared' --enable-simplexml '--with-oci8=instantclient,/usr/lib/oracle/10.2.0.3/client64/lib' '--enable-sigchild' 

(省略)
 checking for Oracle (OCI8) support... yes
 checking Oracle Instant Client directory... /usr/lib/oracle/10.2.0.3/client64/lib
 checking Oracle Instant Client SDK header directory... configure: error: Oracle Instant Client SDK header files not found

"Oracle Instant Client SDK header files not found"とのことなんだけれど、SDKはちゃんとインストールしてるはずなんだけどなー(oracle-instantclient-devel-10.2.0.3-1.x86_64.rpm
ちなみに、同じ作業を32bit版のCentOSで行うと問題なくインストールが終了する。
結局よくわからないので、お客さんという意味でのクライアントに32bit版のCentOSを入れ直してもらうことに。なんだろう、何が問題なんだろう。

Adodbからoci8ドライバを使って変数をbindしてみる

通常、MySQLなどからだと"WHERE test_id = ?"というSQLPHP内に書いてbindをするけれど、oci8ドライバだと"oci_bind_by_name"という関数を使ってbindする都合上、そのやり方だとうまくいかない。
SQL内でbind部分は":testid"のように書き、bindする配列は連想配列で渡さないとうまくいかない。

<?php
$conn = ADONewConnection( "oci8" );
$conn->Connect( false, "scott", "tiger" )
// [ポイント] SQL文 mysql等で"?"に該当するのは":testid"
$sql  = "SELECT * FROM TEST_MORE WHERE TEST_ID = :testid\n";
$bind = array();
// [ポイント] 連想配列でbindする配列を作成
$bind["testid"] = 1;
$stmt = $conn->Prepare($sql);
$rs = $conn->Execute($stmt, $bind);
?>

CentOS4.7にOracle Database 10g XEをインストールしてみる。

ファイルの入手

RPMから、入手元は下記。
Oracle Database 10g Express Edition Downloads for Linux x86

インストール開始

# rpm -ivh oracle-xe-10.2.0.1-1.0.i386.rpm
エラー: Failed dependencies:
        libaio >= 0.3.96 is needed by oracle-xe-10.2.0.1-1.0.i386
    Suggested resolutions:
        /home/buildcentos/CENTOS/en/4.0/i386/CentOS/RPMS/libaio-0.3.105-2.i386.rpm

"Failed dependencies"、依存関係で失敗。libaioを入れろとのご指摘。
yumから。

# yum search libaio
(略)
# yum install libaio
(略)
Installed: libaio.i386 0:0.3.105-2
Complete!

インストール再挑戦

# rpm -ivh oracle-xe-10.2.0.1-1.0.i386.rpm
Preparing...                ########################################### [100%]
   1:oracle-xe              ########################################### [100%]
Executing Post-install steps...
You must run '/etc/init.d/oracle-xe configure' as the root user to 
configure the database.

成功!

設定

設定しろって書いてあるから、それに従う。

# /etc/init.d/oracle-xe configure
ブラウザからアクセスする際のポート番号
Specify the HTTP port that will be used for Oracle Application Express [8080]:10081 

8080は使われてるかもとのことなので、かぶらなそうな数字を選ぶ。

データベースリスナーのポート番号
Specify a port that will be used for the database listener [1521]:1521

デフォルトそのまま

パスワードの設定
Specify a password to be used for database accounts.  Note that the same
password will be used for SYS and SYSTEM.  Oracle recommends the use of 
different passwords for each database account.  This can be done after 
initial configuration:

"co*******"、いつもの汎用パスワード。

Confirm the password:

再入力。

起動時にOracleも動かす?
Do you want Oracle Database 10g Express Edition to be started on boot (y/n) [y]:y

他に何かしてるわけでもないし、面倒なのでyesに。

お疲れさまでした
Starting Oracle Net Listener...Done
Configuring Database...Done
Starting Oracle Database 10g Express Edition Instance...Done
Installation Completed Successfully.
To access the Database Home Page go to "http://127.0.0.1:10081/apex"

設定完了。

さっそくブラウザからアクセス


"Username"に"system"、"Password"にさっき設定したパスワードを入力して"Login"すると、ログインできるはず。

こんな画面が出てくればきっと正常に動いていると思います。

PHPからOracleへAdodbを介して接続してみる。

PHPからOracleに接続可能にする

インストールされていたPHPに、Oracleを使うオプションがなかったので追加して再インストール。

# ./configure ...(略)... '--with-oci8'
# make
# make install

Adodbを使って接続

<?php
$conn = ADONewConnection( "oci8" );
$conn->Connect( false, "system", "********" );
?>

最初"oci8"の箇所を"oracle"と書いていて、PHP自体のORALOGINを使えばちゃんと接続できるのに、どうしてAdodbを使うとダメなんだろうと2時間くらいハマった。
Adodbの"drivers"ディレクトリの"adodb-****.inc.php"の"****"の部分が、"oci8"の部分に対応してるんじゃないかと仮定して実行してみたら見事接続。
久々にハマりから抜けるカタルシスを味わったね。

WYSISYGエディタとしてTinyMCEが使えるOpenPNEに、FCKEditorを入れようとしてみた。

TinyMCEはSafariをサポートしていない、とのことなので、じゃあというわけでFCKEditorに変えようと奮闘してみた。結果は失敗だったけど。

TinyMCEはSafariをサポートしていない。

Safari と TinyMCE (WYSIWYGエディタ) (groundwalker.com)

せっかくなので、TinyMCE が Safari をどれくらいサポートしているか試してみよう。

英数字は入力できる
日本語は入力できる場合があるが、変換を確定すると改行が入る
センタリング、右寄せはできる
太字、イタリック、アンダーライン等修飾は効かない
フォントサイズ、フォーマットの変更もできない
箇条書き、インデントもできない。
HTMLソース編集も無理っぽい
リンクの挿入も無理っぽい
結局、英数字の入力とセンタリング、右寄せしかできない、ようするにほとんど使えない、ということでした。。。。まぁ、そう書いてるんだけどね。

ということで、困っていたわけなのだ。SafariでTinyMCEを使うと、コピーしたものがペーストできなかったり、そもそも改行が反映されなかったり反映されたり、不審な挙動ばっかり繰り返していた。

そんじゃあ、日記のエディタをTinyMCEからFCKEditorに変えてみようか

要はエディタの箇所をそのままFCKEditorに置き換えればいいんじゃね?と思って始めてはみたものの、リンクの挿入箇所とOpenPNEの小窓機能が非常に相性が悪く、途中で断念。

  • URLっぽい文字列を入力すると、その部分にAタグが入り、それをOpenPNEの変換機能が小窓やらリンクやらに書き換えて大騒ぎ
  • 小窓はそれまで使えていたため、機能として削除するわけにはなかなかいかない

OpenPNEのTinyMCEはかなりカスタマイズが入っている

入っている。少なくとも、動作はSimple版よりかなり軽いし、URLっぽい文字列の自動変換機能とかも切られている。

他人が使う用のWYSIWYGエディタを組み込むのはめんどくさい

自分が使うんなら機能制限とかも気にならないんだけれども、他人が、それも不特定多数が使うようにブラウザWYSIWYGエディタを導入するのはコストが高く制約があることを、テクニカルディレクターやシステムエンジニアは認識すべき。少なくとも、コミュニティサイトにほいほいと付け足していいものじゃない、と思ってこの案件は終了。