1 00:00:00,000 --> 00:00:02,916 2 00:00:02,916 --> 00:00:04,860 >> [音樂播放] 3 00:00:04,860 --> 00:00:10,210 4 00:00:10,210 --> 00:00:13,350 >> DAVID MALAN:這是CS50,和 這是八週的開始。 5 00:00:13,350 --> 00:00:17,510 而且我們很高興地歡迎 背,大驚喜,CS50自己的拉蒙 6 00:00:17,510 --> 00:00:22,160 高爾文,上升資深誰一直 消費在過去的幾個月 7 00:00:22,160 --> 00:00:26,190 自七月在洛杉磯,在好萊塢, 從字面上工作一個全新的電視 8 00:00:26,190 --> 00:00:31,930 節目叫殖民地,它的創造者 實際上是一個哈佛大學的明礬自己。 9 00:00:31,930 --> 00:00:36,610 所以,我們非常興奮地看到這一 首次亮相美國網絡今年一月上。 10 00:00:36,610 --> 00:00:40,370 敬請關注這一點,對於 對於週更拉蒙來。 11 00:00:40,370 --> 00:00:42,550 >> 知道現在到底是近了。 12 00:00:42,550 --> 00:00:47,400 而這是什麼意思是,有沒有 所有的東西離開了CS50的,痛心地說。 13 00:00:47,400 --> 00:00:49,400 我們只有三個問題 套left--有 14 00:00:49,400 --> 00:00:52,510 問題集six--這是在 你的手現在還是很快就會被, 15 00:00:52,510 --> 00:00:56,080 由於稍後week--是為了彌補 我們在命令行中,其中世界 16 00:00:56,080 --> 00:00:59,450 我們已經花費了我們大部分的時間用 C和Web編程的世界。 17 00:00:59,450 --> 00:01:02,350 那麼,你會看到很多的想法 在命令行工作借來的, 18 00:01:02,350 --> 00:01:04,560 但也有很多新的 而有趣的想法 19 00:01:04,560 --> 00:01:07,929 這也將是有密切關係的 移動應用和技術, 20 00:01:07,929 --> 00:01:10,470 更一般地,使用它 人都熟悉時下 21 00:01:10,470 --> 00:01:12,090 在筆記本電腦和手機等。 22 00:01:12,090 --> 00:01:15,220 >> 所以,你將實現不 一個網頁,或網站 23 00:01:15,220 --> 00:01:17,620 本身,而是實際的web服務器。 24 00:01:17,620 --> 00:01:21,590 您將編寫一個Web服務器的其它部分 C語言編寫的,其目的在生活中 25 00:01:21,590 --> 00:01:25,410 是接收的HTTP請求,那些 我們一直談論的虛擬信封 26 00:01:25,410 --> 00:01:29,780 對了,居然無論是與回應 一些靜態內容 - 就像一個圓點的HTML 27 00:01:29,780 --> 00:01:32,310 文件,或一點陣JPEG或 任何其他數量的文件, 28 00:01:32,310 --> 00:01:37,070 甚至是PHP文件,由此您的Web 服務器將解釋該PHP 29 00:01:37,070 --> 00:01:38,332 代碼和吐出的結果。 30 00:01:38,332 --> 00:01:40,540 現在,我們為您提供 相當多的框架 31 00:01:40,540 --> 00:01:43,100 對於它 - 確實 對於問題的分佈碼 32 00:01:43,100 --> 00:01:47,496 組六超過1000行代碼,一個 很多這是註釋,是fair-- 33 00:01:47,496 --> 00:01:49,370 但這實際上意味著 為契機 34 00:01:49,370 --> 00:01:52,570 讓你的手臟跳水 到一個相當大的項目 35 00:01:52,570 --> 00:01:55,570 我們已經非常明確 雕刻出件的你, 36 00:01:55,570 --> 00:01:59,046 這樣真的,當你退出CS50和 進入編程的真實世界 37 00:01:59,046 --> 00:02:00,920 並希望涉足 任何數量的項目, 38 00:02:00,920 --> 00:02:03,253 你將有更大的 舒適下載一些源 39 00:02:03,253 --> 00:02:05,020 代碼,一些開源 項目在網絡上, 40 00:02:05,020 --> 00:02:08,174 和潛水,使 你認為合適的變化。 41 00:02:08,174 --> 00:02:11,340 習題集七是將是關於 使自己的基於Web的應用程序 42 00:02:11,340 --> 00:02:14,140 這需要動態輸入和 產生動力輸出形式 43 00:02:14,140 --> 00:02:16,920 的etrade.com樣的網站。 44 00:02:16,920 --> 00:02:20,800 而問題集8將集中在尚未 已知以JavaScript另一種語言。 45 00:02:20,800 --> 00:02:24,170 >> 同時,最終 項目是在地平線上。 46 00:02:24,170 --> 00:02:26,800 所謂預提案 一個星期從今天到期。 47 00:02:26,800 --> 00:02:29,930 按照規範的預proposal--, 這是對CS50的website-- 48 00:02:29,930 --> 00:02:33,260 是一個很隨意的機會 你發送一個非常簡潔的電子郵件 49 00:02:33,260 --> 00:02:35,170 你的助教 只是通知他 50 00:02:35,170 --> 00:02:38,250 (她),你在想什麼, 用他或她作為一個傳聲筒。 51 00:02:38,250 --> 00:02:40,980 而有理智check-- 不管你是想 52 00:02:40,980 --> 00:02:43,210 關於貪得 太多或者太少, 53 00:02:43,210 --> 00:02:46,480 也許你無論如何也沒辦法 並希望與其進行通話。 54 00:02:46,480 --> 00:02:48,480 >> 其後是一個建議 和狀態報告, 55 00:02:48,480 --> 00:02:51,860 所謂CS50這裡在黑客馬拉松 劍橋哈佛和耶魯大學的學生 56 00:02:51,860 --> 00:02:52,362 一致好評。 57 00:02:52,362 --> 00:02:54,320 最後一個項目的 實現是那麼所致。 58 00:02:54,320 --> 00:02:59,290 然後這裡CS50公平,在劍橋, 還有另外一個在紐黑文。 59 00:02:59,290 --> 00:03:02,500 所以建議,看看 該網站的詳情。 60 00:03:02,500 --> 00:03:06,530 >> 但更令人興奮的,也同樣是一個 機會,讓你的手臟, 61 00:03:06,530 --> 00:03:09,350 和你的頭腦開放給整個 一堆的主題和工具 62 00:03:09,350 --> 00:03:12,920 和技術,是輔助 該課程的核心教學大綱, 63 00:03:12,920 --> 00:03:14,810 但仍然相關。 64 00:03:14,810 --> 00:03:18,400 而同樣精彩墊腳石 這樣做很酷的最終項目 65 00:03:18,400 --> 00:03:22,020 遠遠超出了我們的材料已經覆蓋 正式的問題在課堂上設置或。 66 00:03:22,020 --> 00:03:24,446 所以去CS50的網站 研討會整個花名冊。 67 00:03:24,446 --> 00:03:26,070 如果你還沒有註冊,這很好。 68 00:03:26,070 --> 00:03:29,860 來吧,註冊仍然和我們將 跟進直播流媒體鏈接, 69 00:03:29,860 --> 00:03:31,844 的日期和時間是在網站上。 70 00:03:31,844 --> 00:03:33,760 所有的一切都將是 記錄下來,放到網上 71 00:03:33,760 --> 00:03:35,800 如果你不能使 特別的日期和時間。 72 00:03:35,800 --> 00:03:39,380 >> 至於什麼樣的未來thereafter--好, 當然,還有的CS50黑客馬拉松。 73 00:03:39,380 --> 00:03:43,560 這張照片,回憶,從零一周拍攝 凌晨4點左右的一個晚上在過去的幾年。 74 00:03:43,560 --> 00:03:46,900 該CS50公平,這再次 將在這兩個城市。 75 00:03:46,900 --> 00:03:49,760 然後,只需廠 種子,儘管我們仍然 76 00:03:49,760 --> 00:03:54,080 有一個月加左學期,如果 你想加入CS50自己的教學 77 00:03:54,080 --> 00:03:56,770 工作人員,並且要開始 想成為一個CA, 78 00:03:56,770 --> 00:03:59,550 或教學老鄉,知道 我們將開始談論更多關於 79 00:03:59,550 --> 00:04:00,630 後來這個學期。 80 00:04:00,630 --> 00:04:03,470 但圖為 今年大部分時間的球隊。 81 00:04:03,470 --> 00:04:06,950 >> 因此,PHP--我很傷心 上週[? Allyse?]好心 82 00:04:06,950 --> 00:04:09,370 去得到的努力 我們這些精彩的道具 83 00:04:09,370 --> 00:04:11,720 我沒有使用結束,所以 真的只是看上去有點傻 84 00:04:11,720 --> 00:04:15,160 我們有一個鐵鍬坐在這裡所有 日上週三,和一個小勺子。 85 00:04:15,160 --> 00:04:17,709 但是,這是我的隱喻 試圖描繪方式 86 00:04:17,709 --> 00:04:21,600 為什麼我們過渡的圖片 從C到PHP之類的語言。 87 00:04:21,600 --> 00:04:25,480 並且同樣可以的任何所述 languages​​--的Java,Python和Ruby的數量 88 00:04:25,480 --> 00:04:31,270 的others--但而在或串 C,比如,編寫C語言程序 89 00:04:31,270 --> 00:04:34,050 通常可能是這樣 採取這樣的勺子 90 00:04:34,050 --> 00:04:36,770 而挖的一個洞 地面上,在沙或污物。 91 00:04:36,770 --> 00:04:39,770 PHP可以讓你花費太多 大咬出了問題, 92 00:04:39,770 --> 00:04:42,842 編寫更少的代碼 用小得多的工具, 93 00:04:42,842 --> 00:04:45,050 因為有這麼多 功能拼湊研究。 94 00:04:45,050 --> 00:04:47,633 >> 現在,如果我們真的是戲劇性的, 我們不得不有所鏟 95 00:04:47,633 --> 00:04:48,760 在這裡,但就這樣吧。 96 00:04:48,760 --> 00:04:51,370 同時,其它 比喻,我們想出了 97 00:04:51,370 --> 00:04:53,770 是的,當然,你可以 使用類似扳手 98 00:04:53,770 --> 00:04:56,610 錘的東西都像釘子。 99 00:04:56,610 --> 00:04:58,980 不過,當然,合適的 使用的工具是怎麼回事 100 00:04:58,980 --> 00:05:01,360 是沒有這麼多的 所謂的語言C-- 101 00:05:01,360 --> 00:05:03,590 現在我只是生氣 [?桑德斯?]也許, 102 00:05:03,590 --> 00:05:07,890 我們將解決這個問題later--如此 正確的工具經常使用 103 00:05:07,890 --> 00:05:09,640 是不會被 這種最低水平的工具。 104 00:05:09,640 --> 00:05:13,720 事實上,C是不是一種語言, 你們中的大多數都曾經打算使用, 105 00:05:13,720 --> 00:05:15,590 還是應該必然再次使用。 106 00:05:15,590 --> 00:05:18,350 >> 而事實上,一個小 secret--唯一一次 107 00:05:18,350 --> 00:05:23,160 我用C自己之間幾乎 每一個秋天的九月和十二月 108 00:05:23,160 --> 00:05:23,870 學期。 109 00:05:23,870 --> 00:05:25,790 那是因為我們 以此為契機 110 00:05:25,790 --> 00:05:27,852 教基本面 編程, 111 00:05:27,852 --> 00:05:29,810 並與它的計算機 科學的基本原理,數據 112 00:05:29,810 --> 00:05:32,435 結構,算法和 like--但很快會把你 113 00:05:32,435 --> 00:05:35,010 現在看到的語法 和思想基礎C 114 00:05:35,010 --> 00:05:37,530 如此奇妙 轉移到更現代的 115 00:05:37,530 --> 00:05:41,130 更高層次的語言,如 PHP和Python和Perl和Java 116 00:05:41,130 --> 00:05:46,750 和Objective-C--其實,與其說 目的-C--但斯威夫特,這些新 117 00:05:46,750 --> 00:05:50,010 語言是很多人都會 然後涉足與你最後的項目。 118 00:05:50,010 --> 00:05:55,070 >> 因此,事不宜遲,讓我們真正 使用PHP來解決一些問題。 119 00:05:55,070 --> 00:06:00,230 回想一下,在年初,去年 本週,我們只是用CS50 IDE, 120 00:06:00,230 --> 00:06:02,990 我們寫了一個極小的小程序 只是說,“世界,你好。” 121 00:06:02,990 --> 00:06:05,680 然後我救了它 稱為文件hello.php。 122 00:06:05,680 --> 00:06:07,280 然後我跑了這個命令。 123 00:06:07,280 --> 00:06:08,080 >> 為什麼? 124 00:06:08,080 --> 00:06:09,900 在英語中,這是怎麼回事嗎? 125 00:06:09,900 --> 00:06:12,760 什麼是我在做的時候 我跑這個命令? 126 00:06:12,760 --> 00:06:13,405 >> 是嗎? 127 00:06:13,405 --> 00:06:16,572 >> 聽眾:有一些功能PHP 讀什麼in--明白這一點。 128 00:06:16,572 --> 00:06:19,696 DAVID馬蘭:好,有一些功能 PHP--,讓我更具體, 129 00:06:19,696 --> 00:06:21,810 有一個名為PHP程序,又名 130 00:06:21,810 --> 00:06:25,872 一個解釋,那理解 hello.php的內容, 131 00:06:25,872 --> 00:06:27,830 和頂部解釋它 底部,左到右, 132 00:06:27,830 --> 00:06:29,590 然後做了這些命令說。 133 00:06:29,590 --> 00:06:33,320 當然,在hello.php的命令, 僅僅是源代碼 - 功能 134 00:06:33,320 --> 00:06:35,750 和變量和循環和 等等,我們自己 135 00:06:35,750 --> 00:06:37,460 已經開始使用PHP編寫。 136 00:06:37,460 --> 00:06:40,240 >> 但不同於C,這是 編譯語言, 137 00:06:40,240 --> 00:06:42,810 PHP你只寫它,並運行它。 138 00:06:42,810 --> 00:06:46,420 你跳過了中間商的步驟 將其轉換為0和1 139 00:06:46,420 --> 00:06:47,790 然後運行它。 140 00:06:47,790 --> 00:06:50,510 還等什麼是這種積極的一面? 141 00:06:50,510 --> 00:06:52,690 為什麼我們省略這一步? 142 00:06:52,690 --> 00:06:55,238 為什麼做更多的現代語言 往往會忽略這一步呢? 143 00:06:55,238 --> 00:06:58,880 144 00:06:58,880 --> 00:07:01,220 是什麼好處? 145 00:07:01,220 --> 00:07:02,080 >> 或者只是直覺? 146 00:07:02,080 --> 00:07:04,200 即使我們還沒有 之前寫太多PHP, 147 00:07:04,200 --> 00:07:07,210 什麼是有益的關於不 編譯代碼,你覺得呢? 148 00:07:07,210 --> 00:07:08,520 沒有? 149 00:07:08,520 --> 00:07:09,610 不承諾? 150 00:07:09,610 --> 00:07:11,350 抓你的頭? 151 00:07:11,350 --> 00:07:12,614 是啊。 152 00:07:12,614 --> 00:07:13,600 >> 聽眾:更有活力。 153 00:07:13,600 --> 00:07:14,683 >> DAVID馬蘭:更多的活力呢? 154 00:07:14,683 --> 00:07:16,032 什麼意思? 155 00:07:16,032 --> 00:07:17,000 >> 聽眾:[聽不清] 156 00:07:17,000 --> 00:07:20,349 157 00:07:20,349 --> 00:07:22,390 DAVID馬蘭:OK,好,所以 取決於輸入, 158 00:07:22,390 --> 00:07:23,470 你不必每次都進行編譯。 159 00:07:23,470 --> 00:07:24,990 它真的是為 簡單that--什麼 160 00:07:24,990 --> 00:07:26,990 繼續點 編譯代碼? 161 00:07:26,990 --> 00:07:29,480 這僅僅是一個步驟中的 making--這是需要, 162 00:07:29,480 --> 00:07:31,900 在過去的幾 週,兩倍的步驟 163 00:07:31,900 --> 00:07:33,820 作為剛剛運行您的程序。 164 00:07:33,820 --> 00:07:36,940 它是有益的看到你 看到一些錯誤信息等等, 165 00:07:36,940 --> 00:07:38,720 但它仍然只是一個惱人的一步。 166 00:07:38,720 --> 00:07:41,810 >> 所以程序員實現 隨著時間的推移,我們為什麼不 167 00:07:41,810 --> 00:07:45,327 開始編寫語言的不 需要一個相當機械的步驟, 168 00:07:45,327 --> 00:07:47,160 這樣就可以只寫 你的代碼並運行它。 169 00:07:47,160 --> 00:07:48,920 但究竟是什麼價格 我們看到,我們付出 170 00:07:48,920 --> 00:07:50,910 上週,有一個具體的例子? 171 00:07:50,910 --> 00:07:51,650 是嗎? 172 00:07:51,650 --> 00:07:52,370 >> 速度。 173 00:07:52,370 --> 00:07:54,690 所以,[?什麼?]口譯 慢一點, 174 00:07:54,690 --> 00:07:57,330 在零和一的 很好,速度很快的電腦 175 00:07:57,330 --> 00:08:00,070 要了解,因為 Intel的CPU,或不管它是什麼, 176 00:08:00,070 --> 00:08:03,070 只是明白這是怎麼回事 與這些位模式。 177 00:08:03,070 --> 00:08:05,370 而一名翻譯 是一個程序,真的 178 00:08:05,370 --> 00:08:07,980 有讀取ASCII源 您所編寫的代碼, 179 00:08:07,980 --> 00:08:12,700 並將其轉換,可以這麼說,或者 弄清楚如何將它轉換最終 180 00:08:12,700 --> 00:08:13,525 到零和一。 181 00:08:13,525 --> 00:08:15,650 因此,它只是需要一點點 一個性能命中位。 182 00:08:15,650 --> 00:08:16,858 所以這是一個有點折衷。 183 00:08:16,858 --> 00:08:21,570 現在,如果我們做到這一點在這裡,讓我 繼續前進,做一個舉例如下。 184 00:08:21,570 --> 00:08:26,610 如果我走在這裡,新的文件,我要去 再次保存,這是hello.php。 185 00:08:26,610 --> 00:08:31,450 現在我要繼續前進 並說,“印刷世界你好” - 186 00:08:31,450 --> 00:08:35,130 和回憶,我可以使用打印,我不 必須使用打印-F。而現在到這裡, 187 00:08:35,130 --> 00:08:42,039 如果我做hello.php的PHP,huh--我 似乎沒有不同的方式解釋它。 188 00:08:42,039 --> 00:08:43,412 我做了什麼錯? 189 00:08:43,412 --> 00:08:44,710 >> 聽眾:有角度的手鐲。 190 00:08:44,710 --> 00:08:47,015 >> DAVID馬蘭:是的,你需要 這個角度支架往上頂。 191 00:08:47,015 --> 00:08:49,390 因此,它是一種惱人的,但 你習慣它很快。 192 00:08:49,390 --> 00:08:53,500 如果我有寫PHP代碼,我 一般需要告訴程序, 193 00:08:53,500 --> 00:08:56,950 或者告訴解釋,嘿嘿 PHP,這裡涉及一些PHP代碼。 194 00:08:56,950 --> 00:09:00,440 然後,良好的措施,我想 關閉此與此,而是 195 00:09:00,440 --> 00:09:03,740 只有問號角 支架,以至於現在到這裡, 196 00:09:03,740 --> 00:09:06,840 如果我跑這一次,現在 我獲得所需的結果。 197 00:09:06,840 --> 00:09:09,820 >> 現在,讓我們做一個輕微的優化, 只是讓你以前見過它。 198 00:09:09,820 --> 00:09:14,040 這是種討厭我 必須運行PHP空間hello.php, 199 00:09:14,040 --> 00:09:16,060 因為在過去我 可以只寫點斜線 200 00:09:16,060 --> 00:09:17,560 節目的名字,這是一種很好的。 201 00:09:17,560 --> 00:09:19,420 它是一種更好的用戶體驗。 202 00:09:19,420 --> 00:09:24,160 >> 因此,原來你可以這樣做 與following--我的PHP 203 00:09:24,160 --> 00:09:28,780 可以使用這個相當隱蔽 咒語在此處的頂部, 204 00:09:28,780 --> 00:09:31,740 這一般被稱為認領, 因此,這是一個尖銳的象徵, 205 00:09:31,740 --> 00:09:34,270 可以這麼說,這是一個爆炸 或感嘆號。 206 00:09:34,270 --> 00:09:38,490 而現在這是通向一個程序 在一個典型的Linux系統, 207 00:09:38,490 --> 00:09:41,500 被稱為環境,或包膜。 208 00:09:41,500 --> 00:09:43,920 而這個line--漫長的故事 short--行一個剛 209 00:09:43,920 --> 00:09:48,710 說,哎電腦,找到PHP 環境中的解釋對我來說, 210 00:09:48,710 --> 00:09:50,610 發現它在你的記憶,可以這麼說。 211 00:09:50,610 --> 00:09:54,130 >> 什麼是好的,現在,是 如果我去到這裡, 212 00:09:54,130 --> 00:09:57,750 我可以做點斜線 你好點PHP,or--哼。 213 00:09:57,750 --> 00:09:59,000 權限被拒絕。 214 00:09:59,000 --> 00:10:02,350 那麼,你會看到更多的這 有問題設置七,如果你 215 00:10:02,350 --> 00:10:04,060 還沒有準備好,與權限。 216 00:10:04,060 --> 00:10:06,510 事實證明,我需要 執行此命令 217 00:10:06,510 --> 00:10:10,779 所謂的[? chamod?]變革 mode--一個X軸正hello.php。 218 00:10:10,779 --> 00:10:13,820 我需要[聽不清]這一個額外的 步驟,告訴我的電腦, 219 00:10:13,820 --> 00:10:16,400 使hello.php可執行文件。 220 00:10:16,400 --> 00:10:21,310 而現在看什麼happens--點 斜線hello.php,它只是運行。 221 00:10:21,310 --> 00:10:23,310 我並不需要指定 解釋了。 222 00:10:23,310 --> 00:10:26,680 我可以讓它更漂亮, 不過,如果我重新命名這件事情。 223 00:10:26,680 --> 00:10:30,570 如果我移動hello.php只 Hello--所以注意到在左上角, 224 00:10:30,570 --> 00:10:32,860 該計劃的名稱是 實際上現在只是您好。 225 00:10:32,860 --> 00:10:37,300 現在我可以使它看起來像一個C程序, 即使它寫在PHP-- 226 00:10:37,300 --> 00:10:39,210 或者坦白任何數量 其它語言。 227 00:10:39,210 --> 00:10:41,480 >> 所以邊緣增強, 沒有功能差異。 228 00:10:41,480 --> 00:10:44,460 但它只是一個小的好奇心 現在,這樣就可以編寫程序 229 00:10:44,460 --> 00:10:48,989 在任何語言,而且用戶不 要知道或關心那些是什麼。 230 00:10:48,989 --> 00:10:51,030 好吧,讓我們來看看一個更 現在引人注目的例子 231 00:10:51,030 --> 00:10:52,850 我提前掀起了。 232 00:10:52,850 --> 00:10:54,955 這就是所謂的quote.php。 233 00:10:54,955 --> 00:10:56,740 而且它是可在網上。 234 00:10:56,740 --> 00:11:00,299 並注意這是很short-- 但它是一個命令行程序,是 235 00:11:00,299 --> 00:11:02,840 要查找股價 對我來說,這實際上是將 236 00:11:02,840 --> 00:11:04,230 是有密切關係的問題設置七人。 237 00:11:04,230 --> 00:11:05,396 >> 所以,讓我們來看看我在做什麼。 238 00:11:05,396 --> 00:11:08,640 在最上面我已經得到了 開放式支架問號PHP。 239 00:11:08,640 --> 00:11:13,372 然後,我已經得到了這條線,因此我 需要一個名為functions.php--文件 240 00:11:13,372 --> 00:11:15,080 我們將看到 更多關於這一點, 241 00:11:15,080 --> 00:11:17,340 但是這是像C的 版犀利包括, 242 00:11:17,340 --> 00:11:19,090 你想要去 包括另一個文件。 243 00:11:19,090 --> 00:11:23,720 PHP稱它為要求,雖然它 也有一個包括功能。 244 00:11:23,720 --> 00:11:26,861 而事實證明,function.php是 只是我在課前寫的。 245 00:11:26,861 --> 00:11:29,860 我把它放在同一個目錄下,因為 我想分解出一些代碼 246 00:11:29,860 --> 00:11:31,800 我們可能要在其他地方使用。 247 00:11:31,800 --> 00:11:34,560 >> 同時,你也許可以 推斷出是怎麼回事。 248 00:11:34,560 --> 00:11:39,200 這是C--,但有一點不同 這是什麼意思通過確保正確使用? 249 00:11:39,200 --> 00:11:41,180 技術上更翻譯此。 250 00:11:41,180 --> 00:11:45,950 在什麼情況下我是 退出程序,或退出? 251 00:11:45,950 --> 00:11:47,074 是嗎? 252 00:11:47,074 --> 00:11:47,990 >> 聽眾:當你不具備 兩個命令行參數。 253 00:11:47,990 --> 00:11:49,480 >> DAVID馬蘭:如果我沒有 以命令行參數。 254 00:11:49,480 --> 00:11:52,396 請記住,其中之一 參數是該程序的名稱本身。 255 00:11:52,396 --> 00:11:55,340 和第二將是 一個字我提示符後鍵入。 256 00:11:55,340 --> 00:11:57,460 所以就像C,這 是我的檢查方式, 257 00:11:57,460 --> 00:12:00,022 沒有用戶合作, 運行該程序,因為我打算? 258 00:12:00,022 --> 00:12:01,730 現在,有什麼東西 有一點不同 259 00:12:01,730 --> 00:12:04,020 與C--首先我們 有這樣的美元符號, 260 00:12:04,020 --> 00:12:07,710 什麼做一美元 簽署表示在PHP? 261 00:12:07,710 --> 00:12:08,440 只是一個變量。 262 00:12:08,440 --> 00:12:11,731 這是all--只是一個變量後跟 無論你想實際調用它。 263 00:12:11,731 --> 00:12:14,000 請注意,有一些東西 從我的PHP程序缺失, 264 00:12:14,000 --> 00:12:18,210 就像它缺少最後 本週,對C,這是什麼? 265 00:12:18,210 --> 00:12:21,620 >> A型,而且別的東西。 266 00:12:21,620 --> 00:12:26,409 沒有東西 function--主要功能。 267 00:12:26,409 --> 00:12:27,450 有沒有主要功能。 268 00:12:27,450 --> 00:12:29,680 你剛開始寫 你的代碼,而不必 269 00:12:29,680 --> 00:12:32,790 擔心一個比較隨意 命名一些默認的約定 270 00:12:32,790 --> 00:12:33,880 功能為主。 271 00:12:33,880 --> 00:12:36,720 所以ARG C是真的 一個全局變量 272 00:12:36,720 --> 00:12:39,049 該解釋 使提供給我。 273 00:12:39,049 --> 00:12:40,090 現在,這是有趣的。 274 00:12:40,090 --> 00:12:41,140 所以查找的東西。 275 00:12:41,140 --> 00:12:43,370 美元符號的股票是在 離開了,這是我的變量。 276 00:12:43,370 --> 00:12:45,120 在右手側, 有明顯 277 00:12:45,120 --> 00:12:50,270 在PHP中的函數調用查找的 我通過我的最後一個命令行 278 00:12:50,270 --> 00:12:51,902 參數用於:不管這個詞。 279 00:12:51,902 --> 00:12:53,610 我們將看到如何 工作在一個時刻。 280 00:12:53,610 --> 00:12:55,380 >> 然後最後我匯報的價格。 281 00:12:55,380 --> 00:12:58,650 我打印一顆顆 份額如此這般。 282 00:12:58,650 --> 00:13:02,082 請記住,這是 在PHP--在PHP--的方式方法 283 00:13:02,082 --> 00:13:04,290 在這裡,你不必做 美元符號s了。 284 00:13:04,290 --> 00:13:06,782 你可以只用花括號 並插入一些變量。 285 00:13:06,782 --> 00:13:09,240 你不必擔心 用printf以同樣的方式。 286 00:13:09,240 --> 00:13:13,530 >> 而作為一個不談,當你把一個變量 雙引號像這裡面, 287 00:13:13,530 --> 00:13:17,370 您使用的是看中技術 所謂的變量插值。 288 00:13:17,370 --> 00:13:20,380 它只是意味著插上變量在這裡。 289 00:13:20,380 --> 00:13:23,760 而作為一個拋開你,有的誰進來 從其他編程背景, 290 00:13:23,760 --> 00:13:26,960 你可能不使用單引號 字串,做到這一點。 291 00:13:26,960 --> 00:13:30,290 您必須使用雙引號 變量代換工作。 292 00:13:30,290 --> 00:13:32,740 否則,你會從字面上 看到這些花括號。 293 00:13:32,740 --> 00:13:34,500 >> 所以,最後,讓我們繼續並運行此。 294 00:13:34,500 --> 00:13:36,690 讓我做我的終端大些。 295 00:13:36,690 --> 00:13:41,940 讓我繼續運行 在我引用的目錄。 296 00:13:41,940 --> 00:13:46,950 [? CDsource?] [? AM?] [?報價?] PHP的報價點PHP, 297 00:13:46,950 --> 00:13:50,290 而我要尋找的東西 就像歌,這是它的股票代碼, 298 00:13:50,290 --> 00:13:55,510 和一個共享的新名稱, 字母表公司,花費$ 717到今天為止。 299 00:13:55,510 --> 00:13:58,680 好吧,如果我們想 再次運行此,任何人 300 00:13:58,680 --> 00:14:02,600 還有一個股票行情 他們想看看嗎? 301 00:14:02,600 --> 00:14:06,770 >> 微軟,我認為是 這其中,MSFT-- $ 53 302 00:14:06,770 --> 00:14:09,720 我認為雅虎是可能的。 303 00:14:09,720 --> 00:14:12,130 而Facebook是。 304 00:14:12,130 --> 00:14:13,740 >> 那麼,什麼是這個程序在做什麼? 305 00:14:13,740 --> 00:14:16,306 魔術似乎被嵌入 在查找功能。 306 00:14:16,306 --> 00:14:17,430 因此,讓我們快速瀏覽一下。 307 00:14:17,430 --> 00:14:21,815 >> 事實證明,不來 用PHP,它在functions.php中。 308 00:14:21,815 --> 00:14:23,690 我們不會通過 這很詳細, 309 00:14:23,690 --> 00:14:28,040 但注意的詞這裡 上functions.php--六線 310 00:14:28,040 --> 00:14:29,440 我從字面上說功能。 311 00:14:29,440 --> 00:14:31,050 我指定我的函數的名稱。 312 00:14:31,050 --> 00:14:34,330 我然後指定任何 參數,或者參數, 313 00:14:34,330 --> 00:14:36,480 我想這功能take--沒有類型。 314 00:14:36,480 --> 00:14:37,580 然後,我實現它。 315 00:14:37,580 --> 00:14:39,240 >> 我會揮揮手 在實施中, 316 00:14:39,240 --> 00:14:42,115 因為它是相當先進的右 現在,但我們會再次看到它實際上 317 00:14:42,115 --> 00:14:44,700 在一個星期中的問題設置七人。 318 00:14:44,700 --> 00:14:47,490 但我可以打掃一下了。 319 00:14:47,490 --> 00:14:49,590 我也包括在 今天的代碼版本 320 00:14:49,590 --> 00:14:52,340 的報價,其中有沒有點PHP文件。 321 00:14:52,340 --> 00:14:57,270 因為什麼大概是在 所謂剛引用程序的頂部? 322 00:14:57,270 --> 00:15:00,140 這所謂的shebang--的 相當神秘的咒語 323 00:15:00,140 --> 00:15:04,590 上面寫著發現PHP,然後 在我的代碼運行在這裡。 324 00:15:04,590 --> 00:15:07,360 >> 好吧,這樣帶來的 我們的地方,我們離開 325 00:15:07,360 --> 00:15:09,560 最後時間 - 儘管有 一些更高級的例子。 326 00:15:09,560 --> 00:15:13,980 有任何疑問,迄今約 PHP還是我們在做什麼? 327 00:15:13,980 --> 00:15:15,570 No--所有權利。 328 00:15:15,570 --> 00:15:16,180 是嗎? 329 00:15:16,180 --> 00:15:19,610 >> 聽眾:內 HTML文件,做你 - 330 00:15:19,610 --> 00:15:22,226 [?你呢?] [?只是打電話了嗎?] 一個[聽不清] PHP文件? 331 00:15:22,226 --> 00:15:23,350 DAVID馬蘭:好問題。 332 00:15:23,350 --> 00:15:26,070 在網絡方面,我們是 從字面上即將過渡到, 333 00:15:26,070 --> 00:15:28,028 你不使用所謂的 認領在頂部, 334 00:15:28,028 --> 00:15:31,980 因為Web server--常 程序調用Apache或微軟 335 00:15:31,980 --> 00:15:37,470 IIS,Internet信息服務器,或 任意數量的其他網絡服務器軟件, 336 00:15:37,470 --> 00:15:40,636 知道,它認為,當 一個點的PHP文件,它 337 00:15:40,636 --> 00:15:42,010 應在其上運行的解釋。 338 00:15:42,010 --> 00:15:43,468 它不看那個第一行。 339 00:15:43,468 --> 00:15:45,580 所以這第一行招 只是當你 340 00:15:45,580 --> 00:15:48,330 寫命令行programs-- 我們不會做超的時候, 341 00:15:48,330 --> 00:15:52,510 但它是我們的橋接方式 我們的C例子,現在我們的PHP。 342 00:15:52,510 --> 00:16:00,680 >> 因此,讓我們確實彌補這個世界 在命令行天下網絡 343 00:16:00,680 --> 00:16:02,230 通過執行以下操作。 344 00:16:02,230 --> 00:16:05,090 讓我繼續前進,繪製 在這裡只是一瞬間。 345 00:16:05,090 --> 00:16:09,940 因此,如果我們有一個web服務器,或者更確切地說, 如果我們有我的筆記本電腦在這裡, 346 00:16:09,940 --> 00:16:11,280 我就畫這樣的。 347 00:16:11,280 --> 00:16:14,250 在這裡,我們有 互聯網以某種形式。 348 00:16:14,250 --> 00:16:18,210 然後在這裡,我們有 在building--服務器 349 00:16:18,210 --> 00:16:20,760 這是怎樣的互聯網 works--在這裡 350 00:16:20,760 --> 00:16:23,120 與一些燈光,也許一台服務器。 351 00:16:23,120 --> 00:16:27,530 什麼是真正回事 這兩個連接之間? 352 00:16:27,530 --> 00:16:29,240 >> 所以在這個建築是一個Web服務器。 353 00:16:29,240 --> 00:16:31,420 這只是一台電腦 這在運行一些操作 354 00:16:31,420 --> 00:16:34,561 系統 - 或許稱為自由軟件 阿帕奇,其中CS50 IDE運行。 355 00:16:34,561 --> 00:16:36,310 所以,你可以實際 覺得這個建築 356 00:16:36,310 --> 00:16:38,579 作為建設中 這CSt0 IDE存儲。 357 00:16:38,579 --> 00:16:40,870 這就是所有你 帳戶,所有的你 358 00:16:40,870 --> 00:16:43,130 擁有自己的Web服務器 運行時,所有的你 359 00:16:43,130 --> 00:16:45,730 有自己獨特的網址, 當我們開始討論, 360 00:16:45,730 --> 00:16:47,280 你會看到更多的在體育組六。 361 00:16:47,280 --> 00:16:49,450 >> 這裡是我的筆記本電腦的地方 其他在互聯網上。 362 00:16:49,450 --> 00:16:54,550 因此,當我訪問一個網址屬於 對我來說,互聯網流量是怎麼回事 363 00:16:54,550 --> 00:16:58,360 轉移到服務器,該服務器的 收到HTTP request-- 364 00:16:58,360 --> 00:17:02,900 像獲得的index.html,它的 回复該網頁。 365 00:17:02,900 --> 00:17:04,280 所以這是一般的範例。 366 00:17:04,280 --> 00:17:07,089 而一切行動 到現在為止的今天,一切都 367 00:17:07,089 --> 00:17:09,660 不僅是發生在 這座大樓的界限。 368 00:17:09,660 --> 00:17:12,910 我用我的筆記本電腦,但 我是連接到CS50 IDE, 369 00:17:12,910 --> 00:17:17,369 因此,所有這些程序我跑 是服務器,它本身的內部。 370 00:17:17,369 --> 00:17:22,660 >> 但現在,讓我們開始重新使用PHP 寫一些實際的程序 371 00:17:22,660 --> 00:17:24,230 由網絡服務器提供。 372 00:17:24,230 --> 00:17:30,320 而要做到這一點,我要去 到一大堆的例子 373 00:17:30,320 --> 00:17:33,710 這裡介紹了這個想法。 374 00:17:33,710 --> 00:17:38,500 因此,這是怎樣的一種奇特的方式 描述一個編程範例。 375 00:17:38,500 --> 00:17:41,540 >> 而事實上,當你退出CS50 或工作的最終項目, 376 00:17:41,540 --> 00:17:43,520 或者採取一些後續 在類中,你會開始 377 00:17:43,520 --> 00:17:45,740 地看到,天下 - 特別是已經長大了 378 00:17:45,740 --> 00:17:48,300 與語言,如C 是超低level-- 379 00:17:48,300 --> 00:17:51,290 意識到有更好 如何寫軟件。 380 00:17:51,290 --> 00:17:53,290 有一定的 模式可以遵循, 381 00:17:53,290 --> 00:17:57,640 整理文件的某些方面 和命名你的函數的方法, 382 00:17:57,640 --> 00:18:00,300 使長話短說, 世界已經到來了 383 00:18:00,300 --> 00:18:04,340 有一大堆縮寫詞 和名稱進行編程的方法。 384 00:18:04,340 --> 00:18:06,260 這些都是你可以只使用技巧。 385 00:18:06,260 --> 00:18:09,660 >> 其中之一稱為MVC中, 對於模型視圖控制器。 386 00:18:09,660 --> 00:18:12,270 而這僅僅是為 現在,一個過於複雜 387 00:18:12,270 --> 00:18:18,960 的說你應該怎麼佈置方式 一個基於PHP的網站,在我們的例子。 388 00:18:18,960 --> 00:18:22,140 你如何組織你的文件, 你如何安排你的邏輯, 389 00:18:22,140 --> 00:18:26,220 的方式,可以更容易地 編寫更複雜的網站? 390 00:18:26,220 --> 00:18:28,550 事實上,我們很快就會 那裡用對置7。 391 00:18:28,550 --> 00:18:32,020 >> 因此,在MVC的世界裡,你會 看到我們的代碼一般可以 392 00:18:32,020 --> 00:18:38,290 被表徵為型號代碼, 或控制器的代碼,或查看代碼。 393 00:18:38,290 --> 00:18:40,200 而我要去 過分簡單化它作為follows-- 394 00:18:40,200 --> 00:18:42,074 所述控制器是 你的程序的大腦, 395 00:18:42,074 --> 00:18:44,100 這其中所有的 有趣的邏輯發生。 396 00:18:44,100 --> 00:18:46,110 所以,一切,我們已經 寫迄今在課堂上, 397 00:18:46,110 --> 00:18:48,210 是一種像控制器 代碼 - 它的控制 398 00:18:48,210 --> 00:18:50,585 你的程序,你的循環,你的 條件,你的函數 399 00:18:50,585 --> 00:18:52,100 和變量和所有。 400 00:18:52,100 --> 00:18:56,160 >> 意見,現在,將是一個小 在幅材的世界更明顯。 401 00:18:56,160 --> 00:18:59,360 視圖是美學 你的網站。 402 00:18:59,360 --> 00:19:04,080 這就是用戶sees--的圖像, 在HTML表格,HTML標記,並且所有 403 00:19:04,080 --> 00:19:08,220 這一點,所有的蓬鬆美感 東西並不難寫, 404 00:19:08,220 --> 00:19:11,380 但僅僅是要生成什麼, 是所謂的觀點,美觀。 405 00:19:11,380 --> 00:19:13,880 和型號,最終會 是數據庫stuff--這 406 00:19:13,880 --> 00:19:16,510 我們將開始深入到這些 更本週三。 407 00:19:16,510 --> 00:19:19,740 所以控制器是邏輯, 視圖是審美的東西, 408 00:19:19,740 --> 00:19:23,500 和型號將是哪裡 我們保存我們的實際數據。 409 00:19:23,500 --> 00:19:26,410 >> 因此,讓我們看看這個更具體 用下面的例子。 410 00:19:26,410 --> 00:19:34,700 我要進入我的目錄位置 今天的源代碼 - 所有這些都 411 00:19:34,700 --> 00:19:35,770 可在網上。 412 00:19:35,770 --> 00:19:37,800 而且我要進入零版本。 413 00:19:37,800 --> 00:19:41,500 在這裡,is--讓我們叫它 的CS50的網站版本0。 414 00:19:41,500 --> 00:19:43,010 沒有太多在這裡的。 415 00:19:43,010 --> 00:19:46,810 這是一個非常簡單的網頁,是 可能使用什麼HTML tags--剛 416 00:19:46,810 --> 00:19:48,970 從過去的例子猜? 417 00:19:48,970 --> 00:19:49,890 >> 那是什麼? 418 00:19:49,890 --> 00:19:53,920 H1--可能為大黑體 標題,這標誌向上頂,CS50。 419 00:19:53,920 --> 00:19:55,080 而且是在玩什麼? 420 00:19:55,080 --> 00:19:55,799 是嗎? 421 00:19:55,799 --> 00:19:56,840 聽眾:無序列表。 422 00:19:56,840 --> 00:19:59,990 DAVID馬蘭:無序列表中 - 所以 UL標籤,也許一對夫婦LI標籤。 423 00:19:59,990 --> 00:20:01,840 如果你不記得這些, 老實說,這並不重要。 424 00:20:01,840 --> 00:20:04,170 這些都是蓬鬆排序 HTML的實現細節 425 00:20:04,170 --> 00:20:06,378 您快速查找 和你回來的路上。 426 00:20:06,378 --> 00:20:10,040 我們將更多的精力放在編程 想法是多汁件。 427 00:20:10,040 --> 00:20:12,890 >> 那麼就讓我們來簡單 看HTML--的確 428 00:20:12,890 --> 00:20:16,880 如果我打開查看源代碼在這裡,是啊, 這正是這裡發生了。 429 00:20:16,880 --> 00:20:18,440 這裡有一個UL標記。 430 00:20:18,440 --> 00:20:20,630 那裡面嵌套是LI標籤。 431 00:20:20,630 --> 00:20:24,470 然後,我借來的網址 這裡實際的教學大綱。 432 00:20:24,470 --> 00:20:27,570 >> 然後在 lectures.php顯然是 433 00:20:27,570 --> 00:20:31,640 另一個動態生成的頁面 這將不得不讓我們see--啊, 434 00:20:31,640 --> 00:20:33,170 前兩週的講座。 435 00:20:33,170 --> 00:20:36,600 所以有一周零一周,讓我們 看this--如果我查看網頁源代碼, 436 00:20:36,600 --> 00:20:38,120 也超簡單。 437 00:20:38,120 --> 00:20:42,430 這些都導致​​了兩頁 所謂week0.php和week1.php。 438 00:20:42,430 --> 00:20:44,040 所以,現在考慮發生了什麼。 439 00:20:44,040 --> 00:20:50,630 >> 當我點擊week0.php,我的筆記本電腦 正在為week0.php請求。 440 00:20:50,630 --> 00:20:53,700 441 00:20:53,700 --> 00:20:58,110 Web服務器,也叫做CS50 IDE, 正在接收該虛擬包絡。 442 00:20:58,110 --> 00:21:01,040 它看到一個消息 像,得到week0.php。 443 00:21:01,040 --> 00:21:05,060 它然後解釋該文件中,頂 至底部,左到right--文件 444 00:21:05,060 --> 00:21:07,720 所謂week0.php--和 吐出的結果。 445 00:21:07,720 --> 00:21:10,510 所以此文件的內部, week0.php,必須 446 00:21:10,510 --> 00:21:15,410 在生成控制器邏輯 這個HTML,我們將很快看到。 447 00:21:15,410 --> 00:21:19,340 >> 但現在,讓我點擊零一周, 現在我們有三,五, 448 00:21:19,340 --> 00:21:25,260 現在我們有幻燈片 慢慢的從零一周。 449 00:21:25,260 --> 00:21:27,400 你可能還記得 這從遙想當年。 450 00:21:27,400 --> 00:21:29,340 所以,這就是這個網站是做什麼。 451 00:21:29,340 --> 00:21:31,120 >> 因此,讓我們考慮一下它是如何做這個。 452 00:21:31,120 --> 00:21:34,290 我要去回 這裡的源代碼,在CS50 IDE, 453 00:21:34,290 --> 00:21:36,660 我要去開拓的index.php。 454 00:21:36,660 --> 00:21:38,910 在該文件的頂部 是一堆意見。 455 00:21:38,910 --> 00:21:43,000 然後在該文件中的中間,它 事實證明,沒有PHP代碼任何責任。 456 00:21:43,000 --> 00:21:47,380 因為如果你沒有任何的 開放式支架問號PHP標籤, 457 00:21:47,380 --> 00:21:49,180 你可以自由地只是把HTML。 458 00:21:49,180 --> 00:21:51,480 >> 因為是PHP 解釋是應該做的, 459 00:21:51,480 --> 00:21:53,938 是當它讀取該file-- 從上到下,左right-- 460 00:21:53,938 --> 00:21:59,100 它只是解釋它看到的代碼 這些尖括號問號。 461 00:21:59,100 --> 00:22:02,380 和其他任何它不 承認PHP,它只是吐出來。 462 00:22:02,380 --> 00:22:05,080 而HTML是其中的東西 它只會吐了出來。 463 00:22:05,080 --> 00:22:09,090 >> 因此,這個文件可以有 被稱為index.html的, 464 00:22:09,090 --> 00:22:11,690 但我命名的一切 點PHP的墊腳石。 465 00:22:11,690 --> 00:22:15,960 Lectures.php--類似 給人留下深刻印象,它只是一些HTML。 466 00:22:15,960 --> 00:22:19,840 Week0.php,同樣只是一些HTML。 467 00:22:19,840 --> 00:22:22,300 >> 但現在讓我們把對 眾所周知工程帽, 468 00:22:22,300 --> 00:22:24,400 並考慮我們如何才能改善這一點。 469 00:22:24,400 --> 00:22:28,541 這並不難做到這一點,但我種 中演化成複製和粘貼。 470 00:22:28,541 --> 00:22:31,540 而事實上,如果我做兩個星期,你 知道我可能會做什麼? 471 00:22:31,540 --> 00:22:34,940 我要去week1.php,我 要突出一切。 472 00:22:34,940 --> 00:22:39,110 我要去複製,粘貼 到一個名為week2.php新的文件, 473 00:22:39,110 --> 00:22:42,440 調整一些網址,以及我的路。 474 00:22:42,440 --> 00:22:45,240 >> 因此,基於我們所 可見在C中已經, 475 00:22:45,240 --> 00:22:46,860 這感覺不對,希望。 476 00:22:46,860 --> 00:22:49,610 複製,粘貼,很少正確的解決方案。 477 00:22:49,610 --> 00:22:51,429 那我們可以開始 要怎樣才能提高呢? 478 00:22:51,429 --> 00:22:53,345 機會在哪裡 為更好的設計? 479 00:22:53,345 --> 00:22:56,890 480 00:22:56,890 --> 00:22:58,760 >> 到時候我去 8週,這是怎麼回事 481 00:22:58,760 --> 00:23:00,910 是真的很煩人 如果我想改變 482 00:23:00,910 --> 00:23:03,930 每一個的字體 我的網頁,或者如果我想 483 00:23:03,930 --> 00:23:06,522 改變佈局的結構。 484 00:23:06,522 --> 00:23:08,396 因此,哪來的機會 為更好的設計? 485 00:23:08,396 --> 00:23:11,990 486 00:23:11,990 --> 00:23:15,160 好吧,讓我們來看看什麼是 在所有這些文件的共享。 487 00:23:15,160 --> 00:23:21,696 >> 這裡有一個星期,這裡的一周 零,這裡的lectures.php, 488 00:23:21,696 --> 00:23:25,790 這裡的index.php--什麼是相同的, 所不同的是,粗略地講, 489 00:23:25,790 --> 00:23:26,760 在每個文件? 490 00:23:26,760 --> 00:23:30,560 491 00:23:30,560 --> 00:23:32,060 是嗎? 492 00:23:32,060 --> 00:23:34,560 >> 聽眾:[聽不清] 493 00:23:34,560 --> 00:23:41,244 494 00:23:41,244 --> 00:23:42,160 DAVID馬蘭:好,好。 495 00:23:42,160 --> 00:23:46,115 因此,有一種模式,當然,其中 每次我選擇我的演講, 496 00:23:46,115 --> 00:23:48,250 我應該產生 非常相似漂亮的網頁。 497 00:23:48,250 --> 00:23:50,375 所以,也許我可以利用 事實真是, 498 00:23:50,375 --> 00:23:53,060 我們特意數值 索引我們的lectures-- 499 00:23:53,060 --> 00:23:55,290 如果我可以把更多的 也就是說在你的答案。 500 00:23:55,290 --> 00:23:59,984 什麼是唯一的,真的, 這為期一周的變化埃德蒙頓 501 00:23:59,984 --> 00:24:02,400 讓我向下滾動,所​​以它是 大致處於同一place-- 502 00:24:02,400 --> 00:24:05,480 所以這裡是零一周, 大致在頂部。 503 00:24:05,480 --> 00:24:12,370 這裡是一個星期,週 零個,一個星期,零週。 504 00:24:12,370 --> 00:24:14,370 OK,從字面上如果你知道 沒有任何程序, 505 00:24:14,370 --> 00:24:16,286 這是現在就像一個 模式匹配遊戲。 506 00:24:16,286 --> 00:24:17,200 那麼,有什麼不同呢? 507 00:24:17,200 --> 00:24:18,765 是嗎? 508 00:24:18,765 --> 00:24:19,777 >> 聽眾:[聽不清] 509 00:24:19,777 --> 00:24:22,360 DAVID馬蘭:好,所以標題 是變化的,非常輕微。 510 00:24:22,360 --> 00:24:24,010 零是怎麼回事,當然,一。 511 00:24:24,010 --> 00:24:25,570 同樣的事情發生了,在H1標籤。 512 00:24:25,570 --> 00:24:28,790 同時,我們也不太把它看成很容易, 因為URL是有點長。 513 00:24:28,790 --> 00:24:30,670 但是,這些網址被稍微改變。 514 00:24:30,670 --> 00:24:34,490 >> 但是,什麼是沒有改變的是,敢跟我 說,大多數的page--的內容 515 00:24:34,490 --> 00:24:38,530 HTML標記是相同的,頭部是 相同的,標題是幾乎相同的, 516 00:24:38,530 --> 00:24:40,659 身是相同的,並 幾乎一切 517 00:24:40,659 --> 00:24:42,450 是除了同一 這些小的調整。 518 00:24:42,450 --> 00:24:45,310 那麼,如何才能去 一些保本了呢? 519 00:24:45,310 --> 00:24:48,740 >> 那麼,讓我提出確切 在未來的版本。 520 00:24:48,740 --> 00:24:53,890 因此,這裡的一個版本,我有確切 相同的文件,以及其他幾個。 521 00:24:53,890 --> 00:24:59,730 下面是index.php--即使 你從來沒見過的PHP之前, 522 00:24:59,730 --> 00:25:05,511 那我可能做來解決這個 根據problem--你在這裡看到的? 523 00:25:05,511 --> 00:25:11,300 524 00:25:11,300 --> 00:25:12,760 是啊,是輕微的承諾? 525 00:25:12,760 --> 00:25:13,450 沒有? 526 00:25:13,450 --> 00:25:16,020 是的,去上。 527 00:25:16,020 --> 00:25:17,380 >> 聽眾:[聽不清] 528 00:25:17,380 --> 00:25:18,380 >> DAVID馬蘭:是的。 529 00:25:18,380 --> 00:25:20,380 >> 聽眾:[聽不清] 530 00:25:20,380 --> 00:25:26,090 531 00:25:26,090 --> 00:25:28,669 >> DAVID馬蘭:我需要你 只是大聲一點說話。 532 00:25:28,669 --> 00:25:31,084 >> 聽眾:[聽不清] 533 00:25:31,084 --> 00:25:35,744 534 00:25:35,744 --> 00:25:36,660 DAVID馬蘭:好,好。 535 00:25:36,660 --> 00:25:38,620 我think--是 很難聽到你 - 但我 536 00:25:38,620 --> 00:25:42,690 以為你在說什麼是 這是常見的往上頂的標籤, 537 00:25:42,690 --> 00:25:47,710 那是常見的標籤 底部,現在已經被提取出來, 538 00:25:47,710 --> 00:25:51,140 或降級哪些文件? 539 00:25:51,140 --> 00:25:53,476 header.php文件,footer.php-- 我們要去 540 00:25:53,476 --> 00:25:55,600 做出一些調整,以 這些關注你只是 541 00:25:55,600 --> 00:25:59,370 提出了關於數字變化,為 舉例來說,如果我沒有聽說你。 542 00:25:59,370 --> 00:26:02,060 >> 但是,這似乎是它的要點。 543 00:26:02,060 --> 00:26:04,820 如果有大量的 冗餘的頁面的頂部, 544 00:26:04,820 --> 00:26:06,736 且數額巨大的 冗餘底部, 545 00:26:06,736 --> 00:26:09,280 讓我們從字面上只是亮點 切的內容了, 546 00:26:09,280 --> 00:26:13,270 把它放在一個單獨的file--就像 CSS中,我們提取出來的想法 547 00:26:13,270 --> 00:26:16,710 非常相似的美學,把 它在一個單獨的點PHP文件, 548 00:26:16,710 --> 00:26:20,340 使用需要mechanism--這 是像C銳利包括 - 這 549 00:26:20,340 --> 00:26:23,570 基本上好像是說去 抓住的header.php的內容, 550 00:26:23,570 --> 00:26:25,370 和複製並粘貼到這裡。 551 00:26:25,370 --> 00:26:29,490 >> 但是,這意味著什麼,現在在 的index.php,我有這兩條線。 552 00:26:29,490 --> 00:26:32,130 在lectures.php,我也 有那些兩行。 553 00:26:32,130 --> 00:26:35,230 在week0.php,我也 有那些兩行。 554 00:26:35,230 --> 00:26:38,380 >> 所以,現在,如果我想改變 我的所有網頁的標題, 555 00:26:38,380 --> 00:26:40,530 或者我想改變 基本結構, 556 00:26:40,530 --> 00:26:44,380 我可以在一個地方,現在改變它, 兩places--頁眉和頁腳, 557 00:26:44,380 --> 00:26:45,429 分別。 558 00:26:45,429 --> 00:26:47,970 現在代碼的開始看 多了幾分神秘,對吧? 559 00:26:47,970 --> 00:26:53,590 但是,如果你想想頁面 是doing--如果我請求week0.php, 560 00:26:53,590 --> 00:26:59,880 就像在畫過 當week0.php要求這裡 - , 561 00:26:59,880 --> 00:27:00,960 這是什麼意思? 562 00:27:00,960 --> 00:27:04,410 >> 從字面上看,這個文件是 由瀏覽器請求。 563 00:27:04,410 --> 00:27:06,240 該網站server--又名 564 00:27:06,240 --> 00:27:09,250 CS50 ID--抓住這個 文件,week0.php,並讀出 565 00:27:09,250 --> 00:27:10,780 它從上到下,從左到右。 566 00:27:10,780 --> 00:27:15,400 線之一,它立即遭遇 開放式支架問號PHP,需要 567 00:27:15,400 --> 00:27:17,872 頭點PHP,等等 什麼PHP解釋器 568 00:27:17,872 --> 00:27:20,580 does--是內置於網絡 服務器,因為我們預先配置 569 00:27:20,580 --> 00:27:24,580 它為你 - 它會自動進入 成的header.php,複製的內容, 570 00:27:24,580 --> 00:27:25,640 在這裡它們粘貼。 571 00:27:25,640 --> 00:27:28,790 >> 但隨後的解釋遭遇 問號密切支架, 572 00:27:28,790 --> 00:27:30,320 所以這一切都做了思考。 573 00:27:30,320 --> 00:27:33,400 現在,它只是盲目地吐出 出線路2至7, 574 00:27:33,400 --> 00:27:35,240 因為它只是原始的HTML。 575 00:27:35,240 --> 00:27:38,470 獲取到線八條,並做了 同樣神奇的again--打開文件, 576 00:27:38,470 --> 00:27:41,460 斂的內容,並 要求他們或者將其粘貼 577 00:27:41,460 --> 00:27:42,480 那麼好吧或出現。 578 00:27:42,480 --> 00:27:44,210 >> 但我只是提到了一個錯誤。 579 00:27:44,210 --> 00:27:48,610 這是一個局部的退步, 因為如果我們看在header.php中, 580 00:27:48,610 --> 00:27:50,850 那種我剪了一個角落。 581 00:27:50,850 --> 00:27:56,250 我才給什麼功能了,為了 獲得這一有爭議的更好的設計? 582 00:27:56,250 --> 00:27:57,305 是嗎? 583 00:27:57,305 --> 00:27:58,180 聽眾:[聽不清] 584 00:27:58,180 --> 00:28:00,570 DAVID馬蘭:是啊,我種 切一個平凡的角落。 585 00:28:00,570 --> 00:28:04,489 你指出什麼改變 是標題,在標題的數量, 586 00:28:04,489 --> 00:28:05,530 並在H1的數目。 587 00:28:05,530 --> 00:28:08,170 所以我的解決辦法是,OK, 讓我們只重命名頁面, 588 00:28:08,170 --> 00:28:10,080 並沒有涉及這 遇到任何問題。 589 00:28:10,080 --> 00:28:12,130 所以這是一個局部 倒退是肯定的。 590 00:28:12,130 --> 00:28:14,300 >> 但是,這裡值得注意的是 是,我做了什麼 591 00:28:14,300 --> 00:28:17,200 另有因素 所有常見的東西。 592 00:28:17,200 --> 00:28:21,520 而在footer.php,通知我分解 出了這一切,儘管較小, 593 00:28:21,520 --> 00:28:22,790 常見的東西。 594 00:28:22,790 --> 00:28:26,070 所以,我需要以某種方式現在能 走又前進了一步,並修復 595 00:28:26,070 --> 00:28:27,160 該標題的問題。 596 00:28:27,160 --> 00:28:28,180 因此,讓我們做到這一點。 597 00:28:28,180 --> 00:28:35,060 >> 讓我進入我的第二個版本 這裡,這又具有相同的文件 598 00:28:35,060 --> 00:28:36,825 除了一個新的補充。 599 00:28:36,825 --> 00:28:38,950 它是一個多一點 詳細,但我們如果我們看看 600 00:28:38,950 --> 00:28:40,550 可以梳理出哪些是怎麼回事。 601 00:28:40,550 --> 00:28:45,370 因此,而不是要求 的header.php和footer.php, 602 00:28:45,370 --> 00:28:50,180 我似乎只需要一個 file--叫,當然,helpers.php。 603 00:28:50,180 --> 00:28:52,560 讓我現在的規定, 什麼是helpers.php內 604 00:28:52,560 --> 00:28:55,330 只是一堆功能 我寫的,就像以前一樣。 605 00:28:55,330 --> 00:28:57,550 但我把它叫做helpers.php。 606 00:28:57,550 --> 00:29:00,370 >> 現在很明顯,在 三線和10,我 607 00:29:00,370 --> 00:29:02,840 調用兩個functions-- 渲染頁眉,頁腳渲染。 608 00:29:02,840 --> 00:29:05,040 那些不來 PHP的,我寫這些我自己。 609 00:29:05,040 --> 00:29:07,880 我把它們放在helpers.php。 610 00:29:07,880 --> 00:29:11,210 >> 現在,我們只看到此語法 一次,它是超級簡單。 611 00:29:11,210 --> 00:29:15,330 但是,這顯然是一個參數 渲染報頭,該函數。 612 00:29:15,330 --> 00:29:16,450 為什麼我知道? 613 00:29:16,450 --> 00:29:18,522 那麼這裡有一個密切的括號, 這裡是一個開放的括號。 614 00:29:18,522 --> 00:29:21,230 當然,就像在C, 這些括號內的任何 615 00:29:21,230 --> 00:29:23,350 是input--或 函數的參數。 616 00:29:23,350 --> 00:29:26,710 >> 這是什麼參數的數據類型, 根據我所強調? 617 00:29:26,710 --> 00:29:30,820 什麼做的那些方括號 表示,根據上週? 618 00:29:30,820 --> 00:29:33,390 是的,這是一個array-- 特別是關聯數組。 619 00:29:33,390 --> 00:29:35,700 而這個語法誠然 有點時髦, 620 00:29:35,700 --> 00:29:38,860 但這只是路過 在一個鍵值對。 621 00:29:38,860 --> 00:29:43,530 最關鍵的是,報價引文結束 標題,並且該值是CS50。 622 00:29:43,530 --> 00:29:46,220 >> 如果我們做到了這一點 在C中,它可能會改為 623 00:29:46,220 --> 00:29:49,400 看起來更像這樣, 只是報價引文結束CS50-- 624 00:29:49,400 --> 00:29:52,460 或者實際上這將是捲曲 括號,或者類似的東西在C, 625 00:29:52,460 --> 00:29:55,580 其中鍵是零, 和的值是CS50。 626 00:29:55,580 --> 00:29:59,840 但同樣,在PHP,即使 語法是,再次,這一點都不奇怪, 627 00:29:59,840 --> 00:30:02,860 它可以讓你傳遞 字來代替的數 628 00:30:02,860 --> 00:30:05,120 將密鑰與值關聯。 629 00:30:05,120 --> 00:30:06,390 >> 那麼,這意味著什麼? 630 00:30:06,390 --> 00:30:09,750 如果我進入helpers.php, 讓我們來看看這個功能。 631 00:30:09,750 --> 00:30:13,620 renderHeader.php,而 renderHeader是我的功能, 632 00:30:13,620 --> 00:30:16,220 我知道,因為我看到 這裡function關鍵字。 633 00:30:16,220 --> 00:30:19,450 這是顯然C--它新 採用所謂的數據 - 一個參數 634 00:30:19,450 --> 00:30:22,400 但我可以把這種現象稱之為 任何事情,但我把它叫做數據, 635 00:30:22,400 --> 00:30:25,090 僅僅是一個小clean--和 只是採取一種猜測,尤其是 636 00:30:25,090 --> 00:30:28,173 如果您在其他一些已設定 高級語言之前,東西 637 00:30:28,173 --> 00:30:29,820 上述C,概念上。 638 00:30:29,820 --> 00:30:33,820 >> 這是什麼平等的開放式支架 括號大概是什麼意思? 639 00:30:33,820 --> 00:30:35,540 或者什麼可能它是什麼意思? 640 00:30:35,540 --> 00:30:39,660 我們還沒有看到這一點C.呀? 641 00:30:39,660 --> 00:30:40,480 >> 空數組。 642 00:30:40,480 --> 00:30:45,440 具體而言,這意味著,如果 用戶不調用renderHeader 643 00:30:45,440 --> 00:30:49,340 有一個參數,我仍然會 有所謂的數據參數, 644 00:30:49,340 --> 00:30:52,327 但它的默認值是 將是一個空數組。 645 00:30:52,327 --> 00:30:53,660 所以這是一個不錯的便利性。 646 00:30:53,660 --> 00:30:56,493 我沒有要罵的用戶, 或者說,你用我的功能失常。 647 00:30:56,493 --> 00:30:59,849 我可以給用戶一個默認 值,如果我沒有特別在意。 648 00:30:59,849 --> 00:31:01,890 現在這個功能,我 要揮揮手的。 649 00:31:01,890 --> 00:31:07,620 但是,這種提取物功能允許 我們通過數據這些變量 650 00:31:07,620 --> 00:31:10,360 入的header.php以下列方式。 651 00:31:10,360 --> 00:31:13,100 這是最後一塊, 我想時髦的語法。 652 00:31:13,100 --> 00:31:15,860 這裡是我的新版本 的header.php--它 653 00:31:15,860 --> 00:31:20,140 常說,從字面上看,開 支架標題CS50,僅此而已。 654 00:31:20,140 --> 00:31:21,766 而同樣的事,H1。 655 00:31:21,766 --> 00:31:24,310 >> 現在它顯然說 一些漂亮時髦。 656 00:31:24,310 --> 00:31:28,030 讓我簡化 一會兒如下。 657 00:31:28,030 --> 00:31:31,020 這就是我 改變了我的標題是。 658 00:31:31,020 --> 00:31:35,140 但是,它變得有點難看 不斷開放的支架用PHP, 659 00:31:35,140 --> 00:31:36,610 然後使用打印功能。 660 00:31:36,610 --> 00:31:40,810 事實證明,PHP有一個速記 符號對於這一點,這僅僅是 661 00:31:40,810 --> 00:31:45,050 一個等號,這在技術上是一個 函數調用呼應,而不是打印, 662 00:31:45,050 --> 00:31:46,800 但它同樣的事情,有效。 663 00:31:46,800 --> 00:31:48,440 >> 這只是看起來更好。 664 00:31:48,440 --> 00:31:50,510 這只是一個語法 糖,如果你願意, 665 00:31:50,510 --> 00:31:52,260 這使得我的代碼看起來更好一點。 666 00:31:52,260 --> 00:31:54,010 但事實證明,和 我們將再次看到這 667 00:31:54,010 --> 00:31:57,420 沒多久,​​我們必須把這種 煩人稱為長功能 668 00:31:57,420 --> 00:32:00,582 在HTML特殊字符 PHP的,因為事實證明 669 00:32:00,582 --> 00:32:02,790 有一定的投入 用戶可能給我們, 670 00:32:02,790 --> 00:32:05,160 或者說用戶可能給我們, 這是要打破我們的網站。 671 00:32:05,160 --> 00:32:07,035 但是,我們會看到下一個 一周使用JavaScript。 672 00:32:07,035 --> 00:32:10,740 但現在,只知道 這個文件,headers.php,只需 673 00:32:10,740 --> 00:32:13,040 取的標題, 我通過了,這讓 674 00:32:13,040 --> 00:32:17,380 確保它的安全,可以注入到網絡 頁面,它吐出它作為我的標題 675 00:32:17,380 --> 00:32:18,640 和我的H1。 676 00:32:18,640 --> 00:32:24,440 所以,如果我進入現在這個版本, 注意聽課有它的標題後面, 677 00:32:24,440 --> 00:32:28,630 零星期都有它的標題後面, 事實上,HTML我生成 678 00:32:28,630 --> 00:32:32,110 是相同的就是我的第一個版本 was--除了我的空白, 679 00:32:32,110 --> 00:32:35,150 因為我已經開始格式化 我的代碼有點不同。 680 00:32:35,150 --> 00:32:38,082 但我所產生的所有 我在乎的代碼。 681 00:32:38,082 --> 00:32:39,790 因此,讓我停下來 只是一瞬間,看看 682 00:32:39,790 --> 00:32:42,200 如果有任何問題, 或混亂,我創建的。 683 00:32:42,200 --> 00:32:44,970 684 00:32:44,970 --> 00:32:48,150 好吧,讓我們扭轉 稍微用力在這裡 685 00:32:48,150 --> 00:32:51,500 看看是否有一個 機會改善。 686 00:32:51,500 --> 00:32:56,130 Helpers.php也有過這種 函數,稱為renderFooter。 687 00:32:56,130 --> 00:32:59,652 這有什麼值得一提的約 renderHeader和renderFooter? 688 00:32:59,652 --> 00:33:02,610 再次,對於今天的目的,知道 該提取物的功能僅僅是 689 00:33:02,610 --> 00:33:08,280 我傳遞參數的方法 成的header.php和footer.php。 690 00:33:08,280 --> 00:33:10,900 691 00:33:10,900 --> 00:33:11,780 >> 對不起? 692 00:33:11,780 --> 00:33:13,056 >> 聽眾:[聽不清] 693 00:33:13,056 --> 00:33:15,180 DAVID馬蘭:是啊,我只 改變需要對線路。 694 00:33:15,180 --> 00:33:19,410 所以從字面上看,我犯了罪 複製和粘貼,再次。 695 00:33:19,410 --> 00:33:21,920 這不是一個巨大的數字 行不過來on-- 696 00:33:21,920 --> 00:33:25,220 如果我複製和粘貼的一切 只是改變一個小小的字, 697 00:33:25,220 --> 00:33:28,610 而一個小小的字艾倫點 出在這裡軀,與頭在這裡。 698 00:33:28,610 --> 00:33:30,670 否則,一切都是 相同的,除了為, 699 00:33:30,670 --> 00:33:32,180 當然,該功能的名稱。 700 00:33:32,180 --> 00:33:33,690 那麼,我們能否做得更好? 701 00:33:33,690 --> 00:33:39,810 >> 那麼,讓我開了這個版本 這裡,由此helpers.php, 702 00:33:39,810 --> 00:33:42,300 為什麼不讓我只是得到一個 小聰明這件事? 703 00:33:42,300 --> 00:33:46,410 寫稍微複雜 代碼,但把它渲染? 704 00:33:46,410 --> 00:33:48,470 所以,我有什麼根本性的變化? 705 00:33:48,470 --> 00:33:51,770 >> 它需要一個參數now-- 兩個參數,數據依舊。 706 00:33:51,770 --> 00:33:54,444 然後,什麼是第一 名稱可能被用於, 707 00:33:54,444 --> 00:33:55,860 基於你在這裡閱讀什麼? 708 00:33:55,860 --> 00:33:58,452 即使有些語法仍然是新的。 709 00:33:58,452 --> 00:33:59,660 什麼是美元符號的模板? 710 00:33:59,660 --> 00:34:02,400 711 00:34:02,400 --> 00:34:03,016 >> 對不起? 712 00:34:03,016 --> 00:34:03,710 >> 聽眾:頁眉或頁腳。 713 00:34:03,710 --> 00:34:04,510 >> DAVID馬蘭:頁眉或頁腳。 714 00:34:04,510 --> 00:34:07,134 所以很明顯,我決定,如果 唯一的事情正在發生變化 715 00:34:07,134 --> 00:34:10,159 是我想要的模板 以print--和模板 716 00:34:10,159 --> 00:34:13,100 我的意思是,這是藍圖 我想輸出代碼, 717 00:34:13,100 --> 00:34:16,350 但我想在一些堵塞 values​​--因此,如果這只是頭 718 00:34:16,350 --> 00:34:20,440 或頁腳,我為什麼不參數 這和調用的參數美元符號 719 00:34:20,440 --> 00:34:21,409 模板? 720 00:34:21,409 --> 00:34:26,250 然後,這個時髦的語法,讓我 在一個變量在這裡營造出路徑。 721 00:34:26,250 --> 00:34:28,030 >> 所以美元符號路徑是一個變量。 722 00:34:28,030 --> 00:34:31,120 這是什麼語法 這樣做,如果你熟悉嗎? 723 00:34:31,120 --> 00:34:32,512 是嗎? 724 00:34:32,512 --> 00:34:34,065 >> 聽眾:[聽不清] 725 00:34:34,065 --> 00:34:34,940 DAVID馬蘭:沒錯。 726 00:34:34,940 --> 00:34:37,600 如果模板,報價引文結束, 頭,或者如果模板是, 727 00:34:37,600 --> 00:34:41,170 報價引文結束,頁腳,該行有 我已經強調,八線, 728 00:34:41,170 --> 00:34:46,330 是簡單地把這個名字,像頭, 和連接用點PHP。 729 00:34:46,330 --> 00:34:49,750 因此,我們沒有這個操作符 在C這點運算符 730 00:34:49,750 --> 00:34:54,520 一個了不起的事情在PHP--如果你 熟悉JavaScript或Java, 731 00:34:54,520 --> 00:34:56,949 您可以使用加 簽字做串聯。 732 00:34:56,949 --> 00:34:59,974 >> 在C中,它是在一個neck--疼痛 我很抱歉,在對組六, 733 00:34:59,974 --> 00:35:02,390 你將不得不做 this--它是在頸部疼痛 734 00:35:02,390 --> 00:35:03,930 連接字符串。 735 00:35:03,930 --> 00:35:04,670 為什麼呢? 736 00:35:04,670 --> 00:35:06,580 好了,因為如果你有 一個字符串,它是此長, 737 00:35:06,580 --> 00:35:09,538 而另一個字符串是這個漫長的, 你不能只是插在一起。 738 00:35:09,538 --> 00:35:11,070 你是什​​麼,而不是必須做在C中? 739 00:35:11,070 --> 00:35:11,680 是嗎? 740 00:35:11,680 --> 00:35:12,380 >> 聽眾:[聽不清] 741 00:35:12,380 --> 00:35:15,090 >> DAVID馬蘭:你對malloc 存儲器,或在堆棧上使用的陣列。 742 00:35:15,090 --> 00:35:17,214 而你確實有 使該數組足夠大 743 00:35:17,214 --> 00:35:20,940 以適應這種加這個, 再加上反斜線零。 744 00:35:20,940 --> 00:35:24,994 然後用它們串聯在一起 攪拌貓或手動與一個for循環, 745 00:35:24,994 --> 00:35:26,160 或任何數量的技術。 746 00:35:26,160 --> 00:35:27,760 我們向您展示一對夫婦在對組六。 747 00:35:27,760 --> 00:35:29,080 >> 這是在頸部疼痛。 748 00:35:29,080 --> 00:35:34,190 這是真正的我是什麼意思約 這與this--像C與PHP。 749 00:35:34,190 --> 00:35:36,870 你只要能獲得更多 免費的功能, 750 00:35:36,870 --> 00:35:39,030 這樣您就可以集中精力, 理想情況下,就開心 751 00:35:39,030 --> 00:35:41,190 編碼的一部分,該 你想解決的項目, 752 00:35:41,190 --> 00:35:43,190 而不是低電平細節。 753 00:35:43,190 --> 00:35:49,840 >> 因此,這只是產生的header.php或 基於哪一個我稱之為footer.php。 754 00:35:49,840 --> 00:35:52,280 事實上,如果我去 到index.php,通知 755 00:35:52,280 --> 00:35:56,230 所有這一切changed--代替 調用呈現頁眉或頁腳渲染, 756 00:35:56,230 --> 00:36:00,230 我打電話渲染,其次是 我想要做的模板名稱。 757 00:36:00,230 --> 00:36:02,370 你會看到這一點,也是如此, 在問題設置七, 758 00:36:02,370 --> 00:36:05,530 因此我們允許您使​​用 同樣的功能,使串 759 00:36:05,530 --> 00:36:07,550 與不同的網頁束。 760 00:36:07,550 --> 00:36:10,570 >> 因此,而不是糾纏太多 這些details--更多 761 00:36:10,570 --> 00:36:13,210 你會再次看到 習題集seven--讓我們來看看 762 00:36:13,210 --> 00:36:16,850 在溶液的現在的開始 一個更有趣的問題。 763 00:36:16,850 --> 00:36:19,310 到目前為止,沒有什麼我們已經 做有保存的數據。 764 00:36:19,310 --> 00:36:22,920 事實上,唯一的一次,我們曾經保存 這是我們已經在這個類進行 765 00:36:22,920 --> 00:36:31,030 當我們有一個非常簡單的演示一段時間 回來,因此我們使用的文件IO在C, 766 00:36:31,030 --> 00:36:34,520 我認為我輸入我的名字, 漢娜的名字,和瑪麗亞的名字, 767 00:36:34,520 --> 00:36:37,610 或者是安迪的名字, 那麼,我們節省了CSV file-- 768 00:36:37,610 --> 00:36:39,430 逗號分隔值文件。 769 00:36:39,430 --> 00:36:43,530 >> 我們用fopen--我想 我們使用fprintf中我記得, 770 00:36:43,530 --> 00:36:44,910 我們保存的文件。 771 00:36:44,910 --> 00:36:46,920 現在,這是最簡單的 形式的數據庫。 772 00:36:46,920 --> 00:36:50,230 如果你想為一個網站 Frosh即時消息程序,即新生 773 00:36:50,230 --> 00:36:53,390 可以註冊一個運動,你理想 想要做的事與該數據。 774 00:36:53,390 --> 00:36:55,370 上週,我們什麼也沒做 與數據 - 我們剛才說的, 775 00:36:55,370 --> 00:36:56,661 您已註冊,不是真的。 776 00:36:56,661 --> 00:36:58,950 或者,也許我給的 監考官,那就是它。 777 00:36:58,950 --> 00:37:02,110 >> 但是,如果,如​​果我能很好 給那個監考CSV文件, 778 00:37:02,110 --> 00:37:03,340 就像一個Excel文件。 779 00:37:03,340 --> 00:37:05,090 或者更好的是,它會 如果我能很好 780 00:37:05,090 --> 00:37:08,830 把這些用戶的名稱和 宿舍名稱和所有的 781 00:37:08,830 --> 00:37:11,740 成的數據庫 只是住在永遠, 782 00:37:11,740 --> 00:37:13,530 直到我選擇要刪除的數據。 783 00:37:13,530 --> 00:37:15,645 數據庫允許 我要查詢的信息。 784 00:37:15,645 --> 00:37:18,070 事實上,這是一個數據庫是什麼。 785 00:37:18,070 --> 00:37:20,470 >> 我們今天介紹,和 下週也是如此,一個技術 786 00:37:20,470 --> 00:37:25,020 所謂SQL--結構化查詢 語言,這是另一種語言。 787 00:37:25,020 --> 00:37:28,750 它本質上是一種編程 語言,但對於數據庫。 788 00:37:28,750 --> 00:37:31,760 而對於現在的數據庫,只是 認為作為一個超級花哨版本 789 00:37:31,760 --> 00:37:35,710 Microsoft Excel或谷歌的 電子表格,或Apple數字。 790 00:37:35,710 --> 00:37:39,950 這通常是一個程序,允許 您存儲一大堆數據 791 00:37:39,950 --> 00:37:43,960 以行和列,相當 就像你可能在Excel中。 792 00:37:43,960 --> 00:37:47,100 >> 但是,什麼是好的,特別是當 我們不是超級熟悉的Excel, 793 00:37:47,100 --> 00:37:52,040 什麼SQL允許你做的是查詢本 通過編寫代碼行信息 794 00:37:52,040 --> 00:37:55,220 在那裡你可以,即使你的 數據庫有一百萬行吧, 795 00:37:55,220 --> 00:37:57,190 你可以找到的東西超級快。 796 00:37:57,190 --> 00:37:59,950 事實上,Excel是特別 壞的大型數據集。 797 00:37:59,950 --> 00:38:02,460 而事實上,高達幾 年前,橫空出世 798 00:38:02,460 --> 00:38:08,890 Excel中只允許你存儲 最多65,535行其數據 - 的 799 00:38:08,890 --> 00:38:12,020 聽起來很多,但在 那時候我是個研究生, 800 00:38:12,020 --> 00:38:14,920 我記得絆倒 這是因為我正在生成 801 00:38:14,920 --> 00:38:17,900 CSV文件,我的研究,我 想快速分析它們 802 00:38:17,900 --> 00:38:19,530 由剛剛開放在Excel中。 803 00:38:19,530 --> 00:38:23,730 當然,我的電腦正好死機, 因為我有超過65,000行。 804 00:38:23,730 --> 00:38:27,210 >> 但做了65,535來自哪裡? 805 00:38:27,210 --> 00:38:29,670 什麼是微軟在做,大概? 806 00:38:29,670 --> 00:38:32,430 如果你是好與你的兩個大國? 807 00:38:32,430 --> 00:38:37,160 是的,他們使用的是16位 值來表示的行號。 808 00:38:37,160 --> 00:38:41,310 而二至16 65,536-- 上下一心,因為如果你 809 00:38:41,310 --> 00:38:45,414 零指數意味著是 大部分的行數,我可以有。 810 00:38:45,414 --> 00:38:46,830 而這只是一個設計決策。 811 00:38:46,830 --> 00:38:52,760 通過保存16位,他們限制我 16000行不是4十億, 812 00:38:52,760 --> 00:38:54,322 我可以有理想的。 813 00:38:54,322 --> 00:38:57,030 但現在,我們要 介紹這個更在網絡環境。 814 00:38:57,030 --> 00:39:00,390 什麼是好的關於SQL的是,即使 雖然它是非常強大的,漂亮 815 00:39:00,390 --> 00:39:04,050 複雜的,它真的沸騰 下降到四鍵操作,四 816 00:39:04,050 --> 00:39:08,060 關鍵的功能,如果你will--選擇, 用於檢索數據,搜索 817 00:39:08,060 --> 00:39:12,510 數據;刪除或刪除數據; 插入的行添加到數據庫; 818 00:39:12,510 --> 00:39:13,410 和更新。 819 00:39:13,410 --> 00:39:17,010 所以,如果你曾經使用過谷歌 電子表格,蘋果的數字,微軟 820 00:39:17,010 --> 00:39:19,310 Excel,您已經執行, 最有可能的,所有的 821 00:39:19,310 --> 00:39:22,530 這些操作作為一個人受 只是用你的鍵盤和mouse-- 822 00:39:22,530 --> 00:39:26,050 插入數據,用你​​的眼睛 選擇或搜索的數據, 823 00:39:26,050 --> 00:39:28,360 或更新數據或刪除數據。 824 00:39:28,360 --> 00:39:29,870 >> 所以,這是什麼意思? 825 00:39:29,870 --> 00:39:34,300 那麼,預先安裝在CS50 IDE是一個名為mysql程序。 826 00:39:34,300 --> 00:39:37,050 這是一個自由的,開放源碼 數據庫是超人氣。 827 00:39:37,050 --> 00:39:40,590 實,例如,使用它來此 天,其中,它們使用其他工具。 828 00:39:40,590 --> 00:39:44,300 而很多非常受歡迎的網站使用 這在很大程度上是因為它的快速, 829 00:39:44,300 --> 00:39:45,230 因為它是免費的。 830 00:39:45,230 --> 00:39:46,820 雖然的確存在替代品。 831 00:39:46,820 --> 00:39:49,580 而有些人可能有玩水 替代品的最終項目。 832 00:39:49,580 --> 00:39:55,330 >> 這是一個屏幕截圖,同時, 一個基於Web的工具,稱為phpMyAdmin的。 833 00:39:55,330 --> 00:39:58,260 這是一個巧合, 這個基於Web的工具也是 834 00:39:58,260 --> 00:40:01,720 寫在一個語言,PHP, 但它的意思做 835 00:40:01,720 --> 00:40:04,620 是給我們一個基於Web的 接口到數據庫。 836 00:40:04,620 --> 00:40:07,180 由於MySQL通常是 東西,從歷史上看,你 837 00:40:07,180 --> 00:40:08,770 也只有互動 使用命令行。 838 00:40:08,770 --> 00:40:10,811 這將是超 討厭和奧術有 839 00:40:10,811 --> 00:40:14,487 鍵入文本命令來選擇 數據,插入數據和刪除數據。 840 00:40:14,487 --> 00:40:16,820 所以有些人在互聯網上 寫了一個基於Web的程序 841 00:40:16,820 --> 00:40:18,900 這只是讓我們管理 在我們的數據庫中的數據。 842 00:40:18,900 --> 00:40:23,040 這就像雙擊Excel和 其運行的基於網絡的版本。 843 00:40:23,040 --> 00:40:26,370 >> 你要怎麼使用它進行 最終在下週,而不是在對組六, 844 00:40:26,370 --> 00:40:28,680 但要建立的東西 所謂的CS50融資,這 845 00:40:28,680 --> 00:40:32,630 將有一個數據庫 用戶,與用戶名和密碼, 846 00:40:32,630 --> 00:40:34,860 美元數額,他們 在他們的銀行賬戶。 847 00:40:34,860 --> 00:40:37,280 這將是 是你用它來存儲 848 00:40:37,280 --> 00:40:39,910 的符號和數量 個股用戶 849 00:40:39,910 --> 00:40:42,567 已經使用虛擬購買 美元,你就會給他們。 850 00:40:42,567 --> 00:40:44,900 而這將允許用戶 註冊為您的網站, 851 00:40:44,900 --> 00:40:47,190 所以,即使你的朋友 可以調整到您的網站 852 00:40:47,190 --> 00:40:49,360 而實際註冊, 登錄,和玩 853 00:40:49,360 --> 00:40:52,807 並試圖找到故障代碼, 並試圖找到您的網站的錯誤。 854 00:40:52,807 --> 00:40:55,390 他們會簡單地註冊通過 加入自己,有效, 855 00:40:55,390 --> 00:40:58,120 通過代碼編寫到數據庫。 856 00:40:58,120 --> 00:41:02,470 >> 例如,這是一個快速截圖 一個什麼樣的數據庫可能是什麼樣子。 857 00:41:02,470 --> 00:41:05,190 這是從一個 去年solutions-- 858 00:41:05,190 --> 00:41:07,760 這就像一個小型的Excel 文件,存儲在數據庫中, 859 00:41:07,760 --> 00:41:09,950 存儲在該軟件名為MySQL的。 860 00:41:09,950 --> 00:41:13,260 在左邊,我已經很明顯 給出的每個用戶的唯一編號。 861 00:41:13,260 --> 00:41:16,200 在第二列中,我已經給 人人用戶name--我自己 862 00:41:16,200 --> 00:41:16,880 在他們之中。 863 00:41:16,880 --> 00:41:21,430 和在右手側, 我已經給了他們一個哈希值。 864 00:41:21,430 --> 00:41:26,760 >> 現在,這實際上是一個密碼, 但它不是一個純文本的密碼。 865 00:41:26,760 --> 00:41:30,160 這是一個加密的密碼,如果 你願意,或哈希密碼。 866 00:41:30,160 --> 00:41:32,000 我們將回來不久。 867 00:41:32,000 --> 00:41:34,340 >> 但是,如果你讀過 有關如何文章 868 00:41:34,340 --> 00:41:37,950 您的密碼在某個銀行或者一些 網站可能受到了侵害, 869 00:41:37,950 --> 00:41:39,630 它一般意味著兩件事情之一。 870 00:41:39,630 --> 00:41:42,780 因此,這是六個用戶只是摘錄。 871 00:41:42,780 --> 00:41:45,460 在座的各位,現在自己看著辦 出通過黑客或破解 872 00:41:45,460 --> 00:41:47,690 就是我們六個人的密碼。 873 00:41:47,690 --> 00:41:49,720 但是,如果你收到 警報或道歉 874 00:41:49,720 --> 00:41:52,803 從公司或網站上說, 對不起,黑客闖入我們的數據庫, 875 00:41:52,803 --> 00:41:56,360 你或許應該改變你 密碼,可能是什麼意思? 876 00:41:56,360 --> 00:41:59,670 >> 嗯,一,可能意味著 公司一直比較魯鈍, 877 00:41:59,670 --> 00:42:03,630 並已存儲你的密碼 在這樣的專欄,未加密的。 878 00:42:03,630 --> 00:42:05,840 這意味著對手, 誰偷了數據庫, 879 00:42:05,840 --> 00:42:07,440 從字面上知道您 用戶名和密碼。 880 00:42:07,440 --> 00:42:08,960 這是最差的情況。 881 00:42:08,960 --> 00:42:11,710 正如你會在P-集看 七,所以容易避免。 882 00:42:11,710 --> 00:42:15,624 絕對沒有任何藉口了 愚蠢的在今天的網絡形式。 883 00:42:15,624 --> 00:42:18,540 Two--,我們會發現一些文章 作證的事實,這仍然 884 00:42:18,540 --> 00:42:21,710 情況發生,nonetheless-- 二,也許是對手 885 00:42:21,710 --> 00:42:23,840 偷了這個版本的數據庫。 886 00:42:23,840 --> 00:42:27,110 這仍然是有種不好的,因為現在 他們知道,我有六個客戶, 887 00:42:27,110 --> 00:42:29,270 我知道用戶名 這六個客戶, 888 00:42:29,270 --> 00:42:32,910 我知道的加密 版本,或散列版本, 889 00:42:32,910 --> 00:42:34,340 的那六個客戶的密碼。 890 00:42:34,340 --> 00:42:37,010 但是,任何你誰可能 做了[?黑客2?] 891 00:42:37,010 --> 00:42:41,150 在那裡你破解密碼,或把 一看那個版本的問題 892 00:42:41,150 --> 00:42:46,280 集,為什麼還是有點令人擔憂 如果攻擊者知道你的哈希 893 00:42:46,280 --> 00:42:47,435 密碼? 894 00:42:47,435 --> 00:42:49,732 >> 聽眾:因為他們可以 進入整個字典 895 00:42:49,732 --> 00:42:50,690 入散列函數。 896 00:42:50,690 --> 00:42:54,520 如果你的密碼是一個字典 一句話,[?他們可以match--?] 897 00:42:54,520 --> 00:42:57,640 >> DAVID馬蘭:沒錯,對手 可以只寫代碼,就像你們中的一些 898 00:42:57,640 --> 00:43:00,526 沒有為[?黑客?] 2, 因此你遍歷 899 00:43:00,526 --> 00:43:03,400 所有的在字典中的詞語, A或所有可能的組合 900 00:43:03,400 --> 00:43:06,610 到Z和一個通過nine-- 這聽起來好像很多,它是。 901 00:43:06,610 --> 00:43:08,361 但對於一台電腦, 這是相當不錯的快。 902 00:43:08,361 --> 00:43:10,610 而事實上,這是 點[嗎?黑客2,η]為 903 00:43:10,610 --> 00:43:12,540 取東西, 從字面上看起來像這樣, 904 00:43:12,540 --> 00:43:14,900 和反向工程 它實際上是什麼。 905 00:43:14,900 --> 00:43:17,270 >> 因此,我們將看看我們如何能夠 更有效地存儲這一點。 906 00:43:17,270 --> 00:43:20,210 事實證明,幸運的是在MySQL中, 那裡將是數據類型。 907 00:43:20,210 --> 00:43:22,800 而有趣的部分約一個 數據庫設計,說實話, 908 00:43:22,800 --> 00:43:25,810 實際上是決定自己 你應該如何表示數據? 909 00:43:25,810 --> 00:43:29,630 如果您代表電話號碼 一個int,像一個巨大的數字,或長? 910 00:43:29,630 --> 00:43:31,630 或者你真正做到這一點 作為一個字符序列? 911 00:43:31,630 --> 00:43:33,780 並且可以有很 這種非平凡的影響。 912 00:43:33,780 --> 00:43:36,714 >> 事實上,人們的 最早的,好玩的鍺的故事 913 00:43:36,714 --> 00:43:39,880 是當馬克·扎克伯格正在建設 Facebook的,它最初寫成, 914 00:43:39,880 --> 00:43:42,300 仍然主要是用PHP寫的。 915 00:43:42,300 --> 00:43:45,400 而其中最大的挑戰之一 他們早早就被縮放面對。 916 00:43:45,400 --> 00:43:48,820 當他們不停地之後加入學校 學校放學後,據我所知, 917 00:43:48,820 --> 00:43:51,639 原始的解決方案之一 基本上是複製和粘貼 918 00:43:51,639 --> 00:43:53,430 一些數據庫的 和一些代碼, 919 00:43:53,430 --> 00:43:55,346 使哈佛 其自己的服務器上運行, 920 00:43:55,346 --> 00:43:56,995 麻省理工學院在自己的服務器上運行。 921 00:43:56,995 --> 00:43:59,120 這就是為什麼,對於一些 你們誰可能還記得, 922 00:43:59,120 --> 00:44:01,510 你可以沒有朋友 在其它網絡。 923 00:44:01,510 --> 00:44:05,050 >> 你可能根本不具備的朋友 麻省理工學院或哈佛10年前左右, 924 00:44:05,050 --> 00:44:07,467 但你不能跨越網絡 對於部分的原因。 925 00:44:07,467 --> 00:44:10,550 而對的最大挑戰之一 馬克和Facebook這樣的公司 926 00:44:10,550 --> 00:44:13,460 實際上是處理數百 和千千萬萬 927 00:44:13,460 --> 00:44:14,460 每秒請求。 928 00:44:14,460 --> 00:44:16,501 所以這個事情我們將開始 說起這個星期 929 00:44:16,501 --> 00:44:19,860 真的會是有密切關係的 編寫好的軟件和普遍 930 00:44:19,860 --> 00:44:23,040 成功的工具, 能夠處理大量的用戶。 931 00:44:23,040 --> 00:44:25,460 >> 因此,我們將討論有關事項 像索引和搜索, 932 00:44:25,460 --> 00:44:26,910 但它是今天。 933 00:44:26,910 --> 00:44:28,780 我們會看到你更多的週三。 934 00:44:28,780 --> 00:44:31,780 935 00:44:31,780 --> 00:44:33,902 >> [MUSIC - “宋飛正傳”的主題] 936 00:44:33,902 --> 00:44:35,943 DAVID馬蘭:你可以 它,並減去它。 937 00:44:35,943 --> 00:44:38,859 你不必堅持 一些預定量的存儲器。 938 00:44:38,859 --> 00:44:40,580 那麼,什麼是將要叫什麼? 939 00:44:40,580 --> 00:44:42,369 >> 揚聲器1:哦,這是怎麼回事? 940 00:44:42,369 --> 00:44:43,535 揚聲器2:你是什麼意思? 941 00:44:43,535 --> 00:44:44,451 他給一個講座。 942 00:44:44,451 --> 00:44:47,650 DAVID馬蘭:我們可以用一個 函數調用的malloc到memory-- 943 00:44:47,650 --> 00:44:50,050 >> 揚聲器1:為什麼不是他的懷裡動? 944 00:44:50,050 --> 00:44:52,450 >> 揚聲器2:嗯that's-- 你知道,這是正常的。 945 00:44:52,450 --> 00:44:57,162 這就像他剛才 大香腸掛在那裡。 946 00:44:57,162 --> 00:44:59,040 >> 揚聲器1:這是正常的? 947 00:44:59,040 --> 00:45:03,096 >> 揚聲器2:是的,我想我們 只是假設他意外 948 00:45:03,096 --> 00:45:06,840 取代他的除臭劑與強力膠。 949 00:45:06,840 --> 00:45:07,608