IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.
Perl には Test::TCP というのがあって、テスト中、空いてるポートで何かしらのサーバーを起動して使うということができます。Ruby においては Glint というライブラリがあって、同じことができます。 node.js の場合、node-test-tcp というのがあって、node の net.Server で動くサーバに関しては簡単に同じことができます。が、memcached とか外部プロセスを起動させようとするとちょっと困るのと、done() を呼ばないと終了しないので、何かいい方法はないかなと思ったので書いてみました。 https://github.com/cho45/node-glint test-tcp だとカブるので glint のほうの名前を仮りています。 つかいかた glint( function (port) { // ここは外部プロセスで実行される // た
今回ゎとてもひさびさに、メール受信時にその内容を処理するってゅー、 ぃゎゅる空メール登録みたぃな、ぁれが必要になりました まじ大昔にqmailとphpのパイプでそのへんがんばってたことがぁって、 そのゃりかたゎなんとなく今でもぉぼぇてるんですけど、 Node.jsでIMAPでとてもかんたんに似たょーなのがかけたから、 ゃりかたをちょっとかきます IMAPを扱ぅNode.jsライブラリ node-imapとゅーのがメジャーっぽぃんですけど、 けどinboxのほーが、ぱっとゎかりゃすかったから、 こっちをっかってみることにしました inboxをっかってみる まずゎインストールですけど、むずかしぃことゎなにもぁりません npm install inbox --save それで、IMAP接続して、メールボックスを開くょーにします https://gist.github.com/ayapi/8770
みんな大好きIPMSG!! いろいろあってストレス溜まっていたので、ちょっとした気分転換に、Node.jsでメッセージを送信してみました。 今回のサンプルを動かすにあたっては、事前に以下のnpmをインストールしておいて下さい。 npm install sprintf npm install jconv// ipmsg.js var dgram = require('dgram'); var sprintf = require('sprintf').sprintf; var jconv = require('jconv'); var udp = dgram.createSocket("udp4"); var version = 0x0001; //var IPMSG_SENDMSG = 0x00000020; var command = 0x00000020; var user = 'dai
このエントリをNode.js Advent Calendarにするか迷いましたが、Advent Calendarとしてはちょっとマニアックだったので、没になった方もアップします。ブログエントリの大掃除中です。 Node.jsを使うならEventEmitterを知っとくべし、という記事とかありますが、EventEmitter使ってるといくつか疑問に当たりますよね。 EventEmitterおさらい EventEmitterの基本的な機能をおさらいしておくと、EventEmitterというのは、イベントという単位で処理を行えるようにするためのモジュールで、イベントの受発信を行うことで非同期プログラミングを行いやすくするもの。 emitでイベントを発行 onで発行したイベントを受信 removeListenerでイベントを消すことができる onceで一回だけイベントを受信することができる で、こ
node.jsでmodule.exportに書かない部分は外からアクセス出来ないプライベートな関数になる。 困っちゃうのがこれをテストしようとするとき。 結局テストのときだけ外に出したりutil作ったりといろいろ不恰好になって困っていたけど(rewire)rewireというモジュールがとても便利 例えばこんなモジュール function initParams(input, options, callback){ if(typeof options === "function"){ callback = options; options = {}; } if(!options) options = {}; return { input : input, options : options, callback : callback } } module.exports = function(i
This summer I had the opportunity to attend NodeConf and it was a fantastic experience. I really appreciated how every session was a hands-on coding session: I felt like I walked away knowing how to put a bunch of advice directly into practice. One of my favorite sessions was the one run by James Halliday and Max Ogden exploring Node streams. Specifically they sat us down and had us run through th
Sails's default port is 1337, so if you visit http://localhost:1337 you should get the Sails default index.html page. Now, let's have a look at what Sails generated for us. In our myNewProject folder the following files and sub-folders were created: The assets Folder The assets folder contains subdirectories for the Javascript and CSS files that should be loaded during runtime. This is the best pl
だいたいこの記事のまんまですが大雑把な訳記事だと思ってください。 こんなファイル(app.js)があったとする。 //app.js exports.testableMethod = function () { complicatedMethod(untestableMethod); }; var untestableMethod = function (a, b) { return (a + b); }; testableMethodはexportsされてるのでテストできますね(まぁ参照エラーでるけど) こういう時untestableMethodのテストって結構至難の業でexportsされてるメソッド経由でテストしてたり、テスト用に var local ; exports.test = local = {}; local.privateMethodA = fucntion () {}; と
Testaclarの後継?ことKarmaを使ってみたのでメモ。 ※ 現在のカバレッジ取得は karma で テストしながらカバレッジを取る - tetsunosukeのnotebook を参考にしてください。 Karma(元Testacular)を使って簡単にテストを実行しよう をほぼ参考にしました。 node.js をインストールしているマシンで c:\> npm install適切なフォルダで c:\work> karma initするといろいろ聞かれる。 テストフレームワークはJasmineを使うことにする。 Which testing framework do you want to use ? Press tab to list possible options. Enter to move to the next question. > jasmine Do you want
FirefoxのJavaScriptではバージョンを1.7以上に指定するとyieldが使えて非同期処理を同期っぽく書くことができるようになる。 適当な例だけどこんな感じ。 function run(f) { var g = f(function(x) { g.send(x) }); g.next(); } run(function(next) { var result = []; result.push('foo'); // ここで1秒待つ yield setTimeout(function() { result.push('bar'); next(); }, 1000); // ここで1秒待つ var baz = yield setTimeout(function() { // nextの引数がyieldの返り値になる next('baz'); }, 1000); result.push
Karmaとは 昨年、Googleがnode.jsベースのJavaScriptテストランナー、「Testacular」をオープンソース化しました。 このツールは元々AngularJSのためのテストフレームワークとして作られたそうで、 クライアントサイドのJavascriptコードのテストを簡単に実行することができます。 このツール自体はテストランナーで、JasmineやMochaなどのテストフレームワークを使用してテストを行います。 先日このプロジェクトの名前が変更され、「Karma」という名前になりました。 今回はKarmaのインストールからテスト実行(+ Gruntでの実行)までをおこなってみます。 環境構築方法 今回使用した動作環境は以下のとおりです。 OS : MacOS X 10.7.4 Node.js : v0.10.0 npm : 1.2.14 Grunt : 0.4 npm
UglifyJSとは 高機能なJavaScript用の圧縮・最適化ツールです。 コンソール上でコマンドとして実行することもできますし、apiを呼び出してjs内で使用することもできます。 環境構築方法 今回使用した動作環境は以下のとおりです。 OS : MacOS X 10.7.4 Node.js : v0.8.15 npm : 1.1.66 npmを使用してUglifyJSをインストールします。 このモジュールはグローバルオプションをつけてインストールしましょう。 % npm install -g uglify-js コマンドから圧縮を実行 uglifyjsがインストールできたら、圧縮をためしてみましょう。 とりあえず簡単なjsファイルを作成します。 jsファイルでは配列を作成してそれを全部合計し、console.logで表示します。 function sum(array) { var r
HEADS UP! This article was written for an older version of node. More up-to-date information may be available elsewhere. Web syndication is a must for any Website wishing to share some entries easily to other systems. Better known under their format name like RSS) or Atom), they can be quite time consuming to generate without a module handling all their formating. Thanks to the power of Node's pac
node.js v0.8.0が出た。すぐにv0.8.1になった v0.8.0の特徴 すげぇ速くなったよ より安定したよ 子プロセス起動時の引数指定が変わったよ クラスターモジュールが最高っす ドメインモジュールが追加されたよ REPL(対話型node)が良くなったよ ビルドシステムがwafからgypになったよ いろいろ変わったな v0.8.1の特徴 V8エンジンを上げたよ。 v3.11.10.12 npmを上げたよ。 v1.1.33 いろいろ修正したよ セットアップ node.js v0.8.1のインストール手順です。 $ . .nvm/nvm.sh $ nvm install v0.8.1 $ nvm use v0.8.1 v0.8.1 $ npm -v 1.1.33 $ npm update クラスターモジュールを試す v0.8.0の目玉であるクラスターモジュールを試してみたいと思いま
cronをnode.jsで実行 指定した日時や定期的に実行したいスクリプトがある場合、UNIX系OSの場合はcronを使用することが多いとおもいます。 cronとは、スクリプトを自動実行するためのデーモンプロセスで、crontabファイルに特定の書式で記述をすることにより、 指定した日時/定期日時にプログラムを実行することができます。 今回紹介するcronモジュールは、node.jsプログラム内で任意の処理をcrontabと同じ書式を使って記述することができます。 ではモジュールのインストールからサンプル作成をやってみましょう。 環境構築 今回使用した動作環境は以下のとおりです。 OS : MacOS X 10.7.4 Node.js : v0.8.15 npm : 1.1.66 適当なディレクトリを作成し、そこでnpmを使用してインストールしましょう。 % mkdir cron % cd
MongoDB には、地理空間のインデックスが用意されていて、簡単に位置情報を操作することが出来ます。 今回は、つぶやきを HTML5 の Geolocation API から取得した位置情報とともに MongoDB に保存しておき、 現在地近くのつぶやきだけを検索して表示するという簡単なサンプルを作ってみます。 ありがたいことに、うえじゅんさんの作った Node.js + MongoDB のサンプルがあるのでこれをベースに作っていきましょう。 https://dev.classmethod.jp/server-side/node-socket-io-mongodb/ 位置情報を保存するフィールドを定義 つぶやきのモデルに位置情報の保存フィールドを定義します。 「message.coffee」 mongo = require 'mongoose' mongo.connect 'mongod
node.js を代表とする JavaScript を用いた非同期プログラミング環境においては、コーディングパターンのベストプラクティスが共有されておらず、結果として品質の低いコードが多くなるという問題があるように思います。そこで、特にエラー処理をどう書くべきか、既存のライブラリを使う方法を紹介してみることにしました。 いきなりですが、ファイルの文字数を返す関数を作ることを考えてみます。Java だと以下のような感じになるでしょうか。countChars メソッドに注目すると、エラーを例外として扱っていて、モジュラーかつ簡潔になっていることがわかります。 class FileCounter { static long countChars(String filename) throws IOException { FileInputStream is = new FileInputStre
はじめに 前回(Node.js で C++ アドオンから EventEmitter のイベントリスナを呼ぶ - 凹みTips)、C++ のネイティブモジュールから EventEmitter を利用して JavaScript 側で定義したイベントリスナを呼ぶ方法を紹介しました。ただ Node.js はシングルスレッドベースの非同期処理を行っているため、このイベントリスナを呼ぶ過程のどこかで重い処理を行うと、全体の処理がブロックされてしまいます。また、これを避けるために、子スレッドを作成して処理が終了したら JavaScript のイベントリスナを呼ぶ、としようとしても、別スレッド内から Node.js の走るスレッドの v8 の世界へ直接アクセスすることが出来ないため、イベントリスナを呼ぶことができません*1。 そこで、libeio / libev に代わって Node.js のコアとして置
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く