1 00:00:00,000 --> 00:00:03,920 >> [音楽再生] 2 00:00:03,920 --> 00:00:11,760 3 00:00:11,760 --> 00:00:13,800 >> デイビット·J·マラン:すべての権利。 4 00:00:13,800 --> 00:00:15,640 これはCS50です。 5 00:00:15,640 --> 00:00:17,620 これは、週8のスタートです。 6 00:00:17,620 --> 00:00:22,440 そして、あなたは私たちがオフに左ことを思い出すかもしれ 前回新しい言語を見て 7 00:00:22,440 --> 00:00:23,240 完全に。 8 00:00:23,240 --> 00:00:25,905 実際には、かなりのOne 軽量、それもありません 9 00:00:25,905 --> 00:00:26,940 プログラミング言語。 10 00:00:26,940 --> 00:00:31,100 それは、私たちをことができますマークアップ言語です 実際にWebページを構築してください。 11 00:00:31,100 --> 00:00:33,350 とするとき、他に何か this--と一緒に 12 00:00:33,350 --> 00:00:35,670 またはあなたはすぐでしょう、もし あなたはすでに持っていない。 13 00:00:35,670 --> 00:00:38,530 私たちは、カスケーディングを使用するつもりだ スタイルシート、またはCSS、どの 14 00:00:38,530 --> 00:00:40,971 言語別のタイプである プロパティと値を持つ 15 00:00:40,971 --> 00:00:43,220 それは私たちがやらせるために起こっている 色を変更するようなもの 16 00:00:43,220 --> 00:00:46,010 位置を変える と微調整これらの種類。 17 00:00:46,010 --> 00:00:49,940 しかし、今日以降、私たちはし始める より強力な言語に焦点を当て、 18 00:00:49,940 --> 00:00:52,810 PHPのような実際のプログラミング言語。 19 00:00:52,810 --> 00:00:54,880 >> だから、PHPはしばらくの周りされています。 20 00:00:54,880 --> 00:00:56,810 そして、あなたは、それを見ることができますように 主に設計されました 21 00:00:56,810 --> 00:01:00,280 早い段階で実際のために Web開発で使用 22 00:01:00,280 --> 00:01:02,360 実際にWebページを生成する。 23 00:01:02,360 --> 00:01:04,849 だから何の種類の 機能には、言語を行います 24 00:01:04,849 --> 00:01:10,040 ウェブを作るために必要 動的にそれを使用したページ? 25 00:01:10,040 --> 00:01:14,760 >> 言い換えれば、あなたが生成したい場合は、 Facebookのようなコンテンツdynamically-- 26 00:01:14,760 --> 00:01:19,480 常に変化ニュースフィード、または 時からポップアップするインスタントメッセージ 27 00:01:19,480 --> 00:01:21,872 何のようにtime--する 機能性の重要な部分 28 00:01:21,872 --> 00:01:24,580 あなたがプログラミング言語で必要 それは、動的にあなたを聞かせて 29 00:01:24,580 --> 00:01:28,070 画面に新しい情報を印刷? 30 00:01:28,070 --> 00:01:28,685 >> 学生:コード。 31 00:01:28,685 --> 00:01:29,560 デイビット·J·マラン:コード。 32 00:01:29,560 --> 00:01:30,440 [OK]をクリックします。 33 00:01:30,440 --> 00:01:31,995 我々はそれを取るよ。 34 00:01:31,995 --> 00:01:35,310 もう少し正確に。 35 00:01:35,310 --> 00:01:37,639 私は意味、私たちは何ができる 率直に言って、Cを使用して、この。 36 00:01:37,639 --> 00:01:38,930 これは、首の痛みになります。 37 00:01:38,930 --> 00:01:41,045 このコミットメントはBut--のですか? 38 00:01:41,045 --> 00:01:41,895 >> 学生:うん。 39 00:01:41,895 --> 00:01:42,677 変数、多分? 40 00:01:42,677 --> 00:01:43,760 デイビット·J·マラン:変数。 41 00:01:43,760 --> 00:01:44,160 [OK]を、確認してください。 42 00:01:44,160 --> 00:01:45,740 変数は、確かに私たちを助けることができます。 43 00:01:45,740 --> 00:01:47,020 そしてさらに簡単なもの。 44 00:01:47,020 --> 00:01:50,640 我々は非常に最初にそれを使用して 初日のプログラム 45 00:01:50,640 --> 00:01:55,686 私たちは実際に "Hello World。"と言ったとき 46 00:01:55,686 --> 00:01:56,570 >> 学生:印刷。 47 00:01:56,570 --> 00:01:57,778 >> デイビット·J·マラン:印刷、右? 48 00:01:57,778 --> 00:02:01,050 印刷、または中のprintf C.だから、このすべての時間の世界で、 49 00:02:01,050 --> 00:02:03,362 我々は我々で持っていた 処分language-- C、 50 00:02:03,362 --> 00:02:05,570 particular--でさえ そのことについてはスクラッチという 51 00:02:05,570 --> 00:02:07,400 テキストの文字列を生成することができます。 52 00:02:07,400 --> 00:02:11,090 >> HTMLの場合にはまあ、我々は先週見たように、である テキストの文字列のちょうど全体の束 53 00:02:11,090 --> 00:02:14,692 オープンブラケットと閉じたとはいえ ブラケットと韻のいくつかの種類 54 00:02:14,692 --> 00:02:16,650 そしてその背後にある理由は、 よくして私たちは本当にできた 55 00:02:16,650 --> 00:02:20,440 いずれかのWebページの生成を開始 手動でgeditの中でそれらを入力して、 56 00:02:20,440 --> 00:02:23,870 またはMicrosoft Wordで、そのための 私たちは単なるテキストエディタが必要matter--。 57 00:02:23,870 --> 00:02:26,830 >> または私達は、コードを書くことができます あなたの提案に 58 00:02:26,830 --> 00:02:30,435 以前、それは私たちをみましょう 動的にHTMLを生成、 59 00:02:30,435 --> 00:02:32,560 そしてそれは我々が行っているものだ PHPでやって起動する 60 00:02:32,560 --> 00:02:34,900 そして最終的にさえ付き JavaScriptが呼ばれる言語、 61 00:02:34,900 --> 00:02:37,910 別のものを生成するために一つの言語を使用しています。 62 00:02:37,910 --> 00:02:40,720 そして実際、これは何のFacebookです そして多くの、多くの他のサイト 63 00:02:40,720 --> 00:02:44,530 実際に動的に行うこと あなたに新たな情報を表示する。 64 00:02:44,530 --> 00:02:47,117 >> それではthis-- Aで始めましょう 不可解な探してラインが、一 65 00:02:47,117 --> 00:02:48,450 それは実際にはかなり強力です。 66 00:02:48,450 --> 00:02:51,210 これまでのところ、我々は、Cを使用してきた、 そのコンパイル言語です。 67 00:02:51,210 --> 00:02:55,050 そして、ちょうど迅速recap--は、コンパイルされた 言語は何な特性を持って? 68 00:02:55,050 --> 00:02:59,050 あなたは明らかにコンパイルする必要が それは、それは何を意味するのでしょうか? 69 00:02:59,050 --> 00:03:00,505 うん? 70 00:03:00,505 --> 00:03:02,940 >> STUDENT:それはする必要がある マシンコードにアセンブル。 71 00:03:02,940 --> 00:03:03,060 >> デイビット·J·マラン:OK。 72 00:03:03,060 --> 00:03:04,530 これは、組み立てする必要があります マシンコードに変換する。 73 00:03:04,530 --> 00:03:07,340 それで、あなたは、あなたのソースコードを取る その英語に似たの一種である。 74 00:03:07,340 --> 00:03:09,270 あなたはにそれを変換する 何か低いレベル、 75 00:03:09,270 --> 00:03:11,590 最終的に呼び出される オブジェクトには、0と1 code--。 76 00:03:11,590 --> 00:03:14,830 そして、それは、これらの0年代と1のその CPUは、Intelによって作られたもののように、 77 00:03:14,830 --> 00:03:16,110 実際に理解しています。 78 00:03:16,110 --> 00:03:19,690 >> さて、PHPやPythonとRubyと JavaScriptやその他の束 79 00:03:19,690 --> 00:03:23,190 言語はコンパイルされません 言語が、言語を解釈し、 80 00:03:23,190 --> 00:03:26,630 その意味あなただけのそれらを入力し、 あなたは0と1にそれらをオンにしないでください。 81 00:03:26,630 --> 00:03:30,790 代わりに、同じようにそれから提供 誰か他の人のプログラムへの入力、 82 00:03:30,790 --> 00:03:32,080 インタプリタと呼ばれる。 83 00:03:32,080 --> 00:03:34,460 そして、その人の プログラムが設計されています 84 00:03:34,460 --> 00:03:38,280 何それぞれを理解する PythonやPHPのすべてのシンボル 85 00:03:38,280 --> 00:03:42,650 Rubyや任意の数または 他の言語を意味します。 86 00:03:42,650 --> 00:03:44,760 >> そして私たちが必要とするすべてがある このような何か。 87 00:03:44,760 --> 00:03:46,350 だから実際には、私はするつもりだ アプライアンスにオーバー行く 88 00:03:46,350 --> 00:03:48,100 ここでは、ただの中へ 古いウィンドウ、そして我々だ 89 00:03:48,100 --> 00:03:52,580 先にオープンに行くつもり というファイルが、こんにちは、と言う。 90 00:03:52,580 --> 00:03:55,780 さて、以前、私が保存されている可能性があります この場合でもファイル拡張子を持つ、 91 00:03:55,780 --> 00:03:57,910 しかし、私は何をするつもりです ここにさらに簡単なもの。 92 00:03:57,910 --> 00:04:02,450 私が先に行くと開始するつもりだ この不可解な構文では、このファイル。 93 00:04:02,450 --> 00:04:06,310 だから、「ユーザー、ビン、ENV、 環境のため、PHP。」 94 00:04:06,310 --> 00:04:10,670 >> これは、単にのコードの1行です 私のオペレーティングシステムを言うつもり、 95 00:04:10,670 --> 00:04:13,730 お近くに探しに行く つまり、どのような環境 96 00:04:13,730 --> 00:04:18,149 PHPはinterpreter--をis--どこ と先に行くと、そのインタプリタを使う 97 00:04:18,149 --> 00:04:20,589 次のコードを解釈する。 98 00:04:20,589 --> 00:04:22,760 さて、これは一種のです PHPの醜い機能。 99 00:04:22,760 --> 00:04:24,980 しかし、この言語では、どの 時間はあなたが、PHPコードを書く 100 00:04:24,980 --> 00:04:29,200 あなたはこれらの醜いの一つを持っている必要があります 先頭を画定PHPタグ 101 00:04:29,200 --> 00:04:32,220 あなたのcode-- <?phpのの。 102 00:04:32,220 --> 00:04:37,430 >> しかし、ここの下に、私は今何かを行うことができます printfのハローコンマのような、非常に簡単 103 00:04:37,430 --> 00:04:40,922 世界のバックスラッシュnは近い 引用符、閉じ括弧。 104 00:04:40,922 --> 00:04:42,630 その後ちょうど良いため 対策は、私は行くよ 105 00:04:42,630 --> 00:04:45,380 先と密接行く こっち私のPHPのタグ 106 00:04:45,380 --> 00:04:47,390 その結果、すべてのルックス きれいにきれいに印刷。 107 00:04:47,390 --> 00:04:50,780 >> とすぐに私は、[保存]をクリックしますように geditのは十分に実際にスマートです 108 00:04:50,780 --> 00:04:54,620 まさにその最初の行を見てと 実現する、ああ、あなたがPHPコードを書いている。 109 00:04:54,620 --> 00:04:56,710 てみましょう私の構文ハイライト それ色 110 00:04:56,710 --> 00:04:58,690 ここにそれが立っているように、 もう少し外。 111 00:04:58,690 --> 00:05:01,300 しかし、今私は行くつもりです 私のターミナルウィンドウにダウン。 112 00:05:01,300 --> 00:05:02,340 私は、ズームインします。 113 00:05:02,340 --> 00:05:06,860 >> このプログラムは、「ハロー」と呼ばれていた 私は、ハロードットスラッシュをするつもりです 114 00:05:06,860 --> 00:05:07,990 しかし、権限が拒否されました。 115 00:05:07,990 --> 00:05:08,490 そしてbashの。 116 00:05:08,490 --> 00:05:10,610 私たちは、実際にそのことを聞いた 事数週間前 117 00:05:10,610 --> 00:05:13,140 シェルショックの状況において、 それらのバグの一つ。 118 00:05:13,140 --> 00:05:16,240 >> しかし、権限は我々が見てきたが拒否 多分別の文脈で、前に。 119 00:05:16,240 --> 00:05:19,060 誰もがどのように思い出すん あなたが何かを修正するかもしれない 120 00:05:19,060 --> 00:05:22,100 許可は、次のように拒否された場合に? 121 00:05:22,100 --> 00:05:23,490 少なくとも、コマンドは何ですか? 122 00:05:23,490 --> 00:05:24,159 >> STUDENTます。chmod。 123 00:05:24,159 --> 00:05:26,700 デイビット·J·マラン:うん、chmodの、 ファイルのモードを変更する。 124 00:05:26,700 --> 00:05:30,171 そして、あなたはすべてのそれ以上に慣れるでしょう その後の問題でこの来週 125 00:05:30,171 --> 00:05:30,670 設定してください。 126 00:05:30,670 --> 00:05:33,211 しかし、今のところ、私は変更するつもりです 読めるようにしないモード、 127 00:05:33,211 --> 00:05:36,650 みんなのexecuteabilityを与えるために 権限、能力 128 00:05:36,650 --> 00:05:37,710 このファイルを実行します。 129 00:05:37,710 --> 00:05:40,360 そして、私は割り当てるつもりです ファイルへの挨拶。 130 00:05:40,360 --> 00:05:45,150 >> 私は今あなたが、入力したハロードットスラッシュない場合 実際には、参照して、私のプログラム、Hello Worldの。 131 00:05:45,150 --> 00:05:48,760 そして、何のステップは、私がやった 明らかに完全にスキップ? 132 00:05:48,760 --> 00:05:49,520 コンパイル。 133 00:05:49,520 --> 00:05:51,680 だから、僕は非常に単純にこのプログラムを実行しました。 134 00:05:51,680 --> 00:05:55,690 >> そして、それはあなたがでこれを行うことができます判明 C.を彷彿とさせる構文の多く 135 00:05:55,690 --> 00:06:03,400 私は、今日のコードにで行こう、 その私は私のバーチャルホストディレクトリに置く 136 00:06:03,400 --> 00:06:05,250 ここでは、本当の理由のために 我々は戻って来る。 137 00:06:05,250 --> 00:06:09,350 そして、私は、入るつもりだ 条件1、の言わせて。 138 00:06:09,350 --> 00:06:12,450 >> そして、あなたは最初に、ここに表示されますと、 何よりも、コメントの全体の束。 139 00:06:12,450 --> 00:06:15,240 しかし、これは実際にある PHPの再作成 140 00:06:15,240 --> 00:06:18,960 私たちは一週間でやったプログラムの 1と呼ばれる条件1.C 141 00:06:18,960 --> 00:06:20,690 ここでの目的で このプログラムの人生 142 00:06:20,690 --> 00:06:22,950 尋ねることは明らかである 整数のためのユーザー 143 00:06:22,950 --> 00:06:25,270 その後いくつかのふわふわを行う その上で分析することにより 144 00:06:25,270 --> 00:06:29,510 それはポジティブだ場合、またはあなたが言う 負またはゼロに等しい。 145 00:06:29,510 --> 00:06:34,220 そして、私はこれだけを持ち出すので、 多分一つの小さなディテールを除いて、 146 00:06:34,220 --> 00:06:37,150 それは、これまでCから区別がつかないです 147 00:06:37,150 --> 00:06:39,930 >> 一つの特徴は何ですか ここでその多分飛び出し 148 00:06:39,930 --> 00:06:41,410 少し違うとしてあなたは? 149 00:06:41,410 --> 00:06:42,160 多分二つのこと。 150 00:06:42,160 --> 00:06:42,660 うん? 151 00:06:42,660 --> 00:06:44,070 >> 学生:ドル記号nは? 152 00:06:44,070 --> 00:06:44,944 >> デイビット·J·マラン:うん。 153 00:06:44,944 --> 00:06:46,210 だから、ドル記号nが存在している。 154 00:06:46,210 --> 00:06:48,120 としてドル記号、 我々は、表示されますしようとしている 155 00:06:48,120 --> 00:06:51,460 先頭に修正すべき PHPで任意の変数の。 156 00:06:51,460 --> 00:06:54,250 これは、両方の良いとbad--良いことだ それは一種のは明らかだ何だということ 157 00:06:54,250 --> 00:06:56,797 それはだという点で悪い変数、 さらに別のものが入力します。 158 00:06:56,797 --> 00:06:58,630 そして、他の1があります 我々はなく、かなり持っているもの 159 00:06:58,630 --> 00:07:00,876 少なくともこのスペルによって、見られる。うん? 160 00:07:00,876 --> 00:07:01,630 >> 学生:Readlineの。 161 00:07:01,630 --> 00:07:02,671 >> デイビット·J·マラン:Readlineの。 162 00:07:02,671 --> 00:07:06,550 私たちは、それ自体が、見ていないのreadline 何かがそこに存在していても、C、 163 00:07:06,550 --> 00:07:09,530 類似したが、我々はにgetStringを使用しました、 これはその対応物である。 164 00:07:09,530 --> 00:07:12,950 だから私はこの中に行けば であることを起こるディレクトリ、 165 00:07:12,950 --> 00:07:18,030 私は私のバーチャルホスト内のビットに説明しますように ディレクトリと私のソースディレクトリ、 166 00:07:18,030 --> 00:07:22,730 と私は先に行くと、ドットスラッシュを行う conditions-- whoops--ドットスラッシュ 167 00:07:22,730 --> 00:07:26,710 条件1、あなたは再び、わかります、 同じissue--パーミッションが拒否されました。 168 00:07:26,710 --> 00:07:33,610 >> だから私はズームインしましょう​​とプラスします。chmodやる 条件は、ドットスラッシュ条件のx。 169 00:07:33,610 --> 00:07:35,222 私は50、整数をお願いしたいと思います。 170 00:07:35,222 --> 00:07:36,930 そして、我々はこれをプレイできる ゲーム一日中。 171 00:07:36,930 --> 00:07:39,140 それは、正確に動作するように起こっている それは週1で行ったように。 172 00:07:39,140 --> 00:07:42,860 >> を除いて、[OK]をので、すべてその違いはない 構文だけではなく、そのわずかなビット、 173 00:07:42,860 --> 00:07:45,490 しかし上部に、私を再び この行を持っていた 174 00:07:45,490 --> 00:07:49,760 私はその何かを作成することが許可された 、ハローと呼ばれるCプログラムのように見える 175 00:07:49,760 --> 00:07:51,150 条件1と呼ばれる。 176 00:07:51,150 --> 00:07:54,520 しかし、それは0とものではありません 私が直接実行するよ。 177 00:07:54,520 --> 00:07:57,620 それは、代わりにこれを実行している 名前はインタプリタ 178 00:07:57,620 --> 00:07:59,440 言語と同じであることを起こる。 179 00:07:59,440 --> 00:08:04,970 プログラムは、私のコードはPHPと呼ばれ、 行の下に1はそれに渡されている。 180 00:08:04,970 --> 00:08:07,740 >> 私たちは別のかなり単純なを行うことができます 何かを連想させる例 181 00:08:07,740 --> 00:08:09,240 我々は数週間前にやった。 182 00:08:09,240 --> 00:08:12,020 再び、これは一種である コー​​ドの任意のチャンク 183 00:08:12,020 --> 00:08:14,000 それは明らかにしない あなたはそれが何を実行したとき? 184 00:08:14,000 --> 00:08:15,625 これは何は、おそらく、印刷するために起こっているのですか? 185 00:08:15,625 --> 00:08:23,540 186 00:08:23,540 --> 00:08:28,250 >> だから、当初は16行目に、それはだ xはおそらく、今2であると言うつもり。 187 00:08:28,250 --> 00:08:30,920 %dはprintfのための$ Iと同じです。 188 00:08:30,920 --> 00:08:33,460 だから、それは乗する'S、ドット、 ドットは、17行目では、点在しています。 189 00:08:33,460 --> 00:08:36,299 その後18が表示され、ライン 機能Cubedのを呼び出します。 190 00:08:36,299 --> 00:08:37,600 とcubedはどこに定義されている? 191 00:08:37,600 --> 00:08:40,319 >> まあ、それは、25行でどのように見える だから、すべてのことが異なるではありません。 192 00:08:40,319 --> 00:08:42,610 私は上記のいくつかのコメントを持っている それは、ほとんどの部分について、 193 00:08:42,610 --> 00:08:45,370 それはかなり簡単だ 移植または変換 194 00:08:45,370 --> 00:08:48,470 PHPバージョンのCプログラムから。 195 00:08:48,470 --> 00:08:52,670 しかし、今のがいくつかあります 多分飛び出すべきです違い。 196 00:08:52,670 --> 00:08:56,100 他に何することで、どの程度異なっている C言語でこれと同じプログラムを書くのでしょうか? 197 00:08:56,100 --> 00:08:57,900 >> 学生:[聞こえない]。 198 00:08:57,900 --> 00:09:00,070 >> デイビット·J·マラン:あります トップアッププロトタイプません。 199 00:09:00,070 --> 00:09:03,210 だからPHP--と率直に言って、 現代のlanguages​​--たくさんの 200 00:09:03,210 --> 00:09:06,920 たくさん賢く、より有用である そのあなたのCコンパイラより 201 00:09:06,920 --> 00:09:09,740 ここに機能を置くことができ、 あなたは、ここでダウン機能を置くことができます 202 00:09:09,740 --> 00:09:12,740 そしてインタプリタが起こっている あなたの読書の賛成を行うには 203 00:09:12,740 --> 00:09:16,010 ファイル全体、それが決定する前に いくつかの関数が存在しないこと。 204 00:09:16,010 --> 00:09:17,970 年後にとても素敵な改善。 205 00:09:17,970 --> 00:09:22,126 しかし、また何かが 他に異なる、またはここに存在しない。 206 00:09:22,126 --> 00:09:22,626 うん? 207 00:09:22,626 --> 00:09:25,084 >> 学生:[聞こえない]。 208 00:09:25,084 --> 00:09:27,750 デイビット·J·マラン:我々はする必要はありません 変数の型を宣言し、 209 00:09:27,750 --> 00:09:31,780 私たちは長い間その前に表示されます PHPのさまざまなタイプがあり、 210 00:09:31,780 --> 00:09:34,970 しかし、あなたは、それらを指定する必要はありません、 これも良い面と悪い面の両方です。 211 00:09:34,970 --> 00:09:36,623 そして行方不明1他の事はあります。 212 00:09:36,623 --> 00:09:37,430 >> 学生:何のライブラリがありません。 213 00:09:37,430 --> 00:09:38,630 >> デイビット·J·マラン:なしライブラリはありません。 214 00:09:38,630 --> 00:09:39,350 [OK]を、ので、それはうれしいです。 215 00:09:39,350 --> 00:09:40,540 私たちは、箱から出して、より多くを得る。 216 00:09:40,540 --> 00:09:43,373 だから、実際にはもっとたくさんあり​​ます 思ったより物事が異なっていた。 217 00:09:43,373 --> 00:09:44,350 どのように後ろに道はどうですか? 218 00:09:44,350 --> 00:09:46,032 何それ? 219 00:09:46,032 --> 00:09:46,740 もう一度それを言う? 220 00:09:46,740 --> 00:09:47,960 >> 学生:ポインタ。 221 00:09:47,960 --> 00:09:49,270 >> デイビット·J·マラン:いいえポインタ。 222 00:09:49,270 --> 00:09:51,280 OK、少なくともこの例では、ノー。 223 00:09:51,280 --> 00:09:52,070 それはフェアだ。 224 00:09:52,070 --> 00:09:55,090 だから、ポインタが存​​在しない 実際に一般的にPHPで。 225 00:09:55,090 --> 00:09:58,730 何か呼ばれる参照がありますが、 しかし、我々はそこにあまりにも多くの時間を費やすことはありません。 226 00:09:58,730 --> 00:09:59,520 そして他に何? 227 00:09:59,520 --> 00:10:00,185 >> 学生:メイン。 228 00:10:00,185 --> 00:10:01,060 デイビット·J·マラン:メイン。 229 00:10:01,060 --> 00:10:02,768 だから、これはとても重要だった 私が考えていた。 230 00:10:02,768 --> 00:10:04,660 全くメインエントリポイントがありません注意してください。 231 00:10:04,660 --> 00:10:06,525 あなたは、単にあなたのコードを書き始める。 232 00:10:06,525 --> 00:10:08,400 そして、これは実際にある 有利になるだろう 233 00:10:08,400 --> 00:10:10,560 我々は、移行時 一瞬、実際に使用する 234 00:10:10,560 --> 00:10:13,980 Webベースのためのこの同じ言語 私たちのためのプログラミング、 235 00:10:13,980 --> 00:10:16,580 ただ一つのエントリ·ポイントを持っている必要はありません。 236 00:10:16,580 --> 00:10:19,980 私たちはの束を持っているしたい場合があります URLは、異なるファイルの束 237 00:10:19,980 --> 00:10:22,930 すべてのユーザー入力を取り込み そして出力を生成する。 238 00:10:22,930 --> 00:10:27,130 >> しかし、ここでは非常にがっかりするものである たとえば私は、最後の時間を約束していること 239 00:10:27,130 --> 00:10:30,130 すなわち、このフォルダ内の ここでは、スペルミス。 240 00:10:30,130 --> 00:10:33,680 これは、このファイルのスペルチェックでだから私たち があり、上あまりにも多くの時間を費やすことはありません 241 00:10:33,680 --> 00:10:37,870 本質porting-- P-O-R-T。 それは、たとえば特定の言葉だけだ 242 00:10:37,870 --> 00:10:40,800 あなたは一つの言語から変換する 手動で通常別。 243 00:10:40,800 --> 00:10:45,680 >> これは、PCの移植である PSET 5からのスペルチェックのバージョン。 244 00:10:45,680 --> 00:10:48,856 そして、私は基本的に変換しようとした として密接に私ができるようラインによってそれライン。 245 00:10:48,856 --> 00:10:51,730 ですから、この種のものを好めば、 実際にはいくつかの点で価値がある 246 00:10:51,730 --> 00:10:54,229 並べて、それらの両方を引き上げ サイドと同じだものを見 247 00:10:54,229 --> 00:10:55,230 と異なるものだ。 248 00:10:55,230 --> 00:10:57,510 しかし、彼らはかなりくそ似ています。 249 00:10:57,510 --> 00:11:00,110 あなたが覚えていれば何 スペルさえ、ように見えた 250 00:11:00,110 --> 00:11:02,110 あなたはしませんでしたにもかかわらず、 このファイルを変更する必要があり、 251 00:11:02,110 --> 00:11:04,860 それはかなり似ています 構造的にちょうどカップルと 252 00:11:04,860 --> 00:11:06,200 あちこちの変更。 253 00:11:06,200 --> 00:11:10,140 >> だから、これは唯一のそれはかなりだと言うことです スペルに変換するのは簡単 254 00:11:10,140 --> 00:11:12,000 CからPHPへ。 255 00:11:12,000 --> 00:11:15,390 しかし、辞書に、あります さらに魅力的なもの。 256 00:11:15,390 --> 00:11:19,270 私が先に行くと、作成してみましょう 私自身のdictionary.phpファイル。 257 00:11:19,270 --> 00:11:24,010 その中のSO若干異なる 我々は.Cの代わりにそれを.phpを呼ぶことにします。 258 00:11:24,010 --> 00:11:26,980 これはPHPのファイルであるため、私は 少し持っているannoyingly-- do-- 259 00:11:26,980 --> 00:11:30,132 を使用してファイルを開始する そのようなPHPタグ。 260 00:11:30,132 --> 00:11:32,340 そして、私は先に行くつもりです そしていくつかの関数を定義します。 261 00:11:32,340 --> 00:11:35,770 あるチェック、呼び出された関数 前のような言葉で取るつもり。 262 00:11:35,770 --> 00:11:37,520 しかし、この引数の ドルを持っているつもり 263 00:11:37,520 --> 00:11:39,840 私たちは、再び、PHPを使用しているので、ログインしてください。 264 00:11:39,840 --> 00:11:42,350 から別の関数 dictionary.cは、負荷だった 265 00:11:42,350 --> 00:11:47,120 そしてそれは、辞書の名の下に取った 私は行く準備ができて、その機能を得るでしょう。 266 00:11:47,120 --> 00:11:50,920 >> dictionary.cにおけるもう一つは何でしたか? 267 00:11:50,920 --> 00:11:54,580 サイズは、素敵なものの一つであった 少なくともあなたの周りいくつかの変数を保持していた場合。 268 00:11:54,580 --> 00:11:57,830 そうサイズがちょうど変数を返すために持っています。 269 00:11:57,830 --> 00:11:59,090 その後、アンロードがあった。 270 00:11:59,090 --> 00:12:02,830 >> だから、これらの4つがありました 問題の関数は5を設定 271 00:12:02,830 --> 00:12:06,770 あなたが実装するために必要なこと いくつかのデータ構造または構造。 272 00:12:06,770 --> 00:12:10,170 だから私はであることを約束した PHPは、我々は宣言できます 273 00:12:10,170 --> 00:12:14,490 ハッシュテーブルは、例えば、 すべてのことがより簡単に。 274 00:12:14,490 --> 00:12:17,377 実際、私はハッシュテーブルをしたい場合は、 私はちょうどそのように行くつもりです 275 00:12:17,377 --> 00:12:18,460 と私のハッシュテーブルがあります。 276 00:12:18,460 --> 00:12:21,555 そして、それはノートでは、がっかりするものだ 我々は、最後の時間にオフに残した。 277 00:12:21,555 --> 00:12:23,930 私が欲しかった場合、あなたは、何を知っている サイズ可変の、よく、 278 00:12:23,930 --> 00:12:25,867 この1だけではありません Cからの、異なる、 279 00:12:25,867 --> 00:12:27,450 しかし、私は先に行くとそれを行うつもりです。 280 00:12:27,450 --> 00:12:28,630 とはデータの種類を気づかない。 281 00:12:28,630 --> 00:12:31,180 そして、私は後で戻って行くよと 実際に、ここでいくつかのコメントを追加します。 282 00:12:31,180 --> 00:12:32,480 しかし、どのような負荷はどうですか? 283 00:12:32,480 --> 00:12:35,780 >> もしドル記号辞書 私のファイルの名前です 284 00:12:35,780 --> 00:12:39,600 そして私は実際にロードしたい 今、このテーブルへの言葉、 285 00:12:39,600 --> 00:12:42,360 私は実際に行うことができます かなりシンプルなもの。 286 00:12:42,360 --> 00:12:44,880 ボックスで探して、これはminorlyです PHPでannoying--、 287 00:12:44,880 --> 00:12:47,710 あなたが内側に指定する必要が あなたの場合、関数の 288 00:12:47,710 --> 00:12:51,060 いくつかのグローバルにアクセスしたい 外で定義されています変数。 289 00:12:51,060 --> 00:12:53,530 >> しかし、それは特にありません 今は興味深い。 290 00:12:53,530 --> 00:12:57,920 何より興味深いのは、これはそれぞれのためのものです 私は最後の時間を言及することを構築する。 291 00:12:57,920 --> 00:13:01,880 そして、PHPの機能を有することが判明 その目的は生活の中で呼ばれるファイル 292 00:13:01,880 --> 00:13:05,550 ファイルを開いて読み込むことです その行のすべての配列に 293 00:13:05,550 --> 00:13:06,840 そして背中にそれらを手渡す。 294 00:13:06,840 --> 00:13:12,170 >> 私は辞書を行うことができます言うことである それが今効果的に私は、ファイルを呼び出すときに、 295 00:13:12,170 --> 00:13:15,472 これは私を手に起こっている ファイルからの単語の配列。 296 00:13:15,472 --> 00:13:16,430 それはすべての良いことではありません。 297 00:13:16,430 --> 00:13:20,130 それはまだラインになるだろう 言葉の、直線的なもの。 298 00:13:20,130 --> 00:13:23,880 しかし、私は先に行くと、繰り返すことができます 使用して、これらの各単語の上 299 00:13:23,880 --> 00:13:25,710 その構文は、我々は簡単に最後の時間を見た。 300 00:13:25,710 --> 00:13:27,940 そして、あなたはより多くのそれが表示されます 今後のPSETで。 301 00:13:27,940 --> 00:13:32,070 >> しかし、今私は、ループ反復を持っている 辞書中の各単語の上。 302 00:13:32,070 --> 00:13:36,100 各反復で、私は思い出す 現在の単語を呼び出す」という言葉を。」 303 00:13:36,100 --> 00:13:39,790 そして、すべてのそれはに連れて行くために起こっている 辞書に単語を入れている 304 00:13:39,790 --> 00:13:43,530 単語の推測になるだろう「真。」 305 00:13:43,530 --> 00:13:44,740 それは私のinsert関数です。 306 00:13:44,740 --> 00:13:46,661 それは私のロード機能です 私の辞書のために。 307 00:13:46,661 --> 00:13:49,410 今ではのでチートのビットですが、 あなたが実際に何があるか、知っている 308 00:13:49,410 --> 00:13:52,920 言葉の終わりにバックスラッシュn個の 私はおそらくを取り除く必要があること、 309 00:13:52,920 --> 00:13:56,380 PHPが持っているので、それは問題ではない チョップどの文字通り呼ばれる関数 310 00:13:56,380 --> 00:13:58,480 最後の最後に1文字ずつオフチョップ。 311 00:13:58,480 --> 00:13:59,400 だから、そこには問題ありません。 312 00:13:59,400 --> 00:14:02,199 我々は先に、実際に行ってきた そのちょうどこのに短縮。 313 00:14:02,199 --> 00:14:05,240 そして今、私はおそらく追跡する必要があります サイズのために、そうしてみましょう少なくともthis--を行う 314 00:14:05,240 --> 00:14:05,835 サイズ++。 315 00:14:05,835 --> 00:14:07,339 私は以前のようにそれを行うことができます。 316 00:14:07,339 --> 00:14:10,380 その後これはおそらくしようとしている それではtrueを返すように、うまく動作。 317 00:14:10,380 --> 00:14:10,930 Doneを。 318 00:14:10,930 --> 00:14:11,797 PSET 5。 319 00:14:11,797 --> 00:14:13,545 >> [笑い] 320 00:14:13,545 --> 00:14:14,420 >> デイビット·J·マラン:OK。 321 00:14:14,420 --> 00:14:16,628 我々は再びそれをやろうとしている 次のPSETで、あまりにも。 322 00:14:16,628 --> 00:14:18,730 だから、どのようなサイズはどうですか? 323 00:14:18,730 --> 00:14:22,080 さて、これはうまくいけば約ある あなたが最後の時間を期待するように、 324 00:14:22,080 --> 00:14:24,460 私がしなければならないものの、 この愚かなグローバルなもの。 325 00:14:24,460 --> 00:14:26,610 それはからわずかアーティファクトだ 言語のデザイン。 326 00:14:26,610 --> 00:14:28,450 >> しかし、チェックはもう少し興味深いものです。 327 00:14:28,450 --> 00:14:31,420 だから私はドルに渡された場合 私は最初、言葉に署名 328 00:14:31,420 --> 00:14:34,060 へのアクセスを許可する そのグローバル変数テーブル。 329 00:14:34,060 --> 00:14:36,700 そして今、私がしたい場合は、 単語がある場合には、確認 330 00:14:36,700 --> 00:14:44,350 それが事実である場合、私は単純に言うことができます 以下のテーブルに設定され、 331 00:14:44,350 --> 00:14:49,957 その後、先に行くとリターン はtrue。他に、falseを返す。 332 00:14:49,957 --> 00:14:51,180 Doneを。 333 00:14:51,180 --> 00:14:52,440 PSET 5の他の半分。 334 00:14:52,440 --> 00:14:54,540 >> すべての権利なので、再び、私は今 いくつかのコーナーをカットする。 335 00:14:54,540 --> 00:14:56,831 公平に、私はおそらくべき さらに数秒を過ごす 336 00:14:56,831 --> 00:14:58,300 この実装について。 337 00:14:58,300 --> 00:15:01,860 そして私はおそらく、すべてのモックべきではありません あなたはそんなにPSETに置く時間。 338 00:15:01,860 --> 00:15:04,045 そこでstrtolowerは関数である。 339 00:15:04,045 --> 00:15:06,670 何か似た実存主義 Cでは、少なくとも文字を、 340 00:15:06,670 --> 00:15:08,560 しかし、PHPのは、文字列全体のバージョンを得た。 341 00:15:08,560 --> 00:15:11,226 >> つまり、すべてのものを強制するために起こっている あなたのそのいくつかを小文字に 342 00:15:11,226 --> 00:15:14,944 何を正規化するために行われたかもしれない あなたの辞書に入れた。 343 00:15:14,944 --> 00:15:16,360 そして今、あなたはあまりにも、C言語でこれを行うことができます。 344 00:15:16,360 --> 00:15:17,780 これは、PHPとは何の関係もありません。 345 00:15:17,780 --> 00:15:20,260 >> しかし、いつでもあなたが持っている ブール条件、 346 00:15:20,260 --> 00:15:22,680 ライン上で何かのように だけでそこに10、 347 00:15:22,680 --> 00:15:27,145 trueに評価しようとしてか、 明らかにそれ以外の場合はfalse、そしてあなた 348 00:15:27,145 --> 00:15:33,620 私は、trueまたはfalseを返している可能性が 単に本当にこのセクシーを作る 349 00:15:33,620 --> 00:15:38,360 そしてちょうどこのような何かを行う。 350 00:15:38,360 --> 00:15:40,500 私のチェック機能がありますように。 351 00:15:40,500 --> 00:15:42,560 右、もしブール 、trueまたはfalseを返します 352 00:15:42,560 --> 00:15:44,630 ちょうどすぐにそれを返してみましょう。 353 00:15:44,630 --> 00:15:47,340 >> やその他のいくつかの微調整があります 私はあちこちで作ることができます。 354 00:15:47,340 --> 00:15:51,380 Load--アンは、ところで、それは完了です。 355 00:15:51,380 --> 00:15:52,850 そこには何の関係もありません。 356 00:15:52,850 --> 00:15:55,840 メモリのすべてにおいてので PHPと他の多くの言語 357 00:15:55,840 --> 00:15:57,570 実際にあなたのために管理されている。 358 00:15:57,570 --> 00:16:00,330 C言語のに対して、ほど あなたは痛いほど学んだ、 359 00:16:00,330 --> 00:16:04,700 何でもあなたのmallocやcallocはや reallocのは、あなた自身を解放しなければならない。 360 00:16:04,700 --> 00:16:08,770 あなたははfopen何でも、あなたはfcloseはしなければならない、 リソースは、最終的に解放されるように、 361 00:16:08,770 --> 00:16:11,690 とValgrindのようなツールにはありません 気づくと文句を言わない、 362 00:16:11,690 --> 00:16:13,570 その彼らに実行するように良いことです。 363 00:16:13,570 --> 00:16:16,190 >> しかし確実に、そこになければなりません 右、いくつかのキャッチも? 364 00:16:16,190 --> 00:16:19,400 そうでなければ、我々は一種の無駄 週の全体の束。 365 00:16:19,400 --> 00:16:23,270 だから、任意の数の理由があります なぜ我々は一種の、この軌道を取る 366 00:16:23,270 --> 00:16:24,440 しかし、トレードオフが存在する。 367 00:16:24,440 --> 00:16:25,820 右、これはテーマ別でした。 368 00:16:25,820 --> 00:16:29,690 >> だから何のトレードオフかもしれない ここで、CからPHPに、移動する? 369 00:16:29,690 --> 00:16:33,250 すべては、これまで以外の勝利のように感じている ここかそこ醜さのビット。 370 00:16:33,250 --> 00:16:34,040 うん。 371 00:16:34,040 --> 00:16:34,700 何それ? 372 00:16:34,700 --> 00:16:36,064 >> 学生:[聞こえない]メモリ。 373 00:16:36,064 --> 00:16:36,980 デイビット·J·マラン:スピード。 374 00:16:36,980 --> 00:16:37,479 [OK]をクリックします。 375 00:16:37,479 --> 00:16:40,720 さて、私のスピードはかなり速かった。 376 00:16:40,720 --> 00:16:42,020 右? 377 00:16:42,020 --> 00:16:44,320 しかし、プログラムの実行速度は? 378 00:16:44,320 --> 00:16:45,580 [OK]を、ので、それは公正なポイントだ。 379 00:16:45,580 --> 00:16:50,930 >> だから、私は事前に、起こるだろうとして 私のトライソリューション、1の両方をキューアップ 380 00:16:50,930 --> 00:16:53,510 私は、大きなボードに持っていた トライベースのソリューションだった、 381 00:16:53,510 --> 00:16:55,510 そして私はここで、このディレクトリにそれを持っている。 382 00:16:55,510 --> 00:16:58,510 だから私はその瞬間に、私は先に行くことができると 欽定訳聖書でこれを実行し、 383 00:16:58,510 --> 00:16:59,657 Enterキーを押す。 384 00:16:59,657 --> 00:17:01,990 そして、これがうまくいけば正しい 最後に実装、 385 00:17:01,990 --> 00:17:05,109 合計で私に時間を与える そのために0.38秒 386 00:17:05,109 --> 00:17:07,270 1幾分任意の例。 387 00:17:07,270 --> 00:17:09,270 >> そして、私は今、この中に行けば 第二ターミナルウィンドウ 388 00:17:09,270 --> 00:17:14,569 ここで私が最初にしましょう​​、geditのを開いたところ 私は、その、再び今日のcode--に入る 389 00:17:14,569 --> 00:17:19,650 here--このディレクトリ内にあり、 私が先に行くとスペルチェックを実行してみましょう。 390 00:17:19,650 --> 00:17:23,470 だから、明確にする これはPHPのバージョンです。 391 00:17:23,470 --> 00:17:25,170 私はちょうどここにそれの上を示すよ。 392 00:17:25,170 --> 00:17:32,020 >> だから私はチルダCS50のスペルチェックを行う場合 PSET 5テキスト、キングジェームズは、次のように入力します。 393 00:17:32,020 --> 00:17:39,700 394 00:17:39,700 --> 00:17:43,050 それはまだ書き込みよりも高速だ C言語では、それが、合計時間 395 00:17:43,050 --> 00:17:47,650 一方、告知、0.93であり、私の C言語ベースの実装では0.38だった。 396 00:17:47,650 --> 00:17:49,110 だから、非自明な違​​いだ。 397 00:17:49,110 --> 00:17:51,100 >> そして、これは1つのファイルだけである。 398 00:17:51,100 --> 00:17:53,480 次の2つを実行した場合 ビッグボード対プログラム 399 00:17:53,480 --> 00:17:56,510 と入力の全体の束を持っている テストされ、これは確実にアップする追加します。 400 00:17:56,510 --> 00:18:00,310 そして、我々は、より大きなデータセットを有する場合 これは、あまりにも、すべてのより多くを追加します。 401 00:18:00,310 --> 00:18:04,820 そうです、いくつかの代償を払う 速度が確かにそうである。 402 00:18:04,820 --> 00:18:05,470 他には? 403 00:18:05,470 --> 00:18:08,000 404 00:18:08,000 --> 00:18:08,860 うん? 405 00:18:08,860 --> 00:18:10,340 >> 学生:RAM使用量。 406 00:18:10,340 --> 00:18:11,756 >> デイビット·J·マラン:RAM使用量。 407 00:18:11,756 --> 00:18:15,380 だから私は一秒を与えていない このPHPを書くときに思った 408 00:18:15,380 --> 00:18:17,300 どのくらいまでのようなバージョン 私が使っていたメモリ。 409 00:18:17,300 --> 00:18:22,080 私は完全にPHPにそれを延期してい 自身と誰でもそのプログラムを書いた。 410 00:18:22,080 --> 00:18:24,500 そして、それはOKかもしれませんが、 しかし、私の場合、実際に本当に 411 00:18:24,500 --> 00:18:28,420 同じくらいの性能を絞る気 私のプログラムのうち、または私のウェブサイトのうち、 412 00:18:28,420 --> 00:18:31,150 または何のツールのうち、 私は多分、作っている 413 00:18:31,150 --> 00:18:33,310 PHPは、確かに、右の言語ではありません。 414 00:18:33,310 --> 00:18:36,330 >> 実際には、それがために、なぜ インスタンス、多くのWeb servers-- 415 00:18:36,330 --> 00:18:38,980 その実際のプログラム ウェブを果たすcontent-- 416 00:18:38,980 --> 00:18:41,810 PHPで書かれていません またはPythonやRubyで。 417 00:18:41,810 --> 00:18:44,630 これらは同じように、書かれています あなたは今、PSET 6でやる 418 00:18:44,630 --> 00:18:48,120 あなたは絞ることができるように、C言語で それから、パフォーマンスのすべてのビット 419 00:18:48,120 --> 00:18:50,780 本当に行使 何オーバーきめ細かい制御 420 00:18:50,780 --> 00:18:52,980 下に起こっている フードとちょうどそれを取らない 421 00:18:52,980 --> 00:18:54,890 付与されたいくつかのより高いため レベルのデータ構造。 422 00:18:54,890 --> 00:18:58,071 >> 結局、考えてみましょう、 誰でもPHPで実装 423 00:18:58,071 --> 00:19:00,070 ハッシュの概念 それは実際にはもっとだtable-- 424 00:19:00,070 --> 00:19:04,260 適切に連想と呼ばarray-- 彼または彼女はどのような種類の任意のアイデアを持っていません 425 00:19:04,260 --> 00:19:07,090 入力のあなたがあることを行っている 構造体に入れて? 426 00:19:07,090 --> 00:19:08,260 だから、明らかに、右ではない? 427 00:19:08,260 --> 00:19:10,340 それは、一般的なツールだ のツールキットで 428 00:19:10,340 --> 00:19:13,430 したい人に提供 それを使用し、そう確かにする 429 00:19:13,430 --> 00:19:17,680 最終的に最適化することができません 正確にあなたがやりたいことのために。 430 00:19:17,680 --> 00:19:21,180 >> だから、トレードoffs--開発時間かもしれない パフォーマンスが異なる場合があり、異なる、 431 00:19:21,180 --> 00:19:23,120 複雑またはメモリ使用量が異なる場合があります。 432 00:19:23,120 --> 00:19:24,820 だからあなたは何を見つける ますますがあることである 433 00:19:24,820 --> 00:19:26,570 異なることになるだろう 貿易のためのツール。 434 00:19:26,570 --> 00:19:31,160 そして実際にはスーパーの大多数のための このクラスの人々の最後のプロジェクトは、 435 00:19:31,160 --> 00:19:34,360 それを信じるかどうかは、Cは起こっていません 使用するために適切な言語であると。 436 00:19:34,360 --> 00:19:37,880 >> 持ち帰りのと、実際には、1 最終的にこのような任意のクラスのために 437 00:19:37,880 --> 00:19:40,510 あなたが考える得ることです、 さて、あなたは何をやってのける必要があります 438 00:19:40,510 --> 00:19:42,710 あなたが望む棚 いくつかの問題を解決する。 439 00:19:42,710 --> 00:19:46,720 そして実際、私たちはこの橋を渡るだろう さらに私たちはより多くの言語を見てのように 440 00:19:46,720 --> 00:19:47,920 今日でも超えた。 441 00:19:47,920 --> 00:19:50,530 >> だから今までの推移をみましょう おそらく、もっと身近コンテキスト 442 00:19:50,530 --> 00:19:52,480 PHPのような言語を使用するため。 443 00:19:52,480 --> 00:19:56,720 それはで使用するやや一般的です スクリプトを書く、コマンドライン、 444 00:19:56,720 --> 00:19:59,050 のような私でしたが、それはだ はるかに、はるかに一般的な。 445 00:19:59,050 --> 00:20:02,350 そしてそれはで使用されることを意図した 一般的に終わるファイルの形式 446 00:20:02,350 --> 00:20:05,060 中.php--それはだ いないprerequisite-- 447 00:20:05,060 --> 00:20:07,990 自体はウェブコンテンツを生成する。 448 00:20:07,990 --> 00:20:11,310 >> だから私は先に行くといくつかを開いてみましょう Iは、予め用意例。 449 00:20:11,310 --> 00:20:15,100 そしてこれらは、実際には一種の真である 最初のもののその1での物語 450 00:20:15,100 --> 00:20:18,200 私が今までに終了した後に自分自身をやった CS50とは多分、私が思うに、 451 00:20:18,200 --> 00:20:21,350 CS51年前の私です ルームメイトと私は助けられた 452 00:20:21,350 --> 00:20:24,320 新入生学内を実行する 一度にスポーツ番組、 453 00:20:24,320 --> 00:20:28,610 新入生は、さまざまに登録した 一枚の紙に記入して、スポーツ、 454 00:20:28,610 --> 00:20:31,800 それが呼ばれたように、歩いて ウィッグルスワースの庭を横切っ、 455 00:20:31,800 --> 00:20:34,030 そして、いくつかの上にドロップする プロクターのドアのドロップ。 456 00:20:34,030 --> 00:20:37,210 そして彼または彼女が通って行くだろう 彼らと、実際に手動でメールでお問い合わせ 457 00:20:37,210 --> 00:20:39,140 我々はいくつかのスポーツのために登録されたこと。 458 00:20:39,140 --> 00:20:41,166 >> そうはっきり、機会 改善のため。 459 00:20:41,166 --> 00:20:44,040 これらの日、あなただけになるかもしれない Googleのフォームが、バックの日で、 460 00:20:44,040 --> 00:20:46,914 私たちは実際にこのfor--到達しなければならなかった でも、そんなに長くago--到達されなかった 461 00:20:46,914 --> 00:20:49,410 プログラミングのための PHP言語ではなかった。 462 00:20:49,410 --> 00:20:51,200 同時に、それがあった Perlのと呼ばれるもの、 463 00:20:51,200 --> 00:20:52,890 それ以来流行の外に行ってきました。 464 00:20:52,890 --> 00:20:54,160 しかし、考え方は同じです。 465 00:20:54,160 --> 00:20:58,940 >> そして、私は基本的に試すために座った ポートに、PHPにPerlのバージョンを行く 466 00:20:58,940 --> 00:21:03,710 しかし、完全な免責事項では、与えていない いずれかがまだ美学に思った。 467 00:21:03,710 --> 00:21:04,960 だからここにウェブページがある。 468 00:21:04,960 --> 00:21:05,670 これはファイルです。 469 00:21:05,670 --> 00:21:09,470 私がズームインするとき、その明らかに 呼ばfroshim0.php 470 00:21:09,470 --> 00:21:12,060 それは私たちの最初だという理由だけで このシリーズの例。 471 00:21:12,060 --> 00:21:15,970 そして、それが思われるものを持っていることに気付く 非常に醜いHTMLフォームであるためには、 472 00:21:15,970 --> 00:21:18,680 しかし、形が面白い それができるため、 473 00:21:18,680 --> 00:21:21,910 私は、ブラウザにユーザ入力を提供する。 474 00:21:21,910 --> 00:21:27,730 >> 今、私たちは形を持っていた最後の時間に 誰我々のクエリパラメータを提出しなかったが、 475 00:21:27,730 --> 00:21:30,450 それが呼ばれたように、キューのパラメータ? 476 00:21:30,450 --> 00:21:31,330 右、Googleにそう? 477 00:21:31,330 --> 00:21:34,090 私たちは、完全にするという考えにパント その入力を使って何をやって。 478 00:21:34,090 --> 00:21:36,160 >> しかし、今日、私たちは、出力の生産を開始。 479 00:21:36,160 --> 00:21:39,420 そして、私は私の行動は見に行く ここで、最初は非常に簡単です。 480 00:21:39,420 --> 00:21:42,980 ダビデは、私が性別をオフにチェックします ここ、ここマシューズと言う。 481 00:21:42,980 --> 00:21:43,800 私はキャプテンではありません。 482 00:21:43,800 --> 00:21:45,410 私は、[登録]をクリックするつもりです。 483 00:21:45,410 --> 00:21:50,720 そしてURLが持っていることに気付く -0.phpを登録するように変更、 484 00:21:50,720 --> 00:21:52,310 その後、ここで、この醜い文章があります。 485 00:21:52,310 --> 00:21:54,460 私は何に思考を与えなかった こののフォーマット。 486 00:21:54,460 --> 00:21:59,900 >> しかし、興味深いのは、その3です 値は明らかに渡されました。 487 00:21:59,900 --> 00:22:02,960 これは、PHPの一種である printf--と同等 488 00:22:02,960 --> 00:22:06,330 我々は、それが本当にと呼ばれるものがわかります ちょうどプリントアウトbit--中 489 00:22:06,330 --> 00:22:08,300 何あなたがそれに渡された。 490 00:22:08,300 --> 00:22:11,414 だから、これはそのフォームことを示唆している それには、少なくとも三つのフィールドを持っていた、 491 00:22:11,414 --> 00:22:12,580 そしてあなたは私にそれらを入力しました。 492 00:22:12,580 --> 00:22:15,739 一つは、私の名前だったものだった 性別、人は寮だった。 493 00:22:15,739 --> 00:22:18,780 そして船長はさえに送信されませんでした 私はそれをチェックしなかったため、サーバー。 494 00:22:18,780 --> 00:22:22,150 >> だから、これは、明らかに言うことである あなたがウェブ上で物事を提出する際に、 495 00:22:22,150 --> 00:22:26,830 だけでなく、時にはURLを行います change--時にはそれはしていません。 496 00:22:26,830 --> 00:22:30,330 実際には、ファイル名が変更され、 しかし、URLには存在しないものです 497 00:22:30,330 --> 00:22:32,861 我々はGoogleとの最後の時間を見たこと。 498 00:22:32,861 --> 00:22:33,360 うん? 499 00:22:33,360 --> 00:22:34,380 >> 学生:いいえクエリ文字列 500 00:22:34,380 --> 00:22:35,220 >> デイビット·J·マラン:なしクエリ文字列がありません。 501 00:22:35,220 --> 00:22:37,270 全く疑問符何かはありません。 502 00:22:37,270 --> 00:22:40,050 全く疑問符qはありません 我々は前回行ったように、猫に等しい。 503 00:22:40,050 --> 00:22:42,170 そして、いや、確かにありま​​す 疑問符名が等しい 504 00:22:42,170 --> 00:22:46,310 デビッドまたは寮はマシューズに等しく、 だからここですべてが起こっている? 505 00:22:46,310 --> 00:22:51,290 >> さて、私はここに戻ってgeditに行こう そしてそれらのファイルの最初を開く 506 00:22:51,290 --> 00:22:57,020 私のバーチャルホストでは、ローカルホスト、公共 ここで、ディレクトリとfroshim0に入る。 507 00:22:57,020 --> 00:23:02,060 だから、それはほとんどことが判明 このページのすべては単なるHTMLです。 508 00:23:02,060 --> 00:23:05,410 そして、これは、あなたに不慣れかもしれません それはすぐにPSET 6となおさらそうなります 509 00:23:05,410 --> 00:23:07,370 とPSET 7とPSET 8。 510 00:23:07,370 --> 00:23:09,160 しかし、これは単なるHTMLページです。 511 00:23:09,160 --> 00:23:12,400 >> そして面白い こっちのようです。 512 00:23:12,400 --> 00:23:16,290 その作用属性フォームタグ レジスタ0の値を有する。 513 00:23:16,290 --> 00:23:18,890 なぜ私が提出するときです これは、そのファイルに移行する。 514 00:23:18,890 --> 00:23:20,620 しかし、この方法は、ポストtoday--異なっている。 515 00:23:20,620 --> 00:23:23,120 だから、少なくともありますが判明 使用されるWeb上の二つの方法 516 00:23:23,120 --> 00:23:24,911 情報を送信する ブラウザからサーバーへ。 517 00:23:24,911 --> 00:23:25,980 GETはURLにそれを置く。 518 00:23:25,980 --> 00:23:27,950 ポストは他の場所でそれを置く。 519 00:23:27,950 --> 00:23:30,570 そしていつ、なぜ、あなたかもしれない 実際にウェブサイトをしたい 520 00:23:30,570 --> 00:23:34,110 代わりに、その後のポストを使用する のちょうど直感的に、取得? 521 00:23:34,110 --> 00:23:37,080 任意のウェブサイト。 522 00:23:37,080 --> 00:23:42,010 はどのようなデータだけ渡す必要があります ポストを経由して今推論によっては反対に 523 00:23:42,010 --> 00:23:45,184 私たちが見てきた場合には、取得する 2つの違い? 524 00:23:45,184 --> 00:23:46,350 学生:[聞こえない]で固定します。 525 00:23:46,350 --> 00:23:47,790 デイビット·J·マラン:あなたがしたい場合 安全であることを何か。 526 00:23:47,790 --> 00:23:50,360 だから、パスワードを入力可能性があります ウェブサイトは、クレジットカードに 527 00:23:50,360 --> 00:23:53,030 だろうウェブサイトへ これらの次善の種類 528 00:23:53,030 --> 00:23:56,220 ブラウザがあることを置く場合 URLの内部値。 529 00:23:56,220 --> 00:23:57,680 なぜ? 530 00:23:57,680 --> 00:24:00,059 あなたはしない、それを参照してください そのような大したように見える、 531 00:24:00,059 --> 00:24:03,350 しかし、オッズは、あなたはかなり頻繁に歩いている 離れてお使いのコンピュータまたは使用のコンピュータから 532 00:24:03,350 --> 00:24:05,310 ラボ、およびので、誰か 誰かさえルームメイト 533 00:24:05,310 --> 00:24:08,220 簡単に歩いて、見ることができました その個人情報。 534 00:24:08,220 --> 00:24:10,220 あなたが電子メールを送信するとき ウェブ経由で、あなたはおそらく 535 00:24:10,220 --> 00:24:12,350 データが終了することをしたくない URL内のアップにも。 536 00:24:12,350 --> 00:24:15,266 だから理由の任意の数があります なぜ我々はそれをここに置きたいかもしれません。 537 00:24:15,266 --> 00:24:18,610 photos--右と、私はできないとしても、かなり あなたがグラフィックを取ると想像、 538 00:24:18,610 --> 00:24:21,480 JPEGのような、およびURLに入れて。 539 00:24:21,480 --> 00:24:22,330 あなたはそれを行うことができます。 540 00:24:22,330 --> 00:24:25,840 そこを符号化する方法はだが、それはだ ちょうどそのように簡単ではない。 541 00:24:25,840 --> 00:24:29,030 >> そこで0は、実際にはレジスタ 非常にがっかり。 542 00:24:29,030 --> 00:24:31,610 それは文字通り言うすべてがこれです。 543 00:24:31,610 --> 00:24:35,910 これは、いくつかの内部のプリントアウト HTMLは次のようにタグ付けします。 544 00:24:35,910 --> 00:24:38,640 私はここでPHPのタグを持っている preタグ内にネスト。 545 00:24:38,640 --> 00:24:42,300 「プリ」とは、単にプリフォーマットされたテキストを意味し、 モノ間隔、タイプライターのような。 546 00:24:42,300 --> 00:24:44,836 >> Printrは、印刷再帰関数です。 547 00:24:44,836 --> 00:24:46,710 その後これがあります ここで興味深いのは。 548 00:24:46,710 --> 00:24:48,835 そして、我々はこれに戻ってくる 他の人がありますので、 549 00:24:48,835 --> 00:24:51,140 しかし、ドル記号、アンダースコア 投稿はあるように思われる 550 00:24:51,140 --> 00:24:56,110 これは何でPHPの変数 あなたがブラウザからサーバに送信 551 00:24:56,110 --> 00:24:58,040 あなたのために保存されます。 552 00:24:58,040 --> 00:25:00,930 そして、私たちは時に取得する方法を見ていきます 長い前に、その情報。 553 00:25:00,930 --> 00:25:04,000 >> しかし、最初に、のに戻ってみましょう わずかに異なる例。 554 00:25:04,000 --> 00:25:09,050 register--に入るか むしろ、froshims1.php、 555 00:25:09,050 --> 00:25:10,470 その少し違って見える。 556 00:25:10,470 --> 00:25:12,670 私はもう少しかかった 書式付きの努力、 557 00:25:12,670 --> 00:25:14,370 にもかかわらず、それはまだかなり醜いです。 558 00:25:14,370 --> 00:25:16,990 しかし、私は先に行くつもりです そして今、「ダビデ」と入力します。 559 00:25:16,990 --> 00:25:17,850 男性。 560 00:25:17,850 --> 00:25:19,360 我々は、この時間を「キャプテン」をチェックします。 561 00:25:19,360 --> 00:25:20,660 私たちは、マシューズをやる。 562 00:25:20,660 --> 00:25:22,430 そして、登録してください。 563 00:25:22,430 --> 00:25:24,110 >> そして、今回はそうではありません本当に、HM、と言います。 564 00:25:24,110 --> 00:25:26,180 すべての権利なので、何のレジスタ1? 565 00:25:26,180 --> 00:25:30,509 私はオープンレジスタ1 and-- HMへ行こう。 566 00:25:30,509 --> 00:25:32,300 すべての権利なので、これは 面白いし、この 567 00:25:32,300 --> 00:25:34,880 今に向けての足がかりである より興味深いプログラム。 568 00:25:34,880 --> 00:25:38,970 >> このファイルが持つのトップに注目してください PHPのタグだけでなく、いくつかのコメント。 569 00:25:38,970 --> 00:25:42,590 これらは、今のところ、気晴らしです そうちょうどそれらのコメントを取り除くましょう 570 00:25:42,590 --> 00:25:47,070 彼らはC.にいると私は主張と同じように コメントとコードのこのチャンクを持つ 571 00:25:47,070 --> 00:25:49,280 このコードはあること 提出を検証。 572 00:25:49,280 --> 00:25:51,690 >> まあ、それはことが判明 ドル記号のような変数 573 00:25:51,690 --> 00:25:53,739 あるポストを強調する スーパーグローバルを呼んだ。 574 00:25:53,739 --> 00:25:55,530 彼らは、これらのようにしている 特別なグローバル変数 575 00:25:55,530 --> 00:25:58,840 ちょうどオムニ現在していること あなたのプログラム内で使用できる。 576 00:25:58,840 --> 00:26:03,870 そして、あなたは角括弧表記を使用することができます インデックスにそれらに番号を使用していない 577 00:26:03,870 --> 00:26:07,460 0、1、2、3、実際の言葉を挙げることができる。 578 00:26:07,460 --> 00:26:12,100 >> だから、ドル記号と考えることができます ハッシュテーブルの一種としてポストを強調する 579 00:26:12,100 --> 00:26:15,920 あなたは、ルックアップにキーを渡すことができること ワードでの間の角括弧、 580 00:26:15,920 --> 00:26:19,370 それは戻ってあなたを与えるために起こっている ユーザが実際に提供される値。 581 00:26:19,370 --> 00:26:21,210 PHPは機能を有する。 ちょうどその空と呼ばれる 582 00:26:21,210 --> 00:26:23,720 これは、yesまたはno語る 変数が空であるか。 583 00:26:23,720 --> 00:26:27,250 我々は、これらの二重線を持っている、 それだけC.のように、手段あるいは 584 00:26:27,250 --> 00:26:31,740 >> だから実際には、この4行目はただである ユーザーが名前を与えていない場合は、言って 585 00:26:31,740 --> 00:26:36,540 や性別を与えていないか、しませんでしたでした 寮を与え、先に行くと、彼をリダイレクト 586 00:26:36,540 --> 00:26:38,184 または彼女のここでこのラインを介して。 587 00:26:38,184 --> 00:26:40,600 だから、これは、ちょっと不可解である これは文字通り意味 588 00:26:40,600 --> 00:26:43,330 この場所に戻って、 ので、ユーザはパント 589 00:26:43,330 --> 00:26:45,420 バック彼または彼女はどこから来たの。 590 00:26:45,420 --> 00:26:47,880 しかし、それはちょっと無粋だ その中で私は一生懸命それをコード化された。 591 00:26:47,880 --> 00:26:52,150 >> しかし、どのような条件であれば、この場合 trueと評価されないのですか? 592 00:26:52,150 --> 00:26:55,790 ユーザーは私に何を与えなかった場合、彼 または彼女の名前と寮と性別? 593 00:26:55,790 --> 00:26:58,540 その条件がない場合は、 trueに評価しようとして、 594 00:26:58,540 --> 00:27:00,650 私は7行目で出口をヒットしない。 595 00:27:00,650 --> 00:27:01,680 だから何が起こるか? 596 00:27:01,680 --> 00:27:03,880 そして、これは何です PHPに関する興味深い。 597 00:27:03,880 --> 00:27:07,470 >> あなたは、内外にドロップすることができます PHPモードの、いわば。 598 00:27:07,470 --> 00:27:10,985 あなたには、いくつかのコードを実行したい場合は、 あなたは、PHPタグを開いて閉じることができます 599 00:27:10,985 --> 00:27:13,010 私がここでやったように、そこにコードを置く。 600 00:27:13,010 --> 00:27:16,810 とすぐに閉じるように PHPタグ、サーバ 601 00:27:16,810 --> 00:27:19,407 ただ吐き出すしようとしている 何でもあなたがそこに置く。 602 00:27:19,407 --> 00:27:21,740 そして実際に、これはの一部であった PHPのオリジナルデザイン、 603 00:27:21,740 --> 00:27:25,280 悪化のためのより良いため、これがあった コー​​ドとマークアップの混入 604 00:27:25,280 --> 00:27:25,920 言語。 605 00:27:25,920 --> 00:27:28,670 そして、我々はこの非常にいることがわかります すばやく混乱に委譲さ。 606 00:27:28,670 --> 00:27:31,280 そして私たちはより良いやる この最終的に、ちょうど 607 00:27:31,280 --> 00:27:35,620 私は容易さに気付く いくつかのロジックを実行することが実際にできること。 608 00:27:35,620 --> 00:27:37,440 >> しかし、まだ少しがっかり。 609 00:27:37,440 --> 00:27:41,210 バージョンを開くましょう 1年生IMS、の2つが 610 00:27:41,210 --> 00:27:44,270 どうやらregister2.phpに提出する。 611 00:27:44,270 --> 00:27:47,600 したがって、このファイルは実際に起こっている ほぼ同じように見えます。 612 00:27:47,600 --> 00:27:50,780 私は1年生のIM 2に行くつもりです。 613 00:27:50,780 --> 00:27:53,050 しかし、1年生IMSにおける2、 それでは何が起こるか見てみましょう。 614 00:27:53,050 --> 00:27:58,110 >> デビッド、として、ラジオボタンをクリックします それは呼ばれています。マシューズ、ノー船長。 615 00:27:58,110 --> 00:27:59,230 登録します。 616 00:27:59,230 --> 00:28:00,130 あなたが登録されています。 617 00:28:00,130 --> 00:28:00,700 いまいち。 618 00:28:00,700 --> 00:28:02,574 ああ待って、私たちはやった その例として、私たちはしませんでした? 619 00:28:02,574 --> 00:28:04,520 すべての権利、待機。 620 00:28:04,520 --> 00:28:06,602 私たちは3をやる。 621 00:28:06,602 --> 00:28:08,560 明らかに何かがについてです Gmailので発生する。 622 00:28:08,560 --> 00:28:09,600 私たちはそこに着くでしょう。 623 00:28:09,600 --> 00:28:11,900 >> だから、1年生のIM 3は次のようになります。 624 00:28:11,900 --> 00:28:13,050 何ら変わりません。 625 00:28:13,050 --> 00:28:19,850 しかし、私が行うときデビッド、男性、マシューズ、および 、この3番目と最後のバージョンを登録 626 00:28:19,850 --> 00:28:22,230 クレーム、非常に単純に、あなたに 本当に登録されています。 627 00:28:22,230 --> 00:28:23,560 つまり、ソートの軽微だ。 628 00:28:23,560 --> 00:28:25,600 しかし、私はこれで主張 3番目と最後のバージョン 629 00:28:25,600 --> 00:28:30,610 私は今まさに私を再現しています ルームメイトと私は1年生IMS用に構築 630 00:28:30,610 --> 00:28:31,731 プログラム年前。 631 00:28:31,731 --> 00:28:32,480 そして、それは簡単だった。 632 00:28:32,480 --> 00:28:34,330 ないデータベースは、ありませんでした Excelスプレッドシートをなし。 633 00:28:34,330 --> 00:28:36,450 しかし、もっと重要なのは、 これ以上の用紙がありませんでした 634 00:28:36,450 --> 00:28:42,520 私たちはこのプログラムで何をしたか理由 誰が、実際に試験監督を電子メールで送信することでした 635 00:28:42,520 --> 00:28:44,530 以前に受け取っていた フォームを経由してこれらの事。 636 00:28:44,530 --> 00:28:48,890 >> どうやら私たちは、これをプログラムしました 誰かが登録されるように、 637 00:28:48,890 --> 00:28:52,470 ジョン·ハーバードのアカウントの電子メール このケースでproctor--または彼自身、 638 00:28:52,470 --> 00:28:55,960 とジョンHarvard--以下 「この人は単に登録されています。」text-- 639 00:28:55,960 --> 00:29:00,560 名前はキャプテンが空白である、デビッドです。 性別、男性。そして寮、マシューズ。 640 00:29:00,560 --> 00:29:01,560 >> だから何が起こったのか? 641 00:29:01,560 --> 00:29:05,360 ここで問題になっているだけでなく、ファイル どうやらregister3.phpです。 642 00:29:05,360 --> 00:29:09,080 私がこれを開くなら、あなたが表示されます このようなコードの電力の両方 643 00:29:09,080 --> 00:29:12,380 また、率直に言って、不安 電子メールのようなシステムの。 644 00:29:12,380 --> 00:29:16,290 私はちょうど効果的にふりました ジョン·ハーバードは、以下のようになる。 645 00:29:16,290 --> 00:29:20,920 >> 私は、最大トップオープンphpのタグを持っている ちょうどここに言ういくつかのPHPコードを付属しています。 646 00:29:20,920 --> 00:29:23,155 ダウンここで、そこに判明 PHPのライブラリがある。 647 00:29:23,155 --> 00:29:26,410 あなただけす​​る必要はありません できるだけ多くのヘッダファイルが含まれています。 648 00:29:26,410 --> 00:29:28,900 あなたは多くを得る 台所のシンク、いわば。 649 00:29:28,900 --> 00:29:31,820 >> しかし、4行目で、今回、私がやる と呼ばれる特別なライブラリにしたい 650 00:29:31,820 --> 00:29:36,087 何かあなたですPHPのメーラー、 多くのシステムでは、無料でインストールできます。 651 00:29:36,087 --> 00:29:37,920 ダウンここに私が検証してい 提出だけ 652 00:29:37,920 --> 00:29:40,540 チェックすることにより、ユーザーは与えなかった 私の名前、性別、寮。 653 00:29:40,540 --> 00:29:44,130 そうだとすれば、先に行くと、 メーラーをインスタンス化します。 654 00:29:44,130 --> 00:29:47,020 >> あなたがいると考えることができ ちょうど割り当て、コード行。 655 00:29:47,020 --> 00:29:48,950 それはmallocのようなものだが、 それは少しセクシーだ 656 00:29:48,950 --> 00:29:51,790 その中であなただけではない言及 mallocといくつかの一般的な数。 657 00:29:51,790 --> 00:29:55,030 あなたは、私にはこれらのいずれかを与えると言う 私にこれらの新しいものを与える。 658 00:29:55,030 --> 00:29:57,950 >> そしてあなたがプログラムされてしまった場合 JavaやC ++またはその他の言語、 659 00:29:57,950 --> 00:29:59,130 あなたはこれを見ているかもしれません。 660 00:29:59,130 --> 00:30:01,840 しかし、それの短い、もし なじみのない、この行 661 00:30:01,840 --> 00:30:05,410 ドル記号メールに入れます と呼ばれる特殊な構造体 662 00:30:05,410 --> 00:30:08,731 ビルトインれたオブジェクト 電子メール機能。 663 00:30:08,731 --> 00:30:10,355 そして実際に、気づくと同様の構文。 664 00:30:10,355 --> 00:30:11,900 >> このポインタは、それ自体ではない。 665 00:30:11,900 --> 00:30:13,990 PHPは、ちょうど同じ構文を使用しています。 666 00:30:13,990 --> 00:30:17,660 この行は、使用することを言っている SMTP--簡易メール転送 667 00:30:17,660 --> 00:30:20,900 ちょうどあるプロトコル、 プロトコルは、電子メールを送信するために使用される。 668 00:30:20,900 --> 00:30:24,240 これは、使用を指定している ハーバードのSMTPサーバ、どの 669 00:30:24,240 --> 00:30:25,830 キャンパス内にどこかにここにある。 670 00:30:25,830 --> 00:30:28,480 >> これは何を言っているか、TCP と話をするポート番号、 671 00:30:28,480 --> 00:30:31,650 そして私はちょうどによってそれを考え出した グーグルやヘルプデスクに問い合わせること。 672 00:30:31,650 --> 00:30:34,640 その後ハーバード大学は、いくつかを使用しているため、 メールserver--上のシステムセキュリティ 673 00:30:34,640 --> 00:30:37,060 少なくとも暗号化する あなたとそれとの間のトラフィック、 674 00:30:37,060 --> 00:30:41,380 誰もがit--に送信できるにもかかわらず 私は、TLSプロトコルをオンにするつもりです 675 00:30:41,380 --> 00:30:42,710 このセキュアに保つため。 676 00:30:42,710 --> 00:30:44,730 >> しかし、これはどこのものです 少し怖い取得。 677 00:30:44,730 --> 00:30:47,970 私はちょうど任意にできます 、私はjharvardだと言う 678 00:30:47,970 --> 00:30:51,930 そして私はちょうど任意にできます ここで自分自身を電子メールで送信。 679 00:30:51,930 --> 00:30:55,650 そして私は指定することができます ここでこのラインを有する被験者。 680 00:30:55,650 --> 00:30:58,460 >> そして、これはただ醜いが、それはだ 連結のちょうど束。 681 00:30:58,460 --> 00:31:04,480 PHPは超便利シンボルを持ってい判明、 一部の言語のような、ドット演算子、 682 00:31:04,480 --> 00:31:07,340 これだけで、文字通り連結 文字列の文字列の後の文字列の後に、 683 00:31:07,340 --> 00:31:09,810 あなたがmalloc関数や図形に持っていない 文字列の長さの合計外。 684 00:31:09,810 --> 00:31:10,820 あなたはただそれを行う。 685 00:31:10,820 --> 00:31:15,220 そして実際、私が連結していますので、 これらのドットとこれらの事のすべてにおいて、 686 00:31:15,220 --> 00:31:18,330 それはなぜ電子メールの私です 送信されたそれがなかったように見えた。 687 00:31:18,330 --> 00:31:20,610 >> その後最後にここで、私がメールを送信するよ。 688 00:31:20,610 --> 00:31:22,580 だから、これがfalseの場合、 私はちょうど、死ぬつもりだ 689 00:31:22,580 --> 00:31:25,680 これは、関数であるだけでプリント 画面にいくつかのエラーメッセージ。 690 00:31:25,680 --> 00:31:29,170 しかし、実際には、ある 送信機能を呼び出す。 691 00:31:29,170 --> 00:31:31,780 そうでない場合は、このすべてが失敗した場合、 それは私をここに戻ってリダイレクトします。 692 00:31:31,780 --> 00:31:34,050 >> そして、なぜ私がいることがわかりました 私は実際に登録されている? 693 00:31:34,050 --> 00:31:36,110 まあ、それはここに起こった。 694 00:31:36,110 --> 00:31:38,170 だから私はこれを持ち出す 理由のカップル。 695 00:31:38,170 --> 00:31:41,542 >> 一つは、これはあなたがどの​​ように構築する場合には、正確である 最終的なプロジェクトのためのいくつかのウェブサイト 696 00:31:41,542 --> 00:31:44,000 または実世界のために、これは あなたは、電子メール通知を送信する方法 697 00:31:44,000 --> 00:31:45,924 あなたの顧客やあなたの加入者に。 698 00:31:45,924 --> 00:31:47,590 これは、パスワードリマインダを送信する方法です。 699 00:31:47,590 --> 00:31:50,760 これはあなたが人々のメッセージを送信する方法です 彼らはFacebookの新しいを持っていること 700 00:31:50,760 --> 00:31:52,990 保留中のメッセージまたはそのような何か。 701 00:31:52,990 --> 00:31:55,010 >> しかし、それはまたに話す これができると事実 702 00:31:55,010 --> 00:31:58,160 から非常によくなっている デーヴィンまたは他の誰。 703 00:31:58,160 --> 00:32:00,567 そして、私はこの種の言う 笑顔で私はだから 704 00:32:00,567 --> 00:32:03,400 を通じて何が起こっているのか全くわから この時点で、あなたの心のいくつか。 705 00:32:03,400 --> 00:32:11,910 しかし、これは、私のようなものかのいずれかです 私は物事の種類をしないように、と言う、 706 00:32:11,910 --> 00:32:14,480 それは些細なことであるために このような電子メールを偽造する。 707 00:32:14,480 --> 00:32:16,480 しかし、あなたが見てきた可能性がある または、クリムゾンで読み取る 708 00:32:16,480 --> 00:32:18,271 の後期それもきれいだ 人々のための些細な 709 00:32:18,271 --> 00:32:20,050 いくつかの原点に戻って、それらをトレースします。 710 00:32:20,050 --> 00:32:23,790 そして、おそらく、私にいくつかの時間を尋ねる CS50昼食時、どのように私最初 711 00:32:23,790 --> 00:32:27,080 非常に密接に知り合いになった ほとんどEDボード長年へ 712 00:32:27,080 --> 00:32:30,890 前、私は発見したとき どのようにインターネットは働いた。 713 00:32:30,890 --> 00:32:36,940 だから、どんなcase--わずかに EDボードがした後。 714 00:32:36,940 --> 00:32:42,300 >> そこでどのような場合でも、存在する スーパーグローバルの全体の束、 715 00:32:42,300 --> 00:32:45,960 それらはここに呼ばしているように、一 我々はドル記号、アンダースコアポストをsaw--。 716 00:32:45,960 --> 00:32:49,530 GETと呼ばれるカウンターパートがあります、 これは、URLからどこのものです 717 00:32:49,530 --> 00:32:50,690 行くしまう。 718 00:32:50,690 --> 00:32:54,051 他人の全体の束があります、 too--セッションとサーバとクッキー。 719 00:32:54,051 --> 00:32:55,800 我々は戻って来る 他のいくつかの時間をクッキー、 720 00:32:55,800 --> 00:33:01,340 しかし、セッションはクールの一種である 右now--までnow--理由 721 00:33:01,340 --> 00:33:06,350 我々は、Webブラウザでやったすべてのもの ソートのステートレスである、いわば。 722 00:33:06,350 --> 00:33:10,060 私の周りをクリックすることができ、アクセス サーバー上のファイル、何か 723 00:33:10,060 --> 00:33:13,500 画面上で行われますが、 接続は閉じられます。 724 00:33:13,500 --> 00:33:17,450 Internet Explorerまたは Firefoxのアイコンが回転を停止します 725 00:33:17,450 --> 00:33:20,340 そしてあなただけの何を参照 そのWebページが含まれています。 726 00:33:20,340 --> 00:33:23,530 >> だから、HTTPはステートレスであるという点で、 それは接続を行い、一度、 727 00:33:23,530 --> 00:33:25,050 いくつかのデータを取得し、それはそれだ。 728 00:33:25,050 --> 00:33:29,940 これ以上の接続、スカイプとは異なり、 FaceTimeのとは異なり、GChatとは異なり、どの 729 00:33:29,940 --> 00:33:32,180 定数を維持 サーバーへの接続。 730 00:33:32,180 --> 00:33:34,650 ウェブは基本的にあり しかし私たちはよ切断 731 00:33:34,650 --> 00:33:36,630 長いどのようにする前に参照してください。 我々は物事をシミュレートすることができます 732 00:33:36,630 --> 00:33:39,300 FacebookのチャットやGChatのような、 illusion--を維持した 733 00:33:39,300 --> 00:33:41,680 または実際に維持やる 使用して常時接続 734 00:33:41,680 --> 00:33:43,270 より近代的な技術。 735 00:33:43,270 --> 00:33:49,000 >> しかし、私はに行けば、言う、counter.php、 これは別の簡単な例です、 736 00:33:49,000 --> 00:33:52,700 当社は現在考えている、わかりますように 私は、サイトゼロ時間を訪問した。 737 00:33:52,700 --> 00:33:56,790 しかし、私は単純にページをリロードすると、 それがどういうわけか私は前にここにいた知っている。 738 00:33:56,790 --> 00:33:58,840 私は再びリロード場合は、それを 私は前にここにいた知っている。 739 00:33:58,840 --> 00:34:01,100 そして何度も何度と何度も何度も。 740 00:34:01,100 --> 00:34:03,610 >> だから、いくつかのプラスplussingがあります 起こって、しかし予告 741 00:34:03,610 --> 00:34:07,090 小さなものはそう今までスピン 簡単にトップアップした後、切断し、 742 00:34:07,090 --> 00:34:11,179 そうそれは私が一定していないようです 私のアプライアンスへの接続。 743 00:34:11,179 --> 00:34:16,929 まあ、私はcounter.phpに行けば、 それがどのようにシンプルに気づく。 744 00:34:16,929 --> 00:34:19,080 私が最初にこの特別なを呼び出す 我々はすぐによ機能 745 00:34:19,080 --> 00:34:21,513 当たり前の服用を開始 セッション開始と呼ばれる。 746 00:34:21,513 --> 00:34:22,179 セッションを開始します。 747 00:34:22,179 --> 00:34:25,095 >> セッションが今後ちょうどです ショッピングのように、バケツになるだろう 748 00:34:25,095 --> 00:34:28,120 あなたが値を置くことができるカート プログラマとしての信頼の種類 749 00:34:28,120 --> 00:34:31,590 彼らは時にここにあることを行っていること そのユーザーはback--第二が来る 750 00:34:31,590 --> 00:34:35,670 後で、時間後、でも一年後、 彼または彼女がクリアされない限り、 751 00:34:35,670 --> 00:34:37,602 彼らのクッキー、我々は最終的に表示されますように。 752 00:34:37,602 --> 00:34:39,310 そして今、私はちょうど持っている ここでの条件の場合。 753 00:34:39,310 --> 00:34:44,679 その場合、次のキー、 カウンターと呼ばれる、内部に設定されている 754 00:34:44,679 --> 00:34:49,210 このスーパーのこのハッシュをglobal-- あなたがwill--た場合の表は、セッションと呼ばれる、 755 00:34:49,210 --> 00:34:53,350 その後、先に行くとつかむ session--シンクタンクからの値 756 00:34:53,350 --> 00:34:55,250 ショッピングとしてこのの cart--とそれを格納 757 00:34:55,250 --> 00:34:57,680 カウンターと呼ばれる一時的な変数に。 758 00:34:57,680 --> 00:35:02,240 >> そうでなければその値カウンタがあった場合には いわゆるショッピングカートに設定されていない、 759 00:35:02,240 --> 00:35:04,430 ちょうどそれを0に初期化します。 760 00:35:04,430 --> 00:35:09,830 最後に、ダウンここで、行くと戻す ショッピングカートまたはセッションへ 761 00:35:09,830 --> 00:35:13,000 カウンタ1の値。 762 00:35:13,000 --> 00:35:16,730 だから、このことが判明 特別なコンテナhere-- 763 00:35:16,730 --> 00:35:20,355 これは、もう一度、これらに関連するの一つです アレイは、アレイはあなたができるインデックス 764 00:35:20,355 --> 00:35:25,010 単語に代わりnumbers-- ユーザーが消えた後にも持続する。 765 00:35:25,010 --> 00:35:26,510 繰り返しますが、私はすぐに戻ってページに行くよ。 766 00:35:26,510 --> 00:35:28,400 それは分かそこらをされています。 767 00:35:28,400 --> 00:35:31,300 しかし、それは私がしたことを覚えている 19回の前にここにい。 768 00:35:31,300 --> 00:35:32,740 これは私の第20回の訪問である。 769 00:35:32,740 --> 00:35:36,560 >> そして、これがカギになるだろう 覚えている任意のWebサイトを実装する 770 00:35:36,560 --> 00:35:40,640 あなたは、あなたが置くことを、ログインしていること あなたのショッピングカート内のリテラル何か 771 00:35:40,640 --> 00:35:43,902 購入したり、あなたには、いくつかを持っているために 保留中のメッセージの数。 772 00:35:43,902 --> 00:35:45,610 いつでもあなたがしたい 情報を覚えて、 773 00:35:45,610 --> 00:35:48,130 我々は次のように、そのPHPを表示されます いくつかの他の言語、 774 00:35:48,130 --> 00:35:53,640 状態のこの錯覚を提供してくれます たとえ、あなたがPSET 6で表示されますように、 775 00:35:53,640 --> 00:35:57,642 あなたがHTTPリクエストを作っているように クライアントからサーバに、それはそれだ。 776 00:35:57,642 --> 00:35:59,850 あなたがいることを取り戻すたら 応答は、より多くのものはありません 777 00:35:59,850 --> 00:36:01,790 デフォルトでは、サーバから戻ってくる。 778 00:36:01,790 --> 00:36:03,820 しかし、我々はそれを回避する方法を説明します。 779 00:36:03,820 --> 00:36:07,430 >> さてさて、してみましょう 少しこれをクリーンアップします。 780 00:36:07,430 --> 00:36:09,470 私たちは、いくつかを見てきました そこに異なる例。 781 00:36:09,470 --> 00:36:12,250 ああ、脇、などのために おなじみのか慣れていない人、 782 00:36:12,250 --> 00:36:14,230 理由は 1年生のIMS例行きました 783 00:36:14,230 --> 00:36:18,060 本当に見てから よくslightly--する醜い、 784 00:36:18,060 --> 00:36:23,160 まだ少しにugly-- まだ醜いの少ないものも醜い 785 00:36:23,160 --> 00:36:25,230 私たちが見れば理由です ここでは、ソースコードで、 786 00:36:25,230 --> 00:36:28,240 それは私がこれを持っていることが判明 ファイルの最上部。 787 00:36:28,240 --> 00:36:32,570 >> ブートストラップは、多くの一つであることが判明 そこに自由に利用できるライブラリ 788 00:36:32,570 --> 00:36:37,140 プログラミング言語のためではないが存在すること 常に、しかし、CSSまたはJavaScriptのための 789 00:36:37,140 --> 00:36:39,190 またはHTMLまたは任意の数の言語。 790 00:36:39,190 --> 00:36:42,160 >> そしてこれらの人々here-- もともと出てきた 791 00:36:42,160 --> 00:36:44,730 Twitter--のちょうど持っている スタイルの全体の束。 792 00:36:44,730 --> 00:36:47,360 それは巨大なファイルだ ここに誰かが書いたことを、 793 00:36:47,360 --> 00:36:51,020 または誰かのは、時間の経過とともに、書いた 色と書式を指定します 794 00:36:51,020 --> 00:36:53,740 やその他もろもろ、私ができるように、 種類のその構文を借りる 795 00:36:53,740 --> 00:36:56,157 と把握する必要がありません 私のフォームのレイアウト方法。 796 00:36:56,157 --> 00:36:57,990 これはまた、縮小されている コンピュータができるように、 797 00:36:57,990 --> 00:37:00,560 それを理解していないが、 必ずしも人間。 798 00:37:00,560 --> 00:37:03,050 だから、なぜだけだ そこにスタイル設定が変更されました。 799 00:37:03,050 --> 00:37:05,450 >> しかし、それでは、より良いやらせる 設計の観点から、 800 00:37:05,450 --> 00:37:07,490 私たちはダウンとどまれば理由 この道が長すぎる、 801 00:37:07,490 --> 00:37:11,290 私たちのコードがために起こっている 汚いとメシエ得る。 802 00:37:11,290 --> 00:37:13,040 それでは、ここでこれらの例に焦点を当ててみましょう。 803 00:37:13,040 --> 00:37:15,090 今日の最後。 804 00:37:15,090 --> 00:37:18,720 >> だからここに超簡単です CS50のウェブサイトのバージョン1.0。 805 00:37:18,720 --> 00:37:21,250 それだけへのリンクがあります 講義やシラバス、 806 00:37:21,250 --> 00:37:25,490 そしてそれは、その順序なしリストを使用しています 我々は前回使用したULタグをtag--。 807 00:37:25,490 --> 00:37:28,800 そして実際に、もし場合は、I ページのソースを表示を開く、 808 00:37:28,800 --> 00:37:31,710 あなたは、これがあることがわかります 本当に、本当に簡単なHTML。 809 00:37:31,710 --> 00:37:35,460 実際に、これはにもかかわらず フードの下にPHPファイル、 810 00:37:35,460 --> 00:37:38,620 それはまだだけ吐きだ 今のところ出HTMLのみ。 811 00:37:38,620 --> 00:37:41,312 >> だから私は講義をクリックすると、 私たちはこれが起こるを参照してください。 812 00:37:41,312 --> 00:37:43,020 そして、私は週をクリックすると ゼロ、我々はこれを参照してください。 813 00:37:43,020 --> 00:37:44,920 そして、私は上をクリックした場合 水曜日、私たちはこれを参照してください。 814 00:37:44,920 --> 00:37:47,900 そして、これは明らかに、PDFた その日からスライドの。 815 00:37:47,900 --> 00:37:52,020 私がやったすべてが持つリンクです ここにこのURLへのアンカータグ。 816 00:37:52,020 --> 00:37:55,400 >> だから、これはこれはかなりあると言うことだけである CS50のウェブサイトの簡易版。 817 00:37:55,400 --> 00:37:56,790 のは、それが実装されている方法を見てみましょう。 818 00:37:56,790 --> 00:38:01,240 私はmvc0ディレクトリに行けば、 我々はいくつかのファイルが表示されます。 819 00:38:01,240 --> 00:38:03,250 一つは、READMEで、もしそうなら このうちのいくつかは、速すぎる 820 00:38:03,250 --> 00:38:05,166 あなただけの周り突くことができます よりゆったりと後で。 821 00:38:05,166 --> 00:38:07,930 そして、ここでの通知がindex.phpファイルです。 822 00:38:07,930 --> 00:38:09,960 それが判明した場合、その あなた自身、人間、 823 00:38:09,960 --> 00:38:14,460 最終名前を指定しない URL、通常のWebサーバ 824 00:38:14,460 --> 00:38:17,010 あなたのためにいくつかのデフォルトの名前を推測する。 825 00:38:17,010 --> 00:38:20,060 インデックスドット何か 一般的にはデフォルトです。 826 00:38:20,060 --> 00:38:23,010 >> だから、なぜ一瞬前だ 私はここでこのURLを訪問した際、 827 00:38:23,010 --> 00:38:26,750 ファイル名なし、ファイル 拡張子、URL内のピリオドなし。 828 00:38:26,750 --> 00:38:29,710 それはちょうど魔法のように何らかの形で知っていた index.phpを探すために。 829 00:38:29,710 --> 00:38:30,870 それはちょうど慣習だ。 830 00:38:30,870 --> 00:38:32,360 何でも呼び出すことができた。 831 00:38:32,360 --> 00:38:35,110 >> だから私は今に行けば index.phpの、あなたが表示されます 832 00:38:35,110 --> 00:38:37,100 その、indeed--レッツ コメントを取り除く 833 00:38:37,100 --> 00:38:39,500 ここでは本当にありますので、 it--面白い何もない 834 00:38:39,500 --> 00:38:41,579 これは単なるハードコーディングされたHTMLです。 835 00:38:41,579 --> 00:38:43,370 だから、一貫性のある 私の主張といえ、 836 00:38:43,370 --> 00:38:45,230 あなたがHTMLとPHPを混ざり合っできるように。 837 00:38:45,230 --> 00:38:48,060 実際はありません ここでのプログラミングロジック。 838 00:38:48,060 --> 00:38:51,030 >> その他のファイルはかなりある ずっと同じように面白くない。 839 00:38:51,030 --> 00:38:56,240 それはちょうど、ハードコードされた週の一つだ ここで週に1メートルと週1ワット、 840 00:38:56,240 --> 00:38:57,510 月曜日と水曜日のため。 841 00:38:57,510 --> 00:39:01,890 その後、私は週にゼロを開く場合には、 それはほとんど同じだ気づく。 842 00:39:01,890 --> 00:39:03,320 >> そして、それは、キーテイクアウェイのようなものだ。 843 00:39:03,320 --> 00:39:06,180 これがどれだけ冗長に注目してください。 844 00:39:06,180 --> 00:39:10,710 これらのファイルは、かろうじて変更し、まだ私 これらのコピー/ペースト仕事の一つを引っ張っ 845 00:39:10,710 --> 00:39:13,420 私はおそらく1 file--を取った場合、 週にそれをコピーしたzero-- 846 00:39:13,420 --> 00:39:16,320 週1は約来たときに、 そしていくつかの値を微調整。 847 00:39:16,320 --> 00:39:18,590 我々は、おそらくことができる必要があります これよりも良いことができません。 848 00:39:18,590 --> 00:39:21,800 >> それでは、MVCまで戻りましょう バージョン1に入る。 849 00:39:21,800 --> 00:39:24,810 そして、私が持って気づく いくつかのファイル、どのような理由 850 00:39:24,810 --> 00:39:29,870 これらのファイルのすべてに共通していただけ 私はバージョン0に戻った場合にモーメントがago-- 851 00:39:29,870 --> 00:39:32,600 それではインデックスに戻りましょう、 ちょうどpostulate-- 852 00:39:32,600 --> 00:39:36,090 私はcomments--取り除くたら このページのどの部分 853 00:39:36,090 --> 00:39:40,072 私のファイルの一人一人に考えられる? 854 00:39:40,072 --> 00:39:40,780 ちょうどそれを呼び出す。 855 00:39:40,780 --> 00:39:44,620 どの行が複​​製されます おそらくこれらのページのすべてにわたって? 856 00:39:44,620 --> 00:39:45,120 うん? 857 00:39:45,120 --> 00:39:46,110 >> 学生:[聞こえない]。 858 00:39:46,110 --> 00:39:47,660 >> デイビット·J·マラン:1〜9。 859 00:39:47,660 --> 00:39:48,720 ええ、絶対に。 860 00:39:48,720 --> 00:39:52,080 多分8を除いて1〜9、 CS50ので少し変更する 861 00:39:52,080 --> 00:39:54,650 講義になるか 週ゼロか何か。 862 00:39:54,650 --> 00:39:55,970 しかし、ほとんど同じ。 863 00:39:55,970 --> 00:39:58,657 だから、すべてのこのようなものはただである 種類のコピー&ペースト。 864 00:39:58,657 --> 00:40:00,490 そしてカップルがあります 他の行は、私が考えることができます 865 00:40:00,490 --> 00:40:05,000 そのことを、おそらく同一であり、 すべてのファイル間。 866 00:40:05,000 --> 00:40:06,315 >> STUDENT:12および13。 867 00:40:06,315 --> 00:40:07,190 デイビット·J·マラン:うん。 868 00:40:07,190 --> 00:40:11,220 確かに、12、13、14、おそらく ただ面白い理由 869 00:40:11,220 --> 00:40:15,460 線11で何が起こっている および10、ので思われる。 870 00:40:15,460 --> 00:40:18,350 それでは、バージョン1を見てみましょう これは、この上の改善を試みます。 871 00:40:18,350 --> 00:40:24,020 このMVC example--のバージョン1において、我々はよ moment--でMVC何手段を説明 872 00:40:24,020 --> 00:40:27,420 私はインデックスに行けば、それは一種の 今少し混乱に見えます。 873 00:40:27,420 --> 00:40:28,880 それは以前とそれほど単純ではない。 874 00:40:28,880 --> 00:40:30,906 >> しかし、あなたがし始めたら それはだ、慎重にそれを読んで 875 00:40:30,906 --> 00:40:32,530 それはやっているのか非常に簡単。 876 00:40:32,530 --> 00:40:34,397 どうやらライン1と 8行目は、交換した 877 00:40:34,397 --> 00:40:37,230 あなただけのidentified--もののすべて ちょうど良い対策のためにも、 878 00:40:37,230 --> 00:40:41,900 私は念のため、いくつかにそこを去っULに関して 日は、物事のリストを持っていませんでした。 879 00:40:41,900 --> 00:40:47,860 だから必要とする種類のポンドのようなものです C.それはコピーとペーストに含まれる 880 00:40:47,860 --> 00:40:50,470 効果的に内容 右こここのファイルに。 881 00:40:50,470 --> 00:40:53,650 >> だからheader.phpの中で、あなたのように その名前から推測するかもしれないが、 882 00:40:53,650 --> 00:40:55,330 ページのヘッダーになるだろう。 883 00:40:55,330 --> 00:40:57,110 それは一種の、ここで、孤立だ。 884 00:40:57,110 --> 00:41:01,820 それだけにトップを持っていますが、 以下にこれ以上の内容はありません。 885 00:41:01,820 --> 00:41:05,070 >> そして、私はその間フッタを見れば、 これは、他のファイルだったmentioned-- 886 00:41:05,070 --> 00:41:08,830 この1は、さらに少ない面白い しかし、再び、それはすべてに共通です。 887 00:41:08,830 --> 00:41:10,250 だから、これはフッターです。 888 00:41:10,250 --> 00:41:11,300 これがヘッダである。 889 00:41:11,300 --> 00:41:13,950 これはだファイルです 変化するので、なぜしない 890 00:41:13,950 --> 00:41:18,140 共通性を考慮しよう ここに次の2行を持つ? 891 00:41:18,140 --> 00:41:20,090 >> しかし、我々はこれをきれいにすることができる さらに少しアップ。 892 00:41:20,090 --> 00:41:23,260 私が先に行くつもりだと バージョン2を開く 893 00:41:23,260 --> 00:41:27,106 我々はそこだということがわかります 新しいファイル、helpers.php。 894 00:41:27,106 --> 00:41:28,610 私たちは、それが一瞬に何があるかわかります。 895 00:41:28,610 --> 00:41:30,930 それではとして、インデックスに行こう 以前とエントリポイント。 896 00:41:30,930 --> 00:41:35,230 >> そして今、私が必要としてる気づく helpers.php、ヘッダーやフッターはない。 897 00:41:35,230 --> 00:41:41,720 しかし、ヘルパーは一種のようなものです PSET 2からhelpers.cとhelpers.h 898 00:41:41,720 --> 00:41:46,150 またはずっと前に実際にあなたPSET 3 そのPSETを検索し、見つけた、 899 00:41:46,150 --> 00:41:50,950 そしてあなたは、ソートのためにあなたのコードのすべてを持っていた そして別のファイルに検索。 900 00:41:50,950 --> 00:41:52,510 つまり、ここで何が起こっているかだ。 901 00:41:52,510 --> 00:41:54,390 >> そして今、3行目は少し違って見える。 902 00:41:54,390 --> 00:41:55,920 そして、それはちょうど1行です。 903 00:41:55,920 --> 00:41:57,950 これをさらにようにするには 明確な、私はちょうどでし 904 00:41:57,950 --> 00:42:01,820 文体一貫してこれを行う 他のすべてで、私たちはやった。 905 00:42:01,820 --> 00:42:04,130 しかし、それは本当にありません 機能を変更する。 906 00:42:04,130 --> 00:42:05,880 それは本当のたった1行のコードです。 907 00:42:05,880 --> 00:42:09,010 >> どうやら、関数があります どこかでヘッダーのレンダリングと呼ばれる、 908 00:42:09,010 --> 00:42:11,420 これはどこのものです かなり強力な取得。 909 00:42:11,420 --> 00:42:17,040 その括弧の内側に注意してください 構文のどの他の作品はありますか? 910 00:42:17,040 --> 00:42:19,780 911 00:42:19,780 --> 00:42:23,350 それは言うことはおそらく少し難しいですが、 私はいくつかの白を出してあげるthere's--気づく 912 00:42:23,350 --> 00:42:24,300 スペース。 913 00:42:24,300 --> 00:42:25,530 角括弧があります。 914 00:42:25,530 --> 00:42:29,700 >> 我々は少し前に見て、角括弧 連想配列の文脈において、 915 00:42:29,700 --> 00:42:31,580 そのハッシュテーブルのように、再び、である。 916 00:42:31,580 --> 00:42:36,230 そして、あなたはCまで、今思えば、 関数に引数の順序 917 00:42:36,230 --> 00:42:37,570 常に同じでなければならない。 918 00:42:37,570 --> 00:42:41,146 あなたは何を覚えておく必要 X、Y、Zまたはz is--順序、yは、x-- 919 00:42:41,146 --> 00:42:44,020 そしてあなたは常にそれらを提供する必要が 同じ順序で、またはそれらを見上げる 920 00:42:44,020 --> 00:42:45,100 あなたが忘れてしまった場合。 921 00:42:45,100 --> 00:42:51,140 >> しかし、これは賢いやり方であると思われる 任意のキー値を渡す 922 00:42:51,140 --> 00:42:55,840 タイトルは名前ができるペア この場合の引数の 923 00:42:55,840 --> 00:42:58,334 及びCS50は、その値である。 924 00:42:58,334 --> 00:43:00,250 私が持っていることと事実 これらの角括弧 925 00:43:00,250 --> 00:43:02,560 ここに私ができることを意味します また、何かを渡す 926 00:43:02,560 --> 00:43:07,550 週のような1または0,2または3である。 927 00:43:07,550 --> 00:43:10,550 だから我々は、パラメータ化しました そのような方法でこの機能 928 00:43:10,550 --> 00:43:15,180 それは複数の入力を取ることができること、 しかし今のところはただ一つだ。 929 00:43:15,180 --> 00:43:20,060 >> 私は今helpers.phpに行く場合は、 それはやっているのかに気づく。 930 00:43:20,060 --> 00:43:22,030 これは少しある 新しい機能の、 931 00:43:22,030 --> 00:43:24,190 しかし、今のところちょうど取る これがあることを信仰上の 932 00:43:24,190 --> 00:43:26,570 とあなたの構文 PHPの関数を定義する。 933 00:43:26,570 --> 00:43:27,840 あなたは文字通りの機能を言う。 934 00:43:27,840 --> 00:43:30,090 あなたがリターンを指定しない と入力し、それが一貫性のある 935 00:43:30,090 --> 00:43:33,880 変数ディテール以前と どこにあなたは本当に強く入力しないでください。 936 00:43:33,880 --> 00:43:35,650 >> これは単に指定 その、デフォルトでは、この 937 00:43:35,650 --> 00:43:37,460 連想を取る 引数として配列。 938 00:43:37,460 --> 00:43:38,210 そして、あなたは何を知っていますか? 939 00:43:38,210 --> 00:43:41,450 ユーザは、1つに合格しなかった場合 で、デフォルト値をとる。 940 00:43:41,450 --> 00:43:44,680 >> これは、Cにはない特徴である なぜなら、今、いいです、私たちのために 941 00:43:44,680 --> 00:43:46,430 データ、も、あなたなら それに何かを与えていない、 942 00:43:46,430 --> 00:43:49,300 になるだろう 配列が、空1。 943 00:43:49,300 --> 00:43:51,860 そして余談ですが、エキスなど ちょうどファンキー何かを 944 00:43:51,860 --> 00:43:56,380 それはこのからすべてのキーを取る場所 連想配列、物事のすべて 945 00:43:56,380 --> 00:43:59,950 あなたは、角カッコで囲んで置くことができ、 それらの外の変数を作成し、 946 00:43:59,950 --> 00:44:06,270 我々は最終的にアクセスすることができるように footet.phpとheader.phpの中で彼らに。 947 00:44:06,270 --> 00:44:08,950 それは少し抽象的ですが、 ので、私はこれを指摘してみましょう。 948 00:44:08,950 --> 00:44:12,990 >> index.phpの中で、私はあることに気づく タイトルのキーと値のペアを渡す 949 00:44:12,990 --> 00:44:14,850 CS50の値を持つ。 950 00:44:14,850 --> 00:44:18,660 私は今helpers.phpを見れば、 そのRenderHeaderに気付く 951 00:44:18,660 --> 00:44:23,870 私が渡しているというデータを抽出される で、その後、header.phpのを必要とする。 952 00:44:23,870 --> 00:44:27,970 ワット·アイヴ·ダンは、貧乏人の一種である ここで、次の実装。 953 00:44:27,970 --> 00:44:31,720 >> 私はheader.phpのを開く場合は、 私は一生懸命もはやきないことに注意してください 954 00:44:31,720 --> 00:44:34,890 このヘッダファイルに単語CS50をコード化された。 955 00:44:34,890 --> 00:44:39,310 私はatrociously確かにこれを入れてきた という名前の関数、HTMLの特殊文字、 956 00:44:39,310 --> 00:44:40,170 そこに。 957 00:44:40,170 --> 00:44:41,640 しかし、私は何をやったかに気づく。 958 00:44:41,640 --> 00:44:44,240 私は開いているHTMLを持っている。 959 00:44:44,240 --> 00:44:47,420 私はその後、オープンヘッドとオープンのタイトルを持っている。 960 00:44:47,420 --> 00:44:52,380 >> その後、内部のタイトルのオープンと 終了タグは、私はPHPのコードのビットを持っている。 961 00:44:52,380 --> 00:44:56,670 そして、これはいいが、構文のものであり、 そのちょうどエコーを意味します。 962 00:44:56,670 --> 00:44:59,840 これは文字通りthis--意味 following--エコー 963 00:44:59,840 --> 00:45:01,910 これは書くことがセクシーです。 964 00:45:01,910 --> 00:45:05,000 タイトルをエコー そのが渡されています。 965 00:45:05,000 --> 00:45:07,560 >> しかし、あなたはどう思いますか、HTML 特殊なチャーは、すべてに約ある 966 00:45:07,560 --> 00:45:10,590 あなたが持っている場合は特に いくつかの従来のHTMLの経験? 967 00:45:10,590 --> 00:45:14,050 何文字かもしれません ページに渡すのは危険 968 00:45:14,050 --> 00:45:17,980 あなたが動的に生成している場所 このようなコードを含むWebページ? 969 00:45:17,980 --> 00:45:21,370 970 00:45:21,370 --> 00:45:24,650 私はこのファイルに行こう、バージョン 2、私はこれを誘導することができないかどうかを確認します。 971 00:45:24,650 --> 00:45:26,210 >> バージョン2本である。 972 00:45:26,210 --> 00:45:28,510 そしてすべてのものに気付く うまく機能して、結構です。 973 00:45:28,510 --> 00:45:35,280 しかし、私はindex.phpを入ると仮定し、 私は私のページのタイトルと規定 974 00:45:35,280 --> 00:45:36,630 CS50ではありません。 975 00:45:36,630 --> 00:45:44,930 それは、オープンブラケットスクリプトアラートです Hello Worldの、近くに単一引用符、 976 00:45:44,930 --> 00:45:49,740 閉じ括弧、セミコロン、 開き括弧、スラッシュスクリプト。 977 00:45:49,740 --> 00:45:51,897 >> スクリプト、として、我々はよ 最終的にはタグがあり、参照してください。 978 00:45:51,897 --> 00:45:54,480 あなたが別の使用に使用することができます プログラミング言語と呼ばれる 979 00:45:54,480 --> 00:45:56,330 Webページの内部にはJavaScript。 980 00:45:56,330 --> 00:45:57,960 そして今ここにロジックに気づく。 981 00:45:57,960 --> 00:45:59,840 ここでは、タイトルと呼ばれるキーです。 982 00:45:59,840 --> 00:46:02,690 ここではそれが今long値クレイジーだです。 983 00:46:02,690 --> 00:46:07,840 >> しかし、私はヘルパーに行けばPAGE- というか、ヘッダページ、 984 00:46:07,840 --> 00:46:11,310 私はこの関数を呼んでいる まずそのタイトルに。 985 00:46:11,310 --> 00:46:15,250 だから私は今、このページをリロードした場合、私は ばかげて見えるもの、これを参照してください、 986 00:46:15,250 --> 00:46:16,110 それは安全です。 987 00:46:16,110 --> 00:46:17,310 それはちょうど愚かに見えます。 988 00:46:17,310 --> 00:46:20,320 >> しかし、その代わりとします 私はこれを忘れていた。 989 00:46:20,320 --> 00:46:24,660 そして、私の言葉をマークし、ゼロ以外の数 あなたがこれを行うには忘れてしまうの 990 00:46:24,660 --> 00:46:27,790 そしてあなたは、いくつかの勤勉を得るでしょう 学生や友人が来る 991 00:46:27,790 --> 00:46:31,540 あなたにCS50フェアで、または匿名で 夜にあなたのウェブサイトにチャンスをうかがっ 992 00:46:31,540 --> 00:46:35,300 と本質的にコードを注入する あなたのサイトにあなたに知られず 993 00:46:35,300 --> 00:46:35,800 何とか。 994 00:46:35,800 --> 00:46:39,000 >> 私は単純に唾した場合ので、 ここにタイトルとタイトル出 995 00:46:39,000 --> 00:46:44,330 there--よく、タイトルであれば、文字通り このとPHPのように見える 996 00:46:44,330 --> 00:46:47,660 唾を吐くことができます言語として 他の言語のテキストをアウト、 997 00:46:47,660 --> 00:46:50,650 これは文字通り起こっている このタグを交換するには、 998 00:46:50,650 --> 00:46:53,010 もちろん、私は他の場所で何を置く。 999 00:46:53,010 --> 00:46:57,640 >> だから私は今ここに行くと後にリロードする場合は、 これらの安全機構を元に戻す、 1000 00:46:57,640 --> 00:46:59,982 今私はここでのHello Worldを持っている。 1001 00:46:59,982 --> 00:47:02,690 今では、すべてのその大きなではありません 扱うが、あなたは何かができる 1002 00:47:02,690 --> 00:47:05,119 もう少し悪意のある ここでは、ありますように 1003 00:47:05,119 --> 00:47:08,410 我々は過ごしたらわかりますように、他のtags-- 場所のようなJavaScript--でより多くの時間 1004 00:47:08,410 --> 00:47:14,910 ドットhrefが引用、引用終わり、HTTP、取得します business.comが、その反対の 1005 00:47:14,910 --> 00:47:15,950 先日から。 1006 00:47:15,950 --> 00:47:20,120 そして今、あなたはウェブを誘導することができる 実際にすぐにどこへ行くページ 1007 00:47:20,120 --> 00:47:21,190 ここではこのWebページへ。 1008 00:47:21,190 --> 00:47:23,000 >> そして実際に、私はしたくない でもbusiness.comに移動します 1009 00:47:23,000 --> 00:47:24,749 私はしたくないので、 それが何であるかを知っている。 1010 00:47:24,749 --> 00:47:28,710 しかし、これは、あまりにも、コードをトリガする このページに注入される。 1011 00:47:28,710 --> 00:47:32,680 だから、これはたとえと言うことだけである 我々はいくつかの上で、スーパー早期に導入している 1012 00:47:32,680 --> 00:47:36,800 これらのより複雑な構造の、 それは確かに作るの端部に向かってすべてです 1013 00:47:36,800 --> 00:47:39,320 あなたのコードが悪用されない。 1014 00:47:39,320 --> 00:47:40,960 >> だから今ここで3番目のバージョン。 1015 00:47:40,960 --> 00:47:42,470 それは少し手の込んだなってきた。 1016 00:47:42,470 --> 00:47:44,875 私は本当にしませんでしたlike-- 私の肛門側 1017 00:47:44,875 --> 00:47:47,750 少しずつイライラなっていた 私は関数が呼び出されたという事実 1018 00:47:47,750 --> 00:47:51,940 RenderHeaderとRenderFooter それは、ほぼ同じであった。 1019 00:47:51,940 --> 00:47:55,400 だから、それは私に起こった、なぜない 私は、これらの機能をパラメータ化 1020 00:47:55,400 --> 00:47:59,180 レンダリングと呼ばれるだけの一つに、 それは第二引数を取る持っている 1021 00:47:59,180 --> 00:48:04,420 テンプレートの名前のように、最終的な ヘッダーやフッターのどちらかをrender--するには? 1022 00:48:04,420 --> 00:48:07,160 その後、必要に応じて、私がしたい場合 いくつかのキーと値のペアで渡す 1023 00:48:07,160 --> 00:48:10,580 私はタイトルのために行うように フッターのヘッダーではなく、 1024 00:48:10,580 --> 00:48:11,800 私はそれを行うことができます。 1025 00:48:11,800 --> 00:48:16,510 >> だから今、私はhelpers.phpに行けば、 それは少し複雑だ。 1026 00:48:16,510 --> 00:48:19,670 そして、私はで私の手を振るよ 詳細は、それだけで一つの機能だ。 1027 00:48:19,670 --> 00:48:21,890 だから、より良い設計に向けた一歩だ。 1028 00:48:21,890 --> 00:48:23,360 >> 我々はさらに、この一歩を取ることができます。 1029 00:48:23,360 --> 00:48:28,890 私は私の第四に入る場合 このバージョンは、今気付く 1030 00:48:28,890 --> 00:48:31,320 私は何かをやっていること 不可解なのがさらに一種。 1031 00:48:31,320 --> 00:48:33,230 そして私は、これは知っている 一度に吸収することがたくさん、 1032 00:48:33,230 --> 00:48:35,080 しかし、我々はただ親切だ 物事をクリーンアップする。 1033 00:48:35,080 --> 00:48:38,550 今、私は私のヘルパーを入れている と呼ばれるフォルダにファイルを 1034 00:48:38,550 --> 00:48:41,190 ちょうど任意includes-- 私はものを置きたい場所の名前 1035 00:48:41,190 --> 00:48:44,300 私はその後、include--としたいこと この残りの部分は同じである。 1036 00:48:44,300 --> 00:48:47,140 >> しかし、私はgeditの中で、今見れば、 私は取り除く得ている予告 1037 00:48:47,140 --> 00:48:51,940 てきたそれらの他のすべてのファイルのとI 例えば、ここに、それらを移動しました。 1038 00:48:51,940 --> 00:48:55,110 その後テンプレートで、 私も、ここにこれを持っている。 1039 00:48:55,110 --> 00:48:59,292 そしてこれはステップに向かって今、すべてである はるかに優れたデザインパターンを使用する。 1040 00:48:59,292 --> 00:49:01,000 そして、我々は非常に迅速にしている 離れて移動するつもり 1041 00:49:01,000 --> 00:49:03,870 PHPのデフォルト機能から、 その私たちがここに始まり、 1042 00:49:03,870 --> 00:49:07,655 あなただけのPHPを混じり合う場所、 そしてあなたのHTML、およびあなたのCSS、 1043 00:49:07,655 --> 00:49:09,780 そしてあなたはそれを吐き出す あなたがあなたの方法について行く。 1044 00:49:09,780 --> 00:49:11,404 それは非常に保守性であることを行っていない。 1045 00:49:11,404 --> 00:49:14,481 ちょうどC言語のように、私たちは使用して開始 複数のファイルや複数の機能 1046 00:49:14,481 --> 00:49:15,730 アウトファクタリングの事。 1047 00:49:15,730 --> 00:49:16,688 私たちはここで同じことをやる。 1048 00:49:16,688 --> 00:49:19,970 そして実際には、第5及び最終の中 バージョンここで、私は1つの他の事をしました。 1049 00:49:19,970 --> 00:49:23,710 あなたも、ドットドットを使用することができ、 再び、ちょうど親ディレクトリです。 1050 00:49:23,710 --> 00:49:28,260 さらにセキュリティを意識する、 私はリスニングを見れば理由 1051 00:49:28,260 --> 00:49:32,450 ここで5番目と最終版のため、予告 私はここで1つ上のディレクトリと呼ばれていること 1052 00:49:32,450 --> 00:49:35,180 公共、その後に 同じレベル、いわば、 1053 00:49:35,180 --> 00:49:38,490 私は含まれており、テンプレート持っている して、そのテキストフ​​ァイルのreadme。 1054 00:49:38,490 --> 00:49:41,130 >> そして、私は構造化されてきた理由 それthis--と非常に多くのウェブのような 1055 00:49:41,130 --> 00:49:44,330 ホスト、特に5ドルA 月のもの、または10ドル、月のもの、 1056 00:49:44,330 --> 00:49:47,170 あなたは今までにこれらのいずれかを持っていた場合は、 それらの多くは何をすべきかservices-- 1057 00:49:47,170 --> 00:49:50,690 彼らはちょうどあなたがすべてダンプすると期待されている 1つのディレクトリにファイルの、 1058 00:49:50,690 --> 00:49:53,640 我々はすでにで行ったように この非常に最初の例。 1059 00:49:53,640 --> 00:49:56,740 >> しかし、すぐにあなたがより多くの構築を開始すると ただ保管し、洗練されたサイト 1060 00:49:56,740 --> 00:50:00,480 あなたを気にし、ファイルデータ 実際に物事を整理、気 1061 00:50:00,480 --> 00:50:05,060 正しく、よりセキュリティを備えた 念頭に置いて意識することができ 1062 00:50:05,060 --> 00:50:07,927 私たちは守るために開始 友人のすべてに対して、 1063 00:50:07,927 --> 00:50:10,135 あなたはどちらか、あるいは持っていること このクラスの外で誰が、 1064 00:50:10,135 --> 00:50:12,510 とすぐに作り始めるように ウェブ上のプログラムを自分で、 1065 00:50:12,510 --> 00:50:15,140 ピッキングを開始しようとしている あなたにそれらに。 1066 00:50:15,140 --> 00:50:17,420 >> そして私たちは見てみましょう 最終的にこのデザインで。 1067 00:50:17,420 --> 00:50:20,010 これは単なる写真です それは、以下のものが示している。 1068 00:50:20,010 --> 00:50:22,897 私たちは、私たちのすべてを置くつもりだ 一つ以上のファイルにプログラミングロジック、 1069 00:50:22,897 --> 00:50:25,230 そして私達はちょうど開始するつもりだ これらのコントローラを呼び出す。 1070 00:50:25,230 --> 00:50:28,022 どこで脳のそれはだ 当社のウェブサイトは実際にある。 1071 00:50:28,022 --> 00:50:29,730 その後、我々はするつもりだ ビュー、およびビューを持つ 1072 00:50:29,730 --> 00:50:32,480 ただ個別のと同じくらい簡単です しばしば、と呼ばれるテンプレートをfiles--。 1073 00:50:32,480 --> 00:50:34,410 彼らはただ持っている 私のページの美学、 1074 00:50:34,410 --> 00:50:37,020 私はページが見てみたい 色やレイアウトlike-- 1075 00:50:37,020 --> 00:50:38,870 との位置 すべての変数。 1076 00:50:38,870 --> 00:50:41,120 >> その後、もっと面白い 我々は最終的に買ってあげること 1077 00:50:41,120 --> 00:50:45,420 ただあることを行っているモデルは、ある 我々は他の技術に平手打ち単語 1078 00:50:45,420 --> 00:50:47,771 我々は持ち込むこと 絵、実際のデータベースのように、 1079 00:50:47,771 --> 00:50:49,520 お好きな時にするように 情報を保存し、 1080 00:50:49,520 --> 00:50:52,140 あなただけの電子メールを送信しないでください あなたの試験監督へ、または自分自身に、 1081 00:50:52,140 --> 00:50:57,350 あなたが実際にデータベースに格納します SQLとして知られている別の言語を使用して。 1082 00:50:57,350 --> 00:51:00,450 そして私たちが今日ここに残しておきますと、 水曜日にこれを拾う 1083 00:51:00,450 --> 00:51:02,990 その後、データベースを紹介します。 1084 00:51:02,990 --> 00:51:06,940 >> [音楽再生] 1085 00:51:06,940 --> 00:54:24,555