DAVID Malan: Bone, ni estas dorso. Tiel por la ekscita konkludo, nia lasta sekcio en retejo programado, kiun mi pensis ke ni uzus kiel ĝenerala termino kapti kelkajn ceteraj temoj. Do fine de la tago, ni vere faras iomete da manoj-sur ttt programado kun lingvo nomata Ĝavoskripto. Kaj mi kredas ke ni devos tuj iri en iu rilatigita kun bildoj kaj malkovri ion sekrete kaŝita en bildo, kaj ankaŭ rigardu la Google Mapoj API, apliko programado interfaco, kiel io reprezentanto de la tipo de programaro tio ĉiam pli kaj libere havebla hodiaŭ. Sed kial ni ne rigardu ĉe ingredienco al tiu mondo ke ni ia estis prenante por donita ekzistas por iu tempo, datumbazo. Por la pasinta tago kaj duono ni supozis ke ni havas aliron al datumbazo, sed kio problemo does datumbazo solvi? Kion tio do por ni? Kio estas tio? Spektantaro: [inaudible] DAVID Malan: Tenas ĉiuj informoj, OK, kaj la specojn de informoj povus vin tien? Spektantaro: [inaudible] DAVID Malan: Ajna informo vi metis en ĝin, vi reiros. Tio estas vera. Kaj sur tipa reta paĝaro aŭ retejo apliko, kion specoj de informo, specife, povus vi metis en? Spektantaro: [inaudible] DAVID Malan: Uzantoj. Do kio estas uzanto? Spektantaro: [inaudible] DAVID Malan: Bone, registrita uzanto de la retejo. Kaj kion tio signifas por vendejo uzulajn informojn? Kio formas uzanto? Uzanto havas kion? Spektantaro: [inaudible] DAVID Malan: Jes, persona datumoj, kaj mi ŝatas tion. Ni estu pli preciza. Tiel uzanto tipe havas nomon, kion alian povus uzanto havas? Spektantaro: [inaudible] DAVID Malan: An addr-- OK, tiel antaŭnomo, familinomo. Tio estas bona. Fakte, ni riparos ke, ĉar ĝi estas tuj malfermiĝi ŝancon por diskuto, ankoraŭ, plia. Antaŭnomo, familinomo, genra. ID de iu varo. Kion alian? Mi aŭdis ion ajn antaŭe, ankaŭ. Retpoŝton, poŝtadreso. Do ni paŭzo tie kaj nun pripensu ne kio ni stokante en la datumbazo, sed- kaj ne kial, ĉar ĝi estas eble evidente ke iam vi registras uzanto, Vi volas memori ilin por iom da tempo. Vi ne deziras ĝin nur esti stokitaj en RAM kaj esti forgotten-- tiel ni enfokusigi la kiel. Ĝi rezultas ke en la mondo de datumbazoj, ekzistas almenaŭ du tipoj tiuj tagoj. Iu nomita SQL datumbazo, Strukturita Query Language, aŭ, cutely nomata, NoSQL, kio ne SQL. Kaj la lasta estas ekzemplo de kio povus esti nomata objektema, aŭ objekto vendejo, datumbazo kiu stokas objektoj, kaj ne, senkulpigo Mi, kiel ni baldaŭ vidos, vicoj. Do ni enfokusigi por nur momento sur la unua el tiuj, nome, SQL datumbazo, se nur ĉar estas tiel familiara jam, al iu kiuj uzis Excel aŭ Google Sheets aŭ Apple Nombroj aŭ ajna normo kalkultabelo programo, aŭ, ekvivalente, aŭ pli sophisticatedly, io kiel Microsoft Aliro aŭ Oracle aŭ MySQL aŭ PostgreSQL, ĉiuj el kiuj estas produkto nomoj por implementaciones de la jena ideo. A rilata datumbazo estas simple iu kiu havas vicoj kaj kolumnoj. Kaj de vicoj kaj kolumnoj, Mi laŭvorte signifas ion kiel tiu, tiel ke ni povus havi la nomo de kampo kaj lia tipo super tie. Kaj fakte, lasu min nun komencas mapi tiujn. Do efektive, mi ne scias kial mi tiris aparta abako. Ni teni ĉi simpla. Ni havas ĉi tie la komencoj de nia tablo, kie tiu estas la nomo de la kampo kaj tio estas la datumtipo, kaj de tipo I signifas la jena. Cxu estas nombro, estas ĉeno, mallonga ĉeno kiel vorto, estas alineo, estas binarajn datumojn, kiel bildo? Kaj ni nur turmentus tiu krom por nur momento. Tiel antaŭnomo, numeron, ŝnuro, granda bloko de text-- Spektantaro: [inaudible] DAVID Malan: Jes, tiel kordoj. Kaj en datumbazo kunteksto, ni tipe nomas char kampo. Mi nur diros char nuntempe sed ni estas tuj rafini tiu en momento. Karaktero kampo. Familinomo estas verŝajne la sama. Genra? Virinseksa, do povus esti char kampo. Ĝi povis esti aŭ citaĵo, unquote "Vira" aŭ citaĵo, unquote "ina" aŭ ĝi povus esti m aŭ f. Se vi volas esti pli inkluziva, vi eble bezonos trian valoron aŭ ia alia kampo entute. Kaj tial vi povis uzi vera falsa. La kampo povus nomi masklo, kaj tiam vi povus diri veraj aŭ falsaj. Sed tio ne nepre kapti ĉiuj la informo vi eble volas. Do rezultas ekzistas alia tipo de kampo kiu povas esti utila tie en tipa datumbazo, nomata enumeracian, kie estas karaktero kampo, sed vi, la diseñador, atingos numeri la eblajn valorojn, kiel citaĵo, unquote "vira", citaĵo, unquote "ino" kaj tiel plu. Tiel ke ajn valoro estas en via datumbazo, estas ja karaktero bazita, sed ĝi devas esti unu el tiuj valoroj. Ni probable ne volas nombrigtipo por antaŭnomo aŭ familinomo. Alie ni devus numeri, kiel la nomo derivas de, laŭvorte ĉiu ebla antaŭnomo kaj familinomo. Bone, do ID kion IRU estu? Jes, do eble kelkaj. Do ni persistos kun ke nuntempe, nombro. Kaj laux ilia nombro, nombro estas iom tro larĝa nun. Cxar la fino de la dua tago, Mi sentas kiel ni devus esti iom pli preciza. Nombro povus signifi kiel, ĝi povus esti io kiel 1,236. Kaj tio estas verŝajne ne kion ni celas diri per IRU. Kion ni probable signifas IRU? Spektantaro: [inaudible] DAVID Malan: Ha, bone, do eble estas eĉ kelkaj. Eble estas vere unika ensalutilo jen kordo, kiel salutnomon. Tiel absolute, povus esti. Mi pensas ke iu verŝajne signifis nombra, kvankam. Do ni restu kun tio. Kia nombro? Kio estas pli precise-- entjero. Do kelkaj kiel 0, 1, 2, 3, do ni nomas tiun entjero. Kaj eĉ tiam, mi povis esti _nitpicking_, estas Ne vere nur ĝenerala entjero vi volas. Verŝajne vi ne volas negativajn valorojn, nur ĉar ĝi nur sentas stranga. Vi probable volas pozitivaj entjeroj. Do vi povas ankaŭ esprimi ke en datumbazo, Sed nuntempe, ni diru entjero. Retpoŝto? Tio estas verŝajne just-- de kio? Spektantaro: [inaudible] DAVID Malan: Estas retmesaĝon, sed tio estas signoj, ĉu ne? Ĝi nur havas funky karaktero kiel an "ĉe" simbolon aŭ io alia, sed ĝi estas ankoraŭ karakteron kampo. Kaj poŝtadreso? Karaktero kampo. Do jen belan komencon, sed ni estu iom pli preciza nun. Do rezultas ke en datumbazo, vi ofte havas elekton super pli rafinitaj versioj de ĉi tiuj aferoj. Fakte, en tipa SQL datumbazo, SQL, aŭ pli ĝenerale, rilata datumbazo, datumbazojn kun vicoj kaj kolumnoj, vi ofte akiri specifi ne nur la tipon de la field-- lasu min fari iun ĉambron here-- sed ankaŭ la longon. Tiom kiom longaj estas unua nomo? Mi pensas, D-Al-V-mi-D. OK, havas ĝin mi probable nur ofendis kiel duone de la homoj en la ĉambro, dekstra, ĉar viaj nomoj estas pli longaj ol kvin literoj, do kvin ŝajnas iom egoisma kaj naiva, do kio estas pli bona valoro? 10, bone, kaj mi kredas ni Konfirmu en la ĉambro. 13? 30? Kial mi ne prenos la alproksimiĝo de pli fruaj kiam ni parolis pri tabeloj kaj memoro? Kial ne mi nur diru kiel 1,000? Nenies nomo tuj esti pli longa ol 1.000. Puŝi reen. Spektantaro: [inaudible] DAVID Malan: Jes, ĝi estas malŝparema, dekstra, speciale se plej nomoj estas nur kvin aŭ 10 aŭ 15 karakteroj, tio estas tre malŝparemaj. Do vi scias kion? Tio estas speco de malmola demando. Nun, ni povas certe analizi angla kaj ajna alia lingvo nomoj kaj eltrovi, nu, kio estas la average-- mezumo ne vere helpi us-- kio estas la max estas probable kion ni vere volas. Sed rezultu ni eĉ havas iu elekto sur la tipo tie. En tipa SQL datumbazo, vi esti iu nomita char kampo kaj ankaŭ varchar, V-A-R, por variablo char kampo. Kaj la diferenco estas tio. A char kampo, vi la diseñador, devas specifi anticipe la ĝusta longo de la kampo. Do eble la antaŭnomo kiel 20 sentas specon de sekuraj. Eblas devi fari iun googling al ĉu tio estas vere sekura sufiĉas. Ekzistas probable nomon kun 21 karakterojn, sed nuntempe, supozu 20 estas sekuraj. A char kampo implicus en datumbazo kiun vi estas uzanta 20 kaj ĉiam 20 karakteroj. Nun se estas nur D-Al-V-mi-D, 15 el tiuj estas nur tuj estos malplenan karakteroj, sed vi ankoraŭ uzanta ĉiuj 20 bajtoj. A varchar kampo, kontraste, signifas la ŝnuro devus esti ĝis 20 karakteroj sed se ĝi estas nur kvin, vi nur tuj uzos kvin, aŭ eble ses por speciala valoro fine, tiel 0 ni diskutis ke signifas la finon de karaktero sekvenco en memoro. Do kiam vi pensas Vi povus elekti char kontre varchar, donita ke komerco-off? Char uzas ke multaj karakteroj, varchar uzas pli multe, ol multaj karakteroj. Spektantaro: [inaudible] DAVID Malan: Bone, kiam vi scias la longo de la kordo bela konvinka simple uzu char, ĉar se Vi scias ĝin, nur metis ĝin malsupren. Kaj eble tio estas vera por zip kodo, en Usono, almenaŭ, 02138, ĝi estas ĉiam tuj estos kvin karakterojn ĝis vi aldonas la haltostreko kvar. Sed vi povus havi iun valoroj kiun vi ĉiam scias la longo. Aŭ eble ŝtata simboloj, kiel NY por Nov-Jorko, kaj MA Massachusetts en Usono. Eble vi havas kelkajn situaciojn kie tio tute racia, sed per tiu logiko, kial Ni eĉ overthinking ĉi? Kial ni ne simple uzu varchar kaj tiam ni certigos Ĉiam uzi du gravulojn ĉiuokaze, aŭ Ĉiam uzi kvin karakteroj ĉiuokaze? Kial ne simple savi varchar por ĉio, por tiu logiko? Devas esti akirado. Spektantaro: [inaudible] DAVID Malan: Povis skribi ion malbonan. Tiel ke estas vera. Sed eĉ tiam, ili ne povas uzi pli memoro ol mi rezervu. Mi ankoraŭ havas la finan diri sur la longeco, do ili ne hazarde fari tiun eraron, sed bona penso. Estas pli subtila, sed ĝi estas tre rilatigita al nia diskuto, fakte, de tabeloj kaj ligitaj listoj antaŭe. Ĝi rezultas ke la datumbazo, se ĝi scias ke ĉiuj de la valoroj de fiksa longo, eĉ se kelkaj el tiuj valoroj estas malplena, ia estetike malplenan, D-Al-V-mi-D kaj poste 15 spacoj, ĝi rezultas ke se ĉiu kampo estas la sama longo, multe kiel tabelo havis ĉiujn siajn aĵojn malantaŭo al malantaŭo al malantaŭo al malantaŭo por ke vi povus simple plus 1 por atingi la najbaran valoro, sama ideo en datumbazo tablo. Se ĉiuj viaj karaktero kordoj estas la sama longo, vi havas kio nomiĝas hazardaj aliro. Se ĉiuj kordoj estas de longo 20, vi ne nur fari plus 1 vi nur faru pli 20, plus 20 plus 20 plus 20, kaj vi povas tre rapide rulumi tra aŭ traserĉi ĉiujn viajn datumojn. Variablo char kampo, kontraste, ne ĉiam havas 20 karakterojn. Ĝi havu 20 kaj tiam 15 kaj tiam 19 kaj poste 10, do se vi volas serĉi tra ĝi, vi ne povas simple blinde aldoni 20 bajtoj por atingi la sekvanta unu. Vi laŭvorte devas traserĉi ĉar la rando de la datumstrukturo, se vi volas, estas ĉifona. Ĉio iras en kaj eksteren bazita sur la fakta longo de la kordo. Do kiam vi scias la longo, kiel Kareem diras, uzu char kampo, ĉar vi gajnos tiu efikeco de esti povis serĉi tra ĝi pli rapida Kiam vi serĉas datumojn, alie uzi variablon. Bedaŭrinde, mi ne havas bonan respondon por kiom longe la nomo devus esti, sed por iu kiel nomon, mi dirus oni varchar profanan ĉar ĝi ne iras esti fiksa longo por ĉiu. 20 Mi ne scias, 20 sentas iom firme. Ni nur diras 50, 50. Fakte ne kostos vin ke multe pli por diri 50 anstataŭ 40, sed en iu punkto, vi bezonas fari juĝon alvoko. Tre komunaj, sincere, por [? historia?] kialoj, kvankam ĝi estas troa, estas 255, ĉar antaŭ iom da tempo, en populara datumbazo sistemoj, kiel MySQL, libera ilo de kodo malfermita ke multaj kompanioj kiel eĉ Facebook uzata, tio estis la maksimuma defaŭlta do homoj ĵus iris kun ĝi. Do ne senkaŭza, sed ni uzi iom pli intuicio kaj diri, certa 50, tio estas probable iom troa. Sekso, mi faras kiel enumeracian, kaj tiel ni povas do numeri virinseksa, aŭ eble pli efike, m aŭ f aŭ alian simbología, sed enumeracian sentas bona elekto tie. Esti klara, sekso povus nur esti varchar, kaj ni povis nur ĉiuj konsentite kiel bela homo, por ĉiam meti la samajn valorojn tie. Virinseksa aŭ whatnot. Sed la problemo do estas, ke ni povis erari, kiel [inaudible] proponis frue en malsama kunteksto. Se ni eraris, ni povus akiri malĝusta valoroj en nia datumbazo. Do kio estas agrabla pri datumbazoj kiel Oracle kaj MySQL kaj aliaj, estas ke vi havas ĉi lasta tavolo de defendo kie via DBA, datumbaza administranto, kiu estas desegnanta ĉi tabelo kiel ni estas parole, povis meti en loko enumeracian ke protektas kontraŭ tiu de preciziganta masklo, ino, kaj tial neniu alie neniu programisto povas hazarde enmeti iun alian valoron. Do tiu estus bona afero. Jen karakterizaĵo. Tiel IRU, supozante nombran ID, ĝi probable devus esti pozitiva entjero. Kaj ni kelkfoje ja havas ŝanco diskuti longo. Vi ne volis tipe specifi numero ĉi tie, vi anstataŭe specifi tiu estas int, aŭ granda int, kiel ili estas tipe nomata. Sed tipe, entjero estus, diru, 4 bitokoj. Kaj se ĝi estas 4 bajtoj, jen kiom da bitoj? Spektantaro: [inaudible] DAVID Malan: 32 bitoj. Do kiom da uzantoj ni povas havi en nia datumbazo se ili ĉiuj havas ID kaj ĉi ID devas esti unika? 32 bitoj signifas nin havas mastrojn de unu, du, tri, kvar, five-- tiom kiom malsamaj ŝablonoj de nuloj kaj tiuj povas havi se estas 32? Tio estas la sama afero kiel demandante kio estas du al la 32? Estas granda nombro ke Mi ne tute iri longe, sed mi scias ke estas malglate 4 miliardoj. Do tio signifas via datumbaza tabelo povas havas kvar miliardoj uzantoj kaj tio estas ĝi. Do tiu estas interesa dezajno implico. Deca kvanto de entreprenoj decidis, eble ne tiom por liaj uzantoj tablo, ĉar havi 4 miliardoj uzantoj estas malofta problemo. Tio estas speco de Facebook-stilo problemo, ne tipa Kompanio problemo. Sed eble se vi havas transakcio tagaloj aŭ ia datumo kiu senĉese iĝas skribita en vian datumbazon ke absolute povus havi miliardojn kaj miliardoj da vicoj kaj vi uzas entjero por ĝi, kio okazos kiam vi ricevas remi numero 4 miliardoj kaj poste vi provas enmeti la 4 miliardono kaj 1, tiel diri? Mi simpligante la nombroj iom. Vi povas tranĉi reen, mi volas diri al vi devas pritrakti ĝin iel. Kaj kion komputilo tipe fari, pensas pri ĝi eĉ de tiu mateno, se vi havas 4 bitoj valoro kiel 1, 1, 1, 1, kiu, nur ligi la mateno kune al la posttagmezo, kio tio ĉi nombro reprezenti en duuma? OK, ni plifaciligi. Kion faras tiu nombro reprezenti en duuma? OK, ni plifaciligi, kio tio ĉi reprezentas en duuma? Spektantaro: Tri. DAVID Malan: Tri, ĉar ni havas tiujn column-- [Ridado] Whew! Ni havis tiujn kolumno kaj duope kolumno. Do supozu ke ja nia [? ena kampo?] ne 32 bitoj, sed estis du bitoj, ni povas rakonti de uzanto nombro 0, 1, 2, 3, kaj tiam ni estas speco de reen al uzanto 00 denove. Do jen kion tipe okazas. Se vi iam aŭdis la expression-- probable ne, sed se vi have-- entjero overflow, kie vi teni klakanta ĉiuj viaj bitoj esti la plej granda ebla valoroj, kaj tiam vi estas el bitoj, kio tipe okazi? Kial mi diras 00? Nu, tio estas tri. Kiel mi reprezentas 4? Kiel mi reprezentas la por numero 4 en duuma? Spektantaro: [inaudible] DAVID Malan: One-- yeah, Ne diru 100 per, ĉar ĝi havas malĝustan konotacio, sed 1-0-0. Tiel ke nombro 1-0-0 ja korekta, sed se vi nur havas du bitoj, Kion vi vere faris? Vi jam ruliĝis al 00. Kaj ja, jen kion okazus. Reale, vi povas pensi pri tiu pli familiare. Se vi memoras, kion, 16 jaroj, la mondo laŭsupoze fini kiam la Y2K problemo okazis. Kial tio okazis? Bone plej komputilojn, por racia decidojn, estis stokante nombroj kiel la jaro 1975 aŭ la jaro 1999 per nur uzanta du ciferoj en la komputilo la memoro. Do kompreneble, kio okazas Kiam vi atingos la jaro 2000, vi iros al tiu, aŭ pli ĝuste, jes. Do vi iru al la jaro 2000, sed se vi nur uzas du ciferoj aspektas kiel la jaro 00 kaj tial vi rulis. Kaj tio estas kial multajn sistemojn bezonis esti ĝisdatigita tiutempe. Do kun kiu diris, firmaoj kiel Facebook kuri supren kontraŭ tiu. Do la sola vojo por trakti la situacio, sincere, estas anticipi ĝin. Aŭ la plej pura maniero manipuli ĉi situacio estas anticipi ĝin tiel vi faras ne devi fari ŝanĝojn poste. Do anstataŭ 8 bajtoj, vi scias kion? Mi tuj esti antaŭen-pensado tie, eĉ se ĝi estas iom optimisma ke ni tuj havas 4 miliardoj kaj 1 uzantoj sur nia retejo. Sed ni nur uzas 8 bajtoj, aŭ 64 bitoj, kiu ĝenerale estas nomata granda entjero, tre teknika. Kaj tio nur signifas vin povas havi eĉ pli ciferoj en via nombro. Sed tio estas grava dezajno decidon, ĉar se vi elektas numeron kiu havas tro malmultajn pecojn de esprimpovo vi povis krei cimon en via programaro. Bone, do ni envolver supren kun retpoŝto kaj poŝtadreso. Tiel retpoŝto, kiom longe devus retadreson esti? 50. Mi vere ne scias, sed estas probable io simila, ĉar alie neniu tuj skribi al vi, se ĝi iĝas tro longa, do 50, ni iru kun ĝi nuntempe. Poŝtadreso, kiom longe devus esti? Spektantaro: [inaudible] DAVID Malan: Ne nur poŝtkodo, tamen. Poŝtadreso, mi aŭdis. Do tiu estas kiel 1 Brattle Square, komo, Cambridge Mass., komo, 02138. Kaj fakte, lasu min nur tiri ĝis iom laborfolio tie. Tio sentas kiel ĝi estas ŝanco perdita. Se ni havas 1 Brattle Square, komo, Cambridge MA 02138, Mi sentas kiel ni povas fari pli bone ol nur poŝtadreso. Kial ni ne eksplodus tiun iomete? Kion mi celas? Kio devus nin anstataŭ havi cxar niaj vicoj tie, eble? Spektantaro: [inaudible] DAVID Malan: Yeah, do ni nomas ĝin street_number, kaj substreko estas nur ordinara maniero de havi kio aspektas kiel spaco, sed ne, fakte. Strato, kaj tiam city-- bedaŭras? Spektantaro: [inaudible] DAVID Malan: Ni povus fari tion. Linio unu, linio du. Kial ni ne tenos ĝin simpla por nun, sed tio estas absolute akceptebla decido. Kaj tiam stato, kaj tiam ni iom usonaj centrita nuntempe kaj nur faru poŝtkodo, ĝuste ĉar ĝi devos konduki al interesa eraro aŭ problemo tie. Do supozu ke estas nun nia adreso. Ĝi estas iom pli ĝena ke Ni havas ĉiujn tiujn pli kampoj, sed nun ni povas marki aferojn iom pli bona. Do nun strato nombro verŝajne ne devus esti char, devus i? Kio devus esti? Spektantaro: [inaudible] DAVID Malan: Eble, numero kiel entjero denove? Granda entjero? Vi probable ne vivas ĉe 4 miliardoj Ĉefa Strato aŭ ion frenezan tiel. Do entjero estas probable bone, sed havas iun iam vivis en parolado kiel 1A Brattle Square, aŭ 1 kaj 1/2? Tiuj aferoj ekzistas, bedaŭrinde, eĉ se vi ne vivis tie, ekzistas tiuj anomalioj kiel apartamento 1A, 1B, 1C. Do vi scias kion, ni probable ne iru kun entjero, alie ni iras perdi iun vendoj. Char kampo, eble? Mi ne scias kiom longe. Ĝi estas probable ne tuj estos tiu longa, do 10 aŭ io. Neniu tuj skribos longa nombro, eble. Sed denove, ni devus verŝajne doni pli penson al tio. Eble google, fari iun esploron, sed ni iros kun niaj intestoj nun. Stratoj, char, 50, mi ne scias. En iu punkto, neniu okazas skribi ĝin en koverton, tro, do estas verŝajne iuj superaj baroj tie. Urbo, sama, certe, tiel char 50. Stato, povas esti usona centrita nuntempe. Do ĝi povus esti lerta, do speco de juĝo alvoko, stato. Ĝi povus esti kiel du karakteroj. Do efektive, eble, mi ripetadis char. Mi verŝajne signifus varchar, nur por kelkaj efikeco, sed ni revenos al ke decido en momento. Povus esti char de longo 2 por stato. Se en Usono oni havas, kiel Ma, Masaĉuseco, NY, Nov-Jorko, NJ, Nova Ĵerzo, kaj tiel plu. Do ĝi povus esti fiksita en tiu. PK por Vaŝingtono PK. Sed mi pensas, Olivier, vi proponis alian alproksimiĝon. Spektantaro: [inaudible] DAVID Malan: Jes, do ĝi estas iom ĝena por tajpi en, sed enumeracian povus fari pli sentita, ĉar tiu maniero, almenaŭ en Usono, vi povus numeri, se tede, sed vi faras ĝin nur unufoje en via datumbazo kaj neniam plu devas pensi pri ĝi, ĉiu 50 du-karaktero kodoj. Do mi ŝatas enumeracian. Ni persistos kun ke, ĉar ĝi ia efikigas pli rigoreco. Kaj tiam Poŝtkodo? Mi pensas Andrew havis penson sur tiu Spektantaro: [inaudible] DAVID Malan: Jes, kvin aŭ naŭ. Ni nur teni ĝin simpla. Nur faru kvin nun. Sed eble mi povis nur fari entjero, dekstra? Mi povus, sed vi scias kion mi faris tiu eraro unufoje, iusence. Jaroj, mi estis migrante de Microsoft Outlook al Gmail, kaj Outlook havas manieron de eksportantaj ĉiujn viajn kontaktojn kiel Excel-dosiero, CSV-dosiero, komo apartigis valorojn dosiero. Kaj mi faris la eraron, mi pensas, pri duobla musklako ŝin, iam mi elŝutis la eksportado, al certigi ĝi rigardis kiel mi atendis. Mi certe trafis Konservi aŭ lasu auto-save piedbato aŭ io. Ĉar kiam mi tiam importita ĝin Gmail, ĉion laboris. Sed dum jaroj, ĝis la nuna tago, kaj Mi faris ĉi kvin, 10 jaroj, Mi ankoraŭ trovi amikojn kiuj havas adresoj kiuj aspektas kiel ĉi tio. Kial? Spektantaro: [inaudible] DAVID Malan: Necesis la 0, nu, pli ĝuste, ĝi prenis la tutan poŝtkodo kiel nombro, kaj tial ĝi estas gvida 0 kio signifas ĝi ne havas sencon. Kaj tiel 2138 ŝajnas esti mia poŝtkodo. Kaj tio estas, sincere, ĝenan Excel trajto per kiu mi pensas defaŭlte, eĉ se tio signifis simple esti teksto, Microsoft Excel decidas, lasu min esti helpema, kaj ho, mi vidas nur nombrojn. Ni traktas tiujn kiel nombroj. Kaj ĝi detranĉas la gvidaj nuloj. Mi ĵuras al Dio, ĉiu paro de monatoj mi trovas adreson, kaj el ia OCD, mi reiru en kaj aldonu la 0, kvankam mi neniam sendu homojn leteroj aŭ io. Sed mi ankoraŭ trovi restojn de tiu. Do tiu estas, estas tiu bona ideo? OK, ne, ĉar ĉiu en Masaĉuseco, en ĉi tiu areo, tuj havos o kondukante ilin. Do ni iru kun kiel char, probable, kvin. Kaj tie, rimarki ni povus uzi enumeracian kaj ni povus numeri 10,000 ebla poŝtkodoj, sed kiu sentas kiel ĝi estas verŝajne transirante linion de, kiel, profitoj. Se vi devas enigo ke multe datumojn en via datumbazo protekti kontraŭ io. Do char rimarkis vi povus tajpi en H-Kaj-L-L-O kiel via zipa kodo, kiu ne estas, evidente, nombra. Tiel ekzistas neniu maniero, en tipa datumbazo, specifi nur nombraj kaj nur kvin signojn longa, Do ni tuj devas fari tion en kodo. Ni tuj faros tion en PHP aŭ Java aŭ kion ajn lingvon ni uzante la servilo por plenumi tian limigon. Whoo! Bone, do demandojn ĝuste ankoraŭ? Ni faru alian dezajno decido. Ĝi rezultas ke vi ankaŭ akiras elekti, kiam desegnanta SQL datumbazo, aŭ tipa rilata database-- kie denove, rilata nur signifas vicoj kaj kolumnoj, tiel estas kiel vi organizas vian data-- kaj rimarki ke kio tio signifas estas, Mi estis iluzia en ke mi estas drawing-- ĉi Estas kion nomas la skemo por datumbazo tablo. Jen kiel la specifoj por la table-- sed kiam venas tempo por fakte stoki datumojn, kaj ni faros ĉi nur ekzemplo tie. Mi tuj malfermi Excel, ĉar Excel donos al mi vicoj kaj kolumnoj. Kaj tio estas ĝuste kion Oracle kaj MySQL kaj aliaj iloj donos al mi. Do mi simple tuj uzi por diskuto gajno. Lasu min antaŭeniri kaj malfermi reprezentanto dokumento ĉi tie, zomi iom. Do ekzemple, niaj kapoj nun antaŭnomo, familinomo, genra, ID, retpoŝto, strato numeron, strato, whoops. Strato, urbo, stato, nur pri punto sur la ekrano. Do kion tio signifas estas ke kiam uzanto unua registras por mia retejo, ĝi tuj estos iu kiel David Malan, E, diru 1, malan@harvard.edu, strato nombro volo simili 1 Brattle Square, Kembriĝo, Masaĉuseco, 02138, kaj tiam tiel antaŭen. Do kiam mi diras ke rilata datumbazo aŭ SQL datumbazo vicoj kaj kolumnoj, Mi volas diri. Ke reala datumoj estas stokita en vicoj kaj kolumnoj. Tio estas nur koincido, ke ni parolis, kaj mi estis ĵus tirante ŝin en vicoj kaj kolumnoj. Tiu estas nur la skemo, la komunajn difino. Do de tiuj kampoj ĉi tie, aŭ ekvivalente, ekzistas, kiuj estas la kampoj kiuj vi pensas Mi verŝajne serĉu sur se mi estas uzanto aŭ se mi estas la administranto de datumbazoj? Kiel, kia kampoj mi efektive tuj serĉu per? Spektantaro: [inaudible] DAVID Malan: La nomo, jes tiel Mi ŝatas la fakton that-- yeah, email povus esti bela komuna. Pardonu, vi diris nomon. Tiel maybe-- kaj denove, ni estas speco de parolanta en la abstrakta. Mi ne scias kial vi volas sercxos nomon, sed kiu sentas racia se vi sercxas uzanto. Eble statas, certa, ID. Kaj ĝi estas glitiga inklino, ĉar mi povis aranĝi scenaron kie eble mia estro petis min, kiom da viroj ni havas en nia retejo? Kiom da virinoj ni havos en nia retejo? Kaj tiel en tiu punkto, vi eble volas serĉi en la genro kampo ankaŭ kaj nenio alia. Do tie estas komerco-ekstere tie. Denove, ne estas ĝustan respondon, sed Estas trajto en plej SQL datumbazoj konata kiel indeksado, per vi, la diseñador, la datumbaza administranto, akiri decidi anticipe kion kampoj la datumbazo devas optimizar por serĉoj sur. Vi povus tre naive diris, optimumigi tiu, optimizar tiu, optimizar ĉi, optimizar tiu kaj tiu, kaj la datumbazo volo fari iun magia afero sub la kapuĉo, kaj fari ion tiel ke la sekvanta tempo vi serĉu sur iu ajn de ĉi tiuj kampoj, ĝi, fakte, pli rapida. Tio estas ebla. Ĝi ne nuligas sin eksteren. Sed devas esti prezo pagita. Se vi naive, aŭ super-entuziasme diru, indekso ĉiuj tiuj kampoj, tiel diri, ke cxiuj kompetente serĉeblaj, kio prezo vi probable pagi? Spektantaro: [inaudible] DAVID Malan: Performance. Kion vi celas? Bone efikeco, almenaŭ en la kunteksto mi diskutanta, estas pli bone nun. Jen la difino de indeksado. Ĝi faros serĉoj pli rapidaj. Tiel tempo malgrandiĝas, tiel paroli. Spektantaro: [inaudible] DAVID Malan: Spaco. Do denove, ĉi tiuj estas komuna komerco. Mi povas plirapidigi vian serĉoj, sed estas tuj kostos vin pli bajtoj de spaco. Kial? Nu, implicite, se ni ne havas tiuj ruĝaj steloj, neniu el tiuj indeksoj, kiel mi diras, kiel vi serĉu Mia nomo en tiu datumbazo? Do ni nomas nian atenton al tiu ekzemplo. Se ni havas Davido kaj Scully kaj Kareem kaj Arwa kaj aliaj en tiuj vicoj, ekzemple. Do ni faru ĝuste tion. Scully estas en tie, kaj tiam ni havos Kareem kaj Arwa, kaj ĉiuj, se ne havi indekson difinita, por tiel diri, la plej bona vi povas fari estas lineara serĉo. Se vi serĉos Arwa, ni ne tuj povos salti dekstra ŝi rapide. Ni tuj komencu supro kaj iri la tutan vojon al la fundo, Ne malkiel niaj originalaj Mike Smith ekzemplo. Se, tamen, mi diras, hey, datumbazo, indekso la antaŭnomo kampo, tiam ĝi tuj fari ion amatoro kaj subtenas ion kiel duuma serĉo. Ĝi estas probable ne duuma serĉo por se. Datumbazoj emas uzi alian datumstrukturo nomata b arbojn Ne devu konfuzi kun binaraj arboj, ke nur fari ĝin pli rapide serĉi io logaritma naturo. Sed la prezo vi pagas por konstrui ke trajto, ke datumstrukturo en memoro, estas pli bajtoj. Do ĝi povus preni iom da megabajtoj, kelkaj gigabajtoj, kiu scias? Ĝi dependas de la datumoj. Do je iu punkto, vi devos decidi, ĝi estas probable ne komuna kazo. Do kio estas la reala komuna kazoj, se vi vere devis elekti, kio povus viaj preferataj kampoj estu? Retpoŝto. Kaj mi ŝatas retpoŝto ĉar retpoŝto, en teorio, devus esti unika. Kaj tiel tipe, kiam vi scias anticipe, ke unu el viaj kampoj estas aŭ estos solaj, kiuj inklinas esti bona kampo serĉi plu, ĉar tiu maniero, kiam vi serĉi ion, vi tuj reiri aŭ nulo respondojn kaj tiam vi faris. Vi ne devas teni serĉas ankoraŭ aliaj. Kaj tial en tiu kazo tie, retpoŝto, tiel longe kiel vi ne povas enskribi dufoje kun la sama email, estas bona. ID laŭdifine en la komputiko mondo, Se vi parolas pri ID, ke prefere estu unika. Tio estas speco de la konotacio de ID aŭ identigilon. Kaj la resto de tiuj povus esti, ni nomas ilin agrable haves, sed ne vere bezonata. Kaj tiel en datumbazo, vi specifas indeksoj, sed vi povas esti eĉ pli preciza. Vi povas diri, hej, datumbazo, certigu ke ĉiu ID en tiu tablo estas unika. Ne lasu programisto hazarde metis en duplikaton retpoŝto aŭ duobligi ID nombro. Tiel kiel enums protekti nin simile, vi povas havi tiujn malalta nivelo defendoj. Kaj tiel datumbazo dezajno, en Iusence, estas speco de amuzo, ĉar vi faras ĝin defensive. Vi ia supozas ke vi laboras kun terura, terura programistoj kaj vi volas meti en kiel multaj defendoj kiel vi povas protekti vian datumon, sed samtempe vi volas helpi ilin plenumi bona elektante kiu kampoj optimumigi por. Sed vi povas ne nepre faru ĝin vakuo kiel ni ia trovas tie. Vi devas scii kion estas tiuj komunaj kazoj esti. Se la programistoj estas efektivigado adreslibro, vi eble tre bone volas povi serĉi en preskaŭ ĉiu kampo, nur naturo de la apliko. Do eble vi elspezas ke kroma spaco. Bone, demandojn? Yeah. Spektantaro: [inaudible] DAVID Malan: Ne Spektantaro: [inaudible] DAVID Malan: Bone. Spektantaro: [inaudible] DAVID Malan: Ha, do ni parolas en maniero nun ke estas tute lingvo agnostikulo. Tiel ni parolas nun pri rilata datumbazoj pli ĝenerale, aŭ SQL datumbazoj pli ĝenerale. Spektantaro: [inaudible] DAVID Malan: Pli bona vorto por uzi estas, povas esti uzata de iu ajn lingvo. Do mi povas skribi kodo JavaScript, C kodo, C ++ kodo, Java kodo, Rubeno kodo, ĉiuj el kiuj parolos al datumbazo kaj ekzekuti demandoj. Fakte, tio ne estas malbona segue al ekzemplo demando. Kaj denove, ni ne tuj eniri en Java aŭ C ++ aŭ ajna de tiu anymore, sed en SQL, la lingvo al kiu mi tenas raportante, Strukturita Query Language, tio mem estas programlingvo, sed ĝi estas signifita esti uzita por neniu surprizo, strukturita serĉvorto demandoj. Por tiu mi volas diri. La vojo vi elektas datumoj de MySQL datenbazo Estas vi laŭvorte entajpi vian programon io kiel unuaranga stelo de uzantoj. Mi supozas ke ĉi tablo nun nomiĝas uzantoj. Mi povus nomi ion ni volas, sed tian havas sencon. Kaj tiel unuaranga estas tre komuna verbo, se vi volo, en SQL, kiu laŭvorte faras tion. Kion vi pensas stelo signifas en tiu kunteksto? Spektantaro: [inaudible] DAVID Malan: Mi bedaŭras? Spektantaro: [inaudible] DAVID Malan: Ne postulita, ĝi estas pli inkluziva ol tio, fakte. Ĝi estas la Ĵokero. Stelo preskaŭ ĉiam signifas ion, do tio signifas, en tiu kazo, Elekti ĉion de la datumbazo. Do kiam mi diras tion, mi volas diri redonu al mi ĉiun kolumnon mia tablo nomas uzantojn. Tial donu al mi rezulto aro, kiel ĝi nomiĝas. Alivorte, al mi kopion de la kalkultabelo, estas kion mi celis. Sed se mi diras unuaranga stelo de uzantoj kie ID egalas 1, kiom granda estas la deziro mia rezulto aro estu do? Aŭ ekvivalente, kiom da vicoj devus Mi transdonos reen de la datumbazo? Probable nur unu, se mi havas ja traktita ID kiel identificador sola, kaj se Davido havas tiun unikan ID, mi devus reiri kaj nur unu vico enhavas ĉiun David informo. Se mi diris tiu kie ID egalas 99, mi devus reiri, en tiu kunteksto, nul vicoj, almenaŭ nuntempe. Tamen, se mi ne vere zorgas pri cxio, kion informon, Mi povis nur diri, kie David vivi? Unuaranga poŝtkodo de uzantoj kie ID estas 1. Ĉi elektos min nur David zip kodo kaj ne la tuto de tiu vico. Kial povus mi tion faras anstataŭ la stelo konsulto, la sovaĝa karto? Spektantaro: [inaudible] DAVID Malan: Jes, mi nur bezonas ĝin. Do agado estas denove la respondo tie. Kial peti pli informo ol vi bezonas, ĉar eĉ se ĝi estas bone kune, Vi ankoraŭ devas kopii tiun datumon, ĝi ŝajnus, el la datumbazo en via programo iel, kaj tio estas nur stulta se vi nur bezonas kvin de tiuj ciferoj, Ne la tuteco de la vico. Do kiel mi enmeti uzanton? Supozu ke uzanto havas nur registrita por la unua fojo. La sintakso kutime aspektas kiel ĉi tio. Enmeti en uzantoj kaj tiam ni dirus valoroj, kaj tiam ni dirus valoroj kiel, ni diru, Lauren Scully, nia videografer tie. Kaj la sekva kampo estas genra. Do ni diru citaĵo, unquote "F", do ni havas ID kaj mi tuj say-- ni ŝajnigi ŝi ne vere tie, do ni malantaŭenigi en la rakonto. Do 2 estos ŝia ID. Kaj tiam la sekvanta kampo tie estas ŝia retpoŝto. Do ĝi estas tuj estos kiel Lauren Scully kaj tiel antaŭen, kaj ni simple dot dot dot ĝin for de tie sur. Nun ricevos iom teda, sed la enigaĵo informpeto finfine aspektas tiel. Se mi volas forigi Scully, uh-oh, ni deregister ŝi, ŝi forigas sian konton, forigi de uzantoj kie ID egalas 2, estos forigi Scully. Aŭ mi povas diri ĝisdatigo uzantoj enkadrigeblajn diru, kion ni povus ŝanĝi? Supozu ŝi movas. Aro zip egalas 021-- nope, jen ŝia nuna zip. 90210. La sola alia poŝtkodo Mi scias en la mondo. Tial ŝanĝus ŝi zip code-- fakte, kiu ne ŝanĝas sian poŝtkodo. Kion mi nur faru? Kvankam la sintakso estas verŝajne nova. Spektantaro: [inaudible] DAVID Malan: Jes, mi movis ĉiujn Beverly Hills, Kalifornio. Do mi devus reale diru kie ID egalas 2. Kaj tiel plu. Tiel SQL estas ĉiuj pri tiuj specojn de instrukcioj. Elektu, enigi, forigi, ĝisdatigi, kun tiuj predikatoj fine tiuj kie klaŭzoj, por tiel diri. Kaj ekzistas multe pli vi povas fari, sed vere nur abscesoj malsupren simple, se arcanely, esprimante kion vi volas ke la datumbaza fari. Kaj tiam la datumbazo estos eltrovi, kiam enigata Lauren Scully en la datumbazo, kie meti ŝin en memoro tiel ke ni povas tre rapide akiri ŝi surbaze sian retadreson aŭ bazita sur ŝia ID numeron aŭ simile. Yeah, Dan. Spektantaro: [inaudible] DAVID Malan: Vere bona demando. Ĉu tiuj skriptoj ŝanĝi de Microsoft Aliro al Orakolo al MySQL PostgreSQL? La mallonga respondo estas ĝi dependas. Teorie, estas tre signifa komuna subaro de SQL kiu estas dividita trans ĉiuj de tiuj implementaciones. Tamen, diversaj fabrikantoj havas aldonita karakterizaĵoj al siaj datumbazoj fari certajn aferojn preter la atingo de ĉi tiuj karakterizaĵoj, kiuj povus, fakte, rompi. Tial la maniero programistoj heĝo kontraŭ tiu, estas ke anstataŭ skribi krudan SQL kodo kiel mi skribas ĉi tie, ili anstataŭe uzas bibliotekon, komuna biblioteko kiu mem estas speco de alta-nivelo kaj resumoj for kiu produkto vi uzas. Kaj ĝi donas al vi funkcioj kaj procedoj voki por ke vi neniam reale skribi krudan SQL. En teorio, do vi povas ŝanĝi produktoj de Oracle al Microsoft aŭ inverse aŭ nenion alie, kaj vi laŭlitere ŝanĝi nenion pri via kodo. La realaĵo, tamen, estas, vi foje rezigni karakterizaĵoj kiel rezulto. Vi eble elektis produkton ĉar ĝi estas atingis tiujn aldonvaloro karakterizaĵoj, kaj vi estas nur nun ne uzante ilin konscie. Kaj anekdote, plej kompanioj emas neniam malproksimigi de sia datumbazo. Do dum tiu estas agrable havas funkcion, la realaĵo estas, se vi reformu via datenbazo, vi estas verŝajne farante aroj da aliaj ŝanĝoj ĉiukaze, ke vi ne nepre bezonas anticipi tion. Do ĝi estas defendeble super-inĝenierio la problemon, sed vere dependas de la kunteksto. Sed en teorio, SQL estas dividita trans tiuj diversaj produktoj. Vere bonaj demandoj. Yeah. Spektantaro: [inaudible] DAVID Malan: Jes, do vi povas pensi datumbazo estas nur servilo, fine de la tago, kaj ene de tiu servilo estas tuta aro da tabloj, vicoj kaj kolumnoj. Kaj kiam vi sendos serĉvorto ŝatas tion de via programo, retpagxon, skribita en Java, Ruby, Python, kio ajn, la servilo ricevas tiun komandon kaj interpretante ĝin en laŭlitere la sama maniero ni diskutis antaŭe kun interpretitaj lingvoj, kaj tiam elfarante iun agon sur nulo aŭ pli vicoj en nulo aŭ pli tabloj. Spektantaro: [inaudible] DAVID Malan: Ĝuste, ĝuste. Tial la _pseudocode_ por io kiel tiu povus esti tiu. En via PHP-dosiero aŭ via Python dosiero aŭ via Java dosiero, vi havus _pseudocode_ kodo, aŭ Grataĵo-similaj blokoj kiel, se uzanto vizitoj acme.com/register~~V por unua tempo, tiam enmeti en uzantoj kaj tiel antaŭen. Kaj ni devus traduki tion pli konkretan kodon en la fino. Sed vere, ni devas ĉiuj la konstruelementoj tie, kvankam ni saltante iuj de la efektivigo paŝoj. Do lasu min riproĉos al kion ni mirinde faris nur antaŭ momento. Vi kreis belan kompleta tablo por uzantoj. Certe, ni povus apliki en kelkaj malsamaj manieroj, sed vi fakte kondukis nin malsupren la path-- kaj mi diras al vi, sed estas probable mia fault-- de sufiĉe ineficiente datumbazo efektivigo. Ĝi ne normaligis. Kaj de ununormigita mi volas diri tie tuj estos, super tempo, signifa redundo, kaj do senefikeco, ke estas malŝparo de spaco. Surbaze nur kion vi vidas tie, ne povas vi imagi kie tiu malŝparo de spaco tuj venas, tra la tempo, kiel pli kaj pli uzantoj registriĝu por via retejo? Kio datumoj farigxu redunda? Spektantaro: [inaudible] DAVID Malan: Kial vi tion diras? Spektantaro: [inaudible] DAVID Malan: Jes. Kaj ni supozu por la celoj de hodiaŭ ke tio estas vera. Rezultas, kaj ni lernis tiun la malmola vojo, kiu ne estas vera. Iel multnombraj urboj havas, iel, la sama poŝtkodo, kiu rompas tiun mirindan intuicio. Sed ni supozu, ke vi pravas, ĉar ĝi estas preskaŭ ĉiam vera. Do supozu ke poŝtkodo estas ĉiam asociitaj kun la sama urbo kaj stato, kiu estas speco de racia supozo, sed malĝusta, rezultas. Sed racia supozo por hodiaŭa celoj. Tiam supozas ke mi loĝas en Cambridge, MA, laŭ tiu uzanto tablo, kaj supozu ke Lauren Scully vivas en Cambridge, MA, kaj supozu ke Kareem vivas en Cambridge, MA, kaj Arwa vivas en Cambridge, Ma, ni ĉiuj en 02138. Kial ni memorante Cambridge, MA, 02138 por ĉiuj kvar el ni? Kio devus sufiĉi memori? Spektantaro: [inaudible] DAVID Malan: Ĝuste la poŝtkodo. Nur ke 02138 ekzistas, ĉar vi scias kion ni povus fari? Ni povus akiri iom imago tie kaj super tie, difini alia tablo kie ĉi tiu tuj estos la nomo, ĉi tiu tuj estos la tipo, ĉi tiu tuj estos la longo, kaj nun, mi estas tuj nomas tiun mian urboj tablo. Tiu estas nomata de Kompreneble, mia uzantoj tablo. Do kion mi metis ĉi tien cxar mia urboj tablo, vi pensas? Spektantaro: [inaudible] DAVID Malan: Jes. Tiel usona kaj ŝtato kaj urbo. Kaj tial la tipo tie, ni diru ĉi tiu tuj estos char 5 denove, subjekto al la debato de pli fruaj. Tio estos enumeracian, eble kiel antaŭ kaj urbo estos varchar 50. Do nun, kion mi akiras viŝi de ĉi tablo forigi tiun senefikeco? Spektantaro: [inaudible] DAVID Malan: Nice. Ŝtato kaj urbo foriros, do mi havas nun forigis la potencial senefikeco por redunde memorante, Cambridge, MA, Kembriĝo, MA, Kembriĝo, MA, Kembriĝo, Ma, kiu, espereble neniam tuj ŝanĝos. Kaj eĉ se ĝi faras, ĝi estas minorly ĝena, nun ke mi devas ŝanĝi en multnombraj vicoj, dum ĉi tie, mi povis nur ŝanĝi ĝin en unu loko. Nun kio estas la komerco-off, eble? Tio estis la super oportuna. Havis ĉiujn miajn datumojn bele kune. Sed kio estas klare la kazo nun? Spektantaro: [inaudible] DAVID Malan: Ĝuste, kaj mi estas ĝoja vi uzis la vorton aliĝi, ĉar tio estas vere la ŝlosilvorto, en la mondo de rilata datumbazoj en SQL, ĝi estas fakta vorto vi povus tajpi aŭ almenaŭ transdoni. Kaj fakte, kion ni nun devas fari elekti David plena informo io kiel unuaranga stelo de uzantoj, aliĝu urbojn on-- kaj nun Mi tuj simple movi al dua linio tiel ke ĉi fits-- users.zip egalas cities.zip, kie users.ID egalas 1. Do kio okazas? Ĝi estas malbela rigardante, sed vi povas ia legi gxin maldekstre dekstren, supre sube. Unuaranga stelo de uzantoj Estas la sama kiel antaŭe, sed ne de uzantoj, por se. Estas de uzantoj aliĝi urboj. Kion mi kunigi tiujn du tabloj sur? Nu, ŝajne, la uzantoj tabloj usona kampo, kaj ĉi tiu periodo estas nur speciala sintakso por esprimi tiun ideon, kaj tio estas la urboj tabloj usona kampo. Mi volas tiuj du esti egalaj, sed mi volas finfine elektu nur tiuj vicoj kie ID en la uzantoj tablo egalas 1, kiu pasis al esti miaj. Kaj nur por esti klara, oni programisto, tipe kiam hardcode ion kiel la nombro 1, ĉar alie la retejo nur Elportas Davido aŭ la unua uzanto, vi anstataŭe fari io kiel ID, kie tio reprezentas variablo, iu kiu povas ŝanĝi super tempo, simila spirite al kion mi diris antaŭe kun tiuj specoj de variabloj. Sed nuntempe ni simple hardcode ĝin kiel 1. Kaj tiel kion tio signifas? Nu, bela maniero bildigi ĉi estas ke se tiu mano estas la uzantoj tablo, kaj tiu mano estas la zips tablo, ni ia finding-- kaj la pintoj de miaj fingroj estas zip tien, kaj la pintoj de miaj fingroj jen zip, vi estas speco de interplektitaj ĝi por ke vi reiros la rezultanta originala tablo de vere aliĝado la du tabloj sur la komuna kampo. Kaj ĝi ne devas esti zipo. Ĝi povus esti plej io alia, sed poŝtkodoj estas bela, ĉar unu, ĝi estas mallonga, du, ĉiam la sama longo, do ekzistas vera efikeco al kio Olivier proponis tie kun faktoranta ekster la zip, kaj [Inaudible] proponante ke ni seniĝi de urbo kaj ŝtatoj. Do tiu estas la procezo konata kiel normaligo. Demandojn sur tio? Nu mi atentigas tiu estas la klaso de aĵoj, kvankam ĝi estas sufiĉe malalta nivelo, tiu diskuto, ke vi pensus vi speco de prenanta perdita en la maleza, tio estas demonstracio de ampleksaj ŝanco por programistoj esti malbona. Kaj fakte, ecx kiam ni, en kursoj mi instruis, kiam ni havis, ekzemple, sensperta bakalaŭra programistoj konstrui retejojn, unuavide, la retejoj povus aspekti terura. Kaj ili havas ĉiujn funcionalidad ni petis, la programistoj faris bonan laboron. Sed ne nepre scias sufiĉe pri datumbazo dezajno aŭ ili ne pensis malfacila sufiĉe pri la tipoj de datumoj kaj la tipoj de uzantoj la retejo tuj havos, kaj ni do trovas ses monatoj poste, post ili is studentiĝis aŭ pluiris, ke damn it, nia retejo Estas vere, vere malrapida. Kaj mi eĉ ne parolas pri havi milionoj aŭ miloj da uzantoj. Mi signifas kelkcent uzantojn sur kampuso, kiuj ĉiuj deziras, ekzemple, butiko por kursoj ĉe Samtempe, ili estas uzante tiu kurson katalogo apliko menciis kaj la afero fariĝas vere malrapidigi ĉar ekzistis neniuj indeksoj. Ekzistis neniuj ruĝaj steloj, tiel paroli, aŭ ni ne nepre faktorita el komunaj datumoj akiri iuj ŝparadoj de spaco. Kaj do kiam vetting desarrollador aŭ datumbazo persono aŭ simile, la specoj de demandoj pensi tra eĉ kiam revizianta ies kodo, diri, ne nepre aspektas tra ĉiuj ilia kodo, sed diru, ni rigardu tra la datumbazo tabloj. Kion vi stokante? Kaj tiam diri, nu, atendu minuto, kial vi uzas entjero? Kio se ni havas 4 miliardoj kaj 1 de tiuj vicoj? Kaj tiuj specoj de demandoj estas ŝanco al speco de retroigi kaj akiri senton de, kie se vi ne estas komforta fari ĝi, havanta iun pli teknika demandu tiujn demandojn, ĉu aŭ ne la persono vere scias ilian aĵon. Kaj tio estas la speco de aĵoj ankaŭ, ke homoj sur la interreto kiu estas memlernanto, eble lerni malpli ofte, ĉar vi ne nepre renkontos lin tiel, ĉar vi povas akiri la datumbazo kaj kurado, sed se vi ne legis sur lernilojn aŭ estis sciigis pri datumbaza normaligo kaj indeksado kaj agado, tiuj estas la specoj de aferoj kiu tuj damaĝos vin. Kaj eble vi pensas, aŭ malbona inĝeniero dirus, ho, nu, ni pli bone salajro cxar pli granda datumbazo aŭ rapida datumbazo aŭ simple ĵeti monon pro tio, vertikale skalo, ne nepre tiel. Se vi iros in-- kaj vi povas iri en post la fact-- kaj aldonu indeksoj, kaj ĝi povus preni kelkajn horojn por la datumbazo por konstrui tiun novan datumon strukturo kiu mi aludis al pli frua, vi povas ankoraŭ korekti tion post la fakto, ke ĉi tiu estas kie vi komenci distingi bonaj diseñadores de malbona diseñadores, ne nur estetike, sed agado-saĝa tiel. Demandojn? Ne? Tiel por NoSQL, kiu estis la alia tipo de datumbazo al kiu mi aludis antaŭe, vi ne havas vicoj kaj kolumnoj. Anstataŭe, vi havus ion kiu aspektas iom pli kiel ĉi. Mi tuj uzi komunan sintakson. Krispa krampoj hazarde uzebla ĉi tie sufiĉe multe. Vi povus havi ion kiel antaŭnomo estas David, vi povus havi fina nomo estas Malan, citaĵoj, vi havu ID is-- Pardonu min, whoops-- ID estas 1, retpoŝto estas malan@harvard.edu, kaj mi ne volas ĝenas tajpi eksteren la reston, kaj tiam iuj aliaj aferoj. Alivorte, tiu estas laŭteksta reprezento kion ni ĝenerale nomas objekto en komputila programo. Kaj objekto estas ĝenerale nur kolekto de ŝlosila valoro paroj. Do denove, ĉi temo recurrente. Ni vidis ŝlosilo valoro paroj en HTML, ni vidis ŝlosilo valoro paroj nun en la kunteksto de datumbazoj, kaj ni vidis ŝlosilo valoro paroj en la kunteksto de, mi kredas, lingvo pli frue hodiaŭ. Tenas venanta supre. Kaj efektive, jen vere kio datumoj reduktas al: datumoj kaj metadatos aŭ valoroj kaj ŝlosilojn, respektive. Tial ne-interrilata datumbazo, io bazita sur objektoj, kie vi nur areto ĉio kune kaj metis ĝin en memoro, estus ĝenerale bildigita kiel, aŭ pensis, kiel ĉi. Kaj mi lasos tion nun kiel ia alternativa alproksimiĝo. Kaj oni ne nepre bona ol la aliaj. Fakte, tre en boga tiuj tagoj estas datumbazo sistemoj kiel MongoDB kaj Redis kaj kelkaj aliaj tiaj iloj, libere havebla, sed ili estas ĉiam en modo. Parte ĉar ili proponas aldonan karakterizaĵoj super tiuj tabular alproksimiĝoj, sed ankaŭ ĉar ili estas iom pli facila uzi, ĉar vi ne devas opinii tiel forte pri multajn tiujn dezajno decidoj. Tiel plusoj kaj minusoj. Do realigi ekzistas ebloj preter kion ni ĵus pasigis tempon sur. Do ni faru ĉi. Ni transiro iom reen nun por ttt programado, tiel ke ni ia konkludi hodiaŭ kun io ke estas iom manoj-sur, plenigante en kelkaj breĉoj de hieraŭ. Mi iros al tiu unua. Do memoru, ke hieraŭ ni havis iuj kanonaj HTML paĝoj kiuj havis komence, nur HTML, kaj tiam due havis CSS, kaskadan stilo littukojn. Jen nova etikedo kiun ni ne vidi hieraŭ, aŭ loĝi sur, tn skripto etikedo. Rezultas vi povas reale enkorpigi lingvo nomata Javascript en via retejo paĝo kaj fari via retejo paĝoj fari ion. Do kion mi volas diri per tio? Nu, lasu min antaŭeniri kaj ĵus prunteprenos tiun kodon dum momento. Mi tuj iros en Cloud9, ne necesas iri tien vi nur ankoraŭ, kaj mi tuj nomas tiun alert.HTML. Mi tuj almeti en mian dosieron ĉi tie. Kaj simple klarigi kion mi faris, lasu mi iros al tiu adreso kaj iri al alarmi, kaj vi vidos la Hello World. Sed ĉi tiu estas speco de underwhelming. Mi volas fari ion iom malsama. Do mi tuj efektive fari tion. Mi tuj iros tien kaj, kaj intere mia skripto etikedoj, diru garde ( 'saluton, mondo "); tiel avizo ĝi estas iom fuŝa, sed mi havas HTML, ene de kiu estas lingvo nomata Ĝavoskripto, kaj tio estas kio nomiĝas funkcio alvoko aŭ proceduro nomita. Tio estas verbo, laŭvorte, en tiu kazo, kaj mi alpreĝi kodo funcionalidad ke iu alia skribis. Por ke funcionalidad estas garde, do ni iru al tiu paĝo nun kaj klaku Reŝarĝi, kaj nun vi vidi iom de interactividad. Ĝi estas speco de malnova lernejo kaj malbela. Tian memorigas vin pri la popo-ups, eble, de la pasintaj tempoj sed ja faris ion iom pli programita. Tiom pli, ni faru io pli interesa. Mi iros tien kaj forigi ĉi. Kaj mi tuj iros antaŭen kaj krei formon kiel ni faris hieraŭ. Reale, vi scias kion? Mi tuj iros en google.html, kiun ni komenciĝis hieraŭ, kiu similis tiu, tra kiu ni serĉis kato Sed rimarkas ke estas speco de bug en la nuna versio. Ĝi funkcias por katoj, sed supozas ke Mi ne kunlabori kaj mi tajpas nenion, kaj mi simple klaku submetiĝi. Tio estas speco de stranga konduto. Prenis min al la reala Google, ne donis al mi erarmesagxon. Mi ŝatus diri la uzanto vi devas doni al ni valoron. Do kiel povus ni faru tion? Nu lasu min iri reen en Cloud9 kaj lasu min iri en la supro de mia paĝo kaj aldoni skripto etikedo kiel tiu, kie Mi tuj tajpi iun kodo JavaScript. Kaj mi tuj faru la sekvajn. Se (document.getelementByID-- kaj revokon ke ni parolis pri tio antaŭe, domadministranto. Kio ID mi volas? Mi volas ricevi q, kaj mi tuj diru egalas nenion, kiel this-- fakte mi uzas citiloj nur por consistency-- egalas nenion, tiam garde ( "Bonvolu tajpi informpeto") tie. Do mi havas kio ŝajnas esti iu kiel kondiĉo. Ni vidis ĉi ĝenerala ideo en Scratch. Estas kiel unu el tiuj enigmo pecoj kiuj similis tion. Kaj kion mi diras? Nu, cxi tie, rimarki Mi tuj fari la sekvan. Mi tuj donos al ĉi formularo kampo ne nur nomo de q, kio estas kio ricevas pasis al Google, sed mi estas ĝin donacos loka ensalutilo, ankaŭ nomita q. Sed mi povis nomi tiun ion mi volas, mi simple tuj teni ĝin simpla kaj ankaŭ nomas ĝin q, nur por simpleco. Nun mi intencas fari iu iom pli. Sur la formo kampoj tie, mi tuj aldonu kio nomiĝas okazaĵo traktilo. Sur submetiĝi, mi volas nomi funkcio nomita validigi. Tiu ne ekzistanta, tiu vorto, aŭ tiun verbon validigi, ĉar kion mi tuj faros supren tie nun estas aldoni iom da kodo. Mi tuj diru funkcio validigi. Mi tuj krommargxenu tiun kaj aldoni alian krispa krampoj tie kaj alia tie. Konsideri kion tio nun faras. Mi havas now-- pensi ĉi tiel kreis mian propra puzlo peco kiu ne antaŭe ekzisti, kaj mi alvokis tiun enigmon kunligi la validigi enigmo peco. Lia celo en la vivo estas ekzekuti la kvar linioj de kodo ene de ĝi. se document.getElementByID tiel koncepte, kiu tuj eniros en la elemento, la HTML elemento kies sola ideo estas simple q, kaj tiam eĉ se la sintakso aspektas iom stranga, ke egalas egalas nur signifas egalaj. Do tio signifas ke la ero kun la identificador sola de q, kiam alvenas, havas valoron, ĝi simple egalas citaĵo unquote, nenio ekzistas, tiam kion mi volas fari? Mi volas krii ĉe la uzanto. Kaj ni ne iros tre detale tie. Mi tuj revenos falsaj. Ke estas eraro. Alie, mi tuj revenos vera. Do ĉu ĝi laboris aŭ ĝi ne faris. Falsa aŭ vera. Kaj nun se mi ne faris neniun eraron, lasu min konservi tiun kaj reŝarĝi ĉi. Kaj lasu min nur duobla ĉeko ke Mi ne, fakte, faras neniun tajperarojn, do mi ne embarasi min. Ni vidu se tio funkcias. Do nun mi iros por tajpi katoj. Ĝi ankoraŭ funkcias, aŭ duono verkoj, almenaŭ. Nun lasu min reŝarĝi ĝin, kaj nun lasu mi provos sendado sen tajpi ion ajn damn it, ĝi rompis. Unu momento. Lasu min malfermi la konzolo, [Inaudible] ensaluti, reŝarĝi la paĝon. Mi provu ĉi denove. Ho, malbenita ĝi. Mi forgesis. Mi faris tajperaron. Mi memoras kion ĝi estas. .value. Mi intencis diri, se la valoro de la elemento kies ID estas q egalas tio, tiam krias al la uzanto. Do nun lasu min teni mian spiron denove. Tie ni iru. Tie ni iru. Bonvolu tajpi konsulto. Do ĝi ne estas lasanta min tra. Mi povas esti speco de ludema kun tiu, kaj anstataŭ kontrolanta por neniu valoro, Mi povas diri ion kiel, ne plu sercxis katoj, kaj nun ni povas simple pli ludeme lasu la uzanto serĉo hundoj se li aŭ ŝi volas, aŭ se mi iros tien kaj serĉi katoj, nun mi ne povas. Do kio estas la takeaway tie? Do, ni jam enkondukita en nia mondo de HTML kaj CSS, programado funcionalidad. Mi povas reale nun faras decidojn en kodo. Antaŭe, ĉiuj mi povus fari estas marki supren teksta enhavo aŭ grafika enhavo kaj rakontu kion serĉi kiel kaj kie montri. Nun mi povas vere demandas demandoj de la retpaĝo kaj faras decidojn surbaze sur gxi, kaj instigas la uzanton se mi devas krii al li aŭ ŝi. Do ni provu ion sur nia propra kun tiu. Antaŭen, lasu min malfermi la proksima glito tie kaj simple montri unu afero. Samkiel kun CSS, ni povas faktoro ekster nia JavaScript kodo al aparta dosiero, Vi povas fari la saman aferon kun JavaScript kiel kun CSS. Kaj vi uzas tiun uzante fonto atribui la skripto etikedo. Sed ni ne kompliki aferojn nun. Anstataŭe, se vi povus iru ne ĉi paĝo, sed- lasu min movi tiun ĉirkaŭe en order-- iru, se vi povus, ĉi paĝon tie. Ĉi URL tie. Ĝi estas en hodiaŭa diapozitivoj. Vi eblas devi reŝargi ĉar Mi aldonis paron de afero. Sed tien, kie iuj enigmoj atendas. Kaj tio donos al ni okazon, en iomete pli amuza kunteksto, dabble kun iuj Javascript. Kiam vi venos tien, Mi klarigos kio atendas. Akiri verdan. Starigis blua. Aroj verda aroj ruĝa. Oops. Pardonon. Tio estas la mezuro de nia dokumentado por tiu defio. Kaj ĉi tiu tuj laboros jene. Do kion vi havas sur ĉi paĝo estas tuta aro artiste enigmojn de amiko Stanford University. Do kion vi vidas ĉi tie estas preskaŭ ia unu el tiuj magiaj okulo enigmoj, sed se vi simple rigardi ŝin, nenio tuj krevi ĉe vi. Prefere, io kaŝita en tiu bildo. Kaj ĝin kaŝis en la jena maniero. Bildoj, kiel vi eble scias, povas esti kunmetita de nur tri koloroj. Iuj ruĝaj, iuj bluaj kaj iuj verdaj. Kaj ni povas fari ĉiujn koloroj en la ĉielarko miksante tiujn tri kolorojn iel. Do ĉi aspektas plejparte verda kaj blua, sed kiel Nick diras tie, tiu fera enigmo bildo estas enigmo. Ĝi enhavas statuon ion fama tamen la bildo estis distordita. La fama objekto estas en la ruĝa valoroj. Tamen, la ruĝa valoroj havas ĉiujn estita dividita per 10. Do ili estas tro malgrandaj je faktoro de 10. Do alivorte, Noĉjo prenis originala bildo, kaj li desaturated ĉiuj de la ruĝaj de ĝi, malsuprenirante la kvanto de ruĝa inko, se vi volas, en ĝi. La blua kaj verda valoroj estas ĉiuj nur sensignifa, hazarda valoroj, alinome bruo desegnita nebuligi la reala bildo. Do kio Nick faris estis li kolorigita malsupren la ruĝa kaj tiam li nur ĵetis hazarda kvantoj de blua kaj verda ĉe la bildo al ia obskura kio estas vere ankoraŭ ekzistas. Vi devas malfari tiujn distordojn riveli la bildon. Unua, starigis ĉiujn bluajn kaj verdajn valoroj al nulo por akiri ilin de la vojo, kaj rigardu la rezulton. tiam multipliki ĉiun ruĝa valoro de 10, grimpanta reen ĝis proksimume ĝia fina valoro. Kio estas la fama objekto? Do vi ĉiuj havas tiun rektangulo en via retumilo ĝuste nun. Kaj rimarki ke ekzistas iuj startigilo kodo, por tiel diri. Tio estas JavaScript kodo ke Nick skribis por vi. Kaj rimarki ke ekzistas linion en la mezo ke komenciĝas kun oblikvo oblikvo, tio kio ĝenerale nomis komenton. Signifas ĝi estas frazo por la programisto kiu ne havas funkcian signifon. Estas nur vida cue al la homa. Do vi povas iri antaŭen kaj forviŝi nur tiu linio, kaj esti super atenti ne forigi aŭ ŝanĝi ion ajn. Kaj lasu min nur piediri vin tra kion tiu kodo faras kaj mi lasos ĝin vin elkompreni la sekreta bildo. Tiu unua linio tie ke mi havas nur emfazata donas la sekvan. Sur la maldekstra flanko, vi havas kio nomiĝas variablo kiu Nick havas arbitre, sed racie nomitaj im por bildo. Sur la dekstra flanko de tiu egalsigno, li diris al mi novan citaĵo, unquote "simpla bildo". Simpla bildo, en ĉi tiu kunteksto estas kio nomiĝas klaso, nu, ĝi estas speco de kiel class-- teknike prototype-- sed vere, tio donas al mi novan celon, la enhavo de kiu estas la dosiero, fero-puzzle.png. Alivorte, Nick kreis tiu nocio de simpla bildo tiel ke ni povas, por pedagogiaj celoj, ludas kun la bildo kaj ŝanĝi lia ruĝa, verda, kaj blua valoroj. Kaj kiel ni faras tion? Ĉi iom kamufla sintakso tie Estas ia kiel la ripeto bloko ke iuj el vi vidis en Scratch frue hodiaŭ, kie vi povas ripeti 10 fojoj. En tiu kazo, Nick havas ne hardcoded nombro kiel 10. Anstataŭe li diras pravalorizi variablon nomitan x al 0, kontrolu se x estas malpli ol la larĝo de la bildo. Kaj tiel esti pli taŭga, bildo estas la variablo, punkto signifas iri ene de ĝi kaj trovi ĝian larĝo, kaj tiam malfermita paren, fermis paren estas nur programisto vojo diri ĉi estas funkcio. Tio estas proceduro. Tiu estas funcionalidad iu alia skribis. Uzi ĝin kaj doni al mi respondon. Kaj tiam x ++ estas ornama metodo de dirante, post vi faris tiun fojon, pliigo x per 1. Alivorte, tiu estas programisto vojo de induktante buklo tio tuj persisti super ĉiuj kolumnoj en bildo. Bildo estas nur krado de dots, vicoj kaj kolumnoj de punktoj. Tio estas vojo de ripetanta super ĉiuj tiuj kolumnoj. Kaj interne, dume, ni ripetanta super la montetoj tie kaj tie ĉi kaj tie. Do tio estas nur maniero de traipsing, preskaŭ kiel maljuna lernejo tajpilon, nur iri trans la tuta bildo ripete. Eĉ tio ne tute plene klara, nur prenu sur fidon por nun, ke tiuj tri linioj de kodo kune estas tuj permesos al ripete rigardi ĉe ĉiu bildero, ĉiu pentras en la bildo. Kio estas pikselo? Nu, por esti klara, se oni konsideras ĉe la origina kaj zomi, se vi vere metis la okulojn al la komputila ekrano, jen nur tutan faskon da punktoj, pluraj mil punktoj pakitaj kune tie. Kaj do kion vi celas fari? Ĉiu el tiuj punktoj, fina difino, estas la rezulto de kio estas ĝenerale nomita RGB, ruĝa, verda, blua, kiu denove, povas esti kombinitaj por doni vin ajna nombro da koloroj. Fakte, se vi memoras el multaj, multaj jaroj, projekciilo ekranoj kiel tion kutimis havi ne unu lenso sed tri. Unu el ili kracxis el ruĝa lumo, unu el ilin kraĉi verda lumo, unu el ili kraĉi blua lumo. Kaj se vi estis en meza lernejo kiel mi estis kie ili neniam konvene vicigitaj, vi estis ĉiam rigardante historio filmoj kiuj estis iomete distorsionadas, ĉar la tri koloroj ne kombinante adekvate. Sed rezultu ke ĉiu el tiuj valoroj ruĝa, verda, kaj blua, povas havi kelkajn asociita kun ili. Ekzemple, 0 por ruĝa signifas neniu ruĝa, 0 por verda signifas ne verda, kaj 0 por bluo signifas ne blua. Do se vi ne havas ruĝan, ne verda, kaj neniu blua, kio koloro vi havas? Spektantaro: [inaudible] DAVID Malan: Vi volus esperas, ĝi estas blanka. Bedaŭrinde, ĉi operates-- bedaŭras? Spektantaro: [inaudible] DAVID Malan: Do vi efektive havas nigran, tiukaze. Do se vi havas neniun el tiuj koloroj ŝaltitaj, vi havos nigraj. Tamen, se vi havas, ni diru multe de ili, kiel multajn ruĝajn, 255 el tio, multajn verdajn, kaj multajn el blua, kiuj estas blankaj. Tiuj estas la du ekstremoj. Do per tiu logiko, se mi havas multajn de ruĝa kaj ne verda kaj neniu blua, kio koloro estas tio? Spektantaro: [inaudible] DAVID Malan: Bone, evidente. Kaj tiam ne ruĝa, multajn verda, ne blua, tiam se vi have-- bone, ni simple fini ĝin, nur ĉar, sed tiu, kompreneble, nun estas blua. Kaj nun vi povas kombini tiujn kolorojn. Nun kiel flanken, se iu el vi havas ajn faris iu reala retejo dezajno, vi povus reale vidi simbolojn kiel tiu. FFF-- kaj fakte, ĝi estas verŝajne scias nenion. Estas FFFFFF. Iu iam vidis F-aj kaj E estas kaj A through-- do rezultas, Ni parolis hieraŭ sur dekuma, kaj hodiaŭ, ia pri dekuma. Hodiaŭ ni parolis pri duumaj. Rezultas, deksesuma estas tre komuna bazo sistemo por uzi en komputiko. Duuma estas du, dekuma estas 10, deksesumajn estas 16. Kaj ĝi rezultas, kiel fari vi rakontas en deksesuma? Nulo, unu, du, tri, kvar, kvin, ses, sep, ok, naŭ, kion vi uzas post naux? Kio estas la sekva nombro? Ni jam uzis nulo. Mi bezonas 16 de tiuj. Nulo, unu, du, tri, kvar, kvin, ses, sep, ok, naŭ, vi bezonas iun arbitra konvencio. Kaj kion la homo decidis iam antaŭ ke post naŭ venas la letero A kaj tiam B kaj tiam C. Do la Tiel vi rakontas en deksesuma estas nul, unu, du, tri, kvar, kvin, ses, sep, ok, naŭ, A, B, C, D, E, F, kaj kiu rakontos vi tute, rezultas, al 15. Do nulo al 15 estas nulo tra F. Nun kial estas ke signifa? Nu, kiam vi havas du F-a, tiel estas kiel vi esprimas 255. Do longan rakonton, en la mondo de la Photoshop, ke grafika dezajno programaro, en la mondo de ttt disvolviĝo, kie vi havas multajn kolorojn, kompreneble, por ludi kun, Ofte programistoj volas esprimi tiujn en deksesuma, nur ĉar ĝi emas esti iom pli simpla. Kvankam unuavide ĝi estas multe pli kompleksa. Do ĉiuokaze, tio estas grava ĉar Nick ĉe Stanfordo donis al ni ses pecoj de funcionalidad ke vi, la burĝona programistoj, nun havas la kapablon uzi. Konstruita en tiu retejo paĝo longas ses funkcioj, ses proceduroj kiu Nick skribis. Tri el ili ekiru nombro, ruĝa, verda, aŭ blua valoro. Tri el ili starigos tiun valoron. Kaj tiuj substrekoj estas nur anstataŭiloj, Do vi devas scii kion tiuj estas. Do kun tiuj tri funkcioj: la unua el tiuj aferoj tuj esti x-koordinato, kaj la dua de ĉi tiuj aferoj tuj esti y-koordinato. Alivorte, kiuj pentras, kiujn rastrumero vi volas ricevi verdan de, akiri la bluo de, akiri la ruĝan de. Kaj tiam ĉi tie, ĉi tiu tuj estos x, ĉi tiu tuj estos la y valoro, kaj ĉi tiu tuj estos kelkaj. Do ni faru la unuajn linio de ĉi kune kaj tiam Mi lasos ĝin al vi provi dedukti la reston. Tiel por la instrukcioj sur tiu paĝo, ni bezonas pliigi la ruĝa je faktoro de 10 kaj ni devas forigi la verdan kaj forigi la blua. Komencu kun la lasta scenaroj. Do se mi volas, kaj mi tuj al krommargxenu uzante iuj spacoj, Se mi volas agordi la ruĝa, la verda, aŭ blua valoro, Mi tuj faros la sekvajn. Bildo, im.setBlue kaj tiam bazita sur miaj instrukcioj tie, kio tri aferoj do mi tajpi ene de krampoj nun? Mi bezonas la x valoro, la y valoro, kaj kiu nombro mi metis tien se mi volas forigi de la blua, bazita sur tiu rakonto tie? Nur nulo. Se mi volas nenian bluan, mi estas nur tuj ŝanĝu ĝin al nulo. Nun ni nur recap kion ĉi faras. Mi havas ĉi tie en tiuj supro dua kaj tria linioj, Mi asertis du cikloj, nestitaj maŝojn, se vi estos, ke tuj havos la efikon progresi de maldekstra al dekstra, supro al malsupro super ĉiuj x valoroj kaj ĉiuj y valoroj. Ĉar denove, bildo nur krado de vicoj kaj kolumnoj. Tial ĉi tiu tuj akiri liverita de ĉiuj blua. Mi restigos en la sekva linio al vi. Kiel mi forigi ĉiujn verdajn? Spektantaro: [inaudible] DAVID Malan: Nice. Spektantaro: [inaudible] DAVID Malan: Nice. Kaj mi tuj malzomi, kaj nur preni zorgi pri tio vi jam ne faris ajnan tajperarojn. Kaj se vi estas komforta kun kion vi faris, antaŭeniri kaj klaku la butonon Kuri / Konservi kaj rigardu kion vi akiras. Kaj denove, ni faris nur tri ŝanĝoj. Ni forigita unue komenti kaj anstataŭigis ĝin kun tiuj du linioj de kodo. Kaj ĝi estas OK se vi devas frapi la Run / Konservi butono paro tempoj ripari ion. Kaj mi ankaŭ zomi en sur mia kodo tiel vi povas transskribi. Bonaj. Do mi vidas Andrew havas kion ŝajnas esti eraro. Li ĵus ricevis grandan nigran rektangulo sur lia ekrano. Ĉu iu alia havas granda nigra rektangulo? Spektantaro: Jes. DAVID Malan: Granda nigra rektangulo? Bone, do ni pensas pri kio tio signifas. Ni diris ke nulo, nulo, nulo, do neniu verda, neniu ruĝa, ne blua, tuj donos vin nigraj. Kaj ĝi rezultas ke plejparto de niaj tekkomputiloj nur ne havas sufiĉe fideleco. Vi ne tute povas diri ke fakte ion tie. Kaj se vi ia eble apogos via ekrano antaŭen kaj reen, eble vi vidi iom ion tie? Eble, ia, ia? Ĝi ne perfekte nigra. Spektantaro: [inaudible] DAVID Malan: Spoiler! Ekzistas iuj ruĝaj tie, sed memoras de la specifoj de la problemo, Nick tonon ĝi malsupren. Li desaturated ĝin iom, sed ne tute al nulo. Do se ni volas altigi la kvanton de ruĝa, mi proponas tiun trukon. Lasu min zomi en sur mia ekrano. Kaj lasu min antaŭeniri kaj diru kvanto egalas im.getRed (x, y). Ĉi linio de kodo estas donanta min iu nomita variablo. Mi arbitre, sed, eble, prudente nomis mian variablo kio, ŝajne? Kvanto. Nur kvanton. Mi povus jam alvokis ŝin ion mi volas, sed mi uzante ĉi tiu alia funkcio ke mi priskribis pli frue akiri la kvanto de ruĝa je x komo kaj. Kial mi faras tion? Kion vi volas fari tie? Vi bezonas add-- Spektantaro: [inaudible] DAVID Malan: Jes, eble multipliki ĝin per 10. Kaj se vi ne scias tion, mi estas tuj iros antaŭen kaj fari tion. Mi tuj iros antaŭen kaj diru, mi volas ke la kvanto de ruĝa Mi volas esti kio ajn estas en la ruĝa kaj tempoj 10, kaj la steloj, la asterisko sur via klavaro estas estas- ne uzas x. Uzi la stelon. Tiel vi multigos aferoj en plej programlingvoj. Do laŭ Kareem la intuicio, stokitaj en tiu variablo nomata sumo, estas kiom ruĝa Mi volas en loko xy. Kiel nun mi faras ke Pixel havas tiun numeron? Vi jam faris tion antaŭe. Vi starigis la verdo kaj la blua aŭ neniu valoro al nulo. Spektantaro: [inaudible] DAVID Malan: Jes, bone vi ne volas ke 10. Vi jam faris la math tie. Do ni ricevas la valoro de ruĝaj, kiu estas malalta numero, supozeble. Ni multiplikante per 10. Kion vi volas fari kun la ŝanĝiĝema kvanto nun? Spektantaro: [inaudible] DAVID Malan: Nice. Tiel im.set-- kio? Spektantaro: setRed. DAVID Malan: setRed, ĉe loko xy. Yeah. Kaj nur kvanton. Alivorte, ŝanĝiĝema estas portempa lokokupilo ke vi povas meti ion vi volas en. Ni okazi esti metanta nombro en ĝi, nuntempe. Ni multiplikas ĝin 10 por fari ĝin pli granda. Kaj nun mi anstataŭiganta tiu variablo kiel tiu tria argumento, aŭ enigo agordi ruĝa. Kaj por ke iam vi finos tion, kaj prenas noton de la punktokomoj kaj la krampoj. Antaŭeniri kaj klaku kuri / savu denove, kaj vi devus vidi, magie, kio estis fakte tie. [? Arwa,?] Kio estas tie? La Ejfelturo en plena disvolviĝinta ruĝa, ne tute malluma. ĝi devus esti pli evidenta nun, jes? BONE. Kaj Andreon jam pli nigra skatolo? Spektantaro: [inaudible] DAVID Malan: Bone. Do mi tenos tion en la ekrano. Se vi volas ludi kun ĉi poste, mi rekrei por vi. Sed tiu kodo tie faris ekzakte tion. Kial ni ne faru unu alia. Lasu min rulumi malsupren iomete. Do en ĉi tiu kazo, la proyector ne vere faras ĝin justeco. Sed via ekranoj, vi probable havas tre ruĝa kaj tre nigra skatolo. Tio, ankaŭ, estas puzlo kiu montras ion fama. Tamen, la bildo estis distordita. La vera bildo, ĉifoje, estas en la blua kaj verda valoroj. Tamen, ili jam ĉiuj estis dividita 20 tial la valoroj estas tre malgrandaj. La ruĝa valoroj estas nur hazardaj nombroj, bruo. Malfari tiujn distordojn riveli la veran bildon. Do Noĉjo tiam informas vin, kion fari. Starigis la ruĝa valoroj al nulo, kaj tiam ne difektas kion ĝi estas. Tiam multipliki la blua kaj verdaj valoroj de 20. Do estas preskaŭ la sama programo kiel antaŭe, sed vi inversigante la procezon. Kaj Mi metos Miajn kodo de antaŭe sur la ekrano en kazo vi volas raporti reen al ĝi aŭ ludi pli kun tiu. Lasu min zomi en sur tio. Sed solvi kupro bildo enigmo, numero du. Spektantaro: [inaudible] DAVID Malan: Bone, do ĉi tiu mi ne tuj donos kiel multaj aludoj. Do mi would-- ho, ni jen vi havas typo ĉi tie. Do memoru, ĉi tie efektive devas iri tien. Do kion mi proponas, se vi volas enfokusigi ĉi tiu, tie estas la respondo. Se vi volas transskribi tion, ke devus ricevi la unuan funkciantan. Kaj tiam vi povas uzi tiun kiel inspiro por la dua. Nice. Bonaj. Kaj por la scivola, tio estas simpla ekzemplo de scienco aŭ arto nomita steganografio, la arto de kaŝi informon en bildoj. Tipe, bildoj povus esti watermarked tre senhonte kun logoo en la fundo angulo, sed klare, vi povas esti multe pli kompleksa pri tio kaj fakte kaŝi aliajn bildojn en la Bildoj iel kun ĉi tiu tekniko. Prenu alian 30 sekundoj, kaj poste ni almenaŭ anonci kion vi vidos. Kaj mi lasos la tria unu kiel ĉe-hejmo ekzerco, Se vi ŝatus pli da de defii ĉi semajnfino. Kaj mi pensas Andrew eble esti alveninta unue. Kio estas la dua bildo, Andreo? Spektantaro: Statuo de Libereco. DAVID Malan: Statuo de Libereco estos la respondo ĉi tempo. Do denove, nur iuj simplaj ekzemploj, la celo de kiu estas doni vin sento de kiel ni tradukis pictórico Scratch blokoj por pli ĝena kaj pli komplika kodo, sed ĉiuj ideoj ankoraŭ ekzakte la sama, kvankam kun la enkonduko nun de la nocio de variablo, estante povis stoki ion provizore. Ni faru pli manoj-on, Nur nun kunigi la punktoj por iu iom pli reala mondo. Kiam vi pretos, se vi povus iri al tiu retadreso sur la ekrano. Jen ankaŭ en vian kopion de la diapozitivoj, developers.google.com/maps~~V. Ni vere faru ion vera, tiel diri, sur la TTT uzante la Google Maps API, aŭ apliko programado interfaco, en la sekvanta maniero. Google, kiel multaj entreprenoj, provizas multajn liberajn funcionalidad ke vi povas uzi por konstrui vian propra interesaj aplikoj. Fakte, se vi iam uzis Uber akiri taksion aŭ aŭto, vi probable scias ke Uber havas mapon kaj ĝi montras aŭtoj sur ĝi. Te kiel bona kiel mi povas diri, Google Maps API. Ili fakte uzas Google mapoj, sed Uber estas ne surĵeto kompanio, nek estus ke esti aparte interesa problemo solvi sur ilia aŭto servo problemo. Kaj tiel ili estas staranta, denove sur la ŝultroj de aliaj, Google en ĉi tiu kazo. Tial ili uzas Google mapoj sed al sia aŭto servoj kaj aliaj tiaj ecoj. Do ni tuj profiti de tiu fari la sekvan. Kaj se mi iris tro rapide, simple nomas min en momento. Feliĉaj recap iuj de la bildo aĵoj. Vi devus vidi mem en paĝo kiel tiu. Tiel Google bela, kaj ili estas inter la plej bonaj provizi ne nur API, sed libera API ke vi povas ludi kun aŭ uzi komerce. Ili komencas akuzanta vin se via uzado estas alta, sed mi antaŭeniris anticipe kaj subskribita nin por libera konto ke, espereble, 10 komputiloj ne malkvalifiki nin subite. Do espereble tiu manifestacio laboros. Kaj rimarki ke ili havas API por Android, iOS, retejo kaj servoj retejo, kion ajn tio estas. Ni enfokusigi retejo. Do klaku rozkolora skatolo, ttt, kaj ke kondukos vin, espereble, al paĝo tie. Kaj ili havas tutan faskon de APIs. Kaj ĝi povas esti iom superfortanta ĉe unua, sed mi stir nin tra kion ni volas. Supre maldekstre estas la Google Maps JavaScript API, la JavaScript API. Do iru antaŭen kaj klaku tiu. Kaj kiu gvidos vin nun al la sekvante paĝo, donu kaj specimeno kodo. Lasu min malzomi tie. Kaj lasu min liberigi nin to-- rulumu malsupren al kie diras rapida komenco paŝoj. Via ekrano aspektu mia. Kaj ekzistas du ŝtupoj, akiru ŝlosila kaj komenci disvolvi. Mi jam faris paŝon por ni ricevas tn ŝlosilo. Kaj tio estas komuna ideo. API ŝlosilo estas ĝenerale nur granda hazarda nombro aŭ ŝnuro ke vi supozis por alglui en via kodo, por ke Google scias, kiu vi estas, kiam vi uzas ilian servon, lia API. Ne signifas ke ni estas estanta akuzita nenion. Kaj nun, klako, anstataŭ unu, klaku komenci disvolvi. Se vi povus simple skuu min super se ne certas kie ni estas. Do ni nur skrapi la surfaco, tie sed kio Mi pensis estus konvinka Estas efektive havas nin ĉiujn, uzante Cloud9 en unu fenestro kaj ĉi lernilo en alia fenestro, Lasas reale preni niajn proprajn apliko kaj kurado ke embeds kutimo Google mapi en nia propra retpaĝo, kaj tiam aldonas unu aŭ du trajtoj. Sed ni simple skrapi la surfaco de kion ni povas fari. Tiel nur rapidan prudento ĉeko. Estas ĉiuj en tiu paĝo, Google Maps JavaScript API? Diru ekuzi. Ni ne tuj iros tra la tuta afero tute ne. OK, en alia langeto, se vi ne havas ĝin malferma, do iru al Cloud9 kaj akiri vin mem nur nova langeto, finfine. Do denove, c9.io de hieraŭ, c9.io kaj simple krei novan dosieron. Kaj antaŭeniri kaj alvoko ĝi kion ajn vi volas. Mi vokis miajn map.html. Nomas ion finiĝante en .html. Kaj vi devus esti malglate Kie mi estas en tiu procezo kun nur palpebrumante prompto en malplena langeton nomita ion kiel map.html. Aŭ dosieron, nova dosiero ĉi tempo. Kaj nun, dum la Google Maps JavaScript API, ni salti legado tra ĉiuj ĉi tekston. Sed rimarkas ke saluton mondo ja ĉie, jam vi vidas tion. Saluton mondo havas ĉi granda bunta ekzemplo de tuta fasko de HTML. Antaŭeniri kaj kopio kaj almeti nur tio HTML, tiel el la doc tipo ĉe la supro tutan vojon al la proksimaj HTML tag, iru antaŭen kaj kopii ĉiujn that-- denove, jen sub la saluton mondo example-- kaj almeti ke en via Cloud9 langeto, por ke nun via ekrano devus rigardi proksimume kiel la mia. Kaj vi povas konservi ĝin, sed ne ŝarĝi ĝin ĝuste nun. Ni unue rigardu la kodon kaj vidi se ni ne konkludi aŭ lerni el kio ĝi estas Google havis ni blinde kopii kaj alglui. Ili nur deziras helpi, laŭvorte, get ni komencis, sed ne estas tiel multe komplekseco reale ekzistas. Demandojn ĝuste ankoraŭ? Ni estas sekuraj forĝi antaŭen? BONE. Tiel rapide, ni nur fari iu rapida prudento ĉekoj. Linio el kio mi vidu, kaj espereble, vi vidu, kion tio signifas, DOCTYPE HTML? Kareem, memoras? Spektantaro: [inaudible] DAVID Malan: Jes. Tie venas HTML 5. Dume, vicigi du sur la ekrano tie signifas hey retumilo, tie venas la efektiva HTML. Linio tri estas hej retumilo, tie venas la kapo. Linio kvar estas, kompreneble, hej retumilo, tie venas la titolo. Kion linio kvin faras? Fakte, tiu ne vere fari ion por ni. En tiu kazo, ĝi nur resizes la paĝon al defaŭlta. Linio ses, ni ne raportis, sed ĝi specifas la karakteron kodoprezenton. Ekzistas malsamaj manieroj por kodi dosierojn, speciale por fremdaj lingvoj. UTF-8 ĝuste inklinas esti la defaŭlta. Do nun ni vidas en linio sep tra 16, iuj CSS. Kaj kvankam ni ne vidis ĉiuj tiuj aferoj antaŭ, ni povas ia konkludi. Tiel viciĝas ok rimedoj, hej retumilo, apliki ĉiuj el la sekvaj por kiu du etikedoj, ŝajne? HTML kaj korpo tekston. Tial la komo estas la nova afero tie. Kaj tio estas nur maniero de preciziganta multoblaj etikedoj samtempe. Tiam ni havas la frizita krampoj. Do ŝajne, tiu rakontas la retumilo, fari la alteco de la paĝo 100%. Do eĉ se ekzistas tre malgranda enhavo, fari la tutan paĝon, fari la aferon plenigi la paĝon. Fari la mapon finfine plenigi la paĝon. Rando, kion tio signifas? Tio kutime kiel arbitra blanka spaco ĉirkaŭ la randoj ke iu retumilo diseñador nur decidis devus esti tie, ĉar ĝi ia faras tion aspektas pura. Sed ni ne volas tion. Ni volas la mapon iras tutan vojon al la randoj. Plenigado, simila en spirito al randoj. Randoj signifi eksteren, Plenigado rimedoj ene, sed ĝi estas la sama speco de interkonsento. Estas iomete de buffer inter vi kaj la randoj. Kaj tiam linio 13 estas bona ŝanco por rapida revizio. Kion faras akraj signo mapo signifi aŭ hashtag mapo signifas? Kion tio aludas al, principe? Spektantaro: [inaudible] DAVID Malan: Ĝuste. Tiu propraĵo, ĉi CSS proprieto koncernas nur unu afero, la HTML etikedo kiu havas ID de citaĵo, unquote "mapo". Kaj nun ni rapide antaŭen, skribrulajxo malsupren al la fundo de la dosiero, kiun ne tro malproksime, kaj avizo sur linio 19 Se vi algluu ĝin precize kiel mi intencis, linio 19 havas nur div, kiu estas divido de la paĝo, kiu hieraŭ nomita rektangula regiono. Oni ja nenion en gxi. Ĝi estas malfermita etikedo, proksime etikedo. Sed ĝi havas unikan ID. Do kio ŝajnas esti okazas tie estas Google estas pretigante nian retpaĝon al havi kompletan 100% alteco, kaj neniu Plenigado, neniu randoj, ĉar kion ni tuj metos ene de tiu div kies unika ID estas mapo, estas fakta enigita mapo. Kaj ni volas plenigi la paĝo kaj ne nur esti iu malgranda rektangulo en la mezo. Do linio 14 simile emfazas, la mapi mem devus havi altecon de 100%. Tial nun rimarkas inter linioj 20 kaj 28, tiu estas kodo JavaScript. Kaj tio estas, eĉ se ĝi estas sintakse iom stranga, tie ne estas ĉiuj ke multe okazas tie. En linio 21, tio deklarante iu nomita variablo. Anstataŭ nomi ĝin kvantoj, kiel ni faris antaŭe, ni pli precize diri var, kiu ĵus signifas variablo. Ni povis esti uzita ke en Nick kodo, sed li ne faris tion, do mi ne tedis fari ĝin. Estas ŝanĝiĝema nomita mapi, kaj tiam tie estas funkcio kiu estas ŝajne nomita initMap. Do tiu estas kiel nia propra kutimo enigmo pecon en Scratch. Ni kreis pecon de funcionalidad nomita initMap, kaj vi povas ia konkludi kio okazas ĉi tie. Sur la maldekstra flanko, Ni havas variablo, do ni tuj metis la jenan afero ene tiu variablo, de dekstre maldekstren. Dekstre diras, hey retumilo, donu al mi novan Google mapo. Kaj google.maps.map estas nur funky maniero de preciziganta ke tiu funcionalidad apartenas al Google Maps. Post la krampoj, ni vidis tion antaŭe, hej retumilo, akiru mi la elementoj en la paĝo, la etikedo en la paĝo kies unika ID is-- Spektantaro: [inaudible] DAVID Malan: --map. Kaj kio okazas, nu, tiu linio kune, linio 23, Estas esence dirante: hej retumilo, Iri akiri min ke malplena div sur la paĝo kies unika ID estas mapo, ĉar mi volas enmeti en it-- injekti en ĝin, se vi will-- tuta amaso de enhavo kiu sekvinbero al veni de la retejo, poste. Kaj Google faras ĉiujn ke por ni. Do denove, ĉe la fino de la tago, ni havas tiun ekzemplon de abstracción. Mi havas neniun ideon kio mapon estas aŭ kiel apliki mapon API. Ni ne bezonas. Ni devas nur diri la mapo kie meti kaj lasi tiuj subestaj efektivigo detaloj de Google. Nun estas ŝajne du pecoj de datumoj ke ĉi tiu ekzemplo estas havigante al Google API. Ŝajne la centro de la mapo, kaj la zoom nivelo, por tiel diri. Kaj ĉu iu rekonas tiujn koordinatoj, latitudo kaj longitudo? Probable ne, sed ni povas reiri al la lernilo, laŭvorte vidi. Sed ni vidos ŝin en nur momento. Zoom nivelo estas valoro inter, mi ne faras scias, en 13 aŭ io kiel tio. Ĝi nur devas vidi kun kiom vi zomis en aŭ for, kaj tio estas ĝi. Nun je la fino de la paĝo, avizo linio 29-- ĝi estas iom malbela ĉar ĝi wraps-- tiun linion de kodo Estas kio elŝutas al la retumilo Google fakta API. Ĉiuj de la kodo kiun Google inĝenieroj skribis ke efektivigi tiu tuta eco de Enkorpigebla mapoj. Nun ni ne ŝanĝas nenion. Se vi sekvante kune, iru antaŭen kaj nur savu tiu dosiero, se vi ja havas kion mi havas. Iri al ties ret. Klaku Run butono supren supro kaj rakontos vi la URL de via retservilo denove. Kaj ĝi kondukos vin al nova langeto. Se vi klakas Malferma por map.html kaj prognozoj estas vi ricevos atentigon, erarmesagxon, jes? Erarmesaĝo, erarmesaĝo? Do bedaŭrinde, la eraro mesaĝo ne ke iluminanta se vi fakte malfermas konzolo, ke speciala langeto ni tenis malfermante hieraux iom pli frue hodiaŭ. Sed mi stumblis trans ĉi pli frue, tial mi jam eltrovis kio la solvo estas. En hodiaŭa diapozitivoj, aŭ prefere, en Cloud9, avizo ke ni ne faris ion intence. Rimarki ke tiu skripto etikedo en linio 29, se vi legas tra ĝi, estas kvazaŭ maps.googleapis.com/ ion, ion, ion, tiam rimarkos iu, unu el la desarrolladores, skribis en tuta ĉefurbo literoj, vian API ŝlosilo. Ni devas almeti ion tie. Kaj tiu estis la paŝo Mi faris por ni antaŭe, kaj denove ili Blacklist ni se subite, 12 aŭ pli el ni ekuzi la sama ŝlosilo, sed ni vidu kio okazas. Do se vi iras en la hodiaŭa diapozitivoj, unu glito poste, ekzistas ĉi tre funky aspekto ŝnuro de teksto. Iri antaŭen kaj nur kopii tion kaj gluu ĝin kie diras via API ŝlosilo. Jen la unu mi subskribis supre por. Kaj certe ne provu tajpante ĝin permane, ĉar ĝi sentas ŝarĝita kun tajperarojn, potenciale. Do simple kopii kaj almeti tion. Kaj ĝi tuj faros la linion plu, sed nun, nur por esti klara, ĝi devus rigardi iom pli kiel tiu, kie ŝlosilo egalas ne kapitaligita kriante al vi. Savi vian paĝon, reiri al la alia langeto, reŝarĝi, kaj esperas vidi mapon de kie? Spektantaro: Aŭstralio. DAVID Malan: Aŭstralio. Do ŝajne tiuj estas la GPS koordinatoj de Aŭstralio. Kaj mi piediras proksimume por nur momento kaj helpi iu ajn kiu ne estas tre tie, sed mi proponas, pere de Google, trovi la GPS koordinatoj de via hejmurbo aŭ via propra hejma lando. Kaj probable Google povas defali supren, aŭ Vikipedio certigas al vi. Sed elekti du malsamaj valoroj por latitudo kaj longitudo, reiru en kaj gluu ilin, kaj tiam reŝarĝi la paĝon post savi kaj vidu se vi povas havi mapi por via propra hejmurbo. Kiam vi faris kun ke, la sekvaĵo challenge-- kaj mi donos al iom malpli direkto, intence, por ke vi intence devas lukti por paro minutoj kun la dokumentado, ŝanĝi la mapon estu ne tio cartoonish defaŭlta, sed satelito mapo. Do vi vere vidi sateliton figuraĵo anstataŭ la belaj koloroj. Kaj la sugesto mi donos al vi estas ŝanĝi la mapo la tipo. Reiru al tiu ricevas komenciĝis paĝo por inspiro. Kiel vi eble kolektis, se vi serĉas, estas tiom da pli aferoj vi povas fari. Iuj el vi jam ŝanĝis la mapon tipo. Sed vi povas do-- ekzemple, mi iri al io ni faris por la kurso Mi teach-- maps.cs50.net. Unu el niaj undergrads faris. Ni centros nian mapo super Harvard Yard kaj tegu ĉiuj tiuj konstruaĵo nomoj, kaj ni devis lin aldonas ĉi. Do se mi volas serĉi, ekzemple, Matthews Hall, ni havos iom falmenuo. Kaj mi pensas ke li uzas Bootstrap, la biblioteko ni diskutis antaŭe por tio. Kaj se vi alklakas Matthews Halo, ĝi tuj saltas la mapo al certa loko, kaj ĝi spektakloj vi bildon en tiun iom popo supren. Sed eĉ tiu malgranda pop-up, ni ne apliki. Se mi rulumu malsupren sur nia ricevas komenciĝis paĝo kaj serĉi info fenestroj, vi vidos ke iuj de la funkciaro vi mem povas aldoni, kvankam kun iom pli komplekseco, Estas io nomata info fenestro. Kaj se mi klakas ekzemplo tie, kaj tio estas kio estas amuza, Vi povas fari tion tiel, alklakante markilo kaj voilà, informo krevas supre. Do ni ne tute enkondukita sufiĉe trajtoj de Ĝavoskripto pentri bildon de ekzakte kiel vi povus telegramon ĉio ĉi aĵoj kune, sed ni ia gratis la surfacon. Fakte, kion mi ĵus faris kiam Mi klakis sur tiu markilo, estis deĉenigante okazaĵo, tn sur klako okazaĵo. Kaj ni efektive vidis okazaĵo pli frue hodiaŭ, la tn submetiĝi okazaĵo, kiam ni estis malhelpante la uzanto de serĉado katoj. Do ni ia prenis kaj choosed el cxiuj tiuj diversaj trajtoj, doni al vi la senton, espereble, de kio vi povas reale fari kun iom pli komforto en programado, kaj tute liberaj rimedoj. Demandojn? Ne? Jen via fina ŝanco, almenaŭ nuntempe, en vendredo, akiri ion ekstere vian bruston por ke vi iradu el tie sentante certan kaj komfortan. Jes. Spektantaro: Kial ne aldoni unu pli afero? DAVID Malan: Ho mia bono. Mi bezonas ripozon ĉi semajnfinon, mi pensas. Aliaj demandoj? Spektantaro: [inaudible] DAVID Malan: Vi can-- en Interreto Explorer, ripozo en paco, Vi kutimis esti kapabla meti VB skripto, virtuala baza skripto, sed vere neniam sukcesis. Tiel la mallonga respondo estas simple Javascript. Aliaj demandoj? Bone, bone, mi faros tion. Lasu min ekpreni niaj kolegoj ekstere. Ili havas iun pritakso formojn kiujn ili volas ke ĉiuj elspezi kelkajn minutojn plenigi ekstere. Ili volas kolekti tiun formon kaj ajnan rezigniloj ke vi havu ekstere. Ili devos ankaŭ havas certigitaj. Mi konjektas ke estas ankoraŭ kelkaj manĝetoj ekstere. Mi dezirus tiujn ekstere, kaj se vi havas demandojn intertempe, Mi iradas ĉirkaŭe pli individue kaj ni povas akiri vin komencis. Jes kompreneble. Spektantaro: [inaudible] DAVID Malan: Tio kutime veraj tiujn tagojn. Certe kun retejo programaro, vi apogante sur aliaj vi ĉu estetike uzante aferoj kiel Bootstrap, do vi ne devas apliki la malalta nivelo detaloj de menuoj kaj butonoj kaj ĉiu tio. Vi apogante sur iu kiel Google por ke vi ne devas konstrui Uber negoco kaj surĵeto negoco, kaj kiom ajn da similaj aplikoj ankaŭ. Fakte, ensalutoj estas popularaj ankaŭ. Se vi uzis Spotify aŭ ajna nombro da retejoj, vi ensalutas al iu retejoj uzante Facebook. Do kio estas agrabla, tie estas API por ensalutoj nuntempe, por ke vi ne havas havi vian propran uzantoj tablo kaj ĉiuj viajn proprajn datumbazo nepre al la sama mezuro. Vi povas lasi Facebook faru cxion de tiu komplekseco por vi. Do ĝi estas ekscita tempo, Honeste, en programado, ĉar ekzistas tiom multaj triaj servoj kiujn vi povas konstrui sur supro de. Kaj denove, la prezo vi pagas estas ĉu financa aŭ malfunkcio. Se Google iras malsupren, tiel faras Uber, disputeble, sed eble tio estas racia komerco-off. Kaj denove, tio estis unu el la temoj, espereble, por la pasinta paro de tagoj, Estas tiuj komerco-offs. Kaj malofte estas tie iras esti ĝusta respondo. Ĝi vere estas la bona de du aŭ pli respondoj. Pasi tiuj ĉirkaŭe. Kaj tiuj Cloud9 kontoj daŭrigos labori, en teorio, en eterneco. Vi eble trovos, se vi atendos kelkajn tagojn aŭ unu semajno aŭ pli ensaluti reen en ilin, ĝi povus preni kiel unu aŭ kvin minutoj malfermi reen supren, sed tio estas nur ĉar ili metis ĝi dormi savi sur rimedoj.