Node.js

io.js on Travis-CIでNode.jsのC++アドオンのビルドが失敗する件

Node.jsのC++アドオンをTravis-CIでテストする際に、io.js@v3の環境でのみビルドエラーが発生していたので原因と対策を記録しておく。※バージョン等の情報は2015-08-19時点のものである。 事象 io.js@v3.0.0の環境で以下のようなビルドエラーが発生する。 /h…

npm の Node.js C++ Addonを Node.js v0.11 に対応させた

npmにあげてあるNode.jsのC++ Addon を Node.js v0.11 に対応させました。https://www.npmjs.org/package/kytea https://www.npmjs.org/package/murmurhash3 https://www.npmjs.org/package/unqliteこれらのモジュールは以前までは自前で Node.js の各バージ…

Node.js v0.11.0 以降におけるC++ Addon への影響

Node.js v0.11.0 で C++ Addon をコンパイルすると以下の様な warning が出るようになりました。 warning: 'New' is deprecated [-Wdeprecated-declarations] これは、Node.js v0.11.0 の V8 において V8::Persistent のメソッドで第1引数にv8::Isolateのイ…

npmのプライベートレジストリをつくる

npmのプライベートレジストリを作ってみたので手順をメモっときます。環境はOSX 10.7.4です。 1.CouchDBをインストール お好みの方法でCouchDBをインストールします。今回はHomebrewで入れました。 $ brew install couchdb $ couchdb -V couchdb - Apache Co…

npmのメタデータとか

new.npmjs.orgで自分がリリースしたパッケージ(これとか)を見てみたら、ドキュメント(Read me)が表示されるものと、されないものがあって気になったので、npmとnpm-wwwのソースを読んでみました。まず、Read meの情報を表示する箇所を調べました。 https://g…

nodebrewのbash補完関数を書いた

nodebrewのbash用補完関数を書いて、pull-requestしましたマージされました。Add bash completion by hideo55 · Pull Request #16 · hokaccha/nodebrew · GitHubzshの補完では ls-remote の結果をキャッシュしています*1が、bashではキャッシュ処理を自前で…

Node v0.7.10 での child_process.spwan() の変更

Nodeの v0.7.10 で child_process.spawn() のオプションに変更がありました。いままでは、spwanで起動した子プロセスで既存の親プロセスのstdin/stdout/stderrを使う場合は、以下のようにしていましたが、Node v0.7.6 で customFds は Deprecated とされてお…

node-gypではまった

node-murmurhash3とかnode-kyteaのGYP対応をしていてはまったのでメモ。node-gypが生成するMakefile等ではいくつかのオプションがデフォルトで付加される。その中に "-fno-exceptions" が含まれているため、C++ Addon で例外処理をしている場合に例外オブジ…

v8::ArgumentsのThis()とHolder()の違い

JavaScript関数の引数であるv8::ArgumentsのメソッドにThis()とHolder()というものがあります。この2つとも、通常は JavaScriptでの this に相当するv8::Objectを返すメソッドなのですが、違いがわかりにくいので調べてみました。 This() と Holder() は何が…

Node v0.7系をビルドすると、x86_64環境でも32-bitバイナリができてしまう件

2012/2/25追記 v0.7.5で修正されていました。 Node v0.7系で C++ Addon をビルドしようとした際に ld: warning: ignoring file /usr/local/lib/libhoge.dylib, file was built for unsupported file format which is not the architecture being linked (i38…

Node.js でテキスト解析

Hachioji.pm #13 で話した、京都テキスト解析ツールキット - KyTeaを Node.js から利用する C++ Addon をドキュメントを整理したうえでGithubに上げました。GitHub - hideo55/node-kytea: Node.js binding of KyTea KyTeaとは? テキストの単語分割(分かち書…

Node の C++ アドオン開発で必要なこと

この記事は JavaScript Advent Calendar 2011 (Node.js/WebSocketsコース)の8日目の記事です。今日は、Node の C++ アドオン開発をする上で必要な心構えや Tips について書きたいと思います。 1. 情報が少なくても泣かない C++ アドオンについての公式ドキュ…

Node.jsでReadableStreamから一気にデータを読み込む

node.jsでjson整形するワンライナー - hokaccha memo を見て思いついたので。GitHub - hideo55/node-stream-slurp: Read entire data from ReadableStream require('stream-slurp').slurp(function(err, data){ if(err) return throw err; console.log(data);…

JavaScriptコードのメトリクス測定

以前、Perlにおけるコードメトリクスの測定について書きましたが、JavaScriptについても調べたところjsmeterが良さそうです。なお、循環的複雑度等のコードメトリクスはあくまでも定量的な目安であり、絶対的な品質を表すものではありません。コードレビュー…

Chrome Extension - NPM Helper Updated

以前作ったNPMの更新通知と検索を行うChromeの拡張機能 「NPM Helper」がだいぶ安定したと思うので、CRXファイルをGithubに置きました。使いたい人は下記のリンクからインストールしてみて下さい。 更新通知 NPM検索 NPMのパッケージが更新されるとWebNotifi…

Node.js のモジュールをC++で書く際のメモ(2)

第1回から9ヶ月もたち、Node.jsの方もAPIに変更があったのでC++ Addon関連のメモをしておく。 バージョン関連 Nodeのバージョンによって処理を変える node_version.hに定数、マクロが定義されているのでこれを利用する。 #include <node.h> #include <node_version.h> #if NODE_VERSI</node_version.h></node.h>…

東京Node学園祭2011に行ってきた

10/29(Sat)に開催された東京Node学園祭に行って来ました。nodejs_jpのイベントとしては東京Node学園祭1時限目以来の参加でした。一番面白かったのはGuillermoのライブコーディングでした。信じられないタイプ速度で、エスケープコードで色もつけて、コメント…

Node.js の child_process.spawn() ではまった

Node.jsのchild_process.spawn()でエディタを起動した場合に動作が不安定になるという問題があったので解決方法を記録。最初は以下のようなコードでエディタを起動していました。(実際にはネストしたコールバックの中で呼び出される) var editFile = functio…

ShipIt.jsの今後の予定

ShipIt.jsをかなり変更しました。特にコマンドラインインタフェースとドキュメント。Stepsについては基本的なところは揃えたので、これから作るかもしれないのは以下の機能。 アナウンス系 リリースしたらTwitterなりIRCなりにアナウンス JS自体のversionの…

Chrome Extension を作ってみた - NPM Helper

YAPC前なのに何やってんだって感じですが、Chrome Extension を練習で作ってみました。GitHub - hideo55/chrome-npm-helper: Chrome extension for help to use NPMとりあえず、アドレスバーで "npm + space" で NPM Helper を利用できます。ここで文字入力…

ShipIt の Node.js 版みたいなの書き始めた

CPANモジュールにリリース作業を自動化する ShipIt 的なのが Node.js にも欲しいなと思って書き始めました。GitHub - hideo55/node-shipitjs: NPM package release management toolいまは、package.jsonを読んで、gitのバージョンタグを作って、npm publish…

MurmurHash3 の Node.js Binding を書いた

32bit/128bitのハッシュ値を生成するMurmurHash3のNode.js Bindingを書きました。ソースはGithubに置いてあります。また、npmのパッケージとしてもリリースしてありますので、以下のようにnpmコマンドでインストールできます。 $ npm install murmurhash3

npmのアップデートをGrowl通知する

先日のMetaCPAN APIを使用してモジュールの更新をGrowlで通知するを書きましたが、今度はnpmのモジュールアップデートをGrowl通知するスクリプトを書きました。GitHub - hideo55/node-npm-growler: Growl npm updatesせっかくなのでNode.jsで書きました。Gro…

package.jsonの書き方

https://github.com/isaacs/npm/blob/master/doc/json.mdここに全てが書いてある。気を付けなくてはいけないのが、npmが解釈するJSONはRFC4627に従ったものであること。つまり、ただのJavaScriptのオブジェクトリテラルとは異なる。たとえばオブジェクトリテ…

Node.jsのテストツールWhiskeyがよさげ

Node.jsのテストツールwhiskeyがよさげなのでメモ。 特徴 テストファイルごとにプロセスが分離されている 複数のテストを並列実行できる(--concurrency オプション) テストを実行する前のテスト初期化機能(-ti, --test-init-file オプション) テストタイムア…

Node.jsのテストフレームワークについて

Node.js のテストフレームワークは主要なものはここにありますが、どれがいいのか迷ったので試してみたもの、ドキュメントを読んで良さそうものについて印象を記録しておきます。ちなみに、選出の基準は「ドキュメントが充実していること」です。 追記 ブコ…

node-groonga - Node.jsでgroongaにアクセスする

GitHub - hideo55/node-groonga: groonga interface for Node.js Hachioji.pm #5でNode.jsでgroongaにアクセスするnode-groongaについて発表しました。 資料はこちら。これは先週の木曜日に書き始めたので、まだまだプロトタイプ段階ですが、HTTP経由でgroon…

東京Node学園 1時限目にいってきた

2011/3/24(木)に開催された東京Node学園 1時限目 : ATNDに参加して来ました。

Node.jsでDIできるフレームワーク「Grasshopper」が気になる

Node.jsのMVCフレームワークでDependency InjectionをサポートするGrassHopperが気になってます。以下はREADMEに記載されているDIの例です。 var gh = require('grasshopper'); var dependencies = { dataService: { getStock: function() { return 100; } }…

Node.jsの使いどころ

最近使ってるNode.jsの使いどころについて、現時点の考えをメモ。たぶん、散々既出の議論だろうけど。 Node.jsのパフォーマンスを最大限に発揮するには、あらゆる処理を非同期化する必要がある(EIO/子プロセス化など)。 素のHTTPリクエストにはHTMLの枠とJS/…