EventEmitter on Browser

Node.jsにはEventEmitterというのがあり、こいつがかなり重要になる。

だいたい適当にコードをかいてしまうと

var EventEmitter = require('events').EventEmitter;
function C(){};
C.prototype = new EventEmitter();
var obj = new C();
obj.addEventListener("test", function(){ console.log("Wooo") });

みたいな感じで、すべてのオブジェクトにaddEventListenerやらが付与されてかなりいい感じになる。

んでこれをブラウザ上でのJavascriptでも実現したいと思ったので実装した。

コードはgithubにある

だいたい上のコードと同じイメージで使えるので、苦労することはない。

本家EventEmitterとの違いは以下

  • EventEmitter#maxListeners はない
  • イベントリスナはsetTimeout()を挟んで実行される

なんかしら思いついたら追加で実装したりするし、バグがあったらなおします。ライセンスは放棄で。


Posted in Programming | Tagged | Leave a comment

Rubyでファイル更新検知

とある目的を達成する為に必要だったので書きました。

なんか挙動が微妙にJavascriptっぽいところがミソですね。


Posted in Programming | Tagged , | Leave a comment

Javascriptの開発手法について社内でプレゼンしました

なんか教えて欲しいよ〜みたいなことを言われてしまったのでやりました。あまり参考にはならないかもしれません。

元ファイルはPDFですが、配布しています

一応Slideshareに上げましたが、表示が微妙におかしくなっているので、元PDFをご覧になる方をオススメします。

最初のスライドが真っ白なのは仕様です。読み込まれていないとかではありません。


Posted in Programming | Tagged , | Leave a comment

Javascriptが難しくてわからないので誰か教えてください

僕はプログラミングがまったくわからないので誰か教えて欲しいのですが、

> []
[]
> [,]
[]
> [,,]
[]

空配列です。なんというか空配列ですね。

> [].toString()
""
> [,].toString()
""
> [,,].toString()
","

いやー、カンマがいっぱいでなんだか楽しい気分です。カ、ン、マ、カンマ、カ、ン、マ!(歌は気にするな!というアンクちゃんの声が聞こえますね。ろーじーちゃん嬉しい)

それで、僕はよくわからないままTwitterに助けを求めた所、undefinedが入っているみたいだよみたいなことを言われましたが、評価した限り、空配列です。なんだかよくわからなくなってきました。ふしぎの海のナディア!

誰かどういうことかまともに説明してください!


Posted in Programming | Tagged | 2 Comments

Nerineを作り直したい話

僕が昔作ったNerineというHTMLでプレゼンテーションをするためのしろものがあるのだけれど、最近の僕自身はKeyNoteを使ってスライドを作っている。

なんでそんなことになるのかと言われると、ぶっちゃけていうとNerineは不便だ。画像を一枚スライドに加えるだけで大変な労力だし、デザインひとつ調整するにしたってそうだろう。

細かいことをやろうとすればKeyNoteより自由度も高いし、CSSやJSを理解していれば、ある意味KeyNoteをヘタにいじるより楽にできるだろうが、スライドを作る際、もっとも意識すべきなのはスライドの質であって、スライドの見た目やデザインや、ましてやツールの選択ではないはずだ。

それを不満に思ってから、そしてKeyNoteに慣れてしまってからというもの、Nerineを利用していない。よくないことだし、もったいないことだ。そのままWebにアップロードして、閲覧できるNerineのことを僕は好きだし、それは素晴らしいことだと思っている。

だから「スライドをつくる時点から」を含めてNerineを作り直したい。

だるいけど。


Posted in Programming, thinking | Tagged | Leave a comment

新宿にて配信の記録

回線はDoCoMoのWiFiルーター

ストリームはいつもどおりFMLEで。出し先はUstream(ニコ生金かかるねん)。

んで、配信の設定

音響関係

基本が音メインの配信だったので、さきにこっち。

CDJをつなげたDJミキサーからRecソースをもらってATにLine-in。一応会場の音入れる用でマイク2本立てたけど、使わなかったので意味なし。これなら直接UXにLine入れてもよかったかもしれん。

んでATからUXにLineで入れてUXの方でHighBoostとReverbを軽くかけてやってマシンに。

途中録音して欲しいとの依頼があったので(映像ソース不要)、PC側でAU LabでUX -> SF02に叩き込んでやる。エフェクトはなし。録音時のみRecボタン押して解決。

最後にFMLEはSF02を食わせて終了。配信時のオプションは441000Hz / 228kbpsで。

映像

PCからでてる15ピンをダウンコンバータ噛ませてコンポジをもらって、ビデオキャプチャーでコンポジいれて解決。

動画の方はDropしてもOKなのでなるべくきれいめということで(動きも激しくないし)、H264ソース。30fps / 320×240 / 500kbpsで決。

配信

UstreamにFMLEで入れて配信。動画音声合わせて724kbpsのビットレート。

配信はほぼ問題なし。落ちるかと思ったフレームもDrop少ない。4時間ぐらいぶっ通しで19dropなのでほぼ完璧。配信はAverage見てる限りほぼ狙いばっちりででてる。

回線がDoCoMoのWifiなので不安だったけどほぼ問題なく稼働してる。同時録画しながらやってみたりもしたけど問題なし。

ただDoCoMoの回線(ルーターが悪い?)で瞬断が断続的に発生する。瞬断発生するとFMLE上では正常に動いてるように見えて配信側では見えてないという状況が発生する。

一旦放送を停止、配信画面を切ってまた立ち上げてFMLEを繋ぎ直すと復旧可能。このフローめんどくさい。

そのうちUstream Producerでも入れるか。という感じ。


Posted in livestream | Leave a comment

機材購入

機材用キャリー散財しました。

ということで購入物リスト。


  • UA-4FX: 有名オーディオキャプチャー。PCに音を取り込む。
  • AT-PMX5P: ポータブルマルチミキサー。こいつにマイクやらを繋いで音をミキシングします。
  • ハンドマイクx2: スタンドも同時に購入。ハンドマイクなので少々カラオケっぽい音になるけど、MacBookProなどに最初から付いているマイクなんかよりは全然ノイズが少なくていい音です。
  • フォーン→ミニフォン変換: ミニフォンのオスとフォーンのオスのケーブル。こいつでiPhoneやら普通のPCやらからBGMをだしてやることができます。
  • (機材じゃないけど)TonePad Pro: iPhoneアプリのTonePadさん。テノリオン系のいわゆるオセロの升目みたいな所をON/OFFしてループ音を作るだけのアプリなのですが、配信の開始、ラストのBGMはこいつで作ってまかなっています。番組ごとの雰囲気などがある中、その場でそれっぽい音を手軽に作って流せるのは素晴らしい。
  • (これも機材じゃないけど)キャリーケース: 上の写真の黒とピンクのキャリーケースを買いました。ぶっちゃけ機材だけでなくケーブル等も大量にあるのでまとめて持ち運ぶのが大変です。ということで移動用に購入。金具がゴールドでかわいいのでお気に入りです。

とまぁこんな感じ。配置的には

マイク→AT-PMX5P→UA-4FX→PC(MacBookPro/FMLE)
iPhone→↑

と繋ぎます。

ただまったく同じ構成の人に注意してほしいのが、AT,UAどちらも意外と音が小さいので、マイクを真ん中において少し離れた距離の人間の声(マイクから40cm程度)をだそうとすると結構ゲインをあげておかないといけません。

そんな時にいきなりどかーんとBGMをいれてしまうと確実に音が割れるので注意。ゲインメーターはUAのものとPC上のものどちらも別に見ておきましょう。UAで割れてなくてもPCで割れてるとかはあるので。


Posted in livestream | Leave a comment

test

まえのサーバーが吹っ飛んで記事が全部消えたけど大したこと書いてなかったしまぁいいかという気分になったので今後はもっとまともに記事を書いていく。


Posted in non-category | Leave a comment