David MALAN: Lahat ng karapatan, kami ay bumalik. Kaya para sa mga kapana-panabik konklusyon, ang aming huling seksyon sa web programming, na aking naisip gusto namin gamitin bilang isang pangkalahatang kataga upang makuha ang isang ilang mga natitirang mga paksa. Kaya sa katapusan ng araw, kami ay talagang gawin isang maliit na piraso ng hands-on web programming sa isang wika na tinatawag JavaScript. At sa tingin ko kami ay kumuha ng isang pagtingin sa isang bagay na may kaugnayan sa mga imahe at pagtuklas ng isang bagay lihim na nakatago sa isang imahe, at ring kumuha ng isang pagtingin sa mga Google Maps API, application programming interface, bilang isang bagay kinatawan ng uri ng software iyon increasingly at malayang magagamit ngayon. Ngunit bakit hindi namin kumuha ng isang pagtingin sa isang sahog sa mundong ito na namin ang uri ng naging pagkuha para sa ipinagkaloob umiiral para sa ilang mga panahon, ang isang database. Para sa nakalipas na araw at kalahating na ipinapalagay namin na kami ay may access sa isang database, ngunit kung ano ang problema ay isang database malutas? Ano ang ginagawa nito para sa atin? Ano ito? Madla: [hindi marinig] David MALAN: Pagpipigil lahat ng impormasyon, OK, at kung ano ang mga uri ng impormasyon maaaring ilagay mo sa loob nito? Madla: [hindi marinig] David MALAN: Ang impormasyong may mong ilagay sa loob nito, makakakuha ka ng likod. Tama iyan. At sa isang tipikal na web-based na site o web application, ano ang mga uri ng impormasyon, partikular, maaari mong ilagay sa? Madla: [hindi marinig] David MALAN: Ang mga gumagamit. Kaya kung ano ang isang user? Madla: [hindi marinig] David MALAN: OK, na nakarehistro user ng site. At kung ano ang ibig sabihin ng imbak ng impormasyon gumagamit? Ano composes isang user? Ang isang gumagamit ay may kung ano ang? Madla: [hindi marinig] David MALAN: Oo, personal data, at ako na tulad ng. ni maging mas tumpak Hayaan. Kaya ang isang gumagamit ay karaniwang ay may pangalan, ano pa ang maaaring magkaroon ng isang user? Madla: [hindi marinig] David MALAN: Ang isang addr-- OK, kaya unang pangalan, apelyido. Mabuti yan. Sa totoo lang, sabihin ayusin na, dahil ito ay pagpunta para buksan ang up ng pagkakataon para sa discussion, pa rin, mas malayo. Unang pangalan, apelyido, kasarian. Isang ID ng ilang mga uri. Ano pa? Narinig ko ibang bagay bago, masyadong. Isang email, postal address. Kaya sabihin i-pause doon at ngayon isaalang-alang hindi kung ano ang aming pag-iimbak sa database, but-- at hindi kung bakit, dahil ito ay marahil kitang-kita na sa sandaling ikaw ay magrehistro ng isang user, na nais mong matandaan ang mga ito para sa ilang oras. Hindi mo nais ito sa lamang naka-imbak sa RAM at ma-forgotten-- kaya tingnan natin ang kung paano. Ito ay lumiliko out na sa mundo ng mga database, mayroong hindi bababa sa dalawang uri ang mga araw. Isang bagay na tinatawag ng isang SQL database, Wika Structured Query, o, cutely pinangalanan, NoSQL, na kung saan ay hindi SQL. At ang huli ay isang halimbawa ng kung ano ang maaaring na tawaging object-oriented, o isang bagay na tindahan, isang database na nag-iimbak ng mga bagay, at hindi, excuse sa akin, bilang namin ay malapit nang makita, mga hilera. Kaya kami ay tumutok para sa sandali lamang sa ang unang ng mga, namely, ang isang SQL database, kung lamang dahil sa ito ay kaya pamilyar na, sa kahit sino na nag-ginamit Excel o Sheets Google o Apple Numero o anumang pamantayan spreadsheet program, o, equivalently, o mas sophisticatedly, isang bagay tulad ng Microsoft Access o Oracle o MySQL o PostgreSQL, ang lahat ay ay mga pangalan produkto pagpapatupad sa mga sumusunod na ideya. A pamanggit database ay simpleng isang bagay na may hanay at haligi. At sa pamamagitan ng hanay at haligi, Ako literal ibig sabihin ng isang bagay tulad nito, kaya kung saan maaari naming magkaroon ng pangalan ng isang patlang at ang uri nito sa paglipas dito. At talagang, hayaan mo akong ngayon simulan upang i-map ang mga ito. Kaya talaga, hindi ko alam kung bakit ako Drew ng isang hiwalay na chart. panatilihin ang mga ito simpleng Hayaan. Mayroon kaming karapatan dito sa Beginnings ng aming table, kung saan ito ay ang pangalan ng patlang at ito ay ang uri ng data, at ayon sa uri ibig sabihin ko ang mga sumusunod. Ito ba ay isang bilang, ito ay isang string, isang maikling string tulad ng isang salita, ito ay isang talata, ay ito binary data, tulad ng isang imahe? At sabihin lamang mambiro ito ilaan para lamang sa isang sandali. Kaya unang pangalan, numero, string, malaking tipak ng text-- Madla: [hindi marinig] David MALAN: Oo, kaya string. At sa isang database konteksto, kami karaniwang itawag sa char field. kukunin ko na lang sabihin char para sa ngayon ngunit kami pagpunta upang pinuhin ito sa isang sandali. field Character. Apelyido ay marahil pareho. Kasarian? Lalaki o babae, kaya ito ay maaaring isang pansamantalang trabaho field. Ito ay maaaring maging alinman sa quote, magpanipi "Lalaki" o quote, magpanipi "babae" o maaaring ito ay m o f. Kung nais mong maging mas inclusive, maaaring kailangan mo ng isang third halaga o ilang mga uri ng iba pang mga patlang kabuuan. At kaya maaari mong gamitin ang tunay na hindi totoo. Ang bukid ay maaaring tinawag na lalake, at pagkatapos ay maaari mong sabihin totoo o hindi. Ngunit iyon ay hindi kinakailangang makuha lahat ng impormasyon na maaari mong. Kaya ito lumiliko out mayroong isa pang uri ng mga patlang na maaaring maging kapaki-pakinabang dito sa isang tipikal na database, na tinatawag na isang enum, kung saan ito ay isang patlang ng character, ngunit ikaw, ang taga-disenyo, kumuha na magbilang ang mga posibleng halaga, tulad quote, magpanipi "lalaki", quote, magpanipi "babae" at iba pa. Kaya na kung ano ang halaga ay nasa iyong database, ay sa katunayan character-based, ngunit ito ay upang maging isa sa mga halaga. Kami ay marahil ay hindi gusto ng isang enum para sa unang pangalan o apelyido. Kung hindi man kami ay may sa magbilang, tulad ng pangalan derives mula sa, literal bawat posibleng unang pangalan at apelyido. OK, kaya ID kung ano ang dapat ng isang ID na ito? Oo, kaya siguro ang isang numero. Kaya sabihin stick sa na para sa ngayon, numero. At sa pamamagitan ng numero, numero ay isang maliit na masyadong malawak na ngayon. Para sa katapusan ng ikalawang araw, Pakiramdam ko ay tulad namin ay dapat na isang maliit na mas tiyak. Number ay maaaring ibig sabihin tulad ng, ito maaaring maging isang bagay tulad ng 1.236. At iyon ay marahil hindi kung ano ang aming ibig sabihin sa pamamagitan ng isang ID. Ano ang gagawin namin malamang na ibig sabihin sa pamamagitan ng isang ID? Madla: [hindi marinig] David MALAN: Oh, OK, kaya marahil ito ay hindi kahit na ang isang numero. Siguro ito ay talagang isang natatanging identifier na ang isang string, tulad ng isang user name. Kaya walang pasubali, ay maaaring. Sa tingin ko ang isang tao marahil sinadya numeric, bagaman. Kaya sabihin manatili sa na. Anong klaseng number? Ano ang isang mas precise-- isang integer. Kaya ang isang numero tulad ng 0, 1, 2, 3, kaya ipapakita namin itawag sa isang integer. At kahit pagkatapos, kaya kong ay nitpicking, ito ay hindi talagang lamang ng isang general integer na gusto mo. Ikaw marahil ay hindi nais negatibong halaga, dahil lang sa, ito lamang ang nararamdaman kakaiba. Maaring nais positive integers. Kaya maaari mo ring ipahayag ang na sa isang database, ngunit sa ngayon, kami ay sabihin integer. Email? Ito ay marahil just-- isang kung ano? Madla: [hindi marinig] David MALAN: Ito ay isang email, ngunit iyan ay mga character, i-right? Ito lamang ay may isang funky character tulad ng isang "sa" simbolo o iba pang dahilan, ngunit ito ay pa rin ng isang patlang character. At postal address? field Character. Kaya na ang isang magandang simula, ngunit sabihin maging isang maliit na mas tiyak na ngayon. Kaya ito ay lumiliko out na sa isang database, ikaw ay madalas na magkaroon ng isang pagpipilian ng higit sa mas pino bersyon ng mga bagay na ito. Sa katunayan, sa isang tipikal na SQL database, SQL, o sa mas pangkalahatang, pamanggit database, database na may mga hilera at mga haligi, ikaw ay madalas na makakuha upang tukuyin hindi lamang ang uri ng mga field-- hayaan mo akong gumawa ng ilang mga kuwarto here-- kundi pati na rin ang haba. Kaya kung gaano katagal ay isang unang pangalan? Sa tingin ko, D-A-V-I-D. OK, nakuha ko ko marahil lamang naapi tulad ng kalahati ng mga tao sa kuwarto, kanan, dahil ang inyong mga pangalan ay mas mahaba kaysa sa limang titik, kaya limang tila isang maliit na makasarili at walang muwang, kaya kung ano ang isang mas mahusay na halaga? 10, lahat ng karapatan, at sa tingin ko kami ay OK sa kuwarto. 13? 30? Bakit hindi ko gawin ang mga diskarte ng mas maaga kapag kami ay pakikipag-usap tungkol sa arrays at memory? Bakit hindi ko na lang sabihin tulad 1,000? pangalan Walang sinuman ay pagpunta upang maging mas mahaba kaysa sa 1,000. Uurong. Madla: [hindi marinig] David MALAN: Oo, ito ay mapag-aksaya, right, lalo na kung karamihan pangalan ay lamang ng lima o 10 o 15 mga character, napakagaling mapag-aksaya. Kaya alam mo kung ano? Ito ay uri ng isang mahirap na tanong. Ngayon, maaari naming tiyak na pag-aralan English at mga pangalan ng anumang iba pang mga wika ni at malaman kung, well, kung ano ang average-- average ay hindi tunay matulungan us-- ano ang max ay marahil kung ano ang aming talagang gusto. Ngunit ito ay lumiliko out namin kahit na magkaroon ng ilang choice ibabaw ng type dito. Sa isang tipikal na SQL database, ikaw may isang bagay na tinatawag na isang char field at din ng isang varchar, V-A-R, para sa mga variable char field. At ang pagkakaiba ay na ito. Ang isang pansamantalang trabaho field, ikaw ang taga-disenyo, kung tukuyin nang maaga ang eksaktong haba ng field. Kaya siguro ang unang pangalan tulad ng 20 nararamdaman uri ng safe. Maaaring may sa gawin ang ilang mga googling sa makita kung na talagang ligtas na sapat. May marahil ng isang pangalan na may 21 character, ngunit sa ngayon, ipagpalagay 20 ay ligtas. Ang isang pansamantalang trabaho field ay magpahiwatig sa isang database na kayo ay gumagamit ng 20 at laging 20 character. Ngayon kung ito ay lamang ng D-A-V-I-D, 15 ng mga ay lamang ang pagpunta sa maging blangko character, ngunit pa rin ang ginagamit mo ang lahat ng 20 bytes. A varchar field, sa pamamagitan ng kaibahan, ay nangangahulugan na ang string ay dapat na hanggang sa 20 mga character ngunit kung ito ay lamang ng limang, lamang ikaw ay pagpunta sa gamitin limang, o marahil anim para sa isang espesyal na halaga sa dulo, tulad na 0 napag-usapan namin na Sumisimbolo sa dulo ng isang character sequence sa memorya. Kaya kapag sa tingin ninyo maaari mong piliin char versus varchar, na ibinigay na trade-off? Char ay gumagamit na ang maraming mga character, varchar ay gumagamit ng walang higit pa kaysa sa maraming mga character. Madla: [hindi marinig] David MALAN: OK, kapag alam mo ang haba ng string pretty nakakahimok sa makatarungan gumamit char, dahil kung alam mo ito, lamang ilagay ito pababa. At marahil na totoo para sa isang zip code, sa US, hindi bababa sa, 02138, palagi itong pagpunta sa maging limang character hanggang mong idagdag ang dash apat. Ngunit maaari kang makakuha ng ilang mga halaga para sa na lagi mong malaman ang haba. O siguro estado simbolo, tulad NY para sa New York, at MA para sa Massachusetts sa US. Siguro ikaw ay walang ilang mga sitwasyon kung saan na lubos makatwirang, ngunit sa pamamagitan ng lohika na, bakit namin kahit overthinking ito? Bakit hindi namin lamang gamitin varchar at pagkatapos lamang namin idedetalye laging gumamit ng dalawang character pa rin, o laging gumamit ng limang mga character pa rin? Bakit hindi lamang i-save ang varchar para lahat ng bagay, sa pamamagitan ng lohika na? Dapat ay may isang catch. Madla: [hindi marinig] David MALAN: Could magsulat ng isang bagay na mali. Kaya na ay totoo. Ngunit kahit na pagkatapos, hindi nila maaaring gamitin mas memory kaysa maglaan ko. Ako pa rin ay ang pangwakas na sabihin sa ibabaw ng haba, kaya hindi sinasadyang sila ay maaaring gumawa ng na di-tama, ngunit isang mahusay na pag-iisip. Ito ay mas pino, ngunit ito ay napaka-kaugnay na sa aming mga talakayan, talaga, ng arrays at naka-link listahan nang mas maaga. Ito ay lumiliko out na ang isang database, kung ito alam na ang lahat ng mga halaga ay ng isang nakapirming haba, kahit na ang ilan sa mga halaga ay blangko, uri ng aesthetically blangko, D-A-V-I-D at pagkatapos ay 15 blanks, ito ay lumiliko out na kung ang bawat bukid ay ang parehong haba, marami tulad ng isang array ay ang lahat ng mga bagay-bagay sa kanyang back to back upang i-back upang i-back upang ang maaari mo lamang plus 1 upang makakuha ng sa susunod na halaga, parehong ideya sa isang database table. Kung ang lahat ng iyong mga character string ay ang parehong haba, ikaw ay may kung ano ang tinatawag random access. Kung ang lahat ng mga string ay ng length 20, hindi mo lamang gawin plus 1 mo lamang gawin plus 20, plus 20, plus 20, plus 20, at maaari mong masyadong mabilis mag-scroll sa o maghanap sa lahat ng iyong data. Ang isang variable char field, sa pamamagitan ng kaibahan, ay hindi laging magkaroon ng 20 mga character. Ito ay maaaring magkaroon ng 20 at pagkatapos ay 15 at pagkatapos ay 19 at pagkatapos ay 10, at kaya kung nais mong maghanap sa pamamagitan ng ito, maaari mong hindi lamang nang walang taros magdagdag ng 20 bytes upang makakuha ng sa susunod na isa. Ikaw literal na kailangang maghanap sa pamamagitan ng dahil sa gilid ng istraktura ng data, kung ikaw ay, ay punit-punit. Ito ay uri ng napupunta sa at sa labas batay sa aktwal na haba ng string. Kaya kapag alam mo ang haba, bilang Kareem sabi ni, gumamit ng isang char field, dahil ikaw ay makakuha ng na kahusayan ng pagiging magagawang upang maghanap sa pamamagitan ng ito nang mas mabilis kapag kayo ay naghahanap para sa data, kung hindi man gumamit ng isang variable. Sa kasamaang palad, wala akong magandang sagot sa kung gaano katagal ang pangalan ay dapat na, ngunit para sa isang bagay tulad ng isang pangalan, nais kong sabihin isang varchar ay karaniwan dahil hindi ito ay pagpunta upang maging isang nakapirming haba para sa lahat. 20, hindi ko alam, 20 nararamdaman ng isang maliit na masikip. Sabihin lang sabihin 50, 50. Ito ay hindi talagang gastos sa iyo na marami pang iba upang sabihin 50 sa halip ng 40, ngunit sa ilang mga punto, kailangan mong upang gumawa ng isang paghatol na tawag. Napaka-pangkaraniwan, lantaran, para sa [? makasaysayang?] dahilan, kahit na ito ay labis na, sa makatuwid baga'y 255, dahil ang ilang mga oras ang nakalipas, sa popular na sistema ng database, tulad ng MySQL, isang libreng open source tool na ang isang pulutong ng mga kompanya tulad ng kahit Facebook ginamit, ito ay ang maximum default kaya mga tao lamang nagpunta dito. Kaya hindi makatwiran, ngunit bibigyan namin gumamit ng isang maliit na mas intuwisyon At iyong sabihin, bang 50, na ang dahilan marahil ng isang maliit na labis. Kasarian, Gagawin ko tulad enum, at sa gayon kami ay maaaring samakatuwid magbilang lalaki o babae, o marahil mas mahusay, m o f o ilang iba pang symbology, ngunit enum nararamdaman tulad ng isang mahusay na pagpili doon. Upang maging malinaw, kasarian maaari lamang maging isang varchar, at kami ay maaaring lamang ang lahat sumasang-ayon bilang magaling na tao, na laging ilagay ang parehong mga halaga doon. Lalaki o babae o watnat. Ngunit ang problema pagkatapos, ay na maaari naming gumawa ng isang pagkakamali, tulad ng [hindi marinig] iminungkahi mas maaga sa isang iba't ibang konteksto. Kung gumawa kami ng isang pagkakamali, maaari naming makakuha ng hindi tamang mga halaga sa aming database. Kaya kung ano ang maganda tungkol database tulad ng Oracle at MySQL at iba pa, ay na kayo ay may ito huling layer ng depensa kung saan iyong DBA, database administrator, kahit sino ay pagdisenyo ng talahanayan na ito tulad namin Isasama sa salita, ay maaaring ilagay sa lugar ng isang enum na pinoprotektahan laban na sa pamamagitan ng pagtukoy lalaki, babae, at sa gayon walang sinuman sino pa ang paririto walang programmer Maaari sinasadyang magpasok ng anumang iba pang mga halaga. Kaya ito ay magiging isang magandang bagay. Ito ay isang tampok. Kaya isang ID, sa pag-aakala ng isang numeric ID, ito marahil ay dapat na isang positibong integer. At hindi na namin minsan ang mayroon pagkakataon upang talakayin haba. Ng gagawin mo hindi karaniwang tukuyin ang isang numero dito, Gusto mo sa halip tukuyin ito ay isang int, o isang malaking int, bilang ang mga ito ay karaniwang tinatawag na. Ngunit karaniwan, isang integer ay magiging, sabihin nating, 4 bytes. At kung ito ay 4 bytes, na ang dahilan kung gaano karaming mga bits? Madla: [hindi marinig] David MALAN: 32 bits. Kaya kung gaano karaming mga gumagamit ay maaari naming magkaroon sa aming database kung lahat sila ay may isang ID at ID na ito ay may upang maging natatangi? 32 bits ay nangangahulugan na mayroon kami kataga ng isa, dalawa, tatlo, apat, five-- kaya kung gaano karaming iba't ibang mga pattern ng mga zero at mga bago maaari kang magkaroon ng kung may mga 32? Iyan ay ang parehong bagay bilang humihingi sa kung ano ang dalawa hanggang sa 32? Isa itong malaking numero na Hindi pa ko makakuha ng karapatan, ngunit alam ko ito ay halos 4 bilyon. Kaya ito nangangahulugan na ang iyong database talahanayan ay maaaring may apat na bilyong mga gumagamit at iyon ito. Kaya ito ay isang kawili-wiling disenyo implikasyon. Ang isang disenteng bilang ng mga kumpanya nagpasya, siguro hindi kaya magkano para sa kanilang mga gumagamit ng talahanayan, dahil sa pagkakaroon 4 billion user ay isang bihirang problema. Ito ay uri ng isang Facebook-style problema, hindi isang tipikal na problema ng kumpanya. Pero siguro kung mayroon kang transaksyon logs o ilang mga uri ng data na patuloy makakakuha ng nakasulat sa iyong database na walang pasubali ay maaaring magkaroon ng mga bilyun-bilyong at bilyun-bilyong ng mga hilera, at gumamit ka ng isang integer para dito, kung ano ang pagpunta sa mangyayari sa lalong madaling kumuha ka sa hilera number 4 billion at pagkatapos mong subukan upang ipasok ang 4 billionth at 1, kaya na magsalita? Ako simplifying ang mga numero ng kaunti. Maaari mong i-cut pabalik, ibig sabihin ko sa iyo kung hawakan ito sa anumang paraan. At kung ano ang isang computer ay karaniwang gawin, isipin ang tungkol dito kahit na mula sa ito umaga, kung ikaw ay may isang 4-bit na halaga tulad ng 1, 1, 1, 1, na kung saan, lamang upang itali ang umaga sama-sama sa hapon, kung ano ay ang bilang na ito ay kumakatawan sa binary? OK, kami ay gawin itong mas madali. Ano ang numerong ito kumakatawan sa binary? OK, kami ay gumawa ng mas madali, kung ano ay ito ay kumakatawan sa binary? Madla: Three. David MALAN: Three, dahil mayroon kaming ang mga column-- [TAWA] Whew! Nagkaroon kami ng mga haligi at ang twos haligi. Kaya ipagpalagay na, sa katunayan, ang aming [? infield?] ay hindi 32 bits, ngunit ito ay dalawang bits, maaari naming count mula sa gumagamit number 0, 1, 2, 3, at pagkatapos ay kami ay uri ng pabalik sa user 00 muli. Kaya ito ay kung ano ay karaniwang mangyayari. Kung sakaling mo na narinig ang expression-- marahil ay may hindi, ngunit kung have-- mo integer overflow, kung saan mo panatilihin flipping ang lahat ng iyong mga piraso na ang pinakamalaking posibleng halaga, at pagkatapos ikaw ay out ng mga piraso, kung ano ang nais ay karaniwang mangyayari? Bakit sinasabi ko 00? Well, ito ay tatlo. Paano ko kakatawanin ko 4? Paano ko ay kumakatawan sa mga para sa numero 4 sa binary? Madla: [hindi marinig] David MALAN: one-- yeah, huwag sabihin 100 per se, dahil ito ay may mali kahulugan, ngunit 1-0-0. Kaya na number 1-0-0 ay talagang tama, ngunit kung ikaw ay may lamang ng dalawang bits, ano ang mayroon kang talagang ginawa? Mo na pinagsama sa ibabaw sa 00. At sa katunayan, iyan ay kung ano ang mangyayari. Talaga, maaari mong isipin tungkol sa mga ito ng mas maraming pabihasa. Kung isipin ang mo, ano, 16 taon na ang nakakaraan, ang mundo ay dapat na nagtatapos kapag ang Y2K problema ang nangyari. Bakit ay na? Well karamihan ng mga computer, para sa makatwirang desisyon, ay pag-iimbak ng mga numero tulad ng mga taon 1975 o ang taong 1999 sa pamamagitan lamang ng paggamit ng dalawang numero sa memory ng computer. Kaya siyempre, kung ano ang mangyayari kapag nakarating ka na sa taong 2000, kang pumunta sa ito, o sa halip, yeah. Kaya kang pumunta sa taong 2000, ngunit kung lamang ikaw ay gumagamit ng dalawang numero sa hitsura nito tulad ng mga taong 00 at kaya mo na lulon sa ibabaw. At ito ay kung bakit ang isang pulutong ng mga sistema ng kailangan upang ma-update sa panahon. Kaya sa na sinabi, mga kumpanya tulad ng Facebook magkatagpo ito. Kaya ang tanging paraan upang panghawakan ang sitwasyon, lantaran, ay upang mahulaan ito. O ang cleanest paraan upang hawakan ito kalagayan ay upang mahulaan ito nang sa gayon hindi mo gusto kung gumawa ng mga pagbabago sa ibang pagkakataon. Kaya sa halip ng 8 bytes, alam mo kung ano? Pupunta ako upang maging forward-iisip dito, kahit na ito ay isang maliit na maasahin sa mabuti na kami ay pagpunta sa magkaroon ng 4 bilyong at 1 mga gumagamit sa aming website. Ngunit sabihin lamang gamitin 8 bytes, o 64 bits, na kung saan ay karaniwang maging tinatawag na isang malaking integer, napaka-teknikal. At na lamang ay nangangahulugan na maaari kang magkaroon ng kahit na higit pa digits sa iyong numero. Ngunit ito ay isang mahalagang disenyo desisyon, dahil kung pinili mo ang isang numero na may masyadong ilang mga piraso ng expressiveness maaari mong tunay na lumikha isang bug sa iyong software. O sige, kaya sabihin balutin may email at postal address. Kaya email, kung gaano katagal dapat ng isang email address na ito? 50. Ako tunay na walang ideya, ngunit ito ay marahil isang bagay tulad na, dahil kung hindi man walang isa ay pagpunta sa isulat sa iyo kung ito ay makakakuha ng masyadong mahaba, kaya 50, sabihin pumunta sa mga ito para sa ngayon. Postal address, kung gaano katagal dapat na maging? Madla: [hindi marinig] David MALAN: Ito ay hindi lamang ng isang zip code, bagaman. Postal address, aking narinig. Kaya ito ay tulad ng 1 Brattle Square, comma, Cambridge Mass., kuwit, 02138. At sa katunayan, ipaalam sa akin lamang hilahin up ng isang maliit worksheet dito. Ito nararamdaman tulad ng ito ay isang hindi nakuha ng pagkakataon. Kung kami ay may 1 Brattle Square, comma, Cambridge MA 02138, Pakiramdam ko ay tulad ng maaari naming gawin mas mahusay pa sa postal address. Bakit hindi namin sumabog ito nang kaunti? Ano ako nakakakuha sa? Ano ang dapat namin sa halip ay may para sa aming mga hilera dito, marahil? Madla: [hindi marinig] David MALAN: Oo, kaya sabihin tumawag ito street_number, at isang salungguhit ay lamang ng isang karaniwang paraan ng pagkakaroon ng kung ano ang hitsura tulad ng isang space, ngunit ito ay hindi, talaga. Street, at pagkatapos ay city-- paumanhin? Madla: [hindi marinig] David MALAN: Maaari naming gawin iyon. Line isa, dalawa linya. Bakit hindi kami ay patuloy itong simple para sa ngayon, ngunit iyan ay walang pasubali isang katanggap-tanggap na desisyon. At pagkatapos ng estado, at pagkatapos ay sabihin maging isang maliit na US-sentrik para sa ngayon at lamang gawin zip code, dahil lang Makikita ito ay humantong sa isang nakawiwiling pagkakamali o problema dito. Kaya ipagpalagay na ngayon ang aming address. Ito ay isang maliit na mas nakakainis na mayroon kaming ang lahat ng mga higit pang mga patlang, ngunit ngayon maaari naming i-tag mga bagay ng kaunti mas mahusay. Kaya ngayon street number marahil ay hindi dapat maging isang pansamantalang trabaho, dapat ito? Ano ang dapat na mangyari? Madla: [hindi marinig] David MALAN: Maaari, ang isang bilang tulad ng isang integer muli? Isang malaking integer? Ikaw ay malamang na hindi nakatira sa 4 billion Main Street o anumang bagay mabaliw tulad na. Kaya integer ay marahil fine, ngunit kahit sino ay may kailanman nanirahan sa isang address tulad ng 1A Brattle Square, o 1 at 1/2? Ang mga bagay na umiiral, sa kasamaang palad, kahit na hindi mo na nanirahan doon, may mga mga anomalies tulad apartment 1A, 1B, 1C. Kaya alam mo kung ano, kami ay marahil ay hindi dapat pumunta sa integer, kung hindi man kami ay pagpunta upang mawala ang ilang mga benta. Char field, siguro? Hindi ko alam kung gaano katagal. Ito ay marahil hindi pagpunta sa maging na mahaba, kaya 10 o isang bagay. Walang sinuman ay pagpunta sa sumulat ang mas matagal na number, siguro. Ngunit muli, dapat namin marahil makapagbigay ng higit pang pag-iisip na iyon. Siguro google, gawin ang ilang mga pananaliksik, ngunit kami ay yayaon sangpu ng aming mga bayag para sa ngayon. Kalye, char, 50, hindi ko alam. Sa ilang mga punto, walang sinuman ang nangyayari upang isulat ito sa isang sobre, masyadong, kaya doon ay marahil ilang itaas na hangganan doon. City, parehong, sigurado, kaya char 50. State, ay maaaring maging US-sentrik para sa ngayon. Kaya maaaring ito ay isang listahan, kaya uri ng isang tawag paghatol, state. Ito ay maaaring maging tulad ng dalawang character. Kaya talaga, siguro, ay iningatan ko sinasabi char. Ako marahil ibig sabihin varchar, lamang para sa ilang mga kahusayan, ngunit kami ay bumalik sa na ang desisyon sa isang sandali. Puwede maging isang pansamantalang trabaho ng haba 2 para sa estado. Kung sa US ay mayroon sila, tulad ng MA, Massachusetts, NY, New York, NJ, New Jersey, at iba pa. Kaya ito ay maaaring taning na sa ganoon. DC para sa Washington DC. Ngunit tingin ko, Olivier, ikaw iminungkahi ng isa pang diskarte. Madla: [hindi marinig] David MALAN: Oo, kaya ito ay isang maliit na nakakainis na i-type, ngunit isang enum maaaring maging mas makatuturan, dahil sa ganitong paraan, hindi bababa sa US, maaari mong magbilang, kung tediously, ngunit gawin mo ito nang isang beses lamang sa iyong database at hindi na muling mag-isip tungkol ito, ang lahat ng 50 dalawang-character codes. Kaya gusto ko enum. ni stick sa na Hayaan, dahil ito uri ng enforces mas kahirapan. At pagkatapos ay i-zip code? Sa tingin ko Andrew ay nagkaroon ng isang pag-iisip sa na Madla: [hindi marinig] David MALAN: Oo, lima o siyam. Sabihin lamang panatilihin ito simple. Lamang gawin limang para sa ngayon. Pero siguro ko kaya lang gawin ang isang integer, right? kaya kong, ngunit alam mo kung ano, na aking ginawa ang pagkakamaling ito sa isang beses, sa ilang mga kahulugan. Taon na ang nakaraan, ako ay lilipat mula sa Microsoft Outlook sa Gmail, at Outlook ay isang paraan ng pag-export ang lahat ng iyong mga contact bilang isang Excel file, isang CSV file, comma separated values ​​file. At ako ginawa ang pagkakamali, ako mag-isip, ng pag-double click ito, isang beses ko nai-download sa pag-export, upang tiyakin na ito ay tumingin tulad ng inaasahan ko. ako dapat may hit I-save o hayaan auto-i-save ang sipa sa o isang bagay. Dahil kapag ako ipinapasok naman ito sa Gmail, ang lahat ng ito ay nagtrabaho. Ngunit para sa taon, sa araw na ito, at Ako did ito ng limang, 10 taon na ang nakakaraan, Pa rin ako paghahanap ng mga kaibigan na may address na ganito ang hitsura. Bakit? Madla: [hindi marinig] David MALAN: Ito ay kinuha ang 0, well, sa halip, ito kinuha ang buong zip code bilang isang numero, at samakatuwid ito ay isang nangungunang 0 na nangangahulugan ito ay walang kahulugan. At kaya 2138 ay anyong ang aking zip code. At ito ay, lantaran, isang nakakainis Excel tampok na kung saan sa tingin ko sa pamamagitan ng default, kahit na ito ay sinadya upang lamang maging teksto, Microsoft Excel nagpasiya, hayaan mo akong maging helpful, at oh, nakikita ko lamang ng mga numero. ni tinatrato ang mga ito bilang mga numero Hayaan. At ito truncates ang nangungunang mga zero. Ako ay nanunumpa sa Diyos, ang bawat pares buwan Tingin ko ng isang address, at sa labas ng isang uri ng OCD, pumunta ako pabalik in at magdagdag ng mga 0, kahit na ako ay hindi kailanman magpadala ng mga tao ng mga titik o kahit ano. Ngunit pa rin ako sa paghahanap labi ng ito. Kaya ito ay upang sabihin, ito ay isang magandang ideya? OK, hindi, dahil kahit sino sa Massachusetts, sa lugar na ito, ay pagpunta sa magkaroon ng isang o pinangungunahan ang mga ito. Kaya sabihin pumunta sa tulad ng char, marahil, lima. At dito, Napagtanto namin maaaring gamitin ang isang enum at kami maaaring magbilang 10,000 posibleng zip codes, ngunit na nararamdaman tulad ng ito ay maaring tumatawid ng isang linya ng, tulad ng, mga benepisyo. Kung mayroon kang upang input na magkano ang data sa iyong database upang maprotektahan laban sa isang bagay. Kaya char natanto maaari mong i-type sa H-E-L-L-O bilang iyong zip code, kung saan ay hindi, nang walang alinlangan, numeric. Kaya walang paraan, sa isang tipikal na database, upang tukuyin lamang numeric at lamang limang mga character ang haba, kaya kami ay pagpunta sa magkaroon ng gawin na sa code. Kami ay pagpunta sa gawin na sa PHP o Java o kahit anong wika kami gamit sa server upang ipatupad na uri ng pagpilit. Whoo! O sige, kaya ang anumang mga katanungan lamang pa? ni gumawa ng isa pang desisyon disenyo Hayaan. Ito ay lumiliko out na kayo ring makakuha ng upang pumili, kapag pagdisenyo ng isang SQL database, o tipikal pamanggit database-- kung saan muli, pamanggit lamang nangangahulugan hanay at haligi, na kung paano mo ayusin ang iyong data-- at mapagtanto na kung ano ang ibig sabihin nito ay, Gumagamit ako nakaliligaw in na, ako drawing-- ito ay kung ano ang tinatawag na ang schema para sa isang database table. Ito ay tulad ng mga pagtutukoy para sa table-- ngunit kapag ito ay dumating na oras upang aktwal na tindahan ng data, at kami gawin ito sa pamamagitan lamang ng halimbawa dito. Pupunta ako upang buksan up Excel, dahil Excel ay magbibigay sa akin hanay at haligi. At iyon mismo ang Oracle at MySQL at iba pang mga kasangkapan ay magbibigay sa akin. Kaya lang ako sa pagpunta sa paggamit ito alang-alang sa discussion. Hayaan akong sige at buksan up ng isang kinatawan dokumento dito, mag-zoom in ng kaunti. Kaya halimbawa, ang aming mga header ay ngayon unang pangalan, apelyido, kasarian, ID, email, numero ng kalye, kalye, Whoops. Street, lungsod, estado, lamang tungkol umaangkop sa screen. Kaya kung ano ang ibig sabihin nito ay na kapag ang isang user unang nagrerehistro para sa aking website, ito ay pagpunta sa maging isang bagay tulad David, Malan, m, sabihin natin 1, malan@harvard.edu, numero ng kalye ay maging tulad ng 1 Brattle Square, Cambridge, MA, 02138, at pagkatapos ay sa gayon pasulong. Kaya kapag sinabi ko na ang isang pamanggit database o SQL database ay hanay at haligi, Ibig sabihin ko ito. Iyon aktwal na data ay naka-imbak sa hanay at haligi. Ito ay lamang ng isang pagkakataon, na kami ay pakikipag-usap, at lamang ako ay pagguhit ito out sa mga hilera at mga hanay. Ito ay lamang ang panukala, ang overarching definition. Kaya ng mga patlang na ito dito, o equivalently, doon, na kung saan ay ang mga patlang na sa tingin mo ako malamang na maghanap sa kung ako ay isang user o kung ako ang database administrator? Like, kung ano ang patlang Ako aktwal na pagpunta upang maghanap sa? Madla: [hindi marinig] David MALAN: Ang pangalan, yeah kaya Gusto ko ang katotohanan na- yeah, email ay maaaring maging medyo pangkaraniwan. Paumanhin, ang sinabi mo pangalan. Kaya maybe-- at muli, hindi namin uri ng pakikipag-usap sa abstract. hindi ko alam kung bakit Gusto mo na naghahanap para sa isang pangalan, ngunit na nararamdaman makatwirang kung ka na naghahanap para sa isang user. Siguro estado, sigurado, ID. At ito ay isang madulas slope, dahil kaya kong balakin isang sitwasyon kung saan marahil ang aking boss ay nagtanong sa akin, kung gaano karaming mga tao ang mayroon kami sa aming site? Gaano karaming mga babae ang mayroon kami sa aming site? At kaya sa puntong iyon, baka gusto upang maghanap sa patlang kasarian, masyadong, at wala pang tao. Kaya mayroong isang kalakalan-off dito. Muli, walang tamang sagot, ngunit may ay isang tampok sa karamihan ng SQL database na kilala bilang pag-index, na sukat mo, ang taga-disenyo, ang database administrator, makakuha magpasiya nang maaga kung saan ng mga patlang sa database ay dapat i-optimize para sa mga paghahanap sa. Maaari mong napaka naively sabihin, i-optimize ito, i-optimize na, i-optimize ito, optimize na at ito, at ang database ay gawin ang ilang mga kahima-himala bagay sa ilalim ng hood, at gawin ang isang bagay sa paraan na ang susunod na panahon na kayo maghanap sa alinman sa mga patlang na ito, ito, sa katunayan, ay mas mabilis. Ito ay posible. Hindi ito i-cancel ang sarili out. Ngunit dapat na mayroong isang presyo na babayaran. Kung ikaw naively, o over-enthusiastically sabihin nating, index ang lahat ng mga patlang na ito, kaya na magsalita, gawin mo silang lahat mahusay nahahanap, kung ano ang presyo ay ikaw ay malamang na nagbabayad? Madla: [hindi marinig] David MALAN: Pagganap. Anong ibig mong sabihin? Well pagganap, doon man lamang sa konteksto ako tinatalakay, ay mas mahusay na ngayon. Iyan ang kahulugan ng pag-index. Ito ay gumawa ng mga paghahanap nang mas mabilis. Kaya oras na bumababa, kaya na magsalita. Madla: [hindi marinig] David MALAN: Space. Kaya muli, ang mga ito ay isang karaniwang kalakalan. maaari kong pabilisin ang iyong paghahanap, ngunit ito ay pagpunta sa gastos sa iyo ng karagdagang bytes ng espasyo. Bakit? Well, sa pamamagitan ng default, kung kami ay may wala sa mga mga pulang bituin, wala sa mga ito ini-index, bilang ako na sinasabi, paano mo maghanap para sa isang pangalan sa database na ito? Kaya sabihin gumuhit ng aming pansin sa halimbawa na ito. Kung kami ay may David at Scully at Kareem at Arwa at iba pa sa mga hilera, halimbawa. Kaya sabihin gawin eksakto na. Scully ay in dito, at pagkatapos ay mayroon kaming Kareem, at Arwa, at ang iba, kung hindi mo gusto magkaroon ng isang index na tinukoy, kaya na magsalita, ang pinakamahusay na maaari mong gawin ay linear paghahanap. Kung naghahanap ka para Arwa, hindi kami pagpunta sa magagawang upang tumalon karapatan sa kanya mabilis. Kami ay pagpunta upang simulan ang itaas at pumunta sa lahat ng mga paraan sa ibaba, hindi hindi katulad aming orihinal na Mike Smith halimbawa. Kung, gayunpaman, sinasabi ko, hey, database, index sa unang field ng pangalan, pagkatapos ay ito ay pagpunta sa gawin ang isang bagay may interes at suporta ng isang bagay tulad binary paghahanap. Ito ay marahil hindi binary search per se. Databases ay may posibilidad na gamitin ang isa pang data istraktura na tinatawag na b-puno, hindi dapat malito sa binary puno, na gumawa lamang ito nang mas mabilis sa paghahanap isang bagay logarithmic sa kalikasan. Ngunit ang presyo na babayaran mo upang bumuo ng up na tampok na ito, na ang data na istraktura sa memorya, ay mas bytes. Kaya maaari itong tumagal ng ilang megabytes, ilang gigabytes, na nakakaalam? Ito ay depende sa data. Kaya sa isang punto, kailangan mong magpasya, ito ay marahil hindi isang pangkaraniwang kaso. Kaya kung ano ay ang aktwal na karaniwang kaso, kung ikaw talaga ay may upang pumili, ano ang maaaring maging ang iyong mga paboritong mga patlang? Email. At gusto ko email dahil ang email, sa teorya, ay dapat na kakaiba. At kaya kadalasan, kapag alam mo in advance na ang isa sa iyong mga patlang ay o ay natatangi, na ay may gawi na maging isang magandang field upang maghanap sa, dahil na paraan, kapag naghanap ka para sa isang bagay, ikaw ay pagpunta upang makakuha ng bumalik sa isa o zero kasagutan at pagkatapos ay tapos ka na. Hindi mo na kailangang panatilihin ang naghahanap para sa isa sa iba. At kaya sa kasong ito dito, email, kaya hangga't hindi ka maaaring magrehistro ng dalawang beses na may parehong email, ay isang magandang isa. ID sa pamamagitan ng kahulugan, sa computer science mundo, kung ikaw ay pakikipag-usap tungkol sa isang ID, na ay mas mahusay na maging kakaiba. Iyon ay uri ng mga kahulugan ng ID o identifier. Ang iba nga sa mga ito ay maaaring maging, sabihin tumawag sa kanila nice to haves, ngunit hindi talaga kinakailangan. At kaya sa isang database, na tinukoy mo ini-index, ngunit maaari kang maging kahit na mas tumpak. Maaari mong sabihin, hey, database, siguraduhin na ang bawat ID sa table na ito ay natatangi. Huwag kahit na ipaalam sa isang programmer sinasadyang ilagay sa isang duplicate email o duplicate ID number. So magkano ang gusto enums protektahan sa amin katulad, mo ay maaaring magkaroon ng mga mas mababa sa antas panlaban. At kaya database disenyo, ilang mga kahulugan, ay uri ng masaya, dahil ginagawa mo ito defensively. Ikaw uri ng ipinapalagay na ang trabaho mo sa kakila-kilabot, kakila-kilabot programmers at nais mong ilagay sa ng maraming mga panlaban tulad ng maaari mong upang protektahan ang iyong data, ngunit sabay-sabay nais mong upang matulungan silang gumanap ng mas mahusay sa pamamagitan ng pagpili kung aling patlang upang i-optimize para sa. Ngunit hindi kinakailangan mo maaaring gawin ito sa isang vacuum tulad namin uri ng ay dito. Mayroon kayong upang malaman kung ano ang mga karaniwang mga kaso pagiging. Kung ang mga developer ay pagpapatupad ng isang address book, maaari mong napakahusay nais na ma upang maghanap sa halos bawat field, sa pamamagitan lamang ng likas na katangian ng application. Kaya siguro ang gusto ninyong gastusin na dagdag na espasyo. Right, anumang mga katanungan? Yeah. Madla: [hindi marinig] David MALAN: No. Madla: [hindi marinig] David MALAN: OK. Madla: [hindi marinig] David MALAN: Oh, kaya kami ang pinag-uusapan sa isang paraan ngayon na ang ganap na wika agnostiko. Kaya pinag-uusapan natin ngayon ang tungkol sa pamanggit database mas pangkalahatang paraan, o SQL database sa mas pangkalahatang. Madla: [hindi marinig] David MALAN: Ang isang mas mahusay na salita upang gamitin ay, ay maaaring magamit sa pamamagitan ng anumang wika. Kaya ang maaari kong isulat JavaScript code, C code, C ++ code, Java code, Ruby code, ang lahat ng na makipag-usap sa isang database at execute query. Sa katunayan, iyon ay hindi isang masamang segue sa isang query halimbawa. At muli, hindi kami ay pagpunta sa pumunta sa Java o C ++ o anumang ng na anymore, ngunit sa SQL, ang wika na kung saan panatilihin ko nagre-refer, nakabalangkas Query Language, ito mismo ay isang programming language, ngunit ito ay sinadya upang gamitin para sa, walang sorpresa, nakabalangkas query query. Sa pamamagitan ng na ibig sabihin ko ito. Ang paraan na pinili mo data mula sa isang MySQL database ay mong literal i-type sa iyong programa isang bagay tulad ng piliin ang star mula sa mga gumagamit. Ako ipagpapalagay na nakatanggap na ang talaang ito, simula ngayon ay tinatawag na mga gumagamit. kaya kong tumawag ito anumang nais namin, ngunit na uri ng saysay. At kaya piliin ay isang napaka karaniwang pandiwa, kung ikaw ay, sa SQL, na literal ay na. Ano sa tingin ninyo star nangangahulugan sa kontekstong ito? Madla: [hindi marinig] David MALAN: Sorry? Madla: [hindi marinig] David MALAN: Hindi kinakailangan, ito ay mas napapabilang kaysa sa na, talaga. Ito ay ang wild card character. Lagyan ng star ang halos palaging nangangahulugan ng kahit ano, kaya ito ay nangangahulugan na, sa kasong ito, piliin ang lahat mula sa database. Kaya kapag sinabi ko ito, ibig sabihin ko bigyan ako bumalik sa bawat column mula sa aking table na tinatawag na mga gumagamit. Kaya bigyan ako ng isang resulta set, tulad ng ito ay tinatawag na. Sa ibang salita, bigyan ako ng isang kopya ng spreadsheet, ay kung ano ang Nakakakuha ako sa. Ngunit kung sinabi ko piliin star mula sa mga gumagamit kung saan ang ID ay katumbas ng 1, kung paano malaki dapat ang aking mga resulta set na pagkatapos? O equivalently, kung gaano karaming mga hilera ay dapat Ako ay ipinasa pabalik mula sa database? Marahil isa lamang, kung mayroon akong katunayan ginagamot ID bilang isang natatanging identifier, at kung David ay may na natatanging ID, ako dapat makabalik isa at isa lamang hilera na naglalaman ng lahat ng impormasyon na si David. Kung sinabi ko na ito kung saan ID ay katumbas ng 99, ang dapat kong makakuha ng likod, sa ganitong konteksto, zero hilera, ng hindi bababa sa sandaling ito. Gayunpaman, kung hindi ko talaga pag-aalaga tungkol sa lahat ng impormasyon na iyon, hindi ko na lang sabihin, kung saan ay si David? Pumili ng zip code mula sa user kung saan ID ay 1. Pipiliin lamang sa akin zip ni David code at hindi ang kabuuan ng hilerang iyon. Bakit maaaring kong gawin ito sa halip ng ang bituin query, ang mga ligaw na card? Madla: [hindi marinig] David MALAN: Oo, maaari ko lamang ito kailangan. Kaya pagganap ay muli ang sagot dito. Bakit humingi ng higit pa impormasyon kaysa sa kailangan mo, dahil kahit na ito ay ang lahat ng karapatan magkasama, mayroon ka pa ring upang kopyahin ang data na iyon, ito ay tila, mula sa database sa inyong programa sa anumang paraan, at ito lamang ulok kung ikaw lamang ang kailangan ng limang ng mga digit, hindi ang kabuuan ng hilera. Kaya paano ko magsingit ng isang user? Ipagpalagay na ang isang user ay may lamang nakarehistro para sa unang pagkakataon. Ang syntax ay karaniwang ganito ang hitsura. Ipasok sa mga gumagamit, at pagkatapos Gusto naming sabihin na mga halaga, at pagkatapos ay gusto naming sabihin mga halaga tulad ng, sabihin nating, Lauren Scully, aming videographer dito mismo. At ang susunod na field ay kasarian. Kaya makikita namin sabihin quote, magpanipi "F", at pagkatapos ay kami ay may isang ID at ako pagpunta sa say-- sabihin magpanggap siya ay hindi tunay na dito, kaya kami ay i-rewind sa kuwento. Kaya 2 ay magiging kanyang ID. At pagkatapos ay ang susunod na field dito ay ang kanyang email. Kaya ito ay pagpunta sa maging tulad ng Lauren Scully at iba pa, at kami lang dot dot dot ito ang layo mula dito sa. Ngayon ito ay makakuha ng isang maliit na nakakapagod, ngunit ang insert query sa huli hitsura na. Kung gusto kong kumuha alisan ng Scully, uh-oh, sabihin deregister kanya, siya tinatanggal ang kanyang account, tanggalin mula sa mga gumagamit na kung saan ang ID ay katumbas ng 2, ay kumuha alisan ng Scully. O maaari kong sabihin update ang mga gumagamit ay naka-set, sabihin nating, kung ano ang maaari naming baguhin? Ipagpalagay siya gumagalaw. Set zip katumbas 021-- nope, na ang kanyang kasalukuyang zip. 90210. Ang tanging iba pang zip code Alam ko sa mundo. Kaya na ay magbabago kanyang zip code-- talaga, na hindi baguhin ang kanyang zip code. Ano ang ginawa ko na lang gawin? Kahit na ang syntax ay marahil bago. Madla: [hindi marinig] David MALAN: Oo, inilipat ko ang lahat sa Beverly Hills, California. Kaya ko dapat talaga sabihin kung saan ID ay katumbas ng 2. At iba pa. Kaya SQL ay ang lahat ng tungkol sa mga uri ng mga tagubilin. Piliin, ipasok, tanggalin, i-update, sa mga predicates sa dulo mga kung saan clauses, kaya na magsalita. At mayroong isang pulutong more na maaari mong gawin, ngunit ito ay talagang lamang kahulihan babagsak na lang, kung arcanely, pagpapahayag kung ano ang nais mo ang database na gawin. At pagkatapos ay ang database ay malaman kung, kapag ipasok mo Lauren Scully sa database, kung saan upang ilagay ang kanyang sa memory upang maaari naming masyadong mabilis makakuha kanyang batay sa kanyang email address o batay sa kanyang ID number o mga katulad. Yeah, Dan. Madla: [hindi marinig] David MALAN: Talagang mahusay na tanong. Makakaapekto ba baguhin ang mga script mula sa Microsoft Access sa Oracle sa MySQL sa PostgreSQL? Ang maikling sagot ay ito ay depende. Sa teorya, diyan ay a tunay makabuluhang karaniwang subset ng SQL na ibinahagi sa lahat ng sa mga pagpapatupad. Gayunpaman, iba't-ibang mga tagagawa may idinagdag na mga tampok sa kanilang database na gawin ang ilang mga bagay hindi na saklaw ng mga tampok na ito, na maaaring, sa katunayan, masira. Kaya ang paraan developer pimpin laban na ito, ay na sa halip na pagsulat raw SQL code tulad ako ng pagsulat dito, sila sa halip gamitin ang isang library, isang karaniwang library na mismo ay isang uri ng mas mataas na antas at abstracts ang layo kung aling mga produkto na iyong ginagamit. At binibigyan ka nito function at mga pamamaraan na tumawag sa gayon ikaw ay hindi kailanman aktwal na magsulat raw SQL. Sa teorya, at pagkatapos, maaari mong baguhin mga produkto mula sa Oracle sa Microsoft o vice versa o anumang bagay sino pa ang paririto, at ikaw ay literal baguhin wala tungkol sa iyong code. Ang katotohanan, bagaman, ay, ikaw minsan sumuko tampok bilang isang resulta. Maaari mong pinili ng isang produkto dahil ito ay nakuha ang mga halaga-idinagdag mga tampok, at ikaw lamang ngayon ay hindi paggamit ng mga ito sinasadya. At anecdotally, karamihan sa mga kompanya ay may posibilidad hindi kailanman upang ilipat ang layo mula sa kanilang database. Kaya habang ito ay isang nice to may tampok na ito, ang katotohanan ay, kung ikaw ay overhauling iyong database, ikaw ay marahil paggawa bunches ng iba pang mga pagbabago anyway, na hindi mo kinakailangang kailangang mauna na. Kaya ito ay arguably over-engineering ang problema, ngunit ito ay talagang depende sa konteksto. Ngunit sa teorya, SQL ay ibinabahagi sa kabila ng mga iba't ibang mga produkto. Talagang mahusay na mga katanungan. Yeah. Madla: [hindi marinig] David MALAN: Oo, kaya maaari mong isipin ng isang database ay lamang ng isang server, sa dulo ng araw, at sa loob ng server na ay isang buong grupo ng mga mga talahanayan, hanay at haligi. At kapag nagpadala ka ng isang query tulad nito mula sa iyong programa, ang iyong website, nakasulat sa Java, Ruby, sawa, ano pa man, ang server ay tumatanggap ng utos na ito at pagbibigay-kahulugan ito sa literal sa parehong paraan namin tinalakay nang mas maaga sa interpreted wika, at pagkatapos ay gumagawa ng ilang pagkilos sa zero o higit pang mga hilera sa zero o higit pang mga talahanayan. Madla: [hindi marinig] David MALAN: Eksaktong, eksakto. Kaya ang pseudocode para sa isang bagay tulad na maaaring maging ito. Sa iyong PHP file o ang iyong Python file o ang iyong Java file, nais mong magkaroon ng pseudocode code, o Scratch-tulad ng mga bloke bilang, kung pagbisita ng gumagamit acme.com/register~~V para sa unang pagkakataon, pagkatapos ay ipasok sa mga gumagamit at sa gayon pasulong. At gusto naming i-translate ito sa mas kongkreto code sa dulo. Ngunit talagang, mayroon kaming lahat ang mga bloke ng gusali dito, kahit na kami ay laktaw ilang sa mga hakbang na pagpapatupad. Kaya hayaan mo akong maghanap ng pula sa kung ano ang aming kamangha-mangha ang ginawa ng ilang sandali lamang ang nakalipas. Lumikha ka ng isang pretty kumpletong talahanayan para sa mga gumagamit. Tinatanggap na, maaari naming ipatupad ito sa loob ng ilang iba't ibang paraan, pero sa totoo ikaw ay humantong sa amin down ang path-- at sinasabi ko sa iyo, ngunit ito ay marahil ang aking mga fault-- ng isang medyo hindi sanay database pagpapatupad. Hindi ito normalize. At sa pamamagitan ng normalized ibig sabihin ko diyan ay pagpunta sa maging, sa paglipas ng panahon, ang isang makabuluhang kalabisan, at samakatuwid kawalan ng kaalaman, iyon ay pag-aaksaya ng espasyo. Batay sa lamang kung ano ang nakikita mo dito, maaari makita sa kaisipan mo kung saan ito-aaksaya ng espasyo ay pagpunta sa darating mula sa, sa paglipas ng panahon, bilang mas at mas maraming mga user magparehistro para sa iyong website? Anong data ay maaaring maging kalabisan? Madla: [hindi marinig] David MALAN: Bakit mo ibig sabihin nito? Madla: [hindi marinig] David MALAN: Oo. At sabihin ipinapalagay para sa mga layunin ng araw na ito na iyon ay totoo. Lumiliko out, at ang aming natutunan ito ang mahirap na paraan, iyon ay hindi totoo. Sa paano pa man maraming mga lungsod ay may, sa anumang paraan, ang parehong zip code, na break ito kahanga-hangang intuwisyon. Ngunit sabihin ipagpalagay na ay totoo, dahil sa ito ay halos palaging totoo. Kaya ipagpalagay na ang isang zip code ay palaging na kaugnay sa parehong lungsod at estado, kung saan ay uri ng makatwirang palagay, ngunit hindi tama, ito ay lumiliko out. Ngunit ang isang makatwirang palagay para sa mga layunin ngayon. Pagkatapos ipagpalagay na ako ay nakatira sa Cambridge, MA, ayon sa talahanayan na ito user, at ipagpalagay na Lauren Scully nakatira sa Cambridge, MA, at ipagpalagay na Kareem nakatira sa Cambridge, MA, at Arwa nakatira sa Cambridge, MA, ang lahat ng sa amin sa 02138. Bakit kami pagtanda Cambridge, MA, 02138 para sa lahat ng apat na sa atin? Ano ang dapat sumapat sa tandaan? Madla: [hindi marinig] David MALAN: lamang ang zip code. Lamang na 02138 ay umiiral, dahil alam mo kung ano ang maaari naming gawin? Maaari naming makakuha ng isang maliit magarbong dito at sa paglipas dito, tukuyin ibang table kung saan ito ay pagpunta sa maging ang pangalan, ito ay pagpunta sa maging ang uri, ito ay pagpunta sa maging ang haba, at mula ngayon, ako pagpunta sa tumawag ito ang aking mga lungsod table. Ito ay tinatawag na, ng Siyempre, aking dulang gumagamit. At kaya kung ano ang dapat kong ilagay sa paglipas dito para sa aking mga lungsod table, sa tingin ninyo? Madla: [hindi marinig] David MALAN: Oo. Kaya zip at estado at lungsod. At kaya ang type dito, kami sabihin ito ay pagpunta sa maging isang char 5 muli, napapailalim sa mga debate ng mas maaga. Ito ay magiging isang enum, marahil tulad ng bago, at lungsod ay magiging isang varchar 50. At kaya ngayon kung ano ang makukuha ko upang burahin mula sa dulang ito upang maalis ang kawalan ng kaalaman na? Madla: [hindi marinig] David MALAN: Nice. Estado at lungsod umalis, kaya na hindi ko na ngayon eliminated ang mga potensyal na kawalan ng kaalaman para redundantly pagtanda, Cambridge, MA, Cambridge, MA, Cambridge, MA, Cambridge, MA, na kung saan, sana ay hindi kailanman pagpunta upang baguhin. At kahit na kung ito ay, ito ay minorly nakakainis, ngayon na kailangan kong baguhin ito sa maramihang mga hilera, samantalang dito, ako ay maaaring lamang baguhin ito sa isang lugar. Ngayon kung ano ang mga trade-off, marahil? Ito ay sobrang maginhawa. Ay ang lahat ng aking data ng mabuti sama-sama. Ngunit kung ano ang malinaw na ang kaso ngayon? Madla: [hindi marinig] David MALAN: Eksakto, at ako natutuwa na ginamit mo ang salitang sumali, dahil na talagang ang keyword, sa mundo ng pamanggit database sa SQL, ito ay isang aktwal na salita na iyong maaaring i-type o hindi bababa sa ihatid. At sa katunayan, kung ano ang ngayon ay mayroon kaming upang gawin upang piliin ang buong impormasyon ni David ay isang bagay tulad ng piliin ang bituin mula gumagamit, sumali lungsod, on-- at ngayon Pupunta ako upang ilipat lamang sa isang pangalawang linya kaya na ito fits-- users.zip katumbas cities.zip, kung saan users.ID katumbas ng 1. Kaya kung ano kaya ang nangyari? Walang pangit naghahanap, ngunit maaari mong uri ng basahin ito sa kaliwa papunta sa kanan, itaas hanggang sa ibaba. Pumili ng star mula sa mga gumagamit ay ang parehong tulad ng dati, ngunit ito ay hindi mula sa mga gumagamit, per se. Ito ay mula sa mga gumagamit sumali lunsod. Ano ako sumali sa mga may dalawang dulang sa? Well, tila, ang gumagamit ng mga talahanayan zip field, at panahon na ito ay lamang ng mga espesyal na syntax upang ipahayag na ideya, at ito ay ang mga lungsod tables zip field. Gusto kong ang mga dalawang na maging pantay-pantay, ngunit gusto kong sa huli piliin lamang ang mga hilera kung saan ID sa table ng mga gumagamit ay katumbas ng 1, na kung saan nangyari sa maging akin. At lamang maging malinaw, ang isang programmer, kadalasan kapag hardcode isang bagay tulad ng bilang 1, dahil kung hindi, ang website lamang sinusuportahan David o ang pinakaunang user, ikaw Gusto sa halip na gawin isang bagay tulad ng ID, kung saan ito ay kumakatawan sa isang variable, isang bagay na maaaring baguhin sa paglipas ng panahon, katulad sa espiritu sa kung ano ang sinabi ko ng mas maaga sa mga uri ng mga placeholder. Ngunit para sa ngayon kami na lang hardcode ito bilang 1. At kaya kung ano ang ibig sabihin nito? Well, isang magandang paraan upang maisalarawan ito ay na kung ito kamay ay ang mga gumagamit ng talahanayan, at ito kamay niya ang zips mesa, hindi namin uri ng finding-- at ang mga tip ng aking mga daliri ay zip sa paglipas dito, at ang mga tip ng aking mga daliri narito ang zip, ikaw ay uri ng interlocking ito sa gayon ay makakuha ka pabalik ang mga nagresultang orihinal na mesa, sa pamamagitan ng tunay na pagsali ang dalawang tapyas sa mga karaniwang field. At ito ay hindi kailangang maging zip. Ito ay maaaring maging pinaka-anumang bagay, ngunit zip ay nice, dahil ang isa, ito ay maikli, dalawa, ito ay palaging ang parehong haba, kaya may isang tunay na kahusayan sa kung ano ang Olivier ipinanukalang dito sa factoring out ang zip, at [Hindi marinig] pagpapanukala na namin mapupuksa ng lungsod at estado. Kaya ito ay ang proseso kilala bilang normalisasyon. Ang anumang mga katanungan sa mga iyon? Well hayaan mo akong ituro ito ay ang uri ng mga bagay-bagay, kahit na ito ay medyo mababa-level, talakayang ito, na nais mong mag-isip ka na uri ng pagkuha nawala sa damo, ito ay isang paghahayag ng sapat na pagkakataon para sa mga developer upang maging masama. At sa katunayan, noon pa mang kami, sa kurso ko na nagturo, kapag mayroon kaming, halimbawa, walang karanasan undergraduate programmers bumuo ng mga website, sa unang tingin, ang mga website ay maaaring tumingin kakila-kilabot. At mayroon silang lahat ng mga functionality namin hiniling, ang mga developer ay isang magandang trabaho. Subalit sila ay hindi kinakailangang malaman sapat na tungkol sa mga database ng disenyo o hindi nila isip nang husto sapat na ang tungkol sa mga uri ng data at ang mga uri ng mga gumagamit ang website ay pagpunta sa magkaroon ng, at nakita namin, at pagkatapos ay, anim na buwan mamaya, pagkatapos nilang nagtapos o inilipat sa, na mapapahamak ang mga ito, ang aming website ay talagang, na tunay mabagal. At hindi ako kahit na pakikipag-usap tungkol sa pagkakaroon ng milyon-milyong o libu-libong ng mga gumagamit. Ibig kong sabihin ng ilang daang mga gumagamit sa campus, lahat ng kanino nais na, halimbawa, shop para sa mga kurso sa Kasabay nito, ang mga ito ay gamit na kurso catalog application ko nabanggit at ang bagay ay nakakakuha ng talagang mabagal dahil walang index. Walang mga pulang bituin, kaya na makipag-usap, o hindi namin ay may kinakailangang factored out karaniwang data sa makakuha ng ilang mga pagtitipid ng space. At kaya kapag vetting isang developer o database tao o mga katulad, ang mga uri ng mga katanungan-isip sa pamamagitan ay kahit na, kapag sinusuri code ng isang tao, sa makatuwid baga'y hindi kinakailangang tumingin sa pamamagitan ng lahat ng kanilang mga code, ngunit sabihin, tingnan natin sa pamamagitan ng mga talahanayan ng database. Ano ikaw ay pag-iimbak? At pagkatapos ay sabihin, well, maghintay ng isang minuto, kung bakit ikaw ay gumagamit ng isang integer? Paano kung kami ay may 4 billion at 1 sa mga hilera? At lalakip ang mga uri ng tanong na ito ay isang pagkakataon sa uri ng itulak sa likod at makakuha ng isang pakiramdam ng pagkakaroon ng, kung saan kung ikaw ay hindi komportable paggawa ito, pagkakaroon ng isang tao sa mga teknikal na itanong ang mga ito, kung o hindi ang taong tunay na nakakaalam ng kanilang mga bagay-bagay. At ito ay ang uri ng mga bagay-bagay, masyadong, na ang mga tao sa internet na ay self-itinuro, siguro matuto mas madalas, dahil ikaw ay hindi kinakailangang dumating sa kabuuan ito ng mas maraming, dahil maaari kang makakuha ang database ng up at tumatakbo, ngunit maliban kung nabasa mo na up sa mga tutorial o naging sinabi tungkol sa database normalisasyon at pag-index at pagganap, ito ay ang mga uri ng mga bagay na pagpunta sa saktan ka. At maaari mong isipin, o isang masamang engineer maaaring sabihin, oh, well, kami ay mas mahusay na pay para sa isang mas malaking database o isang mas mabilis na database o lamang magtapon ng pera sa ito, patayo scale, hindi naman ito. Kung pupunta ka in-- at maaari kang pumunta sa pagkatapos ng fact-- at magdagdag ng index, at maaari itong tumagal ng ilang oras para sa mga database upang bumuo ng up na ang mga bagong data istraktura na ko alluded sa mas maaga, maaari mo pa ring ayusin ito pagkatapos ng katotohanan, na ito ay kung saan mo simulan upang makilala magandang designers mula sa masamang designers, hindi lamang aesthetically, ngunit ang pagganap-pera pati na rin. May tanong? Hindi? Kaya para sa NoSQL, na siyang iba pang uri ng database na kung saan ako alluded mas maaga, hindi mo na kailangang hanay at haligi. Sa halip, nais mong magkaroon ng isang bagay na mukhang ng kaunti pa tulad nito. Ako pagpunta sa gamitin ang mga karaniwang syntax. Curly braces mangyari sa gamitin dito lubos ng maraming. Maaari mong magkaroon ng isang bagay tulad ng unang pangalan ko ay David, maaari kang magkaroon ng huling pangalan ko ay Malan, quotes, maaari kang magkaroon ng ID is-- patawarin ninyo ako, whoops-- ID ay 1, email ay malan@harvard.edu, at Ayaw ko abala ng pag-type ang natitirang bahagi, at pagkatapos ay ilang mga iba pang mga bagay. Sa ibang salita, ito ay isang tekstuwal representasyon ng kung ano ang kami ay karaniwang tawag isang bagay sa isang computer program. At ang isang bagay ay karaniwang lamang isang koleksyon ng mga pangunahing mga pares ng halaga. Kaya muli, ito paulit-ulit na tema. Nakita namin susi halaga pares sa HTML, nakita natin susi pares halaga ngayon sa konteksto ng mga database, at hindi na namin Nakita susi pares halaga sa konteksto ng, sa tingin ko, ang isang wika mas maaga sa araw. Mapigil ang paparating na. At sa katunayan, iyan ay talagang kung ano ang data na bumabagsak sa, data at metadata, o halaga at mga susi, buong galang. Kaya ang isang non-pamanggit database, isang bagay batay sa mga bagay, kung saan mo lamang kimpal lahat ng bagay magkasama at ilagay ito sa memorya, ay pangkaraniwang magiging inilalarawan bilang, o naisip ng, bilang na ito. At kukunin ko na umalis na ngayon bilang isang uri ng alternatibong paraan. At ang isa ay hindi kinakailangang mas mahusay kaysa sa isa. Sa katunayan, very much sa popularidad mga araw na ito ay mga sistema ng database tulad MongoDB at Redis at ng ilang mga iba pang tulad ng mga kasangkapan, malayang magagamit, ngunit ang mga ito increasingly en popularidad. Bahagyang dahil nag-aalok sila ng karagdagang tampok sa paglipas ng mga hugis ng mga talaan approach na ito, kundi pati na rin dahil ang mga ito isang maliit na mas madaling gamitin, dahil hindi mo na kailangang mag-isip bilang mahirap tungkol sa isang pulutong ng mga desisyon disenyo. Kaya pluses at minuses. Kaya Napagtanto may mga pagpipilian lampas sa kung ano lang namin na ginugol ng oras sa. Kaya sabihin gawin ito. ni-transition ng kaunti Hayaan bumalik ngayon sa web programming, kaya na namin uri ng tapusin ngayon na may isang bagay na ang isang maliit na mga kamay-on, pagpuno sa ilang mga gaps mula kahapon. Hayaan akong pumunta sa ito muna. Kaya isipin ang na kahapon kami ay nagkaroon ng ilang mga canonical HTML mga pahina na nagkaroon sa una, lamang HTML, at pagkatapos ay secondarily nagkaroon CSS, cascading style sheet. Ito ay isang bagong tag na kami ay hindi makita kahapon, o tumira sa, tinaguriang script tag. Lumiliko out maaari mong aktwal na-embed ng isang wika na tinatawag na JavaScript sa iyong web pahina at gumawa ng iyong web mga pahina gawin ang isang bagay. Kaya kung ano ang ibig sabihin ko sa pamamagitan ng na? Well, hayaan mo akong magpatuloy at lamang humiram ang code na ito para sa isang sandali. Pupunta ako sa pumunta sa Cloud9, hindi na kailangan upang pumunta doon ang inyong mga sarili sa ngayon, at ako pagpunta sa tumawag ito alert.HTML. Pupunta ako sa ilagay sa aking file dito. At lamang upang linawin kung ano ang aking nagawa, sabihin akong pumunta sa address na ito at pumunta upang alertuhan, at nakikita mo ang Hello World. Ngunit ito ay uri ng underwhelming. Gusto kong gawin ang isang bagay isang maliit na naiiba. Kaya ako pagpunta sa aktwal na gawin ito. Pupunta ako sa pumunta sa dito e, at sa pagitan ng aking mga script tag, sabihin alert ( 'hello, world'); kaya notice ito ay isang maliit nanggigitata, ngunit Mayroon akong HTML, loob ng kung saan ay isang wika na tinatawag na JavaScript, at ito ay kung ano ang tinatawag na isang function na tawag o procedure call. Ito ay isang verb, literal, sa kasong ito, at ako ay invoking code functionality na ang isang tao sino pa ang paririto ay nagsulat. Kaya na pag-andar ay isang alerto, kaya sabihin pumunta sa pahinang ito ngayon at i-click reload, at ngayon ikaw makita ang isang maliit na piraso ng interactivity. Ito ay uri ng lumang paaralan at pangit. Ang ganitong uri ng reminds mo ng pop-ups, marahil, ng nakalipas na panahon ngunit ito ay gumawa ng isang bagay ng isang kaunti pa program. Kaya higit sa na, sabihin gawin isang bagay na mas kawili-wiling. Hayaan akong pumunta sa dito at kumuha alisan ng ito. At ako pagpunta sa sige at lumikha ng isang form tulad ng ginawa namin kahapon. Sa totoo lang, alam mo kung ano? Pupunta ako sa pumunta sa google.html, na aming nagsimula sa kahapon, na mukhang ito, sa pamamagitan ng kung saan namin hinanap cat Ngunit mapansin mayroong uri ng isang bug sa kasalukuyang bersyon. Ito ay gumagana para sa pusa, ngunit ipagpalagay na Hindi ko makipagtulungan at i-type ko wala, at ako lang i-click ang isumite. Iyan ay uri ng kakaiba pag-uugali. Kinuha sa akin sa tunay na Google, ay hindi nagbigay sa akin ng isang error na mensahe. Gusto kong sabihin sa user kailangan mo upang bigyan kami ng isang halaga. Kaya kung paano maaaring gawin namin ito? Well hayaan mo akong bumalik sa Cloud9 at hayaan mo akong pumunta sa tuktok ng aking pahina at magdagdag ng isang script tag na tulad nito, kung saan Pupunta ako mag-type ng ilang JavaScript code. At ako pagpunta sa gawin ang mga sumusunod. Kung (document.getelementByID-- at pagpapabalik na usapan natin ang tungkol sa na mas maaga, na function. Ano ID nais ko upang makakuha ng? Gusto kong makakuha ng q, at ako pagpunta sa say katumbas wala, tulad this-- aktwal na hayaan mo akong gamitin double quotes lamang para sa consistency-- katumbas wala, pagkatapos alert ( "Mangyari lamang na mag-type ng query") dito. Kaya Mayroon akong kung ano ang ay lilitaw upang maging isang bagay tulad ng isang kondisyon. Nakita namin ang pangkalahatang ideya sa scratch. Ito ay tulad ng isa sa mga puzzle piraso na na mukhang ito. At kung ano ako sinasabi? Well, down na dito, mapansin ako pagpunta sa gawin ang mga sumusunod. Pupunta ako upang bigyan ang form na ito larangan hindi lamang isang pangalan ng q, na kung saan ay kung ano ang makakakuha ng lumipas sa Google, ngunit ako pagpunta sa bigyan ito ng isang lokal na identifier, tinatawag din na q. Ngunit maaari kong itawag sa kahit ano ako gusto, tingin lang ako pagpunta sa panatilihin ito simple at ring tumawag ito q, para lamang sa pagiging simple. At ngayon ako pagpunta sa gawin isang bagay ng kaunti pa. Sa field ng form dito, pupuntahan ko magdagdag ng kung ano ay tinatawag na isang kaganapan handler. On isumite, gusto kong tumawag isang function na tinatawag patunayan. Na ito ay hindi pa umiiral, ito salita, o ito verb patunayan, dahil kung ano ako pagpunta sa gawin up dito ngayon ay magdagdag ng ilang mga code. Pupunta ako sa sabihin function na patunayan. Pupunta ako upang i-indent na ito at magdagdag ng isa pang kulot suhay dito at isa pa dito. Isaalang-alang kung ano ito ngayon ay paggawa. Mayroon akong now-- isipin na ito bilang nilikha ang aking sariling mga piraso puzzle na dati umiiral, at ko na tinatawag na ito puzzle pagdugtong ang piraso patunayan puzzle. Ang layunin nito sa buhay ay mag-execute ang apat na linya ng code sa loob ng mga ito. Kung document.getElementByID kaya conceptually, na ay pagpunta sa pumunta sa na elemento, ang HTML element na natatanging ideya ay lamang q, at pagkatapos ay kahit na ang syntax hitsura ng isang maliit na kakaiba, na katumbas ay katumbas nangangahulugan lamang katumbas. Kaya nangangahulugan na kung ang elemento na may natatanging identifier ng q, kapag nakuha, ay walang halaga, ito lamang ay katumbas ng quote magpanipi, wala sa doon, pagkatapos ay kung ano ang gusto kong gawin? Gusto kong sumigaw sa user. At hindi namin ay pumunta mahusay na detalye dito. Pupunta ako sa bumalik false. Iyon ay isang error. Iba Pa, ako pagpunta upang bumalik totoo. Kaya ang alinman sa ito ay nagtrabaho o ito ay hindi. False o totoo. At ngayon kung hindi ko gumawa ng anumang mga pagkakamali, hayaan mo akong i-save ito at i-reload ito. At ipaalam sa akin lamang double check na Hindi ko, sa katunayan, gumawa ng anumang mga typos, kaya hindi ko mapahiya sa aking sarili. Tingnan natin kung ito gumagana. Kaya ngayon ako pagpunta sa i-type cats. Ito pa rin gumagana, o kalahati mga gawa, hindi bababa sa. Ngayon hayaan mo akong i-reload ito, at ngayon hayaan akong subukan pagsusumite walang pag-type anything-- damn it, sinira ito. Isang sandali. Hayaan akong buksan ang console, [Hindi marinig] mag-log, i-reload ang pahina. Hayaan akong subukan ito muli. Oh, damn it. Nakalimutan ko. Ginawa ko ang isang typo. Natatandaan ko kung ano ito. .value. sinadya kong sabihin na ang halaga ng elemento na ang ID ay q ay katumbas na, pagkatapos ay sumigaw sa user. Kaya ngayon hayaan mo akong hawakan ang aking hininga muli. Ayan na naman. Mayroon kaming pumunta. Paki-type ang isang query. Kaya ito ay hindi pagpapaalam sa akin sa pamamagitan ng. ang maaari kong maging uri ng mapaglaro sa mga ito, at sa halip ng paglagay ng tsek para sa walang halaga, maaari kong sabihin ng isang bagay tulad ng, wala nang mga naghahanap para sa pusa, at ngayon maaari naming lamang sa higit pang playfully ipaalam ang paghahanap ng gumagamit para sa mga aso kung siya Nais ni, o kung pumunta ako dito at maghanap para sa cats, ngayon ay hindi ko makakaya. Kaya kung ano ang takeaway dito? Kaya isa, kami ipinakilala sa ating mundo ng HTML at CSS, programming functionality. Maaari ko talagang ngayon gumawa ng mga desisyon sa code. Noong nakaraan, ang lahat ng maaari kong gawin ay markahan up tekstuwal nilalaman o graphical na nilalaman at sabihin dito kung ano ang hahanapin at saan na ipapakita. Ngayon ay maaari ko talagang magtanong tanong ng web page at gumawa ng mga pagpapasya batay sa mga ito, at i-prompt ang user kung kailangan ko upang sumigaw sa kanya. Kaya sabihin subukan ang isang bagay sa aming sariling sa ito. Sige, hayaan mo akong buksan ang susunod na slide dito, at lamang ituro ang isang bagay. Katulad ng CSS, maaari naming kadahilanan out aming JavaScript code sa isang hiwalay na file, maaari mong gawin ang parehong bagay sa JavaScript bilang sa CSS. At gamitin mo na ang paggamit ng isang pinagmulan attribute ng script tag. Ngunit hindi pa namin ay makapagpalubha bagay para sa ngayon. Sa halip, kung maaari mong pumunta sa hindi pahinang ito, but-- hayaan mo akong ilipat ito sa paligid sa order-- pumunta sa, kung maaari mong, ang pahinang ito dito. Ito URL dito. Ito ay sa slide ngayong araw. Maaaring mayroon kang upang i-reload dahil Nagdagdag ako ng isang pares ng mga bagay. Ngunit pumunta doon kung saan ang ilang mga puzzle hintayin. At ito ay magbibigay sa amin ng isang pagkakataon, sa isang bahagyang mas masaya konteksto, sa magwilig sa ilang JavaScript. At kapag nakakuha ka doon, kukunin ko na ipaliwanag kung ano ang naghihintay. Kumuha green. Itakda asul. Sets green, nagtatakda pula. Oops. Sorry. Ito ay ang lawak ng aming dokumentasyon para sa hamong ito. At ito ay pagpunta sa trabaho tulad ng sumusunod. Kaya kung ano ang mayroon ka sa ito pahina ay isang buo paglangkay-langkayin ng mga puzzle larawan sa pamamagitan ng isang buddy sa Stanford University. Kaya kung ano ang iyong nakikita dito ay halos uri ng isa sa mga magic puzzle mata, ngunit kung ikaw lamang tumitig sa mga ito, walang pupuntahan pop out sa iyo. Sa halip, ang isang bagay ay nakatago sa imahe na ito. At ito ay nakatago sa ang mga sumusunod na paraan. Images, dahil maaaring alam mo na, ay maaaring maging binubuo ng mga lamang tatlong kulay. Ang ilang mga pula, ilang mga asul na, at ang ilan berde. At maaari naming gawin ang lahat ng mga kulay sa bahaghari sa pamamagitan ng paghahalo ng mga tatlong kulay sa anumang paraan. Kaya ito asta halos berde at asul, ngunit bilang Nick sabi ni dito, ito iron puzzle imahe ay isang palaisipan. Ito ay naglalaman ng isang imahe ng isang bagay sikat, gayunpaman, ang imahe ay pangit. Ang sikat na object ay nasa red halaga. Gayunman, ang pulang mga halaga kung ang lahat ay hinati sa 10. Kaya ang mga ito masyadong maliit na sa pamamagitan ng isang factor ng 10. Kaya sa ibang salita, Nick kinuha ng isang orihinal na imahe, at siya desaturated lahat ng pulang mula sa mga ito, pagbaba ng halaga ng red tinta, kung ikaw ay, sa loob nito. Ang bughaw at luntiang mga halaga ay ang lahat ng lamang walang kahulugan, random na mga halaga, aka ingay dinisenyo upang palabuin ang tunay na imahe. Kaya kung ano Nick did ay siya toned down ang pula at pagkatapos ay siya lamang threw random halaga ng bughaw at luntiang sa imahe sa uri ng nakatago kung ano ang talagang pa rin doon. Kailangan mong i-undo ang mga distortions upang ipakita ang mga imahe. Una, itakda ang lahat ng bughaw at luntiang mga halaga sa zero upang makuha ang mga ito sa labas ng paraan, at tignan ang resulta. pagkatapos multiply bawat red halaga sa pamamagitan ng 10, scaling likod hanggang sa humigit-kumulang sa kanyang huling halaga. Ano ang sikat na object? Kaya lahat sa inyo ay may ito rectangle sa iyong browser ngayon. At mapansin na may ilang starter code, kaya na magsalita. Ito ang JavaScript code na Nick ay may nakasulat na para sa iyo. At mapansin na mayroong isang linya sa gitna na nagsisimula sa isang slash slash, na ang dahilan kung ano ang pangkalahatan ay tinatawag na isang puna. Ito ay nangangahulugan na ito ay isang parirala sa programista na ay walang functional kahulugan. Ito ay lamang ng isang visual na cue sa tao. Sa gayon maaari mong sige, at tanggalin lamang na line, at maging sobrang maingat sa hindi tanggalin o baguhin ang anumang bagay sino pa ang paririto. At ipaalam sa akin lamang ituturo sa iyo kung ano ang ginagawa ang code na ito at kukunin ko na iwanan ito sa iyo upang malaman ang mga lihim na imahe. Ang unang linya dito na ko na lang naka-highlight na nagbibigay sa iyo ng ang mga sumusunod. Sa kaliwang bahagi, ikaw ay may kung ano ang tinatawag isang variable na Nick ay nagkataon, ngunit makatwirang tinatawag im para sa imahe. Sa kanang bahagi kamay ng na katumbas sign, siya ay sinasabi ninyo ako ng bagong quote, magpanipi "simple imahe". Simple image, sa ganitong konteksto ay kung ano ang tinatawag na isang klase, well, ito ay uri ng tulad ng isang class-- technically isang prototype-- ngunit talagang, ito ay nagbibigay sa akin ng isang bagong bagay, ang mga nilalaman ng kung saan ay ang file, iron-puzzle.png. Sa ibang salita, Nick ay lumikha ito paniwala ng isang simpleng imahe sa gayon ay maaari namin, para paturo mga layunin, i-play na may mga imahe at baguhin red nito, berde, at asul na mga halaga. At kung paano ang aming ginagawa iyon? Ito medyo misteriyoso syntax dito ay uri ng tulad ng mga paulit-ulit na block na ang ilan sa iyong nakita sa scratch mas maaga ngayon, kung saan maaari mong ulitin 10 beses. Sa kasong ito, Nick ay hindi hardcoded isang numero tulad ng 10. Sa halip siya ay sinasabi, magpasimula isang variable na tinatawag na x sa 0, suriin kung x ay mas mababa sa ang lapad ng imahe. At kaya na maging mas tamang, imahe ay ang variable, tuldok ay nangangahulugang pumunta sa loob ng mga ito at makakuha ng lapad nito, at pagkatapos ay buksan paren, sarado paren ay lamang paraan ng isang programmer ni na sabihing ito ay isang function. Ito ay isang pamamaraan. Ito ang pag-andar ibang tao sinulat ni. Gamitin ito at bigyan ako ng likod ng isang sagot. At pagkatapos ay x ++ ay isang magarbong paraan ng na sinasabi, pagkatapos nagawa mo na ito nang isang beses, dagdagan x sa pamamagitan ng 1. Sa ibang salita, ito ay isang programmer ng paraan ng pampalaglag isang loop na pagpunta upang umulit sa lahat ng mga haligi sa isang imahe. Isang imahe ay lamang ng isang grid ng mga tuldok, mga hanay at haligi ng mga tuldok. Ito ay isang paraan ng iterating sa ibabaw ng lahat ng mga haligi. At sa loob, samantala, kami ay iterating sa ibabaw ng heights, dito at dito at dito. Kaya ito ay lamang ng isang paraan ng traipsing, halos tulad ng isang lumang makinilya paaralan, pumunta lamang sa ibabaw ng buong imahe iteratively. Kahit na hindi lubos wholly malinaw, tumagal lamang sa pananampalataya para sa ngayon, na ang mga tatlong linya ng code magkasama ay pagpunta sa magpapahintulot sa inyo na iteratively tumingin sa bawat pixel, ang bawat tuldok sa imahe. Ano ang isang pixel? Well, upang maging malinaw, kung tiningnan namin sa orihinal na at mag-zoom in, kung talagang ilagay ang iyong mga mata sa computer screen, na ang dahilan lamang ng isang buo paglangkay-langkayin ng mga tuldok, ilang thousand tuldok nakaimpake magkasama doon. At kaya kung ano ang ikaw ay tungkol sa gawin? Ang bawat isa sa mga tuldok, ng isang pangwakas na kahulugan, ay ang resulta ng kung ano ang pangkalahatan ay tinatawag RGB, pula, berde, asul, na kung saan muli, ay maaaring pinagsama upang magbibigay sa iyo ng anumang bilang ng mga kulay. Sa katunayan, kung tandaan mo mula sa maraming, maraming mga taon na nakalipas, projector screen tulad ng mga bagay na ginagamit upang magkaroon ng hindi isa lens ngunit tatlo. Isa sa mga ito sabihin ang lahat red light, isa sa ang mga ito ay sabihin ang lahat luntiang ilaw, isa sa kanila sabihin ang lahat bughaw na ilaw. At kung ikaw ay sa isang middle school tulad ng ako ay kung saan sila ay hindi kailanman maayos na nakahanay, ikaw ay palaging nanonood kasaysayan movies na ay bahagyang pangit, dahil ang tatlong kulay ay hindi Kombinasyon ng maayos. Ngunit ito ay lumiliko out na ang bawat isa ang mga halagang ito pula, berde, at asul, ay maaaring magkaroon ng isang bilang kaugnay sa kanila. Halimbawa, 0 para sa red ay nangangahulugan na walang pula, 0 para sa berde ay nangangahulugan walang berde, at 0 para sa asul ay nangangahulugan na walang asul. Kaya kung mayroon kang walang red, walang berde, at walang blue, kung ano ang kulay ang mayroon kayo? Madla: [hindi marinig] David MALAN: Gusto mo Sana nga, ito ay puti. Sa kasamaang palad, ito operates-- paumanhin? Madla: [hindi marinig] David MALAN: Kaya mo talagang may itim, sa kasong ito. Kaya kung mayroon kang wala sa mga ito kulay naka-on, ikaw ay may itim. Gayunpaman, kung mayroon kang, sabihin natin ng isang pulutong ng mga ito, tulad ng maraming mga pulang, 255 ng mga ito, isang pulutong ng mga berde, at isang pulutong bughaw upang ay puti. Kaya ito ay ang dalawang extremes. Kaya sa pamamagitan ng logic na ito, kung mayroon akong isang pulutong ng pula at walang sariwang at walang blue, kung ano ang kulay ay na? Madla: [hindi marinig] David MALAN: Right, nang walang alinlangan. At pagkatapos ay walang pula, pulutong ng mga green, walang asul, at pagkatapos ay kung have-- mo na rin, kami na lang tapusin ito, dahil lang sa, ngunit ito, siyempre, ngayon, ay asul. At ngayon maaari mong pagsamahin ang mga kulay. Ngayon bilang isang bukod, kung mayroon man sa inyo ay may kailanman tapos na ang ilang mga aktwal na disenyo ng website, maaari mong aktwal na makita simbolo tulad nito. FFF-- at talagang, ito ay marahil hindi kahit na. Ito ay FFFFFF. Kahit sino kailanman makikita F at E at A through-- kaya ito ay lumiliko out, usapan natin kahapon tungkol sa decimal, at ngayon, uri ng tungkol sa decimal. Ngayon kami talked tungkol sa binary. Lumiliko out, hexadecimal ay isang napaka karaniwang base system upang gamitin sa computing. Binary ay dalawang, decimal ay 10, hex ay 16. At ito ay lumiliko out, kung paano gawin bilangin mo sa hexadecimal? Zero, isa, dalawa, tatlo, apat, lima, anim, pito, walo, siyam, ano ang gagawin mo gamitin pagkatapos ng siyam? Ano ang susunod na number? Kami ay ginagamit na zero. Kailangan ko 16 sa mga ito. Zero, isa, dalawa, tatlo, apat, lima, anim, pito, walo, siyam, kailangan mo ng ilang arbitrary convention. At kung ano ang sangkatauhan ay nagpasya sa ilang oras nakaraan na pagkatapos ng siyam na dumating ang sulat A at pagkatapos ay B at pagkatapos C. Kaya ang paraan bilangin mo sa hexadecimal ay zero, isa, dalawa, tatlo, apat, lima, anim, pito, walo, siyam, A, B, C, D, E, F, at na bibilangin mo ang lahat ng paraan, ito ay lumiliko out, hanggang 15. Kaya sa zero sa 15 ay zero sa pamamagitan ng F. Ngayon kung bakit ay na makabuluhang? Well, kapag mayroon kang dalawang F ni, na kung paano mo ipahayag ang 255. Kaya mahaba kuwento maikli, sa mundo ng Photoshop, na graphic disenyo ng software, sa mundo ng web development, kung saan mayroon kang maraming ng mga kulay, siyempre, upang i-play sa, madalas programmers ay ipahayag ang mga nasa hexadecimal, dahil lang sa ito ay may gawi na maging isang maliit na mas simple. Kahit na sa unang tingin ito ay mas mahirap unawain. Kaya sa anumang kaso, ito ay mahalaga dahil Nick sa Stanford ay nagbigay sa amin anim na piraso ng pag-andar na ikaw, ang namumuko programmers, ay ngayon ay may kakayahan upang gamitin. Itinayo sa ito web pahina ay anim na function, anim pamamaraan na sinulat Nick. Tatlong ng mga ito ay makakuha ka ng isang numero, isang pula, isang green, o isang asul na halaga. Tatlong ng mga ito ay magse-set ng halagang iyon. At lalakip ang mga underscore ay lamang placeholder, kaya kailangan mong malaman kung ano ang mga ito ay. Kaya may mga tatlong mga pag-andar, ang una sa mga bagay na ito ay pagpunta sa maging isang x-coordinate, at ang pangalawang ng mga bagay na ito ay pagpunta sa maging isang y-coordinate. Sa ibang salita, na kung saan tuldok, na kung saan pixel ang gusto mong makuha ang green ng, makuha ang asul ng, kumuha ng mga pula ng. At pagkatapos dito, ito ay pagpunta sa maging x, ito ay pagpunta sa maging isang y halaga, at ito ay pagpunta sa maging isang numero. Kaya sabihin gawin ang unang line ng mga ito nang sama-sama at pagkatapos ay makikita ko bang iwan ito sa iyo upang subukan upang pagbatayan ang natitira. Kaya ayon sa mga tagubilin sa pahinang ito, kailangan namin upang madagdagan ang red sa pamamagitan ng isang factor ng 10, at kailangan namin upang alisin ang berdeng at alisin ang mga asul na. Magsimula tayo sa mga huling pangyayari Hayaan. Kaya kapag gusto kong, at ako pagpunta upang i-indent sa pamamagitan ng paggamit ng ilang mga puwang, kung gusto ko upang i-set ang pula, berde, o ang mga asul na halaga, Ako pagpunta sa gawin ang mga sumusunod. Image, im.setBlue, at pagkatapos ay batay sa aking mga tagubilin dito, ano ang tatlong bagay ang dapat kong type sa loob ng mga panaklong ngayon? Kailangan ko ang x halaga, ang y halaga, at kung ano ang numero ang dapat kong ilagay dito kung gusto ko upang makakuha ng mapupuksa ng asul, batay sa kuwentong ito dito? Just zero. Kung gusto kong walang blue, ako lang pagpunta sa baguhin ito sa zero. Ngayon sabihin lamang paglalagom kung ano ito ay paggawa. Mayroon akong dito sa mga top pangalawa at pangatlong linya, I-claim ng dalawang mga loop, nested loops, kung ikaw ay, na ay pagpunta sa may ang epekto ng progressing mula sa kaliwa papunta sa kanan, itaas hanggang sa ibaba sa ibabaw ng lahat ng x halaga at lahat ng mga halaga y. Dahil muli, ang isang larawan ay lamang ng isang grid ng mga hanay at haligi. Kaya ito ay pagpunta upang makakuha alisan ng lahat ng asul. Hayaan akong mag-iwan sa susunod na linya sa iyo. Paano ako makakakuha ng alisan ng lahat ng mga green? Madla: [hindi marinig] David MALAN: Nice. Madla: [hindi marinig] David MALAN: Nice. At ako pagpunta upang mag-zoom out, at lang ang dadalhin pag-aalaga ng na hindi mo nagawa ang anumang mga typo. At kung ikaw ay komportable sa kung ano ang nagawa mo na, sige, at i-click ang pindutan ng Patakbuhin / I-save at makita kung ano ang makukuha mo. At muli, ginawa naming lamang ng tatlong mga pagbabago. tinanggal na namin na unang magkomento at papalitan ito gamit ang dalawang linya ng code. At ito ay OK kung kailangan mo na matumbok ang Run / I-save button ng ilang beses upang ayusin ang isang bagay. At hayaan mo akong ring mag-zoom in sa aking code para makita mo isalin sa ibang papel. Good. Kaya nakikita ko Andrew ay may kung ano mukhang may tama. Siya lamang ay nakuha ng isang malaking itim na parihaba sa kanyang screen. Does kahit sino may isang malaking itim na rectangle? Madla: Oo. David MALAN: Big black rectangle? OK, kaya sabihin sa tingin tungkol sa kung ano ang ibig sabihin nito. Sinabi namin na zero, zero, zero, kaya walang green, walang red, walang asul, ay pagpunta sa magbibigay sa iyo ng itim. At ito ay lumiliko out na karamihan ng aming mga laptops lamang ay hindi magkaroon ng sapat na katapatan. hindi lubos mo maaaring sabihin doon ay talagang isang bagay doon. At kung ikaw uri ng siguro sandalan iyong screen pasulong at pabalik, siguro mo makita ang isang maliit na isang bagay doon? Siguro, uri ng, uri ng? Ito ay hindi ganap na itim. Madla: [hindi marinig] David MALAN: Spoiler! Mayroong ilang mga red doon, ngunit tandaan mula sa mga pagtutukoy ng problema, Nick toned down na ito. Siya desaturated ito medyo, ngunit hindi lahat ng mga paraan sa zero. Kaya kung gusto naming upang i-magnify ang halaga ng pula, hayaan mo akong magpanukala na ito kahanga-hangang gawa. Hayaan akong mag-zoom in sa aking screen. At hayaan mo akong sige at sabihin halaga ay katumbas im.getRed (x, y). Ang linya ng code ay nagbibigay sa akin isang bagay na tinatawag na isang variable. Mayroon akong nagkataon, ngunit, arguably, makatuwirang tinawag kong aking variable ano, tila? Halaga. Just halaga. maaari ko na tinatawag na ito kahit ano ang gusto ko, ngunit ako paggamit ng iba pang mga function na ako ng inilarawan mas maaga upang makuha ang halaga ng pulang sa x comma y. Bakit gagawin ko na? Ano ang gusto mong gawin dito? Kailangan mong add-- Madla: [hindi marinig] David MALAN: Oo, siguro multiply ito sa pamamagitan ng 10. At kung hindi mo alam ito, ako pagpunta sa sige at gawin ito. Ako pagpunta sa sige at sabihin nating, gusto ko ang mga halaga ng pulang Gusto kong maging ano pa man ay ang pulang, oras 10, At ang bituin, ang asterisk sa iyong keyboard ay hindi the-- gumagamit x. Gamitin ang mga bituin. Iyan ay kung paano mo i-multiply bagay sa karamihan ng mga wika programming. Kaya ayon sa Kareem intuwisyon, naka-imbak sa ito variable na tinatawag na halaga, ay kung magkano ang red ko gusto sa xy lokasyon. Paano, ngayon, ginagawa ko na Pixel ay may numerong iyon? Kayo ay nakagawa tapos na ito bago. Itakda mo ang berde at ang asul sa walang halaga, sa zero. Madla: [hindi marinig] David MALAN: Oo, well hindi mo nais na ito sa 10. Mayroon ka nang ginawa ng math dito. Kaya kami ay pagkuha ng halaga ng pula, na kung saan ay isang mababang bilang, siguro. Kami ay pag-multiply sa pamamagitan ng 10. Ano ang gusto mong gawin sa ang mga variable na halaga ngayon? Madla: [hindi marinig] David MALAN: Nice. Kaya im.set-- ano? Madla: setRed. David MALAN: setRed, sa xy lokasyon. Yeah. At lamang na halaga. Sa ibang salita, ang isang variable ay isang pansamantalang placeholder na maaari mong ilagay ang anumang nais mo in. mangyari namin upang ma-paglalagay ng number sa loob nito, sa sandaling ito. dumami na namin ito sa pamamagitan ng 10 upang gawin itong mas malaki. At ngayon ako substituting na variable bilang na ang mga third argument, o input upang i-set red. At kaya na sa sandaling ikaw matapos iyon, at itala ng semi-colons at ang panaklong. Sige at i-click ang tumakbo / i-save muli, at ikaw dapat makita, magically, kung ano ay talagang doon. [? Arwa,?] Kung ano ang doon? Ang Eiffel Tower sa full-fledged pula, hindi masyadong madilim. ito ay dapat na mas kitang-kita ngayon, yes? OK. At Andrew, wala nang black box? Madla: [hindi marinig] David MALAN: Lahat ng karapatan. Kaya kukunin ko na panatilihin ito sa screen. Kung nais mong i-play na may ito mamaya, kukunin ko na muling likhain ito para sa iyo. Ngunit ang code na ito dito ay eksakto na. Bakit hindi gawin namin ang isa isa. Hayaan akong mag-scroll pababa bahagyang. Kaya sa kasong ito, ang projector ay hindi talagang gawin ito hustisya. Ngunit sa iyong screen, ikaw ay malamang na magkaroon ng isang napaka pula at napaka itim na kahon. Ito, masyadong, ay isang palaisipan na nagpapakita ng isang bagay sikat. Gayunman, ang mga imahe ay pangit. Ang tunay na larawan, oras na ito, ay sa bughaw at luntiang mga halaga. Gayunman, sila na ang lahat ay nahahati sa pamamagitan ng 20 kaya ang halaga ay masyadong maliit. Ang mga pulang mga halaga ay lamang random na numero, ingay. I-undo ang mga distortions upang ipakita ang tunay na larawan. Kaya Nick pagkatapos ay nagsasabi sa iyo kung ano ang gagawin. Itakda ang red halaga sa zero, at at pagkatapos ay hindi palayawin kung ano ito. Pagkatapos i-multiply ang mga asul na at luntiang mga halaga sa pamamagitan ng 20. Kaya ito ay halos ang parehong programa tulad ng dati, ngunit ikaw ay pagtaliwas ang proseso. At aking ilalagay ang aking code mula sa bago sa screen kung sakaling gusto mong sumangguni bumalik sa mga ito o i-play pa sa na ang isa. Hayaan akong mag-zoom in sa mga iyon. Ngunit malutas tanso image puzzle, bilang dalawang. Madla: [hindi marinig] David MALAN: OK, kaya ang isang ito ako hindi pagpunta sa bigyan ng maraming mga pahiwatig. Kaya ko would-- oh, sabihin makita, kang magkaroon ng isang typo dito. Kaya tandaan, na ito dito aktwal na mga pangangailangan upang pumunta doon. Kaya kung ano ang Gusto ko imungkahi, kung nais mong focus sa isang ito, may mga sagot. Kung nais mong isalin sa ibang papel na yaon, na dapat tumanggap ng unang isa pagtatrabaho. At pagkatapos ay maaari mong gamitin na bilang inspirasyon para sa ikalawang isa. Nice. Good. At para sa mga curious, ito ay isang simpleng halimbawa ng isang agham o isang sining tinatawag steganography, ang sining ng pagtatago ng impormasyon sa mga imahe. Karaniwan, mga imahe ay maaaring maging watermarked very blatantly na may isang logo sa ibaba sulok, ngunit malinaw, ikaw ay maaaring maging mas sopistikadong tungkol dito at talagang itago ang iba pang mga imahe sa Images kahit papaano sa diskarteng ito. Kumuha ng isa pang 30 segundo, at pagkatapos ay kami ay hindi bababa sa ipahayag kung ano ang dapat mong makita. At kukunin ko na mag-iwan ang ikatlong isa bilang isang sa-bahay ehersisyo, kung gusto mong higit pa sa isang hamunin ito weekend. At sa tingin ko Andrew baka nakuha muna ito. Ano ang pangalawang imahe, Andrew? Madla: Statue of Liberty. David MALAN: Statue of Liberty ay maaaring ang sagot ngayon. Kaya muli, lamang ng ilang simpleng halimbawa, ang layunin ng kung saan ay upang bigyan ka ng isang pakiramdam ng kung paano isinalin namin ang pictorial Scratch bloke upang mas nakakainis at higit pa asawa code, ngunit ang lahat ng mga ideya ay pa rin eksakto ang parehong, kahit na may sa pagpapakilala mo nga sa mga kuru-kuro ng isang variable, pagiging makakapag-imbak ng isang bagay pansamantalang. Natin gawin isa pang hands-on Hayaan, lamang sa ngayon ikonekta ang mga tuldok sa isang bagay ng kaunti pa sa totoong buhay. Kapag handa ka na, kung maaari mong pumunta sa URL na ito sa screen. Iyon ang dahilan din sa iyong kopya ng slide, developers.google.com/maps~~V. Natin ang aktwal na gawin ang isang bagay real, kaya na magsalita, sa web gamit ang Google Maps API, o application programming interface, sa mga sumusunod na paraan. Google, tulad ng maraming mga kumpanya, ay nagbibigay ng isang pulutong ng mga libreng pag-andar na maaari mong gamitin upang bumuo ng iyong sariling mga kagiliw-giliw na mga aplikasyon. Sa katunayan, kung ikaw ay kailanman ginamit Uber upang makakuha ng isang taksi o isang kotse, ikaw ay malamang na malaman na ang Uber ay isang mapa at ito ay nagpapakita ng mga kotse dito. Iyon ay, bilang pinakamahusay na hangga't maaari ko sabihin, ang Google Maps API. aktwal na sila ay gumagamit ng mga mapa ng Google, ngunit Uber ay hindi isang kumpanya mapping, o nais na maging isang lalo na kawili-wiling problema upang malutas sa tuktok ng kanilang kotse serbisyo problema. At kaya sila ay nakatayo, muli, sa mga balikat ng iba, Google sa kasong ito. Kaya ginagamit nila mga mapa ng Google ay ang kanilang sariling mga serbisyo ng kotse at iba pang mga tulad na mga tampok. Kaya kami ay pagpunta upang samantalahin ng mga ito upang gawin ang mga sumusunod. At kung ako na wala na masyadong mabilis, tumawag lamang sa akin sa paglipas sa isang sandali. Happy sa pagbabalik-tanaw ang ilan sa mga bagay-bagay na imahe. Dapat mong makita ang iyong sarili sa isang pahina tulad nito. Kaya ng Google nice, at ang mga ito ay kabilang sa mga pinakamahusay ng pagbibigay ng hindi lamang APIs, ngunit libre APIs na kayo maaaring i-play nang mayroon o pangkomersyal na gamitin. sila magsisimulang maningil sa iyo kung ang iyong paggamit ay mataas, ngunit ako nagpunta maaga nang maaga at nag-sign up sa amin para sa isang libreng account na, sana, 10 mga computer Hindi maa-alisan ng karapatan sa amin para sa bigla. Kaya sana ito demonstration gagana. At mapansin na sila ay may mga API para sa Android, iOS, mga serbisyo sa web, at web, anumang na. ni-focus sa web Hayaan. Kaya mag-click ang mga kulay rosas na kahon, web, at na ay hahantong sa iyo, sana, sa isang pahina dito. At sila na nakuha ng isang buong grupo ng mga API. At ito ay maaaring maging isang maliit na napakalaki sa una, ngunit Kukunin ko patnubapan sa amin pamamagitan ng kung ano ang gusto namin. Sa tuktok kaliwa ay ang Google Maps JavaScript API, ang JavaScript API. Kaya't sige at i-click ang isa. At na ay magdadala sa iyo ngayon sa sumusunod na pahina, mga demo at sample code. Hayaan akong mag-zoom out dito. At hayaan mo akong makakuha ng sa amin to-- mag-scroll pababa upang kung saan sinasabi nito mabilis na pagsisimula hakbang. dapat magmukhang ang iyong screen tulad ng minahan. At mayroong dalawang hakbang, kumuha isang susi at simulan ang pagbuo. Mayroon na ginawa unang hakbang para sa sa amin, sa pagkuha ng isang tinatawag na key. At ito ay isang pangkaraniwang ideya. Isang API key ay karaniwang lamang isang malaking random na numero o string na ikaw ay dapat i-paste sa iyong code, kaya na alam ng Google kung sino ka kapag gumagamit ka ng kanilang mga serbisyo, ang kanilang mga API. Ay hindi nangangahulugan kami sinisingil ng kahit ano. At ngayon, i-click, sa halip na isa, i-click ang simulan ang pagbuo. Kung maaari mo lamang iwagayway sa akin higit sa kung hindi sigurado kung saan kami. Kaya kami na lang scratch ang ibabaw, dito ngunit kung ano Akala ko ay magiging nakakahimok ay ang aktwal na magkaroon ng lahat ng sa amin, gamit Cloud9 sa isang window at ang tutorial na ito sa ibang window, hinahayaan talagang makakuha ng aming sariling application up at tumatakbo na embeds ng isang pasadyang Google map sa aming sariling webpage, at pagkatapos ay nagdadagdag ng isa o dalawang mga tampok. Ngunit kami ay lamang makalmot ang ibabaw ng kung ano ang maaari naming gawin. Kaya lamang ng isang mabilis katinuan check. Ay lahat ng tao sa pahinang ito, Google Maps JavaScript API? Dapat sabihin sa pagsisimula. Hindi namin ay pagpunta sa pumunta sa pamamagitan ng ang buong bagay sa pamamagitan ng anumang mga pamamaraan. OK, sa ibang tab, kung hindi mo gusto ito bukas, huwag pumunta sa Cloud9 at makakuha ng iyong sarili sa makatarungan isang bagong tab, sa huli. Kaya muli, c9.io mula sa kahapon, c9.io, at lamang lumikha ng isang bagong file. At sige at call ito kahit anong gusto mo. Tumawag ako mine map.html. Tumawag ito ng anumang bagay na nagtatapos sa .html. At dapat ay humigit-kumulang kung nasaan ako sa prosesong ito sa pamamagitan lamang ng isang nagbi-blink prompt sa isang walang laman tab na tinatawag na isang bagay tulad ng map.html. O file, ang mga bagong file ngayon. At ngayon, sa ibabaw sa Google Maps JavaScript API, kami laktawan pagbabasa sa pamamagitan ng lahat ng mga tekstong ito. Ngunit mapansin na hello world ay sa katunayan sa lahat ng dako, maaari mo makita ito ngayon. Hello world ay ito malaki makulay halimbawa ng isang buong grupo ng mga HTML. Sige at i-copy at i-paste lamang na HTML, kaya mula sa type doc sa tuktok ang lahat ng mga paraan upang ang mga malapit HTML tag, pumunta magpatuloy at kopyahin ang lahat ng na- muli, na sa ilalim ng hello world example-- at i-paste na sa iyong Cloud9 tab, kaya na ngayon ang iyong screen dapat magmukhang halos tulad ng minahan. At maaari mong i-save ito, ngunit huwag i-load ito lamang pa. Sabihin unang pagtingin sa ang code at makita kung kami hindi maaaring magpakilala o matutunan mula sa kung ano ito ay Google ay nagkaroon sa amin nang walang taros kopyahin at i-paste. Sila lamang ang nais upang matulungan, literal, kumuha sa amin na nagsimula, ngunit mayroong hindi na magkano kumplikado talagang doon. Ang anumang mga katanungan lamang pa? kami ay ligtas upang sumulong? OK. Kaya mabilis, sabihin lamang gawin ilang mabilis katinuan tseke. Line isa sa kung ano ang aking makita, at sana, ikaw makita, ano ang ibig sabihin nito, doctype HTML? Kareem, isipin? Madla: [hindi marinig] David MALAN: Oo. Heto na HTML 5. Samantala, line dalawang sa screen dito ay nangangahulugan hey browser, dito ay ang aktwal na HTML. Line tatlong ay hey browser, heto na ang ulo. Line apat ay, siyempre, hey browser, dito ay ang pamagat. Ano ang ibig limang linya gawin? Sa totoo lang, ito ay hindi talagang gumawa ng anumang bagay para sa amin. Sa kasong ito, ito lamang resizes ang pahina sa isang default. Line anim, hindi pa namin talked tungkol sa, ngunit ito Tinutukoy ang character encoding. Mayroong iba't ibang mga paraan upang i-encode ang mga file, lalo na para sa mga banyagang wika. UTF-8 lang may kaugaliang ay ang default. Kaya ngayon kami ay makita sa linya pitong sa pamamagitan ng 16, ang ilang mga CSS. At kahit na hindi namin nakita ang lahat ng mga bagay na ito bago, maaari naming uri ng magpakilala. Kaya line walong paraan, hey browser, mag-apply lahat ng mga sumusunod na kung saan ang dalawang mga tag, tila? Ang HTML at teksto ng katawan. Kaya ang comma ay ang bagong bagay doon. At ito lamang isang paraan ng pagtukoy ng maramihang mga tag sa iisang pagkakataon. Pagkatapos namin nakuha ang kulot tirante. Kaya tila, ito ay nagsasabi sa browser, gawin ang mga kataasan ng mga pahina 100%. Kaya kahit na may masyadong maliit na nilalaman, gawin ang buong pahina, gawin ang mga bagay na punan ang mga pahina. Gawin ang mapa huli punan ang pahina. Margin, ano ang ibig sabihin nito? Iyan ay karaniwang tulad ng arbitrary white space sa paligid ng mga gilid na ang ilang mga designer browser lang nagpasya dapat doon, dahil ito uri ng gumagawa ng mga bagay hitsura cleaner. Ngunit hindi namin nais na. Gusto naming ang mapa pagpunta lahat ng paraan upang ang mga dulo. Padding, katulad sa espiritu sa mga margin. Mga margin ibig sabihin sa labas, padding paraan sa loob, ngunit ito ay ang parehong uri ng deal. Ito ay isang maliit na bit ng isang buffer sa pagitan mo at ang mga dulo. At pagkatapos line 13 ay isang magandang pagkakataon para sa isang mabilis na pagsusuri. Ano ang matalim sign mapa ibig sabihin, o ibig sabihin hashtag mapa? Ano ang ginagawa na mag-refer sa, sa prinsipyo? Madla: [hindi marinig] David MALAN: Mismong. Ito ari-arian, ito CSS ari-arian nalalapat sa makatarungan isang bagay, ang HTML tag na may isang ID ng quote, magpanipi "mapa". At ngayon sabihin fast forward, mag-scroll pababa sa ilalim ng file, na kung saan ay hindi masyadong malayo, at notice on line 19, kung i-paste mo ito nang eksakto tulad ng ginawa ko, line 19 ay may lamang ng isang div, na isang division ng pahina, na kung saan kahapon ko tinatawag na isang hugis-parihaba rehiyon. Ito ay nakuha wala sa loob nito. Ito ay isang bukas na tag, malapit tag. Ngunit ito ay magkaroon ng isang natatanging ID. Kaya kung ano ang tila na maging nangyayari dito ay Google ay readying ang aming web page sa magkaroon ng isang kumpletong 100% taas, at walang padding, walang margin, dahil kung ano kami ay pagpunta sa ilagay sa loob ng div, na ang natatanging ID ay mapa, ay isang aktwal na naka-embed na mapa. At gusto naming ito upang punan pahina at hindi lamang ang ilang mga maliit na parihaba sa gitna. Kaya line 14 parehas emphasizes, ang map mismo ay dapat magkaroon ng isang taas ng 100%. Kaya ngayon mapansin pagitan ng mga linya 20 at 28, ito ay JavaScript code. At ito ay, kahit na ito ay syntactically isang maliit na kakaiba, mayroong hindi lahat na magkano ang pagpunta sa dito. Sa linya 21, ito ay deklarasyon isang bagay na tinatawag na isang variable. Sa halip na tumawag ito halaga, tulad ng ginawa namin bago, kami ay mas tiyak na sinasabi var, na kung saan ay nangangahulugan lamang variable. Maaari naming ay may ginagamit na sa ni Nick code, ngunit siya ay hindi, kaya ko ay hindi abala sa paggawa ng ito alinman. Ito ay isang variable na tinatawag na map, at pagkatapos ay mayroong isang function na tila tinatawag initMap. Kaya ito ay tulad ng ating sariling pasadyang puzzle piraso sa scratch. Lumikha kami ng isang piraso ng functionality tinatawag initMap, at maaari mong uri ng magpakilala anong nangyayari dito. Sa kaliwang bahagi, Mayroon namin ang isang variable, kaya kami ay pagpunta sa ilagay ang mga sumusunod na bagay sa loob variable na, mula sa kanan papuntang kaliwa. Ang kanang bahagi kamay nagsasabing, hey browser, bigyan ako ng isang bagong mapa ng Google. At google.maps.map ay lamang ng isang funky paraan ng pagtukoy na pag-andar na ito ay kabilang sa Google Maps. Pagkatapos ng panaklong, nasaksihan namin ito bago, hey browser, kumuha sa akin ang mga elemento sa pahina, ang tag sa pahina na kung saan ang natatanging ID is-- Madla: [hindi marinig] David MALAN: --map. At kung ano ang nangyayari, well, ang linyang ito nang sama-sama, linya 23, ay mahalagang na nagsasabi, hey browser, pumunta makakuha ng sa akin na walang laman div sa pahina na ang natatanging ID ay mapa, dahil gusto kong ipasok sa it-- iniksyon sa ito, kung ikaw will-- ang maramihang mga nilalaman na ang mangyayari sa darating mula sa web, sa dakong huli. At Google paggawa ng lahat ng na para sa amin. Kaya muli, sa pinakadulo ng araw, taglay namin ang halimbawa ng abstraction. Wala akong ideya kung ano ang isang mapa ay o kung paano upang ipatupad ang isang mapa API. Hindi namin kailangan sa. Kailangan lang namin upang sabihin ang mapa kung saan upang ilagay ang sarili nito, at mag-iwan mga batayan pagpapatupad mga detalye sa Google. Ngayon ay mayroong ay tila dalawang piraso ng data na halimbawa na ito ay pagbibigay sa Google API. Tila ang gitna ng mapa, at ang antas ng zoom, kaya na magsalita. At ang sinuman makilala ang mga coordinate, latitude at longitude? Marahil hindi, ngunit maaari naming bumalik sa tutorial, literal makita. Ngunit kami ay makita ito sa loob lamang ng ilang sandali. Mag-zoom antas ay isang halaga sa pagitan, hindi ako alam, isa sa 13 o isang bagay tulad na. Ito lamang ay may sa gawin sa kung gaano kalayo ikaw ay naka-zoom in o out, at na ito. At ngayon sa pinakadulo dulo ng pahina, notice linya 29-- ito ay isang maliit na pangit dahil ito wraps-- ito linya ng code ay kung ano ang nagda-download sa browser aktwal API ng Google. Ang lahat ng mga code na Google mga inhinyero ay may nakasulat na ipatupad ito buong tampok ng embeddable mapa. Ngayon sabihin hindi baguhin ang anumang. Kung ikaw ay sumusunod na kasama, sige at i-save lamang ang file na iyon, kung ikaw sa katunayan ay may mayroon ako. Pumunta sa URL nito. Maaari mong i-click ang pindutan ng Run up tuktok at na magsasabi mo ang URL ng iyong web server muli. At ito ay humantong sa iyo sa isang bagong tab. Kung nag-click ang Buksan para sa map.html, at logro ay ikaw ay pagpunta upang makakuha ng isang alerto, isang error na mensahe, yes? Error mensahe, mensahe ng error? Kaya sa kasamaang-palad, ang mga error mensahe ay hindi na nakapapaliwanag maliban kung ang iyong aktwal na buksan ang console, na ang espesyal na tab namin iningatan pagbubukas kahapon at Medyo mas maaga sa araw. Ngunit ako stumbled sa kabuuan ng ito nang mas maaga, kaya ko na may korte out kung ano ang solusyon ay. Sa slide ngayong araw, o sa halip, sa Cloud9, pansinin na hindi namin ginawa isang bagay kusa. Pansinin na ang script na ito na tag sa line 29, kung basahin mo sa pamamagitan nito, ito ay tulad ng maps.googleapis.com/ isang bagay, isang bagay, isang bagay, pagkatapos ay mapansin ang isang tao, isa sa mga developer, wrote sa lahat ng mga malalaking titik, ang iyong API key. Kailangan namin upang ilagay ang isang bagay sa doon. At ito ay ang hakbang Ginawa ko para sa amin bago, at muli upang kanilang blacklist sa amin kung bigla, 12 o higit pa sa amin simulang gamitin ang parehong key, ngunit sabihin makita kung ano ang mangyayari. Kaya kung pumunta ka sa araw na ito slide, isang slide sa ibang pagkakataon, mayroong ito tunay funky-naghahanap string ng teksto. Sige at kopyahin lamang iyon at i-paste ito kung saan sinasabi nito ang iyong API key. Iyan ang isa ko nag-sign up para sa. At tiyak hindi subukan pag-type ito out mano-mano, dahil ito nararamdaman puno na may typos, potensyal. Kaya kopyahin lamang at i-paste na. At ito ay pagpunta sa gawin ang mga linya mas mahaba, ngunit ngayon, lamang na maging malinaw, dapat itong tumingin ng kaunti pa tulad nito, kung saan key kapantay ng hindi malaking titik yelling sa iyo. I-save ang iyong pahina, bumalik sa kabilang tab, i-reload, at pag-asa upang makita ang isang mapa ng kung saan? Madla: Australia. David MALAN: Australia. Kaya tila ang mga ito ay ang GPS coordinates ng Australia. At hayaan mo akong maglakad sa paligid para sa sandali lamang at makatulong sa sinuman kung sino ang hindi pa doon, ngunit hayaan mo akong imungkahi, sa pamamagitan ng Google, hanapin ang GPS coordinates ng iyong sariling bayan o ang iyong sariling sariling bansa. At marahil ang Google ay maaaring isara ito up, o Wikipedia maaaring sabihin sa iyo. Ngunit pumili ng dalawang iba't ibang mga halaga para sa latitude at longitude, bumalik sa nakaraan at i-paste ang mga ito, at pagkatapos ay i-reload ang pahina pagkatapos ng pag-save at tingnan kung maaari kang magkaroon ng isang map para sa iyong sariling bayan. At kapag tapos ka na sa iyon, ang follow-up challenge-- at kukunin ko na magbigay ng isang maliit na mas mababa direksyon, kusa, upang ikaw kusa may sa pakikibaka para sa isang pares ilang minuto gamit ang mga babasahin, baguhin ang mapa upang huwag ito cartoonish default, ngunit isang satellite mapa. Kaya mo talaga makita satellite imagery sa halip na ang pretty kulay. At ang hint Bibigyan kita ay baguhin ang uri ng mapa. Bumalik sa na ang pagkuha nagsimula page para sa inspirasyon. Tulad ng maaaring mo gleaned, kung ikaw ay naghahanap, may mga kaya maraming iba pang mga mga bagay na maaari mong gawin. Ang ilan sa iyo ay may na nagbago ang uri ng mapa. Ngunit maaari mong do-- halimbawa, ipaalam sa akin pumunta sa isang bagay ginawa namin para sa kurso I teach-- maps.cs50.net. Ang isa sa aming undergrads nagsisigawa nito. igitna namin ang aming mapa paglipas Harvard Yard at overlay ang lahat ng mga pangalan na ito gusali, at kami ay nagkaroon sa kanya si ito. Kaya kung nais ko upang maghanap para sa, halimbawa, Matthews Hall, kami ay may isang maliit na drop-down menu. At sa tingin ko siya gamit Bootstrap, ang library namin tinalakay nang mas maaga para sa. At kung nag-click ka sa Matthews Hall, agad ito jumps ang mapa sa isang tiyak na lokasyon, at ito palabas iyo ng isang larawan sa mga ito maliit na pop-up. Ngunit kahit na ito maliit na pop-up, hindi namin ginawa ipatupad. Kung mag-scroll ko pababa sa aming pagkuha nagsimula page at hanapin para sa mga window ng impormasyon, makikita mo na ang ilan sa mga functionality mo ang iyong sarili ay maaaring magdagdag ng, kahit na may ng kaunti pang kumplikado, ay isang bagay na tinatawag na isang window ng impormasyon. At kung nag-click ko ang isang halimbawa dito, at ito ay kung ano ay masaya, maaari mong gawin ang mga bagay na tulad nito, pag-click sa isang marker at pagkatapos ay voila, impormasyon nagpa-pop up. Kaya kami ay hindi masyadong ipinakilala sapat na mga tampok ng JavaScript pintura ng isang larawan ng eksakto kung paano mo maaaring kawad ang lahat ng ito bagay-bagay na magkasama, ngunit namin ang uri ng scratched ang ibabaw. Sa katunayan, kung ano lang ang ginawa ko kapag Ako nag-click sa marker na iyon, ay naghuhudyat ng isang kaganapan, ang isang tinatawag sa pag-click ng kaganapan. At hindi na namin talagang nakita ko ang isang kaganapan mas maaga sa araw, ang tinatawag na mag-sumite ng kaganapan, kapag kami ay pumipigil ang user mula sa paghahanap para sa pusa. Kaya namin ang uri ng kinuha at choosed mula sa lahat ng mga iba't-ibang mga tampok, upang bigyan ka ng isang pakiramdam, sana, ng kung ano ang maaari mong talagang gawin na may kaunti pang ginhawa sa programming, at ganap na libreng mapagkukunan. May tanong? Hindi? Ito ay ang iyong huling pagkakataon, hindi bababa sa araw na ito, sa araw ng Biyernes, upang makakuha ng kahit ano mula sa iyong dibdib nang sa gayon ay ituturo sa iyo sa labas ng dito pakiramdam tiwala at kumportable. Oo. Madla: Bakit hindi nagdagdag ka ng isa pang bagay? David MALAN: Oh aking kabutihan. Kailangan ko sa pamamahinga ito katapusan ng linggo, tingin ko. Iba pang mga tanong? Madla: [hindi marinig] David MALAN: can-- You in Internet Explorer, pahinga sa kapayapaan, na ginamit mo upang magagawang upang ilagay VB script, virtual basic script, ngunit na talagang hindi kailanman nahuli sa. Kaya ang maikling sagot ay lamang JavaScript. Iba pang mga tanong? O sige, well, hayaan mo akong gawin ito. Hayaan akong sunggaban ang aming mga kasamahan sa labas. Sila ay may ilang pagsusuri mga form na gusto nilang lahat na gumastos ng ilang minuto pagpuno out. Gusto nila upang kulektahin ang form at anumang waivers na maaaring mayroon ka sa labas. Kailangan din nila magkaroon ng sertipiko. Ako guessing mayroong pa rin ang ilang mga meryenda sa labas. Paraanin mo ako ang mga out, at kung ikaw may anumang mga katanungan sa habang panahon, makikita ba akong maglakad sa paligid ng higit nang paisa-isa at maaari naming makakuha ng iyong sinimulan. Oo naman. Madla: [hindi marinig] David MALAN: Iyan ay karaniwang tunay na mga araw na ito. Ay tiyak na may web software, ikaw ay nakahilig sa iba ikaw ay alinman sa aesthetically paggamit ng mga bagay tulad Bootstrap, kaya hindi mo kung ipatupad ang mababang antas detalye ng mga menu at mga pindutan at ang lahat na. Ikaw ay nakahilig sa isang tao tulad ng Google nang sa gayon ay Hindi mo na kailangang bumuo ng isang Uber negosyo at isang mapping negosyo, at anumang bilang ng mga katulad na aplikasyon rin. Sa katunayan, logins ay popular, masyadong. Kung nakagamit ka na Spotify o anumang bilang ng mga website, makikita mong mag-log in sa ilang mga website gamit ang Facebook. Kaya kung ano ang maganda, may Isasama API para sa mga pag-login sa panahong ito, sa gayon ay hindi mo na kailangang magkaroon ng iyong sariling mga gumagamit ng talahanayan at lahat ng iyong sariling database kinakailangang sa parehong lawak. Maaari mong ipaalam sa Facebook gawin ang lahat ng ng na kumplikado para sa iyo. Kaya ito ay isang nakapupukaw ng oras, sa totoo lang, sa programming, dahil may mga kaya maraming mga third party serbisyo na maaari mong bumuo sa tuktok ng. At muli, ang presyo na babayaran mo ay mag-pinansiyal o downtime. Kung ang Google goes down, kaya ang ginagawa Uber, arguably, ngunit marahil na ang isang makatwirang kalakalan-off. At muli, na noon ay isa sa mga tema, sana, para sa nakalipas na ilang mga araw, ay ang mga trade-offs. At bihira ay may pagpunta na maging isang tamang sagot. Ito ay tunay na ang mas mahusay na ng dalawa o higit pang mga sagot. Ipasa ang mga paligid. At lalakip ang mga Cloud9 account ay patuloy sa trabaho, sa teorya, sa habang-buhay. Maaari mong mahanap kung naghihintay ka ng ilang araw o sa isang linggo o higit pa upang mag-log pabalik sa kanila, maaaring tumagal ng tulad ng isa o limang minuto upang buksan back up, ngunit ito lamang dahil sila ay ilagay ito sa pagtulog upang makatipid sa mga mapagkukunan.