1 00:00:00,000 --> 00:00:00,060 2 00:00:00,060 --> 00:00:01,560 >> DAVID MALAN: Va bene, siamo tornati. 3 00:00:01,560 --> 00:00:03,830 Così, per l'emozionante Per concludere, la nostra ultima sezione 4 00:00:03,830 --> 00:00:06,900 sulla programmazione web, che ho abbiamo pensato di usare come termine generale 5 00:00:06,900 --> 00:00:08,440 per catturare alcuni argomenti rimanenti. 6 00:00:08,440 --> 00:00:10,390 Così, alla fine del giorno, faremo effettivamente fare 7 00:00:10,390 --> 00:00:14,830 un po 'di hands-on di programmazione web con un linguaggio chiamato JavaScript. 8 00:00:14,830 --> 00:00:17,510 E penso che daremo uno sguardo a qualcosa legato alle immagini 9 00:00:17,510 --> 00:00:20,040 e scoprire qualcosa segretamente nascosto in un'immagine, 10 00:00:20,040 --> 00:00:23,230 e anche dare un'occhiata a Google Maps API, Application Programming 11 00:00:23,230 --> 00:00:26,040 interfaccia, come qualcosa rappresentativo del tipo di software 12 00:00:26,040 --> 00:00:28,800 che è sempre e liberamente disponibile oggi. 13 00:00:28,800 --> 00:00:32,029 >> Ma perché non diamo uno sguardo ad un ingrediente di questo mondo 14 00:00:32,029 --> 00:00:34,070 che abbiamo tipo di stati dando per scontato esiste 15 00:00:34,070 --> 00:00:36,720 per qualche tempo, un database. 16 00:00:36,720 --> 00:00:39,150 Per il giorno passato e un mezzo che abbiamo assunto 17 00:00:39,150 --> 00:00:42,910 che abbiamo accesso a un database, ma che problema ha un database risolve? 18 00:00:42,910 --> 00:00:45,540 Che cosa fa per noi? 19 00:00:45,540 --> 00:00:47,030 Che cos'è? 20 00:00:47,030 --> 00:00:48,679 >> PUBBLICO: [INAUDIBLE] 21 00:00:48,679 --> 00:00:51,720 DAVID MALAN: contiene tutte le informazioni, Ok, e quali tipi di informazioni 22 00:00:51,720 --> 00:00:53,186 potreste mettere in esso? 23 00:00:53,186 --> 00:00:54,590 >> PUBBLICO: [INAUDIBLE] 24 00:00:54,590 --> 00:00:56,450 >> DAVID MALAN: Tutte le informazioni si mette in esso, si otterrà indietro. 25 00:00:56,450 --> 00:00:57,070 Questo è vero. 26 00:00:57,070 --> 00:01:01,900 E su un sito web-based tipico o web applicazione, quali tipi di informazioni, 27 00:01:01,900 --> 00:01:03,385 in particolare, potrebbe mettere in? 28 00:01:03,385 --> 00:01:04,260 PUBBLICO: [INAUDIBLE] 29 00:01:04,260 --> 00:01:05,051 DAVID MALAN: gli utenti. 30 00:01:05,051 --> 00:01:07,000 Quindi, che cosa è un utente? 31 00:01:07,000 --> 00:01:09,765 >> PUBBLICO: [INAUDIBLE] 32 00:01:09,765 --> 00:01:11,640 DAVID MALAN: OK, registrato utente del sito. 33 00:01:11,640 --> 00:01:15,100 E che cosa significa Archivio informazioni degli utenti? 34 00:01:15,100 --> 00:01:17,260 Quello che compone un utente? 35 00:01:17,260 --> 00:01:18,331 Un utente ha quello? 36 00:01:18,331 --> 00:01:19,206 PUBBLICO: [INAUDIBLE] 37 00:01:19,206 --> 00:01:21,040 DAVID MALAN: Sì, personal i dati, e questo mi piace. 38 00:01:21,040 --> 00:01:21,970 Cerchiamo di essere più preciso. 39 00:01:21,970 --> 00:01:25,275 Così un utente ha tipicamente un nome, Che altro potrebbe avere un utente? 40 00:01:25,275 --> 00:01:26,150 PUBBLICO: [INAUDIBLE] 41 00:01:26,150 --> 00:01:29,130 DAVID MALAN: An OK addr--, così il nome, il cognome. 42 00:01:29,130 --> 00:01:29,630 Quello è buono. 43 00:01:29,630 --> 00:01:31,463 In realtà, cerchiamo di fissare che, perché sta andando 44 00:01:31,463 --> 00:01:35,010 per aprire l'opportunità di discussione, ancora, di più. 45 00:01:35,010 --> 00:01:39,090 Nome, cognome, sesso. 46 00:01:39,090 --> 00:01:41,820 47 00:01:41,820 --> 00:01:43,481 Un ID di qualche tipo. 48 00:01:43,481 --> 00:01:43,980 Cos'altro? 49 00:01:43,980 --> 00:01:45,438 Ho sentito qualcos'altro prima, troppo. 50 00:01:45,438 --> 00:01:51,600 Una e-mail, indirizzo postale. 51 00:01:51,600 --> 00:01:58,170 >> Quindi cerchiamo di mettere in pausa e ora ci considerano Non quello che stiamo memorizzazione nel database, 52 00:01:58,170 --> 00:02:01,980 ma-- e perché no, dal momento che è forse ovvio che una volta che si registra un utente, 53 00:02:01,980 --> 00:02:03,730 si vuole ricordare loro per qualche tempo. 54 00:02:03,730 --> 00:02:05,480 Tu non vuoi che basta essere memorizzati in RAM 55 00:02:05,480 --> 00:02:08,690 ed essere così all'oblio concentriamoci sul come. 56 00:02:08,690 --> 00:02:11,700 >> Risulta che in il mondo dei database, 57 00:02:11,700 --> 00:02:14,410 ci sono almeno due tipi di questi tempi. 58 00:02:14,410 --> 00:02:20,010 Qualcosa che si chiama un database SQL, Structured Query Language, 59 00:02:20,010 --> 00:02:24,770 o, simpaticamente chiamato, NoSQL, che non è SQL. 60 00:02:24,770 --> 00:02:26,980 E quest'ultimo è un esempio di ciò che potrebbe 61 00:02:26,980 --> 00:02:30,660 essere definito un object-oriented, o un negozio oggetto, un database 62 00:02:30,660 --> 00:02:36,010 che memorizza gli oggetti, e non, scusa me, come vedremo tra poco, le righe. 63 00:02:36,010 --> 00:02:41,800 >> Quindi ci concentreremo solo per un momento il primo di questi, vale a dire, un SQL 64 00:02:41,800 --> 00:02:46,850 banca dati, se non altro perché si tratta di già così familiare, a chiunque 65 00:02:46,850 --> 00:02:51,070 che ha utilizzato Excel o Fogli di Google o Apple 66 00:02:51,070 --> 00:02:53,740 Numeri o qualsiasi standard foglio di calcolo, 67 00:02:53,740 --> 00:02:56,040 o, equivalentemente, o più sofisticato, 68 00:02:56,040 --> 00:02:58,610 qualcosa di simile a Microsoft Access o Oracle 69 00:02:58,610 --> 00:03:03,890 o MySQL o PostgreSQL, tutte sono nomi di prodotti per implementazioni 70 00:03:03,890 --> 00:03:04,865 della seguente idea. 71 00:03:04,865 --> 00:03:10,350 >> Un database relazionale è semplicemente qualcosa che ha righe e colonne. 72 00:03:10,350 --> 00:03:12,850 E per righe e colonne, Ho letteralmente dire qualcosa 73 00:03:12,850 --> 00:03:21,860 come questo, quindi dove si può avere la nome di un campo e il tipo qui. 74 00:03:21,860 --> 00:03:25,800 E in realtà, mi permetta ora inizia a mappare questi. 75 00:03:25,800 --> 00:03:29,420 Quindi in realtà, non lo so il motivo per cui ho disegnato un grafico separato. 76 00:03:29,420 --> 00:03:30,780 Teniamo questo semplice. 77 00:03:30,780 --> 00:03:34,830 >> Abbiamo qui la inizi della nostra tavola, dove 78 00:03:34,830 --> 00:03:40,150 questo è il nome del campo e questo è il tipo di dati, 79 00:03:40,150 --> 00:03:41,660 e per tipo intendo quanto segue. 80 00:03:41,660 --> 00:03:45,510 È un numero è una stringa, una breve stringa come una parola, 81 00:03:45,510 --> 00:03:49,340 si tratta di un punto, è vero dati binari, come un'immagine? 82 00:03:49,340 --> 00:03:51,980 E facciamo solo prendere in giro questo a parte solo per un momento. 83 00:03:51,980 --> 00:03:57,575 Così il nome, il numero, stringa, grande pezzo di text-- 84 00:03:57,575 --> 00:03:58,450 PUBBLICO: [INAUDIBLE] 85 00:03:58,450 --> 00:03:59,616 DAVID MALAN: Sì, così stringa. 86 00:03:59,616 --> 00:04:04,744 E in un contesto di database, ci di solito chiamare questo campo char. 87 00:04:04,744 --> 00:04:07,660 Mi limiterò a dire char per ora, ma siamo andando a definire questa in un momento. 88 00:04:07,660 --> 00:04:09,180 campo di caratteri. 89 00:04:09,180 --> 00:04:11,365 Cognome probabilmente lo stesso. 90 00:04:11,365 --> 00:04:11,865 Genere? 91 00:04:11,865 --> 00:04:16,230 92 00:04:16,230 --> 00:04:18,310 >> Maschio o femmina, in modo che potrebbe essere un campo char. 93 00:04:18,310 --> 00:04:21,380 Potrebbe essere sia preventivo, unquote "Maschio" o citazione, unquote "femmina" 94 00:04:21,380 --> 00:04:23,650 o potrebbe essere mo f. 95 00:04:23,650 --> 00:04:26,540 Se si vuole essere più inclusiva, potrebbe essere necessario un terzo valore 96 00:04:26,540 --> 00:04:28,640 o qualche tipo di altro campo del tutto. 97 00:04:28,640 --> 00:04:31,350 E così si potrebbe usare vero falso. 98 00:04:31,350 --> 00:04:35,036 Il campo potrebbe essere chiamato di sesso maschile, e allora si potrebbe dire vero o falso. 99 00:04:35,036 --> 00:04:38,160 Ma questo non coglie necessariamente tutte le informazioni che si potrebbe desiderare. 100 00:04:38,160 --> 00:04:41,118 >> Così si scopre c'è un altro tipo di campo che potrebbero essere utili qui 101 00:04:41,118 --> 00:04:46,040 in un database tipico, chiamato enum, dove è un campo di caratteri, 102 00:04:46,040 --> 00:04:50,480 ma tu, il progettista, arriva a enumerare i valori possibili, 103 00:04:50,480 --> 00:04:54,630 come citazione, unquote "maschio", citazione, unquote "femmina" e così via. 104 00:04:54,630 --> 00:04:57,620 In modo che qualsiasi valore è nel database, 105 00:04:57,620 --> 00:05:00,670 è infatti basata su caratteri, ma deve essere uno di questi valori. 106 00:05:00,670 --> 00:05:03,520 Probabilmente non ci vuole un enum per nome o cognome. 107 00:05:03,520 --> 00:05:05,630 In caso contrario, avremmo enumerare, come il nome 108 00:05:05,630 --> 00:05:09,570 deriva da, letteralmente ogni possibile nome e cognome. 109 00:05:09,570 --> 00:05:13,960 >> OK, in modo da ID ciò che dovrebbe essere un ID? 110 00:05:13,960 --> 00:05:15,200 Sì, così forse un numero. 111 00:05:15,200 --> 00:05:17,870 Quindi cerchiamo di attaccare con che per ora, il numero. 112 00:05:17,870 --> 00:05:22,010 E per numero, il numero di un po 'troppo ampia ora. 113 00:05:22,010 --> 00:05:23,900 Per la fine del secondo giorno, mi sento come noi 114 00:05:23,900 --> 00:05:25,280 dovrebbe essere un po 'più precisa. 115 00:05:25,280 --> 00:05:29,280 Numero potrebbe significare simili, potrebbe essere qualcosa come 1.236. 116 00:05:29,280 --> 00:05:31,500 E che probabilmente non è ciò che intendiamo per un ID. 117 00:05:31,500 --> 00:05:34,635 Che cosa si intende probabilmente da un ID? 118 00:05:34,635 --> 00:05:36,382 >> PUBBLICO: [INAUDIBLE] 119 00:05:36,382 --> 00:05:38,590 DAVID MALAN: Oh, OK, così forse non è nemmeno un numero. 120 00:05:38,590 --> 00:05:42,840 Forse è in realtà un identificatore univoco che è una stringa, come un nome utente. 121 00:05:42,840 --> 00:05:44,580 Quindi assolutamente, potrebbe essere. 122 00:05:44,580 --> 00:05:46,730 Credo che qualcuno probabilmente significato numerico, però. 123 00:05:46,730 --> 00:05:48,460 Quindi cerchiamo di stare con quella. 124 00:05:48,460 --> 00:05:49,320 Che tipo di numero? 125 00:05:49,320 --> 00:05:51,960 Che cosa è un altro precise-- un numero intero. 126 00:05:51,960 --> 00:05:56,710 Così un numero come 0, 1, 2, 3, così noi chiamiamo un numero intero. 127 00:05:56,710 --> 00:05:58,909 E anche allora, ho potuto essere nitpicking, è 128 00:05:58,909 --> 00:06:00,700 Non in realtà solo un integer generale che si desidera. 129 00:06:00,700 --> 00:06:04,340 Probabilmente non si vuole valori negativi, solo perché, ci si sente proprio strano. 130 00:06:04,340 --> 00:06:06,070 Probabilmente si desidera numeri interi positivi. 131 00:06:06,070 --> 00:06:07,920 Così si può anche esprimere che in un database, 132 00:06:07,920 --> 00:06:09,450 ma per ora, diremo intero. 133 00:06:09,450 --> 00:06:10,650 >> E-mail? 134 00:06:10,650 --> 00:06:13,550 Questo è probabilmente solo-- una cosa? 135 00:06:13,550 --> 00:06:14,460 >> PUBBLICO: [INAUDIBLE] 136 00:06:14,460 --> 00:06:16,980 >> DAVID MALAN: Si tratta di una e-mail, ma questo è caratteri, giusto? 137 00:06:16,980 --> 00:06:19,813 Ha solo un carattere funky come un simbolo "a" o qualcosa d'altro, 138 00:06:19,813 --> 00:06:21,580 ma è ancora un campo di caratteri. 139 00:06:21,580 --> 00:06:23,900 E indirizzo postale? 140 00:06:23,900 --> 00:06:25,360 campo di caratteri. 141 00:06:25,360 --> 00:06:31,400 Ecco, questo è un bel inizio, ma cerchiamo di essere un po 'più precisa ora. 142 00:06:31,400 --> 00:06:34,540 >> Così si scopre che in un database, è spesso 143 00:06:34,540 --> 00:06:39,120 avere una scelta su più raffinata versioni di queste cose. 144 00:06:39,120 --> 00:06:44,330 Infatti, in un database tipico SQL, SQL, o, più in generale, di database relazionali, 145 00:06:44,330 --> 00:06:46,680 banche dati con file e colonne, è spesso 146 00:06:46,680 --> 00:06:53,610 arrivare a specificare non solo il tipo di field-- permettetemi di fare un po 'di qui-- camera 147 00:06:53,610 --> 00:06:56,600 ma anche la lunghezza. 148 00:06:56,600 --> 00:06:59,900 >> Quindi, per quanto tempo è un nome? 149 00:06:59,900 --> 00:07:07,060 Credo che, D-A-V-I-D. OK, ho capito probabilmente solo offeso come la metà 150 00:07:07,060 --> 00:07:11,260 delle persone nella stanza, a destra, Dal momento che i nomi sono più di cinque 151 00:07:11,260 --> 00:07:16,608 lettere, quindi cinque sembra un po 'egoista e ingenuo, così che cosa è un valore migliore? 152 00:07:16,608 --> 00:07:19,320 153 00:07:19,320 --> 00:07:24,330 10, va bene, e penso siamo OK nella stanza. 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 Perché non prendo il approccio di prima, quando abbiamo 157 00:07:29,540 --> 00:07:31,081 stavano parlando di array e la memoria? 158 00:07:31,081 --> 00:07:32,450 Perché non dico solo come 1000? 159 00:07:32,450 --> 00:07:35,260 Nessuno è nome sta andando per essere più lungo di 1.000. 160 00:07:35,260 --> 00:07:36,706 Respingere. 161 00:07:36,706 --> 00:07:38,005 >> PUBBLICO: [INAUDIBLE] 162 00:07:38,005 --> 00:07:40,130 DAVID MALAN: Sì, è uno spreco, a destra, in particolare 163 00:07:40,130 --> 00:07:44,630 se la maggior parte dei nomi sono solo cinque o 10 o 15 caratteri, che è molto dispendioso. 164 00:07:44,630 --> 00:07:45,810 Allora sai cosa? 165 00:07:45,810 --> 00:07:48,020 Questa è una specie di una domanda difficile. 166 00:07:48,020 --> 00:07:51,721 Ora, possiamo certamente analizzare inglese e nomi di qualsiasi altra lingua 167 00:07:51,721 --> 00:07:54,470 e capire, così, qual è il media average-- realtà non 168 00:07:54,470 --> 00:07:57,150 aiutare noi-- qual è il max è probabilmente ciò che vogliamo davvero. 169 00:07:57,150 --> 00:07:59,920 Ma si scopre abbiamo anche qualche scelta sul tipo qui. 170 00:07:59,920 --> 00:08:03,400 >> In un database tipico SQL, è hanno qualcosa chiamato un campo char 171 00:08:03,400 --> 00:08:07,505 e anche un varchar, V-A-R, per il campo char variabile. 172 00:08:07,505 --> 00:08:08,630 E la differenza è questa. 173 00:08:08,630 --> 00:08:12,400 Un campo char, è il progettista, necessario specificare in anticipo 174 00:08:12,400 --> 00:08:14,900 la lunghezza esatta del campo. 175 00:08:14,900 --> 00:08:20,530 Così forse il primo nome come 20 sente tipo di sicurezza. 176 00:08:20,530 --> 00:08:23,950 Potrebbe essere necessario fare un po 'googling per vedere se questo è abbastanza effettivamente sicuri. 177 00:08:23,950 --> 00:08:26,910 C'è probabilmente un nome con 21 personaggi, ma per ora, supponiamo 20 178 00:08:26,910 --> 00:08:27,620 è salvo. 179 00:08:27,620 --> 00:08:30,070 >> Un campo char implicherebbe in un database che si 180 00:08:30,070 --> 00:08:33,289 utilizza 20 e sempre 20 caratteri. 181 00:08:33,289 --> 00:08:37,419 Ora, se è solo D-A-V-I-D, 15 di quelli sono solo andando a essere caratteri vuoti, 182 00:08:37,419 --> 00:08:40,450 ma si sta ancora utilizzando tutti i 20 byte. 183 00:08:40,450 --> 00:08:46,302 Un campo varchar, invece, si intende la stringa dovrebbe essere fino a 20 caratteri 184 00:08:46,302 --> 00:08:48,260 ma se è solo cinque, si sta solo andando a utilizzare 185 00:08:48,260 --> 00:08:51,270 cinque, o forse sei per un valore speciale alla fine, 186 00:08:51,270 --> 00:08:54,980 come quello 0 che abbiamo discusso significa la fine di un carattere 187 00:08:54,980 --> 00:08:56,790 sequenza in memoria. 188 00:08:56,790 --> 00:08:59,950 >> Quindi, quando pensi si potrebbe scegliere char 189 00:08:59,950 --> 00:09:05,240 vs varchar, visto che trade-off? 190 00:09:05,240 --> 00:09:09,321 Char utilizza quel numero di caratteri, varchar utilizza non più di quel numero di caratteri. 191 00:09:09,321 --> 00:09:10,196 PUBBLICO: [INAUDIBLE] 192 00:09:10,196 --> 00:09:13,859 193 00:09:13,859 --> 00:09:16,900 DAVID MALAN: OK, quando si conosce la lunghezza della stringa piuttosto interessante 194 00:09:16,900 --> 00:09:19,316 usare solo char, perche 'se tu lo sai, appena messo giù. 195 00:09:19,316 --> 00:09:23,390 E forse questo è vero per una zip codice, negli Stati Uniti, almeno, 02138, 196 00:09:23,390 --> 00:09:26,660 sta andando sempre essere di cinque caratteri finché non si aggiunge il trattino quattro. 197 00:09:26,660 --> 00:09:29,750 Ma si potrebbe avere alcuni valori per cui si conosce sempre la lunghezza. 198 00:09:29,750 --> 00:09:32,310 O forse simboli dello Stato, come NY per New York, 199 00:09:32,310 --> 00:09:33,811 e MA per Massachusetts negli Stati Uniti. 200 00:09:33,811 --> 00:09:36,560 Forse si ha alcune situazioni dove questo è assolutamente ragionevole, 201 00:09:36,560 --> 00:09:39,520 ma da questa logica, perché sono Abbiamo anche overthinking questo? 202 00:09:39,520 --> 00:09:41,800 Perché non usiamo varchar e quindi dobbiamo solo 203 00:09:41,800 --> 00:09:46,730 usare sempre due personaggi in ogni caso, o usare sempre cinque personaggi in ogni caso? 204 00:09:46,730 --> 00:09:50,300 Perché non è sufficiente salvare varchar per tutto, con tale logica? 205 00:09:50,300 --> 00:09:51,677 Ci deve essere una cattura. 206 00:09:51,677 --> 00:09:52,552 PUBBLICO: [INAUDIBLE] 207 00:09:52,552 --> 00:09:54,952 208 00:09:54,952 --> 00:09:56,660 DAVID MALAN: Could scrivere qualcosa di sbagliato. 209 00:09:56,660 --> 00:09:58,090 Quindi, questo è vero. 210 00:09:58,090 --> 00:10:01,030 Ma anche allora, non possono usare più memoria di quanto allocare. 211 00:10:01,030 --> 00:10:03,340 Ho ancora la finale dire su tutta la lunghezza, 212 00:10:03,340 --> 00:10:06,780 quindi non possono accidentalmente fare questo errore, ma un buon pensiero. 213 00:10:06,780 --> 00:10:10,510 E 'più sottile, ma è molto correlato alla nostra discussione, in realtà, di array 214 00:10:10,510 --> 00:10:12,390 e le liste collegate in precedenza. 215 00:10:12,390 --> 00:10:16,290 >> Risulta che un database, se sa che tutti i valori sono 216 00:10:16,290 --> 00:10:19,250 di lunghezza fissa, anche se alcuni di questi valori sono vuoti, 217 00:10:19,250 --> 00:10:22,484 sorta di esteticamente vuoto, D-A-V-I-D e poi 15 spazi, 218 00:10:22,484 --> 00:10:24,650 si scopre che se ogni campo è la stessa lunghezza, 219 00:10:24,650 --> 00:10:28,670 molto simile a una serie aveva tutta la sua roba back to back to back to back in modo che 220 00:10:28,670 --> 00:10:33,480 si può solo più 1 per arrivare al prossimo valore, stessa idea in una tabella di database. 221 00:10:33,480 --> 00:10:37,550 Se tutti del vostro personaggio stringhe sono la stessa lunghezza, 222 00:10:37,550 --> 00:10:39,390 si dispone di ciò che è chiamato ad accesso casuale. 223 00:10:39,390 --> 00:10:41,850 Se tutte le stringhe sono di lunghezza 20, non basta 224 00:10:41,850 --> 00:10:45,230 fare più 1 basta fare più 20, più 20, più 20, più 20, 225 00:10:45,230 --> 00:10:48,775 e si può molto rapidamente scorrere o la ricerca in tutti i tuoi dati. 226 00:10:48,775 --> 00:10:54,420 >> Un campo char variabile, al contrario, non sempre avere 20 caratteri. 227 00:10:54,420 --> 00:10:58,000 Si può avere 20 e poi 15 e poi 19 e poi 10, 228 00:10:58,000 --> 00:11:00,720 e quindi se si desidera effettuare la ricerca attraverso di essa, non si può ciecamente 229 00:11:00,720 --> 00:11:03,050 aggiungere 20 byte per arrivare a quello successivo. 230 00:11:03,050 --> 00:11:07,280 È letteralmente necessario per la ricerca in perché il bordo della struttura di dati, 231 00:11:07,280 --> 00:11:08,340 se si vuole, è irregolare. 232 00:11:08,340 --> 00:11:11,480 E 'sorta di va dentro e fuori sede sulla lunghezza effettiva della stringa. 233 00:11:11,480 --> 00:11:14,460 Così, quando si conosce la lunghezza, come Kareem dice, utilizzare un campo char, 234 00:11:14,460 --> 00:11:16,460 perché si guadagna che efficienza di essere 235 00:11:16,460 --> 00:11:19,170 in grado di cercare attraverso di essa più veloce quando siete alla ricerca di dati, 236 00:11:19,170 --> 00:11:20,550 altrimenti utilizzare una variabile. 237 00:11:20,550 --> 00:11:24,450 >> Purtroppo, non ho buona risposta per quanto tempo il nome dovrebbe essere, 238 00:11:24,450 --> 00:11:26,360 ma per qualcosa di simile un nome, direi 239 00:11:26,360 --> 00:11:28,470 un varchar è comune perché non sta andando 240 00:11:28,470 --> 00:11:30,430 per essere una lunghezza fissa per tutti. 241 00:11:30,430 --> 00:11:33,650 20, non lo so, 20 si sente un po 'stretto. 242 00:11:33,650 --> 00:11:36,460 Diciamo 50, 50. 243 00:11:36,460 --> 00:11:39,210 Essa in realtà non ti costa che molto altro da dire 50 invece di 40, 244 00:11:39,210 --> 00:11:41,260 ma ad un certo punto, è necessario per effettuare una chiamata in giudizio. 245 00:11:41,260 --> 00:11:43,090 >> Molto comune, francamente, per [? storico?] 246 00:11:43,090 --> 00:11:47,670 ragioni, anche se è eccessiva, vale a dire 255, perché qualche tempo fa, 247 00:11:47,670 --> 00:11:51,440 in sistemi di database popolari, come MySQL, uno strumento open source gratuito 248 00:11:51,440 --> 00:11:53,790 che un sacco di aziende come anche Facebook utilizzato, 249 00:11:53,790 --> 00:11:56,654 questo era il massimo predefinito così la gente appena andato con esso. 250 00:11:56,654 --> 00:11:59,070 Quindi non irragionevole, ma ti utilizzare un po 'più intuizione 251 00:11:59,070 --> 00:12:02,970 e dire, certo 50, che è Probabilmente un po 'eccessivo. 252 00:12:02,970 --> 00:12:05,720 >> Sesso, mi piace enum, e così possiamo quindi 253 00:12:05,720 --> 00:12:08,760 enumerare maschio o femmina, o forse in modo più efficiente, 254 00:12:08,760 --> 00:12:13,420 m o f o qualche altra simbologia, ma enum si sente come una buona scelta lì. 255 00:12:13,420 --> 00:12:16,740 Per essere chiari, il sesso potrebbe essere solo un varchar, 256 00:12:16,740 --> 00:12:19,090 E potremmo solo tutto d'accordo più persone simpatiche, 257 00:12:19,090 --> 00:12:21,010 di mettere sempre gli stessi valori lì. 258 00:12:21,010 --> 00:12:22,720 Maschio o femmina o roba del genere. 259 00:12:22,720 --> 00:12:27,800 >> Ma il problema, allora, è che abbiamo potuto fare un errore, come [INCOMPRENSIBILE] proposto 260 00:12:27,800 --> 00:12:29,140 in precedenza in un contesto diverso. 261 00:12:29,140 --> 00:12:32,780 Se facciamo un errore, potremmo ottenere valori non corretti nel nostro database. 262 00:12:32,780 --> 00:12:36,320 Quindi cosa c'è di bello sui database come Oracle e MySQL e altri, 263 00:12:36,320 --> 00:12:39,280 è che avete questo ultimo strato di difesa in cui 264 00:12:39,280 --> 00:12:43,010 l'amministratore DBA, database, chi sta progettando questa tabella come noi 265 00:12:43,010 --> 00:12:46,440 sono verbalmente, potrebbe mettere al suo posto un enum che 266 00:12:46,440 --> 00:12:51,250 protegge contro ciò specificando maschio, femmina, e quindi nessuno 267 00:12:51,250 --> 00:12:54,230 altrimenti nessun programmatore può accidentalmente inserire alcun altro valore. 268 00:12:54,230 --> 00:12:55,480 Quindi questa sarebbe una buona cosa. 269 00:12:55,480 --> 00:12:56,660 Questa è una caratteristica. 270 00:12:56,660 --> 00:13:00,760 >> Così un ID, assumendo un ID numerico, probabilmente dovrebbe essere un numero intero positivo. 271 00:13:00,760 --> 00:13:04,380 E a volte ci hanno opportunità di discutere di lunghezza. 272 00:13:04,380 --> 00:13:06,830 Non sarebbe in genere specificare un numero qui, 273 00:13:06,830 --> 00:13:11,310 si dovrebbe invece specificare questo è un int o un grande int, 274 00:13:11,310 --> 00:13:12,980 come sono in genere chiamati. 275 00:13:12,980 --> 00:13:18,840 Ma tipicamente, un numero intero sarebbe, diciamo, 4 byte. 276 00:13:18,840 --> 00:13:23,694 E se si tratta di 4 byte, è così che molti bit? 277 00:13:23,694 --> 00:13:24,630 >> PUBBLICO: [INAUDIBLE] 278 00:13:24,630 --> 00:13:26,610 >> DAVID MALAN: 32 bit. 279 00:13:26,610 --> 00:13:30,270 Quindi, il numero di utenti possiamo avere in nostro database se tutti hanno un ID 280 00:13:30,270 --> 00:13:33,320 e questo ID deve essere univoco? 281 00:13:33,320 --> 00:13:36,780 32 bit mezzi che hanno modelli uno, due, tre, quattro, five-- 282 00:13:36,780 --> 00:13:41,000 così come molti diversi modelli di zeri e quelli si può avere se ci sono 32? 283 00:13:41,000 --> 00:13:43,235 Questa è la stessa cosa chiedendo che cosa è due a 32? 284 00:13:43,235 --> 00:13:46,472 285 00:13:46,472 --> 00:13:48,430 E 'un grande numero che Non riesco a ottenere il diritto, 286 00:13:48,430 --> 00:13:50,270 ma so che è circa 4 miliardi di dollari. 287 00:13:50,270 --> 00:13:53,970 Quindi questo significa che la vostra tabella di database può hanno quattro miliardi di utenti e il gioco è fatto. 288 00:13:53,970 --> 00:13:56,410 >> Quindi questo è un interessante disegno implicazione. 289 00:13:56,410 --> 00:14:00,840 Un discreto numero di aziende hanno deciso, forse non tanto 290 00:14:00,840 --> 00:14:04,860 per la loro tabella di utenti, perché avere 4 miliardi di utenti è un problema raro. 291 00:14:04,860 --> 00:14:08,410 Questa è una sorta di stile Facebook problema, non è un tipico problema di società. 292 00:14:08,410 --> 00:14:12,670 Ma forse se si dispone di registri delle transazioni o qualche tipo di dati che costantemente 293 00:14:12,670 --> 00:14:15,610 viene scritto nel database che assolutamente potrebbe avere miliardi 294 00:14:15,610 --> 00:14:18,900 e miliardi di righe, e si utilizza un numero intero per esso, 295 00:14:18,900 --> 00:14:22,750 Che cosa sta per accadere al più presto si arriva a riga numero 4 miliardi 296 00:14:22,750 --> 00:14:26,210 e quindi si tenta di inserire il 4000000000o e 1, per così dire? 297 00:14:26,210 --> 00:14:29,610 Sto semplificando i numeri un po '. 298 00:14:29,610 --> 00:14:33,740 >> È possibile tagliare, è voglio dire dover gestire in qualche modo. 299 00:14:33,740 --> 00:14:37,910 E ciò che un computer avrebbe tipicamente fare, pensarci anche da questa mattina, 300 00:14:37,910 --> 00:14:42,430 se si dispone di un valore di 4 bit come 1, 1, 1, 1, che, 301 00:14:42,430 --> 00:14:44,920 solo per legare la mattina insieme al pomeriggio, cosa 302 00:14:44,920 --> 00:14:48,369 fa questo numero rappresenta in binario? 303 00:14:48,369 --> 00:14:49,410 OK, ce la faremo più facile. 304 00:14:49,410 --> 00:14:53,310 Che cosa significa questo numero rappresentare in binario? 305 00:14:53,310 --> 00:14:56,794 OK, ce la faremo più facile, cosa questo rappresenta in binario? 306 00:14:56,794 --> 00:14:57,460 PUBBLICO: Tre. 307 00:14:57,460 --> 00:14:59,670 DAVID MALAN: tre, perché abbiamo quelli column-- 308 00:14:59,670 --> 00:15:00,450 [RISATA] 309 00:15:00,450 --> 00:15:01,350 Accidenti! 310 00:15:01,350 --> 00:15:03,980 Abbiamo avuto la colonna quelli e la colonna due. 311 00:15:03,980 --> 00:15:07,250 Quindi supporre che, in effetti, la nostra [? infield?] non erano 32 bit, 312 00:15:07,250 --> 00:15:13,440 ma erano due bit, possiamo contare a partire dal numero 0, 1, 2, 3 utente, 313 00:15:13,440 --> 00:15:18,040 e poi siamo tipo di torna all'utente 00 di nuovo. 314 00:15:18,040 --> 00:15:19,739 Quindi questo è ciò che accade di solito. 315 00:15:19,739 --> 00:15:22,780 Se hai mai sentito il expression-- probabilmente no, ma se si have-- 316 00:15:22,780 --> 00:15:26,500 integer overflow, dove si tenere lanciando tutti i bit 317 00:15:26,500 --> 00:15:29,640 essere i più grandi valori possibili, e poi sei fuori di bit, 318 00:15:29,640 --> 00:15:30,850 cosa sarebbe accaduto di solito? 319 00:15:30,850 --> 00:15:32,280 Perché dico 00? 320 00:15:32,280 --> 00:15:33,220 Ebbene, questo è tre. 321 00:15:33,220 --> 00:15:34,230 Come faccio rappresento 4? 322 00:15:34,230 --> 00:15:36,890 323 00:15:36,890 --> 00:15:38,915 Come faccio a rappresento la per il numero 4 in binario? 324 00:15:38,915 --> 00:15:39,790 PUBBLICO: [INAUDIBLE] 325 00:15:39,790 --> 00:15:41,780 DAVID MALAN: tra-- sì, non dire 100 di per sé, 326 00:15:41,780 --> 00:15:44,190 perché ha il torto connotazione, ma 1-0-0. 327 00:15:44,190 --> 00:15:48,920 In modo che il numero 1-0-0 è davvero corretta, ma se hai solo due bit, 328 00:15:48,920 --> 00:15:50,820 che cosa hai fatto veramente? 329 00:15:50,820 --> 00:15:53,219 Hai estesa alla 00. 330 00:15:53,219 --> 00:15:54,760 E in effetti, questo è ciò che sarebbe accaduto. 331 00:15:54,760 --> 00:15:56,884 In realtà, si può pensare su questo più familiarmente. 332 00:15:56,884 --> 00:15:59,350 Se vi ricordate, che cosa, 16 anni fa, il mondo 333 00:15:59,350 --> 00:16:03,380 doveva finire quando il problema Y2K è accaduto. 334 00:16:03,380 --> 00:16:04,330 Perché? 335 00:16:04,330 --> 00:16:08,170 Bene la maggior parte dei computer, per decisioni ragionevoli, 336 00:16:08,170 --> 00:16:15,320 sono stati la memorizzazione dei numeri, come il 1975 o l'anno 1999 337 00:16:15,320 --> 00:16:19,010 da solo utilizzando due cifre nella memoria del computer. 338 00:16:19,010 --> 00:16:21,950 Così, naturalmente, ciò che accade quando si arriva al 2000, 339 00:16:21,950 --> 00:16:25,790 andate a questo, o meglio, sì. 340 00:16:25,790 --> 00:16:30,120 Così si va al 2000, ma se si sta utilizzando solo due cifre Sembra 341 00:16:30,120 --> 00:16:32,660 come l'anno 00 e così hai laminati sopra. 342 00:16:32,660 --> 00:16:36,820 E questo è il motivo per cui un sacco di sistemi necessario per essere aggiornato al momento. 343 00:16:36,820 --> 00:16:42,500 >> Quindi, con quello detto, le aziende come Facebook correre contro questo. 344 00:16:42,500 --> 00:16:46,147 Quindi l'unico modo per gestire la situazione, francamente, è quello di anticipare esso. 345 00:16:46,147 --> 00:16:47,980 O il modo più pulito per gestire questa situazione 346 00:16:47,980 --> 00:16:50,330 è quello di anticipare in modo da non lo fai dover apportare modifiche in seguito. 347 00:16:50,330 --> 00:16:51,970 Così, invece di 8 byte, sai una cosa? 348 00:16:51,970 --> 00:16:54,261 Ho intenzione di essere lungimiranti Qui, anche se è 349 00:16:54,261 --> 00:16:56,760 un po 'ottimista sul fatto che stiamo andando ad avere 4 miliardi 350 00:16:56,760 --> 00:16:58,850 e 1 utenti sul nostro sito web. 351 00:16:58,850 --> 00:17:01,790 Ma facciamo solo usare 8 byte, o 64 bit, che sarà generalmente 352 00:17:01,790 --> 00:17:05,640 chiamato un grande numero intero, molto tecnico. 353 00:17:05,640 --> 00:17:10,280 E questo significa che solo si può avere ancora più cifre nel numero. 354 00:17:10,280 --> 00:17:12,599 Ma questo è un importante decisione di progettazione, 355 00:17:12,599 --> 00:17:16,400 perché se si sceglie un numero che ha troppo pochi bit di espressività 356 00:17:16,400 --> 00:17:19,089 si potrebbe effettivamente creare un bug nel software. 357 00:17:19,089 --> 00:17:21,750 >> Va bene, quindi cerchiamo di concludere con e-mail e indirizzo postale. 358 00:17:21,750 --> 00:17:26,369 Così e-mail, per quanto tempo dovrebbe un indirizzo email essere? 359 00:17:26,369 --> 00:17:26,869 50. 360 00:17:26,869 --> 00:17:29,220 Io davvero non ho idea, ma è Probabilmente qualcosa di simile, 361 00:17:29,220 --> 00:17:32,261 perché altrimenti nessuno sta andando a si scrive se diventa troppo lungo, quindi 50, 362 00:17:32,261 --> 00:17:33,360 andiamo con esso per ora. 363 00:17:33,360 --> 00:17:35,770 Indirizzo postale, per quanto tempo dovrebbe essere? 364 00:17:35,770 --> 00:17:38,325 365 00:17:38,325 --> 00:17:39,200 PUBBLICO: [INAUDIBLE] 366 00:17:39,200 --> 00:17:41,900 367 00:17:41,900 --> 00:17:43,890 >> DAVID MALAN: Non è solo un codice postale, però. 368 00:17:43,890 --> 00:17:45,720 Indirizzo postale, ho sentito. 369 00:17:45,720 --> 00:17:50,720 Quindi questo è come 1 Brattle Square, virgola, Cambridge Mass., virgola, 02138. 370 00:17:50,720 --> 00:17:53,860 E in effetti, vorrei solo tirare un po 'foglio di lavoro qui. 371 00:17:53,860 --> 00:17:56,510 Questo si sente come se fosse un'occasione persa. 372 00:17:56,510 --> 00:18:01,480 Se abbiamo 1 Brattle Square, virgola, Cambridge MA 02138, 373 00:18:01,480 --> 00:18:04,510 Mi sento come possiamo fare meglio di un semplice indirizzo postale. 374 00:18:04,510 --> 00:18:07,100 Perché non esplodere questo un po '? 375 00:18:07,100 --> 00:18:08,030 Cosa ottengo a? 376 00:18:08,030 --> 00:18:10,970 Cosa dovremmo invece avere per i nostri file qui, forse? 377 00:18:10,970 --> 00:18:12,260 >> PUBBLICO: [INAUDIBLE] 378 00:18:12,260 --> 00:18:17,579 >> DAVID MALAN: Sì, quindi cerchiamo di chiamare street_number, 379 00:18:17,579 --> 00:18:20,620 e una sottolineatura è solo un comune modo di avere quello che sembra uno spazio, 380 00:18:20,620 --> 00:18:22,360 ma non è, in realtà. 381 00:18:22,360 --> 00:18:26,240 Street, e poi city-- dispiace? 382 00:18:26,240 --> 00:18:28,440 >> PUBBLICO: [INAUDIBLE] 383 00:18:28,440 --> 00:18:29,690 DAVID MALAN: Potremmo farlo. 384 00:18:29,690 --> 00:18:30,702 Linea uno, linea due. 385 00:18:30,702 --> 00:18:32,410 Perché non terremo semplice per ora, 386 00:18:32,410 --> 00:18:34,840 ma questo è assolutamente una decisione accettabile. 387 00:18:34,840 --> 00:18:38,180 E poi stato, e poi lasciare di essere un po 'US-centric per il momento 388 00:18:38,180 --> 00:18:42,040 e basta fare il codice postale, proprio perché che sarà portare ad un errore interessante 389 00:18:42,040 --> 00:18:43,090 o un problema qui. 390 00:18:43,090 --> 00:18:44,655 Quindi supponiamo che è ora il nostro indirizzo. 391 00:18:44,655 --> 00:18:47,280 E 'un po' più fastidioso che abbiamo tutte queste più campi, 392 00:18:47,280 --> 00:18:49,200 ma ora siamo in grado di etichettare le cose un po 'meglio. 393 00:18:49,200 --> 00:18:53,210 >> Così ora il numero di strada probabilmente non dovrebbe essere un char, dovrebbe? 394 00:18:53,210 --> 00:18:54,835 Che cosa dovrebbe essere? 395 00:18:54,835 --> 00:18:55,710 PUBBLICO: [INAUDIBLE] 396 00:18:55,710 --> 00:18:57,835 DAVID MALAN: Forse, un numero come un intero nuovo? 397 00:18:57,835 --> 00:19:00,170 Un grande numero intero? 398 00:19:00,170 --> 00:19:02,170 Probabilmente non si vive a 4 miliardi di Main Street 399 00:19:02,170 --> 00:19:03,490 o qualcosa di pazzo come quello. 400 00:19:03,490 --> 00:19:06,850 Così intero è probabilmente bene, ma qualcuno ha 401 00:19:06,850 --> 00:19:13,880 mai vissuto in un indirizzo del tipo 1A Brattle Square, o 1 e 1/2? 402 00:19:13,880 --> 00:19:17,030 queste cose esistono, purtroppo, anche se non avete vissuto lì, 403 00:19:17,030 --> 00:19:21,240 ci sono queste anomalie come appartamento 1A, 1B, 1C. 404 00:19:21,240 --> 00:19:24,260 Così si sa che cosa, probabilmente non dovrebbe andare con numeri interi, 405 00:19:24,260 --> 00:19:27,440 altrimenti stiamo andando a perdere alcune vendite. 406 00:19:27,440 --> 00:19:29,920 >> campo Char, forse? 407 00:19:29,920 --> 00:19:30,870 Non so per quanto tempo. 408 00:19:30,870 --> 00:19:33,370 Non è destinata probabilmente ad essere che a lungo, in modo da 10 o qualcosa del genere. 409 00:19:33,370 --> 00:19:34,950 Nessuno ha intenzione di scrivere un numero più lungo, forse. 410 00:19:34,950 --> 00:19:37,070 Ma ancora una volta, dovremmo probabilmente dare più pensiero a questo. 411 00:19:37,070 --> 00:19:39,900 Forse google, fare qualche ricerca, ma andremo con le nostre viscere, per ora. 412 00:19:39,900 --> 00:19:44,565 Strade, char, 50, non so. 413 00:19:44,565 --> 00:19:46,940 Ad un certo punto, nessuno sta andando per scrivere su una busta, 414 00:19:46,940 --> 00:19:49,350 Anche, quindi c'è probabilmente alcuni limiti superiori là. 415 00:19:49,350 --> 00:19:54,200 Città, stesso, certo, così char 50. 416 00:19:54,200 --> 00:19:59,120 >> Stato, può essere US-centric per il momento. 417 00:19:59,120 --> 00:20:01,850 Quindi potrebbe essere una lista, così gentile di un giudizio, lo stato. 418 00:20:01,850 --> 00:20:04,000 Potrebbe essere come due caratteri. 419 00:20:04,000 --> 00:20:06,140 Quindi, in realtà, forse, io continuavo a dire char. 420 00:20:06,140 --> 00:20:09,420 Probabilmente dire varchar, solo per un po 'efficienza, 421 00:20:09,420 --> 00:20:12,240 ma torneremo a tale decisione in un attimo. 422 00:20:12,240 --> 00:20:16,150 Potrebbe essere un carattere di lunghezza 2 per lo stato. 423 00:20:16,150 --> 00:20:20,670 Se negli Stati Uniti che hanno, come MA, Massachusetts, NY, New York, New Jersey, New 424 00:20:20,670 --> 00:20:22,100 Jersey, e così via. 425 00:20:22,100 --> 00:20:23,630 Così potrebbe essere fissato a questo. 426 00:20:23,630 --> 00:20:25,900 DC per Washington DC. 427 00:20:25,900 --> 00:20:29,915 >> Ma credo che, Olivier, è proposto un altro approccio. 428 00:20:29,915 --> 00:20:30,790 PUBBLICO: [INAUDIBLE] 429 00:20:30,790 --> 00:20:33,670 DAVID MALAN: Sì, quindi è un po 'fastidioso per digitare, 430 00:20:33,670 --> 00:20:37,890 ma un enum potrebbe avere più senso, perché in questo modo, almeno negli Stati Uniti, 431 00:20:37,890 --> 00:20:41,320 si potrebbe enumerare, se noiosamente, ma lo si fa solo una volta nel database 432 00:20:41,320 --> 00:20:47,480 e mai più pensare a essa, tutti i 50 codici di due caratteri. 433 00:20:47,480 --> 00:20:48,660 Così mi piace enum. 434 00:20:48,660 --> 00:20:51,720 Cerchiamo di bastone con quello lì, perché E 'sorta di fa rispettare più rigore. 435 00:20:51,720 --> 00:20:53,620 E poi zip codice? 436 00:20:53,620 --> 00:20:55,306 Credo che Andrew ha avuto un pensiero su quel 437 00:20:55,306 --> 00:20:56,180 PUBBLICO: [INAUDIBLE] 438 00:20:56,180 --> 00:20:57,240 DAVID MALAN: Sì, cinque o nove. 439 00:20:57,240 --> 00:20:58,323 Diciamo solo mantenerlo semplice. 440 00:20:58,323 --> 00:20:59,380 Basta fare cinque per ora. 441 00:20:59,380 --> 00:21:03,070 Ma forse potrei solo fare un intero, giusto? 442 00:21:03,070 --> 00:21:08,750 Ho potuto, ma si sa che cosa, ho fatto questo errore una volta, in un certo senso. 443 00:21:08,750 --> 00:21:13,110 Anni fa, mi è stato la migrazione da Microsoft Outlook a Gmail, 444 00:21:13,110 --> 00:21:18,640 e Outlook ha un modo di esportare tutti i tuoi contatti come un file Excel, 445 00:21:18,640 --> 00:21:21,280 un file CSV, separati da virgole file di valori. 446 00:21:21,280 --> 00:21:23,950 E ho fatto l'errore, ho pensare, di doppio clic su di esso, 447 00:21:23,950 --> 00:21:27,380 una volta ho scaricato l'esportazione, per assicurarsi che sembrava come mi aspettavo. 448 00:21:27,380 --> 00:21:31,320 Devo aver colpito Salva o lasciare auto-save calcio o qualcosa. 449 00:21:31,320 --> 00:21:35,100 Perché quando ho poi importato in Gmail, tutto ha funzionato. 450 00:21:35,100 --> 00:21:39,910 Ma per anni, fino ad oggi, e Ho fatto questo cinque, 10 anni fa, 451 00:21:39,910 --> 00:21:44,380 Sto ancora trovare amici che hanno indirizzi simili a queste. 452 00:21:44,380 --> 00:21:45,700 Perché? 453 00:21:45,700 --> 00:21:47,900 >> PUBBLICO: [INAUDIBLE] 454 00:21:47,900 --> 00:21:50,650 >> DAVID MALAN: Ci sono voluti il 0, bene, piuttosto, 455 00:21:50,650 --> 00:21:53,810 ha preso l'intero codice di avviamento postale come un numero, e quindi è 456 00:21:53,810 --> 00:21:56,590 uno 0 che significa essa non ha alcun significato. 457 00:21:56,590 --> 00:21:59,470 E così 2138 sembra essere il mio codice di avviamento postale. 458 00:21:59,470 --> 00:22:07,100 E questo è, francamente, un fastidioso Excel caratteristica per cui Credo che per impostazione predefinita, 459 00:22:07,100 --> 00:22:10,980 anche se è destinata ad appena essere di testo, Microsoft Excel 460 00:22:10,980 --> 00:22:13,780 decide, mi permetta di essere utile, e oh, vedo solo numeri. 461 00:22:13,780 --> 00:22:15,290 Cerchiamo di trattare questi numeri. 462 00:22:15,290 --> 00:22:16,790 E tronca gli zeri iniziali. 463 00:22:16,790 --> 00:22:19,165 >> Giuro su Dio, ogni coppia di mesi ho trovato un indirizzo, 464 00:22:19,165 --> 00:22:22,300 e da una sorta di OCD, torno e aggiungere il 0, anche se non ho mai 465 00:22:22,300 --> 00:22:23,700 inviare lettere persone o cose. 466 00:22:23,700 --> 00:22:25,510 Ma sto ancora trovare i resti di questo. 467 00:22:25,510 --> 00:22:28,820 Quindi questo è per dire, questa è una buona idea? 468 00:22:28,820 --> 00:22:31,610 OK, no, perché nessuno in Massachusetts, in questa zona, 469 00:22:31,610 --> 00:22:33,270 sta per avere una o li conduce. 470 00:22:33,270 --> 00:22:38,070 Quindi cerchiamo di andare con il simile char, probabilmente, cinque. 471 00:22:38,070 --> 00:22:41,450 >> E qui, realizzare noi potrebbe utilizzare un enum e noi 472 00:22:41,450 --> 00:22:44,600 potrebbe enumerare 10.000 possibili codici di avviamento postale, 473 00:22:44,600 --> 00:22:48,530 ma che si sente come se fosse probabilmente percorrendo un tratto di, come, benefici. 474 00:22:48,530 --> 00:22:51,350 Se si dispone di input che tanto i dati nel tuo database di 475 00:22:51,350 --> 00:22:52,940 per la protezione contro qualcosa. 476 00:22:52,940 --> 00:22:57,400 Così char realizzato è possibile digitare in H-E-L-L-O il tuo codice ZIP, 477 00:22:57,400 --> 00:22:59,180 che non è, ovviamente, numerico. 478 00:22:59,180 --> 00:23:01,680 Quindi non c'è modo, in un database tipico, 479 00:23:01,680 --> 00:23:05,561 specificare solo numerico e solo cinque caratteri, 480 00:23:05,561 --> 00:23:07,310 così stiamo andando ad avere farlo in codice. 481 00:23:07,310 --> 00:23:11,100 Stiamo andando a farlo in PHP o Java o qualunque linguaggio siamo 482 00:23:11,100 --> 00:23:14,230 utilizzando il server per far rispettare quel tipo di vincolo. 483 00:23:14,230 --> 00:23:14,860 >> Whoo! 484 00:23:14,860 --> 00:23:18,322 Va bene, quindi tutte le domande appena ancora? 485 00:23:18,322 --> 00:23:19,780 Facciamo un'altra decisione di progettazione. 486 00:23:19,780 --> 00:23:22,500 Si scopre che si anche arrivare a scegliere, 487 00:23:22,500 --> 00:23:26,600 quando si progetta un database SQL, o database-- relazionali tipici dove 488 00:23:26,600 --> 00:23:28,790 ancora una volta, solo relazionale mezzi righe e colonne, 489 00:23:28,790 --> 00:23:35,500 è così che si organizzano i data-- e rendersi conto che ciò significa, 490 00:23:35,500 --> 00:23:37,740 Sono stato fuorviante in che, io sono drawing-- questo 491 00:23:37,740 --> 00:23:40,190 è ciò che è chiamato lo schema una tabella di database. 492 00:23:40,190 --> 00:23:42,810 Questo è come la specifiche per il table-- 493 00:23:42,810 --> 00:23:48,040 ma quando arriva il momento effettivamente memorizzare i dati, 494 00:23:48,040 --> 00:23:52,081 e noi faremo questo solo con l'esempio qui. 495 00:23:52,081 --> 00:23:55,080 Sto per aprire Excel, perché Excel mi darà righe e colonne. 496 00:23:55,080 --> 00:23:58,050 E questo è esattamente ciò che Oracle e MySQL e altri strumenti mi daranno. 497 00:23:58,050 --> 00:24:02,270 Così Sto solo andando a utilizzare per amor di discussione. 498 00:24:02,270 --> 00:24:05,250 Lasciami andare avanti e aprire un documento rappresentante qui, 499 00:24:05,250 --> 00:24:06,310 zoom in un po '. 500 00:24:06,310 --> 00:24:15,200 Così, per esempio, i nostri intestazioni sono ora nome, cognome, sesso, ID, 501 00:24:15,200 --> 00:24:20,980 e-mail, numero civico, via, urla. 502 00:24:20,980 --> 00:24:25,710 Via, città, stato, solo A proposito si adatta allo schermo. 503 00:24:25,710 --> 00:24:29,080 >> Così che cosa questo significa è che quando un primo utente si registra per il mio sito web, 504 00:24:29,080 --> 00:24:32,880 che sta per essere qualcosa di simile David, Malan, m, diciamo 1, 505 00:24:32,880 --> 00:24:42,910 malan@harvard.edu, numero civico sarà essere come 1 Brattle Square, Cambridge, MA, 506 00:24:42,910 --> 00:24:44,780 02138, e poi così via. 507 00:24:44,780 --> 00:24:48,290 Quindi, quando dico che un database relazionale o il database SQL è righe e colonne, 508 00:24:48,290 --> 00:24:49,350 Intendo questo. 509 00:24:49,350 --> 00:24:51,900 Che i dati effettivi vengono memorizzati in righe e colonne. 510 00:24:51,900 --> 00:24:53,950 Questa è solo una coincidenza, che stavamo parlando, 511 00:24:53,950 --> 00:24:56,033 e stavo solo disegnarla in righe e colonne. 512 00:24:56,033 --> 00:24:58,320 Questo è solo lo schema, la definizione generale. 513 00:24:58,320 --> 00:25:01,640 >> Quindi, di questi campi qui, o equivalentemente, lì, 514 00:25:01,640 --> 00:25:06,270 quali sono i campi che si pensa Sono probabilmente per cercare se sono un utente 515 00:25:06,270 --> 00:25:09,200 o se sono l'amministratore del database? 516 00:25:09,200 --> 00:25:12,426 Come, quali campi sono io in realtà andando a cercare? 517 00:25:12,426 --> 00:25:13,830 >> PUBBLICO: [INAUDIBLE] 518 00:25:13,830 --> 00:25:17,690 >> DAVID MALAN: Il nome, sì così Mi piace il fatto che-- sì, 519 00:25:17,690 --> 00:25:19,750 email potrebbe essere piuttosto comune. 520 00:25:19,750 --> 00:25:21,440 Siamo spiacenti, hai detto nome. 521 00:25:21,440 --> 00:25:24,030 Così maybe-- e ancora una volta, siamo tipo di parlare in astratto. 522 00:25:24,030 --> 00:25:25,988 Non so perché ci si essere alla ricerca di un nome, 523 00:25:25,988 --> 00:25:29,340 ma che si sente ragionevole se siete alla ricerca di un utente. 524 00:25:29,340 --> 00:25:31,170 Forse afferma, sicuro, ID. 525 00:25:31,170 --> 00:25:34,100 526 00:25:34,100 --> 00:25:36,160 >> Ed è un scivoloso pista, perché ho potuto 527 00:25:36,160 --> 00:25:38,890 escogitare uno scenario in cui forse il mio capo mi ha chiesto, 528 00:25:38,890 --> 00:25:40,417 Quanti uomini che abbiamo sul nostro sito? 529 00:25:40,417 --> 00:25:42,000 Quante donne dobbiamo sul nostro sito? 530 00:25:42,000 --> 00:25:45,210 E così a quel punto, si potrebbe desiderare per cercare campo genere, anche, 531 00:25:45,210 --> 00:25:45,940 e nient'altro. 532 00:25:45,940 --> 00:25:47,350 Quindi c'è un trade-off qui. 533 00:25:47,350 --> 00:25:49,180 Anche in questo caso, non c'è risposta giusta, ma ci 534 00:25:49,180 --> 00:25:53,760 è una caratteristica nella maggior parte dei database SQL conosciuto come l'indicizzazione, per cui 535 00:25:53,760 --> 00:25:56,100 si, il progettista, il amministratore del database, 536 00:25:56,100 --> 00:26:01,730 arrivare a decidere in anticipo quale i campi database dovrebbe ottimizzare 537 00:26:01,730 --> 00:26:02,980 per le ricerche su. 538 00:26:02,980 --> 00:26:07,620 >> Si potrebbe dire molto ingenuamente, ottimizzare questo, ottimizzare che, ottimizzare questo, 539 00:26:07,620 --> 00:26:10,300 ottimizzare questo e questo, e il database 540 00:26:10,300 --> 00:26:14,882 fare qualche cosa di magico sotto il cappuccio, e fare qualcosa in modo 541 00:26:14,882 --> 00:26:17,090 che la prossima volta si cerca su uno di questi campi, 542 00:26:17,090 --> 00:26:18,400 esso, infatti, essere più veloce. 543 00:26:18,400 --> 00:26:19,110 Questo è possibile. 544 00:26:19,110 --> 00:26:20,530 Non annullarsi. 545 00:26:20,530 --> 00:26:22,500 Ma ci deve essere un prezzo pagato. 546 00:26:22,500 --> 00:26:27,220 >> Se ingenuamente, o sopra-entusiasmo per esempio, l'indice di tutti questi campi, 547 00:26:27,220 --> 00:26:29,810 per così dire, renderli tutti in modo efficiente la ricerca, 548 00:26:29,810 --> 00:26:31,625 che prezzo stai probabilmente pagando? 549 00:26:31,625 --> 00:26:32,500 PUBBLICO: [INAUDIBLE] 550 00:26:32,500 --> 00:26:33,090 DAVID MALAN: Performance. 551 00:26:33,090 --> 00:26:33,798 Cosa intendi? 552 00:26:33,798 --> 00:26:37,380 Ebbene prestazioni, almeno nel contesto sto discutendo, è meglio ora. 553 00:26:37,380 --> 00:26:38,830 Questa è la definizione di indicizzazione. 554 00:26:38,830 --> 00:26:41,180 Si farà le ricerche più veloci. 555 00:26:41,180 --> 00:26:43,366 Così il tempo diminuisce, per così dire. 556 00:26:43,366 --> 00:26:44,240 PUBBLICO: [INAUDIBLE] 557 00:26:44,240 --> 00:26:45,031 DAVID MALAN: Spazio. 558 00:26:45,031 --> 00:26:46,520 Quindi, di nuovo, questi sono un commerciale comune. 559 00:26:46,520 --> 00:26:50,820 Posso velocizzare le ricerche, ma è andando a costare più byte di spazio. 560 00:26:50,820 --> 00:26:51,610 Perché? 561 00:26:51,610 --> 00:26:55,230 Beh, per impostazione predefinita, se abbiamo nessuna delle queste stelle rosse, nessuno di questi indici, 562 00:26:55,230 --> 00:26:58,797 come sto dicendo, come si fa a cercare per un nome in questo database? 563 00:26:58,797 --> 00:27:00,630 Quindi cerchiamo di disegnare il nostro attenzione a questo esempio. 564 00:27:00,630 --> 00:27:06,300 Se abbiamo David e Scully e Kareem e Arwa e altri in queste righe, 565 00:27:06,300 --> 00:27:06,910 per esempio. 566 00:27:06,910 --> 00:27:08,390 >> Quindi cerchiamo di fare esattamente questo. 567 00:27:08,390 --> 00:27:13,990 Scully è qui, e poi abbiamo Kareem, e Arwa, 568 00:27:13,990 --> 00:27:18,390 e tutti gli altri, se non hanno un indice definito, per così dire, 569 00:27:18,390 --> 00:27:20,160 il meglio che puoi fare è cercare lineare. 570 00:27:20,160 --> 00:27:23,470 Se si cerca Arwa, non siamo andando ad essere in grado di saltare a destra a lei 571 00:27:23,470 --> 00:27:24,140 velocemente. 572 00:27:24,140 --> 00:27:26,556 Stiamo per iniziare alto e andare fino in fondo, 573 00:27:26,556 --> 00:27:28,600 Non dissimile la nostra originale Mike Smith esempio. 574 00:27:28,600 --> 00:27:33,470 >> Se, però, dico, hey, database, Indice il primo campo nome, 575 00:27:33,470 --> 00:27:37,000 poi sta andando a fare qualcosa amatore e sostenere qualcosa 576 00:27:37,000 --> 00:27:38,130 come la ricerca binaria. 577 00:27:38,130 --> 00:27:39,820 Probabilmente non è la ricerca binaria per sé. 578 00:27:39,820 --> 00:27:42,810 Basi di dati tendono a utilizzare un altro struttura di dati denominata B-alberi, 579 00:27:42,810 --> 00:27:46,540 da non confondere con alberi binari, che solo renderlo più veloce per la ricerca 580 00:27:46,540 --> 00:27:48,500 qualcosa logaritmica in natura. 581 00:27:48,500 --> 00:27:53,510 Ma il prezzo da pagare per costruire quel caratteristica, che la struttura dei dati in memoria, 582 00:27:53,510 --> 00:27:54,570 è più byte. 583 00:27:54,570 --> 00:27:57,170 Così si potrebbe prendere qualche megabyte, alcuni gigabyte, chi lo sa? 584 00:27:57,170 --> 00:27:58,410 Esso dipende dai dati. 585 00:27:58,410 --> 00:28:02,640 >> Così ad un certo punto, si deve decidere, probabilmente non è un caso comune. 586 00:28:02,640 --> 00:28:06,000 Ma quali sono i comuni reale casi, se proprio dovessi scegliere, 587 00:28:06,000 --> 00:28:10,080 quali potrebbero tuoi campo preferito essere? 588 00:28:10,080 --> 00:28:10,580 E-mail. 589 00:28:10,580 --> 00:28:14,400 E mi piace email perché e-mail, in teoria, dovrebbe essere univoco. 590 00:28:14,400 --> 00:28:17,650 E così tipicamente, quando si sa in anticipo che uno dei vostri campi 591 00:28:17,650 --> 00:28:20,277 è o sarà unico, che tende ad essere un buon campo 592 00:28:20,277 --> 00:28:22,860 per cercare, perché in questo modo, quando si cerca qualcosa, 593 00:28:22,860 --> 00:28:26,194 si sta andando ad ottenere indietro una o azzerare le risposte e poi il gioco è fatto. 594 00:28:26,194 --> 00:28:28,110 Non è necessario tenere alla ricerca di altri ancora. 595 00:28:28,110 --> 00:28:31,992 >> E quindi in questo caso qui, e-mail, fino a quando non è possibile registrare due volte 596 00:28:31,992 --> 00:28:33,450 con la stessa email, è una buona. 597 00:28:33,450 --> 00:28:36,710 ID per definizione, in mondo informatica, 598 00:28:36,710 --> 00:28:39,610 se si sta parlando di un ID, che era meglio essere unico. 599 00:28:39,610 --> 00:28:42,970 Questo è una sorta di connotazione di identità o identificatore. 600 00:28:42,970 --> 00:28:46,440 E il resto di questi potrebbe essere, chiamiamoli così bello abbienti, 601 00:28:46,440 --> 00:28:47,860 ma non realmente necessari. 602 00:28:47,860 --> 00:28:49,976 >> E così in un database, si specifica indici, 603 00:28:49,976 --> 00:28:51,350 ma si può essere ancora più preciso. 604 00:28:51,350 --> 00:28:56,060 Si può dire, ehi, database, accertarsi che ogni ID in questa tabella è unica. 605 00:28:56,060 --> 00:28:59,330 Non anche lasciare un programmatore accidentalmente messo in una e-mail duplicato 606 00:28:59,330 --> 00:29:00,740 o duplicare il numero ID. 607 00:29:00,740 --> 00:29:03,140 Tanto come enumerazioni proteggerci Allo stesso modo, è 608 00:29:03,140 --> 00:29:04,881 può avere queste difese di livello inferiore. 609 00:29:04,881 --> 00:29:07,130 E così la progettazione di database, in un certo senso, è una specie di divertente, 610 00:29:07,130 --> 00:29:08,380 perché lo si fa sulla difensiva. 611 00:29:08,380 --> 00:29:11,460 È una sorta di supporre che si lavora con orribili, programmatori orribili 612 00:29:11,460 --> 00:29:15,550 e si vuole mettere in altrettante difese come è possibile per proteggere i dati, 613 00:29:15,550 --> 00:29:18,940 ma allo stesso tempo si vuole per aiutarli a svolgere meglio 614 00:29:18,940 --> 00:29:21,386 scegliendo quale i campi per ottimizzare per. 615 00:29:21,386 --> 00:29:24,260 Ma non si può necessariamente farlo in un vuoto come abbiamo tipo di qui. 616 00:29:24,260 --> 00:29:26,480 Hai avuto modo di sapere quali sono questi casi comuni sono. 617 00:29:26,480 --> 00:29:29,397 Se gli sviluppatori sono attuazione di una rubrica, 618 00:29:29,397 --> 00:29:32,230 si potrebbe benissimo vuole essere in grado per cercare quasi ogni campo, 619 00:29:32,230 --> 00:29:33,830 semplicemente natura dell'applicazione. 620 00:29:33,830 --> 00:29:37,910 Così forse si spende che lo spazio aggiuntivo. 621 00:29:37,910 --> 00:29:39,090 >> A destra, tutte le domande? 622 00:29:39,090 --> 00:29:41,820 623 00:29:41,820 --> 00:29:42,486 Sì. 624 00:29:42,486 --> 00:29:43,470 >> PUBBLICO: [INAUDIBLE] 625 00:29:43,470 --> 00:29:44,404 >> DAVID MALAN: No. 626 00:29:44,404 --> 00:29:45,279 >> PUBBLICO: [INAUDIBLE] 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 >> PUBBLICO: [INAUDIBLE] 630 00:29:49,701 --> 00:29:52,420 631 00:29:52,420 --> 00:29:54,850 >> DAVID MALAN: Oh, così abbiamo si parla in un modo 632 00:29:54,850 --> 00:29:57,940 ora che è completamente lingua agnostico. 633 00:29:57,940 --> 00:30:02,370 Quindi stiamo parlando ora circa database relazionali più in generale, 634 00:30:02,370 --> 00:30:04,760 o SQL database, più in generale. 635 00:30:04,760 --> 00:30:06,870 >> PUBBLICO: [INAUDIBLE] 636 00:30:06,870 --> 00:30:10,030 >> DAVID MALAN: una parola migliore da usare è, può essere utilizzato da qualsiasi linguaggio. 637 00:30:10,030 --> 00:30:15,280 Così posso scrivere codice JavaScript, C codice, C ++, il codice Java, codice Ruby, 638 00:30:15,280 --> 00:30:19,010 ognuno dei quali parlare con un base di dati ed eseguire query. 639 00:30:19,010 --> 00:30:22,310 In realtà, questo non è un male Segue a una query di esempio. 640 00:30:22,310 --> 00:30:25,720 E ancora, non abbiamo intenzione di andare in Java o C ++ o di quella più, 641 00:30:25,720 --> 00:30:29,420 ma in SQL, il linguaggio a cui tengo riferendosi, Structured Query Language, 642 00:30:29,420 --> 00:30:32,790 questo è un linguaggio di programmazione, ma è destinata ad essere utilizzata, senza 643 00:30:32,790 --> 00:30:37,330 sorpresa, strutturato query di interrogazione. 644 00:30:37,330 --> 00:30:38,660 >> Con questo voglio dire questo. 645 00:30:38,660 --> 00:30:41,190 Il modo in cui si selezionano i dati da un database MySQL 646 00:30:41,190 --> 00:30:49,330 è letteralmente digita nel programma qualcosa come select stelle da parte degli utenti. 647 00:30:49,330 --> 00:30:52,200 Io parto dal presupposto che questa tabella, ormai è chiamato utenti. 648 00:30:52,200 --> 00:30:54,860 Potrei chiamare tutto ciò che vogliamo, ma questo tipo di senso. 649 00:30:54,860 --> 00:30:57,240 E così Select è un molto verbo comune, se si 650 00:30:57,240 --> 00:30:59,290 sarà, in SQL, fa quel che letteralmente. 651 00:30:59,290 --> 00:31:02,730 Cosa ne pensi stelle significa in questo contesto? 652 00:31:02,730 --> 00:31:04,410 >> PUBBLICO: [INAUDIBLE] 653 00:31:04,410 --> 00:31:05,380 >> DAVID MALAN: mi dispiace? 654 00:31:05,380 --> 00:31:06,300 >> PUBBLICO: [INAUDIBLE] 655 00:31:06,300 --> 00:31:09,580 >> DAVID MALAN: Non necessario, è più inclusiva di quella, in realtà. 656 00:31:09,580 --> 00:31:11,700 E 'il carattere jolly. 657 00:31:11,700 --> 00:31:14,740 Stella quasi sempre significa qualcosa, quindi questo significa, in questo caso, 658 00:31:14,740 --> 00:31:16,510 seleziona tutto dal database. 659 00:31:16,510 --> 00:31:20,730 Così, quando dico questo, voglio dire dammi indietro ogni colonna 660 00:31:20,730 --> 00:31:22,440 dalla mia tabella denominata utenti. 661 00:31:22,440 --> 00:31:24,730 Quindi dammi un set di risultati, come si chiama. 662 00:31:24,730 --> 00:31:28,210 In altre parole, mi dia una copia del foglio di calcolo, è quello che voglio dire. 663 00:31:28,210 --> 00:31:34,890 >> Ma se ho detto selezionare stelle da parte degli utenti dove ID è uguale a 1, quanto grande dovrebbe 664 00:31:34,890 --> 00:31:36,640 il mio set di risultati sarà poi? 665 00:31:36,640 --> 00:31:41,680 O equivalentemente, quante righe dovrebbero I essere riconsegnato dal database? 666 00:31:41,680 --> 00:31:45,860 Probabilmente solo uno, se ho davvero trattati ID come un identificatore univoco, 667 00:31:45,860 --> 00:31:50,710 e se David ha che ID univoco, io dovrebbe tornare una e una sola fila 668 00:31:50,710 --> 00:31:53,220 contenente tutte le informazioni di David. 669 00:31:53,220 --> 00:31:56,390 Se ho detto questo, dove ID è uguale a 99, dovrei tornare, 670 00:31:56,390 --> 00:32:00,320 in questo contesto, zero righe, almeno al momento. 671 00:32:00,320 --> 00:32:03,620 >> Tuttavia, se non mi interessa davvero A proposito di tutte queste informazioni, 672 00:32:03,620 --> 00:32:06,970 Potrei solo dire, da dove viene David vive? 673 00:32:06,970 --> 00:32:10,860 Selezionare il codice di avviamento postale da gli utenti in cui ID è 1. 674 00:32:10,860 --> 00:32:15,820 Questo selezionerà solo a me zip di David codice e non la totalità di quella riga. 675 00:32:15,820 --> 00:32:19,541 Perché potrei fare questo invece di la query stella, la wild card? 676 00:32:19,541 --> 00:32:21,950 >> PUBBLICO: [INAUDIBLE] 677 00:32:21,950 --> 00:32:24,590 >> DAVID MALAN: Sì, potrei solo bisogno. 678 00:32:24,590 --> 00:32:26,350 Quindi, la prestazione è ancora una volta la risposta qui. 679 00:32:26,350 --> 00:32:28,540 Perché chiedere di più informazioni di cui avete bisogno, 680 00:32:28,540 --> 00:32:32,020 perché anche se è tutto a posto insieme, avete ancora copiare i dati, 681 00:32:32,020 --> 00:32:35,560 sembrerebbe, dal database nel vostro programma in qualche modo, 682 00:32:35,560 --> 00:32:38,490 e questo è solo stupido se si solo bisogno di cinque di queste cifre, 683 00:32:38,490 --> 00:32:40,340 Non l'interezza della riga. 684 00:32:40,340 --> 00:32:42,180 >> Allora, come faccio ad inserire un utente? 685 00:32:42,180 --> 00:32:44,780 Supponiamo che un utente deve solo registrato per la prima volta. 686 00:32:44,780 --> 00:32:46,560 La sintassi di solito simile a questa. 687 00:32:46,560 --> 00:32:52,700 Inserire in utenti, e allora diremmo valori, 688 00:32:52,700 --> 00:33:00,150 e poi diremmo valori come, diciamo, Lauren Scully, 689 00:33:00,150 --> 00:33:02,380 il nostro operatore video proprio qui. 690 00:33:02,380 --> 00:33:04,390 E il campo successivo è di genere. 691 00:33:04,390 --> 00:33:08,020 Così diremo quote, unquote "F", allora abbiamo un ID 692 00:33:08,020 --> 00:33:12,250 e ho intenzione di say-- facciamo finta che in realtà non è qui, 693 00:33:12,250 --> 00:33:14,380 quindi ci rewind nella storia. 694 00:33:14,380 --> 00:33:16,530 Quindi 2 sarà il suo ID. 695 00:33:16,530 --> 00:33:19,130 E poi il campo successivo Ecco la sua e-mail. 696 00:33:19,130 --> 00:33:22,140 Così sta andando essere come Lauren Scully e così via, 697 00:33:22,140 --> 00:33:24,360 e ci limiteremo a punto punto dot via da qui in poi. 698 00:33:24,360 --> 00:33:26,890 Ora sarà ottenere un po ' noioso, ma la query di inserimento 699 00:33:26,890 --> 00:33:28,310 finirebbe per assomigliare a quello. 700 00:33:28,310 --> 00:33:30,970 >> Se voglio sbarazzarsi di Scully, uh-oh, andiamo annullare la registrazione 701 00:33:30,970 --> 00:33:37,420 lei, cancella il suo account, eliminare da parte degli utenti in cui ID è uguale a 2, 702 00:33:37,420 --> 00:33:38,500 sbarazzarsi di Scully. 703 00:33:38,500 --> 00:33:48,050 O posso dire aggiornare gli utenti impostati, diciamo, che cosa potremmo cambiare? 704 00:33:48,050 --> 00:33:49,430 Supponiamo che si muove. 705 00:33:49,430 --> 00:33:53,730 Set zip uguale 021-- no, questo è il suo zip corrente. 706 00:33:53,730 --> 00:33:54,487 90210. 707 00:33:54,487 --> 00:33:56,320 L'unico altro codice postale So che in tutto il mondo. 708 00:33:56,320 --> 00:33:59,002 Quindi, che avrebbe cambiato la zip code-- in realtà, 709 00:33:59,002 --> 00:34:00,460 che non cambierebbe il suo codice postale. 710 00:34:00,460 --> 00:34:02,170 >> Quello che ho appena fatto? 711 00:34:02,170 --> 00:34:04,292 Anche se la sintassi è probabilmente nuova. 712 00:34:04,292 --> 00:34:05,302 >> PUBBLICO: [INAUDIBLE] 713 00:34:05,302 --> 00:34:08,010 DAVID MALAN: Sì, mi sono trasferito tutti a Beverly Hills, California. 714 00:34:08,010 --> 00:34:11,920 Quindi dovrei realtà dire dove ID è uguale a 2. 715 00:34:11,920 --> 00:34:12,820 E così via. 716 00:34:12,820 --> 00:34:15,290 Quindi SQL è tutto di questi tipi di istruzioni. 717 00:34:15,290 --> 00:34:20,260 Selezionare, inserire, cancellare, aggiornare, con questi predicati alla fine 718 00:34:20,260 --> 00:34:22,139 queste clausole in cui, per così dire. 719 00:34:22,139 --> 00:34:25,170 E c'è molto di più si può fare, ma è davvero solo riduce 720 00:34:25,170 --> 00:34:29,750 semplicemente, se arcanamente, esprimendo ciò che si vuole il database di fare. 721 00:34:29,750 --> 00:34:31,580 >> E quindi il database capirà, quando 722 00:34:31,580 --> 00:34:35,630 si inserisce Lauren Scully nella banca dati, dove mettere la sua memoria 723 00:34:35,630 --> 00:34:38,230 in modo che possiamo ottenere molto rapidamente la sua base sul suo indirizzo e-mail 724 00:34:38,230 --> 00:34:42,610 o basato su suo numero ID o simili. 725 00:34:42,610 --> 00:34:43,391 Sì, Dan. 726 00:34:43,391 --> 00:34:44,266 PUBBLICO: [INAUDIBLE] 727 00:34:44,266 --> 00:34:46,364 728 00:34:46,364 --> 00:34:47,780 DAVID MALAN: Davvero buona domanda. 729 00:34:47,780 --> 00:34:50,370 Saranno questi script cambiare da Microsoft Access per Oracle 730 00:34:50,370 --> 00:34:52,290 a MySQL a PostgreSQL? 731 00:34:52,290 --> 00:34:53,790 La risposta breve è che dipende. 732 00:34:53,790 --> 00:34:58,697 In teoria, vi è una molto significativo sottoinsieme comune di SQL 733 00:34:58,697 --> 00:35:00,780 che è condiviso tra tutti di queste implementazioni. 734 00:35:00,780 --> 00:35:03,340 Tuttavia, diversi produttori hanno caratteristiche aggiunte 735 00:35:03,340 --> 00:35:07,120 alle loro banche dati per fare certe cose oltre la portata di queste caratteristiche, 736 00:35:07,120 --> 00:35:08,720 che potrebbe, infatti, rompere. 737 00:35:08,720 --> 00:35:11,210 >> Così gli sviluppatori di modo copertura contro questo, 738 00:35:11,210 --> 00:35:14,350 è che piuttosto che scrivere grezzo codice SQL come sto scrivendo qui, 739 00:35:14,350 --> 00:35:19,460 che invece utilizzano una biblioteca, una libreria comune che si 740 00:35:19,460 --> 00:35:23,650 è una sorta di livello superiore e abstract via quale prodotto si sta utilizzando. 741 00:35:23,650 --> 00:35:25,710 E ti dà funzioni e procedure 742 00:35:25,710 --> 00:35:28,810 per chiamare in modo che non effettivamente scrivere SQL prime. 743 00:35:28,810 --> 00:35:32,609 >> In teoria, quindi, si può cambiare prodotti da Oracle a Microsoft 744 00:35:32,609 --> 00:35:34,650 o viceversa o niente altro, e letteralmente 745 00:35:34,650 --> 00:35:36,920 cambiare nulla circa il proprio codice. 746 00:35:36,920 --> 00:35:40,180 La realtà, però, è, a volte rinunciare a caratteristiche come un risultato. 747 00:35:40,180 --> 00:35:43,860 Si potrebbe avere scelto un prodotto perché è ottenuto queste caratteristiche a valore aggiunto, 748 00:35:43,860 --> 00:35:46,610 e sei solo ora non il loro utilizzo consapevole. 749 00:35:46,610 --> 00:35:51,630 >> E anecdotally, la maggior parte delle aziende tendono mai ad allontanarsi dal loro database. 750 00:35:51,630 --> 00:35:54,002 Così, mentre questo è un bello hanno funzione, la realtà 751 00:35:54,002 --> 00:35:55,960 è, se stai revisione il database, sei 752 00:35:55,960 --> 00:35:59,890 Probabilmente fare mazzi di altri cambiamenti in ogni caso, che non necessariamente 753 00:35:59,890 --> 00:36:01,360 necessità di anticipare questo. 754 00:36:01,360 --> 00:36:03,720 Quindi è senza dubbio over-engineering il problema, 755 00:36:03,720 --> 00:36:05,670 ma in realtà dipende dal contesto. 756 00:36:05,670 --> 00:36:09,960 Ma in teoria, SQL è condivisa tutti questi diversi prodotti. 757 00:36:09,960 --> 00:36:11,560 Davvero buone domande. 758 00:36:11,560 --> 00:36:12,272 Sì. 759 00:36:12,272 --> 00:36:13,147 >> PUBBLICO: [INAUDIBLE] 760 00:36:13,147 --> 00:36:17,820 761 00:36:17,820 --> 00:36:21,480 >> DAVID MALAN: Sì, così si può pensare di un database 762 00:36:21,480 --> 00:36:25,020 è solo un server, a fine il giorno, e all'interno di tale server 763 00:36:25,020 --> 00:36:28,670 è un insieme di tabelle, righe e colonne. 764 00:36:28,670 --> 00:36:33,410 E quando si invia una query come questa dal programma, il vostro sito web, 765 00:36:33,410 --> 00:36:39,340 scritto in Java, Ruby, Python, qualunque sia, il server riceve questo comando 766 00:36:39,340 --> 00:36:41,660 e interpretare in letteralmente stesso modo 767 00:36:41,660 --> 00:36:43,660 abbiamo discusso in precedenza con linguaggi interpretati, 768 00:36:43,660 --> 00:36:47,333 e quindi eseguire una certa azione sullo zero o più righe a zero o più tabelle. 769 00:36:47,333 --> 00:36:48,208 PUBBLICO: [INAUDIBLE] 770 00:36:48,208 --> 00:36:53,540 771 00:36:53,540 --> 00:36:55,070 >> DAVID MALAN: Esattamente, esattamente. 772 00:36:55,070 --> 00:36:58,450 Così il pseudocodice per qualcosa come che potrebbe essere questo. 773 00:36:58,450 --> 00:37:02,450 Nel file PHP o la vostra file di Python o il file Java, 774 00:37:02,450 --> 00:37:09,210 si dovrebbe avere il codice pseudocodice, o Scratch-come blocchi, se le visite degli utenti 775 00:37:09,210 --> 00:37:19,870 acme.com/register~~V per prima volta, quindi inserire in utenti e così via. 776 00:37:19,870 --> 00:37:22,619 E vorremmo tradurre questo per più codice concreto alla fine. 777 00:37:22,619 --> 00:37:24,660 Ma in realtà, abbiamo tutti i mattoni qui, 778 00:37:24,660 --> 00:37:27,680 Anche se siamo un po 'saltare delle fasi di attuazione. 779 00:37:27,680 --> 00:37:31,560 >> Quindi, mi permetta di trovare un difetto con quello che abbiamo meravigliosamente ha fatto proprio un attimo fa. 780 00:37:31,560 --> 00:37:36,470 È stato creato un bel tabella completa per gli utenti. 781 00:37:36,470 --> 00:37:38,920 Certo, potremmo implementare in alcuni modi diversi, 782 00:37:38,920 --> 00:37:43,030 ma si è in realtà ci ha portato giù il path-- e vi dico, 783 00:37:43,030 --> 00:37:48,080 ma è probabilmente il mio fault-- di un abbastanza implementazione del database inefficiente. 784 00:37:48,080 --> 00:37:49,950 Non è normalizzato. 785 00:37:49,950 --> 00:37:52,320 >> E per normalizzato intendo ci sarà, 786 00:37:52,320 --> 00:37:57,380 nel tempo, un esubero significativa, e quindi inefficienza, 787 00:37:57,380 --> 00:38:00,210 che è spreco di spazio. 788 00:38:00,210 --> 00:38:05,650 Sulla base di solo ciò che si vede qui, può immaginate dove questo spreco di spazio 789 00:38:05,650 --> 00:38:08,710 sta per venire da, nel corso del tempo, come registrano sempre più utenti 790 00:38:08,710 --> 00:38:10,860 per il tuo sito? 791 00:38:10,860 --> 00:38:13,047 Quali dati potrebbe diventare superfluo? 792 00:38:13,047 --> 00:38:19,084 793 00:38:19,084 --> 00:38:20,940 >> PUBBLICO: [INAUDIBLE] 794 00:38:20,940 --> 00:38:22,686 >> DAVID MALAN: Perché vuoi dire che? 795 00:38:22,686 --> 00:38:23,561 PUBBLICO: [INAUDIBLE] 796 00:38:23,561 --> 00:38:32,180 797 00:38:32,180 --> 00:38:32,930 DAVID MALAN: Sì. 798 00:38:32,930 --> 00:38:35,622 E supponiamo che per gli scopi di oggi che questo è vero. 799 00:38:35,622 --> 00:38:38,330 Risulta, e abbiamo imparato questo nel modo più duro, che non è vero. 800 00:38:38,330 --> 00:38:41,670 In qualche modo più città hanno, in qualche modo, lo stesso codice di avviamento postale, 801 00:38:41,670 --> 00:38:43,390 che rompe questa meravigliosa intuizione. 802 00:38:43,390 --> 00:38:46,180 Ma supponiamo che sia vero, perché è quasi sempre vero. 803 00:38:46,180 --> 00:38:51,390 Quindi supponiamo che un codice postale è sempre associata alla stessa città 804 00:38:51,390 --> 00:38:53,600 e stato, che è una specie di assunzione ragionevole, 805 00:38:53,600 --> 00:38:54,840 ma non corretto, si scopre. 806 00:38:54,840 --> 00:38:57,310 Ma un'ipotesi ragionevole per scopi di oggi. 807 00:38:57,310 --> 00:39:01,650 >> Poi immagino che io vivo a Cambridge, MA, secondo la tabella di questo utente, 808 00:39:01,650 --> 00:39:04,100 e supponiamo che Lauren Scully vive a Cambridge, MA, 809 00:39:04,100 --> 00:39:06,120 e supponiamo che Kareem vive a Cambridge, MA, 810 00:39:06,120 --> 00:39:10,400 e Arwa vive a Cambridge, MA, tutti noi in 02138. 811 00:39:10,400 --> 00:39:15,890 Perché stiamo ricordando Cambridge, MA, 02138 per tutti e quattro di noi? 812 00:39:15,890 --> 00:39:18,903 Ciò che dovrebbe essere sufficiente a ricordare? 813 00:39:18,903 --> 00:39:20,249 >> PUBBLICO: [INAUDIBLE] 814 00:39:20,249 --> 00:39:21,540 DAVID MALAN: solo il codice di avviamento postale. 815 00:39:21,540 --> 00:39:25,080 Solo che 02138 esiste, perché si sa che cosa potremmo fare? 816 00:39:25,080 --> 00:39:32,650 Potremmo avere un po 'di fantasia qui e qui, definire un altro tavolo 817 00:39:32,650 --> 00:39:35,850 dove questo sta andando essere il nome, questo sta per essere il tipo, 818 00:39:35,850 --> 00:39:38,840 questo sta per essere il di lunghezza, e d'ora in poi, io sono 819 00:39:38,840 --> 00:39:42,900 andando a chiamare questa mia città tavolo. 820 00:39:42,900 --> 00:39:47,011 Questo è stato chiamato, di Naturalmente, la mia tabella utenti. 821 00:39:47,011 --> 00:39:49,885 E così quello che dovrei mettere qui per mio tavolo le città, cosa ne pensi? 822 00:39:49,885 --> 00:39:53,605 823 00:39:53,605 --> 00:39:54,535 >> PUBBLICO: [INAUDIBLE] 824 00:39:54,535 --> 00:39:55,930 >> DAVID MALAN: Sì. 825 00:39:55,930 --> 00:40:01,440 Così zip e stato e la città. 826 00:40:01,440 --> 00:40:05,350 E così il tipo qui, diremo questo sta per essere un char 5 ancora una volta, 827 00:40:05,350 --> 00:40:06,750 oggetto di dibattito di prima. 828 00:40:06,750 --> 00:40:14,810 Questo sarà un enum, forse come prima, e la città sarà un varchar 50. 829 00:40:14,810 --> 00:40:17,960 E così ora cosa ottengo per cancellare da questa tabella 830 00:40:17,960 --> 00:40:21,995 per eliminare tale inefficienza? 831 00:40:21,995 --> 00:40:23,100 >> PUBBLICO: [INAUDIBLE] 832 00:40:23,100 --> 00:40:23,850 DAVID MALAN: Nizza. 833 00:40:23,850 --> 00:40:30,239 Stato e la città vanno via, così ho ora eliminato il potenziale inefficienza 834 00:40:30,239 --> 00:40:33,280 per ridondante ricordare, Cambridge, MA, Cambridge, MA, Cambridge, MA, 835 00:40:33,280 --> 00:40:35,712 Cambridge, MA, che, si spera non è mai cambierà. 836 00:40:35,712 --> 00:40:37,670 E anche se lo fa, è minorly fastidioso, ora 837 00:40:37,670 --> 00:40:39,750 che devo cambiare in più righe, 838 00:40:39,750 --> 00:40:43,770 mentre qui, ho potuto solo cambiarlo in un unico luogo. 839 00:40:43,770 --> 00:40:46,890 >> Ora che cosa è il trade-off, forse? 840 00:40:46,890 --> 00:40:48,020 Questo è stato super conveniente. 841 00:40:48,020 --> 00:40:50,730 Ha avuto tutti i miei dati piacevolmente insieme. 842 00:40:50,730 --> 00:40:53,644 Ma ciò che è chiaramente il caso ora? 843 00:40:53,644 --> 00:40:55,684 >> PUBBLICO: [INAUDIBLE] 844 00:40:55,684 --> 00:40:58,100 DAVID MALAN: Esattamente, e io sono contento che hai usato la parola si uniscono, 845 00:40:58,100 --> 00:41:01,320 perché questo è in realtà la parola chiave, nel mondo dei database relazionali 846 00:41:01,320 --> 00:41:05,270 in SQL, è una parola che reale possibile digitare o almeno trasmettere. 847 00:41:05,270 --> 00:41:09,280 E infatti, quello che ora abbiamo a che fare per selezionare informazioni complete di David è 848 00:41:09,280 --> 00:41:19,700 qualcosa di simile a selezionare star da gli utenti, si uniscono le città, e ora on-- 849 00:41:19,700 --> 00:41:24,010 Ho intenzione di passare solo per una seconda linea in modo che questo users.zip fits-- uguale 850 00:41:24,010 --> 00:41:34,570 cities.zip, dove users.ID è uguale a 1. 851 00:41:34,570 --> 00:41:35,550 >> Allora, cosa sta succedendo? 852 00:41:35,550 --> 00:41:38,970 È brutto guardare, ma è possibile tipo di lesse sinistra a destra, dall'alto verso il basso. 853 00:41:38,970 --> 00:41:41,030 Scegliere categoria da parte degli utenti è la stessa di prima, 854 00:41:41,030 --> 00:41:42,930 ma non è da utenti di per sé. 855 00:41:42,930 --> 00:41:45,910 E 'da parte degli utenti si uniscono città. 856 00:41:45,910 --> 00:41:48,520 Che cosa sono io che unisce tali due tabelle? 857 00:41:48,520 --> 00:41:51,820 Beh, a quanto pare, la tavoli utenti campo zip, 858 00:41:51,820 --> 00:41:54,810 e questo periodo è solo speciale sintassi per esprimere questa idea, 859 00:41:54,810 --> 00:41:58,130 e questa è la città tavoli campo zip. 860 00:41:58,130 --> 00:42:01,580 Voglio quei due ad essere uguali, ma voglio scegliere in ultima analisi, 861 00:42:01,580 --> 00:42:06,280 solo quelle righe in cui ID nella tabella utenti 862 00:42:06,280 --> 00:42:08,730 è uguale a 1, che è accaduto a essere mio. 863 00:42:08,730 --> 00:42:11,781 >> E tanto per essere chiari, un programmatore, in genere quando 864 00:42:11,781 --> 00:42:14,780 hardcode qualcosa come il numero 1, perché altrimenti solo per il sito 865 00:42:14,780 --> 00:42:17,630 sostiene David o la primo utente, 866 00:42:17,630 --> 00:42:20,720 sarebbe invece fare qualcosa come ID, dove 867 00:42:20,720 --> 00:42:22,510 questo rappresenta un variabili, cosa che 868 00:42:22,510 --> 00:42:26,210 può cambiare nel tempo, simile nello spirito di quello che ho detto in precedenza 869 00:42:26,210 --> 00:42:28,080 con questi tipi di segnaposto. 870 00:42:28,080 --> 00:42:30,396 Ma per ora ci limiteremo a hardcode come 1. 871 00:42:30,396 --> 00:42:31,520 E così che cosa significa? 872 00:42:31,520 --> 00:42:35,100 Beh, un bel modo per visualizzare questa è che se questa mano è la tabella utenti, 873 00:42:35,100 --> 00:42:38,090 e questa mano è le cerniere tavolo, siamo una sorta di finding-- 874 00:42:38,090 --> 00:42:41,330 e la punta delle dita sono zip qui, e la punta delle dita 875 00:42:41,330 --> 00:42:43,740 qui ci sono zip, sei tipo di incastro esso 876 00:42:43,740 --> 00:42:47,950 in modo da ottenere indietro la risultante tabella originale, da veramente unendo 877 00:42:47,950 --> 00:42:49,590 le due tabelle nel campo comune. 878 00:42:49,590 --> 00:42:50,840 E non deve essere zip. 879 00:42:50,840 --> 00:42:54,460 Potrebbe essere più altro, ma zip è bello, perché uno, è breve, 880 00:42:54,460 --> 00:42:56,470 due, è sempre il stessa lunghezza, quindi non c'è 881 00:42:56,470 --> 00:43:02,270 un reale efficacia di quanto Olivier qui proposto 882 00:43:02,270 --> 00:43:05,200 con factoring la zip, e [INAUDIBLE] proponendo che ci liberiamo 883 00:43:05,200 --> 00:43:07,110 di città e stati. 884 00:43:07,110 --> 00:43:11,370 >> Quindi questo è il processo noto come normalizzazione. 885 00:43:11,370 --> 00:43:14,171 Tutte le domande su questo? 886 00:43:14,171 --> 00:43:16,170 Ebbene vorrei sottolineare questo è il genere di cose, 887 00:43:16,170 --> 00:43:19,202 anche se è piuttosto basso livello, questa discussione, che si potrebbe pensare 888 00:43:19,202 --> 00:43:20,910 stai sorta di ottenere perso in le erbacce, 889 00:43:20,910 --> 00:43:26,690 questa è una manifestazione di ampia possibilità per gli sviluppatori di essere cattivo. 890 00:43:26,690 --> 00:43:29,600 Ed infatti, anche quando, in Corsi ho insegnato, quando abbiamo avuto, 891 00:43:29,600 --> 00:43:32,290 per esempio, inesperto programmatori di laurea 892 00:43:32,290 --> 00:43:35,920 costruire siti web, a prima vista, i siti web potrebbe apparire terrificante. 893 00:43:35,920 --> 00:43:38,280 E hanno tutte le funzionalità che abbiamo richiesto, 894 00:43:38,280 --> 00:43:40,650 gli sviluppatori hanno fatto un buon lavoro. 895 00:43:40,650 --> 00:43:43,370 >> Ma non necessariamente conoscono abbastanza di progettazione di database 896 00:43:43,370 --> 00:43:46,680 o non pensavano difficile abbastanza circa i tipi di dati 897 00:43:46,680 --> 00:43:49,220 e le tipologie di utenti i sito stava per avere, 898 00:43:49,220 --> 00:43:53,240 e troviamo, poi, sei mesi più tardi, dopo che sono laureati o spostati su, 899 00:43:53,240 --> 00:43:56,016 che dannazione, il nostro sito è veramente, veramente lento. 900 00:43:56,016 --> 00:43:58,890 E non sto neanche parlando di avere milioni o migliaia di utenti. 901 00:43:58,890 --> 00:44:02,580 Voglio dire, a poche centinaia di utenti del campus, i quali piace, per esempio, 902 00:44:02,580 --> 00:44:04,870 negozio per i corsi allo stesso tempo, sono 903 00:44:04,870 --> 00:44:07,010 utilizzando tale catalogo dei corsi applicazione ho detto 904 00:44:07,010 --> 00:44:10,410 e la cosa sta diventando davvero rallentare perché non c'erano indici. 905 00:44:10,410 --> 00:44:13,740 Non c'erano stelle rosse, per così parlare, o non aveva necessariamente 906 00:44:13,740 --> 00:44:17,690 fattorizzato dati comuni a ottenere qualche risparmio di spazio. 907 00:44:17,690 --> 00:44:21,880 >> E così, quando vagliare uno sviluppatore o la persona database o simili, 908 00:44:21,880 --> 00:44:25,864 il tipo di domande a cui pensare attraverso è anche, in sede di revisione del codice di qualcuno, 909 00:44:25,864 --> 00:44:28,530 per dire, non necessariamente guardare attraverso tutto il loro codice, ma dire, 910 00:44:28,530 --> 00:44:30,154 diamo un'occhiata attraverso le tabelle del database. 911 00:44:30,154 --> 00:44:31,150 Cosa stai memorizzazione? 912 00:44:31,150 --> 00:44:33,941 E poi a dire, beh, aspetta un minuto, perché stai usando un intero? 913 00:44:33,941 --> 00:44:36,224 Che cosa succede se abbiamo 4 miliardi e 1 di queste righe? 914 00:44:36,224 --> 00:44:38,140 E questi tipi di domande è un'opportunità 915 00:44:38,140 --> 00:44:40,170 al tipo di spingere indietro e ottenere un senso di dove 916 00:44:40,170 --> 00:44:42,300 se non sei comodo fare essa, avere qualcuno più tecnico 917 00:44:42,300 --> 00:44:45,425 queste domande, di se o non la persona sa davvero loro roba. 918 00:44:45,425 --> 00:44:47,890 E questo è il tipo di roba, anche, che la gente 919 00:44:47,890 --> 00:44:50,540 su internet che sono autodidatta, forse 920 00:44:50,540 --> 00:44:53,920 imparare meno frequentemente, perché si non necessariamente imbattersi in essa 921 00:44:53,920 --> 00:44:56,630 tanto, perché è possibile ottenere il database installato e funzionante, 922 00:44:56,630 --> 00:44:58,880 ma se non avete letto su tutorial o stato 923 00:44:58,880 --> 00:45:01,880 ha parlato di normalizzazione dei database e l'indicizzazione e le prestazioni, 924 00:45:01,880 --> 00:45:04,255 questi sono i tipi di cose che stanno per farti del male. 925 00:45:04,255 --> 00:45:07,480 E si potrebbe pensare, o un cattivo ingegnere potrebbe dire, oh, bene, abbiamo una migliore retribuzione 926 00:45:07,480 --> 00:45:09,600 per un database più grande o un database più veloce 927 00:45:09,600 --> 00:45:13,360 o semplicemente buttare soldi in questo, scala in verticale, non è necessariamente così. 928 00:45:13,360 --> 00:45:16,920 Se si va dentro-- e si può andare in dopo gli indici fact-- e aggiungere, 929 00:45:16,920 --> 00:45:20,320 e potrebbe richiedere alcune ore per il database per costruire che i nuovi dati 930 00:45:20,320 --> 00:45:24,100 struttura che ho accennato in precedenza, è ancora possibile risolvere il problema dopo il fatto, 931 00:45:24,100 --> 00:45:26,180 che questo è dove si iniziare a distinguere 932 00:45:26,180 --> 00:45:28,830 buoni designer male progettisti, non solo esteticamente, 933 00:45:28,830 --> 00:45:32,972 ma le prestazioni-saggio pure. 934 00:45:32,972 --> 00:45:33,555 Qualsiasi domanda? 935 00:45:33,555 --> 00:45:36,420 936 00:45:36,420 --> 00:45:37,480 No? 937 00:45:37,480 --> 00:45:41,980 Così per NoSQL, che era l'altro tipo di database a cui ho accennato in precedenza, 938 00:45:41,980 --> 00:45:43,490 non si dispone di righe e colonne. 939 00:45:43,490 --> 00:45:47,000 Invece, si dovrebbe avere qualcosa che sembra un po 'più simile a questo. 940 00:45:47,000 --> 00:45:48,630 Ho intenzione di usare la sintassi comune. 941 00:45:48,630 --> 00:45:51,270 parentesi graffe capita di essere utilizzato qui parecchio. 942 00:45:51,270 --> 00:45:55,400 Si potrebbe avere qualcosa come primo nome è David, 943 00:45:55,400 --> 00:46:00,180 si potrebbe avere l'ultima nome è Malan, citazioni, 944 00:46:00,180 --> 00:46:07,530 si potrebbe avere ID è-- mi scusi, whoops-- ID è 1, 945 00:46:07,530 --> 00:46:13,410 e-mail è malan@harvard.edu, e non lo farò preoccuparsi digitando il resto, e poi 946 00:46:13,410 --> 00:46:14,380 alcune altre cose. 947 00:46:14,380 --> 00:46:17,380 >> In altre parole, questo è una rappresentazione testuale 948 00:46:17,380 --> 00:46:20,720 di quello che noi generalmente chiamare un oggetto in un programma per computer. 949 00:46:20,720 --> 00:46:26,079 E un oggetto è in genere solo un insieme di coppie di valori chiave. 950 00:46:26,079 --> 00:46:27,370 Quindi, di nuovo, questo tema ricorrente. 951 00:46:27,370 --> 00:46:30,440 Abbiamo visto coppie di valori chiave in HTML, abbiamo visto coppie di valori chiave ora 952 00:46:30,440 --> 00:46:34,020 nel contesto dei database, e visto coppie di valori chiave nel contesto 953 00:46:34,020 --> 00:46:35,970 di, credo, una lingua prima di oggi. 954 00:46:35,970 --> 00:46:36,890 Continua ad emergere. 955 00:46:36,890 --> 00:46:39,620 E in effetti, questo è davvero quali dati si riduce a, 956 00:46:39,620 --> 00:46:44,240 dati e metadati, o valori e chiavi, rispettivamente. 957 00:46:44,240 --> 00:46:47,430 >> Quindi, un non-relazionale base di dati, basata qualcosa 958 00:46:47,430 --> 00:46:50,680 su oggetti, dove si è appena ciuffo il tutto e metterlo 959 00:46:50,680 --> 00:46:55,640 nella memoria, sarebbe generalmente raffigurato come, o pensato, come questo. 960 00:46:55,640 --> 00:47:00,500 E lascio che ora come un sorta di approccio alternativo. 961 00:47:00,500 --> 00:47:03,750 E non è necessariamente migliore rispetto agli altri. 962 00:47:03,750 --> 00:47:07,310 In realtà, molto in voga in questi giorni sono sistemi di database 963 00:47:07,310 --> 00:47:11,942 come MongoDB e Redis e pochi altri tali strumenti, liberamente disponibili, 964 00:47:11,942 --> 00:47:13,400 ma sono sempre più in voga. 965 00:47:13,400 --> 00:47:18,850 In parte perché offrono ulteriore dispone di oltre questi approcci tabulari, 966 00:47:18,850 --> 00:47:20,850 ma anche perché sono un po 'più facile da usare, 967 00:47:20,850 --> 00:47:24,099 perché non si deve pensare così difficile A proposito di un sacco di queste decisioni di progettazione. 968 00:47:24,099 --> 00:47:25,970 Quindi, vantaggi e svantaggi. 969 00:47:25,970 --> 00:47:29,740 Così rendo conto che ci sono opzioni al di là di quello che abbiamo appena trascorso tempo su. 970 00:47:29,740 --> 00:47:32,310 >> Quindi cerchiamo di fare questo. 971 00:47:32,310 --> 00:47:37,870 Facciamo un po 'di transizione torna ora alla programmazione web, 972 00:47:37,870 --> 00:47:40,470 così che tipo di concludere oggi con qualcosa 973 00:47:40,470 --> 00:47:43,930 questo è un po 'hands-on, riempiendo in alcune lacune da ieri. 974 00:47:43,930 --> 00:47:45,340 Lasciami andare a questo primo. 975 00:47:45,340 --> 00:47:49,310 Così ricordare che ieri abbiamo avuto qualche canonica HTML 976 00:47:49,310 --> 00:47:55,110 pagine che avevano inizialmente, solo HTML, e poi secondariamente aveva CSS, 977 00:47:55,110 --> 00:47:56,620 Fogli di stile. 978 00:47:56,620 --> 00:47:59,830 Si tratta di un nuovo tag che non abbiamo vedere ieri, o soffermarsi su, 979 00:47:59,830 --> 00:48:01,490 i cosiddetti tag script. 980 00:48:01,490 --> 00:48:05,830 >> Si scopre che si può effettivamente incorporare un linguaggio chiamato JavaScript nel tuo web 981 00:48:05,830 --> 00:48:08,310 pagina e rendere il vostro web pagine fare qualcosa. 982 00:48:08,310 --> 00:48:09,710 Così che cosa voglio dire con questo? 983 00:48:09,710 --> 00:48:12,630 Beh, mi permetta di andare avanti e basta prendere in prestito questo codice per un momento. 984 00:48:12,630 --> 00:48:15,860 Ho intenzione di andare in Cloud9, non c'è bisogno di andarci voi appena ancora, 985 00:48:15,860 --> 00:48:21,350 e ho intenzione di chiamare questo alert.HTML. 986 00:48:21,350 --> 00:48:23,650 Ho intenzione di incollare nel mio file qui. 987 00:48:23,650 --> 00:48:32,070 E proprio per chiarire quello che ho fatto, per non andare a questo indirizzo e andare per avvisare, 988 00:48:32,070 --> 00:48:33,870 e si vede il mondo Ciao. 989 00:48:33,870 --> 00:48:35,440 >> Ma questa è una specie di deludente. 990 00:48:35,440 --> 00:48:37,410 voglio fare qualcosa un po 'diverso. 991 00:48:37,410 --> 00:48:40,610 Quindi ho intenzione di farlo in realtà questo. 992 00:48:40,610 --> 00:48:43,820 Ho intenzione di andare in qui, e tra le mie tag script, 993 00:48:43,820 --> 00:48:53,460 dire alert ( 'ciao, mondo'); così preavviso è un po 'sciatta, ma ho HTML, 994 00:48:53,460 --> 00:48:56,180 all'interno della quale è un linguaggio chiamato JavaScript, 995 00:48:56,180 --> 00:48:59,420 e questo è ciò che è chiamato un funzione di chiamata o chiamata di procedura. 996 00:48:59,420 --> 00:49:04,500 Questo è un verbo, letteralmente, in questo caso, e sto invocando la funzionalità del codice 997 00:49:04,500 --> 00:49:06,310 che qualcun altro ha scritto. 998 00:49:06,310 --> 00:49:09,630 >> In modo che la funzionalità è un avviso, così andiamo a questa pagina 999 00:49:09,630 --> 00:49:14,046 ora e fare clic su ricarica, e ora si vedere un po 'di interattività. 1000 00:49:14,046 --> 00:49:15,420 È una specie di vecchia scuola e brutto. 1001 00:49:15,420 --> 00:49:18,580 Questo tipo di voi ricorda il pop-up, forse, di un tempo 1002 00:49:18,580 --> 00:49:22,030 ma lo ha fatto fare qualcosa di un poco più programmatico. 1003 00:49:22,030 --> 00:49:26,940 >> Così, più di questo, facciamo qualcosa di più interessante. 1004 00:49:26,940 --> 00:49:30,980 Lasciami andare qui e sbarazzarsi di questo. 1005 00:49:30,980 --> 00:49:33,840 E ho intenzione di andare avanti e creare un modulo come abbiamo fatto ieri. 1006 00:49:33,840 --> 00:49:34,840 In realtà, sai una cosa? 1007 00:49:34,840 --> 00:49:37,350 Ho intenzione di andare in google.html, che abbiamo 1008 00:49:37,350 --> 00:49:43,027 iniziato ieri, che sembrava questo, attraverso il quale abbiamo cercato per il gatto 1009 00:49:43,027 --> 00:49:45,360 A meno di notare c'è una specie di bug nella versione corrente. 1010 00:49:45,360 --> 00:49:49,770 Funziona per i gatti, ma supponiamo che Io non cooperare e digito nulla, 1011 00:49:49,770 --> 00:49:53,290 e ho semplicemente fare clic su Invia. 1012 00:49:53,290 --> 00:49:54,540 Questo è il tipo di comportamento strano. 1013 00:49:54,540 --> 00:49:57,300 Mi ha portato al reale di Google, non mi ha dato un messaggio di errore. 1014 00:49:57,300 --> 00:50:00,590 Mi piacerebbe dire all'utente è necessario darci un valore. 1015 00:50:00,590 --> 00:50:01,780 >> Quindi, come potremmo fare questo? 1016 00:50:01,780 --> 00:50:06,790 Ebbene vorrei tornare in Cloud9 e lasciami andare nella parte superiore della mia pagina 1017 00:50:06,790 --> 00:50:11,980 e aggiungere un tag script come questo, in cui Ho intenzione di scrivere un po 'di codice JavaScript. 1018 00:50:11,980 --> 00:50:15,420 E ho intenzione di fare quanto segue. 1019 00:50:15,420 --> 00:50:22,910 Se (document.getelementByID-- e richiamo di cui abbiamo parlato in precedenza che, 1020 00:50:22,910 --> 00:50:23,960 tale funzione. 1021 00:50:23,960 --> 00:50:25,310 Cosa ID cosa voglio ottenere? 1022 00:50:25,310 --> 00:50:33,050 Voglio ottenere q, e ho intenzione di per esempio è uguale a niente, come questo-- 1023 00:50:33,050 --> 00:50:38,220 in realtà mi permetta di usare le virgolette solo per consistency-- uguale niente, 1024 00:50:38,220 --> 00:50:46,650 poi alert ( "Si prega di digitare una query") qui. 1025 00:50:46,650 --> 00:50:49,200 >> Quindi devo quello che sembra essere qualcosa di simile a una condizione. 1026 00:50:49,200 --> 00:50:51,410 Abbiamo visto questa idea generale di Scratch. 1027 00:50:51,410 --> 00:50:54,240 E 'come una di quelle di puzzle pezzi che si presentava così. 1028 00:50:54,240 --> 00:50:55,780 E quello che sto dicendo? 1029 00:50:55,780 --> 00:50:59,520 Bene, qui, accorgo io sono andando a fare quanto segue. 1030 00:50:59,520 --> 00:51:02,790 Ho intenzione di dare a questo modulo campo, non solo un nome di q, che 1031 00:51:02,790 --> 00:51:06,630 è quello che viene passato a Google, ma sono intenzione di dare un identificatore locale, 1032 00:51:06,630 --> 00:51:07,630 anche chiamato q. 1033 00:51:07,630 --> 00:51:11,780 Ma potrei chiamare questo tutto quello che voglio, sto solo andando a mantenere le cose semplici 1034 00:51:11,780 --> 00:51:14,570 e anche chiamarla q, solo per semplicità. 1035 00:51:14,570 --> 00:51:17,650 >> E ora ho intenzione di fare qualcosa di un po 'di più. 1036 00:51:17,650 --> 00:51:22,600 Sui campi del modulo qui, ho intenzione di aggiungere quello che è chiamato un gestore di eventi. 1037 00:51:22,600 --> 00:51:32,260 Su presentare, voglio chiamare una funzione chiamata validate. 1038 00:51:32,260 --> 00:51:35,520 Questo non esiste ancora, questo parola, o questo verbo convalidare, 1039 00:51:35,520 --> 00:51:38,560 perché quello che ho intenzione di fare qui ora è aggiungere un po 'di codice. 1040 00:51:38,560 --> 00:51:42,200 >> Io vado a dire la funzione Convalida. 1041 00:51:42,200 --> 00:51:48,280 Ho intenzione di rientrare questo e aggiungere un altro parentesi graffa qui e un altro qui. 1042 00:51:48,280 --> 00:51:50,110 Si consideri che cosa questo sta facendo ora. 1043 00:51:50,110 --> 00:51:54,210 Ho now-- pensare a questo come creato il mio proprio pezzo di puzzle che prima non 1044 00:51:54,210 --> 00:51:57,440 esistono, e ho chiamato questo puzzle piece il pezzo di puzzle validate. 1045 00:51:57,440 --> 00:52:01,620 Il suo scopo nella vita è quello di eseguire le quattro linee di codice all'interno di esso. 1046 00:52:01,620 --> 00:52:04,940 >> Se document.getElementById così concettualmente, 1047 00:52:04,940 --> 00:52:09,380 che sta per andare in elemento, l'elemento HTML la cui unica 1048 00:52:09,380 --> 00:52:12,930 idea è solo q, e quindi anche se la sintassi sembra un po 'strano, 1049 00:52:12,930 --> 00:52:16,430 che la parità è uguale significa semplicemente eguali. 1050 00:52:16,430 --> 00:52:20,950 Quindi significa che se l'elemento con il identificatore unico di q, quando ottenuto, 1051 00:52:20,950 --> 00:52:25,700 non ha alcun valore, è solo pari tra virgolette, nulla in là, 1052 00:52:25,700 --> 00:52:27,170 allora che cosa voglio fare? 1053 00:52:27,170 --> 00:52:29,360 Voglio urlare l'utente. 1054 00:52:29,360 --> 00:52:31,710 >> E non andremo grande dettaglio qui. 1055 00:52:31,710 --> 00:52:32,960 Ho intenzione di restituire false. 1056 00:52:32,960 --> 00:52:34,380 Questo è un errore. 1057 00:52:34,380 --> 00:52:38,746 Altrimenti, ho intenzione di restituire true. 1058 00:52:38,746 --> 00:52:40,120 Quindi, o ha funzionato o non ha fatto. 1059 00:52:40,120 --> 00:52:41,800 Falso o vero. 1060 00:52:41,800 --> 00:52:47,820 E ora se non ho commesso errori, mi permetta di salvare questo e ricarica questa. 1061 00:52:47,820 --> 00:52:50,940 E lasciatemi solo doppio controllo che Non ho, infatti, fare qualsiasi errori di battitura, 1062 00:52:50,940 --> 00:52:52,690 quindi non mi imbarazzo me stesso. 1063 00:52:52,690 --> 00:52:54,240 Vediamo se questo funziona. 1064 00:52:54,240 --> 00:52:56,930 >> Così ora ho intenzione di digitare i gatti. 1065 00:52:56,930 --> 00:52:59,421 Funziona ancora, o lavori e mezzo, almeno. 1066 00:52:59,421 --> 00:53:02,170 Ora vorrei ricaricarlo, e ora lascio Provo la presentazione senza digitare 1067 00:53:02,170 --> 00:53:05,860 anything-- maledizione, si è rotto. 1068 00:53:05,860 --> 00:53:06,430 Un momento. 1069 00:53:06,430 --> 00:53:09,380 1070 00:53:09,380 --> 00:53:12,660 Mi permetta di aprire la console, [INAUDIBLE] log, ricaricare la pagina. 1071 00:53:12,660 --> 00:53:13,576 Fammi provare di nuovo. 1072 00:53:13,576 --> 00:53:17,000 1073 00:53:17,000 --> 00:53:17,501 Oh, maledizione. 1074 00:53:17,501 --> 00:53:18,000 Ho dimenticato. 1075 00:53:18,000 --> 00:53:18,630 Ho fatto un errore di battitura. 1076 00:53:18,630 --> 00:53:20,760 Mi ricordo quello che è. 1077 00:53:20,760 --> 00:53:21,350 .valore. 1078 00:53:21,350 --> 00:53:27,060 Volevo dire se il valore dell'elemento cui ID è q 1079 00:53:27,060 --> 00:53:29,800 è uguale a quello, poi urlare a l'utente. 1080 00:53:29,800 --> 00:53:31,870 >> Così ora mi permetta di tenere di nuovo il fiato. 1081 00:53:31,870 --> 00:53:33,480 Eccoci qui. 1082 00:53:33,480 --> 00:53:34,130 Ecco quà. 1083 00:53:34,130 --> 00:53:35,010 Si prega di digitare una query. 1084 00:53:35,010 --> 00:53:36,840 Quindi non mi sta lasciando passare. 1085 00:53:36,840 --> 00:53:40,210 Posso essere una sorta di giocoso con questo, e invece di controllare per nessun valore, 1086 00:53:40,210 --> 00:53:46,720 Posso dire una cosa del genere, non più alla ricerca per i gatti, 1087 00:53:46,720 --> 00:53:51,150 e ora possiamo lasciare che più giocosamente la ricerca degli utenti per i cani se lui o lei 1088 00:53:51,150 --> 00:53:57,490 vuole, o se vado qui e la ricerca per i gatti, ora non posso. 1089 00:53:57,490 --> 00:53:58,690 >> Allora qual è il takeaway qui? 1090 00:53:58,690 --> 00:54:03,010 Quindi uno, abbiamo introdotto in il nostro mondo di HTML e CSS, 1091 00:54:03,010 --> 00:54:04,320 funzionalità di programmazione. 1092 00:54:04,320 --> 00:54:06,300 Posso effettivamente ora prendere decisioni in codice. 1093 00:54:06,300 --> 00:54:10,570 In precedenza, tutto quello che potevo fare è contrassegnare contenuto testuale o contenuti grafici 1094 00:54:10,570 --> 00:54:13,080 e dire che cosa cercare come e dove visualizzare. 1095 00:54:13,080 --> 00:54:16,650 Ora posso davvero chiedere questioni della pagina web 1096 00:54:16,650 --> 00:54:20,010 e prendere decisioni basate su di esso, e richiedere all'utente 1097 00:54:20,010 --> 00:54:22,780 se ho bisogno di urlare a lui o lei. 1098 00:54:22,780 --> 00:54:28,740 >> Quindi proviamo qualcosa da soli con questo. 1099 00:54:28,740 --> 00:54:33,350 Vai avanti, mi permetta di aprire la diapositiva successiva qui, e solo sottolineare una cosa. 1100 00:54:33,350 --> 00:54:37,250 Proprio come con i CSS, possiamo scomporre il nostro codice JavaScript in un file separato, 1101 00:54:37,250 --> 00:54:40,660 si può fare la stessa cosa con JavaScript come con i CSS. 1102 00:54:40,660 --> 00:54:44,520 E si usa che l'utilizzo di una fonte attributo del tag script. 1103 00:54:44,520 --> 00:54:46,540 Ma noi non complicare le cose per ora. 1104 00:54:46,540 --> 00:54:50,440 Invece, se potessi andare a non questa pagina, 1105 00:54:50,440 --> 00:55:02,690 ma-- mi permetta di spostare questo giro in order-- andare, se si potesse, questa pagina qui. 1106 00:55:02,690 --> 00:55:03,592 Questo URL qui. 1107 00:55:03,592 --> 00:55:04,550 E 'nelle diapositive di oggi. 1108 00:55:04,550 --> 00:55:07,133 Potrebbe essere necessario ricaricare perché Ho aggiunto un paio di cose. 1109 00:55:07,133 --> 00:55:09,970 1110 00:55:09,970 --> 00:55:13,890 >> Ma andare là dove alcuni enigmi attendono. 1111 00:55:13,890 --> 00:55:16,670 E questo ci darà una possibilità, in un contesto leggermente più divertimento, 1112 00:55:16,670 --> 00:55:20,610 a dilettarsi con qualche JavaScript. 1113 00:55:20,610 --> 00:55:25,505 E quando si arriva lì, Mi spiego cosa attende. 1114 00:55:25,505 --> 00:55:47,350 1115 00:55:47,350 --> 00:55:47,850 Get verde. 1116 00:55:47,850 --> 00:56:03,063 1117 00:56:03,063 --> 00:56:03,562 Impostare blu. 1118 00:56:03,562 --> 00:56:11,030 1119 00:56:11,030 --> 00:56:13,930 Imposta verde, rosso imposta. 1120 00:56:13,930 --> 00:56:19,220 1121 00:56:19,220 --> 00:56:20,220 Ops. 1122 00:56:20,220 --> 00:56:22,330 Scusate. 1123 00:56:22,330 --> 00:56:27,630 >> Questo è quanto di nostra documentazione per questa sfida. 1124 00:56:27,630 --> 00:56:29,920 E questo sta andando a lavorare come segue. 1125 00:56:29,920 --> 00:56:33,340 Quindi, quello che hai su questo Pagina è un intero gruppo 1126 00:56:33,340 --> 00:56:38,024 di puzzle di immagini da un compagno presso la Stanford University. 1127 00:56:38,024 --> 00:56:41,190 Quindi, quello che stai vedendo qui è quasi tipo di uno di quei puzzle occhio magico, 1128 00:56:41,190 --> 00:56:43,815 ma se basta guardare a lui, niente sta andando a saltar fuori di te. 1129 00:56:43,815 --> 00:56:46,000 Piuttosto, qualcosa è nascosto in questa immagine. 1130 00:56:46,000 --> 00:56:47,790 Ed è nascosta nel modo seguente. 1131 00:56:47,790 --> 00:56:51,740 Immagini, come forse sapete, può essere composto da soli tre colori. 1132 00:56:51,740 --> 00:56:53,346 Alcuni rosso, alcuni blu, e un po 'verde. 1133 00:56:53,346 --> 00:56:55,220 E siamo in grado di fare la colori dell'arcobaleno 1134 00:56:55,220 --> 00:56:57,570 miscelando i tre colori in qualche modo. 1135 00:56:57,570 --> 00:57:01,940 >> Quindi questo sembra per lo più verde e blu, ma come Nick dice qui, 1136 00:57:01,940 --> 00:57:04,060 questa immagine Ferro puzzle è un puzzle. 1137 00:57:04,060 --> 00:57:06,780 Esso contiene un'immagine di qualcosa di famoso, tuttavia, 1138 00:57:06,780 --> 00:57:08,310 l'immagine è stata distorta. 1139 00:57:08,310 --> 00:57:11,500 L'oggetto è famoso nei valori di rosso. 1140 00:57:11,500 --> 00:57:13,810 valori Tuttavia, il rosso hanno tutti stati divisi per 10. 1141 00:57:13,810 --> 00:57:16,230 Così essi sono troppo piccoli di un fattore 10. 1142 00:57:16,230 --> 00:57:18,280 In altre parole, Nick ha preso un'immagine originale, 1143 00:57:18,280 --> 00:57:21,500 e lui desaturated tutto della rossa da esso, 1144 00:57:21,500 --> 00:57:23,850 abbassare la quantità di rosso inchiostro, se si vuole, in essa. 1145 00:57:23,850 --> 00:57:26,060 >> I valori blu e verde sono tutti semplicemente senza senso, 1146 00:57:26,060 --> 00:57:30,000 valori casuali, alias rumore progettati per oscurare l'immagine reale. 1147 00:57:30,000 --> 00:57:32,250 Allora, cosa ha fatto Nick era lui attenuato il rosso e poi 1148 00:57:32,250 --> 00:57:34,380 ha appena gettato casuale quantità di blu e verde 1149 00:57:34,380 --> 00:57:37,590 l'immagine di tipo di oscura ciò che in realtà è ancora lì. 1150 00:57:37,590 --> 00:57:41,089 È necessario annullare queste distorsioni per rivelare l'immagine. 1151 00:57:41,089 --> 00:57:44,255 In primo luogo, impostare tutti i valori di blu e verde a zero per farli fuori del modo, 1152 00:57:44,255 --> 00:57:48,700 e guardare il risultato. Poi moltiplicare ogni valore rosso per 10, 1153 00:57:48,700 --> 00:57:51,720 ridimensionamento fino a circa il suo valore finale. 1154 00:57:51,720 --> 00:57:53,035 Qual è l'oggetto famosa? 1155 00:57:53,035 --> 00:57:57,920 >> Quindi tutti voi avete questo rettangolo nel tuo browser al momento. 1156 00:57:57,920 --> 00:58:00,830 E si noti che vi è una certa codice di avviamento, per così dire. 1157 00:58:00,830 --> 00:58:04,370 Questo è un codice JavaScript che Nick ha scritto per voi. 1158 00:58:04,370 --> 00:58:07,250 E notare che non c'è una linea nel mezzo che 1159 00:58:07,250 --> 00:58:10,380 inizia con una barra barra, che è che cosa è generalmente chiamato un commento. 1160 00:58:10,380 --> 00:58:14,660 Vuol dire che è una frase al programmatore che non ha significato funzionale. 1161 00:58:14,660 --> 00:58:16,520 E 'solo un segnale visivo per l'umano. 1162 00:58:16,520 --> 00:58:18,670 >> Così si può andare avanti e eliminare solo quella linea, 1163 00:58:18,670 --> 00:58:22,214 e non essere super attenti a eliminare o modificare qualsiasi altra cosa. 1164 00:58:22,214 --> 00:58:25,130 E vorrei solo si cammina attraverso ciò che questo codice fa e mi lascio 1165 00:58:25,130 --> 00:58:28,580 a voi per capire l'immagine segreta. 1166 00:58:28,580 --> 00:58:32,226 Questa prima linea qui che ho appena evidenziato ti dà la seguente. 1167 00:58:32,226 --> 00:58:34,100 Sul lato sinistro, Hai quello che viene chiamato 1168 00:58:34,100 --> 00:58:39,140 una variabile che Nick ha arbitrariamente, ma ragionevolmente chiamato im per un'immagine. 1169 00:58:39,140 --> 00:58:41,660 Sul lato destro di che segno uguale, 1170 00:58:41,660 --> 00:58:45,240 sta dicendo mi danno un nuovo citazione, unquote "semplice immagine". 1171 00:58:45,240 --> 00:58:49,680 >> Semplice immagine, in questo contesto è ciò che è chiamato una classe, beh, 1172 00:58:49,680 --> 00:58:53,910 è un po 'come un class-- tecnicamente un prototype-- ma in realtà, 1173 00:58:53,910 --> 00:58:58,000 questo mi sta dando un nuovo oggetto, i cui contenuti sono file, 1174 00:58:58,000 --> 00:58:59,610 ferro-puzzle.png. 1175 00:58:59,610 --> 00:59:03,190 In altre parole, Nick ha creato questa nozione di un'immagine semplice 1176 00:59:03,190 --> 00:59:05,920 in modo che possiamo, per pedagogico finalità, giocano con l'immagine 1177 00:59:05,920 --> 00:59:09,790 e cambiare il suo colore rosso, valori verde e blu. 1178 00:59:09,790 --> 00:59:11,750 >> E come stiamo facendo questo? 1179 00:59:11,750 --> 00:59:15,360 Questa sintassi un po 'criptica qui è un po 'come il blocco di ripetizione 1180 00:59:15,360 --> 00:59:19,140 che alcuni di voi hanno visto in precedenza Scratch oggi, dove si può ripetere 10 volte. 1181 00:59:19,140 --> 00:59:22,220 In questo caso, Nick non ha codificato un numero come 10. 1182 00:59:22,220 --> 00:59:28,020 Invece si sta dicendo, inizializzare una variabile denominata x 0, 1183 00:59:28,020 --> 00:59:33,180 controllare se x è minore di la larghezza dell'immagine. 1184 00:59:33,180 --> 00:59:38,160 >> E così per essere più corretta, l'immagine è variabile, dot significa andare all'interno di esso 1185 00:59:38,160 --> 00:59:40,900 e ottenere la sua larghezza, e poi paren aperti, chiusi 1186 00:59:40,900 --> 00:59:43,687 paren è solo modo di un programmatore di dire questo è una funzione. 1187 00:59:43,687 --> 00:59:44,520 Questa è una procedura. 1188 00:59:44,520 --> 00:59:46,430 Questa è la funzionalità qualcun altro ha scritto. 1189 00:59:46,430 --> 00:59:48,570 Usalo e mi restituire una risposta. 1190 00:59:48,570 --> 00:59:53,610 E allora x ++ è un modo elegante per dicendo, dopo aver fatto questo una volta, 1191 00:59:53,610 --> 00:59:55,850 incrementare x di 1. 1192 00:59:55,850 --> 00:59:58,760 In altre parole, questo è il modo di un programmatore 1193 00:59:58,760 --> 01:00:05,760 di indurre un ciclo che è andando a iterare 1194 01:00:05,760 --> 01:00:10,410 tutte le colonne in un'immagine. 1195 01:00:10,410 --> 01:00:14,790 >> L'immagine è solo una griglia di puntini, righe e colonne di punti. 1196 01:00:14,790 --> 01:00:18,270 Questo è un modo di iterazione su tutte le colonne. 1197 01:00:18,270 --> 01:00:20,770 E all'interno, Nel frattempo, stiamo iterazione 1198 01:00:20,770 --> 01:00:24,030 sopra le altezze, qui e qui e qui. 1199 01:00:24,030 --> 01:00:29,442 Quindi questo è solo un modo di Traipsing, quasi come una vecchia macchina da scrivere scuola, 1200 01:00:29,442 --> 01:00:32,230 solo andare sulla intera immagine in modo iterativo. 1201 01:00:32,230 --> 01:00:36,370 Anche questo non è del tutto tutto chiara, basta prendere sulla fede, per ora, 1202 01:00:36,370 --> 01:00:38,880 che queste tre linee di codice insieme sono 1203 01:00:38,880 --> 01:00:43,090 andando a permettere di guardare in modo iterativo ad ogni pixel, ogni punto nell'immagine. 1204 01:00:43,090 --> 01:00:43,790 >> Che cosa è un pixel? 1205 01:00:43,790 --> 01:00:46,250 Ebbene, per essere chiari, se guardiamo in originale e lo zoom in, 1206 01:00:46,250 --> 01:00:49,060 se davvero messo gli occhi allo schermo del computer, che è 1207 01:00:49,060 --> 01:00:53,510 solo un sacco di punti, diversi mille puntini imballate insieme lì. 1208 01:00:53,510 --> 01:00:56,180 E così quello che stai per fare? 1209 01:00:56,180 --> 01:00:59,240 Ognuno di questi punti, una definizione finale, 1210 01:00:59,240 --> 01:01:06,350 è il risultato di ciò che è generalmente chiamato RGB, rosso, verde, blu, che 1211 01:01:06,350 --> 01:01:09,940 ancora, possono essere combinati per dare a qualsiasi numero di colori. 1212 01:01:09,940 --> 01:01:13,200 >> In realtà, se vi ricordate da molti, molti anni fa, 1213 01:01:13,200 --> 01:01:17,320 schermi del proiettore come queste cose utilizzato per avere non uno ma tre lenti. 1214 01:01:17,320 --> 01:01:20,700 Uno di loro sputare luce rossa, uno dei li sputano fuori la luce verde, uno di loro 1215 01:01:20,700 --> 01:01:21,600 sputare luce blu. 1216 01:01:21,600 --> 01:01:24,391 E se si fosse in una scuola media come se fossi in cui non sono mai stati 1217 01:01:24,391 --> 01:01:27,000 correttamente allineato, eri sempre la visione di film di storia 1218 01:01:27,000 --> 01:01:29,770 che erano leggermente distorta, perché i tre colori non erano 1219 01:01:29,770 --> 01:01:30,970 combinando correttamente. 1220 01:01:30,970 --> 01:01:36,330 >> Ma risulta che ciascuna di questi valori di rosso, verde e blu, 1221 01:01:36,330 --> 01:01:37,980 può avere un numero associato con loro. 1222 01:01:37,980 --> 01:01:42,500 Per esempio, 0 per il rosso significa nessun rosso, 0 per il verde significa non verde, 1223 01:01:42,500 --> 01:01:45,120 e 0 per il blu significa nessun blu. 1224 01:01:45,120 --> 01:01:49,403 Quindi, se non avete rosso, non verde, e non blu, che colore avete? 1225 01:01:49,403 --> 01:01:51,009 >> PUBBLICO: [INAUDIBLE] 1226 01:01:51,009 --> 01:01:52,800 DAVID MALAN: Lo faresti spero, che sia bianco. 1227 01:01:52,800 --> 01:01:55,333 Purtroppo, questo operates-- dispiace? 1228 01:01:55,333 --> 01:01:56,380 >> PUBBLICO: [INAUDIBLE] 1229 01:01:56,380 --> 01:01:58,630 DAVID MALAN: Quindi in realtà hanno nero, in questo caso. 1230 01:01:58,630 --> 01:02:01,530 Quindi, se avete nessuno di questi i colori accesi, si ha il nero. 1231 01:02:01,530 --> 01:02:06,510 Tuttavia, se avete, diciamo un sacco di loro, come un sacco di rosso, 255 di esso, 1232 01:02:06,510 --> 01:02:10,340 un sacco di verde, e un sacco di blu, che è bianco. 1233 01:02:10,340 --> 01:02:12,230 Quindi questi sono i due estremi. 1234 01:02:12,230 --> 01:02:17,460 Così da questa logica, se ho un sacco di rosso e non verde e non blu, 1235 01:02:17,460 --> 01:02:18,485 di che colore è? 1236 01:02:18,485 --> 01:02:19,360 PUBBLICO: [INAUDIBLE] 1237 01:02:19,360 --> 01:02:20,610 DAVID MALAN: A destra, ovviamente. 1238 01:02:20,610 --> 01:02:25,940 E poi non rosso, molto verde, non blu, e poi 1239 01:02:25,940 --> 01:02:29,590 se have-- bene, dobbiamo solo finire esso, proprio perché, ma questo, naturalmente, 1240 01:02:29,590 --> 01:02:31,350 ora, è blu. 1241 01:02:31,350 --> 01:02:33,030 E ora è possibile combinare questi colori. 1242 01:02:33,030 --> 01:02:36,430 Ora, come un a parte, se qualcuno di voi ha mai fatto un po 'di progettazione vera e propria sito web, 1243 01:02:36,430 --> 01:02:38,360 si potrebbe effettivamente vedi simboli come questo. 1244 01:02:38,360 --> 01:02:42,030 FFF-- e in realtà, è probabilmente nemmeno quello. 1245 01:02:42,030 --> 01:02:44,380 E 'FFFFFF. 1246 01:02:44,380 --> 01:02:48,970 >> Chiunque abbia mai visto F ed E di di e A through-- così si scopre, 1247 01:02:48,970 --> 01:02:52,970 abbiamo parlato ieri su decimale, e oggi, un po 'su decimale. 1248 01:02:52,970 --> 01:02:54,570 Oggi abbiamo parlato di binario. 1249 01:02:54,570 --> 01:02:59,010 Risulta, esadecimale è molto sistema di base comune per l'uso in prodotti. 1250 01:02:59,010 --> 01:03:04,960 Binary è due, decimale è 10, esadecimale è 16. 1251 01:03:04,960 --> 01:03:08,640 E si scopre, come si fa si contano in esadecimale? 1252 01:03:08,640 --> 01:03:11,620 Zero, uno, due, tre, quattro, cinque, sei, sette, otto, 1253 01:03:11,620 --> 01:03:14,730 nove, cosa si usa dopo le nove? 1254 01:03:14,730 --> 01:03:16,600 Qual è il numero successivo? 1255 01:03:16,600 --> 01:03:19,180 Abbiamo già usato zero. 1256 01:03:19,180 --> 01:03:20,570 Ho bisogno di 16 di questi. 1257 01:03:20,570 --> 01:03:25,770 Zero, uno, due, tre, quattro, cinque, sei, sette, otto, nove, 1258 01:03:25,770 --> 01:03:27,520 avete bisogno di qualche convenzione arbitraria. 1259 01:03:27,520 --> 01:03:30,810 >> E ciò che l'umanità ha deciso qualche tempo fa, che dopo le nove arriva la lettera 1260 01:03:30,810 --> 01:03:34,450 A e poi B e C. Quindi la modo si conta in esadecimale 1261 01:03:34,450 --> 01:03:37,040 è zero, uno, due, tre, quattro, cinque, sei, sette, otto, nove, 1262 01:03:37,040 --> 01:03:42,880 A, B, C, D, E, F, e che conterà tutta la strada, si scopre, a 15. 1263 01:03:42,880 --> 01:03:47,850 Quindi zero a 15 è zero a F. Ora, perché è così significativo? 1264 01:03:47,850 --> 01:03:51,570 Beh, quando si hanno due F di, è così che si esprime 255. 1265 01:03:51,570 --> 01:03:54,350 >> Quindi, per farla breve, in il mondo di Photoshop, 1266 01:03:54,350 --> 01:03:57,299 che software di progettazione grafica, nel mondo dello sviluppo web, 1267 01:03:57,299 --> 01:03:59,590 dove si hanno un sacco di colori, Naturalmente, con cui giocare, 1268 01:03:59,590 --> 01:04:02,350 spesso programmatori esprimere quelli in esadecimale, 1269 01:04:02,350 --> 01:04:05,260 solo perché tende per essere un po 'più semplice. 1270 01:04:05,260 --> 01:04:07,850 Anche se a prima vista è molto più complessa. 1271 01:04:07,850 --> 01:04:11,590 >> Quindi, in ogni caso, è importante perché Nick a Stanford 1272 01:04:11,590 --> 01:04:15,100 ci ha dato sei pezzi di funzionalità che voi, i programmatori in erba, 1273 01:04:15,100 --> 01:04:17,060 ora avrà la capacità di usare. 1274 01:04:17,060 --> 01:04:19,960 Costruito in questo web pagina sei funzioni, 1275 01:04:19,960 --> 01:04:21,820 sei procedure che Nick ha scritto. 1276 01:04:21,820 --> 01:04:26,800 Tre di loro otterrà un numero, rosso, verde, o un valore blu. 1277 01:04:26,800 --> 01:04:28,787 Tre di loro si impostare tale valore. 1278 01:04:28,787 --> 01:04:30,620 E queste sottolineature sono solo segnaposti, 1279 01:04:30,620 --> 01:04:32,600 quindi è necessario sapere che cosa questi sono. 1280 01:04:32,600 --> 01:04:36,240 >> Così, con queste tre funzioni, la prima di queste cose 1281 01:04:36,240 --> 01:04:39,190 sta per essere una coordinata x, e la seconda di queste cose 1282 01:04:39,190 --> 01:04:40,700 sta per essere una coordinata y. 1283 01:04:40,700 --> 01:04:44,650 In altre parole, che punteggiano, che pixel vuoi ottenere il verde di, 1284 01:04:44,650 --> 01:04:46,480 ottenere l'azzurro, ottenere il rosso di. 1285 01:04:46,480 --> 01:04:51,440 E poi qui, questo sta per essere x, questo sta per essere un valore y, 1286 01:04:51,440 --> 01:04:55,379 e questo sta per essere un numero. 1287 01:04:55,379 --> 01:04:57,170 Allora, facciamo la prima linea di questo insieme 1288 01:04:57,170 --> 01:05:00,220 e poi lascio a voi per cercare di dedurre il resto. 1289 01:05:00,220 --> 01:05:03,100 Quindi, secondo le istruzioni in questa pagina, abbiamo bisogno 1290 01:05:03,100 --> 01:05:08,960 per aumentare il rosso di un fattore 10, e abbiamo bisogno di rimuovere il verde 1291 01:05:08,960 --> 01:05:09,930 e rimuovere il blu. 1292 01:05:09,930 --> 01:05:12,410 Cominciamo con questi ultimi scenari. 1293 01:05:12,410 --> 01:05:17,760 Quindi, se voglio, e ho intenzione far rientrare utilizzando alcuni spazi, 1294 01:05:17,760 --> 01:05:22,291 se voglio impostare il colore rosso, verde, o il valore blu, 1295 01:05:22,291 --> 01:05:23,540 Ho intenzione di fare quanto segue. 1296 01:05:23,540 --> 01:05:31,280 >> Immagine, im.setBlue, e poi in base alle mie istruzioni qui, 1297 01:05:31,280 --> 01:05:36,700 Quali sono le tre cose dovrei digitare all'interno delle parentesi, adesso? 1298 01:05:36,700 --> 01:05:41,960 Ho bisogno il valore x, il il valore y, e quale numero 1299 01:05:41,960 --> 01:05:48,770 dovrei mettere qui se voglio sbarazzarsi Di punto in bianco, sulla base di questa storia qui? 1300 01:05:48,770 --> 01:05:49,630 Proprio zero. 1301 01:05:49,630 --> 01:05:52,420 Se voglio nessun azzurro, io sono solo intenzione di cambiare a zero. 1302 01:05:52,420 --> 01:05:54,465 >> Ora facciamo solo ricapitolare che cosa questo sta facendo. 1303 01:05:54,465 --> 01:05:56,970 1304 01:05:56,970 --> 01:06:01,170 Ho qui in questi top seconda e terza linea, 1305 01:06:01,170 --> 01:06:04,080 Ho sostenuto due cicli, cicli annidati, se si 1306 01:06:04,080 --> 01:06:08,360 si, che stanno per avere l'effetto di progredire da sinistra a destra, 1307 01:06:08,360 --> 01:06:11,590 verso il basso su tutta l'x valori e tutti i valori y. 1308 01:06:11,590 --> 01:06:15,167 Perché ancora una volta, una foto solo una griglia di righe e colonne. 1309 01:06:15,167 --> 01:06:17,000 Quindi questo sta per arrivare liberarsi di tutto il blu. 1310 01:06:17,000 --> 01:06:18,627 Mi permetta di lasciare nella riga successiva a te. 1311 01:06:18,627 --> 01:06:20,043 Come faccio a sbarazzarsi di tutto il verde? 1312 01:06:20,043 --> 01:06:23,747 1313 01:06:23,747 --> 01:06:25,140 >> PUBBLICO: [INAUDIBLE] 1314 01:06:25,140 --> 01:06:26,151 >> DAVID MALAN: Nizza. 1315 01:06:26,151 --> 01:06:28,260 >> PUBBLICO: [INAUDIBLE] 1316 01:06:28,260 --> 01:06:30,850 >> DAVID MALAN: Nizza. 1317 01:06:30,850 --> 01:06:36,120 E ho intenzione di diminuire, e basta prendere cura di che non hai fatto errori di battitura. 1318 01:06:36,120 --> 01:06:39,390 E se sei a tuo agio con quello che hai fatto, 1319 01:06:39,390 --> 01:06:42,936 andare avanti e fare clic sul pulsante Esegui / Salva e vedere quello che si ottiene. 1320 01:06:42,936 --> 01:06:46,982 1321 01:06:46,982 --> 01:06:48,690 E ancora una volta, abbiamo fatto solo tre modifiche. 1322 01:06:48,690 --> 01:06:52,130 Abbiamo eliminato quel primo commentare e lo ha sostituito 1323 01:06:52,130 --> 01:06:53,575 con queste due linee di codice. 1324 01:06:53,575 --> 01:06:55,742 1325 01:06:55,742 --> 01:06:58,450 Ed è OK se avete bisogno di colpire il pulsante Esegui / Salva un paio di volte 1326 01:06:58,450 --> 01:07:01,190 a riparare qualcosa. 1327 01:07:01,190 --> 01:07:03,610 >> E lasciatemi anche lo zoom in sulla mia codice in modo da poter trascrivere. 1328 01:07:03,610 --> 01:07:04,110 Buona. 1329 01:07:04,110 --> 01:07:08,720 Così vedo Andrew ha quello sembra essere un errore. 1330 01:07:08,720 --> 01:07:11,110 Ha appena ottenuto un grande nero rettangolo sul suo schermo. 1331 01:07:11,110 --> 01:07:13,120 Qualcun altro ha un grande rettangolo nero? 1332 01:07:13,120 --> 01:07:13,390 >> Pubblico: Sì. 1333 01:07:13,390 --> 01:07:14,360 >> DAVID MALAN: Big rettangolo nero? 1334 01:07:14,360 --> 01:07:16,068 OK, quindi pensiamo su ciò che questo significa. 1335 01:07:16,068 --> 01:07:20,560 Abbiamo detto che lo zero, zero, zero, così non verde, non rosso, non blu, 1336 01:07:20,560 --> 01:07:21,980 sta per dare il nero. 1337 01:07:21,980 --> 01:07:24,467 E si scopre che la maggior parte dei nostri computer portatili 1338 01:07:24,467 --> 01:07:25,800 semplicemente non hanno abbastanza fedeltà. 1339 01:07:25,800 --> 01:07:27,750 Non si può dire del tutto lì è in realtà qualcosa c'è. 1340 01:07:27,750 --> 01:07:30,340 E se magari tipo di magra lo schermo in avanti e indietro, 1341 01:07:30,340 --> 01:07:32,850 forse si vede un qualcosa lì? 1342 01:07:32,850 --> 01:07:34,820 Forse, una sorta di, una sorta di? 1343 01:07:34,820 --> 01:07:36,640 Non è perfettamente nero. 1344 01:07:36,640 --> 01:07:38,050 >> PUBBLICO: [INAUDIBLE] 1345 01:07:38,050 --> 01:07:39,510 >> DAVID MALAN: Spoiler! 1346 01:07:39,510 --> 01:07:42,610 Vi è una certa rossa lì, ma ricordate dalle specifiche 1347 01:07:42,610 --> 01:07:44,940 del problema, Nick tonica giù. 1348 01:07:44,940 --> 01:07:47,860 Egli desaturated in qualche modo, ma non fino a zero. 1349 01:07:47,860 --> 01:07:51,670 Quindi, se vogliamo ingrandire l'importo di rosso, mi permetta di proporre questo trucco. 1350 01:07:51,670 --> 01:07:53,750 Mi permetta lo zoom in sul mio schermo. 1351 01:07:53,750 --> 01:07:58,678 E mi permetta di andare avanti e dire importo pari im.getRed (x, y). 1352 01:07:58,678 --> 01:08:02,440 1353 01:08:02,440 --> 01:08:05,790 >> Questa riga di codice mi sta dando una cosa chiamata una variabile. 1354 01:08:05,790 --> 01:08:09,643 Ho arbitrariamente, ma, senza dubbio, ragionevolmente chiamato la mia variabile cosa, 1355 01:08:09,643 --> 01:08:10,143 apparentemente? 1356 01:08:10,143 --> 01:08:13,530 1357 01:08:13,530 --> 01:08:14,340 Quantità. 1358 01:08:14,340 --> 01:08:14,980 importo Just. 1359 01:08:14,980 --> 01:08:16,960 Avrei potuto chiamato tutto quello che voglio, ma sono 1360 01:08:16,960 --> 01:08:19,490 utilizzare questa altra funzione che ho descritto in precedenza 1361 01:08:19,490 --> 01:08:25,359 per ottenere la quantità di rosso in x virgola y. 1362 01:08:25,359 --> 01:08:27,520 Perché l'ho fatto? 1363 01:08:27,520 --> 01:08:30,004 Cosa vuoi fare qui? 1364 01:08:30,004 --> 01:08:32,910 1365 01:08:32,910 --> 01:08:33,619 È necessario add-- 1366 01:08:33,619 --> 01:08:34,493 PUBBLICO: [INAUDIBLE] 1367 01:08:34,493 --> 01:08:36,279 DAVID MALAN: Sì, forse moltiplicarlo per 10. 1368 01:08:36,279 --> 01:08:38,862 E se non si conosce questo, sono intenzione di andare avanti e fare questo. 1369 01:08:38,862 --> 01:08:42,060 Ho intenzione di andare avanti e per esempio, voglio che la quantità di rosso 1370 01:08:42,060 --> 01:08:46,550 Voglio essere qualunque cosa è al rosso, tempi 10, 1371 01:08:46,550 --> 01:08:50,330 e la stella, l'asterisco sul tuo Tastiera è il-- non usano x. 1372 01:08:50,330 --> 01:08:51,569 Utilizzare la stella. 1373 01:08:51,569 --> 01:08:55,350 Ecco come si moltiplicano le cose nella maggior parte dei linguaggi di programmazione. 1374 01:08:55,350 --> 01:08:59,790 >> Quindi, secondo l'intuizione di Kareem, memorizzati in questa variabile denominata importo, 1375 01:08:59,790 --> 01:09:03,649 è quanto rosso voglio in posizione xy. 1376 01:09:03,649 --> 01:09:11,500 Come, ora, posso fare che Pixel avere quel numero? 1377 01:09:11,500 --> 01:09:12,859 Hai già fatto prima. 1378 01:09:12,859 --> 01:09:17,666 È possibile impostare il verde e la blu per nessun valore, a zero. 1379 01:09:17,666 --> 01:09:18,540 PUBBLICO: [INAUDIBLE] 1380 01:09:18,540 --> 01:09:20,040 DAVID MALAN: Sì, ben non si vuole che a 10. 1381 01:09:20,040 --> 01:09:21,460 È già fatto la matematica qui. 1382 01:09:21,460 --> 01:09:24,779 Quindi stiamo ottenendo il valore di rosso, che è un numero basso, presumibilmente. 1383 01:09:24,779 --> 01:09:26,180 Stiamo moltiplicando in crescita del 10. 1384 01:09:26,180 --> 01:09:29,139 Che cosa si vuole fare con l'importo variabile ora? 1385 01:09:29,139 --> 01:09:30,130 >> PUBBLICO: [INAUDIBLE] 1386 01:09:30,130 --> 01:09:30,880 >> DAVID MALAN: Nizza. 1387 01:09:30,880 --> 01:09:34,616 Così im.set-- cosa? 1388 01:09:34,616 --> 01:09:35,640 >> PUBBLICO: setRed. 1389 01:09:35,640 --> 01:09:39,760 >> DAVID MALAN: setRed, in posizione xy. 1390 01:09:39,760 --> 01:09:40,260 Sì. 1391 01:09:40,260 --> 01:09:41,200 E proprio valore. 1392 01:09:41,200 --> 01:09:44,257 In altre parole, una variabile è un segnaposto temporaneo 1393 01:09:44,257 --> 01:09:45,840 che si può mettere tutto quello che vuoi in. 1394 01:09:45,840 --> 01:09:48,680 Ci capita di essere messa a numero in esso, al momento. 1395 01:09:48,680 --> 01:09:51,569 Abbiamo moltiplicato dal 10 per renderlo più grande. 1396 01:09:51,569 --> 01:09:56,480 E ora sto sostituendo quella variabile come quella terzo argomento, o ingresso 1397 01:09:56,480 --> 01:09:57,810 per impostare rosso. 1398 01:09:57,810 --> 01:10:00,440 E così che, una volta finire che, e prendono atto 1399 01:10:00,440 --> 01:10:02,330 dei punti e virgola e le parentesi. 1400 01:10:02,330 --> 01:10:06,290 >> Andare avanti e fare clic eseguire / salvare di nuovo, e vi 1401 01:10:06,290 --> 01:10:10,690 dovrebbe vedere, magicamente, quello che era in realtà Là. [? Arwa,?] Che cosa c'è? 1402 01:10:10,690 --> 01:10:16,412 La Torre Eiffel a pieno titolo rosso, non del tutto buio. 1403 01:10:16,412 --> 01:10:17,870 dovrebbe essere più evidente ora, sì? 1404 01:10:17,870 --> 01:10:18,840 OK. 1405 01:10:18,840 --> 01:10:20,215 E Andrea, scatola non più nera? 1406 01:10:20,215 --> 01:10:21,090 PUBBLICO: [INAUDIBLE] 1407 01:10:21,090 --> 01:10:22,180 DAVID MALAN: Va bene. 1408 01:10:22,180 --> 01:10:23,610 Così mi terrò questo sullo schermo. 1409 01:10:23,610 --> 01:10:27,010 Se si vuole giocare con questo in seguito, io ricreare questo per voi. 1410 01:10:27,010 --> 01:10:29,140 Ma questo codice qui ha fatto esattamente questo. 1411 01:10:29,140 --> 01:10:31,460 Perché non facciamo un altro. 1412 01:10:31,460 --> 01:10:33,880 Mi permetta di scorrere leggermente verso il basso. 1413 01:10:33,880 --> 01:10:36,760 >> Quindi in questo caso, il proiettore in realtà non fare giustizia. 1414 01:10:36,760 --> 01:10:40,486 Ma sui vostri schermi, probabilmente avere una casella molto rosso e molto nero. 1415 01:10:40,486 --> 01:10:42,610 Anche questo è un puzzle che mostra qualcosa famoso. 1416 01:10:42,610 --> 01:10:44,193 Tuttavia, l'immagine è stata distorta. 1417 01:10:44,193 --> 01:10:47,740 La vera immagine, questa volta, è nei valori blu e verde. 1418 01:10:47,740 --> 01:10:51,820 Tuttavia, tutti sono stati divisi 20 così i valori sono molto piccole. 1419 01:10:51,820 --> 01:10:54,660 I valori rossi sono solo numeri casuali, rumore. 1420 01:10:54,660 --> 01:10:57,190 Annulla queste distorsioni per rivelare l'immagine vera. 1421 01:10:57,190 --> 01:10:59,200 >> Così Nick allora si dice cosa fare. 1422 01:10:59,200 --> 01:11:04,290 Impostare i valori di rosso a zero, e allora non rovinare quello che è. 1423 01:11:04,290 --> 01:11:07,110 Quindi moltiplicare il blu ed i valori verdi entro il 20. 1424 01:11:07,110 --> 01:11:09,820 Quindi è quasi il stesso programma come prima, 1425 01:11:09,820 --> 01:11:11,380 ma si sta invertendo il processo. 1426 01:11:11,380 --> 01:11:13,780 E io metterò il mio codice da prima sullo schermo in caso 1427 01:11:13,780 --> 01:11:16,650 si vuole fare riferimento ad essa o giocare ulteriormente con quello. 1428 01:11:16,650 --> 01:11:18,100 Mi permetta di zoom avanti su tale. 1429 01:11:18,100 --> 01:11:21,450 Ma l'immagine di rame risolvere puzzle, numero due. 1430 01:11:21,450 --> 01:11:37,623 1431 01:11:37,623 --> 01:11:40,580 >> PUBBLICO: [INAUDIBLE] 1432 01:11:40,580 --> 01:11:44,010 >> DAVID MALAN: OK, quindi questo mi non andare a dare come molti suggerimenti. 1433 01:11:44,010 --> 01:11:47,220 Così ho would-- oh, cerchiamo di vedere, si ha un errore di battitura qui. 1434 01:11:47,220 --> 01:11:49,621 Quindi ricorda, questo qui in realtà ha bisogno di andare lì. 1435 01:11:49,621 --> 01:11:52,870 Quindi quello che proporrei, se si desidera concentrarsi su questo, c'è la risposta. 1436 01:11:52,870 --> 01:11:57,060 Se si vuole trascrivere quello, che dovrebbe ottenere il primo lavoro. 1437 01:11:57,060 --> 01:11:59,910 E quindi è possibile utilizzare che come ispirazione per il secondo. 1438 01:11:59,910 --> 01:12:02,230 Bello. 1439 01:12:02,230 --> 01:12:02,730 Buona. 1440 01:12:02,730 --> 01:12:05,430 1441 01:12:05,430 --> 01:12:08,180 >> E per i curiosi, questo è un semplice esempio 1442 01:12:08,180 --> 01:12:11,080 di una scienza o di un'arte chiamata steganografia, 1443 01:12:11,080 --> 01:12:14,100 l'arte di nascondere le informazioni in immagini. 1444 01:12:14,100 --> 01:12:16,890 Tipicamente, le immagini potrebbero essere filigranata molto platealmente 1445 01:12:16,890 --> 01:12:19,500 con un logo sul fondo angolo, ma chiaramente, è 1446 01:12:19,500 --> 01:12:22,070 può essere molto più sofisticato su di esso e in realtà 1447 01:12:22,070 --> 01:12:25,050 nascondere altre immagini nelle immagini in qualche modo con questa tecnica. 1448 01:12:25,050 --> 01:12:59,890 1449 01:12:59,890 --> 01:13:05,770 >> Prendere un altro 30 secondi, e poi ci almeno annunciare quello che si dovrebbe vedere. 1450 01:13:05,770 --> 01:13:08,330 E vi lascio la terza uno come esercizio a casa, 1451 01:13:08,330 --> 01:13:11,353 se si desidera più di una sfidare questo fine settimana. 1452 01:13:11,353 --> 01:13:18,240 1453 01:13:18,240 --> 01:13:20,390 E penso che Andrew potrebbe hanno ottenuto prima. 1454 01:13:20,390 --> 01:13:22,645 Qual è la seconda immagine, Andrew? 1455 01:13:22,645 --> 01:13:23,920 >> AUDIENCE: Statua della Libertà. 1456 01:13:23,920 --> 01:13:28,500 >> DAVID MALAN: Statua della Libertà sarà la risposta questa volta. 1457 01:13:28,500 --> 01:13:31,140 Quindi, di nuovo, solo alcune semplici esempi, il cui obiettivo 1458 01:13:31,140 --> 01:13:35,040 è quello di dare un senso di come Abbiamo tradotto Scratch pittorica 1459 01:13:35,040 --> 01:13:40,410 blocchi di più fastidioso e più codice complicato, ma tutte le idee 1460 01:13:40,410 --> 01:13:42,980 sono ancora esattamente lo stesso, anche se con l'introduzione 1461 01:13:42,980 --> 01:13:48,380 Ora del concetto di una variabile, essendo in grado di memorizzare temporaneamente qualcosa. 1462 01:13:48,380 --> 01:13:51,750 >> Facciamo uno più hands-on, basta collegare ora i puntini 1463 01:13:51,750 --> 01:13:53,880 a qualcosa di un po 'di più del mondo reale. 1464 01:13:53,880 --> 01:13:56,610 Quando sei pronto, se potessi andare a questo URL sullo schermo. 1465 01:13:56,610 --> 01:14:00,610 Questo è anche nella vostra copia del scivoli, developers.google.com/maps~~V~~singular~~3rd. 1466 01:14:00,610 --> 01:14:03,660 Cerchiamo di fare qualcosa di concreto reali, per così dire, sul web 1467 01:14:03,660 --> 01:14:07,600 utilizzando l'API di Google Maps, o Interfaccia di programmazione applicazioni, 1468 01:14:07,600 --> 01:14:08,940 nel modo seguente. 1469 01:14:08,940 --> 01:14:12,341 >> Google, come molte aziende, fornisce un sacco di funzionalità libera 1470 01:14:12,341 --> 01:14:14,840 che è possibile utilizzare per costruire la vostra proprie applicazioni interessanti. 1471 01:14:14,840 --> 01:14:18,890 In realtà, se hai mai usato Uber per ottenere un taxi o una macchina, 1472 01:14:18,890 --> 01:14:21,640 Probabilmente sapete che Uber ha una mappa e mostra autoveicoli su di esso. 1473 01:14:21,640 --> 01:14:24,870 Cioè, come meglio posso dire, API di Google Maps. 1474 01:14:24,870 --> 01:14:28,884 Essi sono in realtà utilizzando le mappe di Google, ma Uber non è una società di mappatura, 1475 01:14:28,884 --> 01:14:31,050 né ciò sarebbe un problema particolarmente interessante 1476 01:14:31,050 --> 01:14:33,510 risolvere in cima alla loro problema servizio di auto. 1477 01:14:33,510 --> 01:14:35,510 E così stanno in piedi, di nuovo, sulle spalle 1478 01:14:35,510 --> 01:14:37,520 degli altri, Google in questo caso. 1479 01:14:37,520 --> 01:14:42,850 In modo da utilizzare le mappe di Google, ma proprio servizi di auto e altri tali caratteristiche. 1480 01:14:42,850 --> 01:14:47,770 >> Quindi stiamo andando a sfruttare di questo per fare quanto segue. 1481 01:14:47,770 --> 01:14:50,230 E se io sono andato troppo veloce, appena mi chiamano sopra in un attimo. 1482 01:14:50,230 --> 01:14:53,500 Felice di ricapitolare alcune delle cose dell'immagine. 1483 01:14:53,500 --> 01:14:56,290 Si dovrebbe vedere voi stessi in una pagina come questa. 1484 01:14:56,290 --> 01:14:58,230 Così bello di Google, e sono tra i migliori 1485 01:14:58,230 --> 01:15:01,364 di fornire non solo le API, ma API liberi che si 1486 01:15:01,364 --> 01:15:02,780 può giocare con o utilizzare commercialmente. 1487 01:15:02,780 --> 01:15:06,450 Essi cominciano si ricarica se l'utilizzo è alto, ma sono andato avanti in anticipo 1488 01:15:06,450 --> 01:15:10,490 e ci ha firmato per un account gratuito che, si spera, 10 computer 1489 01:15:10,490 --> 01:15:12,480 Non ci squalifica per un tratto. 1490 01:15:12,480 --> 01:15:14,320 Quindi spero che questo manifestazione funzionerà. 1491 01:15:14,320 --> 01:15:18,840 >> E notare che essi hanno API per Android, iOS, servizi web e web, 1492 01:15:18,840 --> 01:15:19,620 qualunque essa sia. 1493 01:15:19,620 --> 01:15:20,700 Concentriamoci sul web. 1494 01:15:20,700 --> 01:15:26,560 Quindi fare clic sulla casella rosa, web, e che vi condurrà, si spera, di una pagina 1495 01:15:26,560 --> 01:15:27,630 Qui. 1496 01:15:27,630 --> 01:15:29,335 E hanno un sacco di API. 1497 01:15:29,335 --> 01:15:31,210 E può essere un po ' travolgente in un primo momento, 1498 01:15:31,210 --> 01:15:33,000 ma io ci sarò guido attraverso quello che vogliamo. 1499 01:15:33,000 --> 01:15:38,500 >> In alto a sinistra è Google Maps JavaScript API, l'API JavaScript. 1500 01:15:38,500 --> 01:15:40,380 Quindi, andare avanti e fare clic su quello. 1501 01:15:40,380 --> 01:15:49,360 E che vi condurrà ora alla Nella pagina seguente, demo e codice di esempio. 1502 01:15:49,360 --> 01:15:51,190 Mi permetta di diminuire qui. 1503 01:15:51,190 --> 01:15:56,300 E mi permetta di ottenere noi a-- scorriamo per cui si dice fasi di avvio rapido. 1504 01:15:56,300 --> 01:15:57,970 Lo schermo dovrebbe apparire come il mio. 1505 01:15:57,970 --> 01:16:01,130 >> E ci sono due fasi, get una chiave e iniziare a sviluppare. 1506 01:16:01,130 --> 01:16:04,190 L'ho già fatto passo uno per noi, ottenendo una chiave cosiddetto. 1507 01:16:04,190 --> 01:16:05,320 E questa è una idea comune. 1508 01:16:05,320 --> 01:16:09,210 Una chiave API è generalmente solo un gran numero casuale o una stringa 1509 01:16:09,210 --> 01:16:11,130 che si suppone per incollare nel vostro codice, 1510 01:16:11,130 --> 01:16:15,280 in modo che Google sa chi sei quando si sta utilizzando il loro servizio, la loro API. 1511 01:16:15,280 --> 01:16:17,370 Non significa che siamo in carica nulla. 1512 01:16:17,370 --> 01:16:21,030 E ora, fare clic su, invece di uno, fare clic avviare lo sviluppo. 1513 01:16:21,030 --> 01:16:25,990 Se si può solo me onda oltre se non so dove siamo. 1514 01:16:25,990 --> 01:16:28,040 >> Quindi ci limiteremo a graffiare la di superficie, ma ciò che qui 1515 01:16:28,040 --> 01:16:31,000 Ho pensato che sarebbe stato interessante è di avere effettivamente tutti noi, 1516 01:16:31,000 --> 01:16:34,240 utilizzando Cloud9 in una finestra e questo tutorial in un'altra finestra, 1517 01:16:34,240 --> 01:16:37,120 lascia effettivamente ottenere il nostro applicazione installato e funzionante 1518 01:16:37,120 --> 01:16:40,920 che incorpora un costume di Google mappa nella nostra pagina web, 1519 01:16:40,920 --> 01:16:43,010 e poi aggiunge una o due caratteristiche. 1520 01:16:43,010 --> 01:16:45,520 Ma ci limiteremo a graffiare la superficie di ciò che possiamo fare. 1521 01:16:45,520 --> 01:16:47,020 >> Quindi, solo un controllo di integrità rapido. 1522 01:16:47,020 --> 01:16:49,740 E 'tutti in questa pagina, API di Google Maps JavaScript? 1523 01:16:49,740 --> 01:16:50,872 Dovrebbe dire iniziare. 1524 01:16:50,872 --> 01:16:53,330 Non abbiamo intenzione di passare attraverso il tutto con qualsiasi mezzo. 1525 01:16:53,330 --> 01:16:58,090 OK, in un'altra scheda, se non lo fai aprirlo, non andare in Cloud9 1526 01:16:58,090 --> 01:17:03,500 e farti a poco una nuova scheda, in ultima analisi. 1527 01:17:03,500 --> 01:17:11,070 Quindi, di nuovo, c9.io da ieri, c9.io, e basta creare un nuovo file. 1528 01:17:11,070 --> 01:17:13,500 E andare avanti e chiamata è tutto ciò che si desidera. 1529 01:17:13,500 --> 01:17:16,495 Ho chiamato il mio map.html. 1530 01:17:16,495 --> 01:17:17,870 Chiamatela tutto ciò che finisce in .html. 1531 01:17:17,870 --> 01:17:23,930 1532 01:17:23,930 --> 01:17:26,580 E si dovrebbe essere più o meno dove mi trovo in questo processo 1533 01:17:26,580 --> 01:17:31,470 con solo un prompt lampeggiante in un vuoto scheda denominata qualcosa come map.html. 1534 01:17:31,470 --> 01:17:35,808 1535 01:17:35,808 --> 01:17:38,148 O un file, nuovo file questa volta. 1536 01:17:38,148 --> 01:17:41,960 1537 01:17:41,960 --> 01:17:48,000 >> E ora, oltre al API di Google Maps JavaScript, 1538 01:17:48,000 --> 01:17:50,010 faremo saltare la lettura in tutto questo testo. 1539 01:17:50,010 --> 01:17:53,760 Ma si noti che mondo è ciao anzi in tutto il mondo, si vede ora. 1540 01:17:53,760 --> 01:17:58,020 Ciao mondo ha questo grande colorato esempio di un intero gruppo di HTML. 1541 01:17:58,020 --> 01:18:03,590 Vai avanti e copiare e incollare solo HTML, quindi dal tipo doc in alto 1542 01:18:03,590 --> 01:18:08,810 tutta la strada per il tag HTML vicino, andare avanti e copiare tutti che-- ancora una volta, 1543 01:18:08,810 --> 01:18:14,430 che è sotto il mondo ciao example-- e incollare che nella vostra scheda Cloud9, 1544 01:18:14,430 --> 01:18:17,996 così che ora il vostro schermo dovrebbe apparire più o meno come la mia. 1545 01:18:17,996 --> 01:18:22,280 1546 01:18:22,280 --> 01:18:24,520 >> E si può salvare, ma non caricarlo appena ancora. 1547 01:18:24,520 --> 01:18:26,290 Diamo prima un'occhiata a il codice e vedere se ci 1548 01:18:26,290 --> 01:18:29,110 non si può dedurre o imparare da quello che è Google 1549 01:18:29,110 --> 01:18:30,860 ha avuto noi ciecamente copia e incolla. 1550 01:18:30,860 --> 01:18:33,334 Vogliono solo per aiutare, letteralmente, iniziare bene, 1551 01:18:33,334 --> 01:18:35,500 ma non c'è molto complessità in realtà c'è. 1552 01:18:35,500 --> 01:18:40,100 1553 01:18:40,100 --> 01:18:42,210 Tutte le domande appena ancora? 1554 01:18:42,210 --> 01:18:43,790 Siamo sicuri di andare avanti? 1555 01:18:43,790 --> 01:18:44,330 OK. 1556 01:18:44,330 --> 01:18:46,800 >> Così in fretta, facciamo solo fare alcuni controlli di integrità rapidi. 1557 01:18:46,800 --> 01:18:48,800 Linea uno di quello che ho vedere, e si spera, si 1558 01:18:48,800 --> 01:18:51,710 Vedete, che cosa significa, DOCTYPE HTML? 1559 01:18:51,710 --> 01:18:52,385 Kareem, ricordare? 1560 01:18:52,385 --> 01:18:53,260 PUBBLICO: [INAUDIBLE] 1561 01:18:53,260 --> 01:18:53,968 DAVID MALAN: Sì. 1562 01:18:53,968 --> 01:18:54,870 Ecco che arriva HTML 5. 1563 01:18:54,870 --> 01:18:57,950 Nel frattempo, la linea due sulla schermata qui significa hey del browser, 1564 01:18:57,950 --> 01:18:59,482 ecco che arriva il codice HTML vero e proprio. 1565 01:18:59,482 --> 01:19:01,440 Linea tre è hey del browser, ecco che arriva la testa. 1566 01:19:01,440 --> 01:19:04,260 Linea quattro è, naturalmente, hey del browser, ecco che arriva il titolo. 1567 01:19:04,260 --> 01:19:07,780 Cosa fa la linea cinque fare? 1568 01:19:07,780 --> 01:19:09,930 In realtà, questo non fa davvero fare qualcosa per noi. 1569 01:19:09,930 --> 01:19:13,340 In questo caso, solo ridimensiona la pagina per un default. Linea di sei, 1570 01:19:13,340 --> 01:19:16,140 non abbiamo parlato, ma specifica la codifica dei caratteri. 1571 01:19:16,140 --> 01:19:19,181 Ci sono diversi modi per codificare i file, in particolare per le lingue straniere. 1572 01:19:19,181 --> 01:19:21,100 UTF-8 tende solo per essere il default. 1573 01:19:21,100 --> 01:19:26,580 >> Così ora vedremo in linea sette a 16, un po 'di CSS. 1574 01:19:26,580 --> 01:19:29,260 E anche se non abbiamo visto tutte queste cose prima, 1575 01:19:29,260 --> 01:19:30,810 possiamo tipo di inferire. 1576 01:19:30,810 --> 01:19:37,075 Così la linea otto mezzi, hey del browser, si applicano tutti i seguenti a cui due tag, 1577 01:19:37,075 --> 01:19:37,575 apparentemente? 1578 01:19:37,575 --> 01:19:40,650 1579 01:19:40,650 --> 01:19:41,701 L'HTML e corpo del testo. 1580 01:19:41,701 --> 01:19:43,200 Così la virgola è il nuovo cosa lì. 1581 01:19:43,200 --> 01:19:46,140 E questo è solo un modo di specificando più tag in una sola volta. 1582 01:19:46,140 --> 01:19:47,640 >> Poi abbiamo le parentesi graffe. 1583 01:19:47,640 --> 01:19:51,170 Quindi, apparentemente, questo dice al browser, rendere l'altezza della pagina 100%. 1584 01:19:51,170 --> 01:19:54,170 Quindi, anche se c'è molto poco contenuti, rendono l'intera pagina, 1585 01:19:54,170 --> 01:19:55,530 rendere la cosa riempire la pagina. 1586 01:19:55,530 --> 01:19:57,524 Rendere la mappa in ultima analisi, riempire la pagina. 1587 01:19:57,524 --> 01:19:58,690 Margine, che cosa significa? 1588 01:19:58,690 --> 01:20:01,559 Che di solito come arbitrario spazio bianco attorno ai bordi 1589 01:20:01,559 --> 01:20:04,350 che qualche progettista del browser solo deciso dovrebbe essere lì, perché 1590 01:20:04,350 --> 01:20:05,540 tipo di rende le cose sembrano più pulito. 1591 01:20:05,540 --> 01:20:06,498 Ma noi non vogliamo questo. 1592 01:20:06,498 --> 01:20:08,710 Vogliamo che la mappa che va fino ai bordi. 1593 01:20:08,710 --> 01:20:10,930 Imbottitura, simile nello spirito a margini. 1594 01:20:10,930 --> 01:20:14,980 Margini significano fuori, mezzi di imbottitura all'interno, ma è lo stesso tipo di accordo. 1595 01:20:14,980 --> 01:20:17,520 E 'un po' di un buffer tra voi e gli spigoli. 1596 01:20:17,520 --> 01:20:21,170 >> E poi la linea 13 è una buona occasione per una breve recensione. 1597 01:20:21,170 --> 01:20:26,440 Che cosa significa mappa segno tagliente significa, o una mappa hashtag significa? 1598 01:20:26,440 --> 01:20:29,650 Che cosa si riferiscono a, in linea di principio? 1599 01:20:29,650 --> 01:20:31,485 >> PUBBLICO: [INAUDIBLE] 1600 01:20:31,485 --> 01:20:32,360 DAVID MALAN: Esattamente. 1601 01:20:32,360 --> 01:20:36,900 Questa proprietà, questa proprietà CSS si applica a una sola cosa, il tag HTML 1602 01:20:36,900 --> 01:20:41,180 che ha un ID di citazione, unquote "mappa". 1603 01:20:41,180 --> 01:20:44,460 E adesso andiamo avanti veloce, scorrimento fino al fondo del file, che 1604 01:20:44,460 --> 01:20:49,860 Non è troppo lontano, e comunicazione on line 19, se si incolla esattamente come ho fatto io, 1605 01:20:49,860 --> 01:20:53,405 linea 19 ha solo un div, che è un divisione della pagina, che ieri ho 1606 01:20:53,405 --> 01:20:54,820 chiamato una regione rettangolare. 1607 01:20:54,820 --> 01:20:55,820 Non ha niente in esso. 1608 01:20:55,820 --> 01:20:57,550 Si tratta di un tag di apertura, chiusura tag. 1609 01:20:57,550 --> 01:20:59,490 Ma ha un ID univoco. 1610 01:20:59,490 --> 01:21:02,090 >> Quindi, quello che sembra essere accadendo qui è Google 1611 01:21:02,090 --> 01:21:05,880 sta preparando la nostra pagina web per avere una completa altezza 100%, 1612 01:21:05,880 --> 01:21:09,680 e senza imbottitura, senza margini, perché quello che stiamo andando a mettere dentro 1613 01:21:09,680 --> 01:21:13,647 di questo div, il cui ID univoco è map, è una mappa reale incorporato. 1614 01:21:13,647 --> 01:21:15,480 E vogliamo che riempire la pagina e non solo 1615 01:21:15,480 --> 01:21:17,560 essere qualche piccolo rettangolo nel mezzo. 1616 01:21:17,560 --> 01:21:24,220 Quindi la linea 14 sottolinea analogamente, la mappa stessa dovrebbe avere un'altezza di 100%. 1617 01:21:24,220 --> 01:21:29,220 >> Così ora notare tra le linee 20 e 28, questo è il codice JavaScript. 1618 01:21:29,220 --> 01:21:33,020 E questo è, anche se è sintatticamente un po 'strano, 1619 01:21:33,020 --> 01:21:34,730 non vi è tutto ciò che tanto sta succedendo qui. 1620 01:21:34,730 --> 01:21:39,310 In linea 21, questo sta dichiarando una cosa chiamata una variabile. 1621 01:21:39,310 --> 01:21:42,030 Invece di chiamarla ammonta, come abbiamo fatto prima, 1622 01:21:42,030 --> 01:21:44,500 stiamo più precisamente dicendo var, che significa semplicemente variabile. 1623 01:21:44,500 --> 01:21:46,520 Abbiamo potuto utilizzare che in codice di Nick, ma non l'ha fatto, così ho 1624 01:21:46,520 --> 01:21:48,190 Non ci ha dato fastidio a farlo neanche. 1625 01:21:48,190 --> 01:21:50,240 Si tratta di una variabile chiamata mappa, e poi c'è 1626 01:21:50,240 --> 01:21:53,360 una funzione che è a quanto pare chiamato initMap. 1627 01:21:53,360 --> 01:21:55,780 >> Quindi questo è come la nostra personalizzato pezzo di puzzle in Scratch. 1628 01:21:55,780 --> 01:21:58,830 Abbiamo creato un pezzo di funzionalità chiamata initMap, 1629 01:21:58,830 --> 01:22:00,980 e si può tipo di inferire cosa sta succedendo qui. 1630 01:22:00,980 --> 01:22:02,930 Sul lato sinistro, abbiamo una variabile, 1631 01:22:02,930 --> 01:22:06,000 così stiamo andando a mettere il seguente cosa dentro quella variabile, 1632 01:22:06,000 --> 01:22:07,362 da destra a sinistra. 1633 01:22:07,362 --> 01:22:11,940 Il lato destro dice: hey del browser, dammi una nuova mappa di Google. 1634 01:22:11,940 --> 01:22:16,490 E google.maps.map è solo un modo funky di specificare che questa funzionalità 1635 01:22:16,490 --> 01:22:19,790 appartiene a Google Maps. 1636 01:22:19,790 --> 01:22:23,010 >> Dopo le parentesi, che abbiamo visto questo prima, hey del browser, ottiene 1637 01:22:23,010 --> 01:22:29,210 me gli elementi della pagina, il tag nella pagina il cui unico ID è-- 1638 01:22:29,210 --> 01:22:30,710 >> PUBBLICO: [INAUDIBLE] 1639 01:22:30,710 --> 01:22:31,790 >> DAVID MALAN: --map. 1640 01:22:31,790 --> 01:22:35,770 E quello che sta succedendo, bene, questa linea insieme, linea 23, 1641 01:22:35,770 --> 01:22:38,630 è essenzialmente dicendo: hey del browser, andare a prendere me 1642 01:22:38,630 --> 01:22:42,800 che div vuoto sulla pagina il cui ID univoco è mappa, 1643 01:22:42,800 --> 01:22:45,600 perché voglio inserire in it-- iniettare in esso, 1644 01:22:45,600 --> 01:22:49,520 Se si will-- un intero gruppo di contenuti che sembra essere provenienti dal web, 1645 01:22:49,520 --> 01:22:50,427 successivamente. 1646 01:22:50,427 --> 01:22:52,010 E Google sta facendo tutto questo per noi. 1647 01:22:52,010 --> 01:22:55,350 >> Quindi, di nuovo, alla fine della giornata, abbiamo questo esempio di astrazione. 1648 01:22:55,350 --> 01:22:58,610 Non ho idea di quello che una mappa è o come implementare una mappa API. 1649 01:22:58,610 --> 01:22:59,460 Non abbiamo bisogno di. 1650 01:22:59,460 --> 01:23:02,740 Abbiamo solo bisogno di raccontare la mappa dove mettere se stessa, e lasciare 1651 01:23:02,740 --> 01:23:04,880 quelli alla base della realizzazione Dettagli a Google. 1652 01:23:04,880 --> 01:23:08,190 Ora c'è a quanto pare due dati 1653 01:23:08,190 --> 01:23:11,940 che questo esempio è fornendo alle API di Google. 1654 01:23:11,940 --> 01:23:16,450 Apparentemente il centro della mappa, e il livello di zoom, per così dire. 1655 01:23:16,450 --> 01:23:21,390 >> E qualcuno riconosce questi coordinate, latitudine e longitudine? 1656 01:23:21,390 --> 01:23:24,364 Probabilmente no, ma possiamo tornare indietro al tutorial, letteralmente vedere. 1657 01:23:24,364 --> 01:23:25,780 Ma vedremo che in un attimo. 1658 01:23:25,780 --> 01:23:29,880 Livello di zoom è un valore compreso tra, non lo faccio conoscere, uno in 13 o qualcosa del genere. 1659 01:23:29,880 --> 01:23:32,880 Ha semplicemente a che fare con quanto lontano sei ingrandito dentro o fuori, e questo è tutto. 1660 01:23:32,880 --> 01:23:35,690 E ora alla fine del Nella pagina, linea di comunicazione 29-- 1661 01:23:35,690 --> 01:23:39,960 è un po 'brutto perché si wraps-- questa riga di codice 1662 01:23:39,960 --> 01:23:44,570 è ciò che scarica al il browser API reale di Google. 1663 01:23:44,570 --> 01:23:47,500 Tutto il codice che Google Gli ingegneri hanno scritto che implementano 1664 01:23:47,500 --> 01:23:50,000 tutta questa caratteristica di mappe integrabili. 1665 01:23:50,000 --> 01:23:51,470 >> Ora cerchiamo di non cambiare nulla. 1666 01:23:51,470 --> 01:23:54,761 Se si sta seguendo, andare avanti e basta salvare il file, se avete davvero 1667 01:23:54,761 --> 01:23:55,760 ciò che ho. 1668 01:23:55,760 --> 01:23:57,370 Vai a suo URL. 1669 01:23:57,370 --> 01:23:59,820 È possibile fare clic sul pulsante Esegui sulla parte superiore e che vi dirà 1670 01:23:59,820 --> 01:24:03,050 la URL del server web di nuovo. 1671 01:24:03,050 --> 01:24:06,010 E ti porterà ad una nuova scheda. 1672 01:24:06,010 --> 01:24:11,910 Se si sceglie Apri per map.html, e le probabilità sono sei 1673 01:24:11,910 --> 01:24:15,520 andando ad ottenere un avviso, un messaggio di errore, sì? 1674 01:24:15,520 --> 01:24:18,570 Messaggio di errore, messaggio di errore? 1675 01:24:18,570 --> 01:24:21,170 >> Così, purtroppo, l'errore messaggio non è che illuminante 1676 01:24:21,170 --> 01:24:23,890 a meno che effettivamente apre la console, quella scheda speciale che abbiamo 1677 01:24:23,890 --> 01:24:27,110 mantenuto l'apertura di ieri e un po 'prima di oggi. 1678 01:24:27,110 --> 01:24:29,445 Ma mi sono imbattuto questa prima, così ho già 1679 01:24:29,445 --> 01:24:30,820 capito quale sia la soluzione. 1680 01:24:30,820 --> 01:24:34,440 In diapositive di oggi, o piuttosto, in Cloud9, avviso 1681 01:24:34,440 --> 01:24:36,430 che non abbiamo fatto qualcosa deliberatamente. 1682 01:24:36,430 --> 01:24:40,690 Si noti che questo tag script linea 29, se si leggono attraverso di essa, 1683 01:24:40,690 --> 01:24:44,440 è come maps.googleapis.com/ qualcosa, qualcosa, qualcosa, 1684 01:24:44,440 --> 01:24:46,430 poi notare qualcuno, uno degli sviluppatori, 1685 01:24:46,430 --> 01:24:50,040 ha scritto in tutto il capitale lettere, la chiave API. 1686 01:24:50,040 --> 01:24:51,700 >> Abbiamo bisogno di incollare qualcosa in là. 1687 01:24:51,700 --> 01:24:53,450 E questo è stato il passo L'ho fatto per noi prima, 1688 01:24:53,450 --> 01:24:57,190 e di nuovo si potrebbe lista nera se improvvisamente, 12 o più di noi 1689 01:24:57,190 --> 01:24:59,470 iniziare a utilizzare la stessa chiave, ma vediamo cosa succede. 1690 01:24:59,470 --> 01:25:03,030 Quindi, se si va in oggi scivoli, una diapositiva in seguito, c'è 1691 01:25:03,030 --> 01:25:07,070 questa stringa molto funky-alla ricerca di testo. 1692 01:25:07,070 --> 01:25:12,230 Vai avanti e basta copiare e che incollarlo dove si dice la vostra chiave API. 1693 01:25:12,230 --> 01:25:15,120 Questo è quello che ho firmato per. 1694 01:25:15,120 --> 01:25:17,700 >> E sicuramente non provare digitando manualmente, 1695 01:25:17,700 --> 01:25:21,210 perché si sente irto con errori di battitura, potenzialmente. 1696 01:25:21,210 --> 01:25:23,260 Quindi, basta copiare e incollare questo. 1697 01:25:23,260 --> 01:25:26,090 E sta andando a fare la linea più a lungo, ma ora, tanto per essere chiari, 1698 01:25:26,090 --> 01:25:29,540 dovrebbe apparire un po 'più come questo, dove la chiave non è uguale 1699 01:25:29,540 --> 01:25:32,200 capitalizzato urlare contro di voi. 1700 01:25:32,200 --> 01:25:34,810 Salvare la pagina, tornare indietro per l'altra scheda, ricaricare, 1701 01:25:34,810 --> 01:25:36,770 e la speranza di vedere una mappa di dove? 1702 01:25:36,770 --> 01:25:37,790 >> PUBBLICO: l'Australia. 1703 01:25:37,790 --> 01:25:38,748 >> DAVID MALAN: l'Australia. 1704 01:25:38,748 --> 01:25:41,200 Quindi, a quanto pare questi sono i Le coordinate GPS per l'Australia. 1705 01:25:41,200 --> 01:25:44,491 E mi permetta di camminare per un attimo e aiutare chi non è proprio lì, 1706 01:25:44,491 --> 01:25:47,729 ma mi permetta di proporre, tramite Google, trovare le coordinate GPS della propria città natale 1707 01:25:47,729 --> 01:25:48,770 o il proprio paese di origine. 1708 01:25:48,770 --> 01:25:51,436 E probabilmente Google può trasformare questo up, o Wikipedia può dire. 1709 01:25:51,436 --> 01:25:54,410 Ma scegliere due valori differenti per latitudine e longitudine, 1710 01:25:54,410 --> 01:25:57,530 tornare indietro e incollarli, e poi ricaricare la pagina dopo il salvataggio 1711 01:25:57,530 --> 01:26:00,718 e vedere se si può avere un mappa per la propria città natale. 1712 01:26:00,718 --> 01:26:04,500 1713 01:26:04,500 --> 01:26:08,042 >> E quando hai finito con che, il follow-up challenge-- 1714 01:26:08,042 --> 01:26:11,250 e io ti do un po 'meno la direzione, deliberatamente, in modo che sia deliberatamente 1715 01:26:11,250 --> 01:26:13,791 devono lottare per una coppia minuti con la documentazione, 1716 01:26:13,791 --> 01:26:18,740 cambiare la mappa per non essere presente predefinito cartone animato, ma una mappa satellitare. 1717 01:26:18,740 --> 01:26:24,600 Quindi, in realtà si vede satellitare le immagini al posto dei bei colori. 1718 01:26:24,600 --> 01:26:29,710 >> E il suggerimento ti darò è cambiare il tipo di mappa. 1719 01:26:29,710 --> 01:26:33,084 Torna a che ottenere ha iniziato la pagina per l'ispirazione. 1720 01:26:33,084 --> 01:26:40,599 1721 01:26:40,599 --> 01:26:42,390 Come avrete raccolte, se siete alla ricerca, 1722 01:26:42,390 --> 01:26:44,250 ci sono così molti di più cose che puoi fare. 1723 01:26:44,250 --> 01:26:46,380 Alcuni di voi hanno già cambiato il tipo di mappa. 1724 01:26:46,380 --> 01:26:49,890 Ma si può fare-- per esempio, mi permetta andare a qualcosa che abbiamo fatto per il corso 1725 01:26:49,890 --> 01:26:52,050 I teach-- maps.cs50.net. 1726 01:26:52,050 --> 01:26:53,470 Uno dei nostri undergrads ha fatto questo. 1727 01:26:53,470 --> 01:26:58,890 Centriamo la nostra mappa sopra Harvard Yard e sovrapporre tutti questi nomi costruzione, 1728 01:26:58,890 --> 01:27:01,070 e abbiamo avuto lo aggiungere questo. 1729 01:27:01,070 --> 01:27:04,270 Quindi, se voglio cercare, per esempio, Matthews Hall, 1730 01:27:04,270 --> 01:27:05,730 abbiamo un piccolo menu a discesa. 1731 01:27:05,730 --> 01:27:09,080 E penso che sta usando Bootstrap, la biblioteca abbiamo discusso in precedenza per questo. 1732 01:27:09,080 --> 01:27:12,190 E se si fa clic su Matthews Hall, subito 1733 01:27:12,190 --> 01:27:14,790 salta la mappa per una certa posizione, e si vede 1734 01:27:14,790 --> 01:27:16,440 un quadro in questo piccolo pop-up. 1735 01:27:16,440 --> 01:27:18,670 >> Ma anche questo piccolo pop-up, che non ha attuato. 1736 01:27:18,670 --> 01:27:27,521 Se ho scorrere verso il basso il nostro ottenere iniziato pagina e cercare finestre informative, 1737 01:27:27,521 --> 01:27:29,770 vedrai che alcuni dei funzionalità voi stessi 1738 01:27:29,770 --> 01:27:31,561 può aggiungere, anche se con un po 'maggiore complessità, 1739 01:27:31,561 --> 01:27:33,970 è qualcosa che si chiama una finestra di informazioni. 1740 01:27:33,970 --> 01:27:37,190 E se clicco un esempio qui, e questo è ciò che è divertente, 1741 01:27:37,190 --> 01:27:40,530 si possono fare cose come questa, Cliccando su un marcatore e poi voilà, 1742 01:27:40,530 --> 01:27:42,400 Informazioni si apre. 1743 01:27:42,400 --> 01:27:45,874 >> Quindi non abbiamo ancora introdotto caratteristiche abbastanza di JavaScript 1744 01:27:45,874 --> 01:27:49,040 a dipingere un quadro di esattamente come si potrebbe collegare tutte queste cose insieme, 1745 01:27:49,040 --> 01:27:50,706 ma abbiamo tipo di scalfito la superficie. 1746 01:27:50,706 --> 01:27:53,140 In realtà, quello che ho appena fatto quando Ho cliccato su quel marcatore, 1747 01:27:53,140 --> 01:27:55,819 è stato dell'attivazione di un evento, un cosiddetta su evento click. 1748 01:27:55,819 --> 01:27:57,610 E in realtà abbiamo visto un evento prima di oggi, 1749 01:27:57,610 --> 01:28:00,670 la cosiddetta presentare evento, quando ci impedivano 1750 01:28:00,670 --> 01:28:02,490 l'utente dalla ricerca per i gatti. 1751 01:28:02,490 --> 01:28:06,560 Per questo abbiamo scelto di genere e preferito stare tra tutte queste varie caratteristiche, 1752 01:28:06,560 --> 01:28:08,990 per dare un senso, si spera, di ciò che si può effettivamente 1753 01:28:08,990 --> 01:28:11,000 fare con un po 'di più comfort in programmazione, 1754 01:28:11,000 --> 01:28:12,587 e risorse completamente gratuito. 1755 01:28:12,587 --> 01:28:15,856 1756 01:28:15,856 --> 01:28:18,770 >> Qualsiasi domanda? 1757 01:28:18,770 --> 01:28:19,790 No? 1758 01:28:19,790 --> 01:28:22,542 Questa è la tua occasione finale, almeno oggi, di Venerdì, 1759 01:28:22,542 --> 01:28:25,000 per ottenere qualcosa dal petto in modo che si cammina fuori di qui 1760 01:28:25,000 --> 01:28:27,067 sentirsi sicuri e confortevoli. 1761 01:28:27,067 --> 01:28:27,566 Sì. 1762 01:28:27,566 --> 01:28:29,740 >> PUBBLICO: Perché non fare si aggiunge una cosa? 1763 01:28:29,740 --> 01:28:32,720 >> DAVID MALAN: Oh mio Dio. 1764 01:28:32,720 --> 01:28:35,260 Ho bisogno di riposare in questo fine settimana, penso. 1765 01:28:35,260 --> 01:28:36,180 Altre domande? 1766 01:28:36,180 --> 01:28:37,055 >> PUBBLICO: [INAUDIBLE] 1767 01:28:37,055 --> 01:28:44,130 1768 01:28:44,130 --> 01:28:46,810 >> DAVID MALAN: È can-- in Internet Explorer, riposa in pace, 1769 01:28:46,810 --> 01:28:49,310 hai utilizzato per essere in grado di mettere VB lo script, script di base virtuale, 1770 01:28:49,310 --> 01:28:50,643 ma che in realtà mai preso piede. 1771 01:28:50,643 --> 01:28:52,490 Quindi la risposta breve è solo JavaScript. 1772 01:28:52,490 --> 01:28:55,144 1773 01:28:55,144 --> 01:28:55,810 Altre domande? 1774 01:28:55,810 --> 01:28:58,427 1775 01:28:58,427 --> 01:28:59,760 Va bene, bene, mi permetta di fare questo. 1776 01:28:59,760 --> 01:29:02,070 Mi permetta di afferrare i nostri colleghi al di fuori. 1777 01:29:02,070 --> 01:29:04,500 Hanno qualche valutazione forme che vogliono tutti 1778 01:29:04,500 --> 01:29:06,310 per trascorrere qualche minuto la compilazione. 1779 01:29:06,310 --> 01:29:08,775 Vogliono raccogliere quella forma e di qualsiasi rinunce che si possa avere al di fuori. 1780 01:29:08,775 --> 01:29:10,240 Potranno, inoltre, certificati. 1781 01:29:10,240 --> 01:29:12,380 Sto indovinando non c'è ancora qualche snack al di fuori. 1782 01:29:12,380 --> 01:29:14,360 Lasciami passare questi fuori, e se si Per qualsiasi domanda nel frattempo, 1783 01:29:14,360 --> 01:29:17,120 Io vado in giro più individuale e possiamo iniziare. 1784 01:29:17,120 --> 01:29:17,879 Sì, naturalmente. 1785 01:29:17,879 --> 01:29:18,754 PUBBLICO: [INAUDIBLE] 1786 01:29:18,754 --> 01:29:26,737 1787 01:29:26,737 --> 01:29:28,570 DAVID MALAN: Ecco di solito vero in questi giorni. 1788 01:29:28,570 --> 01:29:30,730 Certamente con il web software, che vi state inclinando 1789 01:29:30,730 --> 01:29:32,901 su altri sei o esteticamente con le cose 1790 01:29:32,901 --> 01:29:35,400 come Bootstrap, in modo da non necessario implementare il livello basso 1791 01:29:35,400 --> 01:29:37,169 dettagli del menu e bottoni e tutto il resto. 1792 01:29:37,169 --> 01:29:39,210 Si sta appoggiato a qualcuno come Google in modo da 1793 01:29:39,210 --> 01:29:42,050 non c'è bisogno di costruire un Uber affari e un business mappatura, 1794 01:29:42,050 --> 01:29:44,850 e qualsiasi numero di simile applicazioni. 1795 01:29:44,850 --> 01:29:46,350 >> In realtà, gli accessi sono molto popolari, anche. 1796 01:29:46,350 --> 01:29:48,500 Se hai utilizzato o Spotify qualsiasi numero di siti web, 1797 01:29:48,500 --> 01:29:51,210 si accede a un certo siti web utilizzando Facebook. 1798 01:29:51,210 --> 01:29:53,350 Quindi, ciò che è bello, ci sono API per gli account di accesso 1799 01:29:53,350 --> 01:29:56,570 al giorno d'oggi, in modo che non si dispone di avere la propria tabella utenti 1800 01:29:56,570 --> 01:29:59,440 e tutto il proprio database necessariamente nella stessa misura. 1801 01:29:59,440 --> 01:30:01,795 È possibile lasciare che Facebook faccia tutto di tale complessità per voi. 1802 01:30:01,795 --> 01:30:03,920 Quindi è un momento emozionante, onestamente, in programmazione, 1803 01:30:03,920 --> 01:30:07,200 perché ci sono così tanti di terze parti servizi che è possibile costruire in cima. 1804 01:30:07,200 --> 01:30:10,890 >> E ancora, il prezzo da pagare è sia finanziaria o downtime. 1805 01:30:10,890 --> 01:30:13,750 Se Google va giù, così fa Uber, senza dubbio, 1806 01:30:13,750 --> 01:30:15,690 ma forse questo è un ragionevole compromesso. 1807 01:30:15,690 --> 01:30:18,040 E ancora una volta, che è stato uno dei temi, si spera, da un paio di giorni, 1808 01:30:18,040 --> 01:30:18,780 è questi compromessi. 1809 01:30:18,780 --> 01:30:20,738 E raramente c'è in corso essere una risposta giusta. 1810 01:30:20,738 --> 01:30:25,700 E 'davvero il meglio di due o più risposte. 1811 01:30:25,700 --> 01:30:26,682 >> Passare questi intorno. 1812 01:30:26,682 --> 01:30:36,830 1813 01:30:36,830 --> 01:30:41,110 >> E questi conti Cloud9 continueranno al lavoro, in teoria, in perpetuo. 1814 01:30:41,110 --> 01:30:45,000 Si potrebbe trovare se si aspetta un paio di giorni o una settimana o più per accedere di nuovo in loro, 1815 01:30:45,000 --> 01:30:49,170 potrebbe prendere come uno o cinque minuti per aprire il backup, 1816 01:30:49,170 --> 01:30:54,090 ma questo è solo perché hanno messo a dormire per risparmiare sulle risorse. 1817 01:30:54,090 --> 01:31:10,527