1 00:00:00,000 --> 00:00:00,060 2 00:00:00,060 --> 00:00:01,560 >> DAVID MALAN: Oké, we zijn terug. 3 00:00:01,560 --> 00:00:03,830 Dus voor de spannende Kortom, onze laatste deel 4 00:00:03,830 --> 00:00:06,900 on web programmeren, die ik dachten dat we zouden gebruiken als een algemene term 5 00:00:06,900 --> 00:00:08,440 een paar resterende onderwerpen vastleggen. 6 00:00:08,440 --> 00:00:10,390 Dus aan het einde van de dag, zullen we eigenlijk doen 7 00:00:10,390 --> 00:00:14,830 een beetje hands-on web programmeren met een taal JavaScript genoemd. 8 00:00:14,830 --> 00:00:17,510 En ik denk dat we een kijkje te nemen naar iets met betrekking tot afbeeldingen 9 00:00:17,510 --> 00:00:20,040 en iets te ontdekken in het geheim verborgen in een beeld, 10 00:00:20,040 --> 00:00:23,230 en ook een kijkje nemen op de Google Maps API, application programming 11 00:00:23,230 --> 00:00:26,040 interface, wat representatief is voor het type software 12 00:00:26,040 --> 00:00:28,800 dat is in toenemende mate en vrij beschikbaar vandaag. 13 00:00:28,800 --> 00:00:32,029 >> Maar waarom doen we niet een kijkje nemen bij een ingrediënt aan deze wereld 14 00:00:32,029 --> 00:00:34,070 dat we soort geweest neemt voor verleend bestaat 15 00:00:34,070 --> 00:00:36,720 enige tijd een database. 16 00:00:36,720 --> 00:00:39,150 In de afgelopen dag en een half we hebben aangenomen 17 00:00:39,150 --> 00:00:42,910 dat hebben we toegang tot een database, maar welk probleem heeft een database op te lossen? 18 00:00:42,910 --> 00:00:45,540 Wat doet het voor ons? 19 00:00:45,540 --> 00:00:47,030 Wat is het? 20 00:00:47,030 --> 00:00:48,679 >> PUBLIEK: [ONVERSTAANBAAR] 21 00:00:48,679 --> 00:00:51,720 DAVID MALAN: Houdt alle informatie, OK, en wat voor soort informatie 22 00:00:51,720 --> 00:00:53,186 zou je in het? 23 00:00:53,186 --> 00:00:54,590 >> PUBLIEK: [ONVERSTAANBAAR] 24 00:00:54,590 --> 00:00:56,450 >> DAVID MALAN: Alle informatie je in, zult u terug te krijgen. 25 00:00:56,450 --> 00:00:57,070 Dat is waar. 26 00:00:57,070 --> 00:01:01,900 En op een typische web-gebaseerde site of web toepassing, welke soorten informatie, 27 00:01:01,900 --> 00:01:03,385 in het bijzonder, zou je in? 28 00:01:03,385 --> 00:01:04,260 PUBLIEK: [ONVERSTAANBAAR] 29 00:01:04,260 --> 00:01:05,051 DAVID MALAN: gebruikers. 30 00:01:05,051 --> 00:01:07,000 Dus wat is een gebruiker? 31 00:01:07,000 --> 00:01:09,765 >> PUBLIEK: [ONVERSTAANBAAR] 32 00:01:09,765 --> 00:01:11,640 DAVID MALAN: OK, geregistreerd gebruiker van de site. 33 00:01:11,640 --> 00:01:15,100 En wat betekent het om informatie van gebruikers op te slaan? 34 00:01:15,100 --> 00:01:17,260 Wat stelt een gebruiker? 35 00:01:17,260 --> 00:01:18,331 Een gebruiker heeft wat? 36 00:01:18,331 --> 00:01:19,206 PUBLIEK: [ONVERSTAANBAAR] 37 00:01:19,206 --> 00:01:21,040 DAVID MALAN: Ja, personal data, en dat vind ik leuk. 38 00:01:21,040 --> 00:01:21,970 Laten we nauwkeuriger. 39 00:01:21,970 --> 00:01:25,275 Zodat een gebruiker typisch een naam, wat anders kan een gebruiker te hebben? 40 00:01:25,275 --> 00:01:26,150 PUBLIEK: [ONVERSTAANBAAR] 41 00:01:26,150 --> 00:01:29,130 DAVID MALAN: An addr-- OK, zo voornaam, achternaam. 42 00:01:29,130 --> 00:01:29,630 Dat is goed. 43 00:01:29,630 --> 00:01:31,463 Eigenlijk, laten we fix dat, omdat het gaat 44 00:01:31,463 --> 00:01:35,010 open te stellen een kans voor discussie, nog verder. 45 00:01:35,010 --> 00:01:39,090 Voornaam, achternaam, geslacht. 46 00:01:39,090 --> 00:01:41,820 47 00:01:41,820 --> 00:01:43,481 Een ID van een soort. 48 00:01:43,481 --> 00:01:43,980 Wat nog meer? 49 00:01:43,980 --> 00:01:45,438 Ik hoorde iets anders voor, ook. 50 00:01:45,438 --> 00:01:51,600 Een e-mail, postadres. 51 00:01:51,600 --> 00:01:58,170 >> Dus laten we daar te pauzeren en nu overwegen niet wat we opslaan in de database, 52 00:01:58,170 --> 00:02:01,980 maar-- en niet waarom, want het is misschien duidelijk dat als je eenmaal een gebruiker registreert, 53 00:02:01,980 --> 00:02:03,730 je ze wilt onthouden voor bepaalde tijd. 54 00:02:03,730 --> 00:02:05,480 Je wilt niet dat het alleen worden opgeslagen in het RAM 55 00:02:05,480 --> 00:02:08,690 en zo worden forgotten-- Laten we focussen op de manier waarop. 56 00:02:08,690 --> 00:02:11,700 >> Het blijkt dat in de wereld van databanken, 57 00:02:11,700 --> 00:02:14,410 er ten minste twee typen van deze dagen. 58 00:02:14,410 --> 00:02:20,010 Zoiets als een SQL-database, Structured Query Language, 59 00:02:20,010 --> 00:02:24,770 of, cutely genoemd, NoSQL, die niet is SQL. 60 00:02:24,770 --> 00:02:26,980 En dit orgaan een voorbeeld van wat zou kunnen 61 00:02:26,980 --> 00:02:30,660 worden een objectgeoriënteerde genoemd, of een object op te slaan, een database 62 00:02:30,660 --> 00:02:36,010 dat objecten opgeslagen, en niet, verontschuldiging me, zoals we zullen binnenkort te zien, rijen. 63 00:02:36,010 --> 00:02:41,800 >> Dus we zullen richten voor slechts een moment de eerste, namelijk een SQL 64 00:02:41,800 --> 00:02:46,850 gegevensbestand, alleen al omdat het zo vertrouwd al, voor iedereen 65 00:02:46,850 --> 00:02:51,070 die gebruikt Excel of Google Spreadsheets of Apple 66 00:02:51,070 --> 00:02:53,740 Getallen of een standaard spreadsheet-programma 67 00:02:53,740 --> 00:02:56,040 of, equivalent, of meer sophisticatedly, 68 00:02:56,040 --> 00:02:58,610 iets als Microsoft Access of Oracle 69 00:02:58,610 --> 00:03:03,890 of MySQL of PostgreSQL, die allemaal zijn productnamen voor implementaties 70 00:03:03,890 --> 00:03:04,865 van het volgende idee. 71 00:03:04,865 --> 00:03:10,350 >> Een relationele database is gewoon iets dat rijen en kolommen heeft. 72 00:03:10,350 --> 00:03:12,850 En door de rijen en kolommen, Ik letterlijk iets betekenen 73 00:03:12,850 --> 00:03:21,860 als dit, dus waar we zouden kunnen hebben van de de naam van een veld en het type hier. 74 00:03:21,860 --> 00:03:25,800 En eigenlijk, laat me nu beginnen om deze kaart te brengen. 75 00:03:25,800 --> 00:03:29,420 Dus eigenlijk, ik weet het niet Daarom heb ik trok een aparte grafiek. 76 00:03:29,420 --> 00:03:30,780 Laten we dit eenvoudig te houden. 77 00:03:30,780 --> 00:03:34,830 >> Wij hebben hier de begin van onze tafel, waar de 78 00:03:34,830 --> 00:03:40,150 dit is de naam van het veld en dit is het gegevenstype, 79 00:03:40,150 --> 00:03:41,660 en type bedoel ik het volgende. 80 00:03:41,660 --> 00:03:45,510 Is het een nummer, is het dan een string, een korte string als een woord, 81 00:03:45,510 --> 00:03:49,340 is het een paragraaf, is het ook binaire data, zoals een afbeelding? 82 00:03:49,340 --> 00:03:51,980 En laten we dit gewoon plagen apart voor slechts een moment. 83 00:03:51,980 --> 00:03:57,575 Dus voornaam, nummer, koord, groot deel van text-- 84 00:03:57,575 --> 00:03:58,450 PUBLIEK: [ONVERSTAANBAAR] 85 00:03:58,450 --> 00:03:59,616 DAVID MALAN: Ja, zo string. 86 00:03:59,616 --> 00:04:04,744 En in een database context, zullen we meestal noemen dit gebied char. 87 00:04:04,744 --> 00:04:07,660 Ik zal enkel zeggen klusje voor nu, maar we zijn ga dit te verfijnen in een moment. 88 00:04:07,660 --> 00:04:09,180 Karakter veld. 89 00:04:09,180 --> 00:04:11,365 Achternaam is waarschijnlijk hetzelfde. 90 00:04:11,365 --> 00:04:11,865 Geslacht? 91 00:04:11,865 --> 00:04:16,230 92 00:04:16,230 --> 00:04:18,310 >> Man of vrouw, dus het een char veld zou kunnen zijn. 93 00:04:18,310 --> 00:04:21,380 Het kan ofwel citaat zijn, unquote "Male" of offerte, unquote "female" 94 00:04:21,380 --> 00:04:23,650 of het kan m of F. 95 00:04:23,650 --> 00:04:26,540 Wilt u meer inclusief te zijn, je zou een derde waarde nodig 96 00:04:26,540 --> 00:04:28,640 of een soort van andere veld helemaal. 97 00:04:28,640 --> 00:04:31,350 En dus kon je trouw valse gebruiken. 98 00:04:31,350 --> 00:04:35,036 Het veld kon mannelijke worden genoemd, en dan zou je kunnen zeggen waar of onwaar. 99 00:04:35,036 --> 00:04:38,160 Maar dat betekent niet per se vast te leggen alle informatie die je zou willen. 100 00:04:38,160 --> 00:04:41,118 >> Dus het blijkt dat er een ander type van het veld die kunnen hier van pas komen 101 00:04:41,118 --> 00:04:46,040 in een typische databank genoemd enum, waar het een karakterveld, 102 00:04:46,040 --> 00:04:50,480 maar u, de ontwerper, krijgen opsomming gegeven van de mogelijke waarden, 103 00:04:50,480 --> 00:04:54,630 Like Quote, unquote "mannelijk", citaat, unquote "vrouwelijke", enzovoort. 104 00:04:54,630 --> 00:04:57,620 Zodat ongeacht waarde is in uw database, 105 00:04:57,620 --> 00:05:00,670 is inderdaad character-based, maar het één van die waarden. 106 00:05:00,670 --> 00:05:03,520 We zouden waarschijnlijk niet wilt dat een enum voor voornaam of achternaam. 107 00:05:03,520 --> 00:05:05,630 Anders zouden we hebben te noemen, zoals de naam 108 00:05:05,630 --> 00:05:09,570 vloeit voort uit, letterlijk elke mogelijk voornaam en achternaam. 109 00:05:09,570 --> 00:05:13,960 >> OK, dus ID wat moet een ID te zijn? 110 00:05:13,960 --> 00:05:15,200 Ja, dus misschien een nummer. 111 00:05:15,200 --> 00:05:17,870 Dus laten we stok met dat voor nu, nummer. 112 00:05:17,870 --> 00:05:22,010 En door, aantal is een beetje te breed nu. 113 00:05:22,010 --> 00:05:23,900 Voor het eind van de tweede dag, ik voel me alsof we 114 00:05:23,900 --> 00:05:25,280 zou iets preciezer. 115 00:05:25,280 --> 00:05:29,280 Nummer zou kunnen betekenen, zoals het kon iets als 1.236 zijn. 116 00:05:29,280 --> 00:05:31,500 En dat is waarschijnlijk niet wat we bedoelen met een ID. 117 00:05:31,500 --> 00:05:34,635 Wat doen we waarschijnlijk bedoelen met een ID? 118 00:05:34,635 --> 00:05:36,382 >> PUBLIEK: [ONVERSTAANBAAR] 119 00:05:36,382 --> 00:05:38,590 DAVID MALAN: Oh, OK, dus misschien is het niet eens een nummer. 120 00:05:38,590 --> 00:05:42,840 Misschien is het eigenlijk een unieke identificatiecode dat is een string, zoals een gebruikersnaam. 121 00:05:42,840 --> 00:05:44,580 Dus absoluut, zou kunnen zijn. 122 00:05:44,580 --> 00:05:46,730 Ik denk dat iemand waarschijnlijk betekende numerieke, dat wel. 123 00:05:46,730 --> 00:05:48,460 Dus laten we blijven dat. 124 00:05:48,460 --> 00:05:49,320 Wat voor soort nummer? 125 00:05:49,320 --> 00:05:51,960 Wat is een precise-- een integer. 126 00:05:51,960 --> 00:05:56,710 Dus een getal zoals 0, 1, 2, 3, dus we zullen dit een integer noemen. 127 00:05:56,710 --> 00:05:58,909 En zelfs dan, ik kon worden muggenziften, het is 128 00:05:58,909 --> 00:06:00,700 niet eigenlijk gewoon een algemene integer je wilt. 129 00:06:00,700 --> 00:06:04,340 U waarschijnlijk niet wilt negatieve waarden, gewoon omdat het voelt gewoon raar. 130 00:06:04,340 --> 00:06:06,070 Wilt u waarschijnlijk positieve gehele getallen. 131 00:06:06,070 --> 00:06:07,920 Zo kunt u ook uitdrukken dat in een databank 132 00:06:07,920 --> 00:06:09,450 maar voor nu, zullen we zeggen integer. 133 00:06:09,450 --> 00:06:10,650 >> E-mail? 134 00:06:10,650 --> 00:06:13,550 Dit is waarschijnlijk gewoon-- een wat? 135 00:06:13,550 --> 00:06:14,460 >> PUBLIEK: [ONVERSTAANBAAR] 136 00:06:14,460 --> 00:06:16,980 >> DAVID MALAN: Het is een e-mail, maar dat is karakters, toch? 137 00:06:16,980 --> 00:06:19,813 Het heeft slechts een funky karakter als een "at" symbool of iets anders, 138 00:06:19,813 --> 00:06:21,580 maar het is nog steeds een teken veld. 139 00:06:21,580 --> 00:06:23,900 En postadres? 140 00:06:23,900 --> 00:06:25,360 Karakter veld. 141 00:06:25,360 --> 00:06:31,400 Dus dat is een mooi begin, maar laten we nu een beetje nauwkeuriger. 142 00:06:31,400 --> 00:06:34,540 >> Zo blijkt dat in een database, je vaak 143 00:06:34,540 --> 00:06:39,120 een keuze hebben dan meer verfijnde versies van deze dingen. 144 00:06:39,120 --> 00:06:44,330 In feite, in een typisch SQL-database, SQL, of algemener, relationele database, 145 00:06:44,330 --> 00:06:46,680 databases met rijen en kolommen, je vaak 146 00:06:46,680 --> 00:06:53,610 naar niet alleen het type opgeven field-- laat me wat ruimte hier-- 147 00:06:53,610 --> 00:06:56,600 maar ook de lengte. 148 00:06:56,600 --> 00:06:59,900 >> Hoe lang is een voornaam? 149 00:06:59,900 --> 00:07:07,060 Ik denk dat, D-A-V-I-D. OK, ik heb het waarschijnlijk net beledigd als de helft 150 00:07:07,060 --> 00:07:11,260 van de mensen in de kamer, rechts, omdat uw namen zijn langer dan vijf 151 00:07:11,260 --> 00:07:16,608 brieven, dus vijf lijkt een beetje egoïstisch en naïef, dus wat is een betere waarde? 152 00:07:16,608 --> 00:07:19,320 153 00:07:19,320 --> 00:07:24,330 10, al goed, en ik denk dat wij zijn OK in de kamer. 154 00:07:24,330 --> 00:07:26,254 13? 155 00:07:26,254 --> 00:07:27,541 30? 156 00:07:27,541 --> 00:07:29,540 Waarom weet ik niet nemen aanpak eerder toen we 157 00:07:29,540 --> 00:07:31,081 hadden het over arrays en geheugen? 158 00:07:31,081 --> 00:07:32,450 Waarom heb ik niet zeggen, net als 1000? 159 00:07:32,450 --> 00:07:35,260 Niemand naam gaat langer dan 1000 zijn. 160 00:07:35,260 --> 00:07:36,706 Terugduwen. 161 00:07:36,706 --> 00:07:38,005 >> PUBLIEK: [ONVERSTAANBAAR] 162 00:07:38,005 --> 00:07:40,130 DAVID MALAN: Ja, het is verkwistend, rechts, in het bijzonder 163 00:07:40,130 --> 00:07:44,630 als de meeste namen slechts vijf of 10 of 15 tekens, dat is heel verspilling. 164 00:07:44,630 --> 00:07:45,810 Dus weet je wat? 165 00:07:45,810 --> 00:07:48,020 Dit is een soort van een moeilijke vraag. 166 00:07:48,020 --> 00:07:51,721 Nu, we kunnen zeker analyseren Engels en namen een andere taal's 167 00:07:51,721 --> 00:07:54,470 en erachter te komen, nou ja, wat is de average-- gemiddelde niet echt 168 00:07:54,470 --> 00:07:57,150 helpen ons-- wat is de max waarschijnlijk wat we echt willen. 169 00:07:57,150 --> 00:07:59,920 Maar het blijkt dat we nog hebben enkele keuze over het type hier. 170 00:07:59,920 --> 00:08:03,400 >> In een typisch SQL-database, je een char veld hebben iets genaamd 171 00:08:03,400 --> 00:08:07,505 en ook een varchar, V-A-R, variabele char veld. 172 00:08:07,505 --> 00:08:08,630 En het verschil is dit. 173 00:08:08,630 --> 00:08:12,400 Een char veld, de ontwerper, moeten aangeven op voorhand 174 00:08:12,400 --> 00:08:14,900 de exacte lengte van het veld. 175 00:08:14,900 --> 00:08:20,530 Dus misschien de eerste naam als 20 voelt soort veilig. 176 00:08:20,530 --> 00:08:23,950 Zou kunnen hebben om wat googlen doen te zien of dat is eigenlijk veilig genoeg. 177 00:08:23,950 --> 00:08:26,910 Er is waarschijnlijk een naam met 21 karakters, maar voor nu, veronderstel 20 178 00:08:26,910 --> 00:08:27,620 is veilig. 179 00:08:27,620 --> 00:08:30,070 >> Een char veld zou impliceren in een database die u 180 00:08:30,070 --> 00:08:33,289 zijn met behulp van 20 en altijd 20 tekens. 181 00:08:33,289 --> 00:08:37,419 Nu al is het maar de D-A-V-I-D, 15 van die zijn gewoon gaan blanco karakters, 182 00:08:37,419 --> 00:08:40,450 maar je bent nog steeds met behulp van alle 20 bytes. 183 00:08:40,450 --> 00:08:46,302 Een varchar veld daarentegen betekent de snaar moet maximaal 20 tekens 184 00:08:46,302 --> 00:08:48,260 maar als het is slechts vijf, je alleen gaat gebruiken 185 00:08:48,260 --> 00:08:51,270 vijf, zes of misschien een bijzondere waarde aan het einde, 186 00:08:51,270 --> 00:08:54,980 als dat 0 bespraken we dat betekent het einde van een teken 187 00:08:54,980 --> 00:08:56,790 sequentie in het geheugen. 188 00:08:56,790 --> 00:08:59,950 >> Dus als je denkt u zou kunnen kiezen char 189 00:08:59,950 --> 00:09:05,240 versus varchar, gezien het feit dat trade-off? 190 00:09:05,240 --> 00:09:09,321 Char maakt dat veel karakters, varchar gebruikt niet meer dan dat aantal tekens. 191 00:09:09,321 --> 00:09:10,196 PUBLIEK: [ONVERSTAANBAAR] 192 00:09:10,196 --> 00:09:13,859 193 00:09:13,859 --> 00:09:16,900 DAVID MALAN: OK, als je weet dat de lengte van de string mooie dwingende 194 00:09:16,900 --> 00:09:19,316 om gewoon gebruik maken char, want als je weet het, zet het neer. 195 00:09:19,316 --> 00:09:23,390 En misschien is dat het geval voor een zip code, in de VS, in ieder geval, 02138, 196 00:09:23,390 --> 00:09:26,660 Het gaat altijd om vijf tekens totdat u toevoegt het dashboard vier. 197 00:09:26,660 --> 00:09:29,750 Maar je zou kunnen sommige waarden te hebben waar je altijd weet de lengte. 198 00:09:29,750 --> 00:09:32,310 Of misschien staat symbolen, zoals New York voor New York, 199 00:09:32,310 --> 00:09:33,811 en MA voor Massachusetts in de Verenigde Staten. 200 00:09:33,811 --> 00:09:36,560 Misschien hebben jullie sommige situaties wanneer dat is volstrekt redelijk, 201 00:09:36,560 --> 00:09:39,520 maar tegen die logica, waarom zijn we zelfs overthinking dit? 202 00:09:39,520 --> 00:09:41,800 Waarom gaan we niet gewoon gebruik maken van varchar en dan zullen we gewoon 203 00:09:41,800 --> 00:09:46,730 Gebruik altijd twee karakters hoe dan ook, of altijd gebruik maken van vijf tekens eigenlijk? 204 00:09:46,730 --> 00:09:50,300 Waarom niet gewoon sparen voor varchar alles, door die logica? 205 00:09:50,300 --> 00:09:51,677 Er moet een addertje onder het gras. 206 00:09:51,677 --> 00:09:52,552 PUBLIEK: [ONVERSTAANBAAR] 207 00:09:52,552 --> 00:09:54,952 208 00:09:54,952 --> 00:09:56,660 DAVID MALAN: Kon schrijf iets mis. 209 00:09:56,660 --> 00:09:58,090 Dus dat is waar. 210 00:09:58,090 --> 00:10:01,030 Maar zelfs dan kunnen ze niet gebruiken meer geheugen dan ik toe te wijzen. 211 00:10:01,030 --> 00:10:03,340 Ik heb nog steeds de finale zeggen over de lengte, 212 00:10:03,340 --> 00:10:06,780 zodat ze niet per ongeluk te maken die fout, maar een goede gedachte. 213 00:10:06,780 --> 00:10:10,510 Het is meer subtiel, maar het is zeer verwante onze discussie, in feite, van arrays 214 00:10:10,510 --> 00:10:12,390 en gelinkte lijsten eerder. 215 00:10:12,390 --> 00:10:16,290 >> Het blijkt dat een databank als weet dat alle waarden 216 00:10:16,290 --> 00:10:19,250 een vaste lengte, ook al sommige van deze waarden zijn leeg, 217 00:10:19,250 --> 00:10:22,484 soort van esthetisch leeg, D-A-V-I-D en vervolgens 15 blanks, 218 00:10:22,484 --> 00:10:24,650 Het blijkt dat als elke veld dezelfde lengte, 219 00:10:24,650 --> 00:10:28,670 net als een reeks had al haar spullen rug aan rug aan rug aan rug, zodat 220 00:10:28,670 --> 00:10:33,480 je kon gewoon plus 1 aan om de volgende te krijgen waarde, hetzelfde idee in een database tabel. 221 00:10:33,480 --> 00:10:37,550 Als al je karakter strings dezelfde lengte, 222 00:10:37,550 --> 00:10:39,390 je hebt wat random access genoemd. 223 00:10:39,390 --> 00:10:41,850 Als alle snaren zijn van lengte 20, doe je niet zomaar 224 00:10:41,850 --> 00:10:45,230 do plus 1 je gewoon plus 20, plus 20, plus 20, plus 20, 225 00:10:45,230 --> 00:10:48,775 en je kunt heel snel scrollen door of zoeken door al uw gegevens. 226 00:10:48,775 --> 00:10:54,420 >> Een variabele char veld daarentegen hoeft niet altijd 20 tekens. 227 00:10:54,420 --> 00:10:58,000 Het zou kunnen hebben 20 en vervolgens 15 en daarna 19 en vervolgens 10, 228 00:10:58,000 --> 00:11:00,720 en dus als je wilt zoeken doorheen, kun je niet zomaar blindelings 229 00:11:00,720 --> 00:11:03,050 voeg 20 bytes naar de volgende te gaan. 230 00:11:03,050 --> 00:11:07,280 Je hebt letterlijk te zoeken door middel omdat de rand van de datastructuur, 231 00:11:07,280 --> 00:11:08,340 als je wil, is slecht geklede. 232 00:11:08,340 --> 00:11:11,480 Het gaat soort in en uit op basis van de lengte van de snaar. 233 00:11:11,480 --> 00:11:14,460 Dus als je weet dat de lengte, zoals Kareem zegt, gebruik dan een char veld, 234 00:11:14,460 --> 00:11:16,460 want je krijgt dat efficiency van zijn 235 00:11:16,460 --> 00:11:19,170 in staat om door middel van het sneller als u op zoek bent naar data, 236 00:11:19,170 --> 00:11:20,550 anders wordt een variabele gebruiken. 237 00:11:20,550 --> 00:11:24,450 >> Helaas, ik heb geen goed antwoord hoelang de naam moet, 238 00:11:24,450 --> 00:11:26,360 maar voor iets als een naam, zou ik zeggen 239 00:11:26,360 --> 00:11:28,470 een varchar is gebruikelijk want het gaat niet 240 00:11:28,470 --> 00:11:30,430 een vaste lengte voor iedereen. 241 00:11:30,430 --> 00:11:33,650 20, ik weet het niet, 20 voelt een beetje krap. 242 00:11:33,650 --> 00:11:36,460 Laten we zeggen 50, 50. 243 00:11:36,460 --> 00:11:39,210 Het maakt eigenlijk niet kost je dat veel meer te zeggen 50 in plaats van 40, 244 00:11:39,210 --> 00:11:41,260 maar op een gegeven moment moet je om een ​​oordeel te bellen. 245 00:11:41,260 --> 00:11:43,090 >> Zeer vaak, eerlijk gezegd, voor [? historische?] 246 00:11:43,090 --> 00:11:47,670 redenen, ook al is het overdreven, wil zeggen 255, want enige tijd geleden, 247 00:11:47,670 --> 00:11:51,440 in populaire database systemen, zoals MySQL, een gratis open source tool 248 00:11:51,440 --> 00:11:53,790 dat veel bedrijven zoals zelfs Facebook gebruikt, 249 00:11:53,790 --> 00:11:56,654 dit was het maximale standaard dus mensen gewoon met het ging. 250 00:11:56,654 --> 00:11:59,070 Dus niet onredelijk, maar we zullen Gebruik een beetje meer intuïtie 251 00:11:59,070 --> 00:12:02,970 en zeggen: zeker 50, dat is waarschijnlijk een beetje overdreven. 252 00:12:02,970 --> 00:12:05,720 >> Gender, ik hou enum, en zo kunnen we dus 253 00:12:05,720 --> 00:12:08,760 opsommen mannelijk of vrouwelijk, of misschien efficiënter, 254 00:12:08,760 --> 00:12:13,420 m of F of een andere symboliek, maar enum voelt als een goede keuze daar. 255 00:12:13,420 --> 00:12:16,740 Voor alle duidelijkheid, gender kon gewoon een varchar zijn, 256 00:12:16,740 --> 00:12:19,090 en we konden gewoon allemaal eens zijn aardige mensen, 257 00:12:19,090 --> 00:12:21,010 om altijd op dezelfde waarden zijn. 258 00:12:21,010 --> 00:12:22,720 Man of vrouw of zo. 259 00:12:22,720 --> 00:12:27,800 >> Maar het probleem is dus dat we konden een fout maakt, zoals [ONVERSTAANBAAR] voorgesteld 260 00:12:27,800 --> 00:12:29,140 eerder in een andere context. 261 00:12:29,140 --> 00:12:32,780 Als we een fout maken, konden we krijgen onjuiste waarden in onze database. 262 00:12:32,780 --> 00:12:36,320 Dus wat is leuk over databases zoals Oracle en MySQL en anderen, 263 00:12:36,320 --> 00:12:39,280 is dat je deze laatste laag van de defensie, waar 264 00:12:39,280 --> 00:12:43,010 uw DBA, database administrator, wie is het ontwerpen van deze tabel als we 265 00:12:43,010 --> 00:12:46,440 zijn verbaal, kon zetten in plaats van een enum dat 266 00:12:46,440 --> 00:12:51,250 dat beschermt tegen door vermelding man, vrouw, en dus niemand 267 00:12:51,250 --> 00:12:54,230 anders geen programmeur kan per ongeluk Steek een andere waarde. 268 00:12:54,230 --> 00:12:55,480 Dus dit zou een goede zaak zijn. 269 00:12:55,480 --> 00:12:56,660 Dit is een functie. 270 00:12:56,660 --> 00:13:00,760 >> Dus een ID, uitgaande van een numerieke ID, is Waarschijnlijk moet een positief geheel getal zijn. 271 00:13:00,760 --> 00:13:04,380 En we soms wel kans op lengte te bespreken. 272 00:13:04,380 --> 00:13:06,830 Je zou het niet meestal geeft u een nummer hier 273 00:13:06,830 --> 00:13:11,310 zou u in plaats daarvan opgeven dit is een int, of een grote int, 274 00:13:11,310 --> 00:13:12,980 zoals ze meestal genoemd. 275 00:13:12,980 --> 00:13:18,840 Maar meestal een integer zou zijn, laten we zeggen, 4 bytes. 276 00:13:18,840 --> 00:13:23,694 En als het 4 bytes, dat is hoeveel bits? 277 00:13:23,694 --> 00:13:24,630 >> PUBLIEK: [ONVERSTAANBAAR] 278 00:13:24,630 --> 00:13:26,610 >> DAVID MALAN: 32 bits. 279 00:13:26,610 --> 00:13:30,270 Dus hoeveel gebruikers kunnen we in onze database als ze hebben allemaal een ID 280 00:13:30,270 --> 00:13:33,320 en deze ID moet uniek zijn? 281 00:13:33,320 --> 00:13:36,780 32 bits betekent dat we patronen één, twee, drie, vier, five-- 282 00:13:36,780 --> 00:13:41,000 dus hoe veel verschillende patronen van nullen en die kun je hebben als er 32? 283 00:13:41,000 --> 00:13:43,235 Dat is hetzelfde als vragen wat zijn twee van de 32? 284 00:13:43,235 --> 00:13:46,472 285 00:13:46,472 --> 00:13:48,430 Het is een groot getal dat Ik kan niet helemaal goed te krijgen, 286 00:13:48,430 --> 00:13:50,270 maar ik weet dat het ongeveer 4 miljard. 287 00:13:50,270 --> 00:13:53,970 Dus dit betekent dat uw database tabel kan hebben 4000000000 gebruikers en dat is het. 288 00:13:53,970 --> 00:13:56,410 >> Dus dit is een interessante ontwerp implicatie. 289 00:13:56,410 --> 00:14:00,840 Een behoorlijk aantal bedrijven hebben besloten, misschien niet zo veel 290 00:14:00,840 --> 00:14:04,860 voor de gebruikers tafel, omdat het hebben van 4 miljard leden is een zeldzaam probleem. 291 00:14:04,860 --> 00:14:08,410 Dit is een soort van een Facebook-stijl probleem, niet een typisch bedrijf probleem. 292 00:14:08,410 --> 00:14:12,670 Maar misschien als je transactielogboeken of een soort van data die voortdurend 293 00:14:12,670 --> 00:14:15,610 wordt geschreven in uw database die absoluut miljarden zou kunnen hebben 294 00:14:15,610 --> 00:14:18,900 en miljarden rijen, en u een integer gebruikt voor, 295 00:14:18,900 --> 00:14:22,750 wat er gaat zo snel gebeuren krijg je te roeien nummer 4000000000 296 00:14:22,750 --> 00:14:26,210 en dan probeer je het invoegen 4000000000 en 1, bij wijze van spreken? 297 00:14:26,210 --> 00:14:29,610 Ik ben het vereenvoudigen van de nummers een beetje. 298 00:14:29,610 --> 00:14:33,740 >> U kunt bezuinigen, ik bedoel je moet het een of andere manier af te handelen. 299 00:14:33,740 --> 00:14:37,910 En wat een computer gewoonlijk zou doen, denken zelfs van vanmorgen, 300 00:14:37,910 --> 00:14:42,430 als je een 4-bits waarde zoals 1, 1, 1, 1, die 301 00:14:42,430 --> 00:14:44,920 alleen maar om 's ochtends te binden samen om de middag, wat 302 00:14:44,920 --> 00:14:48,369 betekent dit nummer te vertegenwoordigen in binaire? 303 00:14:48,369 --> 00:14:49,410 Oké, we zullen het gemakkelijker maken. 304 00:14:49,410 --> 00:14:53,310 Wat betekent dit nummer vertegenwoordigen in binaire? 305 00:14:53,310 --> 00:14:56,794 Oké, we zullen het makkelijker te maken, wat betekent dit vertegenwoordigen in binaire? 306 00:14:56,794 --> 00:14:57,460 PUBLIEK: Drie. 307 00:14:57,460 --> 00:14:59,670 DAVID MALAN: Three, omdat we hebben degenen column-- 308 00:14:59,670 --> 00:15:00,450 [GELACH] 309 00:15:00,450 --> 00:15:01,350 Oef! 310 00:15:01,350 --> 00:15:03,980 We hadden de kolom degenen en de tweeën kolom. 311 00:15:03,980 --> 00:15:07,250 Dus stel dat, inderdaad, onze [? infield?] waren niet 32 ​​bits, 312 00:15:07,250 --> 00:15:13,440 maar het waren twee bits, kunnen wij tellen vanaf gebruikersnummer 0, 1, 2, 3, 313 00:15:13,440 --> 00:15:18,040 en dan zijn we soort terug naar de gebruiker 00 opnieuw. 314 00:15:18,040 --> 00:15:19,739 Dus dit is wat meestal gebeurt. 315 00:15:19,739 --> 00:15:22,780 Als je ooit de expression-- heb gehoord waarschijnlijk niet, maar als je have-- 316 00:15:22,780 --> 00:15:26,500 integer overflow, waar u houden flipping al uw beetjes 317 00:15:26,500 --> 00:15:29,640 de grootste mogelijke waarden, en dan ben je uit bits, 318 00:15:29,640 --> 00:15:30,850 wat zou typisch gebeuren? 319 00:15:30,850 --> 00:15:32,280 Waarom zeg ik 00? 320 00:15:32,280 --> 00:15:33,220 Nou, dit is drie. 321 00:15:33,220 --> 00:15:34,230 Hoe kan ik 4 vertegenwoordigen? 322 00:15:34,230 --> 00:15:36,890 323 00:15:36,890 --> 00:15:38,915 Hoe kan ik vertegenwoordig de voor nummer 4 in binaire? 324 00:15:38,915 --> 00:15:39,790 PUBLIEK: [ONVERSTAANBAAR] 325 00:15:39,790 --> 00:15:41,780 DAVID MALAN: een-- ja, zeg niet 100 per se, 326 00:15:41,780 --> 00:15:44,190 omdat het de verkeerde connotatie, maar 1-0-0. 327 00:15:44,190 --> 00:15:48,920 Zodat getal 1-0-0 inderdaad correct, maar als je slechts twee bits, 328 00:15:48,920 --> 00:15:50,820 wat heb je eigenlijk gedaan? 329 00:15:50,820 --> 00:15:53,219 Je hebt dan tot 00 gerold. 330 00:15:53,219 --> 00:15:54,760 En inderdaad, dat is wat er zou gebeuren. 331 00:15:54,760 --> 00:15:56,884 Eigenlijk kun je denkt over dit meer vertrouwelijk. 332 00:15:56,884 --> 00:15:59,350 Misschien herinner je je, wat, 16 jaar geleden, de wereld 333 00:15:59,350 --> 00:16:03,380 werd verondersteld om te eindigen als de Y2K-probleem is gebeurd. 334 00:16:03,380 --> 00:16:04,330 Waarom was dat? 335 00:16:04,330 --> 00:16:08,170 Nou de meeste computers, voor redelijke beslissingen, 336 00:16:08,170 --> 00:16:15,320 waren het opslaan van nummers, zoals de jaar 1975 of het jaar 1999 337 00:16:15,320 --> 00:16:19,010 door gewoon met behulp van twee cijfers in het geheugen van de computer. 338 00:16:19,010 --> 00:16:21,950 Dus natuurlijk, wat er gebeurt als je naar het jaar 2000, 339 00:16:21,950 --> 00:16:25,790 je naar dit, of liever gezegd, ja. 340 00:16:25,790 --> 00:16:30,120 Dus ga je naar het jaar 2000, maar als je bent alleen met behulp van twee cijfers ziet het er 341 00:16:30,120 --> 00:16:32,660 net als het jaar 00 en dus je hebt rolde. 342 00:16:32,660 --> 00:16:36,820 En daarom veel systemen moest worden bijgewerkt op het moment. 343 00:16:36,820 --> 00:16:42,500 >> Dus met dat gezegd, bedrijven als Facebook stuiten dit. 344 00:16:42,500 --> 00:16:46,147 De enige manier om de handgreep situatie, eerlijk gezegd, is om het te anticiperen. 345 00:16:46,147 --> 00:16:47,980 Of de schoonste manier om behandelen deze situatie 346 00:16:47,980 --> 00:16:50,330 is om het te anticiperen, zodat je dat niet doet moeten later wijzigingen aanbrengen. 347 00:16:50,330 --> 00:16:51,970 Dus in plaats van 8 bytes, weet je wat? 348 00:16:51,970 --> 00:16:54,261 Ik ga forward-thinking Hier, hoewel het 349 00:16:54,261 --> 00:16:56,760 een beetje optimistisch dat we gaan hebben 4 miljard 350 00:16:56,760 --> 00:16:58,850 en 1 gebruikers op onze website. 351 00:16:58,850 --> 00:17:01,790 Maar laten we gewoon gebruik maken van 8 bytes, of 64 bits, die in het algemeen zou 352 00:17:01,790 --> 00:17:05,640 riep een grote integer, heel technisch. 353 00:17:05,640 --> 00:17:10,280 En dat betekent gewoon je kunt hebben nog meer cijfers in uw nummer. 354 00:17:10,280 --> 00:17:12,599 Dit is echter een belangrijke ontwerpbeslissing, 355 00:17:12,599 --> 00:17:16,400 want als je een nummer te kiezen dat heeft te weinig stukjes van expressiviteit 356 00:17:16,400 --> 00:17:19,089 je kon eigenlijk maken een bug in de software. 357 00:17:19,089 --> 00:17:21,750 >> Oké, dus laten we wrap up met e-mail en postadres. 358 00:17:21,750 --> 00:17:26,369 Dus e-mail, hoe lang moet een e-mailadres te zijn? 359 00:17:26,369 --> 00:17:26,869 50. 360 00:17:26,869 --> 00:17:29,220 Ik heb echt geen idee, maar het is waarschijnlijk iets dergelijks, 361 00:17:29,220 --> 00:17:32,261 omdat anders niemand gaat schrijf je als het te lang wordt, dus 50, 362 00:17:32,261 --> 00:17:33,360 laten we gaan met het voor nu. 363 00:17:33,360 --> 00:17:35,770 Postadres, hoe lang moet dat zijn? 364 00:17:35,770 --> 00:17:38,325 365 00:17:38,325 --> 00:17:39,200 PUBLIEK: [ONVERSTAANBAAR] 366 00:17:39,200 --> 00:17:41,900 367 00:17:41,900 --> 00:17:43,890 >> DAVID MALAN: Het is niet gewoon een postcode, dat wel. 368 00:17:43,890 --> 00:17:45,720 Postadres, hoorde ik. 369 00:17:45,720 --> 00:17:50,720 Dus dit is als 1 Brattle Square, komma, Cambridge Mass., komma, 02138. 370 00:17:50,720 --> 00:17:53,860 En in feite, laat me gewoon trek een beetje werkblad hier. 371 00:17:53,860 --> 00:17:56,510 Dit voelt als het is een gemiste kans. 372 00:17:56,510 --> 00:18:01,480 Als we 1 Brattle Square, komma, Cambridge MA 02138, 373 00:18:01,480 --> 00:18:04,510 Ik voel me alsof we beter kunnen doen dan alleen postadres. 374 00:18:04,510 --> 00:18:07,100 Waarom gaan we niet ontploffen dit een beetje? 375 00:18:07,100 --> 00:18:08,030 Wat krijg ik bij? 376 00:18:08,030 --> 00:18:10,970 Wat moeten we in plaats daarvan hebben voor onze rijen hier, misschien? 377 00:18:10,970 --> 00:18:12,260 >> PUBLIEK: [ONVERSTAANBAAR] 378 00:18:12,260 --> 00:18:17,579 >> DAVID MALAN: Ja, dus laten we noem het street_number, 379 00:18:17,579 --> 00:18:20,620 en een underscore is gewoon een gemeenschappelijk manier van het hebben van wat lijkt op een ruimte, 380 00:18:20,620 --> 00:18:22,360 maar het is niet, eigenlijk. 381 00:18:22,360 --> 00:18:26,240 Street, en vervolgens stad-- spijt? 382 00:18:26,240 --> 00:18:28,440 >> PUBLIEK: [ONVERSTAANBAAR] 383 00:18:28,440 --> 00:18:29,690 DAVID MALAN: We kunnen dat doen. 384 00:18:29,690 --> 00:18:30,702 Lijn één, lijn twee. 385 00:18:30,702 --> 00:18:32,410 Waarom niet houden we het eenvoudig voor nu, 386 00:18:32,410 --> 00:18:34,840 maar dat is absoluut een acceptabele beslissing. 387 00:18:34,840 --> 00:18:38,180 En dan staat, en dan laten we een beetje US-centric voor nu 388 00:18:38,180 --> 00:18:42,040 en gewoon doen postcode, enkel omdat het zal leiden tot een interessante fout 389 00:18:42,040 --> 00:18:43,090 of probleem hier. 390 00:18:43,090 --> 00:18:44,655 Dus stel dat is nu ons adres. 391 00:18:44,655 --> 00:18:47,280 Het is een beetje vervelend dat we hebben al deze meer velden, 392 00:18:47,280 --> 00:18:49,200 maar nu kunnen we taggen dingen een beetje beter. 393 00:18:49,200 --> 00:18:53,210 >> Dus nu straat nummer waarschijnlijk moet niet een char zijn, zou het? 394 00:18:53,210 --> 00:18:54,835 Wat zou het zijn? 395 00:18:54,835 --> 00:18:55,710 PUBLIEK: [ONVERSTAANBAAR] 396 00:18:55,710 --> 00:18:57,835 DAVID MALAN: Misschien een aantal als een integer weer? 397 00:18:57,835 --> 00:19:00,170 Een grote integer? 398 00:19:00,170 --> 00:19:02,170 U heeft waarschijnlijk niet leven op 4 miljard Main Street 399 00:19:02,170 --> 00:19:03,490 of iets gek als dat. 400 00:19:03,490 --> 00:19:06,850 Dus integer is waarschijnlijk prima, maar heeft iemand 401 00:19:06,850 --> 00:19:13,880 ooit heeft geleefd op een adres als 1A Brattle Square, of 1 en 1/2? 402 00:19:13,880 --> 00:19:17,030 Deze dingen bestaan, helaas, zelfs als u er niet gewoond, 403 00:19:17,030 --> 00:19:21,240 er zijn deze anomalieën achtige appartement 1A, 1B, 1C. 404 00:19:21,240 --> 00:19:24,260 Dus weet je wat, we waarschijnlijk moet niet gaan met integer, 405 00:19:24,260 --> 00:19:27,440 anders gaan we om wat omzet verliezen. 406 00:19:27,440 --> 00:19:29,920 >> Char veld, misschien? 407 00:19:29,920 --> 00:19:30,870 Ik weet niet hoe lang weet. 408 00:19:30,870 --> 00:19:33,370 Het is waarschijnlijk niet van plan om dat lang, dus 10 of iets dergelijks. 409 00:19:33,370 --> 00:19:34,950 Niemand gaat schrijven een langere nummer, misschien. 410 00:19:34,950 --> 00:19:37,070 Maar nogmaals, moeten we waarschijnlijk geven meer aandacht aan dat. 411 00:19:37,070 --> 00:19:39,900 Misschien google, doe wat onderzoek, maar we zullen gaan met onze lef voor nu. 412 00:19:39,900 --> 00:19:44,565 Straten, char, 50, ik weet het niet. 413 00:19:44,565 --> 00:19:46,940 Op een gegeven moment, is niemand gaat te schrijven op een envelop, 414 00:19:46,940 --> 00:19:49,350 ook, dus er is waarschijnlijk sommige bovengrenzen daar. 415 00:19:49,350 --> 00:19:54,200 Stad, zelfde, zeker, dus char 50. 416 00:19:54,200 --> 00:19:59,120 >> Staat, kan de VS-centric voor nu. 417 00:19:59,120 --> 00:20:01,850 Dus zou het een lijst te zijn, zo vriendelijk van een beslissing te nemen, staat. 418 00:20:01,850 --> 00:20:04,000 Het zou kunnen zijn als twee personages. 419 00:20:04,000 --> 00:20:06,140 Dus eigenlijk, misschien, ik bleef maar zeggen char. 420 00:20:06,140 --> 00:20:09,420 Ik bedoel waarschijnlijk varchar, voor sommige efficiency, 421 00:20:09,420 --> 00:20:12,240 maar we zullen terug te komen die beslissing in een moment. 422 00:20:12,240 --> 00:20:16,150 Kan een char lengte 2 voor staat. 423 00:20:16,150 --> 00:20:20,670 Als in de VS hebben ze, zoals MA, Massachusetts, NY, New York, NJ, New 424 00:20:20,670 --> 00:20:22,100 Jersey, enzovoort. 425 00:20:22,100 --> 00:20:23,630 Dus het zou kunnen worden vastgesteld op dat. 426 00:20:23,630 --> 00:20:25,900 DC Washington DC. 427 00:20:25,900 --> 00:20:29,915 >> Maar ik denk dat, Olivier, je voorgesteld een andere benadering. 428 00:20:29,915 --> 00:20:30,790 PUBLIEK: [ONVERSTAANBAAR] 429 00:20:30,790 --> 00:20:33,670 DAVID MALAN: Ja, dus het is een beetje vervelend in te typen, 430 00:20:33,670 --> 00:20:37,890 maar een enum misschien meer zin te maken, want zo, althans in de Verenigde Staten, 431 00:20:37,890 --> 00:20:41,320 je zou kunnen opsommen, zo moeizaam, maar je het maar één keer in uw database 432 00:20:41,320 --> 00:20:47,480 en nooit meer na te denken over het, alle 50 twee-tekencodes. 433 00:20:47,480 --> 00:20:48,660 Dus ik hou enum. 434 00:20:48,660 --> 00:20:51,720 Laten we vasthouden aan dat er, omdat Het soort dwingt meer strengheid. 435 00:20:51,720 --> 00:20:53,620 En dan code zip? 436 00:20:53,620 --> 00:20:55,306 Ik denk dat Andrew had een gedachte op dat 437 00:20:55,306 --> 00:20:56,180 PUBLIEK: [ONVERSTAANBAAR] 438 00:20:56,180 --> 00:20:57,240 DAVID MALAN: Ja, vijf of negen. 439 00:20:57,240 --> 00:20:58,323 Laten we het gewoon simpel. 440 00:20:58,323 --> 00:20:59,380 Gewoon doen vijf voor nu. 441 00:20:59,380 --> 00:21:03,070 Maar misschien kon ik gewoon doen een geheel getal, toch? 442 00:21:03,070 --> 00:21:08,750 Ik kon, maar weet je wat, ik heb gemaakt deze fout één keer, in zekere zin. 443 00:21:08,750 --> 00:21:13,110 Jaren geleden was ik migreren van Microsoft Outlook naar Gmail, 444 00:21:13,110 --> 00:21:18,640 en Outlook heeft een manier exporteren al je contacten als een Excel-bestand, 445 00:21:18,640 --> 00:21:21,280 een CSV-bestand, komma waarden bestand gescheiden. 446 00:21:21,280 --> 00:21:23,950 En ik maakte de fout, ik denken, of erop te dubbelklikken, 447 00:21:23,950 --> 00:21:27,380 zodra ik downloadde de export, tot zorg ervoor dat het leek als ik had verwacht. 448 00:21:27,380 --> 00:21:31,320 Ik moet hebben geraakt opslaan of laten auto-save trap of iets dergelijks. 449 00:21:31,320 --> 00:21:35,100 Want als ik dan geïmporteerd het in Gmail, alles werkte. 450 00:21:35,100 --> 00:21:39,910 Maar voor de komende jaren, tot op de dag, en Ik deed dit vijf, 10 jaar geleden, 451 00:21:39,910 --> 00:21:44,380 Ik ben nog steeds het vinden van vrienden die hebben adressen die er zo uitzien. 452 00:21:44,380 --> 00:21:45,700 Waarom? 453 00:21:45,700 --> 00:21:47,900 >> PUBLIEK: [ONVERSTAANBAAR] 454 00:21:47,900 --> 00:21:50,650 >> DAVID MALAN: Het duurde de 0, nou ja, eerder, 455 00:21:50,650 --> 00:21:53,810 nam de hele postcode als een getal, en daarom is het 456 00:21:53,810 --> 00:21:56,590 een toonaangevende 0, wat betekent het heeft geen betekenis. 457 00:21:56,590 --> 00:21:59,470 En dus 2138 lijkt mijn postcode zijn. 458 00:21:59,470 --> 00:22:07,100 En dit is, eerlijk gezegd, een vervelende Excel functie waarbij ik denk dat door gebrek, 459 00:22:07,100 --> 00:22:10,980 zelfs als het bedoeld is om gewoon zijn tekst, Microsoft Excel 460 00:22:10,980 --> 00:22:13,780 beslist, laat mij behulpzaam te zijn, en oh, zie ik alleen maar nummers. 461 00:22:13,780 --> 00:22:15,290 Laten we behandelen deze als getallen. 462 00:22:15,290 --> 00:22:16,790 En het kapt de nullen. 463 00:22:16,790 --> 00:22:19,165 >> Ik zweer bij God, om de paar maanden vind ik een adres, 464 00:22:19,165 --> 00:22:22,300 en uit een soort van OCD, ga ik terug in en voeg de 0, ook al heb ik nooit 465 00:22:22,300 --> 00:22:23,700 stuur mensen letters of iets dergelijks. 466 00:22:23,700 --> 00:22:25,510 Maar ik ben nog steeds het vinden van resten van deze. 467 00:22:25,510 --> 00:22:28,820 Dus dit is om te zeggen, is dit een goed idee? 468 00:22:28,820 --> 00:22:31,610 OK, nee, want iedereen in Massachusetts, in dit gebied, 469 00:22:31,610 --> 00:22:33,270 gaat een o leidende hen hebben. 470 00:22:33,270 --> 00:22:38,070 Dus laten we gaan met soortgelijke char, waarschijnlijk vijf. 471 00:22:38,070 --> 00:22:41,450 >> En hier, beseffen we zou een enum en we gebruiken 472 00:22:41,450 --> 00:22:44,600 kon opsommen 10.000 mogelijk postcodes, 473 00:22:44,600 --> 00:22:48,530 maar dat voelt alsof het is waarschijnlijk oversteken van een lijn van, zoals, voordelen. 474 00:22:48,530 --> 00:22:51,350 Als u in te voeren dat veel gegevens in uw database 475 00:22:51,350 --> 00:22:52,940 te beschermen tegen iets. 476 00:22:52,940 --> 00:22:57,400 Dus char gerealiseerd kon je typt in H-E-L-L-O als uw postcode, 477 00:22:57,400 --> 00:22:59,180 die uiteraard geen numeriek. 478 00:22:59,180 --> 00:23:01,680 Dus er is geen enkele manier, in een typische database 479 00:23:01,680 --> 00:23:05,561 alleen numerieke specificeren en slechts vijf tekens lang zijn, 480 00:23:05,561 --> 00:23:07,310 dus we gaan om te hebben om dat te doen in de code. 481 00:23:07,310 --> 00:23:11,100 We gaan dat doen in PHP of Java of welke taal we 482 00:23:11,100 --> 00:23:14,230 via de server te dwingen dat soort beperking. 483 00:23:14,230 --> 00:23:14,860 >> Whoo! 484 00:23:14,860 --> 00:23:18,322 Oké, dus vragen gewoon nog niet? 485 00:23:18,322 --> 00:23:19,780 Laten we een ander ontwerp beslissing. 486 00:23:19,780 --> 00:23:22,500 Het blijkt dat je Ook krijgt om te kiezen, 487 00:23:22,500 --> 00:23:26,600 Bij het ontwerpen van een SQL-database of typische relationele database-- waarbij 488 00:23:26,600 --> 00:23:28,790 nogmaals, relationele gewoon betekent rijen en kolommen, 489 00:23:28,790 --> 00:23:35,500 dat is hoe je je data-- organiseren en beseffen dat wat dit betekent is, 490 00:23:35,500 --> 00:23:37,740 Ik heb misleidend dat, ik ben drawing-- deze 491 00:23:37,740 --> 00:23:40,190 is wat heet de schema voor een database tabel. 492 00:23:40,190 --> 00:23:42,810 Dit is net als de specificaties voor de table-- 493 00:23:42,810 --> 00:23:48,040 maar wanneer het tijd komt om daadwerkelijk gegevens op te slaan, 494 00:23:48,040 --> 00:23:52,081 en we zullen dit doen door gewoon voorbeeld hier. 495 00:23:52,081 --> 00:23:55,080 Ik ga het openstellen van Excel, omdat Excel zal mij rijen en kolommen geven. 496 00:23:55,080 --> 00:23:58,050 En dat is precies wat Oracle en MySQL en andere hulpmiddelen zal mij geven. 497 00:23:58,050 --> 00:24:02,270 Dus ik ga gewoon te gebruiken dat omwille van de discussie's. 498 00:24:02,270 --> 00:24:05,250 Laat me ga je gang en open te stellen een representatief document hier, 499 00:24:05,250 --> 00:24:06,310 een beetje in te zoomen. 500 00:24:06,310 --> 00:24:15,200 Dus bijvoorbeeld, onze headers zijn nu voornaam, achternaam, geslacht, ID, 501 00:24:15,200 --> 00:24:20,980 e-mail, huisnummer, straat, whoops. 502 00:24:20,980 --> 00:24:25,710 Straat, stad, staat, net over op het scherm past. 503 00:24:25,710 --> 00:24:29,080 >> Wat dit betekent is dat wanneer een eerste gebruiker registreert voor mijn website, 504 00:24:29,080 --> 00:24:32,880 het gaat om iets als David Malan, m, laten we zeggen 1, 505 00:24:32,880 --> 00:24:42,910 malan@harvard.edu, straat nummer zal zijn als 1 Brattle Square, Cambridge, MA, 506 00:24:42,910 --> 00:24:44,780 02138, en vervolgens enzovoort. 507 00:24:44,780 --> 00:24:48,290 Dus als ik zeg dat een relationele database of SQL-database is rijen en kolommen, 508 00:24:48,290 --> 00:24:49,350 Ik meen dit. 509 00:24:49,350 --> 00:24:51,900 Actuele gegevens opgeslagen in rijen en kolommen. 510 00:24:51,900 --> 00:24:53,950 Dit is slechts een toeval, dat we aan het praten waren, 511 00:24:53,950 --> 00:24:56,033 en ik was gewoon het tekenen in rijen en kolommen. 512 00:24:56,033 --> 00:24:58,320 Dit is slechts het schema, de overkoepelende definitie. 513 00:24:58,320 --> 00:25:01,640 >> Dus van deze velden hier, of equivalent, daar, 514 00:25:01,640 --> 00:25:06,270 waarin de velden die u denkt dat ze Ik ben waarschijnlijk te zoeken op als ik een gebruiker 515 00:25:06,270 --> 00:25:09,200 of als ik ben de database administrator? 516 00:25:09,200 --> 00:25:12,426 Zoals, wat velden ben ik werkelijk gaande is om te zoeken aan de hand? 517 00:25:12,426 --> 00:25:13,830 >> PUBLIEK: [ONVERSTAANBAAR] 518 00:25:13,830 --> 00:25:17,690 >> DAVID MALAN: de naam, ja dus Ik hou van het feit dat-- ja, 519 00:25:17,690 --> 00:25:19,750 e-mail zou kunnen vrij normaal zijn. 520 00:25:19,750 --> 00:25:21,440 Sorry, je zei naam. 521 00:25:21,440 --> 00:25:24,030 Dus maybe-- en nogmaals, we zijn soort praten in het abstract. 522 00:25:24,030 --> 00:25:25,988 Ik weet niet waarom je zou op zoek gaan naar een naam, 523 00:25:25,988 --> 00:25:29,340 maar dat voelt redelijk als je bent op zoek naar een gebruiker. 524 00:25:29,340 --> 00:25:31,170 Misschien staten, zeker, ID. 525 00:25:31,170 --> 00:25:34,100 526 00:25:34,100 --> 00:25:36,160 >> En het is een glad helling, want ik kon 527 00:25:36,160 --> 00:25:38,890 beramen een scenario waarin misschien mijn baas heeft mij gevraagd, 528 00:25:38,890 --> 00:25:40,417 hoeveel mannen hebben wij op onze site? 529 00:25:40,417 --> 00:25:42,000 Hoeveel vrouwen hebben we op onze site? 530 00:25:42,000 --> 00:25:45,210 En dus op dat punt, wil je misschien om te zoeken op het gebied van geslacht, ook, 531 00:25:45,210 --> 00:25:45,940 en niets anders. 532 00:25:45,940 --> 00:25:47,350 Dus er is hier een trade-off. 533 00:25:47,350 --> 00:25:49,180 Nogmaals, er is geen juiste antwoord, maar er 534 00:25:49,180 --> 00:25:53,760 is een functie in de meeste SQL-databases wel indexeren, waarbij 535 00:25:53,760 --> 00:25:56,100 u, de ontwerper, de database Administrator, 536 00:25:56,100 --> 00:26:01,730 krijgt om te beslissen op voorhand welke velden van de databank moeten optimaliseren 537 00:26:01,730 --> 00:26:02,980 voor zoekopdrachten op. 538 00:26:02,980 --> 00:26:07,620 >> Je zou heel naïef zeggen, optimaliseren Dit optimaliseren dat deze optimaliseren, 539 00:26:07,620 --> 00:26:10,300 optimaliseren en dat dit, en de database 540 00:26:10,300 --> 00:26:14,882 doe wat magische ding onder de kap, en iets te doen op een zodanige wijze 541 00:26:14,882 --> 00:26:17,090 dat de volgende keer dat u zoekt op een van deze gebieden, 542 00:26:17,090 --> 00:26:18,400 zal inderdaad sneller. 543 00:26:18,400 --> 00:26:19,110 Dit is mogelijk. 544 00:26:19,110 --> 00:26:20,530 De analyse blijft niet opheffen. 545 00:26:20,530 --> 00:26:22,500 Maar er moet een prijs betaald. 546 00:26:22,500 --> 00:26:27,220 >> Als je naïef, of over-enthousiast laten we zeggen, index al deze terreinen, 547 00:26:27,220 --> 00:26:29,810 bij wijze van spreken, maken ze allemaal efficiënt doorzoekbaar, 548 00:26:29,810 --> 00:26:31,625 welke prijs ben je waarschijnlijk te betalen? 549 00:26:31,625 --> 00:26:32,500 PUBLIEK: [ONVERSTAANBAAR] 550 00:26:32,500 --> 00:26:33,090 DAVID MALAN: Prestaties. 551 00:26:33,090 --> 00:26:33,798 Wat bedoelt u? 552 00:26:33,798 --> 00:26:37,380 Prestatiewaarden, althans in de context Ik ben bespreken, is nu beter. 553 00:26:37,380 --> 00:26:38,830 Dat is de omschrijving van de indexering. 554 00:26:38,830 --> 00:26:41,180 Het zal zoekopdrachten sneller te maken. 555 00:26:41,180 --> 00:26:43,366 Dus de tijd afneemt, om zo te zeggen. 556 00:26:43,366 --> 00:26:44,240 PUBLIEK: [ONVERSTAANBAAR] 557 00:26:44,240 --> 00:26:45,031 DAVID MALAN: Space. 558 00:26:45,031 --> 00:26:46,520 Dus nogmaals, deze zijn een gemeenschappelijk handelsbeleid. 559 00:26:46,520 --> 00:26:50,820 Ik kan de snelheid van uw zoekopdrachten, maar het is gaat kosten u meer bytes van de ruimte. 560 00:26:50,820 --> 00:26:51,610 Waarom? 561 00:26:51,610 --> 00:26:55,230 Nou, bij verstek, als we geen van deze rode sterren, geen van deze indexen, 562 00:26:55,230 --> 00:26:58,797 als ik zeg, hoe doe je zoeken naar een naam in deze database? 563 00:26:58,797 --> 00:27:00,630 Dus laten we trekken ons aandacht dit voorbeeld. 564 00:27:00,630 --> 00:27:06,300 Als we David en Scully en Kareem en Arwa en anderen in deze rijen, 565 00:27:06,300 --> 00:27:06,910 bijvoorbeeld. 566 00:27:06,910 --> 00:27:08,390 >> Dus laten we het doen precies dat. 567 00:27:08,390 --> 00:27:13,990 Scully is hier, en dan we hebben Kareem, en Arwa, 568 00:27:13,990 --> 00:27:18,390 en iedereen, als je niet een index gedefinieerd als het ware, 569 00:27:18,390 --> 00:27:20,160 het beste wat je kunt doen is lineair zoeken. 570 00:27:20,160 --> 00:27:23,470 Als u zoekt naar Arwa, we zijn niet zal in staat zijn om recht te springen om haar te 571 00:27:23,470 --> 00:27:24,140 snel. 572 00:27:24,140 --> 00:27:26,556 We gaan naar boven te beginnen en ga heel de weg naar de bodem, 573 00:27:26,556 --> 00:27:28,600 niet in tegenstelling tot onze oorspronkelijke Mike Smith voorbeeld. 574 00:27:28,600 --> 00:27:33,470 >> Maar als ik zeg, hey, database, de index van de eerste naam van het veld, 575 00:27:33,470 --> 00:27:37,000 dan dat het gaat om iets te doen liefhebber en iets te ondersteunen 576 00:27:37,000 --> 00:27:38,130 zoals binary search. 577 00:27:38,130 --> 00:27:39,820 Het is waarschijnlijk niet binary search per se. 578 00:27:39,820 --> 00:27:42,810 Databases hebben de neiging om een ​​ander te gebruiken datastructuur zogenaamde b-bomen, 579 00:27:42,810 --> 00:27:46,540 niet te verwarren met binaire bomen, die net het sneller om te zoeken 580 00:27:46,540 --> 00:27:48,500 iets logaritmisch karakter. 581 00:27:48,500 --> 00:27:53,510 Maar de prijs die u betaalt op te bouwen dat kenmerk, dat de datastructuur in het geheugen, 582 00:27:53,510 --> 00:27:54,570 meer bytes. 583 00:27:54,570 --> 00:27:57,170 Zo kan het aantal megabytes te nemen, enkele gigabytes, wie weet? 584 00:27:57,170 --> 00:27:58,410 Het hangt van de data. 585 00:27:58,410 --> 00:28:02,640 >> Dus op een gegeven moment moet je beslissen, het is waarschijnlijk niet een gemeenschappelijke zaak. 586 00:28:02,640 --> 00:28:06,000 Dus wat zijn de werkelijke gezond gevallen, als je echt moest kiezen, 587 00:28:06,000 --> 00:28:10,080 wat zou uw favoriete velden zijn? 588 00:28:10,080 --> 00:28:10,580 E-mail. 589 00:28:10,580 --> 00:28:14,400 En ik hou van e-mail, omdat e-mail, in theorie zou uniek zijn. 590 00:28:14,400 --> 00:28:17,650 En zo typisch, als je weet op voorhand dat een van uw velden 591 00:28:17,650 --> 00:28:20,277 is of zal uniek zijn, dat de neiging om een ​​goede veld 592 00:28:20,277 --> 00:28:22,860 om te zoeken op, want op die manier, wanneer u zoekt naar iets, 593 00:28:22,860 --> 00:28:26,194 je gaat terug te krijgen één of nul reacties en dan ben je klaar. 594 00:28:26,194 --> 00:28:28,110 Je hoeft niet te houden zoekt nog anderen. 595 00:28:28,110 --> 00:28:31,992 >> En dus in dit geval is, email, zolang je niet twee keer kunt inschrijven 596 00:28:31,992 --> 00:28:33,450 met hetzelfde e-mail, is een goede. 597 00:28:33,450 --> 00:28:36,710 ID per definitie in de informatica wereld, 598 00:28:36,710 --> 00:28:39,610 Als je het over een ID, die beter unieke had zijn. 599 00:28:39,610 --> 00:28:42,970 Dat is een soort van de connotatie van ID of id. 600 00:28:42,970 --> 00:28:46,440 En de rest van deze zou kunnen zijn, laten we noemen ze leuk om haves, 601 00:28:46,440 --> 00:28:47,860 maar niet echt nodig. 602 00:28:47,860 --> 00:28:49,976 >> En zo in een database, u indexen opgeven, 603 00:28:49,976 --> 00:28:51,350 maar je kunt nog meer precies te zijn. 604 00:28:51,350 --> 00:28:56,060 Je kunt zeggen, hey, database, zorg ervoor dat dat elke ID in deze tabel is uniek. 605 00:28:56,060 --> 00:28:59,330 Zelfs niet toestaan ​​dat een programmeur per ongeluk in een duplicaat e-mail 606 00:28:59,330 --> 00:29:00,740 of dubbele ID-nummer. 607 00:29:00,740 --> 00:29:03,140 Zoveel als opsommingen bescherm ons op dezelfde manier, je 608 00:29:03,140 --> 00:29:04,881 kunnen die lager niveau afweer hebben. 609 00:29:04,881 --> 00:29:07,130 En dus database-ontwerp, in zekere zin, is een soort van plezier, 610 00:29:07,130 --> 00:29:08,380 omdat je het verdedigend werk doen. 611 00:29:08,380 --> 00:29:11,460 Je soort van uitgaan dat je werkt met verschrikkelijk, verschrikkelijk programmeurs 612 00:29:11,460 --> 00:29:15,550 en je wilt zo veel verdediging in te zetten als je kunt om uw gegevens te beschermen, 613 00:29:15,550 --> 00:29:18,940 maar tegelijkertijd je wilt om hen te helpen beter te presteren 614 00:29:18,940 --> 00:29:21,386 door te kiezen welke gebieden te optimaliseren voor. 615 00:29:21,386 --> 00:29:24,260 Maar je kunt niet per se doen in een vacuüm als we soort zijn hier. 616 00:29:24,260 --> 00:29:26,480 Je moet weten wat zijn deze gemeenschappelijke zaken zijn. 617 00:29:26,480 --> 00:29:29,397 Als de ontwikkelaars zijn implementatie van een adresboek, 618 00:29:29,397 --> 00:29:32,230 je zou heel goed willen kunnen om te zoeken op bijna elk gebied, 619 00:29:32,230 --> 00:29:33,830 alleen door de aard van de toepassing. 620 00:29:33,830 --> 00:29:37,910 Dus misschien brengen u dat extra ruimte. 621 00:29:37,910 --> 00:29:39,090 >> Rechts, vragen? 622 00:29:39,090 --> 00:29:41,820 623 00:29:41,820 --> 00:29:42,486 Ja. 624 00:29:42,486 --> 00:29:43,470 >> PUBLIEK: [ONVERSTAANBAAR] 625 00:29:43,470 --> 00:29:44,404 >> DAVID MALAN: No. 626 00:29:44,404 --> 00:29:45,279 >> PUBLIEK: [ONVERSTAANBAAR] 627 00:29:45,279 --> 00:29:47,840 628 00:29:47,840 --> 00:29:48,826 >> DAVID MALAN: OK. 629 00:29:48,826 --> 00:29:49,701 >> PUBLIEK: [ONVERSTAANBAAR] 630 00:29:49,701 --> 00:29:52,420 631 00:29:52,420 --> 00:29:54,850 >> DAVID MALAN: Oh, dus we praten op een manier 632 00:29:54,850 --> 00:29:57,940 nu is dat helemaal taal agnost. 633 00:29:57,940 --> 00:30:02,370 Dus we hebben het nu over relationele databases algemeen, 634 00:30:02,370 --> 00:30:04,760 of SQL-databases meer in het algemeen. 635 00:30:04,760 --> 00:30:06,870 >> PUBLIEK: [ONVERSTAANBAAR] 636 00:30:06,870 --> 00:30:10,030 >> DAVID MALAN: Een beter woord te gebruiken wordt, kan gebruikt worden door elke taal. 637 00:30:10,030 --> 00:30:15,280 Dus kan ik JavaScript-code te schrijven, C code, C ++ code, Java-code, Ruby code, 638 00:30:15,280 --> 00:30:19,010 allemaal praten met een database en uitvoeren van queries. 639 00:30:19,010 --> 00:30:22,310 In feite, dat is niet een slechte segue een voorbeeldquery. 640 00:30:22,310 --> 00:30:25,720 En nogmaals, we zijn niet van plan in te gaan Java of C ++ of een van die meer, 641 00:30:25,720 --> 00:30:29,420 maar in SQL, de taal waarin ik blijf verwijzend, Structured Query Language, 642 00:30:29,420 --> 00:30:32,790 Dit zelf is een programmeertaal, maar het is bedoeld om te worden gebruikt, zonder 643 00:30:32,790 --> 00:30:37,330 verrassing, gestructureerde vraag queries. 644 00:30:37,330 --> 00:30:38,660 >> Door dat ik bedoel dit. 645 00:30:38,660 --> 00:30:41,190 De manier waarop je gegevens te selecteren uit een MySQL database 646 00:30:41,190 --> 00:30:49,330 wordt je letterlijk type in uw programma iets als select ster van gebruikers. 647 00:30:49,330 --> 00:30:52,200 Ik ga ervan uit dat deze tabel, voortaan wordt gebruikers genoemd. 648 00:30:52,200 --> 00:30:54,860 Ik zou kunnen noemen wat we willen, maar dat soort zinvol. 649 00:30:54,860 --> 00:30:57,240 En dus select is een zeer gemeenschappelijke werkwoord, als je 650 00:30:57,240 --> 00:30:59,290 zal, in SQL, dat letterlijk doet dat. 651 00:30:59,290 --> 00:31:02,730 Wat denk je ster betekent in deze context? 652 00:31:02,730 --> 00:31:04,410 >> PUBLIEK: [ONVERSTAANBAAR] 653 00:31:04,410 --> 00:31:05,380 >> DAVID MALAN: Het spijt me? 654 00:31:05,380 --> 00:31:06,300 >> PUBLIEK: [ONVERSTAANBAAR] 655 00:31:06,300 --> 00:31:09,580 >> DAVID MALAN: Niet nodig, het is meer inclusieve dan dat, eigenlijk. 656 00:31:09,580 --> 00:31:11,700 Het is de wild card karakter. 657 00:31:11,700 --> 00:31:14,740 Star bijna altijd iets betekent, dat betekent dus, in dit geval, 658 00:31:14,740 --> 00:31:16,510 alles selecteren uit de database. 659 00:31:16,510 --> 00:31:20,730 Dus toen ik dit zeggen, ik bedoel geef me terug elke kolom 660 00:31:20,730 --> 00:31:22,440 uit mijn tafel genaamd gebruikers. 661 00:31:22,440 --> 00:31:24,730 Dus geef me een resultaat geven, zoals dat heet. 662 00:31:24,730 --> 00:31:28,210 Met andere woorden, geef mij een kopie van de spreadsheet, dat is wat ik krijg bij. 663 00:31:28,210 --> 00:31:34,890 >> Maar als ik zei selecteer ster van gebruikers waar de ID gelijk is aan 1, hoe groot moet 664 00:31:34,890 --> 00:31:36,640 mijn resultaat set dan zijn? 665 00:31:36,640 --> 00:31:41,680 Of gelijkwaardig, hoeveel rijen moeten Ik terug worden overhandigd uit de database? 666 00:31:41,680 --> 00:31:45,860 Waarschijnlijk slechts één, als ik inderdaad ID behandeld als een unieke identifier, 667 00:31:45,860 --> 00:31:50,710 en als David heeft die unieke ID, I moet weer één en slechts één rij 668 00:31:50,710 --> 00:31:53,220 met daarin alle informatie David's. 669 00:31:53,220 --> 00:31:56,390 Als ik zei dat dit, waar ID is gelijk aan 99, moet ik terug ben, 670 00:31:56,390 --> 00:32:00,320 in dit verband nul rijen, althans op dit moment. 671 00:32:00,320 --> 00:32:03,620 >> Echter, als ik niet echt zorg over al die informatie, 672 00:32:03,620 --> 00:32:06,970 Ik kon alleen maar zeggen, waar David leven? 673 00:32:06,970 --> 00:32:10,860 Kies een postcode uit gebruikers waar de ID is 1. 674 00:32:10,860 --> 00:32:15,820 Dit zal kiezen om alleen mij Davids zip code en niet het geheel van die rij. 675 00:32:15,820 --> 00:32:19,541 Waarom zou ik dit in plaats van te doen de ster vraag, de wild card? 676 00:32:19,541 --> 00:32:21,950 >> PUBLIEK: [ONVERSTAANBAAR] 677 00:32:21,950 --> 00:32:24,590 >> DAVID MALAN: Ja, ik kan alleen maar nodig hebben. 678 00:32:24,590 --> 00:32:26,350 Zodat de prestaties is weer hier het antwoord. 679 00:32:26,350 --> 00:32:28,540 Waarom vragen om meer informatie dan je nodig hebt, 680 00:32:28,540 --> 00:32:32,020 want zelfs als het is al goed samen, je moet nog steeds dat de gegevens te kopiëren, 681 00:32:32,020 --> 00:32:35,560 lijkt, uit de database in het programma een of andere manier, 682 00:32:35,560 --> 00:32:38,490 en dat is gewoon dom als je hoeft alleen maar vijf van die cijfers, 683 00:32:38,490 --> 00:32:40,340 niet het geheel van de rij. 684 00:32:40,340 --> 00:32:42,180 >> Dus hoe kan ik een gebruiker in te voegen? 685 00:32:42,180 --> 00:32:44,780 Stel dat een gebruiker heeft alleen maar ingeschreven voor de eerste keer. 686 00:32:44,780 --> 00:32:46,560 De syntaxis meestal zou er zo uitzien. 687 00:32:46,560 --> 00:32:52,700 Invoegen in gebruikers, en dan zouden we waarden zeggen: 688 00:32:52,700 --> 00:33:00,150 en dan zouden we waarden zeggen als, laten we zeggen, Lauren Scully, 689 00:33:00,150 --> 00:33:02,380 onze videograaf hier. 690 00:33:02,380 --> 00:33:04,390 En het volgende veld is geslacht. 691 00:33:04,390 --> 00:33:08,020 Dus we zullen zeggen citaat, unquote "F", dan hebben we een ID 692 00:33:08,020 --> 00:33:12,250 en ik ga say-- laten doen alsof ze is niet echt hier, 693 00:33:12,250 --> 00:33:14,380 dus we zullen terug te spoelen in het verhaal. 694 00:33:14,380 --> 00:33:16,530 Dus 2 zal haar ID zijn. 695 00:33:16,530 --> 00:33:19,130 En dan de volgende veld hier is haar e-mail. 696 00:33:19,130 --> 00:33:22,140 Dus het gaat worden als Lauren Scully enzovoort, 697 00:33:22,140 --> 00:33:24,360 en we zullen gewoon dot dot dot uit de buurt van hier op. 698 00:33:24,360 --> 00:33:26,890 Nu zal het een beetje te krijgen vervelend, maar de insert-query 699 00:33:26,890 --> 00:33:28,310 uiteindelijk zou uitzien dat. 700 00:33:28,310 --> 00:33:30,970 >> Als ik wil om zich te ontdoen van Scully, uh-oh, laten uitschrijven 701 00:33:30,970 --> 00:33:37,420 haar, wist ze haar account, verwijderen van gebruikers, waar ID gelijk is aan 2, 702 00:33:37,420 --> 00:33:38,500 zal zich te ontdoen van Scully. 703 00:33:38,500 --> 00:33:48,050 Of ik kan zeggen updaten gebruikers instellen, laten we zeggen, wat kunnen we veranderen? 704 00:33:48,050 --> 00:33:49,430 Stel dat ze beweegt. 705 00:33:49,430 --> 00:33:53,730 Set zip gelijk 021-- nope, dat is haar huidige zip. 706 00:33:53,730 --> 00:33:54,487 90210. 707 00:33:54,487 --> 00:33:56,320 De enige andere postcode Ik weet ter wereld. 708 00:33:56,320 --> 00:33:59,002 Zodat zou veranderen haar zip code-- eigenlijk, 709 00:33:59,002 --> 00:34:00,460 dat zou haar postcode niet veranderen. 710 00:34:00,460 --> 00:34:02,170 >> Wat heb ik gewoon doen? 711 00:34:02,170 --> 00:34:04,292 Hoewel de syntax is waarschijnlijk nieuw. 712 00:34:04,292 --> 00:34:05,302 >> PUBLIEK: [ONVERSTAANBAAR] 713 00:34:05,302 --> 00:34:08,010 DAVID MALAN: Ja, ik bewoog iedereen naar Beverly Hills, Californië. 714 00:34:08,010 --> 00:34:11,920 Dus moet ik eigenlijk zeggen waar de ID gelijk is aan 2. 715 00:34:11,920 --> 00:34:12,820 Enzovoorts. 716 00:34:12,820 --> 00:34:15,290 Dus SQL is alles over deze soorten instructies. 717 00:34:15,290 --> 00:34:20,260 Selecteer, invoegen, verwijderen, bijwerken, deze predikaten eind 718 00:34:20,260 --> 00:34:22,139 deze clausules waarin, bij wijze van spreken. 719 00:34:22,139 --> 00:34:25,170 En er is nog veel meer kunt u doen, maar het eigenlijk gewoon neer 720 00:34:25,170 --> 00:34:29,750 gewoon, als arcanely, uitdrukken wat je wilt de database te doen. 721 00:34:29,750 --> 00:34:31,580 >> En dan is de database zal uitzoeken, wanneer 722 00:34:31,580 --> 00:34:35,630 U plaatst Lauren Scully in de databank, waar ze haar in het geheugen te zetten 723 00:34:35,630 --> 00:34:38,230 zodat we heel snel kunnen krijgen haar gebaseerd op haar e-mailadres 724 00:34:38,230 --> 00:34:42,610 of op basis van haar identificatienummer of dergelijke. 725 00:34:42,610 --> 00:34:43,391 Ja, Dan. 726 00:34:43,391 --> 00:34:44,266 PUBLIEK: [ONVERSTAANBAAR] 727 00:34:44,266 --> 00:34:46,364 728 00:34:46,364 --> 00:34:47,780 DAVID MALAN: Echt goede vraag. 729 00:34:47,780 --> 00:34:50,370 Zullen deze scripts te veranderen van Microsoft Access naar Oracle 730 00:34:50,370 --> 00:34:52,290 MySQL PostgreSQL? 731 00:34:52,290 --> 00:34:53,790 Het korte antwoord is het hangt. 732 00:34:53,790 --> 00:34:58,697 In theorie is er een zeer significant gemeenschappelijke subset van SQL 733 00:34:58,697 --> 00:35:00,780 dat wordt gedeeld door alle van deze implementaties. 734 00:35:00,780 --> 00:35:03,340 Echter, verschillende fabrikanten hebben extra functies 735 00:35:03,340 --> 00:35:07,120 om hun databases om bepaalde dingen te doen buiten het bestek van deze functies, 736 00:35:07,120 --> 00:35:08,720 die kunnen in feite breken. 737 00:35:08,720 --> 00:35:11,210 >> Dus de manier waarop ontwikkelaars dekken tegen deze, 738 00:35:11,210 --> 00:35:14,350 is dat in plaats van het schrijven van ruwe SQL-code alsof ik hier schrijven, 739 00:35:14,350 --> 00:35:19,460 ze in plaats daarvan gebruik maken van een bibliotheek, een gemeenschappelijke bibliotheek die zelf 740 00:35:19,460 --> 00:35:23,650 is een soort van hoger niveau en abstracts weg welk product u gebruikt. 741 00:35:23,650 --> 00:35:25,710 En het geeft je functies en procedures 742 00:35:25,710 --> 00:35:28,810 zo dat je nooit te bellen eigenlijk schrijven ruwe SQL. 743 00:35:28,810 --> 00:35:32,609 >> In theorie, dan kunt u veranderen producten van Oracle naar Microsoft 744 00:35:32,609 --> 00:35:34,650 of vice versa of iets anders, en je letterlijk 745 00:35:34,650 --> 00:35:36,920 niets over uw code te wijzigen. 746 00:35:36,920 --> 00:35:40,180 De realiteit is echter, je soms geven functies als gevolg. 747 00:35:40,180 --> 00:35:43,860 Je zou een product omdat hebben gekozen het heeft deze functies met toegevoegde waarde, 748 00:35:43,860 --> 00:35:46,610 en je bent nu gewoon niet het gebruik ervan bewust. 749 00:35:46,610 --> 00:35:51,630 >> En anekdotische, de meeste bedrijven hebben de neiging nooit uit de buurt van hun database te verplaatsen. 750 00:35:51,630 --> 00:35:54,002 Dus terwijl dit is een leuk om hebben functie, de realiteit 751 00:35:54,002 --> 00:35:55,960 is, als je reviseren uw database, je bent 752 00:35:55,960 --> 00:35:59,890 waarschijnlijk het maken van trossen van andere wijzigingen hoe dan ook, dat je niet per se 753 00:35:59,890 --> 00:36:01,360 moet verwachten dat. 754 00:36:01,360 --> 00:36:03,720 Dus het is misschien wel over-techniek het probleem, 755 00:36:03,720 --> 00:36:05,670 maar het is echt afhankelijk van de context. 756 00:36:05,670 --> 00:36:09,960 Maar in theorie, SQL wordt gedeeld over deze verschillende producten. 757 00:36:09,960 --> 00:36:11,560 Echt goede vragen. 758 00:36:11,560 --> 00:36:12,272 Ja. 759 00:36:12,272 --> 00:36:13,147 >> PUBLIEK: [ONVERSTAANBAAR] 760 00:36:13,147 --> 00:36:17,820 761 00:36:17,820 --> 00:36:21,480 >> DAVID MALAN: Ja, dus U kunt een database denken 762 00:36:21,480 --> 00:36:25,020 slechts een server, eind de dag, en de binnenkant van die server 763 00:36:25,020 --> 00:36:28,670 is een hele hoop tabellen, rijen en kolommen. 764 00:36:28,670 --> 00:36:33,410 En wanneer u een query te sturen, zoals dit uit uw programma, uw website, 765 00:36:33,410 --> 00:36:39,340 geschreven in Java, Ruby, Python, wat dan ook, de server ontvangt deze opdracht 766 00:36:39,340 --> 00:36:41,660 en interpreteren in letterlijk op dezelfde manier 767 00:36:41,660 --> 00:36:43,660 we eerder besproken met geïnterpreteerde talen, 768 00:36:43,660 --> 00:36:47,333 en dan het uitvoeren van een actie op nul of meer rijen nul of meer tafels. 769 00:36:47,333 --> 00:36:48,208 PUBLIEK: [ONVERSTAANBAAR] 770 00:36:48,208 --> 00:36:53,540 771 00:36:53,540 --> 00:36:55,070 >> DAVID MALAN: Precies, precies. 772 00:36:55,070 --> 00:36:58,450 Zodat de pseudocode iets als dat kan dit zijn. 773 00:36:58,450 --> 00:37:02,450 In uw PHP-bestand of uw Python-bestand of uw Java-bestand, 774 00:37:02,450 --> 00:37:09,210 je zou pseudo-code hebt, of Scratch-achtige blokken als, als de gebruiker bezoekt 775 00:37:09,210 --> 00:37:19,870 acme.com/register~~V voor de eerste keer, steek naar gebruikers enzovoort. 776 00:37:19,870 --> 00:37:22,619 En we zouden dit vertalen naar concreter code uiteindelijk. 777 00:37:22,619 --> 00:37:24,660 Maar echt, we hebben allemaal de bouwstenen hier, 778 00:37:24,660 --> 00:37:27,680 ook al zijn we het overslaan van een aantal van de stappen die de uitvoering. 779 00:37:27,680 --> 00:37:31,560 >> Dus laat me klagen over wat we heerlijk deed slechts een moment geleden. 780 00:37:31,560 --> 00:37:36,470 Je hebt een mooi gemaakt volledige tabel voor de gebruikers. 781 00:37:36,470 --> 00:37:38,920 Toegegeven, we konden implementeren het in een paar verschillende manieren, 782 00:37:38,920 --> 00:37:43,030 maar je hebt eigenlijk leidde ons onderaan de path-- en ik zeg je, 783 00:37:43,030 --> 00:37:48,080 maar het is waarschijnlijk mijn fault-- van een vrij inefficiënte database-implementatie. 784 00:37:48,080 --> 00:37:49,950 Het is niet genormaliseerd. 785 00:37:49,950 --> 00:37:52,320 >> En door genormaliseerde ik bedoel er zal zijn, 786 00:37:52,320 --> 00:37:57,380 tijd, een aanzienlijke redundantie, en daarom inefficiëntie, 787 00:37:57,380 --> 00:38:00,210 dat is verspilling van ruimte. 788 00:38:00,210 --> 00:38:05,650 Op basis van alleen wat je hier ziet, kan u voor ogen waar verspilling van ruimte 789 00:38:05,650 --> 00:38:08,710 vandaan, komen in de tijd, als meer en meer gebruikers registreren 790 00:38:08,710 --> 00:38:10,860 voor uw website? 791 00:38:10,860 --> 00:38:13,047 Welke gegevens kunnen overbodig geworden? 792 00:38:13,047 --> 00:38:19,084 793 00:38:19,084 --> 00:38:20,940 >> PUBLIEK: [ONVERSTAANBAAR] 794 00:38:20,940 --> 00:38:22,686 >> DAVID MALAN: Waarom denk je dat? 795 00:38:22,686 --> 00:38:23,561 PUBLIEK: [ONVERSTAANBAAR] 796 00:38:23,561 --> 00:38:32,180 797 00:38:32,180 --> 00:38:32,930 DAVID MALAN: Yeah. 798 00:38:32,930 --> 00:38:35,622 En laten we aannemen met het oog op van vandaag dat dat waar is. 799 00:38:35,622 --> 00:38:38,330 Blijkt dat, en we hebben dit geleerd de harde manier, dat is niet waar. 800 00:38:38,330 --> 00:38:41,670 Een of andere manier meerdere steden hebben, een of andere manier, dezelfde postcode, 801 00:38:41,670 --> 00:38:43,390 die breekt deze prachtige intuïtie. 802 00:38:43,390 --> 00:38:46,180 Maar laten we aannemen dat het waar is, want het is bijna altijd waar. 803 00:38:46,180 --> 00:38:51,390 Dus stel dat een postcode is altijd geassocieerd met dezelfde stad 804 00:38:51,390 --> 00:38:53,600 en staat, dat is een soort redelijke aanname, 805 00:38:53,600 --> 00:38:54,840 maar onjuist, zo blijkt. 806 00:38:54,840 --> 00:38:57,310 Maar een redelijke aanname voor doeleinden van vandaag. 807 00:38:57,310 --> 00:39:01,650 >> Dan stel dat ik woon in Cambridge, MA, volgens tabel van deze gebruiker, 808 00:39:01,650 --> 00:39:04,100 en veronderstellen dat Lauren Scully woont in Cambridge, MA, 809 00:39:04,100 --> 00:39:06,120 en veronderstellen dat Kareem woont in Cambridge, MA, 810 00:39:06,120 --> 00:39:10,400 en Arwa woont in Cambridge, MA, ons allen in 02138. 811 00:39:10,400 --> 00:39:15,890 Waarom zijn we herinneren Cambridge, MA, 02138 voor alle vier van ons? 812 00:39:15,890 --> 00:39:18,903 Wat zou voldoende moeten zijn om te onthouden? 813 00:39:18,903 --> 00:39:20,249 >> PUBLIEK: [ONVERSTAANBAAR] 814 00:39:20,249 --> 00:39:21,540 DAVID MALAN: gewoon de postcode. 815 00:39:21,540 --> 00:39:25,080 Alleen dat 02138 bestaat, omdat weet je wat we kunnen doen? 816 00:39:25,080 --> 00:39:32,650 We kunnen een beetje luxe hier te komen en hier, te definiëren een andere tafel 817 00:39:32,650 --> 00:39:35,850 waar dit naartoe gaat om het te zijn naam, dit gaat om het type te zijn, 818 00:39:35,850 --> 00:39:38,840 dit gaat het worden lengte, en voortaan, ik ben 819 00:39:38,840 --> 00:39:42,900 ga dit noem mijn steden tafel. 820 00:39:42,900 --> 00:39:47,011 Dit werd genoemd, van Natuurlijk, mijn gebruikers tafel. 821 00:39:47,011 --> 00:39:49,885 En ja, wat moet ik hier voor mijn steden tafel, denk je? 822 00:39:49,885 --> 00:39:53,605 823 00:39:53,605 --> 00:39:54,535 >> PUBLIEK: [ONVERSTAANBAAR] 824 00:39:54,535 --> 00:39:55,930 >> DAVID MALAN: Yeah. 825 00:39:55,930 --> 00:40:01,440 Dus zip en staat en de stad. 826 00:40:01,440 --> 00:40:05,350 En dus is de soort hier, zullen we zeggen dit gaat opnieuw om een ​​char 5 zijn, 827 00:40:05,350 --> 00:40:06,750 onderworpen aan het debat eerder. 828 00:40:06,750 --> 00:40:14,810 Dit zal een opsomming zijn, misschien net voorheen, zal de stad en een varchar 50 zijn. 829 00:40:14,810 --> 00:40:17,960 En dus nu wat krijg ik wissen uit deze tabel 830 00:40:17,960 --> 00:40:21,995 dat inefficiëntie? 831 00:40:21,995 --> 00:40:23,100 >> PUBLIEK: [ONVERSTAANBAAR] 832 00:40:23,100 --> 00:40:23,850 DAVID MALAN: Nice. 833 00:40:23,850 --> 00:40:30,239 Staat en de stad weg te gaan, dus ik heb nu elimineerde de mogelijke inefficiëntie 834 00:40:30,239 --> 00:40:33,280 voor redundant herinneren, Cambridge, MA, Cambridge, MA, Cambridge, MA, 835 00:40:33,280 --> 00:40:35,712 Cambridge, MA, die hopelijk zal nooit veranderen. 836 00:40:35,712 --> 00:40:37,670 En zelfs als dat zo is, is het minorly vervelend, nu 837 00:40:37,670 --> 00:40:39,750 dat ik moet veranderen in meerdere rijen, 838 00:40:39,750 --> 00:40:43,770 terwijl hier, ik kon het gewoon veranderen op een plaats. 839 00:40:43,770 --> 00:40:46,890 >> Nu, wat is de trade-off, misschien? 840 00:40:46,890 --> 00:40:48,020 Dit was super handig. 841 00:40:48,020 --> 00:40:50,730 Had al mijn gegevens netjes bij elkaar. 842 00:40:50,730 --> 00:40:53,644 Maar wat is duidelijk het geval is? 843 00:40:53,644 --> 00:40:55,684 >> PUBLIEK: [ONVERSTAANBAAR] 844 00:40:55,684 --> 00:40:58,100 DAVID MALAN: Precies, en ik ben blij dat je het woord te voegen, 845 00:40:58,100 --> 00:41:01,320 want dat is eigenlijk het sleutelwoord, in de wereld van relationele databases 846 00:41:01,320 --> 00:41:05,270 in SQL, het is een echte woord dat je typen om althans te brengen. 847 00:41:05,270 --> 00:41:09,280 En in feite, wat we nu moeten doen om te selecteren volledige informatie David's is 848 00:41:09,280 --> 00:41:19,700 iets als select ster uit gebruikers, deelnemen aan steden, on-- en nu 849 00:41:19,700 --> 00:41:24,010 Ik ga gewoon naar een tweede lijn zodat deze fits-- users.zip gelijk 850 00:41:24,010 --> 00:41:34,570 cities.zip, waarbij users.ID gelijk is aan 1. 851 00:41:34,570 --> 00:41:35,550 >> Dus wat is er aan de hand? 852 00:41:35,550 --> 00:41:38,970 Het is lelijk uit, maar je kunt soort lees het van links naar rechts, van boven naar beneden. 853 00:41:38,970 --> 00:41:41,030 Selecteer ster van gebruikers is hetzelfde als voorheen, 854 00:41:41,030 --> 00:41:42,930 maar het is niet van de gebruikers, per se. 855 00:41:42,930 --> 00:41:45,910 Het is van gebruikers te sluiten steden. 856 00:41:45,910 --> 00:41:48,520 Wat ben ik mee die twee tafels aan de hand? 857 00:41:48,520 --> 00:41:51,820 Nou, blijkbaar, de gebruikers tafels zip veld, 858 00:41:51,820 --> 00:41:54,810 en deze periode is gewoon bijzonder syntax om dat idee uit te drukken, 859 00:41:54,810 --> 00:41:58,130 en dit is de steden tabellen zip veld. 860 00:41:58,130 --> 00:42:01,580 Ik wil die twee gelijk zijn, maar ik wil uiteindelijk selecteren 861 00:42:01,580 --> 00:42:06,280 alleen die rijen waarin ID in de gebruikers tabel 862 00:42:06,280 --> 00:42:08,730 gelijk aan 1, die is er gebeurd met de mijne. 863 00:42:08,730 --> 00:42:11,781 >> En alleen maar om duidelijk te zijn, een programmeerapparaat, meestal wanneer 864 00:42:11,781 --> 00:42:14,780 hardcode iets als het aantal 1, omdat anders alleen de website 865 00:42:14,780 --> 00:42:17,630 steunt David of de allereerste gebruiker bent 866 00:42:17,630 --> 00:42:20,720 zou in plaats daarvan doen zoiets als ID, waarbij 867 00:42:20,720 --> 00:42:22,510 Dit vertegenwoordigt een variabele, iets wat 868 00:42:22,510 --> 00:42:26,210 kunnen overstappen tijd, vergelijkbaar in de geest van wat ik al eerder zei 869 00:42:26,210 --> 00:42:28,080 met dit soort placeholders. 870 00:42:28,080 --> 00:42:30,396 Maar voor nu we gewoon hardcode het als 1. 871 00:42:30,396 --> 00:42:31,520 En ja, wat betekent dit? 872 00:42:31,520 --> 00:42:35,100 Nou ja, een mooie manier om dit te visualiseren is dat als deze hand is de gebruikers tafel, 873 00:42:35,100 --> 00:42:38,090 en dit is de hand van de ritssluitingen tafel, we zijn soort finding-- 874 00:42:38,090 --> 00:42:41,330 en de toppen van mijn vingers zijn zip hier, en de toppen van mijn vingers 875 00:42:41,330 --> 00:42:43,740 hier zijn zip, je bent soort van in elkaar grijpende is 876 00:42:43,740 --> 00:42:47,950 zodat je terug de resulterende glasplaat, door echt verbinden 877 00:42:47,950 --> 00:42:49,590 de twee tafels op het gemeenschappelijk veld. 878 00:42:49,590 --> 00:42:50,840 En het hoeft niet te worden zip. 879 00:42:50,840 --> 00:42:54,460 Het kan bijna alles anders, maar zip is mooi, omdat men, het is kort, 880 00:42:54,460 --> 00:42:56,470 twee, het is altijd de dezelfde lengte, dus er is 881 00:42:56,470 --> 00:43:02,270 echt efficiëntie wat Olivier hier voorgestelde 882 00:43:02,270 --> 00:43:05,200 met factoring uit de zip, en [Onhoorbaar] stelt voor dat we te ontdoen 883 00:43:05,200 --> 00:43:07,110 van de stad en staten. 884 00:43:07,110 --> 00:43:11,370 >> Dit is dus het proces bekend als normalisatie. 885 00:43:11,370 --> 00:43:14,171 Heeft u vragen over zeggen? 886 00:43:14,171 --> 00:43:16,170 Nou wil ik erop wijzen dit is het soort dingen, 887 00:43:16,170 --> 00:43:19,202 ook al is het vrij laag niveau, deze discussie, dat je zou denken 888 00:43:19,202 --> 00:43:20,910 je soort van krijgen verloren in het onkruid, 889 00:43:20,910 --> 00:43:26,690 Dit is een manifestatie van voldoende mogelijkheid voor ontwikkelaars om slecht te zijn. 890 00:43:26,690 --> 00:43:29,600 En inderdaad, ook als we, in cursussen die ik heb geleerd, toen we hebben gehad, 891 00:43:29,600 --> 00:43:32,290 bijvoorbeeld onervaren undergraduate programmeurs 892 00:43:32,290 --> 00:43:35,920 bouwen websites, op het eerste gezicht, de websites kunnen ziet er fantastisch uit. 893 00:43:35,920 --> 00:43:38,280 En ze hebben allemaal van de functionaliteit die we gevraagd, 894 00:43:38,280 --> 00:43:40,650 de ontwikkelaars heeft een goede baan. 895 00:43:40,650 --> 00:43:43,370 >> Maar ze niet per se weten genoeg over database-ontwerp 896 00:43:43,370 --> 00:43:46,680 of ze niet goed na te denken genoeg over de soorten gegevens 897 00:43:46,680 --> 00:43:49,220 en de typen gebruikers de website zou hebben, 898 00:43:49,220 --> 00:43:53,240 en vinden we dan een half jaar later, nadat ze zijn afgestudeerd of verplaatst op, 899 00:43:53,240 --> 00:43:56,016 dat verdomme, onze website is echt, echt traag. 900 00:43:56,016 --> 00:43:58,890 En dan heb ik het nog niet eens over het hebben van miljoenen of duizenden gebruikers. 901 00:43:58,890 --> 00:44:02,580 Ik bedoel, een paar honderd gebruikers op de campus, allen willen bijvoorbeeld 902 00:44:02,580 --> 00:44:04,870 winkelen voor cursussen op Tegelijkertijd zijn ze 903 00:44:04,870 --> 00:44:07,010 met behulp van dat studiegids applicatie Ik noemde 904 00:44:07,010 --> 00:44:10,410 en het ding wordt steeds echt traag omdat er geen indexen. 905 00:44:10,410 --> 00:44:13,740 Er waren geen rode sterren, zo te spreken, of we hadden niet per se 906 00:44:13,740 --> 00:44:17,690 ingecalculeerd gemeenschappelijke gegevens krijg wat een besparing van ruimte. 907 00:44:17,690 --> 00:44:21,880 >> En dus wanneer doorlichten een ontwikkelaar of database persoon of dergelijke, 908 00:44:21,880 --> 00:44:25,864 het soort vragen na te denken over is ook bij de herziening van iemands code, 909 00:44:25,864 --> 00:44:28,530 om te zeggen, niet per se kijken door al hun code, maar zeg, 910 00:44:28,530 --> 00:44:30,154 laten we eens kijken via de database tabellen. 911 00:44:30,154 --> 00:44:31,150 Wat ben je aan het opslaan? 912 00:44:31,150 --> 00:44:33,941 En dan te zeggen, nou ja, wacht minuut, waarom bent u met behulp van een integer? 913 00:44:33,941 --> 00:44:36,224 Wat als we 4 miljard en 1 van deze rijen? 914 00:44:36,224 --> 00:44:38,140 En dit soort vragen is een kans 915 00:44:38,140 --> 00:44:40,170 van de soort terug te duwen en krijgen een gevoel van waar 916 00:44:40,170 --> 00:44:42,300 als je niet comfortabel te doen het, dat iemand meer technische 917 00:44:42,300 --> 00:44:45,425 deze vragen, of er al dan niet de persoon die weet echt hun spullen. 918 00:44:45,425 --> 00:44:47,890 En dit is het soort dingen, ook, dat mensen 919 00:44:47,890 --> 00:44:50,540 op internet die zijn autodidact, misschien 920 00:44:50,540 --> 00:44:53,920 leren minder vaak, omdat je niet per se tegenkomen 921 00:44:53,920 --> 00:44:56,630 zo veel, want je kunt krijgen de database up and running, 922 00:44:56,630 --> 00:44:58,880 maar tenzij je hebt gelezen up op tutorials of geweest 923 00:44:58,880 --> 00:45:01,880 verteld over databasenormalisatie en indexeren en prestaties, 924 00:45:01,880 --> 00:45:04,255 Dit zijn het soort dingen die gaan je geen pijn doen. 925 00:45:04,255 --> 00:45:07,480 En je zou denken, of een slechte ingenieur zou kunnen zeggen, oh, nou ja, we beter betalen 926 00:45:07,480 --> 00:45:09,600 voor een grotere databank of een snellere databank 927 00:45:09,600 --> 00:45:13,360 of gewoon gooien van geld in deze, verticaal schaal, niet noodzakelijk zo. 928 00:45:13,360 --> 00:45:16,920 Als je gaat in-- en je kunt gaan in na de fact-- en voeg indexen, 929 00:45:16,920 --> 00:45:20,320 en het zou een paar uur voor het nemen databank op te bouwen dat nieuwe gegevens 930 00:45:20,320 --> 00:45:24,100 structuur die ik eerder gezinspeeld, u kunt dit nog steeds op te lossen na het feit, 931 00:45:24,100 --> 00:45:26,180 dat dit is waar je beginnen te onderscheiden 932 00:45:26,180 --> 00:45:28,830 goede ontwerpers van kwaad ontwerpers, niet alleen esthetisch, 933 00:45:28,830 --> 00:45:32,972 maar de prestaties-wise ook. 934 00:45:32,972 --> 00:45:33,555 Nog vragen? 935 00:45:33,555 --> 00:45:36,420 936 00:45:36,420 --> 00:45:37,480 Nee? 937 00:45:37,480 --> 00:45:41,980 Dus voor NoSQL, die het andere type was van de database waarop ik zinspeelde eerder, 938 00:45:41,980 --> 00:45:43,490 je geen rijen en kolommen. 939 00:45:43,490 --> 00:45:47,000 In plaats daarvan zou je iets hebt dat ziet er een beetje meer als dit. 940 00:45:47,000 --> 00:45:48,630 Ik ga gemeenschappelijke syntaxis. 941 00:45:48,630 --> 00:45:51,270 Accolades overkomen Hier worden gebruikt heel veel. 942 00:45:51,270 --> 00:45:55,400 Je zou iets hebben als eerste naam is David, 943 00:45:55,400 --> 00:46:00,180 je zou het laatst hebt naam is Malan, citaten, 944 00:46:00,180 --> 00:46:07,530 je zou ID hebt is-- neem me niet kwalijk, whoops-- ID is 1, 945 00:46:07,530 --> 00:46:13,410 e-mail is malan@harvard.edu, en ik zal niet in te vullen de rest, en dan 946 00:46:13,410 --> 00:46:14,380 een aantal andere dingen. 947 00:46:14,380 --> 00:46:17,380 >> Met andere woorden, dit een tekstuele representatie 948 00:46:17,380 --> 00:46:20,720 van wat wij over het algemeen zouden noemen een object in een computerprogramma. 949 00:46:20,720 --> 00:46:26,079 En een object meestal gewoon een verzameling van de belangrijkste waarde paren. 950 00:46:26,079 --> 00:46:27,370 Dus nogmaals, dit terugkerend thema. 951 00:46:27,370 --> 00:46:30,440 We zagen de belangrijkste waarde paren in HTML, we zagen nu key waarde paren 952 00:46:30,440 --> 00:46:34,020 in de context van databanken, en we zag key waarde paren in het kader 953 00:46:34,020 --> 00:46:35,970 van, denk ik, een taal die eerder vandaag. 954 00:46:35,970 --> 00:46:36,890 Houdt coming up. 955 00:46:36,890 --> 00:46:39,620 En inderdaad, dat is echt welke gegevens op neer komt, 956 00:46:39,620 --> 00:46:44,240 data en metadata, of waarden en sleutels, respectievelijk. 957 00:46:44,240 --> 00:46:47,430 >> Dus een niet-relationele databank, wat gebaseerd 958 00:46:47,430 --> 00:46:50,680 op objecten, waar je gewoon klonteren alles bij elkaar en zet het 959 00:46:50,680 --> 00:46:55,640 in het geheugen, zal in het algemeen voorgesteld als of gedacht, zoals deze. 960 00:46:55,640 --> 00:47:00,500 En ik zal nu weg dat je als soort van alternatieve aanpak. 961 00:47:00,500 --> 00:47:03,750 En men is niet per se beter dan de andere. 962 00:47:03,750 --> 00:47:07,310 In feite, erg in de mode deze dagen zijn database-systemen 963 00:47:07,310 --> 00:47:11,942 zoals MongoDB en Redis en een paar andere dergelijke hulpmiddelen, vrij beschikbaar, 964 00:47:11,942 --> 00:47:13,400 maar ze zijn steeds meer en vogue. 965 00:47:13,400 --> 00:47:18,850 Mede omdat ze bieden extra beschikt over meer dan deze tabel benaderingen, 966 00:47:18,850 --> 00:47:20,850 maar ook omdat ze een beetje gemakkelijker te gebruiken, 967 00:47:20,850 --> 00:47:24,099 omdat je niet zo hard te denken over veel van deze ontwerpbeslissingen. 968 00:47:24,099 --> 00:47:25,970 Dus plussen en minnen. 969 00:47:25,970 --> 00:47:29,740 Dus beseffen dat er zijn opties dan wat we gewoon tijd besteed aan. 970 00:47:29,740 --> 00:47:32,310 >> Dus laten we dit doen. 971 00:47:32,310 --> 00:47:37,870 Laten we de overgang een beetje nu terug naar web programmeren, 972 00:47:37,870 --> 00:47:40,470 zodat we soort concluderen vandaag met iets 973 00:47:40,470 --> 00:47:43,930 dat is een beetje hands-on, het vullen in een aantal lacunes van gisteren. 974 00:47:43,930 --> 00:47:45,340 Laat me naar dit eerste. 975 00:47:45,340 --> 00:47:49,310 Dus herinneren dat gisteren we hadden een aantal canonieke HTML 976 00:47:49,310 --> 00:47:55,110 's die aanvankelijk alleen HTML, en vervolgens in tweede instantie had CSS, 977 00:47:55,110 --> 00:47:56,620 cascading style sheets. 978 00:47:56,620 --> 00:47:59,830 Dit is een nieuwe tag die Prateep'tdid zie gisteren, of stilstaan ​​bij, 979 00:47:59,830 --> 00:48:01,490 zogenaamde script tag. 980 00:48:01,490 --> 00:48:05,830 >> Blijkt dat je daadwerkelijk kunt insluiten een taal genaamd JavaScript in uw web 981 00:48:05,830 --> 00:48:08,310 pagina en maak uw web pagina's iets doen. 982 00:48:08,310 --> 00:48:09,710 Dus wat moet ik daarmee? 983 00:48:09,710 --> 00:48:12,630 Nou, laat me ga je gang en gewoon lenen deze code voor een moment. 984 00:48:12,630 --> 00:48:15,860 Ik ga in Cloud9 te gaan, geen behoefte gaan er zelf gewoon nog niet, 985 00:48:15,860 --> 00:48:21,350 en ik ga dit alert.HTML noemen. 986 00:48:21,350 --> 00:48:23,650 Ik ga om te plakken in mijn dossier hier. 987 00:48:23,650 --> 00:48:32,070 En alleen maar om duidelijk te maken wat ik heb gedaan, laat ik ga naar dit adres en ga om te waarschuwen, 988 00:48:32,070 --> 00:48:33,870 en je ziet de Hello World. 989 00:48:33,870 --> 00:48:35,440 >> Maar dit is een soort van underwhelming. 990 00:48:35,440 --> 00:48:37,410 ik wil iets doen een beetje anders. 991 00:48:37,410 --> 00:48:40,610 Dus ik ga dit ook daadwerkelijk te doen. 992 00:48:40,610 --> 00:48:43,820 Ik ga om te gaan hier e, en tussen mijn script-tags, 993 00:48:43,820 --> 00:48:53,460 zeggen alert ( 'hello, world'); zo bericht het is een beetje slordig, maar ik heb HTML, 994 00:48:53,460 --> 00:48:56,180 binnenzijde waarvan een taal JavaScript genoemd, 995 00:48:56,180 --> 00:48:59,420 en dit is wat heet een aanroep of procedure call. 996 00:48:59,420 --> 00:49:04,500 Dit is een werkwoord, letterlijk, in dit geval, en ik inroepen code functionaliteit 997 00:49:04,500 --> 00:49:06,310 dat iemand anders geschreven heeft. 998 00:49:06,310 --> 00:49:09,630 >> Dus dat is een functionaliteit alert, dus laten we gaan naar deze pagina 999 00:49:09,630 --> 00:49:14,046 nu en klik op reload, en nu zie een beetje van interactiviteit. 1000 00:49:14,046 --> 00:49:15,420 Het is een soort van oude school en lelijk. 1001 00:49:15,420 --> 00:49:18,580 Dit soort herinnert u aan de pop-ups, misschien, van weleer 1002 00:49:18,580 --> 00:49:22,030 maar het deed iets een weinig meer programmatische. 1003 00:49:22,030 --> 00:49:26,940 >> Dus meer dan dat, laten we het doen iets interessanter. 1004 00:49:26,940 --> 00:49:30,980 Laat me hier te gaan en zich te ontdoen van deze. 1005 00:49:30,980 --> 00:49:33,840 En ik ga om verder te gaan en het creëren van een vorm zoals wij gisteren deden. 1006 00:49:33,840 --> 00:49:34,840 Eigenlijk, weet je wat? 1007 00:49:34,840 --> 00:49:37,350 Ik ga naar om te gaan google.html, die we 1008 00:49:37,350 --> 00:49:43,027 begon gisteren, die leek op dit, via welke we gezocht naar cat 1009 00:49:43,027 --> 00:49:45,360 Maar let op er is een soort van een bug in de huidige versie. 1010 00:49:45,360 --> 00:49:49,770 Het werkt voor katten, maar veronderstellen dat Ik wil niet meewerken en ik typ niets, 1011 00:49:49,770 --> 00:49:53,290 en ik klik gewoon in te dienen. 1012 00:49:53,290 --> 00:49:54,540 Dat is een beetje raar gedrag. 1013 00:49:54,540 --> 00:49:57,300 Nam me mee naar de echte Google, gaf me een foutmelding. 1014 00:49:57,300 --> 00:50:00,590 Ik wil graag de gebruiker te vertellen je nodig hebt om ons een waarde te geven. 1015 00:50:00,590 --> 00:50:01,780 >> Dus hoe kunnen we dit doen? 1016 00:50:01,780 --> 00:50:06,790 Nou laat me terug gaan in Cloud9 en laat me gaan in de top van mijn pagina 1017 00:50:06,790 --> 00:50:11,980 en voeg een script-tag als deze, waarbij Ik ga wat JavaScript-code te typen. 1018 00:50:11,980 --> 00:50:15,420 En ik ga het volgende doen. 1019 00:50:15,420 --> 00:50:22,910 Als (document.getelementByID-- en recall dat hebben we gesproken over dat eerder, 1020 00:50:22,910 --> 00:50:23,960 die functie. 1021 00:50:23,960 --> 00:50:25,310 Wat ID wil ik krijgen? 1022 00:50:25,310 --> 00:50:33,050 Ik wil q te krijgen, en ik ga zeg gelijk aan niets, zoals dit-- 1023 00:50:33,050 --> 00:50:38,220 eigenlijk laat me dubbele aanhalingstekens alleen voor consistency-- gelijk aan niets, 1024 00:50:38,220 --> 00:50:46,650 dan alert ( "Voer een vraag") hier. 1025 00:50:46,650 --> 00:50:49,200 >> Dus ik heb wat lijkt te zijn zoiets als een voorwaarde. 1026 00:50:49,200 --> 00:50:51,410 We hebben dit algemene idee in Scratch gezien. 1027 00:50:51,410 --> 00:50:54,240 Het is als een van die puzzel stukken die eruit zag als dit. 1028 00:50:54,240 --> 00:50:55,780 En wat zeg ik? 1029 00:50:55,780 --> 00:50:59,520 Nou, hier beneden, zie ik ben gaan naar het volgende doen. 1030 00:50:59,520 --> 00:51:02,790 Ik ga dit vorm te geven veld niet alleen een naam q, waarvan 1031 00:51:02,790 --> 00:51:06,630 is wat wordt doorgegeven aan Google, maar ik ben ga het een lokale identifier te geven, 1032 00:51:06,630 --> 00:51:07,630 ook wel q. 1033 00:51:07,630 --> 00:51:11,780 Maar ik kon het iets noemen I wil, ik ben gewoon gaan om het simpel te houden 1034 00:51:11,780 --> 00:51:14,570 en noemen het ook wel q, enkel voor eenvoud. 1035 00:51:14,570 --> 00:51:17,650 >> En nu ga ik doen iets meer. 1036 00:51:17,650 --> 00:51:22,600 Op het formulier velden hier, ga ik toevoegen Wat is een event handler genoemd. 1037 00:51:22,600 --> 00:51:32,260 Op te dienen, ik wil bellen een functie genaamd valideren. 1038 00:51:32,260 --> 00:51:35,520 Dit bestaat nog niet, dit woord, of dit werkwoord validate, 1039 00:51:35,520 --> 00:51:38,560 want wat ik ga doen hier nu is het toevoegen van een code. 1040 00:51:38,560 --> 00:51:42,200 >> Ik ga zeggen functie valideren. 1041 00:51:42,200 --> 00:51:48,280 Ik ga dit inspringen en voeg een ander accolade hier en een ander hier. 1042 00:51:48,280 --> 00:51:50,110 Bedenk wat het nu doet. 1043 00:51:50,110 --> 00:51:54,210 Ik heb now-- denk aan dit als geschapen mijn eigen puzzelstukje dat niet eerder gedaan 1044 00:51:54,210 --> 00:51:57,440 bestaan, en ik heb deze puzzel genaamd Stuk de validate puzzelstukje. 1045 00:51:57,440 --> 00:52:01,620 Het doel in het leven is om uit te voeren de vier regels code erin. 1046 00:52:01,620 --> 00:52:04,940 >> Als document.getElementById zo conceptueel, 1047 00:52:04,940 --> 00:52:09,380 dat gaat in het element te gaan, de HTML-element waarvan unieke 1048 00:52:09,380 --> 00:52:12,930 idee is gewoon q, en dan ook al de syntaxis ziet er een beetje raar, 1049 00:52:12,930 --> 00:52:16,430 die gelijk is gelijk betekent gewoon gelijken. 1050 00:52:16,430 --> 00:52:20,950 Dus dat betekent dat als het element met de unieke identificatiecode van q, wanneer gekregen, 1051 00:52:20,950 --> 00:52:25,700 heeft geen waarde, het is gewoon gelijk aan citaat unquote, niets daar, 1052 00:52:25,700 --> 00:52:27,170 wat doe ik wil doen? 1053 00:52:27,170 --> 00:52:29,360 Ik wil schreeuwen tegen de gebruiker. 1054 00:52:29,360 --> 00:52:31,710 >> En we zullen zeer gedetailleerd niet hier. 1055 00:52:31,710 --> 00:52:32,960 Ik ga return false. 1056 00:52:32,960 --> 00:52:34,380 Dat is een fout. 1057 00:52:34,380 --> 00:52:38,746 Else, ga ik return true. 1058 00:52:38,746 --> 00:52:40,120 Dus of het werkte of dat gebeurde niet. 1059 00:52:40,120 --> 00:52:41,800 Onjuiste of waar. 1060 00:52:41,800 --> 00:52:47,820 En nu als ik geen fouten heeft gemaakt, Laat me dit op te slaan en de pagina verversen. 1061 00:52:47,820 --> 00:52:50,940 En laat me gewoon dubbel te controleren dat Ik niet, in feite, om het even welke typefouten, 1062 00:52:50,940 --> 00:52:52,690 dus ik mezelf niet in verlegenheid te brengen. 1063 00:52:52,690 --> 00:52:54,240 Laten we eens kijken of dit werkt. 1064 00:52:54,240 --> 00:52:56,930 >> Dus nu ga ik voor katten typen. 1065 00:52:56,930 --> 00:52:59,421 Het werkt nog steeds, of de helft van de werken, tenminste. 1066 00:52:59,421 --> 00:53:02,170 Nu wil ik het opnieuw, en nu laat ik proberen het indienen zonder te typen 1067 00:53:02,170 --> 00:53:05,860 anything-- verdomme, het brak. 1068 00:53:05,860 --> 00:53:06,430 Een moment. 1069 00:53:06,430 --> 00:53:09,380 1070 00:53:09,380 --> 00:53:12,660 Laat me de console te openen, [Onhoorbaar] in te loggen, de pagina geladen is. 1071 00:53:12,660 --> 00:53:13,576 Laat mij dit opnieuw te proberen. 1072 00:53:13,576 --> 00:53:17,000 1073 00:53:17,000 --> 00:53:17,501 Oh, verdomme. 1074 00:53:17,501 --> 00:53:18,000 Ik ben het vergeten. 1075 00:53:18,000 --> 00:53:18,630 Ik maakte een typo. 1076 00:53:18,630 --> 00:53:20,760 Ik herinner me wat het is. 1077 00:53:20,760 --> 00:53:21,350 .waarde. 1078 00:53:21,350 --> 00:53:27,060 Ik bedoelde te zeggen als de waarde van het element waarvan de ID q 1079 00:53:27,060 --> 00:53:29,800 gelijk aan dat, dan schreeuwen tegen de gebruiker. 1080 00:53:29,800 --> 00:53:31,870 >> Dus laat me nu weer houd mijn adem. 1081 00:53:31,870 --> 00:53:33,480 Daar gaan we. 1082 00:53:33,480 --> 00:53:34,130 Daar gaan we. 1083 00:53:34,130 --> 00:53:35,010 Voer een query. 1084 00:53:35,010 --> 00:53:36,840 Dus het is niet laat me door. 1085 00:53:36,840 --> 00:53:40,210 Ik kan soort speels met deze, maar het controleren op geen waarde, 1086 00:53:40,210 --> 00:53:46,720 Ik kan iets zeggen als: Nooit meer zoeken naar katten, 1087 00:53:46,720 --> 00:53:51,150 en nu kunnen we alleen maar meer speels laat de gebruiker zoeken naar honden als hij of zij 1088 00:53:51,150 --> 00:53:57,490 wil, of als ik ga naar binnen en zoek voor katten, nu kan ik niet. 1089 00:53:57,490 --> 00:53:58,690 >> Dus wat is het hier mee te nemen? 1090 00:53:58,690 --> 00:54:03,010 Dus een, hebben we in geïntroduceerd onze wereld van HTML en CSS, 1091 00:54:03,010 --> 00:54:04,320 programmering functionaliteit. 1092 00:54:04,320 --> 00:54:06,300 Ik kan eigenlijk nu beslissingen te nemen in de code. 1093 00:54:06,300 --> 00:54:10,570 Vroeger, alles wat ik kan doen is markeren tekstuele inhoud of grafische inhoud 1094 00:54:10,570 --> 00:54:13,080 en vertellen wat te zoeken achtige en waar te tonen. 1095 00:54:13,080 --> 00:54:16,650 Nu kan ik eigenlijk vragen vragen van de webpagina 1096 00:54:16,650 --> 00:54:20,010 en beslissingen nemen op basis op, en vraagt ​​de gebruiker 1097 00:54:20,010 --> 00:54:22,780 als ik moet schreeuwen tegen hem of haar. 1098 00:54:22,780 --> 00:54:28,740 >> Dus laten we proberen iets op onze eigen met dit. 1099 00:54:28,740 --> 00:54:33,350 Ga je gang, laat me het openstellen van de volgende dia hier, en net wijzen op één ding. 1100 00:54:33,350 --> 00:54:37,250 Net als bij CSS, kunnen we factor out onze JavaScript-code om een ​​apart bestand, 1101 00:54:37,250 --> 00:54:40,660 U kunt hetzelfde doen JavaScript en CSS. 1102 00:54:40,660 --> 00:54:44,520 En u dat het gebruik van een bron attribuut van het script tag. 1103 00:54:44,520 --> 00:54:46,540 Maar we zullen geen dingen compliceren voor nu. 1104 00:54:46,540 --> 00:54:50,440 In plaats daarvan, als je zou kunnen ga naar deze pagina niet, 1105 00:54:50,440 --> 00:55:02,690 maar-- laat me dit bewegen in order-- ga naar, als je kon, deze pagina hier. 1106 00:55:02,690 --> 00:55:03,592 Deze URL hier. 1107 00:55:03,592 --> 00:55:04,550 Het is in dia's van vandaag. 1108 00:55:04,550 --> 00:55:07,133 Je zou kunnen hebben om te herladen omdat Ik heb een paar dingen toegevoegd. 1109 00:55:07,133 --> 00:55:09,970 1110 00:55:09,970 --> 00:55:13,890 >> Maar ga er waar sommige puzzels af te wachten. 1111 00:55:13,890 --> 00:55:16,670 En dit zal ons een kans te geven, in een iets pret context, 1112 00:55:16,670 --> 00:55:20,610 te knoeien met wat JavaScript. 1113 00:55:20,610 --> 00:55:25,505 En als je er bent, Ik zal uitleggen wat er te wachten staat. 1114 00:55:25,505 --> 00:55:47,350 1115 00:55:47,350 --> 00:55:47,850 Krijg groen. 1116 00:55:47,850 --> 00:56:03,063 1117 00:56:03,063 --> 00:56:03,562 Stel blauw. 1118 00:56:03,562 --> 00:56:11,030 1119 00:56:11,030 --> 00:56:13,930 Sets groen, stelt rood. 1120 00:56:13,930 --> 00:56:19,220 1121 00:56:19,220 --> 00:56:20,220 Oeps. 1122 00:56:20,220 --> 00:56:22,330 Sorry. 1123 00:56:22,330 --> 00:56:27,630 >> Dit is zover wij documentatie voor deze uitdaging. 1124 00:56:27,630 --> 00:56:29,920 En dit gaat als volgt te werk. 1125 00:56:29,920 --> 00:56:33,340 Dus wat je hebt op deze pagina is een hele hoop 1126 00:56:33,340 --> 00:56:38,024 van het beeld puzzels door een buddy aan de Stanford University. 1127 00:56:38,024 --> 00:56:41,190 Dus wat je hier ziet is bijna soort van één van die magische oog puzzels, 1128 00:56:41,190 --> 00:56:43,815 maar als je gewoon staren, er gaat niets uit te knallen op je af. 1129 00:56:43,815 --> 00:56:46,000 Liever iets verborgen in dit beeld. 1130 00:56:46,000 --> 00:56:47,790 En het is verborgen in de volgende manier. 1131 00:56:47,790 --> 00:56:51,740 Beelden, zoals u wellicht weet, kan zijn bestaande uit slechts drie kleuren. 1132 00:56:51,740 --> 00:56:53,346 Sommige rode, wat blauw en wat groen. 1133 00:56:53,346 --> 00:56:55,220 En we kunnen alle maken kleuren van de regenboog 1134 00:56:55,220 --> 00:56:57,570 door het mengen van die drie kleuren of andere manier. 1135 00:56:57,570 --> 00:57:01,940 >> Dus dit ziet er meestal groen en blauw, maar zoals Nick hier zegt: 1136 00:57:01,940 --> 00:57:04,060 dit beeld Het ijzer puzzel is een puzzel. 1137 00:57:04,060 --> 00:57:06,780 Het bevat een afbeelding van iets bekend, echter, 1138 00:57:06,780 --> 00:57:08,310 het beeld is vervormd. 1139 00:57:08,310 --> 00:57:11,500 De beroemde object is in de rode waarden. 1140 00:57:11,500 --> 00:57:13,810 De roodwaarden alle gedeeld door 10. 1141 00:57:13,810 --> 00:57:16,230 Zij zijn te klein voor een factor 10. 1142 00:57:16,230 --> 00:57:18,280 Dus met andere woorden, Nick nam een ​​origineel beeld, 1143 00:57:18,280 --> 00:57:21,500 en hij desaturated alle van de rode uit te trekken, 1144 00:57:21,500 --> 00:57:23,850 verlagen van de hoeveelheid rode inkt, zo u wilt, in het. 1145 00:57:23,850 --> 00:57:26,060 >> De blauwe en groene waarden zijn allemaal zinloos, 1146 00:57:26,060 --> 00:57:30,000 willekeurige waarden, aka lawaai ontworpen te verdoezelen het werkelijke beeld. 1147 00:57:30,000 --> 00:57:32,250 Dus wat Nick deed was hij afgezwakt de rode en vervolgens 1148 00:57:32,250 --> 00:57:34,380 Hij gooide willekeurige hoeveelheden blauw en groen 1149 00:57:34,380 --> 00:57:37,590 naar het beeld van de soort obscure Wat is er nog steeds eigenlijk. 1150 00:57:37,590 --> 00:57:41,089 U moet deze verstoringen ongedaan te maken te onthullen het beeld. 1151 00:57:41,089 --> 00:57:44,255 Stel eerst alle blauwe en groene waarden op nul om ze uit de weg te krijgen, 1152 00:57:44,255 --> 00:57:48,700 en kijk naar het resultaat. Dan vermenigvuldig elke rode waarde van 10, 1153 00:57:48,700 --> 00:57:51,720 terugschroeven tot ongeveer de eindwaarde. 1154 00:57:51,720 --> 00:57:53,035 Wat is de beroemde object? 1155 00:57:53,035 --> 00:57:57,920 >> Dus ieder van jullie hebben deze rechthoek in uw browser op dit moment. 1156 00:57:57,920 --> 00:58:00,830 En merken dat er een aantal starter code, om zo te zeggen. 1157 00:58:00,830 --> 00:58:04,370 Dit is JavaScript-code die Nick heeft geschreven voor jou. 1158 00:58:04,370 --> 00:58:07,250 En merk op dat er een lijn in het midden die 1159 00:58:07,250 --> 00:58:10,380 begint met een slash slash, dat is wat is het algemeen genoemd geplaatst. 1160 00:58:10,380 --> 00:58:14,660 Het betekent dat het een zin voor de programmeur dat geen functionele betekenis. 1161 00:58:14,660 --> 00:58:16,520 Het is gewoon een visuele hint naar de mens. 1162 00:58:16,520 --> 00:58:18,670 >> Dus je kunt gaan en Schrap enkel die lijn, 1163 00:58:18,670 --> 00:58:22,214 en zijn super voorzichtig niet te verwijderen of iets anders veranderen. 1164 00:58:22,214 --> 00:58:25,130 En laat me gewoon lopen u door wat deze code doet en ik laat het 1165 00:58:25,130 --> 00:58:28,580 om u te achterhalen van de geheime foto. 1166 00:58:28,580 --> 00:58:32,226 Deze eerste regel hier dat ik heb zojuist gemarkeerde geeft u het volgende. 1167 00:58:32,226 --> 00:58:34,100 Aan de linkerzijde, je hebt wat heet 1168 00:58:34,100 --> 00:58:39,140 een variabele die Nick heeft willekeurig, maar redelijk riep im voor het. 1169 00:58:39,140 --> 00:58:41,660 Aan de rechterkant van die gelijke teken, 1170 00:58:41,660 --> 00:58:45,240 hij zegt geef me een nieuwe citaat, unquote "eenvoudig beeld". 1171 00:58:45,240 --> 00:58:49,680 >> Eenvoudig beeld, in deze context is wat heet een klasse, nou ja, 1172 00:58:49,680 --> 00:58:53,910 Het is net zoiets als een class-- technisch gezien een prototype-- maar echt, 1173 00:58:53,910 --> 00:58:58,000 Dit geeft me een nieuw object, de inhoud waarvan het bestand, 1174 00:58:58,000 --> 00:58:59,610 ijzer-puzzle.png. 1175 00:58:59,610 --> 00:59:03,190 Met andere woorden, heeft Nick gecreëerd Deze notie van een eenvoudige afbeelding 1176 00:59:03,190 --> 00:59:05,920 zodat we kunnen, voor pedagogische doeleinden, spelen met het beeld 1177 00:59:05,920 --> 00:59:09,790 en verander de rode, groen en blauw waarden. 1178 00:59:09,790 --> 00:59:11,750 >> En hoe gaan we dat doen? 1179 00:59:11,750 --> 00:59:15,360 Deze enigszins cryptisch syntax hier is net zoiets als de herhaling blok 1180 00:59:15,360 --> 00:59:19,140 dat sommigen van jullie zag in Scratch eerder vandaag de dag, waar u 10 keer kunt herhalen. 1181 00:59:19,140 --> 00:59:22,220 In dit geval is niet Nick hardcoded een aantal als 10. 1182 00:59:22,220 --> 00:59:28,020 In plaats daarvan zegt hij, initialiseren een variabele genaamd x naar 0, 1183 00:59:28,020 --> 00:59:33,180 controleren of x kleiner dan is de breedte van het beeld. 1184 00:59:33,180 --> 00:59:38,160 >> En zo meer gepast zijn, het is de variabele, dot betekent naar binnen gaan ervan 1185 00:59:38,160 --> 00:59:40,900 en krijg de breedte, en open vervolgens paren, gesloten 1186 00:59:40,900 --> 00:59:43,687 paren is gewoon een programmeur manier om dit te zeggen is een functie. 1187 00:59:43,687 --> 00:59:44,520 Dit is een procedure. 1188 00:59:44,520 --> 00:59:46,430 Dit is functionaliteit iemand anders schreef. 1189 00:59:46,430 --> 00:59:48,570 Gebruik het en geef me terug een antwoord. 1190 00:59:48,570 --> 00:59:53,610 En dan x ++ is een mooie manier om zeggen, nadat je dit eenmaal hebt gedaan, 1191 00:59:53,610 --> 00:59:55,850 verhogen x per 1. 1192 00:59:55,850 --> 00:59:58,760 Met andere woorden, dit is een programmeur manier 1193 00:59:58,760 --> 01:00:05,760 induceren een lus die ga dan herhalen 1194 01:00:05,760 --> 01:00:10,410 alle kolommen in een afbeelding. 1195 01:00:10,410 --> 01:00:14,790 >> Een afbeelding is slechts een raster van stippen, rijen en kolommen stippen. 1196 01:00:14,790 --> 01:00:18,270 Dit is een manier van iteratie over al deze kolommen. 1197 01:00:18,270 --> 01:00:20,770 En op de binnenkant, Ondertussen, we itereren 1198 01:00:20,770 --> 01:00:24,030 over de hoogten, hier en hier en hier. 1199 01:00:24,030 --> 01:00:29,442 Dus dit is gewoon een manier van Traipsing, bijna als een oude school schrijfmachine, 1200 01:00:29,442 --> 01:00:32,230 om gewoon te gaan over de gehele beeld iteratief. 1201 01:00:32,230 --> 01:00:36,370 Zelfs dat is niet helemaal volledig duidelijk, neem dan gewoon op het geloof voor nu, 1202 01:00:36,370 --> 01:00:38,880 dat deze drie lijnen van de code samen 1203 01:00:38,880 --> 01:00:43,090 zal u toelaten om iteratief kijken bij elke pixel, elk punt in het beeld. 1204 01:00:43,090 --> 01:00:43,790 >> Wat is een pixel? 1205 01:00:43,790 --> 01:00:46,250 Nou, om duidelijk te zijn, als we kijken op het origineel en opnieuw in, 1206 01:00:46,250 --> 01:00:49,060 als je echt zet je ogen op het computerscherm, dat is 1207 01:00:49,060 --> 01:00:53,510 gewoon een hele hoop punten, een aantal duizend punten gepakt daar samen. 1208 01:00:53,510 --> 01:00:56,180 En ja, wat zijn je gaat doen? 1209 01:00:56,180 --> 01:00:59,240 Elk van deze punten, een laatste definitie 1210 01:00:59,240 --> 01:01:06,350 is het resultaat van wat algemeen genoemd RGB, rood, groen, blauw, die 1211 01:01:06,350 --> 01:01:09,940 opnieuw kunnen worden gecombineerd om geven u een aantal kleuren. 1212 01:01:09,940 --> 01:01:13,200 >> In feite, als je nog van vele, vele jaren geleden, 1213 01:01:13,200 --> 01:01:17,320 projectieschermen als deze dingen vroeger niet één lens maar drie hebben. 1214 01:01:17,320 --> 01:01:20,700 Eén van hen te spugen rood licht, een van ze spugen groen licht, een van hen 1215 01:01:20,700 --> 01:01:21,600 uitspugen blauw licht. 1216 01:01:21,600 --> 01:01:24,391 En als je in een middelbare school zoals ik was, waar ze nooit waren 1217 01:01:24,391 --> 01:01:27,000 goed uitgelijnd, je was altijd kijken naar de geschiedenis van films 1218 01:01:27,000 --> 01:01:29,770 dat waren enigszins vervormd, omdat de drie kleuren niet 1219 01:01:29,770 --> 01:01:30,970 naar behoren te combineren. 1220 01:01:30,970 --> 01:01:36,330 >> Maar het blijkt dat elk van deze waarden rood, groen en blauw, 1221 01:01:36,330 --> 01:01:37,980 kan een nummer in verband met hen. 1222 01:01:37,980 --> 01:01:42,500 Bijvoorbeeld, 0 voor rood betekent dat er geen rood, 0 voor groen betekent geen groene, 1223 01:01:42,500 --> 01:01:45,120 en 0 voor blue betekent geen blauw. 1224 01:01:45,120 --> 01:01:49,403 Dus als je geen rood, geen groene, en geen blauwe, welke kleur heb je? 1225 01:01:49,403 --> 01:01:51,009 >> PUBLIEK: [ONVERSTAANBAAR] 1226 01:01:51,009 --> 01:01:52,800 DAVID MALAN: U zou hoop het, het is wit. 1227 01:01:52,800 --> 01:01:55,333 Helaas is dit operates-- spijt? 1228 01:01:55,333 --> 01:01:56,380 >> PUBLIEK: [ONVERSTAANBAAR] 1229 01:01:56,380 --> 01:01:58,630 DAVID MALAN: Dus je eigenlijk hebben zwart, in dit geval. 1230 01:01:58,630 --> 01:02:01,530 Dus als je geen van deze kleuren ingeschakeld, kunt zwarte hebben. 1231 01:02:01,530 --> 01:02:06,510 Echter, als je hebt, laten we zeggen een stuk van hen, net als een heleboel rode, 255 daarvan, 1232 01:02:06,510 --> 01:02:10,340 veel groen, en een heleboel van blauw, dat is wit. 1233 01:02:10,340 --> 01:02:12,230 Dus dit zijn de twee uitersten. 1234 01:02:12,230 --> 01:02:17,460 Dus door deze logica, als ik een heleboel van rode en geen groene en geen blauwe, 1235 01:02:17,460 --> 01:02:18,485 welke kleur is dat? 1236 01:02:18,485 --> 01:02:19,360 PUBLIEK: [ONVERSTAANBAAR] 1237 01:02:19,360 --> 01:02:20,610 DAVID MALAN: Rechts, uiteraard. 1238 01:02:20,610 --> 01:02:25,940 En dan is er geen rood, veel groen, geen blauwe, en dan 1239 01:02:25,940 --> 01:02:29,590 als je goed have--, zullen we gewoon afmaken het, omdat voor dit natuurlijk 1240 01:02:29,590 --> 01:02:31,350 nu, is blauw. 1241 01:02:31,350 --> 01:02:33,030 En nu kunt u deze kleuren te combineren. 1242 01:02:33,030 --> 01:02:36,430 Nu als een terzijde, als iemand van jullie ooit gedaan aantal actuele website design, 1243 01:02:36,430 --> 01:02:38,360 je zou eigenlijk Zie symbolen zoals dit. 1244 01:02:38,360 --> 01:02:42,030 FFF-- en eigenlijk, het is waarschijnlijk niet eens dat. 1245 01:02:42,030 --> 01:02:44,380 Het is FFFFFF. 1246 01:02:44,380 --> 01:02:48,970 >> Iemand ooit F en E's gezien en A through-- zo blijkt, 1247 01:02:48,970 --> 01:02:52,970 We spraken gisteren over decimaal, en vandaag de dag, een soort van ongeveer decimaal. 1248 01:02:52,970 --> 01:02:54,570 Vandaag spraken we over binary. 1249 01:02:54,570 --> 01:02:59,010 Blijkt, hexadecimaal is een zeer gemeenschappelijke basis-systeem te gebruiken in de informatica. 1250 01:02:59,010 --> 01:03:04,960 Binary is twee, decimaal is 10, hex is 16. 1251 01:03:04,960 --> 01:03:08,640 En het blijkt, hoe je rekenen in hexadecimaal? 1252 01:03:08,640 --> 01:03:11,620 Nul, één, twee, drie, vier, vijf, zes, zeven, acht, 1253 01:03:11,620 --> 01:03:14,730 negen, wat doe je gebruiken na negen? 1254 01:03:14,730 --> 01:03:16,600 Wat is het volgende nummer? 1255 01:03:16,600 --> 01:03:19,180 We hebben al gebruikt nul. 1256 01:03:19,180 --> 01:03:20,570 Ik heb 16 van deze. 1257 01:03:20,570 --> 01:03:25,770 Nul, één, twee, drie, vier, vijf, zes, zeven, acht, negen, 1258 01:03:25,770 --> 01:03:27,520 u een aantal willekeurige conventie. 1259 01:03:27,520 --> 01:03:30,810 >> En wat de mens besloot enige tijd geleden dat na negen komt de letter 1260 01:03:30,810 --> 01:03:34,450 A en dan B en C. Dus de manier waarop je tellen in hexadecimaal 1261 01:03:34,450 --> 01:03:37,040 nul, één, twee, drie, vier, vijf, zes, zeven, acht, negen, 1262 01:03:37,040 --> 01:03:42,880 A, B, C, D, E, F, en telt u allen de weg, zo blijkt, tot 15. 1263 01:03:42,880 --> 01:03:47,850 Dus nul tot 15 is nul tot F. Waarom is dat belangrijk? 1264 01:03:47,850 --> 01:03:51,570 Nou, als je twee F's, dat is hoe je 255 uit te drukken. 1265 01:03:51,570 --> 01:03:54,350 >> Zo lang verhaal kort te maken, in de wereld van Photoshop, 1266 01:03:54,350 --> 01:03:57,299 dat grafisch ontwerp software, in de wereld van web development, 1267 01:03:57,299 --> 01:03:59,590 waar je veel kleuren, natuurlijk, om mee te spelen, 1268 01:03:59,590 --> 01:04:02,350 vaak programmeurs uitdrukken die in hexadecimale, 1269 01:04:02,350 --> 01:04:05,260 gewoon omdat het de neiging een beetje eenvoudiger. 1270 01:04:05,260 --> 01:04:07,850 Hoewel op het eerste gezicht het is veel complexer. 1271 01:04:07,850 --> 01:04:11,590 >> Dus in elk geval, dit is belangrijk omdat Nick in Stanford 1272 01:04:11,590 --> 01:04:15,100 ons zes stukken functionaliteit gegeven dat jij, de ontluikende programmeurs, 1273 01:04:15,100 --> 01:04:17,060 zal nu de mogelijkheid te gebruiken. 1274 01:04:17,060 --> 01:04:19,960 Ingebouwd in dit web pagina is zes functies, 1275 01:04:19,960 --> 01:04:21,820 zes procedures die Nick schreef. 1276 01:04:21,820 --> 01:04:26,800 Drie van hen krijgt u een nummer, een rode, een groene of een blauwe waarde. 1277 01:04:26,800 --> 01:04:28,787 Drie van hen die waarde ingesteld. 1278 01:04:28,787 --> 01:04:30,620 En deze underscores zijn slechts placeholders, 1279 01:04:30,620 --> 01:04:32,600 dus je moet weten wat die zijn. 1280 01:04:32,600 --> 01:04:36,240 >> Dus met deze drie functies, de eerste van deze dingen 1281 01:04:36,240 --> 01:04:39,190 gaat worden een x-coördinaat, en de tweede van deze dingen 1282 01:04:39,190 --> 01:04:40,700 gaat worden van een y-coördinaat. 1283 01:04:40,700 --> 01:04:44,650 Met andere woorden, welke punt, die pixel wil je het groen van te krijgen, 1284 01:04:44,650 --> 01:04:46,480 krijgt het blauw van, krijgt het rood van. 1285 01:04:46,480 --> 01:04:51,440 En dan is hier, dit gaat worden x, dit gaat om een ​​y-waarde te zijn, 1286 01:04:51,440 --> 01:04:55,379 en dit gaat om een ​​nummer te zijn. 1287 01:04:55,379 --> 01:04:57,170 Dus laten we de eerste regel van dit samen 1288 01:04:57,170 --> 01:05:00,220 en dan zal ik laat het aan u proberen om de rest af te leiden. 1289 01:05:00,220 --> 01:05:03,100 Dus volgens de instructies Op deze pagina hebben we 1290 01:05:03,100 --> 01:05:08,960 de rode verhogen met een factor 10, en we moeten de green te verwijderen 1291 01:05:08,960 --> 01:05:09,930 en verwijder de blauwe. 1292 01:05:09,930 --> 01:05:12,410 Laten we beginnen met de laatste scenario. 1293 01:05:12,410 --> 01:05:17,760 Dus als ik wil, en ik ga laten inspringen door het gebruik van bepaalde ruimten, 1294 01:05:17,760 --> 01:05:22,291 als ik wil de rode stellen, de groene of de blauwe waarde, 1295 01:05:22,291 --> 01:05:23,540 Ik ga het volgende doen. 1296 01:05:23,540 --> 01:05:31,280 >> Afbeelding, im.setBlue, en vervolgens op basis van mijn instructies, 1297 01:05:31,280 --> 01:05:36,700 welke drie dingen moet ik typ binnen haakjes nu? 1298 01:05:36,700 --> 01:05:41,960 Ik heb de x-waarde, de y-waarde, en welk nummer 1299 01:05:41,960 --> 01:05:48,770 moet ik hier als ik wil om zich te ontdoen krijgen van de blauwe, op basis van dit verhaal hier? 1300 01:05:48,770 --> 01:05:49,630 Gewoon nul. 1301 01:05:49,630 --> 01:05:52,420 Als ik wil geen blauwe, ik ben gewoon gaan om het te veranderen naar nul. 1302 01:05:52,420 --> 01:05:54,465 >> Laten we nu eens gewoon samen te vatten wat dit doet. 1303 01:05:54,465 --> 01:05:56,970 1304 01:05:56,970 --> 01:06:01,170 Ik heb hier op deze top tweede en derde regel, 1305 01:06:01,170 --> 01:06:04,080 Ik had twee lussen, geneste lussen, als je 1306 01:06:04,080 --> 01:06:08,360 zullen, die zullen het effect hebben van vordert van links naar rechts, 1307 01:06:08,360 --> 01:06:11,590 boven naar beneden over alle van de x waarden en alle y-waarden. 1308 01:06:11,590 --> 01:06:15,167 Want nogmaals, een foto slechts een raster van rijen en kolommen. 1309 01:06:15,167 --> 01:06:17,000 Dus dit gaat krijgen ontdoen van al het blauw. 1310 01:06:17,000 --> 01:06:18,627 Laat me laten in de volgende regel aan u voor. 1311 01:06:18,627 --> 01:06:20,043 Hoe kan ik te ontdoen van al het groen? 1312 01:06:20,043 --> 01:06:23,747 1313 01:06:23,747 --> 01:06:25,140 >> PUBLIEK: [ONVERSTAANBAAR] 1314 01:06:25,140 --> 01:06:26,151 >> DAVID MALAN: Nice. 1315 01:06:26,151 --> 01:06:28,260 >> PUBLIEK: [ONVERSTAANBAAR] 1316 01:06:28,260 --> 01:06:30,850 >> DAVID MALAN: Nice. 1317 01:06:30,850 --> 01:06:36,120 En ik ga om uit te zoomen, en neem zorg voor dat u geen typefouten hebt gedaan. 1318 01:06:36,120 --> 01:06:39,390 En als je tevreden bent met wat je hebt gedaan, 1319 01:06:39,390 --> 01:06:42,936 ga je gang en klik op de knop Run / Opslaan en zie wat je krijgt. 1320 01:06:42,936 --> 01:06:46,982 1321 01:06:46,982 --> 01:06:48,690 En nogmaals, we hebben gemaakt slechts drie wijzigingen. 1322 01:06:48,690 --> 01:06:52,130 We schrappen die eerste commentaar en vervangen 1323 01:06:52,130 --> 01:06:53,575 deze twee regels code. 1324 01:06:53,575 --> 01:06:55,742 1325 01:06:55,742 --> 01:06:58,450 En het is OK als je nodig hebt om te slaan op de knop Run / Save een paar keer 1326 01:06:58,450 --> 01:07:01,190 om iets te repareren. 1327 01:07:01,190 --> 01:07:03,610 >> En laat me ook inzoomen op mijn code, zodat u kunt transcriberen. 1328 01:07:03,610 --> 01:07:04,110 Goed. 1329 01:07:04,110 --> 01:07:08,720 Dus ik zie Andrew heeft wat lijkt een vergissing zijn. 1330 01:07:08,720 --> 01:07:11,110 Hij heeft net een grote zwarte rechthoek op zijn scherm. 1331 01:07:11,110 --> 01:07:13,120 Heeft iemand anders hebben een grote zwarte rechthoek? 1332 01:07:13,120 --> 01:07:13,390 >> Publiek: Ja. 1333 01:07:13,390 --> 01:07:14,360 >> DAVID MALAN: Grote zwarte rechthoek? 1334 01:07:14,360 --> 01:07:16,068 OK, dus laten we denken over wat dit betekent. 1335 01:07:16,068 --> 01:07:20,560 We hebben gezegd dat nul, nul, nul, dus geen groen, geen rood, geen blauwe, 1336 01:07:20,560 --> 01:07:21,980 zal je zwarte geven. 1337 01:07:21,980 --> 01:07:24,467 En het blijkt dat de meeste van onze laptops 1338 01:07:24,467 --> 01:07:25,800 gewoon niet genoeg trouw. 1339 01:07:25,800 --> 01:07:27,750 Je kan niet helemaal vertellen dat er is eigenlijk iets daar. 1340 01:07:27,750 --> 01:07:30,340 En als je soort misschien leunen je scherm vooruit en achteruit, 1341 01:07:30,340 --> 01:07:32,850 Misschien zie je een iets daar? 1342 01:07:32,850 --> 01:07:34,820 Misschien, soort, een soort? 1343 01:07:34,820 --> 01:07:36,640 Het is niet perfect zwart. 1344 01:07:36,640 --> 01:07:38,050 >> PUBLIEK: [ONVERSTAANBAAR] 1345 01:07:38,050 --> 01:07:39,510 >> DAVID MALAN: Spoiler! 1346 01:07:39,510 --> 01:07:42,610 Er is een aantal rode daar, maar herinner me uit de specificaties 1347 01:07:42,610 --> 01:07:44,940 van het probleem, Nick afgezwakt naar beneden. 1348 01:07:44,940 --> 01:07:47,860 Hij desaturated het enigszins, maar niet helemaal tot nul. 1349 01:07:47,860 --> 01:07:51,670 Dus als we willen om de hoeveelheid te vergroten rood, laat me voorstellen deze truc. 1350 01:07:51,670 --> 01:07:53,750 Laat me opnieuw in op mijn scherm. 1351 01:07:53,750 --> 01:07:58,678 En laat me gaan en zeggen: bedrag gelijk aan im.getRed (x, y). 1352 01:07:58,678 --> 01:08:02,440 1353 01:08:02,440 --> 01:08:05,790 >> Deze lijn van de code geeft me zoiets als een variabele. 1354 01:08:05,790 --> 01:08:09,643 Ik heb willekeurig, maar, misschien wel, redelijk belde mijn variabele wat, 1355 01:08:09,643 --> 01:08:10,143 blijkbaar? 1356 01:08:10,143 --> 01:08:13,530 1357 01:08:13,530 --> 01:08:14,340 Bedrag. 1358 01:08:14,340 --> 01:08:14,980 Gewoon bedrag. 1359 01:08:14,980 --> 01:08:16,960 Ik kon heb het heet alles wat ik wil, maar ik ben 1360 01:08:16,960 --> 01:08:19,490 het gebruik van deze andere functie dat ik eerder beschreef 1361 01:08:19,490 --> 01:08:25,359 om de hoeveelheid rood te krijgen op x komma y. 1362 01:08:25,359 --> 01:08:27,520 Waarom heb ik dat gedaan? 1363 01:08:27,520 --> 01:08:30,004 Wat wil je dat hier doen? 1364 01:08:30,004 --> 01:08:32,910 1365 01:08:32,910 --> 01:08:33,619 Je moet add-- 1366 01:08:33,619 --> 01:08:34,493 PUBLIEK: [ONVERSTAANBAAR] 1367 01:08:34,493 --> 01:08:36,279 DAVID MALAN: Ja, misschien vermenigvuldigen met 10. 1368 01:08:36,279 --> 01:08:38,862 En als je dit niet weet, ben ik gaan om verder te gaan en dit te doen. 1369 01:08:38,862 --> 01:08:42,060 Ik ga om te gaan en laten we zeggen, ik wil de hoeveelheid rood 1370 01:08:42,060 --> 01:08:46,550 Ik wil wat dan ook is de rode, 10 keer, 1371 01:08:46,550 --> 01:08:50,330 en de ster, het sterretje op je toetsenbord is the-- geen gebruik maken van x. 1372 01:08:50,330 --> 01:08:51,569 Gebruik de ster. 1373 01:08:51,569 --> 01:08:55,350 Dat is hoe je dingen vermenigvuldigen in de meeste programmeertalen. 1374 01:08:55,350 --> 01:08:59,790 >> Dus volgens intuïtie Kareem's, in deze variabele genoemd bedrag, 1375 01:08:59,790 --> 01:09:03,649 is hoeveel rood wil ik op locatie xy. 1376 01:09:03,649 --> 01:09:11,500 Hoe nu, maak ik dat pixel dat nummer hebben? 1377 01:09:11,500 --> 01:09:12,859 Je hebt al eerder gedaan. 1378 01:09:12,859 --> 01:09:17,666 U stelt de groene en de blauw geen waarde nul. 1379 01:09:17,666 --> 01:09:18,540 PUBLIEK: [ONVERSTAANBAAR] 1380 01:09:18,540 --> 01:09:20,040 DAVID MALAN: Ja, goed u niet wilt dat het 10. 1381 01:09:20,040 --> 01:09:21,460 Je deed al de wiskunde hier. 1382 01:09:21,460 --> 01:09:24,779 Dus we krijgen van de waarde van rood, die een klein aantal, vermoedelijk. 1383 01:09:24,779 --> 01:09:26,180 We zijn te vermenigvuldigen met 10. 1384 01:09:26,180 --> 01:09:29,139 Wat u wilt doen met het variabele bedrag nu? 1385 01:09:29,139 --> 01:09:30,130 >> PUBLIEK: [ONVERSTAANBAAR] 1386 01:09:30,130 --> 01:09:30,880 >> DAVID MALAN: Nice. 1387 01:09:30,880 --> 01:09:34,616 Dus im.set-- wat? 1388 01:09:34,616 --> 01:09:35,640 >> PUBLIEK: setRed. 1389 01:09:35,640 --> 01:09:39,760 >> DAVID MALAN: setRed, op locatie xy. 1390 01:09:39,760 --> 01:09:40,260 Ja. 1391 01:09:40,260 --> 01:09:41,200 En net bedrag. 1392 01:09:41,200 --> 01:09:44,257 Met andere woorden, een variabele is een tijdelijke placeholder 1393 01:09:44,257 --> 01:09:45,840 dat je alles wat je wilt in kunt zetten. 1394 01:09:45,840 --> 01:09:48,680 We toevallig te zetten een aantal daarin op dit moment. 1395 01:09:48,680 --> 01:09:51,569 We hebben het vermenigvuldigd met 10 om het groter te maken. 1396 01:09:51,569 --> 01:09:56,480 En nu ben ik het vervangen van die variabele als die derde argument, of ingang 1397 01:09:56,480 --> 01:09:57,810 rode instellen. 1398 01:09:57,810 --> 01:10:00,440 En zo dat als je eenmaal afwerking die, en kennis te nemen 1399 01:10:00,440 --> 01:10:02,330 van de puntkomma en de haakjes. 1400 01:10:02,330 --> 01:10:06,290 >> Ga je gang en klik op run / opnieuw op te slaan, en u 1401 01:10:06,290 --> 01:10:10,690 zou moeten zien, magisch, wat was eigenlijk er. [? Arwa,?] Wat is er? 1402 01:10:10,690 --> 01:10:16,412 De Eiffeltoren in volwaardige rood, niet helemaal donker. 1403 01:10:16,412 --> 01:10:17,870 het moet nu meer voor de hand, ja? 1404 01:10:17,870 --> 01:10:18,840 OK. 1405 01:10:18,840 --> 01:10:20,215 En Andrew, niet meer black box? 1406 01:10:20,215 --> 01:10:21,090 PUBLIEK: [ONVERSTAANBAAR] 1407 01:10:21,090 --> 01:10:22,180 DAVID MALAN: Oké. 1408 01:10:22,180 --> 01:10:23,610 Dus ik zal dit blijven op het scherm. 1409 01:10:23,610 --> 01:10:27,010 Als je wilt spelen met deze later, zal ik dit opnieuw voor u. 1410 01:10:27,010 --> 01:10:29,140 Maar deze code hier deed precies dat. 1411 01:10:29,140 --> 01:10:31,460 Waarom gaan we niet doen een ander. 1412 01:10:31,460 --> 01:10:33,880 Laat me scroll naar beneden een beetje. 1413 01:10:33,880 --> 01:10:36,760 >> Dus in dit geval, de projector niet echt het justitie doen. 1414 01:10:36,760 --> 01:10:40,486 Maar op uw schermen, heeft u waarschijnlijk hebben een zeer rood en zeer zwarte doos. 1415 01:10:40,486 --> 01:10:42,610 Ook dit is een puzzel die laat iets bekend. 1416 01:10:42,610 --> 01:10:44,193 Toch is het beeld vervormd. 1417 01:10:44,193 --> 01:10:47,740 De ware beeld, ditmaal is in het blauwe en groene waarden. 1418 01:10:47,740 --> 01:10:51,820 Echter, ze hebben allemaal verdeeld 20 zodat de waarden zijn erg klein. 1419 01:10:51,820 --> 01:10:54,660 De rode waarden zijn slechts willekeurige getallen, lawaai. 1420 01:10:54,660 --> 01:10:57,190 Ongedaan maken deze vervormingen om het ware beeld te onthullen. 1421 01:10:57,190 --> 01:10:59,200 >> Dus Nick vertelt u dan wat te doen. 1422 01:10:59,200 --> 01:11:04,290 Stel de rode waarden nul, en dan niet bederven wat het is. 1423 01:11:04,290 --> 01:11:07,110 vermenigvuldig dan de blauwe en groene waarden met 20. 1424 01:11:07,110 --> 01:11:09,820 Dus het is bijna hetzelfde programma als voorheen, 1425 01:11:09,820 --> 01:11:11,380 maar je bent het omkeren van het proces. 1426 01:11:11,380 --> 01:11:13,780 En ik zal mijn code uit te zetten voordat het scherm bij 1427 01:11:13,780 --> 01:11:16,650 je terug wilt verwijzen naar het of speel verder met die ene. 1428 01:11:16,650 --> 01:11:18,100 Laat me opnieuw in op dat. 1429 01:11:18,100 --> 01:11:21,450 Maar het oplossen van het koper puzzel, nummer twee. 1430 01:11:21,450 --> 01:11:37,623 1431 01:11:37,623 --> 01:11:40,580 >> PUBLIEK: [ONVERSTAANBAAR] 1432 01:11:40,580 --> 01:11:44,010 >> DAVID MALAN: OK, dus dit ben ik niet van plan om zo veel hints geven. 1433 01:11:44,010 --> 01:11:47,220 Dus ik would-- oh, laten we zie je een typo hier hebben. 1434 01:11:47,220 --> 01:11:49,621 Dus vergeet niet, dit hier eigenlijk moet er naartoe te gaan. 1435 01:11:49,621 --> 01:11:52,870 Dus wat ik zou voorstellen, als je wilt richten op dit ene, is er het antwoord. 1436 01:11:52,870 --> 01:11:57,060 Als u wilt transcriberen dat, dat moet de eerste werkend te krijgen. 1437 01:11:57,060 --> 01:11:59,910 En dan kan je gebruiken als inspiratie voor de tweede. 1438 01:11:59,910 --> 01:12:02,230 Nice. 1439 01:12:02,230 --> 01:12:02,730 Goed. 1440 01:12:02,730 --> 01:12:05,430 1441 01:12:05,430 --> 01:12:08,180 >> En voor de nieuwsgierigen, Dit is een eenvoudig voorbeeld 1442 01:12:08,180 --> 01:12:11,080 van een wetenschap of een kunst genaamd steganografie, 1443 01:12:11,080 --> 01:12:14,100 de kunst van het verbergen van informatie in beelden. 1444 01:12:14,100 --> 01:12:16,890 Gewoonlijk kunnen beelden worden een watermerk zeer schaamteloos 1445 01:12:16,890 --> 01:12:19,500 met een logo in de bodem hoek, maar het is duidelijk, je 1446 01:12:19,500 --> 01:12:22,070 kan veel meer verfijnd erover en eigenlijk 1447 01:12:22,070 --> 01:12:25,050 verbergen andere beelden in de Images ergens met deze techniek. 1448 01:12:25,050 --> 01:12:59,890 1449 01:12:59,890 --> 01:13:05,770 >> Neem een ​​andere 30 seconden, en dan zullen we in ieder geval aan te kondigen wat je zou moeten zien. 1450 01:13:05,770 --> 01:13:08,330 En ik zal de derde verlaten een als een at-home oefening, 1451 01:13:08,330 --> 01:13:11,353 Als je meer van een graag uitdagen dit weekend. 1452 01:13:11,353 --> 01:13:18,240 1453 01:13:18,240 --> 01:13:20,390 En ik denk dat Andrew zou hebben het eerste gekregen. 1454 01:13:20,390 --> 01:13:22,645 Wat is het tweede beeld, Andrew? 1455 01:13:22,645 --> 01:13:23,920 >> PUBLIEK: Statue of Liberty. 1456 01:13:23,920 --> 01:13:28,500 >> DAVID MALAN: Statue of Liberty zal het antwoord deze keer. 1457 01:13:28,500 --> 01:13:31,140 Dus nogmaals, slechts enkele eenvoudige voorbeelden, waarvan het doel 1458 01:13:31,140 --> 01:13:35,040 is om u een gevoel van hoe te geven we hebben picturale Scratch vertaald 1459 01:13:35,040 --> 01:13:40,410 blokken om meer vervelend en meer ingewikkelde code, maar alle ideeën 1460 01:13:40,410 --> 01:13:42,980 blijven dezelfde, zij het met de introductie 1461 01:13:42,980 --> 01:13:48,380 Nu het begrip variabele, waarbij staat iets tijdelijk op te slaan. 1462 01:13:48,380 --> 01:13:51,750 >> Laten we nog een hands-on, alleen maar om nu verbind de stippen 1463 01:13:51,750 --> 01:13:53,880 tot iets meer real-world. 1464 01:13:53,880 --> 01:13:56,610 Wanneer u klaar bent, als je zou kunnen naar deze URL op het scherm. 1465 01:13:56,610 --> 01:14:00,610 Dat is ook in uw exemplaar van de dia's, developers.google.com/maps~~V. 1466 01:14:00,610 --> 01:14:03,660 Laten we daadwerkelijk iets te doen echte als het ware, op internet 1467 01:14:03,660 --> 01:14:07,600 met behulp van de Google Maps API, of application programming interface, 1468 01:14:07,600 --> 01:14:08,940 als volgt. 1469 01:14:08,940 --> 01:14:12,341 >> Google, net als veel bedrijven, biedt een heleboel gratis functionaliteit 1470 01:14:12,341 --> 01:14:14,840 die u kunt gebruiken om te bouwen uw eigen interessante toepassingen. 1471 01:14:14,840 --> 01:14:18,890 In feite, als je ooit hebt gebruikt Uber om een ​​taxi of een auto te krijgen, 1472 01:14:18,890 --> 01:14:21,640 weet je waarschijnlijk dat Uber heeft een kaart en het toont auto's op. 1473 01:14:21,640 --> 01:14:24,870 Dat wil zeggen, zo goed als ik kan zeg, Google Maps API. 1474 01:14:24,870 --> 01:14:28,884 Ze zijn eigenlijk met behulp van Google maps, maar Uber is geen mapping bedrijf, 1475 01:14:28,884 --> 01:14:31,050 noch zou dat een bijzonder interessant probleem 1476 01:14:31,050 --> 01:14:33,510 oplossen bovenop hun auto service probleem. 1477 01:14:33,510 --> 01:14:35,510 En dus zijn ze nu staat, weer op de schouders 1478 01:14:35,510 --> 01:14:37,520 van anderen, Google in dit geval. 1479 01:14:37,520 --> 01:14:42,850 Zodat ze gebruik maken van Google maps, maar hun eigen auto en andere dergelijke functies. 1480 01:14:42,850 --> 01:14:47,770 >> Dus we gaan om te profiteren dit het volgende doen. 1481 01:14:47,770 --> 01:14:50,230 En als ik heb te snel gegaan, bel me dan in een moment. 1482 01:14:50,230 --> 01:14:53,500 Gelukkig om een ​​deel van de afbeelding dingen samen te vatten. 1483 01:14:53,500 --> 01:14:56,290 Je moet jezelf zien op een pagina als dit. 1484 01:14:56,290 --> 01:14:58,230 Dus Google's mooi, en ze zijn een van de beste 1485 01:14:58,230 --> 01:15:01,364 het verschaffen van niet alleen API, maar gratis API's die u 1486 01:15:01,364 --> 01:15:02,780 kan spelen met of commercieel. 1487 01:15:02,780 --> 01:15:06,450 Ze doen beginnen met het opladen u als uw verbruik is hoog, maar ik ging verder op voorhand 1488 01:15:06,450 --> 01:15:10,490 en ondertekend ons voor een gratis account dat, hopelijk, 10 computers 1489 01:15:10,490 --> 01:15:12,480 zal ons niet diskwalificeren voor plotseling. 1490 01:15:12,480 --> 01:15:14,320 Dus hopelijk deze demonstratie zal werken. 1491 01:15:14,320 --> 01:15:18,840 >> En merken dat ze hebben API's voor Android, iOS, web, en web services, 1492 01:15:18,840 --> 01:15:19,620 wat dat ook is. 1493 01:15:19,620 --> 01:15:20,700 Laten we focussen op het web. 1494 01:15:20,700 --> 01:15:26,560 Dus klik op de roze doos, web, en dat zal u leiden, hopelijk, naar een pagina 1495 01:15:26,560 --> 01:15:27,630 hier. 1496 01:15:27,630 --> 01:15:29,335 En ze hebben een hele hoop van API's gekregen. 1497 01:15:29,335 --> 01:15:31,210 En het kan een beetje zijn overweldigend op het eerste, 1498 01:15:31,210 --> 01:15:33,000 maar ik zal sturen ons door wat we willen. 1499 01:15:33,000 --> 01:15:38,500 >> Linksboven is de Google Maps JavaScript API, de JavaScript-API. 1500 01:15:38,500 --> 01:15:40,380 Dus ga je gang en klik op die ene. 1501 01:15:40,380 --> 01:15:49,360 En dat zal je nu leiden tot de volgende pagina, demo's en voorbeeldcode. 1502 01:15:49,360 --> 01:15:51,190 Laat me hier uit te zoomen. 1503 01:15:51,190 --> 01:15:56,300 En laat me ons to-- beneden scrollen naar de plaats waar het zegt snelle start stappen. 1504 01:15:56,300 --> 01:15:57,970 Het scherm ziet er als de mijne. 1505 01:15:57,970 --> 01:16:01,130 >> En er zijn twee stappen, krijgen een sleutel en gaan ontwikkelen. 1506 01:16:01,130 --> 01:16:04,190 Ik heb al een stap voor ons, om een ​​zogenaamde key. 1507 01:16:04,190 --> 01:16:05,320 En dit is een gemeenschappelijk idee. 1508 01:16:05,320 --> 01:16:09,210 Een API sleutel is over het algemeen gewoon een grote willekeurig getal of tekenreeks 1509 01:16:09,210 --> 01:16:11,130 dat je verondersteld te plakken in uw code, 1510 01:16:11,130 --> 01:16:15,280 zodat Google weet wie je bent als je bent met behulp van hun service, hun API. 1511 01:16:15,280 --> 01:16:17,370 Dat betekent niet dat we in rekening worden gebracht om het even wat. 1512 01:16:17,370 --> 01:16:21,030 En nu, klik op, in plaats van , klikt beginnen met het ontwikkelen. 1513 01:16:21,030 --> 01:16:25,990 Als je gewoon kon zwaaien me dan als niet zeker waar we zijn. 1514 01:16:25,990 --> 01:16:28,040 >> Dus we gewoon krassen op de oppervlakte, hier, maar wat 1515 01:16:28,040 --> 01:16:31,000 Ik dacht dat dwingend zou zijn is het eigenlijk allemaal van ons hebben, 1516 01:16:31,000 --> 01:16:34,240 met behulp van Cloud9 in één venster en deze tutorial in een ander venster, 1517 01:16:34,240 --> 01:16:37,120 laten we eigenlijk onze eigen applicatie up and running 1518 01:16:37,120 --> 01:16:40,920 dat sluit een aangepaste Google kaart in onze eigen webpagina, 1519 01:16:40,920 --> 01:16:43,010 en voegt vervolgens één of twee functies. 1520 01:16:43,010 --> 01:16:45,520 Maar we zullen gewoon krassen op de oppervlak van wat we kunnen doen. 1521 01:16:45,520 --> 01:16:47,020 >> Dus gewoon een snel sanity check. 1522 01:16:47,020 --> 01:16:49,740 Is iedereen op deze pagina, Google Maps JavaScript API? 1523 01:16:49,740 --> 01:16:50,872 Moet zeggen aan de slag. 1524 01:16:50,872 --> 01:16:53,330 We gaan niet om te gaan door de hele zaak met alle middelen. 1525 01:16:53,330 --> 01:16:58,090 OK, in een ander tabblad, als je niet hebben hem open, ga naar Cloud9 1526 01:16:58,090 --> 01:17:03,500 en krijg je gewoon een nieuw tabblad, uiteindelijk. 1527 01:17:03,500 --> 01:17:11,070 Dus nogmaals, c9.io van gisteren, c9.io, en net een nieuw bestand te maken. 1528 01:17:11,070 --> 01:17:13,500 En ga je gang en bellen het wat je wilt. 1529 01:17:13,500 --> 01:17:16,495 Ik belde mijn map.html. 1530 01:17:16,495 --> 01:17:17,870 Noem het iets eindigt in .html. 1531 01:17:17,870 --> 01:17:23,930 1532 01:17:23,930 --> 01:17:26,580 En je moet ruwweg waar ik ben in dit proces 1533 01:17:26,580 --> 01:17:31,470 met slechts een knipperende prompt in een lege tab heet zoiets map.html. 1534 01:17:31,470 --> 01:17:35,808 1535 01:17:35,808 --> 01:17:38,148 Of bestand nieuw bestand deze tijd. 1536 01:17:38,148 --> 01:17:41,960 1537 01:17:41,960 --> 01:17:48,000 >> En nu, over op de Google Maps JavaScript API, 1538 01:17:48,000 --> 01:17:50,010 we zullen het lezen over te slaan door al deze tekst. 1539 01:17:50,010 --> 01:17:53,760 Maar merken dat hello wereld inderdaad overal, het nu zie je. 1540 01:17:53,760 --> 01:17:58,020 Hallo wereld heeft dit grote kleurrijke voorbeeld van een hele hoop van HTML. 1541 01:17:58,020 --> 01:18:03,590 Ga je gang en kopiëren en alleen dat plakken HTML, dus van het type document aan de top 1542 01:18:03,590 --> 01:18:08,810 de hele weg naar de nauwe HTML-tag, go vooruit en kopieer alle van dat-- weer, 1543 01:18:08,810 --> 01:18:14,430 Dat is onder de hello wereld example-- en plak die in uw tabblad Cloud9, 1544 01:18:14,430 --> 01:18:17,996 zodat nu uw scherm moeten kijken ruwweg als de mijne. 1545 01:18:17,996 --> 01:18:22,280 1546 01:18:22,280 --> 01:18:24,520 >> En je kunt het op te slaan, maar doe het gewoon nog niet geladen. 1547 01:18:24,520 --> 01:18:26,290 Laten we eerst kijken naar de code en kijken of we 1548 01:18:26,290 --> 01:18:29,110 kan niet afleiden of te leren van wat het is Google 1549 01:18:29,110 --> 01:18:30,860 heeft ons blind te kopiëren en plakken. 1550 01:18:30,860 --> 01:18:33,334 Ze willen alleen maar helpen, letterlijk, ons begonnen, 1551 01:18:33,334 --> 01:18:35,500 maar er is niet zo veel complexiteit er eigenlijk. 1552 01:18:35,500 --> 01:18:40,100 1553 01:18:40,100 --> 01:18:42,210 Heeft u nog vragen gewoon nog niet? 1554 01:18:42,210 --> 01:18:43,790 We zijn veilig om verder te gaan? 1555 01:18:43,790 --> 01:18:44,330 OK. 1556 01:18:44,330 --> 01:18:46,800 >> Zo snel, laten we gewoon doen een aantal snelle sanity controles. 1557 01:18:46,800 --> 01:18:48,800 Line een van wat ik zien, en hopelijk, je 1558 01:18:48,800 --> 01:18:51,710 Kijk, wat betekent dat, doctype HTML? 1559 01:18:51,710 --> 01:18:52,385 Kareem, herinneren? 1560 01:18:52,385 --> 01:18:53,260 PUBLIEK: [ONVERSTAANBAAR] 1561 01:18:53,260 --> 01:18:53,968 DAVID MALAN: Ja. 1562 01:18:53,968 --> 01:18:54,870 Hier komt HTML 5. 1563 01:18:54,870 --> 01:18:57,950 Ondertussen, lijn twee op de screen betekent hier hey browser, 1564 01:18:57,950 --> 01:18:59,482 hier komt de eigenlijke HTML. 1565 01:18:59,482 --> 01:19:01,440 Line drie is hey browser, hier komt het hoofd. 1566 01:19:01,440 --> 01:19:04,260 Lijn vier is, natuurlijk, he browser, hier komt de titel. 1567 01:19:04,260 --> 01:19:07,780 Wat doet lijn vijf doen? 1568 01:19:07,780 --> 01:19:09,930 Eigenlijk is dit niet echt iets voor ons doen. 1569 01:19:09,930 --> 01:19:13,340 In dit geval is gewoon resizes de pagina om een ​​standaard. Line zes, 1570 01:19:13,340 --> 01:19:16,140 we hebben niet over gesproken, maar het specificeert de tekencodering. 1571 01:19:16,140 --> 01:19:19,181 Er zijn verschillende manieren om bestanden te coderen, vooral voor vreemde talen. 1572 01:19:19,181 --> 01:19:21,100 UTF-8 heeft de neiging alleen maar om de standaard te zijn. 1573 01:19:21,100 --> 01:19:26,580 >> Dus nu zien we wel in de lijn zeven tot en met 16, een aantal CSS. 1574 01:19:26,580 --> 01:19:29,260 En hoewel we hebben niet gezien al deze dingen voor, 1575 01:19:29,260 --> 01:19:30,810 we kunnen soort afleiden. 1576 01:19:30,810 --> 01:19:37,075 Dus lijn acht middelen, hey browser, gelden alle onderstaande waaraan twee markeringen, 1577 01:19:37,075 --> 01:19:37,575 blijkbaar? 1578 01:19:37,575 --> 01:19:40,650 1579 01:19:40,650 --> 01:19:41,701 De tekst HTML en lichaam. 1580 01:19:41,701 --> 01:19:43,200 Dus de komma is het nieuwe ding daar. 1581 01:19:43,200 --> 01:19:46,140 En dat is gewoon een manier van vermelding van meerdere labels tegelijk. 1582 01:19:46,140 --> 01:19:47,640 >> Dan hebben we de accolades. 1583 01:19:47,640 --> 01:19:51,170 Dus blijkbaar, dit vertelt de browser, maken de hoogte van de pagina 100%. 1584 01:19:51,170 --> 01:19:54,170 Dus zelfs als er zeer weinig inhoud, maken de hele pagina, 1585 01:19:54,170 --> 01:19:55,530 maken het ding vullen de pagina. 1586 01:19:55,530 --> 01:19:57,524 Maak de kaart uiteindelijk de pagina vult. 1587 01:19:57,524 --> 01:19:58,690 Margin, wat betekent dat? 1588 01:19:58,690 --> 01:20:01,559 Dat is meestal als arbitrair witte ruimte rond de randen 1589 01:20:01,559 --> 01:20:04,350 dat sommige browser ontwerper gewoon besloten moet er zijn, want het 1590 01:20:04,350 --> 01:20:05,540 soort maakt de dingen kijken schoner. 1591 01:20:05,540 --> 01:20:06,498 Maar we willen dat niet. 1592 01:20:06,498 --> 01:20:08,710 We willen dat de kaart gaan tot aan de randen. 1593 01:20:08,710 --> 01:20:10,930 Padding, vergelijkbaar in de geest van de marges. 1594 01:20:10,930 --> 01:20:14,980 Marges bedoel buiten, padding middelen binnen, maar het is het zelfde soort deal. 1595 01:20:14,980 --> 01:20:17,520 Het is een beetje een buffer tussen u en de randen. 1596 01:20:17,520 --> 01:20:21,170 >> En dan is een goede lijn 13 kans voor een snelle beoordeling. 1597 01:20:21,170 --> 01:20:26,440 Wat doet scherpe teken kaart bedoel, of hashtag kaart betekenen? 1598 01:20:26,440 --> 01:20:29,650 Wat heeft die verwijzen naar, in principe? 1599 01:20:29,650 --> 01:20:31,485 >> PUBLIEK: [ONVERSTAANBAAR] 1600 01:20:31,485 --> 01:20:32,360 DAVID MALAN: Precies. 1601 01:20:32,360 --> 01:20:36,900 Dit object, deze CSS-eigenschap geldt voor een ding, de HTML-tag 1602 01:20:36,900 --> 01:20:41,180 dat heeft een ID citaat, unquote "kaart". 1603 01:20:41,180 --> 01:20:44,460 En laten we nu snel vooruit, scroll naar de bodem van de file, wat 1604 01:20:44,460 --> 01:20:49,860 is niet te ver weg, en merk op de lijn 19, als je het plakken precies zoals ik deed, 1605 01:20:49,860 --> 01:20:53,405 lijn 19 heeft gewoon een div, dat is een deling van de pagina, die ik gisteren 1606 01:20:53,405 --> 01:20:54,820 genoemd rechthoekig gebied. 1607 01:20:54,820 --> 01:20:55,820 Het heeft niets in. 1608 01:20:55,820 --> 01:20:57,550 Het is een open-tag, in de buurt tag. 1609 01:20:57,550 --> 01:20:59,490 Maar het heeft wel een unieke ID. 1610 01:20:59,490 --> 01:21:02,090 >> Wat lijkt hier gebeurt is Google 1611 01:21:02,090 --> 01:21:05,880 is klaarmaken onze webpagina hebben een volledige 100% van de hoogte, 1612 01:21:05,880 --> 01:21:09,680 en geen beton, geen marges, omdat wat we gaan naar binnen zetten 1613 01:21:09,680 --> 01:21:13,647 van deze div, waarvan de unieke ID is kaart, is een daadwerkelijk ingesloten kaart. 1614 01:21:13,647 --> 01:21:15,480 En we willen dat het vullen de pagina en niet alleen 1615 01:21:15,480 --> 01:21:17,560 enkele kleine rechthoek in het midden. 1616 01:21:17,560 --> 01:21:24,220 Dus lijn 14 op dezelfde manier benadrukt de kaart zelf moet een hoogte van 100% hebben. 1617 01:21:24,220 --> 01:21:29,220 >> Dus nu opmerken tussen de lijnen 20 en 28, dit is JavaScript-code. 1618 01:21:29,220 --> 01:21:33,020 En dit is, hoewel het syntactisch een beetje vreemd, 1619 01:21:33,020 --> 01:21:34,730 Er is niet zo heel veel aan de hand hier. 1620 01:21:34,730 --> 01:21:39,310 In lijn 21, dit is te verklaren zoiets als een variabele. 1621 01:21:39,310 --> 01:21:42,030 In plaats van de oproep te bedraagt, zoals we eerder deden, 1622 01:21:42,030 --> 01:21:44,500 we meer precies te zeggen var, die net betekent variabel. 1623 01:21:44,500 --> 01:21:46,520 We konden gebruiken dat in Nick's code, maar dat deed hij niet, dus ik 1624 01:21:46,520 --> 01:21:48,190 nam niet de moeite doet het ook niet. 1625 01:21:48,190 --> 01:21:50,240 Het is een variabele genaamd in kaart brengen, en dan is er 1626 01:21:50,240 --> 01:21:53,360 een functie die blijkbaar genoemd initMap. 1627 01:21:53,360 --> 01:21:55,780 >> Dus dit is zoals onze eigen aangepaste puzzelstukje in Scratch. 1628 01:21:55,780 --> 01:21:58,830 We hebben een stuk van gemaakt functionaliteit genaamd initMap, 1629 01:21:58,830 --> 01:22:00,980 en u kunt soort afleiden wat is hier aan de hand. 1630 01:22:00,980 --> 01:22:02,930 Aan de linkerzijde, we hebben een variabele gekregen, 1631 01:22:02,930 --> 01:22:06,000 dus we gaan naar de volgende te zetten ding in die variabele, 1632 01:22:06,000 --> 01:22:07,362 van rechts naar links. 1633 01:22:07,362 --> 01:22:11,940 De rechter zegt: hey browser, geef me een nieuwe Google map. 1634 01:22:11,940 --> 01:22:16,490 En google.maps.map is gewoon een funky manier specificeren dat deze functionaliteit 1635 01:22:16,490 --> 01:22:19,790 maakt deel uit van Google Maps. 1636 01:22:19,790 --> 01:22:23,010 >> Na de haakjes, hebben we gezien dit al eerder, he browser, krijgen 1637 01:22:23,010 --> 01:22:29,210 me de elementen in de pagina, tag in de pagina waarvan de unieke ID is-- 1638 01:22:29,210 --> 01:22:30,710 >> PUBLIEK: [ONVERSTAANBAAR] 1639 01:22:30,710 --> 01:22:31,790 >> DAVID MALAN: --map. 1640 01:22:31,790 --> 01:22:35,770 En wat er gaande is, nou ja, deze lijn samen, lijn 23, 1641 01:22:35,770 --> 01:22:38,630 in wezen te zeggen, hey browser, haal me 1642 01:22:38,630 --> 01:22:42,800 die lege div op de pagina wiens unieke id kaart, 1643 01:22:42,800 --> 01:22:45,600 want ik wil invoegen in het-- injecteren in het, 1644 01:22:45,600 --> 01:22:49,520 als je will-- een hele hoop van de inhoud dat gebeurt te komen van het web, 1645 01:22:49,520 --> 01:22:50,427 vervolgens. 1646 01:22:50,427 --> 01:22:52,010 En Google's dat alles te doen voor ons. 1647 01:22:52,010 --> 01:22:55,350 >> Nogmaals, aan het eind van de dag, we hebben dit voorbeeld van abstractie. 1648 01:22:55,350 --> 01:22:58,610 Ik heb geen idee wat een kaart is of hoe je een kaart API te implementeren. 1649 01:22:58,610 --> 01:22:59,460 We hoeven niet te. 1650 01:22:59,460 --> 01:23:02,740 We hoeven alleen maar om de kaart te vertellen waar zich zetten en laat 1651 01:23:02,740 --> 01:23:04,880 die ten grondslag liggen aan de uitvoering gegevens naar Google. 1652 01:23:04,880 --> 01:23:08,190 Nu is er blijkbaar twee gegevens 1653 01:23:08,190 --> 01:23:11,940 dat dit voorbeeld verschaffen tot API van Google. 1654 01:23:11,940 --> 01:23:16,450 Blijkbaar het midden van de kaart, en het zoomniveau, om zo te zeggen. 1655 01:23:16,450 --> 01:23:21,390 >> En heeft iemand herkent deze coördinaten, lengte- en breedtegraad? 1656 01:23:21,390 --> 01:23:24,364 Waarschijnlijk niet, maar we kunnen teruggaan de tutorial, letterlijk te zien. 1657 01:23:24,364 --> 01:23:25,780 Maar we zullen het zien in slechts een moment. 1658 01:23:25,780 --> 01:23:29,880 Zoomniveau is een waarde tussen, dat doe ik niet weet, één in 13 of iets dergelijks. 1659 01:23:29,880 --> 01:23:32,880 Het heeft gewoon te maken met hoe ver je bent in- of uitgezoomd, en dat is het. 1660 01:23:32,880 --> 01:23:35,690 En nu aan het eind van de pagina, bericht lijn 29-- 1661 01:23:35,690 --> 01:23:39,960 het is een beetje lelijk omdat Het wraps-- deze lijn van code 1662 01:23:39,960 --> 01:23:44,570 is wat downloadt aan de browser werkelijke API van Google. 1663 01:23:44,570 --> 01:23:47,500 Alle van de code die Google's ingenieurs hebben geschreven dat uit te voeren 1664 01:23:47,500 --> 01:23:50,000 dit hele kenmerk van integreerbare kaarten. 1665 01:23:50,000 --> 01:23:51,470 >> Laten we nu niets aan veranderen. 1666 01:23:51,470 --> 01:23:54,761 Als je volgende mee, ga je gang en gewoon op te slaan dat bestand, als je inderdaad 1667 01:23:54,761 --> 01:23:55,760 wat ik heb. 1668 01:23:55,760 --> 01:23:57,370 Ga naar de URL. 1669 01:23:57,370 --> 01:23:59,820 U kunt op de knop Run up top en dat zal vertellen 1670 01:23:59,820 --> 01:24:03,050 u de URL van uw webserver opnieuw. 1671 01:24:03,050 --> 01:24:06,010 En het zal u leiden tot een nieuw tabblad. 1672 01:24:06,010 --> 01:24:11,910 Als u klikt op Open voor map.html, en de kans is dat je 1673 01:24:11,910 --> 01:24:15,520 gaat om een ​​waarschuwing te krijgen, een foutmelding, ja? 1674 01:24:15,520 --> 01:24:18,570 Foutmelding, foutmelding? 1675 01:24:18,570 --> 01:24:21,170 >> Dus helaas, de fout Het bericht is niet zo verhelderend 1676 01:24:21,170 --> 01:24:23,890 tenzij je eigenlijk opent de console, die speciale tab we 1677 01:24:23,890 --> 01:24:27,110 hield de opening gisteren en een beetje eerder vandaag. 1678 01:24:27,110 --> 01:24:29,445 Maar ik struikelde over dit eerder, dus ik al 1679 01:24:29,445 --> 01:24:30,820 bedacht wat de oplossing is. 1680 01:24:30,820 --> 01:24:34,440 In de slides van vandaag, of eerder, in Cloud9, bericht 1681 01:24:34,440 --> 01:24:36,430 dat we niet doen iets met opzet. 1682 01:24:36,430 --> 01:24:40,690 Merk op dat dit script tag in lijn 29, als je leest er doorheen, 1683 01:24:40,690 --> 01:24:44,440 het is net als maps.googleapis.com/ iets iets iets, 1684 01:24:44,440 --> 01:24:46,430 dan merken iemand, een van de ontwikkelaars, 1685 01:24:46,430 --> 01:24:50,040 schreef in hoofdletters brieven, uw API-sleutel. 1686 01:24:50,040 --> 01:24:51,700 >> We moeten iets te plakken in. 1687 01:24:51,700 --> 01:24:53,450 En dit was de stap Ik deed voor ons vóór, 1688 01:24:53,450 --> 01:24:57,190 en opnieuw ze misschien op de zwarte lijst met ons op als plotseling, 12 of meer van ons 1689 01:24:57,190 --> 01:24:59,470 beginnen met dezelfde sleutel, maar laten we eens kijken wat er gebeurt. 1690 01:24:59,470 --> 01:25:03,030 Dus als je in de hedendaagse dia's, één dia later, is er 1691 01:25:03,030 --> 01:25:07,070 Deze zeer funky uitziende tekenreeks. 1692 01:25:07,070 --> 01:25:12,230 Ga je gang en gewoon kopiëren dat en plakken wanneer dit uw API-sleutel zegt. 1693 01:25:12,230 --> 01:25:15,120 Dat is degene die ik aangemeld voor. 1694 01:25:15,120 --> 01:25:17,700 >> En zeker niet te proberen handmatig te typen, 1695 01:25:17,700 --> 01:25:21,210 want het voelt beladen met typefouten, mogelijk. 1696 01:25:21,210 --> 01:25:23,260 Dus gewoon kopiëren en plakken dat. 1697 01:25:23,260 --> 01:25:26,090 En het gaat om de lijn te maken langer, maar nu, alleen maar om duidelijk te zijn, 1698 01:25:26,090 --> 01:25:29,540 het moet een beetje meer kijken als dit, waar de sleutel is gelijk aan niet 1699 01:25:29,540 --> 01:25:32,200 gekapitaliseerd schreeuwen tegen je. 1700 01:25:32,200 --> 01:25:34,810 Sla uw pagina, ga terug aan de andere tab, herladen, 1701 01:25:34,810 --> 01:25:36,770 en hopen op een kaart waar te zien? 1702 01:25:36,770 --> 01:25:37,790 >> PUBLIEK: Australië. 1703 01:25:37,790 --> 01:25:38,748 >> DAVID MALAN: Australië. 1704 01:25:38,748 --> 01:25:41,200 Dus blijkbaar dat zijn de GPS-coördinaten van Australië. 1705 01:25:41,200 --> 01:25:44,491 En laat me rond te lopen voor een ogenblik en helpen iedereen die helemaal er niet, 1706 01:25:44,491 --> 01:25:47,729 maar laat me voor te stellen, via Google, vinden de GPS-coördinaten van je eigen woonplaats 1707 01:25:47,729 --> 01:25:48,770 of uw eigen thuisland. 1708 01:25:48,770 --> 01:25:51,436 En waarschijnlijk Google kan dit uitschakelen up, of Wikipedia kan je vertellen. 1709 01:25:51,436 --> 01:25:54,410 Maar kiezen uit twee verschillende waarden voor de lengte- en breedtegraad, 1710 01:25:54,410 --> 01:25:57,530 ga terug in en plakken, en herlaad vervolgens de pagina na het opslaan 1711 01:25:57,530 --> 01:26:00,718 en te kijken of je kunt hebben kaart voor uw eigen woonplaats. 1712 01:26:00,718 --> 01:26:04,500 1713 01:26:04,500 --> 01:26:08,042 >> En als je klaar bent met dat, de follow-up challenge-- 1714 01:26:08,042 --> 01:26:11,250 en ik zal een beetje minder richting te geven, opzettelijk, zodat je bewust 1715 01:26:11,250 --> 01:26:13,791 hebben om te strijden voor een paar minuten met de documentatie, 1716 01:26:13,791 --> 01:26:18,740 verander de kaart om dit niet te zijn cartooneske standaard, maar een satelliet kaart. 1717 01:26:18,740 --> 01:26:24,600 Dus je eigenlijk zien satelliet beeldspraak in plaats van de mooie kleuren. 1718 01:26:24,600 --> 01:26:29,710 >> En de hint ik geef je is verandering van de kaart type. 1719 01:26:29,710 --> 01:26:33,084 Ga terug naar die krijgen begonnen pagina voor inspiratie. 1720 01:26:33,084 --> 01:26:40,599 1721 01:26:40,599 --> 01:26:42,390 Zoals je misschien hebt opgedaan, als u op zoek bent, 1722 01:26:42,390 --> 01:26:44,250 er zijn zo veel meer dingen die je kunt doen. 1723 01:26:44,250 --> 01:26:46,380 Sommigen van jullie hebben al veranderde de kaart type. 1724 01:26:46,380 --> 01:26:49,890 Maar je kunt doen-- bijvoorbeeld, laat me ga dan naar iets wat we deden voor de cursus 1725 01:26:49,890 --> 01:26:52,050 Ik teach-- maps.cs50.net. 1726 01:26:52,050 --> 01:26:53,470 Een van onze undergrads deed dit. 1727 01:26:53,470 --> 01:26:58,890 We centreren onze kaart over Harvard Yard en overlay al deze namen van gebouwen, 1728 01:26:58,890 --> 01:27:01,070 en we hadden hem dit toe te voegen. 1729 01:27:01,070 --> 01:27:04,270 Dus als ik wil zoeken, bijvoorbeeld Matthews Hall, 1730 01:27:04,270 --> 01:27:05,730 we hebben een kleine drop-down menu. 1731 01:27:05,730 --> 01:27:09,080 En ik denk dat hij het gebruik van Bootstrap, de bibliotheek we eerder voor dit besproken. 1732 01:27:09,080 --> 01:27:12,190 En als u klikt op Matthews Hall, het onmiddellijk 1733 01:27:12,190 --> 01:27:14,790 springt de kaart voor een bepaalde locatie, en het shows 1734 01:27:14,790 --> 01:27:16,440 u een foto in dit kleine pop-up. 1735 01:27:16,440 --> 01:27:18,670 >> Maar zelfs deze kleine pop-up, hebben we niet uit te voeren. 1736 01:27:18,670 --> 01:27:27,521 Als ik scroll naar beneden op ons krijgen begon pagina en kijk voor info windows 1737 01:27:27,521 --> 01:27:29,770 je zult zien dat sommige van de functionaliteit die u zelf 1738 01:27:29,770 --> 01:27:31,561 kan toevoegen, zij het met een beetje meer complexiteit, 1739 01:27:31,561 --> 01:27:33,970 is zoiets als een info-venster. 1740 01:27:33,970 --> 01:27:37,190 En als ik klik op een voorbeeld hier, en dit is wat is leuk, 1741 01:27:37,190 --> 01:27:40,530 Je kunt dingen doen als dit, te klikken op de marker en dan voila, 1742 01:27:40,530 --> 01:27:42,400 informatie opduikt. 1743 01:27:42,400 --> 01:27:45,874 >> Dus we hebben niet helemaal ingevoerd genoeg kenmerken van JavaScript 1744 01:27:45,874 --> 01:27:49,040 om een ​​foto van u precies hoe te schilderen kunnen allemaal van dit spul samen draad, 1745 01:27:49,040 --> 01:27:50,706 maar we hebben soort topje van de ijsberg. 1746 01:27:50,706 --> 01:27:53,140 In feite, wat ik deed net op het moment Ik klikte op dat marker, 1747 01:27:53,140 --> 01:27:55,819 werd triggering een evenement, een zogenaamde on gebeurtenis click. 1748 01:27:55,819 --> 01:27:57,610 En we eigenlijk zag een gebeurtenis eerder vandaag, 1749 01:27:57,610 --> 01:28:00,670 de zogenaamde dienen gebeurtenis, toen we voorkomen 1750 01:28:00,670 --> 01:28:02,490 de gebruiker zoekt katten. 1751 01:28:02,490 --> 01:28:06,560 Dus we hebben soort geplukt en koos uit al deze verschillende functies, 1752 01:28:06,560 --> 01:28:08,990 om u een idee te geven, hopelijk, van wat je kunt eigenlijk 1753 01:28:08,990 --> 01:28:11,000 doen met een beetje meer comfort in de programmering, 1754 01:28:11,000 --> 01:28:12,587 en volledig gratis middelen. 1755 01:28:12,587 --> 01:28:15,856 1756 01:28:15,856 --> 01:28:18,770 >> Nog vragen? 1757 01:28:18,770 --> 01:28:19,790 Nee? 1758 01:28:19,790 --> 01:28:22,542 Dit is je laatste kans, althans vandaag, op een vrijdag, 1759 01:28:22,542 --> 01:28:25,000 om iets te krijgen van uw borst zodat u uit te lopen van hier 1760 01:28:25,000 --> 01:28:27,067 een gerust gevoel en comfortabel. 1761 01:28:27,067 --> 01:28:27,566 Ja. 1762 01:28:27,566 --> 01:28:29,740 >> PUBLIEK: Waarom niet je nog een ding toe te voegen? 1763 01:28:29,740 --> 01:28:32,720 >> DAVID MALAN: Oh mijn god. 1764 01:28:32,720 --> 01:28:35,260 Ik moet dit weekend rust, denk ik. 1765 01:28:35,260 --> 01:28:36,180 Andere vragen? 1766 01:28:36,180 --> 01:28:37,055 >> PUBLIEK: [ONVERSTAANBAAR] 1767 01:28:37,055 --> 01:28:44,130 1768 01:28:44,130 --> 01:28:46,810 >> DAVID MALAN: Je can-- in Internet Explorer, rust in vrede, 1769 01:28:46,810 --> 01:28:49,310 u heeft gebruikt om te kunnen zetten VB script, virtuele basic script, 1770 01:28:49,310 --> 01:28:50,643 maar dat nooit echt aangeslagen. 1771 01:28:50,643 --> 01:28:52,490 Dus het korte antwoord is gewoon JavaScript. 1772 01:28:52,490 --> 01:28:55,144 1773 01:28:55,144 --> 01:28:55,810 Andere vragen? 1774 01:28:55,810 --> 01:28:58,427 1775 01:28:58,427 --> 01:28:59,760 Oké, goed, laat mij dit te doen. 1776 01:28:59,760 --> 01:29:02,070 Laat me buiten te grijpen onze collega's. 1777 01:29:02,070 --> 01:29:04,500 Ze hebben een aantal evaluatie formulieren die zij willen dat iedereen 1778 01:29:04,500 --> 01:29:06,310 om een ​​paar minuten te besteden invullen. 1779 01:29:06,310 --> 01:29:08,775 Ze willen die vorm te verzamelen en de eventuele ontheffingen dat je naar buiten zou kunnen hebben. 1780 01:29:08,775 --> 01:29:10,240 Ze zullen ook certificaten. 1781 01:29:10,240 --> 01:29:12,380 Ik gok dat er nog enkele snacks buiten. 1782 01:29:12,380 --> 01:29:14,360 Laat me gaan deze uit, en als je Voor vragen in de tussentijd, 1783 01:29:14,360 --> 01:29:17,120 Ik zal rond meer individueel te lopen en wij kunnen u op weg helpen. 1784 01:29:17,120 --> 01:29:17,879 Ja natuurlijk. 1785 01:29:17,879 --> 01:29:18,754 PUBLIEK: [ONVERSTAANBAAR] 1786 01:29:18,754 --> 01:29:26,737 1787 01:29:26,737 --> 01:29:28,570 DAVID MALAN: Dat is meestal waar deze dagen. 1788 01:29:28,570 --> 01:29:30,730 Zeker met web software, ben je leunt 1789 01:29:30,730 --> 01:29:32,901 van anderen ben je ofwel esthetisch gebruik van dingen 1790 01:29:32,901 --> 01:29:35,400 als Bootstrap, zodat je niet moet het lage niveau uit te voeren 1791 01:29:35,400 --> 01:29:37,169 Details van menu en knoppen en zo. 1792 01:29:37,169 --> 01:29:39,210 Je leunend op iemand zoals Google, zodat u 1793 01:29:39,210 --> 01:29:42,050 hoeft niet te worden een Uber bouwen het bedrijfsleven en een in kaart brengen van het bedrijfsleven, 1794 01:29:42,050 --> 01:29:44,850 en een willekeurig aantal vergelijkbare toepassingen. 1795 01:29:44,850 --> 01:29:46,350 >> In feite, logins zijn populair, ook. 1796 01:29:46,350 --> 01:29:48,500 Als u hebt gebruikt Spotify of een aantal websites, 1797 01:29:48,500 --> 01:29:51,210 zult u zich aanmeldt bij een aantal websites met behulp van Facebook. 1798 01:29:51,210 --> 01:29:53,350 Dus wat is mooi, er zijn API's voor logins 1799 01:29:53,350 --> 01:29:56,570 vandaag de dag, zodat u niet hoeft om uw eigen gebruikers tafel 1800 01:29:56,570 --> 01:29:59,440 en al uw eigen database noodzakelijkerwijs in dezelfde mate. 1801 01:29:59,440 --> 01:30:01,795 U kunt laten Facebook allemaal doen van die complexiteit voor u. 1802 01:30:01,795 --> 01:30:03,920 Dus het is een spannende tijd, eerlijk gezegd, in de programmering, 1803 01:30:03,920 --> 01:30:07,200 omdat er zo veel van derden diensten die u kunt bouwen op de top van. 1804 01:30:07,200 --> 01:30:10,890 >> En nogmaals, de prijs die u betaalt is hetzij financieel of downtime. 1805 01:30:10,890 --> 01:30:13,750 Als Google gaat naar beneden, dat doet Uber, misschien wel, 1806 01:30:13,750 --> 01:30:15,690 maar misschien is dat een redelijke trade-off. 1807 01:30:15,690 --> 01:30:18,040 En nogmaals, dat was een van de thema's, hopelijk voor de laatste paar dagen, 1808 01:30:18,040 --> 01:30:18,780 is deze trade-offs. 1809 01:30:18,780 --> 01:30:20,738 En zelden is er heen te gaan een juiste antwoord te zijn. 1810 01:30:20,738 --> 01:30:25,700 Het is echt de betere van twee of meer antwoorden. 1811 01:30:25,700 --> 01:30:26,682 >> Ga deze rond. 1812 01:30:26,682 --> 01:30:36,830 1813 01:30:36,830 --> 01:30:41,110 >> En deze Cloud9 accounts zullen blijven om te werken, in theorie, in de eeuwigheid. 1814 01:30:41,110 --> 01:30:45,000 Je zou kunnen vinden als je een paar dagen wachten of een week of meer om terug te loggen in hen, 1815 01:30:45,000 --> 01:30:49,170 Het zou kunnen nemen als een of vijf minuten terug open te stellen, 1816 01:30:49,170 --> 01:30:54,090 maar dat is alleen omdat ze zetten zij te slapen om te besparen op middelen. 1817 01:30:54,090 --> 01:31:10,527