おはようございます!今4時過ぎです。寒いですw
多相性睡眠を始めたので、blogはこの時間に書くことが多いかもです。
http://www.lifehacker.jp/2011/12/111215polyphasic_sleep.html
この辺も自分で動ける強み。
開発者と受験生とプロボクサーを兼務しているので、ひたすら時間が
なかったんですが、睡眠で3〜4時間位時間が増えるとありがたい。
会社員だと仮眠取ったら怒られるところ多いですからね。
あーニポン人はこれだからw
情報収集が全時間できるのも強みです。
正直、エンジニアの仕事の3〜4割は情報収集だと思ってます。
OSとかplatformにも限界はありますが、本当の限界は「知ってるかどうか」
だと思います。できることを知らなかったら、それはその人にとっては
できないこと、ですから。
で、Corona SDKの話。
個人的に肝だったのは、binary通信です。
会社が特殊なスタイルだったので、binary通信をしないといけなかったんですが、
Coronaではサポートされていません。基本stringなので、そこに落とし穴が。
会社のスタイルっていうのは、サーバーサイドがJavaだったんです。
今時Javaかよ的な話ですが、CMSがJavaだったんですよね。かつて会社に
SE(嫌いな単語です)がいなかった頃に、某大手システム会社に頼んだため、
システム会社といえば、文系エンジニア業界、たいていJavaが専門、
というのがありJavaになったっぽいです。
で、Javaのbinary通信といえばDataOutput, DataInputなわけで、
そこと通信するためにbinary通信の仕組みが必要でした。
結果から言うと、binary通信は無理。Coronaではbyteまでは使えて、
string.char(文字コード)で一応byteデータは作れます。ただ、中の人が
処理するときにnullバイト(文字コード00)の所で終端コードとみなして
処理を止めちゃうんですよね・・・。
DataOutputの例えばwriteIntは4バイト使ってバイトを表現するわけで、
0xff & (v >> 24)が0になる数値(ほとんどですねw)は最初にnullバイト
入るのでそこで終わってしまいます。
悲しいことに、開始コードとかってwriteIntが多いと思うので、
contentLengthが0になって渡らないんです。通信なら自分でHeaderの
ContentLength設定すればいけそうですが、通信をラップしてる部分で
自動的に設定してるようで、手動で設定しても上書きされます(^_^;
ということで、何かで変換して送って、サーバー側で解釈するしかないです。
そんで、サーバー側からも変換して返すことになりますが(受信もnullバイトで
切られるため)、Coronaというかlua純正のモジュールで変換すると
たいていstringに変換しようとしてnullバイトで切れますw
なので、binary通信周りは結構自分で実装しないとダメですね。
DataOutput,DataInputも含め。
最良の選択はサーバーサイドをJavaにしないことですw
0 件のコメント:
コメントを投稿