Sakura InternetのレンタルサーバーでImacigkを使う方法(コマンドライン版)

前回はコンパネでphp.iniを設定する事で、Imagickを使えるようにしました。
でもこれではコマンドラインでphpを起動した時にimagickを使えません。

じゃあどうするか。
コンパネから設定をするとドキュメントルートにphp.iniファイルが出来ているはずです。
これを下記のように、起動時にオプションで指定してphp.iniを追加で読み込ませればOKでした。

/usr/local/bin/php -c /home/[hoge]/www/php.ini /home/[hoge]/path/to.php

-c で追加するphp.ini(/home/[hoge]/www/php.ini)を指定して、プログラム(/home/[hoge]/path/to.php)をphpで実行しています。

Subversionのメモ

個人的なメモです

# mkdir /path/to/repository
# svnadmin create /path/to/repository
# chown group:user /path/to/repository
# svn mkdir file:///path/to/repository/trunk -m "make trunk"
# svn mkdir file:///path/to/repository/tags -m "make tags"
# svn mkdir file:///path/to/repository/branches -m "make branches"
# chown -R group:user /path/to/repository/*

Android × Arduino Uno R3 接続成功

前回は コンパイル成功したが、DemoKit起動せず という残念な結果で終わってしまったのだが、
その原因は…USB Host Shieldにピンヘッダを半田付していなかったから。というバカらしい原因でした。。。

ということで、
Arduino Uno R3 (Arduino 1.0) + USB Host Shield でAndroidへの接続成功時の情報をまとめておきます。
前回とは若干違います。 Continue Reading →

Android × Arduino Uno R3

Arduino Uno R3 + USB Host Shield と Android をUSB接続してStandard Android ADK Demo Kitを動かそうとしているのだが、どうも上手くいかない…

こちらの記事を参考にするも、コンパイル時にエラーが出てしまうので、
下記手順でコンパイルしてみた。

Arduino Softwareのインストールとドライバのインストール

まずはArduino Softwareからダウンロード。
と思ったけど日本語バージョンがあったので、こちからダウンロード

PCとArduinoを接続。
ドライバのインストール。
ドライバの場所はarduinoをインストールしたフォルダ下のdriversフォルダを指定。



接続すると、Arduino / USB Host Shieldに搭載されているLEDがペカーっと光る。 Continue Reading →

CyclingTracker 2 / GPXViewer ベータ版リリース

Cycling Tracker 2を公開しました。

旧作は習作アプリという事もあり、どこかで開発を終了するつもりだったのですが、予想以上の好評を頂き、Cycling Tracker 2 + GPX Viewerという続編をリリースする事となりました。

ご利用されているユーザーの皆様、本当にありがとうございますm(_ _)m
そして今後ともCycling Tracker 2 + GPX Viewerを宜しくお願いします。

詳細は後日作成予定のページにて…

ArrayListでメモリリーク

ログを配列にどんどん溜めるのにArrayListを使って下記のようにListを作り、
処理をしていたらメモリリークが発生してしまった。

List hoge = new ArrayList();
hoge.add("処理ログ");
hoge.add("処理ログ");
hoge.add("処理ログ");
・・・

そりゃ無制限にaddしたらダメか。
という事で、一定のサイズになったらremoveしてたのだが、どうもremoveだけじゃメモリは解放されないらしい。

最終的に
一定のサイズになったらremoveしつつ、
配列生成時にサイズまで宣言したらメモリリークは発生しなくなりました。

List hoge = new ArrayList(50);
hoge.add("処理ログ");
hoge.add("処理ログ");
hoge.add("処理ログ");
・・・

単純だけどハマった。

Sakura InternetのレンタルサーバーでImacigkを使う方法

ImageMagickはインストールされているので、
サーバコントロールパネルの「PHP言語に関する設定」>「PHP設定の編集」で
extension=imagick.so
を追加すればOK。

これでnew Imagick();できるよ。

GuitarScales ver1.5

音色を変更できるようにしました。
127の音色から選択できます。

動的にmidiフィアル作成、android.media.MediaPlayerで再生。という方法で実装してます。

マーケットはコチラ

LocationListenerのonStatusChangedは効かない?

LocationListenerのonStatusChangedの挙動を勘違いしてました。

GPS信号がきちんと受信できているかどうかを確認するのにonStatusChangedを使うのかと思ってたら、
GPSプロバイダが 「利用できるようになった時」「利用できなくなった時」「一時的に利用できなくなった時」にonStatusChangedが呼ばれるのね。
つまり長い間GPS信号を受信してなくても、プロバイダに問題が無ければonStatusChangedは呼ばれないという事か。
ずっとLocationが全然更新されなくて、onStatusChangedが呼ばれないのでバグかと思ってました…

じゃあ、GPS信号の受信状態を確認するにはどうすればいいか。
代替案として、

GpsStatus.Listenerを使って、GPSの状態を確認すればよさそう。

という事で落ち着いた。

public class TestActivity extends Activity implements LocationListener, GpsStatus.Listener{

	//最後にGPSを受信したタイムスタンプ
	private long lastRecieve;

	//LocatoinManager
	private LocationManager locationManager;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		// LocatoinManagerインスタンスを取得する
		locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
		locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, this);
		locationManager.addGpsStatusListener(this);
	}

	@Override
	public void onGpsStatusChanged(int event) {
		//GPS衛星の状態が変化したら
		if (event==GpsStatus.GPS_EVENT_SATELLITE_STATUS){

			if (lastRecieve - new Date().getTime() >= 15000){
				//15秒以上受信してなかったら、処理をここに書く
			}

		}

	}

	@Override
	public void onLocationChanged(Location location) {
		//最後にLocationChangeした時間を記録する
		lastRecieve = new Date().getTime();

		//以下、GPS受信した時の処理を書く
		・・・

	}

	・・・
}

こんな感じ?

ADKかMicroBridgeか

AndroidとArduinoをUSBで接続して通信するに、ADK(Open Accessory Development Kit)を使うか、
MicroBridgeを使うかで悩んだので、それぞれのメリット・デメリットを調べてみた。

ADK MicroBridge
メリット Android公認  Android 1.5以降の端末で使える
デメリット 対応端末が少ない ※  端末のUSBデバッグモードをONにする必要がある

※Android 2.3.4の一部端末と、Android 3.1以降の端末で使える

MicroBridgeの方はAndroid1.5以降の端末で動作するので、対応端末は非常に多いのが魅力。
しかし、USBデバッグモードでないとダメというのが引っかかる・・・
セキュリティの観点からも、一般のユーザーがデバッグモードでAndroid端末を利用するだろうか・・・

一方、ADKはAndroid公認なので、今後普及するだろうと思う。
しかし、今のところ対応端末が壊滅的すぎる・・・
私が配布しているアプリでAndroid 3.1以上を使ってるのは、3~4%だけでした。

今のところ、どっちも一長一短といった感じですが、
4.0以降の端末が増えていく事を考えれば、今から勉強するならADKを選択した方がいいのかなーと思います。