0

jade内のJavaScriptに変数を渡す

expressからjadeに変数を渡す

tuplespace: (req, res) ->
name = “delta”;
tuple = {sensor: “light”, value: 80};
return res.render 'tuplespace', name: name, tuple: tuple

jadeでは.scriptと書くと複数行のインラインJavaScriptscriptが書けるので
script.
var name = "#{name}";
var tuple = !{JSON.stringify(tuple)};
文字列はクオートして、オブジェクトはJSONにしてviewのjavascriptに渡せた。


追記 XSSが可能だった HTML内のJavaScriptへのJSON埋め込み

0

linda-socket.ioのjob-queueサンプルをherokuに置いた

前:NodeにLindaを実装した

linda-socket.ioはsocket.io上に実装してるので、herokuでも動く。


http://linda-job-queue-sample.herokuapp.com

ソースコード https://github.com/node-linda/linda-job-queue-sample
lindaなので、サーバー側でlindaにsocket.ioを読むだけで、サーバー側のコードまったく書く必要なくクライアント側だけでメッセージングできる。


完全にこれをnodeに移植しただけなので解説は割愛する
Lindaによるブラウザ上での分散処理の例

0

Tw v1.0.4をリリースした

tw内で使っているrainbow gemが年末にバージョンアップして、twが動かなくなっていたのを直した。

update for rainbow 1.99.x · Issue #54 · shokai/tw

@todotantanさんありがとうございます

他のgemもtwitterやparallelなど最新にしたり、OAuthの認証URLがLinuxでもブラウザで開くようになったりしているので

gem install tw

でインストールしなおしてください

0

アニメgifでTwitter定点観測

最近はアニメgifで定点観測を送っています。

家だとtweetしないし、撮影する前にちゃんと「撮影します」って言ってくれる安心感がある。

35 */2 * * * (now 'home?' || (say 撮影します && gifsnap /tmp/gifsnap.gif && gyazo -raw /tmp/gifsnap.gif | xargs tw --user=shokai --yes 定点観測 )) > /dev/null 2>&1


このような技術で構成される。
橋本商会 » twで写真を付けてtweetできるようになった
橋本商会 » nowコマンドを作った
1分でアニメgifを活用する – Qiita [キータ]

0

NodeにLindaを実装した

艦これの冬のイベントやりながらcoffee書いてたらLindaができた。おかげで三隈大和大鳳以外全部集まったけどコミケに行けなかった。

前にRubyで実装したこれ
Ruby上に並列言語拡張Lindaを実装してWebSocket/Cometで使えるようにした


Node+Socket.IOで実装しなおした。
https://npmjs.org/package/linda-socket.io

RubyよりNode+coffeeの方が並列処理書きやすい。特に本体よりもテスト、coffee+asyncにだいぶ助けられた。あとなんだかんだでEventMachineに気を使って書くのが疲れる。
Node版はタプルに配列が使えないようにした。全部Object(hash)にした。流れているデータを読んで意味がわかりにくいのと、request-response形式で返すタイプの時にマッチングがしにくいため。


インストール

npmでインストールできる。

npm install linda-socket.io


使う

Socket.IOのインスタンスを食わせると既存のSocket.IOの通信を邪魔せずにLinda機能が増える。


ふつうnodeでwebアプリ作るとしたらhttp.createServerとsocket.ioでやると思うけど、それらのインスタンスをLindaに渡せば使えるようになる。
var http = require('http');

var app_handler = function(req, res){
// your web app code
};

var app = http.createServer(app_handler);

var io = require('socket.io').listen(app);

var linda = require('linda-socket.io').Linda.listen({io: io, server: app});

app.listen(3000);
console.log("server start - http://localhost:3000");


詳しくはUsageに書いた。