投稿

7月, 2013の投稿を表示しています

iPhoneから投稿したときに特殊文字以降が表示されない

イメージ
WordPressと連携するiPhone・Androidアプリ(Titanium Mobile)を作成しているときに特殊文字(「かお」で変換して出てくる黄色のスマイリーなど)を投稿すると、それ以降の文章が表示されなかったので調べたときの覚書。環境: CentOS 5.9, nginx 1.2.6, PHP 5.4.11, MySQL 5.5.32, WordPress 3.5参考にしたのは下記サイト。MySQL に iOS の絵文字(4bytes UTF-8)が入った文字列を INSERT/UPDATE すると絵文字以降の文字がぶった切られる件 | をぶろぐ鯖管のメモ帳: mysql に 4バイトutf8 の文字を入れたい漢(オトコ)のコンピュータ道: MySQLコミュニティ騒然!MySQL 5.5.4が与えるインパクト。データベースの文字コードをutf8mb4にする必要があるみたい。一度全てのデータをSQL文でエクスポートして「CHARSET=utf8mb4」で登録し直す。デフォルトで「utfmb4」になるようにmy.cnfを変更。
# vi /etc/my.cnf[mysqld]
# charset
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci[mysql]
default-character-set=utf8mb4確認
# mysql -p -u rootmysql> SHOW VARIABLES LIKE 'character_set%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8mb4                    |
| character_set_connection | utf8mb4                    |
| character_set_databas…

[Titanium Mobile] アプリ内で選択した画像をResize

イメージ
アプリ上で複数の写真を選択してサーバーにアップロードする仕組みを作っているときに、画像を適当な大きさにリサイズするやり方を調査したときの覚書。環境: Titanium SDK 3.1.1.GA検索して出てくるのが、imageView経由で変換する方法。Can photos be resized on the device? | Community Questions & Answers | Appcelerator Developer CenterSDK 3.0からはAndroidでも
Titanium.Blob.imageAsResized
が使えるようになっているので、これを使うのが正攻法。ただ試してみるとAndroid2.3.3搭載の端末(AQUOS PHONE SHARP IS14SH)では落ちる。他にいい方法がないものかと検索すると、古い端末でも動くモジュールを開発してくれている方がいた。ImageAsResized for Android更新 | Selfkleptomaniacこのモジュールを導入して試してみると、リサイズされずに切り抜いた画像になってしまう。この現象を開発者の方に質問してみたのがこちら。Can not resize using "cameraImageAsResized" · Issue #6 · yagitoshiro/ImageAsResized · GitHub丁寧に対応してくれて無事リサイズされるようになった。ただ、これを端末で試してみると数回に一回落ちる(あとで別の原因が分かったので、このモジュールとは関係ない)。しょうがなくAndroid2.3.3以下は選択した画像そのままアップロードする仕組みに変更。この場合サーバーのアップロード制限に引っかからないようにチェックは必要。次に遭遇したのがPOSTした画像をPHPで扱う際に、なぜかファイル名が「.txt」になっている現象。Android端末のみ。Titaniumで加工した画像をアップロードするとなるみたい。PHP側で置換することで対応。foreach ($_FILES as $key => $file) {
    $name = $file['name'];    // Adjust file name for android…

WordPressでBMPを扱うためにImageMagickをInstall

イメージ
AndroidアプリからWordPressにPOSTした画像を処理する際に下記エラーが出力された。No editor could be selected.環境: CentOS 5.9, nginx 1.4.1, PHP 5.4.17, WordPress 3.5.0ソースを追ってみると、GDライブラリはBMPを扱ってない(wp-includes/class-wp-image-editor-gd.phpの60行目あたり)。ImageMagickを使うと出来そうなのでインストールしてみた。※結局YUM経由のImageMagickは古かったので、この辺は読み飛ばしてOK。remiレポジトリは前の記事を参考に。# yum install ImageMagick-devel.x86_64 --enablerepo=remi/var/tmp/imagick/imagick_class.c: In function 'zim_imagick_setimageprogressmonitor':
/var/tmp/imagick/imagick_class.c:9534: error: 'struct _php_core_globals' has no member named 'safe_mode'
/var/tmp/imagick/imagick_class.c:9534: error: 'CHECKUID_CHECK_FILE_AND_DIR' undeclared (first use in this function)
/var/tmp/imagick/imagick_class.c:9534: error: (Each undeclared identifier is reported only once
/var/tmp/imagick/imagick_class.c:9534: error: for each function it appears in.)
/var/tmp/imagick/imagick_class.c:9534: error: 'CHECKUID_NO_ERRORS' undeclared (first use in this function)
make: *** [imag…

Let's note CF-S9にWindows8をInstall

イメージ
プロモーションで買ったWindows8日本語版が余っていたので、手持ちのレッツノートをアップグレードしてみた。環境: Let's note CF-S9L(CF-S9LY9BDP), Windows7 64bit → Windows8 64bitWindows8のインストールディスクはWindows 8 アップグレード アシスタントで購入したのをiso形式で出力して、ディスクに書き込んだものを使用。アップグレード版とはいえ、Windowsの設定を引き継がなければクリーンインストール出来る。インストールからセットアップを起動して、「個人ファイルを残す」に設定して実行。インストール後デバイスマネージャーを開くといくつかドライバが見つからないものがあるので、それぞれ「ドライバーソフトウェアの更新」から
C:\util
を指定すると自動でインストールされる。アップグレード完了後は「Windows.old」というバックアップフォルダが出来て容量を圧迫しているので、下記サイトを参考に削除する。Windows.old フォルダーを削除するにはどうすればよいですか。 | Microsoftマウスパッドの縁をぐるぐるしてスクローするのは専用ソフトをインストールしないと使えないみたい。[Windows 7] ホイールパッドユーティリティを使ってスクロールできません。 | よくある質問(FAQ)インストール後は下記エラーが表示されるのでホイールパッドユーティリティだけアンインストールして使うのを止めた。会社では外付けマウスを使うし、家ではリモートデスクトップで接続するので、今のところ不便はない。ちなみにディスプレイはASUS MX279Hに出力してる(HDMI接続)。Windows7の頃はディスプレイの電源が切れて復帰するときに、砂漠状態となっていた。その現象はアップグレードで直ったみたい。これは、ビデオドライバの問題だと思うし、時間が経ってもディスプレイの電源を切らない設定で回避出来ていたけど。今まで活躍する機会があまりなかったレッツノートを使い倒せる環境が出来たので満足。< 2013/09/11 Modified >
昨日イベント会場にて、ミュート(Fn + F4) → スリープ(蓋を閉じる) → 復帰(蓋を開ける) → ログインすることなくシャットダウン。そして今日立…

[Titanium Mobile] SDKをSourceからBuildしてみる

イメージ
Androidアプリを作成しているときにソースコードを修正しないと解決しない問題に遭遇したので、ソースコードからビルドしてみたときの覚書。環境: Mac OS X 10.8.4, Titanium SDK 3.1.1.GA参考にしたのは下記。Ho to compile the SDK from source | Community Questions & Answers | Appcelerator Developer CenterSConsというビルドツールを利用するようなのでMacPortsからインストールする。$ sudo port selfupdate
$ sudo port install scons2.3.0がインストールされた。次はAndroid NDK(Native Development Kit)のインストール。下記サイトからダウンロードして適当なディレクトリに解凍する。Android NDK | Android Developers環境変数を追加$ vi ~/.bash_profile#Android NDK
ANDROID_NDK=/Applications/android-ndk-r8e
export ANDROID_NDK=${ANDROID_NDK}
export PATH=$PATH:${ANDROID_NDK}$ source ~/.bash_profiletitanium mobileのソースコードをダウンロードする。GitHub for Macを利用すると簡単。ビルドしてみる。$ cd /Users/daiki/Documents/GitHub/titanium_mobile/
$ scons android=1 android_sdk=/Applications/android-sdk-macosx/ PRODUCT_VERSION=3.1.2失敗。。。ndkのバージョンr8eはいくつかファイルを修正しないとビルドできないらしい。下記記事を参考に3ファイルを修正。Correcting a Bug in the Latest Google NDK r8e | Appcelerator Developer Center$ scons android=1 android_sdk=/Applications/android-sdk-ma…