来年のSIGGRAPH ASIAってまた日本だと思ってたけどその前に香港だった。 そういやそうだった気がしなくもない。
今日は29日、つまり肉の日なのでPeerCastStationをリリースしたいんだが全く準備していない。間に合うかな。
ところで肉の日リリースってのはどういう意味だっけ?台風にコロッケみたいなもんだったけかな。
Box2DのRuby移植。
テストを書きたいが本家Box2Dにはテストがついてないので移植できない。仕方ないので他言語の移植版からテストをパクってこよう。
と、探してみたんだが、無かった。他言語の移植版でもテストが無かったのであった。考えてみりゃその通りで、テストを書くのは難しいので本家に無かったら諦めるかと思うのは俺だけじゃない。誰か気合の入った人がテスト書いちゃってたりしないかとも思ったんだが期待しすぎだったようだ。
正確に言うとJBox2Dにはテストがあったんだが……行列辺りの数メソッド分だけ書いて力尽きたようだ。頑張ったな……。
仕方ないのでテストもないまま進めてみたんだが、Rubyらしい書き方に直すこともせずC++のをベタ移植なのでつまらん作業である。 分担してやれば?的なことを言われて、それはとても魅力的なアイディアなんだが、正直この作業を分担されてやりたい人など居るだろうか。 俺は自分で使いたいから続けてやれてるが、そうでもない人が渡されてもやる気は出ないだろう。
もしテストがあれば話は別だ。テストを通るように移植するのをみんなでちょっとずつやろうね!となったらちょっと楽しいと思う。俺なら少しはやる。 だが残念なことにテストが無いのである。
自前でテスト書く手もあるわけだが、それってBox2Dに詳しくないと書けないよな。詳しくないからベタ移植してるのに。無理だわ。
そんなわけで一人でちくちくと移植していくのであった。
コンテント位置が4GB越えてもリレーできるようにした。つもり。
テストは書いたんだが、実際に4GB越えるような配信したわけでもリレーしたわけでもないのでまだちょっと不安なところはある。
修正は、受け取ったコンテントをコンテント位置に従って並べ直してたのをやめた。 つまり常に受け取った順に送信するようにした。 これでコンテント位置が途中で減っても問題無くなったので、32bitのコンテント位置を64bitに拡張してたのをやめてそのまま扱うようにした。 PeerCastではそのようになってたので大丈夫だろう。TCPだからパケット順入れ替わらないんだよね……。
結局のところ、何も考えずに受け取った順に送信する、になっただけ。
ただこれはちょっと手を抜きすぎで気にくわないので、コンテントパケットを受け取った時刻を保持しといて、時刻順でソートするように作業中。 TCPだと意味ないんだが、もしこの先UDPに拡張しようとしたら意味出てくるはず。 もちろんパケットを受け取った時刻順でソートしても意味ないので、パケット内に時刻情報を載せる必要があるけどね。 現状では時刻情報が載ってないので受け取った時刻を保持しとくだけ。
時刻でソートは書けたんだが、テストが大幅に変わってしまうのでその辺を書き直し中。今月のリリースには間に合わないが、現状では動作は変わらないはずなので関係無いでしょう。
コンテントパケットの並べ直しができるとなったら、コンテントパケットのみUDPで送受信するってのがやってみたいなぁ。光回線ならあまり関係ないと思うんだけど、無線通信だとパケロスとかよく起こるだろうから、そこがUDPになるともうちょいスムーズにリレーできるようにならんだろうか。さすがに3Gで動画配信する人はそういないだろうけど、WiMAXだと充分使えるし現に使ってる人もいるからな。LTEとかでもできるかもしれんけど、やっぱり帯域制限が厳しいだろうか。