>> [音樂播放]
DAVID馬蘭：好吧，這是CS50。
這是八週的端部。
而今天，我們開始 填寫一些作品
當涉及到建設 事情在網絡上。
所以，記得在週一 我們花了很多的時間
在PHP中，這是該動態 編程語言
讓我們輸出，其中包括 東西，HTML和其他這樣的內容
我們將要看到的。
但是，我們還沒有真正了解了如何 我們要存儲任何信息。
事實上，幾乎任何超 有趣的網站，你今天的訪問
有某種數據庫 在後端，對不對？
Facebook的肯定是存儲大量數據 關於我們和Gmail存儲的所有一切
你的電子郵件。
>> 因此，許多其他網站不只是 靜態內容的信息。
這在某種程度上實際動態。
您所提供的輸入，它更新 該頁面為其他人。
你得到的消息，你送 消息，等等。
所以今天，我們來看看更接近 一期工程的基礎
你會潛入下一 本週，CS50融資，這
實際上是要你打造 東西不是C，但在PHP。
一個網站，看起來 有點像這樣
允許購買和出售 股票，實際上是
會後，實時繪製 股票數據來自雅虎財經。
所以最終，你將有 幻想為自己和用戶
那你實際上購買和銷售 股票，獲得了近實時
更新，管理 投資組合，所有這些都
將要求具有， 最終，用戶的數據庫。
>> 所以，在你自己的話， 特別是如果你不
超級熟悉電腦 科學或數據庫，是什麼
你知道一個數據庫是 現在，在非技術方面？
這是什麼？
你會如何形容它 一個室友還是朋友？
>> 聽眾：[聽不清] 信息[聽不清]
>> DAVID馬蘭：所以，信息的列表， 或store--的信息的列表
你可能要存儲 有關的東西，比如一個用戶。
什麼做的用戶有 與他們有聯繫？
如果你在Facebook或用戶 Gmail的，有什麼特點
我們所有的用戶有哪些？
像，什麼可能是一些 在電子表格中的列，這是我們
提到最後一次？
因為同樣，你可以 認為數據庫
真如看上Excel文件或者谷歌 電子表格或Apple號文件。
>> 那麼，你怎麼想的 當你想到一個用戶？
它們有什麼？
那是什麼？
>> 聽眾：名稱。
>> DAVID馬蘭：名稱。
所以，如果名字一樣，大衛·馬蘭 將是一些用戶的名稱。
還有什麼沒有用戶有哪些？
>> 聽眾：一個ID。
>> DAVID馬蘭：一個ID。
因此，像一個ID號，如您哈佛 ID或您的耶魯大學網絡ID等。
還有什麼可能用戶有哪些？
>> 聽眾：密碼。
>> DAVID馬蘭：密碼，也許一個 地址，可以是電話號碼，也許
電子郵件地址。
所以，有田，這一束束 排序可能失控
很快，一旦你開始 意識到，哦，讓我們存儲此
讓我們存儲這個那個。
>> 但是，我們如何真正做到這一點？
如此反复，心智模式 有今天的我們
深入實際的SQL， 結構化查詢語言，
是，看起來像這樣的數據庫。
這只是行和列。
你能想像谷歌電子表格 或任何數量的其他方案。
但是，什麼是有關MySQL，這是關鍵 數據庫軟件，我們要使用，
自由公開 available--的Facebook應用
它和任何數量的其它websites-- 數據庫存儲的東西關係性。
和關係數據庫 只是意味著一個字面
存儲以行和列數據。
就這麼簡單。
>> 因此，即使是像甲骨文的 你可能也聽到了
是關係數據庫。
和罩的下面，它 將數據存儲在行和列。
而甲骨文向您收取 大量的資金要做到這一點，
而MySQL的費用 你什麼的一樣。
因此，SQL是要給我們 至少四個操作。
選擇數據，就像讀的能力 數據，插入，刪除和更新數據。
換句話說，這些是 真正的四個按鍵操作
這將會讓我們改變 東西在這些行和列。
>> 我們將利用今天特別工具 學習SQL和它玩
再次調用PHP MyAdmin。
它是基於Web的工具。
總巧合的是， 它是用PHP編寫的。
但是，這將給予我們一個圖形化 用戶界面讓我們能夠真正
創建這些行和列 然後通過代碼與他們交談。
那麼，讓我們現在就開始 我認為是坦然
一種有趣的過程 構建網站的後端，
用戶不要的部分 見，但肯定做的關心，
因為那是相當的數據是怎麼回事。
如此，類似於C和一個 少一點像PHP，
SQL或支持一個數據庫 SQL中，具有至少這些數據類型
和其他人一束束。
CHAR，VARCHAR，INT，BIGINT， 十進制和DATETIME。
還有的一個整體 一堆其他的功能，
但讓​​我們通過這樣做 實際例子的方式。
>> 我要進入CS50 IDE 在這裡，在前進，我已經登錄
而且我還參觀了一個網址 該工具被稱為PHP MyAdmin。
而在問題設置七，我們將告訴 你到底怎麼去這個接口
為好。
在左上角， 注意到它說的講座。
而這只是意味著 事先，我創建
一個空數據庫名為講座 有沒有在它的電子表格呢。
有沒有行和列。
因為第一 事情，我們要做的
在開始創建表 那將存放我們的用戶。
>> 因此，從字面上過 這裡的權利，我
要告訴數據庫 我希望有一個表稱為用戶。
所以，這就像文件，我 要存儲在我所有的數據。
有多少列？
好吧，讓我們保持簡單了。
我只是想存儲像 的用戶名和用於用戶的名稱。
我們會從小事做起。
所以，我想兩列總。
而且我要繼續前進，然後點擊開始。
然後，對於這些 列，我要去
如果互聯網do-- cooperates--沒事，
所以我們要再試一次。
我要創建一個名為表 有兩列，用戶點擊Go，確定。
現在，我們已經得到了它的真快。
謝謝，非常出色地完成。
好吧，那我們要 這些列被稱為？
>> 因此，人會被稱為用戶名。
所以，我看到這裡 - 和接口 坦率地說變得有點難看，最終，
一旦你開始輸入所有這些數據。
但是，什麼是好的是那種 矛盾的是，我創建列，
但該工具具有呆呆 擺開行
這樣我可以配置這些列。
所以，有兩個空白有名稱下。
與這些領域中的一個予 要叫用戶名，
和其他領域我想調用的名稱。
>> 現在我不得不選擇 數據類型為這些事情。
如此，而在Excel中 和谷歌電子表格，
如果你想要一個列，你從字面上 只需輸入姓名或用戶名，按Enter鍵。
也許你把它大膽的臉 僅僅是為了清楚，但僅此而已。
你不指定 類型列。
現在，在谷歌電子表格或Excel中， 可以指定數據的呈現方式。
你可以去格式菜單，你 可以指定顯示此像美元符號，
顯示此像一個浮點值。
>> 因此，它在精神相似 這就是我們要去做，
但其實這是要逼 數據為特定類型。
現在，儘管剛才我 說，只有少數的數據類型，
這事實上是在 一大堆，而且他們
在不同程度上的特殊性。
而作為一個不談，你 甚至可以做花哨的東西
就像存儲幾何 內的數據庫。
你可以存放東西 如GPS坐標
居然發現，數學， 是接近別人點。
但是，我們要 保持這個超級簡單
而上到這裡，所有的 所謂的字符串類型。
>> 所以，這裡是一個列表 一大堆的選項。
CHAR，VARCHAR，TINYTEXT， MEDIUMTEXT，LONGTEXT。
而且它是一種勢不可擋。
不幸的是，有些 矛盾的是，以C，
一個CHAR是不是一個真正的CHAR。
如果您在數據庫中指定 您的數據類型為CHAR，
這意味著，是的，這是一個 CHAR，但它是一個或多個字符。
你必須指定 有多少個字符，你想要的。
那麼，什麼是一個典型的 長度用戶名？
是否有限制一般？
>> 聽眾：[聽不清]
>> DAVID馬蘭：16可能？
類似的東西。
要知道，早在 一天，它曾經是八強。
有時是16，有時候 它比那還要多。
因此，這並不 意思是給我一個字符。
這意味著我必須指定 該字段的長度，
現在，我可能會說16。
而且有一個權衡這裡。
所以，我們會看到一個時刻 這意味著之一，
每一個用戶名必須為16個字符。
但是且慢，M-A-L-A-N。如果是這樣的 我的用戶名和我只使用五，
你會建議數據庫 做了其他11個字符
我已經預留空間？
你會怎麼做？
>> 聽眾：[聽不清]
>> DAVID馬蘭：是啊，剛 讓他們都為空。
讓他們的空間。
但可能為空，所以 很多反斜杠零。
因此，在一方面，我們 現在確信，我的用戶名
不能超過16個字符。
而另一面是 如果我有一個很長的名字
或者需要一個很長的 用戶名像一些你
球員可能在該大學或 在Yale.edu，你不能有一個。
因此事實上，如果你 曾經註冊了一個網站
你挨罵了說 您的密碼太長
或者您的用戶名太長了，這是 僅僅因為一個程序員，當
配置自己的數據庫， 決定該字段將
不要超過這個長度。
>> 好吧，那麼，如果 我們繼續來命名？
應該多長一個 典型的人的名字是什麼？
多少個字符，16？
我猜我們可以 發現有人在這個房間
其中，由他或她的第一個加上最後 名稱是超過16個字符長。
那麼，什麼是重要的是，17好？
18？
25？
更大？
30？
>> 聽眾：[聽不清]
DAVID馬蘭：5000，噢，我的上帝。
所以，這可能是一個不錯的 上界，我們可以說。
在這裡，我們種得 做出判斷調用。
像，沒有正確的答案。
無限是不太可能的， 因為我們最終
要have--我們 要運行內存不足。
因此，我們必須做出一個 在某一點主觀判斷。
>> 非常常見的是，例如， 以use--，讓我指定CHAR在這裡
作為before-- 255是字面上 在這個數據庫軟件上限
年前。
因此，很多人的 只想說，挺好的。
255的極限。
讓我們只使用最高。
這是很荒謬的。
就像，如果你輸入某人的 命名為200加字，
這有點可笑。
>> 但是，請記住，ASCII不 對於角色的系統。
因此，特別是在一 很多亞洲語言
那裡的人物，我們不能 表達對喜歡我的美式鍵盤
鍵盤，一些字符實際 佔用16位而不是8位。
所以，這其實 是不是所有的不合理
我們需要更多的 空間，如果我們想擬合
除極美大字符 中心的那些我們傾向於討論。
因此，我們需要一些上界。
我不知道最好的是什麼， 但255通常是一個常見的一種。
25感覺低。
16，32感覺到低。
我會犯錯就在身邊 的更高的東西。
但是，有一個權衡，一如既往。
什麼是，也許，明顯 權衡保留255個字符的
在我的數據庫中每個人的名字嗎？
>> 聽眾：[聽不清]
>> DAVID馬蘭：那是什麼？
>> 聽眾：[聽不清]
>> DAVID馬蘭：這是一個 大量的內存，對不對？
M-A-L-A-N。我也只是浪費250 文字只是為了保存我的名字
防守，以防萬一有人 在班上有一個很長的名字。
這似乎是不適當的權衡。
>> 所以，事實證明，SQL， 這個數據庫語言，
實際上支持的東西 所謂的VARCHAR或CHAR的變量。
這是一種很好的，這 允許您指定不是一個固定的
寬度，而是可變的寬度。
更具體地，一 字段的最大寬度。
所以，這意味著一個名稱可以 不超過250個字符，
但可以肯定是少了。
並且數據庫將是聰明的。
如果放在M-A-L-A-N， 它一定會用五年，
也許六個字節像 結尾的空字符，
而不是額外花費 249或250字節不必要的。
>> 因此，這似乎是我應該 已經開始與這個故事。
但總有一個權衡。
因此，一方面，用戶名我已經 指定到被硬編碼在16
也許這不是 正確的電話，也許它
是的，但為什麼不使用 VARCHAR處理的一切？
>> 它的存在是有原因的。
為什麼不使用VARCHAR處理的各個領域 其長度不知道提前
如果這似乎是一個偉大的事情，對不對？
只使用盡可能多的空間 你需要達到這個限制？
>> 聽眾：慢。
DAVID馬蘭：拼寫？
聽眾：使得它更慢？
DAVID馬蘭：哦，它的速度較慢。
好，這幾乎總是 答案，坦率地說。
就像，什麼權衡？
它要么花費更多的空間 或者它花費更多的時間。
所以，在這種情況下，可能會變慢。
為什麼呢？
>> 聽眾：[聽不清] 確定[聽不清]。
>> DAVID馬蘭：好。
所以，你可能還記得，即使 PSED5，玩你的方法
到字典中，如果你有 動態分配內存或者保留
生長緩衝，即 實際上可以是緩慢的。
如果你要調用malloc 引擎蓋下，也許
這就是MySQL正在做的，所以 肯定有可能出現這種情形。
如果你想辦法 回到PSet--甚至
週二，當我們做的東西像 二進制搜索，甚至線性搜索，
大約每一個字漂亮的事情之一 在一列中的一個數據庫或每一個字
確切地說是相同的長度，甚至 如果一大堆這些字符
是空白的，是可以使用 對數據的隨機存取，對不對？
>> 如果你知道，每一個 字是16個字符了，
你可以使用指針運算，所以 說話，去美國的16，32，48，64，
你可以只跳 立即使用算術
任何在你的數據庫的話。
而如果它是一個VARCHAR， 你有什麼，而不是必須做的？
>> [電話鈴聲]
>> 如果它是一個VARCHAR，你 不能使用隨機接入。
你必須尋找什麼或做什麼？
是嗎？
>> 聽眾：[聽不清]
>> DAVID馬蘭：你看 通過whole--跟踪
通過整個名單 尋找什麼，最有可能的？
什麼樣的特殊價值？
聽眾：[聽不清]
DAVID馬蘭：展望 對於空終結
該標定詞語的分離。
如此反复，權衡和 沒有正確的答案。
但是，這是在哪裡，特別是 當你的用戶獲得很多
並在服務器上的負載時， 使用人數就變得很高，
這些其實都是平凡的決定。
因此，我們可以將這些作為這一點，但 讓我們向下滾動到正確的
在這裡。
現在，有一對夫婦列 在這裡我們必須做出一個主觀判斷。
是否有意義，以允許用戶的 名，一個用戶的用戶名或用戶的
名，為空？
也就是說，只是空白。
感覺有點無厘頭，所以我 不會去檢查那些箱子。
但事實證明，在 數據庫，你可以說，
有人可以有選擇地將這個值。
該列沒有 實際上在那裡。
>> 現在，有這個下拉菜單。
同時注意我仍然 在第一行中出現，
所以我說的是現在的用戶名。
而事實證明，一個數據庫， 不像一個簡單單純的電子表格，
擁有強大的功能稱為索引。
和索引是告訴的方法 數據庫事先知道我的人
我比你更聰明。
>> 我知道是什麼類型的查詢，請選擇 或插入或刪除或更新，
我的代碼將結束 了做這個數據庫。
我想讀大量的數據。
我想插入大量的數據。
我希望不斷 刪除了大量數據。
如果我知道我將要 訪問字段名一樣不少，
我可以搶先告訴 數據庫中，我懂得比你多，
我想法令， 你應該指數這一領域。
其中，索引字段或一列 意味著提前數據庫
應借鑒一些想法的，比如， 4週，五，六從CS50
實際上建立 類似二進制搜索
樹什麼的 一般稱為乙樹
你會學習 在這樣一個類CS124
在哈佛，一個算法類， 或任何其他地方。
>> 數據庫及智能 誰實現了它的人
會找出如何存儲 的信息表
在內存中，以便搜索和 其他的操作速度非常快。
你不必這樣做。
您沒有實現 線性查找或二進制搜索
或合併排序或選擇 排序，任何。
該數據庫會為你，如果你告訴 它搶先索引這一領域。
>> 你也可以看到，有 其他一些特點
我們可以告訴數據庫執行。
可能是什麼意思，如果我選與眾不同 從這個菜單，只是憑直覺？
是嗎？
>> 聽眾：[聽不清]
DAVID馬蘭：是的， 用戶名必須是唯一的。
這是好事還是壞事 一個數據庫，與用戶網站？
如果用戶名是唯一的？
是的，也許。
如果這是什麼 領域，我們用它來登錄，
你真的不希望人們有 相同的感覺，或相同的用戶名。
因此，我們可以有 數據庫執行有這麼
現在在我的PHP代碼或任何語言， 我沒有，比如，檢查
一定做到這一點的用戶名 存在之前，我讓別人註冊？
該數據庫不會讓兩個人命名 大衛或馬蘭斯登記在這種情況下。
>> 和作為題外話，即使這 菜單僅允許您選擇一個，
唯一索引是這 超快速的性能指數，
但它也實施唯一性。
我們再回過頭來什麼 另外兩個是指在短短的時刻。
同時，如果我去 我的第二排，這
是用戶的名字，我應該說明 該名稱應該是唯一的？
不，因為你可以肯定 have--有沒有兩個大衛
馬蘭斯在這個房間裡，最有可能的。
但是，如果我們選擇一個不同的名稱， 我們可以肯定有衝突。
>> 回想哈希表等。
所以，我們當然不希望 以使該名稱領域獨樹一幟。
所以，我們只是要離開 隨著破折號，破折號，破折號，什麼都沒有。
而且我要離開 一切孤單。
事實上，大多數這些字段 我們不會去關心。
而當我準備好保存此， 如果互聯網合作，
我點擊保存，而且非常，非常，非常 慢慢的數據庫是否得到保存。
現在我回到這個 接口，這不可否認，
是壓倒性的第一眼。
但是，所有我要做的就是點擊 就在左上角的Word用戶。
我要在這裡走了，點擊 用戶，默認情況下，它
已經執行了一些SQL，但 更詳細的介紹了一下。
這是我做的只是一個匯總。
而且不用擔心，你看 何況拉丁美洲和瑞典語這裡。
這些只是默認 設置，因為MySQL本來，
或者PHP MyAdmin，發生了兩個中的一個 要寫入一些瑞典人民。
但是，這無關緊要在我們這裡的情況。
>> 好吧，那麼，為什麼 這一切有意思嗎？
事實證明，我可以插入數據 成通過編寫代碼的數據庫。
而我繼續前進， 在這裡我的文件，我
要繼續前進，並假裝 這被連接到該數據庫，該數據庫
它不是此刻，卻會 是當我們到的問題設置七人。
而且我要繼續前進， 執行一個叫做查詢功能，
我們會給你的問題 設置SEVEN公司的分銷代碼，這
至少需要一個參數， 這僅僅是一個字符串。
一串SQL代碼。
所以，你要學習如何 寫結構化查詢語言。
>> 如果我想插入新行到我 數據庫，因為有人已經提交
一個形式我的代碼，我會從字面上 寫INSERT INTO用戶以下
字段：用戶名， 逗號，名稱，價值，
現在我需要插入 像馬蘭，和報價，
引文結束“大衛·馬蘭。”現在， 即使對那些不熟悉SQL，
為什麼我用單引號 這裡面綠色的字符串？
可能是什麼原因嗎？
>> 請注意，我是相互混合兩種語言。
查詢是一個PHP函數， 但它需要一個參數。
而這樣的說法有其自身是 寫在所謂的另一種語言
SQL，結構化查詢語言。
所以，一切，我 這裡剛剛凸顯
就是這種語言稱為SQL。
那麼，什麼是用單引號， 只是作為一個快速的完整性檢查？
來吧。
他們是字符串。
所以，報價，引文結束馬蘭和報價， 引文結束大衛·馬蘭是字符串。
而只是想直觀地現在， 知道你知道C和PHP是什麼，
我為什麼不這樣做，這是我平時 使用雙引號的字符串？
為什麼我不希望這樣做？
是嗎？
>> 聽眾：[聽不清]
DAVID馬蘭：沒錯。
因為我已經使用 在途中雙引號
參數之外 以PHP函數，
我只想混淆解釋。
它不知道，做這些一起去？
難道這些一起去？
所以，我交替代替。
>> 或者，我可以做這樣的事情， 反斜杠引號和反斜線報價。
坦率地說，這只是開始 得到非常不可讀和醜陋。
但是，這將實現 相同的結果為好。
>> 所以，如果我要執行此 現在查詢，讓我們看看會發生什麼。
現在我要去和而繼續前進 不是執行的PHP代碼，這
在這裡，你會玩 在問題設置七，
我要去，而不是去PHP MyAdmin。
而且我手動去 去到SQL標籤，
讓我放大在界面上。
而且我要粘貼 我剛才輸入的東西。
和顏色編碼有 改變了一點點，現在，
只是因為節目形式 事情有點不同。
但是請注意，所有我做 是我說的，插入到用戶。
我指定，那麼，在一個逗號 分隔括號的列表中兩個
我想插入的字段， 然後，我從字面上說，值
緊接著又括號， 然後這兩個值
欲插件，和 現在好措施，
我把一個分號結尾。
所以，這不是C.這是不PHP的。
這是現在的SQL，而我把它粘貼 這個基於Web的界面，
只是要告訴我， 當我點擊進入，
在數據庫中執行此查詢 運行CS50的IDE內。
>> 因此，這是很好的。
注意，所述一排 插，去超級快，
0.0054秒插入的數據。
所以，這聽起來很健康。
它重新格式化我的查詢 我在這裡只看到它
在那種顏色編碼版本。
但現在，如果我點擊 瀏覽，發現，即使
儘管有上有很多雜亂的 在屏幕上，我的表，現在有兩排。
>> 所以，讓我繼續前進，做一套。
取而代之的是，讓我 再次去到SQL標籤。
這一次，我會插入類似 羅布和他的名字將是羅布鮑登。
鮑登。
讓我們點擊保存。
哎呀，寧願去。
>> 再次單擊瀏覽， 現在發現我有兩行。
所以，這只是一種方式更加複雜 開放的谷歌電子表格的方式
只輸入一行到一個列。
但是，什麼是關鍵的是， 我們現在有語法
與編寫代碼，以便 最終，我們實際上可以
做一些與此。
回想一下，PHP支持 超級全局變量。
>> 什麼是美元內 登錄下劃線得到PHP？
我們看了看在一個 兩個簡單的例子。
而在PSet6，記得你有個招呼 點PHP使用這種變量。
是什麼在那裡去？
或者是什麼呢？
大聲一點。
>> 聽眾：[聽不清]
>> DAVID馬蘭：這是一個雪 種子陣列，這
是說的只是一種奇特的方式 陣列具有鍵值對。
而且按鍵不是數字。
他們的單詞或字符串。
具體而言，什麼 那些鍵值對？
他們在哪裡來的呢？
對不起？
>> 聽眾：[聽不清]
DAVID馬蘭：沒有？
哪裡做這些關鍵 值對來自哪裡？
再說一遍？
了嗎？
我是唯一的一個聽證會的東西嗎？
>> [笑]
>> 這是正確的，是嗎？
>> 聽眾：[聽不清]
DAVID馬蘭：是啊，他們 來自查詢字符串。
所以，如果你在時間倒帶 當我們發揮與谷歌
我們已經去了Google.com斜線 搜索問號Q等於貓，
如果我敲回車，如果 谷歌是在PHP實現，
PHP代碼，谷歌寫道： 將有機會獲得美元符號
強調GET其中內 是一個關鍵稱為Q和一個值
稱為貓，它可以然後使用 用來做與實際的搜索。
>> 所以，其實，我要去 現在要做的就是回到我的PHP代碼
你會再次看到更多的PSet7。
取而代之的堵漏 在硬編碼值，這
似乎並不像一個 非常有活力的網站，
我想給你一個傳情 你的實際代碼會做。
你會投了兩個 問號是這樣的。
我不知道用戶名是什麼。
我不知道是什麼 名稱將是，
但我知道我可以 動態地得到它們。
>> 所以，如果我們現在編寫的代碼 在谷歌的服務器上運行的代碼，
或者，如果這是個招呼點 PHP，附帶PSet6，
我要傳遞到 查詢功能
就像printf的，其他兩個參數。
GET，報價，引文結束的用戶名， 和GET，報價，引文結束的名字。
現在，請注意什麼 一般結構是在這裡。
我已經得到了左邊 呼叫的右手側，
在PHP這個函數調用查詢。
我仍然有作為第一 的說法，文字只是一個字符串。
>> 但文本的字符串 寫在一個叫做SQL語言。
坦率地說，這不是一個很大的語言。
我們只是要說說 它正式的今天，真的。
然後在問題設置 七，有相對
幾個特點，我們是 要充分利用。
問號，不過，平均插上 值這裡插上另一個值
在這裡。
而通知中，我遺漏了什麼 來自各地的quote--該死
它 - 各地報價 標誌著這個時候。
我省略報價 周圍的問號標記，
對不起，這一次。
>> 那麼，什麼是好的關於這個 問號功能，
PHP傾向於支持，Ruby和 Python和其他語言，
這也就意味著插件在一些 珍惜在這裡，你知道嗎？
你找出是否使用 單引號或雙引號。
不要打擾我與那些 智力無趣的細節。
但是，要確保它是正確的 所以，我的代碼是最終
操作和安全的，這 將不久有一個含義。
>> 現在，有多少爭論總量，只是 要清楚，是查詢功能回吐？
任何人想投了兩個多？
三？
當然，為什麼？
為什麼三頂？
>> 聽眾：[聽不清]
DAVID馬蘭：沒錯。
第一部分是字符串。
第二個參數是美元符號 強調GET支架的用戶名。
第三個參數是 同樣的事情，但只是名字。
因此，換句話說，現在 如果我有一個網頁表單
這不得不文本字段， 一個用於該用戶的用戶名，
一為他或她的名字，只是 就像你在一個網站上看到
當您註冊 一些網站，這可能
是在後端的代碼 實際執行插入現在
到數據庫中。
>> 現在，通過對比，讓我們快進。
假設一個用戶現在 登錄和你想
編寫檢查是否PHP代碼 誰剛剛登陸年代的人
實際上是一個用戶，你可以 使用非常簡單的語法。
你可以說選擇，讓我們說 明星，其中星級意味著一切。
我不知道我 希望，所以才給我
從表中的所有列 所謂的用戶在哪裡，這是很好的。
選擇支持什麼 所謂的謂語，這是
像排位賽你想要的方式。
其中username等於 報價，引文結束馬蘭。
所以在這裡也一樣，我已經嵌入 參數內
一個PHP函數，一行SQL代碼。
這SQL代碼此 時間是從字面上去
搜索報價，解除引用馬蘭。
>> 現在，這不是那麼有用， 所以我打算跳過
而我要放好 這個技巧的布雷迪，並進入
和插件，而不是 問號在這裡。
所以，僅僅是明確的，有什麼 應我的第二個參數
可如果有人剛剛登錄我 要檢查，如果他或她實際上是
用戶？
聽眾：[聽不清]
DAVID馬蘭：是的。
我聽到了美元符號下劃線 獲取報價，引文結束用戶名。
這應該返回給我 任何行的在我的數據庫
有馬蘭的用戶名。
現在有希望，我要找回 零，如果馬蘭從來沒有來過這裡，
或者一個，如果他。
我不應該回來 兩個或三個或四個。
為什麼呢？
>> 聽眾：[聽不清]
>> DAVID馬蘭：我說的唯一的，對不對？
原因很簡單。
因為我說，這是必須 是唯一的，只是邏輯上，
你只能有零個或一個馬蘭斯 在這個特殊的數據庫表中。
現在，順便說一句，只要你見過 它，即使我一直使用GET
並且即使PSet6僅用於 GET，你當然可以有POST。
而記得，郵政是另一 技術提交信息
從一種形式，但它 不會在URL顯示出來。
這是一個更安全一點肯定是 像用戶名和密碼，
這PSet7會，其實涉及。
>> 因此，讓我們做到這一點在PHP MyAdmin看看會發生什麼。
我要去到MySQL選項卡。
並注意為默認值 PHP MyAdmin，只是為了嘗試是有益的，
是從用戶的其中一個選擇的明星。
好了，一個是總是正確的，所以 這有傻有效
只是選擇了一切。
但是，我要成為一個小 更多的迂腐和手動
鍵入了擇思达用戶的。
>> 現在從技術上來說，你可以 引述的表的名稱。
這是罕見的，你必須這樣做， 但要注意這些都不是
你的正常報價的美式鍵盤上。
這就是所謂的反引號，這 一般是在頂部左手
角落你的鍵盤。
但它是罕見的，你會 確實需要費心的是，
所以我就忽略它們無論如何。
所以，現在，讓我繼續前進，砸去。
有多少行，我應該得到 回來時，我選擇從用戶的明星？
>> 聽眾：[聽不清]
DAVID馬蘭：行數，確保萬無一失。
但是，有多少在這 具體的故事，現在呢？
二，因為當時 我和有搶。
所以，如果我點擊進入，我看到視覺上 我已經得到了回來，的確，兩排。
有很多雜亂的 屏幕上，但我只看到兩行。
相反，如果我這樣做又做 擇思达用戶的，其中username
等於報價，引文結束 馬蘭，現在如果我點擊進入，
我只打算拿回一行。
最後，如果我做 這樣的事情，假設
我不關心 讓一切，
這是一種毫無意義的，現在， 因為只有兩列。
它不象我選擇 一個龐大的數據量。
假設我繼續前進， 做選擇的名字從
用戶，其中username等於馬蘭， 什麼是好的關於SQL誠實，
是，它確實少了點 你告訴它做。
這是非常簡潔的，但是你從字面上 只是告訴它你想要做什麼。
從用戶那裡選擇名稱 用戶名等於馬蘭。
它真的是明確的。
所以，現在如果我打去，有多少 行我該怎麼回去？
其中，因為它只是馬蘭，希望。
或零，如果他不 還有，而是一個最大。
>> 有多少列，我會回來？
有多少列？
這一次，我只是去 得到一個，因為我沒有
選擇明星，這就是一切。
現在，我只選擇名字，所以我 剛回到一列一行。
它看起來有點適當地 可笑的，只是在尋找超
從小喜歡這一點。
那麼，到底發生了什麼？
當你執行一個SQL 使用select查詢，
你在說什麼 從數據庫返回
就像一個臨時表 有行和列，也許，
但忽略任何 是不是你真正選擇。
因此，這就像如果有人有一個大 所有的學生電子表格
註冊一些 學生團體，和你說，
給我所有誰一直在大一 註冊我們的學生群體，有什麼
在你的同事 學生團體可以做
是他們可能只是手 你整個電子表格。
這就像說選擇明星。
這是一個有點惱人，如果 你只想新生。
所以，如果你不是說， 從數據庫表中選擇星
其中，一年等於 報價，引文結束大一，
就好像你的朋友 在學生組
從字面上突出顯示，並 只複製大一行，
粘貼成一個新的谷歌 電子表格或Excel文件，
遞給你回來了 僅生成的文件。
這一切是怎麼回事 在概念在這裡。
>> 所以，最後，我們能做的 一些很花哨的東西
通過存儲之類的東西用戶名 和密碼等。
但是，事實證明，我們應該做的 有點不同莫過於此。
這並不是說聰明，只 存儲的用戶名和密碼。
前面有人，我覺得 到這裡，提出一個ID。
現在，一個ID可以像 哈佛ID或耶魯大學的網絡ID，
但它可能是更簡單的 在我們的數據庫的情況下。
事實上，通常情況下 是有另一列。
我要去 進取，編輯我的表。
如果你玩弄 這個接口PSet7，
你會看到，你可以檢查 這裡這個按鈕，添加
在該表的開頭的字段。
現在，如果我點擊進入，這是怎麼回事 給我的那些形式之一
從早期。
我要添加一個名為ID字段。
而且我要使它成為一個數字類型。
>> 我有一大堆 值的Numerics的。
我只是要選擇一個INT和 不用擔心不同的尺寸。
我沒有指定 的長度或一個值，
因為這將是 32位不管。
屬性中，我們沒有看到過。
任何興趣任何這些 菜單選項，這個時候？
對於INT？
那你求婚？
沒有？
做這些有意義嗎？
是啊。
是啊，無符號的，對不對？
>> 一般情況下，如果我們打算給 大家唯一的編號，
就是這個故事 去，我真的只是想
一個人有這樣的零數 一和二，三和四。
我並不需要處理 用負數。
這似乎只是過於複雜。
我買4十億可能的值， 不是四十億可能的值，
所以我只是一倍 我INT的能力。
順便說一句，如果你想關聯 這有點像臉譜，
早在排序我一天的 Facebook的第一個走了出來，
我相信他們是 利用其MySQL數據庫
來存儲用戶的 標識符，只是一個int。
但當然，還有很多 真正的人在世界上。
有很多假冒的Facebook 佔世界。
所以最終，Facebook的溢出 int的大小，四十億
值。
這就是為什麼，如果你看看 四周，有網站
可以告訴你什麼 您獨有的ID是。
如果你從來沒有選擇一個用戶名的 Facebook的，你會看到你的唯一的ID。
我認為這是個人資料點PHP 問號ID等於什麼。
這就是現在有點像一個大 INT，或者很長很長，如果你願意，
這是一個64位的值 什麼可比性。
>> 因此，即使在現實世界中做這些 最終的問題有時關係。
而事實證明，在這裡，如果我 給我的所有用戶一個唯一的ID，
我想成為超級明確的， 微創使這一領域獨樹一幟。
但事實證明，有一 一塊命名今天太
這是一個主鍵。
如果你正在設計一個數據庫 表，事先知道
在該表中的一列 應該和唯一標識行
在表中，要 指定它告訴數據庫，
這是我的主鍵。
有可能是重複的 在其他領域，
但我說的是數據庫，這 是我的主，我最重要的領域，
有保證是唯一的。
>> 現在，這似乎是多餘的。
現在我提議，我們 添加，點擊保存在這裡，
現場called--，我要去 繼續前進，點擊AI，
我們再回過頭來 在某一時刻，保存。
現在，我提議 我的表是這樣的。
我有一個INT字段名為ID， 所謂用戶名的煤焦領域，
所謂的名稱一個VARCHAR領域，但ID， 如果它的主，因此唯一的，
為什麼我只是浪費 時間推出什麼
有效地是一個第二唯一 現場叫號這是一個INT？
>> 用戶名，召回，是 已獨特的，我們說的。
所以只是在邏輯上，你並不需要 任何數據庫經驗理由
通過這個，為什麼 也許我已經介紹
一個int我唯一的標識呢？
什麼是this--再說一遍？
>> 聽眾：[聽不清]
>> DAVID馬蘭：隨機 訪問更容易，為什麼呢？
>> 聽眾：[聽不清]
DAVID馬蘭：是的，這 剛剛訪問號碼。
所以，如果你覺得這真的 是一個表，像陣列，
現在我唯一標識符 我可以四處跳動。
而比這更好的仍然是， 一個int有多大將是一次嗎？
32位或4個字節。
>> 我的用戶名有多大要多大？
最大？
16個字節。
>> 所以，如果你真的關心 你的代碼的性能，
回想PSet5，你會喜歡 要搜索的一個四字節的值或一個16
雙字節值，對不對？
這真的是這麼簡單。
你所要做的四倍工作 要搜索的用戶名，因為這些
是16個字節。
所以，你必須從字面上 比較所有16個字節是
肯定是的，這是用戶名我想要的。
而對於一個INT，可以 這樣做只有四個字節。
>> 而作為一個拋開那些 感興趣的計算機硬件，
事實證明你能適應像 INT或某事的32位值
所謂在計算機中的寄存器 CPU，這意味著它的超，
超快速，即使在最低 計算機硬件水平。
所以，這裡只有好處各地。
那麼，這是什麼意思？
事實上，當你設計一個 數據庫表中，幾乎所有的時間
你要沒有 只有你所關心的數據，
而且像 一個唯一的標識符
因為這會 讓我們做其他的事情。
而且，我們絆倒一個問題在這裡。
>> 假設用戶具有不 只是用戶名和名稱，
但他們也有像城市 與州和郵政編碼，至少
這裡是在美國。
所以，我要繼續前進 和公正快說，
給我三個多列 在表的末端。
而這將是城， 這將是國家，
這將是郵編。
>> 現在，市，什麼樣的數據類型 要這樣，也許？
VARCHAR？
我不知道是什麼 最長的名稱城市。
某處在美國，有 可能是一些可笑的長字，
所以我們就一起去255，有點 歷史或隨意。
國家，你要怎麼辦？
主觀判斷，對不對？
什麼是可能是最有效的？
多少個字？
也許只有兩個，如果我們能 逃脫正是這樣做，
象，馬馬薩諸塞州等等。
所以，我要去兩個CHAR值。
>> 郵政編碼是一個有趣的。
我們在這裡的02138，使 建議我們應該用什麼呢？
這是一個INT，對不對？
INT，INT，短？
短會工作。
沒有？
CHAR或五人，但我想要一個INT。
為什麼要推回一個INT？
從這個勸我。
什麼是愚蠢的關於一個INT，我的想法？
是啊。
>> 聽眾：佔用更多的內存。
>> DAVID馬蘭：佔用更多的內存。
四個字節，但你 提出一個郵政編碼
五字節或有人在為CHAR， 這感覺就像誒，這不是真的
的情況。
>> 好了，有趣的故事。
幾年前，當我用用 微軟的Outlook我的電子郵件，
我最終想切換到Gmail。
所以，我出口我所有的 從Outlook聯繫人為CSV文件。
逗號分隔值， 這只是意味著我
有我所有的朋友的名字和最後一個 名字和電話號碼和郵政編碼
和所有的。
然後我做了 打開它的錯誤
在Excel中，這是一個 電子表格程序，
了解CSV文件，因為我們已經看到了。
但後​​來，我一定打一樣， 指揮或控制S上一個點。
和Excel顯然在當時 有其中任何一個特點時它
看到一個數字，它試圖有所幫助。
如果這個數字開始 零，它只是擺脫他們。
為什麼需要領導 零點的整數？
他們是毫無意義的，數學。
他們不是毫無意義 在美國的郵政系統。
所以，我已經好幾年了， 到今天，我還是
有朋友說，當 我需要一個人是難得一遇
解決這些天， 我還是會看到我
在劍橋的朋友， 馬薩諸塞州，2138。
而這很煩人，如果你 試圖以編程方式排序
產生信封或只是記下來。
那是因為這個原因， 我選擇了錯誤的數據類型。
所以，我很喜歡你的想法。
讓我們用一個煤焦領域。
除了五個大字， 有一個角落的情況下。
如果您仍然發送郵件， 有時郵政編碼這些天，
他們一樣，加上四個。
因此，我們需要一個連字符，然後 我們需要四個數字。
所以說實話，它可以 去很多不同的方式。
>> 現在，我要保持 它簡單，我只是
會說，這是一個 5 CHAR值和我們
要跳過整個儀表板加上四個。
但這些都是種權衡。
你能想到的 產生同樣的問題
與電話號碼或其他領域。
>> 而現在，這實際上是 一個愚蠢的道路往下走。
假設這兩個Rob和我和漢娜 和瑪麗亞和[？ Davon？]和安迪
和其他的工作人員都住 在劍橋，馬薩諸塞州，02138。
這實際上覺得自己很蠢，我很 添加到我的用戶表，市，州，
和拉鍊。
為什麼呢？
>> 聽眾：[聽不清]
>> DAVID馬蘭：再說一遍嗎？
聽眾：[聽不清]
>> DAVID馬蘭：他們總是 要去一起去，好嗎？
當事實證明，我們曾經認為 這是事實，直到我們徹底
找遍了整個美國， 和原來有
有一些不同之處 在多個城市有
同一個zip，這是奇怪的。
但是，如果我們現在02138規定的 永遠是馬薩諸塞州劍橋市，
為什麼在世界上，你將存儲在 數據庫劍橋和MA和02138
對我和漢娜和羅布和 對於[？ Davon？]和其他人誰住
這裡在劍橋，它的 完全是多餘的。
>> 我們應該擺脫 只存放了什麼？
只是郵政編碼。
不過，如果我們只存儲了 郵編，我想，也許，
我的網站知道哪裡是02138。
所以，我需要另一個表。
這就是確定。
而事實上，這是一 設計表的設計流程
你會做的PSet7以及由此 要分解出的公共數據。
就像我們已經分解出 常見的代碼，並分解出常見的
從CSS，這裡的風格 太在數據庫中，
如果我只需要02138唯一 識別一個人的故鄉，
不存儲馬薩諸塞州劍橋市的 在表中每一次縫補用戶。
>> 相反，有一個單獨的表稱為 拉鍊，應該有什麼樣的列？
也許一個ID字段，只是，因為 的原則，我們現在談論。
可能是一個zip字段為02138。
然後大概是什麼其他列？
城市和國家，但只有一個 行02138，一排為02139，
一行90210。
這是字面上 所有的郵政編碼，我知道。
>> 所以，現在，你能做些什麼？
這是有問題的，因為 現在我有兩個表。
所以，我的用戶大多是在這裡， 但他們的城市狀態信息的
在這裡。
所以，事實證明用SQL，有 實際的方式加盟信息，
你會看到在pset中。
>> 但事實證明，你可以 做這樣的事情。
擇思达從用戶，ON JOIN拉鍊 用戶點綴拉鍊等於拉鍊點綴拉鍊。
這是一個小羅嗦， 無可否認，但這只是
意味著選擇一切從 服用我的用戶表的過程
和我的拉鍊表。
加入他們一個 字段它們具有在列中。
因此，從字面上做的事情 這樣，給我回來
新的臨時表 這是更廣泛的，這是更大的，
具有所有的 列從他們兩個。
這很簡單，將是 語法做這樣的事情。
>> 所以，有這種進取， 但也有是怎麼回事
是其他的設計決策，你會 必須做出，不僅與索引
但也遇到了挑戰。
事實上，還有一個挑戰 在任何數據庫設計
因此有時兩個人可能希望 訪問數據庫的相同的行
表。
所以，這是我們要 遇到PSet7為好。
>> 不過，我想我會看一眼 攻擊是可能的SQL。
什麼是一些 可能出現的問題？
所以，你會在PSet7遇到這種。
我們告訴你徹底是什麼 對於這個問題的編碼解決方案。
但是，如果你把一個更高層次的類， 尤其是在操作系統，
你會遇到 問題原子性，
試圖做的問題 多東西一下子
不會中斷。
>> 我想我會介紹這個 對於PSet7理念與隱喻
我學會了自己在馬戈 塞爾策的CS164操作系統
一流年前。
假設你有這些宿舍之一 在你的宿舍或家裡的冰箱，
和你有一個真正的嗜好牛奶。
所以，你從班回家 有一天，你打開冰箱。
哦，該死的。
還有在冰箱裡沒有牛奶。
所以，你關閉的冰箱， 鎖了門，鎖定你的宿舍，
走在拐角處 到CVS，在排隊，
並開始檢查出了一些牛奶。
而這將需要一段時間， 因為那些該死的自助結賬
櫃檯採取永遠仍要使用。
所以，同時，你的室友回家。
他或她很喜歡牛奶為好。
他們走進宿舍裡， 打開冰箱，哦，實在可恨。
有沒有更多的牛奶。
>> 所以，他或她也 去指日可待。
但現在，因為有像兩個 或三個或四個CVSes附近，
他們碰巧去之一 不同的人在廣場上。
所以現在，幾分鐘 後來，你們倆
回家，唉，最嚴重的問題不斷。
現在，你有太多的牛奶 因為它會走向末路。
你喜歡牛奶，可是你 真的不喜歡牛奶。
>> 所以，現在，這是一個昂貴的 錯誤，因為你們倆
製成的基礎上作出決定 一些變量的狀態
是在過程中 由你而改變，
要去擠奶啟動。
那麼，什麼是可能是一個人 解決這一問題？
聽眾：[聽不清]
DAVID馬蘭：留一個便條，對不對？
總是留下一張紙條，如果你 熟悉這個節目。
是的，有我們兩個人。
所以，總是留下一張紙條，或 從字面上鎖定的冰箱
與某種掛鎖的或 一些對像的頂部。
但是，這實際上是將 關鍵的問題，數據庫設計，
尤其是當你可能有 多瀏覽器，多的筆記本電腦，
多個用戶都試圖 一次更新信息。
特別敏感的信息 像財務信息，
其中有一個股票交易 網站就像你會的建設，
如果要檢查多少錢什麼 你有，然後如果你有足夠的，
買一些股票？
>> 但是，如果別人誰 有一個共同賬戶與你
是同時嘗試 買了一些股票？
因此，他或她是檢查 賬戶餘額，你們倆
得到相同 答案，沒有牛奶。
或者兩者你回來的答案， 你有$ 100的賬戶。
你們都試圖做出決定 買一股的部分公司股票。
>> 而現在，會發生什麼？
你有兩股？
你有沒有股份？
這樣的問題可能會出現。
所以，我們會遇到。
SQL注入攻擊，幸運的是， 是什麼，我們將幫助您，
但這些殘暴 常見的這些天還在。
所以，這僅僅是一個例子。
我不作任何聲稱， 哈佛密碼系統
容易受到這種特定攻擊。
我們已經盡力了。
但是，你知道，我們 有這樣一個領域。
而耶魯大學的網絡ID也有類似的 看著屏幕上的這些日子。
而事實證明，這也許是 PIN系統PHP實現。
>> 而如果它were--它是不是 - 他們 可能看起來像這樣的代碼。
它們有兩個變量。
給我的用戶名和密碼 從後超全局變量
我們前面談到。
也許哈佛有一個查詢 像選擇星級用戶的
其中username等於說 和密碼等於這一點。
並注意我只是 插上使用
從其他的花括號符號 一天，這意味著只需插入值
在這裡。
我不使用的 問號技術。
我沒有任何第二 或第三個參數。
我只是從字面上 構造了字符串自己。
>> 這個問題，不過，是 如果有人喜歡scroob，
這是一個參照膜， 登錄像這樣的東西，
我已經刪除了點 通常掩蓋
密碼，如果他是 尤其是惡意
和他的密碼可能是12345， 每個稱為電影“太空砲彈”
但他批判類型一 五後單引號，
然後從字面上的詞或 在空間，然後報價，
引文結束一等於報價之一， 但是請注意，他遺漏了什麼？
他省略了報價右側 他被省略左邊的報價。
>> 因為如果這個攻擊者 scroob的推定
就是人們誰寫 此PHP代碼並沒有那麼亮，
也許他們只是有一些單 引述周圍的插值
在大括號的變量？
所以也許，他可以種 中完成他們的思維
對他們而言，但在某種程度上這回事 讓他侵入了PIN碼系統。
換句話說，假定 這是在代碼
我們現在插上什麼scroob類型。
而且它是紅色的，因為它是壞的。
>> 而基礎文本 是他所鍵入的，
scroob可以欺騙哈佛大學的服務器 為構建SQL查詢
字符串，它看起來是這樣的。
密碼等於12345或一等於之一。
其結果，從邏輯上講， 的是，這將記錄scroob
如果在他的密碼是 12345或者一個平等
一個，這是當然的總是為真， 這意味著scroob總是得到研究。
>> 因此，該方式來解決 這一點，因為在很多情況下，
將更多的防守寫。
使用類似我們 實際的查詢功能，
您將在PSet7，我們插上看到 像問號在這裡。
而其中的美 查詢功能我們
給你的是它抵禦這些 所謂的SQL注入攻擊，其中
有人欺騙你的代碼進入 注入自己的SQL代碼。
因為什麼查詢功能 我們給你會怎麼做，
如果使用問號語法 和第二在這裡第三個參數，
是什麼並把它添加到 輸入的用戶提供？
這些反斜線引用。
>> 因此，它避開了任何可能 危險的人物。
現在，這看起來奇怪， 但它不容易
因為它不 改變邏輯了
因為整個密碼 現在一個單引號，這不是，
事實上，scroob的密碼。
所以，還有的是一些笑話 這個多年來。
所以，這是一個合影留念 在停車場的一些怪胎
因此，你可能知道，一些城市 和國嘗試掃描您的許可證
板向您或您機票 如果你經歷不一樣，
在E-Z通的事情。
所以，這個人推測，也許 人們寫E-Z通系統
不那麼亮了，也許他們 只需連接在一起的字符串，
讓他或她不能惡意 不只是完成自己的思想，
但實際上執行了錯誤的命令， 而我們還沒有提到，
但你可能已經猜到。
這除了刪除和 插入和更新，並選擇，
還有一個叫降關鍵字， 字面刪除一切
在數據庫中，這 尤為糟糕。
>> 我們可以在這一點，如果放大 這是一個有點很難看到。
這一點，現在，是一個著名的卡通 這就是奇妙聰明現在
和可以理解的。
>> [笑]
>> 是啊，爽。
有種出來狂人。
因此，這些話，是 SQL注入攻擊。
而且他們很容易避免使用 正確的代碼或正確的庫。
你會在PSet7看到，這是 為什麼我們給你的查詢功能。
於是，一對夫婦玩笑 我們認為我們會
讓您在我們這裡 剩餘分鐘在一起。
所以，當你從零一周記得，我們 介紹了這兩個燈泡哪些
很不錯，不僅是因為 他們是漂亮，是豐富多彩的，
而是因為他們支持的東西 所謂的API，應用程序
編程接口和 在CS50迄今為止，我們已經
大多集中在GET和 POST，但事實證明，
還有其他HTTP動詞像PUT。
>> 而事實上，這是 從零一周幻燈片
如果你寫的代碼，發送，由此 一拉PSet6一個HTTP請求
看起來是這樣的這一大塊文本 在底部，這是所謂的JSON，
或JavaScript對象符號 我們將討論下週，
您可以打開或關閉或改變 燈像的顏色。
因此，如果CS50也有另外一些 這些燈泡在這裡紐黑文
如果你想借錢 他們最終的項目，
也有一些微軟 樂隊，這是像
手錶，你在你的手腕上戴 這同樣有這樣的API您
可以編寫自己的軟件為他們。
>> 我們有一個帳戶 蘋果的iOS代碼，以便
如果你有一個蘋果的手錶或 iPhone或iPad或iPod音樂，
您可以編寫代碼， 實際運行這些。
我們有一大堆 的Arduinos，這是
小小的電腦 沒有的情況下，本質上，
您可以通過USB連接， 通常你自己的Mac或PC，
寫這些物理上運行的代碼 經常有傳感器對他們的設備
這樣你就可以與現實世界的互動。
我們有一大堆 的飛躍運動設備，
這是USB設備的Mac和 個人電腦，在這裡，再次，在紐黑文。
如果你把它連接到你的Mac， 實際上你可以控制你的電腦
通過編寫軟件 即通過紅外線，
計算出你在哪裡人類的手， 即使沒有觸碰鍵盤。
我們認為我們會分享快速 窺在此，例如。
>> [音樂播放]
因此，我們有一個整體 一堆這些東西，
也叫繆臂帶 你把在你的前臂
然後你就可以控制實際 世界還是虛擬世界是這樣的。
>> [音樂播放]
或者，我們也有一些谷歌 紙板，這實際上是一樣，
一個紙板箱，你可以把你的 臉，但在滑蓋手機進去
讓你把玻璃您 手機真正接近你的眼睛。
而谷歌紙板 非常便宜$ 10 $ 20
它幾乎沒有鏡片 這稍微偏離轉變
在屏幕的人對圖像 眼睛給你的深度感
讓你真正擁有3D 環境在你的面前。
我們也有一些三星的齒輪，其中 是這種更昂貴的版本，
但可以類似滑動在一個 Android手機，給你幻想
of--或給予經驗 虛擬現實。
而在我們的最後兩分鐘， 我們認為我們會嘗試這樣做。
如果我能預測什麼科爾頓有 這裡只是為了激起你的食慾，
讓我繼續前進，扔 在這裡的大屏幕上。
讓我殺的燈光。
科爾頓，你想繼續 並把你的手機了一會兒
和過加油到 舞台中間？
那你想項目 - 這是科爾頓看到。
>> 現在，在Wi-Fi在這裡 沒有那麼強了該設備
這是超級引人注目， 但科爾頓是字面上
在這片神奇的未來的地方。
他只看到一個圖像。
你看到他的左眼和右眼 他的大腦被拼接在一起
在三維 環境在他的臉上。
他只是選擇了一個菜單選項在這裡。
而如此反复，他戴著這款耳機 與三星手機上這是
無線投射到我們的開銷。
現在你在火星上，我覺得呢？
COLTON：我想是這樣。
我不知道[聽不清]。
[笑]
>> DAVID馬蘭：原來 火星有這些菜單。
>> COLTON：[聽不清]一些很酷 地方，如果我們想要去用於：
>> DAVID馬蘭：我們在哪裡要去？
>> COLTON：[聽不清]
DAVID馬蘭：，讓我們看看 其中，科爾頓的，現在把我們。
COLTON：[聽不清]
>> DAVID馬蘭：那麼，有這麼多 不同的地方，你可以把自己。
有FAPIs，通過它，你可以 寫遊戲或互動的
運行，最終，在手機上。
所以，你真的只是 編寫手機應用程序。
但由於軟件 和圖形處理能力，
現在科爾頓在這 小小的平房。
和在的風險 壓倒自己，
科爾頓，我會堅持圍繞 而在班今天這裡結束
如果你想拿出和發揮。
我們會為他們帶來 下週為好。
如果沒有進一步的，ADO 這就是它的今天。
我們會看到你下週。
>> [MUSIC - RAGGA TWINS，“壞男人”]