2013-01-01から1年間の記事一覧

Node.jsの例外処理(承前:なぜ例外処理が必要なのか)

ドメインの実装を徘徊してだいたい裏がとれたので、一旦まとめ。 JavaScriptの言語仕様として例外処理は用意されています。すなわち、何か処理上で継続しがたいような不都合があったら、throw文にて例外を送出します。(脱線:JavaScriptの例外としては一般…

node.ccでのDomain対応

https://github.com/joyent/node/blob/master/src/node.cc ですね。ここには来たくなかったのですが、実はキレイなコードで読みやすかったw。 Handle<Value> MakeDomainCallback(Environment* env, const Handle<Object> object, const Handle<Function> callback, int argc, Handle<Value> a</value></function></object></value>…

Timer系でのDomain対応

そしてほぼ最後。Timer系関数でのDomainはどうしているのかというと。 // timers.js (v0.10.18) exports.setTimeout = function(callback, after) { // (省略) timer._onTimeout = function() { callback.apply(timer, args); } // (省略) if (process.domai…

EventEmitterでのDomain対応

イベントの伝播の仕組みのほうはEventEmitterのemitそのものに組み込まれています。 // events.js (v0.10.18) EventEmitter.prototype.emit = function(type) { //(省略) if (type === 'error') { if (!this._events.error || (typeof this._events.error …

process.nextTick()でのDomain対応

https://github.com/joyent/node/blob/master/src/node.js Node.jsのスタートアップラウンドのコード、その名もnode.js、ですが、こちらにprocess.nextTick()の定義で、特に遅延させた関数のスタックをループで発火させるところとして_tickDomainCallback()…

Domain#bind()がやってること

var d = require('domain').create(); d.on('error', function(e) { console.log('handled error: ' + e.message); }); d.enter(); //やってることは process.domain = d; fireError.apply(d, []); d.exit(); function fireError() { throw new Error('fire …

Domain#dispose()の存在意義?

Domainのソースコードから手を広げて見て回ってましたが、大体わかってきた。このDomainはTimer関連とEventEmitterに組み込まれる事でNode.jsのコアの一員となってます。そのへんもうちょい理解深めたらまとめたいと思います。 今、わかんないのがDomain#dis…

積読棚卸

ざっと積んだもの、さくさく整理していきます。夏休みはじまりから早ひと月、いろいろ読みました。一冊の本を書くのは大変なことですから、それだけでも頭さがりますけど、まあ思うところはコンテキスト無視で書いてみます。Node.jsをはじめるにあたって読む…

Node.jsの商用サポート

http://www.infoq.com/jp/news/2013/06/strongloop-node http://www.strongloop.com/ 6月のニュースでしたが。Node.jsの中核コミッタが属する会社で商用サポート/ディストロを開始ということで、ビジネスモデルはRedhatみたいな感じですね。JoyentもNode.js…

Node.js in Action

Node.js in Action作者: Mike Cantelon,Marc Harter,Tj Holowaychuk,Nathan Rajlich出版社/メーカー: Manning Pubns Co発売日: 2013/09/28メディア: ペーパーバック クリック: 3回この商品を含むブログを見る こちらExpress作者が書いてるものです。アマゾン…

そして例外処理へ

socket.ioの仕組みは面白いですがそこまでならずとも、すでにNode.jsコアでHTTPをハンドルしている仕組みのレベルで面白いです。というか、大変好き。 http://mk.hatenablog.com/search?q=Grizzly https://grizzly.java.net/ こちらはこのブログの検索リンク…

socket.ioの習作解説その参

socket.ioの具体的なサービスコードは、例えるならばトランシーバーみたいな考え方です。自分が通話するときはボタン押してしゃべって、あとは手を離しておけば聞こえるという。 //サーバ側 chatroom.on('connection', function(socket) { heartbeat(); sock…

socket.ioの習作解説その弐

<script src='/socket.io/socket.io.js'></script> <script src='/javascripts/jquery-2.0.3.min.js'></script>今回サンプルのHTMLにはサーバ側で動くコードは一切なく、すべてブラウザ上で実行されます。その中でsocket.ioの賢い仕組みとしてはこちら。/socket.io/socket.io.jsを要求してダウンロードします。一緒に並べているjQueryのコードの要求とはちょっと違っ…

socket.ioの習作解説その壱

習作のサーバ側、app.jsの最初の5行で静的WEBサーバを立ててます。 //サーバ側 var express = require('express'); var app = express(); app.use(express.favicon()); app.use(express.static(require('path').join(__dirname, 'public'))); var server = r…

socket.ioの習作

socket.ioの習作としてミニマムでも動きがわかるようなものをこさえてみました。ソースファイルはapp.jsとindex.htmlの二個だけ。サーバ側はexpressとsocket.ioに依存し、クライアント側でjQueryだけは用いてます。例外処理はどうしたものかまだ勉強中。おま…

Node.js入門

サーバサイドJavaScript Node.js入門作者: 清水俊博,大津繁樹,Jxck,小林秀和,佐々木庸平,篠崎祐輔,高木敦也,西山雄也出版社/メーカー: アスキー・メディアワークス発売日: 2012/10/26メディア: 大型本購入: 31人 クリック: 803回この商品を含むブログ (6件) …

process.nextTick()その参

setTimeout(function() { console.log('====Timeout.===='); }, 0); var counterFi = 0; setImmediate(function fi() { console.log('immediate. [%d]', ++counterFi); if(counterFi < 5) { setImmediate(fi); } }); var counterFn = 0; process.nextTick(fu…

process.nextTick()その弐

setTimeout(function() { console.log('====Timeout.===='); }, 0); var counter = 0; setImmediate(function f() { console.log('immediate. [%d]', ++counter); if(counter < 5) { setImmediate(f); } });process.nextTick()の再帰呼び出しがNGということ…

process.nextTick()その壱

Node.jsにてアプリを書いてれば、いずれは巡り会ったのだろうprocess.nextTick()とは、今朝の関西行きの新幹線車中で出会いました。結論から言って、0.10.xでは0.8.xから仕様が変わってるみたいなので添付ドキュメントを読んで実験っと。実行Node.jsのバージ…

はじめてのNode.js

はじめてのNode.js -サーバーサイドJavaScriptでWebアプリを開発する-作者: 松島浩道出版社/メーカー: ソフトバンククリエイティブ発売日: 2013/03/15メディア: 大型本 クリック: 15回この商品を含むブログ (5件) を見る すでにはじめてではないのですが、他…

最近の朝練状況

夏休みからこのかた、だいたい四週間、たどった道はこんな感じ。 JavaScriptをNinjya本読みつつ、関数型言語として刮目 JavaScriptのIDEとしてWebStormをつかいはじめる (ここまででほぼ二週間) Google Mapsでマーカー打ったりルート検索したりとか、Heatm…

Cloud9 IDEを試す

Java等のコンパイラ言語は言語の仕様として型付けが強いので、IDEも理論的にサポートしやすいためでしょうか、古くはDelphiやVisual Studio、ちょっと前でもEclipseなんかではソースコードエディタにコード補完機能やオンザフライでのエラーリポーターが用意…

node-mysqlをざくっと使う

MySQLにNode.jsからつないでみた。データベースtestにユーザーnodejs、パスワードhogeでつなぎます。MySQLはMacにコミュニティ版をインスコしてlocalhostに立ててます。DDLは手で書くの面倒なので、Sequel Pro(http://www.sequelpro.com/) を見つけて利用…

Nodeクックブック

Node.jsの本として買ったのはこちら。 Nodeクックブック作者: David Mark Clements,和田祐一郎出版社/メーカー: オライリージャパン発売日: 2013/02/23メディア: 大型本購入: 2人 クリック: 4回この商品を含むブログ (3件) を見る 夏休み前に本屋に見に行っ…

SASSをすすめられた

何がいやだってそれこそ10年ぐらい前、JSPだのなんだのってサーバでDBをフェッチしてタグ書いたり、画面遷移させながらセッションの値を表示バインドしてどうしたのこうしたのってやってるときに、デザイン変わりましたーってHTMLがごっそり差し替えになっち…

はてなの規約を思わず読んだ話

魔法の呪文があります。ちょっと試してみたら当然のごとく意図通りに動きました。 $("#google-afc-user").remove(); $("#pc-afc-block").remove(); フッタにscriptタグ書いてこれ書くと、広告が消えちゃう。やれるけどこれやったら、はてなはProの課金収入と…

JavaScript Ninjaの極意

JavaScript Ninjaの極意 ライブラリ開発のための知識とコーディング (Programmers’ SELECTION)作者: ジョン・レシグ,John Resig,ベア・ビボー,Bear Bibeault,勝亦勇,吉川邦夫出版社/メーカー: 翔泳社発売日: 2013/05/25メディア: 大型本この商品を含むブログ…

コアjQuery

コアjQuery+プラグイン/jQuery UI 開発実践技法 (Programmer’s SELECTION)作者: Bear Bibeault,Yehuda Katz,吉川邦夫出版社/メーカー: 翔泳社発売日: 2011/08/31メディア: 大型本購入: 8人 クリック: 296回この商品を含むブログ (23件) を見る $(selector).…

ブログのカスタマイズ

とりあえずダイアリーから引っ越しして、デザインテーマ設定しただけのブログですが。。。あれ?HTMLが普通に書ける。ためしてみたら普通にscriptタグも書けた。 フッターにHTMLが書けるのと、サイドバーのウィジェットにHTML断片をそのまま埋め込めるパーツ…

移行できた!

いやービックリしたよ。過去記事、移行完了。やる気出た。