1 00:00:00,000 --> 00:00:08,070 2 00:00:08,070 --> 00:00:10,430 >> R. J. AQUINO: Să abia începem. 3 00:00:10,430 --> 00:00:12,310 Deci, aceasta este Quiz 1. 4 00:00:12,310 --> 00:00:14,890 Iată câteva informații de nivel înalt. 5 00:00:14,890 --> 00:00:19,915 Pagina Despre pentru testul este în acest URL, nu mai CS50.net, deși 6 00:00:19,915 --> 00:00:21,080 va funcționa în continuare. 7 00:00:21,080 --> 00:00:26,920 Este CS50.harvard.edu/quizzes/2013/1. 8 00:00:26,920 --> 00:00:31,070 Este mari despre pagina, vă spun unde și când, și anume miercurea viitoare 9 00:00:31,070 --> 00:00:32,100 într-o grămadă de camere. 10 00:00:32,100 --> 00:00:36,120 Și de miercurea viitoare, am înseamnă două zile de acum. 11 00:00:36,120 --> 00:00:37,890 Toate aceste informații sunt acolo. 12 00:00:37,890 --> 00:00:39,110 Dar este cumulativ. 13 00:00:39,110 --> 00:00:43,790 >> Deci totul din prima jumătate a an este potențial pe testul, 14 00:00:43,790 --> 00:00:50,780 pentru că nu se poate face într-adevăr avansate lucruri în C, fara dacă condițiile și 15 00:00:50,780 --> 00:00:51,920 pentru bucle și altele asemenea. 16 00:00:51,920 --> 00:00:55,580 Dar nu va fi un accent pe Materialul acoperit din Quiz 0, 17 00:00:55,580 --> 00:00:59,570 începând cu structs și fișiere I / O. Este de obicei mai mult 18 00:00:59,570 --> 00:01:01,620 provocatoare decât Quiz 0. 19 00:01:01,620 --> 00:01:03,870 Scorul mediu este de obicei mai mic. 20 00:01:03,870 --> 00:01:05,980 Studia greu. 21 00:01:05,980 --> 00:01:09,340 >> În timp ce studia, asigurați-vă că pentru a utiliza CS50/discuss pentru a posta întrebările dumneavoastră 22 00:01:09,340 --> 00:01:10,830 și să citească întrebările altor oameni. 23 00:01:10,830 --> 00:01:13,550 Deci, dacă nu aveți orice întrebări, conectați și citit 24 00:01:13,550 --> 00:01:14,580 întrebările prietenilor. 25 00:01:14,580 --> 00:01:16,560 Probabil sunt întrebări bune. 26 00:01:16,560 --> 00:01:17,730 Și să ia chestionare de practică. 27 00:01:17,730 --> 00:01:20,750 Am fost avertizat de teste pentru șapte sau opt ani. 28 00:01:20,750 --> 00:01:22,180 Sunt toate on-line. 29 00:01:22,180 --> 00:01:25,540 Întrebări viitoare sunt similare la întrebări vechi. 30 00:01:25,540 --> 00:01:26,550 Acesta este modul în care le face. 31 00:01:26,550 --> 00:01:27,740 >> Testul nu există încă. 32 00:01:27,740 --> 00:01:28,670 Nici unul dintre noi nu l-au văzut. 33 00:01:28,670 --> 00:01:32,496 Dar se va arata teste anterioare. 34 00:01:32,496 --> 00:01:36,500 Pentru aceasta sesiune de revizuire, acest lucru nu este o listă exhaustivă de subiecte. 35 00:01:36,500 --> 00:01:40,740 Nu poți participa la acest lucru și apoi fi perfect pregătit pentru testul. 36 00:01:40,740 --> 00:01:43,330 Altfel, nu ar fi că mai mult de un test. 37 00:01:43,330 --> 00:01:46,270 Și acest lucru este, de asemenea, nu neapărat tot ce trebuie să știți despre orice 38 00:01:46,270 --> 00:01:46,970 subiect dat. 39 00:01:46,970 --> 00:01:50,520 Este menit să vă expuneți la lucrurile ne-am acoperit, vă reamintesc ceea ce am 40 00:01:50,520 --> 00:01:53,070 acoperite, precum și modul în pe care l-am acoperit. 41 00:01:53,070 --> 00:01:57,030 Dar va trebui să mergem mai departe și mai profundă atunci când studia la o dublă verificare 42 00:01:57,030 --> 00:02:00,230 ca stii totul despre orice dat subiect și pe care le-ați completat în 43 00:02:00,230 --> 00:02:03,320 toate colțurile care erau acoperite în curs. 44 00:02:03,320 --> 00:02:07,980 >> Notele test vă spun pentru a merge la note logofătul, ceas video de curs. 45 00:02:07,980 --> 00:02:10,155 Asta e un mod bun de a vă asigura că ați acoperit toate bazele. 46 00:02:10,155 --> 00:02:12,670 47 00:02:12,670 --> 00:02:17,340 Deci a începe, atunci când am făcut aceste slide-uri, am încercat să pun acolo unde am găsit 48 00:02:17,340 --> 00:02:18,350 informații. 49 00:02:18,350 --> 00:02:22,890 Deci, pentru fișiere I / O, de exemplu, Săptămâna 7, Luni de curs, și postat 50 00:02:22,890 --> 00:02:27,960 Secțiunea 6 și Problemă Set au toate Informații despre File I / O. I-am făcut 51 00:02:27,960 --> 00:02:28,840 aceasta pentru fiecare subiect. 52 00:02:28,840 --> 00:02:33,010 Deci, aceste diapozitive titlu poate fi de ajutor pentru tine. 53 00:02:33,010 --> 00:02:38,950 >> Deci, aici avem de fișiere I / O. Amintiți-vă, în Problema Set 5, am folosit fopen, fclose, 54 00:02:38,950 --> 00:02:41,210 fwrite, fread, fseek și. 55 00:02:41,210 --> 00:02:48,090 După ce a recuperat 30ish JPEG și au redimensionat și incurcat cu 56 00:02:48,090 --> 00:02:50,320 bitmap-uri, ar trebui să fie destul de familiar cu aceste funcții 57 00:02:50,320 --> 00:02:51,830 și modul în care acestea funcționează. 58 00:02:51,830 --> 00:02:54,420 Dacă nu mai sunt familiare, le revizui siguranta. 59 00:02:54,420 --> 00:02:56,860 Și asigurați-vă că ați înțeles ce diferite argumente sunt, 60 00:02:56,860 --> 00:02:58,260 atunci când acestea sunt utilizate. 61 00:02:58,260 --> 00:03:03,620 >> Dar comune bug-uri legate de fișiere vi se poate cere despre - 62 00:03:03,620 --> 00:03:07,270 bine, dacă ați uitat să verifice dacă fopen de fapt a lucrat înainte de a merge la 63 00:03:07,270 --> 00:03:08,350 modifica un fișier. 64 00:03:08,350 --> 00:03:09,760 Care ar putea fi rău. 65 00:03:09,760 --> 00:03:13,560 Dacă ați uitat să fclose un fișier pe care le-ați fopened, care este similar cu 66 00:03:13,560 --> 00:03:14,400 o scurgere de memorie. 67 00:03:14,400 --> 00:03:15,980 Asta e destul de rău. 68 00:03:15,980 --> 00:03:18,670 Și uitând pentru a verifica dacă ați a ajuns la sfârșitul fișierului înainte de a 69 00:03:18,670 --> 00:03:19,790 începe să scrie pentru el. 70 00:03:19,790 --> 00:03:22,320 >> Deci, dacă spui, hei, eu sunt la sfârșitul fișierului. 71 00:03:22,320 --> 00:03:23,750 Dă-mi 5 mai multe bytes. 72 00:03:23,750 --> 00:03:27,370 Ei bine, asta nu e, probabil, va lucra așa cum vă așteptați. 73 00:03:27,370 --> 00:03:30,930 Asta este într-adevăr de fișier I / O, pentru că am făcut atât de mult de ea 74 00:03:30,930 --> 00:03:32,300 cu set problema. 75 00:03:32,300 --> 00:03:36,000 Deci, dacă ați înțeles ce se întâmplă pe în Problema Set 5, amintiți-vă de bitmats 76 00:03:36,000 --> 00:03:40,090 și JPEG, atunci esti, probabil, toate set de fișiere I / O. Daca asta e un pic 77 00:03:40,090 --> 00:03:44,770 neclare, revizuirea cu siguranta ca problema stabilite și materiale asociate. 78 00:03:44,770 --> 00:03:51,110 >> Structs au fost subiectul care a fost pe linie între 0 și Quiz Quiz 1. 79 00:03:51,110 --> 00:03:53,090 Nu a făcut destul de tăiat pentru Quiz 0. 80 00:03:53,090 --> 00:03:57,040 Astfel încât acestea vor fi cu siguranta pe Quiz 1, Săptămâna 7, luni. 81 00:03:57,040 --> 00:03:58,150 Ce este un struct? 82 00:03:58,150 --> 00:04:00,250 Aici ne arată un struct. 83 00:04:00,250 --> 00:04:03,140 E ca un nou tip. 84 00:04:03,140 --> 00:04:07,940 E ca un container pentru mai multe domenii. 85 00:04:07,940 --> 00:04:12,970 >> În acest caz, ne-am declarat un struct elev care are două domenii - 86 00:04:12,970 --> 00:04:17,750 un șir care suntem de asteptare nume și un int care suntem de asteptare vârstă. 87 00:04:17,750 --> 00:04:21,450 Așa că atunci când trec în jurul studenți sau I modifica studenți, voi fi în stare să 88 00:04:21,450 --> 00:04:24,430 acces la numele lor și vârsta lor. 89 00:04:24,430 --> 00:04:26,670 Să ne uităm la unele cod pentru asta. 90 00:04:26,670 --> 00:04:29,090 Aici vedem că le-am declarat un student s, la fel ca 91 00:04:29,090 --> 00:04:30,300 Declar orice variabilă - 92 00:04:30,300 --> 00:04:32,430 int x, int y, etc. 93 00:04:32,430 --> 00:04:34,180 >> Iată elev s. 94 00:04:34,180 --> 00:04:37,370 El începe cu nimic în domeniile sale. 95 00:04:37,370 --> 00:04:38,240 Deci, haideți să le setați. 96 00:04:38,240 --> 00:04:40,681 Ai stabilit domenii de o struct cu punct. 97 00:04:40,681 --> 00:04:43,780 Așa că am spus aici că s.name = RJ. 98 00:04:43,780 --> 00:04:46,470 Și s.age = 21. 99 00:04:46,470 --> 00:04:48,500 Puteți actualiza, de asemenea, domenii în același mod în care ar actualiza 100 00:04:48,500 --> 00:04:49,550 valoarea unei variabile. 101 00:04:49,550 --> 00:04:53,270 Deci, vreau să-mi schimb numele de la RJ cu nici perioadele de la R. J. alac 102 00:04:53,270 --> 00:04:54,540 mod corect. 103 00:04:54,540 --> 00:04:58,890 Ar fi s.name = RJ, la fel așa cum am spus-o inițial. 104 00:04:58,890 --> 00:05:00,030 Și apoi le puteți accesa. 105 00:05:00,030 --> 00:05:00,930 >> Așa că le-am stabilit. 106 00:05:00,930 --> 00:05:01,840 Noi le-am actualizat. 107 00:05:01,840 --> 00:05:03,890 De asemenea, puteți să le accesați în același mod. 108 00:05:03,890 --> 00:05:09,330 Deci, aici, eu sunt imprimarea R. J. Este de 21 de ani. 109 00:05:09,330 --> 00:05:14,700 Și eu accesare a acestor valori cu s.name și s.age. 110 00:05:14,700 --> 00:05:17,040 Astfel că accesează structs cu notația punct. 111 00:05:17,040 --> 00:05:17,850 Da, întrebarea? 112 00:05:17,850 --> 00:05:21,176 >> Audiența: Exista un motiv pe diapozitiv anterior că nu ai pus 113 00:05:21,176 --> 00:05:24,848 elev pe linia de sus, cum ar fi typedef elev struct și apoi 114 00:05:24,848 --> 00:05:25,840 student la sfârșitul? 115 00:05:25,840 --> 00:05:29,040 >> R. J. AQUINO: Deci, întrebarea a fost, pe acest diapozitiv, ne-am văzut de obicei, 116 00:05:29,040 --> 00:05:32,400 typedef struct nod și apoi domenii ale struct și 117 00:05:32,400 --> 00:05:34,250 apoi nodul cuvânt. 118 00:05:34,250 --> 00:05:37,790 Și cum vin aici nu am spus, typedef elev struct și apoi 119 00:05:37,790 --> 00:05:39,820 domenii ale struct și apoi student? 120 00:05:39,820 --> 00:05:44,310 Motivul este că nu am nevoie să accesa în interiorul a struct. 121 00:05:44,310 --> 00:05:46,270 Deci, este bine să-l lase fără un nume. 122 00:05:46,270 --> 00:05:49,210 Am să-l lăsa ca un struct anonim. 123 00:05:49,210 --> 00:05:53,130 >> Motivul pentru care o face pentru liste legate și lucrurilor este că în interiorul aveți nevoie 124 00:05:53,130 --> 00:05:55,360 pentru a face referire o stea noduri struct. 125 00:05:55,360 --> 00:05:58,220 Astfel struct trebuie să aibă un nume, astfel încât să puteți accesa mai târziu. 126 00:05:58,220 --> 00:05:59,540 Este un detaliu minor. 127 00:05:59,540 --> 00:06:04,750 Dar veți vedea de obicei typedef struct acolade, dacă nu aveți nevoie de 128 00:06:04,750 --> 00:06:08,720 numele și typedef struct unele nume urmată de acolade, dacă va fi 129 00:06:08,720 --> 00:06:09,520 nevoie de nume. 130 00:06:09,520 --> 00:06:12,070 Deci asta-i o întrebare bună. 131 00:06:12,070 --> 00:06:17,000 >> Și cu privire la acest punct, avem tendința de a modifica structs și trece în jurul structs de 132 00:06:17,000 --> 00:06:18,680 de referință, nu de valoare. 133 00:06:18,680 --> 00:06:21,940 Deci, vom trece doar în jurul valorii de indicii pentru a structs loc de a trece în jurul 134 00:06:21,940 --> 00:06:23,150 structs ei înșiși. 135 00:06:23,150 --> 00:06:28,050 Deci te foarte frecvent vor fi folosind, în acest caz, de student sau * 136 00:06:28,050 --> 00:06:34,150 struct nod * sau nod * loc de studenți sau noduri. 137 00:06:34,150 --> 00:06:39,350 Deci, aici, am spus, OK, ptr variabil va fi adresa de e. 138 00:06:39,350 --> 00:06:45,570 O să fie indicatorul pentru student R. J. 139 00:06:45,570 --> 00:06:48,965 >> Deci, putem ajunge la acele domenii la fel ca ne-am luat nimic. 140 00:06:48,965 --> 00:06:51,460 În primul rând, ID-ul de referință indicatorul pentru a obține struct. 141 00:06:51,460 --> 00:06:55,530 Asta e * ptr și apoi un punct și apoi de vârstă. 142 00:06:55,530 --> 00:06:58,790 Deci, pentru a avea acces la teren, iar eu am actualizat se acum la 22, pentru că, să 143 00:06:58,790 --> 00:07:00,860 să zicem, a fost ziua mea. 144 00:07:00,860 --> 00:07:03,990 Există o sintaxă scurtătură folosind săgeata aici. 145 00:07:03,990 --> 00:07:07,060 Deci ptr vârstă săgeată este doar la fel ca * ptr.age. 146 00:07:07,060 --> 00:07:10,150 147 00:07:10,150 --> 00:07:11,550 Acum, asta e ceva ce va avea pentru a memora și amintiți-vă. 148 00:07:11,550 --> 00:07:15,010 >> Ai folosit-o foarte mult în pset6, PSET abecedar. 149 00:07:15,010 --> 00:07:18,350 Dar aceasta este de fapt ceea ce se întâmplă pe sub capota. 150 00:07:18,350 --> 00:07:20,500 Este dereferencing indicatorul și apoi accesarea. 151 00:07:20,500 --> 00:07:21,432 Întrebare? 152 00:07:21,432 --> 00:07:22,682 >> Audiența: [inaudibil]. 153 00:07:22,682 --> 00:07:25,860 154 00:07:25,860 --> 00:07:28,060 >> R. J. AQUINO: Deci, de ce suntem folosind indicii ca structs în loc de 155 00:07:28,060 --> 00:07:29,500 structs ei înșiși? 156 00:07:29,500 --> 00:07:33,740 Motivul ar fi, dacă sunteți în trecere un struct la o funcție, probabil 157 00:07:33,740 --> 00:07:36,900 Vreau să treacă în jurul doar 4 sau așa bytes care reprezintă indicatorul, ca 158 00:07:36,900 --> 00:07:40,375 spre deosebire de potențial 30 sau 40 bytes care sunt struct. 159 00:07:40,375 --> 00:07:44,410 Deci, trece ceva pentru o funcție este mai ușor atunci când lucru 160 00:07:44,410 --> 00:07:48,230 este mai mică în scurt. 161 00:07:48,230 --> 00:07:49,074 Întrebare? 162 00:07:49,074 --> 00:07:53,026 >> Audiența: Este posibil să fi menționat acest lucru la început, dar există 163 00:07:53,026 --> 00:07:56,000 alte slide-uri de până la [inaudibil]? 164 00:07:56,000 --> 00:07:58,960 >> R. J. AQUINO: Aceste slide-uri vor fi după sesiunea de reexaminare. 165 00:07:58,960 --> 00:08:00,210 Le vom posta pe site-ul web. 166 00:08:00,210 --> 00:08:02,450 167 00:08:02,450 --> 00:08:06,870 Deci, se deplasează pe și se deplasează pe puțin mai repede, vom vorbi despre date 168 00:08:06,870 --> 00:08:07,350 structuri. 169 00:08:07,350 --> 00:08:08,040 Există o mulțime. 170 00:08:08,040 --> 00:08:10,080 Am acoperit o grămadă de ei. 171 00:08:10,080 --> 00:08:12,500 Aici e ceea ce ar trebui să înțeleagă cu privire la structura de date. 172 00:08:12,500 --> 00:08:15,590 >> Ar trebui să înțeleagă într-adevăr la un nivel ridicat nivel ce fiecare structură este. 173 00:08:15,590 --> 00:08:21,190 Puteți explica în limba engleză pentru dvs. prieten care nu a luat CS50 cum 174 00:08:21,190 --> 00:08:25,580 ne organizare datele noastre și de ce ne-am folosi ceva în acest fel? 175 00:08:25,580 --> 00:08:26,990 Asta e un lucru. 176 00:08:26,990 --> 00:08:29,650 Lucru două, să înțeleagă punerii în aplicare. 177 00:08:29,650 --> 00:08:34,270 Deci, să înțeleagă cum să folosească aceste lucruri în C. Și vom merge pe această. 178 00:08:34,270 --> 00:08:39,030 >> Și apoi lucru trei ar fi cunoaște ori a alerga și limitările 179 00:08:39,030 --> 00:08:40,470 diverse structuri pe care le utilizați. 180 00:08:40,470 --> 00:08:44,059 Deci, să înțeleagă de ce ar trebui să utilizați un hash masă în loc de o matrice. 181 00:08:44,059 --> 00:08:49,570 Înțelege cât de repede, în medie, accesarea unui tabel hash este. 182 00:08:49,570 --> 00:08:54,010 Înțelege ce operațiunile sunt rapide pe Lista legate dar lent pe tablouri și 183 00:08:54,010 --> 00:08:56,080 vice-versa. 184 00:08:56,080 --> 00:08:59,780 Deci, pentru a înțelege că, va trebui să înțelege Big-O notație doar să știi 185 00:08:59,780 --> 00:09:01,310 cum sa vorbeasca despre aceste felul de lucruri. 186 00:09:01,310 --> 00:09:02,700 Și vom vorbi despre asta. 187 00:09:02,700 --> 00:09:06,040 >> Deci, primul lucru, liste de legat. 188 00:09:06,040 --> 00:09:07,770 Aici este o imagine la nivel înalt a unei liste legate. 189 00:09:07,770 --> 00:09:08,830 Ne arată acest lucru în clasă. 190 00:09:08,830 --> 00:09:11,670 Avem de obicei, 10 de persoane picioare pe scena. 191 00:09:11,670 --> 00:09:16,790 Dar avem o serie de noduri în care fiecare nod are o anumită valoare și un pointer 192 00:09:16,790 --> 00:09:18,610 la valoarea sa viitoare. 193 00:09:18,610 --> 00:09:21,730 Deci, pentru a obține de la un nod la altul, ai doar spun, da-mi nodul următor. 194 00:09:21,730 --> 00:09:22,530 Ai acel nod. 195 00:09:22,530 --> 00:09:23,770 Dă-mi nodul următor. 196 00:09:23,770 --> 00:09:24,400 Ai acel nod. 197 00:09:24,400 --> 00:09:28,790 Dă-mi nodul următor și așa mai departe până când nu există nici un stânga nod. 198 00:09:28,790 --> 00:09:31,850 >> Deci, continuăm să vorbim despre la un nivel ridicat. 199 00:09:31,850 --> 00:09:34,100 Este foarte usor pentru a insera lucrurile într-o listă de legat. 200 00:09:34,100 --> 00:09:36,010 Dacă nu vă pasă de ordine, puteți să-l picătură 201 00:09:36,010 --> 00:09:36,840 chiar de la început. 202 00:09:36,840 --> 00:09:38,520 Asta este constantă de timp. 203 00:09:38,520 --> 00:09:39,900 Dar este greu de a găsi o valoare. 204 00:09:39,900 --> 00:09:43,060 Dacă sunteți încercarea de a cere, este de șapte în lista mea? 205 00:09:43,060 --> 00:09:44,740 Trebuie să treacă prin fiecare valoare. 206 00:09:44,740 --> 00:09:45,680 Este aceasta șapte? 207 00:09:45,680 --> 00:09:46,610 Este aceasta șapte? 208 00:09:46,610 --> 00:09:47,770 Este aceasta șapte? 209 00:09:47,770 --> 00:09:48,690 Este aceasta șapte? 210 00:09:48,690 --> 00:09:49,830 Peste si peste din nou. 211 00:09:49,830 --> 00:09:51,520 Și asta este O (n). 212 00:09:51,520 --> 00:09:53,800 Deci, atunci când studia pentru testul, compara acest lucru cu matrici. 213 00:09:53,800 --> 00:09:57,010 214 00:09:57,010 --> 00:09:58,220 >> Este că OK? 215 00:09:58,220 --> 00:09:59,220 Au stins luminile dim. 216 00:09:59,220 --> 00:10:01,110 OK. 217 00:10:01,110 --> 00:10:02,400 Când este o listă legată mai bine? 218 00:10:02,400 --> 00:10:04,640 Când este un tablou mai bine? 219 00:10:04,640 --> 00:10:06,670 Așa că haideți să ne uităm la unele cod. 220 00:10:06,670 --> 00:10:08,960 Aici este un potențial nod. 221 00:10:08,960 --> 00:10:09,770 Este un struct. 222 00:10:09,770 --> 00:10:12,220 Acesta are o int n, care va fi valoarea noastră. 223 00:10:12,220 --> 00:10:17,780 Și are un nod struct * viitor, care este indicatorul nostru la nodul următor. 224 00:10:17,780 --> 00:10:23,040 Deci, aici, putem vedea că ne-am sa întâmplat a pus un nod în int nostru. 225 00:10:23,040 --> 00:10:27,850 Dar, în cazul în care acest lucru ar fi o listă legată de char stele sau o listă legată de flotoare, ne-am 226 00:10:27,850 --> 00:10:28,820 total ar putea face asta. 227 00:10:28,820 --> 00:10:33,110 >> Amintiți-vă în pset6, ai avut, probabil, un Lista legate de stele char sau doar 228 00:10:33,110 --> 00:10:34,360 matrice char statice. 229 00:10:34,360 --> 00:10:37,370 230 00:10:37,370 --> 00:10:39,040 Să ne uităm aici, la o operație. 231 00:10:39,040 --> 00:10:43,570 Așa că vrem să introducă un nou n în lista noastră legată. 232 00:10:43,570 --> 00:10:48,940 Vom începe cu un pointer cap, care este un pointer la acest nod care are 233 00:10:48,940 --> 00:10:53,460 Valoarea lui n și o următoare a unui indicator care puncte de la acest nod este o valoare de 234 00:10:53,460 --> 00:10:57,760 n și un viitor de nul, deoarece e ultimul nod. 235 00:10:57,760 --> 00:11:00,440 Deci, în interesul de timp, voi pune tot codul de pe ecran. 236 00:11:00,440 --> 00:11:03,130 Și ne vom plimba prin ea câteva linii la un moment dat. 237 00:11:03,130 --> 00:11:05,790 >> Deci, aici e codul. 238 00:11:05,790 --> 00:11:07,560 Sper că e ușor de citit. 239 00:11:07,560 --> 00:11:11,275 Primul lucru pe care îl facem este am malloc un nou nod. 240 00:11:11,275 --> 00:11:15,105 Deci are un pointer la un nou nod care nu are destul de nimic setat 241 00:11:15,105 --> 00:11:16,450 în ea încă. 242 00:11:16,450 --> 00:11:19,580 Vom verifica pentru a vă asigura că noul nod nu este nul. 243 00:11:19,580 --> 00:11:22,220 În caz contrar, trebuie să renunțe. 244 00:11:22,220 --> 00:11:27,680 Deci, ce a verificat că, noi acum setați valorile din nodul. 245 00:11:27,680 --> 00:11:31,520 Așa că am pus noi n în câmpul nostru n. 246 00:11:31,520 --> 00:11:36,050 Și ne-am stabilit indicatorul de lângă punctul de capul originală, astfel încât să putem 247 00:11:36,050 --> 00:11:38,900 acum au introdus acest nodul în lista noastră. 248 00:11:38,900 --> 00:11:44,600 >> În cele din urmă, avem un punct central la nivel mondial la noul nostru nod, astfel încât, dacă ar fi să 249 00:11:44,600 --> 00:11:50,300 încep de la cap, ne-ar fi la acest Noul primul nod în loc de 250 00:11:50,300 --> 00:11:51,560 vechi primul nod. 251 00:11:51,560 --> 00:11:55,320 Și atunci când această funcție iese, nod nouă variabilă nu mai există, 252 00:11:55,320 --> 00:11:57,130 pentru că a fost locală a funcției. 253 00:11:57,130 --> 00:11:59,770 Deci, aceasta este starea lumii. 254 00:11:59,770 --> 00:12:03,570 Subliniază capul nostru global de noul nostru primul nod, ceea ce indică nostru 255 00:12:03,570 --> 00:12:06,346 primul nod original, care de puncte la nodul după aceea. 256 00:12:06,346 --> 00:12:09,790 >> Asta a fost inserare. 257 00:12:09,790 --> 00:12:12,150 Sper că a fost relativ simplu de urmat. 258 00:12:12,150 --> 00:12:14,300 Atunci când în dubiu, desena o imagine. 259 00:12:14,300 --> 00:12:17,820 Deci, mi se pare că a vorbi despre liste legate și se uită la 260 00:12:17,820 --> 00:12:19,870 Codul este foarte util nu. 261 00:12:19,870 --> 00:12:23,790 În timp ce se uită la o imagine a unui legat Lista îmi permite să cred, oh, așa 262 00:12:23,790 --> 00:12:24,970 Am acest nod aici. 263 00:12:24,970 --> 00:12:28,980 Dar dacă actualizez că pointer, sfârșește deconectat. 264 00:12:28,980 --> 00:12:34,340 Și m-am uitat unde nodul merge. 265 00:12:34,340 --> 00:12:35,390 Și codul de iese. 266 00:12:35,390 --> 00:12:37,830 Și aveți mai multe noduri care sunt deconectate. 267 00:12:37,830 --> 00:12:39,970 Și nu se termină cu lista pe care doriți. 268 00:12:39,970 --> 00:12:43,320 >> Deci, dacă vă trage imaginea și face pas cu pas, sperăm, veți vedea 269 00:12:43,320 --> 00:12:46,840 ordinea corectă a lucrurilor în ceea ce privește actualizarea indicii pentru a vă asigura 270 00:12:46,840 --> 00:12:48,830 că lista vine împreună. 271 00:12:48,830 --> 00:12:51,240 Insert este relativ simplă. 272 00:12:51,240 --> 00:12:55,210 O una mai complicată ar fi inserare într-o listă sortată. 273 00:12:55,210 --> 00:12:59,980 O funcție mai complicat este de a șterge și de a găsi, astfel încât în ​​căutarea printr-o listă de 274 00:12:59,980 --> 00:13:03,030 vedea dacă ceva este acolo. 275 00:13:03,030 --> 00:13:07,220 Poate că ați făcut acest lucru în pset6 atunci când a intrat în masa de hash și ați spus, 276 00:13:07,220 --> 00:13:10,460 bine, este cuvântul Apple în lista mea legată? 277 00:13:10,460 --> 00:13:11,440 >> Deci, este posibil să fi făcut deja acest lucru. 278 00:13:11,440 --> 00:13:15,530 Dar cu siguranta, reîmprospăta memoria și să încerce să reimplementat găsi și 279 00:13:15,530 --> 00:13:19,150 reimplementat șterge pentru o listă de legat. 280 00:13:19,150 --> 00:13:22,850 Notă de distracție, există, de asemenea, legat de două ori liste, în cazul în care au 281 00:13:22,850 --> 00:13:27,490 indicii care indică atât înainte și înapoi, astfel încât ai putea merge la 282 00:13:27,490 --> 00:13:29,270 nod următor și la nodul anterior. 283 00:13:29,270 --> 00:13:33,860 Și acolo a fost o întrebare pe anul trecut test de acest tip, de a vorbi 284 00:13:33,860 --> 00:13:36,190 despre listele de două ori-legate. 285 00:13:36,190 --> 00:13:40,070 >> Acum, că este o structură care esti relativ familiar cu, pentru că cele mai multe 286 00:13:40,070 --> 00:13:42,520 dintre voi, probabil, le-a folosit pe pset6. 287 00:13:42,520 --> 00:13:45,680 Aici e una care e un pic mai puțin familiar. 288 00:13:45,680 --> 00:13:51,020 Ca o notă separată, cred că Quiz 1 este în primul rând, mai greu decât Quiz 0, deoarece 289 00:13:51,020 --> 00:13:54,600 lucrurile pe care le faci, te nu s-au făcut la fel de mult. 290 00:13:54,600 --> 00:13:58,100 Pentru a pune că un alt mod, pentru Quiz 0, ai fi scris o mulțime de C. Și noi 291 00:13:58,100 --> 00:13:58,880 ați întrebat despre C. 292 00:13:58,880 --> 00:14:02,310 >> Pentru Quiz 1, vom să vă întreb despre PHP si JavaScript, care vă 293 00:14:02,310 --> 00:14:03,490 nu s-au scris la fel de mult de. 294 00:14:03,490 --> 00:14:07,590 Mergem să vă întreb despre C-cod care nu te-ai scris la fel de mult de, 295 00:14:07,590 --> 00:14:09,130 acest C lucruri avansate. 296 00:14:09,130 --> 00:14:11,520 Deci cu siguranta, practica WE lucruri a vorbit despre în curs pe care le 297 00:14:11,520 --> 00:14:15,260 nu a făcut neapărat pe problema setat. 298 00:14:15,260 --> 00:14:17,870 >> Vorbind de care, nu ați scris un teanc pe o problemă set. 299 00:14:17,870 --> 00:14:19,610 Dar a fost în curs. 300 00:14:19,610 --> 00:14:22,530 Iată imaginea la nivel înalt de stive de care dam dovada in fiecare an. 301 00:14:22,530 --> 00:14:26,180 Este stiva de tăvi în sala de mese Mather. 302 00:14:26,180 --> 00:14:30,570 La un nivel ridicat, stive sunt o ultima în, primul din structura de date. 303 00:14:30,570 --> 00:14:32,040 Asta înseamnă că te duci pentru a pune lucrurile in - 304 00:14:32,040 --> 00:14:36,400 1, 3, 7, 12, 14, 0 negativ. 305 00:14:36,400 --> 00:14:39,180 Singurul lucru pe care nu am putut avea a spus - negativ 3, 0. 306 00:14:39,180 --> 00:14:40,250 Ai pus toate aceste lucruri inch 307 00:14:40,250 --> 00:14:42,940 Și ultima ai pus în este primul una care va ieși. 308 00:14:42,940 --> 00:14:44,170 >> Astfel încât aveți două operații - 309 00:14:44,170 --> 00:14:45,260 împinge și pop. 310 00:14:45,260 --> 00:14:49,180 Toate punerii în care am fost aratand ca aceasta este împinge. 311 00:14:49,180 --> 00:14:52,020 Și apoi, când ajung în a apuca ceva sau de a ajunge în partea de sus a apuca 312 00:14:52,020 --> 00:14:53,940 ceva, asta-i pop. 313 00:14:53,940 --> 00:14:55,540 Așa că am de gând să pună în aplicare stive. 314 00:14:55,540 --> 00:14:57,870 Și le-am arătat în curs folosind tablouri. 315 00:14:57,870 --> 00:14:59,550 Dar ai putea să le faci folosind liste legate. 316 00:14:59,550 --> 00:15:01,770 O stivă este un date conceptual structura, nu ca un 317 00:15:01,770 --> 00:15:03,760 -specifice de implementare unul. 318 00:15:03,760 --> 00:15:06,420 >> Deci, ce ar fi asta arata ca? 319 00:15:06,420 --> 00:15:07,970 Aceasta ar arata cam asa. 320 00:15:07,970 --> 00:15:10,840 Ai avea o dimensiune întreg. 321 00:15:10,840 --> 00:15:16,000 Și ai avea o serie de valori care suntem de asteptare tăvi, pentru că asta e 322 00:15:16,000 --> 00:15:18,570 ceea ce a fost imaginea pentru ne - int tăvi - 323 00:15:18,570 --> 00:15:21,740 și apoi unele capacitate maximă. 324 00:15:21,740 --> 00:15:27,100 Deci, ceea ce ar împinge arata ca? 325 00:15:27,100 --> 00:15:33,250 Ei bine, dacă avem un s stack, apoi să împingă ceva pe e, ne-ar obține 326 00:15:33,250 --> 00:15:34,620 dimensiunea s. 327 00:15:34,620 --> 00:15:42,270 Și că ar putea fi următoarea la fața locului deschis din gama noastră. 328 00:15:42,270 --> 00:15:50,510 Deci, dacă avem trei lucruri în stivă noastră, atunci tăvi 3 ar fi următoarea 329 00:15:50,510 --> 00:15:54,290 loc liber, deoarece 0, 1, și 2 sunt deja completate. 330 00:15:54,290 --> 00:16:01,790 >> Așa că am pus valoarea în s.trays [s.size], al treilea loc. 331 00:16:01,790 --> 00:16:06,290 Și apoi ne-am incrementa s.size să spunem, hei, am avut trei lucruri înainte. 332 00:16:06,290 --> 00:16:07,400 Acum, avem patru. 333 00:16:07,400 --> 00:16:10,180 Deci, data viitoare când vă împinge, tu esti O să pun ceva în 4. 334 00:16:10,180 --> 00:16:15,560 Sau data viitoare când pop, te duci să se uite la 3 în loc de 4 sau orice altceva. 335 00:16:15,560 --> 00:16:18,000 Și apoi ne vom întoarce la adevărata să zicem, hei, am reușit. 336 00:16:18,000 --> 00:16:19,160 Aceasta a lucrat. 337 00:16:19,160 --> 00:16:22,060 Ca o regulă de degetul mare, în cazul în care o funcție care este ar trebui să se întoarcă adevărat sau 338 00:16:22,060 --> 00:16:26,370 fals întoarce întotdeauna adevărat, s-ar putea au făcut ceva greșit. 339 00:16:26,370 --> 00:16:28,350 Deci, face acest lucru? 340 00:16:28,350 --> 00:16:32,400 >> Ei bine, acesta funcționează bine pentru 1, și 2, și 3, și 4, și cinci. 341 00:16:32,400 --> 00:16:34,640 Dar să spunem că am ajunge la capacitatea mea. 342 00:16:34,640 --> 00:16:38,750 Apoi m-am alerga într-o problemă, deoarece dacă dimensiunea este la fel ca și capacitate, eu sunt 343 00:16:38,750 --> 00:16:43,340 acum încearcă să pună ceva într-un matrice în cazul în care nu au spațiu. 344 00:16:43,340 --> 00:16:46,980 Deci, o verificare scurt pentru a remedia acest lucru. 345 00:16:46,980 --> 00:16:51,630 Dacă s.size CAPACITATE ==, return false. 346 00:16:51,630 --> 00:16:54,130 În caz contrar, du-te și de a face ceea ce am făcut. 347 00:16:54,130 --> 00:16:55,660 Deci, ce altceva am putea întreba despre pentru stive? 348 00:16:55,660 --> 00:16:56,460 Ce altceva ar trebui să studieze? 349 00:16:56,460 --> 00:16:57,690 Ce altceva ar trebui să practici? 350 00:16:57,690 --> 00:17:01,030 >> Ei bine, de punere în aplicare pop. 351 00:17:01,030 --> 00:17:02,370 Am făcut deja împinge. 352 00:17:02,370 --> 00:17:04,280 Voi rezolva asta. 353 00:17:04,280 --> 00:17:08,180 O implementare non-matrice, în cazul în care utilizați o listă legată, probabil. 354 00:17:08,180 --> 00:17:09,390 O implementare non-int. 355 00:17:09,390 --> 00:17:10,940 Am făcut int aici. 356 00:17:10,940 --> 00:17:11,880 Dar ar fi putut fi flotoare. 357 00:17:11,880 --> 00:17:13,010 Am fi putut fi siruri de caractere. 358 00:17:13,010 --> 00:17:14,290 Ar fi putut fi stele char. 359 00:17:14,290 --> 00:17:17,960 Uită-te la teste trecute pentru tipurile de întrebări care le-am întrebat despre stive. 360 00:17:17,960 --> 00:17:20,000 >> Îi voi spune că am acoperit stive în jurul la fel cum le-am acoperit în 361 00:17:20,000 --> 00:17:20,540 ultimii ani. 362 00:17:20,540 --> 00:17:24,400 Deci, întrebările test ar trebui să fi un bun indiciu. 363 00:17:24,400 --> 00:17:27,010 Mergând mai departe, chiar mai repede, cozi. 364 00:17:27,010 --> 00:17:28,200 Sunt ca stive. 365 00:17:28,200 --> 00:17:29,960 Dar ei sunt în primul rând, primul ieșit. 366 00:17:29,960 --> 00:17:33,530 Dacă ești britanic, coadă cuvântul probabil, a făcut o mulțime de sens pentru tine. 367 00:17:33,530 --> 00:17:36,390 În caz contrar, este posibil să aveți am auzit de ea ca o linie. 368 00:17:36,390 --> 00:17:38,120 Ei lucrează ca linia la magazinul Apple. 369 00:17:38,120 --> 00:17:40,740 Prima persoana să se prezinte la 03:00 în dimineața este primul 370 00:17:40,740 --> 00:17:42,880 persoană pentru a cumpăra iPad lui. 371 00:17:42,880 --> 00:17:44,260 >> Deci avem două operațiuni - 372 00:17:44,260 --> 00:17:45,720 Puneți în coadă și dequeue. 373 00:17:45,720 --> 00:17:47,560 Puneți în coadă pune cineva în linie. 374 00:17:47,560 --> 00:17:50,070 Dequeue trage primul persoană de pe linia. 375 00:17:50,070 --> 00:17:52,640 Din nou, putem pune în aplicare acest lucru cu o matrice. 376 00:17:52,640 --> 00:17:54,880 Deci, ceea ce este WE struct arătat în curs? 377 00:17:54,880 --> 00:17:57,660 A fost aceasta. 378 00:17:57,660 --> 00:17:59,300 Din nou, numere. 379 00:17:59,300 --> 00:18:02,020 Din nou, dimensiunea și acest nou front lucru. 380 00:18:02,020 --> 00:18:04,880 De ce există ceva numit față? 381 00:18:04,880 --> 00:18:07,050 Este indicele de alta element dequeue. 382 00:18:07,050 --> 00:18:12,210 Doar ține intern evidența primul tip pentru a arăta în sus, astfel încât să putem 383 00:18:12,210 --> 00:18:15,005 se poate scoate, atunci când avem nevoie pentru a. 384 00:18:15,005 --> 00:18:19,322 >> Cu siguranta uita-te la note de curs și să încercați să pună în aplicare Puneți în coadă și dequeue 385 00:18:19,322 --> 00:18:21,700 atunci când studiază pentru testul. 386 00:18:21,700 --> 00:18:23,190 Lucruri importante să se gândească. 387 00:18:23,190 --> 00:18:27,260 Ambalaj în jurul dacă partea din față, plus Dimensiunea se termină mai mare decât capacitatea. 388 00:18:27,260 --> 00:18:32,670 Din nou, în cazul în care structura este plin, ai de gând să aibă o problemă. 389 00:18:32,670 --> 00:18:34,780 Hash mese le-ați văzut înainte. 390 00:18:34,780 --> 00:18:39,820 Cei mai mulți dintre voi, probabil, puse în aplicare acestea pe pset6. 391 00:18:39,820 --> 00:18:44,210 Este o structură care are ca scop pentru O (1) inserare timp constant și O (1) 392 00:18:44,210 --> 00:18:46,430 căutare constantă de timp. 393 00:18:46,430 --> 00:18:49,760 >> În CS50, am implementat acest lucru ca o serie de liste legate. 394 00:18:49,760 --> 00:18:53,690 Componenta cheie a unui tabel hash este funcția de distribuire. 395 00:18:53,690 --> 00:18:58,350 Deci, se convertește dvs. de intrare, să spunem, un cuvânt din dicționar, într-un număr, 396 00:18:58,350 --> 00:18:59,560 care va fi indexul nostru. 397 00:18:59,560 --> 00:19:01,410 Și vom folosi ca index în gama noastră. 398 00:19:01,410 --> 00:19:05,374 Deci, aici este o imagine drăguț de la study.50.net. 399 00:19:05,374 --> 00:19:08,060 Noi arunca toate cuvintele în Funcția noastră hash. 400 00:19:08,060 --> 00:19:10,950 Și funcția de distribuire ne spune în cazul în care pentru a pune aceste cuvinte. 401 00:19:10,950 --> 00:19:15,650 >> Acest lucru este mare în țara în care există doar un singur cuvânt pentru fiecare slot de. 402 00:19:15,650 --> 00:19:20,480 Dar, așa cum vă amintiți de la pset6, acolo sunt mai multe cuvinte decât sloturi. 403 00:19:20,480 --> 00:19:23,080 Deci, ce se întâmplă când a obține o coliziune? 404 00:19:23,080 --> 00:19:26,730 În loc de a stoca o valoare în, să spunem, de masă hash 3, tu 405 00:19:26,730 --> 00:19:27,990 stoca o listă de legat. 406 00:19:27,990 --> 00:19:32,900 Și astfel încât în ​​loc de a avea pepene galben aici, ar avea o listă de legat, 407 00:19:32,900 --> 00:19:34,190 în cazul în care primul nod este cantalup. 408 00:19:34,190 --> 00:19:35,260 Și nodul următor este pisica. 409 00:19:35,260 --> 00:19:38,970 Și al treilea nod este coliziune, să spune, pentru că toate aceste cuvinte începe 410 00:19:38,970 --> 00:19:41,110 cu C. 411 00:19:41,110 --> 00:19:42,700 >> Deci, cele mai multe dintre voi a făcut asta pentru pset6. 412 00:19:42,700 --> 00:19:45,685 Dacă nu ați făcut un tabel hash pe pset6 și ați încercat ceva de genul 413 00:19:45,685 --> 00:19:47,720 un trie, revizuirea siguranta tabele de dispersie. 414 00:19:47,720 --> 00:19:50,650 Dacă ați făcut-o pe pset6, cu siguranta revizui tabele de dispersie. 415 00:19:50,650 --> 00:19:53,610 Și dacă ai făcut-o pe pset6 și nu a făcut- lucra destul de bine și tu 416 00:19:53,610 --> 00:19:56,150 a avut o mulțime de probleme cu ea, cu siguranta revizui tabele de dispersie. 417 00:19:56,150 --> 00:20:01,610 Deci, lecția într-adevăr este cu siguranta revizui tabele de dispersie. 418 00:20:01,610 --> 00:20:07,130 >> Vasta minoritate de ai încercat din incearca pe pset6. 419 00:20:07,130 --> 00:20:08,570 Imagine la nivel înalt. 420 00:20:08,570 --> 00:20:15,150 E ceva de genul asta, unde fiecare nod are un set de copii, în care fiecare 421 00:20:15,150 --> 00:20:17,100 copil corespunde o scrisoare. 422 00:20:17,100 --> 00:20:20,520 Și de fiecare nod, de asemenea, spune, hei, eu sunt un cuvânt. 423 00:20:20,520 --> 00:20:25,933 Deci, în acest caz, cuvântul Maxwell, dacă urmați M la A la 424 00:20:25,933 --> 00:20:28,530 X-W-E-L-L și apoi se urmează una. 425 00:20:28,530 --> 00:20:32,800 Și veți obține acest simbol, delta, care ne semnifica înseamnă acest lucru este un cuvânt. 426 00:20:32,800 --> 00:20:34,780 Deci, Maxwell este un cuvânt. 427 00:20:34,780 --> 00:20:38,430 Aceste delte sunt de-a lungul semnificare care lucrurile sunt cuvinte și care 428 00:20:38,430 --> 00:20:40,360 lucrurile nu sunt. 429 00:20:40,360 --> 00:20:46,400 >> Deci, în pset6, datele pe care le stocate alături de oricare dintre nodurile noastre a fost "Eu sunt un 430 00:20:46,400 --> 00:20:52,630 cuvânt. "Și cool thing despre încercări Se ele demonstrează inserție și 431 00:20:52,630 --> 00:20:55,080 căutare în O (lungime de un cuvânt). 432 00:20:55,080 --> 00:20:59,450 Deci, doar pentru a obține prin intermediul Maxwell, este M-A-X-W-E-L-L. Deci, șapte sau opt - 433 00:20:59,450 --> 00:21:00,360 Eu nu pot conta - 434 00:21:00,360 --> 00:21:03,920 pași pentru a obține în cele din urmă și verifica lucrurile. 435 00:21:03,920 --> 00:21:06,800 Punerea în aplicare atât de repede aici. 436 00:21:06,800 --> 00:21:10,230 Rob a trecut printr-o legătură Lista în postmortem lui. 437 00:21:10,230 --> 00:21:11,600 Deci, a verifica asta. 438 00:21:11,600 --> 00:21:11,720 Scuze. 439 00:21:11,720 --> 00:21:13,240 A trecut printr-un trie în post-mortem lui. 440 00:21:13,240 --> 00:21:14,260 Deci, a verifica asta. 441 00:21:14,260 --> 00:21:24,410 >> Dar aveți practic fiecare nod are 27 indicii pentru următoarele noduri și o 442 00:21:24,410 --> 00:21:27,050 Boolean de sunt eu un cuvânt. 443 00:21:27,050 --> 00:21:31,530 Check out postmortem lui Rob pentru modul în care de fapt, acest lucru este pus în aplicare. 444 00:21:31,530 --> 00:21:34,750 Structura noastră finală, arbori noastre și arbori de căutare binare. 445 00:21:34,750 --> 00:21:41,530 Deci, uita la acestea, acestea au fost acoperite cel mai recent Săptămâna 8, luni. 446 00:21:41,530 --> 00:21:46,960 Un copac este similar cu un trie, în afară de tine Nu trebuie neapărat 27 de noduri la 447 00:21:46,960 --> 00:21:47,500 fiecare punct. 448 00:21:47,500 --> 00:21:52,820 Și nu aveți aceste date la fiecare pas care semnifică dacă - 449 00:21:52,820 --> 00:21:54,030 calea nu contează. 450 00:21:54,030 --> 00:22:00,870 În timp ce un trie, calea de sus în de jos, Maxwell, a fost important pentru noi. 451 00:22:00,870 --> 00:22:05,270 >> Dar fiecare nod are mai multe copii, probabil. 452 00:22:05,270 --> 00:22:07,290 Avem ceva mai mult vocabular. 453 00:22:07,290 --> 00:22:09,530 Rădăcina copacului este la foarte de sus. 454 00:22:09,530 --> 00:22:12,520 Și spunem că cel mai de jos foarte nodurile care nu au nici 455 00:22:12,520 --> 00:22:14,530 copiii sunt frunze. 456 00:22:14,530 --> 00:22:18,040 Deci, ca un trie, un copac este o structură de noduri. 457 00:22:18,040 --> 00:22:21,490 Un tip comun de copac pe care vom pentru a vorbi despre este un arbore binar, în cazul în care 458 00:22:21,490 --> 00:22:26,040 fiecare nod nu are copii sau un copil sau doi copii. 459 00:22:26,040 --> 00:22:28,890 Deci, această imagine de aici nu este un arbore binar, deoarece 460 00:22:28,890 --> 00:22:32,890 nodul 3 are trei copii. 461 00:22:32,890 --> 00:22:38,140 >> Dar dacă ar fi să ignore cele, restul a este un arbore binar, deoarece 462 00:22:38,140 --> 00:22:43,200 demonstrează proprietatea pe care fiecare nod are zero, unu, sau doi copii. 463 00:22:43,200 --> 00:22:46,400 Deci, cum am putea exprima acest lucru în cod? 464 00:22:46,400 --> 00:22:51,460 Am putea avea un nod în care fiecare nod are un număr întreg în interiorul acestuia, precum 465 00:22:51,460 --> 00:22:55,590 ca un pointer la arborele din stânga și un pointer la copac de pe 466 00:22:55,590 --> 00:22:59,510 dreapta, astfel încât cei doi copii. 467 00:22:59,510 --> 00:23:00,880 Cum este acest lucru util? 468 00:23:00,880 --> 00:23:05,740 Ei bine, dacă am face reguli despre care am pune noduri, putem face căutarea mai repede. 469 00:23:05,740 --> 00:23:10,630 >> Deci, există un concept de o căutare binare copac, în cazul în care toate noduri 470 00:23:10,630 --> 00:23:14,420 subarbore stânga au o valoare mai mică decât nodul ne uităm la. 471 00:23:14,420 --> 00:23:17,880 Și toate nodurile de pe subarborele drept au o valoare mai mare 472 00:23:17,880 --> 00:23:18,660 decât nodul rădăcină. 473 00:23:18,660 --> 00:23:20,670 Acum, că arată ca o mulțime de cuvinte. 474 00:23:20,670 --> 00:23:23,770 Am de gând să-l pună în interiorul dublu citate și vă arăt o imagine. 475 00:23:23,770 --> 00:23:27,010 Deci, aici este un exemplu de un arbore binar de căutare. 476 00:23:27,010 --> 00:23:28,770 Vedea că vom începe cu 10. 477 00:23:28,770 --> 00:23:31,780 Totul la stânga 10 este mai mică decât aceasta. 478 00:23:31,780 --> 00:23:33,130 Și tot la dreapta este mai mare decât el. 479 00:23:33,130 --> 00:23:37,620 >> Dar mai mult decât atât, fiecare nod în copac exprimă această proprietate. 480 00:23:37,620 --> 00:23:42,110 Deci, nodul 7 are un 3 la stânga și un 9 spre dreapta. 481 00:23:42,110 --> 00:23:44,440 Deci, toate acestea sunt mai mici decât 10. 482 00:23:44,440 --> 00:23:50,470 Dar uita la doar cei, 7 are 3 pentru stângă și 9 la dreptul său. 483 00:23:50,470 --> 00:23:56,100 Și în mod similar pe dreapta, 15 a 14 pentru stângă și 50 la dreptul său. 484 00:23:56,100 --> 00:24:03,770 Deci, cele trei noduri de acolo, 15, 14, și 50, sunt, de asemenea, un arbore binar valid 485 00:24:03,770 --> 00:24:05,480 sau un arbore binar de căutare valabil. 486 00:24:05,480 --> 00:24:07,250 Și toate acestea sunt mai mari decât 10. 487 00:24:07,250 --> 00:24:08,960 Astfel încât acestea să poată fi din dreapta acolo. 488 00:24:08,960 --> 00:24:09,940 Există o întrebare? 489 00:24:09,940 --> 00:24:12,580 >> Audiența: Cum te descurci atunci când aveți două șapte? 490 00:24:12,580 --> 00:24:12,850 >> R. J. AQUINO: Da. 491 00:24:12,850 --> 00:24:16,550 Cum te descurci cu două valori că sunt la fel? 492 00:24:16,550 --> 00:24:21,465 Unii copaci de căutare binare spun că ignora duplicate, pentru că scopul este 493 00:24:21,465 --> 00:24:24,280 doar să spun, l-am văzut aceste lucruri până acum. 494 00:24:24,280 --> 00:24:28,120 Unii copaci binar de căutare ar putea spune au un număr interiorul nodului. 495 00:24:28,120 --> 00:24:32,000 Alții ar putea spune că totul a stânga este mai mică sau egală cu. 496 00:24:32,000 --> 00:24:33,470 Și tot la dreapta este mai mare. 497 00:24:33,470 --> 00:24:36,520 >> Este doar depinde de ceea ce problema este ce te rezolvarea. 498 00:24:36,520 --> 00:24:40,840 Deci, într-un dicționar, de exemplu, nu va pasa de duplicate. 499 00:24:40,840 --> 00:24:41,490 Le-ar arunca. 500 00:24:41,490 --> 00:24:44,719 Dar alte probleme s-ar putea pasa. 501 00:24:44,719 --> 00:24:49,242 >> Audiența: Este posibil să aveți o 1 la stânga 15, care 502 00:24:49,242 --> 00:24:50,590 este mai mic de 10? 503 00:24:50,590 --> 00:24:51,885 >> R. J. AQUINO: Nu. 504 00:24:51,885 --> 00:24:56,570 În cazul în care 14 aici au fost un 1, acest lucru ar nu este un arbore binar de căutare valabil, 505 00:24:56,570 --> 00:25:00,840 deoarece totul de la dreptul de 10 trebuie să fie mai mare decât aceasta. 506 00:25:00,840 --> 00:25:02,300 Și vom vedea de ce. 507 00:25:02,300 --> 00:25:07,960 În cazul în care în țara de căutare scopul meu este de pentru a găsi 14, am începe de la rădăcină. 508 00:25:07,960 --> 00:25:08,500 Așa că mă uit. 509 00:25:08,500 --> 00:25:08,710 OK. 510 00:25:08,710 --> 00:25:10,670 Vom începe de la rădăcină. 511 00:25:10,670 --> 00:25:12,500 Uită-te la 10. 512 00:25:12,500 --> 00:25:16,050 >> Ei bine, 14, tinta noastra, este mai mare decât 10. 513 00:25:16,050 --> 00:25:17,370 Așa că trebuie să fie pe dreapta. 514 00:25:17,370 --> 00:25:21,780 Acest lucru este foarte similar cu întreaga telefonul lucru pe carte am făcut, binar 515 00:25:21,780 --> 00:25:23,720 căuta acolo. 516 00:25:23,720 --> 00:25:26,430 Dar, în loc de căutare binare într-o matrice, suntem binar 517 00:25:26,430 --> 00:25:28,490 caută în acest copac. 518 00:25:28,490 --> 00:25:31,260 Deci, suntem încă în căutarea pentru 14. 519 00:25:31,260 --> 00:25:32,480 Ei bine, 14 este mai mică decât 15. 520 00:25:32,480 --> 00:25:36,430 Deci, dacă e în copac nostru, ea trebuie să să fie în acest domeniu aici. 521 00:25:36,430 --> 00:25:39,680 Acesta trebuie să fie în partea dreaptă a 10 și la stânga 15. 522 00:25:39,680 --> 00:25:42,250 >> Și astfel vom verifica acest nod. 523 00:25:42,250 --> 00:25:45,790 Și yay, am găsit 14. 524 00:25:45,790 --> 00:25:46,760 Eu nu am de gând să meargă prin ea. 525 00:25:46,760 --> 00:25:48,090 Dar aici e codul. 526 00:25:48,090 --> 00:25:49,690 Este de fapt destul de simplu, 527 00:25:49,690 --> 00:25:52,630 deoarece aceasta este recursiv. 528 00:25:52,630 --> 00:25:55,420 Ce am putea cere să faci pe un test? 529 00:25:55,420 --> 00:25:57,000 Am putea să vă întreb pentru a scrie acest cod. 530 00:25:57,000 --> 00:25:59,170 Am putea să vă cerem să se uite la acest cod și modifica acest cod și să explice ceea ce 531 00:25:59,170 --> 00:26:00,210 se face. 532 00:26:00,210 --> 00:26:00,390 Da. 533 00:26:00,390 --> 00:26:00,770 Întrebare? 534 00:26:00,770 --> 00:26:04,240 >> Audiența: Sunt aceste slide-uri va fi puse la dispoziție așa cum au fost ultima dată? 535 00:26:04,240 --> 00:26:04,740 >> R. J. AQUINO: Da. 536 00:26:04,740 --> 00:26:06,460 Deci, aceste diapozitive va siguranta fi postate. 537 00:26:06,460 --> 00:26:08,640 >> Audiența: Sunt de fapt scris chiar acum pe site-ul web. 538 00:26:08,640 --> 00:26:10,020 David tocmai a făcut asta. 539 00:26:10,020 --> 00:26:12,720 >> R. J. AQUINO: Lamelele sunt chiar acum pe site-ul web. 540 00:26:12,720 --> 00:26:16,420 Probabil ca o sa repar o pereche de typos Am observat și le rezolvați. 541 00:26:16,420 --> 00:26:19,940 Dar există un curent Versiunea pe site-ul. 542 00:26:19,940 --> 00:26:21,820 Alții lucruri pe care le-ar putea întreba ce să facă - 543 00:26:21,820 --> 00:26:23,790 scrie inserție. 544 00:26:23,790 --> 00:26:27,490 Scrie o versiune iterativ a Funcția recursive ne-am arătat 545 00:26:27,490 --> 00:26:32,520 sau vorbesc despre aceste lucruri, cum ar fi în paragrafe, în cuvinte, în propoziții. 546 00:26:32,520 --> 00:26:35,760 Compararea timpilor de funcționare și de a explica ceea ce ar dori să utilizeze un binar 547 00:26:35,760 --> 00:26:39,200 arbore căutare de loc de o hash de masă, de exemplu. 548 00:26:39,200 --> 00:26:43,580 >> Deci, să înțeleagă aceste structuri la un nivel destul de profund. 549 00:26:43,580 --> 00:26:47,440 Să înțeleagă cum să le scrie, cum să le folosesc, cum să vorbesc despre ele. 550 00:26:47,440 --> 00:26:50,270 Și veți fi setat toate. 551 00:26:50,270 --> 00:26:50,630 Întrebare? 552 00:26:50,630 --> 00:26:55,070 >> Audiența: Când sunteți scris arbore binar de căutare, cum a face tu 553 00:26:55,070 --> 00:27:01,460 determina ce valoare face ca rădăcină? 554 00:27:01,460 --> 00:27:06,120 >> R. J. AQUINO: Deci, întrebarea a fost, ceea ce Valoarea faci ca rădăcină? 555 00:27:06,120 --> 00:27:08,760 În funcție de codul dvs., poate avea o rădăcină global. 556 00:27:08,760 --> 00:27:14,290 Deci, este posibil să fi avut probabil în pset6 un tabel hash global. 557 00:27:14,290 --> 00:27:18,640 Sau s-ar putea trece la rădăcină în calitate de argument. 558 00:27:18,640 --> 00:27:23,810 Deci, această funcție de căutare aici ia un argument un nod *. 559 00:27:23,810 --> 00:27:27,420 Și astfel orice nod se întâmplă să fie uita la este cea pe care o tratează 560 00:27:27,420 --> 00:27:31,510 ca root atunci când îl trece inch 561 00:27:31,510 --> 00:27:32,320 Și eu sunt gata. 562 00:27:32,320 --> 00:27:33,480 Acestea sunt diapozitive mele. 563 00:27:33,480 --> 00:27:35,940 Următoarea persoană poate veni de swap într-un laptop și microfon. 564 00:27:35,940 --> 00:27:47,390 565 00:27:47,390 --> 00:27:49,760 >> ROB BOWDEN: Cred că s-ar putea avea interpretat această întrebare în mod diferit. 566 00:27:49,760 --> 00:27:53,826 Dar l-am interpretat ca, în cazul în care aveți numerele 1, 2, și 3, cum putem 567 00:27:53,826 --> 00:27:56,720 știu să facă 2 radacina spre deosebire de 1 sau 3? 568 00:27:56,720 --> 00:27:59,480 Dacă vom face 2 rădăcină, atunci e frumos 1 și 3 la stânga și la dreapta. 569 00:27:59,480 --> 00:28:04,610 Dar dacă 1 este radacina, atunci este 1 la sus, 2 dreapta, 3 la dreapta. 570 00:28:04,610 --> 00:28:10,880 Deci, în mod implicit, tu nu stii ce să facă rădăcină. 571 00:28:10,880 --> 00:28:15,400 Și pentru orice algoritm ne asteptam la da, chiar primul lucru pe care 572 00:28:15,400 --> 00:28:16,680 insert ar fi radacina. 573 00:28:16,680 --> 00:28:19,890 Sau ne-ar da un arbore binar care există deja că are o rădăcină. 574 00:28:19,890 --> 00:28:24,760 Dar alte algoritmi există astfel încât rădăcina va actualiza, astfel încât, dacă 575 00:28:24,760 --> 00:28:28,370 ajung în situația în care este 1, 2, 3, s-ar actualiza automat pentru a 576 00:28:28,370 --> 00:28:30,900 face 2 noua rădăcină, astfel încât este mai bine echilibrat. 577 00:28:30,900 --> 00:28:33,750 578 00:28:33,750 --> 00:28:34,833 >> ANGELA LI: cool. 579 00:28:34,833 --> 00:28:36,170 Hei, băieți. 580 00:28:36,170 --> 00:28:37,810 Eu sunt Angela. 581 00:28:37,810 --> 00:28:42,490 Și am de gând să duce la C noastră și apoi du-te în unele dintre ul nostru 582 00:28:42,490 --> 00:28:43,120 tehnologii - 583 00:28:43,120 --> 00:28:46,570 HTTP, HTML, și CSS. 584 00:28:46,570 --> 00:28:49,610 Deci, primul lucru este tampon atacuri de preaplin. 585 00:28:49,610 --> 00:28:53,070 Deci, haideți să aruncăm o privire la acest cod. 586 00:28:53,070 --> 00:28:54,260 Este destul de simplu. 587 00:28:54,260 --> 00:28:55,460 Există o foo funcție. 588 00:28:55,460 --> 00:28:56,990 Și nu se întoarce nimic. 589 00:28:56,990 --> 00:29:00,950 Dar este nevoie de un pointer la un șir numit bar. 590 00:29:00,950 --> 00:29:04,920 >> Și o să declare acest lucru tampon, care este un caracter 591 00:29:04,920 --> 00:29:07,690 matrice care are 12 sloturi. 592 00:29:07,690 --> 00:29:11,730 Și-l folosește memcpy, care este doar o funcție care copii de la o singură adresă 593 00:29:11,730 --> 00:29:12,910 într-o altă. 594 00:29:12,910 --> 00:29:19,400 Deci, aceasta este încercarea de a copia în tampon nostru de la orice 595 00:29:19,400 --> 00:29:21,140 bar indică spre. 596 00:29:21,140 --> 00:29:24,640 Deci, nici o idee despre ceea ce sa întâmplat cu acest cod? 597 00:29:24,640 --> 00:29:27,568 598 00:29:27,568 --> 00:29:30,830 >> Audiența: În cazul în care bara este mai lungă decât C, se va suprascrie. 599 00:29:30,830 --> 00:29:31,520 >> ANGELA LI: Da, exact. 600 00:29:31,520 --> 00:29:34,200 Nu avem nici o garanție că bar va fi mai mică de 12. 601 00:29:34,200 --> 00:29:36,080 Tocmai am facut un numar arbitrar de 12. 602 00:29:36,080 --> 00:29:38,380 Și noi am fost ca, să sperăm că intrare noastră de utilizator este mai mică 603 00:29:38,380 --> 00:29:40,440 12 de caractere. 604 00:29:40,440 --> 00:29:46,320 Deci, într-o lume ideală, în cazul în care de intrare nostru este întotdeauna cum era de asteptat, atunci vom ajunge 605 00:29:46,320 --> 00:29:47,550 ceva de genul, salut. 606 00:29:47,550 --> 00:29:48,920 Asta e mai puțin de 12 de caractere. 607 00:29:48,920 --> 00:29:51,870 Este citit în char c. 608 00:29:51,870 --> 00:29:53,280 Și apoi vom face ceva cu ea. 609 00:29:53,280 --> 00:29:54,800 Acesta nu contează cu adevărat. 610 00:29:54,800 --> 00:29:59,740 >> Dar o persoană rău intenționat ar putea face ceva mai mult ca aceasta, în cazul în care 611 00:29:59,740 --> 00:30:04,760 ne da orice bar este îndreptat la, se va indica la această gamă foarte mare 612 00:30:04,760 --> 00:30:06,280 de doar lui A. 613 00:30:06,280 --> 00:30:10,680 Și acest lucru este cale mai mult de 12. 614 00:30:10,680 --> 00:30:13,830 Deci, se va merge până la capăt aici pentru a în cazul în care restituirea 615 00:30:13,830 --> 00:30:15,420 Adresa folosit pentru a fi. 616 00:30:15,420 --> 00:30:17,860 Deci, haideți să spunem această funcție este numit foo. 617 00:30:17,860 --> 00:30:20,970 Poate foo a fost numit de către un alt funcție, care a fost numit de către principal. 618 00:30:20,970 --> 00:30:24,890 Deci, atunci când foo se execută, de care are nevoie să știe unde să se întoarcă la. 619 00:30:24,890 --> 00:30:29,130 >> Dacă foo a fost numit de către o funcție numită Baz, trebuie să știți că este 620 00:30:29,130 --> 00:30:30,250 Trebuie să mă întorc la Baz. 621 00:30:30,250 --> 00:30:34,040 Și asta e ceea ce această adresă de retur aici ne spune. 622 00:30:34,040 --> 00:30:38,340 Dar dacă îl suprascrie cu o altă adresa, în acest caz, aceasta este o 623 00:30:38,340 --> 00:30:42,650 reprezentare a adresa la bun început, din acest tampon, apoi 624 00:30:42,650 --> 00:30:45,240 ceea ce se întâmplă de fapt să se întâmple este că în loc de a se întoarce înapoi la Baz, 625 00:30:45,240 --> 00:30:48,470 care a solicitat funcția noastră, e doar de gând să meargă la partea din față a acestui cod. 626 00:30:48,470 --> 00:30:53,930 >> Și dacă acest lucru a fost acolo, deoarece o malware tip hacker a venit și 627 00:30:53,930 --> 00:30:56,820 injectat acest lucru, atunci poate că această sumă a lui A nu este, de fapt A lui. 628 00:30:56,820 --> 00:31:02,030 Și este de fapt doar cod care pauze calculator sau ceva dumneavoastră. 629 00:31:02,030 --> 00:31:05,930 Deci, pentru a fi defensivă cu privire la acest tip de lucru, va trebui niciodată să presupunem că 630 00:31:05,930 --> 00:31:09,120 introduse de utilizator este o anumită cantitate de caractere. 631 00:31:09,120 --> 00:31:13,310 De exemplu, atunci când făceai abecedar, vi sa spus că cuvinte au fost: 632 00:31:13,310 --> 00:31:15,580 doar de gând să fie de 40 de caractere maxim lung. 633 00:31:15,580 --> 00:31:16,570 Și că a fost bine. 634 00:31:16,570 --> 00:31:20,150 >> Dar dacă nu, atunci va trebui să asigurați-vă că pentru a citi numai în 45 635 00:31:20,150 --> 00:31:21,520 caractere la un moment dat. 636 00:31:21,520 --> 00:31:24,430 În caz contrar, s-ar putea suprascrie tampon dumneavoastră. 637 00:31:24,430 --> 00:31:26,140 Orice întrebări cu privire la acest lucru. 638 00:31:26,140 --> 00:31:26,733 Da. 639 00:31:26,733 --> 00:31:28,850 >> Audiența: Ai putea să vorbești un pic mai mult despre astea? 640 00:31:28,850 --> 00:31:29,790 >> ANGELA LI: Îmi pare rău. 641 00:31:29,790 --> 00:31:31,040 Da. 642 00:31:31,040 --> 00:31:32,813 643 00:31:32,813 --> 00:31:35,870 >> Audiența: Microfonul este doar pentru video. 644 00:31:35,870 --> 00:31:37,640 Voi încerca și de proiect. 645 00:31:37,640 --> 00:31:39,900 Bună, băieți. 646 00:31:39,900 --> 00:31:40,920 Sup? 647 00:31:40,920 --> 00:31:45,330 Deci, haideți să trecem peste câteva lucruri în Bibliotecă CS50, care ați fost utilizați 648 00:31:45,330 --> 00:31:49,072 toate semestru, cea mai mare parte pentru a obține datele introduse de utilizator. 649 00:31:49,072 --> 00:31:53,140 După cum știți, voi include CS50 bibliotecă de a face doar CS50.h, care 650 00:31:53,140 --> 00:31:55,660 conține toate prototipurile ale Funcțiile pe care le puteți folosi, cum ar fi 651 00:31:55,660 --> 00:31:58,640 GetString și getint, și GetFloat, et cetera. 652 00:31:58,640 --> 00:32:02,870 Și nu e asta o linie în CS50 bibliotecă care definește un șir de caractere, care 653 00:32:02,870 --> 00:32:05,380 voi cu toții de acum este doar un char *. 654 00:32:05,380 --> 00:32:07,900 >> Dar haideți să aruncăm o privire la cum funcționează getString. 655 00:32:07,900 --> 00:32:10,010 Aceasta este o versiune foarte prescurtată. 656 00:32:10,010 --> 00:32:15,090 Puteți trage fișierele de bibliotecă CS50 de, cred, manuals.CS50.net. 657 00:32:15,090 --> 00:32:16,750 Și puteți citi prin funcția propriu-zisă. 658 00:32:16,750 --> 00:32:19,330 Dar aceasta se referă la unele dintre părți importante. 659 00:32:19,330 --> 00:32:23,870 Așa că am creat ceva tampon cu o anumită capacitate. 660 00:32:23,870 --> 00:32:27,570 Și ceea ce facem este vom lua un caracter într-un moment din n standard. 661 00:32:27,570 --> 00:32:30,910 Asta în cazul în care utilizatorul le introduce text în consolă. 662 00:32:30,910 --> 00:32:33,430 >> Și astfel vom citi într-un caracter atât timp cât nu este un nou 663 00:32:33,430 --> 00:32:37,220 linie și nu este capăt de fișier, care este sfârșitul de intrare standard. 664 00:32:37,220 --> 00:32:45,690 Și pentru fiecare personaj pe care am citit în, în cazul în care personajul se termină adăugarea 665 00:32:45,690 --> 00:32:50,120 la numărul de caractere care le-am citit în și că este mai mult decât capacitatea noastră, 666 00:32:50,120 --> 00:32:53,490 atunci ceea ce facem este ne-am redimensiona nostru tampon, astfel că este de două ori mai mult timp. 667 00:32:53,490 --> 00:32:56,950 Din nou, aceasta protejează împotriva tampon atacuri de preaplin, pentru că ai citit în 668 00:32:56,950 --> 00:32:58,315 un caracter la un moment dat. 669 00:32:58,315 --> 00:33:02,290 Și dacă în orice moment ai citit prea multe, doar vă extindeți tampon ta. 670 00:33:02,290 --> 00:33:03,330 Ai înmulțește cu doi. 671 00:33:03,330 --> 00:33:05,510 Și apoi aveți mai mult spațiu. 672 00:33:05,510 --> 00:33:09,120 >> În caz contrar, doar adăugați un caracter de tampon. 673 00:33:09,120 --> 00:33:15,080 Și, după ce ați citit în toate caractere, se va micșora tampon 674 00:33:15,080 --> 00:33:18,510 înapoi la dimensiunea normală, se adaugă o terminator nul, și apoi să se întoarcă. 675 00:33:18,510 --> 00:33:21,880 676 00:33:21,880 --> 00:33:24,960 Acum, să ne uităm la getint. 677 00:33:24,960 --> 00:33:27,700 Poate voi citi asta? 678 00:33:27,700 --> 00:33:30,710 Eu pot mări un pic. 679 00:33:30,710 --> 00:33:33,410 680 00:33:33,410 --> 00:33:34,660 Nu știu cum funcționează calculatoarele. 681 00:33:34,660 --> 00:33:40,840 682 00:33:40,840 --> 00:33:41,270 Nu face nimic. 683 00:33:41,270 --> 00:33:42,520 Eu nu pot mări în mod corespunzător. 684 00:33:42,520 --> 00:33:47,500 685 00:33:47,500 --> 00:33:48,770 >> Acest lucru este foarte greu. 686 00:33:48,770 --> 00:33:49,180 Îmi pare rău. 687 00:33:49,180 --> 00:33:51,490 Să se uite la asta. 688 00:33:51,490 --> 00:33:57,140 Deci, ce getint nu este citește primul într-un șir de getString, care 689 00:33:57,140 --> 00:33:59,250 am implementat înainte. 690 00:33:59,250 --> 00:34:02,945 Și o parte importantă de reținut aici este în cazul în care această împărțire care se termină în sus 691 00:34:02,945 --> 00:34:06,400 lectură este ca nu este de fapt un șir de caractere, apoi ne-am întoarce la INT_MAX 692 00:34:06,400 --> 00:34:09,409 reprezintă eșec. 693 00:34:09,409 --> 00:34:12,645 De ce nu ne întoarcem INT_MAX loc de negativ 1 sau 1? 694 00:34:12,645 --> 00:34:13,895 Orice idei? 695 00:34:13,895 --> 00:34:16,853 696 00:34:16,853 --> 00:34:19,350 >> Audiența: [inaudibil] negativă 1 pe o. 697 00:34:19,350 --> 00:34:20,070 >> ANGELA LI: Da, exact. 698 00:34:20,070 --> 00:34:24,560 Deci, tu esti mult mai probabil sa vreau doar la intrare 1 sau negativ 1 când vi se solicită 699 00:34:24,560 --> 00:34:27,469 pentru un n-lea și orice maxes n-lea. 700 00:34:27,469 --> 00:34:27,969 Este imens. 701 00:34:27,969 --> 00:34:29,690 Esti, probabil, nu o să-l folosească. 702 00:34:29,690 --> 00:34:32,690 Deci, aceasta este ca o decizie de design pentru asigurați-vă că nu accidental 703 00:34:32,690 --> 00:34:38,540 returna o eroare sau nu te întoarce 1, care poate fi analizat 704 00:34:38,540 --> 00:34:41,199 ca un răspuns corect. 705 00:34:41,199 --> 00:34:45,110 Deci, dacă o linie nu există, ne întoarcem INT-MAX. 706 00:34:45,110 --> 00:34:48,090 În caz contrar, vom folosi sscanf, care este ca scanf. 707 00:34:48,090 --> 00:34:49,449 Dar se citește dintr-un șir. 708 00:34:49,449 --> 00:34:54,310 >> Și avem această formatat string, care este de% i% c. 709 00:34:54,310 --> 00:34:57,440 Și vom încerca și se potrivesc, care cu indiferent de utilizator ne-a dat. 710 00:34:57,440 --> 00:35:01,420 Vrem numărul de lucruri potrivite să fie 1, ceea ce înseamnă că numai 711 00:35:01,420 --> 00:35:04,940 într-adevăr doriți pentru a se potrivi un număr întreg înconjurat de alb poate 712 00:35:04,940 --> 00:35:06,840 spațiu, poate nu. 713 00:35:06,840 --> 00:35:10,710 În acest caz, dacă ai pus în ceva cum ar fi bar, nu se potrivește deloc, 714 00:35:10,710 --> 00:35:14,400 pentru că nu trebuie să fie un număr întreg de la început. 715 00:35:14,400 --> 00:35:17,060 Deci, nu sscan transformat 0. 716 00:35:17,060 --> 00:35:19,640 Astfel încât să nu se întoarcă asta. 717 00:35:19,640 --> 00:35:23,850 >> Alternativ, dacă ai pus în ceva cum ar fi 1, 2, 3, A, B, C, care meciuri 718 00:35:23,850 --> 00:35:27,180 atât numărul întreg, dar, de asemenea, caracterul după ea. 719 00:35:27,180 --> 00:35:29,990 Deci sscanf va reveni 2, care Este, de asemenea, nu este ideal. 720 00:35:29,990 --> 00:35:34,620 Tu nu vrei 1, 2, 3, A, B, C, pentru a fi un int valid. 721 00:35:34,620 --> 00:35:36,990 Astfel că, de asemenea, nu funcționează. 722 00:35:36,990 --> 00:35:38,530 Dar spune-ai pus în ceva de genul 50. 723 00:35:38,530 --> 00:35:42,460 Care se va potrivi% i, ceea ce înseamnă acesta va primi citi în n. 724 00:35:42,460 --> 00:35:44,790 Și acum, n va conține numărul 50. 725 00:35:44,790 --> 00:35:46,110 Și atunci îl poți returna. 726 00:35:46,110 --> 00:35:49,270 >> În caz contrar, te-a lovit încercați din nou. 727 00:35:49,270 --> 00:35:55,790 Și apoi se merge doar peste din nou până veți obține o intrare corespunzătoare din partea utilizatorului. 728 00:35:55,790 --> 00:35:56,891 Orice întrebări cu privire la asta? 729 00:35:56,891 --> 00:36:02,182 >> Audiența: Deci, dacă ați fost de a imprima valoarea getint pe [inaudibil] 730 00:36:02,182 --> 00:36:06,250 ar fi doar întreg și Max? 731 00:36:06,250 --> 00:36:07,440 >> ANGELA LI: Da. 732 00:36:07,440 --> 00:36:11,780 Deci, dacă utilizați getint, ar trebui să-și asume că tu nu vrei să n-lea max 733 00:36:11,780 --> 00:36:15,328 este o intrare validă, pentru că ai de gând să presupunem că a fost rău. 734 00:36:15,328 --> 00:36:27,740 >> Audiența: Dacă nu am avea char c și cineva a pus în 1, 2, 3, Sam, ar fi 735 00:36:27,740 --> 00:36:29,430 încă de lucru de 1, 2, 3? 736 00:36:29,430 --> 00:36:29,750 >> ANGELA LI: Cred că ar funcționa. 737 00:36:29,750 --> 00:36:33,340 Dar tu nu vrei să 123Sam fie o intrare valabilă de către un utilizator. 738 00:36:33,340 --> 00:36:34,670 Asta nu e chiar un int. 739 00:36:34,670 --> 00:36:36,840 Deci, nu pare corect pentru a analiza ca un întreg. 740 00:36:36,840 --> 00:36:40,910 741 00:36:40,910 --> 00:36:42,160 OK. 742 00:36:42,160 --> 00:36:45,800 În acest caz, hai mutarea lui pe internet. 743 00:36:45,800 --> 00:36:49,120 Deci, HTTP, nu este un limbaj. 744 00:36:49,120 --> 00:36:56,060 HTTP este doar un set de standarde pentru cum ai trimite lucruri de la clienti, 745 00:36:56,060 --> 00:36:57,280 că tu, la servere. 746 00:36:57,280 --> 00:36:59,730 Asta-i de alte persoane de pe web. 747 00:36:59,730 --> 00:37:02,900 >> Deci, HTTP standuri pentru Hypertext Transfer Protocol. 748 00:37:02,900 --> 00:37:04,610 Este inima și sufletul din întregul Web. 749 00:37:04,610 --> 00:37:07,050 Partea hipertext doar se referă la HTML. 750 00:37:07,050 --> 00:37:10,690 Transferul este clienti, cum ar fi va trimite cererea de 751 00:37:10,690 --> 00:37:13,060 servere, care dau răspunsuri. 752 00:37:13,060 --> 00:37:16,380 Iar protocolul este doar, cum vă așteptați un server pentru a se comporta? 753 00:37:16,380 --> 00:37:19,960 Și modul în care sunt trebuia să se comporte astfel încât să puteți eficientiza acest 754 00:37:19,960 --> 00:37:21,920 proces de comunicare? 755 00:37:21,920 --> 00:37:26,650 >> Deci, cereri HTTP arata foarte mult ca aceasta. 756 00:37:26,650 --> 00:37:28,070 GET este tipul de cerere. 757 00:37:28,070 --> 00:37:31,220 Ați văzut cererile GET și cereri POST. 758 00:37:31,220 --> 00:37:36,690 Că al doilea lucru acolo, / ma, asta e doar URI sau URL-ul de unde 759 00:37:36,690 --> 00:37:38,140 vreau să merg în gazdă. 760 00:37:38,140 --> 00:37:44,140 Deci, această cerere se cere pagină, cum ar fi www.facebook.com / mine. 761 00:37:44,140 --> 00:37:45,300 Și este o cerere GET. 762 00:37:45,300 --> 00:37:51,020 Și atunci acest HTTP/1.1, asta e doar versiunea de HTTP pe care îl utilizați. 763 00:37:51,020 --> 00:37:55,020 Este aproape întotdeauna 1.1. 764 00:37:55,020 --> 00:37:56,880 >> Și apoi există o grămadă de alte lucruri prea. 765 00:37:56,880 --> 00:38:02,510 Puteți vedea de fapt, aceste dacă deschide consola ta atunci când sunteți 766 00:38:02,510 --> 00:38:03,770 navigarea pe Web. 767 00:38:03,770 --> 00:38:07,290 Răspunsurile uite ceva mai mult ca aceasta. 768 00:38:07,290 --> 00:38:09,620 Partea de sus este, din nou, tip de HTTP pe care îl utilizați 769 00:38:09,620 --> 00:38:12,310 urmat de un cod de stare. 770 00:38:12,310 --> 00:38:14,700 Deci, 200 OK este totul rezolvat. 771 00:38:14,700 --> 00:38:16,200 Aici este dvs. de conținut. 772 00:38:16,200 --> 00:38:17,390 Conținutul dvs. este de gând să urmeze. 773 00:38:17,390 --> 00:38:21,730 Și atunci se va spune ce fel de conținut și alte chestii. 774 00:38:21,730 --> 00:38:24,620 >> Codurile de stare, există câteva cele importante pe care ar trebui să știi. 775 00:38:24,620 --> 00:38:26,460 200 OK este ca totul e de aur. 776 00:38:26,460 --> 00:38:28,490 Totul funcționează. 777 00:38:28,490 --> 00:38:29,710 403 Forbidden. 778 00:38:29,710 --> 00:38:32,910 Acest lucru le-ați văzut, probabil, dacă ați uitat la chmod ceva corect. 779 00:38:32,910 --> 00:38:34,510 Aceasta înseamnă că nu aveți permisiunile corecte la 780 00:38:34,510 --> 00:38:36,210 accesa pe server. 781 00:38:36,210 --> 00:38:38,110 E ca si cum, nu, tu nu-l vedea. 782 00:38:38,110 --> 00:38:39,780 404 înseamnă că ceva nu există. 783 00:38:39,780 --> 00:38:40,400 Nu a fost găsit. 784 00:38:40,400 --> 00:38:41,640 Ați văzut, probabil că o mulțime. 785 00:38:41,640 --> 00:38:45,510 >> 500 Internal Server Error este, de obicei, ca ceva a mers prost pe partea de 786 00:38:45,510 --> 00:38:46,460 a serverului. 787 00:38:46,460 --> 00:38:50,830 Deci, atunci când au fost de punere în aplicare pset7, dacă ați avut erori PHP, ai putea 788 00:38:50,830 --> 00:38:53,890 de fapt, du-te la pagina și să vedem o grămadă de PHP eroare lucruri. 789 00:38:53,890 --> 00:38:56,900 Dar asta nu se întâmplă în mod normal, deoarece site-uri nu doresc cu adevărat să 790 00:38:56,900 --> 00:38:58,830 să vă spun de ce site-ul lor este rupt. 791 00:38:58,830 --> 00:39:03,370 Ei vor reveni, probabil, doar o 500 Eroare internă la server. 792 00:39:03,370 --> 00:39:06,120 >> Și apoi există 418 Sunt un ceainic. 793 00:39:06,120 --> 00:39:07,910 Există o întreagă poveste despre de ce asta e un lucru. 794 00:39:07,910 --> 00:39:09,860 Dar puteți citi despre asta pe cont propriu timp. 795 00:39:09,860 --> 00:39:11,450 Există o grămadă de alte coduri de stare prea. 796 00:39:11,450 --> 00:39:12,700 Dar acestea sunt cele ar trebui să știi. 797 00:39:12,700 --> 00:39:15,660 798 00:39:15,660 --> 00:39:18,610 Deci, hai sa vorbim despre HTML. 799 00:39:18,610 --> 00:39:22,180 HTML, amintiți-vă, nu este o limbaj de programare. 800 00:39:22,180 --> 00:39:23,510 Este un limbaj de marcare. 801 00:39:23,510 --> 00:39:25,210 Asta înseamnă că descrie conținut. 802 00:39:25,210 --> 00:39:30,440 Aceasta vă spune ce un document HTML arată cum ar fi sau nu e ceea ce pare 803 00:39:30,440 --> 00:39:32,230 dar modul în care este structurat. 804 00:39:32,230 --> 00:39:36,110 >> Deci, se definește o structură și semantica de pagini web. 805 00:39:36,110 --> 00:39:37,830 E ca si cum, acesta este un paragraf. 806 00:39:37,830 --> 00:39:40,060 Aceasta este o lista ordonata. 807 00:39:40,060 --> 00:39:42,360 Aceasta este ca o secțiune a paginii mele. 808 00:39:42,360 --> 00:39:43,260 Aici e titlul. 809 00:39:43,260 --> 00:39:44,310 Se face chestii de genul asta. 810 00:39:44,310 --> 00:39:48,770 Nu stilul nici acestea, datorită asta e ceea ce faci în CSS. 811 00:39:48,770 --> 00:39:50,270 Si se pare ca o serie tag-uri de imbricate. 812 00:39:50,270 --> 00:39:54,720 Deci, pentru a folosi un exemplu de adevărat de bază Pagina HTML, aveți DOCTYPE 813 00:39:54,720 --> 00:39:56,720 declarație acolo. 814 00:39:56,720 --> 00:40:00,940 >> Această declarație DOCTYPE este spunând, suntem folosind HTML5. 815 00:40:00,940 --> 00:40:03,370 Apoi, aveți tag-ul HTML mare. 816 00:40:03,370 --> 00:40:05,230 Acesta conține un cap și un corp. 817 00:40:05,230 --> 00:40:06,970 În interiorul capului, aveți titlul. 818 00:40:06,970 --> 00:40:12,950 Asta e ceea ce se întâmplă în titlu bara de browser-ul dumneavoastră. 819 00:40:12,950 --> 00:40:15,810 Avem o etichetă de legătură care leagă într-o foaie de stil extern. 820 00:40:15,810 --> 00:40:19,880 Și atunci avem un script care trage dintr-un JavaScript din exterior. 821 00:40:19,880 --> 00:40:23,750 >> Și apoi în corpul nostru este de fapt ceea ce se afișat pe pagina. 822 00:40:23,750 --> 00:40:28,210 Avem un paragraf și apoi o imagine în respectivul alineat. 823 00:40:28,210 --> 00:40:32,000 Aceasta este o imagine de pisoi. 824 00:40:32,000 --> 00:40:35,840 Observați că imaginea tag-ul se închide. 825 00:40:35,840 --> 00:40:41,760 Deci, în loc de deschidere cu o imagine și apoi a face un alt / imagine, vă 826 00:40:41,760 --> 00:40:47,500 doar acest mic slash aici, care se închide. 827 00:40:47,500 --> 00:40:53,670 Și tag-ul imagine are, de asemenea, această tastă atribut valoare numit decolare. 828 00:40:53,670 --> 00:40:56,970 Acesta este textul alternativ care se întâmplă atunci când treceți peste el. 829 00:40:56,970 --> 00:41:03,170 >> Cele mai multe elemente HTML au o valoare cheie lucruri pe care puteți să-l da, diverse 830 00:41:03,170 --> 00:41:04,420 personalizare. 831 00:41:04,420 --> 00:41:06,230 832 00:41:06,230 --> 00:41:08,705 Da. 833 00:41:08,705 --> 00:41:09,955 >> Audiența: [inaudibil]. 834 00:41:09,955 --> 00:41:17,510 835 00:41:17,510 --> 00:41:19,680 >> ANGELA LI: Ei bine, asa ca este o atribut al tag-ul. 836 00:41:19,680 --> 00:41:25,320 Deci, dacă ați fost utilizați jQuery, ai putea selectați image.getAttribute. 837 00:41:25,320 --> 00:41:27,930 Și apoi puteți căuta obține atributul alt. 838 00:41:27,930 --> 00:41:31,040 Și aceasta vă va da pisoi. 839 00:41:31,040 --> 00:41:37,400 Dacă vă amintiți forme în HTML, de intrare elemente vor avea atribute de nume. 840 00:41:37,400 --> 00:41:41,870 Și asta e ceea ce foloseste PHP pentru a trimite cereri atunci când este prezentat un formular. 841 00:41:41,870 --> 00:41:44,762 842 00:41:44,762 --> 00:41:50,064 >> Audiența: Ai menționat ceva despre cum dacă utilizați kittens.jpg sau 843 00:41:50,064 --> 00:41:54,410 ceva care are lipsea foldere sau alte fișiere dosar? 844 00:41:54,410 --> 00:41:54,750 >> ANGELA LI: Da. 845 00:41:54,750 --> 00:41:57,010 Deci, aceasta este ceea ce se numește o rudă cale, pentru că eu nu dau 846 00:41:57,010 --> 00:41:58,740 vă calea completă. 847 00:41:58,740 --> 00:42:05,160 Acest lucru este ca atunci când în C, dacă faci fopen un fisier, daca hi.txt fopen, care 848 00:42:05,160 --> 00:42:09,190 hi.txt este de așteptat să fie în aceeași director, dacă nu-l dau o mai 849 00:42:09,190 --> 00:42:11,530 cale complex. 850 00:42:11,530 --> 00:42:14,900 >> Audiența: Deci, ai putea preciza care dosarul [inaudibil]? 851 00:42:14,900 --> 00:42:17,660 >> ANGELA LI: Da. 852 00:42:17,660 --> 00:42:19,370 Si poti sa te uiti la cum să faci asta. 853 00:42:19,370 --> 00:42:23,480 Dar dacă aș fi vrut să se kittens.jpg afară din directorul părinte, mi-ar face 854 00:42:23,480 --> 00:42:24,730 .. / Kittens.jpg. 855 00:42:24,730 --> 00:42:29,680 856 00:42:29,680 --> 00:42:30,930 Da. 857 00:42:30,930 --> 00:42:32,960 858 00:42:32,960 --> 00:42:33,760 Scuze. 859 00:42:33,760 --> 00:42:34,045 Da. 860 00:42:34,045 --> 00:42:35,700 Oh, omule, am uitat întrebarea. 861 00:42:35,700 --> 00:42:36,460 Care a fost problema? 862 00:42:36,460 --> 00:42:39,570 Oh, întrebarea a fost este, kittens.jpg de așteptat să fie în același director? 863 00:42:39,570 --> 00:42:40,630 Și în acest caz, ea este. 864 00:42:40,630 --> 00:42:44,030 Dar puteți, de asemenea, da-l un anumit traseu astfel încât nu trebuie să fie. 865 00:42:44,030 --> 00:42:47,100 866 00:42:47,100 --> 00:42:48,350 Bun? 867 00:42:48,350 --> 00:42:50,190 868 00:42:50,190 --> 00:42:51,350 >> CSS. 869 00:42:51,350 --> 00:42:55,420 Deci, CSS, cum ar fi HTML, nu este un limbaj de programare. 870 00:42:55,420 --> 00:42:58,250 CSS este doar o serie de reguli de stil. 871 00:42:58,250 --> 00:43:00,130 Ea vine de la Cascading Style Sheets. 872 00:43:00,130 --> 00:43:03,910 Și să-l utilizați în combinație cu HTML pentru paginile de stil. 873 00:43:03,910 --> 00:43:08,140 Deci, există trei moduri puteți să-l includă. 874 00:43:08,140 --> 00:43:11,950 Un fel puteți face acest lucru este în capul parte a codului HTML, puteți doar 875 00:43:11,950 --> 00:43:15,410 deschide o etichetă stil și apoi stick- unele CSS reguli acolo. 876 00:43:15,410 --> 00:43:16,759 E destul de bine. 877 00:43:16,759 --> 00:43:17,228 Da. 878 00:43:17,228 --> 00:43:21,449 >> Audiența: Ai putea pune pe cei tag-uri stil în între, să 879 00:43:21,449 --> 00:43:22,860 să zicem, corp și / corp. 880 00:43:22,860 --> 00:43:27,400 Și atunci v-ar fi de styling numai în corp. 881 00:43:27,400 --> 00:43:28,840 >> ANGELA LI: Ai putea. 882 00:43:28,840 --> 00:43:29,590 O să meargă. 883 00:43:29,590 --> 00:43:33,990 Dar nu ar trebui, pentru că stilul este un fel de a metadatelor care ar trebui să meargă în 884 00:43:33,990 --> 00:43:35,890 capul documentului. 885 00:43:35,890 --> 00:43:38,280 Organism ar trebui într-adevăr să conțină numai ce se intampla de fapt la 886 00:43:38,280 --> 00:43:39,420 arata pe pagina dvs.. 887 00:43:39,420 --> 00:43:42,155 >> Audiența: Deci, te-ai pus stil in capul tau de stil 888 00:43:42,155 --> 00:43:43,930 întreaga pagină web, corect? 889 00:43:43,930 --> 00:43:44,300 >> ANGELA LI: Da. 890 00:43:44,300 --> 00:43:50,470 Astfel încât punerea stil aici, aceste reguli CSS se va aplica la întreaga pagină pe baza 891 00:43:50,470 --> 00:43:52,100 selectoare lor. 892 00:43:52,100 --> 00:43:57,090 Deci, cel mai bun mod de a face acest lucru este în schimb de a avea o etichetă stil in capul tau, 893 00:43:57,090 --> 00:44:00,430 aveți această legătură într-un stil extern foaie ca și cum ți-am arătat în 894 00:44:00,430 --> 00:44:01,980 exemplu anterior. 895 00:44:01,980 --> 00:44:05,920 Ce este acest lucru nu-l încearcă și găsește fișier style.css și apoi trage-l 896 00:44:05,920 --> 00:44:08,470 in și utilizează ca, stiluri pentru pagina. 897 00:44:08,470 --> 00:44:10,500 Și style.css dumneavoastră ar doar uita-te ca acest lucru. 898 00:44:10,500 --> 00:44:13,330 Ar fi doar o grămadă de CSS. 899 00:44:13,330 --> 00:44:16,210 >> Și, în sfârșit, există un alt fel pot include CSS, care într-adevăr 900 00:44:16,210 --> 00:44:17,480 nu ar trebui să facă niciodată. 901 00:44:17,480 --> 00:44:18,950 Este stilul inline apel. 902 00:44:18,950 --> 00:44:22,650 Și astfel orice element HTML poate, de asemenea, ia un atribut de stil. 903 00:44:22,650 --> 00:44:26,320 Și apoi, în acest atribut de stil, vă pot da reguli CSS. 904 00:44:26,320 --> 00:44:29,140 Deci, în acest caz, orice div sunt definirea chiar aici, o să 905 00:44:29,140 --> 00:44:32,580 au un fundal negru și o culoare text alb. 906 00:44:32,580 --> 00:44:35,620 Dar tu nu ar trebui să facă acest lucru, pentru că ceea ce acest lucru nu este o pune stilul dvs. 907 00:44:35,620 --> 00:44:36,850 în interiorul HTML dumneavoastră. 908 00:44:36,850 --> 00:44:40,530 >> Și știu că am vorbit despre HTML este structura și CSS este stilul. 909 00:44:40,530 --> 00:44:42,790 Dacă faceți acest lucru, se amesteca le împreună. 910 00:44:42,790 --> 00:44:44,550 Și nu e foarte curat. 911 00:44:44,550 --> 00:44:45,800 Deci, nu face asta. 912 00:44:45,800 --> 00:44:47,690 913 00:44:47,690 --> 00:44:52,100 Folosind un exemplu de CSS, acolo sus, ne-am selectați doar corpul HTML 914 00:44:52,100 --> 00:44:52,380 documentar. 915 00:44:52,380 --> 00:44:55,110 Și suntem ca, totul e O să fie Comic Sans. 916 00:44:55,110 --> 00:44:57,290 De asemenea, nu recomandăm. 917 00:44:57,290 --> 00:44:59,940 Dar ai putea face asta. 918 00:44:59,940 --> 00:45:03,140 >> A doua regulă aici, se va pentru a selecta elementul pe 919 00:45:03,140 --> 00:45:04,880 Pagina cu ID-ul principal. 920 00:45:04,880 --> 00:45:11,690 Deci, orice element de HTML, i-am spus de identitate = Principal, am de gând să dea ca un 921 00:45:11,690 --> 00:45:16,020 Marja de 20-pixel și alinia totul, tot textul, la centru. 922 00:45:16,020 --> 00:45:19,030 Ultimul lucru pe care selectează prin clasa CSS. 923 00:45:19,030 --> 00:45:24,450 Astfel încât orice element de pe pagina pe care i-am dat o clasa secțiune, am de gând să-l facă 924 00:45:24,450 --> 00:45:26,602 o culoare de fundal de culoare albastru deschis. 925 00:45:26,602 --> 00:45:29,380 926 00:45:29,380 --> 00:45:30,040 Da. 927 00:45:30,040 --> 00:45:30,700 Asta e tot ce am. 928 00:45:30,700 --> 00:45:30,890 Întrebare? 929 00:45:30,890 --> 00:45:34,020 >> Audiența: Ce face hashtag înainte principal face? 930 00:45:34,020 --> 00:45:36,310 >> ANGELA LI: Întrebarea este, ce face hashtag înainte do principal? 931 00:45:36,310 --> 00:45:40,770 În acest caz, hash în CSS înseamnă selectați de identitate. 932 00:45:40,770 --> 00:45:47,490 Deci, dacă am avut un element HTML, cum ar fi divid = principale, aceasta CSS selectează reguli 933 00:45:47,490 --> 00:45:49,260 lucrul cu ID-ul principal. 934 00:45:49,260 --> 00:45:53,940 Și în mod similar, termenul în fața secțiune este selectați de clasă CSS sau 935 00:45:53,940 --> 00:45:56,558 selectați de clasă HTML. 936 00:45:56,558 --> 00:46:00,940 >> Audiența: De ce este acolo o are înainte 6 în culoare de fundal? 937 00:46:00,940 --> 00:46:01,270 >> ANGELA LI: Da. 938 00:46:01,270 --> 00:46:03,360 Deci, întrebarea este, de ce este acolo un hash înainte de 6? 939 00:46:03,360 --> 00:46:05,320 Acest lucru este diferit de cel hash. 940 00:46:05,320 --> 00:46:09,500 Acest lucru înseamnă că dai o culoare hexazecimal. 941 00:46:09,500 --> 00:46:14,260 Culori, astfel încât hex, aceasta doar reprezintă o culoare. 942 00:46:14,260 --> 00:46:17,860 Și vă amintiți triplete RGB, atunci când ai facut PSET criminalistica? 943 00:46:17,860 --> 00:46:18,770 Acest lucru este similar. 944 00:46:18,770 --> 00:46:21,590 Primele două cifre reprezintă cât de mult roșu este în culoarea. 945 00:46:21,590 --> 00:46:23,260 Cea de a doua doi reprezintă cât de mult verde. 946 00:46:23,260 --> 00:46:25,450 Iar al treilea reprezintă cât de mult albastru. 947 00:46:25,450 --> 00:46:30,060 Și hash este acest lucru se întâmplă să reprezinte o culoare. 948 00:46:30,060 --> 00:46:35,660 >> Deci, nimic de la 0, 0, 0, 0, 0, 0 până la F, F, F, F, F, F este valabil. 949 00:46:35,660 --> 00:46:39,550 Este ceva culoare valabil, care poate fi afișată de browser-ul dumneavoastră. 950 00:46:39,550 --> 00:46:39,790 Întrebare? 951 00:46:39,790 --> 00:46:43,590 >> Audienta: Care este diferența dintre utilizarea de ID-ul și de clasă? 952 00:46:43,590 --> 00:46:46,470 >> ANGELA LI: Întrebarea este ce este diferența dintre 953 00:46:46,470 --> 00:46:48,950 utilizarea de ID-ul și de clasă? 954 00:46:48,950 --> 00:46:54,390 Puteți avea doar un element într-un Document HTML care are o anumită identitate. 955 00:46:54,390 --> 00:46:58,660 Deci, doar un singur lucru pe pagina mea este permis să aibă principal de identitate. 956 00:46:58,660 --> 00:47:02,580 Astfel încât să-l utilizați pentru acest lucru este antetul. 957 00:47:02,580 --> 00:47:03,850 Aceasta este de navigare. 958 00:47:03,850 --> 00:47:05,230 Aceasta este subsol. 959 00:47:05,230 --> 00:47:09,070 Clasele sunt diferite, pentru că puteți se aplică clasele în cât mai multe elemente HTML 960 00:47:09,070 --> 00:47:10,100 , după cum doriți. 961 00:47:10,100 --> 00:47:15,860 >> Deci, de exemplu, am făcut-o secțiune de clasă, pentru că nu e, probabil, mai mult de un 962 00:47:15,860 --> 00:47:17,540 de la pagina mea. 963 00:47:17,540 --> 00:47:20,200 Esti doar permis să aibă cât mai multe elemente de pe pagina cu aceeași 964 00:47:20,200 --> 00:47:23,190 Clasa ci doar una cu un anumit ID. 965 00:47:23,190 --> 00:47:25,600 >> Audiența: Deci, punct reprezintă clasa? 966 00:47:25,600 --> 00:47:26,090 >> ANGELA LI: Da. 967 00:47:26,090 --> 00:47:27,380 Un punct reprezintă o clasă. 968 00:47:27,380 --> 00:47:29,990 969 00:47:29,990 --> 00:47:31,540 Rece. 970 00:47:31,540 --> 00:47:32,370 Asta e tot ce am, băieți. 971 00:47:32,370 --> 00:47:33,544 Mulțumesc. 972 00:47:33,544 --> 00:48:13,380 >> [Aplauze] 973 00:48:13,380 --> 00:48:14,290 >> ZAMYLA CHAN: Salut, toată lumea. 974 00:48:14,290 --> 00:48:14,880 Sunt Zamyla. 975 00:48:14,880 --> 00:48:18,830 Am de gând să se acoperă PHP, MVC, și SQL astăzi. 976 00:48:18,830 --> 00:48:22,350 977 00:48:22,350 --> 00:48:26,110 O mulțime de materialul pe care voi fi de acoperire va fi destul de mult 978 00:48:26,110 --> 00:48:29,100 chiar din pset7. 979 00:48:29,100 --> 00:48:29,700 Bine. 980 00:48:29,700 --> 00:48:31,180 Deci, ce este PHP? 981 00:48:31,180 --> 00:48:35,150 PHP standuri pentru PHP Hypertext Preprocesor. 982 00:48:35,150 --> 00:48:38,740 Deci, în sine, este un recursiv nume, care este destul de rece. 983 00:48:38,740 --> 00:48:42,220 PHP este un limbaj de scripting server-side, și oferă backend 984 00:48:42,220 --> 00:48:44,610 și bazelor logice de site-ul nostru. 985 00:48:44,610 --> 00:48:48,520 >> Deci, Angela a vorbit foarte mult despre HTML și CSS care va face structura 986 00:48:48,520 --> 00:48:49,530 a site-ului. 987 00:48:49,530 --> 00:48:53,210 Dar ce se întâmplă dacă doriți să modificați că conținut dinamic sau în cazul în care variază 988 00:48:53,210 --> 00:48:55,240 pe baza utilizatorului sau anumite condiții? 989 00:48:55,240 --> 00:48:57,060 Asta în cazul în PHP vine inch 990 00:48:57,060 --> 00:49:02,610 Acum, de obicei, PHP ar putea dura câteva mai puține linii pentru a pune în aplicare același lucru 991 00:49:02,610 --> 00:49:07,380 in C. Asta pentru ca PHP se ocupă de memorie management pentru programator, 992 00:49:07,380 --> 00:49:11,170 spre deosebire de noi care au la malloc liber, lucruri de genul asta. 993 00:49:11,170 --> 00:49:15,430 >> Dar din moment ce PHP este o interpretare limba, de obicei, s-ar putea executa 994 00:49:15,430 --> 00:49:19,540 un pic mai lent decât C, care este un limbaj compilat. 995 00:49:19,540 --> 00:49:23,150 Pentru că suntem în mișcare de programare limbi, să ne uităm la modul în care 996 00:49:23,150 --> 00:49:24,570 sintaxă va diferi. 997 00:49:24,570 --> 00:49:28,770 Să fim foarte atenți să nu se confunda cu aceasta. 998 00:49:28,770 --> 00:49:33,750 Deci, cu sintaxa PHP, dacă sunteți integrarea PHP în interiorul unei pagini HTML 999 00:49:33,750 --> 00:49:40,430 fișier sau într-un fișier php. în sine, te trebuie să includeți codul în aer liber 1000 00:49:40,430 --> 00:49:45,270 PHP și tag-uri PHP închise, cum ar fi urmează, ca și pe ecran. 1001 00:49:45,270 --> 00:49:46,660 >> Variabile în PHP. 1002 00:49:46,660 --> 00:49:51,490 Fiecare variabilă va începe cu semnul $ urmat de numele 1003 00:49:51,490 --> 00:49:53,150 variabila dumneavoastră. 1004 00:49:53,150 --> 00:49:56,530 Acum, variabile în PHP sunt liber tipizat, ceea ce înseamnă că nu aveți nevoie de 1005 00:49:56,530 --> 00:50:00,030 pentru a indica ce tip de date este atunci când sunteți o declara. 1006 00:50:00,030 --> 00:50:03,505 Cu toate acestea, acest lucru nu înseamnă că ele nu au nici un tip, la toate. 1007 00:50:03,505 --> 00:50:09,370 Deci, dacă am declara o variabilă și doar setat l egal cu 1, și apoi declar 1008 00:50:09,370 --> 00:50:15,140 o alta variabila, setați egal cu "1", și apoi un altul de 1,0, ei bine, 1009 00:50:15,140 --> 00:50:19,410 în funcție de tipul de egalitate Operatorii Eu folosesc, dacă vreau să compare 1010 00:50:19,410 --> 00:50:21,830 pentru toate tipurile, atunci vor fi egale. 1011 00:50:21,830 --> 00:50:25,570 Dar dacă doriți să vă asigurați că tipuri sunt egale, PHP poate face în continuare 1012 00:50:25,570 --> 00:50:28,690 că, chiar dacă noi nu indică ce tip este, atunci când ne-am 1013 00:50:28,690 --> 00:50:31,170 în primul rând a face fișierul. 1014 00:50:31,170 --> 00:50:33,990 >> Acum, în PHP, chiar dacă suntem trecerea de la programarea 1015 00:50:33,990 --> 00:50:39,360 de limbi de pe C, încă mai avem noastră de încredere în cazul în stare, la fel ca aceasta. 1016 00:50:39,360 --> 00:50:43,270 Avem încă bucle noastre în timp ce, doar ca aceasta, în cazul în care ați pus în ta 1017 00:50:43,270 --> 00:50:47,300 condiție și apoi corpului buclei. 1018 00:50:47,300 --> 00:50:50,360 Și atunci avem de asemenea noastre de buclă, care de obicei arata ca aceasta. 1019 00:50:50,360 --> 00:50:55,330 Deci, dacă am vrut să itera peste tot nouă psets și să prezinte și un apel 1020 00:50:55,330 --> 00:50:58,960 Funcția submitPset, atunci eu pot face asta aici, pe care voi au toate 1021 00:50:58,960 --> 00:50:59,830 efectuată de către acest punct. 1022 00:50:59,830 --> 00:51:01,080 Felicitări, apropo. 1023 00:51:01,080 --> 00:51:04,560 1024 00:51:04,560 --> 00:51:07,550 >> Pentru aparatul de fotografiat, oameni a spus, vă mulțumesc. 1025 00:51:07,550 --> 00:51:11,220 Acum, dacă nu doriți să utilizați doar acest pentru bucla, apoi PHP de fapt, de asemenea, 1026 00:51:11,220 --> 00:51:13,580 a numit lucrurile bucle foreach. 1027 00:51:13,580 --> 00:51:22,210 Deci, dacă am avut o serie de numere întregi, 0 prin 8, stocate în psets matrice, 1028 00:51:22,210 --> 00:51:27,290 atunci am putea avea o buclă foreach care reiterează peste fiecare număr în psets. 1029 00:51:27,290 --> 00:51:30,640 Și atunci am putea numi la fel funcționează de opt ori, 1030 00:51:30,640 --> 00:51:31,910 la fel cum am făcut-o înainte. 1031 00:51:31,910 --> 00:51:36,480 Deci, acest lucru pentru fiecare buclă este frumos, pentru că nu trebuie să, dacă nu știți 1032 00:51:36,480 --> 00:51:39,470 lungimea exactă de matrice pe care le au, apoi folosind această buclă foreach 1033 00:51:39,470 --> 00:51:42,800 se va ocupa de asta pentru tine. 1034 00:51:42,800 --> 00:51:45,410 >> Așa că am făcut psets ca o matrice. 1035 00:51:45,410 --> 00:51:46,700 Să ne uităm la asta. 1036 00:51:46,700 --> 00:51:51,290 Matricele din PHP sunt de obicei la fel ca și cele pe care le-am avut în C, în cazul în care 1037 00:51:51,290 --> 00:51:52,960 puteți declara o matrice. 1038 00:51:52,960 --> 00:51:59,200 Și aici, eu pot declara un array gol și apoi construi dinamic, cu ajutorul 1039 00:51:59,200 --> 00:52:00,850 indicii ca numere întregi. 1040 00:52:00,850 --> 00:52:04,140 Deci index 0, am de gând pentru a stoca un număr întreg numit 1. 1041 00:52:04,140 --> 00:52:09,210 La index 1 din lista mea, am de gând pentru a stoca valoarea de 2. 1042 00:52:09,210 --> 00:52:12,670 Și în al treilea indicele dar al doilea număr, am de gând să 1043 00:52:12,670 --> 00:52:14,870 stoca numărul 12. 1044 00:52:14,870 --> 00:52:17,250 >> Acum, acest lucru este bine în faptul că funcționează funcționează bine. 1045 00:52:17,250 --> 00:52:21,310 Dar spun că contează pentru mine ceea ce deține fiecare index. 1046 00:52:21,310 --> 00:52:24,500 Pentru mine, indicele de 0 înseamnă modul în care multe pisici am. 1047 00:52:24,500 --> 00:52:27,400 Iar indicele 1 reprezintă modul în care multe bufnițe am. 1048 00:52:27,400 --> 00:52:29,450 Și cel următor înseamnă cât de mulți câini. 1049 00:52:29,450 --> 00:52:34,140 Ei bine, atunci să se precizeze că, în loc să de a avea să-și amintească 0 se referă la 1050 00:52:34,140 --> 00:52:38,090 pisici și de la 1 la bufnite, pot folosi tablouri asociative, ceea ce înseamnă că 1051 00:52:38,090 --> 00:52:42,260 în loc de numere întregi ca indici mele, Eu pot folosi de fapt siruri de caractere. 1052 00:52:42,260 --> 00:52:43,290 >> Deci, acest lucru este destul de util. 1053 00:52:43,290 --> 00:52:47,130 Și ai de fapt doar înlocuit numerele întregi cu siruri de caractere. 1054 00:52:47,130 --> 00:52:50,074 Și nu aveți un tablou asociativ. 1055 00:52:50,074 --> 00:52:51,930 Da. 1056 00:52:51,930 --> 00:52:55,800 >> Audiența: Exista un motiv pentru care nu există o subliniere pentru a doua 1057 00:52:55,800 --> 00:52:58,750 parte, pentru că lista mea are matrice. 1058 00:52:58,750 --> 00:53:01,330 >> ZAMYLA CHAN: Întrebarea a fost, este există un motiv pentru care există o 1059 00:53:01,330 --> 00:53:03,320 subliniere între mea și lista? 1060 00:53:03,320 --> 00:53:03,610 Nu. 1061 00:53:03,610 --> 00:53:06,878 Asta e doar modul în care am numirea variabila mea. 1062 00:53:06,878 --> 00:53:11,670 >> Audiența: În primul linie, e un cuvânt. 1063 00:53:11,670 --> 00:53:12,560 >> ZAMYLA CHAN: Scuzele mele. 1064 00:53:12,560 --> 00:53:13,410 Voi rezolva asta. 1065 00:53:13,410 --> 00:53:13,620 Da. 1066 00:53:13,620 --> 00:53:15,460 Ele ar trebui să fie același nume variabilă. 1067 00:53:15,460 --> 00:53:16,710 Bună captură. 1068 00:53:16,710 --> 00:53:19,640 1069 00:53:19,640 --> 00:53:19,950 OK. 1070 00:53:19,950 --> 00:53:22,610 Deci, haideți să trecem la string concatenare. 1071 00:53:22,610 --> 00:53:27,500 Dacă aș fi vrut să ia două șiruri, atunci eu pot să le înlănțui 1072 00:53:27,500 --> 00:53:28,550 cu operatorul punct. 1073 00:53:28,550 --> 00:53:32,440 Deci, dacă am Milo ca un prim nume și Banana ca un nume, apoi 1074 00:53:32,440 --> 00:53:35,430 concatenarea cu operatorul punct și apoi pune un spațiu între 1075 00:53:35,430 --> 00:53:39,210 va face un șir care conține Milo Banane, pe care eu pot ecou apoi sau, 1076 00:53:39,210 --> 00:53:41,280 mai degrabă, imprima. 1077 00:53:41,280 --> 00:53:44,465 >> Vorbind de ecou, ​​hai sa vorbim despre un util câteva - 1078 00:53:44,465 --> 00:53:44,920 oops. 1079 00:53:44,920 --> 00:53:46,030 Îmi pare rău. 1080 00:53:46,030 --> 00:53:52,920 Câteva funcții PHP utile. 1081 00:53:52,920 --> 00:53:56,240 Deci, avem - 1082 00:53:56,240 --> 00:53:57,444 dificultăți tehnice. 1083 00:53:57,444 --> 00:53:58,694 Un al doilea. 1084 00:53:58,694 --> 00:54:16,960 1085 00:54:16,960 --> 00:54:19,550 L-am trimis. 1086 00:54:19,550 --> 00:54:22,320 Probleme de PowerPoint. 1087 00:54:22,320 --> 00:54:29,200 Și ne-am întors cu funcții PHP. 1088 00:54:29,200 --> 00:54:32,010 1089 00:54:32,010 --> 00:54:35,150 Și ne-am întors cu funcții PHP. 1090 00:54:35,150 --> 00:54:39,890 >> Deci, ne-am funcția necesită, în cazul în care dacă treci într-un dosar, aici este doar 1091 00:54:39,890 --> 00:54:43,300 un exemplu de un fișier care S-ar putea trece inch 1092 00:54:43,300 --> 00:54:47,605 Apoi, care va include codul PHP de la acel fișier pe care am indica. 1093 00:54:47,605 --> 00:54:49,940 Și se va evalua ca inch 1094 00:54:49,940 --> 00:54:54,450 Apoi, avem, de asemenea, ecou, ​​care este o paralelă cu printf. 1095 00:54:54,450 --> 00:54:57,710 Exit este o paralelă a sparge, care iese din blocul de 1096 00:54:57,710 --> 00:54:58,570 cod care ai intrat 1097 00:54:58,570 --> 00:55:03,180 Apoi verifică goale dacă o anumită variabila este ca nul sau zero sau 1098 00:55:03,180 --> 00:55:08,482 ceea ce este echivalat cu a fi gol. 1099 00:55:08,482 --> 00:55:09,438 Da. 1100 00:55:09,438 --> 00:55:15,341 >> Audiența: Pentru concatenarea string operator de punct o, în PHP, este faptul că 1101 00:55:15,341 --> 00:55:20,158 aceeași ca și în cazul în care activarea JavaScript-se cu ajutorul punctul de concatenare înseamnă plus? 1102 00:55:20,158 --> 00:55:27,440 Deci, pentru numele complet, ai putea avea dolar semneze primul + și apoi + dura? 1103 00:55:27,440 --> 00:55:27,720 >> ZAMYLA CHAN: Da. 1104 00:55:27,720 --> 00:55:32,150 Deci, întrebarea a fost dacă în PHP ne se poate folosi aceeași concatenarea string 1105 00:55:32,150 --> 00:55:33,890 la fel ca în JavaScript cu plusurile. 1106 00:55:33,890 --> 00:55:35,410 Și Iosif va intra în asta mai târziu. 1107 00:55:35,410 --> 00:55:36,620 Cred că are un diapozitiv pe care. 1108 00:55:36,620 --> 00:55:37,570 De fapt, e diferit. 1109 00:55:37,570 --> 00:55:41,310 Deci, în JavaScript, trebuie să utilizați plus de a înlănțui siruri de caractere. 1110 00:55:41,310 --> 00:55:43,280 Și în PHP, trebuie să utilizați operatorul punct. 1111 00:55:43,280 --> 00:55:44,530 Deci sunt diferite. 1112 00:55:44,530 --> 00:55:46,680 1113 00:55:46,680 --> 00:55:46,910 >> OK. 1114 00:55:46,910 --> 00:55:49,500 Deci, acum că ne-am acoperit toate această PHP, unde o face 1115 00:55:49,500 --> 00:55:50,490 într-adevăr veni la îndemână? 1116 00:55:50,490 --> 00:55:54,470 Ei bine, vine la îndemână atunci când ne-am se poate combina cu HTML nostru. 1117 00:55:54,470 --> 00:55:59,550 Deci, PHP nostru ne va da puterea de a modifica conținutul HTML o pagină înainte de a 1118 00:55:59,550 --> 00:56:00,000 încărcare sale. 1119 00:56:00,000 --> 00:56:04,270 Deci, în funcție de diferite condiții, de obicei, utilizatorul specifică care este 1120 00:56:04,270 --> 00:56:07,520 conectat, putem afișa informații diferite. 1121 00:56:07,520 --> 00:56:08,800 Linda, ai avut o întrebare? 1122 00:56:08,800 --> 00:56:15,510 >> Audiența: poți înlănțui un număr întreg, de asemenea? 1123 00:56:15,510 --> 00:56:16,760 >> ZAMYLA CHAN: Da, se poate. 1124 00:56:16,760 --> 00:56:19,530 1125 00:56:19,530 --> 00:56:23,270 Deci, întrebarea este dacă poți înlănțui întregi sau alte 1126 00:56:23,270 --> 00:56:28,920 variable.s acum, trecem la MVC, care este o paradigmă care ne-am folosit în 1127 00:56:28,920 --> 00:56:33,380 pset7 și o mulțime de web designeri folosesc pentru organizarea codul în fișierele 1128 00:56:33,380 --> 00:56:34,490 în site-ul lor. 1129 00:56:34,490 --> 00:56:35,870 M vine de la model. 1130 00:56:35,870 --> 00:56:41,450 Și, practic, fișiere model se va ocupa cu interacțiunile cu baza de date. 1131 00:56:41,450 --> 00:56:44,640 Vizualiza fișiere, acestea se referă la estetica a site-ului. 1132 00:56:44,640 --> 00:56:47,550 Și mânerele Controler cereri de utilizator, analizează 1133 00:56:47,550 --> 00:56:49,230 date, are altă logică. 1134 00:56:49,230 --> 00:56:52,520 >> În pset7, am combinat modelul și controlerul. 1135 00:56:52,520 --> 00:56:55,880 Și ne-am chemat și controlere le-a pus în directorul public. 1136 00:56:55,880 --> 00:57:01,730 Și vizualizarea de fișiere, le folosim ca șabloane din directorul template-uri. 1137 00:57:01,730 --> 00:57:07,260 Deci, această schemă de aici reprezintă, de asemenea, că același tip de divizare cu 1138 00:57:07,260 --> 00:57:10,510 Modelul și controlerul în purpuriu aici în stânga și 1139 00:57:10,510 --> 00:57:12,770 ecranul din dreapta. 1140 00:57:12,770 --> 00:57:16,020 Deci, aceasta este o schematică pe care unii dintre voi poate fi văzut la Orar de lucru sau 1141 00:57:16,020 --> 00:57:19,130 diagrame care am fost de desen ca tine au fost imaginind PSET dumneavoastră. 1142 00:57:19,130 --> 00:57:25,030 >> Deci, aici, într-o anumită controler, un model de controlor, ne-au funcții 1143 00:57:25,030 --> 00:57:30,490 care se referă la interogarea SQL Baza de date, care execută logica de PHP. 1144 00:57:30,490 --> 00:57:32,370 Poate v-ar privi în sus un stoc în Yahoo! 1145 00:57:32,370 --> 00:57:34,590 Finanțe. 1146 00:57:34,590 --> 00:57:37,390 Sau poate, ar trebui să verificați doar la vedea dacă un utilizator a prezentat o 1147 00:57:37,390 --> 00:57:40,250 formează deja înainte de a avea vizitat pagina. 1148 00:57:40,250 --> 00:57:43,390 Și atunci te-ar face o forma pe aici. 1149 00:57:43,390 --> 00:57:48,210 După ce a fost prezentat ca formă de către utilizator, acțiunea care a fost 1150 00:57:48,210 --> 00:57:53,470 specificate în tag-ul HTML a formularului ar indica pagina pe care o 1151 00:57:53,470 --> 00:57:55,620 revine că datele. 1152 00:57:55,620 --> 00:57:59,460 >> Deci, toate de care informațiile ar fi trimis înapoi la controler. 1153 00:57:59,460 --> 00:58:02,620 Atunci probabil ca s-ar face un pic mai mult logică pe care și poate executa câteva 1154 00:58:02,620 --> 00:58:06,510 mai multe interogări în baza de date SQL și apoi, în cele din urmă, să vină cu un frumos 1155 00:58:06,510 --> 00:58:11,930 ambalate set de informații care le-ar trece în în alt șablon 1156 00:58:11,930 --> 00:58:13,950 care afișează aceste informații. 1157 00:58:13,950 --> 00:58:17,030 Acum, cum putem pachet de fapt, că informațiile sus? 1158 00:58:17,030 --> 00:58:23,980 Ei bine, avem o functie numita Render că a fost în dosarul functions.php în 1159 00:58:23,980 --> 00:58:29,950 pset7, în cazul în care trece în numele un fișier, numele unui șablon. 1160 00:58:29,950 --> 00:58:32,160 >> Și apoi, de asemenea, trece în un tablou asociativ. 1161 00:58:32,160 --> 00:58:37,150 Și astfel încât tablou asociativ reprezintă diferite informații 1162 00:58:37,150 --> 00:58:39,040 pe care doriți să treci inch 1163 00:58:39,040 --> 00:58:43,460 Acum, ce se întâmplă să fie constantă în aceste exemple este că tastele sau, 1164 00:58:43,460 --> 00:58:47,070 mai degrabă, cheile asociativ matrice, acestea sunt ceea ce va fi 1165 00:58:47,070 --> 00:58:51,050 de așteptat să fie constant de șablon, pentru că știe că are nevoie de 1166 00:58:51,050 --> 00:58:53,990 ceva numit mesaj sau numit nume. 1167 00:58:53,990 --> 00:58:56,940 Și apoi lucrurile de pe partea dreaptă, valori reale, astfel încât în ​​acest caz, cine e 1168 00:58:56,940 --> 00:59:00,750 un băiat bun și Milo, cei care vor să fie valorile care se schimbă 1169 00:59:00,750 --> 00:59:05,610 că operatorul se schimbă de fiecare dată sau bazat pe o anumită condiție și 1170 00:59:05,610 --> 00:59:07,120 va trece că inch 1171 00:59:07,120 --> 00:59:12,790 >> Deci, aici, în template-uri, vom vedea că ne-am folosesc caractere speciale HTML, 1172 00:59:12,790 --> 00:59:16,370 ceea ce înseamnă, practic, doar că ne-o dorim pentru a obține șirul de la egal la egal care 1173 00:59:16,370 --> 00:59:17,580 utilizatorul pus inch 1174 00:59:17,580 --> 00:59:20,880 Și ne-o dorim pentru a substitui mesaj acolo. 1175 00:59:20,880 --> 00:59:26,110 Deci, atunci când vom vedea de fapt, fișierul, specifice 1176 00:59:26,110 --> 00:59:28,700 informații este trecut inch 1177 00:59:28,700 --> 00:59:33,850 Rețineți că cheia de modul în care face fapte este că cheile de la asociativ 1178 00:59:33,850 --> 00:59:37,170 tablouri, cei care devin variabile nume aici. 1179 00:59:37,170 --> 00:59:40,720 Și astfel valorile care cheie în tablou asociativ devine apoi 1180 00:59:40,720 --> 00:59:41,970 valoare a variabilei. 1181 00:59:41,970 --> 00:59:44,800 1182 00:59:44,800 --> 00:59:46,040 >> Acum, haideți să trecem la SQL. 1183 00:59:46,040 --> 00:59:48,010 Ea vine de la Structured Query Language. 1184 00:59:48,010 --> 00:59:50,460 Și astfel aceasta este doar o programare Limba proiectat 1185 00:59:50,460 --> 00:59:51,880 pentru gestionarea bazelor de date. 1186 00:59:51,880 --> 00:59:56,860 Și a venit la îndemână pentru noi în site-ul nostru finanțe pset7. 1187 00:59:56,860 --> 01:00:00,510 În esență, aceasta este doar o modalitate ușoară de a urmări și gestiona obiecte și tabele 1188 01:00:00,510 --> 01:00:02,070 și le leagă unele de altele. 1189 01:00:02,070 --> 01:00:06,860 Acum, cred că din baza de date SQL în principiu, ca un fișier Excel, poate, 1190 01:00:06,860 --> 01:00:10,040 cu mai multe foi de file. 1191 01:00:10,040 --> 01:00:13,820 >> Deci, ai putea avea mai multe tabele, probabil, care legate între ele. 1192 01:00:13,820 --> 01:00:19,420 Și, la fel ca Excel, avem o mulțime de funcționalitatea pe care ne-o dorim. 1193 01:00:19,420 --> 01:00:22,300 De exemplu, se poate selecta anumite rânduri. 1194 01:00:22,300 --> 01:00:24,110 Putem introduce informații. 1195 01:00:24,110 --> 01:00:25,560 Putem actualiza rânduri. 1196 01:00:25,560 --> 01:00:27,440 Și putem șterge, de asemenea lucruri. 1197 01:00:27,440 --> 01:00:30,920 1198 01:00:30,920 --> 01:00:36,560 >> SQL selecta lucrările de selectarea rândurilor sau un rând de coloane specificate de la un 1199 01:00:36,560 --> 01:00:39,640 de baze de date care se potrivesc unei anumite Criteriile pe care le indicați. 1200 01:00:39,640 --> 01:00:44,930 Deci, aici, când văd selectați * de la vrăjitori în care casa = Ravenclaw, apoi 1201 01:00:44,930 --> 01:00:48,340 Sunt selectarea *, ceea ce înseamnă că sunt selectarea fiecare coloană în care 1202 01:00:48,340 --> 01:00:56,340 rând din tabelul experți dar numai dacă coloana casa este egal cu Ravenclaw. 1203 01:00:56,340 --> 01:00:57,840 Acum, acest lucru este pur sau SQL. 1204 01:00:57,840 --> 01:01:02,680 Deci, dacă m-am dus în phpMyAdmin, care este modul specific pe care le folosim pentru a gestiona 1205 01:01:02,680 --> 01:01:07,040 bazele noastre de date SQL, atunci am putea introduce că în site-ul phpMyAdmin. 1206 01:01:07,040 --> 01:01:08,290 Și care ar putea executa. 1207 01:01:08,290 --> 01:01:11,280 >> Dar noi, de fapt vrei sa faci că pe partea de PHP. 1208 01:01:11,280 --> 01:01:12,580 Deci, cum facem asta? 1209 01:01:12,580 --> 01:01:20,180 Ei bine, vom folosi funcția de interogare, care practic executa acea interogare SQL. 1210 01:01:20,180 --> 01:01:21,830 Utilizarea? 1211 01:01:21,830 --> 01:01:25,850 ca un substituent, putem trece la anumite Valorile pentru șir nostru că ne-am 1212 01:01:25,850 --> 01:01:26,920 doresc să înlocuiască. 1213 01:01:26,920 --> 01:01:32,110 Deci, poate că eu sunt de stocare diferit valorile din curr_house, care 1214 01:01:32,110 --> 01:01:34,400 reprezintă casa de curent pe care am de gând prin intermediul. 1215 01:01:34,400 --> 01:01:39,040 Deci, eu pot trece că, în calitate de substituent cu semnul de întrebare. 1216 01:01:39,040 --> 01:01:43,290 Și apoi voi executa practic același lucru ca și am făcut-o înainte, cu excepția 1217 01:01:43,290 --> 01:01:45,550 acum, eu sunt în PHP. 1218 01:01:45,550 --> 01:01:51,300 >> Și interogarea va returna un tablou asociativ. 1219 01:01:51,300 --> 01:01:53,470 Și am de gând să-l păstrează în rânduri. 1220 01:01:53,470 --> 01:01:56,880 Acum, interogare poate eșua întotdeauna. 1221 01:01:56,880 --> 01:02:02,870 Poate că interogarea SQL nu a putut executa deoarece masa nu exista. 1222 01:02:02,870 --> 01:02:04,310 Sau poate, coloana nu exista. 1223 01:02:04,310 --> 01:02:05,400 Ceva a mers prost. 1224 01:02:05,400 --> 01:02:08,170 Ei bine, în acest caz, veți dori să facă vă că vă verificați dacă 1225 01:02:08,170 --> 01:02:09,700 interogare întors false. 1226 01:02:09,700 --> 01:02:15,590 Și că este, prin utilizarea triplu este egal cu operarea acolo. 1227 01:02:15,590 --> 01:02:19,660 >> Și apoi îmi cer scuze, ceea ce este un alt Funcția CS50, trece într-un mesaj. 1228 01:02:19,660 --> 01:02:23,435 Și dacă te uiți în cer scuze, tot ce într-adevăr nu este face apology.php. 1229 01:02:23,435 --> 01:02:26,100 1230 01:02:26,100 --> 01:02:26,410 Da. 1231 01:02:26,410 --> 01:02:29,630 >> Audiența: Ați putea explica ce că stele are între selecta și de la? 1232 01:02:29,630 --> 01:02:30,710 >> ZAMYLA CHAN: Da, absolut. 1233 01:02:30,710 --> 01:02:35,220 Deci, steaua între select și de la înseamnă că vreau să selecta întregul 1234 01:02:35,220 --> 01:02:37,440 întregul rând de la masa mea. 1235 01:02:37,440 --> 01:02:41,900 Am fi putut indicat selectați nume, an, casa. 1236 01:02:41,900 --> 01:02:46,160 Și mi-ar lua doar pe cei trei coloane din masa mea. 1237 01:02:46,160 --> 01:02:51,560 Dar dacă spun select *, atunci eu voi obține tot în acea coloană. 1238 01:02:51,560 --> 01:02:53,760 Apoi, am de gând să te duci în spatele primului. 1239 01:02:53,760 --> 01:02:57,656 >> Audiența: Deci, acest lucru este încă în SQL, corect? 1240 01:02:57,656 --> 01:02:59,610 Este această interogare sau este PHP? 1241 01:02:59,610 --> 01:03:00,550 >> ZAMYLA CHAN: Suntem într-o interogare. 1242 01:03:00,550 --> 01:03:01,940 Deci, acest lucru este în PHP. 1243 01:03:01,940 --> 01:03:06,280 Deci, folosind interogarea funcția PHP, vom executa o interogare SQL. 1244 01:03:06,280 --> 01:03:11,988 1245 01:03:11,988 --> 01:03:15,364 >> Audiența: Este ceva in SQL sensibile la caz, cum ar fi selectați 1246 01:03:15,364 --> 01:03:17,834 sau vrajitori sau casă? 1247 01:03:17,834 --> 01:03:20,050 >> ZAMYLA CHAN: Este ceva în SQL caz-sensibil? 1248 01:03:20,050 --> 01:03:21,760 Cred că da, da. 1249 01:03:21,760 --> 01:03:24,620 Eu cred că SELECT și FROM Și unde sunt case-sensitive. 1250 01:03:24,620 --> 01:03:25,535 Nu? 1251 01:03:25,535 --> 01:03:27,500 >> ROB BOWDEN: Deci, e invers. 1252 01:03:27,500 --> 01:03:32,030 Numele coloanelor și mijloacele de masă, toți cei care sunt sensibile la caz. 1253 01:03:32,030 --> 01:03:35,470 Dar oricare dintre cuvintele cheie MySQL, cum ar fi SELECT, FROM și WHERE, cei care nu sunt 1254 01:03:35,470 --> 01:03:36,140 case-sensitive. 1255 01:03:36,140 --> 01:03:36,420 OK. 1256 01:03:36,420 --> 01:03:37,780 Deci, opusul a ceea ce am spus. 1257 01:03:37,780 --> 01:03:40,420 Astfel încât toate cuvintele cheie MySQL - 1258 01:03:40,420 --> 01:03:42,670 selectați, din, unde - cei nu sunt sensibile la caz. 1259 01:03:42,670 --> 01:03:44,630 Dar totul altceva este. 1260 01:03:44,630 --> 01:03:45,210 OK. 1261 01:03:45,210 --> 01:03:46,500 Ai în față. 1262 01:03:46,500 --> 01:03:52,041 >> Audiența: Dacă am $ rânduri în ceea ce privește mai mult de un rând, înseamnă că este 1263 01:03:52,041 --> 01:03:53,640 doar devine un tablou asociativ? 1264 01:03:53,640 --> 01:03:59,550 >> ZAMYLA CHAN: Deci, întrebarea era dacă rânduri are mai mult de un rând în ea, nu 1265 01:03:59,550 --> 01:04:01,800 să devină un tablou asociativ? 1266 01:04:01,800 --> 01:04:05,680 Deci, este o serie de asociativ tablouri deja. 1267 01:04:05,680 --> 01:04:10,730 Astfel încât, chiar dacă există doar un singur rând întors, atunci ai avea pentru a merge la 1268 01:04:10,730 --> 01:04:12,690 index 0 de acest rezultat. 1269 01:04:12,690 --> 01:04:15,316 Și atunci ai avea prima linie. 1270 01:04:15,316 --> 01:04:17,482 Da, Belinda? 1271 01:04:17,482 --> 01:04:21,258 >> Audiența: Când utilizați ===, este aceasta singura instanță? 1272 01:04:21,258 --> 01:04:22,210 Sau sunt acolo alții? 1273 01:04:22,210 --> 01:04:26,815 >> ZAMYLA CHAN: Deci, în acest caz, === este o comparație între tipuri. 1274 01:04:26,815 --> 01:04:29,870 1275 01:04:29,870 --> 01:04:34,050 Scuze. === Este o comparație care compară tipurile. 1276 01:04:34,050 --> 01:04:37,620 Și apoi == compară pe toate tipurile. 1277 01:04:37,620 --> 01:04:41,620 >> Audiența: Puteți explica ce rânduri se află în această situație? 1278 01:04:41,620 --> 01:04:45,120 Este rând de date? 1279 01:04:45,120 --> 01:04:48,100 >> ZAMYLA CHAN: În slide-ul urmator, eu sunt de gând să explice ceea ce este rânduri. 1280 01:04:48,100 --> 01:04:49,890 Deci, dacă nu te superi deține off pe asta. 1281 01:04:49,890 --> 01:04:50,620 Și apoi în spate? 1282 01:04:50,620 --> 01:04:54,699 >> Audiența: Pentru funcții, cum ar fi o interogare, face și-mi cer scuze [neauzit]? 1283 01:04:54,699 --> 01:04:59,050 1284 01:04:59,050 --> 01:05:03,050 >> ZAMYLA CHAN: Întrebarea era dacă aceste funcții - de interogare, ne cerem scuze, 1285 01:05:03,050 --> 01:05:04,510 și face - 1286 01:05:04,510 --> 01:05:05,930 sunt comune în PHP. 1287 01:05:05,930 --> 01:05:09,460 Acestea sunt cele care CS50 a scris pentru pset7. 1288 01:05:09,460 --> 01:05:09,910 Și Jay? 1289 01:05:09,910 --> 01:05:15,333 >> Audiența: Când aveți nevoie pentru a spune $ _SESSION, Este că doar pentru ID-uri? 1290 01:05:15,333 --> 01:05:17,310 Sau ai putea fi spus că aici? 1291 01:05:17,310 --> 01:05:23,440 >> ZAMYLA CHAN: Deci, întrebarea a fost, atunci când vom folosi $ _SESSION, care a fost un specific 1292 01:05:23,440 --> 01:05:25,290 variabilă globală pe care o utilizați. 1293 01:05:25,290 --> 01:05:32,080 Aici această variabilă se va fie local pentru funcția noastră. 1294 01:05:32,080 --> 01:05:36,588 Deci, suntem doar declararea o nouă variabilă. 1295 01:05:36,588 --> 01:05:38,460 >> Audiența: Cum se scuze puse în aplicare? 1296 01:05:38,460 --> 01:05:40,960 >> ZAMYLA CHAN: Întrebarea a fost, modul în care este implementată-mi cer scuze? 1297 01:05:40,960 --> 01:05:44,180 Și cred că aceasta este de fapt o destul de bune practici pentru voi să meargă în 1298 01:05:44,180 --> 01:05:49,260 secțiunea functions.php și uita-te la mi cer scuze și a vedea cum ai putea avea 1299 01:05:49,260 --> 01:05:50,670 făcut-o singur. 1300 01:05:50,670 --> 01:05:55,620 Așa că am să las asta pentru tine, dar doar spun că dacă te uiți la cer scuze, 1301 01:05:55,620 --> 01:06:02,110 atunci este nevoie de mesajul pe care îl prezentat să își ceară scuze, și apoi se 1302 01:06:02,110 --> 01:06:06,570 face acel mesaj. 1303 01:06:06,570 --> 01:06:08,240 Alte întrebări? 1304 01:06:08,240 --> 01:06:08,710 Îmi place întrebări. 1305 01:06:08,710 --> 01:06:09,555 Deci, păstrați-le vine. 1306 01:06:09,555 --> 01:06:11,888 >> Audiența: [inaudibil] 1307 01:06:11,888 --> 01:06:13,840 echo sau print acolo? 1308 01:06:13,840 --> 01:06:15,900 >> ZAMYLA CHAN: Întrebarea a fost, poate nu le-am pus doar 1309 01:06:15,900 --> 01:06:17,000 echo sau print acolo. 1310 01:06:17,000 --> 01:06:19,710 Astfel că ar fi făcut ceva ușor diferite. 1311 01:06:19,710 --> 01:06:23,750 Care ar fi imprimate de interogare a eșuat în care - 1312 01:06:23,750 --> 01:06:27,420 bine, chiar acum, suntem de fapt în controler nostru. 1313 01:06:27,420 --> 01:06:30,350 Deci, nu avem de fapt HTML înființat aici. 1314 01:06:30,350 --> 01:06:34,946 Mi cer scuze de redare apologize.php de fapt, vă redirecționează la apology.php. 1315 01:06:34,946 --> 01:06:39,560 1316 01:06:39,560 --> 01:06:42,200 OK. 1317 01:06:42,200 --> 01:06:45,880 >> Deci, acum, să mergem pe de a aborda întrebare de mai devreme despre ceea ce 1318 01:06:45,880 --> 01:06:47,330 este într-adevăr rânduri. 1319 01:06:47,330 --> 01:06:51,960 Ei bine, interogarea va returna o serie de rânduri. 1320 01:06:51,960 --> 01:06:55,020 Și fiecare rând este reprezentată de un tablou asociativ. 1321 01:06:55,020 --> 01:07:02,840 Deci, dacă am executat unele interogare SQL și Am stocat rezultatul în rânduri, atunci 1322 01:07:02,840 --> 01:07:07,850 folosind o buclă foreach, atunci matricea nume este primul acolo - rânduri. 1323 01:07:07,850 --> 01:07:13,170 Și apoi am de gând pentru a apela fiecare rând acolo $ row. 1324 01:07:13,170 --> 01:07:20,060 >> Astfel iterarea peste asta, eu pot apoi accesa coloana nume rândul dat lui, 1325 01:07:20,060 --> 01:07:22,340 coloana an, și coloana casa. 1326 01:07:22,340 --> 01:07:28,010 Rețineți că nu aș fi fost în stare să face acest lucru cu rânduri, pentru că indicele de rânduri 1327 01:07:28,010 --> 01:07:29,290 Numele nu există. 1328 01:07:29,290 --> 01:07:31,970 Rânduri este doar o serie de tablouri asociative. 1329 01:07:31,970 --> 01:07:34,870 Astfel încât aveți două niveluri de acolo. 1330 01:07:34,870 --> 01:07:37,170 Odată ce aveți matrice de rânduri, aveți pentru a obține în asta. 1331 01:07:37,170 --> 01:07:39,110 Și apoi puteți accesa coloanele. 1332 01:07:39,110 --> 01:07:41,636 Făcut ca să-l clar? 1333 01:07:41,636 --> 01:07:42,520 Da, în față? 1334 01:07:42,520 --> 01:07:45,490 >> Audiența: [inaudibil] deschide paranteze pentru [inaudibil]? 1335 01:07:45,490 --> 01:07:46,220 >> ZAMYLA CHAN: Pardon? 1336 01:07:46,220 --> 01:07:49,740 >> Audiența: Consolele deschise. 1337 01:07:49,740 --> 01:07:52,420 >> ZAMYLA CHAN: acestea aici? 1338 01:07:52,420 --> 01:07:58,520 Care este permițându-mi să includă că variabila. 1339 01:07:58,520 --> 01:07:58,670 Da. 1340 01:07:58,670 --> 01:08:01,900 >> Audiența: Când imprimați, ești imprimarea la codul HTML? 1341 01:08:01,900 --> 01:08:03,110 >> ZAMYLA CHAN: Da. 1342 01:08:03,110 --> 01:08:07,720 Când imprim, aceasta de aici se află în interiorul șablon meu acum, așa 1343 01:08:07,720 --> 01:08:10,310 punctul meu de vedere al metodei MVC. 1344 01:08:10,310 --> 01:08:12,750 Deci, eu sunt de imprimare în HTML. 1345 01:08:12,750 --> 01:08:16,670 >> Audiența: Deci, dacă ne-am dus în developer instrumente după rularea acestui, am putea 1346 01:08:16,670 --> 01:08:17,160 că de fapt în cod? 1347 01:08:17,160 --> 01:08:18,410 >> ZAMYLA CHAN: Asta-i o mare întrebare, da. 1348 01:08:18,410 --> 01:08:22,359 Deci, dacă te-ai dus în instrumente de dezvoltare în Firefox folosind Firebug sau 1349 01:08:22,359 --> 01:08:26,109 Crom, atunci da, ai putea vezi HTML specific. 1350 01:08:26,109 --> 01:08:28,470 Așa că nu ar arăta $ row ["Nume"]. 1351 01:08:28,470 --> 01:08:32,524 Aceasta ar arăta în funcție de Numele este în acel rând. 1352 01:08:32,524 --> 01:08:36,268 >> Audiența: Doar o problemă generală, ceea ce sunt și tr td definit ca? 1353 01:08:36,268 --> 01:08:37,672 De ce ne-ar [inaudibil]? 1354 01:08:37,672 --> 01:08:41,850 1355 01:08:41,850 --> 01:08:44,814 >> ZAMYLA CHAN: Tabelul tr rând, tabel atunci td coloană. 1356 01:08:44,814 --> 01:08:48,060 1357 01:08:48,060 --> 01:08:49,310 OK. 1358 01:08:49,310 --> 01:08:55,771 1359 01:08:55,771 --> 01:08:56,835 >> Publicul: Da, e de date tabel. 1360 01:08:56,835 --> 01:08:58,770 >> ZAMYLA CHAN: date de masă. 1361 01:08:58,770 --> 01:08:59,894 Da. 1362 01:08:59,894 --> 01:09:08,670 >> Audiența: Este un rând în care rând este tratat ca o coloană? 1363 01:09:08,670 --> 01:09:08,910 >> ZAMYLA CHAN: Îmi pare rău. 1364 01:09:08,910 --> 01:09:10,570 Poți să repeți asta? 1365 01:09:10,570 --> 01:09:14,450 >> Audiența: Cum te-ar vizualiza rânduri? 1366 01:09:14,450 --> 01:09:16,310 >> ZAMYLA CHAN: Cum te-ai vizualiza rânduri în ce fel de mod? 1367 01:09:16,310 --> 01:09:21,796 Vorbești despre aceste rânduri de aici sau rândurile tr? 1368 01:09:21,796 --> 01:09:22,630 >> Audiența: Rândurile. 1369 01:09:22,630 --> 01:09:25,229 >> ZAMYLA CHAN: Aceste rânduri de aici? 1370 01:09:25,229 --> 01:09:28,620 Aș vizualiza acest lucru ca Am executa interogarea mea. 1371 01:09:28,620 --> 01:09:38,729 Și se spune, OK, am nici 0 la n cantitate de rânduri care se potrivesc criteriilor 1372 01:09:38,729 --> 01:09:40,510 pe care le-au interogat. 1373 01:09:40,510 --> 01:09:43,740 Deci, am un numar de rânduri. 1374 01:09:43,740 --> 01:09:51,450 Deci rânduri, de $ rânduri, magazine fiecare unul dintre aceste rânduri într-o matrice. 1375 01:09:51,450 --> 01:09:58,110 Astfel încât, chiar dacă e doar unul dintre ei, e încă o serie de rânduri care se potrivesc. 1376 01:09:58,110 --> 01:10:03,010 >> Așadar, de exemplu, aceasta este similar, atunci când preluat 1377 01:10:03,010 --> 01:10:05,390 cache-ul de la utilizatori. 1378 01:10:05,390 --> 01:10:10,810 Și criteriile de acolo a fost în cazul în care ID-ul este egal cu ID-ul de sesiune. 1379 01:10:10,810 --> 01:10:14,250 Există într-adevăr este doar un rând care ar putea potrivi asta. 1380 01:10:14,250 --> 01:10:18,960 Dar încă rânduri tocmai se întorsese de un singur rând. 1381 01:10:18,960 --> 01:10:22,620 Așa că ar trebui să meargă la rânduri, index 0, indicele cache a 1382 01:10:22,620 --> 01:10:26,195 ajunge de fapt la cache-ul. 1383 01:10:26,195 --> 01:10:29,650 >> Audiența: Este funcția de imprimare în ecou același lucru? 1384 01:10:29,650 --> 01:10:30,670 >> ZAMYLA CHAN: Da. 1385 01:10:30,670 --> 01:10:31,190 Da. 1386 01:10:31,190 --> 01:10:33,304 Imprima un ecou de la fel. 1387 01:10:33,304 --> 01:10:42,400 >> Audiența: Este bucla foreach singura modalitate de a indexa în rânduri? 1388 01:10:42,400 --> 01:10:46,110 >> ZAMYLA CHAN: Este o buclă foreach singurul mod în care puteți 1389 01:10:46,110 --> 01:10:47,030 repeta prin rânduri? 1390 01:10:47,030 --> 01:10:47,180 Nu. 1391 01:10:47,180 --> 01:10:51,000 Puteți folosi, de asemenea, o pentru buclă, cu condiția că știți lungimea 1392 01:10:51,000 --> 01:10:53,024 de matrice rândul lui. 1393 01:10:53,024 --> 01:10:58,500 >> Audiența: Ai putea să-l accesați folosind un rând ca [inaudibil]? 1394 01:10:58,500 --> 01:11:01,640 >> ZAMYLA CHAN: Deci nu se poate accesa folosind doar rând, dacă nu aveți un 1395 01:11:01,640 --> 01:11:05,160 foreach buclă cu condiția ca nu v-ați declarat rând. 1396 01:11:05,160 --> 01:11:08,150 1397 01:11:08,150 --> 01:11:09,660 Da. 1398 01:11:09,660 --> 01:11:10,810 Da, în alb. 1399 01:11:10,810 --> 01:11:13,990 >> Audiența: Deci, ce tr și td face? 1400 01:11:13,990 --> 01:11:16,790 >> ZAMYLA CHAN: Deci tr și td sunt tag-uri HTML. 1401 01:11:16,790 --> 01:11:19,590 tr indică începutul de un rând de tabel. 1402 01:11:19,590 --> 01:11:26,625 Și fiecare td indică o Noua coloană de date tabel. 1403 01:11:26,625 --> 01:11:32,275 >> Audiența: Pentru un vizual de ceea ce un rând este ca, doar imagina SQL, cum 1404 01:11:32,275 --> 01:11:33,510 ei au un rând. 1405 01:11:33,510 --> 01:11:35,980 [Neauzit]. 1406 01:11:35,980 --> 01:11:36,390 >> ZAMYLA CHAN: Da. 1407 01:11:36,390 --> 01:11:37,630 Acesta este un punct de mare. 1408 01:11:37,630 --> 01:11:41,510 Puteți vizualiza rânduri ca doar ca într-un tabel Excel, doar 1409 01:11:41,510 --> 01:11:44,540 lista de rânduri. 1410 01:11:44,540 --> 01:11:46,870 OK. 1411 01:11:46,870 --> 01:11:47,230 Bine. 1412 01:11:47,230 --> 01:11:50,740 Deci, acum că am trecut peste selectați, în cazul în care nu există mai multe întrebări, vom 1413 01:11:50,740 --> 01:11:52,970 du-te peste pe insert. 1414 01:11:52,970 --> 01:11:58,220 Deci, dacă am vrut să insera în unele masă și introduceți anumite coloană 1415 01:11:58,220 --> 01:12:02,320 valori, am putut să mă insera în Ravenclaw în anul 7. 1416 01:12:02,320 --> 01:12:07,245 Dar, uneori, ar putea fi duplicat valori, așa cum am văzut în pset7 când ne-am 1417 01:12:07,245 --> 01:12:09,240 au fost actualizarea portofoliul nostru. 1418 01:12:09,240 --> 01:12:15,610 >> Deci, în acest caz, vrem sa folosim ON DUPLICAT UPDATE KEY, astfel încât să nu 1419 01:12:15,610 --> 01:12:18,280 stoca mai multe rânduri cu aceeași valoare, dar mai degrabă o actualizați. 1420 01:12:18,280 --> 01:12:21,780 1421 01:12:21,780 --> 01:12:25,560 Apoi, avem de fapt actualizare, care nu este o inserție. 1422 01:12:25,560 --> 01:12:30,100 Este doar o actualizare în cazul în care vă actualizați într-un anumit tabel cu un anumit 1423 01:12:30,100 --> 01:12:34,403 criterii și apoi, în cele din urmă, șterge, care face un lucru foarte asemănător. 1424 01:12:34,403 --> 01:12:40,200 >> Audiența: Ai putea pe scurt du-te peste cheia duplicat? 1425 01:12:40,200 --> 01:12:40,850 >> ZAMYLA CHAN: Da. 1426 01:12:40,850 --> 01:12:48,340 În esență aici, am INSERT INTO Gringotts, este, galioane, aceste valori. 1427 01:12:48,340 --> 01:12:56,900 Dar ID-ul, probabil, este o cheie unică Valoarea înființat în tabelul MySQL. 1428 01:12:56,900 --> 01:13:06,750 Deci, dacă am deja că ID-ul creat, atunci eu nu pot insera un rând nou. 1429 01:13:06,750 --> 01:13:10,961 Deci, dacă nu există deja, atunci am să-l actualizeze. 1430 01:13:10,961 --> 01:13:16,040 1431 01:13:16,040 --> 01:13:17,722 În mijloc, în alb. 1432 01:13:17,722 --> 01:13:21,570 >> Audiența: Deci insera, actualiza, șterge, și selectați, sunt cele toate disponibile 1433 01:13:21,570 --> 01:13:22,875 la nivel local [inaudibil]? 1434 01:13:22,875 --> 01:13:27,320 1435 01:13:27,320 --> 01:13:29,630 >> ZAMYLA CHAN: Deci introduce, update, șterge, și 1436 01:13:29,630 --> 01:13:31,120 selectați sunt toate interogările SQL. 1437 01:13:31,120 --> 01:13:34,970 Deci, ori de câte ori sunteți folosind SQL, veți avea cele disponibile. 1438 01:13:34,970 --> 01:13:38,226 1439 01:13:38,226 --> 01:13:40,706 >> Audiența: Înapoi la chestionare anterioare - 1440 01:13:40,706 --> 01:13:44,178 a existat o întrebare care se ocupa cu dacă ați avut o masă și a vrut să 1441 01:13:44,178 --> 01:13:52,610 introduce rezultatele testelor într-o și introduceți Numele dvs., astfel încât acesta nu va lăsa 1442 01:13:52,610 --> 01:13:54,594 [Inaudibil] scor de testare prietenului tău. 1443 01:13:54,594 --> 01:13:59,060 Cum ar fi sa faci asta cu inserție? 1444 01:13:59,060 --> 01:14:02,490 >> ZAMYLA CHAN: Deci, întrebarea a fost de aproximativ o întrebare pe termen mediu anterior. 1445 01:14:02,490 --> 01:14:04,320 Eu nu sunt conștienți de ceea ce unul este chiar acum. 1446 01:14:04,320 --> 01:14:06,790 Deci, poate că după aceea, dacă doriți să vin și-mi arate, atunci eu pot 1447 01:14:06,790 --> 01:14:08,155 cu siguranță vă dau sfaturi. 1448 01:14:08,155 --> 01:14:11,250 1449 01:14:11,250 --> 01:14:15,460 Dar, vorbind de inserarea lucruri, cum ar fi ținând scorul cuiva, atunci când 1450 01:14:15,460 --> 01:14:18,800 nu ar trebui, hai sa vorbim despre Atacuri SQL injection. 1451 01:14:18,800 --> 01:14:22,050 Astfel încât un atac SQL injection este, în esență, în cazul în care cineva ia 1452 01:14:22,050 --> 01:14:27,680 avantaj de securitate scăzută a astfel încât să luați în date. 1453 01:14:27,680 --> 01:14:35,660 >> Deci, aici, la fel ca și în finanțe CS50, atunci când ne-am conectat, putem intra într-o 1454 01:14:35,660 --> 01:14:39,510 nume de utilizator sub forma de conectare, prima casetă de text, și 1455 01:14:39,510 --> 01:14:41,570 apoi introduceți o parolă. 1456 01:14:41,570 --> 01:14:45,610 Poate că s-ar putea uita codul nostru PHP ceva de genul asta, unde $ username 1457 01:14:45,610 --> 01:14:51,410 este numele de utilizator și parola post-date este parola post-date. 1458 01:14:51,410 --> 01:14:55,110 Și apoi ne-am doar execută interogarea noastră, să zicem, Bine, bine, interogarea noastră se va 1459 01:14:55,110 --> 01:14:57,990 selectați de la utilizatorii noștri, în cazul în care numele de utilizator este 1460 01:14:57,990 --> 01:14:58,970 una care le-au prezentat. 1461 01:14:58,970 --> 01:15:06,870 Și parola este parola, ceea ce înseamnă că parolele se potrivesc. 1462 01:15:06,870 --> 01:15:12,670 >> Acum, ce se întâmplă dacă în loc de fapt, depunerea o parolă real, cum ar fi 1463 01:15:12,670 --> 01:15:16,850 12345 și ghicitul în dinte care spune parola și încearcă să hack lor 1464 01:15:16,850 --> 01:15:21,460 cont, dacă în schimb au prezentat acest lucru. 1465 01:15:21,460 --> 01:15:24,380 Ele ar putea tip în poate o presupunere la o parolă. 1466 01:15:24,380 --> 01:15:30,480 Și apoi s-ar termina citat apoi tastați sau 1 = 1. 1467 01:15:30,480 --> 01:15:35,160 Care ar ritmul direct în SQL interogare să arate ceva de genul asta. 1468 01:15:35,160 --> 01:15:38,200 Selectați de la utilizatori în cazul în care numele de utilizator = prongs și parola 1469 01:15:38,200 --> 01:15:41,450 este egal crin sau 1 = 1. 1470 01:15:41,450 --> 01:15:45,450 >> Deci, fie parola are pentru a fi corect sau 1 = 1, 1471 01:15:45,450 --> 01:15:47,870 care este întotdeauna adevărat. 1472 01:15:47,870 --> 01:15:52,780 Deci, în acest caz, în esență, un utilizator poate să profite de acest lucru și doar log 1473 01:15:52,780 --> 01:15:55,240 se în și hack contul cuiva. 1474 01:15:55,240 --> 01:15:58,950 De aceea ne-o dorim, pentru a evita cineva care avea de a face acest lucru. 1475 01:15:58,950 --> 01:16:03,890 Dar, din fericire, funcția de interogare de către trecerea în substituenții vor avea 1476 01:16:03,890 --> 01:16:04,800 grijă de asta pentru tine. 1477 01:16:04,800 --> 01:16:08,570 De asemenea, nu vei dori de obicei, să prezinte de fapt, parolele 1478 01:16:08,570 --> 01:16:09,310 înșiși. 1479 01:16:09,310 --> 01:16:14,115 De aceea am distribuit sau criptate le în finanțe CS50. 1480 01:16:14,115 --> 01:16:17,553 >> Audiența: testul trecut a vorbit despre siruri de caractere de evacuare MySQL. 1481 01:16:17,553 --> 01:16:21,800 Nu trebuie să vă faceți griji despre asta? 1482 01:16:21,800 --> 01:16:22,670 >> ZAMYLA CHAN: Asta este o întrebare bună. 1483 01:16:22,670 --> 01:16:29,050 Siruri de caractere MySQL de evacuare este cu siguranta un funcție care a fost utilizat în interogarea noastră. 1484 01:16:29,050 --> 01:16:30,420 Dar uite definitiv în asta. 1485 01:16:30,420 --> 01:16:32,950 Aș spune că e un joc cinstit să știi care ai nevoie pentru a apela că 1486 01:16:32,950 --> 01:16:34,370 funcționa pe un șir. 1487 01:16:34,370 --> 01:16:35,245 Da, Belinda? 1488 01:16:35,245 --> 01:16:38,606 >> Audiența: Cum știi când e ghilimele simple sau ghilimele? 1489 01:16:38,606 --> 01:16:43,516 Și, de asemenea, mă simt ca și cum în curs tine menționat ceva despre care nu au 1490 01:16:43,516 --> 01:16:48,426 [inaudibil] sau ceva sau al doilea citat singur la sfârșitul anului. 1491 01:16:48,426 --> 01:16:56,407 1492 01:16:56,407 --> 01:17:00,825 Cred că el a subliniat în curs care tu ar trebui să aibă apostrof 1 1493 01:17:00,825 --> 01:17:04,290 și apoi nu au apostroful sau ceva. 1494 01:17:04,290 --> 01:17:05,540 >> Audiența: [inaudibil]. 1495 01:17:05,540 --> 01:17:14,860 1496 01:17:14,860 --> 01:17:18,657 >> Audiența: Chestia e ultimul single- citat în acolo, în această a doua cutie 1497 01:17:18,657 --> 01:17:19,391 nu ar trebui să fie acolo. 1498 01:17:19,391 --> 01:17:21,840 [Inaudibil] 1499 01:17:21,840 --> 01:17:26,730 Pentru că, atunci când ia ultima singur cita afară și se potrivesc acestea pentru conținut 1500 01:17:26,730 --> 01:17:30,522 în cazul în care parola este, dacă aveți că interogare, există un singur citat la 1501 01:17:30,522 --> 01:17:31,340 final deja. 1502 01:17:31,340 --> 01:17:36,580 Doriți să utilizați ca singur citat ca cel care se confruntă cu o 1503 01:17:36,580 --> 01:17:37,574 [Neauzit]. 1504 01:17:37,574 --> 01:17:42,820 Deci, ce este de fapt, în acest text cutie nu ar trebui să aibă asta. 1505 01:17:42,820 --> 01:17:44,070 >> ZAMYLA CHAN: Voi schimba asta. 1506 01:17:44,070 --> 01:17:56,490 1507 01:17:56,490 --> 01:17:56,880 OK. 1508 01:17:56,880 --> 01:18:00,435 În cazul în care nu sunt întrebări, atunci eu voi trece-l pe Iosif pentru a vorbi 1509 01:18:00,435 --> 01:18:04,332 despre JavaScript, etc. 1510 01:18:04,332 --> 01:18:09,540 >> [Aplauze] 1511 01:18:09,540 --> 01:18:11,660 >> JOSEPH ONG: Deci, suntem rulează un pic în urmă. 1512 01:18:11,660 --> 01:18:13,280 Deci, dacă trebuie să pleci, asta e OK. 1513 01:18:13,280 --> 01:18:16,540 Dar vă rugăm să păstrați capul în jos daca esti la mijloc, astfel încât să 1514 01:18:16,540 --> 01:18:19,560 nu bloca aparatul de fotografiat și să utilizați ieșirea din spate, dacă trebuie să. 1515 01:18:19,560 --> 01:18:25,010 1516 01:18:25,010 --> 01:18:26,306 Eu sunt Iosif de drum. 1517 01:18:26,306 --> 01:18:27,556 Hi. 1518 01:18:27,556 --> 01:18:37,910 1519 01:18:37,910 --> 01:18:38,630 De testare, de testare. 1520 01:18:38,630 --> 01:18:39,630 Dan, este atat de buna? 1521 01:18:39,630 --> 01:18:40,880 Rece. 1522 01:18:40,880 --> 01:18:44,460 1523 01:18:44,460 --> 01:18:47,600 >> Deci, videoclipul va fi, de asemenea, postate on-line pentru cei care 1524 01:18:47,600 --> 01:18:48,850 Trebuie să plec acum. 1525 01:18:48,850 --> 01:18:51,350 1526 01:18:51,350 --> 01:18:52,600 Ciudat. 1527 01:18:52,600 --> 01:18:56,300 1528 01:18:56,300 --> 01:18:57,510 OK. 1529 01:18:57,510 --> 01:18:59,730 Astfel de revizuire test. 1530 01:18:59,730 --> 01:19:00,980 Aceasta este o pisică. 1531 01:19:00,980 --> 01:19:03,150 1532 01:19:03,150 --> 01:19:07,170 Acum, JavaScript, ceea ce nu este, poate, ca aww pentru unii dintre voi. 1533 01:19:07,170 --> 01:19:07,370 OK. 1534 01:19:07,370 --> 01:19:09,280 Deci, asta e în primul rând, amintesc de Zamyla. 1535 01:19:09,280 --> 01:19:11,270 Amintiți-vă că PHP este rula pe server. 1536 01:19:11,270 --> 01:19:15,230 Și o mulțime de ori, voi scrie bucle în PHP pentru a imprima HTML, corect? 1537 01:19:15,230 --> 01:19:19,170 Deci, odată ce codul se execută, care Ieșire HTML pe care le imprimați 1538 01:19:19,170 --> 01:19:20,500 este trimis pentru utilizator. 1539 01:19:20,500 --> 01:19:25,960 Și odată ce acest lucru se întâmplă, nu mai poate PHP fi rulat, dacă nu reîncărcați pagina, de 1540 01:19:25,960 --> 01:19:27,660 Desigur, care reexecutes PHP. 1541 01:19:27,660 --> 01:19:30,080 Dar, odată ce imprimați că HTML, nu puteți merge oriunde. 1542 01:19:30,080 --> 01:19:33,580 >> Așa că HTML este trimis la utilizator, care este browser-ul aici, în cazul în care 1543 01:19:33,580 --> 01:19:35,470 Milo este utilizând computerul. 1544 01:19:35,470 --> 01:19:40,340 Și atât de bine, sunt mai multe lucruri odată ce vom trimite HTML pentru utilizator. 1545 01:19:40,340 --> 01:19:43,350 Uneori vrem să facem ceva de genul atunci când faceți clic pe ceva, ne-o dorim 1546 01:19:43,350 --> 01:19:47,350 cutii de alertă pentru a pop-up, aceste tipuri de interacțiuni, cum ar fi atunci când apăsați 1547 01:19:47,350 --> 01:19:50,740 cheie, atunci când faceți clic pe ceva pagina, vreau să se întâmple ceva. 1548 01:19:50,740 --> 01:19:54,550 Ei bine, nu poți reexecute PHP cod odată că HTML este setat. 1549 01:19:54,550 --> 01:19:55,900 Deci, cum faci asta? 1550 01:19:55,900 --> 01:19:59,930 >> Va prezentam un nou limbaj denumit JavaScript, care rulează în browser 1551 01:19:59,930 --> 01:20:02,890 care vă permite să faci lucruri pentru a HTML după ce primiți 1552 01:20:02,890 --> 01:20:04,020 le de la server. 1553 01:20:04,020 --> 01:20:07,050 Și acesta este motivul pentru care l-am a-side client apel limbaj de programare. 1554 01:20:07,050 --> 01:20:09,110 Acesta funcționează pe computer - 1555 01:20:09,110 --> 01:20:11,400 clientului. 1556 01:20:11,400 --> 01:20:13,830 Orice întrebări cu privire la faptul că până acum? 1557 01:20:13,830 --> 01:20:15,650 Ca paradigmă are sens pentru oameni? 1558 01:20:15,650 --> 01:20:16,010 OK. 1559 01:20:16,010 --> 01:20:16,790 Bun. 1560 01:20:16,790 --> 01:20:17,340 Bine. 1561 01:20:17,340 --> 01:20:20,850 Deci, primul lucru de remarcat este JavaScript nu este PHP. 1562 01:20:20,850 --> 01:20:23,010 >> Ei au o sintaxă diferită, pe care vom merge în. 1563 01:20:23,010 --> 01:20:24,530 Și au utilizări foarte diferite. 1564 01:20:24,530 --> 01:20:26,640 JavaScript, din nou, pentru dvs. browser, pentru client. 1565 01:20:26,640 --> 01:20:30,640 Server ruleaza undeva pe altcuiva computer care trimite informații 1566 01:20:30,640 --> 01:20:31,720 pentru tine, corect? 1567 01:20:31,720 --> 01:20:36,730 Deci, dacă vă cerem să scrie cod PHP la o întrebare examen, nu scrie 1568 01:20:36,730 --> 01:20:38,710 JavaScript și vice-versa. 1569 01:20:38,710 --> 01:20:41,710 Veți pierde doar de puncte, și nu va fi corect. 1570 01:20:41,710 --> 01:20:43,690 >> Așa că haideți să trecem în unele diferențele de sintaxă - 1571 01:20:43,690 --> 01:20:46,140 JavaScript pe stânga și PHP pe dreapta. 1572 01:20:46,140 --> 01:20:48,670 Primul lucru pe care veți observa cu JavaScript, ne declara variabile cu 1573 01:20:48,670 --> 01:20:49,440 cuvântul cheie var - 1574 01:20:49,440 --> 01:20:53,590 V-O-R. PHP folosit semnul dolar, ca Zamyla discutat mai devreme. 1575 01:20:53,590 --> 01:20:57,570 Dacă doriți să declare o asociativ matrice, vom vedea sintaxa familiar pe 1576 01:20:57,570 --> 01:20:59,030 partea dreapta cu PHP. 1577 01:20:59,030 --> 01:21:01,630 Pe partea stângă, în schimb folosiți acolade. 1578 01:21:01,630 --> 01:21:03,280 Și apoi cheile sunt pe partea stângă. 1579 01:21:03,280 --> 01:21:04,670 Atunci aveți un colon. 1580 01:21:04,670 --> 01:21:06,560 Și apoi au valorile pe care doriți. 1581 01:21:06,560 --> 01:21:09,840 >> Deci, acest lucru este modul în care ar face-o în PHP pe partea dreaptă, cu care a doua 1582 01:21:09,840 --> 01:21:10,955 linie care pornește de la Milo. 1583 01:21:10,955 --> 01:21:14,540 Și care este modul în care v-ar face pe partea stângă în JavaScript, dacă doriți 1584 01:21:14,540 --> 01:21:16,110 ceea ce noi numim un obiect. 1585 01:21:16,110 --> 01:21:19,340 Și obiecte în JavaScript sunt doar tablouri asociative. 1586 01:21:19,340 --> 01:21:23,710 Deci, dacă doriți să accesați domenii, în PHP utilizați această sintaxă suport. 1587 01:21:23,710 --> 01:21:27,170 Și în acest fel, puteți realoca acest domeniu proprietar de Lauren. 1588 01:21:27,170 --> 01:21:30,150 >> Ei bine, în JavaScript, în cazul în care unul vrea să accesa un câmp și să îl modificați, aveți posibilitatea să 1589 01:21:30,150 --> 01:21:31,370 folosiți sintaxa punct. 1590 01:21:31,370 --> 01:21:33,860 Puteți folosi, de asemenea, sintaxa suport. 1591 01:21:33,860 --> 01:21:35,550 Dar nu puteți utiliza dot sintaxa în PHP. 1592 01:21:35,550 --> 01:21:36,525 Că nu va funcționa. 1593 01:21:36,525 --> 01:21:38,910 Aceasta funcționează numai în PHP. 1594 01:21:38,910 --> 01:21:42,060 Și, în sfârșit, pentru a imprima lucrurile la consola, folosiți console.log, care 1595 01:21:42,060 --> 01:21:43,720 voi folosi o mulțime în pset8. 1596 01:21:43,720 --> 01:21:45,260 Puteți console.log asta. 1597 01:21:45,260 --> 01:21:50,030 >> Dacă doriți să imprimați o matrice în PHP, va trebui să utilizați de imprimare r. 1598 01:21:50,030 --> 01:21:53,240 Și pe partea dreaptă, veți vedea i hash șir concatenare acolo. 1599 01:21:53,240 --> 01:21:54,070 Cineva a întrebat mai devreme. 1600 01:21:54,070 --> 01:21:55,850 Eu folosesc un plus în JavaScript. 1601 01:21:55,850 --> 01:21:59,800 Dacă vreau să înlănțui ceva in PHP, am folosi punct. 1602 01:21:59,800 --> 01:22:00,800 Acestea sunt diferite. 1603 01:22:00,800 --> 01:22:03,420 Dacă sunteți scris de cod PHP, nu utilizați un plus. 1604 01:22:03,420 --> 01:22:06,810 Dacă sunteți scris JavaScript cod, nu scrie un punct. 1605 01:22:06,810 --> 01:22:08,230 Acesta va fi greșit. 1606 01:22:08,230 --> 01:22:09,640 Și veți fi trist. 1607 01:22:09,640 --> 01:22:11,000 >> Diferențe atât de sintaxă. 1608 01:22:11,000 --> 01:22:14,710 Știu sintaxa, pentru că dacă trebuie să Trimite o întrebare și să utilizați sintaxa 1609 01:22:14,710 --> 01:22:16,890 din limba greșit, acesta nu va funcționa. 1610 01:22:16,890 --> 01:22:19,520 Și va fi greșit. 1611 01:22:19,520 --> 01:22:22,420 Deci, hai sa vorbim despre un anumit control flux diferențe, modul de utilizare a 1612 01:22:22,420 --> 01:22:24,040 bucle în fiecare dintre ele. 1613 01:22:24,040 --> 01:22:26,610 Zamyla a trecut peste partea dreaptă. 1614 01:22:26,610 --> 01:22:27,780 Chestii de pe partea dreaptă ar trebui să fie familiar. 1615 01:22:27,780 --> 01:22:29,670 Să ne uităm la pe partea stanga. 1616 01:22:29,670 --> 01:22:34,830 >> Când utilizați pentru n buclă în JavaScript, dvs. variabila buclă, var i de acolo, 1617 01:22:34,830 --> 01:22:37,210 buclă peste cheile de matrice. 1618 01:22:37,210 --> 01:22:39,150 Deci, vedeți nume, casa, și rol. 1619 01:22:39,150 --> 01:22:42,440 Dacă I ​​i console.log, mă nume, casa, și rol. 1620 01:22:42,440 --> 01:22:44,720 Acestea sunt cheile. 1621 01:22:44,720 --> 01:22:50,080 În JavaScript, o buclă foreach merge peste valorile acestei matrice. 1622 01:22:50,080 --> 01:22:52,040 Astfel încât să observați că sunt amândoi i. 1623 01:22:52,040 --> 01:22:56,000 Dar aici, pe partea de PHP, se imprimă din Milo, CS50, și Mascot. 1624 01:22:56,000 --> 01:22:57,390 Acestea sunt valorile din PHP. 1625 01:22:57,390 --> 01:23:00,180 >> Deci, acestea sunt cum aceste două sunt diferite în diferite limbi. 1626 01:23:00,180 --> 01:23:02,970 Deci, dacă utilizați un foreach buclă, nu pleca de la premisa că 1627 01:23:02,970 --> 01:23:03,760 vă oferă cheile. 1628 01:23:03,760 --> 01:23:08,010 Și dacă utilizați o de n buclă, nu Presupun că vă oferă valorile. 1629 01:23:08,010 --> 01:23:10,420 Are acest sens până acum? 1630 01:23:10,420 --> 01:23:13,630 Următorul diapozitiv este de gând să-ți arăt cum puteți accesa contrariul în 1631 01:23:13,630 --> 01:23:15,160 fiecare dintre ele. 1632 01:23:15,160 --> 01:23:18,550 >> Ei bine, dacă aveți cheia în JavaScript și doriți valoarea afară, 1633 01:23:18,550 --> 01:23:20,440 doar index în matrice cu asta. 1634 01:23:20,440 --> 01:23:23,640 Deci, Milo a i se va obține ceea ce vrei - valorile. 1635 01:23:23,640 --> 01:23:25,260 Există această sintaxă diferită în PHP. 1636 01:23:25,260 --> 01:23:28,140 Dacă chiar vrei să-l cunosc, eu nu fac cred că l-am arătat-o ​​încă. 1637 01:23:28,140 --> 01:23:31,740 Dar dacă sunteți interesat, puteți utiliza sintaxa suplimentară din dreapta 1638 01:23:31,740 --> 01:23:35,130 parte care vă va permite de fapt, să obțineți cheile în PHP atunci când utilizați un 1639 01:23:35,130 --> 01:23:35,880 buclă foreach. 1640 01:23:35,880 --> 01:23:39,640 Deci, doar un pic de trivia daca esti interesat. 1641 01:23:39,640 --> 01:23:42,630 >> Deci, asta e doar pentru a demonstra diferențele dintre aceste două bucle. 1642 01:23:42,630 --> 01:23:47,060 Nu le amesteca atunci când sunteți programarea o întrebare. 1643 01:23:47,060 --> 01:23:49,774 Orice întrebări despre asta. 1644 01:23:49,774 --> 01:23:50,770 Rece. 1645 01:23:50,770 --> 01:23:51,310 Bine. 1646 01:23:51,310 --> 01:23:52,250 JavaScript obiecte. 1647 01:23:52,250 --> 01:23:53,040 Am vorbit despre ei. 1648 01:23:53,040 --> 01:23:54,650 Sunt ca tablouri asociative. 1649 01:23:54,650 --> 01:23:57,730 Singurul lucru pe care aș vrea să vă notați aici este că o valoare într-o asociativ 1650 01:23:57,730 --> 01:23:59,540 matrice poate fi nimic în JavaScript. 1651 01:23:59,540 --> 01:24:02,240 >> Acesta poate fi chiar o funcție, ca acolo. 1652 01:24:02,240 --> 01:24:04,600 Am o funcție care este o valoare a unei chei. 1653 01:24:04,600 --> 01:24:07,030 Și dacă vreau pentru a apela această funcție, Am acces doar coaja. 1654 01:24:07,030 --> 01:24:08,490 Și apoi am pus paranteze după aceea. 1655 01:24:08,490 --> 01:24:09,790 Și care funcționează. 1656 01:24:09,790 --> 01:24:15,570 Deci, întrebări? 1657 01:24:15,570 --> 01:24:16,370 Nu? 1658 01:24:16,370 --> 01:24:16,650 OK. 1659 01:24:16,650 --> 01:24:18,190 Bun. 1660 01:24:18,190 --> 01:24:20,130 JavaScript, cum ar fi PHP, este vag tastat. 1661 01:24:20,130 --> 01:24:20,970 Ce înseamnă asta? 1662 01:24:20,970 --> 01:24:22,380 >> Ea are tipuri. 1663 01:24:22,380 --> 01:24:24,800 Dar atunci când declară un JavaScript variabilă, tu spui var i. 1664 01:24:24,800 --> 01:24:25,850 Tu nu-l spun. 1665 01:24:25,850 --> 01:24:26,460 Asta nu e un lucru. 1666 01:24:26,460 --> 01:24:28,000 Trebuie doar spun că este o variabilă. 1667 01:24:28,000 --> 01:24:31,590 Și apoi JavaScript va ocupa de Tipuri de sub capota pentru tine. 1668 01:24:31,590 --> 01:24:34,390 Ne poate converti liber între tipuri din cauza asta. 1669 01:24:34,390 --> 01:24:37,360 Așa că am începe ca un număr în acest caz. 1670 01:24:37,360 --> 01:24:38,790 Și apoi am un șir. 1671 01:24:38,790 --> 01:24:39,710 Și eu am să-l adăugați. 1672 01:24:39,710 --> 01:24:41,810 Și eu le retrocedeze înapoi în i.. 1673 01:24:41,810 --> 01:24:43,640 >> Astfel pe prima linie, i este numărul. 1674 01:24:43,640 --> 01:24:47,310 Pe a doua linie, i devine acum o șir după ce am face redistribuirea. 1675 01:24:47,310 --> 01:24:52,820 Și aici, eu doar concatenarea că numărul de pe șirul. 1676 01:24:52,820 --> 01:24:56,210 Deci, vezi că, chiar dacă am fost un întreg în prima parte, e un fel 1677 01:24:56,210 --> 01:24:58,500 a cum ar fi convertit la un șir și apoi a fost adăugat 1678 01:24:58,500 --> 01:25:00,510 pe care șir salut. 1679 01:25:00,510 --> 01:25:02,340 Și așa mai departe asta e ceea ce vreau să spun de dactilografiere liber. 1680 01:25:02,340 --> 01:25:04,760 Asta e ca să vă convertiți între tipuri foarte ușor. 1681 01:25:04,760 --> 01:25:08,840 Și nu se arunca avertismente la tine ca C nu. 1682 01:25:08,840 --> 01:25:12,420 >> Deci, i conține acum salut 123 de șirul. 1683 01:25:12,420 --> 01:25:13,270 Următor. 1684 01:25:13,270 --> 01:25:15,610 De asemenea, putem compara în mod liber între tipuri. 1685 01:25:15,610 --> 01:25:19,310 Deci, dacă tocmai ați folosi ==, foarte mult ca și în PHP, JavaScript 1686 01:25:19,310 --> 01:25:20,480 face un lucru similar. 1687 01:25:20,480 --> 01:25:24,780 Șirul 123 este același cu numărul 123 atunci când utilizați egali duble. 1688 01:25:24,780 --> 01:25:27,820 Atunci când este utilizat egali triple, de asemenea, dorește să se asigure că 1689 01:25:27,820 --> 01:25:29,240 tipul este același. 1690 01:25:29,240 --> 01:25:31,960 Astfel pentru că este un șir și care este un număr, chiar dacă ele sunt atât 1691 01:25:31,960 --> 01:25:35,280 123, atunci când utilizați triplu egal, te fals. 1692 01:25:35,280 --> 01:25:39,330 În dublu egal caz, te adevărat, deoarece egal duble nu 1693 01:25:39,330 --> 01:25:40,020 pasă de tip. 1694 01:25:40,020 --> 01:25:42,500 Egali triple-i pasă de tip. 1695 01:25:42,500 --> 01:25:43,750 Întrebări? 1696 01:25:43,750 --> 01:25:45,790 1697 01:25:45,790 --> 01:25:48,390 OK. 1698 01:25:48,390 --> 01:25:52,870 >> Și un alt lucru despre JavaScript este domeniul de aplicare este un fel de nivel mondial daca nu esti 1699 01:25:52,870 --> 01:25:53,460 într-o funcție. 1700 01:25:53,460 --> 01:25:55,660 Și funcționează la fel fel în PHP de fapt. 1701 01:25:55,660 --> 01:25:57,500 Deci, haideți să mergem prin acest exemplu. 1702 01:25:57,500 --> 01:25:59,110 I-am setat la 999. 1703 01:25:59,110 --> 01:26:00,900 Și apoi mă duc în această pentru buclă. 1704 01:26:00,900 --> 01:26:06,110 Deci, dacă am de imprimare i în acest pentru buclă, mă aștept 0, 1, 2, 3, 4. 1705 01:26:06,110 --> 01:26:07,390 Am ajunge la i = 4. 1706 01:26:07,390 --> 01:26:10,770 Ea i incrementeaza acum la 5 la capătul de bucla. 1707 01:26:10,770 --> 01:26:13,300 Și apoi se rupe din bucla, deoarece acesta nu îndeplinește 1708 01:26:13,300 --> 01:26:14,550 mai condiție. 1709 01:26:14,550 --> 01:26:16,650 >> Ce crezi că următorul console.log afiseaza? 1710 01:26:16,650 --> 01:26:20,570 1711 01:26:20,570 --> 01:26:24,790 Deci, asta e ceea ce ar face în C. În C, pentru că dacă aveți ca var i în afara 1712 01:26:24,790 --> 01:26:28,855 și aveți var i în interiorul unei bucle, ca un pentru bucla, apoi se face astfel încât 1713 01:26:28,855 --> 01:26:30,690 se luneta că cele două i sunt diferite. 1714 01:26:30,690 --> 01:26:34,630 În JavaScript, se va doar trateze ca pe același i. 1715 01:26:34,630 --> 01:26:37,870 Primesc 5, pentru că a fost valoarea după ce a ieșit din bucla. 1716 01:26:37,870 --> 01:26:39,120 Deci, aceste lui i sunt în același i. 1717 01:26:39,120 --> 01:26:42,620 1718 01:26:42,620 --> 01:26:44,130 Asta face sens? 1719 01:26:44,130 --> 01:26:45,720 >> Ei bine, are sens din un punct de vedere JavaScript. 1720 01:26:45,720 --> 01:26:49,510 Dar aceeași paradigmă nu reportare a C. Ei au 1721 01:26:49,510 --> 01:26:50,310 diferite reguli de definire a domeniului. 1722 01:26:50,310 --> 01:26:50,630 Da. 1723 01:26:50,630 --> 01:26:52,566 >> Audiența: [inaudibil] 1724 01:26:52,566 --> 01:26:54,990 în afara funcției [inaudibil]? 1725 01:26:54,990 --> 01:26:58,340 >> JOSEPH ONG: Deci, în afara căreia funcție? 1726 01:26:58,340 --> 01:27:00,810 Asa ca voi ajunge la faptul că, în doar o secundă. 1727 01:27:00,810 --> 01:27:02,580 Deci, noi numim foo (i). 1728 01:27:02,580 --> 01:27:06,920 Acest lucru trece i în foo, trepte ea, și apoi l busteni. 1729 01:27:06,920 --> 01:27:07,750 Deci, a fost de 5. 1730 01:27:07,750 --> 01:27:09,210 Deci, acesta devine 6. 1731 01:27:09,210 --> 01:27:11,670 Dar ce vorbesc despre este că am în această funcție. 1732 01:27:11,670 --> 01:27:14,430 Pentru că este un parametru, este luneta pentru această funcție. 1733 01:27:14,430 --> 01:27:17,800 Deci, odată ce am obține de fapt, din care funcție, este acum de gând să meargă 1734 01:27:17,800 --> 01:27:19,860 înapoi la vechea i. 1735 01:27:19,860 --> 01:27:23,000 Că i se luneta doar pentru că este într-o funcție. 1736 01:27:23,000 --> 01:27:24,200 Și ne-am domeniul de aplicare și funcții. 1737 01:27:24,200 --> 01:27:29,080 Dar nu avem domeniul de aplicare în afara de funcții în JavaScript. 1738 01:27:29,080 --> 01:27:31,170 Asta face sens? 1739 01:27:31,170 --> 01:27:31,320 Da. 1740 01:27:31,320 --> 01:27:31,660 Întrebare. 1741 01:27:31,660 --> 01:27:34,030 >> Audiența: Same [inaudibil]? 1742 01:27:34,030 --> 01:27:34,500 >> JOSEPH ONG: Deci da. 1743 01:27:34,500 --> 01:27:36,260 În PHP, e același tip de lucru. 1744 01:27:36,260 --> 01:27:37,680 Există o ușoară subtilitate de fapt. 1745 01:27:37,680 --> 01:27:40,130 Dar poți să mă întrebi despre că după revizuirea. 1746 01:27:40,130 --> 01:27:43,930 Nu aveți nevoie să știu că subtilitatea pentru testul. 1747 01:27:43,930 --> 01:27:47,600 Pentru toate punctele de vedere, cum ar fi variabile, la nivel mondial și PHP, cu excepția cazului în 1748 01:27:47,600 --> 01:27:49,150 acestea sunt într-o funcție, aceeași lucru în JavaScript. 1749 01:27:49,150 --> 01:27:49,480 Da. 1750 01:27:49,480 --> 01:27:52,890 >> Audiența: De ce este acest permis în JavaScript și nici unde altundeva? 1751 01:27:52,890 --> 01:27:55,010 >> JOSEPH ONG: Deci, ce este permis în JavaScript și nu în C? 1752 01:27:55,010 --> 01:27:58,180 Doar cine a venit cu JavaScript a decis că acest lucru a fost OK în 1753 01:27:58,180 --> 01:27:59,510 JavaScript. 1754 01:27:59,510 --> 01:28:02,430 Deci, e la fel ca un limbaj de programare convenție așa cum ne-ar spune. 1755 01:28:02,430 --> 01:28:02,580 Da. 1756 01:28:02,580 --> 01:28:04,480 >> Audiența: Deci, de ce a făcut a mers 6-5? 1757 01:28:04,480 --> 01:28:08,280 >> JOSEPH ONG: Deci, acesta a plecat 6-5, pentru că atunci când eu am trecut în foo, care 1758 01:28:08,280 --> 01:28:13,420 i în interiorul foo este acum luneta la foo, deoarece domeniul de aplicare există în funcții în 1759 01:28:13,420 --> 01:28:15,050 JavaScript. 1760 01:28:15,050 --> 01:28:18,720 Dar, odată ce ies de aici, pentru că a fost luneta la funcția, eu sunt doar 1761 01:28:18,720 --> 01:28:24,300 utilizarea i regulat care a fost în interiorul Restul fluxului de control. 1762 01:28:24,300 --> 01:28:25,210 Face sens? 1763 01:28:25,210 --> 01:28:26,910 Pot să merg mai departe? 1764 01:28:26,910 --> 01:28:27,320 Bine. 1765 01:28:27,320 --> 01:28:29,180 Rece. 1766 01:28:29,180 --> 01:28:31,890 >> Acceptarea este obiectelor sunt transmise prin referință. 1767 01:28:31,890 --> 01:28:33,990 Stii cum, atunci când treci o matrice în C ai putea 1768 01:28:33,990 --> 01:28:35,810 modifica de fapt matrice? 1769 01:28:35,810 --> 01:28:37,350 Este același lucru în JavaScript. 1770 01:28:37,350 --> 01:28:42,960 În cazul în care trec un obiect, în acest caz, am Milo a trecut în această funcție catify. 1771 01:28:42,960 --> 01:28:44,490 Milo începe. 1772 01:28:44,490 --> 01:28:46,310 Numele lui este Milo Banana. 1773 01:28:46,310 --> 01:28:51,670 Eu trec ca obiect într-o funcție pentru că este un obiect, un asociativ 1774 01:28:51,670 --> 01:28:53,730 matrice in JavaScript. 1775 01:28:53,730 --> 01:28:57,110 >> Când m-am efectua o operație în această funcție, ea va 1776 01:28:57,110 --> 01:28:58,560 de fapt, schimbarea obiectului. 1777 01:28:58,560 --> 01:29:01,720 Deci, acest lucru se va întâmpla doar pentru obiecte în JavaScript, ca doar se întâmplă 1778 01:29:01,720 --> 01:29:09,230 pentru tablouri din interiorul numelui C. Deci, Milo va deveni de fapt, cat acum. 1779 01:29:09,230 --> 01:29:10,090 Asta face sens? 1780 01:29:10,090 --> 01:29:11,840 Deci, aceasta funcționează numai pentru obiecte. 1781 01:29:11,840 --> 01:29:13,090 Obiectele sunt transmise prin referință. 1782 01:29:13,090 --> 01:29:13,400 Da. 1783 01:29:13,400 --> 01:29:16,850 >> Audiența: Deci tu spui că în contrast cu i. variabil. 1784 01:29:16,850 --> 01:29:17,240 >> JOSEPH ONG: Da. 1785 01:29:17,240 --> 01:29:20,330 Care variabila am fost doar un număr, nu? 1786 01:29:20,330 --> 01:29:25,280 E ca în C, atunci când trece un număr întreg o, face o copie. 1787 01:29:25,280 --> 01:29:28,130 Și atunci când treci un array, este de fapt schimba matricea reală în 1788 01:29:28,130 --> 01:29:32,870 C. Același lucru se întâmplă cu JavaScript în acest caz. 1789 01:29:32,870 --> 01:29:34,070 Bine. 1790 01:29:34,070 --> 01:29:38,134 Și apoi, Milo este trist pentru că el este acum o pisică. 1791 01:29:38,134 --> 01:29:40,790 1792 01:29:40,790 --> 01:29:45,060 Asta a fost de fapt Milo după unele excursie la veterinar. 1793 01:29:45,060 --> 01:29:46,860 >> Deci, cum putem folosi JavaScript într-o pagină web? 1794 01:29:46,860 --> 01:29:47,790 Putem să-l includă. 1795 01:29:47,790 --> 01:29:50,090 Acest lucru este cod HTML cu tag-uri de striptease. 1796 01:29:50,090 --> 01:29:51,300 Deci, am tag-uri de striptease acolo. 1797 01:29:51,300 --> 01:29:54,820 Și apoi am pus niște JavaScript Codul în tag-uri script. 1798 01:29:54,820 --> 01:29:56,390 Și apoi se execută acest lucru. 1799 01:29:56,390 --> 01:29:58,830 Când m-am doar o fac așa, e numit JavaScript inline. 1800 01:29:58,830 --> 01:30:02,400 E un fel de murdar, pentru că JavaScript este, de fapt în HTML. 1801 01:30:02,400 --> 01:30:07,010 >> O cale mai bună de a face acest lucru, mult mai frumos, este de a scrie JavaScript într-un 1802 01:30:07,010 --> 01:30:10,920 fișier extern și apoi furniza tag-ul script cu o sursă. 1803 01:30:10,920 --> 01:30:14,920 Și acest lucru va merge la acel fișier JavaScript și citi codul JavaScript de la 1804 01:30:14,920 --> 01:30:15,960 că dosarul în schimb. 1805 01:30:15,960 --> 01:30:18,820 Și în acest fel, nu aveți o mulțime de JavaScript la începutul dvs. 1806 01:30:18,820 --> 01:30:20,760 Fișier HTML, ceea ce face într-adevăr murdar. 1807 01:30:20,760 --> 01:30:21,860 Tocmai ai pus-o în altă parte. 1808 01:30:21,860 --> 01:30:24,310 Și apoi îl va citi de acolo. 1809 01:30:24,310 --> 01:30:25,560 A făcut că are sens? 1810 01:30:25,560 --> 01:30:27,990 1811 01:30:27,990 --> 01:30:29,640 >> Probleme de plasament. 1812 01:30:29,640 --> 01:30:32,620 În acest caz particular, script-ul este în fața organismului. 1813 01:30:32,620 --> 01:30:36,090 Așa că atunci când am executa asta, nu e nimic în organism încă. 1814 01:30:36,090 --> 01:30:39,920 Poate că acest lucru va face un pic mai mult simți când am arăta această parte următoare. 1815 01:30:39,920 --> 01:30:43,210 În acest caz, script-ul vine după div. 1816 01:30:43,210 --> 01:30:46,620 Deci, apare de fapt div pe pagina întâi. 1817 01:30:46,620 --> 01:30:49,470 Chiar aici în acest cerc mic de culoare roșie, veți vedea apare textul. 1818 01:30:49,470 --> 01:30:51,810 Și apoi alerta apare. 1819 01:30:51,810 --> 01:30:54,890 >> In primul caz, pentru ca scenariul a fost înainte de div, 1820 01:30:54,890 --> 01:30:56,170 alertă apare mai întâi. 1821 01:30:56,170 --> 01:30:59,250 Și apoi div apare după vă respingerea caseta. 1822 01:30:59,250 --> 01:31:01,330 Deci, executarea contează. 1823 01:31:01,330 --> 01:31:02,290 Deci, vom păstra în vedere acest lucru. 1824 01:31:02,290 --> 01:31:03,640 Acest lucru va fi important într-un pic. 1825 01:31:03,640 --> 01:31:08,730 1826 01:31:08,730 --> 01:31:09,540 OK. 1827 01:31:09,540 --> 01:31:12,750 Atât de bine, cum a face tu așteptați până la întreaga pagină este încărcată, atunci înainte de a 1828 01:31:12,750 --> 01:31:13,580 executa un cod? 1829 01:31:13,580 --> 01:31:15,540 Vom intra in acest lucru un pic Puțin mai târziu prea. 1830 01:31:15,540 --> 01:31:19,016 Dar chiar a păstra această destinație de plasare probleme în minte de când ne-am 1831 01:31:19,016 --> 01:31:20,570 vin la un alt diapozitiv. 1832 01:31:20,570 --> 01:31:22,030 >> Așa că am ajunge la DOM acum. 1833 01:31:22,030 --> 01:31:23,550 Și ceea ce este DOM? 1834 01:31:23,550 --> 01:31:26,830 Deci, dacă te uiți la codul HTML, e doar o grămadă de text de pe ecran. 1835 01:31:26,830 --> 01:31:30,560 Deci, cum se știe că JavaScript acesta este un element HTML? 1836 01:31:30,560 --> 01:31:33,410 Deci, trebuie să avem o anumită memorie Reprezentarea acestei 1837 01:31:33,410 --> 01:31:34,930 structura pe care o avem. 1838 01:31:34,930 --> 01:31:40,240 Și ori de câte ori avem acest lucru în memorie reprezentare în JavaScript, numim 1839 01:31:40,240 --> 01:31:41,750 că DOM. 1840 01:31:41,750 --> 01:31:45,130 Și e doar un mod în care oamenii au decis că noi ar trebui să reprezinte această 1841 01:31:45,130 --> 01:31:46,400 Structura HTML ca. 1842 01:31:46,400 --> 01:31:47,940 >> Și ce înseamnă acest DOM arata ca? 1843 01:31:47,940 --> 01:31:50,460 Ei bine, în reprezentare memorie, vom lua acest text. 1844 01:31:50,460 --> 01:31:52,870 Și l-am transforma în memorie reprezentare. 1845 01:31:52,870 --> 01:31:54,400 Deci, aceasta este HTML. 1846 01:31:54,400 --> 01:31:58,090 Deci, ne-am afla în primul rând faptul că fiecare DOM copac are un document. 1847 01:31:58,090 --> 01:31:59,400 Se pare ca un copac. 1848 01:31:59,400 --> 01:32:03,550 Și documentul conține HTML tag-ul, de fapt totul 1849 01:32:03,550 --> 01:32:05,150 în interiorul acestui acum. 1850 01:32:05,150 --> 01:32:06,970 Tag-ul HTML are doi copii. 1851 01:32:06,970 --> 01:32:08,630 Ea are un cap. 1852 01:32:08,630 --> 01:32:12,380 Că cap, dacă te uiți la indentare acolo la modul în care este structurat 1853 01:32:12,380 --> 01:32:14,960 între tag-uri apropiate, cap are un copil. 1854 01:32:14,960 --> 01:32:17,130 Copilul este titlu. 1855 01:32:17,130 --> 01:32:18,370 Exact. 1856 01:32:18,370 --> 01:32:21,000 >> Acum, avem un copil corp. 1857 01:32:21,000 --> 01:32:24,870 Și apoi că organismul are o copil numit familie. 1858 01:32:24,870 --> 01:32:27,950 Și că familia are trei copii - 1859 01:32:27,950 --> 01:32:29,550 mai vechi, de mijloc, și cel mai mic. 1860 01:32:29,550 --> 01:32:31,960 Deci, ar trebui să știi cum să atragă o diagramă ca acest lucru atunci când ne-am întreba cum 1861 01:32:31,960 --> 01:32:34,270 pentru a desena o diagramă, atunci când ne-am da tu HTML pe stânga. 1862 01:32:34,270 --> 01:32:36,350 Știu cum să producă copac DOM. 1863 01:32:36,350 --> 01:32:38,930 Și în interiorul acestor lucruri, nu doar un text, pe care l-am reprezentat 1864 01:32:38,930 --> 01:32:40,180 cutii cât mai puțin. 1865 01:32:40,180 --> 01:32:42,750 1866 01:32:42,750 --> 01:32:47,980 >> Are această structură arbore DOM face simț și ceea ce DOM este? 1867 01:32:47,980 --> 01:32:49,300 Deci, ce p suport pentru? 1868 01:32:49,300 --> 01:32:51,850 Peste aici, p acolo în care tag-ul reprezintă o 1869 01:32:51,850 --> 01:32:54,510 tag-ul paragraf în HTML. 1870 01:32:54,510 --> 01:32:57,080 Astfel încât să puteți privi în sus. 1871 01:32:57,080 --> 01:32:59,290 Dar aceasta înseamnă doar că e ceva spațiu pentru un text. 1872 01:32:59,290 --> 01:33:02,910 Și ea are unele CSS styling implicit, pentru că este o etichetă paragraf. 1873 01:33:02,910 --> 01:33:05,130 Dar nu prea vă faceți griji cu privire la că o parte prea mult. 1874 01:33:05,130 --> 01:33:07,510 Doar știu că este un substituent pentru un text. 1875 01:33:07,510 --> 01:33:08,480 Da. 1876 01:33:08,480 --> 01:33:10,200 Întrebare? 1877 01:33:10,200 --> 01:33:11,021 Da. 1878 01:33:11,021 --> 01:33:12,374 >> Audiența: Ați menționat doar CSS. 1879 01:33:12,374 --> 01:33:15,492 Familia și hash hash toate chestiile astea este de fapt 1880 01:33:15,492 --> 01:33:17,400 reprezentând ID-uri în CSS? 1881 01:33:17,400 --> 01:33:18,440 >> JOSEPH ONG: Da, exact. 1882 01:33:18,440 --> 01:33:20,380 Voi ajunge la ceea ce aceste hashes Adică într-o secundă. 1883 01:33:20,380 --> 01:33:23,480 Când Angela a trecut peste CSS, ea a vorbit despre selectoare CSS. 1884 01:33:23,480 --> 01:33:26,770 Acestea sunt selectorii CSS care ea a fost vorba. 1885 01:33:26,770 --> 01:33:28,268 Da, Rob? 1886 01:33:28,268 --> 01:33:32,060 >> ROB BOWDEN: Mi-ar comenta, de asemenea, că DOM în interiorul tag-ul titlu 1887 01:33:32,060 --> 01:33:35,385 este de asemenea un nod de text. 1888 01:33:35,385 --> 01:33:36,070 >> JOSEPH ONG: Corect. 1889 01:33:36,070 --> 01:33:38,370 Deci, în interiorul tag-ul titlu, Am niște DOM text. 1890 01:33:38,370 --> 01:33:42,730 Deci, într-adevăr, acest titlu ar trebui să aibă ca un cutie mică iasă din ea, de asemenea. 1891 01:33:42,730 --> 01:33:45,740 Dar nu contează cu adevărat prea mult în acest caz. 1892 01:33:45,740 --> 01:33:49,620 Noi nu le pasă într-adevăr de noduri de text, cum le numim, prea mult. 1893 01:33:49,620 --> 01:33:50,270 OK, vom face. 1894 01:33:50,270 --> 01:33:51,520 Aparent, facem. 1895 01:33:51,520 --> 01:33:54,260 1896 01:33:54,260 --> 01:33:57,100 Si eu va stabili că, atunci când Eu îl încărcați din nou. 1897 01:33:57,100 --> 01:33:59,830 Asta face sens? 1898 01:33:59,830 --> 01:34:01,160 >> Deci, cum putem lucra cu DOM? 1899 01:34:01,160 --> 01:34:03,790 Ori de câte ori te descurci cu DOM în JavaScript, există două etape. 1900 01:34:03,790 --> 01:34:05,030 Selectați un element de DOM. 1901 01:34:05,030 --> 01:34:06,580 Și apoi tu faci lucruri pentru ea. 1902 01:34:06,580 --> 01:34:11,480 Deci, în acest caz, abstract, am selectat elementul de mijloc. 1903 01:34:11,480 --> 01:34:14,530 Și apoi un exemplu de a face lucruri pentru aceasta ar fi modificarea textului. 1904 01:34:14,530 --> 01:34:16,020 Care folosit pentru a fi Bob. 1905 01:34:16,020 --> 01:34:19,930 Acum, ceea ce am făcut a fost să-l am schimbat Bob de Milo în acest caz. 1906 01:34:19,930 --> 01:34:22,130 >> Deci, cum de fapt, vom face acest lucru? 1907 01:34:22,130 --> 01:34:23,440 Cum facem selectarea? 1908 01:34:23,440 --> 01:34:26,560 Și cum facem ceea ce facem chestii de lucru pe care odată l-am luat-o? 1909 01:34:26,560 --> 01:34:30,470 Ei bine, modul în care voi l-au învățat în această clasă este prin utilizarea ceva ce 1910 01:34:30,470 --> 01:34:32,420 numit jQuery. 1911 01:34:32,420 --> 01:34:33,910 Deci, ce este jQuery? 1912 01:34:33,910 --> 01:34:37,220 jQuery este o bibliotecă care face JavaScript mai ușor să scrie. 1913 01:34:37,220 --> 01:34:39,500 Deci cineva a avut timp și a scris jQuery. 1914 01:34:39,500 --> 01:34:41,530 >> jQuery este de fapt scris în JavaScript. 1915 01:34:41,530 --> 01:34:44,550 Și apoi pentru că au făcut acest lucru, noi acum au o grămadă de funcții care 1916 01:34:44,550 --> 01:34:46,020 putem folosi ca face noastre trăiește foarte usor. 1917 01:34:46,020 --> 01:34:48,580 1918 01:34:48,580 --> 01:34:50,030 Deci, ce sunt unele dintre lucruri pe care le face? 1919 01:34:50,030 --> 01:34:51,650 Se face selectarea elementelor mai ușor. 1920 01:34:51,650 --> 01:34:54,020 Se face schimbarea HTML, adăugarea de clase mai ușor. 1921 01:34:54,020 --> 01:34:55,360 Se face mai ușor Ajax. 1922 01:34:55,360 --> 01:34:58,230 Vom ajunge la faptul că într-o secundă. 1923 01:34:58,230 --> 01:35:00,630 >> Și este similară cu biblioteci C. 1924 01:35:00,630 --> 01:35:03,090 Astfel încât să includă string.h, te strlen. 1925 01:35:03,090 --> 01:35:04,680 Ai strcpy, toate aceste lucruri. 1926 01:35:04,680 --> 01:35:09,650 Când includeți jQuery, te frumos moduri de a selecta elemente la schimbare 1927 01:35:09,650 --> 01:35:10,390 lucruri, etc. 1928 01:35:10,390 --> 01:35:12,990 Ai funcționalitate în plus că JavaScript nu te da. 1929 01:35:12,990 --> 01:35:15,310 Deci, jQuery JavaScript nu este. 1930 01:35:15,310 --> 01:35:18,660 jQuery este o bibliotecă care este scris în JavaScript care face JavaScript 1931 01:35:18,660 --> 01:35:20,440 mai ușor să scrie. 1932 01:35:20,440 --> 01:35:23,170 >> Deci, jQuery, nu este o programare limbă. 1933 01:35:23,170 --> 01:35:24,540 Dar JavaScript este. 1934 01:35:24,540 --> 01:35:27,420 1935 01:35:27,420 --> 01:35:27,590 face. 1936 01:35:27,590 --> 01:35:30,420 Vă că veți obține terminologie dreapta. 1937 01:35:30,420 --> 01:35:32,490 Orice întrebări? 1938 01:35:32,490 --> 01:35:33,882 Da. 1939 01:35:33,882 --> 01:35:35,132 E o întrebare? 1940 01:35:35,132 --> 01:35:37,910 1941 01:35:37,910 --> 01:35:38,350 Bine. 1942 01:35:38,350 --> 01:35:40,080 Deci, cum a face tu utilizați jQuery? 1943 01:35:40,080 --> 01:35:42,390 Ei bine, atunci cand scrii ceva JavaScript cod și să includă o 1944 01:35:42,390 --> 01:35:45,570 jQuery în partea de sus a fișierului ca o fișier script, utilizați semnul dolar 1945 01:35:45,570 --> 01:35:47,310 acum pentru a obține acces la jQuery. 1946 01:35:47,310 --> 01:35:49,860 Și acest lucru este diferit de semnul dolar în PHP. 1947 01:35:49,860 --> 01:35:51,590 >> Este același simbolul tip de pe tastatură. 1948 01:35:51,590 --> 01:35:52,780 Dar ei spun lucruri foarte diferite. 1949 01:35:52,780 --> 01:35:56,090 Semn dolar în PHP înseamnă acest lucru este cum am declara o variabilă. 1950 01:35:56,090 --> 01:35:59,120 În JavaScript, atunci când le-ați inclus jQuery, ea standuri pentru jQuery. 1951 01:35:59,120 --> 01:36:01,280 Astfel încât să păstreze în minte. 1952 01:36:01,280 --> 01:36:03,420 Deci, cum am putea selecta elemente DOM? 1953 01:36:03,420 --> 01:36:06,500 Ei bine, atunci când o faci urât JavaScript Astfel, aveți acces la 1954 01:36:06,500 --> 01:36:08,240 documenta variabilă globală. 1955 01:36:08,240 --> 01:36:11,170 Și atunci veți obține elementul de familie ID. 1956 01:36:11,170 --> 01:36:15,270 Acest lucru este foarte lung și prolix și nu foarte frumos. 1957 01:36:15,270 --> 01:36:18,190 >> Sau puteți obține toate elementele că sunt o etichetă p. 1958 01:36:18,190 --> 01:36:20,080 Care lucrează prea în JavaScript. 1959 01:36:20,080 --> 01:36:22,470 Dar niciodată nu am arătat într-adevăr vă sintaxa prea mult. 1960 01:36:22,470 --> 01:36:24,620 Ceea ce am aratat ce a fost jQuery. 1961 01:36:24,620 --> 01:36:28,720 Astfel că întreaga selector acolo că a fost exprimată în activarea JavaScript-doar se 1962 01:36:28,720 --> 01:36:33,320 condensat la acest dolar foarte frumos semneze familie hashtag. 1963 01:36:33,320 --> 01:36:38,480 Și $ p, doar în cazul în care e așa. 1964 01:36:38,480 --> 01:36:41,690 Dacă doriți să selectați toate etichetele p în interiorul o familie, am pus un spațiu 1965 01:36:41,690 --> 01:36:42,890 între cele două. 1966 01:36:42,890 --> 01:36:44,815 Și acum, vom obține toate p tag-uri în interiorul unei familii. 1967 01:36:44,815 --> 01:36:48,740 1968 01:36:48,740 --> 01:36:50,380 >> Și uite familiar? 1969 01:36:50,380 --> 01:36:52,880 Ei bine, Angela a vorbit despre Selectoare CSS. 1970 01:36:52,880 --> 01:36:54,200 Dă-mi o secundă. 1971 01:36:54,200 --> 01:36:57,230 Și astfel, în scopul de a selecta un element, folosiți doar acelasi lucru ca si tine 1972 01:36:57,230 --> 01:36:58,530 ar face cu un selector CSS. 1973 01:36:58,530 --> 01:37:00,910 Dacă puneți un hash in fata de ea, se selectează de identitate. 1974 01:37:00,910 --> 01:37:02,220 Un punct selectează de clase. 1975 01:37:02,220 --> 01:37:06,230 Dacă aveți doar un lucru fără hash sau puncte, se selectează aceste etichete. 1976 01:37:06,230 --> 01:37:07,140 Întrebări. 1977 01:37:07,140 --> 01:37:07,470 Da? 1978 01:37:07,470 --> 01:37:11,510 >> Audiența: Când folosim punct în nostru HTML, este că nu jQuery? 1979 01:37:11,510 --> 01:37:13,520 >> JOSEPH ONG: Dot în HTML nostru este un lucru JavaScript. 1980 01:37:13,520 --> 01:37:14,750 Nu e un lucru jQuery. 1981 01:37:14,750 --> 01:37:17,620 Modul în care voi l învățat cu jQuery este de a utiliza. html. 1982 01:37:17,620 --> 01:37:21,510 Și apoi a trecut indiferent de HTML va fi. 1983 01:37:21,510 --> 01:37:23,480 Asa ca voi ajunge la faptul că, în doar un al doilea, de fapt. 1984 01:37:23,480 --> 01:37:27,800 Deci, cum putem face lucruri la elementul odată ce ne-am ales? 1985 01:37:27,800 --> 01:37:30,130 Deci, asta e un exemplu de selectarea unui element. 1986 01:37:30,130 --> 01:37:32,280 Deci, acum, vrem să facem lucruri pentru ea. 1987 01:37:32,280 --> 01:37:35,730 >> Deci, în acest caz, lasă-mă să mă întorc la diapozitivul anterior. 1988 01:37:35,730 --> 01:37:37,360 A fost Bob înainte. 1989 01:37:37,360 --> 01:37:40,660 Și vreau să schimb asta în interiorul HTML pentru Milo. 1990 01:37:40,660 --> 01:37:43,240 Așa că am apela funcția HTML din elementul. 1991 01:37:43,240 --> 01:37:45,580 Această funcție este HTML o metodă de elemente. 1992 01:37:45,580 --> 01:37:47,430 Și apoi l-am da ce Vreau HTML să fie. 1993 01:37:47,430 --> 01:37:50,560 Și doar înlocuiește ceea ce este în interiorul că tag-ul cu tot ce-l dau. 1994 01:37:50,560 --> 01:37:50,830 Da. 1995 01:37:50,830 --> 01:37:51,170 Întrebare? 1996 01:37:51,170 --> 01:37:57,397 >> Audiența: hashtag este utilizat pentru numai jQuery. 1997 01:37:57,397 --> 01:37:59,313 [Inaudibil] 1998 01:37:59,313 --> 01:38:01,230 nu ne-ar folosi. 1999 01:38:01,230 --> 01:38:01,960 >> JOSEPH ONG: Da, exact. 2000 01:38:01,960 --> 01:38:03,750 Dar nu vă faceți griji prea mult JavaScript despre pur. 2001 01:38:03,750 --> 01:38:06,670 Vreau doar voi să se concentreze pe modul în care ar face-o cu jQuery, deoarece 2002 01:38:06,670 --> 01:38:10,020 care va fi importante parte la testul. 2003 01:38:10,020 --> 01:38:10,400 Corect. 2004 01:38:10,400 --> 01:38:10,880 Exact. 2005 01:38:10,880 --> 01:38:16,025 Deci, vedeți că hashtag, astfel încât corespunde selecta elementul cu 2006 01:38:16,025 --> 01:38:18,310 mijlocul de identitate din cauza asta hashtag. 2007 01:38:18,310 --> 01:38:19,670 Hashtag înseamnă identitate. 2008 01:38:19,670 --> 01:38:22,870 Și acest element are o identitate de mijloc. 2009 01:38:22,870 --> 01:38:24,366 Deci, asta e elementul vom selecta. 2010 01:38:24,366 --> 01:38:27,160 >> Audiența: [inaudibil]. 2011 01:38:27,160 --> 01:38:31,090 semn dolar hashtag [inaudibil]? 2012 01:38:31,090 --> 01:38:31,710 >> JOSEPH ONG: Deci, nu. 2013 01:38:31,710 --> 01:38:33,280 Întrebarea se poate utiliza. Valoare. 2014 01:38:33,280 --> 01:38:36,445 Și valoare. Funcționează doar pe elemente că sunt intrări. 2015 01:38:36,445 --> 01:38:40,950 2016 01:38:40,950 --> 01:38:45,495 În jQuery, ar fi . Val, nu. Valoare. 2017 01:38:45,495 --> 01:38:49,080 Așa că voi ajunge la un mic exemplu care demonstrează toate acestea, în combinație 2018 01:38:49,080 --> 01:38:49,850 într-un al doilea. 2019 01:38:49,850 --> 01:38:53,130 Dar cred că acest lucru servește un mic fragment are sens pentru oameni până acum. 2020 01:38:53,130 --> 01:38:55,450 Doriți să schimbați HTML, apela metoda HTML. 2021 01:38:55,450 --> 01:38:56,432 Da. 2022 01:38:56,432 --> 01:38:58,200 >> Audiența: Puteti explica Metoda din nou? 2023 01:38:58,200 --> 01:39:01,900 >> JOSEPH ONG: Deci, o metodă este doar o funcție care face parte din una, în această 2024 01:39:01,900 --> 01:39:04,590 caz, unul dintre aceste elemente DOM, pentru că te văd eu 2025 01:39:04,590 --> 01:39:05,940 selectat elementul primul. 2026 01:39:05,940 --> 01:39:07,320 De fapt, permiteți-mi să folosesc mouse-ul. 2027 01:39:07,320 --> 01:39:09,330 Am selectat elementul de primul. 2028 01:39:09,330 --> 01:39:12,310 Și apoi am numit acest HTML funcționeze că a avut. 2029 01:39:12,310 --> 01:39:15,710 Și pentru că această funcție aparține acest lucru, o numim o metodă. 2030 01:39:15,710 --> 01:39:19,480 Asta e doar un nume fantezist pentru ea. 2031 01:39:19,480 --> 01:39:20,730 Spun asta din nou. 2032 01:39:20,730 --> 01:39:22,880 2033 01:39:22,880 --> 01:39:25,170 Deci, amintiți-vă, am selectat Elementul acum. 2034 01:39:25,170 --> 01:39:27,810 Și l-am pus în interiorul variabila elementului. 2035 01:39:27,810 --> 01:39:28,600 Corecta? 2036 01:39:28,600 --> 01:39:34,380 >> Așa că atunci când ne-o dorim pentru a schimba HTML pe interior, pentru că a fost Bob înainte, 2037 01:39:34,380 --> 01:39:36,420 doriți să modificați acest text la Milo. 2038 01:39:36,420 --> 01:39:37,920 Deci, noi numim HTML. 2039 01:39:37,920 --> 01:39:41,610 Și l-am spune ce HTML interior acest element ar trebui să fie acum. 2040 01:39:41,610 --> 01:39:44,107 Și așa se schimbă la Milo, pentru că l-am dat Milo. 2041 01:39:44,107 --> 01:39:46,542 >> Audiența: Deci, ei lucrează împreună. 2042 01:39:46,542 --> 01:39:47,030 [Inaudibil] 2043 01:39:47,030 --> 01:39:47,390 >> JOSEPH ONG: Da, da. 2044 01:39:47,390 --> 01:39:48,180 Ei lucrează împreună. 2045 01:39:48,180 --> 01:39:50,210 Deci, unul din ei selectează Elementul primul. 2046 01:39:50,210 --> 01:39:52,863 Iar cea de a doua nu ceva la ea. 2047 01:39:52,863 --> 01:39:53,790 Da. 2048 01:39:53,790 --> 01:39:56,168 >> Audiența: [inaudibil]. 2049 01:39:56,168 --> 01:40:01,280 Dacă această metodă este diferită de la HTML aveți metoda egal real. 2050 01:40:01,280 --> 01:40:01,560 >> JOSEPH ONG: Da. 2051 01:40:01,560 --> 01:40:03,370 Aceasta este o metodă diferită. 2052 01:40:03,370 --> 01:40:04,670 Aceasta este o metodă diferită. 2053 01:40:04,670 --> 01:40:07,860 Și putem acoperi faptul că, în doar o secundă atunci când vom ajunge la un exemplu. 2054 01:40:07,860 --> 01:40:12,000 Vreau să vă asigurați că vom accelera pentru că suntem în criză de timp. 2055 01:40:12,000 --> 01:40:15,360 Dar ne-am rula mult peste timp acum. 2056 01:40:15,360 --> 01:40:15,490 OK. 2057 01:40:15,490 --> 01:40:16,430 Rece. 2058 01:40:16,430 --> 01:40:20,130 Deci, dacă doriți să adăugați o clasă, există de asemenea, o metodă de adăugare de clasă. 2059 01:40:20,130 --> 01:40:24,300 Acesta este doar un exemplu de ceea ce puteți face cu jQuery. 2060 01:40:24,300 --> 01:40:25,950 Care adaugă doar o clasă. 2061 01:40:25,950 --> 01:40:28,660 >> Dacă doriți să-l eliminați, puteți apela elimina. 2062 01:40:28,660 --> 01:40:32,280 Asta e doar un alt lucru pe care îl pot face. 2063 01:40:32,280 --> 01:40:35,680 Deci, mai multe exemple de lucruri pe care le puteți face. 2064 01:40:35,680 --> 01:40:37,510 Deci, poate tocmai am pus la în partea de sus ca acest lucru? 2065 01:40:37,510 --> 01:40:38,760 Cel mai tanar elimina. 2066 01:40:38,760 --> 01:40:42,470 2067 01:40:42,470 --> 01:40:45,930 Dacă aș executa doar că JavaScript la partea de sus a dosarul meu, va merge asta? 2068 01:40:45,930 --> 01:40:48,540 2069 01:40:48,540 --> 01:40:48,920 Corect. 2070 01:40:48,920 --> 01:40:50,530 Deoarece de mijloc nu există încă. 2071 01:40:50,530 --> 01:40:51,840 Deci, acest lucru nu este de gând să lucreze. 2072 01:40:51,840 --> 01:40:52,800 Ordin de execuție. 2073 01:40:52,800 --> 01:40:55,040 Se merge la partea de sus prima. 2074 01:40:55,040 --> 01:40:55,540 Ce? 2075 01:40:55,540 --> 01:40:57,450 >> Audiența: Cel mai tanar nu există încă? 2076 01:40:57,450 --> 01:40:57,810 >> JOSEPH ONG: Da. 2077 01:40:57,810 --> 01:40:58,710 Cel mai tanar nu există încă. 2078 01:40:58,710 --> 01:40:59,600 Exact. 2079 01:40:59,600 --> 01:41:01,320 >> Audiența: Ai spus de mijloc. 2080 01:41:01,320 --> 01:41:01,510 >> JOSEPH ONG: Îmi pare rău. 2081 01:41:01,510 --> 01:41:02,720 Cel mai tanar nu există încă. 2082 01:41:02,720 --> 01:41:04,510 Și un alt lucru este că nu avem inclus jQuery 2083 01:41:04,510 --> 01:41:06,580 depună cere script src. 2084 01:41:06,580 --> 01:41:07,960 Astfel că nu va merge. 2085 01:41:07,960 --> 01:41:09,580 De fapt, nu am făcut asta în slide-ul urmator, care este 2086 01:41:09,580 --> 01:41:10,700 Ar trebui să se stabilească faptul că, fie. 2087 01:41:10,700 --> 01:41:14,120 Dar modul în care facem acest lucru este JavaScript este determinate de un eveniment. 2088 01:41:14,120 --> 01:41:17,410 Deci, ceea ce facem este să folosim un eveniment Handler pentru a face acest lucru. 2089 01:41:17,410 --> 01:41:19,510 Și așa am selectați documentul primul set. 2090 01:41:19,510 --> 01:41:23,810 Eu spun, OK, atunci când documentul este gata, lasă-mă să executați o funcție. 2091 01:41:23,810 --> 01:41:25,470 Deci, asta e tot ceea ce înseamnă de sintaxă. 2092 01:41:25,470 --> 01:41:27,100 >> Am selectat documentul. 2093 01:41:27,100 --> 01:41:29,530 Acum, în cazul în care documentul este gata, executați funcția. 2094 01:41:29,530 --> 01:41:32,970 Și astfel pe aici atunci când documentul este gata, ceea ce înseamnă toate HTML are 2095 01:41:32,970 --> 01:41:36,140 încărcat, apoi am rulat funcția care elimină acest element. 2096 01:41:36,140 --> 01:41:40,270 Iar acum, când am alerga această funcție că am trecut în gata, eu sunt 2097 01:41:40,270 --> 01:41:43,780 garantat că toate HTML pagina va exista mai întâi. 2098 01:41:43,780 --> 01:41:44,100 Da. 2099 01:41:44,100 --> 01:41:44,425 Întrebare? 2100 01:41:44,425 --> 01:41:48,200 >> Audienta: Care este cuvântul cheie eveniment în funcția? 2101 01:41:48,200 --> 01:41:51,750 >> JOSEPH ONG: Deci, acel cuvânt cheie eveniment în Funcția este doar un parametru care 2102 01:41:51,750 --> 01:41:53,490 devine trecut la funcția de pentru orice eveniment. 2103 01:41:53,490 --> 01:41:55,470 Este doar ceva ce te gratuit. 2104 01:41:55,470 --> 01:41:59,320 Când utilizați Stivuitoare-cheie în pset8, acest eveniment ar putea să vă spun, pentru 2105 01:41:59,320 --> 01:42:01,350 exemplu, cheia pe care ați apăsat pe. 2106 01:42:01,350 --> 01:42:05,540 În acest caz, pentru un eveniment gata, nu este de fapt foarte util. 2107 01:42:05,540 --> 01:42:08,640 Dar pentru un eveniment-cheie în jos, e mai mult util, pentru că veți obține pentru a ști ce 2108 01:42:08,640 --> 01:42:12,330 cheie ai presat prin accesarea cheie cod de pe acel obiect eveniment. 2109 01:42:12,330 --> 01:42:13,530 Corecta? 2110 01:42:13,530 --> 01:42:15,160 Asta face sens? 2111 01:42:15,160 --> 01:42:16,280 OK. 2112 01:42:16,280 --> 01:42:16,580 Da. 2113 01:42:16,580 --> 01:42:17,150 Întrebare? 2114 01:42:17,150 --> 01:42:19,290 >> Audiența: Deci, poate ai pus tag-ul script-ul de jos în jos? 2115 01:42:19,290 --> 01:42:19,940 >> JOSEPH ONG: Deci da. 2116 01:42:19,940 --> 01:42:21,500 Ai putea pune scriptul tag-ul mai mic jos. 2117 01:42:21,500 --> 01:42:23,090 Dar atunci doar devine foarte murdar. 2118 01:42:23,090 --> 01:42:26,590 Și ne place de a centraliza toate de codul nostru într-un singur loc. 2119 01:42:26,590 --> 01:42:28,290 Și acest lucru ne va permite să o facă. 2120 01:42:28,290 --> 01:42:32,010 Amintiți-vă mai devreme am spus că e un frumos modalitate de a se asigura că sunt elemente 2121 01:42:32,010 --> 01:42:33,880 pe pagina înainte de a executa cod? 2122 01:42:33,880 --> 01:42:36,079 Și acesta este doar un mod frumos v-ar realiza asta. 2123 01:42:36,079 --> 01:42:37,329 >> Audiența: [inaudibil]. 2124 01:42:37,329 --> 01:42:41,710 2125 01:42:41,710 --> 01:42:42,230 >> JOSEPH ONG: Da. 2126 01:42:42,230 --> 01:42:43,460 Tu ar trebui să, nu? 2127 01:42:43,460 --> 01:42:46,930 Pentru că amintiți-vă, ați inclus file din partea de sus a paginii. 2128 01:42:46,930 --> 01:42:49,890 Deci, se va executa înainte de ajungi la partea de jos a paginii. 2129 01:42:49,890 --> 01:42:54,600 2130 01:42:54,600 --> 01:42:55,180 OK. 2131 01:42:55,180 --> 01:42:59,210 Deci, puteți, de asemenea, să adăugați un alt tip de tratare a evenimentului. 2132 01:42:59,210 --> 01:43:00,640 Acesta procesează doar clicuri. 2133 01:43:00,640 --> 01:43:03,910 Când m-am faceți clic pe cel mai mic, atunci se va deschide cu o alertă. 2134 01:43:03,910 --> 01:43:05,440 Acesta este doar un alt tip de eveniment. 2135 01:43:05,440 --> 01:43:08,840 Spre deosebire de evenimentul gata, acum folosi evenimentul click atunci când primiți 2136 01:43:08,840 --> 01:43:10,190 clic pe un element. 2137 01:43:10,190 --> 01:43:13,860 >> Și astfel, în acest caz, amintiți-vă, faceți clic handler este atașat la cel mai mic. 2138 01:43:13,860 --> 01:43:16,080 Așa se întâmplă numai atunci când Am faceți clic pe cel mai mic. 2139 01:43:16,080 --> 01:43:19,510 Și în celălalt, evenimentul gata a fost atașat documentului. 2140 01:43:19,510 --> 01:43:23,750 Așa că așteaptă documentul să fie gata. 2141 01:43:23,750 --> 01:43:25,120 Face sens? 2142 01:43:25,120 --> 01:43:26,190 Cred că pot merge mai departe. 2143 01:43:26,190 --> 01:43:26,610 Da. 2144 01:43:26,610 --> 01:43:26,980 Întrebare? 2145 01:43:26,980 --> 01:43:28,230 >> Audiența: [inaudibil]. 2146 01:43:28,230 --> 01:43:31,676 2147 01:43:31,676 --> 01:43:33,620 în acest caz, folosiți [neauzit]. 2148 01:43:33,620 --> 01:43:36,650 >> JOSEPH ONG: Oh, da, pentru că în acest caz, trebuie să așteptați pentru cel mai tânăr 2149 01:43:36,650 --> 01:43:40,740 elementul să apară pe ecran primul înainte de a putea atașa un handler click pentru a 2150 01:43:40,740 --> 01:43:43,062 ea, care este motivul pentru care l-am pus în interiorul a unui document pregătit. 2151 01:43:43,062 --> 01:43:45,780 2152 01:43:45,780 --> 01:43:46,840 OK. 2153 01:43:46,840 --> 01:43:52,390 Și viitoare, astfel încât acesta este un mare exemplu de modul în care s-ar combina totul. 2154 01:43:52,390 --> 01:43:55,930 Acesta este doar un exemplu formular de validare le-ați văzut în curs. 2155 01:43:55,930 --> 01:43:58,410 Deci, ia-o pas cu pas cum tu treci prin asta. 2156 01:43:58,410 --> 01:43:59,590 Și aceasta va fi în totalitate bine. 2157 01:43:59,590 --> 01:44:01,400 Doar citit-o de sus în jos. 2158 01:44:01,400 --> 01:44:03,030 >> Am un formular în partea de jos. 2159 01:44:03,030 --> 01:44:07,590 În cazul în care documentul este gata, am atașa un prezenta handler la forma, astfel încât 2160 01:44:07,590 --> 01:44:12,910 când am formularul, am obține valorile în fiecare dintre aceste intrări. 2161 01:44:12,910 --> 01:44:14,560 Și am verifica dacă este gol. 2162 01:44:14,560 --> 01:44:17,090 Dacă e gol, mă voi întoarce false, deoarece Nu vreau să trimiteți formularul, 2163 01:44:17,090 --> 01:44:18,950 deoarece forma este greșită. 2164 01:44:18,950 --> 01:44:22,040 Dacă parola este gol sau este mai puțin mult de opt caractere, nu depun 2165 01:44:22,040 --> 01:44:24,470 formă, pentru că asta e, de asemenea, greșit. 2166 01:44:24,470 --> 01:44:28,150 Și fals retur doar previne formularul de depunere și 2167 01:44:28,150 --> 01:44:30,150 merge la o nouă pagină. 2168 01:44:30,150 --> 01:44:31,310 >> Și sperăm că, acest lucru are sens. 2169 01:44:31,310 --> 01:44:34,650 Cred că voi ar trebui să meargă prin acest cod pas cu pas pe cont propriu. 2170 01:44:34,650 --> 01:44:38,350 Și odată ce ați înțeles ce select elemente și de a face lucruri pentru a 2171 01:44:38,350 --> 01:44:40,520 de fapt implică, acest lucru va face o mulțime de sens pentru tine. 2172 01:44:40,520 --> 01:44:41,295 Da? 2173 01:44:41,295 --> 01:44:44,150 >> Audiența: Ce înseamnă name = numele de utilizator înseamnă? 2174 01:44:44,150 --> 01:44:48,530 >> JOSEPH ONG: Deci name = numele de utilizator și name = parolă înseamnă doar uita-te la 2175 01:44:48,530 --> 01:44:50,730 atribut de orice te selectarea. 2176 01:44:50,730 --> 01:44:51,790 Și apoi că trebuie să se potrivească. 2177 01:44:51,790 --> 01:44:53,870 Așa că am intra în înregistrare. 2178 01:44:53,870 --> 01:44:56,240 Și apoi ne-am uita-te la toate intrările și de înregistrare. 2179 01:44:56,240 --> 01:44:59,990 Și apoi ne-am alege una în care numele atribut este egal cu numele de utilizator. 2180 01:44:59,990 --> 01:45:04,040 Astfel încât primul Selector doar selectează de intrare de utilizator. 2181 01:45:04,040 --> 01:45:08,220 Și că al doilea selector selectează doar parola una, pentru că acestea au 2182 01:45:08,220 --> 01:45:12,240 atribute numele lor stabilit ca ceea ce ei ar trebui să fie. 2183 01:45:12,240 --> 01:45:12,575 Întrebare? 2184 01:45:12,575 --> 01:45:17,030 >> Audiența: La prezentarea, cum face partea de jos a rezolva partea de sus? 2185 01:45:17,030 --> 01:45:19,350 >> JOSEPH ONG: Deci, asta e pentru că de tratare a evenimentului. 2186 01:45:19,350 --> 01:45:23,000 Deci, suntem de așteptare pentru un eveniment prezinte care este concediat de la forma. 2187 01:45:23,000 --> 01:45:24,730 Și asta e tot ce este prezenta. 2188 01:45:24,730 --> 01:45:26,080 De ce am numi prezenta acolo sus? 2189 01:45:26,080 --> 01:45:28,870 Se spune, atunci când formularul este transmis, I a lua un eveniment prezinte. 2190 01:45:28,870 --> 01:45:33,480 Deci, permiteți-mi să intercepteze că și apoi executați acest cod în loc. 2191 01:45:33,480 --> 01:45:33,823 Da? 2192 01:45:33,823 --> 01:45:35,866 >> Audiența: De ce ai pentru a avea eveniment funcție? 2193 01:45:35,866 --> 01:45:38,580 De ce nu doar [inaudibil] nu-i așa? 2194 01:45:38,580 --> 01:45:41,140 >> JOSEPH ONG: Pentru ca în JavaScript, vă trebuie să declare funcții. 2195 01:45:41,140 --> 01:45:42,910 Asta e doar modul în care funcționează în JavaScript. 2196 01:45:42,910 --> 01:45:44,800 Trebuie să spun că se întâmplă pentru a rula o funcție. 2197 01:45:44,800 --> 01:45:47,290 Deci vrei să-l spui că ești așteaptă o funcție aici în loc de 2198 01:45:47,290 --> 01:45:48,260 doar acolade. 2199 01:45:48,260 --> 01:45:50,460 >> Audiența: Și funcția este ceea ce urmează? 2200 01:45:50,460 --> 01:45:50,650 >> JOSEPH ONG: Da. 2201 01:45:50,650 --> 01:45:52,790 Funcția este tot ceea ce este în interiorul acolade după 2202 01:45:52,790 --> 01:45:53,630 această funcție de cuvinte cheie. 2203 01:45:53,630 --> 01:45:54,045 Da? 2204 01:45:54,045 --> 01:45:55,295 >> Audiența: [inaudibil]. 2205 01:45:55,295 --> 01:46:00,180 2206 01:46:00,180 --> 01:46:00,660 >> JOSEPH ONG: Pentru prezenta? 2207 01:46:00,660 --> 01:46:03,520 >> Audiența: Nu, pentru funcția de fără evenimentul. 2208 01:46:03,520 --> 01:46:03,770 >> JOSEPH ONG: Da. 2209 01:46:03,770 --> 01:46:05,610 Deci, fără evenimentul, poti avea asta. 2210 01:46:05,610 --> 01:46:08,480 Dacă nu aveți nevoie de eveniment, atunci puteți să-l omite. 2211 01:46:08,480 --> 01:46:12,220 Dar dacă ai face, atunci doar pus-o acolo. 2212 01:46:12,220 --> 01:46:12,520 Da. 2213 01:46:12,520 --> 01:46:13,190 Întrebare rapid? 2214 01:46:13,190 --> 01:46:14,440 >> Audiența: [inaudibil]. 2215 01:46:14,440 --> 01:46:21,170 2216 01:46:21,170 --> 01:46:21,440 >> JOSEPH ONG: Da. 2217 01:46:21,440 --> 01:46:24,550 Pentru că ceea ce trebuie să faci, document.ready spune doar așteptați pentru toate 2218 01:46:24,550 --> 01:46:26,540 HTML pe pagina să se încarce mai întâi. 2219 01:46:26,540 --> 01:46:30,510 Și, de obicei, vrei elemente de în loc înainte de a executa orice cod. 2220 01:46:30,510 --> 01:46:31,030 Bine. 2221 01:46:31,030 --> 01:46:32,180 Trebuie să ajungem la Ajax. 2222 01:46:32,180 --> 01:46:33,110 Nu avem prea mult timp. 2223 01:46:33,110 --> 01:46:35,170 Deci, argumente pro și contra. 2224 01:46:35,170 --> 01:46:37,450 JavaScript este mai ușor de încercare scrie cu jQuery. 2225 01:46:37,450 --> 01:46:38,930 Dar jQuery este un fel de lent. 2226 01:46:38,930 --> 01:46:42,290 >> E ca si cum PHP este mai lent decât C, deoarece este interpretat. 2227 01:46:42,290 --> 01:46:45,690 Și jQuery este un pic mai lent decât JavaScript, pentru că are o mulțime de 2228 01:46:45,690 --> 01:46:46,630 lucrurile sub capota. 2229 01:46:46,630 --> 01:46:48,660 Și așa că, dacă sunteți folosind jQuery, este doar un pic mai lent decât 2230 01:46:48,660 --> 01:46:51,630 JavaScript, chiar dacă aceasta vă oferă eleganță frumos. 2231 01:46:51,630 --> 01:46:53,970 Și, în sfârșit, Ajax. 2232 01:46:53,970 --> 01:46:59,170 Până în prezent cu Ajax, nu ați văzut Ajax în încă punct de vedere al pset7, deoarece 2233 01:46:59,170 --> 01:47:01,150 atunci când faci, vă prezintă o formă de citat. 2234 01:47:01,150 --> 01:47:02,350 Se încarcă o pagină nouă. 2235 01:47:02,350 --> 01:47:04,440 Astfel încât să obțineți acest bliț alb mare pe pagina iar cea 2236 01:47:04,440 --> 01:47:06,820 încarcă pagina a doua, corect? 2237 01:47:06,820 --> 01:47:08,780 >> Ar fi foarte frumos dacă nu au avut acest flash. 2238 01:47:08,780 --> 01:47:11,600 Cum ar fi Facebook, dacă doar defilați la în partea de jos, se adaugă conținut nou 2239 01:47:11,600 --> 01:47:13,490 fără refresh întreaga pagină. 2240 01:47:13,490 --> 01:47:15,420 Deci, ceva de genul asta ar fi frumos. 2241 01:47:15,420 --> 01:47:17,370 Acest lucru este cod JavaScript în partea stângă. 2242 01:47:17,370 --> 01:47:19,390 Ai ceea ce este în interiorul de acea intrare. 2243 01:47:19,390 --> 01:47:21,340 Veți obține informații de stoc de la Yahoo! 2244 01:47:21,340 --> 01:47:27,440 Și apoi face un șir de mare care spune, OK, acesta este mesajul pe care vreau 2245 01:47:27,440 --> 01:47:28,400 pentru a afișa pe ecran. 2246 01:47:28,400 --> 01:47:32,280 Și apoi ai pus acest mesaj în interiorul de un element HTML care devine 2247 01:47:32,280 --> 01:47:33,970 afișat pe ecran. 2248 01:47:33,970 --> 01:47:35,540 >> Deci, asta e tot ce se întâmplă aici. 2249 01:47:35,540 --> 01:47:39,410 Deci, practic, pentru că acest lucru este tot JavaScript și nu aveți nevoie pentru a rula 2250 01:47:39,410 --> 01:47:42,980 mai PHP, acest lucru va asigurați-vă că că pagina nu reîmprospătare. 2251 01:47:42,980 --> 01:47:47,470 Deci, aceasta este doar o idee abstractă că spun aici, pentru acum. 2252 01:47:47,470 --> 01:47:50,630 Ideea abstractă este că dacă o faci toate în JavaScript, care nu au o 2253 01:47:50,630 --> 01:47:52,330 pagina de reîmprospătare. 2254 01:47:52,330 --> 01:47:53,800 Dar cum a face tu face de fapt acest lucru? 2255 01:47:53,800 --> 01:47:56,230 >> Ei bine, de fapt, hai sa vorbim despre o problemă cu aceasta prima. 2256 01:47:56,230 --> 01:47:59,340 O problemă este în JavaScript, execuție este sincron. 2257 01:47:59,340 --> 01:48:02,000 Deci, va trebui să așteptați pentru o linie pentru a termina înainte de a 2258 01:48:02,000 --> 01:48:03,370 executa următoarea linie. 2259 01:48:03,370 --> 01:48:06,130 Și ce dacă am de gând pe la Yahoo!, și serverele lor sunt foarte lent, și 2260 01:48:06,130 --> 01:48:08,790 le ia trei secunde pentru a Dă-mi înapoi ca informatii despre stoc? 2261 01:48:08,790 --> 01:48:12,620 Când m-am lovit linia de preț, în cazul în care execuție este sincron, așa cum este de 2262 01:48:12,620 --> 01:48:15,390 implicit, ceea ce este doar de gând să faceți este să Browser-ul dvs. este de gând să se stagneze pentru 2263 01:48:15,390 --> 01:48:15,930 trei secunde. 2264 01:48:15,930 --> 01:48:18,900 Și tu nu vei fi capabil să facă nimic în timp ce acesta devine ca date. 2265 01:48:18,900 --> 01:48:20,010 O să fie înghețate. 2266 01:48:20,010 --> 01:48:20,800 >> Și asta e rău. 2267 01:48:20,800 --> 01:48:23,390 Tu nu vrei un utilizator să au o pagină web înghețat. 2268 01:48:23,390 --> 01:48:24,170 Corecta? 2269 01:48:24,170 --> 01:48:25,480 Asta e doar rău. 2270 01:48:25,480 --> 01:48:26,770 Toată lumea este de acord? 2271 01:48:26,770 --> 01:48:29,270 Dacă sunteți de navigare Facebook și-l îngheață și nu poți face nimic, tu 2272 01:48:29,270 --> 01:48:31,920 obține cu adevărat frustrat. 2273 01:48:31,920 --> 01:48:34,960 Deci, soluția este să facem ceva asincron în loc. 2274 01:48:34,960 --> 01:48:38,910 Deci, tot acest lucru asincron spune este, am de gând să întreb 2275 01:48:38,910 --> 01:48:40,280 URL-ul pentru anumite date. 2276 01:48:40,280 --> 01:48:41,610 Și apoi am de gând să merg. 2277 01:48:41,610 --> 01:48:45,330 Mă duc să păstreze executare indiferent de cod care a fost după aceea. 2278 01:48:45,330 --> 01:48:49,290 >> Și apoi ori de câte ori că de date este gata, atunci eu va procesa. 2279 01:48:49,290 --> 01:48:50,540 Asta e tot ce se spune. 2280 01:48:50,540 --> 01:48:52,795 2281 01:48:52,795 --> 01:48:56,710 >> Audiența: Ajax doar face cod asincron? 2282 01:48:56,710 --> 01:48:58,560 >> JOSEPH ONG: Este un asincron fel de date preiau. 2283 01:48:58,560 --> 01:49:01,230 Deci, primul lucru despre Ajax este ea mă lasă să obține date 2284 01:49:01,230 --> 01:49:03,170 de pe un site extern. 2285 01:49:03,170 --> 01:49:07,045 Și al doilea lucru este că face sigur că că pagina mea nu stagneze în timp ce eu sunt 2286 01:49:07,045 --> 01:49:07,970 preluarea datele. 2287 01:49:07,970 --> 01:49:09,600 Asta e partea asincron de ea. 2288 01:49:09,600 --> 01:49:13,040 Pentru că merge altundeva, pentru că am spus eu continui în timp ce 2289 01:49:13,040 --> 01:49:14,900 este preluarea că datele, care face asincron. 2290 01:49:14,900 --> 01:49:17,170 I a păstra executare. 2291 01:49:17,170 --> 01:49:18,960 >> Astfel încât să păstreze asincron idee în minte. 2292 01:49:18,960 --> 01:49:22,010 Și vă voi arăta ce diferența este. 2293 01:49:22,010 --> 01:49:23,920 Versiunea sincron este pe partea stângă. 2294 01:49:23,920 --> 01:49:26,240 Versiunea asincron este pe partea dreapta. 2295 01:49:26,240 --> 01:49:29,170 Uită-te la numere pentru a vedea care trepte corespund ceea 2296 01:49:29,170 --> 01:49:30,610 execută la fiecare linie. 2297 01:49:30,610 --> 01:49:32,730 Acolo, alerta apare mai întâi. 2298 01:49:32,730 --> 01:49:34,590 Deoarece obtinerea de informatii despre stoc la Yahoo! 2299 01:49:34,590 --> 01:49:37,250 nevoie de trei secunde, acesta tarabe timp de trei secunde. 2300 01:49:37,250 --> 01:49:39,880 Și apoi alerte prețul după aceste trei secunde. 2301 01:49:39,880 --> 01:49:43,690 >> Deci, acum, care arată de alertă până la acea dată - 2302 01:49:43,690 --> 01:49:44,610 trei secunde inch 2303 01:49:44,610 --> 01:49:47,670 Și apoi alerteaza de după aceea. 2304 01:49:47,670 --> 01:49:48,930 Asa ca merge doar pas cu pas. 2305 01:49:48,930 --> 01:49:51,200 E ca și cum ceea ce voi ar accepta, corect? 2306 01:49:51,200 --> 01:49:54,170 Cu executie asincron, vă avertiza în primul rând. 2307 01:49:54,170 --> 01:49:57,410 Apoi te duci la acest URL. 2308 01:49:57,410 --> 01:49:59,530 Și tu spui, am de gând să doar cere pentru datele. 2309 01:49:59,530 --> 01:50:01,170 Și apoi am de gând să procesa mai târziu. 2310 01:50:01,170 --> 01:50:04,230 Deci, se execută imediat linia următoare după ce am face asta 2311 01:50:04,230 --> 01:50:05,710 cerere asincron. 2312 01:50:05,710 --> 01:50:08,920 >> Deci, de 0.001 secunde, veți vedea hi alertă. 2313 01:50:08,920 --> 01:50:10,960 Executa această funcție, la revedere de alertă. 2314 01:50:10,960 --> 01:50:14,240 Și pentru că am făcut o promisiune pe care am ar prelucra datele mai târziu, ceea 2315 01:50:14,240 --> 01:50:17,920 se întâmplă este atunci că datele se întoarce trei secunde mai târziu, apoi am rulat că 2316 01:50:17,920 --> 01:50:21,380 Funcția pe care o am acolo. 2317 01:50:21,380 --> 01:50:21,870 Da? 2318 01:50:21,870 --> 01:50:25,750 >> Audiența: Puteți specifica sau clarifica ce înseamnă Ajax? 2319 01:50:25,750 --> 01:50:30,460 >> JOSEPH ONG: Deci, Ajax este o modalitate că, dacă am nevoie de date atunci când eu sunt pe un site web și eu 2320 01:50:30,460 --> 01:50:34,690 Nu vreau să necesară încărcarea paginii, apoi Eu folosesc aceasta tehnologie numită Ajax. 2321 01:50:34,690 --> 01:50:40,630 Asta înseamnă doar în esență, du-te adu- date de la un alt site. 2322 01:50:40,630 --> 01:50:43,724 Și o face într-un mod care doar nu bloca pagina mea de web. 2323 01:50:43,724 --> 01:50:46,650 >> Audiența: Deci, este ca o inerent o parte din JavaScript sau jQuery? 2324 01:50:46,650 --> 01:50:50,590 >> JOSEPH ONG: Deci, cineva a scris o modalitate de a face acest lucru în JavaScript cu mult timp în urmă. 2325 01:50:50,590 --> 01:50:52,050 La un moment dat, ea nu exista. 2326 01:50:52,050 --> 01:50:56,630 Și astfel cineva a inventat această tehnică pentru a permite oamenilor să solicite aceste date 2327 01:50:56,630 --> 01:50:57,680 în acest mod. 2328 01:50:57,680 --> 01:50:59,550 Și au scris unele lucruri să o facă pentru tine. 2329 01:50:59,550 --> 01:51:01,605 Și jQuery doar vă oferă această mod foarte frumos de a face acest lucru 2330 01:51:01,605 --> 01:51:03,112 cu acest $. obține funcția. 2331 01:51:03,112 --> 01:51:07,200 2332 01:51:07,200 --> 01:51:09,480 intrebari? 2333 01:51:09,480 --> 01:51:11,560 Pot răspunde la întrebări cu privire la Ajax după aceea prea. 2334 01:51:11,560 --> 01:51:13,870 Voi fi aici. 2335 01:51:13,870 --> 01:51:16,390 >> Deci, haideți să ne aducă de date fără refresh al paginii. 2336 01:51:16,390 --> 01:51:18,200 Și hai să ne facem acest lucru în un mod asincron care 2337 01:51:18,200 --> 01:51:19,450 nu se congela pagina. 2338 01:51:19,450 --> 01:51:22,680 2339 01:51:22,680 --> 01:51:27,310 Prea mult timp, nu am citit că dacă explicație a fost prea mult pentru tine. 2340 01:51:27,310 --> 01:51:29,430 Deci, în final, cross-site-ul atacuri de scripting. 2341 01:51:29,430 --> 01:51:30,910 Am văzut acest lucru cu Zamyla. 2342 01:51:30,910 --> 01:51:34,285 Dacă în cineva mea baza de date are acest nume, care este această etichetă scenariu, și eu 2343 01:51:34,285 --> 01:51:38,280 au un cod pe pagina mea care imprimă în numele oamenilor într-un rând, sau am 2344 01:51:38,280 --> 01:51:43,310 un cod JavaScript, care introduce acest nume în pagina, 2345 01:51:43,310 --> 01:51:45,680 ceea ce HTML se produce? 2346 01:51:45,680 --> 01:51:47,290 Ei bine, am imprima tag-ul HTML. 2347 01:51:47,290 --> 01:51:48,390 Am imprima toate aceste tag-uri. 2348 01:51:48,390 --> 01:51:50,740 >> Am ajuns la partea în care eu sunt de imprimare cu prietenii mei. 2349 01:51:50,740 --> 01:51:52,980 Am imprima Lauren afară. 2350 01:51:52,980 --> 01:51:54,200 Imprima Milo afară. 2351 01:51:54,200 --> 01:51:56,810 Și apoi numele meu în baza de date este post script 2352 01:51:56,810 --> 01:51:58,060 statutul de Facebook neonorantă. 2353 01:51:58,060 --> 01:52:00,740 2354 01:52:00,740 --> 01:52:04,330 Pentru că am introdus acest lucru în pagina deoarece se pare ca JavaScript, atunci când 2355 01:52:04,330 --> 01:52:07,930 această pagină este trimis la utilizator, este executat ca JavaScript. 2356 01:52:07,930 --> 01:52:10,800 Și astfel aceasta este ceea ce noi numim un cross-site scripting atac. 2357 01:52:10,800 --> 01:52:14,570 Cineva pune informații malware în baza de date care ar putea corespunde 2358 01:52:14,570 --> 01:52:17,080 unele șir suplimentar sau unele șir JavaScript. 2359 01:52:17,080 --> 01:52:20,130 >> Și atunci când acesta devine imprimat la Pagina în acest mod, atunci ce 2360 01:52:20,130 --> 01:52:22,580 se întâmplă este că cod rău este executat că nu am de gând 2361 01:52:22,580 --> 01:52:25,110 pentru ca acesta să fi executat. 2362 01:52:25,110 --> 01:52:28,230 Și asta e tot un cross-site-ul atac scripting este. 2363 01:52:28,230 --> 01:52:31,790 Și modul în care obține în jurul valorii acest lucru este ca Zamyla spus. 2364 01:52:31,790 --> 01:52:34,340 Trebuie doar înveliți lucrurile în Caractere speciale HTML. 2365 01:52:34,340 --> 01:52:39,460 Și acest HTML caractere speciale este un PHP Funcția care va preveni acest tip 2366 01:52:39,460 --> 01:52:42,000 de lucru de la întâmplă cu tine dacă aveți un rău intenționat 2367 01:52:42,000 --> 01:52:43,830 șir în baza de date. 2368 01:52:43,830 --> 01:52:47,650 Doar ea scapă, astfel încât să nu se te interpretat ca HTML. 2369 01:52:47,650 --> 01:52:50,960 Acesta înlocuiește mici paranteze cu ceea ce noi numim entități. 2370 01:52:50,960 --> 01:52:52,250 Și ne-am dus peste acest lucru în curs prea. 2371 01:52:52,250 --> 01:52:55,800 Deci, eu cred că voi ar trebui să aibă o bună stăpânire pe asta. 2372 01:52:55,800 --> 01:52:57,420 Întrebări? 2373 01:52:57,420 --> 01:52:57,820 Da. 2374 01:52:57,820 --> 01:53:00,860 >> Audiența: Deci, cum ar fi [inaudibil]? 2375 01:53:00,860 --> 01:53:01,555 >> JOSEPH ONG: Spune asta din nou. 2376 01:53:01,555 --> 01:53:02,500 >> Audiența: Cum ar fi monitorul - 2377 01:53:02,500 --> 01:53:02,860 >> JOSEPH ONG: Corect. 2378 01:53:02,860 --> 01:53:06,080 Astfel încât să aveți ceva care spune, atunci când Am înregistra, de tip în numele meu. 2379 01:53:06,080 --> 01:53:09,390 Tocmai am tip în acest domeniu, numele meu este dezbrăcat mesaj neonorantă Facebook 2380 01:53:09,390 --> 01:53:11,570 stare aproape tag-ul script-ul. 2381 01:53:11,570 --> 01:53:15,690 Și că tocmai se pune în baze de date, pentru că eu nu pot spune cineva 2382 01:53:15,690 --> 01:53:18,260 în lume nu are un nume cu o săgeată în stânga sau 2383 01:53:18,260 --> 01:53:19,036 script cuvânt în ea. 2384 01:53:19,036 --> 01:53:21,330 Asta nu prea are sens. 2385 01:53:21,330 --> 01:53:24,560 Deci, am să mă asigur că am igieniza lucrurile înainte de a imprima 2386 01:53:24,560 --> 01:53:25,420 de la pagina. 2387 01:53:25,420 --> 01:53:27,140 >> Audiența: Deci carduri speciale HTML previne tag-uri script-ul? 2388 01:53:27,140 --> 01:53:28,710 >> JOSEPH ONG: Da. 2389 01:53:28,710 --> 01:53:29,960 Deci, nu împiedică etichetele script. 2390 01:53:29,960 --> 01:53:32,320 Ea doar se asigură că tag-uri script-ul nu primesc 2391 01:53:32,320 --> 01:53:35,120 interpretat ca HTML sau - 2392 01:53:35,120 --> 01:53:35,400 Da. 2393 01:53:35,400 --> 01:53:38,470 Doar vine ca ceea ce este de fapt. 2394 01:53:38,470 --> 01:53:39,220 Bine. 2395 01:53:39,220 --> 01:53:40,930 Astfel că a fost revizuirea test. 2396 01:53:40,930 --> 01:53:41,830 Rece. 2397 01:53:41,830 --> 01:53:45,088 >> [Aplauze]