From 7781f63521b98178e2e978a8061ed21823b81010 Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Sat, 11 May 2019 21:53:25 +0900 Subject: [PATCH 01/61] translate to japanese index.md of Get involved. --- locale/ja/get-involved/index.md | 35 +++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 locale/ja/get-involved/index.md diff --git a/locale/ja/get-involved/index.md b/locale/ja/get-involved/index.md new file mode 100644 index 0000000000000..a756ff5396ac4 --- /dev/null +++ b/locale/ja/get-involved/index.md @@ -0,0 +1,35 @@ +--- +title: Get involved +layout: contribute.hbs +--- +# 参加する + +## コミュニティディスカッション + +- [GitHub issues リスト](https://github.com/nodejs/node/issues) は、Node.js のコア機能に関する議論の場です。 +- Node.js 開発についてのリアルタイムチャットは、[IRC クライアント](http://en.wikipedia.org/wiki/Comparison_of_Internet_Relay_Chat_clients) を使って `#node.js` チャンネルで `irc.freenode.net` に行くか、または [freenode's WebChat](http://webchat.freenode.net/?channels=node.js) を使ってあなたの Web ブラウザでそのチャンネルに接続してください。 +- Node.js 公式 Twitter アカウントは [nodejs](https://twitter.com/nodejs) です。 +- [Node.js Foundation calendar](https://nodejs.org/calendar) とすべての公開チームミーティング。 +- [Node.js Everywhere](https://newsletter.nodejs.org) は、公式の Node.js マンスリーニュースレターです。 +- [Node.js Collection](https://medium.com/the-node-js-collection) は、Medium 上のコミュニティキュレーションコンテンツのコレクションです。 +- [Community Committee](https://github.com/nodejs/community-committee) は、Node.js Foundation のトップレベルの委員会で、コミュニティに向けた取り組みに焦点を当てています。 + + +## 学習 + +- [公式 API リファレンスドキュメント](/api) は、Node.js API の詳細を説明しています。 +- [NodeSchool.io](http://nodeschool.io) はインタラクティブなコマンドラインゲームを介して Node.js の概念を教えます。 +- [Stack Overflow Node.js tag](http://stackoverflow.com/questions/tagged/node.js) は、毎日新しい情報を収集します。 +- [The DEV Community Node.js tag](https://dev.to/t/node) は、Node.js プロジェクト、記事、チュートリアルを共有したり、ディスカッションを開始したり、Node.js 関連のトピックについてのフィードバックを求めたりする場所です。スキルレベルに関係なくすべての開発者が参加できます。 +- [Nodeiflux](https://discordapp.com/invite/vUsrbjd) は、Discord でお互いをサポートする Node.js バックエンド開発者のフレンドリーなコミュニティです。 + +## インターナショナルコミュニティサイトとプロジェクト + +- [中国コミュニティ](http://cnodejs.org) +- [フランスの Node.js ユーザ Google+ コミュニティ](https://plus.google.com/communities/113346206415381691435) +- [ハンガリー (マジャール) コミュニティ](http://nodehun.blogspot.com/) +- [Node.js のイスラエル Facebook グループ](https://www.facebook.com/groups/node.il/) +- [日本のユーザグループ](http://nodejs.jp/) +- [Node.js のスペイン語 Facebook グループ](https://www.facebook.com/groups/node.es/) +- [スペイン語コミュニティ](http://nodehispano.com) +- [ベトナム Node.js コミュニティ](https://www.facebook.com/nodejs.vn/) From 17fd5cfb70abaa64efc1944b258aa397fa1d3180 Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Sat, 11 May 2019 22:18:12 +0900 Subject: [PATCH 02/61] translate to japanese contribute.md. --- locale/ja/get-involved/contribute.md | 47 ++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 locale/ja/get-involved/contribute.md diff --git a/locale/ja/get-involved/contribute.md b/locale/ja/get-involved/contribute.md new file mode 100644 index 0000000000000..208b02dd3e83a --- /dev/null +++ b/locale/ja/get-involved/contribute.md @@ -0,0 +1,47 @@ +--- +title: Contributing +layout: contribute.hbs +--- + +# 貢献する + +Node.js への貢献に関心をお寄せいただきありがとうございます。貢献できる方法や場所は複数ありますが、それを促進するためにここにいます。 + +## 一般的な助けを求める + +`nodejs/node` リポジトリ内のアクティビティーのレベルは非常に高いため、Node.js を使用した一般的なヘルプについての質問または要求は、[Node.js ヘルプリポジトリ](https://github.com/nodejs/help/issues)に向けられるべきです。 + +## 問題を報告する + +Node.js の問題であると思われるものが見つかった場合は、GitHub プロジェクトに問題を報告することを躊躇わないでください。問題を提出するときは、再現可能なテストケースで問題を表現できることを確認してください。そのテストケースには外部の依存関係を含めないでください。つまり、テストケースは Node.js 以外のものがなくても実行できます。 + +問題を報告する際には、お客様の環境について含めることができる情報も必要です。問題を絞り込もうとしたときにどのような情報が適切になるかわかりません。少なくとも次の情報を含めてください。 + +* Node のバージョン +* 実行しているプラットフォーム (macOS, SmartOS, Linux, Windows) +* 実行しているアーキテクチャ (32 ビットまたは 64 ビット、および x86 または ARM) + +Node.js プロジェクトは現在、いくつかの GitHub リポジトリにまたがって管理されており、それぞれに独自の issue データベースがあります。可能であれば、あなたが報告している問題を適切なレポジトリに向けていただきたいですが、間違った場所にしたとしても心配しないでください。コントリビュータのコミュニティはあなたが正しい方向を指し示すのを手伝って喜ぶでしょう。 + +* Node.js 特有の問題を報告するには、[nodejs/node](https://github.com/nodejs/node) を使用してください。 +* この Web サイト特有の問題を報告するには、[nodejs/nodejs.org](https://github.com/nodejs/nodejs.org/issues) を使用してください。 + +## コードの貢献 + +Node.js にバグを修正したり、新しい機能を追加したい場合は、必ず [Node.js コントリビューションガイドライン](https://github.com/nodejs/node/blob/master/CONTRIBUTING.md#pull-requests) を参照してください。 プロジェクトへのすべての貢献に対する既存のコラボレータによるレビュープロセスもここで説明されています。 + +どのように始めるべきか疑問に思っているなら、最初の貢献に向かってあなたを導くかもしれない [Node Todo](http://nodetodo.org/) をチェックすることができます。 + +## コラボレータになる + +コラボレータになることで、コントリビュータはプロジェクトにさらに大きな影響を与えることができます。彼らは貢献を見直すことによって問題を切り分けて他のコントリビュータを手助けすることができ、そしてプロジェクトの未来を形作ることにおいてさらに大きな役割を果たすことができます。TSC によって、Node.js リポジトリ全体にわたって重要かつ貴重な貢献をしていると識別された個人は、コントリビュータになり、プロジェクトへのコミットアクセス権を付与されることがあります。考慮される活動には、次のものの品質が含まれます (ただし、これらに限定されません)。 + +* コードのコミットとプルリクエスト +* ドキュメントのコミットとプルリクエスト +* 問題へのコメントとプルリクエスト +* Node.js Web サイトへの貢献 +* エンドユーザと初心者の貢献者に提供される支援 +* ワーキンググループへの参加 +* より広い Node.js コミュニティの他の参加 + +貴重な貢献をしている個人がコミットアクセスのために考慮されたと信じていないならば、彼らは[問題を記録する](https://github.com/nodejs/TSC/issues)か、または直接 [TSC メンバーに連絡する](https://github.com/nodejs/TSC#current-members) かもしれません。 From 8e9fe266e813d7bef10f22a4eda1040ea1bf39aa Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Sat, 11 May 2019 22:21:48 +0900 Subject: [PATCH 03/61] translate to japanese code-and-learn.md. --- locale/ja/get-involved/code-and-learn.md | 27 ++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 locale/ja/get-involved/code-and-learn.md diff --git a/locale/ja/get-involved/code-and-learn.md b/locale/ja/get-involved/code-and-learn.md new file mode 100644 index 0000000000000..a2a1da2f9a854 --- /dev/null +++ b/locale/ja/get-involved/code-and-learn.md @@ -0,0 +1,27 @@ +--- +title: Code + Learn +layout: contribute.hbs +--- + +# Code + Learn + +Code & Learn イベントを使用すると、Node.js の主な貢献で始めることができます (またはさらに進みます)。経験豊富なコントリビュータが、Node.js コアへの最初 (または2、3、4) 回目のコミットを手助けします。また、Node.js のコアソースコードの特定の領域を通じて、即席のガイド付きツアーを提供するためにも利用できます。 + +## 近日開催予定の Code + Learn イベント + +- [Saint-Petersburg, Russia on May 26](https://medium.com/piterjs/code-learn-ce20d330530f) +- Medellin, Colombia in June 21st & 22nd [NodeConfCo](https://colombia.nodeconf.com/) + +## 過去の Code + Learn イベント + +- Bangalore, India at [Node.js - Code & Learn Meetup](https://www.meetup.com/Polyglot-Languages-Runtimes-Java-JVM-nodejs-Swift/events/256057028/): November 17, 2018 +- Kilkenny, Ireland at [NodeConfEU](https://www.nodeconf.eu/): November 4, 2018 +- Vancouver, BC at [Node Interactive](https://events.linuxfoundation.org/events/node-js-interactive-2018/): October 12, 2018 +- [Oakland on April 22, 2017](https://medium.com/the-node-js-collection/code-learn-learn-how-to-contribute-to-node-js-core-8a2dbdf9be45) +- Shanghai at JSConf.CN: July 2017 +- Vancouver, BC at [Node Interactive](http://events.linuxfoundation.org/events/node-interactive): October 6, 2017 +- Kilkenny, Ireland at [NodeConfEU](http://www.nodeconf.eu/): November 5, 2017 +- Austin in December 2016 +- Tokyo in November 2016 +- Amsterdam in September 2016 +- Dublin and London in September 2015 From c2f14c2391a1ec0f6db6a1b7889e7fa34bd3780e Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Sat, 11 May 2019 22:23:36 +0900 Subject: [PATCH 04/61] translate to japanese node-events.md. --- locale/ja/get-involved/node-events.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 locale/ja/get-involved/node-events.md diff --git a/locale/ja/get-involved/node-events.md b/locale/ja/get-involved/node-events.md new file mode 100644 index 0000000000000..c12fd3d133d3c --- /dev/null +++ b/locale/ja/get-involved/node-events.md @@ -0,0 +1,25 @@ +--- +title: Node.js Events +layout: contribute.hbs +--- + +# Node.js イベント + +これは、Node.js のイベントと会議のリストです。まだ下のリストに記録されていない新しいイベントを追加する場合は、PR を送信してください。 + +## イベントを追加するときの注意事項 + +フォーマット + +- Event Name | Location | Dates + +## イベント + +### 2019 + +| Event Name | Location | Date | +| :------------------------------------------------: | :---------------------: | :------------: | +| [NodeConf Colombia](https://colombia.nodeconf.com) | Medellin, Colombia | June 21-22 | +| [NodeConf EU](https://www.nodeconf.eu/2019.html) | Lyrath Estate, Kilkenny | November 10-13 | +| [NodeSummit](https://www.nodesummit.com) | San Francisco | TBA | +| [NodeUkraine](https://nodeukraine.org.ua) | Kyiv, Ukraine | May 18 | From 78b96fe1a7f9ebb2bfad46cf0136e61966da1290 Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Sat, 11 May 2019 23:59:25 +0900 Subject: [PATCH 05/61] ranslate to japanese collab-summit.md. --- locale/ja/get-involved/collab-summit.md | 29 +++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 locale/ja/get-involved/collab-summit.md diff --git a/locale/ja/get-involved/collab-summit.md b/locale/ja/get-involved/collab-summit.md new file mode 100644 index 0000000000000..99407a5137dc4 --- /dev/null +++ b/locale/ja/get-involved/collab-summit.md @@ -0,0 +1,29 @@ +--- +title: コラボレーションサミット +layout: contribute.hbs +--- + +# コラボレーションサミット +コラボレーションサミットは、活発なコラボレーション、教育、および知識の共有で Node.js について議論するために +現在および将来のコントリビュータを集めるためのアンカンファレンスです。 +委員会と作業部会は年に2回集まり、 +重要な決断を下すと同時に、 +直接推進したいというエキサイティングな取り組みに取り組むこともできます。 + +## 誰が参加しますか? + +コラボレーションサミットにはだれもが参加できます。 +サミット期間中、リーダーたちは、彼らをワーキングセッションに招き入れる前に、 +手助けしたいグループに新たなコントリビュータを参加させる手助けをします。 + +これはコミュニティ内で何が起こっているのかを学ぶ機会であり、 +あなたが持っていて磨きをかけたいスキルに貢献することです。 + +ワーキンググループは、人々が現場に着く前に一般のコラボレータのディスカッションをし、 +その後ブレイクアウトセッションに飛び込むことができるように +人々が彼ら自身に慣れることができるようにスケジュールをまとめます。 + +コラボレーションサミットでお会いしましょう! +次回および過去のコラボレーションサミットについては [Summit レポ](https://github.com/nodejs/summit)をチェックし、 +個々の作業部会および委員会が直接話し合うことを検討しているものに関して +共有されている[問題](https://github.com/nodejs/summit/issues)を見てください。 From d0140023698c9c9028ddd3a05942a2f0519cd4c7 Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Sun, 12 May 2019 00:36:35 +0900 Subject: [PATCH 06/61] translate to japanese node-meetups.md. --- locale/ja/get-involved/node-meetups.md | 608 +++++++++++++++++++++++++ 1 file changed, 608 insertions(+) create mode 100644 locale/ja/get-involved/node-meetups.md diff --git a/locale/ja/get-involved/node-meetups.md b/locale/ja/get-involved/node-meetups.md new file mode 100644 index 0000000000000..f5e9b800ea066 --- /dev/null +++ b/locale/ja/get-involved/node-meetups.md @@ -0,0 +1,608 @@ +--- +title: Node.js ミートアップ +layout: contribute.hbs +--- + +# Node.js ミートアップ + +これは Node.js のミートアップのリストです。ローカルグループを追加したい場合は、PR を送信してください。 + +## 行動規範 + +ミートアップに CoC がない、または安全でない場所として報告された場合、このリストからは削除されます。 + +## ミートアップを追加する時の注意 + +フォーマット +- [Meetup](https://www.meetup.com/pdxnode/) +- ミートアップの頻度 +- 講演を提出するにはどうすればいいですか? <<一覧はこちら>> +- 主催者名 (あなたが提供したい場合) +- 主催者の連絡先情報 (提供したい場合) + +必要事項 +- このミートアップが CoC に従っているかどうか、PR に記載してください。 +- 確認のため CoC にリンクしてください。 +- CoC がない場合は、送信する前に CoC 付きのミートアップに更新してください。 +- PR をアルファベット順に送信してください。 + +## ミートアップ + +### アフリカ +- [Meetup](https://www.nodejs.africa) +- ミートアップの頻度 - bi-monthly +- 講演を提出するにはどうすればいいですか? [Submit to this form](https://docs.google.com/forms/d/e/1FAIpQLSe3vPkiO8ijtbP7fUhEotKefXU-fWUoDGtUSo1khmtA_7v1WQ/viewform) +- 主催者名 - Agiri Abraham +- 主催者の連絡先情報 - + +### アルゼンチン + +#### ブエノスアイレス州 + +##### ブエノスアイレス + +- [Meetup](https://www.meetup.com/banodejs/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? Write a message in the meetup page +- 主催者名 - Alejandro Oviedo +- 主催者の連絡先情報 - + +### オーストラリア + +#### Victoria + +##### メルボルン + +- [Meetup](https://www.meetup.com/NodeMelbourne/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 +- 主催者名 - Andrey Sidorov +- 主催者の連絡先情報 - + +##### シドニー + +- [Meetup](https://www.meetup.com/node-sydney/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 +- 主催者名 - James Richardson. Co-organizer: Jessica Claire +- 主催者の連絡先情報 - + +### ベルギー + +#### ブリュッセル + +##### ブリュッセル + +- [Meetup](https://www.meetup.com/Belgian-node-js-User-Group/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 +- 主催者名 - Steven Beeckman +- 主催者の連絡先情報 - + +### ブラジル + +#### サンパウロ + +- [Meetup](https://meetup.com/nodebr) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 +- 主催者名s - [Erick Wendel](https://github.com/erickwendel), [Alan Hoffmeister](https://github.com/alanhoff), [Igor França](https://github.com/horaddrim), [Icaro Caldeira](https://github.com/icarcal), [Marcus Bergamo](https://github.com/thebergamo), [Igor Halfeld](https://github.com/igorHalfeld). +- 主催者の連絡先情報 - [@erickwendel_](https://twitter.com/erickwendel_) + +##### カンピナス + +- [Meetup](https://www.meetup.com/Nodeschool-Campinas/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 +- 主催者名 - Filipe Oliveira +- 主催者の連絡先情報 - + +#### チリ + +- [Meetup](https://www.meetup.com/es-ES/NodersJS/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? Issue on Github [here](https://github.com/Noders/Meetups/issues/new) +- 主催者名 - Rodrigo Adones and Ender Bonnet +- 主催者の連絡先情報 - [Rodrigo](https://github.com/L0rdKras), [Ender](https://twitter.com/enbonnet) + +#### ミナスジェライス + +- [Meetup](https://www.meetup.com/nodebr/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 +- 主催者名 - Hugo Iuri +- 主催者の連絡先情報 - + +#### リオグランデドスル + +##### ポルトアレグレ + +- [Meetup](https://www.meetup.com/Node-js-Porto-Alegre-Meetup/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 +- 主催者名 - Henrique Schreiner +- 主催者の連絡先情報 - + +### カナダ + +#### ブリティッシュコロンビア + +##### バンクーバー + +- [Meetup](https://www.meetup.com/Node-JS-Community-Hangouts) +- ミートアップの頻度 - quarterly +- 講演を提出するにはどうすればいいですか? DM @keywordnew on twitter +- 主催者名 - Manil Chowdhury +- 主催者の連絡先情報 - + +#### オンタリオ + +##### トロント + +- [Toronto JS Meetup](http://torontojs.com/) +- ミートアップの頻度 - weekly +- 講演を提出するにはどうすればいいですか? _Contact Organizers through Slack: http://slack.torontojs.com/_ +- 主催者名 - Dann T. & Paul D. +- 主催者の連絡先情報 - _Community Slack_ + +### コロンビア + +#### アンティオキア + +##### メデリン + +- [Meetup](https://www.meetup.com/node_co/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 +- 主催者名 - Camilo Montoya +- 主催者の連絡先情報 - + +### フィンランド + +#### ウーシマー県 + +##### ヘルシンキ + +- [Meetup](https://www.meetup.com/Helsinki-Node-js/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 +- 主催者名 - Juha Lehtomaki +- 主催者の連絡先情報 - + +### フランス + +#### イル=ド=フランス + +##### パリ + +- [Meetup](https://www.meetup.com/Nodejs-Paris/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 or submit your talk on [nodejs.paris wbesite](http://nodejs.paris/meetups) +- 主催者名 - [Etienne Folio](https://twitter.com/Ornthalas), [Stanislas Ormières](https://twitter.com/laruiss), [Nicolas KOKLA](https://twitter.com/nkokla), Quentin Raynaud +- 主催者の連絡先情報 - + +### ドイツ + +#### バイエルン州 + +##### パッサウ + +- [Meetup](https://www.meetup.com/de-DE/Nodeschool-Passau/) +- ミートアップの頻度 - quarterly +- 講演を提出するにはどうすればいいですか? Email [Valentin](mailto:valentin.huber@msg.group) +- 主催者名 - Valentin Huber +- 主催者の連絡先情報 - [Email](mailto:valentin.huber@msg.group) + +##### ハンブルク + +- [Meetup](https://www.meetup.com/node-HH/) +- ミートアップの頻度 - monthly and on demand +- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 +- 主催者名 - Gregor Elke, Oliver Lorenz +- 主催者の連絡先情報 - via Meetup, via [Slack](http://bit.ly/web-hh) + +### ギリシャ + +##### アテネ + +- [Meetup](https://www.meetup.com/nodejsathens/) +- ミートアップの頻度 - every two months +- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 +- 主催者名 - [Ioannis Nikolaou](https://www.linkedin.com/in/ioannis-nikolaou/) Co-organizers - Stratoula Kalafateli, [Kostas Siabanis](https://github.com/ksiabani), Megaklis Vasilakis +- 主催者の連絡先情報 - + +### ハンガリー + +##### ブタペスト + +- [Meetup](https://www.meetup.com/nodebp/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 +- 主催者名 - Oroszi Róbert +- 主催者の連絡先情報 - + +### インド + +##### デリー + +- [Meetup](https://www.meetup.com/nodeJS-Devs/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 +- 主催者名 - Gaurav Gandhi. +- 主催者の連絡先情報 - + +#### グジャラート州 + +##### アーメダバード + +- [Meetup](https://www.meetup.com/meetup-group-iAIoTVuS/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 or write to dipesh@rapidops.com +- 主催者名 - Dipesh Patel +- 主催者の連絡先情報 - + +### インドネシア + +##### ジャカルタ + +- [Meetup](https://www.meetup.com/Node-js-Workshop/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 +- 主催者名 - Lukluk Luhuring Santoso +- 主催者の連絡先情報 - + +### アイルランド + +##### ダブリン + +- [Meetup](https://www.meetup.com/Dublin-Node-js-Meetup/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 +- 主催者名 - Sean Walsh. Co-organizer: Leanne Vaughey +- 主催者の連絡先情報 - + +- [Meetup](https://www.meetup.com/Nodeschool-Dublin-Meetup/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 +- 主催者名 - Anton Whalley +- 主催者の連絡先情報 - + +### イスラエル + +##### テルアビブ + +- [Meetup](https://www.meetup.com/NodeJS-Israel/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 or submit your talk on [Node.js-IL website](http://www.nodejsil.com/). +- 主催者名 - [Idan Dagan](https://github.com/idandagan1), [Guy Segev](https://github.com/guyguyon), [Tomer Omri](https://github.com/TomerOmri) +- 主催者の連絡先情報 - [Email](mailto:nodejsisrael8@gmail.com +) + +### メキシコ + +##### メキシコシティ + +- [Meetup](https://www.meetup.com/NodeBotsMX/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 +- 主催者名 - Saúl Buentello +- 主催者の連絡先情報 - + +### ニュージーランド + +##### オークランド + +- [Meetup](https://www.meetup.com/AucklandNodeJs/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 +- 主催者名 - George Czabania +- 主催者の連絡先情報 - + +### 南アフリカ + +##### ケープタウン + +- [Meetup](https://www.meetup.com/nodecpt/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 +- 主催者名 - Guy Bedford +- 主催者の連絡先情報 - + +### スペイン + +##### マドリッド + +- [Meetup](https://www.meetup.com/Node-js-Madrid/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 +- 主催者名 - Alex Fernández +- 主催者の連絡先情報 - + +### タイ + +##### バンコク + +- [Meetup](https://www.meetup.com/Bangkok-Node-js/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 +- 主催者名 - Dylan Jay +- 主催者の連絡先情報 - + +### トルコ + +##### イスタンブール + +- [Meetup](https://www.meetup.com/nodeschool-istanbul/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 +- 主催者名 - Arif Çakıroğlu +- 主催者の連絡先情報 - + +### アメリカ + +#### アリゾナ + +##### メサ + +- [Meetup](https://www.meetup.com/NodeAZ/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 +- 主催者名 - Chris Matthieu +- 主催者の連絡先情報 - + +#### カリフォルニア + +##### ロサンゼルス + +- [js.la](https://js.la) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? [contribute.js.la](https://contribute.js.la) +- 主催者名 - David Guttman +- 主催者の連絡先情報 - @dguttman on [slack.js.la](https://slack.js.la) + +##### アーバイン + +- [Meetup](https://www.meetup.com/Node-JS-OC/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 +- 主催者名 - Farsheed Atef +- 主催者の連絡先情報 - + +##### サンフランシスコ + +- [Meetup](https://www.meetup.com/sfnode/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? +- 主催者名 - Dan Shaw +- 主催者の連絡先情報 - + +- [Meetup](https://www.meetup.com/Node-js-Serverside-Javascripters-Club-SF/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? +- 主催者名 - Matt Pardee +- 主催者の連絡先情報 - + + +#### コロラド州 + +##### デンバー + +- [Meetup](https://www.meetup.com/Node-js-Denver-Boulder/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 +- 主催者名 - Brooks Patton +- 主催者の連絡先情報 - + +#### フロリダ + +##### ジャクソンビル + +- [Meetup](https://www.meetup.com/Jax-Node-js-UG/) +- [Website](https://www.jaxnode.com) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 +- 主催者名 - David Fekke +- 主催者の連絡先情報 - David Fekke at gmail dot com + +#### ジョージア + +##### アトランタ + +- [Meetup](https://www.meetup.com/Atlanta-Nodejs-Developers/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 +- 主催者名 - Ryan Connelly +- 主催者の連絡先情報 - + +#### イリノイ州 + +##### シカゴ + +- [Meetup](https://www.meetup.com/Chicago-Nodejs/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 or (https://airtable.com/shrTDwmMH3zsnsWOE) +- 主催者名 - Mike Hostetler, Zeke Nierenberg, & Ben Neiswander +- 主催者の連絡先情報 - + +#### インディアナ + +##### インディアナポリス + +- [Meetup](https://www.meetup.com/Node-indy/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 +- 主催者名 - Mike Seidle +- 主催者の連絡先情報 - + +#### マサチューセッツ + +##### ボストン + +- [Meetup](https://www.meetup.com/Boston-Node/) +- ミートアップの頻度 - ~monthly +- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 or post in slack workspace #\_node\_meetup (see below). +- 主催者名 - [Brian Sodano](https://github.com/codemouse) +- 主催者の連絡先情報 - [briansodano@gmail.com](mailto:briansodano@gmail.com) or [Boston JS slack workspace](https://bostonjavascript.slack.com) + +#### ミシガン州 + +##### デトロイト + +- [Meetup](https://www.meetup.com/DetNode/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 +- 主催者名 - Steve Marsh, Norman Witte and Israel V + +#### ミネソタ + +##### ミネアポリス + +- [Meetup](https://www.meetup.com/NodeMN/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 +- 主催者名 - Mike Frey +- 主催者の連絡先情報 - + +#### ニューヨーク + +##### ニューヨーク + +- [Meetup](https://www.meetup.com/nodejs/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? +- 主催者名 - Patrick Scott Co-organizer: Matt Walters. +- 主催者の連絡先情報 - + +#### ノースカロライナ州 + +##### ローリーダーラム + +- [Meetup](https://www.meetup.com/triangle-nodejs/) +- ミートアップの頻度 - quarterly +- 講演を提出するにはどうすればいいですか? Email ladyleet@nodejs.org +- 主催者名 - Tracy Lee +- 主催者の連絡先情報 - ladyleet@nodejs.org + +#### オレゴン + +##### ポートランド + +- [Meetup](http://pdxnode.org/) +- ミートアップの頻度 - Biweekly (presentation night 2nd Thursdays, hack night last Thursdays) +- 講演を提出するにはどうすればいいですか? [Submit a talk proposal](https://github.com/PDXNode/pdxnode/issues/new), or DM [@obensource](https://twitter.com/obensource) or [@MichelleJLevine](https://twitter.com/MichelleJLevine) on twitter +- 主催者名s - Ben Michel, Michelle Levine +- 主催者の連絡先情報 - Ben: benpmichel@gmail.com, Michelle: michelle@michellejl.com + +#### ペンシルバニア + +##### フィラデルフィア + +- [Meetup](https://www.meetup.com/nodejs-philly/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。: https://www.meetup.com/nodejs-philly/members/14283814/ +- 主催者名 - Leomar Durán +- 主催者の連絡先情報 - + +#### テキサス + +##### オースティン + +- [Meetup](https://www.meetup.com/ATXNodeSchool/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 +- 主催者名 - Stefan von Ellenrieder +- 主催者の連絡先情報 - + +- [Meetup](https://www.meetup.com/austinnodejs/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 +- 主催者名 - Matt Walters +- 主催者の連絡先情報 - + +##### ダラス + +- [Meetup](https://www.meetup.com/DallasNode/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 +- 主催者名 - [Cameron Steele](https://github.com/ATechAdventurer) +- 主催者の連絡先情報 - [Cam.steeleis@gmail.com](mailto:Cam.steeleis@gmail.com) + +#### ユタ州 + +##### ソルトレイクシティ + +- [Meetup](https://www.meetup.com/utahnodejs/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 +- 主催者名 - Aaron Seth Madsen +- 主催者の連絡先情報 - + + +#### ワシントン + +##### シアトル + +- [Meetup](https://www.meetup.com/Seattle-Node-js/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? +- 主催者名 - Ryan Roemer +- 主催者の連絡先情報 - + +- [Meetup](https://www.meetup.com/Seattle-NodeSchool/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 +- 主催者名 - Wil Alvarez +- 主催者の連絡先情報 - + +#### ワシントン DC + +- [Meetup](https://www.meetup.com/node-dc/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? Write to Andrew Dunkman adunkman@gmail.com +- 主催者名 - Andrew Dunkman +- 主催者の連絡先情報 - + +### 英国 + +##### ロンドン +###### LNUG +- [Meetup](https://www.meetup.com/london-nodejs/) +- [GitHub/lnug](https://github.com/lnug/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? Visit our [speakers repos](https://github.com/lnug/speakers), read the guidelines, and [submit a talk proposal as a new issue](https://github.com/lnug/speakers/issues). +- 主催者名 - Adam Davis +- 主催者の連絡先情報 - contact@lnug.org, [@lnugOrg](https://twitter.com/lnugorg) + +###### Node ワークショップ +- [Meetup](https://www.meetup.com/NodeWorkshops//) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? +- 主催者名 - Daryn Holmes +- 主催者の連絡先情報 - + +##### ケンブリッジ + +- [Meetup](https://www.meetup.com/JavaScript-Cambridge/) +- ミートアップの頻度 - monthly +- 講演を提出するにはどうすればいいですか? +- 主催者名 - Joe Parry, co-organizer Rob Moran +- 主催者の連絡先情報 - + +##### オックスフォード + +- [JSOxford](https://www.meetup.com/jsoxford/) +- ミートアップの頻度 - every 2 months +- 講演を提出するにはどうすればいいですか? [Submit Form](https://docs.google.com/forms/d/e/1FAIpQLSflx7LU44PuwlyCJj-WwlP_SlrUvxAd8uaXlY7_O65c7RLpGQ/viewform?usp=sf_link) +- 主催者名s - Marcus Noble, Seren Davies +- Organizers contact info - organisers@jsoxford.com + + +### ウクライナ + +##### キエフ + +- [Meetup](https://www.meetup.com/NodeUA/), [Old group](https://www.meetup.com/KievNodeJS/) +- ミートアップの頻度 - 1-8 times a month +- 講演を提出するにはどうすればいいですか? Contact organizer by email. +- 主催者名 - Timur Shemsedinov +- 主催者の連絡先情報 - [Email](mailto:timur.shemsedinov@gmail.com) From 1e87896c36bdceb044ea33db2c37ade792e2a4ac Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Sun, 12 May 2019 00:59:24 +0900 Subject: [PATCH 07/61] translate to japanese node-speakers.md. --- locale/ja/get-involved/node-speakers.md | 215 ++++++++++++++++++++++++ 1 file changed, 215 insertions(+) create mode 100644 locale/ja/get-involved/node-speakers.md diff --git a/locale/ja/get-involved/node-speakers.md b/locale/ja/get-involved/node-speakers.md new file mode 100644 index 0000000000000..95176d19d0da8 --- /dev/null +++ b/locale/ja/get-involved/node-speakers.md @@ -0,0 +1,215 @@ +--- +title: Node.js スピーカー +layout: contribute.hbs +--- + +# Node.js スピーカー + +これは、地元の Node.js スピーカーのリストです。自分を追加したり他の人を追加したい場合は、PR を送信してください。同様にそうする前にあなたが許可を持っていることを確認してください。 + +## 行動規範 + +誰かが悪意があると報告されたり、他の人を不快にさせたりした場合、それらはこのリストから削除される可能性があります。 + +## 説明書 + +- すべてアルファベット順に送信 + +## スピーカー + +### ブラジル 🇧🇷 + +#### ミナスジェライス + +##### ベロオリゾンテ + +###### Hugo Iuri Cordeiro + +- [GitHub](https://github.com/hugoiuri) +- [@hugoiuri](https://twitter.com/hugoiuri) +- [Linkedin](https://www.linkedin.com/in/hugoiuri) +- [Personal Website](http://www.hugoiuri.dev) + +- トピック - Node.js, テスト, クラウドコンピューティング, コミュニティ, オープンソース, JavaScript, 継続的デリバリー, デプロイ自動化 + +#### リオデジャネイロ + +##### リオデジャネイロ + +###### Glaucia Lemos + +- [GitHub](https://github.com/glaucia86) +- [@glaucia_lemos86](https://twitter.com/glaucia_lemos86) +- [Linkedin](https://www.linkedin.com/in/glaucialemos/) +- [Personal Website](https://glaucialemos.netlify.com/) + +- トピック - Node.js, Women in Tech, テスト, クラウドコンピューティング, Node.js with A.I, コミュニティ, オープンソース, JavaScript, Node.js + Bots + +#### サンパウロ + +##### サンパウロ + +###### Claudiney Junior + +- [@claudineyjr](https://twitter.com/claudineyjr) +- [Activities](https://claudineyjunior.com.br) +- [Linkedin](https://linkedin.com/in/claudiney-junior/) + +- トピック: Node.js, Docker, Swarm, Kubernetes, プログラミングロジック, ベストプラクティス, クラウドコンピューティング, IA, キャリア + +###### Erick Wendel + +- [@erickwendel_](https://twitter.com/erickwendel_) +- [Activities](https://erickwendel.com) +- [Linkedin](https://linkedin.com/in/erickwendel/) + +- トピック: Node.js, Kubernetes, Docker, サーバレス, Communities, クラウドコンピューティング. + + +###### Lucas Santos + +- [@_staticvoid](https://twitter.com/_staticvoid) +- [Personal Website](https://lsantos.me) +- [Linkedin](https://linkedin.com/in/lhs-santos) +- [Github](https://github.com/khaosdoctor) + +- トピック: Node.js, Kubernetes, Docker, サーバレス, キャリア, クラウドコンピューティング, インフラ, JavaScript, TypeScript, Code Quality + +### カナダ 🇨🇦 + +#### オンタリオ州 + +##### オタワ + +###### Michael Dawson + +- [@mhdawson](https://twitter.com/mhdawson1) +- [LinkedIn](https://www.linkedin.com/in/michael-dawson-6051282/) +- トピック - Node.js + +#### ブリティッシュコロンビア + +##### バンクーバー + +###### Manil Chowdhury + +- [@keywordnew](https://twitter.com/keywordnew) +- [LinkedIn](https://www.linkedin.com/in/manilchowdhury/) +- トピック - Node コミュニティ, オープンソース, 教育, 多様性とインクルージョン, wombats + +### ドイツ 🇩🇪 + +#### バーデン=ヴュルテンベルク + +##### カイザーシュトゥールのリーゲル + +###### Golo Roden + +- [@goloroden](https://twitter.com/goloroden) +- [Github](https://github.com/thenativeweb) +- トピック – Node.js, JavaScript, Docker, Kubernetes, CQRS, event-sourcing, DDD + +### イスラエル 🇮🇱 + +#### テルアビブ + +##### Benjamin Gruenbaum + +- [Github](https://github.com/benjamingr) +- トピック - Node.js, Promises, Node.js core, テスト, Mobx, Vue.js, Sinon + +##### Liran Tal + +- [Github](https://github.com/lirantal) +- [@liran_tal](http://twitter.com/liran_tal) +- トピック - Node.js, セキュリティ, テスト, CLIs, APIs + +### アメリカ 🇺🇸 + +#### カリフォルニア州 + +##### サンフランシスコ + +###### Atishay Jain +- [@atishay811](http://twitter.com/atishay811) +- [LinkedIn](https://linkedin.com/in/atishay) +- [Github](https://github.com/atishay) +- トピック - Node.js, ネイティブモジュール(N-API, Nan), Node.js on desktop + +###### Dan Shaw + +- [@dshaw](http://twitter.com/dshaw) +- トピック - Node.js + +###### Shruti Kapoor + +- [@shrutikapoor08](http://twitter.com/shrutikapoor08) +- トピック - Node.js + +###### Tracy Lee + +- [@ladyleet](http://twitter.com/ladyleet) +- [LinkedIn](https://linkedin.com/in/tracyslee) +- トピック - Node.js コミュニティ, Women in Tech, 多様性とインクルージョン, RxJS & Node.js + +###### Dominik Kundel +- [@dkundel](https://twitter.com/dkundel) +- [GitHub](https://github.com/dkundel) +- [dkundel.com](https://dkundel.com) +- トピック - Node.js, TypeScript, Nodebots, Web セキュリティ, Web コンポーネント + +#### フロリダ州 + +##### セントピーターズバーグ + +###### Mark Pieszak + +- [@MarkPieszak](http://twitter.com/MarkPieszak) +- [Github](https://github.com/MarkPieszak) +- トピック - Node.js, JavaScript SSR (サーバサイドレンダリング), パフォーマンス, オープンソース, コミュニティ + +###### Julián Duque + +- [@julian_duque](https://twitter.com/julian_duque) +- [GitHub](https://github.com/julianduque) +- トピック - Node.js, Debugging, パフォーマンス, ベストプラクティス, コミュニティアウトリーチ, 教育 + +#### ニューヨーク州 + +##### ニューヨークシティ + +###### Tierney Cyren + +- [@bitandbang](http://twitter.com/bitandbang) +- トピック - Node.js + +###### Joe Sepi + +- [@joe_sepi](http://twitter.com/joe_sepi) +- [LinkedIn](https://www.linkedin.com/in/joesepi/) +- トピック - Node.js, JavaScript, オープンソース, コミュニティ, リーダーシップ, Punk Rock + +#### ノースカロライナ州 + +##### ローリー + +###### Tracy Lee + +- [@ladyleet](http://twitter.com/ladyleet) +- [LinkedIn](https://linkedin.com/in/tracyslee) +- トピック - Node.js コミュニティ, Women in Tech, 多様性とインクルージョン, RxJS & Node.js + +#### オレゴン州 + +##### ポートランド + +###### Ben Michel + +- [@obensource](http://twitter.com/obensource) +- トピック - Node.js + +###### Christopher Hiller + +- [@b0neskull](https://twitter.com/b0neskull) +- トピック - Node.js, テスト, Tooling, Maintainership & OSS Sustainability + From 716c8d6a2409673016394a4a10c01ee1a6a6868c Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Sun, 12 May 2019 01:01:32 +0900 Subject: [PATCH 08/61] translate title --- locale/ja/get-involved/contribute.md | 2 +- locale/ja/get-involved/index.md | 2 +- locale/ja/get-involved/node-events.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/locale/ja/get-involved/contribute.md b/locale/ja/get-involved/contribute.md index 208b02dd3e83a..a4e38e32f087e 100644 --- a/locale/ja/get-involved/contribute.md +++ b/locale/ja/get-involved/contribute.md @@ -1,5 +1,5 @@ --- -title: Contributing +title: 貢献する layout: contribute.hbs --- diff --git a/locale/ja/get-involved/index.md b/locale/ja/get-involved/index.md index a756ff5396ac4..ec31c91b07a8b 100644 --- a/locale/ja/get-involved/index.md +++ b/locale/ja/get-involved/index.md @@ -1,5 +1,5 @@ --- -title: Get involved +title: 参加する layout: contribute.hbs --- # 参加する diff --git a/locale/ja/get-involved/node-events.md b/locale/ja/get-involved/node-events.md index c12fd3d133d3c..ccc8959123ecc 100644 --- a/locale/ja/get-involved/node-events.md +++ b/locale/ja/get-involved/node-events.md @@ -1,5 +1,5 @@ --- -title: Node.js Events +title: Node.js イベント layout: contribute.hbs --- From df0e63bbc9debb0c57f43f8852d11708f157b65d Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Sun, 12 May 2019 03:03:56 +0900 Subject: [PATCH 09/61] translate dependencies.md in Japanese. --- locale/ja/docs/meta/topics/dependencies.md | 101 +++++++++++++++++++++ locale/ja/site.json | 4 + 2 files changed, 105 insertions(+) create mode 100644 locale/ja/docs/meta/topics/dependencies.md diff --git a/locale/ja/docs/meta/topics/dependencies.md b/locale/ja/docs/meta/topics/dependencies.md new file mode 100644 index 0000000000000..1992b9536b54f --- /dev/null +++ b/locale/ja/docs/meta/topics/dependencies.md @@ -0,0 +1,101 @@ +--- +title: 依存関係 +layout: docs.hbs +--- + +# 依存関係 + +Node.js がそのように機能するために依存する依存関係がいくつかあります。 + +- [ライブラリ](#libraries) + - [V8](#v8) + - [libuv](#libuv) + - [http-parser](#http-parser) + - [c-ares](#c-ares) + - [OpenSSL](#openssl) + - [zlib](#zlib) +- [ツール](#tools) + - [npm](#npm) + - [gyp](#gyp) + - [gtest](#gtest) + +## ライブラリ + +### V8 + +V8 ライブラリは、Node.js に JavaScript エンジンを提供します。これは、Node.js が V8 C++ API を介して制御するものです。 +V8 は Chrome で使用するために Google によってメンテナンスされています。 + +- [ドキュメント](https://v8docs.nodesource.com/) + +### libuv + +もう1つの重要な依存関係は libuv です。 +これは、サポートされているすべてのプラットフォームで、ノンブロッキング I/O 操作を一貫したインターフェースに抽象化するために使用される C ライブラリです。 +ファイルシステム、DNS、ネットワーク、子プロセス、パイプ、シグナル処理、ポーリング、ストリーミングを処理するメカニズムを提供します。 +また、オペレーティングシステムレベルで非同期的に実行することができないいくつかの作業のための +作業をオフロードするためのスレッドプールも含まれています。 + +- [ドキュメント](http://docs.libuv.org/) + +### http-parser + +HTTP 解析は、http-parser という軽量の C ライブラリによって処理されます。 +システムコールや割り当てを行わないように設計されているため、 +リクエストごとのメモリ使用量は非常に小さくなっています。 + +- [ドキュメント](https://github.com/joyent/http-parser/) + +### c-ares + +一部の非同期 DNS 要求では、Node.js は c-ares というCライブラリを使用します。 +JavaScript の DNS モジュールを通して `resolve()` 関数ファミリとして公開されています。 +`lookup()` 関数は、残りのコアが使用しているもので、 +libuv でスレッド付きの`getaddrinfo(3)` 呼び出しを利用します。 +これは、c-ares が /etc/hosts、/etc/resolv.conf、および /etc/svc.conf をサポートしているが、 +mDNS のようなものはサポートしていないためです。 + +- [ドキュメント](http://c-ares.haxx.se/docs.html) + +### OpenSSL + +OpenSSL は、`tls` モジュールと`crypto` モジュールの両方で広く使用されています。 +それは現代の Web がセキュリティのために頼っている +多くの暗号機能の戦いでテストされた実装を提供します。 + +- [ドキュメント](https://www.openssl.org/docs/) + +### zlib + +高速な圧縮と解凍のために、Node.js は gzip と libpng での使用でも知られている +業界標準の zlib ライブラリに依存しています。 +Node.js は zlib を使って同期、非同期、ストリーミングの圧縮と解凍のインターフェースを作成します。 + +- [ドキュメント](http://www.zlib.net/manual.html) + +## ツール + +### npm + +Node.js はすべてモジュールであり、それに伴い高品質のパッケージマネージャが必要になります。 +この目的のために、npm が作られました。 +npm を使えば、あらゆるプログラミングエコシステムのコミュニティで作成されたパッケージの中で最大のものが選択でき、 +Node.js アプリケーションを素早く簡単に構築することができます。 + +- [ドキュメント](https://docs.npmjs.com/) + +### gyp + +ビルドシステムは、V8 からコピーされた python ベースのプロジェクトジェネレータである gyp によって処理されます。 +それは多くのプラットフォームにわたるビルドシステムで使用するためのプロジェクトファイルを生成することができます。 +Node.js の大部分 (およびその依存関係) はコンパイルが必要な言語で書かれているため、 +Node.js にはビルドシステムが必要です。 + +- [ドキュメント](https://gyp.gsrc.io/docs/UserDocumentation.md) + +### gtest + +ネイティブコードは、Chromium から入手した gtest を使用してテストできます。 +既存のノード実行可能ファイルをブートストラップする必要なしに C/C++ をテストすることができます。 + +- [ドキュメント](https://code.google.com/p/googletest/wiki/V1_7_Documentation) diff --git a/locale/ja/site.json b/locale/ja/site.json index 7a1b02f2da7d1..8dd272d25bbd0 100644 --- a/locale/ja/site.json +++ b/locale/ja/site.json @@ -93,6 +93,10 @@ "guides": { "link": "docs/guides", "text": "ガイド" + }, + "dependencies": { + "link": "docs/meta/topics/dependencies", + "text": "依存関係" } }, "getinvolved": { From 08853a6e09d8f0a7772b44b24a5cc81d4a76feac Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Sun, 12 May 2019 21:25:06 +0900 Subject: [PATCH 10/61] List translation is unnecessary. --- locale/ja/get-involved/node-meetups.md | 692 ++++++++++++------------ locale/ja/get-involved/node-speakers.md | 102 ++-- 2 files changed, 397 insertions(+), 397 deletions(-) diff --git a/locale/ja/get-involved/node-meetups.md b/locale/ja/get-involved/node-meetups.md index f5e9b800ea066..a86a267635298 100644 --- a/locale/ja/get-involved/node-meetups.md +++ b/locale/ja/get-involved/node-meetups.md @@ -26,583 +26,583 @@ layout: contribute.hbs - CoC がない場合は、送信する前に CoC 付きのミートアップに更新してください。 - PR をアルファベット順に送信してください。 -## ミートアップ +## Meetups -### アフリカ +### Africa - [Meetup](https://www.nodejs.africa) -- ミートアップの頻度 - bi-monthly -- 講演を提出するにはどうすればいいですか? [Submit to this form](https://docs.google.com/forms/d/e/1FAIpQLSe3vPkiO8ijtbP7fUhEotKefXU-fWUoDGtUSo1khmtA_7v1WQ/viewform) -- 主催者名 - Agiri Abraham -- 主催者の連絡先情報 - +- Frequency of meetups - bi-monthly +- How to submit a talk? [Submit to this form](https://docs.google.com/forms/d/e/1FAIpQLSe3vPkiO8ijtbP7fUhEotKefXU-fWUoDGtUSo1khmtA_7v1WQ/viewform) +- Organizer name - Agiri Abraham +- Organizer contact info - -### アルゼンチン +### Argentina -#### ブエノスアイレス州 +#### Buenos Aires Province -##### ブエノスアイレス +##### Buenos Aires - [Meetup](https://www.meetup.com/banodejs/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? Write a message in the meetup page -- 主催者名 - Alejandro Oviedo -- 主催者の連絡先情報 - +- Frequency of meetups - monthly +- How to submit a talk? Write a message in the meetup page +- Organizer name - Alejandro Oviedo +- Organizer contact info - -### オーストラリア +### Australia #### Victoria -##### メルボルン +##### Melbourne - [Meetup](https://www.meetup.com/NodeMelbourne/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 -- 主催者名 - Andrey Sidorov -- 主催者の連絡先情報 - +- Frequency of meetups - monthly +- How to submit a talk? Contact organizers in the meetup page. +- Organizer name - Andrey Sidorov +- Organizer contact info - -##### シドニー +##### Sydney - [Meetup](https://www.meetup.com/node-sydney/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 -- 主催者名 - James Richardson. Co-organizer: Jessica Claire -- 主催者の連絡先情報 - +- Frequency of meetups - monthly +- How to submit a talk? Contact organizers in the meetup page. +- Organizer name - James Richardson. Co-organizer: Jessica Claire +- Organizer contact info - -### ベルギー +### Belgium -#### ブリュッセル +#### Brussels -##### ブリュッセル +##### Brussels - [Meetup](https://www.meetup.com/Belgian-node-js-User-Group/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 -- 主催者名 - Steven Beeckman -- 主催者の連絡先情報 - +- Frequency of meetups - monthly +- How to submit a talk? Contact organizers in the meetup page. +- Organizer name - Steven Beeckman +- Organizer contact info - -### ブラジル +### Brazil -#### サンパウロ +#### São Paulo - [Meetup](https://meetup.com/nodebr) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 -- 主催者名s - [Erick Wendel](https://github.com/erickwendel), [Alan Hoffmeister](https://github.com/alanhoff), [Igor França](https://github.com/horaddrim), [Icaro Caldeira](https://github.com/icarcal), [Marcus Bergamo](https://github.com/thebergamo), [Igor Halfeld](https://github.com/igorHalfeld). -- 主催者の連絡先情報 - [@erickwendel_](https://twitter.com/erickwendel_) +- Frequency of meetups - monthly +- How to submit a talk? Contact organizers in the meetup page. +- Organizer names - [Erick Wendel](https://github.com/erickwendel), [Alan Hoffmeister](https://github.com/alanhoff), [Igor França](https://github.com/horaddrim), [Icaro Caldeira](https://github.com/icarcal), [Marcus Bergamo](https://github.com/thebergamo), [Igor Halfeld](https://github.com/igorHalfeld). +- Organizer contact info - [@erickwendel_](https://twitter.com/erickwendel_) -##### カンピナス +##### Campinas - [Meetup](https://www.meetup.com/Nodeschool-Campinas/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 -- 主催者名 - Filipe Oliveira -- 主催者の連絡先情報 - +- Frequency of meetups - monthly +- How to submit a talk? Contact organizers in the meetup page. +- Organizer name - Filipe Oliveira +- Organizer contact info - -#### チリ +#### Chile - [Meetup](https://www.meetup.com/es-ES/NodersJS/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? Issue on Github [here](https://github.com/Noders/Meetups/issues/new) -- 主催者名 - Rodrigo Adones and Ender Bonnet -- 主催者の連絡先情報 - [Rodrigo](https://github.com/L0rdKras), [Ender](https://twitter.com/enbonnet) +- Frequency of meetups - monthly +- How to submit a talk? Issue on Github [here](https://github.com/Noders/Meetups/issues/new) +- Organizer name - Rodrigo Adones and Ender Bonnet +- Organizer contact info - [Rodrigo](https://github.com/L0rdKras), [Ender](https://twitter.com/enbonnet) -#### ミナスジェライス +#### Minas Gerais - [Meetup](https://www.meetup.com/nodebr/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 -- 主催者名 - Hugo Iuri -- 主催者の連絡先情報 - +- Frequency of meetups - monthly +- How to submit a talk? Contact organizers in the meetup page. +- Organizer name - Hugo Iuri +- Organizer contact info - -#### リオグランデドスル +#### Rio Grande do Sul -##### ポルトアレグレ +##### Porto Alegre - [Meetup](https://www.meetup.com/Node-js-Porto-Alegre-Meetup/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 -- 主催者名 - Henrique Schreiner -- 主催者の連絡先情報 - +- Frequency of meetups - monthly +- How to submit a talk? Contact organizers in the meetup page. +- Organizer name - Henrique Schreiner +- Organizer contact info - -### カナダ +### Canada -#### ブリティッシュコロンビア +#### British Columbia -##### バンクーバー +##### Vancouver - [Meetup](https://www.meetup.com/Node-JS-Community-Hangouts) -- ミートアップの頻度 - quarterly -- 講演を提出するにはどうすればいいですか? DM @keywordnew on twitter -- 主催者名 - Manil Chowdhury -- 主催者の連絡先情報 - +- Frequency of meetups - quarterly +- How to submit a talk? DM @keywordnew on twitter +- Organizer name - Manil Chowdhury +- Organizer contact info - -#### オンタリオ +#### Ontario -##### トロント +##### Toronto - [Toronto JS Meetup](http://torontojs.com/) -- ミートアップの頻度 - weekly -- 講演を提出するにはどうすればいいですか? _Contact Organizers through Slack: http://slack.torontojs.com/_ -- 主催者名 - Dann T. & Paul D. -- 主催者の連絡先情報 - _Community Slack_ +- Frequency of meetups - weekly +- How to submit a talk? _Contact Organizers through Slack: http://slack.torontojs.com/_ +- Organizers name - Dann T. & Paul D. +- Organizer contact info - _Community Slack_ -### コロンビア +### Colombia -#### アンティオキア +#### Antioquia -##### メデリン +##### Medellín - [Meetup](https://www.meetup.com/node_co/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 -- 主催者名 - Camilo Montoya -- 主催者の連絡先情報 - +- Frequency of meetups - monthly +- How to submit a talk? Contact organizers in the meetup page. +- Organizer name - Camilo Montoya +- Organizer contact info - -### フィンランド +### Finland -#### ウーシマー県 +#### Uusimaa -##### ヘルシンキ +##### Helsinski - [Meetup](https://www.meetup.com/Helsinki-Node-js/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 -- 主催者名 - Juha Lehtomaki -- 主催者の連絡先情報 - +- Frequency of meetups - monthly +- How to submit a talk? Contact organizers in the meetup page +- Organizer name - Juha Lehtomaki +- Organizer contact info - -### フランス +### France -#### イル=ド=フランス +#### Île-de-France -##### パリ +##### Paris - [Meetup](https://www.meetup.com/Nodejs-Paris/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 or submit your talk on [nodejs.paris wbesite](http://nodejs.paris/meetups) -- 主催者名 - [Etienne Folio](https://twitter.com/Ornthalas), [Stanislas Ormières](https://twitter.com/laruiss), [Nicolas KOKLA](https://twitter.com/nkokla), Quentin Raynaud -- 主催者の連絡先情報 - +- Frequency of meetups - monthly +- How to submit a talk? Contact organizers in the meetup page or submit your talk on [nodejs.paris wbesite](http://nodejs.paris/meetups) +- Organizer name - [Etienne Folio](https://twitter.com/Ornthalas), [Stanislas Ormières](https://twitter.com/laruiss), [Nicolas KOKLA](https://twitter.com/nkokla), Quentin Raynaud +- Organizer contact info - -### ドイツ +### Germany -#### バイエルン州 +#### Bavaria -##### パッサウ +##### Passau - [Meetup](https://www.meetup.com/de-DE/Nodeschool-Passau/) -- ミートアップの頻度 - quarterly -- 講演を提出するにはどうすればいいですか? Email [Valentin](mailto:valentin.huber@msg.group) -- 主催者名 - Valentin Huber -- 主催者の連絡先情報 - [Email](mailto:valentin.huber@msg.group) +- Frequency of meetups - quarterly +- How to submit a talk? Email [Valentin](mailto:valentin.huber@msg.group) +- Organizer name - Valentin Huber +- Organizer contact info - [Email](mailto:valentin.huber@msg.group) -##### ハンブルク +##### Hamburg - [Meetup](https://www.meetup.com/node-HH/) -- ミートアップの頻度 - monthly and on demand -- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 -- 主催者名 - Gregor Elke, Oliver Lorenz -- 主催者の連絡先情報 - via Meetup, via [Slack](http://bit.ly/web-hh) +- Frequency of meetups - monthly and on demand +- How to submit a talk? Contact organizers in the meetup page. +- Organizer name - Gregor Elke, Oliver Lorenz +- Organizer contact info - via Meetup, via [Slack](http://bit.ly/web-hh) -### ギリシャ +### Greece -##### アテネ +##### Athens - [Meetup](https://www.meetup.com/nodejsathens/) -- ミートアップの頻度 - every two months -- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 -- 主催者名 - [Ioannis Nikolaou](https://www.linkedin.com/in/ioannis-nikolaou/) Co-organizers - Stratoula Kalafateli, [Kostas Siabanis](https://github.com/ksiabani), Megaklis Vasilakis -- 主催者の連絡先情報 - +- Frequency of meetups - every two months +- How to submit a talk? Contact organizers in the meetup page. +- Organizer name - [Ioannis Nikolaou](https://www.linkedin.com/in/ioannis-nikolaou/) Co-organizers - Stratoula Kalafateli, [Kostas Siabanis](https://github.com/ksiabani), Megaklis Vasilakis +- Organizer contact info - -### ハンガリー +### Hungary -##### ブタペスト +##### Budapest - [Meetup](https://www.meetup.com/nodebp/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 -- 主催者名 - Oroszi Róbert -- 主催者の連絡先情報 - +- Frequency of meetups - monthly +- How to submit a talk? Contact organizers in the meetup page. +- Organizer name - Oroszi Róbert +- Organizer contact info - -### インド +### India -##### デリー +##### Delhi - [Meetup](https://www.meetup.com/nodeJS-Devs/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 -- 主催者名 - Gaurav Gandhi. -- 主催者の連絡先情報 - +- Frequency of meetups - monthly +- How to submit a talk? Contact organizers in the meetup page. +- Organizer name - Gaurav Gandhi. +- Organizer contact info - -#### グジャラート州 +#### Gujarat -##### アーメダバード +##### Ahmedabad - [Meetup](https://www.meetup.com/meetup-group-iAIoTVuS/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 or write to dipesh@rapidops.com -- 主催者名 - Dipesh Patel -- 主催者の連絡先情報 - +- Frequency of meetups - monthly +- How to submit a talk? Contact organizers in the meetup page or write to dipesh@rapidops.com +- Organizer name - Dipesh Patel +- Organizer contact info - -### インドネシア +### Indonesia -##### ジャカルタ +##### Jakarta - [Meetup](https://www.meetup.com/Node-js-Workshop/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 -- 主催者名 - Lukluk Luhuring Santoso -- 主催者の連絡先情報 - +- Frequency of meetups - monthly +- How to submit a talk? Contact organizers in the meetup page. +- Organizer name - Lukluk Luhuring Santoso +- Organizer contact info - -### アイルランド +### Ireland -##### ダブリン +##### Dublin - [Meetup](https://www.meetup.com/Dublin-Node-js-Meetup/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 -- 主催者名 - Sean Walsh. Co-organizer: Leanne Vaughey -- 主催者の連絡先情報 - +- Frequency of meetups - monthly +- How to submit a talk? Contact organizers in the meetup page. +- Organizer name - Sean Walsh. Co-organizer: Leanne Vaughey +- Organizer contact info - - [Meetup](https://www.meetup.com/Nodeschool-Dublin-Meetup/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 -- 主催者名 - Anton Whalley -- 主催者の連絡先情報 - +- Frequency of meetups - monthly +- How to submit a talk? Contact organizers in the meetup page. +- Organizer name - Anton Whalley +- Organizer contact info - -### イスラエル +### Israel -##### テルアビブ +##### Tel Aviv - [Meetup](https://www.meetup.com/NodeJS-Israel/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 or submit your talk on [Node.js-IL website](http://www.nodejsil.com/). -- 主催者名 - [Idan Dagan](https://github.com/idandagan1), [Guy Segev](https://github.com/guyguyon), [Tomer Omri](https://github.com/TomerOmri) -- 主催者の連絡先情報 - [Email](mailto:nodejsisrael8@gmail.com +- Frequency of meetups - monthly +- How to submit a talk? Contact organizers in the meetup page or submit your talk on [Node.js-IL website](http://www.nodejsil.com/). +- Organizer name - [Idan Dagan](https://github.com/idandagan1), [Guy Segev](https://github.com/guyguyon), [Tomer Omri](https://github.com/TomerOmri) +- Organizer contact info - [Email](mailto:nodejsisrael8@gmail.com ) -### メキシコ +### Mexico -##### メキシコシティ +##### Mexico City - [Meetup](https://www.meetup.com/NodeBotsMX/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 -- 主催者名 - Saúl Buentello -- 主催者の連絡先情報 - +- Frequency of meetups - monthly +- How to submit a talk? Contact organizers in the meetup page. +- Organizer name - Saúl Buentello +- Organizer contact info - -### ニュージーランド +### New Zealand -##### オークランド +##### Auckland - [Meetup](https://www.meetup.com/AucklandNodeJs/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 -- 主催者名 - George Czabania -- 主催者の連絡先情報 - +- Frequency of meetups - monthly +- How to submit a talk? Contact organizers in the meetup page. +- Organizer name - George Czabania +- Organizer contact info - -### 南アフリカ +### South Africa -##### ケープタウン +##### Cape Town - [Meetup](https://www.meetup.com/nodecpt/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 -- 主催者名 - Guy Bedford -- 主催者の連絡先情報 - +- Frequency of meetups - monthly +- How to submit a talk? Contact organizers in the meetup page. +- Organizer name - Guy Bedford +- Organizer contact info - -### スペイン +### Spain -##### マドリッド +##### Madrid - [Meetup](https://www.meetup.com/Node-js-Madrid/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 -- 主催者名 - Alex Fernández -- 主催者の連絡先情報 - +- Frequency of meetups - monthly +- How to submit a talk? Contact organizers in the meetup page. +- Organizer name - Alex Fernández +- Organizer contact info - -### タイ +### Thailand -##### バンコク +##### Bangkok - [Meetup](https://www.meetup.com/Bangkok-Node-js/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 -- 主催者名 - Dylan Jay -- 主催者の連絡先情報 - +- Frequency of meetups - monthly +- How to submit a talk? Contact organizers in the meetup page. +- Organizer name - Dylan Jay +- Organizer contact info - -### トルコ +### Turkey -##### イスタンブール +##### Istanbul - [Meetup](https://www.meetup.com/nodeschool-istanbul/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 -- 主催者名 - Arif Çakıroğlu -- 主催者の連絡先情報 - +- Frequency of meetups - monthly +- How to submit a talk? Contact organizers in the meetup page. +- Organizer name - Arif Çakıroğlu +- Organizer contact info - -### アメリカ +### United States -#### アリゾナ +#### Arizona -##### メサ +##### Mesa - [Meetup](https://www.meetup.com/NodeAZ/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 -- 主催者名 - Chris Matthieu -- 主催者の連絡先情報 - +- Frequency of meetups - monthly +- How to submit a talk? Contact organizers in the meetup page. +- Organizer name - Chris Matthieu +- Organizer contact info - -#### カリフォルニア +#### California -##### ロサンゼルス +##### Los Angeles - [js.la](https://js.la) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? [contribute.js.la](https://contribute.js.la) -- 主催者名 - David Guttman -- 主催者の連絡先情報 - @dguttman on [slack.js.la](https://slack.js.la) +- Frequency of meetups - monthly +- How to submit a talk? [contribute.js.la](https://contribute.js.la) +- Organizer name - David Guttman +- Organizer contact info - @dguttman on [slack.js.la](https://slack.js.la) -##### アーバイン +##### Irvine - [Meetup](https://www.meetup.com/Node-JS-OC/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 -- 主催者名 - Farsheed Atef -- 主催者の連絡先情報 - +- Frequency of meetups - monthly +- How to submit a talk? Contact organizers in the meetup page. +- Organizer name - Farsheed Atef +- Organizer contact info - -##### サンフランシスコ +##### San Francisco - [Meetup](https://www.meetup.com/sfnode/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? -- 主催者名 - Dan Shaw -- 主催者の連絡先情報 - +- Frequency of meetups - monthly +- How to submit a talk? +- Organizer name - Dan Shaw +- Organizer contact info - - [Meetup](https://www.meetup.com/Node-js-Serverside-Javascripters-Club-SF/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? -- 主催者名 - Matt Pardee -- 主催者の連絡先情報 - +- Frequency of meetups - monthly +- How to submit a talk? +- Organizer name - Matt Pardee +- Organizer contact info - -#### コロラド州 +#### Colorado -##### デンバー +##### Denver - [Meetup](https://www.meetup.com/Node-js-Denver-Boulder/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 -- 主催者名 - Brooks Patton -- 主催者の連絡先情報 - +- Frequency of meetups - monthly +- How to submit a talk? Contact organizers in the meetup page +- Organizer name - Brooks Patton +- Organizer contact info - -#### フロリダ +#### Florida -##### ジャクソンビル +##### Jacksonville - [Meetup](https://www.meetup.com/Jax-Node-js-UG/) - [Website](https://www.jaxnode.com) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 -- 主催者名 - David Fekke -- 主催者の連絡先情報 - David Fekke at gmail dot com +- Frequency of meetups - monthly +- How to submit a talk? Contact organizers in the meetup page. +- Organizer name - David Fekke +- Organizer contact info - David Fekke at gmail dot com -#### ジョージア +#### Georgia -##### アトランタ +##### Atlanta - [Meetup](https://www.meetup.com/Atlanta-Nodejs-Developers/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 -- 主催者名 - Ryan Connelly -- 主催者の連絡先情報 - +- Frequency of meetups - monthly +- How to submit a talk? Contact organizers in the meetup page. +- Organizer name - Ryan Connelly +- Organizer contact info - -#### イリノイ州 +#### Illinois -##### シカゴ +##### Chicago - [Meetup](https://www.meetup.com/Chicago-Nodejs/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 or (https://airtable.com/shrTDwmMH3zsnsWOE) -- 主催者名 - Mike Hostetler, Zeke Nierenberg, & Ben Neiswander -- 主催者の連絡先情報 - +- Frequency of meetups - monthly +- How to submit a talk? Contact organizers in the meetup page or (https://airtable.com/shrTDwmMH3zsnsWOE) +- Organizer name - Mike Hostetler, Zeke Nierenberg, & Ben Neiswander +- Organizer contact info - -#### インディアナ +#### Indiana -##### インディアナポリス +##### Indianapolis - [Meetup](https://www.meetup.com/Node-indy/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 -- 主催者名 - Mike Seidle -- 主催者の連絡先情報 - +- Frequency of meetups - monthly +- How to submit a talk? Contact organizers in the meetup page. +- Organizer name - Mike Seidle +- Organizer contact info - -#### マサチューセッツ +#### Massachusetts -##### ボストン +##### Boston - [Meetup](https://www.meetup.com/Boston-Node/) -- ミートアップの頻度 - ~monthly -- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 or post in slack workspace #\_node\_meetup (see below). -- 主催者名 - [Brian Sodano](https://github.com/codemouse) -- 主催者の連絡先情報 - [briansodano@gmail.com](mailto:briansodano@gmail.com) or [Boston JS slack workspace](https://bostonjavascript.slack.com) +- Frequency of meetups - ~monthly +- How to submit a talk? Contact organizers in the meetup page or post in slack workspace #\_node\_meetup (see below). +- Organizer name - [Brian Sodano](https://github.com/codemouse) +- Organizer contact info - [briansodano@gmail.com](mailto:briansodano@gmail.com) or [Boston JS slack workspace](https://bostonjavascript.slack.com) -#### ミシガン州 +#### Michigan -##### デトロイト +##### Detroit - [Meetup](https://www.meetup.com/DetNode/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 -- 主催者名 - Steve Marsh, Norman Witte and Israel V +- Frequency of meetups - monthly +- How to submit a talk? Contact organizers in the meetup page. +- Organizer name - Steve Marsh, Norman Witte and Israel V -#### ミネソタ +#### Minnesota -##### ミネアポリス +##### Minneapolis - [Meetup](https://www.meetup.com/NodeMN/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 -- 主催者名 - Mike Frey -- 主催者の連絡先情報 - +- Frequency of meetups - monthly +- How to submit a talk? Contact organizers in the meetup page. +- Organizer name - Mike Frey +- Organizer contact info - -#### ニューヨーク +#### New York -##### ニューヨーク +##### New York - [Meetup](https://www.meetup.com/nodejs/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? -- 主催者名 - Patrick Scott Co-organizer: Matt Walters. -- 主催者の連絡先情報 - +- Frequency of meetups - monthly +- How to submit a talk? +- Organizer name - Patrick Scott Co-organizer: Matt Walters. +- Organizer contact info - -#### ノースカロライナ州 +#### North Carolina -##### ローリーダーラム +##### Raleigh Durham - [Meetup](https://www.meetup.com/triangle-nodejs/) -- ミートアップの頻度 - quarterly -- 講演を提出するにはどうすればいいですか? Email ladyleet@nodejs.org -- 主催者名 - Tracy Lee -- 主催者の連絡先情報 - ladyleet@nodejs.org +- Frequency of meetups - quarterly +- How to submit a talk? Email ladyleet@nodejs.org +- Organizer name - Tracy Lee +- Organizer contact info - ladyleet@nodejs.org -#### オレゴン +#### Oregon -##### ポートランド +##### Portland - [Meetup](http://pdxnode.org/) -- ミートアップの頻度 - Biweekly (presentation night 2nd Thursdays, hack night last Thursdays) -- 講演を提出するにはどうすればいいですか? [Submit a talk proposal](https://github.com/PDXNode/pdxnode/issues/new), or DM [@obensource](https://twitter.com/obensource) or [@MichelleJLevine](https://twitter.com/MichelleJLevine) on twitter -- 主催者名s - Ben Michel, Michelle Levine -- 主催者の連絡先情報 - Ben: benpmichel@gmail.com, Michelle: michelle@michellejl.com +- Frequency of meetups - Biweekly (presentation night 2nd Thursdays, hack night last Thursdays) +- How to submit a talk? [Submit a talk proposal](https://github.com/PDXNode/pdxnode/issues/new), or DM [@obensource](https://twitter.com/obensource) or [@MichelleJLevine](https://twitter.com/MichelleJLevine) on twitter +- Organizer names - Ben Michel, Michelle Levine +- Organizer contact info - Ben: benpmichel@gmail.com, Michelle: michelle@michellejl.com -#### ペンシルバニア +#### Pennsylvania -##### フィラデルフィア +##### Philadelphia - [Meetup](https://www.meetup.com/nodejs-philly/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。: https://www.meetup.com/nodejs-philly/members/14283814/ -- 主催者名 - Leomar Durán -- 主催者の連絡先情報 - +- Frequency of meetups - monthly +- How to submit a talk? Contact organizers in the meetup page: https://www.meetup.com/nodejs-philly/members/14283814/ +- Organizer name - Leomar Durán +- Organizer contact info - -#### テキサス +#### Texas -##### オースティン +##### Austin - [Meetup](https://www.meetup.com/ATXNodeSchool/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 -- 主催者名 - Stefan von Ellenrieder -- 主催者の連絡先情報 - +- Frequency of meetups - monthly +- How to submit a talk? Contact organizers in the meetup page. +- Organizer name - Stefan von Ellenrieder +- Organizer contact info - - [Meetup](https://www.meetup.com/austinnodejs/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 -- 主催者名 - Matt Walters -- 主催者の連絡先情報 - +- Frequency of meetups - monthly +- How to submit a talk? Contact organizers in the meetup page. +- Organizer name - Matt Walters +- Organizer contact info - -##### ダラス +##### Dallas - [Meetup](https://www.meetup.com/DallasNode/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 -- 主催者名 - [Cameron Steele](https://github.com/ATechAdventurer) -- 主催者の連絡先情報 - [Cam.steeleis@gmail.com](mailto:Cam.steeleis@gmail.com) +- Frequency of meetups - monthly +- How to submit a talk? Contact organizers in the meetup page. +- Organizer name - [Cameron Steele](https://github.com/ATechAdventurer) +- Organizer contact info - [Cam.steeleis@gmail.com](mailto:Cam.steeleis@gmail.com) -#### ユタ州 +#### Utah -##### ソルトレイクシティ +##### Salt Lake City - [Meetup](https://www.meetup.com/utahnodejs/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 -- 主催者名 - Aaron Seth Madsen -- 主催者の連絡先情報 - +- Frequency of meetups - monthly +- How to submit a talk? Contact organizers in the meetup page. +- Organizer name - Aaron Seth Madsen +- Organizer contact info - -#### ワシントン +#### Washington -##### シアトル +##### Seattle - [Meetup](https://www.meetup.com/Seattle-Node-js/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? -- 主催者名 - Ryan Roemer -- 主催者の連絡先情報 - +- Frequency of meetups - monthly +- How to submit a talk? +- Organizer name - Ryan Roemer +- Organizer contact info - - [Meetup](https://www.meetup.com/Seattle-NodeSchool/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? ミートアップページで主催者に連絡してください。 -- 主催者名 - Wil Alvarez -- 主催者の連絡先情報 - +- Frequency of meetups - monthly +- How to submit a talk? Contact organizers in the meetup page +- Organizer name - Wil Alvarez +- Organizer contact info - -#### ワシントン DC +#### Washington, DC. - [Meetup](https://www.meetup.com/node-dc/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? Write to Andrew Dunkman adunkman@gmail.com -- 主催者名 - Andrew Dunkman -- 主催者の連絡先情報 - +- Frequency of meetups - monthly +- How to submit a talk? Write to Andrew Dunkman adunkman@gmail.com +- Organizer name - Andrew Dunkman +- Organizer contact info - -### 英国 +### UK -##### ロンドン +##### London ###### LNUG - [Meetup](https://www.meetup.com/london-nodejs/) - [GitHub/lnug](https://github.com/lnug/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? Visit our [speakers repos](https://github.com/lnug/speakers), read the guidelines, and [submit a talk proposal as a new issue](https://github.com/lnug/speakers/issues). -- 主催者名 - Adam Davis -- 主催者の連絡先情報 - contact@lnug.org, [@lnugOrg](https://twitter.com/lnugorg) +- Frequency of meetups - monthly +- How to submit a talk? Visit our [speakers repos](https://github.com/lnug/speakers), read the guidelines, and [submit a talk proposal as a new issue](https://github.com/lnug/speakers/issues). +- Organizer name - Adam Davis +- Organizer contact info - contact@lnug.org, [@lnugOrg](https://twitter.com/lnugorg) -###### Node ワークショップ +###### Node Workshops - [Meetup](https://www.meetup.com/NodeWorkshops//) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? -- 主催者名 - Daryn Holmes -- 主催者の連絡先情報 - +- Frequency of meetups - monthly +- How to submit a talk? +- Organizer name - Daryn Holmes +- Organizer contact info - -##### ケンブリッジ +##### Cambridge - [Meetup](https://www.meetup.com/JavaScript-Cambridge/) -- ミートアップの頻度 - monthly -- 講演を提出するにはどうすればいいですか? -- 主催者名 - Joe Parry, co-organizer Rob Moran -- 主催者の連絡先情報 - +- Frequency of meetups - monthly +- How to submit a talk? +- Organizer name - Joe Parry, co-organizer Rob Moran +- Organizer contact info - -##### オックスフォード +##### Oxford - [JSOxford](https://www.meetup.com/jsoxford/) -- ミートアップの頻度 - every 2 months -- 講演を提出するにはどうすればいいですか? [Submit Form](https://docs.google.com/forms/d/e/1FAIpQLSflx7LU44PuwlyCJj-WwlP_SlrUvxAd8uaXlY7_O65c7RLpGQ/viewform?usp=sf_link) -- 主催者名s - Marcus Noble, Seren Davies +- Frequency of meetups - every 2 months +- How to submit a talk? [Submit Form](https://docs.google.com/forms/d/e/1FAIpQLSflx7LU44PuwlyCJj-WwlP_SlrUvxAd8uaXlY7_O65c7RLpGQ/viewform?usp=sf_link) +- Organizer names - Marcus Noble, Seren Davies - Organizers contact info - organisers@jsoxford.com -### ウクライナ +### Ukraine -##### キエフ +##### Kiev - [Meetup](https://www.meetup.com/NodeUA/), [Old group](https://www.meetup.com/KievNodeJS/) -- ミートアップの頻度 - 1-8 times a month -- 講演を提出するにはどうすればいいですか? Contact organizer by email. -- 主催者名 - Timur Shemsedinov -- 主催者の連絡先情報 - [Email](mailto:timur.shemsedinov@gmail.com) +- Frequency of meetups - 1-8 times a month +- How to submit a talk? Contact organizer by email. +- Organizer name - Timur Shemsedinov +- Organizer contact info - [Email](mailto:timur.shemsedinov@gmail.com) diff --git a/locale/ja/get-involved/node-speakers.md b/locale/ja/get-involved/node-speakers.md index 95176d19d0da8..92f885d93a881 100644 --- a/locale/ja/get-involved/node-speakers.md +++ b/locale/ja/get-involved/node-speakers.md @@ -15,13 +15,13 @@ layout: contribute.hbs - すべてアルファベット順に送信 -## スピーカー +## Speakers -### ブラジル 🇧🇷 +### Brazil 🇧🇷 -#### ミナスジェライス +#### Minas Gerais -##### ベロオリゾンテ +##### Belo Horizonte ###### Hugo Iuri Cordeiro @@ -30,11 +30,11 @@ layout: contribute.hbs - [Linkedin](https://www.linkedin.com/in/hugoiuri) - [Personal Website](http://www.hugoiuri.dev) -- トピック - Node.js, テスト, クラウドコンピューティング, コミュニティ, オープンソース, JavaScript, 継続的デリバリー, デプロイ自動化 +- Topics - Node.js, Testing, Cloud Computing, Community, Open Source, JavaScript, Continuous Delivery, Deploy Automatization -#### リオデジャネイロ +#### Rio de Janeiro -##### リオデジャネイロ +##### Rio de Janeiro ###### Glaucia Lemos @@ -43,11 +43,11 @@ layout: contribute.hbs - [Linkedin](https://www.linkedin.com/in/glaucialemos/) - [Personal Website](https://glaucialemos.netlify.com/) -- トピック - Node.js, Women in Tech, テスト, クラウドコンピューティング, Node.js with A.I, コミュニティ, オープンソース, JavaScript, Node.js + Bots +- Topics - Node.js, Women in Tech, Testing, Cloud Computing, Node.js with A.I, Community, Open Source, JavaScript, Node.js + Bots -#### サンパウロ +#### São Paulo -##### サンパウロ +##### São Paulo ###### Claudiney Junior @@ -55,7 +55,7 @@ layout: contribute.hbs - [Activities](https://claudineyjunior.com.br) - [Linkedin](https://linkedin.com/in/claudiney-junior/) -- トピック: Node.js, Docker, Swarm, Kubernetes, プログラミングロジック, ベストプラクティス, クラウドコンピューティング, IA, キャリア +- Topics: Node.js, Docker, Swarm, Kubernetes, Programming Logic, Best Pratices, Cloud Computing, IA, Carrer ###### Erick Wendel @@ -63,7 +63,7 @@ layout: contribute.hbs - [Activities](https://erickwendel.com) - [Linkedin](https://linkedin.com/in/erickwendel/) -- トピック: Node.js, Kubernetes, Docker, サーバレス, Communities, クラウドコンピューティング. +- Topics: Node.js, Kubernetes, Docker, Serverless, Communities, Cloud Computing. ###### Lucas Santos @@ -73,143 +73,143 @@ layout: contribute.hbs - [Linkedin](https://linkedin.com/in/lhs-santos) - [Github](https://github.com/khaosdoctor) -- トピック: Node.js, Kubernetes, Docker, サーバレス, キャリア, クラウドコンピューティング, インフラ, JavaScript, TypeScript, Code Quality +- Topics: Node.js, Kubernetes, Docker, Serverless, Career, Cloud Computing, Infrastructure, JavaScript, TypeScript, Code Quality -### カナダ 🇨🇦 +### Canada 🇨🇦 -#### オンタリオ州 +#### Ontario -##### オタワ +##### Ottawa ###### Michael Dawson - [@mhdawson](https://twitter.com/mhdawson1) - [LinkedIn](https://www.linkedin.com/in/michael-dawson-6051282/) -- トピック - Node.js +- Topics - Node.js -#### ブリティッシュコロンビア +#### British Columbia -##### バンクーバー +##### Vancouver ###### Manil Chowdhury - [@keywordnew](https://twitter.com/keywordnew) - [LinkedIn](https://www.linkedin.com/in/manilchowdhury/) -- トピック - Node コミュニティ, オープンソース, 教育, 多様性とインクルージョン, wombats +- Topics - Node Community, Open Source, Education, Diversity & Inclusion, wombats -### ドイツ 🇩🇪 +### Germany 🇩🇪 -#### バーデン=ヴュルテンベルク +#### Baden-Württemberg -##### カイザーシュトゥールのリーゲル +##### Riegel am Kaiserstuhl ###### Golo Roden - [@goloroden](https://twitter.com/goloroden) - [Github](https://github.com/thenativeweb) -- トピック – Node.js, JavaScript, Docker, Kubernetes, CQRS, event-sourcing, DDD +- Topics – Node.js, JavaScript, Docker, Kubernetes, CQRS, event-sourcing, DDD -### イスラエル 🇮🇱 +### Israel 🇮🇱 -#### テルアビブ +#### Tel Aviv ##### Benjamin Gruenbaum - [Github](https://github.com/benjamingr) -- トピック - Node.js, Promises, Node.js core, テスト, Mobx, Vue.js, Sinon +- Topics - Node.js, Promises, Node.js core, Testing, Mobx, Vue.js, Sinon ##### Liran Tal - [Github](https://github.com/lirantal) - [@liran_tal](http://twitter.com/liran_tal) -- トピック - Node.js, セキュリティ, テスト, CLIs, APIs +- Topics - Node.js, Security, Testing, CLIs, APIs -### アメリカ 🇺🇸 +### United States 🇺🇸 -#### カリフォルニア州 +#### California -##### サンフランシスコ +##### San Francisco ###### Atishay Jain - [@atishay811](http://twitter.com/atishay811) - [LinkedIn](https://linkedin.com/in/atishay) - [Github](https://github.com/atishay) -- トピック - Node.js, ネイティブモジュール(N-API, Nan), Node.js on desktop +- Topics - Node.js, Native Modules(N-API, Nan), Node.js on desktop ###### Dan Shaw - [@dshaw](http://twitter.com/dshaw) -- トピック - Node.js +- Topics - Node.js ###### Shruti Kapoor - [@shrutikapoor08](http://twitter.com/shrutikapoor08) -- トピック - Node.js +- Topics - Node.js ###### Tracy Lee - [@ladyleet](http://twitter.com/ladyleet) - [LinkedIn](https://linkedin.com/in/tracyslee) -- トピック - Node.js コミュニティ, Women in Tech, 多様性とインクルージョン, RxJS & Node.js +- Topics - Node.js Community, Women in Tech, Diversity & Inclusion, RxJS & Node.js ###### Dominik Kundel - [@dkundel](https://twitter.com/dkundel) - [GitHub](https://github.com/dkundel) - [dkundel.com](https://dkundel.com) -- トピック - Node.js, TypeScript, Nodebots, Web セキュリティ, Web コンポーネント +- Topics - Node.js, TypeScript, Nodebots, Web Security, Web Components -#### フロリダ州 +#### Florida -##### セントピーターズバーグ +##### Saint Petersburg ###### Mark Pieszak - [@MarkPieszak](http://twitter.com/MarkPieszak) - [Github](https://github.com/MarkPieszak) -- トピック - Node.js, JavaScript SSR (サーバサイドレンダリング), パフォーマンス, オープンソース, コミュニティ +- Topics - Node.js, JavaScript SSR (Server-side Rendering), Performance, Open Source, Community ###### Julián Duque - [@julian_duque](https://twitter.com/julian_duque) - [GitHub](https://github.com/julianduque) -- トピック - Node.js, Debugging, パフォーマンス, ベストプラクティス, コミュニティアウトリーチ, 教育 +- Topics - Node.js, Debugging, Performance, Best Practices, Community Outreach, Education -#### ニューヨーク州 +#### New York -##### ニューヨークシティ +##### New York City ###### Tierney Cyren - [@bitandbang](http://twitter.com/bitandbang) -- トピック - Node.js +- Topics - Node.js ###### Joe Sepi - [@joe_sepi](http://twitter.com/joe_sepi) - [LinkedIn](https://www.linkedin.com/in/joesepi/) -- トピック - Node.js, JavaScript, オープンソース, コミュニティ, リーダーシップ, Punk Rock +- Topics - Node.js, JavaScript, Open Source, Community, Leadership, Punk Rock -#### ノースカロライナ州 +#### North Carolina -##### ローリー +##### Raleigh ###### Tracy Lee - [@ladyleet](http://twitter.com/ladyleet) - [LinkedIn](https://linkedin.com/in/tracyslee) -- トピック - Node.js コミュニティ, Women in Tech, 多様性とインクルージョン, RxJS & Node.js +- Topics - Node.js Community, Women in Tech, Diversity & Inclusion, RxJS & Node.js -#### オレゴン州 +#### Oregon -##### ポートランド +##### Portland ###### Ben Michel - [@obensource](http://twitter.com/obensource) -- トピック - Node.js +- Topics - Node.js ###### Christopher Hiller - [@b0neskull](https://twitter.com/b0neskull) -- トピック - Node.js, テスト, Tooling, Maintainership & OSS Sustainability +- Topics - Node.js, Testing, Tooling, Maintainership & OSS Sustainability From 2deeb9533b98300076ed7ca0d801b0131eedb1ea Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Sun, 12 May 2019 21:43:17 +0900 Subject: [PATCH 11/61] Translation is unnecessary except for title. --- locale/ja/get-involved/node-events.md | 10 ++++---- locale/ja/get-involved/node-meetups.md | 32 ++++++++++++------------- locale/ja/get-involved/node-speakers.md | 12 +++++----- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/locale/ja/get-involved/node-events.md b/locale/ja/get-involved/node-events.md index ccc8959123ecc..5a024266f9acf 100644 --- a/locale/ja/get-involved/node-events.md +++ b/locale/ja/get-involved/node-events.md @@ -3,17 +3,17 @@ title: Node.js イベント layout: contribute.hbs --- -# Node.js イベント +# Node.js Events -これは、Node.js のイベントと会議のリストです。まだ下のリストに記録されていない新しいイベントを追加する場合は、PR を送信してください。 +This is a list of Node.js events and conferences. Please submit a PR if you'd like to add a new event that isn't yet tracked in the list below. -## イベントを追加するときの注意事項 +## Notes for adding events -フォーマット +FORMAT - Event Name | Location | Dates -## イベント +## Events ### 2019 diff --git a/locale/ja/get-involved/node-meetups.md b/locale/ja/get-involved/node-meetups.md index a86a267635298..08f6e4bf7e68e 100644 --- a/locale/ja/get-involved/node-meetups.md +++ b/locale/ja/get-involved/node-meetups.md @@ -3,28 +3,28 @@ title: Node.js ミートアップ layout: contribute.hbs --- -# Node.js ミートアップ +# Node.js Meetups -これは Node.js のミートアップのリストです。ローカルグループを追加したい場合は、PR を送信してください。 +This is a list of Node.js meetups. Please submit a PR if you'd like to add your local group! -## 行動規範 +## Code of Conduct -ミートアップに CoC がない、または安全でない場所として報告された場合、このリストからは削除されます。 +If any meetup does not have a CoC and/or is reported as an unsafe place, it will be removed from this list. -## ミートアップを追加する時の注意 +## Notes for adding meetups -フォーマット +FORMAT - [Meetup](https://www.meetup.com/pdxnode/) -- ミートアップの頻度 -- 講演を提出するにはどうすればいいですか? <<一覧はこちら>> -- 主催者名 (あなたが提供したい場合) -- 主催者の連絡先情報 (提供したい場合) - -必要事項 -- このミートアップが CoC に従っているかどうか、PR に記載してください。 -- 確認のため CoC にリンクしてください。 -- CoC がない場合は、送信する前に CoC 付きのミートアップに更新してください。 -- PR をアルファベット順に送信してください。 +- Frequency of meetups +- How to submit a talk? <<list here>> +- Organizer names (if you wish to provide) +- Organizers contact info (if you wish to provide) + +REQUIREMENTS +- Please state in your PR if this meetup abides by CoC. +- Link to CoC for verification. +- If you do not currently have a CoC, update the meetup with CoC before submitting. +- Submit your PR in alphabetical order. ## Meetups diff --git a/locale/ja/get-involved/node-speakers.md b/locale/ja/get-involved/node-speakers.md index 92f885d93a881..729980240e278 100644 --- a/locale/ja/get-involved/node-speakers.md +++ b/locale/ja/get-involved/node-speakers.md @@ -3,17 +3,17 @@ title: Node.js スピーカー layout: contribute.hbs --- -# Node.js スピーカー +# Node.js Speakers -これは、地元の Node.js スピーカーのリストです。自分を追加したり他の人を追加したい場合は、PR を送信してください。同様にそうする前にあなたが許可を持っていることを確認してください。 +This is a list of local Node.js speakers. Please submit a PR if you'd like to add yourself or add others! Make sure you have permission before doing so as well. -## 行動規範 +## Code of Conduct -誰かが悪意があると報告されたり、他の人を不快にさせたりした場合、それらはこのリストから削除される可能性があります。 +If anyone is reported as malicious or making others feel uncomfortable, they may be removed from this list. -## 説明書 +## Instructions -- すべてアルファベット順に送信 +- Submit everything alphabetically ## Speakers From f746e2e779292260f1ed0ae7a49ab593424f54e8 Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Mon, 13 May 2019 01:10:00 +0900 Subject: [PATCH 12/61] translate japanese. --- .../docs/guides/debugging-getting-started.md | 234 +++++++++--------- locale/ja/docs/guides/index.md | 40 +-- locale/ja/docs/guides/simple-profiling.md | 172 ++++++------- 3 files changed, 218 insertions(+), 228 deletions(-) diff --git a/locale/ja/docs/guides/debugging-getting-started.md b/locale/ja/docs/guides/debugging-getting-started.md index 3ea3d22b08151..632a3e8afeb98 100644 --- a/locale/ja/docs/guides/debugging-getting-started.md +++ b/locale/ja/docs/guides/debugging-getting-started.md @@ -1,130 +1,123 @@ --- -title: Debugging - Getting Started +title: デバッグ - 入門 layout: docs.hbs --- -# Debugging Guide +# デバッグガイド -This guide will help you get started debugging your Node.js apps and scripts. +このガイドは、Node.js アプリケーションとスクリプトのデバッグを開始するのに役立ちます。 -## Enable Inspector +## インスペクタを有効にする -When started with the `--inspect` switch, a Node.js process listens for a -debugging client. By default, it will listen at host and port 127.0.0.1:9229. -Each process is also assigned a unique [UUID][]. +`--inspect` スイッチを指定して起動すると、Node.js プロセスはデバッグクライアントを待機します。 +デフォルトでは、ホストとポート 127.0.0.1:9229 で待機します。 +各プロセスには固有の [UUID][] も割り当てられています。 -Inspector clients must know and specify host address, port, and UUID to connect. -A full URL will look something like -`ws://127.0.0.1:9229/0f2c936f-b1cd-4ac9-aab3-f63b0f33d55e`. +インスペクタクライアントは、接続するホストアドレス、ポート、および UUID を認識して指定する必要があります。 +フル URL は、 +`ws://127.0.0.1:9229/0f2c936f-b1cd-4ac9-aab3-f63b0f33d55e` のようになります。 -Node.js will also start listening for debugging messages if it receives a -`SIGUSR1` signal. (`SIGUSR1` is not available on Windows.) In Node.js 7 and -earlier, this activates the legacy Debugger API. In Node.js 8 and later, it will -activate the Inspector API. +Node.js は、`SIGUSR1` シグナルを受信した場合にもデバッグメッセージの受信を開始します +(`SIGUSR1` は Windows では使用できません)。 +Node.js 7 以前では、これにより古い Debugger API がアクティブになります。 +Node.js 8 以降では、Inspector API を起動します。 --- -## Security Implications +## セキュリティへの影響 -Since the debugger has full access to the Node.js execution environment, a -malicious actor able to connect to this port may be able to execute arbitrary -code on behalf of the Node process. It is important to understand the security -implications of exposing the debugger port on public and private networks. +デバッガは Node.js 実行環境にフルアクセスできるため、 +このポートに接続できる悪意のあるアクターが Node プロセスに代わって任意のコードを実行できる可能性があります。 +パブリックおよびプライベートネットワークでデバッガポートを公開することによる +セキュリティへの影響を理解することが重要です。 -### Exposing the debug port publicly is unsafe +### デバッグポートを公開するのは危険です -If the debugger is bound to a public IP address, or to 0.0.0.0, any clients that -can reach your IP address will be able to connect to the debugger without any -restriction and will be able to run arbitrary code. +デバッガがパブリック IP アドレス、または 0.0.0.0 にバインドされている場合、 +自分の IP アドレスに到達できるクライアントは制限なしにデバッガに接続でき、 +任意のコードを実行できます。 -By default `node --inspect` binds to 127.0.0.1. You explicitly need to provide a -public IP address or 0.0.0.0, etc., if you intend to allow external connections -to the debugger. Doing so may expose you a potentially significant security -threat. We suggest you ensure appropriate firewalls and access controls in place -to prevent a security exposure. +デフォルトでは、`node --inspect` は 127.0.0.1 にバインドします。 +デバッガへの外部接続を許可する場合は、明示的にパブリック IP アドレスまたは 0.0.0.0 などを指定する必要があります。 +これを行うと、潜在的に重大なセキュリティ上の脅威にさらされる可能性があります。 +セキュリティ上の問題を防ぐために、適切なファイアウォールとアクセス制御を +適切に設定することをお勧めします。 -See the section on '[Enabling remote debugging scenarios](#enabling-remote-debugging-scenarios)' on some advice on how -to safely allow remote debugger clients to connect. +リモートデバッガクライアントの接続を安全に許可する方法については、 +'[リモートデバッグシナリオの有効化](#enabling-remote-debugging-scenarios)'のセクションを参照してください。 -### Local applications have full access to the inspector +### ローカルアプリケーションはインスペクタにフルアクセスできます -Even if you bind the inspector port to 127.0.0.1 (the default), any applications -running locally on your machine will have unrestricted access. This is by design -to allow local debuggers to be able to attach conveniently. +インスペクタポートを 127.0.0.1 (デフォルト) にバインドしても、 +マシン上でローカルに実行されているすべてのアプリケーションに無制限のアクセス権が与えられます。 +これはローカルデバッガが便利にアタッチできるようにするための仕様です。 -### Browsers, WebSockets and same-origin policy +### ブラウザ、WebSocket、および同一生成元ポリシー -Websites open in a web-browser can make WebSocket and HTTP requests under the -browser security model. An initial HTTP connection is necessary to obtain a -unique debugger session id. The same-origin-policy prevents websites from being -able to make this HTTP connection. For additional security against -[DNS rebinding attacks](https://en.wikipedia.org/wiki/DNS_rebinding), Node.js -verifies that the 'Host' headers for the connection either -specify an IP address or `localhost` or `localhost6` precisely. +Web ブラウザで開かれた Web サイトは、ブラウザセキュリティモデルの下で +WebSocket および HTTP リクエストを行うことができます。 +一意のデバッガセッション ID を取得するには、 +最初の HTTP 接続が必要です。 +same-origin-policy は、Web サイトがこの HTTP 接続を確立できないようにします。 +[DNS リバインド攻撃](https://en.wikipedia.org/wiki/DNS_rebinding)に対するさらなるセキュリティのために、 +Node.js は接続のための 'Host' ヘッダが IP アドレスまたは `localhost` もしくは `localhost6` を正確に指定していることを検証します。 -These security policies disallow connecting to a remote debug server by -specifying the hostname. You can work-around this restriction by specifying -either the IP address or by using ssh tunnels as described below. +これらのセキュリティポリシーでは、ホスト名を指定してリモートデバッグサーバーに接続することを禁止しています。 +この制限を回避するには、IP アドレスを指定するか、 +または後述のように ssh トンネルを使用します。 -## Inspector Clients +## インスペクタクライアント -Several commercial and open source tools can connect to Node's Inspector. Basic -info on these follows: +一部の商用およびオープンソースのツールが Node の Inspector に接続できます。 +これらに関する基本的な情報は次のとおりです。 #### [node-inspect](https://github.com/nodejs/node-inspect) -* CLI Debugger supported by the Node.js Foundation which uses the [Inspector Protocol][]. -* A version is bundled with Node and can be used with `node inspect myscript.js`. -* The latest version can also be installed independently (e.g. `npm install -g node-inspect`) - and used with `node-inspect myscript.js`. +* [Inspector プロトコル][]を使用する Node.js Foundation によってサポートされている CLI デバッガ +* バージョンは Node にバンドルされており、`node inspect myscript.js`と一緒に使うことができます +* 最新バージョンは独立してインストールすることもでき (例えば `npm install -g node-inspect`)、 `node-inspect myscript.js` と一緒に使うことができます #### [Chrome DevTools](https://github.com/ChromeDevTools/devtools-frontend) 55+ -* **Option 1**: Open `chrome://inspect` in a Chromium-based - browser. Click the Configure button and ensure your target host and port - are listed. -* **Option 2**: Copy the `devtoolsFrontendUrl` from the output of `/json/list` - (see above) or the --inspect hint text and paste into Chrome. -* **Option 3**: Install the Chrome Extension NIM (Node Inspector Manager): +* **オプション 1**: Chromium ベースのブラウザで `chrome://inspect` を開きます。設定ボタンをクリックして、ターゲットホストとポートが表示されていることを確認します。 +* **オプション 2**: `/json/list`の出力 (上記を参照) または --inspect ヒントテキストから `devtoolsFrontendUrl` をコピーして Chrome に貼り付けます +* **オプション 3**: Chrome Extension NIM (ノードインスペクタマネージャ) をインストールします: https://chrome.google.com/webstore/detail/nim-node-inspector-manage/gnhhdgbaldcilmgcpfddgdbkhjohddkj #### [Visual Studio Code](https://github.com/microsoft/vscode) 1.10+ -* In the Debug panel, click the settings icon to open `.vscode/launch.json`. - Select "Node.js" for initial setup. +* デバッグパネルで、設定アイコンをクリックして `.vscode/launch.json` を開きます。初期設定は "Node.js" を選択してください #### [Visual Studio](https://github.com/Microsoft/nodejstools) 2017 -* Choose "Debug > Start Debugging" from the menu or hit F5. -* [Detailed instructions](https://github.com/Microsoft/nodejstools/wiki/Debugging). +* メニューから "デバッグ > デバッグの開始" を選択するか、F5 を押します +* [詳しい説明](https://github.com/Microsoft/nodejstools/wiki/Debugging) -#### [JetBrains WebStorm](https://www.jetbrains.com/webstorm/) 2017.1+ and other JetBrains IDEs +#### [JetBrains WebStorm](https://www.jetbrains.com/webstorm/) 2017.1+ と他の JetBrains IDE -* Create a new Node.js debug configuration and hit Debug. `--inspect` will be used - by default for Node.js 7+. To disable uncheck `js.debugger.node.use.inspect` in - the IDE Registry. +* 新しい Node.js デバッグ設定を作成して Debug をクリックします。Node.js 7 以降の場合、`--inspect` がデフォルトで使用されます。IDE レジストリで `js.debugger.node.use.inspect` のチェックを外します #### [chrome-remote-interface](https://github.com/cyrus-and/chrome-remote-interface) -* Library to ease connections to Inspector Protocol endpoints. +* Inspector Protocol エンドポイントへの接続を容易にするためのライブラリ #### [Gitpod](https://www.gitpod.io) -* Start a Node.js debug configuration from the `Debug` view or hit `F5`. [Detailed instructions](https://medium.com/gitpod/debugging-node-js-applications-in-theia-76c94c76f0a1) +* `Debug` ビュー から Node.js デバッグ設定を開始するか、`F5` を押します。[詳しい説明](https://medium.com/gitpod/debugging-node-js-applications-in-theia-76c94c76f0a1) --- -## Command-line options +## コマンドラインオプション -The following table lists the impact of various runtime flags on debugging: +次の表は、デバッグ時のさまざまなランタイムフラグの影響を示しています。 - + @@ -132,9 +125,9 @@ The following table lists the impact of various runtime flags on debugging: @@ -142,9 +135,9 @@ The following table lists the impact of various runtime flags on debugging: @@ -152,10 +145,10 @@ The following table lists the impact of various runtime flags on debugging: @@ -163,8 +156,7 @@ The following table lists the impact of various runtime flags on debugging: @@ -172,73 +164,71 @@ The following table lists the impact of various runtime flags on debugging:
FlagMeaning
フラグ意味
--inspect
    -
  • Enable inspector agent
  • -
  • Listen on default address and port (127.0.0.1:9229)
  • +
  • インスペクタエージェントを有効にする
  • +
  • デフォルトのアドレスとポートで待機する (127.0.0.1:9229)
--inspect=[host:port]
    -
  • Enable inspector agent
  • -
  • Bind to address or hostname host (default: 127.0.0.1)
  • -
  • Listen on port port (default: 9229)
  • +
  • インスペクタエージェントを有効にする
  • +
  • アドレスまたはホスト名 host にバインド (デフォルト: 127.0.0.1)
  • +
  • port ポートで待ち受ける (デフォルト: 9229)
--inspect-brk
    -
  • Enable inspector agent
  • -
  • Listen on default address and port (127.0.0.1:9229)
  • -
  • Break before user code starts
  • +
  • インスペクタエージェントを有効にする
  • +
  • デフォルトのアドレスとポートで待機する (127.0.0.1:9229)
  • +
  • ユーザーコードが始まる前に中断する
--inspect-brk=[host:port]
    -
  • Enable inspector agent
  • -
  • Bind to address or hostname host (default: 127.0.0.1)
  • -
  • Listen on port port (default: 9229)
  • -
  • Break before user code starts
  • +
  • インスペクタエージェントを有効にする
  • +
  • アドレスまたはホスト名 host にバインド (デフォルト: 127.0.0.1)
  • +
  • port ポートで待ち受ける (デフォルト: 9229)
  • +
  • ユーザーコードが始まる前に中断する
node inspect script.js
    -
  • Spawn child process to run user's script under --inspect flag; - and use main process to run CLI debugger.
  • +
  • --inspect フラグの下でユーザのスクリプトを実行するための子プロセスを生成します。そして CLI デバッガを動かすのに主要なプロセスを使用します
node inspect --port=xxxx script.js
    -
  • Spawn child process to run user's script under --inspect flag; - and use main process to run CLI debugger.
  • -
  • Listen on port port (default: 9229)
  • +
  • --inspect フラグの下でユーザのスクリプトを実行するための子プロセスを生成します。そして CLI デバッガを動かすのに主要なプロセスを使用します
  • +
  • port ポートで待ち受ける (デフォルト: 9229)
--- + +## リモートデバッグシナリオを有効にする -## Enabling remote debugging scenarios +デバッガがパブリック IP アドレスを待ち受けないようにすることをお勧めします。 +リモートデバッグ接続を許可する必要がある場合は、代わりに ssh トンネルを使用することをお勧めします。 +以下の例は、説明のみを目的として提供されています。 +続行する前に特権サービスへのリモートアクセスを許可することの +セキュリティリスクを理解してください。 -We recommend that you never have the debugger listen on a public IP address. If -you need to allow remote debugging connections we recommend the use of ssh -tunnels instead. We provide the following example for illustrative purposes only. -Please understand the security risk of allowing remote access to a privileged -service before proceeding. - -Let's say you are running Node on remote machine, remote.example.com, that you -want to be able to debug. On that machine, you should start the node process -with the inspector listening only to localhost (the default). +リモートマシン remote.example.com で Node を実行していて、デバッグできるようにしたいとしましょう。 +そのマシンでは、インスペクタが localhost (デフォルト) のみを監視して +ノードプロセスを開始する必要があります。 ```bash $ node --inspect server.js ``` -Now, on your local machine from where you want to initiate a debug client -connection, you can setup an ssh tunnel: +これで、デバッグクライアント接続を開始したい場所から +ローカルマシンに SSH トンネルを設定できます。 ```bash $ ssh -L 9221:localhost:9229 user@remote.example.com ``` -This starts a ssh tunnel session where a connection to port 9221 on your local -machine will be forwarded to port 9229 on remote.example.com. You can now attach -a debugger such as Chrome DevTools or Visual Studio Code to localhost:9221, -which should be able to debug as if the Node.js application was running locally. +これにより、ローカルマシンの 9221 ポートへの接続が +remote.example.com の 9229 ポートに転送される ssh トンネルセッションが開始されます。 +これで、Chrome DevTools や Visual Studio Code などのデバッガを localhost:9221 にアタッチできます。 +Node.js アプリケーションがローカルで実行されているかのようにデバッグできるはずです。 --- -## Legacy Debugger +## レガシーデバッガ -**The legacy debugger has been deprecated as of Node 7.7.0. Please use --inspect -and Inspector instead.** +**レガシーデバッガは Node 7.7.0 の時点で非推奨になりました。代わりに --inspect と Inspector を使ってください。** -When started with the **--debug** or **--debug-brk** switches in version 7 and -earlier, Node.js listens for debugging commands defined by the discontinued -V8 Debugging Protocol on a TCP port, by default `5858`. Any debugger client -which speaks this protocol can connect to and debug the running process; a -couple popular ones are listed below. +バージョン7以前の **--debug** または **--debug-brk** スイッチを指定して起動すると、 +Node.js は TCP ポートで廃止された V8 デバッグプロトコルで定義されている +デバッグコマンド (デフォルトでは `5858`) を待ち受けます。 +これで実行中のプロセスに接続してデバッグできます。 +いくつかのポピュラーなものは以下のとおりです。 -The V8 Debugging Protocol is no longer maintained or documented. +V8 デバッグプロトコルは、もはや保守もドキュメンテーションもされていません。 -#### [Built-in Debugger](https://nodejs.org/dist/latest-v6.x/docs/api/debugger.html) +#### [組み込みデバッガ](https://nodejs.org/dist/latest-v6.x/docs/api/debugger.html) -Start `node debug script_name.js` to start your script under Node's builtin -command-line debugger. Your script starts in another Node process started with -the `--debug-brk` option, and the initial Node process runs the `_debugger.js` -script and connects to your target. +Node の組み込みコマンドラインデバッガの下でスクリプトを起動するには、 +`node debug script_name.js` を起動します。 +スクリプトは `--debug-brk` オプションで開始された別のノードプロセスで開始され、 +最初のノードプロセスは `_debugger.js` スクリプトを実行してターゲットに接続します。 #### [node-inspector](https://github.com/node-inspector/node-inspector) -Debug your Node.js app with Chrome DevTools by using an intermediary process -which translates the Inspector Protocol used in Chromium to the V8 Debugger -protocol used in Node.js. +Chromium で使用されるインスペクタプロトコルを +Node.js で使用される V8 デバッガプロトコルに変換する中間プロセスを使用して、 +Chrome DevTools で Node.js アプリケーションをデバッグします。 -[Inspector Protocol]: https://chromedevtools.github.io/debugger-protocol-viewer/v8/ +[Inspector プロトコル]: https://chromedevtools.github.io/debugger-protocol-viewer/v8/ [UUID]: https://tools.ietf.org/html/rfc4122 diff --git a/locale/ja/docs/guides/index.md b/locale/ja/docs/guides/index.md index c8d42a4a0a00c..2d04a87475a08 100644 --- a/locale/ja/docs/guides/index.md +++ b/locale/ja/docs/guides/index.md @@ -1,33 +1,33 @@ --- -title: Guides +title: ガイド layout: docs.hbs --- -# Guides +# ガイド -## General +## 一般 - [入門ガイド](getting-started-guide/) -- [Debugging - Getting Started](debugging-getting-started/) -- [Easy profiling for Node.js Applications](simple-profiling/) -- [Diagnostics - Flame Graphs](diagnostics-flamegraph/) -- [Dockerizing a Node.js web app](nodejs-docker-webapp/) -- [Migrating to safe Buffer constructors](buffer-constructor-deprecation/) +- [デバッグ - 入門](debugging-getting-started/) +- [Node.js アプリケーションの簡単なプロファイリング](simple-profiling/) +- [診断 - フレームのグラフ](diagnostics-flamegraph/) +- [Node.js Web アプリケーションを Docker 化する](nodejs-docker-webapp/) +- [安全な Buffer コンストラクタへの移行](buffer-constructor-deprecation/) -## Node.js core concepts +## Node.js コアコンセプト -- [Overview of Blocking vs Non-Blocking](blocking-vs-non-blocking/) -- [The Node.js Event Loop, Timers, and `process.nextTick()`](event-loop-timers-and-nexttick/) -- [Don't Block the Event Loop (or the Worker Pool)](dont-block-the-event-loop/) -- [Timers in Node.js](timers-in-node/) +- [ブロッキングとノンブロッキングの概要](blocking-vs-non-blocking/) +- [Node.js イベントループ、タイマー、そして `process.nextTick()`](event-loop-timers-and-nexttick/) +- [イベントループ (またはワーカープール) をブロックしない](dont-block-the-event-loop/) +- [Node.js のタイマー](timers-in-node/) -## Module-related guides +## モジュール関連ガイド -- [Anatomy of an HTTP Transaction](anatomy-of-an-http-transaction/) -- [Working with Different Filesystems](working-with-different-filesystems/) -- [Backpressuring in Streams](backpressuring-in-streams/) -- [Domain Module Postmortem](domain-postmortem/) -- [How to publish N-API package](publishing-napi-modules/) -- [ABI Stability](abi-stability/) +- [HTTP トランザクションの構造](anatomy-of-an-http-transaction/) +- [異なるファイルシステムで作業する](working-with-different-filesystems/) +- [ストリーム内の背圧](backpressuring-in-streams/) +- [ドメインモジュールの事後分析](domain-postmortem/) +- [N-API パッケージを公開する方法](publishing-napi-modules/) +- [ABI の安定性](abi-stability/) diff --git a/locale/ja/docs/guides/simple-profiling.md b/locale/ja/docs/guides/simple-profiling.md index 1ad68f3211018..f7f196c6c27ae 100644 --- a/locale/ja/docs/guides/simple-profiling.md +++ b/locale/ja/docs/guides/simple-profiling.md @@ -1,16 +1,16 @@ --- -title: Easy profiling for Node.js Applications +title: Node.js アプリケーションの簡単なプロファイリング layout: docs.hbs --- -# Easy profiling for Node.js Applications +# Node.js アプリケーションの簡単なプロファイリング -There are many third party tools available for profiling Node.js applications -but, in many cases, the easiest option is to use the Node.js built in profiler. -The built in profiler uses the [profiler inside V8][] which samples the stack at -regular intervals during program execution. It records the results of these -samples, along with important optimization events such as jit compiles, as a -series of ticks: +Node.js アプリケーションのプロファイリングに使用できるサードパーティ製ツールは多数ありますが、 +多くの場合、最も簡単な方法はプロファイラに組み込まれている Node.js を使用することです。 +組み込みプロファイラは、プログラムの実行中に定期的にスタックをサンプリングする +[V8 内部のプロファイラ][] を使用します。 +これらのサンプルの結果と、jit コンパイルなどの重要な最適化イベントを +一連のティックとして記録します。 ``` code-creation,LazyCompile,0,0x2d5000a337a0,396,"bp native array.js:1153:16",0x289f644df68,~ @@ -20,15 +20,15 @@ code-creation,Stub,2,0x2d5000a33d40,182,"DoubleToIStub" code-creation,Stub,2,0x2d5000a33e00,507,"NumberToStringStub" ``` -In the past, you needed the V8 source code to be able to interpret the ticks. -Luckily, tools have been introduced since Node.js 4.4.0 that facilitate the -consumption of this information without separately building V8 from source. -Let's see how the built-in profiler can help provide insight into application -performance. +以前は、ティックを解釈するために V8 ソースコードが必要でした。 +幸いなことに、Node.js 4.4.0 以降、ソースとは別に V8 を構築することなく +容易にこの情報を利用できるツールが導入されました。 +組み込みのプロファイラーがアプリケーションのパフォーマンスに関する +洞察を提供するのに役立つ方法を見てみましょう。 -To illustrate the use of the tick profiler, we will work with a simple Express -application. Our application will have two handlers, one for adding new users to -our system: +ティックプロファイラーの使い方を説明するために、 +簡単な Express アプリケーションを使います。 +アプリケーションには、システムに新しいユーザを追加する2つのハンドラがあります。 ```javascript app.get('/newUser', (req, res) => { @@ -50,7 +50,7 @@ app.get('/newUser', (req, res) => { }); ``` -and another for validating user authentication attempts: +ユーザ認証の試行を検証するためのものもあります。 ```javascript app.get('/auth', (req, res) => { @@ -74,26 +74,26 @@ app.get('/auth', (req, res) => { }); ``` -*Please note that these are NOT recommended handlers for authenticating users in -your Node.js applications and are used purely for illustration purposes. You -should not be trying to design your own cryptographic authentication mechanisms -in general. It is much better to use existing, proven authentication solutions.* +*これらは、Node.js アプリケーションでユーザを認証する推奨のハンドラではなく、 +純粋に例を示す目的で使用されていることに注意してください。 +自身の暗号認証メカニズムを一般的に設計しようとしてはいけません。 +既存の実証済みの認証ソリューションを使用することをお勧めします。* -Now assume that we've deployed our application and users are complaining about -high latency on requests. We can easily run the app with the built in profiler: +ここで、アプリケーションをデプロイし、ユーザがリクエストの待ち時間が長いことについて不満を言っているとします。 +内蔵のプロファイラーでアプリを簡単に実行できます。 ``` NODE_ENV=production node --prof app.js ``` -and put some load on the server using `ab` (ApacheBench): +`ab` (ApacheBench) を使用してサーバに負荷をかけます。 ``` curl -X GET "http://localhost:8080/newUser?username=matt&password=password" ab -k -c 20 -n 250 "http://localhost:8080/auth?username=matt&password=password" ``` -and get an ab output of: +そして、次の ab 出力を取得します。 ``` Concurrency Level: 20 @@ -122,27 +122,27 @@ Percentage of the requests served within a certain time (ms) 100% 4225 (longest request) ``` -From this output, we see that we're only managing to serve about 5 requests per -second and that the average request takes just under 4 seconds round trip. In a -real world example, we could be doing lots of work in many functions on behalf -of a user request but even in our simple example, time could be lost compiling -regular expressions, generating random salts, generating unique hashes from user -passwords, or inside the Express framework itself. +この出力から、1秒あたり約5つのリクエストを処理することに成功しているだけで、 +平均リクエストはラウンドトリップで4秒弱かかります。 +実際の例では、ユーザのリクエストに代わって +多くの機能で多くの作業を行っている可能性があります。 +しかし簡単な例でさえ、正規表現のコンパイル、ランダムソルトの生成、ユーザパスワードからの一意のハッシュの生成、 +または Express フレームワーク自体の内部では、時間が無駄になる可能性があります。 -Since we ran our application using the `--prof` option, a tick file was generated -in the same directory as your local run of the application. It should have the -form `isolate-0xnnnnnnnnnnnn-v8.log` (where `n` is a digit). +`--prof` オプションを使用してアプリケーションを実行したため、 +ティックファイルはローカルで実行しているアプリケーションと同じディレクトリに生成されました。 +形式は `isolate-0xnnnnnnnnnnnn-v8.log` (`n` は数字) です。 -In order to make sense of this file, we need to use the tick processor bundled -with the Node.js binary. To run the processor, use the `--prof-process` flag: +このファイルを理解するには、Node.js バイナリにバンドルされている tick プロセッサを使用する必要があります。 +プロセッサを実行するには `--prof-process` フラグを使用します。 ``` node --prof-process isolate-0xnnnnnnnnnnnn-v8.log > processed.txt ``` -Opening processed.txt in your favorite text editor will give you a few different -types of information. The file is broken up into sections which are again broken -up by language. First, we look at the summary section and see: +お気に入りのテキストエディタで processed.txt を開くと、情報が何種類か表示されます。 +ファイルはセクションに分割されており、セクションは言語ごとに分割されています。 +まず、要約セクションを見ると、このようになっています: ``` [Summary]: @@ -154,11 +154,11 @@ up by language. First, we look at the summary section and see: 215 0.6% Unaccounted ``` -This tells us that 97% of all samples gathered occurred in C++ code and that -when viewing other sections of the processed output we should pay most attention -to work being done in C++ (as opposed to JavaScript). With this in mind, we next -find the [C++] section which contains information about which C++ functions are -taking the most CPU time and see: +これは、収集されたすべてのサンプルの 97% が C++ コードで発生しており、 +処理された出力の他のセクションを見るときは +(JavaScript ではなく) C++ で行われている作業に最も注意する必要があることを示しています。 +これを念頭に置いて、次にどの C++ 関数が最も CPU 時間を消費しているかについての情報を含む +[C++] セクションを見てみます。 ``` [C++]: @@ -168,15 +168,15 @@ taking the most CPU time and see: 3165 8.4% 8.6% _malloc_zone_malloc ``` -We see that the top 3 entries account for 72.1% of CPU time taken by the -program. From this output, we immediately see that at least 51.8% of CPU time is -taken up by a function called PBKDF2 which corresponds to our hash generation -from a user's password. However, it may not be immediately obvious how the lower -two entries factor into our application (or if it is we will pretend otherwise -for the sake of example). To better understand the relationship between these -functions, we will next look at the [Bottom up (heavy) profile] section which -provides information about the primary callers of each function. Examining this -section, we find: +上位 3 つのエントリが、プログラムで使用された CPU 時間の 72.1% を占めていることがわかります。 +この出力から、すぐにユーザのパスワードからのハッシュ生成に対応する PBKDF2 と呼ばれる機能によって +CPU 時間の少なくとも 51.8% が占められていることが分かります。 +ただし、下位2つのエントリがどのように私たちのアプリケーションに組み込まれるのか +(またはそうである場合は例のために別のふりをすることになる)、 +すぐには明らかにならないかもしれません。 +これらの関数間の関係をよりよく理解するために、 +次に各関数の主な呼び出し元に関する情報を提供する [Bottom up (heavy) profile] セクションを見ていきます。 +このセクションを調べると、次のことがわかります。 ``` ticks parent name @@ -193,29 +193,29 @@ section, we find: 3161 100.0% LazyCompile: *exports.pbkdf2Sync crypto.js:552:30 ``` -Parsing this section takes a little more work than the raw tick counts above. -Within each of the "call stacks" above, the percentage in the parent column -tells you the percentage of samples for which the function in the row above was -called by the function in the current row. For example, in the middle "call -stack" above for _sha1_block_data_order, we see that `_sha1_block_data_order` occurred -in 11.9% of samples, which we knew from the raw counts above. However, here, we -can also tell that it was always called by the pbkdf2 function inside the -Node.js crypto module. We see that similarly, `_malloc_zone_malloc` was called -almost exclusively by the same pbkdf2 function. Thus, using the information in -this view, we can tell that our hash computation from the user's password -accounts not only for the 51.8% from above but also for all CPU time in the top -3 most sampled functions since the calls to `_sha1_block_data_order` and -`_malloc_zone_malloc` were made on behalf of the pbkdf2 function. - -At this point, it is very clear that the password based hash generation should -be the target of our optimization. Thankfully, you've fully internalized the -[benefits of asynchronous programming][] and you realize that the work to -generate a hash from the user's password is being done in a synchronous way and -thus tying down the event loop. This prevents us from working on other incoming -requests while computing a hash. - -To remedy this issue, you make a small modification to the above handlers to use -the asynchronous version of the pbkdf2 function: +このセクションを解析することは、 +上の生のティックカウントよりも少し多くの作業を要します。 +上記の各「コールスタック」内で、親列のパーセントは、 +上の行の関数が現在の行の関数によって呼び出されたサンプルの割合を示しています。 +たとえば、_sha1_block_data_order の上の中央の "call stack" では、 +`_sha1_block_data_order` がサンプルの 11.9% で発生していることがわかります。 +これは、上記の raw カウントからわかりました。 +ただし、ここでは、Node.js 暗号モジュール内の pbkdf2 関数によって常に呼び出されたこともわかります。 +同様に、`_malloc_zone_malloc` はほとんど同じ pbkdf2 関数によって呼び出されています。 +したがって、このビューの情報を使用して、次のことがわかります。 +`_sha1_block_data_order` と `_malloc_zone_malloc` の呼び出しは pbkdf2 関数に代わって行われたため、 +ユーザのパスワードからのハッシュ計算は、上記の 51.8% だけでなく、 +上位 3 つのサンプル関数のすべての CPU 時間も占めています。 + +この時点で、パスワードベースのハッシュ生成が最適化の対象になるはずです。 +幸い、[非同期プログラミングの利点][] を完全に内部化したので、 +ユーザのパスワードからハッシュを生成する作業は同期的に行われ、 +イベントループが抑制されていることがわかりました。 +これにより、ハッシュを計算している間に +他の着信要求を処理することができなくなります。 + +この問題を解決するには、非同期バージョンの pbkdf2 関数を使用するように +上記のハンドラを少し変更します。 ```javascript app.get('/auth', (req, res) => { @@ -238,8 +238,8 @@ app.get('/auth', (req, res) => { }); ``` -A new run of the ab benchmark above with the asynchronous version of your app -yields: +非同期バージョンのアプリを使って新しい上記の ab ベンチマークを実行すると、 +次のようになります。 ``` Concurrency Level: 20 @@ -268,13 +268,13 @@ Percentage of the requests served within a certain time (ms) 100% 1079 (longest request) ``` -Yay! Your app is now serving about 20 requests per second, roughly 4 times more -than it was with the synchronous hash generation. Additionally, the average -latency is down from the 4 seconds before to just over 1 second. +やりました! アプリは現在、毎秒約20リクエストを処理しています。 +これは同期ハッシュ生成の場合の約4倍です。 +さらに、平均待ち時間は4秒弱から1秒強に減少しています。 -Hopefully, through the performance investigation of this (admittedly contrived) -example, you've seen how the V8 tick processor can help you gain a better -understanding of the performance of your Node.js applications. +うまくいけば、この (明らかに考案された) 例のパフォーマンス調査を通じて、 +V8 ティックプロセッサが Node.js アプリケーションのパフォーマンスの理解を深めるのに +役立つ方法を見ることがあるでしょう。 -[profiler inside V8]: https://v8.dev/docs/profile -[benefits of asynchronous programming]: https://nodesource.com/blog/why-asynchronous +[V8 内部のプロファイラ]: https://v8.dev/docs/profile +[非同期プログラミングの利点]: https://nodesource.com/blog/why-asynchronous From 3b6d45afc9105957ce42876d3486ea8c43cc5efa Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Mon, 13 May 2019 01:12:50 +0900 Subject: [PATCH 13/61] fix japanese translation. --- locale/ja/docs/guides/simple-profiling.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locale/ja/docs/guides/simple-profiling.md b/locale/ja/docs/guides/simple-profiling.md index f7f196c6c27ae..50b3766680b81 100644 --- a/locale/ja/docs/guides/simple-profiling.md +++ b/locale/ja/docs/guides/simple-profiling.md @@ -212,7 +212,7 @@ CPU 時間の少なくとも 51.8% が占められていることが分かり ユーザのパスワードからハッシュを生成する作業は同期的に行われ、 イベントループが抑制されていることがわかりました。 これにより、ハッシュを計算している間に -他の着信要求を処理することができなくなります。 +他の受信したリクエストを処理することができなくなります。 この問題を解決するには、非同期バージョンの pbkdf2 関数を使用するように 上記のハンドラを少し変更します。 From 72d8a18701739b5811f376d1af272778a517a455 Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Mon, 13 May 2019 21:41:05 +0900 Subject: [PATCH 14/61] fixed translation style. --- locale/ja/get-involved/code-and-learn.md | 28 +++++++++++++ locale/ja/get-involved/collab-summit.md | 29 +++++++++++++ locale/ja/get-involved/contribute.md | 53 ++++++++++++++++++++++++ locale/ja/get-involved/index.md | 37 +++++++++++++++++ 4 files changed, 147 insertions(+) diff --git a/locale/ja/get-involved/code-and-learn.md b/locale/ja/get-involved/code-and-learn.md index a2a1da2f9a854..a33c155004d06 100644 --- a/locale/ja/get-involved/code-and-learn.md +++ b/locale/ja/get-involved/code-and-learn.md @@ -2,16 +2,44 @@ title: Code + Learn layout: contribute.hbs --- + # Code + Learn Code & Learn イベントを使用すると、Node.js の主な貢献で始めることができます (またはさらに進みます)。経験豊富なコントリビュータが、Node.js コアへの最初 (または2、3、4) 回目のコミットを手助けします。また、Node.js のコアソースコードの特定の領域を通じて、即席のガイド付きツアーを提供するためにも利用できます。 + ## 近日開催予定の Code + Learn イベント - [Saint-Petersburg, Russia on May 26](https://medium.com/piterjs/code-learn-ce20d330530f) - Medellin, Colombia in June 21st & 22nd [NodeConfCo](https://colombia.nodeconf.com/) + ## 過去の Code + Learn イベント - Bangalore, India at [Node.js - Code & Learn Meetup](https://www.meetup.com/Polyglot-Languages-Runtimes-Java-JVM-nodejs-Swift/events/256057028/): November 17, 2018 diff --git a/locale/ja/get-involved/collab-summit.md b/locale/ja/get-involved/collab-summit.md index 99407a5137dc4..506ba7427c783 100644 --- a/locale/ja/get-involved/collab-summit.md +++ b/locale/ja/get-involved/collab-summit.md @@ -3,6 +3,15 @@ title: コラボレーションサミット layout: contribute.hbs --- + # コラボレーションサミット コラボレーションサミットは、活発なコラボレーション、教育、および知識の共有で Node.js について議論するために 現在および将来のコントリビュータを集めるためのアンカンファレンスです。 @@ -10,6 +19,26 @@ layout: contribute.hbs 重要な決断を下すと同時に、 直接推進したいというエキサイティングな取り組みに取り組むこともできます。 + ## 誰が参加しますか? コラボレーションサミットにはだれもが参加できます。 diff --git a/locale/ja/get-involved/contribute.md b/locale/ja/get-involved/contribute.md index a4e38e32f087e..9b586ec9dccac 100644 --- a/locale/ja/get-involved/contribute.md +++ b/locale/ja/get-involved/contribute.md @@ -3,14 +3,43 @@ title: 貢献する layout: contribute.hbs --- + # 貢献する Node.js への貢献に関心をお寄せいただきありがとうございます。貢献できる方法や場所は複数ありますが、それを促進するためにここにいます。 + ## 一般的な助けを求める `nodejs/node` リポジトリ内のアクティビティーのレベルは非常に高いため、Node.js を使用した一般的なヘルプについての質問または要求は、[Node.js ヘルプリポジトリ](https://github.com/nodejs/help/issues)に向けられるべきです。 + ## 問題を報告する Node.js の問題であると思われるものが見つかった場合は、GitHub プロジェクトに問題を報告することを躊躇わないでください。問題を提出するときは、再現可能なテストケースで問題を表現できることを確認してください。そのテストケースには外部の依存関係を含めないでください。つまり、テストケースは Node.js 以外のものがなくても実行できます。 @@ -26,12 +55,36 @@ Node.js プロジェクトは現在、いくつかの GitHub リポジトリに * Node.js 特有の問題を報告するには、[nodejs/node](https://github.com/nodejs/node) を使用してください。 * この Web サイト特有の問題を報告するには、[nodejs/nodejs.org](https://github.com/nodejs/nodejs.org/issues) を使用してください。 + ## コードの貢献 Node.js にバグを修正したり、新しい機能を追加したい場合は、必ず [Node.js コントリビューションガイドライン](https://github.com/nodejs/node/blob/master/CONTRIBUTING.md#pull-requests) を参照してください。 プロジェクトへのすべての貢献に対する既存のコラボレータによるレビュープロセスもここで説明されています。 どのように始めるべきか疑問に思っているなら、最初の貢献に向かってあなたを導くかもしれない [Node Todo](http://nodetodo.org/) をチェックすることができます。 + ## コラボレータになる コラボレータになることで、コントリビュータはプロジェクトにさらに大きな影響を与えることができます。彼らは貢献を見直すことによって問題を切り分けて他のコントリビュータを手助けすることができ、そしてプロジェクトの未来を形作ることにおいてさらに大きな役割を果たすことができます。TSC によって、Node.js リポジトリ全体にわたって重要かつ貴重な貢献をしていると識別された個人は、コントリビュータになり、プロジェクトへのコミットアクセス権を付与されることがあります。考慮される活動には、次のものの品質が含まれます (ただし、これらに限定されません)。 diff --git a/locale/ja/get-involved/index.md b/locale/ja/get-involved/index.md index ec31c91b07a8b..bf24fe658d091 100644 --- a/locale/ja/get-involved/index.md +++ b/locale/ja/get-involved/index.md @@ -2,6 +2,21 @@ title: 参加する layout: contribute.hbs --- + # 参加する ## コミュニティディスカッション @@ -14,7 +29,16 @@ layout: contribute.hbs - [Node.js Collection](https://medium.com/the-node-js-collection) は、Medium 上のコミュニティキュレーションコンテンツのコレクションです。 - [Community Committee](https://github.com/nodejs/community-committee) は、Node.js Foundation のトップレベルの委員会で、コミュニティに向けた取り組みに焦点を当てています。 + ## 学習 - [公式 API リファレンスドキュメント](/api) は、Node.js API の詳細を説明しています。 @@ -23,6 +47,19 @@ layout: contribute.hbs - [The DEV Community Node.js tag](https://dev.to/t/node) は、Node.js プロジェクト、記事、チュートリアルを共有したり、ディスカッションを開始したり、Node.js 関連のトピックについてのフィードバックを求めたりする場所です。スキルレベルに関係なくすべての開発者が参加できます。 - [Nodeiflux](https://discordapp.com/invite/vUsrbjd) は、Discord でお互いをサポートする Node.js バックエンド開発者のフレンドリーなコミュニティです。 + ## インターナショナルコミュニティサイトとプロジェクト - [中国コミュニティ](http://cnodejs.org) From b16c9b13d64deb0cc4241b311e2db8853b39fbc7 Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Mon, 13 May 2019 21:51:51 +0900 Subject: [PATCH 15/61] fixed dependencies.md translation style. --- locale/ja/docs/meta/topics/dependencies.md | 118 +++++++++++++++++++++ 1 file changed, 118 insertions(+) diff --git a/locale/ja/docs/meta/topics/dependencies.md b/locale/ja/docs/meta/topics/dependencies.md index 1992b9536b54f..4cfd985c384bf 100644 --- a/locale/ja/docs/meta/topics/dependencies.md +++ b/locale/ja/docs/meta/topics/dependencies.md @@ -3,6 +3,24 @@ title: 依存関係 layout: docs.hbs --- + # 依存関係 Node.js がそのように機能するために依存する依存関係がいくつかあります。 @@ -19,6 +37,17 @@ Node.js がそのように機能するために依存する依存関係がいく - [gyp](#gyp) - [gtest](#gtest) + ## ライブラリ ### V8 @@ -28,6 +57,19 @@ V8 は Chrome で使用するために Google によってメンテナンスさ - [ドキュメント](https://v8docs.nodesource.com/) + ### libuv もう1つの重要な依存関係は libuv です。 @@ -38,6 +80,16 @@ V8 は Chrome で使用するために Google によってメンテナンスさ - [ドキュメント](http://docs.libuv.org/) + ### http-parser HTTP 解析は、http-parser という軽量の C ライブラリによって処理されます。 @@ -46,6 +98,19 @@ HTTP 解析は、http-parser という軽量の C ライブラリによって処 - [ドキュメント](https://github.com/joyent/http-parser/) + ### c-ares 一部の非同期 DNS 要求では、Node.js は c-ares というCライブラリを使用します。 @@ -57,6 +122,16 @@ mDNS のようなものはサポートしていないためです。 - [ドキュメント](http://c-ares.haxx.se/docs.html) + ### OpenSSL OpenSSL は、`tls` モジュールと`crypto` モジュールの両方で広く使用されています。 @@ -65,6 +140,16 @@ OpenSSL は、`tls` モジュールと`crypto` モジュールの両方で広く - [ドキュメント](https://www.openssl.org/docs/) + ### zlib 高速な圧縮と解凍のために、Node.js は gzip と libpng での使用でも知られている @@ -73,6 +158,19 @@ Node.js は zlib を使って同期、非同期、ストリーミングの圧縮 - [ドキュメント](http://www.zlib.net/manual.html) + ## ツール ### npm @@ -84,6 +182,17 @@ Node.js アプリケーションを素早く簡単に構築することができ - [ドキュメント](https://docs.npmjs.com/) + ### gyp ビルドシステムは、V8 からコピーされた python ベースのプロジェクトジェネレータである gyp によって処理されます。 @@ -93,6 +202,15 @@ Node.js にはビルドシステムが必要です。 - [ドキュメント](https://gyp.gsrc.io/docs/UserDocumentation.md) + ### gtest ネイティブコードは、Chromium から入手した gtest を使用してテストできます。 From a3688124bca243f61a35fb18f85745d826336a66 Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Mon, 13 May 2019 22:13:13 +0900 Subject: [PATCH 16/61] fixed debugging-getting-started translation style. --- .../docs/guides/debugging-getting-started.md | 280 ++++++++++++++++++ 1 file changed, 280 insertions(+) diff --git a/locale/ja/docs/guides/debugging-getting-started.md b/locale/ja/docs/guides/debugging-getting-started.md index 632a3e8afeb98..4bdec9e8f4e68 100644 --- a/locale/ja/docs/guides/debugging-getting-started.md +++ b/locale/ja/docs/guides/debugging-getting-started.md @@ -3,10 +3,34 @@ title: デバッグ - 入門 layout: docs.hbs --- + # デバッグガイド このガイドは、Node.js アプリケーションとスクリプトのデバッグを開始するのに役立ちます。 + ## インスペクタを有効にする `--inspect` スイッチを指定して起動すると、Node.js プロセスはデバッグクライアントを待機します。 @@ -23,6 +47,15 @@ Node.js 7 以前では、これにより古い Debugger API がアクティブ Node.js 8 以降では、Inspector API を起動します。 --- + ## セキュリティへの影響 デバッガは Node.js 実行環境にフルアクセスできるため、 @@ -30,6 +63,23 @@ Node.js 8 以降では、Inspector API を起動します。 パブリックおよびプライベートネットワークでデバッガポートを公開することによる セキュリティへの影響を理解することが重要です。 + ### デバッグポートを公開するのは危険です デバッガがパブリック IP アドレス、または 0.0.0.0 にバインドされている場合、 @@ -45,12 +95,36 @@ Node.js 8 以降では、Inspector API を起動します。 リモートデバッガクライアントの接続を安全に許可する方法については、 '[リモートデバッグシナリオの有効化](#enabling-remote-debugging-scenarios)'のセクションを参照してください。 + ### ローカルアプリケーションはインスペクタにフルアクセスできます インスペクタポートを 127.0.0.1 (デフォルト) にバインドしても、 マシン上でローカルに実行されているすべてのアプリケーションに無制限のアクセス権が与えられます。 これはローカルデバッガが便利にアタッチできるようにするための仕様です。 + ### ブラウザ、WebSocket、および同一生成元ポリシー Web ブラウザで開かれた Web サイトは、ブラウザセキュリティモデルの下で @@ -65,17 +139,45 @@ Node.js は接続のための 'Host' ヘッダが IP アドレスまたは `loca この制限を回避するには、IP アドレスを指定するか、 または後述のように ssh トンネルを使用します。 + ## インスペクタクライアント 一部の商用およびオープンソースのツールが Node の Inspector に接続できます。 これらに関する基本的な情報は次のとおりです。 + #### [node-inspect](https://github.com/nodejs/node-inspect) * [Inspector プロトコル][]を使用する Node.js Foundation によってサポートされている CLI デバッガ * バージョンは Node にバンドルされており、`node inspect myscript.js`と一緒に使うことができます * 最新バージョンは独立してインストールすることもでき (例えば `npm install -g node-inspect`)、 `node-inspect myscript.js` と一緒に使うことができます + #### [Chrome DevTools](https://github.com/ChromeDevTools/devtools-frontend) 55+ * **オプション 1**: Chromium ベースのブラウザで `chrome://inspect` を開きます。設定ボタンをクリックして、ターゲットホストとポートが表示されていることを確認します。 @@ -83,29 +185,136 @@ Node.js は接続のための 'Host' ヘッダが IP アドレスまたは `loca * **オプション 3**: Chrome Extension NIM (ノードインスペクタマネージャ) をインストールします: https://chrome.google.com/webstore/detail/nim-node-inspector-manage/gnhhdgbaldcilmgcpfddgdbkhjohddkj + #### [Visual Studio Code](https://github.com/microsoft/vscode) 1.10+ * デバッグパネルで、設定アイコンをクリックして `.vscode/launch.json` を開きます。初期設定は "Node.js" を選択してください + #### [Visual Studio](https://github.com/Microsoft/nodejstools) 2017 * メニューから "デバッグ > デバッグの開始" を選択するか、F5 を押します * [詳しい説明](https://github.com/Microsoft/nodejstools/wiki/Debugging) + #### [JetBrains WebStorm](https://www.jetbrains.com/webstorm/) 2017.1+ と他の JetBrains IDE * 新しい Node.js デバッグ設定を作成して Debug をクリックします。Node.js 7 以降の場合、`--inspect` がデフォルトで使用されます。IDE レジストリで `js.debugger.node.use.inspect` のチェックを外します + #### [chrome-remote-interface](https://github.com/cyrus-and/chrome-remote-interface) * Inspector Protocol エンドポイントへの接続を容易にするためのライブラリ + #### [Gitpod](https://www.gitpod.io) * `Debug` ビュー から Node.js デバッグ設定を開始するか、`F5` を押します。[詳しい説明](https://medium.com/gitpod/debugging-node-js-applications-in-theia-76c94c76f0a1) --- + ## コマンドラインオプション 次の表は、デバッグ時のさまざまなランタイムフラグの影響を示しています。 @@ -172,7 +381,41 @@ Node.js は接続のための 'Host' ヘッダが IP アドレスまたは `loca --- + + + ## リモートデバッグシナリオを有効にする デバッガがパブリック IP アドレスを待ち受けないようにすることをお勧めします。 @@ -203,6 +446,21 @@ Node.js アプリケーションがローカルで実行されているかのよ --- + ## レガシーデバッガ **レガシーデバッガは Node 7.7.0 の時点で非推奨になりました。代わりに --inspect と Inspector を使ってください。** @@ -215,6 +473,15 @@ Node.js は TCP ポートで廃止された V8 デバッグプロトコルで定 V8 デバッグプロトコルは、もはや保守もドキュメンテーションもされていません。 + #### [組み込みデバッガ](https://nodejs.org/dist/latest-v6.x/docs/api/debugger.html) Node の組み込みコマンドラインデバッガの下でスクリプトを起動するには、 @@ -222,6 +489,14 @@ Node の組み込みコマンドラインデバッガの下でスクリプトを スクリプトは `--debug-brk` オプションで開始された別のノードプロセスで開始され、 最初のノードプロセスは `_debugger.js` スクリプトを実行してターゲットに接続します。 + #### [node-inspector](https://github.com/node-inspector/node-inspector) Chromium で使用されるインスペクタプロトコルを @@ -230,5 +505,10 @@ Chrome DevTools で Node.js アプリケーションをデバッグします。 + [Inspector プロトコル]: https://chromedevtools.github.io/debugger-protocol-viewer/v8/ [UUID]: https://tools.ietf.org/html/rfc4122 From 774bd1660965dfb2a8a70191c8d9c89689036fc0 Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Mon, 13 May 2019 22:20:24 +0900 Subject: [PATCH 17/61] Update locale/ja/get-involved/collab-summit.md Co-Authored-By: Ryuichi Okumura --- locale/ja/get-involved/collab-summit.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locale/ja/get-involved/collab-summit.md b/locale/ja/get-involved/collab-summit.md index 506ba7427c783..72f161589f092 100644 --- a/locale/ja/get-involved/collab-summit.md +++ b/locale/ja/get-involved/collab-summit.md @@ -15,7 +15,7 @@ exciting efforts they want to push forward in-person. # コラボレーションサミット コラボレーションサミットは、活発なコラボレーション、教育、および知識の共有で Node.js について議論するために 現在および将来のコントリビュータを集めるためのアンカンファレンスです。 -委員会と作業部会は年に2回集まり、 +委員会とワーキンググループは年に2回集まり、 重要な決断を下すと同時に、 直接推進したいというエキサイティングな取り組みに取り組むこともできます。 From 7fc240275c0748f755a2c5dba258bf872d37f2d3 Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Mon, 13 May 2019 22:21:41 +0900 Subject: [PATCH 18/61] Update locale/ja/get-involved/code-and-learn.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 自分も上手い翻訳が思い浮かばなかったので助かります。 Co-Authored-By: Ryuichi Okumura --- locale/ja/get-involved/code-and-learn.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locale/ja/get-involved/code-and-learn.md b/locale/ja/get-involved/code-and-learn.md index a33c155004d06..3ac7b83b121fe 100644 --- a/locale/ja/get-involved/code-and-learn.md +++ b/locale/ja/get-involved/code-and-learn.md @@ -10,7 +10,7 @@ Code & Learn events allow you to get started (or go further) with Node.js core c --> # Code + Learn -Code & Learn イベントを使用すると、Node.js の主な貢献で始めることができます (またはさらに進みます)。経験豊富なコントリビュータが、Node.js コアへの最初 (または2、3、4) 回目のコミットを手助けします。また、Node.js のコアソースコードの特定の領域を通じて、即席のガイド付きツアーを提供するためにも利用できます。 +Code & Learn イベントを使用すると、Node.js の主な貢献で始めることができます (またはさらに踏み込むことができます)。経験豊富なコントリビュータが、Node.js コアへの最初 (または2、3、4) 回目のコミットを手助けします。また、Node.js のコアソースコードの特定の領域を通じて、即席のガイド付きツアーを提供するためにも利用できます。 # Node.js アプリケーションの簡単なプロファイリング Node.js アプリケーションのプロファイリングに使用できるサードパーティ製ツールは多数ありますが、 @@ -20,12 +31,26 @@ code-creation,Stub,2,0x2d5000a33d40,182,"DoubleToIStub" code-creation,Stub,2,0x2d5000a33e00,507,"NumberToStringStub" ``` + 以前は、ティックを解釈するために V8 ソースコードが必要でした。 幸いなことに、Node.js 4.4.0 以降、ソースとは別に V8 を構築することなく 容易にこの情報を利用できるツールが導入されました。 組み込みのプロファイラーがアプリケーションのパフォーマンスに関する 洞察を提供するのに役立つ方法を見てみましょう。 + ティックプロファイラーの使い方を説明するために、 簡単な Express アプリケーションを使います。 アプリケーションには、システムに新しいユーザを追加する2つのハンドラがあります。 @@ -50,6 +75,10 @@ app.get('/newUser', (req, res) => { }); ``` + ユーザ認証の試行を検証するためのものもあります。 ```javascript @@ -74,11 +103,23 @@ app.get('/auth', (req, res) => { }); ``` + *これらは、Node.js アプリケーションでユーザを認証する推奨のハンドラではなく、 純粋に例を示す目的で使用されていることに注意してください。 自身の暗号認証メカニズムを一般的に設計しようとしてはいけません。 既存の実証済みの認証ソリューションを使用することをお勧めします。* + ここで、アプリケーションをデプロイし、ユーザがリクエストの待ち時間が長いことについて不満を言っているとします。 内蔵のプロファイラーでアプリを簡単に実行できます。 @@ -86,6 +127,10 @@ app.get('/auth', (req, res) => { NODE_ENV=production node --prof app.js ``` + `ab` (ApacheBench) を使用してサーバに負荷をかけます。 ``` @@ -93,6 +138,10 @@ curl -X GET "http://localhost:8080/newUser?username=matt&password=password" ab -k -c 20 -n 250 "http://localhost:8080/auth?username=matt&password=password" ``` + そして、次の ab 出力を取得します。 ``` @@ -122,6 +171,15 @@ Percentage of the requests served within a certain time (ms) 100% 4225 (longest request) ``` + この出力から、1秒あたり約5つのリクエストを処理することに成功しているだけで、 平均リクエストはラウンドトリップで4秒弱かかります。 実際の例では、ユーザのリクエストに代わって @@ -129,10 +187,21 @@ Percentage of the requests served within a certain time (ms) しかし簡単な例でさえ、正規表現のコンパイル、ランダムソルトの生成、ユーザパスワードからの一意のハッシュの生成、 または Express フレームワーク自体の内部では、時間が無駄になる可能性があります。 + `--prof` オプションを使用してアプリケーションを実行したため、 ティックファイルはローカルで実行しているアプリケーションと同じディレクトリに生成されました。 形式は `isolate-0xnnnnnnnnnnnn-v8.log` (`n` は数字) です。 + このファイルを理解するには、Node.js バイナリにバンドルされている tick プロセッサを使用する必要があります。 プロセッサを実行するには `--prof-process` フラグを使用します。 @@ -140,6 +209,12 @@ Percentage of the requests served within a certain time (ms) node --prof-process isolate-0xnnnnnnnnnnnn-v8.log > processed.txt ``` + お気に入りのテキストエディタで processed.txt を開くと、情報が何種類か表示されます。 ファイルはセクションに分割されており、セクションは言語ごとに分割されています。 まず、要約セクションを見ると、このようになっています: @@ -154,6 +229,14 @@ node --prof-process isolate-0xnnnnnnnnnnnn-v8.log > processed.txt 215 0.6% Unaccounted ``` + これは、収集されたすべてのサンプルの 97% が C++ コードで発生しており、 処理された出力の他のセクションを見るときは (JavaScript ではなく) C++ で行われている作業に最も注意する必要があることを示しています。 @@ -168,6 +251,18 @@ node --prof-process isolate-0xnnnnnnnnnnnn-v8.log > processed.txt 3165 8.4% 8.6% _malloc_zone_malloc ``` + 上位 3 つのエントリが、プログラムで使用された CPU 時間の 72.1% を占めていることがわかります。 この出力から、すぐにユーザのパスワードからのハッシュ生成に対応する PBKDF2 と呼ばれる機能によって CPU 時間の少なくとも 51.8% が占められていることが分かります。 @@ -193,6 +288,22 @@ CPU 時間の少なくとも 51.8% が占められていることが分かり 3161 100.0% LazyCompile: *exports.pbkdf2Sync crypto.js:552:30 ``` + このセクションを解析することは、 上の生のティックカウントよりも少し多くの作業を要します。 上記の各「コールスタック」内で、親列のパーセントは、 @@ -207,6 +318,15 @@ CPU 時間の少なくとも 51.8% が占められていることが分かり ユーザのパスワードからのハッシュ計算は、上記の 51.8% だけでなく、 上位 3 つのサンプル関数のすべての CPU 時間も占めています。 + この時点で、パスワードベースのハッシュ生成が最適化の対象になるはずです。 幸い、[非同期プログラミングの利点][] を完全に内部化したので、 ユーザのパスワードからハッシュを生成する作業は同期的に行われ、 @@ -214,6 +334,11 @@ CPU 時間の少なくとも 51.8% が占められていることが分かり これにより、ハッシュを計算している間に 他の受信したリクエストを処理することができなくなります。 + この問題を解決するには、非同期バージョンの pbkdf2 関数を使用するように 上記のハンドラを少し変更します。 @@ -238,6 +363,11 @@ app.get('/auth', (req, res) => { }); ``` + 非同期バージョンのアプリを使って新しい上記の ab ベンチマークを実行すると、 次のようになります。 @@ -268,13 +398,30 @@ Percentage of the requests served within a certain time (ms) 100% 1079 (longest request) ``` + やりました! アプリは現在、毎秒約20リクエストを処理しています。 これは同期ハッシュ生成の場合の約4倍です。 さらに、平均待ち時間は4秒弱から1秒強に減少しています。 + うまくいけば、この (明らかに考案された) 例のパフォーマンス調査を通じて、 V8 ティックプロセッサが Node.js アプリケーションのパフォーマンスの理解を深めるのに 役立つ方法を見ることがあるでしょう。 + [V8 内部のプロファイラ]: https://v8.dev/docs/profile [非同期プログラミングの利点]: https://nodesource.com/blog/why-asynchronous From eac7caba69c6be6ed8033feb121d9701fc320750 Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Tue, 14 May 2019 01:03:19 +0900 Subject: [PATCH 21/61] translate a part of diagnostics-flamegraph.md --- .../ja/docs/guides/diagnostics-flamegraph.md | 174 ++++++++++++++++++ 1 file changed, 174 insertions(+) create mode 100644 locale/ja/docs/guides/diagnostics-flamegraph.md diff --git a/locale/ja/docs/guides/diagnostics-flamegraph.md b/locale/ja/docs/guides/diagnostics-flamegraph.md new file mode 100644 index 0000000000000..60ad76fe66682 --- /dev/null +++ b/locale/ja/docs/guides/diagnostics-flamegraph.md @@ -0,0 +1,174 @@ +--- +title: 診断 - フレームのグラフ +layout: docs.hbs +--- + + +# フレームのグラフ + +## フレームグラフは何に役立ちますか? + +フレームグラフは、関数で費やされた CPU 時間を視覚化する方法です。同期処理に時間がかかりすぎる場所を特定するのに役立ちます。 + + +## フレームグラフの作り方 + +Node.js のフレームグラフを作成するのは難しいと聞いたことがあるかもしれませんが、(もはや) そうではありません。 +Solaris vms はフレームグラフには不要です。: + +フレームグラフは `perf` 出力から生成されます。これは Node 固有のツールではありません。これは、費やされた CPU 時間を視覚化する最も強力な方法ですが、Node.js 8 以降で JavaScript コードが最適化される方法に問題がある可能性があります。下記の[perf 出力の問題](#perf-output-issues) のセクションを参照してください。 + + +### あらかじめパッケージ化されたツールを使う + +部分的にフレームグラフを作成する単一のステップが必要な場合は、[0x](https://www.npmjs.com/package/0x) を試してください。 + +運用環境のデプロイメントを診断するために、[0x 運用サーバ](https://github.com/davidmarkclements/0x/blob/master/docs/production-servers.md) という注意書きを読みましょう。 + + +### システムパフォーマンスツールでフレームグラフを作成する + +このガイドの目的は、フレームグラフの作成に関連する手順を示し、各手順を管理し続けることです。 + +それぞれのステップをよりよく理解したいならば、続くセクションを見てください。 + +それでは作業に取り掛かりましょう。 + + +1. `perf` をインストールします (まだインストールされていなければ、通常 linux-tools-common パッケージ経由で利用可能です) +2. `perf` を実行してみてください - カーネルモジュールが足りないと表示されるかもしれません、それらもインストールしてください +3. perf を有効にして node を実行します (Node.js のバージョンに固有のヒントについては [perf の出力の問題](#perf-output-issues) を参照してください) +```bash +perf record -e cycles:u -g -- node --perf-basic-prof app.js +``` +4. パッケージが足りないために perf を実行できないと表示されていない限り、警告を無視してください。カーネルモジュールのサンプルにアクセスできないという警告が表示されることがあります +5. `perf script > perfs.out` を実行して、すぐに視覚化できるデータファイルを生成します。読みやすいグラフに[クリーンアップを適用する](#filtering-out-node-internal-functions)と便利です +6. stackvis がインストールされていない場合は、`npm i -g stackvis`を実行して stackvis をインストールします +7. `stackvis perf < perfs.out > flamegraph.htm` を実行します + + +お気に入りのブラウザでフレームグラフファイルを開いて、それが出力されるのを見てください。色分けされているので、最初に最も彩度の高いオレンジ色のバーに集中できます。それらは CPU を多用する機能を表している可能性があります。 + +言及する価値のあること - フレームグラフの要素をクリックするならば、その周囲のズームインはグラフの上に表示されるでしょう。 + +### Using `perf` to sample a running process + +This is great for recording flame graph data from an already running process that you don't want to interrupt. Imagine a production process with a hard to reproduce issue. + +```bash +perf record -F99 -p `pgrep -n node` -g -- sleep 3 +``` + +Wait, what is that `sleep 3` for? It's there to keep the perf running - despite `-p` option pointing to a different pid, the command needs to be executed on a process and end with it. +perf runs for the life of the command you pass to it, whether or not you're actually profiling that command. `sleep 3` ensures that perf runs for 3 seconds. + +Why is `-F` (profiling frequency) set to 99? It's a reasonable default. You can adjust if you want. +`-F99` tells perf to take 99 samples per second, for more precision increase the value. Lower values should produce less output with less precise results. Precision you need depends on how long your CPU intensive functions really run. If you're looking for the reason of a noticeable slowdown, 99 frames per second should be more than enough. + +After you get that 3 second perf record, proceed with generating the flame graph with the last two steps from above. + +### Filtering out Node.js internal functions + +Usually you just want to look at the performance of your own calls, so filtering out Node.js and V8 internal functions can make the graph much easier to read. You can clean up your perf file with: + +```bash +sed -i \ + -e "/( __libc_start| LazyCompile | v8::internal::| Builtin:| Stub:| LoadIC:|\[unknown\]| LoadPolymorphicIC:)/d" \ + -e 's/ LazyCompile:[*~]\?/ /' \ + perfs.out +``` + +If you read your flame graph and it seems odd, as if something is missing in the key function taking up most time, try generating your flame graph without the filters - maybe you got a rare case of an issue with Node.js itself. + +### Node.js's profiling options + +`--perf-basic-prof-only-functions` and `--perf-basic-prof` are the two that are useful for debugging your JavaScript code. Other options are used for profiling Node.js itself, which is outside the scope of this guide. + +`--perf-basic-prof-only-functions` produces less output, so it's the option with least overhead. + +### Why do I need them at all? + +Well, without these options you'll still get a flame graph, but with most bars labeled `v8::Function::Call`. + +## `perf` output issues + +### Node.js 8.x V8 pipeline changes + +Node.js 8.x and above ships with new optimizations to JavaScript compilation pipeline in V8 engine which makes function names/references unreachable for perf sometimes. (It's called Turbofan) + +The result is you might not get your function names right in the flame graph. + +You'll notice `ByteCodeHandler:` where you'd expect function names. + +[0x](https://www.npmjs.com/package/0x) has some mitigations for that built in. + +For details see: +- https://github.com/nodejs/benchmarking/issues/168 +- https://github.com/nodejs/diagnostics/issues/148#issuecomment-369348961 + +### Node.js 10+ + +Node.js 10.x addresses the issue with Turbofan using the `--interpreted-frames-native-stack` flag. + +Run `node --interpreted-frames-native-stack --perf-basic-prof-only-functions` to get function names in the flame graph regardless of which pipeline V8 used to compile your JavaScript. + +### Broken labels in the flame graph + +If you're seeing labels looking like this +``` +node`_ZN2v88internal11interpreter17BytecodeGenerator15VisitStatementsEPNS0_8ZoneListIPNS0_9StatementEEE +``` +it means the Linux perf you're using was not compiled with demangle support, see https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1396654 for example + + +## Examples + +Practice capturing flame graphs yourself with [a flame graph exercise](https://github.com/naugtur/node-example-flamegraph)! From c5b269e5829501ad378d5d4aa95a2f82db3a3e39 Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Tue, 14 May 2019 01:05:43 +0900 Subject: [PATCH 22/61] fixed a part of collab-summit translation. --- locale/ja/get-involved/collab-summit.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locale/ja/get-involved/collab-summit.md b/locale/ja/get-involved/collab-summit.md index 506ba7427c783..dd1b38d4fcc4a 100644 --- a/locale/ja/get-involved/collab-summit.md +++ b/locale/ja/get-involved/collab-summit.md @@ -17,7 +17,7 @@ exciting efforts they want to push forward in-person. 現在および将来のコントリビュータを集めるためのアンカンファレンスです。 委員会と作業部会は年に2回集まり、 重要な決断を下すと同時に、 -直接推進したいというエキサイティングな取り組みに取り組むこともできます。 +直接推進したいというエキサイティングな取り組みに参加することもできます。 # ガイド ## 一般 @@ -15,6 +27,15 @@ layout: docs.hbs - [安全な Buffer コンストラクタへの移行](buffer-constructor-deprecation/) + ## Node.js コアコンセプト - [ブロッキングとノンブロッキングの概要](blocking-vs-non-blocking/) @@ -23,6 +44,17 @@ layout: docs.hbs - [Node.js のタイマー](timers-in-node/) + ## モジュール関連ガイド - [HTTP トランザクションの構造](anatomy-of-an-http-transaction/) From a3f1e9eaaae0ebc84b2418114ac404a2d0294719 Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Thu, 16 May 2019 12:33:30 +0900 Subject: [PATCH 26/61] Update locale/ja/docs/guides/diagnostics-flamegraph.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit typoです... Co-Authored-By: jigsaw --- locale/ja/docs/guides/diagnostics-flamegraph.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locale/ja/docs/guides/diagnostics-flamegraph.md b/locale/ja/docs/guides/diagnostics-flamegraph.md index 60ad76fe66682..30a56e67cc3af 100644 --- a/locale/ja/docs/guides/diagnostics-flamegraph.md +++ b/locale/ja/docs/guides/diagnostics-flamegraph.md @@ -29,7 +29,7 @@ Flame graphs are generated from `perf` output, which is not a node-specific tool ## フレームグラフの作り方 Node.js のフレームグラフを作成するのは難しいと聞いたことがあるかもしれませんが、(もはや) そうではありません。 -Solaris vms はフレームグラフには不要です。: +Solaris vms はフレームグラフには不要です。 フレームグラフは `perf` 出力から生成されます。これは Node 固有のツールではありません。これは、費やされた CPU 時間を視覚化する最も強力な方法ですが、Node.js 8 以降で JavaScript コードが最適化される方法に問題がある可能性があります。下記の[perf 出力の問題](#perf-output-issues) のセクションを参照してください。 From 35920abb7758b0a12051a3032e7fc1a0a91e5cdc Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Fri, 17 May 2019 21:48:13 +0900 Subject: [PATCH 27/61] fixed review point. --- locale/ja/docs/guides/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/locale/ja/docs/guides/index.md b/locale/ja/docs/guides/index.md index 2ef123ceb018a..c2862810a091f 100644 --- a/locale/ja/docs/guides/index.md +++ b/locale/ja/docs/guides/index.md @@ -2,6 +2,7 @@ title: ガイド layout: docs.hbs --- + +### `perf`を使って実行中のプロセスをサンプリングする + +これは、中断したくない、既に実行中のプロセスからフレームグラフデータを記録するのに最適です。再現が困難な問題を伴う製造プロセスを想像してください。 + +```bash +perf record -F99 -p `pgrep -n node` -g -- sleep 3 +``` + +ちょっと待ってください、何のための `sleep 3` でしょうか? それはperf を実行し続けるためにあります。`-p` オプションが異なる pid を指していますが、コマンドはプロセス上で実行され、そこで終了する必要があります。perf は、実際にそのコマンドをプロファイリングしているかどうかにかかわらず、渡したコマンドの存続期間にわたって実行されます。`sleep 3` は perf が 3 秒間実行されるようにします。 + +`-F` (プロファイリング頻度) が 99 に設定されているのはなぜですか? これは妥当なデフォルトの値です。必要に応じて調整できます。`-F99` はサンプルを毎秒 99 取るように perf に指示します。より正確にするには値を増やします。値が低いと出力が少なくなり、精度が低下します。必要な精度は、CPU に負荷がかかる機能が実際にどれくらいの時間実行されるかによって異なります。顕著な減速の理由を探しているなら、毎秒 99 フレームで十分すぎるはずです。 + +その 3 秒の perf レコードを取得したら、上に書いてある手順の最後の2つを実施してフレームグラフの生成に進みます。 + + +### Node.js の内部関数を除外する + +通常、自身の呼び出しのパフォーマンスを見たいだけなので、Node.js と V8 の内部関数を除外することでグラフをもっと読みやすくすることができます。次のようにして perf ファイルをクリーンアップできます。 + +```bash +sed -i \ + -e "/( __libc_start| LazyCompile | v8::internal::| Builtin:| Stub:| LoadIC:|\[unknown\]| LoadPolymorphicIC:)/d" \ + -e 's/ LazyCompile:[*~]\?/ /' \ + perfs.out +``` + +フレームグラフを参照していて、何か時間がかかるキー関数が欠けているかのように不思議に思った場合は、フィルタなしでフレームグラフを生成してみてください。Node.js 自体に問題が発生することはまれです。 + + + +### Node.js のプロファイリングオプション + +`--perf-basic-prof-only-functions` と `--perf-basic-prof` は JavaScript コードをデバッグするのに便利です。Node.js 自体をプロファイリングするために他のオプションが使用されますが、これはこのガイドの範囲外です。 + +`--perf-basic-prof-only-functions` は出力が少なくなるので、オーバーヘッドが最も少ないオプションです。 + ### Why do I need them at all? Well, without these options you'll still get a flame graph, but with most bars labeled `v8::Function::Call`. From dd0bc4ed2f1a0fdc46a8c3595a0bec873d47e972 Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Sun, 26 May 2019 03:25:58 +0900 Subject: [PATCH 29/61] translate japanese. --- .../ja/docs/guides/diagnostics-flamegraph.md | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/locale/ja/docs/guides/diagnostics-flamegraph.md b/locale/ja/docs/guides/diagnostics-flamegraph.md index 31659d8a92dcb..04a31c276caf2 100644 --- a/locale/ja/docs/guides/diagnostics-flamegraph.md +++ b/locale/ja/docs/guides/diagnostics-flamegraph.md @@ -174,10 +174,17 @@ sed -i \ `--perf-basic-prof-only-functions` は出力が少なくなるので、オーバーヘッドが最も少ないオプションです。 + +### どうしてそれらを全く必要としないのですか? + +ええ、これらのオプションがなくてもフレームグラフが得られますが、ほとんどのバーには `v8::Function::Call` というラベルが付いています。 + + +## `perf`出力の問題 + +### Node.js 8.x V8 パイプラインの変更 + +Node.js 8.x 以降には、V8 エンジンの JavaScript コンパイルパイプラインに対する新しい最適化が付属しているため、関数名/参照がperf にアクセスできない場合があります。(それはターボファンと呼ばれています) + +その結果、関数名がフレームグラフの中で正しく得られないかもしれません。 + +あなたは、関数名を期待するところで `ByteCodeHandler:` に気付くでしょう。 + +[0x](https://www.npmjs.com/package/0x) にはいくつかの緩和策が組み込まれています。 + +詳細: +- https://github.com/nodejs/benchmarking/issues/168 +- https://github.com/nodejs/diagnostics/issues/148#issuecomment-369348961 + + +### Node.js 10 以降 + +Node.js 10.x は Turbofan の問題に `--interpreted-frames-native-stack` フラグを使って対処します。 + +JavaScript をコンパイルするためにどの V8 パイプラインが使用されたかにかかわらず、フレームグラフの関数名を得るために `node --interpreted-frames-native-stack --perf-basic-prof-only-functions` を実行してください。 + + +### フレームグラフのラベルが壊れている + +このようなラベルが表示されている場合 +``` +node`_ZN2v88internal11interpreter17BytecodeGenerator15VisitStatementsEPNS0_8ZoneListIPNS0_9StatementEEE +``` +それは使っている Linux の perf が demangle サポート付きでコンパイルされていないことを意味します。例は https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1396654 を参照してください。 + + + +## 例 + +[フレームグラフ演習](https://github.com/naugtur/node-example-flamegraph)を使用してフレームグラフを自分でキャプチャする練習をしてください! From 8a5403307aa029aca42dd18eceb107d7c58d33ed Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Sun, 26 May 2019 06:29:22 +0900 Subject: [PATCH 30/61] translate into japanese. --- locale/ja/docs/guides/nodejs-docker-webapp.md | 286 +++++++++++++++++- 1 file changed, 285 insertions(+), 1 deletion(-) diff --git a/locale/ja/docs/guides/nodejs-docker-webapp.md b/locale/ja/docs/guides/nodejs-docker-webapp.md index 434154a2f0535..f5398d35933b7 100644 --- a/locale/ja/docs/guides/nodejs-docker-webapp.md +++ b/locale/ja/docs/guides/nodejs-docker-webapp.md @@ -1,8 +1,9 @@ --- -title: Dockerizing a Node.js web app +title: Node.js Web アプリケーションを Docker 化する layout: docs.hbs --- + +# Node.js Web アプリケーションを Docker 化する + +この例の目的は、Node.js アプリケーションを Docker コンテナに取り込む方法を説明することです。 +このガイドは開発を目的としており、 +本番展開を目的と*していません*。 +このガイドでは、正常に [Docker がインストール](https://docs.docker.com/engine/installation/)され、 +Node.js アプリケーションがどのように構成されているかについての基本的な知識があることも前提としています。 + +このガイドの最初の部分では、Node.js で単純な Web アプリケーションを作成してから、 +そのアプリケーション用の Docker イメージを作成し、 +最後にそのイメージをコンテナとして実行します。 + +Docker を使用すると、ソフトウェア開発用に、コンテナと呼ばれる標準化された単位に +すべての依存関係を持つアプリケーションをパッケージ化できます。 +コンテナは、Linux オペレーティングシステムの基本バージョンを削除したものです。 +イメージはコンテナにロードするソフトウェアです。 + + +## Node.js アプリを作成する + +まず、すべてのファイルを配置する新しいディレクトリを作成します。 +このディレクトリにあなたのアプリとその依存関係を記述する `package.json` ファイルを作成してください: + +```json +{ + "name": "docker_web_app", + "version": "1.0.0", + "description": "Node.js on Docker", + "author": "First Last ", + "main": "server.js", + "scripts": { + "start": "node server.js" + }, + "dependencies": { + "express": "^4.16.1" + } +} +``` + +新しい `package.json` ファイルを使って、`npm install` を実行してください。 +バージョン 5 以降の `npm` を使っているなら、 +これは Docker イメージにコピーされる `package-lock.json` ファイルを生成します。 + +それから、[Express.js](https://expressjs.com/) フレームワークを使って +Web アプリケーションを定義する `server.js` ファイルを作成します。 + +```javascript +'use strict'; + +const express = require('express'); + +// Constants +const PORT = 8080; +const HOST = '0.0.0.0'; + +// App +const app = express(); +app.get('/', (req, res) => { + res.send('Hello world\n'); +}); + +app.listen(PORT, HOST); +console.log(`Running on http://${HOST}:${PORT}`); +``` + +次のステップでは、公式の Docker イメージを使用して +Docker コンテナ内でこのアプリを実行する方法を見ていきます。 +まず、アプリの Docker イメージを作成する必要があります。 + + +## Dockerfile を作成する + +`Dockerfile` という名前の空のファイルを作ります。 + +```markup +touch Dockerfile +``` + +お気に入りのテキストエディタで `Dockerfile` を開きます + +最初にしなければならないことは、どのイメージから構築したいかを定義することです。 +ここでは[Docker Hub](https://hub.docker.com/)から入手できる +`node` の最新の LTS (long term support) バージョン `8` を使います。 + +```docker +FROM node:8 +``` + +次に、画像内にアプリケーションコードを入れるディレクトリを作成します。 +アプリケーションの作業ディレクトリになります。 + +```docker +# アプリディレクトリを作成する +WORKDIR /usr/src/app +``` + +このイメージには Node.js と NPM が既にインストールされていますので、 +次に必要な作業は `npm` バイナリを使ってアプリケーションの依存関係をインストールすることです。 +`npm` バージョン 4 以前を使用している場合、 +`package-lock.json` ファイルは*生成されない*ことに注意してください。 + +```docker +# アプリの依存関係をインストールする +# ワイルドカードを使用して、package.json と package-lock.json の両方が確実にコピーされるようにします。 +# 可能であれば (npm@5+) +COPY package*.json ./ + +RUN npm install +# 本番用にコードを作成している場合 +# RUN npm install --only=production +``` + +作業ディレクトリ全体をコピーするのではなく、 +`package.json` ファイルだけをコピーしていることに注意してください。 +これにより、キャッシュされた Docker レイヤーを利用することができます。 +bitJudo は[このこと](http://bitjudo.com/blog/2014/03/13/building-efficient-dockerfiles-node-dot-js/)についてよく説明しています。 + +アプリのソースコードを Docker イメージ内にバンドルするには、`COPY` +命令を使います。 + +```docker +# アプリのソースをバンドルする +COPY . . +``` + +アプリは `8080` ポートにバインドされているので `EXPOSE` 命令を使って +`docker` デーモンによってマッピングされるでしょう: + +```docker +EXPOSE 8080 +``` + +最後に重要なことを言い忘れましたが、ランタイムを定義する `CMD` を使ってアプリケーションを実行するためのコマンドを定義してください。 +ここでサーバを起動するために `node server.js` を実行する +基本的な `npm start` を使います: + +```docker +CMD [ "npm", "start" ] +``` + +`Dockerfile` はこのようになっているはずです。 + +```docker +FROM node:8 + +# アプリディレクトリを作成する +WORKDIR /usr/src/app + +# アプリの依存関係をインストールする +# ワイルドカードを使用して、package.json と package-lock.json の両方が確実にコピーされるようにします。 +# 可能であれば (npm@5+) +COPY package*.json ./ + +RUN npm install +# 本番用にコードを作成している場合 +# RUN npm install --only=production + +# アプリのソースをバンドルする +COPY . . + +EXPOSE 8080 +CMD [ "npm", "start" ] +``` + + +## .dockerignore ファイル + +以下の内容で `Dockerfile` と同じディレクトリに `.dockerignore` ファイルを +作成してください: + +``` +node_modules +npm-debug.log +``` + +これにより、ローカルモジュールとデバッグログが Docker イメージにコピーされたり、 +イメージ内にインストールされているモジュールが上書きされたりするのを防ぐことができます。 + + +## 自分のイメージを構築する + +`Dockerfile` があるディレクトリに行き、次のコマンドを実行して Docker イメージを構築してください。 +`-t` フラグを使うとイメージにタグを付けることができるので、 +後で `docker images` コマンドを使って見つけやすくなります。 + +```bash +$ docker build -t /node-web-app . +``` + +あなたのイメージは Docker によって表示されます。 + +```bash +$ docker images + +# 例 +REPOSITORY TAG ID CREATED +node 8 1934b0b038d1 5 days ago +/node-web-app latest d64d3505b0d2 1 minute ago +``` + + +## イメージの実行 + +イメージを `-d` で実行するとコンテナは分離モードで実行され、バックグラウンドで実行されたままになります。 +`-p` フラグはパブリックポートをコンテナ内のプライベートポートにリダイレクトします。 +以前に構築した画像を実行します。 + +```bash +$ docker run -p 49160:8080 -d /node-web-app +``` + +アプリの出力をプリントします。 + +```bash +# コンテナ ID を取得する +$ docker ps + +# アプリ出力をプリントする +$ docker logs + +# 例 +Running on http://localhost:8080 +``` + +コンテナの中に入る必要があるなら、`exec` コマンドを使うことができます。 + +```bash +# コンテナに入る +$ docker exec -it /bin/bash +``` + + +## テスト + +アプリをテストするには、Docker がマッピングしたアプリのポートを取得します。 + +```bash +$ docker ps + +# 例 +ID IMAGE COMMAND ... PORTS +ecce33b30ebf /node-web-app:latest npm start ... 49160->8080 +``` + +上の例では、Docker はコンテナの内側の `8080` ポートをマシンの `49160` ポートに +マッピングしました。 + +これで `curl` (必要ならばインストールしてください: `sudo apt-get +install curl`) を使ってアプリを呼び出すことができます: + +```bash +$ curl -i localhost:49160 + +HTTP/1.1 200 OK +X-Powered-By: Express +Content-Type: text/html; charset=utf-8 +Content-Length: 12 +ETag: W/"c-M6tWOb/Y57lesdjQuHeB1P/qTV0" +Date: Mon, 13 Nov 2017 20:53:59 GMT +Connection: keep-alive + +Hello world +``` + +このチュートリアルが、Docker 上で簡単な Node.js アプリケーションを立ち上げて実行するのに +役立つことを願います。 + +Docker および Docker 上の Node.js に関する詳細は、 +次の場所にあります。 + +* [公式 Node.js Docker イメージ](https://hub.docker.com/_/node/) +* [Node.js Docker ベストプラクティスガイド](https://github.com/nodejs/docker-node/blob/master/docs/BestPractices.md) +* [公式 Docker ドキュメント](https://docs.docker.com/) +* [Docker Tag on Stack Overflow](https://stackoverflow.com/questions/tagged/docker) +* [Docker Subreddit](https://reddit.com/r/docker) From 08143470b7b4a10df31a6e94c79b2e90e637a106 Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Sun, 26 May 2019 14:03:57 +0900 Subject: [PATCH 31/61] Update locale/ja/docs/guides/nodejs-docker-webapp.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 承知です。 Co-Authored-By: Ryuichi Okumura --- locale/ja/docs/guides/nodejs-docker-webapp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locale/ja/docs/guides/nodejs-docker-webapp.md b/locale/ja/docs/guides/nodejs-docker-webapp.md index f5398d35933b7..d2a255cbfae1a 100644 --- a/locale/ja/docs/guides/nodejs-docker-webapp.md +++ b/locale/ja/docs/guides/nodejs-docker-webapp.md @@ -140,7 +140,7 @@ console.log(`Running on http://${HOST}:${PORT}`); ``` 次のステップでは、公式の Docker イメージを使用して -Docker コンテナ内でこのアプリを実行する方法を見ていきます。 +Docker コンテナ内でこのアプリケーションを実行する方法を見ていきます。 まず、アプリの Docker イメージを作成する必要があります。 -## Node.js アプリを作成する +## Node.js アプリケーションを作成する まず、すべてのファイルを配置する新しいディレクトリを作成します。 このディレクトリにあなたのアプリケーションとその依存関係を記述する `package.json` ファイルを作成してください: From 4357f2241bcbc55df0696de81fb716b124559d5a Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Sun, 26 May 2019 17:47:17 +0900 Subject: [PATCH 39/61] Update locale/ja/docs/guides/nodejs-docker-webapp.md Co-Authored-By: Ryuichi Okumura --- locale/ja/docs/guides/nodejs-docker-webapp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locale/ja/docs/guides/nodejs-docker-webapp.md b/locale/ja/docs/guides/nodejs-docker-webapp.md index da7a63c700fe1..da2396cc697bb 100644 --- a/locale/ja/docs/guides/nodejs-docker-webapp.md +++ b/locale/ja/docs/guides/nodejs-docker-webapp.md @@ -257,7 +257,7 @@ touch Dockerfile FROM node:8 ``` -次に、画像内にアプリケーションコードを入れるディレクトリを作成します。 +次に、イメージ内にアプリケーションコードを入れるディレクトリを作成します。 アプリケーションの作業ディレクトリになります。 ```docker From c69b85224bf4c5974158c16a312ccc54564da74d Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Sun, 26 May 2019 17:47:24 +0900 Subject: [PATCH 40/61] Update locale/ja/docs/guides/nodejs-docker-webapp.md Co-Authored-By: Ryuichi Okumura --- locale/ja/docs/guides/nodejs-docker-webapp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locale/ja/docs/guides/nodejs-docker-webapp.md b/locale/ja/docs/guides/nodejs-docker-webapp.md index da2396cc697bb..2ecd893003c2c 100644 --- a/locale/ja/docs/guides/nodejs-docker-webapp.md +++ b/locale/ja/docs/guides/nodejs-docker-webapp.md @@ -290,7 +290,7 @@ bitJudo は[このこと](http://bitjudo.com/blog/2014/03/13/building-efficient- 命令を使います。 ```docker -# アプリのソースをバンドルする +# アプリケーションのソースをバンドルする COPY . . ``` From 7396b82e64ec91e4f80bd72bd75b7cc9658ec8e3 Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Sun, 26 May 2019 17:47:33 +0900 Subject: [PATCH 41/61] Update locale/ja/docs/guides/nodejs-docker-webapp.md Co-Authored-By: Ryuichi Okumura --- locale/ja/docs/guides/nodejs-docker-webapp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locale/ja/docs/guides/nodejs-docker-webapp.md b/locale/ja/docs/guides/nodejs-docker-webapp.md index 2ecd893003c2c..1617c5066497b 100644 --- a/locale/ja/docs/guides/nodejs-docker-webapp.md +++ b/locale/ja/docs/guides/nodejs-docker-webapp.md @@ -317,7 +317,7 @@ FROM node:8 # アプリディレクトリを作成する WORKDIR /usr/src/app -# アプリの依存関係をインストールする +# アプリケーションの依存関係をインストールする # ワイルドカードを使用して、package.json と package-lock.json の両方が確実にコピーされるようにします。 # 可能であれば (npm@5+) COPY package*.json ./ From f6956baab92d384521eb3b76088fe293a62376f7 Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Sun, 26 May 2019 17:47:43 +0900 Subject: [PATCH 42/61] Update locale/ja/docs/guides/nodejs-docker-webapp.md Co-Authored-By: Ryuichi Okumura --- locale/ja/docs/guides/nodejs-docker-webapp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locale/ja/docs/guides/nodejs-docker-webapp.md b/locale/ja/docs/guides/nodejs-docker-webapp.md index 1617c5066497b..f4b9abe21ba18 100644 --- a/locale/ja/docs/guides/nodejs-docker-webapp.md +++ b/locale/ja/docs/guides/nodejs-docker-webapp.md @@ -515,7 +515,7 @@ following places: --> ## テスト -アプリをテストするには、Docker がマッピングしたアプリのポートを取得します。 +アプリケーションをテストするには、Docker がマッピングしたアプリケーションのポートを取得します。 ```bash $ docker ps From acfa793cced8c54047c2113c092afe76717a6fd7 Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Sun, 26 May 2019 17:47:53 +0900 Subject: [PATCH 43/61] Update locale/ja/docs/guides/nodejs-docker-webapp.md Co-Authored-By: Ryuichi Okumura --- locale/ja/docs/guides/nodejs-docker-webapp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locale/ja/docs/guides/nodejs-docker-webapp.md b/locale/ja/docs/guides/nodejs-docker-webapp.md index f4b9abe21ba18..6585bddb9f6b2 100644 --- a/locale/ja/docs/guides/nodejs-docker-webapp.md +++ b/locale/ja/docs/guides/nodejs-docker-webapp.md @@ -326,7 +326,7 @@ RUN npm install # 本番用にコードを作成している場合 # RUN npm install --only=production -# アプリのソースをバンドルする +# アプリケーションのソースをバンドルする COPY . . EXPOSE 8080 From 868e43ec2e16eeaea39020b2786484668f4cbce1 Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Sun, 26 May 2019 17:48:00 +0900 Subject: [PATCH 44/61] Update locale/ja/docs/guides/nodejs-docker-webapp.md Co-Authored-By: Ryuichi Okumura --- locale/ja/docs/guides/nodejs-docker-webapp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locale/ja/docs/guides/nodejs-docker-webapp.md b/locale/ja/docs/guides/nodejs-docker-webapp.md index 6585bddb9f6b2..e87136b5ea16e 100644 --- a/locale/ja/docs/guides/nodejs-docker-webapp.md +++ b/locale/ja/docs/guides/nodejs-docker-webapp.md @@ -314,7 +314,7 @@ CMD [ "npm", "start" ] ```docker FROM node:8 -# アプリディレクトリを作成する +# アプリケーションディレクトリを作成する WORKDIR /usr/src/app # アプリケーションの依存関係をインストールする From 5f0a972097f8b201bc1d37d1c3161aced71a8a95 Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Sun, 26 May 2019 17:48:09 +0900 Subject: [PATCH 45/61] Update locale/ja/docs/guides/nodejs-docker-webapp.md Co-Authored-By: Ryuichi Okumura --- locale/ja/docs/guides/nodejs-docker-webapp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locale/ja/docs/guides/nodejs-docker-webapp.md b/locale/ja/docs/guides/nodejs-docker-webapp.md index e87136b5ea16e..13e7d66122683 100644 --- a/locale/ja/docs/guides/nodejs-docker-webapp.md +++ b/locale/ja/docs/guides/nodejs-docker-webapp.md @@ -294,7 +294,7 @@ bitJudo は[このこと](http://bitjudo.com/blog/2014/03/13/building-efficient- COPY . . ``` -アプリは `8080` ポートにバインドされているので `EXPOSE` 命令を使って +アプリケーションは `8080` ポートにバインドされているので `EXPOSE` 命令を使って `docker` デーモンによってマッピングされるでしょう: ```docker From 33c8e9a4a5545f90dc0eeb10e36d9d0299367b19 Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Sun, 26 May 2019 18:15:18 +0900 Subject: [PATCH 46/61] translate before Phase2 --- .../guides/buffer-constructor-deprecation.md | 148 +++++++++++++++++- 1 file changed, 145 insertions(+), 3 deletions(-) diff --git a/locale/ja/docs/guides/buffer-constructor-deprecation.md b/locale/ja/docs/guides/buffer-constructor-deprecation.md index 0786a3519b55a..7a03a45a80150 100644 --- a/locale/ja/docs/guides/buffer-constructor-deprecation.md +++ b/locale/ja/docs/guides/buffer-constructor-deprecation.md @@ -1,8 +1,9 @@ --- -title: Porting to the Buffer.from()/Buffer.alloc() API +title: Buffer.from()/Buffer.alloc() API への移植 layout: docs.hbs --- + +# `Buffer.from()`/`Buffer.alloc()` API への移植 + +## 概要 + +このガイドは安全な `Buffer` コンストラクタメソッドに移行する方法を説明します。マイグレーションにより、以下の非推奨警告が修正されました。 + +
+The Buffer() and new Buffer() constructors are not recommended for use due to security and usability concerns. Please use the new Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() construction methods instead. +
+ +- [Variant 1: Drop support for Node.js ≤ 4.4.x and 5.0.0 — 5.9.x](#variant-1) (*推奨*) +- [Variant 2: Use a polyfill](#variant-2) +- [Variant 3: Manual detection, with safeguards](#variant-3) + + +### `grep` を使って問題のあるコードを見つける + +`grep -nrE '[^a-zA-Z](Slow)?Buffer\s*\(' --exclude-dir node_modules` を実行するだけです。 + +それにより自身のコードの中ですべての潜在的に危険な箇所が分かるでしょう (とてもありそうにない例外を除いて)。 + + +### Node.js 8 を使用して問題のあるコードを見つける + +Node.js ≥ 8.0.0 (これが推奨されています) を使用している場合、Node.js は関連するコードを見つけるのに役立つ複数のオプションを公開します。 + +- `--trace-warnings` は Node.js にこの警告と Node.js によって表示される他の警告のスタックトレースを表示させます +- `--trace-deprecation` でも同じことができますが、それは非推奨警告のためだけです +- `--pending-deprecation` はより多くの種類の非推奨警告を表示します。特に Node.js 8 でも、`Buffer()` の非推奨警告が表示されます + +環境変数を使用してこれらのフラグを設定できます。 + +```bash +$ export NODE_OPTIONS='--trace-warnings --pending-deprecation' +$ cat example.js +'use strict'; +const foo = new Buffer('foo'); +$ node example.js +(node:7147) [DEP0005] DeprecationWarning: The Buffer() and new Buffer() constructors are not recommended for use due to security and usability concerns. Please use the new Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() construction methods instead. + at showFlaggedDeprecation (buffer.js:127:13) + at new Buffer (buffer.js:148:3) + at Object. (/path/to/example.js:2:13) + [... more stack trace lines ...] +``` + +Variant 1: Drop support for Node.js ≤ 4.4.x and 5.0.0 — 5.9.x + --> +### リンターを使用して問題のあるコードを見つける + +ESLint の規則 [no-buffer-constructor](https://eslint.org/docs/rules/no-buffer-constructor) +または +[node/no-deprecated-api](https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/no-deprecated-api.md) にも、廃止予定の `Buffer()` API への呼び出しがあります。 +これらの規則はいくつかのプリセットに含まれています。 + +ただし、`Buffer` がオーバーライドされると +必ずしも[正しく動作する](https://github.com/chalker/safer-buffer#why-not-safe-buffer)とは限らないという欠点があります。 +ポリフィルでは、この方法と上記の他の方法を +組み合わせて使用することをお勧めします。 + +Variant 2: Use a polyfill + --> +## Variant 1: Node.js ≤ 4.4.x および 5.0.0 — 5.9.x のサポートを終了 + +これは現在推奨されている解決策であり、最小限のオーバーヘッドしか意味しません。 + +Node.js 5.x リリースラインは2016年7月からサポートされていません。Node.js 4.x リリースラインは2018年4月にサポート終了となります (→ [Schedule](https://github.com/nodejs/Release#release-schedule))。つまり、セキュリティ上の問題が発生した場合でも、これらのバージョンの Node.js は更新を*受け取らない*ので、可能な限りこれらのリリースラインを使用しないでください。 + +この場合にすることは、すべての `new Buffer()` または `Buffer()` 呼び出しが `Buffer.alloc()` または `Buffer.from()` を使用するように変換することです。 + +- `new Buffer(number)` の場合は、`Buffer.alloc(number)` に置き換えます +- `new Buffer(string)` (または `new Buffer(string, encoding)`) の場合は、`Buffer.from(string)` (または `Buffer.from(string, encoding)`) に置き換えます +- 他のすべての引数の組み合わせ (これは滅多にありません)では、`new Buffer(...arguments)` を `Buffer.from(...arguments)` に置き換えます + +`Buffer.alloc()` は現在の Node.js バージョンにおいても +`new Buffer(size).fill(0)`と比べて _より速い_ ことに注意してください。 + +ESLint ルール [no-buffer-constructor](https://eslint.org/docs/rules/no-buffer-constructor) +または +[node/no-deprecated-api](https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/no-deprecated-api.md) を有効にすることは、 +誤った安全でない `Buffer` API の使用を避けるために推奨されます。 + +`Buffer` コンストラクタを自動的に `Buffer.alloc()` または `Buffer.from()` に移行するための +[JSCodeshift codemod](https://github.com/joyeecheung/node-dep-codemod#dep005) もあります。 +現在のところ、引数がリテラルである場合、 +またはコンストラクタが2つの引数で呼び出される場合にのみ機能することに注意してください。 + +_現在、それらの古いバージョンの Node.js をサポートしていて、それらのサポートを削除することができない場合、または古いブランチをサポートしている場合は、 +[Variant 2](#variant-2) または [Variant 3](#variant-3) の使用を検討してください。また修正を受け取ります。 +そうすることで、無防備な `Buffer` API の使用によって引き起こされる潜在的な問題を根絶し、 +Node.js 10 でコードを実行するときにユーザは実行時廃止予定の警告を見ることはないでしょう。_ + + + +## Variant 2: ポリフィルの使用 There are three different polyfills available: From 83912081fa12f7385d62e9554df996da14f3d2bf Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Sun, 26 May 2019 18:31:57 +0900 Subject: [PATCH 47/61] translate first polyfill --- .../guides/buffer-constructor-deprecation.md | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/locale/ja/docs/guides/buffer-constructor-deprecation.md b/locale/ja/docs/guides/buffer-constructor-deprecation.md index 7a03a45a80150..ab2f001cfb6e5 100644 --- a/locale/ja/docs/guides/buffer-constructor-deprecation.md +++ b/locale/ja/docs/guides/buffer-constructor-deprecation.md @@ -29,9 +29,9 @@ The Buffer() and new Buffer() constructors are not recommended for use due to se The Buffer() and new Buffer() constructors are not recommended for use due to security and usability concerns. Please use the new Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() construction methods instead. -- [Variant 1: Drop support for Node.js ≤ 4.4.x and 5.0.0 — 5.9.x](#variant-1) (*推奨*) -- [Variant 2: Use a polyfill](#variant-2) -- [Variant 3: Manual detection, with safeguards](#variant-3) +- [Variant 1: Node.js ≤ 4.4.x および 5.0.0 — 5.9.x のサポートを終了](#variant-1) (*推奨*) +- [Variant 2: ポリフィルの使用](#variant-2) +- [Variant 3: セーフガード付きの手動検出](#variant-3) - ## Variant 2: ポリフィルの使用 -There are three different polyfills available: +利用可能な3つの異なるポリフィルがあります。 -- **[safer-buffer](https://www.npmjs.com/package/safer-buffer)** is a drop-in replacement for the - entire `Buffer` API, that will _throw_ when using `new Buffer()`. +- **[safer-buffer](https://www.npmjs.com/package/safer-buffer)** は `Buffer` API 全体の代わりとなるドロップインであり、 + `new Buffer()` を使用すると _throw_ します。 - You would take exactly the same steps as in [Variant 1](#variant-1), but with a polyfill - `const Buffer = require('safer-buffer').Buffer` in all files where you use the new `Buffer` API. + [Variant 1](#variant-1)とまったく同じ手順を踏みますが、 + 新しい `Buffer` API を使うすべてのファイルにポリフィル `const Buffer = require('safer-buffer').Buffer` を入れます。 - Do not use the old `new Buffer()` API. In any files where the line above is added, - using old `new Buffer()` API will _throw_. + 古い `new Buffer()` API を使わないでください。上記の行が追加されているファイルでは、 + 古い `new Buffer()` API を使用すると _throw_ されます。 - **[buffer-from](https://www.npmjs.com/package/buffer-from) and/or [buffer-alloc](https://www.npmjs.com/package/buffer-alloc)** are From f2d9018d3cbdbaa3c621a0c68f8a00dcf513b230 Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Thu, 30 May 2019 00:04:47 +0900 Subject: [PATCH 48/61] fixed review point --- locale/ja/docs/guides/buffer-constructor-deprecation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locale/ja/docs/guides/buffer-constructor-deprecation.md b/locale/ja/docs/guides/buffer-constructor-deprecation.md index ab2f001cfb6e5..f5d2dcb2047af 100644 --- a/locale/ja/docs/guides/buffer-constructor-deprecation.md +++ b/locale/ja/docs/guides/buffer-constructor-deprecation.md @@ -114,7 +114,7 @@ described above. ESLint の規則 [no-buffer-constructor](https://eslint.org/docs/rules/no-buffer-constructor) または -[node/no-deprecated-api](https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/no-deprecated-api.md) にも、廃止予定の `Buffer()` API への呼び出しがあります。 +[node/no-deprecated-api](https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/no-deprecated-api.md) にも、廃止予定の `Buffer()` API への呼び出しを検知するAPIがあります。 これらの規則はいくつかのプリセットに含まれています。 ただし、`Buffer` がオーバーライドされると From f63805ed9e197d15b416fcf50fd4d8879b7c5937 Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Sat, 1 Jun 2019 00:30:27 +0900 Subject: [PATCH 49/61] translate one list item. --- .../guides/buffer-constructor-deprecation.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/locale/ja/docs/guides/buffer-constructor-deprecation.md b/locale/ja/docs/guides/buffer-constructor-deprecation.md index f5d2dcb2047af..743c1208403dd 100644 --- a/locale/ja/docs/guides/buffer-constructor-deprecation.md +++ b/locale/ja/docs/guides/buffer-constructor-deprecation.md @@ -243,17 +243,17 @@ _Don't forget to drop the polyfill usage once you drop support for Node.js < 4.5 古い `new Buffer()` API を使わないでください。上記の行が追加されているファイルでは、 古い `new Buffer()` API を使用すると _throw_ されます。 -- **[buffer-from](https://www.npmjs.com/package/buffer-from) and/or - [buffer-alloc](https://www.npmjs.com/package/buffer-alloc)** are - [ponyfills](https://ponyfill.com/) for their respective part of the `Buffer` API. You only need - to add the package(s) corresponding to the API you are using. +- **[buffer-from](https://www.npmjs.com/package/buffer-from) + または [buffer-alloc](https://www.npmjs.com/package/buffer-alloc)** あるいはその両方は + `Buffer` API のそれぞれの部分の [ポリフィル](https://ponyfill.com/) です。 + 使用している API に対応するパッケージを追加するだけです。 - You would import the module needed with an appropriate name, e.g. - `const bufferFrom = require('buffer-from')` and then use that instead of the call to - `new Buffer()`, e.g. `new Buffer('test')` becomes `bufferFrom('test')`. + 必要なモジュールを適切な名前、例えば `const bufferFrom = require('buffer-from')` でインポートします。 + そして `new Buffer()` の呼び出しの代わりにそれを使います。 + `new Buffer('test')` は `bufferFrom('test')`になります。 - A downside with this approach is slightly more code changes to migrate off them (as you would be - using e.g. `Buffer.from()` under a different name). + このアプローチの欠点は、移行するためのコード変更 (たとえば、`Buffer.from()` を別の名前で使用しているような) が + 多少増えることです。 - **[safe-buffer](https://www.npmjs.com/package/safe-buffer)** is also a drop-in replacement for the entire `Buffer` API, but using `new Buffer()` will still work as before. From 2efad39e00e0edc005fe3a8eaf4451c8ce40f4e7 Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Sat, 1 Jun 2019 00:30:27 +0900 Subject: [PATCH 50/61] translate one list item. --- .../guides/buffer-constructor-deprecation.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/locale/ja/docs/guides/buffer-constructor-deprecation.md b/locale/ja/docs/guides/buffer-constructor-deprecation.md index f5d2dcb2047af..743c1208403dd 100644 --- a/locale/ja/docs/guides/buffer-constructor-deprecation.md +++ b/locale/ja/docs/guides/buffer-constructor-deprecation.md @@ -243,17 +243,17 @@ _Don't forget to drop the polyfill usage once you drop support for Node.js < 4.5 古い `new Buffer()` API を使わないでください。上記の行が追加されているファイルでは、 古い `new Buffer()` API を使用すると _throw_ されます。 -- **[buffer-from](https://www.npmjs.com/package/buffer-from) and/or - [buffer-alloc](https://www.npmjs.com/package/buffer-alloc)** are - [ponyfills](https://ponyfill.com/) for their respective part of the `Buffer` API. You only need - to add the package(s) corresponding to the API you are using. +- **[buffer-from](https://www.npmjs.com/package/buffer-from) + または [buffer-alloc](https://www.npmjs.com/package/buffer-alloc)** あるいはその両方は + `Buffer` API のそれぞれの部分の [ポリフィル](https://ponyfill.com/) です。 + 使用している API に対応するパッケージを追加するだけです。 - You would import the module needed with an appropriate name, e.g. - `const bufferFrom = require('buffer-from')` and then use that instead of the call to - `new Buffer()`, e.g. `new Buffer('test')` becomes `bufferFrom('test')`. + 必要なモジュールを適切な名前、例えば `const bufferFrom = require('buffer-from')` でインポートします。 + そして `new Buffer()` の呼び出しの代わりにそれを使います。 + `new Buffer('test')` は `bufferFrom('test')`になります。 - A downside with this approach is slightly more code changes to migrate off them (as you would be - using e.g. `Buffer.from()` under a different name). + このアプローチの欠点は、移行するためのコード変更 (たとえば、`Buffer.from()` を別の名前で使用しているような) が + 多少増えることです。 - **[safe-buffer](https://www.npmjs.com/package/safe-buffer)** is also a drop-in replacement for the entire `Buffer` API, but using `new Buffer()` will still work as before. From 56fa9e1afb2366506fe618de0bbd8d478ee7f386 Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Sat, 15 Jun 2019 21:36:07 +0900 Subject: [PATCH 51/61] translate before variant 3. --- .../guides/buffer-constructor-deprecation.md | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/locale/ja/docs/guides/buffer-constructor-deprecation.md b/locale/ja/docs/guides/buffer-constructor-deprecation.md index 743c1208403dd..decaec8efe9c7 100644 --- a/locale/ja/docs/guides/buffer-constructor-deprecation.md +++ b/locale/ja/docs/guides/buffer-constructor-deprecation.md @@ -255,24 +255,24 @@ _Don't forget to drop the polyfill usage once you drop support for Node.js < 4.5 このアプローチの欠点は、移行するためのコード変更 (たとえば、`Buffer.from()` を別の名前で使用しているような) が 多少増えることです。 -- **[safe-buffer](https://www.npmjs.com/package/safe-buffer)** is also a drop-in replacement for - the entire `Buffer` API, but using `new Buffer()` will still work as before. +- **[safe-buffer](https://www.npmjs.com/package/safe-buffer)** も `Buffer` API 全体の代わりになるドロップインですが、 + `new Buffer()` を使用しても以前と同じように動作します。 - A downside to this approach is that it will allow you to also use the older `new Buffer()` API - in your code, which is problematic since it can cause issues in your code, and will start - emitting runtime deprecation warnings starting with Node.js 10 - ([read more here](https://github.com/chalker/safer-buffer#why-not-safe-buffer)). + このアプローチのマイナス面は、コード内で古い `new Buffer()` API を使用することも可能になることです。 + これは、コード内で問題を引き起こす可能性があり、 + Node.js 10 以降で実行時に非推奨の警告を発行し始めます + ([詳細はこちらをご覧ください](https://github.com/chalker/safer-buffer#why-not-safe-buffer))。 -Note that in either case, it is important that you also remove all calls to the old `Buffer` -API manually — just throwing in `safe-buffer` doesn't fix the problem by itself, it just provides -a polyfill for the new API. I have seen people doing that mistake. +どちらの場合も、古い `Buffer` API へのすべての呼び出しを手動で削除することも重要です。 +`safe-buffer` を投入しただけでは問題が解決するわけではなく、新しい API にポリフィルを提供するだけです。 +その間違いをしている人を見かけます。 -Enabling ESLint rule [no-buffer-constructor](https://eslint.org/docs/rules/no-buffer-constructor) -or -[node/no-deprecated-api](https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/no-deprecated-api.md) -is recommended. +ESLint ルールの [no-buffer-constructor](https://eslint.org/docs/rules/no-buffer-constructor) +または +[node/no-deprecated-api](https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/no-deprecated-api.md) を有効にすることを +お勧めします。 -_Don't forget to drop the polyfill usage once you drop support for Node.js < 4.5.0._ +_Node.js 4.5.0 以前のサポートを終了したら、必ず polyfill の使用をやめてください。_ ## Variant 3 — Manual detection, with safeguards From 399cf218150035e72f244ceb051ae76e8ec17848 Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Sat, 15 Jun 2019 22:16:29 +0900 Subject: [PATCH 52/61] translate before Regarding `Buffer.allocUnsafe()` --- .../guides/buffer-constructor-deprecation.md | 72 ++++++++++++++++++- 1 file changed, 71 insertions(+), 1 deletion(-) diff --git a/locale/ja/docs/guides/buffer-constructor-deprecation.md b/locale/ja/docs/guides/buffer-constructor-deprecation.md index decaec8efe9c7..7fe4f94552279 100644 --- a/locale/ja/docs/guides/buffer-constructor-deprecation.md +++ b/locale/ja/docs/guides/buffer-constructor-deprecation.md @@ -274,7 +274,8 @@ ESLint ルールの [no-buffer-constructor](https://eslint.org/docs/rules/no-buf _Node.js 4.5.0 以前のサポートを終了したら、必ず polyfill の使用をやめてください。_ -## Variant 3 — Manual detection, with safeguards + +## Variant 3 — セーフガード付きの手動検出 + +これは、少数の場所 (たとえば1か所) だけで `Buffer` インスタンスを作成する場合、 +またはそれらの周りに独自のラッパーがある場合に便利です。 + +### `Buffer(0)` + +空のバッファを作成するためのこの特別なケースは安全に `Buffer.concat([])` で置き換えることができます。 +これは Node.js 0.8.x までずっと同じ結果を返します。 + +### `Buffer(notNumber)` + +使用前: + +```js +const buf = new Buffer(notNumber, encoding); +``` + +使用後: + +```js +let buf; +if (Buffer.from && Buffer.from !== Uint8Array.from) { + buf = Buffer.from(notNumber, encoding); +} else { + if (typeof notNumber === 'number') { + throw new Error('The "size" argument must be not of type number.'); + } + buf = new Buffer(notNumber, encoding); +} +``` + +`encoding` は任意です。 + +`new Buffer()` の前の `typeof notNumber` は必須であり (`notNumber` 引数がハードコーディングされていない場合)、 +_`Buffer` コンストラクタの廃止が原因ではない_ ことに注意してください。 +`Buffer` コンストラクタが廃止されるのはそのためです。 +この型チェックに欠けているエコシステムパッケージは多くのセキュリティ問題を引き起こしました。 +悪意のあるユーザー入力が `Buffer(arg)` になって DoS からプロセスメモリから攻撃者への機密情報の漏洩に至る問題を引き起こすことです。 + +`notNumber` 引数がハードコードされている場合 (例: リテラル `"abc"` または `[0,1,2]`)、 +`typeof` チェックは省略できます。 + +また、TypeScript を使用してもこの問題は解決されないことに注意してください。 +`TypeScript` で記述されたライブラリが JS から使用される場合、またはユーザ入力がそこで終わる場合、 +すべての型チェックは変換時のみであり、 +TS がコンパイルする実際の JS コードには存在しません。 + +### `Buffer(number)` + +Node.js 0.10.x (およびそれ以下) をサポートする場合 + +```js +var buf; +if (Buffer.alloc) { + buf = Buffer.alloc(number); +} else { + buf = new Buffer(number); + buf.fill(0); +} +``` + +そうでない場合 (Node.js 0.12.x 以降): + ```js const buf = Buffer.alloc ? Buffer.alloc(number) : new Buffer(number).fill(0); ``` From 646c8815279fb9973ee5f1e1c14b7b386bc98e3c Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Sat, 15 Jun 2019 23:40:24 +0900 Subject: [PATCH 53/61] translate before faq. --- .../guides/buffer-constructor-deprecation.md | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/locale/ja/docs/guides/buffer-constructor-deprecation.md b/locale/ja/docs/guides/buffer-constructor-deprecation.md index 7fe4f94552279..d2ad1c9de37c3 100644 --- a/locale/ja/docs/guides/buffer-constructor-deprecation.md +++ b/locale/ja/docs/guides/buffer-constructor-deprecation.md @@ -412,6 +412,7 @@ if (Buffer.alloc) { const buf = Buffer.alloc ? Buffer.alloc(number) : new Buffer(number).fill(0); ``` + +## `Buffer.allocUnsafe()` について + +`Buffer.allocUnsafe()` を使用するときは特に注意してください: + * 正当な理由がない場合は使用しないでください + * 例えば、おそらく小さなバッファのパフォーマンスの違いを見たことがない場合でしょう。 + 実際、それらは `Buffer.alloc()` でもっと速いかもしれません + * コードがホットコードパスにない場合 - おそらく違いに気付かないでしょう + * ゼロフィリングは潜在的なリスクを最小限に抑えることに留意してください + * 使用する場合は、決してバッファを部分的に満たした状態で返さないようにしてください + * 順番にそれを書いているならば - 常に実際に書かれた長さにそれを切り捨てます + +`Buffer.allocUnsafe()` で割り当てられたバッファの処理エラーは、 +コードの未定義の動作からリモートの攻撃者に漏洩する機密データ (ユーザ入力、パスワード、証明書) まで、 +さまざまな問題を引き起こす可能性があります。 + +_Node.js のバージョンによっては、ゼロフィリングなしに `new Buffer()` を使用する場合も同様です +(また、型チェックがないと、DoS が潜在的な問題のリストに追加されます)。_ + ## FAQ ### What is wrong with the `Buffer` constructor? From a2e2b56a0c56c1afc4d3235eb55379eefe633d55 Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Sun, 16 Jun 2019 00:33:57 +0900 Subject: [PATCH 54/61] translate to last. --- .../guides/buffer-constructor-deprecation.md | 69 ++++++++++++++++++- 1 file changed, 66 insertions(+), 3 deletions(-) diff --git a/locale/ja/docs/guides/buffer-constructor-deprecation.md b/locale/ja/docs/guides/buffer-constructor-deprecation.md index d2ad1c9de37c3..4a7d05ba501c4 100644 --- a/locale/ja/docs/guides/buffer-constructor-deprecation.md +++ b/locale/ja/docs/guides/buffer-constructor-deprecation.md @@ -450,9 +450,10 @@ version (and lacking type checks also adds DoS to the list of potential problems _Node.js のバージョンによっては、ゼロフィリングなしに `new Buffer()` を使用する場合も同様です (また、型チェックがないと、DoS が潜在的な問題のリストに追加されます)。_ -## FAQ +What is wrong with the `Buffer` constructor? +### <!--design-flaws-->What is wrong with the `Buffer` constructor? The `Buffer` constructor could be used to create a buffer in many different ways: @@ -505,8 +506,70 @@ When using `Buffer.from(req.body.string)` instead, passing a number will always throw an exception instead, giving a controlled behavior that can always be handled by the program. -### The `Buffer()` constructor has been deprecated for a while. Is this really an issue? +### <!--ecosystem-usage-->The `Buffer()` constructor has been deprecated for a while. Is this really an issue? Surveys of code in the `npm` ecosystem have shown that the `Buffer()` constructor is still widely used. This includes new code, and overall usage of such code has actually been *increasing*. + + --> +## FAQ + +### `Buffer` コンストラクタの何が問題になっていますか。 + +`Buffer` コンストラクタは、さまざまな方法でバッファを作成するために使うことができます: + +- `new Buffer(42)` は 42 バイトの `Buffer` を作成します。 + Node.js 8 以前は、このバッファにはパフォーマンス上の理由から*任意のメモリ*が含まれていました。 + これには、プログラムのソースコードからパスワードや暗号化キーまで、さまざまなものが含まれます。 +- `new Buffer('abc')` は、文字列 `'abc'` の UTF-8 エンコードバージョンを含む `Buffer` を作成します。 + 2番目の引数は別のエンコーディングを指定できます。 + たとえば、`new Buffer(string, 'base64')` を使用して、 + Base64 文字列をそれが表す元のバイトシーケンスに変換できます。 +- 引数には他にもいくつかの組み合わせがあります。 + +つまり、`var buffer = new Buffer(foo);`のようなコードでは、 +`foo` の型を知ることなしに、生成されたバッファの内容が正確に何であるかを知ることはできません。 + +時々、`foo` の値は外部の情報源から来ます。 +たとえば、この関数は Web サーバ上のサービスとして公開され、UTF-8 文字列を Base64 形式に変換します: + +```js +function stringToBase64(req, res) { + // リクエストボディは `{ string: 'foobar' }` のフォーマットを持つべきです。 + const rawBytes = new Buffer(req.body.string); + const encoded = rawBytes.toString('base64'); + res.end({ encoded }); +} +``` + +このコードは `req.body.string` の型を検証*しない*ことに注意してください: + +- `req.body.string` は文字列であることが期待されています。この場合、すべてうまくいきます。 +- `req.body.string` はリクエストを送信するクライアントによって制御されます。 +- `req.body.string` が *数値の* `50` の場合、 `rawBytes` は `50` バイトになります。 + - Node.js 8 以前の場合、コンテンツは初期化されていませんでした。 + - Node.js 8 以降の場合、コンテンツは値が `0` の `50` バイトになります。 + +型チェックがないため、攻撃者は意図的にリクエストの一部として番号を送信する可能性があります。 +これを使用して、次のいずれかを実行する可能性があります: + +- 未初期化メモリを読み取ります。 + これにより、パスワード、暗号化キー、その他の機密情報が**漏洩します**。(情報漏洩) +- プログラムに大量のメモリーを割り当てさせます。 + たとえば、`500000000` を入力値として指定した場合、各リクエストは 500MB のメモリを割り当てます。 + これは、プログラムの利用可能なメモリを完全に使い果たしてクラッシュさせる、 + または大幅に遅くするために使用できます。(サービス拒否) + +これらのシナリオは両方とも、 +実際の Web サーバのコンテキストでは深刻なセキュリティ問題と見なされています。 + +代わりに `Buffer.from(req.body.string)` を使うと、 +数値を渡すと常に例外を投げ、 +常にプログラムによって処理されることができる制御された振る舞いを与えます。 + +### `Buffer()` コンストラクタはしばらくの間非推奨です。これは本当に問題なのでしょうか。 + +`npm` エコシステムのコードを調査したところ、`Buffer()` コンストラクターはまだ広く使用されていることがわかりました。 +これには新しいコードも含まれ、 +そのようなコードの全体的な使用量は実際には*増え続けています*。 From 35c758831d9cff9c46eb876d748271bb450733ff Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Sun, 16 Jun 2019 03:50:55 +0900 Subject: [PATCH 55/61] translate blocking-vs-non-blocking into japanese. --- .../docs/guides/blocking-vs-non-blocking.md | 159 +++++++++++++++++- 1 file changed, 158 insertions(+), 1 deletion(-) diff --git a/locale/ja/docs/guides/blocking-vs-non-blocking.md b/locale/ja/docs/guides/blocking-vs-non-blocking.md index c46b92aff5946..c1e3a8a1b117d 100644 --- a/locale/ja/docs/guides/blocking-vs-non-blocking.md +++ b/locale/ja/docs/guides/blocking-vs-non-blocking.md @@ -1,8 +1,9 @@ --- -title: Overview of Blocking vs Non-Blocking +title: ブロッキングとノンブロッキングの概要 layout: docs.hbs --- + +# ブロッキングとノンブロッキングの概要 + +この概要では、Node.js における**ブロッキング**と**ノンブロッキング**呼び出しの違いについて説明します。 +この概要ではイベントループと libuv について説明しますが、 +これらのトピックに関する事前知識は必要ありません。 +読者は JavaScript 言語と Node.js コールバックパターンの基本的な知識を持っていることを前提としています。 + +> "I/O" とは、主に [libuv](http://libuv.org/) がサポートしている +> システムのディスクやネットワークとのやり取りを指します。 + + + +## ブロッキング + +**ブロッキング**は、Node.js プロセス内の追加の JavaScript の実行が、 +JavaScript 以外の操作が完了するまで待たなければならない場合です。 +これは、**ブロッキング**操作が行われている間は +イベントループが JavaScript の実行を継続できないために起こります。 + +Node.js では、 +I/O などの JavaScript 以外の操作を待機するのではなく、CPU に負荷がかかるためパフォーマンスが低下する JavaScript は通常、 +**ブロッキング**としては呼び出されません。 +Node.js 標準ライブラリの libuv を使用する同期メソッドは、最も一般的に使用されている**ブロッキング**操作です。 +ネイティブモジュールには**ブロッキング**メソッドもあります。 + +Node.js 標準ライブラリのすべての I/O メソッドは非同期バージョンを提供します。 +これらは**ノンブロッキング**で、コールバック関数を受け入れます。 +一部のメソッドには**ブロッキング**に対応したものもあり、 +その名前は `Sync` で終わります。 + + + +## コードを比較する + +**ブロッキング**メソッドは同期的に実行され、 +**ノンブロッキング**メソッドは非同期的に実行されます。 + +例としてファイルシステムモジュールを使用する場合、これは**同期的な**ファイルの読み取りです: + +```js +const fs = require('fs'); +const data = fs.readFileSync('/file.md'); // ファイルが読み込まれるまでここでブロック +``` + +そして、これは同等の**非同期的な**コードの例です: + +```js +const fs = require('fs'); +fs.readFile('/file.md', (err, data) => { + if (err) throw err; +}); +``` + +最初の例は2番目の例よりも単純に見えますが、 +2行目がファイル全体が読み取られるまで追加の JavaScript の実行を**ブロックする**という欠点があります。 +同期バージョンでは、エラーがスローされた場合はそれをキャッチする必要があるか、 +プロセスがクラッシュします。 +非同期バージョンでは、 +示されているようにエラーをスローするかどうかを決めるのは開発者次第です。 + +例を少しだけ拡張しましょう: + +```js +const fs = require('fs'); +const data = fs.readFileSync('/file.md'); // ファイルが読み込まれるまでここでブロック +console.log(data); +moreWork(); // console.log の後に実行されます +``` + +そして、これは似ていますが、同等ではない非同期の例です。 + +```js +const fs = require('fs'); +fs.readFile('/file.md', (err, data) => { + if (err) throw err; + console.log(data); +}); +moreWork(); // console.log の前に実行されます +``` + +上記の最初の例では、`console.log` が `moreWork()` の前に呼び出されます。 +2番目の例では、`fs.readFile()` は**ノンブロッキング**であるため、JavaScript の実行は続行でき、 +`moreWork()` が最初に呼び出されます。 +ファイルの読み込みが完了するのを待たずに `moreWork()` を実行する機能は、 +より高いスループットを可能にする重要な設計上の選択です。 + + + +## 並行性とスループット + +Node.js での JavaScript の実行はシングルスレッドであるため、 +同時実行性とは、他の作業が完了した後に JavaScript コールバック関数を実行するイベントループの能力のことです。 +同時に実行されることが予想されるコードでは、 +I/O などの JavaScript 以外の操作が発生しても、 +イベントループの実行を継続できる必要があります。 + +例として、Web サーバへの各リクエストが完了するのに 50 ミリ秒かかり、 +その 50 ミリ秒のうち 45 ミリ秒が非同期に実行できるデータベース入出力である場合を考えてみましょう。 +**ノンブロッキング**の非同期操作を選択すると、 +他のリクエストを処理するために 1 リクエストあたり 45 ミリ秒が解放されます。 +これは、**ブロッキング**メソッドの代わりに**ノンブロッキング**メソッドを使用することを選択しただけで、 +キャパシティが大きく異なることを意味します。 + +イベントループは、 +並行作業を処理するために追加のスレッドが作成される可能性がある他の多くの言語のモデルとは異なります。 + + + +## ブロッキングコードとノンブロッキングコードが混在する危険性 + +I/O を扱うときに避けるべきいくつかのパターンがあります。 +例を見てみましょう。 + +```js +const fs = require('fs'); +fs.readFile('/file.md', (err, data) => { + if (err) throw err; + console.log(data); +}); +fs.unlinkSync('/file.md'); +``` + +上記の例では、`fs.unlinkSync()` は +`fs.readFile()` の前に実行される可能性が高いため、 +`file.md` は実際に読み取られる前に削除されます。 +これを書くためのより良い方法は、 +完全に**ノンブロッキング**で正しい順序で実行されることが保証されていることです。 + + +```js +const fs = require('fs'); +fs.readFile('/file.md', (readFileErr, data) => { + if (readFileErr) throw readFileErr; + console.log(data); + fs.unlink('/file.md', (unlinkErr) => { + if (unlinkErr) throw unlinkErr; + }); +}); +``` + +上記は、`fs.readFile()`のコールバック内で `fs.unlink()` への**ノンブロッキング**呼び出しを行います。 +これにより、正しい操作順序が保証されます。 + + + +## 追加のリソース + +- [libuv](http://libuv.org/) +- [About Node.js](https://nodejs.org/ja/about/) From e71b8b133bb3af3a9a2e23942812c250af9231d1 Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Sat, 27 Jul 2019 01:30:30 +0900 Subject: [PATCH 56/61] Translate middle of "setImmediate" into japanese. --- locale/ja/docs/guides/timers-in-node.md | 205 +++++++++++++++++++++++- 1 file changed, 204 insertions(+), 1 deletion(-) diff --git a/locale/ja/docs/guides/timers-in-node.md b/locale/ja/docs/guides/timers-in-node.md index fbf191404df3e..2e01af26133e6 100644 --- a/locale/ja/docs/guides/timers-in-node.md +++ b/locale/ja/docs/guides/timers-in-node.md @@ -1,8 +1,9 @@ --- -title: Timers in Node.js +title: Node.js のタイマー layout: docs.hbs --- + +# Node.js のタイマーと仕組み + +Node.js の Timers モジュールには、 +一定期間後にコードを実行する関数が含まれています。 +ブラウザの JavaScript API をエミュレートするためにすべてのメソッドがグローバルに利用可能であるため、 +`require()` を介してタイマーをインポートする必要はありません。 +タイマー関数がいつ実行されるかを完全に理解するためには、 +Node.js の[イベントループ](/ja/docs/guides/event-loop-timers-and-nexttick/)を読むことをお勧めします。 + + +## Node.js を使って連続した時間を制御する + +Node.js APIには、現時点以降のある時点でコードを実行するように +スケジューリングする方法がいくつかあります。 +以下の関数はほとんどのブラウザで利用可能であるためおなじみのように思われるかもしれませんが、 +Node.js は実際にはこれらのメソッドの独自の実装を提供します。 +タイマーはシステムと非常に密接に統合されており、 +API がブラウザ API を反映しているという事実があるにもかかわらず、実装にはいくつかの違いがあります。 + + +### "そう言うとき" 実行する ~ *`setTimeout()`* + +`setTimeout()` を使用して、 +指定したミリ秒後に +コードの実行をスケジュールすることができます。 +この関数はブラウザの JavaScript API の [`window.setTimeout()`](https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setTimeout)に似ていますが、 +コードの文字列を渡して実行することはできません。 + +`setTimeout()` は、最初の引数として実行する関数と、 +2番目の引数として数値として定義されたミリ秒の遅延を受け入れます。 +追加の引数も含めることができ、これらは関数に渡されます。 +これはその一例です: + +```js +function myFunc(arg) { + console.log(`arg was => ${arg}`); +} + +setTimeout(myFunc, 1500, 'funky'); +``` + +上記の関数 `myFunc()` は、`setTimeout()` の呼び出しにより、 +可能な限り 1500 ミリ秒 (または 1.5 秒) くらいで実行されます。 + +設定されたタイムアウト間隔は、 +その*正確な*ミリ秒数の後に実行することに依存することはできません。 +これは、イベントループをブロックまたは保留している他の実行コードがタイムアウトの実行を遅らせるためです。 +*唯一*保証されているのは、 +タイムアウトが宣言されたタイムアウト間隔より早く実行されないということです。 + +`setTimeout()` は、設定されたタイムアウトを参照するために使用できる +`Timeout` オブジェクトを返します。 +この返されたオブジェクトを使用して、タイムアウトをキャンセル (下記の `clearTimeout()` を参照) し、 +実行動作を変更 (下記の`unref()` を参照) することができます。 + + +### "この直後に" 実行する ~ *`setImmediate()`* + +`setImmediate()` は現在のイベントループサイクルの終わりにコードを実行します。 +このコードは、現在のイベントループ内の I/O 操作の*後*、 +および次のイベントループのためにスケジュールされたタイマーの*前*に実行されます。 +このコードの実行は「この直後」に行われると考えることができます。 +つまり、`setImmediate()` 関数呼び出しに続くコードは、 +`setImmediate()`関数引数の前に実行されます。 + +`setImmediate()` の最初の引数は実行する関数になります。 +それ以降の引数は、実行時に関数に渡されます。これが例です: + +```js +console.log('before immediate'); + +setImmediate((arg) => { + console.log(`executing immediate: ${arg}`); +}, 'so immediate'); + +console.log('after immediate'); +``` + +`setImmediate()` に渡された上記の関数は、すべての実行可能コードが実行された後に実行され、 +コンソール出力は次のようになります: + +``` +before immediate +after immediate +executing immediate: so immediate +``` + +`setImmediate()` は `Immediate` オブジェクトを返します。 +これを使用して、スケジュールされた Immediate をキャンセル (下記の `clearImmediate()` を参照) できます。 + +Note: Don't get `setImmediate()` confused with `process.nextTick()`. There are +some major ways they differ. The first is that `process.nextTick()` will run +*before* any `Immediate`s that are set as well as before any scheduled I/O. +The second is that `process.nextTick()` is non-clearable, meaning once +code has been scheduled to execute with `process.nextTick()`, the execution +cannot be stopped, just like with a normal function. Refer to [this guide](/en/docs/guides/event-loop-timers-and-nexttick/#process-nexttick) +to better understand the operation of `process.nextTick()`. + + +### "Infinite Loop" Execution ~ *`setInterval()`* + +If there is a block of code that should execute multiple times, `setInterval()` +can be used to execute that code. `setInterval()` takes a function +argument that will run an infinite number of times with a given millisecond +delay as the second argument. Just like `setTimeout()`, additional arguments +can be added beyond the delay, and these will be passed on to the function call. +Also like `setTimeout()`, the delay cannot be guaranteed because of operations +that may hold on to the event loop, and therefore should be treated as an +approximate delay. See the below example: + +```js +function intervalFunc() { + console.log('Cant stop me now!'); +} + +setInterval(intervalFunc, 1500); +``` +In the above example, `intervalFunc()` will execute about every 1500 +milliseconds, or 1.5 seconds, until it is stopped (see below). + +Just like `setTimeout()`, `setInterval()` also returns a `Timeout` object which +can be used to reference and modify the interval that was set. + + +## Clearing the Future + +What can be done if a `Timeout` or `Immediate` object needs to be cancelled? +`setTimeout()`, `setImmediate()`, and `setInterval()` return a timer object +that can be used to reference the set `Timeout` or `Immediate` object. +By passing said object into the respective `clear` function, execution of +that object will be halted completely. The respective functions are +`clearTimeout()`, `clearImmediate()`, and `clearInterval()`. See the example +below for an example of each: + +```js +const timeoutObj = setTimeout(() => { + console.log('timeout beyond time'); +}, 1500); + +const immediateObj = setImmediate(() => { + console.log('immediately executing immediate'); +}); + +const intervalObj = setInterval(() => { + console.log('interviewing the interval'); +}, 500); + +clearTimeout(timeoutObj); +clearImmediate(immediateObj); +clearInterval(intervalObj); +``` + + +## Leaving Timeouts Behind + +Remember that `Timeout` objects are returned by `setTimeout` and `setInterval`. +The `Timeout` object provides two functions intended to augment `Timeout` +behavior with `unref()` and `ref()`. If there is a `Timeout` object scheduled +using a `set` function, `unref()` can be called on that object. This will change +the behavior slightly, and not call the `Timeout` object *if it is the last +code to execute*. The `Timeout` object will not keep the process alive, waiting +to execute. + +In similar fashion, a `Timeout` object that has had `unref()` called on it +can remove that behavior by calling `ref()` on that same `Timeout` object, +which will then ensure its execution. Be aware, however, that this does +not *exactly* restore the initial behavior for performance reasons. See +below for examples of both: + +```js +const timerObj = setTimeout(() => { + console.log('will i run?'); +}); + +// if left alone, this statement will keep the above +// timeout from running, since the timeout will be the only +// thing keeping the program from exiting +timerObj.unref(); + +// we can bring it back to life by calling ref() inside +// an immediate +setImmediate(() => { + timerObj.ref(); +}); +``` + ## Further Down the Event Loop There's much more to the Event Loop and Timers than this guide From 72b428a05196adcefd70cd6a164d98a71fc3f400 Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Sat, 27 Jul 2019 01:30:30 +0900 Subject: [PATCH 57/61] Translate middle of "setImmediate" into japanese. --- locale/ja/docs/guides/timers-in-node.md | 205 +++++++++++++++++++++++- 1 file changed, 204 insertions(+), 1 deletion(-) diff --git a/locale/ja/docs/guides/timers-in-node.md b/locale/ja/docs/guides/timers-in-node.md index fbf191404df3e..2e01af26133e6 100644 --- a/locale/ja/docs/guides/timers-in-node.md +++ b/locale/ja/docs/guides/timers-in-node.md @@ -1,8 +1,9 @@ --- -title: Timers in Node.js +title: Node.js のタイマー layout: docs.hbs --- + +# Node.js のタイマーと仕組み + +Node.js の Timers モジュールには、 +一定期間後にコードを実行する関数が含まれています。 +ブラウザの JavaScript API をエミュレートするためにすべてのメソッドがグローバルに利用可能であるため、 +`require()` を介してタイマーをインポートする必要はありません。 +タイマー関数がいつ実行されるかを完全に理解するためには、 +Node.js の[イベントループ](/ja/docs/guides/event-loop-timers-and-nexttick/)を読むことをお勧めします。 + + +## Node.js を使って連続した時間を制御する + +Node.js APIには、現時点以降のある時点でコードを実行するように +スケジューリングする方法がいくつかあります。 +以下の関数はほとんどのブラウザで利用可能であるためおなじみのように思われるかもしれませんが、 +Node.js は実際にはこれらのメソッドの独自の実装を提供します。 +タイマーはシステムと非常に密接に統合されており、 +API がブラウザ API を反映しているという事実があるにもかかわらず、実装にはいくつかの違いがあります。 + + +### "そう言うとき" 実行する ~ *`setTimeout()`* + +`setTimeout()` を使用して、 +指定したミリ秒後に +コードの実行をスケジュールすることができます。 +この関数はブラウザの JavaScript API の [`window.setTimeout()`](https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setTimeout)に似ていますが、 +コードの文字列を渡して実行することはできません。 + +`setTimeout()` は、最初の引数として実行する関数と、 +2番目の引数として数値として定義されたミリ秒の遅延を受け入れます。 +追加の引数も含めることができ、これらは関数に渡されます。 +これはその一例です: + +```js +function myFunc(arg) { + console.log(`arg was => ${arg}`); +} + +setTimeout(myFunc, 1500, 'funky'); +``` + +上記の関数 `myFunc()` は、`setTimeout()` の呼び出しにより、 +可能な限り 1500 ミリ秒 (または 1.5 秒) くらいで実行されます。 + +設定されたタイムアウト間隔は、 +その*正確な*ミリ秒数の後に実行することに依存することはできません。 +これは、イベントループをブロックまたは保留している他の実行コードがタイムアウトの実行を遅らせるためです。 +*唯一*保証されているのは、 +タイムアウトが宣言されたタイムアウト間隔より早く実行されないということです。 + +`setTimeout()` は、設定されたタイムアウトを参照するために使用できる +`Timeout` オブジェクトを返します。 +この返されたオブジェクトを使用して、タイムアウトをキャンセル (下記の `clearTimeout()` を参照) し、 +実行動作を変更 (下記の`unref()` を参照) することができます。 + + +### "この直後に" 実行する ~ *`setImmediate()`* + +`setImmediate()` は現在のイベントループサイクルの終わりにコードを実行します。 +このコードは、現在のイベントループ内の I/O 操作の*後*、 +および次のイベントループのためにスケジュールされたタイマーの*前*に実行されます。 +このコードの実行は「この直後」に行われると考えることができます。 +つまり、`setImmediate()` 関数呼び出しに続くコードは、 +`setImmediate()`関数引数の前に実行されます。 + +`setImmediate()` の最初の引数は実行する関数になります。 +それ以降の引数は、実行時に関数に渡されます。これが例です: + +```js +console.log('before immediate'); + +setImmediate((arg) => { + console.log(`executing immediate: ${arg}`); +}, 'so immediate'); + +console.log('after immediate'); +``` + +`setImmediate()` に渡された上記の関数は、すべての実行可能コードが実行された後に実行され、 +コンソール出力は次のようになります: + +``` +before immediate +after immediate +executing immediate: so immediate +``` + +`setImmediate()` は `Immediate` オブジェクトを返します。 +これを使用して、スケジュールされた Immediate をキャンセル (下記の `clearImmediate()` を参照) できます。 + +Note: Don't get `setImmediate()` confused with `process.nextTick()`. There are +some major ways they differ. The first is that `process.nextTick()` will run +*before* any `Immediate`s that are set as well as before any scheduled I/O. +The second is that `process.nextTick()` is non-clearable, meaning once +code has been scheduled to execute with `process.nextTick()`, the execution +cannot be stopped, just like with a normal function. Refer to [this guide](/en/docs/guides/event-loop-timers-and-nexttick/#process-nexttick) +to better understand the operation of `process.nextTick()`. + + +### "Infinite Loop" Execution ~ *`setInterval()`* + +If there is a block of code that should execute multiple times, `setInterval()` +can be used to execute that code. `setInterval()` takes a function +argument that will run an infinite number of times with a given millisecond +delay as the second argument. Just like `setTimeout()`, additional arguments +can be added beyond the delay, and these will be passed on to the function call. +Also like `setTimeout()`, the delay cannot be guaranteed because of operations +that may hold on to the event loop, and therefore should be treated as an +approximate delay. See the below example: + +```js +function intervalFunc() { + console.log('Cant stop me now!'); +} + +setInterval(intervalFunc, 1500); +``` +In the above example, `intervalFunc()` will execute about every 1500 +milliseconds, or 1.5 seconds, until it is stopped (see below). + +Just like `setTimeout()`, `setInterval()` also returns a `Timeout` object which +can be used to reference and modify the interval that was set. + + +## Clearing the Future + +What can be done if a `Timeout` or `Immediate` object needs to be cancelled? +`setTimeout()`, `setImmediate()`, and `setInterval()` return a timer object +that can be used to reference the set `Timeout` or `Immediate` object. +By passing said object into the respective `clear` function, execution of +that object will be halted completely. The respective functions are +`clearTimeout()`, `clearImmediate()`, and `clearInterval()`. See the example +below for an example of each: + +```js +const timeoutObj = setTimeout(() => { + console.log('timeout beyond time'); +}, 1500); + +const immediateObj = setImmediate(() => { + console.log('immediately executing immediate'); +}); + +const intervalObj = setInterval(() => { + console.log('interviewing the interval'); +}, 500); + +clearTimeout(timeoutObj); +clearImmediate(immediateObj); +clearInterval(intervalObj); +``` + + +## Leaving Timeouts Behind + +Remember that `Timeout` objects are returned by `setTimeout` and `setInterval`. +The `Timeout` object provides two functions intended to augment `Timeout` +behavior with `unref()` and `ref()`. If there is a `Timeout` object scheduled +using a `set` function, `unref()` can be called on that object. This will change +the behavior slightly, and not call the `Timeout` object *if it is the last +code to execute*. The `Timeout` object will not keep the process alive, waiting +to execute. + +In similar fashion, a `Timeout` object that has had `unref()` called on it +can remove that behavior by calling `ref()` on that same `Timeout` object, +which will then ensure its execution. Be aware, however, that this does +not *exactly* restore the initial behavior for performance reasons. See +below for examples of both: + +```js +const timerObj = setTimeout(() => { + console.log('will i run?'); +}); + +// if left alone, this statement will keep the above +// timeout from running, since the timeout will be the only +// thing keeping the program from exiting +timerObj.unref(); + +// we can bring it back to life by calling ref() inside +// an immediate +setImmediate(() => { + timerObj.ref(); +}); +``` + ## Further Down the Event Loop There's much more to the Event Loop and Timers than this guide From da07ebac7264ac861fdde5a78f0785635f2ec3cf Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Thu, 1 Aug 2019 11:12:06 +0900 Subject: [PATCH 58/61] Fixed Review Point. --- locale/ja/docs/guides/timers-in-node.md | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/locale/ja/docs/guides/timers-in-node.md b/locale/ja/docs/guides/timers-in-node.md index 2e01af26133e6..ea2b6dbedd28d 100644 --- a/locale/ja/docs/guides/timers-in-node.md +++ b/locale/ja/docs/guides/timers-in-node.md @@ -16,7 +16,7 @@ read up on the the Node.js --> # Node.js のタイマーと仕組み -Node.js の Timers モジュールには、 +Node.js のタイマーモジュールには、 一定期間後にコードを実行する関数が含まれています。 ブラウザの JavaScript API をエミュレートするためにすべてのメソッドがグローバルに利用可能であるため、 `require()` を介してタイマーをインポートする必要はありません。 @@ -194,13 +194,8 @@ executing immediate: so immediate `setImmediate()` は `Immediate` オブジェクトを返します。 これを使用して、スケジュールされた Immediate をキャンセル (下記の `clearImmediate()` を参照) できます。 -Note: Don't get `setImmediate()` confused with `process.nextTick()`. There are -some major ways they differ. The first is that `process.nextTick()` will run -*before* any `Immediate`s that are set as well as before any scheduled I/O. -The second is that `process.nextTick()` is non-clearable, meaning once -code has been scheduled to execute with `process.nextTick()`, the execution -cannot be stopped, just like with a normal function. Refer to [this guide](/en/docs/guides/event-loop-timers-and-nexttick/#process-nexttick) -to better understand the operation of `process.nextTick()`. +注意: `setImmediate()` を `process.nextTick()` と混同しないでください。 いくつかの大きな違いがあります。 1つ目は、`process.nextTick()` は、設定されている `Immediate` やスケジュールされている I/O の*前*に実行されるということです。 +2つ目は、`process.nextTick()` は消去不可能であるということです。つまり、一度 `process.nextTick()` でコードを実行するようにスケジュールされると、通常の関数のように実行を停止することはできません。`process.nextTick()` の操作をよく理解するために[このガイド](/ja/docs/guides/event-loop-timers-and-nexttick/#process-nexttick)を参照してください。 -### "Infinite Loop" Execution ~ *`setInterval()`* +### 「無限ループ」実行 ~ *`setInterval()`* If there is a block of code that should execute multiple times, `setInterval()` can be used to execute that code. `setInterval()` takes a function From 47eceb138d2bb6b0d3218cb85d33513ab6292e42 Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Thu, 1 Aug 2019 11:28:10 +0900 Subject: [PATCH 59/61] Translate before "Leaving Timeouts Behind" --- locale/ja/docs/guides/timers-in-node.md | 51 ++++++++++++++----------- 1 file changed, 28 insertions(+), 23 deletions(-) diff --git a/locale/ja/docs/guides/timers-in-node.md b/locale/ja/docs/guides/timers-in-node.md index ea2b6dbedd28d..b3bb182c25cf5 100644 --- a/locale/ja/docs/guides/timers-in-node.md +++ b/locale/ja/docs/guides/timers-in-node.md @@ -194,8 +194,13 @@ executing immediate: so immediate `setImmediate()` は `Immediate` オブジェクトを返します。 これを使用して、スケジュールされた Immediate をキャンセル (下記の `clearImmediate()` を参照) できます。 -注意: `setImmediate()` を `process.nextTick()` と混同しないでください。 いくつかの大きな違いがあります。 1つ目は、`process.nextTick()` は、設定されている `Immediate` やスケジュールされている I/O の*前*に実行されるということです。 -2つ目は、`process.nextTick()` は消去不可能であるということです。つまり、一度 `process.nextTick()` でコードを実行するようにスケジュールされると、通常の関数のように実行を停止することはできません。`process.nextTick()` の操作をよく理解するために[このガイド](/ja/docs/guides/event-loop-timers-and-nexttick/#process-nexttick)を参照してください。 +注意: `setImmediate()` を `process.nextTick()` と混同しないでください。 +いくつかの大きな違いがあります。 +1つ目は、`process.nextTick()` は、設定されている `Immediate` やスケジュールされている I/O の*前*に実行されるということです。 +2つ目は、`process.nextTick()` は消去不可能であるということです。 +つまり、一度 `process.nextTick()` でコードを実行するようにスケジュールされると、 +通常の関数のように実行を停止することはできません。 +`process.nextTick()` の操作をよく理解するために[このガイド](/ja/docs/guides/event-loop-timers-and-nexttick/#process-nexttick)を参照してください。 ### 「無限ループ」実行 ~ *`setInterval()`* -If there is a block of code that should execute multiple times, `setInterval()` -can be used to execute that code. `setInterval()` takes a function -argument that will run an infinite number of times with a given millisecond -delay as the second argument. Just like `setTimeout()`, additional arguments -can be added beyond the delay, and these will be passed on to the function call. -Also like `setTimeout()`, the delay cannot be guaranteed because of operations -that may hold on to the event loop, and therefore should be treated as an -approximate delay. See the below example: +複数回実行する必要があるコードブロックがある場合、 +`setInterval()` を使用してそのコードを実行できます。 +`setInterval()` は2番目の引数として指定されたミリ秒の遅れで無限回実行する関数の引数を取ります。 +`setTimeout()` と同じように、遅延を超えて追加の引数を追加することができ、 +それらは関数呼び出しに渡されます。 +`setTimeout()` と同様に、イベントループに耐えることができる操作のために遅延を保証することはできません。 +したがっておおよその遅延として扱われるべきです。 +以下の例を参照してください。 ```js function intervalFunc() { @@ -241,11 +246,11 @@ function intervalFunc() { setInterval(intervalFunc, 1500); ``` -In the above example, `intervalFunc()` will execute about every 1500 -milliseconds, or 1.5 seconds, until it is stopped (see below). +上の例では、`intervalFunc()` は停止されるまで +約 1500 ミリ秒 (1.5秒) ごとに実行されます(下記参照)。 -Just like `setTimeout()`, `setInterval()` also returns a `Timeout` object which -can be used to reference and modify the interval that was set. +`setTimeout()` と同様に、 +`setInterval()` もまた設定された間隔を参照したり修正したりするのに使用できる `Timeout` オブジェクトを返します。 -## Clearing the Future - -What can be done if a `Timeout` or `Immediate` object needs to be cancelled? -`setTimeout()`, `setImmediate()`, and `setInterval()` return a timer object -that can be used to reference the set `Timeout` or `Immediate` object. -By passing said object into the respective `clear` function, execution of -that object will be halted completely. The respective functions are -`clearTimeout()`, `clearImmediate()`, and `clearInterval()`. See the example -below for an example of each: +## 未来をクリアする + +`Timeout` または `Immediate` オブジェクトをキャンセルする必要がある場合はどうすればいいですか? +`setTimeout()`、`setImmediate()`、および `setInterval()` は、 +set `Timeout`または `Immediate` オブジェクトを参照するために使用できるタイマーオブジェクトを返します。 +前述のオブジェクトをそれぞれの `clear` 関数に渡すことによって、 +そのオブジェクトの実行は完全に停止されます。 +それぞれの関数は `clearTimeout()`、`clearImmediate()`、そして `clearInterval()` です。 +それぞれの例については、以下の例を参照してください: ```js const timeoutObj = setTimeout(() => { From a87a07e5bfb86d0c0558bd4824816256c9fff2ef Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Thu, 1 Aug 2019 11:48:33 +0900 Subject: [PATCH 60/61] Translate remained part. --- locale/ja/docs/guides/timers-in-node.md | 54 ++++++++++++------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/locale/ja/docs/guides/timers-in-node.md b/locale/ja/docs/guides/timers-in-node.md index b3bb182c25cf5..02d2388bf0e6a 100644 --- a/locale/ja/docs/guides/timers-in-node.md +++ b/locale/ja/docs/guides/timers-in-node.md @@ -228,7 +228,7 @@ Just like `setTimeout()`, `setInterval()` also returns a `Timeout` object which can be used to reference and modify the interval that was set. --> -### 「無限ループ」実行 ~ *`setInterval()`* +### "無限ループ" 実行 ~ *`setInterval()`* 複数回実行する必要があるコードブロックがある場合、 `setInterval()` を使用してそのコードを実行できます。 @@ -344,34 +344,34 @@ setImmediate(() => { }); ``` --> -## Leaving Timeouts Behind - -Remember that `Timeout` objects are returned by `setTimeout` and `setInterval`. -The `Timeout` object provides two functions intended to augment `Timeout` -behavior with `unref()` and `ref()`. If there is a `Timeout` object scheduled -using a `set` function, `unref()` can be called on that object. This will change -the behavior slightly, and not call the `Timeout` object *if it is the last -code to execute*. The `Timeout` object will not keep the process alive, waiting -to execute. - -In similar fashion, a `Timeout` object that has had `unref()` called on it -can remove that behavior by calling `ref()` on that same `Timeout` object, -which will then ensure its execution. Be aware, however, that this does -not *exactly* restore the initial behavior for performance reasons. See -below for examples of both: +## 後ろにタイムアウトを残す + +`Timeout` オブジェクトは `setTimeout` と `setInterval` によって返されることを忘れないでください。 +`Timeout` オブジェクトは `unref()` と `ref()` で `Timeout` の振る舞いを増強することを目的とした2つの関数を提供します。 +`set` 関数を使ってスケジュールされた `Timeout` オブジェクトがあれば、 +そのオブジェクトに対して `unref()` を呼び出すことができます。 +これはふるまいをわずかに変えます、 +そして*それが実行する最後のコードであるなら* `Timeout` オブジェクトを呼ばないでください。 +`Timeout` オブジェクトはプロセスを実行し続け、実行するのを待ちません。 + +同様に、`unref()` が呼び出された `Timeout` オブジェクトは、 +同じ `Timeout` オブジェクトに対して `ref()` を呼び出すことでその振る舞いを取り除くことができ、 +それによってその実行が保証されます。 +ただし、パフォーマンス上の理由から、これによって初期の動作が*正確*に復元されるわけではないことに注意してください。 +両方の例については、以下を参照してください。 ```js const timerObj = setTimeout(() => { console.log('will i run?'); }); -// if left alone, this statement will keep the above -// timeout from running, since the timeout will be the only -// thing keeping the program from exiting +// このままにしておくと、 +// タイムアウトがプログラムの終了を妨げる唯一のものになるので、 +// このステートメントは上記のタイムアウトを実行しないようにします。 timerObj.unref(); -// we can bring it back to life by calling ref() inside -// an immediate +// immediate 内で ref() を呼び出すことでそれを元の状態に +// 戻すことができます。 setImmediate(() => { timerObj.ref(); }); @@ -386,10 +386,10 @@ this Node.js guide: [The Node.js Event Loop, Timers, and process.nextTick()](/en/docs/guides/event-loop-timers-and-nexttick/). --> -## Further Down the Event Loop +## イベントループのさらに下へ -There's much more to the Event Loop and Timers than this guide -has covered. To learn more about the internals of the Node.js -Event Loop and how Timers operate during execution, check out -this Node.js guide: [The Node.js Event Loop, Timers, and -process.nextTick()](/en/docs/guides/event-loop-timers-and-nexttick/). +このガイドでカバーしてきた以上に +イベントループとタイマーにはもっとたくさんのものがあります。 +Node.js イベントループの内部と、 +実行中のタイマーの動作の詳細については、 +この Node.js ガイド [Node.js イベントループ、タイマー、および process.nextTick()](/ja/docs/guides/event-loop-timers-and-nexttick/) を参照してください。 From d98a95be05d4df9362bf74ea2cb9422056cd5a64 Mon Sep 17 00:00:00 2001 From: Yuuki Ebihara Date: Thu, 1 Aug 2019 11:58:25 +0900 Subject: [PATCH 61/61] Fixed conjunction. --- locale/ja/docs/guides/timers-in-node.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locale/ja/docs/guides/timers-in-node.md b/locale/ja/docs/guides/timers-in-node.md index 02d2388bf0e6a..06ea846b76350 100644 --- a/locale/ja/docs/guides/timers-in-node.md +++ b/locale/ja/docs/guides/timers-in-node.md @@ -367,7 +367,7 @@ const timerObj = setTimeout(() => { // このままにしておくと、 // タイムアウトがプログラムの終了を妨げる唯一のものになるので、 -// このステートメントは上記のタイムアウトを実行しないようにします。 +// このステートメントで上記のタイムアウトを実行しないようにします。 timerObj.unref(); // immediate 内で ref() を呼び出すことでそれを元の状態に