dotjs面白いところ
dotjs — hack the webというプロダクトが割と面白いです。
利用制限が下記のように厳しいものの何かをインストーするというのではなく、~/.js/にドメイン名+.jsというファイルを置くだけでいいあたりが気楽でいいです。
利用制限
-
- OS X
- Ruby 1.8
- rake (gem install rake)
- Google Chrome
- /usr/local/bin in your $PATH
これくらい厳しい条件なら幻影旅団も余裕ですね。再開を待ち望んでいます!><
動作原理
このプロダクトは以下のような流れで~/.js/配下のファイルを実行しています
で
これ、割といいんですが、ローカルに立てるサーバが"dotjs"って名前にもかかわらずWEBrickというのがいけてないと思うんですよ。
jsやるならLivewireとかRhinoとかあるだろうと、思うんですが、今回はNodeです。
というわけでmuddydixon/dotjs at nodejsserver · GitHubです。
変更したのは、bin/djsdというサーバだけです。
まあ、普通にGoogle先生にも差し込んで動いているので大丈夫だと思います。が、何かあれば教えてください。
#!/usr/bin/env node process.argv.forEach(function(o){ if(o === '-h' || o.indexOf('help') > -1){ console.log('usage: djsd [-hv]'); console.log('stats dotjs server in the foreground. kill with ^C'); process.exit(0); } if(o === '-v'){ console.log('djsd 0.0'); process.exit(0); } }); var fs = require('fs') , path = require('path'); var server = require('http').createServer(function(req, res){ if(req.method === 'GET'){ var _file = process.env.HOME + '/.js' + '/' + req.url.replace(/\//g, '') , _default = process.env.HOME + '/.js' +'/default.js' , _body = ''; if(path.existsSync(_default)){ _body += fs.readFileSync(_default) + '\n'; console.log(_body); } if(req.url !== '/'){ if(path.existsSync(_file)){ _body += fs.readFileSync(_file) + '\n'; console.log(_body); } } res.statusCode = _body === '' ? 204 : 200; res.setHeader('Access-Control-Allow-Origin', '*'); res.setHeader('Content-Type', 'text/javascript'); res.end(_body); }else{ res.end(''); } }) server.listen(3131);
JSかわいいおJS
「JSしか愛せないのでCの経験は無いです」