Work Records

日々の作業記録です。ソフトウェアエンジニアリング全般から、趣味の話まで。

アプリ広告収入 2015/02

2月は日数が少ないですからね!笑

iOS nend
ときめきエキスプレスStation ¥1
https://itunes.apple.com/jp/app/tokimekiekisupuresustation/id660044163?mt=8&at=10l8JW&ct=hatenablog

バブルデコレータ(iOS) ¥359
https://itunes.apple.com/jp/app/baburudekoreta/id741537396?mt=8&at=10l8JW&ct=hatenablog

バブルデコレータ(android) ¥282
https://play.google.com/store/apps/details?id=org.waremon.bubble2&hl=ja

高額喫煙納税 ¥0
https://itunes.apple.com/jp/app/gao-e-chi-yan-na-shui/id902170473?mt=8&at=10l8JW&ct=hatenablog

計 ¥643

Android AdMob
THE じゃんけん ¥56
https://play.google.com/store/apps/details?id=org.waremon.janken&hl=ja

原発を運転せよ ¥11
https://play.google.com/store/apps/details?id=org.waremon.fissioin2&hl=ja

音神経衰弱 ¥6
https://play.google.com/store/apps/details?id=org.waremon.soundmemory2&hl=ja

計 ¥73


計 ¥716

2月はバブルデコレータのandroid版をリリースしたんですが、あんまりインパクトは無いですね。
相変わらず、昼飯代程度という事で。。。


NewrelicでAWSのモニタリングするときのRDSのFree Disk監視がいけてない

NewrelicでのAWSのモニタリングが予想以上に便利だった

最近は、自前で色々と作らなくても監視やらリソースモニタリングやらクラウドサービスで出来るようになってすばらしい。
NewrelicはAWSのアカウントを持っているとStandardプランが無料で使えるので色々と設定してみたところ、非常に便利で感動した。

この辺り、参考に。
http://www.rco.recruit.co.jp/blog/%E6%8A%80%E8%A1%93tips/273
http://www.rco.recruit.co.jp/blog/%E6%8A%80%E8%A1%93tips/273

唯一、保存できるデータが過去1週間までというのが引っかかるが、まあ無料なので一週間でも有り難い。
欲を言えば、過去のデータは丸めて精度を落としてでもある程度見れるようになっているとうれしい。

一点、RDSのFree Diskの監視がいけてない

newrelic_aws_cloudwatch_pluginをいれてRDSの監視を始めるとおかしな事が発生。
1. RDSのDiskが5Gなので、Free Diskのアラート閾値を1Gに設定してみる。
2. 今の残りが4Gなのでまだまだ余裕のはず。
3. なぜかアラートが飛ぶ。
4. 色々と閾値を試してみると、どうやら4G以上を設定してみるとアラートが飛ばない。

なにこれ、逆、逆。
バグでしょうか。何でしょうか。

ググってみると、偉大なpostを発見。
コメントにpull req出してくれよ!って書いてあるのでそのうち改善されるんでしょうか。

Getting New Relic and RDS to play nice - Shine Solutions Group

UIImageを使おうと思ったら、expected a typeというエラーが出た

小ネタの割にはまった

こんな感じでメソッドを定義したらexpected a typeというエラーが出た。

ImageUtilsというクラスのヘッダファイル[ImageUtils.h]

#import <Foundation/Foundation.h>

@interface ImageUtils : NSObject

+ (UIImage *) makeThumbNail:(UIImage *)orgImage;    <<<ここで expected a typeというエラー

@end

大抵はimportの循環参照らしいが

このエラーはimportの循環参照が引き起こすらしいが、新しいアプリを書きはじめで怪しい部分などない。ググりまくる。

UIImageはUIKitの中にあるらしい

ちゃんとドキュメント読めと。。。
NSObjectを継承したクラスを作るとデフォルトではFoundationがimportされているが、UIImageはUIKitの方にあるらしい。

#import <UIKit/UIKit.h>

に変えて解決。めでたし。

いやいや、めでたしじゃない。昔のprojectはUIKitなんてimportしてなくてもUIImageつかえたぞ

そう、xcode5時代から作っていたようなprojectではいちいちUIKitをimportしなくてもUIImageを使えていた。
色々調べた結果、pchファイルがxcode6から自動的に作られなくなった事が原因ぽい。
このため今まではあらかじめ読み込まれていたUIKitが読み込まれていなかった。
pchを作る方法はこの辺りが参考になりそう。
Xcode6 PCHファイルがないので追加する - あぷすた - iPhoneとWebとプログラミングと



ということで、めでたし。

[asin:4861009480:detail]

sambaサーバーにつながらないと思ったらルーターの設定でポートが閉じていた

大分はまった

諸事情によりsambaをインストールしていたのだけど、なぜか自宅のMacから接続できない

インストールはこの辺りを参考に


接続確認

いざ、Macから接続しようとしてもなぜかTimeoutになってしまう。ログにも出ない。

設定自体は出来ているのか、サーバーが動いてるホストで以下を実行してみる。

# smbclient -L xxx.xxx.xxx.xxx -U username

いろいろバーっと出てきて問題無さげ

試しに、別のサーバー(sakuraのVPS)からアクセスしても問題無さげ。

てことは家のネットワークの問題

ということで、自宅のルータの設定を見ていたらどうも445ポートが空いていないっぽい。
ここら辺を見る限りsamba系のポートをあけておくのは特にwindowsだと危険らしく、ルーターさんが気を利かせてデフォルトで閉じてくれているのだろうか。

あまり詳しくないけどそうゆうものかという感じ。
普段使わないのであれば閉じておいた方が無難そう。
接続先のIPが決まっているならそこだけにあけておくとか。


なかなかはまったけど良い勉強にはなったな。


水玉コラ作成アプリ バブルデコレータ Android版リリース!

紆余曲折ありましたが、iPhone版でリリースしていたバブルデコレータをAndroidでもリリリースしました。

以下紆余曲折まとめ




反省

Titaniumで作る時は、Androidを先に作っておくべきかなという感じ。iPhoneではちゃんと動くのにー的な体験をすごいしたし、ググってもそんな話が大量に出てくる。
手間無くワンソース、マルチプラットフォームは夢だったのだろうか。。。

今後

やっと、iOSAndroidで同じアプリをリリースできたのでプラットフォームの違いとかいろんな事を実体験として発見できると良いかなと思っている感じです。
とりあえずインストールお願いします!

Andorid版
https://play.google.com/store/apps/details?id=org.waremon.bubble2&hl=ja

iPhone
https://itunes.apple.com/jp/app/baburudekoreta/id741537396?mt=8



[asin:4839941084:detail]

Titanium mobile Androidにnendのバナー広告を貼る

Advertising IDが必要らしい

iPhone版で動いていたソースをそのまま動かしたらエラー

[INFO] :   dalvikvm: Could not find method com.google.android.gms.ads.identifier.AdvertisingIdClient.getAdvertisingIdInfo, referenced from method net.nend.android.NendHelper.getAdvertisingId
(以下、エラーがドバーっと)

Google Playのポリシー変更により、Android で提供されている Advertising IDというものが必要との事。
さらに、Advertising IDを使用するにはGoogle Play Serviceを導入する必要がある。なかなか面倒。
Google Play Serviceの導入はググると出てくるので割愛。
Google Play Serviceだけインストールしたかったんだけど色々とアップデートされて3時間くらい使った。。。

Titanium用にモジュールを配置

そのあとどうすんだろと、色々調べていたが結局公式のウェブサイトのリンクに解決策があった。
最初にドキュメントを確認しろと。

モジュールの組み込み · fan-ADN/nendSDK-Titanium Wiki · GitHub



結構時間使った割に単純な話でした。


AWSiOSSDKv2 AWSS3TransferManagerで同名のファイルをS3から並列にダウンロードする時には注意!

小ネタだけど、どはまりしたのでメモっておく

ディレクトリ、同名のファイルをダウンロードすると画像が壊れている、全て同じファイルになる、という現象にぶつかる

例えば、こんな感じの構成のファイルがS3にある場合

BucketName/Dir1/image.jpeg
BucketName/Dir2/image.jpeg

これをAWSS3TransferManagerを使って、並列にダウンロードしようとして

(snip)
AWSS3TransferManagerDownloadRequest *downloadRequest = [AWSS3TransferManagerDownloadRequest new];
downloadRequest.bucket = BucketName;
downloadRequest.key = key; // keyはDir1/image.jpeg or Dir2/image.jpegでforで回す
[[transferManager download:downloadRequest] continueWithExecutor:[BFExecutor  mainThreadExecutor] withBlock:^id(BFTask *task) {
  // ごにょごにょ
});
(snip)

とすると、iPhone内のテンポラリディレクトリには、

/tmp/image.jpeg
/tmp/image.jpeg (1)

みたいに、同名のファイル + カッコのナンバリングの形になってしまう。

そこではまった

そんな処理を繰り返していると、
1. /tmpを見て、次の番号を決める
2. 画像を書き込む
3. 書き込み完了
の処理タイミングが被ってしまったファイル同士で書き込み先がコンフリクトしてしまい、ファイル自体が壊れるか、ぱっと見はちゃんとした画像だけど、同名別画像で上書きされてしまう、という状況になってしまった。

ダウンロード先のファイル名は指定してあげた方が無難

そのため、以下のプロパティを追加してあげた。

downloadRequest.downloadingFileURL = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:"被らなそうなユニークな文字列"]];

これで問題なくなる。
大量にダウンロードした時に全部同じ画像になったりしていたらその辺りを疑うともしかしたらこんなことが起きているかもしれません。


[asin:482226999X:detail]