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.
最近、mocha をつかってテストを書くのが楽しくなってきました。でも、テストの数が増えてくるとローカルでの実行だけでなく、CI 環境が欲しくなりますよね。github にあげられるようなプロジェクトだったら、Travis CI も良いですが、実際に仕事で使うとなると、既存の Jenkins と組み合わせてやる必要ができてきたので、実際にやってみました。 基本的な手順は以下の通りです。 mocha でテスト結果を TAP 形式でファイルに出力する 出力したファイルを Jenkins の TAP Plugin に読み込ませる 簡単ですね。 実際にやってみた というわけで、以下のような最小構成で試してみます。 myapp |- lib | |- calc.js | |- test | |- calc.test.js | |- package.jsonここには書いていませんが、実際は git で
手作りMEAN Stack 業務アプリをAngularJS+PHP+MySQLで組んでいたのですが、JavaScriptとPHPの文法の微妙な違いのおかげでケアレスミスが多く出てきてしまいました。 そこで、フロントエンドもバックエンドもJavaScriptで統一できる、流行りのMEAN Stack(MongoDB+Express+AngularJS+Node.js)を試してみようと考えた次第です。 MEAN Stackのひな形を作るツールもいろいろあるのですが、今回は手作りで作成してみます。 WindowsとUbuntuの導入方法を挙げますが、他のOSでもほとんど同じ感じでいけると思います。 M: MongoDBのインストール・設定 言わずと知れたNoSQL界の雄です。 Windowsの場合 http://www.mongodb.org/ こちらからダウンロードしてインストールします。今回
なんか最近Twitterとか職場でも「npmの機能でそんなのあったんだ」って言われること多いので、説明していきます。 ちなみにタイトルにとりあえず10選って書いたけど、あんまりたくさん思いついてないのに、10選って書いてしまったので最後の方は微妙かもしれません。 1. npm installは npm i でも同じことができる まぁ単純なショートカットですね。isntallとかtypoしてても空気読んでくれるんですが、短いほうがいいよねってことで。 # npm installって書くのも $ npm install socket.io #npm i って書くのも同じ $ npm i socket.io # ちなみに --saveは -S, --save-devは -D にできる $ npm i socket.io -S $ npm i mocha -Dショートカット小ネタ。 2. npm
Socket.IO 1.0がリリースアウトされました。Socket.IO v1.0が出るといわれてから一年半以上経過しましたが、やっと出ました。Node.jsに関わる方であれば一度はお世話になっていると思います。今回はSocket.IO 1.0の紹介を作者であるGuillermo Rauchがしているので、それを日本語で翻訳して紹介します。 TL;DR 翻訳していたらすごく面白かったのですが、文字だらけですごく長くなってしまったので、最初と最後にまとめを載せました。興味があれば全部目を通してみてください。 モジュール分割が進み、新しくEngine.IOが作られています。これはSocket.IOのトランスポート層のプロトコルを調律する役割を担っているライブラリです。 Engine.IOが行っている処理の一つで、最初に接続できる可能性が高いXHRやJSONPで確立し、websocketにupg
Name : azu Twitter : @azu_re スライドをクリックでスタート、矢印キーでスライド移動、Escで一覧モードへ戻る
binding = { sleep: function(s) { var e = new Date().getTime() + (s * 1000); while (new Date().getTime() <= e) { /* do nothing, but burn a lot of CPU while doing so */ /* jshint noempty: false */ } }, だめですね。これCPU使いまくり。 まあ、CPUがいくら発熱してもいいよって思っても、制御が別のタスクに行かないのはアウトです。たとえばこれがサーバのリクエストハンドラに使われてたら、みんな一定秒数遅れてページ表示される、んじゃなくて、 サーバーが一定秒数止まる ことになる。つまり、そのリクエストに3人来たら、3人目は1人目の3倍待たないといけない。 もしコールバック連鎖を使ってるバックグラウンド
JavaScript (Node.js) で開発する上で避けては通れない 非同期処理、コールバックについて考えてみたい。 自分なりのお勧めの方式を書いてみた。 いろいろなものを試した結果である。 ※この記事でのお勧めの方法は ES2015 (ES6) で実装された generators (yield) の技術を使用しています。 実はまだ Babel(6to5) 等を利用するか Node.js v4~v8 でしか 実質的に使用できない技術だと思います。悪しからず。 (早く全てのブラウザに広く普及する事を祈っています) まだブラウザでは独自ライブラリか Promise (Deferred) 等を使っています。 ※2015/10/15: 記事の内容を npm aa (async-await) に対応させました。 ※2015/04/19: 記事の内容を npm co@4 に対応させました。 ※20
ちょっと前こんな記事がブクマを集めていた。 JavaScript プログラマの職種は4種類くらいに分けるべき プログラムを生業としている者としては、確かに自分の領分が拡大解釈されて仕事を押し付けられることのしんどさは凄くよく分かる。 Node.jsの登場によりサーバサイドまでもJavascriptで記述できるようになったとはいえ、実際的には考慮しなければいけない要素も記述の仕方もサーバとクライアントで全然異なるわけで、「一つの言語で全てを記述できる」とは言ってもなかなか簡単ではなかったりする。 (特にクライアントサイドはフレームワークの概念が何だか混沌としてるし) とは言え、「単一の言語でサーバからクライアントまで弄れる」ということが大きな魅力であるのも確かなわけで、機会があれば勉強してみたいなーと思ってはいた。 そこに面白い設計思想のJavascriptフレームワークMeteorが登場!
Using the same code in the browser and in the server is something that every developer dream of. The solution of that problem is known as the Holy Grail of javascript and there are different approaches to trying to get it. Probably we will be much closer to find the Grail when ECMAScript 6 modules are supported by every browser, but until that day, people try to find their ways to reuse as much as
May 14, 2014 (Updated December 18, 2014) Setting up good testing can be tricky no matter what language you’re in. JavaScript’s flexibility can make your tests powerful in terms of access, but if you’re not careful that same flexibility can leave you tearing your hair out the next day. For instance, how do you test API callbacks? How do you deal with require? Without a proper setup, whether TDD is
最近調べたnode.jsのstreamに関連した雑多な内容を、思いつくままに適当に書く。 例えば、 function* createPiGenerator() { var result = 0; for (var i = 1;; i += 4) { yield result * 4; result += 1/i - 1/(i + 2); } } こんな感じのジェネレータがあったとして、それをファイルに出力したい場合 function createPiStream() { var r = new require('stream').Readable(); r.setEncoding('UTF-8'); // バッファじゃなくてstringとして処理したい var g = createPiGenerator(); // piの計算をするジェネレータ var tid; r._read = fun
gulpでJavaScriptの結合圧縮処理 gulpでJavaScriptの圧縮処理を設定してみました。ご想像の通りuglifyJSですが@readymadegogoに教えてもらったuseminというプラグインも合わせて利用します。 gulpの使い方は「タスクランナーgulp入門」を参照してください。 まずは圧縮用のgulp-uglifyとgulp-useminをインストール。 sudo npm install gulp-uglify gulp-usemin --save-dev 今回の設定の肝はgulp-usemin。これを利用するとHTML上に直接圧縮処理の設定を記述できます。 たとえばHTMLを以下のように設定した場合、useminを実行したらscript1.jsとscript2.jsを圧縮結合したscript.min.jsというファイルを生成しHTML上のscriptの呼び出しを
gulpとnode.jsの連携 Gruntと比較してgulpがイケてるなと思うのはnode.jsつまりJavaScriptを利用してカジュアルにタスクをカスタマイズできるところです。 たとえば、昨日書いたSassをコンパイルするタスクは以下のようにnode.jsでカスタマイズするとかなり便利になった。 var gulp = require('gulp'); var sass = require('gulp-sass'); var autoprefixer = require('gulp-autoprefixer'); var fs = require('fs'); var path = require("path"); //config var root = "htdocs", config = { "path" : { "htdocs" : root, "sass" : root+"/s
CodeGrid 2周年パーティでLTしてきました。 2周年おめでとうございます!! TL;DR stubcellというjsonを返すことに特化したstubサーバーを作りました 内部的にjson5を使うことで定義ファイルにコメントを書くことができ、開発者間のコミュニケーションの補助になる grunt, gulpからstubサーバーを使うことができるため、フロントエンドタスクランナーと相性が良い 発表資料 stubcell 概要 いわゆるJSONを返すことに特化したstubサーバーです。 チームで開発する時に、APIサーバー、クライアントサイド、websocketサーバーといった感じに複数の役割を複数の人数で請け負って同時並行開発することが多く、APIのエンドポイントがなくてもクライアントサイドやwebsocketでも開発できるようにするためにstubcellを作りました*1。 また複数人で
先日、東京Node学園12限目に参加しました。そこで@jovi0608さんから紹介があったNode-v0.12に含まれる予定のPromiseを試してみました。試してみて分かったことを書いておきます。 Node-v0.12の新機能について コールバック地獄の例としてよく挙げられる下記のようなコードのようにディレクトリ間でファイル数とファイル名に差分が無いことを確認できればあとはファイルごとのループに書き換えられるような事例ではPromiseの恩恵が受けられます。 引用元:Node.jsにPromiseが再びやって来た! fs.readdir(dir1, function(...) { fs.readFile(file1, function(...) { hash.update(data); fs.readdir(dir2, function(...) { fs.readFile(file2,
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く