タグ

node.jsに関するtyruのブックマーク (71)

  • Node.js with WebAssembly

  • Node.js Performance 改善ガイド - from scratch

    Node.js Performance 改善ガイド Memory の場合 メモリリークかどうかを特定する メモリリークではない場合 CPU の場合 どこの処理に時間がかかっているのかを確認する v8 simple profiler flame graph を取得する File の場合 大きなサイズのファイルをどうしても扱う時 Network の場合 keepalive を on にする その他: 全体的にパフォーマンスを改善するためにやること JIT が効いているかを確認する clusterが使えないか検討する C++ addons vs JavaScript libraries まとめ 参考資料 Node.js Performance 改善ガイド この記事は Node.js 2 Advent Calender の 5日目の記事です。 qiita.com Node.js のパフォーマンスに

    Node.js Performance 改善ガイド - from scratch
  • http2: Introducing http/2 by jasnell · Pull Request #14239 · nodejs/node

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    http2: Introducing http/2 by jasnell · Pull Request #14239 · nodejs/node
    tyru
    tyru 2017/07/16
    Node.js の HTTP2 対応 PR
  • Node.js で発生した Hash flooding DoS とその内容について - from scratch

    Node.js のセキュリティアップデート 7/11 に Node.js のセキュリティアップデートがリリースされました。 Security updates for all active release lines, July 2017 | Node.js これには複数の脆弱性が報告されており、今回はそのうちの1つの Hash flooding DoS という脆弱性が何なのか、それに対して採用された対策が何なのかについてお話します。 Hash flooding DoS (hashdos) Denial Of Service 、つまりサービス拒否攻撃の一種です。 JavaScript のオブジェクトは内部的にハッシュテーブルとして表現されています。 図はこちらから引用 ハッシュ関数は同じkeyなら同じ値を返しますが、別なkeyなら通常は別な値になります。 ハッシュテーブルのinsert, g

    Node.js で発生した Hash flooding DoS とその内容について - from scratch
    tyru
    tyru 2017/07/16
    V8では元々ハッシュ関数の seed を乱数化して対策されていたが、JS の builtin object のセットアップを短縮するために serialize した状態で管理している。ビルドされた時点でしか乱数化されないので対策が無効になる
  • プロセスをしょうもないErrorで落とさないように頑張る

    2016/06/23 dots.主催イベント「社会人×学生」技術バトルNight!での、市原の講演資料になります

    プロセスをしょうもないErrorで落とさないように頑張る
    tyru
    tyru 2017/03/13
    unhandledRejection, uncaughtException でログ出力やっとこう
  • 2017-02-25のJS: Node v7.6.0、CoffeeScript 2.0α、Vue v2.2.0 - JSer.info

    JSer.info #320 - Node v7.6.0 がリリースされました。 node/CHANGELOG_V7.md at v7.6.0 · nodejs/node Node v7.6.0ではV8が5.5にアップデートされています。 V8 5.5ではasync/awaitがデフォルトで有効化されているため、Node v7.6.0からasync/awaitが利用できます。 V8 JavaScript Engine: V8 Release 5.5 CoffeeScript 2.0.0-alpha1 がリリースされました。 CoffeeScript 2.0.0はES2015以降の対応が中心です。 for...of、Tagged template literals、Async/awitの対応などが行われています。 また、classがES2015 classesへコンパイルできるように仕

    tyru
    tyru 2017/03/01
    “Node v7.6.0ではV8が5.5にアップデートされています。 V8 5.5ではasync/awaitがデフォルトで有効化されているため、Node v7.6.0からasync/awaitが利用できます”これまではトランスパイルしてたってこと?
  • [Nodejs] Express+Log4jsで実践的なログ出力を行う - YoheiM .NET

    こんにちは、@yoheiMuneです。 日は、Log4jsを使ったログの出力やログローテーションをExpressで行う方法をブログに書きたいと思います。 Expressで一番簡単なログファイルの作成 Expressで出力しているコンソールログを一番簡単にログファイルに保存するには、以下のコマンドで実現で来ます。 $ node app.js >> app.log こうすればコンソール出力されてる内容が、app.logというファイルに書き込まれます。 ただ、開発中はこれくらいで良いのですが、リリースして運用する為にはログファイルを分けたり、フォーマットを指定したりしたいので、 ちょっと不十分です。 そこでlog4jsというログ出力モジュールを使って、ログ出力を行いたいと思います。 Log4jsの紹介 Log4jsは、JavaLog4jJavaScriptバージョンのモジュールで、柔軟なロ

    [Nodejs] Express+Log4jsで実践的なログ出力を行う - YoheiM .NET
  • Node.jsについてのよくある誤解 - 自分の感受性くらい

    Node.jsは普及しそうに無い: ニュースの社会科学的な裏側 http://anlyznews.blogspot.com/2011/02/nodejs.html という記事があったので、もしかしたらいい感じにNode.jsについてのよくある誤解がここに網羅されてるんじゃないかと思ってエントリを書きます。決して顔真っ赤にして反論してるわけじゃないよ! で、まず 理由は簡単で、Googleがリリースしたアプリケーション・サーバーであるnode.jsが、JavaScriptとその実行エンジンを基とした構成となっており、その性能が高いからだ。 とありますが、Node.jsはGoogle製ではありません。Node.jsがベースとしているJavaScriptのV8エンジンはGoogle製(のオープンソース)ですが、Node.js自身はJoyentという会社のサポートによって作られています。メインコ

    Node.jsについてのよくある誤解 - 自分の感受性くらい
  • Node.jsで類似画像判定がしたいならJimpを使うといいかも - 人生dat落ち

    過去にphash-imageを使って類似画像判定をした記事を書きました。 Node.jsで類似画像判定がしたい - 人生dat落ち ただ、このphash-imageはlinuxのライブラリ(pHash)に依存している上、debian jessieでそのライブラリが削除されたせいで動作検証したのに利用できずにいました。 代わりに何かないかなーと探して見つけたのがjimp oliver-moran/jimp: An image processing library written entirely in JavaScript for Node, with zero external or native dependencies. 最大の特徴は依存ライブラリが一切ないことです。 画像のハッシュ値を求めたいなら、画像を読み込んでhash()を呼ぶだけ。すごく簡単。 Jimp.read('lenna

    Node.jsで類似画像判定がしたいならJimpを使うといいかも - 人生dat落ち
  • https://blog.mismithportfolio.com/web/20160326pugbegin

    https://blog.mismithportfolio.com/web/20160326pugbegin
  • 「for やめろ」またはイベントループと nextTick() - Block Rockin’ Codes

    ものすごく遅レスですが、LLDiver で @esehara さんの LT であった話。 forやめろ、あるいは「繰り返し」という呪縛から逃れるために 簡単に言うと、 1~10 までを出力する方法を複数考えるというもの。 for, while, 再帰, goto etc.. と出て、途中で終わっちゃったので結論はよくわかりませんでしたが、 Node ではどれも使わずにできるな、と思ったのでちょっと例を出してみます。 ちなみに、タイトルでネタバレしている通りイベントループの話です。 そしてよくある「イベントループとは何か」「なぜ止めてはいけないのか」「process.nextTick() とは何か」「setImmediate() と何が違うのか」 などを解説する良い例だったので、書いてるうちに実はそっちがメインの解説となりました。 サンプルの実行結果は Node v0.11.13 です。(書

    「for やめろ」またはイベントループと nextTick() - Block Rockin’ Codes
    tyru
    tyru 2017/02/18
    すっごく分かりやすい。 https://www.webprofessional.jp/node-js-best-practices-from-the-node-gurus/ に書いてあった「nextTick()は、その名とは裏腹に同じサイクル内で動作します」がよく分かった。サイクルってイベントループの話だったのか
  • setImmediate()とnextTick()なにが違うの - Qiita

    結論 どちらも処理を次のイベントループに追加する。 違いは - setImmediate(): IO処理の後 - nextTick(): IO処理の前 迷ったらsetImmediate()使っとけばいいいと思う。 参照 http://jxck.hatenablog.com/entry/for-with-eventloop これ見ればよい。 要は、I/O処理より先に呼ばれるのがnextTickで後に呼ばれるのがsetImmediate。 eventloopの効率利用を考えると先にI/0処理したいので、setImmediate()を選択しとけば間違いなさそう。

    setImmediate()とnextTick()なにが違うの - Qiita
  • JavaScriptのモジュール管理(CommonJSとかAMDとかBrowserifyとかwebpack) | tsuchikazu blog

    昨年のAdvent Calendarを眺めたり、JS周りの記事を見ていると、RequireJSとか、CommonJSとか、AMD、Browserify、webpackあたりが、同じような文脈で登場するんですが、それぞれ何を指しているのかよくわからなかったため、今更ながらまとめてみます。 前提 小規模にしかJavaScriptを使っていないWebサイトでは、jQueryを使ってDomイベントで色んな処理をして、Domに反映させる。というような処理が、ごちゃっとまとめて書くことが多いかと思います。ごちゃっととは、特にDomにしか情報を保持していない状態を指していて、イメージとしてはこのようなコードです。 $(function() { # イベントハンドラ $("#btn").on("click", function(){ $.ajax({ url: "api/resources", dataT

    JavaScriptのモジュール管理(CommonJSとかAMDとかBrowserifyとかwebpack) | tsuchikazu blog
  • Nodeにおける初のオブジェクトデータベース: Realm Node.js

    Realmではこれまでモバイルデベロッパーにフォーカスして Realm Mobile DatabaseSwift、Objective-C、JavaXamarinReact Nativeに対して開発し、オープンソースとして提供してきました。日、完全に新しい挑戦としてRealm Node.jsをリリースします。Nodeにおける初の真のオブジェクトデータベースです。日から無料で完全にオープンソースとしてリポジトリが公開され、NPMを用いて npm install --save realm を実行するだけで利用できます。 これまで何年もの間、モバイルデベロッパーのみなさまから、サーバーサイドで動作するRealmが欲しいという当にたくさんのご要望をいただいていました。長い間タスクリストに残ったままで、優先度は高くありませんでした。しかし、その状況は Realm Mobile Platf

  • Node v7 で入った WHATWG URL 実装について | blog.jxck.io

    Intro Node v7.0.0 が公開され、今回のリリースで WHATWG URL の実装が Experimental として入った。 既に標準で含まれていた url module との違いや、 URL API などについて解説する。 WHATWG URL URL は非常によく使われる、 Web において重要なフォーマットの一つだ。 ものによっては一見シンプルに見えるかもしれないが、その仕様はそれなりに大きい。 しかし、これまで DOM/JS はこれをパースする専用の API を持っていなかったため、例えば <input type=text> に入力された URL 文字列のパースは、片手間な正規表現で行われることも少なくなかった。 同様に、動的生成されるクエリやハッシュなどを URL に含める場面でも、やはり文字列操作による構築が行われてきた。 片手間な正規表現や文字列処理が、 URL

    Node v7 で入った WHATWG URL 実装について | blog.jxck.io
    tyru
    tyru 2016/10/30
    const URL = require('url').URL; const url = new URL('...');
  • Node学園 23時限目 アウトラインメモ

    Node学園 23時限目 (今回はリクルート(東京駅)でやります!) - connpassに参加してきたのメモ npm@4、npm@5 node-gakuen-201610.md npmは後方互換性を重んじている Node.jsにbundleされているので npm@2のbreaking changeについて backwards-incompatible change to the way npm run-script handled its arguments npm@3 flat directory npm@2そのまま使い続ける人もいる 大きな変更は移行の壁になるという話 npm@4 Release v4.0.0 · npm/npm npm 4は小さな変更にした prepublish が npm install 時に実行されるのは Deprecated prepublishOnly と

    Node学園 23時限目 アウトラインメモ
    tyru
    tyru 2016/10/23
    「最近のサーバサイドはMicroServiceになってきている」「クライアントサイドもMicroservicesの一つなのでは」
  • Farewell to Node.js v5, Preparing for v7

    You may have missed it but at the end of June, the Node.js project said a final farewell to version 5. There will be no more patches, critical or otherwise, for this branch. To those who have been using Node.js for some time this may seem anomalous, shouldn't major versions stick around for years? We have a plan! Last year, the core team devised a Long-term Support (LTS) and release plan to balanc

    Farewell to Node.js v5, Preparing for v7
    tyru
    tyru 2016/09/08
  • npm shrinkwrapで依存モジュールのバージョンを固定 - Qiita

    Node.jsで作られたアプリケーションをデプロイするときに、npm shrinkwrapを使って依存モジュールのバージョンまで固定した状態でインストールする方法を紹介します。 背景 npm install で依存モジュールをインストールするとき、package.json で ^1.2.3 や ~1.2.3 といったバージョン指定をしているモジュールが1つでもあると、semver に従って 1.2.5 などのより新しいバージョンがインストールされる可能性があります。 セマンティックバージョンの意味からすれば、1.2.3 が互換性のある 1.2.5 に置き換わっても同じように動作すべきですが、現実問題としてテストしたバージョンと番にデプロイされるバージョンが意図せず変わってしまうのは気持ちが悪く、依存モジュールを含めてバージョンを固定する方法を調べました。 実現方法 まずは npm ins

    npm shrinkwrapで依存モジュールのバージョンを固定 - Qiita
    tyru
    tyru 2016/07/30
    package.jsonにバージョン書かれてるんじゃ?と思ったら「package.jsonで^1.2.3や~1.2.3といったバージョン指定をしているモジュールが1つでもあると、(略)より新しいバージョンがインストールされる可能性があります」らしい
  • Vim で help が引ける npm パッケージを作った - 永遠に未完成

    色々あって node.js から Vim の help を引く必要が出てきたので、npm パッケージにしてみた。人生初 npm パッケージです。 https://www.npmjs.com/package/vimhelp https://github.com/thinca/node-vimhelp 特に必然性はなかったのだけど、せっかくなので勉強も兼ねて ES2015 で書いてみた。node.js にも依存しているので、node.js 6 以降が必須です。 このパッケージは外部プロセスとして Vim を起動して、help を引きます。なので環境に Vim が必要です。また、プラグインの help も引きたいというそれだけのために Git を使った簡易プラグインマネージャも付いてます。こちらを使う場合は Git が必要。 使い方とかは README を参照してください。 苦労した点 初めての

    Vim で help が引ける npm パッケージを作った - 永遠に未完成
    tyru
    tyru 2016/06/12
    読んで勉強させてもらった。安心の thinca 製
  • npm パッケージの unpublish に関するゴタゴタの大まかなまとめ - ヤルキデナイズド

    (最終更新:3月24日16:50ごろ) 事件の流れ kik の作者が同名の会社 KIK の弁護士特許出願代理人からパッケージ名を変更するよう要請される 作者が拒否したところ弁護士代理人は npm の運営にコンタクトする 運営が作者の許可なくパッケージを unpublish するパッケージの所有権を移し替える 作者がこれに反発し自身が所有する270あまりのパッケージをすべて unpublish する I’ve Just Liberated My Modules — Medium unpublish されたパッケージは npmjs.com からダウンロードできなくなる unpublish されたうちのひとつである left-pad に間接的に依存したパッケージが多数あったため世界中でビルドがぶっ壊れる npmjs.org tells me that left-pad is not availa

    npm パッケージの unpublish に関するゴタゴタの大まかなまとめ - ヤルキデナイズド
    tyru
    tyru 2016/03/24
    所有権移したのに unpublish できたのか。つまりユーザは誰でもモジュールの unpublish ができるってこと…?怖すぎるんですけど。/ 勘違いだった https://twitter.com/uasi/status/712987323151941632