コードハイライト用

せっかく無職になったから、働いてる時に忙しくて出来なかった色々な事をやってみようと場当たり的に始めたブログ。 だったけど就職決まっちゃいました。

2012年10月6日土曜日

[Web] Heroku を使おう

最近JavaScript+HTML5してます

ローカルでも動作確認できるけど、人に見せたりするのに便利なので
Webでアクセスできるようにしたいなぁ・・・と思い、詳しい同僚に聞いたら面倒くさそうに教えてくれました

こちらのサービスを使います

Heroku
http://www.heroku.com/

Heroku -> へーろく -> へいろく -> 平禄?
って思ってたらそんな事はなかった。読み方は「ヘロク」だそうです
参考:https://groups.google.com/forum/?fromgroups=#!topic/heroku-ja/5VuJ9GVn2i4

変な外人テンションの和風のサイトですが、便利なのです
どういうものかと言うと、Webアプリ実行環境を手軽に用意してくれるクラウドサービスで、基本無料です
5MBのDBもついており、練習、テストには持って来いな感じです

より細かい説明はググると色んな偉い人が説明してくれていますので、
実際に使うまでの手順やらだけ書いていきます

なお、今回の目標は
Herokuサーバのとあるパスにhtmlファイルを置き、そこでJavaScriptを走らせる&公開する事です
phpアプリとして登録して、その実phpは使わずにhtmlを置くだけです

--------------------------------

2012年2月29日水曜日

[Android] MediaPlayer のエラーコード -19

MediaPlayer で再生/停止の連続コールテストしていたら変なエラーコード出た。

E/MediaPlayer(5346): error (-19, 0)

ググったらそれらしいのにはたどり着いたけど、直接的な原因が分からない。

ログを追っていたら、発生タイミングはほぼ同じで
リソース漏れしてる時こんな感じになるよなーとドキュメント読みなおしてたら

MediaPlayer削除するときに MediaPlayer.release() 呼んでなかった。

いと恥ずかしいです。

[Android] メモリの確保状況をデバッグする

GLSurfaceView を実装してテクスチャゴリゴリ書いてたら
一定の周期で画面がカクつきだした。

ググるとガベージコレクションが動作する際に処理が長時間ブロックされる、と。

ログをよく見ると確かにGCが頻繁にログをだしていたので、
こりゃいかんと eclipse でのメモリ確保状況を調べる事にチャレンジ。

以下備忘録兼ねて手順。


1.eclipseからデバッグしたいアプリを実行する


いつもの要領で。



2.DDMSパースペクティブを開く


レイアウトによりますが、とりあえずデフォルトだと右上のこいつ。



3.実行中デバイスのデバッグしたいスレッドを選択


Devices ビューに実行中のデバイス一覧が表示されています。
更にデバイスからスレッドの一覧が表示されているので、デバッグしたいスレッドを選択。
今回は「system_process」にします。



4.「Allocation Tracker」ビューの「Start Tracking」を選択


最初は何も表示されていないと思いますが、「Start Tracking」を押すと
メモリの監視が開始します。



5.「Allocation Tracker」ビューの「Get Allocations」を選択して結果を取得する


「Start Tracking」を押した以降のメモリの確保状況が出力されます。
確保されたクラス、サイズ、スレッドID、どのクラスのどのメソッドから、等かなり詳細に出ます。


更に良い事に、確保項目を選択すると、ビューの下半分に確保時のスタックトレースが表示されます。
今日はこれで大分助けられた。


今回の自分の場合は、テクスチャ描画時のコマンド引数用に
ローカル定義していた byte[] や float[] が大量にリストされており、そいつらの掃除のためにGCが頻繁に動いていました。

それらローカル変数をメンバ変数として、テクスチャ生成時から破棄時まで使いまわす形に修正したところ
目に見えてカクつきが抑えられました。ほんと良かった。