1 00:00:00,000 --> 00:00:05,616 2 00:00:05,616 --> 00:00:07,030 >> HANNAH Blumberg: Max toată lumea. 3 00:00:07,030 --> 00:00:09,530 Vom începe doar câteva minute mai devreme 4 00:00:09,530 --> 00:00:11,738 deoarece avem o mulțime de material pentru a obține prin intermediul. 5 00:00:11,738 --> 00:00:12,790 Sunt Hannah. 6 00:00:12,790 --> 00:00:13,865 Sunt un TF. 7 00:00:13,865 --> 00:00:16,239 Maria va fi alătura ne în doar câteva minute. 8 00:00:16,239 --> 00:00:17,560 Predă sectiunea chiar înainte. 9 00:00:17,560 --> 00:00:19,351 Predau Partea dreaptă după, așa că vom 10 00:00:19,351 --> 00:00:21,200 să-l păstrați la oră și jumătate. 11 00:00:21,200 --> 00:00:25,490 >> Deci, după cum veți vedea aici, avem destul de câteva subiecte avem nevoie pentru a obține prin intermediul, 12 00:00:25,490 --> 00:00:27,200 așa că vom merge un pic rapid. 13 00:00:27,200 --> 00:00:31,140 Dar dacă în orice punct spunem ceva prea repede sau nu înțelegeți, 14 00:00:31,140 --> 00:00:33,170 nu ezitați să întrerupă cu întrebări. 15 00:00:33,170 --> 00:00:36,610 Vrem să fie în măsură să facă acest lucru o revizuiască sesiune la fel de util pentru toți 16 00:00:36,610 --> 00:00:37,973 pe cat posibil. 17 00:00:37,973 --> 00:00:38,920 Incredibil. 18 00:00:38,920 --> 00:00:41,650 >> Așa că haideți să sară chiar cu unele subiecte pe care le de fapt 19 00:00:41,650 --> 00:00:46,980 foarte, foarte pe scurt acoperite de test 0 în test 0 sesiunea de reexaminare. 20 00:00:46,980 --> 00:00:48,840 Deci, începând cu liste legate. 21 00:00:48,840 --> 00:00:52,090 Deci, doar asigurați-vă că aveți ceva cunoștințe de bază despre liste legate 22 00:00:52,090 --> 00:00:55,110 și sunt confortabile face unele dintre operațiunile de bază. 23 00:00:55,110 --> 00:00:58,560 >> Deci, doar pentru a revizui, legat Listele sunt mai bune decât tablouri 24 00:00:58,560 --> 00:01:01,020 deoarece acestea pot crește dinamic. 25 00:01:01,020 --> 00:01:03,300 Deci avem acest avantaj imens. 26 00:01:03,300 --> 00:01:06,031 Am văzut le-a folosit în tabele de dispersie, atunci când ne-am 27 00:01:06,031 --> 00:01:08,280 Nu știu exact cât de multe lucruri pe care le vom dori 28 00:01:08,280 --> 00:01:10,900 pentru a insera în structura noastra de date. 29 00:01:10,900 --> 00:01:15,700 Din păcate, ne-am bucăți de lista legat peste tot de memorie, 30 00:01:15,700 --> 00:01:20,820 așa că nu va fi în mod necesar capabil să facă accesul timp constant 31 00:01:20,820 --> 00:01:22,502 la orice element din lista de legat. 32 00:01:22,502 --> 00:01:24,210 În scopul de a găsi o element particular, am 33 00:01:24,210 --> 00:01:26,510 trebuie să repeta toate mod de la început. 34 00:01:26,510 --> 00:01:30,610 Deci, ține cont de faptul că cele mai multe dintre operațiunile de bază sunt omega din 1. 35 00:01:30,610 --> 00:01:32,130 Deci, inserție este doar de gând să ia o. 36 00:01:32,130 --> 00:01:37,520 Ștergeți va lua n când am Trebuie să găsim o din listă. 37 00:01:37,520 --> 00:01:39,260 Și de căutare ar putea avea, în cel mai rău, n. 38 00:01:39,260 --> 00:01:42,330 Nu putem face ceva de genul căutare binară pe o listă legată 39 00:01:42,330 --> 00:01:45,101 din moment ce nu putem pur și simplu sari aleatoriu la mijloc. 40 00:01:45,101 --> 00:01:45,600 Misto. 41 00:01:45,600 --> 00:01:48,160 42 00:01:48,160 --> 00:01:48,960 Incredibil. 43 00:01:48,960 --> 00:01:50,270 >> Un pic de stive. 44 00:01:50,270 --> 00:01:53,980 Acest lucru, din nou, a venit la test 0, astfel încât să ar trebui să fie foarte confortabil cu ea. 45 00:01:53,980 --> 00:01:57,210 Dar pentru stive, vă rugăm să-și amintească un teanc de tăvi. 46 00:01:57,210 --> 00:01:59,940 Si va fi primul în ultimul afară. 47 00:01:59,940 --> 00:02:02,272 Așa că am stiva lucrurile în stivă, și apoi 48 00:02:02,272 --> 00:02:04,980 dacă încercăm să ia ceva off-- pe care le numim popping off 49 00:02:04,980 --> 00:02:06,581 stack-- venim pe partea de sus. 50 00:02:06,581 --> 00:02:09,289 Și dacă vrem să pună ceva în stivă, o numim împingere. 51 00:02:09,289 --> 00:02:13,170 Deci, este întotdeauna o să fie în creștere din partea de jos ca un teanc de tăvi. 52 00:02:13,170 --> 00:02:14,540 Incredibil. 53 00:02:14,540 --> 00:02:17,607 >> Am implementat stive văzut cu ambele liste legate și matrice. 54 00:02:17,607 --> 00:02:19,440 Dacă sunteți de punere în aplicare cu tablouri, pe care doriți 55 00:02:19,440 --> 00:02:22,350 să vă asigurați că pentru a ține evidența atât dimensiunea și capacitatea. 56 00:02:22,350 --> 00:02:27,540 Deci, dimensiunea va fi curent Numărul de lucruri în stack-ul tău, 57 00:02:27,540 --> 00:02:32,900 întrucât capacitatea este numărul total de lucruri pe care le puteți stoca în stiva. 58 00:02:32,900 --> 00:02:34,220 Misto. 59 00:02:34,220 --> 00:02:35,767 >> Foarte similar, avem cozi. 60 00:02:35,767 --> 00:02:38,850 În acest caz, în loc de gândire despre un teanc de tăvi, cred că de o linie. 61 00:02:38,850 --> 00:02:40,697 Acest lucru se întâmplă să fie primul intrat, primul ieșit. 62 00:02:40,697 --> 00:02:42,780 Deci, dacă sunteți captuseala pentru ceva de la magazin, 63 00:02:42,780 --> 00:02:46,920 sperăm că persoana pentru prima dată în linia va fi ajutat mai întâi. 64 00:02:46,920 --> 00:02:49,350 >> În loc de a spune împinge și pop cum facem pentru stivă, 65 00:02:49,350 --> 00:02:52,000 spunem doar Puneți în coadă și dequeue. 66 00:02:52,000 --> 00:02:54,970 Și din nou, în cazul în care sunteți punerea în aplicare a acestei cu o serie, 67 00:02:54,970 --> 00:02:56,720 avem nevoie pentru a urmări de nu numai dimensiunea 68 00:02:56,720 --> 00:03:02,390 și capacitate, dar, de asemenea, capul, care va fi partea din față a coada noastre. 69 00:03:02,390 --> 00:03:03,010 Misto. 70 00:03:03,010 --> 00:03:05,770 Orice întrebări cu privire la orice de care? 71 00:03:05,770 --> 00:03:06,320 Incredibil. 72 00:03:06,320 --> 00:03:07,640 Mutarea dreapta de-a lungul. 73 00:03:07,640 --> 00:03:08,564 >> OK, tabele de dispersie. 74 00:03:08,564 --> 00:03:10,605 Iată în cazul în care începe să obține cu adevărat interesant. 75 00:03:10,605 --> 00:03:14,150 Deci, un tabel hash este o punere în aplicare al unui tablou asociativ. 76 00:03:14,150 --> 00:03:16,700 Deci, practic ceea ce sa întâmplat este avem toate această intrare, 77 00:03:16,700 --> 00:03:18,750 si ne-am da un hash Funcția care spune, 78 00:03:18,750 --> 00:03:21,840 OK, aceasta este unde în tabel hash acesta face parte. 79 00:03:21,840 --> 00:03:24,860 >> Deci cel mai simplu funcție hash pe care le-am văzut este doar că 80 00:03:24,860 --> 00:03:28,170 OK, să presupunem că vrem să pună siruri de caractere in masa noastră hash. 81 00:03:28,170 --> 00:03:30,870 Și o idee foarte simplu ar putea fi de spus, OK, 82 00:03:30,870 --> 00:03:34,350 hai doar un fel de prima literă a cuvântului. 83 00:03:34,350 --> 00:03:37,570 Astfel încât să puteți vedea aici, luăm banane, l-am pus printr-o funcție hash, 84 00:03:37,570 --> 00:03:40,190 și se spune, hei, că ar trebui să meargă la index 1. 85 00:03:40,190 --> 00:03:45,120 >> Deci ne putem gândi, în esență, de un hash tabel ca o grămadă de diferite cupe. 86 00:03:45,120 --> 00:03:49,880 Și fiecare dintre aceste găleți va să dețină capul unei liste legate. 87 00:03:49,880 --> 00:03:55,030 Și în această listă este legată în cazul în care putem de fapt, a pus piese diferite de date. 88 00:03:55,030 --> 00:03:57,820 >> Deci, scufundări un pic mai mult într-o funcție hash, aici e 89 00:03:57,820 --> 00:03:59,870 exemplul Eu doar descris în cazul în care spunem doar, 90 00:03:59,870 --> 00:04:02,460 OK, să ia prima literă a cuvântului și suntem 91 00:04:02,460 --> 00:04:03,990 gând să-l sorta în găleți. 92 00:04:03,990 --> 00:04:08,490 Deci, probabil, nu va fi de 26 cupe, unul pentru fiecare literă a alfabetului. 93 00:04:08,490 --> 00:04:10,090 De ce nu este aceasta o funcție hash mare? 94 00:04:10,090 --> 00:04:13,461 Ceea ce face acest non-ideal? 95 00:04:13,461 --> 00:04:13,960 Da. 96 00:04:13,960 --> 00:04:15,790 >> Audiența: Vei pentru a avea coliziuni. 97 00:04:15,790 --> 00:04:16,390 >> HANNAH Blumberg: Da, exact. 98 00:04:16,390 --> 00:04:18,000 Vei avea coliziuni. 99 00:04:18,000 --> 00:04:18,954 Deci asta e un lucru. 100 00:04:18,954 --> 00:04:21,620 Și vom vorbi despre cum putem stabili coliziuni în doar o secundă. 101 00:04:21,620 --> 00:04:23,980 O altă problemă cu acest special funcție hash 102 00:04:23,980 --> 00:04:25,980 este diferit nostru găleți vor fi 103 00:04:25,980 --> 00:04:28,960 de destul de drastic diferite dimensiuni. 104 00:04:28,960 --> 00:04:33,840 >> Știm că există o mulțime mai multe cuvinte care încep cu A mare de X, 105 00:04:33,840 --> 00:04:38,980 astfel vom avea foarte găleți dezechilibrate din masa noastră hash. 106 00:04:38,980 --> 00:04:40,050 Misto. 107 00:04:40,050 --> 00:04:41,340 Deci da, să ne întoarcem la punctul de coliziuni. 108 00:04:41,340 --> 00:04:42,900 Ce facem în cazul în care există o coliziune? 109 00:04:42,900 --> 00:04:44,490 >> Avem câteva opțiuni diferite. 110 00:04:44,490 --> 00:04:47,600 Deci unul, asa ca presupunem că încercăm pentru a pune în Berry masa noastră hash. 111 00:04:47,600 --> 00:04:50,370 Si vom vedea, oh, ne-o dorim să-l pună în indexul 1, 112 00:04:50,370 --> 00:04:52,070 dar banana trăiește deja acolo. 113 00:04:52,070 --> 00:04:53,110 Ce vom face? 114 00:04:53,110 --> 00:04:54,560 Avem două opțiuni principale. 115 00:04:54,560 --> 00:04:58,050 >> Numărul unu este, putem spune, OK, nu exista nici o cameră în indexul 1, 116 00:04:58,050 --> 00:05:03,210 dar hai să continui să cauți prin până când vom găsi un alt loc deschis. 117 00:05:03,210 --> 00:05:08,490 Deci vom spune, OK, Să-l pună în loc de 3. 118 00:05:08,490 --> 00:05:09,240 Asta e o opțiune. 119 00:05:09,240 --> 00:05:11,470 Asta se numește liniar sondare. 120 00:05:11,470 --> 00:05:15,500 >> Și un al doilea opțiune este de a spune, OK, bine, hai să fac fiecare dintre aceste găleți 121 00:05:15,500 --> 00:05:17,470 fie șefi de liste legate. 122 00:05:17,470 --> 00:05:21,910 Și e OK dacă nu e mai decât un singur lucru într-o găleată. 123 00:05:21,910 --> 00:05:23,820 Vom doar de gând să adăugați-l pe față. 124 00:05:23,820 --> 00:05:26,032 Deci, aici puteți vedea, OK, atunci când am introdus Berry, am 125 00:05:26,032 --> 00:05:28,240 doar a luat banana, un fel de împins-o peste un pic 126 00:05:28,240 --> 00:05:29,842 și a aruncat un fruct acolo. 127 00:05:29,842 --> 00:05:31,050 Și asta e, de asemenea, în totalitate bine. 128 00:05:31,050 --> 00:05:32,830 Aceasta se numește înlănțuirea separată. 129 00:05:32,830 --> 00:05:38,100 Vă puteți gândi la acest lucru ca un fel de o serie de capete de liste legate. 130 00:05:38,100 --> 00:05:41,950 Orice întrebări cu privire la hash tabele, funcții hash? 131 00:05:41,950 --> 00:05:44,290 Incredibil. 132 00:05:44,290 --> 00:05:45,470 >> Arbori și încearcă. 133 00:05:45,470 --> 00:05:47,287 Deci, un copac este nici un fel de structura de date 134 00:05:47,287 --> 00:05:49,453 în care există un fel ierarhiei sau un fel 135 00:05:49,453 --> 00:05:51,247 de clasament la diferite obiecte tale. 136 00:05:51,247 --> 00:05:53,580 Iar acest lucru va deveni super- clar când vom vedea un exemplu. 137 00:05:53,580 --> 00:05:56,960 Și am văzut încercări, de-a lungul cu tabele de dispersie, în pset5-- 138 00:05:56,960 --> 00:06:00,700 care, din nou, joc total echitabil pentru acest quiz-- ca un alt date 139 00:06:00,700 --> 00:06:03,110 structuri care putem stoca lucruri diferite. 140 00:06:03,110 --> 00:06:06,782 În cazul în dicționarul, am depozitat o grămadă de cuvinte. 141 00:06:06,782 --> 00:06:08,240 Deci, haideți să aruncăm o privire la unele copaci. 142 00:06:08,240 --> 00:06:10,190 Deci, acesta este un exemplu de un copac. 143 00:06:10,190 --> 00:06:13,105 Ea are un fel de structură, că structură ierarhică, 144 00:06:13,105 --> 00:06:15,920 în cazul în care puteți vedea că acest 1 nod la partea de sus 145 00:06:15,920 --> 00:06:20,750 are un fel de rang mai sus 2 și 3, care sunt mai sus 4, 5, 6 și 7 și, 146 00:06:20,750 --> 00:06:22,860 care sunt mai sus 8 și 9. 147 00:06:22,860 --> 00:06:25,210 Deci asta e tot ce ne referim de un copac, astfel încât să puteți doar un fel 148 00:06:25,210 --> 00:06:26,660 de imagine acest lucru în cap. 149 00:06:26,660 --> 00:06:29,050 >> Acum, avem un cuplu de copaci mai specializate. 150 00:06:29,050 --> 00:06:31,070 Deci un exemplu este un arbore binar. 151 00:06:31,070 --> 00:06:33,290 Și un arbore binar este, din nou, doar de gând să fie 152 00:06:33,290 --> 00:06:37,040 o structură de date cu un fel de ierarhie, dar fiecare dintre nodurile 153 00:06:37,040 --> 00:06:38,650 poate avea cel mult doi copii. 154 00:06:38,650 --> 00:06:41,530 Asta în cazul în binar cuvântul vine de la. 155 00:06:41,530 --> 00:06:43,410 Deci, acesta este un exemplu de un arbore binar. 156 00:06:43,410 --> 00:06:45,720 Așa că e un mic categorie de copaci. 157 00:06:45,720 --> 00:06:48,960 >> Acum sa trecem chiar mai specifică și vorbesc despre binar trees-- căutare binară 158 00:06:48,960 --> 00:06:51,310 copaci, mai degrabă. 159 00:06:51,310 --> 00:06:56,430 Deci, aici ideea este nu numai fiecare nod au cel mult doi copii, 160 00:06:56,430 --> 00:07:00,300 dar toate pe copii la stânga vor fi mai mici 161 00:07:00,300 --> 00:07:03,450 și toate pe copii la dreptul vor fi mai mari. 162 00:07:03,450 --> 00:07:05,890 Deci, observa in doar nostru arbore binar, nu e 163 00:07:05,890 --> 00:07:08,650 nici o relație între numerele. 164 00:07:08,650 --> 00:07:12,990 Dar, în căutarea noastră binar copac, vom vedea, bine, aici e 44. 165 00:07:12,990 --> 00:07:17,080 Și fiecare număr la stânga de 44 este totul mai mic și la dreapta 166 00:07:17,080 --> 00:07:17,920 este mai mare. 167 00:07:17,920 --> 00:07:20,130 >> Și care deține la fiecare nivel al arborelui. 168 00:07:20,130 --> 00:07:24,810 Deci, aici, aceasta este mai mică decât 22 și aceasta este mai mare decât 22. 169 00:07:24,810 --> 00:07:26,390 Și asta e arbore binar de căutare. 170 00:07:26,390 --> 00:07:28,900 De ce credem că se numește un arbore binar de căutare? 171 00:07:28,900 --> 00:07:30,651 Ce algoritm nu-l vă reamintesc de? 172 00:07:30,651 --> 00:07:31,650 Audiența: căutare binară. 173 00:07:31,650 --> 00:07:32,480 HANNAH Blumberg: căutare binară. 174 00:07:32,480 --> 00:07:35,150 Pentru că dacă sunteți în căutarea pentru o Numărul special în acest copac, 175 00:07:35,150 --> 00:07:38,800 la fiecare punct, puteți bate doar jumătate off de copac, care este mare. 176 00:07:38,800 --> 00:07:43,800 Și pentru ca ne va da ceva care arata foarte mult ca de căutare binară. 177 00:07:43,800 --> 00:07:45,870 Alte intrebari? 178 00:07:45,870 --> 00:07:47,570 Bine, rece. 179 00:07:47,570 --> 00:07:48,560 >> Bine, încearcă. 180 00:07:48,560 --> 00:07:49,657 Tuturor favorit. 181 00:07:49,657 --> 00:07:51,990 Astfel încât acesta este exemplul pe care am vazut o gramada de clasă. 182 00:07:51,990 --> 00:07:54,710 Și din nou, aceasta este doar un alt fel încât să putem stoca date. 183 00:07:54,710 --> 00:07:57,530 În cazul în dicționarul, din nou, acest lucru se doar de gând să fie siruri de caractere. 184 00:07:57,530 --> 00:08:00,870 Deci, haideți să vedem ce acest fapt arata ca la un nivel ușor mai scăzut. 185 00:08:00,870 --> 00:08:03,690 >> Deci, haideți să aruncăm o privire la un nod într-o trie. 186 00:08:03,690 --> 00:08:07,532 Si vom vedea, OK, nu se întâmplă să fie un Boolean și un nod, 187 00:08:07,532 --> 00:08:09,170 un pointer la un nod. 188 00:08:09,170 --> 00:08:11,400 Și vom vedea că Boolean este numit is_word. 189 00:08:11,400 --> 00:08:13,490 Deci, în esență, asta e O să corespundă 190 00:08:13,490 --> 00:08:16,750 la aceste triunghiuri mici care spune, dacă ați ajuns aici, 191 00:08:16,750 --> 00:08:19,100 ați găsit un cuvânt complet. 192 00:08:19,100 --> 00:08:23,670 >> Știm că "Turing" peste aici este un cuvânt complet, 193 00:08:23,670 --> 00:08:28,030 întrucât doar T-U-R nu este un cuvânt pentru că noi nu vedem că puțin delta. 194 00:08:28,030 --> 00:08:31,440 Și că puțin delta, din nou, corespunde acestei is_word, 195 00:08:31,440 --> 00:08:34,480 acest is_word Boolean. 196 00:08:34,480 --> 00:08:36,320 Și apoi avem o serie de copii. 197 00:08:36,320 --> 00:08:39,860 Deci, la fiecare nivel, au un anumit nod, 198 00:08:39,860 --> 00:08:42,470 și că punctele de nod la o matrice a întregului alfabet. 199 00:08:42,470 --> 00:08:44,346 >> Deci, puteți vedea, din nou, în acest picture-- Sunt 200 00:08:44,346 --> 00:08:48,170 continua să sari înapoi și forth-- că matrice în partea de sus 201 00:08:48,170 --> 00:08:51,640 are o grămadă de diferite noduri vin jos de pe ea. 202 00:08:51,640 --> 00:08:57,140 Ea are 26, sau 27, dacă doriți pentru a include un caracter suplimentar. 203 00:08:57,140 --> 00:09:01,320 Iar acest lucru ne dă un modalitate de a stoca datele noastre 204 00:09:01,320 --> 00:09:04,450 într-un mod care poate fi privit pe care poti sa te uiti în sus super rapid. 205 00:09:04,450 --> 00:09:06,650 Care este timpul de căutare pentru un trie? 206 00:09:06,650 --> 00:09:07,970 >> Audiența: [neauzit]. 207 00:09:07,970 --> 00:09:08,300 >> HANNAH Blumberg: Da. 208 00:09:08,300 --> 00:09:09,550 În teorie, e timpul constant. 209 00:09:09,550 --> 00:09:13,230 Este doar o să fie de mărimea cuvântul pe care doriți să căutați. 210 00:09:13,230 --> 00:09:15,950 Chiar dacă adăugăm o catralioane mai multe cuvinte pentru trie nostru, 211 00:09:15,950 --> 00:09:18,160 nu ne va lua nici mai mult pentru a determina 212 00:09:18,160 --> 00:09:19,690 dacă un anumit cuvânt este în trie. 213 00:09:19,690 --> 00:09:21,412 Așa că e foarte frumos. 214 00:09:21,412 --> 00:09:23,697 >> Audiența: Ai făcut doar inițializa că matrice? 215 00:09:23,697 --> 00:09:24,780 Ai ratat un punct sau două. 216 00:09:24,780 --> 00:09:26,130 Poți să vorbești despre că pentru o secundă? 217 00:09:26,130 --> 00:09:26,680 >> HANNAH Blumberg: Sigur, absolut. 218 00:09:26,680 --> 00:09:27,590 Buna intrebare. 219 00:09:27,590 --> 00:09:31,140 Întrebarea a fost, ne-am au o matrice care este 220 00:09:31,140 --> 00:09:34,180 Va trebui stea nod ca spre deosebire de doar nodul, nu? 221 00:09:34,180 --> 00:09:35,180 Misto. 222 00:09:35,180 --> 00:09:37,990 Deci, aici ce spunem este oferta noastră este doar 223 00:09:37,990 --> 00:09:40,035 Va fi pointeri la alte matrice. 224 00:09:40,035 --> 00:09:42,910 Deci, este o essentially-- fel de se simte ca o listă legată în acest mod 225 00:09:42,910 --> 00:09:46,620 unde fiecare dintre acești copii doar punctul de nodul următor. 226 00:09:46,620 --> 00:09:49,030 >> Și modul în care ne de fapt determina, hei, OK, 227 00:09:49,030 --> 00:09:52,320 am reiterat printr-un întreg cuvânt, este acest cuvânt în dicționar, 228 00:09:52,320 --> 00:09:54,476 vom verifica doar acest is_word. 229 00:09:54,476 --> 00:09:55,100 Marea întrebare. 230 00:09:55,100 --> 00:09:55,675 Da. 231 00:09:55,675 --> 00:09:56,216 Audiența: OK. 232 00:09:56,216 --> 00:09:57,470 Deci, ceea ce a fost runtime pentru trie? 233 00:09:57,470 --> 00:09:58,386 >> HANNAH Blumberg: Sigur. 234 00:09:58,386 --> 00:10:01,852 Deci, runtime pentru un trie de căutare va fi constantă de timp. 235 00:10:01,852 --> 00:10:04,310 Deci, este doar de gând să fie Numărul de litere din cuvântul. 236 00:10:04,310 --> 00:10:06,310 Nu este dependent de dimensiunea dicționarului 237 00:10:06,310 --> 00:10:09,510 sau dimensiunea structurii de date. 238 00:10:09,510 --> 00:10:12,170 Deci, aici este un exemplu ușor simplu. 239 00:10:12,170 --> 00:10:15,430 >> În acest caz, puteți vedea că liliacul cuvânt este în dicționar 240 00:10:15,430 --> 00:10:18,900 și ai zoom, dar nu au ceva de genul zoo. 241 00:10:18,900 --> 00:10:20,050 Cum ne-ar face Zoo? 242 00:10:20,050 --> 00:10:24,276 Cum adăugăm zoo nostru Dicționar, să trie nostru? 243 00:10:24,276 --> 00:10:24,776 Da. 244 00:10:24,776 --> 00:10:27,014 >> Audiența: Asigurați-is_word valabil si pentru [neauzit]. 245 00:10:27,014 --> 00:10:27,930 HANNAH Blumberg: Bine. 246 00:10:27,930 --> 00:10:31,731 Deci am spune Z-O-O, iar apoi ne-am doriți să verificați la caseta de asemenea. 247 00:10:31,731 --> 00:10:32,230 Grozav. 248 00:10:32,230 --> 00:10:35,160 249 00:10:35,160 --> 00:10:37,930 Să comparăm foarte scurt încearcă versus tabele de dispersie. 250 00:10:37,930 --> 00:10:39,770 Încercări sunt într-adevăr mare pentru că, așa cum am spus, 251 00:10:39,770 --> 00:10:41,610 ele oferă constant timp de căutare. 252 00:10:41,610 --> 00:10:44,285 Dar dezavantajul imens este că sunt enorm. 253 00:10:44,285 --> 00:10:46,160 Puteți obține sens, chiar uitandu-se la ea, 254 00:10:46,160 --> 00:10:48,454 că va lua o mare cantitate de memorie. 255 00:10:48,454 --> 00:10:50,620 Deci, ei o să fie mult mai mare decât tabele de dispersie, 256 00:10:50,620 --> 00:10:52,270 dar ei vor da ne ori mult mai rapid de căutare. 257 00:10:52,270 --> 00:10:54,478 Deci, asta e un fel de dvs. compromis, ceea ce îți pasă, 258 00:10:54,478 --> 00:10:57,350 fie că este vorba de viteză sau de memorie. 259 00:10:57,350 --> 00:11:02,251 Orice întrebări cu privire la oricare dintre care, toate structurile C date. 260 00:11:02,251 --> 00:11:02,750 Frumoasa. 261 00:11:02,750 --> 00:11:03,250 BINE. 262 00:11:03,250 --> 00:11:07,322 Vom trece la un mic bit de dezvoltare web cu Maria. 263 00:11:07,322 --> 00:11:08,280 MARIA ZLATKOVA: Lovely. 264 00:11:08,280 --> 00:11:09,036 BINE. 265 00:11:09,036 --> 00:11:10,380 >> HANNAH Blumberg: Puteți folosi laptop-ul meu. 266 00:11:10,380 --> 00:11:11,255 >> MARIA ZLATKOVA: Nisa. 267 00:11:11,255 --> 00:11:13,320 268 00:11:13,320 --> 00:11:14,912 Bine, in regula. 269 00:11:14,912 --> 00:11:17,120 Așa cum am muta acum la web dezvoltare, am vorbit un pic 270 00:11:17,120 --> 00:11:20,680 despre schimbarea permisiunilor de fișiere și directoare 271 00:11:20,680 --> 00:11:24,190 astfel încât să poată fi accesibile la alți utilizatori, în lume, 272 00:11:24,190 --> 00:11:28,640 și astfel încât să putem vedea cum practic le putem transmite 273 00:11:28,640 --> 00:11:32,600 când vom dezvolta site-uri web, cum ar fi lucruri că am fost cea mai mare parte a face. 274 00:11:32,600 --> 00:11:36,400 >> Așa că am văzut comanda chmod, care este modul de schimbare, de fapt. 275 00:11:36,400 --> 00:11:39,300 Asta-i o comandă Linux și se schimbă permisiunile de acces 276 00:11:39,300 --> 00:11:40,410 de obiecte de sistem de fișiere. 277 00:11:40,410 --> 00:11:43,370 Și un obiect sistem de fișiere este doar un director, un fișier, 278 00:11:43,370 --> 00:11:46,810 ceva care puteți schimba permisiunile. 279 00:11:46,810 --> 00:11:53,750 >> Deci, pentru a vedea permisiunile de fișiere, am tastați comanda ls, lista, -l. 280 00:11:53,750 --> 00:11:56,500 Și când am tip asta, vedea, de obicei unele permisiuni 281 00:11:56,500 --> 00:11:59,660 care arata un fel de acest în fața unui nume de director. 282 00:11:59,660 --> 00:12:01,260 Deci, d se referă la director. 283 00:12:01,260 --> 00:12:05,930 Și apoi ne-am trei triade care practic 284 00:12:05,930 --> 00:12:11,675 se referă la permisiunile fie un utilizator, un grup, sau lumea. 285 00:12:11,675 --> 00:12:16,490 >> Tipurile de permisiuni pe care putem au pentru aceste trei grupuri de persoane 286 00:12:16,490 --> 00:12:20,830 sunt fie r pentru citire, W pentru scrie, și X pentru a executa. 287 00:12:20,830 --> 00:12:23,650 Și putem avea cele pentru grupul și lume, precum. 288 00:12:23,650 --> 00:12:26,940 Lucru complicat este că, uneori, când tastați comanda chmod, 289 00:12:26,940 --> 00:12:32,960 am un numar de tip care a constat din trei biți. 290 00:12:32,960 --> 00:12:36,990 Deci, am putea face ca 777 și că, practic, 291 00:12:36,990 --> 00:12:40,450 sa referit la valoarea adăugată de fiecare dintre aceste triade 292 00:12:40,450 --> 00:12:45,060 pentru că r-ar referi la 4, w-ar se referă la 2, și x-ar referi la 1, 293 00:12:45,060 --> 00:12:50,020 asa ca atunci cand adăugate, fiecare dintre numerele va veni până la un număr cumulativ 294 00:12:50,020 --> 00:12:52,750 la o valoare cumulată între 0 și 7. 295 00:12:52,750 --> 00:12:55,150 Deci, am putea avea, de asemenea 0 pentru permisiuni la toate. 296 00:12:55,150 --> 00:12:58,200 Și asta ne-ar da de fapt permisiunile pentru fiecare utilizator, 297 00:12:58,200 --> 00:13:00,450 grupul, sau lumea. 298 00:13:00,450 --> 00:13:02,620 Orice întrebări cu privire la acest până acum? 299 00:13:02,620 --> 00:13:05,331 >> Audiența: Ai spus citit a fost de 4? 300 00:13:05,331 --> 00:13:06,164 MARIA ZLATKOVA: Da. 301 00:13:06,164 --> 00:13:07,568 Audiența: [neauzit]. 302 00:13:07,568 --> 00:13:08,504 HANNAH Blumberg: Da. 303 00:13:08,504 --> 00:13:11,790 Audiența: Și apoi prin adăugarea tuturor celor alții ar indica numărul de telefon. 304 00:13:11,790 --> 00:13:12,665 MARIA ZLATKOVA: Da. 305 00:13:12,665 --> 00:13:14,970 Da. 306 00:13:14,970 --> 00:13:17,810 Acestea sunt întrebări mari. 307 00:13:17,810 --> 00:13:20,490 Minunat. 308 00:13:20,490 --> 00:13:25,340 Apoi, am sărit în HTML și un mai multe despre dezvoltare web. 309 00:13:25,340 --> 00:13:27,990 Deci, HTML înseamnă doar HyperText Markup Language. 310 00:13:27,990 --> 00:13:30,460 Și că este de marcare limbă, care este un standard 311 00:13:30,460 --> 00:13:32,720 că este folosit pentru a crea pagini web. 312 00:13:32,720 --> 00:13:35,750 >> Se numește un limbaj de markup pentru că nu este de fapt compilat. 313 00:13:35,750 --> 00:13:40,310 Ea nu spune cum unele cod ar trebui să fi executate sau ceva de genul asta. 314 00:13:40,310 --> 00:13:44,800 Doar delimiteaza și descrie cum un web 315 00:13:44,800 --> 00:13:46,840 Pagina ar trebui să fie înființate cu fiecare din elementele sale 316 00:13:46,840 --> 00:13:48,460 și modul în care acestea ar trebui să arate pentru utilizator. 317 00:13:48,460 --> 00:13:53,090 318 00:13:53,090 --> 00:13:57,110 >> Unele dintre tag-uri HTML pe care le trecut sunt următoarele. 319 00:13:57,110 --> 00:14:00,500 Toate documentele noastre HTML a început cu HTML DOCTYPE. 320 00:14:00,500 --> 00:14:02,550 Apoi avem întotdeauna tag-ul html. 321 00:14:02,550 --> 00:14:03,930 Avem un cap si un corp. 322 00:14:03,930 --> 00:14:07,890 Și este important ca HTML are acest tip de structuri imbricate 323 00:14:07,890 --> 00:14:09,280 pentru că este foarte clar. 324 00:14:09,280 --> 00:14:13,200 Și atunci devine foarte clar atunci când ne nevoie pentru a deschide si de fapt tag-uri aproape. 325 00:14:13,200 --> 00:14:18,400 Și întotdeauna avem nevoie pentru a închide tag-uri pe care le-am deschis. 326 00:14:18,400 --> 00:14:23,170 >> Și aici avem unele dintre tipurile de lucruri înainte pe care le doresc să aibă. 327 00:14:23,170 --> 00:14:26,580 Deci avem, de exemplu, titlul de CS50. 328 00:14:26,580 --> 00:14:31,980 Și apoi ne-am de fapt, poate lega o foaie de stil 329 00:14:31,980 --> 00:14:34,030 care definește modul în care ne stil site-ul nostru. 330 00:14:34,030 --> 00:14:35,650 Asta este CSS. 331 00:14:35,650 --> 00:14:39,320 Vom trece peste o în următoarele două diapozitive, de asemenea. 332 00:14:39,320 --> 00:14:42,580 >> În cadrul aparatului, ne-am stabilit unele clase și ID-uri. 333 00:14:42,580 --> 00:14:45,860 Și, ca un memento, din nou, ID-urile sunt unice și clase 334 00:14:45,860 --> 00:14:47,390 pot fi atribuite mai multe elemente. 335 00:14:47,390 --> 00:14:52,110 Și asta înseamnă doar că putem folosi clase și ID-urile 336 00:14:52,110 --> 00:14:55,860 în alte structures-- așa, pentru exemplu, în termen de fișiere CSS sau stil 337 00:14:55,860 --> 00:15:00,940 sheets-- pentru a se referi la elemente specifice și, practic spune că vrem să stil 338 00:15:00,940 --> 00:15:03,280 sau de proiectare un element într-un fel special. 339 00:15:03,280 --> 00:15:06,440 Și ne referim la ele prin ID-urile și clasele lor. 340 00:15:06,440 --> 00:15:09,870 Si ne putem referi, de asemenea, la lucruri diferite de tag-uri, precum și, 341 00:15:09,870 --> 00:15:13,830 dar ID-urile și clase doar să ne dea câteva versatilitate si ce anume ne 342 00:15:13,830 --> 00:15:15,850 vreau să mă refer la. 343 00:15:15,850 --> 00:15:19,620 >> Deci, doar un exemplu. 344 00:15:19,620 --> 00:15:22,730 Putem, din nou, în cadrul un fișier CSS care ne 345 00:15:22,730 --> 00:15:25,770 doriți să o definiți unele style-- astfel culori, fonturi, 346 00:15:25,770 --> 00:15:30,340 și chestii de genul that-- putem defini stilul pentru un corp. 347 00:15:30,340 --> 00:15:32,640 Deci, care ar defini pentru întreaga tag-ul body. 348 00:15:32,640 --> 00:15:36,160 Dar atunci putem defini, de asemenea un stil de un #title. 349 00:15:36,160 --> 00:15:40,390 Și din nou, hashtag se referă nostru ID-ul și punctul se referă la clasa noastră. 350 00:15:40,390 --> 00:15:44,760 >> Și apoi pentru .INFO, am puteți seta, de asemenea, unele atribute. 351 00:15:44,760 --> 00:15:49,750 Și din nou, când ne întoarcem, am avut nostru clasa numita informații și titlul nostru de identitate. 352 00:15:49,750 --> 00:15:53,422 Si putem vedea că ne referim lor de către #title și .info. 353 00:15:53,422 --> 00:15:55,380 Audiența: Ai spune hashtag [? adopta mine? ?] 354 00:15:55,380 --> 00:15:55,725 MARIA ZLATKOVA: Ne pare rău? 355 00:15:55,725 --> 00:15:58,120 Audiența: Ai spune hashtag [? adopta mine? ?] 356 00:15:58,120 --> 00:16:01,400 MARIA ZLATKOVA: hashtag înseamnă ID-ul, așa #title 357 00:16:01,400 --> 00:16:07,890 se referă la orice elemente au acest ID numit titlu. 358 00:16:07,890 --> 00:16:10,735 Și apoi punctul se referă la o clasă. 359 00:16:10,735 --> 00:16:14,590 Deci, .info se referă la acest element deoarece are info de clasă. 360 00:16:14,590 --> 00:16:15,090 Da. 361 00:16:15,090 --> 00:16:17,905 >> Audiența: De ce le distinge în HTML? 362 00:16:17,905 --> 00:16:20,985 De ce spui anumite lucruri sunt ID-uri și anumite lucruri sunt clasa? 363 00:16:20,985 --> 00:16:22,610 MARIA ZLATKOVA: Asta e doar până la Tu-- 364 00:16:22,610 --> 00:16:24,151 HANNAH Blumberg: repetă întrebarea. 365 00:16:24,151 --> 00:16:25,370 MARIA ZLATKOVA: Oh, îmi pare rău. 366 00:16:25,370 --> 00:16:29,480 De ce ne distinge anumite elemente ca ID-uri și alte elemente ca clase? 367 00:16:29,480 --> 00:16:34,760 Asta e doar pentru că este într-adevăr de multe ori o alegere de design. 368 00:16:34,760 --> 00:16:38,520 Acesta vă oferă o mulțime de versatilitate de a fi 369 00:16:38,520 --> 00:16:43,250 în măsură să spun vreau acest articol specific pentru a avea acest ID pentru că vor 370 00:16:43,250 --> 00:16:45,300 a face o mulțime de lucruri cu ea, și eu doar 371 00:16:45,300 --> 00:16:50,010 doriți să definiți un stil, anumit stil sau culoare orice pentru acel element. 372 00:16:50,010 --> 00:16:52,630 Și modul de a face acest lucru este doar dându-i un ID. 373 00:16:52,630 --> 00:16:55,060 >> Și apoi, dacă vreau să am o pereche de elemente diferite 374 00:16:55,060 --> 00:16:58,940 având ca, în loc de merge și stabilirea their-- 375 00:16:58,940 --> 00:17:03,840 în loc de a face aceasta prin tag pentru că tag-ul ar fi 376 00:17:03,840 --> 00:17:07,369 stabilit celula pentru întreaga tag pentru fiecare dată este folosit ca tag-ul, 377 00:17:07,369 --> 00:17:09,740 puteți seta o clasă de mai multe elemente. 378 00:17:09,740 --> 00:17:15,109 Și apoi accesa doar această clasă și spune Vreau să stil această clasă așa. 379 00:17:15,109 --> 00:17:17,579 >> Și din nou, clasa poate fie mai multe elemente diferite 380 00:17:17,579 --> 00:17:21,150 și ID-ul trebuie să fie unic. 381 00:17:21,150 --> 00:17:21,849 Marile întrebări. 382 00:17:21,849 --> 00:17:25,339 Orice alte întrebări? 383 00:17:25,339 --> 00:17:26,220 OK, minunat. 384 00:17:26,220 --> 00:17:30,680 385 00:17:30,680 --> 00:17:35,330 Din nou, acest lucru este modul în care aceste selectoare se face referire în CSS, cu hashtag, 386 00:17:35,330 --> 00:17:40,031 cu punct, sau fără nimic pentru atribuirea stilul unor tag-ul, 387 00:17:40,031 --> 00:17:40,530 ca organism. 388 00:17:40,530 --> 00:17:43,500 389 00:17:43,500 --> 00:17:47,860 Și aici avem generalul sintaxa de modul în care se face acest lucru. 390 00:17:47,860 --> 00:17:52,830 391 00:17:52,830 --> 00:17:55,680 >> Pentru a repeta unele mai bune practici pentru HTML si CSS, 392 00:17:55,680 --> 00:17:59,170 avem nevoie pentru a, din nou, aproape toate Tag-urile HTML pe care le deschide. 393 00:17:59,170 --> 00:18:03,950 Și ceea ce ați recomandat face pentru proiectele finale, 394 00:18:03,950 --> 00:18:10,560 precum și pentru CS50 Finance, este de a face sigur că toate HTML validează. 395 00:18:10,560 --> 00:18:12,920 Și asta a făcut cu W3 Validator. 396 00:18:12,920 --> 00:18:16,940 >> Și apoi am făcut și ce ceea ce vă recomandăm facem 397 00:18:16,940 --> 00:18:19,790 este separarea stil, așa CSS din markup HTML. 398 00:18:19,790 --> 00:18:24,210 Deci tot ce se referă la modul în care pagina dvs. este de gând să se uite vizual 399 00:18:24,210 --> 00:18:27,330 și modul în care aceasta va fi modificată ar trebui să meargă într-un document CSS. 400 00:18:27,330 --> 00:18:33,880 Și apoi markup-ul spune cât de lucruri sunt în raport cu fiecare parte este HTML, 401 00:18:33,880 --> 00:18:37,550 și că ar trebui să meargă în interiorul de documentele HTML. 402 00:18:37,550 --> 00:18:38,590 Alte intrebari? 403 00:18:38,590 --> 00:18:39,226 MHM. 404 00:18:39,226 --> 00:18:42,628 >> Audiența: Ce anume se întâmplă pe cu validarea pagina 405 00:18:42,628 --> 00:18:47,945 când suntem validarea HTML care [neauzit] a creat? 406 00:18:47,945 --> 00:18:49,850 >> MARIA ZLATKOVA: Deci what-- crezi. 407 00:18:49,850 --> 00:18:53,020 Deci, exact ceea ce se întâmplă la pagina cu validarea 408 00:18:53,020 --> 00:18:55,570 și de ce avem nevoie pentru a face asta? 409 00:18:55,570 --> 00:18:59,180 Practic, trebuie să facem asta pentru că o mulțime de ori, browser-ul dvs., 410 00:18:59,180 --> 00:19:01,390 dacă nu închide o etichetă sau asa ceva, 411 00:19:01,390 --> 00:19:05,680 browser-ul este încă de gând să face o pagină și s-ar putea funcționa în continuare, 412 00:19:05,680 --> 00:19:10,840 dar este cea mai bună practică pentru a se asigura că ai, din nou, închis toate etichetele tale, 413 00:19:10,840 --> 00:19:13,190 că toate elementele tale sunt modul în care acestea ar trebui să fie, 414 00:19:13,190 --> 00:19:18,470 și, practic, că este de convenții care sunt prestabilite. 415 00:19:18,470 --> 00:19:21,970 >> Este, din nou, doar o lucru pe care ar trebui să 416 00:19:21,970 --> 00:19:24,040 invata sa faci, în loc să trebuiască 417 00:19:24,040 --> 00:19:25,696 Codul sloppier și chestii de genul asta. 418 00:19:25,696 --> 00:19:26,688 Da. 419 00:19:26,688 --> 00:19:27,680 Oh, scuze. 420 00:19:27,680 --> 00:19:29,221 Am crezut că te-ai ridica mâna. 421 00:19:29,221 --> 00:19:31,240 Audiența: Nu, am fost doar [neauzit]. 422 00:19:31,240 --> 00:19:33,800 >> MARIA ZLATKOVA: OK. 423 00:19:33,800 --> 00:19:34,640 >> Audiența: Mulțumesc. 424 00:19:34,640 --> 00:19:36,181 >> MARIA ZLATKOVA: Desigur, vă mulțumesc. 425 00:19:36,181 --> 00:19:41,680 Deci, din nou, se întâmplă în modul de informațiile sunt transferate 426 00:19:41,680 --> 00:19:44,630 și modele de comunicare pentru a transfera informații. 427 00:19:44,630 --> 00:19:45,730 TCP / IP. 428 00:19:45,730 --> 00:19:48,600 TCP înseamnă doar transmisie Control Protocol si IP 429 00:19:48,600 --> 00:19:51,260 se referă la Internet Protocol. 430 00:19:51,260 --> 00:19:54,275 Și asta doar se referă la modul în care datele sunt livrate. 431 00:19:54,275 --> 00:19:59,470 432 00:19:59,470 --> 00:20:02,710 >> Dacă avem unele date care trebuie să livrate Tu-- așa 433 00:20:02,710 --> 00:20:06,770 vă face o cerere pentru un anumit server de. 434 00:20:06,770 --> 00:20:09,800 De exemplu, atunci când ne încearcă să acceseze cs50.net, 435 00:20:09,800 --> 00:20:12,420 vom face o cerere de serverul CS50 și noi 436 00:20:12,420 --> 00:20:14,720 vedea că vrem să ajungem acest tip de informații. 437 00:20:14,720 --> 00:20:19,294 Și apoi se bazează pe acest protocol pentru modul în care este livrat aceste informații, 438 00:20:19,294 --> 00:20:21,460 serverul oferă informații înapoi la noi, clientul. 439 00:20:21,460 --> 00:20:25,590 Și apoi vom putea vizualiza informațiile pentru pagina 440 00:20:25,590 --> 00:20:26,390 și apoi l utilizați. 441 00:20:26,390 --> 00:20:29,300 442 00:20:29,300 --> 00:20:33,050 >> Deci, apoi Protocolul de transfer hipertext este doar un alt protocol sau set 443 00:20:33,050 --> 00:20:37,470 convențiilor care definește modul în care browser-ul web și serverul de web 444 00:20:37,470 --> 00:20:38,890 ar trebui să comunice. 445 00:20:38,890 --> 00:20:43,730 Și pune toate astea împreună, HTTP, din nou, 446 00:20:43,730 --> 00:20:50,960 doar definește modul definit acest hypertext de HTML pe care am fost o de lucru, 447 00:20:50,960 --> 00:20:59,500 cum ar trebui să fie livrate la tine și cum că datele care este livrat la tine 448 00:20:59,500 --> 00:21:00,540 ajunge la tine. 449 00:21:00,540 --> 00:21:05,990 >> Și de aceea, dacă voi aminti dintr-o clasă, am avut o mulțime de cereri 450 00:21:05,990 --> 00:21:08,970 și am avut o mulțime de sintaxă pentru aceste cereri pe care suntem 451 00:21:08,970 --> 00:21:10,250 de gând să meargă pe acum. 452 00:21:10,250 --> 00:21:13,270 Deci, din nou, atunci când am trimite o cerere la un server, 453 00:21:13,270 --> 00:21:15,920 avem de a defini o serie de lucruri. 454 00:21:15,920 --> 00:21:18,520 Deci, trebuie să găsim tipul cererii că suntem setarea. 455 00:21:18,520 --> 00:21:22,180 Și din nou, ne-am, de exemplu, GET este un tip de metodă 456 00:21:22,180 --> 00:21:25,290 pe care le avem în cererea noastră. 457 00:21:25,290 --> 00:21:31,710 >> Și apoi HTTP / 1.1 este doar protocol pe care le utilizați în prezent. 458 00:21:31,710 --> 00:21:34,224 459 00:21:34,224 --> 00:21:36,890 Cele mai multe ori, care va la protocolul pe care îl utilizăm. 460 00:21:36,890 --> 00:21:40,290 Deci, dacă aveți o întrebare asa pe testul tău. 461 00:21:40,290 --> 00:21:43,120 Asta e convențiile că avem până acum. 462 00:21:43,120 --> 00:21:46,580 >> Backslash se referă la ce fel de lucruri pe care le solicitați. 463 00:21:46,580 --> 00:21:52,810 Apoi, gazda noastră este, de exemplu, în acest caz, noi încercăm să mergem la google.com. 464 00:21:52,810 --> 00:21:57,070 Deci aceasta este valoarea pentru o gazdă. 465 00:21:57,070 --> 00:21:59,330 Acesta este un tip de cerere care ar putea fi trimis. 466 00:21:59,330 --> 00:22:02,890 >> Și apoi un tip de răspuns care ar putea fi trimis, din nou, pe baza acestui protocol, 467 00:22:02,890 --> 00:22:05,190 este din nou, HTTP / 1.1. 468 00:22:05,190 --> 00:22:07,150 Deci, asta e din nou versiunea HTTP. 469 00:22:07,150 --> 00:22:09,730 200 OK este doar codul de stare. 470 00:22:09,730 --> 00:22:12,860 Și că OK este doar o expresie pe baza acestei cod de stare. 471 00:22:12,860 --> 00:22:15,520 >> Și apoi Content-Type se referă la tipul 472 00:22:15,520 --> 00:22:20,295 care este returnat pentru a vă că este pentru că pagina de web pe care le primiți 473 00:22:20,295 --> 00:22:22,570 și că browser-ul dvs. poate face după aceea. 474 00:22:22,570 --> 00:22:24,401 Și că este un text / html. 475 00:22:24,401 --> 00:22:26,660 >> Audiența: Ce înseamnă 1.1? 476 00:22:26,660 --> 00:22:29,910 >> MARIA ZLATKOVA: Asta e doar Versiunea de-- Oh, ce înseamnă 1,1? 477 00:22:29,910 --> 00:22:37,075 Aceasta este doar versiunea, HTTP versiune a unui protocol pe care le utilizați. 478 00:22:37,075 --> 00:22:37,700 Marea întrebare. 479 00:22:37,700 --> 00:22:38,366 Alte întrebări? 480 00:22:38,366 --> 00:22:41,222 481 00:22:41,222 --> 00:22:45,080 >> Audiența: Ai putea rezuma Content-Type repede? 482 00:22:45,080 --> 00:22:48,150 >> MARIA ZLATKOVA: Așa că este ceea ce serverul. 483 00:22:48,150 --> 00:22:51,020 tipul de information-- ce este tip de conținut a fost întrebările. 484 00:22:51,020 --> 00:22:53,400 Deci care era tipul de informații pe care le obține înapoi 485 00:22:53,400 --> 00:22:58,200 de la server, tipul de date pe care browser-ul poate apoi 486 00:22:58,200 --> 00:23:00,604 face pe care îl utilizați. 487 00:23:00,604 --> 00:23:03,020 Audiența: Asta e ceea ce acest protocol vă spune să faci? 488 00:23:03,020 --> 00:23:03,390 MARIA ZLATKOVA: Ne pare rău? 489 00:23:03,390 --> 00:23:05,380 Audiența: Asta spun protocolul? 490 00:23:05,380 --> 00:23:05,915 MARIA ZLATKOVA: a protocol-- 491 00:23:05,915 --> 00:23:07,940 Audiența: --what Content-Type este sau what-- 492 00:23:07,940 --> 00:23:12,040 MARIA ZLATKOVA: Protocolul este bazat on-- ceea ce este protocolul va spune? 493 00:23:12,040 --> 00:23:16,070 Asta e doar modul în care că aceste informații 494 00:23:16,070 --> 00:23:18,610 a fost livrat la tine pe baza de ce fel de protocol 495 00:23:18,610 --> 00:23:21,830 a fost primit această informație livrat înapoi la tine. 496 00:23:21,830 --> 00:23:23,500 Are vreun sens un fel de? 497 00:23:23,500 --> 00:23:28,320 498 00:23:28,320 --> 00:23:30,070 HANNAH Blumberg: Ai pot gândi de protocol 499 00:23:30,070 --> 00:23:33,300 ca un-- Cred că profesorul Malan a descris- 500 00:23:33,300 --> 00:23:36,910 în clasa ca un fel de un-- e ca si cum echivalentul handshaking umane. 501 00:23:36,910 --> 00:23:44,930 Spune, cum ar fi, hei, eu sunt o cerere și eu știu cum să se ocupe de HTTP de versiunea 1.1. 502 00:23:44,930 --> 00:23:48,770 Și atunci serverul spune, oh, OK, eu și ambele exista. 503 00:23:48,770 --> 00:23:51,337 De asemenea, am știu cum să se ocupe cu HTTP / 1.1. 504 00:23:51,337 --> 00:23:53,170 Și am de gând să dea te înapoi o parte de conținut. 505 00:23:53,170 --> 00:23:56,230 În acest caz, se va să fie de tip text / html. 506 00:23:56,230 --> 00:23:58,480 Deci e un fel de doar o modalitate dintre ele pentru communicating-- 507 00:23:58,480 --> 00:24:00,480 >> MARIA ZLATKOVA: E doar confirmând că ești 508 00:24:00,480 --> 00:24:03,290 atât conformitate cu aceeași procedură protocol și că atât 509 00:24:03,290 --> 00:24:06,620 clientul și server-- așa browser-ul și server-- 510 00:24:06,620 --> 00:24:09,280 un fel de știu ce ești vorbesc despre și să aibă 511 00:24:09,280 --> 00:24:12,557 Convenția pentru trecerea în date. 512 00:24:12,557 --> 00:24:17,022 >> Audiența: Deci Content-Type part-- textul Content-Type / html-- asta e 513 00:24:17,022 --> 00:24:18,521 o parte separată a aceluiași mesaj? 514 00:24:18,521 --> 00:24:20,509 Sau este parte a sa zicem, 200? 515 00:24:20,509 --> 00:24:22,010 Are 200 le spun că sau este-- 516 00:24:22,010 --> 00:24:23,770 >> MARIA ZLATKOVA: 200 spune că totul a mers bine. 517 00:24:23,770 --> 00:24:27,900 Și apoi tip de conținut este un fel de parte separată din același mesaj, 518 00:24:27,900 --> 00:24:34,274 și spunând lucrul pe care am returnat a acestui tip de text / html. 519 00:24:34,274 --> 00:24:35,690 E doar da mai multe informații. 520 00:24:35,690 --> 00:24:38,700 521 00:24:38,700 --> 00:24:39,995 Au ceva de adăugat? 522 00:24:39,995 --> 00:24:40,495 BINE. 523 00:24:40,495 --> 00:24:43,590 524 00:24:43,590 --> 00:24:46,530 >> Orice alte întrebări cu privire la asta? 525 00:24:46,530 --> 00:24:48,370 Incredibil. 526 00:24:48,370 --> 00:24:54,070 Astfel încât alte statusuri HTTP care am putea obține în plus față de 200 OK, 527 00:24:54,070 --> 00:24:59,500 cele pe care le-am văzut, poate, eventual, o mulțime sunt 403 și 404. 528 00:24:59,500 --> 00:25:05,190 Deci 404, în cazul în care ați încercat să acces ceva ce nu există. 529 00:25:05,190 --> 00:25:10,460 Deci, de exemplu, în ta Psets CS50 Finanțe, 530 00:25:10,460 --> 00:25:15,640 dacă ai fi fost randare quote.html și nu au avut acel fișier, 531 00:25:15,640 --> 00:25:19,740 ci ai avut quote.php, că ar duce la o 404 Not Found 532 00:25:19,740 --> 00:25:21,600 deoarece fișierul ar putea să nu existe. 533 00:25:21,600 --> 00:25:25,690 >> Pentru un 403 interzis, că se referă la permisiunile. 534 00:25:25,690 --> 00:25:31,150 Deci, dacă un fisier nu este ușor de citit de către lume, s-ar putea obține un 403 sa întors. 535 00:25:31,150 --> 00:25:34,510 536 00:25:34,510 --> 00:25:37,810 Alții care v-ar get-- 301, sa mutat permanent; 537 00:25:37,810 --> 00:25:41,300 302, S-au găsit; 304, modificat; 400, Cerere Bad; 538 00:25:41,300 --> 00:25:47,330 Eroare de server și apoi intern pentru 500 și 503, Serviciu indisponibil. 539 00:25:47,330 --> 00:25:48,140 Da. 540 00:25:48,140 --> 00:25:51,490 >> Audiența: Va ne-am asteptat la memora toate aceste stări? 541 00:25:51,490 --> 00:25:53,739 MARIA ZLATKOVA: mi-ar fi -le pe foaia de ieftin. 542 00:25:53,739 --> 00:25:55,146 [RÂSETE] 543 00:25:55,146 --> 00:25:59,954 Audiența: Suntem de așteptat să știu ce declanseaza fiecare? 544 00:25:59,954 --> 00:26:00,995 MARIA ZLATKOVA: Sunt? 545 00:26:00,995 --> 00:26:03,870 HANNAH Blumberg: pentru cei care le-am rula into-- Deci, întrebarea asta-- 546 00:26:03,870 --> 00:26:08,010 MARIA ZLATKOVA: Sunt de așteptat să știu ce fiecare dintre aceste statutului una 547 00:26:08,010 --> 00:26:09,330 coduri ar putea fi declanșat de? 548 00:26:09,330 --> 00:26:13,240 Deci, pentru cei care le-am folosit și a fugit în, aș spune, da. 549 00:26:13,240 --> 00:26:16,610 Deci am vazut cu siguranta 200 OK și predat-o în psets. 550 00:26:16,610 --> 00:26:19,071 Am văzut 403, 404. 551 00:26:19,071 --> 00:26:20,550 Pentru altele? 552 00:26:20,550 --> 00:26:22,690 >> HANNAH Blumberg: Mi-ar spune 500 pare un joc cinstit. 553 00:26:22,690 --> 00:26:23,330 >> MARIA ZLATKOVA: 500, da. 554 00:26:23,330 --> 00:26:24,246 >> HANNAH Blumberg: Da. 555 00:26:24,246 --> 00:26:27,006 Doar au un sens general din ceea ce le provoaca. 556 00:26:27,006 --> 00:26:28,880 Și, de asemenea doar prin aceste nume, puteți fel de 557 00:26:28,880 --> 00:26:32,890 ca face o presupunere educat ca a ceea ce de fapt le-a cauzat. 558 00:26:32,890 --> 00:26:36,919 De exemplu, mutați definitiv, probabil fișierul a fost mutat definitiv. 559 00:26:36,919 --> 00:26:39,328 >> Audiența: Dar pe un precedent examen, a existat o așa 560 00:26:39,328 --> 00:26:41,050 cum te aștepți să răspund la asta? 561 00:26:41,050 --> 00:26:42,883 >> HANNAH Blumberg: Asta a fost în valoare de zero puncte. 562 00:26:42,883 --> 00:26:45,870 Întrebarea pe 418 pe ceainicul este punct de vedere tehnic o stare HTTP, 563 00:26:45,870 --> 00:26:47,090 dar a meritat zero puncte. 564 00:26:47,090 --> 00:26:48,320 În mod evident, nu ești de așteptat să le cunoască. 565 00:26:48,320 --> 00:26:49,670 >> Audiența: Este una reală? 566 00:26:49,670 --> 00:26:51,970 >> HANNAH Blumberg: Este o adevărată o, dar asta nu înseamnă nimic. 567 00:26:51,970 --> 00:26:52,700 E doar o glumă. 568 00:26:52,700 --> 00:26:55,480 569 00:26:55,480 --> 00:26:57,010 Oamenii de Internet sunt amuzante. 570 00:26:57,010 --> 00:26:59,680 >> MARIA ZLATKOVA: întrebări mari, băieți. 571 00:26:59,680 --> 00:27:01,452 Orice alte întrebări? 572 00:27:01,452 --> 00:27:04,891 >> Audiența: Ce este eroare de server intern? 573 00:27:04,891 --> 00:27:06,640 MARIA ZLATKOVA: internă eroare de server doar 574 00:27:06,640 --> 00:27:10,050 înseamnă că ați fost imposibilitatea de a comunica 575 00:27:10,050 --> 00:27:13,400 cu serverul pentru un motiv oarecare. 576 00:27:13,400 --> 00:27:15,400 Deci nu este neapărat ceva care are de a face 577 00:27:15,400 --> 00:27:19,170 cu clientul sau ceva de genul asta. 578 00:27:19,170 --> 00:27:22,170 Nu știu de nici un exemplu specific că am trecut peste pentru a explica, 579 00:27:22,170 --> 00:27:23,000 dar da. 580 00:27:23,000 --> 00:27:23,250 >> HANNAH Blumberg: Sigur. 581 00:27:23,250 --> 00:27:25,625 Deci, de exemplu, cum ar fi să spun ca au fost de lucru pe mashup 582 00:27:25,625 --> 00:27:30,440 și un server Google a mers în jos pentru a putea motiv, o pană de curent, să zicem. 583 00:27:30,440 --> 00:27:33,400 Asta ar fi un server intern eroare sau un fel vă place de-- 584 00:27:33,400 --> 00:27:34,630 nu s-ar obține un răspuns înapoi. 585 00:27:34,630 --> 00:27:35,260 >> MARIA ZLATKOVA: Da. 586 00:27:35,260 --> 00:27:37,050 E doar atunci când sunteți imposibilitatea de a comunica 587 00:27:37,050 --> 00:27:40,299 cu serverul pentru un motiv oarecare, deoarece din ea merge în jos sau din alte motive. 588 00:27:40,299 --> 00:27:44,430 589 00:27:44,430 --> 00:27:47,690 Deci, sărind în PHP. 590 00:27:47,690 --> 00:27:49,930 PHP, spre deosebire de HTML, este un limbaj de programare. 591 00:27:49,930 --> 00:27:54,820 Și am început folosind-o pentru că e foarte util pentru dezvoltarea web. 592 00:27:54,820 --> 00:27:56,940 >> Am folosit pentru prima dată în CS50 Finanțe. 593 00:27:56,940 --> 00:28:02,240 Și-l ajută să ne aducă practic împreună această marcare, proiectarea, 594 00:28:02,240 --> 00:28:07,460 și cum ne-am folosi de fapt informații pentru a afișa lucruri pe o pagină web. 595 00:28:07,460 --> 00:28:11,870 Deci, PHP în sine înseamnă PHP Hypertext Preprocessor, 596 00:28:11,870 --> 00:28:15,360 deci este o backnorym recursiv de la sine. 597 00:28:15,360 --> 00:28:22,330 Și deschiderea tag-uri pentru PHP am stânga și săgeți dreapta cu semnele de întrebare 598 00:28:22,330 --> 00:28:23,060 și PHP. 599 00:28:23,060 --> 00:28:25,890 >> Deci am văzut deja o grămadă de ea. 600 00:28:25,890 --> 00:28:29,150 Acum, suntem doar de gând să meargă peste unele din lucrurile de bază despre el. 601 00:28:29,150 --> 00:28:32,280 Deci, cu PHP, variabila Numele începe cu semnul dolar. 602 00:28:32,280 --> 00:28:35,660 Noi nu se specifică, din nou, o variabilă de tip mai. 603 00:28:35,660 --> 00:28:38,450 La fel cum am făcut cu C, nu avem nevoie să faci asta. 604 00:28:38,450 --> 00:28:41,670 605 00:28:41,670 --> 00:28:44,490 >> Putem face o grămadă de diferite lucruri cu variabile. 606 00:28:44,490 --> 00:28:47,750 Le putem pune împreună prin concatenarea le 607 00:28:47,750 --> 00:28:52,900 cu notația punct, care nu am putut face în C din nou. 608 00:28:52,900 --> 00:28:57,490 Din nou, avem un pic mai mult versatilitate cu PHP în termeni de variabile. 609 00:28:57,490 --> 00:29:00,080 Din nou, nu avem o funcție principală. 610 00:29:00,080 --> 00:29:03,370 >> Și PHP este interpretat spre deosebire de compilat, 611 00:29:03,370 --> 00:29:09,970 Deci, cât de ne-a făcut pentru fișiere C, noi nu trebuie să facem asta pentru PHP. 612 00:29:09,970 --> 00:29:15,440 Ci mai degrabă modul în care limba este condus de la sine, ea este interpretată. 613 00:29:15,440 --> 00:29:18,550 Și apoi tastat vag înseamnă doar că am 614 00:29:18,550 --> 00:29:22,490 nu trebuie să specificați o variabilă tipul și tipurile de variabile 615 00:29:22,490 --> 00:29:25,415 sunt înțelese în timpul rulării. 616 00:29:25,415 --> 00:29:29,185 >> Audiența: Dar ce-ai făcut Adică prin concatenare punct? 617 00:29:29,185 --> 00:29:30,060 MARIA ZLATKOVA: Sigur. 618 00:29:30,060 --> 00:29:37,660 Când ne-o dorim pentru a pune lucrurile together-- Deci, dacă am avut unele variabile care 619 00:29:37,660 --> 00:29:41,500 a avut valoarea de 3 și am avut un alt variabilă care a avut valoarea de coarde, 620 00:29:41,500 --> 00:29:45,920 am putea pune variabilele împreună prin punerea un punct între ele 621 00:29:45,920 --> 00:29:46,970 și concatenarea le. 622 00:29:46,970 --> 00:29:52,670 Sau am putea crea o variabilă numită nume 623 00:29:52,670 --> 00:29:56,900 și a pus împreună cu concatenarea două șiruri. 624 00:29:56,900 --> 00:30:00,680 >> Deci, dacă am avea un șir în dublu Citate si am pus un punct după ce, 625 00:30:00,680 --> 00:30:03,660 și apoi am avut un alt șir, că ar crea un șir cu totul. 626 00:30:03,660 --> 00:30:05,242 >> Audiența: OK. 627 00:30:05,242 --> 00:30:06,450 MARIA LETONIA: Sa clar? 628 00:30:06,450 --> 00:30:07,099 Audiența: Da. 629 00:30:07,099 --> 00:30:07,890 MARIA ZLATKOVA: OK. 630 00:30:07,890 --> 00:30:08,766 Da. 631 00:30:08,766 --> 00:30:11,146 >> Audiența: Când spui interpretate, mai degrabă decât compilat, 632 00:30:11,146 --> 00:30:14,160 vorbești despre tine nu trebuie să fie la fel de specifice, atunci când 633 00:30:14,160 --> 00:30:15,906 este vorba de PHP față de C? 634 00:30:15,906 --> 00:30:18,085 635 00:30:18,085 --> 00:30:20,710 MARIA ZLATKOVA: Când spunem interpretat în sensul că, spre deosebire de compilat, 636 00:30:20,710 --> 00:30:21,850 Ce vrem să spunem? 637 00:30:21,850 --> 00:30:26,220 Asta înseamnă că nu avem nevoie de fișierele executabile pentru a rula PHP. 638 00:30:26,220 --> 00:30:29,870 Aceasta înseamnă că se execută ca merge. 639 00:30:29,870 --> 00:30:31,650 Are sens? 640 00:30:31,650 --> 00:30:32,495 Putin mai mult. 641 00:30:32,495 --> 00:30:34,620 HANNAH Blumberg: Deci pot gândi la un interpret 642 00:30:34,620 --> 00:30:38,980 ca un alt program care este responsabil pentru a merge linie cu linie prin PHP 643 00:30:38,980 --> 00:30:42,745 și de fapt de executare, spre deosebire pentru compilarea totul până la binar. 644 00:30:42,745 --> 00:30:46,050 Aceasta nu înseamnă de fapt nimic despre modul în care specifică că trebuie să fim. 645 00:30:46,050 --> 00:30:49,470 Noi încă mai trebuie să fie precise, și nu uita virgulă dvs., și asigurați-vă 646 00:30:49,470 --> 00:30:51,470 aveți zodia ta dolar, și lucruri de genul asta. 647 00:30:51,470 --> 00:30:52,240 Buna intrebare. 648 00:30:52,240 --> 00:30:53,115 >> MARIA ZLATKOVA: Da. 649 00:30:53,115 --> 00:30:55,590 Deci, linie cu linie, ca spre deosebire de cu fișiere C, 650 00:30:55,590 --> 00:30:59,100 avem de a face tot finală înainte de a putea rula de fapt. 651 00:30:59,100 --> 00:31:00,360 Asta e principala diferență. 652 00:31:00,360 --> 00:31:02,655 Dar, din nou, nu putem fi cu adevărat mai puțin specific. 653 00:31:02,655 --> 00:31:08,760 654 00:31:08,760 --> 00:31:13,950 Deci, tablouri în PHP reprezintă de fapt, o hartă a ordonat. 655 00:31:13,950 --> 00:31:17,550 >> Deci, valorile matrice asociat la chei. 656 00:31:17,550 --> 00:31:23,350 Cele două moduri de a declara o matrice, bazate pe această sintaxă, 657 00:31:23,350 --> 00:31:26,380 putem fi mai explicit în a spune, avem o serie 658 00:31:26,380 --> 00:31:31,010 și avem acest cheie1 care harti la acest valoare1, valoare2 key2 că harti. 659 00:31:31,010 --> 00:31:34,660 Sau putem crea doar o serie care conține valorile în sine 660 00:31:34,660 --> 00:31:38,360 și apoi tastele sunt înțeleasă într-un mod. 661 00:31:38,360 --> 00:31:40,000 Orice întrebări cu privire la asta? 662 00:31:40,000 --> 00:31:42,500 >> Audiența: Care ar tastele fie în al doilea exemplu? 663 00:31:42,500 --> 00:31:47,100 664 00:31:47,100 --> 00:31:47,920 0, 1, 2, 3? 665 00:31:47,920 --> 00:31:50,650 666 00:31:50,650 --> 00:31:55,780 >> MARIA ZLATKOVA: De exemplu, e doar cheile în acest nu neapărat 667 00:31:55,780 --> 00:31:56,550 fa diferenta. 668 00:31:56,550 --> 00:32:01,720 Ele definesc cât poți utiliza valorile interiorul acestuia. 669 00:32:01,720 --> 00:32:08,660 Deci, dacă am avut o foreach buclă în PHP care ar 670 00:32:08,660 --> 00:32:14,760 ne permit sa treaca prin toate valorile, putem trece prin toate valorile, 671 00:32:14,760 --> 00:32:19,570 chiar dacă am avut sau nu a definit o cheie specifică în a site-ului 672 00:32:19,570 --> 00:32:20,820 sintaxă precedent. 673 00:32:20,820 --> 00:32:23,460 >> Deci, chiar și cu acest tip de matrice, am putea încă 674 00:32:23,460 --> 00:32:26,260 au o buclă foreach care trece prin fiecare 675 00:32:26,260 --> 00:32:31,240 din valorile din cheia în matrice. 676 00:32:31,240 --> 00:32:36,180 Deci, sintaxa unei foreach bucla, vom începe cu o serie. 677 00:32:36,180 --> 00:32:38,720 678 00:32:38,720 --> 00:32:43,900 Această variabilă $ arr este oferta noastră reală că am definit în diapozitivul anterior 679 00:32:43,900 --> 00:32:47,550 ca valoare, care merge literalmente prin fiecare din valorile, 680 00:32:47,550 --> 00:32:50,122 indiferent dacă am avut o cheie sau nu. 681 00:32:50,122 --> 00:32:53,080 Și apoi putem face ceva cu valoarea interiorul buclei foreach. 682 00:32:53,080 --> 00:32:57,730 Deci, din nou, în cazul în care am avut o serie ca aceasta de aici created-- 683 00:32:57,730 --> 00:33:03,270 așa că avem cheia de foo și valoarea bar, cheia de Baz și valoarea qux-- 684 00:33:03,270 --> 00:33:09,730 putem avea o buclă foreach care trece prin matrice ca valoare cheie 685 00:33:09,730 --> 00:33:11,900 și apoi face ceva cu cheia și / sau valoarea. 686 00:33:11,900 --> 00:33:15,980 Dar noi nu neapărat întotdeauna trebuie să aibă un foreach bucle care 687 00:33:15,980 --> 00:33:19,410 trece prin matrice sub forma unei harti cheie la valoarea. 688 00:33:19,410 --> 00:33:26,060 Putem merge prin matrice bucla foreach ca valoare. 689 00:33:26,060 --> 00:33:28,990 >> HANNAH Blumberg: Și cred că sa-- fost întrebarea dvs., ceea ce 690 00:33:28,990 --> 00:33:31,229 este indicele implicit? 691 00:33:31,229 --> 00:33:31,895 Audiența: Kinda. 692 00:33:31,895 --> 00:33:32,240 MARIA ZLATKOVA: Oh. 693 00:33:32,240 --> 00:33:33,406 HANNAH Blumberg: Da, da. 694 00:33:33,406 --> 00:33:36,150 Deci, practic, dacă nu se specifică o cheie, aceasta va fi 01. 695 00:33:36,150 --> 00:33:37,140 >> MARIA ZLATKOVA: Da. 696 00:33:37,140 --> 00:33:41,718 La fel ca cu C, e la zero indexate dacă nu specificați o cheie. 697 00:33:41,718 --> 00:33:42,384 Audiența: Îmi pare rău. 698 00:33:42,384 --> 00:33:43,827 Ați putea să încercați să vorbiți un pic mai tare? 699 00:33:43,827 --> 00:33:45,270 Am un pic de probleme de auz totul. 700 00:33:45,270 --> 00:33:46,478 >> MARIA ZLATKOVA: Îmi pare foarte rău. 701 00:33:46,478 --> 00:33:48,439 Da desigur. 702 00:33:48,439 --> 00:33:50,230 Deci, vrei să mă pentru a trece peste asta din nou? 703 00:33:50,230 --> 00:33:51,680 Sau este astea-- 704 00:33:51,680 --> 00:33:54,930 Audiența: Deci pe slide-- anterior dacă ai putea merge doar înapoi pentru o secundă. 705 00:33:54,930 --> 00:33:57,313 MARIA ZLATKOVA: Desigur, îmi pare rău. 706 00:33:57,313 --> 00:33:59,237 Audiența: Deci a doua matrice aici nu 707 00:33:59,237 --> 00:34:04,135 par să aibă o valoare de cheie, un fel de [? legătura de cauzalitate. ?] 708 00:34:04,135 --> 00:34:05,343 MARIA ZLATKOVA: dreapta, dreapta. 709 00:34:05,343 --> 00:34:07,608 Audiența: Deci, cum face ca munca atunci când spun că e totul sau nimic. 710 00:34:07,608 --> 00:34:08,969 Pentru mine, care arata ca A [? foo?] deja. 711 00:34:08,969 --> 00:34:10,093 >> MARIA ZLATKOVA: Da, da. 712 00:34:10,093 --> 00:34:12,969 Deci, din nou, aceasta este o harta comandat în acest sens 713 00:34:12,969 --> 00:34:15,639 că acolo sunt înțelese, de exemplu, indicii 714 00:34:15,639 --> 00:34:20,159 aici poate fi înțeleasă ca 0, 1, 2, 3. 715 00:34:20,159 --> 00:34:25,929 Din nou, asta e cu cei indici este echivalent nostru 716 00:34:25,929 --> 00:34:28,980 de a avea chei mapate pe valori. 717 00:34:28,980 --> 00:34:34,710 Deci, dacă cheia noastră a fost 0-- rău. 718 00:34:34,710 --> 00:34:36,524 >> HANNAH Blumberg: Nu, acolo a creta aici. 719 00:34:36,524 --> 00:34:36,929 De fapt, foarte frumos. 720 00:34:36,929 --> 00:34:37,460 >> MARIA ZLATKOVA: Asta-i grozav. 721 00:34:37,460 --> 00:34:38,260 BINE. 722 00:34:38,260 --> 00:34:49,489 Deci, din nou, $ ARR 0 ar fi cheia pentru valoarea 1. 723 00:34:49,489 --> 00:34:51,138 0 ar fi cheia pentru valoarea 1. 724 00:34:51,138 --> 00:34:51,971 Audiența: Îmi pare rău. 725 00:34:51,971 --> 00:34:53,190 Este invizibil. 726 00:34:53,190 --> 00:34:53,659 >> HANNAH Blumberg: Bine, Nevermind. 727 00:34:53,659 --> 00:34:54,980 Cretă a fost o idee proastă. 728 00:34:54,980 --> 00:34:58,030 O iau înapoi. 729 00:34:58,030 --> 00:35:01,425 Vă puteți gândi la tastele ca 0 hărți ale valorii 1. 730 00:35:01,425 --> 00:35:02,300 MARIA ZLATKOVA: Da. 731 00:35:02,300 --> 00:35:04,630 Deci, aceasta este 0, aceasta este 1, 2, 3. 732 00:35:04,630 --> 00:35:05,760 Acestea pot fi cheile. 733 00:35:05,760 --> 00:35:10,020 Vă puteți gândi la ele as-- da. 734 00:35:10,020 --> 00:35:12,740 Deci, în loc de a avea chei explicite, sunt 735 00:35:12,740 --> 00:35:17,180 un fel de înțeles ca fiind indicii începând de la 0. 736 00:35:17,180 --> 00:35:21,630 737 00:35:21,630 --> 00:35:24,820 Creta nu a ajutat. 738 00:35:24,820 --> 00:35:25,722 Da. 739 00:35:25,722 --> 00:35:30,914 >> Audiența: Pentru bucla foreach, dacă ne-am dorit pentru a vedea ca valoare, 740 00:35:30,914 --> 00:35:33,245 aceasta ar fi doar index automat la 0? 741 00:35:33,245 --> 00:35:34,120 MARIA ZLATKOVA: Da. 742 00:35:34,120 --> 00:35:35,745 Aceasta ar merge prin fiecare din valorile. 743 00:35:35,745 --> 00:35:39,130 Audiența: [inaudibil] ca 0 sau ar care tocmai face 0? 744 00:35:39,130 --> 00:35:43,710 >> MARIA ZLATKOVA: Tu ar trebui să spun ca semnul dolar și apoi 745 00:35:43,710 --> 00:35:46,266 unele nume de variabilă, valoarea. 746 00:35:46,266 --> 00:35:47,182 Audiența: [neauzit]. 747 00:35:47,182 --> 00:35:50,048 748 00:35:50,048 --> 00:35:50,964 MARIA ZLATKOVA: Ne pare rău? 749 00:35:50,964 --> 00:35:52,839 Audiența: Îmi pare rău, eu sunt Încerc doar să-și amintească. 750 00:35:52,839 --> 00:35:57,190 Cum ai face asta, dacă poți face în mod automat de indexare este doar 0 de? 751 00:35:57,190 --> 00:36:00,780 >> MARIA ZLATKOVA: Deci, cum ai face asta dacă nu au nume cheie specifice? 752 00:36:00,780 --> 00:36:01,710 >> Audiența: Da. 753 00:36:01,710 --> 00:36:07,820 >> MARIA ZLATKOVA: Tu ar doar define-- spune doar te ca unele nume. 754 00:36:07,820 --> 00:36:17,950 Deci, în psets dvs., voi s-ar putea amintiți-vă foreach $ rând ca $ rânduri, 755 00:36:17,950 --> 00:36:24,610 am creat noi înșine acest $ rând spunând vrem să mergem prin rândul de la $ rânduri. 756 00:36:24,610 --> 00:36:28,360 Chiar dacă nu am avut acest $ explicit rânduri definit, 757 00:36:28,360 --> 00:36:31,990 am putea merge doar și spun acest lucru poate fi cheia noastră, 758 00:36:31,990 --> 00:36:33,615 și du-te prin fiecare din valorile. 759 00:36:33,615 --> 00:36:37,295 760 00:36:37,295 --> 00:36:41,660 >> Audiența: Deci este o valoare o nouă variabilă suntem crearea a stoca [Inaudibil]? 761 00:36:41,660 --> 00:36:46,820 762 00:36:46,820 --> 00:36:49,990 >> MARIA ZLATKOVA: Deci nu e în mod inerent o nouă variabilă. 763 00:36:49,990 --> 00:37:00,310 Este o variabilă care se referă la interiorul matrice la fiecare dintre ele. 764 00:37:00,310 --> 00:37:02,060 HANNAH Blumberg: E un nou nume de variabilă. 765 00:37:02,060 --> 00:37:04,018 MARIA ZLATKOVA: Da, este un nou nume de variabilă, 766 00:37:04,018 --> 00:37:06,680 dar aceasta nu inherently-- da. 767 00:37:06,680 --> 00:37:08,950 E doar o nouă variabilă pe care le puteți face acest lucru. 768 00:37:08,950 --> 00:37:12,680 Deci, doar cum am făcut $ rând de la $ rânduri, rânduri 769 00:37:12,680 --> 00:37:17,980 a fost un nou nume de variabilă pe care le ar putea crea în buclă nostru foreach. 770 00:37:17,980 --> 00:37:22,065 Aceasta nu trebuie să preexist înainte de asta. 771 00:37:22,065 --> 00:37:25,777 >> Audiența: Ai putea să treacă prin logică pentru fiecare, folosind exemplul acolo? 772 00:37:25,777 --> 00:37:26,610 MARIA ZLATKOVA: Mhm. 773 00:37:26,610 --> 00:37:31,240 774 00:37:31,240 --> 00:37:32,080 Oh, scuze. 775 00:37:32,080 --> 00:37:33,780 Iată exemplul. 776 00:37:33,780 --> 00:37:34,280 Sigur. 777 00:37:34,280 --> 00:37:38,950 Deci, pentru fiecare astfel array-- înseamnă că du-te la această matrice 778 00:37:38,950 --> 00:37:43,930 ca cheie value-- care va pentru a merge prin această matrice 779 00:37:43,930 --> 00:37:49,480 și în primul du-te și să obțină foo, The foo cheie și bara de valoare. 780 00:37:49,480 --> 00:37:51,570 Și apoi pe a doua iterație a buclei pentru, 781 00:37:51,570 --> 00:37:55,090 se va trece prin și să ia Baz cheie și QUX valoare. 782 00:37:55,090 --> 00:38:00,512 Și apoi puteți face ceva cu oricare dintre ele sau ambele dintre ele. 783 00:38:00,512 --> 00:38:03,488 >> Audiența: Deci ideea din spatele având un punct-cheie la valoarea, 784 00:38:03,488 --> 00:38:07,470 ce ajungi accesarea? 785 00:38:07,470 --> 00:38:10,680 >> MARIA ZLATKOVA: Care este ideea de a avea un indicare cheie la valoarea? 786 00:38:10,680 --> 00:38:16,400 E doar un alt convenție, un alt mod de a merge prin matrice 787 00:38:16,400 --> 00:38:22,600 și de a accesa fie cheie sau valoarea sau ambele și să le utilizeze. 788 00:38:22,600 --> 00:38:27,100 >> Audiența: Care este rolul pentru dispune ca foreach rulează în? 789 00:38:27,100 --> 00:38:29,250 Deci, dacă ar fi să adăugați elemente la matrice mai târziu, 790 00:38:29,250 --> 00:38:32,140 ar fi cei primii numit în matrice foreach, 791 00:38:32,140 --> 00:38:33,750 sau ar fi mai târziu? 792 00:38:33,750 --> 00:38:37,770 >> MARIA ZLATKOVA: Deci, ce este ordinea în care foreach 793 00:38:37,770 --> 00:38:39,210 bucla trece printr-o serie de? 794 00:38:39,210 --> 00:38:42,220 Ea trece prin primul element de la ultimul element, 795 00:38:42,220 --> 00:38:43,400 la ultimul element adăugat. 796 00:38:43,400 --> 00:38:48,020 Dacă adăugați elemente mai târziu, s-ar fi accessed-- primele elemente ar 797 00:38:48,020 --> 00:38:51,410 fi accesate ca primul elemente ale șirului, 798 00:38:51,410 --> 00:38:57,620 și apoi ai trece prin fiecare dintre elementele ca un fel de ordered-- 799 00:38:57,620 --> 00:39:02,930 nu o ordonat, dar modul în care acestea au fost puse în matrice. 800 00:39:02,930 --> 00:39:06,855 >> Audiența: Elemente Deci noi se adaugă mai târziu? 801 00:39:06,855 --> 00:39:10,680 Deci ei au added-- vom fi ultimele cele din [? repetare. ?] 802 00:39:10,680 --> 00:39:14,280 >> MARIA ZLATKOVA: Elemente noi can-- practic, atunci când sunt adăugate elemente noi, 803 00:39:14,280 --> 00:39:16,520 sunt ele adăugate la sfârșitul unui array? 804 00:39:16,520 --> 00:39:17,632 >> Audiența: Da. 805 00:39:17,632 --> 00:39:18,840 MARIA ZLATKOVA: Cred că da. 806 00:39:18,840 --> 00:39:20,850 Da. 807 00:39:20,850 --> 00:39:24,330 Și apoi cu bucla foreach dumneavoastră, După ce ați adăugat noi elemente 808 00:39:24,330 --> 00:39:26,790 si te duci prin ele, elementele noi ar 809 00:39:26,790 --> 00:39:30,930 fie accessed-- noul element, dacă este adăugat ultimul, ar fi accesat ultima. 810 00:39:30,930 --> 00:39:34,416 >> Audiența: Imi puteti da doar un exemplu de ceva care ar [Inaudibil] 811 00:39:34,416 --> 00:39:37,404 cu ceva cu valoare ca [inaudibil] sau valoarea, 812 00:39:37,404 --> 00:39:38,910 ca și cum te-ai format care? 813 00:39:38,910 --> 00:39:39,785 >> MARIA ZLATKOVA: Sigur. 814 00:39:39,785 --> 00:39:42,340 815 00:39:42,340 --> 00:39:46,410 Pot da un exemplu de ceea ce ne-ar face cu valoarea? 816 00:39:46,410 --> 00:39:52,440 Deci, ce voi s-ar putea să fie familiarizat cu este că am trecut printr-o serie 817 00:39:52,440 --> 00:39:55,380 și tipărite în esență fiecare dintre elementele, 818 00:39:55,380 --> 00:40:00,910 de exemplu, ca parte a unui lista ordonata sau ceva care. 819 00:40:00,910 --> 00:40:02,674 Asta face sens sau vrem sa-- 820 00:40:02,674 --> 00:40:04,340 Audiența: Putem imprima aceste valori afară? 821 00:40:04,340 --> 00:40:13,220 MARIA ZLATKOVA: Da, am putea imprima și apoi, practic $ valoare, deoarece la 822 00:40:13,220 --> 00:40:16,570 această valoare specifică, ne-ar fi imprimarea valoarea interiorul ei. 823 00:40:16,570 --> 00:40:20,150 Deci, dacă am fost la prima iterație de ea și am tipărit $ valoare, 824 00:40:20,150 --> 00:40:23,775 ne-ar fi de imprimare bar. 825 00:40:23,775 --> 00:40:27,020 >> Audiența: Sunt există, de asemenea pentru bucle în PHP sau doar bucle foreach? 826 00:40:27,020 --> 00:40:30,430 >> MARIA ZLATKOVA: Nu De asemenea, pentru bucle în PHP. 827 00:40:30,430 --> 00:40:33,399 Și logica lor este cea mai mare parte La fel ca ceea ce ai fost folosit pentru a. 828 00:40:33,399 --> 00:40:34,690 Audiența: Deci valoarea sa este nulă. 829 00:40:34,690 --> 00:40:35,090 MARIA ZLATKOVA: E ca la fel. 830 00:40:35,090 --> 00:40:35,590 Da. 831 00:40:35,590 --> 00:40:37,747 Audiența: Mă duc să întreb. 832 00:40:37,747 --> 00:40:39,695 Deci, atunci când declara un matrice, nu aveți nevoie de 833 00:40:39,695 --> 00:40:42,617 pentru a spune ce dimensiune se va fie, ceea ce înseamnă că puteți doar 834 00:40:42,617 --> 00:40:44,417 adăuga și ia elemente [neauzit]. 835 00:40:44,417 --> 00:40:45,250 MARIA ZLATKOVA: Da. 836 00:40:45,250 --> 00:40:45,750 Da. 837 00:40:45,750 --> 00:40:46,251 Exact. 838 00:40:46,251 --> 00:40:48,875 Când ne-am declara o matrice, am nu trebuie să spun ceea ce dimensiune este, 839 00:40:48,875 --> 00:40:51,022 astfel încât să putem adăuga doar elemente pe mai târziu, de asemenea. 840 00:40:51,022 --> 00:40:55,075 841 00:40:55,075 --> 00:40:55,700 Mai multe întrebări? 842 00:40:55,700 --> 00:40:59,870 843 00:40:59,870 --> 00:41:05,950 Deci, aduce PHP și HTML împreună, ceea ce am seen-- bine, 844 00:41:05,950 --> 00:41:15,130 de exemplu, în acest exemplu, avem un formular HTML care are un câmp de intrare. 845 00:41:15,130 --> 00:41:18,830 >> Și câmpul de intrare este doar numele și apoi are un buton Submit. 846 00:41:18,830 --> 00:41:26,040 Iar atunci când apăsați pe Submit buton, în dosarul nostru hello.php, 847 00:41:26,040 --> 00:41:32,130 deoarece metoda pentru forma este obține, putem accesa ceea ce este la nume 848 00:41:32,130 --> 00:41:40,360 de această variabilă globală care obține este-- sintaxa pentru aceasta este de $ _GET. 849 00:41:40,360 --> 00:41:44,520 Și apoi putem accesa, indiferent de introduse de utilizator în interiorul acelei forme de nume 850 00:41:44,520 --> 00:41:47,410 prin specificarea numelui acelui domeniu. 851 00:41:47,410 --> 00:41:51,480 852 00:41:51,480 --> 00:41:55,060 >> Orice alte întrebări sau orice întrebări cu privire la acest exemplu specific? 853 00:41:55,060 --> 00:41:58,275 >> Audiența: Unde este PHP? 854 00:41:58,275 --> 00:41:59,150 MARIA ZLATKOVA: Aici. 855 00:41:59,150 --> 00:42:01,150 Deci, aceasta este tag noastră deschidere pentru PSP. 856 00:42:01,150 --> 00:42:01,530 >> Audiența: Oh, da. 857 00:42:01,530 --> 00:42:02,363 >> MARIA ZLATKOVA: Da. 858 00:42:02,363 --> 00:42:05,320 859 00:42:05,320 --> 00:42:09,609 >> HANNAH Blumberg: = este prescurtarea pentru acest lucru este PHP și doar ecou. 860 00:42:09,609 --> 00:42:10,150 Audiența: Oh. 861 00:42:10,150 --> 00:42:10,720 MARIA ZLATKOVA: Da, îmi pare rău. 862 00:42:10,720 --> 00:42:12,040 Ar fi trebuit să făcut clar. 863 00:42:12,040 --> 00:42:13,759 >> HANNAH Blumberg: Print. 864 00:42:13,759 --> 00:42:16,800 MARIA ZLATKOVA: E doar funcția care ne permite să imprimați ceva. 865 00:42:16,800 --> 00:42:19,795 866 00:42:19,795 --> 00:42:20,420 Marea întrebare. 867 00:42:20,420 --> 00:42:24,140 868 00:42:24,140 --> 00:42:25,495 Deci going-- da. 869 00:42:25,495 --> 00:42:31,940 >> Audiența: Există va fi destul de un pic de codificare mână de PHP și HTML 870 00:42:31,940 --> 00:42:33,450 la testul 1? 871 00:42:33,450 --> 00:42:36,310 872 00:42:36,310 --> 00:42:38,810 MARIA ZLATKOVA: Nu poate fi o cantitate de interpretare 873 00:42:38,810 --> 00:42:43,330 de PHP și HTML, nu neapărat ca o cantitate mare de codificare, 874 00:42:43,330 --> 00:42:46,960 deși s-ar putea să scrie o foreach buclă, deși, o bucla for. 875 00:42:46,960 --> 00:42:49,790 Oricare dintre buclele pe care le acoperi aici este un joc corect. 876 00:42:49,790 --> 00:42:51,889 Și asta e cea mai mare parte o. 877 00:42:51,889 --> 00:42:53,430 HANNAH Blumberg: Mi-ar fi pregătit. 878 00:42:53,430 --> 00:42:57,010 În același mod în care ne-ai cerut să scrie o grămadă de funcții C test 0, 879 00:42:57,010 --> 00:42:59,766 Mi-ar fi pregătit să facă aceeași în PHP și JavaScript. 880 00:42:59,766 --> 00:43:00,640 MARIA ZLATKOVA: Da. 881 00:43:00,640 --> 00:43:03,210 HANNAH Blumberg: Aș spune un little-- ca nu suntem 882 00:43:03,210 --> 00:43:06,251 O să te fac să scrie un imens HTML Pagina doar pentru că asta e un pic 883 00:43:06,251 --> 00:43:08,240 plictisitor, dar s-ar putea avea părți. 884 00:43:08,240 --> 00:43:09,310 Asta e joc total corect. 885 00:43:09,310 --> 00:43:11,082 Ca pagina HTML mic, total corect. 886 00:43:11,082 --> 00:43:11,623 Audiența: OK. 887 00:43:11,623 --> 00:43:13,814 Ce zici în JavaScript, precum și? 888 00:43:13,814 --> 00:43:14,730 HANNAH Blumberg: Da. 889 00:43:14,730 --> 00:43:15,250 Joc corect JavaScript lui. 890 00:43:15,250 --> 00:43:15,635 >> MARIA ZLATKOVA: Da. 891 00:43:15,635 --> 00:43:16,801 Asta e joc complet corect. 892 00:43:16,801 --> 00:43:19,280 HANNAH Blumberg: Vom primi la care în ca 10 minute. 893 00:43:19,280 --> 00:43:23,750 >> MARIA ZLATKOVA: SQL, din nou, Structured Query Language. 894 00:43:23,750 --> 00:43:28,651 Este practic ne permite de a gestiona date într-o bază de date relațională management 895 00:43:28,651 --> 00:43:29,150 sistem. 896 00:43:29,150 --> 00:43:31,149 Asta înseamnă că, practic, doar că avem undeva 897 00:43:31,149 --> 00:43:37,980 pentru a stoca unele date pe care le-ar putea dori să utiliza intr-un site sau într-o altă formă. 898 00:43:37,980 --> 00:43:42,190 Și apoi ne-am întrebări pentru a obține informații din baza noastră de date, 899 00:43:42,190 --> 00:43:44,320 sau pentru a introduce informații în ele. 900 00:43:44,320 --> 00:43:47,560 O mulțime de comun UPDATE ones--, INSERT, SELECT, și DELETE. 901 00:43:47,560 --> 00:43:50,790 >> Deci, pentru UPDATE, aceasta este sintaxa pentru actualizarea datelor într-o bază de date. 902 00:43:50,790 --> 00:43:53,330 903 00:43:53,330 --> 00:43:57,340 Actualizarea acest tabel numit masă spunând SET, 904 00:43:57,340 --> 00:44:04,170 putem stabili unele valori în toate rânduri la egal altceva. 905 00:44:04,170 --> 00:44:09,410 Astfel încât să putem specifica, de asemenea, unele specifice intrări pe care le doriți să le modificați 906 00:44:09,410 --> 00:44:11,240 și care pot fi utilizați unde. 907 00:44:11,240 --> 00:44:16,380 Și putem preciza că vrem doar să modifica unele rânduri în cazul în care casa de, 908 00:44:16,380 --> 00:44:19,830 dacă am avea un tabel de studenți și toți elevii au avut casa, 909 00:44:19,830 --> 00:44:24,890 asa ca am ar modifica doar niște valori în cazul în care o casă este egal Currier, 910 00:44:24,890 --> 00:44:25,430 de exemplu. 911 00:44:25,430 --> 00:44:29,120 912 00:44:29,120 --> 00:44:31,800 >> Pentru INSERT, putem introduce anumite valori într-un tabel. 913 00:44:31,800 --> 00:44:35,150 Deci, INSERT INTO tabel, și apoi valorile, 914 00:44:35,150 --> 00:44:39,080 și apoi în paranteze, precizăm care valorile pe care doriți să inserați. 915 00:44:39,080 --> 00:44:43,220 Deci, INSERT INTO tabel, col1 și col2, valoarea este VAL1 și VAL2. 916 00:44:43,220 --> 00:44:48,930 Deci, aceasta introduce, practic un rând nou în un tabel conținând valorile 1 și 2 917 00:44:48,930 --> 00:44:50,850 În coloana 1 și 2. 918 00:44:50,850 --> 00:44:54,760 >> Și apoi vom trece peste un exemplu rapid de modul în care această arata 919 00:44:54,760 --> 00:44:56,310 ca in baza de date un pic. 920 00:44:56,310 --> 00:44:58,685 Dar această interogare final pe care am că vom pentru a trece peste, 921 00:44:58,685 --> 00:45:01,450 SELECT, doar ne permite pentru a selecta date dintr-un tabel 922 00:45:01,450 --> 00:45:03,080 să-l folosească, eventual după aceea. 923 00:45:03,080 --> 00:45:05,830 Și modul în care facem acest lucru este ne doar stoca într-o variabilă. 924 00:45:05,830 --> 00:45:07,780 Și atunci putem, eventual, folosi din nou. 925 00:45:07,780 --> 00:45:10,260 >> Deci SELECT stele înseamnă selectați toate. 926 00:45:10,260 --> 00:45:13,280 Asta e doar o prescurtare pentru selectarea toate. 927 00:45:13,280 --> 00:45:19,760 Din tabelul UNDE, cautam pentru anumite condiții specifice, 928 00:45:19,760 --> 00:45:22,290 Deci, unde coloana este egal ceva, de exemplu. 929 00:45:22,290 --> 00:45:24,410 Dacă ne-am dorit doar să selectați toate de la masă, 930 00:45:24,410 --> 00:45:28,400 acest selectează doar toate coloanele și toate rândurile dintr-un tabel. 931 00:45:28,400 --> 00:45:32,040 >> Și apoi ștergeți din tabelul UNDE col egal ceva, 932 00:45:32,040 --> 00:45:36,440 acest șterge doar unele rândul din masa noastră 933 00:45:36,440 --> 00:45:38,860 în cazul în care avem unele condiții specifice. 934 00:45:38,860 --> 00:45:41,870 În acest caz, condițiile sunt coloana este egal cu ceva. 935 00:45:41,870 --> 00:45:43,460 Deci, doar un exemplu rapidă a acestei. 936 00:45:43,460 --> 00:45:49,100 Dacă avem acest tabel chiar aici, iar noi introduceți-l într-un tabel, aceste valori, 937 00:45:49,100 --> 00:45:50,400 care ar insera un rând nou. 938 00:45:50,400 --> 00:45:56,380 Și dacă am avut auto-increment, acest lucru ar doar incrementa ID nostru la 0 la 1 pentru a sau 2. 939 00:45:56,380 --> 00:46:00,010 >> Dacă am selectat toate de studenți ea, doar returneaza toate domeniile și toate rândurile. 940 00:46:00,010 --> 00:46:02,430 În cazul în care an este mai mare mică sau egală cu 2,016, 941 00:46:02,430 --> 00:46:04,390 că se va întoarce doar Hannah și cu mine. 942 00:46:04,390 --> 00:46:08,360 Și apoi, dacă ne-am ales an de identitate și an de la studenți 943 00:46:08,360 --> 00:46:11,710 în cazul în care casa este Cabot House, care ar, din nou, a reveni Hannah și cu mine. 944 00:46:11,710 --> 00:46:14,430 >> Apoi, dacă ne-am șters din studenți în cazul în care numele este egal cu Rob, 945 00:46:14,430 --> 00:46:16,760 care ar șterge tot rândul. 946 00:46:16,760 --> 00:46:19,696 Și apoi, dacă ne-am stabilit nume, studenții UPDATE 947 00:46:19,696 --> 00:46:21,570 Numele SET este egal cu Daven UNDE casa este egal 948 00:46:21,570 --> 00:46:27,010 Cabot House, care va merge la aceste rânduri și apoi actualizați numele. 949 00:46:27,010 --> 00:46:31,470 >> Și apoi câteva tipuri de date SQL sunt CHAR, VARCHAR, INT, și FLOAT. 950 00:46:31,470 --> 00:46:32,760 Acestea sunt joc corect. 951 00:46:32,760 --> 00:46:36,740 Mi-ar merge din nou și asigurați-vă că știți 952 00:46:36,740 --> 00:46:40,930 și le-au pe foaia de ieftin, ceea ce fiecare dintre aceste caractere 953 00:46:40,930 --> 00:46:44,140 au fost folosite pentru, ceea ce le-ai folosit pe psets tale, 954 00:46:44,140 --> 00:46:48,050 și asigurați-vă că sunteți familiarizat și confortabil cu care au de a alege 955 00:46:48,050 --> 00:46:51,450 din diferite tipuri de date în PSET ta. 956 00:46:51,450 --> 00:46:51,950 Da. 957 00:46:51,950 --> 00:46:54,300 >> Audiența: Ce a fost depozitat acea masă? 958 00:46:54,300 --> 00:46:57,119 Da, în cazul în care este stocat acest tabel? 959 00:46:57,119 --> 00:46:59,160 MARIA ZLATKOVA: Ei bine, acum, nu este stocat. 960 00:46:59,160 --> 00:47:00,700 Oricum, în cazul în care este stocat acest tabel? 961 00:47:00,700 --> 00:47:04,503 Dar poate fi stocate într-o bază de date SQL. 962 00:47:04,503 --> 00:47:07,330 >> Audiența: Și unde este baza de date SQL? 963 00:47:07,330 --> 00:47:11,200 În computer, on-line undeva, serverul? 964 00:47:11,200 --> 00:47:15,000 >> MARIA ZLATKOVA: Aceasta poate fi o Numărul de lucruri diferite. 965 00:47:15,000 --> 00:47:19,690 >> HANNAH Blumberg: Ne-am interfață cu Tabele SQL cea mai mare parte cu phpMyAdmin. 966 00:47:19,690 --> 00:47:22,060 Deci, am putea cere un server pentru a le stoca pentru noi. 967 00:47:22,060 --> 00:47:23,830 Am putea să le stoca pe cont propriu calculator. 968 00:47:23,830 --> 00:47:27,950 >> MARIA ZLATKOVA: doar Depinde cum vrei să o faci pentru tine. 969 00:47:27,950 --> 00:47:30,075 Dar am fost de depozitare le, ca Hannah menționat, 970 00:47:30,075 --> 00:47:31,755 pe phpMyAdmin, care este on-line. 971 00:47:31,755 --> 00:47:36,550 972 00:47:36,550 --> 00:47:39,280 Și apoi modul în care folosim PHP si SQL, am păstra 973 00:47:39,280 --> 00:47:43,450 în unele variabile ceea ce am interogat pentru. 974 00:47:43,450 --> 00:47:48,370 >> Deci, dacă vom selecta toate din istorie în cazul în care este egal cu user_id ID de sesiune, 975 00:47:48,370 --> 00:47:53,900 care ar selecta toate rândurile pentru persoana care specifică 976 00:47:53,900 --> 00:47:58,327 este conectat la istoria masă și sortați-le în rânduri. 977 00:47:58,327 --> 00:48:00,410 Un lucru rece să știu este că funcția de interogare CS50 lui 978 00:48:00,410 --> 00:48:02,180 protejează împotriva tag-uri SQL injection. 979 00:48:02,180 --> 00:48:07,420 Asta înseamnă doar că o face sigur intrare care este introdusă este corectă 980 00:48:07,420 --> 00:48:09,920 și că persoana care intră intrare 981 00:48:09,920 --> 00:48:15,100 nu este încercarea de a de intrare unele malware Codul fie scadă mesele noastre 982 00:48:15,100 --> 00:48:17,305 sau șterge totul interiorul baza noastra de date. 983 00:48:17,305 --> 00:48:20,060 984 00:48:20,060 --> 00:48:23,400 >> O privire de ansamblu rapidă a Model View Controler de model, 985 00:48:23,400 --> 00:48:27,360 e doar un mod de organizare și de gândire despre codul. 986 00:48:27,360 --> 00:48:29,100 Este, din nou, o paradigmă de design. 987 00:48:29,100 --> 00:48:33,380 Ce înseamnă asta este că noi can-- și este o bună practică 988 00:48:33,380 --> 00:48:37,790 pentru a separa diferite părți de codul nostru și ceea ce 989 00:48:37,790 --> 00:48:40,530 controla în aceste trei paradigme. 990 00:48:40,530 --> 00:48:46,700 >> Deci punctul nostru de vedere este de cele mai multe ori nostru template-uri, layout-ul nostru, modul 991 00:48:46,700 --> 00:48:48,260 că ne-am stabilit cum codul nostru arată. 992 00:48:48,260 --> 00:48:55,190 Asta e cea mai mare parte fișierele noastre CSS și modul că am definit arhitecturii codului nostru, 993 00:48:55,190 --> 00:48:55,710 practic. 994 00:48:55,710 --> 00:48:59,280 Controler noastră este cea mai mare parte ceea ce ne-am făcut cu fișiere PHP. 995 00:48:59,280 --> 00:49:03,030 Deci, din nou, de lucru cu informații pe care le avem 996 00:49:03,030 --> 00:49:06,700 și definirea modului care informatii sunt utilizate, 997 00:49:06,700 --> 00:49:10,660 și apoi trece aceste informații fie pe punctul de vedere, fie modelul. 998 00:49:10,660 --> 00:49:13,880 Și modelul, modul în care ne-am Folosesc este a fost baza noastră de date, 999 00:49:13,880 --> 00:49:17,510 Deci, unde informațiile noastre este stocate deci are undeva 1000 00:49:17,510 --> 00:49:21,490 să trăiască în, și oricare din cod care se referă la modul în care 1001 00:49:21,490 --> 00:49:25,410 că vom obține că informațiile sau încât am actualizează informațiile. 1002 00:49:25,410 --> 00:49:28,940 1003 00:49:28,940 --> 00:49:33,200 >> Deci, în modelul MVC, HTTP cererile sunt trimise la un server web. 1004 00:49:33,200 --> 00:49:36,220 Apoi, interpretează controler cererea de la utilizator 1005 00:49:36,220 --> 00:49:38,260 și apoi validează datele introduse de utilizator. 1006 00:49:38,260 --> 00:49:41,580 Este opțional că avem controlerul comunica 1007 00:49:41,580 --> 00:49:44,000 cu un model, așa ceva ca baza noastră de date 1008 00:49:44,000 --> 00:49:47,500 sau unele alte funcționalități care relee informații. 1009 00:49:47,500 --> 00:49:50,340 Și în final, controlerul trece informații pe ecranul 1010 00:49:50,340 --> 00:49:52,090 astfel încât să poată fi prestate și că se poate 1011 00:49:52,090 --> 00:49:55,860 devin vizibile la orice persoană accesarea paginii web. 1012 00:49:55,860 --> 00:49:58,440 1013 00:49:58,440 --> 00:50:01,340 >> Alte intrebari? 1014 00:50:01,340 --> 00:50:01,840 Incredibil. 1015 00:50:01,840 --> 00:50:04,530 1016 00:50:04,530 --> 00:50:08,469 Deci, din nou, modelul, funcția sa, din nou, 1017 00:50:08,469 --> 00:50:11,260 este stocare persistent de informații, gestionarea și organizarea datelor. 1018 00:50:11,260 --> 00:50:13,890 Și ceea ce am văzut atât de departe este baza de date MySQL 1019 00:50:13,890 --> 00:50:16,200 și orice fișiere de date care ar putea folosi. 1020 00:50:16,200 --> 00:50:20,580 >> Vedere, prezentarea de informații pentru a utilizatorul, UI, sau interfața cu utilizatorul. 1021 00:50:20,580 --> 00:50:22,350 Iar exemplul în acest sens este HTML. 1022 00:50:22,350 --> 00:50:23,950 Și atunci am putea avea minim PHP. 1023 00:50:23,950 --> 00:50:28,360 Deci, un pentru buclă care reiterează asupra datelor care sunt imprimate 1024 00:50:28,360 --> 00:50:30,720 face parte din vedere, ca spre deosebire de controlerul. 1025 00:50:30,720 --> 00:50:35,660 Și apoi o mulțime de fișiere noastre PHP se încadrează în categoria controler. 1026 00:50:35,660 --> 00:50:38,410 Doar ocupă cereri de utilizator și primește informații de la modelul. 1027 00:50:38,410 --> 00:50:42,880 1028 00:50:42,880 --> 00:50:45,590 >> Sărind în Documentul Object Model, aceasta doar 1029 00:50:45,590 --> 00:50:47,700 se referă la modul HTML sunt organizate de documente. 1030 00:50:47,700 --> 00:50:51,600 Și acestea sunt organizate într-un copac structură care are o ierarhie. 1031 00:50:51,600 --> 00:50:56,720 Deci, dacă avem acces la [Inaudibil] Reprezentarea documentului, 1032 00:50:56,720 --> 00:51:02,750 putem lucra cu documentul, cum ar fi am manipula obiecte practic. 1033 00:51:02,750 --> 00:51:06,630 >> Și pentru a face acest lucru un pic mai clar, atunci când 1034 00:51:06,630 --> 00:51:10,540 avem o mulțime de noastre diferite etichete răspunde 1035 00:51:10,540 --> 00:51:12,590 la diferite rute din copacul nostru. 1036 00:51:12,590 --> 00:51:17,070 Și apoi pentru acest exemplu, vom au nodul documentului de pornire. 1037 00:51:17,070 --> 00:51:20,010 Avem, deci, nodul nostru HTML care se imparte in cap si corp. 1038 00:51:20,010 --> 00:51:22,810 Cap are titlu și apoi titlu conține salut, lume. 1039 00:51:22,810 --> 00:51:24,860 Si corpul nostru contine doar Bună ziua, lume, de asemenea. 1040 00:51:24,860 --> 00:51:28,700 1041 00:51:28,700 --> 00:51:31,900 >> Deci, orice întrebări pe oricare dintre lucruri pe care le fac obiectul până acum? 1042 00:51:31,900 --> 00:51:35,891 Și dacă nu, Hannah va preia cu JavaScript. 1043 00:51:35,891 --> 00:51:36,390 Incredibil. 1044 00:51:36,390 --> 00:51:37,473 >> HANNAH Blumberg: OK, rece. 1045 00:51:37,473 --> 00:51:40,980 Dacă ceva vine cu PHP sau HTML, sau la oricare dintre lucrurile Maria acoperit, 1046 00:51:40,980 --> 00:51:42,700 putem întrerupe oricând. 1047 00:51:42,700 --> 00:51:46,430 Facem mai bine pe timp, din nou, atât de minunat. 1048 00:51:46,430 --> 00:51:48,770 Și doar pentru a reveni foarte repede la această, 1049 00:51:48,770 --> 00:51:51,010 dacă te uiți la fiecare examen anul trecut, acest 1050 00:51:51,010 --> 00:51:54,120 vine either-- aici este unele HTML, fac din acest diagrama. 1051 00:51:54,120 --> 00:51:58,380 Sau aici e această diagramă, face unele HTML, astfel încât cu siguranță practică. 1052 00:51:58,380 --> 00:52:01,500 Și apoi asta e unul garantat întrebare pe care le puteți obține dreptul. 1053 00:52:01,500 --> 00:52:02,000 Misto. 1054 00:52:02,000 --> 00:52:04,510 Deci, hai sa vorbim despre JavaScript și modul în care aceasta este un pic 1055 00:52:04,510 --> 00:52:09,130 diferit de limbi, cum ar fi PHP si C, cele două limbi le-am văzut în prealabil. 1056 00:52:09,130 --> 00:52:10,780 Deci numărul unu, e liber tipizat. 1057 00:52:10,780 --> 00:52:14,630 Care este ca PHP, dar spre deosebire de C. 1058 00:52:14,630 --> 00:52:15,890 >> Este un limbaj interpretat. 1059 00:52:15,890 --> 00:52:19,870 Din nou, asta e ca PHP, spre deosebire de C. Și asta 1060 00:52:19,870 --> 00:52:24,630 este de gând să ne permită să-l use-- functioneaza cu adevarat frumos cu pagini web. 1061 00:52:24,630 --> 00:52:28,350 Se va permite de a manipula ne conținutul și modul în care arată 1062 00:52:28,350 --> 00:52:30,300 și ceea ce face. 1063 00:52:30,300 --> 00:52:32,330 >> Vom vedea un pic de Ajax. 1064 00:52:32,330 --> 00:52:36,140 Acesta ne permite să comunice asincron cu diferite servere 1065 00:52:36,140 --> 00:52:37,950 și obține informații. 1066 00:52:37,950 --> 00:52:42,820 Și acesta este lucrul care într-adevăr separă JavaScript de la PHP și C 1067 00:52:42,820 --> 00:52:45,590 este faptul că este client-side. 1068 00:52:45,590 --> 00:52:49,860 Atât PHP și C sunt de obicei de server-side. 1069 00:52:49,860 --> 00:52:51,960 >> Pentru cea mai mare parte și aproape în întregime ceea ce 1070 00:52:51,960 --> 00:52:53,900 am văzut, cel puțin în această clasă, JavaScript 1071 00:52:53,900 --> 00:52:57,040 acționează asupra client-side, ceea ce înseamnă că browser-ul este de fapt 1072 00:52:57,040 --> 00:52:58,597 responsabil pentru derularea acesteia. 1073 00:52:58,597 --> 00:53:01,180 Și asta înseamnă că noi nu Trebuie să interacționeze cu serverul. 1074 00:53:01,180 --> 00:53:04,380 Deci, înseamnă că poate fi un mult mai repede pentru că este de fapt doar e Chrome, 1075 00:53:04,380 --> 00:53:10,420 e Safari, Firefox este, indiferent ce folosi de fapt rulează JavaScript. 1076 00:53:10,420 --> 00:53:12,290 >> Audiența: Ce asincron înseamnă? 1077 00:53:12,290 --> 00:53:13,620 >> HANNAH Blumberg: Ah, ce nu asincron înseamnă? 1078 00:53:13,620 --> 00:53:14,250 Marea întrebare. 1079 00:53:14,250 --> 00:53:17,890 Asincron înseamnă: bine, conținutul în care 1080 00:53:17,890 --> 00:53:22,140 vom folosi este, OK, am sunt crearea unei pagini web 1081 00:53:22,140 --> 00:53:23,860 si avem nevoie pentru a obține unele informații. 1082 00:53:23,860 --> 00:53:28,250 Deci, în exemplul de Mashup, unele informații pe care le-ar putea dori 1083 00:53:28,250 --> 00:53:30,580 este titluri articol. 1084 00:53:30,580 --> 00:53:33,330 Acum, am o opțiune putea-- este de a face acest lucru sincron 1085 00:53:33,330 --> 00:53:37,940 și asta înseamnă Să opri, du-te articol, 1086 00:53:37,940 --> 00:53:41,275 obține articol spate, și apoi face, dar că ar fi foarte lent. 1087 00:53:41,275 --> 00:53:44,150 Asta ar fi o experiență de utilizare rău pentru că v-ar fi doar stând 1088 00:53:44,150 --> 00:53:46,630 acolo de așteptare pentru ceva pentru a răspunde. 1089 00:53:46,630 --> 00:53:50,020 >> Asincron înseamnă că vom continua merge despre afacerea noastra, 1090 00:53:50,020 --> 00:53:52,529 făcând pagina, și vom trimite o cerere pe 1091 00:53:52,529 --> 00:53:54,570 care este un fel de a merge la se întâmplă în fundal. 1092 00:53:54,570 --> 00:53:57,610 Cred că vom folosi exemplul din prelegere de asteptare Rob și spunând, 1093 00:53:57,610 --> 00:53:59,980 Hei, poate te uiti asta pentru mine si sa ma intorc la mine, 1094 00:53:59,980 --> 00:54:02,870 spre deosebire de doar eu așteptare la telefon. 1095 00:54:02,870 --> 00:54:07,020 Deci, înseamnă asincron se întâmplă în fundal departe de noi 1096 00:54:07,020 --> 00:54:08,676 în paralel. 1097 00:54:08,676 --> 00:54:10,400 >> Marea întrebare. 1098 00:54:10,400 --> 00:54:11,830 Altceva? 1099 00:54:11,830 --> 00:54:12,330 Grozav. 1100 00:54:12,330 --> 00:54:15,020 Vom sari mult mai mult în cereri asincrone cu Ajax. 1101 00:54:15,020 --> 00:54:18,287 >> Audiența: Are JavaScript-- cazul în care nu să cadă cu modelul-view-controller? 1102 00:54:18,287 --> 00:54:19,620 HANNAH Blumberg: marea întrebare. 1103 00:54:19,620 --> 00:54:23,320 În cazul în care nu se încadrează JavaScript cu Model-View-Controller? 1104 00:54:23,320 --> 00:54:23,930 Hm. 1105 00:54:23,930 --> 00:54:28,350 Cred că pot fall-- așa că nu, de obicei, 1106 00:54:28,350 --> 00:54:31,340 vrea să-l strivi în care paradigmă, dar cred că aș spune, 1107 00:54:31,340 --> 00:54:34,280 OK, deci JavaScript de fapt, este de gând să permită 1108 00:54:34,280 --> 00:54:37,587 ne pentru a colecta date, interpreta datele, de fapt, nu 1109 00:54:37,587 --> 00:54:38,920 lucruri semnificative cu datele. 1110 00:54:38,920 --> 00:54:41,100 În acest fel, este foarte de control cum ar fi. 1111 00:54:41,100 --> 00:54:43,900 >> Dar este, de asemenea ne va permite sa afișa lucruri și lucruri de imprimare. 1112 00:54:43,900 --> 00:54:47,021 În acest fel, este foarte vedere ca. 1113 00:54:47,021 --> 00:54:47,520 Da. 1114 00:54:47,520 --> 00:54:51,710 Deci e un fel de PHP în în cazul în care acesta poate fi un fel de atât. 1115 00:54:51,710 --> 00:54:53,330 Buna intrebare. 1116 00:54:53,330 --> 00:54:55,209 Altceva? 1117 00:54:55,209 --> 00:54:56,000 Bine, minunat. 1118 00:54:56,000 --> 00:54:57,120 Mutarea dreapta de-a lungul. 1119 00:54:57,120 --> 00:54:59,110 >> Deci, haideți să vedem un exemplu de modul în care putem folosi 1120 00:54:59,110 --> 00:55:02,250 JavaScript într-unul din programele noastre web. 1121 00:55:02,250 --> 00:55:05,680 Așa că vom lua în considerare această index.html cu un buchet de HTML. 1122 00:55:05,680 --> 00:55:08,800 Si lucru pe care doriți se concentreze pe această etichetă este script. 1123 00:55:08,800 --> 00:55:13,280 Și aceasta spune, OK, vreau să fac niște JavaScript și aici este locul unde trăiește. 1124 00:55:13,280 --> 00:55:15,400 Acesta locuiește în hello.js. 1125 00:55:15,400 --> 00:55:21,120 >> Și foarte mult ca CSS, am putea pune JavaScript în HTML. 1126 00:55:21,120 --> 00:55:24,000 De ce am putea să-l separa? 1127 00:55:24,000 --> 00:55:24,500 Da. 1128 00:55:24,500 --> 00:55:25,486 >> Audiența: Mai ușor pentru a rescrie? 1129 00:55:25,486 --> 00:55:26,402 >> HANNAH Blumberg: Da. 1130 00:55:26,402 --> 00:55:28,450 Este mai ușor de utilizat în întreaga diferite pagini web. 1131 00:55:28,450 --> 00:55:29,980 Se păstrează lucrurile curat. 1132 00:55:29,980 --> 00:55:32,090 E doar o bună practică. 1133 00:55:32,090 --> 00:55:32,590 Incredibil. 1134 00:55:32,590 --> 00:55:33,930 Răspuns bun. 1135 00:55:33,930 --> 00:55:36,690 Atât de bine, asa ca acest lucru se întâmplă să fie index.html nostru. 1136 00:55:36,690 --> 00:55:39,430 Și apoi aici este nostru mic fișier JavaScript puțin. 1137 00:55:39,430 --> 00:55:42,410 >> Și tot ce spune este alert Hello, lume. 1138 00:55:42,410 --> 00:55:46,040 Deci, ceea ce se întâmplă este atunci când aceasta pagina renders-- 1139 00:55:46,040 --> 00:55:49,680 Deci, dacă te duci la orice site-ul acest este-- tot ce se va întâmpla 1140 00:55:49,680 --> 00:55:53,330 este o să spun, OK, eu sunt va pentru a rula acest cod JavaScript. 1141 00:55:53,330 --> 00:55:56,370 Și acest cod JavaScript doar spune alertă Hello, lume. 1142 00:55:56,370 --> 00:55:59,090 Deci, am de gând pentru a obține acest friendly puțin pop-up. 1143 00:55:59,090 --> 00:56:00,360 >> Misto? 1144 00:56:00,360 --> 00:56:04,746 Asta e un fel de noastre prima JavaScript programul, Buna, ziua noastră, lumea. 1145 00:56:04,746 --> 00:56:07,690 1146 00:56:07,690 --> 00:56:12,190 Să ne uităm un pic mai mult despre ceea ce sintaxa de JavaScript pare. 1147 00:56:12,190 --> 00:56:16,330 Și, în special, să-l compara cu C și PHP, pe care noi am văzut înainte. 1148 00:56:16,330 --> 00:56:20,610 >> În JavaScript, vom avea var, numele variabilei, și apoi 1149 00:56:20,610 --> 00:56:21,690 valoarea sa reală. 1150 00:56:21,690 --> 00:56:26,170 Și noi nu specificați un tip, doar ca în PHP, dar foarte spre deosebire de C. 1151 00:56:26,170 --> 00:56:28,850 Deci, de exemplu, în cazul în care ne-am dorit pentru a stoca valoarea de 50, 1152 00:56:28,850 --> 00:56:32,490 în C, ne-ar trebui să spun, hei, C, vreau un număr întreg, 1153 00:56:32,490 --> 00:56:35,076 Am de gând să-l sun I, iar valoarea sa este de 50. 1154 00:56:35,076 --> 00:56:36,450 În PHP, e un pic mai ușor. 1155 00:56:36,450 --> 00:56:41,880 Noi spunem, hei, vreau o variabilă numit i si valoarea sa este de 50. 1156 00:56:41,880 --> 00:56:45,890 Foarte similar, în JavaScript, putem spun hei, vreau o variabilă am chemat, 1157 00:56:45,890 --> 00:56:47,080 valoarea sa este de 50. 1158 00:56:47,080 --> 00:56:52,140 De fiecare dată când ulterior că am folosi Eu, nu am nevoie pentru a scrie var. 1159 00:56:52,140 --> 00:56:53,810 Doar că din acel moment. 1160 00:56:53,810 --> 00:56:58,660 În același mod, în C, unde odată ce spunem int i, doar vom folosi i. 1161 00:56:58,660 --> 00:57:00,340 Misto? 1162 00:57:00,340 --> 00:57:01,800 In regula. 1163 00:57:01,800 --> 00:57:03,710 >> Trecând la bucle, Din fericire, acestea aproape 1164 00:57:03,710 --> 00:57:06,720 uite exactly-- Cred că sunt exact la fel ca ceea ce 1165 00:57:06,720 --> 00:57:09,799 bucle vor să arate ca în ceva de genul C în cazul în care pentru bucla 1166 00:57:09,799 --> 00:57:11,840 va avea trei parts-- o inițializare, 1167 00:57:11,840 --> 00:57:13,640 o condiție, și o actualizare. 1168 00:57:13,640 --> 00:57:15,340 O buclă în timp ce, se pare exact același lucru. 1169 00:57:15,340 --> 00:57:16,390 Tocmai am da o stare. 1170 00:57:16,390 --> 00:57:18,264 >> Și o face în timp ce bucla, din nou, exact la fel. 1171 00:57:18,264 --> 00:57:20,190 Am o stare da. 1172 00:57:20,190 --> 00:57:24,510 Să spunem am vrut să repeta over-- Am vrut să fac ceva de cinci ori. 1173 00:57:24,510 --> 00:57:27,840 În C, s-ar putea scrie pentru init i este egal cu 0. 1174 00:57:27,840 --> 00:57:30,480 i este mai mică de 5, i ++. 1175 00:57:30,480 --> 00:57:34,240 Singura diferență, în JavaScript, în loc de a spune int i este egal cu 0, 1176 00:57:34,240 --> 00:57:36,820 spunem var i este egal cu 0. 1177 00:57:36,820 --> 00:57:38,370 Frumoasa. 1178 00:57:38,370 --> 00:57:41,320 Asta e singura diferenta. 1179 00:57:41,320 --> 00:57:43,200 Orice întrebări cu privire la orice de care? 1180 00:57:43,200 --> 00:57:44,160 Da. 1181 00:57:44,160 --> 00:57:48,480 >> Audiența: Deci, în PHP, este la fel lucru, cu excepția dar ca o variabilă? 1182 00:57:48,480 --> 00:57:49,564 Sau a fost ca un exemplu var? 1183 00:57:49,564 --> 00:57:50,480 HANNAH Blumberg: Da. 1184 00:57:50,480 --> 00:57:52,310 Deci, în PHP, va să fie un semn dolar. 1185 00:57:52,310 --> 00:57:59,450 Deci o să $ i egali 0, $ i este mai mică de 5, $ i ++. 1186 00:57:59,450 --> 00:58:02,490 Marea întrebare. 1187 00:58:02,490 --> 00:58:04,570 >> Acum hai sa vorbim despre declarațiile funcțiilor. 1188 00:58:04,570 --> 00:58:07,010 În C, atunci când ne-am declarat funcție, am dat un nume 1189 00:58:07,010 --> 00:58:08,490 și ne-am dat niste parametri. 1190 00:58:08,490 --> 00:58:10,670 Și la început, am scris tipul. 1191 00:58:10,670 --> 00:58:12,440 În JavaScript, tot ce trebuie să faceți este să scrie 1192 00:58:12,440 --> 00:58:15,080 funcția de cuvinte cheie care spune, hei, JavaScript, 1193 00:58:15,080 --> 00:58:16,570 Sunt pe cale de a defini o funcție. 1194 00:58:16,570 --> 00:58:18,520 >> În acest caz, ea are suma nume. 1195 00:58:18,520 --> 00:58:20,820 Și este nevoie de două argumente, x și y. 1196 00:58:20,820 --> 00:58:23,280 Observați că nu ne pasă despre tipurile de x și y. 1197 00:58:23,280 --> 00:58:26,280 Și la fel ca C, avem această întoarcere de cuvinte cheie, 1198 00:58:26,280 --> 00:58:29,140 astfel încât să putem face ceva ca întoarcerea x și y. 1199 00:58:29,140 --> 00:58:32,540 >> Și acum o dată am scris această primă funcție, putem folosi sumă oriunde. 1200 00:58:32,540 --> 00:58:34,740 Și asta e în regulă. 1201 00:58:34,740 --> 00:58:37,530 Un lucru foarte cool despre JavaScript care este foarte, spre deosebire de C 1202 00:58:37,530 --> 00:58:40,770 este că funcțiile pot fie tratate ca valori. 1203 00:58:40,770 --> 00:58:43,895 Astfel încât să putem face ceva de genul aici în cazul în care cred că am acoperi acest up-- 1204 00:58:43,895 --> 00:58:46,400 Am acoperit suma var part-- si ne-am spus 1205 00:58:46,400 --> 00:58:49,850 Funcția xy este egal cu x plus y întoarcere. 1206 00:58:49,850 --> 00:58:52,140 >> Asta este ceea ce s-ar fi numit o funcție anonim. 1207 00:58:52,140 --> 00:58:53,920 Este o funcție fără un nume. 1208 00:58:53,920 --> 00:58:56,290 Întrucât această funcție spune sumă, bla, bla, bla, 1209 00:58:56,290 --> 00:58:59,340 acest lucru ar spune doar funcția. 1210 00:58:59,340 --> 00:59:02,020 Dar acum, chiar dacă am Această funcție anonim, 1211 00:59:02,020 --> 00:59:03,630 că funcția este de fapt doar o valoare. 1212 00:59:03,630 --> 00:59:05,160 Putem trata ca pe o valoare. 1213 00:59:05,160 --> 00:59:10,180 >> Astfel încât să putem salva într-o variabilă la fel Astfel am putea stoca 50 într-o variabilă. 1214 00:59:10,180 --> 00:59:13,870 Deci, putem spune, OK, vreau o variabilă, se numește sumă, 1215 00:59:13,870 --> 00:59:16,011 și este această funcție. 1216 00:59:16,011 --> 00:59:18,760 Deci, aceste două lucruri sunt de fapt de gând să faci exact același lucru, 1217 00:59:18,760 --> 00:59:21,576 dar sintaxa este un pic diferite și un fel de note distracție. 1218 00:59:21,576 --> 00:59:22,076 Da. 1219 00:59:22,076 --> 00:59:25,548 >> Audiența: Deci, ai putea numi o funcție care a fost anonim, spunând: 1220 00:59:25,548 --> 00:59:28,244 paranteze sumă 2, 5? 1221 00:59:28,244 --> 00:59:29,160 HANNAH Blumberg: Da. 1222 00:59:29,160 --> 00:59:32,280 Puteți apela acest anonim Funcția în același mod. 1223 00:59:32,280 --> 00:59:33,350 Ai face sumă (2, 5) ;. 1224 00:59:33,350 --> 00:59:36,180 1225 00:59:36,180 --> 00:59:38,200 Asta ar fi total bine. 1226 00:59:38,200 --> 00:59:41,575 >> Dacă nu am făcut suma este egală cu var funcție, dacă am doar șters 1227 00:59:41,575 --> 00:59:45,480 astea-- Știu că e pe mâna mea, dar pretinde am șters astea-- atunci 1228 00:59:45,480 --> 00:59:46,964 această funcție este un fel de doar dus. 1229 00:59:46,964 --> 00:59:49,630 Nu îl puteți folosi din nou pentru că nu ai un nume pentru el. 1230 00:59:49,630 --> 00:59:53,497 E greu să se refere la ceva nu știi ce să sun. 1231 00:59:53,497 --> 00:59:54,080 Buna intrebare. 1232 00:59:54,080 --> 00:59:54,580 Da. 1233 00:59:54,580 --> 00:59:59,580 >> Audiența: Poți referință sumă în alte locuri cu valoarea lui x plus y? 1234 00:59:59,580 --> 01:00:01,940 >> HANNAH Blumberg: Poți sumă de referință în alte locuri 1235 01:00:01,940 --> 01:00:03,360 cu valoarea x plus y? 1236 01:00:03,360 --> 01:00:05,130 Nu sunt în totalitate sigur ce vrei să spui. 1237 01:00:05,130 --> 01:00:10,582 >> Audiența: Deci trecutul tau semi-anonim Funcția este suma este egală cu acest 1238 01:00:10,582 --> 01:00:14,452 Funcția anonim, așa sumă este acum o variabilă care can-- 1239 01:00:14,452 --> 01:00:15,410 HANNAH Blumberg: dreapta. 1240 01:00:15,410 --> 01:00:18,980 Deci suma este variabila, dar e actually-- 1241 01:00:18,980 --> 01:00:23,770 astfel încât suma este o variabilă a cărei Valoarea este funcția. 1242 01:00:23,770 --> 01:00:27,030 Deci, este o funcție, care este un fel de un lucru ciudat să-și încheie în jurul valorii de cap 1243 01:00:27,030 --> 01:00:29,880 când ne-am jucat cu C și nu poți face asta în C. 1244 01:00:29,880 --> 01:00:32,679 Dar acum putem apela socotească același mod am putea numi sumă aici. 1245 01:00:32,679 --> 01:00:33,220 Audiența: OK. 1246 01:00:33,220 --> 01:00:33,970 HANNAH Blumberg: Da. 1247 01:00:33,970 --> 01:00:34,553 Buna intrebare. 1248 01:00:34,553 --> 01:00:35,438 Da. 1249 01:00:35,438 --> 01:00:39,862 >> Audiența: Deci nu utilizați prototipuri în PHP sau JavaScript? 1250 01:00:39,862 --> 01:00:42,070 HANNAH Blumberg: Nu, Nu trebuie să utilizați prototipuri, 1251 01:00:42,070 --> 01:00:43,880 în special în JavaScript. 1252 01:00:43,880 --> 01:00:49,380 Deci, un lucru rău practică că sunt O să spun că nu ar trebui să facă 1253 01:00:49,380 --> 01:00:52,620 este că nu trebuie să scrie var i = 50. 1254 01:00:52,620 --> 01:00:54,840 Ai putea începe doar faci i = 50. 1255 01:00:54,840 --> 01:00:57,490 Și ar face doar am o variabilă globală. 1256 01:00:57,490 --> 01:01:00,550 >> Este practică foarte rău să nu spun explicit var i, 1257 01:01:00,550 --> 01:01:01,800 dar e ceva ce se poate face. 1258 01:01:01,800 --> 01:01:03,591 Interpretul nu e O să țip la tine. 1259 01:01:03,591 --> 01:01:05,920 JavaScript este destul de cum ar fi, poti sa faci ce vrei. 1260 01:01:05,920 --> 01:01:09,301 1261 01:01:09,301 --> 01:01:09,800 Oh, scuze. 1262 01:01:09,800 --> 01:01:10,300 Există două. 1263 01:01:10,300 --> 01:01:12,150 În pantaloni portocalii. 1264 01:01:12,150 --> 01:01:13,190 Daţi-i drumul. 1265 01:01:13,190 --> 01:01:14,390 >> Audiența: Nu, tu primul. 1266 01:01:14,390 --> 01:01:16,765 >> Audiența: Nu, am fost doar spun Nu am avut mâna în sus. 1267 01:01:16,765 --> 01:01:20,248 1268 01:01:20,248 --> 01:01:20,748 BINE. 1269 01:01:20,748 --> 01:01:26,604 Deci, dacă ar fi să apelați că prima dată, acum suma, 1270 01:01:26,604 --> 01:01:29,864 o numim în același mod, x, y, ca de fiecare dată? 1271 01:01:29,864 --> 01:01:30,780 HANNAH Blumberg: Da. 1272 01:01:30,780 --> 01:01:32,572 Deci, aceste două, în esență, face acelasi lucru. 1273 01:01:32,572 --> 01:01:35,113 Audiența: Și care e avantajul de utilizarea uneia sau alteia? 1274 01:01:35,113 --> 01:01:37,500 HANNAH Blumberg: Nici un avantaj de utilizarea uneia sau a celeilalte. 1275 01:01:37,500 --> 01:01:40,080 Am vrut doar să-ți arăt două diferite piese de sintaxă. 1276 01:01:40,080 --> 01:01:42,770 O mulțime de ori în cazul în care anonim Funcțiile nu au un scop 1277 01:01:42,770 --> 01:01:48,220 este în cazul în care într-un alt argument Funcția trebuie să fie o funcție. 1278 01:01:48,220 --> 01:01:50,600 Și vom vedea că, în doar o secundă cu Ajax. 1279 01:01:50,600 --> 01:01:53,577 >> Deci, dacă nu a făcut nici un sens, depozitați-l în partea din spate a capului. 1280 01:01:53,577 --> 01:01:55,660 Asta în cazul în un anonim Funcția poate fi util 1281 01:01:55,660 --> 01:01:58,284 pentru că nu e adevărat în valoare de dându-i un nume, deoarece suntem doar 1282 01:01:58,284 --> 01:01:59,443 de gând să-l utilizați o dată. 1283 01:01:59,443 --> 01:02:00,370 Da. 1284 01:02:00,370 --> 01:02:03,635 >> Audiența: Dacă x și y schimbare mai târziu pe, se va rezuma schimba la fel de bine? 1285 01:02:03,635 --> 01:02:06,510 HANNAH Blumberg: Dacă x și y schimbare mai târziu, se va rezuma schimba la fel de bine? 1286 01:02:06,510 --> 01:02:08,840 Astfel încât acesta este de fapt am cred ceva care este, 1287 01:02:08,840 --> 01:02:12,260 din nou, doar se simte foarte diferit de la C. Aceasta nu este o valoare. 1288 01:02:12,260 --> 01:02:13,620 Nu e 5. 1289 01:02:13,620 --> 01:02:15,550 E doar funcția în sine. 1290 01:02:15,550 --> 01:02:19,110 Deci, de îndată ce vă dau parametrii, atunci veți calcula de fapt o valoare. 1291 01:02:19,110 --> 01:02:21,193 >> MARIA ZLATKOVA: Și apoi puteți apela funcția 1292 01:02:21,193 --> 01:02:23,272 și-l utilizați pentru a obține o anumită valoare. 1293 01:02:23,272 --> 01:02:24,230 HANNAH Blumberg: dreapta. 1294 01:02:24,230 --> 01:02:25,250 Exact. 1295 01:02:25,250 --> 01:02:25,863 Da. 1296 01:02:25,863 --> 01:02:27,946 >> Audiența: Deci, dacă doar depozitați-l în variabila, 1297 01:02:27,946 --> 01:02:31,430 ca var x este egal suma de două values-- 1298 01:02:31,430 --> 01:02:32,420 >> HANNAH Blumberg: Da. 1299 01:02:32,420 --> 01:02:35,320 Deci, ai putea face doar suma var este egal cu suma dintre două valori. 1300 01:02:35,320 --> 01:02:37,670 Da. 1301 01:02:37,670 --> 01:02:38,680 Orice alte întrebări? 1302 01:02:38,680 --> 01:02:39,642 Da. 1303 01:02:39,642 --> 01:02:42,047 >> Audiența: Dar ar care confunda sumă și suma? 1304 01:02:42,047 --> 01:02:45,062 Cum ar fi dacă apelați suma ta variabilă, ar suna suma funcția? 1305 01:02:45,062 --> 01:02:45,895 HANNAH Blumberg: Mm. 1306 01:02:45,895 --> 01:02:46,395 Mm. 1307 01:02:46,395 --> 01:02:51,253 Dacă ați făcut ceva cum ar fi, suma este egală cu suma de 2, 5? 1308 01:02:51,253 --> 01:02:53,170 >> Audiența: Da. 1309 01:02:53,170 --> 01:02:56,465 >> HANNAH Blumberg: Eu cred că ar suprascrie valoarea sumei. 1310 01:02:56,465 --> 01:02:59,290 Deci un alt interesant lucru despre JavaScript 1311 01:02:59,290 --> 01:03:02,950 este faptul că o singură variabilă poate lua pe o grămadă de tipuri diferite. 1312 01:03:02,950 --> 01:03:03,790 Practica rău. 1313 01:03:03,790 --> 01:03:06,280 Nu ar trebui să facă ceva ca ceea ce tocmai ai spus. 1314 01:03:06,280 --> 01:03:10,240 >> Dar, în C, dacă i este setat egală cu un număr întreg, 1315 01:03:10,240 --> 01:03:13,570 știm că nu e niciodată va deveni un șir. 1316 01:03:13,570 --> 01:03:15,670 Acest lucru nu este cazul în JavaScript. 1317 01:03:15,670 --> 01:03:17,770 Da, bine întrebarea. 1318 01:03:17,770 --> 01:03:20,151 Altceva? 1319 01:03:20,151 --> 01:03:20,650 In regula. 1320 01:03:20,650 --> 01:03:21,850 Făcând bine pe timp. 1321 01:03:21,850 --> 01:03:23,050 Păstrarea merge. 1322 01:03:23,050 --> 01:03:25,200 In regula. 1323 01:03:25,200 --> 01:03:27,780 >> Dacă ne uităm la un tablou în JavaScript, aici e 1324 01:03:27,780 --> 01:03:30,250 un exemplu rapid de o serie de siruri de caractere. 1325 01:03:30,250 --> 01:03:31,967 Și matrice poate creste dinamic. 1326 01:03:31,967 --> 01:03:33,675 Ei nu au o dimensiune fixă ​​în același mod 1327 01:03:33,675 --> 01:03:37,990 pe care le fac în C. putem accesa elemente cu doar între paranteze drepte. 1328 01:03:37,990 --> 01:03:41,720 >> Care arata foarte mult ca PHP și o mulțime cum ar fi C, în cazul în care putem spune, în acest caz, 1329 01:03:41,720 --> 01:03:48,360 dacă am vrut cuvântul JavaScript, aș nu arr parantezele pătrate cu o 0, 1, 2. 1330 01:03:48,360 --> 01:03:51,450 1331 01:03:51,450 --> 01:03:55,390 Și apoi, dacă vă amintiți, în C atunci când ne a vrut pentru a obține lungimea o matrice, 1332 01:03:55,390 --> 01:03:56,820 a fost foarte enervant. 1333 01:03:56,820 --> 01:03:58,460 Dar, în JavaScript, super usor. 1334 01:03:58,460 --> 01:03:59,910 Tot ceea ce facem, .length. 1335 01:03:59,910 --> 01:04:01,120 Dă lungimi. 1336 01:04:01,120 --> 01:04:01,892 Asta e. 1337 01:04:01,892 --> 01:04:03,140 >> Audiența: Asta-i simplu. 1338 01:04:03,140 --> 01:04:05,306 >> HANNAH Blumberg: Da, face viata mult mai ușor. 1339 01:04:05,306 --> 01:04:08,950 1340 01:04:08,950 --> 01:04:11,560 OK, nu object-- acolo. 1341 01:04:11,560 --> 01:04:15,480 Obiectele din JavaScript simt foarte mult ca structs în C 1342 01:04:15,480 --> 01:04:18,280 și tablouri asociative în PHP. 1343 01:04:18,280 --> 01:04:20,270 Deci, ceea ce am văzut-o mulțime de este JSON, care 1344 01:04:20,270 --> 01:04:23,150 standuri pentru JavaScript Object Notation. 1345 01:04:23,150 --> 01:04:25,550 Și este de fapt o modalitate de de structurare a datelor noastre. 1346 01:04:25,550 --> 01:04:27,880 >> Să vedem un exemplu, probabil cel mai usor. 1347 01:04:27,880 --> 01:04:32,540 Deci, aici e un exemplu de obiect care stochează clasa, CS50. 1348 01:04:32,540 --> 01:04:37,790 Și când spun clasă, mă refer desigur, nu like-- Da, cursul, CS50. 1349 01:04:37,790 --> 01:04:40,730 Și veți vedea că totul în obiectul 1350 01:04:40,730 --> 01:04:43,526 va fi cuprins în acolade. 1351 01:04:43,526 --> 01:04:48,260 >> Și vom începe să asocieze numele de câmp sau tastele cu diferite valori. 1352 01:04:48,260 --> 01:04:52,920 Astfel încât să puteți începe pentru a vedea cum acest tip de se simte ca un tablou asociativ în PHP. 1353 01:04:52,920 --> 01:04:57,450 Deci vom asocia domeniul sau numele cheie, cursul, cu șirul, 1354 01:04:57,450 --> 01:04:58,510 CS50. 1355 01:04:58,510 --> 01:04:59,940 >> Vom avea un instructor. 1356 01:04:59,940 --> 01:05:00,940 Vom avea TFS. 1357 01:05:00,940 --> 01:05:05,240 Vom avea numărul de psets și vom fi înregistrat. 1358 01:05:05,240 --> 01:05:10,720 Și un lucru rece de remarcat este tot de aceste lucruri au diferite tipuri de, 1359 01:05:10,720 --> 01:05:12,020 și asta e în regulă. 1360 01:05:12,020 --> 01:05:15,330 >> E bine pentru un obiect, de fapt, este, probabil, de așteptat pentru un obiect 1361 01:05:15,330 --> 01:05:19,620 pentru a avea o combinație de siruri de caractere și numere și Booleans și tablouri 1362 01:05:19,620 --> 01:05:23,420 și orice altceva s-ar putea doresc să aibă în interiorul obiectului. 1363 01:05:23,420 --> 01:05:28,570 Și rețineți că acestea vor fi numele sau cheile, apoi ne-am 1364 01:05:28,570 --> 01:05:30,300 a pus-o egală cu un pic de colon. 1365 01:05:30,300 --> 01:05:32,015 >> Audiența: Ce anume înseamnă JSON? 1366 01:05:32,015 --> 01:05:33,890 HANNAH Blumberg: Ce exact înseamnă JSON? 1367 01:05:33,890 --> 01:05:36,470 JSON doar standuri pentru JavaScript Object Notation. 1368 01:05:36,470 --> 01:05:38,430 Este doar un mod de formatare. 1369 01:05:38,430 --> 01:05:40,040 Da. 1370 01:05:40,040 --> 01:05:41,800 Este un mod de formatare datele noastre. 1371 01:05:41,800 --> 01:05:43,620 >> În C, este structs. 1372 01:05:43,620 --> 01:05:45,800 În PHP, e tablouri asociative. 1373 01:05:45,800 --> 01:05:47,120 În JavaScript, avem obiecte. 1374 01:05:47,120 --> 01:05:48,969 >> Audiența: Deci CS50 este un obiect? 1375 01:05:48,969 --> 01:05:51,010 HANNAH Blumberg: CS50 este obiectul în acest caz. 1376 01:05:51,010 --> 01:05:54,830 1377 01:05:54,830 --> 01:05:57,880 Acum, cum putem de fapt acces aceste domenii sau modifica aceste domenii. 1378 01:05:57,880 --> 01:06:03,920 De exemplu, să presupunem că ne-am decis ai vrut un mai PSET acest semestru. 1379 01:06:03,920 --> 01:06:06,300 În loc de nouă, suntem doar de gând să aibă opt. 1380 01:06:06,300 --> 01:06:08,240 Cum ne-ar schimba asta? 1381 01:06:08,240 --> 01:06:09,436 >> Oh, mod greșit. 1382 01:06:09,436 --> 01:06:11,060 Există două moduri în care putem face asta. 1383 01:06:11,060 --> 01:06:13,490 Numărul unu este cu punctul notație și numărul doi 1384 01:06:13,490 --> 01:06:15,750 este cu notația suport pătrat. 1385 01:06:15,750 --> 01:06:19,720 Deci, de exemplu, dacă am vrut să schimbe sau acces 1386 01:06:19,720 --> 01:06:26,820 domeniul psets în obiectul nostru CS50, ce mi-ar face este CS50.psets, 1387 01:06:26,820 --> 01:06:30,770 astfel încât numele punctului obiect numele câmpului sau tasta. 1388 01:06:30,770 --> 01:06:37,120 >> Foarte similar, e exact echivalent a face CS50, și apoi 1389 01:06:37,120 --> 01:06:42,050 in paranteze patrate, psets. 1390 01:06:42,050 --> 01:06:42,837 Misto? 1391 01:06:42,837 --> 01:06:44,298 Da. 1392 01:06:44,298 --> 01:06:47,707 >> Audiența: Deci este JSON punct de vedere tehnic JavaScript încă, 1393 01:06:47,707 --> 01:06:51,814 chiar dacă în psets noi separa-l [Inaudibil]? 1394 01:06:51,814 --> 01:06:52,730 HANNAH Blumberg: Sigur. 1395 01:06:52,730 --> 01:06:56,290 Deci, întrebarea este, sunt JavaScript și JSON echivalent? 1396 01:06:56,290 --> 01:07:00,750 Deci JSON este notație, practic modul în care ne scrie 1397 01:07:00,750 --> 01:07:02,700 un obiect de JavaScript. 1398 01:07:02,700 --> 01:07:05,190 Deci ei nu sunt exact la fel. 1399 01:07:05,190 --> 01:07:08,950 >> Aș spune JavaScript, acolo sunt obiecte în JavaScript. 1400 01:07:08,950 --> 01:07:12,590 JSON ia acele obiecte și le imprimă și le afișează 1401 01:07:12,590 --> 01:07:15,160 sau le stochează într-un mod frumos. 1402 01:07:15,160 --> 01:07:18,110 Deci JSON nu este o programare limbă modul în care JavaScript este. 1403 01:07:18,110 --> 01:07:20,900 E doar notația pentru obiecte noastre în JavaScript. 1404 01:07:20,900 --> 01:07:21,400 Da. 1405 01:07:21,400 --> 01:07:24,144 >> Audiența: Deci, ce anume [Inaudibil] finaliza? 1406 01:07:24,144 --> 01:07:25,060 HANNAH Blumberg: Sigur. 1407 01:07:25,060 --> 01:07:27,727 Deci, acest fapt nu face nimic. 1408 01:07:27,727 --> 01:07:28,935 Aceasta este doar o modalitate de a accesa. 1409 01:07:28,935 --> 01:07:31,393 Deci, să spunem că am vrut să schimbe numărul de seturi de probleme 1410 01:07:31,393 --> 01:07:32,450 nouă-opt. 1411 01:07:32,450 --> 01:07:34,383 Ceea ce facem este facem ceva ca CS50.psets = 8 ;. 1412 01:07:34,383 --> 01:07:38,500 1413 01:07:38,500 --> 01:07:39,400 >> Da, marea întrebare. 1414 01:07:39,400 --> 01:07:40,733 Acest lucru este doar pentru a vă arăta sintaxă. 1415 01:07:40,733 --> 01:07:43,620 Nu face de fapt nimic util. 1416 01:07:43,620 --> 01:07:46,085 Alte intrebari? 1417 01:07:46,085 --> 01:07:48,210 Mutarea dreapta de-a lungul. 1418 01:07:48,210 --> 01:07:51,960 >> Deci, să ne uităm la un exemplu de cum rapidă JavaScript functioneaza pentru ca v-am spus că 1419 01:07:51,960 --> 01:07:55,170 face toate aceste lucruri se răcească și ne permite să modifice pagini web. 1420 01:07:55,170 --> 01:07:56,970 Să fapt vedea în acțiune. 1421 01:07:56,970 --> 01:07:59,850 Astfel încât să ia, de exemplu, acest fisier HTML. 1422 01:07:59,850 --> 01:08:04,350 >> Si lucru pe care vreau să vă concentrați asupra este această etichetă special, care este un buton, 1423 01:08:04,350 --> 01:08:06,182 cu id search_button. 1424 01:08:06,182 --> 01:08:08,670 E doar pe pagina. 1425 01:08:08,670 --> 01:08:10,690 Deci, acum să vedem ce putem face de fapt. 1426 01:08:10,690 --> 01:08:12,560 >> Ei bine, să presupunem că atunci când faceți clic pe acel buton, 1427 01:08:12,560 --> 01:08:16,010 vrem sa facem un alert-- ați făcut clic pe butonul. 1428 01:08:16,010 --> 01:08:17,840 Să vedem cum putem face asta. 1429 01:08:17,840 --> 01:08:23,869 Deci window.onload-- acest lucru nu este ceva care le-ați văzut în clasă, prin urmare, 1430 01:08:23,869 --> 01:08:26,180 nu va trebui să-l cunosc pentru testul. 1431 01:08:26,180 --> 01:08:33,660 Dar acest lucru spune în esență, OK, apel această funcție când sarcinile de ferestre. 1432 01:08:33,660 --> 01:08:35,080 >> Deci, asta e doar un fel de cod de configurare. 1433 01:08:35,080 --> 01:08:36,390 Nu vă faceți griji atât de mult despre asta. 1434 01:08:36,390 --> 01:08:39,170 Ceea ce vreau să se concentreze pe e aici. 1435 01:08:39,170 --> 01:08:44,020 Noi spunem var searchbutton egal document.getElementById search_button. 1436 01:08:44,020 --> 01:08:46,450 >> Deci, după cum s-ar putea ghici, ce acest lucru nu este spune, 1437 01:08:46,450 --> 01:08:50,920 OK, du-te găsi elementul cu search_button ID. 1438 01:08:50,920 --> 01:08:52,790 Și acum avem ca element de reală și eu sunt 1439 01:08:52,790 --> 01:08:56,279 gând să-l stocați într-un searchbutton variabilă. 1440 01:08:56,279 --> 01:09:00,651 Și acum putem folosi de fapt, acest element și schimba, sau accesa valorile sale, 1441 01:09:00,651 --> 01:09:01,359 lucruri de genul acela. 1442 01:09:01,359 --> 01:09:04,649 Putem începe de fapt la angajeze cu pagina web. 1443 01:09:04,649 --> 01:09:10,330 >> Deci, aici am spus, OK, acum că am acel buton, atunci când se face clic pe, 1444 01:09:10,330 --> 01:09:12,859 numesc această funcție anonim. 1445 01:09:12,859 --> 01:09:16,811 Deci acest lucru este în cazul în care anonim funcții devin utile. 1446 01:09:16,811 --> 01:09:18,060 Și ce face funcția? 1447 01:09:18,060 --> 01:09:20,529 Ei bine, doar numește acest Funcția de alertă și se spune, 1448 01:09:20,529 --> 01:09:22,910 ați făcut clic pe butonul de căutare. 1449 01:09:22,910 --> 01:09:29,670 >> Deci, ce se va întâmpla dacă mă duc la oriunde acest HTML trăiește și am faceți clic pe butonul, 1450 01:09:29,670 --> 01:09:33,729 Voi lua o alertă fantezie pic care spune ați făcut clic pe butonul. 1451 01:09:33,729 --> 01:09:40,710 Deci, lucrurile să se concentreze asupra here-- document.getElementById 1452 01:09:40,710 --> 01:09:44,960 primeste un anumit HTML Element cu ID-ul dat. 1453 01:09:44,960 --> 01:09:48,529 Și acum putem stabili ceea ce ar trebui întâmpla când 1454 01:09:48,529 --> 01:09:50,702 acel element special se face clic pe. 1455 01:09:50,702 --> 01:09:52,670 >> Audiența: Trebuie să punem toate astea in? 1456 01:09:52,670 --> 01:09:53,162 >> HANNAH Blumberg: Ne pare rău? 1457 01:09:53,162 --> 01:09:55,130 >> Audiența: Nu trebuie să ne cod punct de vedere fizic toate astea? 1458 01:09:55,130 --> 01:09:56,340 >> HANNAH Blumberg: Nu trebuie să ne cod punct de vedere fizic toate astea? 1459 01:09:56,340 --> 01:09:56,839 Da. 1460 01:09:56,839 --> 01:09:58,120 Nu este acest fel de enervant? 1461 01:09:58,120 --> 01:10:00,032 Aceasta este o mulțime de cod. 1462 01:10:00,032 --> 01:10:01,574 >> Audiența: Ai putea importa ceva. 1463 01:10:01,574 --> 01:10:02,532 HANNAH Blumberg: dreapta. 1464 01:10:02,532 --> 01:10:03,610 Am putea folosi ceva. 1465 01:10:03,610 --> 01:10:08,140 Și în particular-- oh, e spunându-mi că trebuie să predau secțiune. 1466 01:10:08,140 --> 01:10:11,061 În special, să utiliza biblioteca jQuery, 1467 01:10:11,061 --> 01:10:13,060 pentru că a fost foarte lungă și foarte enervant 1468 01:10:13,060 --> 01:10:16,860 și vreau să fie în măsură să-l simplifice și să-l mai scurt și mai ușor de a scrie. 1469 01:10:16,860 --> 01:10:19,810 >> Deci, jQuery este o bibliotecă JavaScript. 1470 01:10:19,810 --> 01:10:24,930 Deci JavaScript este programare limba; jQuery este o bibliotecă. 1471 01:10:24,930 --> 01:10:27,190 Și-l face o gramada de lucruri mai ușor. 1472 01:10:27,190 --> 01:10:33,230 Se face schimbarea și merge peste un document HTML mult mai ușor. 1473 01:10:33,230 --> 01:10:35,030 >> Se face evenimente de manipulare mai ușoară. 1474 01:10:35,030 --> 01:10:37,580 Se face mai ușor de animație și-l face mai ușor Ajax. 1475 01:10:37,580 --> 01:10:40,140 Deci, haideți să sară în două de aceste lucruri acum. 1476 01:10:40,140 --> 01:10:40,900 Scuza-ma. 1477 01:10:40,900 --> 01:10:42,620 Inainte de a face, unele sintaxă de bază. 1478 01:10:42,620 --> 01:10:46,870 >> Aceasta este ceea ce cel mai cheamă la biblioteca jQuery arata. 1479 01:10:46,870 --> 01:10:50,520 Noi folosim acest dolar sign-- nici un semn conexiune la PHP, 1480 01:10:50,520 --> 01:10:56,030 doar inconvenient-- numele unui selector, punct, și apoi o acțiune. 1481 01:10:56,030 --> 01:10:58,860 Deci, haideți să vedem unele exemple concrete de care. 1482 01:10:58,860 --> 01:11:02,980 >> Deci aceasta este de fapt același Codul de diapozitiv eveniment. 1483 01:11:02,980 --> 01:11:08,740 Deci, acest lucru mult timp, devine urât acest mult mai frumos, lucru mai mici. 1484 01:11:08,740 --> 01:11:10,370 Așa că haideți să încercăm pentru a sparge acest jos. 1485 01:11:10,370 --> 01:11:17,090 Aceasta spune, OK, jQuery-- acest dolar sign-- jQuery, găsiți-mi fereastra. 1486 01:11:17,090 --> 01:11:18,480 Deci asta e selectorul. 1487 01:11:18,480 --> 01:11:21,800 >> Când se încarcă, numesc această funcție. 1488 01:11:21,800 --> 01:11:23,880 Așa că e totul în interiorul. 1489 01:11:23,880 --> 01:11:24,380 BINE. 1490 01:11:24,380 --> 01:11:25,740 Până acum, bine? 1491 01:11:25,740 --> 01:11:26,750 In regula. 1492 01:11:26,750 --> 01:11:32,970 >> Acum, jQuery, găsiți-mi lucru cu search_button ID. 1493 01:11:32,970 --> 01:11:36,090 Și ceea ce este apasat, numesc această funcție. 1494 01:11:36,090 --> 01:11:37,900 Și apoi această funcție lui exact aceeași. 1495 01:11:37,900 --> 01:11:41,052 Nu doar un pic de alertă, ați făcut clic pe butonul de căutare. 1496 01:11:41,052 --> 01:11:42,650 >> Deci, este foarte frumos. 1497 01:11:42,650 --> 01:11:46,260 Este într-adevăr condensează și simplifică codul nostru. 1498 01:11:46,260 --> 01:11:49,030 Cum a știu că e search_button ID 1499 01:11:49,030 --> 01:11:50,960 și nu ca clasa search_button? 1500 01:11:50,960 --> 01:11:52,024 >> Audiența: hashtag? 1501 01:11:52,024 --> 01:11:52,940 HANNAH Blumberg: Da. 1502 01:11:52,940 --> 01:11:56,450 Acest simbol hash, e la fel ca CSS. 1503 01:11:56,450 --> 01:12:00,080 Deci ține minte, cu CSS, atunci când am a vrut pentru a selecta ceva de ID-ul, 1504 01:12:00,080 --> 01:12:01,590 am folosit semnul lire. 1505 01:12:01,590 --> 01:12:05,400 Și când ne-am dorit pentru a selecta ceva de clasa, vom folosi punctul. 1506 01:12:05,400 --> 01:12:06,870 Grozav. 1507 01:12:06,870 --> 01:12:08,230 Are sens? 1508 01:12:08,230 --> 01:12:11,500 Deci, jQuery ar trebui să doar face viața mai ușoară. 1509 01:12:11,500 --> 01:12:12,000 Da. 1510 01:12:12,000 --> 01:12:15,660 >> Audiența: Deci, eu sunt un pic confuz ca la modul în care funcționează funcția anonim. 1511 01:12:15,660 --> 01:12:19,027 Ai nume acest Anonymouse funcție, funcționează? 1512 01:12:19,027 --> 01:12:20,594 Cum se numește? 1513 01:12:20,594 --> 01:12:21,510 HANNAH Blumberg: Sigur. 1514 01:12:21,510 --> 01:12:25,812 Deci, funcție este doar un cuvânt cheie care spune, eu sunt pe cale de a defini o funcție. 1515 01:12:25,812 --> 01:12:26,520 Audiența: Oh, OK. 1516 01:12:26,520 --> 01:12:27,353 HANNAH Blumberg: OK? 1517 01:12:27,353 --> 01:12:32,120 Și apoi l-am trece drept o Argumentul sa-- să luăm 1518 01:12:32,120 --> 01:12:37,040 acest Unu interior la funcția clic. 1519 01:12:37,040 --> 01:12:39,420 Deci da, astfel încât funcția, Această funcție anonim, 1520 01:12:39,420 --> 01:12:40,910 devine un argument real. 1521 01:12:40,910 --> 01:12:43,632 Deci, amintiți-vă în JavaScript, putem poate trata funcționează ca valori. 1522 01:12:43,632 --> 01:12:44,340 Audiența: Oh, OK. 1523 01:12:44,340 --> 01:12:45,256 HANNAH Blumberg: Da. 1524 01:12:45,256 --> 01:12:46,035 Îmi place că "oh". 1525 01:12:46,035 --> 01:12:47,490 Amabila. 1526 01:12:47,490 --> 01:12:49,915 Alte întrebări? 1527 01:12:49,915 --> 01:12:50,505 Timp? 1528 01:12:50,505 --> 01:12:51,380 MARIA ZLATKOVA: Bine. 1529 01:12:51,380 --> 01:12:52,760 Bine. 1530 01:12:52,760 --> 01:12:54,210 >> HANNAH Blumberg: Awesome. 1531 01:12:54,210 --> 01:12:55,720 Unele jQuery util rapid. 1532 01:12:55,720 --> 01:12:57,559 Nu am de gând să merg prin toate acestea. 1533 01:12:57,559 --> 01:12:59,350 Aceste slide-uri vor fi up on-line un pic 1534 01:12:59,350 --> 01:13:02,040 mai târziu, astfel încât să puteți verifica l un pic mai târziu. 1535 01:13:02,040 --> 01:13:07,120 Dar, practic, generalul model deține în cazul în care spunem, 1536 01:13:07,120 --> 01:13:11,510 OK, hei, jQuery, aici e meu selector și apoi aici este o acțiune. 1537 01:13:11,510 --> 01:13:15,940 Și puteți face lucruri cum ar fi Accesați Valoarea unui formular, accesați unele HTML, 1538 01:13:15,940 --> 01:13:19,195 Controlul ceea ce se întâmplă atunci când utilizatorul trimite un formular, lucruri de genul asta. 1539 01:13:19,195 --> 01:13:20,106 Da. 1540 01:13:20,106 --> 01:13:22,090 >> Audiența: Deci, în examen, vom avea nevoie de 1541 01:13:22,090 --> 01:13:25,066 să cunoască destul de mult de la documentația jQuery. 1542 01:13:25,066 --> 01:13:31,018 Deci având în vedere că ne-am copia / paste la jQuery documentație pentru foaie nostru ieftin, 1543 01:13:31,018 --> 01:13:32,506 Unde e linia trasată? 1544 01:13:32,506 --> 01:13:33,957 Ca și cât de multe avem nevoie să știm? 1545 01:13:33,957 --> 01:13:35,290 HANNAH Blumberg: marea întrebare. 1546 01:13:35,290 --> 01:13:37,765 Întrebarea este în esență, având în vedere că 1547 01:13:37,765 --> 01:13:41,330 nu pot accesa documentația jQuery în timpul încercării, cât de mult ar trebui 1548 01:13:41,330 --> 01:13:41,830 știu? 1549 01:13:41,830 --> 01:13:45,540 Nu ne-am aștepta să vină cu unele aleatoare 1550 01:13:45,540 --> 01:13:47,240 că ne v-ați aștepta să Google. 1551 01:13:47,240 --> 01:13:52,930 >> Lucruri care sunt joc corect sunt eu ar spune doar un fel de sintaxa general, 1552 01:13:52,930 --> 01:13:58,310 posibilitatea de a selecta de ID-ul și de class-- așa fel ca CSS. 1553 01:13:58,310 --> 01:14:01,876 Și apoi funcțiilor efective themself, vă vom spune probabil. 1554 01:14:01,876 --> 01:14:02,376 Da. 1555 01:14:02,376 --> 01:14:05,591 >> Audiența: Deci, atunci când selectați de clasă ar însemna punct. 1556 01:14:05,591 --> 01:14:06,840 HANNAH Blumberg: Da, exact. 1557 01:14:06,840 --> 01:14:07,340 Bine. 1558 01:14:07,340 --> 01:14:10,461 Când selectați de clasă, va să fie dot locul semnului Pound. 1559 01:14:10,461 --> 01:14:10,960 Da. 1560 01:14:10,960 --> 01:14:12,710 >> AUDIENTA: Ați du-te peste diferența 1561 01:14:12,710 --> 01:14:14,310 între selectarea de ID-ul și de clasă? 1562 01:14:14,310 --> 01:14:14,560 >> HANNAH Blumberg: Sigur. 1563 01:14:14,560 --> 01:14:17,510 Diferența dintre selectare ID-ul și selectarea de clasă. 1564 01:14:17,510 --> 01:14:20,685 Deci, după cum a spus Maria a pic mai devreme, nu 1565 01:14:20,685 --> 01:14:26,280 poate fi doar un element HTML cu un anumit ID, în timp ce clasa, 1566 01:14:26,280 --> 01:14:29,740 ne permite să grup un buchet elemente de diferite împreună, 1567 01:14:29,740 --> 01:14:34,300 astfel lucrurile care sunt legate, dar nu exact la fel. 1568 01:14:34,300 --> 01:14:35,685 Asta răspunde la întrebarea? 1569 01:14:35,685 --> 01:14:36,200 Incredibil. 1570 01:14:36,200 --> 01:14:37,194 Da. 1571 01:14:37,194 --> 01:14:40,680 >> Audiența: Ce se întâmplă dacă aveți mai multe lucruri care sunt în aceeași clasă? 1572 01:14:40,680 --> 01:14:42,150 >> HANNAH Blumberg: Ce se întâmplă dacă aveți mai multe lucruri pe care 1573 01:14:42,150 --> 01:14:43,280 sunt din aceeași clasă? 1574 01:14:43,280 --> 01:14:45,829 Deci, de exemplu, dacă suntem folosind doar pur JavaScript, 1575 01:14:45,829 --> 01:14:48,120 ne-ar face ceva de genul document.getElementsByClass. 1576 01:14:48,120 --> 01:14:52,280 1577 01:14:52,280 --> 01:14:56,320 Și atunci ce face că, de fapt este revine o serie de elemente. 1578 01:14:56,320 --> 01:14:59,517 >> Și trebuie să fie peste repeta le sau găsi pe care o doriți. 1579 01:14:59,517 --> 01:15:01,350 Nu se va da ai un singur element. 1580 01:15:01,350 --> 01:15:03,450 O să vă dau o serie de elemente. 1581 01:15:03,450 --> 01:15:05,280 Marea întrebare. 1582 01:15:05,280 --> 01:15:07,700 Altceva? 1583 01:15:07,700 --> 01:15:09,520 Incredibil. 1584 01:15:09,520 --> 01:15:12,860 >> Deci, cred că dacă ești familiarizat cu orice jQuery ați văzut în PSET, 1585 01:15:12,860 --> 01:15:15,600 ar trebui să fie bun pentru a merge. 1586 01:15:15,600 --> 01:15:16,325 Întrebare? 1587 01:15:16,325 --> 01:15:17,610 Oh nu. 1588 01:15:17,610 --> 01:15:18,859 Am într-adevăr să-i învețe. 1589 01:15:18,859 --> 01:15:19,358 Relaxați-vă. 1590 01:15:19,358 --> 01:15:20,035 Va fi bine. 1591 01:15:20,035 --> 01:15:20,660 Voi ajunge acolo. 1592 01:15:20,660 --> 01:15:24,670 1593 01:15:24,670 --> 01:15:26,870 >> Să vorbim despre Ajax. 1594 01:15:26,870 --> 01:15:31,350 Deci, Ajax va fi un-- bine, Să începem cu ceea ce reprezintă. 1595 01:15:31,350 --> 01:15:32,350 Este un acronim. 1596 01:15:32,350 --> 01:15:35,855 Ea vine de la Asynchronous JavaScript si XML. 1597 01:15:35,855 --> 01:15:39,800 Și XML este, în principiu va fi [Inaudibil] cu un tip de date noastre. 1598 01:15:39,800 --> 01:15:42,100 Dar nu ne-am folosit de fapt XML. 1599 01:15:42,100 --> 01:15:43,430 În schimb, doar vom folosi JSON. 1600 01:15:43,430 --> 01:15:48,350 >> Deci, practic, e un data-- asincron, JavaScript, și de date, 1601 01:15:48,350 --> 01:15:50,040 În acest caz, JSON. 1602 01:15:50,040 --> 01:15:52,820 Și scopul nostru, așa cum am menționat un pic mai devreme, 1603 01:15:52,820 --> 01:15:56,880 este de a fi în măsură să facă o cerere, au cererea face 1604 01:15:56,880 --> 01:16:00,700 lucru în Jurnalul Oficial al fundal, dar continua 1605 01:16:00,700 --> 01:16:02,550 face tot ce ne-am intenționează să facă. 1606 01:16:02,550 --> 01:16:06,650 Și apoi când aceste informații sunt gata, atunci vom încorpora. 1607 01:16:06,650 --> 01:16:08,470 >> Deci, haideți să vedem ce aceasta de fapt arată. 1608 01:16:08,470 --> 01:16:11,210 Și acest lucru, ar trebui să fie un pic familiar 1609 01:16:11,210 --> 01:16:13,680 din pset8, cea pe care tocmai ați transformat în. 1610 01:16:13,680 --> 01:16:16,200 Deci, aici este o jQuery valid funcție care am putea 1611 01:16:16,200 --> 01:16:18,250 vreau să știu about-- acest semn dolar. 1612 01:16:18,250 --> 01:16:21,500 Deci, se spune funcție jQuery, .getJson. 1613 01:16:21,500 --> 01:16:25,020 >> Și ce această funcție nu este ia un URL și unele parameters-- 1614 01:16:25,020 --> 01:16:28,000 deci cred ca în cazul de pset8, a fost ca, 1615 01:16:28,000 --> 01:16:33,520 URL-ul a fost articles.php și Parametrii a fost du-te = un cod poștal. 1616 01:16:33,520 --> 01:16:41,580 Și se spune, bine, să facă o cerere de acest URL cu parametrii date. 1617 01:16:41,580 --> 01:16:43,480 Și asta se întâmplă. 1618 01:16:43,480 --> 01:16:47,730 >> Când se termină, e fie O să finaliza cu succes 1619 01:16:47,730 --> 01:16:49,370 sau va să eșueze. 1620 01:16:49,370 --> 01:16:53,480 Deci, acesta este echivalentul a apelului Rob și-l întrebi de a face ceva. 1621 01:16:53,480 --> 01:17:00,260 Și când el numește înapoi, e ori O să spun că am terminat sau nu am reușit. 1622 01:17:00,260 --> 01:17:04,030 >> Deci, în cazul în care sunteți făcut, ai spus, OK, am terminat. 1623 01:17:04,030 --> 01:17:05,980 Și apoi te sun această funcție. 1624 01:17:05,980 --> 01:17:08,915 În acest caz, se va fi un funcție care ia unele informații. 1625 01:17:08,915 --> 01:17:12,890 Cel ne obicei pasă date, datele pe care le au fost de fapt returnate 1626 01:17:12,890 --> 01:17:15,900 ca urmare a sunat .getJSON. 1627 01:17:15,900 --> 01:17:17,470 >> Și tu poți face ceva cu el. 1628 01:17:17,470 --> 01:17:23,670 Deci, în cazul pset8, am afișat ca o listă. 1629 01:17:23,670 --> 01:17:29,050 Fail va fi o funcție care se numește, dacă cererea eșuează 1630 01:17:29,050 --> 01:17:30,450 indiferent de motiv. 1631 01:17:30,450 --> 01:17:35,104 Și în cazul pset8, am doar console.log. 1632 01:17:35,104 --> 01:17:36,020 Orice întrebări cu privire la asta? 1633 01:17:36,020 --> 01:17:36,300 Da. 1634 01:17:36,300 --> 01:17:39,633 >> Audiența: Putem folosi doar funcția de theta în loc de funcție, textStatus, jqHXR. 1635 01:17:39,633 --> 01:17:43,464 1636 01:17:43,464 --> 01:17:44,380 HANNAH Blumberg: Sigur. 1637 01:17:44,380 --> 01:17:46,713 Deci da, cred că în PSET, tocmai am văzut funcția de date. 1638 01:17:46,713 --> 01:17:48,700 Deci e doar the-- da, OK. 1639 01:17:48,700 --> 01:17:50,510 Asta e ceea ce am văzut în PSET. 1640 01:17:50,510 --> 01:17:51,480 Asta e cu totul în regulă. 1641 01:17:51,480 --> 01:17:54,210 >> Acestea sunt doar dacă ai vrut pentru a scoate mai multe informații, 1642 01:17:54,210 --> 01:17:57,190 acestea sunt lucrurile pe care ai putea lua de la .getJSON. 1643 01:17:57,190 --> 01:17:59,040 Buna intrebare. 1644 01:17:59,040 --> 01:17:59,706 Altceva? 1645 01:17:59,706 --> 01:18:00,206 Da. 1646 01:18:00,206 --> 01:18:01,787 >> Audiența: Deci .getJSON este Ajax? 1647 01:18:01,787 --> 01:18:02,620 HANNAH Blumberg: OK. 1648 01:18:02,620 --> 01:18:05,700 Deci aceasta este un fel de parte complicat. 1649 01:18:05,700 --> 01:18:12,390 Este o funcție jQuery care permite să faci apeluri asincrone. 1650 01:18:12,390 --> 01:18:16,080 Și acele apeluri asincrone, asta e ceea ce am fost referindu-se la ca Ajax. 1651 01:18:16,080 --> 01:18:16,850 Da. 1652 01:18:16,850 --> 01:18:20,185 Asta mi-a luat un timp foarte lung pentru a trage în afară când am fost un student. 1653 01:18:20,185 --> 01:18:21,560 Audiența: Poți spune că din nou? 1654 01:18:21,560 --> 01:18:22,476 HANNAH Blumberg: Da. 1655 01:18:22,476 --> 01:18:23,630 Pot să spun că din nou? 1656 01:18:23,630 --> 01:18:29,010 Această funcție .getJSON, aceasta este o funcție jQuery. 1657 01:18:29,010 --> 01:18:31,970 Și se va face un apel asincron. 1658 01:18:31,970 --> 01:18:35,700 Și aceste apeluri asincrone, am fost referindu-se la cei ca Ajax. 1659 01:18:35,700 --> 01:18:39,610 1660 01:18:39,610 --> 01:18:41,872 >> Orice alte întrebări? 1661 01:18:41,872 --> 01:18:43,330 Avem doar câteva minute. 1662 01:18:43,330 --> 01:18:45,080 Și Maria va încheia cu securitatea 1663 01:18:45,080 --> 01:18:47,464 și apoi vom să fie doar despre facut. 1664 01:18:47,464 --> 01:18:48,630 MARIA ZLATKOVA: Awesome, OK. 1665 01:18:48,630 --> 01:18:54,030 Deci, acest este-- să ia doar câteva secunde să se uite peste asta. 1666 01:18:54,030 --> 01:18:56,750 Și acest lucru nu este ceva foarte mare. 1667 01:18:56,750 --> 01:18:59,430 Și poate cineva să-mi spui de ce? 1668 01:18:59,430 --> 01:19:05,650 Ce se întâmplă în foo și poate ar putea potențial duce la ceva rău, 1669 01:19:05,650 --> 01:19:06,770 și ce se numește? 1670 01:19:06,770 --> 01:19:07,270 Da. 1671 01:19:07,270 --> 01:19:10,391 Audiența: Dacă argumentul că este a trecut în mai mult de 12 de caractere, 1672 01:19:10,391 --> 01:19:11,454 s-ar putea îneca. 1673 01:19:11,454 --> 01:19:12,370 MARIA ZLATKOVA: dreapta. 1674 01:19:12,370 --> 01:19:14,180 Perfect. 1675 01:19:14,180 --> 01:19:15,384 Ceea ce este numit? 1676 01:19:15,384 --> 01:19:16,300 Tu doar menționat. 1677 01:19:16,300 --> 01:19:16,840 >> Audiența: Buffer overflow. 1678 01:19:16,840 --> 01:19:18,381 >> MARIA ZLATKOVA: Da, buffer overflow. 1679 01:19:18,381 --> 01:19:21,230 Deci, aceasta este ceva ce noi se referă la cum buffer overflow. 1680 01:19:21,230 --> 01:19:25,500 Și vedem că în interiorul foo, ne-am definit tampon nostru, C, 1681 01:19:25,500 --> 01:19:27,240 cu o dimensiune de 12. 1682 01:19:27,240 --> 01:19:32,680 Cu toate acestea, în principal, noi nu verifica în orice mod, la toate 1683 01:19:32,680 --> 01:19:36,480 dacă argv1-- astfel încât a fost al doilea argument. 1684 01:19:36,480 --> 01:19:39,630 Noi nu verifica dacă dimensiunea este necesar. 1685 01:19:39,630 --> 01:19:43,380 >> Deci, dacă am fi avut o utilizator rău intenționat în special 1686 01:19:43,380 --> 01:19:47,170 care a pus în unele argument care a fost mai mult decât 12, și apoi eventual 1687 01:19:47,170 --> 01:19:50,850 dincolo de limitele pe care argument, a avut unele cod executabil 1688 01:19:50,850 --> 01:19:55,570 că el a fost încercarea de a face ceva rău Cu acesta; atunci acest lucru, ce se va întâmpla, 1689 01:19:55,570 --> 01:19:59,310 ar trece peste revenirea adresa funcției foo, 1690 01:19:59,310 --> 01:20:04,370 cauzând funcția la momentul revenind la executa codul. 1691 01:20:04,370 --> 01:20:07,540 Și atunci lucrurile rele ar putea întâmpla. 1692 01:20:07,540 --> 01:20:09,850 Are acest sens pentru toată lumea? 1693 01:20:09,850 --> 01:20:12,424 >> Și cum putem proteja împotriva acestui? 1694 01:20:12,424 --> 01:20:13,090 Orice sugestii? 1695 01:20:13,090 --> 01:20:16,480 1696 01:20:16,480 --> 01:20:21,890 Practic, în interiorul potențial foo, cum 1697 01:20:21,890 --> 01:20:28,294 putem verifica pentru a vă asigura că acest lucru nu se poate întâmpla? 1698 01:20:28,294 --> 01:20:33,879 >> Audiența: Dacă dimensiunea 12 este depășită, v-ar aloca memorie suplimentară? 1699 01:20:33,879 --> 01:20:37,170 MARIA ZLATKOVA: sugestie este, aloca Memoria suplimentară a dimensiunii depășit. 1700 01:20:37,170 --> 01:20:39,800 De fapt, putem face ceva mult mai simple decât la fel de bine. 1701 01:20:39,800 --> 01:20:44,870 Putem obține doar lungimea string de argumentul potrivit căruia este înscris, 1702 01:20:44,870 --> 01:20:48,590 verifica dacă aceasta este mai mică sau egală cu 12-- 1703 01:20:48,590 --> 01:20:50,790 care este ceea ce am dori să fie pentru că nu vrem 1704 01:20:50,790 --> 01:20:52,373 aceasta să depășească limitele de tampon noastre. 1705 01:20:52,373 --> 01:20:55,690 Și apoi, dacă nu, ne-am poate lucra cu argumentul. 1706 01:20:55,690 --> 01:21:00,296 Și apoi, dacă o face, de fapt, ne-o dorim să Yello potențial utilizator. 1707 01:21:00,296 --> 01:21:01,670 Dar acest lucru este modul în care ne-ar face asta. 1708 01:21:01,670 --> 01:21:02,443 Da. 1709 01:21:02,443 --> 01:21:04,360 >> Audiența: Ați putea explica memcpy rapid reală? 1710 01:21:04,360 --> 01:21:05,443 MARIA ZLATKOVA: Oh, îmi pare rău. 1711 01:21:05,443 --> 01:21:06,040 Da. 1712 01:21:06,040 --> 01:21:11,290 Memcpy ia orice este-- rău, OK. 1713 01:21:11,290 --> 01:21:15,850 Memcpy ia tot ce este în bar, indiferent de este trecut 1714 01:21:15,850 --> 01:21:18,050 pe foo ca argument în linia de comandă. 1715 01:21:18,050 --> 01:21:19,440 Deci o să ia argv1. 1716 01:21:19,440 --> 01:21:21,420 Argv1 este numit bar aici. 1717 01:21:21,420 --> 01:21:24,453 Asa ca va lua bar și este de gând să-l copiați în c. 1718 01:21:24,453 --> 01:21:25,402 >> Audiența: OK. 1719 01:21:25,402 --> 01:21:28,360 MARIA ZLATKOVA: Și o să copy-- al treilea argument se referă doar 1720 01:21:28,360 --> 01:21:30,601 la cât de mult se va copia în c. 1721 01:21:30,601 --> 01:21:31,142 Audiența: Ah. 1722 01:21:31,142 --> 01:21:33,030 Deci, copierea asta e tot de el atunci. 1723 01:21:33,030 --> 01:21:34,310 >> MARIA ZLATKOVA: Da, este copierea totul. 1724 01:21:34,310 --> 01:21:34,810 Da. 1725 01:21:34,810 --> 01:21:38,400 1726 01:21:38,400 --> 01:21:41,910 În primul rând, ne-am asigurați-vă că bara nu este egală cu null pentru ca este un pointer. 1727 01:21:41,910 --> 01:21:44,680 Atunci vom obține lungimea șir de bar. 1728 01:21:44,680 --> 01:21:47,530 Suntem asigurați-vă că este mai mică sau egală cu 12. 1729 01:21:47,530 --> 01:21:50,070 Și apoi pentru că am sa asigurat, putem de fapt 1730 01:21:50,070 --> 01:21:53,122 memcpy și asigurați-vă că e OK. 1731 01:21:53,122 --> 01:21:53,705 Alte intrebari? 1732 01:21:53,705 --> 01:21:56,280 1733 01:21:56,280 --> 01:21:58,690 Grozav. 1734 01:21:58,690 --> 01:22:00,400 Am două întrebări adevărate sau false. 1735 01:22:00,400 --> 01:22:05,470 Poate cineva sa-mi spui imediat dacă acestea sunt adevărate sau false? 1736 01:22:05,470 --> 01:22:07,460 Da, e fals. 1737 01:22:07,460 --> 01:22:07,960 Exact. 1738 01:22:07,960 --> 01:22:09,330 Ambele dintre ele sunt false. 1739 01:22:09,330 --> 01:22:12,682 Deci, folosind un singur parolă este o idee foarte bună niciodată 1740 01:22:12,682 --> 01:22:14,890 pentru că dacă cineva știe parola, acestea pot doar 1741 01:22:14,890 --> 01:22:16,260 acces la toate celelalte conturi. 1742 01:22:16,260 --> 01:22:19,260 Și apoi icoane fac nimic pentru a asigura securitatea. 1743 01:22:19,260 --> 01:22:24,900 Noi ar trebui să arate, de obicei, pentru HTTPS în loc de HTTP și URL-ul. 1744 01:22:24,900 --> 01:22:28,560 >> Și alte tipuri de atacuri care le-am menționat, 1745 01:22:28,560 --> 01:22:31,390 că David a menționat în prelegere, atacuri SQL injection. 1746 01:22:31,390 --> 01:22:37,310 Am văzut deja că, dacă vom don't-- Funcția de interogare CS50 se asigură că SQL 1747 01:22:37,310 --> 01:22:39,530 Atacurile de injectare nu poate avea loc. 1748 01:22:39,530 --> 01:22:42,640 Dar dacă nu au fost utilizați CS50, Citat, unquote "în interogare," 1749 01:22:42,640 --> 01:22:46,830 ne-ar trebui să vă asigurați că datele introduse de utilizator nu este, de fapt unele SQL 1750 01:22:46,830 --> 01:22:49,670 interogare care va provoca tot mesele noastre să fie scăzut 1751 01:22:49,670 --> 01:22:54,070 sau ceva rău să intampla cu baza noastră de date. 1752 01:22:54,070 --> 01:22:56,790 >> Sesiune deturnarea este un alt tip de atac 1753 01:22:56,790 --> 01:23:05,940 că se întâmplă atunci când unele rele persoană folosește sesiune unele victimei 1754 01:23:05,940 --> 01:23:08,740 ID-ul pentru a accesa informațiile de conectare. 1755 01:23:08,740 --> 01:23:13,620 Deci, un exemplu foarte banal de care este cum ar fi dacă avem un computer public, 1756 01:23:13,620 --> 01:23:21,120 atunci persoana rea ​​jurnalele și apoi au cookie-urile care sunt salvate. 1757 01:23:21,120 --> 01:23:23,380 Și cookie-uri nu se schimba pentru sesiune. 1758 01:23:23,380 --> 01:23:27,620 >> Apoi ne-am victima merge în și apoi conectați la site-ul web. 1759 01:23:27,620 --> 01:23:30,290 Cookie-urile nu se schimba pentru o anumită sesiune. 1760 01:23:30,290 --> 01:23:33,060 Și apoi victima busteni în site-ul și apoi pleacă. 1761 01:23:33,060 --> 01:23:36,190 Și apoi persoana care se întoarce atunci se poate utiliza în continuare ID-ul lor de sesiune 1762 01:23:36,190 --> 01:23:37,430 pentru a accesa informațiile lor. 1763 01:23:37,430 --> 01:23:40,050 Deci asta e un exemplu de cum că ar putea întâmpla. 1764 01:23:40,050 --> 01:23:45,570 >> Și apoi nu aș face griji prea mult despre codul sau ceva specific 1765 01:23:45,570 --> 01:23:49,270 așa că ar putea provoca acest lucru, dar având un fel de idee ce 1766 01:23:49,270 --> 01:23:51,400 variabilele implicate în acest sunt. 1767 01:23:51,400 --> 01:23:53,897 Și apoi manipularea afara de date este un alt tip de atac 1768 01:23:53,897 --> 01:23:55,230 care are David a vorbit despre. 1769 01:23:55,230 --> 01:23:59,730 Și doar se referă la ce se poate întâmpla atunci când 1770 01:23:59,730 --> 01:24:04,300 răspunsul, HTTP răspuns în interiorul antet noastre 1771 01:24:04,300 --> 01:24:05,720 nu este igienizat corespunzător. 1772 01:24:05,720 --> 01:24:14,340 >> Și oricare din câmpuri sub, de exemplu, dacă cineva suprascrie unul din antetul 1773 01:24:14,340 --> 01:24:18,860 Valorile să conțină ceva mai mult de ce ar trebui să contain-- și de fapt, 1774 01:24:18,860 --> 01:24:22,720 conțin, de exemplu, un 200 OK cod de stare, atunci ei 1775 01:24:22,720 --> 01:24:26,890 ar putea potential face rău intenționat lucrurile atunci când nu ar trebui să. 1776 01:24:26,890 --> 01:24:30,815 Dar nu aș face griji prea mult despre codul specific 1777 01:24:30,815 --> 01:24:34,110 care ar putea provoca acest lucru, doar un fel de înțelegere 1778 01:24:34,110 --> 01:24:37,290 de nivel înalt lucruri de genul asta. 1779 01:24:37,290 --> 01:24:39,570 >> Cred că acest lucru este tot pe care trebuie să le acopere. 1780 01:24:39,570 --> 01:24:40,090 Uimitor. 1781 01:24:40,090 --> 01:24:43,310 Oricine are orice întrebări cu privire la orice din lucrurile pe care le fac obiectul? 1782 01:24:43,310 --> 01:24:44,213 Da. 1783 01:24:44,213 --> 01:24:48,077 >> Audiența: Deci, un fel de mai întrebare logistic. 1784 01:24:48,077 --> 01:24:53,400 Este conținutul axat în principal pe lucruri după testul 1? 1785 01:24:53,400 --> 01:24:55,730 >> MARIA ZLATKOVA: Deci Întrebarea este, este conținutul 1786 01:24:55,730 --> 01:24:59,720 axat în principal pe lucruri după testul 1? 1787 01:24:59,720 --> 01:25:06,070 Deci accentul se pune pe după test 1, cu excepția 1788 01:25:06,070 --> 01:25:10,914 că trebuie să ne concentrăm pe lucruri în pset5 și o mulțime de structuri de date 1789 01:25:10,914 --> 01:25:11,580 că am acoperit. 1790 01:25:11,580 --> 01:25:14,300 Și nu putem spune că ne-am poate ignora nimic înainte 1791 01:25:14,300 --> 01:25:17,120 că deoarece se bazează pe ea, de asemenea. 1792 01:25:17,120 --> 01:25:21,845 >> Deci se concentreze pe faptul că, plus materialul pset5 ca inclusiv liste legate, stive, 1793 01:25:21,845 --> 01:25:23,720 cozile, și tot ceea ce că Hannah a trecut peste. 1794 01:25:23,720 --> 01:25:24,050 >> HANNAH Blumberg: dreapta. 1795 01:25:24,050 --> 01:25:27,450 Da, ne-am dus peste toate lucrurile C La început foarte repede. 1796 01:25:27,450 --> 01:25:29,090 Dar asigurați-vă că pentru a revizui. 1797 01:25:29,090 --> 01:25:32,700 Du-te înapoi și priviți test 0 revizuire. 1798 01:25:32,700 --> 01:25:36,110 >> Un cuplu note mai logistice, doar în timp ce noi avem atenția dumneavoastră. 1799 01:25:36,110 --> 01:25:39,100 Vom avea de ore de birou atât pe luni și marți seara. 1800 01:25:39,100 --> 01:25:41,540 Vor să fie în MD 119. 1801 01:25:41,540 --> 01:25:44,220 Acest lucru este pe site-ul, astfel încât Dacă nu-l, nu vă faceți griji auzi. 1802 01:25:44,220 --> 01:25:45,266 >> MARIA ZLATKOVA: 8:30 la 11:00. 1803 01:25:45,266 --> 01:25:46,260 >> HANNAH Blumberg: Da, 08:30 à 11:00. 1804 01:25:46,260 --> 01:25:46,910 Vom fi acolo. 1805 01:25:46,910 --> 01:25:48,368 Vom fi acolo să răspundă la întrebări. 1806 01:25:48,368 --> 01:25:49,480 E destul de rece și distractiv. 1807 01:25:49,480 --> 01:25:53,240 Voi poate pune întrebări pe care le au asupra testul 1. 1808 01:25:53,240 --> 01:25:55,740 Și test 1 este pe Miercuri, noroc asa de bine. 1809 01:25:55,740 --> 01:25:59,770 Dacă aveți orice întrebări, poate vin să vorbească cu noi aici unul-la-unu. 1810 01:25:59,770 --> 01:26:00,880 Misto. 1811 01:26:00,880 --> 01:26:01,630 Multumesc mult. 1812 01:26:01,630 --> 01:26:02,880 >> MARIA ZLATKOVA: Multumesc mult, baieti. 1813 01:26:02,880 --> 01:26:03,480 >> Audiența: Yay. 1814 01:26:03,480 --> 01:26:05,930 >> [APLAUZE] 1815 01:26:05,930 --> 01:26:07,530