1 00:00:00,000 --> 00:00:02,964 2 00:00:02,964 --> 00:00:05,434 >> [MUSIC JOC] 3 00:00:05,434 --> 00:00:11,825 4 00:00:11,825 --> 00:00:12,700 HANNAH: Bună, toată lumea. 5 00:00:12,700 --> 00:00:15,866 Vă mulțumesc baieti atât de mult pentru ieșirea în vremea dezgustător pentru test un 6 00:00:15,866 --> 00:00:16,910 revizui sesiune. 7 00:00:16,910 --> 00:00:20,020 După cum voi știți, test unul este miercuri. 8 00:00:20,020 --> 00:00:22,209 Deci, vom merge printr-o mulțime de subiecte. 9 00:00:22,209 --> 00:00:24,000 Davin: Hei, pot să spun ceva foarte repede? 10 00:00:24,000 --> 00:00:25,215 HANNAH: Da, lui Davin merge a spune ceva foarte repede. 11 00:00:25,215 --> 00:00:25,780 Davin: Îmi pare rău. 12 00:00:25,780 --> 00:00:29,490 Doar foarte repede, dacă aveți întrebări despre testul, poti sa te duci on-line. 13 00:00:29,490 --> 00:00:32,420 Du-te la 2,014 test este de aproximativ testul. 14 00:00:32,420 --> 00:00:34,680 Este logistică recuperează despre unde să meargă, atunci când pentru a merge. 15 00:00:34,680 --> 00:00:38,100 Dacă sunteți înscris simultan, suntem va avea un test de machiaj la 5:30. 16 00:00:38,100 --> 00:00:40,350 Sau, dacă mi-ai trimis o problemă, aveți o altă problemă. 17 00:00:40,350 --> 00:00:42,640 Dar 5:30 este make-up de miercuri. 18 00:00:42,640 --> 00:00:44,540 Dar, dacă aveți întrebări, întrebări generale, 19 00:00:44,540 --> 00:00:45,748 online are toata logistica. 20 00:00:45,748 --> 00:00:47,690 Deci, a verifica acolo mai întâi. 21 00:00:47,690 --> 00:00:49,070 >> HANNAH: Awesome. 22 00:00:49,070 --> 00:00:53,030 Deci, aici e lista mare de subiecte că vom trece prin ziua de azi. 23 00:00:53,030 --> 00:00:57,390 Am de gând să acoperi toate C chestii, și anume că prima coloană. 24 00:00:57,390 --> 00:01:00,710 Deci, lucrurile C pe care le acoperit după test de zero. 25 00:01:00,710 --> 00:01:05,459 Incepand cu o listă legată, care include indicii. 26 00:01:05,459 --> 00:01:07,668 >> Bine, așa că am văzut această în ultima sesiune de revizuire, 27 00:01:07,668 --> 00:01:10,000 așa am de gând să merg prin acest lucru este un pic mai repede. 28 00:01:10,000 --> 00:01:13,500 Doar ridica mâna dacă vrei să încetini sau adresa ceva mai mult. 29 00:01:13,500 --> 00:01:17,150 Dar noi folosim liste legate deoarece am început în C, cu matrice. 30 00:01:17,150 --> 00:01:20,920 Și matrice sunt mari, dar problemă este că au o dimensiune fixă. 31 00:01:20,920 --> 00:01:24,925 Listele legat ne permit să creeze dimensionată dinamic structuri de date. 32 00:01:24,925 --> 00:01:28,520 33 00:01:28,520 --> 00:01:32,320 >> Și avem operațiunile noastre de bază, insera, șterge, și de căutare. 34 00:01:32,320 --> 00:01:36,780 Și putem face inserați în cel mai rău caz timp constant 35 00:01:36,780 --> 00:01:39,140 dacă ne-am pus-o la bun început. 36 00:01:39,140 --> 00:01:45,220 Ștergeți si cauta, cel mai rău caz mare oh de n timp. 37 00:01:45,220 --> 00:01:47,140 Deci, din nou, doar pentru a răsturna prin aceste imagini, 38 00:01:47,140 --> 00:01:50,860 Știu că am văzut aceste data trecută, dar ne doriți să urmăriți de pe lista noastră de legat 39 00:01:50,860 --> 00:01:53,440 Prin urmărirea șef de lista noastră legată. 40 00:01:53,440 --> 00:01:55,580 Pentru că știm că fiecare dintre noduri noastre 41 00:01:55,580 --> 00:01:58,610 este doar de gând să punct la următor nod în lista noastră legată. 42 00:01:58,610 --> 00:02:00,460 >> Deci așa urmarim. 43 00:02:00,460 --> 00:02:02,910 Chiar dacă acestea nu sunt piese continue de memorie, 44 00:02:02,910 --> 00:02:07,410 le putem găsi doar prin în urma diferitelor săgeți. 45 00:02:07,410 --> 00:02:09,800 Aici este structura noastră pentru un nod listă legat. 46 00:02:09,800 --> 00:02:11,440 Am văzut acest ultim moment. 47 00:02:11,440 --> 00:02:13,080 Avem nod nostru struct. 48 00:02:13,080 --> 00:02:14,340 Și are două proprietăți. 49 00:02:14,340 --> 00:02:17,020 Numărul unu, real Valoarea vrem să stocați. 50 00:02:17,020 --> 00:02:18,290 În acest caz, este un număr întreg. 51 00:02:18,290 --> 00:02:21,100 Ar putea fi un șir de caractere, aceasta ar putea fi un char, tot ce vrei. 52 00:02:21,100 --> 00:02:24,710 Și apoi, trebuie să țină evidența urmatorul nod din lista noastră legată. 53 00:02:24,710 --> 00:02:29,797 Așa că va fi un pointer la nodul următor. 54 00:02:29,797 --> 00:02:31,880 Dacă ați fost doar faci căutare, cum am spus mai înainte, 55 00:02:31,880 --> 00:02:34,900 ai avea să urmeze săgețile jos. 56 00:02:34,900 --> 00:02:40,720 Introducerea, ar trebui să țineți evidența de unde restul de lista este. 57 00:02:40,720 --> 00:02:44,150 Și vrei să redirecționați cap pentru a indica noi elemente, care 58 00:02:44,150 --> 00:02:46,640 în acest caz este unul, iar apoi se va indica 59 00:02:46,640 --> 00:02:49,480 la restul listei de legătura. 60 00:02:49,480 --> 00:02:52,996 Deci, din nou, știu că acest lucru este un pic bit de o repetare de la test la zero. 61 00:02:52,996 --> 00:02:55,370 Așa că trebuie să fim foarte atenți despre ordinea în care ne-am 62 00:02:55,370 --> 00:03:00,390 face aceste pointings așa că nu pierde urma partea din spate a listei. 63 00:03:00,390 --> 00:03:04,122 OK, întrebări cu doar legate individual liste? 64 00:03:04,122 --> 00:03:06,060 Awesome, OK, rece. 65 00:03:06,060 --> 00:03:09,410 >> Acum, vom merge pe ceva doar puțin mai complicat, 66 00:03:09,410 --> 00:03:10,920 legate de două ori liste. 67 00:03:10,920 --> 00:03:13,680 Deci, în plus față de păstrarea cale de nod următor, 68 00:03:13,680 --> 00:03:16,220 dorim, de asemenea, să țină evidența al nodului precedent. 69 00:03:16,220 --> 00:03:19,580 Și acest lucru ne permite să, dacă suntem la un moment dat în lista noastră legată, 70 00:03:19,580 --> 00:03:23,110 du-te nu numai înainte, ci De asemenea, repeta înapoi. 71 00:03:23,110 --> 00:03:25,220 Pentru că așa cum am văzut în o listă individual legate, 72 00:03:25,220 --> 00:03:27,980 dacă am fost la un nod, și dintr-o dată, ne-am decis, 73 00:03:27,980 --> 00:03:30,160 de fapt, eu vreau să merg la dreptul de nod în fața mea, 74 00:03:30,160 --> 00:03:32,034 ai avea pentru a merge tot drumul înapoi la cap 75 00:03:32,034 --> 00:03:35,710 și repeta prin până când găsit nodul pe care o căutați. 76 00:03:35,710 --> 00:03:37,680 >> Deci, acest lucru face lucrurile usor mai usor ca suntem 77 00:03:37,680 --> 00:03:39,670 încercarea de a repeta prin intermediul lista noastră legată. 78 00:03:39,670 --> 00:03:47,870 Dar ne cere pentru a ține evidența unul mai pointer, deci mai mult de o stea nod. 79 00:03:47,870 --> 00:03:50,830 Bine, deci aici vine partea distractivă. 80 00:03:50,830 --> 00:03:55,600 Vom practica de punere în aplicare elimina pentru listele de două ori legate. 81 00:03:55,600 --> 00:03:58,660 Deci, aceasta este ceva care este joc total corect pentru testul. 82 00:03:58,660 --> 00:04:00,750 Ea a apărut pe teste din trecut. 83 00:04:00,750 --> 00:04:04,220 Deci, cu siguranță fi preparate pentru a coda un pic în C. 84 00:04:04,220 --> 00:04:07,900 Nu uita ca, cu toate acest PHP distracție și JavaScript, 85 00:04:07,900 --> 00:04:10,560 tot trebuie să ne amintim să facă C. Deci, perie pe care 86 00:04:10,560 --> 00:04:12,146 dacă vă simțiți ruginit. 87 00:04:12,146 --> 00:04:14,580 >> Bine, să vedem dacă putem face acest lucru. 88 00:04:14,580 --> 00:04:16,312 OK, rece. 89 00:04:16,312 --> 00:04:18,600 Deci, vom încerca pentru a edita chiar aici, 90 00:04:18,600 --> 00:04:20,707 și sperăm că acest lucru merge conform planurilor. 91 00:04:20,707 --> 00:04:23,915 Bine, nimeni nu vrea să-mi dea o sugestie cu privire la cum ar trebui să încep? 92 00:04:23,915 --> 00:04:27,030 Singura ipoteza că sunt luare este că eu deja 93 00:04:27,030 --> 00:04:30,180 au o structură definită, o am arătat pe ultima pagină, 94 00:04:30,180 --> 00:04:31,420 pe ultimul diapozitiv. 95 00:04:31,420 --> 00:04:39,250 Și mă stocarea capul legat meu list in unele pointer numit listă. 96 00:04:39,250 --> 00:04:42,190 Are cineva vrea să mă început? 97 00:04:42,190 --> 00:04:45,410 >> Audiența: Pot să vă creați un nou nod pentru a apela prin lista? 98 00:04:45,410 --> 00:04:46,410 >> HANNAH: Awesome, așa vom crea 99 00:04:46,410 --> 00:04:47,951 un nod nou să se târască prin lista. 100 00:04:47,951 --> 00:04:48,570 Îmi place asta. 101 00:04:48,570 --> 00:04:50,799 Voi doar numesc pointer dacă e în regulă. 102 00:04:50,799 --> 00:04:52,340 Și în cazul în care ar trebui să înceapă inițial? 103 00:04:52,340 --> 00:04:57,280 104 00:04:57,280 --> 00:04:59,840 >> Audiența: Probabil la capul listei. 105 00:04:59,840 --> 00:05:00,590 HANNAH: Frumos. 106 00:05:00,590 --> 00:05:03,670 Dorim să înceapă de la cap, care I-am spus va fi stocat în lista. 107 00:05:03,670 --> 00:05:04,170 Minunat. 108 00:05:04,170 --> 00:05:05,220 Până acum, bine. 109 00:05:05,220 --> 00:05:08,260 Și acum, scopul nostru este de a repeta prin lista 110 00:05:08,260 --> 00:05:12,870 până când vom găsi nodul cu Valoarea n care vrem să-l ștergeți. 111 00:05:12,870 --> 00:05:13,540 OK? 112 00:05:13,540 --> 00:05:15,910 >> Deci, acum este partea în care vrem să itera prin. 113 00:05:15,910 --> 00:05:19,488 Poate cineva sugerează o mod de a repeta prin? 114 00:05:19,488 --> 00:05:20,979 >> Audiența: O buclă. 115 00:05:20,979 --> 00:05:21,840 >> HANNAH: O buclă. 116 00:05:21,840 --> 00:05:22,620 Îmi place. 117 00:05:22,620 --> 00:05:25,550 Mai exact, putem încerca o buclă în timp ce. 118 00:05:25,550 --> 00:05:30,919 OK, și știm că ne-am atins la sfârșitul listei noastre când ce? 119 00:05:30,919 --> 00:05:32,210 Audiența: Când indicatorul este nul. 120 00:05:32,210 --> 00:05:33,418 HANNAH: Când indicatorul este nul. 121 00:05:33,418 --> 00:05:34,320 Frumos, îmi place. 122 00:05:34,320 --> 00:05:35,110 OK, rece. 123 00:05:35,110 --> 00:05:39,300 124 00:05:39,300 --> 00:05:43,190 Deci, îmi pare rău dacă bretele meu de încadrare este fel de a cădea de pe ecran. 125 00:05:43,190 --> 00:05:44,090 Am adus înapoi. 126 00:05:44,090 --> 00:05:46,610 OK, rece. 127 00:05:46,610 --> 00:05:48,690 Ce urmează? 128 00:05:48,690 --> 00:05:51,950 >> Deci, știm că doriți să ștergeți nodul care are valoare n. 129 00:05:51,950 --> 00:05:56,340 Deci, haideți să găsim cazul în care găsim de fapt nod nostru. 130 00:05:56,340 --> 00:05:57,840 Deci, cum aș verifica asta? 131 00:05:57,840 --> 00:06:02,210 Aș spune doar dacă indicatorul, iar apoi, dacă am doriți să obțineți valoarea de pointer, 132 00:06:02,210 --> 00:06:08,940 Eu doar mi săgeată n, este egal n, parametrul 133 00:06:08,940 --> 00:06:14,490 că am dat la această funcție, nod pe care ne-o dorim pentru a șterge de fapt. 134 00:06:14,490 --> 00:06:17,090 Orice întrebări până aici? 135 00:06:17,090 --> 00:06:18,360 În regulă. 136 00:06:18,360 --> 00:06:24,140 OK, deci acum hai desena o imagine rapidă pe placa pentru a vizualiza acest lucru. 137 00:06:24,140 --> 00:06:30,710 >> Deci, haideți să spunem că e nod nostru minunat. 138 00:06:30,710 --> 00:06:34,480 Și are o valoare, o să spun doar patru. 139 00:06:34,480 --> 00:06:40,340 Și arată la alta nod în lista noastră legată. 140 00:06:40,340 --> 00:06:42,220 Și nu e nimic în fața sa. 141 00:06:42,220 --> 00:06:45,800 Deci avem precedent nostru arătând spre nimic. 142 00:06:45,800 --> 00:06:48,110 În acest caz, am punctul înapoi. 143 00:06:48,110 --> 00:06:50,960 OK, doar înființarea mea Lista de legat aici. 144 00:06:50,960 --> 00:06:53,630 Și avem o listă care indică la această structură pentru a începe cu. 145 00:06:53,630 --> 00:06:57,220 146 00:06:57,220 --> 00:07:00,485 Voi trage una mai mult pentru Cu titlu suplimentar. 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 Voi punctul acesta înainte. 150 00:07:07,480 --> 00:07:09,550 Și voi subliniez că unul înapoi. 151 00:07:09,550 --> 00:07:10,360 Hopa, îmi pare rău. 152 00:07:10,360 --> 00:07:12,710 Da, a primit această invers. 153 00:07:12,710 --> 00:07:15,548 154 00:07:15,548 --> 00:07:16,967 Fă-o din nou. 155 00:07:16,967 --> 00:07:18,330 OK, nu mergem. 156 00:07:18,330 --> 00:07:19,910 Bine, am înțeles. 157 00:07:19,910 --> 00:07:21,780 OK, aici e imaginea noastră. 158 00:07:21,780 --> 00:07:24,860 >> OK, deci ne-am dori să ia în considerare două cazuri. 159 00:07:24,860 --> 00:07:27,330 Primul caz este dacă este nod vrem să-l ștergeți 160 00:07:27,330 --> 00:07:29,420 este chiar la începutul listei noastre. 161 00:07:29,420 --> 00:07:34,070 Și apoi, de-al doilea caz pe care ne-o dorim să ia în considerare este dacă e în altă parte. 162 00:07:34,070 --> 00:07:37,660 Am înțeles că acest lucru o cu totul desen murdar cu toată ștergerea mea, 163 00:07:37,660 --> 00:07:40,400 dar sperăm că vom încerca să face acest lucru clar cu un cod. 164 00:07:40,400 --> 00:07:45,450 >> OK, deci haideți să acopere cazul unde am găsit nod nostru, 165 00:07:45,450 --> 00:07:48,900 și este la foarte începe de lista noastră legată. 166 00:07:48,900 --> 00:07:50,810 Oricine-mi dea un sugestie aici la ceea ce 167 00:07:50,810 --> 00:07:54,684 Ar trebui să fac pentru a elimina de fapt nod nostru? 168 00:07:54,684 --> 00:07:55,970 E un pic complicat. 169 00:07:55,970 --> 00:07:56,470 OK? 170 00:07:56,470 --> 00:07:59,628 >> Audiența: Trebuie să luați nod care ar fi sesizată 171 00:07:59,628 --> 00:08:01,794 și să-l punct la unul care ar fi după ea, 172 00:08:01,794 --> 00:08:03,004 și să ia nodul care ar fi după ea și face 173 00:08:03,004 --> 00:08:04,554 se indică nodul în fața sa. 174 00:08:04,554 --> 00:08:05,220 HANNAH: Exact. 175 00:08:05,220 --> 00:08:10,640 OK, deci acesta este cazul where-- avem două cazuri. 176 00:08:10,640 --> 00:08:14,100 Avem cazul în care nod pe care-l căutăm 177 00:08:14,100 --> 00:08:18,270 este partea din față a listei. 178 00:08:18,270 --> 00:08:23,110 OK, iar apoi cazul în care ați descris este altfel, nu? 179 00:08:23,110 --> 00:08:24,500 E undeva în listă. 180 00:08:24,500 --> 00:08:27,460 181 00:08:27,460 --> 00:08:32,840 Deci ai spus, trebuie să uita-te la nodul anterior, 182 00:08:32,840 --> 00:08:36,500 și de a face nodul precedent indică nodul următor. 183 00:08:36,500 --> 00:08:40,510 Deci, să spunem că suntem încercând să scoate cinci 184 00:08:40,510 --> 00:08:43,059 în desenul meu foarte murdar aici. 185 00:08:43,059 --> 00:08:47,530 Vrem să ne asigurăm că patru puncte acum la șase. 186 00:08:47,530 --> 00:08:49,590 Patru lui urmatorii puncte la șase. 187 00:08:49,590 --> 00:08:52,150 Și șase de puncte anterioare la patru. 188 00:08:52,150 --> 00:08:53,960 Asta e scopul nostru aici, nu? 189 00:08:53,960 --> 00:08:56,150 Aceasta este ceea ce crezi tocmai a spus acolo. 190 00:08:56,150 --> 00:08:58,450 >> OK, deci hai obține că primul piesă. 191 00:08:58,450 --> 00:09:02,300 Să facem avea indicatorul precedent precedent. 192 00:09:02,300 --> 00:09:06,550 193 00:09:06,550 --> 00:09:09,690 Deci, patru de pe lângă ar trebui să arate la ce? 194 00:09:09,690 --> 00:09:13,210 195 00:09:13,210 --> 00:09:14,900 Exact, în acest caz, șase. 196 00:09:14,900 --> 00:09:18,470 Deci, ar trebui să spunem pointer, următorul. 197 00:09:18,470 --> 00:09:20,600 OK? 198 00:09:20,600 --> 00:09:21,150 În regulă. 199 00:09:21,150 --> 00:09:24,870 Deci, haideți să scăpăm de această imagine urât și să încerce să atragă un ușor mai frumos. 200 00:09:24,870 --> 00:09:29,040 201 00:09:29,040 --> 00:09:31,172 Avem capul nostru listă aici. 202 00:09:31,172 --> 00:09:36,440 203 00:09:36,440 --> 00:09:42,740 Și asta arată la primul nod din Lista noastră legată, pe care am spus este de patru. 204 00:09:42,740 --> 00:09:45,620 Iată al doilea nod nostru, cinci. 205 00:09:45,620 --> 00:09:47,307 Și în al treilea nod nostru, șase. 206 00:09:47,307 --> 00:09:50,265 Încerc doar să atragă exact același lucru imagine, doar un pic mai curat. 207 00:09:50,265 --> 00:09:52,780 208 00:09:52,780 --> 00:09:56,280 OK, deci patru pe lângă subliniază inițial la cinci. 209 00:09:56,280 --> 00:09:58,620 Cinci lui urmatorii puncte la șase. 210 00:09:58,620 --> 00:10:00,170 Șase Puncte anterioare la cinci. 211 00:10:00,170 --> 00:10:02,470 Și cinci de puncte anterioare la patru. 212 00:10:02,470 --> 00:10:03,360 Deci, mult mai plăcut! 213 00:10:03,360 --> 00:10:04,530 OK, rece. 214 00:10:04,530 --> 00:10:07,770 >> Deci, acum, ce am făcut doar aici, această linie de cod, 215 00:10:07,770 --> 00:10:12,680 care spune pointer precedent următor, astfel încât ceea ce înseamnă asta? 216 00:10:12,680 --> 00:10:17,540 Asta înseamnă că dacă ne uităm la cinci, du-te la nodul anterior, 217 00:10:17,540 --> 00:10:21,970 și e viitor ar trebui să acum Punct de cinci pe lângă. 218 00:10:21,970 --> 00:10:27,840 Deci, în esență, ceea ce e faci se că este stergerea această săgeată 219 00:10:27,840 --> 00:10:29,640 și făcându-l sări drept peste cinci. 220 00:10:29,640 --> 00:10:31,360 E clar? 221 00:10:31,360 --> 00:10:33,200 Știu că pot fi un pic vag. 222 00:10:33,200 --> 00:10:34,480 Văd niște dă din cap. 223 00:10:34,480 --> 00:10:35,390 Asta e bine. 224 00:10:35,390 --> 00:10:36,670 OK, rece. 225 00:10:36,670 --> 00:10:39,590 Acum, care e următorul pas? 226 00:10:39,590 --> 00:10:42,060 >> Am resetat următoare. 227 00:10:42,060 --> 00:10:45,297 Acum, ce alte sageata am nevoie pentru a schimba? 228 00:10:45,297 --> 00:10:46,130 Asta chiar aici. 229 00:10:46,130 --> 00:10:47,560 Șase anterioara. 230 00:10:47,560 --> 00:10:50,620 Noi nu vrem șase anterioara a mai indica cinci. 231 00:10:50,620 --> 00:10:54,580 Ne dorim ca aceasta să indice patru. 232 00:10:54,580 --> 00:10:56,190 Asta imagine sens? 233 00:10:56,190 --> 00:10:58,370 Deci, acum putem lua de fapt cinci. 234 00:10:58,370 --> 00:10:59,370 Așa că hai să această piesă. 235 00:10:59,370 --> 00:11:03,390 236 00:11:03,390 --> 00:11:11,180 Ce trebuie să fac înainte de a reseta șase anterioara a patru? 237 00:11:11,180 --> 00:11:14,360 Orice idei acolo? 238 00:11:14,360 --> 00:11:17,369 >> Audiența: Elibereaza nodul dintre le prin stabilirea acesteia la null? 239 00:11:17,369 --> 00:11:17,910 HANNAH: cool. 240 00:11:17,910 --> 00:11:21,100 Categoric, scopul nostru final este Va fi pentru a elibera nodul. 241 00:11:21,100 --> 00:11:22,490 Deci, putem face asta aici. 242 00:11:22,490 --> 00:11:23,540 Pointer gratuit. 243 00:11:23,540 --> 00:11:24,810 Absolut. 244 00:11:24,810 --> 00:11:29,160 Dar chiar înainte de asta, hai doar-- dreptul nostru poartă 245 00:11:29,160 --> 00:11:38,730 aici este de a stabili indicatorul următor precedent egală cu pointer precedent. 246 00:11:38,730 --> 00:11:40,760 Știu că acest lucru este obtinerea acoperit. 247 00:11:40,760 --> 00:11:45,440 OK, hai take-- se răcească. 248 00:11:45,440 --> 00:11:46,990 Poate toată lumea vedea acest linia de fund? 249 00:11:46,990 --> 00:11:47,840 Sau este foarte mic? 250 00:11:47,840 --> 00:11:50,430 251 00:11:50,430 --> 00:11:54,300 >> Deci, înainte de a executa această linie de aici, ne-o dorim 252 00:11:54,300 --> 00:11:58,375 pentru a se asigura că indicatorul următor nu este nul. 253 00:11:58,375 --> 00:12:00,500 Pentru că dacă pointer urmator nul, ce fel de eroare 254 00:12:00,500 --> 00:12:02,727 voi primi când încerc să referire la un pointer nul? 255 00:12:02,727 --> 00:12:03,560 Audiența: defect Seg. 256 00:12:03,560 --> 00:12:05,660 HANNAH: Un defect SEG, frumos. 257 00:12:05,660 --> 00:12:09,690 OK, deci, dacă nu e nul, atunci putem reseta. 258 00:12:09,690 --> 00:12:14,420 Și avem șase punct din nou la patru. 259 00:12:14,420 --> 00:12:17,440 Întrebări până în acest punct? 260 00:12:17,440 --> 00:12:17,940 Da? 261 00:12:17,940 --> 00:12:19,814 >> Audiența: In primul dacă declarație, ai făcut 262 00:12:19,814 --> 00:12:23,817 înseamnă a avea săgeata următor, sau [inaudibil]? 263 00:12:23,817 --> 00:12:25,150 HANNAH: am vrut să spun pointer sageata n. 264 00:12:25,150 --> 00:12:30,270 Deci, practic, ceea ce am încercat să fac este spune, nodul curent că sunt 265 00:12:30,270 --> 00:12:34,100 iterarea peste, nodul curent care Mă uit la, eu sunt stocarea în pointer. 266 00:12:34,100 --> 00:12:37,630 Și vreau să știu indicatorul lui valoare, care în acest caz este n. 267 00:12:37,630 --> 00:12:39,500 Și vreau să văd, este nodul caut 268 00:12:39,500 --> 00:12:42,790 pentru nodul am scopul de a șterge? 269 00:12:42,790 --> 00:12:47,657 Deci, de aceea avem aici pointer n. 270 00:12:47,657 --> 00:12:49,857 >> Audiența: Deci săgeata merge la n, setați valoarea 271 00:12:49,857 --> 00:12:52,058 și se păstrează într-un nod numit n? 272 00:12:52,058 --> 00:12:55,410 273 00:12:55,410 --> 00:12:58,820 >> HANNAH: Deci e ca și cum dacă eu sunt trece prin această listă legată 274 00:12:58,820 --> 00:13:00,310 și arătând spre cinci. 275 00:13:00,310 --> 00:13:03,600 Dacă doriți să obțineți această valoare, în cazul în care Vreau să ajung ca număr, 5, 276 00:13:03,600 --> 00:13:06,400 Trebuie să fac indicatorul sageata n. 277 00:13:06,400 --> 00:13:06,900 Cool? 278 00:13:06,900 --> 00:13:07,900 Da. 279 00:13:07,900 --> 00:13:11,200 >> Audiența: este N numele variabilei? 280 00:13:11,200 --> 00:13:11,700 HANNAH: Da. 281 00:13:11,700 --> 00:13:14,870 Deci, dacă ne-am răsturna înapoi cu o diapozitiv, n este numele 282 00:13:14,870 --> 00:13:18,660 din valoarea interiorul nod în lista noastră legată. 283 00:13:18,660 --> 00:13:21,510 Și știu că pot obține un pic pic confuz pentru că noi, de asemenea, 284 00:13:21,510 --> 00:13:24,680 sunt de asteptare lucru că vrem să ștergeți n. 285 00:13:24,680 --> 00:13:26,717 Deci asta în cazul în care o linie vine de la. 286 00:13:26,717 --> 00:13:27,671 Da? 287 00:13:27,671 --> 00:13:31,010 >> Audiența: Ce ai [Inaudibil] modul în care acestea funcționează? 288 00:13:31,010 --> 00:13:33,872 289 00:13:33,872 --> 00:13:35,780 Un pointer [inaudibil]? 290 00:13:35,780 --> 00:13:37,520 >> HANNAH: Sigur. 291 00:13:37,520 --> 00:13:40,027 Vorbești about-- care linie? 292 00:13:40,027 --> 00:13:41,526 Audienta: Ultima linie [neauzit]. 293 00:13:41,526 --> 00:13:44,280 294 00:13:44,280 --> 00:13:45,250 >> HANNAH: Sigur, OK. 295 00:13:45,250 --> 00:13:48,540 Deci, să ne uităm la imaginea de la pentru a încerca să explic acest lucru. 296 00:13:48,540 --> 00:13:51,030 Îmi pare rău, pentru aparat de fotografiat, întrebarea a fost 297 00:13:51,030 --> 00:13:54,580 putem explica pointer săgeata de lângă indicatorul precedent. 298 00:13:54,580 --> 00:14:01,510 OK, deci să spunem că suntem la cinci iar obiectivul nostru este de a șterge cinci. 299 00:14:01,510 --> 00:14:07,240 Deci pointer următor, care dintre acestea trei noduri nu asta ne da? 300 00:14:07,240 --> 00:14:10,840 Asta ne aduce la al șaselea nodul, nu? 301 00:14:10,840 --> 00:14:16,490 >> OK, deci acum suntem cere pentru precedent sase de. 302 00:14:16,490 --> 00:14:17,060 OK? 303 00:14:17,060 --> 00:14:20,210 Și suntem resetare acest să fie egal cu patru, 304 00:14:20,210 --> 00:14:23,214 care sa întâmplat să fie cinci anterioara. 305 00:14:23,214 --> 00:14:25,180 Știu, e foarte greu pentru a ține evidența. 306 00:14:25,180 --> 00:14:29,286 Eu chiar recomand sa deseneze dacă aveți o întrebare ca aceasta. 307 00:14:29,286 --> 00:14:30,242 Da? 308 00:14:30,242 --> 00:14:32,617 >> Audiența: Este motivul pentru care nu avem o [inaudibil]? 309 00:14:32,617 --> 00:14:37,430 310 00:14:37,430 --> 00:14:38,570 >> HANNAH: Exact. 311 00:14:38,570 --> 00:14:44,800 Deci, întrebarea a fost, de ce nu avem nevoie pentru a verifica aici? 312 00:14:44,800 --> 00:14:48,160 De ce nu avem nevoie pentru a verifica dacă indicatorul precedent nu este egal cu null? 313 00:14:48,160 --> 00:14:50,070 Și pentru că ne-am deja separat 314 00:14:50,070 --> 00:14:52,490 cazul dacă indicatorul de de la bun început. 315 00:14:52,490 --> 00:14:54,060 Foarte bine întrebare. 316 00:14:54,060 --> 00:14:56,880 Altceva pe asta? 317 00:14:56,880 --> 00:14:57,380 OK, rece. 318 00:14:57,380 --> 00:14:58,360 Deci, haideți să-l termin. 319 00:14:58,360 --> 00:14:59,890 Suntem aproape acolo. 320 00:14:59,890 --> 00:15:01,310 >> Și ce dacă aceasta se află la conducerea? 321 00:15:01,310 --> 00:15:03,360 Ce se întâmplă dacă în loc de încercarea de a șterge cinci, 322 00:15:03,360 --> 00:15:06,240 am vrut de fapt să ștergeți patru? 323 00:15:06,240 --> 00:15:07,270 Ce trebuie să fac? 324 00:15:07,270 --> 00:15:09,610 Ei bine, eu vreau să reseta capul meu de ce? 325 00:15:09,610 --> 00:15:14,288 326 00:15:14,288 --> 00:15:15,585 Shout-l? 327 00:15:15,585 --> 00:15:16,710 Audienta: Cel după el. 328 00:15:16,710 --> 00:15:17,460 HANNAH: Frumos. 329 00:15:17,460 --> 00:15:26,430 OK, deci ne dorim să fie îndreptată lista la orice indicator următorul nod nostru este. 330 00:15:26,430 --> 00:15:29,040 Bună. 331 00:15:29,040 --> 00:15:30,810 Și pentru a completitudinea sake, ne-ar 332 00:15:30,810 --> 00:15:35,590 care doriți să verificați că atâta timp cât lista noastră nu este nul, atâta timp cât lista noastră nu este 333 00:15:35,590 --> 00:15:42,730 gol, apoi ne-am dori să se stabilească precedent nostru egală cu zero. 334 00:15:42,730 --> 00:15:46,960 335 00:15:46,960 --> 00:15:50,230 Intrebare până acum? 336 00:15:50,230 --> 00:15:53,205 Un pas from--? 337 00:15:53,205 --> 00:15:55,530 >> Audiența: Ar fi cazul listă nu este egal cu null? 338 00:15:55,530 --> 00:15:56,950 >> HANNAH: Da, ești complet dreptate. 339 00:15:56,950 --> 00:15:58,130 Îmi pare atât de rău. 340 00:15:58,130 --> 00:16:00,040 Este listă nu este egal cu null. 341 00:16:00,040 --> 00:16:01,915 Minunat. 342 00:16:01,915 --> 00:16:04,245 Încercarea de a aduce toate aceste pe ecran. 343 00:16:04,245 --> 00:16:06,870 E un fel de a cădea. 344 00:16:06,870 --> 00:16:07,730 Îmi pare rău, băieți. 345 00:16:07,730 --> 00:16:11,874 Și nu în ultimul rând, toate trebuie să facem este întoarcerea. 346 00:16:11,874 --> 00:16:12,840 OK. 347 00:16:12,840 --> 00:16:15,400 Asta a fost o mulțime ticsit în foarte repede. 348 00:16:15,400 --> 00:16:16,800 Ia-o a doua să se uite peste asta. 349 00:16:16,800 --> 00:16:18,216 Spune-mi dacă aveți întrebări. 350 00:16:18,216 --> 00:16:20,232 351 00:16:20,232 --> 00:16:20,732 Da? 352 00:16:20,732 --> 00:16:26,940 >> Audiența: Dacă lista este la cap, then-- așteptați, Nevermind. 353 00:16:26,940 --> 00:16:27,700 >> HANNAH: OK, bine. 354 00:16:27,700 --> 00:16:30,987 Deci, aceasta este dacă lista este la cap, am elimina de tot ceea ce ne introduce. 355 00:16:30,987 --> 00:16:31,486 Da? 356 00:16:31,486 --> 00:16:33,777 >> Audiența: Puteți explica primul if din nou? 357 00:16:33,777 --> 00:16:36,149 În cazul în care indicatorul a n este egal cu n? 358 00:16:36,149 --> 00:16:36,690 HANNAH: Sigur. 359 00:16:36,690 --> 00:16:42,780 Deci, scopul nostru a acestei funcții întreg este pentru a șterge nodul care are valoare n. 360 00:16:42,780 --> 00:16:47,460 Deci, dacă găsim, așa cum suntem iterarea prin lista noastră, 361 00:16:47,460 --> 00:16:51,770 nodul cu valoare n, asta e cel pe care doriți să o ștergeți. 362 00:16:51,770 --> 00:16:57,286 Deci, toate ștergerea se întâmplă în interiorul acestei mari if. 363 00:16:57,286 --> 00:16:58,593 Are care face sens? 364 00:16:58,593 --> 00:16:59,480 Se răcește. 365 00:16:59,480 --> 00:16:59,990 Da? 366 00:16:59,990 --> 00:17:02,864 >> Audiența: Poate chiar nu se poate vedea ea, dar nu ai nevoie de asemenea, o linie 367 00:17:02,864 --> 00:17:06,024 pentru parcurgeți lista? 368 00:17:06,024 --> 00:17:06,690 HANNAH: Awesome. 369 00:17:06,690 --> 00:17:10,896 Să aducem asta un pic, și vom arunca acest drept în partea de jos. 370 00:17:10,896 --> 00:17:13,282 371 00:17:13,282 --> 00:17:15,490 Poate placa s-ar fi a fost o idee ceva mai bine. 372 00:17:15,490 --> 00:17:17,829 Deci, cum mi-ar muta pointer mai departe? 373 00:17:17,829 --> 00:17:20,184 >> Audiența: Pointer este egal cu indicatorul plus unu. 374 00:17:20,184 --> 00:17:21,599 >> HANNAH: Frumos. 375 00:17:21,599 --> 00:17:25,050 Așa că ne permite să continuă iterarea prin. 376 00:17:25,050 --> 00:17:26,251 OK. 377 00:17:26,251 --> 00:17:27,750 Audiența: N-ar fi acolo o altcineva? 378 00:17:27,750 --> 00:17:29,028 HANNAH: Încă o dată? 379 00:17:29,028 --> 00:17:32,444 Audiența: N-ar fi acolo o altfel de la mare vechi în cazul în care 380 00:17:32,444 --> 00:17:35,519 Declarație [inaudibil]? 381 00:17:35,519 --> 00:17:36,310 HANNAH: Care parte? 382 00:17:36,310 --> 00:17:38,350 Îmi pare rău. 383 00:17:38,350 --> 00:17:41,800 >> Audienta: traversarea, nu ar trebui să existe o altcineva? 384 00:17:41,800 --> 00:17:43,550 HANNAH: Ai absolut ar putea avea o altcineva. 385 00:17:43,550 --> 00:17:46,930 Pentru că am un drept de retur acolo, nu aveți nevoie de un altfel. 386 00:17:46,930 --> 00:17:48,760 Dar da, bine întrebare. 387 00:17:48,760 --> 00:17:50,170 OK, da? 388 00:17:50,170 --> 00:17:52,878 Audiența: Putem gândi pointer care se mișcă prin lista 389 00:17:52,878 --> 00:17:56,610 și luarea de valoarea de fiecare nod din listă? 390 00:17:56,610 --> 00:18:00,650 Sau ar trebui să ne gândim la el ca la un fel de externe la lista? 391 00:18:00,650 --> 00:18:02,350 >> HANNAH: Fie o este bine, cred. 392 00:18:02,350 --> 00:18:05,880 Modul în care am imagina este Eu spun, bine, eu sunt pointer. 393 00:18:05,880 --> 00:18:06,520 Și acest lucru este mine. 394 00:18:06,520 --> 00:18:07,150 Aceasta este mâna mea. 395 00:18:07,150 --> 00:18:09,960 Am de gând să subliniez diferite lucruri pe care vreau să repeta prin. 396 00:18:09,960 --> 00:18:12,270 În primul rând, am de gând să subliniez la capul listei. 397 00:18:12,270 --> 00:18:14,144 Și asta mi-a spus eu sunt O să indica patru. 398 00:18:14,144 --> 00:18:18,060 Și așa mă, fiind extern la lista, Pot indica fiecare dintre aceste elemente. 399 00:18:18,060 --> 00:18:19,520 Așa că mă gândesc la mine ca indicator. 400 00:18:19,520 --> 00:18:21,645 Audiența: Deci, atunci când ștergeți unul dintre aceste elemente, 401 00:18:21,645 --> 00:18:23,404 ștergeți le ca să spunem așa. 402 00:18:23,404 --> 00:18:24,070 HANNAH: Exact. 403 00:18:24,070 --> 00:18:25,920 Deci, ștergeți lucru ești arătând spre. 404 00:18:25,920 --> 00:18:28,340 Deci, în exemplul pe care am văzut unde suntem 405 00:18:28,340 --> 00:18:31,670 încercarea de a șterge cinci, când am îndreptat spre cinci, 406 00:18:31,670 --> 00:18:34,200 Vreau să ștergeți lucru am îndreptat spre. 407 00:18:34,200 --> 00:18:35,870 Exact dreapta. 408 00:18:35,870 --> 00:18:36,577 Da? 409 00:18:36,577 --> 00:18:39,410 Audiența: Ne-am ocupat de caz în care n nu este în listă? 410 00:18:39,410 --> 00:18:40,460 HANNAH: Daca n nu este în listă? 411 00:18:40,460 --> 00:18:43,501 Tot ceea ce se va întâmpla este că ești O să itera prin și repeta 412 00:18:43,501 --> 00:18:47,616 prin, iar apoi, vei pentru a ajunge la pointer fiind nul, 413 00:18:47,616 --> 00:18:48,990 iar apoi vei face. 414 00:18:48,990 --> 00:18:50,812 >> Audiența: Deci, avem să se întoarcă ceva? 415 00:18:50,812 --> 00:18:51,520 HANNAH: Am putea. 416 00:18:51,520 --> 00:18:54,500 Modul în care în cazul în care a definit această funcție, eu spun doar că acesta revine 417 00:18:54,500 --> 00:18:55,770 anula indiferent de. 418 00:18:55,770 --> 00:18:58,360 Dar ai putea avea ceva ca revenind un număr întreg, 419 00:18:58,360 --> 00:19:00,920 și l-au reveni negativ 1 daca nu reușește. 420 00:19:00,920 --> 00:19:03,070 Ceva de genul asta. 421 00:19:03,070 --> 00:19:04,494 Întrebări aplice: da? 422 00:19:04,494 --> 00:19:05,410 Audiența: [inaudibil]? 423 00:19:05,410 --> 00:19:05,993 HANNAH: Îmi pare rău? 424 00:19:05,993 --> 00:19:07,419 Audiența: [inaudibil]? 425 00:19:07,419 --> 00:19:07,960 HANNAH: Sigur. 426 00:19:07,960 --> 00:19:11,730 Deci asta e actual-- dată ne-am făcut toată această muncă de mișcare 427 00:19:11,730 --> 00:19:16,530 toate aceste săgeți în jurul valorii de, întregului nostru scop a fost de a scăpa de nodului 428 00:19:16,530 --> 00:19:18,230 pe care le căutați. 429 00:19:18,230 --> 00:19:21,610 Deci, în acest caz, eliberând pointer, dacă am îndreptat spre cinci, 430 00:19:21,610 --> 00:19:24,670 e ca si cum ștergerea acest nod de mijloc. 431 00:19:24,670 --> 00:19:27,250 Asta e partea gratuit pointer. 432 00:19:27,250 --> 00:19:29,090 Care fac sens? 433 00:19:29,090 --> 00:19:31,390 >> Audiența: Deci, chiar crezut ai făcut nu [inaudibil]? 434 00:19:31,390 --> 00:19:36,060 >> HANNAH: Deci, ne-am asumat de la început am avut niște listă care a fost already-- 435 00:19:36,060 --> 00:19:37,220 ei au pus acest lucru împreună. 436 00:19:37,220 --> 00:19:39,761 Deci, în scopul de a construi acest listă, ei trebuie să fi [neauzit]. 437 00:19:39,761 --> 00:19:42,190 438 00:19:42,190 --> 00:19:42,750 Se răcește. 439 00:19:42,750 --> 00:19:44,490 Altceva cu asta? 440 00:19:44,490 --> 00:19:46,386 Da? 441 00:19:46,386 --> 00:19:49,204 >> Audiența: Ce se întâmplă dacă lista nu este egală cu linia de nul? 442 00:19:49,204 --> 00:19:49,704 [Inaudibil]? 443 00:19:49,704 --> 00:19:52,289 444 00:19:52,289 --> 00:19:53,080 HANNAH: Chiar aici? 445 00:19:53,080 --> 00:19:53,840 Audiența: Da. 446 00:19:53,840 --> 00:19:57,370 HANNAH: OK, tot ce fac este eu sunt doar asigurându-vă 447 00:19:57,370 --> 00:20:03,250 că înainte de a încerca să listă dereference, înainte de a încerca să acceseze anterior, 448 00:20:03,250 --> 00:20:07,210 Vreau să vă asigurați că nu este nul așa că nu primesc o eroare SEG. 449 00:20:07,210 --> 00:20:08,400 Se răcește. 450 00:20:08,400 --> 00:20:10,820 >> OK, știu că acest lucru a fost destul de o mulțime de a obține prin intermediul. 451 00:20:10,820 --> 00:20:14,950 Deci, acest diapozitiv va fi puse la dispoziție pentru tine. 452 00:20:14,950 --> 00:20:17,341 Deci, poti sa te duci prin ea mai în detaliu. 453 00:20:17,341 --> 00:20:17,841 Da? 454 00:20:17,841 --> 00:20:19,749 >> Audiența: De ce lista [inaudibil]? 455 00:20:19,749 --> 00:20:24,129 456 00:20:24,129 --> 00:20:24,670 HANNAH: Sigur. 457 00:20:24,670 --> 00:20:27,390 Deci, într-adevăr listă punctele de acest element aici, 458 00:20:27,390 --> 00:20:29,200 primul element din listă. 459 00:20:29,200 --> 00:20:30,748 Deci nu poate avea un precedent. 460 00:20:30,748 --> 00:20:31,736 Da? 461 00:20:31,736 --> 00:20:35,194 >> Audiența: Are punctul de pointer la aceeași adresă în memorie? 462 00:20:35,194 --> 00:20:38,404 Are punctul de la același adresa în memorie ca nodul 463 00:20:38,404 --> 00:20:40,640 că este arătând spre? 464 00:20:40,640 --> 00:20:43,865 >> HANNAH: Da, aceasta subliniază la acest nod în memorie. 465 00:20:43,865 --> 00:20:47,190 >> Audiența: Corect, așa atunci când [inaudibil]? 466 00:20:47,190 --> 00:20:50,580 >> HANNAH: Într-un sens, da. 467 00:20:50,580 --> 00:20:51,280 OK. 468 00:20:51,280 --> 00:20:52,997 Bine, să mergem împreună cu acest lucru. 469 00:20:52,997 --> 00:20:55,330 Și dacă aveți mai multe întrebări, lipi în jurul valorii de la sfârșitul anului, 470 00:20:55,330 --> 00:20:57,130 și putem trece prin ea din nou. 471 00:20:57,130 --> 00:20:58,120 OK, rece. 472 00:20:58,120 --> 00:21:00,490 Acum, ajungem să mergem mai departe a hash tabele, nereușite, 473 00:21:00,490 --> 00:21:04,940 și copaci, pe care le-am super- familiarizeze cu cinci, setați-p abecedar. 474 00:21:04,940 --> 00:21:11,020 >> Deci tabel hash este doar un matrice cu liste individual legate 475 00:21:11,020 --> 00:21:14,050 sau de două ori legate de listele provenind de pe ea. 476 00:21:14,050 --> 00:21:16,380 Deci avem un fel de tablou asociativ. 477 00:21:16,380 --> 00:21:21,280 Și cum știm care dintre acestea matrice galeti pentru a obține în, 478 00:21:21,280 --> 00:21:24,137 vom folosi o funcție hash. 479 00:21:24,137 --> 00:21:26,470 Deci, în acest caz, poate cineva ghici ce funcția de distribuire 480 00:21:26,470 --> 00:21:28,636 ar fi doar pe baza unor de intrare și ieșire? 481 00:21:28,636 --> 00:21:31,392 482 00:21:31,392 --> 00:21:33,194 >> Audiența: Numărul literă a alfabetului. 483 00:21:33,194 --> 00:21:33,860 HANNAH: Exact. 484 00:21:33,860 --> 00:21:36,160 Este doar le pune în ordine alfabetică. 485 00:21:36,160 --> 00:21:39,280 Tot ce începe cu o A este pus în primul găleată. 486 00:21:39,280 --> 00:21:43,340 Totul cu un B este pus în în al doilea rând găleată, așa mai departe, și așa mai departe. 487 00:21:43,340 --> 00:21:45,620 Awesome, OK. 488 00:21:45,620 --> 00:21:48,980 Și o funcție hash este orice funcție care ia într-un cuvânt 489 00:21:48,980 --> 00:21:51,910 și vă va spune ce cupă face parte din. 490 00:21:51,910 --> 00:21:55,150 Deci, care intrare în nostru matrice face parte din. 491 00:21:55,150 --> 00:21:58,080 >> Așa că de fiecare dată când dau meu hash funcționează un cuvânt, 492 00:21:58,080 --> 00:22:00,660 aceasta ar trebui să-mi spui la fel așezați fiecare dată. 493 00:22:00,660 --> 00:22:03,270 Deci, dacă vom folosi funcția hash de la diapozitivul anterior 494 00:22:03,270 --> 00:22:05,950 unde suntem sortare de prima literă a alfabetului, 495 00:22:05,950 --> 00:22:08,230 de fiecare dată când dau meu funcție hash "măr", 496 00:22:08,230 --> 00:22:10,180 aceasta ar trebui să dea întotdeauna mă înapoi la 0. 497 00:22:10,180 --> 00:22:12,890 Deci, dacă am un măr pentru a pune în masa mea hash, 498 00:22:12,890 --> 00:22:17,700 dacă da "măr" pentru funcția mea hash, aceasta ar trebui să spun, du-te pune-l în găleată 0. 499 00:22:17,700 --> 00:22:19,980 Dacă Caut o măr în masa mea de dispersie 500 00:22:19,980 --> 00:22:24,340 și spun, în cazul în care s-ar putea de mere live, vă întreb funcția hash. 501 00:22:24,340 --> 00:22:26,900 Și se spune, du-te la cupă 0. 502 00:22:26,900 --> 00:22:29,150 În regulă? 503 00:22:29,150 --> 00:22:32,660 Întrebări cu funcții hash? 504 00:22:32,660 --> 00:22:34,570 Minunat. 505 00:22:34,570 --> 00:22:37,320 >> Aici este un pic mai explicație detaliată 506 00:22:37,320 --> 00:22:39,570 de ce o funcție hash ar putea arata. 507 00:22:39,570 --> 00:22:42,230 508 00:22:42,230 --> 00:22:42,960 În regulă. 509 00:22:42,960 --> 00:22:45,960 Acum, problema cu hash funcții este într-o lume ideală, 510 00:22:45,960 --> 00:22:48,870 am avea doar un singur lucru în fiecare compartiment. 511 00:22:48,870 --> 00:22:50,900 Dar, în realitate, nu e nu doar un singur cuvânt 512 00:22:50,900 --> 00:22:54,280 care începe cu A. Nu e doar un singur cuvânt care începe cu B. Deci 513 00:22:54,280 --> 00:22:56,960 în acest caz, dacă ne-am brusc primi "boabe", 514 00:22:56,960 --> 00:22:58,710 și vrem să-l puneți în masa noastră hash, 515 00:22:58,710 --> 00:23:03,640 și vom vedea, oh, nu, banane este deja acolo, ceea ce vom face? 516 00:23:03,640 --> 00:23:05,900 >> Ei bine, avem două opțiuni. 517 00:23:05,900 --> 00:23:07,990 Prima opțiune este liniar palpare, care 518 00:23:07,990 --> 00:23:11,100 înseamnă doar du-te găsi următor găleată goală. 519 00:23:11,100 --> 00:23:14,100 Du-te găsi următorul intrarea array gol. 520 00:23:14,100 --> 00:23:15,750 Și a pus "boabe" acolo. 521 00:23:15,750 --> 00:23:18,880 Deci, eu știu că trebuia să du-te cu banane în găleată unul. 522 00:23:18,880 --> 00:23:22,155 Dar se pune în găleată trei, deoarece găleată trei este gol. 523 00:23:22,155 --> 00:23:24,806 524 00:23:24,806 --> 00:23:26,680 O altă opțiune este, probabil, ceea ce pune în aplicare 525 00:23:26,680 --> 00:23:29,220 în dumneavoastră p-set, în cazul în care a avut înlănțuire separat. 526 00:23:29,220 --> 00:23:33,990 Astfel, fiecare dintre cupe tale, fiecare dintre elementele de dumneavoastră matrice, 527 00:23:33,990 --> 00:23:38,410 deține nu numai unul cuvinte, dar de fapt deține un pointer la o listă de cuvinte. 528 00:23:38,410 --> 00:23:41,880 Așa că, dacă ai avut banane în tabel hash 529 00:23:41,880 --> 00:23:44,740 și ai vrut brusc pentru a adăuga boabe, nici o problema. 530 00:23:44,740 --> 00:23:51,110 Doar adăugați boabe pe final, sau a la început, a listei legate. 531 00:23:51,110 --> 00:23:54,040 OK, minunat. 532 00:23:54,040 --> 00:23:58,490 Întrebări cu hash tabele înainte de a merge la? 533 00:23:58,490 --> 00:23:59,850 >> În regulă. 534 00:23:59,850 --> 00:24:01,070 Arbori și încearcă. 535 00:24:01,070 --> 00:24:07,980 OK, deci aceasta a fost o altă opțiune pentru punerea în aplicare a dicționar. 536 00:24:07,980 --> 00:24:09,100 Ai fi putut făcut o încercare. 537 00:24:09,100 --> 00:24:13,420 Deci este un tip special de copac care se comportă ca un tabel de dispersie pe mai multe niveluri. 538 00:24:13,420 --> 00:24:16,862 Deci, veți vedea imaginea în cazul în care aveți o matrice care 539 00:24:16,862 --> 00:24:19,320 indică o grămadă de matrice care indică o grămadă de matrice 540 00:24:19,320 --> 00:24:20,390 care indică o grămadă de tablouri. 541 00:24:20,390 --> 00:24:23,140 Și vom vedea exact despre ce ar arata ca pe un diapozitiv viitor. 542 00:24:23,140 --> 00:24:26,070 Și mai mult, în general, un copac este doar o structură de date 543 00:24:26,070 --> 00:24:29,710 în care datele sunt organizat în unele ierarhie. 544 00:24:29,710 --> 00:24:32,610 Deci, unde am văzut avem un fel de înțelegere 545 00:24:32,610 --> 00:24:36,130 de un nivel superior, un nivel următor, un nivel următor, un nivel următor. 546 00:24:36,130 --> 00:24:39,690 Deci, aceasta este, probabil, cel mai clar cu unele exemple specifice. 547 00:24:39,690 --> 00:24:40,880 Deci, aici e copacul nostru. 548 00:24:40,880 --> 00:24:42,970 Puteti vedea ca are un nivel special 549 00:24:42,970 --> 00:24:45,480 că începem cu faptul că nodul rădăcină, o. 550 00:24:45,480 --> 00:24:47,640 Și putem merge în jos, prin copacul nostru. 551 00:24:47,640 --> 00:24:50,730 552 00:24:50,730 --> 00:24:53,910 >> Un arbore binar este un anumit tip de copac. 553 00:24:53,910 --> 00:24:56,770 Și numai caietul de sarcini pentru un arbore binar 554 00:24:56,770 --> 00:25:01,130 este că fiecare nod are de cel mult două frunze. 555 00:25:01,130 --> 00:25:03,960 Deci nu o să vedem un din aceste noduri au trei sau patru 556 00:25:03,960 --> 00:25:06,880 sau un alt număr de frunze. 557 00:25:06,880 --> 00:25:11,310 Și apoi chiar mai specific este un arbore binar de căutare 558 00:25:11,310 --> 00:25:18,010 în cazul în care fiecare nod la stânga nod va avea o valoare mai mică. 559 00:25:18,010 --> 00:25:21,180 Și fiecare valoare la drept va fi mai mare. 560 00:25:21,180 --> 00:25:26,900 Deci, dacă vedeți 44 este la radacina noastra, la stânga, 11, 22, și 33 561 00:25:26,900 --> 00:25:28,940 sunt toate la mai puțin de radacina noastra. 562 00:25:28,940 --> 00:25:33,890 Și pe dreapta sunt toate Numerele bigger-- 66, 55, și 77. 563 00:25:33,890 --> 00:25:37,380 Și această proprietate este valabil la fiecare nivel al arborelui. 564 00:25:37,380 --> 00:25:42,690 >> Așa că atunci când vom merge până la 22, 11, și 33, încă 11 565 00:25:42,690 --> 00:25:46,950 este mai mic decât 22 și 33 este mai mare de 22. 566 00:25:46,950 --> 00:25:50,160 Și acest lucru face mai ușor pentru a căuta pentru că dacă căutăm un număr, 567 00:25:50,160 --> 00:25:53,877 știm exact ce ramură să urmeze jos. 568 00:25:53,877 --> 00:25:56,210 Deci, aceasta ar trebui să vă reamintesc o pic de căutare binar. 569 00:25:56,210 --> 00:25:56,967 Da? 570 00:25:56,967 --> 00:25:58,835 >> Audiența: Deci, atunci când sunteți descrie binar, 571 00:25:58,835 --> 00:26:00,587 ai spus că are cel mult două frunze? 572 00:26:00,587 --> 00:26:01,170 HANNAH: Mm-hm. 573 00:26:01,170 --> 00:26:02,580 Audiența: Ar putea avea mai puțin? 574 00:26:02,580 --> 00:26:03,121 HANNAH: Da. 575 00:26:03,121 --> 00:26:06,720 Deci, haideți să spunem, de exemplu, nu avea un număr par de lucruri 576 00:26:06,720 --> 00:26:11,791 și nu ai putea umple tot tău frunze, e în regulă, dacă unul are unul. 577 00:26:11,791 --> 00:26:12,290 OK? 578 00:26:12,290 --> 00:26:12,789 Minunat. 579 00:26:12,789 --> 00:26:15,930 Orice alte întrebări cu privire la copaci? 580 00:26:15,930 --> 00:26:16,670 OK. 581 00:26:16,670 --> 00:26:20,110 >> Înapoi la încercări noastre vorbeam despre un pic mai devreme, 582 00:26:20,110 --> 00:26:23,900 cum avem aceste tablouri multi-nivel. 583 00:26:23,900 --> 00:26:26,280 Deci, în acest caz, vom începe în partea de sus. 584 00:26:26,280 --> 00:26:29,030 Și putem urmări orice cuvânt dat jos. 585 00:26:29,030 --> 00:26:30,780 Deci, să spunem am vrut să caute Turing. 586 00:26:30,780 --> 00:26:34,380 Începem de la T, l urmeze jos la o serie care conține U, 587 00:26:34,380 --> 00:26:37,350 și-l urmeze în jos până când vom ajunge la acest mic delta care 588 00:26:37,350 --> 00:26:39,060 ne spune, da, ai găsit un cuvânt. 589 00:26:39,060 --> 00:26:43,200 590 00:26:43,200 --> 00:26:44,120 Clear pe încercări? 591 00:26:44,120 --> 00:26:48,138 Orice pentru a merge acolo? 592 00:26:48,138 --> 00:26:48,908 Da? 593 00:26:48,908 --> 00:26:51,866 Audiența: Are simbolul de delta trebuie să ocupe spațiu în încercare? 594 00:26:51,866 --> 00:26:54,532 HANNAH: Da, așa că nu în mod necesar chiar trebuie să fie o deltă. 595 00:26:54,532 --> 00:26:57,760 Dar avem nevoie de un mod de a spune nostru computer-- pare rău, 596 00:26:57,760 --> 00:27:01,130 astfel încât să știm că TUR nu este un cuvânt. 597 00:27:01,130 --> 00:27:04,180 Pentru ca să spunem nu am avut acest concept de o delta, acest concept 598 00:27:04,180 --> 00:27:09,850 de felicitări, ați găsit un cuvânt, s-ar trece prin și repeta T-U-R, 599 00:27:09,850 --> 00:27:11,300 și apoi spune, minunat, l-am gasit! 600 00:27:11,300 --> 00:27:12,670 Trebuie să fie un cuvânt. 601 00:27:12,670 --> 00:27:13,720 Dar nu e adevărat. 602 00:27:13,720 --> 00:27:15,310 Ne dorim ca întreg Turing să fie un cuvânt. 603 00:27:15,310 --> 00:27:17,760 Deci, trebuie să avem ceva de la scop care spune, felicitări, 604 00:27:17,760 --> 00:27:19,051 ați găsit un cuvânt legitim. 605 00:27:19,051 --> 00:27:21,680 Audiența: Deci, dacă ați avut ca 26 de litere din alfabet, 606 00:27:21,680 --> 00:27:24,560 ai avea de fapt 27 de chei din încerca ta? 607 00:27:24,560 --> 00:27:26,010 >> HANNAH: Awesome, da. 608 00:27:26,010 --> 00:27:28,210 Deci, de fapt, eu cred că va fi pe slide-ul urmator. 609 00:27:28,210 --> 00:27:29,440 Ta-da! 610 00:27:29,440 --> 00:27:32,880 În cazul în care, dacă aveți o nod în încercați ta, ești 611 00:27:32,880 --> 00:27:35,800 Va trebui 27 de copii în loc de 26. 612 00:27:35,800 --> 00:27:39,010 613 00:27:39,010 --> 00:27:40,050 Orice întrebări cu asta? 614 00:27:40,050 --> 00:27:40,550 Da? 615 00:27:40,550 --> 00:27:44,569 Audiența: De ce încearcă să ia, astfel mult spațiu [inaudibil] ca te duci? 616 00:27:44,569 --> 00:27:47,629 De ce este considerat a fi [inaudibil]? 617 00:27:47,629 --> 00:27:48,170 HANNAH: Sigur. 618 00:27:48,170 --> 00:27:48,790 Să ne întoarcem. 619 00:27:48,790 --> 00:27:52,350 Întrebarea este, de ce sunt încercări atât de mult mai mari 620 00:27:52,350 --> 00:27:54,620 decât ceva ca un tabel hash. 621 00:27:54,620 --> 00:27:57,790 Astfel, pentru fiecare dintre aceste niveluri, chiar dacă ei nu sunt trase aici, 622 00:27:57,790 --> 00:28:01,250 trebuie să aveți toate 26 de caractere. 623 00:28:01,250 --> 00:28:04,420 Iar motivul pentru care nu puteți spune, oh, dar, ca de Turing, am 624 00:28:04,420 --> 00:28:07,570 nu trebuie să aibă oricare dintre cei Aceleași lucruri cu privire la nivelul de U. Ei bine, 625 00:28:07,570 --> 00:28:11,390 dacă dintr-o dată ai vrut să adăugați ceva care era ca T-H, 626 00:28:11,390 --> 00:28:14,800 ai nevoie pentru a avea capacitate de adăugând că cuvânt. 627 00:28:14,800 --> 00:28:17,330 Deci, pentru fiecare literă, ai de gând să aibă 628 00:28:17,330 --> 00:28:19,730 pentru a avea o grămadă de tablouri provenind de pe ea. 629 00:28:19,730 --> 00:28:24,060 Deci, puteți vedea cum că ar lua într-adevăr mare, foarte repede. 630 00:28:24,060 --> 00:28:26,560 Orice alte întrebări? 631 00:28:26,560 --> 00:28:28,980 În regulă. 632 00:28:28,980 --> 00:28:29,832 Da? 633 00:28:29,832 --> 00:28:33,210 >> Audiența: Când încercări mai repede decât tabele de dispersie? 634 00:28:33,210 --> 00:28:36,280 >> HANNAH: Când încercări mai repede decât tabele de dispersie? 635 00:28:36,280 --> 00:28:39,120 Deci, dacă ați avut un foarte Funcția rău hash. 636 00:28:39,120 --> 00:28:41,840 Deci, să spun că am fost ca, aici e funcția hash. 637 00:28:41,840 --> 00:28:43,660 Nu contează ce cuvânt să-mi dai, eu sunt mereu 638 00:28:43,660 --> 00:28:47,740 O să-l pună în intrare matrice 0. 639 00:28:47,740 --> 00:28:52,000 Și așa ne-am termina cu doar punerea totul într-o listă mare de mult legat. 640 00:28:52,000 --> 00:28:58,740 Și așa o perioadă de căutare ar lua în cel mai rău n daca este la sfârșitul listei noastre. 641 00:28:58,740 --> 00:29:03,150 Cu încercare, trebuie doar să itera prin literele din cuvântul. 642 00:29:03,150 --> 00:29:07,080 Deci, chiar dacă am adaugat un buchet mai multe cuvinte pentru a încerca nostru, 643 00:29:07,080 --> 00:29:09,620 ea nu ne-ar lua nici mai mult pentru a găsi un anumit cuvânt. 644 00:29:09,620 --> 00:29:11,750 >> Tot ce trebuie sa faci este, pentru exemplu, în acest caz, 645 00:29:11,750 --> 00:29:17,170 Să spunem că sunteți în căutarea pentru zoom, ne-ar trebui doar pentru a itera peste 646 00:29:17,170 --> 00:29:19,840 Z-O-O-M, patru litere. 647 00:29:19,840 --> 00:29:22,250 Deci, asta e doar lungime de zoom cuvânt. 648 00:29:22,250 --> 00:29:25,400 Nu contează cât de multe mai multe cuvinte am pus în această încercare. 649 00:29:25,400 --> 00:29:30,225 Putem obține întotdeauna în aceste patru etape. 650 00:29:30,225 --> 00:29:31,215 Minunat. 651 00:29:31,215 --> 00:29:32,205 Da? 652 00:29:32,205 --> 00:29:34,185 >> Audiența: Deci [inaudibil] este o matrice, nu? 653 00:29:34,185 --> 00:29:35,322 >> HANNAH: Mm-hm. 654 00:29:35,322 --> 00:29:37,155 Audiența: Daca esti Cautati [inaudibil], 655 00:29:37,155 --> 00:29:40,929 ar trebuie să treacă prin matrice pentru a găsi [inaudibil]? 656 00:29:40,929 --> 00:29:41,470 HANNAH: Sigur. 657 00:29:41,470 --> 00:29:44,000 Audiența: Asta nu ia mai mult timp? 658 00:29:44,000 --> 00:29:46,370 HANNAH: Dacă am de gând să spune că matrice mea este mereu 659 00:29:46,370 --> 00:29:49,250 Va fi A, B, C, D, E, F, G, bla bla bla, 660 00:29:49,250 --> 00:29:51,630 deci, dacă mereu știu că e în aceeași ordine exact, 661 00:29:51,630 --> 00:29:53,880 dacă mereu Știu că e în ordine alfabetică, 662 00:29:53,880 --> 00:29:57,860 Pot spune doar O este numărul așa și așa în alfabetul. 663 00:29:57,860 --> 00:29:59,620 Doar sari la acel loc. 664 00:29:59,620 --> 00:30:01,860 Pentru că minte, cu matrice, putem accesa 665 00:30:01,860 --> 00:30:06,590 orice element de care matrice în permanentă timp, dacă știm unde ne ce cautati. 666 00:30:06,590 --> 00:30:09,080 667 00:30:09,080 --> 00:30:09,580 Da? 668 00:30:09,580 --> 00:30:12,005 >> Audiența: Pe anterioară glisați [inaudibil] 27, 669 00:30:12,005 --> 00:30:14,430 dar 26 pentru primul. 670 00:30:14,430 --> 00:30:15,400 >> HANNAH: Îmi pare rău? 671 00:30:15,400 --> 00:30:18,800 >> Audiența: Nu este prima o 0, deci nu ar fi de 26? 672 00:30:18,800 --> 00:30:24,900 >> HANNAH: Sigur, asa ca atunci cand spunem 27, e O să ne dea indicii de la 0 la 26. 673 00:30:24,900 --> 00:30:28,220 Dar dacă te numeri de fapt cei afară, o să fie 27. 674 00:30:28,220 --> 00:30:30,007 Bună întrebare. 675 00:30:30,007 --> 00:30:30,590 Altceva? 676 00:30:30,590 --> 00:30:31,200 Da? 677 00:30:31,200 --> 00:30:34,420 >> Audiența: Deci, sunt încercări mai lent decât tabele de dispersie? 678 00:30:34,420 --> 00:30:37,920 >> HANNAH: Încearcă vor fi, în teoria, mai rapid decat tabele de dispersie 679 00:30:37,920 --> 00:30:39,760 dar ocupă mai mult de memorie. 680 00:30:39,760 --> 00:30:40,534 Da? 681 00:30:40,534 --> 00:30:41,450 Audiența: [inaudibil]? 682 00:30:41,450 --> 00:30:45,770 683 00:30:45,770 --> 00:30:47,484 >> HANNAH: Îmi pare rău, nu te-am auzit. 684 00:30:47,484 --> 00:30:48,400 Audiența: [neauzit]. 685 00:30:48,400 --> 00:30:51,250 686 00:30:51,250 --> 00:30:54,100 0-25 vă oferă 26. 687 00:30:54,100 --> 00:30:56,958 >> HANNAH: 0 până la 25 ar îți dau 26, dreapta. 688 00:30:56,958 --> 00:30:58,457 >> Audiența: Și apoi [neauzit]. 689 00:30:58,457 --> 00:30:59,040 HANNAH: Corect. 690 00:30:59,040 --> 00:31:04,760 Deci, numărul suntem specificând este numărul de lucruri în oferta noastră. 691 00:31:04,760 --> 00:31:07,260 Deci, dacă avem 27, e O să ne dea 0 692 00:31:07,260 --> 00:31:10,620 prin 26, care va da camera-ne pentru, în acest caz, 693 00:31:10,620 --> 00:31:12,770 Nu mă include un apostrof. 694 00:31:12,770 --> 00:31:17,040 Deci ne asistent de la 0 la 25 sunt primele 26 de litere ale alfabetului, 695 00:31:17,040 --> 00:31:18,990 sau toate cele 26 de litere ale alfabetului. 696 00:31:18,990 --> 00:31:21,190 Și apoi că ultimul lucru, la intrare 26, este 697 00:31:21,190 --> 00:31:24,598 va fi verificarea marca, sau delta. 698 00:31:24,598 --> 00:31:26,960 Altceva? 699 00:31:26,960 --> 00:31:29,130 Minunat. 700 00:31:29,130 --> 00:31:30,020 Pierdut spațiul meu. 701 00:31:30,020 --> 00:31:31,020 OK, rece. 702 00:31:31,020 --> 00:31:33,240 >> Așa că am atins deja pe acest lucru. 703 00:31:33,240 --> 00:31:37,430 Dar comerțul mare off între incearca si tabele de dispersie 704 00:31:37,430 --> 00:31:39,720 este faptul că încearcă furniza, în teorie, uite constant în sus 705 00:31:39,720 --> 00:31:42,890 ori, dar folosi o mulțime de memorie. 706 00:31:42,890 --> 00:31:46,495 Bine, acum avem puțin structuri mai puțin complicate, 707 00:31:46,495 --> 00:31:49,640 și vom face cu C, și ne vom muta dreapta de-a lungul. 708 00:31:49,640 --> 00:31:51,930 >> Deci stive, am văzut acest în curs în cazul în care 709 00:31:51,930 --> 00:31:55,020 avea ceva de genul un teanc de tăvi în cazul în care 710 00:31:55,020 --> 00:31:57,330 ultimul lucru pe care îl pe stiva se întâmplă 711 00:31:57,330 --> 00:31:59,500 a fi primul lucru pe care îl scoate. 712 00:31:59,500 --> 00:32:02,880 Deci, asta e ceea ce defineste de fapt o stivă este că ultimul lucru pe care a pus pe 713 00:32:02,880 --> 00:32:06,080 va fi primul lucru pe care îl scoate. 714 00:32:06,080 --> 00:32:09,279 Și terminologia pe care le folosim dacă vom pune ceva, 715 00:32:09,279 --> 00:32:12,070 dacă vom adăuga ceva la stivă nostru, noi numim asta împingere. 716 00:32:12,070 --> 00:32:14,970 Și dacă luăm ceva off, o numim popping. 717 00:32:14,970 --> 00:32:17,080 Și dacă vom pună în aplicare o stivă, noi 718 00:32:17,080 --> 00:32:20,660 trebuie să fie sigur de a ține evidența atât dimensiunea și capacitatea. 719 00:32:20,660 --> 00:32:24,940 Astfel, numărul total de elemente putem deține și numărul actual de elemente 720 00:32:24,940 --> 00:32:27,880 pe care le dețin. 721 00:32:27,880 --> 00:32:29,885 >> Și foarte similar, avem cozi. 722 00:32:29,885 --> 00:32:34,510 Și singura diferență este în loc de cu stive, 723 00:32:34,510 --> 00:32:37,630 am spus ultimul lucru pe care îl pune pe este primul lucru pe care îl scoate. 724 00:32:37,630 --> 00:32:40,940 Deci, cu cozi, primul lucru pe care îl pune în 725 00:32:40,940 --> 00:32:43,129 este de gând să fie primul lucru pe care scoate. 726 00:32:43,129 --> 00:32:45,420 Deci, acest lucru este ca daca esti de fapt, garnitură de până la un magazin 727 00:32:45,420 --> 00:32:48,140 și ești ajutat, apoi prima persoana din linie 728 00:32:48,140 --> 00:32:50,880 ar trebui sa fie prima persoana care va fi ajutat. 729 00:32:50,880 --> 00:32:52,220 Așa că ar fi o listă de așteptare. 730 00:32:52,220 --> 00:32:55,880 >> Deci, avem nevoie pentru a ține evidența mărime, capacitate, iar capul de când suntem 731 00:32:55,880 --> 00:33:01,130 va lua pe toți în față listei loc de spate. 732 00:33:01,130 --> 00:33:03,480 Întrebări despre asta? 733 00:33:03,480 --> 00:33:06,330 Orice întrebări C care sunt deranjeaza tine? 734 00:33:06,330 --> 00:33:09,590 Structuri de date, oricare dintre chestiile astea distracție? 735 00:33:09,590 --> 00:33:10,530 Bine, rece. 736 00:33:10,530 --> 00:33:14,120 Așa că voi preda Alison la sari în ceva mai mult de programare. 737 00:33:14,120 --> 00:33:15,965 >> ALISON: Oh, vom vedea. 738 00:33:15,965 --> 00:33:17,370 Vom vedea cât de bine fac aici. 739 00:33:17,370 --> 00:33:21,410 OK, am de gând să încerc și zbura prin chestia asta, băieți. 740 00:33:21,410 --> 00:33:24,540 Hannah a mers foarte în adâncime pe toate lucrurile ei. 741 00:33:24,540 --> 00:33:26,900 Am de gând să încerc să dea ai o privire de ansamblu explozie rapidă 742 00:33:26,900 --> 00:33:31,290 astfel încât să putem ajunge la Davin cu toate de distracție JavaScript și securitate lucruri 743 00:33:31,290 --> 00:33:33,380 care poate că de fapt doresc să aud mai multe despre. 744 00:33:33,380 --> 00:33:36,600 >> OK, după cum a spus Hannah, dacă aveți orice întrebări, 745 00:33:36,600 --> 00:33:39,170 Mă duc prea repede, vă rog, să-mi spuneți. 746 00:33:39,170 --> 00:33:42,114 Voi răspunde la întrebări după cum este necesar. 747 00:33:42,114 --> 00:33:45,280 Deci, pentru a începe, vom începe cu probabil unul dintre primele lucruri 748 00:33:45,280 --> 00:33:48,730 ai învățat cu web programare, permisiuni. 749 00:33:48,730 --> 00:33:52,720 Deci, chmod voi, ar trebui să fi fost de masterat de la acest cu tot pe web 750 00:33:52,720 --> 00:33:54,870 Programarea pe care le-ați făcut în ultima vreme. 751 00:33:54,870 --> 00:33:57,320 E de fapt doar o comandă care schimbă permisiunile 752 00:33:57,320 --> 00:34:00,779 sau permisiunile de acces de obiecte de sistemul nostru de fișiere. 753 00:34:00,779 --> 00:34:02,570 Desigur, pentru a efectiv vedea aceste, dacă ești 754 00:34:02,570 --> 00:34:04,910 având oricare probleme cu aceste în timpul seturi de probleme, 755 00:34:04,910 --> 00:34:11,460 este posibil să fi folosit ls -l, care este lung, pentru a obține vedere un fel de acest fel, 756 00:34:11,460 --> 00:34:14,209 în cazul în care de fapt vezi toate permisiunile pentru un fișier. 757 00:34:14,209 --> 00:34:16,850 758 00:34:16,850 --> 00:34:20,732 >> Și într-adevăr, noi doar de gând să meargă prin destul de repede doar destul de 759 00:34:20,732 --> 00:34:21,940 de mult ceea ce fiecare dintre acestea medie. 760 00:34:21,940 --> 00:34:24,481 Deci, ne-am d chiar aici, care doar standuri pentru directorul. 761 00:34:24,481 --> 00:34:26,790 762 00:34:26,790 --> 00:34:31,739 Evident chiar aici, vom vedea rwx, care este ușor de citit, inscriptibile, și executabil. 763 00:34:31,739 --> 00:34:37,090 Acestea ar putea fi, de asemenea, reprezentat ca biți, care vom ajunge în pe pagina următoare. 764 00:34:37,090 --> 00:34:40,699 Deci, fiecare triadă că am văzut aici, deci e de trei triade. 765 00:34:40,699 --> 00:34:48,120 Am rwx, r nimic x și r nimic x pentru acest prim dosar. 766 00:34:48,120 --> 00:34:49,690 Este această structură generală. 767 00:34:49,690 --> 00:34:50,940 >> Deci avem niște director. 768 00:34:50,940 --> 00:34:53,999 Avem un grup de folosire cu aceste permisiuni. 769 00:34:53,999 --> 00:34:57,040 Unii grup care are aceste permisiuni, și o lume care are o permisiune. 770 00:34:57,040 --> 00:34:59,420 Vă puteți gândi la acestea ca o triadă. 771 00:34:59,420 --> 00:35:01,130 Vă puteți gândi la acestea ca trei biți. 772 00:35:01,130 --> 00:35:04,060 Astfel, ei pot deține valori oriunde de la 0 în sus 773 00:35:04,060 --> 00:35:07,350 la 7, motiv pentru care, uneori, am avut faci chmod 774 00:35:07,350 --> 00:35:17,510 600 în loc de chmod RW orice. 775 00:35:17,510 --> 00:35:19,170 Vom obține într-o exemplu acolo. 776 00:35:19,170 --> 00:35:24,260 Dar, practic, vă puteți gândi dintre acestea, fie ca doar rwx, 777 00:35:24,260 --> 00:35:28,520 sau vă puteți gândi la ele ca unii Numărul de unde această primă de aici 778 00:35:28,520 --> 00:35:31,480 reprezintă un număr între 0 și 7, acest al doilea 779 00:35:31,480 --> 00:35:33,970 reprezintă un număr între 0 și 7, iar a treia 780 00:35:33,970 --> 00:35:38,245 reprezintă un număr între 0 și 7, OK? 781 00:35:38,245 --> 00:35:42,700 >> r are valoarea 4. w are o valoare de 2, și x 782 00:35:42,700 --> 00:35:49,230 are o valoare de 1, motiv pentru care acest permisiunea de aici ar fi chmod 700. 783 00:35:49,230 --> 00:35:53,520 Pentru că în acest caz aici, ea ne spune au primul bit se oglindită pe. 784 00:35:53,520 --> 00:35:55,380 Deci avem 4 pentru citire. 785 00:35:55,380 --> 00:35:58,730 Al doilea bit este oglindită pe pentru w, care este de 2, deci acum avem 6. 786 00:35:58,730 --> 00:36:02,070 Și al treilea bit este oglindită pe pentru x, care este de 1, așa că am obține șapte. 787 00:36:02,070 --> 00:36:04,820 Și, bineînțeles, grupul nostru și lumea noastră sunt fiecare 0. 788 00:36:04,820 --> 00:36:07,770 Deci, aceasta este, de asemenea, echivalent de chmod 700. 789 00:36:07,770 --> 00:36:12,081 Și aș încerca cu siguranță să înțelege maparea dintre cele. 790 00:36:12,081 --> 00:36:14,080 Nu sunt sigur daca are veni pe un test înainte, 791 00:36:14,080 --> 00:36:18,590 dar ar fi o întrebare pe care am putea întreba. 792 00:36:18,590 --> 00:36:22,110 >> Doar un pic merge chiar în continuare în chmod aici, aici 793 00:36:22,110 --> 00:36:27,730 este foarte general structură a unui apel chmod. 794 00:36:27,730 --> 00:36:29,500 Deci, desigur, ne-am chmod aici. 795 00:36:29,500 --> 00:36:34,410 Referinte, ceea ce se referă acest lucru este care ne da aceste permisiuni 796 00:36:34,410 --> 00:36:36,570 sau care suntem luați aceste permisiunile departe de. 797 00:36:36,570 --> 00:36:44,330 Deci avem o aici, în permisiunile, ca și cum ne-am oferit chmod un plus x, 798 00:36:44,330 --> 00:36:45,440 așa cum vom vedea în curând. 799 00:36:45,440 --> 00:36:48,460 o înseamnă doar da acestea specific permisiuni pentru toată lumea. 800 00:36:48,460 --> 00:36:49,600 Dă-le tuturor. 801 00:36:49,600 --> 00:36:55,370 Deci, ai putea foarte bine avea u plus x sau g plus x sau o plus x sau multiplu 802 00:36:55,370 --> 00:36:55,870 acestora. 803 00:36:55,870 --> 00:36:59,280 Așa că primul parte este întotdeauna Va fi trimiteri. 804 00:36:59,280 --> 00:37:03,220 Cine suntem noi da aceste permisiuni pentru, sau care sunt noi luandu-le departe de? 805 00:37:03,220 --> 00:37:04,850 >> A doua este operatorul. 806 00:37:04,850 --> 00:37:07,350 Deci, voi s-au ocupat cea mai mare parte cu plus. 807 00:37:07,350 --> 00:37:12,140 Acest lucru oferă permisiuni oricine ai lor da, 808 00:37:12,140 --> 00:37:14,840 întrucât minus, în mod logic, le elimină. 809 00:37:14,840 --> 00:37:16,880 Deci, nimic prea teribil acolo. 810 00:37:16,880 --> 00:37:23,060 Și apoi Moduri este ceea ce am vorbit despre cu cititul, scrisul, sau de executare. 811 00:37:23,060 --> 00:37:29,070 Deci, un plus x înseamnă da executabil permisiuni pentru toată lumea. 812 00:37:29,070 --> 00:37:33,430 Apoi, desigur, pe care fișier sau director specific. 813 00:37:33,430 --> 00:37:33,980 OK? 814 00:37:33,980 --> 00:37:36,010 Toată lumea bună cu chmod? 815 00:37:36,010 --> 00:37:37,850 Nu prea rău? 816 00:37:37,850 --> 00:37:42,417 >> OK, deci HTML, oricare dintre voi sunteți vechi sa-- destul MySpace vârstă? 817 00:37:42,417 --> 00:37:44,750 Am trimis această secțiune a mea, și literalmente jumătate din populația 818 00:37:44,750 --> 00:37:45,790 sa uitat la mine ca am fost nebun. 819 00:37:45,790 --> 00:37:47,498 Și am fost ca, baieti, nu suntem acel bătrân. 820 00:37:47,498 --> 00:37:48,910 Haide. 821 00:37:48,910 --> 00:37:53,360 Deci, HyperText Markup Language, e sincer doar o modalitate de 822 00:37:53,360 --> 00:37:57,990 pentru a afișa anumite lucruri pe web. 823 00:37:57,990 --> 00:37:59,210 Deci, este un limbaj de marcare. 824 00:37:59,210 --> 00:38:00,640 Nu este un limbaj de scripting. 825 00:38:00,640 --> 00:38:02,160 Nu e nici o logică în ea. 826 00:38:02,160 --> 00:38:05,710 Este pur și simplu pentru a schimba Se afișează mod ceva. 827 00:38:05,710 --> 00:38:07,670 OK, așa că e un important distincție pentru a face. 828 00:38:07,670 --> 00:38:12,030 Este considerat un limbaj de marcare, nu un limbaj de scripting. 829 00:38:12,030 --> 00:38:15,100 >> Deci, aici avem tag-uri HTML noastre. 830 00:38:15,100 --> 00:38:20,390 Pe aceasta diapozitiv sunt, probabil, cele mai multe dintre cele pe care ar trebui să fie familiarizat cu 831 00:38:20,390 --> 00:38:22,390 și să fie într-adevăr confortabil cu. 832 00:38:22,390 --> 00:38:25,700 Deci evident, avem tag HTML, care 833 00:38:25,700 --> 00:38:29,930 desemnează că totul în între acestea două vor fi HTML. 834 00:38:29,930 --> 00:38:33,070 Avem unele link-ul, care evident vă va da 835 00:38:33,070 --> 00:38:34,990 un link către o pagină web extern. 836 00:38:34,990 --> 00:38:37,520 Unele din titlu, în capul nostru aici. 837 00:38:37,520 --> 00:38:40,020 Și avem corpul nostru cu h1, care este un antet, 838 00:38:40,020 --> 00:38:42,260 așa că va face frumos și îndrăzneț și mai mare. 839 00:38:42,260 --> 00:38:46,040 Și apoi, avem unele p, care este un paragraf. 840 00:38:46,040 --> 00:38:49,000 Ar trebui să știi și să fie familiarizat cu lucruri 841 00:38:49,000 --> 00:38:54,030 ca și cum ai insera o imagine, sunt Există alte clase antet? 842 00:38:54,030 --> 00:38:57,240 Mi-ar fi cu siguranta confortabil cu div. 843 00:38:57,240 --> 00:39:00,840 Deci, acestea au cea mai mare parte de tag-uri că ar trebui să fie familiarizat cu. 844 00:39:00,840 --> 00:39:04,370 Dar, desigur, așa cum cu totul în CS 50, lista nu este exhaustivă. 845 00:39:04,370 --> 00:39:08,200 Deci, asigurați-vă că perie pe asta. 846 00:39:08,200 --> 00:39:13,260 >> CSS, deci CSS, dacă vreunul dintre voi ceas seminarul meu din urmă cu două săptămâni, 847 00:39:13,260 --> 00:39:16,250 este de fapt doar un mod pentru stilul pagina web? 848 00:39:16,250 --> 00:39:18,950 OK, deci avem o limbaj de marcare. 849 00:39:18,950 --> 00:39:23,220 HTML, care are grijă de doar textul și în cazul în care ar putea fi pe pagină. 850 00:39:23,220 --> 00:39:25,760 Dar CSS este într-adevăr ceea ce face destul de. 851 00:39:25,760 --> 00:39:30,690 Ai putea avea acestea în HTML dosare, dar așa cum vom vorbi despre mai târziu, 852 00:39:30,690 --> 00:39:32,660 Sunt destul de sigur că s-ar putea fi următorul diapozitiv, ea 853 00:39:32,660 --> 00:39:35,620 este o practică comună, și de fapt practică pe care incurajam într-adevăr, 854 00:39:35,620 --> 00:39:40,670 pentru tine de a le menține separate atunci când ne vorbesc despre MVC și că întreaga paradigmă. 855 00:39:40,670 --> 00:39:42,490 Asta e într-adevăr ceea ce hraneste acest lucru în. 856 00:39:42,490 --> 00:39:46,110 >> Deci, CSS este doar o modalitate de a face lucrurile arata destul de. 857 00:39:46,110 --> 00:39:50,500 Lucrurile de aici, cum ar fi corp și #title și .info, 858 00:39:50,500 --> 00:39:54,340 acestea sunt numite selectori și ce ei fac este ei selecta anumite lucruri 859 00:39:54,340 --> 00:39:59,260 în fișierul HTML și se aplică indiferent de stil, 860 00:39:59,260 --> 00:40:04,090 indiferent de fel de lucruri pe care le doriți, pentru că elementul specific de-ului tău 861 00:40:04,090 --> 00:40:04,590 pagina. 862 00:40:04,590 --> 00:40:08,820 Deci, aici, avem o culoarea de fundal și o culoare 863 00:40:08,820 --> 00:40:12,450 și o familie de fonturi care fiind aplicată la ceea ce este în organism. 864 00:40:12,450 --> 00:40:15,530 Deci, dacă ne-am uitat înapoi aici, ea nu s-ar aplica la titlu. 865 00:40:15,530 --> 00:40:22,340 Se va aplica doar la ceea ce este în aceste selectoare corp, bine? 866 00:40:22,340 --> 00:40:25,250 >> Cu titlu aici, aceasta este Va fi același lucru, 867 00:40:25,250 --> 00:40:28,410 culoarea textului fiind albastru se întâmplă numai 868 00:40:28,410 --> 00:40:33,870 de a afecta ceea ce este în selectorii titlu. 869 00:40:33,870 --> 00:40:36,580 La fel ca multe informatii aici. textul va fi roz, 870 00:40:36,580 --> 00:40:38,600 indiferent de informatiile meciului, care este chiar aici. 871 00:40:38,600 --> 00:40:40,860 Deci, singurul lucru pe care ar fi roz la aceasta pagina 872 00:40:40,860 --> 00:40:44,100 este data, luni saptesprezecelea noiembrie 2014. 873 00:40:44,100 --> 00:40:48,770 OK, deci CSS este doar o modalitate de a avea mai mult control over-- da? 874 00:40:48,770 --> 00:40:51,850 >> Audiența: De ce aveți pentru a utiliza hash cu titlu? 875 00:40:51,850 --> 00:40:55,170 >> HANNAH: diapozitiv departe, promit! 876 00:40:55,170 --> 00:40:56,810 Vom ajunge acolo. 877 00:40:56,810 --> 00:40:59,830 Deci, acesta este motivul pentru care trebuie să folosim hash. 878 00:40:59,830 --> 00:41:03,429 Deci, selectoare ia pe trei principale Formele pe care le vorbesc cu voi despre. 879 00:41:03,429 --> 00:41:05,595 Am fyou doresc să învețe mai mult, exista o multime acolo. 880 00:41:05,595 --> 00:41:07,540 Există documentație CSS mare. 881 00:41:07,540 --> 00:41:12,680 E un nume de etichetă, care are de a face cu doar dvs. tag-uri normale HTML. 882 00:41:12,680 --> 00:41:17,210 Deci, H1, p, div, h2, aceste felul de lucruri. 883 00:41:17,210 --> 00:41:20,320 Și putem numi doar pe cei ca este. 884 00:41:20,320 --> 00:41:22,650 Deci, așa cum vom vedea aici cu corp, este o etichetă normală. 885 00:41:22,650 --> 00:41:26,660 Deci, putem pune doar atunci când corpul vorbim în dosarul nostru CSS. 886 00:41:26,660 --> 00:41:29,730 >> Cu titlu, tot motivul pentru care am au acest hash este că avem ceea ce este 887 00:41:29,730 --> 00:41:31,010 considerată un act de identitate. 888 00:41:31,010 --> 00:41:35,400 Deci, un ID trebuie să fie întotdeauna unic în pagina HTML 889 00:41:35,400 --> 00:41:37,930 astfel încât atunci când sunteți referindu-se la ea, 890 00:41:37,930 --> 00:41:41,990 Știi că ești doar referindu- pentru un singur lucru specific. 891 00:41:41,990 --> 00:41:46,270 Deci, în acest caz aici, cu nostru h1 aici, CS 50 sesiune comentariu, 892 00:41:46,270 --> 00:41:47,810 avem un id de titlu. 893 00:41:47,810 --> 00:41:54,280 Deci, în scopul de a se referi doar la acea bucată de HTML noastre, facem un titlu hash. 894 00:41:54,280 --> 00:41:58,080 Doar prin convenție, ID-uri sunt desemnate cu un hash în fața lor. 895 00:41:58,080 --> 00:42:01,650 În același fel, vom vedea info aici este o clasă. 896 00:42:01,650 --> 00:42:06,070 Și astfel de clasă cu CSS este desemnată ca o clasă punct 897 00:42:06,070 --> 00:42:08,895 sau dot orice care clasă este. 898 00:42:08,895 --> 00:42:10,850 Deci, în acest caz aici, e info. 899 00:42:10,850 --> 00:42:13,090 >> Așa că am lua înapoi. 900 00:42:13,090 --> 00:42:16,200 Ambele ar fi roz pentru CSS aici 901 00:42:16,200 --> 00:42:18,430 pentru că ambele au o clasa de info. 902 00:42:18,430 --> 00:42:23,070 Și în dosarul nostru CSS, am desemnat că orice cu o clasă de informatii 903 00:42:23,070 --> 00:42:24,120 este roz. 904 00:42:24,120 --> 00:42:25,968 Asta face sens? 905 00:42:25,968 --> 00:42:27,435 Da? 906 00:42:27,435 --> 00:42:30,731 >> Audiența: Dacă ar fi să vă totul în alb corp, 907 00:42:30,731 --> 00:42:32,814 și apoi încercați să facă ceva în interiorul ei albastru, 908 00:42:32,814 --> 00:42:34,770 ar cauza probleme care? 909 00:42:34,770 --> 00:42:37,310 >> HANNAH: Deci, CSS este foi de stil în cascadă. 910 00:42:37,310 --> 00:42:40,730 Deci, tot ce este spre de jos vor avea prioritate. 911 00:42:40,730 --> 00:42:44,080 Deci, dacă faci ceva cu corpul, și faci totul alb, 912 00:42:44,080 --> 00:42:49,300 și apoi mai târziu să schimbați titlul sau modificați textul din corp, 913 00:42:49,300 --> 00:42:50,560 se suprascrie asta. 914 00:42:50,560 --> 00:42:55,360 Deci, nimic spre de jos vor avea prioritate. 915 00:42:55,360 --> 00:42:56,730 Da? 916 00:42:56,730 --> 00:42:59,627 >> Audiența: și ID-urile sunt unice, dar clasele pot fi mai mult? 917 00:42:59,627 --> 00:43:00,210 HANNAH: Corect. 918 00:43:00,210 --> 00:43:06,320 Deci, ID trebuie sa fie unic, și clasele pot se referă la cât mai multe lucruri cum doriți. 919 00:43:06,320 --> 00:43:07,580 Orice alte întrebări? 920 00:43:07,580 --> 00:43:09,800 Da. 921 00:43:09,800 --> 00:43:11,210 >> Audiența: [neauzit]. 922 00:43:11,210 --> 00:43:13,509 Mă întreb dacă care face o diferență. 923 00:43:13,509 --> 00:43:15,217 HANNAH: Îmi pare rău, ceea ce a fost întrebarea? 924 00:43:15,217 --> 00:43:18,960 Audiența: Nu e mic "F" și de capital "F." 925 00:43:18,960 --> 00:43:21,440 HANNAH: Deci, diferența între mici "f" și de capital "F" 926 00:43:21,440 --> 00:43:22,606 nu ar trebui să facă o diferență. 927 00:43:22,606 --> 00:43:26,330 Deci, "f" va fi de 15, fie un fel. 928 00:43:26,330 --> 00:43:28,130 Se răcește, altceva? 929 00:43:28,130 --> 00:43:29,930 Toată lumea bună, CSS? 930 00:43:29,930 --> 00:43:30,850 Da? 931 00:43:30,850 --> 00:43:31,790 >> Audiența: Îmi pare rău. 932 00:43:31,790 --> 00:43:35,550 Poți avea o clasa si un act de identitate? 933 00:43:35,550 --> 00:43:38,030 >> HANNAH: Da, se poate. 934 00:43:38,030 --> 00:43:40,420 Lucrurile pot avea atât o clasă și un act de identitate. 935 00:43:40,420 --> 00:43:44,670 Și am foarte recomanda testarea acestor pe cont propriu. 936 00:43:44,670 --> 00:43:50,480 CSS veți învăța cel mai bine doar de a face ceva, pagina web foarte simplu, 937 00:43:50,480 --> 00:43:53,440 elaborarea niște CSS, și doar văzând modul în care acestea interacționează. 938 00:43:53,440 --> 00:43:56,970 Și veți obține un foarte bun, sentiment intuitiv pentru modul în care funcționează. 939 00:43:56,970 --> 00:43:58,810 >> OK, toată lumea bună cu CSS? 940 00:43:58,810 --> 00:44:01,280 Ești de gând să facă site-uri frumoase, cu CSS acum. 941 00:44:01,280 --> 00:44:05,460 OK, cele mai bune practici, doar lucruri de a păstra în minte, lucruri 942 00:44:05,460 --> 00:44:09,810 that-- de aceea andocare tu pentru designer si fleacuri. 943 00:44:09,810 --> 00:44:11,820 Deci, închideți toate etichetele HTML. 944 00:44:11,820 --> 00:44:14,840 Deci, dacă aveți o caroserie deschisă, ar trebui să existe un organism de aproape. 945 00:44:14,840 --> 00:44:18,180 Dacă aveți un paragraf deschis, ar trebui să existe un paragraf apropiat. 946 00:44:18,180 --> 00:44:19,555 Verificați pentru a vedea pagina dvs. de validează. 947 00:44:19,555 --> 00:44:23,330 Voi ar trebui să fie foarte familiar cu acest din șapte set-p 948 00:44:23,330 --> 00:44:26,350 cu CS 50 finanțare cu validator W3. 949 00:44:26,350 --> 00:44:28,340 Și, după cum am spus mai înainte, unul dintre paradigmele noastre mari 950 00:44:28,340 --> 00:44:33,780 este separarea stilul tau cu CSS din markup-ul, care este HTML. 951 00:44:33,780 --> 00:44:36,900 Și apoi, desigur, avem acest mare xkcd aici. 952 00:44:36,900 --> 00:44:38,280 Yay, scutirea de benzi desenate! 953 00:44:38,280 --> 00:44:41,340 >> OK, TCP / IP. 954 00:44:41,340 --> 00:44:44,650 Între acestea și HTTP, practic ei sunt ambele protocoale. 955 00:44:44,650 --> 00:44:46,810 Deci, ai putea gândi doar dintre ele ca un set de reguli 956 00:44:46,810 --> 00:44:50,110 care guvernează modul în lucrurile muta pe internet. 957 00:44:50,110 --> 00:44:53,410 Deci, de control al transmisiei protocol, sau Internet Protocol, 958 00:44:53,410 --> 00:44:57,280 este doar o modalitate de a vă asigura că datele devine unde se duce 959 00:44:57,280 --> 00:45:00,030 și că știm dacă ne lipsește vreodată de date. 960 00:45:00,030 --> 00:45:03,520 Deci, dacă voi gândi înapoi la curs cu câteva săptămâni în urmă cu David 961 00:45:03,520 --> 00:45:06,980 unde am avut patru plicuri, ei au fost numărate ca unul din patru, 962 00:45:06,980 --> 00:45:11,300 două din patru, trei din patru, patru dintre patru, aceasta este doar un set de reguli. 963 00:45:11,300 --> 00:45:13,830 Am spus, OK, ori de câte ori suntem trimiterea mai mult de un pachet, 964 00:45:13,830 --> 00:45:16,610 vom număra cu ce număr este 965 00:45:16,610 --> 00:45:19,040 și cât de multe totala care utilizatorul trebuie minim. 966 00:45:19,040 --> 00:45:22,540 >> Și acesta este doar spune oricine primește datele dacă acestea 967 00:45:22,540 --> 00:45:26,120 au ajuns tot sau în cazul în care ceva sa pierdut pe drum. 968 00:45:26,120 --> 00:45:28,840 Și au nevoie pentru a cere din nou. 969 00:45:28,840 --> 00:45:31,140 Aceasta este de fapt doar un set de reguli. 970 00:45:31,140 --> 00:45:33,650 Așa vă puteți gândi de ea, bine? 971 00:45:33,650 --> 00:45:37,700 Și, de asemenea, se specifică portul, care voi can-- știu în timpul curs, 972 00:45:37,700 --> 00:45:39,170 au avut o listă întreagă de porturi. 973 00:45:39,170 --> 00:45:41,630 Dar noi nu le avem aici, chiar acum. 974 00:45:41,630 --> 00:45:45,290 >> Protocolul de transfer hipertext Deci, este, din nou, e un alt protocol. 975 00:45:45,290 --> 00:45:48,630 Deci e un alt set de reguli care guvernează, în acest caz, 976 00:45:48,630 --> 00:45:51,130 modul în care este transferat hipertext. 977 00:45:51,130 --> 00:45:54,340 Deci permite doar browsere să vorbească cu servere de web. 978 00:45:54,340 --> 00:45:56,910 Și, după cum am spus aici, e ca handshaking uman. 979 00:45:56,910 --> 00:46:00,480 E doar un mod de a guverna cum serverul web este 980 00:46:00,480 --> 00:46:02,690 merge pentru a interacționa cu browser-ul dumneavoastră. 981 00:46:02,690 --> 00:46:05,660 Și avem doar câteva exemple. 982 00:46:05,660 --> 00:46:09,100 Avem unele solicitări aici unde este metoda GET. 983 00:46:09,100 --> 00:46:13,760 Avem HTTP 1.1, care este Versiunea de protocol pentru noi. 984 00:46:13,760 --> 00:46:17,230 Și apoi, gazda, care este ceea ce suntem de fapt încearcă să acceseze. 985 00:46:17,230 --> 00:46:21,800 Și apoi, după cum vedeți aici, ne-am Pentru câteva răspuns cu acest 200 986 00:46:21,800 --> 00:46:25,032 OK ca codul nostru de răspuns HTTP. 987 00:46:25,032 --> 00:46:27,240 Avem o listă mare am de gând a trage într-o secundă 988 00:46:27,240 --> 00:46:29,430 că voi ar trebui să fie familiarizat cu. 989 00:46:29,430 --> 00:46:35,750 Și avem acest tip de conținut de text / HTML, care spune doar ce tip de date 990 00:46:35,750 --> 00:46:39,990 suntem primit de la server, bine? 991 00:46:39,990 --> 00:46:44,230 Această gazdă și acest tip de conținut fac parte din antetele HTTP. 992 00:46:44,230 --> 00:46:49,610 Puteți avea cât mai puține sau cât de puțin necesar pentru contextul ce 993 00:46:49,610 --> 00:46:50,580 ai de a face cu. 994 00:46:50,580 --> 00:46:53,371 Uneori, veți avea o mulțime de informații provenind din server. 995 00:46:53,371 --> 00:46:56,040 Poate că solicită foarte mult de informații de la utilizator. 996 00:46:56,040 --> 00:46:57,600 Aceasta diferă în funcție de context. 997 00:46:57,600 --> 00:47:01,144 Dacă te uiți la CS 50 Studiul, există o mulțime mai multe despre aceasta. 998 00:47:01,144 --> 00:47:03,060 Dar avem o mulțime de a obține prin intermediul, așa că voi 999 00:47:03,060 --> 00:47:05,760 pentru a merge drept înainte, dacă asta e OK cu voi? 1000 00:47:05,760 --> 00:47:07,960 Se răcește. 1001 00:47:07,960 --> 00:47:08,460 Stai. 1002 00:47:08,460 --> 00:47:11,182 Am avea cu siguranta ca listă întreagă de-- nu-i asa! 1003 00:47:11,182 --> 00:47:13,140 Nu știu de ce acest lucru este tot drumul până aici. 1004 00:47:13,140 --> 00:47:15,660 Am crezut literalmente m-am mutat aceasta în timp ce am fost sitting-- 1005 00:47:15,660 --> 00:47:16,540 >> Davin: Vrei să-l predea? 1006 00:47:16,540 --> 00:47:17,420 Sau vrei să-l învețe? 1007 00:47:17,420 --> 00:47:20,010 >> Audiența: Am crezut că am putea doar le arate pentru a începe cu. 1008 00:47:20,010 --> 00:47:22,210 Adică, poti sa te duci în le mai departe, dar eu 1009 00:47:22,210 --> 00:47:26,030 au considerat că a făcut mai mult sens, deoarece am Tocmai vorbeam despre stările HTTP. 1010 00:47:26,030 --> 00:47:28,200 Deci, aici e toata lista. 1011 00:47:28,200 --> 00:47:31,730 Cred că ceea ce se va întâmpla este Davin este de gând să meargă în ele mai târziu. 1012 00:47:31,730 --> 00:47:35,330 Dar există o listă întreagă, o previzualizare a gustului de a veni. 1013 00:47:35,330 --> 00:47:41,640 OK, vom blow-- acest lucru se întâmplă a fi un curs PHP accident ca nimeni altul. 1014 00:47:41,640 --> 00:47:44,874 >> Deci PHP, Hypertext Preprocessor, este o backronym recursiv, 1015 00:47:44,874 --> 00:47:46,540 ceea ce înseamnă că a fost numit altceva. 1016 00:47:46,540 --> 00:47:49,050 Și apoi ei au fost ca, aceasta nu prea are sens. 1017 00:47:49,050 --> 00:47:52,210 Deci, ei doar nume it-- și a fost un acronim, 1018 00:47:52,210 --> 00:47:54,840 astfel încât acestea doar PHP si voi Preprocessor hipertext, care 1019 00:47:54,840 --> 00:47:55,980 are doar nici un sens. 1020 00:47:55,980 --> 00:47:57,714 Poveste Fun. 1021 00:47:57,714 --> 00:47:58,880 Este un limbaj de programare. 1022 00:47:58,880 --> 00:48:02,360 Deci, la fel de mult ca am subliniez că HTML nu este un limbaj de programare, 1023 00:48:02,360 --> 00:48:05,350 este un limbaj de marcare, PHP este un limbaj de programare. 1024 00:48:05,350 --> 00:48:07,422 Cum știi acest lucru este pentru că nu există logică. 1025 00:48:07,422 --> 00:48:08,380 Nu sunt condiționale. 1026 00:48:08,380 --> 00:48:12,750 Avem variabile, în timp ce noi au nimic din aceste lucruri în HTML. 1027 00:48:12,750 --> 00:48:16,960 >> Bine, atunci avem această mică bit aici e ca un gust de PHP. 1028 00:48:16,960 --> 00:48:20,510 Deci elementele de bază, nume de variabile începe cu un semn dolar. 1029 00:48:20,510 --> 00:48:21,500 O mulțime de oameni ca el. 1030 00:48:21,500 --> 00:48:22,371 Reamintește de noi bani. 1031 00:48:22,371 --> 00:48:22,995 Totul e minunat. 1032 00:48:22,995 --> 00:48:25,280 Cu toții ne dorim PHP. 1033 00:48:25,280 --> 00:48:28,020 Deci, noi nu specifica o mai tip variabile. 1034 00:48:28,020 --> 00:48:29,995 Se determină la momentul execuției. 1035 00:48:29,995 --> 00:48:32,710 1036 00:48:32,710 --> 00:48:35,890 Interpretul va fi ca, oh, vom alerga doar prin, 1037 00:48:35,890 --> 00:48:39,565 și în funcție de context, Vom vedea ce tipuri de tipuri de 1038 00:48:39,565 --> 00:48:41,560 aceste variabile trebuie să aibă. 1039 00:48:41,560 --> 00:48:42,815 Nu e nici o funcție principală. 1040 00:48:42,815 --> 00:48:43,690 Lucrurile se vor executa doar. 1041 00:48:43,690 --> 00:48:47,851 Voi cu import în ta Ultima stabilit-p, veți observa acest lucru. 1042 00:48:47,851 --> 00:48:49,350 Nu a fost într-adevăr o funcție principală. 1043 00:48:49,350 --> 00:48:52,070 Trebuie doar scris ceea ce ai vrut să se întâmple. 1044 00:48:52,070 --> 00:48:53,280 Și doar un fel de sa întâmplat. 1045 00:48:53,280 --> 00:48:56,760 Deci, asta e PHP pentru tine. 1046 00:48:56,760 --> 00:48:59,180 >> Arrays sunt foarte asemănătoare. 1047 00:48:59,180 --> 00:49:01,270 Mai avem această categorie de. 1048 00:49:01,270 --> 00:49:05,940 Aici, avem unele variabile numit ARR, și este egal 1049 00:49:05,940 --> 00:49:08,540 sa-- am obișnuit nostru Suport notație. 1050 00:49:08,540 --> 00:49:10,630 Și avem o anumită valoare cheie. 1051 00:49:10,630 --> 00:49:14,630 Și diferența mare între C și PHP matrice 1052 00:49:14,630 --> 00:49:19,330 este că putem avea această associate-- putem asocia valori de chei. 1053 00:49:19,330 --> 00:49:22,440 Deci, în loc de doar a avea o matrice care este indexată 1054 00:49:22,440 --> 00:49:26,630 de numărul sau poziția de acest element în matrice, 1055 00:49:26,630 --> 00:49:29,060 putem asocia, de fapt, cu o cheie. 1056 00:49:29,060 --> 00:49:36,700 Unde putem spune, OK, vreau orice Valoarea este asociată cu fructe. 1057 00:49:36,700 --> 00:49:39,280 Și poate că ne-am dus la fructe de banane. 1058 00:49:39,280 --> 00:49:41,760 Deci, ar reveni banane la noi. 1059 00:49:41,760 --> 00:49:44,100 >> Dar, practic, cel mai lucru puternic despre acest 1060 00:49:44,100 --> 00:49:47,960 este că, dacă voi aminti demo de curs unde practic 1061 00:49:47,960 --> 00:49:53,050 pronuntie reprogramat în PHP, și ea căutare was-- fost într-adevăr la fel ca, 1062 00:49:53,050 --> 00:49:55,007 nu există această cheie? 1063 00:49:55,007 --> 00:49:56,590 Asta e într-adevăr un fel de puterea de ea. 1064 00:49:56,590 --> 00:49:58,560 Nu aveți nevoie pentru a itera prin matrice ta. 1065 00:49:58,560 --> 00:50:00,311 Nu aveți nevoie să știți ce spațiu se află într. 1066 00:50:00,311 --> 00:50:01,976 Ar putea fi la sfârșitul sau la începutul. 1067 00:50:01,976 --> 00:50:04,790 Atâta timp cât știți cheie care este asociat cu valoarea, 1068 00:50:04,790 --> 00:50:09,740 PHP poate scuipa pur și simplu că valoarea înapoi chiar la tine, bine? 1069 00:50:09,740 --> 00:50:12,960 >> Și apoi, noi, de asemenea, doar Trebuie doar pentru că noi 1070 00:50:12,960 --> 00:50:16,750 poate avea perechi de valoare cheie nu înseamnă că trebuie să. 1071 00:50:16,750 --> 00:50:19,180 De asemenea, puteți crea o matrice normală ca aici, 1072 00:50:19,180 --> 00:50:21,540 în partea de jos, unde este doar unul, doi, trei, patru. 1073 00:50:21,540 --> 00:50:22,510 Acestea sunt valorile noastre. 1074 00:50:22,510 --> 00:50:25,320 Și, de fapt, cheile sunt indicii. 1075 00:50:25,320 --> 00:50:26,830 Deci, cheia pentru o ar fi zero. 1076 00:50:26,830 --> 00:50:28,610 Cheia pentru doi ar fi una. 1077 00:50:28,610 --> 00:50:31,910 Deci, pe și așa mai departe, cu excepția cazului în să alocați în mod explicit o cheie, 1078 00:50:31,910 --> 00:50:34,630 ai putea presupune că Valoarea este doar indicele lor. 1079 00:50:34,630 --> 00:50:37,290 Asta face sens pentru toată lumea? 1080 00:50:37,290 --> 00:50:38,070 Nu întrebări? 1081 00:50:38,070 --> 00:50:38,930 Minunat. 1082 00:50:38,930 --> 00:50:44,420 >> OK, foreach este o modalitate de a repeta prin matrice tale. 1083 00:50:44,420 --> 00:50:47,490 Deci avem ceva aici, doar structura generală. 1084 00:50:47,490 --> 00:50:51,020 Deci foreach, numele oferta noastră, ca orice 1085 00:50:51,020 --> 00:50:53,930 doriți să apelați fiecare elementul în matrice ta, 1086 00:50:53,930 --> 00:50:57,270 și putem face ceva cu acel element sau cu valoare. 1087 00:50:57,270 --> 00:50:58,680 Deci avem un exemplu aici. 1088 00:50:58,680 --> 00:51:05,770 Avem un asociativ matrice cu aceste două intrări 1089 00:51:05,770 --> 00:51:10,080 cu bar fiind asociat cu foo și QUX fiind asociat cu Baz. 1090 00:51:10,080 --> 00:51:12,180 Deci, cheile sunt foo și Baz. 1091 00:51:12,180 --> 00:51:13,650 Valorile sunt bar și QUX. 1092 00:51:13,650 --> 00:51:18,560 Deci foreach, avem oferta noastră aici, ca și perechea valoare-cheie. 1093 00:51:18,560 --> 00:51:21,560 Acest lucru ne permite accesul atât cheia și valoarea. 1094 00:51:21,560 --> 00:51:23,680 Poate vrei doar valoare, caz în care 1095 00:51:23,680 --> 00:51:27,640 ai putea face la fel ca arr de la $ valoare, iar apoi 1096 00:51:27,640 --> 00:51:30,640 sunt doar accesarea valoarea în timp ce repeta prin. 1097 00:51:30,640 --> 00:51:32,600 Dar poate, pentru unii motiv, vrei cheia, 1098 00:51:32,600 --> 00:51:35,460 care este motivul pentru care am ales acest exemplu în schimb. 1099 00:51:35,460 --> 00:51:40,240 Astfel, puteți manipula de fapt cheie și valoare în acest caz. 1100 00:51:40,240 --> 00:51:41,070 OK? 1101 00:51:41,070 --> 00:51:41,905 Întrebare? 1102 00:51:41,905 --> 00:51:44,279 >> Audiența: Dacă ați fi dorit să manipula doar cheia, ar 1103 00:51:44,279 --> 00:51:45,910 ce trebuie sa faci foreach-- 1104 00:51:45,910 --> 00:51:47,360 >> ALISON: Corect. 1105 00:51:47,360 --> 00:51:50,560 Deci, dacă ai vrut să manipula doar cheia, 1106 00:51:50,560 --> 00:51:53,680 v-ar trebui în continuare acest Sintaxa pentru că dacă tocmai ați 1107 00:51:53,680 --> 00:51:56,930 au ARR ca ceva, ca un singur lucru, e 1108 00:51:56,930 --> 00:52:00,070 gând să-și asume vrei valoarea, nu cheia. 1109 00:52:00,070 --> 00:52:06,780 Deci, dacă vreodată trebuie doar ca ARR ca, poate că acest lucru este ca $ element 1110 00:52:06,780 --> 00:52:11,670 este de gând să se presupună că mă întrebi pentru doar valoarea la fiecare punct. 1111 00:52:11,670 --> 00:52:13,879 Dacă doriți în mod explicit să face ceva cu cheia, 1112 00:52:13,879 --> 00:52:16,170 chiar dacă nu sunteți de gând să face nimic cu valoarea, 1113 00:52:16,170 --> 00:52:18,430 aveți nevoie de această structură că avem aici 1114 00:52:18,430 --> 00:52:22,330 în cazul în care ceri explicit atât cheia și valoarea. 1115 00:52:22,330 --> 00:52:24,170 Marea întrebare. 1116 00:52:24,170 --> 00:52:25,940 Altceva? 1117 00:52:25,940 --> 00:52:27,490 Se răcește. 1118 00:52:27,490 --> 00:52:29,911 >> Bine, PHP și HTML. 1119 00:52:29,911 --> 00:52:31,410 Oh, ne-am întors la șapte din nou set-p. 1120 00:52:31,410 --> 00:52:35,380 Deci, aceasta ar trebui să arate un pic familiar. 1121 00:52:35,380 --> 00:52:41,760 Deci, aceasta este o formă HTML simplu care are unele nume de intrare a salut. 1122 00:52:41,760 --> 00:52:43,820 Și vom vedea, avem metoda noastră de GET. 1123 00:52:43,820 --> 00:52:47,430 Și dacă ne amintim de nostru p-set, când se prezintă această formă, 1124 00:52:47,430 --> 00:52:58,130 trimite un tablou numit $ _GET care are toate aceste intrări sau variabile de la 1125 00:52:58,130 --> 00:53:00,490 forma pe care ar trebui să fie manipulat în PHP noastră. 1126 00:53:00,490 --> 00:53:03,320 Deci, în acest caz, utilizatorul ar pune în numele lor. 1127 00:53:03,320 --> 00:53:04,370 Ei îl prezintă. 1128 00:53:04,370 --> 00:53:07,810 Și vom vedea că vom lua niște matrice aici. 1129 00:53:07,810 --> 00:53:09,080 Avem oferta noastră GET. 1130 00:53:09,080 --> 00:53:11,510 Și noi suntem accesarea numele. 1131 00:53:11,510 --> 00:53:15,070 >> Așa că spune, OK, da-mi Valoarea care este asociat cu numele, 1132 00:53:15,070 --> 00:53:16,550 numele fiind cheia aici. 1133 00:53:16,550 --> 00:53:21,400 Și asta harti direct la ceea ce am spus numele nostru de intrare este. 1134 00:53:21,400 --> 00:53:28,960 Deci, acest lucru a fost oferindu-vă cheia ce va fi în matrice aici. 1135 00:53:28,960 --> 00:53:31,220 Asta face sens pentru toată lumea? 1136 00:53:31,220 --> 00:53:32,070 Da? 1137 00:53:32,070 --> 00:53:36,240 >> Audiența: Are denumirea de la GET referă la linia de purpuriu în [inaudibil]? 1138 00:53:36,240 --> 00:53:37,740 >> ALISON: se referă la acest aici. 1139 00:53:37,740 --> 00:53:43,840 Deci, acest domeniu aici, se referă la acest nume aici. 1140 00:53:43,840 --> 00:53:47,800 Deci, aceasta ar fi putut fi numit cum ar fi numărul de telefon, sau orice altceva. 1141 00:53:47,800 --> 00:53:51,790 Acest nume spune de fapt, ceea ce suni acest domeniu? 1142 00:53:51,790 --> 00:53:53,600 Cum ai de gând să se referă la acest domeniu? 1143 00:53:53,600 --> 00:53:57,670 Iar acest nume este ca, de fapt, noi suntem spune acest domeniu se numește nume. 1144 00:53:57,670 --> 00:53:59,224 Așa vom accesa. 1145 00:53:59,224 --> 00:54:02,070 >> Audiența: Deci este place, Numele de intrare este egal cu Bob, si-- 1146 00:54:02,070 --> 00:54:04,380 >> ALISON: dreapta, apoi ar ajunge Bob acolo jos. 1147 00:54:04,380 --> 00:54:06,090 Exact. 1148 00:54:06,090 --> 00:54:07,800 Toată lumea rece? 1149 00:54:07,800 --> 00:54:10,990 Bine, deci GET față de POST, acestea sunt cele două moduri principale 1150 00:54:10,990 --> 00:54:14,880 că trecem datele într-o cerere HTTP. 1151 00:54:14,880 --> 00:54:17,370 Voi ar trebui să fi văzut ambele aceste sperăm. 1152 00:54:17,370 --> 00:54:20,940 Deci, cu GET, informațiile este trecut prin URL-ul. 1153 00:54:20,940 --> 00:54:23,490 Deci, dacă faci vreodată Google căutări, YouTube, veți 1154 00:54:23,490 --> 00:54:25,130 probabil observa unele semn de întrebare. 1155 00:54:25,130 --> 00:54:28,230 Și apoi, toate cuvintele care tocmai ai pus acolo. 1156 00:54:28,230 --> 00:54:31,410 Și POST trece datele în corpul mesajului HTTP. 1157 00:54:31,410 --> 00:54:36,922 Deci, spre deosebire de GET, tu un fel de ia în considerare că datele sunt ascunse utilizatorului. 1158 00:54:36,922 --> 00:54:38,630 Dar ceea ce este cu adevărat important să se înțeleagă 1159 00:54:38,630 --> 00:54:44,040 este că aceasta este încă la fel de nesigur ca și GET. 1160 00:54:44,040 --> 00:54:48,780 Analogia Imi place sa folosesc este dacă aveți numărul de cont bancar 1161 00:54:48,780 --> 00:54:52,795 și îl scrie pe partea exterioară a un plic, care este destul de periculos. 1162 00:54:52,795 --> 00:54:55,920 Dacă ar fi să-l scrie pe o bucată de hârtie și pune-l în interiorul plicului, 1163 00:54:55,920 --> 00:54:58,850 este încă într-adevăr periculos pentru că tot ce trebuie să faci este să deschizi sus 1164 00:54:58,850 --> 00:55:03,480 si uita-te la conținutul real mesajului a vedea că. 1165 00:55:03,480 --> 00:55:08,310 Deci, aceasta este "ascuns", și oameni ca să Cred că e sigur, dar nu e adevărat. 1166 00:55:08,310 --> 00:55:11,000 Și sunt sigur că va fi Davin ajunge în faptul că mai mult, poate. 1167 00:55:11,000 --> 00:55:12,850 Dar este un important distincție pentru a face 1168 00:55:12,850 --> 00:55:15,820 și ceva cu adevarat bun pentru a înțelege. 1169 00:55:15,820 --> 00:55:19,220 >> OK, SQL, Structured Query Language. 1170 00:55:19,220 --> 00:55:22,220 Toate lucrurile care am văzut atât de recent! 1171 00:55:22,220 --> 00:55:25,400 Deci, este de fapt doar proiectat, evident, pentru gestionarea datelor. 1172 00:55:25,400 --> 00:55:30,560 Ați avut o mulțime de experiență cu acest lucru în tabelele dvs. cu PHP MyAdmin. 1173 00:55:30,560 --> 00:55:34,100 Și există patru întrebări comune pe care ne-o dorim voi să știți. 1174 00:55:34,100 --> 00:55:37,304 Deci, nu e de actualizare, se introduce, selectați, și șterge. 1175 00:55:37,304 --> 00:55:38,970 Deci, asigurați-vă că știți pe cei foarte bine. 1176 00:55:38,970 --> 00:55:40,960 Vom merge prin ele foarte repede. 1177 00:55:40,960 --> 00:55:44,340 >> Deci actualizare, într-adevăr, ca ceea ce s-ar putea crede o face, 1178 00:55:44,340 --> 00:55:46,740 se actualizează doar datele din baza de date. 1179 00:55:46,740 --> 00:55:48,750 Deci avem niște exemplu aici. 1180 00:55:48,750 --> 00:55:53,310 Acesta este generalul Structura de o interogare de actualizare. 1181 00:55:53,310 --> 00:55:56,150 Așa că am actualizeze tabelul că vorbim despre. 1182 00:55:56,150 --> 00:56:00,520 Și vrem să setați anumite valori, anumite coloane 1183 00:56:00,520 --> 00:56:02,600 egale cu valorile specifice. 1184 00:56:02,600 --> 00:56:07,500 Deci, aceasta actualizează doar masa, schimbarea valori în toate rândurile, în acest caz. 1185 00:56:07,500 --> 00:56:13,690 Deci, în acest unul aici, un real exemplu, avem insert-- pare rău. 1186 00:56:13,690 --> 00:56:17,630 Acest diapozitiv avansat fără să mă dea seama. 1187 00:56:17,630 --> 00:56:22,230 >> Deci, acest tabel noutati stabilit col1 egal a VAL1 unde casa este egal cu "Currier." 1188 00:56:22,230 --> 00:56:25,300 Ce este acest lucru o face este se schimbă doar, ea doar 1189 00:56:25,300 --> 00:56:28,130 actualizează aceste valori în anumite locuri. 1190 00:56:28,130 --> 00:56:32,300 Deci, în această primă parte, se schimbă acestea Valorile pentru tot ceea ce în masă, 1191 00:56:32,300 --> 00:56:32,860 OK? 1192 00:56:32,860 --> 00:56:35,820 Se va schimba această coloană pentru fiecare intrare, 1193 00:56:35,820 --> 00:56:37,020 pentru fiecare rând singur. 1194 00:56:37,020 --> 00:56:40,840 Dar în cazul în care, ai putea cred că de ea ca un calificativ. 1195 00:56:40,840 --> 00:56:44,020 Deci se doar de gând să se schimbe se în locuri foarte specifice. 1196 00:56:44,020 --> 00:56:47,840 Deci, în șapte, când setați p- poate actualizat suma de bani 1197 00:56:47,840 --> 00:56:53,050 care utilizator ta a avut, probabil ai avut unii unde ID este egal cu ID-ul de sesiune, nu? 1198 00:56:53,050 --> 00:56:55,280 >> Pentru că nu a vrut să schimba cantitatea de bani 1199 00:56:55,280 --> 00:56:57,630 pentru fiecare persoană care folosea site-ul tau. 1200 00:56:57,630 --> 00:57:00,480 Ai vrut să-l schimbe pentru un anumită persoană, acea persoană fiind 1201 00:57:00,480 --> 00:57:02,410 oricine a fost folosind-o la acel moment. 1202 00:57:02,410 --> 00:57:04,320 Chiar? 1203 00:57:04,320 --> 00:57:07,510 OK, deci introduce, inserați anumite valori în tabele. 1204 00:57:07,510 --> 00:57:11,650 Acest lucru este ca atunci cand esti crearea unui utilizator de brand nou. 1205 00:57:11,650 --> 00:57:14,240 Structura generală aici este insera în orice masă 1206 00:57:14,240 --> 00:57:15,680 vorbim despre. 1207 00:57:15,680 --> 00:57:18,910 Valorile, fiind valorile care suntem de fapt vrea să inserați. 1208 00:57:18,910 --> 00:57:23,060 OK, deci cum vom vedea aici, ne-am au insera în tabel. 1209 00:57:23,060 --> 00:57:27,790 Acest lucru este cu coloane specifice valorile lor corespundeau. 1210 00:57:27,790 --> 00:57:29,940 Deci spune, inserați un rând nou care conține 1211 00:57:29,940 --> 00:57:33,660 Valorile VAL1 și VAL2 în aceste coloane specifice. 1212 00:57:33,660 --> 00:57:39,240 >> Deci, poate vrei doar pentru a umple nici jumătate din lucrurile din acest rând. 1213 00:57:39,240 --> 00:57:41,150 Asta e ceea ce aici vă permite această parte să faci. 1214 00:57:41,150 --> 00:57:43,280 Acesta vă permite să efectiv determina care parte. 1215 00:57:43,280 --> 00:57:44,244 Da? 1216 00:57:44,244 --> 00:57:52,150 >> Audiența: Poate tu doar [inaudibil] celulele din rândul [inaudibil]? 1217 00:57:52,150 --> 00:57:55,000 >> ALISON: Dacă veți completa numai în anumite părți ale rând dumneavoastră, 1218 00:57:55,000 --> 00:57:57,480 restul de aceste celule sunt doar goale. 1219 00:57:57,480 --> 00:58:02,730 1220 00:58:02,730 --> 00:58:05,660 Atâta timp cât le permite să fie gol, nu este o problemă. 1221 00:58:05,660 --> 00:58:09,570 Dacă încercați să le accesați, este O să se întoarcă un element gol. 1222 00:58:09,570 --> 00:58:13,850 Dar este important să știți că, în anumite tabele, 1223 00:58:13,850 --> 00:58:16,690 Ei trebuie să li se permită să fie nul. 1224 00:58:16,690 --> 00:58:18,890 Este posibil să fi executați într-o problemă în timpul dumneavoastră p-set 1225 00:58:18,890 --> 00:58:21,320 pentru că nu am lăsa nici o de valorile să fie nul. 1226 00:58:21,320 --> 00:58:26,110 Dar puteți specifica o Valoarea opțional în tabelul dumneavoastră. 1227 00:58:26,110 --> 00:58:29,640 >> OK, selectați, astfel încât acesta este doar o modalitate de a obține 1228 00:58:29,640 --> 00:58:33,790 date specifice de la o masă la unii identificator care doriți. 1229 00:58:33,790 --> 00:58:37,990 Deci, selectați stea la masă în cazul în care col este egal cu ceva înseamnă doar, 1230 00:58:37,990 --> 00:58:43,820 da-mi toate datele asociate în cazul în care această coloană specific este adevărat. 1231 00:58:43,820 --> 00:58:49,020 Astfel, steaua în acest caz se va reveni întregul rând pentru tine, bine? 1232 00:58:49,020 --> 00:58:54,880 >> Și apoi, în acest caz, selectați stea din tabel doar vă oferă întregul tabel. 1233 00:58:54,880 --> 00:58:58,940 Și apoi, ștergeți evident, doar șterge rândul din tabel. 1234 00:58:58,940 --> 00:59:01,320 Deci, șterge de la masă, indiferent de masă suntem 1235 00:59:01,320 --> 00:59:06,830 referire, în cazul în care unele specifice identificator sau o condiție este adevărată. 1236 00:59:06,830 --> 00:59:07,720 Da? 1237 00:59:07,720 --> 00:59:08,700 >> Audiența: Întrebarea nr. 1238 00:59:08,700 --> 00:59:10,699 De ce sunt utilizați dublu citate, și dacă 1239 00:59:10,699 --> 00:59:13,600 face ghilimele duble sau singur citate, nu-l face o diferență? 1240 00:59:13,600 --> 00:59:18,235 >> ALISON: citate duble sau ghilimele simple nu face o diferență în SQL. 1241 00:59:18,235 --> 00:59:19,610 Am crezut că am văzut o altă întrebare. 1242 00:59:19,610 --> 00:59:20,814 Da? 1243 00:59:20,814 --> 00:59:25,070 >> Audiența: Nu afecta ceea ce se scăpat de interogare? 1244 00:59:25,070 --> 00:59:27,945 >> ALISON: Rob? 1245 00:59:27,945 --> 00:59:31,410 >> ROB: Ce vrei să spui prin scăpat de interogare? 1246 00:59:31,410 --> 00:59:36,870 >> Audiența: Dacă cineva are o interogare singur în forma de-- 1247 00:59:36,870 --> 00:59:39,862 >> ROB: Dacă cineva ar pune o singură ofertă de la, 1248 00:59:39,862 --> 00:59:43,560 apoi atâta timp cât ești de dezinfectare dvs. de intrare, atunci nu contează. 1249 00:59:43,560 --> 00:59:46,205 Dar, dacă utilizați un singur citat și ești incorect 1250 00:59:46,205 --> 00:59:47,914 scăpa intrări tale, atunci da, de care au nevoie 1251 00:59:47,914 --> 00:59:51,079 pentru a pune un singur citat în scopul de a sparge codul. dacă utilizați ghilimele, 1252 00:59:51,079 --> 00:59:53,580 au nevoie pentru a pune un dublu citez pentru a rupe codul. 1253 00:59:53,580 --> 00:59:56,163 Dar, atâta timp cât să scape lucrurile corect, nu contează. 1254 00:59:56,163 --> 00:59:59,220 E doar de gând să fie tradus pentru simbolul corect oricum. 1255 00:59:59,220 --> 01:00:02,332 >> Audiența: Ce înseamnă evadare înseamnă? 1256 01:00:02,332 --> 01:00:04,040 ALISON: Ei bine, cum ar fi dezinfectare și de evacuare. 1257 01:00:04,040 --> 01:00:06,810 1258 01:00:06,810 --> 01:00:13,820 Examenul pe care o avem, marele xkcd comic pe care le trage în sus în cazul în care aveți, 1259 01:00:13,820 --> 01:00:15,629 oh-- 1260 01:00:15,629 --> 01:00:16,670 ROB: E ultimul diapozitiv. 1261 01:00:16,670 --> 01:00:18,500 ALISON: E ultimul diapozitiv, într-adevăr? 1262 01:00:18,500 --> 01:00:20,200 Oh, Doamne. 1263 01:00:20,200 --> 01:00:21,780 Acolo mergem, perfect. 1264 01:00:21,780 --> 01:00:27,900 OK, deci, practic, vă puteți injecta ceva în această interogare SQL 1265 01:00:27,900 --> 01:00:30,560 în cazul în care se rupe ta cod, sau ca David a arătat 1266 01:00:30,560 --> 01:00:38,460 în clasă, dacă avem ceva unic citat 1 este egal cu 1 și dacă în codul nostru, 1267 01:00:38,460 --> 01:00:41,230 ne-am copia direct că în, și avem o ofertă unică se încheie, 1268 01:00:41,230 --> 01:00:44,740 ceea ce se întâmplă este ne unele expresie 1269 01:00:44,740 --> 01:00:48,680 evaluează la adevărat că va lăsa pe cineva să introduceți baza noastra de date 1270 01:00:48,680 --> 01:00:51,720 și obține date pe care le Nu vreau ca ei să minim. 1271 01:00:51,720 --> 01:00:54,240 Deci, igienizarea intrările doar înseamnă a asigura 1272 01:00:54,240 --> 01:00:57,680 ca suntem scapă acestea de caractere și de desemnare a le 1273 01:00:57,680 --> 01:01:01,720 ca caractere și nu lucruri care trebuie permisă 1274 01:01:01,720 --> 01:01:04,990 trebuie luat literal ca declarație nostru SQL. 1275 01:01:04,990 --> 01:01:09,980 >> Deci, mare lucru pe care am spus că voi ar trebui să fie folosind 1276 01:01:09,980 --> 01:01:13,650 au fost caractere speciale HTML, care este ceva 1277 01:01:13,650 --> 01:01:15,730 care v-ar dori să aruncăm o privire la. 1278 01:01:15,730 --> 01:01:17,240 OK, șterge. 1279 01:01:17,240 --> 01:01:19,450 Tipuri de date, aceasta va fi tot on-line. 1280 01:01:19,450 --> 01:01:23,510 Din moment ce am 15 minute la stânga, eu sunt doar de gând să meargă chiar prin aceasta. 1281 01:01:23,510 --> 01:01:28,500 PHP și SQL, practic acest lucru este tocmai am avut o funcție de interogare care 1282 01:01:28,500 --> 01:01:31,520 ajutat proteja împotriva aceste atacuri malware. 1283 01:01:31,520 --> 01:01:33,970 Deci, ori de câte ori utilizați interogare, am fost asigurându-vă 1284 01:01:33,970 --> 01:01:36,560 că lucrurile au fost curățate și fleacuri. 1285 01:01:36,560 --> 01:01:41,070 >> MVC este doar o paradigmă de proiectare, astfel de model, vedere, controlor. 1286 01:01:41,070 --> 01:01:44,200 E doar o modalitate de a ține lucrurile frumos și împărțit în același fel 1287 01:01:44,200 --> 01:01:47,100 că avem tendința să factorul Codul afară, în funcții. 1288 01:01:47,100 --> 01:01:53,390 Acesta este doar un cadru de web design care vă permite să facă același lucru. 1289 01:01:53,390 --> 01:01:54,760 Am de gând să săriți peste asta. 1290 01:01:54,760 --> 01:01:58,530 >> Acest lucru este ceva ce eu ar fi super confortabil cu. 1291 01:01:58,530 --> 01:02:01,132 Este un tabel mare mic acolo. 1292 01:02:01,132 --> 01:02:03,090 Acesta vă oferă funcția exemplu a modelului. 1293 01:02:03,090 --> 01:02:05,473 Mă duc prin asta pentru că am doresc cu adevărat să Davin putea vorbi. 1294 01:02:05,473 --> 01:02:07,140 Dacă aveți întrebări, vă rog să nu ezitați. 1295 01:02:07,140 --> 01:02:07,931 Voi fi aici după. 1296 01:02:07,931 --> 01:02:10,360 Doar vin să vorbească cu mine. 1297 01:02:10,360 --> 01:02:13,380 Cu aceasta, avem stări HTTP. 1298 01:02:13,380 --> 01:02:16,270 Și de Davin de gând să arunce în aer prin aceasta în 15 minute. 1299 01:02:16,270 --> 01:02:17,560 Acest lucru va fi mare. 1300 01:02:17,560 --> 01:02:18,893 >> Davin: OK. 1301 01:02:18,893 --> 01:02:20,312 Uh, mic tău? 1302 01:02:20,312 --> 01:02:22,210 Da. 1303 01:02:22,210 --> 01:02:23,336 Scuze. 1304 01:02:23,336 --> 01:02:24,460 ALISON: cale de a fi pregătit. 1305 01:02:24,460 --> 01:02:25,335 Davin: Nu, eu sunt gata. 1306 01:02:25,335 --> 01:02:25,860 Sunt gata. 1307 01:02:25,860 --> 01:02:28,790 Hai să facem acest lucru. 1308 01:02:28,790 --> 01:02:29,290 E gata. 1309 01:02:29,290 --> 01:02:30,041 OK. 1310 01:02:30,041 --> 01:02:30,540 Scuze. 1311 01:02:30,540 --> 01:02:31,664 Am vărsat cafea pe mine. 1312 01:02:31,664 --> 01:02:36,037 1313 01:02:36,037 --> 01:02:38,210 Nu știu dacă am mai mult supărat că mă uit prost, 1314 01:02:38,210 --> 01:02:40,600 sau că nu mai au cafea. 1315 01:02:40,600 --> 01:02:44,480 Oricum, doar o anunț rapidă despre foaia voi avea. 1316 01:02:44,480 --> 01:02:47,994 Deci, aceasta foaie voi avea nu este funcționarul ceea ce este pe testul. 1317 01:02:47,994 --> 01:02:49,660 Aceasta este oficial ceea ce este pe testul. 1318 01:02:49,660 --> 01:02:52,520 De asemenea, pe site-ul, spunem tu, OK, acest lucru va fi pe testul. 1319 01:02:52,520 --> 01:02:55,020 Astfel, în foaia de ieftin mic ai, nu oficial. 1320 01:02:55,020 --> 01:02:56,690 Și acolo sunt greseli pe ea. 1321 01:02:56,690 --> 01:03:01,490 Deci, mai bine să nu doar orbește-l folosească. 1322 01:03:01,490 --> 01:03:04,390 Deci da, asta e. 1323 01:03:04,390 --> 01:03:05,980 Așa că haideți să intre în acest rapid adevărat. 1324 01:03:05,980 --> 01:03:07,420 >> Deci Stările HTTP. 1325 01:03:07,420 --> 01:03:10,430 Deci, ce se întâmplă când site-ul, totul este în regulă. 1326 01:03:10,430 --> 01:03:11,144 Totul e în regulă. 1327 01:03:11,144 --> 01:03:13,310 Totul se întoarce la vă modul în care doriți să-l. 1328 01:03:13,310 --> 01:03:15,370 Ai o 200 OK. 1329 01:03:15,370 --> 01:03:19,250 301, unde am văzut că 301 înainte? 1330 01:03:19,250 --> 01:03:20,890 Stai, ce sa întâmplat? 1331 01:03:20,890 --> 01:03:23,250 Scuze. 1332 01:03:23,250 --> 01:03:24,980 Am văzut staniu prelegere i în timpul securitate. 1333 01:03:24,980 --> 01:03:30,690 Deci în timpul securitate, deci, dacă David tastat http și apoi a încercat să meargă la cs50.net, 1334 01:03:30,690 --> 01:03:31,940 veti vedea 301 mutat. 1335 01:03:31,940 --> 01:03:32,440 De ce? 1336 01:03:32,440 --> 01:03:35,570 Pentru că o să redirecționeze vă automat la HTTPS nostru. 1337 01:03:35,570 --> 01:03:38,649 >> Deci 301 mutat, doar e de fapt o redirecționare. 1338 01:03:38,649 --> 01:03:40,190 Și vă puteți gândi la asta ca aceasta. 1339 01:03:40,190 --> 01:03:43,790 Oricare dintre stările care încep cu 2, acestea sunt ca, bine, totul e în regulă. 1340 01:03:43,790 --> 01:03:46,530 Oricare dintre stările care încep cu 3, acestea sunt redirecționarea. 1341 01:03:46,530 --> 01:03:49,571 Stările care încep cu 4, că mijloacele e un fel de eroare client. 1342 01:03:49,571 --> 01:03:52,440 Stările care încep cu 5, asta e un fel de erori de server. 1343 01:03:52,440 --> 01:03:54,680 Deci un fel de pauză în sus stările de genul asta. 1344 01:03:54,680 --> 01:03:59,120 Deci, 304 nu nemodificate, astfel încât în ​​ta server.c p-seturi, Să spui 1345 01:03:59,120 --> 01:04:00,600 cat.html încărcat. 1346 01:04:00,600 --> 01:04:03,360 Totul se întoarce, te 200s, OK, mare. 1347 01:04:03,360 --> 01:04:04,540 >> Să spunem că-l odihnit. 1348 01:04:04,540 --> 01:04:07,310 Ei bine, în interiorul că cat.html, ai un JPEG. 1349 01:04:07,310 --> 01:04:09,520 Ei bine, asta JPEG nu este mergi la a lua reloaded. 1350 01:04:09,520 --> 01:04:12,140 Nu vei a posta un alt GET cerere la server, 1351 01:04:12,140 --> 01:04:13,980 și apoi a lua toate aceste informații înapoi. 1352 01:04:13,980 --> 01:04:17,560 Va be-- doar că imaginea este va fi în cache pe mașina dumneavoastră. 1353 01:04:17,560 --> 01:04:19,540 Și astfel încât imaginea va fi un 304. 1354 01:04:19,540 --> 01:04:20,720 Deci, nu a fost modificată. 1355 01:04:20,720 --> 01:04:24,600 Dacă apoi închide, clar cookie-uri, și apoi reîmprospătați 1356 01:04:24,600 --> 01:04:27,490 și să încerce să încarce pagina din nou, veti vedea 200s. 1357 01:04:27,490 --> 01:04:28,910 Nu vei vedea că 304. 1358 01:04:28,910 --> 01:04:32,340 >> 400, cerere rău, reale rapid, cum ar fi dacă ați 1359 01:04:32,340 --> 01:04:34,880 au de gând să trimită un JSON obiect la server 1360 01:04:34,880 --> 01:04:38,090 și obiect ta JSON a fost incorect, veți vedea ceva de genul asta. 1361 01:04:38,090 --> 01:04:39,000 403, interzis. 1362 01:04:39,000 --> 01:04:40,330 Când ați vedea un interzisa? 1363 01:04:40,330 --> 01:04:41,394 Probabil Probabil? 1364 01:04:41,394 --> 01:04:42,060 Audiența: chmod. 1365 01:04:42,060 --> 01:04:42,950 Davin: chmod, da. 1366 01:04:42,950 --> 01:04:44,730 Deci nu ați setat permisiuni corect. 1367 01:04:44,730 --> 01:04:45,577 404, nu a fost găsit. 1368 01:04:45,577 --> 01:04:46,410 E doar nu acolo. 1369 01:04:46,410 --> 01:04:48,670 Deci, dacă tastați în URL-ul greșit. 1370 01:04:48,670 --> 01:04:53,500 500, eroare de server intern, serverul probabil nu a fost configurat corect. 1371 01:04:53,500 --> 01:04:56,260 Ceva nu pe scop, dar ceva pe partea de server. 1372 01:04:56,260 --> 01:04:57,240 Și 503? 1373 01:04:57,240 --> 01:04:59,502 O mulțime de oameni au văzut 503s în ultimul p-set. 1374 01:04:59,502 --> 01:05:00,460 Când se va întâmpla asta? 1375 01:05:00,460 --> 01:05:04,180 1376 01:05:04,180 --> 01:05:05,660 Am auzit șoapte. 1377 01:05:05,660 --> 01:05:07,767 >> Audiența: Când Google decide că ești un robot. 1378 01:05:07,767 --> 01:05:10,350 Davin: Da, atunci când Google decide esti un robot, te 503s. 1379 01:05:10,350 --> 01:05:11,560 Deci asta e un suprasarcină. 1380 01:05:11,560 --> 01:05:14,620 Dacă ați solicitat de la serverul prea mult, e de obicei temporar. 1381 01:05:14,620 --> 01:05:15,560 Și de cele mai multe ai observat. 1382 01:05:15,560 --> 01:05:16,185 Deci ai văzut 503. 1383 01:05:16,185 --> 01:05:19,282 Este posibil să fi luat un pic pauză, apoi 503s plecat, 1384 01:05:19,282 --> 01:05:20,490 si totul a fost în regulă. 1385 01:05:20,490 --> 01:05:26,640 >> Gabe: Real rapid, când nu voi primi 500 în, probabil, stabilit această ultimă problemă? 1386 01:05:26,640 --> 01:05:27,954 Da? 1387 01:05:27,954 --> 01:05:30,906 >> Audiența: De obicei, în cazul în care server are un dosar pierdut 1388 01:05:30,906 --> 01:05:34,650 sau [inaudibil] lor mașină [neauzit]. 1389 01:05:34,650 --> 01:05:38,870 >> Gabe: Deci, ar putea fi o configurație discuție în PHP pe server. 1390 01:05:38,870 --> 01:05:42,250 Dar ar putea fi doar ceva ca un punct și virgulă care dumneavoastră ați uitat. 1391 01:05:42,250 --> 01:05:44,130 Dacă sunteți tastarea PHP, unele sintaxă incorectă 1392 01:05:44,130 --> 01:05:46,000 s-ar putea să obțineți ceva de genul asta. 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 Vrei să fac doar până AJAX? 1396 01:05:51,180 --> 01:05:52,950 >> Gabe: [neauzit]. 1397 01:05:52,950 --> 01:05:53,450 Davin: OK. 1398 01:05:53,450 --> 01:05:54,230 Deci, care este DOM? 1399 01:05:54,230 --> 01:05:55,290 Ce înseamnă DOM pentru? 1400 01:05:55,290 --> 01:05:56,990 >> Audiența: modelul de obiect Document. 1401 01:05:56,990 --> 01:05:57,490 Davin: Nisa. 1402 01:05:57,490 --> 01:06:00,775 Și de ce nu ne place? 1403 01:06:00,775 --> 01:06:02,670 Minunat. 1404 01:06:02,670 --> 01:06:06,651 Corect, așa că doar ne permite accesul HTML, accesați pagina noastră foarte repede. 1405 01:06:06,651 --> 01:06:07,150 De ce? 1406 01:06:07,150 --> 01:06:09,980 Pentru ca suntem tratarea nostru pagină, tratarea tag-uri HTML, 1407 01:06:09,980 --> 01:06:11,730 tratare tot ca și în cazul în care acestea sunt obiecte. 1408 01:06:11,730 --> 01:06:13,710 Dacă ne trateze ca și cum ei sunt obiecte, atunci ce putem face? 1409 01:06:13,710 --> 01:06:15,210 Ei bine, putem apela funcțiile in ele. 1410 01:06:15,210 --> 01:06:16,460 Și acest lucru este important de ce? 1411 01:06:16,460 --> 01:06:19,200 Ei bine, pentru că am de gând să utilizeze JavaScript pentru a actualiza HTML nostru, 1412 01:06:19,200 --> 01:06:20,500 actualiza aceste obiecte. 1413 01:06:20,500 --> 01:06:23,869 Deci, dacă le tratezi ca pe obiecte, putem apela apoi funcțiile in ele. 1414 01:06:23,869 --> 01:06:26,660 Mă duc să intru în această un pic mai mult când mă duc în JavaScript, 1415 01:06:26,660 --> 01:06:30,510 dar ai văzut pe toate ca document.getElementById. 1416 01:06:30,510 --> 01:06:32,870 Deci, documentul dumneavoastră este Element, pentru a primi elementul de identitate, 1417 01:06:32,870 --> 01:06:35,087 deci ai de gând să te uiți pentru a putea ID într-o etichetă HTML. 1418 01:06:35,087 --> 01:06:36,920 Și apoi, poți să faci altceva de lucru. 1419 01:06:36,920 --> 01:06:40,089 De exemplu, cum ar fi document.body, atunci puteți adăuga copil. 1420 01:06:40,089 --> 01:06:41,630 Deci, ai de gând să găsească documentul. 1421 01:06:41,630 --> 01:06:42,340 Ai documentul. 1422 01:06:42,340 --> 01:06:43,629 Vei găsi corpul. 1423 01:06:43,629 --> 01:06:44,420 Ai găsit cadavrul. 1424 01:06:44,420 --> 01:06:46,545 Și apoi, ai de gând să apel o anumită funcție pe ea. 1425 01:06:46,545 --> 01:06:50,312 Deci adăugați copil, și puteți adăuga unele HTML pe la sfârșitul interiorul corpului. 1426 01:06:50,312 --> 01:06:52,520 Deci, practic, tu ești doar tratand-o ca pe un obiect. 1427 01:06:52,520 --> 01:06:54,515 Ești tratarea HTML Tag-uri, cum ar fi un obiect. 1428 01:06:54,515 --> 01:06:57,071 Și ea face foarte ușor și rapid pentru a merge prin ele. 1429 01:06:57,071 --> 01:06:59,070 Dar de asemenea, vă permite pentru a apela funcțiile in ele 1430 01:06:59,070 --> 01:07:04,410 astfel încât să puteți manipula și de a schimba elementele. 1431 01:07:04,410 --> 01:07:10,162 >> Gabe: Având în vedere acest lucru, de ce este JavaScript astfel de un limbaj frumos pentru a interacționa cu HTML? 1432 01:07:10,162 --> 01:07:12,870 Cote sunt, atunci când oamenii s-au aleg limba pentru browser-ul, 1433 01:07:12,870 --> 01:07:14,990 pentru partea de client, JavaScript este într-adevăr frumos, 1434 01:07:14,990 --> 01:07:16,765 e foarte bine la manipularea obiectelor. 1435 01:07:16,765 --> 01:07:20,620 Iar obiectele sunt un fel de obiectele care apar în HTML, 1436 01:07:20,620 --> 01:07:23,940 așa că este foarte ușor pentru JavaScript pentru a face acest tip de manipulare. 1437 01:07:23,940 --> 01:07:24,440 Davin: Nisa. 1438 01:07:24,440 --> 01:07:25,670 Deci, aici e doar un exemplu. 1439 01:07:25,670 --> 01:07:29,020 Deci, eu cred că pe testul de anul trecut, sau poate în urmă cu doi ani, ne-am 1440 01:07:29,020 --> 01:07:30,840 vă cere să creați un copac. 1441 01:07:30,840 --> 01:07:32,660 Deci, asta este exact ceea ce ai face. 1442 01:07:32,660 --> 01:07:34,255 Deci, începe cu documentul. 1443 01:07:34,255 --> 01:07:36,130 Și apoi, practic doar uita-te la etichetele. 1444 01:07:36,130 --> 01:07:38,100 Deci, dacă te uiți, noi începe cu o etichetă HTML. 1445 01:07:38,100 --> 01:07:41,660 Și apoi, veți obține indicii despre cum să face acest lucru pe baza amprentei. 1446 01:07:41,660 --> 01:07:43,870 Deci, un fel de șef de sucursale off. 1447 01:07:43,870 --> 01:07:46,242 În interiorul capului, avem un alt tag pentru titlu. 1448 01:07:46,242 --> 01:07:47,450 Deci, avem o etichetă titlu. 1449 01:07:47,450 --> 01:07:49,760 Și în interiorul că, avem unele șir. 1450 01:07:49,760 --> 01:07:52,210 Și așa ne reprezentăm un șir într-un cerc. 1451 01:07:52,210 --> 01:07:54,010 Și toate etichetele sunt în pătrate. 1452 01:07:54,010 --> 01:07:56,270 >> Și dacă te uiți, dacă ne-am cred că de acest lucru ca un copac, 1453 01:07:56,270 --> 01:07:58,730 și să spunem că HTML este un părinte, apoi cap și corp 1454 01:07:58,730 --> 01:07:59,772 vor fi frați. 1455 01:07:59,772 --> 01:08:01,813 Ei amândoi vor fi copii ale acestei mamă. 1456 01:08:01,813 --> 01:08:03,620 Deci, pentru că ei sunt ambele frati, ei sunt 1457 01:08:03,620 --> 01:08:06,590 Va fi un fel de lângă reciproc, în modelul nostru copac. 1458 01:08:06,590 --> 01:08:08,590 Și apoi, tu practic face exact același lucru. 1459 01:08:08,590 --> 01:08:13,512 Deci, nu greu, dar am cerut întrebări ca acest lucru înainte de pe testul de. 1460 01:08:13,512 --> 01:08:15,220 Gabe: Are cineva Aveti intrebari până acum? 1461 01:08:15,220 --> 01:08:16,357 Este bine? 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, lucrurile bune. 1465 01:08:21,600 --> 01:08:24,069 Deci JavaScript, ceea ce este JavaScript? 1466 01:08:24,069 --> 01:08:28,370 Ei bine, JavaScript este-- e complicat, dar acestea 1467 01:08:28,370 --> 01:08:30,727 sunt unele dintre cele mai importante care ar trebui să păstreze în minte. 1468 01:08:30,727 --> 01:08:31,810 În primul rând, e liber tipizat. 1469 01:08:31,810 --> 01:08:33,529 Ce înseamnă asta? 1470 01:08:33,529 --> 01:08:35,596 Deci, PHP was-- da, ce sa întâmplat? 1471 01:08:35,596 --> 01:08:39,854 >> Audiența: Nu trebuie să explicit stare ce tip de variabile este. 1472 01:08:39,854 --> 01:08:40,479 Davin: Perfect. 1473 01:08:40,479 --> 01:08:43,270 Deci, el a spus că nu trebuie să precizeze în mod explicit tipul de variabile. 1474 01:08:43,270 --> 01:08:44,160 Asta-i exact corect. 1475 01:08:44,160 --> 01:08:49,700 Deci, în C, dacă am avut int i egal 50, apoi în PHP, este doar ca aceasta, $ i, 1476 01:08:49,700 --> 01:08:50,550 este egal 50. 1477 01:08:50,550 --> 01:08:54,319 Apoi, în JavaScript, ceea ce ar fi apelul? 1478 01:08:54,319 --> 01:08:55,260 Var, nu? 1479 01:08:55,260 --> 01:08:56,566 Ar fi ca și cum var i este egal cu 50. 1480 01:08:56,566 --> 01:08:58,649 Dar nu trebuie să fie cum ar fi, OK, aceasta este o int. 1481 01:08:58,649 --> 01:09:00,350 OK, aceasta este un șir. 1482 01:09:00,350 --> 01:09:01,731 Nu trebuie să faci asta. 1483 01:09:01,731 --> 01:09:02,939 Este un limbaj interpretat. 1484 01:09:02,939 --> 01:09:04,904 Deci, ce înseamnă asta? 1485 01:09:04,904 --> 01:09:06,340 >> Audiența: Nu compilate. 1486 01:09:06,340 --> 01:09:10,470 >> Davin: Ce nu compilat înseamnă? 1487 01:09:10,470 --> 01:09:11,392 Da? 1488 01:09:11,392 --> 01:09:15,336 >> Audiența: Nu aveți să restructureze codul 1489 01:09:15,336 --> 01:09:18,294 să-l gata pentru computerul pentru a rula. 1490 01:09:18,294 --> 01:09:23,144 Este doar luate la momentul execuție și calculatorul [neauzit]. 1491 01:09:23,144 --> 01:09:25,560 Davin: Da, așa o să trec printr-un interpret. 1492 01:09:25,560 --> 01:09:26,750 Dar tu ești exact dreptate. 1493 01:09:26,750 --> 01:09:28,319 Deci, tu nu te duci să-l compilați, nu? 1494 01:09:28,319 --> 01:09:30,399 Când făceai ta PHP și codul JavaScript, 1495 01:09:30,399 --> 01:09:31,365 tu nu sunat compilare. 1496 01:09:31,365 --> 01:09:33,779 Niciodată nu sunat ceva de genul face sau ceva de genul asta. 1497 01:09:33,779 --> 01:09:34,800 Asta pentru ca este interpretat. 1498 01:09:34,800 --> 01:09:37,319 Deci, de fiecare dată când trece prin browser, aceasta trece printr-un interpret. 1499 01:09:37,319 --> 01:09:40,370 Și asta o să-l interpreteze doar în timp real imediat pentru tine. 1500 01:09:40,370 --> 01:09:43,770 Deci, ce sunt unele pozitive și negative a avea un limbaj interpretat 1501 01:09:43,770 --> 01:09:45,258 și având un limbaj compilat? 1502 01:09:45,258 --> 01:09:48,240 1503 01:09:48,240 --> 01:09:50,540 Deci compiling-- da, ce sa întâmplat? 1504 01:09:50,540 --> 01:09:52,444 >> Audiența: Interpretate este mai lent. 1505 01:09:52,444 --> 01:09:53,319 Davin: În ce sens? 1506 01:09:53,319 --> 01:09:57,167 1507 01:09:57,167 --> 01:09:59,091 >> Audiența: După ce ați compila, nu aveți 1508 01:09:59,091 --> 01:10:04,400 de a face toate demersurile suplimentare pentru a executa ea, în timp ce aceasta [neauzit]. 1509 01:10:04,400 --> 01:10:05,570 >> Davin: dreapta, perfect. 1510 01:10:05,570 --> 01:10:08,386 Deci, ceea ce ai spus este practic că compilarea, 1511 01:10:08,386 --> 01:10:10,760 atunci când compila, aveți o mulțime de costuri în avans, nu? 1512 01:10:10,760 --> 01:10:11,760 Ai de gând să-l compilați. 1513 01:10:11,760 --> 01:10:13,750 Dar, după ce-l compilați, compilator va optimiza. 1514 01:10:13,750 --> 01:10:14,840 Va fi rapid. 1515 01:10:14,840 --> 01:10:16,170 O să practic fi la fel de repede ca se poate. 1516 01:10:16,170 --> 01:10:18,830 Cu interpretariat, niciodată nu au acest cost avans. 1517 01:10:18,830 --> 01:10:22,260 Mai degrabă, va fi ceva mai lent de fiecare dată când îl interpreta. 1518 01:10:22,260 --> 01:10:24,940 Și ai de gând să trebuie să interpreta aceasta de fiecare dată. 1519 01:10:24,940 --> 01:10:27,114 Deci, în loc de a avea aceasta o costuri dată, acum ești 1520 01:10:27,114 --> 01:10:29,530 Va trebui să-l interpreteze de fiecare dată când pagina face. 1521 01:10:29,530 --> 01:10:31,890 >> Deci, interpreți sunt bune, deoarece nu trebuie să-l compilați, 1522 01:10:31,890 --> 01:10:33,980 dar sunt rău în faptul că fiecare cronometra pagină se încarcă, este 1523 01:10:33,980 --> 01:10:35,771 Va trebui să interpreta acest JavaScript. 1524 01:10:35,771 --> 01:10:40,520 Și o să ruleze ușor mai lent decât dacă ar fi să-l compilați. 1525 01:10:40,520 --> 01:10:43,044 Vă permite să communicate-- oh, așteptați. 1526 01:10:43,044 --> 01:10:44,960 Folosit pentru a manipula conținut și aspect. 1527 01:10:44,960 --> 01:10:46,043 Tocmai am vorbit despre asta. 1528 01:10:46,043 --> 01:10:47,250 Se folosește DOM. 1529 01:10:47,250 --> 01:10:49,930 AJAX, vom ajunge în AJAX într-un pic. 1530 01:10:49,930 --> 01:10:51,520 Și apoi, e partea de client. 1531 01:10:51,520 --> 01:10:53,110 Deci, PHP este partea de server. 1532 01:10:53,110 --> 01:10:54,360 JavaScript este partea de client. 1533 01:10:54,360 --> 01:10:57,780 Ce sunt pozitive pentru asta? 1534 01:10:57,780 --> 01:10:58,280 Ea spune. 1535 01:10:58,280 --> 01:11:01,480 1536 01:11:01,480 --> 01:11:02,780 Este mai rapid, corect? 1537 01:11:02,780 --> 01:11:05,282 Pentru că nu ai sa-- este mai rapid. 1538 01:11:05,282 --> 01:11:07,490 Nu trebuie să comunice cu un alt dispozitiv. 1539 01:11:07,490 --> 01:11:08,790 Dacă sunteți doar pe dumneavoastră client, nu ești niciodată 1540 01:11:08,790 --> 01:11:11,280 Va trebui să meargă și vezi ce e pe server 1541 01:11:11,280 --> 01:11:13,150 și apoi raportează înapoi sau ceva de genul asta. 1542 01:11:13,150 --> 01:11:15,410 Deci, partea de client tinde să fi un pic mai repede. 1543 01:11:15,410 --> 01:11:17,910 >> Gabe: Da, dar aceasta nu înseamnă PHP este 1544 01:11:17,910 --> 01:11:20,440 mai repede decât de activarea JavaScript- sau ceva de alții. 1545 01:11:20,440 --> 01:11:23,270 Ei alerga fel de în aceeași Viteza pentru că sunt amândoi 1546 01:11:23,270 --> 01:11:24,490 Limbi interpretate. 1547 01:11:24,490 --> 01:11:26,680 Ceea ce e lent aici este cererea. 1548 01:11:26,680 --> 01:11:28,870 Deci de fapt de gând tot drumul pe la Brazilia 1549 01:11:28,870 --> 01:11:31,460 pentru a obține niște informații care trăiește acolo. 1550 01:11:31,460 --> 01:11:34,590 Dar PHP și JavaScript, ei fel de a alerga în aceeași viteză. 1551 01:11:34,590 --> 01:11:37,930 Nu e că unul este mai repede decât celelalte. 1552 01:11:37,930 --> 01:11:40,600 Acest lucru, de asemenea, truc întrebare aici. 1553 01:11:40,600 --> 01:11:47,338 Deci, JavaScript nu devine niciodată cod mașină, adevărat sau fals? 1554 01:11:47,338 --> 01:11:48,590 >> Audiența: Fals. 1555 01:11:48,590 --> 01:11:49,090 Gabe: Fals. 1556 01:11:49,090 --> 01:11:51,298 Ea are de a deveni mașină Codul deoarece cod mașină este 1557 01:11:51,298 --> 01:11:53,210 singurul lucru aparatului înțelege. 1558 01:11:53,210 --> 01:11:55,800 Chiar dacă nu este compilat, devine încă cod mașină 1559 01:11:55,800 --> 01:11:59,120 pentru că interpretul este doar un program care trece linia de linie 1560 01:11:59,120 --> 01:12:02,170 și transformă acea linie în ceva calculatorul înțelege. 1561 01:12:02,170 --> 01:12:02,825 OK? 1562 01:12:02,825 --> 01:12:03,325 Se răcește. 1563 01:12:03,325 --> 01:12:08,530 1564 01:12:08,530 --> 01:12:12,890 >> Davin: Aici este doar o foarte extinsă Bună ziua lume programului JavaScript. 1565 01:12:12,890 --> 01:12:15,590 Deci, eu nu știu if-- ați văzut aceasta. 1566 01:12:15,590 --> 01:12:17,630 Dar trebuie doar HTML aici. 1567 01:12:17,630 --> 01:12:21,020 Și în loc de a pune efectiv JavaScript în tag-uri script, 1568 01:12:21,020 --> 01:12:22,810 deci ai pus-o în mod normal, cap. 1569 01:12:22,810 --> 01:12:24,030 Ai etichete script. 1570 01:12:24,030 --> 01:12:24,870 Ai picătură acolo. 1571 01:12:24,870 --> 01:12:28,350 Tot ce am făcut aici este că am legat in-- așa că am legat într-un dosar de activarea JavaScript- 1572 01:12:28,350 --> 01:12:29,137 ca aceasta. 1573 01:12:29,137 --> 01:12:30,470 Și voi toți ați făcut asta, nu? 1574 01:12:30,470 --> 01:12:34,740 Deci, atunci când au fost utilizați jQuery și underscore.js în ultimul p-set, 1575 01:12:34,740 --> 01:12:38,700 nu aveți de tone de cod în etichetele script, în cap. 1576 01:12:38,700 --> 01:12:41,415 Ai putea face asta, dar în schimb esti doar o leagă în. 1577 01:12:41,415 --> 01:12:43,540 Și tu ești o leagă în la fel cum faci cu CSS. 1578 01:12:43,540 --> 01:12:50,186 Deci, doar face mai ușor de citit așa codul nu este ca 1.000 de linii de mult timp 1579 01:12:50,186 --> 01:12:52,310 cu tone de funcții care tu nu s-ar putea folosi. 1580 01:12:52,310 --> 01:12:53,518 >> În schimb, tu doar link-ul din. 1581 01:12:53,518 --> 01:12:55,050 Acesta se compartimenteaza. 1582 01:12:55,050 --> 01:13:00,110 E ca și cum scriu unii fișier antet, și apoi inclusiv fișier antet în C. 1583 01:13:00,110 --> 01:13:01,620 Ganditi-va doar ca aceasta. 1584 01:13:01,620 --> 01:13:02,680 Deci, ce face acest lucru? 1585 01:13:02,680 --> 01:13:04,560 Ei bine, acest lucru se întâmplă pentru a rula. 1586 01:13:04,560 --> 01:13:05,410 O să alerta. 1587 01:13:05,410 --> 01:13:08,020 Deci, ai de gând să obțineți un pic pop-up numita lume salut. 1588 01:13:08,020 --> 01:13:11,420 Întrebare rapidă, doar verificare bun-simț, astfel încât să vedeți aici, în organism, 1589 01:13:11,420 --> 01:13:13,160 spune corp, HTML aici. 1590 01:13:13,160 --> 01:13:14,080 Ce este pe primul loc? 1591 01:13:14,080 --> 01:13:16,864 Nu văd corp, HTML aici, sau pot vedea alerta primul? 1592 01:13:16,864 --> 01:13:19,828 1593 01:13:19,828 --> 01:13:20,820 >> Audiența: Alert. 1594 01:13:20,820 --> 01:13:21,470 >> Davin: Corect. 1595 01:13:21,470 --> 01:13:22,110 El spune alertă. 1596 01:13:22,110 --> 01:13:22,610 De ce? 1597 01:13:22,610 --> 01:13:24,470 >> Audiența: Pentru că du-te de sus în jos. 1598 01:13:24,470 --> 01:13:25,600 >> Davin: Da. 1599 01:13:25,600 --> 01:13:26,100 Perfect. 1600 01:13:26,100 --> 01:13:29,207 Așa spune el, te duci la vârf la de jos, ceea ce este absolut corect. 1601 01:13:29,207 --> 01:13:30,790 Vei merge de sus în jos. 1602 01:13:30,790 --> 01:13:34,790 Și în JavaScript, jQuery, aveți o funcție care e onload ca, sau gata, 1603 01:13:34,790 --> 01:13:38,030 și care spune, OK, așteptați până când toate acestea HTML a încărcat. 1604 01:13:38,030 --> 01:13:39,580 Și apoi, suna JavaScript. 1605 01:13:39,580 --> 01:13:42,190 Pentru ca noi nu avem ca aici, Primul lucru pe care o să se întâmple 1606 01:13:42,190 --> 01:13:43,920 se că va merge de sus în jos. 1607 01:13:43,920 --> 01:13:46,310 Va lovi că JS apel, se va alerta. 1608 01:13:46,310 --> 01:13:49,510 După aceea faceți clic pe OK, că alerta dispare. 1609 01:13:49,510 --> 01:13:53,600 Atunci va arăta tu HTML corp aici. 1610 01:13:53,600 --> 01:13:54,590 Nisa. 1611 01:13:54,590 --> 01:14:00,880 >> OK, așa că foarte repede, scris în JavaScript este super rapid. 1612 01:14:00,880 --> 01:14:02,710 În scopul de a declara un, nume var variabilă. 1613 01:14:02,710 --> 01:14:07,070 Deci, în C, aveți int i, ai să declare ce fel de tip este. 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 Am vorbit despre asta. 1617 01:14:09,630 --> 01:14:11,020 Bine, să mergem. 1618 01:14:11,020 --> 01:14:12,510 >> Loops, același lucru. 1619 01:14:12,510 --> 01:14:14,230 Același lucru. 1620 01:14:14,230 --> 01:14:18,165 Declarațiile funcțiilor, astfel încât la fel ca și ați văzut în C. 1621 01:14:18,165 --> 01:14:21,290 Singurul lucru diferit este astfel încât atunci când te la alte limbaje de programare, 1622 01:14:21,290 --> 01:14:24,780 ca atunci când ia 51 semestrul viitor și faci cu OCaml, 1623 01:14:24,780 --> 01:14:26,690 poti face cu funcții anonime. 1624 01:14:26,690 --> 01:14:28,240 Deci, asta e exact ceea ce ai aici. 1625 01:14:28,240 --> 01:14:31,560 Deci vrei să pună în sumă, un fel de valoare sumă. 1626 01:14:31,560 --> 01:14:33,870 Dar s-ar putea face o singură dată. 1627 01:14:33,870 --> 01:14:37,310 Deci, nu vrei să-i spunem funcție sumă, da o declarație funcție. 1628 01:14:37,310 --> 01:14:39,830 În schimb, tu doar l utilizați ca o funcție anonim. 1629 01:14:39,830 --> 01:14:42,469 Și ați văzut aceasta foarte mult. 1630 01:14:42,469 --> 01:14:44,510 Veți vedea un exemplu de acest lucru în câteva diapozitive. 1631 01:14:44,510 --> 01:14:45,597 Da, vom vedea. 1632 01:14:45,597 --> 01:14:46,430 Gabe: Bună întrebare. 1633 01:14:46,430 --> 01:14:50,660 Când ar putea să vă doriți să utilizați o funcție anonim aici? 1634 01:14:50,660 --> 01:14:54,111 Practic, atunci când doriți ceva, ca un eveniment, să se întâmple. 1635 01:14:54,111 --> 01:14:55,860 Deci, atunci când mouse-ul este clic, de exemplu, 1636 01:14:55,860 --> 01:14:57,790 vrei o funcție să fie numit. 1637 01:14:57,790 --> 01:15:00,570 Deci treci la eveniment handler, treci la eveniment, 1638 01:15:00,570 --> 01:15:02,870 un fel de, funcția pe care vrei să fie numit. 1639 01:15:02,870 --> 01:15:04,710 Și ceea ce trece este ca, la sfârșitul 1640 01:15:04,710 --> 01:15:08,757 a doua zi, doar un pointer la că instruire, la funcția. 1641 01:15:08,757 --> 01:15:11,090 Deci, nu e ca și cum te trece întregul cod, la fel ca și 1642 01:15:11,090 --> 01:15:12,173 un pointer la funcția. 1643 01:15:12,173 --> 01:15:17,871 Și apoi, când cineva face clic mouse-ul, apoi această funcție este chemat. 1644 01:15:17,871 --> 01:15:22,340 >> Davin: Arrays, deci tu au o declarație matrice. 1645 01:15:22,340 --> 01:15:23,990 Apoi, o matrice a pune lucrurile în. 1646 01:15:23,990 --> 01:15:25,769 Real rapid, ceea ce va imprima asta? 1647 01:15:25,769 --> 01:15:27,060 Care va fi al treilea element? 1648 01:15:27,060 --> 01:15:31,470 1649 01:15:31,470 --> 01:15:32,450 >> Audiența: "JS". 1650 01:15:32,450 --> 01:15:33,940 >> Davin: dreapta, ar fi "JS." 1651 01:15:33,940 --> 01:15:35,760 Stai, du-te înapoi. 1652 01:15:35,760 --> 01:15:37,100 Care este lungimea? 1653 01:15:37,100 --> 01:15:38,117 >> Audiența: Trei. 1654 01:15:38,117 --> 01:15:38,950 Davin: Trei, nu? 1655 01:15:38,950 --> 01:15:40,210 Exact ceea ce crezi. 1656 01:15:40,210 --> 01:15:42,072 OK, acum du-te. 1657 01:15:42,072 --> 01:15:43,530 Arrays, puteți adăuga lucruri pentru a le. 1658 01:15:43,530 --> 01:15:45,395 Deci, poti sa te duci dincolo de limitele lor inițiale. 1659 01:15:45,395 --> 01:15:46,740 Doar ceva pentru a păstra în minte. 1660 01:15:46,740 --> 01:15:49,760 PHP, JavaScript, ele sunt un pic bit mai mult iertator din punct de vedere lucrurile 1661 01:15:49,760 --> 01:15:50,570 ca asta. 1662 01:15:50,570 --> 01:15:54,260 Obiecte, foarte mult ca struct în C, foarte mult 1663 01:15:54,260 --> 01:15:56,590 ca matrice asociative în PHP. 1664 01:15:56,590 --> 01:15:58,720 Ai avut toata experienta cu aceasta. 1665 01:15:58,720 --> 01:16:01,880 Deci JSON, atunci când trece JSON înainte și înapoi în opt set-p, 1666 01:16:01,880 --> 01:16:03,260 asta e obiectul tău. 1667 01:16:03,260 --> 01:16:06,290 >> Deci da, exemplu, adevărat exemplu repede. 1668 01:16:06,290 --> 01:16:07,880 Aici este un obiect. 1669 01:16:07,880 --> 01:16:12,700 Modul în care acest referință obiect, așa că foarte repede, 1670 01:16:12,700 --> 01:16:18,630 Să spun că am vrut să găsesc afară, OK, ceea ce este cursul? 1671 01:16:18,630 --> 01:16:20,681 Și astfel numele obiectului de aici este CS50. 1672 01:16:20,681 --> 01:16:23,180 Și apoi, dacă am avut un asociativ matrice, cum aș face asta? 1673 01:16:23,180 --> 01:16:24,580 Voi folosi o cheie, nu? 1674 01:16:24,580 --> 01:16:26,030 Deci, am numele matrice. 1675 01:16:26,030 --> 01:16:30,160 Am placuta, citate, cheie, citate end, suport scop, 1676 01:16:30,160 --> 01:16:33,610 și care vor referință care Element interior tablou meu asociativ. 1677 01:16:33,610 --> 01:16:37,646 Cum se face referire Desigur reușită obiect meu? 1678 01:16:37,646 --> 01:16:39,170 Știe cineva? 1679 01:16:39,170 --> 01:16:40,622 >> Audiența: [neauzit]. 1680 01:16:40,622 --> 01:16:41,784 >> Davin: Care-i treaba? 1681 01:16:41,784 --> 01:16:42,700 Audiența: CS50.course. 1682 01:16:42,700 --> 01:16:43,510 Davin: Corect, da. 1683 01:16:43,510 --> 01:16:45,320 Deci, CS50.course. 1684 01:16:45,320 --> 01:16:48,770 Deci, modul în care lucrurile referință în interiorul un obiect JSON este cu un punct. 1685 01:16:48,770 --> 01:16:53,114 >> Audiența: Puteți folosi, de asemenea, sintaxă matrice. 1686 01:16:53,114 --> 01:16:54,050 >> Davin: OK, bine. 1687 01:16:54,050 --> 01:16:57,544 >> Gabe: Puteți folosi, de asemenea, CS50 placuta, șir, ca ghilimele. 1688 01:16:57,544 --> 01:16:59,210 Audiența: Cred că e identic cu PHP. 1689 01:16:59,210 --> 01:17:00,293 Gabe: E același lucru. 1690 01:17:00,293 --> 01:17:02,487 Davin: Bine! 1691 01:17:02,487 --> 01:17:03,945 Dar veți vedea aceste alte locuri. 1692 01:17:03,945 --> 01:17:08,990 1693 01:17:08,990 --> 01:17:10,480 Da, asa ca merge. 1694 01:17:10,480 --> 01:17:13,330 Aceasta este ceea ce tocmai am spus. 1695 01:17:13,330 --> 01:17:17,840 Deci, într-un exemplu JavaScript jQuery. 1696 01:17:17,840 --> 01:17:19,440 Deci, aceasta este DOM mea, nu? 1697 01:17:19,440 --> 01:17:22,290 1698 01:17:22,290 --> 01:17:25,410 Real repede, așa că am un cap, salut lume, corp. 1699 01:17:25,410 --> 01:17:26,160 Am un buton. 1700 01:17:26,160 --> 01:17:27,870 Se spune "împinge mine", așa că vreau să-l împingă. 1701 01:17:27,870 --> 01:17:29,745 Și vreau să fac ceva atunci când este apăsat. 1702 01:17:29,745 --> 01:17:31,220 Chiar, de lângă. 1703 01:17:31,220 --> 01:17:34,630 >> Corect, astfel încât acesta este JavaScript mea. 1704 01:17:34,630 --> 01:17:37,790 Deci, jQuery este doar un ușor mod de a scrie JavaScript. 1705 01:17:37,790 --> 01:17:40,920 Deci, și ceea ce am de gând să arate tu următor, va fi jQuery, 1706 01:17:40,920 --> 01:17:41,930 sunt identice. 1707 01:17:41,930 --> 01:17:43,990 Deci, ei vor face aceleași lucruri. 1708 01:17:43,990 --> 01:17:45,974 Doar jQuery tinde să fie un pic mai ușor. 1709 01:17:45,974 --> 01:17:47,140 Oamenii au tendința de a place mai mult. 1710 01:17:47,140 --> 01:17:48,390 Ea are o mulțime de funcționalități. 1711 01:17:48,390 --> 01:17:49,830 Deci, oamenii au tendința de a folosi jQuery. 1712 01:17:49,830 --> 01:17:53,270 Ai toate folosit jQuery în ultimul p-set. 1713 01:17:53,270 --> 01:17:54,270 Deci, ce se va face acest lucru? 1714 01:17:54,270 --> 01:17:56,580 Ceea ce va JavaScript-- așa acest lucru este pur și simplu JavaScript. 1715 01:17:56,580 --> 01:17:57,430 Ce va face acest lucru? 1716 01:17:57,430 --> 01:18:00,600 1717 01:18:00,600 --> 01:18:03,450 Ce va face? 1718 01:18:03,450 --> 01:18:04,890 >> Deci în primul rând, veți vedea fereastra onload. 1719 01:18:04,890 --> 01:18:05,390 Chiar? 1720 01:18:05,390 --> 01:18:06,640 Deci, nu am văzut asta înainte. 1721 01:18:06,640 --> 01:18:09,380 Deci, acest lucru se întâmplă să aștepte până la fereastra întregul sarcinile. 1722 01:18:09,380 --> 01:18:12,770 Deci, o să aștepte până la HTML, toate imaginile sarcina 1723 01:18:12,770 --> 01:18:13,770 înainte de a face ceva. 1724 01:18:13,770 --> 01:18:16,050 Deci, haideți să spunem DOM noastra a încărcat. 1725 01:18:16,050 --> 01:18:17,270 Totul e acolo. 1726 01:18:17,270 --> 01:18:19,080 Atunci ce se va întâmpla? 1727 01:18:19,080 --> 01:18:19,922 Da? 1728 01:18:19,922 --> 01:18:22,880 >> Audiența: apare Button. 1729 01:18:22,880 --> 01:18:25,201 >> Davin: Butonul este deja acolo. 1730 01:18:25,201 --> 01:18:26,700 Da, așa butonul e deja acolo. 1731 01:18:26,700 --> 01:18:31,190 Dar acest lucru se va spune, OK, dacă am faceți clic pe butonul, 1732 01:18:31,190 --> 01:18:33,650 deci butonul este deja acolo, așa tag HTML. 1733 01:18:33,650 --> 01:18:35,980 Stai, du-te înapoi foarte repede. 1734 01:18:35,980 --> 01:18:39,470 Această etichetă chiar aici este Va fi un buton deja. 1735 01:18:39,470 --> 01:18:40,810 Există deja un buton. 1736 01:18:40,810 --> 01:18:44,120 Dar atunci, JavaScript tag-ul, chiar aici, 1737 01:18:44,120 --> 01:18:46,160 se spune, OK, eu vreau pentru a obține elementul de identitate, 1738 01:18:46,160 --> 01:18:50,300 astfel buton de căutare spune doar, OK, eu vreau pentru a mapa această variabilă pentru acel buton. 1739 01:18:50,300 --> 01:18:53,120 Așa că variabila este doar un modalitate mai ușoară de a accesa acel buton. 1740 01:18:53,120 --> 01:18:57,300 Si eu spun, bine, dacă am faceți clic pe acel buton, deci, dacă am faceți clic acel element, 1741 01:18:57,300 --> 01:18:59,560 și acest element se referă la butonul, dacă am faceți clic pe el, 1742 01:18:59,560 --> 01:19:00,875 apoi vreau să sun o funcție. 1743 01:19:00,875 --> 01:19:03,500 Aici este unul dintre cei anonim Funcții de care vorbeam. 1744 01:19:03,500 --> 01:19:04,840 >> Sună o funcție. 1745 01:19:04,840 --> 01:19:08,840 În interiorul această funcție, practic ceva ce am văzut multe, alerta. 1746 01:19:08,840 --> 01:19:10,477 Faceți clic pe butonul de căutare. 1747 01:19:10,477 --> 01:19:12,060 Va avea de fapt un buton. 1748 01:19:12,060 --> 01:19:13,040 Ai să apăsați. 1749 01:19:13,040 --> 01:19:14,040 Ai asta de alertă. 1750 01:19:14,040 --> 01:19:14,850 X afară. 1751 01:19:14,850 --> 01:19:15,754 Asta este. 1752 01:19:15,754 --> 01:19:16,254 Da? 1753 01:19:16,254 --> 01:19:21,980 >> Audiența: Deci, dacă ai pus scriptul [Inaudibil], tag-ul script-in HTML ta? 1754 01:19:21,980 --> 01:19:24,300 >> Davin: Puteți pune scriptul drept etichetă în cap 1755 01:19:24,300 --> 01:19:30,667 pentru că aveți această onload. 1756 01:19:30,667 --> 01:19:32,000 Este, de asemenea, că aveți un clic. 1757 01:19:32,000 --> 01:19:34,166 Deci, o să aștepte până la faceți clic pentru ceva. 1758 01:19:34,166 --> 01:19:37,470 Dar onload este doar pentru a fi în siguranță, pentru a face vă că loturile totul în HTML-ul 1759 01:19:37,470 --> 01:19:38,170 prealabil. 1760 01:19:38,170 --> 01:19:39,247 Da? 1761 01:19:39,247 --> 01:19:40,330 Vrei să spui ceva? 1762 01:19:40,330 --> 01:19:41,080 >> Gabe: [neauzit]. 1763 01:19:41,080 --> 01:19:42,485 Davin: Da. 1764 01:19:42,485 --> 01:19:45,426 >> Audiența: Evita Deci onload definirea butonul de căutare variabil 1765 01:19:45,426 --> 01:19:49,930 doar prin a spune document.getElementById Căutare buton dot [neauzit]. 1766 01:19:49,930 --> 01:19:52,320 >> Davin: Categoric, dar apoi string-ul doar devine imens. 1767 01:19:52,320 --> 01:19:55,553 Exact, deci aceasta este doar de a face mai ușor pentru tine, da. 1768 01:19:55,553 --> 01:19:56,053 Da? 1769 01:19:56,053 --> 01:19:57,886 >> Audiența: Unde am făcut crea window.onload? 1770 01:19:57,886 --> 01:19:58,951 Sau document.ready? 1771 01:19:58,951 --> 01:20:00,590 >> Davin: Da, există. 1772 01:20:00,590 --> 01:20:02,094 Da, acolo este, am verificat. 1773 01:20:02,094 --> 01:20:03,710 >> Gabe: Nu pentru ei să aibă grijă de. 1774 01:20:03,710 --> 01:20:06,970 >> Davin: OK, deci am de gând să-ți spun oricum. 1775 01:20:06,970 --> 01:20:11,005 Deci, practic, doar în general, așa window.onload așteaptă până DOM dumneavoastră, toate 1776 01:20:11,005 --> 01:20:12,180 HTML, loturile. 1777 01:20:12,180 --> 01:20:13,513 Se așteaptă până imagini de încărcare. 1778 01:20:13,513 --> 01:20:14,930 Se așteaptă până loturile totul. 1779 01:20:14,930 --> 01:20:18,410 document.ready, doar așteaptă până loturile dumneavoastră DOM. 1780 01:20:18,410 --> 01:20:22,190 Odată HTML este tot acolo, o dată DOM este acolo, începe să ruleze. 1781 01:20:22,190 --> 01:20:23,400 Asta e singura diferenta. 1782 01:20:23,400 --> 01:20:24,700 >> Gabe: bun-simț Quick verifica aici. 1783 01:20:24,700 --> 01:20:29,060 Deci, acest lucru poate fi văzut un fel de ca o linie de cod, nu? 1784 01:20:29,060 --> 01:20:33,600 Pentru că e window.onload este egal cu o grămadă de lucruri. 1785 01:20:33,600 --> 01:20:39,030 Când JavaScript citește acest lucru, adevărat sau fals, funcția este executat. 1786 01:20:39,030 --> 01:20:40,020 Fals. 1787 01:20:40,020 --> 01:20:40,920 OK? 1788 01:20:40,920 --> 01:20:44,470 Ce se întâmplă aici, doar sunteti in trecere această funcție ca un funcții anonime 1789 01:20:44,470 --> 01:20:45,300 la window.onload. 1790 01:20:45,300 --> 01:20:48,480 Și apoi când va pentru a obține de fapt executat? 1791 01:20:48,480 --> 01:20:49,600 Când sarcinile fereastra. 1792 01:20:49,600 --> 01:20:50,420 Asta e un eveniment. 1793 01:20:50,420 --> 01:20:52,460 Deci, asta e jus t lucru suntem vorbim despre mai devreme, nu? 1794 01:20:52,460 --> 01:20:54,580 Deci, atunci când evenimentul se întâmplă, funcția se întâmplă. 1795 01:20:54,580 --> 01:20:55,746 Același lucru cu onClick. 1796 01:20:55,746 --> 01:20:59,510 1797 01:20:59,510 --> 01:21:03,130 >> Davin: OK, deci cineva a luat departe document.ready. 1798 01:21:03,130 --> 01:21:04,698 Dar acest lucru va fi same-- exact 1799 01:21:04,698 --> 01:21:06,864 Audienta: Semnul dolar, care este un document.ready. 1800 01:21:06,864 --> 01:21:07,710 E o scurtătură. 1801 01:21:07,710 --> 01:21:08,501 >> Davin: Oh, asta este? 1802 01:21:08,501 --> 01:21:10,880 1803 01:21:10,880 --> 01:21:15,500 Ok, deci acest mijloc document.ready, comenzi rapide. 1804 01:21:15,500 --> 01:21:19,660 Dar acest lucru este la fel ca window.onload cu excepția că o diferență mică 1805 01:21:19,660 --> 01:21:20,680 Ți-am spus despre. 1806 01:21:20,680 --> 01:21:21,870 Și acest lucru este jQuery. 1807 01:21:21,870 --> 01:21:25,190 Deci, acesta este exact același lucru thing-- acest lucru este JavaScript. 1808 01:21:25,190 --> 01:21:29,500 Acest lucru este doar-- unii oameni cred că de ea ca o greutate mai ușoară, versiunea elegant 1809 01:21:29,500 --> 01:21:32,370 că are o mulțime de funcționalitate că veți fi, probabil, cu ajutorul. 1810 01:21:32,370 --> 01:21:34,500 Deci, acest lucru nu exact același lucru. 1811 01:21:34,500 --> 01:21:37,110 >> Deci, lucruri de fel de sublinieze. 1812 01:21:37,110 --> 01:21:40,364 Deci, în celălalt exemplu, noi a avut document.getElementById, 1813 01:21:40,364 --> 01:21:42,280 deci am avut atât de mult șir care va obține 1814 01:21:42,280 --> 01:21:44,290 elementul de orice identitate are. 1815 01:21:44,290 --> 01:21:46,470 Asta înlocuiește cu acest apel chiar aici. 1816 01:21:46,470 --> 01:21:50,860 Deci, vedeți semnul dolar, atunci vezi citat, hashtag. 1817 01:21:50,860 --> 01:21:52,370 Hashtag este întotdeauna un selector. 1818 01:21:52,370 --> 01:21:54,730 Se spune, OK, acest lucru are de a face cu un act de identitate. 1819 01:21:54,730 --> 01:21:56,120 Care este selectorul pentru o clasa? 1820 01:21:56,120 --> 01:21:57,190 >> Audiența: Dot. 1821 01:21:57,190 --> 01:21:57,960 >> Davin: Dot, dreapta. 1822 01:21:57,960 --> 01:22:01,950 Dacă sunteți doar de gând să selectați o etichetă, ce este? 1823 01:22:01,950 --> 01:22:03,310 E doar eticheta, exact. 1824 01:22:03,310 --> 01:22:05,560 Și ai putea folosi asta aici, de asemenea. 1825 01:22:05,560 --> 01:22:08,560 >> Gabe: Si de tag-ul, ne referim ca div, de exemplu, sau cap. 1826 01:22:08,560 --> 01:22:11,500 >> Davin: Or organism sau p sau ceva de genul asta, da. 1827 01:22:11,500 --> 01:22:14,390 Deci, aici, OK, în loc de a spune document.getElementById, 1828 01:22:14,390 --> 01:22:16,500 aceasta este doar exact același lucru. 1829 01:22:16,500 --> 01:22:17,990 Doar în jQuery, e mai scurt. 1830 01:22:17,990 --> 01:22:19,860 Deci e simplu. 1831 01:22:19,860 --> 01:22:23,420 Deci, nu mai onclick, faceți clic pe. 1832 01:22:23,420 --> 01:22:26,320 Funcția jQuery, apelați această funcție. 1833 01:22:26,320 --> 01:22:27,580 Alert este exact același lucru. 1834 01:22:27,580 --> 01:22:29,452 Deci, este un pic mai mici, sau pic 1835 01:22:29,452 --> 01:22:32,410 scurt, un popor mic bit-- cred este un pic mai ușor să scrie, 1836 01:22:32,410 --> 01:22:34,600 un pic mai ușor de înțeles. 1837 01:22:34,600 --> 01:22:35,640 Dar acest lucru este jQuery. 1838 01:22:35,640 --> 01:22:37,887 O mulțime de oameni obține un pic pic confuz și îngrijorat 1839 01:22:37,887 --> 01:22:40,220 și ei cred, OK, jQuery este diferit de JavaScript. 1840 01:22:40,220 --> 01:22:42,136 Trebuie să ne amintim aceste două lucruri diferite. 1841 01:22:42,136 --> 01:22:42,740 Nu este. 1842 01:22:42,740 --> 01:22:45,315 Adică, e sintaxă diferit. 1843 01:22:45,315 --> 01:22:46,970 Dar jQuery JavaScript este. 1844 01:22:46,970 --> 01:22:50,050 E doar un aparent Versiunea mai bine 1845 01:22:50,050 --> 01:22:51,967 ar putea fi mai ușor de Înțeleg că oamenii folosesc. 1846 01:22:51,967 --> 01:22:53,716 Gabe: Da, pentru a fi sincer, că semnul dolar 1847 01:22:53,716 --> 01:22:57,240 pe care le vedeți în jQuery, e doar numele unei funcții care definește jQuery. 1848 01:22:57,240 --> 01:22:58,614 Ea nu are nimic special. 1849 01:22:58,614 --> 01:23:03,140 Este E doar numele unei funcții, la fel ca ai putea defini semnul dolar. 1850 01:23:03,140 --> 01:23:05,670 >> Davin: Da, așa a vorbit despre asta. 1851 01:23:05,670 --> 01:23:06,680 Unele lucruri utile. 1852 01:23:06,680 --> 01:23:10,414 M-am uitat din nou la chestionare vechi. 1853 01:23:10,414 --> 01:23:13,080 În ultimii chestionare, le-am a trebuit sa foloseasca lucruri de genul acesta. 1854 01:23:13,080 --> 01:23:15,230 Deci document.ready, așa asigurați-vă că totul este 1855 01:23:15,230 --> 01:23:17,410 încărcată înainte de a începe a face lucruri. 1856 01:23:17,410 --> 01:23:20,120 Selectați un ID, sau selectați o clasă, ar doar 1857 01:23:20,120 --> 01:23:24,020 fi citat dot unele de clasă, scop citat. 1858 01:23:24,020 --> 01:23:26,580 Trimite, asa ca daca esti prezentarea unui formular și apel 1859 01:23:26,580 --> 01:23:28,830 această funcție după ce forma susține. 1860 01:23:28,830 --> 01:23:34,210 Valoare, Să spun că am avut o formă prezentarea, ca un nume de utilizator, un e-mail, 1861 01:23:34,210 --> 01:23:34,950 tot ceea ce. 1862 01:23:34,950 --> 01:23:36,010 Am avut o casetă de text. 1863 01:23:36,010 --> 01:23:37,670 Deci, eu sunt tastând în care caseta de text. 1864 01:23:37,670 --> 01:23:42,170 Ei bine, dacă doriți să obțineți valoarea din cutia de text, folosiți punct val. 1865 01:23:42,170 --> 01:23:44,050 Și apoi, aici, punct HTML este același 1866 01:23:44,050 --> 01:23:47,710 este ca document de punct getElementById punct innerHTML. 1867 01:23:47,710 --> 01:23:50,890 Așa că o să se întoarcă tu HTML de la acel ID. 1868 01:23:50,890 --> 01:23:55,080 Aici, doar să utilizați unele ID-ul sau orice punct HTML. 1869 01:23:55,080 --> 01:23:56,930 Asta va primi HTML de la acel element. 1870 01:23:56,930 --> 01:24:00,130 Dacă ați fi dorit atunci să schimbe asta HTML, puteți trece ceva. 1871 01:24:00,130 --> 01:24:05,600 Deci ar fi ca punct HTML, și apoi interior, citate, noi HTML sau ceva. 1872 01:24:05,600 --> 01:24:07,490 >> Gabe: OK, așa AJAX. 1873 01:24:07,490 --> 01:24:10,347 Îmi place foarte mult să înțeleagă AJAX foarte bine. 1874 01:24:10,347 --> 01:24:12,430 Așa că vrei voi să înțelege AJAX foarte bine. 1875 01:24:12,430 --> 01:24:14,221 Pentru că dacă o faci, ai destul de mult merge 1876 01:24:14,221 --> 01:24:16,810 pentru a înțelege tot ceea ce are de a face cu HTTP, PHP, 1877 01:24:16,810 --> 01:24:21,080 JavaScript, pentru că toate vine împreună în AJAX. 1878 01:24:21,080 --> 01:24:25,130 AJAX nu este un limbaj. 1879 01:24:25,130 --> 01:24:27,000 AJAX este o tehnică. 1880 01:24:27,000 --> 01:24:31,690 Și folosește o mulțime de instrumente diferite. 1881 01:24:31,690 --> 01:24:35,090 AJAX vine de la asincron XML JavaScript. 1882 01:24:35,090 --> 01:24:36,730 Deci metoda, limba, datele. 1883 01:24:36,730 --> 01:24:40,610 >> Deci limba principală pe care le folosim în AJAX pentru a declanșa tot 1884 01:24:40,610 --> 01:24:42,830 și să se ocupe de tot mai târziu este JavaScript. 1885 01:24:42,830 --> 01:24:45,160 De aceea se referă foarte aproape de JavaScript. 1886 01:24:45,160 --> 01:24:49,810 Și apoi asincron este pentru că noi nu o facem 1887 01:24:49,810 --> 01:24:51,980 dintr-o dată când vom încărcarea paginii. 1888 01:24:51,980 --> 01:24:57,190 Acesta este lucrul pe care putem face lucruri fel de în paralel. 1889 01:24:57,190 --> 01:24:59,725 Ideea principala din spatele AJAX este că doriți 1890 01:24:59,725 --> 01:25:02,170 aceasta pentru a obține unele informații specifice. 1891 01:25:02,170 --> 01:25:06,450 De exemplu, atunci când tastați nou Numele de utilizator atunci când vă înregistrați un nume de utilizator, 1892 01:25:06,450 --> 01:25:08,520 Numele meu de utilizator este abc123. 1893 01:25:08,520 --> 01:25:11,671 Și apoi, la sfârșitul anului formular, trebuie să faceți clic pe Trimite. 1894 01:25:11,671 --> 01:25:14,420 Și a trebuit să meargă la server, iar apoi verificați dacă în baza de date, 1895 01:25:14,420 --> 01:25:15,594 abc123 este deja acolo. 1896 01:25:15,594 --> 01:25:18,510 Și dacă e deja acolo, se spune, nume deja în baza de date de utilizator. 1897 01:25:18,510 --> 01:25:21,010 Și ei, va trebui să completați din întreaga formularul din nou. 1898 01:25:21,010 --> 01:25:23,110 Și a fost foarte, foarte rău. 1899 01:25:23,110 --> 01:25:25,440 >> Și apoi oamenii spun, OK, de ce nu ne-am putea 1900 01:25:25,440 --> 01:25:29,560 face o cerere HTTP mic pentru a verifica doar pentru a vedea dacă acest utilizator este în baza de date 1901 01:25:29,560 --> 01:25:32,080 înainte ca utilizatorul a trebuit să depune întreaga formularul? 1902 01:25:32,080 --> 01:25:36,350 Deci, de exemplu, atunci când utilizator finisaje tastarea abc123, 1903 01:25:36,350 --> 01:25:39,660 hai să mergem la server un pic bit și chiar a lua o adevărată sau falsă 1904 01:25:39,660 --> 01:25:43,080 de la server pentru a vedea dacă asta e un nume de utilizator valid sau nu. 1905 01:25:43,080 --> 01:25:49,250 OK, așa că e unul din principalele folosește de AJAX astăzi încă. 1906 01:25:49,250 --> 01:25:52,130 >> Davin: Deci foarte repede, în un apel Ajax în jQuery, 1907 01:25:52,130 --> 01:25:54,770 ai putea semnifica că vrei sa fie sincron. 1908 01:25:54,770 --> 01:25:56,330 Tu nu ar trebui să facă acest lucru. 1909 01:25:56,330 --> 01:25:57,640 Dar poți să faci asta. 1910 01:25:57,640 --> 01:25:59,277 Și dacă ai făcut asta, ce se va întâmpla? 1911 01:25:59,277 --> 01:26:01,610 Ei bine, de exemplu, atunci când sunteți asistent știri sau orice altceva, 1912 01:26:01,610 --> 01:26:05,464 Browser-ul dvs. este doar de gând să aștepte până la care întregul apel este completă 1913 01:26:05,464 --> 01:26:08,130 în loc de permițându-vă să faceți alte lucrurile imediat dupa ce faceți clic pe el. 1914 01:26:08,130 --> 01:26:14,560 1915 01:26:14,560 --> 01:26:17,115 >> Gabe: Nu e mai trece. 1916 01:26:17,115 --> 01:26:19,681 Oh, Doamne. 1917 01:26:19,681 --> 01:26:20,180 Ne pare rău! 1918 01:26:20,180 --> 01:26:22,810 1919 01:26:22,810 --> 01:26:23,601 Da. 1920 01:26:23,601 --> 01:26:25,350 "În trecut, client necesare pentru cerere 1921 01:26:25,350 --> 01:26:26,840 întregul conținut al unui site web. " 1922 01:26:26,840 --> 01:26:28,210 Asta e ceea ce am spus. 1923 01:26:28,210 --> 01:26:30,070 Ea ne permite să trimiteți GET suplimentar sau POST 1924 01:26:30,070 --> 01:26:32,140 cererile fără a avea pentru a reîncărca browser-ul nostru. 1925 01:26:32,140 --> 01:26:34,806 Deci, la sfârșitul zilei, suntem face de fapt o cereri HTTP 1926 01:26:34,806 --> 01:26:35,740 aici folosind JavaScript. 1927 01:26:35,740 --> 01:26:39,700 Pentru că înainte, am folosit doar de activarea JavaScript- pentru a schimba HTML care deja a venit. 1928 01:26:39,700 --> 01:26:43,110 Și acum, putem folosi de interfață cu serverele de web, de asemenea. 1929 01:26:43,110 --> 01:26:46,140 Modul în care acest lucru se întâmplă este avem client. 1930 01:26:46,140 --> 01:26:47,340 Davin este un client. 1931 01:26:47,340 --> 01:26:50,797 Și el are toate JavaScript difuzate, deoarece HTML este prost. 1932 01:26:50,797 --> 01:26:51,630 JavaScript este inteligent. 1933 01:26:51,630 --> 01:26:54,690 Deci, Davin Davin are inteligent lui parte și partea sa mut. 1934 01:26:54,690 --> 01:26:57,590 El va folosi partea lui inteligent acum. 1935 01:26:57,590 --> 01:27:00,860 El va folosi JavaScript la cerere, de exemplu, 1936 01:27:00,860 --> 01:27:04,340 dacă abc123 este în baza de date sau nu. 1937 01:27:04,340 --> 01:27:08,450 >> Deci Davin, te rog, doar trimite-mi o cerere HTTP. 1938 01:27:08,450 --> 01:27:09,197 Mulțumesc. 1939 01:27:09,197 --> 01:27:10,530 Deci, el doar a trimis o cerere HTTP. 1940 01:27:10,530 --> 01:27:11,270 Vezi asta? 1941 01:27:11,270 --> 01:27:14,700 Si acesta este doar la fel că orice solicitare HTTP este trimis. 1942 01:27:14,700 --> 01:27:16,830 Browser, Google Chrome sau ceva, este 1943 01:27:16,830 --> 01:27:19,570 vom vedea că lui Davin încercarea de a trimite o cerere HTTP, 1944 01:27:19,570 --> 01:27:20,930 va ajuta HM un pic. 1945 01:27:20,930 --> 01:27:23,950 Și asta va merge tot drumul la server. 1946 01:27:23,950 --> 01:27:27,370 Acum, serverul va avea PHP aici, sau orice altă limbă. 1947 01:27:27,370 --> 01:27:29,990 La fel ca într-o solicitare normală HTTP. 1948 01:27:29,990 --> 01:27:31,950 E destul de mult o cerere normală HTTP. 1949 01:27:31,950 --> 01:27:33,658 >> Apoi, serverul se va spune, OK, 1950 01:27:33,658 --> 01:27:37,270 Davin vrea să verifice dacă acest abc123 este în baza de date. 1951 01:27:37,270 --> 01:27:38,310 Du-te și vorbește cu modelul. 1952 01:27:38,310 --> 01:27:41,310 Modelul spune că nu e. abc123 este un nume bun utilizator. 1953 01:27:41,310 --> 01:27:47,940 Și apoi, serverul de web este de gând să utilizați PHP pentru a face o anumită formă de fișier. 1954 01:27:47,940 --> 01:27:52,280 Ar putea fi literalmente doar un fișier care conține "da" în ea, sau "nu, 1955 01:27:52,280 --> 01:27:53,315 sau ceva de genul asta. 1956 01:27:53,315 --> 01:27:54,190 Ar putea fi orice fișier. 1957 01:27:54,190 --> 01:27:57,080 >> Ar putea fi ca și cum am de gând să trimite Davin o imagine de o rață 1958 01:27:57,080 --> 01:28:01,200 dacă e în baza de date și trimite o imagine de un hamster 1959 01:28:01,200 --> 01:28:02,420 dacă nu este în baza de date. 1960 01:28:02,420 --> 01:28:04,294 Asta ar fi un fel de prost, dar se va lucra. 1961 01:28:04,294 --> 01:28:07,030 OK, asa ca am trimite o rață de Davin. 1962 01:28:07,030 --> 01:28:08,150 Davin a primit o rață. 1963 01:28:08,150 --> 01:28:13,330 Și acum, care va să se ocupe de rață? 1964 01:28:13,330 --> 01:28:16,390 Parte inteligent Davin din nou, astfel JavaScript, dreapta? 1965 01:28:16,390 --> 01:28:18,620 JavaScript trimis cerere, și JavaScript 1966 01:28:18,620 --> 01:28:22,300 va primi cererea și-l interpreteze într-o formă. 1967 01:28:22,300 --> 01:28:26,630 >> Și în acest sens, se va spune, OK, dacă rață atunci eu sunt bine. 1968 01:28:26,630 --> 01:28:30,770 Dacă hamster, atunci mă duc să spun, nu, numele de utilizator deja 1969 01:28:30,770 --> 01:28:31,970 există în baza de date. 1970 01:28:31,970 --> 01:28:33,845 Dar, de obicei, nu ești de gând să trimită o rață. 1971 01:28:33,845 --> 01:28:36,740 Ai de gând să trimită ceva ușor mai inteligent. 1972 01:28:36,740 --> 01:28:40,320 Și ce vom folosi este XML. 1973 01:28:40,320 --> 01:28:42,690 Și mai recent, vom folosi JSON. 1974 01:28:42,690 --> 01:28:45,629 JSON este doar de activarea JavaScript- Obiect Notații, care 1975 01:28:45,629 --> 01:28:47,670 este, în principiu primiți un Întreaga obiect JavaScript. 1976 01:28:47,670 --> 01:28:50,820 Și l-ai pus într-un fișier, la fel ca acel obiect CS50 că voi vedea. 1977 01:28:50,820 --> 01:28:53,090 Ai pus-o într-un fișier, și să îl trimiteți pe la Davin. 1978 01:28:53,090 --> 01:28:55,850 >> Deci, în acest caz, aș face- face un obiect JavaScript 1979 01:28:55,850 --> 01:28:59,570 și doar spun, există utilizator, da. 1980 01:28:59,570 --> 01:29:01,630 Sau există utilizator, nr. 1981 01:29:01,630 --> 01:29:02,810 Și-l trimită înapoi la el. 1982 01:29:02,810 --> 01:29:03,830 Și de ce JSON? 1983 01:29:03,830 --> 01:29:07,330 Deoarece persoana care a primit aceasta este 1984 01:29:07,330 --> 01:29:10,030 va folosi JavaScript să se ocupe de răspuns. 1985 01:29:10,030 --> 01:29:14,970 Și de activarea JavaScript-funcționează atât de bine pentru că se numește JavaScript Object Notation. 1986 01:29:14,970 --> 01:29:15,470 Chiar? 1987 01:29:15,470 --> 01:29:19,660 Astfel, el poate apela doar o funcție și de a lua acest obiect frumos de răspunsul. 1988 01:29:19,660 --> 01:29:22,890 Și apoi, el va ști dacă că de folosire este in baza de date sau nu. 1989 01:29:22,890 --> 01:29:25,230 >> Deci, vedeți, totul vine împreună în serverul de web, 1990 01:29:25,230 --> 01:29:28,450 și apoi există un HTTP la cerere și o reacție HTTP și totul. 1991 01:29:28,450 --> 01:29:30,600 Deci, asigurați-vă că voi înțelege acest apel AJAX 1992 01:29:30,600 --> 01:29:37,260 pentru că vă ajută să înțelegeți toate conceptelor vorbim despre. 1993 01:29:37,260 --> 01:29:40,260 >> Deci, aici este un exemplu de AJAX cu jQuery. 1994 01:29:40,260 --> 01:29:42,130 Și aici, facem cu get JSON. 1995 01:29:42,130 --> 01:29:45,660 Deci nu te încercarea de a obține o imagine de o pisica aici, sau o rață. 1996 01:29:45,660 --> 01:29:48,110 Suntem încercarea de a obține un fișier JSON. 1997 01:29:48,110 --> 01:29:51,184 Și apoi ne-am aștepta până se face, punct făcut. 1998 01:29:51,184 --> 01:29:52,850 Asta înseamnă că eu sunt de așteptare pentru răspunsul. 1999 01:29:52,850 --> 01:29:54,180 S-ar putea lua ceva timp. 2000 01:29:54,180 --> 01:29:56,360 Apoi, veți vedea un pic de încărcare. 2001 01:29:56,360 --> 01:29:59,340 Dacă vrei să faci asta în site-ul dumneavoastră. 2002 01:29:59,340 --> 01:30:01,440 Deci dot făcut, și apoi ce se întâmplă atunci când e gata? 2003 01:30:01,440 --> 01:30:04,040 Tu treci într-un anonim funcție, la fel ca am văzut înainte. 2004 01:30:04,040 --> 01:30:07,800 Deoarece făcut este un eveniment, doar ca un click pe un mouse sau orice altceva, 2005 01:30:07,800 --> 01:30:08,710 pentru jQuery. 2006 01:30:08,710 --> 01:30:13,710 Deci treci în această funcție cu date, text, starea, și jqXHR. 2007 01:30:13,710 --> 01:30:15,790 Și, practic, e doar unele variabile 2008 01:30:15,790 --> 01:30:22,160 pe care le puteți folosi mai târziu pentru a avea statutul cererii HTTP, 2009 01:30:22,160 --> 01:30:24,470 datele pe care le va pentru a trimite înapoi la tine. 2010 01:30:24,470 --> 01:30:28,740 Deci, atunci puteți mai târziu interpreta și de a face ceva semnificativ cu el. 2011 01:30:28,740 --> 01:30:30,240 Și dacă nu, atunci s-ar putea eșua? 2012 01:30:30,240 --> 01:30:33,780 Ei bine, atunci când cererea HTTP dă Ești de 500 sau ceva de genul asta. 2013 01:30:33,780 --> 01:30:37,420 Apoi, o să-ți spun stare, ce fel de eșec care a fost, 2014 01:30:37,420 --> 01:30:38,420 și tot felul de lucruri. 2015 01:30:38,420 --> 01:30:40,630 Trebuie să vă asigurați să se ocupe de ambele cazuri, 2016 01:30:40,630 --> 01:30:42,770 în caz contrar, programul merge nebun. 2017 01:30:42,770 --> 01:30:45,820 >> Davin: Deci da, aceasta este exact ceea ce ai văzut pe ultima p-set. 2018 01:30:45,820 --> 01:30:49,720 Real Apelul AJAX este în JSON get. 2019 01:30:49,720 --> 01:30:50,587 Acesta este apelul. 2020 01:30:50,587 --> 01:30:52,920 Și apoi, punct făcut este ca se verifică dacă este de succes. 2021 01:30:52,920 --> 01:30:55,620 Dacă este de succes, vrei de a face ceva cu datele. 2022 01:30:55,620 --> 01:30:59,290 Tu te întorci de la acea Date cerere JSON. 2023 01:30:59,290 --> 01:31:00,600 Asta este ceea ce te întorci. 2024 01:31:00,600 --> 01:31:04,470 Deci, dacă vă amintiți de la dumneavoastră p-set, o mulțime dintre voi au fost ca suport de date i 2025 01:31:04,470 --> 01:31:06,302 sau orice altceva, link-punct sau titlu. 2026 01:31:06,302 --> 01:31:08,260 Orice s-ar întoarce din care JSON, indiferent de 2027 01:31:08,260 --> 01:31:11,020 câmpurile sunt în acel obiect JSON, asta e ceea ce mă întorc. 2028 01:31:11,020 --> 01:31:12,394 Data este ceea ce vei primi înapoi. 2029 01:31:12,394 --> 01:31:15,510 Starea Text, doar ceva care vă permite să știi ce sa întâmplat. 2030 01:31:15,510 --> 01:31:20,570 Și apoi, jqXHR, asta e doar cererea HTTP XML jQuery. 2031 01:31:20,570 --> 01:31:21,990 Asta e doar ca un obiect. 2032 01:31:21,990 --> 01:31:23,932 Și apoi nu reușesc, așa cum a spus Gabe. 2033 01:31:23,932 --> 01:31:27,140 Gabe: În mica noastră exemplu de abc123 doar pentru a verifica dacă acesta este în baza de date 2034 01:31:27,140 --> 01:31:32,260 sau nu, datele ar fi ceva ce ar face, dacă există punct de date nume de utilizator, 2035 01:31:32,260 --> 01:31:37,720 care este ceea ce PHP ta generat pentru tu, dacă există nume de utilizator punct de date, atunci 2036 01:31:37,720 --> 01:31:40,880 Am de gând să alerta, utilizator nume există deja. 2037 01:31:40,880 --> 01:31:44,300 Altfel, eu doar de gând să lase utilizator continua completarea formularului. 2038 01:31:44,300 --> 01:31:47,860 2039 01:31:47,860 --> 01:31:50,820 OK, securitate, rece. 2040 01:31:50,820 --> 01:31:52,060 >> Davin: Vrei să mă? 2041 01:31:52,060 --> 01:31:54,500 >> Gabe: Îmi place asta. 2042 01:31:54,500 --> 01:31:57,680 Așa ceva care pare cunoscut. 2043 01:31:57,680 --> 01:31:59,750 Suntem aproape gata. 2044 01:31:59,750 --> 01:32:02,670 Deci, aceasta este doar un exemplu voi a văzut în clasa. 2045 01:32:02,670 --> 01:32:04,860 Ai fost cu ajutorul argv1 aici. 2046 01:32:04,860 --> 01:32:06,460 E ca și cum un argument linie de comandă. 2047 01:32:06,460 --> 01:32:09,270 Și suntem Mem copiere care într-un buffer de dimensiune 12. 2048 01:32:09,270 --> 01:32:12,560 Care e problema aici? 2049 01:32:12,560 --> 01:32:13,660 Buffer overflow! 2050 01:32:13,660 --> 01:32:15,400 Pentru că avem un tampon de dimensiune 12. 2051 01:32:15,400 --> 01:32:18,400 argv1 ar putea avea o dimensiune de două miliarde. 2052 01:32:18,400 --> 01:32:19,960 Noi nu facem nici o verificare limită. 2053 01:32:19,960 --> 01:32:24,970 Deci, am putea copia o mulțime de memorie. 2054 01:32:24,970 --> 01:32:28,630 Și vom fi deosebit de rău despre asta. 2055 01:32:28,630 --> 01:32:32,600 Ce am putea face asta foarte, foarte medie în acest caz? 2056 01:32:32,600 --> 01:32:33,278 Da? 2057 01:32:33,278 --> 01:32:36,528 Audiența: O parte din două miliarde de lucruri conține cod executabil care se întoarce 2058 01:32:36,528 --> 01:32:38,127 [Neauzit]. 2059 01:32:38,127 --> 01:32:38,710 Gabe: Exact. 2060 01:32:38,710 --> 01:32:41,110 Deci, asta e un fel de lucru pe care oamenii folosesc 2061 01:32:41,110 --> 01:32:43,344 a jailbreak un iPhone, de exemplu. 2062 01:32:43,344 --> 01:32:44,260 Deci, acest tip de lucru. 2063 01:32:44,260 --> 01:32:48,610 Pentru că puteți face doar aparatul executa orice cod care vă place. 2064 01:32:48,610 --> 01:32:50,247 Fix, astfel încât remedierea este ușor. 2065 01:32:50,247 --> 01:32:51,330 Doar verifica pentru limitele. 2066 01:32:51,330 --> 01:32:53,455 Ai verifica pentru nul, deoarece am mereu verifica pentru null 2067 01:32:53,455 --> 01:32:54,940 când avem de a face cu siruri de caractere. 2068 01:32:54,940 --> 01:32:57,840 Și apoi, luați lungime șir înainte. 2069 01:32:57,840 --> 01:33:00,150 Și dacă șirul Lungimea este un șir valid 2070 01:33:00,150 --> 01:33:03,700 lungime, care se află 0 și 12, atunci suntem bine. 2071 01:33:03,700 --> 01:33:07,144 >> Davin: Daca nu verifica pentru nul, foarte repede, ce se va întâmpla? 2072 01:33:07,144 --> 01:33:07,810 Va SEG vina. 2073 01:33:07,810 --> 01:33:10,850 De ce va SEG vina? 2074 01:33:10,850 --> 01:33:12,510 Pentru că suni strlen pe nul. 2075 01:33:12,510 --> 01:33:13,010 Gabe: Da. 2076 01:33:13,010 --> 01:33:16,490 2077 01:33:16,490 --> 01:33:19,630 Adevărat sau fals, folosind o Parola este o idee bună. 2078 01:33:19,630 --> 01:33:20,430 >> Audiența: Fals. 2079 01:33:20,430 --> 01:33:21,150 >> Gabe: Fals. 2080 01:33:21,150 --> 01:33:23,870 Foloseste multe parole, și, cele lungi mari. 2081 01:33:23,870 --> 01:33:26,050 Icoane Lacăt asigura securitatea. 2082 01:33:26,050 --> 01:33:27,080 >> Audiența: Fals. 2083 01:33:27,080 --> 01:33:27,749 >> Gabe: Fals. 2084 01:33:27,749 --> 01:33:28,790 Nu înseamnă nimic. 2085 01:33:28,790 --> 01:33:30,480 E doar o pictogramă. 2086 01:33:30,480 --> 01:33:32,824 SSL protejează împotriva unei om în atac mijloc. 2087 01:33:32,824 --> 01:33:33,490 Audiența: Fals. 2088 01:33:33,490 --> 01:33:34,110 Gabe: Fals. 2089 01:33:34,110 --> 01:33:35,355 OK, deci toți cei sunt false. 2090 01:33:35,355 --> 01:33:38,324 2091 01:33:38,324 --> 01:33:39,490 Nisa. 2092 01:33:39,490 --> 01:33:40,220 [Inaudibil] 2093 01:33:40,220 --> 01:33:42,500 Vrei să vorbim despre asta? 2094 01:33:42,500 --> 01:33:43,259 E rândul tău. 2095 01:33:43,259 --> 01:33:45,050 Davin: Tipuri de atacuri, om la mijloc. 2096 01:33:45,050 --> 01:33:47,134 Ce este un om în atac mijloc? 2097 01:33:47,134 --> 01:33:48,050 Audiența: [neauzit]. 2098 01:33:48,050 --> 01:33:51,437 2099 01:33:51,437 --> 01:33:54,020 Davin: Dacă trimiteți un HTTP cerere, acestea ar putea face acest lucru, nu? 2100 01:33:54,020 --> 01:33:57,890 Dar dacă trimiteți HTTPS, ei probabil, nu va fi capabil să facă acest lucru. 2101 01:33:57,890 --> 01:33:59,952 Există o mulțime de puncte de-a lungul conexiunii. 2102 01:33:59,952 --> 01:34:00,660 Ai routere. 2103 01:34:00,660 --> 01:34:01,746 Ai serverele DNS. 2104 01:34:01,746 --> 01:34:04,120 Dacă cineva este în măsură să punct de vedere fizic vezi ceea ce trimite, 2105 01:34:04,120 --> 01:34:06,140 deci cineva este capabil să obține de fapt între voi, 2106 01:34:06,140 --> 01:34:08,840 clientul, și server, și este posibilitatea de a vedea ceea ce trimite, 2107 01:34:08,840 --> 01:34:10,298 acesta este un om în atac mijloc. 2108 01:34:10,298 --> 01:34:14,287 Deci, pentru a vedea ceea ce încercarea de a obține de la server, sau este capabil de a see-- mai rău, 2109 01:34:14,287 --> 01:34:16,620 s-ar putea putea vedea cookie-uri sau ceva de genul asta. 2110 01:34:16,620 --> 01:34:19,290 >> Deci, de exemplu, în cazul în care nu utilizați SSL, el 2111 01:34:19,290 --> 01:34:21,900 ar putea fi posibilitatea de a vedea dvs. cookie-urile ID de sesiune. 2112 01:34:21,900 --> 01:34:25,460 Și aceasta se numește hijack pentru că el vede cookie-urile de identitate, 2113 01:34:25,460 --> 01:34:28,317 iar apoi el este capabil să se ducă în site și pretinde a fi tu. 2114 01:34:28,317 --> 01:34:31,150 Pentru că la fel ca în PHP, amintiți-vă când ne-am logat, ce facem? 2115 01:34:31,150 --> 01:34:33,340 Am stabilit ID sesiune egală cu ID-ul. 2116 01:34:33,340 --> 01:34:34,810 Deci, pe care le identifică. 2117 01:34:34,810 --> 01:34:38,300 De aceea, puteți vedea portofoliul dumneavoastră și de portofoliu nu toată lumea a lui. 2118 01:34:38,300 --> 01:34:42,320 >> Ei bine, dacă eu sunt în stare să mă că cookie, atunci eu pot conecta pe acea pagină. 2119 01:34:42,320 --> 01:34:45,380 Și apoi, eu pot vedea doar lucrurile și începe cumpararea si vanzarea de chestii. 2120 01:34:45,380 --> 01:34:46,800 Deci asta e hijack. 2121 01:34:46,800 --> 01:34:50,810 Dar tu nu ar trebui să poată, astfel încât să sa-- pot folosi omul în atac mijloc 2122 01:34:50,810 --> 01:34:52,290 chiar dacă acestea sunt utilizând SSL. 2123 01:34:52,290 --> 01:34:53,520 Dar tu nu ar trebui să fie în măsură să. 2124 01:34:53,520 --> 01:34:56,580 Dacă sunt utilizați SSL, nu poți deturnare sesiune. 2125 01:34:56,580 --> 01:34:58,927 De ce? 2126 01:34:58,927 --> 01:35:01,135 Pentru că totul criptat, dreapta? dacă este criptat, 2127 01:35:01,135 --> 01:35:03,509 și eu sunt încă un om în mijloc, eu încă obține datele. 2128 01:35:03,509 --> 01:35:04,279 Asta e bine. 2129 01:35:04,279 --> 01:35:05,070 Dar e criptat. 2130 01:35:05,070 --> 01:35:07,750 Deci, eu nu pot într-adevăr folosi. 2131 01:35:07,750 --> 01:35:09,840 Deci asta e două. 2132 01:35:09,840 --> 01:35:11,544 >> Real rapid, site-ul centra cerere fals. 2133 01:35:11,544 --> 01:35:13,960 Asta e doar în cazul în care există o legătură și care se leagă face ceva 2134 01:35:13,960 --> 01:35:14,890 care nu cred că ar trebui să facă. 2135 01:35:14,890 --> 01:35:18,150 Deci, de exemplu, în cazul în care legătura fost de gând să cumpere actiuni sau vinde stocurile, 2136 01:35:18,150 --> 01:35:19,360 și tu nu știi asta. 2137 01:35:19,360 --> 01:35:22,040 Ai făcut clic pe link-ul, a trimis o solicitare, cumparat 2138 01:35:22,040 --> 01:35:24,240 sau vândut ceva care nu ai vrut să fac. 2139 01:35:24,240 --> 01:35:25,120 Asta e. 2140 01:35:25,120 --> 01:35:30,720 >> Site scripting Cross, asa ca aici, te trece în via q variabil, 2141 01:35:30,720 --> 01:35:33,510 în loc de a trece într-un fel de valoare, poate q este ca un nume. 2142 01:35:33,510 --> 01:35:36,560 Deci, în loc de a trece egali q Davin sau ceva de genul asta, 2143 01:35:36,560 --> 01:35:38,740 dacă nu utilizați HTML caractere speciale, dacă 2144 01:35:38,740 --> 01:35:43,100 nu scăpa de această pentru a vă asigura că este OK, atunci aș putea trece în schimb, 2145 01:35:43,100 --> 01:35:46,910 să spunem aici vreau să spun imprimare sau ceva de genul asta, 2146 01:35:46,910 --> 01:35:51,070 apoi m-am putut trece pe aici un apel scenariu. 2147 01:35:51,070 --> 01:35:53,140 >> Așa că, în loc de doar obtinerea o variabilă, 2148 01:35:53,140 --> 01:35:54,960 Mi-ar executa atunci acest apel script. 2149 01:35:54,960 --> 01:35:57,065 Deci, în interiorul că script apel, ce face? 2150 01:35:57,065 --> 01:36:00,190 Document punct localizare, care va schimba locația documentului. 2151 01:36:00,190 --> 01:36:02,290 Așa că am de gând să redirecționeze în altă parte. 2152 01:36:02,290 --> 01:36:08,170 Se numește tip rău în acest exemplu, foarte bun. 2153 01:36:08,170 --> 01:36:10,536 Nu am putut gândi al cuvântului. 2154 01:36:10,536 --> 01:36:12,410 Și apoi, ce e chiar mai rău este că am de gând 2155 01:36:12,410 --> 01:36:16,832 pentru ca apoi setați cookie, care este un variabilă am în acest site. 2156 01:36:16,832 --> 01:36:19,040 Am de gând să se stabilească o egal a cookie documente punct. 2157 01:36:19,040 --> 01:36:20,660 Prin urmare, am de gând pentru a fura cookie dumneavoastră. 2158 01:36:20,660 --> 01:36:22,951 Și am de gând să redirecționeze unele informații către un site web 2159 01:36:22,951 --> 01:36:25,120 că tu nu ar trebui să fie accesarea. 2160 01:36:25,120 --> 01:36:29,250 Și acest lucru se întâmplă tot pentru că ești nu evadeze ce ai văzut. 2161 01:36:29,250 --> 01:36:29,910 Da? 2162 01:36:29,910 --> 01:36:32,160 >> Audiența: Deci, doar pentru a face că clar, e 2163 01:36:32,160 --> 01:36:37,550 vulnerable.com că este vulnerabil la acest lucru. 2164 01:36:37,550 --> 01:36:39,300 Așa că link poate apărea pe orice pagina dat. 2165 01:36:39,300 --> 01:36:42,200 Cineva face clic pe el, merge la vulnerable.com. 2166 01:36:42,200 --> 01:36:43,700 Ai o prăjitură de vulnerable.com. 2167 01:36:43,700 --> 01:36:46,670 Să spunem că Facebook este vulnerabil, așa facebook.com. 2168 01:36:46,670 --> 01:36:48,310 Ai cookie Facebook. 2169 01:36:48,310 --> 01:36:50,925 Ce face acest, ești O să facebook.com, 2170 01:36:50,925 --> 01:36:53,990 este imediat redirecționarea să badguy.com, 2171 01:36:53,990 --> 01:36:57,182 dar inclusiv informațiile cookie. 2172 01:36:57,182 --> 01:36:59,310 Deci, este o redirecționare rapid, dar cookie Facebook 2173 01:36:59,310 --> 01:37:02,572 este inclus cu redirecționare, și că e modul în care acestea [neauzit]. 2174 01:37:02,572 --> 01:37:04,280 Gabe: Da, nu e unele lucruri foarte medii 2175 01:37:04,280 --> 01:37:06,070 că oamenii pot face în cazul în care există acest lucru. 2176 01:37:06,070 --> 01:37:09,190 De exemplu, dacă Facebook permis toată lumea pentru a schimba numele de utilizator, 2177 01:37:09,190 --> 01:37:11,680 și nu au făcut nici o teste de corectitudine, pentru ca tu 2178 01:37:11,680 --> 01:37:16,810 ar putea introduce un lucru de activarea JavaScript-care schimbă imaginea la un hamster. 2179 01:37:16,810 --> 01:37:22,590 Și introduce aceeași JavaScript în toată lumea care vede pagina ta. 2180 01:37:22,590 --> 01:37:26,400 Deci, toată lumea care vede pagina dvs. are același lucru în numele de utilizator. 2181 01:37:26,400 --> 01:37:30,104 Și pentru că este un virus, se răspândește exponențial. 2182 01:37:30,104 --> 01:37:32,270 Davin: Vom sări ultimul o, iar apoi am terminat. 2183 01:37:32,270 --> 01:37:34,120 Deci, aceasta este doar un alt exemplu. 2184 01:37:34,120 --> 01:37:36,120 Deci, acest lucru este că nu sunt scăpa masa lor SQL. 2185 01:37:36,120 --> 01:37:37,090 Astfel încât să puteți picătură. 2186 01:37:37,090 --> 01:37:38,805 Deci vrei să scape lucrurile. 2187 01:37:38,805 --> 01:37:44,010 Acesta a fost exemplul anterior cu site scripting cruce. 2188 01:37:44,010 --> 01:37:45,430 Îmi pare rău că a fugit un pic tarziu. 2189 01:37:45,430 --> 01:37:46,870 Mâine, îmi pare rău! 2190 01:37:46,870 --> 01:37:48,560 Mâine, avem ore de birou. 2191 01:37:48,560 --> 01:37:50,870 Deci orelor de serviciu în Cabbot 08:00 - 11:00. 2192 01:37:50,870 --> 01:37:55,240 Orele de birou sunt strict pentru întrebări test. 2193 01:37:55,240 --> 01:37:56,587