>> 漢娜布隆伯格：大家好。
我們將開始 短短幾分鐘的早期
因為我們有一大堆 材料打通。
我是漢娜。
我是一個TF。
瑪麗亞將要加盟 我們在短短的幾分鐘。
她右側前教節。
我教的部分權 之後，所以我們要
把它存到一個半小時​​。
>> 所以你會看到在這裡，我們有很 幾個主題，我們需要打通，
因此我們將快速去一點點。
但是，如果在任何時候，我們說些什麼 太快或者你不明白，
隨意中斷與問題。
我們希望能夠使這一個 審查會議是有益的各位
越好。
真棒。
>> 因此，讓我們直接與 有些話題，我們實際上
非常非常簡要介紹了 測驗0的測驗0審查會議。
所以先從鍊錶。
因此，只要確保你有一些 關於鍊錶的基本知識
並在方便執行 一些基本操作的。
>> 因此，只要審查，鏈接 列表比數組更好
因為它們可以動態地增長。
因此，我們有一個巨大的優勢。
我們已經看到了他們使用 在哈希表的時候，我們
不知道到底有多少 我們將事情想
插入到我們的數據結構。
不幸的是，我們有件 鏈接目錄上的內存，
所以我們不一定會 能夠做到一定的時間訪問
到在該鏈接的表的任意元素。
為了找到一個 特定的元素，我們
必須遍歷所有的 從一開始的方式。
所以，請記住，大部分 基本操作是1歐米加。
所以插入只是要取1。
刪除是要取n，因為我們 必須去從列表中找到它。
而搜索可以採取，在最壞的情況，正。
我們不能做這樣的事情 上鍊錶二進制搜索
因為我們不能只是 隨機跳躍到中間。
涼。
真棒。
>> 成堆的一點點。
這又來了個測驗0，那麼你 應該是超級舒服。
但是對於棧，我們請你 記住一摞托盤。
而且這將是先入後出。
因此，我們疊的事情了 在紙疊，然後
如果我們試圖採取一些 off--我們稱之為突然離開
在stack--我們來頂掉。
如果我們想要把東西 在堆棧中，我們把它推。
所以它總是會被成長 從像堆疊托盤的底部。
真棒。
>> 我們已經看到了堆實現 既鍊錶和數組。
如果你正在實施 數組，你想
以確保保持跟踪 的大小和容量。
這樣大小將是當前 物聯網的籌碼數量，
而容量是總數 事情你可以存儲在您的堆棧。
涼。
>> 非常相似，我們有隊列。
在這種情況下，代替考慮 一摞托盤，認為一行。
這將是第一個先出。
所以，如果你正在排隊等候 東西在商店，
我們希望這個人首先在 線將被第一幫助。
>> 與其說推及 流行像我們這樣的堆棧，
我們只說入隊和出隊。
再次，如果你是 以與陣列實現此，
我們需要跟踪 不僅大小
和容量，而且頭，這 將是我們的隊列的前面。
涼。
在任何的任何問題嗎？
真棒。
運動沿著正確的。
>> OK，哈希表。
在此處，它開始 得到真正有趣。
所以一個哈希表是一個實施 一個關聯數組中。
所以基本上發生了什麼 是我們這一切的投入，
我們給它一個散列 功能它說，
OK，這就是在 哈希表它屬於。
>> 所以，最簡單的散列函數 我們已經看到的只是說，
好吧，假設我們希望把 在我們的哈希表的字符串。
而一個非常簡單的想法 可能是說好，
讓我們只用排序 這個詞的第一個字母。
所以，你可以在這裡看到，我們採取的香蕉， 我們把它通過一個散列函數，
它說，嘿，這 應該去索引1。
>> 所以，我們基本上可以認為散列 表作為一群不同桶。
而且每個桶是怎麼回事 持有的一個鍊錶的頭部。
而在這鍊錶，我們可以 居然把不同的數據塊。
>> 更使潛水一點點 成散列函數，這裡的
這個例子我只是 說明了我們剛剛說的，
OK，取第一個字母 這個詞和我們
將它整理成桶。
所以大概就會有26桶， 一個用於每個字母。
為什麼不是一個很好的散列函數？
是什麼讓這個不理想？
是啊。
>> 聽眾：你會 有衝突。
>> 漢娜布隆伯格：是的，沒錯。
你將有碰撞。
所以這是一件事。
我們將討論我們如何能夠 解決衝突，在短短一秒鐘。
與此另一個問題 特別是哈希函數
是我們的不同 水桶將要
漂亮截然不同的大小。
>> 我們知道，有一大堆 更多的單詞開始與比X，
所以我們將有很 不平衡的水桶在我們的哈希表。
涼。
所以是的，讓我們回到 點碰撞。
我們該怎麼辦，如果有衝突？
>> 我們有幾個不同的選擇。
所以之一，所以假設我們正在努力 把漿果到我們的哈希表。
而且我們看到，哦，我們要 把它放在索引1，
但香蕉已經住在這裡。
我們會做什麼？
我們有兩個主要的選擇。
>> 排名第一的是我們可以說，OK， 有沒有空間索引1，
但是讓我們只是不停地翻翻 直到我們可以找到另一個空位。
所以我們會說，好吧， 讓我們把它點3。
這是一個選項。
這就是所謂的線性探測。
>> 而第二個選項是說，好了，好了， 我們只是讓這些水桶
是鍊錶的頭。
而且它是確定的，如果有更多的 比水桶的一件事。
我們只是要 追加它推上前台。
所以在這裡你可以看到，OK， 當我們插入的漿果，我們
只是把種香蕉， 推了一點點
，並在那裡扔了漿果。
而這也完全罰款。
這就是所謂的分離鏈。
你可以認為這作為一種像 首腦數組鍊錶。
哈希有任何疑問 表，哈希函數？
真棒。
>> 樹木和嘗試。
所以一棵樹是任何種類的 的數據結構的
其中有某種 層次或某種
的排名你不同的對象。
而這將成為超 清晰的，當我們看一個例子。
而我們看到的嘗試，以及 用哈希表，在pset5--
這又完全公平的遊戲 這quiz--作為另一個數據
結構我們可以 存儲不同的東西。
在字典中的情況下， 我們存儲了一堆話。
因此，讓我們來看看一些樹木。
因此，這是一個樹的一例。
它具有一種結構， 該分層結構中，
在這裡你可以看到， 在上面這1個節點
具有以上職級2和3某種形式， 這是上述4，5和6和7，
這是上述圖8和9。
所以，這就是我們所說的一 樹，這樣你就可以正中下懷
畫面這在你的腦袋。
>> 現在，我們有幾個 更專業化的樹木。
這樣的一個例子是一個二叉樹。
而一個二叉樹， 再次，只是要
數據結構與某種 層次結構，但是每個節點
最多可以有兩個孩子。
這就是這個詞二進制從何而來。
因此，這是一個二進制樹的一例。
所以這是一個小類別的樹木。
>> 現在，讓我們更具體， 談二trees--二進制搜索
樹木，而不是。
因此，這裡的想法是不僅不 每個節點最多有兩個孩子，
但所有的孩子去的 左側將是較小的
和所有的孩子都到了 正確的將是更大的。
因此，通知只是我們 二叉樹，有
數字之間的關係。
但是，在我們的二進制搜索 樹，我們看到了，好了，下面是44。
而每號44的左邊是 體積更小，一切的權利
就越大。
>> 和保持在每個 樹的水平。
所以在這裡，這是小於 22，這是比22大。
而這二叉搜索樹。
為什麼我們認為這就是所謂的 二叉搜索樹？
它想起了什麼算法嗎？
聽眾：二進制搜索。
漢娜布隆伯格：二進制搜索。
因為如果你正在尋找一個 在這棵樹特定數目，
在每一點上，你可以敲 樹，這是偉大的了一半。
所以那將會給我們的東西 看起來很像二進制搜索。
任何問題？
好吧，冷靜。
>> 好吧，嘗試。
大家的喜愛。
因此，這是該示例 我們已經看到了一堆類。
再次，這是另一種 我們可以存儲數據的方式。
在字典中的情況下，再次， 這只是將是字符串。
因此，讓我們看看這實際上 看起來像在稍低的水平。
>> 因此，讓我們一起來看看 在字典樹的一個節點。
而且我們看到，OK，有是怎麼回事 是一個布爾和節點，
的指針的節點。
而我們看到， 布爾被稱為is_word。
所以基本上，這是 要對應
這些小三角這 說，如果你在這裡得到，
你發現了一個完整的單詞。
>> 我們知道，“圖靈”過 這裡是一個完整的字，
而只有T-U-R是不發一言 因為我們沒有看到那個小三角。
而那個小三角，再一次， 對應於該is_word，
此布爾is_word。
然後我們有孩子的數組。
所以在每個級，則 有一個特定節點，
並且該節點指向一個 陣列整個字母表。
>> 所以你可以看到，同樣， 在此picture--我
要保持跳回來， forth--，這一陣列頂部
有一堆不同的 節點即將關閉它。
它有26個，或27，如果你想 包括一個多餘的字符。
這給了我們一個 方法來存儲我們的數據
在可以看著一個方式 你可以查找超快速。
什麼是查找時間為線索？
>> 聽眾：[聽不清]。
>> 漢娜布隆伯格：是的。
從理論上講，它的恆定時間。
它一定會成為大小 您要查找的單詞。
即使我們增加了無限 更多的話我們的線索，
它不會帶我們 任何更長的時間才能確定
如果一個給定的字是在線索。
所以這是非常好的。
>> 聽眾：您剛才 初始化數組？
你錯過了一個或兩個點。
你能不能說說 對於第二？
>> 漢娜布隆伯格：當然，絕對的。
好問題。
問題是，我們 有一個數組的
將有節點明星作為 而不僅僅是節點，對不對？
涼。
所以在這裡我們在說什麼 是我們陣只是
將是指向其他數組。
因此，它的essentially--它種 感覺就像一個鍊錶以這種方式
其中每個這些兒童 只是點到下一個節點。
>> 和的方式，我們 實際上是決定了，嘿嘿，OK，
我們已經經歷了一個完整的迭代 一句話，就是這個字在字典中，
我們只要檢查該is_word。
大的問題。
是啊。
聽眾：OK。
那麼，什麼是運行時間為線索？
>> 漢娜布隆伯格：當然。
因此，運行時為線索的 查找將是恆定的時間。
所以它只是將是 在單詞的字母數。
它不依賴於 字典的大小
或數據結構的大小。
所以這裡有一個稍微簡單的例子。
>> 在這種情況下，你可以看到， 字蝙蝠是在詞典
你有變焦，但你 沒有像動物園。
如何將我們做的動物園？
我們如何加入動物園我們 字典，我們的線索？
是啊。
>> 聽眾：請is_word 真正的[聽不清]。
漢娜布隆伯格：好。
所以我們會說Z-O-O，然後我們會 要檢查了該框為好。
大。
讓我們非常簡要地比較 試圖與哈希表。
嘗試是真正偉大 因為，正如我們所說，
他們提供恆定的時間查找。
但巨大的劣勢 是他們堆積如山。
你可以得到的感覺， 甚至看它，
它要採取 大量的內存。
因此，他們將是多少 大於哈希表，
但他們打算給 我們更快的查找時間。
這就是那種你 權衡，你關心什麼，
無論是速度還是內存。
在任何的任何問題， 所有的C數據結構。
美麗。
好。
我們將進入到一個小 Web開發與瑪麗亞位。
MARIA ZLATKOVA：可愛。
好。
>> 漢娜布隆伯格：你可以用我的筆記本電腦。
>> MARIA ZLATKOVA：好的。
嗯不錯。
正如我們現在轉移到網絡 發展，我們談了一點
有關更改權限 文件和目錄
以便它們可以被訪問 其他用戶，走向世界，
所以，我們可以看到 基本上我們可以傳達他們
當我們開發像網站 我們已經大多被做。
>> 因此，我們看到了chmod命令， 這是改變模式，基本上是這樣。
這是一個Linux命令和 它改變了訪問權限
的文件系統對象。
和文件系統對象是 只是一個目錄，文件，
什麼，你可以 更改的權限。
>> 所以看到文件的權限， 我們輸入ls命令，列表，-l。
當我們鍵入我們 平時看的一些權限
看起來有點像這個 在目錄名的前面。
因此，D表示目錄。
然後我們有三個 黑社會基本上
指代的權限 一個用戶，一個組，或世界。
>> 權限的類型，我們可以 對這些三組人
要么是r代表讀，W代表 寫，x代表執行。
我們可以有那些 本集團與世界。
棘手的是，有時 當我們鍵入chmod命令，
我們會輸入一些數字 這包括三位。
因此，我們可以做的像 777和基本
所指的附加價值 這些黑社會的
因為R.將參考4，W會 指2，且x要提到1，
因此，當相加，每個號碼 會回落到一個累計數
以0到7之間的累積值。
所以，我們也可以有0 在所有沒有權限。
這將基本上給我們 該權限或者用戶，
的組，或世界。
在這個任何問題這麼遠嗎？
>> 聽眾：你說讀了4？
MARIA ZLATKOVA：是的。
聽眾：[聽不清]。
漢娜布隆伯格：是的。
聽眾：再加入所有 其他人則表示你的電話號碼。
MARIA ZLATKOVA：是的。
是啊。
這些都是很大的問題。
可愛。
接下來，我們跳進HTML和 更多有關Web開發位。
因此，HTML只是手段 超文本標記語言。
那就是標記 語，是一個標準
即它被用來製作網頁。
>> 這就是所謂的標記語言 因為它實際上沒有編制。
這並不是說一些代碼應該如何 執行或類似的東西。
它只是界定和 描述了一個網頁
頁面應設置 與它的每個元素
以及他們如何應該給用戶。
>> 一些HTML標籤，我們 走到有以下幾種。
我們所有的HTML文檔 開始使用DOCTYPE HTML。
然後，我們總是有html標記。
我們有一個頭部和主體。
而且，重要的是HTML有 這種嵌套結構
因為它是很清楚的。
然後，它變得很清楚，當我們 需要打開和實際關閉的標籤。
而我們總是需要關閉 我們已經打開的標籤。
>> 在這裡，我們有一些類型的 超前的事情，我們希望有。
因此，我們有，例如， CS50的稱號。
然後我們實際上 可以鏈接樣式表
它定義如何樣式我們的網站。
這是CSS。
我們將去在它的 接下來的幻燈片以及。
>> 在人體中，我們設置 一些類和ID。
而作為一個提醒，一次， ID是唯一和類
可以分配給多個項目。
而這只是意味著 我們可以使用類和ID
內的其它structures--所以，對於 例如，在CSS文件或樣式
sheets--提及特定元素 基本上說，我們想要的風格
或者設計一些元素 在一些特定的方式。
我們稱它們通過 他們的ID和班級。
而且我們也可以指 通過標記不同的東西為好，
但ID和班級只是給我們一些 多功能性和具體是什麼我們
想參考。
>> 所以，只是一個例子。
我們可以再次內 一個CSS文件，我們
要定義一些 style--這樣的顏色，字體，
和類似的東西that--我們可以 定義樣式的身體。
因此，這將定義它 整個身體標記。
但是，我們也可以定義 風格的#title。
再次，包括hashtag是指我們 ID和點指的是我們班的。
>> 然後為.INFO，我們 還可以設置一些屬性。
再次，當我們回去，我們有我們的 類調用的信息和我們的ID稱號。
我們可以看到，我們參考 給他們#title和.INFO。
聽眾：你會說 井號 [？採納我？ ？]
MARIA ZLATKOVA：對不起？
聽眾：你會說 井號 [？採納我？ ？]
MARIA ZLATKOVA：包括hashtag 裝置ID，因此#title
指的是什麼元素 這個ID叫做稱號。
然後將點是指一類。
因此，.INFO是指該元素 因為它具有類信息。
對。
>> 聽眾：你為什麼 區分它們在HTML？
為什麼這麼說有些事情是 ID和某些事情是類？
瑪麗亞ZLATKOVA：這只是達到你 -
漢娜布隆伯格：重複的問題。
MARIA ZLATKOVA：哦，對不起。
我們為什麼要區分某些元素 作為ID和其他元素如類？
這只是因為它是 真的經常設計選擇。
它給你很多 多功能性是
可以說，我想這個特定項目 因為他們希望能有這個ID
做了很多的事情 有了它，我只
要定義一種風格，某種風格 或顏色無論該項目。
而辦法做到這一點 只是給它一個ID。
>> 然後，如果我想有 幾個不同的項目
具有，而不是 去和設置their--
而不是通過這樣做 標籤，因為標籤會
設置單元格為整個標籤 對於每一次的標籤時，
你可以設置一個類的多個項目。
然後就是訪問類，並說 我想這個樣式類的方式。
>> 再次，這個類可以 是多個不同的項目
和ID必須是唯一的。
大的問題。
其他問題嗎？
OK，真棒。
再次，這是這些選擇器如何 在CSS中引用，與包括hashtag，
與點，或沒有任何東西 分配一些標籤的風格，
狀體。
在這裡，我們有通用 這是如何實現的語法。
>> 要重複一些最佳 對HTML和CSS的做法，
我們需要再次關閉所有 我們打開HTML標記。
而我們推薦您 為你的最後的項目，
以及為CS50金融，就是讓 確保所有的HTML驗證。
而這樣做了與W3驗證。
>> 然後呢，我們沒有和 我們建議這樣做
是分離式的，所以 CSS從HTML標記。
因此，涉及到如何什麼 你的頁面會在視覺上看起來
以及它如何會被修改 應該進入一個CSS文件。
然後你的標記說怎麼會事 是在相對於彼此是HTML，
這應該進去 你的HTML文檔。
任何問題？
MHM。
>> 聽眾：究竟是怎麼回事 在與頁面驗證
當我們驗證 [聽不清]創建的HTML？
>> MARIA ZLATKOVA：所以what--想你。
那麼究竟是怎麼回事 與頁面驗證
為什麼我們需要做的是什麼？
基本上，我們需要做的 因為很多時候，您的瀏覽器，
如果你不關閉一個標籤 或類似的東西，
您的瀏覽器仍然會 呈現一個頁面，可能仍然工作，
但它是最好的做法，以確保 你再次關閉所有的標籤，
您的所有元素 它們應該是這樣，
基本上，它是由 所預設的約定。
>> 這，再次，只是一個 的事情，你應該
要學習做， 相對於具有
更模糊代碼之類的東西。
是啊。
噢對不起。
我還以為你養你的手。
聽眾：不，我只是[聽不清]。
>> MARIA ZLATKOVA：OK。
>> 聽眾：謝謝。
>> MARIA ZLATKOVA：當然，謝謝。
如此反复，馬上就要到如何 信息被傳
和通信模型 傳送信息。
的TCP / IP。
TCP只是意味著傳播 控制協議和IP
指互聯網協議。
而這僅僅是指 數據的方式被遞送。
>> 如果我們有一些數據 需要輸送到你 - 如此
你為某個服務器的請求。
例如，當我們 嘗試訪問cs50.net，
我們提出要求 在CS50服務器與我們
看到我們想要得到 這類信息。
然後基於該協議 這個信息是如何傳遞，
服務器對信息 回到我們的客戶端。
然後我們可以查看 的信息的頁
然後用它。
>> 於是超文本傳輸協議 只是另一種協議或一組
公約的定義如何 web瀏覽器和web服務器
應該溝通。
並把所有這一切 一起，HTTP，再次，
只是定義了這個超界定 由我們一直在它的HTML，
應該如何交付給你， 如何被傳遞到你的數據
得到你。
>> 這就是為什麼，如果你們還記得 從一個類，我們有很多的請求
我們有很多語法 對於這些要求，我們是
要去了現在。
如此反复，當我們發送 一請求到服務器，
我們必須定義一個幾件事情。
因此，我們需要找到的類型 的要求，我們正在設置。
再次，我們有，例如， GET是一種方法，
我們有我們的要求。
>> 然後HTTP / 1.1僅僅是 我們目前使用該協議。
大部分時間，那將 以我們正在使用的協議。
所以，如果你有一個問題 像你的測驗。
這是該公約 我們有這麼遠。
>> 反斜杠指的是什麼樣的 事情我們請求。
然後，我們的主機是，例如，在這 情況下，我們試圖去到google.com。
所以這是一個主機的值。
這是一種類型的請求 可能被發送的。
>> 然後某種響應可能 被發送，再次，根據該協議，
再次，HTTP / 1.1。
所以這一次的HTTP版本。
200行僅有的狀態代碼。
而這行只是一個短語 基於該狀態碼。
>> 然後將內容類型 指型
即返回給你，是 對您收到該網頁
和您的瀏覽器 可事後渲染。
這是text / html的。
>> 聽眾：什麼是1.1是什麼意思？
>> 瑪麗亞ZLATKOVA：這僅僅是 版本of--哦，這是什麼意思1.1？
這僅僅是個版本中，HTTP 版本，我們正在使用的協議。
大的問題。
其他的問題嗎？
>> 聽眾：你能否總結 內容類型真正的快？
>> MARIA ZLATKOVA：所以這 是服務器。
information--的類型是什麼 內容類型是問題。
所以這是類型 那你回來的信息
從服務器的類型 數據，瀏覽器然後可以
使你使用。
聽眾：難道這就是這 協議是在告訴你做什麼？
MARIA ZLATKOVA：對不起？
聽眾：那是什麼樣的協議說什麼？
MARIA ZLATKOVA：本p​​rotocol--
聽眾： - 什麼的 內容類型是或what--
MARIA ZLATKOVA：該協議是基於 on--什麼是協議告訴你？
這是現在的樣子 這一信息
被送到您根據 在什麼樣的協議
該信息得到 交付還給你。
這是否有道理樣的？
漢娜布隆伯格：你 能想到的協議
作為A--我覺得教授 馬蘭形容它
在課堂上那種像A--這就像 人類握手的等價物。
說，喜歡，嘿嘿，我的請求，我 知道如何處理的1.1版本的HTTP。
然後在服務器說 哦，好吧，我 - 和同時存在。
我也知道如何處理HTTP / 1.1。
我想給 你背一些內容。
在這種情況下，它將會 為text / html類型的。
因此，這只是一種方式 他們的communicating--
>> MARIA ZLATKOVA：這只是 確認你
兩個按照相同的 協議和兩個
在客戶端和server--所以 您的瀏覽器和server--
那種知道你在做什麼 談論，並有
會議傳遞數據。
>> 聽眾：所以內容類型part-- 內容類型的文本/ html--那
同一消息的一個單獨部分？
或者是讓我們說，200的一部分嗎？
200是否告訴他們或is--
>> MARIA ZLATKOVA：200說明了一切去確定。
然後，內容類型為形式的 同一消息的單獨部分，
並說了一句讓我 返回的有這種類型text / html的。
它只是提供更多的信息。
有什麼補充？
好。
>> 在這個沒有其他問題？
真棒。
因此，一些其他HTTP狀態的 我們可以得到除了200 OK，
那些我們所看到的可能 可能很多是403和404。
所以404，如果你想 不存在訪問的東西。
因此，例如，在你的 CS50財務pset時，
如果你已經被渲染quote.html 而你沒有這個文件，
而是你有quote.php，即 將導致404未找​​到
因為該文件可能不存在。
>> 對於一個403禁止的，這 指的權限。
因此，如果某些文件不是由可讀 世界中，你可能會得到一個403返回。
有些人認為你可能 get-- 301，永久移動;
302，找到; 304，修正; 400，錯​​誤的請求;
和然後內部服務器錯誤 500和503，服務不可用。
是。
>> 聽眾：我們會預期 記住所有這些狀態？
瑪麗亞ZLATKOVA：我會 他們在你的備忘單。
[笑聲]
聽眾：我們預計 知道什麼觸發每一個？
MARIA ZLATKOVA：是嗎？
漢娜布隆伯格：對於那些我們已經 運行into--這樣的問題was--
MARIA ZLATKOVA：他們有望 知道這些情況了每個
代碼可能會被觸發？
因此，對於我們已經使用的那些 跑進，我會說，是的。
因此，我們肯定看到200 確定在pset中演講了。
我們已經看到了403，404。
對於其他的呢？
>> 漢娜布隆伯格：我 500說似乎是公平的遊戲。
>> MARIA ZLATKOVA：500，是的。
>> 漢娜布隆伯格：是的。
只要有一個一般意義 是什麼使他們。
而且也只有這些 名字，你可以種
就像讓一個受過教育的猜測 什麼實際造成他們。
例如，將永久，大概 該文件已被永久移動。
>> 聽眾：但在以前的 考試中，有一個如此
你怎麼指望我們回答這個問題？
>> 漢娜布隆伯格：那 值得零分。
在茶壺上418的問題 在技​​術上是一個HTTP狀態，
但它是值得零分。
很顯然，你不 預計認識他們。
>> 聽眾：這是一個真實的？
>> 漢娜布隆伯格：這是一個真正的 之一，但它並不意味著什麼。
這只是一個玩笑。
互聯網讓人感到滑稽。
>> MARIA ZLATKOVA：大問題，球員。
其他問題嗎？
>> 聽眾：什麼是內部服務器錯誤？
MARIA ZLATKOVA：內部 服務器錯誤只
意味著你已經 無法溝通
與服務器的某些原因。
因此，它不一定 一些已經做的
與客戶端或類似的東西。
我不知道任何特定的實施例的 我們已經討論了解釋，
但是，是的。
>> 漢娜布隆伯格：當然。
因此，例如，像我們 說你正在處理混搭
而谷歌的服務器停機一段 因此，停電，讓我們說。
這將是一個內部服務器 錯誤或某種of--喜歡你
不會得到響應。
>> MARIA ZLATKOVA：是的。
這只是當你 無法溝通
與服務器出於某種原因，因為 它的下降或其他一些原因。
所以跳進PHP。
PHP，不像HTML，是一個 編程語言。
我們開始使用它，因為它是 非常有用的Web開發。
>> 我們首先用它在CS50融資。
它基本上可以幫助我們把 同時該標記，設計，
以及我們如何實際使用信息 要在網頁上顯示的東西。
所以PHP本身就意味著PHP 超文本預處理器，
所以這是一個遞歸backnorym本身。
開放標籤PHP，我們左 並用問號右箭頭
和PHP。
>> 因此，我們已經看到了一堆了。
現在，我們只是走了過來 一些關於它的基本的東西。
綜上所述，使用PHP，變量 名稱以美元符號。
我們沒有指定，再次， 變量類型了。
就像我們用C做了， 我們不需要這麼做。
>> 我們可以做很多不同的 東西與變量。
我們可以把它們放在一起 通過將它們
用點符號，這 我們不能用C做了。
再次，我們有更多的靈活性 同的變量方面的PHP。
再次，我們沒有一個主要功能。
>> 而PHP解釋 相對於編譯
因此，只要我們如何做沒有為C文件， 我們沒有這樣做，為PHP。
而是，該方法的語言 由本身運行，則將其解釋。
然後鬆散類型 只是意味著我們
不必指定一個可變 類型和變量類型
理解在運行時。
>> 聽眾：但你是怎麼 由點串聯的意思嗎？
MARIA ZLATKOVA：當然。
當我們想要把東西together-- 所以，如果我們有一些變量
具有3的值，我們有另一個 變量有字符串的值，
我們可以把這些變量一起 通過把一個點在它們之間
和連接它們。
或者，我們可以創建一個 變量調用名
並把它在一起 連接兩個字符串。
>> 所以，如果我們有一個字符串用雙 報價和我們把一個點後，
然後我們有另外的字符串， 將共創一個字符串。
>> 聽眾：OK。
MARIA拉脫維亞：是清楚了嗎？
聽眾：是的。
MARIA ZLATKOVA：OK。
是。
>> 聽眾：當你說 解釋而非編譯
你在說什麼你不 需要是作為特定時
它涉及到PHP對C？
MARIA ZLATKOVA：當我們說 解釋，而不是編譯
是什麼呢？
這樣就意味著我們並不需要 可執行文件運行PHP。
這意味著它運行自有其道理。
那有意義嗎？
多一點。
漢娜布隆伯格：所以你 能想到的解釋
作為另一方案，是負責 通過PHP一行去一行
而實際執行它，而不是 在編譯了這一切為二進制。
實際上它並不意味著什麼 我們如何具體需。
我們仍然需要精確，並且不 忘記了分號，並確保
你有你的美元符號， 之類的東西。
好問題。
>> MARIA ZLATKOVA：是的。
因此，一行行，因為 反對與C文件，
我們必須讓整個決賽 之前，我們實際上可以運行它。
這是主要的區別。
但同樣，我們不能 真的那麼具體。
因此，在PHP數組代表 實際上是一個有序圖。
>> 所以數組準值的鍵。
這兩種方式申報 陣列，基於該語法，
我們可以更加明確 在說我們有一個數組
我們有這個鍵1映射到 這個值1，密鑰2映射值2。
或者我們可以創建一個數組 包含該值本身
然後鍵是 理解的方式。
在這個有問題嗎？
>> 聽眾：會是什麼鍵 在第二個例子嗎？
0，1，2，3→
>> MARIA ZLATKOVA：例如，它只是 在此按鍵不一定
做出改變。
他們只是定義你怎麼能 用它裡面的值。
所以，如果我們有一個foreach 循環在PHP中會
讓我們走過所有的值， 我們可以通過所有的值，
即使我們有或沒有定義 內的網站的特定鍵
以前的語法。
>> 因此，即使這種 陣中，我們仍然可以
有一個foreach循環 是經過各
在陣列中的關鍵值。
所以在foreach的語法 循環中，我們先從一個數組。
這$ ARR變量是我們實際的數組 我們在上一張幻燈片定義
作為值，從字面上去 通過每個值，
不管是否 我們有一個鍵或不。
然後我們可以做一些與 foreach循環內的值。
如此反复，如果我們有一個數組 像這樣在這裡created--
所以我們有foo和價值的關鍵 酒吧，巴茲的關鍵和qux--的價值
我們可以有一個foreach循環 經過數組作為鍵值
然後做一些事情 用鍵和/或值。
但是，我們不一定總是 必須有一個foreach循環，
經過數組作為鍵映射到值。
我們可以通過 foreach循環數組值。
>> 漢娜布隆伯格：我認為， 用於：是你的問題，是什麼
是隱式索引？
聽眾：均田。
MARIA ZLATKOVA：哦。
漢娜布隆伯格：是啊，是啊。
所以基本上，如果你不指定 一個關鍵，這將是01。
>> MARIA ZLATKOVA：是的。
就像使用C，它是零 索引如果不指定密鑰。
聽眾：對不起。
你可以嘗試講 一點點響亮？
我有一點點 麻煩聽到的一切。
>> 瑪麗亞ZLATKOVA：我很抱歉。
嗯，當然咯。
所以，你要我 到過這一次？
或者是this--
聽眾：所以在以往的slide--如果 你可以只回去一秒鐘。
MARIA ZLATKOVA：當然了，對不起。
聽眾：所以第二 陣列這裡不
似乎有一個值加鍵， 有點 [？因果關係。 ？]
MARIA ZLATKOVA：對，對。
聽眾：所以這是如何工作的 當你說這是全或無。
對我來說，看起來像 一個 [？富？]了。
>> MARIA ZLATKOVA：是啊，是啊。
如此反复，這是一 在這個意義上有序圖
有被理解， 例如，索引
這裡可以理解為0，1，2，3。
再次，這是有那些 索引是我們相當於
具有映射到值的鍵。
所以，如果我們的關鍵是0--遺憾。
>> 漢娜布隆伯格：沒有， 還有的粉筆在這裡。
它實際上是非常好的。
>> 瑪麗亞ZLATKOVA：那太好了。
好。
如此反复，$ ARR 0會 鍵為值1。
0將是關鍵的值1。
聽眾：我很抱歉。
它是無形的。
>> 漢娜布隆伯格：好吧，沒關係。
粉筆是個壞主意。
我把它送回去。
你可以把鑰匙 作為0映射到值1。
MARIA ZLATKOVA：是的。
因此，這是0，這是1，2，3。
這些可能是你的鑰匙。
你可以把它們as--呀。
因此，而不是有 明確的按鍵，它們是
那種理解為 該指數從0開始。
粉筆沒有幫助。
是啊。
>> 顧客：foreach循環， 如果我們想查看的值，
它只是自動索引為0？
MARIA ZLATKOVA：是的。
這將通過每個值。
聽眾：[聽不清]作為 0或將只是做0？
>> MARIA ZLATKOVA：你必須 也就是說，作為美元符號，然後
一些變量名，值。
聽眾：[聽不清]。
MARIA ZLATKOVA：對不起？
聽眾：對不起，我 只是想記住。
你會怎麼做，如果你能做到這一點 自動索引僅僅是0？
>> MARIA ZLATKOVA：那麼你會怎麼做 如果你沒有具體的鍵名稱？
>> 聽眾：是的。
>> MARIA ZLATKOVA：你只想define-- 只是說自己的一些名字。
因此，在您的pset，你們可能 記住的foreach $行作為$行，
我們創造了我們自己這個$行說 我們想通過排為$行。
儘管我們沒有 行定義了這個明確的$，
我們可以隨便去 說這可能是我們的重點，
而剛剛經過的每個值。
>> 聽眾：那就是價值的新變量 我們要創建存儲[聽不清]？
>> MARIA ZLATKOVA：所以這不是 本質上是一種新的變量。
它是指一個變量 內的陣列他們每個人的。
漢娜布隆伯格：這是 一個新的變量名。
MARIA ZLATKOVA：是啊， 這是一個新的變量名，
但它不是inherently--呀。
這只是一個新的變量 你可以做到這一點。
因此，只要我們怎麼做 $行作為$行，行
是一個新的變量名，我們 可以創建在我們的foreach循環。
它不具有在此之前，對預先存在。
>> 聽眾：你可以去通過 邏輯為每個使用的例子嗎？
MARIA ZLATKOVA：MHM。
噢對不起。
這裡的例子。
當然。
因此，對於每個array--所以 這意味著去這個陣列
關鍵value--這回事 要通過這個數組
和第一去弄foo，那麼 關鍵foo和價值吧。
然後在第二 for循環迭代，
它會通過，並採取 關鍵巴茲和值qux。
然後你就可以做一些事情 其中任何一個或兩個人。
>> 聽眾：所以背後的想法 有一個關鍵點的值，
你到底是什麼了訪問？
>> MARIA ZLATKOVA：是什麼概念 具有一鍵指向價值？
這只是一個慣例，另一 歷盡數組方式
並能夠訪問無論是 鍵或值或兩者並用它們。
>> 聽眾：什麼是對的作用 下令在foreach中運行？
所以，如果我們要添加 元件以陣列以後，
將這些是第一個 所謂在foreach陣列中，
或者會是以後？
>> MARIA ZLATKOVA：那麼，什麼是 的順序在foreach
循環遍歷數組中的？
它經過所述第一 元件到最後一個元素，
到最後添加的元素。
如果您在以後添加元素，它們將 被accessed--的第一要素會
進行訪問，所述第一 的數組的元素，
然後你會去通過每個 元素作為排序的ordered--的
不是一個有序，但方式 他們已經放入數組。
>> 聽眾：那麼新元素 加入以後？
所以他們added--他們將在 最後的在[？迭代。 ？]
>> MARIA ZLATKOVA：新元素can-- 基本上，當添加新的元素，
它們是添加到數組的結尾？
>> 聽眾：是的。
瑪麗亞ZLATKOVA：我想是的。
是。
然後用你的foreach循環， 你已經添加了新元素後，
你去通過他們， 新元素會
是accessed--新元素，如果它的 最後加入，這將是最後一次訪問。
>> 聽眾：你能不能舉個例子 的東西會[聽不清]
有一些與價值 像[聽不清]或價值，
喜歡你如何格式化？
>> MARIA ZLATKOVA：當然。
我可以舉的一個例子是什麼 我們將與價值呢？
那麼你們可能熟悉 是我們通過一個數組已經走了
基本上印刷 每個元件，
例如，作為一個部分 有序列表或東西。
這是否有意義呢還是想用於：
聽眾：我們可以打印這些值嗎？
MARIA ZLATKOVA：是的，我們可以打印 然後基本上$值，因為在
特定的價值，我們將 打印它裡面的價值。
因此，如果我們在我們的第一次迭代 它和我們的印刷$值，
我們將打印條碼。
>> 聽眾：是否也有對 循環在PHP或只是foreach循環？
>> MARIA ZLATKOVA：有 還對在PHP環路。
而他們的邏輯是主要的 一樣你一直在使用。
聽眾：所以它的值是零。
MARIA ZLATKOVA：這就像一樣。
是啊。
聽眾：我只是要問。
所以當你宣布一個 數組，你不需要
告訴它要什麼尺寸 是的，這意味著你可以
添加並帶走元素[聽不清]。
MARIA ZLATKOVA：是的。
對。
究竟。
當我們聲明一個數組，我們 不用說，這是什麼規格，
因此，我們可以只添加元素 到後來為好。
更多問題？
所以把PHP和HTML在一起， 我們已經seen--好，
例如，在這個例子中，我們有 具有輸入字段的HTML表格。
>> 輸入框的只是名 然後它有一個提交按鈕。
而當你按下提交 按鈕，在我們的hello.php文件，
因為該方法的形式是 得到的，我們可以訪問無論是在名稱
此得到全局變量， is--的語法是$ _GET。
然後我們就可以訪問任何的 這種形式的名稱內用戶輸入
通過指定字段的名稱。
>> 任何其他問題或任何 在這個具體的例子嗎？
>> 聽眾：如果是PHP？
MARIA ZLATKOVA：在這裡。
因此，這是我們的PHP開始標記。
>> 聽眾：哦，對了。
>> MARIA ZLATKOVA：是的。
>> 漢娜布隆伯格是否：=的簡寫 因為這是PHP和公正的迴聲。
聽眾：哦。
MARIA ZLATKOVA：是的，對不起。
我應該說的很清楚。
>> 漢娜布隆伯格：打印。
MARIA ZLATKOVA：這只是功能 這使我們能夠打印的東西。
大的問題。
所以going--是的。
>> 聽眾：有沒有將是相當 一點PHP和HTML的手工編碼
在測驗1？
MARIA ZLATKOVA：可以有 解釋相當數量的
php和html，不一定 像一個巨大的量的編碼，
儘管你可能需要寫一個 foreach循環，但是，一個for循環。
任何環的，我們 涵蓋這裡是公平的遊戲。
而這主要是它。
漢娜布隆伯格：我將準備。
以同樣的方式，我們請你來 寫一堆的C函數的測驗0，
我是準備做 同樣在PHP和JavaScript。
MARIA ZLATKOVA：是的。
漢娜布隆伯格：我會說 一個li​​ttle--像我們不是
將讓你寫一個巨大的HTML 頁面只是因為這是一點點
乏味，但你可能有部分。
這是完全公平的遊戲。
喜歡小HTML頁面，完全公平的。
聽眾：OK。
如何在JavaScript中呢？
漢娜布隆伯格：是的。
JavaScript的公平的遊戲。
>> MARIA ZLATKOVA：是的。
這是完全公平的遊戲。
漢娜布隆伯格：我們會得到 於在像10分鐘。
>> 瑪利亞ZLATKOVA：SQL中，再次， 結構化查詢語言。
基本上，它使我們能夠管理數據 在關係數據庫管理
系統。
這只是基本上意味著 我們有地方
存儲一些數據，我們可能要 在網站或以某種其他形式使用。
然後，我們必須查詢來獲得 從我們的數據庫中的信息，
或插入的信息在其中。
很多常見的ones--的更新， INSERT，SELECT和DELETE。
>> 因此，對於更新，這是語法 用於在數據庫中更新數據。
更新這個表稱為 表說SET，
我們可以設置在所有的一些值 行等於別的東西。
因此，我們也可以指定一些特定的 我們要修改的條目
並且，可以是用在哪裡。
我們可以指定我們只希望 修改某些行所在的房子，
如果我們有學生的表 和所有的學生們的房子，
所以我們只能修改一些值 那裡的房子等於宿舍樓裡，
例如。
>> 對於INSERT，我們可以插入 某些值到表中。
所以INSERT INTO表， 然後這些值，
然後在括號中，我們指定 其值要插入。
所以INSERT INTO表，col1和 COL2，值都是val1和val2。
所以這基本上插入一個新行 包含值1和2的表
下的列1和2。
>> 然後我們要去投奔 如何這看起來簡單的例子
就像在我們的數據庫中一點點。
但是，這最後的查詢，我 認為我們走了過來，
SELECT，它只是讓我們 從表中選擇數據
以可能使用它之後。
我們這樣做的方式是我們 只需將它保存在某個變量。
然後我們可能可以再次使用。
>> 所以選擇星級意味著選擇所有。
這只是一個速記 選擇所有。
FROM表WHERE，我們正在尋找 對於某些特定的條件下，
所以在這裡列等於 東西，例如。
如果我們只是想 從表中選擇所有，
這只是選擇所有列 從表中的所有行。
>> 然後DELETE FROM表 WHERE山坳等於什麼，
這只是刪除了一些 從我們的表行
其中我們有一些特定的條件。
在這種情況下，條件 是列等於什麼。
這所以只是一個簡單的例子。
如果我們有這個表就在這裡和我們 將其插入到一個表，這些值，
這將插入新行。
如果我們有自動遞增，這將 只是增加我們的編號從0到1至2。
>> 如果我們選擇的所有學生，它 剛剛返回的所有領域和所有行。
凡年大 大於或等於2016年，
這將只返回 漢娜和我自己。
然後，如果我們僅僅選擇 今年ID和一年生
那裡的房子是卡博特房子，那 會再次返回漢娜和我自己。
>> 那麼，如果我們從學生中刪除 其中name等於搶，
這將刪除整行。
然後，如果我們設置 名，UPDATE學生
SET名字等於Daven WHERE房子等於
卡博特之家，那將去 這些行，然後更新名稱。
>> 然後幾個SQL數據類型 CHAR，VARCHAR，INT和浮動。
這些都是公平的遊戲。
我會去一遍又一遍 並確保你知道
並讓它們在你的備忘單， 了每個這些字符的
已被用於，什麼 你用他們在你的pset時，
並確保你熟悉和 舒服不得不選擇
從您的pset不同的數據類型。
是。
>> 聽眾：什麼是表存儲在哪裡？
是啊，這哪裡是表的存儲？
MARIA ZLATKOVA：嗯， 現在，它不保存。
總之，哪裡該表存儲在哪裡？
但它可以儲存在SQL數據庫中。
>> 聽眾：哪裡是SQL數據庫？
在計算機中，在線 某處，服務器？
>> 瑪利亞ZLATKOVA：它可以是一個 不同的東西數目。
>> 漢娜布隆伯格：我們已經接口與 SQL表大多與php​​MyAdmin的。
因此，我們可以問一個服務器 來存儲它們為我們。
我們可以將它們存儲自己的計算機上。
>> MARIA ZLATKOVA：這只是取決於 你要如何為自己而做。
但是，我們一直在存儲 他們，漢娜提到，
在phpMyAdmin的，這是在網上。
然後我們一路使用 PHP和SQL，我們將其存儲
為一些變量 我們已經查詢了。
>> 因此，如果我們選擇所有的歷史 其中，USER_ID等於會話ID，
這將選擇所有行 對於特定人誰
從歷史中記錄 表和排序他們入行。
一個很酷的事情知道的是， 這CS50的查詢功能
防止SQL注入標籤。
這只是意味著它可以確認 所輸入的輸入是正確的
並確定該人誰 正進入輸入
是不是要輸入一些惡意的 代碼要么砸我們的表
或刪除一切 裡面我們的數據庫。
>> 的快速概覽 模型視圖控制器模式，
這是組織的只是一種方式 和思考的代碼。
這是又一個設計範例。
這也就意味著，我們 can--，它是很好的做法
分開不同的部分 我們的代碼和他們
控制進入這三個範式。
>> 因此，我們認為是最常見的我們 模板，我們的佈局，道路
我們設置了如何我們的代碼看起來。
這主要是我們的CSS文件和方式 我們定義的我們的代碼設計，
基本上。
我們的控制器主要是什麼 我們一直在做的PHP文件。
如此反复，正與 我們有信息
並確定怎麼說 信息被使用，
然後傳遞一個信息 要么到視圖或模型。
而模式，即我們已經一路 在使用IS一直是我們的數據庫，
那麼，我們的信息是 存儲，以便它具有某處
住在和任何的 涉及到的方式代碼
我們得到的信息或 我們更新信息的方式。
>> 因此，在MVC模式，HTTP 請求被發送到網絡服務器。
然後，控制器解譯 來自用戶的請求
然後驗證用戶輸入。
它是可選的，我們有 該控制器通信
與模型，因此一些 像我們的數據庫
或某一其它功能性 該轉發信息。
然後最後，控制器 傳遞信息到視圖
因此，它可以是 呈現，並且它可以
成為可見的任何人 訪問網頁。
>> 任何問題？
真棒。
如此反复，模型， 其功能，又，
是信息的持久存儲， 管理和組織數據。
而我們所看到的 截至目前為止MySQL數據庫
和任何數據文件，可能會使用。
>> 查看，介紹信息 用戶時，UI，或用戶界面。
而這樣做的例子是HTML。
然後，我們可能有最小的PHP。
因此，一個for循環迭代 過的數據被打印出來
是視圖的一部分，作為 相對的控制器。
然後很多我們的PHP文件 落入控制器類別。
它只是處理用戶的請求和 獲取模型的信息。
>> 跳轉到文檔 對象模型，這只是
指的是方法的HTML 文件的組織方式。
而且他們組織成一棵樹 結構具有層次結構。
因此，如果我們有機會獲得[聽不清] 該文件的表示，
我們可以使用該文檔，就像 我們基本操作對象。
>> 而為了讓這一個 點點清晰，當
我們有很多的我們 不同的標記回應
在我們的樹不同的路線。
然後對於這個例子，我們 有開始文檔節點。
我們有，那麼，我們的HTML節點 即分成頭部和身體。
頭有標題，然後 標題包含你好，世界。
而我們的身體只包含 你好，世界也是如此。
>> 因此，在任何的任何問題 我們覆蓋到目前為止的事情呢？
如果沒有的話，漢娜 拿過來用JavaScript。
真棒。
>> 漢娜布隆伯格：好，冬暖夏涼。
如果有什麼想出了PHP或HTML， 或任何東西瑪麗亞覆蓋，
我們總是可以暫停。
我們正在做的更好的 一次又一次，這樣真棒。
而就回去 真的很快到這一點，
如果你每 過去一年的考試，這
出現either--這裡 一些HTML，讓這個圖。
還是這裡的這張圖，使一些 HTML，所以肯定練了。
然後這都保證 的問題，你可以得到正確的。
涼。
因此，讓我們來談談的JavaScript 以及它如何一點點
例如PHP和語言的不同 C，我們看到了事前的兩種語言。
因此，第一，它是鬆散類型。
即如PHP，但不像C.
>> 這是一種解釋型語言。
再次，像 PHP，不像C.這
將會讓我們use--它 作品真的很好地與網頁。
這將允許我們操作 的內容和它的外觀
和它做什麼。
>> 我們將看到阿賈克斯的一點點。
它使我們能夠溝通 異步不同的服務器
和獲取信息。
這是東西真的 從PHP和C分離的JavaScript
是，它是客戶端。
PHP和C是 典型的服務器端。
>> 在大多數情況下，並 幾乎完全是什麼
我們已經看到，至少在 這個類，JavaScript的
作用於客戶端，這意味著 該瀏覽器是實際上
負責運行它。
這意味著，我們不這樣做 需要與服務器進行交互。
因此，這意味著它可以是快了不少 因為它實際上只是它的瀏覽器，
這是Safari瀏覽器，它是火狐，不管你 用實際運行你的JavaScript。
>> 聽眾：什麼是異步是什麼意思？
>> 漢娜布隆伯格：啊，什麼 並異步是什麼意思？
大的問題。
異步是指： 同時，在內容中
我們使用它，OK，我們 正在創建一個網頁
我們需要得到一些信息。
因此，與混搭的例子中， 一些信息，我們可能要
就是文章標題。
現在，我們could--一個選項 是同步做
這意味著咱們 停下來，去獲得的文章，
得到的文章回來，然後 渲染，但是這將是很慢。
這將是一個不好的用戶體驗 因為你只是坐在
有在等待著什麼回應。
>> 異步意味著我們將 繼續將我們的業務，
渲染頁面， 我們會發送了一個請求
那種那將 發生在後台進行。
我認為，我們使用的例子 演講呼籲Rob和說的，
嘿，你可以看看這件事 我和打電話給我，
而不是只有我 等待的電話。
因此，異步意味著它發生 從我們的後台走
在平行下。
>> 大的問題。
還要別的嗎？
大。
我們會跳很多更進 異步請求使用Ajax。
>> 聽眾：請問JavaScript--哪裡呢 它與模型 - 視圖 - 控制器下跌呢？
漢娜布隆伯格：大的問題。
哪裡的JavaScript下降 與模型 - 視圖 - 控制器？
嗯。
我想這可以fall-- 所以我們通常不
喜歡壓扁成的 範式，但我想我會說，
好了，JavaScript的 實際上會允許
我們收集的數據， 解釋數據，真正做到
與數據有意義的事情。
這樣一來，這是非常控制等。
>> 但它也將允許我們 顯示事物和打印的東西。
這樣一來，這是非常視圖等。
是啊。
因此，它有點像PHP中 在那裡可以一種是兩者。
好問題。
還要別的嗎？
好了，真棒。
運動沿著正確的。
>> 因此，讓我們來看一個例子 我們如何使用
JavaScript的在我們的Web程序之一。
所以，我會考慮這個 index.html的一堆的HTML。
而件事我想你 重點是這個腳本標記。
這說，OK，我要運行一些 JavaScript和這裡是它生活的地方。
它生活在hello.js。
>> 而且非常像CSS，我們可以 把JavaScript中的HTML中。
為什麼會我們想將它分離出來？
是啊。
>> 聽眾：更容易改寫？
>> 漢娜布隆伯格：是的。
它更容易使用的跨越 不同的網頁。
它使事情更清潔。
這是一個好的做法。
真棒。
好答案。
那麼好，所以這是怎麼回事 是我們的index.html。
再往下這裡是我們的 小小的JavaScript文件。
>> 和所有它說的是警覺的Hello，world。
所以會發生什麼是當 此頁面renders--
因此，如果你去到任何網站 這is--一切將要發生
是它會說，好吧，我 要運行這段JavaScript代碼。
而這段JavaScript代碼 只是說警惕的Hello，world。
所以，我要得到這 友好的小彈出。
>> 涼？
這有點像我們的第一個 JavaScript程序，我們的Hello，world。
讓我們看一點點什麼 JavaScript的語法如下所示。
而具體，讓我們把它比作 C和PHP，這是我們以前見過。
>> 在JavaScript中，我們將有 變種，該變​​量的名稱，然後
其實際值。
而且我們也沒有指定類型，只是 像PHP，但很不像​​C.
因此，例如，如果我們想 存儲值50，
在C中，我們不得不說， 哎，C​​，我想要一個整數，
我要叫它 i和其值是50。
在PHP中，這是一個稍微容易一些。
我們說，嘿，我想一個變量 稱為i和它的值是50。
非常相似，在JavaScript中，我們 說嘿，我要一個變量叫我，
它的值是50。
以後每一次我用 我，我不需要寫變種。
這只是我的一點上。
以同樣的方式，在C，其中 一旦我們說INT I，我們只是用我。
涼？
好吧。
>> 移動到循環， 幸運的是，這些幾乎
看exactly--我認為他們是 完全一樣的什麼
循環要看起來像 類似於C，你的for循環
將會有三個 parts--初始化，
的條件，和更新。
while循環，它看起來完全一樣的。
我們只是給它一個條件。
>> 而一個do while循環， 再次，完全一樣的。
我們給它一個條件。
比方說，我想遍歷over-- 我想做點五倍。
在C語言中，我們可以這樣寫 用於初始化i等於0。
i小於5，我+ +。
唯一的區別，在JavaScript中， 而不是說INT I等於0，
我們說變種i等於0。
美麗。
這是唯一的區別。
在任何的任何問題嗎？
是。
>> 聽眾：所以在PHP中，這是相同的 的事情，但但像一個變量？
或者是一個變種的例子嗎？
漢娜布隆伯格：是的。
因此，在PHP中，這是怎麼回事 是一個美元符號。
因此，這將$ i等於 0，$ i小於5，$我+ +。
大的問題。
>> 現在，讓我們來談談 函數聲明。
在C中，當我們宣布 功能，我們給它一個名字
我們給它的一些參數。
而在一開始，我們寫的類型。
在JavaScript中，我們所 所要做的就是寫
關鍵字功能 說，哎，JavaScript中，
我將要定義一個函數。
>> 在這種情況下，它具有名稱總和。
它有兩個參數，x和y。
請注意，我們不關心 關於x和y的類型。
就如同C，我們有 此關鍵字的回報，
因此，我們可以做一些事情 像返回x和y。
>> 而現在一旦我們已經寫了這首 功能，我們可以在任何地方使用的總和。
而這完全罰款。
其中約很酷的事情 JavaScript的，這是非常與C
是起到能 像對待值。
因此，我們可以做這樣的事情在這裡 在這裡我想我管這個up--
我介紹了VAR總和 part--我們剛才說的
功能XY等於返回X加y。
>> 這就是將被稱為 匿名函數。
這是沒有名字的函數。
鑑於此說功能 總之，等等，等等，等等，
這將只是說功能。
但現在，即使我有 該匿名函數，
該功能實際上只是一個值。
我們可以把它當作一個值。
>> 因此，我們可以將其保存在一個變量相同 這樣，我們可以在一個變量存儲50。
所以我們可以說，OK，我想 可變的，這就是所謂的總和，
而正是這種功能。
所以這兩個東西實際上是 會做同樣的事情，
但是語法有一點 不同類型的一個有趣的註釋。
是啊。
>> 聽眾：所以，你可以調用 函數是匿名的說，
總和括號2,5？
漢娜布隆伯格：是的。
您可以撥打這個匿名 功能的方式相同。
你會做和（2,5）;
這將是完全罰款。
>> 如果我沒有做無功之和等於 功能，如果我只是刪除
this--我知道這是我的手， 但假裝我刪除this--然後
那種功能只是走了。
你永遠可以再次使用，因為它 你不必為它命名。
很難指什麼 你不知道叫什麼。
好問題。
是啊。
>> 聽眾：你可以參考之在 等地設有X加Y的值？
>> 漢娜布隆伯格：你能 在其他地方引用總和
與數值x加y？
我不完全明白你的意思。
>> 聽眾：所以你過去半匿名 功能是和等於該
匿名功能，所以總和是 現在你can--變量
漢娜布隆伯格：對。
所以總和是變量， 但它的actually--
所以總和是一個變量，其 值的功能。
因此，它是一個功能，這是一種 一個奇怪的東西來包裝你的頭左右
因為我們一直在玩 C和你不能這樣做，在C.
但是，現在我們可以調用求和 同樣，我們可以在這裡呼籲總和。
聽眾：OK。
漢娜布隆伯格：是的。
好問題。
是啊。
>> 聽眾：所以我們不使用 在PHP或JavaScript的原型？
漢娜布隆伯格：不，我們 不需要使用原型，
尤其是在JavaScript中。
所以有不好的做法件事，我 會說，你不應該這樣做
是你沒有寫變種I = 50。
你可能剛開始做我= 50。
而只想讓我一個全局變量。
>> 這是非常不好的做法， 從來沒有明確地說我變種，
但它的東西，你可以做。
翻譯的不 要罵你。
JavaScript是非常喜歡， 你可以做你想做的。
噢對不起。
有兩種。
在橙色褲子。
前進。
>> 聽眾：不，你先走。
>> 聽眾：沒有，我只是說 我沒有我的手。
好。
所以，如果你是打電話 這第一次，現在總結，
我們把它以同樣的方式，X， Y，像每一次？
漢娜布隆伯格：是的。
因此，這兩個基本 做同樣的事情。
聽眾：這有什麼好處 用一個或另一個？
漢娜布隆伯格：沒有優勢 用一個或另一個。
我只是想顯示兩個 不同部分的語法。
很多時候在哪裡匿名 功能確實有一個目的，
是，如果該參數到另一個 功能應該是一個功能。
我們會看到，在 只是第二，阿賈克斯。
>> 因此，如果這沒有任何意義， 儲存到您的後腦勺。
這就是一個匿名 功能可能是有用
因為它不是真正的價值 給它一個名字，因為我們只是
將一次使用它。
是啊。
>> 聽眾：如果X和Y的變化後 上，將總結隨之改變？
漢娜布隆伯格：如果x和y的變化 稍後，將總結隨之改變？
所以，這其實是我 認為東西是，
再次，它只是感覺很不同 從C這不是一個值。
這不是5。
這只是函數本身。
所以，只要你給它的參數， 那麼你實際計算值。
>> MARIA ZLATKOVA：然後 你可以調用函數
並用它來獲得一些價值。
漢娜布隆伯格：對。
究竟。
是啊。
>> 聽眾：所以，如果你只是 它存儲在變量，
像變種x等於兩個values​​--總和
>> 漢娜布隆伯格：是的。
所以，你可以只是做無功總和 等於兩個值的總和。
是啊。
其他問題嗎？
是啊。
>> 聽眾：但是會是 混淆之和相加？
如果你打電話給你的變量之和像， 你會調用該函數之和？
漢娜布隆伯格：MM。
毫米。
如果你做了什麼 像，和等於總和2,5？
>> 聽眾：是的。
>> 漢娜布隆伯格：我認為， 將覆蓋總和的價值。
所以另一個有趣 關於JavaScript的事
是，單個變量可以取 在一堆不同的類型。
不好的做法。
你不應該做的事情 像你剛才說的話。
>> 但在C，如果我設置 等於一個整數，
我們知道，這是從來沒有 將成為一個字符串。
這不是在JavaScript的情況。
是啊，好問題。
還要別的嗎？
好吧。
這樣做的時候沒事了。
保持下去。
好吧。
>> 如果我們看一下一個數組 在JavaScript中，這裡的
字符串數組的一個簡單的例子。
和數組可以動態地增長。
他們沒有一個 固定大小相同的方式
他們做的C.我們可以訪問 元素只有在方括號內。
>> 這看起來很像PHP和很多 像C，其中我們可以說，在這種情況下，
如果我想的話的JavaScript，我會 別常用3方括號以0，1，2。
然後，如果在C記得，當我們 希望得到的陣列的長度，
這是真的很煩。
但在JavaScript中，超級簡單。
我們所做的一切，.length。
給它的長度。
而已。
>> 聽眾：這很簡單。
>> 漢娜布隆伯格：是的，使得 你的生活輕鬆了許多。
OK，object--不存在。
在JavaScript感覺的對象 很多像C結構
在PHP關聯數組。
因此，我們已經看到了 很多是JSON，這
代表JavaScript對象符號。
它基本上是一個辦法 對構建我們的數據。
>> 因此，讓我們來看一個例子， 可能是最簡單的。
因此，這裡是一個對象的示例 存儲類，CS50。
當我說課，我的意思當然， 不like--是的，過程中，CS50。
你會看到， 中的所有對象
將要被包含 大括號內。
>> 我們開始字段名關聯 或具有不同的值的鍵。
所以，你可以開始看到這樣的 感覺就像關聯數組在PHP。
因此，我們打算到外地關聯或 鍵名，當然，用字符串，
CS50。
>> 我們將有一個教練。
我們將有轉錄因子。
我們將有pset中的數 我們要去錄製。
而一個很酷的事情要注意的是所有的 這些東西有不同的類型，
而這完全罰款。
>> 這是罰款的對象，事實上， 它可能希望為對象
有字符串的組合 與數字和布爾值和數組
你可能其他任何 想擁有你的對象中。
並注意，這些都將是 名稱或鑰匙，然後我們就
設置一個小冒號相等。
>> 聽眾：這到底是什麼意思JSON？
漢娜布隆伯格：什麼 究竟JSON是什麼意思？
JSON只是代表 JavaScript對象符號。
這是格式化的只是一種方式。
是啊。
它是我們的格式化數據的方式。
>> 在C語言中，它的結構。
在PHP中，它的關聯數組。
在JavaScript中，我們擁有的對象。
>> 聽眾：所以CS50是一個對象？
漢娜布隆伯格：CS50是 在這種情況下的對象。
現在，我們如何真正進入 這些字段或更改這些字段。
例如，假設我們決定 你想少一個PSET這個學期。
相反九，我們 只是將有八個。
我們怎樣改變這種狀況？
>> 哦，走錯了路。
有跡象表明，我們可以做到兩種方式。
排名第一的是用點 符號和第二
與方括號。
因此，例如，如果我 想改變或訪問
在我們的CS50對象pset時現場， 我會做的是CS50.psets，
所以對象點的名稱 外地或密鑰的名稱。
>> 非常相似，這正是 相當於做CS50，然後
在方括號，pset中。
涼？
是啊。
>> 聽眾：原來是JSON 技術上JavaScript的是，
即使在pset時，我們 分離出來[聽不清]？
漢娜布隆伯格：當然。
所以，問題是，有 JavaScript和JSON相同呢？
因此，JSON是符號，基本 我們寫出的方式
一個對象從JavaScript。
因此，他們是不完全一樣的。
>> 我想說的JavaScript，有 在JavaScript對象。
JSON需要那些對象和 它們打印並顯示它們
或者將它們存儲在一個不錯的方式。
因此，JSON是不是一種編程 語言，JavaScript是一種方式。
這只是表示法 我們的JavaScript對象。
是啊。
>> 聽眾：那麼究竟是什麼 [聽不清]完成？
漢娜布隆伯格：當然。
因此，這實際上什麼也不做。
這僅僅是一個的方式來訪問。
所以我們可以說，我們希望改變 習題集數
朝九晚八。
我們要做的就是做一些事情 像CS50.psets = 8 ;.
>> 是的，很好的問題。
這只是向您展示的語法。
實際上並沒有做任何有用的。
任何問題？
運動沿著正確的。
>> 因此，讓我們看看如何一個簡單的例子 JavaScript的作品，因為我告訴你它
做所有這些很酷的事情和 允許我們修改網頁。
讓我們真正看到它的行動。
因此，舉個例子來說，這個HTML文件。
>> 我希望你關注的事情是 這個特定的標記，它是一個按鈕，
id為search_button。
這只是在頁面上。
所以，現在讓我們看看 我們其實可以做。
>> 那麼，假設當 單擊該按鈕，
我們要作出alert-- 單擊按鈕。
讓我們來看看我們如何能做到這一點。
所以window.onload--這不是 你見過在課堂上，因此，
不需要知道它的測驗。
但是，這基本上說，OK，呼叫 此功能在窗口的負荷。
>> 所以，這只是一種設置代碼。
不要太在乎這一點。
我希望你關注的是在這裡。
我們說VAR searchButton等於 的document.getElementById search_button。
>> 所以您可能已經猜到， 這是什麼做的是它說，
OK，去找元素 ID為search_button。
而現在我們有 而我實際元素
將其存放在 可變searchButton。
現在，我們實際上可以使用該元素 並改變它，或者訪問其價值，
像這樣的東西。
事實上，我們可以開始 接合與網頁。
>> 所以在這裡我說，好了，現在我有 這個按鈕，它被點擊時，
調用這個匿名函數。
因此，這是匿名的 功能變得非常有用。
又是什麼作用呢？
那麼，它只是調用這個 報警功能和它說，
你點擊搜索按鈕。
>> 所以會發生什麼，如果我去哪裡 這個HTML的生活和我按一下按鈕，
我會得到一個奇特的小警報 說你單擊該按鈕。
所以事情專注於 這裡 - 的document.getElementById
得到一個特殊的HTML 元素與給定的ID。
而現在，我們可以設置 又該當發生
該特定元素被點擊。
>> 聽眾：我們必須把所有這一切的？
>> 漢娜布隆伯格：對不起？
>> 聽眾：我們是否要 實際編寫了這一切？
>> 漢娜布隆伯格：我們要不要 實際編寫了這一切？
是。
是不是這樣的煩人？
這是一個很大的代碼。
>> 聽眾：你可以導入一些東西。
漢娜布隆伯格：對。
我們可以使用的東西。
而在particular--哦，這是 告訴我，我要教一節。
尤其是，讓我們 使用圖書館jQuery的，
因為這是真的 長，真煩人
我希望能夠簡化其 並使其更短，更容易編寫。
>> 所以，jQuery是一個JavaScript庫。
因此，JavaScript是編程 語言; jQuery是一個圖書館。
這讓一堆事情變得更容易。
它使變化，去跨越 一個HTML文檔更容易。
>> 這使得處理事件變得更加容易。
它使動畫更容易 這讓阿賈克斯更容易。
因此，讓我們跳進兩 這些東西現在。
打擾一下。
在我們這樣做，一些基本的語法。
>> 這就是大多數調用 jQuery庫的樣子。
我們用這個美元sign-- 無連接跡象PHP，
只是inconvenient--的名字 選擇器，點，然後一個動作。
因此，讓我們看到了一些 的該具體例子。
>> 因此，這實際上是一樣的 從事件滑動代碼。
所以這漫長的，醜陋的東西變成 這更漂亮，更小的東西。
因此，讓我們嘗試打破下來。
這是說，OK，jQuery--這個美元 sign-- jQuery的，找我的窗口。
所以這是選擇。
>> 當它加載，調用這個函數。
所以，這裡面的一切。
好。
到目前為止，一切都很好？
好吧。
>> 現在，jQuery的，找我的 ID為search_button的事情。
而且它被點擊， 調用此函數。
然後這個函數的 一模一樣。
只要做到警報一點點， 你點擊搜索按鈕。
>> 所以這是非常好的。
這真的凝聚和 簡化了我們的代碼。
我怎麼知道， 它的ID search_button
而不是像類search_button？
>> 聽眾：＃標籤？
漢娜布隆伯格：是的。
該散列符號，它就像CSS。
所以請記住，使用CSS，當我們 希望通過標識來選擇的東西，
我們使用井號。
而當我們想選擇 一些由一流的，我們使用點。
大。
合理？
所以jQuery的是應該 只是讓我們的生活更輕鬆。
是啊。
>> 聽眾：所以我有點困惑， 如何匿名函數的工作原理。
你命名此anonymouse 功能，功能？
它是如何叫什麼名字？
漢娜布隆伯格：當然。
因此，功能只是一個關鍵字 說，我將要定義一個函數。
聽眾：哦，好。
漢娜布隆伯格：OK？
然後我們把它作為一個 參數用於：讓我們
這種內在埃德蒙頓的點擊功能。
所以是的，這樣的功能， 該匿名函數，
成為一個實際參數。
所以請記住在JavaScript中，我們 可以把函數作為值。
聽眾：哦，好。
漢娜布隆伯格：是的。
我喜歡說，“哦。”
美觀大方。
其他的問題嗎？
時間？
MARIA ZLATKOVA：好。
好。
>> 漢娜布隆伯格：真棒。
一些快速有效的jQuery。
我不打算去 通過所有這些。
這些幻燈片將 在線一點點
後來，這樣你就可以檢查 它有點晚。
但基本上，一般 模式成立，其中說，
好了，嘿嘿，jQuery的，這裡是我的 選擇，然後在這裡是一個動作。
你可以做的事情一樣訪問 一種形式的價值，獲得一些HTML，
控制用戶時，會發生什麼 提交表單，這樣的事情。
是。
>> 聽眾：所以在 考試，我們將需要
從知道了不少 jQuery的文檔。
因此，鑑於我們複製/粘貼了jQuery 文檔我們的小抄，
哪來的行畫？
就像我們需要知道多少？
漢娜布隆伯格：大的問題。
問題是 本質上給你
不能訪問jQuery的文檔 在測試過程中，有多少你應該
知道？
我們不希望你來 與一些隨機函數
我們希望你給谷歌。
>> 事情是公平的遊戲是我會 說只是一種一般的語法，
能夠通過標識來選擇和 通過分類 - 所以就像CS​​S。
然後實際的功能 自理，我們很可能會告訴你。
是啊。
>> 聽眾：所以當你選擇 按類將意味著點。
漢娜布隆伯格：是的，沒錯。
好。
如果按類進行選擇，這是怎麼回事 被點，而不是英鎊符號。
是。
>> 聽眾：請問你 過去的區別
通過ID和類之間？
>> 漢娜布隆伯格：當然。
選擇之間的差 ID和選擇按類。
因此，作為瑪麗亞說， 稍早些時候，有
只能有一個HTML元素 具有給定的ID，而類，
它可以讓我們組了一堆 不同的元素結合在一起，
這樣的事情有關係， 但不完全相同。
這是否回答這個問題？
真棒。
是。
>> 聽眾：如果你有什麼多 事情是在同一個班？
>> 漢娜布隆伯格：會發生什麼事 如果您有多個東西，
是同一類？
因此，例如，如果我們 只使用純JavaScript，
我們會做這樣的事情 document.getElementsByClass。
然後呢，實際上起 是返回元件的陣列。
>> 你必須要么迭代 他們或找到你想要哪一個。
它不會放棄 你一個元素。
這將讓你 元件的陣列。
大的問題。
還要別的嗎？
真棒。
>> 所以我覺得，如果你熟悉 任何jQuery的你在PSET看到，
你應該是好去。
題？
不好了。
我真的要教。
放鬆。
它會沒事的。
我會到達那裡。
>> 讓我們來談談阿賈克斯。
因此，阿賈克斯將是A--好， 讓我們先從它代表什麼。
這是一個縮寫。
它代表了異步 JavaScript和XML。
和XML基本上將是 [聽不清]，類型為我們的數據。
但是我們還沒有實際使用XML。
相反，我們只是使用JSON。
>> 所以基本上，它的一些數據 - 異步JavaScript和數據，
在這種情況下，JSON。
而我們的目標，因為我們提到的 早一點，
是能夠使一個 要求，有要求做
其在事 背景，而是繼續
做任何我們打算做的事。
然後當該信息是 準備好了，然後我們將其合併。
>> 因此，讓我們看看這是什麼 實際模樣。
而這一點，你應該 一點點的熟悉
從pset8，一個你剛滿研究。
因此，這裡是一個有效的jQuery 功能，我們可能
想知道about--這個美元符號。
所以說jQuery的功能，.getJson。
>> 什麼這個函數是它 需要一個URL和一些parameters--
所以我覺得在案件 pset8的，有人喜歡，
網址是articles.php和 參數是去=一些郵政編碼。
它說，OK，做一個請求 此URL具有給定參數。
而這恰好。
>> 當它完成，它要么 要成功完成
或者它會失敗。
因此，這是調用相當於 羅布並要求他做一些事情。
然後，當他叫回來，他要么 會說我做的還是我失敗了。
>> 所以，在你的情況下， 這樣做，你說好，我完成了。
然後調用這個函數。
在這種情況下，這將是一個 函數，它的某些信息。
一個我們通常關心的是數據， 我們實際上返回的數據
作為調用.getJSON的結果。
>> 你可以用它做什麼。
所以在pset8的情況下， 我們顯示它作為一個清單。
失敗將是一個函數 如果請求失敗時調用
無論出於何種原因。
和在pset8的情況下， 我們只是CONSOLE.LOG它。
上有問題嗎？
是啊。
>> 聽眾：我們可以只使用功能THETA 而不是函數，textStatus，jqHXR。
漢娜布隆伯格：當然。
所以，是的，我覺得在處理器集， 剛才我們看到的功能數據。
所以它只是the--是的，OK。
這就是我們在PSET看到。
這是完全正常。
>> 這些都只是如果你想 拉出來的更多信息，
這些都是事 你可以從.getJSON。
好問題。
還要別的嗎？
是啊。
>> 聽眾：所以.ge​​tJSON是阿賈克斯？
漢娜布隆伯格：OK。
因此，這是那種棘手的部分。
這是一個jQuery的功能，可以讓 你做的異步調用。
而那些異步調用，這是 我們一直提到的阿賈克斯。
是啊。
這花了我很長的時間來 拉開的時候我還是個學生。
聽眾：你能再說一遍嗎？
漢娜布隆伯格：是的。
我可以再說一遍？
這.getJSON功能， 這是一個jQuery的功能。
而這將會使 異步調用。
而這些異步調用，我們已經 是指那些為阿賈克斯。
>> 其他問題嗎？
我們剛離開幾分鐘。
而瑪麗亞的打算 包安全
然後我們要去 將即將完成。
MARIA ZLATKOVA：真棒，確定。
因此，這is--只取一對夫婦 幾秒鐘過目這一點。
這是不是真的很棒。
而有人可以告訴我為什麼？
這是怎麼回事在foo和可能能 有可能造成不好的東西，
而什麼叫？
是啊。
聽眾：如果參數這 通過在超過12個字符，
它可能溢出。
MARIA ZLATKOVA：對。
完善。
它叫什麼？
你剛才提到它。
>> 聽眾：緩衝區溢出。
>> MARIA ZLATKOVA：是啊，緩衝區溢出。
因此，這是我們 所說的緩衝區溢出。
而我們看到的foo裡面， 我們已經定義了我們的緩衝區，C，
與12的尺寸。
然而，在主，我們不 檢查以任何方式在所有
是否argv1--使 是第二個參數。
我們不檢查是否 它的尺寸是否合適。
>> 因此，如果我們有一個 尤其是惡意用戶
誰把一些說法，這是 超過12，以及隨後可能
超出該範圍 的說法，有一些可執行代碼
他試圖做壞事 用它;那麼這個，會發生什麼，
將覆蓋回報 foo的函數的地址，
使所述功能時 返回到執行該代碼。
再糟糕的事情可能發生。
這是否有意義給大家？
>> 我們怎樣才能防止這種？
有什麼建議麼？
基本上，內 潛在FOO，怎麼
我們可以檢查，以確保 這是不可能發生？
>> 聽眾：如果大小12超出， 你會分配更多的內存？
MARIA ZLATKOVA：建議是，分配 大小更多的內存超標。
事實上，我們可以做的東西 很多比以及更簡單。
我們剛剛得到的字符串長度 所輸入的說法，
檢查，如果這是不太 大於或等於12--
這就是我們想要的 是因為我們不希望
這超出我們的緩衝區的邊界。
然後如果沒有，我們 可以帶參數運行。
然後，如果是的話，我們其實是想 潛在YELLO處的用戶。
但是，這是我們如何做到這一點。
是。
>> 聽眾：莫非你 解釋的memcpy真正的快？
MARIA ZLATKOVA：哦，對不起。
是。
memcpy的需要什麼is--對不起，OK。
memcpy的需要無論是 在酒吧，無論是通過
到富作為命令行參數。
因此，要採取argv1。
Argv1在此被稱為酒吧。
因此，要採取酒吧， 這將其複製到c中。
>> 聽眾：OK。
MARIA ZLATKOVA：而且它會 copy--第三個參數只是指
多少它會複製到c中。
聽眾：嗯。
所以這一塊的複製這一切呢。
>> MARIA ZLATKOVA：是啊， 它複製它的全部。
是的。
首先，我們要確保酒吧是不 等於空，因為它是一個指針。
然後，我們得到欄的字符串長度。
我們要確保它的 小於或等於12。
然後，因為我們已經 確信，我們實際上可以
memcpy和確保沒關係。
任何問題？
大。
我有兩個真或假的問題。
誰能告訴我馬上 如果這是真的還是假的？
是的，這是假的。
究竟。
他們兩人都是假的。
因此，使用單一密碼 從來都不是好主意
因為如果有人知道 你的密碼，他們可以只
訪問自己的所有其他帳戶。
然後圖標什麼都不做 以保證安全。
我們通常應該尋找HTTPS 而不是HTTP和URL。
>> 還有一些其他類型的 我們已經提到的攻擊，
大衛在提到 講座中，SQL注入攻擊。
我們已經看到，如果我們don't--的 CS50查詢功能可確保SQL
不能出現注入式攻擊。
但是，如果我們沒有使用CS50， 報價，引文結束“查詢，”
我們必須確保該 用戶輸入實際上不是某些SQL
查詢，將導致所有 被丟棄我們的表
什麼不好 發生在我們的數據庫。
>> 會話劫持 另一種類型的攻擊
這種情況發生了一些不好的時候 人使用了一些受害者的會話
標識訪問登錄信息。
所以，一個很簡單的例子是 一樣，如果我們的公共電腦，
然後再壞的人記錄 他們有保存的cookies。
而且餅乾不改變會話。
>> 然後我們有受害人去 然後登錄到該網站。
的Cookie不會改變 對於一定的會話。
然後受害人登錄到 該網站，然後離開。
然後這個人誰追溯到 則仍可使用其會話ID
來訪問他們的信息。
所以這是一個例子 怎麼可能發生。
>> 然後，我就不會太擔心 關於具體的代碼或任何東西
這樣可能會導致此， 但有某種想法是什麼
參與這一變量是。
然後操縱頭 數據是另一種類型的攻擊
有大衛談到。
它只是指 有什麼可以當發生
響應時，HTTP 響應我們的頭裡面
沒有正確消毒。
>> 和任何fields--例如， 如果有人將覆蓋頭的一個
值中包含任何超過 他們應該contain--，實際上
含有，例如，一個200 OK狀態代碼，然後他們
可能做惡意 事情時，他們不應該。
但我不會太擔心 太多關於具體的代碼
這可能會導致此， 剛剛體悟
高級別之類的東西。
>> 我想這是所有 我們必須覆蓋。
驚人。
任何人有任何任何問題 那我們討論的東西呢？
是。
>> 聽眾：所以有幾分 更多的後勤問題。
是內容主要集中 在測驗1以後的事情呢？
>> MARIA ZLATKOVA：所以 問題是，是內容
主要集中在東西測驗1後？
所以在重點是 測驗1，除
我們需要關注的事情 pset5和大量的數據結構的
我們覆蓋。
我們不能說我們 可之前忽略任何東西
因為它是建立在它。
>> 因此，重點是，加pset5材料 像包括鍊錶，棧，
隊列和一切 漢娜去了。
>> 漢娜布隆伯格：對。
是啊，我們去了所有的C東西 在一開始非常快。
但是，一定要複查。
回去看測驗0審查。
>> 一對夫婦更多的後勤筆記， 只是當我們有您的注意。
我們將不得不辦公時間 無論在週一和週二晚上。
他們將在MD 119。
這是所有網站上的，所以 如果你不聽，無後顧之憂。
>> MARIA ZLATKOVA：8：30至11:00。
>> 漢娜布隆伯格：是的，8：30至11:00。
我們將在那裡。
我們將在那裡回答問題。
這是很肅殺和樂趣。
你們可以問任何問題 你對測驗1。
而測驗1是 週三，運氣這麼好。
如果你有任何問題，也許 再來說說我們在這裡一對之一。
涼。
非常感謝。
>> MARIA ZLATKOVA：非常感謝，伙計們。
>> 聽眾：耶。
>> [掌聲]