Hatena::Groupbabel

カーネルハッカーを目指す男の日記

|

2014-10-31

Validating Receipts With the App Store

01:43

現場にて、appleの課金処理にてエラーが出ていた。

調べて見ると、ステータスコード21002なるものが返ってきてる模様。

下記サイトを見ると、「The data in the receipt-data property was malformed or missing.」とある。

要するに正しくreceiptデータが返却されていないようだ。

https://developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html

これが返ってくるパターンは何だろと思って調べてみると、下記のような記事を発見。

http://stackoverflow.com/questions/21541634/apple-receipt-validation-21002-from-ruby-on-rails-with-typhoeus-gem

これを見る限り、JB device やら、IAP cracker やらを使って、悪い事をして課金しようとした時に起こるらしい。

この記事だとRuby on Railsで、僕が使っているのはPHPだけれども、多分原因は同じではないかと。

悪い事している処理をはじいてくれてるってことだから、このまま放置していても問題無いのか?

うーん対応するとしたら、ネイティブ側なんだろうか。。。

難しい。

2014-10-30

FHS

01:02

Linux弄り始めた頃に良く疑問に思っていたのが、

「色々ディレクトリがあるけど、どこに何入れるって誰がどういう理由で決めたんだ?っていうか決まりってあるのか?」

と良く思っておりました。

そんな疑問を解消してくれるのがこれ、Filesystem Hierarchy Standard

http://www.pathname.com/fhs/

若干古い資料だし、ディストリビューション毎の違いはあるかもだけど、標準を知っておけば何かと応用が効くし、

どこに何入れるって判断もしやすくなるはず。

5章まで読んだので後もうちょい。

2014-10-28

C++リファレンスサイトを見付けておおってなった話

01:12

C++の標準クラスやマクロの意味を調べていたら、下記のような便利サイト発見。

http://en.cppreference.com/w/

こりゃ便利。

std::placeholdersがよく解らんかったので調べてみる。

http://en.cppreference.com/w/cpp/utility/functional/placeholders

要するに、std::bindと組み合わせて使うときに、紐付けられた関数とその引数に、placeholderで指定した順番に、

後で渡したパラメーターを当てはめてくれるようだ。

std::bind(関数ポインタ, 関数を持つインスタンスへのポインタ, std::placeholders::_1 ←関数の一番目の引数に、指定したパラメーターがセットされる, ...);

これなら外から関数ポインタと座標指定して、うまいことコールバックを汎用的にできそうである。

つか

typedef std::function<void(const std::string&)> ExampleFunction;

みたいに、関数への参照を定義できるのね。

これだと、戻り値がvoid型の、引数が変更不可の文字列型の、関数への参照を保持する型の変数を定義って感じですかね。

うむうむ、先が見えてきた。

2014-10-27

コールバックをどうするか悩む

00:37

cocos2d-xにて、HttpRequestを使用して画像ファイルを取得する処理を作成。

HttpRequest* request = new HttpRequest();
request->setUrl(url);
request->setRequestType(HttpRequest::Type::GET);
request->setResponseCallback(ここで悩む);
HttpClient::getInstance()->send(request);
request->release();

CC_CALLBACK_2を使う、もしくはラムダ関数でコールバックの処理を記述する方法の2種類が今のところ使えるのだが、

ある程度汎用的にしたいので、外から関数ポインタ、呼び出したインスタンス自身、座標を渡して画像を描画させたい。

cocos2d-xに用意されているCC_CALLBACK_2マクロが折角あるので、こいつを使って上手い事処理を記述したいのだが、

そもそもこのマクロなんじゃいってことで定義部分を見て見る。

#define CC_CALLBACK_2(__selector__,__target__, ...) std::bind(&__selector__,__target__, std::placeholders::_1, std::placeholders::_2, ##__VA_ARGS__)

なんかますますわからなくなった。

とりあえず以下を読んで、stg::bindを理解することにする。

http://kaworu.jpn.org/cpp/std::bind

後、今日教えてもらったWIPで、日々の進捗をもうちょい記録するようにする。

http://qiita.com/a-suenami/items/129e09f8550f31e4c2da

2014-10-13

雑記

01:38

よくよく見たら日記の設定がprivateになっていた事に気付き、パブリックに設定。

その後、作成しているcocos2d-xのメインファイルの名前がHelloWorld~になっているのを直そうと色々弄る。

ビルドの設定直せばいいだろと思い、CMakeの設定ファイルに記載されているクラス名を変えてビルドしてみるが、上手くいかず。

調べてみると、xcodeのプロジェクトファイル等にもクラス名が記載されていることに気付き、

こりゃコンソールから自力で編集するのは面倒だと思い、断念。

とりあえず、mimic28号氏に教えて頂いた下記の記事を参考に、HTTPリクエストで画像取得のコードを埋め込む。

http://blog.wnotes.net/blog/article/cocos2d-x-external-image-to-sprite

これで香川照之の画像をゲーム画面いっぱいにだして遊んだw

もう少し部品化したらcommitしよう。

TeahousePhantomTeahousePhantom2014/10/15 19:25id:hiro_sa さん pull request を送って下さい。
mimic28号でした。

|