1 00:00:00,000 --> 00:00:01,940 >> [音樂播放] 2 00:00:01,940 --> 00:00:11,130 3 00:00:11,130 --> 00:00:14,620 >> DAVID馬蘭:這是CS 50,並且 這是9週的開始。 4 00:00:14,620 --> 00:00:18,240 而我們認為我們今天會做不 只有關閉在上週的一章 5 00:00:18,240 --> 00:00:22,670 材料,我們專注於服務器 端Web編程的PHP和SQL, 6 00:00:22,670 --> 00:00:23,549 一些數據庫的東西。 7 00:00:23,549 --> 00:00:25,590 我們將談論了一下 今天的安全性,然後 8 00:00:25,590 --> 00:00:29,590 過渡到客戶端編程 語言稱為JavaScript的。 9 00:00:29,590 --> 00:00:31,330 但首先,一些贖回。 10 00:00:31,330 --> 00:00:35,030 >> 你可能還記得,上 週三,我設置了 11 00:00:35,030 --> 00:00:37,550 寫一個網​​站, 把用戶的輸入 12 00:00:37,550 --> 00:00:41,120 通過HTML表單是將存儲 該用戶輸入的姓名,電話 13 00:00:41,120 --> 00:00:43,124 號,以及手機 載流子在數據庫中。 14 00:00:43,124 --> 00:00:45,540 然後我有一個小命令 行的腳本編寫PHP 15 00:00:45,540 --> 00:00:47,956 這本來是要遍歷 在數據庫中的行 16 00:00:47,956 --> 00:00:49,400 並發送短信。 17 00:00:49,400 --> 00:00:53,870 儘管幾次,多次嘗試,我們 沒有得到該工作的結束。 18 00:00:53,870 --> 00:00:57,820 >> 所以,我這整個星期花在工作 對這些代碼讓我們過去點 19 00:00:57,820 --> 00:01:01,220 在我們離開的,即所有的 我得到了週三的結束 20 00:01:01,220 --> 00:01:05,500 是這樣的短信 從馬戈我掙扎著, 21 00:01:05,500 --> 00:01:09,940 接著從另一個文本消息 同學,你有這個大衛。 22 00:01:09,940 --> 00:01:14,030 其次是這一個, 奇妙的鼓勵。 23 00:01:14,030 --> 00:01:15,840 保持下去,非常振奮人心。 24 00:01:15,840 --> 00:01:20,960 我幾乎得到了它,直到then--和 這就是我們最終在週三的說明。 25 00:01:20,960 --> 00:01:25,850 然後其實也許是我的最愛, 片刻之後,該走了進來。 26 00:01:25,850 --> 00:01:27,000 該死的實時流。 27 00:01:27,000 --> 00:01:31,080 >> 所以今天,我們解決這個問題有一個快速 看看,因為我做了什麼。 28 00:01:31,080 --> 00:01:35,440 因此,所有這些代碼可用 在網上從上週的八週, 29 00:01:35,440 --> 00:01:36,300 源代碼。 30 00:01:36,300 --> 00:01:39,425 你會看到,我經歷了, 實際上我清理東西有點。 31 00:01:39,425 --> 00:01:42,080 我介紹了幾個其他 SQL數據庫的功能。 32 00:01:42,080 --> 00:01:45,300 例如,而不是 只是讓VAR炭載體 33 00:01:45,300 --> 00:01:47,310 因為我覺得上週我做的飛行。 34 00:01:47,310 --> 00:01:49,820 我不是把它定義為 什麼所謂的枚舉。 35 00:01:49,820 --> 00:01:53,310 >> 和一些你可能已經看到了這一點 當我們探討C.枚舉實際上是 36 00:01:53,310 --> 00:01:56,820 了C一個功能,您可以 列舉了一大堆常量 37 00:01:56,820 --> 00:01:59,640 並為它們分配的自動值, 像的一個,兩個,三個,四個 38 00:01:59,640 --> 00:02:01,330 而無需硬碼號。 39 00:02:01,330 --> 00:02:04,780 因此SQL支持相同的,由此,如果 你有一個數據庫字段,你只 40 00:02:04,780 --> 00:02:09,389 要採取有限1 值,你可以從字面上指定它 41 00:02:09,389 --> 00:02:13,120 因為我已經四年沒有做過 熱門美手機運營商。 42 00:02:13,120 --> 00:02:13,819 >> 所以我這樣做。 43 00:02:13,819 --> 00:02:16,610 我做了一些改動,作為 好了,其中最重要的 44 00:02:16,610 --> 00:02:20,090 是讓電子郵件,因為召回工作, 這個程序依賴於它 45 00:02:20,090 --> 00:02:23,470 一般稱為電子郵件至 短信網關,這就是 46 00:02:23,470 --> 00:02:27,670 中說,Verizon公司看中路, AT&T和其他人支持的服務器, 47 00:02:27,670 --> 00:02:30,740 如果它接收到,由此 電子郵件,它轉換為短信 48 00:02:30,740 --> 00:02:33,290 並發送一個文本 消息到別人的手機上。 49 00:02:33,290 --> 00:02:37,010 所以,如果我沒有這樣做, 這裡是一個新的和改進的形式 50 00:02:37,010 --> 00:02:39,259 這是要談 新的和改進的代碼,這 51 00:02:39,259 --> 00:02:40,300 你可以在線播放。 52 00:02:40,300 --> 00:02:44,140 它有望使我 手機提示音在短短的一瞬間。 53 00:02:44,140 --> 00:02:47,240 >> 因此,首先,我要在我的名字輸入。 54 00:02:47,240 --> 00:02:51,400 第二,我不會 要做到這一點這個時間。 55 00:02:51,400 --> 00:02:53,920 我會做檢查元素。 56 00:02:53,920 --> 00:02:56,710 而這僅僅是一個 小東西,所以我不 57 00:02:56,710 --> 00:02:59,250 創建後期製作的時間 因為我做了最後一次努力。 58 00:02:59,250 --> 00:03:02,300 現在有我的電話號碼。 59 00:03:02,300 --> 00:03:03,560 >> 我會選擇Verizon公司。 60 00:03:03,560 --> 00:03:10,260 在這裡,讓我們打開這個麥克風 在這裡,這個目標在我的手機在這裡。 61 00:03:10,260 --> 00:03:13,130 我要去點擊註冊, 這應該有希望 62 00:03:13,130 --> 00:03:14,530 把它放到數據庫中。 63 00:03:14,530 --> 00:03:16,780 現在,我會去的 命令行程序,這 64 00:03:16,780 --> 00:03:20,825 回憶被稱為點斜線 文本,用你的手指。 65 00:03:20,825 --> 00:03:24,092 66 00:03:24,092 --> 00:03:26,527 開始了。 67 00:03:26,527 --> 00:03:27,501 >> [手機鐘聲] 68 00:03:27,501 --> 00:03:28,962 >> [掌聲] 69 00:03:28,962 --> 00:03:31,815 70 00:03:31,815 --> 00:03:34,940 DAVID馬蘭:所以比this--更多的樂趣 它的樂趣,當然,如果我進去了。 71 00:03:34,940 --> 00:03:38,004 但它更有趣,我想,如果我們 在這些電影的時刻之一 72 00:03:38,004 --> 00:03:40,420 其中相似的東西真的 糟糕的事情在世界上, 73 00:03:40,420 --> 00:03:42,860 像所有的美國國家安全局的人的 手機開始發出蜂鳴聲 74 00:03:42,860 --> 00:03:44,860 與短信 提醒他們注意這個事實。 75 00:03:44,860 --> 00:03:47,026 所以我想我們會嘗試 在此重建相同, 76 00:03:47,026 --> 00:03:49,610 由此不使用數據庫, 我代替預先 77 00:03:49,610 --> 00:03:51,490 寫了一個程序,看起來像這樣。 78 00:03:51,490 --> 00:03:53,660 >> 這是一index.php-- 我把這段代碼在線 79 00:03:53,660 --> 00:03:56,710 作為well--,顯然 只是呈現form.php的, 80 00:03:56,710 --> 00:04:00,990 使用MVC風格的範例,我們 談更詳細的問題集 81 00:04:00,990 --> 00:04:01,650 七。 82 00:04:01,650 --> 00:04:02,910 這種形式是非常簡單的。 83 00:04:02,910 --> 00:04:06,634 這將提交給 文件通過郵寄稱為here.php。 84 00:04:06,634 --> 00:04:09,300 而且它顯然是要問 一個名字和一個電話號碼, 85 00:04:09,300 --> 00:04:11,400 然後,通過所謂的 選擇菜單,這是 86 00:04:11,400 --> 00:04:14,250 要給你至少四 熱門美手機運營商, 87 00:04:14,250 --> 00:04:17,470 然後讓你有效 點擊這裡好好聽講。 88 00:04:17,470 --> 00:04:20,471 >> 而在這裡,與此同時,將要 借用一些代碼的最後一次。 89 00:04:20,471 --> 00:04:22,553 如果你只是瀏覽一下, 你會看到有 90 00:04:22,553 --> 00:04:23,900 一大堆錯誤檢查。 91 00:04:23,900 --> 00:04:26,640 但在美女到底是 我們今天沒有寫入數據庫。 92 00:04:26,640 --> 00:04:29,130 我們保持它簡單, 剛發出希望 93 00:04:29,130 --> 00:04:32,190 通過功能我一個短信 寫了這幾天電話 94 00:04:32,190 --> 00:04:36,270 文,這是在功能。 PHP的, 這又是在網上提供。 95 00:04:36,270 --> 00:04:38,210 >> 所以,如果你想在這分享。 96 00:04:38,210 --> 00:04:40,190 我們不會被存儲任何東西。 97 00:04:40,190 --> 00:04:43,809 去這個網址這裡是實時的。 98 00:04:43,809 --> 00:04:46,850 不要提交,只是還沒有,但我們 看看我們是否能擁有這些電影之一 99 00:04:46,850 --> 00:04:49,830 瞬間,每個人的手機 會發出嗶音,希望只是 100 00:04:49,830 --> 00:04:53,580 在2011年與今年一次 這哪裡去了可怕出錯。 101 00:04:53,580 --> 00:04:58,910 一旦你去這個地址, 你應該看到一個超級簡單的形式 102 00:04:58,910 --> 00:05:03,884 如果你有一個名字,一個手機 號,和一個蜂窩電話載波 103 00:05:03,884 --> 00:05:06,175 列表中有匹配,則轉到 進取,填寫表格。 104 00:05:06,175 --> 00:05:07,880 但是,不要點擊提交,只是還沒有。 105 00:05:07,880 --> 00:05:10,850 >> 窗體的打算是這樣的。 106 00:05:10,850 --> 00:05:13,660 來吧,鍵入 您的姓名,電話號碼。 107 00:05:13,660 --> 00:05:17,670 空中接力,一個人是怎麼回事遙遙領先。 108 00:05:17,670 --> 00:05:18,170 沒關係。 109 00:05:18,170 --> 00:05:19,340 OK,每個人都填寫了表格。 110 00:05:19,340 --> 00:05:21,400 這應該工作在 手機也一樣,如果你​​想要的。 111 00:05:21,400 --> 00:05:23,695 好吧,在你的痕跡,被置,走了。 112 00:05:23,695 --> 00:05:24,195 打到這裡。 113 00:05:24,195 --> 00:05:27,275 114 00:05:27,275 --> 00:05:27,775 什麼? 115 00:05:27,775 --> 00:05:31,140 116 00:05:31,140 --> 00:05:31,640 號 117 00:05:31,640 --> 00:05:34,410 118 00:05:34,410 --> 00:05:40,250 我向上帝發誓,我測試 這種多次至今。 119 00:05:40,250 --> 00:05:41,720 你懂嗎? 120 00:05:41,720 --> 00:05:43,145 >> [插VOICES] 121 00:05:43,145 --> 00:05:46,470 122 00:05:46,470 --> 00:05:49,560 >> DAVID馬蘭:OK,用戶錯誤可能。 123 00:05:49,560 --> 00:05:50,550 這是兩人。 124 00:05:50,550 --> 00:05:53,300 它的工作有兩個出了 幾百年,三,四。 125 00:05:53,300 --> 00:05:55,940 OK,這是很好的。 126 00:05:55,940 --> 00:05:58,520 五分之四的 正確性如何。 127 00:05:58,520 --> 00:05:59,810 >> 那麼到底發生了什麼? 128 00:05:59,810 --> 00:06:02,727 因此推測,沒有看到你 屏幕上,為什麼它可能有誤? 129 00:06:02,727 --> 00:06:05,518 這可能是我們剛 試圖讓過多的連接 130 00:06:05,518 --> 00:06:08,110 哈佛的郵件服務器全部 一旦從相同的IP地址。 131 00:06:08,110 --> 00:06:10,740 我只是猜測,因為我沒有 有測試的奢華 132 00:06:10,740 --> 00:06:13,220 這段代碼的一些 300人提前 133 00:06:13,220 --> 00:06:16,040 但現在認識到, 在於,至少應 134 00:06:16,040 --> 00:06:18,250 已經得到完成這次任務。 135 00:06:18,250 --> 00:06:22,880 >> 好吧,那麼為什麼是這一切的 更有密切關係這是怎麼回事? 136 00:06:22,880 --> 00:06:24,900 那麼首先,快速 夫婦公告。 137 00:06:24,900 --> 00:06:29,350 所以一個,如果你想加入長安,和 尼克,和其他人在午餐這個星期五​​, 138 00:06:29,350 --> 00:06:32,400 做的RSVP在通常的URL存在。 139 00:06:32,400 --> 00:06:35,650 如果你正在考慮集中的 或做在CS輔助, 140 00:06:35,650 --> 00:06:38,941 無論你是一個大二的學生,還是大一新生, 甚至大三或大四這一點 141 00:06:38,941 --> 00:06:42,490 而且還可以擠在課程, 認識到工程學校 142 00:06:42,490 --> 00:06:45,620 正在收集免費Ben和 傑里的冰淇淋和建議 143 00:06:45,620 --> 00:06:48,910 本週三後不久級 下午4:00,在CS建設 144 00:06:48,910 --> 00:06:49,771 在麥克斯韋德沃金。 145 00:06:49,771 --> 00:06:51,520 如果這是過速 在屏幕上,只是去 146 00:06:51,520 --> 00:06:55,260 以cs50.harvard.edu了 鏈接至Facebook活動 147 00:06:55,260 --> 00:06:57,140 在這裡你可以看到更多的細節。 148 00:06:57,140 --> 00:07:01,390 >> 同時,我想我會改正 另一件事我瘋玩週三。 149 00:07:01,390 --> 00:07:04,400 原來,馬克的ID 在Facebook上是不是三個。 150 00:07:04,400 --> 00:07:05,230 這是4。 151 00:07:05,230 --> 00:07:08,330 原來,他有更多的測試 帳戶比我記得。 152 00:07:08,330 --> 00:07:12,400 但是,這是什麼感覺像一個機會 做的是拉這樣的URL。 153 00:07:12,400 --> 00:07:16,680 >> 所以,事實證明,Facebook有一個 API,應用程序編程接口, 154 00:07:16,680 --> 00:07:20,070 這是一個機制,使你 可以通過編程方式請求數據 155 00:07:20,070 --> 00:07:24,480 在Facebook和取回機 可讀的信息,而不是網頁 156 00:07:24,480 --> 00:07:28,690 但只是原始的文字,一些 被稱為JavaScript對象表示法。 157 00:07:28,690 --> 00:07:32,150 而事實上,如果我訪問這個 URL,並放大,在默認情況下, 158 00:07:32,150 --> 00:07:34,960 這是馬克的公開 獲得的信息。 159 00:07:34,960 --> 00:07:37,430 >> 而有趣的細節 這裡只是他的ID 160 00:07:37,430 --> 00:07:40,670 的確,排名第四,這是我 當我這樣做實現。 161 00:07:40,670 --> 00:07:44,260 你可以自己做,如果你知道 您的Facebook用戶名,如果你有一個。 162 00:07:44,260 --> 00:07:45,440 只需鍵入它頂在那裡。 163 00:07:45,440 --> 00:07:46,640 而這一切都不是私有的。 164 00:07:46,640 --> 00:07:48,670 我只是在做這甚至 在隱身模式。 165 00:07:48,670 --> 00:07:49,900 所以我連登錄。 166 00:07:49,900 --> 00:07:54,440 和你看到的是我 顯然是用戶數6454 167 00:07:54,440 --> 00:07:56,480 在Facebook上,這是不 太糟糕了,這些天。 168 00:07:56,480 --> 00:07:59,900 所以,無論如何,你還會看到 其他信息在那裡。 169 00:07:59,900 --> 00:08:02,150 >> 和有用的方面 那是你 170 00:08:02,150 --> 00:08:06,890 可以編寫自己的軟件, 在某種程度上整合了這樣的數據 171 00:08:06,890 --> 00:08:08,170 到自己的應用程序。 172 00:08:08,170 --> 00:08:10,650 您可以授權用戶 登錄到您的網站, 173 00:08:10,650 --> 00:08:14,190 不使用自己的自定義的用戶名和 密碼,但也許他們的Facebook登錄 174 00:08:14,190 --> 00:08:16,170 和獲取信息甚至 他們的朋友, 175 00:08:16,170 --> 00:08:18,740 如果他們同意這樣的或類似的。 176 00:08:18,740 --> 00:08:21,430 因此請注意,CS50,也 有一些自身的API, 177 00:08:21,430 --> 00:08:24,620 一個是課程目錄數據, 對於一些在餐廳的菜單擁抱 178 00:08:24,620 --> 00:08:26,730 室,所有的 建築和地點 179 00:08:26,730 --> 00:08:30,930 在校園裡,我們有一個API,以及 您可以查詢類似,並得到 180 00:08:30,930 --> 00:08:35,520 回文本數據,你可以整合 到一個PHP或JavaScript,甚至, 181 00:08:35,520 --> 00:08:38,320 雖然不常用,一 基於C的最終項目。 182 00:08:38,320 --> 00:08:41,190 >> 事實上,未來的最終 項目是幾個里程碑。 183 00:08:41,190 --> 00:08:42,980 您從我們這裡得到一個電子郵件的一天。 184 00:08:42,980 --> 00:08:45,761 認識到提案 是下星期一到期。 185 00:08:45,761 --> 00:08:49,010 它並不一定約束力,但你 確實需要得到你的教學研究員 186 00:08:49,010 --> 00:08:51,260 製作前批准 其後任何更改。 187 00:08:51,260 --> 00:08:54,280 然後前面有一個 其他里程碑的數字。 188 00:08:54,280 --> 00:08:56,542 >> 因此,為了逗你,也 有一些可能性, 189 00:08:56,542 --> 00:08:58,250 我們有一堆 這些色調燈泡。 190 00:08:58,250 --> 00:09:01,190 而一些你們現在有一些 這些在你的宿舍裡也是如此。 191 00:09:01,190 --> 00:09:02,920 而且他們也有一個API。 192 00:09:02,920 --> 00:09:07,300 於是想起那些二進制燈泡週 以前,丹·布拉德利和安塞爾 193 00:09:07,300 --> 00:09:08,780 達夫為我們創造。 194 00:09:08,780 --> 00:09:12,560 他們使用的軟件界面 這個燈泡,這在目前 195 00:09:12,560 --> 00:09:15,232 插入電 然後經由無線 196 00:09:15,232 --> 00:09:17,690 連接到一個小東西 所謂的橋到這裡, 197 00:09:17,690 --> 00:09:21,280 像一個小的路由器專有 這個特定的設備。 198 00:09:21,280 --> 00:09:26,540 >> 但事實證明,如果我知道如何 發送HTTP消息,因為我們現在都做, 199 00:09:26,540 --> 00:09:31,670 我可以發送類似這樣的消息來 這種燈泡將其打開或關閉 200 00:09:31,670 --> 00:09:34,000 或做任何數量的 在其上的其他操作。 201 00:09:34,000 --> 00:09:36,110 請注意,它沒有得到,這不是發布。 202 00:09:36,110 --> 00:09:37,760 還有另外一個叫放。 203 00:09:37,760 --> 00:09:39,630 實際上,有一些其他類似的動詞。 204 00:09:39,630 --> 00:09:42,920 但是請注意有一個路徑存在, API斜線,斜線新的開發者, 205 00:09:42,920 --> 00:09:44,990 光斜線,斜線1,斜線狀態。 206 00:09:44,990 --> 00:09:49,060 >> 這顯然只是 路徑該公司,飛利浦, 207 00:09:49,060 --> 00:09:51,640 決定你必須打 與HTTP請求 208 00:09:51,640 --> 00:09:55,010 如果你想改變狀態 的使用HTTP1.1的燈泡。 209 00:09:55,010 --> 00:09:56,380 然後注意空行。 210 00:09:56,380 --> 00:10:00,170 然後最後是什麼樣子 樣的一些種類的陣列, 211 00:10:00,170 --> 00:10:04,730 這再次將被稱為 JavaScript對象表示法,或傑森。 212 00:10:04,730 --> 00:10:08,000 你在這裡看到的是, 有三個鍵值對。 213 00:10:08,000 --> 00:10:09,115 >> 一個關鍵的要求。 214 00:10:09,115 --> 00:10:10,990 和它的價值顯然 將是真實的。 215 00:10:10,990 --> 00:10:13,612 亮度是128,其 是某種為int。 216 00:10:13,612 --> 00:10:15,820 然後過渡時間 零,這顯然是 217 00:10:15,820 --> 00:10:17,970 多久它會 需要把這個東西上。 218 00:10:17,970 --> 00:10:19,890 >> 所以現在這種燈泡不亮。 219 00:10:19,890 --> 00:10:22,880 但是,如果我做的正是讓this-- 我去一點小抄 220 00:10:22,880 --> 00:10:25,200 丹成立 advance--我要去 221 00:10:25,200 --> 00:10:27,920 繼續前進,複製 下面的命令。 222 00:10:27,920 --> 00:10:30,200 捲曲,因為你們中的一些 可能收集到的CS​​50 223 00:10:30,200 --> 00:10:35,080 討論的是如Telnet這樣的實用工具 你可以模擬HTTP請求, 224 00:10:35,080 --> 00:10:36,360 特別提出。 225 00:10:36,360 --> 00:10:39,710 我可以將此數據發送, 具體是什麼,我們只是 226 00:10:39,710 --> 00:10:43,430 看了剛才專門 這個網址在這裡。 227 00:10:43,430 --> 00:10:46,310 然後捲曲將要處理 所有必要的報頭 228 00:10:46,310 --> 00:10:47,600 並分析存在的。 229 00:10:47,600 --> 00:10:54,700 >> 因此,所有我需要做的就是這個複製到 一個終端窗口,然後按Enter鍵。 230 00:10:54,700 --> 00:10:56,000 和燈泡點亮。 231 00:10:56,000 --> 00:10:59,060 這是所有經歷 我的電腦無線 232 00:10:59,060 --> 00:11:01,960 以某種方式下至橋,這 然後,談話這個燈泡。 233 00:11:01,960 --> 00:11:02,960 我可以做別的事情。 234 00:11:02,960 --> 00:11:07,050 我可以做這件事 去紅的實例。 235 00:11:07,050 --> 00:11:11,040 我可以舉例進行 這個東西走向綠色。 236 00:11:11,040 --> 00:11:12,220 我可以讓他走了藍色。 237 00:11:12,220 --> 00:11:14,760 >> 並注意在每個這些 情況下,所有的,我自己在改變 238 00:11:14,760 --> 00:11:18,540 是所謂的色調值,以 居然給它點顏色。 239 00:11:18,540 --> 00:11:20,320 因此,讓我貼,以及這一個。 240 00:11:20,320 --> 00:11:21,000 現在是藍色的。 241 00:11:21,000 --> 00:11:24,672 >> 你可以做的更炫 事情where--讓我們去綠色。 242 00:11:24,672 --> 00:11:26,630 我能做到這一點的 當然有我自己的代碼。 243 00:11:26,630 --> 00:11:30,670 但即使是API本身 支持時髦的操作 244 00:11:30,670 --> 00:11:35,510 像這樣,現在會打擾 我們在接下來的30秒。 245 00:11:35,510 --> 00:11:39,170 >> 所以這是一種什麼味道,你可能會 做一個API,這其中涉及到 246 00:11:39,170 --> 00:11:40,010 燈泡。 247 00:11:40,010 --> 00:11:42,510 注意,CS50有幾個 對谷歌的玻璃,如果你想 248 00:11:42,510 --> 00:11:45,380 喜歡沿著對付的東西 這些線路,Arduino的UNOS,這 249 00:11:45,380 --> 00:11:48,670 在小小的電腦, 實際上,在一個小電路板 250 00:11:48,670 --> 00:11:50,470 您可以連接 電線和其他東西 251 00:11:50,470 --> 00:11:52,732 和實際控制 您的真實世界的環境。 252 00:11:52,732 --> 00:11:54,940 然後有一對夫婦 新的玩具,我們有。 253 00:11:54,940 --> 00:11:59,294 這個從字面上來乍到的 日前通過郵寄,一繆袖標。 254 00:11:59,294 --> 00:12:01,710 而且我認為這是一種方法, 讓你興奮的項目 255 00:12:01,710 --> 00:12:03,720 你可能會與使用 該硬件會 256 00:12:03,720 --> 00:12:08,900 要玩這個短片 他們用它來捉弄人 257 00:12:08,900 --> 00:12:10,500 我們現在生活在未來。 258 00:12:10,500 --> 00:12:13,494 259 00:12:13,494 --> 00:12:15,490 >> [音樂播放] 260 00:12:15,490 --> 00:13:33,410 261 00:13:33,410 --> 00:13:37,109 >> DAVID馬蘭:所以在短短的幾個星期,你 也可以在CS50公平的涼爽。 262 00:13:37,109 --> 00:13:39,150 另一種設備,我們 有一大堆的,我們是 263 00:13:39,150 --> 00:13:42,090 樂意借出的項目 被稱為運動控制器。 264 00:13:42,090 --> 00:13:45,030 這是一個小的USB設備 在連接到計算機 265 00:13:45,030 --> 00:13:47,520 讓您與互動 你的筆記本電腦,Mac或PC, 266 00:13:47,520 --> 00:13:51,570 就好像你有喜歡的Xbox Kinect的 而實際上使身體動作多 267 00:13:51,570 --> 00:13:54,509 就像我們在此看到 對未來的看法。 268 00:13:54,509 --> 00:13:56,505 >> [音樂播放] 269 00:13:56,505 --> 00:15:03,380 270 00:15:03,380 --> 00:15:06,260 >> DAVID馬蘭:所以,即使你有 不知道如何這樣的事情 271 00:15:06,260 --> 00:15:10,050 也可能會被發明或作品 在硬件一級,不管。 272 00:15:10,050 --> 00:15:13,520 即使是CS50的短短幾個月後, 和編程的理解 273 00:15:13,520 --> 00:15:19,460 更一般地,和web編程更 近日,然後又API和HTTP, 274 00:15:19,460 --> 00:15:21,830 你將通過訪問 如果你的軟件的API 275 00:15:21,830 --> 00:15:24,680 也想藉其中的一個 設備實際談談它 276 00:15:24,680 --> 00:15:27,180 而不必擔心 底層的實現 277 00:15:27,180 --> 00:15:30,220 細節,這是完全 有層次感這一概念是一致 278 00:15:30,220 --> 00:15:33,610 我們已經抽象 看到整個學期。 279 00:15:33,610 --> 00:15:37,990 >> 所以也上週末, 看到一對夫婦則新聞。 280 00:15:37,990 --> 00:15:40,640 先走,去講座,如果你 想學習的東西 281 00:15:40,640 --> 00:15:42,160 更在任意數量的主題。 282 00:15:42,160 --> 00:15:43,340 請參閱網址那裡。 283 00:15:43,340 --> 00:15:45,890 而這一次被送到 我通過張,你知道是誰, 284 00:15:45,890 --> 00:15:47,850 誰是我們的打印頭大象的軍隊。 285 00:15:47,850 --> 00:15:49,910 並且它是一個標題如下。 286 00:15:49,910 --> 00:15:51,280 我害怕我的新電視。 287 00:15:51,280 --> 00:15:54,301 為什麼我害怕把這個 關於你的東西會太。 288 00:15:54,301 --> 00:15:56,050 所以我們現在是在 指向學期, 289 00:15:56,050 --> 00:15:58,860 過,在這裡,即使你有 一絲絲的理解 290 00:15:58,860 --> 00:16:02,620 如何在網上工作,和HTTP, 和安全性,這樣的事情 291 00:16:02,620 --> 00:16:03,980 應該開始吸引您的眼球。 292 00:16:03,980 --> 00:16:07,450 但同時,你就會明白 這些東西是否是或不是 293 00:16:07,450 --> 00:16:08,430 實際的威脅。 294 00:16:08,430 --> 00:16:10,940 >> 所以我拍了幾張摘錄 從這篇文章在這裡。 295 00:16:10,940 --> 00:16:12,540 而這個故事如下。 296 00:16:12,540 --> 00:16:14,300 我現在的老闆 新的智能電視,這 297 00:16:14,300 --> 00:16:18,470 承諾提供流媒體 多媒體內容,遊戲,應用程序, 298 00:16:18,470 --> 00:16:21,450 社交媒體和互聯網 瀏覽了哦電視了。 299 00:16:21,450 --> 00:16:24,410 唯一的問題是,我現在 害怕使用它,作者說。 300 00:16:24,410 --> 00:16:29,592 你會也一樣,如果你​​讀通過 在46頁的隱私政策為您的電視。 301 00:16:29,592 --> 00:16:31,800 數據這一量 收集的東西是驚人的。 302 00:16:31,800 --> 00:16:35,710 它記錄在哪裡,何時,如何,以及 您使用的電視機有多長。 303 00:16:35,710 --> 00:16:38,190 它集跟踪cookie, 正如我們已經討論過, 304 00:16:38,190 --> 00:16:40,560 和信標設計 當你發現 305 00:16:40,560 --> 00:16:43,185 查看特定的內容或 一個特定的電子郵件消息 306 00:16:43,185 --> 00:16:45,230 如果你想在電視上查看電子郵件。 307 00:16:45,230 --> 00:16:48,430 它記錄了你的應用程序 使用,您訪問的網站, 308 00:16:48,430 --> 00:16:52,280 以及如何與內容互動, 通過您的智能電視做了這一切。 309 00:16:52,280 --> 00:16:55,470 同時,creepier yet-- 這是我的addition-- 310 00:16:55,470 --> 00:16:58,140 有一個內置的攝像頭 面部識別。 311 00:16:58,140 --> 00:17:01,010 >> 的目的是提供一種 手勢控制電視 312 00:17:01,010 --> 00:17:05,490 並讓您登錄 個人賬戶使用你的臉。 313 00:17:05,490 --> 00:17:08,940 從正面看,該圖像 保存在電視上,而不是上傳 314 00:17:08,940 --> 00:17:09,940 到企業服務器。 315 00:17:09,940 --> 00:17:12,520 在缺點方面,互聯網 連接使得整個電視 316 00:17:12,520 --> 00:17:14,811 容易受到黑客誰 已經證明的能力 317 00:17:14,811 --> 00:17:16,700 取機器的完全控制。 318 00:17:16,700 --> 00:17:20,880 >> 更令人不安的是,彷彿那不是 足夠聰明,是麥克風。 319 00:17:20,880 --> 00:17:23,599 電視擁有語音 識別功能 320 00:17:23,599 --> 00:17:26,859 這讓觀眾控制 屏幕使用語音命令。 321 00:17:26,859 --> 00:17:30,290 但服務自帶 一個相當不祥的警告。 322 00:17:30,290 --> 00:17:33,030 請注意,如果 你說的話,包括 323 00:17:33,030 --> 00:17:36,210 個人信息或其他敏感 信息,該信息 324 00:17:36,210 --> 00:17:40,310 將捕獲的數據中 並傳輸到第三方。 325 00:17:40,310 --> 00:17:40,870 明白了嗎? 326 00:17:40,870 --> 00:17:45,860 不要說個人或敏感 東西在你的電視機前。 327 00:17:45,860 --> 00:17:47,280 >> 因此,這實際上是真實的。 328 00:17:47,280 --> 00:17:50,530 它很難不,如果你看到 去百思買等,用於電視 329 00:17:50,530 --> 00:17:51,030 這些日子。 330 00:17:51,030 --> 00:17:52,540 他們都是聰明的以某種方式。 331 00:17:52,540 --> 00:17:54,740 而他們得到的 更智能,creepier。 332 00:17:54,740 --> 00:17:57,490 他們只是簡單地收集數據 在我們談論如何 333 00:17:57,490 --> 00:18:01,840 然後通過HTTP或上傳它 其他一些協議的一些服務器。 334 00:18:01,840 --> 00:18:05,720 >> 因此,這是一個有趣的物品 在這個在線網站 335 00:18:05,720 --> 00:18:08,940 在這裡,裡面講到一個 尤其錯誤或錯誤的代碼 336 00:18:08,940 --> 00:18:11,340 我們實際上可以配合 到上週的討論。 337 00:18:11,340 --> 00:18:15,730 所以這個標題是因為 下面,故事到這裡, 338 00:18:15,730 --> 00:18:18,720 喬希Breckman工作了 公司得到了一個合同 339 00:18:18,720 --> 00:18:22,390 開發一個內容管理 系統或CMS,因為他們是所謂的, 340 00:18:22,390 --> 00:18:24,380 在相當大的政府網站。 341 00:18:24,380 --> 00:18:27,300 多參與該項目的 開發一個內容管理系統 342 00:18:27,300 --> 00:18:29,840 使員工會 能夠建立和維護 343 00:18:29,840 --> 00:18:31,877 不斷變化的 他們的網站內容。 344 00:18:31,877 --> 00:18:34,210 事情進展得很不錯 上線後數天。 345 00:18:34,210 --> 00:18:37,020 但在6天裡,一切都很不那麼好。 346 00:18:37,020 --> 00:18:39,500 所有的內容 網站已經完全消失了。 347 00:18:39,500 --> 00:18:42,950 和所有網頁導致了默認, 請輸入內容的網頁。 348 00:18:42,950 --> 00:18:43,810 哎呦。 349 00:18:43,810 --> 00:18:46,080 喬希被稱為中 調查發現 350 00:18:46,080 --> 00:18:49,390 一個特別麻煩 外部IP地址了 351 00:18:49,390 --> 00:18:53,380 走在並刪除所有的 系統上的內容。 352 00:18:53,380 --> 00:18:56,290 >> IP地址不屬於 一些國外黑客彎曲 353 00:18:56,290 --> 00:18:58,340 對破壞有益 政府信息。 354 00:18:58,340 --> 00:19:05,190 它決心googlebot.com, 谷歌公司自己的網頁抓取蜘蛛。 355 00:19:05,190 --> 00:19:06,010 哎呦。 356 00:19:06,010 --> 00:19:09,150 經過一番研究和擾 四處打聽一個noncorrupt備份, 357 00:19:09,150 --> 00:19:10,180 喬希發現問題。 358 00:19:10,180 --> 00:19:12,700 >> 用戶已複製 粘貼從一個有些內容 359 00:19:12,700 --> 00:19:15,670 頁面轉到另一個頁面,其中包括 在編輯超鏈接 360 00:19:15,670 --> 00:19:17,577 編輯網頁上的內容。 361 00:19:17,577 --> 00:19:20,160 通常這不是一個 由於外部用戶問題會 362 00:19:20,160 --> 00:19:24,320 需要輸入用戶名和密碼, 但在CMS認證系統中, 363 00:19:24,320 --> 00:19:27,520 登錄系統, 沒有考慮到 364 00:19:27,520 --> 00:19:30,980 成熟的黑客 谷歌蜘蛛的技巧。 365 00:19:30,980 --> 00:19:31,700 哎呦。 366 00:19:31,700 --> 00:19:33,610 >> 事實證明,谷歌 蜘蛛不使用 367 00:19:33,610 --> 00:19:36,950 餅乾,這意味著它可以 輕鬆地繞過了檢查 368 00:19:36,950 --> 00:19:39,840 登錄cookie的設置是錯誤的。 369 00:19:39,840 --> 00:19:42,620 它也不會留意 JavaScript中,這通常 370 00:19:42,620 --> 00:19:45,170 提示和重定向用戶 未登錄誰英寸 371 00:19:45,170 --> 00:19:48,610 但它確實遵循每 每一個超鏈接找到網頁上, 372 00:19:48,610 --> 00:19:51,700 包括那些具有 刪除頁面的標題。 373 00:19:51,700 --> 00:19:52,650 哎呦。 374 00:19:52,650 --> 00:19:56,070 >> 那麼,這是否意味著更多的 技術問題,而是相當接近條款? 375 00:19:56,070 --> 00:19:58,340 它只是意味著, 在他們的網站上, 376 00:19:58,340 --> 00:20:02,287 他們的網址並不像這一個 您可能會看到在問題設置7。 377 00:20:02,287 --> 00:20:04,620 召回問題集7 或者知道問題集7 378 00:20:04,620 --> 00:20:06,411 你所遇到的挑戰, 除其他事項外, 379 00:20:06,411 --> 00:20:08,570 以代表用戶的拋售股票。 380 00:20:08,570 --> 00:20:14,010 但是,實施該功能通過方式 通過在用戶獲得超級鏈接 381 00:20:14,010 --> 00:20:16,880 接口,可能 不是最聰明的想法 382 00:20:16,880 --> 00:20:20,300 因為如果你的網站是莫名其妙 訪問或者通過人工 383 00:20:20,300 --> 00:20:23,577 誰的點擊左右或購買 機器人像谷歌的或蜘蛛 384 00:20:23,577 --> 00:20:26,160 因為他們是所謂的,這只是 爬行網頁試圖指數 385 00:20:26,160 --> 00:20:29,060 網絡作為一個搜索引擎, 他們可以很容易 386 00:20:29,060 --> 00:20:31,340 通過打得到這種URL的。 387 00:20:31,340 --> 00:20:33,770 這就是功能 相當於,在這種情況下, 388 00:20:33,770 --> 00:20:37,000 谷歌銷售的所有股份。 389 00:20:37,000 --> 00:20:40,030 >> 現在,坦率地說,它是完全 愚蠢的CMS 390 00:20:40,030 --> 00:20:43,240 使用JavaScript和cookie 實施其登錄系統 391 00:20:43,240 --> 00:20:47,100 不這樣做服務器端,如 你們在PSET做,會7-- 392 00:20:47,100 --> 00:20:49,940 有一個的login.php file--永遠,永遠, 393 00:20:49,940 --> 00:20:52,789 安全始終應該是 在服務器側進行, 394 00:20:52,789 --> 00:20:56,080 未在客戶機側,因為正如本 文章建議,你可能自己 395 00:20:56,080 --> 00:20:59,600 看到在某些時候,它是 平凡的用戶,是好是壞, 396 00:20:59,600 --> 00:21:02,860 剛剛關閉JavaScript 更何況餅乾。 397 00:21:02,860 --> 00:21:06,020 所以這是你的日常跆拳道。 398 00:21:06,020 --> 00:21:07,970 >> 還有一個,這 是那種太可怕了, 399 00:21:07,970 --> 00:21:11,360 所以我會提到它,如果 僅作為一個生命的教訓。 400 00:21:11,360 --> 00:21:14,850 當你使用一個應用程序 所謂像Snapchat等 401 00:21:14,850 --> 00:21:19,380 這表示,這些照片只持續 五秒十秒鐘,或諸如此類的東西。 402 00:21:19,380 --> 00:21:21,680 他們是短暫即 絕對不是這樣的。 403 00:21:21,680 --> 00:21:25,670 像有沒有辦法,數字化, 實現某種形式的視頻, 404 00:21:25,670 --> 00:21:30,150 或圖像或文字等分享 上的另一端的接收方 405 00:21:30,150 --> 00:21:31,660 不能以某種方式保存數據。 406 00:21:31,660 --> 00:21:34,300 >> 在最原始的方法,有人 可以採取他們的電話。 407 00:21:34,300 --> 00:21:36,850 他們有10秒的窗口 而在尋找一些卡 408 00:21:36,850 --> 00:21:39,410 只需要一些其他的手機 和它拍照,效果顯著。 409 00:21:39,410 --> 00:21:41,660 所以,你可以保留 一些數字的方式。 410 00:21:41,660 --> 00:21:44,620 你們當中有些人知道如何利用 截圖您的手機上。 411 00:21:44,620 --> 00:21:49,290 事實上,如果你不知道這一點, 認識到,至少Snapchat, 412 00:21:49,290 --> 00:21:51,040 而且我認為其他 應用這些天, 413 00:21:51,040 --> 00:21:53,720 至少告訴你,如果 收件人實際 414 00:21:53,720 --> 00:21:55,310 拍攝圖像的截圖。 415 00:21:55,310 --> 00:22:00,870 >> 但更糟糕的是,這是snappening, 有人最近創造它, 416 00:22:00,870 --> 00:22:04,680 其中,大約10萬 捕捉已被釋放 417 00:22:04,680 --> 00:22:09,310 什麼叫做torrent文件 在各網站最終。 418 00:22:09,310 --> 00:22:12,000 而這些包含了一大堆 私人郵件和公告。 419 00:22:12,000 --> 00:22:15,210 原來,他們大多是良性的, 所以不是你所期望的是什麼。 420 00:22:15,210 --> 00:22:17,580 但由於人們有 使用第三方網站, 421 00:22:17,580 --> 00:22:20,270 他們Snapchat登錄 用戶名和密碼,然後 422 00:22:20,270 --> 00:22:23,470 保存所有的卡扣 這個第三方網站。 423 00:22:23,470 --> 00:22:26,130 它是第三方 網站被黑, 424 00:22:26,130 --> 00:22:30,710 它只是意味著有人想出如何 讓所有的10萬再加上那些圖片 425 00:22:30,710 --> 00:22:33,822 到自己的硬盤驅動器 隨後的共享。 426 00:22:33,822 --> 00:22:36,030 坦率地說,在這裡也一樣,它的排序 對愚蠢的Snapchat 427 00:22:36,030 --> 00:22:39,360 以這樣的方式來實現該 第三方可以排序攔截 428 00:22:39,360 --> 00:22:43,310 的數據,並且它不依賴於你的 自己的應用程序在手機上運行。 429 00:22:43,310 --> 00:22:46,947 但在這裡,也認識到這些 事情不應該抓住你措手不及, 430 00:22:46,947 --> 00:22:49,030 或者至少應該有 是生命的教訓在這裡。 431 00:22:49,030 --> 00:22:52,220 如果您想技術 詳細信息,請訪問該網址有 432 00:22:52,220 --> 00:22:53,570 這是在今天的幻燈片。 433 00:22:53,570 --> 00:23:00,960 好了,就什麼問題 CS在今天的生活中的經驗教訓? 434 00:23:00,960 --> 00:23:02,710 把這一關。 435 00:23:02,710 --> 00:23:04,970 什麼事呢? 436 00:23:04,970 --> 00:23:06,301 什麼事呢? 437 00:23:06,301 --> 00:23:09,050 我已經得到了很多人的檢查 他們Snapchat什麼的了。 438 00:23:09,050 --> 00:23:11,690 >> 好吧,那麼SQL, 結構化查詢語言。 439 00:23:11,690 --> 00:23:12,509 讓我們把這個包。 440 00:23:12,509 --> 00:23:14,300 而且,即使 我們只是刮傷 441 00:23:14,300 --> 00:23:16,310 這種表面 語言,我們會給你 442 00:23:16,310 --> 00:23:18,930 足夠的語言 在PSET 7的形式 443 00:23:18,930 --> 00:23:22,140 這樣就可以解決一些 相當普遍的功能。 444 00:23:22,140 --> 00:23:24,912 但同時也發現有一對夫婦 事情我們不要求你, 445 00:23:24,912 --> 00:23:27,120 但他們將是 重要的來了最後的項目 446 00:23:27,120 --> 00:23:30,760 當然來使實際 實際用戶的網站 447 00:23:30,760 --> 00:23:32,040 是這樣的設計決策。 448 00:23:32,040 --> 00:23:34,460 >> 事實證明,在 MySQL數據庫,你 449 00:23:34,460 --> 00:23:37,460 有像一束束的選擇 為你的列中的數據類型 450 00:23:37,460 --> 00:23:41,670 和其他的東西,但你也有 所謂存儲的選擇 451 00:23:41,670 --> 00:23:44,570 引擎為您的所有數據, 排序文件系統, 452 00:23:44,570 --> 00:23:46,700 如果您熟悉, 您的所有數據。 453 00:23:46,700 --> 00:23:48,830 是它最終存儲在什麼格式? 454 00:23:48,830 --> 00:23:53,300 與最常見的,或許,一直 MyISAM和InnoDB,技術術語 455 00:23:53,300 --> 00:23:56,060 我們將只關心 的範圍內,一個人 456 00:23:56,060 --> 00:23:58,500 和一個不具有 以下特徵。 457 00:23:58,500 --> 00:24:00,390 >> 假設你有 一個小宿舍冰箱。 458 00:24:00,390 --> 00:24:03,030 並假設你和你的 室友,誰分享這個冰箱, 459 00:24:03,030 --> 00:24:04,682 真的是喜歡說牛奶。 460 00:24:04,682 --> 00:24:07,140 這是,事實上,如何 故事告訴我回來的路上 461 00:24:07,140 --> 00:24:10,890 在這一天,當我把一門課程 所謂CS 161的操作系統,這 462 00:24:10,890 --> 00:24:12,580 同樣探討了這個話題。 463 00:24:12,580 --> 00:24:13,760 所以,你有這個冰箱。 464 00:24:13,760 --> 00:24:14,630 你出的牛奶。 465 00:24:14,630 --> 00:24:17,000 你回家的時候,你的室友的 還在上課也好, 466 00:24:17,000 --> 00:24:19,208 而你決定我要去 出去找一些牛奶。 467 00:24:19,208 --> 00:24:22,630 所以你關閉了冰箱,死機 宿舍裡,走在街對面 468 00:24:22,630 --> 00:24:25,330 到CVS或其它地方,並獲得 在網上買了一些牛奶。 469 00:24:25,330 --> 00:24:28,960 >> 同時,你的室友到家 從類,進入宿舍裡, 470 00:24:28,960 --> 00:24:31,802 打開冰箱,還實現 ooph,我們出的牛奶。 471 00:24:31,802 --> 00:24:33,760 於是,他或她關閉 冰箱再發生 472 00:24:33,760 --> 00:24:35,610 去其他的CVS, 這恰好是 473 00:24:35,610 --> 00:24:38,470 從另一個CVS一個街區之遙 在廣場上​​,並在得到線 474 00:24:38,470 --> 00:24:40,230 那裡得到一些牛奶。 475 00:24:40,230 --> 00:24:42,524 現在,當然,在幾分鐘 後來,你們倆回去, 476 00:24:42,524 --> 00:24:44,690 和最壞的所有可能的 結果已經發生。 477 00:24:44,690 --> 00:24:45,792 你們兩個有奶。 478 00:24:45,792 --> 00:24:47,500 而你真的不 像牛奶那麼多。 479 00:24:47,500 --> 00:24:49,625 所以其中之一是剛 去酸味在一些點。 480 00:24:49,625 --> 00:24:55,941 所以,現在你有過量 牛奶在冰箱裡全是因為什麼原因呢? 481 00:24:55,941 --> 00:24:57,072 >> [聽不清] 482 00:24:57,072 --> 00:24:59,780 DAVID馬蘭:是的,你沒有 彼此以某種方式進行通信 483 00:24:59,780 --> 00:25:00,904 你都拿到牛奶。 484 00:25:00,904 --> 00:25:04,320 因此,在最簡單的 如何在人類的世界裡, 485 00:25:04,320 --> 00:25:08,390 如何才能避免這種無聊 場景發生這樣的 486 00:25:08,390 --> 00:25:09,750 您只落得之一。 487 00:25:09,750 --> 00:25:10,840 這些文字,是不錯的。 488 00:25:10,840 --> 00:25:12,877 但是,怎麼回事? 489 00:25:12,877 --> 00:25:13,460 貼字條。 490 00:25:13,460 --> 00:25:14,626 DAVID馬蘭:一個便利貼。 491 00:25:14,626 --> 00:25:17,150 任何形式的溝通 告訴你的室友 492 00:25:17,150 --> 00:25:18,670 走不進冰箱裡的牛奶。 493 00:25:18,670 --> 00:25:20,440 我打算去進貨我自己。 494 00:25:20,440 --> 00:25:22,770 所以,你需要以某種方式 鎖定該資源。 495 00:25:22,770 --> 00:25:27,180 因此,我們可以讓this--我們可以種 毀滅的故事,變成一個CS的故事 496 00:25:27,180 --> 00:25:30,360 由此認為這是就像一個 的變量,它存儲一些數值。 497 00:25:30,360 --> 00:25:32,570 而現在,在 牛奶的值為零, 498 00:25:32,570 --> 00:25:35,410 你不想讓你的 室友檢查變量 499 00:25:35,410 --> 00:25:38,730 然後再做出決定他或她自己 根據該變量的狀態 500 00:25:38,730 --> 00:25:42,430 如果你在過程中 改變該變量的狀態。 501 00:25:42,430 --> 00:25:46,140 >> 所以SQL的線路之一,我們 給你PSET 7規格 502 00:25:46,140 --> 00:25:47,310 這是一個在這裡。 503 00:25:47,310 --> 00:25:49,740 我們不花大 的時間談論它。 504 00:25:49,740 --> 00:25:55,100 但事實證明,如果你想 買一些股票CS50融資 505 00:25:55,100 --> 00:25:58,000 你已經有 ,你的一些股票 506 00:25:58,000 --> 00:26:01,750 希望能夠做一些 事情瞬間在一起。 507 00:26:01,750 --> 00:26:04,360 你想成為能夠 有效地,在一個高的水平, 508 00:26:04,360 --> 00:26:06,700 檢查沒事,如果我想 買免費的更多的股份, 509 00:26:06,700 --> 00:26:08,780 仙股我們 在規範中講, 510 00:26:08,780 --> 00:26:10,660 我想先檢查 我有多少股份有。 511 00:26:10,660 --> 00:26:11,810 並假設這是5。 512 00:26:11,810 --> 00:26:14,600 並假設我想 買10多了,我最終 513 00:26:14,600 --> 00:26:17,069 想擁有15萬股股票。 514 00:26:17,069 --> 00:26:18,360 所以我要問兩個問題。 515 00:26:18,360 --> 00:26:20,230 什麼是變量的狀態? 516 00:26:20,230 --> 00:26:21,470 什麼是該行的狀態呢? 517 00:26:21,470 --> 00:26:22,970 有多少股票我現在有嗎? 518 00:26:22,970 --> 00:26:24,636 然後,你要繼續前進,更新。 519 00:26:24,636 --> 00:26:27,720 所以這是模擬的 牛奶在您檢查的行, 520 00:26:27,720 --> 00:26:30,730 然後你想更新 因為如果你想購買10股, 521 00:26:30,730 --> 00:26:32,521 你不想改變 行至10,則 522 00:26:32,521 --> 00:26:35,300 想要將其更改為5 加10或,當然,15。 523 00:26:35,300 --> 00:26:40,030 >> 這行代碼將確保 這兩個概念的想法 524 00:26:40,030 --> 00:26:42,810 一起發生或根本沒有。 525 00:26:42,810 --> 00:26:46,920 沒有人,包括一些其它的用戶 誰是登錄到同一網站, 526 00:26:46,920 --> 00:26:49,900 可不知何故中斷 行的檢查 527 00:26:49,900 --> 00:26:52,960 與該行的更新,該 選擇,如果你願意的更新。 528 00:26:52,960 --> 00:26:57,360 而語法是不是超明顯, 但是這一條線,長的是很, 529 00:26:57,360 --> 00:27:01,150 確保這兩個操作 檢查變量或檢查行 530 00:27:01,150 --> 00:27:04,660 並更新該行發生的原子。 531 00:27:04,660 --> 00:27:06,849 >> 哦,又來了。 532 00:27:06,849 --> 00:27:07,890 在我的手機短信。 533 00:27:07,890 --> 00:27:09,954 因此,讓我們使這個 一點更具體。 534 00:27:09,954 --> 00:27:12,120 假設你不 實現一台冰箱, 535 00:27:12,120 --> 00:27:16,400 而你不執行 PSET 7,但實際的銀行, 536 00:27:16,400 --> 00:27:20,000 或自動取款機,自動取款 機,不知何故,讓你 537 00:27:20,000 --> 00:27:22,960 希望能夠授權 用戶匯款 538 00:27:22,960 --> 00:27:24,500 從一個帳戶向另一個。 539 00:27:24,500 --> 00:27:25,100 OK,掛。 540 00:27:25,100 --> 00:27:26,683 我現在要靜音,謝謝。 541 00:27:26,683 --> 00:27:30,450 因此,我們要轉移資金 從一個帳戶號 542 00:27:30,450 --> 00:27:33,600 到一個不同的帳戶 數,特別是100元。 543 00:27:33,600 --> 00:27:37,690 因此,這是一種任意的 例如,讓你的自動取款機, 544 00:27:37,690 --> 00:27:41,060 可能要執行兩個SQL 查詢,從一個帳戶中減去, 545 00:27:41,060 --> 00:27:42,430 並添加到其他帳戶。 546 00:27:42,430 --> 00:27:46,766 但是你要確保這些 兩行無論發生或根本沒有。 547 00:27:46,766 --> 00:27:48,640 你不想要的東西 越來越中斷。 548 00:27:48,640 --> 00:27:51,440 你不這樣做一些聰明的壞蛋 不知何故站在美國銀行 549 00:27:51,440 --> 00:27:53,270 在前面的兩個自動取款機 他並以某種方式 550 00:27:53,270 --> 00:27:55,270 排序打字的 同時命令, 551 00:27:55,270 --> 00:28:01,230 希望試圖以小博大200美元,而不是 100元,只用100美元記。 552 00:28:01,230 --> 00:28:04,450 總之,你要這 做出你期望的那樣。 553 00:28:04,450 --> 00:28:06,540 >> 和你的方式 這在SQL數據庫 554 00:28:06,540 --> 00:28:09,350 你在什麼把它包 稱為事務。 555 00:28:09,350 --> 00:28:14,290 從字面上看在SQL中,你可以調用CS50的 與報價引文結束開始查詢功能 556 00:28:14,290 --> 00:28:15,370 交易。 557 00:28:15,370 --> 00:28:18,640 然後,您可以執行任何數量 隨後的SQL查詢, 558 00:28:18,640 --> 00:28:20,870 但他們都不拿 在數據庫上實現 559 00:28:20,870 --> 00:28:25,880 直到調用查詢報價引文結束 提交時,如果再使用PHP。 560 00:28:25,880 --> 00:28:29,810 並以這種方式,可以確保 即使你有1000個用戶所有 561 00:28:29,810 --> 00:28:32,080 打你的數據庫 同時,SQL 562 00:28:32,080 --> 00:28:34,540 會答應這些 兩個查詢將 563 00:28:34,540 --> 00:28:36,740 後,其他執行一個正確的。 564 00:28:36,740 --> 00:28:40,330 這樣你就不會結束與過量 牛奶或錯誤的數量,最終, 565 00:28:40,330 --> 00:28:40,830 錢。 566 00:28:40,830 --> 00:28:43,110 >> 所以記住這一點, 沒有那麼多的PSET 7 567 00:28:43,110 --> 00:28:45,250 但對於最終的項目 如果你是真正 568 00:28:45,250 --> 00:28:49,690 試圖四處移動數據 跨表,你可能會在這裡。 569 00:28:49,690 --> 00:28:53,980 但也許更簡單,更 顯然,了解一個例子 570 00:28:53,980 --> 00:28:54,860 這是一個在這裡。 571 00:28:54,860 --> 00:28:57,760 有人通過電子郵件發送關於我們 這只是一天 572 00:28:57,760 --> 00:28:59,600 當他看到類似的東西在網上。 573 00:28:59,600 --> 00:29:03,480 >> 所以,據我所知,銷系統 是不是容易受到這種攻擊。 574 00:29:03,480 --> 00:29:06,637 我不知道,如果它甚至使用 機罩下方的SQL數據庫。 575 00:29:06,637 --> 00:29:08,470 但是,讓我們用它來 就事論事。 576 00:29:08,470 --> 00:29:10,178 這裡的屏幕 哈佛人往往 577 00:29:10,178 --> 00:29:13,620 查看與登錄時的 哈佛的ID號及其引腳。 578 00:29:13,620 --> 00:29:19,020 並假設銷系統是 在PHP和MySQL的執行 579 00:29:19,020 --> 00:29:22,000 數據庫,代碼,有人 可能已經編寫年前 580 00:29:22,000 --> 00:29:23,270 可能是這樣的。 581 00:29:23,270 --> 00:29:25,230 首先,聲明一個 變量調用的用戶名。 582 00:29:25,230 --> 00:29:27,560 和剛剛獲得來自 在POST超全局。 583 00:29:27,560 --> 00:29:30,140 然後得到另一個變量 所謂的密碼,也這樣做。 584 00:29:30,140 --> 00:29:33,080 然後只需要執行 在這裡長時間的查詢, 585 00:29:33,080 --> 00:29:36,690 從用戶那裡選擇明星 用戶名等於如此這般 586 00:29:36,690 --> 00:29:38,510 和口令等於如此這般。 587 00:29:38,510 --> 00:29:40,660 >> 請注意,該捲曲 支撐我在這裡使用 588 00:29:40,660 --> 00:29:42,880 剛才的意思是PHP,走 未來,並以 589 00:29:42,880 --> 00:29:45,400 這兩個值 變數就在那裡。 590 00:29:45,400 --> 00:29:50,090 他們不是絕對必要的,但 他們傾向於避免細微的語法錯誤。 591 00:29:50,090 --> 00:29:53,650 因此,這看起來完全 正確的第一眼。 592 00:29:53,650 --> 00:29:54,240 它是。 593 00:29:54,240 --> 00:29:56,680 你可以實現的 銷系統是這樣的。 594 00:29:56,680 --> 00:30:00,460 >> 但是,假設一個超級 聰明和惡意學生 595 00:30:00,460 --> 00:30:03,020 該輸入他或她的腳。 596 00:30:03,020 --> 00:30:05,550 所以,我取出子彈 這裡的招牌,在模擬時, 597 00:30:05,550 --> 00:30:08,760 我實際上已經揭示 他或她可能會打字。 598 00:30:08,760 --> 00:30:10,350 這是一個有點怪。 599 00:30:10,350 --> 00:30:13,850 但是,跳出你的可能 令人擔憂的關於用戶的輸入, 600 00:30:13,850 --> 00:30:16,450 即使你不知道 SQL注入攻擊手段。 601 00:30:16,450 --> 00:30:20,300 為什麼這個看起來有點腥? 602 00:30:20,300 --> 00:30:21,050 那是什麼? 603 00:30:21,050 --> 00:30:21,550 [聽不清] 604 00:30:21,550 --> 00:30:24,260 DAVID馬蘭:本或者是 有點懷疑。 605 00:30:24,260 --> 00:30:26,310 事實上,這是從SQL關鍵字。 606 00:30:26,310 --> 00:30:28,105 所以這不是一個好兆頭。 607 00:30:28,105 --> 00:30:29,980 一個事實,即有 所有這些單引號 608 00:30:29,980 --> 00:30:32,646 那裡 - 其實,一個最簡單的 如何打破某些數據庫 609 00:30:32,646 --> 00:30:35,880 是通過鍵入像O'Reilly的名字 一個其中有一個撇號 610 00:30:35,880 --> 00:30:38,600 因為如果人類是誰寫的 幕後的代碼 611 00:30:38,600 --> 00:30:41,570 沒有考慮到有 可能是單引號在用戶的 612 00:30:41,570 --> 00:30:45,060 輸入,和他或她正在使用 單引號中的代碼, 613 00:30:45,060 --> 00:30:46,040 不好的事情都可能發生。 614 00:30:46,040 --> 00:30:47,870 >> 事實上,更糟糕的是,考慮這一點。 615 00:30:47,870 --> 00:30:50,600 如果這是一次代碼 有人在哈佛歲月 616 00:30:50,600 --> 00:30:53,100 以前寫的腳 系統,注意什麼 617 00:30:53,100 --> 00:30:56,220 即將獲得取代 用戶名和密碼 618 00:30:56,220 --> 00:30:59,780 如果用戶在再次 skroob為他們的用戶名 619 00:30:59,780 --> 00:31:03,960 然後一,二,三,四,五, 報價或報價引文結束一等 620 00:31:03,960 --> 00:31:04,660 舉一個。 621 00:31:04,660 --> 00:31:07,220 並注意什麼鍵 這裡是用戶還沒有 622 00:31:07,220 --> 00:31:09,900 開始了他們的密碼或 其引腳與報價。 623 00:31:09,900 --> 00:31:12,610 而且他們還沒有結束它 用引號,因為他或她 624 00:31:12,610 --> 00:31:16,315 是假設如果 程序員就沒有那麼尖銳, 625 00:31:16,315 --> 00:31:18,690 他們將有那些 單引號中的代碼。 626 00:31:18,690 --> 00:31:19,860 >> 因此,這裡的代碼。 627 00:31:19,860 --> 00:31:23,820 和置換該 現在可能發生的事情是這樣的。 628 00:31:23,820 --> 00:31:26,350 我已經強調了什麼 用戶已鍵入英寸 629 00:31:26,350 --> 00:31:28,480 所以前,後。 630 00:31:28,480 --> 00:31:33,330 並注意什麼婉轉現在令人擔憂 關於這個SQL代碼的右半邊? 631 00:31:33,330 --> 00:31:36,300 這是一個稍微複雜一些,誠然, 比疑問,我們已經看到了。 632 00:31:36,300 --> 00:31:38,550 但是這不可能 是一個很好的事情,如果你是 633 00:31:38,550 --> 00:31:42,240 話說擇思达,這是選擇 一切從用戶的表 634 00:31:42,240 --> 00:31:46,630 其中username等於skroob和 密碼等於一,二,三,四, 635 00:31:46,630 --> 00:31:49,610 5或一等於1。 636 00:31:49,610 --> 00:31:53,860 什麼是邏輯蘊涵 那最後一句大概是? 637 00:31:53,860 --> 00:31:55,650 這只是總是如此。 638 00:31:55,650 --> 00:31:59,930 >> 那種因為我們已經猜到了 還是想通了,通過試錯 639 00:31:59,930 --> 00:32:02,760 程序員誰 寫這段代碼沒 640 00:32:02,760 --> 00:32:07,250 預測一個人或壞人 鍵入單引號為好, 641 00:32:07,250 --> 00:32:10,350 我們可以語法 完成SQL查詢 642 00:32:10,350 --> 00:32:12,260 帶著幾分無厘頭 但事 643 00:32:12,260 --> 00:32:15,930 在語法上是不正確 總是計算為true。 644 00:32:15,930 --> 00:32:19,130 因此,如果該代碼被用來回答 這個問題真的還是假的應 645 00:32:19,130 --> 00:32:22,930 該用戶被允許通過,則 答案永遠是顯然會 646 00:32:22,930 --> 00:32:26,930 是真實的,因為它始終會 以從數據庫中選擇的東西 647 00:32:26,930 --> 00:32:29,280 因為過程中的一個總是等於1。 648 00:32:29,280 --> 00:32:30,360 >> 那麼,有什麼解決辦法嗎? 649 00:32:30,360 --> 00:32:33,290 井PSET 7,我們實際上 避免這種情況都在一起。 650 00:32:33,290 --> 00:32:37,360 我們給你一個查詢功能,而且我們 鼓勵您使用問號 651 00:32:37,360 --> 00:32:40,430 作為佔位符,類似 在精神的printf的%S, 652 00:32:40,430 --> 00:32:43,710 但什麼是關鍵關於問號 在這裡,如果你真正閱讀過 653 00:32:43,710 --> 00:32:46,950 的functions.php,在那裡我們 查詢功能的實現, 654 00:32:46,950 --> 00:32:52,780 這些問號都逃了出來, 因此任何潛在的危險 655 00:32:52,780 --> 00:32:58,210 像單引號開啟 成轉義單引號。 656 00:32:58,210 --> 00:33:00,590 >> 因此,這是什麼 真正發生的事情,如果你 657 00:33:00,590 --> 00:33:04,850 使用CS50的查詢功能,或任何數量的 第三方免費庫 658 00:33:04,850 --> 00:33:06,000 這樣做。 659 00:33:06,000 --> 00:33:09,850 不會在這種情況下重要,在綠色, 如果用戶在一個單一的報價已輸入 660 00:33:09,850 --> 00:33:12,070 因為查詢 功能,我們寫的是 661 00:33:12,070 --> 00:33:15,120 會前添加反斜杠 任何此類危險的報價。 662 00:33:15,120 --> 00:33:17,360 因此,這是不是在 事實上,將是合法的。 663 00:33:17,360 --> 00:33:20,910 這就好比鍵入一個瘋狂的尋找 密碼這是當然的,不會 664 00:33:20,910 --> 00:33:23,490 要skroob的實際密碼。 665 00:33:23,490 --> 00:33:28,260 >> 因此,外賣的CS50是其中之一, 絕對是經常使用的東西 666 00:33:28,260 --> 00:33:30,860 像CS50的查詢功能 或底層庫, 667 00:33:30,860 --> 00:33:32,560 這恰好被稱為PDO。 668 00:33:32,560 --> 00:33:35,880 但從來沒有,從來沒有, 永遠不會做這樣的代碼 669 00:33:35,880 --> 00:33:39,472 不逃避或擦洗 正如他們所說的投入。 670 00:33:39,472 --> 00:33:42,430 你會在某個時候可能 遇到這樣的一些網站。 671 00:33:42,430 --> 00:33:46,060 事實上,它似乎是這種情況 像在機場和酒店的地方 672 00:33:46,060 --> 00:33:48,880 他們有免費的Wi-Fi 訪問,你必須登錄到, 673 00:33:48,880 --> 00:33:51,010 這些網站總是 可怕的實現。 674 00:33:51,010 --> 00:33:55,680 所以在家裡練習一種樂趣, 不是為了惡意目的或以上 675 00:33:55,680 --> 00:33:59,170 道路上的一個有趣的 運動,是只需要輸入 676 00:33:59,170 --> 00:34:02,850 一個撇號,單引號, 到一些網站上的表單 677 00:34:02,850 --> 00:34:03,810 看看會發生什麼。 678 00:34:03,810 --> 00:34:06,660 如果服務器崩潰或使 你某種錯誤信息, 679 00:34:06,660 --> 00:34:09,690 它很可能是 有人沒有預料到這一點。 680 00:34:09,690 --> 00:34:15,239 然後你應該提醒正確 當局並沒有進一步進行。 681 00:34:15,239 --> 00:34:20,843 >> 所以,現在你們應該有希望 點擊這裡了解更多的怪胎幽默。 682 00:34:20,843 --> 00:34:24,120 >> [笑] 683 00:34:24,120 --> 00:34:27,571 684 00:34:27,571 --> 00:34:29,070 DAVID馬蘭:你知道你是個怪胎。 685 00:34:29,070 --> 00:34:30,944 在接下來的幾個 年,你會記得 686 00:34:30,944 --> 00:34:33,520 誰的小鮑比表是 由於這部動畫片在這裡。 687 00:34:33,520 --> 00:34:36,760 所以記住這一點,因為我們 上下文切換是最後一次 688 00:34:36,760 --> 00:34:38,770 今天為JavaScript。 689 00:34:38,770 --> 00:34:41,600 我們花了比較少 時間對PHP的語法 690 00:34:41,600 --> 00:34:43,440 因為它實際上是 超級相似C. 691 00:34:43,440 --> 00:34:47,300 並很好地就夠了,太多的JavaScript 超類似C的語法 692 00:34:47,300 --> 00:34:49,639 還有我們會看到 只是一瞬間,當我們將 693 00:34:49,639 --> 00:34:51,205 看看本週晚些時候尤其如此。 694 00:34:51,205 --> 00:34:54,080 你可以用這種語言做了什麼, 雖然,所有的功能更強大, 695 00:34:54,080 --> 00:34:55,790 特別是原料藥。 696 00:34:55,790 --> 00:34:56,960 >> 但首先快速瀏覽。 697 00:34:56,960 --> 00:35:00,450 因此,人們在JavaScript中,有 沒有主函數,這是很好的。 698 00:35:00,450 --> 00:35:02,650 至於用PHP,你可以只寫代碼。 699 00:35:02,650 --> 00:35:04,310 情況是這樣的。 700 00:35:04,310 --> 00:35:07,100 和布爾表達式可能 這個樣子還是這樣。 701 00:35:07,100 --> 00:35:09,530 開關的存在,並且它們 可能是這樣的。 702 00:35:09,530 --> 00:35:10,970 四迴路這個樣子。 703 00:35:10,970 --> 00:35:12,390 while循環是這樣的。 704 00:35:12,390 --> 00:35:14,160 做消遣這個樣子。 705 00:35:14,160 --> 00:35:16,850 然後陣列的樣子 這非常類似於PHP。 706 00:35:16,850 --> 00:35:20,740 但是請注意,在你的JavaScript 聲明一個變量不與美元 707 00:35:20,740 --> 00:35:25,190 簽署,不與數據類型,但是從字面上 說VAR變量之前。 708 00:35:25,190 --> 00:35:27,900 它也是弱類型 在於它具有的類型, 709 00:35:27,900 --> 00:35:29,729 但你不顯式地聲明它們。 710 00:35:29,729 --> 00:35:31,520 而對於隨後的字符串, 例如,可能看起來 711 00:35:31,520 --> 00:35:34,350 這樣,該字符串 在這種情況下,被稱為第 712 00:35:34,350 --> 00:35:35,410 再一個目的。 713 00:35:35,410 --> 00:35:37,010 而這些,我們會看到更多以前長。 714 00:35:37,010 --> 00:35:41,470 和對象也許是一個 最常見的數據結構 715 00:35:41,470 --> 00:35:44,050 在一個基於JavaScript的 方案,因為它允許 716 00:35:44,050 --> 00:35:46,680 您可以任意關聯 鍵值對剛 717 00:35:46,680 --> 00:35:51,240 像PHP的關聯數組 而就像你自己的哈希表 718 00:35:51,240 --> 00:35:54,042 或嘗試為我們實施 在幾個星期前。 719 00:35:54,042 --> 00:35:56,250 因此,讓我們真正看到了什麼 我們可以用JavaScript做。 720 00:35:56,250 --> 00:35:59,410 特別是,這是 功能一籮筐 721 00:35:59,410 --> 00:36:02,300 該瀏覽器有 讓我們上鉤的JavaScript 722 00:36:02,300 --> 00:36:05,470 成以下述方式一個網站。 723 00:36:05,470 --> 00:36:09,340 JavaScript是經常被用來作為 客戶端腳本語言。 724 00:36:09,340 --> 00:36:10,130 它不會被編譯。 725 00:36:10,130 --> 00:36:11,370 它也被解釋。 726 00:36:11,370 --> 00:36:15,740 但是,與PHP,其中已經運行 在服務器上,在Web服務器中, 727 00:36:15,740 --> 00:36:18,220 或者是內心深處 客戶端的JavaScript 728 00:36:18,220 --> 00:36:22,190 是在於它不同 通常運行在瀏覽器中。 729 00:36:22,190 --> 00:36:26,060 >> 所以任何JavaScript代碼,你開始寫作 為PSET 8,或者你的最終項目, 730 00:36:26,060 --> 00:36:29,890 或者在現實世界中,通常會 保存在服務器上,絕對 731 00:36:29,890 --> 00:36:33,110 在一個點的HTML或點 JS的JavaScript文件。 732 00:36:33,110 --> 00:36:35,770 但瀏覽器會 下載的JavaScript 733 00:36:35,770 --> 00:36:39,530 碼到您自己的Chrome瀏覽器的情況下, 或IE或Firefox,或什麼的。 734 00:36:39,530 --> 00:36:43,870 和代碼實際上是要得到 你自己的瀏覽器內執行。 735 00:36:43,870 --> 00:36:46,560 只是為了讓這個更真實, 讓我們來看看這個的具體形式。 736 00:36:46,560 --> 00:36:50,120 >> 我們不知道這個代碼 沒有通過它真的讀。 737 00:36:50,120 --> 00:36:52,670 但是,讓我去Facebook.com 無需登錄。 738 00:36:52,670 --> 00:37:00,440 讓我去檢查元素和去, 比方說,網絡並重新加載頁面。 739 00:37:00,440 --> 00:37:04,150 我們將see--讓我轉變的刷新 頁面獲得所有的請求到新的。 740 00:37:04,150 --> 00:37:08,850 和的第一 文件我看到的是CSS,CSS。 741 00:37:08,850 --> 00:37:10,880 這裡的第一個 JavaScript文件,我有 742 00:37:10,880 --> 00:37:14,600 不知道這是什麼一樣,但在這裡 是一些JavaScript代碼 743 00:37:14,600 --> 00:37:16,180 驅動Facebook的。 744 00:37:16,180 --> 00:37:18,400 它甚至不是真的 揭示進行放大。 745 00:37:18,400 --> 00:37:20,260 它仍然是一樣荒謬。 746 00:37:20,260 --> 00:37:24,341 >> 但是你會看到,即使向下跌破,有 更是這些JavaScript文件。 747 00:37:24,341 --> 00:37:24,840 哎呦。 748 00:37:24,840 --> 00:37:25,440 這是一個平。 749 00:37:25,440 --> 00:37:28,550 讓我們往下走一點點 另外,進一步,還。 750 00:37:28,550 --> 00:37:29,894 還有一個。 751 00:37:29,894 --> 00:37:31,238 還有一個。 752 00:37:31,238 --> 00:37:31,880 還有一個。 753 00:37:31,880 --> 00:37:35,820 >> 因此,即使Facebook的,後面的 場景,被寫入在PHP部 754 00:37:35,820 --> 00:37:39,100 與Facebook的自己的版本物, 有大量的JavaScript的。 755 00:37:39,100 --> 00:37:41,330 事實上,任何一種 聊天你在Facebook上, 756 00:37:41,330 --> 00:37:45,520 任何內聯時間表更新 這是實時發生的,所有這一切 757 00:37:45,520 --> 00:37:47,944 是由JavaScript驅動。 758 00:37:47,944 --> 00:37:48,444 是嗎? 759 00:37:48,444 --> 00:37:50,235 >> 聽眾:我不知道 如果是這樣的Facebook, 760 00:37:50,235 --> 00:37:53,624 但我認為,Facebook開發 他們自己內部的代碼語言? 761 00:37:53,624 --> 00:37:54,540 DAVID馬蘭:他們做到了。 762 00:37:54,540 --> 00:37:58,110 所以這就是為什麼我說的方差 PHP的所謂嘻哈,他們實際上是 763 00:37:58,110 --> 00:38:03,440 添加的功能,以使得當 馬克首次實施的Facebook, 764 00:38:03,440 --> 00:38:04,710 它是用PHP編寫的。 765 00:38:04,710 --> 00:38:07,370 排序的,並一直保持 的前端語言的排序 766 00:38:07,370 --> 00:38:09,030 它們用於多 其編碼,但它的 767 00:38:09,030 --> 00:38:11,870 一直沒有語言的 擴展特別十億 768 00:38:11,870 --> 00:38:12,630 人。 769 00:38:12,630 --> 00:38:15,300 因此,他們都增加了自己 改進幕後。 770 00:38:15,300 --> 00:38:17,049 和它們使用任意數量 其他語言 771 00:38:17,049 --> 00:38:19,170 為各條 他們的基礎設施。 772 00:38:19,170 --> 00:38:24,080 所以,是的,這是一個變化 我們現在所知道的PHP。 773 00:38:24,080 --> 00:38:26,610 >> 因此,讓我們一起來看看 在一些例子 774 00:38:26,610 --> 00:38:28,890 對我們如何使用JavaScript在這裡。 775 00:38:28,890 --> 00:38:32,530 在今天的源代碼,我們有 一堆文件,其中第一個, 776 00:38:32,530 --> 00:38:34,090 讓我們叫DOM為零。 777 00:38:34,090 --> 00:38:36,770 所以DOM零如下所示。 778 00:38:36,770 --> 00:38:40,730 讓我進入這個目錄 開放domzero.html, 779 00:38:40,730 --> 00:38:44,970 其中的頂部具有一個文檔類型 聲明說:這裡來的HTML 5。 780 00:38:44,970 --> 00:38:46,440 現在這裡是一個HTML標籤。 781 00:38:46,440 --> 00:38:47,540 這裡的head標籤。 782 00:38:47,540 --> 00:38:49,210 下面是今天有什麼新鮮事。 783 00:38:49,210 --> 00:38:52,620 >> 我們現在有一個腳本標籤 內的頁面的頭部。 784 00:38:52,620 --> 00:38:55,290 而這顯然是不 很少,但是公告 785 00:38:55,290 --> 00:38:58,410 我已經定義了一個 腳本的腳本。 786 00:38:58,410 --> 00:39:01,050 和作為一邊,因為這 是一種常見的誤解, 787 00:39:01,050 --> 00:39:05,220 JavaScript有絕對沒有 做Java的語言 788 00:39:05,220 --> 00:39:08,010 有些人可能 已經學會了在APCS。 789 00:39:08,010 --> 00:39:10,480 它更多的是營銷 比什麼都重要的事情, 790 00:39:10,480 --> 00:39:12,980 以前騎的Java多年的燕尾服。 791 00:39:12,980 --> 00:39:17,300 但JavaScript的,無關 Java的,只是類似,並且同樣造成困擾, 792 00:39:17,300 --> 00:39:18,480 容易混淆的名字命名的。 793 00:39:18,480 --> 00:39:21,890 >> 因此,這裡是你如何聲明一個函數 在JavaScript中,從字面上說的功能, 794 00:39:21,890 --> 00:39:24,556 然後該函數的名稱, 那麼任何參數可能需要, 795 00:39:24,556 --> 00:39:25,530 就像在PHP。 796 00:39:25,530 --> 00:39:28,990 原來,在JavaScript中,最為1 存在煩人的功能是預警。 797 00:39:28,990 --> 00:39:31,392 這是一個小窗口, 會彈出並提醒您 798 00:39:31,392 --> 00:39:32,600 到一些信息。 799 00:39:32,600 --> 00:39:33,766 在它的一般皺起了眉頭。 800 00:39:33,766 --> 00:39:35,980 但是,我們將用它作為我們 這裡第一個練習。 801 00:39:35,980 --> 00:39:37,900 >> 注意:JavaScript的一些功能。 802 00:39:37,900 --> 00:39:41,524 單引號和雙引號 實際上並不重要了。 803 00:39:41,524 --> 00:39:43,690 單引號和雙 報價可以互換, 804 00:39:43,690 --> 00:39:46,220 而在C中,你必須使用 雙引號的字符串, 805 00:39:46,220 --> 00:39:48,150 你有兩個單 引用的字符。 806 00:39:48,150 --> 00:39:51,150 在JavaScript的世界裡, 很多人,大多數人 807 00:39:51,150 --> 00:39:54,970 周圍使用字符串單引號 只是因為它是一個風格的東西。 808 00:39:54,970 --> 00:39:58,330 但是,什麼是加號運算符在這裡, 這是我們以前從未見過的? 809 00:39:58,330 --> 00:39:59,836 >> 聽眾:串聯。 810 00:39:59,836 --> 00:40:00,960 DAVID馬蘭:級聯。 811 00:40:00,960 --> 00:40:02,450 所以C甚至沒有了。 812 00:40:02,450 --> 00:40:04,820 PHP具有點運算符, 它執行此操作。 813 00:40:04,820 --> 00:40:09,710 JavaScript有加號運算符, 而令人困惑的是Java一樣。 814 00:40:09,710 --> 00:40:11,440 現在,這是怎麼回事嗎? 815 00:40:11,440 --> 00:40:14,260 >> 所以,這裡的地方基本 那張照片的理解 816 00:40:14,260 --> 00:40:17,010 我們扔了一對夫婦 日前進場。 817 00:40:17,010 --> 00:40:19,620 還記得我們有一個簡單的 版本的HTML page-- 818 00:40:19,620 --> 00:40:20,830 它只是說,你好世界。 819 00:40:20,830 --> 00:40:22,770 然後我們畫了一棵樹 到右側,這 820 00:40:22,770 --> 00:40:27,320 有一堆矩形和線條 連接它們就像一個家庭樹。 821 00:40:27,320 --> 00:40:30,820 這就是所謂的DOM 或文檔對象模型。 822 00:40:30,820 --> 00:40:36,759 而事實證明,你可以訪問 在語法樹的矩形 823 00:40:36,759 --> 00:40:37,550 像下面這樣。 824 00:40:37,550 --> 00:40:41,370 你從字面上說的文件,這是一個 在JavaScript特殊的全局變量 825 00:40:41,370 --> 00:40:45,890 程序,它具有這樣的功能 與之相關聯,可以訪問 826 00:40:45,890 --> 00:40:50,280 類似結構,但你根本 說點,然後函數名, 827 00:40:50,280 --> 00:40:52,390 通過ID獲得的元素。 828 00:40:52,390 --> 00:40:55,460 >> 我想要得到的元素是 顯然報價所享有的名字。 829 00:40:55,460 --> 00:40:57,150 然後,我想它的價值。 830 00:40:57,150 --> 00:40:58,330 現在,我們正在超越自我。 831 00:40:58,330 --> 00:41:00,038 我甚至不知道什麼 這一切是什麼。 832 00:41:00,038 --> 00:41:03,000 讓我們快進到HTML上 的頁面,這是超級簡單。 833 00:41:03,000 --> 00:41:05,370 >> 我已經定義的通知 形成一個倒在這裡。 834 00:41:05,370 --> 00:41:07,940 請注意,我已經給它一個獨特的 ID,即使我們不使用 835 00:41:07,940 --> 00:41:08,870 此屬性之前。 836 00:41:08,870 --> 00:41:11,300 但是,這存在於HTML。 837 00:41:11,300 --> 00:41:15,570 你可以唯一地標識了一些大塊 的HTML像這樣的標識符。 838 00:41:15,570 --> 00:41:19,880 >> 請注意,現在this--原來的HTML 支持,每說籮筐 839 00:41:19,880 --> 00:41:22,490 剛才,一個整體 一堆的事件處理程序。 840 00:41:22,490 --> 00:41:25,060 而這個事件處理程序上說,提交。 841 00:41:25,060 --> 00:41:28,730 在用戶提交本 窗體,調用以下代碼。 842 00:41:28,730 --> 00:41:31,360 而代碼是怎麼回事 被稱為或執行 843 00:41:31,360 --> 00:41:35,260 正是這一點,希臘 隨後返回false功能。 844 00:41:35,260 --> 00:41:37,360 一切應 是相當熟悉的。 845 00:41:37,360 --> 00:41:42,050 >> 這裡是文本類型的輸入,其 的ID,在這種情況下,將是名稱。 846 00:41:42,050 --> 00:41:45,430 我們沒有一個實際的name屬性 這個時間 - 和一個提交按鈕。 847 00:41:45,430 --> 00:41:48,330 因此,所產生的頁面看起來是這樣的。 848 00:41:48,330 --> 00:41:52,890 所得的行為, 你會看到,看起來是這樣的。 849 00:41:52,890 --> 00:41:56,940 該頁面是本地主機說,你好 大衛,幾乎沒有一個美觀 850 00:41:56,940 --> 00:41:58,340 的方式來迎接用戶。 851 00:41:58,340 --> 00:41:59,950 但是,什麼是真正回事? 852 00:41:59,950 --> 00:42:01,360 >> 那麼,考慮這是什麼。 853 00:42:01,360 --> 00:42:02,310 這是一個文本字段。 854 00:42:02,310 --> 00:42:04,635 並根據 HTML在這裡,我已經給它 855 00:42:04,635 --> 00:42:07,350 一個唯一的標識符 所謂的報價所享有的名字。 856 00:42:07,350 --> 00:42:09,770 同時,我已經說過了,當 用戶提交此表單 857 00:42:09,770 --> 00:42:13,820 通過按Enter鍵或單擊Submit 按鈕,撥打叫迎功能 858 00:42:13,820 --> 00:42:15,410 然後返回False。 859 00:42:15,410 --> 00:42:16,870 讓我們考慮那些相反。 860 00:42:16,870 --> 00:42:20,590 請注意,當我點擊提交時, 當前頁的URL不改變。 861 00:42:20,590 --> 00:42:22,420 瀏覽器的圖標 未開始旋轉。 862 00:42:22,420 --> 00:42:27,050 我沒有去任何地方,這是 從字面上因為我說返回False。 863 00:42:27,050 --> 00:42:31,534 返回False短路或停止 窗體的默認行為。 864 00:42:31,534 --> 00:42:33,700 讓那麼留給我們 這最後一個問題。 865 00:42:33,700 --> 00:42:34,764 什麼是問候呢? 866 00:42:34,764 --> 00:42:36,680 好了,迎接顯然 調用一個調用的函數 867 00:42:36,680 --> 00:42:39,250 警報,通過在一個 長的說法是 868 00:42:39,250 --> 00:42:43,950 串聯起來的結果 一堆的子字符串,你好逗號分隔, 869 00:42:43,950 --> 00:42:45,810 那麼無論這個返回。 870 00:42:45,810 --> 00:42:51,490 因此,文件就像是一個全球性的 變量是樹的根, 871 00:42:51,490 --> 00:42:55,560 調用一個特殊的功能, 否則現在被稱為方法。 872 00:42:55,560 --> 00:42:57,650 一個函數,它是 內的一個變量是 873 00:42:57,650 --> 00:42:59,640 叫的方法,而不是一個函數。 874 00:42:59,640 --> 00:43:01,570 >> 因此,獲得了元素的ID。 875 00:43:01,570 --> 00:43:03,940 哪些因素你 希望通過它的ID來獲得? 876 00:43:03,940 --> 00:43:06,970 引用所享有的姓名和 那麼具體數值。 877 00:43:06,970 --> 00:43:12,000 所以,換句話說,代碼簡單 找到ID為名稱的文本字段 878 00:43:12,000 --> 00:43:13,380 然後獲取其值。 879 00:43:13,380 --> 00:43:16,460 所以,如果我要改變這 並說達文,而不是大衛, 880 00:43:16,460 --> 00:43:20,670 並點擊提交,現在我們 有一個問候的達文。 881 00:43:20,670 --> 00:43:22,890 >> 好吧,讓一切優秀和良好。 882 00:43:22,890 --> 00:43:25,480 但是讓我們看看我們能不能做 這一點,因為剛剛清洗劑 883 00:43:25,480 --> 00:43:28,190 編寫這樣的代碼是 一般會在被皺起了眉頭。 884 00:43:28,190 --> 00:43:30,060 這是要去看看可怕。 885 00:43:30,060 --> 00:43:32,330 但是,什麼是第一 你注意這裡的區別 886 00:43:32,330 --> 00:43:35,970 在這個版本中除了 名稱更改為DOM呢? 887 00:43:35,970 --> 00:43:41,110 什麼結構上看起來不一樣 這個相對於其他的? 888 00:43:41,110 --> 00:43:41,932 是嗎? 889 00:43:41,932 --> 00:43:43,890 聽眾:是的形式 現在的劇本之上? 890 00:43:43,890 --> 00:43:46,570 DAVID馬蘭:是啊,形式之上 的腳本,一些奇怪的原因。 891 00:43:46,570 --> 00:43:48,736 所以這是第一件事情 即跳出我了。 892 00:43:48,736 --> 00:43:50,990 謝天謝地,至少, 這部分是相同的。 893 00:43:50,990 --> 00:43:53,470 這樣看來唯一 有所不同的就是這個。 894 00:43:53,470 --> 00:43:55,296 >> 因此,這裡是什麼整潔 關於JavaScript 2。 895 00:43:55,296 --> 00:43:57,420 它使得它很難 了解乍看之下, 896 00:43:57,420 --> 00:44:00,670 尤其是對於最後的項目,如果 你看的代碼示例在線, 897 00:44:00,670 --> 00:44:04,200 但它歸結為一些 基本的句法特徵。 898 00:44:04,200 --> 00:44:06,230 這裡又是 全局變量的文件。 899 00:44:06,230 --> 00:44:09,540 這裡再次的是,方法或函數 上面寫著得到了ID的元素。 900 00:44:09,540 --> 00:44:11,570 這一次,我想 拿到所謂演示的ID。 901 00:44:11,570 --> 00:44:12,490 哪裡是? 902 00:44:12,490 --> 00:44:15,400 這顯然是正確的 在這裡,形式本身。 903 00:44:15,400 --> 00:44:20,010 >> 現在發現,顯然,如果我 取回從樹節點 904 00:44:20,010 --> 00:44:22,940 表示形式 本身,而不是一個文本字段, 905 00:44:22,940 --> 00:44:26,970 事實證明,形式,即 從樹節點或矩形, 906 00:44:26,970 --> 00:44:30,450 有什麼,我們會打電話給一個屬性, 非常,非常,非常相似 907 00:44:30,450 --> 00:44:35,390 在精神上要在C的結構這只是 這個矩形的內部數據成員。 908 00:44:35,390 --> 00:44:38,300 >> 所以,我有形式 在這裡,我安裝, 909 00:44:38,300 --> 00:44:44,650 或者我指定,其對提交 處理器或者更確切地說,在提交財產 910 00:44:44,650 --> 00:44:45,740 下面的函數。 911 00:44:45,740 --> 00:44:49,000 這是迄今為止,最瘋狂 事情至此語法。 912 00:44:49,000 --> 00:44:53,610 原來,在JavaScript中和 PHP,並坦言在C此事, 913 00:44:53,610 --> 00:44:58,990 即使我們不這樣做,你可以 添加無名,匿名,或者AKA拉姆達 914 00:44:58,990 --> 00:45:03,000 沒有一個名字的函數 但還是能夠調用。 915 00:45:03,000 --> 00:45:07,050 >> 那麼,我在這裡做的,我分配 這在提交屬性,它 916 00:45:07,050 --> 00:45:14,330 是我的DOM樹中的該節點的內部,一 函數,函數指針,如果你願意。 917 00:45:14,330 --> 00:45:16,310 該函數沒有 名字,但也不至於 918 00:45:16,310 --> 00:45:19,110 重要,因為我們將看到 在某一時刻如何調用它。 919 00:45:19,110 --> 00:45:21,780 當這個函數被調用, 這段代碼被執行,然後 920 00:45:21,780 --> 00:45:24,210 假的是就像之前交回。 921 00:45:24,210 --> 00:45:25,800 >> 但是請注意,我做了什麼。 922 00:45:25,800 --> 00:45:27,830 在這一點上,在 故事,我有一個表格。 923 00:45:27,830 --> 00:45:30,190 它有所謂演示一個唯一的ID。 924 00:45:30,190 --> 00:45:33,740 到這裡,我有一個腳本標籤 其執行以下代碼。 925 00:45:33,740 --> 00:45:37,720 它連接到該節點 樹它是在提交 926 00:45:37,720 --> 00:45:40,260 物業該功能在這裡。 927 00:45:40,260 --> 00:45:44,310 而剛剛通過的瀏覽器是如何工作的性質, 當我現在單擊提交或按Enter鍵, 928 00:45:44,310 --> 00:45:45,889 該功能將會被調用。 929 00:45:45,889 --> 00:45:48,680 它並不需要,因為誰名字 到底在乎它叫什麼。 930 00:45:48,680 --> 00:45:52,540 它永遠會得到的唯一一次 所謂的是,當我提交表單。 931 00:45:52,540 --> 00:45:55,130 有沒有必要對我來說, 人類的開發, 932 00:45:55,130 --> 00:45:57,330 真正把它叫做任何其他地方。 933 00:45:57,330 --> 00:46:00,720 >> 現在,就像一個玩笑話,好像這就是 不介意彎曲不夠, 934 00:46:00,720 --> 00:46:03,330 我們甚至可以這樣 看起來更神秘使用 935 00:46:03,330 --> 00:46:05,850 一個超級流行的庫稱為jQuery的。 936 00:46:05,850 --> 00:46:08,760 事實上jQuery和JavaScript的 經常混為一談。 937 00:46:08,760 --> 00:46:12,790 而我們要做的就是週三開始 使用這種語言,這些庫 938 00:46:12,790 --> 00:46:16,030 建設日益異步 和動態應用 939 00:46:16,030 --> 00:46:18,950 像圖讓 應用程序,應用程序 940 00:46:18,950 --> 00:46:22,360 即實​​時更新的網頁 時間,就像Facebook或谷歌聊天軟件 941 00:46:22,360 --> 00:46:27,130 這樣做,並且不再把自己局限在 通過一個GET或​​只是擊中後提交 942 00:46:27,130 --> 00:46:27,630 孤單。 943 00:46:27,630 --> 00:46:29,055 所以,我會看到你在週三。 944 00:46:29,055 --> 00:46:31,805 945 00:46:31,805 --> 00:46:35,550 >> [音樂播放] 946 00:46:35,550 --> 00:48:09,728