1 00:00:00,000 --> 00:00:02,916 2 00:00:02,916 --> 00:00:04,860 >> [MUSIC JOC] 3 00:00:04,860 --> 00:00:10,210 4 00:00:10,210 --> 00:00:13,350 >> DAVID MALAN: Aceasta este CS50, și aceasta este începutul săptămâni opt. 5 00:00:13,350 --> 00:00:17,510 Și suntem atât de emoționată de a primi înapoi, mare surpriza, propriu Ramon CS50 lui 6 00:00:17,510 --> 00:00:22,160 Galvan, un senior în creștere care a fost petrece ultimele luni 7 00:00:22,160 --> 00:00:26,190 începând cu luna iulie, în Los Angeles, la Hollywood, literalmente de lucru pe un televizor nou brand- 8 00:00:26,190 --> 00:00:31,930 show numit Colony, creatorul de care este de fapt un alaun Harvard el însuși. 9 00:00:31,930 --> 00:00:36,610 Și așa suntem foarte încântați să vedem acest debut în rețeaua SUA în ianuarie. 10 00:00:36,610 --> 00:00:40,370 Așa încât urmăriți pentru că, și pentru mai Ramon pentru săptămânile viitoare. 11 00:00:40,370 --> 00:00:42,550 >> Știu acum că sfârșitul este aproape. 12 00:00:42,550 --> 00:00:47,400 Și ce înseamnă acest lucru este că nu e tot atât de mult plecat de CS50, trist să spun. 13 00:00:47,400 --> 00:00:49,400 Avem doar trei probleme seturi left-- există 14 00:00:49,400 --> 00:00:52,510 problemă set six-- care este în mâinile tale acum sau în curând va fi, 15 00:00:52,510 --> 00:00:56,080 din cauza mai târziu în acest week-- este menit să elimine lumile noastre de linia de comandă, în cazul în care 16 00:00:56,080 --> 00:00:59,450 am petrecut majoritatea timpului nostru folosind C, și lumea de programare web. 17 00:00:59,450 --> 00:01:02,350 Ei bine, veți vedea o mulțime de idei împrumutat de la munca linia de comandă, 18 00:01:02,350 --> 00:01:04,560 dar, de asemenea, o mulțime de noi și idei interesante 19 00:01:04,560 --> 00:01:07,929 care sunt, de asemenea, vor fi germane pentru aplicatii mobile si pentru tehnologia, 20 00:01:07,929 --> 00:01:10,470 mai general, cu care baieti sunt familiare în zilele noastre 21 00:01:10,470 --> 00:01:12,090 pe laptop-uri și telefoane și altele asemenea. 22 00:01:12,090 --> 00:01:15,220 >> Deci, veți pune în aplicare nu o pagină web, sau un site 23 00:01:15,220 --> 00:01:17,620 în sine, ci un server web actuale. 24 00:01:17,620 --> 00:01:21,590 Veți scrie restul un server web scris în C, al căror scop în viață 25 00:01:21,590 --> 00:01:25,410 este de a primi cereri HTTP, aceste plicuri virtuale am Continuă să vorbești 26 00:01:25,410 --> 00:01:29,780 despre, și de fapt, să răspundă, fie cu unele content-- statice, cum ar fi un punct HTML 27 00:01:29,780 --> 00:01:32,310 fișier, sau un punct JPEG sau orice alt număr de dosare, 28 00:01:32,310 --> 00:01:37,070 sau chiar un fișier PHP prin care dvs. de web server este de gând să interpreteze că PHP 29 00:01:37,070 --> 00:01:38,332 Codul și scuipa rezultatele. 30 00:01:38,332 --> 00:01:40,540 Acum, v-am furnizat cu destul de un pic de cadru 31 00:01:40,540 --> 00:01:43,100 Într-adevăr, pentru it-- Codul de distribuție pentru problema 32 00:01:43,100 --> 00:01:47,496 set de șase este de peste 1.000 de linii de mult timp, o mulțime de care este comentarii, să fie fair-- 33 00:01:47,496 --> 00:01:49,370 dar acest lucru este într-adevăr înțelege să fie o oportunitate 34 00:01:49,370 --> 00:01:52,570 a pune mâna scufundări murdare într-un proiect destul de mare 35 00:01:52,570 --> 00:01:55,570 că am foarte specific piese sculptate din tine, pentru 36 00:01:55,570 --> 00:01:59,046 astfel încât într-adevăr, atunci când ieșiți CS50 și intra în lumea reală de programare 37 00:01:59,046 --> 00:02:00,920 și doresc să se ocupa în orice număr de proiecte, 38 00:02:00,920 --> 00:02:03,253 veți avea mult mai mare confort descărcarea o sursă 39 00:02:03,253 --> 00:02:05,020 cod, unele open source proiect pe web, 40 00:02:05,020 --> 00:02:08,174 și scufundări în și de a face modificările pe care le de cuviință. 41 00:02:08,174 --> 00:02:11,340 Problema set șapte va fi de aproximativ face propria aplicația web-based 42 00:02:11,340 --> 00:02:14,140 care ia de intrare și dinamic produce ieșire dinamică în formă 43 00:02:14,140 --> 00:02:16,920 de un site-ul etrade.com ca. 44 00:02:16,920 --> 00:02:20,800 Și problema stabilit opt ​​se va concentra pe încă o altă limbă cunoscută sub numele de JavaScript. 45 00:02:20,800 --> 00:02:24,170 >> Între timp, finala Proiectul este la orizont. 46 00:02:24,170 --> 00:02:26,800 Așa-numita pre-propunerea se datorează o săptămână, începând de astăzi. 47 00:02:26,800 --> 00:02:29,930 Pre-proposal-- pe caietul de sarcini, care se află pe website-- CS50 lui 48 00:02:29,930 --> 00:02:33,260 este o oportunitate destul de ocazional pentru pentru a trimite un e-mail destul de succint 49 00:02:33,260 --> 00:02:35,170 pentru colegii dumneavoastră de predare doar să-l informa 50 00:02:35,170 --> 00:02:38,250 sau ei de la ce te gândești, la el sau ea folosi ca un cutie de rezonanță. 51 00:02:38,250 --> 00:02:40,980 Și au un bun-simț check-- dacă te gândești 52 00:02:40,980 --> 00:02:43,210 despre mușcat prea mult sau poate prea puțin, 53 00:02:43,210 --> 00:02:46,480 sau poate aveți nici un fel de idee și doresc să se angajeze într-o conversație. 54 00:02:46,480 --> 00:02:48,480 >> După aceea este o propunere și raport de stare, 55 00:02:48,480 --> 00:02:51,860 așa-numita CS50 hackathon aici Cambridge pentru Harvard și Yale studenți 56 00:02:51,860 --> 00:02:52,362 deopotrivă. 57 00:02:52,362 --> 00:02:54,320 Final proiectului punere în aplicare este atunci datorează. 58 00:02:54,320 --> 00:02:59,290 Și apoi un târg CS50 aici, în Cambridge, precum și un alt în New Haven. 59 00:02:59,290 --> 00:03:02,500 Deci propunerea, să ia o privire la site-ul pentru aceste date. 60 00:03:02,500 --> 00:03:06,530 >> Dar mai tulburator, de asemenea, este un posibilitatea de a-ți murdărești mâinile, 61 00:03:06,530 --> 00:03:09,350 și mintea deschise la un întreg grămadă de subiecte și instrumente 62 00:03:09,350 --> 00:03:12,920 și tehnici care sunt auxiliare la cursul de bază programa, 63 00:03:12,920 --> 00:03:14,810 dar cu toate acestea legate. 64 00:03:14,810 --> 00:03:18,400 Și, de asemenea pietre pas cu pas minunat de a face proiecte finale cu adevărat cool care 65 00:03:18,400 --> 00:03:22,020 du-te dincolo de materiale ne-am acoperit în mod oficial în problema seturi sau în curs. 66 00:03:22,020 --> 00:03:24,446 Deci, du-te la site-ul CS50 pentru întreaga listă de seminarii. 67 00:03:24,446 --> 00:03:26,070 Dacă nu vă înregistrați încă, e în regulă. 68 00:03:26,070 --> 00:03:29,860 Du-te si inscrie-te încă și vom urmărirea cu un link live streaming, 69 00:03:29,860 --> 00:03:31,844 ziua și ora este pe site-ul. 70 00:03:31,844 --> 00:03:33,760 Și totul va fi înregistrate și pus online 71 00:03:33,760 --> 00:03:35,800 dacă nu puteți face anumite zile și ore. 72 00:03:35,800 --> 00:03:39,380 >> În ceea ce privește ceea ce se află în fața thereafter-- bine, Desigur, nu e hackathon CS50. 73 00:03:39,380 --> 00:03:43,560 Aceasta fotografie, rechemare, de la zero, luate săptămână în jurul valorii de 4 AM într-o seară în ultimii ani. 74 00:03:43,560 --> 00:03:46,900 Târgul CS50, care din nou va avea loc în ambele orașe. 75 00:03:46,900 --> 00:03:49,760 Și apoi, ca să planteze semințe, chiar dacă încă 76 00:03:49,760 --> 00:03:54,080 au o luna plus stânga semestru, în cazul în care doriți să se alăture învățătura propriu CS50 lui 77 00:03:54,080 --> 00:03:56,770 personalul, și doriți să începeți gândire despre a deveni un CA, 78 00:03:56,770 --> 00:03:59,550 sau colegi de predare, să știți că Vom începe vorbim mai multe despre asta 79 00:03:59,550 --> 00:04:00,630 mai târziu în acest semestru. 80 00:04:00,630 --> 00:04:03,470 Dar imaginat aici este cele mai multe din echipa din acest an. 81 00:04:03,470 --> 00:04:06,950 >> Și astfel, PHP-- și am fost atât de trist saptamana trecuta, ca [? Allyse?] Amabilitate 82 00:04:06,950 --> 00:04:09,370 sa dus la efortul de a obține noi elemente de recuzită aceste minunate 83 00:04:09,370 --> 00:04:11,720 că nu am ajunge folosind, așa că într-adevăr doar un fel de stupid uitat 84 00:04:11,720 --> 00:04:15,160 că am avut o lopata stau aici tot zi miercurea trecuta, și un pic lingura. 85 00:04:15,160 --> 00:04:17,709 Dar aceasta a fost metaforic mea mod de a încerca să picteze 86 00:04:17,709 --> 00:04:21,600 imaginea ce ne tranziția de la C la o limbă cum ar fi PHP. 87 00:04:21,600 --> 00:04:25,480 Și același lucru poate fi spus cu privire la orice Numărul de languages-- Java, Python, Ruby 88 00:04:25,480 --> 00:04:31,270 sau ciorchini de others-- dar întrucât în C, de exemplu, scrie un program în C 89 00:04:31,270 --> 00:04:34,050 ar putea fi în mod tipic ca a lua o lingura ca aceasta 90 00:04:34,050 --> 00:04:36,770 si sapat o gaura in sol, în nisip sau noroi. 91 00:04:36,770 --> 00:04:39,770 PHP vă permite să ia mult mușcături mai mari din problema, 92 00:04:39,770 --> 00:04:42,842 scris mult mai puțin cod folosind un instrument mult mai mic, 93 00:04:42,842 --> 00:04:45,050 pentru că există atât de mult mai mult funcționalitate pus cap la. 94 00:04:45,050 --> 00:04:47,633 >> Acum, dacă am fost într-adevăr dramatică, vom avea ceva de lopata 95 00:04:47,633 --> 00:04:48,760 aici, dar așa să fie. 96 00:04:48,760 --> 00:04:51,370 Intre timp, celălalt metaforă am venit cu 97 00:04:51,370 --> 00:04:53,770 este, desigur, ai putea folosi ceva de genul o cheie 98 00:04:53,770 --> 00:04:56,610 la ciocan în ceva ca un cui. 99 00:04:56,610 --> 00:04:58,980 Dar, desigur, dreptul de instrument pentru utilizare se întâmplă 100 00:04:58,980 --> 00:05:01,360 să fie nu atât de mult Limba numit C- 101 00:05:01,360 --> 00:05:03,590 și acum am doar enervat [? Sanders,?] Probabil, 102 00:05:03,590 --> 00:05:07,890 vom rezolva asta așa later-- instrumentul dreptul de a utiliza frecvent 103 00:05:07,890 --> 00:05:09,640 nu va fi acest cel mai scăzut nivel instrument. 104 00:05:09,640 --> 00:05:13,720 Și într-adevăr, C nu este un limbaj care cele mai multe dintre voi sunt vreodată de gând să utilizeze, 105 00:05:13,720 --> 00:05:15,590 sau ar trebui să utilizeze în mod necesar din nou. 106 00:05:15,590 --> 00:05:18,350 >> Și, de fapt, un pic secret-- singura dată 107 00:05:18,350 --> 00:05:23,160 Eu folosesc C-am destul de mult între este Septembrie și decembrie a fiecărui toamna 108 00:05:23,160 --> 00:05:23,870 semestru. 109 00:05:23,870 --> 00:05:25,790 Si asta pentru ca noi să-l utilizați ca o oportunitate 110 00:05:25,790 --> 00:05:27,852 pentru a preda fundamentele de programare, 111 00:05:27,852 --> 00:05:29,810 și cu ea calculator principiilor fundamentale ale științei, date 112 00:05:29,810 --> 00:05:32,435 structuri, algoritmi și like-- dar va foarte repede 113 00:05:32,435 --> 00:05:35,010 vezi acum că sintaxa și ideile care stau la baza C a 114 00:05:35,010 --> 00:05:37,530 sunt atât de minunat transferabile la mai modern 115 00:05:37,530 --> 00:05:41,130 limbaje de nivel superior, cum ar fi PHP și Python și Perl și Java 116 00:05:41,130 --> 00:05:46,750 și Obiectiv-C- de fapt, nu atât de mult Obiectiv-C- dar Swift, acestea mai noi 117 00:05:46,750 --> 00:05:50,010 limbi pe care multi dintre voi vor apoi se ocupa cu tine final al proiectului. 118 00:05:50,010 --> 00:05:55,070 >> Deci, fără alte formalități, să de fapt utilizați PHP pentru a rezolva unele probleme. 119 00:05:55,070 --> 00:06:00,230 Amintiti-va ca de timpuriu, ultima săptămâni, doar am folosit CS50 IDE, 120 00:06:00,230 --> 00:06:02,990 am scris un program de Dinky pic care tocmai a spus, "Bună ziua lume." 121 00:06:02,990 --> 00:06:05,680 Și apoi l-am salvat în un fișier numit hello.php. 122 00:06:05,680 --> 00:06:07,280 Și apoi am fugit această comandă. 123 00:06:07,280 --> 00:06:08,080 >> Și de ce? 124 00:06:08,080 --> 00:06:09,900 În limba engleză, ceea ce se întâmplă aici? 125 00:06:09,900 --> 00:06:12,760 Ceea ce a fost atunci când fac Am fugit această comandă? 126 00:06:12,760 --> 00:06:13,405 >> Da? 127 00:06:13,405 --> 00:06:16,572 >> Audiența: Există o funcție PHP care citește ce in-- înțelege că. 128 00:06:16,572 --> 00:06:19,696 DAVID MALAN: Bine, există unele funcții PHP-- și lasă-mă să fie mai specific, 129 00:06:19,696 --> 00:06:21,810 exista un program numit PHP, a.k.a. 130 00:06:21,810 --> 00:06:25,872 Un interpret, care intelege conținutul hello.php, 131 00:06:25,872 --> 00:06:27,830 și interpretează top la jos, la stânga la dreapta, 132 00:06:27,830 --> 00:06:29,590 și face ce spun aceste comenzi. 133 00:06:29,590 --> 00:06:33,320 Comenzile din hello.php, desigur, este doar sursa code-- funcții 134 00:06:33,320 --> 00:06:35,750 și variabile și bucle și alții, că ne 135 00:06:35,750 --> 00:06:37,460 au început să scrie în PHP. 136 00:06:37,460 --> 00:06:40,240 >> Dar, spre deosebire de C, care este un limbaj compilat, 137 00:06:40,240 --> 00:06:42,810 PHP pe care tocmai ați scrie, și rulați-l. 138 00:06:42,810 --> 00:06:46,420 Săriți peste acest pas intermediar de conversia la zerouri și cele, 139 00:06:46,420 --> 00:06:47,790 și apoi rulează. 140 00:06:47,790 --> 00:06:50,510 Și ce este o cu susul în asta? 141 00:06:50,510 --> 00:06:52,690 De ce ne-am sărind peste pasul? 142 00:06:52,690 --> 00:06:55,238 De ce limbi mai moderne au tendința de a sări peste acest pas? 143 00:06:55,238 --> 00:06:58,880 144 00:06:58,880 --> 00:07:01,220 Care a fost beneficiul? 145 00:07:01,220 --> 00:07:02,080 >> Sau doar intuitiv? 146 00:07:02,080 --> 00:07:04,200 Chiar dacă nu am scris mult PHP înainte, 147 00:07:04,200 --> 00:07:07,210 ceea ce este benefic nu despre compilarea codul crezi? 148 00:07:07,210 --> 00:07:08,520 Nu? 149 00:07:08,520 --> 00:07:09,610 Nu comite? 150 00:07:09,610 --> 00:07:11,350 Lamureste? 151 00:07:11,350 --> 00:07:12,614 Da. 152 00:07:12,614 --> 00:07:13,600 >> Audiența: mai dinamice. 153 00:07:13,600 --> 00:07:14,683 >> DAVID MALAN: mai dinamic? 154 00:07:14,683 --> 00:07:16,032 Ce vrei să spui? 155 00:07:16,032 --> 00:07:17,000 >> Audiența: [inaudibil] 156 00:07:17,000 --> 00:07:20,349 157 00:07:20,349 --> 00:07:22,390 DAVID MALAN: OK, bine, așa în funcție de intrare, 158 00:07:22,390 --> 00:07:23,470 nu trebuie să-l compilați de fiecare dată. 159 00:07:23,470 --> 00:07:24,990 Și într-adevăr este la fel de simplu ca that-- ce 160 00:07:24,990 --> 00:07:26,990 este punctul de a continua pentru a compila codul? 161 00:07:26,990 --> 00:07:29,480 Acesta este doar un pas care este making-- acest lucru este care necesită, 162 00:07:29,480 --> 00:07:31,900 In ultimii săptămâni, de două ori mai mulți pași 163 00:07:31,900 --> 00:07:33,820 ca ruleaza doar programul. 164 00:07:33,820 --> 00:07:36,940 A fost util în a vedea pe care le vedea unele mesaje de eroare și așa mai departe, 165 00:07:36,940 --> 00:07:38,720 dar este încă doar un pas enervant. 166 00:07:38,720 --> 00:07:41,810 >> Și așa programatori realizat a lungul timpului, de ce nu ne 167 00:07:41,810 --> 00:07:45,327 începe să scrie limbi care nu nevoie de pas destul de mecanică, 168 00:07:45,327 --> 00:07:47,160 astfel încât să poată scrie doar codul dvs. și rula. 169 00:07:47,160 --> 00:07:48,920 Dar ceea ce a fost prețul că am văzut am plătit 170 00:07:48,920 --> 00:07:50,910 săptămâna trecută, cu un anumit exemplu? 171 00:07:50,910 --> 00:07:51,650 Da? 172 00:07:51,650 --> 00:07:52,370 >> Viteza. 173 00:07:52,370 --> 00:07:54,690 Asa ca [? ceea ce este] interpreți? un pic mai lent, 174 00:07:54,690 --> 00:07:57,330 în care zerouri și sunt cele frumos si rapid pentru un calculator 175 00:07:57,330 --> 00:08:00,070 pentru a înțelege, pentru că Intel CPU, sau orice ar fi, 176 00:08:00,070 --> 00:08:03,070 doar înțelege ce se întâmplă mai departe cu acele modele de biți. 177 00:08:03,070 --> 00:08:05,370 Întrucât un interpret este un program care într-adevăr 178 00:08:05,370 --> 00:08:07,980 trebuie să citiți sursa ASCII cod care le-ați scris, 179 00:08:07,980 --> 00:08:12,700 și converti, ca să spunem așa, sau dau seama cum se transformă în cele din urmă 180 00:08:12,700 --> 00:08:13,525 la zero și cele. 181 00:08:13,525 --> 00:08:15,650 Deci, doar nevoie de un pic bit de un hit de performanță. 182 00:08:15,650 --> 00:08:16,858 Deci, este un pic de un compromis. 183 00:08:16,858 --> 00:08:21,570 Acum, dacă am face acest lucru aici, lasă-mă să mergeți mai departe și de a face, de exemplu, după cum urmează. 184 00:08:21,570 --> 00:08:26,610 Dacă mă duc aici, nou dosar, am de gând pentru a salva acest lucru din nou este hello.php. 185 00:08:26,610 --> 00:08:31,450 Iar acum am de gând să merg mai departe și spune, "Print Hello World" - 186 00:08:31,450 --> 00:08:35,130 și reamintească faptul că pot folosi de imprimare, eu nu trebuie să utilizeze imprimare F. Și acum aici, 187 00:08:35,130 --> 00:08:42,039 dacă fac PHP de hello.php, am huh-- nu par să-l aibă interpretat. 188 00:08:42,039 --> 00:08:43,412 Cu ce ​​am greșit? 189 00:08:43,412 --> 00:08:44,710 >> Audiența: Brățările unghiulare. 190 00:08:44,710 --> 00:08:47,015 >> DAVID MALAN: Da, ai nevoie de acest unghi suport până sus. 191 00:08:47,015 --> 00:08:49,390 Deci e un fel de enervant, dar te obisnuiesti repede. 192 00:08:49,390 --> 00:08:53,500 Dacă trebuie să scrie cod PHP, am în general, trebuie să-i spuneți programului, 193 00:08:53,500 --> 00:08:56,950 sau spune interpretului, hei PHP, aici vine un cod PHP. 194 00:08:56,950 --> 00:09:00,440 Și apoi pentru o bună măsură, aș face- închide acest lucru nu cu acest lucru, ci mai degrabă 195 00:09:00,440 --> 00:09:03,740 cu doar întrebarea unghi marca suport, astfel că acum aici, 196 00:09:03,740 --> 00:09:06,840 dacă I ​​a alerga acest lucru din nou, acum Am obține rezultatul dorit. 197 00:09:06,840 --> 00:09:09,820 >> Acum, haideți să facem o ușoară optimizare, doar pentru ca l-ați mai văzut înainte. 198 00:09:09,820 --> 00:09:14,040 Aceasta este un fel de enervant ca am trebuie să rulați PHP spațiu hello.php, 199 00:09:14,040 --> 00:09:16,060 pentru că în trecut I ar putea scrie doar slash punct 200 00:09:16,060 --> 00:09:17,560 numele programului, care este un fel de frumos. 201 00:09:17,560 --> 00:09:19,420 E un fel de experiență de utilizare mai bună. 202 00:09:19,420 --> 00:09:24,160 >> Deci, se dovedește puteți face acest lucru în PHP cu I following-- 203 00:09:24,160 --> 00:09:28,780 pot folosi acest destul de criptic incantație în partea de sus de aici, 204 00:09:28,780 --> 00:09:31,740 care este în general numit un shebang, care acest lucru este un simbol ascuțit, 205 00:09:31,740 --> 00:09:34,270 ca să spunem așa, acest lucru este un bang sau un semn de exclamare. 206 00:09:34,270 --> 00:09:38,490 Iar acest lucru acum este calea la un program de pe un sistem tipic Linux, care 207 00:09:38,490 --> 00:09:41,500 se numește mediu, sau env. 208 00:09:41,500 --> 00:09:43,920 Și această poveste lungă line-- o linie short-- doar 209 00:09:43,920 --> 00:09:48,710 spune, hei calculator, găsi PHP interpret pentru mine în mediul înconjurător, 210 00:09:48,710 --> 00:09:50,610 se pare în memorie, ca să spunem așa. 211 00:09:50,610 --> 00:09:54,130 >> Și ce e frumos acum, este că dacă mă duc aici, 212 00:09:54,130 --> 00:09:57,750 Pot face dot slash salut dot php, sau-- hmm. 213 00:09:57,750 --> 00:09:59,000 Acces refuzat. 214 00:09:59,000 --> 00:10:02,350 Ei bine, veți vedea chiar mai mult din această cu problema set de șapte, dacă 215 00:10:02,350 --> 00:10:04,060 nu au deja, cu permisiuni. 216 00:10:04,060 --> 00:10:06,510 Se pare că am nevoie de pentru a executa aceasta comanda 217 00:10:06,510 --> 00:10:10,779 numit [? chamod?] pentru schimbare mode-- un plus X hello.php. 218 00:10:10,779 --> 00:10:13,820 Am nevoie de [neauzit] aceasta suplimentar etapă care se spune calculatorul meu, 219 00:10:13,820 --> 00:10:16,400 face executabil hello.php. 220 00:10:16,400 --> 00:10:21,310 Și acum ma uit la ceea ce happens-- dot slash hello.php, doar ruleaza. 221 00:10:21,310 --> 00:10:23,310 Nu am nevoie să specificați mai interpret. 222 00:10:23,310 --> 00:10:26,680 Și eu pot face chiar mai frumoasa, Totuși, dacă am redenumi acest lucru. 223 00:10:26,680 --> 00:10:30,570 Dacă am trece la doar hello.php Hello-- astfel observa in partea din stânga sus, 224 00:10:30,570 --> 00:10:32,860 Numele programului este într-adevăr, acum doar Buna ziua. 225 00:10:32,860 --> 00:10:37,300 Acum pot face să arate ca un program C, chiar dacă este scris în PHP-- 226 00:10:37,300 --> 00:10:39,210 sau sincer orice număr de alte limbi. 227 00:10:39,210 --> 00:10:41,480 >> Deci accesoriu marginal, nici o diferență funcțională. 228 00:10:41,480 --> 00:10:44,460 Dar e doar un pic de curiozitate acum, astfel încât să puteți scrie programe 229 00:10:44,460 --> 00:10:48,989 în orice limbă, iar utilizatorul nu trebuie să știe sau de îngrijire care sunt cele. 230 00:10:48,989 --> 00:10:51,030 Ei bine, să ne uităm la o mai exemplu convingător acum 231 00:10:51,030 --> 00:10:52,850 că am bătut în prealabil. 232 00:10:52,850 --> 00:10:54,955 Și aceasta se numește quote.php. 233 00:10:54,955 --> 00:10:56,740 Și e disponibil online. 234 00:10:56,740 --> 00:11:00,299 Și observați că e destul de short-- dar este un program de linie de comandă care este 235 00:11:00,299 --> 00:11:02,840 O să se uite în sus prețurile de vînzare pentru mine, care se întâmplă de fapt 236 00:11:02,840 --> 00:11:04,230 să fie germane la problema seta șapte. 237 00:11:04,230 --> 00:11:05,396 >> Deci, haideți să vedem ce fac. 238 00:11:05,396 --> 00:11:08,640 La foarte de sus am primit deschis Suport semn de întrebare PHP. 239 00:11:08,640 --> 00:11:13,372 Apoi am această linie, prin care sunt necesită un fișier numit functions.php-- 240 00:11:13,372 --> 00:11:15,080 vom vedea mai mult pe aceasta într-un pic, 241 00:11:15,080 --> 00:11:17,340 dar acest lucru este ca a lui C Versiunea de ascuțite includ, 242 00:11:17,340 --> 00:11:19,090 unde vrei sa mergi includ un alt fișier. 243 00:11:19,090 --> 00:11:23,720 PHP solicită nevoie de ea, deși are, de asemenea, o funcție includ. 244 00:11:23,720 --> 00:11:26,861 Și se dovedește că este function.php doar ceva ce am scris înainte de clasă. 245 00:11:26,861 --> 00:11:29,860 Am pus-o în același director, pentru că Am vrut să factor în unele cod 246 00:11:29,860 --> 00:11:31,800 că am putea doriți să utilizați în altă parte. 247 00:11:31,800 --> 00:11:34,560 >> Între timp, puteți probabil deduce ce se întâmplă aici. 248 00:11:34,560 --> 00:11:39,200 Acesta este un pic diferit de la C- dar Ce vreau să spun prin asigurarea utilizării corespunzătoare? 249 00:11:39,200 --> 00:11:41,180 Traduce aceasta mai tehnic. 250 00:11:41,180 --> 00:11:45,950 În ce condiții sunt eu renunti programului, sau ieșirea? 251 00:11:45,950 --> 00:11:47,074 Da? 252 00:11:47,074 --> 00:11:47,990 >> Audiența: Când nu aveți două argumente în linia de comandă. 253 00:11:47,990 --> 00:11:49,480 >> DAVID MALAN: Când nu am pentru a comanda argumente în linia. 254 00:11:49,480 --> 00:11:52,396 Și amintiți-vă că unul dintre cei argumente este numele programului în sine. 255 00:11:52,396 --> 00:11:55,340 Iar al doilea va fi un alt cuvânt de tip I după prompt. 256 00:11:55,340 --> 00:11:57,460 Deci, la fel ca C, aceasta este felul meu de a verifica, 257 00:11:57,460 --> 00:12:00,022 au cooperat utilizator și rula programul așa cum am intenționat? 258 00:12:00,022 --> 00:12:01,730 Acum, e ceva un pic diferit 259 00:12:01,730 --> 00:12:04,020 cu C- în primul rând ne-am au acest semn dolar, 260 00:12:04,020 --> 00:12:07,710 și ceea ce face un dolar semn indica in PHP? 261 00:12:07,710 --> 00:12:08,440 Doar o variabilă. 262 00:12:08,440 --> 00:12:11,731 Asta e all-- doar o variabilă, urmată de ce vrei să-i spunem de fapt. 263 00:12:11,731 --> 00:12:14,000 Observați există ceva lipsesc din programul meu PHP, 264 00:12:14,000 --> 00:12:18,210 la fel ca ea lipsea ultima săptămâni, comparativ cu C, care este ceea ce? 265 00:12:18,210 --> 00:12:21,620 >> A tipuri, dar, de asemenea altceva. 266 00:12:21,620 --> 00:12:26,409 Nu există nici ceva function-- funcție principală. 267 00:12:26,409 --> 00:12:27,450 Nu e nici o funcție principală. 268 00:12:27,450 --> 00:12:29,680 Tu doar începe să scrie codul fără a avea 269 00:12:29,680 --> 00:12:32,790 să vă faceți griji cu privire la o destul de arbitrare convenție de denumire unele implicit 270 00:12:32,790 --> 00:12:33,880 Funcția principală. 271 00:12:33,880 --> 00:12:36,720 Deci arg C este doar într-adevăr o variabilă globală 272 00:12:36,720 --> 00:12:39,049 că interpretul face disponibile pentru mine. 273 00:12:39,049 --> 00:12:40,090 Acum, acest lucru este interesant. 274 00:12:40,090 --> 00:12:41,140 Asa ca uite în sus lucruri. 275 00:12:41,140 --> 00:12:43,370 Semn dolar este pe stoc stânga, asta e variabila mea. 276 00:12:43,370 --> 00:12:45,120 Pe partea dreapta, nu e aparent 277 00:12:45,120 --> 00:12:50,270 o funcție în PHP numit de căutare, care Am trece ultima mea linie de comandă 278 00:12:50,270 --> 00:12:51,902 argument sa-- indiferent de cuvântul este. 279 00:12:51,902 --> 00:12:53,610 Și vom vedea cum acest lucrează într-o clipă. 280 00:12:53,610 --> 00:12:55,380 >> Și apoi în cele din urmă am de raportare prețul. 281 00:12:55,380 --> 00:12:58,650 Sunt imprimarea unul cota de așa și așa. 282 00:12:58,650 --> 00:13:02,082 Și amintiți-vă, aceasta este cale de PHP---un mod în PHP-- 283 00:13:02,082 --> 00:13:04,290 în cazul în care nu au de a face semnul dolar S mai. 284 00:13:04,290 --> 00:13:06,782 Puteți folosi doar acolade și conectați în unele variabile. 285 00:13:06,782 --> 00:13:09,240 Nu trebuie să vă faceți griji cu privire la folosind printf în același mod. 286 00:13:09,240 --> 00:13:13,530 >> Și, ca o paranteză, când ai pus o variabilă în interiorul ghilimele acest fel, 287 00:13:13,530 --> 00:13:17,370 pe care îl utilizați o tehnică de lux numit interpolare variabilă. 288 00:13:17,370 --> 00:13:20,380 Aceasta înseamnă doar conectați variabila aici. 289 00:13:20,380 --> 00:13:23,760 Și, ca o paranteza, unii dintre voi care au venit de la alte medii de programare, 290 00:13:23,760 --> 00:13:26,960 nu puteți utiliza ghilimele simple în jurul valorii de siruri de caractere pentru a face acest lucru. 291 00:13:26,960 --> 00:13:30,290 Trebuie să utilizați ghilimele pentru interpolare variabilă de a lucra. 292 00:13:30,290 --> 00:13:32,740 În caz contrar, veți literalmente vedea aceste acolade. 293 00:13:32,740 --> 00:13:34,500 >> Deci în sfârșit, să mergem mai departe și să rulați acest lucru. 294 00:13:34,500 --> 00:13:36,690 Permiteți-mi să fac terminalul meu un pic mai mare. 295 00:13:36,690 --> 00:13:41,940 Lasă-mă să mergeți mai departe și a alerga interiorul directorul meu citat. 296 00:13:41,940 --> 00:13:46,950 [? CDsource?] [? AM?] [? citat?] PHP Citat punct PHP, 297 00:13:46,950 --> 00:13:50,290 și am de gând pentru a căuta ceva ca GOOG, care este simbolul ticker, 298 00:13:50,290 --> 00:13:55,510 și o acțiune din nume noi, Alfabet Inc, costa $ 717 începând de astăzi. 299 00:13:55,510 --> 00:13:58,680 În regulă, dacă vrem să executați din nou, oricine 300 00:13:58,680 --> 00:14:02,600 un alt ticker stoc vor să se uite în sus? 301 00:14:02,600 --> 00:14:06,770 >> Microsoft cred că este aceasta, MSFT-- $ 53. 302 00:14:06,770 --> 00:14:09,720 Cred că Yahoo este poate că. 303 00:14:09,720 --> 00:14:12,130 Și Facebook este că. 304 00:14:12,130 --> 00:14:13,740 >> Deci, ce este acest program faci? 305 00:14:13,740 --> 00:14:16,306 Magia pare a fi încorporat în această funcție de căutare. 306 00:14:16,306 --> 00:14:17,430 Deci, haideți să aruncăm o privire rapidă. 307 00:14:17,430 --> 00:14:21,815 >> Se pare că nu vine cu PHP, este în functions.php. 308 00:14:21,815 --> 00:14:23,690 Și nu vom trece prin acest în detaliu, 309 00:14:23,690 --> 00:14:28,040 dar observați cuvântul operativ aici este că pe linia șase de functions.php-- 310 00:14:28,040 --> 00:14:29,440 Eu spun literalmente funcție. 311 00:14:29,440 --> 00:14:31,050 Am specificați numele funcției mele. 312 00:14:31,050 --> 00:14:34,330 Apoi m-am specifica orice argumente, sau parametri, 313 00:14:34,330 --> 00:14:36,480 Vreau funcție pentru take-- nu tipuri. 314 00:14:36,480 --> 00:14:37,580 Și apoi l-am pune în aplicare. 315 00:14:37,580 --> 00:14:39,240 >> Și voi val mâna mea la punerea în aplicare, 316 00:14:39,240 --> 00:14:42,115 din moment ce este corect destul de avansat acum, dar vom vedea din nou de fapt 317 00:14:42,115 --> 00:14:44,700 într-o săptămână în problema set de șapte. 318 00:14:44,700 --> 00:14:47,490 Dar pot curăța asta, de asemenea. 319 00:14:47,490 --> 00:14:49,590 De asemenea, am inclus în Codul de astăzi o versiune 320 00:14:49,590 --> 00:14:52,340 citatul, care nu are nici o fișier punct PHP. 321 00:14:52,340 --> 00:14:57,270 Pentru că ceea ce este probabil la Partea de sus a programului numit doar citez? 322 00:14:57,270 --> 00:15:00,140 Această așa-numitele shebang-- incantație destul de criptic 323 00:15:00,140 --> 00:15:04,590 care spune găsi PHP și apoi executați-o pe codul meu aici. 324 00:15:04,590 --> 00:15:07,360 >> Bine, pentru ca aduce ne să unde am rămas 325 00:15:07,360 --> 00:15:09,560 Ultima time-- deși cu câteva exemple mai avansate. 326 00:15:09,560 --> 00:15:13,980 Orice întrebări despre până acum PHP sau ce facem? 327 00:15:13,980 --> 00:15:15,570 No-- în regulă. 328 00:15:15,570 --> 00:15:16,180 Da? 329 00:15:16,180 --> 00:15:19,610 >> Audiența: interiorul Fișiere HTML, nu Tu-- 330 00:15:19,610 --> 00:15:22,226 [? tu ?] [? doar o numesc?] o [inaudibil] fișier PHP? 331 00:15:22,226 --> 00:15:23,350 DAVID MALAN: Bună întrebare. 332 00:15:23,350 --> 00:15:26,070 Într-un context web, care suntem literalmente pe cale de a trecerea la, 333 00:15:26,070 --> 00:15:28,028 nu utilizați așa-numitul shebang în partea de sus, 334 00:15:28,028 --> 00:15:31,980 deoarece server-- web adesea o program numit Apache sau Microsoft 335 00:15:31,980 --> 00:15:37,470 IIS, Internet Information Server, sau orice număr de alte software de tip server de web, 336 00:15:37,470 --> 00:15:40,636 știe că, atunci când vede un fișier punct PHP, că 337 00:15:40,636 --> 00:15:42,010 ar trebui să ruleze interpretul pe ea. 338 00:15:42,010 --> 00:15:43,468 Ea nu se uita la asta de prima linie. 339 00:15:43,468 --> 00:15:45,580 Deci, această primă linie truc este doar atunci când sunteți 340 00:15:45,580 --> 00:15:48,330 scris de linie de comandă programs-- care nu vom face super-de multe ori, 341 00:15:48,330 --> 00:15:52,510 dar este modul nostru de a trece C exemplele noastre la intreprinderea PHP nostru. 342 00:15:52,510 --> 00:16:00,680 >> Așa că haideți să într-adevăr pod această lume din lume linia de comandă pe web 343 00:16:00,680 --> 00:16:02,230 de a face următoarele. 344 00:16:02,230 --> 00:16:05,090 Lasă-mă să mergeți mai departe și să aici doar pentru o clipă. 345 00:16:05,090 --> 00:16:09,940 Deci, dacă avem un server web, sau mai degrabă dacă avem laptop-ul meu aici, 346 00:16:09,940 --> 00:16:11,280 pe care le voi desena asa. 347 00:16:11,280 --> 00:16:14,250 Și aici avem Internet într-o formă. 348 00:16:14,250 --> 00:16:18,210 Și apoi aici, avem un server într-o building-- 349 00:16:18,210 --> 00:16:20,760 acesta este modul internetul works-- și aici 350 00:16:20,760 --> 00:16:23,120 este un server cu unele lumini poate. 351 00:16:23,120 --> 00:16:27,530 Ce se intampla de fapt pe între aceste două conexiuni? 352 00:16:27,530 --> 00:16:29,240 >> Deci, în această clădire este un server de web. 353 00:16:29,240 --> 00:16:31,420 Asta e doar un calculator care este execută unele de operare 354 00:16:31,420 --> 00:16:34,561 system-- poate software-ul gratuit numit Apache, care CS50 IDE se execută. 355 00:16:34,561 --> 00:16:36,310 Astfel încât să puteți de fapt cred că de această clădire 356 00:16:36,310 --> 00:16:38,579 ca fiind clădirea în care CSt0 IDE este stocat. 357 00:16:38,579 --> 00:16:40,870 Asta în cazul în are voi toți conturi, în cazul în care voi toți 358 00:16:40,870 --> 00:16:43,130 au server de web proprie funcționare, voi toți 359 00:16:43,130 --> 00:16:45,730 au propriile adrese URL unice, cum am început să discutăm, 360 00:16:45,730 --> 00:16:47,280 și veți vedea mai mult în P. set de șase. 361 00:16:47,280 --> 00:16:49,450 >> Iată laptop-ul meu pe undeva altceva de pe internet. 362 00:16:49,450 --> 00:16:54,550 Și așa că atunci când am vizita o adresă URL care aparține pentru mine, că traficul de internet se întâmplă 363 00:16:54,550 --> 00:16:58,360 pe la server, server-ului primirea unui HTTP request-- 364 00:16:58,360 --> 00:17:02,900 ca o lua index.html și e răspunzând la acea pagină web. 365 00:17:02,900 --> 00:17:04,280 Deci, asta e paradigma generală. 366 00:17:04,280 --> 00:17:07,089 Întrucât totul până în prezent astăzi, totul 367 00:17:07,089 --> 00:17:09,660 se întâmpla numai în limitele de această clădire. 368 00:17:09,660 --> 00:17:12,910 Am fost folosind laptop-ul meu, dar Am fost conectat la CS50 IDE, 369 00:17:12,910 --> 00:17:17,369 astfel încât toate acestor programe am fost difuzate a fost în interiorul serverului, în sine. 370 00:17:17,369 --> 00:17:22,660 >> Dar acum, să începem reutilizarea PHP pentru a scrie unele programe reale care 371 00:17:22,660 --> 00:17:24,230 sunt servite de un server web. 372 00:17:24,230 --> 00:17:30,320 Și pentru a face acest lucru, am de gând să merg într-o grămadă de exemple 373 00:17:30,320 --> 00:17:33,710 care introduc această idee aici. 374 00:17:33,710 --> 00:17:38,500 Astfel încât acesta este un fel de cale de fantezie descrie o paradigmă de programare. 375 00:17:38,500 --> 00:17:41,540 >> Și, de fapt, așa cum ieșiți CS50 sau lucreze la proiecte finale, 376 00:17:41,540 --> 00:17:43,520 sau de a lua unele urma de clasa, veți începe 377 00:17:43,520 --> 00:17:45,740 pentru a vedea că world-- mai ales după ce crescut 378 00:17:45,740 --> 00:17:48,300 cu limbaje cum ar fi C că sunt foarte scăzute level-- 379 00:17:48,300 --> 00:17:51,290 dau seama că nu e bine modalități de software scris. 380 00:17:51,290 --> 00:17:53,290 Există anumite modele puteți urmări, 381 00:17:53,290 --> 00:17:57,640 anumite moduri de organizare fișierelor și modalități de denumire funcțiile, 382 00:17:57,640 --> 00:18:00,300 astfel încât poveste lungă scurt, lumea a venit 383 00:18:00,300 --> 00:18:04,340 cu o grămadă de acronime și numele de modalități de programare. 384 00:18:04,340 --> 00:18:06,260 Acestea sunt doar tehnici pe care le-ar putea folosi. 385 00:18:06,260 --> 00:18:09,660 >> Și unul dintre ei este numit MVC, pentru Model View Controller. 386 00:18:09,660 --> 00:18:12,270 Și aceasta este doar, pentru acum, o prea complicate 387 00:18:12,270 --> 00:18:18,960 mod de a spune cum ar trebui să se stabilească în un site pe baza de PHP, în cazul nostru. 388 00:18:18,960 --> 00:18:22,140 Cum vă organizați fișierele, cum vă organizați logica, 389 00:18:22,140 --> 00:18:26,220 într-un mod care face mai ușor pentru a scrie site-uri mai complicate? 390 00:18:26,220 --> 00:18:28,550 Și într-adevăr, vom rapid ajunge acolo cu p-set șapte. 391 00:18:28,550 --> 00:18:32,020 >> Deci, în lumea de MVC, ai de gând pentru a vedea că, în general, codul nostru poate 392 00:18:32,020 --> 00:18:38,290 fi caracterizate fie ca model de cod, sau cod controler, sau pentru a vizualiza codul. 393 00:18:38,290 --> 00:18:40,200 Și am de gând să simplifica-o ca follows-- 394 00:18:40,200 --> 00:18:42,074 controlerul este creierul de programul tău, 395 00:18:42,074 --> 00:18:44,100 e care toate logica interesant se intampla. 396 00:18:44,100 --> 00:18:46,110 Deci tot ceea ce am fost scris până acum în clasă, 397 00:18:46,110 --> 00:18:48,210 este un fel de controlor code-- se controlează 398 00:18:48,210 --> 00:18:50,585 programul, buclele tale, tău condiții, funcțiile 399 00:18:50,585 --> 00:18:52,100 și variabile și tot ce. 400 00:18:52,100 --> 00:18:56,160 >> Vizualizări, acum, vor fi un pic mai evidentă în lumea web. 401 00:18:56,160 --> 00:18:59,360 Un punct de vedere este estetica de site-ul dvs.. 402 00:18:59,360 --> 00:19:04,080 Este ceea ce utilizatorul sees-- imaginile, tabelele HTML, tag-uri HTML, și toate 403 00:19:04,080 --> 00:19:08,220 de faptul că, toate estetic pufos lucrurile care nu este așa de greu să scrie, 404 00:19:08,220 --> 00:19:11,380 dar este doar ceea ce generatoare, este așa-numitul punct de vedere, estetica. 405 00:19:11,380 --> 00:19:13,880 Și modelul, în cele din urmă, se va să fie stuff-- baza de date care 406 00:19:13,880 --> 00:19:16,510 vom începe scufundare în toate miercuri cu atât mai mult. 407 00:19:16,510 --> 00:19:19,740 Deci controler este logica, punct de vedere este chestii estetic, 408 00:19:19,740 --> 00:19:23,500 și modelul va fi în cazul în care stocăm datele noastre actuale. 409 00:19:23,500 --> 00:19:26,410 >> Deci, să ne uităm la acest lucru mai concret cu următorul exemplu. 410 00:19:26,410 --> 00:19:34,700 Am de gând să merg în directorul meu aici de sursa de astăzi code-- toate 411 00:19:34,700 --> 00:19:35,770 este disponibil online. 412 00:19:35,770 --> 00:19:37,800 Și am de gând să meargă în versiunea zero. 413 00:19:37,800 --> 00:19:41,500 Și aici este-- Să-l apelul Versiunea de zero a site-ului CS50 lui. 414 00:19:41,500 --> 00:19:43,010 Nu e mult aici, la toate. 415 00:19:43,010 --> 00:19:46,810 Este o pagina web foarte simplu este probabil folosind ceea ce HTML tags-- doar 416 00:19:46,810 --> 00:19:48,970 ghici de la exemplele anterioare? 417 00:19:48,970 --> 00:19:49,890 >> Ce-i asta? 418 00:19:49,890 --> 00:19:53,920 H1-- probabil pentru că mare bold titlu, că logo-ul până sus, CS50. 419 00:19:53,920 --> 00:19:55,080 Și ce altceva este în joc? 420 00:19:55,080 --> 00:19:55,799 Da? 421 00:19:55,799 --> 00:19:56,840 Audiența: lista neordonată. 422 00:19:56,840 --> 00:19:59,990 DAVID MALAN: list-- neordonată Deci Tag UL și poate o pereche de tag-uri LI. 423 00:19:59,990 --> 00:20:01,840 Și dacă nu-mi amintesc aceste, aceasta sincer nu contează. 424 00:20:01,840 --> 00:20:04,170 Acestea sunt un fel de pufos detaliile de implementare HTML 425 00:20:04,170 --> 00:20:06,378 că te uiți rapid și te-ai întors pe drumul tau. 426 00:20:06,378 --> 00:20:10,040 Ne vom concentra mai mult pe programarea idei care sunt piesele juicier. 427 00:20:10,040 --> 00:20:12,890 >> Deci, hai să aruncăm o rapidă uita-te la HTML-- și, într-adevăr 428 00:20:12,890 --> 00:20:16,880 dacă am deschide sursa vedere aici, Da, Asta e exact ceea ce se întâmplă aici. 429 00:20:16,880 --> 00:20:18,440 Există o etichetă UL. 430 00:20:18,440 --> 00:20:20,630 Imbricate în interiorul, care este de a tag-uri LI. 431 00:20:20,630 --> 00:20:24,470 Și apoi am împrumutat URL-ul a programei actuale de aici. 432 00:20:24,470 --> 00:20:27,570 >> Și apoi în lectures.php este aparent 433 00:20:27,570 --> 00:20:31,640 o altă pagină generat dinamic care va avea, să see-- ah, 434 00:20:31,640 --> 00:20:33,170 primele două săptămâni de curs. 435 00:20:33,170 --> 00:20:36,600 Deci, săptămâna zero și o săptămână, să uita-te la asta: dacă aș vedea sursă al paginii, 436 00:20:36,600 --> 00:20:38,120 de asemenea, foarte simplu. 437 00:20:38,120 --> 00:20:42,430 Acestea sunt ceea ce duce la două pagini numit week0.php, și week1.php. 438 00:20:42,430 --> 00:20:44,040 Deci, ia în considerare ceea ce se întâmplă acum. 439 00:20:44,040 --> 00:20:50,630 >> Când m-am faceți clic pe week0.php, laptop-ul meu este de a face o cerere de week0.php. 440 00:20:50,630 --> 00:20:53,700 441 00:20:53,700 --> 00:20:58,110 Serverul de web, a.k.a., CS50 IDE, primește plicul virtual. 442 00:20:58,110 --> 00:21:01,040 Este văzut un mesaj ca, pentru a primi week0.php. 443 00:21:01,040 --> 00:21:05,060 Acesta este apoi interpretarea fișierul, de sus în jos, la stânga pentru a right-- fișierul 444 00:21:05,060 --> 00:21:07,720 numit și week0.php-- scuipa afară de rezultatele. 445 00:21:07,720 --> 00:21:10,510 Deci, în interiorul acestui fișier, week0.php, trebuie să fie 446 00:21:10,510 --> 00:21:15,410 logica controler care este generatoare de acest HTML, și vom vedea în curând că. 447 00:21:15,410 --> 00:21:19,340 >> Dar pentru moment, lasă-mă să faceți clic pe săptămână la zero, iar acum avem miercuri și vineri, 448 00:21:19,340 --> 00:21:25,260 iar acum avem diapozitivele încet din săptămână zero. 449 00:21:25,260 --> 00:21:27,400 Și s-ar putea aminti tu acest din drumul înapoi atunci când. 450 00:21:27,400 --> 00:21:29,340 Deci asta e tot acest site este de a face. 451 00:21:29,340 --> 00:21:31,120 >> Deci, haideți să ia în considerare cum se face acest lucru. 452 00:21:31,120 --> 00:21:34,290 Am de gând să meargă înapoi în codul sursă aici, în CS50 IDE, 453 00:21:34,290 --> 00:21:36,660 și am de gând să se deschidă index.php. 454 00:21:36,660 --> 00:21:38,910 În partea de sus a acestui fișier este o grămadă de comentarii. 455 00:21:38,910 --> 00:21:43,000 Și apoi în mijlocul acestui fișier ea, se dovedește, este nici un fel de cod PHP. 456 00:21:43,000 --> 00:21:47,380 Pentru că dacă nu aveți oricare dintre suport deschis etichete semn de întrebare PHP, 457 00:21:47,380 --> 00:21:49,180 ești liber să pune doar HTML. 458 00:21:49,180 --> 00:21:51,480 >> Pentru că ceea ce PHP interpret ar trebui să facă, 459 00:21:51,480 --> 00:21:53,938 este atunci când citește acest file-- sus în jos, la stânga pentru a right-- 460 00:21:53,938 --> 00:21:59,100 se interpretează doar codul se vede între aceste paranteze unghiulare semn de întrebare. 461 00:21:59,100 --> 00:22:02,380 Și orice altceva care aceasta nu recunosc ca PHP, doar scuipă. 462 00:22:02,380 --> 00:22:05,080 Și HTML este printre lucrurile se va scuipa doar din. 463 00:22:05,080 --> 00:22:09,090 >> Deci, acest fișier ar putea avea fost numit index.html, 464 00:22:09,090 --> 00:22:11,690 dar eu sunt de denumire tot dot PHP ca o piatră de temelie. 465 00:22:11,690 --> 00:22:15,960 Lectures.php-- în mod similar underwhelming, e doar ceva HTML. 466 00:22:15,960 --> 00:22:19,840 Week0.php, în mod similar doar câteva HTML. 467 00:22:19,840 --> 00:22:22,300 >> Dar acum să pună pe pălărie de inginerie proverbial, 468 00:22:22,300 --> 00:22:24,400 și ia în considerare modul în care ne putem îmbunătăți acest lucru. 469 00:22:24,400 --> 00:22:28,541 Nu e greu să faci acest lucru, dar am un fel de involuat in copiere și lipire. 470 00:22:28,541 --> 00:22:31,540 Și, de fapt, dacă am face doua saptamani, te Știi la ce mă, probabil, va face? 471 00:22:31,540 --> 00:22:34,940 Am de gând să merg la week1.php, eu sunt va pentru a evidenția totul. 472 00:22:34,940 --> 00:22:39,110 Am de gând să-l copiați, lipiți- într-un nou fișier denumit week2.php, 473 00:22:39,110 --> 00:22:42,440 tweak unele URL-uri, și să fie pe drum. 474 00:22:42,440 --> 00:22:45,240 >> Deci, bazat pe ceea ce ne-am văzut în C deja, 475 00:22:45,240 --> 00:22:46,860 acest lucru nu se simte bine, sperăm. 476 00:22:46,860 --> 00:22:49,610 Copy, Paste rareori solutia potrivita. 477 00:22:49,610 --> 00:22:51,429 Deci, ce putem începe a face pentru a îmbunătăți acest lucru? 478 00:22:51,429 --> 00:22:53,345 În cazul în care sunt oportunitățile pentru proiectare mai bine? 479 00:22:53,345 --> 00:22:56,890 480 00:22:56,890 --> 00:22:58,760 >> De când am ajunge la opt saptamani, se va 481 00:22:58,760 --> 00:23:00,910 să fie foarte enervant dacă vreau să se schimbe 482 00:23:00,910 --> 00:23:03,930 fontul de fiecare dintre paginile mele, sau dacă vreau 483 00:23:03,930 --> 00:23:06,522 de a schimba structura de structura. 484 00:23:06,522 --> 00:23:08,396 Deci, unde e ocazia pentru proiectare mai bine? 485 00:23:08,396 --> 00:23:11,990 486 00:23:11,990 --> 00:23:15,160 Ei bine, să considerăm ceea ce este comun în toate aceste fișiere. 487 00:23:15,160 --> 00:23:21,696 >> Iată o saptamana, aici e săptămână la zero, aici e lectures.php, 488 00:23:21,696 --> 00:23:25,790 aici e ceea ce index.php-- este același și ceea ce este diferit, aproximativ vorbind, 489 00:23:25,790 --> 00:23:26,760 în fiecare dintre aceste fișiere? 490 00:23:26,760 --> 00:23:30,560 491 00:23:30,560 --> 00:23:32,060 Da? 492 00:23:32,060 --> 00:23:34,560 >> Audiența: [inaudibil] 493 00:23:34,560 --> 00:23:41,244 494 00:23:41,244 --> 00:23:42,160 DAVID MALAN: OK, bine. 495 00:23:42,160 --> 00:23:46,115 Deci, există un model, cu siguranță, în care de fiecare dată când aleg curs I, 496 00:23:46,115 --> 00:23:48,250 V-aș fi generatoare de o Pagina arată foarte asemănătoare. 497 00:23:48,250 --> 00:23:50,375 Și astfel, probabil că pot mobiliza faptul că într-adevăr, 498 00:23:50,375 --> 00:23:53,060 am în mod deliberat numeric indexate lectures-- nostru 499 00:23:53,060 --> 00:23:55,290 dacă pot pune chiar mai mult cuvinte în răspunsul dumneavoastră. 500 00:23:55,290 --> 00:23:59,984 Și ceea ce este singurul lucru, într-adevăr, care se schimbă între săptămână Unu 501 00:23:59,984 --> 00:24:02,400 și lasă-mă derulați în jos așa că e aproximativ în aceeași place-- 502 00:24:02,400 --> 00:24:05,480 Deci, aici este săptămâna de zero, aproximativ în partea de sus. 503 00:24:05,480 --> 00:24:12,370 Aici este o saptamana, saptamana la zero, o saptamana, saptamana zero. 504 00:24:12,370 --> 00:24:14,370 OK, literalmente, dacă știi nici un fel de program 505 00:24:14,370 --> 00:24:16,286 acest lucru este acum doar ca o model joc de potrivire. 506 00:24:16,286 --> 00:24:17,200 Deci, ce este diferit? 507 00:24:17,200 --> 00:24:18,765 Da? 508 00:24:18,765 --> 00:24:19,777 >> Audiența: [inaudibil] 509 00:24:19,777 --> 00:24:22,360 DAVID MALAN: Bun, deci titlul se schimbă, vreodată atât de ușor. 510 00:24:22,360 --> 00:24:24,010 Zero va, desigur, la unul. 511 00:24:24,010 --> 00:24:25,570 Același lucru se întâmplă în tag-ul H1. 512 00:24:25,570 --> 00:24:28,790 Și noi nu prea o văd la fel de ușor, deoarece adresele URL sunt un pic cam lung. 513 00:24:28,790 --> 00:24:30,670 Dar aceste URL-uri se schimba usor. 514 00:24:30,670 --> 00:24:34,490 >> Dar ceea ce nu se schimbă este, îndrăznesc să spune, majoritatea conținutului page-- 515 00:24:34,490 --> 00:24:38,530 tag-ul HTML este la fel, capul este același, titlul este aproape la fel, 516 00:24:38,530 --> 00:24:40,659 corpul este același, și aproape orice altceva 517 00:24:40,659 --> 00:24:42,450 este același cu excepția aceste trucuri mici. 518 00:24:42,450 --> 00:24:45,310 Deci, cum putem merge cu privire la factoring o parte din asta? 519 00:24:45,310 --> 00:24:48,740 >> Ei bine, lasă-mă să propună exact că în următoarea versiune. 520 00:24:48,740 --> 00:24:53,890 Deci, aici, în versiunea unul, am exact aceleași fișiere, plus o pereche de altele. 521 00:24:53,890 --> 00:24:59,730 Iată index.php-- și chiar dacă nu ați mai văzut înainte PHP, 522 00:24:59,730 --> 00:25:05,511 ceea ce am, probabil, fac pentru a rezolva această problem-- bazat pe ceea ce vezi aici? 523 00:25:05,511 --> 00:25:11,300 524 00:25:11,300 --> 00:25:12,760 Da, este faptul că o ușoară angajament? 525 00:25:12,760 --> 00:25:13,450 Nu? 526 00:25:13,450 --> 00:25:16,020 Da, du-te mai departe. 527 00:25:16,020 --> 00:25:17,380 >> Audiența: [inaudibil] 528 00:25:17,380 --> 00:25:18,380 >> DAVID MALAN: Da. 529 00:25:18,380 --> 00:25:20,380 >> Audiența: [inaudibil] 530 00:25:20,380 --> 00:25:26,090 531 00:25:26,090 --> 00:25:28,669 >> DAVID MALAN: Am nevoie de tine să vorbesc doar un pic mai tare. 532 00:25:28,669 --> 00:25:31,084 >> Audiența: [inaudibil] 533 00:25:31,084 --> 00:25:35,744 534 00:25:35,744 --> 00:25:36,660 DAVID MALAN: OK, bine. 535 00:25:36,660 --> 00:25:38,620 Și am think-- a fost greu de Tu-- dar am auzit 536 00:25:38,620 --> 00:25:42,690 cred că ceea ce vrei să ajungi este că Tag-urile care au fost comune până sus, 537 00:25:42,690 --> 00:25:47,710 și tag-uri care au fost comune pe de jos, au fost luate afară, 538 00:25:47,710 --> 00:25:51,140 sau retrogradat la ce fișiere? 539 00:25:51,140 --> 00:25:53,476 Header.php și footer.php-- și vom 540 00:25:53,476 --> 00:25:55,600 pentru a face unele trucuri pentru a adresa preocuparea pe care tocmai 541 00:25:55,600 --> 00:25:59,370 ridicate cu privire la schimbarea de numere, pentru exemplu, dacă te-am auzit corect. 542 00:25:59,370 --> 00:26:02,060 >> Dar care pare a fi esența aceasta. 543 00:26:02,060 --> 00:26:04,820 Dacă a existat o mare cantitate de redundanță în partea de sus a paginii, 544 00:26:04,820 --> 00:26:06,736 și o cantitate mare de redundanță în partea de jos, 545 00:26:06,736 --> 00:26:09,280 hai literalmente doar a evidenția și taie acel conținut afară, 546 00:26:09,280 --> 00:26:13,270 pune-l într-o file-- separat la fel ca ideea de CSS, unde am luat din 547 00:26:13,270 --> 00:26:16,710 estetica foarte similare, într-un fișier separat punct PHP, 548 00:26:16,710 --> 00:26:20,340 utilizați necesita mechanism-- care este ca C include-- ascuțite care 549 00:26:20,340 --> 00:26:23,570 este, în esență cum ai spune du-te apuca conținutul header.php, 550 00:26:23,570 --> 00:26:25,370 și să copiați și lipiți-le aici. 551 00:26:25,370 --> 00:26:29,490 >> Dar ceea ce înseamnă acest lucru este că acum în index.php, am cele două linii. 552 00:26:29,490 --> 00:26:32,130 În lectures.php, eu, de asemenea, au cele două linii. 553 00:26:32,130 --> 00:26:35,230 În week0.php, eu, de asemenea, au cele două linii. 554 00:26:35,230 --> 00:26:38,380 >> Deci, acum, dacă vreau să se schimbe titlul de toate paginile mele, 555 00:26:38,380 --> 00:26:40,530 sau Vreau să schimba structura fundamentală, 556 00:26:40,530 --> 00:26:44,380 Pot schimba acum într-un singur loc, sau două antet și subsol places--, 557 00:26:44,380 --> 00:26:45,429 respectiv. 558 00:26:45,429 --> 00:26:47,970 Acum plecare codul de a privi un pic mai mult criptic, nu? 559 00:26:47,970 --> 00:26:53,590 Dar dacă te gândești la ceea ce pagina este doing-- dacă am solicita week0.php, 560 00:26:53,590 --> 00:26:59,880 la fel ca în desen peste here-- când se solicită week0.php, 561 00:26:59,880 --> 00:27:00,960 Ce înseamnă asta? 562 00:27:00,960 --> 00:27:04,410 >> Literalmente, acest fisier este solicitate de către browser. 563 00:27:04,410 --> 00:27:06,240 A.k.a. web server-- 564 00:27:06,240 --> 00:27:09,250 CS50 ID-- apucă acest fișier, week0.php, și citește 565 00:27:09,250 --> 00:27:10,780 o sus în jos, la stânga la dreapta. 566 00:27:10,780 --> 00:27:15,400 Pe o linie, se întâlnește imediat Suport deschis semn de întrebare PHP, necesită 567 00:27:15,400 --> 00:27:17,872 header punct PHP, și așa ceea ce interpretul PHP 568 00:27:17,872 --> 00:27:20,580 does-- care este construit în web Server, pentru că am preconfigurat 569 00:27:20,580 --> 00:27:24,580 o pentru Tu-- merge automat în header.php, copiaza continutul, 570 00:27:24,580 --> 00:27:25,640 le lipește aici. 571 00:27:25,640 --> 00:27:28,790 >> Dar apoi întâlnește interpreți semn de întrebare suport aproape, 572 00:27:28,790 --> 00:27:30,320 asa ca este terminat gândire. 573 00:27:30,320 --> 00:27:33,400 Acum scuipă doar orbește liniile doi prin șapte, 574 00:27:33,400 --> 00:27:35,240 pentru că e doar HTML prime. 575 00:27:35,240 --> 00:27:38,470 Ajunge la linia opt, și face asta aceeași magie again-- deschiderea fișierului, 576 00:27:38,470 --> 00:27:41,460 hapsân conținutul, și cerându-le sau lipirea lor 577 00:27:41,460 --> 00:27:42,480 chiar atunci sau acolo. 578 00:27:42,480 --> 00:27:44,210 >> Dar am făcut aluzie la un bug. 579 00:27:44,210 --> 00:27:48,610 Acesta este un pas înapoi parțială, pentru că dacă ne uităm în header.php, 580 00:27:48,610 --> 00:27:50,850 Un fel de am tăiat un colț. 581 00:27:50,850 --> 00:27:56,250 Ce caracteristică am renunța pentru pentru a obține acest design discutabil mai bine? 582 00:27:56,250 --> 00:27:57,305 Da? 583 00:27:57,305 --> 00:27:58,180 Audiența: [inaudibil] 584 00:27:58,180 --> 00:28:00,570 DAVID MALAN: Da, am un fel de tăiat un colț trivial. 585 00:28:00,570 --> 00:28:04,489 Tu a subliniat că ceea ce se schimba a fost titlul, numărul în titlu, 586 00:28:04,489 --> 00:28:05,530 și numărul în H1. 587 00:28:05,530 --> 00:28:08,170 Deci soluția mea a fost, OK, hai să redenumi pagina, 588 00:28:08,170 --> 00:28:10,080 și nu a face cu faptul că fel de problemă. 589 00:28:10,080 --> 00:28:12,130 Așa că e un parțială pas înapoi pentru sigur. 590 00:28:12,130 --> 00:28:14,300 >> Dar ceea ce este demn de remarcat aici este că ceea ce am făcut 591 00:28:14,300 --> 00:28:17,200 este luat în caz contrar tot comun lucrurile. 592 00:28:17,200 --> 00:28:21,520 Și în footer.php, observa am luat tot din faptul că, deși mai mică, 593 00:28:21,520 --> 00:28:22,790 chestii comune. 594 00:28:22,790 --> 00:28:26,070 Așa că am nevoie pentru a fi într-un fel acum posibilitatea de a luați un alt pas înainte, și să stabilească 595 00:28:26,070 --> 00:28:27,160 că aspectele titlu. 596 00:28:27,160 --> 00:28:28,180 Așa că hai să facem asta. 597 00:28:28,180 --> 00:28:35,060 >> Lasă-mă să intru în a doua versiunea mea aici, care, din nou, are aceleași fișiere 598 00:28:35,060 --> 00:28:36,825 cu excepția unui nou plus. 599 00:28:36,825 --> 00:28:38,950 Și e un pic mai mult verbose, dar să vedem dacă ne 600 00:28:38,950 --> 00:28:40,550 poate tachineze pe langa ceea ce se întâmplă aici. 601 00:28:40,550 --> 00:28:45,370 Deci, în loc de a cere header.php, și footer.php, 602 00:28:45,370 --> 00:28:50,180 Mi se pare a fi să necesite un singur file-- numit, desigur, helpers.php. 603 00:28:50,180 --> 00:28:52,560 Și lasă-mă să prevadă acum, ceea ce este în interiorul helpers.php 604 00:28:52,560 --> 00:28:55,330 este doar o adunatura de funcții că am scris, ca înainte. 605 00:28:55,330 --> 00:28:57,550 Dar l-am sunat helpers.php. 606 00:28:57,550 --> 00:29:00,370 >> Acum se pare, în linia trei și 10, sunt 607 00:29:00,370 --> 00:29:02,840 asteptare două functions-- face antet, subsol face. 608 00:29:02,840 --> 00:29:05,040 Cei care nu vin cu PHP, am scris celor mine. 609 00:29:05,040 --> 00:29:07,880 Și le-am pus în helpers.php. 610 00:29:07,880 --> 00:29:11,210 >> Acum, am văzut doar această sintaxă odată, și a fost foarte scurt. 611 00:29:11,210 --> 00:29:15,330 Dar acest lucru este aparent un argument pentru a face antet, funcția. 612 00:29:15,330 --> 00:29:16,450 De ce știu eu asta? 613 00:29:16,450 --> 00:29:18,522 Ei bine, aici e un paren apropiate, aici e un paren deschisă. 614 00:29:18,522 --> 00:29:21,230 Și, desigur, la fel ca în C, ceva între aceste paranteze 615 00:29:21,230 --> 00:29:23,350 este un input-- sau un argument pentru această funcție. 616 00:29:23,350 --> 00:29:26,710 >> Care este tipul de date de acest argument, bazat pe ceea ce am subliniat? 617 00:29:26,710 --> 00:29:30,820 Ce face aceste paranteze drepte indică, pe baza de săptămâna trecută? 618 00:29:30,820 --> 00:29:33,390 Da, e un array-- în mod special un tablou asociativ. 619 00:29:33,390 --> 00:29:35,700 Și, desigur, această sintaxă este un pic funky 620 00:29:35,700 --> 00:29:38,860 dar acest lucru este doar in trecere în o pereche valoare-cheie. 621 00:29:38,860 --> 00:29:43,530 Cheia este, citat citatul titlu, iar valoarea este CS50. 622 00:29:43,530 --> 00:29:46,220 >> Dacă am fi făcut acest lucru în C, s-ar putea în schimb 623 00:29:46,220 --> 00:29:49,400 arata mai mult ca acest lucru, doar citat încheiat citatul CS50-- 624 00:29:49,400 --> 00:29:52,460 sau de fapt, ar fi buclat bretele, sau ceva de genul că, în C, 625 00:29:52,460 --> 00:29:55,580 în cazul în care cheia este zero, iar valoarea este CS50. 626 00:29:55,580 --> 00:29:59,840 Dar, din nou, în PHP, chiar dacă Sintaxa este, din nou, un pic ciudat, 627 00:29:59,840 --> 00:30:02,860 vă permite să treci în cuvinte în loc de numere 628 00:30:02,860 --> 00:30:05,120 să se asocieze cheile cu valori. 629 00:30:05,120 --> 00:30:06,390 >> Deci, ce inseamna toate acestea? 630 00:30:06,390 --> 00:30:09,750 Dacă mă duc în helpers.php, să ne uităm la această funcție. 631 00:30:09,750 --> 00:30:13,620 renderHeader.php, mai degrabă renderHeader este funcția mea, 632 00:30:13,620 --> 00:30:16,220 și știu că pentru că văd funcția cheie aici. 633 00:30:16,220 --> 00:30:19,450 Acest lucru este nou de la C- ea aparent ia un argument numit data-- 634 00:30:19,450 --> 00:30:22,400 dar aș fi putut numit acest nimic, dar l-am sunat de date, 635 00:30:22,400 --> 00:30:25,090 doar pentru a fi un pic clean-- și ia doar o presupunere, în special 636 00:30:25,090 --> 00:30:28,173 dacă ați programat în altă limbaj de nivel superior înainte, ceva 637 00:30:28,173 --> 00:30:29,820 de mai sus C, conceptual. 638 00:30:29,820 --> 00:30:33,820 >> Ce suport deschis egal Suport pătrat probabil înseamnă? 639 00:30:33,820 --> 00:30:35,540 Sau ce ar putea să-l spui? 640 00:30:35,540 --> 00:30:39,660 Noi nu am văzut acest lucru în C. Da? 641 00:30:39,660 --> 00:30:40,480 >> Un array gol. 642 00:30:40,480 --> 00:30:45,440 Mai exact, aceasta înseamnă că, dacă utilizatorul nu pune renderHeader 643 00:30:45,440 --> 00:30:49,340 cu un argument, am încă în desfășurare de a avea un argument numit de date, 644 00:30:49,340 --> 00:30:52,327 dar valoarea sa implicită este va fi un array gol. 645 00:30:52,327 --> 00:30:53,660 Deci e doar un confort frumos. 646 00:30:53,660 --> 00:30:56,493 Eu nu trebuie să țipi la utilizator, sau spune-ați folosit funcția mea greșit. 647 00:30:56,493 --> 00:30:59,849 Pot da doar utilizatorul implicit valoare, dacă nu-mi pasă în special. 648 00:30:59,849 --> 00:31:01,890 Acum această funcție, eu sunt O să val mâinile mele la. 649 00:31:01,890 --> 00:31:07,620 Dar această funcție permite extract ne pentru a trece aceste variabile în date 650 00:31:07,620 --> 00:31:10,360 în header.php în felul următor. 651 00:31:10,360 --> 00:31:13,100 Și aceasta este ultima piesă, Cred că, de sintaxă funky. 652 00:31:13,100 --> 00:31:15,860 Aici este noua mea versiune de aceasta header.php-- 653 00:31:15,860 --> 00:31:20,140 obișnuia să spună, literalmente, deschis Suport titlu CS50, și că a fost. 654 00:31:20,140 --> 00:31:21,766 Și același lucru H1. 655 00:31:21,766 --> 00:31:24,310 >> Acum se pare că spune ceva destul de funky. 656 00:31:24,310 --> 00:31:28,030 Și lasă-mă să simplifice această pentru o clipă, după cum urmează. 657 00:31:28,030 --> 00:31:31,020 Aceasta este ceea ce am a schimbat titlul meu de a fi. 658 00:31:31,020 --> 00:31:35,140 Cu toate acestea, se face un pic urât pentru paranteze constant deschise cu PHP, 659 00:31:35,140 --> 00:31:36,610 și apoi utilizați funcția de imprimare. 660 00:31:36,610 --> 00:31:40,810 Se pare că PHP are o prescurtare notație pentru aceasta, care este doar 661 00:31:40,810 --> 00:31:45,050 un semn de egalitate, care este punct de vedere tehnic o funcție numită ecou în loc de imprimare, 662 00:31:45,050 --> 00:31:46,800 dar este același lucru, în mod eficient. 663 00:31:46,800 --> 00:31:48,440 >> Care doar arata mai bine. 664 00:31:48,440 --> 00:31:50,510 E doar o sintactic zahăr, dacă vreți, 665 00:31:50,510 --> 00:31:52,260 care face ca codul meu arata un pic mai bine. 666 00:31:52,260 --> 00:31:54,010 Dar se pare, și vom vedea acest lucru din nou 667 00:31:54,010 --> 00:31:57,420 înainte de mult timp, trebuie să numim acest enervant funcție lung numit 668 00:31:57,420 --> 00:32:00,582 HTML caractere speciale în PHP, pentru că se pare că 669 00:32:00,582 --> 00:32:02,790 există anumite intrări că utilizatorul ne-ar putea da, 670 00:32:02,790 --> 00:32:05,160 sau pe care utilizatorii ar putea să ne dea, care sunt de gând să rupă site-ul nostru. 671 00:32:05,160 --> 00:32:07,035 Dar vom vedea că următoarea săptămână cu JavaScript. 672 00:32:07,035 --> 00:32:10,740 Dar pentru moment, știu doar că acest fișier, headers.php, pur și simplu 673 00:32:10,740 --> 00:32:13,040 ia titlul pe care Am trecut în, face 674 00:32:13,040 --> 00:32:17,380 sigur că e sigur să fie injectat într-un web pagină, și scuipa ca titlul meu 675 00:32:17,380 --> 00:32:18,640 și, ca H1 meu. 676 00:32:18,640 --> 00:32:24,440 Deci, dacă mă duc în această versiune acum, observați că prelegeri are titlul înapoi, 677 00:32:24,440 --> 00:32:28,630 săptămână la zero are titlul înapoi, și Într-adevăr, HTML am generatoare 678 00:32:28,630 --> 00:32:32,110 este identic cu ceea ce primul meu versiune asta-- excepția spațiu mea, 679 00:32:32,110 --> 00:32:35,150 pentru că am început de formatare codul meu un pic diferit. 680 00:32:35,150 --> 00:32:38,082 Dar am generat toate codul îmi pasă. 681 00:32:38,082 --> 00:32:39,790 Deci lasă-mă să pauză pentru doar un moment și a vedea 682 00:32:39,790 --> 00:32:42,200 dacă există orice întrebări sau confuzie am creat. 683 00:32:42,200 --> 00:32:44,970 684 00:32:44,970 --> 00:32:48,150 Bine, hai să răsucească așa un pic mai greu aici 685 00:32:48,150 --> 00:32:51,500 pentru a vedea dacă există un oportunitate de îmbunătățire. 686 00:32:51,500 --> 00:32:56,130 Helpers.php, de asemenea, a avut acest funcție, numit renderFooter. 687 00:32:56,130 --> 00:32:59,652 Și ceea ce este demn de remarcat despre renderHeader, și renderFooter? 688 00:32:59,652 --> 00:33:02,610 Și din nou, în scopul de astăzi, știu că funcția extractul este doar 689 00:33:02,610 --> 00:33:08,280 felul meu de argumente trecători în header.php și footer.php. 690 00:33:08,280 --> 00:33:10,900 691 00:33:10,900 --> 00:33:11,780 >> Ne pare rău? 692 00:33:11,780 --> 00:33:13,056 >> Audiența: [inaudibil] 693 00:33:13,056 --> 00:33:15,180 DAVID MALAN: Da, am doar a schimbat necesita linie. 694 00:33:15,180 --> 00:33:19,410 Deci literal, am comis păcatul de copiere și lipire, încă o dată. 695 00:33:19,410 --> 00:33:21,920 Nu este un număr foarte mare de linii, dar vin on-- 696 00:33:21,920 --> 00:33:25,220 dacă am copierea și lipirea tot doar pentru a schimba un singur cuvânt mic, 697 00:33:25,220 --> 00:33:28,610 și un cuvânt mic care Alan punctele out este subsol aici, comparativ cu antet aici. 698 00:33:28,610 --> 00:33:30,670 În caz contrar, totul este identice, cu excepția, 699 00:33:30,670 --> 00:33:32,180 Desigur, numele de funcție de. 700 00:33:32,180 --> 00:33:33,690 Deci, ceea ce ar putea face mai bine ne-am? 701 00:33:33,690 --> 00:33:39,810 >> Ei bine, lasă-mă să deschid această versiune aici, prin care în helpers.php, 702 00:33:39,810 --> 00:33:42,300 de ce nu am chiar a lua o puțin mai inteligent despre asta? 703 00:33:42,300 --> 00:33:46,410 Scrie puțin mai complicat cod, dar o numesc fac? 704 00:33:46,410 --> 00:33:48,470 Deci, ce am schimbat fundamental? 705 00:33:48,470 --> 00:33:51,770 >> Este nevoie de un argument now-- două argumente, date încă. 706 00:33:51,770 --> 00:33:54,444 Și apoi ce-i primul Numele probabil utilizat pentru, 707 00:33:54,444 --> 00:33:55,860 bazat pe ceea ce sunteți de lectură aici? 708 00:33:55,860 --> 00:33:58,452 Chiar dacă o parte din sintaxa este încă nou. 709 00:33:58,452 --> 00:33:59,660 Ce este dolar șablon semn? 710 00:33:59,660 --> 00:34:02,400 711 00:34:02,400 --> 00:34:03,016 >> Ne pare rău? 712 00:34:03,016 --> 00:34:03,710 >> Audiența: antet sau subsol. 713 00:34:03,710 --> 00:34:04,510 >> DAVID MALAN: antet sau subsol. 714 00:34:04,510 --> 00:34:07,134 Deci se pare, am decis că, dacă singurul lucru care se schimba 715 00:34:07,134 --> 00:34:10,159 este ceea ce vreau șablon la print-- și prin șablon 716 00:34:10,159 --> 00:34:13,100 Vreau să spun acest lucru este model pentru cod pe care vreau să ieșire, 717 00:34:13,100 --> 00:34:16,350 dar vreau să conectați într-un values-- așa că dacă este doar în afara 718 00:34:16,350 --> 00:34:20,440 sau subsol, de ce nu am parameterize că și numesc semnul argument dolar 719 00:34:20,440 --> 00:34:21,409 șablon? 720 00:34:21,409 --> 00:34:26,250 Și apoi această sintaxă funky, îmi permite pentru a crea o cale într-o variabilă aici. 721 00:34:26,250 --> 00:34:28,030 >> Deci, calea semn dolar este o variabilă. 722 00:34:28,030 --> 00:34:31,120 Ce face această sintaxă face, dacă ești familiar? 723 00:34:31,120 --> 00:34:32,512 Da? 724 00:34:32,512 --> 00:34:34,065 >> Audiența: [inaudibil] 725 00:34:34,065 --> 00:34:34,940 DAVID MALAN: Exact. 726 00:34:34,940 --> 00:34:37,600 Dacă șablon este, citat citatul, antet, sau în cazul în care șablon este, 727 00:34:37,600 --> 00:34:41,170 Citat încheiat citatul, subsol, că linia nu care le-am subliniat, linia opt, 728 00:34:41,170 --> 00:34:46,330 este pur și simplu a lua acest nume, cum ar fi antet, și concatenarea cu punct PHP. 729 00:34:46,330 --> 00:34:49,750 Deci nu am avut acest operator în C. Acest operator este dot 730 00:34:49,750 --> 00:34:54,520 un lucru uimitor în PHP-- daca esti familiarizat cu JavaScript sau Java, 731 00:34:54,520 --> 00:34:56,949 puteți utiliza plus semneze pentru a face concatenare. 732 00:34:56,949 --> 00:34:59,974 >> În C, este o durere în neck-- și îmi pare rău, în set p șase, 733 00:34:59,974 --> 00:35:02,390 ai de gând să trebuie să faci asta: este o durere în gât 734 00:35:02,390 --> 00:35:03,930 a concatena șiruri. 735 00:35:03,930 --> 00:35:04,670 Ce? 736 00:35:04,670 --> 00:35:06,580 Ei bine, pentru că dacă ai un șir care este atât de mult, 737 00:35:06,580 --> 00:35:09,538 și un alt șir care este atât de mult, Nu poți să le conectați împreună. 738 00:35:09,538 --> 00:35:11,070 Ce ai în loc să facă în C? 739 00:35:11,070 --> 00:35:11,680 Da? 740 00:35:11,680 --> 00:35:12,380 >> Audiența: [inaudibil] 741 00:35:12,380 --> 00:35:15,090 >> DAVID MALAN: Trebuie să malloc memorie, sau de a folosi un array pe stiva. 742 00:35:15,090 --> 00:35:17,214 Și tu de fapt, să face ca matrice destul de mare 743 00:35:17,214 --> 00:35:20,940 pentru a se potrivi acest plus acest lucru, plus backslash zero. 744 00:35:20,940 --> 00:35:24,994 Apoi le înlănțui împreună, folosind se amestecă pisica sau manual cu o buclă pentru, 745 00:35:24,994 --> 00:35:26,160 sau orice număr de tehnici. 746 00:35:26,160 --> 00:35:27,760 Și vă vom arăta un cuplu in sase set-p. 747 00:35:27,760 --> 00:35:29,080 >> Este o durere în gât. 748 00:35:29,080 --> 00:35:34,190 Și aceasta este într-adevăr ceea ce vreau să spun despre acest versus astea-- ca C față de PHP. 749 00:35:34,190 --> 00:35:36,870 Trebuie doar primești mai mult funcționalitate pentru drum liber, 750 00:35:36,870 --> 00:35:39,030 astfel încât să vă puteți concentra, în mod ideal, la distracție 751 00:35:39,030 --> 00:35:41,190 parte a codificare, The proiect pe care doriți să rezolve, 752 00:35:41,190 --> 00:35:43,190 mai degrabă decât detalii precise nivel scăzut. 753 00:35:43,190 --> 00:35:49,840 >> Deci, acest lucru doar generează header.php sau footer.php bazat pe care o numesc eu. 754 00:35:49,840 --> 00:35:52,280 Și într-adevăr, dacă mă duc în index.php, aviz 755 00:35:52,280 --> 00:35:56,230 tot ce changed-- loc de de asteptare face antet sau subsol face, 756 00:35:56,230 --> 00:36:00,230 Sun fac, urmat de Numele modelului pe care vreau să fac. 757 00:36:00,230 --> 00:36:02,370 Și veți vedea acest lucru, de asemenea, în problema set de șapte, 758 00:36:02,370 --> 00:36:05,530 prin care vă permit să utilizați aceeași funcție pentru a face buchete 759 00:36:05,530 --> 00:36:07,550 și buchete de diferite pagini web. 760 00:36:07,550 --> 00:36:10,570 >> Deci, mai degrabă decât să locuiască prea mult mai mult pe aceste details-- 761 00:36:10,570 --> 00:36:13,210 care veți vedea din nou în set problemă seven-- să ne uităm 762 00:36:13,210 --> 00:36:16,850 la acum începutul unei soluții la o problemă mai interesantă. 763 00:36:16,850 --> 00:36:19,310 Până acum, ne-am nimic făcut are date salvate. 764 00:36:19,310 --> 00:36:22,920 De fapt, singura dată când l-am salvat vreodată ceva ce am făcut în această clasă 765 00:36:22,920 --> 00:36:31,030 este atunci când am avut un demo foarte simplu vreme înapoi, în care am folosit fișier IO în C, 766 00:36:31,030 --> 00:36:34,520 și cred că am scris în numele meu, și Numele lui Hannah, și numele Maria, 767 00:36:34,520 --> 00:36:37,610 sau, poate, numele lui Andy, și apoi am salvat o file-- CSV 768 00:36:37,610 --> 00:36:39,430 separate prin virgula fișier valori. 769 00:36:39,430 --> 00:36:43,530 >> Si am folosit fopen-- cred am folosit fprintf ca îmi amintesc, 770 00:36:43,530 --> 00:36:44,910 si am salvat un fișier. 771 00:36:44,910 --> 00:36:46,920 Acum, că este cea mai simplă forma unei baze de date. 772 00:36:46,920 --> 00:36:50,230 Dacă doriți pentru a face un site web pentru Program Frosh AI, prin care bobocilor 773 00:36:50,230 --> 00:36:53,390 pot înregistra pentru un sport, ai ideal vrei să faci ceva cu aceste date. 774 00:36:53,390 --> 00:36:55,370 Săptămâna trecută, am făcut nimic cu data-- tocmai am spus, 775 00:36:55,370 --> 00:36:56,661 v-ați înregistrat, nu chiar. 776 00:36:56,661 --> 00:36:58,950 Sau poate prin e-mail Proctor, și asta a fost tot. 777 00:36:58,950 --> 00:37:02,110 >> Dar ar fi frumos dacă aș putea da că Proctor un fișier CSV, 778 00:37:02,110 --> 00:37:03,340 ca un fișier Excel. 779 00:37:03,340 --> 00:37:05,090 Sau mai bine, ar fi fi frumos dacă aș putea 780 00:37:05,090 --> 00:37:08,830 pune numele acestor utilizatori și cămin nume și toate astea 781 00:37:08,830 --> 00:37:11,740 într-o bază de date care doar trăiește pentru totdeauna, 782 00:37:11,740 --> 00:37:13,530 până aleg pentru a șterge datele. 783 00:37:13,530 --> 00:37:15,645 O bază de date care permite ma pentru a interoga informații. 784 00:37:15,645 --> 00:37:18,070 Și într-adevăr, asta e ceea ce o bază de date este. 785 00:37:18,070 --> 00:37:20,470 >> Va prezentam azi, și săptămâna viitoare, de asemenea, o tehnologie 786 00:37:20,470 --> 00:37:25,020 numit SQL-- o interogare structurat Limba, care este o altă limbă. 787 00:37:25,020 --> 00:37:28,750 Este, în esență, o programare limbă, dar pentru baze de date. 788 00:37:28,750 --> 00:37:31,760 Și o bază de date pentru acum, doar cred că de o versiune super-ca de lux 789 00:37:31,760 --> 00:37:35,710 Microsoft Excel, sau Google Foi de calcul, sau numere de mere. 790 00:37:35,710 --> 00:37:39,950 Este, în general, un program care permite să stocați o grămadă de date 791 00:37:39,950 --> 00:37:43,960 în rânduri și coloane, destul de ca s-ar putea în Excel. 792 00:37:43,960 --> 00:37:47,100 >> Dar ceea ce este frumos, mai ales în cazul în care nu suntem foarte familiarizați cu Excel, 793 00:37:47,100 --> 00:37:52,040 ce SQL vă permite să faceți este interogare acest informații prin scrierea de linii de cod 794 00:37:52,040 --> 00:37:55,220 în cazul în care puteți, chiar dacă dumneavoastră baza de date are un milion de rânduri în ea, 795 00:37:55,220 --> 00:37:57,190 puteți găsi lucruri foarte rapid. 796 00:37:57,190 --> 00:37:59,950 De fapt, Excel este deosebit rău la seturi mari de date. 797 00:37:59,950 --> 00:38:02,460 Și, de fapt, până la câteva cu ani în urmă, s-au dovedit 798 00:38:02,460 --> 00:38:08,890 Excel va permite doar să stocați până la 65.535 rânduri de data-- care 799 00:38:08,890 --> 00:38:12,020 sună ca o mulțime, dar la timp am fost un student grad, 800 00:38:12,020 --> 00:38:14,920 și îmi amintesc împiedicare peste asta pentru că am fost generatoare de 801 00:38:14,920 --> 00:38:17,900 Fișiere CSV pentru cercetare și am mea a vrut să-i analizeze rapid 802 00:38:17,900 --> 00:38:19,530 doar prin deschiderea în Excel. 803 00:38:19,530 --> 00:38:23,730 Desigur, calculatorul meu doar sa prăbușit, pentru că am avut mai mult de 65.000 de rânduri. 804 00:38:23,730 --> 00:38:27,210 >> Dar în cazul în care a făcut 65.535 provin de la? 805 00:38:27,210 --> 00:38:29,670 Ce făcea Microsoft, probabil? 806 00:38:29,670 --> 00:38:32,430 Daca esti bun cu puterile tale de doi? 807 00:38:32,430 --> 00:38:37,160 Da, au fost folosind un 16 biți valoare reprezintă numărul rând. 808 00:38:37,160 --> 00:38:41,310 Și două la 16 este 65,536-- minus unu, pentru că dacă 809 00:38:41,310 --> 00:38:45,414 index zero, înseamnă că a fost mai mare număr de rânduri aș putea avea. 810 00:38:45,414 --> 00:38:46,830 Și a fost doar o decizie de design. 811 00:38:46,830 --> 00:38:52,760 Prin salvarea 16 biți, mi-au limitat la 16.000 de rânduri, în loc de 4 miliarde de euro, 812 00:38:52,760 --> 00:38:54,322 pe care am fi putut avea în mod ideal. 813 00:38:54,322 --> 00:38:57,030 Dar pentru acum, vom introduce acest mai mult într-un context web. 814 00:38:57,030 --> 00:39:00,390 Și ceea ce este frumos despre SQL este că, chiar deși este destul de puternic și destul de 815 00:39:00,390 --> 00:39:04,050 sofisticat, se reduce într-adevăr până la patru operațiuni cheie, patru 816 00:39:04,050 --> 00:39:08,060 funcții-cheie, dacă will-- selectați, pentru recuperarea de date, căutare 817 00:39:08,060 --> 00:39:12,510 pentru datele; șterge sau ștergerea de date; introduce pentru adăugarea de rânduri în baza de date; 818 00:39:12,510 --> 00:39:13,410 și actualizarea. 819 00:39:13,410 --> 00:39:17,010 Deci, dacă ați folosit vreodată Google Foi de calcul, numere Apple, Microsoft 820 00:39:17,010 --> 00:39:19,310 Excel, ați executat, cel mai probabil, toate 821 00:39:19,310 --> 00:39:22,530 din aceste operațiuni ca un om de doar cu ajutorul tastaturii și mouse-- dvs. 822 00:39:22,530 --> 00:39:26,050 introducerea de date, folosind ochii pentru a selecta sau a căuta date, 823 00:39:26,050 --> 00:39:28,360 sau date de actualizare, sau ștergerea datelor. 824 00:39:28,360 --> 00:39:29,870 >> Deci, ce înseamnă asta? 825 00:39:29,870 --> 00:39:34,300 Ei bine, pre-instalat în CS50 IDE este un program numit MySQL. 826 00:39:34,300 --> 00:39:37,050 Este un program gratuit, open-source baza de date care e foarte popular. 827 00:39:37,050 --> 00:39:40,590 Facebook, de exemplu, foloseste acest zi, printre alte instrumente pe care le utilizează. 828 00:39:40,590 --> 00:39:44,300 Și o mulțime de site-uri foarte populare utiliza aceasta în mare parte pentru că este rapid, 829 00:39:44,300 --> 00:39:45,230 și pentru că este gratuit. 830 00:39:45,230 --> 00:39:46,820 Deși cu siguranță există alternative. 831 00:39:46,820 --> 00:39:49,580 Și unii dintre voi s-ar putea bălăci în apă cu alternative pentru proiectele finale. 832 00:39:49,580 --> 00:39:55,330 >> Aceasta este o captură de ecran, între timp, de un instrument bazat pe web numit phpMyAdmin. 833 00:39:55,330 --> 00:39:58,260 Este o coincidență faptul că acest instrument bazat pe web este, de asemenea 834 00:39:58,260 --> 00:40:01,720 scrise într-o limbă, PHP, dar ceea ce este menit să facă 835 00:40:01,720 --> 00:40:04,620 este să ne dea un web- interfață pentru o bază de date. 836 00:40:04,620 --> 00:40:07,180 Deoarece MySQL este în mod tipic ceva, istoric tine, 837 00:40:07,180 --> 00:40:08,770 ar interacționa cu doar cu o linie de comandă. 838 00:40:08,770 --> 00:40:10,811 Și ar fi foarte enervant și arcane de a avea 839 00:40:10,811 --> 00:40:14,487 de tip comenzi textuale pentru a selecta date, introduceți datele și șterge datele. 840 00:40:14,487 --> 00:40:16,820 Asa ca unii oameni de pe internet a scris un program web-based 841 00:40:16,820 --> 00:40:18,900 ca doar să ne gestiona datele din baza noastra de date. 842 00:40:18,900 --> 00:40:23,040 E ca și cum dublu click pe Excel, și execută o versiune web-based a acestuia. 843 00:40:23,040 --> 00:40:26,370 >> Și ce ai de gând să utilizați acest lucru pentru în cele din urmă săptămâna viitoare, nu în șase set-p, 844 00:40:26,370 --> 00:40:28,680 dar este de a construi ceva numit CS50 Finanțe, care 845 00:40:28,680 --> 00:40:32,630 va avea o bază de date de utilizatorii, cu nume de utilizator și parole, 846 00:40:32,630 --> 00:40:34,860 dolar sumele pe care le au în conturile lor bancare. 847 00:40:34,860 --> 00:40:37,280 O să fie ceva ce utilizați pentru a stoca 848 00:40:37,280 --> 00:40:39,910 simbolurile și cantitățile de stocuri care utilizatorii 849 00:40:39,910 --> 00:40:42,567 au cumpărat cu ajutorul virtuale dolari pe care le veți da pentru a le. 850 00:40:42,567 --> 00:40:44,900 Si va permite utilizatorilor să să se înregistreze pentru site-ul dvs., 851 00:40:44,900 --> 00:40:47,190 astfel încât chiar și prietenii tăi poate ton in site-ul dumneavoastră 852 00:40:47,190 --> 00:40:49,360 și de fapt înregistrați, conectați, și să se joace în jurul valorii de 853 00:40:49,360 --> 00:40:52,807 și să încerce să găsească vina în codul, și să încerce să găsească bug-uri în site-ul dumneavoastră. 854 00:40:52,807 --> 00:40:55,390 Și vor înregistra pur și simplu de adăugarea ei înșiși, în mod eficient, 855 00:40:55,390 --> 00:40:58,120 prin cod vă scrie la baza de date. 856 00:40:58,120 --> 00:41:02,470 >> De exemplu, acest lucru este un screenshot rapid de ce o bază de date ar putea arata. 857 00:41:02,470 --> 00:41:05,190 Aceasta a fost de la unul dintre solutions-- anul trecut 858 00:41:05,190 --> 00:41:07,760 acest lucru este ca o mini Excel fișier, stocate în baza noastră de date, 859 00:41:07,760 --> 00:41:09,950 În această colecție de software numit MySQL. 860 00:41:09,950 --> 00:41:13,260 Pe partea stângă, se pare Am dat fiecare utilizator un număr unic. 861 00:41:13,260 --> 00:41:16,200 În a doua coloană, am dat toată lumea un utilizator name-- mea 862 00:41:16,200 --> 00:41:16,880 dintre ei. 863 00:41:16,880 --> 00:41:21,430 Și pe partea dreaptă, Le-am dat un hash. 864 00:41:21,430 --> 00:41:26,760 >> Acum, acest lucru este de fapt o parolă, dar nu este o parolă text simplu. 865 00:41:26,760 --> 00:41:30,160 Este o parolă criptată, în cazul în care vreți, sau o parolă hash. 866 00:41:30,160 --> 00:41:32,000 Care ne vom întoarce la timp, înainte de. 867 00:41:32,000 --> 00:41:34,340 >> Dar dacă ați citit vreodată un articol despre modul în care 868 00:41:34,340 --> 00:41:37,950 parola la un bancar sau unele site-ul ar fi putut fi compromisă, 869 00:41:37,950 --> 00:41:39,630 în general, poate însemna unul din două lucruri. 870 00:41:39,630 --> 00:41:42,780 Deci, aceasta este doar un fragment de șase utilizatori. 871 00:41:42,780 --> 00:41:45,460 Voi toti acum puteți da seama out prin hacking sau crăparea 872 00:41:45,460 --> 00:41:47,690 ce parole noastre șase persoane sunt. 873 00:41:47,690 --> 00:41:49,720 Dar dacă ați ajuns vreodată o alertă sau scuze 874 00:41:49,720 --> 00:41:52,803 de la o companie sau site-ul spune, Ne pare rău, un hacker a izbucnit în baza noastră de date, 875 00:41:52,803 --> 00:41:56,360 tu ar trebui să schimbe, probabil, dumneavoastră parola, ce ar putea să însemne asta? 876 00:41:56,360 --> 00:41:59,670 >> Ei bine, o, ar putea insemna companie a fost mai cretin, 877 00:41:59,670 --> 00:42:03,630 și a fost depozitarea parola într-o coloană de acest fel, necriptate. 878 00:42:03,630 --> 00:42:05,840 Ceea ce înseamnă un adversar, care a furat baza de date, 879 00:42:05,840 --> 00:42:07,440 stie literalmente dvs. Numele de utilizator și parola. 880 00:42:07,440 --> 00:42:08,960 Asta e cel mai rău scenariu posibil. 881 00:42:08,960 --> 00:42:11,710 Și, după cum veți vedea în p-set șapte, atât de ușor pentru a evita. 882 00:42:11,710 --> 00:42:15,624 Nu există absolut nici o scuză pentru faptul că formă de prostie pe internet astăzi. 883 00:42:15,624 --> 00:42:18,540 Two-- și vom găsi unele articole să depună mărturie asupra faptului că acest lucru încă 884 00:42:18,540 --> 00:42:21,710 se întâmplă, nonetheless-- doi, poate un adversar 885 00:42:21,710 --> 00:42:23,840 a furat această versiune a bazei de date. 886 00:42:23,840 --> 00:42:27,110 Care este încă un fel de rău, pentru că acum ei știu că am șase clienți, 887 00:42:27,110 --> 00:42:29,270 Știu numele de utilizator din aceste șase clienți, 888 00:42:29,270 --> 00:42:32,910 și știu criptate versiuni, sau versiunile distribuit, 889 00:42:32,910 --> 00:42:34,340 de parole cele șase clienților. 890 00:42:34,340 --> 00:42:37,010 Dar oricare dintre voi care ar putea am făcut [? Hacker 2?] 891 00:42:37,010 --> 00:42:41,150 în cazul în care cracare parole, sau a luat O privire la această versiune a problemei 892 00:42:41,150 --> 00:42:46,280 set, de ce este încă un pic îngrijorătoare dacă un adversar stie hash-ul 893 00:42:46,280 --> 00:42:47,435 parole? 894 00:42:47,435 --> 00:42:49,732 >> Audiența: deoarece acestea ar putea introduceți întreaga dicționar 895 00:42:49,732 --> 00:42:50,690 în funcție hash. 896 00:42:50,690 --> 00:42:54,520 Și dacă parola este un dicționar cuvânt, [? ei doar pot match--?] 897 00:42:54,520 --> 00:42:57,640 >> DAVID MALAN: Exact, un adversar poate scrie doar cod, ca și unii dintre voi 898 00:42:57,640 --> 00:43:00,526 a făcut pentru [? Hacker?] 2, prin care te repeta peste 899 00:43:00,526 --> 00:43:03,400 toate cuvintele din dicționar, sau toate combinațiile posibile de A 900 00:43:03,400 --> 00:43:06,610 prin Z și unul prin nine-- care sună ca o mulțime, și este. 901 00:43:06,610 --> 00:43:08,361 Dar pentru un computer, e destul de darn rapid. 902 00:43:08,361 --> 00:43:10,610 Și, de fapt, că a fost punct de [? Hacker 2,?] A fost 903 00:43:10,610 --> 00:43:12,540 să ia lucruri care literalmente arata ca acest lucru, 904 00:43:12,540 --> 00:43:14,900 și reverse engineering ceea ce era de fapt. 905 00:43:14,900 --> 00:43:17,270 >> Deci ne vom uita la modul în care putem stoca acest lucru mai eficient. 906 00:43:17,270 --> 00:43:20,210 Se pare că, din fericire în MySQL, acolo vor fi tipuri de date. 907 00:43:20,210 --> 00:43:22,800 Și una dintre părțile amuzante despre proiectare baze de date, să fiu sincer, 908 00:43:22,800 --> 00:43:25,810 este, de fapt de a decide pentru tine cum ar trebui să Reprezentati datele? 909 00:43:25,810 --> 00:43:29,630 Ar trebui să vă reprezinte un număr de telefon ca un int, ca un număr mare, sau un lung? 910 00:43:29,630 --> 00:43:31,630 Sau te face de fapt ca o secvență de caractere? 911 00:43:31,630 --> 00:43:33,780 Și nu poate fi foarte impactul non-triviale ale acestui. 912 00:43:33,780 --> 00:43:36,714 >> De fapt, unul dintre cele mai Primele, povestiri amuzante Germane 913 00:43:36,714 --> 00:43:39,880 este atunci când Mark Zuckerberg a fost construirea Facebook, a fost scrisă inițial în, 914 00:43:39,880 --> 00:43:42,300 și încă mai este în mare măsură scris în PHP. 915 00:43:42,300 --> 00:43:45,400 Și una dintre cele mai mari provocări au confruntat de timpuriu a fost de scalare. 916 00:43:45,400 --> 00:43:48,820 Când au păstrat adăugarea de școală după școală după școală, după știința mea, 917 00:43:48,820 --> 00:43:51,639 una din soluțiile originale a fost, în esență, să copiați și să lipiți 918 00:43:51,639 --> 00:43:53,430 unele dintre bazele de date și o parte din cod, 919 00:43:53,430 --> 00:43:55,346 astfel încât Harvard a fost care rulează pe cont propriu in sistem, 920 00:43:55,346 --> 00:43:56,995 și MIT a fost difuzate pe cont propriu in sistem. 921 00:43:56,995 --> 00:43:59,120 Și din această cauză, pentru a putea dintre voi s-ar putea aminti care, 922 00:43:59,120 --> 00:44:01,510 nu putea avea prieteni în alte rețele. 923 00:44:01,510 --> 00:44:05,050 >> Probabil că nu au prieteni la MIT sau Harvard acum 10 ani sau cam asa ceva, 924 00:44:05,050 --> 00:44:07,467 dar nu puteai acopera retele pentru o parte din acest motiv. 925 00:44:07,467 --> 00:44:10,550 Și una dintre cele mai mari provocări pentru Mark și pentru companii precum Facebook 926 00:44:10,550 --> 00:44:13,460 este, de fapt de manipulare sute și mii și milioane 927 00:44:13,460 --> 00:44:14,460 de cereri pe secundă. 928 00:44:14,460 --> 00:44:16,501 Deci lucrurile vom începe vorbesc despre această săptămână 929 00:44:16,501 --> 00:44:19,860 sunt într-adevăr de gând să fie germane la scris software bun, și popular 930 00:44:19,860 --> 00:44:23,040 instrumente de succes care se pot ocupa o mulțime de utilizatori. 931 00:44:23,040 --> 00:44:25,460 >> Deci, vom vorbi despre lucruri ca indexarea și căutarea, 932 00:44:25,460 --> 00:44:26,910 dar că este pentru ziua de azi. 933 00:44:26,910 --> 00:44:28,780 Vă vom vedea mai multe miercuri. 934 00:44:28,780 --> 00:44:31,780 935 00:44:31,780 --> 00:44:33,902 >> [MUSIC - "Seinfeld" TEMA] 936 00:44:33,902 --> 00:44:35,943 DAVID MALAN: aveți posibilitatea de a l, și scade de la ea. 937 00:44:35,943 --> 00:44:38,859 Și nu trebuie să stai cu o anumită cantitate predeterminată de memorie. 938 00:44:38,859 --> 00:44:40,580 Ei bine, ce se că merge să fie numit? 939 00:44:40,580 --> 00:44:42,369 >> SPEAKER 1: Ei bine, ce se întâmplă? 940 00:44:42,369 --> 00:44:43,535 SPEAKER 2: Ce vrei să spui? 941 00:44:43,535 --> 00:44:44,451 El dă o prelegere. 942 00:44:44,451 --> 00:44:47,650 DAVID MALAN: Și putem folosi un funcție numită malloc la memory-- 943 00:44:47,650 --> 00:44:50,050 >> SPEAKER 1: De ce nu sunt brațele în mișcare? 944 00:44:50,050 --> 00:44:52,450 >> SPEAKER 2: Ei bine that's-- știi, e normal. 945 00:44:52,450 --> 00:44:57,162 E la fel ca el are doar cârnați mari agățat acolo. 946 00:44:57,162 --> 00:44:59,040 >> SPEAKER 1: E normal? 947 00:44:59,040 --> 00:45:03,096 >> SPEAKER 2: Da, cred că doar presupunem că accidental 948 00:45:03,096 --> 00:45:06,840 înlocuit deodorant lui cu superglue. 949 00:45:06,840 --> 00:45:07,608