ブックマーク / yosuke-furukawa.hatenablog.com (15)

  • Node.js における設計ミス By Ryan Dahl - from scratch

    Ryan Dahl は Node.js の original author ですが、彼の作ったプロダクト deno に関するトークが jsconf.eu 2018 でありました。 Node.js にずっと関わってきた僕が見て非常に興奮するような話だったので、しばらくぶりにブログに書き起こすことにしました。 背景 Ryan Dahl は2009年に Node.js の話を初めて公の場に公開しました。その時の「公の場」というのが「jsconf.eu 2009」です。 www.youtube.com Video: Node.js by Ryan Dahl - JSConf.eu - 2009 この発表から Node.js が広まり、今やサーバのみならず、IoTデバイス、デスクトップアプリなど、様々なところで動作しています。 で、今回はその発表から9年の歳月が経過し、Node.jsに対しての設計不

    Node.js における設計ミス By Ryan Dahl - from scratch
    joe-re
    joe-re 2018/06/07
  • NaN === NaN が false な理由とutil.isDeepStrictEqual - from scratch

    NaN === NaN は false NaN、つまりは Not a Number 同士の同値比較が false になるのは、よく JavaScript とかで罠だと言われていますが、罠でもなんでもないです。 false が返るという仕様です。仕様の経緯を追うとすぐに『 IEEE754 という浮動小数点の標準規格で決められているから』、という理由がヒットします。 では IEEE754 ではなんで NaN == NaN を false にしようという話になったのか、というのを調べてみました。 今回はそういう歴史の話です。 IEEE754 現在のプログラミング言語の処理系の多くが採用している浮動小数点の標準規格です。 この標準規格は以下のことを定義している。 - 基形式: 二進および十進の浮動小数点数データの集合。有限な数(符号付ゼロと非正規化数を含む)、無限、特殊な「数ではない」値(NaN

    NaN === NaN が false な理由とutil.isDeepStrictEqual - from scratch
    joe-re
    joe-re 2018/01/31
  • NodeFest 2017を開校します。 - from scratch

    NodeFest 2017 を開校します。 さてさて、NodeFest 2017 を開校します。今年の学園祭の紹介をここでしておきます。 去年に引き続き今年も2Days開催します。 参加はこちらから! 1日目: nodejs.connpass.com 2日目: nodejs.connpass.com 詳細なスケジュールに関してはここを見てみてください。 nodefest.jp 1日目 最初の発表は以下のような感じです。 この時点で目玉はいくつもありますが、あえて上げるなら、 V8 の中のコアメンバーである Franziska Hinkelmann が語る V8 のディープな話、stdlibの作者が語る WebAssembly の話、 Node.js Core memberである Myles が語る 今後のNode.jsのガバナンスモデルの話、中国最大手のオンラインマーケットサイトを持つAl

    NodeFest 2017を開校します。 - from scratch
    joe-re
    joe-re 2017/10/27
  • Node v8.0 がリリースされた - from scratch

    Node v8.0 is released!!!!!! Node v7 から半年経過して次のLTS対象になる可能性が高い Node v8.0 がリリースされました。 いくつか Notable Changes を話そうかなと。ちなみに Node v8 と言うと内部で使っている JS エンジンの V8 と混同されるので、みんな Node8 とか呼んでるときが多いです。このブログの中ではまだ出たばかりとあって、 v8.0 と minor バージョン付きで紹介します。 LTS 候補 v6.x 依頼の一年ぶりの LTS 候補になります。 LTS になるのは 10月以降と予定されています。 Current から LTS になるためにはコアの成熟を待つ必要があり、リリースから半年経過させる予定です。 Notable Changes いくつか変更点をピックアップして紹介します。 npm5 util.pro

    Node v8.0 がリリースされた - from scratch
    joe-re
    joe-re 2017/06/06
  • npm v5 がリリースされた - from scratch

    npm v5 The npm Blog — v5.0.0 npm に v5 がやっとリリースされました。この npm v5 は既に明日リリース予定の Node v8 にバンドルされる予定です。 かいつまんで、機能を紹介します。 Notable Changes package-lock.json!!! faster than npm v4 no more --save option Offline mode sha512 support package-lock.json!!! npm v4 まで問題だった npm-shrinkwrap の問題 を解消するための新しい lock ファイルが生まれました。 shrinkwrap は依存ライブラリを固定するための機能です。npm v4 までは shrinkwrap で固定していましたが、新しく npm v5 になってからはshrinkwrap は

    npm v5 がリリースされた - from scratch
    joe-re
    joe-re 2017/05/31
  • util.promisify が追加された - from scratch

    Node.js のコアに util.promisify が追加された。 github.com 今回は util.promisify が持つ役割を中心に Node.js における Promise の立場についても話していけるといいと思う。 util.promisify とは 読んで字のごとく関数を Promise に変換してくれるユーティリティメソッド。 下記のような要領で変換できる。 const util = require('util'); const fs = require('fs'); const stat = util.promisify(fs.stat); stat('.').then((stats) => { console.log(stats); }).catch((error) => { console.error(error); }); async-awaitを使いたい

    util.promisify が追加された - from scratch
    joe-re
    joe-re 2017/05/10
  • socket.io が提供してくれているものは何か - from scratch

    現在開発中のシステムにリアルタイムな処理があり、そこで socket.io を使おうかなと思ってて、そういう折にタイムリーにもこの辺りの記事がタイムラインで出てきたのでメモ代わりに自分の意見を残しておく。 blog.jxck.io qiita.com socket.io が提供してくれているもの 「ブラウザとサーバ間のプロトコル」という観点で見ると socket.io は WebSocket を基として繋がらなかった時に XHR Long Polling や polling といった形式の代替手段を提供してくれるもの、という位置づけ。 一方で「ライブラリ」という観点で見ると socket.io はリアルタイムアプリケーションを作る際に必要になる処理をまとめて実装し、クライアントとサーバ間での EventEmitter として抽象化してくれているもの、という風になる。 もう少し噛み砕いて言

    socket.io が提供してくれているものは何か - from scratch
    joe-re
    joe-re 2016/08/28
  • Node.js における Promise を使った例外処理 - from scratch

    さて、 Node.js のエラーハンドリングは難しいと言われてますが、 2016年現在、つまりNodeの v4 とか v6 が主流になり、 Promise が基的な処理として採用されている状況ではどうでしょうか。ちょっと考えてみます。 一応これの補足です。 qiita.com TL;DR 未だに難しい。ただし、 Promise で改善されている。async-await や zone まで来たらかなり楽になる。 あと、 unhandledRejection が uncaughtException よりも酷いことにならないので、大分マシになっている。 Node.js のエラーハンドリングの難しさ まず JavaScript には同期と非同期のエラーハンドリングのやり方があります。前者は所謂 try-catch による方法、後者は callback を使って第一引数で実現する方法や emit(

    Node.js における Promise を使った例外処理 - from scratch
    joe-re
    joe-re 2016/07/13
  • ES Modules と Node.js について - from scratch

    書こう書こうと思いながらこのタイミングまでのがしてしまいました。 今一番 Node.js の中で hot な discussion の一つと言えるでしょう、『ES Modules が Node.js の中でどうなるか』です。 ES Modules 現況 ES2015 が発刊されてそろそろ一年です。 ES2015 にある機能は Node.js v6でも 93% 程度カバーされています。モダンブラウザでも大体が90%を超えています。しかし、 ES Modules だけはまだどのブラウザも実装しきれていません(kangax compat table は ES Modules は省かれてます)。 そもそも ECMAScript 2015 自身で定義されたのは構文だけなので、構文はともかく、どうやってモジュールを取ってくるかという Loader の部分がまだ決まりきっていません。 https://w

    ES Modules と Node.js について - from scratch
    joe-re
    joe-re 2016/05/10
    すごくわかりやすくてありがたい記事。しかし辛い話だ。。
  • Node.js v6.0 (Current) がリリースされました。 - from scratch

    さて、とうとう皆さん待望の Node.js v6.0 がリリースされました!次のLTS候補です。LTSになるのは2016年の10月からの予定です。v6 の LTS 期間は明示化されてないですが、ルールに照らし合わせれば、LTSになってから 2年半がサポート期間なので、おそらく 2019年4月まではサポートされます。 Node v6.0.0 (Current) | Node.js Node.js v6.0 の主な変更点 ES2015 support の改善 module load性能の改善 Buffer API の new Buffer() コンストラクタの廃止 (セキュリティ上の理由から) ES2015 support の改善 やっぱりこれが一番大きな変化ですね。 node.green を見てもらえればわかるかもしれませんが、 ES2015 のサポートがこれまでは 58% だったのが 96

    Node.js v6.0 (Current) がリリースされました。 - from scratch
    joe-re
    joe-re 2016/04/28
  • DeNAを卒業します - from scratch

    この週末にこの話を書こうと思っていたのですが、筆不精なもので土日を普通に過ごしてしまいました。 さて、表題の通りDeNAを卒業することになりました。 今回は技術的な話ではなく、単純にライフステージの変化の話なので気にならない人は読み飛ばしてください。 DeNAに入社したのは3年半前 yosuke-furukawa.hatenablog.com だいぶ昔の記事ですね。この時は同年代や年下の若いエンジニア達がメキメキと力をつけていく中で「なんとかしなければ」という焦燥感で常に何かしらをウォッチしつつ、新しい技術があれば飛びついて調べ、アウトプットする、というようなことをやってました。(今でもアンテナは張っているつもりです) そんな折に DeNA に誘われて入社できたのは非常にラッキーだったと思っています。新しい技術を積極的に採用しつつも、ある程度冷静かつ成熟した判断をしている部分があり、しかも

    DeNAを卒業します - from scratch
    joe-re
    joe-re 2016/04/19
  • JavaScriptの文化とleftpadの話とpadStartについて - from scratch

    無駄にラノベみたいに長いタイトル書いちゃったんですが、まぁやっぱり一言くらいは残しておくかと思ったので書きます。長いのでまとめだけでも見てもらえると良いかもしれません。 leftpadの話はかなり大事になっていて、Node.js界隈を中心としてその他のOSSをやっている全体的に話が波及しています。幾つかの記事を読みました。今回はJSの文化歴史についてちょっとずつ書いていこうかなと思います。 の虫: npmからkikとその他諸々が消されたまとめ 江添さんの話はすごくよくまとまっていて、ネタも含めた上で一番面白い話になっていました、ここで言われている下記の疑問に答えていこうと思います。 もっと憂うべきパッケージがある。isArrayだ。このパッケージは一日88万回もダウンロードされていて、2016年2月だけの一ヶ月間に1800万回もダウンロードされていて、72個ものNPMパッケージが依存し

    JavaScriptの文化とleftpadの話とpadStartについて - from scratch
    joe-re
    joe-re 2016/03/27
  • Developers Summit 2016で非同期処理について話してきました - from scratch

    だいぶ間が空いてしまったんですが、デブサミ 2016 で非同期処理について話してきました。 event.shoeisha.jp トピックとしてものすごく突出してたので成立するか不安だったのですが、なんとなく結論めいたものはでました。 詳しくは takezoe さんのブログを見て頂けると良いかと思います。 takezoe.hatenablog.com 結論みたいなもの まぁやっぱり同期処理と非同期処理は『意識して使い分けなくても言語なりフレームワークなりで吸収するようになっていくんじゃないか』というのが1つの結論のような形になった。ES.Nextの async/await はその1つの形だと思う。"意識しないで"というのは難しいが、ほとんど同期処理と変わらない形で書けるようになる。 Node.js は coreの中でも Promise を採用するように只今構想中だし、ユーザーランドの場合はP

    Developers Summit 2016で非同期処理について話してきました - from scratch
    joe-re
    joe-re 2016/02/29
    分かりやすい
  • Node.js へのcontributeの仕方 - from scratch

    qiita.com このエントリは Node.js Adventcalendar の 1 日目のエントリです。 Node.js への contribute の仕方 Node.js の contribute は敷居が高いと思っている人がいるのかあんまり日人が contribute をしているのを見ることが少ない。もっとコントリビュートする日人が多くても良いんじゃないかと思っている。 これまでの Node.js では CLA にサインが必要だったりイマイチさくっとコントリビュートができないという問題があったが、 v4 になってからの Node.js はかなりコントリビュートまでの敷居が下がっている。 にも関わらず、少ないのは日語の記事が少ないことも一つの要因だと感じているのでこれをきっかけにコントリビュートのやり方を抑えてもらって第一歩になるようにしてもらいたい。 Node.js のリポ

    Node.js へのcontributeの仕方 - from scratch
    joe-re
    joe-re 2015/12/03
    いい話
  • Node.js v5.0 がリリースされました。 - from scratch

    Node.js v5.0 がリリースされました!! 今回はどちらかと言うと機能面というより、 Node.js v5.0 の位置づけを中心に解説したいと思います。 機能面も一応載せますが、学園祭前で時間があまり作れないので、さくっと終わらせます。 機能面での変更 ES2015の文法追加 Spread operator が追加 Spread operator が追加されました。 これまで配列をJavaScriptの関数に引数に展開して渡す場合、以下のように記述する必要がありました。 function f(x, y, z) { console.log(x); console.log(y); console.log(z); } var args = [0, 1, 2]; f.apply(null, args); この書き方はあまり直感的じゃなく、また new 演算子と併用できないという問題があった

    Node.js v5.0 がリリースされました。 - from scratch
    joe-re
    joe-re 2015/11/06
  • 1