TypeScript/Node

SuperAgentとMulterでファイルアップロード

ファイルアップロードの機能を作るのに、二日ハマりました。前提としてReactで作ったFormから投げ、Express4で書いたサーバで受けるというところでの通信部分だけです。まずガチなところとしてサーバを作ります。 var express = require('express'); var mul…

ReactでinputのonChangeが効かなくて焦った話など

Reactでちょこちょこ書いていて、嵌ったところをメモ。ちなみにECMAScript6は、ExpressもReactもあまりメリットない割に、参考資料が少なくてどう書いていいのか悩む時もあるのでやめた。Babelでreact-presetだけ使ってます。 inputのonChangeが効かなくなっ…

Node.js 5.0へ

5.0!ほんの一年ぐらい前は0.10とか0.11とか名乗ってたのになあ。 www.publickey1.jp 運用モードでも全くないので、バシッと最新にしちゃいます。これまではnodejs.orgから落としてきたインストーラを使ったので「n」を入れて、そこからアップデートします。…

今はbabel-nodeで動かす

ECMAScript6で、node.js/express.jsのサーバ側を書く段になるとes6的メリットを享受できていません。Reactの方はclassを用いて書くといい感じなんですけどね。 // server.es6 import express from 'express'; const server = express(); server.get('/', asy…

importの解決でBrowserifyからのBabelify

ECMAScript6でクライアント側を書いてますが、極小のHello Worldレベルから一歩進むだけで壁が。JavaScriptの発展の歴史の中で大きなアプリケーションを作るためのパッケージ参照機構が様々用意されてたみたいですが、そこにまた大きな曲がり角が出てきちゃ…

ECMAScript6を楽に

少々触った程度ですが、もうWebStormからSublimeやBracketsといったテキストエディタ+へは戻れません。だいたい最近の流行をつかんだところで、もっと中身の方に移ろうと思います。 babeljs.io JSX書くのに、BabelがいるってんならECMAScript6もいいよねっ…

Reactのバージョンあがってた

Reactのバージョンがv0.14.0に上がってました。構成もいろいろ変わってる。。。3秒見るだけで変わってて、独立したJSXTransformerが無くなりJSXの逐次変換ではBabelが使われるようになり、グローバル変数としての"React"を"ReactDom"に代えて利用ケース毎に…

React向けにLinterを設定する

JavaScriptを書き、Reactに触れるにあたって、エディタをどうしようかと一回りしました。元々Javaな人なんでEclipseなどの統合開発環境でがっちりサポートされてきた身としてはテキストエディタだけでっていうのは不安です。不安なんで一年前には速攻でJetBr…

入門 React

入門 React ―コンポーネントベースのWebフロントエンド開発作者: Frankie Bagnardi,Jonathan Beebe,Richard Feldman,Tom Hallett,Simon HØjberg,Karl Mikkelsen,宮崎空出版社/メーカー: オライリージャパン発売日: 2015/04/03メディア: 大型本この商品を含む…

テスタブル JavaScript(ちょっと読んだ)

テスタブルJavaScript作者: Mark Ethan Trostler,牧野聡出版社/メーカー: オライリージャパン発売日: 2013/09/21メディア: 大型本この商品を含むブログ (1件) を見る 先に読んでるもので渋滞していたので持ち歩きだけでしたが、今朝より読み始めました。オラ…

LoopBack探訪

StrongLoopのslcコマンドの中で、lbの説明にある「LoopBack」とはなんだろうと思い調べるとStrongLoopがSuiteの中で提供するモバイルアプリのバックエンドソリューションでした。しかもOSS。 $ slc lb workspace my2ndSL Creating workspace my2ndSL Create …

StrongLoopをインスコしてみた

http://strongloop.com/ Node.jsの企業向けディストリビューションという、StrongLoopをインスコしてみました。がっちり電話や住所も含むユーザー登録を行った後に、ダウンロードサイトにて各OS版のディストロを選択します。tarボールとインストーラ付きの両…

テスタブル JavaScript

テスタブルJavaScript作者: Mark Ethan Trostler,牧野聡出版社/メーカー: オライリージャパン発売日: 2013/09/21メディア: 大型本この商品を含むブログを見る これ、買ってみた。明日届いたのち、読んだら感想を書く。

WebStrom7のKarmaでテスト環境組んでみた

WebStrom7EA (WS-131.130)のKarma機能を使うべく、Karmaでテスト環境を組んでみました。まずKarmaって何?からはじまって、ドキュメント一読。たいした量ないので全部読める。 http://karma-runner.github.io/0.10/index.html テストランナーなんですね。テ…

WebStorm7

TypeScriptの0.9サポートが無かったことの発覚からWebStorm7のアーリーアクセス版を使い始めましたが、こちらこんな機能がWEBサイトに(まだそこまで勉強が届いていないため、これから)。 For more a complete experience with Sass, there is now support …

TypeScriptを使うための.d.tsファイル

TypeScriptから既存のJavaScript製ライブラリを型付きで使うときには、Cのヘッダファイルみたいなものとしてコーディング時だけ型を解決するものがあると便利だという。今朝はiPhone5sを買うのに調査を中断したので、手を動かしての検証作業はできてないけど…

開眼!JavaScript

開眼! JavaScript ―言語仕様から学ぶJavaScriptの本質作者: Cody Lindley,和田祐一郎出版社/メーカー: オライリージャパン発売日: 2013/06/19メディア: 単行本(ソフトカバー)この商品を含むブログを見る オライリー本に珍しく、薄く(171ページ)小さな版…

ドメインを一通り見た後はテストかな

ドメイン(Domain)を一通り見てきました。最後のほうは断定しちゃってるけど、まあ大丈夫なんじゃないかとは思います。次はテスト環境だね。これまたしばらく現役から離れているうちにBDDなんていうようなことも。隔世の感の中、なにから触ったものかリサー…

Node.jsの例外処理(ドメインの存在意義)

Node.jsはエコシステムが発達していて、コアライブラリだけでなく、サードパーティがたくさん有用な拡張モジュールを提供してくれています。また、自前で書くコードも一つのJSファイルだけで書くのではなく、見通しも良いように、再利用可能なように、機能単…

Node.jsの例外処理(イベントループによって分断されるコールスタック)

setTimeout()や、process.nextTick()で設定されるコールバック関数の中で例外が発生した場合、アプリケーションにて通常にtry-catchで補足できないのは、Node.jsの中核たるイベントループで遅延スケジュールされた関数のコールスタックが分断されるためです…

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作者が書いてるものです。アマゾン…