コミケ告知

サークル活動の詳細は circle タグの記事へ。
ラベル JavaScript の投稿を表示しています。 すべての投稿を表示
ラベル JavaScript の投稿を表示しています。 すべての投稿を表示
2013年3月31日日曜日

Fluentdの出力をWebSocketに流すoutput pluginを書いた

Fluentdの出力をWebSocketに流すだけのoutput pluginを書いてみました。Rubyが全然わからないので、使い方をぐぐりながら。
普通はモニタリングしたければログなり標準出力なりに出せばいいので、広く一般に使えるものではないでしょう。リモートで動いているFluentdが吐くデータを、ちょっと手元のブラウザに出してみたかったんじゃよ。

いわゆる自分用プラグインです。インストールは「pluginディレクトリに置いてくれ」「em-websocketに依存してるからあれ入れてね」というバルクな仕様。他に使う人がいれば、Gemにした方が良いのかもしれません。

はじめてのRuby雑感

何かの勉強会でサンプルがRubyだったため、1回書いたことがあるような気がしますが、何も覚えていませんでした。変数の種類とかifの書き方とかを検索するレベル。
Rubyでは、変数に関数を直接代入は出来ないという理解であってますかね?検索したら proc というのが出てきたので、とりあえずそれを使ってみました。変数に直接関数入れられる言語と比べると、めんどくせーなーという印象です。

はじめてのWebSocket (クライアント側) 雑感

WebSocketってきっと面倒で、専用のライブラリがあってそれを使うのかな…と想像していましたが、生のWebScoketオブジェクトを使ってちょろっと送受信するだけなら簡単でした。
websocket.orgにechoのサンプルがあるので見ると、WebSocketのオブジェクトをnewして、あとはハンドラ(onXXX)に必要なものをセットするだけです。サンプルをここに書きおこす必要は感じられない程度に、シンプル。
最初はサーバーを自前で立てなくても、サンプルで使っているws://echo.websocket.orgで試せるのも有難いです。サーバーの動作を疑わなくてもよい点で。

はじめてのWebSocket (サーバー側) 雑感

FluentdのプラグインはRubyである必要があるため、em-websocketを使いました。作者が作者だけにrev-websocketで…とまず思ったけど、3年間更新されてませんね。動きませんでした。
exampleの中にあるmulticastのサンプルを見ながら動かしたら、意外とあっさり複数接続も出来ているようです。

FluentdはMessagePackフォーマットで出すのも簡単なため、受信側にmsgpack.jsを組み込んで、バイナリ送信にも対応しました。その際、いつものsendメソッドで送ろうとしたら接続が切れてしまうので何かと思ったら、どうやらsend_binaryという別のメソッドがあったようです。pull requestの履歴の中にありました。READMEの範囲では、そんなのわからなかったよ…
2013年2月13日水曜日

PARTAKEのタイトルを書きなおすだけのChrome Extension

# はてなダイアリーから移動した記事です。あまり真面目に整形していません。

なぜかイベントページのタイトルが PARTAKE になってしまうpartake.in。何度かいらっとしたので、くだらないChrome拡張を作りました。

最初はgithubに置いてみましたが、これを続けて改良していくことはないだろうし、PARTAKEがまともになれば(あるいはサービス終了すれば)それで終了な一時的なネタなので、gistに移しました。
バイナリ(PartakeTitleCorrector.crx)をChrome拡張画面にドロップすればインストールできるはずです。

実体は、ほぼ定型のコンフィグレーションファイル(manifest.json)と、1行のjavascript。やる気のないアイコンを用意する時間の方が長かったくらいかもしれません。これくらいの分量で動くなら、くだらん自分専用の拡張機能を色々作る気になります。

document.title = "PARTAKE: " + document.body.getElementsByTagName("h1")[0].innerText;

そもそもの問題として、PARTAKEの中の人ならば、TITLEタグの修正はあっという間に終えられるはず。タイトルがおかしいなんて、顔色変えて即修正するレベルの問題では?いったいどうなっているのでしょうか。もはや改良する気はなくて、売却に夢中だったりして?

# 13/02/14追記 バージョン指定が間違っていて、開発版にしかインストールできないので修正しました