くまりゅう日記

もっと過去の日記

[Riko | Blender | COLLADA | monotone | BeOS | OpenGL | Ruby | XNA | TRPG | NPR | Silverlight | mono | PeerCastStation | | ゲーム | fossil | ゲーム作り | .NET]


2016-09-06

日記

先週書いてないな。なんでだろ。

イヤホンは標準のイヤーチップが硬いのがしっくりこないのではないかと思い、今まで使ってたソニーのイヤーチップを挿してみたらいい感じになった。硬さってのもあるのか。 しかし当然ながら軸のサイズがぴったりなわけもないんで外れやすいのが難点だ。とはいえ使ってて外れるほどでもないし、ワイヤレスなこともあってあんまポケットにつっこんだりするものでもないので特に問題はなさそうか?ソニーのやつなら最悪無くしてもすぐ買えるしな。 しばらく使ってて酔ったり疲れたりもないし(音量上げすぎるとちょっと疲れるかも)、なによりワイヤレス便利でいいな。買ってよかった。

今週末はRubyKaigiで京都だ。持ってくもの準備しないと……って着替えくらいだが。3泊だけだし。

[Ruby] 掲示板作り

8月終わりから9月頭にかけてしたらばがネットワーク障害とやらで調子悪くて困った1。最近は掲示板サービスなんぞ儲からないものをどこもやってなくて、したらばが死ぬと掲示板使いまくってるぴあきゃすでは大変困ったことになるのであった。

既存の掲示板CGIみたいなの使って建ててる人もいるが、今更そんな古くさいシステムを使い続ける必要もなかろう、 丁度いいのでボクのかんがえたさいきょうのけいじばんを作ろうかなぁと。掲示板程度でさいつよも何もあったものではないが。

欲しい機能はこれ!

  • リアルタイムの同期、てかチャット
  • 読み上げ内蔵
  • 既存の2chブラウザ(および字幕とか読み上げツール)への対応

これだけですね。シンプルですね。まあそんなに機能いらんのだわよ。これなら作る気にもなる。

ああ、あと基本的にはWebブラウザで動作するものとする。俺がしたらばもWebブラウザで使ってるので。

ピアキャスだと実況的なことやってるので普通の掲示板だとレスポンスが遅いんだよな。 頻繁にポーリングするのもサーバ的によろしくないし……ということでWebSocketなんかでリアルタイム同期したい。 てかそれならチャットでいいじゃんという話でもあるんだが、基本(ログインとか無しで)匿名で使えてログも気軽に見れてってのあんま無くてさ。

読み上げは無くてもいいんだがあったら便利そうだし、最近のWebブラウザだとWeb Speech APIとかいう機能あるし簡単にできるでしょう。

既存のツールとの互換性は一番大事なところ。これがあるからみんなしたらばから離れられないので、互換性あれば試しに使ってみるのもできるでしょう。ていうか配信側は好きに掲示板選べばいいけど、視聴側は選べないのでできれば既存のツールが使えるところでやってほしいはず。

で、作り始めた。

サーバは普通にRuby。WebSocketはいつも通りfaye/websocketを使おうと思ったが、fayeそのものを使えばいいのに最近気付いたのでfayeで。faye/websocketはfayeてなんだろうって思いながら使ってた。たぶんWebSocketが上手くいかない環境でも動く、はず……。

クライアント側も普通にKnockout.jsとOpal……と言いたいところだが、来週末のイベントに間に合わせたいこともあるし、fayeとも組み合わせないといけないのでOpalは逆にめんどくさくなるだろう。Knockout.jsと素のJavaScriptが一番楽だろう。jQueryくらいは使うけど。

ちょろちょろっと書いてみたら結構すぐ出来た。まあ単なるチャットシステムみたいなもんだ。こんなの今時やる人がやれば一瞬で出来るだろう。

2chブラウザ対応もやろうかね。みんな何使ってんだか知らんけどJaneてやつを良く聞くからこれ対応すればいいのかな。調べたらいくつか出てきて悩んだがJane Styleてやつがみんな使ってるやつっぽいな。 板の追加方法はヘルプ見たら出てきたし簡単で良い。

2chとの通信方法はmonazillaあたりを参考に作ったら簡単にできた。気になるのはこれShiftJISなんだけど、UTF-8の板扱いにはどうしたらいいんでしょうかね。まあ今のところはShiftJISでいいか。

書き込みも簡単だったが、POSTに対して返す値をちゃんとしないとJane Styleが落ちてくようだ。 書き込んだらブラウザ側にも反映させられるようにfayeのチャンネルにメッセージを送ってるんだが、メッセージ処理される前にJaneが再読み込みをかけてくるとJaneが落ちるぽい?ちゃんと試さんとわからんが、落ちるのはよろしくないしなんとかしないとなぁ。

他のツールも試したがよくわからん。nicocastはなんかOCXのインスコが必要というのでその場は諦めた。入れとかないと。mekacastは行けそうだったけどなんだか上手くいかない。したらばと今は亡きわいわいかきこに対応というのでしたらば風でいけるか?と思ったが認識してくれない。bbs.で始まるアドレスじゃないとだめだったという情報を貰ったが、それだとローカルで試すのめんどくさいですね……。 SpeechCastはバイナリがなんか古い。オープンソースなのでリポジトリを見ると2013年にしたらばの新しいアドレスに対応してるぽいんだけど新しいバイナリ無いんですかね?まあソースがあれば調べるのは楽でしょう。

他にみんなどんなツール使ってるんだ?と思ったらPeerstPlayerにも対応してほしいと言われた。なるほどなるほど。PeerstPlayerもソースあった気がするからなんとかなるだろうたぶん。 アドレスで判別されてるとどうしようもないんだがな。

こういうの作ってていつも思うんだけど、ツール類はなるべくソース公開してほしいなぁ。オープンソースでなくともソースが見えるようにだけでもしてもらえると互換性とるのだいぶ楽になるんで。公開しない理由がないやつは公開しようぜー。

次はストレージをなんとかしないとな。適当なDBに入れるだけだが。とりあえずSQLiteでいいかな。

  1. 各所に向けてDDoS攻撃が行われていたようだがさて。


2016-08-22

日記

体調がやっと回復してきた。

盆休み中は帰省してほぼごろごろしてるだけだったのだが、まあだいぶ良くはなったもののまだなんかいまいち。 休み明けてもなんだかいまいちだなぁと思いつつ会社行ってたんだが、ある日の午後から急にスイッチ入った感じで良くなった。よかったよかった。

欲しかったワイヤレスイヤホン1は休み明けてからまた見たら普通に買えるようになってたんだが、最近いろいろ金使っちゃってるのでどうかなーと思いつつも、いつまでも気になるくらいだったら買った方がいいかと買ってしまった。ヨドバシで売ってたのでポイント使って8000円。延々悩む程高いわけでもないし。

まだちょっとしか使ってないが、酔いはほぼ無いようで安心2。しかし耳に当たる部分がでかくて、うまく着けないと歩いてて外れてしまいがち。強く押しつけるとぴったりくっついて吸盤みたいに耳に吸い付くんだが、それでも外れる時は外れるんだよなぁ。で、耳にぐりぐり押し付けてると耳が痛くなるし、すぐ外れるとうざい。イヤーピースをでかいやつに付けかえてみたら良いかと思ったが左耳が痛くなってちょっとサイズがでかすぎるみたいだ。なんとかコツがつかめれば良さそうだが……。

着けづらいのだけが問題だが他は今のところよさげだ。 音がちょっとでかめだが、ソフトで音量を絞ったら良くなったのでいいか。 マルチポイント接続について取説にちょびっとだけ書いてあったので半信半疑で試してみたが、本当に2台からマルチポイント接続できたので便利。タブレットとスマホから切り替え操作無しで音出せるのいいね。取説だけじゃなくて仕様表とかでアピールしてもいいのに。

  1. SOUL IMPACT Wireless High Efficiency Earphones with Bluetoothてやつ。なぜかこんな長い名前で通販サイトに載ってるんだが……

  2. ちょっとした疲れはあるんだが、酔いまでは行かない模様。許容範囲だ。

IPv6来た続き

ISPからIPv6のアドレスが貰えるようになったがIPv6 PPPoE対応のルータがない。というわけで早速買ったのだった。

IPv6のパケットフィルタリングもしたいと思うとNECのAterm WG1800HP2てのしか無いのでそれを買った。1万円くらい。 届いたので設定をしてみるが、IPv6 PPPoEの設定は特に難しいこともなく、プロバイダから貰ったIDとパスワードを指定するだけだった。 あんまりあっさりだったので不安だったが、確認したらちゃんとグローバルなIPv6アドレスをもらえてた。やったー。

とりあえずhttp://www.kame.net/で亀が踊るか見てみるが踊らない。んんー? DNSからAAAAレコードが引けてないのでIPv4でつなぎに行ってるぽい。なんでだー。

試行錯誤してみたところ、IPv6のDNSサーバアドレスが設定されてないのがわかった。 ISPのIPv4のDNSサーバはAAAAレコードを返してきてくれないようだ。まあトラブルの元にしかならんし妥当か。 手動でISPのIPv6のDNSサーバを設定したら亀も踊ってくれた。よかった。 ルータ自体はISPからDNSサーバのアドレスを自動で貰えてるし、DHCPv6でルータ自身のアドレスをDNSサーバだよーと配布してるみたいなんだけど、Windows 10側がそれを受け取ってくれてないっぽい?理由は不明。 OSXだとIPv6のDNSサーバも自動設定されてくれるんだが、どうもIPv4が優先になってるようで引けてない模様。優先度変える方法はまだ調べていない。

IPv6のフィルタリングも設定しないとフルオープンは怖いよな、と試そうとしてみるが、詳しい設定方法がどこにも書いてなくて困る。Atermのドキュメントはいろんなところに説明が分散しているうえに機能が網羅されておらず、全く説明が無い項目がけっこうあるようだ。ひでーなー。

まあIPv4とほぼ同じだろうと設定を見てみるが、どうもステートレスなフィルタしか設定できないぽい。うわこれめっちゃめんどくさいじゃないですか。こっちから接続に行った場合の返事だけ受信するとかどうやって設定すればいいんだよ。 ただなんだかステートフルなフィルタリングは設定等無く勝手に行われてる気がしなくもない。 試しにIPv6の受信パケット全部落とす設定をしてみるが、亀は相変わらず踊るのだった。 逆にIPv6の送信パケットを全部落とすと亀のサイトにつながりゃしねぇのでフィルタ自体は動いてるぽいね。 やっぱりステートフルなフィルタリングが普通のパケットフィルタより先に行われてるんじゃないですかねぇ。 てことはべつに何も設定しなくてもWAN側からのIPv6接続開始は全部弾かれてる可能性もあるな。 ただ今のところはよくわからないので、念のためIPv6の受信を全部落とすようにしとこ。 近いうちに外のサーバから接続していろいろ試すとしよう。

さてPeerCastのIPv6対応もそろそろ考えないとな……。


2016-08-09

日記

体調の悪さが絶好調だった。

金曜日あたりにあまりにもしんどいけど、しんどい以外は耳鳴りするくらいしか症状が無くて、でも耳鳴りは怖いから耳鼻科行った。聴力は問題ないからよくわからんけど喉鼻荒れてて鼻水溜まってるからまずそれ治してから来いって言われた。仕事行った。夜ゴジラ見てきた。

土日はほぼ寝てたが、イヤホン欲しいなぁと思って日曜夕方に頑張って出掛ける。やっぱSOUL IMPACTくらいしか選択肢無いわと試聴して確認したので買おうと思ったが物が置いてない。店員に聞こうとしたがみんな客対応中でつかまらないので疲れたし諦めて帰ったんだが、あとで通販見たら入荷未定ってなってたし店舗在庫も無しだった。聞いても無かったってことか。無線はつくづく縁が無いようなので諦めよう……。無いと困る程ではないんだ。

体調はだいぶ良くはなったもののまだ鼻水が止まらなくて変な耳鳴りがする。まあそれらもだいぶ弱まったが。

会社帰りにぼちぼちアイカツスターズ!をやってたんだが(と言っても週一で300~400円くらいしかできてないが)、7月下旬頃にいつも行ってたゲーセンから消えてしまった。ショッピングセンター内のゲーセンなんだが、どうも夏休みに入ったからより台数があったおもちゃコーナーにまとめて移設されてしまったらしい。おもちゃコーナーは夜でも子供けっこう居るのでそんなところでおっさんがアイカツできるわけねーだろ……。早く夏休み終われ……。

IPv6来た

使ってるプロバイダからIPv6使えるようになったよとおしらせが来てた。無料なので申し込んだらすぐにこのIDで使えるからなとメールが来てた。はやい。

さて、使えるようになったのはIPv6 PPPoEというやつらしい。IPoEがフレッツ接続網から貰えるIPv6のアドレスでそのまま外に出れるやつで、PPPoEはフレッツ網のIPv6は見なかったことにしてプロバイダと別にIPv6のネットワーク張るやつのようだ。IPv6 PPPoEは対応のルータが必要みたい。まあIPoEでも欲しいけど。

うちで使ってる調子の微妙なAirMac ExtremeはIPv6 PPPoEに対応してないので、調子悪いのもあって丁度良いので対応ルータに買い替えましょう。 ひかり電話ルータはIPv6 PPPoEに対応してるって書いてあるんだが、なぜかプロバイダはそれじゃだめって言ってるし、どっちにしろひかり電話は契約してないので使えない。

IPv6ではIPv4のようにはNAT使わなくなるんだが、PC側のファイアウォールをいちいち個別に設定するのは大変面倒だ。IPv6 PPPoE対応のルータで、IPv6のパケットフィルタをできるやつが欲しい。 と、調べたところ、IPv6 PPPoEとIPv6のパケットフィルタに対応してご家庭でも買える値段(せいぜい2万円台くらい)のやつはAtermのWG1800HP2てやつ一種類しか存在しなさそう。じゃあ選択肢無いし、1万円ちょいくらいで高くはないし、これ買うしかないわな。

IPv6のPPPoE対応だけならNETGEARのとかtp-link1のやつはあったんだけど、なぜかフィルタリングができなさそうなのよね。あとマルチプレフィクス対応もあやしい。まあフレッツのサービス使わんからそれはいらん気もするが。

とりあえずAtermのWG1800HP2を近いうちに買って試してみよう。もっと上位のやつが対応してないのが不思議だ。

しかしIPv6はずっと前から気にしてたけど使えるようになるまで長かったなー。 まあ回線なりISPなり選べばもっと早く使えるようにはなったんだけど。

  1. あまり聞いたことないが、中国のネットワーク機器メーカらしい


2016-08-03

日記

なんか頭痛い気がする。

平日は仕事以外ほぼ何もできない。

土曜日は本読んでゲームやってただけだった。 Vita版のチェルシーさんは七の魔人をブッ殺さねばならない。をクリアした。 どうしてもわからんので攻略見ちゃったところあるけど。豊穣の宝珠が無くてね……。 どうでもいいが、Vita版はメモリを食いまくってるらしく、このゲームを起動してるとバックグラウンドでヘルプすら表示できない。そんなにメモリ食うとも思えないしそこはちょっと頑張ってほしいなぁ。

日曜は選挙行って、家でだらだらしたあと秋葉原にイヤホン見に行った。 Bluetoothイヤホンを試聴してみたんだが、どうも高いやつなら気分悪くならないかというとそうでもないようだ。 2万円のやつでもすぐだめだったり、1万円程度のでもだいぶ良かったりする。まさに試聴しないとわからん。

値段的にも良さそうだったのがSOL ShadowとPlantronics Backbeat Go 3とSOUL IMPACTの三つ。いずれも1万円前後。他に良さげのもあったけど1.8万円でちょっと厳しい。

SOL Shadowはネックバンド形式で使いやすそうなんだが音がちょっとひどい。低音が強いというか低音しか無い。あと音量が最低でもでかくてどうしようもない。

Plantronics Backbeat Go 3は耳につける部分がでかいタイプだが、スタビライザーとかいうのが付いてるので外れはしなさそう。着けるのもちょっとめんどいが。ただ音が厳しい。こいつは低音が出なくてシャカシャカ言ってる。音量調節の幅はあるから大丈夫そうなんだけど……。あと電池が6.5時間はもうちょい欲しいところ。

SOUL IMPACTも耳につける部分がでかい。だいぶでかいしスタビライザーもないので候補から外してたんだが、いざ使ってみると音が良い。低音が十分出てるし強すぎもしなくてバランスいい感じ。いつも使ってる有線のイヤホンに近い。電池も8時間もつので長い方だし、ちょっと安めで8500円程度だ。だがやっぱり外れそうなのが気になる……。

で、まあいろいろ試聴してたら2時間くらいたってて、疲れたしどれがいいかよくわからなくなったので買わずに帰ってきてしまった。あとで考えたけどSOUL IMPACTが良いかな。ていうか気分悪くならない+音が悪くない+値段が許容範囲を満たすとなるとそれしか無かったわ。また週末行ってみて気分悪くなったりしないのを確認したら買っちゃおうかなぁ。


2016-07-26

日記

また日記書いてないぞ。

平日暇な時間があんま無いんだよな。暇あったら作業したいし……。

といいつつ土日はゲームやって本読んで寝てるだけなのであった。

Bluetoothイヤホンで酔う

最近Bluetoothイヤホンが安いのけっこうあるのを知ったので、安いの買ってみたんですよ。

3000円くらいの怪しい海外メーカーのを買ってみて、まあ安いなりだけどワイヤレスイヤホンはやっぱり便利だなと思って使ってたんだが……。 どうも気分が悪くなって、体調悪いのかな?と思ったがなんだか乗り物酔いのような症状だ。 イヤホンつけてるとなんだか圧迫感があって変な気はしてたんだがこれかなーと思ってイヤホンつけたり外したりしてみるとやっぱりこいつのせいみたい。なんだと……。

可聴域外に結構な大きさのノイズが出てるらしくてそれにやられたらしい。 ノイズキャンセリングイヤホンの圧迫感みたいなのがある。ノイズキャンセルなんか全くしてくれないのに。 やたらと音量でかくて調整が難しいと思ってたが、ノイズまででかいとは。

これは使ってたらあぶないなと思ったがBluetoothイヤホン自体は便利なのでもっとちゃんとしたやつ買いたい。 電池がもって耳につっこむあたりは小さいやつが欲しいので探すと必然的にネックバンド形式になるがまあそれはいい。 電池のもちが良いやつは数自体が少なくて、5000円くらいの次は1万円ちょいくらいになっちゃうみたい。1万円はちょっと厳しいかなぁ。

で、5000円くらいのエレコムのやつが在庫処分で4000円ちょいになってて、エレコムかーとかもっとちゃんとしたやつ買った方がと思いつつ、買ってしまった。

新しいやつは使い勝手がいまいち残念だし音は安っぽいといういかにもエレコムな感じだったが、ノイズの圧迫感がひどいこともなく普通に使えそう。と思ったのだがやっぱり使ってたら酔ってしまった。 最初に買ったやつに比べれば断然ノイズは少なくて楽なものの、それでもいくらかはあってしばらく使ってるとやっぱりだめっぽい。なんてこった。

新しい方はすごく酔うってわけでもないので、酔いなら慣れればなんとかなるはずなんだが、慣れるまでしんどいし、身体にはよくなさそうだよなぁ。 もっと高いやつなら大丈夫っていう確証も全くないので、高いやつ買うわけにもいかず、しかしながらワイヤレスが思った以上に便利だったので諦めきれない。 ノイズキャンセリングなんかは試聴した瞬間にこりゃ無理だと判断したが、無くても困らないから諦められたんだよな。

Bluetoothのイヤホンも試聴できる店があるぽいから週末まで使って慣れないようだったら見に行くか。1万円くらいので全く問題ないものだったら買っちゃうかもしれない。ほんと安物買いのなんとやら。


2016-07-12

日記

日記書くの時間かかるからそれより作業優先してしまって書けてない。あと土日はなにもしたくない。

先々週は風邪引いて喉鼻がやられて一日休んだんだが、仕事は忙しかったので次の日からはだいぶ多めに働くはめに。 土日は死んでた。

先週も流れでだいぶ多めに働いた。土日は死んでた。今週も頑張って働きたい。

[PeerCastStation] MPEG2-TSの読み込み

MPEG2-TSの読み込みを真面目に始めた。

本当は読み込みでなく、FLV→MPEG2-TSの詰め直しをしたいんだが、まず読み込んで中身把握しないと書き出すのは難しいので、読み込みをやってしまおう。

仕様書は無料で置いてあるんだがPSとTSがけっこうごっちゃになって書いてあるんでなかなかめんどくさい。とはいえ読む必要があるところは少なそうなので簡単。あと英語版のWikipediaが何気に詳しいので助かる。

ffmpegで書き出したm2tsファイルを読み込んでるんだが、Syncバイトの前に謎の4バイトが入ってたり、PATの前に謎のPID17のパケットがあって謎すぎる。仕様書にはなんとも書いてないので調べてったら、謎の4バイトはタイムスタンプで、DVDとかBluRayで使われるフォーマットらしい。ていうかm2tsはそれ用の拡張子らしい。まじかよ。PID17もそれっぽいやつでDVBのSDTとかいうテーブル?メタデータが入ってるようだ。確かにffmpegとかいう文字列が入ってるだけに見える。

まああんまり気にしなくてよさそうだからPATとPMTだけ解析できればいいのかね。pointer_fieldとかいうのに気付かずに迷ったが、それが分かってからはすんなり解析できた。 基本的にはPATとPMTが来たらあとビデオとオーディオのパケットがだらだら流れてくるだけだ。そりゃそうか。

しかし気になるのが、これPATとPMTの場所でぶった切ればどこからでも再生できるものなんだろうか? MPEG2-TSの用途としてはできるのが自然だろうけど、パケットの中身見てる感じだと最初のビデオのパケットにメタデータみたいなの入ってて、それ以降同じのは出現してるように見えない。やっぱある程度のパケットをヘッダとして保持しないとだめかなぁ。

あとビデオパケットの中身がよくわからんのでどこでぶった切っていいかよくわからん。たぶんNALユニットとかいう単位になってるんだよな(H.264だと)。それの中身に何入ってるかも調べないとなぁ。 ビデオパケットはまあNALユニットでいいんだろうけど、オーディオの構造はよくわからんし困ったもんだ。できれば中身あんまり知らんでもぶった切ったりくっつけたりできる構造になってると助かるが……。

なんにせよいろいろ調べる必要があるな。

そういやMPEG2-TS見てたらVC-1が入るようになってるので、WMVからの詰め直しもできるかなーと思ったけど、WMAは入らないので無理ぽそうだった。まあできたとしても再生してくれるプレイヤーがどんだけあんだ(特にWindows以外で)と考えるとWMVの再エンコは避けられないだろうな。


2016-06-24

日記

日記書いてる暇もないし、だからって何かしてるわけでもない。 強いて言うなら働いてる。

先週土曜日はめっちゃ疲れたので寝てた。 夜買い物行ってついでにアイカツやってきたりとか。

日曜は頭痛くなってうんうん唸ってたが、夕方にまたライブ行かなきゃいけないから飯食って水分摂ったったらいきなり楽になったので、あーこりゃ熱中症気味だやばいわと思って出掛けた。電車とかライブ会場とか涼しいしね。実際ライブ始まる頃には頭痛は収まってた。

ライブは石川智晶のライブ。初めて行ったけど、CDで聞いてる雰囲気そのままですげえなっていう。ライブでもあんなん歌えんのか。

このところライブ続きだったけど、しばらくはもう予定がない感じ。

月曜はまだ疲れてたので休みにして、イベントサイト作ってた。 bundlerとgemに散々苦しめられる。 pgがWindows用のバイナリgemを配布しているがRuby 2.3用のバイナリは入っておらず、bundlerはプラットフォーム指定ができないのでWindowsだと確実にWindows用のバイナリを入れてしまって自前でビルドさせてくれない。 本当にこいつら、もう!

Windows用のバイナリgemはRubyの各バージョンに速やかに追従しろ!それが無理だと思うなら(ていうかだいたい無理なんだから)バイナリgem上げんじゃねーよ!!

結局postgre-prていうPureRuby版のPostgreSQLアダプタを使うことに。これも素のバージョンとSequel作者がいじったバージョンがあってどっちがいいのか判断つかずに迷う。Sequel使ってるからやっぱSequel作者がいじったやつの方がいいかな?あとエンコーディング対応してなかったのでモンキーパッチで回避した。


2016-06-13

日記

書いてる間に一週間過ぎてるっていう。

先々週の土曜にまたライブ行ってた。泥陀羅とMISHAORUの。これは楽。 泥陀羅のライブは初めて見たが、なるほどこんな感じなんだなーと。MISHAORUは相変わらず出来が良くて素敵だった。 日曜はごろごろしてたら終わった。

先週はごろごろしてたら終わった。まあたまにはな。ていうか外出ようとしても暑くてさー。

[PeerCastStation] MKVとか

MKV配信が従来のPeerCastでリレーできないという話があったのをIssue見てて思い出した。調べるか。

おそらくパケットサイズが細かすぎて64個しかパケット保持しないPeerCastではすぐ溢れるんだろう1。 とりあえず適当にMKV配信して確認してみると、秒間120パケットとかなってる。これだとよくて0.5秒分しかないから厳しそう。

ちょっと前にコンテンツの受け取り方をチャンネルに直接追加してくんじゃなくて、チャンネルに追加してくれるSinkオブジェクトにつっこんでく形にしたので、ここにバッファリングしてパケットをまとめるSinkフィルタみたいなのを追加してやればよかろう。

FLVで似たようなことはやってたのでそれをちょっと参考にしつつ、新しくコンテンツ追加すると15kB越えちゃうか、最後の追加から100ms以上経過してた場合はバッファ内を1パケットとしてチャンネルに追加してバッファをクリア、新しいコンテンツはバッファに溜めておく、とした2。これだと100ms程度の遅れが出る可能性があるんだけど仕方ないかな……。 あと次のコンテンツが100ms以上かかってからくるような場合にはその分遅れてしまってよくないんだが、これを解決するのは難しい(し、その状況はほとんどない)。

入れて計ってみたところ秒間20パケット前後になった。まあまあ。こんなもんか、ビットレートも2.5Mbpsだし。

WMVに問題出てると嫌だなと確認してみたが、WMVはそもそもパケットまとめこみの対象にならない?調べてみると、ASFの時点で8kB単位にまとまってるようだ。なので2パケット目が来たところで合計15kBを越えるから、まとめらんないなと判断してFlushしてしまい1パケットずつになる。なるほどなぁ。

しかしPeerCastでバッファ時間が1秒切るのって16kB/パケットが最大と仮定して8Mbpsと計算してたけど、ASF(WMV)の場合は8kB/パケットだから64パケット保持では4Mbpsで1秒かー。

  1. PeerCastStationだと個数じゃなくて受け取ってから5秒間保持してる。しかしちょっと長い気もするな。3秒でも良さそうな。

  2. FLVの場合は閾値を7kBにしてたけどちょっと余裕見すぎだなこりゃ。FLVの方もでかくした方がいいかも。


2016-06-02

[Ruby] TokyoRubyKaigi 11に行った

TokyoRubyKaigi 11に行ってきた。

何で気付いたか覚えてないが(gihyo.jpの最近のイベント欄あたりかなぁ)、たまたまサイトを見たら面白そうなセッションばかりが並んでいたので興味がわいた。しかし28日は既に妖精帝國のライブが予定に入ってたので無理じゃねーか! て話をしたらはしごしようと言われ、まあライブは夜からだし行けるかと思って両方行くことにした。

朝は9時50分に着けばいいんだろうと思ってゆっくりしてたら出るの遅くなって10時着。しかし9時50分からなのは開会の挨拶だったのでまあいいか、と思って中入ったら10時から開会の挨拶が始まった。間に合った……?

Streemの話。Streemの話だった。 パイプの定義?が終わってから実行されるて話なので宣言的プログラミングなのか? なんかErlangとかもそんな感じと聞いたことがあるのでそういうものなのかもしれない。 知らんけど。 ゲームにもいいかもしんないというのはまあまああるかもしれない。 でも最近のゲームだとNPCも環境を受け取って脊髄反射するだけじゃなくて記憶持ったりとかあちこち参照するからどうなんだろなー。 多次元の参照が云々という質問は描画というか画像処理をStreemでやるような想定だったんだろうけど、どっちかというとキャラクタの制御についてゲームって話なので描画は対象外だろう。

mruby/cの話。mrubyでもまだちょっとでかいので、もうちょい小さいデバイス用のmrubyを作ったてやつ。 とはいえまだ400kBくらいはメモリ使うようなので、Arduinoのような極小デバイスでは無理ぽい。 まあ動いたとしても速度的に問題あるよね……。 一つのVMで複数のプログラムを同時実行できるように拡張されてるようだ。 mrubyの1命令実行毎にコンテキストスイッチするようなマルチプロセス機能。いいですね。 割り込みに対応してこのプログラムが動くとかいうのはできるんですかっていうそりゃ当然できるだろ的な質問をしてしまったが、複数のプログラムが起動直後に割り込み待ちに入って寝るという使い方を想定してるとのことだった。なるほど。 しかしだいぶ機能もまだ少ないようだし、動作環境的にあんまり派手なプログラム動かすもんじゃなさそうなんだけど、それでもRubyで何を作ろうってのかがいまいち想像つかんな……。

Rubyの型の話。型の話だっt……じゃねーよ! クラスのチェックをするのがあれば便利かという話で進んでたが、最終的にはそうでもなくてパターンマッチぽい。 想定外の型を入れた時にエラー投げてくれるTypeStruct1というのを作ったよという話。 Structのようにメンバ定義する時に、型を指定しておくと値が入る時にそれをチェックしてくれるとのこと。 しかし指定する型は型じゃなくてもよくて===でマッチすればなんでもいいので正規表現でもいいみたい。パターンマッチだ。

最初はシンプルだったが、JSON読み込んでぶちこんだ時に検証したいということで、配列を指定できたり、○○の配列を指定したり、複数の型のいずれかを指定できたりするように拡張していったとのこと。 面白いのがTypeStruct自体の拡張はされてなくて===に反応するラッパオブジェクトみたいなのをどんどん追加してったてのがいい。アクティブパターンぽい。 まあそれで最終的にJSONが検証できるようになって型があるとうれしいこともあるねとかでまとめてたんだけど……つっこみどころは多いなぁ。

JSONの検証をしたいなら、そういうDSLとライブラリなり使えばできるんでそれで済むじゃん。JSON用のスキーマフォーマットっていくらもあるし検証器もいくらもあるよね。検証だけじゃなくてRubyでパースしてアクセスしたいってなら、スキーマからアクセス用のRubyプログラム生成すればいいよね。おわり。 型があるといいよねとは言ってたが、どちらかというとデータの検証がしたいというところだったので、プログラムの一般的にあるといいかって話ではなかったわな。スキーマと検証器はあると便利だと思います。スキーマをRubyで書く必要は無いと思われます。

型の話ってよりはパターンマッチとして見た方が面白かった。 なんでも===でマッチさせるから===に反応するオブジェクトを作っていこうってのがいいね。 まあだたのcase~whenだと言われりゃそうなんだけど、なんか難しいパターンマッチを導入するよりは、やっぱりcase~whenをもうちょい上手くすればいいんじゃないかなぁと思わせてくれる感じだった。

お昼。土曜日12時過ぎの秋葉原駅前で一人で飯食えるところなんてあるんだろうかと思ったが、とりあえず近くのアキバ・イチを覗いてみたところ、どこも空いてて一人で入るのも余裕であった。こんな空いてて大丈夫なんだろうか。平日の方が逆に混んでるやつかもな。適当な店で1000円のランチを頼んだら思ったよりおいしくて良かった。

午後。Webサーバの話。HTTP/2対応のWebサーバでH2Oてのがあるらしいんだけど、それで速くするのにどんなことやってるかなど。 RTTばっかりはなんとも短くならんので、パケット自体を少なくしたいとか。送信キャンセルする時も確実に最小パケット数でキャンセルできるように、書いたらすぐに送られるサイズをできる限りOSから取得(+予測)して常にその分ずつしか書かないとかすごいわくわくするチューニングが語られた。TLS部分も自前で書いてるようだ。そりゃそうなるだろうけどすごいなぁ。

アプリからCRubyを呼び出す話。初期化がいろいろ大変だとか、forkすると大変だとかシグナルの処理が大変だとか。まあだいたい知ってたので特に新しいところはなかった。 話には出てなかったけど初期化とかバージョンによっていつの間にかしれっと変わったりするのが大変だよね。 あとこれも話に出てなかったけど、CRuby自体をビルドしてリンクするってのが大変だよね……ってWindowsじゃないからいいのか。 拡張ライブラリもいいけどmkmfがしょっちゅうしれっと変わってるのが大変なんだよな。

パターンマッチングの話。本当にパターンマッチングの話。パターンマッチングの文法の叩き台になるライブラリを作ったってことだった。しかしアンダーバー頻出で見辛いしよくわからなかった。なんか正規表現的なのがどうこうとかバックトラックがどうこうとか言ってたような。パターンマッチングにそこまでいるかなぁ……。 正規表現がどうこう言うならPEG書けるような内部DSL欲しいよ。パターンマッチングと別に。 ちょっと複雑すぎるのでよくわからん。とりあえず===でマッチさせますくらいがわかりやすいんだが……。

Rubyで画像認識した話。MtGのカードを売ろうと思ったが、持ってる8000枚のカードのDB作って価値を調べるのはきつすぎるのでそれをやるプログラムを書いたとのこと。まずマスターのDBは公式サイトから30分で1.6GB分もぶっこ抜いてきた(ひでえ)が、実は既にそれをJSONで提供してくれてるサイトがあったのでそれ使えば良かったとのこと。先にググれと。 画像認識はOpenCVだけどそれなりにステップは必要なようだ。とはいえ自前で書こうとしたら諦めるレベルだし、ずいぶん簡単だよな……。 取り込んだ画像の判別はphashっていう画像のハッシュ値があるらしくそれを計算してくれるライブラリを使い、あとはハッシュ間のハミング距離が近いものを表示してユーザが選んで学習させていくと。ほえー、簡単そう。 で簡単なライトボックスの前にWebカメラ設置して、そこにカードを置くと勝手に認識してカード候補を出してくれると。\しかしWebカメラの自動ピント調整が数秒かかるのが遅いみたい。そんなにピント変わるような想定のカメラじゃなさそうだしなぁ。あと手動でカード置くのもめんどいとのこと。カメラはともかくカード送り機は大変そうだな……。

というあたり。残り2つもすごい聞きたかったんだけど時間的に17時前になってしまったのでそこで抜けてきた。 ライブが渋谷で18時開演だったので……。

エモい話は無しでっていう方針だったらしくテクい(?)話ばかりでやっぱり面白かったな。今後もこの方向で期待したい。

  1. しかしTypeStructじゃなくてTypedStructの方が名前として妥当よね……。TypeStructだと型自体を入れとく構造体ぽい。


2016-05-30

日記

また日記書かずじまいだよ。一週間に一回も書けない日記っていうね。

先々週は何してたっけかな。何もしてない。土曜日も仕事して疲れたので日曜寝てた。

先週はまじめに働いてた。まじめに働きすぎてつらい。 土曜日はTokyoRubyKaigi11と妖精帝國のライブで一日出掛けてて、日曜はライブの影響か全身筋肉痛で死んでた。 ライブごときで筋肉痛とかどういうことよ。

今週も真面目に働く。 8時出社するとみんな居なくて仕事が捗ることに気付いたのでそうしてるんだが、あんまり早くは帰りづらいので19時まで仕事してると残業しすぎになる。 18時(なんなら17時)に帰りたいけど帰りづらいぜ……。

Arduboyが届いた

Arduboyが届いた。やたらしょぼいスペックの最新携帯ゲーム機だ!

届いたArduboy

だいぶ前にKickstarterでつっこんでたやつが届いた。 どうも去年の3月くらいにぶっこんだやつらしい。2台セットで買って送料込み1万円くらいかな。 当初予定が去年10月くらいだったのが順調に遅れて5月中旬くらいに届いた。 まあ半年ちょいなので早い方じゃねぇかな。よく聞く話だがやっぱり生産に手間取ったようだ。

名前通りArduinoベースのゲーム機で、普通のArduino(Leonardとかいうのに近いぽい)に有機ELの画面とボタン6つと圧電ブザーをつけて、ついでに充電電池をのっけて単体で動かせるようにしたものだ。

Arduino自体しょぼいので当然2016年のゲーム機とは思えないほどしょぼい。 どんだけっていうと初代ゲームボーイよりしょぼいくらいだ。CPUクロックだけは16MHzもあるがな。 有機ELも名前はすごいが、たった128x64の二値表示。グレーとか出ねぇよ。白黒だけだよ1。 まあ発色が良いのは救いか。 ただクレジットカードサイズで厚さも数mmという小ささが素敵。まあ面積的にはGBAミクロとどっこいぐらいなんだけど、厚さは全然違うからね。ああミクロすげぇな。

開発環境はArduinoの標準のものがそのまま使えるようで、インストールからサンプルを転送するところまで何の苦労もなくできた。あら便利。ちょっとはまったのは転送時に電源入れとかないといけなかったくらいだ。

最初からぷよぷよ的なゲームが入ってて、動きがちょっともっさりだったので不安だったが、サンプルのブロック崩しを動かしたらぬるぬる動いて好印象。楽しい。

ぷよぷよ的なゲームが入ってた

標準ライブラリのソース見たり、デバイスの仕様(特に有機ELモジュール)を見ていろいろ妄想したあたりでいじる暇なくて止まってる。なんか簡単なドット絵書いて表示するところまでさくっとやりたいね。

  1. 高速で点滅させたらどうなるか試してみたい。まだやってない


ページのトップへ | トップ | 追記 | kumaryu.net by kumaryu