1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [8週目は、続く] 2 00:00:02,000 --> 00:00:04,000 [デビッド·J·マラン] [ハーバード大学] 3 00:00:04,000 --> 00:00:08,000 [これはCS50です。] [CS50.TV] 4 00:00:08,000 --> 00:00:13,000 >> これはCS50であるので、これはここに8週目の終わりです。 5 00:00:13,000 --> 00:00:16,000 もちろん我々は、今週初めにハリケーンのビットを持っていた 6 00:00:16,000 --> 00:00:19,000 だから今は、この講義室では本当にあなたと私ですが、 7 00:00:19,000 --> 00:00:22,000 しかし、今日我々は、PHPについての私達の会話を続ける 8 00:00:22,000 --> 00:00:25,000 やWebプログラミングに関するより一般的に、我々はまた、アイデアをご紹介 9 00:00:25,000 --> 00:00:29,000 特にデータベース、このごろかなり普及しているMySQLのと呼ばれるもの、の 10 00:00:29,000 --> 00:00:34,000 なぜなら、そのスケーラビリティだけでなく、そのはフリーでオープンソースであるため、大部分インチ 11 00:00:34,000 --> 00:00:37,000 >> しかし、最初に、我々は前回中断したところを見てみ。 12 00:00:37,000 --> 00:00:40,000 、我々はいくつかの新入生IMSの例を見ていたことを思い出してください 13 00:00:40,000 --> 00:00:44,000 そして、これは私が約15年以上前に思い付いたことを恐ろしい形だった 14 00:00:44,000 --> 00:00:49,000 新入生学内スポーツのためのキャンパス·レジスタの学生を持っているために、 15 00:00:49,000 --> 00:00:52,000 実際にウィグルスワースにヤードを越えもはやトレッキングにせずに 16 00:00:52,000 --> 00:00:56,000 いくつかの試験監督官のドアの下に用紙の物理ピースをスライドさせます。 17 00:00:56,000 --> 00:00:59,000 代わりに、私たちはオンラインですべてのものを移動したが、我々が利用するために必要なことを行うには 18 00:00:59,000 --> 00:01:03,000 いくつかの技術のため、1、私たちは、HTML、ハイパーテキストマークアップ言語を、必要に応じて 19 00:01:03,000 --> 00:01:07,000 それは再びあなたが構造的にWebページを構成していると、このマークアップ言語です。 20 00:01:07,000 --> 00:01:10,000 >> カスケーディングスタイルシート、これらの日CSSのビットを使用して、 21 00:01:10,000 --> 00:01:16,000 我々はわずかに異なる構文を使用して、Webページのstylizationsを使用することにより、 22 00:01:16,000 --> 00:01:19,000 HTMLのに対し、その構造についてのすべてだった。 23 00:01:19,000 --> 00:01:21,000 我々はまた、Webプログラミング言語を導入する必要があります。 24 00:01:21,000 --> 00:01:25,000 この場合において、我々はPHPを使用しますと、PHPは私達を許可するように起こっている 25 00:01:25,000 --> 00:01:28,000 動的にコンテンツを出力するには、だけでなく、同​​じようにプログラム的なことを行う 26 00:01:28,000 --> 00:01:33,000 電子メールを送信する、など我々は先週のノート上のケースだった。 27 00:01:33,000 --> 00:01:35,000 >> このためのコードは2つの部分にあったことを思い出してください。 28 00:01:35,000 --> 00:01:38,000 一、私たちはfroshims3.phpを持っていた、 29 00:01:38,000 --> 00:01:42,000 これは主として、それの内部のHTMLフォームをマークアップであった、 30 00:01:42,000 --> 00:01:45,000 style属性でここまでのCSSをほんの少し 31 00:01:45,000 --> 00:01:48,000 フォーム自体は、ページ上のが、それを越えて中心となるように 32 00:01:48,000 --> 00:01:51,000 我々はいくつかの代表的なフォーム入力テキストフ​​ィールド、チェックボックスをオンにし、持っていた 33 00:01:51,000 --> 00:01:55,000 いくつかのラジオボタン、セレクトメニュー、submitボタン。 34 00:01:55,000 --> 00:02:01,000 そして、このフォームを使用して、我々は、明らかにregister3.phpと呼ばれていたファイルに提出 35 00:02:01,000 --> 00:02:04,000 それ自体は、このような少し何かを見た。 36 00:02:04,000 --> 00:02:08,000 さて、register3.php、リコール、内のコードのほとんどは、メールに関するすべてだった。 37 00:02:08,000 --> 00:02:11,000 それは確認するために提出されたフォームのバリデーションを少しやった 38 00:02:11,000 --> 00:02:14,000 フィールドが実際に期待されていたが提供されていること。 39 00:02:14,000 --> 00:02:18,000 その後、我々は、少し新しい構文を使用して、いくつかのPHP関数と呼ばれる 40 00:02:18,000 --> 00:02:20,000 それがCから借りているにもかかわらず、 41 00:02:20,000 --> 00:02:24,000 >> この矢印演算子は、私たちは、オブジェクト指向プログラミングと呼ばれるものを利用することができます。 42 00:02:24,000 --> 00:02:27,000 我々はここでは詳細に入ることが、今のところわかりません 43 00:02:27,000 --> 00:02:31,000 それは、オブジェクトに関連付けられた機能を持っていることの方法だ 44 00:02:31,000 --> 00:02:34,000 我々はCで見たように、これは、構造の特殊なタイプです 45 00:02:34,000 --> 00:02:37,000 しかし、今のところ、ちょうどこれは、使用するための正しい構文であるという信仰を取る 46 00:02:37,000 --> 00:02:41,000 このphpmailerのライブラリのようなライブラリを使用する場合。 47 00:02:41,000 --> 00:02:44,000 そして、このファイルの終わりまでに、我々は動的に電子メールを生成した 48 00:02:44,000 --> 00:02:47,000 私jharvard@cs50.netアカウントに送信されてしまっている 49 00:02:47,000 --> 00:02:50,000 私jharvard@cs50.netアカウントから、 50 00:02:50,000 --> 00:02:54,000 そして我々は彼らがこのスポーツのために登録されていたことに応じてユーザーに通知した。 51 00:02:54,000 --> 00:02:57,000 それは一年生のIMSサイトはすべてのそれらの年前にやったことはかなりある 52 00:02:57,000 --> 00:03:00,000 私はそれを実装した場合、付与されて、別の言語で、 53 00:03:00,000 --> 00:03:02,000 しかし、それはおそらくあなたが持っているパワーをあなたに示している 54 00:03:02,000 --> 00:03:05,000 今、あなただけではなく、プログラムで自分を表現することができること 55 00:03:05,000 --> 00:03:08,000 Cのような言語の低レベルではなく、はるかに高いレベルで 56 00:03:08,000 --> 00:03:11,000 実際に解決するために、電子メールのような、これらの非常に現実世界のアプリケーションと 57 00:03:11,000 --> 00:03:13,000 いくつかの現実世界の問題。 58 00:03:13,000 --> 00:03:16,000 >> さて、もちろん、私はこのスクリプトは一部を生成するために使用する場合でも 59 00:03:16,000 --> 00:03:20,000 確かにアカウントですjharvard@cs50.netから動的に電子メール 60 00:03:20,000 --> 00:03:23,000 私はへのアクセス権を持っていることを、送信するには非常に注意が必要です 61 00:03:23,000 --> 00:03:26,000 だけ実際にあなた自身のあるアカウントからのメール、 62 00:03:26,000 --> 00:03:30,000 物事ないように生活の中でお湯のビットであなたを得る。 63 00:03:30,000 --> 00:03:35,000 ということで、まったく別の問題を解決するための移行今してみましょう、 64 00:03:35,000 --> 00:03:37,000 保持状態のこと。 65 00:03:37,000 --> 00:03:39,000 さて、これが実際に何を意味するのか? 66 00:03:39,000 --> 00:03:42,000 HTTP、このハイパーテキスト転送プロトコル、 67 00:03:42,000 --> 00:03:45,000 実際にステートレスなプロトコルであり、この手段があることは何ですか 68 00:03:45,000 --> 00:03:48,000 あなたはGoogle.comのようなものをアップしてからエンターキーを押したとき 69 00:03:48,000 --> 00:03:51,000 通常お使いのブラウザはその次に紡績アイコンのいくつかの種類を持っている 70 00:03:51,000 --> 00:03:54,000 いくつかのWebページでの結果は、ダウンロードされる 71 00:03:54,000 --> 00:03:57,000 そして、その小さなアイコンの回転が止まり、実際に示唆している 72 00:03:57,000 --> 00:04:02,000 HTTPは、サーバへの接続のいくつかの種類を完了したし、それはそれだと。 73 00:04:02,000 --> 00:04:05,000 HTTPは、それを維持しないという意味でステートレスです 74 00:04:05,000 --> 00:04:08,000 スカイプと同じ方法でサーバーへの持続的接続 75 00:04:08,000 --> 00:04:11,000 またはGchatは、HTTPで行いますので、 76 00:04:11,000 --> 00:04:15,000 仮定は、一度それのWebページをフェッチしていることです。 77 00:04:15,000 --> 00:04:18,000 >> さて、FacebookやGoogleマップなどのサイト上で、現実には、これらの日 78 00:04:18,000 --> 00:04:21,000 やTwitterなどは、より多くの活力はありせ 79 00:04:21,000 --> 00:04:25,000 そのアイコンの回転が停止した後も、あなたは、実際に複数の更新プログラムを取得することができます 80 00:04:25,000 --> 00:04:29,000 サーバー、もっとツイート、Facebook上でそれ以上のステータスアップデートなどから。 81 00:04:29,000 --> 00:04:33,000 しかし、我々は2週間で約話そうという技法を用いていること 82 00:04:33,000 --> 00:04:36,000 AjaxはJavaScriptのと呼ばれる言語を使用しているものとして知られている、 83 00:04:36,000 --> 00:04:38,000 しかし、一日の終わりに、HTTPは依然としてステートレスです。 84 00:04:38,000 --> 00:04:42,000 そしてまだあなたが何らかの形でユーザーについてのことを覚えておきたい場合 85 00:04:42,000 --> 00:04:44,000 彼らはあなたのサーバーから切断した後でも 86 00:04:44,000 --> 00:04:47,000 PHPは、あなたにこれを行う手段を余裕ない 87 00:04:47,000 --> 00:04:52,000 我々は前回見たように、PHPは、スーパーグローバルの数を持っています、ので、 88 00:04:52,000 --> 00:04:55,000 スーパーグローバル変数とは、再度、特別なグローバル変数である 89 00:04:55,000 --> 00:04:59,000 それは、WebサーバとPHP自体があなたに手渡されている。 90 00:04:59,000 --> 00:05:02,000 >> あなたはそれに値を置くために何もする必要はありません 91 00:05:02,000 --> 00:05:05,000 我々はこれまで見てきたスーパーグローバルのうち、GETとPOSTです 92 00:05:05,000 --> 00:05:08,000 フォーム·フィールドがあなたのために自動的に置かれている場所である、 93 00:05:08,000 --> 00:05:11,000 同様に、我々はまだ見ていない他のカップル。 94 00:05:11,000 --> 00:05:17,000 $ _SERVERの内側には、サーバー自体に関連するいくつかの特別な変数です。 95 00:05:17,000 --> 00:05:22,000 プロトコルは、HTTPまたはHTTPSを使用すると、使用していたのか何のIPアドレスは、何ですか 96 00:05:22,000 --> 00:05:25,000 、どのようなリクエストメソッドを使用およびのようなので、いくつかの興味深いのはそこでした 97 00:05:25,000 --> 00:05:29,000 ジューシーなサーバーに関する詳細、および実際には、そこでのユーザーだけでなく。 98 00:05:29,000 --> 00:05:33,000 これらの事はクッキーが保存されていると呼ばれて$ _COOKIEは、ありません。 99 00:05:33,000 --> 00:05:36,000 我々は、今日のクッキー上で自分自身を時間をかけません 100 00:05:36,000 --> 00:05:40,000 しかしクッキーは単なる情報の小片であることを今のところ知っている 101 00:05:40,000 --> 00:05:43,000 Webサーバーは、Webブラウザ上に植えることができます 102 00:05:43,000 --> 00:05:46,000 とでそのRAMまたはそのコンピュータのハードドライブを回す 103 00:05:46,000 --> 00:05:49,000 例えば、自分のユーザー名をユーザーに関する情報を保存する 104 00:05:49,000 --> 00:05:52,000 彼らはそれを入力するたびにログインした時間またはいくつかを持っていないので 105 00:05:52,000 --> 00:05:55,000 そのユーザー固有の番号またはID 106 00:05:55,000 --> 00:05:58,000 あなたはについての質問の同じ種類とそれらをせがむする必要がないように 107 00:05:58,000 --> 00:06:00,000 将来的には好みですが、興味のある最も 108 00:06:00,000 --> 00:06:02,000 今は$ _SESSIONです。 109 00:06:02,000 --> 00:06:07,000 >> 他の人のように、PHPが自動的に渡され、このスーパーグローバル変数 110 00:06:07,000 --> 00:06:10,000 あなたは、PHPベースのWebサイトを書いているときに 111 00:06:10,000 --> 00:06:13,000 あなたが欲しいもの、文字列、整数を格納することができます 112 00:06:13,000 --> 00:06:16,000 浮動小数点、値、配列、オブジェクト、 113 00:06:16,000 --> 00:06:20,000 本当に、好きなもの、それはあなたがそのような方法でそれを保存することができます 114 00:06:20,000 --> 00:06:23,000 ユーザーが今してあなたを訪れても、その 115 00:06:23,000 --> 00:06:26,000 分は、今か今から5分のために戻ってくるから 116 00:06:26,000 --> 00:06:28,000 彼らは他のいくつかのリンクをクリックする前に自分の時間を取る 117 00:06:28,000 --> 00:06:32,000 PHPは、そのセッションのスーパーグローバル変数に入れてどんなことを保証します 118 00:06:32,000 --> 00:06:37,000 分または5分前にまだそこにユーザが戻ってくるときになるでしょう。 119 00:06:37,000 --> 00:06:40,000 とフードの下には、このスーパーグローバルを介して実装されています 120 00:06:40,000 --> 00:06:44,000 それらのものは、クッキーと呼ばれるが、今のところ、それだけで抽象化だ 121 00:06:44,000 --> 00:06:47,000 それによって、それは、ショッピングカートのプログラムと等価なものだ。 122 00:06:47,000 --> 00:06:50,000 何でも、それに入れプログラマ、 123 00:06:50,000 --> 00:06:53,000 スーパーグローバル連想配列がある分後のいくつかの数になるでしょう 124 00:06:53,000 --> 00:06:59,000 あなたはそれを削除するまで、またはユーザーが完全に彼または彼女のブラウザを終了するまで。 125 00:06:59,000 --> 00:07:02,000 >> のは、このことが実際に使用される方法の例を見てみましょう。 126 00:07:02,000 --> 00:07:07,000 コー​​ドの今日の作品のうち、counter.phpで 127 00:07:07,000 --> 00:07:09,000 我々は、次の行を持っている。 128 00:07:09,000 --> 00:07:13,000 このファイルの先頭に、我々は今のつまらない青コメントの束を持っている。 129 00:07:13,000 --> 00:07:15,000 しかし、13行目で我々は、新しい行を持っている 130 00:07:15,000 --> 00:07:18,000 にsession_start、それは実際にそれが言う正確に行います。 131 00:07:18,000 --> 00:07:20,000 これは、セッションを開始します。 132 00:07:20,000 --> 00:07:25,000 それは大きなスーパーグローバル$ _SESSIONを使用することができ、それはそれと同じくらい簡単です。 133 00:07:25,000 --> 00:07:30,000 我々は16行目を見て進みさて、もし、このウェブページは何をするつもりなのかを理解しようとしてみましょう。 134 00:07:30,000 --> 00:07:35,000 (どうかの判断($ _SESSION ["カウンター"])その後、先に行く 135 00:07:35,000 --> 00:07:39,000 カウンタ変数は、小文字のカウンターで、店舗、 136 00:07:39,000 --> 00:07:42,000 $ _SESSION ["カウンター"]。 137 00:07:42,000 --> 00:07:45,000 これは、カウンタと呼ばれるローカル変数を宣言しているように見える 138 00:07:45,000 --> 00:07:48,000 それは、スーパーグローバルの内部にある何のコピーを入れている内部が 139 00:07:48,000 --> 00:07:52,000 場所でのセッションと呼ばれる "カウンター"。 140 00:07:52,000 --> 00:07:56,000 そうでなければ、明らかに、この小さなローカル変数カウンタは、0に初期化されます。 141 00:07:56,000 --> 00:08:01,000 >> しかし、その後の数行後26予告でそのカウンタのセッションのコピー、 142 00:08:01,000 --> 00:08:06,000 その鍵は、その現在の値に1を加えている割り当てられた新しい値を持っています。 143 00:08:06,000 --> 00:08:09,000 要するに、このファイルには、更新しているように見える 144 00:08:09,000 --> 00:08:13,000 セッションスーパーグローバルの内部に格納されているカウンタ 145 00:08:13,000 --> 00:08:16,000 1で、それを増やすことによって、それは、最初に以前の値のコピーを保持し 146 00:08:16,000 --> 00:08:20,000 ローカル変数に格納することにより、$カウンタと呼ばれる 147 00:08:20,000 --> 00:08:22,000 その後ダウンしてここに残っているのか見てみましょう。 148 00:08:22,000 --> 00:08:24,000 それはかなりちょうどHTMLだと判明。 149 00:08:24,000 --> 00:08:29,000 このページの一番下に、我々は、私がこのサイトを訪れていることを37行目に表示 150 00:08:29,000 --> 00:08:33,000 回数カウンタ番号、カップルの興味深い機能がここにありそう。 151 00:08:33,000 --> 00:08:36,000 一つは、これは明らかに可変であるが、それだけで置くために十分ではありません 152 00:08:36,000 --> 00:08:39,000 あなたのHTMLのため、もちろんボディの$カウンター 153 00:08:39,000 --> 00:08:43,000 それはあなたのHTML、PHPの間だけあったらちょうどHTMLだと仮定しようとしている。 154 00:08:43,000 --> 00:08:48,000 あなたは文字通り、画面上に出力されるカウンタ$を求めています。 155 00:08:48,000 --> 00:08:51,000 >> しかし、その代わりにPHPモードにドロップすることで、 156 00:08:51,000 --> 00:08:55,000 構文のこの作品で我々は、動的にここに値を挿入することができます 157 00:08:55,000 --> 00:08:58,000 我々は前回やったことと基本的に変わるところは非常によく似 158 00:08:58,000 --> 00:09:00,000 文字列に値を挿入する。 159 00:09:00,000 --> 00:09:04,000 実際には、これは、文字通りこのような何かを言うための簡単​​な表記法である 160 00:09:04,000 --> 00:09:12,000 プリント(カウンタ$)または偶数のprintf(%sは、カウンタ)のようなもの、 161 00:09:12,000 --> 00:09:14,000 あるいは、あなたがオンラインまたは教科書で見たことがあるかもしれないので、 162 00:09:14,000 --> 00:09:17,000 エコーと呼ばれるPHPの関数があり 163 00:09:17,000 --> 00:09:20,000 これは同じことをやって、それらのすべては、ちょうど長いったらしい方法です 164 00:09:20,000 --> 00:09:25,000 というのは<?=。 165 00:09:25,000 --> 00:09:28,000 この1ケースでは、配置する必要はありません 166 00:09:28,000 --> 00:09:30,000 疑問符の後に単語のPHP。 167 00:09:30,000 --> 00:09:34,000 これは、我々はちょっと前に見たものを、再び、の簡略表記である 168 00:09:34,000 --> 00:09:37,000 これは、いくつかの値をエコーされています。 169 00:09:37,000 --> 00:09:39,000 >> これの最終的な結果が実際に何であるか見てみましょう。 170 00:09:39,000 --> 00:09:43,000 、私たちのcounter.phpファイルに渡って行こう 171 00:09:43,000 --> 00:09:47,000 そして我々はデビッドはただそこにコードを使用して再生することにより、ミスを犯したことがわかります。 172 00:09:47,000 --> 00:09:50,000 彼がしくじっどんな修正を手放すの、 173 00:09:50,000 --> 00:09:54,000 とエラーが37行で、そこに行っているようだ。 174 00:09:54,000 --> 00:09:59,000 このページのトップによると、私はこのサイトを0回訪問しています。 175 00:09:59,000 --> 00:10:02,000 さて、今度は、先に行くと、ブラウザの上部にあるをクリックしてみましょう 176 00:10:02,000 --> 00:10:05,000 、アイコンをリロードし、私はリロード]をクリックします 177 00:10:05,000 --> 00:10:12,000 そして今私は、サイト1時間、2、3、4、5、6、7、8を訪れました。 178 00:10:12,000 --> 00:10:16,000 我々はこのページのソースを見てみると確かに、実際のソースコードは、変化している 179 00:10:16,000 --> 00:10:19,000 そして、任意のPHPの完全な欠如に気づく、それがためだ 180 00:10:19,000 --> 00:10:23,000 PHPコードは、サーバー側の評価または解釈され、 181 00:10:23,000 --> 00:10:27,000 と、PHPスクリプトの出力は最終的にブラウザに送信されているものであることを意味するように、 182 00:10:27,000 --> 00:10:31,000 この場合には、いくつかのraw HTMLおよびいくつかの生のテキストはある。 183 00:10:31,000 --> 00:10:33,000 ここで何が起こっているのでしょうか? 184 00:10:33,000 --> 00:10:37,000 >> まあ、比較的少ない行数のコードで私は保存することができるよ 185 00:10:37,000 --> 00:10:40,000 しつこく数秒かけて、または私達は十分な長さ待っていた場合、 186 00:10:40,000 --> 00:10:44,000 数分、数時間、HTTPを作る方法には、いくつかの値 187 00:10:44,000 --> 00:10:47,000 我々が保持したかのように、ステートフルに見える 188 00:10:47,000 --> 00:10:51,000 このサーバへの接続と、それはちょうど私がそれを言った最後の時間を覚えている、 189 00:10:51,000 --> 00:10:55,000 しかし、現実には複雑さの全体の束は、フードの下にそこに起こっているの 190 00:10:55,000 --> 00:10:59,000 PHPは私にこのような錯覚を与えるために有効のクッキーを含む 191 00:10:59,000 --> 00:11:02,000 このショッピングカートのような機能の。 192 00:11:02,000 --> 00:11:05,000 今のところ、我々は単なる整数値を格納している簡単な例を示し、 193 00:11:05,000 --> 00:11:08,000 しかし、その機能は非常に価値があると戻ってくるだろう 194 00:11:08,000 --> 00:11:10,000 我々は、より複雑なプロジェクトについて話し始めるとき 195 00:11:10,000 --> 00:11:12,000 中でも問題は7に設定してください。 196 00:11:12,000 --> 00:11:16,000 これはCS50で設定されたあなたの非常に最後の問題です。 197 00:11:16,000 --> 00:11:19,000 私が知っている、それはとても悲しいことだが、どのようなあなたが見つけることは、私たちが結論になるだろうということです 198 00:11:19,000 --> 00:11:22,000 実際に遷移させることによって学期のこの部分 199 00:11:22,000 --> 00:11:25,000 確かにCのコンテクストからPHPのコンテキストに 200 00:11:25,000 --> 00:11:27,000 しかし、非常に同じ基礎の一部を使用しながら、 201 00:11:27,000 --> 00:11:29,000 我々はしばらくの間話をしました。 202 00:11:29,000 --> 00:11:33,000 >> PSET 7との目的は、CS50ファイナンスを実施することである 203 00:11:33,000 --> 00:11:37,000 YahooファイナンスやGoogleファイナンスの独自のバージョンはどれですか 204 00:11:37,000 --> 00:11:40,000 あなたが能力を持っていることによって、あるいはEtrade.com 205 00:11:40,000 --> 00:11:43,000 与えられたシンボルのために株価をルックアップしますが、それよりももっと 206 00:11:43,000 --> 00:11:48,000 あなたは株を "買い"と "売り"する能力を持っている 207 00:11:48,000 --> 00:11:51,000 そのためには、このホーム·ページなど、様々な証券取引所で取引されている 208 00:11:51,000 --> 00:11:55,000 ここは本当に私たちが始めている程度である、を示唆している 209 00:11:55,000 --> 00:11:59,000 あなたのための問題セットは、ユーザー名とパスワードの入力を求めるのログインフォームを持っています。 210 00:11:59,000 --> 00:12:03,000 我々は最終的にわかるように、それは、その後、送信ボタンを持っていますが、 211 00:12:03,000 --> 00:12:06,000 本当にためにまだフードの下で起こってそこには何もありません 212 00:12:06,000 --> 00:12:09,000 新規ユーザを登録する機能を実装するために、残っている 213 00:12:09,000 --> 00:12:12,000 、株式を売却し、株式を購入する能力 214 00:12:12,000 --> 00:12:14,000 実際に現在の株価を検索します。 215 00:12:14,000 --> 00:12:17,000 >> 私たちがやったので、実際、これは可能な限り現実の世界のようになります。 216 00:12:17,000 --> 00:12:20,000 単一の機能を許可するようなコードのビットを含む 217 00:12:20,000 --> 00:12:25,000 素晴らしく可能な空きデータを使用できるようにYahooファイナンスを照会する 218 00:12:25,000 --> 00:12:31,000 株式シンボルまたはティッカーシンボルに基づいて株価を検索するための、 219 00:12:31,000 --> 00:12:34,000 そして、一日の現在の株価を取り戻す。 220 00:12:34,000 --> 00:12:37,000 この特定のpset内、あなたが実際に見ているデータは次のようになります 221 00:12:37,000 --> 00:12:40,000 現実の世界のようにについて、それはあなたが実際にインタフェースしているように得ることができるように 222 00:12:40,000 --> 00:12:43,000 現実世界の株式、現実世界の物価と 223 00:12:43,000 --> 00:12:47,000 そして我々はあなたが多分することができますどのくらいのお金を参照しなければならない 224 00:12:47,000 --> 00:12:51,000 あなた自身の問題セットで遊んで、次の数日間。 225 00:12:51,000 --> 00:12:55,000 >> しかしレッツは、最初確かにもっと複雑な何かを設計する方法のための段階を設定 226 00:12:55,000 --> 00:12:59,000 counter.phpよりも、それは、これまで新入生のIMSの例のいずれかよりも複雑だ 227 00:12:59,000 --> 00:13:02,000 そして私達を許可することで、ここでいくつかのパラダイムを紹介してみましょう 228 00:13:02,000 --> 00:13:06,000 psetの7のそして多分あなたの最終的なプロジェクトのためにあなたが基づいて何かのWebを行う場合は、両方の 229 00:13:06,000 --> 00:13:11,000 自分が正気を保つために、あなたのコードはよく整理しておくためには、 230 00:13:11,000 --> 00:13:15,000 そして、協働に向けて一歩を踏み出すためにCS50の最終的なプロジェクトに関わら 231 00:13:15,000 --> 00:13:18,000 またはあなたが将来的に何かをプログラムし続ければ向こう。 232 00:13:18,000 --> 00:13:21,000 この一般的な設計パラダイムはあり 233 00:13:21,000 --> 00:13:24,000 より一般的にはコンピュータサイエンスとソフトウェア開発における 234 00:13:24,000 --> 00:13:27,000 MVCは、モデルビューコントローラとして知られている 235 00:13:27,000 --> 00:13:30,000 これは、非常にいいアイデアを説明する愚かな頭字語である 236 00:13:30,000 --> 00:13:34,000 それは、プログラムの様々な側面の分離である 237 00:13:34,000 --> 00:13:39,000 具体的に別のロジックやWebサイトのビジネスロジックを維持 238 00:13:39,000 --> 00:13:42,000 のようなものが含まれているので、何も 239 00:13:42,000 --> 00:13:45,000 関数を呼び出すと、データベースを照会するなど 240 00:13:45,000 --> 00:13:48,000 あなたのHTMLの中で起こりません 241 00:13:48,000 --> 00:13:51,000 むしろ別々のファイルにし、実際に、この1つのファイルはあり 242 00:13:51,000 --> 00:13:54,000 通常、コントローラと呼ばれていること 243 00:13:54,000 --> 00:13:56,000 それは本当に操作の背後にある脳だし、我々は例が表示されます 244 00:13:56,000 --> 00:13:58,000 一瞬でこの。 245 00:13:58,000 --> 00:14:01,000 >> コー​​ドをプログラミングされているモデルがあります 246 00:14:01,000 --> 00:14:05,000 そのデータベースに話して、それがYahooファイナンス等に協議を行い、 247 00:14:05,000 --> 00:14:08,000 その後、MVCのVは、ビューは、そこ 248 00:14:08,000 --> 00:14:11,000 美学に関連しているものはすべて、実際に含まれているファイル 249 00:14:11,000 --> 00:14:14,000 あなたのHTML、多分あなたのCSSなど。 250 00:14:14,000 --> 00:14:17,000 ここでの考え方は、この写真が示すように、つまりコントローラ 251 00:14:17,000 --> 00:14:21,000 我々はすぐにわかるように、あなたが特にPSET 7で説明するように、ファイルであり、 252 00:14:21,000 --> 00:14:24,000 世界が自分のWebブラウザを経由して通信するということ。 253 00:14:24,000 --> 00:14:27,000 それは、公共のインターネット上で訪問されるファイルです。 254 00:14:27,000 --> 00:14:30,000 しかし、コントローラは、潜在的にモデルに話しかける 255 00:14:30,000 --> 00:14:34,000 これは、データに関連するコードを含む1つ以上の他のファイルであり、 256 00:14:34,000 --> 00:14:37,000 コー​​ドは、データベース等に関連しており、それはに話しかける 257 00:14:37,000 --> 00:14:40,000 景色として知られているコントローラは、1つ以上の他のファイル、 258 00:14:40,000 --> 00:14:43,000 Webページの美学、一種のテンプレートは、どのアール 259 00:14:43,000 --> 00:14:47,000 入力として、いくつかのデータを取るかもしれないが、一日の終わりに 260 00:14:47,000 --> 00:14:50,000 ビューの内側の論理だけでは、そのデータをレンダリングする必要があります 261 00:14:50,000 --> 00:14:53,000 ループを反復すると、実際にいくつかを吐き出す 262 00:14:53,000 --> 00:14:56,000 PDFのようなHTMLベースの演出はそのまた更に何か。 263 00:14:56,000 --> 00:14:59,000 >> 何MVCについて素敵なのは、異なる見解を持つことができるということです 264 00:14:59,000 --> 00:15:02,000 それは、実際にファイル形式の種類に基づいて、デバイスのタイプに基づい 265 00:15:02,000 --> 00:15:04,000 ユーザに見せたいと思います。 266 00:15:04,000 --> 00:15:10,000 のは、いくつか次第に複雑でよくデザインされた例を見てみましょう 267 00:15:10,000 --> 00:15:13,000 ここでバージョン0で最初の起動で。 268 00:15:13,000 --> 00:15:16,000 私が先に行くと、今日の我々のMVCのディレクトリで開くみよう 269 00:15:16,000 --> 00:15:21,000 ディレクトリ0のindex.phpというファイルを作成します。 270 00:15:21,000 --> 00:15:26,000 これは超簡単で、非常にがっかりウェブサイトであることに気づく 271 00:15:26,000 --> 00:15:29,000 CS50のためのホームページのバージョン0のものの並べ替え、 272 00:15:29,000 --> 00:15:32,000 そして我々は講演会へのリンクを持っている様子がわかり、私たちは、シラバスへのリンクを持っている 273 00:15:32,000 --> 00:15:35,000 と私は、講義の通知へのリンクに従っている場合、そのURL 274 00:15:35,000 --> 00:15:39,000 アップトップはlectures.phpに変更する予定です。 275 00:15:39,000 --> 00:15:44,000 私はその後、第1週の通知へのリンクをたどる場合、そのweek1.phpへのURLが変更されます。 276 00:15:44,000 --> 00:15:46,000 ここではかなり単純な階層構造があるように思われる。 277 00:15:46,000 --> 00:15:49,000 >> 、のはこれがレイアウトされている方法で、ボンネットの下に簡単に見てみましょう 278 00:15:49,000 --> 00:15:53,000 私はindex.phpを見れば、実際に、それは非常に簡単です。 279 00:15:53,000 --> 00:15:57,000 実際、私はこのPHPファイルと呼ばれるにもかかわらず、実際のプログラミング·コードはありません。 280 00:15:57,000 --> 00:16:01,000 私は、ユーザーがそれを見て終わらないだけので、PHPでここに書いたコメントがあります。 281 00:16:01,000 --> 00:16:05,000 PHPタグの間にあるのはもちろん、以前のように、何 282 00:16:05,000 --> 00:16:08,000 それはコメントだし、コメントを解釈する場合であっても、解釈される 283 00:16:08,000 --> 00:16:11,000 一日の終わりにそれを捨てることを意味するだけではなく、実際に 284 00:16:11,000 --> 00:16:15,000 それをブラウザに送信するので、ここですべてが美学です。 285 00:16:15,000 --> 00:16:20,000 私は同様にlectures.php開く場合、これはあまりにも単なるハードコーディングされたファイルです。 286 00:16:20,000 --> 00:16:23,000 それは何かと呼ばれるようなことが起こる。phpは、 287 00:16:23,000 --> 00:16:27,000 しかし、それは本当にわずかです。html、およびweek1.php、week2.php 288 00:16:27,000 --> 00:16:31,000 同様にマークアップだけなので、この設計の欠点の束があります。 289 00:16:31,000 --> 00:16:33,000 一つは、それがコピー/貼り付けの膨大な量だ。 290 00:16:33,000 --> 00:16:37,000 これらのファイルの間で変化している唯一のものは順不同リストであるにもかかわらず、 291 00:16:37,000 --> 00:16:41,000 liタグは、私はそれにもかかわらず、文書型定義、HTML、頭部を持っている 292 00:16:41,000 --> 00:16:44,000 タイトル、クローズボディ、近くにHTMLともっと 293 00:16:44,000 --> 00:16:47,000 すべての単一のファイルで、それは私が今までにしたい場合に再構築することを意味します 294 00:16:47,000 --> 00:16:50,000 このWebページまたは私は行くと変更する必要があり、それをrestylize 295 00:16:50,000 --> 00:16:54,000 すべてのこれらのファイルを手動で、またはいくつかの大規模とは、検索と置換。 296 00:16:54,000 --> 00:17:01,000 >> のヒアバージョン1に賢く、長く考える設計に向けてのステップを見てみましょう 297 00:17:01,000 --> 00:17:04,000 それによって、私たちがあなたと一緒に遊ぶことができるように用意しましたことを私に読んで当たり 298 00:17:04,000 --> 00:17:07,000 我々がここにあることを家庭の通知では、これらのよりのんびり 299 00:17:07,000 --> 00:17:10,000 このサイトのバージョン1のファイルの要約、 300 00:17:10,000 --> 00:17:13,000 そしてそれは自分自身が睨む時に私はそれを撮影したと思われる 301 00:17:13,000 --> 00:17:17,000 いくつかの一般的なコード、header.phpのとfooter.php。 302 00:17:17,000 --> 00:17:20,000 まあ、のはそれらの最初の中身を見てみましょう。 303 00:17:20,000 --> 00:17:23,000 header.phpのは、見慣れ 304 00:17:23,000 --> 00:17:26,000 しかし、それがカットされないところに気づく? 305 00:17:26,000 --> 00:17:30,000 右の19行目の後に、一般的であったすべてのものだそう 306 00:17:30,000 --> 00:17:33,000 ファイルindex.phpを、lectures.phpから 307 00:17:33,000 --> 00:17:36,000 週1と前の例からweek2.php。 308 00:17:36,000 --> 00:17:40,000 私が何をしたか、コピーし、これらすべてのファイルに共通であったカットすべてだった 309 00:17:40,000 --> 00:17:44,000 別のヘッダ·ファイルに入れて、同様にfooter.phpで 310 00:17:44,000 --> 00:17:48,000 それによってのみ興味深い行私は、同じ原則を適用しなかった 311 00:17:48,000 --> 00:17:52,000 footer.phpにこれらの2、近い身体と密接なHTMLがあります。 312 00:17:52,000 --> 00:17:55,000 >> しかし、どのようなこれが今意味することは、新しいバージョンになっている 313 00:17:55,000 --> 00:17:59,000 index.phpの通知の方法をはるかに簡単に、それは得ることができます。 314 00:17:59,000 --> 00:18:02,000 確かに、もう少し不可解探し、少し直感的 315 00:18:02,000 --> 00:18:06,000 上から下に従うことが、私の神は、その冗長性のすべてがもうなくなっている。 316 00:18:06,000 --> 00:18:10,000 我々は、文字通りトップを必要とするというPHPの関数を使用する必要が 317 00:18:10,000 --> 00:18:15,000 非常に想起すべきは、C年代の#は機構を含んで、思い出す。 318 00:18:15,000 --> 00:18:17,000 我々は、最上部にあるheader.phpを必要とします。 319 00:18:17,000 --> 00:18:20,000 我々は、最下部にfooter.phpを必要とし、唯一異なる点 320 00:18:20,000 --> 00:18:25,000 またはこのファイルに関する特別はそれに固有であることを意味しているコンテンツです。 321 00:18:25,000 --> 00:18:29,000 私はその後、lectures.php、言う、に行けば、同じ原則が適用されます。 322 00:18:29,000 --> 00:18:32,000 繰り返しになりますが、いくつかのトップアップのコメントが、その後私は、ヘッダーを必要とする、フッターが必要、 323 00:18:32,000 --> 00:18:35,000 との間に、それは実際に変わった内容だ。 324 00:18:35,000 --> 00:18:38,000 我々は第1週と第2週に見た場合、我々は参照してくださいね 325 00:18:38,000 --> 00:18:42,000 同じ原理がそこに適用されていること。 326 00:18:42,000 --> 00:18:44,000 まあ、我々は非常にそこで行われていない。 327 00:18:44,000 --> 00:18:48,000 >> のは、同様の構造を有しているバージョン2を見て、見てみましょう 328 00:18:48,000 --> 00:18:50,000 しかし、私は何か他のものを導入しました今気付く。 329 00:18:50,000 --> 00:18:53,000 10行目では、私は、helpers.phpを導入しました 330 00:18:53,000 --> 00:18:55,000 これは明らかに、ヘルパー関数が含まれています。 331 00:18:55,000 --> 00:18:58,000 ヘルパー関数は、一般的に比較的短い関数です 332 00:18:58,000 --> 00:19:01,000 あなたは、様々な場所で、あなたを手助けするために作成する 333 00:19:01,000 --> 00:19:04,000 とhelpers.phpの中身を見てみましょう。 334 00:19:04,000 --> 00:19:07,000 それは2つの機能を持っているように、このケースでは、それが見えます。 335 00:19:07,000 --> 00:19:10,000 私たちのキューブの例で、他の日を思い出してください 336 00:19:10,000 --> 00:19:13,000 あなたは、PHPで独自の関数を定義し、どのような私が今やったことは私がしたあることができます 337 00:19:13,000 --> 00:19:17,000 フッターをレンダリングしてヘッダーをレンダリングと呼ばれる定義された関数、 338 00:19:17,000 --> 00:19:21,000 データと呼ばれるパラメータをとるのは、まず、 339 00:19:21,000 --> 00:19:25,000 デフォルト値はそこ示唆したように、空の配列であり、 340 00:19:25,000 --> 00:19:29,000 そして我々は、実際にPHPの最新のバージョンであっても、より簡潔に記述することができます 341 00:19:29,000 --> 00:19:32,000 開き角括弧を言って、角括弧を閉じた。 342 00:19:32,000 --> 00:19:35,000 それは、サイズ0の空の配列が、それにもかかわらず、配列を意味します。 343 00:19:35,000 --> 00:19:38,000 >> この抽出機能という点で少し特殊です 344 00:19:38,000 --> 00:19:41,000 何をするかと、それはその引数として連想配列を受け取りです 345 00:19:41,000 --> 00:19:45,000 それは、0個以上のキーと値のペアを持って、あなたはfooのキーを持っている場合 346 00:19:45,000 --> 00:19:48,000 とbarの値抽出関数 347 00:19:48,000 --> 00:19:51,000 、11行目のように、ここで、すぐに状況を作成 348 00:19:51,000 --> 00:19:57,000 あなたは値バーは$ fooと呼ばれるローカル変数を持っています。 349 00:19:57,000 --> 00:19:59,000 そして、あなたはデータ配列に複数のキーと値を持つ場合、 350 00:19:59,000 --> 00:20:03,000 同様に彼らはローカルスコープに抽出される 351 00:20:03,000 --> 00:20:06,000 または名前空間となるようにfooter.php 352 00:20:06,000 --> 00:20:09,000 ので、ここで同じアイデアダウンそのheader.phpの 353 00:20:09,000 --> 00:20:12,000 これらの変数にアクセスすることができます。 354 00:20:12,000 --> 00:20:15,000 実際に、私は再びheader.phpを開くことができ 355 00:20:15,000 --> 00:20:18,000 そして今では、このバージョンではどのようなものかに注意を喚起する。 356 00:20:18,000 --> 00:20:22,000 >> むしろハードのすべてのページのタイトルとしてCS50をコーディングするよりも 357 00:20:22,000 --> 00:20:24,000 ことができるようになりましたダイナミズムに注目してください。 358 00:20:24,000 --> 00:20:29,000 5行目では、私は、title変数をエコーし​​ている 359 00:20:29,000 --> 00:20:34,000 しかし最初に私はデータを元に戻し呼び出された関数に、そのタイトルの変数を渡している。 360 00:20:34,000 --> 00:20:38,000 関数の愚かな名前は、それがあるが、限り、それは実際にそれが言うことを行います。 361 00:20:38,000 --> 00:20:41,000 これは、任意の特殊文字があることを保証 362 00:20:41,000 --> 00:20:46,000 に渡された文字列では正しく表示されているHTMLエスケープされます。 363 00:20:46,000 --> 00:20:49,000 これは、クロスサイトスクリプティング攻撃と呼ばれる、実際に何かを回避するための方法です 364 00:20:49,000 --> 00:20:52,000 それによって誰かが故意または偶然にでき 365 00:20:52,000 --> 00:20:55,000 あなたのウェブサイトに自分のHTMLを挿入 366 00:20:55,000 --> 00:20:59,000 いくつかのフォームに貼り付けることにより、例えば、 367 00:20:59,000 --> 00:21:02,000 あなたは非常に期待していなかったことが何か、特にJavaScriptコード、 368 00:21:02,000 --> 00:21:05,000 我々は、週または2つの時間で約話をしようとして。 369 00:21:05,000 --> 00:21:08,000 >> この今ではheader.phpの、それは、ビューの 370 00:21:08,000 --> 00:21:12,000 それはあなたが美的にいくつかのデータ·セットの内容を表示することができますという意味で。 371 00:21:12,000 --> 00:21:14,000 しかし、より具体的には、テンプレートです。 372 00:21:14,000 --> 00:21:19,000 これは、今我々は、すべてのページのヘッダーには、次のようになりたいものの青写真のようなものです 373 00:21:19,000 --> 00:21:23,000 しかし、我々はタイトルが動的に挿入されるようにするという点で、いくつかのダイナミズムはあり 374 00:21:23,000 --> 00:21:26,000 title変数に基づいて 375 00:21:26,000 --> 00:21:30,000 我々が呼び出されたときに、そのは、再度、抽出した 376 00:21:30,000 --> 00:21:33,000 レンダーヘッダー関数。 377 00:21:33,000 --> 00:21:36,000 今、私たちは、レンダーフッターを見た場合、実際にははるかに今その権利を使用しないあり 378 00:21:36,000 --> 00:21:40,000 footer.phpに一切ダイナミズムがないため。 379 00:21:40,000 --> 00:21:43,000 、があるが、現時点でそれは2つのタグのハードコードされたリストの可能性 380 00:21:43,000 --> 00:21:46,000 実際に理由を示唆しているように、同じ考え方が適用されます 381 00:21:46,000 --> 00:21:49,000 我々は、レンダリングのヘッダーとフッターのレンダリング機能を持った時間を無駄にしたのですか? 382 00:21:49,000 --> 00:21:52,000 、私はバージョン3になりました代わりに行こう 383 00:21:52,000 --> 00:21:56,000 とヘルパーのバージョン3で私はさらにそれを単純化することを決めた。 384 00:21:56,000 --> 00:21:58,000 >> 私は1 render関数を持ってみましょう。 385 00:21:58,000 --> 00:22:02,000 私はそれが別の引数を取ることがありましょうが、今回は、テンプレートと呼ばれる 386 00:22:02,000 --> 00:22:05,000 これらは、テンプレートの名前であることが意味されます 387 00:22:05,000 --> 00:22:11,000 その後僭越連結します。phpを、その変数の値に、 388 00:22:11,000 --> 00:22:17,000 そしてそれはFoo.php、またはBar.phpがheader.phpのとfooter.phpを、存在する場合 389 00:22:17,000 --> 00:22:20,000 その後、私は先に行くと、変数のデータを抽出するつもりです 390 00:22:20,000 --> 00:22:23,000 して、そのパスを必要とします。 391 00:22:23,000 --> 00:22:29,000 私はindex.phpを開く場合は、他の言葉で、今ではこれを使用する 392 00:22:29,000 --> 00:22:32,000 私はもうヘッダーをレンダリング呼び出さないことに注意してください。 393 00:22:32,000 --> 00:22:36,000 私はちょうどレンダリング呼ぶが、私は引用符で囲まれたヘッダの値を渡す 394 00:22:36,000 --> 00:22:39,000 明確にするために、どのテンプレート私は実際にロードしたい。 395 00:22:39,000 --> 00:22:41,000 >> それからこっち私がやっていることに気づく。 396 00:22:41,000 --> 00:22:44,000 私はタイトルの動的にキーを渡すんだけど、 397 00:22:44,000 --> 00:22:47,000 あまりにCS50の値、この、我々は前に見たように、 398 00:22:47,000 --> 00:22:51,000 PHPの最新バージョンではより簡潔に作ることができる 399 00:22:51,000 --> 00:22:54,000 ここで私は、角括弧で配列関数を置き換えることができます 400 00:22:54,000 --> 00:22:57,000 どの私も読みやすく、確かに提案する 401 00:22:57,000 --> 00:22:59,000 少し、入力も簡単。 402 00:22:59,000 --> 00:23:02,000 そしてもちろん、下部にフッターのレンダリングの呼び出しで、 403 00:23:02,000 --> 00:23:05,000 我々は、すべてでは第二引数には全く連想配列を渡していない気にしないでください 404 00:23:05,000 --> 00:23:07,000 そのフッターの何もダイナミック内部はそこだから。 405 00:23:07,000 --> 00:23:10,000 これはHTMLのためのちょうどいくつかの終了タグです。 406 00:23:10,000 --> 00:23:14,000 良い、我々は、本当にここに物事をクリーンアップに向けてのステップを取っている 407 00:23:14,000 --> 00:23:17,000 が、私は最後の2例を開くことができます。 408 00:23:17,000 --> 00:23:21,000 この1、数字の4、私は今、意識的な決断をしましたという通知 409 00:23:21,000 --> 00:23:26,000 ついに私のファイルにいくつかの階層を使用して以前の例に基づいて改善する。 410 00:23:26,000 --> 00:23:29,000 >> この要約では、この私を読んで、私が導入していることに注目してください 411 00:23:29,000 --> 00:23:32,000 ディレクトリとtemplatesディレクトリが含まれています 412 00:23:32,000 --> 00:23:35,000 その内容は私が入れたいものになるだろうしている 413 00:23:35,000 --> 00:23:38,000 と私は、それぞれレンダリングするテンプレート。 414 00:23:38,000 --> 00:23:42,000 これは、肛門や物事を整理しようとしている本当の私です 415 00:23:42,000 --> 00:23:45,000 一緒に関連するファイルを保持しませんが、結末 416 00:23:45,000 --> 00:23:48,000 我々は今少し整然とセットアップを持っていますが、我々は今覚えておかなければならないということです 417 00:23:48,000 --> 00:23:51,000 で、例えば、index.phpを 418 00:23:51,000 --> 00:23:55,000 我々は、ファイルhelpers.phpを必要とするとき 419 00:23:55,000 --> 00:24:01,000 私たちは/ helpers.phpを含む介してそれを今必要としなければならない 420 00:24:01,000 --> 00:24:06,000 今ではサブディレクトリに実際だからだけではなくhelpers.phpを言う。 421 00:24:06,000 --> 00:24:09,000 さて、余談ですが、あなたは、これらの例といくつか他の人にわかります 422 00:24:09,000 --> 00:24:11,000 必要とするような関数は、一度必要です。 423 00:24:11,000 --> 00:24:15,000 そこ自体は含まれて呼び出された関数は、実際にだ、と彼らはすべて若干異なる動作をします。 424 00:24:15,000 --> 00:24:18,000 ここで私は、私が唯一それらたいスーパーを明確にするために一度必要と言う 425 00:24:18,000 --> 00:24:20,000 ヘルパーは、かつての私のプロジェクトに含まれています。 426 00:24:20,000 --> 00:24:24,000 しかし、私は実際に適切に私のロジックを介して考えている場合、私は慎重だとした場合 427 00:24:24,000 --> 00:24:27,000 それはトップを必要とすると言ってもわずかで十分です 428 00:24:27,000 --> 00:24:31,000 限り私自身が誤って別の場所に同じファイルを必要としない。 429 00:24:31,000 --> 00:24:34,000 実際には、これは使用した後のことをやって、もう少し効率的な方法です 430 00:24:34,000 --> 00:24:38,000 一度必要とする、私はちょうど必要とするようにそれを縮小しますので。 431 00:24:38,000 --> 00:24:40,000 >> のはさらに一歩考えてみましょう。 432 00:24:40,000 --> 00:24:46,000 この最後の例は、現在、バージョン5は、よりクリーンにフォルダ階層を持っています。 433 00:24:46,000 --> 00:24:50,000 この最終版で私を読み取るごとに、私はここで何をやったかに注目してください 434 00:24:50,000 --> 00:24:54,000 私は、私はすべてのこの時間を持っていた、これ私のHTMLディレクトリを持つようになりました 435 00:24:54,000 --> 00:24:58,000 しかし内部のそこのは、今だけのindex.php、lectures.phpです 436 00:24:58,000 --> 00:25:01,000 week1.phpとweek2.php。 437 00:25:01,000 --> 00:25:05,000 ディレクトリは現在、HTMLディレクトリの横に住んで含まれています 438 00:25:05,000 --> 00:25:08,000 そう兄弟と同じレベルで、いわば。 439 00:25:08,000 --> 00:25:10,000 だから、テンプレートフォルダがありません。 440 00:25:10,000 --> 00:25:14,000 ここで重要なの持ち帰りは、私はもう少し構造を導入しましたです 441 00:25:14,000 --> 00:25:17,000 しかし、主要な機能は、現在、そのファイルだけです 442 00:25:17,000 --> 00:25:21,000 公的にアドレス、ウェブからアクセスできなければいけないこと 443 00:25:21,000 --> 00:25:25,000 公共のインターネット上のURLで私のHTMLディレクトリにあります。 444 00:25:25,000 --> 00:25:28,000 >> 一方、他のファイル、helpers.php、footer.php、 445 00:25:28,000 --> 00:25:32,000 間違いなく多分もっと敏感であるheader.phpの、 446 00:25:32,000 --> 00:25:35,000 多分ヘルパーは実際にいくつかのユーザー名とパスワード、またはいくつかの知的所有権を持つ 447 00:25:35,000 --> 00:25:39,000 私の財産、私は実際にも誤っている場合、世界が見たいと思っていない機能。 448 00:25:39,000 --> 00:25:45,000 それは公共のHTMLディレクトリの外に置くことは、良い習慣です 449 00:25:45,000 --> 00:25:48,000 任意のパブリックであることが自分自身を必要としないファイル。 450 00:25:48,000 --> 00:25:51,000 あなたが見たときに、例えば、この場合にしなければならないすべては、 451 00:25:51,000 --> 00:25:55,000 HTMLディレクトリのindex.phpファイル、 452 00:25:55,000 --> 00:25:58,000 我々だけが必要なときにもう少し注意しなければなら気付く 453 00:25:58,000 --> 00:26:00,000 または一度このファイルを必要とします。 454 00:26:00,000 --> 00:26:03,000 私は最初に行う必要があります..親ディレクトリに移動するには、 455 00:26:03,000 --> 00:26:06,000 / /次にhelpers.phpを含んでください 456 00:26:06,000 --> 00:26:12,000 私は気にしているファイルを取得するには戻ってダウン中にダイブする。 457 00:26:12,000 --> 00:26:16,000 >> その後のMVCについてのご質問 458 00:26:16,000 --> 00:26:20,000 またはそれらのこの比較的単純な化身? 459 00:26:20,000 --> 00:26:23,000 そして、私は我々がかなり集中していることを明確にしましょう 460 00:26:23,000 --> 00:26:27,000 ここで、V、ビュー、およびこれらのテンプレートのうちファクタリング。 461 00:26:27,000 --> 00:26:30,000 私たちは本当にただまだCからMを区別していませんでした。 462 00:26:30,000 --> 00:26:33,000 実際には、実際にはここでM、さらには我々のCが存在しない、 463 00:26:33,000 --> 00:26:36,000 コントローラは、実際にはそれほどやっていないが、あなたは多くを得るでしょう 464 00:26:36,000 --> 00:26:39,000 MVCからこれらの2文字の両方に精通し、 465 00:26:39,000 --> 00:26:43,000 あるいはむしろ、あなたはCとはるかに慣れるよ 466 00:26:43,000 --> 00:26:49,000 MVCでの問題のために7を設定し、その結果のよりは地平線上にあり。 467 00:26:49,000 --> 00:26:51,000 質問はありますか? 468 00:26:51,000 --> 00:26:53,000 ここに誰も実際にありません。 469 00:26:53,000 --> 00:26:57,000 >> さて、それでは今日の第二と最終的な話題に移りましょう。 470 00:26:57,000 --> 00:27:00,000 つまり、データベースの導入である。 471 00:27:00,000 --> 00:27:03,000 この時点まで、我々はデータを格納するのにはいくつかの方法を持っていた。 472 00:27:03,000 --> 00:27:05,000 我々は変数を使用してきました。 473 00:27:05,000 --> 00:27:08,000 戻って我々のCファイルでは、I / Oの議論を我々はテキストフ​​ァイルを使用して開始 474 00:27:08,000 --> 00:27:11,000 その後fprintfのようなファイルを使って、我々も開始 475 00:27:11,000 --> 00:27:14,000 CSV形式の話をすると、少し、コンマで区切られた値を、ファイル 476 00:27:14,000 --> 00:27:17,000 ので、これらのすべては、私たちが保存されたデータを持つことができ 477 00:27:17,000 --> 00:27:19,000 どちらか非永続的にまたは永続的に。 478 00:27:19,000 --> 00:27:23,000 しかし、CSVを、検索には本当に助長ではありません 479 00:27:23,000 --> 00:27:25,000 そして挿入、削除。 480 00:27:25,000 --> 00:27:28,000 それはちょうど実際にコンマで区切られた愚かなテキストフ​​ァイルです 481 00:27:28,000 --> 00:27:30,000 あなたがしたいのであれば、行ごとで行ごとに、 482 00:27:30,000 --> 00:27:32,000 あなたが本当にできる最善は線形探索であるファイルを検索します。 483 00:27:32,000 --> 00:27:34,000 あなたは、全体を読み込み、ファイルの先頭で開始する必要があります 484 00:27:34,000 --> 00:27:36,000 と興味のあるいくつかの値を探します。 485 00:27:36,000 --> 00:27:39,000 あなたがそこに挿入したい場合は、同じことをしなければならない 486 00:27:39,000 --> 00:27:41,000 、それを反復処理し、特定の場所に挿入する 487 00:27:41,000 --> 00:27:45,000 そして実際には、検索ロジックを自分のすべてを行う必要があります。 488 00:27:45,000 --> 00:27:49,000 >> あなたは自分でコードを書いていない限り、CSVファイル上にマッチング巧妙なパターンを行うことはできません。 489 00:27:49,000 --> 00:27:51,000 あなたは、CSVファイルのろ過を行うことはできません 490 00:27:51,000 --> 00:27:53,000 しない限り、あなたは自分でコードを記述します 491 00:27:53,000 --> 00:27:56,000 他の誰かが努力のすべてに置けばそれがいいと思いませんか 492 00:27:56,000 --> 00:27:59,000 実際に簡単かつ容易に検索できるように挿入する 493 00:27:59,000 --> 00:28:01,000 および削除などの更新や? 494 00:28:01,000 --> 00:28:04,000 これはデータベースがまさにそれだ。 495 00:28:04,000 --> 00:28:07,000 SQLは、構造化照会言語は、まだ別の言語です 496 00:28:07,000 --> 00:28:10,000 、我々は今日ここで紹介しているが、これもかなりアクセス可能であること 497 00:28:10,000 --> 00:28:13,000 そして、私たちが本当にやろうとしていることはただの最も顕著な一部のそれを引き抜くされている 498 00:28:13,000 --> 00:28:16,000 psetの7の特性ので、あなたはウェブベースの何かを行う場合、 499 00:28:16,000 --> 00:28:19,000 あなたの最終的なプロジェクトは、あなた自身を表現する能力を持っている 500 00:28:19,000 --> 00:28:22,000 データクエリの条件インチ 501 00:28:22,000 --> 00:28:25,000 あなたは少しを保存する機能や、大量のデータを持っている 502 00:28:25,000 --> 00:28:28,000 一日の終わりになり、はるかに構造化された方法で 503 00:28:28,000 --> 00:28:32,000 SQLを使用して、あなた自身を表現することができますので、あなたの人生が容易になり 504 00:28:32,000 --> 00:28:35,000 より正確に、はるかに念入りに順番に 505 00:28:35,000 --> 00:28:40,000 データの大きなコーパスからのデータのサブセットを取り戻す。 506 00:28:40,000 --> 00:28:45,000 >> あなたは本当にExcelなどのデータベース、この場合には、SQLデータベースと考えることができます 507 00:28:45,000 --> 00:28:48,000 またはそれは、スプレッドシートの数字、 508 00:28:48,000 --> 00:28:50,000 または多分複数のスプレッドシート、そしてもちろん、スプレッドシート、 509 00:28:50,000 --> 00:28:53,000 行と列があり、それがためだ 510 00:28:53,000 --> 00:28:56,000 SQLデータベースは、ある意味でリレーショナル、リレーショナルアール 511 00:28:56,000 --> 00:28:59,000 彼らは、これらのテーブルの条件でデータを格納すること 512 00:28:59,000 --> 00:29:01,000 行と列。 513 00:29:01,000 --> 00:29:03,000 彼らは、スプレッドシートのようなものよりも高いパフォーマンスがよい 514 00:29:03,000 --> 00:29:05,000 およびスプレッドシートは、人間が使用することを意図されています。 515 00:29:05,000 --> 00:29:08,000 データベースは、プログラマによって使用されるように意図され 516 00:29:08,000 --> 00:29:12,000 それに対するコードを記述するため、データベースのインカネーション 517 00:29:12,000 --> 00:29:14,000 いずれかのコマンドラインになるだろう。 518 00:29:14,000 --> 00:29:18,000 >> そこに最も人気のあるリレーショナルデータベースの一つは、再び、MySQLです 519 00:29:18,000 --> 00:29:22,000 これは、非常に高いパフォーマンスを素晴らしく自由であり、これは何であるか 520 00:29:22,000 --> 00:29:24,000 Facebookは今日でも非常に早く、ある程度使用 521 00:29:24,000 --> 00:29:27,000 その大量のデータを格納するため、我々はすぐに説明します 522 00:29:27,000 --> 00:29:30,000 比較的単純なコマンドを使用して、その 523 00:29:30,000 --> 00:29:33,000 我々は、データ、データの挿入、更新データを、選択することができます 524 00:29:33,000 --> 00:29:37,000 データ等を削除し、ありがたいことに、よりユーザーフレンドリーなインターフェースがあり 525 00:29:37,000 --> 00:29:39,000 ちょうどここに、黒と白のプロンプトで入力するよりも。 526 00:29:39,000 --> 00:29:43,000 我々は、pset 7用とphpMyAdminというフリーツールを超えて使用します。 527 00:29:43,000 --> 00:29:45,000 名前は偶然の一致によるものです。 528 00:29:45,000 --> 00:29:47,000 このツールは、PHPで実装されるようなことが起こる 529 00:29:47,000 --> 00:29:49,000 それは根本的に無関係です。 530 00:29:49,000 --> 00:29:53,000 phpMyAdminに何についての有用なのは、それがWebベースのユーティリティであるということです。 531 00:29:53,000 --> 00:29:55,000 私たちは、あなたのためのアプライアンスでそれをプリインストールしました 532 00:29:55,000 --> 00:29:58,000 そして、これを指定することにより、データベース内のテーブルを作成することができます 533 00:29:58,000 --> 00:30:01,000 あなたは、データを挿入するデータを削除し、一般的に見ることができます 534 00:30:01,000 --> 00:30:04,000 かなりユーザーフレンドリーな環境で、あなたのデータ。 535 00:30:04,000 --> 00:30:07,000 ユーザーはphpMyAdminを使用するつもりはありません。 536 00:30:07,000 --> 00:30:09,000 >> これは本当に単なる管理または開発者のツールです 537 00:30:09,000 --> 00:30:12,000 を参照し、データ周りをウロウロすると、それを構造化する方法を考え出すいると、 538 00:30:12,000 --> 00:30:15,000 ずっとあなたのように自分でExcelまたは番号を使用する場合があります 539 00:30:15,000 --> 00:30:19,000 それはフードの下で何が起こっているかを視覚化するのに最適な方法になるだろう 540 00:30:19,000 --> 00:30:22,000 ので、そんなに解決しない興味深い問題に焦点を当てることができます 541 00:30:22,000 --> 00:30:25,000 難解なコマンドについて。 542 00:30:25,000 --> 00:30:28,000 レッツtabularly格納される可能性のあるデータの例を見てみましょう 543 00:30:28,000 --> 00:30:30,000 リレーショナルデータベースに保存されます。 544 00:30:30,000 --> 00:30:32,000 ここではその一例だ。 545 00:30:32,000 --> 00:30:35,000 さて、残念なことに、phpMyAdminは、多くの言葉はあまりにも投げ道の側で誤りを犯した 546 00:30:35,000 --> 00:30:38,000 そしてあなたにグラフィックが、あなたは上だけで磨く場合 547 00:30:38,000 --> 00:30:42,000 ID列は、ユーザー名の列、ハッシュカラム、 548 00:30:42,000 --> 00:30:45,000 これは、事実上のスプレッドシートですが、それは断片であることを起こる 549 00:30:45,000 --> 00:30:49,000 アプライアンスの内部テーブルの 550 00:30:49,000 --> 00:30:53,000 我々は問題セット7のを提供したファイルを使用して。 551 00:30:53,000 --> 00:30:57,000 >> 特に、我々はあなたに表すファイルを与える 552 00:30:57,000 --> 00:31:01,000 ユーザのテーブル、3つの列を持つユーザーを含むので、スプレッドシート、 553 00:31:01,000 --> 00:31:05,000 の一つは、1から始まり、その後インクリメントされる固有のIDです。 554 00:31:05,000 --> 00:31:08,000 第二列には、ユーザー名であり、ハッカーをしたあなたの人々の 555 00:31:08,000 --> 00:31:12,000 psetの2のハッカー版は、少なくともこれらのユーザ名の一部を認識することがあります。 556 00:31:12,000 --> 00:31:16,000 右側のパスワードですが、彼らは文字通りのパスワードがわからない。 557 00:31:16,000 --> 00:31:19,000 彼らは、それらのハッシュだので、それが判明 558 00:31:19,000 --> 00:31:22,000 データベースにパスワードを格納することは本当に悪い考えであること。 559 00:31:22,000 --> 00:31:25,000 あなたは、おそらくすべてのいくつかのウェブサイトのいくつかの時点で読んだ 560 00:31:25,000 --> 00:31:28,000 またはいくつかの会社のデータベースが危険にさらされているし、次にあなたがする必要はあり 561 00:31:28,000 --> 00:31:31,000 パスワードを変更するには、物事に払い戻しを取得する必要があります 562 00:31:31,000 --> 00:31:34,000 いくつかの悪い男は、実際には結果としてあなたのアカウントに侵入したためである。 563 00:31:34,000 --> 00:31:38,000 >> クリアテキストでパスワードを格納する、データベース内の暗号化されていない 564 00:31:38,000 --> 00:31:41,000 完全に愚かであり、まだそれは非常に面白いです 565 00:31:41,000 --> 00:31:44,000 その後、いくつかの非常によく知られている会社について読むために 566 00:31:44,000 --> 00:31:47,000 時々マスコミでそのデータベースが危険にさらされ、 567 00:31:47,000 --> 00:31:50,000 そしてその部分は面白いではありませんが、データベースが含まれているという事実は、暗号化されていない 568 00:31:50,000 --> 00:31:53,000 パスワードには、1行のコードであるため、文字通りばかげている 569 00:31:53,000 --> 00:31:57,000 あなたは、その特定の脅威から守ることができ、そしてそれは我々がここで何をやったかだ。 570 00:31:57,000 --> 00:32:00,000 でも、私達の偽の少しCS50ファイナンスバージョン用 571 00:32:00,000 --> 00:32:03,000 私達はちょうど良い測定のためのパスワードを暗号化して、事実アール 572 00:32:03,000 --> 00:32:07,000 これらのパスワードのすべてが$ 1 $で始まるだけの慣習です。 573 00:32:07,000 --> 00:32:10,000 ただ、それらは暗号化されているか、実際にハッシュ化されていることを意味 574 00:32:10,000 --> 00:32:13,000 これは一方向の暗号化機能のようなものです 575 00:32:13,000 --> 00:32:17,000 それによってあなたは、MD5と呼ばれるもので、その効果を元に戻すことはできません。 576 00:32:17,000 --> 00:32:21,000 >> 50はそのあとであるということは、塩の値 577 00:32:21,000 --> 00:32:24,000 50のうちの1つを除き、これらのすべてのパスワードをハッシュ化するために使用された。 578 00:32:24,000 --> 00:32:27,000 鉱山は、もちろん、あなたはそこに見ることができるように、HA、 579 00:32:27,000 --> 00:32:30,000 別の塩を使用していたので、少し引っかかってしまったあなたの人々の 580 00:32:30,000 --> 00:32:33,000 多分ハッカー2に、それは私たちの使用した結果だったかもしれない 581 00:32:33,000 --> 00:32:36,000 他とは異なるハッシュ私のパスワードは実際には同じであるため、 582 00:32:36,000 --> 00:32:38,000 そこにいくつかの他のユーザーとしてログオンします。 583 00:32:38,000 --> 00:32:41,000 あなたが待っていた場合、実際には、すべてのこれらの週は見つけるために 584 00:32:41,000 --> 00:32:44,000 ここにあなたがチャレンジしたことパスワードは何それらのパスワードであった 585 00:32:44,000 --> 00:32:48,000 問題のハッカー版でクラックするので、どれもあまりにもトリッキー、2を設定します。 586 00:32:48,000 --> 00:32:50,000 実際には、マランのは、jharvardと同じであった 587 00:32:50,000 --> 00:32:54,000 我々は戻ってしまったら、彼らは違って見えた。 588 00:32:54,000 --> 00:32:58,000 >> 彼らは異なっていたので塩漬け真紅でjharvardに焦点を当てる。 589 00:32:58,000 --> 00:33:01,000 アルゴリズムはそのように乱された 590 00:33:01,000 --> 00:33:05,000 値ハッシュ、暗号化された値が少し違って見える 591 00:33:05,000 --> 00:33:08,000 入力はわずかに異なっていたが、ボンネットの下にパスワードがないため 592 00:33:08,000 --> 00:33:10,000 それでも最終的には真っ赤だった。 593 00:33:10,000 --> 00:33:12,000 さて、誰がこれを気に? 594 00:33:12,000 --> 00:33:15,000 まあ、我々は、サンプルのユーザー名は、サンプルユーザをご提供している 595 00:33:15,000 --> 00:33:18,000 とそのパスワードのハッシュは、あなたが実際にいくつかを持っているように、 596 00:33:18,000 --> 00:33:23,000 CS50ファイナンスの顧客最初にあなたのコードで地面を下車。 597 00:33:23,000 --> 00:33:27,000 あなたが内部データベースから、MySQLの内部で複数のテーブルを実装する必要があります。 598 00:33:27,000 --> 00:33:30,000 あなたが効果的に、より多くのスプレッドシートを作成する必要がありますが、我々はあなたにこの1を与えることを決めた 599 00:33:30,000 --> 00:33:33,000 あなたが始めるために、あなたはその問題セットの仕様が表示されます 600 00:33:33,000 --> 00:33:37,000 このテーブルをインポートするプロセスを、順を追って説明 601 00:33:37,000 --> 00:33:39,000 また、特性のいくつかが何であるかを説明する 602 00:33:39,000 --> 00:33:41,000 そしてあなたはまた、我々がコードを提供していることがわかります 603 00:33:41,000 --> 00:33:44,000 ハッシュまたはこれらのパスワードの暗号化を処理するため、 604 00:33:44,000 --> 00:33:49,000 ので、あなたは、MD5等はすべて約実際に何であるかについてはあまり心配する必要はありません。 605 00:33:49,000 --> 00:33:53,000 >> したがって、SQL、構造化照会言語。 606 00:33:53,000 --> 00:33:56,000 これは、非常に単純に、我々はPSET 7で使用して開始されようとしている言語です。 607 00:33:56,000 --> 00:34:01,000 そしておそらくいくつかのデータベースからデータを要求するを超えています。 608 00:34:01,000 --> 00:34:06,000 データは、再び、これらのリレーショナルテーブル、列、および行にtabularly格納されている 609 00:34:06,000 --> 00:34:09,000 しかし、削除のようないくつかの比較的単純な構文を使用して、 610 00:34:09,000 --> 00:34:12,000 挿入、更新、および選択し、我々はまさにそれを行うことができます。 611 00:34:12,000 --> 00:34:15,000 我々は、挿入、データベースから削除することができます 612 00:34:15,000 --> 00:34:19,000 、データベースからデータを取得されたデータだけでなく、選択を更新します。 613 00:34:19,000 --> 00:34:21,000 我々はこれを行う方法を教えてください。 614 00:34:21,000 --> 00:34:23,000 私はアプライアンスに先んじて行ってみよう。 615 00:34:23,000 --> 00:34:28,000 、私はhttp://localhostをプルアップしてみましょう 616 00:34:28,000 --> 00:34:30,000 れ、再度、ローカルアプライアンス自体である。 617 00:34:30,000 --> 00:34:32,000 ことは、そのデフォルトのニックネームです。 618 00:34:32,000 --> 00:34:35,000 そして、私は/ phpmyadminのに行くことができます。 619 00:34:35,000 --> 00:34:39,000 これは、アプライアンスが理解するように事前設定されている特殊なURLであることを起こる 620 00:34:39,000 --> 00:34:42,000 それはすぐにユーザー名とパスワードの入力を求めるプロンプトが表示されます。 621 00:34:42,000 --> 00:34:46,000 >> いつものように、私はjharvardと真紅を入力するつもりだ 622 00:34:46,000 --> 00:34:48,000 しかし、コンピュータの管理者アカウントだと認識しています。 623 00:34:48,000 --> 00:34:53,000 それはCS50ファイナンスのために登録jharvardもあるということは単なる偶然です。 624 00:34:53,000 --> 00:34:56,000 Jharvard、深紅色、エンターは私たちが見たユーザー·インターフェースを提供します 625 00:34:56,000 --> 00:34:59,000 瞬間を垣間見る前に、それは、最初は少し圧倒的だ 626 00:34:59,000 --> 00:35:02,000 しかし安心は、このツールでほとんどのリンクをクリックする必要がありますするつもりはありませんしている。 627 00:35:02,000 --> 00:35:05,000 あなたは、スーパーに役立ちます小さなサブセットを使用して終了します 628 00:35:05,000 --> 00:35:08,000 そのうちの第一は、ここでデータベースをバックアップしています。 629 00:35:08,000 --> 00:35:11,000 私はデータベースまで行けば、私がデータベースを作成するよう求めていることに気付く。 630 00:35:11,000 --> 00:35:14,000 これは事実上、新しいExcelファイルを作成することとほぼ同じです。 631 00:35:14,000 --> 00:35:18,000 私は先に行くとこの講義を呼び出すつもりだ、と私はちょうどそこにフィールド、照合を無視するつもりです。 632 00:35:18,000 --> 00:35:20,000 それは、その中にデータの表現に関係しています 633 00:35:20,000 --> 00:35:24,000 私が作成を手放すようにと私が作成をクリックして、今気付くするつもり 634 00:35:24,000 --> 00:35:27,000 それはデータベースを言っていない左側に 635 00:35:27,000 --> 00:35:30,000 私はすぐに講義データベースが表示されるはずです。 636 00:35:30,000 --> 00:35:32,000 >> 私は今、左側に講義データベース]をクリックした場合 637 00:35:32,000 --> 00:35:34,000 私のタブが少し変更に気づく。 638 00:35:34,000 --> 00:35:38,000 私は構造、SQL、エクスポート、インポート、およびいくつかの他のものを持っている。 639 00:35:38,000 --> 00:35:40,000 構造はかなり空白になっています。 640 00:35:40,000 --> 00:35:43,000 それはここで言うようにテーブルは、データベース内に見つからない 641 00:35:43,000 --> 00:35:47,000 それでは、テーブルを作成してみましょう、とみましょう先に行くと、テーブルを作成する 642 00:35:47,000 --> 00:35:53,000 生徒が好きで、私たちはどのように多くの列をしたいですか? 643 00:35:53,000 --> 00:35:55,000 すべての学生のために、これはシンプルにしてみましょう、としましょう​​記録 644 00:35:55,000 --> 00:35:58,000 ID番号、名前、電子メールアドレスを入力します。 645 00:35:58,000 --> 00:36:02,000 >> 我々はそのようなそれをシンプルに保つため、3列、行くつもりです。 646 00:36:02,000 --> 00:36:05,000 ここで表示されるフォームには、今少し乱雑と圧倒的である 647 00:36:05,000 --> 00:36:08,000 しかし、我々は単に行によってそれの行を通過する必要がありますので、本当にすぐのを与えてみましょう 648 00:36:08,000 --> 00:36:14,000 このデータベースの一意の識別子のためのIDの名前の最初の列。 649 00:36:14,000 --> 00:36:17,000 それは整数になります。私は実際の長さと値を無視することができます。 650 00:36:17,000 --> 00:36:21,000 intは32ビットで、あなたがそこに入力何であることを行っているので、空白のままにしておきましょう。 651 00:36:21,000 --> 00:36:24,000 定義されたデフォルト値は、私は、それがnullで作ることができます。 652 00:36:24,000 --> 00:36:27,000 私は放っておくつもりです。デフォルト値については心配しないでおきましょう。 653 00:36:27,000 --> 00:36:29,000 右、属性にこっちにスクロールしましょう​​。 654 00:36:29,000 --> 00:36:31,000 これは興味深いです。 655 00:36:31,000 --> 00:36:33,000 レッツは、先に行くと、やや恣意IDは符号なしである必要がありますと言う。 656 00:36:33,000 --> 00:36:35,000 の任意の負の数を無駄にしないようにしましょう​​。 657 00:36:35,000 --> 00:36:37,000 >> のは、0から4000000000を行く与えるか見てみましょう、 658 00:36:37,000 --> 00:36:40,000 その後のあそこにはまだこれらのフィールドのいずれかには触れないようにしましょう​​、 659 00:36:40,000 --> 00:36:43,000 しかし、その後、私がダウンしてここに名前を入力しましょう 660 00:36:43,000 --> 00:36:46,000 その後、他の電子メールだった、キャッチはメールですので、 661 00:36:46,000 --> 00:36:50,000 と名前、明らかにしない整数なので、別のフィールドに、これらの設定を変更してみましょう。 662 00:36:50,000 --> 00:36:53,000 これは、varchar型、可変長charを、判明 663 00:36:53,000 --> 00:36:56,000 SQLデータベース内の文字列のようなものです 664 00:36:56,000 --> 00:36:59,000 しかし、可変長、あなたは実際に、事前にそれを伝えなければなりません 665 00:36:59,000 --> 00:37:02,000 文字列の最大長は、ので、私は多少恣意的に行ってきます 666 00:37:02,000 --> 00:37:05,000 慣例により、最大255文字を入力します。 667 00:37:05,000 --> 00:37:08,000 私は完全に32を言うことができます。私は千を言うことができる。 668 00:37:08,000 --> 00:37:11,000 あなたあなたの人口統計に基づいて自分で決める必要性の種類が何であるか 669 00:37:11,000 --> 00:37:14,000 最長の学生の名前と、その番号または少し大きめで行く、 670 00:37:14,000 --> 00:37:17,000 しかし、何varchar型の良いのは、それが無駄にするつもりはないです 671 00:37:17,000 --> 00:37:19,000 すべての生徒の名前の上に255バイト。 672 00:37:19,000 --> 00:37:23,000 それはDavidさんの場合、それは、全体の255バイトを使用するつもりはない 673 00:37:23,000 --> 00:37:26,000 しかし、それが上限なので、私は単に慣例により255と行くよ 674 00:37:26,000 --> 00:37:30,000 しかし、我々はいくつかの低い値であることがその議論、および電子メールアドレスのために可能性 675 00:37:30,000 --> 00:37:34,000 ちょうど255一貫性があるようにしたが、再び、我々は同じ議論を持つことができます。 676 00:37:34,000 --> 00:37:36,000 しかし、私は右側に、ここを介して1つの他の事をするつもりです。 677 00:37:36,000 --> 00:37:40,000 >> どのデータベースに関する強力なのは、それが重い物を持ち上げるの多くを行うことができるということです 678 00:37:40,000 --> 00:37:42,000 あなたのために、または複雑な作業。 679 00:37:42,000 --> 00:37:46,000 特に、私は本当に私の学生のID番号が何であるかを気にしない。 680 00:37:46,000 --> 00:37:49,000 それはちょうど、データベース内で一意の識別子であることを意味している 681 00:37:49,000 --> 00:37:52,000 ので、私はその学生の32ビットの簡潔な表現を持っている 682 00:37:52,000 --> 00:37:55,000 ので、私はそれらを一意に識別するための何らかの方法を持っていること 683 00:37:55,000 --> 00:37:58,000 クラス内のインスタンスの場合は2ダーヴィッツ、そこにあるといけないので。 684 00:37:58,000 --> 00:38:01,000 実際に、私はこのAIボックス、オートインクリメントを、チェックするつもりだ 685 00:38:01,000 --> 00:38:04,000 データベースは、MySQLは、割り出しように 686 00:38:04,000 --> 00:38:08,000 何ごとに新しく挿入された学生のIDがあることを行っている。 687 00:38:08,000 --> 00:38:11,000 私も、私のコードでそれを気にする必要はありません 688 00:38:11,000 --> 00:38:13,000 そして私はまた、インデックスメニューの下に何かを選択するつもりです。 689 00:38:13,000 --> 00:38:17,000 インデックスがユニークな、プライマリ持ってここにドロップダウンし、 690 00:38:17,000 --> 00:38:19,000 インデックスおよびフルテキスト。 691 00:38:19,000 --> 00:38:21,000 あなたは多分、これらの物事のカップルが何であるかを推測することができます 692 00:38:21,000 --> 00:38:24,000 それはリレーショナル·データベースに判明 693 00:38:24,000 --> 00:38:28,000 あなたプログラマやデータベース管理者が先制に着く 694 00:38:28,000 --> 00:38:32,000 どのような分野へとしてデータベースにヒントを与える 695 00:38:32,000 --> 00:38:34,000 テーブルに少し特殊です。 696 00:38:34,000 --> 00:38:37,000 >> 例えば、この場合、私はそのIDを言おうとしてる 697 00:38:37,000 --> 00:38:42,000 そうでなければ、主キーとして知られているプラ​​イマリ·インデックス、になるだろう。 698 00:38:42,000 --> 00:38:44,000 これが何を意味すると定義により今後そのIDです 699 00:38:44,000 --> 00:38:48,000 唯一、このテーブル内の学生を識別します。 700 00:38:48,000 --> 00:38:53,000 私は、この制約またはこのインデックスを課しているので、どの生徒も同じIDを持ちません。 701 00:38:53,000 --> 00:38:55,000 また、これは何を私のために何をしようとしていると、それは言うために起こっている 702 00:38:55,000 --> 00:38:58,000 MySQLは、そのIDは特別である。 703 00:38:58,000 --> 00:39:03,000 私はID​​について特に気にしますので、先に行くとあなたの空想のデータ構造のマジックを行い、 704 00:39:03,000 --> 00:39:05,000 木のいくつかの種類を構築します。 705 00:39:05,000 --> 00:39:08,000 我々は数週間前に見なかったBツリーと呼ばれ、通常、それは何か、 706 00:39:08,000 --> 00:39:11,000 それはバイナリツリーとその精神においては似た別のそのようなデータ構造だ 707 00:39:11,000 --> 00:39:15,000 そして我々が見たことしようとしますが、それは言おうとしている 708 00:39:15,000 --> 00:39:18,000 データベースには、このフィールドには、非常に重要なことを私はおそらくです 709 00:39:18,000 --> 00:39:22,000 その上で検索できるようにする、先に行くと、いくつかの空想を構築 710 00:39:22,000 --> 00:39:25,000 メモリ内のデータ構造は、検索を迅速に処理するように理想的に 711 00:39:25,000 --> 00:39:28,000 彼らは一定時間だか、少なくともその可能な限り近くに配置し 712 00:39:28,000 --> 00:39:32,000 それは線形探索に委譲することがないように、それはあることを行っていません 713 00:39:32,000 --> 00:39:34,000 最もパフォーマンスの高いアプローチ。 714 00:39:34,000 --> 00:39:37,000 これとは対照的に、電子メールアドレスは、プライマリキーだったかもしれない。 715 00:39:37,000 --> 00:39:41,000 >> あなたには、いくつかのアカウントを共有している限り、理論的には、すべての人のメールアドレスは、一意であること、 716 00:39:41,000 --> 00:39:45,000 しかし、それは文字列のようなものを使用することも大抵は良い考えではありません 717 00:39:45,000 --> 00:39:49,000 プライマリキーとして生活の中で、その目的は、一意に識別するためにあるかのため 718 00:39:49,000 --> 00:39:55,000 最大255バイトを使用する理由は、テーブル内の行をありません 719 00:39:55,000 --> 00:39:58,000 あなただけの4バイトで済むこともあれば一意に誰かを識別する 720 00:39:58,000 --> 00:40:00,000 または、32ビットint。 721 00:40:00,000 --> 00:40:03,000 一般的には、主キーは短く、簡潔であるべき 722 00:40:03,000 --> 00:40:07,000 理想的には整数または64ビットであることを起こる大きなint型のようなもの。 723 00:40:07,000 --> 00:40:11,000 しかし、電子メールアドレスは一意でなければ、あまりにもデータベースの特徴の一つべき 724 00:40:11,000 --> 00:40:14,000 私のために一意性を強制することです。 725 00:40:14,000 --> 00:40:18,000 メールアドレスの横のここにユニークな選択することによって、自分自身を電子メールであっても 726 00:40:18,000 --> 00:40:21,000 画面をオフにスクロールされて、私はデータベースに言っている 727 00:40:21,000 --> 00:40:23,000 私を信用していない。 728 00:40:23,000 --> 00:40:26,000 私はデータベースに挿入させてはいけない 729 00:40:26,000 --> 00:40:29,000 私はバカだとわからない場合でも、二度同じメールアドレス、 730 00:40:29,000 --> 00:40:32,000 私のIFSとelse ifや実際のPHPコードと非常に良い 731 00:40:32,000 --> 00:40:37,000 そして、私は誤って、ユーザーが既存のメールアドレスを使って登録できる 732 00:40:37,000 --> 00:40:40,000 データベースがまだ正しさのための防御の別のレベルである 733 00:40:40,000 --> 00:40:44,000 その重複したメールアドレスがテーブル内に終わらないことを確認します。 734 00:40:44,000 --> 00:40:49,000 >> さて、これとは対照的に、名前としては、おそらくそのユニークをしたくない 735 00:40:49,000 --> 00:40:51,000 その後、例えば、2デービズまたは2マイク·スミスが存在することができませんでしたので、 736 00:40:51,000 --> 00:40:55,000 あなたのデータベースにするため、1台の我々は言葉だけ残しておきます。 737 00:40:55,000 --> 00:40:58,000 私は、先に行くと、右下にある[保存]をクリックするつもりです 738 00:40:58,000 --> 00:41:02,000 すべてが良いように見えますが、ここまで気付く 739 00:41:02,000 --> 00:41:04,000 これが今の我々はあまりにも多くの時間を費やすしないという部分です 740 00:41:04,000 --> 00:41:07,000 構文は少し複雑であり、我々は、テーブルを作成する必要がないため、 741 00:41:07,000 --> 00:41:10,000 すべてのことが多いが、SQL自体は言語であり、 742 00:41:10,000 --> 00:41:13,000 の構文は、私が強調したことをまさにここです。 743 00:41:13,000 --> 00:41:18,000 何phpMyAdminは本当に行うのは、それはあなたのためのWebベースのGUIを作成している 744 00:41:18,000 --> 00:41:23,000 あなたは時間を節約し、手動で入力する必要はありませんするために使用できる 745 00:41:23,000 --> 00:41:26,000 そのようなかなり長いSQLクエリ。 746 00:41:26,000 --> 00:41:29,000 >> あなたがしたい場合は、他の言葉では、手動で、このテーブルを作成する 747 00:41:29,000 --> 00:41:32,000 phpMyAdminにも、その黒と白のプロンプトまたはいずれかで 748 00:41:32,000 --> 00:41:35,000 この他のタブを使用して、このSQL]タブでは、任意のSQLクエリで入力することができます 749 00:41:35,000 --> 00:41:38,000 あなたは、これが私の分を取ったでしょう、率直に言って欲しい 750 00:41:38,000 --> 00:41:41,000 実際に全体の構文を覚えて、そしてその時でさえ、私はおそらく持っているであろう 751 00:41:41,000 --> 00:41:45,000 いくつかのタイプミスをしたので、このツールはそのようなもののために有用であり、それはまた有益だ。 752 00:41:45,000 --> 00:41:49,000 あなたは、構文が何であるかを推測するために始めることができます 753 00:41:49,000 --> 00:41:52,000 ちょうどいい色でそのphpMyAdminが追加されているコーディング 754 00:41:52,000 --> 00:41:54,000 私たちの視覚的な便宜のために。 755 00:41:54,000 --> 00:41:56,000 しかし、今は代わりにこれを実行してみましょう。 756 00:41:56,000 --> 00:42:00,000 私は上部の[挿入]タブに移動して、私が先に行くと、例えば挿入できましょう 757 00:42:00,000 --> 00:42:04,000 レッツのIDが実際に言う、私は気にしないでください。 758 00:42:04,000 --> 00:42:07,000 それは、自動インクリメントになるだろう。私はこれでデータベースの契約をさせるつもりだ。 759 00:42:07,000 --> 00:42:11,000 しかし、私はデビッドなければならない、と私のメールはmalan@harvard.eduでなければなりません。 760 00:42:11,000 --> 00:42:16,000 >> のがここで先に行くと、別の一人としてマイク·スミスに入れましょう。 761 00:42:16,000 --> 00:42:18,000 私だけでなく、自分自身の姓をあげる 762 00:42:18,000 --> 00:42:22,000 そして我々は、彼がsmith@example.comことがあるでしょう 763 00:42:22,000 --> 00:42:24,000 その後次はどこへ? 764 00:42:24,000 --> 00:42:27,000 まあ、それは外出先でクリックするためのボタンであるように見えて、ほら。 765 00:42:27,000 --> 00:42:30,000 挿入された上部の2行に注目してください。 766 00:42:30,000 --> 00:42:32,000 これは実際のSQLクエリです。 767 00:42:32,000 --> 00:42:36,000 それは、私のために実行phpMyAdminのツールだ 768 00:42:36,000 --> 00:42:40,000 私は今、[参照]タブに行けば、最終的な結果であり、事前の通知、 769 00:42:40,000 --> 00:42:43,000 審美的に非常に連想させる、この表の2行を確認することです 770 00:42:43,000 --> 00:42:46,000 我々はPSET 7からユーザーの皆様のために、前に見た表の、 771 00:42:46,000 --> 00:42:51,000 の一つは、デビッドマラン、今やマイク·スミスである人の一つです。 772 00:42:51,000 --> 00:42:54,000 しかし、単に明確にするために、私は、phpMyAdminを使用する必要はありません 773 00:42:54,000 --> 00:42:56,000 そして実際に、あなたはすぐにpsetの7のコードを書くことになるだろう 774 00:42:56,000 --> 00:43:01,000 つまり、行などを、行を追加する行を削除、更新するプロセスを自動化する 775 00:43:01,000 --> 00:43:04,000 ので、ここまで私が代わりにSQL]タブに移動してみましょう 776 00:43:04,000 --> 00:43:14,000 学生はどこからセレクトしています*とタイプ 777 00:43:14,000 --> 00:43:18,000 電子メールには、= "malan@harvard.edu。" 778 00:43:18,000 --> 00:43:21,000 >> 言い換えれば、今あなたが持っていると仮定 779 00:43:21,000 --> 00:43:26,000 他のフィールドの間でいくつかのHTMLフォーム、およびその電子メールアドレスにユーザタイプ、 780 00:43:26,000 --> 00:43:29,000 そして目標は、今ではバックエンドのコードにPHPで書かれて 781 00:43:29,000 --> 00:43:31,000 実際にそのユーザーの他の詳細をルックアップします。 782 00:43:31,000 --> 00:43:34,000 あなたのフルネームは何ですか?あなたのID番号とは何ですか? 783 00:43:34,000 --> 00:43:37,000 あなたはこのようなSQLクエリを書くことができ、学生からの*を選択 784 00:43:37,000 --> 00:43:40,000 先の電子メール= "malan@harvard.edu。" 785 00:43:40,000 --> 00:43:46,000 そして私は、[Go]をクリックしたら、私は、実際に私は、ちょうど1つの行を戻して入手できますかと言うことに気がつく。 786 00:43:46,000 --> 00:43:50,000 マイクは、行の集まりとして、この結果セットから省略されている 787 00:43:50,000 --> 00:43:53,000 彼は私と同じメールアドレスを持っていないので、一般的に呼ばれています。 788 00:43:53,000 --> 00:43:57,000 >> さて、もう一度、ここのpset 7のためには、管理ツールとしてphpMyAdminを使用します 789 00:43:57,000 --> 00:44:00,000 あなたの方法を学び、教育的なツール 790 00:44:00,000 --> 00:44:03,000 SQLの世界中のですが、一日の終わりに 791 00:44:03,000 --> 00:44:08,000 あなたは、実際のP​​HPのコード内でこれらのクエリを記述することになるだろう 792 00:44:08,000 --> 00:44:11,000 など特にZamylaのチュートリアルで、ご期待 793 00:44:11,000 --> 00:44:14,000 あなたはこの問題セットの配布コードのツアーを買ってあげるところ 794 00:44:14,000 --> 00:44:18,000 我々は、ログインページの美学だけでなく、あなたを与えてくれた場所 795 00:44:18,000 --> 00:44:21,000 素敵なセクシーCS50ファイナンスを言うロゴが、我々はまた、あなたを与えてくれた 796 00:44:21,000 --> 00:44:24,000 あなたの人生が少し楽になる機能の束。 797 00:44:24,000 --> 00:44:27,000 我々はまた、あなたのためのpsetの一部を書きました 798 00:44:27,000 --> 00:44:32,000 特にそれのログイン部分、あなたの代表的デザインの感覚を与えるために 799 00:44:32,000 --> 00:44:36,000 実際に、例えば、index.phpをコントローラを使用している、 800 00:44:36,000 --> 00:44:40,000 次に考えられる理由などが挙げられ、あなたは、psetもtemplatesディレクトリを持って表示されます 801 00:44:40,000 --> 00:44:43,000 それは、美学のすべてをあなたのすべてのビューを持っています。 802 00:44:43,000 --> 00:44:46,000 などのpset 7の全体的なワークフローがあることになるだろう 803 00:44:46,000 --> 00:44:49,000 ユーザーがブラウザでURLを介してコントローラにアクセスしてください。 804 00:44:49,000 --> 00:44:53,000 そのコントローラは、あなたが書いたPHPのコードが含まれており、内部のPHPコードの 805 00:44:53,000 --> 00:44:57,000 SQLのいくつかの行は二重引用符の間にネストする可能性があり 806 00:44:57,000 --> 00:45:00,000 とクエリと呼ばれる我々が書いた関数に渡さ 807 00:45:00,000 --> 00:45:03,000 そのようなものを使用せずにデータベースに話すのに役立ちます 808 00:45:03,000 --> 00:45:05,000 phpMyAdminのような管理ツール。 809 00:45:05,000 --> 00:45:08,000 >> あなたは、PHPコード内でSQL文を記述することができるでしょう 810 00:45:08,000 --> 00:45:11,000 と、結果セットのPHPの配列を取り戻す 811 00:45:11,000 --> 00:45:14,000 実際にそのクエリに一致する行数。 812 00:45:14,000 --> 00:45:18,000 と同様にして、挿入または削除を行うことができるでしょう 813 00:45:18,000 --> 00:45:22,000 または更新など、かなり似ているための構文、 814 00:45:22,000 --> 00:45:25,000 そしてあなたは、ディストリビューション·コードから、いくつかのオンライン参考文献から表示されます 815 00:45:25,000 --> 00:45:29,000 とPSETから正確にどのようにそれをやって行くために自分自身を詰める。 816 00:45:29,000 --> 00:45:33,000 最終的に我々が本当にちょうどSQLの表面に傷をつけている実感 817 00:45:33,000 --> 00:45:36,000 とMySQLのが、それのパワーは本当にそれはあなたを解放することにある 818 00:45:36,000 --> 00:45:40,000 あなたが解決したい問題に焦点を当てることが、ユースケースあなたは実装したい 819 00:45:40,000 --> 00:45:43,000 少なくとも初期の段階で、全く同じくらい気にせず、 820 00:45:43,000 --> 00:45:47,000 どこで、どのようにあなたのデータベースを格納および検索するには、約 821 00:45:47,000 --> 00:45:50,000 Facebook自身がそのスタートを切ったところ、これは文字通りです 822 00:45:50,000 --> 00:45:53,000 MySQLを使用してから、次に複数のMySQLサーバと複数のMySQLサーバを使用して 823 00:45:53,000 --> 00:45:57,000 彼らはその後、実際にする方法について真剣に考え始めなければならなかったまで、ずっと前 824 00:45:57,000 --> 00:46:00,000 さらに効率的に物事を格納する方法データを格納、 825 00:46:00,000 --> 00:46:04,000 事実を当然のことと私たちは取るよそうでも、そのインデックスと一意性制約 826 00:46:04,000 --> 00:46:08,000 などだけで非常に面白い会話がある仕事 827 00:46:08,000 --> 00:46:12,000 これはすべて、最終的につながることができますので、我々だけで表面を傷つけていることを実感 828 00:46:12,000 --> 00:46:17,000 ものの最終的には、あなたやあなたのプロジェクトでは、ビッグデータのかなりになる可能性があるため。 829 00:46:17,000 --> 00:46:22,000 >> そうは言っても、のはここで終わらせて、来週お会いしましょう​​。 830 00:46:28,000 --> 00:46:30,000 [CS50.TV]