DAVID MALAN:好吧,我們又回來了。 所以對於令人振奮 總之,我們的最後一節 在網絡編程,我 以為我們會作為一個通用術語使用 捕捉到剩下幾個主題。 因此,在的結束 一天,我們實際上做 動手的網絡編程一點點 與被叫JavaScript語言。 而且我認為,我們將看看 在涉及到圖像的東西 和發現的東西 偷偷藏在圖像中, 也看看谷歌的 地圖API,應用程序編程 接口,東西 代表的軟件類型的 這是越來越多和 今天免費提供。 但是,我們為什麼不來看看 在配料這個世界 我們已經種了 理所當然的存在 一段時間後,一個數據庫。 在過去的一天 我們假定半 我們可以使用一個數據庫,但 確實數據庫解決什麼問題? 這是什麼為我們做什麼? 它是什麼? 聽眾:[聽不清] DAVID MALAN:保存所有的信息, OK,什麼類型的信息 你可能會投入嗎? 聽眾:[聽不清] DAVID MALAN:任何信息 你把它,你會得到。 那是真實的。 而一個典型的基於Web的網站或網頁 應用程序,什麼樣的信息, 具體而言,你可能會放? 聽眾:[聽不清] DAVID MALAN:用戶。 那麼什麼是用戶? 聽眾:[聽不清] DAVID MALAN:OK,註冊 用戶的網站。 什麼意思 存儲用戶信息? 什麼組成一個用戶? 用戶有什麼? 聽眾:[聽不清] DAVID MALAN:是的,個人 數據,我喜歡這樣。 讓我們更精確。 因此用戶通常具有一個名字, 還有什麼可能用戶有哪些? 聽眾:[聽不清] DAVID MALAN:一個addr-- OK, 所以第一個名字,姓氏。 那很好。 其實,我們進行了修復 ,因為它會 開闢一個機會 討論中,還進一步。 姓氏,姓名,性別。 某種類型的ID。 還有什麼? 我聽到了別的之前,太多。 電子郵件,郵寄地址。 因此,讓我們停在那裡,現在考慮 不是我們要存儲在數據庫中, 但是 - 而不是為什麼,因為它可能 很明顯,一旦你註冊一個用戶, 你要記住他們一段時間。 你不希望它 剛剛被存儲在RAM中 而如此forgotten-- 讓我們關注的是如何。 事實證明,在 數據庫的世界裡, 有至少兩種類型的這些天。 一些所謂的SQL數據庫, 結構化查詢語言, 或命名討人喜歡地, NOSQL,這是不是SQL。 而後者是一個 例如什麼可能 被稱為面向對象的, 或者對象存儲,數據庫 存儲對象,也不是,藉口 我,我們很快就會看到,行。 因此,我們將重點為只是一個時刻 這些第一,即一個SQL 數據庫中,如果僅僅是因為它是 如此的熟悉已經到任何人 誰使用Excel或 谷歌表或蘋果 數字或任何標準 電子表格程序, 或者,等同地,或 更sophisticatedly, 像微軟 訪問或Oracle 或MySQL或PostgreSQL,所有這一切 是實現產品名稱 的想法如下。 關係數據庫是根本 東西,有行和列。 和由行和列, 我從字面上的意思是什麼 像這樣的,所以我們可能具有 命名一個字段,它的類型在這裡的。 而實際上,讓我 現在就開始繪製這些。 所以實際上,我不知道 為什麼我畫了一個單獨的圖表。 讓我們保持這個簡單。 我們就在這裡 我們的表,其中的開端 這是該領域的名稱 這是數據類型, 並通過I型是指以下。 它是一個數字,它是一個字符串, 一個簡短的字符串像一個字, 它是一個段落,它是 二進制數據,如圖像? 而我們只是逗逗這 除了只是一瞬間。 因此,首先名稱,編號, 串,大塊text--的 聽眾:[聽不清] DAVID MALAN:是的,所以字符串。 並在數據庫的背景下,我們將 通常稱之為焦炭領域。 我只想說CHAR現在但我們 要在某一時刻細化這一點。 字符字段。 姓可能是相同的。 性別? 男性或女性,所以它 可能是一個char場。 它可以是報價,引文結束 “男”或報價,引文結束“女” 或者它可以為m或f。 如果你想成為更具包容性, 您可能需要第三個值 或某種其他領域完全。 所以你可以使用真正的假。 該字段可以被稱為男性,和 那麼你可以說真的還是假的。 但是,這並不一定是捕捉 所有你可能需要的信息。 因此,原來還有另一種類型 現場的一些可能有用這裡 在一個典型的數據庫,稱為 枚舉,它是一個字符型字段, 但是,設計師,得到 枚舉的可能值, 像報價,引文結束“男性”,報價, 引文結束“女性”,等等。 所以,無論價值 在你的數據庫中, 確實是基於字符的,但 它必須是那些值中的一個。 我們可能不希望的 枚舉的第一個名字或姓氏。 否則,我們將有 列舉,作為名稱 從字面上每一個派生 可能姓和名。 好了,ID應的ID是什麼? 是的,也許一個數字。 因此,讓我們堅持 對於現在一些。 並以數字,數字的 現在有點過於寬泛。 對於第二個的端部 一天,我覺得我們 應該有點更精確。 號碼可能意味著象,它 可能是類似1.236。 而這可能不是 我們通過一個ID的意思。 什麼是我們可能是由一個ID是什麼意思? 聽眾:[聽不清] DAVID MALAN:哦,好吧, 也許它甚至不是一個數字。 也許它實際上是一個唯一的標識符 這是一個字符串,如用戶名。 那麼絕對,可能是。 我想大概有人 意味著數字,雖然。 因此,讓我們留在那。 什麼樣的號碼? 什麼是更precise--整數。 因此,一些如0,1,2,3, 所以我們稱這個整數。 即使這樣,我就可以 被挑剔,這是 不是真的只是一個 你想一般的整數。 你可能不希望負值, 只是因為,它只是感覺怪怪的。 你可能想正整數。 所以,你也可以表達 在數據庫中, 但現在,我們會說整。 電子郵件? 這可能是just--個什麼東西? 聽眾:[聽不清] DAVID MALAN:這是一封電子郵件, 但是這角色,對不對? 它只是一個時髦的人物像 一個“at”符號或別的東西, 但它仍然是一個字符型字段。 和郵寄地址? 字符字段。 所以這是一個很好的開始,但 我們是一個小更精確了。 因此,原來在 一個數據庫,你經常 有超過更精緻的選擇 這些東西的版本。 事實上,在典型的SQL數據庫,SQL 或更一般地,關係數據庫, 與行數據庫 和列,你經常 獲得指定不僅的類型 field--讓我做一些室內這裡 - 而且長度。 那麼多久是一個名字? 我認為,D-A-V-I-D。好,知道了我 可能只是喜歡得罪一半 在房間裡的人了吧, 因為你的名字是超過五長 字母,如此五似乎有點自私 不懂事,所以有什麼更好的價值? 10,沒事,我覺得 我們在房間裡確定。 13? 30? 我為什麼不拿 早期的方法時,我們 在談論內存和數組? 為什麼不讓我只是說像1000? 沒有一個人的名字是怎麼回事 比1000更長。 推回。 聽眾:[聽不清] DAVID MALAN:是的,這 浪費的,正確的,尤其 如果大多數名稱僅5年或10或 15個字符,這是非常浪費的。 所以,你知道嗎? 這是怎樣的一個很難回答的問題的。 現在,我們當然可以分析英語 和任何其他語言的名字 並找出,那麼,什麼是 average--平均不真 幫助us--最大是什麼 也許我們真正想要的。 但事實證明,我們甚至有 有的選擇在這裡的類型。 在一個典型的SQL數據庫, 有一些所謂一個char場 而且一個varchar,V-A-R, 可變字符字段。 與不同的是這個。 一個char字段,設計師, 具有預先指定 該字段的確切長度。 因此,也許名字 像20感覺一種安全。 可能必須做一些谷歌上搜索到 看看是否有足夠安全的實際。 有可能與21名 人物,但現在,假設20 是安全的。 一個char場將意味著 在數據庫中,你 使用的是20和總是20個字符。 現在,如果它只是那些D-A-V-I-D,15 只是要為空白字符, 但你仍然使用所有20個字節。 一個varchar領域,相比之下,意味著 字符串應該是最多20個字符 但如果它的只有五, 你只打算使用 五,或者六為一 在末尾的特殊價值, 像0我們討論了 表示一個字符的結束 序列中的存儲器。 所以,當你覺得 您可以選擇CHAR 與VARCHAR,因為權衡? 字符使用了人物眾多,VARCHAR 使用不超過許多字符。 聽眾:[聽不清] DAVID MALAN:OK,當你知道 字符串長度相當有吸引力 只使用CHAR,因為如果 你知道它,只是把它放下。 也許這是一個真正的拉鍊 代碼,在美國,至少02138, 它總是會為五 字符,直到你加破折號四人。 但是,你可能有一些值 你總是知道的長度。 或者,也許狀態的符號, 像紐約紐約, 和MA馬薩諸塞在美國。 也許你確實有一些情況 其中,這是完全合理的, 但這一邏輯,為什麼 我們得太多,甚至這個? 為什麼我們不只是使用 VARCHAR,然後我們就 始終使用兩個字符,無論如何,或 總是用五個字符呢? 為什麼不直接保存為varchar 一切,由邏輯是什麼? 必須有一個陷阱。 聽眾:[聽不清] DAVID MALAN:莫非 寫的東西​​錯了。 所以這是真的。 但即便如此,他們不能使用 更多的內存比我分配。 我還有最後的 說以上的長度, 這樣他們就可以不小心使 那樣的錯誤,但一個好的想法。 這是更微妙的,但它是非常相關 我們的討論,其實,陣列 和更早的鍊錶。 事實證明,一個數據庫,如果 它知道的所有值都 固定長度的,即使 其中的一些值是空白, 諸如此類的審美空白, D-A-V-I-D,然後15坯, 事實證明,如果每 字段是相同的長度, 就像一個數組有它的所有的東西 背靠背背靠背使 你可以只加1得到下一個 值,在一個數據庫表中同樣的想法。 如果所有你的性格 串是相同的長度, 你有什麼所謂隨機訪問。 如果所有的字符串是的 長20,你做的不只是 做加1你只是做加 20,加20,加20,加20, 並且可以非常迅速滾動 或通過您的所有數據進行搜索。 可變字符字段,相比之下, 並不總是有20個字符。 它可能具有20然後 15,然後19,然後10, 所以,如果你要搜索 通過它,你不能只是一味地 加上20字節才能到下一個。 你從字面上必須通過搜索 因為數據結構的邊緣, 如果你願意,就是衣衫襤褸。 它種去進出基礎 對串的實際長度。 所以,當你知道的長度,如 賈巴爾說,使用一個char領域, 因為你獲得 被效率 能夠通過更快地搜索 當你正在尋找數據, 否則使用的變量。 不幸的是,我沒有很好的答案 這個名字應該有多長, 但對於像 一個名字,我會說 一個varchar是很常見 因為它不會 要對每個人都有固定的長度。 20,我不知道,20 感覺有點緊。 遠的不說50,50。 它並沒有真正花你的 多說,而不是50 40, 但在某些時候,你需要 做出判斷電話。 很常見的,坦率地說, 對於[?歷史?] 原因,即使它是過度的, 是說255,因為前一段時間, 在流行的數據庫系統,如 MySQL的,免費的開源工具 很多公司的 像Facebook的,即使使用, 這是最大默認 所以人們只是去用它。 所以,不是沒有道理,但我們會 使用多一點的直覺 並說,確定50,這是 可能有點過分。 性別,我喜歡枚舉, 所以我們可以因此 枚舉男性或女性, 或者更有效, 米或F或一些其它符號,但 枚舉感覺就像一個不錯的選擇那裡。 需要明確的是,性別 可能只是一個varchar, 我們可以只是所有 達成協議好的人, 要始終把相同的值出現。 男或女,或諸如此類的東西。 但問題的話,就是我們可以 犯了一個錯誤,[聽不清]提出的 先前在不同的上下文中。 如果我們犯了一個錯誤,我們可以得到 在我們的數據庫中不正確的值。 那麼,什麼是關於數據庫不錯 如Oracle和MySQL等人, 是你有這個最後 那裡的防禦層 你的DBA,數據庫管理員, 不管是誰設計這個表像我們 是口頭上,可以把 到位枚舉了 通過指定防止該 男性,女性,因此沒有人 沒有別的程序員可能會意外 插入任何其他值。 所以,這將是一件好事。 這是一個特點。 因此,一個ID,假設一個數字ID,它 也許應該是一個正整數。 我們有時候確實有 機會來討論長度。 你通常不會 在這裡指定一個號碼, 你會,而不是指定 這是一個int或一個大的INT, 因為他們通常被稱為。 但通常情況下,一個整數 會是這樣,讓我們說,4個字節。 而且,如果它是4個字節, 這是多少位? 聽眾:[聽不清] DAVID MALAN:32位。 因此,我們有多少用戶可以在 我們的數據庫,如果他們都有一個ID 而這個ID必須是唯一的? 32位意味著我們有模式 一個,兩個,三個,四個,five-- 零所以有多少不同的模式 和那些可以有,如果有32? 這是同樣的事情 問什麼是兩到32? 這是一個很大的數字, 我不能完全得到正確, 但我知道這是約4十億。 因此,這意味著你的數據庫表可以 有四十億用戶,僅此而已。 所以這是一個有趣的 設計寓意。 公司一個體面的數量 已經決定了,也許沒那麼多 為他們的用戶表,因為有 4個十億用戶來說是一個難得的問題。 這是排序的Facebook式 問題,而不是典型的公司的問題。 但也許,如果您有事務日誌 或某種數據的不斷 被寫入到數據庫 這絕對可能有幾億 與數十億行的,和 你用一個整數吧, 這是怎麼回事盡快發生 你排4號十億 然後嘗試插入 4億個和1個,可以這麼說? 我簡化了數字有點。 您可以切回,我的意思是你 必須以某種方式處理它。 什麼電腦通常會做的, 想想甚至從今天上午, 如果你有一個4位值 像1,1,1,1,其中, 剛剛扳平上午 一起到下午,有什麼 沒有這個數字的二進制表示? 好了,我們會更容易。 這是什麼號碼 二進制代表什麼? 好了,我們會更容易,有什麼 這並不代表二進制? 聽眾:三。 DAVID MALAN:三,因 我們有那些column-- [笑聲] 呼! 我們有那些列 和三三兩兩列。 因此,假設,的確,我們的 [?耕地?]不是32位, 但它有兩個位,我們可以 從用戶號碼0,1,2,3計數, 然後我們種 回到用戶再次00。 因此,這是通常會發生。 如果你曾經聽說過expression-- 也許沒有,但如果你have-- 整數溢出,你在哪裡 保持翻轉所有位 是最大的可能值, 然後你出位, 通常會發生什麼? 為什麼我說00? 那麼,這是三種。 我如何代表4? 我如何代表 在二進制數4? 聽眾:[聽不清] DAVID MALAN:One--是啊, 不要說100本身, 因為它有錯 內涵,但1-0-0。 所以這個數字1-0-0確實 正確的,但如果你只有兩位, 你有什麼真正做了什麼? 你已經展期到00。 事實上,這是會發生什麼。 其實,你能想到的 這個更親切。 如果你還記得,什麼, 16年前,世界 本來是要結束時, Y2K問題發生。 這是為什麼呢? 那麼大多數計算機,為 合理的決定, 被存儲喜歡的數字 1975年或1999年 通過僅僅使用兩個數字 在計算機的存儲器中。 所以當然會發生什麼 當你到2000年, 你到這一點,或者說,是的。 所以,你去到2000年,但如果 你只使用兩位數字看起來 想當年00和 所以你翻了個身。 這就是為什麼很多系統 需要的時候進行更新。 因此,與中說,像公司 Facebook上反對這種跑起來。 因此,要處理的唯一途徑 的情況下,坦率地說,是預測它。 或者,最徹底的方法來 處理這種情況 就是讓你不預期它 稍後必須做出改變。 因此,而不是8個字節,你知道嗎? 我將是前瞻性的思維 這裡,即使它是 樂觀一點說 我們將有4個十億 和1個用戶在我們的網站。 但是,我們只需要使用8個字節,或 64位,其通常將是 所謂的大整數,技術性很強。 而這只是意味著你可以有 更位數你的電話號碼。 但是,這是一個重要的 設計決定, 因為如果你選擇一個數字, 具有表現力的比特太少 你實際上可以創建 在軟件中的錯誤。 好吧,讓我們包 與電子郵件和郵寄地址。 因此,電子郵件,要多長時間 電子郵件地址是什麼? 50。 我真的不知道,但它的 也許類似的東西, 因為否則沒有人會 寫你,如果它變得太長,所以50, 讓我們用它去了。 郵政地址,多久會這樣呢? 聽眾:[聽不清] DAVID MALAN:這不是 只是一個郵政編碼,雖然。 郵政地址,我聽說了。 所以,這就像1布拉特爾廣場, 逗號,劍橋馬薩諸塞,逗號,02138。 而事實上,我只是拉 在這裡一點點的工作表。 這種感覺就像是 一個錯失的機會。 如果我們有1布拉特爾廣場, 逗號,劍橋MA 02138, 我覺得我們可以做的更好 不僅僅是郵政地址。 為什麼我們不這樣爆炸一點點? 我是什麼意思如何? 我們應該有代替 在這裡我們行的,也許? 聽眾:[聽不清] DAVID MALAN:是的,讓我們 street_number調用它, 和下劃線只是一個普通 其方式是什麼樣子的空間, 但它不是,其實。 街,然後city--遺憾? 聽眾:[聽不清] DAVID MALAN:我們能做到這一點。 一條線,線兩條。 我們為什麼不將保持 簡單現在, 但是這絕對 一個可以接受的決定。 然後狀態,然後讓我們 有點美國為中心的,現在 而只是做郵政編碼,只是因為 它會導致一個有趣的錯誤 或者問題就在這裡。 所以,假設現在我們的地址。 這是一個小更煩人 我們擁有所有這些更多的領域, 但現在我們可以標記 事情更好一點。 所以,現在街道號碼可能 不應該是一個字符,應該嗎? 什麼應該是什麼? 聽眾:[聽不清] DAVID MALAN:也許,一些 再如一個整數? 一個大的整數? 你可能不活 在4十億大街 或任何瘋狂的那樣。 所以,整數可能 不錯,但有沒有人 曾經住在一個地址一樣 布拉特爾1A廣場,或1和1/2? 這些東西存在的,不幸的是, 即使你沒有住在這裡, 有這些異常 像公寓1A,1B,1C。 所以,你知道嗎,我們或許 不應該去的整數, 否則我們將 失去一些銷售。 煤焦領域,也許? 我不知道過了多久。 它可能不會是 那麼長,所以10還是什麼的。 沒有人會寫 更長一些,也許。 但同樣,我們或許應該 更多地考慮到這一點。 也許谷歌,做一些研究, 但我們會用我們的勇氣去了。 街道,焦炭,50,我不知道。 在某些時候,沒有一個人是怎麼回事 把它寫在一個信封, 過,所以有可能是 一些上界在那裡。 市,同樣的,肯定的,所以燒焦50。 國家,可美國為中心的現在。 因此,它可能是一個列表,那麼親切 的主觀判斷,狀態。 它可以像兩個字符。 所以實際上,也許,我不停地說字符。 我大概的意思VARCHAR, 只是對於一些效率, 但我們會回來的 在瞬間決定。 可能是長2狀態的字符。 如果在美國,他們擁有像馬, 馬薩諸塞州,紐約州,紐約,新澤西州,紐約 澤西,等等。 因此它可以是固定在這一點。 DC華盛頓特區。 但我認為,奧利弗,你 提出的另一種方法。 聽眾:[聽不清] DAVID MALAN:是的,所以這是一個 有點惱人的輸入, 但枚舉可能會更有意義, 因為這樣一來,至少在美國, 你可以列舉,如果繁瑣,但 您在數據庫中做它只是一次 而不必再想想 它,所有50個雙字符代碼。 所以我喜歡枚舉。 我們堅持有,因為 它像是強制執行更加精確。 然後郵編? 我認為安德魯有一個想法上 聽眾:[聽不清] DAVID MALAN:是啊,五或九。 我們只是保持簡單。 只要做到五個了。 但是,也許我可以只 做一個整數,對不對? 我可以,但你知道嗎,我做了 這個錯誤有一次,在某種意義上。 幾年前,我從遷移 Microsoft Outlook中到Gmail, 和Outlook具有出口的一種方式 所有聯繫人作為一個Excel文件, CSV文件,逗號分隔值文件。 我犯的錯,我 想雙擊它, 當我下載的出口,以 確保它看起來就像我的預期。 我必須點擊保存,或讓 自動保存在踢什麼的。 因為當我再進口 它到Gmail,它的所有工作。 但多年以來,這一天, 我這樣做5年,10年前, 我還在尋找誰擁有的朋友 看起來這樣的地址。 為什麼? 聽眾:[聽不清] DAVID MALAN:花了 0,好了,相反,它 把整個郵政編碼為 一個數字,因此,它是 以0開頭,這意味著 它沒有什麼意義。 所以,2138似乎是我的郵政編碼。 這是,坦率地說,一個惱人的Excel 特徵,其中我認為在默認情況下, 即使它的意思,只是 是文本,Microsoft Excel中 做出決定,讓我有所幫助, 哦,我看到的只是數字。 讓我們把這些視為數字。 它截斷前導零。 我向上帝發誓,每對夫婦 個月,我發現一個地址, 並出一種強迫症的,我回去 並添加了0,儘管我從來沒有 發送人的信件或任何東西。 但我仍然發現這個遺跡。 因此,這是說,這是一個好主意? OK,沒有,因為任何人都在 馬薩諸塞州,在這個區域中, 都將有鄰帶領他們。 所以,讓我們像 焦炭,大概五。 在這裡,我們實現 可以使用一個枚舉,我們 可以列舉萬 可能的郵政編碼, 但感覺它可能 幾根線,如,福利。 如果你輸入的 大量的數據到數據庫 以防止一些東西。 因此,焦炭意識到你可以鍵入 在H-E-L-L-O作為您的郵政編碼, 這是不很明顯,數字。 因此,有沒有辦法,在 一個典型的數據庫, 僅指定數字和 只有5個字符, 所以我們將有 要做到這一點的代碼。 我們將做到這一點在PHP或 Java或任何語言我們 使用在服務器上執行 那種約束。 喔! 所有的權利,所以任何問題,只是還沒有? 讓我們把另一個設計決定。 事實證明,你 也得選擇, 設計一個SQL數據庫時,或 典型的關係型數據庫 - 在哪裡 再次,關係只是 裝置的行和列, 這就是你如何組織你的數據 - 並認識到這是什麼意思是, 我在被誤導 如此,我這drawing-- 是所謂的模式 為一個數據庫表。 這就好比 規格為table-- 但是當談到時間 實際存儲數據, 我們將僅僅通過例子在這裡做到這一點。 我要去開拓Excel中,因為 Excel中會給我行和列。 而這正是甲骨文和 MySQL和其他工具會給我。 所以,我只是將使用 它討論的緣故。 讓我繼續前進,開拓 代表性的文檔在這裡, 放大一點。 因此,例如,我們的頭現在 姓氏,姓名,性別,身份證, 電子郵件,門牌號,街道,哎呦。 街道,城市,州,只 有關適合在屏幕上。 所以,這是什麼意思是,當一個 用戶第一次註冊了自己的網站, 這將是這樣的 大衛,馬蘭,男,比方說1, malan@harvard.edu,街道號碼會 像1布拉特爾廣場,馬薩諸塞州劍橋市, 02138,然後依此類推。 所以,當我說關係數據庫 或SQL數據庫是行和列, 我的意思是這一點。 實際的數據被存儲 以行和列。 這僅僅是一個巧合, 我們談話的時候, 而我只是畫它 出以行和列。 這僅僅是架構, 總體定義。 所以在這裡這些領域, 或等同地,在那裡, 這是你認為的字段 我可能要搜索的,如果我是一個用戶 或者,如果我是數據庫管理員? 就像,哪些領域是我 究竟要搜索的? 聽眾:[聽不清] DAVID MALAN:這個名字,是這樣 我喜歡這樣的事實that--呀, 電子郵件可能是很常見的。 對不起,你說的名字。 所以maybe--又一次,我們 那種說話的抽象。 我不知道為什麼你會 要搜索一個名字, 但如果覺得合理 您正在搜索的用戶。 也許指出,當然,ID。 這是一個滑 坡,因為我可以 圖謀這樣一個場景, 也許我的老闆問我, 我們有多少男人在我們的網站? 有多少女人,我們有我們的網站? 所以在這一點上,您可能希望 搜索在性別字段也一樣, 而不是其他。 所以這裡有一個權衡。 同樣,沒有 正確的答案,但有 在大多數SQL數據庫功能 被稱為索引,即 你的設計者, 數據庫管理員, 獲得提前決定哪 域數據庫應優化 對搜索。 你可以很天真地說,優化 這一點,即優化,這個優化, 優化了這個, 而且該數據庫將 做下面的一些神奇的東西 油煙機,並做一些這樣的方式 在下次搜索時 在任何這些領域, 它將,實際上,會更快。 這個有可能。 它不會取消自己的。 但必須有付出了代價。 如果你天真,或者過​​於狂熱 也就是說,指數所有這些領域, 可以這麼說,讓他們所有的 高效檢索, 什麼樣的價格是你可能付出? 聽眾:[聽不清] DAVID MALAN:性能。 你什麼意思? 好業績,至少在 背景我討論,現在好多了。 這是索引的定義。 它將使搜索速度更快。 所以時間減少,可以這麼說。 聽眾:[聽不清] DAVID MALAN:太空。 如此反复,這些都是常見的交易。 我可以加快您的搜索,但它的 要花費你的空間,更多的字節。 為什麼? 那麼,在默認情況下,如果我們有沒有的 這些紅色的星星,沒有這些指標, 因為我是說,你怎麼搜索 在這個數據庫中的名字嗎? 因此,讓我們畫 注意這個例子。 如果我們有大衛和Scully和賈巴爾 和阿瓦等人在這些行, 例如。 因此,讓我們這樣做。 斯卡利是在這裡,再 我們擁有賈巴爾和阿瓦, 和大家一樣,如果你​​不 有一個指標定義,可以這麼說, 你能做的最好的是線性搜索。 如果您搜索阿瓦,我們不 要能夠直接跳到她的 很快。 我們要開始頂 一路走到底, 不是不像我們原來的 邁克·史密斯的例子。 但是,如果我說,哎,數據庫, 索引的第一個名字領域, 那麼它要做些什麼 票友和支持的東西 像二進制搜索。 它可能不是本身二進制搜索。 數據庫傾向於使用另一 數據結構稱為B-樹, 不要與二叉樹混淆, 只是使它更快地搜索 東西自然對數。 但價格你付出建立了 特徵,在存儲器中的數據結構, 是多個字節。 因此,它可能需要一些兆, 一些千兆字節,誰知道? 這取決於數據。 所以,在某些時候,你必須決定, 這可能不是一個常見的情況。 那麼,什麼是實際通用 情況下,如果你真的不得不選擇, 什麼也許你喜歡的領域是什麼? 電子郵件。 我喜歡電子郵件,因為電子郵件, 在理論上應該是唯一的。 所以通常情況下,當你知道 事先,你的領域之一 是或將是獨一無二的,這 往往是一個很好的領域 要搜索的,因為這樣一來, 當你搜索的東西, 你要拿回一個或 零響應,然後就大功告成了。 你不必繼續 尋找還有一些。 因此在這種情況下,在這裡,電子郵件, 只要你不能兩次註冊 用相同的電子郵件,是一個很好的一個。 通過定義ID,在 計算機科學世界裡, 如果你在談論一個 ID,那最好是唯一的。 這是排序的內涵 的ID或標識。 及的這些其餘的可能是, 讓我們打電話給他們很好的富人, 但並不真正需要。 因此在一個數據庫中, 您指定索引, 但你可以更加精確。 你可以說,哎,數據庫,確保 在這個表中的每個ID都是唯一的。 甚至不要讓一個程序員 不小心把一個重複的電子郵件 或重複的ID號。 那麼像枚舉 保護我們同樣的,你 可以有那些低級別的防禦。 因此數據庫的設計, 從某種意義上說,是一種樂趣, 因為你這樣做防守。 你那種假設你的工作 與可怕,可怕的程序員 你希望把盡可能多的防禦 你可以保護您的數據, 但同時你要 以幫助他們更好的表現 通過選擇 字段以優化。 但是你不一定能做到這一點的 就像我們的真空樣的都在這裡。 你得知道什麼是 這些常見的情況之中。 如果開發者 實現一個地址簿, 你很可能會希望能夠 在幾乎每一個領域搜索, 只是應用程序的性質。 因此,也許你花 該額外的空間。 對了,什麼問題嗎? 是啊。 聽眾:[聽不清] DAVID MALAN:否 聽眾:[聽不清] DAVID MALAN:OK。 聽眾:[聽不清] DAVID MALAN:哦,所以我們 在某種程度上說的 現在是完全與語言無關。 因此,我們現在談論的 關係數據庫更一般地, 或SQL數據庫更普遍。 聽眾:[聽不清] DAVID MALAN:一個更好的詞來使用 是,可以用任何語言來使用。 所以,我可以寫JavaScript代碼,C 代碼,C ++代碼,Java代碼,Ruby代碼, 所有這一切跟一個 數據庫和執行查詢。 事實上,這不是一個壞 Segue公司一個例子查詢。 再次,我們不會進入 Java或C ++或任何這樣了, 但在SQL中,語言我保持 指,結構化查詢語言, 這本身是一種編程語言, 但它的意思用於,沒有 驚訝的是,結構化查詢的查詢。 我的意思是這一點。 你選擇數據的方法 從MySQL數據庫 是你從字面上鍵入程序 像從用戶選擇的明星。 我假設這個表, 從此被稱為用戶。 我可以把它稱為我們想要的東西, 但那種有道理。 所以選擇是一個非常 常見的動詞,如果你 將在SQL中,硬是做到這一點。 您如何看待明星 裝置在這方面? 聽眾:[聽不清] DAVID MALAN:對不起? 聽眾:[聽不清] DAVID MALAN:不需要,它是 比這更包容,其實。 這是通配符。 星幾乎總是意味著什麼, 因此,這意味著,在這種情況下, 選擇一切從數據庫。 所以,當我這樣說,我的意思是 給我回的每列 從我的表叫用戶。 所以給我一個結果集,因為它被稱為。 換句話說,給我的一份 電子表格,就是我在獲得。 但如果我說,從用戶選擇星級 其中ID等於1,有多大應該 我的結果集中呢? 或者相當於多少行應 我從數據庫中遞回? 也許只有一個,如果我真的有 處理ID作為唯一標識符 如果大衛有一個唯一的ID,我 應當得到一個且只有一個行 包含所有的大衛的信息。 如果我說,這其中的ID 等於99,我應該回去, 在這種情況下,零行, 至少在時刻。 但是,如果我真的不關心 所有這些信息, 我只是說,哪裡大衛住在哪裡? 從選擇郵政編碼 用戶ID為1。 這將選擇對我來說只有大衛的拉鍊 代碼和該行不是全部。 我為什麼會這樣做而不是 明星查詢,外卡? 聽眾:[聽不清] DAVID MALAN:是的,我可能只需要它。 因此性能又是這裡的答案。 為什麼要求更多 信息比你需要的, 因為即使它的所有權利在一起, 你還是要複製的數據, 這似乎從數據庫 到你的程序不知何故, 而這,如果你只是傻 只需要這些數字五, 該行的不全部。 那麼,如何插入一個用戶? 假設用戶剛 登記為第一次。 語法通常是這樣的。 插入到用戶, 那麼我們會說值, 然後我們會說值 像,讓我們說,勞倫斯庫利, 我們這裡的攝影師。 和下一個字段是性別。 所以我們會說報價,引文結束 “F”,那麼我們有一個ID 而我要say--讓我們 假裝她實際上不是在這裡, 所以我們會在故事中後退。 SO 2將是她的ID。 然後下一個字段 這裡是她的電子郵件。 因此,它要像 勞倫斯卡利等等, 而我們只是點點 從這裡點上它了。 現在它將會得到一點點 乏味,但插入查詢 最終將像她那樣。 如果我想擺脫 斯庫利,嗯,哦,讓我們註銷 她,她會刪除她的賬戶, 從那裡ID等於2的用戶刪除, 將擺脫斯卡利的。 或者,我可以說,更新用戶設置, 比方說,我們有什麼可以改變? 假設她的動作。 集拉鍊等於021--不, 這是她目前的拉鍊。 90210。 唯一的其他郵政編碼 我知道世界。 因此,將改變 她居然ZIP代碼 - , 這不會改變她的郵政編碼。 什麼我只是做? 即使語法可能是新的。 聽眾:[聽不清] DAVID MALAN:是的,我感動眾人 以加利福尼亞州貝弗利山莊。 所以我實際上應該 說得清ID等於2。 等等。 因此,SQL是所有關於這些 種指令。 選擇,插入,刪除,更新​​, 這些謂詞末 這些where子句,可以這麼說。 而且還有很多更可以 這樣做,但它實際上只是歸結 簡單,如果arcanely,表達 你想要什麼數據庫做的。 然後將數據庫 何時會弄清楚, 您將勞倫斯卡利到 數據庫中,把她的記憶 這樣我們就可以很快得到 她以她的電子郵件地址 或基於她的ID號碼等。 是啊,丹。 聽眾:[聽不清] DAVID MALAN:非常好的問題。 將這些腳本從改變 微軟訪問Oracle 到MySQL到PostgreSQL? 簡短的答案是它依賴。 在理論上,有一個很 SQL的顯著公共子集 這是在所有共享 的這些實施方式。 但是,不同的製造商 有附加功能 它們的數據庫做某些事情 超出這些特徵的範圍, 可能,事實上,斷裂。 因此,開發商的方式 規避這一點, 是,而不是寫生 SQL代碼就像我寫在這裡, 他們改用庫, 公用庫本身 是有點高層次和摘要 遠離你正在使用的產品。 和它給你 函數和過程 打電話,讓你永遠不會 其實寫原始SQL。 從理論上講,那麼,你可以改變 產品從Oracle到微軟 反之亦然或任何 否則,你從字面上 改變一無所知你的代碼。 事實上,雖然,你有時 放棄功能作為一個結果。 你可能已經選擇了一個產品,因為 它有這些增值功能, 而你現在只是不 使用它們自覺。 據傳與大多數公司傾向於 從來沒有擺脫他們的數據庫了。 因此,儘管這是一個不錯的 有特色,現實 是,如果你正在檢修 你的數據庫,你 可能使得其他變化束 反正,你不一定 需要預期。 因此,它可以說是 超過了實際工程問題, 但它確實取決於上下文。 但在理論上,SQL共享 在這些不同的產品。 真是好問題。 是啊。 聽眾:[聽不清] DAVID MALAN:是啊,所以 你能想到一個數據庫 僅僅是一個服務器,在結束時 一天,以及該服務器的內部 是一大堆 表,行和列。 而當你發送一個這樣的查詢 從您的程序,你的網站, 用Java編寫的,紅寶石,巨蟒,什麼的, 服務器接收到這個指令 和解釋它 從字面上以同樣的方式 我們前面討論過用 解釋型語言, 然後進行零一些動作 或更多行中的零個或多個表。 聽眾:[聽不清] DAVID MALAN:沒錯,沒錯。 因此,偽的東西 像這可能是這一點。 在你的PHP文件或 Python的文件或您的Java文件, 你將有偽代碼,或 刮樣塊作為,如果用戶訪問 acme.com/register~~V的第一次, 然後插入到用戶,等等。 我們將轉化這 到底更具體的代碼。 不過說真的,我們都 積木在這裡, 即使我們跳過一些 的實施步驟。 因此,讓我找到什麼缺點,我們 奇妙確實剛才。 你已經創建了一個漂亮的 為用戶完整表格。 誠然,我們可以實現 它的幾個不同的方式, 但你實際上已經帶領我們 下path--和我說你, 但它可能是我的一個相當fault-- 低效的數據庫實現。 它不歸。 並通過規範化我的意思 那裡將是, 隨著時間的推移,一個顯著冗餘, 因此效率低下, 即浪費空間。 僅基於你在這裡看到,可以 你想像的空間,這種浪費 是從哪兒來,隨著時間的推移, 隨著越來越多的用戶註冊 為您的網站? 哪些數據可能會變得多餘? 聽眾:[聽不清] DAVID MALAN:為什麼你的意思是? 聽眾:[聽不清] DAVID MALAN:是的。 讓我們承擔起施行 今天這是真的。 事實證明,我們已經學會了這 硬盤的方式,這是不正確的。 不知怎的,多個城市都有, 不知何故,相同的郵政編碼, 打破這個奇妙的直覺。 但是讓我們假設這是真的, 因為它幾乎總是如此。 因此,假設一個郵政編碼是 始終與同一個城市關聯 和狀態,這是一種 合理的假設, 但不正確的,事實證明。 但是,一個合理的假設 今天的目的。 然後,假設我住在劍橋, 馬,根據該用戶的表, 並假設勞倫 斯庫利住在馬薩諸塞州劍橋市, 並假設賈巴爾 住在馬薩諸塞州劍橋市, 阿瓦和住在劍橋, MA,我們都在02138。 為什麼我們要記住劍橋, MA,02138為我們四個? 我應該足以記得嗎? 聽眾:[聽不清] DAVID MALAN:只要郵政編碼。 只是,02138存在,因為 你知道我們能做什麼? 我們可以在這裡得到一點花哨 而在這裡,定義另一個表 這是怎麼回事是 的名字,這將是該類型, 這將是該 長度,從今以後,我 去這個叫我的城市表。 這就是所謂的 當然,我的用戶表。 所以我應該把在這裡 我的城市表,你覺得呢? 聽眾:[聽不清] DAVID MALAN:是的。 所以,拉鍊以及州和城市。 所以,這裡的類型,我們會說 這將是一個char 5再次, 受先前的辯論。 這將是一個枚舉,也許像 之前,市將是一個VARCHAR 50。 所以現在我能得到什麼 從該表中刪除 以消除低效率? 聽眾:[聽不清] DAVID MALAN:好的。 國家和城市走,所以我現在已經 消除潛在的低效率 對於冗餘記住,劍橋, MA,劍橋,麻省,劍橋,麻省, 馬薩諸塞州劍橋市,對此,希望 是永遠不會改變。 即使是這樣,它的 minorly煩人,現在 我不得不改變 它在多行, 而在這裡,我可以只 改變它在一個地方。 現在有什麼取捨,也許? 這是超級方便。 我所有的數據必須很好地在一起。 但顯然現在的情況? 聽眾:[聽不清] DAVID MALAN:沒錯,我 很高興你用這個詞加入, 因為這實際上是關鍵字, 在關係數據庫中的世界 在SQL中,這是一個實際的詞你 可以鍵入或至少傳達。 而事實上,我們現在要做的 選擇大衛的完整信息 像從選擇星級 用戶,加入城市,on--現在 我將只是移動到第二行 為了使本fits-- users.zip等於 cities.zip,其中users.ID等於1。 發生什麼了? 這是難看,但你可以種 讀它從左到右,從上到下。 從用戶選擇星級 是像以前一樣, 但它不是從用戶本身。 這是一個從用戶加入的城市。 那我就加入這兩個表嗎? 那麼,顯然, 用戶表拉鍊領域, 而這期間僅僅是特殊 語法來表達想法, 這就是城市的表壓縮領域。 我想這兩個相等, 但我想最終選擇 只有那些的行 在用戶表ID 等於1,這正好是我的。 而僅僅是明確的,一個 程序員,通常在 硬編碼像數 1,否則只有網站 支持大衛或 第一個用戶,你 將改為做 像ID,其中 這代表了一​​個 變量,這東西 可以隨時間改變,類似 在精神上我剛才所說 這些類型的佔位符。 但現在我們只是硬編碼為1。 所以這是什麼意思? 好了,這個可視化的好方法是 如果這手是用戶表, 這手是拉鍊 表中,我們都有點finding-- 我的手指的技巧是ZIP 在這裡,我的手指的技巧 這裡有拉鍊,你 一種是環環相扣 讓你回來的結果 原始表,由真正加盟 這兩個表的公共字段。 它不必須是拉鍊。 它可以是任何其它的事,但 拉鍊是好的,因為一個,因為它很短, 二,它總是 相同的長度,所以有 一個真正的效益是什麼 奧利維爾這裡提出 與分解出ZIP和 [聽不清]提議我們擺脫 城市和狀態。 因此,這是一個過程 被稱為正常化。 上有問題嗎? 那麼,讓我指出 這是什麼樣的東西, 即使它是相當級別低, 這次討論中,你會覺得 你那種得到 失去了雜草, 這是充分體現 對於開發商的機會是壞的。 而事實上,我們即使在 課程我教過,當我們已經有, 例如,缺乏經驗 本科程序員 建立網站,乍一看, 網站看起來棒極了。 他們擁有所有的 功能我們的要求, 開發商的工作做得很好。 但他們並不一定知道 足夠的了解數據庫設計 或者他們沒有想到辛苦 足夠的了解的數據類型 和類型的用戶的的 網站將不得不, 我們發現,那麼,半年之後, 之後,他們已經畢業或移動時, 那該死的,我們的網站 真的,真的很慢。 而且我還沒有談到有 數百萬或幾千個用戶。 我的意思是在校園裡幾百個用戶, 所有的人都喜歡,比如, 店在課程 同時,他們 使用課程目錄 應用我所提到的 而事情是變得非常 慢,因為沒有索引。 目前還沒有紅色恆星,所以 說話,或者我們不得不不一定 分解出來通用數據 得到的空間節省一些。 所以審查開發商的時候 或數據庫的人或類似物 題型想通過 甚至,審查別人的代碼時, 也就是說,不一定看 通過他們所有的代碼,但是說, 讓我們來看看通過數據庫表。 你在存儲? 然後說,好吧,等 分鐘,你為什麼要使用一個整數? 如果我們有4個十億 和這些行的1? 與這些類型的 問題是一個機會 來樣推回並 得到的,其中檢測 如果你不舒服做 它有更多的人技術 問這些問題的,不論是否 人真正知道他們的東西。 這是什麼樣的 的東西,那就是,人 在互聯網上誰 是自學成才的,也許 學習較少,因為你 並不一定碰到過它 為多,因為你可以得到 數據庫啟動並運行, 但除非你讀過 在高達教程或過 講述數據庫規範化 和索引和性能, 這些是各​​種事情 這會傷害你。 你可能會想,還是壞工程師 可能會說,哦,好,我們更好的待遇 一個更大的數據庫 或更快的數據庫 或只是錢扔在這, 垂直的規模,未必如此。 如果你去in--,你可以進去 在fact--和添加索引後, 並可能需要對幾個小時 數據庫建立新數據 結構我前面提到, 你仍然可以解決這個事實後, 這是你在哪裡 開始區分 好壞設計師 設計師,不僅僅是美觀, 但性能方面也是如此。 任何問題? 沒有? 因此對於NoSQL的,這是另一種類型的 數據庫我前面提到, 你不必行和列。 相反,你有什麼 這看起來更像這一點。 我將使用通用的語法。 大括號發生 在這裡使用了不少。 你可能有一些 像第一個名字是大衛, 你可能有最後 名字是馬蘭,報價, 你可能有ID is-- 對不起,whoops-- ID為1, 電子郵件是malan@harvard.edu,我不會 懶得打字了休息,然後 一些其他的事情。 換言之,這是 文本表示 什麼,我們一般會打電話 在計算機程序中的對象。 和對象通常僅有 鍵值對的集合。 如此反复,這種反复出現的主題。 我們看到鍵值對在HTML中, 我們現在看到的鍵值對 在數據庫的背景下,我們 看到鍵值對的背景下, ,我認為,語言今天早些時候。 一直來了。 事實上,這是真的 什麼樣的數據可以歸結為, 數據和元數據,或值 和鍵,分別。 這樣一個非關係 數據庫,基於東西 在對象上,在那裡你只需聚集 一切融合在一起,並把它 到內存中,一般會被 描繪為,或者想到,因為這。 我會馬上離開,作為一個 諸如此類的另一種方式。 一個是不一定 優於其他。 事實上,很流行 這些天的數據庫系統 像MongoDB的和Redis的和幾個 其它這種工具,可以免費獲得, 但他們越來越成為時尚。 部分原因是他們提供額外的 在這些表格的方法的特點, 而且還因為他們是 一個小更易於使用, 因為你不必硬思考 對很多設計決策。 所以利弊。 因此,實現有選擇 超出我們只是花時間。 因此,讓我們做到這一點。 讓我們轉變了一點 回到現在的網絡編程, 讓我們種的結論 今天的東西 這有點動手,盡顯 在昨天一定的差距。 讓我去這個第一。 所以,昨天召回 我們有一些典型的HTML 這最初曾頁,只 HTML,然後二次過的CSS, 級聯樣式表。 這是我們沒有一個新的標籤 昨天看到,或糾纏, 所謂的腳本。 原來你其實可以嵌入 語言JavaScript調用在你的網頁 頁面,讓您的網站 頁面做一些事情。 所以,我是什麼意思呢? 好吧,讓我繼續前進,只是 藉此代碼片刻。 我要進入Cloud9,沒有必要 去那裡自己只是還沒有, 我要去打電話給這個alert.HTML。 我要在我的文件粘貼在這裡。 而只是為了澄清我做了什麼,讓 我去這個地址去提醒, 你看到的Hello World。 但是,這是一種給人留下深刻印象的。 我想要做的事 有一點不同。 所以,我要真正做到這一點。 我打算在此處,去, 在我的腳本標記之間, 說警報('你好,世界');這樣的通知 這是一個有點草率,但我有HTML, 在其內部的是一個 語言JavaScript調用, 這就是什麼叫做 函數調用或過程調用。 這是一個動詞,從字面上看,在這種情況下, 而我調用代碼的功能 別人寫的。 這樣的功能是 警惕,讓我們到這個網頁 現在,點擊重裝,現在你 看到互動的一點點。 這是一種老派的和醜陋的。 這種提醒您的 彈出窗口,或許,昔日的 但它確實做的東西 多一點計劃。 所以不止這些,讓我們做 更有趣的東西。 讓我在這裡進去幹掉了這一點。 而且我要繼續前進, 創建窗體就像我們昨天做。 其實,你知道嗎? 我要進入 google.html您,這是我們 開始在昨天,它看起來像 這一點,通過我們搜索貓 但是請注意,有一種一 臭蟲在當前版本中。 它適用於貓,但假設 我不配合,我什麼類型, 我只需點擊提交。 這是一種怪異的行為。 帶我去了谷歌實, 沒有給我一個錯誤消息。 我想告訴用戶 你需要給我們一個值。 那麼我們如何做到這一點? 好讓我回去到Cloud9和 讓我進入我的頁面頂部 並添加腳本標記這個樣子,哪裡 我要鍵入一些JavaScript代碼。 而且我要做到以下幾點。 如果(document.getelementByID--和召回 我們先前談過這個問題, 該功能。 做我想做的ID來獲得? 我希望得到q和我要去 比方說等於沒事人一樣this-- 居然讓我用雙引號 只是consistency--等於一無所有, 然後警報(“請輸入查詢”)在這裡。 所以,我有什麼似乎是 類似的條件。 我們看到在這個划痕總體思路。 這就像那些謎題之一 件看起來是這樣的。 和我說什麼? 好了,到這裡,看到我 要做到以下幾點。 我要給這種形式 現場不僅q的名字, 是獲取傳遞給谷歌,但我 打算給它一個本地標識符, 也叫Q值。 但我可以把這個事情我 想,我只是要保持簡單 也稱之為Q,只是為了簡單起見。 現在我該怎麼辦 東西多一點。 在這裡的表單字段,我要去 添加所謂的一個事件處理程序。 在提交,我想打電話給 一個名為驗證功能。 這還不存在,這 字或該動詞驗證, 因為什麼,我該怎麼辦 這裡現在添加一些代碼。 我要說的功能驗證。 我要縮進,這並添加另一個 在這裡花括號並在這裡另外一個。 考慮一下這個現在正在做。 我為創建now--想到這我 自己的一塊拼圖以前不 存在的,我已經叫這個謎 一塊驗證拼圖。 它的生命的目的是執行 它裡面的四行代碼。 如果的document.getElementById 所以概念上, 即是要進入元件, 在HTML元素,其獨特的 想法只是q,然後即使 語法看起來有點怪異, 這等於等於只是意味著平等。 因此,這意味著如果與元素 問唯一標識符,得到的時候, 沒有價值,只是等於 報價引文結束,沒有在那裡, 然後做我想做什麼? 我想在用戶嚷嚷。 我們不會何去何從很詳細。 我將返​​回false。 這是一個錯誤。 否則,我將返回true。 所以無論是它的工作或沒有。 或真或假。 現在,如果我沒有犯任何錯誤, 讓我保存這個並重新加載此。 而讓我仔細檢查 我沒有,其實做任何錯別字, 所以我不為難自己。 讓我們來看看這是否正常工作。 所以現在我要鍵入貓。 它仍然有效,或一半的作品,至少。 現在讓我重新加載它,現在讓 我來試試無需鍵入提交 anything--該死的,它打破了。 一個瞬間。 讓我打開控制台, [聽不清]日誌,重新加載頁面。 讓我再試試這個。 噢,該死。 我忘了。 我做了一個錯字。 我記得那是什麼。 。值。 我的意思是說,如果該值 該元件的其ID為q 等於說,然後大聲喝斥用戶。 所以,現在讓我再次屏住呼吸。 開始了。 在那裡,我們走了。 請鍵入查詢。 因此,這不是讓我通過。 我可以那種俏皮與此, 而不是檢查沒有價值, 我可以這樣說, 沒有更多的尋找貓, 現在我們可以只是更調皮地讓 用戶搜索犬,如果他或她 想,還是我去這裡 搜索貓,現在我不能。 那麼,這裡的外賣? 所以之一,我們已經引入 我們的HTML和CSS的世界裡, 編程功能。 我現在其實可以 使代碼的決定。 以前,所有我能做的就是標記 文本內容或圖形內容 並告訴它要尋找什麼 像和在哪裡顯示。 現在,我實際上可以問 網頁的問題 並根據決策 其上,並提示用戶 如果我需要在他或她的叫喊。 所以讓我們嘗試一些 對我們自己與此有關。 來吧,讓我打開下一張幻燈片 在這裡,只是指出了一件事。 剛剛與CSS一樣,我們可以分解出 我們的JavaScript代碼到一個單獨的文件, 你可以做同樣的事情 用JavaScript與CSS。 並使用,使用一個源 屬性的腳本標記。 但我們不會現在複雜的事情。 相反,如果你能 去不是這個頁面, 可是 - 讓我在order--移動圍繞此 這裡去,如果可以的話,這個頁面。 這裡該URL。 這是在今天的幻燈片。 您可能必須重新加載,因為 我已經添加了一對夫婦的事情。 但是去那裡有一些謎題等待。 而這將會給我們一個機會, 在稍微更有趣的背景下, 有一些JavaScript涉足。 當你到達那裡, 我將解釋什麼在等著。 獲得綠色。 設置藍色。 集綠色,紅色設置。 哎呀。 抱歉。 這是的程度提供了 文檔這一挑戰。 而這是去工作如下。 所以,你對這個有什麼 網頁是一大堆 一個哥們形象拼圖 在斯坦福大學。 所以,你在這裡看到的是幾乎 那種那些眼的難題之一, 但如果你只盯著它, 什麼也沒有打算在你彈出。 更確切地說,是東西 隱藏這個形象。 和它隱藏在以下方式。 圖片,你可能知道,可 僅僅三色組成。 有些紅,有藍色和一些綠色。 我們可以讓所有的 顏色彩虹 由這三種顏色以某種方式混合。 因此,這看起來主要是綠色和 藍色的,但尼克說,在這裡, 這個鐵拼圖形象是一個謎。 它包含的圖像 著名的東西,但是, 圖像已被扭曲。 著名的目的是在紅色值。 然而,紅色值 有10個都被劃分。 所以,它們太小了10倍。 因此,換句話說,尼克 把原始圖像, 他所有的去飽和 從它的紅色, 降低紅色的量 墨水,如果你願意,在裡面。 藍色和綠色價值觀 都只是毫無意義的, 隨機值,又名噪音設計 模糊實像。 那麼什麼尼克所做的就是他 淡化了紅色,然後 他只是隨便扔 藍色和綠色的金額 在圖像那種晦澀 究竟是什麼仍然存在。 您必須撤消這些扭曲 以顯示圖像。 首先,將所有的藍色和綠色價值觀 到零,讓他們閃開, 看看結果。然後 乘以10的每個紅色值, 縮減到 大約其最終值。 什麼是著名的對象呢? 所以大家有這個矩形 在您的瀏覽器現在。 並注意有一些 啟動代碼,可以這麼說。 這是JavaScript代碼 尼克寫了你。 並注意有 在中間行 以斜杠斜杠開始,這是 什麼是通常被稱為註釋。 這意味著它是一個短語程序員 不具有功能意義。 這只是一個視覺提示對人類。 所以,你可以繼續前進, 刪除剛才那行, 並且是超級小心,不要 刪除或更改任何東西。 而讓我帶你通過 這是什麼代碼所做的,我會離開它 你找出秘密圖像。 這裡這第一行,我已經只是 突出顯示為您提供了以下內容。 在左手側, 你有什麼所謂 一個變量,尼克隨意, 但合理的呼籲像IM。 在右手側 那個等號, 他說,給我一個新的 報價,引文結束“簡單的圖像”。 簡單的圖像,在這種情況下 是所謂的一類,那麼, 這有點像一個分類 - 技術上prototype--但實際上, 這是給我一個新的對象, 其內容是文件, 鐵puzzle.png。 換句話說,尼克已經創造 這個概念的簡單圖像 這樣我們就可以,對於教學 的宗旨,發揮與圖像 並改變它的紅色, 綠色和藍色的值。 而我們如何做呢? 這裡這個晦澀的語法 是一種像重複塊 你們有些人在看到划痕早先 今天,在這裡你可以重複10次。 在這種情況下,尼克也沒有 硬編碼了一些像10。 相反,他是在說,初始化 一個名為x為0變量, 檢查,如果x小於 圖像的寬度。 所以要更恰當,形象是 可變的,點的意思走在它的內部 並獲得它的寬度, 然後打開括號,封閉 括號只是一個程序員的方式 的話說,這是一個功能。 這是一個過程。 這是功能 別人寫的。 使用它,並給我一個答案。 然後X ++是一個奇特的方式 他說,你做了這個曾經之後, 1增加x。 換句話說,這 是一個程序員的方式 的誘導環那 要遍歷 所有圖像中的列。 圖像只是一個網格 點,行和點列。 這是迭代的方式 在所有這些列。 而在裡面, 同時,我們迭代 在高度,在這裡 和這裡和這裡。 所以,這僅僅是一個疲憊地走的路, 幾乎像一個老同學的打字機, 只看一遍 整幅圖像迭代。 即使這不是很全 清晰的,只是依靠信念,現在, 那些三線 代碼一起是 要允許你反复看 在每一個像素,每一個點的形象。 什麼是像素? 好了,要清楚,如果我們看一下 在原來的和放大, 如果你真的把你的眼睛 電腦屏幕,這是 只是一大堆點,幾個 千點擠在一起那裡。 所以你有什麼有關呢? 這些點中的每一個, 最終的定義, 是一個什麼樣的一般結果 所謂的RGB,紅,綠,藍,這 再次,可以被組合以 給你任何數量的顏色。 事實上,如果你還記得 從很多很多年前, 投影儀屏幕喜歡這些東西 曾經擁有而不是一個鏡頭,但三種。 其中一人吐出紅燈,一 他們吐出的綠光,其中之一 吐出藍色的光。 如果你在一所中學 就像我在那裡他們從來沒有 正確對齊,你是 總是看電影史 那名稍扭曲, 因為三種顏色不 結合正常。 但事實證明,每 這些值的紅,綠,藍, 可以具有與它們相關聯的數字。 例如,0用於紅色意味著沒有 紅,0綠色表示沒有綠色, 0藍色表示沒有藍色。 所以,如果你有沒有紅,沒有綠色, 沒有藍色的,你有什麼顏色? 聽眾:[聽不清] DAVID MALAN:你會 希望如此,它是白色的。 不幸的是,這operates--遺憾? 聽眾:[聽不清] DAVID MALAN:所以你其實 有黑色,在這種情況下。 所以,如果你沒有這些 顏色打開,你有黑色的。 但是,如果你有,我們說了很多 其中,想了很多的紅色,它的255, 很多綠色的,很多 藍色的,這是白色的。 所以這是兩個極端。 因此,通過這樣的邏輯,如果我有很多 紅色和綠色無,沒有藍, 什麼顏色是什麼? 聽眾:[聽不清] DAVID MALAN:是的,很明顯。 然後沒有紅色,很多 綠色,沒有藍,然後 如果你have--很好,我們只是完成 它,只因為,但是這當然 現在,是藍色的。 現在你可以將這些顏色。 現在,順便說一句,如果您有任何的 曾經做過一些實際的網站設計, 你實際上可能 看到這樣的符號。 FFF--實際上,它是 甚至可能不是。 這是FFFFFF。 沒有人見過F公司和E的 和A through--所以事實證明, 昨天我們談到了小數, 今天,那種關於十進制。 今天我們談到的二進制文件。 事實證明,十六進制是一個非常 公共基礎的系統在計算使用。 二是二,小數為10進制為16。 而事實證明,怎麼辦 你在十六進制數? 零,一,二,三,四, 五,六,七,八, 九,你九點以後用什麼? 什麼是下一個數字? 我們已經用零。 我需要這16個。 零,一,二,三,四, 五,六,七,八,九, 你需要一些任意約定。 什麼決定人類的一段時間 以前,經過九年來的信 A,然後B,然後C.於是 這樣你在十六進制計數 是零,一,二,三,四, 五,六,七,八,九, A,B,C,D,E,F,這將算 你一路走好,它的出現,為15。 所以零至15是零通過 F.現在為什麼是顯著? 那麼,當你有兩個F公司, 這就是你如何表達255。 所以長話短說,在 Photoshop的世界, 該圖形設計軟件, 在web開發的世界裡, 在這裡你有很多顏色, 當然,一起玩, 通常程序員會 表達這些十六進制, 只是因為它往往 是有點簡單。 儘管乍一看 它的要複雜得多。 因此在任何情況下,這是非常重要的 因為尼克·斯坦福 給了我們六件功能 你,含苞待放的程序員, 現在將不得不使用的能力。 內置於本網站 頁面六大功能, 六手續尼克寫道。 他們三人將讓你一個數字, 紅色,綠色,或藍色值。 他們三人將設置該值。 而這些下劃線 只是佔位符, 所以你需要知道那些是什麼。 因此,與這三個功能, 第一這些東西 將是x坐標, 而這些東西的第二 將是一個y坐標。 換句話說,這點,這 像素你想要得到的綠色, 得到的藍色,得到的紅色。 然後這裡,這將是 X,這將是一個y值, 並且這將是一個數字。 因此,讓我們做的第一件 這一起行 然後我會把它留給你 嘗試演繹休息。 所以每個指令 此頁面上,我們需要 通過的一個因子來增加紅色 10,我們需要刪除綠色 並取出藍色。 讓我們先從後者場景。 所以,如果我想,我要去 通過使用一些縮進空格, 如果我要設置紅, 綠色或藍色值, 我要做到以下幾點。 圖片,im.setBlue,然後 根據我在這裡的指令, 哪三件事情我應該 現在鍵入括號內的? 我需要的x值時, y值,什麼號碼 我應該把在這裡,如果我想擺脫 藍色的基礎上,這樣的故事在這裡? 只需調零。 如果我要沒藍了,我只是 將其更改為為零。 現在,就讓我們回顧一下這是什麼做的。 我這裡有對這些頂級 第二和第三行, 我要求兩個迴路, 嵌套循環,如果你 將,這將會有效果 左進展到右的, 從上到下對所有的x 值和全部的Y值。 因為再次,一張圖片 只是一個行和列的網格。 因此,這是會得到 擺脫所有的藍色。 讓我在接下來的行你離開。 我該如何擺脫所有的綠色? 聽眾:[聽不清] DAVID MALAN:好的。 聽眾:[聽不清] DAVID MALAN:好的。 而且我要放大,只取 在乎的是你沒有做任何錯別字。 如果你是舒服 你做了什麼, 繼續前進,點擊按鈕 運行/保存,看看你會得到什麼。 再次,我們已經取得了 短短三年的變化。 我們刪除了第一 發表評論,並取代了它 與這兩行代碼。 而且它的確定,如果你需要打 運行/保存按鈕幾次 修復某些東西。 讓我也放大我 代碼,這樣您可以錄製。 好。 所以我看到安德魯有什麼 似乎是一個錯誤。 他只是有一個大的黑色 矩形他的屏幕上。 沒有任何人有 一個大的黑色矩形? 聽眾:是的。 DAVID MALAN:大黑色矩形? 好了,讓我們想想 這意味著什麼。 我們說,零,零,零, 所以沒有綠色,沒有紅,沒有藍, 是要給你黑。 而事實證明, 我們的大多數筆記本電腦 只是沒有足夠的保真度。 你不能完全說有 實際上是東西在那裡。 如果你有種,也許瘦 屏幕前進和後退, 也許你看到一個 小東西呢? 也許,那種類型的,? 這不是完美的黑色。 聽眾:[聽不清] DAVID MALAN:劇透! 有一些紅色的存在,但 從規格記 這個問題,尼克緩和下來。 他有些去飽和了, 但不是所有的方式為零。 因此,如果我們要放大的量 紅,讓我提出這一招。 讓我放大我的屏幕上。 讓我繼續說 量等於im.getRed(X,Y)。 這行代碼是給我 所謂的變量。 我隨意,但,可以說, 合理地叫我的變量是什麼, 顯然? 量。 只是量。 我可以叫它 任何我想要的,但我 使用此功能的其他 我前面描述 獲得紅量在x逗號年。 我為什麼這樣做呢? 你有什麼想在這裡做什麼? 您需要add-- 聽眾:[聽不清] DAVID MALAN:是的,也許 乘以10的。 如果你不知道這一點,我 要繼續前進,並做到這一點。 我要繼續前進, 比方說,我要紅色的量 我想成為什麼 是在紅,次10, 和明星,在你的星號 鍵盤是曲風不要用x。 使用明星。 這就是你的事情乘以 大多數編程語言。 所以根據賈巴爾的直覺, 存儲在這個變量,名為量, 我是多麼想衝在位置XY。 怎麼樣,現在,我做這做 像素有多少? 你已經這樣做過。 您可以設置綠色, 藍沒有價值,到零。 聽眾:[聽不清] DAVID MALAN:是的,很好 你不希望它10。 你已經在這裡做了數學。 所以,我們得到的紅色值, 這是一種低一些,大概。 我們乘以10了。 你想要做什麼 現在變量? 聽眾:[聽不清] DAVID MALAN:好的。 所以im.set--什麼? 聽眾:setRed。 DAVID MALAN:setRed,在位置XY。 是啊。 而剛剛金額。 換言之,可變 是一個臨時佔位符 你可以把你想要的任何東西。 我們碰巧把一個 在這數的時刻。 我們已經通過倍增 10使它更大。 現在我代變量 作為第三個參數,或者輸入 設置紅色。 所以,一旦你 完成那,並注意 的分號和括號。 繼續並點擊 運行/再次保存,而你 應該看到,神奇,什麼竟是 那裡。 [?阿瓦,?]是什麼呢? 埃菲爾鐵塔在羽翼豐滿 紅,不是很暗。 現在應該是比較明顯的,是嗎? 好。 和安德魯,沒有更多的黑盒子? 聽眾:[聽不清] DAVID MALAN:好的。 所以,我會記住這在屏幕上。 如果你想要玩這個 後來,我就重新創建你的。 但是這個代碼在這裡確實做到了。 為什麼我們不能做一個其他。 讓我略微向下滾動。 因此,在這種情況下,將投影機 並沒有真正做到公正。 但在你的屏幕上,你可能 有一個很紅,很黑盒子。 這也是一個難題, 顯示的東西出名。 但是,圖像已被扭曲。 真正的形象,這一次,是 在藍色和綠色價值觀。 但是,他們都被劃分 20如此的值是非常小的。 紅色值只是 隨機數,噪音小。 撤消這些扭曲 揭示真實形象。 於是尼克然後告訴你該怎麼做。 設置紅色值為零,並 那麼就不要糟蹋它是什麼。 然後乘以藍色 和20綠色價值觀。 因此,它幾乎是 相同的程序和以前一樣, 但你在倒車過程中。 我將把我的代碼 前的情況下,在屏幕上 要引用回吧 或者一個進一步發揮。 讓我放大了。 但是,解決銅形象 拼圖,排名第二。 聽眾:[聽不清] DAVID MALAN:OK,所以這一塊我 不會給盡可能多的提示。 所以我would--哦,讓我們 看,你有一個錯字在這裡。 所以請記住,這在這裡 實際上需要去那裡。 那麼,我建議,如果你想 專注於這一個,還有的答案。 如果你想錄製的,那 應該得到的第一個工作。 然後你就可以使用它作為 靈感第二個。 尼斯。 好。 而對於好奇, 這是一個簡單的例子 一門科學或藝術 所謂的隱寫術, 在現有技術中隱藏圖像信息。 通常情況下,圖像可能 水印很招搖 在底部的一個標誌 角落裡,但很明顯,你 可以是更複雜 它實際上 隱藏在圖像其他圖像 以某種方式與這種技術。 再舉一個30秒,然後我們會 至少宣布你應該看到的。 我會離開第三 一個作為一個在家鍛煉, 如果您想了解更多的 挑戰這個週末。 而且我認為安德魯可能 已先得到它。 什麼是第二圖像,安德魯? 聽眾:自由女神像。 DAVID MALAN:自由女神像 將這次的答案。 如此反复,只是一些簡單的 實施例中,目標,其中 就是給你怎樣的感覺 我們已經翻譯刮寫真 塊更惱人的多 複雜的代碼,但所有的思想 仍完全一樣, 儘管在引入 現在一個變量的概念,是 能夠臨時存儲東西。 讓我們做一個更多動手, 只是到現在連點 到一些更真實的世界。 當你準備好,如果你能 到屏幕上的這個URL。 這也是在你的副本 幻燈片,developers.google.com/maps~~V。 讓我們確實做了什麼 真正的,可以這麼說,在網絡上 使用谷歌地圖API或 應用程序接口, 以下面的方式。 谷歌,許多公司一樣, 提供了大量的免費功能 你可以用它來建立你 自己的有趣的應用。 事實上,如果你曾經使用過 尤伯杯得到出租車或汽車, 你可能知道有尤伯杯 一張地圖,它顯示了它的汽車。 也就是說,作為最好的,我可以 告訴,谷歌地圖API。 他們實際上是使用谷歌的地圖, 但尤伯杯不是一個映射的公司, 也不會是這樣一個 特別有趣的問題 解決之上其 汽車服務問題。 因此,他們是站在, 再次,在肩膀上 其他的,谷歌在這種情況下。 因此,他們使用谷歌的地圖,但自己 汽車服務等這樣的特性。 因此,我們要充分利用 這個做到以下幾點。 如果我已經走的太快, 就給我打電話了一會兒。 快樂重溫一些形象的東西。 你應該看到自己 在這樣的頁面。 因此,谷歌的不錯,和 他們是名列前茅 不僅提供的API, 但免費的API,你 可以玩或商業使用。 他們開始,如果您的使用情況向您收費 高,但我事先說乾就幹 並簽署了我們一個免費帳戶 即,希望10台電腦 不會資格我們豁然開朗。 所以希望這 論證會工作。 並注意他們有原料藥 Android版,iOS版,Web和Web服務, 不管它是什麼。 讓我們專注於網絡。 因此,單擊粉紅色的盒子,網絡,以及 將引領你,希望到一個頁面 這裡。 他們已經有了一大堆的API。 而且它可以是一個小 壓倒在第一, 但我會通過我們想要的東西指導我們。 左上角是谷歌地圖 JavaScript的API,JavaScript API的。 因此,繼續前進,然後點擊一個。 而這將導致現在你的 下頁,演示和示例代碼。 讓我縮小在這裡。 讓我把我們中場休息向下滾動 到那裡說快速啟動步驟。 您的屏幕看起來應該像我的。 並有兩個步驟,得到 一鍵啟動和發展。 我已經做了第一步的 我們得到一個所謂的關鍵。 而且這是一種常見的想法。 API密鑰通常只是 一個大的隨機數字或字符串 你應該 粘貼到你的代碼, 因此,谷歌知道你是誰,當 你使用他們的服務,他們的API。 但這並不意味著我們 被收取任何費用。 而現在,點擊,而不是 之一,單擊開始發展。 如果你能波箱 如果以上不知道我們在哪裡。 所以,我們只是刮傷 面,在這裡,但什麼 我以為會是引人注目 是真正擁有我們所有人, 在一個窗口中使用Cloud9和 本教程在另一個窗口, 讓真正得到我們自己 並運行應用程序 嵌入自定義谷歌 映射在我們自己的網頁, 然後將一個或兩個功能。 但是,我們只是刮傷 什麼我們能做的表面。 所以只是一個快速的健全性檢查。 是每個人在這個頁面中, 谷歌地圖API的JavaScript? 應該說起步。 我們不會去通過 以任何方式整個事情。 OK,在另一個選項卡,如果你不 打開它,就進入Cloud9 並獲得自己只是 一個新的標籤,最終。 如此反复,從昨天c9.io, c9.io,只是創建一個新文件。 並繼續和呼叫 它不管你想。 我打電話給我map.html。 說它是什麼在.html結尾。 你應該大致 在那裡,我在這個過程中 在一個空的只是一個閃爍提示 標籤被稱為像map.html。 或文件,新文件這一次。 而現在,在上 谷歌地圖API的JavaScript, 我們將跳過閱讀 通過這一切的文字。 但是請注意,你好世界 確實無處不在,你現在看到了。 你好世界上有這麼大豐富多彩 例如一大堆HTML的。 來吧,複製和只粘貼 HTML,所以從在頂部的文檔類型 一路的密切HTML標記,去 繼續並重新複製所有的that--, 這就是世界你好下example-- 並粘貼到您的Cloud9標籤, 所以說現在你的屏幕 應該大致像我這樣。 而且你可以將它保存,但 不加載它只是還沒有。 讓我們先來看看 代碼,看看我們是否 不能推斷或學習 從它是什麼谷歌 已經有美國的盲目複製和粘貼。 他們只是想幫助, 從字面上看,讓我們開始, 但有沒有那麼多 複雜居然有。 如有任何問題,只是還沒有? 我們很安全,銳意進取? 好。 如此迅速,我們只是做 一些快速完整性檢查。 一條線的我 見,希望你 你看,這是什麼意思,DOCTYPE HTML? 賈巴爾,還記得? 聽眾:[聽不清] DAVID MALAN:是的。 這裡談到HTML 5。 同時,兩線的上 這裡的屏幕意味著哎瀏覽器, 這裡是實際的HTML。 線路三是哎瀏覽器, 來這裡的頭。 四號線,當然,嘿嘿 瀏覽器,來這裡的冠軍。 什麼是五號線嗎? 實際上,這並不 真正做到了我們什麼。 在這種情況下,它只是調整大小 該頁面為默認。第六行, 我們還沒有談到,但是它 指定字符編碼。 有不同的方式來編碼文件, 尤其是對外國語言。 UTF-8只是往往是默認的。 所以,現在我們將看到一行 七個通16,一些CSS。 儘管我們還沒有看到 所有這些事情之前, 我們可以種推斷。 因此,八號線的手段,嘿嘿的瀏覽器,適用 以下所有以兩個標籤, 顯然? HTML和正文。 所以,逗號是有新的東西。 而這只是一個方式 一次指定多個標籤。 然後,我們已經得到了大括號內。 因此很明顯,這告訴瀏覽器, 使頁面100%的高度。 所以,即使有很少 內容,使整個頁面, 使事情填充頁面。 使地圖最終填充頁面。 保證金,這是什麼意思? 這通常喜歡隨心所欲 白色空間周圍的邊緣 有些瀏覽器只是設計師 決定應該有,因為它 那種讓事情看起來更乾淨。 但是,我們不希望這樣。 我們希望地圖去 一路的邊緣。 填充,在精神上的利潤率相近。 平均利潤率外,填補裝置 在裡面,但它的同類交易。 這是一個緩衝的一點點 你和邊緣之間。 然後13號線是一個很好的 機會快速回顧。 什麼尖銳的跡象地圖 意思是,或包括hashtag圖是什麼意思? 這是什麼參考,原則? 聽眾:[聽不清] DAVID MALAN:沒錯。 此屬性,此CSS屬性 適用於一件事,HTML標記 具有引用的ID,引文結束“地圖”。 現在,讓我們快進,滾動 下到文件的底部,其 是不是太遙遠,和在線通知 19,如果您將其粘貼正是像我一樣, 線19具有只是一個div,這是一個 頁面,昨天我司 所謂的矩形區域。 它有什麼也沒有。 這是一個開放的標籤,結束標記。 但它確實有一個唯一的ID。 那麼什麼似乎是 這裡發生的事情是谷歌 正在準備我們的網頁 擁有完整的100%的高度, 和沒有填充,無利潤,因為 我們打算把裡面 此格,其唯一的ID是 地圖,是一個實際的嵌入式地圖。 我們希望它來填充 的頁面,而不是僅僅 在中間的一些小矩形。 因此,14號線同樣強調,在 地圖本身應具有100%的高度。 所以,現在線20之間的通知 和28,這是JavaScript代碼。 這是,即使它是 語法有點怪, 那裡不是所有的東西會在這裡。 在第21行,這是聲明 所謂的變量。 與其說這是的 量,像我們以前那樣, 我們更精確地說, VAR,這只是意味著變量。 我們可以用在 尼克的代碼,但他沒有,所以我 沒有理會任何這樣做。 這是一個被稱為變量 地圖,然後有 一個函數,它是 顯然稱initMap。 所以,這就像我們自己的自定義 拼圖的划痕。 我們創建了一塊 功能稱​​為initMap, 你可以種推斷 這裡發生了什麼。 在左手側, 我們已經有了一個變量, 所以我們打算把以下 該變量內在的東西, 從右到左。 右手邊說,哎 瀏覽器,給我一個新的谷歌地圖。 而google.maps.map僅僅是一個時髦的方式 指定此功能的 屬於谷歌地圖。 括號後,我們已經看到了 在此之前,嘿嘿瀏覽器,得到 我的網頁中的元素,該 在標籤的唯一ID的頁面is-- 聽眾:[聽不清] DAVID MALAN:--map。 而到底是怎麼回事,好了, 這條線一起,23行, 基本上說, 哎瀏覽器,去給我拿 頁面上的空div 其獨有的ID是地圖, 因為我想插入 到它 - 注入進去, 如果你will--一大堆內容 這種情況也可以從網絡到來, 後來。 和谷歌的拼盡全力的為我們。 如此反复,在一天的最末端, 我們有抽象這個例子。 我不知道地圖是什麼 或如何實現的地圖API。 我們並不需要。 我們只需要告訴地圖 在那裡把自己,並留下 那些底層的實現 細節谷歌。 現在,顯然有 數據的兩件 本例是 提供谷歌的API。 顯然在地圖的中心, 和縮放級別,可以這麼說。 而且沒有人承認這些 坐標,緯度和經度? 或許不會,但我們可以回去 到教程,從字面上看。 但是,我們會看到它在短短的時刻。 縮放級別之間的值,我不知道 知道,一個在13或類似的東西。 它只是與你多遠辦 放大或縮小,僅此而已。 而現在的盡頭 頁面,通知行29-- 這是一個有點難看,因為 它wraps--這行代碼 是下載到 谷歌瀏覽器的實際API。 所有的代碼,谷歌的 工程師們編寫實現 嵌入地圖這整個功能。 現在,讓我們沒有改變任何東西。 如果你沿著之後,繼續前進, 只保存該文件,如果你確實有 我擁有的。 去其URL。 您可以點擊運行按鈕 往上頂,這將告訴 您的Web服務器的URL一次。 它會引領你到一個新的標籤。 如果您單擊打開的 map.html,賠率是你 要得到一個警告, 錯誤消息,是嗎? 錯誤信息,錯誤信息? 所以很遺憾,錯誤 消息是不是啟發 除非你真正打開 控制台,特殊標籤,我們 保持開放和昨天 一點點的當天。 但是,我偶然發現 這個較早,所以我已經 想出解決的辦法是什麼。 在今天的幻燈片,或 相反,在Cloud9,通知 我們沒有做 一些故意的。 注意,這個腳本標籤中 第29行,如果你讀通過它, 它就像maps.googleapis.com/ 什麼,什麼,什麼, 然後注意到有人, 開發商之一, 在所有的資本寫道: 字母,你的API密鑰。 我們必須粘貼有什麼。 這是一步 我做了我們面前, 他們再次可能黑名單 我們彷彿突然,12個或更多的我們 開始使用相同的密鑰, 但讓​​我們看看會發生什麼。 所以,如果你進入今天的 幻燈片,一張幻燈片後,有 這個非常時髦的前瞻性文本字符串。 繼續前進,只是複製和 它說:你的API密鑰粘貼。 這是我簽署了一個。 絕對不要嘗試 手動輸入了, 因為感覺充滿 有錯別字,有可能。 因此,只要複製和粘貼。 而這將使得該行 更長的時間,但現在,僅僅是明確的, 它看起來應該多一點 這樣,這裡的關鍵不等於 資本在你大喊大叫。 保存頁面,回去 其他選項卡,重裝, 並希望看到地圖上哪裡? 聽眾:澳大利亞。 DAVID MALAN:澳大利亞。 因此很明顯,這些都是 GPS坐標澳大利亞。 讓我逛完只是一瞬間 並幫助任何人誰是不能令人信服, 但讓​​我提出,通過谷歌,找到 你自己家鄉的GPS坐標 還是自己的祖國。 大概谷歌可以關閉此 ,或者維基百科可以告訴你。 但是,選擇兩種不同的價值觀 對於經度和緯度, 回去和粘貼他們, 然後保存後重新加載頁面 看看你是否能有 地圖為自己的家鄉。 而當你與完成 即,後續challenge-- 我給少一點的方向, 故意讓你故意 有一對夫婦的鬥爭 與文檔分鐘, 改變地圖為不這 卡通默認,但衛星地圖。 所以你實際看到的衛星 圖像,而不是漂亮的顏色。 而暗示我給你 是更改地圖的類型。 回到那個讓 開始頁尋找靈感。 正如你可能已經收集到, 如果你正在尋找, 有那麼多的 事情可以做。 你們當中有些人已經 改變了地圖類型。 但是你可以do--例如,讓我 去的東西我們做的課程 我teach-- maps.cs50.net。 我們的一位本科生這樣做。 我們集中我們的地圖上哈佛和 覆蓋所有這些建築的名字, 我們讓他添加此。 所以,如果我想搜索, 例如,馬修斯廳, 我們有一個小的下拉菜單。 而且我認為他的使用引導時, 圖書館前面這個討論。 如果你點擊馬修斯 大廳,立刻 跳躍地圖以一定 位置,它表明 你在這個小彈出一個畫面。 但即使是這個小 彈出,我們沒有實現。 如果我向下滾動,我們得到 開始頁面,並查找信息窗口, 你會看到一些的 功能你自己 可以添加,儘管有 更複雜一點, 一些所謂的信息窗口。 如果我點擊一個例子 在這裡,這是何等的樂趣, 你可以做這樣的事情, 點擊一個標記,然後瞧, 信息彈出。 因此,我們還沒有完全出台 的JavaScript的功能不夠 畫的圖畫究竟如何 可以連接所有的這些東西在一起, 但我們那種觸及表面。 其實,我只是做的時候 我點擊該標記, 被觸發的事件,一個 所謂的單擊事件。 而我們居然看到了 事件今天早些時候, 所謂提交事件, 當我們被阻止 從尋找貓的用戶。 因此,我們那種千挑萬選用 從所有這些各種功能中, 給你的感覺,希望 什麼,你其實可以 做多一點 舒適的編程, 而完全免費的資源。 任何問題? 沒有? 這是你最後的機會, 今天至少,在週五, 得到任何關你的胸部 讓你走出這裡 感覺自信和舒適。 是。 聽眾:為什麼不 你添加更多的東西嗎? DAVID MALAN:我的天哪。 我需要休息這個週末,我想。 其他問題? 聽眾:[聽不清] DAVID MALAN:你can--在 Internet Explorer中,安息吧, 你曾經是能夠把VB 腳本,虛擬基本的腳本, 但真的從來沒有流行起來。 所以,簡單的答案是剛剛的JavaScript。 其他問題? 好吧,好吧,讓我這樣做。 讓我搶外面的同事。 他們有一些評測 他們希望每個人都表格 花幾分鐘時間填寫。 他們想收集的形式和任何 你可能有減免之外。 他們還將有證書。 我猜有 外面仍然有一些小吃。 讓我通過這些了,如果你 在此期間有任何問題, 我會走動更多的獨立 我們可以讓你開始。 當然是。 聽眾:[聽不清] DAVID MALAN:這是 通常真正的這些日子。 當然,與網絡 軟件時,靠在 別人你要么 美觀使用的東西 像引導,讓你不 必須實現低水平 菜單的細節和 按鈕和所有。 你扶著別人 像谷歌這樣你 沒有建立一個尤伯杯 業務和映射業務, 和任何數量的類似 應用程序也是如此。 事實上,登錄都受歡迎。 如果你已經使用Spotify的或 任何數量的網站, 你會登錄一些 使用Facebook的網站。 那麼,什麼是好的,有 對於登錄的API 如今,讓您不必 擁有自己的用戶表 和你自己的數據庫 不一定以相同的程度。 你可以讓Facebook的做 那複雜性為您服務。 所以這是一個激動人心的時刻, 說實話,在規劃, 因為有這麼多的第三方 服務,你可以建立在上面。 再次,你付出的代價是 無論是財政或停機。 如果谷歌下降, 所以呢尤伯杯,可以說, 但也許這是一個 合理的取捨。 再次,這是主題之一, 我們希望,在過去的幾天, 是這些權衡。 而很少有去 是一個正確的答案。 這真的是更好 的兩個或兩個以上的答案。 各地通過這些。 而這些Cloud9帳戶將繼續 工作,在理論上,在永久。 您可能會發現,如果你再等幾天 或一個星期或更長時間重新登錄到他們, 這可能需要像一個或 五分鐘開回來了, 但是這只是因為他們把 它睡覺,以節省資源。