1 00:00:00,000 --> 00:00:08,350 2 00:00:08,350 --> 00:00:09,710 >> KEVINシュミット:みなさんこんにちは。 3 00:00:09,710 --> 00:00:12,640 CS50セミナーへようこそ Node.js.上 4 00:00:12,640 --> 00:00:13,955 私の名前はケビンです。 5 00:00:13,955 --> 00:00:15,580 私はCS50タスクフォースだ。 6 00:00:15,580 --> 00:00:17,650 そして、私は一種の本当に興奮のようだ このセミナーについて。 7 00:00:17,650 --> 00:00:20,430 私はNode.jsのは非常にクールだと思います。 8 00:00:20,430 --> 00:00:24,200 私はこのセミナーを使用することができることを願って のために良い、私は推測する、踏み台として 9 00:00:24,200 --> 00:00:26,380 最終的なプロジェクトのいくつかの あなたが使用することに興味を持っている 10 00:00:26,380 --> 00:00:27,630 Node.js.のようなもの 11 00:00:27,630 --> 00:00:29,770 12 00:00:29,770 --> 00:00:33,320 >> 私たちは、並べ替えのセミナーを始めるよ ほんの少しの話 13 00:00:33,320 --> 00:00:36,970 背景のスケーラビリティの種類 そしてNode.jsのの観点、および 14 00:00:36,970 --> 00:00:39,240 我々はいくつかのコード例に移動します。 15 00:00:39,240 --> 00:00:42,340 そして、私はウェブサイトにコードがあるでしょう、 あなたはコードを見ることができます。 16 00:00:42,340 --> 00:00:45,475 セミナーの後、私は話のようなものでしょう あなたはNode.jsのを設定する方法について 17 00:00:45,475 --> 00:00:48,220 お使いのコンピュータ上で。 18 00:00:48,220 --> 00:00:48,710 >> [OK]をクリックします。 19 00:00:48,710 --> 00:00:49,760 それではを始めましょう。 20 00:00:49,760 --> 00:00:53,700 だから私は、私は話をしたいと思います 本当に、最初のWebサーバー。 21 00:00:53,700 --> 00:00:59,730 そしてこの議論を開始するには、私 基本的にある図を持っている 22 00:00:59,730 --> 00:01:04,269 CS61に使用教科書、どの 基本的な相互作用を示しています 23 00:01:04,269 --> 00:01:08,510 クライアントプロセスの間に、あなたのWeb​​のような ブラウザやお使いのAIMクライアントなど 24 00:01:08,510 --> 00:01:11,340 そのようなこと、およびWebサーバー。 25 00:01:11,340 --> 00:01:15,150 だから、これは種のようになります あなたが講義で見た絵 26 00:01:15,150 --> 00:01:19,270 基本的に我々はいくつかを持っている水曜日 Google Chromeのようなクライアント·プロセス。 27 00:01:19,270 --> 00:01:22,980 >> そして、ステップ1です クライアントが要求を送信します。 28 00:01:22,980 --> 00:01:27,510 だからよくみましょうのようなものにすることができます 私は、CS50.netを知らない、アクセスしてください。 29 00:01:27,510 --> 00:01:29,320 だから我々はその要求を発行します。 30 00:01:29,320 --> 00:01:34,280 と誰もが名前を覚えていない どのようにそれを指定したプロトコル 31 00:01:34,280 --> 00:01:35,610 要求は、構造化すべきですか? 32 00:01:35,610 --> 00:01:36,382 うん。 33 00:01:36,382 --> 00:01:37,650 >> 観客:[聞こえない]。 34 00:01:37,650 --> 00:01:38,150 >> KEVINシュミット:その通りです。 35 00:01:38,150 --> 00:01:40,100 だから、右、HTTPのようなものだ? 36 00:01:40,100 --> 00:01:44,720 方法については、したがって、基本的仕様 その要求は、実際に敷設する必要があります 37 00:01:44,720 --> 00:01:47,450 なぜなら、一日の終わりに、アウト、 その要求は、本当にただのようなものです 38 00:01:47,450 --> 00:01:50,240 文字列、その基本的 私はこれをしたいと言います。 39 00:01:50,240 --> 00:01:53,580 と仕様 そのためにHTTPです。 40 00:01:53,580 --> 00:01:55,270 だから、プロトコルのようなものだ。 41 00:01:55,270 --> 00:01:57,920 >> それではサーバーが受け取る その要求。 42 00:01:57,920 --> 00:02:01,610 だから、あなたたちは、Webサーバがインストールされている CS50アプライアンス内。 43 00:02:01,610 --> 00:02:02,460 それは、Apacheの。 44 00:02:02,460 --> 00:02:06,230 そして今週は、問題に取り組むとき 7を設定すると、実際に作業になります 45 00:02:06,230 --> 00:02:08,160 そのウェブ·サーバと。 46 00:02:08,160 --> 00:02:12,380 そこでサーバーはその要求を受信し、 それは一種の、その傷を付けています 47 00:02:12,380 --> 00:02:15,090 のようなよく何頭と言う 私はこれを行うのですか? 48 00:02:15,090 --> 00:02:20,060 >> だから、それから、行うことを決定内容に基づいて、 それはいくつかの種類を連絡する必要があります 49 00:02:20,060 --> 00:02:20,730 リソースの。 50 00:02:20,730 --> 00:02:23,700 そのリソースは次のようになり さまざまなことがたくさん。 51 00:02:23,700 --> 00:02:26,810 1の場合は、それだけかもしれない 静的なHTMLファイルのように。 52 00:02:26,810 --> 00:02:29,820 だから、単にいくつかのような可能性が のためのようなものですHTMLの 53 00:02:29,820 --> 00:02:31,100 あなたの個人的なウェブサイト。 54 00:02:31,100 --> 00:02:35,360 なお、画像のような静的なファイルである可能性が またはあなたが持っている映画のよう。 55 00:02:35,360 --> 00:02:37,660 それも、話をする可能性がある データベースのいくつかの種類に 56 00:02:37,660 --> 00:02:39,530 MySQLデータベースのように。 57 00:02:39,530 --> 00:02:43,910 だから、常に通信する必要がありません リソースが、中で 58 00:02:43,910 --> 00:02:45,700 場合によっては、それは可能性があります。 59 00:02:45,700 --> 00:02:47,800 >> だから、それが何を起こっているのか その後、それがために起こっているある 60 00:02:47,800 --> 00:02:49,430 応答を返す。 61 00:02:49,430 --> 00:02:53,130 これに対する応答である また、HTTPで指定された。 62 00:02:53,130 --> 00:02:54,830 それでは、クライアントはそれを受け取ることができます。 63 00:02:54,830 --> 00:02:56,740 それは離れてそれを引き裂き、それを処理することができます。 64 00:02:56,740 --> 00:03:00,900 それから、あなたは、Webページを取得 GoogleやCS50.netなど 65 00:03:00,900 --> 00:03:02,240 何でもあなたがに行ってきました。 66 00:03:02,240 --> 00:03:03,100 OK? 67 00:03:03,100 --> 00:03:06,080 >> だから、これは基本的な相互作用であること 我々は扱うことになるだろう。 68 00:03:06,080 --> 00:03:08,770 そして、我々はかなりになるだろう のこの部分に焦点を当て 69 00:03:08,770 --> 00:03:10,640 相互作用が、サーバー。 70 00:03:10,640 --> 00:03:10,990 [OK]をクリックします。 71 00:03:10,990 --> 00:03:12,210 涼しい。 72 00:03:12,210 --> 00:03:15,500 誰もがこれまでにご質問がある? 73 00:03:15,500 --> 00:03:17,720 [OK]をクリックします。 74 00:03:17,720 --> 00:03:22,430 >> 我々は言ったように、Webサーバが受け取る このHTTPリクエストと、これを発行します 75 00:03:22,430 --> 00:03:24,760 HTTPレスポンス。 76 00:03:24,760 --> 00:03:29,100 とのような、我々は、前に約話をしました CS50アプライアンスのWebサーバは、Apacheです。 77 00:03:29,100 --> 00:03:32,490 だからみんながPで作業するとき7を設定し、 あなたが働くことになるだろう 78 00:03:32,490 --> 00:03:34,120 Apache Webサーバ。 79 00:03:34,120 --> 00:03:37,890 あなたは本当に仕事をしなければならないことは決してないだろう あまりにも多くの直接Apacheで。 80 00:03:37,890 --> 00:03:41,920 あなたは、ソートのApacheのほとんどを設定する あなたは、仮想ホストを指定した場合、または 81 00:03:41,920 --> 00:03:44,970 Vホスト、そして我々は買ってあげる 少しのものと。 82 00:03:44,970 --> 00:03:50,620 >> しかし、基本的には、Apache Webサーバ PHPの種類で動作するように設定 83 00:03:50,620 --> 00:03:51,730 の箱から出して。 84 00:03:51,730 --> 00:03:56,170 あなたが行くとき、何が本当に起こる たとえば、のようなあなたのウェブサイトの1に、 85 00:03:56,170 --> 00:04:00,360 ローカル·ホスト·スラッシュのindex.phpか何か、 お使いのブラウザが送信していること 86 00:04:00,360 --> 00:04:04,330 要求した後、Apacheは座っている そこに、それをどうする見つけ出し。 87 00:04:04,330 --> 00:04:08,840 アクションが実行することです index.phpの中でそのコードと 88 00:04:08,840 --> 00:04:11,330 再びそれを送信します。 89 00:04:11,330 --> 00:04:15,640 だからがあります。 90 00:04:15,640 --> 00:04:16,980 だから我々は一種のこのことについて話しました。 91 00:04:16,980 --> 00:04:21,990 だから、単に静的なファイルを提供することができ または発行し、いくつかのPHPコードを実行し、 92 00:04:21,990 --> 00:04:23,510 応答。 93 00:04:23,510 --> 00:04:27,670 >> それでは、来ることができる一般的な質問 アップが順調で、どのように我々は本当に対処しない 94 00:04:27,670 --> 00:04:31,750 複数のユーザーを持つと 同時に? 95 00:04:31,750 --> 00:04:36,930 あなたがウェブを書いていたのであれば想像 サーバー、Webサーバーを持っていた場合、その 96 00:04:36,930 --> 00:04:39,900 あなたが何かに書き込みをしようとしていた Cまたはそのような何かのように、 97 00:04:39,900 --> 00:04:45,150 基本的にあなたが考えることができる方法がある コー​​ドのいくつかの種類することができること 98 00:04:45,150 --> 00:04:49,330 その要求を受けるだろうが、 それはそれですべての作業を行う必要があります。 99 00:04:49,330 --> 00:04:53,060 それは、例えば、連絡する必要があります データベースまたはそのような何か。 100 00:04:53,060 --> 00:04:53,300 右? 101 00:04:53,300 --> 00:04:56,010 そしてそれはようなものを行うだろう 処理した後、 102 00:04:56,010 --> 00:04:57,060 レスポンスを送信しました。 103 00:04:57,060 --> 00:04:58,950 だから、高いようなものだ レベルの概要。 104 00:04:58,950 --> 00:05:04,210 >> どのようにしかし、それはすぐに明らかではありません それをすることができるように、2つの人々や 105 00:05:04,210 --> 00:05:09,040 でも千人は、あなたと仕事ができる 同時にWebサーバ。 106 00:05:09,040 --> 00:05:14,880 Apacheが使用していますので、ソリューション スレッドまたはプロセスと呼ばれています。 107 00:05:14,880 --> 00:05:16,770 だから、聞いたことがあります これらの用語の前に。 108 00:05:16,770 --> 00:05:22,190 それはあなたがいない場合OKですが、ちょうど考える のための方法として、スレッドやプロセスについて 109 00:05:22,190 --> 00:05:26,290 オペレーティング·システムまたはユーザプログラムまたは そのようなことや、Webサーバー 110 00:05:26,290 --> 00:05:28,810 ソートの倍数を実行する 一度物事。 111 00:05:28,810 --> 00:05:31,760 だから、言葉を聞いたことがあるかもしれ 実行のスレッドのように。 112 00:05:31,760 --> 00:05:34,140 だから、あなたがしているようなもののようなものだ マルチタスクの一種。 113 00:05:34,140 --> 00:05:37,710 >> そして、あなたはあなたの箱に見てきた場合には ラップトップ、またはそのような何か、 114 00:05:37,710 --> 00:05:43,040 あなたが何ができるかマルチコアは、次のことができている 別の上の2つの異なるスレッドを実行 115 00:05:43,040 --> 00:05:46,700 CPUの部品は、できるように、 実際に同時に起こる。 116 00:05:46,700 --> 00:05:48,100 だから、これは本当に強力です。 117 00:05:48,100 --> 00:05:52,270 そして、これは、Apacheの一種である この問題を解決する。 118 00:05:52,270 --> 00:05:57,900 >> とても親切のすべての問題などがある しかし、このアプローチには? 119 00:05:57,900 --> 00:05:59,870 だから私は、私はちょっとそこにそれらを書いたと思います。 120 00:05:59,870 --> 00:06:03,440 しかし、それらの両方の並べ替え 大量のメモリを使用しています。 121 00:06:03,440 --> 00:06:07,490 これは、作成するのは非常に高価だ スレッドまたはプロセス。 122 00:06:07,490 --> 00:06:11,750 >> 推論の一部はそういうことだ あなたがCプログラムを実行しているときのように 123 00:06:11,750 --> 00:06:15,090 メインのような、次にその呼び出し 他の機能、すなわち有する 124 00:06:15,090 --> 00:06:16,520 スタックのいくつかの種類。 125 00:06:16,520 --> 00:06:19,910 だからスレッドも全く必要とし 別々のスタックした 126 00:06:19,910 --> 00:06:21,220 非常に大きくすることができる。 127 00:06:21,220 --> 00:06:25,170 そして、あなたが想像することができる場合のトンを持つ あなたのウェブサイト上のユーザーが、あなたが持っているだろう 128 00:06:25,170 --> 00:06:26,280 異なるスレッドがたくさん。 129 00:06:26,280 --> 00:06:28,230 それはしたスタックをたくさんだ 管理し、維持します。 130 00:06:28,230 --> 00:06:31,280 だから、大量のメモリ消費量です。 131 00:06:31,280 --> 00:06:35,650 >> そして、また、あなたが、唯一持っているとしましょう 1のCPU、または、あなたが、持っているとしましょう 132 00:06:35,650 --> 00:06:38,460 あなたが持っているよりも多くのスレッド これらのマルチコア。 133 00:06:38,460 --> 00:06:38,730 右? 134 00:06:38,730 --> 00:06:43,280 それでは、あなたは10のスレッドを持っていたとしましょう あなたは唯一の5つのCPUを持っていた。 135 00:06:43,280 --> 00:06:46,260 あなたはちょっとこの事をしなければならない場所 あなたが現在切り替える 136 00:06:46,260 --> 00:06:49,090 あなたので、実行している1 一度にすべての10を実行することはできません。 137 00:06:49,090 --> 00:06:50,980 そして、それはコンテキストスイッチと呼ばれています。 138 00:06:50,980 --> 00:06:54,260 そして、その用語は、実際のカップルを持っている 異なるコンテキストが、ちょうどみましょう 139 00:06:54,260 --> 00:06:56,620 スイッチングと考える 2スレッド間。 140 00:06:56,620 --> 00:06:59,730 これはかなり高価になることができますので、 基本的に何をしなければならないことはあなたです 141 00:06:59,730 --> 00:07:03,340 何をやっている停止する必要が、保存 その実行中のスレッドの状態、および 142 00:07:03,340 --> 00:07:05,440 その後、どこか別の場所に切り替える。 143 00:07:05,440 --> 00:07:09,420 >> だから、誰もがちょっと見ることはない なぜスレッドのモチベーションと 144 00:07:09,420 --> 00:07:12,030 プロセスは少しかさばるかもしれない? 145 00:07:12,030 --> 00:07:13,840 そして、あなたは疑問を持っていたのですか? 146 00:07:13,840 --> 00:07:14,376 [OK]をクリックします。 147 00:07:14,376 --> 00:07:15,070 涼しい。 148 00:07:15,070 --> 00:07:18,090 誰か質問はありますか? 149 00:07:18,090 --> 00:07:19,620 [OK]をクリックします。 150 00:07:19,620 --> 00:07:26,720 >> だから我々は第二のために戻って一歩を踏み出すと、 種のようにあります 151 00:07:26,720 --> 00:07:30,350 我々が作ることができ、観察 Webアプリケーションがたくさん。 152 00:07:30,350 --> 00:07:34,810 そして、それは実際にそれらのものがたくさんだ 実際に多くの有用なをしない 153 00:07:34,810 --> 00:07:37,140 スレッドの内部で作業。 154 00:07:37,140 --> 00:07:41,170 だから、誰もが開始されました Pは全く7を設定されていますか? 155 00:07:41,170 --> 00:07:45,650 だから、多分記述したいです 部品の一部? 156 00:07:45,650 --> 00:07:47,850 あなたがログイン時に働いている もしくはそのようなものですか? 157 00:07:47,850 --> 00:07:49,330 >> 観客:いいえ。 158 00:07:49,330 --> 00:07:49,780 >> KEVINシュミット:わかりました。 159 00:07:49,780 --> 00:07:50,150 気にしないで。 160 00:07:50,150 --> 00:07:50,900 申し訳ありません。 161 00:07:50,900 --> 00:07:55,790 しかし、基本的に、P·セットには、なら 並べ替えをたくさん作ることにしよう 162 00:07:55,790 --> 00:07:59,760 いくつかを得るために、データベースへのクエリ そのデータベースからの情報。 163 00:07:59,760 --> 00:08:03,330 そして、何あなたのコードが何されようとしている、 どのようなことをApacheプロセスまたは 164 00:08:03,330 --> 00:08:06,030 Apacheのスレッドが何されようとしていること それは連絡することがありながら、 165 00:08:06,030 --> 00:08:08,990 データベースには、それは一種のことになるだろうされている そこに座って、それはなるだろう 166 00:08:08,990 --> 00:08:12,130 データベースが応答するのを待っている。 167 00:08:12,130 --> 00:08:16,290 >> 今ではその大きなAのように聞こえるない可能性があります データベースが上にあるため対処 168 00:08:16,290 --> 00:08:18,240 CS50アプライアンス、右? 169 00:08:18,240 --> 00:08:22,930 しかし、ネットワークのいくつかの種類があります 今ウェブございますので、待ち時間 170 00:08:22,930 --> 00:08:26,830 サーバーは、自身の要求を発行しなければならない と通信するためのデータベース 171 00:08:26,830 --> 00:08:29,520 データベースから、そのを得る 情報バック。 172 00:08:29,520 --> 00:08:33,190 だから、今では私は、よく私のために待つようなものだ から何かを取りに行くつもり 173 00:08:33,190 --> 00:08:35,770 データベース、次にあります 起こって待っている多くの。 174 00:08:35,770 --> 00:08:36,870 それは理にかなっていますか? 175 00:08:36,870 --> 00:08:38,580 >> そして、いくつかのもののために、それは悪くはないのです。 176 00:08:38,580 --> 00:08:41,950 それだけにある場合は、例えば、 ようではありません·アクセス·メモリ、 177 00:08:41,950 --> 00:08:44,100 恐ろしいのI / Oの待ち時間。 178 00:08:44,100 --> 00:08:47,110 私が言うときには、I / Oの待ち時間、私は今何を を参照すると様のあらゆる種類のようです 179 00:08:47,110 --> 00:08:48,290 入出力。 180 00:08:48,290 --> 00:08:52,950 しかし、同じように、ディスク上のファイルにアクセスするため 私は、静的なHTMLを提供したい場合 181 00:08:52,950 --> 00:08:57,850 私のWebページ上にあったファイルまたは そのようなことは、私はちょっとする必要が 182 00:08:57,850 --> 00:09:02,310 ビットのために停止すると、そのファイルを読む ディスクから、その後、内 183 00:09:02,310 --> 00:09:04,400 そのプロセスは、私が待っています。 184 00:09:04,400 --> 00:09:06,700 私は有益な仕事をしていないよ。 185 00:09:06,700 --> 00:09:11,270 >> これは、すべての真実ではないですが、 Pセットなどのアプリケーションで共通している 186 00:09:11,270 --> 00:09:13,960 7とアプリケーションの多く あなたがわからないこと 187 00:09:13,960 --> 00:09:15,440 実際にははるかに思考をしている。 188 00:09:15,440 --> 00:09:19,090 私は考えを言うとき、私は意味 計算作業などである。 189 00:09:19,090 --> 00:09:23,270 だから、計算作業は、何か可能性が のように、言う、あなたがしたかった 190 00:09:23,270 --> 00:09:26,590 ちょうど計算されたウェブサーバを書く n番目のフィボナッチ数。 191 00:09:26,590 --> 00:09:29,300 それは特にのような音はありません 楽しいWebサーバ。 192 00:09:29,300 --> 00:09:34,220 私は、そのサイトがあると期待していないような 次のフェイスブックが、それはいくつかある 193 00:09:34,220 --> 00:09:35,610 計算作業の種類。 194 00:09:35,610 --> 00:09:39,570 >> そしてあなたがそれを置き換えることを想像することができます 興味深いのいくつかの他の種類の 195 00:09:39,570 --> 00:09:43,070 計算作業。 196 00:09:43,070 --> 00:09:46,050 例えば、あなたが何かを書いていたとしましょう つまり度を算出 197 00:09:46,050 --> 00:09:49,170 2人の間の分離 またはそのような何か。 198 00:09:49,170 --> 00:09:51,860 だから、いくつかの種類を必要としない 計算のですよね? 199 00:09:51,860 --> 00:09:56,630 そしてその時でさえ、あなたはまだ持っていることを行うには 多分待っているの多くを行うために 200 00:09:56,630 --> 00:09:59,550 あなたが見て、データベースを照会する必要があります またはFriendsの方まで 201 00:09:59,550 --> 00:10:00,600 そのような何か。 202 00:10:00,600 --> 00:10:03,510 だから、概念のようなものがあります の計算作業。 203 00:10:03,510 --> 00:10:05,260 それは理にかなっていますか? 204 00:10:05,260 --> 00:10:08,258 誰もが疑問を持っていますか? 205 00:10:08,258 --> 00:10:11,960 >> ああ、私はそこにチャットサーバーを置くと思います チャットサーバーはちょっとなので、 206 00:10:11,960 --> 00:10:13,240 これのもう一つの良い例。 207 00:10:13,240 --> 00:10:15,250 チャットサーバを持っていません 多くの思考をすることができません。 208 00:10:15,250 --> 00:10:18,350 それはちょうど人々に待たなければならない ときに、メッセージを送信し、 209 00:10:18,350 --> 00:10:19,800 彼らは、それらを送信ください。 210 00:10:19,800 --> 00:10:21,050 OK? 211 00:10:21,050 --> 00:10:23,410 212 00:10:23,410 --> 00:10:28,180 >> だから、もう一度Apacheを要約すると、 そのフォークAのような同じようなウェブサーバ 213 00:10:28,180 --> 00:10:31,470 スレッドとプロセスの多くはどの ちょっと無駄にすることができます。 214 00:10:31,470 --> 00:10:37,530 だから私は来るかもしれない質問を推測する それから、我々は持っている必要がないことです 215 00:10:37,530 --> 00:10:39,610 複数のスレッドやプロセス? 216 00:10:39,610 --> 00:10:41,890 私達はちょうど1を持っていたものか? 217 00:10:41,890 --> 00:10:45,710 >> それでは、この種の絵を描くましょう これがどのように見えるかの。 218 00:10:45,710 --> 00:10:47,810 それでは、唯一つのスレッドを使用してみましょう。 219 00:10:47,810 --> 00:10:48,660 OK? 220 00:10:48,660 --> 00:10:52,790 だから1スレッドでこれを想像してみてください。 221 00:10:52,790 --> 00:10:56,600 >> それでは、実際にやっていなかったとしましょう その多くの有用な - と私が言うとき 222 00:10:56,600 --> 00:10:59,450 便利な、私は計算作業を意味する - 223 00:10:59,450 --> 00:11:01,130 前と複数のスレッドで。 224 00:11:01,130 --> 00:11:04,180 それでは、一種の統合ましょう 1スレッドにすべて。 225 00:11:04,180 --> 00:11:07,780 それでは、我々は1つのスレッドが持っていた場合、その種類 ちょうどループで一周したら 226 00:11:07,780 --> 00:11:10,880 常にチェックが何かをした 新しいが起こる。 227 00:11:10,880 --> 00:11:15,130 したがって、たとえば、新しい何かが起こった 私は後ろから何かを持っ意味するかもしれない 228 00:11:15,130 --> 00:11:19,310 送信されたデータベース、または誰か 私新しいHTTP要求。 229 00:11:19,310 --> 00:11:22,290 ので、これらのイベントの一種である それは正しい、起こる? 230 00:11:22,290 --> 00:11:26,130 >> そして私は何ができるかをするとき、これらの新しい ことが起こるこの同じスレッドである 231 00:11:26,130 --> 00:11:30,120 の実行は、この単一のスレッドの 実行、私はいくつかのコードを呼び出すことができます 232 00:11:30,120 --> 00:11:32,410 その特定のものを扱うことになる。 233 00:11:32,410 --> 00:11:36,640 ですから、例えば、私は何かを持っている場合、バック データベースから、私は自分を実行することができます 234 00:11:36,640 --> 00:11:40,960 その小さな計算一部が 実際にはするものを準備する 235 00:11:40,960 --> 00:11:42,620 ユーザーに送り返す。 236 00:11:42,620 --> 00:11:46,710 だから、メイク感覚のようなものしていますか? 237 00:11:46,710 --> 00:11:49,940 >> しかし、本当に何ですか このことの意味? 238 00:11:49,940 --> 00:11:50,660 右? 239 00:11:50,660 --> 00:11:53,730 私たちが書いてきたので、 コー​​ド、その多くの - 240 00:11:53,730 --> 00:11:58,330 と私は先にジャンプするつもりです 大丈夫かどうスライドで。 241 00:11:58,330 --> 00:12:00,930 あなたが気にしないのであれば、私はちょうどよ バックステップを取るつもり。 242 00:12:00,930 --> 00:12:03,410 だから、この種のものであり、 イベントループと呼ばれる。 243 00:12:03,410 --> 00:12:04,070 OK? 244 00:12:04,070 --> 00:12:07,240 そして、それは基本のようなものだ Node.js.の背後にある考え方 245 00:12:07,240 --> 00:12:11,240 >> だから、Node.jsのは本当にウェブとして何をしているか サーバーは、単一のスレッドがあるとされ 246 00:12:11,240 --> 00:12:14,850 つまり、基本的には、ループの周り起こっている 下のしばらく一種のような 247 00:12:14,850 --> 00:12:18,510 絶えずだNode.jsののフード チェック、我々は新しいものを受け取りましたか? 248 00:12:18,510 --> 00:12:22,720 そしてそれはハンドラが実行されます あなたが設定していること。 249 00:12:22,720 --> 00:12:26,720 しかし、聞いて良い質問です、 どのように我々はこれを実現することができます 250 00:12:26,720 --> 00:12:28,090 既存のものと? 251 00:12:28,090 --> 00:12:32,440 >> だから私は、ここでCコードの行を置くこと それは開いているように見えます基本的に 252 00:12:32,440 --> 00:12:33,060 ファイルは、右? 253 00:12:33,060 --> 00:12:36,090 私は、彼女はちょうどアルバムで出てきた。 254 00:12:36,090 --> 00:12:39,600 だから私は彼女に新しいファイルを開く必要がありました。 255 00:12:39,600 --> 00:12:43,810 操作するためのCコードだから道 - 256 00:12:43,810 --> 00:12:47,890 と私は、ファイルを選んだ理由だったと思います これは、エクステントの一種であるため、 257 00:12:47,890 --> 00:12:52,000 我々はC言語でやったのI / O作業の 入出力があることを意味。 258 00:12:52,000 --> 00:12:55,070 だから我々は、このコードを呼び出す このFは開きません。 259 00:12:55,070 --> 00:12:59,370 して、私たちの次の行に このプログラムは、我々は今、Fで作業することができます。 260 00:12:59,370 --> 00:13:02,710 >> だから、これは何かの例になります つまり、同期またはようなものだ 261 00:13:02,710 --> 00:13:06,850 そのため最初の行にブロックする そこに我々は我々を待っている 262 00:13:06,850 --> 00:13:08,110 開いているファイルを取得します。 263 00:13:08,110 --> 00:13:12,260 第2ラインでは、我々は知っている私たち Fで動作しますが、これはことを意味することができます 264 00:13:12,260 --> 00:13:16,240 その二行目は、実際に実行することはできません 最初の行まで実行されます。 265 00:13:16,240 --> 00:13:17,760 それは理にかなっていますか? 266 00:13:17,760 --> 00:13:20,890 >> だから、これは置くことが悪いだろう イベントハンドラで。 267 00:13:20,890 --> 00:13:23,920 そしてその理由は、ということです 待機このような、右か? 268 00:13:23,920 --> 00:13:26,500 だから、これは私たちを戻すだろう 同じものを。 269 00:13:26,500 --> 00:13:29,470 そして今、私たちも持っていません 複数のスレッドの利益や 270 00:13:29,470 --> 00:13:32,390 プロセスは、我々は得たので Node.js.中1のスレッド 271 00:13:32,390 --> 00:13:35,496 それは誰にも意味がありません? 272 00:13:35,496 --> 00:13:35,990 >> 観客:待ってください。 273 00:13:35,990 --> 00:13:36,980 だから、交換は何ですか? 274 00:13:36,980 --> 00:13:37,840 >> KEVINシュミット:ああ、そうです。 275 00:13:37,840 --> 00:13:39,560 だから私はに行くつもりです 交換。 276 00:13:39,560 --> 00:13:40,430 [OK]をクリックします。 277 00:13:40,430 --> 00:13:42,960 だから我々が何かを持っていたものかどう つまり、このように見えた? 278 00:13:42,960 --> 00:13:45,730 それでは、私が編集した、今の場合 Fが少し開いて? 279 00:13:45,730 --> 00:13:48,370 だから私は、同じで渡している 前と2の引数。 280 00:13:48,370 --> 00:13:52,610 私はまだ新しい曲を愛して 彼女が出てきたこと。 281 00:13:52,610 --> 00:13:57,260 しかし、私はその第三のものを渡している この変数は、コードと呼ばれています。 282 00:13:57,260 --> 00:14:02,280 >> しかし、コードは実際には何 この文脈で? 283 00:14:02,280 --> 00:14:05,360 それは、通常のC変数のようなものです? 284 00:14:05,360 --> 00:14:06,740 まさに、機能ですか? 285 00:14:06,740 --> 00:14:09,450 そして、それは少し奇妙な理由かもしれ 私は実際に今渡すようだ 286 00:14:09,450 --> 00:14:12,320 別の関数への関数。 287 00:14:12,320 --> 00:14:14,400 >> このことについて注意するので、カップルのこと。 288 00:14:14,400 --> 00:14:17,145 一、私は実際に呼び出していないよ コー​​ド関数。 289 00:14:17,145 --> 00:14:20,650 だからとコードが表示されない 左括弧、右括弧。 290 00:14:20,650 --> 00:14:23,010 私は、単にコードに渡している。 291 00:14:23,010 --> 00:14:26,990 およびC言語で、これは実際に何をしますか 私にその実際へのポインタを与えている 292 00:14:26,990 --> 00:14:29,740 コー​​ド、および、これはそれを実行することができます。 293 00:14:29,740 --> 00:14:33,350 あなたがしているように、ちょうどそれについて考える ときに実行するコードを渡す 294 00:14:33,350 --> 00:14:35,150 そのファイルが開かれます。 295 00:14:35,150 --> 00:14:41,430 >> しかし、これが意味することになりましたということです 何ができる私のプログラムの他の部分 296 00:14:41,430 --> 00:14:47,050 他のものは、他のをやって続けることができます スタッフたちは、本当に待ってではなく、一方 297 00:14:47,050 --> 00:14:50,890 ちょうど私たちの頭の後ろに持っている ときに、ファイルのオープン、実行することを 298 00:14:50,890 --> 00:14:52,130 一番上にあるコード。 299 00:14:52,130 --> 00:14:53,390 それは理にかなっていますか? 300 00:14:53,390 --> 00:14:58,060 >> そして今、Node.jsの背後にある考え方は、ということです Fと関係のもののコード 301 00:14:58,060 --> 00:15:04,590 一部はかなり短く、簡単でなければならない 本当にも簡単ではない 302 00:15:04,590 --> 00:15:06,160 非常に計算集約。 303 00:15:06,160 --> 00:15:09,390 これは、別のファイルを開く必要があるが、可能性 それもかなり速いであるべき 304 00:15:09,390 --> 00:15:14,710 それだけで、別の女を行うと言う必要があるため 開き、この他のコードを呼び出します。 305 00:15:14,710 --> 00:15:19,100 >> だから、Fは完全に明確にする 新しいケイティペリーの曲をないことにオープン 306 00:15:19,100 --> 00:15:23,060 DONE MP3、それはかなりになるだろう 多くはすぐに戻る。 307 00:15:23,060 --> 00:15:27,820 そして、我々はちょうどやって続けることができます すべてのことになりましたFなぜなら他のもの 308 00:15:27,820 --> 00:15:33,410 OPEN呼び出しは基本的に教えているん 基本となるFオープンコードでは、このファイルを開く 309 00:15:33,410 --> 00:15:36,020 あなたは、これを開いて終了したら あなたはそれを取り戻すときにファイルや、 310 00:15:36,020 --> 00:15:37,480 そのコードを実行します。 311 00:15:37,480 --> 00:15:39,540 しかし、それは実際にそのコードを実行されません。 312 00:15:39,540 --> 00:15:41,815 そして、あなたは疑問を持っていた? 313 00:15:41,815 --> 00:15:46,180 >> 読者:あなたが数を意味するように見えた 計算上の追加の時間 314 00:15:46,180 --> 00:15:50,545 休憩の集中的なコードの並べ替え [聞こえない]駆動システム。 315 00:15:50,545 --> 00:15:51,795 [聞こえない]? 316 00:15:51,795 --> 00:15:54,450 317 00:15:54,450 --> 00:15:55,290 >> KEVINシュミット:それは素晴らしい質問ですね。 318 00:15:55,290 --> 00:15:59,280 だから私は、実際には方法の例を持っている あなたは計算を統合できる 319 00:15:59,280 --> 00:16:01,090 少しの集中コード。 320 00:16:01,090 --> 00:16:03,620 だから我々は、コード例に到達したとき、 私はその1を引くしてくださいよ。 321 00:16:03,620 --> 00:16:04,700 それは大丈夫でしょうか? 322 00:16:04,700 --> 00:16:05,950 ありがとう。 323 00:16:05,950 --> 00:16:07,690 324 00:16:07,690 --> 00:16:08,750 >> あなたの名前は何でしたか? 325 00:16:08,750 --> 00:16:10,620 >> 観客:アーロン。 326 00:16:10,620 --> 00:16:14,830 >> KEVINシュミット:アーロンは非常にが表示されます もし私が持っていたということです良い点、 327 00:16:14,830 --> 00:16:18,560 いくつかの計算集約的なコード F部、残りのものを行う 328 00:16:18,560 --> 00:16:22,880 私のプログラムを実行することはできませんし、聞くことができない すべてまで、新しい要求や何のための 329 00:16:22,880 --> 00:16:24,270 その原料を終了する。 330 00:16:24,270 --> 00:16:27,390 だから私は、一般的にノードのコードを記述している場合 私は行くよように、我々は何かをしない限り、 331 00:16:27,390 --> 00:16:33,060 私達が見ると、後で提案する コー​​ド例は、私がいることを確認する必要が 332 00:16:33,060 --> 00:16:36,060 私のコードは提携しません このイベントループ。 333 00:16:36,060 --> 00:16:38,120 それは理にかなっていますか? 334 00:16:38,120 --> 00:16:38,350 [OK]をクリックします。 335 00:16:38,350 --> 00:16:40,040 涼しい。 336 00:16:40,040 --> 00:16:47,090 >> だから、Node.jsのは、このフレームワークを提供していること あなたはこれらのイベント駆動型を構築することができます 337 00:16:47,090 --> 00:16:48,210 を搭載したサーバー。 338 00:16:48,210 --> 00:16:53,460 だから、非同期のこれらの種類を持っている 一方で、I / Oライブラリ、ノンブロッキング 339 00:16:53,460 --> 00:16:56,800 我々はしてきた標準Cライブラリ 、での作業だけであれば同じよう 340 00:16:56,800 --> 00:16:59,500 我々がしたのと同じ方法でそれらを使用する Fでそれらを使用してして開き、 341 00:16:59,500 --> 00:17:03,000 もの、それらをブロックしているため、 あなたが実際を待たなければならない 342 00:17:03,000 --> 00:17:04,470 開くために、そのファイル。 343 00:17:04,470 --> 00:17:09,290 >> しかし、Node.jsのはあなたにそれを与え、それ 基本的にはGoogleのV8エンジンに結びつける 344 00:17:09,290 --> 00:17:14,030 その理由であるのJavaScriptエンジン Chromeは、処理に非常に高速であること 345 00:17:14,030 --> 00:17:17,040 それのためのJavaScript このV8エンジンを持っています。 346 00:17:17,040 --> 00:17:22,460 だから私はそれがそれらのいずれかのように音を知っている WWDC開発者会議の事 347 00:17:22,460 --> 00:17:25,390 彼らはただの束を投げる場所 プロセッサ用の文字番号の事 348 00:17:25,390 --> 00:17:26,910 これはとてもクールだと言う。 349 00:17:26,910 --> 00:17:34,200 しかし、それは彼らがしたことをクールだ このためのJavaScript - 350 00:17:34,200 --> 00:17:37,010 または多分あなたは精通していないのであれば JavaScriptをまだ我々は持っていなかったので、 351 00:17:37,010 --> 00:17:38,180 それに関する講義 - 352 00:17:38,180 --> 00:17:40,770 しかし、JavaScriptは解釈されます 言語。 353 00:17:40,770 --> 00:17:41,970 >> そして、これはあまりにも重要なポイントです。 354 00:17:41,970 --> 00:17:45,790 だから、私たちのウェブのために重要です サーバーには、右、高速に動作するように? 355 00:17:45,790 --> 00:17:49,970 そして、我々は単にJavaScriptを実行している場合 と解釈されたコードだけ 356 00:17:49,970 --> 00:17:52,130 古いインタプリタは、それが遅くなる場合があります。 357 00:17:52,130 --> 00:17:55,980 これを持っていることから、ノードのメリット 超高速のV8インタプリタ。 358 00:17:55,980 --> 00:17:59,580 彼らはそれを命名した場合、私は知らない なぜなら、額にあるV型8気筒平手打ち 359 00:17:59,580 --> 00:18:01,110 物ですが、OK。 360 00:18:01,110 --> 00:18:07,070 >> だから私は、いくつかの例を用意しました 次のURLで。 361 00:18:07,070 --> 00:18:10,490 セミナー終了後、私は一種のつもりだ あなたはノードセットを取得する方法について話 362 00:18:10,490 --> 00:18:13,570 アップ、しかし今のところ、私はちょうど並べ替えたい いくつかのコード例の中を歩くように。 363 00:18:13,570 --> 00:18:17,250 だから、一緒にフォローしたい場合は、すべての ソースコードが存在可能です。 364 00:18:17,250 --> 00:18:18,720 OK? 365 00:18:18,720 --> 00:18:22,280 >> だから私は、次のURLを残しておきます 少しは最大。 366 00:18:22,280 --> 00:18:24,440 そして私はちょうどに行くよ 端子に切り替えます。 367 00:18:24,440 --> 00:18:29,670 368 00:18:29,670 --> 00:18:34,400 誰もがこのURLで良いですか? 369 00:18:34,400 --> 00:18:37,990 だから私は切り替えるつもりです ここに私の端子に接続されている。 370 00:18:37,990 --> 00:18:42,030 >> そこでここではそのコードです 私は今日のために持っている。 371 00:18:42,030 --> 00:18:43,960 我々は始まらない理由 simpler.jsファイル? 372 00:18:43,960 --> 00:18:49,110 373 00:18:49,110 --> 00:18:52,100 他の事はある、このすべて コー​​ドは、で書かれようとしている 374 00:18:52,100 --> 00:18:56,660 JavaScriptをあなたはどちらたり、 に精通していない場合があります。 375 00:18:56,660 --> 00:19:00,170 私はカップルのことは、そのたくさんあると思います JavaScriptコードの一種である 376 00:19:00,170 --> 00:19:04,000 構文と構造が非常によく似ている C、など、種のそれを拾うことができますので、 377 00:19:04,000 --> 00:19:05,020 あなたが一緒に行く。 378 00:19:05,020 --> 00:19:08,750 私はたくさんの書き込みを試みた の方法でこのコードを開始 379 00:19:08,750 --> 00:19:11,230 それはだように、Cと同様 もう少し読みやすい。 380 00:19:11,230 --> 00:19:15,980 しかし、我々が進むにつれて、私ができるでしょう 追加のいくつかを実証 381 00:19:15,980 --> 00:19:18,980 JavaScriptを特徴という ちょっとクールです。 382 00:19:18,980 --> 00:19:21,510 >> しかし、ここでは、このサンプル·プログラムを見てみましょう。 383 00:19:21,510 --> 00:19:24,820 私はすべてがそこにカットオフだと思う。 384 00:19:24,820 --> 00:19:28,500 私はちょうどその本当のを修正するつもりだ 速い大丈夫かどう。 385 00:19:28,500 --> 00:19:31,400 私はこれが何を起こっているのか分からない。 386 00:19:31,400 --> 00:19:34,660 少し良くあることですか? 387 00:19:34,660 --> 00:19:36,510 あなたはVARやものを見ることができますか? 388 00:19:36,510 --> 00:19:39,320 [OK]をクリックします。 389 00:19:39,320 --> 00:19:44,120 >> だから、最初の行では、JavaScriptのようなものです 変数のバージョン 390 00:19:44,120 --> 00:19:44,800 宣言。 391 00:19:44,800 --> 00:19:49,870 だからこれが何だろう強調表示します だから、これはただのようなものですCのように見える 392 00:19:49,870 --> 00:19:52,620 私は、インデックスが3に等しいと言って またはそのような何か。 393 00:19:52,620 --> 00:19:55,740 だから私は、型を指定しませんでした。 394 00:19:55,740 --> 00:20:00,780 JavaScriptは型がありませんが、だ 非常にダイナミックに自然の中で入力したので、 395 00:20:00,780 --> 00:20:02,580 その上に型のいずれかの種類を提供していませんでした。 396 00:20:02,580 --> 00:20:03,670 だから、それだけで、varを持っています。 397 00:20:03,670 --> 00:20:05,320 すなわち、可変のようなものだ。 398 00:20:05,320 --> 00:20:05,920 OK? 399 00:20:05,920 --> 00:20:08,340 >> そして、私は、この変数はHTTPを呼んでいる。 400 00:20:08,340 --> 00:20:12,480 そして、私の右側に、私が持っている 私は、HTTPに入れたい式。 401 00:20:12,480 --> 00:20:14,960 そして、これは、HTTPを必要とすると言います。 402 00:20:14,960 --> 00:20:18,500 だから、これはちょっと似て含ませることである。 403 00:20:18,500 --> 00:20:22,940 それはもう少しのような強力な以上だ 含める意味に含める 404 00:20:22,940 --> 00:20:26,100 単にヘッダをコピーして貼り付けるだろう 関数プロトタイプのためのファイルまたは 405 00:20:26,100 --> 00:20:27,930 型定義と何でも。 406 00:20:27,930 --> 00:20:30,590 しかし、必要とするが、実際に起こっている 私たちにコードを取得する。 407 00:20:30,590 --> 00:20:33,280 >> だから、と考えることができます いくつかのコードをインポートする。 408 00:20:33,280 --> 00:20:37,960 だから、どこかでNode.jsのモジュール システムまたは何、彼らはこのすべてを持っている 409 00:20:37,960 --> 00:20:40,790 HTTPサーバーのコードは、私はちょうどよ 私自身のためにそれを取得 410 00:20:40,790 --> 00:20:43,130 このプログラムでは個人的な使用。 411 00:20:43,130 --> 00:20:44,260 OK? 412 00:20:44,260 --> 00:20:46,930 >> だから、私はこの機能を持っている 私が書いたことを。 413 00:20:46,930 --> 00:20:50,330 予告私が指定する必要はありませんでした 戻り値の型またはタイプ 414 00:20:50,330 --> 00:20:51,140 引数再び。 415 00:20:51,140 --> 00:20:54,440 だから、ちょっと緩いに入力した 感覚のようなもの。 416 00:20:54,440 --> 00:20:57,290 それは中のかかる二つの引数、 リクエストとレスポンス。 417 00:20:57,290 --> 00:21:02,080 だから、概念的種のようなものだ 我々が持っていた絵でおなじみ 418 00:21:02,080 --> 00:21:05,280 画面上の理由の前に 私たちは、この要求を取得する 419 00:21:05,280 --> 00:21:06,410 利用者から持っている。 420 00:21:06,410 --> 00:21:09,170 そして、我々は、その応答を持っている 我々はに物事を書くことができます。 421 00:21:09,170 --> 00:21:15,060 >> だから、これの最初の行にはない 200をres.writeHeadしてから、この 422 00:21:15,060 --> 00:21:17,070 コンテンツタイプtext平野。 423 00:21:17,070 --> 00:21:19,300 それでは、少しこれを離​​れてつなぎましょう。 424 00:21:19,300 --> 00:21:22,340 それでは、ただres.writeに焦点を当ててみましょう 少しのため。 425 00:21:22,340 --> 00:21:28,420 だから書き込みは、基本的には、ヘッドを書く 並べ替え書き出すだけの方法があります 426 00:21:28,420 --> 00:21:29,960 応答に物事。 427 00:21:29,960 --> 00:21:30,770 OK? 428 00:21:30,770 --> 00:21:36,230 誰もが覚えているのであれば、ヘッドを書く HTTPの講義から、君たちを行う 429 00:21:36,230 --> 00:21:39,940 のヘッダを覚えている HTTPの事の上? 430 00:21:39,940 --> 00:21:43,580 では、なぜ私はデモはありません 実際に素早くヘッダ。 431 00:21:43,580 --> 00:21:44,640 それが参考になる? 432 00:21:44,640 --> 00:21:45,500 それとも一種の私たち必要があります - 433 00:21:45,500 --> 00:21:46,070 [OK]をクリックします。 434 00:21:46,070 --> 00:21:46,740 かしこまりました。 435 00:21:46,740 --> 00:21:52,340 >> だからあなたのブラウザがgoogle.comになると またはそのような何か、 436 00:21:52,340 --> 00:21:54,250 実際にはほとんどそれだけではありません - 437 00:21:54,250 --> 00:21:55,380 これは秘密のようです - 438 00:21:55,380 --> 00:21:58,340 もう少し情報のようにあります それは単なるパイプを通ってくる 439 00:21:58,340 --> 00:22:00,180 ちょっと検索してすべてのもの。 440 00:22:00,180 --> 00:22:03,550 だから、あなたにこれを示すために、私は行くよ カールと呼ばれるプログラムを使用します。 441 00:22:03,550 --> 00:22:04,260 OK? 442 00:22:04,260 --> 00:22:08,020 だから、これはあなたが実行することができるものです お使いのMac OSXのコマンドラインまたは中 443 00:22:08,020 --> 00:22:09,830 アプライアンスまたは何でも。 444 00:22:09,830 --> 00:22:17,050 だから、私はカールない場合は、HTTP google.com、 私は、HTMLを見に行くよ。 445 00:22:17,050 --> 00:22:21,230 これは、公正さに、あるだけ 並べ替えの方法を説明しますHTMLの 446 00:22:21,230 --> 00:22:24,695 お使いのブラウザがない場合は、WWWにリダイレクト 自動的に処理 447 00:22:24,695 --> 00:22:27,110 リダイレクション。 448 00:22:27,110 --> 00:22:33,390 >> だから、これは単なるHTMLですが、私は行くよ このハイフンIフラグカールに追加するには。 449 00:22:33,390 --> 00:22:33,600 OK? 450 00:22:33,600 --> 00:22:35,600 これはショーになるだろう 私のヘッダー。 451 00:22:35,600 --> 00:22:40,640 だから、これはまた、付属の情報です を通じて、私は、この応答を取得するとき。 452 00:22:40,640 --> 00:22:41,260 OK? 453 00:22:41,260 --> 00:22:45,320 >> だから上部には、これを参照してください HTTP 301は恒久的に移動します。 454 00:22:45,320 --> 00:22:49,470 そしてこれは、重要なの一種である これはステータスコードを指す。 455 00:22:49,470 --> 00:22:53,750 だからここに301は、ステータスコードです 基本的には整数である 456 00:22:53,750 --> 00:22:57,750 つまり、ブラウザまたは誰だと伝えます あなたがそのふりをした場合、これを読んで 457 00:22:57,750 --> 00:23:01,460 ブラウザだとあなたはこれを見ている、 基本的にはこれで、見れば 458 00:23:01,460 --> 00:23:04,960 ことと、301を参照してください、あなたは私が持っている知っている に基づいて特別な何かをする 459 00:23:04,960 --> 00:23:08,810 301、または起きた特別なもの 301に基づく。 460 00:23:08,810 --> 00:23:12,640 だから、永久に移動述べています。 461 00:23:12,640 --> 00:23:17,700 >> そして、基本的に、我々は持っている キーと値のペアの束。 462 00:23:17,700 --> 00:23:22,100 だから我々は場所を取得 www.google.comである。 463 00:23:22,100 --> 00:23:25,190 して、種類のすべてのこの他のもの、 しかし基本的には、どのような場所がある 464 00:23:25,190 --> 00:23:29,662 ことわざは、新しい場所で www.google.comである。 465 00:23:29,662 --> 00:23:33,800 だから今は、google.comに行けば、あなたはよ 並べ替えの点滅のブラウザの種類を参照してください。 466 00:23:33,800 --> 00:23:38,770 秒してからリダイレクト 右後ろwww.google.comへ。 467 00:23:38,770 --> 00:23:41,840 だから、応答は含めることができます これらのヘッダ。 468 00:23:41,840 --> 00:23:43,330 >> 物事のカップルは指摘すること。 469 00:23:43,330 --> 00:23:46,890 それでは、私たちが実際に成功したとしましょう Webページを訪問中。 470 00:23:46,890 --> 00:23:49,040 だから私はへ行こう - 471 00:23:49,040 --> 00:23:51,080 良いウェブサイトは何ですか? 472 00:23:51,080 --> 00:23:53,285 私は良いの思考が苦手だ その場でのウェブサイト。 473 00:23:53,285 --> 00:23:53,640 >> 観客:ウィキペディア。 474 00:23:53,640 --> 00:23:54,160 >> KEVINシュミット:わかりました。 475 00:23:54,160 --> 00:23:56,040 のウィキペディアをやってみましょう。 476 00:23:56,040 --> 00:23:58,680 だからここに私は感動しました。 477 00:23:58,680 --> 00:23:59,240 いや待て。 478 00:23:59,240 --> 00:24:00,160 私はでしたか? 479 00:24:00,160 --> 00:24:00,890 はい、私でした。 480 00:24:00,890 --> 00:24:01,100 [OK]をクリックします。 481 00:24:01,100 --> 00:24:03,005 だから私は、WWWを行うようになった。 482 00:24:03,005 --> 00:24:06,006 だから私は、WWWをするつもりです。 483 00:24:06,006 --> 00:24:09,680 ご覧のように、ここではすべてのHTMLです ブラウザが処理するだろうと 484 00:24:09,680 --> 00:24:10,910 ウィキペディアのために。 485 00:24:10,910 --> 00:24:14,055 >> しかし、私はここにスクロールし続ける場合には、 私が一番上に何が表示されます - 486 00:24:14,055 --> 00:24:17,800 うわー、たくさんあり​​ます ウィキペディア上のHTML - 487 00:24:17,800 --> 00:24:22,550 しかし、私がここで一番上に見ることができることです。 に関して反対この200ステータスコード 488 00:24:22,550 --> 00:24:24,570 私は前に見た301。 489 00:24:24,570 --> 00:24:27,100 そして、それは素敵なを持っていることに気付く その横にやさしい[OK]をクリックします。 490 00:24:27,100 --> 00:24:29,470 だから、これは正常なステータスコードのようなものです。 491 00:24:29,470 --> 00:24:31,160 >> その200番号は、見覚えのでしょうか? 492 00:24:31,160 --> 00:24:34,120 493 00:24:34,120 --> 00:24:39,880 はい、私はsimpler.jsをしたときなので、 私はそこに200を書いた。 494 00:24:39,880 --> 00:24:43,290 だから、基本的に教えて言っている ブラウザや誰に取得しようとしている 495 00:24:43,290 --> 00:24:45,440 彼らが成功したことを、この。 496 00:24:45,440 --> 00:24:49,040 など、私たちのようなもの あまりにも成功した。 497 00:24:49,040 --> 00:24:54,320 >> そして特別な構文、この種があります JavaScriptで宣言するための 498 00:24:54,320 --> 00:24:59,870 コンテンツタイプのように、これらのキーのマップ とテキスト、プレーンのような、これらの値。 499 00:24:59,870 --> 00:25:03,780 ですから、私たちという応答を見れば 前バックウィキペディアからだ - 500 00:25:03,780 --> 00:25:06,200 私は、スクロールしようするつもりだ 少し速くアップ - 501 00:25:06,200 --> 00:25:09,900 あなたはサーバのようにこれらのキーを持っている これらの値は、Apache。 502 00:25:09,900 --> 00:25:12,120 だから、キーと値を持っている。 503 00:25:12,120 --> 00:25:15,930 そして、あなたはこれを指定することができます 返信するどのノード。 504 00:25:15,930 --> 00:25:19,380 >> これは、一部では、実際に種類のものである 方法、およびいくつかの点でそうではありません 505 00:25:19,380 --> 00:25:23,170 本当に、それは少し低いレベルだ あなたは可能性がありますPHPコードより 506 00:25:23,170 --> 00:25:26,980 Pに対する書き込みは7を設定しているので、PHPと Apacheは、ソートのいくつかの世話をする 507 00:25:26,980 --> 00:25:28,150 あなたのためにこれらの事。 508 00:25:28,150 --> 00:25:32,520 PHPでは、デフォルトを上書きすることができます 独自のヘッダを書き込むことで行動。 509 00:25:32,520 --> 00:25:35,520 しかし、この目的のために、我々は、取得 私たち自身のヘッダを書き出す。 510 00:25:35,520 --> 00:25:38,210 511 00:25:38,210 --> 00:25:41,105 >> だから、その行はしても意味がありません 誰もが、書き込みヘッドライン? 512 00:25:41,105 --> 00:25:41,380 [OK]をクリックします。 513 00:25:41,380 --> 00:25:42,280 素晴らしい。 514 00:25:42,280 --> 00:25:45,870 >> それでは私は何をすることは、私が応答を終了です ハローワールドと言って。 515 00:25:45,870 --> 00:25:47,040 [OK]をクリックします。 516 00:25:47,040 --> 00:25:49,920 しかし、それは単に関数の リクエストハンドラと呼ばれる。 517 00:25:49,920 --> 00:25:53,510 だから今私は実際にちょっとしなければならない この機能を使用して何か、右か? 518 00:25:53,510 --> 00:25:59,170 >> だからここに私は何をすべきか、これは存在している VARサーバ等号を行い、ライン 519 00:25:59,170 --> 00:26:03,530 HTTP.createサーバー、そして私 要求ハンドラに渡す。 520 00:26:03,530 --> 00:26:06,080 だから、これは、ノードの一種である サーバーを作成する方法。 521 00:26:06,080 --> 00:26:08,790 そして、私は渡していることに気付く リクエストハンドラ内。 522 00:26:08,790 --> 00:26:12,290 だから、これはcreateServerを語っている 私はあなたが私にしたい機能 523 00:26:12,290 --> 00:26:16,270 サーバー、およびときに、サーバーが受信する 応答、私はあなたがこれを呼び出す必要があります 524 00:26:16,270 --> 00:26:18,680 リクエストハンドラ関数。 525 00:26:18,680 --> 00:26:18,990 OK? 526 00:26:18,990 --> 00:26:22,290 >> だから、そのラインはかなり すぐに終了します。 527 00:26:22,290 --> 00:26:28,780 だから、VARサーバラインが正しく行われている あなたはかなりそれをした後。 528 00:26:28,780 --> 00:26:31,770 私が意味する、それはいくつかの内部を設定する必要があります あなたがしなければならないことを知っている状態 529 00:26:31,770 --> 00:26:35,400 その要求ハンドラ関数を呼び出しますが、 それはそこに座ってするつもりはないし、 530 00:26:35,400 --> 00:26:37,730 送信されたユーザーを持っていると言う 私、まだ要求? 531 00:26:37,730 --> 00:26:39,270 ユーザーがまだ私に要求を送信した? 532 00:26:39,270 --> 00:26:40,780 だから、ブロックしません。 533 00:26:40,780 --> 00:26:41,650 OK? 534 00:26:41,650 --> 00:26:46,120 >> だから、これが何を行いますと、それは基本的に 今、このコードへのポインタを格納し、 535 00:26:46,120 --> 00:26:49,670 この要求ハンドラ関数、次いで そのコードを実行するタイミングを誰か 536 00:26:49,670 --> 00:26:52,170 要求を行う。 537 00:26:52,170 --> 00:26:54,120 そして、我々はserver.listenを行う。 538 00:26:54,120 --> 00:26:56,950 539 00:26:56,950 --> 00:26:59,960 >> 1337はかなり任意であります。 540 00:26:59,960 --> 00:27:02,285 私は特別な理由がなかった その番号を選ぶため。 541 00:27:02,285 --> 00:27:03,860 それは完全にランダムだった。 542 00:27:03,860 --> 00:27:07,010 しかし、それは単にポートを指定します。 543 00:27:07,010 --> 00:27:10,640 あなたは彼らのがわかりますので、ほとんどのWebサーバ それは親切なので、ポート80を使用 544 00:27:10,640 --> 00:27:11,810 の慣習のような。 545 00:27:11,810 --> 00:27:16,170 だから、私のようなものに行けば、 私は知らない、Wikipedia.org、 546 00:27:16,170 --> 00:27:17,700 と私は、コロン8を入れて - 547 00:27:17,700 --> 00:27:18,610 すごいああ、あなたはそれを見ることはできません。 548 00:27:18,610 --> 00:27:19,370 ごめんなさい。 549 00:27:19,370 --> 00:27:21,820 しかし、私はウィキペディアを行う場合 - 550 00:27:21,820 --> 00:27:24,810 私はちょうどそのようにそれをここに書きます それはカメラのは明らかだ。 551 00:27:24,810 --> 00:27:29,150 しかし、私は使用してブラウザにこれを取れば 指定コロン80は、に行く 552 00:27:29,150 --> 00:27:31,430 ポート80でWikipedia.org。 553 00:27:31,430 --> 00:27:36,200 だから、アメリカが持っているかのようなものだ あなたが出荷できる場所のような複数のポート 554 00:27:36,200 --> 00:27:37,440 一種の名所。 555 00:27:37,440 --> 00:27:40,730 だから、この特定に行くようなものだ このサーバー上に置きます。 556 00:27:40,730 --> 00:27:40,990 [OK]をクリックします。 557 00:27:40,990 --> 00:27:45,730 >> だから、僕は1337を選びました。 558 00:27:45,730 --> 00:27:47,910 番号の全範囲があります あなたが選ぶことができます。 559 00:27:47,910 --> 00:27:50,390 それは完全に特別なものではありませんでした。 560 00:27:50,390 --> 00:27:54,560 >> しかし、私が今やろうとしているもの 私は、ノードを実行するつもりです。 561 00:27:54,560 --> 00:27:59,730 私が実際に入力させることのカップル あなたがそれを見ることができるようにダウンライン。 562 00:27:59,730 --> 00:28:03,130 私は、ノードをするつもりだ、と私はよ simpler.jsを実行するつもり。 563 00:28:03,130 --> 00:28:06,880 そして、我々は取得する方法について話します ノードは、少しで設定。 564 00:28:06,880 --> 00:28:09,350 しかし、今、それだけでサーバーを実行している。 565 00:28:09,350 --> 00:28:14,360 >> だから一つのこと、我々は試すことができているではないかもしれない 刺激的な、我々が実際にできているということ 566 00:28:14,360 --> 00:28:16,300 カールでアクセスしてみてください。 567 00:28:16,300 --> 00:28:20,680 だから私はカールをし、私のことができます マシンはローカルホストです。 568 00:28:20,680 --> 00:28:24,600 また、これが書かれた表示されます 時々、このような。 569 00:28:24,600 --> 00:28:29,810 ローカルホストと127.0.0.1は親切です あなたの自宅のコンピュータのように。 570 00:28:29,810 --> 00:28:33,180 だから、と話のようなものだ 自分のコンピュータ。 571 00:28:33,180 --> 00:28:33,760 [OK]をクリックします。 572 00:28:33,760 --> 00:28:36,030 >> そして私は1337年を言うことができます。 573 00:28:36,030 --> 00:28:39,630 だから私は、このコード行を実行すると、 それは世界こんにちは言う。 574 00:28:39,630 --> 00:28:44,050 そして、私はその原料を見たいと思った場合に プレーンテキストのコンテンツタイプを持っていたか、 575 00:28:44,050 --> 00:28:46,560 何でも、私もここにこれを置くことができます。 576 00:28:46,560 --> 00:28:48,810 そして、それがOKと言っていますことに注意してください。 577 00:28:48,810 --> 00:28:50,810 そして、私は、テキスト、プレーンを持っている。 578 00:28:50,810 --> 00:28:53,140 して、このすべての他の種類があります ノードの中に追加されますもの 579 00:28:53,140 --> 00:28:54,440 そこに私のために。 580 00:28:54,440 --> 00:28:55,700 それは、超重要ではありません。 581 00:28:55,700 --> 00:28:58,230 >> 私が意味する、技術のいくつかの種類があります やさしい時の側面 582 00:28:58,230 --> 00:29:02,280 について話をするが、ちょうど示すことクールなの あなたは、私も力を持っている 583 00:29:02,280 --> 00:29:03,070 これらの周りを変更。 584 00:29:03,070 --> 00:29:06,280 だから私はちょうど束を追加することができます そのようなものの。 585 00:29:06,280 --> 00:29:11,780 [今すぐに、私は私を見ると 出力は、そのなります。 586 00:29:11,780 --> 00:29:19,740 したがって、これらのヘッダーは、特定のものを意味する ブラウザやそのようなことに。 587 00:29:19,740 --> 00:29:23,040 >> およびヘッダーは基本的にブラウザに指示することができます 何かに応答する方法。 588 00:29:23,040 --> 00:29:26,280 あなたは今までのクッキーのことを聞いてしまった場合、 またはあなたがイライラしてきた場合には 589 00:29:26,280 --> 00:29:29,330 クッキーを設定するWebページによって、 またはクッキーブロックになっているか 590 00:29:29,330 --> 00:29:30,320 そのような何か。 591 00:29:30,320 --> 00:29:33,040 あなたが実際にクッキーを設定することができます これらのヘッダにある。 592 00:29:33,040 --> 00:29:36,990 そこで、彼らはどのようにブラウザに指示 いくつかのケースで行動。 593 00:29:36,990 --> 00:29:37,750 [OK]をクリックします。 594 00:29:37,750 --> 00:29:40,310 >> だからsimpler.jsた。 595 00:29:40,310 --> 00:29:42,780 誰もが疑問を持っていますか そのソースコードファイルに? 596 00:29:42,780 --> 00:29:45,420 597 00:29:45,420 --> 00:29:45,610 [OK]をクリックします。 598 00:29:45,610 --> 00:29:46,490 涼しい。 599 00:29:46,490 --> 00:29:50,780 >> それでは、それとRを削除してみましょう そしてsimple.jsを見てください。 600 00:29:50,780 --> 00:29:53,010 だから、これはかなりある 同じプログラム。 601 00:29:53,010 --> 00:29:56,030 私はほんの少し違ったそれを書いた 私はハイライトのようなものしたかったので、 602 00:29:56,030 --> 00:29:57,850 JavaScriptの機能の一部。 603 00:29:57,850 --> 00:30:03,880 >> だから要求ハンドラに気付く 機能は完全に姿を消しました。 604 00:30:03,880 --> 00:30:05,800 うんああ、あなたは疑問を持っていたのですか? 605 00:30:05,800 --> 00:30:08,200 >> 観客:ええ、引数 それに渡される 606 00:30:08,200 --> 00:30:10,120 機能、彼らは何ですか? 607 00:30:10,120 --> 00:30:12,050 >> KEVINシュミット:だからものがある JavaScriptのオブジェクト。 608 00:30:12,050 --> 00:30:15,230 Node.jsのドキュメントでは、 基本的な方法が何であるかを述べています 609 00:30:15,230 --> 00:30:15,910 それらに利用できる。 610 00:30:15,910 --> 00:30:19,602 私達はちょうどへのアクセス権を持って起こる 書き込みヘッドとエンドと呼ばれるこの方法 611 00:30:19,602 --> 00:30:20,730 そのようなもの。 612 00:30:20,730 --> 00:30:22,590 しかし、全体の束があります 複数のメソッド。 613 00:30:22,590 --> 00:30:27,670 >> 例えば、そのうちの一つのような RECの特定には、行うことができます 614 00:30:27,670 --> 00:30:34,540 その意志rec.methodのようなもの それはHTTP GETまたはだかどうかを教えてくれ 615 00:30:34,540 --> 00:30:36,780 HTTP POST要求と そのようなこと。 616 00:30:36,780 --> 00:30:39,100 だから、異なるのすべての種類があります プロパティが、彼らは両方だ 617 00:30:39,100 --> 00:30:42,560 JavaScriptのオブジェクト、および彼らは持っている それらに接続されている機能は、あなたという 618 00:30:42,560 --> 00:30:43,850 に物事を書くことができます。 619 00:30:43,850 --> 00:30:45,520 OK? 620 00:30:45,520 --> 00:30:49,030 >> だから要求ハンドラに気付く 完全になくなっています。 621 00:30:49,030 --> 00:30:52,650 しかし、私は要求の中で持っていたコード ハンドラがまだそこにある。 622 00:30:52,650 --> 00:30:56,520 私はまだこのres.writeHeadを持っている と私はまだこのres.endを持っている。 623 00:30:56,520 --> 00:31:00,270 そして、これは中の例何ですか JavaScriptは、この考えです 624 00:31:00,270 --> 00:31:01,460 無名関数。 625 00:31:01,460 --> 00:31:04,180 と匿名フィッティング名前のようです それのためのそれは文字通りしないため、 626 00:31:04,180 --> 00:31:05,180 名前を持っている。 627 00:31:05,180 --> 00:31:07,900 何の機能要求はありません そこでのハンドラ。 628 00:31:07,900 --> 00:31:10,110 >> 名前がないが、それでも 引数を取っている。 629 00:31:10,110 --> 00:31:12,250 だから私は今でもRECとRESた。 630 00:31:12,250 --> 00:31:16,180 と私はまだコードがあります。 631 00:31:16,180 --> 00:31:18,930 これはまったく問題あり JavaScriptのコード。 632 00:31:18,930 --> 00:31:22,540 だから私はせずに関数を宣言することができます 明示的に名前を与える。 633 00:31:22,540 --> 00:31:24,250 最初は少し混乱だ。 634 00:31:24,250 --> 00:31:26,230 いくつかのような便利なものがあります あなたが使ってできること 635 00:31:26,230 --> 00:31:28,450 これらの匿名関数。 636 00:31:28,450 --> 00:31:32,100 誰もがこの上の任意の質問がありますか、 またはそれは、ちょうど今のところ、までOK 637 00:31:32,100 --> 00:31:34,130 並べ替えだけであること、それを受け入れる 同じことをしますか? 638 00:31:34,130 --> 00:31:36,700 639 00:31:36,700 --> 00:31:37,125 うん? 640 00:31:37,125 --> 00:31:38,680 >> 観客:関数が最初に JavaScriptでクラス? 641 00:31:38,680 --> 00:31:41,020 >> KEVINシュミット:彼らは最初である JavaScriptでクラス。 642 00:31:41,020 --> 00:31:45,490 そして、ちょうどこれらの概念のことを知っている のような無名関数を渡す 643 00:31:45,490 --> 00:31:49,600 これはJavaScriptに適用されます あなたの最終的なプロジェクトで書くこと 644 00:31:49,600 --> 00:31:51,260 あまりにもWebブラウザ。 645 00:31:51,260 --> 00:31:56,700 したがって、たとえば、JavaScriptで中 お使いのブラウザが、それはまた、ややイベントの 646 00:31:56,700 --> 00:32:00,680 ある意味で駆動することが何をよ 持っているユーザーがこれをクリックしたときです。 647 00:32:00,680 --> 00:32:02,640 ボタンを押すと、私はこのコードを実行したい。 648 00:32:02,640 --> 00:32:07,070 >> だから、のアイデアと同じようなものだ クライアント側のマウスクリックや、それらとき 649 00:32:07,070 --> 00:32:09,870 あなたにいくつかの画像の上にマウス Webページは、このコードを実行する。 650 00:32:09,870 --> 00:32:11,350 つまり、サーバに適用することができます。 651 00:32:11,350 --> 00:32:16,380 だから、ちょっと刺激的なものだ JavaScriptが本当に理由 652 00:32:16,380 --> 00:32:19,810 適切なまたは一部の人々はそれがだと思う この種のに適した言語 653 00:32:19,810 --> 00:32:22,530 あなたが持っているため、イベント·ドライバ·サーバー これらの匿名関数。 654 00:32:22,530 --> 00:32:26,150 あなたは全体のアイデアを持っている この非同期コード。 655 00:32:26,150 --> 00:32:27,060 [OK]をクリックします。 656 00:32:27,060 --> 00:32:30,360 誰か質問はありますか? 657 00:32:30,360 --> 00:32:30,470 >> [OK]をクリックします。 658 00:32:30,470 --> 00:32:33,440 だからsimple.jsた。 659 00:32:33,440 --> 00:32:38,070 それでは、もう一つを見てみましょう 以上のカップル。 660 00:32:38,070 --> 00:32:42,040 だから、これはsleep.jsです。 661 00:32:42,040 --> 00:32:47,160 そう精通して誰もがある C関数の睡眠? 662 00:32:47,160 --> 00:32:50,936 以前の講義の多分1から もしくはそのようなものですか? 663 00:32:50,936 --> 00:32:54,650 >> そこで、基本的に私は考えて渡すことができます 秒数またはUを使用している場合 664 00:32:54,650 --> 00:32:57,080 ミリ秒数を寝る またはナノ秒。 665 00:32:57,080 --> 00:33:00,450 基本的にプログラムは単に停止します その時間に立候補。 666 00:33:00,450 --> 00:33:01,280 右? 667 00:33:01,280 --> 00:33:06,970 そしてそれは最終的に目を覚ますとなります それは単に実行を継続します 668 00:33:06,970 --> 00:33:08,340 プログラム。 669 00:33:08,340 --> 00:33:12,740 >> したがって、このサーバーは、並べ替えの与え 睡眠の印象。 670 00:33:12,740 --> 00:33:17,580 だから我々は同じを持っていることに気付く ヘッダとして200をres.writeHead 671 00:33:17,580 --> 00:33:22,130 前が、その後我々はこれを呼んでいる 機能が設定されたタイムアウトと呼ばれる。 672 00:33:22,130 --> 00:33:26,170 設定されたタイムアウトは、以下でも入手可能 ウェブブラウザGoogle Chromeの 673 00:33:26,170 --> 00:33:28,000 またはSafariや何でも。 674 00:33:28,000 --> 00:33:31,720 そして基本的にはここでやっているのか それは関数で取っています。 675 00:33:31,720 --> 00:33:33,360 通知は、再び、それはだ 無名関数。 676 00:33:33,360 --> 00:33:36,310 我々はしているので、だからそれはちょっとクールだ 内無名関数を使用して、 677 00:33:36,310 --> 00:33:38,950 無名関数これ 少し奇妙なことができます。 678 00:33:38,950 --> 00:33:42,270 >> しかし、それはある、その機能を取っている この方法と - 基本的に言って 679 00:33:42,270 --> 00:33:47,430 作品は、私が欲しい、5000ミリ秒である あなたは、その機能を実行するためにどの 680 00:33:47,430 --> 00:33:50,830 ただちょっと反応が終了し、書き込みます。 681 00:33:50,830 --> 00:33:56,730 だから、これはのような印象を与えます 眠ったが、実際にはこの方法 682 00:33:56,730 --> 00:33:59,780 作品は、私たちが通るよです 非常に迅速にこの行。 683 00:33:59,780 --> 00:34:01,190 我々だけで何かを書いている。 684 00:34:01,190 --> 00:34:03,780 そして、我々はまた、を介して実行します 非常に迅速にこの行。 685 00:34:03,780 --> 00:34:08,620 だから我々は、実際につもりはない 5秒待つ。 686 00:34:08,620 --> 00:34:11,370 我々だけで実行するつもり 瞬時にこのコード。 687 00:34:11,370 --> 00:34:14,219 >> そして、再び、この小さなあります 今この事を持ってイベントループ 688 00:34:14,219 --> 00:34:17,570 基本的にはあるレジスタ 常にサークルの中を行く 689 00:34:17,570 --> 00:34:21,620 単一の時計を見て スレッドと言って、5秒を持っている 690 00:34:21,620 --> 00:34:22,360 まだ合格? 691 00:34:22,360 --> 00:34:26,409 そしてそれは、第2を見たとき 手は5秒以上のように移動した 692 00:34:26,409 --> 00:34:29,190 何でも、それは、目を覚ますと言う ああ、私は何をしなければならないのですか? 693 00:34:29,190 --> 00:34:30,350 ああ、私はこのコードを実行する必要があります。 694 00:34:30,350 --> 00:34:33,110 そして、それはなるだろう ちょっとres.end実行します。 695 00:34:33,110 --> 00:34:35,360 >> だからもう一度、私たちはここで待っていることはありませんしている。 696 00:34:35,360 --> 00:34:38,590 だから、内部に、このコードではありません この関数は、5を取るために起こっている 697 00:34:38,590 --> 00:34:39,900 実行するには秒。 698 00:34:39,900 --> 00:34:43,090 このコードはかなり実行されます 瞬時に、少なくともに対する相対 699 00:34:43,090 --> 00:34:46,139 我々は話していた5秒 約先に前に。 700 00:34:46,139 --> 00:34:52,100 >> だから、この動作を表示する 私はNode.sleep.jsを行うことができます。 701 00:34:52,100 --> 00:34:55,159 そして何かを私混乱をやった? 702 00:34:55,159 --> 00:34:56,310 おそらく。 703 00:34:56,310 --> 00:34:57,410 申し訳ありません。 704 00:34:57,410 --> 00:34:59,530 のは、我々はこの問題を解決するために何ができるか見てみましょう。 705 00:34:59,530 --> 00:35:10,830 706 00:35:10,830 --> 00:35:12,080 [OK]をクリックします。 707 00:35:12,080 --> 00:35:15,460 708 00:35:15,460 --> 00:35:17,464 だから、間違いなくNode.js.を使用 709 00:35:17,464 --> 00:35:19,440 私は冗談だ。 710 00:35:19,440 --> 00:35:19,570 [OK]をクリックします。 711 00:35:19,570 --> 00:35:20,820 ちょうど1秒。 712 00:35:20,820 --> 00:35:27,380 713 00:35:27,380 --> 00:35:27,900 [OK]をクリックします。 714 00:35:27,900 --> 00:35:29,130 私はそれが何であるかを知っています。 715 00:35:29,130 --> 00:35:34,440 >> だから、問題は、私の他のタブにあるということです ここで、私はすでにノードを実行していた 716 00:35:34,440 --> 00:35:36,590 その同じアドレス、1337。 717 00:35:36,590 --> 00:35:43,370 我々は見てみると、これは、投げたように、エラー それを現実の密接内のアドレスである 718 00:35:43,370 --> 00:35:45,180 、EADDRINUSEを使用しています。 719 00:35:45,180 --> 00:35:47,970 だから私はすでにここに1337を使用していた。 720 00:35:47,970 --> 00:35:52,210 私は今、このを遮断し、もしそうであれば すべて、うまくいけば、これを実行しよう 721 00:35:52,210 --> 00:35:53,210 罰金になります。 722 00:35:53,210 --> 00:35:53,440 [OK]をクリックします。 723 00:35:53,440 --> 00:35:57,020 だから、一つだけの並べ替えを持つことができます 一度ポートをリッスンしている。 724 00:35:57,020 --> 00:35:59,660 別の解決策は、私のためだっただろう ちょうどそのプログラムを編集して作る 725 00:35:59,660 --> 00:36:02,370 それは1338年か何かのように そのような。 726 00:36:02,370 --> 00:36:04,100 >> しかし、今の睡眠が実行されています。 727 00:36:04,100 --> 00:36:06,400 それでは、実際にそれを試してみましょう ブラウザー今回それはだから 728 00:36:06,400 --> 00:36:09,080 参照するには少しありきたり それ端末。 729 00:36:09,080 --> 00:36:13,560 だから、僕はそれに行くつもりです 1337で再び127アドレス。 730 00:36:13,560 --> 00:36:14,850 そして、あなたがそれを見ることができれば - 731 00:36:14,850 --> 00:36:18,050 私は、あなたができるかどうか知りません - しかし、私の ブラウザは非常に、非常に長いを取っている 732 00:36:18,050 --> 00:36:20,600 または5秒のようにロードするための時間。 733 00:36:20,600 --> 00:36:23,460 >> 次いでその後、最終的に 応答を終えた。 734 00:36:23,460 --> 00:36:29,070 そして、あなたはそれを見ることができないため、事 私が作る場合は、少し上を移動しているが、 735 00:36:29,070 --> 00:36:32,500 これは少し小さく、あなた それはちょっと言い見ることができます。 736 00:36:32,500 --> 00:36:35,130 だから私はちょっとを得たが、 5秒後。 737 00:36:35,130 --> 00:36:38,510 そして、それは見て少しきれいになるかもしれません ここで、端末上で、私はよ 738 00:36:38,510 --> 00:36:40,980 やろうとして - 739 00:36:40,980 --> 00:36:43,540 それでは、ここでやらせる - 740 00:36:43,540 --> 00:36:48,370 それでは、そのアドレスカールやらせる 再び1337年に。 741 00:36:48,370 --> 00:36:50,820 と私はちょっと座っている ここに5秒間。 742 00:36:50,820 --> 00:36:53,760 しかし、注意してください、そのサーバー 新しい応答を受け入れることができます。 743 00:36:53,760 --> 00:36:54,940 だから、ちょっと印刷します。 744 00:36:54,940 --> 00:36:58,720 >> 基本的に、このデモには何 私はこの他のタブで行うことができます - 745 00:36:58,720 --> 00:37:02,640 それでは、私は別のタブでこれを行うとしましょう​​、 私はカールと同じことをするつもりだ 746 00:37:02,640 --> 00:37:03,780 事もう一度。 747 00:37:03,780 --> 00:37:06,600 そして、私はこれらをキックしようとするつもりだ 同時にみんなオフ。 748 00:37:06,600 --> 00:37:08,260 だから私は、これを行うつもりだ、と私はよ こっちにレースに行くと私は今 749 00:37:08,260 --> 00:37:09,650 再びそれをするつもり。 750 00:37:09,650 --> 00:37:14,030 >> となるように、あなたのは、それを作ってみよう それらの両方を見ることができます。 751 00:37:14,030 --> 00:37:20,250 ちょっと印刷し、その1、その1 印刷されたちょっと奥に - 752 00:37:20,250 --> 00:37:22,550 それではもう一度実験をやらせる。 753 00:37:22,550 --> 00:37:25,100 実際に、のは、これを使ってみましょう それがOKなら、トリック。 754 00:37:25,100 --> 00:37:30,520 >> だから私は、そのシェルのものを使用するつもり 私は基本的に2つのコピーを実行することができます 755 00:37:30,520 --> 00:37:32,630 並行してこのプログラムの。 756 00:37:32,630 --> 00:37:36,070 だから、最初のプログラムを実行します 並行して第二のプログラム。 757 00:37:36,070 --> 00:37:39,060 私はEnterキーを押すのであれば、今、それが起こっている その要求はかなり作る 758 00:37:39,060 --> 00:37:40,570 瞬時に同時に。 759 00:37:40,570 --> 00:37:42,620 それでは、この打撃を与えてみましょう。 760 00:37:42,620 --> 00:37:44,950 >> だから、今では2つのプロセスが言うに気づく。 761 00:37:44,950 --> 00:37:50,630 そして、あなたが興味があれば、その27,000 番号は、基本的にはプロセスIDです。 762 00:37:50,630 --> 00:37:52,940 そして彼らは、印刷、気づく ちょっと同時に。 763 00:37:52,940 --> 00:37:56,820 それは我々が5を待たなければならなかったようではありませんでした その後1、その後秒、 764 00:37:56,820 --> 00:37:59,640 5秒後に第二を得る。 765 00:37:59,640 --> 00:38:03,300 だから、ある意味で、一種のだが、それはだ 本当に証拠が、それはだではない 766 00:38:03,300 --> 00:38:07,390 それだけではないことを直感的な証拠 5秒待ってブロックするような 767 00:38:07,390 --> 00:38:08,960 スレッド全体。 768 00:38:08,960 --> 00:38:10,720 クール[OK]をクリックします。 769 00:38:10,720 --> 00:38:17,850 >> だから、アーロンは、以前の質問をし、その だった、よく私たちが何かをしない場合 - 770 00:38:17,850 --> 00:38:18,735 うん? 771 00:38:18,735 --> 00:38:19,051 >> 観客:待ってください。 772 00:38:19,051 --> 00:38:21,585 どのようにされているものとは異なる printfのバッファは、しかし? 773 00:38:21,585 --> 00:38:23,010 それは自動的にそれをしないのですか? 774 00:38:23,010 --> 00:38:25,390 なぜ我々はそれを心配する必要はありますか? 775 00:38:25,390 --> 00:38:26,555 >> KEVINシュミット:ああ、あなたでし 1より多くの時間と言う? 776 00:38:26,555 --> 00:38:29,510 >> 読者:printfのバッファを好きではない まったく同じことをする? 777 00:38:29,510 --> 00:38:31,280 >> KEVINシュミット:printfのバッファ? 778 00:38:31,280 --> 00:38:32,753 >> 観客:うん。 779 00:38:32,753 --> 00:38:33,244 [OK]をクリックします。 780 00:38:33,244 --> 00:38:40,609 彼らがいたクイズの1ではありませんでした どのようにしている場合、右のprintfの話 781 00:38:40,609 --> 00:38:42,899 何かして、それが1を一時停止している 第二に、そして、あなたはそれを持ってループ10 782 00:38:42,899 --> 00:38:46,530 時間、それは10秒待ってからだろう その後、一緒にすべてをprintfの? 783 00:38:46,530 --> 00:38:47,460 >> KEVINシュミット:ああ、[OK]をクリックします。 784 00:38:47,460 --> 00:38:49,170 >> 観客:それは同じことをやっている 事は、この場合の? 785 00:38:49,170 --> 00:38:52,630 >> KEVINシュミット:そこで質問だった 基本的には旧クイズのいずれかで 786 00:38:52,630 --> 00:38:57,200 か何か、その質問がありました 基本的には、印刷F 10を言うなら 787 00:38:57,200 --> 00:39:01,490 その後、当時のものとはのように眠っていた それらをプリントアウトするプロセス、 788 00:39:01,490 --> 00:39:04,850 何らかの理由で終了時に、それはでしょう ただ画面上で、それらのすべてをダンプ。 789 00:39:04,850 --> 00:39:06,740 だから、異なる2のようなものがあります ここのコンセプト。 790 00:39:06,740 --> 00:39:10,400 >> だから私は一つのことは、この中で、ということですね 場合、我々は、異なる2を扱っている 791 00:39:10,400 --> 00:39:13,510 サーバを尋ねる人々のようなもの 同時に事のため。 792 00:39:13,510 --> 00:39:17,455 やprintfのような理由 そのように待機し、それをすべてをダンプします 793 00:39:17,455 --> 00:39:21,760 一度にさらに関連している どのようにprintf関数のようなもの - 794 00:39:21,760 --> 00:39:25,100 その方法のprintfは実際にある 実装は、それは基本的にしなければならないです 795 00:39:25,100 --> 00:39:28,850 書き込むには、オペレーティングシステムに話す コンソールにその原料。 796 00:39:28,850 --> 00:39:33,460 だから、すべてのことをしたくない あなたはprintfの言うもの、すぐに 797 00:39:33,460 --> 00:39:36,260 いくつかの文字列それは可能性があるため、 それがなければならない場合高価得る 798 00:39:36,260 --> 00:39:37,340 毎回それをする。 799 00:39:37,340 --> 00:39:41,530 >> あなたが行うのであれば、ちょっとあなたのプログラムをprintfの 実際に印刷されない場合があります 800 00:39:41,530 --> 00:39:43,040 すぐにコンソールに。 801 00:39:43,040 --> 00:39:46,080 これは、[OK]を、私はそれを書いた、と言うかもしれない。 802 00:39:46,080 --> 00:39:49,570 して、種類のあなたが与えるのを待つ 実際に前にもう少し、それ 803 00:39:49,570 --> 00:39:51,380 それをコンソールに書き出す。 804 00:39:51,380 --> 00:39:54,040 >> それがそうであったように、その理由 - 805 00:39:54,040 --> 00:39:56,450 それは一種の、無関係だ 睡眠へ - 806 00:39:56,450 --> 00:40:00,060 睡眠はソートだけだったということです 証明するためにそこに注入 807 00:40:00,060 --> 00:40:02,480 それは書いていないという事実 同期的。 808 00:40:02,480 --> 00:40:06,210 しかし、その理由はただです パフォーマンスあなたがする必要がないように 809 00:40:06,210 --> 00:40:08,920 多くの接点がすることを確認する オペレーティングシステム。 810 00:40:08,920 --> 00:40:12,300 >> しかし、ここで、私たちは本当にやろうとしている このスリープ事は単なるショーであると 811 00:40:12,300 --> 00:40:17,730 我々が訪れて2人を持っているとき このウェブサイトは、置くことはないだろう 812 00:40:17,730 --> 00:40:22,310 それは言うために起こっているラインでそれら 私はあなたを助けるために持っているし、私はいる時 813 00:40:22,310 --> 00:40:25,350 完全にこれらの後にあなたを助ける終え 5秒後、私はするつもりだ 814 00:40:25,350 --> 00:40:26,750 次の人の上に移動。 815 00:40:26,750 --> 00:40:29,515 だから、最初の人の要求はしません そのイベントループを拘束 816 00:40:29,515 --> 00:40:31,610 それは理にかなっている場合。 817 00:40:31,610 --> 00:40:34,980 >> しかし、ここで実際に例を示します ネクタイ何かの 818 00:40:34,980 --> 00:40:36,090 イベントループまで。 819 00:40:36,090 --> 00:40:39,130 だからここに恐ろしい機能です n番目のフィボナッチを計算します。 820 00:40:39,130 --> 00:40:43,510 これは文字通り、あなたができるより悪い方法だ n番目のフィボナッチ数を計算する。 821 00:40:43,510 --> 00:40:48,480 そして、これは単に確認する実際にある これはどこから来たのか、 822 00:40:48,480 --> 00:40:49,330 実際にあります - 823 00:40:49,330 --> 00:40:53,230 私が意味する、あなたはそれを探しに行くことを試みることができます - しかし、 非常に長いブログのようにあります 824 00:40:53,230 --> 00:40:54,130 誰かが書いたことを投稿してください。 825 00:40:54,130 --> 00:40:55,660 それはそれらの表示するのものの一つのようなものだ。 826 00:40:55,660 --> 00:40:59,650 しかし、誰かがNode.jsのを批判して、 彼らは一例として、これを使用しました。 827 00:40:59,650 --> 00:41:03,700 だから私はちょっとだけ2見せたかった ちょうど得るためにさまざまな視点 828 00:41:03,700 --> 00:41:07,320 概念の一般的な理解 これら二つのことの背後にある。 829 00:41:07,320 --> 00:41:13,050 >> しかし、これは、ちょうど恐ろしいとして選択される 恐ろしく非効率的な計算が 830 00:41:13,050 --> 00:41:15,940 計算する集約的な方法 n番目のフィボナッチ数。 831 00:41:15,940 --> 00:41:21,180 だからサイドノートとして、なぜ それは恐ろしい1の方法で、気に入りましたか? 832 00:41:21,180 --> 00:41:23,210 うん? 833 00:41:23,210 --> 00:41:25,130 >> 読者:あなたが始めると言う 千と出。 834 00:41:25,130 --> 00:41:27,050 千は999と998に分割されます。 835 00:41:27,050 --> 00:41:28,970 これはそれぞれ、二つに分割されます。 836 00:41:28,970 --> 00:41:30,890 これはそれぞれ、二つに分割されます。 837 00:41:30,890 --> 00:41:31,355 >> KEVINシュミット:右。 838 00:41:31,355 --> 00:41:32,400 >> 観客:全押し。 839 00:41:32,400 --> 00:41:32,840 >> KEVINシュミット:その通りです。 840 00:41:32,840 --> 00:41:37,330 もしそうであればただ、カメラのために繰り返す私 千か何かのようにFIB呼び出す 841 00:41:37,330 --> 00:41:41,810 そのように、それは明らかに満たないではありません または1に等しいので、私はするつもりだ 842 00:41:41,810 --> 00:41:46,040 この他のケースに移動し、私は行くよ 999をFIBプラス998をFIB呼び出します。 843 00:41:46,040 --> 00:41:50,290 して、ほとんどすべてのこと 999が行うFIB作品です 844 00:41:50,290 --> 00:41:52,950 このレベルでの一種。 845 00:41:52,950 --> 00:41:55,620 あなたがダウンした場合、それはさらに、冗長だ それよりも、しかし、もしあなただけの 846 00:41:55,620 --> 00:42:01,390 コンピューティングFIB 998が取得すると思います 私たちは、非常に近い999をFIBする。 847 00:42:01,390 --> 00:42:05,860 だから我々は、本当にもう少しでなければなりません 我々はこの種の再利用方法については賢い 848 00:42:05,860 --> 00:42:07,580 これらが、我々は再利用していない すべてのこれらの事。 849 00:42:07,580 --> 00:42:11,860 だから、これは巨大な想像することができます ただ恐ろしい巨大な木。 850 00:42:11,860 --> 00:42:12,940 >> しかし、いずれにせよ、[OK]をクリックします。 851 00:42:12,940 --> 00:42:14,040 だから、FIBた。 852 00:42:14,040 --> 00:42:15,530 それだけで実行に時間がかかります。 853 00:42:15,530 --> 00:42:16,510 うん? 854 00:42:16,510 --> 00:42:17,760 >> 観客:[聞こえない]。 855 00:42:17,760 --> 00:42:20,430 856 00:42:20,430 --> 00:42:22,481 >> KEVINシュミット:ああ、あなたでし 質問を繰り返す? 857 00:42:22,481 --> 00:42:23,731 >> 観客:[聞こえない]。 858 00:42:23,731 --> 00:42:30,840 859 00:42:30,840 --> 00:42:33,990 >> KEVINシュミット:ああそう、これは単なるコードです それは一種の上になるだろう 860 00:42:33,990 --> 00:42:34,850 サーバ側。 861 00:42:34,850 --> 00:42:38,100 だから、これは発見されようとしていません ブラウザや何でも。 862 00:42:38,100 --> 00:42:42,160 それは、私たちが持っていることは、基本的だとするとき ここでユーザーは、ほとんどのmake 863 00:42:42,160 --> 00:42:45,300 再び彼らの要求、ときに我々が並べ替え 要求を行う、私たちはコールするつもりだ 864 00:42:45,300 --> 00:42:47,040 サーバ側でこの機能。 865 00:42:47,040 --> 00:42:50,480 そして、我々は結果が返されます その関数を呼び出すから。 866 00:42:50,480 --> 00:42:52,460 そして、我々はちょうど印刷されます ユーザーに。 867 00:42:52,460 --> 00:42:54,580 したがって、ユーザーは実際に扱っていない あまりこの機能を備えた。 868 00:42:54,580 --> 00:42:57,270 >> それが問題だった? 869 00:42:57,270 --> 00:42:58,470 それは理にかなっていますか? 870 00:42:58,470 --> 00:42:58,810 [OK]をクリックします。 871 00:42:58,810 --> 00:43:00,930 涼しい。 872 00:43:00,930 --> 00:43:04,240 >> だからもう一度、私たちは、この全体のres.writeHeadを行う 我々はプリントアウトしたもの 873 00:43:04,240 --> 00:43:05,150 ヘッダー。 874 00:43:05,150 --> 00:43:09,730 そして私は実行して、応答を終了 マジックナンバーはFIB 45です。 875 00:43:09,730 --> 00:43:12,100 それでは、ちょうどこのサーバを実行してみましょう。 876 00:43:12,100 --> 00:43:15,190 だから私は、ノードfib.js.をするつもりです 877 00:43:15,190 --> 00:43:17,340 だから今、私のFIBサーバが実行されています。 878 00:43:17,340 --> 00:43:21,790 >> そして、ここに、私は行くよ これらのいずれかの操作を行います。 879 00:43:21,790 --> 00:43:22,200 OK? 880 00:43:22,200 --> 00:43:24,960 だから、僕は、カールを言おうとしています。 881 00:43:24,960 --> 00:43:32,226 だから、少し時間がかかりそうだが、 うまくいけばすぐに終了しますと 882 00:43:32,226 --> 00:43:35,660 それはその第45回出力します フィボナッチ数。 883 00:43:35,660 --> 00:43:36,910 >> 観客:[聞こえない]。 884 00:43:36,910 --> 00:43:40,720 885 00:43:40,720 --> 00:43:42,050 >> KEVINシュミット:それが必要 もうすぐ成し遂げる。 886 00:43:42,050 --> 00:43:43,780 だから、五から六秒かかります。 887 00:43:43,780 --> 00:43:48,570 私はただ、V8という超だかわからない 速いが、いずれの場合にも、これは 888 00:43:48,570 --> 00:43:52,700 意図的に、非常に簡単な例と 非自明の洗練されてない 889 00:43:52,700 --> 00:43:54,200 計算。 890 00:43:54,200 --> 00:43:56,700 だからしばらくすると、これを取得しない。 891 00:43:56,700 --> 00:44:02,130 >> しかし、今、私は何をすれば、同じ種類の 私が作る場所前と実験 892 00:44:02,130 --> 00:44:04,010 同時に2つの要求は? 893 00:44:04,010 --> 00:44:06,990 だからここに私はカール上に行くよ そのアドレス、私は行くよ 894 00:44:06,990 --> 00:44:08,260 別のカールをすることができません。 895 00:44:08,260 --> 00:44:12,070 我々はこれをしたときには、覚えている 我々は基本的にそれを持っていた睡眠サーバー、 896 00:44:12,070 --> 00:44:15,320 5秒後に、彼らはかなり 多くは両方ともすぐに戻ってきた 897 00:44:15,320 --> 00:44:16,380 同じ頃。 898 00:44:16,380 --> 00:44:18,650 だから、特に縛られていませんでした。 899 00:44:18,650 --> 00:44:20,290 >> しかし、ここでは今それを試してみましょう。 900 00:44:20,290 --> 00:44:22,370 [OK]を、私たちは私たちの二つのプロセスを得た。 901 00:44:22,370 --> 00:44:24,210 それらは、プロセスIDであることを忘れないでください。 902 00:44:24,210 --> 00:44:25,900 これは少しになるだろう 我々は失速しながらぎこちない。 903 00:44:25,900 --> 00:44:31,340 904 00:44:31,340 --> 00:44:35,360 それでは、ちょうどここに滞在して待ちましょう。 905 00:44:35,360 --> 00:44:37,090 >> だから、そのうちの一つは、来る必要があります 背中のような後 - 906 00:44:37,090 --> 00:44:39,190 [OK]を、ので、1が戻ってきた。 907 00:44:39,190 --> 00:44:43,570 しかし、その後、なぜ第二はしませんでした 1はまだ狙っ戻ってくる? 908 00:44:43,570 --> 00:44:44,389 うん? 909 00:44:44,389 --> 00:44:49,280 >> 観客:サーバーは何もできない それはその大きな数の計算ている間。 910 00:44:49,280 --> 00:44:51,620 >> KEVINシュミット:右。 911 00:44:51,620 --> 00:44:55,395 だから、応答があっただけで、そのサーバー 本当に何もすることはできませんが 912 00:44:55,395 --> 00:44:57,460 それはそのフィボナッチ数を計算することだ。 913 00:44:57,460 --> 00:44:59,360 だから今私はちょうど私の二つのことを戻った。 914 00:44:59,360 --> 00:45:03,210 しかし、私は単にコードを考えることを推測 もう少し、それはどのように取り組んでいる 915 00:45:03,210 --> 00:45:05,030 そしてすべてのもの。 916 00:45:05,030 --> 00:45:11,750 >> だからここにこの機能は、コードであること 私はときに実行するには、このサーバーに指示しました 917 00:45:11,750 --> 00:45:14,100 新しい着信要求を受信する。 918 00:45:14,100 --> 00:45:17,940 だから、ちょうどこの介して実行するようになるだろう コー​​ド全体、そしてそれが行くことになるだろう 919 00:45:17,940 --> 00:45:21,120 イベントループにバックアップし、継続 新しいイベントをチェック。 920 00:45:21,120 --> 00:45:23,670 そこで、基本的に我々は何が起こっているもの サーバーがある 921 00:45:23,670 --> 00:45:25,080 新しいもののために聞いて。 922 00:45:25,080 --> 00:45:28,070 最初の人は45が何であるかを要求します。 923 00:45:28,070 --> 00:45:30,490 我々はそれを計算するためにこのコードを実行する。 924 00:45:30,490 --> 00:45:33,420 このコードは、およそ5を取る 実行するには6秒である。 925 00:45:33,420 --> 00:45:36,990 その後、我々はイベントループに戻る そして、新しい要求をチェックします。 926 00:45:36,990 --> 00:45:42,700 >> もしそうであれば、これは、方法の一例です いわゆる計算であるものを持っている 927 00:45:42,700 --> 00:45:48,140 、結合された、または計算をたくさん使う 電源が入らないが、似ています 928 00:45:48,140 --> 00:45:50,260 計算集約 - 929 00:45:50,260 --> 00:45:54,080 私はこれについて言って一つのことだと思います この関数は、完全にやっている 930 00:45:54,080 --> 00:45:56,310 ほとんどの部分は、かなり 有効な仕事の権利。 931 00:45:56,310 --> 00:45:59,970 全体の時間というそのコールバック 関数が実行されていた、それはかなりだった 932 00:45:59,970 --> 00:46:03,670 ずっとそのほとんどの時間を費やしてばかり コンピュn番目のフィボナッチ数。 933 00:46:03,670 --> 00:46:05,930 >> しかし、私たちは、1つのスレッドを持っていた に対処する。 934 00:46:05,930 --> 00:46:10,270 Apacheのモデルでは、とき2人 我々は、45をFIB取得する要求を行った 935 00:46:10,270 --> 00:46:11,610 2つの異なるスレッドがあっただろう。 936 00:46:11,610 --> 00:46:15,060 そして、オペレーティングシステムの仕事 き、またはユーザレベルであろう 937 00:46:15,060 --> 00:46:18,660 スレッドを管理するコード、きになる でそのをスライスしてき 938 00:46:18,660 --> 00:46:23,060 CPU、または、複数のCPUを持っていたとしても、 CPUに均等に分散 939 00:46:23,060 --> 00:46:26,130 彼らは両方の仕上がりとなるよう 大体同時に。 940 00:46:26,130 --> 00:46:31,120 >> だから我々は、一種の方法をお見せする - これは、総完璧ではあり​​ません 941 00:46:31,120 --> 00:46:34,280 解決策が、並べ替えの方法我々はできる ここに戻って来て、間に合わせる 942 00:46:34,280 --> 00:46:35,880 少しでも良い。 943 00:46:35,880 --> 00:46:41,540 それでは、私がここにあることと呼ばれるプログラムです。 FIB℃、これは基本的に使用しています 944 00:46:41,540 --> 00:46:45,690 と呼ばれるノードのモジュールの別の 子プロセスモジュール。 945 00:46:45,690 --> 00:46:49,210 だから私は、一番上のようなもので、それを含めました の私には、ポンドをしますかのように 946 00:46:49,210 --> 00:46:51,230 子process.hか何か。 947 00:46:51,230 --> 00:46:56,210 今私は、このCPの変数へのアクセス権を持って そのすべての私の機能を備えています。 948 00:46:56,210 --> 00:47:01,810 >> だから今、私は、この応答にやっている ハンドラは、私がこのプログラムを実行しているされている 949 00:47:01,810 --> 00:47:04,100 ドットスラッシュFIB 45。 950 00:47:04,100 --> 00:47:06,820 だから私は何をやった - と私は行くよ このプログラムの中から抜け出すために 951 00:47:06,820 --> 00:47:07,620 少し - 952 00:47:07,620 --> 00:47:11,060 私は、Cプログラムを書いているしている 基本的に計算し、 953 00:47:11,060 --> 00:47:12,630 n番目のフィボナッチ数。 954 00:47:12,630 --> 00:47:15,960 だからここに私が書いただけのプログラムです これを計算するC言語で。 955 00:47:15,960 --> 00:47:19,040 私はそれをコンパイルすることができ、私は実行することができます それは、コマンドラインで。 956 00:47:19,040 --> 00:47:22,150 そして、それは計算するために起こっている 第45回フィボナッチ数。 957 00:47:22,150 --> 00:47:24,510 >> だから、それだけで取るに気づく 限りほとんど。 958 00:47:24,510 --> 00:47:28,240 私はおそらくダッシュ03を使用することもできました それを最適化したり、そのようなこと、 959 00:47:28,240 --> 00:47:31,050 私は普通のようでした コンパイラ設定。 960 00:47:31,050 --> 00:47:33,260 そして、それはそれを出力します。 961 00:47:33,260 --> 00:47:36,830 >> しかし、今、私はちょっと、何をやっている? 962 00:47:36,830 --> 00:47:39,800 申し訳ありませんああ、間違ったファイル。 963 00:47:39,800 --> 00:47:42,800 だから私は、同じものを行う 以前のようにヘッダー。 964 00:47:42,800 --> 00:47:45,780 それから私はこのcp.execを行う。 965 00:47:45,780 --> 00:47:49,460 それでは、これは何をするつもりなのはそれですです このプログラムを実行するつもり。 966 00:47:49,460 --> 00:47:51,960 しかし、これが機能する方法があることである それがために待つことはないだろう 967 00:47:51,960 --> 00:47:53,400 終了するそのプログラム。 968 00:47:53,400 --> 00:47:56,000 それだけで基本的に述べています このプログラムを実行する。 969 00:47:56,000 --> 00:47:58,700 そこで、基本的にこれを入力する の迅速な種類を指揮。 970 00:47:58,700 --> 00:48:02,350 >> そして、あなたがして終わったら それは、この関数を実行します。 971 00:48:02,350 --> 00:48:04,800 だから今、私たちはちょっとこれを取得 全体の復元の事 972 00:48:04,800 --> 00:48:06,750 我々は待っていないよう。 973 00:48:06,750 --> 00:48:08,530 のようなものは、理にかなっていますか? 974 00:48:08,530 --> 00:48:08,990 うん? 975 00:48:08,990 --> 00:48:11,060 >> 観客:[聞こえない]? 976 00:48:11,060 --> 00:48:13,610 >> KEVINシュミット:だから、これは実際になります それを行うための新しいプロセスを開く。 977 00:48:13,610 --> 00:48:19,310 だから、これはある意味では、実際には、 、悪のスーパー悪ではないが、それはある 978 00:48:19,310 --> 00:48:22,990 これは種類のものであると言うことが重要 一方では、背面に行く、アパッチ 979 00:48:22,990 --> 00:48:26,450 我々は、スレッドやプロセスを行うモデル 要求ごとに、または 980 00:48:26,450 --> 00:48:29,280 リクエストごとのプロセス。 981 00:48:29,280 --> 00:48:32,090 だから、これは類似の一種である Apacheは何に。 982 00:48:32,090 --> 00:48:35,110 いくつかの場合においては、ちょうど新しいを使用する もう少し軽い糸、 983 00:48:35,110 --> 00:48:39,040 プロセスよりも重量が、Apacheができ 新しいプロセスをフォークしてしまう 984 00:48:39,040 --> 00:48:43,370 私たちがここで何をすべきかの一種である 暗黙的にドットスラッシュFIB 45を実行して。 985 00:48:43,370 --> 00:48:48,690 >> そして、そのケースでは、この種の発生 プロセスの同じ費用。 986 00:48:48,690 --> 00:48:50,710 だから、これはあなたがすることができるだけで一つのことです。 987 00:48:50,710 --> 00:48:52,600 しかし、単にランニング、この種を表示します。 988 00:48:52,600 --> 00:48:57,120 そしてこの話は本当に目指している などのプログラムのこれらの種類を提示 989 00:48:57,120 --> 00:49:00,710 上のさまざまな視点を表示する方法 そのようなサーバをどのように設計するか。 990 00:49:00,710 --> 00:49:08,300 だから、これは実行され、その後、今私がしている場合 これもまた、私は2つのプロセスIDを得た。 991 00:49:08,300 --> 00:49:10,320 >> ちょうどについてお話しましょう 指摘すべきもの。 992 00:49:10,320 --> 00:49:11,980 そこで、彼らは徐々にだということに気づく。 993 00:49:11,980 --> 00:49:12,700 それはクールだ。 994 00:49:12,700 --> 00:49:15,140 それは前に27122であったため。 995 00:49:15,140 --> 00:49:18,580 しかし、通知は、今、彼らは戻ってきた ほぼ同時に。 996 00:49:18,580 --> 00:49:23,960 >> そして今、良い質問について質問する なぜ場合は、その仕事であるということでした 997 00:49:23,960 --> 00:49:27,590 それは一種のこれらの事をするようになりました 種類ごとに公正をプレイ 998 00:49:27,590 --> 00:49:31,350 他方、これらの二つのインスタンスの 私は走ったドットスラッシュFIB 45 999 00:49:31,350 --> 00:49:32,880 またはそのノードが走った? 1000 00:49:32,880 --> 00:49:36,940 並べ替え、それが公正なことを行う人々、彼らの両方 バランスの取れた実行時間の種類を取得? 1001 00:49:36,940 --> 00:49:42,900 1002 00:49:42,900 --> 00:49:44,220 >> 観客:[聞こえない]。 1003 00:49:44,220 --> 00:49:44,620 >> KEVINシュミット:うん。 1004 00:49:44,620 --> 00:49:49,740 そこで、基本的に、私は、ドットスラッシュFIBをするとき 45またはそのような何か、今ではだ 1005 00:49:49,740 --> 00:49:53,750 種類の、オペレーティングシステムまで これらのプログラムの実行を処理します。 1006 00:49:53,750 --> 00:49:56,920 今では、それらをスケジュールすることができます 異なるCPUまたはそれに 1007 00:49:56,920 --> 00:49:58,330 それらをスケジュールすることができます。 1008 00:49:58,330 --> 00:50:01,870 それはその1、時間をスライスすることができます CPUは、彼らが得ること、それを取得または 1009 00:50:01,870 --> 00:50:03,330 一つのCPU上で実行する。 1010 00:50:03,330 --> 00:50:05,620 だから、その背後にある考え方です。 1011 00:50:05,620 --> 00:50:07,220 それは誰にも意味がありません? 1012 00:50:07,220 --> 00:50:10,950 だから今のノードは、実際に再生されていない これらのタスクを分割するに参加。 1013 00:50:10,950 --> 00:50:12,200 [OK]をクリックします。 1014 00:50:12,200 --> 00:50:14,050 1015 00:50:14,050 --> 00:50:17,840 >> だから例については、ほとんどこれだけです。 1016 00:50:17,840 --> 00:50:23,370 私はもう一つのことを見せたかった これの多くは、これまでされているため、 1017 00:50:23,370 --> 00:50:27,350 完全にスーパー実用的ではありません いくつかのケースでは。 1018 00:50:27,350 --> 00:50:30,970 私は、この後に帰ってくる想像することができます トークや何かなどを言って、 1019 00:50:30,970 --> 00:50:35,710 よく私はちょっとその話から得たことを 私はのためのフィボナッチサーバを作ることができます 1020 00:50:35,710 --> 00:50:37,360 私の最終的なプロジェクト。 1021 00:50:37,360 --> 00:50:40,770 だからここだけの種類の1つの例です それがうまくいけばなり - 1022 00:50:40,770 --> 00:50:44,620 そうでないかもしれないが、多分 - もう少し ソートの最終プロジェクトに関連し、 1023 00:50:44,620 --> 00:50:46,440 そのようなことのために先に考えて。 1024 00:50:46,440 --> 00:50:48,870 >> だから、これはchat.js.です 1025 00:50:48,870 --> 00:50:52,290 だから、これは種のいくつかのサンプルのようなものです 次の目的で使用することができ、サーバー側のコード 1026 00:50:52,290 --> 00:50:55,700 のような小さなチャットサーバをセットアップする あなたは上で見たことがあるかもしれ 1027 00:50:55,700 --> 00:50:56,630 Facebookはチャットや何でも。 1028 00:50:56,630 --> 00:50:59,990 だから私は、これはFacebookのようなものですとは言わないよ チャットするが、これは種類のものである 1029 00:50:59,990 --> 00:51:06,230 良いそうでないかもしれないが、多分 - いいような 良い - チャットの開始点 1030 00:51:06,230 --> 00:51:08,560 あなたのウェブサイトのためのサーバ 最終的なプロジェクトのために。 1031 00:51:08,560 --> 00:51:11,040 それでは、それはやっているものを見てみましょう。 1032 00:51:11,040 --> 00:51:15,500 >> だから我々は、この特別なものを取得している 上部にある、これは、SiOをVAR 1033 00:51:15,500 --> 00:51:17,050 Socket.IOを必要とするに等しい。 1034 00:51:17,050 --> 00:51:20,280 だから、これはそうでない別のものである 実際にバンドルされて 1035 00:51:20,280 --> 00:51:22,300 ノードが、あなたはそれをインストールすることができます。 1036 00:51:22,300 --> 00:51:23,480 これは、ノードモジュールです。 1037 00:51:23,480 --> 00:51:25,670 だから、ほんの一部のようなものだ ノードへの拡張。 1038 00:51:25,670 --> 00:51:29,220 >> SocketIOは本当に実際に 涼しいの一種。 1039 00:51:29,220 --> 00:51:32,550 それは基本的にどのような抽象化です されないと、それはあなたができるようになり、それをある 1040 00:51:32,550 --> 00:51:35,770 この通信の流れを持っている ウェブとの間 1041 00:51:35,770 --> 00:51:39,430 ブラウザとWebサーバー。 1042 00:51:39,430 --> 00:51:45,250 だから、これまでのところ、ほとんどの部分は、我々は持っていた これらの非常に迅速な1秒か2 1043 00:51:45,250 --> 00:51:48,790 ウェブの間の第二の通信 ブラウザとWebサーバー。 1044 00:51:48,790 --> 00:51:53,310 だから、基本的にはgoogle.com、得るために行くだ もの、それを返送し、 1045 00:51:53,310 --> 00:51:53,770 我々は完了です。 1046 00:51:53,770 --> 00:51:56,560 私たちは、まで再話したことがないしている ユーザーが何か他にある。 1047 00:51:56,560 --> 00:52:01,090 >> しかし、Socket.IOと似たような種類の 物事 - とSocketIOは、実際には1である 1048 00:52:01,090 --> 00:52:03,940 として上に構築されて、物事の 並べ替え可能ですWebSocketの 1049 00:52:03,940 --> 00:52:06,440 HTML5の一部として - 1050 00:52:06,440 --> 00:52:09,620 つまり、あなたがこれを持つことができます 継続的な対話。 1051 00:52:09,620 --> 00:52:13,990 そして、これはチャットサーバに非常に有用である ものの一種となっておりますので 1052 00:52:13,990 --> 00:52:17,390 種の中で継続的な対話のような ある意味あなたがチャットしている場合、以下の原因 1053 00:52:17,390 --> 00:52:21,540 誰かと、あなたが今だけ送信することができます パイプダウンメッセージ、その後、 1054 00:52:21,540 --> 00:52:23,940 サーバーがダウンしてメッセージを送信することができる あなたがしている他の人へのパイプ 1055 00:52:23,940 --> 00:52:24,520 とおしゃべり。 1056 00:52:24,520 --> 00:52:26,903 それから、あなたはこれを持つことができます そのような交換。 1057 00:52:26,903 --> 00:52:30,590 1058 00:52:30,590 --> 00:52:32,850 >> だから、何のようなものだ SocketIOは適しています。 1059 00:52:32,850 --> 00:52:38,400 SocketIOはWebSocketをを使用しています理由 一つのことは、その中にあるように 1060 00:52:38,400 --> 00:52:43,980 ただ、昔ながらのWebSocketをすることに加え、 それはまた、基本的にいくつかのトリックを行います 1061 00:52:43,980 --> 00:52:45,610 それをブラウザ互換性を持たせる。 1062 00:52:45,610 --> 00:52:50,040 Internet Explorerのようなので、ブラウザで 残念ながら、WebSocketををサポートしていません 1063 00:52:50,040 --> 00:52:50,810 右箱から出して。 1064 00:52:50,810 --> 00:52:55,290 だから、クールなきちんとした他の種類を使用しています できるようにするのAdobe Flashとの事 1065 00:52:55,290 --> 00:52:57,170 あなたは、クロスブラウザーのサポートを持っている。 1066 00:52:57,170 --> 00:52:58,800 だから、本当に便利です。 1067 00:52:58,800 --> 00:53:02,440 >> そして実際に、私は一種の私を知っている ここでの時間で実行されているが、CS50 1068 00:53:02,440 --> 00:53:08,490 議論、あなたは今まで何を見てきました のように、私は知らない、ブランクが云々される 1069 00:53:08,490 --> 00:53:11,030 この記事か何かに返信 そのような、その機能? 1070 00:53:11,030 --> 00:53:12,250 それはSocketIOです。 1071 00:53:12,250 --> 00:53:15,580 だから、誰かが中に入力して起動したとき 返事をするボックスを議論したり 1072 00:53:15,580 --> 00:53:20,040 何か、お使いのブラウザは何ん のいくつかの種類を発するSocketIOで呼び出さ 1073 00:53:20,040 --> 00:53:22,660 誰かの言うイベント この投稿に返信する。 1074 00:53:22,660 --> 00:53:26,110 >> サーバは、[OK]を言う、 何をしなければならないのですか? 1075 00:53:26,110 --> 00:53:29,270 さて、私はそれらの他の人に指示する必要があり CS50に誰なの探して話し合う 1076 00:53:29,270 --> 00:53:31,170 誰かが返信だとこの記事では。 1077 00:53:31,170 --> 00:53:34,190 だからSocketIOが何であるかのようなものだ この継続的な種のこだわり 1078 00:53:34,190 --> 00:53:35,930 対話の流れ。 1079 00:53:35,930 --> 00:53:37,250 [OK]をクリックします。 1080 00:53:37,250 --> 00:53:40,060 >> だから私はここで何を持っている - と私たちはただだ 接続配列を無視しようとして 1081 00:53:40,060 --> 00:53:41,390 少しのために - 1082 00:53:41,390 --> 00:53:43,080 私は何をすると私は別のを聞くんです。 1083 00:53:43,080 --> 00:53:46,880 だから、それはちょうどSocket.IO方法ですだ のは、このポートをリッスンしましょう​​と言って。 1084 00:53:46,880 --> 00:53:50,060 そして私は、接続上でこれを行う。 1085 00:53:50,060 --> 00:53:53,360 だから、ただ、基本的にソケットのIOのだ 我々は受信したとき、というのが道 1086 00:53:53,360 --> 00:53:55,840 接続は、私はあなたが欲しい このコードを実行します。 1087 00:53:55,840 --> 00:53:59,870 >> 予告その代わりにRECを持っていることの そこに渡されたRESは私がソケットを持っている。 1088 00:53:59,870 --> 00:54:03,260 このソケットのアイデアは、基本的にはこれです 自分の書き込みと読み取りができる事 1089 00:54:03,260 --> 00:54:05,750 それとは、ユーザーのを持っている おそらくメッセージ。 1090 00:54:05,750 --> 00:54:10,700 そして、あなたが送信したメッセージ そのソケットを通過することができます。 1091 00:54:10,700 --> 00:54:12,140 それは理にかなっていますか? 1092 00:54:12,140 --> 00:54:14,490 だから、この継続的なことだ。 1093 00:54:14,490 --> 00:54:17,820 >> だから、私は何をすると私はSocket.emitを呼び出しています。 1094 00:54:17,820 --> 00:54:20,330 とEMITはかなりかかります ずっと2引数。 1095 00:54:20,330 --> 00:54:24,100 最初の引数は文字列である ただの型を表す 1096 00:54:24,100 --> 00:54:25,270 あなたが発光している事。 1097 00:54:25,270 --> 00:54:28,120 この場合のために、私が使用をしました この文字列に新しいメッセージが表示されます。 1098 00:54:28,120 --> 00:54:32,670 そして、それはただ、基本的に言っていること 私は何をこの事の種類、 1099 00:54:32,670 --> 00:54:34,750 送信、新しいメッセージです。 1100 00:54:34,750 --> 00:54:38,460 だから、特定のタイプを聞くことができます 新しいメッセージまたは何のような 1101 00:54:38,460 --> 00:54:39,960 上にドットを使用します。 1102 00:54:39,960 --> 00:54:44,570 >> ように、接続ユーザーがいる場合、そこに送られた あなたは、私たちがドットを呼び出すところを見て 1103 00:54:44,570 --> 00:54:48,150 それらは表して、他の文字列です ユーザメッセージの種類。 1104 00:54:48,150 --> 00:54:52,060 だから、あなたがこのEMITを持つことができ、基本的だ これらのメッセージタイプの1、および 1105 00:54:52,060 --> 00:54:55,520 その後に反応して何かをする これらのメッセージタイプの1 1106 00:54:55,520 --> 00:54:57,640 >> だから私は、この新しいメッセージを発​​するよ。 1107 00:54:57,640 --> 00:55:00,540 私たちは、connections.pushを無視しようとしている 秒。 1108 00:55:00,540 --> 00:55:03,360 しかし、私はSocket.onユーザーが送信された、と言う。 1109 00:55:03,360 --> 00:55:07,540 だから今、それは一種のときのようなものだ ユーザーは、私が欲しい、私にメッセージを送信します 1110 00:55:07,540 --> 00:55:09,240 あなたはこのコードを実行します。 1111 00:55:09,240 --> 00:55:12,080 予告そのこと無名関数 この変数に取って 1112 00:55:12,080 --> 00:55:16,300 基本的に起こっているデータと呼ばれる ユーザのメッセージを持っている。 1113 00:55:16,300 --> 00:55:20,700 >> だから今のの話のようなものをしましょう 接続配列。 1114 00:55:20,700 --> 00:55:24,590 だから、これは、チャットクライアント用に設計されています どこにあるのは基本的にすべての人々の親切 1115 00:55:24,590 --> 00:55:25,950 同じチャットルーム。 1116 00:55:25,950 --> 00:55:29,640 そこで、基本的に、我々は維持するために必要なもの 周りは基本的にいくつかの配列です 1117 00:55:29,640 --> 00:55:33,170 でチャットすべての人々を表して ある意味、それは理にかなっている場合。 1118 00:55:33,170 --> 00:55:33,340 右? 1119 00:55:33,340 --> 00:55:37,190 私たちは、人々の人を知っている必要がありますので、 私たちは彼らにメッセージを送ることができている 1120 00:55:37,190 --> 00:55:39,140 他の人が私たちに送ってください。 1121 00:55:39,140 --> 00:55:44,440 >> それでは、このコードが行うのはときに、ユーザーである メッセージを送信する - それは一種だ 1122 00:55:44,440 --> 00:55:45,300 イベント - 1123 00:55:45,300 --> 00:55:47,120 私たちは、このコードを実行するつもりだ。 1124 00:55:47,120 --> 00:55:51,240 そして、私たちがやっていることは我々がこの介して実行される 我々が接続を求めている配列。 1125 00:55:51,240 --> 00:55:54,390 そして、すべての接続のためのほとんど 我々の1を除いて、それはです 1126 00:55:54,390 --> 00:55:59,520 このコードが言うこと、我々は新しいを送信 その添付されたメッセージを持つメッセージ 1127 00:55:59,520 --> 00:56:01,210 情報。 1128 00:56:01,210 --> 00:56:04,880 >> ですから、ここに気づけば、私は時に何をしたか ユーザーが実際に新しいを作る 1129 00:56:04,880 --> 00:56:08,560 私はとの接続を追加したさ これはJavaScript.push法、 1130 00:56:08,560 --> 00:56:12,100 基本的には、アドインのように言って に値としてそのソケット 1131 00:56:12,100 --> 00:56:13,900 当社の接続配列。 1132 00:56:13,900 --> 00:56:20,560 このコードを実行すると、だから今、それは意志 それらの特定に物事を送る 1133 00:56:20,560 --> 00:56:22,020 接続。 1134 00:56:22,020 --> 00:56:26,980 だから、これは良い出発点になることができます チャットサーバを作るための 1135 00:56:26,980 --> 00:56:28,250 または似たような。 1136 00:56:28,250 --> 00:56:33,315 >> そしてクールなものの一種であること あなたは上のようなこちらをご覧コードと 1137 00:56:33,315 --> 00:56:36,390 放射し、そのようなものは同じです JavaScriptコードの種類を行うのと、その 1138 00:56:36,390 --> 00:56:39,260 対話するためにブラウザに送る サーバーと。 1139 00:56:39,260 --> 00:56:42,480 SocketIOはちょっとある理由ので、それはです きちんとしてそのように有用。 1140 00:56:42,480 --> 00:56:45,680 1141 00:56:45,680 --> 00:56:49,250 >> ああ、ちょうど1のより多くの事実際に素早く。 1142 00:56:49,250 --> 00:56:55,970 CS50最終的なプロジェクトは昨年がありました それは基本的にチャットを実装 1143 00:56:55,970 --> 00:56:57,840 Node.js.内のサーバー 1144 00:56:57,840 --> 00:57:01,350 私はそれがHarvardchats.orgだと思う しかし、私はないよ - 1145 00:57:01,350 --> 00:57:02,940 [OK]をクリックします。 1146 00:57:02,940 --> 00:57:06,190 私は、URLが何なのかわからないんだけど、 私はその後それを送信することができます。 1147 00:57:06,190 --> 00:57:09,260 しかし、それは一種の何がクールだ あなたはNode.js.で行うことができます 1148 00:57:09,260 --> 00:57:14,680 >> だから私は、一般的に、あなたたちは持っている、願っています Node.jsのが便利ですものの良識 1149 00:57:14,680 --> 00:57:17,870 のため、どのようにあなたは多分適用される可能性 最終的なプロジェクトに。 1150 00:57:17,870 --> 00:57:21,050 私はいくつかのより多くの発送になります これに伴って資源。 1151 00:57:21,050 --> 00:57:23,170 と来ていただきありがとうございます。 1152 00:57:23,170 --> 00:57:23,610 ありがとう。 1153 00:57:23,610 --> 00:57:27,168 >> [拍手]