1 00:00:00,000 --> 00:00:02,916 2 00:00:02,916 --> 00:00:04,860 >> [MUSIC SPILLE] 3 00:00:04,860 --> 00:00:10,210 4 00:00:10,210 --> 00:00:13,350 >> DAVID MALAN: Dette er CS50, og Dette er begynnelsen av uken åtte. 5 00:00:13,350 --> 00:00:17,510 Og vi er så glade for å velkommen tilbake, stor overraskelse, CS50 egen Ramon 6 00:00:17,510 --> 00:00:22,160 Galvan, en stigende senior som har vært tilbringer de siste månedene 7 00:00:22,160 --> 00:00:26,190 siden juli i LA, i Hollywood, bokstavelig talt arbeider på en helt ny TV 8 00:00:26,190 --> 00:00:31,930 show kalt Colony, skaperen av hvilke er faktisk en Harvard alum selv. 9 00:00:31,930 --> 00:00:36,610 Og så vi er veldig glade for å se dette debut på USA-nettverket i januar. 10 00:00:36,610 --> 00:00:40,370 Så følg med for det, og for mer Ramon for ukene som kommer. 11 00:00:40,370 --> 00:00:42,550 >> Vet nå at enden er nær. 12 00:00:42,550 --> 00:00:47,400 Og hva dette betyr er at det er ikke så mye igjen av CS50, trist å si. 13 00:00:47,400 --> 00:00:49,400 Vi har bare tre problem sett left-- det er 14 00:00:49,400 --> 00:00:52,510 Problemet satt six-- som er i hendene nå, eller snart vil bli, 15 00:00:52,510 --> 00:00:56,080 grunn senere i week-- er ment å bygge bro våre verdener av kommandolinjen, der 16 00:00:56,080 --> 00:00:59,450 vi har tilbrakt mesteparten av vår tid ved hjelp C, og en verden av web-programmering. 17 00:00:59,450 --> 00:01:02,350 Vel, vil du se en masse ideer lånt fra kommandolinjen arbeid, 18 00:01:02,350 --> 00:01:04,560 men også mye nytt og interessante ideer 19 00:01:04,560 --> 00:01:07,929 som også kommer til å være germane for mobile applikasjoner og for teknologi, 20 00:01:07,929 --> 00:01:10,470 mer generelt, som du Gutta er alle kjent i dag 21 00:01:10,470 --> 00:01:12,090 på bærbare datamaskiner og telefoner og lignende. 22 00:01:12,090 --> 00:01:15,220 >> Så vil du implementere ikke en nettside, eller et nettsted 23 00:01:15,220 --> 00:01:17,620 per se, men en faktisk webserver. 24 00:01:17,620 --> 00:01:21,590 Du vil skrive resten av en webserver skrevet i C, hvis formål i livet 25 00:01:21,590 --> 00:01:25,410 er å motta HTTP-forespørsler, de virtuelle konvolutter vi fortsetter å snakke 26 00:01:25,410 --> 00:01:29,780 om, og faktisk svare enten med noen statisk content-- som en prikk HTML 27 00:01:29,780 --> 00:01:32,310 fil, eller en prikk JPEG eller noen annen rekke filer, 28 00:01:32,310 --> 00:01:37,070 eller til og med en PHP-fil hvor nett Serveren kommer til å tolke at PHP 29 00:01:37,070 --> 00:01:38,332 kode og spytte ut resultatene. 30 00:01:38,332 --> 00:01:40,540 Nå har vi gitt deg ganske mye rammeverk 31 00:01:40,540 --> 00:01:43,100 for it faktisk distribusjon kode for problem 32 00:01:43,100 --> 00:01:47,496 satt seks er over 1000 linjer lang, en Mange som er kommentarer, for å være fair-- 33 00:01:47,496 --> 00:01:49,370 men dette er egentlig ment å være en mulighet 34 00:01:49,370 --> 00:01:52,570 å få hendene skitne dykking inn i en relativt stor prosjekt 35 00:01:52,570 --> 00:01:55,570 at vi har veldig spesielt skåret ut biter av for deg, 36 00:01:55,570 --> 00:01:59,046 slik at virkelig når du avslutter CS50 og angir den virkelige verden av programmering 37 00:01:59,046 --> 00:02:00,920 og ønsker å prøve seg på en rekke prosjekter, 38 00:02:00,920 --> 00:02:03,253 vil du ha mye større comfort laste ned noen kilde 39 00:02:03,253 --> 00:02:05,020 kode, noen åpen kildekode projisere på nettet, 40 00:02:05,020 --> 00:02:08,174 og dykking i og gjøre endringene du ønsker. 41 00:02:08,174 --> 00:02:11,340 Problemet satt sju kommer til å være om lage din egen web-basert applikasjon 42 00:02:11,340 --> 00:02:14,140 som tar dynamisk input og gir dynamisk effekt i form 43 00:02:14,140 --> 00:02:16,920 av en etrade.com-lignende nettsted. 44 00:02:16,920 --> 00:02:20,800 Og problemet satt åtte vil fokusere på ennå et annet språk kjent som Javascript. 45 00:02:20,800 --> 00:02:24,170 >> I mellomtiden, den endelige Prosjektet er på horisonten. 46 00:02:24,170 --> 00:02:26,800 Den såkalte pre-forslag skyldes en uke fra i dag. 47 00:02:26,800 --> 00:02:29,930 Pre-proposal-- per spesifikasjonen, som er på CS50 er website-- 48 00:02:29,930 --> 00:02:33,260 er en ganske uformell mulighet for du sende en ganske konsis epost 49 00:02:33,260 --> 00:02:35,170 til undervisningen stipendiat bare for å apprise ham 50 00:02:35,170 --> 00:02:38,250 eller henne om hva du tenker, for å bruke ham eller henne som en samtalepartner. 51 00:02:38,250 --> 00:02:40,980 Og har en mental helse check-- om du tenker 52 00:02:40,980 --> 00:02:43,210 om biting av også mye eller kanskje for lite, 53 00:02:43,210 --> 00:02:46,480 eller kanskje du har ingen anelse overhodet og ønsker å delta i en samtale. 54 00:02:46,480 --> 00:02:48,480 >> Deretter er et forslag og statusrapport, 55 00:02:48,480 --> 00:02:51,860 den såkalte CS50 hackathon her i Cambridge for Harvard og Yale studenter 56 00:02:51,860 --> 00:02:52,362 alike. 57 00:02:52,362 --> 00:02:54,320 Den endelige prosjektet implementeringen er da grunn. 58 00:02:54,320 --> 00:02:59,290 Og så en CS50 rettferdig her, i Cambridge, samt en annen i New Haven. 59 00:02:59,290 --> 00:03:02,500 Så forslaget, ta en titt på nettsiden for disse opplysningene. 60 00:03:02,500 --> 00:03:06,530 >> Men mer spennende, også er en muligheten til å få hendene skitne, 61 00:03:06,530 --> 00:03:09,350 og deres sinn åpne for en hel haug av emner og verktøy 62 00:03:09,350 --> 00:03:12,920 og teknikker som er underordnet til kurset kjernepensum, 63 00:03:12,920 --> 00:03:14,810 men likevel relatert. 64 00:03:14,810 --> 00:03:18,400 Og også fantastiske stepping steiner til gjør virkelig kule endelige prosjekter som 65 00:03:18,400 --> 00:03:22,020 går langt utover materialet vi har dekket formelt problem setter eller i forelesning. 66 00:03:22,020 --> 00:03:24,446 Så gå til CS50 hjemmeside for hele liste av seminarer. 67 00:03:24,446 --> 00:03:26,070 Hvis du ikke registrerer ennå, er det helt greit. 68 00:03:26,070 --> 00:03:29,860 Gå videre og melde seg fremdeles, og vi vil følge opp med en live streaming link, 69 00:03:29,860 --> 00:03:31,844 dag og tid er på nettsiden. 70 00:03:31,844 --> 00:03:33,760 Og alt vil være registrert og lagt ut på nettet 71 00:03:33,760 --> 00:03:35,800 hvis du ikke kan gjøre bestemte dager og tider. 72 00:03:35,800 --> 00:03:39,380 >> Når det gjelder hva som ligger foran oss thereafter-- godt, selvfølgelig, det er CS50 hackathon. 73 00:03:39,380 --> 00:03:43,560 Dette bildet, husker, fra uke null tatt rundt 4 AM en kveld i år tidligere. 74 00:03:43,560 --> 00:03:46,900 Den CS50 rettferdig, som igjen vil foregå i begge byene. 75 00:03:46,900 --> 00:03:49,760 Og så, bare for å plante frø, selv om vi fortsatt 76 00:03:49,760 --> 00:03:54,080 har en måned pluss igjen av semesteret, hvis du ønsker å bli med CS50 egen undervisning 77 00:03:54,080 --> 00:03:56,770 ansatte, og du vil begynne tenker på å bli en CA, 78 00:03:56,770 --> 00:03:59,550 eller undervisning fyr, vet at Vi begynner å snakke mer om det 79 00:03:59,550 --> 00:04:00,630 senere dette semesteret. 80 00:04:00,630 --> 00:04:03,470 Men avbildet her er de fleste av årets lag. 81 00:04:03,470 --> 00:04:06,950 >> Og så, PHP-- og jeg var så trist i forrige uke at [? Allyse?] Kindly 82 00:04:06,950 --> 00:04:09,370 gikk til innsats for å få oss disse fantastiske rekvisitter 83 00:04:09,370 --> 00:04:11,720 at jeg ikke ender opp med å bruke, så det egentlig bare så slags dum 84 00:04:11,720 --> 00:04:15,160 at vi hadde en spade sitter her hele dag sist onsdag, og en liten skje. 85 00:04:15,160 --> 00:04:17,709 Men dette var min metaforiske måte å prøve å male 86 00:04:17,709 --> 00:04:21,600 bildet av hvorfor vi overgangen fra C til et språk som PHP. 87 00:04:21,600 --> 00:04:25,480 Og det samme kan sies om noen antall languages-- Java, Python, Ruby 88 00:04:25,480 --> 00:04:31,270 eller bunter av others-- men mens i C, for eksempel, å skrive et program i C 89 00:04:31,270 --> 00:04:34,050 kan typisk være like tar en skje som dette 90 00:04:34,050 --> 00:04:36,770 og å grave et hull i jord, i sand eller smuss. 91 00:04:36,770 --> 00:04:39,770 PHP kan du ta mye større biter ut av problemet, 92 00:04:39,770 --> 00:04:42,842 skriver langt mindre kode ved hjelp av et langt mindre verktøy, 93 00:04:42,842 --> 00:04:45,050 fordi det mye mer er så funksjonalitet sydde i. 94 00:04:45,050 --> 00:04:47,633 >> Nå, hvis vi var veldig dramatisk, vi ville ha noe å måke 95 00:04:47,633 --> 00:04:48,760 her, men det så være. 96 00:04:48,760 --> 00:04:51,370 I mellomtiden, den annen metafor vi kom opp med 97 00:04:51,370 --> 00:04:53,770 er, selvfølgelig, kunne du bruke noe sånt som en skiftenøkkel 98 00:04:53,770 --> 00:04:56,610 å hamre i noe sånt som en spiker. 99 00:04:56,610 --> 00:04:58,980 Men selvfølgelig, retten verktøy til bruk kommer 100 00:04:58,980 --> 00:05:01,360 å ikke være så mye språk kalt C-- 101 00:05:01,360 --> 00:05:03,590 og nå er jeg bare irritert [? Sanders,?] Sannsynligvis, 102 00:05:03,590 --> 00:05:07,890 vi vil fikse det later-- så riktig verktøy å bruke ofte 103 00:05:07,890 --> 00:05:09,640 ikke kommer til å være dette laveste nivået verktøyet. 104 00:05:09,640 --> 00:05:13,720 Og ja, er ikke C et språk som de fleste av dere noen gang kommer til å bruke, 105 00:05:13,720 --> 00:05:15,590 eller bør nødvendigvis bruke igjen. 106 00:05:15,590 --> 00:05:18,350 >> Og i virkeligheten en liten secret-- den eneste gangen 107 00:05:18,350 --> 00:05:23,160 Jeg bruker C selv er ganske mye mellom September og desember hvert fall 108 00:05:23,160 --> 00:05:23,870 semester. 109 00:05:23,870 --> 00:05:25,790 Og det er fordi vi bruke det som en mulighet 110 00:05:25,790 --> 00:05:27,852 for å lære det grunnleggende programmering, 111 00:05:27,852 --> 00:05:29,810 og med det datamaskin vitenskap fundamentale forhold, data 112 00:05:29,810 --> 00:05:32,435 strukturer, algoritmer og like-- men svært raskt vil du 113 00:05:32,435 --> 00:05:35,010 ser nå at syntaksen og ideene underliggende C 114 00:05:35,010 --> 00:05:37,530 er så fantastisk overførbare til mer moderne 115 00:05:37,530 --> 00:05:41,130 høyere nivå språk, som PHP og Python og Perl og Java 116 00:05:41,130 --> 00:05:46,750 og Objective-C-- faktisk, ikke så mye Objective-C-- men Swift, disse nyere 117 00:05:46,750 --> 00:05:50,010 språk som mange av dere vil deretter eksperimentere med deg siste prosjekt. 118 00:05:50,010 --> 00:05:55,070 >> Så uten videre, la oss faktisk bruke PHP til å løse noen problemer. 119 00:05:55,070 --> 00:06:00,230 Husker at tidlig, siste uke, vi brukte nettopp CS50 IDE, 120 00:06:00,230 --> 00:06:02,990 Vi skrev en Eagle lite program som bare sa: "Hello world". 121 00:06:02,990 --> 00:06:05,680 Og så jeg lagret det i en fil som heter hello.php. 122 00:06:05,680 --> 00:06:07,280 Og da jeg kjørte denne kommandoen. 123 00:06:07,280 --> 00:06:08,080 >> Og hvorfor? 124 00:06:08,080 --> 00:06:09,900 På engelsk, hva skjer her? 125 00:06:09,900 --> 00:06:12,760 Hva skulle jeg gjøre da Jeg kjørte denne kommandoen? 126 00:06:12,760 --> 00:06:13,405 >> Yeah? 127 00:06:13,405 --> 00:06:16,572 >> PUBLIKUM: Det finnes noen funksjon PHP som leser hva som in-- forstår det. 128 00:06:16,572 --> 00:06:19,696 DAVID MALAN: Bra, det er noen funksjon PHP-- og la meg være mer spesifikk, 129 00:06:19,696 --> 00:06:21,810 det er et program som heter PHP, a.k.a. 130 00:06:21,810 --> 00:06:25,872 Tolk, som forstår innholdet av hello.php, 131 00:06:25,872 --> 00:06:27,830 og tolker det topp til bunn, venstre til høyre, 132 00:06:27,830 --> 00:06:29,590 og gjør hva disse kommandoene si. 133 00:06:29,590 --> 00:06:33,320 Kommandoene i hello.php, selvfølgelig, er bare kilden code-- funksjoner 134 00:06:33,320 --> 00:06:35,750 og variabler og sløyfer og lignende, som vi selv 135 00:06:35,750 --> 00:06:37,460 har begynt å skrive i PHP. 136 00:06:37,460 --> 00:06:40,240 >> Men i motsetning til C, som er et kompilert språk, 137 00:06:40,240 --> 00:06:42,810 PHP du bare skrive det, og kjøre den. 138 00:06:42,810 --> 00:06:46,420 Du hopper som mellommann trinnet konvertere den til nuller og enere, 139 00:06:46,420 --> 00:06:47,790 og deretter kjøre den. 140 00:06:47,790 --> 00:06:50,510 Og så hva er en oppside på dette? 141 00:06:50,510 --> 00:06:52,690 Hvorfor er vi hopper over trinnet? 142 00:06:52,690 --> 00:06:55,238 Hvorfor gjøre mer moderne språk tendens til å hoppe over dette trinnet? 143 00:06:55,238 --> 00:06:58,880 144 00:06:58,880 --> 00:07:01,220 Hva var fordelen? 145 00:07:01,220 --> 00:07:02,080 >> Eller bare intuitivt? 146 00:07:02,080 --> 00:07:04,200 Selv om vi har ikke skrevet mye PHP før, 147 00:07:04,200 --> 00:07:07,210 hva som er gunstig om ikke kompilere koden din tror du? 148 00:07:07,210 --> 00:07:08,520 Nei? 149 00:07:08,520 --> 00:07:09,610 Ikke begå? 150 00:07:09,610 --> 00:07:11,350 Skrape hodet? 151 00:07:11,350 --> 00:07:12,614 Yeah. 152 00:07:12,614 --> 00:07:13,600 >> PUBLIKUM: Mer dynamisk. 153 00:07:13,600 --> 00:07:14,683 >> DAVID MALAN: Mer dynamisk? 154 00:07:14,683 --> 00:07:16,032 Hva mener du? 155 00:07:16,032 --> 00:07:17,000 >> PUBLIKUM: [uhørbart] 156 00:07:17,000 --> 00:07:20,349 157 00:07:20,349 --> 00:07:22,390 DAVID MALAN: OK, bra, så avhengig av innspill, 158 00:07:22,390 --> 00:07:23,470 du trenger ikke å kompilere den hver gang. 159 00:07:23,470 --> 00:07:24,990 Og det er virkelig som enkelt som at-- hva 160 00:07:24,990 --> 00:07:26,990 er poenget med å fortsette å kompilere koden din? 161 00:07:26,990 --> 00:07:29,480 Dette er bare et skritt som er making-- dette krever, 162 00:07:29,480 --> 00:07:31,900 For de siste uker, dobbelt så mange skritt 163 00:07:31,900 --> 00:07:33,820 som bare kjører programmet. 164 00:07:33,820 --> 00:07:36,940 Det har vært nyttig i å se at du se noen feilmeldinger og så videre, 165 00:07:36,940 --> 00:07:38,720 men det er fortsatt bare en irriterende trinn. 166 00:07:38,720 --> 00:07:41,810 >> Og så programmerere innså over tid, hvorfor gjør ikke vi 167 00:07:41,810 --> 00:07:45,327 begynne å skrive språk som ikke trenger det ganske mekanisk trinn, 168 00:07:45,327 --> 00:07:47,160 slik at du bare skrive koden din og kjøre den. 169 00:07:47,160 --> 00:07:48,920 Men hva var prisen som vi så vi betalte 170 00:07:48,920 --> 00:07:50,910 i forrige uke, med et spesielt eksempel? 171 00:07:50,910 --> 00:07:51,650 Ja? 172 00:07:51,650 --> 00:07:52,370 >> Speed. 173 00:07:52,370 --> 00:07:54,690 Så [? hva er?] tolker litt tregere, 174 00:07:54,690 --> 00:07:57,330 i at nuller og enere er fint og raskt for en datamaskin 175 00:07:57,330 --> 00:08:00,070 å forstå, fordi Intel CPU, eller hva det er, 176 00:08:00,070 --> 00:08:03,070 bare forstår hva som skjer videre med de mønstre av bits. 177 00:08:03,070 --> 00:08:05,370 Mens en tolk er et program som virkelig 178 00:08:05,370 --> 00:08:07,980 har å lese Ascii kilde kode som du har skrevet, 179 00:08:07,980 --> 00:08:12,700 og konvertere den, så å si, eller finne ut hvordan det konverterer til slutt 180 00:08:12,700 --> 00:08:13,525 til nuller og enere. 181 00:08:13,525 --> 00:08:15,650 Slik at det bare tar litt litt av en forestilling hit. 182 00:08:15,650 --> 00:08:16,858 Så det er litt av en trade-off. 183 00:08:16,858 --> 00:08:21,570 Nå hvis vi gjør dette over her, la meg gå videre og gjøre et eksempel som følger. 184 00:08:21,570 --> 00:08:26,610 Hvis jeg går inn her, ny fil, jeg kommer lagre dette igjen er hello.php. 185 00:08:26,610 --> 00:08:31,450 Og nå kommer jeg til å gå videre og si, "print hello world" - 186 00:08:31,450 --> 00:08:35,130 og husker at jeg kan bruke print, gjør jeg ikke må bruke print-F. Og nå her nede, 187 00:08:35,130 --> 00:08:42,039 hvis jeg gjør PHP av hello.php, huh-- jeg ikke synes å ha tolket det. 188 00:08:42,039 --> 00:08:43,412 Hva har jeg gjort galt? 189 00:08:43,412 --> 00:08:44,710 >> PUBLIKUM: De vinklede armbånd. 190 00:08:44,710 --> 00:08:47,015 >> DAVID MALAN: Ja, trenger du den vinkelen braketten opp toppen. 191 00:08:47,015 --> 00:08:49,390 Så det er litt irriterende, men du blir vant til det fort. 192 00:08:49,390 --> 00:08:53,500 Hvis jeg må skrive PHP kode, jeg generelt behov for å fortelle programmet, 193 00:08:53,500 --> 00:08:56,950 eller fortelle tolken, hey PHP, her kommer noen PHP-kode. 194 00:08:56,950 --> 00:09:00,440 Og så for godt mål, ville jeg lukke dette ikke med dette, men heller 195 00:09:00,440 --> 00:09:03,740 med bare spørsmålstegn vinkel brakett, slik at nå her nede, 196 00:09:03,740 --> 00:09:06,840 hvis jeg kjører dette igjen, nå Jeg får det ønskede resultat. 197 00:09:06,840 --> 00:09:09,820 >> Nå la oss gjøre en liten optimalisering, bare slik at du har sett det før. 198 00:09:09,820 --> 00:09:14,040 Dette er litt irriterende at jeg må kjøre PHP plass hello.php, 199 00:09:14,040 --> 00:09:16,060 fordi i det siste jeg bare kunne skrive dot slash 200 00:09:16,060 --> 00:09:17,560 programnavnet, som er slags hyggelig. 201 00:09:17,560 --> 00:09:19,420 Det er litt av en bedre brukeropplevelse. 202 00:09:19,420 --> 00:09:24,160 >> Så det viser seg kan du gjøre dette i PHP med following-- jeg 203 00:09:24,160 --> 00:09:28,780 kan bruke dette ganske kryptisk besvergelse på toppen her, 204 00:09:28,780 --> 00:09:31,740 som vanligvis kalles en shebang, idet dette er en skarp symbol, 205 00:09:31,740 --> 00:09:34,270 så å si, er dette et smell eller et utropstegn. 206 00:09:34,270 --> 00:09:38,490 Og dette nå er banen til et program på et typisk system som Linux 207 00:09:38,490 --> 00:09:41,500 kalles miljø, eller env. 208 00:09:41,500 --> 00:09:43,920 Og dette line-- lang historie short-- linje man bare 209 00:09:43,920 --> 00:09:48,710 sier, hei datamaskin, finn PHP tolk for meg i miljøet, 210 00:09:48,710 --> 00:09:50,610 finner det i minnet, så å si. 211 00:09:50,610 --> 00:09:54,130 >> Og hva er fint nå, er at hvis jeg går her nede, 212 00:09:54,130 --> 00:09:57,750 Jeg kan gjøre dot slash hei dot php, or-- hmm. 213 00:09:57,750 --> 00:09:59,000 Tillatelse avslått. 214 00:09:59,000 --> 00:10:02,350 Vel, vil du se enda mer av dette med problemet satt syv, hvis du 215 00:10:02,350 --> 00:10:04,060 ikke allerede har, med tillatelser. 216 00:10:04,060 --> 00:10:06,510 Det viser seg at jeg trenger å utføre denne kommandoen 217 00:10:06,510 --> 00:10:10,779 kalt [? chamod?] for endring mode-- et pluss x hello.php. 218 00:10:10,779 --> 00:10:13,820 Jeg trenger [uhørbart] dette en ekstra trinn som er å fortelle min datamaskin, 219 00:10:13,820 --> 00:10:16,400 gjøre hello.php kjørbar. 220 00:10:16,400 --> 00:10:21,310 Og nå se hva happens-- dot slash hello.php, bare kjører den. 221 00:10:21,310 --> 00:10:23,310 Jeg trenger ikke å oppgi tolken lenger. 222 00:10:23,310 --> 00:10:26,680 Og jeg kan gjøre det enda penere, likevel, hvis jeg navn på denne tingen. 223 00:10:26,680 --> 00:10:30,570 Hvis jeg flytter hello.php å bare Hello-- så varsel øverst til venstre, 224 00:10:30,570 --> 00:10:32,860 programmets navn er faktisk nå bare Hei. 225 00:10:32,860 --> 00:10:37,300 Nå kan jeg gjøre det ser ut som et C-program, selv om det er skrevet i PHP-- 226 00:10:37,300 --> 00:10:39,210 eller ærlig så mange av andre språk. 227 00:10:39,210 --> 00:10:41,480 >> Så marginal forbedring, ingen funksjonell forskjell. 228 00:10:41,480 --> 00:10:44,460 Men det er bare en liten kuriositet nå, så kan du skrive programmer 229 00:10:44,460 --> 00:10:48,989 på alle språk, og brukeren ikke må vite eller bryr seg hva de er. 230 00:10:48,989 --> 00:10:51,030 Vel, la oss se på en mer overbevisende eksempel nå 231 00:10:51,030 --> 00:10:52,850 at jeg pisket opp på forhånd. 232 00:10:52,850 --> 00:10:54,955 Og dette kalles quote.php. 233 00:10:54,955 --> 00:10:56,740 Og det er tilgjengelig på nettet. 234 00:10:56,740 --> 00:11:00,299 Og legg merke til at det er ganske short-- men det er et kommandolinje program som er 235 00:11:00,299 --> 00:11:02,840 kommer til å se opp aksjekurser for meg, er noe som faktisk skjer 236 00:11:02,840 --> 00:11:04,230 å være relevante for oppgavesettet sju. 237 00:11:04,230 --> 00:11:05,396 >> Så la oss se hva jeg gjør. 238 00:11:05,396 --> 00:11:08,640 På toppen har jeg fått åpen brakett spørsmålstegn PHP. 239 00:11:08,640 --> 00:11:13,372 Så jeg har fått denne linjen, der jeg er krever en fil som heter functions.php-- 240 00:11:13,372 --> 00:11:15,080 vi kommer til å se mer om dette i en bit, 241 00:11:15,080 --> 00:11:17,340 men dette er som Cs versjon av skarpe omfatter, 242 00:11:17,340 --> 00:11:19,090 der du ønsker å gå inkludere en annen fil. 243 00:11:19,090 --> 00:11:23,720 PHP kaller det krever, selv om det har også en inkludere funksjon. 244 00:11:23,720 --> 00:11:26,861 Og det viser seg at function.php er bare noe jeg skrev før klassen. 245 00:11:26,861 --> 00:11:29,860 Jeg satte den i samme katalog, fordi Jeg ønsket å faktor ut noen kode 246 00:11:29,860 --> 00:11:31,800 at vi kanskje ønsker å bruke andre steder. 247 00:11:31,800 --> 00:11:34,560 >> I mellomtiden kan du sannsynligvis antyde hva som skjer her. 248 00:11:34,560 --> 00:11:39,200 Dette er litt forskjellig fra C-- men hva mener jeg med sikre riktig bruk? 249 00:11:39,200 --> 00:11:41,180 Oversett dette mer teknisk. 250 00:11:41,180 --> 00:11:45,950 Under hvilke omstendigheter er jeg avslutte programmet, eller spennende? 251 00:11:45,950 --> 00:11:47,074 Yeah? 252 00:11:47,074 --> 00:11:47,990 >> PUBLIKUM: Når du ikke har to kommandolinjeargumenter. 253 00:11:47,990 --> 00:11:49,480 >> DAVID MALAN: Når jeg ikke har til kommandolinje argumenter. 254 00:11:49,480 --> 00:11:52,396 Og husk at en av dem argumenter er programmets navn selv. 255 00:11:52,396 --> 00:11:55,340 Og den andre kommer til å være et annet ord jeg skriver etter ledeteksten. 256 00:11:55,340 --> 00:11:57,460 Så akkurat som C, dette er min måte å sjekke, 257 00:11:57,460 --> 00:12:00,022 gjorde brukeren samarbeide og kjøre programmet som jeg hadde til hensikt? 258 00:12:00,022 --> 00:12:01,730 Nå, det er noe litt annerledes 259 00:12:01,730 --> 00:12:04,020 med C-- først av alt vi har denne dollartegn, 260 00:12:04,020 --> 00:12:07,710 og hva gjør en dollar logg betegne i PHP? 261 00:12:07,710 --> 00:12:08,440 Bare en variabel. 262 00:12:08,440 --> 00:12:11,731 Det er alle-- bare en variabel etterfulgt av hva du vil faktisk kalle det. 263 00:12:11,731 --> 00:12:14,000 Legg merke til det er noe mangler fra min PHP program, 264 00:12:14,000 --> 00:12:18,210 akkurat som det ble sist mangler uke, i motsetning til C, som er det? 265 00:12:18,210 --> 00:12:21,620 >> A typer, men også noe annet. 266 00:12:21,620 --> 00:12:26,409 Det er ikke noe function-- hovedfunksjon. 267 00:12:26,409 --> 00:12:27,450 Det er ingen hovedfunksjon. 268 00:12:27,450 --> 00:12:29,680 Du bare begynne å skrive koden din uten å 269 00:12:29,680 --> 00:12:32,790 å bekymre seg for en ganske vilkårlig konvensjonen navngi noen standard 270 00:12:32,790 --> 00:12:33,880 Funksjonen main. 271 00:12:33,880 --> 00:12:36,720 Så arg C er bare veldig en global variabel 272 00:12:36,720 --> 00:12:39,049 at tolken gjør tilgjengelig for meg. 273 00:12:39,049 --> 00:12:40,090 Nå er dette interessant. 274 00:12:40,090 --> 00:12:41,140 Så se opp ting. 275 00:12:41,140 --> 00:12:43,370 Dollartegn lager er på igjen, det er min variabel. 276 00:12:43,370 --> 00:12:45,120 På høyre side, det er tydeligvis 277 00:12:45,120 --> 00:12:50,270 en funksjon i PHP kalles oppslag som Jeg har bestått min siste kommandolinje 278 00:12:50,270 --> 00:12:51,902 argument to-- hva ordet er. 279 00:12:51,902 --> 00:12:53,610 Og vi får se hvordan dette arbeider i et øyeblikk. 280 00:12:53,610 --> 00:12:55,380 >> Og så til slutt jeg rapporterer prisen. 281 00:12:55,380 --> 00:12:58,650 Jeg skriver ut en andel av slik og slik. 282 00:12:58,650 --> 00:13:02,082 Og husk, dette er Måten PHP-- en måte i PHP-- 283 00:13:02,082 --> 00:13:04,290 der du ikke trenger å gjøre dollartegnet S lenger. 284 00:13:04,290 --> 00:13:06,782 Du kan bare bruke klammeparentes og plugg i noen variabel. 285 00:13:06,782 --> 00:13:09,240 Du trenger ikke å bekymre deg for bruker printf på samme måte. 286 00:13:09,240 --> 00:13:13,530 >> Og som en side, når du setter en variabel innsiden av doble anførselstegn som dette, 287 00:13:13,530 --> 00:13:17,370 du bruker en fancy teknikk kalt variabel interpolering. 288 00:13:17,370 --> 00:13:20,380 Det betyr bare plugge den variable i her. 289 00:13:20,380 --> 00:13:23,760 Og som en digresjon, noen av dere som kommer fra andre programmeringsbakgrunn, 290 00:13:23,760 --> 00:13:26,960 du kan ikke bruke apostrof rundt strenger å gjøre dette. 291 00:13:26,960 --> 00:13:30,290 Du må bruke anførselstegn for variabel interpolasjon til å fungere. 292 00:13:30,290 --> 00:13:32,740 Ellers vil du bokstavelig talt se disse klammeparentes. 293 00:13:32,740 --> 00:13:34,500 >> Så til slutt, la oss gå videre og kjøre dette. 294 00:13:34,500 --> 00:13:36,690 La meg gjøre min terminal litt større. 295 00:13:36,690 --> 00:13:41,940 La meg gå videre og kjøre innsiden av mitt sitat katalogen. 296 00:13:41,940 --> 00:13:46,950 [? CDsource?] [? AM?] [? quote?] PHP sitat dot PHP, 297 00:13:46,950 --> 00:13:50,290 og jeg kommer til å søke etter noe som GOOG, som er dens ticker symbol, 298 00:13:50,290 --> 00:13:55,510 og en andel av sitt nye navn, Alphabet Inc, koster $ 717, som i dag. 299 00:13:55,510 --> 00:13:58,680 Greit, hvis vi ønsker å kjøre dette igjen, anyone 300 00:13:58,680 --> 00:14:02,600 har en annen lager ticker de ønsker å slå opp? 301 00:14:02,600 --> 00:14:06,770 >> Microsoft tror jeg er denne, MSFT-- $ 53. 302 00:14:06,770 --> 00:14:09,720 Jeg tror Yahoo er kanskje det. 303 00:14:09,720 --> 00:14:12,130 Og Facebook er det. 304 00:14:12,130 --> 00:14:13,740 >> Så hva er dette programmet gjør? 305 00:14:13,740 --> 00:14:16,306 Magien synes å være forankret ved at oppslag funksjon. 306 00:14:16,306 --> 00:14:17,430 Så la oss ta en rask titt. 307 00:14:17,430 --> 00:14:21,815 >> Det viser seg at ikke kommer med PHP, er det i functions.php. 308 00:14:21,815 --> 00:14:23,690 Og vi vil ikke gå gjennom dette i stor detalj, 309 00:14:23,690 --> 00:14:28,040 men merker det operative ordet her er som på linje seks av functions.php-- 310 00:14:28,040 --> 00:14:29,440 Jeg bokstavelig talt si funksjon. 311 00:14:29,440 --> 00:14:31,050 Jeg angir navnet på min funksjon. 312 00:14:31,050 --> 00:14:34,330 Jeg deretter angir noen argumenter eller parametere, 313 00:14:34,330 --> 00:14:36,480 Jeg ønsker at funksjonen til take-- ingen typer. 314 00:14:36,480 --> 00:14:37,580 Og da jeg gjennomføre det. 315 00:14:37,580 --> 00:14:39,240 >> Og jeg skal vinke min hånd ved gjennomføringen, 316 00:14:39,240 --> 00:14:42,115 siden det er ganske avansert rett nå, men vi får se det igjen faktisk 317 00:14:42,115 --> 00:14:44,700 i en uke i oppgavesettet syv. 318 00:14:44,700 --> 00:14:47,490 Men jeg kan rydde opp dette, også. 319 00:14:47,490 --> 00:14:49,590 Jeg har også tatt med i dagens kode en versjon 320 00:14:49,590 --> 00:14:52,340 sitat, som ikke har noen prikk PHP-fil. 321 00:14:52,340 --> 00:14:57,270 Fordi det er antagelig på toppen av programmet kalles bare sitere? 322 00:14:57,270 --> 00:15:00,140 Det såkalte shebang-- den ganske kryptisk besvergelse 323 00:15:00,140 --> 00:15:04,590 som sier finne PHP og deretter kjøre den på min kode her. 324 00:15:04,590 --> 00:15:07,360 >> All right, så som bringer oss til der vi slapp 325 00:15:07,360 --> 00:15:09,560 siste tid-- riktignok med noen mer avanserte eksempler. 326 00:15:09,560 --> 00:15:13,980 Eventuelle spørsmål så langt om PHP eller hva vi gjør? 327 00:15:13,980 --> 00:15:15,570 No-- all right. 328 00:15:15,570 --> 00:15:16,180 Yeah? 329 00:15:16,180 --> 00:15:19,610 >> PUBLIKUM: Inside the HTML-filer, gjør you-- 330 00:15:19,610 --> 00:15:22,226 [? gjør du ?] [? bare kalle det?] en [uhørbart] PHP fil? 331 00:15:22,226 --> 00:15:23,350 DAVID MALAN: Godt spørsmål. 332 00:15:23,350 --> 00:15:26,070 I en web sammenheng, som vi er bokstavelig talt i ferd med å gå over til, 333 00:15:26,070 --> 00:15:28,028 du ikke bruker den såkalte shebang på toppen, 334 00:15:28,028 --> 00:15:31,980 fordi nettet server-- ofte en Programmet heter Apache eller Microsoft 335 00:15:31,980 --> 00:15:37,470 IIS, Internet Information Server, eller en rekke andre web server software, 336 00:15:37,470 --> 00:15:40,636 vet at når den ser en prikk PHP-fil, som det 337 00:15:40,636 --> 00:15:42,010 bør kjøre tolken på den. 338 00:15:42,010 --> 00:15:43,468 Det ser ikke ut til at første linje. 339 00:15:43,468 --> 00:15:45,580 Så denne første linjen trick er bare når du er 340 00:15:45,580 --> 00:15:48,330 skriver kommandolinje programs-- som vi ikke vil gjøre super ofte, 341 00:15:48,330 --> 00:15:52,510 men det er vår måte å bygge bro våre C eksempler til nå vår PHP. 342 00:15:52,510 --> 00:16:00,680 >> Så la oss faktisk bro denne verden fra kommandolinjen verden til nettet 343 00:16:00,680 --> 00:16:02,230 ved å gjøre følgende. 344 00:16:02,230 --> 00:16:05,090 La meg gå videre og trekke over her for bare et øyeblikk. 345 00:16:05,090 --> 00:16:09,940 Så hvis vi har en web server, eller snarere hvis vi har min laptop over her, 346 00:16:09,940 --> 00:16:11,280 som jeg skal tegne som dette. 347 00:16:11,280 --> 00:16:14,250 Og her har vi den Internett i en eller annen form. 348 00:16:14,250 --> 00:16:18,210 Og så over her, har vi en server i en building-- 349 00:16:18,210 --> 00:16:20,760 Dette er hvordan internett works-- og inn her 350 00:16:20,760 --> 00:16:23,120 er en server med noen lys kanskje. 351 00:16:23,120 --> 00:16:27,530 Hva som faktisk skjer mellom disse to tilkoblinger? 352 00:16:27,530 --> 00:16:29,240 >> Så i denne bygningen er en webserver. 353 00:16:29,240 --> 00:16:31,420 Det er bare en datamaskin som kjører noen drifts 354 00:16:31,420 --> 00:16:34,561 system-- kanskje fri programvare kalt Apache, som CS50 IDE er i gang. 355 00:16:34,561 --> 00:16:36,310 Så kan du faktisk tenk på denne bygningen 356 00:16:36,310 --> 00:16:38,579 som bygningen som CSt0 IDE er lagret. 357 00:16:38,579 --> 00:16:40,870 Det er der dere alle har kontoer, hvor dere alle 358 00:16:40,870 --> 00:16:43,130 har din egen webserver kjører, alle dere 359 00:16:43,130 --> 00:16:45,730 ha din egen unike webadresser, som vi begynte å diskutere, 360 00:16:45,730 --> 00:16:47,280 og du vil se mer i P. satt seks. 361 00:16:47,280 --> 00:16:49,450 >> Her er min laptop sted annet på internett. 362 00:16:49,450 --> 00:16:54,550 Og så når jeg besøker en URL som tilhører for meg, er at Internett-trafikk som går 363 00:16:54,550 --> 00:16:58,360 over til serveren, serverens mottar en HTTP request-- 364 00:16:58,360 --> 00:17:02,900 som en får index.html og det er svarer på denne websiden. 365 00:17:02,900 --> 00:17:04,280 Så det er den generelle paradigmet. 366 00:17:04,280 --> 00:17:07,089 Mens alt opp til nå i dag, alt 367 00:17:07,089 --> 00:17:09,660 skjedde bare i rammen av denne bygningen. 368 00:17:09,660 --> 00:17:12,910 Jeg brukte min laptop, men Jeg ble koblet til CS50 IDE, 369 00:17:12,910 --> 00:17:17,369 så alle de programmene jeg kjørte var inne på denne serveren, selv. 370 00:17:17,369 --> 00:17:22,660 >> Men nå, la oss starte gjenbruk PHP å skrive noen faktiske programmer som 371 00:17:22,660 --> 00:17:24,230 blir servert av en webserver. 372 00:17:24,230 --> 00:17:30,320 Og for å gjøre dette, kommer jeg til å gå inn en hel haug med eksempler 373 00:17:30,320 --> 00:17:33,710 at introdusere denne ideen her. 374 00:17:33,710 --> 00:17:38,500 Så dette er en slags fancy måte beskriver et programmeringsparadigme. 375 00:17:38,500 --> 00:17:41,540 >> Og faktisk, som du avslutter CS50 eller jobbe på endelig prosjekter, 376 00:17:41,540 --> 00:17:43,520 eller ta noen følger på klassen, vil du begynne 377 00:17:43,520 --> 00:17:45,740 å se at world-- spesielt etter å ha vokst opp 378 00:17:45,740 --> 00:17:48,300 med språk som C som er super lav level-- 379 00:17:48,300 --> 00:17:51,290 innse at det er bedre måter å skrive programvare. 380 00:17:51,290 --> 00:17:53,290 Det er visse mønstre du kan følge, 381 00:17:53,290 --> 00:17:57,640 bestemte måter å organisere filene dine og måter å navngi dine funksjoner, 382 00:17:57,640 --> 00:18:00,300 slik at lang historie kort, verden har kommet opp 383 00:18:00,300 --> 00:18:04,340 med en hel haug med akronymer og navn på veier programmering. 384 00:18:04,340 --> 00:18:06,260 Dette er bare teknikker du kan bruke. 385 00:18:06,260 --> 00:18:09,660 >> Og en av dem heter MVC, for Model View Controller. 386 00:18:09,660 --> 00:18:12,270 Og dette er bare, for nå, en altfor komplisert 387 00:18:12,270 --> 00:18:18,960 måte å si hvordan du bør legge ut et PHP-basert nettsted, i vårt tilfelle. 388 00:18:18,960 --> 00:18:22,140 Hvordan organiserer du filene dine, hvordan organisere du din logikk, 389 00:18:22,140 --> 00:18:26,220 på en måte som gjør det lettere å skrive mer kompliserte nettsteder? 390 00:18:26,220 --> 00:18:28,550 Og ja, vi raskt komme dit med p-set sju. 391 00:18:28,550 --> 00:18:32,020 >> Så i en verden av MVC, du kommer å se at koden vår kan generelt 392 00:18:32,020 --> 00:18:38,290 karakteriseres som enten modellkode, eller kontroller kode, eller vise kode. 393 00:18:38,290 --> 00:18:40,200 Og jeg kommer til å overforenkle det som follows-- 394 00:18:40,200 --> 00:18:42,074 kontrolleren er hjernen til programmet, 395 00:18:42,074 --> 00:18:44,100 Det er der alle interessant logikk skjer. 396 00:18:44,100 --> 00:18:46,110 Så alt vi har vært skriver hittil i klassen, 397 00:18:46,110 --> 00:18:48,210 er typen som controller code-- det kontrollerende 398 00:18:48,210 --> 00:18:50,585 programmet, loopene, din betingelser, din fungerer 399 00:18:50,585 --> 00:18:52,100 og variabler og alt det der. 400 00:18:52,100 --> 00:18:56,160 >> Visninger, nå, kommer til å være litt mer opplagt i verden av nettet. 401 00:18:56,160 --> 00:18:59,360 En visning er estetikk på ditt nettsted. 402 00:18:59,360 --> 00:19:04,080 Det er hva brukeren sees-- bildene, HTML-tabeller, HTML-koder, og alle 403 00:19:04,080 --> 00:19:08,220 av at alle de fluffy estetiske ting som ikke er så vanskelig å skrive, 404 00:19:08,220 --> 00:19:11,380 men er akkurat hva du genererer, er den såkalte visning, estetikk. 405 00:19:11,380 --> 00:19:13,880 Og modellen, til slutt, kommer å være database stuff-- som 406 00:19:13,880 --> 00:19:16,510 vi vil begynne å dykke inn i alt jo mer denne onsdagen. 407 00:19:16,510 --> 00:19:19,740 Så kontrolleren er logikken, Utsikten er det estetiske ting, 408 00:19:19,740 --> 00:19:23,500 og modellen kommer til å være der vi lagrer våre faktiske data. 409 00:19:23,500 --> 00:19:26,410 >> Så la oss se på dette mer konkret med følgende eksempel. 410 00:19:26,410 --> 00:19:34,700 Jeg kommer til å gå inn i katalogen min her dagens kilde code-- som alle 411 00:19:34,700 --> 00:19:35,770 er tilgjengelig på nettet. 412 00:19:35,770 --> 00:19:37,800 Og jeg kommer til å gå inn i versjon null. 413 00:19:37,800 --> 00:19:41,500 Og her er-- la oss kalle det det versjon null av CS50 hjemmeside. 414 00:19:41,500 --> 00:19:43,010 Det er ikke mye her i det hele tatt. 415 00:19:43,010 --> 00:19:46,810 Det er en veldig enkel web-side som er sannsynligvis ved hjelp av hva HTML tags-- bare 416 00:19:46,810 --> 00:19:48,970 gjette fra tidligere eksempler? 417 00:19:48,970 --> 00:19:49,890 >> Hva er det? 418 00:19:49,890 --> 00:19:53,920 H1-- sannsynligvis for at stor fet Tittelen, som logoen opp toppen, CS50. 419 00:19:53,920 --> 00:19:55,080 Og hva annet er på spill? 420 00:19:55,080 --> 00:19:55,799 Yeah? 421 00:19:55,799 --> 00:19:56,840 PUBLIKUM: Usortert liste. 422 00:19:56,840 --> 00:19:59,990 DAVID MALAN: Usortert list-- så UL tag og kanskje et par LI koder. 423 00:19:59,990 --> 00:20:01,840 Og hvis du ikke husker disse, det ærlig spiller ingen rolle. 424 00:20:01,840 --> 00:20:04,170 Dette er fluffy liksom implementering detaljer om HTML 425 00:20:04,170 --> 00:20:06,378 at du raskt slå opp og du er tilbake på din vei. 426 00:20:06,378 --> 00:20:10,040 Vi vil fokusere mer på programmering ideer som er de saftigere stykker. 427 00:20:10,040 --> 00:20:12,890 >> Så la oss bare ta en rask se på HTML-- og faktisk 428 00:20:12,890 --> 00:20:16,880 hvis jeg åpner opp kilden visning her, jepp, Det er akkurat det som skjer her. 429 00:20:16,880 --> 00:20:18,440 Det er en UL tag. 430 00:20:18,440 --> 00:20:20,630 Nestet innsiden av det er å LI koder. 431 00:20:20,630 --> 00:20:24,470 Og da jeg lånte URL av selve pensum her. 432 00:20:24,470 --> 00:20:27,570 >> Og deretter i lectures.php er tilsynelatende 433 00:20:27,570 --> 00:20:31,640 en annen dynamisk generert side som kommer til å ha, la oss see-- ah, 434 00:20:31,640 --> 00:20:33,170 de to første ukene av forelesning. 435 00:20:33,170 --> 00:20:36,600 Så uke null og den første uken, la oss ser på dette-- hvis jeg se siden kilden, 436 00:20:36,600 --> 00:20:38,120 også super enkelt. 437 00:20:38,120 --> 00:20:42,430 Dette fører til to sider kalt week0.php, og week1.php. 438 00:20:42,430 --> 00:20:44,040 Så vurdere nå hva som skjer. 439 00:20:44,040 --> 00:20:50,630 >> Når jeg klikker på week0.php, min laptop gjør en forespørsel om week0.php. 440 00:20:50,630 --> 00:20:53,700 441 00:20:53,700 --> 00:20:58,110 Webserveren, a.k.a., CS50 IDE, mottar den virtuelle konvolutten. 442 00:20:58,110 --> 00:21:01,040 Det ser en melding som får week0.php. 443 00:21:01,040 --> 00:21:05,060 Det er da tolke filen, topp til nederst, venstre til right-- filen 444 00:21:05,060 --> 00:21:07,720 kalt week0.php-- og spytter ut resultatene. 445 00:21:07,720 --> 00:21:10,510 Så innsiden av denne filen, week0.php, må være 446 00:21:10,510 --> 00:21:15,410 styrelogikk som genererer denne HTML, og vi vil snart se at. 447 00:21:15,410 --> 00:21:19,340 >> Men for nå, la meg klikke på uken null, og nå har vi onsdag og fredag, 448 00:21:19,340 --> 00:21:25,260 og nå har vi lysbildene langsomt fra uke null. 449 00:21:25,260 --> 00:21:27,400 Og du kanskje husker dette fra vei tilbake når. 450 00:21:27,400 --> 00:21:29,340 Så det er all denne nettsiden gjør. 451 00:21:29,340 --> 00:21:31,120 >> Så la oss vurdere hvordan det er å gjøre dette. 452 00:21:31,120 --> 00:21:34,290 Jeg kommer til å gå tilbake til kildekoden her, i CS50 IDE, 453 00:21:34,290 --> 00:21:36,660 og jeg kommer til å åpne opp index.php. 454 00:21:36,660 --> 00:21:38,910 På toppen av denne filen er en haug med kommentarer. 455 00:21:38,910 --> 00:21:43,000 Og så i midten av denne filen, det viser seg, er ingen PHP-kode hodet. 456 00:21:43,000 --> 00:21:47,380 Fordi hvis du ikke har noen av de åpen brakett spørsmålstegn PHP koder, 457 00:21:47,380 --> 00:21:49,180 du er fri til å bare sette HTML. 458 00:21:49,180 --> 00:21:51,480 >> Fordi hvordan PHP tolk er ment å gjøre, 459 00:21:51,480 --> 00:21:53,938 er når den leser dette file-- topp til bunn, venstre til right-- 460 00:21:53,938 --> 00:21:59,100 det bare tolker koden den ser mellom disse vinkelparenteser spørsmålstegn. 461 00:21:59,100 --> 00:22:02,380 Og alt annet som det ikke gjenkjenner som PHP, det bare spytter ut. 462 00:22:02,380 --> 00:22:05,080 Og HTML Er blant de ting det vil bare spytte ut. 463 00:22:05,080 --> 00:22:09,090 >> Så denne filen kan ha blitt kalt index.html, 464 00:22:09,090 --> 00:22:11,690 men jeg navngi alt dot PHP som et springbrett. 465 00:22:11,690 --> 00:22:15,960 Lectures.php-- tilsvar uimponerende, det er bare litt HTML. 466 00:22:15,960 --> 00:22:19,840 Week0.php, på samme måte bare noen HTML. 467 00:22:19,840 --> 00:22:22,300 >> Men la oss nå sette på velkjente ingeniør hat, 468 00:22:22,300 --> 00:22:24,400 og vurdere hvordan vi kan forbedre dette. 469 00:22:24,400 --> 00:22:28,541 Det er ikke vanskelig å gjøre dette, men jeg slags av delegert inn kopier og lim inn. 470 00:22:28,541 --> 00:22:31,540 Og faktisk, hvis jeg gjør uke to, du vet hva jeg sannsynligvis kommer til å gjøre? 471 00:22:31,540 --> 00:22:34,940 Jeg kommer til å gå til week1.php, jeg er kommer til å markere alt. 472 00:22:34,940 --> 00:22:39,110 Jeg kommer til å kopiere det, lim det inn i en ny fil som heter week2.php, 473 00:22:39,110 --> 00:22:42,440 finpusse noen webadresser, og være på vei. 474 00:22:42,440 --> 00:22:45,240 >> Så basert på hva vi har sett i C allerede, 475 00:22:45,240 --> 00:22:46,860 Dette føles ikke riktig, forhåpentligvis. 476 00:22:46,860 --> 00:22:49,610 Kopiere, lime sjelden den riktige løsningen. 477 00:22:49,610 --> 00:22:51,429 Så hva kan vi begynne å gjøre for å forbedre dette? 478 00:22:51,429 --> 00:22:53,345 Hvor ligger mulighetene for bedre design? 479 00:22:53,345 --> 00:22:56,890 480 00:22:56,890 --> 00:22:58,760 >> Innen jeg kommer til uke åtte, kommer det til 481 00:22:58,760 --> 00:23:00,910 å være veldig irriterende hvis jeg ønsker å endre 482 00:23:00,910 --> 00:23:03,930 skriften på hver og en av sidene mine, eller om jeg vil ha 483 00:23:03,930 --> 00:23:06,522 for å endre strukturen av oppsettet. 484 00:23:06,522 --> 00:23:08,396 Så hvor er muligheten for bedre design? 485 00:23:08,396 --> 00:23:11,990 486 00:23:11,990 --> 00:23:15,160 Vel, la oss vurdere hva som er deles på tvers av alle disse filene. 487 00:23:15,160 --> 00:23:21,696 >> Her er uke en, her er uke null, her lectures.php, 488 00:23:21,696 --> 00:23:25,790 her er index.php-- hva som er den samme og hva er annerledes, grovt sett, 489 00:23:25,790 --> 00:23:26,760 i hver av disse filene? 490 00:23:26,760 --> 00:23:30,560 491 00:23:30,560 --> 00:23:32,060 Yeah? 492 00:23:32,060 --> 00:23:34,560 >> PUBLIKUM: [uhørbart] 493 00:23:34,560 --> 00:23:41,244 494 00:23:41,244 --> 00:23:42,160 DAVID MALAN: OK, bra. 495 00:23:42,160 --> 00:23:46,115 Så det er et mønster, sikkert, hvorved hver gang jeg velger forelesning jeg, 496 00:23:46,115 --> 00:23:48,250 Jeg skal generere en svært likt utseende siden. 497 00:23:48,250 --> 00:23:50,375 Og så kanskje jeg kan utnytte det faktum at egentlig, 498 00:23:50,375 --> 00:23:53,060 vi bevisst numerisk indeksert vår lectures-- 499 00:23:53,060 --> 00:23:55,290 hvis jeg kan sette enda mer ord i svaret ditt. 500 00:23:55,290 --> 00:23:59,984 Og hva er det eneste, virkelig, som er i endring mellom uke one-- 501 00:23:59,984 --> 00:24:02,400 og la meg bla nedover, så det er omtrent i samme sted-- 502 00:24:02,400 --> 00:24:05,480 så her er uke null, omtrent på toppen. 503 00:24:05,480 --> 00:24:12,370 Her er uke en, uke null, uke én, uke null. 504 00:24:12,370 --> 00:24:14,370 OK, bokstavelig talt hvis du vet ingen program overhodet, 505 00:24:14,370 --> 00:24:16,286 dette er nå akkurat som en mønstergjenkjenning spillet. 506 00:24:16,286 --> 00:24:17,200 Så hva er annerledes? 507 00:24:17,200 --> 00:24:18,765 Yeah? 508 00:24:18,765 --> 00:24:19,777 >> PUBLIKUM: [uhørbart] 509 00:24:19,777 --> 00:24:22,360 DAVID MALAN: Bra, så tittelen er i endring, aldri så litt. 510 00:24:22,360 --> 00:24:24,010 Zero kommer naturligvis til en. 511 00:24:24,010 --> 00:24:25,570 Samme skjer i H1 tag. 512 00:24:25,570 --> 00:24:28,790 Og vi ikke helt ser det så lett, fordi nettadressene er litt lang. 513 00:24:28,790 --> 00:24:30,670 Men disse webadressene endrer litt. 514 00:24:30,670 --> 00:24:34,490 >> Men hva er det ikke endring er, tør jeg si, det meste av innholdet i page-- 515 00:24:34,490 --> 00:24:38,530 HTML-koden er den samme, er hodet det samme, tittelen er nesten det samme, 516 00:24:38,530 --> 00:24:40,659 legemet er den samme, og nesten alt annet 517 00:24:40,659 --> 00:24:42,450 er den samme bortsett de små tweaks. 518 00:24:42,450 --> 00:24:45,310 Så hvordan kan vi gå om facto noe av dette ut? 519 00:24:45,310 --> 00:24:48,740 >> Vel la meg foreslå nøyaktig som i neste versjon. 520 00:24:48,740 --> 00:24:53,890 Så her i versjon en, har jeg den eksakte samme filene, pluss et par andre. 521 00:24:53,890 --> 00:24:59,730 Her er index.php-- og selv om du aldri har sett PHP før, 522 00:24:59,730 --> 00:25:05,511 hva er det jeg sannsynligvis gjør for å løse dette problem-- basert på det du ser her? 523 00:25:05,511 --> 00:25:11,300 524 00:25:11,300 --> 00:25:12,760 Ja, det er en liten forpliktelse? 525 00:25:12,760 --> 00:25:13,450 Nei? 526 00:25:13,450 --> 00:25:16,020 Ja, gå på. 527 00:25:16,020 --> 00:25:17,380 >> PUBLIKUM: [uhørbart] 528 00:25:17,380 --> 00:25:18,380 >> DAVID MALAN: Jepp. 529 00:25:18,380 --> 00:25:20,380 >> PUBLIKUM: [uhørbart] 530 00:25:20,380 --> 00:25:26,090 531 00:25:26,090 --> 00:25:28,669 >> DAVID MALAN: Jeg trenger deg til snakke litt høyere. 532 00:25:28,669 --> 00:25:31,084 >> PUBLIKUM: [uhørbart] 533 00:25:31,084 --> 00:25:35,744 534 00:25:35,744 --> 00:25:36,660 DAVID MALAN: OK, bra. 535 00:25:36,660 --> 00:25:38,620 Og jeg think-- det var vanskelig å høre you-- men jeg 536 00:25:38,620 --> 00:25:42,690 tenke hva du får på er at kodene som var vanlig opp toppen, 537 00:25:42,690 --> 00:25:47,710 og kodene som var vanlig på bunn, har nå blitt tatt ut, 538 00:25:47,710 --> 00:25:51,140 eller henvist til hvilke filer? 539 00:25:51,140 --> 00:25:53,476 Header.php og footer.php-- og vi kommer 540 00:25:53,476 --> 00:25:55,600 å gjøre noen tilpasninger for å adressere bekymring du bare 541 00:25:55,600 --> 00:25:59,370 reist om tallene endring, for eksempel, hvis jeg hørte riktig. 542 00:25:59,370 --> 00:26:02,060 >> Men det synes å være hovedinnholdet i den. 543 00:26:02,060 --> 00:26:04,820 Hvis det var en enorm mengde redundans på toppen av siden, 544 00:26:04,820 --> 00:26:06,736 og en enorm mengde redundans på bunnen, 545 00:26:06,736 --> 00:26:09,280 la oss bokstavelig talt bare høydepunkt og kutte det ut innhold, 546 00:26:09,280 --> 00:26:13,270 legg den i en egen file-- akkurat som ideen av CSS, hvor vi tatt ut 547 00:26:13,270 --> 00:26:16,710 veldig lignende estetikk, satt i et separat dot PHP-fil, 548 00:26:16,710 --> 00:26:20,340 bruke kreve mechanism-- som er som ciss include-- som 549 00:26:20,340 --> 00:26:23,570 er egentlig som å si gå ta tak i innholdet i header.php, 550 00:26:23,570 --> 00:26:25,370 og kopiere og lime dem her. 551 00:26:25,370 --> 00:26:29,490 >> Men hva dette betyr er at nå i index.php, jeg har disse to linjene. 552 00:26:29,490 --> 00:26:32,130 I lectures.php, jeg også ha disse to linjer. 553 00:26:32,130 --> 00:26:35,230 I week0.php, jeg også ha disse to linjer. 554 00:26:35,230 --> 00:26:38,380 >> Så nå, hvis jeg ønsker å endre tittelen på alle mine sider, 555 00:26:38,380 --> 00:26:40,530 eller jeg ønsker å endre fundamental struktur, 556 00:26:40,530 --> 00:26:44,380 Jeg kan endre det nå på bare ett sted, eller to places-- topp- og bunntekst, 557 00:26:44,380 --> 00:26:45,429 henholdsvis. 558 00:26:45,429 --> 00:26:47,970 Nå koden begynner å se litt mer kryptisk, ikke sant? 559 00:26:47,970 --> 00:26:53,590 Men hvis du tenker på hva siden er doing-- hvis jeg ber om week0.php, 560 00:26:53,590 --> 00:26:59,880 på samme måte som på tegningen i løpet her-- når week0.php er forespurt, 561 00:26:59,880 --> 00:27:00,960 hva betyr det? 562 00:27:00,960 --> 00:27:04,410 >> Bokstavelig talt, er denne filen spurt av nettleseren. 563 00:27:04,410 --> 00:27:06,240 Nettet server-- a.k.a. 564 00:27:06,240 --> 00:27:09,250 CS50 ID-- griper dette fil, week0.php, og leser 565 00:27:09,250 --> 00:27:10,780 det øverst til nederst, venstre til høyre. 566 00:27:10,780 --> 00:27:15,400 På linje en, den støter umiddelbart åpen brakett spørsmålstegn PHP, krever 567 00:27:15,400 --> 00:27:17,872 header dot PHP, og så hvordan PHP tolk 568 00:27:17,872 --> 00:27:20,580 does-- som er bygget inn i nettet server, fordi vi forhåndskonfigurert 569 00:27:20,580 --> 00:27:24,580 det for you-- det går automatisk i header.php, kopierer innholdet, 570 00:27:24,580 --> 00:27:25,640 limer dem her. 571 00:27:25,640 --> 00:27:28,790 >> Men så tolk møter spørsmålstegn tett brakett, 572 00:27:28,790 --> 00:27:30,320 slik det er gjort tenker. 573 00:27:30,320 --> 00:27:33,400 Nå er det bare blindt spytter ut linjer to gjennom syv, 574 00:27:33,400 --> 00:27:35,240 fordi det er bare rå HTML. 575 00:27:35,240 --> 00:27:38,470 Blir til linje åtte, og gjør at samme magien igjen-- åpne filen, 576 00:27:38,470 --> 00:27:41,460 gripe innholdet, og krever dem eller lime dem 577 00:27:41,460 --> 00:27:42,480 akkurat da eller der. 578 00:27:42,480 --> 00:27:44,210 >> Men jeg bare antydet en bug. 579 00:27:44,210 --> 00:27:48,610 Dette er en delvis skritt bakover, fordi hvis vi ser i header.php, 580 00:27:48,610 --> 00:27:50,850 Jeg har på en måte kuttet et hjørne. 581 00:27:50,850 --> 00:27:56,250 Hva har jeg gi opp for for å få dette hevdes bedre design? 582 00:27:56,250 --> 00:27:57,305 Yeah? 583 00:27:57,305 --> 00:27:58,180 PUBLIKUM: [uhørbart] 584 00:27:58,180 --> 00:28:00,570 DAVID MALAN: Ja, jeg slags av kuttet en nontrivial hjørne. 585 00:28:00,570 --> 00:28:04,489 Du påpekte at det var i endring var tittelen, nummeret i tittelen, 586 00:28:04,489 --> 00:28:05,530 og nummeret i H1. 587 00:28:05,530 --> 00:28:08,170 Så min løsning var, OK, la oss bare endre navn på siden, 588 00:28:08,170 --> 00:28:10,080 og ikke forholde seg til det problem overhodet. 589 00:28:10,080 --> 00:28:12,130 Så det er en delvis gå bakover for sikker. 590 00:28:12,130 --> 00:28:14,300 >> Men hva er bemerkelsesverdig her er at det jeg har gjort 591 00:28:14,300 --> 00:28:17,200 ellers er priset ut alle de vanlige tingene. 592 00:28:17,200 --> 00:28:21,520 Og i footer.php, merker jeg tatt ut alt dette, om enn mindre, 593 00:28:21,520 --> 00:28:22,790 felles ting. 594 00:28:22,790 --> 00:28:26,070 Så jeg trenger å liksom nå kunne ta et steg videre, og fikse 595 00:28:26,070 --> 00:28:27,160 at tittelen problemer. 596 00:28:27,160 --> 00:28:28,180 Så la oss gjøre det. 597 00:28:28,180 --> 00:28:35,060 >> La meg gå inn i min andre versjon her, som, igjen, har de samme filene 598 00:28:35,060 --> 00:28:36,825 med unntak av ett nytt tilskudd. 599 00:28:36,825 --> 00:28:38,950 Og det er litt mer ordrik, men la oss se om vi 600 00:28:38,950 --> 00:28:40,550 kan erte hverandre hva som skjer her. 601 00:28:40,550 --> 00:28:45,370 Så i stedet for å kreve header.php, og footer.php, 602 00:28:45,370 --> 00:28:50,180 Jeg synes å være bare krever én file-- kalt, selvfølgelig, helpers.php. 603 00:28:50,180 --> 00:28:52,560 Og la meg fastsette nå, hva som er inne i helpers.php 604 00:28:52,560 --> 00:28:55,330 er bare en haug med funksjoner som jeg skrev, akkurat som før. 605 00:28:55,330 --> 00:28:57,550 Men jeg kalte det helpers.php. 606 00:28:57,550 --> 00:29:00,370 >> Nå tilsynelatende, i linje tre og 10, er jeg 607 00:29:00,370 --> 00:29:02,840 ringer to functions-- gjengi header, gjengi bunntekst. 608 00:29:02,840 --> 00:29:05,040 De kommer ikke med PHP, skrev jeg dem selv. 609 00:29:05,040 --> 00:29:07,880 Og jeg setter dem i helpers.php. 610 00:29:07,880 --> 00:29:11,210 >> Nå har vi bare sett denne syntaksen en gang, og det var super kort. 611 00:29:11,210 --> 00:29:15,330 Men dette er tydeligvis et argument å gjengi mål funksjonen. 612 00:29:15,330 --> 00:29:16,450 Hvorfor vet jeg det? 613 00:29:16,450 --> 00:29:18,522 Vel her er et nært paren, her er en åpen paren. 614 00:29:18,522 --> 00:29:21,230 Og selvfølgelig, akkurat som i C, noe mellom disse parentes 615 00:29:21,230 --> 00:29:23,350 er en input-- eller en argument til funksjonen. 616 00:29:23,350 --> 00:29:26,710 >> Hva er datatypen for dette argumentet, basert på hva jeg har uthevet? 617 00:29:26,710 --> 00:29:30,820 Hva gjør disse klammer indikerer, basert på forrige uke? 618 00:29:30,820 --> 00:29:33,390 Ja, det er en array-- spesielt en assosiativ array. 619 00:29:33,390 --> 00:29:35,700 Og denne syntaksen riktignok er litt funky, 620 00:29:35,700 --> 00:29:38,860 men dette er bare passerer i en sentral verdi par. 621 00:29:38,860 --> 00:29:43,530 Nøkkelen er, sitat unquote tittel, og verdien er CS50. 622 00:29:43,530 --> 00:29:46,220 >> Hvis vi hadde gjort dette i C, kan det i stedet 623 00:29:46,220 --> 00:29:49,400 ser mer ut som dette, bare quote unquote CS50-- 624 00:29:49,400 --> 00:29:52,460 eller faktisk det ville være krøllete bukseseler, eller noe sånt i C, 625 00:29:52,460 --> 00:29:55,580 hvor nøkkelen er null, og verdien er CS50. 626 00:29:55,580 --> 00:29:59,840 Men igjen, PHP, selv om syntaks er, igjen, litt rart, 627 00:29:59,840 --> 00:30:02,860 det tillater deg å passere i ord i stedet for tall 628 00:30:02,860 --> 00:30:05,120 å knytte nøkler med verdier. 629 00:30:05,120 --> 00:30:06,390 >> Så hva betyr alt dette? 630 00:30:06,390 --> 00:30:09,750 Hvis jeg går inn helpers.php, la oss se på denne funksjonen. 631 00:30:09,750 --> 00:30:13,620 renderHeader.php, snarere renderHeader er min funksjon, 632 00:30:13,620 --> 00:30:16,220 og jeg vet det fordi jeg ser funksjonen nøkkelordet her. 633 00:30:16,220 --> 00:30:19,450 Dette er nytt fra C-- det tilsynelatende tar et argument kalt data-- 634 00:30:19,450 --> 00:30:22,400 men jeg kunne ha kalt dette noe, men jeg kalte det data, 635 00:30:22,400 --> 00:30:25,090 bare for å være litt clean-- og bare ta en gjetning, spesielt 636 00:30:25,090 --> 00:30:28,173 Hvis du har programmert på annen høyere nivå språk før, noe 637 00:30:28,173 --> 00:30:29,820 ovenfor C, konseptuelt. 638 00:30:29,820 --> 00:30:33,820 >> Hva gjør like åpen brakett hakeparentes trolig bety? 639 00:30:33,820 --> 00:30:35,540 Eller hva kan det bety? 640 00:30:35,540 --> 00:30:39,660 Vi har ikke sett dette i C. Yeah? 641 00:30:39,660 --> 00:30:40,480 >> En tom array. 642 00:30:40,480 --> 00:30:45,440 Nærmere bestemt betyr dette at hvis brukeren ikke kalle renderHeader 643 00:30:45,440 --> 00:30:49,340 med et argument, jeg fortsatt kommer å ha et argument som heter data, 644 00:30:49,340 --> 00:30:52,327 men standardverdien er kommer til å være en tom array. 645 00:30:52,327 --> 00:30:53,660 Så det er bare en hyggelig service. 646 00:30:53,660 --> 00:30:56,493 Jeg trenger ikke å kjefte på brukeren, eller si du brukte min funksjon galt. 647 00:30:56,493 --> 00:30:59,849 Jeg kan bare gi brukeren en standard verdi, hvis jeg ikke særlig omsorg. 648 00:30:59,849 --> 00:31:01,890 Nå er denne funksjonen, er jeg kommer til å vinke hendene mine på. 649 00:31:01,890 --> 00:31:07,620 Men dette ekstraktet funksjonen gjør oss å passere disse variablene i data 650 00:31:07,620 --> 00:31:10,360 inn header.php på følgende måte. 651 00:31:10,360 --> 00:31:13,100 Og dette er den siste brikken, Jeg tror, ​​funky syntaks. 652 00:31:13,100 --> 00:31:15,860 Her er min nye versjon av header.php-- det 653 00:31:15,860 --> 00:31:20,140 pleide å si, bokstavelig talt, åpen brakett tittel CS50, og det var det. 654 00:31:20,140 --> 00:31:21,766 Og samme for H1. 655 00:31:21,766 --> 00:31:24,310 >> Nå står det tilsynelatende noe ganske funky. 656 00:31:24,310 --> 00:31:28,030 Og la meg forenkle dette et øyeblikk som følger. 657 00:31:28,030 --> 00:31:31,020 Dette er hva jeg har endret min tittel å være. 658 00:31:31,020 --> 00:31:35,140 Men, det blir litt stygge å stadig åpne brak med PHP, 659 00:31:35,140 --> 00:31:36,610 og deretter bruke utskriftsfunksjonen. 660 00:31:36,610 --> 00:31:40,810 Det viser seg at PHP har en stenografi notasjon for dette, som er like 661 00:31:40,810 --> 00:31:45,050 et likhetstegn, som er teknisk sett en funksjon kalt ekko i stedet for print, 662 00:31:45,050 --> 00:31:46,800 men det er det samme, effektivt. 663 00:31:46,800 --> 00:31:48,440 >> Det ser bare bedre. 664 00:31:48,440 --> 00:31:50,510 Det er bare en syntaktisk sukker, om du vil, 665 00:31:50,510 --> 00:31:52,260 som gjør at koden min ser litt bedre. 666 00:31:52,260 --> 00:31:54,010 Men det viser seg, og vi vil se dette igjen 667 00:31:54,010 --> 00:31:57,420 før lenge, må vi kalle dette grammatikken lang funksjon kalt 668 00:31:57,420 --> 00:32:00,582 HTML spesialtegn i PHP, fordi det viser seg 669 00:32:00,582 --> 00:32:02,790 det er visse innganger at brukeren kan gi oss 670 00:32:02,790 --> 00:32:05,160 eller at brukere kan gi oss, som kommer til å bryte vår side. 671 00:32:05,160 --> 00:32:07,035 Men vi får se det neste uke med Javascript. 672 00:32:07,035 --> 00:32:10,740 Men for nå, bare vet at denne filen, headers.php, rett og slett 673 00:32:10,740 --> 00:32:13,040 tar tittelen som Jeg gikk inn, det gjør 674 00:32:13,040 --> 00:32:17,380 sikker på at det er trygt å bli injisert inn i et web side, og det spytter det ut som min tittel 675 00:32:17,380 --> 00:32:18,640 og som min H1. 676 00:32:18,640 --> 00:32:24,440 Så hvis jeg går inn i denne versjonen nå, Legg merke til at forelesningene har sin tittel tilbake, 677 00:32:24,440 --> 00:32:28,630 uke null har sin tittel tilbake, og ja, HTML jeg genererer 678 00:32:28,630 --> 00:32:32,110 er identisk med hva min første versjon var-- bortsett fra min mellomrom, 679 00:32:32,110 --> 00:32:35,150 fordi jeg har begynt å formatere koden min litt annerledes. 680 00:32:35,150 --> 00:32:38,082 Men jeg har generert alle koden jeg bryr meg om. 681 00:32:38,082 --> 00:32:39,790 Så la meg pause for bare et øyeblikk og se 682 00:32:39,790 --> 00:32:42,200 hvis det er noen spørsmål eller forvirring jeg har laget. 683 00:32:42,200 --> 00:32:44,970 684 00:32:44,970 --> 00:32:48,150 Greit, så la oss vri litt vanskeligere her 685 00:32:48,150 --> 00:32:51,500 for å se om det er en mulighet for forbedring. 686 00:32:51,500 --> 00:32:56,130 Helpers.php også hatt dette funksjon, kalt renderFooter. 687 00:32:56,130 --> 00:32:59,652 Og hva er bemerkelsesverdig om renderHeader, og renderFooter? 688 00:32:59,652 --> 00:33:02,610 Og igjen, for dagens formål, vet at ekstrakt funksjon er bare 689 00:33:02,610 --> 00:33:08,280 min måte å passerende argumenter inn header.php og footer.php. 690 00:33:08,280 --> 00:33:10,900 691 00:33:10,900 --> 00:33:11,780 >> Sorry? 692 00:33:11,780 --> 00:33:13,056 >> PUBLIKUM: [uhørbart] 693 00:33:13,056 --> 00:33:15,180 DAVID MALAN: Ja, bare jeg endret kreve linje. 694 00:33:15,180 --> 00:33:19,410 Så bokstavelig talt, jeg har begått den synd kopiere og lime inn, enda en gang. 695 00:33:19,410 --> 00:33:21,920 Det er ikke et stort antall linjer, men kommer on-- 696 00:33:21,920 --> 00:33:25,220 hvis jeg kopiere og lime alt bare for å endre en lite ord, 697 00:33:25,220 --> 00:33:28,610 og den ene lille ordet som Alan peker ut er fotnoter her, kontra header her. 698 00:33:28,610 --> 00:33:30,670 Ellers er alt identiske, bortsett fra, 699 00:33:30,670 --> 00:33:32,180 selvfølgelig funksjonens navn. 700 00:33:32,180 --> 00:33:33,690 Så hva kan vi gjøre bedre? 701 00:33:33,690 --> 00:33:39,810 >> Vel la meg åpne opp denne versjonen her, hvor i helpers.php, 702 00:33:39,810 --> 00:33:42,300 hvorfor kan jeg ikke bare få en litt smartere om dette? 703 00:33:42,300 --> 00:33:46,410 Skriv litt mer komplisert kode, men kaller det gjengi? 704 00:33:46,410 --> 00:33:48,470 Så hva har jeg fundamentalt endret? 705 00:33:48,470 --> 00:33:51,770 >> Det tar et argument now-- to argumenter, data fortsatt. 706 00:33:51,770 --> 00:33:54,444 Og så hva er det første Navnet sannsynligvis blir brukt til, 707 00:33:54,444 --> 00:33:55,860 basert på hva du leser her? 708 00:33:55,860 --> 00:33:58,452 Selv om noen av syntaksen er fortsatt nytt. 709 00:33:58,452 --> 00:33:59,660 Hva er dollartegn mal? 710 00:33:59,660 --> 00:34:02,400 711 00:34:02,400 --> 00:34:03,016 >> Sorry? 712 00:34:03,016 --> 00:34:03,710 >> PUBLIKUM: topp- eller bunnteksten. 713 00:34:03,710 --> 00:34:04,510 >> DAVID MALAN: topp- eller bunnteksten. 714 00:34:04,510 --> 00:34:07,134 Så tilsynelatende, bestemte jeg meg for at hvis det eneste som forandrer seg 715 00:34:07,134 --> 00:34:10,159 er det mal jeg ønsker til print-- og etter mal 716 00:34:10,159 --> 00:34:13,100 Jeg mener dette er fasit for kode som jeg ønsker å utgang, 717 00:34:13,100 --> 00:34:16,350 men jeg ønsker å koble til noen values-- så hvis det er bare header 718 00:34:16,350 --> 00:34:20,440 eller bunntekst, hvorfor ikke jeg parameterize det og kaller argumentet dollartegn 719 00:34:20,440 --> 00:34:21,409 mal? 720 00:34:21,409 --> 00:34:26,250 Og så denne funky syntaks tillater meg å lage en sti i en variabel her. 721 00:34:26,250 --> 00:34:28,030 >> Så dollartegn banen er en variabel. 722 00:34:28,030 --> 00:34:31,120 Hva gjør denne syntaksen gjøre, hvis du er kjent? 723 00:34:31,120 --> 00:34:32,512 Yeah? 724 00:34:32,512 --> 00:34:34,065 >> PUBLIKUM: [uhørbart] 725 00:34:34,065 --> 00:34:34,940 DAVID MALAN: Nettopp. 726 00:34:34,940 --> 00:34:37,600 Hvis malen, sitat unquote, header, eller hvis malen er, 727 00:34:37,600 --> 00:34:41,170 quote unquote, bunntekst, den linjen der som jeg har uthevet, linje åtte, 728 00:34:41,170 --> 00:34:46,330 er ganske enkelt å ta det navnet, som header, og sette sammen det med dot PHP. 729 00:34:46,330 --> 00:34:49,750 Slik at vi ikke har denne operatøren i C. Dette dot operatør 730 00:34:49,750 --> 00:34:54,520 en fantastisk ting i PHP-- hvis du er kjent med Javascript eller Java, 731 00:34:54,520 --> 00:34:56,949 du kan bruke pluss signere å gjøre sammensetning. 732 00:34:56,949 --> 00:34:59,974 >> I C, er det en smerte i neck-- og jeg er så lei meg, i p-set seks, 733 00:34:59,974 --> 00:35:02,390 du er nødt til å gjøre dette-- det er en smerte i nakken 734 00:35:02,390 --> 00:35:03,930 å sette sammen strenger. 735 00:35:03,930 --> 00:35:04,670 Hvorfor? 736 00:35:04,670 --> 00:35:06,580 Vel, fordi hvis du har en streng som er denne lange, 737 00:35:06,580 --> 00:35:09,538 og en annen streng som er denne lange, du kan ikke bare koble dem sammen. 738 00:35:09,538 --> 00:35:11,070 Hva har du i stedet har å gjøre i C? 739 00:35:11,070 --> 00:35:11,680 Yeah? 740 00:35:11,680 --> 00:35:12,380 >> PUBLIKUM: [uhørbart] 741 00:35:12,380 --> 00:35:15,090 >> DAVID MALAN: Du må malloc minne, eller bruke en matrise på stakken. 742 00:35:15,090 --> 00:35:17,214 Og du faktisk nødt til å gjør at matrisen stor nok 743 00:35:17,214 --> 00:35:20,940 å passe dette pluss dette, pluss backslash null. 744 00:35:20,940 --> 00:35:24,994 Deretter sette sammen dem sammen ved hjelp røre katt eller manuelt med en for loop, 745 00:35:24,994 --> 00:35:26,160 eller en rekke teknikker. 746 00:35:26,160 --> 00:35:27,760 Og vi viser deg et par i p-set seks. 747 00:35:27,760 --> 00:35:29,080 >> Det er en smerte i nakken. 748 00:35:29,080 --> 00:35:34,190 Og dette er virkelig hva jeg mener om dette versus dette-- som C versus PHP. 749 00:35:34,190 --> 00:35:36,870 Du bare får så mye mer funksjonalitet for gratis, 750 00:35:36,870 --> 00:35:39,030 slik at du kan fokusere, ideelt sett på moroa 751 00:35:39,030 --> 00:35:41,190 del av koding, blir prosjekt du ønsker å løse, 752 00:35:41,190 --> 00:35:43,190 snarere enn lavt nivå bagateller. 753 00:35:43,190 --> 00:35:49,840 >> Så dette er bare genererer header.php eller footer.php basert på hvilken jeg ringe. 754 00:35:49,840 --> 00:35:52,280 Og ja hvis jeg går inn i index.php, varsel 755 00:35:52,280 --> 00:35:56,230 alt som changed-- Istedenfor ringer gjengi header eller gjengi bunntekst, 756 00:35:56,230 --> 00:36:00,230 Jeg ringer gjengi, etterfulgt av navnet på malen som jeg ønsker å gjøre. 757 00:36:00,230 --> 00:36:02,370 Og du vil se dette, også, i oppgavesettet syv, 758 00:36:02,370 --> 00:36:05,530 hvor vi gir deg mulighet til å bruke samme funksjon for å lage bunter 759 00:36:05,530 --> 00:36:07,550 og bunter av forskjellige nettsider. 760 00:36:07,550 --> 00:36:10,570 >> Så i stedet for å dvele for mye mer på disse details-- 761 00:36:10,570 --> 00:36:13,210 som du vil se igjen i Oppgavesettet seven-- la oss se 762 00:36:13,210 --> 00:36:16,850 ved nå begynnelsen av en løsning til et mer interessant problem. 763 00:36:16,850 --> 00:36:19,310 Så langt, ikke noe vi har gjort har lagrede data. 764 00:36:19,310 --> 00:36:22,920 Faktisk, den eneste gangen vi noensinne har lagret noe vi har gjort i denne klassen 765 00:36:22,920 --> 00:36:31,030 er når vi hadde en veldig enkel demo stund tilbake, hvor vi brukte filer IO i C, 766 00:36:31,030 --> 00:36:34,520 og jeg tror jeg skrev i mitt navn, og Hannah navn, og Maria navn, 767 00:36:34,520 --> 00:36:37,610 eller kanskje Andy navn, og da vi lagret en CSV file-- 768 00:36:37,610 --> 00:36:39,430 kommaseparert verdier filen. 769 00:36:39,430 --> 00:36:43,530 >> Og vi brukte fopen-- jeg tror vi brukte fprintf som jeg husker, 770 00:36:43,530 --> 00:36:44,910 og vi har lagret en fil. 771 00:36:44,910 --> 00:36:46,920 Nå, som er den enkleste form av en database. 772 00:36:46,920 --> 00:36:50,230 Hvis du ønsker å lage en nettside for Frosh direktemeldinger program, der freshmen 773 00:36:50,230 --> 00:36:53,390 kan registrere deg for en sport, du ideelt ønsker å gjøre noe med disse dataene. 774 00:36:53,390 --> 00:36:55,370 Forrige uke, vi gjorde ingenting med data-- vi nettopp sa, 775 00:36:55,370 --> 00:36:56,661 du er registrert, ikke egentlig. 776 00:36:56,661 --> 00:36:58,950 Eller kanskje jeg mailet Proctor, og det var det. 777 00:36:58,950 --> 00:37:02,110 >> Men det ville være fint om jeg kunne gi som Proctor en CSV-fil, 778 00:37:02,110 --> 00:37:03,340 som en Excel-fil. 779 00:37:03,340 --> 00:37:05,090 Eller enda bedre, det ville være fint om jeg kunne 780 00:37:05,090 --> 00:37:08,830 sette disse brukernes navn og dorm navn og alt det der 781 00:37:08,830 --> 00:37:11,740 inn i en database som bare lever videre for alltid, 782 00:37:11,740 --> 00:37:13,530 før jeg velger å slette dataene. 783 00:37:13,530 --> 00:37:15,645 En database som gjør det mulig meg å spørre informasjon. 784 00:37:15,645 --> 00:37:18,070 Og ja, det er hva en database er. 785 00:37:18,070 --> 00:37:20,470 >> Vi introduserer i dag, og neste uke også, en teknologi 786 00:37:20,470 --> 00:37:25,020 kalt SQL-- en Structured Query Språk, som er et annet språk. 787 00:37:25,020 --> 00:37:28,750 Det er egentlig et programmerings språk, men for databaser. 788 00:37:28,750 --> 00:37:31,760 Og en database for nå, bare tenker på som en super fancy versjon 789 00:37:31,760 --> 00:37:35,710 av Microsoft Excel, eller Google Regneark eller Apple Numbers. 790 00:37:35,710 --> 00:37:39,950 Det er som regel et program som lar du lagre en hel haug av data 791 00:37:39,950 --> 00:37:43,960 i rader og kolonner, ganske som du kanskje i Excel. 792 00:37:43,960 --> 00:37:47,100 >> Men hva er fint, spesielt hvis vi er ikke super kjent med Excel, 793 00:37:47,100 --> 00:37:52,040 hva SQL tillater deg å gjøre er å spørre dette informasjon ved å skrive linjer med kode 794 00:37:52,040 --> 00:37:55,220 der du kan, selv om Databasen har en million rader i det, 795 00:37:55,220 --> 00:37:57,190 du kan finne ting super rask. 796 00:37:57,190 --> 00:37:59,950 Faktisk er Excel spesielt dårlig i store datasett. 797 00:37:59,950 --> 00:38:02,460 Og faktisk opp til noen få år siden, viste seg 798 00:38:02,460 --> 00:38:08,890 Excel vil bare tillate deg å lagre opptil 65535 rader av data-- som 799 00:38:08,890 --> 00:38:12,020 høres ut som mye, men på gang jeg var en grad student, 800 00:38:12,020 --> 00:38:14,920 og jeg husker snuble over dette fordi jeg var å generere 801 00:38:14,920 --> 00:38:17,900 CSV-filer for min forskning, og jeg ønsket å analysere dem raskt 802 00:38:17,900 --> 00:38:19,530 ved bare å åpne opp i Excel. 803 00:38:19,530 --> 00:38:23,730 Selvfølgelig, min datamaskin bare krasjet, fordi jeg hadde mer enn 65.000 rader. 804 00:38:23,730 --> 00:38:27,210 >> Men hvor ble det av 65 535 kommer fra? 805 00:38:27,210 --> 00:38:29,670 Hva var Microsoft gjør, formodentlig? 806 00:38:29,670 --> 00:38:32,430 Hvis du er flink med dine krefter to? 807 00:38:32,430 --> 00:38:37,160 Ja, de brukte et 16-bit verdi for å representere radnummer. 808 00:38:37,160 --> 00:38:41,310 Og to til 16 er 65,536-- minus en, fordi hvis du 809 00:38:41,310 --> 00:38:45,414 null indeks betyr at det var flest antall rader jeg kunne ha. 810 00:38:45,414 --> 00:38:46,830 Og det var bare et design beslutning. 811 00:38:46,830 --> 00:38:52,760 Ved å lagre 16 bit, begrenset de meg 16.000 rader, i stedet for 4 milliarder kroner, 812 00:38:52,760 --> 00:38:54,322 som jeg kunne ha hatt ideelt. 813 00:38:54,322 --> 00:38:57,030 Men for nå, skal vi innføre denne mer i en web-sammenheng. 814 00:38:57,030 --> 00:39:00,390 Og hva er fint om SQL er at selv selv om det er ganske kraftig og pen 815 00:39:00,390 --> 00:39:04,050 sofistikerte, det virkelig koker ned til fire viktige operasjoner, fire 816 00:39:04,050 --> 00:39:08,060 viktige funksjoner, hvis du will-- velger, for å hente data, søking 817 00:39:08,060 --> 00:39:12,510 for data; slette eller slette data, sette inn for å legge til rader i databasen; 818 00:39:12,510 --> 00:39:13,410 og oppdatering. 819 00:39:13,410 --> 00:39:17,010 Så hvis du noen gang har brukt Google Regneark, Apple Numbers, Microsoft 820 00:39:17,010 --> 00:39:19,310 Excel, har du utført, mest sannsynlig, alt 821 00:39:19,310 --> 00:39:22,530 av disse operasjonene som et menneske med bare ved hjelp av tastaturet og mouse-- 822 00:39:22,530 --> 00:39:26,050 sette inn data ved hjelp av øynene dine for å velge eller søke etter data, 823 00:39:26,050 --> 00:39:28,360 eller oppdatere data, eller slette data. 824 00:39:28,360 --> 00:39:29,870 >> Så hva betyr dette? 825 00:39:29,870 --> 00:39:34,300 Vel, forhåndsinstallert i CS50 IDE er et program som heter MySQL. 826 00:39:34,300 --> 00:39:37,050 Det er et gratis, open-source database som er super populært. 827 00:39:37,050 --> 00:39:40,590 Facebook, for eksempel bruker den til denne dag, blant annet verktøy som de bruker. 828 00:39:40,590 --> 00:39:44,300 Og mange svært populære nettsteder bruker det i stor grad fordi det er raskt, 829 00:39:44,300 --> 00:39:45,230 og fordi det er gratis. 830 00:39:45,230 --> 00:39:46,820 Men absolutt alternativer finnes. 831 00:39:46,820 --> 00:39:49,580 Og noen av dere kanskje prøve seg med alternativer for endelig prosjekter. 832 00:39:49,580 --> 00:39:55,330 >> Dette er en skjermdump, i mellomtiden, for et nettbasert verktøy kalt phpMyAdmin. 833 00:39:55,330 --> 00:39:58,260 Det er en tilfeldighet at denne web-basert verktøy er også 834 00:39:58,260 --> 00:40:01,720 skrevet i et språk, PHP, men hva det er ment å gjøre 835 00:40:01,720 --> 00:40:04,620 er å gi oss en web-basert grensesnitt til en database. 836 00:40:04,620 --> 00:40:07,180 Fordi MySQL er typisk noe historisk, du 837 00:40:07,180 --> 00:40:08,770 ville samhandle med bare med en kommandolinje. 838 00:40:08,770 --> 00:40:10,811 Og det ville være super irriterende og uforståelige å ha 839 00:40:10,811 --> 00:40:14,487 å skrive tekstkommandoer for å velge data, sette inn data, og slette data. 840 00:40:14,487 --> 00:40:16,820 Så noen folk på internett skrev en web-basert program 841 00:40:16,820 --> 00:40:18,900 som bare la oss styre dataene i vår database. 842 00:40:18,900 --> 00:40:23,040 Det er som å dobbeltklikke på Excel, og kjører en web-basert versjon av denne. 843 00:40:23,040 --> 00:40:26,370 >> Og hva du kommer til å bruke denne for slutt neste uke, ikke i p-set seks, 844 00:40:26,370 --> 00:40:28,680 men er å bygge noe kalt CS50 Finance, som 845 00:40:28,680 --> 00:40:32,630 kommer til å ha en database over brukere, med brukernavn og passord, 846 00:40:32,630 --> 00:40:34,860 dollar beløp at de har i sine bankkonti. 847 00:40:34,860 --> 00:40:37,280 Det kommer til å være noe du bruker til å lagre 848 00:40:37,280 --> 00:40:39,910 symbolene og de mengdene av aksjer som brukere 849 00:40:39,910 --> 00:40:42,567 har kjøpt ved hjelp virtuelle dollar som du vil gi til dem. 850 00:40:42,567 --> 00:40:44,900 Og det kommer til å tillate brukere for å registrere nettstedet ditt, 851 00:40:44,900 --> 00:40:47,190 slik at selv vennene dine kan stemme på ditt nettsted 852 00:40:47,190 --> 00:40:49,360 og faktisk registrere, logger deg på, og leke seg 853 00:40:49,360 --> 00:40:52,807 og prøve å finne feil i koden din, og prøve å finne feil i ditt nettsted. 854 00:40:52,807 --> 00:40:55,390 Og de vil ganske enkelt registrere deg ved legge seg, effektivt, 855 00:40:55,390 --> 00:40:58,120 via koden du skriver til databasen. 856 00:40:58,120 --> 00:41:02,470 >> For eksempel er dette en rask skjermbilde av hva en database kan se ut. 857 00:41:02,470 --> 00:41:05,190 Dette var fra en av fjorårets solutions-- 858 00:41:05,190 --> 00:41:07,760 Dette er som en mini Excel fil, lagret i vår database, 859 00:41:07,760 --> 00:41:09,950 lagret i denne programvaren kalles MySQL. 860 00:41:09,950 --> 00:41:13,260 På venstre side, har jeg tydeligvis gis hver brukeren et unikt nummer. 861 00:41:13,260 --> 00:41:16,200 I den andre kolonnen, har jeg gitt alle en bruker name-- min egen 862 00:41:16,200 --> 00:41:16,880 blant dem. 863 00:41:16,880 --> 00:41:21,430 Og på høyre side, Jeg har gitt dem en hash. 864 00:41:21,430 --> 00:41:26,760 >> Nå er dette faktisk et passord, men det er ikke en ren tekst passord. 865 00:41:26,760 --> 00:41:30,160 Det er et kryptert passord, hvis du vil, eller en hash passord. 866 00:41:30,160 --> 00:41:32,000 Som vi vil komme tilbake til før lenge. 867 00:41:32,000 --> 00:41:34,340 >> Men hvis du noensinne har lest en artikkel om hvordan 868 00:41:34,340 --> 00:41:37,950 passordet på noen bank eller noen nettside kan ha blitt kompromittert, 869 00:41:37,950 --> 00:41:39,630 det kan vanligvis bety en av to ting. 870 00:41:39,630 --> 00:41:42,780 Så dette er bare et utdrag av seks brukere. 871 00:41:42,780 --> 00:41:45,460 Alle dere nå kan finne ut via hacking eller cracking 872 00:41:45,460 --> 00:41:47,690 hva våre seks folks passord er. 873 00:41:47,690 --> 00:41:49,720 Men hvis du noen gang har fått et varsel eller en unnskyldning 874 00:41:49,720 --> 00:41:52,803 fra et firma eller nettside ordtak, Beklager, en hacker brøt seg inn i vår database, 875 00:41:52,803 --> 00:41:56,360 bør du sannsynligvis endre passord, hva kan det bety? 876 00:41:56,360 --> 00:41:59,670 >> Vel, en, kan bety Selskapet har vært mer moronic, 877 00:41:59,670 --> 00:42:03,630 og har blitt lagre passordet ditt i en kolonne som dette, ukryptert. 878 00:42:03,630 --> 00:42:05,840 Hvilket betyr motstanderen, som stjal databasen, 879 00:42:05,840 --> 00:42:07,440 bokstavelig talt kjenner din brukernavn og passord. 880 00:42:07,440 --> 00:42:08,960 Det er det verst tenkelige scenario. 881 00:42:08,960 --> 00:42:11,710 Og som du ser i p-settet syv, så lett å unngå. 882 00:42:11,710 --> 00:42:15,624 Det er absolutt ingen unnskyldning for det form for dumhet i dagens internett. 883 00:42:15,624 --> 00:42:18,540 Two-- og vi vil finne noen artikler å vitne at dette fortsatt 884 00:42:18,540 --> 00:42:21,710 skjer, nonetheless-- to, kanskje motstanderen 885 00:42:21,710 --> 00:42:23,840 stjal denne versjonen av databasen. 886 00:42:23,840 --> 00:42:27,110 Som fortsatt er litt dårlig, fordi nå de vet at jeg har seks kunder, 887 00:42:27,110 --> 00:42:29,270 Jeg vet brukernavn av disse seks kunder, 888 00:42:29,270 --> 00:42:32,910 og jeg vet det krypterte versjoner, eller de hashed versjoner, 889 00:42:32,910 --> 00:42:34,340 av de seks kundenes passord. 890 00:42:34,340 --> 00:42:37,010 Men noen av dere som kanskje har gjort [? Hacker 2?] 891 00:42:37,010 --> 00:42:41,150 hvor du sprakk passord, eller tok en ser på den versjonen av problemet 892 00:42:41,150 --> 00:42:46,280 set, hvorfor er det fortsatt litt betenkelig hvis motstanderen kjenner din hash 893 00:42:46,280 --> 00:42:47,435 passord? 894 00:42:47,435 --> 00:42:49,732 >> PUBLIKUM: Fordi de kunne tast inn hele ordboken 895 00:42:49,732 --> 00:42:50,690 inn i hash-funksjon. 896 00:42:50,690 --> 00:42:54,520 Og hvis passordet er en ordbok ord, [? de kan bare match--?] 897 00:42:54,520 --> 00:42:57,640 >> DAVID MALAN: Akkurat, motstanderen kan bare skrive kode, som noen av dere 898 00:42:57,640 --> 00:43:00,526 gjorde for [? Hacker?] 2, hvorved du iterere over 899 00:43:00,526 --> 00:43:03,400 alle ordene i ordlisten, eller alle mulige kombinasjoner av A 900 00:43:03,400 --> 00:43:06,610 gjennom Z og en gjennom nine-- som høres ut som mye, og det er. 901 00:43:06,610 --> 00:43:08,361 Men for en datamaskin, det er ganske darn fort. 902 00:43:08,361 --> 00:43:10,610 Og i virkeligheten var det punkt av [? Hacker 2,?] Var 903 00:43:10,610 --> 00:43:12,540 å ta ting som bokstavelig talt ser ut som dette, 904 00:43:12,540 --> 00:43:14,900 og omvendt utvikling hva det egentlig var. 905 00:43:14,900 --> 00:43:17,270 >> Så skal vi se på hvordan vi kan lagre denne mer effektivt. 906 00:43:17,270 --> 00:43:20,210 Slår ut, heldigvis i MySQL, det kommer til å være datatyper. 907 00:43:20,210 --> 00:43:22,800 Og en av de morsomme delene om database design, for å være ærlig, 908 00:43:22,800 --> 00:43:25,810 er faktisk bestemmer selv hvordan skal du representere dataene? 909 00:43:25,810 --> 00:43:29,630 Skulle du representerer et telefonnummer som en int, som et stort tall, eller en lang? 910 00:43:29,630 --> 00:43:31,630 Eller gjør du egentlig det som en sekvens av tegn? 911 00:43:31,630 --> 00:43:33,780 Og det kan være svært ikke-trivielle konsekvensene av dette. 912 00:43:33,780 --> 00:43:36,714 >> Faktisk er en av de tidligste, morsomme germane historier 913 00:43:36,714 --> 00:43:39,880 er når Mark Zuckerberg var å bygge Facebook, ble det opprinnelig skrevet på, 914 00:43:39,880 --> 00:43:42,300 og fortsatt er i stor grad skrevet i PHP. 915 00:43:42,300 --> 00:43:45,400 Og en av de største utfordringene de møtte tidlig ble skalering. 916 00:43:45,400 --> 00:43:48,820 Da de holdt legge skolen etter skole etter skolen, så vidt jeg vet, 917 00:43:48,820 --> 00:43:51,639 en av de opprinnelige oppløsninger var i hovedsak å kopiere og lime inn 918 00:43:51,639 --> 00:43:53,430 noen av databasene og noen av koden, 919 00:43:53,430 --> 00:43:55,346 slik at Harvard var som kjører på sin egen server, 920 00:43:55,346 --> 00:43:56,995 og MIT ble kjørt på sin egen server. 921 00:43:56,995 --> 00:43:59,120 Og dette var grunnen, for noen av dere som kanskje husker, 922 00:43:59,120 --> 00:44:01,510 du kunne ikke ha venner i andre nettverk. 923 00:44:01,510 --> 00:44:05,050 >> Du har sannsynligvis ikke har venner på MIT eller Harvard 10 eller så år siden, 924 00:44:05,050 --> 00:44:07,467 men du kan ikke span nettverk for delvis av den grunn. 925 00:44:07,467 --> 00:44:10,550 Og en av de største utfordringene for Mark og for selskaper som Facebook 926 00:44:10,550 --> 00:44:13,460 er faktisk håndtering av hundrevis og tusener og millioner 927 00:44:13,460 --> 00:44:14,460 forespørsler per sekund. 928 00:44:14,460 --> 00:44:16,501 Så de tingene vi vil starte snakker om denne uken 929 00:44:16,501 --> 00:44:19,860 er virkelig kommer til å være relevante for skrive god programvare, og populært 930 00:44:19,860 --> 00:44:23,040 vellykkede verktøy som kan håndtere mange brukere. 931 00:44:23,040 --> 00:44:25,460 >> Så vi skal snakke om ting som indeksering og søking, 932 00:44:25,460 --> 00:44:26,910 men det er det for i dag. 933 00:44:26,910 --> 00:44:28,780 Vi vil se deg for mer onsdag. 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: Du kan til det, og trekke fra det. 937 00:44:35,943 --> 00:44:38,859 Og du trenger ikke å feste med noen forhåndsbestemt mengde minne. 938 00:44:38,859 --> 00:44:40,580 Vel, hva er det som kommer til å bli kalt? 939 00:44:40,580 --> 00:44:42,369 >> SPEAKER 1: Vel, hva er det som skjer? 940 00:44:42,369 --> 00:44:43,535 SPEAKER 2: Hva mener du? 941 00:44:43,535 --> 00:44:44,451 Han gir en forelesning. 942 00:44:44,451 --> 00:44:47,650 DAVID MALAN: Og vi kan bruke en funksjon kalt malloc å memory-- 943 00:44:47,650 --> 00:44:50,050 >> SPEAKER 1: Hvorfor er ikke armene i bevegelse? 944 00:44:50,050 --> 00:44:52,450 >> SPEAKER 2: Vel that's-- du vet, det er normalt. 945 00:44:52,450 --> 00:44:57,162 Det er akkurat som han har bare store pølser henger der. 946 00:44:57,162 --> 00:44:59,040 >> SPEAKER 1: Det er normalt? 947 00:44:59,040 --> 00:45:03,096 >> SPEAKER 2: Ja, jeg tror vi bare anta at han ved et uhell 948 00:45:03,096 --> 00:45:06,840 erstattet sin deodorant med superlim. 949 00:45:06,840 --> 00:45:07,608