タグ

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

  • 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
  • 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 した状態で管理している。ビルドされた時点でしか乱数化されないので対策が無効になる
  • 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が利用できます”これまではトランスパイルしてたってこと?
  • 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についてのよくある誤解 - 自分の感受性くらい
  • 「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学園 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の一つなのでは」
  • 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
  • chromeデベロッパーツールでjavascriptのデバッグをする -node.jsもあるでよ- - tumblr

    ソースコードリーディングとかしてると、ただコード読んでてもどうしようもなく、オブジェクトの中身や変数などを見るためにデバッグツールを使いながらでないとやっていけないことが今になって分かりました。自分でもどうしようもなくアホだと思いながら戒めのために覚書。 デバッグツールの機能 僕自身まともに触れる言語はjavascriptphpくらいなもので、どちらもeclipseのようなIDEを使わず頑なにvimを使って組んできました。phpの場合はxdebugと連携させる方法*1や、javascriptならrhinoなんかを入れてquickrunとかって方法も考えられますが、僕はある程度は知っていながらもひたすら標準のスタックトレースやalert,console.log,console.dirばかりしていたので、まずはIDEなどに搭載されている一般的なデバッグ機能を復習をかねて覚書。 ブレークポイン

    chromeデベロッパーツールでjavascriptのデバッグをする -node.jsもあるでよ- - tumblr
  • HTML5を使えばこんな芸当も。異なるブラウザウィンドウ間でボックス移動·CrossBrowse MOONGIFT

    CrossBrowseは異なるブラウザ間でのボックス移動を行うHTML5のデモ。 CrossBrowseはnode.js/JavaScript製のフリーウェア(ソースコードは公開されている)。HTML5が普及する中で様々な試みがなされている。まだレガシーなブラウザシェアが高いために実験的な要素が大きいが、それゆえに失敗を恐れずチャレンジできるのが今だ。 これでできるはずなのだが… JavaScriptを使ってWebブラウザ上で指定ブロックをドラッグしたりするデモはある。だが、異なるウィンドウ間を移動してしまうCrossBrowseのようなデモは見たことがあるだろうか。 CrossBrowseは二つのWebブラウザ間でオブジェクトを渡し合えるソフトウェアだ。デモの動画を見るとその動きがよくわかる。ウィンドウが二つ並んでいて、片方のウィンドウにあるブロックをドラッグしてウィンドウの外に持ってい

  • Node.jsに強烈に個性的な「SocketStream」が登場!:Rails Hub情報局:エンジニアライフ

    また1つ、Node.jsベースのWebアプリケーションフレームワーク「SocketStream」が登場しました。6月23日にロンドンで開催されたHacker Newsのミートアップで発表されたようです(@makoto_inoueさん、情報提供ありがとうございます!)。GitHubのレポジトリにはバージョン0.1のソースコードと、何ができるかというサンプルコードを含む長大なドキュメントが公開されています。 このSocketStreamは、単にまたNode.jsでWebアプリケーションフレームワークが1つ増えたという感じではないようです。従来のものとは、設計がドラスティックに異なっています。 まず、名前から自明なように、WebSocketを基としていて、SPA(Single Page Application)が作りやすいように設計されています。SPAとは、1ページのHTMLを読み込んだら、後

    Node.jsに強烈に個性的な「SocketStream」が登場!:Rails Hub情報局:エンジニアライフ
    tyru
    tyru 2011/06/26
    SPA(Single Page Application)って初めて聞いた。SocketStreamおもしろそう。
  • Node.jsとJasmineでJavaScriptのBDD環境 - ひげろぐ

    Jasmineでスペックを書いていく環境を整えるのにJasmine Toolなるものを試してみた。 なお最近なんだかJasmine押しですが、Jasmineしか試してないだけであり他意はありません。 2011/01/12追記 Jasmine Toolはブラウザを介するもので、普通のJasmineとやってることは変わらない。 Node.jsを使って動かすのであって、Node.jsのソースをテストするのではない。ややこしいけど。 Node.jsのモジュールのテストにはjasmine-nodeやvowsが向いていそう。 両方試してみてjasmine-nodeについては書いた。 Jasmine Tool そもそもこれはなんぞや Jasmine ToolはNode.jsで動くコマンドラインのツール。 簡単に言うとrubygemsのjasmineのNode.js版。 rubygems版との違いはRub

  • v8エンジンからSpiderMonkeyへ。Mozilla版node.js·Spidernode MOONGIFT

    Spidernodeはnode.jsのエンジンをv8からMozilla製のSpiderMonkeyに載せ変えたソフトウェア。 SpidernodeはMac OSX/Linux用のオープンソース・ソフトウェア。2010年後半くらいから一気に人気を集めているのがnode.jsだ。JavaScriptをサーバサイドで動作させることができる。番で使えるレベルかと言われると怪しいが、実験的なプロジェクトでは実際に使われ始めている。 バージョンは0.5.0-preを使っている そんなnode.jsで使われているのはv8、Google Chromeで利用されているJavaScriptエンジンになっている。そのエンジンをMozillaの開発するSpiderMonkeyに付け替えたのがSpidernodeだ。 Spidernodeはエンジンが変わっただけで、後はnode.jsのコードがそのまま動作する(J

  • 仮想パネル: JavaScriptで非同期プログラミングを乗り切る方法

    これに対して、CommonJSグループはPromiseという形でこれに答えている。これは任意の時点で、完了しているかもしれないし完了していないかもしれない、非同期に実行されるアクションの結果を表現したオブジェクトとのインターフェイスを提供する。この方法では、さまざまなコンポーネントが非同期アクションのためのpromiseを返すことができ、コンシューマは予測可能な形でそのpromiseを利用できる。また、Promiseは非同期性を支援するために構文上便利な言語レベル拡張のために利用される基エンティティを提供することもできる。 Stratified JavaScriptはこれとは別のアプローチをとっており、JavaScript言語のスーパーセットを提供することで、この問題を解決している。しかし、使う言語を切り替えられないのなら、とるべき道はシーケンシャルなコードをエミュレート可能な、柔軟なA

    仮想パネル: JavaScriptで非同期プログラミングを乗り切る方法
  • そろそろnode.jsについて一言書いておくか | KRAY Inc

    はじめに 毎年サーバーサイドJavaScriptが流行ると言ってるみなさんこんにちはダニーです。 ということで、node.jsをはじめてみました。 Twitter Streaming APIで取得したデーターをWebSocketで 接続したクライアントに出力するデモを作成したので紹介したいと思います。 今回のデモについて 今回作成したデモは node.jsのHttpClinetでTwtter Streaming APIでTwtterからデータを取得して、 node.jsのWebSocket Serverでそのデータを接続してきたWebSocket対応ブラウザに送信するということを やっています。 Twitter Streaming APIで取得できるようにする。 動かすのにhttp-basic-authが必要です。 npm install http-basic-auth streaming

    そろそろnode.jsについて一言書いておくか | KRAY Inc
  • Testing JavaScript with node.js - tokuhirom's blog

    http://d.hatena.ne.jp/gfx/20110206/1296979666 JavaScript のライブラリやアプリケーションなどを JE でテストしたりするのは、筋が悪いとかんじます。創りかけのものを創りかけのものでテストするのは、時間の無駄になりやすいからです。 最近では v8(の一ラッパーとしての node.js)やSpiderMonkey などが用意に手にはいるので、これを利用すればよろしい。CommonJS などというものもでてきており、最近ではサーバーサイドでのテストもかんたんになりつつあるだろうし ということで、mustache.js をテストするスクリプトを以下にあげる。これは node.js でテストする場合です。JavaScript で簡易的な TAP Producer を実装してみたけども、これよりちゃんとしたものを誰か node-test-simp

  • node.jsとjQueryでスクレイピングするウェブアプリの作り方

    やっぱ jQuery 便利ですよ(*´・ω・)(・ω・`*)ネー セレクタ使って jQuery でダカダカやってると、DOM とか正規表現でネチネチやるのがバカらしくなっちゃいます。 と日頃から思ってたりしてまして、サーバサイド JavaScript がメインストリームになって、jQuery でウェブアプリをコーディングできれば超ラクできるかもと期待しています。 で、先日サーバサイドJavaScriptとjQueryでスクレイピングという記事をうpったところ、やっぱ Rhino じゃなくて node.js がえーんよ(´・ω・`)というコメントを頂きましたので、node.js と jQuery でサーバサイド JavaScript スクレイピングしてみることにしました。 今回は node.js ですので、単にスクレイピングする(コマンドラインから実行する)スクリプトだけじゃなくて、スクレイ

    node.jsとjQueryでスクレイピングするウェブアプリの作り方
  • 新鮮な魚が欲しいときに知っておくと役立つ!鮮魚仕入れに関する情報を紹介します|鮮魚仕入れの秘密 2024年8月更新

    新鮮な魚が欲しいときに知っておくと役立つ情報はたくさんありますが、鮮魚を仕入れるときに重要になるのが、どの市場を通ってきた魚なのかを知ることです。 有名な市場を通っている場合は、鮮魚を仕入れることができますから、信頼できるところを通っているのかを確認するのが大切になります。 新鮮な魚を仕入れるには獲れたての鮮魚を購入できるところを利用するのも大切になりますし、保存の状態がいいところを利用するのも重要なことになるはずです。 仕入れた鮮魚を翌日べるのに最適な保存法 フィッシュグルメに注目が集まっている昨今、自宅でも毎日口にしている方が多くなりました。 とくに共働き世帯の場合は専門ストアでまとめ買いをして仕入れをするため、基は冷凍庫でストックをするものです。 もっと美味しい鮮魚を翌日にもべたい場合は、どうしたらいいのでしょうか。 簡単に鮮魚の鮮度を維持する保存方法をここでご紹介をします。

  • io.js - JavaScript I/O

    Run JavaScript EverywhereNode.js® is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts. Download Node.js (LTS)Download Node.js (LTS)Downloads Node.js v20.15.11 with long-term support. Node.js can also be installed via package managers.Want new features sooner? Get Node.js v22.5.11 instead. // server.mjs

    io.js - JavaScript I/O
  • 1