1 00:00:00,000 --> 00:00:02,964 2 00:00:02,964 --> 00:00:05,434 >> [GIOCO MUSIC] 3 00:00:05,434 --> 00:00:11,825 4 00:00:11,825 --> 00:00:12,700 HANNAH: Hi, everyone. 5 00:00:12,700 --> 00:00:15,866 Grazie ragazzi tanto per uscire nel tempo disgustoso per un quiz 6 00:00:15,866 --> 00:00:16,910 rivedere sessione. 7 00:00:16,910 --> 00:00:20,020 Come voi sapete, quiz uno è questo Mercoledì. 8 00:00:20,020 --> 00:00:22,209 Quindi stiamo andando andare attraverso un mazzo di argomenti. 9 00:00:22,209 --> 00:00:24,000 DAVIN: Hey, posso dire qualcosa di reale veloce? 10 00:00:24,000 --> 00:00:25,215 HANNAH: Sì, Davin sta andando per dire qualcosa di reale veloce. 11 00:00:25,215 --> 00:00:25,780 DAVIN: Siamo spiacenti. 12 00:00:25,780 --> 00:00:29,490 Proprio reale veloce, se avete domande circa il quiz, si può andare online. 13 00:00:29,490 --> 00:00:32,420 Vai al 2014 quiz uno, per il quiz. 14 00:00:32,420 --> 00:00:34,680 E 'ottenuto logistica su dove andare, quando andare. 15 00:00:34,680 --> 00:00:38,100 Se siete iscritti contemporaneamente, siamo intenzione di avere un quiz trucco alle 5:30. 16 00:00:38,100 --> 00:00:40,350 Oppure, se tu mi hai mandato un problema, hai qualche altro problema. 17 00:00:40,350 --> 00:00:42,640 Ma 05:30 è il make-up tempo il Mercoledì. 18 00:00:42,640 --> 00:00:44,540 Ma se avete domande, domande generali, 19 00:00:44,540 --> 00:00:45,748 online ha tutta la logistica. 20 00:00:45,748 --> 00:00:47,690 Così verificare per primi. 21 00:00:47,690 --> 00:00:49,070 >> HANNAH: Awesome. 22 00:00:49,070 --> 00:00:53,030 Quindi, ecco la grande elenco di argomenti che stiamo per passare attraverso di oggi. 23 00:00:53,030 --> 00:00:57,390 Sto andando a coprire tutte le C roba, che è quella prima colonna. 24 00:00:57,390 --> 00:01:00,710 Così la roba C che abbiamo coperto dopo quiz zero. 25 00:01:00,710 --> 00:01:05,459 Partendo da una lista collegata, che include i puntatori. 26 00:01:05,459 --> 00:01:07,668 >> Va bene, quindi abbiamo visto questo nell'ultima sessione di revisione, 27 00:01:07,668 --> 00:01:10,000 così ho intenzione di passare attraverso questo è un po 'più veloce. 28 00:01:10,000 --> 00:01:13,500 Basta alzare la mano se mi vuoi rallentare o affrontare ulteriormente qualcosa. 29 00:01:13,500 --> 00:01:17,150 Ma usiamo legati liste perché abbiamo iniziato in C con gli array. 30 00:01:17,150 --> 00:01:20,920 E array sono grandi, ma la problema è che hanno una dimensione fissa. 31 00:01:20,920 --> 00:01:24,925 Le liste concatenate ci permettono di creare dimensionata dinamicamente strutture di dati. 32 00:01:24,925 --> 00:01:28,520 33 00:01:28,520 --> 00:01:32,320 >> E noi abbiamo le nostre operazioni di base, inserire, eliminare e cercare. 34 00:01:32,320 --> 00:01:36,780 E possiamo fare inserto in caso peggiore tempo costante 35 00:01:36,780 --> 00:01:39,140 se abbiamo appena messo proprio all'inizio. 36 00:01:39,140 --> 00:01:45,220 Cancellare e consultare, peggiore caso grande oh di tempo n. 37 00:01:45,220 --> 00:01:47,140 Quindi, di nuovo, basta capovolgere attraverso queste immagini, 38 00:01:47,140 --> 00:01:50,860 So che abbiamo visto questi l'ultima volta, ma abbiamo vuole tenere traccia della nostra lista collegata 39 00:01:50,860 --> 00:01:53,440 tenendo traccia della capo della nostra lista collegata. 40 00:01:53,440 --> 00:01:55,580 Perché sappiamo che ciascuno dei nostri nodi 41 00:01:55,580 --> 00:01:58,610 sta solo andando a puntare al nodo successivo nella nostra lista collegata. 42 00:01:58,610 --> 00:02:00,460 >> Ecco come teniamo traccia. 43 00:02:00,460 --> 00:02:02,910 Anche se questi non sono continue pezzi di memoria, 44 00:02:02,910 --> 00:02:07,410 li possiamo trovare da solo seguendo le frecce differenti. 45 00:02:07,410 --> 00:02:09,800 Qui è la nostra struttura per un nodo lista collegata. 46 00:02:09,800 --> 00:02:11,440 Lo abbiamo visto l'ultima volta. 47 00:02:11,440 --> 00:02:13,080 Abbiamo il nostro nodo struct. 48 00:02:13,080 --> 00:02:14,340 E ha due proprietà. 49 00:02:14,340 --> 00:02:17,020 Numero uno, l'attuale valore che desidera memorizzare. 50 00:02:17,020 --> 00:02:18,290 In questo caso, è un numero intero. 51 00:02:18,290 --> 00:02:21,100 Potrebbe essere una stringa, potrebbe essere un char, quello che volete. 52 00:02:21,100 --> 00:02:24,710 E poi, dobbiamo tenere traccia di il nodo successivo nella nostra lista collegata. 53 00:02:24,710 --> 00:02:29,797 In modo che sara 'un puntatore al nodo successivo. 54 00:02:29,797 --> 00:02:31,880 Se stavi solo facendo Ricerca, come ho detto prima, 55 00:02:31,880 --> 00:02:34,900 dovreste seguire le frecce verso il basso. 56 00:02:34,900 --> 00:02:40,720 Inserimento, si dovrebbe tenere traccia di dove il resto della vostra lista è. 57 00:02:40,720 --> 00:02:44,150 E si desidera reindirizzare la testa per puntare al nostro nuovo elemento, che 58 00:02:44,150 --> 00:02:46,640 in questo caso è uno, e poi uno punterà 59 00:02:46,640 --> 00:02:49,480 per il resto della lista collegata. 60 00:02:49,480 --> 00:02:52,996 Così ancora una volta, so che questo è un po ' bit di una ripetizione di quiz zero. 61 00:02:52,996 --> 00:02:55,370 Quindi dobbiamo stare molto attenti sull'ordine in cui 62 00:02:55,370 --> 00:03:00,390 fare queste puntamenti quindi non lo facciamo perdere la traccia della schiena della lista. 63 00:03:00,390 --> 00:03:04,122 OK, tutte le domande con basta semplicemente concatenata liste? 64 00:03:04,122 --> 00:03:06,060 Impressionante, OK, fresco. 65 00:03:06,060 --> 00:03:09,410 >> Così ora, stiamo per andare su qualcosa solo leggermente più complicato, 66 00:03:09,410 --> 00:03:10,920 doppiamente legata liste. 67 00:03:10,920 --> 00:03:13,680 Quindi, oltre a mantenere traccia del nodo successivo, 68 00:03:13,680 --> 00:03:16,220 vogliamo anche tenere traccia del nodo precedente. 69 00:03:16,220 --> 00:03:19,580 E questo ci permette di, se siamo ad un certo punto della nostra lista collegata, 70 00:03:19,580 --> 00:03:23,110 non solo andare avanti, ma anche scorrere all'indietro. 71 00:03:23,110 --> 00:03:25,220 Perché, come abbiamo visto in una lista concatenata, 72 00:03:25,220 --> 00:03:27,980 se fossimo in qualche nodo, e tutto ad un tratto, abbiamo deciso, 73 00:03:27,980 --> 00:03:30,160 in realtà, io voglio andare a il diritto nodo prima di me, 74 00:03:30,160 --> 00:03:32,034 dovresti andare tutti la via del ritorno alla testa 75 00:03:32,034 --> 00:03:35,710 e scorrere fino a quando non ha trovato il nodo che stavi cercando. 76 00:03:35,710 --> 00:03:37,680 >> Quindi questo rende le cose leggermente più facile come siamo 77 00:03:37,680 --> 00:03:39,670 cercando di iterare attraverso la nostra lista collegata. 78 00:03:39,670 --> 00:03:47,870 Ma ci impone di tenere traccia di un più puntatore, quindi un altro nodo stella. 79 00:03:47,870 --> 00:03:50,830 Va bene, ecco arriva la parte divertente. 80 00:03:50,830 --> 00:03:55,600 Stiamo andando alla pratica attuazione rimuovere per le liste doppiamente collegate. 81 00:03:55,600 --> 00:03:58,660 Quindi questo è qualcosa che è gioco completamente equo per il quiz. 82 00:03:58,660 --> 00:04:00,750 Si presentò a quiz del passato. 83 00:04:00,750 --> 00:04:04,220 Quindi sicuramente essere pronti codificare un po 'in C. 84 00:04:04,220 --> 00:04:07,900 Non dimenticare che con tutta questo divertente PHP e JavaScript, 85 00:04:07,900 --> 00:04:10,560 dobbiamo ancora ricordare fare C. Quindi rispolverare quella 86 00:04:10,560 --> 00:04:12,146 se ti senti arrugginito. 87 00:04:12,146 --> 00:04:14,580 >> Va bene, vediamo se possiamo farlo. 88 00:04:14,580 --> 00:04:16,312 OK, fresco. 89 00:04:16,312 --> 00:04:18,600 Quindi stiamo andando a provare modificare proprio qui, 90 00:04:18,600 --> 00:04:20,707 e spero che questo va come previsto. 91 00:04:20,707 --> 00:04:23,915 Va bene, qualcuno vuole darmi un suggerimento su come dovrei cominciare? 92 00:04:23,915 --> 00:04:27,030 L'unica ipotesi che sono fare è che ho già 93 00:04:27,030 --> 00:04:30,180 hanno una struttura definita, la quello che ho mostrato nell'ultima pagina, 94 00:04:30,180 --> 00:04:31,420 sull'ultima diapositiva. 95 00:04:31,420 --> 00:04:39,250 E sto memorizzare la testa del mio legato Lista in qualche puntatore chiamato lista. 96 00:04:39,250 --> 00:04:42,190 Qualcuno vuole farmi iniziare? 97 00:04:42,190 --> 00:04:45,410 >> AUDIENCE: Puoi creare un nuovo nodo per chiamare la lista? 98 00:04:45,410 --> 00:04:46,410 >> HANNAH: Awesome, così stiamo andando a creare 99 00:04:46,410 --> 00:04:47,951 un nuovo nodo per strisciare lungo l'elenco. 100 00:04:47,951 --> 00:04:48,570 Mi piace che. 101 00:04:48,570 --> 00:04:50,799 Mi limiterò a chiamo puntatore se è OK. 102 00:04:50,799 --> 00:04:52,340 E dove dovrebbe originariamente iniziare? 103 00:04:52,340 --> 00:04:57,280 104 00:04:57,280 --> 00:04:59,840 >> AUDIENCE: Probabilmente a la testa della lista. 105 00:04:59,840 --> 00:05:00,590 HANNAH: Beautiful. 106 00:05:00,590 --> 00:05:03,670 Vogliamo iniziare a capo, che Ho detto che sta per essere memorizzato in lista. 107 00:05:03,670 --> 00:05:04,170 Impressionante. 108 00:05:04,170 --> 00:05:05,220 Fin qui tutto bene. 109 00:05:05,220 --> 00:05:08,260 Ed ora, il nostro obiettivo è quello di scorrere la lista 110 00:05:08,260 --> 00:05:12,870 fino a trovare il nodo con valore n che vogliamo eliminare. 111 00:05:12,870 --> 00:05:13,540 OK? 112 00:05:13,540 --> 00:05:15,910 >> Così ora è la parte dove vogliamo scorrere. 113 00:05:15,910 --> 00:05:19,488 Qualcuno può suggerire un modo per iterare attraverso? 114 00:05:19,488 --> 00:05:20,979 >> PUBBLICO: Un loop. 115 00:05:20,979 --> 00:05:21,840 >> HANNAH: Un loop. 116 00:05:21,840 --> 00:05:22,620 Lo adoro. 117 00:05:22,620 --> 00:05:25,550 In particolare, siamo in grado di provare un ciclo while. 118 00:05:25,550 --> 00:05:30,919 OK, e sappiamo che abbiamo raggiunto Alla fine della nostra lista quando ciò? 119 00:05:30,919 --> 00:05:32,210 AUDIENCE: Quando l'indicatore è nullo. 120 00:05:32,210 --> 00:05:33,418 HANNAH: Quando l'indicatore è nullo. 121 00:05:33,418 --> 00:05:34,320 Bello, mi piace. 122 00:05:34,320 --> 00:05:35,110 OK, fresco. 123 00:05:35,110 --> 00:05:39,300 124 00:05:39,300 --> 00:05:43,190 Mi dispiace se la mia delimitazione tutore è tipo di cadere fuori dallo schermo. 125 00:05:43,190 --> 00:05:44,090 Abbiamo portato indietro. 126 00:05:44,090 --> 00:05:46,610 OK, fresco. 127 00:05:46,610 --> 00:05:48,690 Quali sono le prospettive? 128 00:05:48,690 --> 00:05:51,950 >> Così sappiamo che vogliamo eliminare il nodo che ha valore n. 129 00:05:51,950 --> 00:05:56,340 Quindi cerchiamo di trovare il caso in cui in realtà troviamo il nostro nodo. 130 00:05:56,340 --> 00:05:57,840 Così come dovrei controllare che? 131 00:05:57,840 --> 00:06:02,210 Vorrei solo dire se il puntatore, e poi se io vuole ottenere il valore di puntatore, 132 00:06:02,210 --> 00:06:08,940 Ho appena do arrow n, n è uguale, il parametro 133 00:06:08,940 --> 00:06:14,490 che abbiamo dato a questa funzione, il nodo che vogliamo eliminare realmente. 134 00:06:14,490 --> 00:06:17,090 Tutte le domande fino al qui? 135 00:06:17,090 --> 00:06:18,360 Bene. 136 00:06:18,360 --> 00:06:24,140 OK, ora cerchiamo di tracciare un quadro veloce sulla scheda per visualizzare questo. 137 00:06:24,140 --> 00:06:30,710 >> Quindi diciamo che c'è la nostra bella nodo. 138 00:06:30,710 --> 00:06:34,480 Ed ha un valore, mi limiterò a dire quattro. 139 00:06:34,480 --> 00:06:40,340 E indica il successivo nodo nella nostra lista collegata. 140 00:06:40,340 --> 00:06:42,220 E non c'è niente prima. 141 00:06:42,220 --> 00:06:45,800 Così abbiamo la nostra precedente punta a nulla. 142 00:06:45,800 --> 00:06:48,110 In questo caso, si segnala all'indietro. 143 00:06:48,110 --> 00:06:50,960 OK, basta installare il mio linked list qui. 144 00:06:50,960 --> 00:06:53,630 E abbiamo una lista che punta a questa struttura per cominciare. 145 00:06:53,630 --> 00:06:57,220 146 00:06:57,220 --> 00:07:00,485 Io traggo uno di più per abundantiam. 147 00:07:00,485 --> 00:07:04,209 148 00:07:04,209 --> 00:07:06,117 OK. 149 00:07:06,117 --> 00:07:07,480 Io punto questo in avanti. 150 00:07:07,480 --> 00:07:09,550 E io punto che uno indietro. 151 00:07:09,550 --> 00:07:10,360 Oops, mi dispiace. 152 00:07:10,360 --> 00:07:12,710 Sì, ha ottenuto questo all'indietro. 153 00:07:12,710 --> 00:07:15,548 154 00:07:15,548 --> 00:07:16,967 Fallo di nuovo. 155 00:07:16,967 --> 00:07:18,330 OK, non ci andiamo. 156 00:07:18,330 --> 00:07:19,910 Va bene, capito. 157 00:07:19,910 --> 00:07:21,780 OK, ecco la nostra immagine. 158 00:07:21,780 --> 00:07:24,860 >> OK, quindi vogliamo considerare due casi. 159 00:07:24,860 --> 00:07:27,330 Il primo caso è se il nodo vogliamo eliminare 160 00:07:27,330 --> 00:07:29,420 è proprio all'inizio della nostra lista. 161 00:07:29,420 --> 00:07:34,070 Poi, il secondo caso che vogliamo a prendere in considerazione è se è altrove. 162 00:07:34,070 --> 00:07:37,660 Capisco che questo totalmente disegno disordinato con tutta la mia cancellazione, 163 00:07:37,660 --> 00:07:40,400 ma speriamo cercheremo di chiarire questo con del codice. 164 00:07:40,400 --> 00:07:45,450 >> OK, quindi cerchiamo di coprire il caso dove abbiamo trovato il nostro nodo, 165 00:07:45,450 --> 00:07:48,900 ed è per lo inizio della nostra lista collegata. 166 00:07:48,900 --> 00:07:50,810 Qualcuno mi dia una suggerimento qui come a ciò che 167 00:07:50,810 --> 00:07:54,684 Devo fare per rimuovere in realtà il nostro nodo? 168 00:07:54,684 --> 00:07:55,970 E 'un po' difficile. 169 00:07:55,970 --> 00:07:56,470 OK? 170 00:07:56,470 --> 00:07:59,628 >> AUDIENCE: Dovete prendere il nodo che sarebbe prima 171 00:07:59,628 --> 00:08:01,794 e farlo puntare al uno che sarebbe dopo, 172 00:08:01,794 --> 00:08:03,004 e prendere il nodo che sarebbe dopo e fare 173 00:08:03,004 --> 00:08:04,554 puntare al nodo prima. 174 00:08:04,554 --> 00:08:05,220 HANNAH: Esattamente. 175 00:08:05,220 --> 00:08:10,640 OK, quindi questo è il caso where-- abbiamo due casi. 176 00:08:10,640 --> 00:08:14,100 Abbiamo il caso in cui la nodo che stiamo cercando 177 00:08:14,100 --> 00:08:18,270 è la parte anteriore della lista. 178 00:08:18,270 --> 00:08:23,110 OK, e quindi il caso che si descritto è altrimenti, giusto? 179 00:08:23,110 --> 00:08:24,500 E 'da qualche altra parte nella lista. 180 00:08:24,500 --> 00:08:27,460 181 00:08:27,460 --> 00:08:32,840 Così lei ha detto, abbiamo bisogno di guardare il nodo precedente, 182 00:08:32,840 --> 00:08:36,500 e fare il nodo precedente puntare al nodo successivo. 183 00:08:36,500 --> 00:08:40,510 Quindi diciamo che siamo cercando di togliere cinque 184 00:08:40,510 --> 00:08:43,059 nel mio disegno molto disordinato qui. 185 00:08:43,059 --> 00:08:47,530 Vogliamo fare in modo che quattro punti ora a sei. 186 00:08:47,530 --> 00:08:49,590 Quattro di punti successivi sei. 187 00:08:49,590 --> 00:08:52,150 E sei di punti precedenti quattro. 188 00:08:52,150 --> 00:08:53,960 Questo è il nostro obiettivo qui, giusto? 189 00:08:53,960 --> 00:08:56,150 Questo è quello che vi pare appena detto laggiù. 190 00:08:56,150 --> 00:08:58,450 >> OK, quindi cerchiamo di ottenere che primo pezzo. 191 00:08:58,450 --> 00:09:02,300 Facciamo l'avere il puntatore precedente precedente. 192 00:09:02,300 --> 00:09:06,550 193 00:09:06,550 --> 00:09:09,690 Così quattro prossimo dovrebbe puntare a cosa? 194 00:09:09,690 --> 00:09:13,210 195 00:09:13,210 --> 00:09:14,900 Esattamente, in questo caso, sei. 196 00:09:14,900 --> 00:09:18,470 Quindi dovremmo dire puntatore, il prossimo. 197 00:09:18,470 --> 00:09:20,600 OK? 198 00:09:20,600 --> 00:09:21,150 Bene. 199 00:09:21,150 --> 00:09:24,870 Quindi cerchiamo di sbarazzarsi di questa brutta immagine e provare a disegnare un un po 'più bello. 200 00:09:24,870 --> 00:09:29,040 201 00:09:29,040 --> 00:09:31,172 Noi abbiamo la nostra testa lista qui. 202 00:09:31,172 --> 00:09:36,440 203 00:09:36,440 --> 00:09:42,740 E che punta al primo nodo la nostra lista collegata, che abbiamo detto è quattro. 204 00:09:42,740 --> 00:09:45,620 Ecco il nostro secondo nodo, cinque. 205 00:09:45,620 --> 00:09:47,307 E il nostro terzo nodo, sei. 206 00:09:47,307 --> 00:09:50,265 Solo cercando di disegnare la stessa esatta foto, solo un po 'più pulito. 207 00:09:50,265 --> 00:09:52,780 208 00:09:52,780 --> 00:09:56,280 OK, così quattro di prossima originariamente punti a cinque. 209 00:09:56,280 --> 00:09:58,620 Cinque di punti successivi sei. 210 00:09:58,620 --> 00:10:00,170 Sei di precedenti punti a cinque. 211 00:10:00,170 --> 00:10:02,470 E cinque di punti precedenti quattro. 212 00:10:02,470 --> 00:10:03,360 Quindi molto più bello! 213 00:10:03,360 --> 00:10:04,530 OK, fresco. 214 00:10:04,530 --> 00:10:07,770 >> Così ora, quello che abbiamo fatto appena qui, questa linea di codice, 215 00:10:07,770 --> 00:10:12,680 che dice puntatore precedente prossimo, così che cosa significa? 216 00:10:12,680 --> 00:10:17,540 Questo significa che se stiamo guardando cinque, passare al nodo precedente, 217 00:10:17,540 --> 00:10:21,970 ed è prossimo dovrebbe ora punto cinque del prossimo. 218 00:10:21,970 --> 00:10:27,840 Quindi, in sostanza, di cosa si sta facendo è che sta cancellando questa freccia 219 00:10:27,840 --> 00:10:29,640 e rendendo saltare proprio sopra cinque. 220 00:10:29,640 --> 00:10:31,360 È chiaro? 221 00:10:31,360 --> 00:10:33,200 So che può essere un po 'anonima. 222 00:10:33,200 --> 00:10:34,480 Vedo alcuni cenni della testa. 223 00:10:34,480 --> 00:10:35,390 Quello è buono. 224 00:10:35,390 --> 00:10:36,670 OK, fresco. 225 00:10:36,670 --> 00:10:39,590 Ora, qual è il prossimo passo? 226 00:10:39,590 --> 00:10:42,060 >> Ho ripristinato il prossimo. 227 00:10:42,060 --> 00:10:45,297 Ora, quale altra freccia ho bisogno di cambiare? 228 00:10:45,297 --> 00:10:46,130 Questo qui. 229 00:10:46,130 --> 00:10:47,560 Six precedente. 230 00:10:47,560 --> 00:10:50,620 Non vogliamo sei del precedente per puntare a cinque più. 231 00:10:50,620 --> 00:10:54,580 Vogliamo che per puntare a quattro. 232 00:10:54,580 --> 00:10:56,190 Ritiene che la foto ha senso? 233 00:10:56,190 --> 00:10:58,370 Così ora possiamo effettivamente fare cinque su. 234 00:10:58,370 --> 00:10:59,370 Quindi cerchiamo di ottenere quel pezzo. 235 00:10:59,370 --> 00:11:03,390 236 00:11:03,390 --> 00:11:11,180 Cosa devo fare prima reimpostare sei del precedente a quattro? 237 00:11:11,180 --> 00:11:14,360 Tutte le idee lì? 238 00:11:14,360 --> 00:11:17,369 >> AUDIENCE: Liberare il nodo tra loro impostando a NULL? 239 00:11:17,369 --> 00:11:17,910 HANNAH: Cool. 240 00:11:17,910 --> 00:11:21,100 Sicuramente, il nostro obiettivo finale è sta per essere per liberare il nodo. 241 00:11:21,100 --> 00:11:22,490 Così possiamo farlo qui. 242 00:11:22,490 --> 00:11:23,540 Puntatore gratuito. 243 00:11:23,540 --> 00:11:24,810 Assolutamente. 244 00:11:24,810 --> 00:11:29,160 Ma prima ancora, andiamo solo-- nostro diritto obiettivo 245 00:11:29,160 --> 00:11:38,730 qui è quello di impostare indicatore accanto precedente pari a puntatore precedente. 246 00:11:38,730 --> 00:11:40,760 So che questo è sempre coperto. 247 00:11:40,760 --> 00:11:45,440 OK, facciamo take-- fresco. 248 00:11:45,440 --> 00:11:46,990 Tutti possono vedere questo linea di fondo? 249 00:11:46,990 --> 00:11:47,840 O è super minuscola? 250 00:11:47,840 --> 00:11:50,430 251 00:11:50,430 --> 00:11:54,300 >> Quindi, prima eseguiamo questa linea qui, vogliamo 252 00:11:54,300 --> 00:11:58,375 fare in modo che puntatore prossimo non è nullo. 253 00:11:58,375 --> 00:12:00,500 Perché se il puntatore successivo è null, che tipo di errore 254 00:12:00,500 --> 00:12:02,727 riceverò quando cerco di riferimento a un puntatore nullo? 255 00:12:02,727 --> 00:12:03,560 AUDIENCE: colpa Seg. 256 00:12:03,560 --> 00:12:05,660 HANNAH: Un errore seg, bello. 257 00:12:05,660 --> 00:12:09,690 OK, quindi se non è null, allora possiamo ripristinare. 258 00:12:09,690 --> 00:12:14,420 E abbiamo ancora sei punti a quattro. 259 00:12:14,420 --> 00:12:17,440 Domande fino a questo punto? 260 00:12:17,440 --> 00:12:17,940 Sì? 261 00:12:17,940 --> 00:12:19,814 >> AUDIENCE: Nel tuo primo if, hai fatto 262 00:12:19,814 --> 00:12:23,817 significa avere la freccia prossimo, o [incomprensibile]? 263 00:12:23,817 --> 00:12:25,150 HANNAH: Volevo dire puntatore freccia n. 264 00:12:25,150 --> 00:12:30,270 Quindi, fondamentalmente, quello che sto cercando di fare è dire, il nodo corrente che sono 265 00:12:30,270 --> 00:12:34,100 iterare su, il nodo corrente che Sto guardando, sto memorizzazione in puntatore. 266 00:12:34,100 --> 00:12:37,630 E voglio sapere il puntatore del valore, che in questo caso è n. 267 00:12:37,630 --> 00:12:39,500 E voglio vedere, è il nodo che sto cercando 268 00:12:39,500 --> 00:12:42,790 per il nodo che sto puntando a eliminare? 269 00:12:42,790 --> 00:12:47,657 Quindi è per questo che abbiamo qui puntatore n. 270 00:12:47,657 --> 00:12:49,857 >> AUDIENCE: Quindi la freccia che va a n, si imposta il valore 271 00:12:49,857 --> 00:12:52,058 e conservarlo in un nodo denominato n? 272 00:12:52,058 --> 00:12:55,410 273 00:12:55,410 --> 00:12:58,820 >> HANNAH: Così è come se io sono passare attraverso questa lista collegata 274 00:12:58,820 --> 00:13:00,310 e che punta a cinque. 275 00:13:00,310 --> 00:13:03,600 Se voglio ottenere quel valore, se Voglio ottenere quel numero, 5, 276 00:13:03,600 --> 00:13:06,400 Devo fare puntatore freccia n. 277 00:13:06,400 --> 00:13:06,900 Freddo? 278 00:13:06,900 --> 00:13:07,900 Sì. 279 00:13:07,900 --> 00:13:11,200 >> PUBBLICO: è N il nome della variabile? 280 00:13:11,200 --> 00:13:11,700 HANNAH: Sì. 281 00:13:11,700 --> 00:13:14,870 Quindi, se lanciamo indietro di un scivolo, n è il nome 282 00:13:14,870 --> 00:13:18,660 del valore all'interno della nodo nella nostra lista collegata. 283 00:13:18,660 --> 00:13:21,510 E so che può essere un po ' po 'di confusione perché abbiamo anche 284 00:13:21,510 --> 00:13:24,680 chiedono la cosa che vogliamo eliminare n. 285 00:13:24,680 --> 00:13:26,717 Ecco dove tale una linea proviene. 286 00:13:26,717 --> 00:13:27,671 Sì? 287 00:13:27,671 --> 00:13:31,010 >> AUDIENCE: Che cosa avete [Incomprensibile] come funzionano? 288 00:13:31,010 --> 00:13:33,872 289 00:13:33,872 --> 00:13:35,780 Un puntatore [incomprensibile]? 290 00:13:35,780 --> 00:13:37,520 >> HANNAH: Certo. 291 00:13:37,520 --> 00:13:40,027 Stai about-- quale linea parlando? 292 00:13:40,027 --> 00:13:41,526 PUBBLICO: L'ultima riga [incomprensibile]. 293 00:13:41,526 --> 00:13:44,280 294 00:13:44,280 --> 00:13:45,250 >> HANNAH: Certo, OK. 295 00:13:45,250 --> 00:13:48,540 Quindi cerchiamo di guardare il quadro in Per cercare di spiegare questo. 296 00:13:48,540 --> 00:13:51,030 Mi dispiace, per la macchina fotografica, la domanda era 297 00:13:51,030 --> 00:13:54,580 si spiega puntatore freccia accanto puntatore precedente. 298 00:13:54,580 --> 00:14:01,510 OK, quindi diciamo che siamo a cinque e il nostro obiettivo è quello di eliminare cinque. 299 00:14:01,510 --> 00:14:07,240 Così puntatore prossimo, quale di questi tre nodi cosa ci danno? 300 00:14:07,240 --> 00:14:10,840 Questo ci porta al sesto nodo, giusto? 301 00:14:10,840 --> 00:14:16,490 >> OK, così ora stiamo chiedendo per i sei del precedente. 302 00:14:16,490 --> 00:14:17,060 OK? 303 00:14:17,060 --> 00:14:20,210 E siamo resettare questo essere uguale a quattro, 304 00:14:20,210 --> 00:14:23,214 che per caso cinque del precedente. 305 00:14:23,214 --> 00:14:25,180 Lo so, è super difficile tenere traccia di. 306 00:14:25,180 --> 00:14:29,286 Consiglio vivamente di disegnare immagini se si ottiene una domanda come questa. 307 00:14:29,286 --> 00:14:30,242 Sì? 308 00:14:30,242 --> 00:14:32,617 >> AUDIENCE: E 'la ragione per cui non abbiamo un [incomprensibile]? 309 00:14:32,617 --> 00:14:37,430 310 00:14:37,430 --> 00:14:38,570 >> HANNAH: Esattamente. 311 00:14:38,570 --> 00:14:44,800 Quindi la domanda è, perché fare Non abbiamo bisogno di controllare qui? 312 00:14:44,800 --> 00:14:48,160 Perché non abbiamo bisogno di controllare che puntatore precedente non è uguale a null? 313 00:14:48,160 --> 00:14:50,070 Ed è perché abbiamo già separata out 314 00:14:50,070 --> 00:14:52,490 nel caso del puntatore proprio all'inizio. 315 00:14:52,490 --> 00:14:54,060 Molto buona domanda. 316 00:14:54,060 --> 00:14:56,880 Tutto il resto su questo? 317 00:14:56,880 --> 00:14:57,380 OK, fresco. 318 00:14:57,380 --> 00:14:58,360 Quindi cerchiamo di finire in su. 319 00:14:58,360 --> 00:14:59,890 Ci siamo quasi. 320 00:14:59,890 --> 00:15:01,310 >> Così che cosa se è a capo? 321 00:15:01,310 --> 00:15:03,360 E se invece di cercando di eliminare cinque, 322 00:15:03,360 --> 00:15:06,240 in realtà abbiamo voluto eliminare quattro? 323 00:15:06,240 --> 00:15:07,270 Che cosa avrei dovuto fare? 324 00:15:07,270 --> 00:15:09,610 Beh, voglio riportare la testa per che cosa? 325 00:15:09,610 --> 00:15:14,288 326 00:15:14,288 --> 00:15:15,585 Shout fuori? 327 00:15:15,585 --> 00:15:16,710 Pubblico: L'uno dopo. 328 00:15:16,710 --> 00:15:17,460 HANNAH: Beautiful. 329 00:15:17,460 --> 00:15:26,430 OK, quindi vogliamo elenco da puntamento a tutto ciò che il nostro puntatore nodo successivo è. 330 00:15:26,430 --> 00:15:29,040 Bene. 331 00:15:29,040 --> 00:15:30,810 E solo per completezza di sake, avremmo 332 00:15:30,810 --> 00:15:35,590 voler controllare che finché la nostra lista non è nullo, finché la lista non è 333 00:15:35,590 --> 00:15:42,730 vuoto, allora vogliamo impostare la nostra precedente pari a null. 334 00:15:42,730 --> 00:15:46,960 335 00:15:46,960 --> 00:15:50,230 Domanda finora? 336 00:15:50,230 --> 00:15:53,205 Un passo from--? 337 00:15:53,205 --> 00:15:55,530 >> AUDIENCE: Sarebbe se elenco non è uguale a null? 338 00:15:55,530 --> 00:15:56,950 >> HANNAH: Sì, sei totalmente ragione. 339 00:15:56,950 --> 00:15:58,130 Mi dispiace tanto. 340 00:15:58,130 --> 00:16:00,040 E 'elenco non è uguale a null. 341 00:16:00,040 --> 00:16:01,915 Impressionante. 342 00:16:01,915 --> 00:16:04,245 Cercando di portare tutto questo sullo schermo. 343 00:16:04,245 --> 00:16:06,870 E 'una specie di cadere. 344 00:16:06,870 --> 00:16:07,730 Siamo spiacenti, ragazzi. 345 00:16:07,730 --> 00:16:11,874 E, ultimo ma non meno importante, tutti i che dobbiamo fare è di ritorno. 346 00:16:11,874 --> 00:16:12,840 OK. 347 00:16:12,840 --> 00:16:15,400 Che era molto stipati in molto velocemente. 348 00:16:15,400 --> 00:16:16,800 Prendete un secondo per guardare questo sopra. 349 00:16:16,800 --> 00:16:18,216 Ditemi se avete domande. 350 00:16:18,216 --> 00:16:20,232 351 00:16:20,232 --> 00:16:20,732 Sì? 352 00:16:20,732 --> 00:16:26,940 >> Pubblico: Se elenco è al testa, then-- aspetta, non importa. 353 00:16:26,940 --> 00:16:27,700 >> HANNAH: OK, bene. 354 00:16:27,700 --> 00:16:30,987 Quindi questo è, se la lista è a capo, togliamo a tutto ciò che abbiamo inserito. 355 00:16:30,987 --> 00:16:31,486 Sì? 356 00:16:31,486 --> 00:16:33,777 >> AUDIENCE: Ci può spiegare il primo caso di nuovo affermazione? 357 00:16:33,777 --> 00:16:36,149 Se il puntatore n è uguale a n? 358 00:16:36,149 --> 00:16:36,690 HANNAH: Certo. 359 00:16:36,690 --> 00:16:42,780 Così il nostro obiettivo di tutta questa funzione è per eliminare il nodo che ha valore n. 360 00:16:42,780 --> 00:16:47,460 Quindi, se troviamo, come siamo scorrendo la nostra lista, 361 00:16:47,460 --> 00:16:51,770 il nodo con valore n, che è quello che vogliamo eliminare. 362 00:16:51,770 --> 00:16:57,286 Così tutta la cancellazione avviene all'interno di quella grande if. 363 00:16:57,286 --> 00:16:58,593 Fa questo ha un senso? 364 00:16:58,593 --> 00:16:59,480 Freddo. 365 00:16:59,480 --> 00:16:59,990 Sì? 366 00:16:59,990 --> 00:17:02,864 >> AUDIENCE: Forse non si può vedere , ma non è necessario anche una linea 367 00:17:02,864 --> 00:17:06,024 per scorrere l'elenco? 368 00:17:06,024 --> 00:17:06,690 HANNAH: Awesome. 369 00:17:06,690 --> 00:17:10,896 Portiamo questo un po ', e ci buttiamo che a destra in basso. 370 00:17:10,896 --> 00:17:13,282 371 00:17:13,282 --> 00:17:15,490 Forse il consiglio avrebbe fatto stata una idea un po 'meglio. 372 00:17:15,490 --> 00:17:17,829 Così come potrei andare avanti puntatore? 373 00:17:17,829 --> 00:17:20,184 >> AUDIENCE: Pointer equivale puntatore più uno. 374 00:17:20,184 --> 00:17:21,599 >> HANNAH: Beautiful. 375 00:17:21,599 --> 00:17:25,050 In modo che ci permette di continuare scorrendo. 376 00:17:25,050 --> 00:17:26,251 OK. 377 00:17:26,251 --> 00:17:27,750 AUDIENCE: Non sarebbe esserci un altro? 378 00:17:27,750 --> 00:17:29,028 HANNAH: Ancora una volta? 379 00:17:29,028 --> 00:17:32,444 AUDIENCE: Non Ci sarebbe un altro dopo il grande vecchio, se 380 00:17:32,444 --> 00:17:35,519 dichiarazione [incomprensibile]? 381 00:17:35,519 --> 00:17:36,310 HANNAH: Quale parte? 382 00:17:36,310 --> 00:17:38,350 Mi dispiace. 383 00:17:38,350 --> 00:17:41,800 >> PUBBLICO: L'attraversamento, Non dovrebbe esserci un altro? 384 00:17:41,800 --> 00:17:43,550 HANNAH: è assolutamente potrebbe avere un altro. 385 00:17:43,550 --> 00:17:46,930 Perché ho un diritto di recesso là, non hai bisogno di un altro. 386 00:17:46,930 --> 00:17:48,760 Ma sì, buona domanda. 387 00:17:48,760 --> 00:17:50,170 OK, sì? 388 00:17:50,170 --> 00:17:52,878 AUDIENCE: Possiamo pensare pointer che si muove attraverso la lista 389 00:17:52,878 --> 00:17:56,610 come prendere sul valore di ogni nodo della lista? 390 00:17:56,610 --> 00:18:00,650 O dovremmo pensare ad esso come sorta di esterno alla lista? 391 00:18:00,650 --> 00:18:02,350 >> HANNAH: O si va bene, credo. 392 00:18:02,350 --> 00:18:05,880 Il modo in cui immagino che sia Io dico, ok, io sono il puntatore. 393 00:18:05,880 --> 00:18:06,520 E questo sono io. 394 00:18:06,520 --> 00:18:07,150 Questa è la mia mano. 395 00:18:07,150 --> 00:18:09,960 Ho intenzione di puntare al diverso cose che voglio per scorrere. 396 00:18:09,960 --> 00:18:12,270 In primo luogo, ho intenzione di puntare alla testa della lista. 397 00:18:12,270 --> 00:18:14,144 E che mi dice sono andando a puntare a quattro. 398 00:18:14,144 --> 00:18:18,060 E così me, essendo esterno alla lista, Posso indicare ciascuno di questi elementi. 399 00:18:18,060 --> 00:18:19,520 Quindi penso a me stesso come puntatore. 400 00:18:19,520 --> 00:18:21,645 AUDIENCE: Così, quando si elimina uno di questi elementi, 401 00:18:21,645 --> 00:18:23,404 si eliminano da soli, per così dire. 402 00:18:23,404 --> 00:18:24,070 HANNAH: Esattamente. 403 00:18:24,070 --> 00:18:25,920 Così si elimina la cosa si sta indicando. 404 00:18:25,920 --> 00:18:28,340 Quindi, nell'esempio che abbiamo visto dove siamo 405 00:18:28,340 --> 00:18:31,670 cercando di eliminare cinque, quando sto indicando cinque, 406 00:18:31,670 --> 00:18:34,200 Voglio cancellare la cosa che sto indicando. 407 00:18:34,200 --> 00:18:35,870 Esattamente. 408 00:18:35,870 --> 00:18:36,577 Sì? 409 00:18:36,577 --> 00:18:39,410 AUDIENCE: Abbiamo curato la caso in cui n non è nella lista? 410 00:18:39,410 --> 00:18:40,460 HANNAH: Se n non è nella lista? 411 00:18:40,460 --> 00:18:43,501 Tutto ciò che sta per accadere è che sei andando a scorrere e iterate 412 00:18:43,501 --> 00:18:47,616 attraverso, e quindi, si sta andando per arrivare al puntatore essere nullo, 413 00:18:47,616 --> 00:18:48,990 e quindi si sta andando a fare. 414 00:18:48,990 --> 00:18:50,812 >> AUDIENCE: Quindi dobbiamo per tornare qualcosa? 415 00:18:50,812 --> 00:18:51,520 HANNAH: Potremmo. 416 00:18:51,520 --> 00:18:54,500 Il modo in cui se definito questo funzione, dico solo che restituisce 417 00:18:54,500 --> 00:18:55,770 annullare prescindere. 418 00:18:55,770 --> 00:18:58,360 Ma si potrebbe avere qualcosa come tornare a un numero intero, 419 00:18:58,360 --> 00:19:00,920 e farlo tornare negativo 1 se fallisce. 420 00:19:00,920 --> 00:19:03,070 Qualcosa del genere. 421 00:19:03,070 --> 00:19:04,494 Domande with-- sì? 422 00:19:04,494 --> 00:19:05,410 AUDIENCE: [incomprensibile]? 423 00:19:05,410 --> 00:19:05,993 HANNAH: Siamo spiacenti? 424 00:19:05,993 --> 00:19:07,419 AUDIENCE: [incomprensibile]? 425 00:19:07,419 --> 00:19:07,960 HANNAH: Certo. 426 00:19:07,960 --> 00:19:11,730 Ecco, questo è il actual-- una volta che abbiamo fatto tutto questo lavoro di movimento 427 00:19:11,730 --> 00:19:16,530 tutte queste frecce intorno, il nostro intero obiettivo era quello di liberarsi del nodo 428 00:19:16,530 --> 00:19:18,230 che stiamo cercando. 429 00:19:18,230 --> 00:19:21,610 Quindi in questo caso, liberando puntatore, se sto indicando cinque, 430 00:19:21,610 --> 00:19:24,670 è come cancellare questo nodo centrale. 431 00:19:24,670 --> 00:19:27,250 Questo è il puntatore parte libera. 432 00:19:27,250 --> 00:19:29,090 Che senso ha? 433 00:19:29,090 --> 00:19:31,390 >> AUDIENCE: Così anche il pensiero hai fatto non [incomprensibile]? 434 00:19:31,390 --> 00:19:36,060 >> HANNAH: Così abbiamo assunto all'inizio abbiamo avuto qualche lista che era already-- 435 00:19:36,060 --> 00:19:37,220 avevano messo insieme. 436 00:19:37,220 --> 00:19:39,761 Quindi, al fine di costruire questo lista, si deve aver [incomprensibile]. 437 00:19:39,761 --> 00:19:42,190 438 00:19:42,190 --> 00:19:42,750 Freddo. 439 00:19:42,750 --> 00:19:44,490 Tutto il resto con questo? 440 00:19:44,490 --> 00:19:46,386 Sì? 441 00:19:46,386 --> 00:19:49,204 >> AUDIENCE: Cosa succede se la lista non uguale alla linea di nulla? 442 00:19:49,204 --> 00:19:49,704 [Incomprensibile]? 443 00:19:49,704 --> 00:19:52,289 444 00:19:52,289 --> 00:19:53,080 HANNAH: Proprio qui? 445 00:19:53,080 --> 00:19:53,840 PUBBLICO: Sì. 446 00:19:53,840 --> 00:19:57,370 HANNAH: OK, tutto quello che sto facendo è Sto solo facendo sicuro 447 00:19:57,370 --> 00:20:03,250 che prima cerco di lista dereferenziare, prima provo ad accedere al precedente, 448 00:20:03,250 --> 00:20:07,210 Voglio fare in modo che non è null quindi non ottengo un guasto seg. 449 00:20:07,210 --> 00:20:08,400 Freddo. 450 00:20:08,400 --> 00:20:10,820 >> OK, so che questo era abbastanza molto da ottenere attraverso. 451 00:20:10,820 --> 00:20:14,950 Quindi questa diapositiva sarà messe a vostra disposizione. 452 00:20:14,950 --> 00:20:17,341 Così si può passare attraverso di essa in modo più dettagliato. 453 00:20:17,341 --> 00:20:17,841 Sì? 454 00:20:17,841 --> 00:20:19,749 >> AUDIENCE: Perché la lista [incomprensibile]? 455 00:20:19,749 --> 00:20:24,129 456 00:20:24,129 --> 00:20:24,670 HANNAH: Certo. 457 00:20:24,670 --> 00:20:27,390 Quindi lista davvero punta questo elemento proprio qui, 458 00:20:27,390 --> 00:20:29,200 il primo elemento della lista. 459 00:20:29,200 --> 00:20:30,748 Quindi non può avere una precedente. 460 00:20:30,748 --> 00:20:31,736 Sì? 461 00:20:31,736 --> 00:20:35,194 >> AUDIENCE: Fa il punto puntatore allo stesso indirizzo in memoria? 462 00:20:35,194 --> 00:20:38,404 Ha puntare allo stesso indirizzo nella memoria, come nodo 463 00:20:38,404 --> 00:20:40,640 che è rivolto a? 464 00:20:40,640 --> 00:20:43,865 >> HANNAH: Sì, punta per questo nodo in memoria. 465 00:20:43,865 --> 00:20:47,190 >> AUDIENCE: Giusto, quindi quando si [incomprensibile]? 466 00:20:47,190 --> 00:20:50,580 >> HANNAH: In un certo senso, sì. 467 00:20:50,580 --> 00:20:51,280 OK. 468 00:20:51,280 --> 00:20:52,997 Va bene, andiamo avanti con questo. 469 00:20:52,997 --> 00:20:55,330 E se avete altre domande, restare, alla fine, 470 00:20:55,330 --> 00:20:57,130 e siamo in grado di passare attraverso di nuovo. 471 00:20:57,130 --> 00:20:58,120 OK, fresco. 472 00:20:58,120 --> 00:21:00,490 Ora, si arriva a andare avanti alle tabelle, cerca, 473 00:21:00,490 --> 00:21:04,940 e gli alberi, che avete ottenuto eccellenti familiarità con in p-set di cinque, correttore ortografico. 474 00:21:04,940 --> 00:21:11,020 >> Così tabella hash è solo un array con liste concatenate semplici 475 00:21:11,020 --> 00:21:14,050 o doppiamente legata elenchi provenienti fuori di esso. 476 00:21:14,050 --> 00:21:16,380 Quindi abbiamo una specie di array associativo. 477 00:21:16,380 --> 00:21:21,280 E come sappiamo quale di questi array secchi per entrare, 478 00:21:21,280 --> 00:21:24,137 usiamo una funzione di hash. 479 00:21:24,137 --> 00:21:26,470 Quindi in questo caso, può chiunque indovinate un po 'la funzione di hash 480 00:21:26,470 --> 00:21:28,636 sarebbe solo sulla base di alcune di ingresso e uscita? 481 00:21:28,636 --> 00:21:31,392 482 00:21:31,392 --> 00:21:33,194 >> AUDIENCE: numero lettera dell'alfabeto. 483 00:21:33,194 --> 00:21:33,860 HANNAH: Esattamente. 484 00:21:33,860 --> 00:21:36,160 E 'appena li mette in ordine alfabetico. 485 00:21:36,160 --> 00:21:39,280 Tutto ciò che inizia con un A viene messo in primo secchio. 486 00:21:39,280 --> 00:21:43,340 Il tutto con un B viene messo in secondo secchio, eccetera, e così via. 487 00:21:43,340 --> 00:21:45,620 Awesome, OK. 488 00:21:45,620 --> 00:21:48,980 E una funzione hash è qualunque funzione che prende in una parola 489 00:21:48,980 --> 00:21:51,910 e vi dirà che cosa benna appartiene a. 490 00:21:51,910 --> 00:21:55,150 Così che l'ingresso nel nostro matrice essa appartiene a. 491 00:21:55,150 --> 00:21:58,080 >> Così ogni volta che do la mia hash funzionare una parola, 492 00:21:58,080 --> 00:22:00,660 si dovrebbe dirmi la stessa svolge ogni singola volta. 493 00:22:00,660 --> 00:22:03,270 Quindi, se si usa la funzione di hash dalla diapositiva precedente 494 00:22:03,270 --> 00:22:05,950 dove stiamo ordinamento per la prima lettera dell'alfabeto, 495 00:22:05,950 --> 00:22:08,230 ogni volta che do la mia funzione hash "apple" 496 00:22:08,230 --> 00:22:10,180 dovrebbe sempre darmi indietro 0. 497 00:22:10,180 --> 00:22:12,890 Quindi, se ho una mela a mettere nel mio tabella hash, 498 00:22:12,890 --> 00:22:17,700 se io do "mela" per la mia funzione di hash, si dovrebbe dire, va messo in un secchio di 0. 499 00:22:17,700 --> 00:22:19,980 Se sto cercando un apple nella mia tabella hash 500 00:22:19,980 --> 00:22:24,340 e dico, dove potrebbe apple dal vivo, si chiede la vostra funzione di hash. 501 00:22:24,340 --> 00:22:26,900 E dice, andare a benna 0. 502 00:22:26,900 --> 00:22:29,150 Bene? 503 00:22:29,150 --> 00:22:32,660 Domande con funzioni hash? 504 00:22:32,660 --> 00:22:34,570 Impressionante. 505 00:22:34,570 --> 00:22:37,320 >> Qui è un po 'più spiegazione dettagliata 506 00:22:37,320 --> 00:22:39,570 di ciò che una funzione di hash potrebbe essere simile. 507 00:22:39,570 --> 00:22:42,230 508 00:22:42,230 --> 00:22:42,960 Bene. 509 00:22:42,960 --> 00:22:45,960 Ora, il problema con hash funzioni è in un mondo ideale, 510 00:22:45,960 --> 00:22:48,870 avremmo una sola cosa in ciascun segmento. 511 00:22:48,870 --> 00:22:50,900 Ma in realtà, non c'è non solo una parola 512 00:22:50,900 --> 00:22:54,280 che inizia con A. Non c'è solo una parola che inizia con B. So 513 00:22:54,280 --> 00:22:56,960 in questo caso, se ci improvvisamente ottenere "berry" 514 00:22:56,960 --> 00:22:58,710 e vogliamo metterlo nella nostra tabella di hash, 515 00:22:58,710 --> 00:23:03,640 e si vede, oh, no, banana è già lì, che cosa faremo? 516 00:23:03,640 --> 00:23:05,900 >> Beh, abbiamo due opzioni. 517 00:23:05,900 --> 00:23:07,990 La prima opzione è scansione lineare, che 518 00:23:07,990 --> 00:23:11,100 significa solo andare a trovare la prossima secchio vuoto. 519 00:23:11,100 --> 00:23:14,100 Andate a cercare la voce successiva array vuoto. 520 00:23:14,100 --> 00:23:15,750 E appena messo "berry" lì. 521 00:23:15,750 --> 00:23:18,880 Quindi so che si suppone andare con la banana in una benna. 522 00:23:18,880 --> 00:23:22,155 Ma basta mettere in secchio di tre, perché secchio tre è vuota. 523 00:23:22,155 --> 00:23:24,806 524 00:23:24,806 --> 00:23:26,680 Un'altra opzione è probabilmente quello che si implementa 525 00:23:26,680 --> 00:23:29,220 in p-set, dove si aveva concatenazioni separate. 526 00:23:29,220 --> 00:23:33,990 Così ciascuno dei vostri secchi, ciascuno dei vostri elementi dell'array, 527 00:23:33,990 --> 00:23:38,410 detiene non solo una parola, ma in realtà detiene un puntatore a una lista di parole. 528 00:23:38,410 --> 00:23:41,880 In modo che se aveste banane nella tabella hash 529 00:23:41,880 --> 00:23:44,740 e improvvisamente voleva aggiungere bacca, nessun problema. 530 00:23:44,740 --> 00:23:51,110 Basta aggiungere bacche fino alla fine, o per All'inizio della tua lista collegata. 531 00:23:51,110 --> 00:23:54,040 OK, impressionante. 532 00:23:54,040 --> 00:23:58,490 Domande con hash tavoli prima di andare avanti? 533 00:23:58,490 --> 00:23:59,850 >> Bene. 534 00:23:59,850 --> 00:24:01,070 Alberi e tentativi. 535 00:24:01,070 --> 00:24:07,980 OK, quindi questo era un'altra opzione per l'attuazione dizionario. 536 00:24:07,980 --> 00:24:09,100 Si potrebbe avere fatto una prova. 537 00:24:09,100 --> 00:24:13,420 Quindi è un tipo speciale di albero che si comporta come una tabella hash a più livelli. 538 00:24:13,420 --> 00:24:16,862 Così vedrete l'immagine dove si ha un array 539 00:24:16,862 --> 00:24:19,320 punta a un gruppo di array che puntano a un gruppo di array 540 00:24:19,320 --> 00:24:20,390 che puntano a un gruppo di array. 541 00:24:20,390 --> 00:24:23,140 E vedremo esattamente quello che sarebbe simile su un futuro diapositiva. 542 00:24:23,140 --> 00:24:26,070 E più in generale, un albero è solo qualsiasi struttura di dati 543 00:24:26,070 --> 00:24:29,710 in cui i dati organizzata in qualche gerarchia. 544 00:24:29,710 --> 00:24:32,610 Allora, dove abbiamo visto che abbiamo una sorta di comprensione 545 00:24:32,610 --> 00:24:36,130 di un livello superiore, un livello successivo, un livello successivo, un livello successivo. 546 00:24:36,130 --> 00:24:39,690 Quindi questo è probabilmente il più chiaro con alcuni esempi specifici. 547 00:24:39,690 --> 00:24:40,880 Quindi, ecco il nostro albero. 548 00:24:40,880 --> 00:24:42,970 Si può vedere che ha livelli particolari 549 00:24:42,970 --> 00:24:45,480 che iniziamo con quel nodo radice, uno. 550 00:24:45,480 --> 00:24:47,640 E possiamo andare giù attraverso il nostro albero. 551 00:24:47,640 --> 00:24:50,730 552 00:24:50,730 --> 00:24:53,910 >> Un albero binario è un particolare tipo di albero. 553 00:24:53,910 --> 00:24:56,770 E l'unica specificazione un albero binario 554 00:24:56,770 --> 00:25:01,130 è che ogni nodo ha al massimo due foglie. 555 00:25:01,130 --> 00:25:03,960 Quindi non hai intenzione di vedere qualsiasi di questi nodi hanno tre o quattro 556 00:25:03,960 --> 00:25:06,880 o qualche altro numero di foglie. 557 00:25:06,880 --> 00:25:11,310 E poi ancora più specifico è un albero binario di ricerca 558 00:25:11,310 --> 00:25:18,010 dove ogni nodo sinistra del nodo avrà un valore inferiore. 559 00:25:18,010 --> 00:25:21,180 E ogni valore al destra sta per essere più grande. 560 00:25:21,180 --> 00:25:26,900 Quindi, se si vede 44 è alla nostra radice, a sinistra, 11, 22, e 33 561 00:25:26,900 --> 00:25:28,940 sono tutti a meno di nostra radice. 562 00:25:28,940 --> 00:25:33,890 E sulla destra sono tutti numeri bigger-- 66, 55, e 77. 563 00:25:33,890 --> 00:25:37,380 E questa struttura vale ad ogni livello dell'albero. 564 00:25:37,380 --> 00:25:42,690 >> Così, quando scendiamo a 22, 11, e 33, ancora 11 565 00:25:42,690 --> 00:25:46,950 è più piccolo di 22 e 33 è più grande di 22. 566 00:25:46,950 --> 00:25:50,160 E questo rende più facile la ricerca perché se stiamo cercando un numero, 567 00:25:50,160 --> 00:25:53,877 sappiamo esattamente quale ramo di seguire giù. 568 00:25:53,877 --> 00:25:56,210 Quindi questo dovrebbe ricordare un po 'di ricerca binaria. 569 00:25:56,210 --> 00:25:56,967 Sì? 570 00:25:56,967 --> 00:25:58,835 >> AUDIENCE: Così, quando sei descrivendo binario, 571 00:25:58,835 --> 00:26:00,587 ti ha detto che ha al massimo due foglie? 572 00:26:00,587 --> 00:26:01,170 HANNAH: Mm-hm. 573 00:26:01,170 --> 00:26:02,580 AUDIENCE: Potrebbe avere meno? 574 00:26:02,580 --> 00:26:03,121 HANNAH: Sì. 575 00:26:03,121 --> 00:26:06,720 Quindi diciamo che, per esempio, si non ha avuto un numero di cose 576 00:26:06,720 --> 00:26:11,791 e non si poteva riempire tutti i tuoi foglie, va bene se si ha uno. 577 00:26:11,791 --> 00:26:12,290 OK? 578 00:26:12,290 --> 00:26:12,789 Impressionante. 579 00:26:12,789 --> 00:26:15,930 Altre domande sugli alberi? 580 00:26:15,930 --> 00:26:16,670 OK. 581 00:26:16,670 --> 00:26:20,110 >> Torna ai nostri tentativi, come parlavo su un po 'prima, 582 00:26:20,110 --> 00:26:23,900 come abbiamo questi array multi-livello. 583 00:26:23,900 --> 00:26:26,280 Quindi, in questo caso, si inizia nella parte superiore. 584 00:26:26,280 --> 00:26:29,030 E possiamo seguire qualsiasi parola data verso il basso. 585 00:26:29,030 --> 00:26:30,780 Quindi diciamo che volevamo cercare Turing. 586 00:26:30,780 --> 00:26:34,380 Iniziamo a T, seguire giù a una matrice che contiene U, 587 00:26:34,380 --> 00:26:37,350 e proseguire verso il basso fino a che raggiungere questo piccolo triangolo che 588 00:26:37,350 --> 00:26:39,060 ci dice, sì, avete trovato una parola. 589 00:26:39,060 --> 00:26:43,200 590 00:26:43,200 --> 00:26:44,120 Chiaro su tentativi? 591 00:26:44,120 --> 00:26:48,138 Qualsiasi cosa per andare laggiù? 592 00:26:48,138 --> 00:26:48,908 Sì? 593 00:26:48,908 --> 00:26:51,866 AUDIENCE: Fa il simbolo del delta devono occupare lo spazio all'interno del tentativo? 594 00:26:51,866 --> 00:26:54,532 HANNAH: Sì, in modo che non necessariamente nemmeno bisogno di essere un delta. 595 00:26:54,532 --> 00:26:57,760 Ma abbiamo bisogno di un modo per raccontare la nostra computer-- dispiace, 596 00:26:57,760 --> 00:27:01,130 in modo che sappiamo che TUR non è una parola. 597 00:27:01,130 --> 00:27:04,180 Perché diciamo che non abbiamo avuto questo concetto di un delta, questo concetto 598 00:27:04,180 --> 00:27:09,850 di congratulazioni, hai trovato una parola, sarebbe passare attraverso e iterare T-U-R, 599 00:27:09,850 --> 00:27:11,300 e poi dire, fantastico, l'ho trovato! 600 00:27:11,300 --> 00:27:12,670 Deve essere una parola. 601 00:27:12,670 --> 00:27:13,720 Ma non è davvero. 602 00:27:13,720 --> 00:27:15,310 Vogliamo tutto Turing sia una parola. 603 00:27:15,310 --> 00:27:17,760 Quindi dobbiamo avere qualcosa al end che dice, congratulazioni, 604 00:27:17,760 --> 00:27:19,051 avete trovato una parola legittima. 605 00:27:19,051 --> 00:27:21,680 AUDIENCE: Quindi, se avete avuto come 26 lettere dell'alfabeto, 606 00:27:21,680 --> 00:27:24,560 vuoi effettivamente 27 chiavi in ​​prova? 607 00:27:24,560 --> 00:27:26,010 >> HANNAH: Awesome, sì. 608 00:27:26,010 --> 00:27:28,210 Quindi, in realtà, penso che sarà sulla diapositiva successiva. 609 00:27:28,210 --> 00:27:29,440 Ta-da! 610 00:27:29,440 --> 00:27:32,880 Dove se si dispone di un nodo del tentativo, sei 611 00:27:32,880 --> 00:27:35,800 andando ad avere 27 bambini invece di 26. 612 00:27:35,800 --> 00:27:39,010 613 00:27:39,010 --> 00:27:40,050 Tutte le domande con quello? 614 00:27:40,050 --> 00:27:40,550 Sì? 615 00:27:40,550 --> 00:27:44,569 AUDIENCE: Perché cerca occupano così molto spazio [incomprensibile], come si va? 616 00:27:44,569 --> 00:27:47,629 Perché è considerato [incomprensibile]? 617 00:27:47,629 --> 00:27:48,170 HANNAH: Certo. 618 00:27:48,170 --> 00:27:48,790 Torniamo. 619 00:27:48,790 --> 00:27:52,350 La domanda è, perché sono tentativi molto più grande 620 00:27:52,350 --> 00:27:54,620 di qualcosa di simile a una tabella hash. 621 00:27:54,620 --> 00:27:57,790 Quindi, per ciascuno di questi livelli, anche se non sono attratti qui, 622 00:27:57,790 --> 00:28:01,250 bisogna avere tutti i 26 caratteri. 623 00:28:01,250 --> 00:28:04,420 E la ragione per cui non è possibile Dico, oh, ma, come per Turing, I 624 00:28:04,420 --> 00:28:07,570 non hanno bisogno di avere una di queste stesse cose a livello di U. Well, 625 00:28:07,570 --> 00:28:11,390 se improvvisamente si voleva aggiungere qualcosa che era come T-H, 626 00:28:11,390 --> 00:28:14,800 avresti bisogno di avere la capacità di aggiungere quella parola. 627 00:28:14,800 --> 00:28:17,330 Quindi per ogni singola lettera, si sta andando ad avere 628 00:28:17,330 --> 00:28:19,730 di avere un gruppo di array venuta fuori di esso. 629 00:28:19,730 --> 00:28:24,060 Così si può vedere come si otterrebbe davvero grande, molto veloce. 630 00:28:24,060 --> 00:28:26,560 Altre domande? 631 00:28:26,560 --> 00:28:28,980 Bene. 632 00:28:28,980 --> 00:28:29,832 Sì? 633 00:28:29,832 --> 00:28:33,210 >> AUDIENCE: Quando sono tentativi più veloce di tabelle hash? 634 00:28:33,210 --> 00:28:36,280 >> HANNAH: Quando sono tentativi più veloce di tabelle hash? 635 00:28:36,280 --> 00:28:39,120 Quindi, se si ha un davvero funzione hash male. 636 00:28:39,120 --> 00:28:41,840 Quindi diciamo che ero come, ecco la funzione di hash. 637 00:28:41,840 --> 00:28:43,660 Non importa quale parola tu mi dai, io sono sempre 638 00:28:43,660 --> 00:28:47,740 andando a metterlo in ordine di entrata 0. 639 00:28:47,740 --> 00:28:52,000 E così si finisce con solo mettendo tutto in una lunga lista lunga collegato. 640 00:28:52,000 --> 00:28:58,740 E così un tempo di ricerca avrebbe preso nel peggiore dei casi n se è proprio alla fine della nostra lista. 641 00:28:58,740 --> 00:29:03,150 Con la prova, non ci resta che iterare attraverso le lettere della parola. 642 00:29:03,150 --> 00:29:07,080 Quindi, anche se abbiamo aggiunto un sacco più parole per la nostra prova, 643 00:29:07,080 --> 00:29:09,620 non ci sarebbe voluto più per trovare una particolare parola. 644 00:29:09,620 --> 00:29:11,750 >> Tutto ciò che dobbiamo fare è, per ad esempio, in questo caso, 645 00:29:11,750 --> 00:29:17,170 diciamo che stiamo cercando di zoom, ci sarebbe solo dovuto iterare 646 00:29:17,170 --> 00:29:19,840 Z-O-O-M, quattro lettere. 647 00:29:19,840 --> 00:29:22,250 Ecco, questo è solo il lunghezza della parola zoom. 648 00:29:22,250 --> 00:29:25,400 Non importa quanti più parole abbiamo messo in questo tentativo. 649 00:29:25,400 --> 00:29:30,225 Possiamo sempre farlo in questi quattro passaggi. 650 00:29:30,225 --> 00:29:31,215 Impressionante. 651 00:29:31,215 --> 00:29:32,205 Sì? 652 00:29:32,205 --> 00:29:34,185 >> AUDIENCE: Così [incomprensibile] è un array, giusto? 653 00:29:34,185 --> 00:29:35,322 >> HANNAH: Mm-hm. 654 00:29:35,322 --> 00:29:37,155 AUDIENCE: Se siete alla ricerca di [incomprensibile], 655 00:29:37,155 --> 00:29:40,929 vuoi passare attraverso l'array di trovare [incomprensibile]? 656 00:29:40,929 --> 00:29:41,470 HANNAH: Certo. 657 00:29:41,470 --> 00:29:44,000 AUDIENCE: Non che prendono più tempo? 658 00:29:44,000 --> 00:29:46,370 HANNAH: Se io vado a dire che la mia matrice è sempre 659 00:29:46,370 --> 00:29:49,250 sta per essere A, B, C, D, E, F, G, bla bla bla, 660 00:29:49,250 --> 00:29:51,630 quindi se ho sempre so che è nello stesso ordine esatto, 661 00:29:51,630 --> 00:29:53,880 se io so che è sempre in ordine alfabetico, 662 00:29:53,880 --> 00:29:57,860 Posso solo dire O è il numero così e così in alfabeto. 663 00:29:57,860 --> 00:29:59,620 Basta passare a quel luogo. 664 00:29:59,620 --> 00:30:01,860 Perché ricordate, con array, possiamo accedere 665 00:30:01,860 --> 00:30:06,590 ogni elemento di tale matrice in costante tempo se sappiamo dove stiamo cercando. 666 00:30:06,590 --> 00:30:09,080 667 00:30:09,080 --> 00:30:09,580 Sì? 668 00:30:09,580 --> 00:30:12,005 >> AUDIENCE: Sul precedente scorrere [incomprensibile] 27, 669 00:30:12,005 --> 00:30:14,430 ma 26 per il primo. 670 00:30:14,430 --> 00:30:15,400 >> HANNAH: Siamo spiacenti? 671 00:30:15,400 --> 00:30:18,800 >> AUDIENCE: Non è la prima uno 0, quindi non sarebbe 26? 672 00:30:18,800 --> 00:30:24,900 >> HANNAH: Certo, così quando diciamo 27, che è andando a darci indici da 0 a 26. 673 00:30:24,900 --> 00:30:28,220 Ma se effettivamente contano quelli fuori, che sta per essere 27. 674 00:30:28,220 --> 00:30:30,007 Buona domanda. 675 00:30:30,007 --> 00:30:30,590 Qualunque altra cosa? 676 00:30:30,590 --> 00:30:31,200 Sì? 677 00:30:31,200 --> 00:30:34,420 >> AUDIENCE: Così sono tentativi più lento di tabelle hash? 678 00:30:34,420 --> 00:30:37,920 >> HANNAH: Mete stanno per essere, in teoria, più veloce di tabelle hash 679 00:30:37,920 --> 00:30:39,760 ma occupano più memoria. 680 00:30:39,760 --> 00:30:40,534 Sì? 681 00:30:40,534 --> 00:30:41,450 AUDIENCE: [incomprensibile]? 682 00:30:41,450 --> 00:30:45,770 683 00:30:45,770 --> 00:30:47,484 >> HANNAH: Mi dispiace, non ho sentito. 684 00:30:47,484 --> 00:30:48,400 AUDIENCE: [incomprensibile]. 685 00:30:48,400 --> 00:30:51,250 686 00:30:51,250 --> 00:30:54,100 0 a 25 ti dà 26. 687 00:30:54,100 --> 00:30:56,958 >> HANNAH: da 0 a 25 sarebbe dare 26, a destra. 688 00:30:56,958 --> 00:30:58,457 >> AUDIENCE: E poi [incomprensibile]. 689 00:30:58,457 --> 00:30:59,040 HANNAH: Giusto. 690 00:30:59,040 --> 00:31:04,760 Così il numero che stiamo specificando è il numero di cose nella nostra gamma. 691 00:31:04,760 --> 00:31:07,260 Quindi, se abbiamo 27, è andando a darci 0 692 00:31:07,260 --> 00:31:10,620 al 26, che darà Ci spazio per, in questo caso, 693 00:31:10,620 --> 00:31:12,770 Non sto incluso un apostrofo. 694 00:31:12,770 --> 00:31:17,040 Quindi stiamo ottenendo da 0 a 25 sono le prime 26 lettere dell'alfabeto, 695 00:31:17,040 --> 00:31:18,990 o tutte le 26 lettere dell'alfabeto. 696 00:31:18,990 --> 00:31:21,190 E poi quell'ultimo cosa, a ingresso 26, è 697 00:31:21,190 --> 00:31:24,598 sarà il controllo contrassegno, o il delta. 698 00:31:24,598 --> 00:31:26,960 Qualunque altra cosa? 699 00:31:26,960 --> 00:31:29,130 Impressionante. 700 00:31:29,130 --> 00:31:30,020 Perso il mio spazio. 701 00:31:30,020 --> 00:31:31,020 OK, fresco. 702 00:31:31,020 --> 00:31:33,240 >> Così abbiamo già toccato su questo. 703 00:31:33,240 --> 00:31:37,430 Ma la grande trade off tra paesi e tabelle hash 704 00:31:37,430 --> 00:31:39,720 è che cerca forniscono, in teoria, costante guardare in alto 705 00:31:39,720 --> 00:31:42,890 volte, ma usano un sacco di memoria. 706 00:31:42,890 --> 00:31:46,495 Bene, ora abbiamo un po ' strutture meno complesse, 707 00:31:46,495 --> 00:31:49,640 e avremo finito con C, e ci sposteremo a destra lungo. 708 00:31:49,640 --> 00:31:51,930 >> Così pile, abbiamo visto questo in conferenza in cui si 709 00:31:51,930 --> 00:31:55,020 avere qualcosa di simile a pila di vassoi dove 710 00:31:55,020 --> 00:31:57,330 l'ultima cosa che si mette sullo stack sta andando 711 00:31:57,330 --> 00:31:59,500 per essere la prima cosa si toglie. 712 00:31:59,500 --> 00:32:02,880 Ecco, questo è ciò che definisce veramente una pila è che l'ultima cosa che ha messo in 713 00:32:02,880 --> 00:32:06,080 sta per essere la prima cosa che decollare. 714 00:32:06,080 --> 00:32:09,279 E la terminologia che usiamo se abbiamo intenzione di mettere qualcosa, 715 00:32:09,279 --> 00:32:12,070 se abbiamo intenzione di aggiungere qualcosa a il nostro stack, chiamiamo che spingere. 716 00:32:12,070 --> 00:32:14,970 E se prendiamo qualcosa off, noi lo chiamiamo popping. 717 00:32:14,970 --> 00:32:17,080 E se andiamo a implementare uno stack, abbiamo 718 00:32:17,080 --> 00:32:20,660 devono essere sicuri di tenere traccia di sia la dimensione e la capacità. 719 00:32:20,660 --> 00:32:24,940 Quindi il numero totale di elementi possiamo tenere e l'attuale numero di elementi 720 00:32:24,940 --> 00:32:27,880 che stiamo tenendo. 721 00:32:27,880 --> 00:32:29,885 >> E in modo molto simile, abbiamo le code. 722 00:32:29,885 --> 00:32:34,510 E l'unica differenza è invece con pile, 723 00:32:34,510 --> 00:32:37,630 abbiamo detto l'ultima cosa che abbiamo messo su è la prima cosa che ci togliamo. 724 00:32:37,630 --> 00:32:40,940 Quindi, con le code, il prima cosa che abbiamo messo in 725 00:32:40,940 --> 00:32:43,129 sta per essere prima cosa prendiamo fuori. 726 00:32:43,129 --> 00:32:45,420 Quindi questo è come se siete in realtà in fila in un negozio 727 00:32:45,420 --> 00:32:48,140 e sei stato aiutato, poi la prima persona in linea 728 00:32:48,140 --> 00:32:50,880 dovrebbe essere la prima persona a essere aiutato. 729 00:32:50,880 --> 00:32:52,220 Quindi sarebbe una coda. 730 00:32:52,220 --> 00:32:55,880 >> Quindi abbiamo bisogno di tenere traccia della dimensioni, capacità, e la testa visto che siamo 731 00:32:55,880 --> 00:33:01,130 andando a prendere tutti fuori la parte anteriore dell'elenco invece della schiena. 732 00:33:01,130 --> 00:33:03,480 Domande su questo? 733 00:33:03,480 --> 00:33:06,330 Tutte le domande C che ti dà fastidio? 734 00:33:06,330 --> 00:33:09,590 Strutture dati, nessuna di quelle cose divertenti? 735 00:33:09,590 --> 00:33:10,530 Va bene, fresco. 736 00:33:10,530 --> 00:33:14,120 Quindi io la consegno a Alison a saltare in un po 'di programmazione. 737 00:33:14,120 --> 00:33:15,965 >> ALISON: Oh, vedremo. 738 00:33:15,965 --> 00:33:17,370 Vedremo quanto bene faccio qui. 739 00:33:17,370 --> 00:33:21,410 OK, ho intenzione di provare a volare attraverso questa roba, ragazzi. 740 00:33:21,410 --> 00:33:24,540 Hannah è andato molto in approfondita su tutte le sue cose. 741 00:33:24,540 --> 00:33:26,900 Io vado a cercare di dare una panoramica esplosione rapida 742 00:33:26,900 --> 00:33:31,290 in modo da poter arrivare a Davin con tutto il divertimento JavaScript e sicurezza cose 743 00:33:31,290 --> 00:33:33,380 che forse in realtà voglio sentire di più. 744 00:33:33,380 --> 00:33:36,600 >> OK, come diceva Hannah, se Per qualsiasi domanda, 745 00:33:36,600 --> 00:33:39,170 Sto andando troppo veloce, per favore, fammi sapere. 746 00:33:39,170 --> 00:33:42,114 Risponderò alle domande, se necessario. 747 00:33:42,114 --> 00:33:45,280 Quindi, per iniziare, stiamo per iniziare probabilmente una delle prime cose 748 00:33:45,280 --> 00:33:48,730 hai imparato con web programmazione, le autorizzazioni. 749 00:33:48,730 --> 00:33:52,720 Così chmod, voi ragazzi dovrebbe essere rimasto maestri di questo con tutto il web 750 00:33:52,720 --> 00:33:54,870 programmazione che hai sta facendo ultimamente. 751 00:33:54,870 --> 00:33:57,320 E 'fondamentalmente solo un comando che cambia i permessi 752 00:33:57,320 --> 00:34:00,779 o le autorizzazioni di accesso dei nostri oggetti del file system. 753 00:34:00,779 --> 00:34:02,570 Naturalmente, in realtà vedere questi, se siete 754 00:34:02,570 --> 00:34:04,910 avere alcun problema con questi durante il vostro set di problemi, 755 00:34:04,910 --> 00:34:11,460 si può avere usato ls -l, che è lungo, per ottenere il tipo di visualizzazione come questo, 756 00:34:11,460 --> 00:34:14,209 dove realmente vede tutto i permessi di un file. 757 00:34:14,209 --> 00:34:16,850 758 00:34:16,850 --> 00:34:20,732 >> E davvero, stiamo solo andando a andare attraverso abbastanza rapidamente solo belle 759 00:34:20,732 --> 00:34:21,940 o meno quello che ciascuno di questi significa. 760 00:34:21,940 --> 00:34:24,481 Così abbiamo d proprio qui, che appena sta per la directory. 761 00:34:24,481 --> 00:34:26,790 762 00:34:26,790 --> 00:34:31,739 Ovviamente qui, vediamo rwx, che è leggibile, scrivibile, ed eseguibile. 763 00:34:31,739 --> 00:34:37,090 Questi potrebbero anche essere rappresentati come bit, di cui parleremo in nella pagina successiva. 764 00:34:37,090 --> 00:34:40,699 Così ogni triade che abbiamo visto qui, quindi è tre triadi. 765 00:34:40,699 --> 00:34:48,120 Abbiamo rwx, r nulla x e r nulla x per questo primo file. 766 00:34:48,120 --> 00:34:49,690 E 'questa struttura generale. 767 00:34:49,690 --> 00:34:50,940 >> Così abbiamo un po 'directory. 768 00:34:50,940 --> 00:34:53,999 Abbiamo qualche gruppo di utenti con queste autorizzazioni. 769 00:34:53,999 --> 00:34:57,040 Alcuni gruppo che dispone di queste autorizzazioni, e un mondo che ha un permesso. 770 00:34:57,040 --> 00:34:59,420 Si può pensare a questi come una triade. 771 00:34:59,420 --> 00:35:01,130 Si può pensare a questi come tre bit. 772 00:35:01,130 --> 00:35:04,060 Così possono contenere valori ovunque da 0 fino 773 00:35:04,060 --> 00:35:07,350 a 7, ed è per questo a volte abbiamo avuto di fare chmod 774 00:35:07,350 --> 00:35:17,510 600 invece di chmod rw qualunque. 775 00:35:17,510 --> 00:35:19,170 Arriveremo in un esempio qui. 776 00:35:19,170 --> 00:35:24,260 Ma in fondo, si può pensare di questi come sia appena rwx, 777 00:35:24,260 --> 00:35:28,520 o si può pensare a loro come alcuni numero dove questo primo qui 778 00:35:28,520 --> 00:35:31,480 rappresenta un numero compreso tra 0 e 7, questa seconda 779 00:35:31,480 --> 00:35:33,970 rappresenta un numero compreso tra 0 e 7, e la terza 780 00:35:33,970 --> 00:35:38,245 rappresenta un numero compreso tra 0 e 7, OK? 781 00:35:38,245 --> 00:35:42,700 >> r ha un valore di 4. w ha un valore di 2, e x 782 00:35:42,700 --> 00:35:49,230 ha un valore di 1, che è il motivo per cui questo il permesso qui sarebbe chmod 700. 783 00:35:49,230 --> 00:35:53,520 Perché in questo caso qui, dice che hanno il primo bit si è capovolto su. 784 00:35:53,520 --> 00:35:55,380 Così abbiamo 4 per la lettura. 785 00:35:55,380 --> 00:35:58,730 Il secondo bit è accese per w, che è 2, così ora abbiamo 6. 786 00:35:58,730 --> 00:36:02,070 E il terzo bit è capovolto su per x, che è 1, in modo da ottenere sette. 787 00:36:02,070 --> 00:36:04,820 E, naturalmente, il nostro gruppo e il nostro mondo sono ogni 0. 788 00:36:04,820 --> 00:36:07,770 Quindi questo è anche il equivalente di chmod 700. 789 00:36:07,770 --> 00:36:12,081 E vorrei provare a comprendere la corrispondenza tra quelli. 790 00:36:12,081 --> 00:36:14,080 Non sono sicuro se ha venire su un quiz prima, 791 00:36:14,080 --> 00:36:18,590 ma sarebbe un domanda che potrei chiedere. 792 00:36:18,590 --> 00:36:22,110 >> Solo un po 'andando ancora ulteriormente in chmod qui, qui 793 00:36:22,110 --> 00:36:27,730 è il molto generale struttura di una chiamata chmod. 794 00:36:27,730 --> 00:36:29,500 Così, naturalmente, abbiamo chmod qui. 795 00:36:29,500 --> 00:36:34,410 Riferimenti, ciò che questo si riferisce è che stiamo dando queste autorizzazioni a 796 00:36:34,410 --> 00:36:36,570 o che stiamo prendendo questi permessi di distanza dal. 797 00:36:36,570 --> 00:36:44,330 Così abbiamo una qui nelle autorizzazioni, come vi abbiamo dato chmod un plus x, 798 00:36:44,330 --> 00:36:45,440 come vedremo presto. 799 00:36:45,440 --> 00:36:48,460 una significa solo dare a questi specifici autorizzazioni per tutti. 800 00:36:48,460 --> 00:36:49,600 Dare loro a tutti. 801 00:36:49,600 --> 00:36:55,370 Così si potrebbe benissimo avere u più x o g più x o o più x o multipla 802 00:36:55,370 --> 00:36:55,870 thereof. 803 00:36:55,870 --> 00:36:59,280 Così prima parte è sempre sta per essere i riferimenti. 804 00:36:59,280 --> 00:37:03,220 Chi siamo noi dando queste autorizzazioni a, o che stiamo prendendo li da? 805 00:37:03,220 --> 00:37:04,850 >> Il secondo è l'operatore. 806 00:37:04,850 --> 00:37:07,350 Così voi ragazzi hanno per lo più affrontato più. 807 00:37:07,350 --> 00:37:12,140 Questo dà autorizzazioni per chi si sta dando loro, 808 00:37:12,140 --> 00:37:14,840 considerando meno, logicamente, li rimuove. 809 00:37:14,840 --> 00:37:16,880 Quindi niente di troppo terribile lì. 810 00:37:16,880 --> 00:37:23,060 E poi modi è che cosa abbiamo parlato con la lettura, la scrittura o esecuzione. 811 00:37:23,060 --> 00:37:29,070 Così un plus x significa dare eseguibile autorizzazioni per tutti. 812 00:37:29,070 --> 00:37:33,430 E poi, ovviamente, su cui file o directory specifica. 813 00:37:33,430 --> 00:37:33,980 OK? 814 00:37:33,980 --> 00:37:36,010 Tutti bene con chmod? 815 00:37:36,010 --> 00:37:37,850 Non troppo male? 816 00:37:37,850 --> 00:37:42,417 >> OK, così HTML, qualcuno di voi sono abbastanza vecchio a-- MySpace età? 817 00:37:42,417 --> 00:37:44,750 Ho inviato questo a mia sezione, e letteralmente la metà delle persone 818 00:37:44,750 --> 00:37:45,790 mi ha guardato come se fossi pazzo. 819 00:37:45,790 --> 00:37:47,498 E mi sono detto, ragazzi, non siamo quel vecchio. 820 00:37:47,498 --> 00:37:48,910 Dai. 821 00:37:48,910 --> 00:37:53,360 Così HyperText Markup Language, è onestamente solo un modo per te 822 00:37:53,360 --> 00:37:57,990 per visualizzare certe cose sul web. 823 00:37:57,990 --> 00:37:59,210 Quindi è un linguaggio di markup. 824 00:37:59,210 --> 00:38:00,640 Non è un linguaggio di scripting. 825 00:38:00,640 --> 00:38:02,160 Non c'è logica in esso. 826 00:38:02,160 --> 00:38:05,710 È semplicemente modificare il Viene visualizzato modo qualcosa. 827 00:38:05,710 --> 00:38:07,670 OK, quindi questo è un importante distinzione da fare. 828 00:38:07,670 --> 00:38:12,030 E 'considerato un linguaggio di markup, non un linguaggio di scripting. 829 00:38:12,030 --> 00:38:15,100 >> Quindi qui abbiamo i nostri tag HTML. 830 00:38:15,100 --> 00:38:20,390 Su questa diapositiva sono probabilmente la maggior parte del quelli che si dovrebbe essere a conoscenza 831 00:38:20,390 --> 00:38:22,390 ed essere veramente confortevole con. 832 00:38:22,390 --> 00:38:25,700 Così, ovviamente, abbiamo il nostro tag HTML, che 833 00:38:25,700 --> 00:38:29,930 designa che tutto in tra questi due saranno HTML. 834 00:38:29,930 --> 00:38:33,070 Abbiamo alcuni link, che ovviamente vi darà 835 00:38:33,070 --> 00:38:34,990 un link ad una pagina web esterna. 836 00:38:34,990 --> 00:38:37,520 Alcuni titolo, all'interno della nostra testa qui. 837 00:38:37,520 --> 00:38:40,020 E abbiamo il nostro corpo con h1, che è un'intestazione, 838 00:38:40,020 --> 00:38:42,260 quindi la farò bello e audace e più grande. 839 00:38:42,260 --> 00:38:46,040 E poi, abbiamo un po ' p, che è un paragrafo. 840 00:38:46,040 --> 00:38:49,000 Probabilmente si dovrebbe sapere e avere familiarità con le cose 841 00:38:49,000 --> 00:38:54,030 come come si inserisce un'immagine, sono Ci sono delle altre classi di intestazione? 842 00:38:54,030 --> 00:38:57,240 Sarei sicuramente confortevole con div. 843 00:38:57,240 --> 00:39:00,840 Quindi questi hanno la maggioranza dei tag che si dovrebbe essere a conoscenza. 844 00:39:00,840 --> 00:39:04,370 Ma naturalmente, come con tutto in CS 50, l'elenco non è esaustivo. 845 00:39:04,370 --> 00:39:08,200 Quindi assicuratevi di pennello su quella. 846 00:39:08,200 --> 00:39:13,260 >> CSS, così CSS, se qualcuno di voi guardare mio seminario di due settimane fa, 847 00:39:13,260 --> 00:39:16,250 è in realtà solo un modo per lo stile la tua pagina web? 848 00:39:16,250 --> 00:39:18,950 OK, così abbiamo qualche linguaggio di markup. 849 00:39:18,950 --> 00:39:23,220 HTML, che si prende cura del proprio testo e dove potrebbe essere sulla pagina. 850 00:39:23,220 --> 00:39:25,760 Ma CSS è davvero ciò che rende abbastanza. 851 00:39:25,760 --> 00:39:30,690 Si potrebbe avere questi in HTML file, ma come avremo modo di parlare più avanti, 852 00:39:30,690 --> 00:39:32,660 Sono abbastanza sicuro che potrebbe sia la diapositiva successiva, esso 853 00:39:32,660 --> 00:39:35,620 è pratica comune, e in realtà pratica che abbiamo davvero incoraggiare, 854 00:39:35,620 --> 00:39:40,670 per voi per tenerli separati quando abbiamo parlare di MVC e tutto quel paradigma. 855 00:39:40,670 --> 00:39:42,490 Questo è veramente ciò che questo alimenta. 856 00:39:42,490 --> 00:39:46,110 >> Quindi CSS è solo un modo per rendere le cose sembrano abbastanza. 857 00:39:46,110 --> 00:39:50,500 Le cose qui, come corpo e #title e .info, 858 00:39:50,500 --> 00:39:54,340 questi sono chiamati selettori e cosa fanno si selezionano le cose specifiche 859 00:39:54,340 --> 00:39:59,260 all'interno del file HTML e applicare qualunque stile, 860 00:39:59,260 --> 00:40:04,090 qualunque tipo di cose che si desidera, a tale elemento specifico del vostro web 861 00:40:04,090 --> 00:40:04,590 pagina. 862 00:40:04,590 --> 00:40:08,820 Così qui, abbiamo un colore di sfondo e un colore 863 00:40:08,820 --> 00:40:12,450 e una famiglia di font che viene applicato a ciò che è nel corpo. 864 00:40:12,450 --> 00:40:15,530 Quindi, se abbiamo guardato indietro qui, non si applicherebbe al titolo. 865 00:40:15,530 --> 00:40:22,340 Esso si applica solo a ciò che è in questi selettori del corpo, OK? 866 00:40:22,340 --> 00:40:25,250 >> Con il titolo qui, questo è andando essere la stessa cosa, 867 00:40:25,250 --> 00:40:28,410 il colore del testo essendo blu è solo andare 868 00:40:28,410 --> 00:40:33,870 di influenzare ciò che è dentro i selettori titolo. 869 00:40:33,870 --> 00:40:36,580 Così come informazioni qui, il testo sarà rosa, 870 00:40:36,580 --> 00:40:38,600 di qualunque info, che è proprio qui. 871 00:40:38,600 --> 00:40:40,860 Quindi l'unica cosa che sarebbe rosa in questa pagina 872 00:40:40,860 --> 00:40:44,100 è la data, Lunedi, November 17, 2014. 873 00:40:44,100 --> 00:40:48,770 OK, quindi CSS è solo un modo per avere un maggiore controllo over-- sì? 874 00:40:48,770 --> 00:40:51,850 >> AUDIENCE: Perché avete di utilizzare l'hash con il titolo? 875 00:40:51,850 --> 00:40:55,170 >> HANNAH: diapositiva successiva, prometto! 876 00:40:55,170 --> 00:40:56,810 Ci arriveremo. 877 00:40:56,810 --> 00:40:59,830 Quindi questo è il motivo per cui dobbiamo usare hash. 878 00:40:59,830 --> 00:41:03,429 Così selettori assumono tre principali forme che si parla di ragazzi circa. 879 00:41:03,429 --> 00:41:05,595 I fyou voglio imparare di più, c'è molto là fuori. 880 00:41:05,595 --> 00:41:07,540 C'è grande documentazione CSS. 881 00:41:07,540 --> 00:41:12,680 C'è un nome di tag, che ha a che fare con solo i tag normali in HTML. 882 00:41:12,680 --> 00:41:17,210 Così h1, p, div, h2, questo genere di cose. 883 00:41:17,210 --> 00:41:20,320 E possiamo solo citare quelli come è. 884 00:41:20,320 --> 00:41:22,650 Quindi, come si vede qui con corpo, si tratta di un tag normale. 885 00:41:22,650 --> 00:41:26,660 Così possiamo semplicemente mettere corpo quando stiamo parlando del nostro file CSS. 886 00:41:26,660 --> 00:41:29,730 >> Con il titolo, l'unica ragione che ha questo hash è che avere ciò che è 887 00:41:29,730 --> 00:41:31,010 considerato un ID. 888 00:41:31,010 --> 00:41:35,400 Così un ID deve essere sempre unico all'interno della pagina HTML 889 00:41:35,400 --> 00:41:37,930 in modo che quando si è riferendosi ad esso, 890 00:41:37,930 --> 00:41:41,990 sai che ti stai riferendo solo di una cosa specifica. 891 00:41:41,990 --> 00:41:46,270 Quindi, in questo caso qui, con la nostra h1 qui, CS 50 recensione sessione, 892 00:41:46,270 --> 00:41:47,810 abbiamo un id di titolo. 893 00:41:47,810 --> 00:41:54,280 Quindi, al fine di riportare solo che pezzo della nostra HTML, facciamo un titolo hash. 894 00:41:54,280 --> 00:41:58,080 Proprio per convenzione, gli ID sono designati con un hash di fronte a loro. 895 00:41:58,080 --> 00:42:01,650 Allo stesso modo, vediamo informazioni qui è una classe. 896 00:42:01,650 --> 00:42:06,070 E così di classe con i CSS è designata come classe dot 897 00:42:06,070 --> 00:42:08,895 o dot qualunque essa classe è. 898 00:42:08,895 --> 00:42:10,850 Quindi in questo caso qui, è informazioni. 899 00:42:10,850 --> 00:42:13,090 >> Così prendo indietro. 900 00:42:13,090 --> 00:42:16,200 Entrambi questi sarebbe rosa per il nostro CSS qui 901 00:42:16,200 --> 00:42:18,430 perché entrambi hanno una classe di informazioni. 902 00:42:18,430 --> 00:42:23,070 E nel nostro file CSS, abbiamo designato che qualsiasi cosa con una classe di informazioni 903 00:42:23,070 --> 00:42:24,120 deve essere rosa. 904 00:42:24,120 --> 00:42:25,968 Questo fa senso? 905 00:42:25,968 --> 00:42:27,435 Sì? 906 00:42:27,435 --> 00:42:30,731 >> AUDIENCE: Se si dovesse fare tutto nel corpo bianco, 907 00:42:30,731 --> 00:42:32,814 e quindi si tenta di fare qualcosa al suo interno blu, 908 00:42:32,814 --> 00:42:34,770 vorrei che causare problemi? 909 00:42:34,770 --> 00:42:37,310 >> HANNAH: Così CSS è fogli di stile CSS. 910 00:42:37,310 --> 00:42:40,730 Quindi, qualunque sia rivolto verso la fondo avrà la precedenza. 911 00:42:40,730 --> 00:42:44,080 Quindi, se si fa qualcosa con il corpo, e fate tutto bianco, 912 00:42:44,080 --> 00:42:49,300 e poi in seguito si modifica il titolo o si modifica il testo all'interno del corpo, 913 00:42:49,300 --> 00:42:50,560 sovrascrive quello. 914 00:42:50,560 --> 00:42:55,360 Quindi niente verso il fondo avrà la precedenza. 915 00:42:55,360 --> 00:42:56,730 Sì? 916 00:42:56,730 --> 00:42:59,627 >> Pubblico: E ID sono univoci, ma le classi possono essere più? 917 00:42:59,627 --> 00:43:00,210 HANNAH: Giusto. 918 00:43:00,210 --> 00:43:06,320 Così gli ID dovrebbero essere unico, e le classi possono fare riferimento a tutte le cose che vuoi. 919 00:43:06,320 --> 00:43:07,580 Altre domande? 920 00:43:07,580 --> 00:43:09,800 Sì. 921 00:43:09,800 --> 00:43:11,210 >> AUDIENCE: [incomprensibile]. 922 00:43:11,210 --> 00:43:13,509 Mi chiedo se questo fa la differenza. 923 00:43:13,509 --> 00:43:15,217 HANNAH: Mi dispiace, qual era la domanda? 924 00:43:15,217 --> 00:43:18,960 AUDIENCE: C'è piccolo "F" e del capitale "F." 925 00:43:18,960 --> 00:43:21,440 HANNAH: Quindi la differenza tra le piccole "f" e del capitale "F" 926 00:43:21,440 --> 00:43:22,606 non dovrebbe fare la differenza. 927 00:43:22,606 --> 00:43:26,330 Quindi, "f" sarà 15 in entrambi i casi. 928 00:43:26,330 --> 00:43:28,130 Freddo, altro? 929 00:43:28,130 --> 00:43:29,930 Tutti bene, CSS? 930 00:43:29,930 --> 00:43:30,850 Sì? 931 00:43:30,850 --> 00:43:31,790 >> AUDIENCE: Siamo spiacenti. 932 00:43:31,790 --> 00:43:35,550 Si può avere una classe e un ID? 933 00:43:35,550 --> 00:43:38,030 >> HANNAH: Sì, è possibile. 934 00:43:38,030 --> 00:43:40,420 Le cose possono avere sia una classe e un ID. 935 00:43:40,420 --> 00:43:44,670 E mi raccomando prova questi da soli. 936 00:43:44,670 --> 00:43:50,480 CSS si impara meglio solo facendo qualcosa, molto semplice pagina web, 937 00:43:50,480 --> 00:43:53,440 redazione qualche CSS, e basta vedere come interagiscono. 938 00:43:53,440 --> 00:43:56,970 E otterrai una molto buona, senso intuitivo per come funziona. 939 00:43:56,970 --> 00:43:58,810 >> OK, tutti bene con i CSS? 940 00:43:58,810 --> 00:44:01,280 Siete tutti andando a fare bellissimi siti web con CSS ora. 941 00:44:01,280 --> 00:44:05,460 OK, migliori pratiche, appena cose da tenere a mente, le cose 942 00:44:05,460 --> 00:44:09,810 che-- è per questo che attraccheremo voi per il progettista e quant'altro. 943 00:44:09,810 --> 00:44:11,820 Quindi chiudere tutte le tag HTML. 944 00:44:11,820 --> 00:44:14,840 Quindi, se avete un corpo aperto, ci dovrebbe essere un corpo vicino. 945 00:44:14,840 --> 00:44:18,180 Se si dispone di un punto aperto, ci dovrebbe essere un punto vicino. 946 00:44:18,180 --> 00:44:19,555 Verificare la pagina convalida. 947 00:44:19,555 --> 00:44:23,330 Voi ragazzi dovreste conoscere molto bene con questo da p-set sette 948 00:44:23,330 --> 00:44:26,350 con CS 50 finanza con il validatore W3. 949 00:44:26,350 --> 00:44:28,340 E come ho detto prima, uno dei nostri grandi paradigmi 950 00:44:28,340 --> 00:44:33,780 è separare il tuo stile con i CSS dal markup, che è HTML. 951 00:44:33,780 --> 00:44:36,900 E poi, naturalmente, abbiamo questo grande XKCD qui. 952 00:44:36,900 --> 00:44:38,280 Yay, comico! 953 00:44:38,280 --> 00:44:41,340 >> OK, TCP / IP. 954 00:44:41,340 --> 00:44:44,650 Tra questi e HTTP, fondamentalmente sono entrambi i protocolli. 955 00:44:44,650 --> 00:44:46,810 Così si può solo pensare di loro come un insieme di regole 956 00:44:46,810 --> 00:44:50,110 che governano il modo le cose muoversi attraverso internet. 957 00:44:50,110 --> 00:44:53,410 Così controllo della trasmissione protocollo, o protocollo internet, 958 00:44:53,410 --> 00:44:57,280 è solo un modo per essere sicuri che i dati ottiene dove sta andando 959 00:44:57,280 --> 00:45:00,030 e che noi sappiamo se siamo mai dati mancanti. 960 00:45:00,030 --> 00:45:03,520 Quindi, se voi ragazzi ripenso alla conferenza un paio di settimane fa con David 961 00:45:03,520 --> 00:45:06,980 dove abbiamo avuto quattro buste, che erano tutti numerati come uno di quattro, 962 00:45:06,980 --> 00:45:11,300 due dei quattro, tre di quattro, quattro quattro, questo è solo un insieme di regole. 963 00:45:11,300 --> 00:45:13,830 Abbiamo detto, OK, ogni volta che siamo inviare più di un pacchetto, 964 00:45:13,830 --> 00:45:16,610 stiamo andando al numero con che numero è 965 00:45:16,610 --> 00:45:19,040 e quanti totale che l'utente dovrebbe ottenere. 966 00:45:19,040 --> 00:45:22,540 >> E questo è solo dicendo chi sta ricevendo i dati se i loro 967 00:45:22,540 --> 00:45:26,120 hanno ottenuto tutto, o se qualcosa si è perso lungo la strada. 968 00:45:26,120 --> 00:45:28,840 E hanno bisogno di chiedere di nuovo. 969 00:45:28,840 --> 00:45:31,140 Questo è in realtà solo un insieme di regole. 970 00:45:31,140 --> 00:45:33,650 Ecco come si può pensare che, OK? 971 00:45:33,650 --> 00:45:37,700 Ed inoltre, si specifica la porta, che ragazzi can-- Lo so durante la lezione, 972 00:45:37,700 --> 00:45:39,170 avevano un intero elenco di porte. 973 00:45:39,170 --> 00:45:41,630 Ma noi non abbiamo qui in questo momento. 974 00:45:41,630 --> 00:45:45,290 >> Protocollo di trasferimento Così ipertestuale è, ancora una volta, si tratta di un altro protocollo. 975 00:45:45,290 --> 00:45:48,630 Quindi è un altro set di regole che governano, in questo caso, 976 00:45:48,630 --> 00:45:51,130 come ipertesto è trasferito. 977 00:45:51,130 --> 00:45:54,340 Quindi permette solo i browser per parlare ai server web. 978 00:45:54,340 --> 00:45:56,910 E come abbiamo detto qui, è come handshaking umana. 979 00:45:56,910 --> 00:46:00,480 E 'solo un modo per governare come il web server è 980 00:46:00,480 --> 00:46:02,690 andando a interagire con il browser. 981 00:46:02,690 --> 00:46:05,660 E abbiamo solo un paio di esempi. 982 00:46:05,660 --> 00:46:09,100 Abbiamo alcune richieste qui dove GET è il metodo. 983 00:46:09,100 --> 00:46:13,760 Abbiamo HTTP 1.1, che è versione del protocollo per noi. 984 00:46:13,760 --> 00:46:17,230 E poi, il padrone di casa, che è ciò che stiamo in realtà cercando di accedere. 985 00:46:17,230 --> 00:46:21,800 E poi, come vedete qui, noi ottenere qualche risposta con questo 200 986 00:46:21,800 --> 00:46:25,032 OK come il nostro codice di risposta HTTP. 987 00:46:25,032 --> 00:46:27,240 Abbiamo una grande lista vado per tirare su in un secondo 988 00:46:27,240 --> 00:46:29,430 che voi ragazzi dovreste essere a conoscenza. 989 00:46:29,430 --> 00:46:35,750 E noi abbiamo questo tipo di contenuto text / HTML, che dice solo che tipo di dati 990 00:46:35,750 --> 00:46:39,990 stiamo ricevendo dal server, OK? 991 00:46:39,990 --> 00:46:44,230 Questo host e questo tipo di contenuto fanno parte delle intestazioni HTTP. 992 00:46:44,230 --> 00:46:49,610 Si può avere come pochi o il meno necessarie per il contesto di ciò 993 00:46:49,610 --> 00:46:50,580 hai a che fare con. 994 00:46:50,580 --> 00:46:53,371 A volte avrete un sacco di le informazioni provenienti dal server. 995 00:46:53,371 --> 00:46:56,040 Forse stanno richiedendo molto delle informazioni dall'utente. 996 00:46:56,040 --> 00:46:57,600 Esso varia a seconda del contesto. 997 00:46:57,600 --> 00:47:01,144 Se si guarda al CS 50 Study, c'è molto di più su quello. 998 00:47:01,144 --> 00:47:03,060 Ma abbiamo un sacco di ottenere attraverso, quindi vado 999 00:47:03,060 --> 00:47:05,760 per andare avanti a destra se va bene con voi? 1000 00:47:05,760 --> 00:47:07,960 Freddo. 1001 00:47:07,960 --> 00:47:08,460 Resisti. 1002 00:47:08,460 --> 00:47:11,182 Io sicuramente ho che lista intera di-- eh! 1003 00:47:11,182 --> 00:47:13,140 Non so perché questo è tutto il modo qui. 1004 00:47:13,140 --> 00:47:15,660 Pensavo letteralmente spostato mentre ero sitting-- 1005 00:47:15,660 --> 00:47:16,540 >> DAVIN: Vuoi insegnare? 1006 00:47:16,540 --> 00:47:17,420 O vuoi che io insegno? 1007 00:47:17,420 --> 00:47:20,010 >> PUBBLICO: ho pensato che potevamo solo mostrare loro per cominciare. 1008 00:47:20,010 --> 00:47:22,210 Voglio dire, si può andare in ulteriormente, ma 1009 00:47:22,210 --> 00:47:26,030 pensava che aveva più senso dal momento che è stato solo parlando di stati HTTP. 1010 00:47:26,030 --> 00:47:28,200 Quindi, ecco la lista. 1011 00:47:28,200 --> 00:47:31,730 Credo che quello che sta per accadere è Davin sta per entrare in un secondo momento. 1012 00:47:31,730 --> 00:47:35,330 Ma c'è tutta una serie, un Anteprima del gusto a venire. 1013 00:47:35,330 --> 00:47:41,640 OK, stiamo andando a blow-- questo sta andando di essere un corso accelerato di PHP come nessun altro. 1014 00:47:41,640 --> 00:47:44,874 >> Così PHP, ipertesto preprocessore, si tratta di un backronym ricorsivo, 1015 00:47:44,874 --> 00:47:46,540 il che significa che è stato chiamato qualcos'altro. 1016 00:47:46,540 --> 00:47:49,050 E poi erano come, questo in realtà non ha senso. 1017 00:47:49,050 --> 00:47:52,210 Così appena chiamato it-- ed era un acronimo, 1018 00:47:52,210 --> 00:47:54,840 in modo che solo reso PHP ipertesto preprocessore, che 1019 00:47:54,840 --> 00:47:55,980 semplicemente non ha senso. 1020 00:47:55,980 --> 00:47:57,714 Storia Fun. 1021 00:47:57,714 --> 00:47:58,880 Si tratta di un linguaggio di programmazione. 1022 00:47:58,880 --> 00:48:02,360 Quindi, per quanto mi sottolineare che HTML non è un linguaggio di programmazione, 1023 00:48:02,360 --> 00:48:05,350 si tratta di un linguaggio di markup, PHP è un linguaggio di programmazione. 1024 00:48:05,350 --> 00:48:07,422 Come sai che questo è perché c'è logica. 1025 00:48:07,422 --> 00:48:08,380 Ci sono condizionali. 1026 00:48:08,380 --> 00:48:12,750 Abbiamo variabili, mentre noi avere nessuna di queste cose in HTML. 1027 00:48:12,750 --> 00:48:16,960 >> Va bene, allora abbiamo questa piccola bit qui che è come un assaggio di PHP. 1028 00:48:16,960 --> 00:48:20,510 Così basi, i nomi delle variabili iniziare con il simbolo del dollaro. 1029 00:48:20,510 --> 00:48:21,500 Un sacco di gente piace. 1030 00:48:21,500 --> 00:48:22,371 Ricorda di noi soldi. 1031 00:48:22,371 --> 00:48:22,995 E 'tutto fantastico. 1032 00:48:22,995 --> 00:48:25,280 Noi tutti vogliamo PHP. 1033 00:48:25,280 --> 00:48:28,020 Quindi noi non specifichiamo un Tipo più variabile. 1034 00:48:28,020 --> 00:48:29,995 Esso viene determinato in fase di esecuzione. 1035 00:48:29,995 --> 00:48:32,710 1036 00:48:32,710 --> 00:48:35,890 L'interprete sarà come, oh, ci limiteremo a correre attraverso, 1037 00:48:35,890 --> 00:48:39,565 e secondo il contesto, Vedremo cosa tipi di tipi 1038 00:48:39,565 --> 00:48:41,560 queste variabili devono avere. 1039 00:48:41,560 --> 00:48:42,815 Non c'è alcuna funzione principale. 1040 00:48:42,815 --> 00:48:43,690 Le cose appena eseguito. 1041 00:48:43,690 --> 00:48:47,851 Voi ragazzi con il tuo importazione nel vostro p-set scorso, si noterà questo. 1042 00:48:47,851 --> 00:48:49,350 Non c'era in realtà una funzione principale. 1043 00:48:49,350 --> 00:48:52,070 Devi solo scritto quello che si voleva succedere. 1044 00:48:52,070 --> 00:48:53,280 E solo tipo di successo. 1045 00:48:53,280 --> 00:48:56,760 Ecco, questo è il PHP per voi. 1046 00:48:56,760 --> 00:48:59,180 >> Gli array sono molto simili. 1047 00:48:59,180 --> 00:49:01,270 Abbiamo ancora questa staffa. 1048 00:49:01,270 --> 00:49:05,940 Qui, abbiamo un po 'variabile chiamato arr, ed è pari 1049 00:49:05,940 --> 00:49:08,540 a-- abbiamo il nostro normale Notazione staffa. 1050 00:49:08,540 --> 00:49:10,630 E abbiamo un valore chiave. 1051 00:49:10,630 --> 00:49:14,630 E la grande differenza tra C e PHP array 1052 00:49:14,630 --> 00:49:19,330 è che possiamo avere questo associate-- possiamo associare i valori alle chiavi. 1053 00:49:19,330 --> 00:49:22,440 Così, invece di avere un array indicizzato 1054 00:49:22,440 --> 00:49:26,630 dal numero o posizione di tale elemento nella matrice, 1055 00:49:26,630 --> 00:49:29,060 possiamo effettivamente associarlo con una chiave. 1056 00:49:29,060 --> 00:49:36,700 Dove si può dire, OK, voglio prescindere valore è associato con frutta. 1057 00:49:36,700 --> 00:49:39,280 E forse abbiamo frutta andati a banana. 1058 00:49:39,280 --> 00:49:41,760 Così sarebbe tornato di banana a noi. 1059 00:49:41,760 --> 00:49:44,100 >> Ma in fondo, il più cosa potente su questo 1060 00:49:44,100 --> 00:49:47,960 è che se voi ragazzi ricordare il demo da lezione dove abbiamo praticamente 1061 00:49:47,960 --> 00:49:53,050 speller riscritto in PHP, e ricerca era-- era davvero come, 1062 00:49:53,050 --> 00:49:55,007 esiste questa chiave? 1063 00:49:55,007 --> 00:49:56,590 Questo è davvero sorta di potere di esso. 1064 00:49:56,590 --> 00:49:58,560 Non hai bisogno di iterare attraverso l'array. 1065 00:49:58,560 --> 00:50:00,311 Non hai bisogno di sapere quello spazio che è in. 1066 00:50:00,311 --> 00:50:01,976 Potrebbe essere alla fine o all'inizio. 1067 00:50:01,976 --> 00:50:04,790 Finché si conosce la chiave che è associato con il valore, 1068 00:50:04,790 --> 00:50:09,740 PHP può solo sputare quel valore terzino destro fuori di te, OK? 1069 00:50:09,740 --> 00:50:12,960 >> E poi, abbiamo anche appena avere solo perché noi 1070 00:50:12,960 --> 00:50:16,750 può avere coppie di valori chiave non significa che devi. 1071 00:50:16,750 --> 00:50:19,180 È anche possibile creare una matrice normale come qui, 1072 00:50:19,180 --> 00:50:21,540 nella parte inferiore, dove è solo uno, due, tre, quattro. 1073 00:50:21,540 --> 00:50:22,510 Questi sono i nostri valori. 1074 00:50:22,510 --> 00:50:25,320 Ed infatti, le chiavi sono gli indici. 1075 00:50:25,320 --> 00:50:26,830 Quindi la chiave per una sarebbe zero. 1076 00:50:26,830 --> 00:50:28,610 La chiave per due sarebbe uno. 1077 00:50:28,610 --> 00:50:31,910 Così via e così via, a meno si assegna in modo esplicito una chiave, 1078 00:50:31,910 --> 00:50:34,630 si potrebbe supporre che la valore è solo il loro indice. 1079 00:50:34,630 --> 00:50:37,290 Questo fa senso per tutti? 1080 00:50:37,290 --> 00:50:38,070 Nessuna domanda? 1081 00:50:38,070 --> 00:50:38,930 Impressionante. 1082 00:50:38,930 --> 00:50:44,420 >> OK, foreach è un modo per scorrere gli array. 1083 00:50:44,420 --> 00:50:47,490 Così abbiamo qualcosa qui, solo la struttura generale. 1084 00:50:47,490 --> 00:50:51,020 Così foreach, il nome di la nostra gamma, come qualunque 1085 00:50:51,020 --> 00:50:53,930 si desidera chiamare ogni elemento dell'array, 1086 00:50:53,930 --> 00:50:57,270 e possiamo fare qualcosa con tale elemento o con quel valore. 1087 00:50:57,270 --> 00:50:58,680 Così abbiamo un esempio qui. 1088 00:50:58,680 --> 00:51:05,770 Abbiamo un associativa array con queste due voci 1089 00:51:05,770 --> 00:51:10,080 con la barra di essere associati con foo e Qux essere associate a baz. 1090 00:51:10,080 --> 00:51:12,180 Così tasti sono foo e baz. 1091 00:51:12,180 --> 00:51:13,650 I valori sono bar e qux. 1092 00:51:13,650 --> 00:51:18,560 Così foreach, abbiamo la nostra gamma qui, come la coppia di valori chiave. 1093 00:51:18,560 --> 00:51:21,560 Questo ci permette di accedere sia la chiave e il valore. 1094 00:51:21,560 --> 00:51:23,680 Forse si vuole solo il valore, nel qual caso 1095 00:51:23,680 --> 00:51:27,640 si può solo fare come arr da $ valore, e poi si 1096 00:51:27,640 --> 00:51:30,640 sono solo accedere al valore come eseguire iterazioni. 1097 00:51:30,640 --> 00:51:32,600 Ma forse, per alcuni motivo, si vuole la chiave, 1098 00:51:32,600 --> 00:51:35,460 ed è per questo che ho scelto questo esempio invece. 1099 00:51:35,460 --> 00:51:40,240 Così si può effettivamente manipolare chiave e il valore in questo caso. 1100 00:51:40,240 --> 00:51:41,070 OK? 1101 00:51:41,070 --> 00:51:41,905 Domanda? 1102 00:51:41,905 --> 00:51:44,279 >> AUDIENCE: Se si voleva basta modificare la chiave, sarebbe 1103 00:51:44,279 --> 00:51:45,910 devi fare foreach-- 1104 00:51:45,910 --> 00:51:47,360 >> ALISON: Giusto. 1105 00:51:47,360 --> 00:51:50,560 Quindi, se si voleva manipolare solo la chiave, 1106 00:51:50,560 --> 00:51:53,680 si sarebbe ancora bisogno di questo sintassi, perché se solo 1107 00:51:53,680 --> 00:51:56,930 hanno arr come qualcosa, come una cosa, è 1108 00:51:56,930 --> 00:52:00,070 andando ad assumere vuoi il valore, non la chiave. 1109 00:52:00,070 --> 00:52:06,780 Quindi, se mai Basta come arr come, forse questo è come $ elemento, 1110 00:52:06,780 --> 00:52:11,670 sta andando a pensare che si sta chiedendo solo per il valore in ogni punto. 1111 00:52:11,670 --> 00:52:13,879 Se si vuole esplicitamente fare qualcosa con la chiave, 1112 00:52:13,879 --> 00:52:16,170 anche se non avete intenzione di fare qualsiasi cosa con il valore, 1113 00:52:16,170 --> 00:52:18,430 avete bisogno di questa struttura che abbiamo qui 1114 00:52:18,430 --> 00:52:22,330 dove si sta chiedendo esplicitamente sia per la chiave e il valore. 1115 00:52:22,330 --> 00:52:24,170 Grande domanda. 1116 00:52:24,170 --> 00:52:25,940 Qualunque altra cosa? 1117 00:52:25,940 --> 00:52:27,490 Freddo. 1118 00:52:27,490 --> 00:52:29,911 >> Va bene, PHP e HTML. 1119 00:52:29,911 --> 00:52:31,410 Oh, siamo tornati a p-impostare sette di nuovo. 1120 00:52:31,410 --> 00:52:35,380 Quindi questo dovrebbe essere un po 'familiare. 1121 00:52:35,380 --> 00:52:41,760 Quindi questo è un semplice form HTML che ha qualche nome di ingresso ciao. 1122 00:52:41,760 --> 00:52:43,820 E vediamo che abbiamo il nostro metodo di GET. 1123 00:52:43,820 --> 00:52:47,430 E se ci ricordiamo del nostro p-set, al momento della presentazione di questo modulo, 1124 00:52:47,430 --> 00:52:58,130 invia un array chiamato $ _GET che ha tutti questi ingressi o variabili da 1125 00:52:58,130 --> 00:53:00,490 la forma che dovrebbe essere manipolato nel nostro PHP. 1126 00:53:00,490 --> 00:53:03,320 Quindi in questo caso, l'utente avrebbe messo nel loro nome. 1127 00:53:03,320 --> 00:53:04,370 Esse sostengono che. 1128 00:53:04,370 --> 00:53:07,810 E vediamo che abbiamo un po 'di matrice qui. 1129 00:53:07,810 --> 00:53:09,080 Noi abbiamo la nostra gamma GET. 1130 00:53:09,080 --> 00:53:11,510 E stiamo accedendo il nome. 1131 00:53:11,510 --> 00:53:15,070 >> Così che dice, OK, dammi la valore che è associato con il nome, 1132 00:53:15,070 --> 00:53:16,550 il nome è la chiave qui. 1133 00:53:16,550 --> 00:53:21,400 E che le mappe direttamente a ciò che abbiamo detto il nostro nome di ingresso è. 1134 00:53:21,400 --> 00:53:28,960 Quindi questo è stato ti dà la chiave per ciò che sta per essere nella propria matrice qui. 1135 00:53:28,960 --> 00:53:31,220 Questo fa senso per tutti? 1136 00:53:31,220 --> 00:53:32,070 Sì? 1137 00:53:32,070 --> 00:53:36,240 >> AUDIENCE: significa il nome in GET riferimento per la linea viola in [incomprensibile]? 1138 00:53:36,240 --> 00:53:37,740 >> ALISON: Si riferisce a questo qui. 1139 00:53:37,740 --> 00:53:43,840 Quindi questo campo qui, si riferisce a questo nome. 1140 00:53:43,840 --> 00:53:47,800 Quindi questo potrebbe essere stato nominato come numero di telefono, o qualsiasi altra cosa. 1141 00:53:47,800 --> 00:53:51,790 Questo nome realtà dice, cosa chiami questo campo? 1142 00:53:51,790 --> 00:53:53,600 Come avete intenzione di fare riferimento a questo settore? 1143 00:53:53,600 --> 00:53:57,670 E questo nome è in realtà come, siamo dicendo questo campo si chiama nome. 1144 00:53:57,670 --> 00:53:59,224 Ecco come abbiamo intenzione di accedervi. 1145 00:53:59,224 --> 00:54:02,070 >> AUDIENCE: Così si prova, nome dell'ingresso è uguale a Bob, e- 1146 00:54:02,070 --> 00:54:04,380 >> ALISON: Giusto, allora otterrebbe Bob laggiù. 1147 00:54:04,380 --> 00:54:06,090 Esattamente. 1148 00:54:06,090 --> 00:54:07,800 Tutti cool? 1149 00:54:07,800 --> 00:54:10,990 D'accordo, in modo da ottenere rispetto POST, questi sono i due modi principali 1150 00:54:10,990 --> 00:54:14,880 che passiamo i dati in una richiesta HTTP. 1151 00:54:14,880 --> 00:54:17,370 Voi ragazzi dovrebbero avere visto entrambi questi si spera. 1152 00:54:17,370 --> 00:54:20,940 Quindi, con GET, l'informazione viene fatto passare attraverso l'URL. 1153 00:54:20,940 --> 00:54:23,490 Quindi, se mai fare Google ricerche, YouTube, ti 1154 00:54:23,490 --> 00:54:25,130 probabilmente notato qualche punto interrogativo. 1155 00:54:25,130 --> 00:54:28,230 E poi, tutte le parole che hai appena messo in là. 1156 00:54:28,230 --> 00:54:31,410 E POST passa i dati nel corpo del messaggio HTTP. 1157 00:54:31,410 --> 00:54:36,922 Quindi, a differenza GET, è sorta di considerazione che i dati sono nascosto all'utente. 1158 00:54:36,922 --> 00:54:38,630 Ma ciò che è veramente importante capire 1159 00:54:38,630 --> 00:54:44,040 è che questo è ancora altrettanto insicura come GET. 1160 00:54:44,040 --> 00:54:48,780 L'analogia che mi piace usare è se hai il tuo numero di conto bancario 1161 00:54:48,780 --> 00:54:52,795 e si scrive sulla parte esterna del una busta, che è piuttosto pericoloso. 1162 00:54:52,795 --> 00:54:55,920 Se si dovesse scrivere su un pezzo di carta e metterlo nella busta, 1163 00:54:55,920 --> 00:54:58,850 è ancora molto pericoloso, perché tutto quello che dovete fare è aprire quella up 1164 00:54:58,850 --> 00:55:03,480 e guardare i contenuti effettivi del messaggio per vedere che. 1165 00:55:03,480 --> 00:55:08,310 Quindi questo è "nascosto", e persone come a penso che sia sicuro, ma non è davvero. 1166 00:55:08,310 --> 00:55:11,000 E sono sicuro che sarà Davin entrare in quella di più, forse. 1167 00:55:11,000 --> 00:55:12,850 Ma si tratta di un importante distinzione fare 1168 00:55:12,850 --> 00:55:15,820 e qualcosa di veramente buono per capire. 1169 00:55:15,820 --> 00:55:19,220 >> OK, SQL, Structured Query Language. 1170 00:55:19,220 --> 00:55:22,220 Tutte le cose che abbiamo visto così poco! 1171 00:55:22,220 --> 00:55:25,400 Quindi è fondamentalmente solo progettato, ovviamente, per la gestione dei dati. 1172 00:55:25,400 --> 00:55:30,560 Voi ragazzi avuto un sacco di esperienza con questo nelle vostre tabelle con PHP MyAdmin. 1173 00:55:30,560 --> 00:55:34,100 E ci sono quattro domande comuni che vogliamo voi ragazzi a conoscere. 1174 00:55:34,100 --> 00:55:37,304 Quindi c'è l'aggiornamento, inserto, selezionare ed eliminare. 1175 00:55:37,304 --> 00:55:38,970 Quindi assicuratevi di sapere chi davvero bene. 1176 00:55:38,970 --> 00:55:40,960 Stiamo per andare attraverso di loro veramente veloce. 1177 00:55:40,960 --> 00:55:44,340 >> Quindi l'aggiornamento, in realtà, come quello che si potrebbe pensare che fa, 1178 00:55:44,340 --> 00:55:46,740 aggiorna solo i dati nel database. 1179 00:55:46,740 --> 00:55:48,750 Così abbiamo alcuni esempi qui. 1180 00:55:48,750 --> 00:55:53,310 Questo è il generale Struttura di una query di aggiornamento. 1181 00:55:53,310 --> 00:55:56,150 Così aggiorniamo la tavola che stiamo parlando. 1182 00:55:56,150 --> 00:56:00,520 E vogliamo impostare determinate valori, alcune colonne 1183 00:56:00,520 --> 00:56:02,600 pari a valori specifici. 1184 00:56:02,600 --> 00:56:07,500 Quindi questo solo aggiorna la tabella, cambiando valori in tutte le righe in questo caso. 1185 00:56:07,500 --> 00:56:13,690 Quindi, in questa qui, un vero e proprio esempio, abbiamo insert-- dispiace. 1186 00:56:13,690 --> 00:56:17,630 Che slitta avanzato senza di me rendersene conto. 1187 00:56:17,630 --> 00:56:22,230 >> Quindi questa tabella aggiornamenti set col1 uguale a val1 dove casa è uguale a "Currier." 1188 00:56:22,230 --> 00:56:25,300 Quello che si fa è cambia solo, solo 1189 00:56:25,300 --> 00:56:28,130 aggiorna questi valori in luoghi specifici. 1190 00:56:28,130 --> 00:56:32,300 Quindi, in questo primo, cambia questi valori per tutto nella vostra tabella, 1191 00:56:32,300 --> 00:56:32,860 OK? 1192 00:56:32,860 --> 00:56:35,820 E 'intenzione di cambiare questo colonna per ogni singola voce, 1193 00:56:35,820 --> 00:56:37,020 per ogni singola riga. 1194 00:56:37,020 --> 00:56:40,840 Ma dove, si potrebbe pensare ad esso come un qualificatore. 1195 00:56:40,840 --> 00:56:44,020 Quindi è solo andando a cambiare in luoghi molto specifici. 1196 00:56:44,020 --> 00:56:47,840 Quindi, in p-set di sette, quando si forse aggiornato la quantità di denaro 1197 00:56:47,840 --> 00:56:53,050 che l'utente aveva, probabilmente ha avuto alcuni dove ID è uguale a ID di sessione, giusto? 1198 00:56:53,050 --> 00:56:55,280 >> Perché non volevi modificare la quantità di denaro 1199 00:56:55,280 --> 00:56:57,630 per ogni persona che stava usando il vostro sito web. 1200 00:56:57,630 --> 00:57:00,480 Volevi cambiare per una persona specifica, quella persona che è 1201 00:57:00,480 --> 00:57:02,410 chi stava usando in quel momento. 1202 00:57:02,410 --> 00:57:04,320 Giusto? 1203 00:57:04,320 --> 00:57:07,510 OK, quindi inserire, inserto certi valori in tabelle. 1204 00:57:07,510 --> 00:57:11,650 Questo è come quando sei la creazione di un nuovo utente. 1205 00:57:11,650 --> 00:57:14,240 La struttura generale qui è inserire in qualunque tavolo 1206 00:57:14,240 --> 00:57:15,680 stiamo parlando. 1207 00:57:15,680 --> 00:57:18,910 Valori, che sono i valori che in realtà vogliamo inserire. 1208 00:57:18,910 --> 00:57:23,060 OK, così come vediamo qui, hanno inserire dati nella tabella. 1209 00:57:23,060 --> 00:57:27,790 Questo è colonne specifiche con i loro valori corrisposto. 1210 00:57:27,790 --> 00:57:29,940 Quindi questo dice, inserto una nuova riga contenente 1211 00:57:29,940 --> 00:57:33,660 valori val1 e val2 sotto queste colonne specifiche. 1212 00:57:33,660 --> 00:57:39,240 >> Così forse si vuole solo riempire fuori la metà delle cose in questa riga. 1213 00:57:39,240 --> 00:57:41,150 Questo è ciò che questa parte qui ti permette di fare. 1214 00:57:41,150 --> 00:57:43,280 Esso consente di realtà determinare quale parte. 1215 00:57:43,280 --> 00:57:44,244 Sì? 1216 00:57:44,244 --> 00:57:52,150 >> AUDIENCE: Può solamente [incomprensibile] celle nella riga [incomprensibile]? 1217 00:57:52,150 --> 00:57:55,000 >> ALISON: Se si riempie solo in alcune parti della tua linea, 1218 00:57:55,000 --> 00:57:57,480 il resto di queste cellule sono solo vuote. 1219 00:57:57,480 --> 00:58:02,730 1220 00:58:02,730 --> 00:58:05,660 Finché li permettono di essere vuota, non è un problema. 1221 00:58:05,660 --> 00:58:09,570 Se si tenta di accedervi, è andando a tornare un elemento vuoto. 1222 00:58:09,570 --> 00:58:13,850 Ma è importante conoscere che in alcune tabelle, 1223 00:58:13,850 --> 00:58:16,690 essi devono essere permesso di essere nullo. 1224 00:58:16,690 --> 00:58:18,890 Potrebbe essere eseguito in un problema durante il p-set 1225 00:58:18,890 --> 00:58:21,320 perché non abbiamo lasciato ogni dei vostri valori siano nulli. 1226 00:58:21,320 --> 00:58:26,110 Ma è possibile specificare un valore opzionale nella tabella. 1227 00:58:26,110 --> 00:58:29,640 >> OK, selezionare, quindi questo è solo un modo di ottenere 1228 00:58:29,640 --> 00:58:33,790 i dati specifici di una tabella a alcuni identificatore che si desidera. 1229 00:58:33,790 --> 00:58:37,990 Quindi selezionare star da tavolo dove col uguale qualcosa significa semplicemente, 1230 00:58:37,990 --> 00:58:43,820 dammi tutti i dati associati dove questa colonna specifica è vero. 1231 00:58:43,820 --> 00:58:49,020 Così la stella in questo caso sarà restituire l'intera riga a te, OK? 1232 00:58:49,020 --> 00:58:54,880 >> E poi, in questo caso, seleziona stelle da tavolo appena ti dà l'intera tabella. 1233 00:58:54,880 --> 00:58:58,940 E poi, ovviamente, eliminare, semplicemente cancella la riga della tabella. 1234 00:58:58,940 --> 00:59:01,320 Quindi eliminare dal tavolo, qualunque tavolo siamo 1235 00:59:01,320 --> 00:59:06,830 riferimento, dove alcuni specifici identificatore o qualche condizione è vera. 1236 00:59:06,830 --> 00:59:07,720 Sì? 1237 00:59:07,720 --> 00:59:08,700 >> AUDIENCE: Domanda. 1238 00:59:08,700 --> 00:59:10,699 Perché stai usando doppio citazioni, e se si 1239 00:59:10,699 --> 00:59:13,600 fare virgolette doppie o singole citazioni, vuol fare la differenza? 1240 00:59:13,600 --> 00:59:18,235 >> ALISON: apici doppi o singoli non fare la differenza in SQL. 1241 00:59:18,235 --> 00:59:19,610 Pensavo di aver visto un'altra domanda. 1242 00:59:19,610 --> 00:59:20,814 Sì? 1243 00:59:20,814 --> 00:59:25,070 >> AUDIENCE: Non pregiudica cosa viene fuggito dalla query? 1244 00:59:25,070 --> 00:59:27,945 >> ALISON: Rob? 1245 00:59:27,945 --> 00:59:31,410 >> ROB: Che cosa si intende per fuggito dalla query? 1246 00:59:31,410 --> 00:59:36,870 >> AUDIENCE: Se qualcuno ha un singola query nella forma di-- 1247 00:59:36,870 --> 00:59:39,862 >> ROB: Se qualcuno dovesse mettere una sola offerta in, 1248 00:59:39,862 --> 00:59:43,560 poi il tempo che sta igienizzante l'input, quindi non importa. 1249 00:59:43,560 --> 00:59:46,205 Ma se si sta utilizzando un singolo preventivo e si è in modo non corretto 1250 00:59:46,205 --> 00:59:47,914 fuga gli ingressi, allora sì, hanno bisogno 1251 00:59:47,914 --> 00:59:51,079 di mettere una sola offerta per rompere il codice. se si utilizzano virgolette, 1252 00:59:51,079 --> 00:59:53,580 hanno bisogno di mettere un doppio citare per rompere il vostro codice. 1253 00:59:53,580 --> 00:59:56,163 Ma finché si sfuggire cose correttamente, non importa. 1254 00:59:56,163 --> 00:59:59,220 Sta solo andando a tradurre al simbolo corretto in ogni caso. 1255 00:59:59,220 --> 01:00:02,332 >> AUDIENCE: Cosa significa fuga? 1256 01:00:02,332 --> 01:00:04,040 ALISON: Beh, come sanificazione e la fuga. 1257 01:00:04,040 --> 01:00:06,810 1258 01:00:06,810 --> 01:00:13,820 L'esame che abbiamo, il grande XKCD comico che tirare su cui si dispone, 1259 01:00:13,820 --> 01:00:15,629 oh-- 1260 01:00:15,629 --> 01:00:16,670 ROB: E 'l'ultima diapositiva. 1261 01:00:16,670 --> 01:00:18,500 ALISON: E 'l'ultima diapositiva, davvero? 1262 01:00:18,500 --> 01:00:20,200 Dio mio. 1263 01:00:20,200 --> 01:00:21,780 Ci andiamo, perfetto. 1264 01:00:21,780 --> 01:00:27,900 OK, in modo sostanzialmente, è possibile iniettare qualcosa in questa query SQL 1265 01:00:27,900 --> 01:00:30,560 dove si rompe il tuo codice, o come mostrato David 1266 01:00:30,560 --> 01:00:38,460 in classe, se abbiamo qualche singolo preventivo 1 è uguale a 1 e se nel nostro codice, 1267 01:00:38,460 --> 01:00:41,230 dobbiamo solo copiare direttamente che in, e abbiamo un finale apostrofo, 1268 01:00:41,230 --> 01:00:44,740 quello che succede è che otteniamo qualche espressione che 1269 01:00:44,740 --> 01:00:48,680 valuta a vero che sarà lasciate che qualcuno entrare nel nostro database 1270 01:00:48,680 --> 01:00:51,720 e ottenere i dati che abbiamo non vogliono loro di ottenere. 1271 01:00:51,720 --> 01:00:54,240 Così sanificazione ingressi significa semplicemente fare in modo 1272 01:00:54,240 --> 01:00:57,680 che stiamo fuggendo questi personaggi e li designa 1273 01:00:57,680 --> 01:01:01,720 come caratteri e non le cose che dovrebbe essere consentito 1274 01:01:01,720 --> 01:01:04,990 da prendere alla lettera come la nostra istruzione SQL. 1275 01:01:04,990 --> 01:01:09,980 >> Quindi la cosa grande che abbiamo detto che voi ragazzi dovreste usare 1276 01:01:09,980 --> 01:01:13,650 erano HTML caratteri speciali, che è qualcosa 1277 01:01:13,650 --> 01:01:15,730 che si potrebbe desiderare di dare un'occhiata a. 1278 01:01:15,730 --> 01:01:17,240 OK, eliminare. 1279 01:01:17,240 --> 01:01:19,450 I tipi di dati, questo sarà online tutto. 1280 01:01:19,450 --> 01:01:23,510 Dal momento che abbiamo 15 minuti a sinistra, io sono solo per andare a destra attraverso questo. 1281 01:01:23,510 --> 01:01:28,500 PHP e SQL, in fondo questo è appena abbiamo avuto una funzione di query che 1282 01:01:28,500 --> 01:01:31,520 aiutato proteggere questi attacchi dannosi. 1283 01:01:31,520 --> 01:01:33,970 Così ogni volta che si utilizza interrogazione, stavamo facendo sicuri 1284 01:01:33,970 --> 01:01:36,560 che le cose sono state sterilizzate e quant'altro. 1285 01:01:36,560 --> 01:01:41,070 >> MVC è solo un paradigma di progettazione, così il modello, vista, controller. 1286 01:01:41,070 --> 01:01:44,200 E 'solo un modo per mantenere le cose bello e dividere allo stesso modo 1287 01:01:44,200 --> 01:01:47,100 che tendiamo a fattorizzare codice out in funzioni. 1288 01:01:47,100 --> 01:01:53,390 Questo è solo un framework web design che permette di fare la stessa cosa. 1289 01:01:53,390 --> 01:01:54,760 Ho intenzione di saltare questo. 1290 01:01:54,760 --> 01:01:58,530 >> Questo è qualcosa che ho sarebbe super comodi con. 1291 01:01:58,530 --> 01:02:01,132 E 'un grande tavolino lì. 1292 01:02:01,132 --> 01:02:03,090 Ti dà la funzione esempio del modello. 1293 01:02:03,090 --> 01:02:05,473 Sto solo passando attraverso questo perché vuole veramente Davin per essere in grado di parlare. 1294 01:02:05,473 --> 01:02:07,140 Se avete domande, Non esitate. 1295 01:02:07,140 --> 01:02:07,931 Sarò qui dopo. 1296 01:02:07,931 --> 01:02:10,360 Basta venire a parlare con me. 1297 01:02:10,360 --> 01:02:13,380 Con questo, abbiamo stati HTTP. 1298 01:02:13,380 --> 01:02:16,270 E Davin sta per esplodere attraverso questo in 15 minuti. 1299 01:02:16,270 --> 01:02:17,560 Questo sta per essere grande. 1300 01:02:17,560 --> 01:02:18,893 >> DAVIN: OK. 1301 01:02:18,893 --> 01:02:20,312 Uh, il microfono? 1302 01:02:20,312 --> 01:02:22,210 Sì. 1303 01:02:22,210 --> 01:02:23,336 Scusi. 1304 01:02:23,336 --> 01:02:24,460 ALISON: modo di essere preparati. 1305 01:02:24,460 --> 01:02:25,335 DAVIN: No, io sono pronto. 1306 01:02:25,335 --> 01:02:25,860 Sono pronto. 1307 01:02:25,860 --> 01:02:28,790 Facciamolo. 1308 01:02:28,790 --> 01:02:29,290 E 'pronto. 1309 01:02:29,290 --> 01:02:30,041 OK. 1310 01:02:30,041 --> 01:02:30,540 Scusi. 1311 01:02:30,540 --> 01:02:31,664 Ho versato il caffè su me stesso. 1312 01:02:31,664 --> 01:02:36,037 1313 01:02:36,037 --> 01:02:38,210 Non so se sono più sconvolto che guardo stupido, 1314 01:02:38,210 --> 01:02:40,600 o che non ho più il caffè. 1315 01:02:40,600 --> 01:02:44,480 In ogni caso, solo un annuncio rapido sul foglio di voi ragazzi avete. 1316 01:02:44,480 --> 01:02:47,994 Così questa scheda voi ragazzi avete non è il funzionario cosa c'è sul quiz. 1317 01:02:47,994 --> 01:02:49,660 Questo è il funzionario che cosa è il quiz. 1318 01:02:49,660 --> 01:02:52,520 Inoltre, sul sito web, diciamo te, OK, questo sarà il quiz. 1319 01:02:52,520 --> 01:02:55,020 Quindi, nel piccolo foglietto avete, non ufficiale. 1320 01:02:55,020 --> 01:02:56,690 E ci sono errori su di esso. 1321 01:02:56,690 --> 01:03:01,490 Quindi meglio non solo ciecamente usarlo. 1322 01:03:01,490 --> 01:03:04,390 Quindi sì, questo è tutto. 1323 01:03:04,390 --> 01:03:05,980 Quindi cerchiamo di ottenere in questo rapido reale. 1324 01:03:05,980 --> 01:03:07,420 >> Quindi stati HTTP. 1325 01:03:07,420 --> 01:03:10,430 Che cosa succede quando il sito web, tutto va bene. 1326 01:03:10,430 --> 01:03:11,144 OK di tutto. 1327 01:03:11,144 --> 01:03:13,310 Tutto torna a il modo che si desidera. 1328 01:03:13,310 --> 01:03:15,370 Si ottiene un 200 OK. 1329 01:03:15,370 --> 01:03:19,250 301, dove abbiamo visto che la 301 prima? 1330 01:03:19,250 --> 01:03:20,890 Aspetta, che cosa succede? 1331 01:03:20,890 --> 01:03:23,250 Scusi. 1332 01:03:23,250 --> 01:03:24,980 Abbiamo visto i latta lezione durante la sicurezza. 1333 01:03:24,980 --> 01:03:30,690 Così durante la sicurezza, quindi se David digitato http e poi ha cercato di andare a cs50.net, 1334 01:03:30,690 --> 01:03:31,940 si sta andando a vedere 301 spostato. 1335 01:03:31,940 --> 01:03:32,440 Perché? 1336 01:03:32,440 --> 01:03:35,570 Perché sta andando a reindirizzare si automaticamente al nostro HTTPS. 1337 01:03:35,570 --> 01:03:38,649 >> Così 301 si trasferì, appena è fondamentalmente un reindirizzamento. 1338 01:03:38,649 --> 01:03:40,190 E si può pensare in questo modo. 1339 01:03:40,190 --> 01:03:43,790 Qualsiasi degli stati che iniziano con 2 di, quelli sono come, OK, OK di tutto. 1340 01:03:43,790 --> 01:03:46,530 Qualsiasi degli stati che si aprono con 3, quelli sono il reindirizzamento. 1341 01:03:46,530 --> 01:03:49,571 Gli stati che iniziano con 4, che significa c'è qualche tipo di errore client. 1342 01:03:49,571 --> 01:03:52,440 Gli stati che iniziano con 5, che è una specie di errore del server. 1343 01:03:52,440 --> 01:03:54,680 Così è sorta di spezzare gli stati del genere. 1344 01:03:54,680 --> 01:03:59,120 Quindi non non 304 modificato, così nella tua server.c p-set, quindi diciamo che 1345 01:03:59,120 --> 01:04:00,600 cat.html caricato. 1346 01:04:00,600 --> 01:04:03,360 Tutto torna, si ottiene 200s, OK, ottimo. 1347 01:04:03,360 --> 01:04:04,540 >> Diciamo che rinfrescati esso. 1348 01:04:04,540 --> 01:04:07,310 Ebbene, all'interno di quella cat.html, avete un JPEG. 1349 01:04:07,310 --> 01:04:09,520 Beh, che JPEG non è sta per ottenere ricaricato. 1350 01:04:09,520 --> 01:04:12,140 Non hai intenzione di inviare altro GET richiesta al server, 1351 01:04:12,140 --> 01:04:13,980 e quindi ottenere tutte queste informazioni indietro. 1352 01:04:13,980 --> 01:04:17,560 Sta andando a essere-- solo che immagine è andando ad essere memorizzate nella cache sul computer. 1353 01:04:17,560 --> 01:04:19,540 E in modo che l'immagine sarà 304. 1354 01:04:19,540 --> 01:04:20,720 Così non è stato modificato. 1355 01:04:20,720 --> 01:04:24,600 Se quindi si chiude fuori, chiaro biscotti, e poi aggiornare 1356 01:04:24,600 --> 01:04:27,490 e cercare di caricare la pagina ancora una volta, si sta andando a vedere 200s. 1357 01:04:27,490 --> 01:04:28,910 Tu non stai andando a vedere che 304. 1358 01:04:28,910 --> 01:04:32,340 >> 400, cattivo richiesta, vera veloce, come se si 1359 01:04:32,340 --> 01:04:34,880 stavano per inviare un Oggetto JSON al server 1360 01:04:34,880 --> 01:04:38,090 e l'oggetto JSON non era corretta, vedrete qualcosa di simile. 1361 01:04:38,090 --> 01:04:39,000 403, proibito. 1362 01:04:39,000 --> 01:04:40,330 Quando si dovrebbe vedere un proibito? 1363 01:04:40,330 --> 01:04:41,394 Probabilmente Probabilmente? 1364 01:04:41,394 --> 01:04:42,060 AUDIENCE: Chmod. 1365 01:04:42,060 --> 01:04:42,950 DAVIN: Chmod, sì. 1366 01:04:42,950 --> 01:04:44,730 Così non è stato impostato permessi correttamente. 1367 01:04:44,730 --> 01:04:45,577 404, non trovato. 1368 01:04:45,577 --> 01:04:46,410 Non è solo lì. 1369 01:04:46,410 --> 01:04:48,670 Quindi, se si digita l'URL sbagliato. 1370 01:04:48,670 --> 01:04:53,500 500, errore interno del server, il server Probabilmente non è stato configurato correttamente. 1371 01:04:53,500 --> 01:04:56,260 Qualcosa non da parte vostra, ma qualcosa sul lato server. 1372 01:04:56,260 --> 01:04:57,240 E 503? 1373 01:04:57,240 --> 01:04:59,502 Un sacco di gente ha visto 503s nell'ultimo p-set. 1374 01:04:59,502 --> 01:05:00,460 Quando sarebbe accaduto? 1375 01:05:00,460 --> 01:05:04,180 1376 01:05:04,180 --> 01:05:05,660 Ho sentito sussurri. 1377 01:05:05,660 --> 01:05:07,767 >> AUDIENCE: Quando Google decide sei un robot. 1378 01:05:07,767 --> 01:05:10,350 DAVIN: Sì, quando Google decide sei un robot, si ottiene 503s. 1379 01:05:10,350 --> 01:05:11,560 Quindi questo è un sovraccarico. 1380 01:05:11,560 --> 01:05:14,620 Se hai richiesto dal server troppo, di solito è temporanea. 1381 01:05:14,620 --> 01:05:15,560 E la maggior parte di voi notato. 1382 01:05:15,560 --> 01:05:16,185 Così hai visto 503. 1383 01:05:16,185 --> 01:05:19,282 Si potrebbe avere preso un po ' pausa, poi i 503s andato via, 1384 01:05:19,282 --> 01:05:20,490 e tutto era a posto. 1385 01:05:20,490 --> 01:05:26,640 >> GABE: reale rapida, quando voi ragazzi, procurati 500 in probabilmente questo ultimo problema set? 1386 01:05:26,640 --> 01:05:27,954 Sì? 1387 01:05:27,954 --> 01:05:30,906 >> AUDIENCE: Solitamente se la server ha un file fuori luogo 1388 01:05:30,906 --> 01:05:34,650 o [incomprensibile] il loro machine [incomprensibile]. 1389 01:05:34,650 --> 01:05:38,870 >> GABE: Quindi potrebbe essere una configurazione problema in PHP sul server. 1390 01:05:38,870 --> 01:05:42,250 Ma potrebbe essere solo qualcosa come un punto e virgola che il dimenticato. 1391 01:05:42,250 --> 01:05:44,130 Se si sta digitando PHP, una sintassi non corretta 1392 01:05:44,130 --> 01:05:46,000 potrebbe ottenere qualcosa di simile. 1393 01:05:46,000 --> 01:05:46,960 OK? 1394 01:05:46,960 --> 01:05:48,610 >> DAVIN: Cool. 1395 01:05:48,610 --> 01:05:51,180 Vuoi che io faccia solo fino AJAX? 1396 01:05:51,180 --> 01:05:52,950 >> GABE: [incomprensibile]. 1397 01:05:52,950 --> 01:05:53,450 DAVIN: OK. 1398 01:05:53,450 --> 01:05:54,230 Allora qual è il DOM? 1399 01:05:54,230 --> 01:05:55,290 Che cosa significa per DOM? 1400 01:05:55,290 --> 01:05:56,990 >> AUDIENCE: modello di oggetti Document. 1401 01:05:56,990 --> 01:05:57,490 DAVIN: Nice. 1402 01:05:57,490 --> 01:06:00,775 E perché ci piace? 1403 01:06:00,775 --> 01:06:02,670 Impressionante. 1404 01:06:02,670 --> 01:06:06,651 Giusto, quindi solo ci permette di accesso il codice HTML, accedere alla pagina molto rapidamente. 1405 01:06:06,651 --> 01:06:07,150 Perché? 1406 01:06:07,150 --> 01:06:09,980 Perché stiamo trattando il nostro pagina, trattando i nostri tag HTML, 1407 01:06:09,980 --> 01:06:11,730 trattamento di tutto come se fossero oggetti. 1408 01:06:11,730 --> 01:06:13,710 Se stiamo trattarli come se fossero oggetti, allora cosa possiamo fare? 1409 01:06:13,710 --> 01:06:15,210 Beh, possiamo chiamare funzioni su di loro. 1410 01:06:15,210 --> 01:06:16,460 E questo è importante perché? 1411 01:06:16,460 --> 01:06:19,200 Beh, perché stiamo andando a utilizzare JavaScript per aggiornare il nostro HTML, 1412 01:06:19,200 --> 01:06:20,500 aggiornare questi oggetti. 1413 01:06:20,500 --> 01:06:23,869 Quindi, se li trattiamo come oggetti, possiamo quindi chiamare funzioni su di loro. 1414 01:06:23,869 --> 01:06:26,660 Ho intenzione di entrare in questo un po ' più quando vado in JavaScript, 1415 01:06:26,660 --> 01:06:30,510 ma avete visto tutti come document.getElementById. 1416 01:06:30,510 --> 01:06:32,870 Così documento è tua elemento, ottenere elemento da ID, 1417 01:06:32,870 --> 01:06:35,087 così si sta andando a guardare per alcuni ID in un tag HTML. 1418 01:06:35,087 --> 01:06:36,920 E poi, si può fare qualcos'altro da quello. 1419 01:06:36,920 --> 01:06:40,089 Ad esempio, come document.body, quindi è possibile aggiungere bambino. 1420 01:06:40,089 --> 01:06:41,630 Quindi si sta andando a trovare il documento. 1421 01:06:41,630 --> 01:06:42,340 Avete il documento. 1422 01:06:42,340 --> 01:06:43,629 Stai andando a trovare il corpo. 1423 01:06:43,629 --> 01:06:44,420 Hai trovato il corpo. 1424 01:06:44,420 --> 01:06:46,545 E poi, si sta andando a chiamare una funzione su di esso. 1425 01:06:46,545 --> 01:06:50,312 Quindi aggiungere bambino, ed è possibile accodare alcuni HTML sull'estremità all'interno del vostro corpo. 1426 01:06:50,312 --> 01:06:52,520 Quindi, fondamentalmente, sei solo trattandolo come un oggetto. 1427 01:06:52,520 --> 01:06:54,515 Stai trattando HTML tag come un oggetto. 1428 01:06:54,515 --> 01:06:57,071 E rende molto facile e veloce per passare attraverso di loro. 1429 01:06:57,071 --> 01:06:59,070 Ma permette anche per richiamare le funzioni su di loro 1430 01:06:59,070 --> 01:07:04,410 in modo da poter manipolare e modificare gli elementi. 1431 01:07:04,410 --> 01:07:10,162 >> GABE: Dato questo, perché è JavaScript tale un linguaggio bello interagire con HTML? 1432 01:07:10,162 --> 01:07:12,870 Le probabilità sono, quando le persone sceglievano la lingua per il browser, 1433 01:07:12,870 --> 01:07:14,990 per il lato client, JavaScript è veramente bello, 1434 01:07:14,990 --> 01:07:16,765 è davvero bravo a gestire gli oggetti. 1435 01:07:16,765 --> 01:07:20,620 E gli oggetti sono un po 'come gli oggetti che compaiono nel codice HTML, 1436 01:07:20,620 --> 01:07:23,940 quindi è molto facile per JavaScript per fare questo tipo di trattamento. 1437 01:07:23,940 --> 01:07:24,440 DAVIN: Nice. 1438 01:07:24,440 --> 01:07:25,670 Così qui è solo un esempio. 1439 01:07:25,670 --> 01:07:29,020 Quindi penso che il quiz dello scorso anno, o forse due anni fa, abbiamo 1440 01:07:29,020 --> 01:07:30,840 ti ha chiesto di creare un albero. 1441 01:07:30,840 --> 01:07:32,660 Quindi questo è esattamente quello che ci si fa. 1442 01:07:32,660 --> 01:07:34,255 Quindi si inizia con il documento. 1443 01:07:34,255 --> 01:07:36,130 E poi in fondo basta guardare i tag. 1444 01:07:36,130 --> 01:07:38,100 Quindi, se si guarda, ci iniziare con un tag HTML. 1445 01:07:38,100 --> 01:07:41,660 E poi, si ottiene indizi su come fare questo in base al rientro. 1446 01:07:41,660 --> 01:07:43,870 Quindi testa tipo di filiali off. 1447 01:07:43,870 --> 01:07:46,242 Dentro la testa, abbiamo un altro tag per il titolo. 1448 01:07:46,242 --> 01:07:47,450 Allora, abbiamo un tag title. 1449 01:07:47,450 --> 01:07:49,760 E dentro questo, abbiamo qualche stringa. 1450 01:07:49,760 --> 01:07:52,210 E così noi rappresentiamo una stringa in un cerchio. 1451 01:07:52,210 --> 01:07:54,010 E tutti i tag sono nelle piazze. 1452 01:07:54,010 --> 01:07:56,270 >> E se si guarda, se pensare a questo come un albero, 1453 01:07:56,270 --> 01:07:58,730 e diciamo che HTML è un genitore, poi testa e corpo 1454 01:07:58,730 --> 01:07:59,772 stanno per essere fratelli. 1455 01:07:59,772 --> 01:08:01,813 Sono entrambi andando essere figli di quel genitore. 1456 01:08:01,813 --> 01:08:03,620 Così perché sono entrambi i fratelli, sono 1457 01:08:03,620 --> 01:08:06,590 andando ad essere una sorta di vicino a reciprocamente nel nostro modello albero. 1458 01:08:06,590 --> 01:08:08,590 E poi, che, fondamentalmente, fare la stessa identica cosa. 1459 01:08:08,590 --> 01:08:13,512 Quindi non è difficile, ma abbiamo chiesto domande come questa, prima sul quiz. 1460 01:08:13,512 --> 01:08:15,220 GABE: qualcuno domande finora? 1461 01:08:15,220 --> 01:08:16,357 È buono? 1462 01:08:16,357 --> 01:08:16,856 DAVIN: Cool. 1463 01:08:16,856 --> 01:08:19,630 1464 01:08:19,630 --> 01:08:21,600 JavaScript, OK, la roba buona. 1465 01:08:21,600 --> 01:08:24,069 Quindi JavaScript, Script? 1466 01:08:24,069 --> 01:08:28,370 Beh, JavaScript è-- è complicato, ma questi 1467 01:08:28,370 --> 01:08:30,727 sono alcuni dei punti salienti che si dovrebbe tenere a mente. 1468 01:08:30,727 --> 01:08:31,810 In primo luogo, è liberamente digitato. 1469 01:08:31,810 --> 01:08:33,529 Che cosa significa? 1470 01:08:33,529 --> 01:08:35,596 Così PHP era-- sì, che cosa succede? 1471 01:08:35,596 --> 01:08:39,854 >> AUDIENCE: Non c'è bisogno di esplicito Stato che tipo di variabili che è. 1472 01:08:39,854 --> 01:08:40,479 DAVIN: Perfect. 1473 01:08:40,479 --> 01:08:43,270 Così ha detto che non è necessario dichiarare esplicitamente il tipo di variabile. 1474 01:08:43,270 --> 01:08:44,160 Questo è esattamente vero. 1475 01:08:44,160 --> 01:08:49,700 Quindi, in C, se avessi int i uguale a 50, poi in PHP, è proprio come questo, $ i, 1476 01:08:49,700 --> 01:08:50,550 uguale 50. 1477 01:08:50,550 --> 01:08:54,319 Poi in JavaScript, quale sarebbe la risposta? 1478 01:08:54,319 --> 01:08:55,260 Var, giusto? 1479 01:08:55,260 --> 01:08:56,566 Sarebbe come var i = 50. 1480 01:08:56,566 --> 01:08:58,649 Ma non c'è bisogno di essere come, OK, questo è un int. 1481 01:08:58,649 --> 01:09:00,350 OK, questa è una stringa. 1482 01:09:00,350 --> 01:09:01,731 Non c'è bisogno di farlo. 1483 01:09:01,731 --> 01:09:02,939 E 'un linguaggio interpretato. 1484 01:09:02,939 --> 01:09:04,904 Che cosa vuol dire? 1485 01:09:04,904 --> 01:09:06,340 >> AUDIENCE: Non compilato. 1486 01:09:06,340 --> 01:09:10,470 >> DAVIN: Che non compilato significa? 1487 01:09:10,470 --> 01:09:11,392 Sì? 1488 01:09:11,392 --> 01:09:15,336 >> AUDIENCE: Non hai per ristrutturare il codice 1489 01:09:15,336 --> 01:09:18,294 per essere pronto per il computer per eseguirlo. 1490 01:09:18,294 --> 01:09:23,144 E 'solo presa al momento della esecuzione e il computer [incomprensibile]. 1491 01:09:23,144 --> 01:09:25,560 DAVIN: Sì, così è andare a passare attraverso un interprete. 1492 01:09:25,560 --> 01:09:26,750 Ma hai proprio ragione. 1493 01:09:26,750 --> 01:09:28,319 Così si è mai andare per compilarlo, giusto? 1494 01:09:28,319 --> 01:09:30,399 Quando facevi il tuo PHP e il codice JavaScript, 1495 01:09:30,399 --> 01:09:31,365 non hai mai chiamato compilazione. 1496 01:09:31,365 --> 01:09:33,779 Non hai mai chiamato qualcosa come fare o qualcosa di simile. 1497 01:09:33,779 --> 01:09:34,800 Ecco perché è interpretato. 1498 01:09:34,800 --> 01:09:37,319 Così ogni volta che passa attraverso il browser, passa attraverso un interprete. 1499 01:09:37,319 --> 01:09:40,370 E che sta per interpretarlo appena in tempo reale subito per te. 1500 01:09:40,370 --> 01:09:43,770 Dunque, quali sono alcuni aspetti positivi e negativi ad avere un linguaggio interpretato 1501 01:09:43,770 --> 01:09:45,258 ed avente un linguaggio compilato? 1502 01:09:45,258 --> 01:09:48,240 1503 01:09:48,240 --> 01:09:50,540 Così compiling-- sì, che cosa succede? 1504 01:09:50,540 --> 01:09:52,444 >> AUDIENCE: Interpretato è più lento. 1505 01:09:52,444 --> 01:09:53,319 DAVIN: In che senso? 1506 01:09:53,319 --> 01:09:57,167 1507 01:09:57,167 --> 01:09:59,091 >> AUDIENCE: Dopo aver compilazione, non è necessario 1508 01:09:59,091 --> 01:10:04,400 di fare alcun passo in più per l'esecuzione esso, che tale [incomprensibile]. 1509 01:10:04,400 --> 01:10:05,570 >> DAVIN: destra, perfetto. 1510 01:10:05,570 --> 01:10:08,386 Quindi, quello che hai detto è sostanzialmente che la compilazione, 1511 01:10:08,386 --> 01:10:10,760 quando si compila, si dispone di una sacco di costi iniziali, giusto? 1512 01:10:10,760 --> 01:10:11,760 Stai andando a compilarlo. 1513 01:10:11,760 --> 01:10:13,750 Ma dopo si compila, la compilatore sta per ottimizzarlo. 1514 01:10:13,750 --> 01:10:14,840 Sta andando essere veloce. 1515 01:10:14,840 --> 01:10:16,170 Sta andando a fondo essere veloce come può essere. 1516 01:10:16,170 --> 01:10:18,830 Con l'interpretazione, non hai mai avere quel costo iniziale. 1517 01:10:18,830 --> 01:10:22,260 Piuttosto, sarà leggermente più lento ogni volta si interpreta. 1518 01:10:22,260 --> 01:10:24,940 E si sta andando ad avere per interpretare ogni singola volta. 1519 01:10:24,940 --> 01:10:27,114 Così, invece di avere questa un costo di tempo, ora che sei 1520 01:10:27,114 --> 01:10:29,530 andando ad avere per interpretarlo ogni volta che la pagina di rendering. 1521 01:10:29,530 --> 01:10:31,890 >> Così gli interpreti sono buoni perché non dovete per compilarlo, 1522 01:10:31,890 --> 01:10:33,980 ma sono male in che ogni cronometrare il caricamento della pagina, è 1523 01:10:33,980 --> 01:10:35,771 andando ad avere per interpretare questa JavaScript. 1524 01:10:35,771 --> 01:10:40,520 E sta andando a correre un po 'più lento che se si dovesse compilarlo. 1525 01:10:40,520 --> 01:10:43,044 Consente di communicate-- oh, aspetta. 1526 01:10:43,044 --> 01:10:44,960 Utilizzato per manipolare il contenuto e l'aspetto. 1527 01:10:44,960 --> 01:10:46,043 Abbiamo appena parlato di questo. 1528 01:10:46,043 --> 01:10:47,250 Esso utilizza il DOM. 1529 01:10:47,250 --> 01:10:49,930 AJAX, ci arriveremo in AJAX in un po '. 1530 01:10:49,930 --> 01:10:51,520 E poi, è lato client. 1531 01:10:51,520 --> 01:10:53,110 Così PHP è lato server. 1532 01:10:53,110 --> 01:10:54,360 JavaScript è lato client. 1533 01:10:54,360 --> 01:10:57,780 Quali sono positivi a questo? 1534 01:10:57,780 --> 01:10:58,280 Si dice. 1535 01:10:58,280 --> 01:11:01,480 1536 01:11:01,480 --> 01:11:02,780 E 'più veloce, giusto? 1537 01:11:02,780 --> 01:11:05,282 Perché non avete a-- è più veloce. 1538 01:11:05,282 --> 01:11:07,490 Non è necessario comunicare con qualche altro dispositivo. 1539 01:11:07,490 --> 01:11:08,790 Se sei solo sul tuo cliente, non si è mai 1540 01:11:08,790 --> 01:11:11,280 andando ad avere per andare a vedere cosa c'è sul server 1541 01:11:11,280 --> 01:11:13,150 e poi riferire o qualcosa di simile. 1542 01:11:13,150 --> 01:11:15,410 Così lato client tende a essere un po 'più veloce. 1543 01:11:15,410 --> 01:11:17,910 >> GABE: Sì, ma questo non significa PHP è 1544 01:11:17,910 --> 01:11:20,440 veloce di JavaScript o qualcosa di simile. 1545 01:11:20,440 --> 01:11:23,270 Corrono tipo di nello stesso velocità perché sono entrambi 1546 01:11:23,270 --> 01:11:24,490 linguaggi interpretati. 1547 01:11:24,490 --> 01:11:26,680 La cosa che è lenta ecco la richiesta. 1548 01:11:26,680 --> 01:11:28,870 Così si sta effettivamente andando tutta la strada verso il Brasile 1549 01:11:28,870 --> 01:11:31,460 per ottenere alcune informazioni che vive lì. 1550 01:11:31,460 --> 01:11:34,590 Ma PHP e JavaScript, che tipo di funzionare nella stessa velocità. 1551 01:11:34,590 --> 01:11:37,930 Non è che uno è veloce rispetto agli altri. 1552 01:11:37,930 --> 01:11:40,600 Questo, inoltre, trick domanda qui. 1553 01:11:40,600 --> 01:11:47,338 Così JavaScript non diventa mai codice macchina, vero o falso? 1554 01:11:47,338 --> 01:11:48,590 >> AUDIENCE: Falso. 1555 01:11:48,590 --> 01:11:49,090 GABE: Falso. 1556 01:11:49,090 --> 01:11:51,298 Deve diventare la macchina codice perché il codice macchina 1557 01:11:51,298 --> 01:11:53,210 l'unica cosa che la macchina capisce. 1558 01:11:53,210 --> 01:11:55,800 Anche se non è compilato, diventa ancora codice macchina 1559 01:11:55,800 --> 01:11:59,120 perché l'interprete è solo un programma che va riga per riga 1560 01:11:59,120 --> 01:12:02,170 e trasforma quella linea in qualcosa il computer capisce. 1561 01:12:02,170 --> 01:12:02,825 OK? 1562 01:12:02,825 --> 01:12:03,325 Freddo. 1563 01:12:03,325 --> 01:12:08,530 1564 01:12:08,530 --> 01:12:12,890 >> DAVIN: Qui è solo un semplice ciao mondo programma JavaScript. 1565 01:12:12,890 --> 01:12:15,590 Quindi non so if-- aver visto questa. 1566 01:12:15,590 --> 01:12:17,630 Ma avete appena HTML qui. 1567 01:12:17,630 --> 01:12:21,020 E invece di mettere in realtà il JavaScript nei tag di script, 1568 01:12:21,020 --> 01:12:22,810 in modo che normalmente si mette in testa. 1569 01:12:22,810 --> 01:12:24,030 Avete tag script. 1570 01:12:24,030 --> 01:12:24,870 Si è fatto cadere lì. 1571 01:12:24,870 --> 01:12:28,350 Tutto quello che abbiamo fatto qui è che abbiamo legato dentro-- così abbiamo legati in un file JavaScript 1572 01:12:28,350 --> 01:12:29,137 come questo. 1573 01:12:29,137 --> 01:12:30,470 E hai fatto tutto questo, giusto? 1574 01:12:30,470 --> 01:12:34,740 Così, quando si stava utilizzando jQuery e underscore.js nell'ultimo p-set, 1575 01:12:34,740 --> 01:12:38,700 non si dispone di tonnellate di codice in i tag di script, nella tua testa. 1576 01:12:38,700 --> 01:12:41,415 Si potrebbe fare, ma invece sei solo collegandolo in. 1577 01:12:41,415 --> 01:12:43,540 E si sta collegando in proprio come si fa con i CSS. 1578 01:12:43,540 --> 01:12:50,186 Quindi rende solo più facile da leggere così il codice non è come lungo 1.000 linee 1579 01:12:50,186 --> 01:12:52,310 con tonnellate di funzioni che si potrebbe non utilizzare. 1580 01:12:52,310 --> 01:12:53,518 >> Invece, si collega solo in. 1581 01:12:53,518 --> 01:12:55,050 Si compartimentalizza esso. 1582 01:12:55,050 --> 01:13:00,110 E 'come scrivere alcuni file di intestazione, e poi compresi che file di intestazione in C. 1583 01:13:00,110 --> 01:13:01,620 Pensate a come questo. 1584 01:13:01,620 --> 01:13:02,680 Che cosa significa questo? 1585 01:13:02,680 --> 01:13:04,560 Beh, questo è andare a correre. 1586 01:13:04,560 --> 01:13:05,410 Sta andando per avvisare. 1587 01:13:05,410 --> 01:13:08,020 Quindi hai intenzione di ottenere un po ' pop up chiamato ciao mondo. 1588 01:13:08,020 --> 01:13:11,420 Domanda veloce, basta controllare sanità mentale, in modo da vedere qui nel corpo, 1589 01:13:11,420 --> 01:13:13,160 dire corpo, HTML qui. 1590 01:13:13,160 --> 01:13:14,080 Che cosa viene prima? 1591 01:13:14,080 --> 01:13:16,864 Devo vedere il corpo, HTML qui, o vedo l'avviso prima? 1592 01:13:16,864 --> 01:13:19,828 1593 01:13:19,828 --> 01:13:20,820 >> AUDIENCE: Alert. 1594 01:13:20,820 --> 01:13:21,470 >> DAVIN: Giusto. 1595 01:13:21,470 --> 01:13:22,110 Dice allarme. 1596 01:13:22,110 --> 01:13:22,610 Perché? 1597 01:13:22,610 --> 01:13:24,470 >> AUDIENCE: Perché andare da cima a fondo. 1598 01:13:24,470 --> 01:13:25,600 >> DAVIN: Sì. 1599 01:13:25,600 --> 01:13:26,100 Perfetto. 1600 01:13:26,100 --> 01:13:29,207 Così dice, si va da cima a inferiore, che è assolutamente corretto. 1601 01:13:29,207 --> 01:13:30,790 Hai intenzione di andare da cima a fondo. 1602 01:13:30,790 --> 01:13:34,790 E in JavaScript, jQuery, si dispone di una funzione che è onload come, o pronti, 1603 01:13:34,790 --> 01:13:38,030 e che dice, OK, aspettare fino a tutto questo HTML è caricato. 1604 01:13:38,030 --> 01:13:39,580 E poi, chiamare il JavaScript. 1605 01:13:39,580 --> 01:13:42,190 Perché noi non abbiamo che qui, il prima cosa che sta per accadere 1606 01:13:42,190 --> 01:13:43,920 si sta andando andare da cima a fondo. 1607 01:13:43,920 --> 01:13:46,310 Sta andando a colpire quel JS chiamare, sta andando per avvisare. 1608 01:13:46,310 --> 01:13:49,510 Dopo di che si fa clic su OK, tale avviso va via. 1609 01:13:49,510 --> 01:13:53,600 Poi sta andando a mostrare il corpo HTML qui. 1610 01:13:53,600 --> 01:13:54,590 Nizza. 1611 01:13:54,590 --> 01:14:00,880 >> OK, quindi basta reale veloce, la scrittura in JavaScript è super veloce. 1612 01:14:00,880 --> 01:14:02,710 Per dichiarare un nome di variabile var. 1613 01:14:02,710 --> 01:14:07,070 Quindi, in C, si ha int i, si ha di dichiarare che tipo di tipo esso sia. 1614 01:14:07,070 --> 01:14:08,040 PHP, $. 1615 01:14:08,040 --> 01:14:08,755 JavaScript, var. 1616 01:14:08,755 --> 01:14:09,630 Abbiamo parlato di questo. 1617 01:14:09,630 --> 01:14:11,020 Va bene, andiamo. 1618 01:14:11,020 --> 01:14:12,510 >> Loops, stessa cosa. 1619 01:14:12,510 --> 01:14:14,230 Stessa cosa. 1620 01:14:14,230 --> 01:14:18,165 Dichiarazioni di funzione, così proprio come hai visto in C. 1621 01:14:18,165 --> 01:14:21,290 L'unica cosa diversa è così quando si arriva ad altri linguaggi di programmazione, 1622 01:14:21,290 --> 01:14:24,780 come quando si prende 51 prossimo semestre e si sta facendo con OCAML, 1623 01:14:24,780 --> 01:14:26,690 si può trattare con funzioni anonime. 1624 01:14:26,690 --> 01:14:28,240 Quindi questo è esattamente quello che hai qui. 1625 01:14:28,240 --> 01:14:31,560 Così si vuole mettere in somma, una sorta di valore somma. 1626 01:14:31,560 --> 01:14:33,870 Ma si potrebbe solo essere facendo una sola volta. 1627 01:14:33,870 --> 01:14:37,310 Quindi non si vuole chiamarla funzione Insomma, dare una dichiarazione di funzione. 1628 01:14:37,310 --> 01:14:39,830 Invece, si usa solo che come una funzione anonima. 1629 01:14:39,830 --> 01:14:42,469 E hai visto questo molto. 1630 01:14:42,469 --> 01:14:44,510 Vedrete un esempio di questo in un paio di diapositive. 1631 01:14:44,510 --> 01:14:45,597 Gia ', vedremo. 1632 01:14:45,597 --> 01:14:46,430 GABE: Bella domanda. 1633 01:14:46,430 --> 01:14:50,660 Quando si potrebbe desiderare di utilizzare una funzione anonima qui? 1634 01:14:50,660 --> 01:14:54,111 In sostanza, quando si desidera qualcosa, come un evento, per accadere. 1635 01:14:54,111 --> 01:14:55,860 Così, quando il mouse è cliccato, per esempio, 1636 01:14:55,860 --> 01:14:57,790 volete qualche funzione da chiamare. 1637 01:14:57,790 --> 01:15:00,570 Quindi si passa alla manifestazione handler, si passa alla manifestazione, 1638 01:15:00,570 --> 01:15:02,870 tipo di, la funzione che si vuole essere chiamato. 1639 01:15:02,870 --> 01:15:04,710 E quello che stai passando è come, alla fine 1640 01:15:04,710 --> 01:15:08,757 del giorno, solo un puntatore tale istruzione, alla funzione. 1641 01:15:08,757 --> 01:15:11,090 Quindi non è come stai passando l'intero codice, come 1642 01:15:11,090 --> 01:15:12,173 un puntatore alla funzione. 1643 01:15:12,173 --> 01:15:17,871 E poi, quando qualcuno fa clic il mouse, quindi tale funzione viene chiamata. 1644 01:15:17,871 --> 01:15:22,340 >> Davin: Array, in modo da avere una dichiarazione di matrice. 1645 01:15:22,340 --> 01:15:23,990 Poi, una serie di mettere le cose in. 1646 01:15:23,990 --> 01:15:25,769 Reale veloce, cosa farà questo stampare? 1647 01:15:25,769 --> 01:15:27,060 Quale sarà il terzo elemento è? 1648 01:15:27,060 --> 01:15:31,470 1649 01:15:31,470 --> 01:15:32,450 >> PUBBLICO: "JS". 1650 01:15:32,450 --> 01:15:33,940 >> DAVIN: Destra, sarebbe "JS". 1651 01:15:33,940 --> 01:15:35,760 Aspetta, tornare indietro. 1652 01:15:35,760 --> 01:15:37,100 Qual è la lunghezza? 1653 01:15:37,100 --> 01:15:38,117 >> AUDIENCE: Three. 1654 01:15:38,117 --> 01:15:38,950 DAVIN: tre, giusto? 1655 01:15:38,950 --> 01:15:40,210 Esattamente quello che si pensa. 1656 01:15:40,210 --> 01:15:42,072 OK, ora andare. 1657 01:15:42,072 --> 01:15:43,530 Array, è possibile aggiungere le cose per loro. 1658 01:15:43,530 --> 01:15:45,395 Così si può andare oltre i loro confini iniziali. 1659 01:15:45,395 --> 01:15:46,740 Solo qualcosa da tenere a mente. 1660 01:15:46,740 --> 01:15:49,760 PHP, JavaScript, sono un po ' po 'più clemente in termini di cose 1661 01:15:49,760 --> 01:15:50,570 così. 1662 01:15:50,570 --> 01:15:54,260 Oggetti, molto simile struct in C, molto 1663 01:15:54,260 --> 01:15:56,590 come array associativi in ​​PHP. 1664 01:15:56,590 --> 01:15:58,720 Avete tutti avuto esperienza con questo. 1665 01:15:58,720 --> 01:16:01,880 Così JSON, quando si sta passando JSON avanti e indietro in p-set di otto, 1666 01:16:01,880 --> 01:16:03,260 che è l'oggetto. 1667 01:16:03,260 --> 01:16:06,290 >> Quindi sì, ad esempio, vero esempio veloce. 1668 01:16:06,290 --> 01:16:07,880 Ecco un oggetto. 1669 01:16:07,880 --> 01:16:12,700 Il modo in cui si fa riferimento a questo oggetto, quindi basta reale veloce, 1670 01:16:12,700 --> 01:16:18,630 diciamo che volevo trovare out, OK, qual è il corso? 1671 01:16:18,630 --> 01:16:20,681 E così il nome dell'oggetto ecco CS50. 1672 01:16:20,681 --> 01:16:23,180 E poi se avessi un associativa array, come potrei farlo? 1673 01:16:23,180 --> 01:16:24,580 Sarò con una chiave, giusto? 1674 01:16:24,580 --> 01:16:26,030 Così ho il nome della matrice. 1675 01:16:26,030 --> 01:16:30,160 Ho staffa, le citazioni, chiave, citazioni finali, staffa fine, 1676 01:16:30,160 --> 01:16:33,610 e che tale riferimento elemento all'interno del mio array associativo. 1677 01:16:33,610 --> 01:16:37,646 Come faccio REFERENZIATA Naturalmente dentro il mio oggetto? 1678 01:16:37,646 --> 01:16:39,170 Qualcuno lo sa? 1679 01:16:39,170 --> 01:16:40,622 >> AUDIENCE: [incomprensibile]. 1680 01:16:40,622 --> 01:16:41,784 >> DAVIN: Che succede? 1681 01:16:41,784 --> 01:16:42,700 AUDIENCE: CS50.course. 1682 01:16:42,700 --> 01:16:43,510 DAVIN: Giusto, sì. 1683 01:16:43,510 --> 01:16:45,320 Così CS50.course. 1684 01:16:45,320 --> 01:16:48,770 Quindi il modo in cui si fa riferimento cose all'interno di un oggetto JSON è con un punto. 1685 01:16:48,770 --> 01:16:53,114 >> PUBBLICO: è anche possibile utilizzare la sintassi array. 1686 01:16:53,114 --> 01:16:54,050 >> DAVIN: OK, bene. 1687 01:16:54,050 --> 01:16:57,544 >> GABE: È anche possibile utilizzare la staffa CS50, string, come le virgolette. 1688 01:16:57,544 --> 01:16:59,210 PUBBLICO: Penso che sia identico a PHP. 1689 01:16:59,210 --> 01:17:00,293 GABE: E 'la stessa cosa. 1690 01:17:00,293 --> 01:17:02,487 DAVIN: Bene! 1691 01:17:02,487 --> 01:17:03,945 Ma vedrete questi altri posti. 1692 01:17:03,945 --> 01:17:08,990 1693 01:17:08,990 --> 01:17:10,480 Sì, così andare avanti. 1694 01:17:10,480 --> 01:17:13,330 Questo è quello che ho appena detto. 1695 01:17:13,330 --> 01:17:17,840 Così in un esempio JavaScript jQuery. 1696 01:17:17,840 --> 01:17:19,440 Quindi questo è il mio DOM, giusto? 1697 01:17:19,440 --> 01:17:22,290 1698 01:17:22,290 --> 01:17:25,410 Reale veloce, quindi ho un testa, ciao mondo, corpo. 1699 01:17:25,410 --> 01:17:26,160 Ho un tasto. 1700 01:17:26,160 --> 01:17:27,870 Si dice "mi spinge," quindi voglio spingere. 1701 01:17:27,870 --> 01:17:29,745 E voglio fare qualcosa quando viene cliccato. 1702 01:17:29,745 --> 01:17:31,220 Proprio accanto. 1703 01:17:31,220 --> 01:17:34,630 >> Destra, quindi questo è il mio JavaScript. 1704 01:17:34,630 --> 01:17:37,790 Quindi jQuery è solo un semplice modo di scrivere JavaScript. 1705 01:17:37,790 --> 01:17:40,920 Quindi questo, e quello che ho intenzione di mostrare Alla prossima, sta per essere jQuery, 1706 01:17:40,920 --> 01:17:41,930 sono identici. 1707 01:17:41,930 --> 01:17:43,990 Così faranno le stesse cose. 1708 01:17:43,990 --> 01:17:45,974 Basta jQuery tende ad essere un po 'più facile. 1709 01:17:45,974 --> 01:17:47,140 Le persone tendono a piacermi di più. 1710 01:17:47,140 --> 01:17:48,390 Ha un sacco di funzionalità. 1711 01:17:48,390 --> 01:17:49,830 Così le persone tendono ad utilizzare jQuery. 1712 01:17:49,830 --> 01:17:53,270 Voi tutti usato jQuery nell'ultimo p-set. 1713 01:17:53,270 --> 01:17:54,270 Che cosa farà questo fare? 1714 01:17:54,270 --> 01:17:56,580 Quale sarà questo Javascript-- così questo è semplicemente JavaScript. 1715 01:17:56,580 --> 01:17:57,430 Che sarà mai questo fare? 1716 01:17:57,430 --> 01:18:00,600 1717 01:18:00,600 --> 01:18:03,450 Che cosa farà? 1718 01:18:03,450 --> 01:18:04,890 >> Quindi, prima, si vede la finestra onload. 1719 01:18:04,890 --> 01:18:05,390 Giusto? 1720 01:18:05,390 --> 01:18:06,640 Quindi non abbiamo visto prima. 1721 01:18:06,640 --> 01:18:09,380 Quindi questo sta per aspettare fino l'intero carichi finestra. 1722 01:18:09,380 --> 01:18:12,770 Quindi è intenzione di aspettare fino a quando il carico HTML, tutte le immagini 1723 01:18:12,770 --> 01:18:13,770 Prima lo fa nulla. 1724 01:18:13,770 --> 01:18:16,050 Quindi diciamo che il nostro DOM è stato caricato. 1725 01:18:16,050 --> 01:18:17,270 Tutto lì. 1726 01:18:17,270 --> 01:18:19,080 Allora che cosa succederà? 1727 01:18:19,080 --> 01:18:19,922 Sì? 1728 01:18:19,922 --> 01:18:22,880 >> AUDIENCE: appare Button. 1729 01:18:22,880 --> 01:18:25,201 >> DAVIN: Il pulsante è già lì. 1730 01:18:25,201 --> 01:18:26,700 Sì, così del pulsante già lì. 1731 01:18:26,700 --> 01:18:31,190 Ma questo sta per dire, OK, se fa clic sul pulsante, 1732 01:18:31,190 --> 01:18:33,650 quindi il pulsante è già lì, come quella tag HTML. 1733 01:18:33,650 --> 01:18:35,980 Aspetta, tornare indietro molto velocemente. 1734 01:18:35,980 --> 01:18:39,470 Questo tag proprio qui è andando essere già un pulsante. 1735 01:18:39,470 --> 01:18:40,810 C'è già un pulsante. 1736 01:18:40,810 --> 01:18:44,120 Ma poi, il codice JavaScript tag, proprio qui, 1737 01:18:44,120 --> 01:18:46,160 si dice, OK, voglio per ottenere elemento da ID, 1738 01:18:46,160 --> 01:18:50,300 così pulsante di ricerca dice solo, OK, voglio per mappare questa variabile a quel pulsante. 1739 01:18:50,300 --> 01:18:53,120 Affinché variabile è solo un modo più semplice per accedere a quel pulsante. 1740 01:18:53,120 --> 01:18:57,300 E io dico, OK, se clicco che Pulsante, quindi se clicco quell'elemento, 1741 01:18:57,300 --> 01:18:59,560 e questo elemento si riferisce a il pulsante, se lo scatto, 1742 01:18:59,560 --> 01:19:00,875 allora voglio chiamare una funzione. 1743 01:19:00,875 --> 01:19:03,500 Qui è uno di quelli anonimi funzioni di cui parlavamo. 1744 01:19:03,500 --> 01:19:04,840 >> Basta chiamare qualche funzione. 1745 01:19:04,840 --> 01:19:08,840 All'interno tale funzione, fondamentalmente qualcosa che abbiamo visto molto, allarme. 1746 01:19:08,840 --> 01:19:10,477 Si fa clic sul pulsante di ricerca. 1747 01:19:10,477 --> 01:19:12,060 Sta per avere fondamentalmente un tasto. 1748 01:19:12,060 --> 01:19:13,040 Si fa clic su esso. 1749 01:19:13,040 --> 01:19:14,040 È possibile ottenere tale avviso. 1750 01:19:14,040 --> 01:19:14,850 X out. 1751 01:19:14,850 --> 01:19:15,754 Questo è tutto. 1752 01:19:15,754 --> 01:19:16,254 Sì? 1753 01:19:16,254 --> 01:19:21,980 >> AUDIENCE: Quindi, se si mette lo script [Incomprensibile], tag script nel codice HTML? 1754 01:19:21,980 --> 01:19:24,300 >> DAVIN: Si può mettere lo script tag dritto in testa 1755 01:19:24,300 --> 01:19:30,667 perché avete questa onload. 1756 01:19:30,667 --> 01:19:32,000 E 'inoltre di avere uno scatto. 1757 01:19:32,000 --> 01:19:34,166 Quindi è intenzione di aspettare fino a quando si fa clic su qualcosa. 1758 01:19:34,166 --> 01:19:37,470 Ma onload è giusto per essere sicuri, per rendere che i carichi tutto nel vostro HTML 1759 01:19:37,470 --> 01:19:38,170 anticipo. 1760 01:19:38,170 --> 01:19:39,247 Sì? 1761 01:19:39,247 --> 01:19:40,330 Vuoi dire qualcosa? 1762 01:19:40,330 --> 01:19:41,080 >> GABE: [incomprensibile]. 1763 01:19:41,080 --> 01:19:42,485 DAVIN: Sì. 1764 01:19:42,485 --> 01:19:45,426 >> AUDIENCE: evita così onload definire il pulsante di ricerca variabile 1765 01:19:45,426 --> 01:19:49,930 da solo dicendo document.getElementById pulsante di ricerca dot [incomprensibile]. 1766 01:19:49,930 --> 01:19:52,320 >> DAVIN: Sicuramente, ma poi la stringa viene semplicemente enorme. 1767 01:19:52,320 --> 01:19:55,553 Esattamente, quindi questo è solo per rendere più facile per voi, sì. 1768 01:19:55,553 --> 01:19:56,053 Sì? 1769 01:19:56,053 --> 01:19:57,886 >> AUDIENCE: Dove abbiamo creare window.onload? 1770 01:19:57,886 --> 01:19:58,951 O document.ready? 1771 01:19:58,951 --> 01:20:00,590 >> DAVIN: Sì, c'è. 1772 01:20:00,590 --> 01:20:02,094 Sì, c'è, ho controllato. 1773 01:20:02,094 --> 01:20:03,710 >> GABE: Non per loro a cuore. 1774 01:20:03,710 --> 01:20:06,970 >> DAVIN: OK, così ho intenzione dirvi comunque. 1775 01:20:06,970 --> 01:20:11,005 Quindi, fondamentalmente, solo in generale, così window.onload aspetta fino a quando il DOM, tutti 1776 01:20:11,005 --> 01:20:12,180 il codice HTML, i carichi. 1777 01:20:12,180 --> 01:20:13,513 Aspetta fino a quando il carico di immagini. 1778 01:20:13,513 --> 01:20:14,930 Si attende che i carichi tutto. 1779 01:20:14,930 --> 01:20:18,410 document.ready, semplicemente attende che i carichi DOM. 1780 01:20:18,410 --> 01:20:22,190 Una volta che il codice HTML è tutto lì, una volta il vostro DOM è lì, comincia a correre. 1781 01:20:22,190 --> 01:20:23,400 Questa è l'unica differenza. 1782 01:20:23,400 --> 01:20:24,700 >> GABE: sanità mentale rapido controllo qui. 1783 01:20:24,700 --> 01:20:29,060 Quindi questo può essere visto tipo di come una riga di codice, giusto? 1784 01:20:29,060 --> 01:20:33,600 Perché è window.onload pari a un mucchio di roba. 1785 01:20:33,600 --> 01:20:39,030 Quando JavaScript legge questo, vero o falso, la funzione viene eseguito. 1786 01:20:39,030 --> 01:20:40,020 Falso. 1787 01:20:40,020 --> 01:20:40,920 OK? 1788 01:20:40,920 --> 01:20:44,470 Quello che succede qui, siete solo di passaggio questa funzione come una funzioni anonime 1789 01:20:44,470 --> 01:20:45,300 a window.onload. 1790 01:20:45,300 --> 01:20:48,480 E poi, quando sta andando per ottenere effettivamente eseguito? 1791 01:20:48,480 --> 01:20:49,600 Quando i carichi delle finestre. 1792 01:20:49,600 --> 01:20:50,420 Questo è un evento. 1793 01:20:50,420 --> 01:20:52,460 Ecco, questo è jus t cosa siamo parlando di prima, giusto? 1794 01:20:52,460 --> 01:20:54,580 Così, quando si verifica l'evento, la funzione di verifica. 1795 01:20:54,580 --> 01:20:55,746 Stessa cosa con la onclick. 1796 01:20:55,746 --> 01:20:59,510 1797 01:20:59,510 --> 01:21:03,130 >> DAVIN: OK, così qualcuno ha preso via il document.ready. 1798 01:21:03,130 --> 01:21:04,698 Ma questo sarà il stesso-- esatto 1799 01:21:04,698 --> 01:21:06,864 PUBBLICO: Il segno del dollaro, che è un document.ready. 1800 01:21:06,864 --> 01:21:07,710 Questa è una scorciatoia. 1801 01:21:07,710 --> 01:21:08,501 >> DAVIN: Oh, che è? 1802 01:21:08,501 --> 01:21:10,880 1803 01:21:10,880 --> 01:21:15,500 OK, quindi questo significa document.ready, scorciatoia. 1804 01:21:15,500 --> 01:21:19,660 Ma questo è lo stesso come window.onload tranne che poca differenza 1805 01:21:19,660 --> 01:21:20,680 Ti ho parlato. 1806 01:21:20,680 --> 01:21:21,870 E questo è jQuery. 1807 01:21:21,870 --> 01:21:25,190 Quindi questa è la stessa esatta cosa-- questo è JavaScript. 1808 01:21:25,190 --> 01:21:29,500 Questo è solo-- alcune persone pensano di esso come un peso più leggero, la versione elegante 1809 01:21:29,500 --> 01:21:32,370 che ha un sacco di funzionalità che probabilmente utilizzerete. 1810 01:21:32,370 --> 01:21:34,500 Quindi questo fa la stessa identica cosa. 1811 01:21:34,500 --> 01:21:37,110 >> Quindi le cose a sottolineare tipo di. 1812 01:21:37,110 --> 01:21:40,364 Così nell'altro esempio, aveva document.getElementById, 1813 01:21:40,364 --> 01:21:42,280 così abbiamo avuto questo lungo stringa che sta per arrivare 1814 01:21:42,280 --> 01:21:44,290 l'elemento con qualsiasi ID che ha. 1815 01:21:44,290 --> 01:21:46,470 Questo è sostituito da questa chiamata qui. 1816 01:21:46,470 --> 01:21:50,860 Così si vede il simbolo del dollaro, poi vedi citazione, hashtag. 1817 01:21:50,860 --> 01:21:52,370 Hashtag è sempre un selettore. 1818 01:21:52,370 --> 01:21:54,730 Si dice, OK, questo ha a che fare con un ID. 1819 01:21:54,730 --> 01:21:56,120 Qual è il selettore per una classe? 1820 01:21:56,120 --> 01:21:57,190 >> AUDIENCE: Dot. 1821 01:21:57,190 --> 01:21:57,960 >> DAVIN: Dot, a destra. 1822 01:21:57,960 --> 01:22:01,950 Se hai intenzione di selezionare un tag, che cos'è? 1823 01:22:01,950 --> 01:22:03,310 E 'solo il tag, esattamente. 1824 01:22:03,310 --> 01:22:05,560 E si potrebbe usare che qui, pure. 1825 01:22:05,560 --> 01:22:08,560 >> GABE: E per tag, intendiamo come div, per esempio, o la testa. 1826 01:22:08,560 --> 01:22:11,500 >> DAVIN: o organismo o p o qualcosa di simile, sì. 1827 01:22:11,500 --> 01:22:14,390 Così qui, OK, invece di dire document.getElementById, 1828 01:22:14,390 --> 01:22:16,500 questo è solo la stessa identica cosa. 1829 01:22:16,500 --> 01:22:17,990 Proprio in jQuery, è più breve. 1830 01:22:17,990 --> 01:22:19,860 Così è più semplice. 1831 01:22:19,860 --> 01:22:23,420 Allora, non più onclick, basta cliccare. 1832 01:22:23,420 --> 01:22:26,320 funzione jQuery, chiamare questa funzione. 1833 01:22:26,320 --> 01:22:27,580 Alert è la stessa esatta. 1834 01:22:27,580 --> 01:22:29,452 Quindi è un po ' più piccolo, o poco 1835 01:22:29,452 --> 01:22:32,410 più breve, un piccolo popolo bit-- pensa è un po 'più facile da scrivere, 1836 01:22:32,410 --> 01:22:34,600 un po 'più facile da capire. 1837 01:22:34,600 --> 01:22:35,640 Ma questo è jQuery. 1838 01:22:35,640 --> 01:22:37,887 Un sacco di gente ottenere un po ' po 'confuso e preoccupato 1839 01:22:37,887 --> 01:22:40,220 e pensano, OK, jQuery è diverso da JavaScript. 1840 01:22:40,220 --> 01:22:42,136 Devo ricordare questi due cose diverse. 1841 01:22:42,136 --> 01:22:42,740 Non è. 1842 01:22:42,740 --> 01:22:45,315 Voglio dire, è una sintassi diversa. 1843 01:22:45,315 --> 01:22:46,970 Ma jQuery è JavaScript. 1844 01:22:46,970 --> 01:22:50,050 E 'solo un apparentemente versione migliore che 1845 01:22:50,050 --> 01:22:51,967 potrebbe essere più facile capiscono che la gente usa. 1846 01:22:51,967 --> 01:22:53,716 GABE: Sì, per essere onesto, che il simbolo del dollaro 1847 01:22:53,716 --> 01:22:57,240 che si vede in jQuery, questo è solo il il nome di una funzione che definisce jQuery. 1848 01:22:57,240 --> 01:22:58,614 Non ha nulla di speciale. 1849 01:22:58,614 --> 01:23:03,140 E 'solo il nome di una funzione, Proprio come è possibile definire il simbolo del dollaro. 1850 01:23:03,140 --> 01:23:05,670 >> DAVIN: Sì, così parlato di questo. 1851 01:23:05,670 --> 01:23:06,680 Alcune cose utili. 1852 01:23:06,680 --> 01:23:10,414 Stavo guardando indietro a vecchi quiz. 1853 01:23:10,414 --> 01:23:13,080 Negli ultimi due quiz, hanno dovuto usare cose come questa. 1854 01:23:13,080 --> 01:23:15,230 Così document.ready, così assicurarsi che tutto è 1855 01:23:15,230 --> 01:23:17,410 caricato prima di iniziare a fare le cose. 1856 01:23:17,410 --> 01:23:20,120 Selezionare un ID, oppure selezionare una classe, che sarebbe solo 1857 01:23:20,120 --> 01:23:24,020 essere citazione dot qualche classe, fine citazione. 1858 01:23:24,020 --> 01:23:26,580 Invia, quindi se siete presentazione di una forma e di chiamata 1859 01:23:26,580 --> 01:23:28,830 questa funzione dopo che il modulo presenta. 1860 01:23:28,830 --> 01:23:34,210 Valore, quindi cerchiamo di dire che ho avuto una forma presentazione, come un nome utente, una e-mail, 1861 01:23:34,210 --> 01:23:34,950 che cosa mai. 1862 01:23:34,950 --> 01:23:36,010 Ho avuto una casella di testo. 1863 01:23:36,010 --> 01:23:37,670 Così sto scrivendo in quella casella di testo. 1864 01:23:37,670 --> 01:23:42,170 Beh, se si vuole ottenere il valore da quella casella di testo, si utilizza dot val. 1865 01:23:42,170 --> 01:23:44,050 E poi, qui, dot HTML è lo stesso 1866 01:23:44,050 --> 01:23:47,710 è come documento dot getElementByID dot innerHTML. 1867 01:23:47,710 --> 01:23:50,890 Così che sta per tornare il codice HTML da quel ID. 1868 01:23:50,890 --> 01:23:55,080 Qui, è sufficiente utilizzare un po ' ID o qualunque dot HTML. 1869 01:23:55,080 --> 01:23:56,930 Che sarà ottenere il codice HTML da quell'elemento. 1870 01:23:56,930 --> 01:24:00,130 Se si voleva quindi modificare tale HTML, si può passare qualcosa. 1871 01:24:00,130 --> 01:24:05,600 Quindi saresti come dot HTML, e poi all'interno, le citazioni, nuovo HTML o qualcosa. 1872 01:24:05,600 --> 01:24:07,490 >> GABE: OK, così AJAX. 1873 01:24:07,490 --> 01:24:10,347 Mi piace molto a capire AJAX davvero bene. 1874 01:24:10,347 --> 01:24:12,430 Quindi voglio ragazzi a AJAX capire molto bene. 1875 01:24:12,430 --> 01:24:14,221 Perché se lo fai, sei praticamente andando 1876 01:24:14,221 --> 01:24:16,810 di capire tutto ciò che ha a che fare con HTTP, PHP, 1877 01:24:16,810 --> 01:24:21,080 JavaScript perché tutto viene insieme in AJAX. 1878 01:24:21,080 --> 01:24:25,130 AJAX non è un linguaggio. 1879 01:24:25,130 --> 01:24:27,000 AJAX è una tecnica. 1880 01:24:27,000 --> 01:24:31,690 E usa un sacco di diversi strumenti. 1881 01:24:31,690 --> 01:24:35,090 AJAX sta per asincrono XML JavaScript. 1882 01:24:35,090 --> 01:24:36,730 Quindi il metodo, la lingua, i dati. 1883 01:24:36,730 --> 01:24:40,610 >> Così la lingua principale che usiamo in AJAX per innescare tutto 1884 01:24:40,610 --> 01:24:42,830 e di gestire tutto in seguito è JavaScript. 1885 01:24:42,830 --> 01:24:45,160 Ecco perché si riferisce molto vicino a JavaScript. 1886 01:24:45,160 --> 01:24:49,810 E poi è asincrona perché noi non lo facciamo 1887 01:24:49,810 --> 01:24:51,980 tutto in una volta quando siamo il caricamento della pagina. 1888 01:24:51,980 --> 01:24:57,190 Questa è la cosa che possiamo fare cose tipo in parallelo. 1889 01:24:57,190 --> 01:24:59,725 L'idea principale dietro AJAX è che si desidera 1890 01:24:59,725 --> 01:25:02,170 esso per ottenere alcune informazioni specifiche. 1891 01:25:02,170 --> 01:25:06,450 Ad esempio, quando si sta digitando nuovo nome utente quando si registra un nome utente, 1892 01:25:06,450 --> 01:25:08,520 il mio nome utente è abc123. 1893 01:25:08,520 --> 01:25:11,671 E poi, alla fine del forma, è necessario fare clic su Invia. 1894 01:25:11,671 --> 01:25:14,420 E doveva andare al server, e poi verificare se nel database, 1895 01:25:14,420 --> 01:25:15,594 abc123 è già lì. 1896 01:25:15,594 --> 01:25:18,510 E se è già lì, si dice, nome già nel database degli utenti. 1897 01:25:18,510 --> 01:25:21,010 E loro, si devono compilare l'intero modulo nuovo. 1898 01:25:21,010 --> 01:25:23,110 Ed è stato molto, molto male. 1899 01:25:23,110 --> 01:25:25,440 >> E poi la gente dice, OK, perché non possiamo solo 1900 01:25:25,440 --> 01:25:29,560 fare una piccola richiesta HTTP per controllare solo per vedere se l'utente è nel database 1901 01:25:29,560 --> 01:25:32,080 prima che l'utente doveva inviare l'intero modulo? 1902 01:25:32,080 --> 01:25:36,350 Così, per esempio, quando la utente finisce di digitare abc123, 1903 01:25:36,350 --> 01:25:39,660 facciamo solo andare al server un po ' bit e solo ottenere un vero o falso 1904 01:25:39,660 --> 01:25:43,080 dal server per vedere se questo è un nome utente valido oppure no. 1905 01:25:43,080 --> 01:25:49,250 OK, quindi questo è uno dei principali usi di AJAX ancora oggi. 1906 01:25:49,250 --> 01:25:52,130 >> DAVIN: Così reale veloce, in una chiamata Ajax in jQuery, 1907 01:25:52,130 --> 01:25:54,770 si potrebbe significare che si vuole che sia sincrono. 1908 01:25:54,770 --> 01:25:56,330 Non dovresti farlo. 1909 01:25:56,330 --> 01:25:57,640 Ma si può fare. 1910 01:25:57,640 --> 01:25:59,277 E se hai fatto, cosa sarebbe successo? 1911 01:25:59,277 --> 01:26:01,610 Beh, per esempio, quando si è ottenere notizie o qualsiasi altra cosa, 1912 01:26:01,610 --> 01:26:05,464 il browser è solo andare a aspettare fino a quel intera chiamata è completa 1913 01:26:05,464 --> 01:26:08,130 invece di lasciare che fate altro le cose a posto dopo aver fatto clic esso. 1914 01:26:08,130 --> 01:26:14,560 1915 01:26:14,560 --> 01:26:17,115 >> GABE: Non è il passaggio più. 1916 01:26:17,115 --> 01:26:19,681 Dio mio. 1917 01:26:19,681 --> 01:26:20,180 Sorry! 1918 01:26:20,180 --> 01:26:22,810 1919 01:26:22,810 --> 01:26:23,601 Sì. 1920 01:26:23,601 --> 01:26:25,350 "In passato, la client necessario a richiesta 1921 01:26:25,350 --> 01:26:26,840 l'intero contenuto di un sito web. " 1922 01:26:26,840 --> 01:26:28,210 Questo è quello che ho detto. 1923 01:26:28,210 --> 01:26:30,070 Ci permette di inviare GET o POST supplementare 1924 01:26:30,070 --> 01:26:32,140 richieste, senza dover per ricaricare il nostro browser. 1925 01:26:32,140 --> 01:26:34,806 Così, alla fine della giornata, siamo in realtà fare una richiesta HTTP 1926 01:26:34,806 --> 01:26:35,740 qui utilizzando JavaScript. 1927 01:26:35,740 --> 01:26:39,700 Perché prima, abbiamo usato solo JavaScript per cambiare il codice HTML che è già venuto. 1928 01:26:39,700 --> 01:26:43,110 E ora, possiamo usarla per interfacciarsi con i server web pure. 1929 01:26:43,110 --> 01:26:46,140 Il modo in cui questo accade è che abbiamo il client. 1930 01:26:46,140 --> 01:26:47,340 Davin è un client. 1931 01:26:47,340 --> 01:26:50,797 E ha tutto il codice JavaScript esecuzione perché HTML è muto. 1932 01:26:50,797 --> 01:26:51,630 JavaScript è intelligente. 1933 01:26:51,630 --> 01:26:54,690 Così Davin Davin ha la sua intelligente parte e la sua parte muto. 1934 01:26:54,690 --> 01:26:57,590 Ha intenzione di usare la sua parte intelligente ora. 1935 01:26:57,590 --> 01:27:00,860 Ha intenzione di usare JavaScript a richiesta, per esempio, 1936 01:27:00,860 --> 01:27:04,340 se abc123 è in database o meno. 1937 01:27:04,340 --> 01:27:08,450 >> Così Davin, per favore, basta me inviare una richiesta HTTP. 1938 01:27:08,450 --> 01:27:09,197 Grazie. 1939 01:27:09,197 --> 01:27:10,530 Così ha appena inviato una richiesta HTTP. 1940 01:27:10,530 --> 01:27:11,270 Si vede che? 1941 01:27:11,270 --> 01:27:14,700 E questo è solo allo stesso modo che ogni richiesta HTTP viene inviata. 1942 01:27:14,700 --> 01:27:16,830 Il browser, Google Chrome o qualcosa, è 1943 01:27:16,830 --> 01:27:19,570 andando a vedere che Davin di cercando di inviare una richiesta HTTP, 1944 01:27:19,570 --> 01:27:20,930 andando ad aiutare hm un po '. 1945 01:27:20,930 --> 01:27:23,950 E che sta per andare fino al server. 1946 01:27:23,950 --> 01:27:27,370 Ora, il server sta per avere PHP qui, o in qualsiasi altra lingua. 1947 01:27:27,370 --> 01:27:29,990 Proprio come in una normale richiesta HTTP. 1948 01:27:29,990 --> 01:27:31,950 E 'praticamente un normale richiesta HTTP. 1949 01:27:31,950 --> 01:27:33,658 >> E poi, il server sta per dire, OK, 1950 01:27:33,658 --> 01:27:37,270 Davin mi vuole verificare se questo abc123 è nel database. 1951 01:27:37,270 --> 01:27:38,310 Vai a parlare con il modello. 1952 01:27:38,310 --> 01:27:41,310 Il modello dice che non è. abc123 è un buon nome utente. 1953 01:27:41,310 --> 01:27:47,940 E poi, il server web sta per utilizzare PHP per rendere qualche forma di file. 1954 01:27:47,940 --> 01:27:52,280 Potrebbe essere letteralmente appena un file che contiene "sì" in esso, o "no, 1955 01:27:52,280 --> 01:27:53,315 o qualcosa di simile. 1956 01:27:53,315 --> 01:27:54,190 Potrebbe essere qualsiasi file. 1957 01:27:54,190 --> 01:27:57,080 >> Potrebbe essere come ho intenzione di invia Davin una foto di un papero 1958 01:27:57,080 --> 01:28:01,200 se è nel database e inviare una foto di un criceto 1959 01:28:01,200 --> 01:28:02,420 se non è nel database. 1960 01:28:02,420 --> 01:28:04,294 Sarebbe sorta di muto, ma funzionerà. 1961 01:28:04,294 --> 01:28:07,030 OK, anch'io mando una papera a Davin. 1962 01:28:07,030 --> 01:28:08,150 Davin ha un'anatra. 1963 01:28:08,150 --> 01:28:13,330 E ora, che sta andando per gestire l'anatra? 1964 01:28:13,330 --> 01:28:16,390 Parte intelligente di Davin di nuovo, così JavaScript, giusto? 1965 01:28:16,390 --> 01:28:18,620 Javascript inviato il richiesta, e JavaScript 1966 01:28:18,620 --> 01:28:22,300 sta per ricevere la richiesta e interpretare in qualche forma. 1967 01:28:22,300 --> 01:28:26,630 >> E in questo senso, sta andando a dire, OK, se anatra poi sto bene. 1968 01:28:26,630 --> 01:28:30,770 Se criceto, poi vado per dire, no, il nome utente già 1969 01:28:30,770 --> 01:28:31,970 esiste nel database. 1970 01:28:31,970 --> 01:28:33,845 Ma di solito, non si è intenzione di inviare una papera. 1971 01:28:33,845 --> 01:28:36,740 Stai andando a trasmettere qualcosa di leggermente più intelligente. 1972 01:28:36,740 --> 01:28:40,320 E ciò che usiamo è XML. 1973 01:28:40,320 --> 01:28:42,690 E più recentemente, usiamo JSON. 1974 01:28:42,690 --> 01:28:45,629 JSON è solo JavaScript Object Notation, che 1975 01:28:45,629 --> 01:28:47,670 è fondamentalmente si ottiene un intero oggetto JavaScript. 1976 01:28:47,670 --> 01:28:50,820 E si è messo in un file, proprio come quell'oggetto CS50 che voi ragazzi ha visto. 1977 01:28:50,820 --> 01:28:53,090 Si mette in un file, e si invia verso Davin. 1978 01:28:53,090 --> 01:28:55,850 >> Quindi, in questo caso, vorrei fare un oggetto JavaScript 1979 01:28:55,850 --> 01:28:59,570 e dire, utente esiste, sì. 1980 01:28:59,570 --> 01:29:01,630 Oppure esiste utente, no. 1981 01:29:01,630 --> 01:29:02,810 E inviare di nuovo a lui. 1982 01:29:02,810 --> 01:29:03,830 E perché JSON? 1983 01:29:03,830 --> 01:29:07,330 Perché la persona che sta ricevendo questo è 1984 01:29:07,330 --> 01:29:10,030 intenzione di utilizzare JavaScript per gestire la risposta. 1985 01:29:10,030 --> 01:29:14,970 E JavaScript funziona così bene perché si chiama JavaScript Object Notation. 1986 01:29:14,970 --> 01:29:15,470 Giusto? 1987 01:29:15,470 --> 01:29:19,660 Così può chiamare una funzione e ottenere questo oggetto piacevole dalla risposta. 1988 01:29:19,660 --> 01:29:22,890 E poi, ha intenzione di sapere se l'utente è nel database o meno. 1989 01:29:22,890 --> 01:29:25,230 >> Quindi, vedete, tutto sta arrivando insieme nel server web, 1990 01:29:25,230 --> 01:29:28,450 e poi c'è un HTTP a richiesta e uno di risposta HTTP e tutto. 1991 01:29:28,450 --> 01:29:30,600 Quindi assicuratevi di ragazzi capire questa chiamata AJAX 1992 01:29:30,600 --> 01:29:37,260 perché aiuta a capire tutto dei concetti di cui stiamo parlando. 1993 01:29:37,260 --> 01:29:40,260 >> Quindi, ecco un esempio di AJAX con jQuery. 1994 01:29:40,260 --> 01:29:42,130 E qui, lo facciamo con get JSON. 1995 01:29:42,130 --> 01:29:45,660 Quindi non stiamo cercando di ottenere una immagine di un gatto qui, o un'anatra. 1996 01:29:45,660 --> 01:29:48,110 Stiamo cercando di ottenere un file JSON. 1997 01:29:48,110 --> 01:29:51,184 E poi aspettiamo che è fatto, dot fatto. 1998 01:29:51,184 --> 01:29:52,850 Questo significa che sto aspettando la risposta. 1999 01:29:52,850 --> 01:29:54,180 Si potrebbe prendere un po 'di tempo. 2000 01:29:54,180 --> 01:29:56,360 Poi, si vede un po 'di carico. 2001 01:29:56,360 --> 01:29:59,340 Se si vuole fare che nel tuo sito web. 2002 01:29:59,340 --> 01:30:01,440 Così dot fatto, e poi cosa accade quando è fatto? 2003 01:30:01,440 --> 01:30:04,040 Si passa in un anonimo funzione, proprio come abbiamo visto prima. 2004 01:30:04,040 --> 01:30:07,800 Poiché fatto è un evento, basta come un click del mouse o qualsiasi altra cosa, 2005 01:30:07,800 --> 01:30:08,710 per jQuery. 2006 01:30:08,710 --> 01:30:13,710 Quindi si passa a questa funzione con dati, testi, lo stato, e jqXHR. 2007 01:30:13,710 --> 01:30:15,790 E in fondo, questo è solo alcune variabili 2008 01:30:15,790 --> 01:30:22,160 che è possibile utilizzare in seguito per avere lo stato della richiesta HTTP, 2009 01:30:22,160 --> 01:30:24,470 i dati che sta andando di inviare di nuovo a voi. 2010 01:30:24,470 --> 01:30:28,740 Così allora si può in seguito interpretarla e fare qualcosa di significativo con esso. 2011 01:30:28,740 --> 01:30:30,240 E se non riesce, quando potrebbe fallire? 2012 01:30:30,240 --> 01:30:33,780 Beh, quando la richiesta HTTP dà un 500 o qualcosa del genere. 2013 01:30:33,780 --> 01:30:37,420 Poi, sta andando a dire il lo stato, che tipo di fallimento che era, 2014 01:30:37,420 --> 01:30:38,420 e ogni sorta di cose. 2015 01:30:38,420 --> 01:30:40,630 È necessario fare in modo per trattare entrambi i casi, 2016 01:30:40,630 --> 01:30:42,770 altrimenti il ​​programma impazzisce. 2017 01:30:42,770 --> 01:30:45,820 >> DAVIN: Quindi sì, questo è esattamente quello che avete visto sul vostro ultimo p-set. 2018 01:30:45,820 --> 01:30:49,720 La chiamata effettiva AJAX è in JSON get. 2019 01:30:49,720 --> 01:30:50,587 Questa è la chiamata. 2020 01:30:50,587 --> 01:30:52,920 E poi, dot fatto è come esso verifica se è successo. 2021 01:30:52,920 --> 01:30:55,620 Se è successo, vuoi di fare qualcosa con i dati. 2022 01:30:55,620 --> 01:30:59,290 È possibile ottenere indietro da quel Dati della richiesta JSON. 2023 01:30:59,290 --> 01:31:00,600 Questo è quello che si ottiene indietro. 2024 01:31:00,600 --> 01:31:04,470 Quindi, se vi ricordate dal p-set, molti di voi erano come supporto dati i 2025 01:31:04,470 --> 01:31:06,302 o qualsiasi altra cosa, collegamento punto o titolo. 2026 01:31:06,302 --> 01:31:08,260 Qualunque cosa sta tornando da quella JSON, qualunque 2027 01:31:08,260 --> 01:31:11,020 i campi sono in quell'oggetto JSON, questo è quello che stai ricevendo indietro. 2028 01:31:11,020 --> 01:31:12,394 I dati è quello che stai ricevendo indietro. 2029 01:31:12,394 --> 01:31:15,510 Testo di stato, solo qualcosa che ti consente di sapere cosa è successo. 2030 01:31:15,510 --> 01:31:20,570 E poi, la jqXHR, che è solo la richiesta HTTP XML jQuery. 2031 01:31:20,570 --> 01:31:21,990 Questo è solo come un oggetto. 2032 01:31:21,990 --> 01:31:23,932 E poi fallire, proprio come ha detto Gabe. 2033 01:31:23,932 --> 01:31:27,140 GABE: Nel nostro piccolo esempio di abc123 solo per controllare se questo è nel database 2034 01:31:27,140 --> 01:31:32,260 o no, i dati sarebbero qualcosa che farebbe, se dot dati nome utente esiste, 2035 01:31:32,260 --> 01:31:37,720 che è ciò che il vostro PHP generato per si, se il nome utente dot dati esiste, allora 2036 01:31:37,720 --> 01:31:40,880 Ho intenzione di avvisare, utente esiste già il nome. 2037 01:31:40,880 --> 01:31:44,300 Altrimenti, sto solo andando a lasciare che il utente procedere compilando il modulo. 2038 01:31:44,300 --> 01:31:47,860 2039 01:31:47,860 --> 01:31:50,820 OK, la sicurezza, fresco. 2040 01:31:50,820 --> 01:31:52,060 >> DAVIN: venire voglia di? 2041 01:31:52,060 --> 01:31:54,500 >> GABE: Mi piace questo. 2042 01:31:54,500 --> 01:31:57,680 Quindi qualcosa che sembra familiare. 2043 01:31:57,680 --> 01:31:59,750 Abbiamo quasi finito. 2044 01:31:59,750 --> 01:32:02,670 Quindi questo è solo l'esempio voi ragazzi SAW in classe. 2045 01:32:02,670 --> 01:32:04,860 Si stava utilizzando argv1 qui. 2046 01:32:04,860 --> 01:32:06,460 E 'come un argomento della riga di comando. 2047 01:32:06,460 --> 01:32:09,270 E stiamo mem copia che in un buffer di dimensioni 12. 2048 01:32:09,270 --> 01:32:12,560 Qual è il problema? 2049 01:32:12,560 --> 01:32:13,660 Buffer overflow! 2050 01:32:13,660 --> 01:32:15,400 Perché abbiamo un buffer di dimensione 12. 2051 01:32:15,400 --> 01:32:18,400 argv1 potrebbe avere una dimensione di due miliardi. 2052 01:32:18,400 --> 01:32:19,960 Non facciamo alcun controllo di confine. 2053 01:32:19,960 --> 01:32:24,970 Così potremmo copiare un sacco di memoria. 2054 01:32:24,970 --> 01:32:28,630 E saremo particolarmente male su questo. 2055 01:32:28,630 --> 01:32:32,600 Cosa potremmo fare questo è molto, molto significare in questo caso? 2056 01:32:32,600 --> 01:32:33,278 Sì? 2057 01:32:33,278 --> 01:32:36,528 AUDIENCE: Parte delle due miliardi di cose contiene codice eseguibile che restituisce 2058 01:32:36,528 --> 01:32:38,127 [Incomprensibile]. 2059 01:32:38,127 --> 01:32:38,710 GABE: Esattamente. 2060 01:32:38,710 --> 01:32:41,110 Ecco, questo è il tipo di cosa che la gente usa 2061 01:32:41,110 --> 01:32:43,344 effettuare il jailbreak di un iPhone, per esempio. 2062 01:32:43,344 --> 01:32:44,260 Così questo genere di cose. 2063 01:32:44,260 --> 01:32:48,610 Perché si può solo rendere il dispositivo eseguire qualsiasi codice che ti piace. 2064 01:32:48,610 --> 01:32:50,247 La correzione, in modo che la correzione è facile. 2065 01:32:50,247 --> 01:32:51,330 Basta controllare per i limiti. 2066 01:32:51,330 --> 01:32:53,455 Controllate per nulla, perché abbiamo sempre controllare per nulla 2067 01:32:53,455 --> 01:32:54,940 quando abbiamo a che fare con le stringhe. 2068 01:32:54,940 --> 01:32:57,840 E poi, si prende la lunghezza della stringa prima. 2069 01:32:57,840 --> 01:33:00,150 E se la stringa lunghezza è una stringa valida 2070 01:33:00,150 --> 01:33:03,700 lunghezza, che è a 0 e 12, poi siamo a posto. 2071 01:33:03,700 --> 01:33:07,144 >> DAVIN: se non si seleziona per null, velocissimo, che cosa accadrà? 2072 01:33:07,144 --> 01:33:07,810 Sarà errore di segmentazione. 2073 01:33:07,810 --> 01:33:10,850 Perché si è Seg colpa? 2074 01:33:10,850 --> 01:33:12,510 Perché si sta chiamando strlen su null. 2075 01:33:12,510 --> 01:33:13,010 GABE: Sì. 2076 01:33:13,010 --> 01:33:16,490 2077 01:33:16,490 --> 01:33:19,630 Vero o falso, utilizzando uno password è una buona idea. 2078 01:33:19,630 --> 01:33:20,430 >> AUDIENCE: Falso. 2079 01:33:20,430 --> 01:33:21,150 >> GABE: Falso. 2080 01:33:21,150 --> 01:33:23,870 Utilizzare molte password, e grandi, quelli lunghi. 2081 01:33:23,870 --> 01:33:26,050 Icone Lucchetto garantire la sicurezza. 2082 01:33:26,050 --> 01:33:27,080 >> AUDIENCE: Falso. 2083 01:33:27,080 --> 01:33:27,749 >> GABE: Falso. 2084 01:33:27,749 --> 01:33:28,790 Non significa nulla. 2085 01:33:28,790 --> 01:33:30,480 E 'solo un'icona. 2086 01:33:30,480 --> 01:33:32,824 SSL protegge da una uomo in attacco centrale. 2087 01:33:32,824 --> 01:33:33,490 AUDIENCE: Falso. 2088 01:33:33,490 --> 01:33:34,110 GABE: Falso. 2089 01:33:34,110 --> 01:33:35,355 OK, in modo che tutti coloro che sono false. 2090 01:33:35,355 --> 01:33:38,324 2091 01:33:38,324 --> 01:33:39,490 Nizza. 2092 01:33:39,490 --> 01:33:40,220 [Incomprensibile] 2093 01:33:40,220 --> 01:33:42,500 Vuoi parlare di questo? 2094 01:33:42,500 --> 01:33:43,259 Il tuo turno. 2095 01:33:43,259 --> 01:33:45,050 Davin: Tipi di attacchi, uomo al centro. 2096 01:33:45,050 --> 01:33:47,134 Che cosa è un uomo in mezzo l'attacco? 2097 01:33:47,134 --> 01:33:48,050 AUDIENCE: [incomprensibile]. 2098 01:33:48,050 --> 01:33:51,437 2099 01:33:51,437 --> 01:33:54,020 DAVIN: Se si invia un HTTP richiesta, che potrebbe fare questo, giusto? 2100 01:33:54,020 --> 01:33:57,890 Ma se si sta inviando HTTPS, che probabilmente non sarà in grado di farlo. 2101 01:33:57,890 --> 01:33:59,952 C'è un sacco di punti lungo la connessione. 2102 01:33:59,952 --> 01:34:00,660 Hai router. 2103 01:34:00,660 --> 01:34:01,746 Avete server DNS. 2104 01:34:01,746 --> 01:34:04,120 Se qualcuno è in grado di fisicamente vedere che cosa si sta inviando, 2105 01:34:04,120 --> 01:34:06,140 così qualcuno è in grado di effettivamente ottenere tra voi, 2106 01:34:06,140 --> 01:34:08,840 il client e il server, ed è in grado di vedere ciò che si sta inviando, 2107 01:34:08,840 --> 01:34:10,298 questo è un uomo in attacco centrale. 2108 01:34:10,298 --> 01:34:14,287 Quindi, per vedere che cosa si sta cercando di ottenere da il server, o è in grado di see-- peggio, 2109 01:34:14,287 --> 01:34:16,620 si potrebbe essere in grado di vedere cookie o qualcosa del genere. 2110 01:34:16,620 --> 01:34:19,290 >> Così, per esempio, se non si sta usando SSL, ha 2111 01:34:19,290 --> 01:34:21,900 potrebbe essere in grado di vedere i cookie di sessione. 2112 01:34:21,900 --> 01:34:25,460 E questo si chiama dirottamento di sessione perché vede i cookie ID, 2113 01:34:25,460 --> 01:34:28,317 e poi lui è in grado di andare a quel sito web e far finta di essere te. 2114 01:34:28,317 --> 01:34:31,150 Perché proprio come in PHP, ricordate quando abbiamo registrato in, cosa facciamo? 2115 01:34:31,150 --> 01:34:33,340 Abbiamo impostato ID di sessione pari a ID. 2116 01:34:33,340 --> 01:34:34,810 Così che si identifica. 2117 01:34:34,810 --> 01:34:38,300 Ecco perché si può vedere il vostro portafoglio e il portafoglio non di tutti gli altri. 2118 01:34:38,300 --> 01:34:42,320 >> Beh, se sono in grado di ottenere il cookie, allora posso accedere a quella pagina. 2119 01:34:42,320 --> 01:34:45,380 E poi, posso solo vedere le tue cose e iniziare a comprare e vendere roba. 2120 01:34:45,380 --> 01:34:46,800 Ecco, questo è dirottamento di sessione. 2121 01:34:46,800 --> 01:34:50,810 Ma non si dovrebbe essere in grado a-- modo può utilizzare l'uomo in attacco centrale 2122 01:34:50,810 --> 01:34:52,290 anche se si sta utilizzando SSL. 2123 01:34:52,290 --> 01:34:53,520 Ma non si dovrebbe essere in grado di. 2124 01:34:53,520 --> 01:34:56,580 Se si sta utilizzando SSL, non puoi sessione dirottamento. 2125 01:34:56,580 --> 01:34:58,927 Perché? 2126 01:34:58,927 --> 01:35:01,135 Perché è tutto criptato, giusto? se è criptato, 2127 01:35:01,135 --> 01:35:03,509 e sono ancora un uomo nel mezzo, ho ancora ottenere i vostri dati. 2128 01:35:03,509 --> 01:35:04,279 Va bene. 2129 01:35:04,279 --> 01:35:05,070 Ma è criptata. 2130 01:35:05,070 --> 01:35:07,750 Quindi non posso davvero usarlo. 2131 01:35:07,750 --> 01:35:09,840 Ecco, questo è due. 2132 01:35:09,840 --> 01:35:11,544 >> Reale veloce, richiesta sito croce falso. 2133 01:35:11,544 --> 01:35:13,960 Questo è solo se c'è un collegamento e tale collegamento fa qualcosa 2134 01:35:13,960 --> 01:35:14,890 che non pensa che dovrebbe fare. 2135 01:35:14,890 --> 01:35:18,150 Così, per esempio, se il collegamento era andare a comprare azioni o vendere azioni, 2136 01:35:18,150 --> 01:35:19,360 e non lo sai. 2137 01:35:19,360 --> 01:35:22,040 Si cliccato sul link, inviato una richiesta, ha acquistato 2138 01:35:22,040 --> 01:35:24,240 o venduto qualcosa che non hai intenzione di fare. 2139 01:35:24,240 --> 01:35:25,120 Che è questo. 2140 01:35:25,120 --> 01:35:30,720 >> Cross site scripting, ecco, si sta passando via variabili q, 2141 01:35:30,720 --> 01:35:33,510 invece di passare in una specie di valore, forse q è come un nome. 2142 01:35:33,510 --> 01:35:36,560 Così, invece di passare uguali q Davin o qualcosa del genere, 2143 01:35:36,560 --> 01:35:38,740 se non si utilizza HTML caratteri speciali, se si 2144 01:35:38,740 --> 01:35:43,100 non sfuggire a questa per assicurarsi che sia OK, quindi ho potuto passare, invece, 2145 01:35:43,100 --> 01:35:46,910 diciamo qui che sto dicendo stampa o qualcosa del genere, 2146 01:35:46,910 --> 01:35:51,070 allora potrei passare qui una chiamata di script. 2147 01:35:51,070 --> 01:35:53,140 >> Allora, invece di solo ottenere una variabile, 2148 01:35:53,140 --> 01:35:54,960 Vorrei quindi eseguire la chiamata dello script. 2149 01:35:54,960 --> 01:35:57,065 Quindi all'interno di questo script chiamare, che cosa fa? 2150 01:35:57,065 --> 01:36:00,190 Documento posizione punto, che sta per modificare la posizione del documento. 2151 01:36:00,190 --> 01:36:02,290 Quindi ho intenzione di reindirizzare da qualche altra parte. 2152 01:36:02,290 --> 01:36:08,170 Si chiama cattivo in questo esempio, molto buono. 2153 01:36:08,170 --> 01:36:10,536 Impossibile pensare alla parola. 2154 01:36:10,536 --> 01:36:12,410 E allora, che cosa è ancora peggio è che io vado 2155 01:36:12,410 --> 01:36:16,832 di biscotto poi impostare, che è un po ' variabili che ho in questo sito. 2156 01:36:16,832 --> 01:36:19,040 Ho intenzione di impostare la parità al cookie documento di dot. 2157 01:36:19,040 --> 01:36:20,660 Perciò, io vado di rubare il cookie. 2158 01:36:20,660 --> 01:36:22,951 E ho intenzione di reindirizzare alcune informazioni ad un sito 2159 01:36:22,951 --> 01:36:25,120 che non dovrebbe essere accede. 2160 01:36:25,120 --> 01:36:29,250 E tutto questo accade perché sei Non fuggire ciò che hai visto. 2161 01:36:29,250 --> 01:36:29,910 Sì? 2162 01:36:29,910 --> 01:36:32,160 >> AUDIENCE: Quindi, solo per rendere chiaro, è 2163 01:36:32,160 --> 01:36:37,550 vulnerable.com che è vulnerabile a questo. 2164 01:36:37,550 --> 01:36:39,300 Così quel collegamento può apparire su una data pagina. 2165 01:36:39,300 --> 01:36:42,200 Qualcuno fa clic su di esso, va a vulnerable.com. 2166 01:36:42,200 --> 01:36:43,700 Si dispone di un cookie per vulnerable.com. 2167 01:36:43,700 --> 01:36:46,670 Diciamo che Facebook è vulnerabile, così facebook.com. 2168 01:36:46,670 --> 01:36:48,310 Avete il cookie di Facebook. 2169 01:36:48,310 --> 01:36:50,925 Che cosa sta facendo questo, sei andando a facebook.com, 2170 01:36:50,925 --> 01:36:53,990 è immediatamente reindirizzamento di badguy.com, 2171 01:36:53,990 --> 01:36:57,182 ma comprese le informazioni dei cookie. 2172 01:36:57,182 --> 01:36:59,310 Quindi è un veloce reindirizzamento, ma il cookie di Facebook 2173 01:36:59,310 --> 01:37:02,572 è incluso con questo redirect, e questo è il modo in cui [incomprensibile]. 2174 01:37:02,572 --> 01:37:04,280 GABE: Sì, c'è alcune cose molto medi 2175 01:37:04,280 --> 01:37:06,070 che la gente può fare se non c'è questo. 2176 01:37:06,070 --> 01:37:09,190 Ad esempio, se consentito Facebook tutti di cambiare il proprio nome utente, 2177 01:37:09,190 --> 01:37:11,680 e non hanno fatto alcun controlli di integrità, in modo da 2178 01:37:11,680 --> 01:37:16,810 potrebbe inserire una cosa che Javascript cambia l'immagine di un criceto. 2179 01:37:16,810 --> 01:37:22,590 E che inserisce la stessa JavaScript in tutti quelli che visualizza la pagina. 2180 01:37:22,590 --> 01:37:26,400 Così tutti coloro che visualizza la pagina ha la stessa cosa al nome utente. 2181 01:37:26,400 --> 01:37:30,104 E poiché si tratta di un virus, si diffonde in modo esponenziale. 2182 01:37:30,104 --> 01:37:32,270 DAVIN: Faremo saltare l'ultima uno, e poi abbiamo finito. 2183 01:37:32,270 --> 01:37:34,120 Quindi questo è solo un altro esempio. 2184 01:37:34,120 --> 01:37:36,120 Quindi questo è che non sono sfuggendo loro tabella SQL. 2185 01:37:36,120 --> 01:37:37,090 Così si può cadere. 2186 01:37:37,090 --> 01:37:38,805 Così si vuole fuggire le cose. 2187 01:37:38,805 --> 01:37:44,010 Questo è stato l'esempio precedente con il cross site scripting. 2188 01:37:44,010 --> 01:37:45,430 Ci dispiace abbiamo corso un po 'in ritardo. 2189 01:37:45,430 --> 01:37:46,870 Domani, mi dispiace! 2190 01:37:46,870 --> 01:37:48,560 Domani, abbiamo orari di ufficio. 2191 01:37:48,560 --> 01:37:50,870 Così le ore di ufficio in Cabbot 8:00-11:00. 2192 01:37:50,870 --> 01:37:55,240 Gli orari di ufficio sono rigorosamente per domande quiz. 2193 01:37:55,240 --> 01:37:56,587