small の1年間 Reserved Instance で契約して運用してきたが、1年が過ぎたのでサーバの見直しをした。

ちなみに Reserved Instance の期限が切れる際はメールなどの通知はこないので、自分で有効期限を管理しておく必要がある。

small ではちょっとメモリが少なかったので、今度は medium にアップして運用しようと思い、サーバの移行を行った。

2?3日運用して問題なさそうだったので、Reserved Instance を購入しようと思い管理画面へ、購入画面で条件を入力して Search をクリックすると。。。

There were no Reserved Instances that matched the search filters you provided.
Please adjust your search filters and try searching again.

だそうだ。。
えっ、買えないの?
条件を変えろといわれても、LINUX,medium,ap-northeast-1a と最低条件3つを入れているだけなのでこれ以上絞れない。

試しに zone を any にしてみたら、1b とか 1c のものがリストに出てきた。
ということは 1a だけ Reserved Instance が買えないということ?

で、問い合わせを行ってみたところ
「データセンター効率化のために、新規サービスにつきましてはap-northeast-1bとap-northeast-1cへの集約化を行なっている」
とのこと。

なので、これからインスタンスを起動する人は 1b か 1c で起動したほうが良いようです。。




フュージョンクラウドで仮想サーバを起動して、マシンにログインしようとしたがログインできない。

起動時に作成した認証キーを putty にセットしてログインしようとすると ユーザ名の入力を求められるので、 root と入力するが refuse される。

しばらく悩んだ結果、ユーザ名に f-user と入れればログインできることに気づいた。

f-user でログインしてから su になってごにょごにょするということのようだ。

とりあえず su のパスワード設定、認証キー設定、ユーザ作成、などを行なう。



In App Billing v3 の実装テストで、一度テスト購入したものをもう一度テストしたかったので、Google checkout の管理画面で該当トランザクションをキャンセルして、もう一度購入処理を実行してみた。

ところが、すでに購入済みの動きになってしまって、購入画面が出てこない。

checkout のキャンセル反映に時間がかかるのかと思い、しばらく待ってから試してみるが、同様に購入画面が出てこない。

調べてみたところ、In App Billing v3 は購入結果をキャッシュして、動作を高速化しているようだ。

推測だが、キャッシュに購入済みのフラグがあって、それを見て購入済みと判断されているらしい。

では、どうするか。

単純に考えるとキャッシュを削除すれば良さそうだ。

[設定] - [アプリケーション管理] - [Google Play ストア] - [キャッシュを消去]

でキャッシュを削除して、もう一度トライ。。。

無事に購入画面が表示されました。

意外とシンプルに解決。
はまらなくて良かった。。


In App Billing v3 でサンプルを参考に実装したが Can't start async operation (launchPurchaseFlow)となる。

一回目の処理はちゃんと走るのだが、そのまま二回目の処理に入ろうとするとこのエラーがでる。
メッセージの通り、前の launchPurchaseFlow が走っているので新しい launchPurchaseFlow は開始できないよ、ということなのだが対応はいかに。

05-22 06:54:05.451: E/AndroidRuntime(9179): FATAL EXCEPTION: main
05-22 06:54:05.451: E/AndroidRuntime(9179): java.lang.IllegalStateException: Can't start async operation (launchPurchaseFlow) because another async operation(launchPurchaseFlow) is in progress.
05-22 06:54:05.451: E/AndroidRuntime(9179):     at com.example.inappbilling.util.IabHelper.flagStartAsync(IabHelper.java:794)
05-22 06:54:05.451: E/AndroidRuntime(9179):     at com.example.inappbilling.util.IabHelper.launchPurchaseFlow(IabHelper.java:358)
05-22 06:54:05.451: E/AndroidRuntime(9179):     at com.example.inappbilling.util.IabHelper.launchPurchaseFlow(IabHelper.java:324)
05-22 06:54:05.451: E/AndroidRuntime(9179):     at co.example.exampleapp.TutorialActivity.doPayment(ExampleActivity.java:641)
05-22 06:54:05.451: E/AndroidRuntime(9179):     at co.example.exampleapp.TutorialActivity.onClick(ExampleActivity.java:625)
05-22 06:54:05.451: E/AndroidRuntime(9179):     at android.view.View.performClick(View.java:2552)
05-22 06:54:05.451: E/AndroidRuntime(9179):     at android.view.View$PerformClick.run(View.java:9229)
05-22 06:54:05.451: E/AndroidRuntime(9179):     at android.os.Handler.handleCallback(Handler.java:587)
05-22 06:54:05.451: E/AndroidRuntime(9179):     at android.os.Handler.dispatchMessage(Handler.java:92)
05-22 06:54:05.451: E/AndroidRuntime(9179):     at android.os.Looper.loop(Looper.java:130)
05-22 06:54:05.451: E/AndroidRuntime(9179):     at android.app.ActivityThread.main(ActivityThread.java:3701)
05-22 06:54:05.451: E/AndroidRuntime(9179):     at java.lang.reflect.Method.invokeNative(Native Method)
05-22 06:54:05.451: E/AndroidRuntime(9179):     at java.lang.reflect.Method.invoke(Method.java:507)
05-22 06:54:05.451: E/AndroidRuntime(9179):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
05-22 06:54:05.451: E/AndroidRuntime(9179):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:624)
05-22 06:54:05.451: E/AndroidRuntime(9179):     at dalvik.system.NativeStart.main(Native Method)

対応は onActivityResult を実装する。でした。
実装が抜けてました。
サンプルを参考にして onActivityResult を実装したら無事に動作しました。


Galaxy S3 アルファ、Windows 7マシンに昨日まで接続できていたのに、今日接続しようと思ったら Unknown USB device になって接続できない。

ドライバが正しくインストールできません、的な感じで認識しません。

Kies を起動してドライバをインストールしなおしても、相変わらず認識できず、PCを再起動してもだめ、デバイスマネージャで一旦削除してもダメ。

途方に暮れそうになっていたとき、ふと、やっていないことがあることに気付いた。

端末の再起動である。

Galaxy側を再起動して再度チャレンジ。。

ドライバのインストールが始まり、あっさり認識しました。

なんだよぉ。。



webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(this, "activity");
view.loadUrl("javascript:window.activity.someMethod();") ;

というコードで activity の
public void someMethod() {
  ...
}
が呼ばれれいたのだが、android 4.2 から呼ばれなくなった。

調べたところ、4.2でセキュリティを考慮した仕様変更があったようです。

対応は、呼ばれるメソッドの宣言に
@JavascriptInterface
を記述するということのようです。

@JavascriptInterface
public void someMethod() {
  ...
}

な感じ。

JavascriptInterface cannot be resolved to a type
と言われたら

import android.webkit.JavascriptInterface;
を付けましょう。

targetSdkVersionも17以上になっているか確認しましょう。


startActivityForResult で起動したのに onActivityResult が呼ばれない。

なぜだろう。

悩んで調査した結果
呼び出し先のactivity に android:launchMode="singleTask" が指定してあったのが原因でした。

この記述を削除(デフォルト)にしたら無事 onActivityResult が呼ばれるようになりました。

singleTask だと使いまわされるから終了せずに onActivityResult が呼ばれないのだろうか。。



ScrollView にImageView を追加したが、LayoutParamが効いていないようだ。

画像の縦横比がおかしくなっている。

調べてみたところ間に LinearLayout を入れると良いようだ。

ScrollView - LinearLayout - ImageView

この構成にしたら、きちんと横幅いっぱいで縦横比も正しく表示できました。



In-App Purchase のテストをするときは、設定のAppStore でアカウントのサインアウトをしてから、テスト対象のアプリを起動し、In-App Purchase が発生する場所を動作させるとログインダイアログが出てきて課金テストが出来る。

でも、シミュレータの場合だと設定にAppStoreの項目がないのでサインアウトできない。
サインアウトできないと、アカウントが変更できないので、別のアカウントでテストができない。

調べたところ、以下の方法でログアウトが可能でした。

- シミュレータを終了させる。

- ホームディレクトリ以下の
Library/Application Support/iPhone Simulator/6.1/Library/com.apple.itunesstored
にあるファイルを削除する

- シミュレータを起動して、テスト対象のアプリを起動する

以上で無事ログアウトされていました。

公式にはシミュレータのリセットをしたほうがよいのかもしれません。
その場合は、アカウント情報以外のものもリセットされてしまうと思います。



iOSアプリ開発時にはARCという機能をONにしている。

ARCはインスタンスを管理して、不要になったら自動的に解放してくれる便利な機能です。

これを使うことによって release などの明示的な解放処理の記述を書かなくてもよくなります。逆に書くとエラーになります。

しかし、開発をしていると、他のプロジェクトのソースを参考にしたり取り入れたりすることも多いので、その際はこのARCが問題になります。

参考にするソースがARCに非対応の場合、release などの記述がコード中にあるので、そのまま取り込むと
not available in automatic reference counting mode
というようなエラーが発生します。

このエラーを無くすために ARC 非対応の記述を一つ一つ直すのは大変なので、以下の手順で特定のソースだけ ARC をOFFにしてコンパイルします。

[Build Phases] - [Compile Sources] で該当のソースファイルを選択してEnter

表示されたエディットボックスに -fno-objc-arc を記述してEnter

この設定で、指定されたファイルは ARC OFF でコンパイルされます。




最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

アイテム

  • abc2012spring.jpg
  • starbucks.png
  • twitter.png
  • windows.png
  • benz.png
  • firefox.png
  • google.png
  • anpanman.png
  • sign1.png
  • 711.png

タグクラウド

Powered by Movable Type 5.13-ja