#author("2021-12-08T03:04:55+00:00","default:admin","admin") #author("2022-06-24T07:00:43+00:00","default:admin","admin") [[Node.js:https://nodejs.org/en/]] -[[Node.js Documentation:https://nodejs.org/api/all.html]] -[[いまさら聞けないNode.js:https://knowledge.sakura.ad.jp/24148/]] -[[A Starter Guide to Building Real-time Applications with Node.js:https://livecodestream.dev/post/2020-07-11-a-starter-guide-to-building-real-time-applications-with-nodejs/]] -Yahoo --[[Node.js徹底攻略 ─ ヤフーのノウハウに学ぶ、パフォーマンス劣化やコールバック地獄との戦い方:https://employment.en-japan.com/engineerhub/entry/2019/08/08/103000]] --[[ヤフーのフロントエンドと Node.js の関係性:https://techblog.yahoo.co.jp/entry/20191120782387/]] --[[Callback を撲滅せよ:https://techblog.yahoo.co.jp/javascript/nodejs/callback-to-promise/]] -[[Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例:https://www.slideshare.net/techblogyahoo/yahoobff]] -[[YJTC18 A-6 ヤフーのNode.js:https://www.slideshare.net/techblogyahoo/yjtc18-a6-nodejs]] -[[秒間100万クエリ・8万リクエストの「グラブル」安定稼働を支える、Cygames「3つの取り組み」【デブサミ2017】:https://codezine.jp/article/detail/10044?p=2]] -[[Node.js の色々:https://utf-8.jp/public/2020/0715/owasp-hasegawa.pdf]] -[[PLAIDがNode.jsを採用し、5年間で12万行書いてわかったこと:https://tech.plaid.co.jp/plaid_loves_nodejs/]] -[[初心者向け!3分で理解するNode.jsとは何か?:https://eng-entrance.com/what-is-nodejs]] -[[Node.js を5分で大雑把に理解する - Qiita:http://qiita.com/hshimo/items/1ecb7ed1b567aacbe559]] -[[Node.jsでサーバーサイドJavascriptに挑戦:https://www.pc-koubou.jp/magazine/32604]] -[[Node.jsで作成したWebサービスをAzureで公開する:https://qiita.com/hoshimado/items/6aed10a2057fa77487b6]] -[[なぜIoT分野ではNode.jsが用いられているのでしょうか?:https://teratail.com/questions/77821]] -[[JavaScript ベスト・オブ・ザ・イヤー 2019:https://risingstars.js.org/2019/ja/]] -[[【2019年完全保存版!】Node.jsを採用して開発している企業・会社一覧:https://offers.jp/media/programming/a_1423]] *重要ポイント [#eee905a5] -[[Node.jsを触る前にこれだけは絶対に押さえておこう4選:https://qiita.com/zwirky/items/36531a44c1554a0286cf]] -[[Node.jsの実行モデルを理解するために必要な前提知識を説明していく:https://qiita.com/junjis0203/items/7d3e63253a3d291a04c6]] **イベントループ [#z9ed35de] -並行処理をマルチスレッドではなく、イベントループによって実現する -実行すべきタスクをキューに積み、これを1つずつ取り出してシングルスレッドで実行する -イベントを監視してイベントの都度、設定された処理を呼び出す -イベントループが止まると、アプリケーション全体が止まる **Single Thread [#lc6f1c32] -[[Node.jsだってmulti-thread/multi-processできるもん。:https://qiita.com/darai0512/items/568ea7d49d2c522b7c45]] **Non Blocking I/O [#w79925a7] -[[Node.jsの非同期I/Oについて調べてみた:https://engineer.recruit-lifestyle.co.jp/techblog/2019-12-13-node-async-io/]] -[[JavaScript (Node.js) の非同期処理とシングルスレッド:https://qiita.com/megmogmog1965/items/e661d0915148ef902620]] -リクエストを並行して捌ける -大量の同時接続に耐えられる -サーバリソースを効率的に利用しやすい **[[libuv:https://libuv.org/]] [#e6728f82] -[[An Introduction to libuv:https://nikhilm.github.io/uvbook/]] *処理速度 [#d44e7e4b] -[[2019年の後半。いま、高速で生産性の高い開発言語はなに?!旬の言語 C++, C#, Javascript, Python で比較してみた!:https://qiita.com/james0827/items/b69fd64a16d66cbe9327]] -[[色々な言語で計算速度を比較してみた:https://qiita.com/hanaata/items/c91788bcac2a40f1bb05]] -[[Web Framework Benchmarks:https://www.techempower.com/benchmarks/]] --[[https://www.techempower.com/benchmarks/#section=data-r17&hw=ph&test=fortune&l=gcv6kd-0&p=hweg3v-qt5t8q-d1fif4-72&w=tcd33s-2c8ef&f=0-0-jz6vk-0-0-2t4w-0-0-0]] -[[Node.jsでCPUコアをフルに使って負荷の高い処理ができるかなと思ったらできた:https://qiita.com/ovrmrw/items/316c588b8a0ba718a3e3]] -[[CPU and I/O performance diagnostics in Node.js:https://medium.com/the-node-js-collection/cpu-and-i-o-performance-diagnostics-in-node-js-e513ba433c39]] -[[Node.js and CPU profiling on production (in real-time without downtime):https://medium.com/voodoo-engineering/node-js-and-cpu-profiling-on-production-in-real-time-without-downtime-d6e62af173e2]] -[[Keeping Node.js Fast: Tools, Techniques, And Tips For Making High-Performance Node.js Servers:https://www.smashingmagazine.com/2018/06/nodejs-tools-techniques-performance-servers/]] -[[Node.jsサーバーで1万の同時接続を処理したい:https://teratail.com/questions/179143]] -[[インテル® VTune™ プロファイラー・パフォーマンス解析クックブック: 設定レシピ:https://www.isus.jp/products/vtune/vtune-cookbook-configuration-recipes/]] **他プラットフォームとの比較 [#u30aa889] -[[.NET Core vs Node.js: What Should You Choose?:https://medium.com/swlh/net-core-vs-node-js-what-should-you-choose-3d7a96cd40]] -[[Nodejs vs ASP.NET core: Which is the best for web application development:https://www.webnexs.com/blog/nodejs-vs-asp-net-core/]] -[[Node.js vs. .NET Core: 3 key considerations:https://searchapparchitecture.techtarget.com/tip/Nodejs-vs-NET-Core-3-key-considerations]] -[[ASP.NET Core vs Node.js: Which one is better for Large Scale Web Development?:https://www.samarpaninfotech.com/blog/net-core-vs-nodejs-for-enterprise-web-development/]] -[[.NET Core or Node.js? [We increased throughput by 2,000%]:https://raygun.com/blog/dotnet-vs-nodejs/]] **パフォーマンスチューニング [#v8e4428e] -[[0から始めるNode.jsパフォーマンスチューニング:https://blog.koh.dev/2020-03-04-nodejs-performance/]] -[[Node.jsのパフォーマンス最適化を阻むものの見つけ方:https://postd.cc/how-to-find-node-js-performance-optimization-killers/]] -[[「俺のNode.jsがこんなに遅いわけがない!」って時に試したいこと:https://qiita.com/DeployCat/items/1eae80c6493ec2b96c74]] -[[Node.js Performance 改善ガイド:https://yosuke-furukawa.hatenablog.com/entry/2017/12/05/125517]] -[[Node.jsのパフォーマンスチューニングのtips:https://blog.hiroppy.me/entry/2017/11/06/095943]] -[[React/Redux/Node.jsのSSR/SPAを速くする6つのチューニングポイント:https://www.atmarkit.co.jp/ait/articles/1706/08/news011.html]] **Worker Threads [#t7bbd9e5] -[[Node.js: CPU負荷で3秒かかっていた処理を「Worker Threads」で1秒に時短する:https://qiita.com/suin/items/bce351c812603d413841]] **負荷分散 [#ifbd5947] ***Clusterモジュール [#p64c8ee7] -[[Node.jsのClusterをセットアップして、処理を並列化・高速化する:https://postd.cc/setting-up-a-node-js-cluster/]] -[[【Node.js+Express】Clusterモジュールでマルチスレッド化:https://qiita.com/mkeisuke/items/76229aec7c4d513a1d2f]] -[[node.js clusterでHTTPサーバをマルチプロセス化する:https://kaworu.jpn.org/javascript/node.js_cluster%E3%81%A7HTTP%E3%82%B5%E3%83%BC%E3%83%90%E3%82%92%E3%83%9E%E3%83%AB%E3%83%81%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E5%8C%96%E3%81%99%E3%82%8B]] *インストール・設定 [#eddd5122] -[[Macにnode.jsをインストールする手順:http://qiita.com/akakuro43/items/600e7e4695588ab2958d]] -[[Node.jsとnpmのアップデート手順(Mac・nodebrew):http://www.stdio.jp/entry/node_js/update-mac-nodebrew]] -[[nodebrewで任意のバージョンのNode.jsをインストールして、そのバージョンを指定して使う:http://dev.classmethod.jp/server-side/node-js-server-side/nodebrew-install-node-js-and-specify-using-version/]] -[[nvm(Node Version Manager)を使ってNode.jsをインストールする手順:https://qiita.com/ffggss/items/94f1c4c5d311db2ec71a]] -[[Nginx を Node.js のリバースプロキシとして使う:http://dotnsf.blog.jp/archives/1058466329.html]] **Windows [#a8a46065] -[[Windows での NodeJS のインストール:https://docs.microsoft.com/ja-jp/windows/dev-environment/javascript/nodejs-on-windows]] -[[Windows 10 + Node.js + VSCode で React の開発環境を準備する:https://qiita.com/kerobot/items/febe52f8f8f126a763b9]] ***[[nodist:https://github.com/nullivex/nodist]] [#lfe1b41d] -[[releases:https://github.com/nullivex/nodist/releases]] -[[nodistでNode.jsをバージョン管理:https://qiita.com/satoyan419/items/56e0b5f35912b9374305]] -[[Nodist を使って、Node.js のバージョン管理を行う方法【 Nodist 導入編 】:https://qiita.com/Futo_Horio/items/0825aa96088c5ff0906b]] -[[【Windows10】nodistでnodeをインストール:https://qiita.com/nt_tn/items/f3193cde496399b41e51]] -[[node.js を始めるときにつまずいたことまとめ:https://qiita.com/fujimoto_d1/items/2cf5d672b2bf9299f71c]] --[[Windows10でnode/npm周りにproxy設定する備忘録:https://qiita.com/flat-8-kiki/items/f71f5375a053fab01033]] --[[コマンドプロンプトでProxyの設定をする:https://bacchi.me/windows/proxy-setting/]] --[[npm install で SSL Error になった時の対処法。:https://blog.yug1224.com/archives/563d9b67bf652a600632d01e/]] --[[プロキシがある場合のツールの設定いろいろ その2:https://penult.hatenablog.com/entry/20120817/1345218432]] -[[Nodistのインストール時PATH not updatedで失敗したとき:https://qiita.com/JDM/items/918aff03a33b7af68824]] **Chromebook [#a7c3d719] -[[ChromebookのLinux環境上にNode.jsをnvmを使って導入する:https://relativelayout.hatenablog.com/entry/2019/12/27/061526]] *コマンド [#u30b7447] **npm [#ye1674d5] -[[npm よく使うコマンドまとめ:https://qiita.com/standard-software/items/2ac49a409688733c90e7]] -[[フロントエンド開発の3ステップ(npmことはじめ):http://qiita.com/hashrock/items/15f4a4961183cfbb2658]] -[[グローバルにインストールしたnode moduleがnot foundになる時の対処:http://qiita.com/joe-re/items/12987cdeee506dea3889]] -[[npm install のオプションについて解説(--save/--save-dev):https://uiuifree.com/blog/develop/npm-install-save/]] $ npm init -このディレクトリ下は npm が管理下に置く!」宣言 -いろいろ英語で聞かれるが、とりあえず全部エンターキーを押しても問題ない -終了すると、ディレクトリ直下にpackage.jsonが作成される $ npm install [パッケージ名] -node_modulesというフォルダ下に、ライブラリが保存される $ npm install [パッケージ名] --save -package.json内に取ってきたライブラリが追記される $ npm install -g [パッケージ名] -グローバルインストール(npmのインストール場所にパッケージをインストール) -主にターミナルで利用できる便利ツールをインストールするために使用 -[[npmで入る便利ツールまとめ:https://gist.github.com/hashrock/7fdf1b937e1eb5de796d]] $ npm run [タスク名] -package.json内に書かれたシェルスクリプトを実行 -npm run だけを実行すると、現在どんなタスクがpackage.json内にあるかを一覧表示 -例:タスク build を package.json に記述 { "scripts": { "build": "browserify src/main.js > build/bundle.js" } } $ npm root -g -グローバルのnode_modulesディレクトリのパスを表示 $ npm bin -g -npmがグローバルで使用しているディレクトリを表示 $ npm start **npx [#xd17713b] -[[npxでnodeモジュールを実行する:https://qiita.com/tatakahashiap/items/1c4ab221c4993e7c4ebf]] *HTTPサーバを起動 [#o16c30a6] ***http-server利用 [#tf1a461e] -最低限の設定が必要 => [[npm startでWEBサーバを起動させる最小限のこと:https://zenn.dev/okunokentaro/articles/01ejkz0014w0bg9cx3q94rfy0b]] -[[Node.jsのhttp-serverっていうコマンドラインのウェブサーバーが便利:https://firegoby.jp/archives/5706]] -適当なフォルダを用意し、下記コマンドを実行 $ npm init -y $ npm i http-server -D -エディタで package.json を開き、scripts のところを下記のように書き換え "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "http-server -o" }, -index.html を用意 <h1>Hello</h1> -下記を実行するとブラウザに index.html が表示される $ npm start ***スクリプト作成 [#c89cc5af] -[[node.jsでサーバー構築&起動する基本手順をまとめてみた:https://pisuke-code.com/node-js-basic-way-to-build-server/]] *非同期処理 [#n7cd343d] -[[NODE.JSの役に立つお話(主にノンブロッキングIO, 非同期処理):https://kcs1959.jp/archives/5228/general/node-js%E3%81%AE%E5%BD%B9%E3%81%AB%E7%AB%8B%E3%81%A4%E3%81%8A%E8%A9%B1%E4%B8%BB%E3%81%AB%E3%83%8E%E3%83%B3%E3%83%96%E3%83%AD%E3%83%83%E3%82%AD%E3%83%B3%E3%82%B0io-%E9%9D%9E%E5%90%8C%E6%9C%9F]] -[[Callback を撲滅せよ:https://techblog.yahoo.co.jp/javascript/nodejs/callback-to-promise/]] -[[【JavaScript】非同期処理の完了をpromiseとasync/awaitで待つ方法:https://tech.playground.style/javascript/asynchronous-processing/]] *ログ出力 [#e1843139] **Log4js [#f6afbe17] -[[Node.jsでlog4jsを使ってログを出力する:https://dev.classmethod.jp/articles/node-js-log4js/]] -[[【Node.js入門】ログ(logger)の管理を効率化するlog4js-nodeの使い方まとめ!:https://www.sejuku.net/blog/82816]] **morgan [#yf1234d9] -[[morganでアクセスログを書き込みつつ、書き込み先を自前のロガーに変える #Node.js:https://progret.hatenadiary.com/entry/2020/01/08/181731]] *TypeScript [#xe2f57d0] -[[TypeScript + Node.js プロジェクトのはじめかた2020:https://qiita.com/notakaos/items/3bbd2293e2ff286d9f49]] -[[TypeScriptで始めるNode.js入門:https://ics.media/entry/4682/]] -[[Node.js & TypeScriptのプロジェクト作成:https://typescript-jp.gitbook.io/deep-dive/nodejs]] -[[TypeScript コードのコンパイル (Node.js):https://docs.microsoft.com/ja-jp/visualstudio/javascript/compile-typescript-code-npm?view=vs-2019]] -[[【TypeScriptチュートリアル】実行環境を構築しよう:https://awesome-linus.com/2019/10/09/typescript-tutorial-create-environment/]] *AMQP [#b43ac320] -[[Node.jsで習得するRabbitMQによるメッセージキューイング その2 (ACKとpersistent):https://komari.co.jp/blog/4271/]] *TCP通信 [#bf7248a4] -[[Node.js TCP client and server example:https://gist.github.com/tedmiston/5935757]] -[[How To Develop a Node.js TCP Server Application using PM2 and Nginx on Ubuntu 16.04:https://www.digitalocean.com/community/tutorials/how-to-develop-a-node-js-tcp-server-application-using-pm2-and-nginx-on-ubuntu-16-04]] -[[Socket.IO, React and Node.js: Going Real-Time:https://www.valentinog.com/blog/socket-react/]] -[[Windows + Node.js + Socket.io でチャット:http://wisteriahill.sakura.ne.jp/socketio/index.html]] *Nginx [#ncfc86cf] -[[Node.jsはそれ自体がhttpサーバのようですが、nginxやapacheサーバを使う必要はないのでしょうか?大規模でもNode.jsだけで対応できるのでしょうか?:https://jp.quora.com/Node-js%E3%81%AF%E3%81%9D%E3%82%8C%E8%87%AA%E4%BD%93%E3%81%8Chttp%E3%82%B5%E3%83%BC%E3%83%90%E3%81%AE%E3%82%88%E3%81%86%E3%81%A7%E3%81%99%E3%81%8C-nginx%E3%82%84apache%E3%82%B5%E3%83%BC%E3%83%90%E3%82%92%E4%BD%BF]] *HTTP/2 [#t2c8e5ca] -[[SSL/TLSなしのHTTPでもHTTP/2に対応してくれるWebサーバーのリバースプロキシ:https://scrapbox.io/nwtgck/SSL%2FTLS%E3%81%AA%E3%81%97%E3%81%AEHTTP%E3%81%A7%E3%82%82HTTP%2F2%E3%81%AB%E5%AF%BE%E5%BF%9C%E3%81%97%E3%81%A6%E3%81%8F%E3%82%8C%E3%82%8BWeb%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AE%E3%83%AA%E3%83%90%E3%83%BC%E3%82%B9%E3%83%97%E3%83%AD%E3%82%AD%E3%82%B7]] *Azure [#e35a9a79] -[[Node.js アプリを Azure App Service へ最適な形でデプロイする:https://blog.shibayan.jp/entry/20190807/1565161017]] *開発事例 [#o48d64b6] -[[Reactチュートリアル1:犬画像ギャラリーを作ろう:https://zenn.dev/likr/articles/6be53ca64f29aa035f07]] -[[Reactチュートリアル2:レビューサイトを作ろう:https://zenn.dev/likr/articles/react-with-heroku]] -[[Node.js, Express, sequelize, React で始めるモダン WEB アプリケーション入門(Express/sequelize編):https://qiita.com/tatsurou313/items/2ba0387806b07f442b8c]] -[[Node.js, Express, sequelize, React で始めるモダン WEB アプリケーション入門(React編):https://qiita.com/tatsurou313/items/8ebccf349e37f6185bb6]] -[[Node.js, Express, sequelize, React で始めるモダン WEB アプリケーション入門(Bootstrap番外編):https://qiita.com/tatsurou313/items/051d4af5fbe57de8d876]] -[[【React.js Node.js Express MongoDBでwebアプリ】①Node.jsAppの作成:https://makolog.xyz/mern-stack-reflectionapp/]] -[[【React.js Node.js Express MongoDBでwebアプリ】②Expressの設定とHello,World!まで:https://makolog.xyz/mern-stack-reflectionapp2/]] -[[【簡単】Express + Node.jsの環境で簡単にAPIを作成する方法:https://it-web-life.com/express_nodejs_api_env/]] -[[node.jsのAPIで画像を受け取る方法 | fetch , React:https://off.tokyo/blog/node-api-img/]] -[[Windows 10 + Node.js + VSCode で React の開発環境を準備する:https://qiita.com/kerobot/items/febe52f8f8f126a763b9]] -[[Express(Node.js)でTypeScriptを利用した開発環境構築 ~REST APIのひな形を作成する~:https://snowsystem.net/javascript/typescript/express-typescript-rest-api/]] -[[[Node.js で https をサポートする http proxy サーバを 80行で書いた:http://qiita.com/LightSpeedC/items/5c1edc2c974206c743f4]] -[[Node.jsのhttp-proxyでプロキシサーバーを作る:http://qiita.com/setouchi/items/75de9db509f20ecaf369]] -[[node.jsでシンプルなwebサーバー:http://qiita.com/_shimizu/items/094c4beace9c7a36deb1]] -[[WEB+DB PRESS vol.97のReactで作るシングルページアプリケーション入門の練習用コード:https://github.com/seriwb/spa-note]] *util.inherits [#r223cb76] -[[Node.js の継承を見てみる:http://var.blog.jp/archives/46794507.html]] -[[クラスの落とし穴3 - 継承:https://qiita.com/cocottejs/items/e75f751c7aa8a7361aab]]