1 00:00:00,000 --> 00:00:11,330 2 00:00:11,330 --> 00:00:12,360 >> DAVIDマラン:すべての権利。 3 00:00:12,360 --> 00:00:15,970 これは、CS50であり、これは 週9の終わり。 4 00:00:15,970 --> 00:00:18,560 それは旋風終わっている 過去数日間。 5 00:00:18,560 --> 00:00:21,580 あなたは膝のなら、問題は、7を設定 それに深く、かなりあり実現 6 00:00:21,580 --> 00:00:23,340 そこにだとちょっと新しい。 7 00:00:23,340 --> 00:00:26,660 しかし、我々はつなぎができないかどうかを確認してみましょう ここで簡単に一緒にすべてのもの 8 00:00:26,660 --> 00:00:29,230 その後まだでオフに方向転換する前 別の方向と見て 9 00:00:29,230 --> 00:00:30,510 他にどこ私たちは行くことができます。 10 00:00:30,510 --> 00:00:32,630 >> だからこれまで、我々は、HTMLについて説明しました。 11 00:00:32,630 --> 00:00:33,740 私たちは、CSSについて説明しました。 12 00:00:33,740 --> 00:00:34,705 私たちは、PHPについて説明しました。 13 00:00:34,705 --> 00:00:36,520 あなたは、SQLを体験し始めました。 14 00:00:36,520 --> 00:00:38,360 今日、私たちは少し話しましょう JavaScriptの程度。 15 00:00:38,360 --> 00:00:41,230 しかし、どのようにこれらの異種のすべての操作を実行 言語は一緒に合う? 16 00:00:41,230 --> 00:00:44,970 >> だから私たちは、約先週話 サーバーを持っていることの概念。 17 00:00:44,970 --> 00:00:48,470 だから、この長方形を描いてみましょう ここでは、Webサーバーとして。 18 00:00:48,470 --> 00:00:52,200 とWebサーバが確実にファイルを提供します。 19 00:00:52,200 --> 00:00:54,640 そして、それらのファイルの一部 HTMLファイルがあります。 20 00:00:54,640 --> 00:00:58,270 だから、Webサーバーのものの一つ 吐き出すことができ、ファイルことかもしれない 21 00:00:58,270 --> 00:01:01,290 私達はちょうどこのように描画します 一部のHTMLを含む。 22 00:01:01,290 --> 00:01:04,786 だから、普通の言葉で、何 HTMLは、あなたがやらせるのですか? 23 00:01:04,786 --> 00:01:06,036 >> 読者:ページ見栄え。 24 00:01:06,036 --> 00:01:09,670 25 00:01:09,670 --> 00:01:12,310 >> DAVIDマラン:OK、ページが素敵に見えるように、 私が証明したと思うが 26 00:01:12,310 --> 00:01:13,370 それ以外の場合。 27 00:01:13,370 --> 00:01:18,250 だから、HTMLを使用すると、ページをレイアウトさせません 構造的に、それはあなたがすることができます 28 00:01:18,250 --> 00:01:22,410 審美的にページをマークアップするの並べ替え、 静的コンテンツをマークアップすると、そのため 29 00:01:22,410 --> 00:01:23,640 その後、Webブラウザで表示することができます。 30 00:01:23,640 --> 00:01:24,690 >> しかし、それは重要なのです。 31 00:01:24,690 --> 00:01:26,130 それは静的コンテンツです。 32 00:01:26,130 --> 00:01:28,590 あなたがそれを書いて、あなたはそれを保存 その後、あなたはそれを出荷する。 33 00:01:28,590 --> 00:01:31,130 とWebサーバは提供しています それまでのあなたの訪問者に。 34 00:01:31,130 --> 00:01:35,700 >> しかし、我々は別のを使ってものを型にはめる 完全言語。 35 00:01:35,700 --> 00:01:40,150 私たちは、style属性を使用し始めた 特定のタグで。 36 00:01:40,150 --> 00:01:43,400 とスタイル属性は、私たちが設定でき フォントサイズや色のようなもの。 37 00:01:43,400 --> 00:01:46,460 そして、あなたはおそらく、発見し始めました または、すぐに最後のを頂きます 38 00:01:46,460 --> 00:01:50,160 潜在的に、まだ他のプロジェクト あなたはCSSで使用できるプロパティ。 39 00:01:50,160 --> 00:01:54,710 そして素人の言葉で、何 本当にCSSはするのでしょうか? 40 00:01:54,710 --> 00:01:57,810 それらはそれらの単なる例です。 41 00:01:57,810 --> 00:02:00,730 それはあなたがそのHTMLを何を聞かせていない 何からしていないようです 42 00:02:00,730 --> 00:02:02,606 我々はこれまで見てきた? 43 00:02:02,606 --> 00:02:04,850 >> 読者:自分でスタイルを定義します。 44 00:02:04,850 --> 00:02:06,700 >> DAVIDマラン:定義スタイル 自分で。 45 00:02:06,700 --> 00:02:10,280 だからあなたのようにクラスのようなものを定義する 遭遇したかもしれない、または一意 46 00:02:10,280 --> 00:02:13,800 その文書内のノードを識別 あなたがそれらを型にはめることができます。 47 00:02:13,800 --> 00:02:16,890 しかし、より具体的には、私が言いたいことをCSS 本当にあなたが物事を取ることができます 48 00:02:16,890 --> 00:02:20,790 ラストワンマイルとあなたは多くを指定することができます より正確に美学、 49 00:02:20,790 --> 00:02:24,340 HTMLに対し、ほとんどの部分ができます あなたのページを構築する。 50 00:02:24,340 --> 00:02:27,310 >> そして、いくつかのデフォルトがあるにもかかわらず、 我々はのタグを見たような 51 00:02:27,310 --> 00:02:30,690 大まかに言うと見出しタグ、 物事が大きく、大胆な作りました。 52 00:02:30,690 --> 00:02:34,250 これはかなり一般的な定義だ タグの - 大きな、大胆な。 53 00:02:34,250 --> 00:02:35,260 それはどのようなフォントサイズです? 54 00:02:35,260 --> 00:02:36,080 それは何色です? 55 00:02:36,080 --> 00:02:36,890 それはどのように大胆な? 56 00:02:36,890 --> 00:02:39,830 とCSSは、より細かくすることができます そのような曲の事。 57 00:02:39,830 --> 00:02:42,150 同様のレイアウト、いくつかのように あなたのことを見てきました。 58 00:02:42,150 --> 00:02:45,180 >> と率直に言って、CSSはビットです 乱雑な言語の。 59 00:02:45,180 --> 00:02:48,370 それはあなたが作るこ​​とができるという点で非常に強力です あなたがしたことを文字通り任意のウェブサイト 60 00:02:48,370 --> 00:02:51,880 それを今日、Web上で見られるが、 それは、首の痛みのようなものだ。 61 00:02:51,880 --> 00:02:54,440 そして、あなたのいくつかは、あなたの頭を打ちました すでにだけで行うために壁に 62 00:02:54,440 --> 00:02:58,560 中央のメニューのような愚かなもの あなたに得ている場合、問題は7を設定 63 00:02:58,560 --> 00:02:59,470 すでにその時点。 64 00:02:59,470 --> 00:03:01,530 >> しかし、それらのものを実現 時間をかけて簡単に取得。 65 00:03:01,530 --> 00:03:02,820 あなたがパターンに気づき始める。 66 00:03:02,820 --> 00:03:06,020 そして再び、Googleはあなたの友人になります することができますさまざまな方法のために 67 00:03:06,020 --> 00:03:07,220 この種の問題を解決します。 68 00:03:07,220 --> 00:03:11,520 >> そして、私はCSSであえて言うと、多くのHTML 一般的には、の問題を解決することができ 69 00:03:11,520 --> 00:03:15,910 より多くの方法は、すべてが非常に可能性がある あなたは可能性がより良く、正しいもの 70 00:03:15,910 --> 00:03:18,900 でも、C言語のようなもので、 今PHP、またはJavaScript。 71 00:03:18,900 --> 00:03:21,080 ただ、多くの異なるがあります 物事をレイアウトする方法。 72 00:03:21,080 --> 00:03:22,570 >> しかし、これは取得し始めた 乱雑な、我々は言った。 73 00:03:22,570 --> 00:03:26,480 ちょうどあなたのHTMLを混入の種類と style属性を使用してCSSがあった 74 00:03:26,480 --> 00:03:27,590 少しずさん。 75 00:03:27,590 --> 00:03:31,460 そして、我々は代わりにソートで、言った 抽象的に言えば、あなたがすべきこと 76 00:03:31,460 --> 00:03:34,050 少なくとも要因を開始 おそらく外にあなたのCSS。 77 00:03:34,050 --> 00:03:37,430 ないあなたのスタイル属性が、少なくとも どのような内部のスタイルタグを使用 78 00:03:37,430 --> 00:03:38,840 Webページの一部? 79 00:03:38,840 --> 00:03:39,560 >> AUDIENCE:ヘッド。 80 00:03:39,560 --> 00:03:40,120 >> DAVIDマラン:頭の中で。 81 00:03:40,120 --> 00:03:43,270 今まで、我々は唯一のタイトルを持っていた そこに、あなたはまた、スタイルを追加することができます 82 00:03:43,270 --> 00:03:47,230 タグを、あなたは大体あなたのCSSを置くことができます ページの上部に向かって話す。 83 00:03:47,230 --> 00:03:52,550 しかし、その後、我々は一歩物事を取っ そして我々因数その外にもっと 84 00:03:52,550 --> 00:03:54,130 別のファイルに変換します。 85 00:03:54,130 --> 00:03:57,240 >> そして、これら2つのファイルがあった 何とか今リンクしました。 86 00:03:57,240 --> 00:03:59,550 そして、確かにそれがあった ことをしたタグ。 87 00:03:59,550 --> 00:04:02,920 と包括的なの一つだったもの 我々のCSS外ファクタリング動機 88 00:04:02,920 --> 00:04:04,057 すべてのより? 89 00:04:04,057 --> 00:04:05,280 >> 読者:再利用。 90 00:04:05,280 --> 00:04:05,785 >> DAVIDマラン:再利用。 91 00:04:05,785 --> 00:04:06,150 右? 92 00:04:06,150 --> 00:04:09,470 あなたは、p-セットにすでに7を見たことがあるかもしれ そのページの多くは、 93 00:04:09,470 --> 00:04:12,260 購入ページ、販売ページ、 ポートフォリオページは、おそらく 94 00:04:12,260 --> 00:04:13,550 幾分同様に構成。 95 00:04:13,550 --> 00:04:17,579 上部のCS50ファイナンスロゴがあります あなたはそれを変更することを決めていない限り。 96 00:04:17,579 --> 00:04:19,839 にフッターがあります ページの下部。 97 00:04:19,839 --> 00:04:24,315 とCSSは、あなたがそれを考慮することができます それように別のファイルにあれば 98 00:04:24,315 --> 00:04:27,780 あなたは、グローバルに何かを変更したい あなたの全体のサイト全体で、あなたは本当にすることができます 99 00:04:27,780 --> 00:04:29,390 ただ一つの場所に変更します。 100 00:04:29,390 --> 00:04:32,750 >> しかし、あなたが支払う価格は、潜在的に存在する うち織り込ませることによって 101 00:04:32,750 --> 00:04:38,380 私のHTMLファイルとは別にCSS でそれを参照するファイル 102 00:04:38,380 --> 00:04:40,650 我々は月曜日に見たタグ。 103 00:04:40,650 --> 00:04:43,850 マイナス面は、これの何があるかもしれない? 104 00:04:43,850 --> 00:04:48,830 私たちがしているときに一週間前に戻って考えて HTTPとTCP / IPおよび方法について話 105 00:04:48,830 --> 00:04:52,070 インターネットは機能します。 106 00:04:52,070 --> 00:04:53,530 こちらに何か? 107 00:04:53,530 --> 00:04:54,730 >> 観客:それは時間がかかります。 108 00:04:54,730 --> 00:04:55,470 >> DAVIDマラン:それは時間がかかります。 109 00:04:55,470 --> 00:04:56,750 なぜ? 110 00:04:56,750 --> 00:04:59,450 >> 観客:[聞こえない]。 111 00:04:59,450 --> 00:04:59,750 >> DAVIDマラン:うん。 112 00:04:59,750 --> 00:05:01,240 だから、間違いなく、もう少し時間がかかります。 113 00:05:01,240 --> 00:05:04,290 1、CSSは明らかであるため、 なく、同じファイル内で。 114 00:05:04,290 --> 00:05:06,920 だから今はしない確認する必要があり 1が、2の要求。 115 00:05:06,920 --> 00:05:11,230 そして、これらの要求のそれぞ​​れ我々が見たように いわゆるインスペクタでクロム、 116 00:05:11,230 --> 00:05:15,740 私たちは、それぞれ、[ネットワーク]タブを見て それらのファイルのHTTPのいずれかが必要です。 117 00:05:15,740 --> 00:05:18,360 我々が見た要求は、取り ある程度の時間。 118 00:05:18,360 --> 00:05:19,290 今、多分それは多くはありません。 119 00:05:19,290 --> 00:05:20,670 多分それはわずか20ミリ秒です。 120 00:05:20,670 --> 00:05:22,260 多分それは200ミリ秒です。 121 00:05:22,260 --> 00:05:25,530 >> しかし、Facebookのようなページを考える ずっとであるか、CNN、またはGoogle、 122 00:05:25,530 --> 00:05:28,060 我々はした例よりも大きい これまで見た。 123 00:05:28,060 --> 00:05:32,070 これらのページには、ファイルの数十を持っているかもしれません、 それぞれが必要な場合があります 124 00:05:32,070 --> 00:05:33,550 ファイルのダウンロード。 125 00:05:33,550 --> 00:05:35,800 だから、物事は、潜在的にすることができ 減速し始める。 126 00:05:35,800 --> 00:05:39,280 >> 特に、これらの日ときに我々のすべて 私たちのポケットに携帯電話を持っており、 127 00:05:39,280 --> 00:05:43,010 低速のインターネット接続、を有する さらにいくつかのミリ秒数を待つ 128 00:05:43,010 --> 00:05:46,110 追加のためのより多くのミリ秒 ファイルは実際に遅くなることがあります。 129 00:05:46,110 --> 00:05:50,430 待ち時間が関連する用語である あなたがいることを持っていることを待っているの種類 130 00:05:50,430 --> 00:05:53,110 待っている経験 情報のいくつかの作品。 131 00:05:53,110 --> 00:05:54,430 >> しかし、利点はあります。 132 00:05:54,430 --> 00:05:56,600 だから、すべての並べ替えではない - 133 00:05:56,600 --> 00:05:58,170 それは実際にここにシーソーのビットです。 134 00:05:58,170 --> 00:06:02,970 今下振れが、どのようなブラウザを行うことができます 彼らは避けるためにスマートなら 135 00:06:02,970 --> 00:06:08,870 同じのstyles.cssを要求すること ファイルには、再度、何をすべきかをすることができますか? 136 00:06:08,870 --> 00:06:09,390 >> それをキャッシュします。 137 00:06:09,390 --> 00:06:10,370 そうキャッシング - 138 00:06:10,370 --> 00:06:11,690 C-A-C-H-E - 139 00:06:11,690 --> 00:06:15,810 一般的には単に保存するには、ここを意味 あなたが最初に要求されたファイル、および 140 00:06:15,810 --> 00:06:17,440 それのためにキャッシュをチェックしてください。 141 00:06:17,440 --> 00:06:20,400 あなたは、格納容器のようなものだ確認し、 そしてあなたが既に持っている場合 142 00:06:20,400 --> 00:06:24,520 のstyles.cssのコピー、たとえ他のいくつかの P-セット、または任意のウェブサイト内のページ、 143 00:06:24,520 --> 00:06:28,560 ただ与え、それを再度要求します ユーザーは、同じキャッシュされたコピー。 144 00:06:28,560 --> 00:06:30,140 それを要求している気にしないでください。 145 00:06:30,140 --> 00:06:32,560 >> あなたのいくつかのように、しかし、そこに下振れ P-セットでつまずいています。 146 00:06:32,560 --> 00:06:35,870 サーバー上の変更を行うとし、 あなたは、ブラウザに移動し、 147 00:06:35,870 --> 00:06:39,250 時々ブラウザがないので、リロード あなたの好意と気にしない 148 00:06:39,250 --> 00:06:43,660 あなたのstyles.cssファイルの再ダウンロード さあ、ので、オッズは何ですか 149 00:06:43,660 --> 00:06:47,620 そのFacebookが使用していますこれらのスタイル 時間かに時間を変更しようとしている 150 00:06:47,620 --> 00:06:48,140 一日一日? 151 00:06:48,140 --> 00:06:48,800 それはかなり低いです。 152 00:06:48,800 --> 00:06:52,260 それらは、時間とともに変化しないかもしれませんが 分単位または時間単位で。 153 00:06:52,260 --> 00:06:55,810 >> そうトリック、ちょうどFYIやっウェブ 開発、多くの場合、押したままにしている 154 00:06:55,810 --> 00:06:59,500 インスタンスのキーをシフトしてからクリック お使いのブラウザでリロードし、その意志 155 00:06:59,500 --> 00:07:03,280 通常、ブラウザのリロードを指示 あなたが既に持っている場合でも、すべてのもの、 156 00:07:03,280 --> 00:07:04,180 それキャッシュに。 157 00:07:04,180 --> 00:07:06,630 だからもう一度、五分五分とマイナス面、 しかし、それらのすべて 158 00:07:06,630 --> 00:07:08,260 最終的な決定を設計します。 159 00:07:08,260 --> 00:07:11,520 >> だから今、私たちはしませんでした ここで話を終了します。 160 00:07:11,520 --> 00:07:15,790 私は今、背中と背中と戻った場合 背中、我々だけではなく、導入を開始し 161 00:07:15,790 --> 00:07:18,060 HTMLが、PHP。 162 00:07:18,060 --> 00:07:20,786 だから、素人の観点から、どのような PHPは、私たちがやらせるのですか? 163 00:07:20,786 --> 00:07:22,770 >> 観客:[聞こえない]。 164 00:07:22,770 --> 00:07:24,258 >> DAVIDマラン:あれは、何ですか。 165 00:07:24,258 --> 00:07:25,250 >> 観客:ロジックを導入 コー​​ドに変換する。 166 00:07:25,250 --> 00:07:26,620 >> DAVIDマラン:ええ、ご紹介 コー​​ドにロジック。 167 00:07:26,620 --> 00:07:29,570 だから、本当のプログラミング言語です ループ、および変数とし、 168 00:07:29,570 --> 00:07:32,620 関数、条件、およびすべての 我々は戻って道を使用してきたもの 169 00:07:32,620 --> 00:07:33,780 ときスクラッチ以来。 170 00:07:33,780 --> 00:07:36,780 とPHPは、これまで見てきた、使用することができます どちらのコマンドラインで - それ 171 00:07:36,780 --> 00:07:39,190 何もする必要はありません それは言っても、ウェブと 172 00:07:39,190 --> 00:07:43,150 本当にその起源とそれが傾向 得意とを助長することが - 173 00:07:43,150 --> 00:07:47,130 しかし、あなたは自然だけでPHPを使用することができます それは(プリントを有するという事実) 174 00:07:47,130 --> 00:07:49,660 機能、のprintf()関数、 またはエコー()関数。 175 00:07:49,660 --> 00:07:52,440 方法の束は、あなたがあります PHPでテキストを印刷することができます。 176 00:07:52,440 --> 00:07:56,540 >> そのため、このプログラミングを使用することができます 言語出力に正確に 177 00:07:56,540 --> 00:07:58,460 私たちは前に話していた。 178 00:07:58,460 --> 00:08:01,360 あなたは、動的に生成することができます あなたのHTML。 179 00:08:01,360 --> 00:08:02,300 それをそうでないかもしれないすべての。 180 00:08:02,300 --> 00:08:06,460 のようなたぶん、あなたのハードコードの事、 ヘッダー、フッター、およびロゴは、 181 00:08:06,460 --> 00:08:07,950 そして、あなたのスタイルシート、 そしてすべてのこと。 182 00:08:07,950 --> 00:08:11,190 しかし、P-セット7のようなもののために、 あなたが株式を操作している場所 183 00:08:11,190 --> 00:08:14,690 である、ユーザーのポートフォリオを示す あなたは、動的に変更することができただろう 184 00:08:14,690 --> 00:08:18,960 確かにPHPとそれが与えるロジックを使用 プログラミング言語としてあなた 185 00:08:18,960 --> 00:08:22,320 出力は、動的にサブセット ページの。 186 00:08:22,320 --> 00:08:25,900 >> ですから、動的なWebサイトについて話すとき、 またはWebプログラミング、それはです 187 00:08:25,900 --> 00:08:27,200 あなたは本当に何を言っているのか。 188 00:08:27,200 --> 00:08:31,450 PHPのような言語、または物事を使用して PythonやRubyのか、またはJava、または呼び出さ 189 00:08:31,450 --> 00:08:35,900 データベースを照会するさらに他の言語で、 多くの場合、または別のサーバー、および 190 00:08:35,900 --> 00:08:38,580 それから動的にHTMLを吐き出す。 191 00:08:38,580 --> 00:08:42,470 >> 今最終的な結果は、さておきとして、ある そのほとんどのウェブサイトのHTML、 192 00:08:42,470 --> 00:08:45,970 あなたのP-セット7を含め、おそらく 場合は、巨大な混乱になるだろう 193 00:08:45,970 --> 00:08:48,060 あなたがソースを見る ブラウザのコード。 194 00:08:48,060 --> 00:08:49,010 それは大したことではありません。 195 00:08:49,010 --> 00:08:51,550 この時点では、ときに我々は気に スタイル、我々は気に 196 00:08:51,550 --> 00:08:52,740 あなたが書くもの。 197 00:08:52,740 --> 00:08:56,240 私たちは、ものを気にしません それがどのようなコードを出力。 198 00:08:56,240 --> 00:08:59,520 だから、インデントを心配しないでください ここでは、だ、PHPの場合は、 199 00:08:59,520 --> 00:09:01,190 実際にものを出力する。 200 00:09:01,190 --> 00:09:04,430 結局、ブラウザは気にしません、 そして人間は見れません 201 00:09:04,430 --> 00:09:05,400 とにかくソースで。 202 00:09:05,400 --> 00:09:09,000 私たちスタッフは、例えばだろう あなたのPHPを見ている。 203 00:09:09,000 --> 00:09:13,440 >> だから私は今簡単な例をあげてみましょう なぜ他のに便利です。 204 00:09:13,440 --> 00:09:18,620 そう率直に言って、私は最後に思い出すことができない 私はこの問題を解決するためにCを使用した時間 205 00:09:18,620 --> 00:09:19,620 現実の世界。 206 00:09:19,620 --> 00:09:22,330 これは、大学院ではおそらくだったとき 私は、その言語を使用するために必要な 207 00:09:22,330 --> 00:09:26,710 かなり低い水準だったと私に与えた 非常に高い何かをする機会 208 00:09:26,710 --> 00:09:30,720 本当にできるだけ多くのCPUを節約するために実行する 大部分のサイクル私ができるよう、 209 00:09:30,720 --> 00:09:33,990 私は巨大なデータセットを使用していたため、 そして、すべてのCPUサイクルを数える。 210 00:09:33,990 --> 00:09:37,750 と率直に言って、でも、電話のようなものに これらの日やその他のデバイス 211 00:09:37,750 --> 00:09:39,910 あなたは非常に多くを持っていない場合、 メモリとあなたはそれほどありません 212 00:09:39,910 --> 00:09:44,160 多くのCPU、高速な言語を使用して まだ魅力的である。 213 00:09:44,160 --> 00:09:47,290 >> しかし、現実の世界では、ときにだけ に合わせていくつかのプログラムをスローする 214 00:09:47,290 --> 00:09:50,340 いくつかのデータを分析したり、収集した のための登録の全体の束 215 00:09:50,340 --> 00:09:53,330 一部の学生のグループとあなたは非常にしたい すぐに電子メールを送信する自動化 216 00:09:53,330 --> 00:09:56,240 それらの一つ一つに1つずつ 登録者には、ために達するとしている 217 00:09:56,240 --> 00:09:59,240 高水準言語 Cはいわばより。 218 00:09:59,240 --> 00:10:04,060 PHPやPython、またはRubyのようなもの、 存在しない、または半ダースの他 219 00:10:04,060 --> 00:10:04,550 これらの日。 220 00:10:04,550 --> 00:10:07,200 しかし、これらの3つはおそらく 今最もトレンディ。 221 00:10:07,200 --> 00:10:10,840 >> そしてこれが意味することはあなたが開くことができるということです geditのようなテキストエディタ上または 222 00:10:10,840 --> 00:10:14,030 その後、ほとんどの他のものだけを開始 気にすることなくコードを書く 223 00:10:14,030 --> 00:10:17,800 しなくても、コンパイルについて 本当にメモリ管理を心配、 224 00:10:17,800 --> 00:10:20,820 でも念頭に置いて、そのほとんど だらしは最終的に戻ってくる 225 00:10:20,820 --> 00:10:24,790 データセットが取得する場合、あなたを噛ま 大きくても問題が大きい取得します。 226 00:10:24,790 --> 00:10:27,230 しかし、これは何を意味するか 私たちは以下の通りである。 227 00:10:27,230 --> 00:10:29,860 >> 私が先に行くとスペルチェックを実行してみましょう 問題から6に設定してください。 228 00:10:29,860 --> 00:10:33,480 だから、これは私のトライベースの実装である 私は大きな上で使用されることを 229 00:10:33,480 --> 00:10:35,500 私はとてもうまくはないが行わボード。 230 00:10:35,500 --> 00:10:38,720 私たちは、一週間の時間に戻って来ると、 頂上になってしまったん人々を再訪 231 00:10:38,720 --> 00:10:40,430 私たちの最後の講義では大きなボード。 232 00:10:40,430 --> 00:10:44,520 しかし、今のところ、私は先にだけ行ってみよう 本文中に私の解決策を実行して、私たちはやる 233 00:10:44,520 --> 00:10:48,460 欽定訳聖書、そしてここに私達は行く。 234 00:10:48,460 --> 00:10:51,080 >> ので、これらはおそらく、すべてのです のうちスペルミス 235 00:10:51,080 --> 00:10:52,240 欽定訳聖書。 236 00:10:52,240 --> 00:10:55,560 そして、私の実装がかかった 合計で半秒。 237 00:10:55,560 --> 00:10:58,270 これについてもそう悪くない 特定のコンピュータ。 238 00:10:58,270 --> 00:11:01,540 しかし、どのくらいを考え コー​​ドは私が書かなければならなかった。 239 00:11:01,540 --> 00:11:02,880 あなたが書かなければならなかったどのくらいのコードだと思います。 240 00:11:02,880 --> 00:11:06,170 あなたが過ごしたどのように多くの時間と思います D-ホールやあなたの寮や場所 241 00:11:06,170 --> 00:11:07,890 実際にそのソリューションをコーディング。 242 00:11:07,890 --> 00:11:11,850 >> まあ、私は実際には、より高いレベルを持っている場合 PHPのような言語のメモを取る 243 00:11:11,850 --> 00:11:13,350 私はここで何ができるか。 244 00:11:13,350 --> 00:11:16,410 まず、これは代わりであるとし お使いのディストリビューションのコード。 245 00:11:16,410 --> 00:11:17,790 これはスペルチェックと呼ば​​れるファイルです。 246 00:11:17,790 --> 00:11:20,220 それは、今日のの一部として利用可能です 分配コード。 247 00:11:20,220 --> 00:11:22,670 そして、私は多くて私の手を振るつもりだ 詳細は、これは、実際には 248 00:11:22,670 --> 00:11:25,500 どのように興味深い例 あなたは、ポートの言語をかもしれない 249 00:11:25,500 --> 00:11:28,870 PHPに引き継がCのよう。 250 00:11:28,870 --> 00:11:33,420 私は、文字通り2テキストウィンドウを開いた、 speller.cの私のCバージョンの1、 251 00:11:33,420 --> 00:11:36,960 と私はちょうど私の中でそれを翻訳し始めた PHPと使用してそれを入力することに頭 252 00:11:36,960 --> 00:11:38,840 最も近い同等の機能。 253 00:11:38,840 --> 00:11:40,100 >> したがって、これらの事のいくつかは異なっている。 254 00:11:40,100 --> 00:11:43,730 私たちは、PHPが使用されていない最後の時間を見た 全く同じように含まれています。 255 00:11:43,730 --> 00:11:47,050 これは、しかし、一般的に要求される用途 存在があります。 256 00:11:47,050 --> 00:11:50,330 定義とは多少異なります #はC言語で定義しますが、それはです 257 00:11:50,330 --> 00:11:51,890 どのように我々は一定にする。 258 00:11:51,890 --> 00:11:55,860 $、それは、PHPに存在が判明したのargc 私たちはその前に見てきました。 259 00:11:55,860 --> 00:11:58,650 これらは、すべての、単なる変数です そのドル記号で始まる。 260 00:11:58,650 --> 00:12:00,590 これらは単なる集まりです思い出してください 浮動小数点の。 261 00:12:00,590 --> 00:12:03,970 >> 長い間話を短くすると、に歓迎している このめくっ好奇心ならば、これは 262 00:12:03,970 --> 00:12:10,010 ほぼライン用のラインの変換 PHPにspeller.cのCバージョン。 263 00:12:10,010 --> 00:12:12,630 そして、あなたは再びこれを行うことができます 半ダースの他の言語。 264 00:12:12,630 --> 00:12:14,910 >> しかし、面白いのは、これです。 265 00:12:14,910 --> 00:12:16,910 または何が率直にがっかりするものだ これは。 266 00:12:16,910 --> 00:12:20,790 私が先に行くと約を入力してみましょう 私はdictionary.php、と主張 267 00:12:20,790 --> 00:12:23,670 先に行くと、再実装する予定 問題はここに6を設定します。 268 00:12:23,670 --> 00:12:27,530 >> それでは、この中で最初にそれを提案してみましょう で実装されるファイル、 269 00:12:27,530 --> 00:12:30,550 PHPは、だから私は、そのような私のタグを開いてみましょう。 270 00:12:30,550 --> 00:12:34,780 私は自分自身にグローバルを挙げてみましょう 変数$サイズがゼロを取得します。 271 00:12:34,780 --> 00:12:36,710 そして、私は与えるつもりだ 自分ハッシュテーブル。 272 00:12:36,710 --> 00:12:38,110 私はこの事のためにハッシュテーブルを使用します。 273 00:12:38,110 --> 00:12:42,070 どのように私はPHPでハッシュテーブルを宣言するのですか? 274 00:12:42,070 --> 00:12:42,990 行わ。 275 00:12:42,990 --> 00:12:43,980 [OK]をクリックします。 276 00:12:43,980 --> 00:12:48,870 >> だから、オープンブラケット近いブラケット表し これまで見てきたように、PHPで何を? 277 00:12:48,870 --> 00:12:51,850 配列ができた配列 連想配列。 278 00:12:51,850 --> 00:12:54,320 連想配列です データ構造は、その 279 00:12:54,320 --> 00:12:55,860 値を持つキーを関連付けます。 280 00:12:55,860 --> 00:12:59,430 >> 今最も単純に数値添字 配列、それらのキーは何ですか? 281 00:12:59,430 --> 00:13:02,250 282 00:13:02,250 --> 00:13:03,960 ゼロ、1つ、2つ、3つ、右か? 283 00:13:03,960 --> 00:13:08,780 オールドスクールスタッフバック℃からしかし、それは、CAN また、fooの、バーのような文字列でなければ、 284 00:13:08,780 --> 00:13:12,210 マックスウェル、または任意の文字列や。 285 00:13:12,210 --> 00:13:14,240 だから私はそれを活用することができます 後すぐに。 286 00:13:14,240 --> 00:13:17,550 >> 私が先に行くと宣言してみましょう のような関数 - 287 00:13:17,550 --> 00:13:19,020 まずはload()を実行してみましょう。 288 00:13:19,020 --> 00:13:20,690 だから、関数のload()。 289 00:13:20,690 --> 00:13:23,440 そして、PHPはその中で少し異なります あなたは文字通り、関数を入力したが、 290 00:13:23,440 --> 00:13:24,930 戻り値の型を入力しないでください。 291 00:13:24,930 --> 00:13:28,760 私が先に行くと言うつもりです 負荷()関数は、取るべき 292 00:13:28,760 --> 00:13:31,000 引数$辞書だけ Cバージョンのようでした。 293 00:13:31,000 --> 00:13:32,510 私は、メモリからそれをやっている。 294 00:13:32,510 --> 00:13:34,910 >> そして私は私がすることを提案 これをするつもり。 295 00:13:34,910 --> 00:13:37,080 私は単純にforeachのをするつもりです。 296 00:13:37,080 --> 00:13:40,710 私は呼び出された関数を呼び出すつもりだ その名を渡すと、ファイル() 297 00:13:40,710 --> 00:13:44,990 変数であるファイル、 $単語として$辞書。 298 00:13:44,990 --> 00:13:49,410 [マイここにforループの内側に、私は今 先に行くと、私の中で店に行く 299 00:13:49,410 --> 00:13:57,440 $言葉は真を取得$表。 300 00:13:57,440 --> 00:13:57,918 完了。 301 00:13:57,918 --> 00:14:01,264 ああ、待ってください。 302 00:14:01,264 --> 00:14:02,422 完了。 303 00:14:02,422 --> 00:14:02,760 OK。 304 00:14:02,760 --> 00:14:04,970 >> つまり、負荷()関数です。 PHPで言う。 305 00:14:04,970 --> 00:14:05,865 今、なぜそれが動作しますか? 306 00:14:05,865 --> 00:14:07,010 そして、私はここに浮気のようなものです。 307 00:14:07,010 --> 00:14:09,980 >> 我々が見たので、1、foreachの 簡単に最後の時間。 308 00:14:09,980 --> 00:14:13,680 それはちょうどあなたが反復処理できることを意味します 私を煩わせることなく、アレイ 309 00:14:13,680 --> 00:14:16,150 nおよびプラスプラス、およびすべてのこと。 310 00:14:16,150 --> 00:14:21,350 辞書は、もちろんファイル名です 規模の大小のようなもの、2 311 00:14:21,350 --> 00:14:22,830 我々は前回に​​使用される辞書。 312 00:14:22,830 --> 00:14:26,715 ファイルには、テキストを開く機能です ファイルは、行ごとに、それを読み出し、 313 00:14:26,715 --> 00:14:29,840 あなたが巨大な配列を手の甲、 その要素のそれぞれがある 314 00:14:29,840 --> 00:14:31,340 そのファイルから行。 315 00:14:31,340 --> 00:14:36,040 だから、fopenのの組み合わせだと、 関数fread、whileループ、およびfcloseを、 316 00:14:36,040 --> 00:14:37,080 そしてすべてのこと。 317 00:14:37,080 --> 00:14:40,150 言葉だけの手段として、最終的に、それはです 変数iはへのアクセス権を持っているつもりだ 318 00:14:40,150 --> 00:14:41,890 このループ内のすべての繰り返しで。 319 00:14:41,890 --> 00:14:46,910 >> だから要するに、ここにこの1ライナーは意味 名前の中のファイルを開く 320 00:14:46,910 --> 00:14:50,750 辞書は、変数は、繰り返し処理 それ行ずつ、そしてあなたが得るたびに 321 00:14:50,750 --> 00:14:54,290 単語と呼ばれる変数に行、店舗、 し、Wordで何かをする。 322 00:14:54,290 --> 00:14:55,280 私は何をしたいのですか? 323 00:14:55,280 --> 00:14:58,110 私は私のハッシュテーブルに言葉を載せていきたいと思います。 324 00:14:58,110 --> 00:15:00,860 >> まあ、私は私の中で何かを置くことができます ちょうどC言語のようなハッシュテーブル 325 00:15:00,860 --> 00:15:02,140 角括弧を使用した。 326 00:15:02,140 --> 00:15:03,660 これは私のハッシュテーブルの名前です。 327 00:15:03,660 --> 00:15:07,180 私は、そのハッシュへのインデックスつもりだ この場所でのテーブル。 328 00:15:07,180 --> 00:15:08,920 そうブラケット1、ゼロではない囲むいない。 329 00:15:08,920 --> 00:15:11,990 ブラケット引用引用終わり何か、 何でもその言葉です。 330 00:15:11,990 --> 00:15:15,200 と同じようにあなたがで可能性があり、あなたの ハッシュテーブル作業トライ、あなただけの店 331 00:15:15,200 --> 00:15:17,650 効果的にブール、暗黙のうちに または明示的に。 332 00:15:17,650 --> 00:15:18,260 完了。 333 00:15:18,260 --> 00:15:20,000 私は真の値を格納しています。 334 00:15:20,000 --> 00:15:23,150 >> 今点がいくつかあります 私はここで手抜きだ。 335 00:15:23,150 --> 00:15:27,720 技術的には、があるように起こって の最後に迷惑な新しいライン、/ N、 336 00:15:27,720 --> 00:15:28,820 これらの単語のそれぞれ。 337 00:15:28,820 --> 00:15:31,770 だから私は、おそらく、PHPの関数を呼び出す必要があります CHOPと呼ばれる()、その意志 338 00:15:31,770 --> 00:15:33,460 文字通りそれを切り落とす。 339 00:15:33,460 --> 00:15:35,020 そして私は実際に必要とする 1他のことをする。 340 00:15:35,020 --> 00:15:38,380 私はおそらく、それぞれにサイズをインクリメントする必要があり 反復ので、私は追跡しています 341 00:15:38,380 --> 00:15:39,560 世界的にそれが何であるかの。 342 00:15:39,560 --> 00:15:43,180 と率直に言って、これは、次のいずれかです。 君がいるなら、PHPの愚かな側面、 343 00:15:43,180 --> 00:15:46,950 グローバル変数を使用して、次のものが必要 明示的であると言うこと。 344 00:15:46,950 --> 00:15:51,670 だから私は、実際にはグローバルで入力するつもりです 今$サイズ、グローバル$表、および 345 00:15:51,670 --> 00:15:52,690 My機能は完了です。 346 00:15:52,690 --> 00:15:57,475 >> 以前とそうそれほど単純ではありませんが、 おそらくCよりも時間がかかった 347 00:15:57,475 --> 00:15:58,220 バージョン、多分? 348 00:15:58,220 --> 00:15:58,730 OK。 349 00:15:58,730 --> 00:16:00,390 >> だから今のチェック()関数を実行してみましょう。 350 00:16:00,390 --> 00:16:04,300 これは、少なくともかかった場合を見てみましょう それはC.そうにしてくれた時間もぶっ続け 351 00:16:04,300 --> 00:16:06,500 私が先に行くと宣言してみましょう 機能としてチェックしてください。 352 00:16:06,500 --> 00:16:09,070 ある引数ワードを取り込み スペルチェックから来るつもり。 353 00:16:09,070 --> 00:16:13,410 そして私はちょうどかどうかを確認するつもりだ 次の変数かどうかの判断は、テーブル 354 00:16:13,410 --> 00:16:18,400 単語のブラケットに対してstrtolower - 355 00:16:18,400 --> 00:16:20,590 それでは私の括弧のすべてのバランスを取ることができます - 356 00:16:20,590 --> 00:16:24,275 その後、trueを返します。 357 00:16:24,275 --> 00:16:27,020 358 00:16:27,020 --> 00:16:28,460 他の - 359 00:16:28,460 --> 00:16:30,330 それは本当に大変だった このプログラムの一環。 360 00:16:30,330 --> 00:16:31,940 そうでなければ、falseを返します。 361 00:16:31,940 --> 00:16:32,630 完了。 362 00:16:32,630 --> 00:16:33,460 つまり、)(チェックです。 363 00:16:33,460 --> 00:16:34,520 >> 今、なぜこれが動作しますか? 364 00:16:34,520 --> 00:16:37,040 まあ、1私は、言葉で渡さ その文字列です。 365 00:16:37,040 --> 00:16:41,400 二人は、私は、ハッシュの内部のチェックだ テーブル、$表と呼ばれています。 366 00:16:41,400 --> 00:16:45,470 私が呼び出して小文字にそれを強制してい ()内のtolower全く同様の機能 367 00:16:45,470 --> 00:16:48,580 Cが、これは単語全体を行い、 ではない単一文字。 368 00:16:48,580 --> 00:16:52,680 そして、それはそこに、換言すれば、設定された場合 換言すれば、設定された値は、 369 00:16:52,680 --> 00:16:54,880 それが本当なら、[はい、 これは言葉である。 370 00:16:54,880 --> 00:16:56,530 私は負荷であり、それを置くので、()。 371 00:16:56,530 --> 00:16:59,100 とされていない場合、私はfalseを返すつもりだ。 372 00:16:59,100 --> 00:17:00,090 >> 今他の人が簡単です。 373 00:17:00,090 --> 00:17:03,570 関数サイズ()、私はこれをどのように行うのですか? 374 00:17:03,570 --> 00:17:05,230 私は基本的に$サイズを返却する。 375 00:17:05,230 --> 00:17:07,770 しかし、私は技術的にする必要があり この厄介なことを行う。 376 00:17:07,770 --> 00:17:10,640 そして、実際に聞くまで、私は、切断された あまりにも多くの1コーナー。 377 00:17:10,640 --> 00:17:12,920 私は本当にグローバルな$表を行う必要があります。 378 00:17:12,920 --> 00:17:16,260 >> しかし、言われていることを、アンロード)。 379 00:17:16,260 --> 00:17:17,380 アンロード()は素晴らしいです。 380 00:17:17,380 --> 00:17:20,500 機能のアンロード()。 381 00:17:20,500 --> 00:17:23,990 私は)(アンロードを実装する方法をしたいですか? 382 00:17:23,990 --> 00:17:25,079 完了。 383 00:17:25,079 --> 00:17:25,450 OK。 384 00:17:25,450 --> 00:17:28,900 >> だから、アンロード()、メモリ管理がある 完全にあなたのための世話を 385 00:17:28,900 --> 00:17:31,800 PHPや多くのようなもの 高級言語である。 386 00:17:31,800 --> 00:17:32,600 だから、これは素晴らしいです。 387 00:17:32,600 --> 00:17:36,080 地獄は我々が過去を過ごした理由のような C言語記述の8プラス週間 388 00:17:36,080 --> 00:17:41,030 どうやら本当に遅い、本当に時間 数十時間に消費する問題 389 00:17:41,030 --> 00:17:42,530 私たちのベルトの下で動作しますか? 390 00:17:42,530 --> 00:17:46,110 >> さて、一つのことのために、これは動作する可能性が 小さなプログラムの罰金。 391 00:17:46,110 --> 00:17:47,840 それは確かに私のスピードアップ 開発時間。 392 00:17:47,840 --> 00:17:49,790 しかし、ここでは何が起こるか見てみましょう 現実の世界で。 393 00:17:49,790 --> 00:17:52,370 >> 私は、このディレクトリに行ってみよう 端末ウィンドウで。 394 00:17:52,370 --> 00:17:53,370 スペルチェックがあります。 395 00:17:53,370 --> 00:17:56,570 予告はさておき、あなたは可能性があるため 設定の問題でこれが発生している 396 00:17:56,570 --> 00:17:58,190 6か問題が7に設定してください。 397 00:17:58,190 --> 00:18:01,610 あなたは厳密にする必要はありません 。PHPでPHPファイルを終了します。 398 00:18:01,610 --> 00:18:05,250 あなたは、その最初の1のような行を置けば 最上部には、それが特別なラインです 399 00:18:05,250 --> 00:18:10,980 基本的に見つけることを意味し、構文の PHPと呼ばれ、それを使用したプログラム 400 00:18:10,980 --> 00:18:12,270 このファイルを解釈する。 401 00:18:12,270 --> 00:18:15,410 だから今、誰が本当にいることを知っている 私は、PHPプログラムを実行している。 402 00:18:15,410 --> 00:18:19,860 私はそれと同じようにそれを実行することができます 何かがCでコンパイルされた 403 00:18:19,860 --> 00:18:20,650 >> しかし、ここでのことです。 404 00:18:20,650 --> 00:18:21,600 実際に、のは再びこれを行うてみましょう。 405 00:18:21,600 --> 00:18:23,530 Dropbox/pset6 /。 406 00:18:23,530 --> 00:18:25,390 スペルチェックがあります。 407 00:18:25,390 --> 00:18:26,720 [OK]を、0.44秒。 408 00:18:26,720 --> 00:18:28,080 それより速く、この時間を得ました。 409 00:18:28,080 --> 00:18:29,745 >> 今度は、PHPのバージョンに行きましょう。 410 00:18:29,745 --> 00:18:43,070 411 00:18:43,070 --> 00:18:44,320 いい感じ。 412 00:18:44,320 --> 00:18:50,830 413 00:18:50,830 --> 00:18:53,285 しかし、どれだけ多くの時間を考える 私は営業時間に保存。 414 00:18:53,285 --> 00:18:56,990 415 00:18:56,990 --> 00:18:57,790 OK。 416 00:18:57,790 --> 00:19:01,020 >> だから、実際には3.59秒、 どちら正確な音はありません。 417 00:19:01,020 --> 00:19:03,710 しかし、それは、長い話を短くためだ あなたは膨大な量をプリントアウトしているとき 418 00:19:03,710 --> 00:19:06,840 ものの画面には、その それ自体は物事が遅くなります。 419 00:19:06,840 --> 00:19:11,260 それは実際のCPUを取った何 アプライアンスがで、3.59秒であった 420 00:19:11,260 --> 00:19:15,260 0.44を取ったCと​​は対照的 最近秒。 421 00:19:15,260 --> 00:19:17,620 それは本当にの順番だ 大きさが異なる。 422 00:19:17,620 --> 00:19:20,280 >> だからここでその価格は、から来ている? 423 00:19:20,280 --> 00:19:21,790 なぜそれがそんなに遅い? 424 00:19:21,790 --> 00:19:24,220 なぜPHPはそう不完全に行うのですか? 425 00:19:24,220 --> 00:19:25,242 ダニエル? 426 00:19:25,242 --> 00:19:26,550 >> 読者:あなたは本当になかった ハッシュテーブルを使用しています。 427 00:19:26,550 --> 00:19:27,710 >> DAVIDマラン:私は本当にしませんでした ハッシュテーブルを使用しています。 428 00:19:27,710 --> 00:19:28,760 だから私は、一種のした。 429 00:19:28,760 --> 00:19:29,870 だから、連想配列です。 430 00:19:29,870 --> 00:19:33,650 最も可能性の高いPHPの人がいる場合 本当にスマートな、彼らは下に使用され 431 00:19:33,650 --> 00:19:39,520 フード実装実際のハッシュテーブル 何かのように、CまたはC + +。 432 00:19:39,520 --> 00:19:41,290 しかし。 433 00:19:41,290 --> 00:19:42,760 うん。 434 00:19:42,760 --> 00:19:44,010 >> 読者:[聞こえない]。 435 00:19:44,010 --> 00:19:46,690 436 00:19:46,690 --> 00:19:47,080 >> DAVIDマラン:うん。 437 00:19:47,080 --> 00:19:50,780 各機能のように、私は今書いている - 実際には、もう一度のことを言うことができます 438 00:19:50,780 --> 00:19:51,480 少し大きく? 439 00:19:51,480 --> 00:19:54,509 >> 読者:各機能その あなたはより多くの完全なたくさん持っている含まれて 440 00:19:54,509 --> 00:19:56,610 より容量 - 441 00:19:56,610 --> 00:19:57,550 >> DAVIDマラン:だから非常に本当です。 442 00:19:57,550 --> 00:20:01,490 多くの多くのオーバーヘッドたちがしていることあります 本当にのみに焦点を当てて見ていない 443 00:20:01,490 --> 00:20:03,730 私はちょうど書いdictionary.php、。 444 00:20:03,730 --> 00:20:08,020 これとは対照的に、全体の通訳はあり バックグラウンドで行く。 445 00:20:08,020 --> 00:20:12,040 確かに、私はこのプログラムを実行し、それ コンパイルされた0と1を実行していないた 446 00:20:12,040 --> 00:20:14,290 私のインテルCPU向けに設計されています。 447 00:20:14,290 --> 00:20:19,270 むしろ、それは、1行に1つずつ実行していた 正確に見えるPHPコード 448 00:20:19,270 --> 00:20:20,350 我々はそれを入力したい。 449 00:20:20,350 --> 00:20:22,475 そして、あなたは使用するたびに インタープリタ型言語は、 450 00:20:22,475 --> 00:20:23,850 実際にこの価格を支払うのですか。 451 00:20:23,850 --> 00:20:27,010 それは読んでしばらく時間がかかるだろう 下へあなたのファイルの上、左から 452 00:20:27,010 --> 00:20:30,740 右し、各実行 何度も何度もライン。 453 00:20:30,740 --> 00:20:34,250 >> 今、現実には、特にウェブ上で、 あなたが実際にこのプロセスを促進することができます 454 00:20:34,250 --> 00:20:38,660 の結果をキャッシュすることにより、 PHPコードが解釈される。 455 00:20:38,660 --> 00:20:41,640 そして、それは、ウェブ上で理にかなっているので、 あなたは一人のユーザーのように持っていなければ 456 00:20:41,640 --> 00:20:46,300 その後、ここで私が、1,000または10,000ユーザー、 ファイルは多分初​​めて 457 00:20:46,300 --> 00:20:49,050 アクセスされ、それは遅いが、その後だ それははるかに高速です。 458 00:20:49,050 --> 00:20:51,000 >> しかし、これはあまりにも、再び、トレードオフである。 459 00:20:51,000 --> 00:20:53,870 と研究データのような何かのため 設定、あるいはのような大規模なもの 460 00:20:53,870 --> 00:20:58,330 これは、ユーザーが最終的に意志 その減速を感じ始める。 461 00:20:58,330 --> 00:21:02,670 >> だから要するに、解釈されている言語は、 、流行に非常に非常に人気があり、 462 00:21:02,670 --> 00:21:06,710 率直に言ってあなたはおそらく言語です 問題を解決するときのために達する必要があります 463 00:21:06,710 --> 00:21:08,200 CS50に続く。 464 00:21:08,200 --> 00:21:12,720 しかし、あなたが本当にしているどのくらいの実現 ボンネットの下に付与されたために取って 465 00:21:12,720 --> 00:21:15,910 ハッシュは本当にそれらの過去数週間 テーブル、木、と試行、 466 00:21:15,910 --> 00:21:20,770 最終的に、実際に使用されている オープンブラケットのようなものを実装し、 467 00:21:20,770 --> 00:21:24,200 その私たちができるようになりました角括弧、 当たり前の感謝取る。 468 00:21:24,200 --> 00:21:26,360 >> それでは、今、見てみましょう このWebコンテキストた。 469 00:21:26,360 --> 00:21:29,890 そして、私はそこだと最後の時間に言及 PHPでのスーパーグローバルの束その 470 00:21:29,890 --> 00:21:32,490 本当に関係ない コマンドラインで。 471 00:21:32,490 --> 00:21:36,210 彼らは、文脈でより関連している Webコンテキストでは、PHPを使用した。 472 00:21:36,210 --> 00:21:41,220 だからために、Webサーバ上でPHPを実行している HTMLのようなものを生成する。 473 00:21:41,220 --> 00:21:44,540 >> そして、私たちは$ _GETと$ _POSTをちらっと見て、 どこに自動的にユーザーのことです 474 00:21:44,540 --> 00:21:49,100 あなたが提出する場合は、入力は、単に終わる Web上で。のphpで終わるファイルにフォーム 475 00:21:49,100 --> 00:21:50,460 アプライアンスのようなサーバー。 476 00:21:50,460 --> 00:21:53,310 しかし、で簡単に見てみましょう $ _COOKIEや$ _SESSION。 477 00:21:53,310 --> 00:21:56,670 >> 素人の面では、などのクッキーは何ですか あなたのコンテキストでそれを理解する 478 00:21:56,670 --> 00:21:58,220 ウェブを使用していますか? 479 00:21:58,220 --> 00:21:59,450 >> 読者:コンピュータ上のファイル。 480 00:21:59,450 --> 00:21:59,920 >> DAVIDマラン:うん。 481 00:21:59,920 --> 00:22:03,500 これは、ユーザのコンピュータ上のファイルの どんなウェブサイトで植え 482 00:22:03,500 --> 00:22:04,410 あなたが訪問してしまった。 483 00:22:04,410 --> 00:22:07,334 だからあなたは、Facebookに行くとき、あなたが行く時 bankofamerica.com、あなたが行くに 484 00:22:07,334 --> 00:22:10,330 あなたは、ほぼすべてに行くgoogle.comへ 世界でウェブサイトは、これらの日、 485 00:22:10,330 --> 00:22:14,850 cs50.net含めて、クッキーが植えられて お使いのコンピュータに、それはある 486 00:22:14,850 --> 00:22:19,800 あなたの内のRAMに格納された値のどちらか ブラウザのメモリ内のコンピュータ、または 487 00:22:19,800 --> 00:22:22,800 時折実際のファイルを保存 あなたのハードドライブ上の。 488 00:22:22,800 --> 00:22:26,960 >> そして、通常はそのファイルに何が保存されている 自分のユーザー名ではありませんではなく、あなた 489 00:22:26,960 --> 00:22:31,060 パスワードは、通常ではない何か サイトはそうではありません限り、敏感 490 00:22:31,060 --> 00:22:35,040 彼らの安全保障との良好ではなく、 それはの間で大きな一意の識別子です 491 00:22:35,040 --> 00:22:35,680 他のもの。 492 00:22:35,680 --> 00:22:38,920 それはあなたに植えられ、大きな乱数だ コンピュータが、あなたは考えることができます 493 00:22:38,920 --> 00:22:42,740 バーチャルハンドスタンプのソート等から クラブまたはいくつかの遊園地その 494 00:22:42,740 --> 00:22:47,160 スタッフ、その所有者が可能に サービスでは、あなたが誰であるか覚えておく。 495 00:22:47,160 --> 00:22:51,030 大きな乱数のようなものですので、場合 12345678、それは明らかだが 496 00:22:51,030 --> 00:22:54,180 あまりにもランダムではない、として、そのことを考える あなたが訪問することをハンドスタンプ 497 00:22:54,180 --> 00:22:57,930 初めてfacebook.com、それら あなたの手でその番号をスタンプ。 498 00:22:57,930 --> 00:23:01,510 そして、あなたは、HTTPを話すので、あなた ブラウザである、とするためFacebookの 499 00:23:01,510 --> 00:23:06,440 ウェブと同じ明らかに話す サーバ、プロトコルはHTTPが言う 500 00:23:06,440 --> 00:23:09,930 いつでもあなたはその後訪問 それは第二のかどうかfacebook.com、 501 00:23:09,930 --> 00:23:13,560 後、一時間後、次の日も、、 あなたではなく明示的に持っている限り、 502 00:23:13,560 --> 00:23:17,050 ログアウトし、その効果 あなたの手を洗うようなものです。 503 00:23:17,050 --> 00:23:20,280 HTTPは、あなたを提示しなければならないと言う 手が毎回あなたをスタンプ 504 00:23:20,280 --> 00:23:22,020 そのウェブサイトに戻ります。 505 00:23:22,020 --> 00:23:24,390 >> 何Facebookは、彼らですん その手のスタンプを見て、 506 00:23:24,390 --> 00:23:26,850 彼らは123456789、ああ、と言う。 507 00:23:26,850 --> 00:23:30,260 私は一目見ただけではわからない、この ケンブリッジのデビッドマランは、ある 508 00:23:30,260 --> 00:23:34,690 マサチューセッツ州が、彼らは彼らをチェックすることができます データベースと言って、ああ、人 509 00:23:34,690 --> 00:23:39,930 そのコンピュータ上で我々は123456789を植え ケンブリッジからデビッドマランは、ある 510 00:23:39,930 --> 00:23:40,440 マサチューセッツ州。 511 00:23:40,440 --> 00:23:46,000 彼のプロフィールそのユーザーを示してみましょう ページまたは彼のニュ​​ースフィード。 512 00:23:46,000 --> 00:23:49,660 >> この場合は、しかし、問題はここにあります ウェブが実際にどのように動作するかです。 513 00:23:49,660 --> 00:23:51,390 それでは簡単な例を見てみましょう。 514 00:23:51,390 --> 00:23:55,190 それでは、実際にfacebook.comを言って行きましょう。 515 00:23:55,190 --> 00:23:58,130 しかし、我々は、そこに行かせなかった前に 私は先に行くと、Chromeのを開く 516 00:23:58,130 --> 00:23:59,790 ここインスペクタダウン。 517 00:23:59,790 --> 00:24:01,140 私は[ネットワーク]タブを見てみましょう。 518 00:24:01,140 --> 00:24:06,020 そして今度は、先に行くと入力してみましょう https://facebook.com中。 519 00:24:06,020 --> 00:24:09,410 我々が見ないようにし、私はそれをやっている これらのリダイレクトや廃棄物のすべて 520 00:24:09,410 --> 00:24:10,660 それらを通して見る時。 521 00:24:10,660 --> 00:24:12,690 私はエンターキーを押してみましょう。 522 00:24:12,690 --> 00:24:13,130 >> わかりました。 523 00:24:13,130 --> 00:24:14,580 我々は要求の全体の束を参照してください。 524 00:24:14,580 --> 00:24:15,640 Facebookはそこにいます。 525 00:24:15,640 --> 00:24:16,930 ファイルの全体の束があります。 526 00:24:16,930 --> 00:24:19,290 そして、ここで、私の言及のあたり レイテンシー最後の時間は、それはです 527 00:24:19,290 --> 00:24:21,240 HTTPリクエストがたくさん。 528 00:24:21,240 --> 00:24:23,700 しかし、最初の1と考えられる 最も興味深い。 529 00:24:23,700 --> 00:24:26,420 >> それでは、ここで下にスクロールさせて、 私は2番目で、ズームインします。 530 00:24:26,420 --> 00:24:29,090 これは一種のことを行っている 混乱が、見てみましょう。 531 00:24:29,090 --> 00:24:31,660 Facebookは私たち送信しています ものの全体の束。 532 00:24:31,660 --> 00:24:33,490 >> しかし、ちょっと待って、面白い。 533 00:24:33,490 --> 00:24:37,880 彼らは1つではなく4を植えています ここに私の手の上に手スタンプ。 534 00:24:37,880 --> 00:24:40,400 のSet-Cookie、セットクッキー、セットクッキー、 セットクッキー。 535 00:24:40,400 --> 00:24:44,030 そしていくつかの機能がここにあります。 536 00:24:44,030 --> 00:24:46,170 それらのすべては、いくつかに言及 期限切れの一種。 537 00:24:46,170 --> 00:24:50,090 そしてFacebookが望んでいるように見える 2015まで私を覚えています。 538 00:24:50,090 --> 00:24:53,670 だから、おそらく時までです 私は、ログアウトする必要がありますか彼らはちょうどよ 539 00:24:53,670 --> 00:24:55,710 私は自動的に仮定し 戻って来ない。 540 00:24:55,710 --> 00:24:57,840 だから、実際にまともだ 時間の長さ。 541 00:24:57,840 --> 00:24:59,170 >> そして、いくつかの他のがあります ここで起こって物事。 542 00:24:59,170 --> 00:25:03,036 このクッキーは、強制的であるように思われる それは1970年に失効したと言って削除 543 00:25:03,036 --> 00:25:04,460 前にクッキーが存在していた。 544 00:25:04,460 --> 00:25:06,510 だから、ブラウザだけで起こっている [OK]を仮定すること、それはようなものだ 545 00:25:06,510 --> 00:25:07,910 ハンドスタンプを洗浄する。 546 00:25:07,910 --> 00:25:11,240 >> しかし、今、私のブラウザが行ったときに 後続の要求 - 547 00:25:11,240 --> 00:25:14,340 私が先に行くと、これをやらせる 何度もリロード。 548 00:25:14,340 --> 00:25:18,170 今、私はに戻ってスクロールしてみましょう トップリクエストと下る 549 00:25:18,170 --> 00:25:20,760 ここで、ヘッダを要求します。 550 00:25:20,760 --> 00:25:21,390 これに注目してください。 551 00:25:21,390 --> 00:25:25,280 だから今、私はしないレスポンスヘッダの下だけど、 それはリクエストヘッダを言う気づく。 552 00:25:25,280 --> 00:25:29,220 予告私のブラウザの一部として リロードを打った後、その要求があります 553 00:25:29,220 --> 00:25:32,780 以下の少なくとも送ら 情報。 554 00:25:32,780 --> 00:25:34,670 - クッキーを設定しますが、クッキーではない。 555 00:25:34,670 --> 00:25:38,750 だから、これはライン、HTTPヘッダです 、話すように私のブラウザは、ソートです 556 00:25:38,750 --> 00:25:43,340 私が提示し、それを知らずに Facebookの検査のために私の手。 557 00:25:43,340 --> 00:25:46,020 >> したがって、これらのクッキーは、することができます 何のためにそれから使用される? 558 00:25:46,020 --> 00:25:49,420 あなたが誰であるか覚えているか、どのように覚えておく あなたはそこにしてきた何度か、 559 00:25:49,420 --> 00:25:50,280 本当に何も。 560 00:25:50,280 --> 00:25:52,742 >> だからここcounter.phpです。 561 00:25:52,742 --> 00:25:53,780 そして私は、フォントを拡大表示してみましょう。 562 00:25:53,780 --> 00:25:58,380 私はこのページを再ロードし、その都度、予告 それは何度も思い出すのは 563 00:25:58,380 --> 00:25:59,250 私はそこにしてきた。 564 00:25:59,250 --> 00:26:00,570 まあ、それはすべてが印象的ではありません。 565 00:26:00,570 --> 00:26:03,140 、ちょうどそのタブを閉じてみましょう そして今度は、に戻りましょう 566 00:26:03,140 --> 00:26:07,860 http://localhost/counter.php。 567 00:26:07,860 --> 00:26:08,970 >> ああ、それは面白いです。 568 00:26:08,970 --> 00:26:10,960 それはまだであっても、思い出した 私はタブを閉じても。 569 00:26:10,960 --> 00:26:14,010 と率直に言って、私はブラウザを閉じた場合、 私は、正しい方法で実施された場合 570 00:26:14,010 --> 00:26:18,950 それでも、このユーザーであることを覚えることができる 彼または彼女は誰が初めてだったし、 571 00:26:18,950 --> 00:26:22,840 一度だけ私はChromeのメニューに入るその こっちはここにあり、とに行く 572 00:26:22,840 --> 00:26:25,990 履歴、閲覧履歴の消去]をクリックして、 皆さんの中には中に持っている可能性がある 573 00:26:25,990 --> 00:26:33,050 過去にのみ、クッキーます 実際にWeb中に削除され 574 00:26:33,050 --> 00:26:33,970 開発。 575 00:26:33,970 --> 00:26:35,340 >> だから、我々は行く場合 - 576 00:26:35,340 --> 00:26:37,080 それでは、ここでgeditのクローズアップしてみましょう。 577 00:26:37,080 --> 00:26:38,910 そして、我々はこのファイルになりました行けば。 578 00:26:38,910 --> 00:26:44,210 私たちに行こう バーチャルホスト/ローカルホスト/公共、とさせて頂きます 579 00:26:44,210 --> 00:26:46,340 counter.php。 580 00:26:46,340 --> 00:26:48,350 これはかなりあることに注意してください 簡単なプログラム。 581 00:26:48,350 --> 00:26:50,250 これは非常にシンプルなウェブサイトです。 582 00:26:50,250 --> 00:26:51,770 >> だから、ファイルの先頭 ただのコメントです。 583 00:26:51,770 --> 00:26:54,930 しかし、ここでは、可能性のある新しいラインです 、P-セット7ですでに見てきた 584 00:26:54,930 --> 00:26:56,000 にsession_start()。 585 00:26:56,000 --> 00:27:00,380 これはPHPコードの行であること 基本的に、Webサーバを作る伝える 586 00:27:00,380 --> 00:27:03,400 手をスタンプして作成してください ハンドスタンプを確認してください。 587 00:27:03,400 --> 00:27:06,810 つまり、すべてのその行が何だし、それ 私たちのために、そのプロセスのすべてを行います。 588 00:27:06,810 --> 00:27:09,510 その後、私は持っているに気づく ここで2分岐します。 589 00:27:09,510 --> 00:27:14,150 場合は、この内部カウンタキー と呼ばれる特別なグローバル変数 590 00:27:14,150 --> 00:27:18,010 $ _SESSIONが設定される - つまり、 いくつかの値があるとすれば - 591 00:27:18,010 --> 00:27:22,440 のは、それを得ること、それがローカルに格納 変数$カウンタと呼ばれる。 592 00:27:22,440 --> 00:27:27,000 他に、のは$カウンタを割り当ててみましょう デフォルト値の0。 593 00:27:27,000 --> 00:27:30,320 >> 今ここに、PHPの一つの側面です 祝福と呪いの両方。 594 00:27:30,320 --> 00:27:32,080 PHPは少し雑です。 595 00:27:32,080 --> 00:27:35,160 だから、一方でC言語では、何だろう カウンタの範囲は、されている 596 00:27:35,160 --> 00:27:36,725 どちらかここか、ここ? 597 00:27:36,725 --> 00:27:39,270 598 00:27:39,270 --> 00:27:41,690 >> これは、閉じ込められたであろう これらの中括弧に。 599 00:27:41,690 --> 00:27:42,090 何を思う? 600 00:27:42,090 --> 00:27:46,920 PHPにおいて、それもそれらの外部に存在する 中括弧、ここ、ここ、 601 00:27:46,920 --> 00:27:49,120 ここ、ここ、と でも、下方に。 602 00:27:49,120 --> 00:27:52,400 だから私は、これは意味で祝福であると言う 君は考える必要がないことを 603 00:27:52,400 --> 00:27:54,070 我々は数週間前とハードとして。 604 00:27:54,070 --> 00:27:56,880 しかし、それはまた、その中で呪いのビットです あなたがで変数を使用に関係なく 605 00:27:56,880 --> 00:28:00,020 少なくともこのようなプログラムでは、PHP、 それはのためのグローバルにアクセス可能です 606 00:28:00,020 --> 00:28:01,170 良くも悪くも。 607 00:28:01,170 --> 00:28:06,130 だから、今では覚えておかなければならない あなたの変数が未定義されない場合があります。 608 00:28:06,130 --> 00:28:07,640 あなたが他の場所に定義されている可能性があります。 609 00:28:07,640 --> 00:28:09,460 >> しかし、私は最終的に何をするつもりですか? 610 00:28:09,460 --> 00:28:13,160 私は、そのグローバルの中に格納するつもりです の値として変数 611 00:28:13,160 --> 00:28:17,060 カウンターキー結果 カウンターをしてプラス1。 612 00:28:17,060 --> 00:28:18,910 だから、これは単なる算術です それはない 613 00:28:18,910 --> 00:28:20,590 そのカウンタの増分。 614 00:28:20,590 --> 00:28:24,850 そして、私はそれを格納しているという事実 ここに戻っての値は手段にある 615 00:28:24,850 --> 00:28:29,970 本質的にデータベースを更新 ユーザー123456789があったことを覚えている 616 00:28:29,970 --> 00:28:31,010 ここに2回。 617 00:28:31,010 --> 00:28:33,780 そして、私は次回再びそれを行うときに私 ページをリロードすると、チェックするために起こっている 618 00:28:33,780 --> 00:28:36,710 私の手のスタンプと言って、ああ、 ユーザー123456789は今持って 619 00:28:36,710 --> 00:28:38,410 ここに3回あった。 620 00:28:38,410 --> 00:28:43,390 >> そしてどのようなPHPと類似の言語 私たちのためにやっている彼らは把握されている 621 00:28:43,390 --> 00:28:47,720 どこでどのようにアウトとどのくらいの間 この特別の値を格納する 622 00:28:47,720 --> 00:28:48,830 スーパーグローバル。 623 00:28:48,830 --> 00:28:52,750 そして、このスーパーグローバル次回I ページが魔法のようなものです訪問 624 00:28:52,750 --> 00:28:57,440 事前に入力、その値が入力 あなたが訪問した最後の時間があった 625 00:28:57,440 --> 00:29:02,310 秒前だったかどうか、週 前、または2013年に、我々は今、話している 626 00:29:02,310 --> 00:29:03,790 2015年頃。 627 00:29:03,790 --> 00:29:07,600 PHPとWebサーバは、世話をする あなたのためにすべてのことを。 628 00:29:07,600 --> 00:29:08,850 >> 読者:[聞こえない]。 629 00:29:08,850 --> 00:29:11,900 630 00:29:11,900 --> 00:29:15,760 >> DAVIDマラン:PHPの変数である しない限り、本質的に、常にグローバル 631 00:29:15,760 --> 00:29:18,400 、関数の内部でそれらを宣言 その後、彼らはにローカルである 632 00:29:18,400 --> 00:29:19,420 機能のみ。 633 00:29:19,420 --> 00:29:22,300 しかし、私はいずれも書かれていませんでしたので、 関数は、彼らは今効果的にある 634 00:29:22,300 --> 00:29:25,090 ここに私の全体のファイル全体でグローバル。 635 00:29:25,090 --> 00:29:26,040 >> 読者:方法はありますか 彼らは地元の作るには? 636 00:29:26,040 --> 00:29:28,470 >> DAVIDマラン:任意のはありますか 彼らは地元のようにする方法はありますか? 637 00:29:28,470 --> 00:29:30,680 機能のみにそれらをラップする。 638 00:29:30,680 --> 00:29:32,790 の最新バージョンのどの PHPは、あなたがでこれを行うことができます 639 00:29:32,790 --> 00:29:34,130 無名関数。 640 00:29:34,130 --> 00:29:35,930 でその上で、より多くの Javaスクリプトのコンテキスト。 641 00:29:35,930 --> 00:29:37,260 しかし、短い答えはノーです。 642 00:29:37,260 --> 00:29:40,888 長い答えはイエスです。 643 00:29:40,888 --> 00:29:42,380 ニース。 644 00:29:42,380 --> 00:29:43,380 グッドクイズの質問。 645 00:29:43,380 --> 00:29:43,930 わかりました。 646 00:29:43,930 --> 00:29:47,760 >> だから最後に、ページ自体はある 実際にはかなりシンプル。 647 00:29:47,760 --> 00:29:51,470 かつて私は思い出す、PHPモードを終了していることに注意してください このようなもののすべてのダウンという 648 00:29:51,470 --> 00:29:53,700 下はちょうど唾を取得しようとしている ブラウザに生出。 649 00:29:53,700 --> 00:29:57,050 私が送信したいので、それは、結構です ユーザーはいくつかのHTMLが、私はしたいですか 650 00:29:57,050 --> 00:29:59,140 動的にHTMLを更新します。 651 00:29:59,140 --> 00:30:03,930 そして、私はこれを行うことができます1の方法は、ソートすることです 非常に迅速にPHPに戻ってドロップの 652 00:30:03,930 --> 00:30:07,730 モードは、オープンブラケット疑問符 等号、次に出力値 653 00:30:07,730 --> 00:30:08,650 カウンタの。 654 00:30:08,650 --> 00:30:12,360 >> それとも、これは少し不可解に見える場合、この 等号は、ちょうど実際にいくつかある 655 00:30:12,360 --> 00:30:16,190 このためのシンタックスシュガー のprintf($カウンタ)。 656 00:30:16,190 --> 00:30:19,160 しかし、率直に言って、それはほんの少し醜いです とタイプに少しうるさい。 657 00:30:19,160 --> 00:30:23,660 だからPHPは非常にうまく、この機能を提供しています あなただけのより多くのそれを言うことができる場所 658 00:30:23,660 --> 00:30:25,450 簡潔に同じ方法である。 659 00:30:25,450 --> 00:30:26,940 >> だから下に何が起こっているの フード? 660 00:30:26,940 --> 00:30:31,210 迅速にネットワークを見てみましょう counter.phpはこちらタブ。 661 00:30:31,210 --> 00:30:35,090 そして、私が先にと最初に手放す あなたのクッキーをクリアしてみましょう。 662 00:30:35,090 --> 00:30:38,670 以来レッツ明確な閲覧データ 時間の初め。 663 00:30:38,670 --> 00:30:39,680 今度はこっちに戻ってみましょう。 664 00:30:39,680 --> 00:30:41,340 今度は、ページをリロードしてみましょう。 665 00:30:41,340 --> 00:30:42,170 そして、私はゼロに戻ってきた。 666 00:30:42,170 --> 00:30:44,810 私の手スタンプは、洗浄されているので、 私は今、新しいクッ​​キーを取得します。 667 00:30:44,810 --> 00:30:48,780 >> 私はネットワーク]タブを見て、確かにあれば 気づく、レスポンスヘッダを見て 668 00:30:48,780 --> 00:30:51,960 アプライアンスは私を送信していること 名前が多少あるクッキー 669 00:30:51,960 --> 00:30:55,820 任意ですが、種類の 合理的に、PHPSESSID。 670 00:30:55,820 --> 00:30:58,440 そしてそれは、これは本当に私を送っている 大きな乱数。 671 00:30:58,440 --> 00:30:59,440 これは、かなりの数ではありません。 672 00:30:59,440 --> 00:31:00,390 これはかなり進数ではありません。 673 00:31:00,390 --> 00:31:03,600 それは、英数字の文字列の一部のようなものだ しかし、おそらくそれは、ランダムです。 674 00:31:03,600 --> 00:31:06,830 そして、それはそうに手のスタンプです 私が参照していることを話す。 675 00:31:06,830 --> 00:31:11,960 >> 一方私は、リロードしてクリックした場合 私の第二は、この二行目を見て 676 00:31:11,960 --> 00:31:17,600 リクエスト、私の要求することになりまし気付く ヘッダはPHPSESSIDは、これを等しく含む 677 00:31:17,600 --> 00:31:19,390 ではないのSet-Cookieが、ちょうどクッキー。 678 00:31:19,390 --> 00:31:22,950 そして、それは私のブラウザのプレゼンテーションです 私の手スタンプの。 679 00:31:22,950 --> 00:31:28,820 >> だから今ティーザーとして、我々は多くを話しましょう この約一週間かそこらで、しかし 680 00:31:28,820 --> 00:31:31,590 どのような方法で、これはあなたを作るん 脆弱な、あなたのFacebookアカウント 681 00:31:31,590 --> 00:31:34,137 脆弱な、そのような他の アカウント脆弱な? 682 00:31:34,137 --> 00:31:35,510 >> 読者:誰かがあなたのクッキーを持っている場合。 683 00:31:35,510 --> 00:31:36,750 >> DAVIDマラン:ええ、誰かもし あなたのクッキーを持っています。 684 00:31:36,750 --> 00:31:39,920 私はずっとあなたのいくつかのように、本当に意味 のようなクラブかにしようとしたかもしれない 685 00:31:39,920 --> 00:31:44,030 遊園地、あなたが何かをしようとした場合 とはいえ、これはスタンプをコピーする 686 00:31:44,030 --> 00:31:47,560 後方に別の人の手の上に、 その後、彼または彼女は次のようにそれを提示 687 00:31:47,560 --> 00:31:53,250 自分自身、それが実際に見ていない場合 その後同じ、123456789、ウェブ 688 00:31:53,250 --> 00:31:57,980 サーバーは明らかだけに起こっている そのユーザーがあなたであることを信頼しています。 689 00:31:57,980 --> 00:32:01,450 >> そして、これは確かに基本です 脅威クッキーを使用するすべての時間 690 00:32:01,450 --> 00:32:05,420 誰かがちょうどそうに偽装している場合理由 数字から何それ、あなたのクッキーを話す 691 00:32:05,420 --> 00:32:08,660 どちらか本当にそれをコピーすることによって、ある お使いのコンピュータを見て 692 00:32:08,660 --> 00:32:09,890 し、[OK]を、のようである。 693 00:32:09,890 --> 00:32:14,520 DavidさんのクッキーはJJ3JIKあるなど、 その後、彼らは知っているのに十分スマートだ 694 00:32:14,520 --> 00:32:18,080 それを送って手動でソートする方法 ブラウザからまたはからクッキー 695 00:32:18,080 --> 00:32:22,350 彼らが書くプログラムは、彼らが完全にできた あなたのようにウェブサイトにログインします。 696 00:32:22,350 --> 00:32:28,560 それは難しいことをふりをするということではない 誰か他の人たちは、pのセットを再訪しない限り、 697 00:32:28,560 --> 00:32:30,790 何を導入された2つの、? 698 00:32:30,790 --> 00:32:32,065 >> AUDIENCE:暗号。 699 00:32:32,065 --> 00:32:33,860 >> DAVIDマラン:少し 暗号のビット。 700 00:32:33,860 --> 00:32:36,550 少なくとも、簡単な暗号化、 標準版が、暗号 701 00:32:36,550 --> 00:32:36,870 それにもかかわらず。 702 00:32:36,870 --> 00:32:37,410 少ない。 703 00:32:37,410 --> 00:32:41,440 あなたのすべてを暗号化する場合、だから、結局 あなたというものを使用して、これらのヘッダー 704 00:32:41,440 --> 00:32:48,770 今、より親しまSSLなどの知っているかもしれません セキュアソケットレイヤー、またはhttps://のURL、 705 00:32:48,770 --> 00:32:51,890 その後、これらすべてのものの私たちがしてきた をちらっと見て、実際には暗号化されている 706 00:32:51,890 --> 00:32:54,800 これは、それはあなたのようなものだということ ハンドスタンプを読み取ることができません。 707 00:32:54,800 --> 00:32:59,350 唯一facebook.comは、缶、google.com またはこの場合、アプライアンスができ 708 00:32:59,350 --> 00:33:00,550 その手のスタンプをお読みください。 709 00:33:00,550 --> 00:33:04,020 >> 悲劇的に、そして再びけれども、これは NSAのものとあまりにも適切な 710 00:33:04,020 --> 00:33:06,410 後半にも、SSLは壊れやすいです。 711 00:33:06,410 --> 00:33:09,850 そしてそれは実際には難しいことではありません でも、その暗号を解読する。 712 00:33:09,850 --> 00:33:12,040 あまりない暗号化をクラッキングすることで、 しかし、だましによって 713 00:33:12,040 --> 00:33:15,720 解読にブラウザ 途中データ。 714 00:33:15,720 --> 00:33:17,880 しかし、再び、私たちはあなたをいじめるよ その前に長いと。 715 00:33:17,880 --> 00:33:21,242 今のところ、ただ恐れる。 716 00:33:21,242 --> 00:33:23,070 それは本当の悲劇的なものだ。 717 00:33:23,070 --> 00:33:23,760 >> わかりました。 718 00:33:23,760 --> 00:33:27,910 そう、ここは今、私たちを残していますか? 719 00:33:27,910 --> 00:33:29,010 さて、これを実行してみましょう。 720 00:33:29,010 --> 00:33:31,790 それでは先に行くとクイックを見てみましょう 我々は休憩を取る前に、ティーザー。 721 00:33:31,790 --> 00:33:33,790 と私は、我々は少し長く残ると思います 今日、我々は飛び込むつもりだ 722 00:33:33,790 --> 00:33:37,850 ブランドの新しい、セクシーな何か、その意志 さらにあなたの食欲を刺激。 723 00:33:37,850 --> 00:33:38,950 だからティーザーです。 724 00:33:38,950 --> 00:33:41,520 >> そう、SQL、我々は話をし始めた 今までので、簡単に最後の時間。 725 00:33:41,520 --> 00:33:44,670 あなたは本当にあなたの手が汚れて取得します P-セット7におけるそれのいくつかを持つ。 726 00:33:44,670 --> 00:33:46,480 と素人の観点から、どのようなSQLを行います - 727 00:33:46,480 --> 00:33:47,110 S-Q-L - 728 00:33:47,110 --> 00:33:49,850 あなたのために何? 729 00:33:49,850 --> 00:33:50,310 何それ? 730 00:33:50,310 --> 00:33:51,546 うん。 731 00:33:51,546 --> 00:33:53,240 >> 観客:みましょうあなたのデータにアクセスする。 732 00:33:53,240 --> 00:33:53,360 >> DAVIDマラン:うん。 733 00:33:53,360 --> 00:33:55,120 それはあなたのアクセスデータましょう データベース内。 734 00:33:55,120 --> 00:33:56,710 構造化照会言語。 735 00:33:56,710 --> 00:33:59,890 そして、これは本質的に プログラミング言語。 736 00:33:59,890 --> 00:34:03,400 それの特徴があること 私たちも、授業で使用することはありません。 737 00:34:03,400 --> 00:34:04,710 しかし、あなたが効果的にできる 関数を定義する。 738 00:34:04,710 --> 00:34:06,870 これらは、保存されていると呼ばれる SQLでの手続き。 739 00:34:06,870 --> 00:34:09,860 しかし、我々は非常に簡単で、それをしておこう いくつかの基本的な操作のためにそれを使用 740 00:34:09,860 --> 00:34:14,320 、データを選択データを挿入等 データを更新し、データを削除する。 741 00:34:14,320 --> 00:34:17,400 >> そして、あなたは本当にデータベースと考えることができ、 SQLデータベースのように、同じように 742 00:34:17,400 --> 00:34:18,800 Microsoft Excelのもの。 743 00:34:18,800 --> 00:34:21,989 SQLは、リレーショナルを参照するため、 データベース、どこで 744 00:34:21,989 --> 00:34:23,480 関係はただのテーブルを意味します。 745 00:34:23,480 --> 00:34:24,739 行と列。 746 00:34:24,739 --> 00:34:27,929 だから、何でもあなたはスプレッドシートに置くことができます このやGoogle Docsのような、 747 00:34:27,929 --> 00:34:32,460 あなたがSQLデータベースに入れることができます テーブルを宣言すること。 748 00:34:32,460 --> 00:34:34,800 >> 今、どのように実際にアクセスするのですか その情報? 749 00:34:34,800 --> 00:34:38,239 さて、コマンドまたは このようなクエリ。 750 00:34:38,239 --> 00:34:40,199 SELECT、INSERT、UPDATE、およびDELETE。 751 00:34:40,199 --> 00:34:44,489 そしてほとんどの場合、それらは あなたがする必要があります4成分のみ 752 00:34:44,489 --> 00:34:47,370 かなり強力に何かをする 問題に7を設定します。 753 00:34:47,370 --> 00:34:49,940 >> すぐに戻って一日では、実際にだろう データベースと対話する 754 00:34:49,940 --> 00:34:52,730 で黒と白のターミナルウィンドウ このような点滅プロンプト。 755 00:34:52,730 --> 00:34:56,370 そして、我々は上で実行しているデータベース アプライアンスがあると、MySQLと呼ばれている 756 00:34:56,370 --> 00:34:58,560 フリーでオープンソースのデータベースエンジン。 757 00:34:58,560 --> 00:35:02,240 あなたがGoogleやウィキペディアを読めば 記事には、名前があることを知っているよ 758 00:35:02,240 --> 00:35:05,060 いくつかの移行のビット Linuxのバージョン。 759 00:35:05,060 --> 00:35:10,460 マリア·データベースは、実際に これはMySQLの話をするフォーク。 760 00:35:10,460 --> 00:35:12,740 >> 長い話を短く、OracleがMySQLを買収した。 761 00:35:12,740 --> 00:35:13,870 Oracleは、大企業だ。 762 00:35:13,870 --> 00:35:17,010 人々は、それがあると心配されています もはや、非常にオープンソースとして残っていない 763 00:35:17,010 --> 00:35:20,930 これはただのMySQLののコピーです まだ無料、まだオープンソース、および 764 00:35:20,930 --> 00:35:23,550 デフォルトではFedoraのLinuxにインストールされています。 765 00:35:23,550 --> 00:35:26,130 >> しかし、これは痛みの一種である と知り合い首 766 00:35:26,130 --> 00:35:27,310 データベースこの方法です。 767 00:35:27,310 --> 00:35:30,560 だから我々はCS50アプライアンスに含める と呼ばれる無料のオープンソースのツール 768 00:35:30,560 --> 00:35:31,700 phpMyAdminに。 769 00:35:31,700 --> 00:35:33,940 単なる偶然その それは、PHPで書かれている。 770 00:35:33,940 --> 00:35:36,450 根本的なはありません ここで、PHPの必要性。 771 00:35:36,450 --> 00:35:40,090 しかし、これは単にWebベースのツールです。 我々は内に設置、無料でダウンロード 772 00:35:40,090 --> 00:35:43,850 私たちが持つことができ、アプライアンス、 を備えたグラフィカル·ユーザ·インタフェース 773 00:35:43,850 --> 00:35:48,610 P-セット7データベースとを探索する その新しいデータベースを作成するには、 774 00:35:48,610 --> 00:35:51,980 あなたがしたい場合は、あなた自身の最終的なプロジェクトのために言う のような、そして最終的に作成 775 00:35:51,980 --> 00:35:55,900 CS50ファイナンスのような動的なWebサイト つまり、データを照会することを可能にし、 776 00:35:55,900 --> 00:35:58,140 データを動的に更新します。 777 00:35:58,140 --> 00:36:01,420 >> あなただけ使用する必要はするつもりはない 単純なテキストフ​​ァイルやCSV。 778 00:36:01,420 --> 00:36:05,950 実際には、スマートデータベースを使用することができます プログラムはあなたがより多くを実行できるように 779 00:36:05,950 --> 00:36:10,240 ただ読むより洗練されたクエリ 直線的にすべてのものを通して。 780 00:36:10,240 --> 00:36:14,150 >> だから例えば、これは我々が与えるものです P-セット7用の箱から出します。 781 00:36:14,150 --> 00:36:18,280 これは明らかに、少なくとも持つテーブルです そのうちの1つが3列、 782 00:36:18,280 --> 00:36:21,450 ユーザ名の一つは、ハッシュである やその他々はIDです。 783 00:36:21,450 --> 00:36:26,200 >> しかし、興味深いのは、わずかに ここ1思考を引き出す、ユーザ名 784 00:36:26,200 --> 00:36:29,270 右、おそらくすでにユニークです? 785 00:36:29,270 --> 00:36:31,190 私がもし、任意のウェブサイトの最も意味 あなたはそこに、ユーザ名を持って 786 00:36:31,190 --> 00:36:32,370 2シーザーズにすることはできません。 787 00:36:32,370 --> 00:36:33,440 2 malansが存在することはできません。 788 00:36:33,440 --> 00:36:34,950 2 jharvardsが存在することはできません。 789 00:36:34,950 --> 00:36:35,600 そのユニーク。 790 00:36:35,600 --> 00:36:38,610 そうでなければ、彼らは知っているしない それが実際にあるjharvard。 791 00:36:38,610 --> 00:36:42,710 だから何も動機かもしれません 左の番目の列を持つ 792 00:36:42,710 --> 00:36:46,970 のように見えるがあると呼ばれるIDを、 同様に、一意の番号? 793 00:36:46,970 --> 00:36:51,300 それは少し冗長に感じている 一見私には。 794 00:36:51,300 --> 00:36:54,910 なぜそれが持つ魅力的かもしれません ユニークなユーザ名だけではなく、 795 00:36:54,910 --> 00:36:56,837 一意の番号だけでなく、? 796 00:36:56,837 --> 00:36:59,460 >> 読者:彼らが持っている可能性が 同じパスワード。 797 00:36:59,460 --> 00:37:01,720 >> DAVIDマラン。人々が持っているかもしれない 同じパスワード、確認してください。 798 00:37:01,720 --> 00:37:03,900 それは絶対に発生する可能性があります。 799 00:37:03,900 --> 00:37:08,270 しかし、彼らは、このユニークなユーザ名がある場合は、私 それは本当にないと主張するだろう 800 00:37:08,270 --> 00:37:11,630 問題として、彼らは彼らの中に入力した場合のため ユーザ名、私はチェックする必要があり、その 801 00:37:11,630 --> 00:37:15,060 パスワード、その彼らのハッシュ。 802 00:37:15,060 --> 00:37:15,970 なぜ他? 803 00:37:15,970 --> 00:37:17,950 >> 観客:より速く検索する。 804 00:37:17,950 --> 00:37:18,680 >> DAVIDマラン:より速く検索する。 805 00:37:18,680 --> 00:37:19,548 なぜですか? 806 00:37:19,548 --> 00:37:21,460 >> 観客:I​​Dはただ一つです。 807 00:37:21,460 --> 00:37:24,040 >> DAVIDマラン:IDはちょうど1文字で、 または具体的には、それは数値の、 808 00:37:24,040 --> 00:37:26,910 そう、それはおそらく32ビットです またはそのような何か。 809 00:37:26,910 --> 00:37:30,270 一方で、ユーザー名、明らかにジェイソン 並べ替えがあるハーシュホーンのアップ 810 00:37:30,270 --> 00:37:33,900 途方もなく長い、それがために起こっている 文字列に私に多くの時間がかかる 811 00:37:33,900 --> 00:37:40,910 多分H-I-R-S-C-H-H-O-R-Nを比較し、そして / 0またはそのような何か、の順序で 812 00:37:40,910 --> 00:37:45,100 ただとは対照的に、ジェイソンを検索するために 私のユーザ番号2を与えると述べた。 813 00:37:45,100 --> 00:37:46,510 これは32ビットです。 814 00:37:46,510 --> 00:37:48,550 これは、単一のintだと あなたが比較する必要があります。 815 00:37:48,550 --> 00:37:52,150 そして実際、それは正確な理由のデータベースです に一意のIDを割り当てる傾向がある 816 00:37:52,150 --> 00:37:53,710 これらの行。 817 00:37:53,710 --> 00:37:56,280 >> 現在、他のデータ型は何がありますか INTに加えて、明らかに 818 00:37:56,280 --> 00:37:57,160 このような文字列? 819 00:37:57,160 --> 00:37:59,700 さて、より適切であると、 のようなSQLデータベース、 820 00:37:59,700 --> 00:38:02,060 MySQLは、CHARフィールドがあります。 821 00:38:02,060 --> 00:38:05,320 とchar少し誤解を招く シングルCHARではありません。 822 00:38:05,320 --> 00:38:10,290 MySQLデータベースのcharフィールドがある 1つ以上の文字が、それはだ 823 00:38:10,290 --> 00:38:11,780 固定文字数。 824 00:38:11,780 --> 00:38:15,710 >> 例えばだから、私はの所へ行く場合には あなたが既に持っている可能性があるphpMyAdminは、または 825 00:38:15,710 --> 00:38:21,340 すぐに問題が7を設定し、私は行きます 私のデータベースに、ちょうど楽しみのために、 826 00:38:21,340 --> 00:38:25,700 と呼ばれる新しいテーブルを作成してみましょう ちょうど2列でテスト。 827 00:38:25,700 --> 00:38:27,160 私は、[Go]をクリックします。 828 00:38:27,160 --> 00:38:30,070 そして、これはかなり慣れてます、 あなたがいじくり特にとして 829 00:38:30,070 --> 00:38:31,130 自分で周り。 830 00:38:31,130 --> 00:38:34,140 ここでは、作成するIDを入力可能性があります int型の新しいテーブル。 831 00:38:34,140 --> 00:38:37,770 しかし、ここで私がするためのユーザー名を入力する可能性 それ以前の表を再作成してください。 832 00:38:37,770 --> 00:38:40,700 そして、私は全体の束を持って注意してください から選択するタイプの。 833 00:38:40,700 --> 00:38:43,610 >> そして、これはあまりにも、なぜphpMyAdminの ちょっといいです。 834 00:38:43,610 --> 00:38:46,770 それはそのあなたの中に自己学習のようなものだ だけの種類のポイントしてクリックし、することができます 835 00:38:46,770 --> 00:38:50,730 ドロップダウンメニューを見て、から推測 その何の権限SQLはあなたを与える。 836 00:38:50,730 --> 00:38:54,090 >> 実際、私は、CHARを選択した場合、私はその後、 長さを指定する必要が、またはどのように 837 00:38:54,090 --> 00:38:55,940 多くの値、どのように多くのCHARの。 838 00:38:55,940 --> 00:39:00,090 だから、非常に一般的な値は、のようなものである 255が、それは少し長いです。 839 00:39:00,090 --> 00:39:02,250 一般的にユーザ名の8です。 840 00:39:02,250 --> 00:39:03,590 しかし、それは、これらの日少し小さいです。 841 00:39:03,590 --> 00:39:05,430 だから、これは設計上の決定である。 842 00:39:05,430 --> 00:39:08,630 それは、8文字以下です 32、255 1000? 843 00:39:08,630 --> 00:39:09,830 それは本当にあなた次第です。 844 00:39:09,830 --> 00:39:12,350 しかし、CHARフィールドは、固定数である。 845 00:39:12,350 --> 00:39:16,420 だから、数が少なすぎる選択し、あなたが親切なのだ あなたが長いユーザー名が必要な場合はネジ止め。 846 00:39:16,420 --> 00:39:19,132 あまりにも多くを選択し、何の マイナス面? 847 00:39:19,132 --> 00:39:20,820 >> 観客:[聞こえない]。 848 00:39:20,820 --> 00:39:21,620 >> DAVIDマラン:それは無駄だ。 849 00:39:21,620 --> 00:39:24,835 あなたは大きなを持っている場合だけで、C言語のように あなたがしている、必要以上にメモリチャンク 850 00:39:24,835 --> 00:39:27,190 ただ時間を無駄にし、スペースを無駄にすること。 851 00:39:27,190 --> 00:39:31,430 だから代わりとして、存在する することでこの問題を解決し、VARCHAR、 852 00:39:31,430 --> 00:39:36,390 、固定長の長さをしないように処理すること しかし、最大長、および使用するなど、 853 00:39:36,390 --> 00:39:40,990 変数の文字数は、 あなたのように数だけCHARのを使用する傾向がある 854 00:39:40,990 --> 00:39:42,710 実際に必要。 855 00:39:42,710 --> 00:39:43,670 それは完璧に聞こえる。 856 00:39:43,670 --> 00:39:45,640 >> なぜ我々は取り除くしないでください CHARデータは、[種類? 857 00:39:45,640 --> 00:39:48,500 何の欠点かもしれません 聞こえるのVARCHARを使用して、 858 00:39:48,500 --> 00:39:51,644 それは素晴らしい勝利だような? 859 00:39:51,644 --> 00:39:52,596 うん? 860 00:39:52,596 --> 00:39:53,846 >> 観客:[聞こえない]。 861 00:39:53,846 --> 00:39:57,360 862 00:39:57,360 --> 00:39:57,790 >> DAVIDマラン:OK、いい。 863 00:39:57,790 --> 00:40:01,101 だからあなたのすべてのデータが同じであれば、 長さは、懸念は何ですか? 864 00:40:01,101 --> 00:40:05,250 >> 読者:あなたが無駄にしているので それらすべてを伝えることで、データ。 865 00:40:05,250 --> 00:40:09,060 >> DAVIDマラン:だからあなたのすべてのデータがある場合 同じ長さは、しかし、私が主張したい 866 00:40:09,060 --> 00:40:12,300 その最大の長さを指定する VARCHARに違いはありません 867 00:40:12,300 --> 00:40:16,070 CHARに固定された長さを指定する場合 あなたは、事前にその番号を知っている。 868 00:40:16,070 --> 00:40:19,500 しかし、そこ確かであり、私は一種のよ その答えから現実を抽出 869 00:40:19,500 --> 00:40:22,610 できたマックスは、まだあることを 特にあなたの場合、いらいらすること 870 00:40:22,610 --> 00:40:25,920 だという人の名前に遭遇 あなたがしなかったことを異常に長い 871 00:40:25,920 --> 00:40:26,860 期待しています。 872 00:40:26,860 --> 00:40:31,420 そしてそれはまた少し効率的です 実際としてのVARCHARで検索する 873 00:40:31,420 --> 00:40:35,620 、検索文字になるように反対し、特に たくさんあるし、長いテーブルのための 874 00:40:35,620 --> 00:40:36,510 大量のデータ。 875 00:40:36,510 --> 00:40:40,060 だからここでも、テーマ別で再び 明白な選択肢はありません。 876 00:40:40,060 --> 00:40:42,870 >> だからあなたに他の感覚を与えるために 興味がある可能性のあるデータ·タイプ 877 00:40:42,870 --> 00:40:45,400 P-セット7またはのいずれかで 将来は、INTがあります。 878 00:40:45,400 --> 00:40:47,270 これBIGINTは、そこ 長い長いようなものです。 879 00:40:47,270 --> 00:40:48,880 それは64ビットになる傾向がある。 880 00:40:48,880 --> 00:40:51,640 あなたが表示されますDECIMALは、そこ くらいです問題セット、 881 00:40:51,640 --> 00:40:55,300 問題のクリーナー答えたち フロートで発生した浮遊 882 00:40:55,300 --> 00:40:55,980 ポイント不正確。 883 00:40:55,980 --> 00:40:57,390 して、DateTimeがあります。 884 00:40:57,390 --> 00:41:01,530 持つデータ型は、文字通りあります 日、月、年のように見えるためには、 885 00:41:01,530 --> 00:41:03,730 と時、分、秒。 886 00:41:03,730 --> 00:41:07,470 >> しかし、SQLデータベースも持っている 物事は我々のインデックスと呼ぶことにします。 887 00:41:07,470 --> 00:41:11,630 そして、インデックスを使用すると、何かである にテーブルを作成するときに指定 888 00:41:11,630 --> 00:41:15,720 検索やその他の操作を行う より効率的。 889 00:41:15,720 --> 00:41:18,550 具体的には、と呼ばれるものがあります あなたはできるプライマリインデックス 890 00:41:18,550 --> 00:41:19,440 次のように宣言します。 891 00:41:19,440 --> 00:41:22,330 >> 私たちはとのあなたのためにこれをやった 私たちはあなたを与えるusersテーブル。 892 00:41:22,330 --> 00:41:26,160 私は、手動で再作成された場合でも、注意してください ここで与えusersテーブル 893 00:41:26,160 --> 00:41:27,110 ITユーザーの名前。 894 00:41:27,110 --> 00:41:28,125 私はすでにIDを指定。 895 00:41:28,125 --> 00:41:29,330 私は、INTを指定しました。 896 00:41:29,330 --> 00:41:32,000 私はとユーザ名を指定 最大32文字。 897 00:41:32,000 --> 00:41:36,140 しかし、我々は非常にこの中でスクロールし続ける場合は、 広い窓、そこに気付く 898 00:41:36,140 --> 00:41:38,260 私が指定することができ、他のものの束。 899 00:41:38,260 --> 00:41:40,950 >> 一、私は、属性を指定することができます のような、何、これを知っている 900 00:41:40,950 --> 00:41:42,190 INTは、符号なしにする必要があります。 901 00:41:42,190 --> 00:41:45,510 私は負の数を望んでいない、 それでは、それがUNSIGNEDしてみましょう。 902 00:41:45,510 --> 00:41:48,660 NULLはここでは関係ありませんので、 私がためにあらゆるユーザーをしたいですか 903 00:41:48,660 --> 00:41:49,640 一意の番号を持っています。 904 00:41:49,640 --> 00:41:50,830 私はそれがnullにすることはしたくない。 905 00:41:50,830 --> 00:41:52,330 >> しかし、これは興味深い。 906 00:41:52,330 --> 00:41:57,780 私はID​​はどちらかであることを指定することができます 原発このデータベースのキーか、だ 907 00:41:57,780 --> 00:42:00,620 ユニークな、あるいは、インデックス付き、またはフルテキストだ。 908 00:42:00,620 --> 00:42:05,630 だから、今日の目的のためには、長い話 短い主はこれがしなければならないことを意味します 909 00:42:05,630 --> 00:42:10,570 両方の概念的かつ技術的にも 我々は独自にするために使用するフィールド 910 00:42:10,570 --> 00:42:12,140 ユーザーを特定。 911 00:42:12,140 --> 00:42:16,140 >> 我々はユーザーを検索するときので、これが一種で で、主にそれらを見て約束の 912 00:42:16,140 --> 00:42:17,370 そのユニークな識別子。 913 00:42:17,370 --> 00:42:21,930 データベースが、もしあなたが保証されます それができない、ユーザ番号3を持っている 914 00:42:21,930 --> 00:42:25,400 物理的に別のユーザーを挿入 その同じ番号3。 915 00:42:25,400 --> 00:42:28,380 データベースだけで拒否します 変更を保存します。 916 00:42:28,380 --> 00:42:32,310 あなたは可能性があるので、良いことだこれは 自分から身を守る。自己 917 00:42:32,310 --> 00:42:34,270 >> 代わりに、ユーザー名に対応する。 918 00:42:34,270 --> 00:42:37,670 第2行目、リコール、 ユーザー名フィールドである。 919 00:42:37,670 --> 00:42:41,860 だからここ番目の行は、ユーザ名であり、 我々ははるかに残っに行ったように。 920 00:42:41,860 --> 00:42:43,940 >> だから、他に何私が指定したいのでしょうか? 921 00:42:43,940 --> 00:42:47,840 私は、SQLによると、許可されていないよ、 2主キーを指定します。 922 00:42:47,840 --> 00:42:50,750 あなたは、関節のキーを指定することができます 両方のフィールドを見て、彼らはできない 923 00:42:50,750 --> 00:42:52,260 個別に主キーであること。 924 00:42:52,260 --> 00:42:54,750 だから、問題外だ。 925 00:42:54,750 --> 00:42:56,040 だから私は選択している場合があります? 926 00:42:56,040 --> 00:42:59,710 >> さて、UNIQUEは、その精神においては似たものである これを指定する主キー 927 00:42:59,710 --> 00:43:03,570 フィールドは一意でなければならないが、それはだ 1であることを行っていない 928 00:43:03,570 --> 00:43:04,410 私はすべての時間を使用しています。 929 00:43:04,410 --> 00:43:08,450 そして、我々はこのすべてのものを使用するつもりはない 再びどのような理由のための時間? 930 00:43:08,450 --> 00:43:10,490 それがあれば、潜在的に遅くなります それは長いユーザー名です。 931 00:43:10,490 --> 00:43:11,740 それだけで時間の無駄だ。 932 00:43:11,740 --> 00:43:16,140 >> INDEXは、一方、それはだことを指定します ユニークになるだろうが、私は好きではないと思います 933 00:43:16,140 --> 00:43:19,470 あなたの下に、あなたの魔法を動作するように それはより速く私ができるようにするためにフード 934 00:43:19,470 --> 00:43:21,420 このフィールドを検索してください。 935 00:43:21,420 --> 00:43:23,320 だから、これはおそらく、ここでは関係ありません。 936 00:43:23,320 --> 00:43:26,500 usernameには、私が主張したいこと UNIQUEは良い答えです。 937 00:43:26,500 --> 00:43:31,200 しかし、我々はより多くのユーザーを作ったとします 単なるユーザ名よりも面白い、 938 00:43:31,200 --> 00:43:32,430 ハッシュ、およびID番号。 939 00:43:32,430 --> 00:43:33,860 私たちは人々にフルネームを与えた場合はどうなりますか? 940 00:43:33,860 --> 00:43:37,700 私たちはそれらを与えた場合にはアドレス そしてそれらについての他のデータ? 941 00:43:37,700 --> 00:43:43,360 >> さて、どうかを指定することで列 データベースがあることを意味し、インデックスが作成され 942 00:43:43,360 --> 00:43:47,730 MySQLは、またはOracle、または何のデータベース 使用している、その魔法を動作するはずです 943 00:43:47,730 --> 00:43:51,300 ファンシーデータのいくつかの種類を使用 木のような構造、あるいはトライ、またはA 944 00:43:51,300 --> 00:43:55,940 ハッシュテーブル、または保証するもの あなたが使用してデータを検索するときに 945 00:43:55,940 --> 00:43:58,150 その特定のフィールドを選択 - 946 00:43:58,150 --> 00:44:01,310 のような私に皆を示すこと オックスフォードストリートに住んでいます。 947 00:44:01,310 --> 00:44:02,540 そのようなクエリ。 948 00:44:02,540 --> 00:44:06,250 事前に指定している場合は、その あなたは、そのフィールドにインデックスをしたい 949 00:44:06,250 --> 00:44:09,050 検索がはるかに速く、多くなります。 950 00:44:09,050 --> 00:44:12,090 >> あなたは、インデックス、最善を指定しない場合は あなたが行うことができた場合、線形探索で 951 00:44:12,090 --> 00:44:13,030 それはソートないです。 952 00:44:13,030 --> 00:44:16,220 しかし、あなたは、インデックス、スマートを指定した場合 データベースを作った人々 - 953 00:44:16,220 --> 00:44:19,340 今の木を知っているあなたのような人 および試行とハッシュテーブル - 954 00:44:19,340 --> 00:44:23,220 自動的にそのようなデータを構築します ことを確認するためにRAM内の構造 955 00:44:23,220 --> 00:44:26,050 これらの検索は、はるかに高速です。 956 00:44:26,050 --> 00:44:29,660 >> FULLTEXTは一方で、精神が似てい しかし、ワイルドカードを行うことができます 957 00:44:29,660 --> 00:44:35,480 検索は、のような私に皆を示すこと で始まる路上での生活 958 00:44:35,480 --> 00:44:36,960 何らかの理由で文字のO。 959 00:44:36,960 --> 00:44:38,850 ワイルドカード検索を行うことができます そのような。 960 00:44:38,850 --> 00:44:45,880 または、ショーのような、より説得力のあるもの 私の単語を持っているすべての人 - 961 00:44:45,880 --> 00:44:49,400 名前が開始され、誰も私を見る 特定の文字で。 962 00:44:49,400 --> 00:44:51,880 あなたは、キーワードを検索することができます このようにして。 963 00:44:51,880 --> 00:44:52,630 わかりました。 964 00:44:52,630 --> 00:44:55,760 >> そのため、設計の機会 そこに潜在的に。 965 00:44:55,760 --> 00:44:57,740 他の人があることを私はよ で私の手を振る。 966 00:44:57,740 --> 00:45:00,530 それはあなたが持つことができることが分かった 別々のストレージエンジン。 967 00:45:00,530 --> 00:45:04,390 そして、これは我々が必要以上に難解である 確かに問題のために7を設定します。 968 00:45:04,390 --> 00:45:06,920 デフォルトでは、皆さんが使用している InnoDBはと呼ばれるもの。 969 00:45:06,920 --> 00:45:10,910 あなたは、このどこかの言及が表示されます phpMyAdminののインターフェース可能性が高い。 970 00:45:10,910 --> 00:45:14,130 しかし、他のデザインがあることを知っている ポテンシャルのある決断 971 00:45:14,130 --> 00:45:18,030 関心は、最終的なプロジェクトを来れば あなたは、Webベースの何かをする。 972 00:45:18,030 --> 00:45:19,330 >> しかし、ここではこれを実行してみましょう。 973 00:45:19,330 --> 00:45:23,130 それでは先に進み、上でこれを置くよう 物語のためのティーザーとして画面 974 00:45:23,130 --> 00:45:26,330 あなたが関与する、ルームメイト、 ミルクのグラス。 975 00:45:26,330 --> 00:45:28,240 それでは2分を見てみましょう またはので、ここで破る。 976 00:45:28,240 --> 00:45:31,060 あなたの周りに固執することができればと、のは来るように 背中、SQLをもう少し見て、 977 00:45:31,060 --> 00:45:35,160 その後、JavaScriptを使用してのビット P-セットを念頭に置いて8を。 978 00:45:35,160 --> 00:45:36,120 >> わかりました。 979 00:45:36,120 --> 00:45:40,420 それでは、あなたが考えて取得させ 非常に簡単に発生する可能性がコーナーケース 980 00:45:40,420 --> 00:45:44,240 データベースを使用することの文脈において、又は 率直に言って、でも現実世界の物事を使用して 981 00:45:44,240 --> 00:45:46,280 ATMはお金を得るのが好きです。 982 00:45:46,280 --> 00:45:47,640 だからここの冷蔵庫です。 983 00:45:47,640 --> 00:45:50,040 あなたがあまりにも1を持っているとします あなたの寮やあなたの家。 984 00:45:50,040 --> 00:45:54,990 そして、あなたは1ルームメイト、両者のを持っている あなたは本当に、インスタンスのためのミルクが好きです。 985 00:45:54,990 --> 00:45:57,210 >> だから、1日のクラスから帰ってくる。 986 00:45:57,210 --> 00:45:58,490 彼または彼女はまだ戻っていません。 987 00:45:58,490 --> 00:45:59,180 あなたは冷蔵庫を開く。 988 00:45:59,180 --> 00:46:00,870 あなたは本当に牛乳の大きなガラスを求めています。 989 00:46:00,870 --> 00:46:01,820 全く牛乳はありません。 990 00:46:01,820 --> 00:46:02,920 じゃあ、どんなことしてるの? 991 00:46:02,920 --> 00:46:03,840 あなたは冷蔵庫を閉じます。 992 00:46:03,840 --> 00:46:04,670 あなたがあなたの鍵をつかむ。 993 00:46:04,670 --> 00:46:05,930 あなたは、正方形に出かける。 994 00:46:05,930 --> 00:46:09,240 そして、あなたはそれらに、CVSで並んでゲット 常にセルフチェックアウトの事、 995 00:46:09,240 --> 00:46:11,180 実際よりも時間がかかる レジ係を持つ。 996 00:46:11,180 --> 00:46:11,820 とにかく。 997 00:46:11,820 --> 00:46:15,490 >> さて、一方、ドットドットドットお ルームメイトは帰宅し、彼または彼女 998 00:46:15,490 --> 00:46:17,440 同様に憧れを持っている いくつかの牛乳。 999 00:46:17,440 --> 00:46:20,380 そこで彼または彼女は、冷蔵庫をオープン 内部を見て、ああ、いまいましい。 1000 00:46:20,380 --> 00:46:21,160 いいえミルクません。 1001 00:46:21,160 --> 00:46:24,750 そこで彼または彼女が出ヘッド、行くことを起こる だけだった他のCVSへ 1002 00:46:24,750 --> 00:46:27,900 何らかの理由で離れてブロックし、彼または 彼女はいくつかの牛乳を買うために並んで取得します。 1003 00:46:27,900 --> 00:46:30,480 >> 一方、あなたが家に来て、彼または 彼女は家に来て、何をすべきか 1004 00:46:30,480 --> 00:46:31,980 あなたが最終的に持っている? 1005 00:46:31,980 --> 00:46:33,080 倍の牛乳。 1006 00:46:33,080 --> 00:46:34,620 しかし、あなたが本当に好きではない 牛乳それだけ。 1007 00:46:34,620 --> 00:46:37,300 だから今は、今ではあまり牛乳を持っている そのうちの一つは、ただ酸っぱい行くつもりされている 1008 00:46:37,300 --> 00:46:37,820 いずれはね。 1009 00:46:37,820 --> 00:46:39,370 だから、これは本当に悪いの問題である。 1010 00:46:39,370 --> 00:46:39,900 右? 1011 00:46:39,900 --> 00:46:41,990 >> だから何が起こったのか? 1012 00:46:41,990 --> 00:46:44,810 だから基本的に、これが一種である とんでもない例。 1013 00:46:44,810 --> 00:46:48,580 しかし、ボンネットの下に、私たちは持っていた ここに起こるあなたの両方がチェックされている 1014 00:46:48,580 --> 00:46:52,390 のいくつかの作品の状態 メモリ、冷蔵庫。 1015 00:46:52,390 --> 00:46:54,420 あなたの両方の状態をチェックし いくつかの変数の。 1016 00:46:54,420 --> 00:46:57,360 もしどちらも結論を描きました その後に行動していること。 1017 00:46:57,360 --> 00:47:01,420 しかし残念ながら、あなたのルームメイト間 店にいた、その状態 1018 00:47:01,420 --> 00:47:05,670 変数が変更、彼または彼女が戻ってきた 今の状態を変更したいが、 1019 00:47:05,670 --> 00:47:07,480 それは、すでに変更されているの 彼または彼女に。 1020 00:47:07,480 --> 00:47:11,120 そしてもちろん、彼または彼女は持っていません 彼らは知っていた場合、ストアに行って 1021 00:47:11,120 --> 00:47:13,010 あなたが途中ですでにあったこと。 1022 00:47:13,010 --> 00:47:16,430 >> だから、現実の世界では、どのようにしてできた あなたが持っていると仮定して、この問題を回避する 1023 00:47:16,430 --> 00:47:18,940 冷蔵庫は、あなたがルームメイトを持っている、 あなたが実際に牛乳が好き? 1024 00:47:18,940 --> 00:47:19,760 >> 観客:通信。 1025 00:47:19,760 --> 00:47:20,580 >> DAVIDマラン:通信。 1026 00:47:20,580 --> 00:47:21,160 [OK]をクリックします。 1027 00:47:21,160 --> 00:47:22,500 しかし、どのように通信するのでしょうか? 1028 00:47:22,500 --> 00:47:23,990 >> 観客:メモを残して。 1029 00:47:23,990 --> 00:47:25,480 >> DAVIDマラン:右、ノートを残しましょう​​! 1030 00:47:25,480 --> 00:47:28,025 いつものために、メモを残す ショーのファン。 1031 00:47:28,025 --> 00:47:31,580 大丈夫なので、常にメモを残したり、 南京錠か何かのような真に入れる 1032 00:47:31,580 --> 00:47:35,440 あなたを保持冷蔵庫 の状態を検査からルームメイト 1033 00:47:35,440 --> 00:47:36,540 その変数。 1034 00:47:36,540 --> 00:47:40,800 >> 今、なぜこれがに密接可能性があります 問題は、7、またはATMをに設定します。 1035 00:47:40,800 --> 00:47:46,780 さて、ATMの場所で世界を想像する あなたは、ATMに上がることができるかもしれない 1036 00:47:46,780 --> 00:47:48,920 ここで、マシン、ここ他のATM。 1037 00:47:48,920 --> 00:47:50,680 そして、これはかなり頻繁に発生します。 1038 00:47:50,680 --> 00:47:54,150 そして、あなたは2つのATMカードを持っていたとします これを得ることができる。 1039 00:47:54,150 --> 00:47:57,420 そして、あなたは、両方のマシンにログインする 効果的に同時に、うまくいけば 1040 00:47:57,420 --> 00:47:58,660 誰のを見ながら。 1041 00:47:58,660 --> 00:48:01,260 そして、あなたはあなたの暗証番号を入力する 大体同時に。 1042 00:48:01,260 --> 00:48:06,280 そして、あなたは残高照会を行う あなたが持っているどのくらいの現金を確認します。 1043 00:48:06,280 --> 00:48:08,920 そして、あなたが、100ドルを持っているとしましょう あなたのアカウントに残って。 1044 00:48:08,920 --> 00:48:13,310 そう本質的に同時に、あなた 1、ゼロ、ゼロ回答を入力します。 1045 00:48:13,310 --> 00:48:16,000 そして、あなたは、うまくいけば、いくつかのお金を取り戻す。 1046 00:48:16,000 --> 00:48:18,440 >> しかし、あなたはどのくらいのお金を取り戻すかもしれない? 1047 00:48:18,440 --> 00:48:21,710 一日の終わりに、今のコンピュータ、 彼らはと話をしている場合は特に 1048 00:48:21,710 --> 00:48:27,360 サーバーには、必然的に物事をしない 期待の注文中。 1049 00:48:27,360 --> 00:48:30,860 >> そうあるために、何が起こるかとします そこにどのようなネットワーク速度の問題 1050 00:48:30,860 --> 00:48:34,530 ある、あるいはCPUの問題がありますか、 そのようなこと、あるとし 1051 00:48:34,530 --> 00:48:38,530 最初のATMはあなたのバランスをチェックし、 ああ、この人は100ドルを持って、見ている。 1052 00:48:38,530 --> 00:48:41,840 しかし、その後、気を取られますので、多分 バックアップが起こっているので、それはだ 1053 00:48:41,840 --> 00:48:42,500 減速。 1054 00:48:42,500 --> 00:48:45,080 それとも、ネットワークを確認しながら、 接続が少し遅くなった理由 1055 00:48:45,080 --> 00:48:45,910 これはちょうど起こる。 1056 00:48:45,910 --> 00:48:47,100 彼らは、物理デバイスだ。 1057 00:48:47,100 --> 00:48:49,330 だから一方、第二のATMです 同じ質問をしている。 1058 00:48:49,330 --> 00:48:53,030 ダビデはどのくらいのお金を持っているのでしょうか? 100ドルがその答えです。 1059 00:48:53,030 --> 00:48:58,930 しかし、最初のATMはまだしていないため、 メッセージは、両方の、100ドルを差し引く送ら 1060 00:48:58,930 --> 00:49:03,000 ATMは銀行の金庫室を視察してきた、 今は100ドルでありますし、見て 1061 00:49:03,000 --> 00:49:07,160 両方のマシンは、潜在的にある 答えを吐き出すつもり。 1062 00:49:07,160 --> 00:49:12,240 >> さて、これはある意味で、あなたに最適です 銀行が最終的に何をするかもし 1063 00:49:12,240 --> 00:49:17,200 でマイナス​​100に金額を変更している あなたと同じ変数を設定する 1064 00:49:17,200 --> 00:49:21,570 0に等しいの銀行口座、対照的に、 やってマイナス100。 1065 00:49:21,570 --> 00:49:24,410 今、銀行のために最悪の場合 - 1066 00:49:24,410 --> 00:49:27,470 や銀行のための最高の内、一方で、 彼らはあなたに200ドルを与え、 1067 00:49:27,470 --> 00:49:31,690 あなたの銀行口座になりました負示し 本当にない100ドル、 1068 00:49:31,690 --> 00:49:32,950 すべてであなたに利益をもたらす。 1069 00:49:32,950 --> 00:49:36,500 しかし、ポイントは、このレース 取得2ルームメイトの条件 1070 00:49:36,500 --> 00:49:40,660 牛乳、または現金を取得しようとしている2台のATMのための ボールトの状態を変更 1071 00:49:40,660 --> 00:49:44,510 同時に存在するすべての データベースを持っている時。 1072 00:49:44,510 --> 00:49:48,290 >> 今問題に、この問題を7に設定 あなたが購入した場合という意味で生じ 1073 00:49:48,290 --> 00:49:52,110 Facebookの株式、その後、用 あなたは第二のシェアを購入するインスタンス 1074 00:49:52,110 --> 00:49:55,160 Facebookの株価は、あなたが行う必要がある プログラマとして決定。 1075 00:49:55,160 --> 00:49:58,710 更新する方法を決定するために、 データベースは、オッズはあなたがしようとしているされている 1076 00:49:58,710 --> 00:50:02,250 その株のために1行があり、この これを実装する1つの方法である。 1077 00:50:02,250 --> 00:50:06,640 そして、あなたはの1のシェアを持っているつもりです その株式のティッカーシンボルであり、FB、 1078 00:50:06,640 --> 00:50:10,120 このユーザー名、またはこのユーザの ID、一意の識別子。 1079 00:50:10,120 --> 00:50:12,340 >> しかし、同じ話はここで発生する可能性があります。 1080 00:50:12,340 --> 00:50:15,800 あなたはSQLでSELECTを行う場合は、表示されますように あなたが見るときに問題に7を設定し、 1081 00:50:15,800 --> 00:50:18,460 ああ、ダビデは1シェアを占めている Facebookの株式の。 1082 00:50:18,460 --> 00:50:23,240 私は今、この2株とするように変更してみましょう、 彼が購入したいので、 1083 00:50:23,240 --> 00:50:24,120 第二共有しています。 1084 00:50:24,120 --> 00:50:27,860 しかし、ダビデは、実際に2を持っていたとします ブラウザウィンドウを開くか、あるとし 1085 00:50:27,860 --> 00:50:32,150 それは2配偶者との共同アカウントの、 それらの両方が実行しようとしている 1086 00:50:32,150 --> 00:50:36,770 同じ操作、そこにも、 可能性があることの決定のために存在し 1087 00:50:36,770 --> 00:50:39,670 以前に基づいて行わ 世界情勢 - 1088 00:50:39,670 --> 00:50:41,290 アカウントは、1シェアを持っています - 1089 00:50:41,290 --> 00:50:45,630 今、人々、あるいは両方のサーバーは、両方の 2株にインクリメント言ってみてください。 1090 00:50:45,630 --> 00:50:49,020 しかし、このケースでは、充電しているかもしれません 私は、両方の株式のためのお金が、 1091 00:50:49,020 --> 00:50:50,830 ちょうどその1度にインクリメント。 1092 00:50:50,830 --> 00:50:54,730 >> だから一言で言えば、根本的な問題 ここでは、冗談と同様に残して約 1093 00:50:54,730 --> 00:50:58,750 注意、または、その上に南京錠をかけ、ある 2人、または2スレッドの場合 - 1094 00:50:58,750 --> 00:50:59,930 バックスクラッチに思う - 1095 00:50:59,930 --> 00:51:03,220 いくつかの変数の状態を調べることができます してから、その変数を変更しようとすると、 1096 00:51:03,220 --> 00:51:07,950 しかし、これら二つのことで発生しません。 同時にしかし中断得ることができます 1097 00:51:07,950 --> 00:51:11,500 データは、CAN、起こって他のものによる 非常に奇妙な状態になる。 1098 00:51:11,500 --> 00:51:15,450 そして、あなたが利益を得ることもできますし、苦しむことができます マネーの例の意味で。 1099 00:51:15,450 --> 00:51:18,110 >> だから、問題に7を設定して、私たちはあなたを与える ロングコードのこの1行、 1100 00:51:18,110 --> 00:51:21,000 話を短く、これを解決します MySQLでの問題。 1101 00:51:21,000 --> 00:51:24,950 ないこの超長命令 でも上の1行に収まら 1102 00:51:24,950 --> 00:51:30,370 ここで画面が確実にあなたの操作 アトミックと呼ば​​れるものです。 1103 00:51:30,370 --> 00:51:33,720 それをすべて一度に起こり、または それは全く発生しません。 1104 00:51:33,720 --> 00:51:37,530 この非常に長いフレーズはできない 部分的に中断されます。 1105 00:51:37,530 --> 00:51:39,840 >> そして、何それがないことは、文字通りです それは言う。 1106 00:51:39,840 --> 00:51:44,200 いくつかのテーブルに以下を挿入します 3フィールドこれらの特定の値、 1107 00:51:44,200 --> 00:51:47,280 しかし、重複キーに、 挿入をしない。 1108 00:51:47,280 --> 00:51:48,280 更新を行う。 1109 00:51:48,280 --> 00:51:52,450 だから、これはSELECTとやってようなものです 同時にいわば挿入します。 1110 00:51:52,450 --> 00:51:55,150 そしておそらくキーは何ですか ここで言及されている? 1111 00:51:55,150 --> 00:51:58,300 1112 00:51:58,300 --> 00:52:01,380 >> それが判明し、この中に表示されます 問題は、7の仕様を設定 1113 00:52:01,380 --> 00:52:06,040 我々は、ユニークキーがあるように宣言した この特定のテーブルの上になるように 1114 00:52:06,040 --> 00:52:08,480 あなたが複数の行を持つことはできません と同じユーザーの 1115 00:52:08,480 --> 00:52:10,150 同じペニー株式シンボル - 1116 00:52:10,150 --> 00:52:13,780 ここで、この例では、DVN.Vです 私たち愚かなペニーストック 1117 00:52:13,780 --> 00:52:14,980 仕様でを参照してください。 1118 00:52:14,980 --> 00:52:17,860 我々はそれが一意であることが宣言されたので、 これが意味する場合は、あなたということです 1119 00:52:17,860 --> 00:52:23,580 重複した行を挿入しようとすると、している 代わりにすることなく、それを更新する予定 1120 00:52:23,580 --> 00:52:27,020 誰が変えるチャンスがある 世界の状態のいずれか。 1121 00:52:27,020 --> 00:52:29,400 だから、要するに、これは確実に 物事はアトミックです。 1122 00:52:29,400 --> 00:52:32,530 >> より一般的にかかわらず、データベース MySQLのような - 1123 00:52:32,530 --> 00:52:35,460 あなたは、この機能を必要としない 7 P-設定されますが、ために念頭に置いて保管してください 1124 00:52:35,460 --> 00:52:36,200 未来 - 1125 00:52:36,200 --> 00:52:38,870 取引と呼ばれるものをサポート、 あなたが言うことができる場所 1126 00:52:38,870 --> 00:52:40,990 文字通りトランザクションを開始します。 1127 00:52:40,990 --> 00:52:43,270 その後、実行することができます 2つのSQLステートメント。 1128 00:52:43,270 --> 00:52:45,710 あなたが見るよう、SQL文、 P-セット7で、少し見える 1129 00:52:45,710 --> 00:52:46,750 このような何か。 1130 00:52:46,750 --> 00:52:48,820 アカウントと呼ばれるテーブルを更新します。 1131 00:52:48,820 --> 00:52:52,550 何に等しい残高]列を設定する 現在残高]列 1132 00:52:52,550 --> 00:52:57,280 マイナス千ここ数です ユーザIDのような口座番号、 1133 00:52:57,280 --> 00:53:00,830 2に等しく、[更新] アカウントは、ドットドットドット。 1134 00:53:00,830 --> 00:53:04,350 >> だから、普通の言葉で、これら二つは何をすべきか クエリは、でやっているように見える 1135 00:53:04,350 --> 00:53:05,840 銀行の現実世界の感覚? 1136 00:53:05,840 --> 00:53:07,440 >> 観客:貯蓄への転送。 1137 00:53:07,440 --> 00:53:08,020 >> DAVIDマラン:その通りです。 1138 00:53:08,020 --> 00:53:10,470 1から資金を移す 他のアカウント。 1139 00:53:10,470 --> 00:53:14,400 そして、これは、あなたもう一つの例である 実際にこれらの二つのことが起こるしたい 1140 00:53:14,400 --> 00:53:15,570 か起こらない。 1141 00:53:15,570 --> 00:53:18,880 あなたが何かに取得する必要はありません それらの中間の、潜在的に台無しに 1142 00:53:18,880 --> 00:53:22,220 数学、または台無しにどの程度 あなたが持っているお金、あるいはどの程度 1143 00:53:22,220 --> 00:53:23,170 お金銀行があります。 1144 00:53:23,170 --> 00:53:26,890 それでは、取引については本当にうれしいです MySQLでそれであり、 1145 00:53:26,890 --> 00:53:30,160 より一般的に、それは彼らのデータベースをある 実装されたし、スマートな人々 1146 00:53:30,160 --> 00:53:33,670 これらの機能は、作成する方法を見つけ出す それらのものの両方が起こることを確認してください 1147 00:53:33,670 --> 00:53:35,120 またはまったく。 1148 00:53:35,120 --> 00:53:38,580 >> そして、あなたは本当にために志望している場合 上の人々によって使われているウェブサイト 1149 00:53:38,580 --> 00:53:41,490 キャンパス、現実の世界で人々は、そう スタートアップ意味で何か、 1150 00:53:41,490 --> 00:53:43,300 これらは種類があり 設計上の決定、その 1151 00:53:43,300 --> 00:53:45,020 これまでに非常に重要になります。 1152 00:53:45,020 --> 00:53:48,240 そうでなければ、あなたを失う、データを失い始める ユーザー、または最悪の場合には 1153 00:53:48,240 --> 00:53:51,800 我々は潜在的に、ここで見てきました お金を失う。 1154 00:53:51,800 --> 00:53:56,180 ので、もう一度、問題のあるセットでその詳細 7だけでなく、おそらくいくつかのために 1155 00:53:56,180 --> 00:53:57,530 最終的なプロジェクトで使用。 1156 00:53:57,530 --> 00:54:01,870 >> それでは、私たちが持っていた画像を変更しましょう ちょうど1以上の方法で、前の瞬間。 1157 00:54:01,870 --> 00:54:04,070 だから、私ができるなら、私が実際に見てみましょう - 1158 00:54:04,070 --> 00:54:06,030 いや、それは逝ってしまった。 1159 00:54:06,030 --> 00:54:06,690 そこである。 1160 00:54:06,690 --> 00:54:09,020 >> 我々は前回したところこれがある。 1161 00:54:09,020 --> 00:54:12,390 そして、それは我々が投げるつもり判明 ここでミックスに1より多くの事 - 1162 00:54:12,390 --> 00:54:14,510 JavaScriptのと呼ばれる言語。 1163 00:54:14,510 --> 00:54:18,060 そうJavaScriptは実際にフィット この作品に - 1164 00:54:18,060 --> 00:54:22,086 と私は非常に十分な余地を残していなかった、 これはスケールするようになりましではありません。 1165 00:54:22,086 --> 00:54:23,900 [OK]を、これは本当に哀れです。 1166 00:54:23,900 --> 00:54:27,075 [OK]を、だからJavaScriptの。 1167 00:54:27,075 --> 00:54:27,340 わかりました。 1168 00:54:27,340 --> 00:54:28,760 私は実際にそれをひどい仕打ちをしています。 1169 00:54:28,760 --> 00:54:29,390 わかりました。 1170 00:54:29,390 --> 00:54:34,790 >> そうJavaScriptは別のプログラミングです 言語、私たちの最後の、それは場合に役立ちます 1171 00:54:34,790 --> 00:54:37,770 ずっとそこではないことを安心させる ここ消火栓の。 1172 00:54:37,770 --> 00:54:41,100 そうJavaScriptはまた、解釈されます そうしないことを意味言語、 1173 00:54:41,100 --> 00:54:42,670 0と1にコンパイルします。 1174 00:54:42,670 --> 00:54:43,690 あなたはそれを実行します。 1175 00:54:43,690 --> 00:54:47,680 しかし、何がとは根本的に違う JavaScriptは通常、ということです 1176 00:54:47,680 --> 00:54:49,815 ウェブサーバー上で実行しないでください。 1177 00:54:49,815 --> 00:54:52,570 それがで実行されません。 アプライアンス自体。 1178 00:54:52,570 --> 00:54:57,490 むしろ、それは、ユーザによってダウンロードされ 自分のブラウザにHTTP経由で - 1179 00:54:57,490 --> 00:55:00,260 クロム、サファリは、Internet Explorer、 Firefoxの、どのような - 1180 00:55:00,260 --> 00:55:03,860 そして、これを実行し、ブラウザの 特定のプログラミング言語。 1181 00:55:03,860 --> 00:55:08,000 >> それほど明確であるためには、PHPはこれまでされている いずれかのコマンドラインで実行 1182 00:55:08,000 --> 00:55:11,290 サーバー上の私たちの黒と白の窓、 アプライアンス、コンピュータのような 1183 00:55:11,290 --> 00:55:14,490 アプライアンスのような、又は、されているの ウェブ·サーバによって実行 1184 00:55:14,490 --> 00:55:15,860 コンピュータ上で実行されている。 1185 00:55:15,860 --> 00:55:20,490 しかし、ここでのテーマは、これまでのところは、PHPで だから、サーバー側を実行した 1186 00:55:20,490 --> 00:55:24,820 ユーザとユーザのブラウザ PHPコードの行を見ることはありません。 1187 00:55:24,820 --> 00:55:28,530 >> 実際には、これまでのブラウザを開くと、 あなたのウェブサイトまたは別のあなた 1188 00:55:28,530 --> 00:55:32,400 実際にあなたのウィンドウにPHPコードを参照してください。 誰かが台無しました。 1189 00:55:32,400 --> 00:55:34,950 それがあることを意味するものではないですので、 直接ブラウザに送信。 1190 00:55:34,950 --> 00:55:38,150 それが実行され、オンにすることになっている HTMLのようなものに。 1191 00:55:38,150 --> 00:55:40,120 >> しかし、JavaScriptは本質的に 反対。 1192 00:55:40,120 --> 00:55:44,350 これは、典型的には、内部で実行されることを意図しているの ユーザのブラウザウィンドウの。 1193 00:55:44,350 --> 00:55:46,840 とウェブサイトのどのような使用 JavaScriptをこれらの日? 1194 00:55:46,840 --> 00:55:49,640 1195 00:55:49,640 --> 00:55:52,180 >> 文字通りあらゆる人気のウェブサイトのように。 1196 00:55:52,180 --> 00:55:55,430 それはおそらくあなたたちのすべてのウェブサイト JavaScriptを使用して毎日使用 1197 00:55:55,430 --> 00:55:57,330 最も単純であっても 最もセクシーな特徴。 1198 00:55:57,330 --> 00:55:59,800 >> だから、Facebookのようなもの あなたがそれを使用する場合は、チャット。 1199 00:55:59,800 --> 00:56:01,040 どのようにそれが実際に動作しますか? 1200 00:56:01,040 --> 00:56:05,090 さて、これまで、もののすべては、我々だ HTMLで行われ、PHPはことを前提としています 1201 00:56:05,090 --> 00:56:08,750 は、URLを引き上げ、あなたはEnterキーを押します あなたは、いくつかのHTMLコンテンツを参照してください。 1202 00:56:08,750 --> 00:56:11,970 そして、あなたは変化し、リンクをクリックして URLは、ページを変更し、再ロードさ 1203 00:56:11,970 --> 00:56:12,740 いくつかの新しいコンテンツ。 1204 00:56:12,740 --> 00:56:16,340 別のURLをクリックするか、あなたがフォームを送信 別のページに泡立ておよび取得 1205 00:56:16,340 --> 00:56:17,420 あなたは、いくつかの新しいコンテンツを参照してください。 1206 00:56:17,420 --> 00:56:22,710 >> しかし、Facebookのチャットのようなものを使用して、 まれまたはGchat、または、Googleマップ、 1207 00:56:22,710 --> 00:56:27,350 そのようなページ全体の更新を行います あなたが一時的に白い画面が表示され、 1208 00:56:27,350 --> 00:56:28,470 その後、新しいコンテンツ。 1209 00:56:28,470 --> 00:56:32,610 むしろ、Webページは、今日動的です 再び更新とばかり 1210 00:56:32,610 --> 00:56:35,570 何度も何度もすべての並べ替え 舞台裏の。 1211 00:56:35,570 --> 00:56:38,560 そして、それはあなたがに行くないときことが判明 Facebookのような何か、またはGchat、 1212 00:56:38,560 --> 00:56:43,050 やGmail、およびページ更新 自動的にリロードせず 1213 00:56:43,050 --> 00:56:47,630 何が起こっているのか、画面全体が、ということです お使いのブラウザは、密かにのようなものをしました 1214 00:56:47,630 --> 00:56:49,410 追加のHTTPリクエスト - 1215 00:56:49,410 --> 00:56:52,740 全体ではなく、Webページのための、ただのために のようなデータの少し塊、 1216 00:56:52,740 --> 00:56:55,740 あなたの友人そのインスタントメッセージだけ あなた、またはステータスの更新のことを送信 1217 00:56:55,740 --> 00:56:58,210 誰かがあなただけ、あるいはツイート送信 誰かだけ送った。 1218 00:56:58,210 --> 00:57:02,120 それだけのために少し要求を作っている JavaScriptを使用して、データ、そして、この 1219 00:57:02,120 --> 00:57:06,370 何を変更するには、プログラミング言語、 Webページには、なしのように見えます 1220 00:57:06,370 --> 00:57:09,860 サーバは、サーバなしで、支援 そのHTMLを生成する。 1221 00:57:09,860 --> 00:57:13,820 >> だから要するに、JavaScriptが次に使用することができます のみから新しいデータを取得しないように 1222 00:57:13,820 --> 00:57:16,750 全体をリロードせずにサーバー ページまたはフォームを送信。 1223 00:57:16,750 --> 00:57:20,060 また、変更することができ いわゆるDOM - 1224 00:57:20,060 --> 00:57:21,520 ドキュメントオブジェクトモデル - 1225 00:57:21,520 --> 00:57:24,620 それはのためだけ空想の方法です HTMLのツリーを言って 1226 00:57:24,620 --> 00:57:26,220 我々は最後の時間を見た。 1227 00:57:26,220 --> 00:57:31,640 >> だから安心させるために、JavaScriptがある 文法的にそうCに似て同様に。 1228 00:57:31,640 --> 00:57:32,820 ない主な機能はありません。 1229 00:57:32,820 --> 00:57:35,430 あなただけのコードを書き始める それはあるいは、実行してしまいます 1230 00:57:35,430 --> 00:57:36,900 もっと適切に解釈。 1231 00:57:36,900 --> 00:57:38,660 条件は次のようになります。 1232 00:57:38,660 --> 00:57:41,230 Cとは異なりませんか そのことについてはPHP。 1233 00:57:41,230 --> 00:57:43,890 ブール式または-ED一緒に このようになります。 1234 00:57:43,890 --> 00:57:45,590 このようになり一緒にANDさ。 1235 00:57:45,590 --> 00:57:47,750 >> スイッチは次のようになります。 1236 00:57:47,750 --> 00:57:49,440 ループでは、このようになります。 1237 00:57:49,440 --> 00:57:51,060 whileループは次のようになります。 1238 00:57:51,060 --> 00:57:53,316 ループは次のようになりますしながら行う。 1239 00:57:53,316 --> 00:57:54,780 >> これは新しく追加されました。 1240 00:57:54,780 --> 00:57:58,753 だからJavaScriptがforeachのをしていない 自体の構築が、これは構築 1241 00:57:58,753 --> 00:58:03,870 この中に変数配列のI、そして私のために ケース、インデックス値になります。 1242 00:58:03,870 --> 00:58:06,880 だから、それとは少し違う foreachの、しかし、新しいバージョンの 1243 00:58:06,880 --> 00:58:10,280 JavaScriptは、すべての時間が出てきている そうであってもこれらの言語機能 1244 00:58:10,280 --> 00:58:10,880 進化しています。 1245 00:58:10,880 --> 00:58:16,920 >> そして余談として、JavaScriptのこのごろ また同じようにサーバー上で使用することができます 1246 00:58:16,920 --> 00:58:19,920 PHPはNode.js.呼ばれるフレームワークを使用して 1247 00:58:19,920 --> 00:58:24,670 CS50ののTFの一つは、ケビンは、リードしてきました で入手可能ですNode.jsのセミナー 1248 00:58:24,670 --> 00:58:26,440 cs50.net/seminars。 1249 00:58:26,440 --> 00:58:28,830 興味があるのであれば、知っているあなた としてサーバー側でこれを使用することができます 1250 00:58:28,830 --> 00:58:33,870 よく、それは、かなり最近の傾向だ しかしその時点で強力なもの。 1251 00:58:33,870 --> 00:58:35,270 >> これは、少し異なっています。 1252 00:58:35,270 --> 00:58:37,910 これは、JavaScriptで配列です。 1253 00:58:37,910 --> 00:58:40,115 そして、あなたは別として、何を打つ CやPHPと比較? 1254 00:58:40,115 --> 00:58:43,890 1255 00:58:43,890 --> 00:58:47,420 いくつかの簡単な物語があります 我々はここで言うことができます。 1256 00:58:47,420 --> 00:58:49,367 何がPHPに対して不足しているのですか? 1257 00:58:49,367 --> 00:58:51,652 >> 読者:[聞こえない]。 1258 00:58:51,652 --> 00:58:52,110 >> DAVIDマラン:はい? 1259 00:58:52,110 --> 00:58:53,322 申し訳ありませんが、もう一度言う? 1260 00:58:53,322 --> 00:58:54,740 >> 読者:宣言していません 変数の型。 1261 00:58:54,740 --> 00:58:56,390 >> DAVIDマラン:私たちは宣言していない 変数の型。 1262 00:58:56,390 --> 00:58:59,630 だから、実際には非常にPHPのような、私たちではない この変数の型を指定する。 1263 00:58:59,630 --> 00:59:02,670 むしろ、我々はより一般的にしている 変数のVARを言って。 1264 00:59:02,670 --> 00:59:06,690 我々のPHPの迷惑を持っていない ドル記号、に退屈しながら 1265 00:59:06,690 --> 00:59:09,160 タイプは、より明確にないこと 何かが変数だ。 1266 00:59:09,160 --> 00:59:11,830 ここのに対し、我々はに戻っての一種だ 単に呼び出すことによってCのアプローチ 1267 00:59:11,830 --> 00:59:14,500 私たちが望む名前で変数 数字のように、それを得た。 1268 00:59:14,500 --> 00:59:17,170 また、PHPのように、我々は持っている ために角括弧 1269 00:59:17,170 --> 00:59:19,170 その配列の内部値。 1270 00:59:19,170 --> 00:59:22,490 >> また、JavaScriptでの変数はそう このように見えるかもしれません。 1271 00:59:22,490 --> 00:59:26,900 これはSと呼ばれる文字列である、ここで注意してください、 しかし同様に、我々は指定していない 1272 00:59:26,900 --> 00:59:28,750 それは文字列だ。 1273 00:59:28,750 --> 00:59:33,160 ここでは、しかししない機能です 、PHPで全く同じように存在している 1274 00:59:33,160 --> 00:59:34,460 しかし少し同様。 1275 00:59:34,460 --> 00:59:36,530 これは、JavaScriptでのオブジェクトです。 1276 00:59:36,530 --> 00:59:42,110 とオブジェクトは、スイス軍の一種である あなたのデータ構造のナイフ 1277 00:59:42,110 --> 00:59:43,900 物事は、任意の数のためにそれらを使用することができます。 1278 00:59:43,900 --> 00:59:46,860 >> ここで、例えば、私たちは宣言しています 引用符と呼ばれる変数。 1279 00:59:46,860 --> 00:59:49,110 その変数の型 オブジェクトです。 1280 00:59:49,110 --> 00:59:53,550 あなたは、Cの構造体と考えることができ それは、キーと値を持っています。 1281 00:59:53,550 --> 00:59:55,250 シンボルが鍵となります。 1282 00:59:55,250 --> 00:59:57,350 FBは、明らかに、価値ある 銘柄記号。 1283 00:59:57,350 --> 00:59:57,930 コンマ。 1284 00:59:57,930 --> 01:00:02,180 価格は別のキーであり、その値である どうやら浮動小数点、または 1285 01:00:02,180 --> 01:00:06,510 より一般的に数 49.26ドルのJavaScriptを、。 1286 01:00:06,510 --> 01:00:09,030 >> だからPHPはありません - 1287 01:00:09,030 --> 01:00:12,980 我々は非常にPHPオブジェクトに見ていない このように、我々はアナログを見た、 1288 01:00:12,980 --> 01:00:14,093 そのことは何でしたか? 1289 01:00:14,093 --> 01:00:14,980 >> 読者:[聞こえない]。 1290 01:00:14,980 --> 01:00:16,110 >> DAVIDマラン:連想配列。 1291 01:00:16,110 --> 01:00:19,990 PHPは連想配列を持っているので、一方 構文がこれまでややそうである 1292 01:00:19,990 --> 01:00:20,370 異なる - 1293 01:00:20,370 --> 01:00:21,780 私たちは、角括弧を見ました。 1294 01:00:21,780 --> 01:00:23,860 我々は奇妙な矢印記号を見た。 1295 01:00:23,860 --> 01:00:27,330 JavaScriptはオブジェクトを持っていますが、これは 主に意味的な違いと 1296 01:00:27,330 --> 01:00:29,260 今のところ別の同義語。 1297 01:00:29,260 --> 01:00:35,060 しかし、余談として、PHPにも持って そのJavaと他の方法でのオブジェクト 1298 01:00:35,060 --> 01:00:37,810 言語は内のオブジェクトを持っている オブジェクト指向プログラミング。 1299 01:00:37,810 --> 01:00:40,440 しかし、我々は単に、これらを使用します 今のデータ型の。 1300 01:00:40,440 --> 01:00:42,170 オブジェクトと連想配列。 1301 01:00:42,170 --> 01:00:44,140 >> こちらは、それを作るかもしれない もう少し明確に。 1302 01:00:44,140 --> 01:00:45,890 オブジェクトが便利ですなぜここだ。 1303 01:00:45,890 --> 01:00:48,760 あなたが学生を宣言したい場合は、 Zamylaように、我々は実際にすることができます 1304 01:00:48,760 --> 01:00:52,630 その内、いわばカプセル 同じように中括弧を使用してオブジェクト 1305 01:00:52,630 --> 01:00:55,060 キーの全体の束の前に ここでと値。 1306 01:00:55,060 --> 01:00:59,150 私たちは、ID、家、そして名前を持っている としてセミコロンが続くZamyla、 1307 01:00:59,150 --> 01:01:00,690 最後にいつもの。 1308 01:01:00,690 --> 01:01:04,840 >> ダウンここでも、これはわずかにある 非常に強力でも異なるが、 1309 01:01:04,840 --> 01:01:05,690 このごろ。 1310 01:01:05,690 --> 01:01:08,780 ここでは配列です、と私は知っているので、 角括弧はそこまでだ 1311 01:01:08,780 --> 01:01:11,090 上部と角括弧 一番下にある。 1312 01:01:11,090 --> 01:01:16,050 そして、これはどのようなデータの配列です JavaScriptで明らかに入力? 1313 01:01:16,050 --> 01:01:21,260 これは見た目の配列です 3オブジェクトと同様。 1314 01:01:21,260 --> 01:01:24,580 そして、私はそれが唯一のオブジェクトであることを知っている 中括弧があるため。 1315 01:01:24,580 --> 01:01:28,760 そして、そこのオープン中括弧に気づく いくつかのもの、近くに中括弧、カンマ、 1316 01:01:28,760 --> 01:01:31,180 その後いくつかのより多くの、コンマ、 その後いくつかの詳細。 1317 01:01:31,180 --> 01:01:33,800 だから、3つの引数です 2カンマで区切って入力します。 1318 01:01:33,800 --> 01:01:36,810 >> だから、これは、3つのオブジェクトの配列です。 1319 01:01:36,810 --> 01:01:39,940 それらのオブジェクトの各々があるように見える 一部の学生や職員 1320 01:01:39,940 --> 01:01:42,370 ソート、それぞれのIDを持つ、 家、および名前。 1321 01:01:42,370 --> 01:01:45,060 しかし、私は、この何かを呼んでいる JSONと呼ばれる - 1322 01:01:45,060 --> 01:01:47,450 JavaScriptのオブジェクト表記。 1323 01:01:47,450 --> 01:01:52,060 そして、これは、実際にデータフォーマットです ので、非常に人気があるとされている 1324 01:01:52,060 --> 01:01:55,100 流行あなたが書いている場合に、これらの日 フェイスブックを使用するアプリケーション 1325 01:01:55,100 --> 01:01:59,150 API、TwitterのAPI、本当にほとんど そこに任意のAPIは、これらの日、 1326 01:01:59,150 --> 01:02:02,820 CS50の自身のいくつかを含む あなたが戻って取得するデータがでない 1327 01:02:02,820 --> 01:02:04,720 古い学校CSV形式。 1328 01:02:04,720 --> 01:02:06,780 >> そのためリコールそのCSV 超簡単です。 1329 01:02:06,780 --> 01:02:10,230 それはちょうど列が分離されている コンマで。 1330 01:02:10,230 --> 01:02:13,190 JSONデータは、あなたに多くのメタデータを提供します。 1331 01:02:13,190 --> 01:02:17,800 これは、関連付けので、すべての値を持つキーを 彼らはただ想定する必要がないよう 1332 01:02:17,800 --> 01:02:22,460 ゼロ番目の列は、列1の値である 一つは別ですが、2列目は、別です。 1333 01:02:22,460 --> 01:02:26,790 JSONオブジェクトのすべてがここに一種である の自己記述、すべての理由 1334 01:02:26,790 --> 01:02:30,940 このファイルの名前の1つは、文字通り持つ としての前に名前 1335 01:02:30,940 --> 01:02:32,510 文字列を引用符で囲まれた。 1336 01:02:32,510 --> 01:02:34,950 >> それでは見てみましょう ここにいくつかの例。 1337 01:02:34,950 --> 01:02:36,800 私がアプライアンスに行こう。 1338 01:02:36,800 --> 01:02:41,000 そして、私は我々のバーチャルホストに手放す 公的にディレクトリ。 1339 01:02:41,000 --> 01:02:45,590 と私はに手放す JavaScriptのディレクトリ。 1340 01:02:45,590 --> 01:02:49,610 そしてみましょう先に行くと開く DOMはただ意味DOM-0.html、 1341 01:02:49,610 --> 01:02:51,010 ドキュメントオブジェクトモデル。 1342 01:02:51,010 --> 01:02:53,490 これは、ツリーのものだ 私は以前に言及した。 1343 01:02:53,490 --> 01:02:54,950 >> そして、私は次のことを提案することができます。 1344 01:02:54,950 --> 01:02:57,720 ここでは、そのWebページです ボディは非常に単純です。 1345 01:02:57,720 --> 01:03:00,170 だからダウンここで一番下にある、 私はフォームを持って注意してください。 1346 01:03:00,170 --> 01:03:01,500 我々はそれらの前に見てきました。 1347 01:03:01,500 --> 01:03:07,600 それは、2つの入力有し、そのうちのいずれかを持つ 名前のID、タイプのを持っているそのうちの1 1348 01:03:07,600 --> 01:03:09,830 提出し、最初の 1の型はテキストです。 1349 01:03:09,830 --> 01:03:11,900 だから、これは実際にはかなり簡単に聞こえる。 1350 01:03:11,900 --> 01:03:13,090 >> のは、ここに行こう。 1351 01:03:13,090 --> 01:03:15,390 のがここでこのページに戻りましょう。 1352 01:03:15,390 --> 01:03:21,030 のがlocalhostに行こう、と入る 我々のJavaScriptのディレクトリ、およびに行く 1353 01:03:21,030 --> 01:03:24,640 DOM-0、ここで我々は、このフォームを持っている。 1354 01:03:24,640 --> 01:03:26,550 だから明らかだ すべてこのページではありません。 1355 01:03:26,550 --> 01:03:28,740 それは、名前のフィールドがあります [Submit]ボタンを。 1356 01:03:28,740 --> 01:03:30,340 しかし、私はここでPHPを使用するつもりはない。 1357 01:03:30,340 --> 01:03:34,310 私はすべてのクライアント側をするつもりです 従って、以下のようにJavaScriptで話す。 1358 01:03:34,310 --> 01:03:39,100 >> 私は確かに名前を与えてくれたことに注意してください この入力の分野でユニークな 1359 01:03:39,100 --> 01:03:42,350 識別子は、その実際に意志 瞬間に私にいくつかの時間を節約できます。 1360 01:03:42,350 --> 01:03:45,480 そして、私は別のタグを導入してきた気付く 私のWebページの頭の中で、 1361 01:03:45,480 --> 01:03:46,565  タグ。 1362 01:03:46,565 --> 01:03:50,120 >> だから、JavaScriptがあることをこの意味でだ クライアント側のプログラミング言語。 1363 01:03:50,120 --> 01:03:55,020 このケースでは、単にCSSのように、私が入れてきた 私のHTMLの直線内側それ。 1364 01:03:55,020 --> 01:03:58,810 しかし、私は、関数を宣言したことに気づく PHPのように少し見える 1365 01:03:58,810 --> 01:04:01,530 構文的には、しかし、これは実際にある JavaScriptを、再びので、それは 1366 01:04:01,530 --> 01:04:03,920 ブラウザでクライアント側。 1367 01:04:03,920 --> 01:04:07,590 そして、これはに何が起こっているかを推測取る 、構文のにもかかわらず、いくつかの操作を行い 1368 01:04:07,590 --> 01:04:09,338 ここに新しいです。 1369 01:04:09,338 --> 01:04:11,760 >> 読者:誰に挨拶。 1370 01:04:11,760 --> 01:04:14,020 >> DAVIDマラン:それは挨拶するだろう このページを訪れた誰に。 1371 01:04:14,020 --> 01:04:15,120 だからどうやって? 1372 01:04:15,120 --> 01:04:18,070 >> 予告だから、それはJavaScriptで判明 警告()関数があります。 1373 01:04:18,070 --> 01:04:22,840 これは悲しい機能の非常に一種である 本当にただのユーザーを困らせるために傾向がある。 1374 01:04:22,840 --> 01:04:25,440 それはあなたが本当に使うべきものではありません 一般的に、それが迅速かつ汚いです 1375 01:04:25,440 --> 01:04:27,710 何かを印刷の一種の方法 グラフィカル·ユーザに 1376 01:04:27,710 --> 01:04:29,180 ブラウザのようなインターフェイス、。 1377 01:04:29,180 --> 01:04:31,400 私が持っていることをここで注意してください 単一引用符内の文字列。 1378 01:04:31,400 --> 01:04:36,010 それは結局は、C、Javaスクリプトとは異なり、 実際には、単一の使用することができます 1379 01:04:36,010 --> 01:04:38,730 引用符、と率直に言って、それだけのようなものだ 間の文体大会の 1380 01:04:38,730 --> 01:04:41,180 JavaScriptのプログラマ 単一引用符を使用します。 1381 01:04:41,180 --> 01:04:43,750 PHPは、彼らは実際に少し持っている 別の意味。 1382 01:04:43,750 --> 01:04:45,810 しかし、今のところ、ただ知っている それが唯一の理由です。 1383 01:04:45,810 --> 01:04:49,270 JavaScriptでの規則は頻繁にすることです 単一引用符を使用していますが、我々は使用することができます 1384 01:04:49,270 --> 01:04:50,950 だけでなく、両方の場所で二重引用符。 1385 01:04:50,950 --> 01:04:52,610 >> だから、これは面白いです。 1386 01:04:52,610 --> 01:04:56,430 我々はそれを持っていた最後の時間を思い出す ツリーを描いた画面上の画像 1387 01:04:56,430 --> 01:04:59,720 どこにHTMLノードを持っていた、と ヘッドノード、およびボディノード 1388 01:04:59,720 --> 01:05:00,800 その後いくつかのテキスト。 1389 01:05:00,800 --> 01:05:04,700 しかし、1つの特殊ノードがあった 私は文書と呼ばれる非常にトップ。 1390 01:05:04,700 --> 01:05:08,260 まあ、それは任意の、JavaScriptで判明 あなたはJavaScriptでプログラムを書く時間 1391 01:05:08,260 --> 01:05:11,040 ブラウザでは、へのアクセス権を持って 特別なグローバル変数。 1392 01:05:11,040 --> 01:05:14,130 PHPのスーパーグローバルと基本的に変わるところは、 この1つはで呼び出される 1393 01:05:14,130 --> 01:05:16,050 すべて小文字のドキュメント。 1394 01:05:16,050 --> 01:05:21,480 >> これは、構造体のようなものだが、この構造体 また、内部の機能を備えています。 1395 01:05:21,480 --> 01:05:23,790 だから、Cの構造体は、単に一般的にデータを持っています。 1396 01:05:23,790 --> 01:05:29,060 しかし、このようにJavaScriptのオブジェクトは 技術的にも機能を有している、 1397 01:05:29,060 --> 01:05:31,830 それ以外の方法として知られている その中。 1398 01:05:31,830 --> 01:05:35,750 そして、あなたは内部の関数を呼び出すことができます このオブジェクトには、文字通り、そのを行う 1399 01:05:35,750 --> 01:05:39,610 名前、ドット、その後の名前 関数、またはメソッドをもう一度。 1400 01:05:39,610 --> 01:05:41,160 それは本当に、単なる同義語だ。 1401 01:05:41,160 --> 01:05:42,450 >> そして、この関数は何をするのでしょうか? 1402 01:05:42,450 --> 01:05:43,840 あなたは、その名前から推測の種類ができます。 1403 01:05:43,840 --> 01:05:45,590 IDによって要素を取得します。 1404 01:05:45,590 --> 01:05:50,040 だから、これは、ウェブページを検索しようとしている を探して、そのツリーを検索 1405 01:05:50,040 --> 01:05:55,210 どんなノード、AKA要素あり 引用引用終わり名の一意のID。 1406 01:05:55,210 --> 01:05:56,560 そして、何を、私はするつもりです? 1407 01:05:56,560 --> 01:06:00,350 私は内部の値を取得するつもりだ そのツリー内のノード、私は行くよ 1408 01:06:00,350 --> 01:06:02,580 何とかその名前に挨拶する。 1409 01:06:02,580 --> 01:06:05,360 >> だから我々はいないしたにも関わらず、推測を取る まだこれを見、何をプラス 1410 01:06:05,360 --> 01:06:07,396 シンボルはこことここ、おそらく意味ですか? 1411 01:06:07,396 --> 01:06:08,230 >> 観客:連結します。 1412 01:06:08,230 --> 01:06:09,220 >> DAVIDマラン:連結します。 1413 01:06:09,220 --> 01:06:11,290 右、これらがあるだけで 設計上の決定のようなもの 1414 01:06:11,290 --> 01:06:12,280 人々は、数年前に作った。 1415 01:06:12,280 --> 01:06:15,190 PHPには、連結 ドットの事。 1416 01:06:15,190 --> 01:06:18,800 C言語では、いくつかのフープを介してジャンプして、 strcopy(のような関数を呼び出す)、または 1417 01:06:18,800 --> 01:06:20,600 strcatは()または他のそのような機能。 1418 01:06:20,600 --> 01:06:22,060 しかし、JavaScriptでは、プラスを使用しています。 1419 01:06:22,060 --> 01:06:24,770 だから、これは単に連結されている 3つの文字列 - 1420 01:06:24,770 --> 01:06:27,850 こんにちは、名前、次いで 感嘆符。 1421 01:06:27,850 --> 01:06:30,390 >> だから、いつ、なぜこの機能がある しかし呼ばれる? 1422 01:06:30,390 --> 01:06:33,150 さて、から推測する 一番下のHTML。 1423 01:06:33,150 --> 01:06:35,810 なぜ挨拶()が呼び出されるとき、またはされている? 1424 01:06:35,810 --> 01:06:39,730 1425 01:06:39,730 --> 01:06:44,030 >> どうやら、最良のように私は、伝えることができます このフォームの送信時に、送信する、 1426 01:06:44,030 --> 01:06:47,200 私は、あるものは何でもするつもりだ これらの引用符の内側。 1427 01:06:47,200 --> 01:06:50,900 具体的には、私がコールするつもりだ ()に挨拶して、falseを返します。 1428 01:06:50,900 --> 01:06:53,090 >> さて、どのようなネットを見てみましょう 効果はここで最初のものです。 1429 01:06:53,090 --> 01:06:58,290 だから私は先に行くと入力してみましょう において、たとえば、ローレンは、提出してください。 1430 01:06:58,290 --> 01:06:59,440 ローレンこんにちは。 1431 01:06:59,440 --> 01:07:02,990 多分これはただだったかどうかを見てみよう 幸運な実装。 1432 01:07:02,990 --> 01:07:03,200 いや。 1433 01:07:03,200 --> 01:07:05,990 だから、何を入力しているの 私は実際にそこに置か名前を付けます。 1434 01:07:05,990 --> 01:07:07,970 >> しかし、変化していないのかがわかります。 1435 01:07:07,970 --> 01:07:10,360 URLはまだDOM-0.htmlです。 1436 01:07:10,360 --> 01:07:11,820 何register.phpはありません。 1437 01:07:11,820 --> 01:07:13,110 何番目のファイルはありません。 1438 01:07:13,110 --> 01:07:14,930 何action属性はありません。 1439 01:07:14,930 --> 01:07:19,720 それでは、この戻りfalseです おそらく何? 1440 01:07:19,720 --> 01:07:23,660 なぜ私は、挨拶の呼び出し()としています おそらくfalseを返す? 1441 01:07:23,660 --> 01:07:26,420 あなたがクリックしたときに、通常は何が起こるか でも、我々が持っているフォームに提出 1442 01:07:26,420 --> 01:07:27,854 先週見たことある? 1443 01:07:27,854 --> 01:07:29,900 >> 観客:[聞こえない]。 1444 01:07:29,900 --> 01:07:30,860 >> DAVIDマラン:それは右、どこかに行く? 1445 01:07:30,860 --> 01:07:32,720 これは、いくつかの宛先URLに移動します。 1446 01:07:32,720 --> 01:07:34,120 しかし、私はそれがここで起こることを望んでいない。 1447 01:07:34,120 --> 01:07:37,620 私は私のWebページが完全になりたい 一度あなたがしているGmailの、のような動的 1448 01:07:37,620 --> 01:07:38,650 そこに、あなたはそこに滞在。 1449 01:07:38,650 --> 01:07:42,900 URLは、そのように変更されません ページ全体がリロードされていることを示します。 1450 01:07:42,900 --> 01:07:46,680 むしろ、私はちょうど何かを変更したい 何かをプリントアウトするような 1451 01:07:46,680 --> 01:07:48,320 ここで画面上に。 1452 01:07:48,320 --> 01:07:49,630 >> さて私は、これを整理してみましょう 少しアップ。 1453 01:07:49,630 --> 01:07:55,370 私がいないDOM-0を開いてみましょうが、 私は、DOM-2を開いてみましょう。 1454 01:07:55,370 --> 01:07:57,350 ちょうどので、あなたはここでいくつかの構文を見てきました。 1455 01:07:57,350 --> 01:08:02,080 >> それは、私たちはちょうどことが判明 生のJavaScriptを使用していなかった。 1456 01:08:02,080 --> 01:08:04,420 だから、これは本当に言語です JavaScriptを。 1457 01:08:04,420 --> 01:08:07,340 皆さんの中には知っているかもしれません jQueryのと呼ばれるライブラリ。 1458 01:08:07,340 --> 01:08:09,980 >> だから、jQueryは同じではありません JavaScriptなどの事。 1459 01:08:09,980 --> 01:08:14,110 それは本当にスマートなだけで、ライブラリの 男が書いたと普及など 1460 01:08:14,110 --> 01:08:18,100 現在、世界でそのほとんどの人 JavaScriptを使用する場合は、jQueryを使用しています。 1461 01:08:18,100 --> 01:08:20,890 そして、それ、正直、一見 もう少し不可解に見える。 1462 01:08:20,890 --> 01:08:24,990 しかし、あなたはあなたが行く場合は特に、見つけることができます そこにウェブを使って最終的なプロジェクトのために 1463 01:08:24,990 --> 01:08:29,029 開発には、見つけることができ、この 物事をクリーンアップし、あなたにはかなり節約できます 1464 01:08:29,029 --> 01:08:30,229 数行のコード。 1465 01:08:30,229 --> 01:08:33,189 >> それでは、どのようにちょうど一目みましょう このフォームは機能しています。 1466 01:08:33,189 --> 01:08:35,664 私は明らかに何を削除したのに気付く 私のHTMLから? 1467 01:08:35,664 --> 01:08:38,240 1468 01:08:38,240 --> 01:08:40,630 何にハンドラを提出ありません いわば。 1469 01:08:40,630 --> 01:08:41,470 に属性はありません。 1470 01:08:41,470 --> 01:08:43,359 あなたが知っているので、どのような 私は本当に好きではなかった? 1471 01:08:43,359 --> 01:08:45,640 私たちは落ちていたような気がした そこに古い習慣に。 1472 01:08:45,640 --> 01:08:49,340 それはずさんな感じ始めたのと同じように 両方のCSSを混在して 1473 01:08:49,340 --> 01:08:52,149 HTMLには、種類の投げているので すべての上の異なる言語 1474 01:08:52,149 --> 01:08:56,180 場所、同様にこれを感じ始めた ダウンする悪路のような場所 1475 01:08:56,180 --> 01:09:01,069 私は自分の中のJavaScriptコードを入れている HTMLではなく、それを因数分解。 1476 01:09:01,069 --> 01:09:02,279 >> だから、ここでの教訓だ。 1477 01:09:02,279 --> 01:09:05,080 DOM-2.htmlでは、私はそれを考慮にいます。 1478 01:09:05,080 --> 01:09:07,399 そして、私は少しのことをやっている 違った。 1479 01:09:07,399 --> 01:09:09,630 今のところ、私は私の手を振るつもりだ これは本当に何をするかで、 1480 01:09:09,630 --> 01:09:10,590 ボンネットの下に。 1481 01:09:10,590 --> 01:09:14,210 しかし、単に今のと仮定し、その第一 このライブラリのコード行 1482 01:09:14,210 --> 01:09:18,170 jQueryは単に意味呼び出されたとき マニュアルでは、次の操作を行い、準備ができています。 1483 01:09:18,170 --> 01:09:20,080 >> Webページが取ることができるので、 ロードするためのいくつかの時間。 1484 01:09:20,080 --> 01:09:23,029 あなたが遅いインターネット上にあるかもしれません 接続、およびそれが紡糸され得る 1485 01:09:23,029 --> 01:09:25,290 紡績、そして最終的にそれがロードされる。 1486 01:09:25,290 --> 01:09:29,060 コー​​ド行はちょうどまで待つと言う ページ全体では、文書準備ができている 1487 01:09:29,060 --> 01:09:31,189 このコードを実行する前に、準備ができています。 1488 01:09:31,189 --> 01:09:34,390 >> そして今、これはおそらく気付く 最初に最も有用 1489 01:09:34,390 --> 01:09:36,189 jQueryのから奪う。 1490 01:09:36,189 --> 01:09:42,140 ここでこの行は、精神で非常によく似ています ここにこれだけの長いラインに。 1491 01:09:42,140 --> 01:09:46,920 生のJavaScriptコードでは、そこのに対し、 そのドキュメントグローバルオブジェクトが存在する 1492 01:09:46,920 --> 01:09:50,460 )getElementByIdを(と呼ばれる機能を有しており、 書いた人 1493 01:09:50,460 --> 01:09:55,720 jQueryは単に言ってそれを簡素化 ドル記号、およびその後の内部 1494 01:09:55,720 --> 01:10:00,250 括弧は、2つの引用符を入れて、 続いハッシュ記号を入れる 1495 01:10:00,250 --> 01:10:02,250 あなたがつかむことを望むユニークなID。 1496 01:10:02,250 --> 01:10:06,170 だから、これは同等です のdocument.getElementById。 1497 01:10:06,170 --> 01:10:11,090 >> 一方、。ちょうど意味提出 あなたがしているどのような形での提出 1498 01:10:11,090 --> 01:10:14,240 左側を参照して、行く 先にこれを実行します。 1499 01:10:14,240 --> 01:10:16,600 しかし、これはあまりにも今好奇心です。 1500 01:10:16,600 --> 01:10:19,560 どのようなことについて奇妙なことだ 私はここで強調してきた? 1501 01:10:19,560 --> 01:10:23,840 1502 01:10:23,840 --> 01:10:28,594 だけでなく、それは一種の構文的である 新しい、不足しているものもあります。 1503 01:10:28,594 --> 01:10:29,558 >> 観客:それは、単に関数と呼ばれています? 1504 01:10:29,558 --> 01:10:31,970 これは、アラートと呼ばれないのか? 1505 01:10:31,970 --> 01:10:32,440 >> DAVIDマラン:うん。 1506 01:10:32,440 --> 01:10:35,450 さて、そのように警告()が停止しています ここで、公正に。 1507 01:10:35,450 --> 01:10:39,520 しかし、の言及はありません あなたが知っているように、名前、fooや 1508 01:10:39,520 --> 01:10:40,980 何かここまで。 1509 01:10:40,980 --> 01:10:43,830 実際、これが特徴の一つである かなりのJavaScriptの 1510 01:10:43,830 --> 01:10:45,370 パワフルなだけでなく、全く新しい。 1511 01:10:45,370 --> 01:10:47,460 とPHPは実際にも、これを持っています。 1512 01:10:47,460 --> 01:10:49,500 >> 私が先に行くとやってみましょう 実際に素早く何か。 1513 01:10:49,500 --> 01:10:52,030 私が先に行くと、ここで、これを出してみましょう。 1514 01:10:52,030 --> 01:10:52,600 私はこれをやってみましょう。 1515 01:10:52,600 --> 01:10:53,690 機能。 1516 01:10:53,690 --> 01:10:56,455 の()がこのハンドラを呼びましょう。 1517 01:10:56,455 --> 01:10:58,290 いわばハンドラ関数。 1518 01:10:58,290 --> 01:11:00,110 いくつかの操作を処理した何か。 1519 01:11:00,110 --> 01:11:02,700 私のインデントをきれいにしましょう​​。 1520 01:11:02,700 --> 01:11:04,380 そして、ここにこれを置く。 1521 01:11:04,380 --> 01:11:06,090 そして、ここにそれを置く。 1522 01:11:06,090 --> 01:11:06,470 うん。 1523 01:11:06,470 --> 01:11:07,060 OK。 1524 01:11:07,060 --> 01:11:10,300 >> だから今、私はと呼ばれる機能を持っている 私は本当にわからないハンドラ() 1525 01:11:10,300 --> 01:11:10,890 それは、まだ何をするか。 1526 01:11:10,890 --> 01:11:12,710 それだけで、まだそのようなものを持っています。 1527 01:11:12,710 --> 01:11:13,900 おっと。 1528 01:11:13,900 --> 01:11:15,820 あまりにも多くなった。 1529 01:11:15,820 --> 01:11:18,490 それでは、これをやってみましょう。 1530 01:11:18,490 --> 01:11:18,990 わかりました。 1531 01:11:18,990 --> 01:11:20,240 申し訳ありません。 1532 01:11:20,240 --> 01:11:23,140 1533 01:11:23,140 --> 01:11:23,690 わかりました。 1534 01:11:23,690 --> 01:11:24,720 私はこれをやってみましょう。 1535 01:11:24,720 --> 01:11:25,020 OK。 1536 01:11:25,020 --> 01:11:27,040 それは素晴らしく、まっすぐに見える 今転送します。 1537 01:11:27,040 --> 01:11:29,090 私はこれをやってみましょう。 1538 01:11:29,090 --> 01:11:29,860 これを行う。 1539 01:11:29,860 --> 01:11:30,950 そして[OK]をクリックします。 1540 01:11:30,950 --> 01:11:33,080 だから今、のはこっちこれを入れてみましょう。 1541 01:11:33,080 --> 01:11:35,840 1542 01:11:35,840 --> 01:11:37,270 その場でこれ以上のプログラミング。 1543 01:11:37,270 --> 01:11:37,900 OK。 1544 01:11:37,900 --> 01:11:40,000 >> だから今、のはに戻りましょう ここで物語は始まった。 1545 01:11:40,000 --> 01:11:43,530 以前、私が言ったことを、ここでこの行 文書が準備ができたとき、移動手段 1546 01:11:43,530 --> 01:11:44,380 先にこれを行う。 1547 01:11:44,380 --> 01:11:45,660 私は何をしたいのですか? 1548 01:11:45,660 --> 01:11:49,070 さて具体的には、私が行ってみたい 先にし、次の操作を行います。 1549 01:11:49,070 --> 01:11:53,700 次のコード行を実行し、 私はあなたがしたいことは、これを呼び出すことである 1550 01:11:53,700 --> 01:11:56,370 フォームが送信される機能。 1551 01:11:56,370 --> 01:11:57,730 >> さて、これは面白いものです。 1552 01:11:57,730 --> 01:11:59,170 これは、関数そのものではありません。 1553 01:11:59,170 --> 01:12:02,540 私は括弧を入れておりません注意してください ここに通常の方法で。 1554 01:12:02,540 --> 01:12:06,800 私は、文字通りという関数を渡している 別の関数にハンドラ() 1555 01:12:06,800 --> 01:12:10,800 として引数として()を提出呼ばれる それは変数のようなものだけど。 1556 01:12:10,800 --> 01:12:14,290 これは、特徴の一つである JavaScriptを、自身が機能的です 1557 01:12:14,290 --> 01:12:15,710 本当にただのオブジェクトである。 1558 01:12:15,710 --> 01:12:18,350 実際に、彼らは実際には単なるだ ある種の変数。 1559 01:12:18,350 --> 01:12:21,340 AND関数の名前である場合 ハンドラは()、私はできません理由はありません 1560 01:12:21,340 --> 01:12:23,390 ここに引数として渡します。 1561 01:12:23,390 --> 01:12:27,530 そして、これはときに、フォームを意味 デモのIDがあると 1562 01:12:27,530 --> 01:12:29,320 提出され、この関数を呼び出します。 1563 01:12:29,320 --> 01:12:32,770 >> しかし、今、私はこのすべてを元に戻す場合は、 なぜ、私はおそらくしましたか 1564 01:12:32,770 --> 01:12:34,850 この瞬間前? 1565 01:12:34,850 --> 01:12:36,840 まあ、これは無名関数です。 1566 01:12:36,840 --> 01:12:41,080 率直に言っているので私は、なぜ、私が実現 宣言時間を無駄に悩ま 1567 01:12:41,080 --> 01:12:45,540 ハンドラーと呼ばれる関数()のみの通話に それ1つだけの場所で? 1568 01:12:45,540 --> 01:12:48,640 私は名前を必要としない、と私はしないと 複数の場所にそれを呼び出す必要があり、 1569 01:12:48,640 --> 01:12:51,200 ちょうど機能を実装してみましょう 私はそれを必要と右の場所。 1570 01:12:51,200 --> 01:12:55,190 そしてそうJavaScriptとPHPは何をサポート 匿名関数と呼ばれていること 1571 01:12:55,190 --> 01:12:57,900 私は正確にここで行うことができます。 1572 01:12:57,900 --> 01:12:59,570 >> しかし、我々は単に表面を傷つけています。 1573 01:12:59,570 --> 01:13:02,430 ちょうどカップルといじめるみよう ここで最終的な例。 1574 01:13:02,430 --> 01:13:04,600 >> 私はquote.phpに進みます。 1575 01:13:04,600 --> 01:13:07,160 1576 01:13:07,160 --> 01:13:11,870 これは実際に、PHPであることに注意してください 私が書いたことを、関数、PHPプログラム、 1577 01:13:11,870 --> 01:13:15,270 それは期待してと呼ばれるHTTPパラメータ シンボル、と私は渡すことができます 1578 01:13:15,270 --> 01:13:16,730 FBのような値。 1579 01:13:16,730 --> 01:13:20,010 そして、我々は実際にソースを見れば コー​​ドは、これはフリーのウェブサイトを照会している 1580 01:13:20,010 --> 01:13:23,680 ただ、P-セットのように、ヤフーファイナンスと呼ばれる 7、そしてそれは私に戻ってだ 1581 01:13:23,680 --> 01:13:26,580 明らかに何か 既知のフォーマットは、JSONです - 1582 01:13:26,580 --> 01:13:28,010 JavaScriptのオブジェクト表記法。 1583 01:13:28,010 --> 01:13:28,810 それはちょうどオブジェクトです。 1584 01:13:28,810 --> 01:13:32,500 中括弧に注意して、引用符、 コロン、コンマ。 1585 01:13:32,500 --> 01:13:34,720 >> 今なお、これはかなりクールです。 1586 01:13:34,720 --> 01:13:38,520 私はおそらく、プログラミングを使用することができますので、 URLを生成するための言語 1587 01:13:38,520 --> 01:13:40,370 つまり、動的に次のようになり、 右か? 1588 01:13:40,370 --> 01:13:43,340 私は、Googleにこれを変更することができます Googleのを取り戻す 1589 01:13:43,340 --> 01:13:47,930 $ 1,017.55の株価。 1590 01:13:47,930 --> 01:13:49,640 だから我々は今、このを使用できない場合を見てみましょう。 1591 01:13:49,640 --> 01:13:56,590 >> 私は、ここでは、AJAX-0に行こうした 次のようになります。 1592 01:13:56,590 --> 01:13:59,750 それはちょうど持って、ウェブサイトの ボタンを持つフォーム。 1593 01:13:59,750 --> 01:14:05,860 ここで私が先に行くとYHOOに入力してみましょう Yahooの銘柄記号のために、取得]をクリックします 1594 01:14:05,860 --> 01:14:10,530 株価、そして今、私が得ているに気づく 32.86と警告。 1595 01:14:10,530 --> 01:14:14,050 >> 私が実際に手の込んだバージョンに行こう このページ、バージョン2、および 1596 01:14:14,050 --> 01:14:17,530 それではマイクロソフト、MSFT言わせ入力します。 1597 01:14:17,530 --> 01:14:18,410 取得する 1598 01:14:18,410 --> 01:14:19,850 そして今、何の警告に気付かない。 1599 01:14:19,850 --> 01:14:22,770 それが価格を言うところに注目してください 決定されますか? 1600 01:14:22,770 --> 01:14:27,060 例の最も簡単なものがあることを 何Gchat、とFacebookのヒント 1601 01:14:27,060 --> 01:14:30,070 チャット、Gmailの、および他のそのような ウェブサイトは、実際にでやっている 1602 01:14:30,070 --> 01:14:31,290 ウェブページを変更する。 1603 01:14:31,290 --> 01:14:31,800 >> これに注目してください。 1604 01:14:31,800 --> 01:14:33,120 私はページをリロードしてみましょう。 1605 01:14:33,120 --> 01:14:35,080 私はChromeのインスペクタを開いてみましょう。 1606 01:14:35,080 --> 01:14:36,890 私は要素に行こう ダウンここにタブ。 1607 01:14:36,890 --> 01:14:42,310 今、私がダウンしてここにズームインするとき、気づくと これを開いて、これが私であることに注意してください 1608 01:14:42,310 --> 01:14:44,500 HTML DOM - マイドキュメントオブジェクトモデル。 1609 01:14:44,500 --> 01:14:45,920 これは私のHTMLです。 1610 01:14:45,920 --> 01:14:48,750 しかし、今、それが起こっているのにもかかわらず、注意してください 両方でそれを見るために少しハードであると 1611 01:14:48,750 --> 01:14:52,080 一度場所で、私は、FBを入力すると ここに、一番下を見て 1612 01:14:52,080 --> 01:14:54,110 画面のみ。 1613 01:14:54,110 --> 01:14:57,720 >> これは、実際に変更することだ その場で私のHTML。 1614 01:14:57,720 --> 01:15:01,670 そして、それは非常に単純に、これをやっている このような何かをすることによって。 1615 01:15:01,670 --> 01:15:06,800 私は、AJAX-2を開いた場合、予告実装 できるだけセクシーな何か 1616 01:15:06,800 --> 01:15:09,560 、それはかなり醜いだとしても、その それと同じくらい洗練された 1617 01:15:09,560 --> 01:15:11,910 機能的にはいくつかを持っています 一番下のHTML。 1618 01:15:11,910 --> 01:15:13,810 しかし、私はタグ付けするために使用気づく。 1619 01:15:13,810 --> 01:15:16,640 我々は前にこれを使用していませんでしたが、これはある のような、それは強制するものではありません 1620 01:15:16,640 --> 01:15:17,840 新しい行にすべてのもの。 1621 01:15:17,840 --> 01:15:20,830 それだけで矩形領域を作る 同じ行に、基本的に。 1622 01:15:20,830 --> 01:15:22,870 >> 私はそれを価格のIDを与えていることに注意してください。 1623 01:15:22,870 --> 01:15:26,800 そして、それはそれを用いて判明 JavaScriptのライブラリ、私は機能を持っている 1624 01:15:26,800 --> 01:15:30,440 と呼ばれる引用符()はいつでも呼ばれています フォームが送信されます。 1625 01:15:30,440 --> 01:15:31,800 そして私がやっていることはこれです。 1626 01:15:31,800 --> 01:15:35,730 私はJavaScriptで変数を宣言してい 値を保存し、URLと呼ばれる 1627 01:15:35,730 --> 01:15:38,650 quote.php?記号=。 1628 01:15:38,650 --> 01:15:44,220 言い換えれば、私自身も始めています それからHTTPリクエストを作成し、する 1629 01:15:44,220 --> 01:15:49,250 私はプラスで、その上に連結しています IDを持つ任意の要素 1630 01:15:49,250 --> 01:15:54,190 シンボルの通知があることである、である テキストフ​​ィールドの右下にここに。 1631 01:15:54,190 --> 01:15:56,630 だから我々は、過去にフォームを持っていたよう。 1632 01:15:56,630 --> 01:16:01,450 >> もしあれば、それは、jQueryので判明 valの呼び出しコール。ヴァル()、 1633 01:16:01,450 --> 01:16:05,900 機能、価値関数取得 ユーザは105.83入力した任意の 1634 01:16:05,900 --> 01:16:08,920 して、ネットワーク·トラフィックのすべて つまり、これは起こります。 1635 01:16:08,920 --> 01:16:11,230 $。getJSON。 1636 01:16:11,230 --> 01:16:13,720 >> そして余談として、ドル記号です 単に短縮表記。 1637 01:16:13,720 --> 01:16:16,860 それは本当にjQuery.getJSONだ。 1638 01:16:16,860 --> 01:16:21,520 このURLからJSONに私を取得し、時 要求が戻ってくる、これを呼び出す 1639 01:16:21,520 --> 01:16:26,550 引数として関数を渡すと 何がサーバーから戻ってきた。 1640 01:16:26,550 --> 01:16:31,205 >> だから、他の言葉で、私は戻っている場合に ブラウザ、と私はquote.phpに戻って、 1641 01:16:31,205 --> 01:16:35,590 私のブラウザが取得しているが何をやっている このデータのチャンク。 1642 01:16:35,590 --> 01:16:38,930 そして、私はここでこのWebページに行くとき、 我々はその代わりにネットワークに行けば気付く 1643 01:16:38,930 --> 01:16:43,820 タブを入力し、それをクリアし、 GoogleにとってGOOGのようなものとGet 1644 01:16:43,820 --> 01:16:46,340 見積りは、ページが変更されていない気づく。 1645 01:16:46,340 --> 01:16:50,990 しかし、HTTP要求が行われ、何だったの 私たちが見ればここに戻ってきた 1646 01:16:50,990 --> 01:16:56,130 レスポンスは、JSONの全体の束である 我々は最終的にアクセスしたと 1647 01:16:56,130 --> 01:16:58,070 ここで、このシンプルなライン。 1648 01:16:58,070 --> 01:17:00,150 >> データが得ていたものです サーバから。 1649 01:17:00,150 --> 01:17:02,120 価格の名前です 私が気にキー。 1650 01:17:02,120 --> 01:17:05,230 だからdata.priceは私のことを提供します。 1651 01:17:05,230 --> 01:17:07,540 >> 現在一方、これ 最後の例である。 1652 01:17:07,540 --> 01:17:09,280 あなたは、ページがまだ多くを行うことができます。 1653 01:17:09,280 --> 01:17:12,440 実際に一つの、よく2。 1654 01:17:12,440 --> 01:17:14,780 我々は戻って持って来ることができる タグを、あなたがこれを覚えていれば。 1655 01:17:14,780 --> 01:17:15,850 それはJavaScriptのだ。 1656 01:17:15,850 --> 01:17:17,110 我々はそれを行うことができます。 1657 01:17:17,110 --> 01:17:17,690 非常にエキサイティング。 1658 01:17:17,690 --> 01:17:18,800 私たちは、クリフハンガーとしてそれを残しておきます。 1659 01:17:18,800 --> 01:17:21,590 >> しかし、もっとエキサイティングな、することができます このようなことを行う。 1660 01:17:21,590 --> 01:17:25,940 私は、地理位置情報-1に行くなら、それは判明 Chromeは我々がいることを知っている 1661 01:17:25,940 --> 01:17:30,672 緯度経度42.37。-71.10。 1662 01:17:30,672 --> 01:17:32,940 だから、さらにそこだ あなたの処分で。 1663 01:17:32,940 --> 01:17:34,290 その次の週ではなく、もっと。 1664 01:17:34,290 --> 01:17:35,540 また月曜日にね。 1665 01:17:35,540 --> 01:17:37,558