1 00:00:00,000 --> 00:00:02,916 2 00:00:02,916 --> 00:00:04,860 >> [Musik spiller] 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 starten på uge otte. 5 00:00:13,350 --> 00:00:17,510 Og vi er så glade for at byde velkommen tilbage, store overraskelse, CS50 egen Ramon 6 00:00:17,510 --> 00:00:22,160 Galvan, en stigende senior, der har været udgifter de sidste adskillige måneder 7 00:00:22,160 --> 00:00:26,190 siden juli i LA, i Hollywood, bogstaveligt talt arbejder på en helt ny tv 8 00:00:26,190 --> 00:00:31,930 show kaldet Colony, skaberen af ​​hvilke er faktisk en Harvard alun selv. 9 00:00:31,930 --> 00:00:36,610 Og så vi er meget spændte på at se denne debut på USA-netværket i januar. 10 00:00:36,610 --> 00:00:40,370 Så ophold tuned for det, og for mere Ramon for de kommende uger. 11 00:00:40,370 --> 00:00:42,550 >> Ved nu, at enden er nær. 12 00:00:42,550 --> 00:00:47,400 Og hvad dette betyder, at der ikke så meget tilbage af CS50, trist at sige. 13 00:00:47,400 --> 00:00:49,400 Vi har blot tre problem sæt left-- der er 14 00:00:49,400 --> 00:00:52,510 problem sæt six--, som er i dine hænder nu, eller snart vil være, 15 00:00:52,510 --> 00:00:56,080 senere på week-- er beregnet til at bygge bro vore verdener af kommandolinjen, hvor 16 00:00:56,080 --> 00:00:59,450 vi har brugt det meste af vores tid ved hjælp af C, og verden af ​​web-programmering. 17 00:00:59,450 --> 00:01:02,350 Nå, vil du se en masse ideer lånt fra kommandolinjen arbejde, 18 00:01:02,350 --> 00:01:04,560 men også en masse nye og interessante idéer 19 00:01:04,560 --> 00:01:07,929 , der også kommer til at være germane for mobile applikationer og til teknologi, 20 00:01:07,929 --> 00:01:10,470 mere generelt, som du fyre kender alle i dag 21 00:01:10,470 --> 00:01:12,090 på bærbare computere og telefoner og lignende. 22 00:01:12,090 --> 00:01:15,220 >> Så du implementere ikke en webside, eller en hjemmeside 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 af ​​en web-server skrevet i C, hvis formål i livet 25 00:01:21,590 --> 00:01:25,410 er at modtage HTTP-anmodninger, de virtuelle kuverter vi holder taler 26 00:01:25,410 --> 00:01:29,780 om, og faktisk reagere enten med nogle statiske content-- ligesom en prik HTML 27 00:01:29,780 --> 00:01:32,310 fil eller en prik JPEG eller enhver anden antal filer, 28 00:01:32,310 --> 00:01:37,070 eller endda en PHP-fil, hvor din web server kommer til at fortolke denne PHP 29 00:01:37,070 --> 00:01:38,332 kode og spytte ud resultaterne. 30 00:01:38,332 --> 00:01:40,540 Nu har vi givet dig ganske lidt af rammer 31 00:01:40,540 --> 00:01:43,100 for det-- faktisk fordeling kode til problemet 32 00:01:43,100 --> 00:01:47,496 sæt seks er over 1.000 linjer lang, en masse som er kommentarer, at være fair-- 33 00:01:47,496 --> 00:01:49,370 men dette er virkelig betød at være en mulighed 34 00:01:49,370 --> 00:01:52,570 at få dine hænder beskidte dykning ind i et temmelig stort projekt 35 00:01:52,570 --> 00:01:55,570 at vi har meget specifikt hugget ud stykker af for dig, 36 00:01:55,570 --> 00:01:59,046 så virkelig når du afslutter CS50 og indtaste den virkelige verden af ​​programmering 37 00:01:59,046 --> 00:02:00,920 og ønsker at fuske i vilkårligt antal projekter, 38 00:02:00,920 --> 00:02:03,253 har du meget større komfort downloade nogle kilde 39 00:02:03,253 --> 00:02:05,020 kode, nogle open source projekt på nettet, 40 00:02:05,020 --> 00:02:08,174 og dykning i og gøre ændringer, som du ønsker det. 41 00:02:08,174 --> 00:02:11,340 Problem sæt syv kommer til at handle om lave din egen web-baseret program 42 00:02:11,340 --> 00:02:14,140 der tager dynamisk input og producerer dynamisk output i form 43 00:02:14,140 --> 00:02:16,920 af et etrade.com-lignende website. 44 00:02:16,920 --> 00:02:20,800 Og problemet sæt otte vil fokusere på endnu et andet sprog er kendt som JavaScript. 45 00:02:20,800 --> 00:02:24,170 >> I mellemtiden er den endelige projekt er i horisonten. 46 00:02:24,170 --> 00:02:26,800 Den såkaldte pre-forslag skyldes en uge fra i dag. 47 00:02:26,800 --> 00:02:29,930 Pre-proposal-- pr specifikationen, som er på CS50 s website-- 48 00:02:29,930 --> 00:02:33,260 er en temmelig afslappet mulighed for dig at sende en temmelig kortfattet e-mail 49 00:02:33,260 --> 00:02:35,170 til din undervisning kollega bare at underrette ham 50 00:02:35,170 --> 00:02:38,250 eller hende om, hvad du tænker, at bruge ham eller hende som sparringspartner. 51 00:02:38,250 --> 00:02:40,980 Og har en tilregnelighed check-- uanset om du tænker 52 00:02:40,980 --> 00:02:43,210 om bide også meget eller måske for lidt, 53 00:02:43,210 --> 00:02:46,480 eller måske du har ingen idé overhovedet og ønsker at engagere sig i en samtale. 54 00:02:46,480 --> 00:02:48,480 >> Derefter er et forslag og statusrapport, 55 00:02:48,480 --> 00:02:51,860 den såkaldte CS50 hackathon her i Cambridge til Harvard og Yale-studerende 56 00:02:51,860 --> 00:02:52,362 ens. 57 00:02:52,362 --> 00:02:54,320 Det endelige projekts implementering er derfra. 58 00:02:54,320 --> 00:02:59,290 Og så en CS50 retfærdig her, i Cambridge, samt en anden i New Haven. 59 00:02:59,290 --> 00:03:02,500 Så forslaget, tage et kig på hjemmesiden for disse oplysninger. 60 00:03:02,500 --> 00:03:06,530 >> Men mere spændende, også er en mulighed for at få dine hænder beskidte, 61 00:03:06,530 --> 00:03:09,350 og jeres sind åbne for en hel bundt af emner og værktøjer 62 00:03:09,350 --> 00:03:12,920 og teknikker, der støtter til kurset kerne pensum, 63 00:03:12,920 --> 00:03:14,810 men ikke desto mindre forbundet. 64 00:03:14,810 --> 00:03:18,400 Og også vidunderlige trædesten til gør virkelig cool afsluttende projekter, 65 00:03:18,400 --> 00:03:22,020 går langt ud over materiale, vi har dækket formelt i problemer sætter eller foredrag. 66 00:03:22,020 --> 00:03:24,446 Så gå til CS50 hjemmeside for hele tjenesteliste af seminarer. 67 00:03:24,446 --> 00:03:26,070 Hvis du ikke registrerer endnu, det er fint. 68 00:03:26,070 --> 00:03:29,860 Gå videre og tilmelde dig stadig, og vi vil følge op med en live streaming link, 69 00:03:29,860 --> 00:03:31,844 dagen og tiden er på hjemmesiden. 70 00:03:31,844 --> 00:03:33,760 Og alt vil være registreres og lagt online 71 00:03:33,760 --> 00:03:35,800 hvis du ikke kan gøre bestemte dage og tidspunkter. 72 00:03:35,800 --> 00:03:39,380 >> Med hensyn til, hvad der ligger forude thereafter-- godt, selvfølgelig er der det CS50 hackathon. 73 00:03:39,380 --> 00:03:43,560 Dette foto, tilbagekaldelse, fra uge nul taget omkring 04:00 en aften i de forløbne år. 74 00:03:43,560 --> 00:03:46,900 Den CS50 fair, hvilket igen vil finde sted i begge byer. 75 00:03:46,900 --> 00:03:49,760 Og så bare at plante frø, selvom vi stadig 76 00:03:49,760 --> 00:03:54,080 har en måned plus tilbage af semester, hvis du gerne vil tilslutte CS50 egen undervisning 77 00:03:54,080 --> 00:03:56,770 personale, og du ønsker at starte tænker på at blive en CA, 78 00:03:56,770 --> 00:03:59,550 eller undervisning fyr, ved, at vi begynder at tale mere om det 79 00:03:59,550 --> 00:04:00,630 senere dette semester. 80 00:04:00,630 --> 00:04:03,470 Men afbilledet her de fleste af dette års hold. 81 00:04:03,470 --> 00:04:06,950 >> Og så, PHP-- og jeg var så ked af sidste uge, at [? Allyse?] Venligt 82 00:04:06,950 --> 00:04:09,370 gik til indsatsen for at få os disse vidunderlige rekvisitter 83 00:04:09,370 --> 00:04:11,720 at jeg ikke ender med at bruge, så det egentlig bare kiggede slags dum 84 00:04:11,720 --> 00:04:15,160 at vi havde en skovl sidder her alle dag sidste onsdag, og en lille ske. 85 00:04:15,160 --> 00:04:17,709 Men dette var min metaforisk måde at forsøge at male 86 00:04:17,709 --> 00:04:21,600 billedet af, hvorfor vi skifter fra C til et sprog som PHP. 87 00:04:21,600 --> 00:04:25,480 Og det samme kan siges om enhver antal languages-- Java, Python, Ruby 88 00:04:25,480 --> 00:04:31,270 eller klaser af others-- men mens der i C, for eksempel, at skrive et program i C 89 00:04:31,270 --> 00:04:34,050 typisk kan være ligesom tage en ske som denne 90 00:04:34,050 --> 00:04:36,770 og gravere et hul i jorden, i sandet eller snavs. 91 00:04:36,770 --> 00:04:39,770 PHP giver dig mulighed for at tage meget større bid ud af problemet, 92 00:04:39,770 --> 00:04:42,842 skrive langt mindre kode ved hjælp af en langt mindre værktøj, 93 00:04:42,842 --> 00:04:45,050 fordi der er så meget mere funktionalitet stykket i. 94 00:04:45,050 --> 00:04:47,633 >> Nu, hvis vi var virkelig dramatisk, vi ville have noget at skovle 95 00:04:47,633 --> 00:04:48,760 her, men så må det være. 96 00:04:48,760 --> 00:04:51,370 I mellemtiden, den anden metafor vi kom op med 97 00:04:51,370 --> 00:04:53,770 er selvfølgelig, kunne du bruge noget som en skruenøgle 98 00:04:53,770 --> 00:04:56,610 at hamre i noget lignende et søm. 99 00:04:56,610 --> 00:04:58,980 Men selvfølgelig, retten værktøj til brug går 100 00:04:58,980 --> 00:05:01,360 ikke at være så meget sprog kaldet C-- 101 00:05:01,360 --> 00:05:03,590 og nu har jeg bare irriteret [? Sanders?] Formentlig, 102 00:05:03,590 --> 00:05:07,890 Vi ordner det later-- så det rigtige værktøj til at bruge ofte 103 00:05:07,890 --> 00:05:09,640 kommer ikke til at være dette laveste niveau værktøj. 104 00:05:09,640 --> 00:05:13,720 Og ja, C er ikke et sprog, de fleste af jer nogensinde kommer til at bruge, 105 00:05:13,720 --> 00:05:15,590 eller skal nødvendigvis bruge igen. 106 00:05:15,590 --> 00:05:18,350 >> Og faktisk lidt secret-- den eneste gang 107 00:05:18,350 --> 00:05:23,160 Jeg bruger C selv er temmelig meget mellem September og december hvert efterår 108 00:05:23,160 --> 00:05:23,870 semester. 109 00:05:23,870 --> 00:05:25,790 Og det er, fordi vi bruge det som en mulighed 110 00:05:25,790 --> 00:05:27,852 at undervise de grundlæggende af programmeringen, 111 00:05:27,852 --> 00:05:29,810 og med det computer videnskab fundamentals, data 112 00:05:29,810 --> 00:05:32,435 strukturer, algoritmer og like-- men meget hurtigt vil du 113 00:05:32,435 --> 00:05:35,010 se nu, at syntaksen og de ideer, der ligger til grund C 114 00:05:35,010 --> 00:05:37,530 er så vidunderligt overføres til mere moderne 115 00:05:37,530 --> 00:05:41,130 højere sprog niveau, ligesom PHP og Python og Perl og Java 116 00:05:41,130 --> 00:05:46,750 og Objective-C-- faktisk ikke så meget Objective-C-- men Swift, disse nyere 117 00:05:46,750 --> 00:05:50,010 sprog, som mange af jer vil derefter fuske med dig afgangsprojekt. 118 00:05:50,010 --> 00:05:55,070 >> Så uden videre, lad os faktisk bruge PHP til at løse nogle problemer. 119 00:05:55,070 --> 00:06:00,230 Husk på, at tidligt, sidste uge, vi bare brugt CS50 IDE, 120 00:06:00,230 --> 00:06:02,990 Vi skrev en dinky lille program der bare sagde, "Hej verden". 121 00:06:02,990 --> 00:06:05,680 Og så er jeg gemte det i en fil kaldet hello.php. 122 00:06:05,680 --> 00:06:07,280 Og så løb jeg denne kommando. 123 00:06:07,280 --> 00:06:08,080 >> Og hvorfor? 124 00:06:08,080 --> 00:06:09,900 På engelsk, hvad der foregår her? 125 00:06:09,900 --> 00:06:12,760 Hvad var jeg gør, når Jeg løb denne kommando? 126 00:06:12,760 --> 00:06:13,405 >> Ja? 127 00:06:13,405 --> 00:06:16,572 >> PUBLIKUM: Der er nogle funktion PHP der læser hvad der in-- forstår det. 128 00:06:16,572 --> 00:06:19,696 DAVID MALAN: God, er der nogle funktion PHP-- og lad mig være mere specifik, 129 00:06:19,696 --> 00:06:21,810 der er et program kaldet PHP, alias 130 00:06:21,810 --> 00:06:25,872 En tolk, der forstår indholdet af hello.php, 131 00:06:25,872 --> 00:06:27,830 og fortolker det top til bund, venstre mod højre, 132 00:06:27,830 --> 00:06:29,590 og gør, hvad de kommandoer sige. 133 00:06:29,590 --> 00:06:33,320 Kommandoerne i hello.php naturligvis er bare kilde code-- funktioner 134 00:06:33,320 --> 00:06:35,750 og variabler og sløjfer og lignende, at vi selv 135 00:06:35,750 --> 00:06:37,460 er begyndt at skrive i PHP. 136 00:06:37,460 --> 00:06:40,240 >> Men i modsætning til C, som er en kompileret sprog, 137 00:06:40,240 --> 00:06:42,810 PHP du bare skrive det, og køre den. 138 00:06:42,810 --> 00:06:46,420 Du springe den mellemmand trin at omdanne det til nuller og ettaller, 139 00:06:46,420 --> 00:06:47,790 og derefter kører det. 140 00:06:47,790 --> 00:06:50,510 Og så hvad er en upside på dette? 141 00:06:50,510 --> 00:06:52,690 Hvorfor er vi springe skridt? 142 00:06:52,690 --> 00:06:55,238 Hvorfor gøre mere moderne sprog en tendens til at springe dette trin? 143 00:06:55,238 --> 00:06:58,880 144 00:06:58,880 --> 00:07:01,220 Hvad 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 ikke har skrevet meget PHP før, 147 00:07:04,200 --> 00:07:07,210 hvad der er gavnligt om ikke kompilere din kode tror du? 148 00:07:07,210 --> 00:07:08,520 Nej? 149 00:07:08,520 --> 00:07:09,610 Ikke begå? 150 00:07:09,610 --> 00:07:11,350 Skrabe dit hoved? 151 00:07:11,350 --> 00:07:12,614 Ja. 152 00:07:12,614 --> 00:07:13,600 >> PUBLIKUM: Mere dynamisk. 153 00:07:13,600 --> 00:07:14,683 >> DAVID MALAN: Mere dynamisk? 154 00:07:14,683 --> 00:07:16,032 Hvad mener du? 155 00:07:16,032 --> 00:07:17,000 >> PUBLIKUM: [uhørligt] 156 00:07:17,000 --> 00:07:20,349 157 00:07:20,349 --> 00:07:22,390 DAVID MALAN: OK, godt, så afhængigt af input, 158 00:07:22,390 --> 00:07:23,470 du behøver ikke at kompilere det hver gang. 159 00:07:23,470 --> 00:07:24,990 Og det er virkelig som simpelt som at-- hvad 160 00:07:24,990 --> 00:07:26,990 er pointen med at fortsætte at kompilere din kode? 161 00:07:26,990 --> 00:07:29,480 Dette er blot et skridt, der er making-- dette kræver, 162 00:07:29,480 --> 00:07:31,900 for de sidste mange uger, dobbelt så mange trin 163 00:07:31,900 --> 00:07:33,820 som bare kører dit program. 164 00:07:33,820 --> 00:07:36,940 Det har været nyttigt i at se, at du se nogle fejlmeddelelser og så videre, 165 00:07:36,940 --> 00:07:38,720 men det er stadig bare en irriterende skridt. 166 00:07:38,720 --> 00:07:41,810 >> Og så programmører realiseret over tid, hvorfor vi ikke 167 00:07:41,810 --> 00:07:45,327 begynde at skrive sprog, der ikke brug for, at forholdsvis mekanisk skridt, 168 00:07:45,327 --> 00:07:47,160 så kan bare skrive din kode og køre den. 169 00:07:47,160 --> 00:07:48,920 Men hvad var prisen at vi så vi betalte 170 00:07:48,920 --> 00:07:50,910 sidste uge, med et bestemt eksempel? 171 00:07:50,910 --> 00:07:51,650 Ja? 172 00:07:51,650 --> 00:07:52,370 >> Fart. 173 00:07:52,370 --> 00:07:54,690 Så [? hvad er?] tolke lidt langsommere, 174 00:07:54,690 --> 00:07:57,330 i at nuller og ettaller er flot og hurtigt for en computer 175 00:07:57,330 --> 00:08:00,070 at forstå, fordi Intel CPU, eller hvad det er, 176 00:08:00,070 --> 00:08:03,070 bare forstår, hvad der foregår med de nævnte mønstre af bits. 177 00:08:03,070 --> 00:08:05,370 Hvorimod en tolk er et program, der virkelig 178 00:08:05,370 --> 00:08:07,980 har til at læse Ascii kilde kode, som du har skrevet, 179 00:08:07,980 --> 00:08:12,700 og konvertere det, så at sige, eller regne ud, hvordan det konverterer sidste ende 180 00:08:12,700 --> 00:08:13,525 til nuller og ettaller. 181 00:08:13,525 --> 00:08:15,650 Så det tager bare lidt lidt af en præstation hit. 182 00:08:15,650 --> 00:08:16,858 Så det er lidt af en afvejning. 183 00:08:16,858 --> 00:08:21,570 Nu, hvis vi gør det herovre, lad mig gå videre og gøre et eksempel som følger. 184 00:08:21,570 --> 00:08:26,610 Hvis jeg går i her, ny fil, vil jeg at gemme denne gang er hello.php. 185 00:08:26,610 --> 00:08:31,450 Og nu jeg har tænkt mig at gå videre og sige, "print hello world" - 186 00:08:31,450 --> 00:08:35,130 og minde om, at jeg kan bruge print, det gør jeg ikke nødt til at bruge print-F. Og nu hernede, 187 00:08:35,130 --> 00:08:42,039 hvis jeg gør PHP af hello.php, huh-- jeg synes ikke at have fortolket det. 188 00:08:42,039 --> 00:08:43,412 Hvad har jeg gjort forkert? 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, du har brug for denne vinkel beslag op øverst. 191 00:08:47,015 --> 00:08:49,390 Så det er lidt irriterende, men du vænne sig til det hurtigt. 192 00:08:49,390 --> 00:08:53,500 Hvis jeg skal skrive PHP kode, jeg generelt behov for at fortælle programmet, 193 00:08:53,500 --> 00:08:56,950 eller fortælle tolken, hey PHP, her kommer nogle PHP-kode. 194 00:08:56,950 --> 00:09:00,440 Og så for god foranstaltning, ville jeg lukke dette ikke med dette, men snarere 195 00:09:00,440 --> 00:09:03,740 med blot spørgsmålstegn vinkel beslag, så der nu hernede, 196 00:09:03,740 --> 00:09:06,840 hvis jeg kører det igen, nu Jeg får det ønskede resultat. 197 00:09:06,840 --> 00:09:09,820 >> Lad os nu gøre en lille optimering, bare så du har set det før. 198 00:09:09,820 --> 00:09:14,040 Dette er slags irriterende, at jeg nødt til at køre PHP plads hello.php, 199 00:09:14,040 --> 00:09:16,060 fordi der i de sidste jeg kunne bare skrive dot skråstreg 200 00:09:16,060 --> 00:09:17,560 programnavn, som er form for nice. 201 00:09:17,560 --> 00:09:19,420 Det er form for en bedre brugeroplevelse. 202 00:09:19,420 --> 00:09:24,160 >> Så det viser sig, kan du gøre det i PHP med following-- I 203 00:09:24,160 --> 00:09:28,780 kan bruge denne temmelig kryptisk besværgelsesformular øverst her, 204 00:09:28,780 --> 00:09:31,740 der generelt kaldes en shebang, hvorved det er en skarp symbol, 205 00:09:31,740 --> 00:09:34,270 så at sige, det er et brag eller et udråbstegn. 206 00:09:34,270 --> 00:09:38,490 Og det nu er vejen til et program på en typisk Linux system, 207 00:09:38,490 --> 00:09:41,500 kaldes 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 siger, hey computer, find PHP tolk for mig i miljøet, 210 00:09:48,710 --> 00:09:50,610 finde det i din hukommelse, så at sige. 211 00:09:50,610 --> 00:09:54,130 >> Og hvad er rart nu, er at hvis jeg går ned her, 212 00:09:54,130 --> 00:09:57,750 Jeg kan gøre dot skråstreg hej dot php, eller-- hmm. 213 00:09:57,750 --> 00:09:59,000 Tilladelse nægtet. 214 00:09:59,000 --> 00:10:02,350 Nå, vil du se endnu mere af dette med problemet sæt syv, hvis du 215 00:10:02,350 --> 00:10:04,060 ikke allerede har, med tilladelser. 216 00:10:04,060 --> 00:10:06,510 Det viser sig, at jeg har brug for at udføre denne kommando 217 00:10:06,510 --> 00:10:10,779 hedder [? chamod?] for forandring mode-- et plus x hello.php. 218 00:10:10,779 --> 00:10:13,820 Jeg har brug for [uhørligt] denne ene ekstra skridt, som er at fortælle min computer, 219 00:10:13,820 --> 00:10:16,400 gøre hello.php eksekverbar. 220 00:10:16,400 --> 00:10:21,310 Og nu se, hvad der happens-- dot slash hello.php, det bare kører. 221 00:10:21,310 --> 00:10:23,310 Jeg behøver ikke at angive tolken længere. 222 00:10:23,310 --> 00:10:26,680 Og jeg kan gøre det endnu smukkere, stadig, hvis jeg omdøber denne ting. 223 00:10:26,680 --> 00:10:30,570 Hvis jeg flytter hello.php til blot Hello-- så mærke i øverste venstre, 224 00:10:30,570 --> 00:10:32,860 programmets navn er ja nu bare Hej. 225 00:10:32,860 --> 00:10:37,300 Nu kan jeg få det til at ligne et C-program, selvom det er skrevet i PHP-- 226 00:10:37,300 --> 00:10:39,210 eller helt ærligt vilkårligt antal af andre sprog. 227 00:10:39,210 --> 00:10:41,480 >> Så marginal forbedring, ingen funktionel forskel. 228 00:10:41,480 --> 00:10:44,460 Men det er bare en lille nysgerrighed nu, så du kan skrive programmer 229 00:10:44,460 --> 00:10:48,989 på alle sprog, og brugeren ikke nødt til at vide eller pleje, hvad de er. 230 00:10:48,989 --> 00:10:51,030 Nå, lad os se på en mere overbevisende eksempel nu 231 00:10:51,030 --> 00:10:52,850 at jeg pisket op på forhånd. 232 00:10:52,850 --> 00:10:54,955 Og dette kaldes quote.php. 233 00:10:54,955 --> 00:10:56,740 Og det er tilgængelig online. 234 00:10:56,740 --> 00:11:00,299 Og bemærk, at det er ret short-- men det er en kommandolinje program, der er 235 00:11:00,299 --> 00:11:02,840 kommer til at se op aktiekurser for mig er der faktisk går 236 00:11:02,840 --> 00:11:04,230 at være relevant for problemet indstille syv. 237 00:11:04,230 --> 00:11:05,396 >> Så lad os se, hvad jeg laver. 238 00:11:05,396 --> 00:11:08,640 På toppen I got åbent beslag spørgsmålstegn PHP. 239 00:11:08,640 --> 00:11:13,372 Så jeg har fået denne linje, hvorved jeg kræver en fil kaldet functions.php-- 240 00:11:13,372 --> 00:11:15,080 vi kommer til at se mere om dette i lidt, 241 00:11:15,080 --> 00:11:17,340 men dette er ligesom C'er version af skarpe omfatter, 242 00:11:17,340 --> 00:11:19,090 hvor du ønsker at gå omfatter en anden fil. 243 00:11:19,090 --> 00:11:23,720 PHP kalder det kræve, selvom det har også en include funktion. 244 00:11:23,720 --> 00:11:26,861 Og det viser sig, at function.php er bare noget jeg skrev før klassen. 245 00:11:26,861 --> 00:11:29,860 Jeg sætte det i samme mappe, fordi Jeg ønskede at faktor ud noget kode 246 00:11:29,860 --> 00:11:31,800 at vi måske ønsker at bruge andre steder. 247 00:11:31,800 --> 00:11:34,560 >> I mellemtiden kan du sandsynligvis udlede, hvad der foregår her. 248 00:11:34,560 --> 00:11:39,200 Dette er lidt anderledes fra C-- men hvad mener jeg med at sikre korrekt brug? 249 00:11:39,200 --> 00:11:41,180 Oversæt denne mere teknisk. 250 00:11:41,180 --> 00:11:45,950 Under hvilke omstændigheder er jeg holde op programmet, eller ud? 251 00:11:45,950 --> 00:11:47,074 Ja? 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 at kommandolinjeargumenter. 254 00:11:49,480 --> 00:11:52,396 Og husk, at en af ​​dem argumenter er programmets navn selv. 255 00:11:52,396 --> 00:11:55,340 Og det andet bliver et andet ord, jeg skriver efter prompten. 256 00:11:55,340 --> 00:11:57,460 Så ligesom C, dette er min måde at kontrollere, 257 00:11:57,460 --> 00:12:00,022 gjorde brugeren samarbejder og køre programmet som jeg hensigten? 258 00:12:00,022 --> 00:12:01,730 Nu er der noget lidt anderledes 259 00:12:01,730 --> 00:12:04,020 med C-- først og fremmest vi har denne dollartegn, 260 00:12:04,020 --> 00:12:07,710 og hvad der en dollar underskrive 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 all-- blot en variabel efterfulgt af hvad du vil faktisk kalde det. 263 00:12:11,731 --> 00:12:14,000 Læg mærke til at der er noget mangler fra min PHP-program, 264 00:12:14,000 --> 00:12:18,210 ligesom det manglede sidste uge, versus C, hvilket er hvad? 265 00:12:18,210 --> 00:12:21,620 >> A typer, men også noget andet. 266 00:12:21,620 --> 00:12:26,409 Der er ingen noget function-- hovedfunktion. 267 00:12:26,409 --> 00:12:27,450 Der er ingen vigtigste funktion. 268 00:12:27,450 --> 00:12:29,680 Du skal bare begynde at skrive din kode uden at have 269 00:12:29,680 --> 00:12:32,790 at bekymre sig om en temmelig vilkårlig konvention at navngive nogle standard 270 00:12:32,790 --> 00:12:33,880 funktion vigtigste. 271 00:12:33,880 --> 00:12:36,720 Så arg C er bare virkelig en global variabel 272 00:12:36,720 --> 00:12:39,049 at tolken stiller til rådighed for mig. 273 00:12:39,049 --> 00:12:40,090 Nu, dette er interessant. 274 00:12:40,090 --> 00:12:41,140 Så ser op kram. 275 00:12:41,140 --> 00:12:43,370 Dollar tegn bestanden er på venstre, det er min variabel. 276 00:12:43,370 --> 00:12:45,120 På højre side, Der er tilsyneladende 277 00:12:45,120 --> 00:12:50,270 en funktion i PHP kaldet opslag, der Jeg passerer min sidste kommandolinje 278 00:12:50,270 --> 00:12:51,902 argument at-- hvad ordet er. 279 00:12:51,902 --> 00:12:53,610 Og vi vil se, hvordan dette arbejder i et øjeblik. 280 00:12:53,610 --> 00:12:55,380 >> Og så til sidst jeg rapportere prisen. 281 00:12:55,380 --> 00:12:58,650 Jeg udskrivning ud en andel af sådan og sådan. 282 00:12:58,650 --> 00:13:02,082 Og husk, det er den måde PHP-- en måde PHP-- 283 00:13:02,082 --> 00:13:04,290 hvor du ikke behøver at gøre dollar tegnet S længere. 284 00:13:04,290 --> 00:13:06,782 Du kan bare bruge krøllede parenteser og tilslutte nogle variabel. 285 00:13:06,782 --> 00:13:09,240 Du behøver ikke at bekymre dig om ved hjælp printf på samme måde. 286 00:13:09,240 --> 00:13:13,530 >> Og som en sidebemærkning, når du sætter en variabel indersiden af ​​anførselstegn som dette, 287 00:13:13,530 --> 00:13:17,370 du bruger en fancy teknik såkaldte variable interpolation. 288 00:13:17,370 --> 00:13:20,380 Det betyder bare plug variablen i her. 289 00:13:20,380 --> 00:13:23,760 Og som en sidebemærkning, nogle af jer, der kommer fra andre programmeringssprog baggrunde, 290 00:13:23,760 --> 00:13:26,960 du må ikke bruge enkelte anførselstegn omkring strenge at gøre dette. 291 00:13:26,960 --> 00:13:30,290 Du skal bruge dobbelte anførselstegn til variabel interpolation til at arbejde. 292 00:13:30,290 --> 00:13:32,740 Ellers vil du bogstaveligt talt se disse krøllede parenteser. 293 00:13:32,740 --> 00:13:34,500 >> Så endelig, lad os gå videre og køre dette. 294 00:13:34,500 --> 00:13:36,690 Lad mig gøre min terminal lidt større. 295 00:13:36,690 --> 00:13:41,940 Lad mig gå videre og køre indersiden af ​​mit citat mappe. 296 00:13:41,940 --> 00:13:46,950 [? CDsource?] [? AM?] [? citat?] PHP citat dot PHP, 297 00:13:46,950 --> 00:13:50,290 og jeg har tænkt mig at søge efter noget Ligesom GOOG, som er dens ticker symbol, 298 00:13:50,290 --> 00:13:55,510 og en andel af sit nye navn, Alfabet Inc, koster $ 717 i dag. 299 00:13:55,510 --> 00:13:58,680 Okay, hvis vi ønsker at køre dette igen, nogen 300 00:13:58,680 --> 00:14:02,600 har en anden bestand ticker de ønsker at slå op? 301 00:14:02,600 --> 00:14:06,770 >> Microsoft jeg synes er denne ene, MSFT-- 53 $. 302 00:14:06,770 --> 00:14:09,720 Jeg tror Yahoo er måske det. 303 00:14:09,720 --> 00:14:12,130 Og Facebook er det. 304 00:14:12,130 --> 00:14:13,740 >> Så hvad er dette program gør? 305 00:14:13,740 --> 00:14:16,306 Det magiske synes at være indlejret i denne lookup funktion. 306 00:14:16,306 --> 00:14:17,430 Så lad os tage et hurtigt kig. 307 00:14:17,430 --> 00:14:21,815 >> Det viser sig, at der ikke kommer med PHP, det er i functions.php. 308 00:14:21,815 --> 00:14:23,690 Og vi vil ikke gå igennem dette i stor detalje, 309 00:14:23,690 --> 00:14:28,040 men bemærke den udløsende ord her er at der på linje seks af functions.php-- 310 00:14:28,040 --> 00:14:29,440 Jeg bogstaveligt sige funktion. 311 00:14:29,440 --> 00:14:31,050 Jeg angive navnet på min funktion. 312 00:14:31,050 --> 00:14:34,330 Jeg derefter angive nogen argumenter, eller parametre, 313 00:14:34,330 --> 00:14:36,480 Jeg vil have denne funktion til at take-- ingen typer. 314 00:14:36,480 --> 00:14:37,580 Og så er jeg gennemføre den. 315 00:14:37,580 --> 00:14:39,240 >> Og jeg vil vinke min hånd ved gennemførelsen, 316 00:14:39,240 --> 00:14:42,115 da det er temmelig avanceret ret nu, men vi vil se det igen faktisk 317 00:14:42,115 --> 00:14:44,700 i en uge i problemer sæt syv. 318 00:14:44,700 --> 00:14:47,490 Men jeg kan rense det op, også. 319 00:14:47,490 --> 00:14:49,590 Jeg har også inkluderet i dagens kode en version 320 00:14:49,590 --> 00:14:52,340 af tilbud, som ikke har nogen prik PHP-fil. 321 00:14:52,340 --> 00:14:57,270 Fordi det er formentlig på toppen af ​​program kaldet blot citere? 322 00:14:57,270 --> 00:15:00,140 Det såkaldte shebang-- den temmelig kryptisk besværgelse 323 00:15:00,140 --> 00:15:04,590 der siger finde PHP og derefter køre det på min kode her. 324 00:15:04,590 --> 00:15:07,360 >> Okay, så der bringer os til hvor vi slap 325 00:15:07,360 --> 00:15:09,560 sidste time-- omend med nogle mere avancerede eksempler. 326 00:15:09,560 --> 00:15:13,980 Eventuelle spørgsmål hidtil om PHP eller hvad vi laver? 327 00:15:13,980 --> 00:15:15,570 No-- okay. 328 00:15:15,570 --> 00:15:16,180 Ja? 329 00:15:16,180 --> 00:15:19,610 >> PUBLIKUM: Inde i HTML-filer, gør du-- 330 00:15:19,610 --> 00:15:22,226 [? gør du ?] [? bare kalde det?] en [uhørligt] PHP-fil? 331 00:15:22,226 --> 00:15:23,350 DAVID MALAN: Godt spørgsmål. 332 00:15:23,350 --> 00:15:26,070 I en web sammenhæng, hvilket vi er bogstaveligt om at overgangen til, 333 00:15:26,070 --> 00:15:28,028 du ikke bruger den såkaldte shebang foroven, 334 00:15:28,028 --> 00:15:31,980 fordi web server-- ofte program kaldet Apache eller Microsoft 335 00:15:31,980 --> 00:15:37,470 IIS, Internet Information Server, eller en række andre webserversoftware, 336 00:15:37,470 --> 00:15:40,636 ved, at når det ser en prik PHP-fil, at det 337 00:15:40,636 --> 00:15:42,010 skal køre fortolkeren på det. 338 00:15:42,010 --> 00:15:43,468 Det ser ikke ud på den første linje. 339 00:15:43,468 --> 00:15:45,580 Så denne første linje trick er bare, når du er 340 00:15:45,580 --> 00:15:48,330 skriver kommandolinjen programs-- som vi vil ikke gøre super ofte, 341 00:15:48,330 --> 00:15:52,510 men det er vores måde at bygge bro vores C-eksempler for nu vores PHP. 342 00:15:52,510 --> 00:16:00,680 >> Så lad os faktisk bygge bro over denne verden fra kommandolinjen verden til internettet 343 00:16:00,680 --> 00:16:02,230 ved at gøre følgende. 344 00:16:02,230 --> 00:16:05,090 Lad mig gå videre og trække over her for et øjeblik. 345 00:16:05,090 --> 00:16:09,940 Så hvis vi har en web-server, eller rettere hvis vi har min laptop herovre, 346 00:16:09,940 --> 00:16:11,280 som jeg vil trække på denne måde. 347 00:16:11,280 --> 00:16:14,250 Og her har vi den internettet i en eller anden form. 348 00:16:14,250 --> 00:16:18,210 Og derefter over her, vi har en server i et building-- 349 00:16:18,210 --> 00:16:20,760 dette er, hvordan internettet works-- og her 350 00:16:20,760 --> 00:16:23,120 er en server med nogle lys måske. 351 00:16:23,120 --> 00:16:27,530 Hvad er egentlig foregår mellem disse to forbindelser? 352 00:16:27,530 --> 00:16:29,240 >> Så i denne bygning er en web-server. 353 00:16:29,240 --> 00:16:31,420 Det er bare en computer der kører nogle operativsystem 354 00:16:31,420 --> 00:16:34,561 system-- måske den gratis software kaldet Apache, som CS50 IDE kører. 355 00:16:34,561 --> 00:16:36,310 Så du kan faktisk tænk på denne bygning 356 00:16:36,310 --> 00:16:38,579 som værende bygning i som CSt0 IDE er gemt. 357 00:16:38,579 --> 00:16:40,870 Det er, hvor alle har konti, hvor alle jer 358 00:16:40,870 --> 00:16:43,130 har din egen webserver kører, alle jer 359 00:16:43,130 --> 00:16:45,730 har dine egne unikke URL'er, som vi begyndte at diskutere, 360 00:16:45,730 --> 00:16:47,280 og du vil se mere i P. sæt seks. 361 00:16:47,280 --> 00:16:49,450 >> Her er min laptop eller andet sted steder på internettet. 362 00:16:49,450 --> 00:16:54,550 Og så når jeg besøger en webadresse, der tilhører for mig, er, at internettrafik går 363 00:16:54,550 --> 00:16:58,360 over til serveren, serverens modtager HTTP request-- 364 00:16:58,360 --> 00:17:02,900 ligesom en få index.html, og det er besvarelse af denne webside. 365 00:17:02,900 --> 00:17:04,280 Så det er den generelle paradigme. 366 00:17:04,280 --> 00:17:07,089 Hvorimod alt op hidtil dag, alt 367 00:17:07,089 --> 00:17:09,660 blev kun sker i rammerne af denne bygning. 368 00:17:09,660 --> 00:17:12,910 Jeg bruger min bærbare computer, men Jeg var tilsluttet CS50 IDE, 369 00:17:12,910 --> 00:17:17,369 så alle disse programmer, jeg kørte var inde i serveren, selv. 370 00:17:17,369 --> 00:17:22,660 >> Men nu, lad os starte genbruge PHP at skrive nogle faktiske programmer, 371 00:17:22,660 --> 00:17:24,230 er tjent op af en webserver. 372 00:17:24,230 --> 00:17:30,320 Og for at gøre dette, vil jeg gå ind i en hel masse eksempler 373 00:17:30,320 --> 00:17:33,710 at indføre denne idé her. 374 00:17:33,710 --> 00:17:38,500 Så dette er lidt af en fancy måde beskriver en programmeringsparadigme. 375 00:17:38,500 --> 00:17:41,540 >> Og i virkeligheden, som du afslutter CS50 eller arbejde på afgangsprojekter, 376 00:17:41,540 --> 00:17:43,520 eller tage nogle følger på klassen, vil du begynde 377 00:17:43,520 --> 00:17:45,740 at se, at verden- især have vokset op 378 00:17:45,740 --> 00:17:48,300 med sprog som C som er super lav level-- 379 00:17:48,300 --> 00:17:51,290 indse, at der er bedre måder at skrive software. 380 00:17:51,290 --> 00:17:53,290 Der er visse mønstre, du kan følge, 381 00:17:53,290 --> 00:17:57,640 visse måder at organisere dine filer og måder at navngive dine funktioner, 382 00:17:57,640 --> 00:18:00,300 så lang historie kort, Verden er kommet op 383 00:18:00,300 --> 00:18:04,340 med en hel masse akronymer og navne for måder at programmeringen. 384 00:18:04,340 --> 00:18:06,260 Disse er blot teknikker, du kan bruge. 385 00:18:06,260 --> 00:18:09,660 >> Og en af ​​dem kaldes MVC, til Model View Controller. 386 00:18:09,660 --> 00:18:12,270 Og det er netop, for nu, en alt for kompliceret 387 00:18:12,270 --> 00:18:18,960 måde at sige, hvordan du skal lægge ud en PHP-baseret websted, i vores tilfælde. 388 00:18:18,960 --> 00:18:22,140 Hvordan organisere dine filer, hvordan kan du organisere din logik, 389 00:18:22,140 --> 00:18:26,220 på en måde, der gør det lettere at skrive mere komplicerede hjemmesider? 390 00:18:26,220 --> 00:18:28,550 Og ja, vil vi hurtigt komme der med p-sæt syv. 391 00:18:28,550 --> 00:18:32,020 >> Så i verden af ​​MVC, er du nødt at se, at vores kode kan generelt 392 00:18:32,020 --> 00:18:38,290 karakteriseres som enten model kode, eller controller kode, eller visning kode. 393 00:18:38,290 --> 00:18:40,200 Og jeg har tænkt mig at forsimpler det som follows-- 394 00:18:40,200 --> 00:18:42,074 regulatoren er hjerner af dit program, 395 00:18:42,074 --> 00:18:44,100 det er, hvor alle de interessant logik sker. 396 00:18:44,100 --> 00:18:46,110 Så alt, hvad vi har været skriver hidtil i klassen, 397 00:18:46,110 --> 00:18:48,210 er lidt ligesom controller code-- det kontrollerende 398 00:18:48,210 --> 00:18:50,585 dit program, dine loops, din betingelser, dine funktioner 399 00:18:50,585 --> 00:18:52,100 og variabler og alt det der. 400 00:18:52,100 --> 00:18:56,160 >> Synspunkter, nu kommer til at være lidt mere indlysende i verden af ​​internettet. 401 00:18:56,160 --> 00:18:59,360 En visning er æstetik af din hjemmeside. 402 00:18:59,360 --> 00:19:04,080 Det er, hvad brugeren sees-- billederne, HTML tabeller, HTML-tags, og alle 403 00:19:04,080 --> 00:19:08,220 af, at alle de fluffy æstetiske ting, der er ikke så svært at skrive, 404 00:19:08,220 --> 00:19:11,380 men er lige hvad du genererer, er den såkaldte opfattelse æstetik. 405 00:19:11,380 --> 00:19:13,880 Og model, i sidste ende, vil at være database stuff-- som 406 00:19:13,880 --> 00:19:16,510 vi starter dykning i alle jo mere denne onsdag. 407 00:19:16,510 --> 00:19:19,740 Så controller er logikken, visning er det æstetiske ting, 408 00:19:19,740 --> 00:19:23,500 og model vil være, hvor vi gemme vores faktiske data. 409 00:19:23,500 --> 00:19:26,410 >> Så lad os se på dette mere konkret med følgende eksempel. 410 00:19:26,410 --> 00:19:34,700 Jeg har tænkt mig at gå ind i min mappe her dagens kilde code-- som alle 411 00:19:34,700 --> 00:19:35,770 er tilgængelig online. 412 00:19:35,770 --> 00:19:37,800 Og jeg har tænkt mig at gå ind i versionen nul. 413 00:19:37,800 --> 00:19:41,500 Og her is-- lad os kalde det det udgave nul af CS50 hjemmeside. 414 00:19:41,500 --> 00:19:43,010 Der er ikke meget her overhovedet. 415 00:19:43,010 --> 00:19:46,810 Det er en meget simpel webside, der er sandsynligvis ved hjælp af hvad HTML tags-- bare 416 00:19:46,810 --> 00:19:48,970 gætte fra tidligere eksempler? 417 00:19:48,970 --> 00:19:49,890 >> Hvad er det? 418 00:19:49,890 --> 00:19:53,920 H1-- sandsynligvis for at store fed titel, at logoet op øverst, CS50. 419 00:19:53,920 --> 00:19:55,080 Og hvad der ellers er på spil? 420 00:19:55,080 --> 00:19:55,799 Ja? 421 00:19:55,799 --> 00:19:56,840 PUBLIKUM: uordnet liste. 422 00:19:56,840 --> 00:19:59,990 DAVID MALAN: Uordnet list-- så UL-tag og måske et par LI tags. 423 00:19:59,990 --> 00:20:01,840 Og hvis du ikke kan huske disse, det ærligt er ligegyldigt. 424 00:20:01,840 --> 00:20:04,170 Disse er fluffy slags oplysninger om HTML implementering 425 00:20:04,170 --> 00:20:06,378 at du hurtigt slå op og du er tilbage på din måde. 426 00:20:06,378 --> 00:20:10,040 Vi vil fokusere mere på programmeringen ideer, der er de juicier stykker. 427 00:20:10,040 --> 00:20:12,890 >> Så lad os bare tage et hurtigt se på HTML-- og faktisk 428 00:20:12,890 --> 00:20:16,880 hvis jeg åbner visningen kilde her, yup, Det er præcis, hvad der foregår her. 429 00:20:16,880 --> 00:20:18,440 Der er en UL-tag. 430 00:20:18,440 --> 00:20:20,630 Indlejret inde i det er at LI tags. 431 00:20:20,630 --> 00:20:24,470 Og så har jeg lånt URL af den faktiske pensum her. 432 00:20:24,470 --> 00:20:27,570 >> Og derefter i den lectures.php er tilsyneladende 433 00:20:27,570 --> 00:20:31,640 anden dynamisk genereret side der kommer til at have, lad os see-- ah, 434 00:20:31,640 --> 00:20:33,170 de første to uger af forelæsning. 435 00:20:33,170 --> 00:20:36,600 Så uge nul og uge en, lad os se på denne-- hvis jeg se side kilde, 436 00:20:36,600 --> 00:20:38,120 også super enkel. 437 00:20:38,120 --> 00:20:42,430 Disse fører til to sider kaldet week0.php, og week1.php. 438 00:20:42,430 --> 00:20:44,040 Så overveje nu, hvad der sker. 439 00:20:44,040 --> 00:20:50,630 >> Når jeg klikker på week0.php, min laptop gør en anmodning om week0.php. 440 00:20:50,630 --> 00:20:53,700 441 00:20:53,700 --> 00:20:58,110 Webserveren, alias, CS50 IDE, modtager den virtuelle kuvert. 442 00:20:58,110 --> 00:21:01,040 Det er at se en besked lignende, får week0.php. 443 00:21:01,040 --> 00:21:05,060 Det er derefter fortolkes filen, top til bund, venstre til right-- filen 444 00:21:05,060 --> 00:21:07,720 kaldet week0.php-- og spytte ud resultaterne. 445 00:21:07,720 --> 00:21:10,510 Så inde i denne fil, week0.php, skal være 446 00:21:10,510 --> 00:21:15,410 controlleren logik, der genererer denne HTML, og vi vil snart se det. 447 00:21:15,410 --> 00:21:19,340 >> Men for nu, lad mig klikker på uge nul, og nu har vi onsdag og fredag, 448 00:21:19,340 --> 00:21:25,260 og nu har vi dias langsomt fra uge nul. 449 00:21:25,260 --> 00:21:27,400 Og du måske husker dette fra vej tilbage, når. 450 00:21:27,400 --> 00:21:29,340 Så det er alt dette website gør. 451 00:21:29,340 --> 00:21:31,120 >> Så lad os overveje, hvordan den gør dette. 452 00:21:31,120 --> 00:21:34,290 Jeg har tænkt mig at gå tilbage til kildekoden her, i CS50 IDE, 453 00:21:34,290 --> 00:21:36,660 og jeg har tænkt mig at åbne op index.php. 454 00:21:36,660 --> 00:21:38,910 På toppen af ​​denne fil er en flok kommentarer. 455 00:21:38,910 --> 00:21:43,000 Og derefter i midten af ​​denne fil, det viser sig, er overhovedet ingen PHP-kode. 456 00:21:43,000 --> 00:21:47,380 For hvis du ikke har nogen af ​​de åbent beslag spørgsmålstegn PHP tags, 457 00:21:47,380 --> 00:21:49,180 du er velkommen til at bare sætte HTML. 458 00:21:49,180 --> 00:21:51,480 >> For hvad PHP tolk er meningen at gøre, 459 00:21:51,480 --> 00:21:53,938 er, når den læser denne file-- top til bund, venstre til right-- 460 00:21:53,938 --> 00:21:59,100 den kun fortolker kode det ser mellem disse vinkelparenteser spørgsmålstegn. 461 00:21:59,100 --> 00:22:02,380 Og alt andet, det ikke anerkender som PHP, det bare spytter. 462 00:22:02,380 --> 00:22:05,080 Og HTML er blandt de ting det vil bare spytte ud. 463 00:22:05,080 --> 00:22:09,090 >> Så denne fil kunne have blevet kaldt index.html, 464 00:22:09,090 --> 00:22:11,690 men jeg navngivning alt dot PHP som et springbræt. 465 00:22:11,690 --> 00:22:15,960 Lectures.php-- tilsvarende underwhelming, det er bare nogle HTML. 466 00:22:15,960 --> 00:22:19,840 Week0.php, tilsvarende blot nogle HTML. 467 00:22:19,840 --> 00:22:22,300 >> Men lad os nu sætte på legendariske ingeniør hat, 468 00:22:22,300 --> 00:22:24,400 og overveje, hvordan vi kan forbedre denne. 469 00:22:24,400 --> 00:22:28,541 Det er ikke svært at gøre dette, men jeg slags af uddelegeret i kopiere og indsætte. 470 00:22:28,541 --> 00:22:31,540 Og i virkeligheden, hvis jeg laver uge to, du ved, hvad jeg sandsynligvis kommer til at gøre? 471 00:22:31,540 --> 00:22:34,940 Jeg har tænkt mig at gå til week1.php, jeg er kommer til at fremhæve alt. 472 00:22:34,940 --> 00:22:39,110 Jeg har tænkt mig at kopiere det, indsætte det i en ny fil kaldet week2.php, 473 00:22:39,110 --> 00:22:42,440 nappe nogle webadresser, og være på min vej. 474 00:22:42,440 --> 00:22:45,240 >> Så baseret på, hvad vi har ses i C allerede 475 00:22:45,240 --> 00:22:46,860 dette ikke føles rigtigt, forhåbentlig. 476 00:22:46,860 --> 00:22:49,610 Kopiere, indsætte sjældent den rigtige løsning. 477 00:22:49,610 --> 00:22:51,429 Så hvad kan vi starte at gøre for at forbedre dette? 478 00:22:51,429 --> 00:22:53,345 Hvor er de muligheder for bedre design? 479 00:22:53,345 --> 00:22:56,890 480 00:22:56,890 --> 00:22:58,760 >> Ved den tid, jeg kommer til at uge otte, går det 481 00:22:58,760 --> 00:23:00,910 at være virkelig irriterende hvis jeg ønsker at ændre 482 00:23:00,910 --> 00:23:03,930 skrifttypen af ​​hver eneste af mine sider, eller hvis jeg ønsker 483 00:23:03,930 --> 00:23:06,522 at ændre strukturen af ​​layoutet. 484 00:23:06,522 --> 00:23:08,396 Så hvor er mulighed for bedre design? 485 00:23:08,396 --> 00:23:11,990 486 00:23:11,990 --> 00:23:15,160 Nå, lad os overveje, hvad der er deles på tværs af alle disse filer. 487 00:23:15,160 --> 00:23:21,696 >> Her er uge én, her er uge nul, her er lectures.php, 488 00:23:21,696 --> 00:23:25,790 her er index.php-- hvad der er den samme, og hvad der er anderledes, groft sagt, 489 00:23:25,790 --> 00:23:26,760 i hvert af disse filer? 490 00:23:26,760 --> 00:23:30,560 491 00:23:30,560 --> 00:23:32,060 Ja? 492 00:23:32,060 --> 00:23:34,560 >> PUBLIKUM: [uhørligt] 493 00:23:34,560 --> 00:23:41,244 494 00:23:41,244 --> 00:23:42,160 DAVID MALAN: OK, godt. 495 00:23:42,160 --> 00:23:46,115 Så der er et mønster, helt sikkert, hvorved hver gang jeg vælger forelæsning I, 496 00:23:46,115 --> 00:23:48,250 Jeg skal generere en meget ens udseende side. 497 00:23:48,250 --> 00:23:50,375 Og så måske jeg kan udnytte det faktum, at virkelig, 498 00:23:50,375 --> 00:23:53,060 vi bevidst numerisk indekseret vores lectures-- 499 00:23:53,060 --> 00:23:55,290 hvis jeg kan sætte endnu mere ord i dit svar. 500 00:23:55,290 --> 00:23:59,984 Og hvad er det eneste, virkelig, der er skift mellem uge en-- 501 00:23:59,984 --> 00:24:02,400 og lad mig rulle ned, så det er nogenlunde i samme sted-- 502 00:24:02,400 --> 00:24:05,480 så her er uge nul, nogenlunde på toppen. 503 00:24:05,480 --> 00:24:12,370 Her er uge en, uge nul, én uge, uge ​​nul. 504 00:24:12,370 --> 00:24:14,370 OK, bogstaveligt talt, hvis du kender nogen program, 505 00:24:14,370 --> 00:24:16,286 dette er nu ligesom en mønster matchende spil. 506 00:24:16,286 --> 00:24:17,200 Så hvad er anderledes? 507 00:24:17,200 --> 00:24:18,765 Ja? 508 00:24:18,765 --> 00:24:19,777 >> PUBLIKUM: [uhørligt] 509 00:24:19,777 --> 00:24:22,360 DAVID MALAN: Godt, så titlen ændrer sig, nogensinde så lidt. 510 00:24:22,360 --> 00:24:24,010 Zero kommer naturligvis til én. 511 00:24:24,010 --> 00:24:25,570 Samme ting der sker i H1 tag. 512 00:24:25,570 --> 00:24:28,790 Og vi ved ikke helt se det som let, fordi de webadresser er lidt lang. 513 00:24:28,790 --> 00:24:30,670 Men disse URL'er er lidt forandring. 514 00:24:30,670 --> 00:24:34,490 >> Men hvad der ikke ændrer sig, tør jeg sige, det meste af indholdet af page-- 515 00:24:34,490 --> 00:24:38,530 HTML-tag er det samme, hovedet er den samme, titlen er næsten den samme, 516 00:24:38,530 --> 00:24:40,659 kroppen er den samme, og næsten alt andet 517 00:24:40,659 --> 00:24:42,450 er det samme bortset fra de små tweaks. 518 00:24:42,450 --> 00:24:45,310 Så hvordan kan vi gå om factoring noget af det ud? 519 00:24:45,310 --> 00:24:48,740 >> Jamen så lad mig foreslå præcis at der i den næste version. 520 00:24:48,740 --> 00:24:53,890 Så her i version en, jeg har nøjagtig samme filer, plus et par andre. 521 00:24:53,890 --> 00:24:59,730 Her er index.php-- og selv om du aldrig har set PHP før, 522 00:24:59,730 --> 00:25:05,511 hvad gør jeg nok for at løse dette problem-- baseret på, hvad du ser her? 523 00:25:05,511 --> 00:25:11,300 524 00:25:11,300 --> 00:25:12,760 Ja, er, at en lille engagement? 525 00:25:12,760 --> 00:25:13,450 Nej? 526 00:25:13,450 --> 00:25:16,020 Ja, gå videre. 527 00:25:16,020 --> 00:25:17,380 >> PUBLIKUM: [uhørligt] 528 00:25:17,380 --> 00:25:18,380 >> DAVID MALAN: Yep. 529 00:25:18,380 --> 00:25:20,380 >> PUBLIKUM: [uhørligt] 530 00:25:20,380 --> 00:25:26,090 531 00:25:26,090 --> 00:25:28,669 >> DAVID MALAN: Jeg har brug for dig til tale lidt højere. 532 00:25:28,669 --> 00:25:31,084 >> PUBLIKUM: [uhørligt] 533 00:25:31,084 --> 00:25:35,744 534 00:25:35,744 --> 00:25:36,660 DAVID MALAN: OK, godt. 535 00:25:36,660 --> 00:25:38,620 Og jeg tror-- det var svært at høre du-- men jeg 536 00:25:38,620 --> 00:25:42,690 tror hvad du får på, er, at tags, der var fælles op toppen, 537 00:25:42,690 --> 00:25:47,710 og tags, som var almindeligt på den bunden, er nu blevet indregnet ud, 538 00:25:47,710 --> 00:25:51,140 eller forvist til hvilke filer? 539 00:25:51,140 --> 00:25:53,476 Header.php og footer.php-- og vi vil 540 00:25:53,476 --> 00:25:55,600 at foretage nogle tweaks til imødegå den bekymring, du bare 541 00:25:55,600 --> 00:25:59,370 rejst om tallene skiftende, for eksempel, hvis jeg hørte dig korrekt. 542 00:25:59,370 --> 00:26:02,060 >> Men der synes at være kernen i det. 543 00:26:02,060 --> 00:26:04,820 Hvis der var en enorm mængde af redundans på toppen af ​​siden, 544 00:26:04,820 --> 00:26:06,736 og en enorm mængde af redundans i bunden, 545 00:26:06,736 --> 00:26:09,280 lad os bogstaveligt talt bare højdepunkt og skæres indholdet ud, 546 00:26:09,280 --> 00:26:13,270 sætte det i en separat file-- ligesom tanken om CSS, hvor vi indregnes ud 547 00:26:13,270 --> 00:26:16,710 meget lignende æstetik, sætte den i et separat dot PHP-fil, 548 00:26:16,710 --> 00:26:20,340 bruge kræver mechanism-- som er ligesom C skarpe include-- som 549 00:26:20,340 --> 00:26:23,570 er hovedsagelig som at sige gå fat i indholdet af header.php, 550 00:26:23,570 --> 00:26:25,370 og kopiere og indsætte dem her. 551 00:26:25,370 --> 00:26:29,490 >> Men hvad det betyder er, at nu i index.php, jeg har disse to linjer. 552 00:26:29,490 --> 00:26:32,130 I lectures.php, jeg også har disse to linjer. 553 00:26:32,130 --> 00:26:35,230 I week0.php, jeg også har disse to linjer. 554 00:26:35,230 --> 00:26:38,380 >> Så nu, hvis jeg ønsker at ændre titlen på alle mine sider, 555 00:26:38,380 --> 00:26:40,530 eller jeg ønsker at ændre grundlæggende struktur, 556 00:26:40,530 --> 00:26:44,380 Jeg kan ændre det nu på bare ét sted, eller to places-- sidehoved og sidefod, 557 00:26:44,380 --> 00:26:45,429 henholdsvis. 558 00:26:45,429 --> 00:26:47,970 Nu koden er begyndt at se lidt mere kryptisk, ikke? 559 00:26:47,970 --> 00:26:53,590 Men hvis du tænker over hvad siden er doing-- hvis jeg anmoder week0.php, 560 00:26:53,590 --> 00:26:59,880 ligesom på tegningen løbet her-- når week0.php der anmodes, 561 00:26:59,880 --> 00:27:00,960 hvad betyder det? 562 00:27:00,960 --> 00:27:04,410 >> Bogstaveligt, denne fil er anmodet af browseren. 563 00:27:04,410 --> 00:27:06,240 Den web server-- alias 564 00:27:06,240 --> 00:27:09,250 CS50 ID- griber dette fil, week0.php, og læser 565 00:27:09,250 --> 00:27:10,780 det top til bund, venstre til højre. 566 00:27:10,780 --> 00:27:15,400 På linje én, er det straks møder åbent beslag spørgsmålstegn PHP, kræver 567 00:27:15,400 --> 00:27:17,872 header dot PHP, og så hvad PHP fortolkeren 568 00:27:17,872 --> 00:27:20,580 does-- der er indbygget i nettet server, fordi vi prækonfigurerede 569 00:27:20,580 --> 00:27:24,580 det for du-- det automatisk går i header.php, kopierer indhold, 570 00:27:24,580 --> 00:27:25,640 indsætter dem her. 571 00:27:25,640 --> 00:27:28,790 >> Men så tolk møder spørgsmålstegn tæt beslag, 572 00:27:28,790 --> 00:27:30,320 så det hele foregår tænkning. 573 00:27:30,320 --> 00:27:33,400 Nu er det bare blindt spytter ud linier to gennem 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 Får til linie otte, og gør, at samme magi igen-- åbne filen, 576 00:27:38,470 --> 00:27:41,460 sensationsprægede indhold, og kræver dem eller indsætte dem 577 00:27:41,460 --> 00:27:42,480 ret dengang eller der. 578 00:27:42,480 --> 00:27:44,210 >> Men jeg netop hentydede til en fejl. 579 00:27:44,210 --> 00:27:48,610 Dette er en delvis skridt tilbage, for hvis vi ser i header.php, 580 00:27:48,610 --> 00:27:50,850 Jeg har slags skære et hjørne. 581 00:27:50,850 --> 00:27:56,250 Hvad funktion har jeg giver op for at opnå denne diskutabel bedre design? 582 00:27:56,250 --> 00:27:57,305 Ja? 583 00:27:57,305 --> 00:27:58,180 PUBLIKUM: [uhørligt] 584 00:27:58,180 --> 00:28:00,570 DAVID MALAN: Ja, jeg slags af skære et nontrivial hjørne. 585 00:28:00,570 --> 00:28:04,489 De påpegede, at det, der blev skiftende var titlen, nummeret i titlen, 586 00:28:04,489 --> 00:28:05,530 og antallet i H1. 587 00:28:05,530 --> 00:28:08,170 Så min løsning var, OK, lad os bare omdøbe siden, 588 00:28:08,170 --> 00:28:10,080 og ikke beskæftige sig med det problem overhovedet. 589 00:28:10,080 --> 00:28:12,130 Så det er en delvis tilbageskridt for sikker. 590 00:28:12,130 --> 00:28:14,300 >> Men hvad er bemærkelsesværdigt her er, at hvad jeg har gjort 591 00:28:14,300 --> 00:28:17,200 ellers indregnet ud af alle de fælles ting. 592 00:28:17,200 --> 00:28:21,520 Og i footer.php, mærke jeg indregnet ud af alle, der, selv mindre, 593 00:28:21,520 --> 00:28:22,790 fælles ting. 594 00:28:22,790 --> 00:28:26,070 Så jeg har brug for en eller anden måde nu kunne tage endnu et skridt fremad, og løse 595 00:28:26,070 --> 00:28:27,160 denne titel spørgsmål. 596 00:28:27,160 --> 00:28:28,180 Så lad os gøre det. 597 00:28:28,180 --> 00:28:35,060 >> Lad mig gå ind i min anden version her, som igen har de samme filer 598 00:28:35,060 --> 00:28:36,825 bortset fra en ny tilføjelse. 599 00:28:36,825 --> 00:28:38,950 Og det er lidt mere verbose, men lad os se, om vi 600 00:28:38,950 --> 00:28:40,550 kan drille hinanden, hvad der foregår her. 601 00:28:40,550 --> 00:28:45,370 Så i stedet for at kræve header.php, og footer.php, 602 00:28:45,370 --> 00:28:50,180 Jeg synes at være kun kræver én file-- kaldes naturligvis helpers.php. 603 00:28:50,180 --> 00:28:52,560 Og lad mig fastsætte nu, hvad der er inde i helpers.php 604 00:28:52,560 --> 00:28:55,330 er bare en masse funktioner at jeg skrev, ligesom før. 605 00:28:55,330 --> 00:28:57,550 Men jeg kaldte det helpers.php. 606 00:28:57,550 --> 00:29:00,370 >> Nu tilsyneladende, i linie tre og 10, jeg er 607 00:29:00,370 --> 00:29:02,840 ringer to functions-- gør sidehoved, gør footer. 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 satte dem i helpers.php. 610 00:29:07,880 --> 00:29:11,210 >> Nu har vi kun set denne syntaks én gang, og det var super kort. 611 00:29:11,210 --> 00:29:15,330 Men det er tilsyneladende et argument at gøre header, funktionen. 612 00:29:15,330 --> 00:29:16,450 Hvorfor skal jeg vide det? 613 00:29:16,450 --> 00:29:18,522 Nå her er et tæt paren, her er en åben parentes. 614 00:29:18,522 --> 00:29:21,230 Og selvfølgelig, ligesom i C, noget mellem disse parenteser 615 00:29:21,230 --> 00:29:23,350 er en input-- eller argument til funktionen. 616 00:29:23,350 --> 00:29:26,710 >> Hvilken datatype i dette argument, baseret på, hvad jeg har fremhævet? 617 00:29:26,710 --> 00:29:30,820 Hvad gør de kantede parenteser angiver, baseret på sidste uge? 618 00:29:30,820 --> 00:29:33,390 Ja, det er en array-- specifikt en associativt array. 619 00:29:33,390 --> 00:29:35,700 Og denne syntaks ganske vist er lidt funky, 620 00:29:35,700 --> 00:29:38,860 men dette er blot passerer i en nøgleværdi par. 621 00:29:38,860 --> 00:29:43,530 Det centrale er, citerer citat slut titel, og værdien er CS50. 622 00:29:43,530 --> 00:29:46,220 >> Hvis vi havde gjort dette i C, kan det i stedet 623 00:29:46,220 --> 00:29:49,400 se mere som denne, bare citerer citat slut CS50-- 624 00:29:49,400 --> 00:29:52,460 eller faktisk ville det være krøllet seler, eller sådan noget i C, 625 00:29:52,460 --> 00:29:55,580 hvor nøglen er nul, og værdien er CS50. 626 00:29:55,580 --> 00:29:59,840 Men igen, i PHP, selv om syntaks er, igen, en smule underlige, 627 00:29:59,840 --> 00:30:02,860 det giver dig mulighed for at passere i ord i stedet for numre 628 00:30:02,860 --> 00:30:05,120 at knytte nøgler med værdier. 629 00:30:05,120 --> 00:30:06,390 >> Så hvad betyder alt dette? 630 00:30:06,390 --> 00:30:09,750 Hvis jeg går ind helpers.php, lad os se på denne funktion. 631 00:30:09,750 --> 00:30:13,620 renderHeader.php snarere renderHeader er min funktion, 632 00:30:13,620 --> 00:30:16,220 og jeg ved, at fordi jeg ser funktionen nøgleordet her. 633 00:30:16,220 --> 00:30:19,450 Det er nyt fra C-- det tilsyneladende tager et argument kaldet data-- 634 00:30:19,450 --> 00:30:22,400 men jeg kunne have kaldt det noget, men jeg kaldte det data, 635 00:30:22,400 --> 00:30:25,090 bare for at være lidt clean-- og bare tage et gæt, især 636 00:30:25,090 --> 00:30:28,173 hvis du har programmeret på anden højere niveau sprog før, noget 637 00:30:28,173 --> 00:30:29,820 over C, begrebsmæssigt. 638 00:30:29,820 --> 00:30:33,820 >> Hvad betyder lige åben beslag firkantede beslag formentlig betyde? 639 00:30:33,820 --> 00:30:35,540 Eller hvad kan det betyde? 640 00:30:35,540 --> 00:30:39,660 Vi har ikke set det i C. Ja? 641 00:30:39,660 --> 00:30:40,480 >> En tom array. 642 00:30:40,480 --> 00:30:45,440 Konkret betyder dette, at hvis brugeren ikke kalde renderHeader 643 00:30:45,440 --> 00:30:49,340 med et argument, jeg stadig går at have et argument kaldes data, 644 00:30:49,340 --> 00:30:52,327 men dens standard værdi er vil være et tomt array. 645 00:30:52,327 --> 00:30:53,660 Så det er bare en nice bekvemmelighed. 646 00:30:53,660 --> 00:30:56,493 Jeg behøver ikke at råbe ad brugeren, eller sige du brugte min funktion forkert. 647 00:30:56,493 --> 00:30:59,849 Jeg kan bare give brugeren en standard værdi, hvis jeg ikke særlig pleje. 648 00:30:59,849 --> 00:31:01,890 Nu denne funktion, er jeg kommer til at vinke mine hænder på. 649 00:31:01,890 --> 00:31:07,620 Men dette ekstrakt funktion tillader os til at videregive disse variabler i data 650 00:31:07,620 --> 00:31:10,360 i header.php på følgende måde. 651 00:31:10,360 --> 00:31:13,100 Og dette er den sidste brik, Jeg tror, ​​funky syntaks. 652 00:31:13,100 --> 00:31:15,860 Her er min nye version af header.php-- det 653 00:31:15,860 --> 00:31:20,140 plejede at sige, bogstaveligt talt, åben beslag titel 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 >> Nu er det tilsyneladende står noget temmelig funky. 656 00:31:24,310 --> 00:31:28,030 Og lad mig forenkle denne et øjeblik som følger. 657 00:31:28,030 --> 00:31:31,020 Dette er, hvad jeg har ændret min titel til at være. 658 00:31:31,020 --> 00:31:35,140 Imidlertid er det få lidt grimt til konstant at åbne parenteser med PHP, 659 00:31:35,140 --> 00:31:36,610 og derefter bruge print-funktionen. 660 00:31:36,610 --> 00:31:40,810 Det viser sig, at PHP har en stenografi notation for dette, som er lige 661 00:31:40,810 --> 00:31:45,050 et lighedstegn, som er teknisk set en funktion kaldet ekko i stedet for print, 662 00:31:45,050 --> 00:31:46,800 men det er de samme ting, 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, hvis du vil, 665 00:31:50,510 --> 00:31:52,260 der gør min kode ser lidt bedre. 666 00:31:52,260 --> 00:31:54,010 Men det viser sig, og vi vil se det igen 667 00:31:54,010 --> 00:31:57,420 inden længe, ​​vi er nødt til at kalde denne irriterende lang funktion kaldet 668 00:31:57,420 --> 00:32:00,582 HTML særlige tegn i PHP, fordi det viser sig 669 00:32:00,582 --> 00:32:02,790 der er visse indgange at brugeren kan give os, 670 00:32:02,790 --> 00:32:05,160 eller at brugere kan give os, der kommer til at bryde vores hjemmeside. 671 00:32:05,160 --> 00:32:07,035 Men vi vil se, at næste uge med JavaScript. 672 00:32:07,035 --> 00:32:10,740 Men for nu, bare vide, at denne fil, headers.php, simpelthen 673 00:32:10,740 --> 00:32:13,040 tager den titel, der Jeg gik i, det gøre 674 00:32:13,040 --> 00:32:17,380 sikre, at det er sikkert at blive injiceret i en web side, og det spytter det ud som min titel 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 ind i denne version nu, bemærke, at forelæsninger har sin titel tilbage, 677 00:32:24,440 --> 00:32:28,630 uge nul har sin titel tilbage, og ja, HTML jeg genererer 678 00:32:28,630 --> 00:32:32,110 er identisk med, hvad min første version was-- bortset fra min mellemrum, 679 00:32:32,110 --> 00:32:35,150 fordi jeg er begyndt formatering min kode lidt anderledes. 680 00:32:35,150 --> 00:32:38,082 Men jeg har genereret alle koden, jeg holder af. 681 00:32:38,082 --> 00:32:39,790 Så lad mig holde pause for bare et øjeblik og se 682 00:32:39,790 --> 00:32:42,200 hvis der er nogen spørgsmål eller forvirring Jeg har oprettet. 683 00:32:42,200 --> 00:32:44,970 684 00:32:44,970 --> 00:32:48,150 Okay, så lad os vride lidt hårdere her 685 00:32:48,150 --> 00:32:51,500 at se, om der er en mulighed for forbedring. 686 00:32:51,500 --> 00:32:56,130 Helpers.php havde også denne funktion, kaldet renderFooter. 687 00:32:56,130 --> 00:32:59,652 Og hvad er bemærkelsesværdigt om renderHeader og renderFooter? 688 00:32:59,652 --> 00:33:02,610 Og igen, for nutidens formål, kender at ekstraktet funktion er lige 689 00:33:02,610 --> 00:33:08,280 min måde at passerer argumenter i header.php og footer.php. 690 00:33:08,280 --> 00:33:10,900 691 00:33:10,900 --> 00:33:11,780 >> Undskyld? 692 00:33:11,780 --> 00:33:13,056 >> PUBLIKUM: [uhørligt] 693 00:33:13,056 --> 00:33:15,180 DAVID MALAN: Ja, bare jeg ændret kræver linje. 694 00:33:15,180 --> 00:33:19,410 Så bogstaveligt, jeg har begået den synd af kopiering og indsætning, endnu en gang. 695 00:33:19,410 --> 00:33:21,920 Det er ikke et enormt antal af linjer, men kommer on-- 696 00:33:21,920 --> 00:33:25,220 hvis jeg kopiere og indsætte alt bare for at ændre en lille ord, 697 00:33:25,220 --> 00:33:28,610 og den ene lille ord, som Alan peger ud sige footer her, versus header her. 698 00:33:28,610 --> 00:33:30,670 Ellers, alt er identiske, bortset fra, 699 00:33:30,670 --> 00:33:32,180 selvfølgelig funktionens navne. 700 00:33:32,180 --> 00:33:33,690 Så hvad kan vi gøre bedre? 701 00:33:33,690 --> 00:33:39,810 >> Jamen så lad mig åbne denne version her, hvor i helpers.php, 702 00:33:39,810 --> 00:33:42,300 hvorfor jeg ikke bare få en lidt smartere om dette? 703 00:33:42,300 --> 00:33:46,410 Skriv lidt mere kompliceret kode, men kalder det gør? 704 00:33:46,410 --> 00:33:48,470 Så hvad har jeg fundamentalt ændret? 705 00:33:48,470 --> 00:33:51,770 >> Det tager et argument nu-- to argumenter, data stadig. 706 00:33:51,770 --> 00:33:54,444 Og hvad er den første navn formentlig bliver brugt til, 707 00:33:54,444 --> 00:33:55,860 baseret på, hvad du læser her? 708 00:33:55,860 --> 00:33:58,452 Selv om nogle af syntaksen stadig er nyt. 709 00:33:58,452 --> 00:33:59,660 Hvad er dollartegn skabelon? 710 00:33:59,660 --> 00:34:02,400 711 00:34:02,400 --> 00:34:03,016 >> Undskyld? 712 00:34:03,016 --> 00:34:03,710 >> PUBLIKUM: sidehoved eller sidefod. 713 00:34:03,710 --> 00:34:04,510 >> DAVID MALAN: sidehoved eller sidefod. 714 00:34:04,510 --> 00:34:07,134 Så tilsyneladende, besluttede jeg, at hvis det eneste, der er at ændre 715 00:34:07,134 --> 00:34:10,159 er, hvad skabelon jeg vil at print-- og ved skabelon 716 00:34:10,159 --> 00:34:13,100 Jeg mener det er plan for kode, som jeg ønsker at output, 717 00:34:13,100 --> 00:34:16,350 men jeg ønsker at tilslutte nogle values-- så hvis det er kun header 718 00:34:16,350 --> 00:34:20,440 eller sidefod, hvorfor ikke jeg parametrisere det, og kalder argumentet dollartegn 719 00:34:20,440 --> 00:34:21,409 skabelon? 720 00:34:21,409 --> 00:34:26,250 Og så er denne funky syntaks tillader mig at skabe en sti i en variabel her. 721 00:34:26,250 --> 00:34:28,030 >> Så dollartegn sti er en variabel. 722 00:34:28,030 --> 00:34:31,120 Hvad betyder denne syntaks gøre, hvis du er bekendt? 723 00:34:31,120 --> 00:34:32,512 Ja? 724 00:34:32,512 --> 00:34:34,065 >> PUBLIKUM: [uhørligt] 725 00:34:34,065 --> 00:34:34,940 DAVID MALAN: Præcis. 726 00:34:34,940 --> 00:34:37,600 Hvis skabelonen er, citat Citat slut, header, eller hvis skabelon er, 727 00:34:37,600 --> 00:34:41,170 citat Citat slut, footer, denne linje der at jeg har fremhævet, line otte, 728 00:34:41,170 --> 00:34:46,330 er simpelthen at tage det navn, som header, og sammenkæde det med dot PHP. 729 00:34:46,330 --> 00:34:49,750 Så vi havde ikke denne operator i C. Denne dot operatør 730 00:34:49,750 --> 00:34:54,520 en fantastisk ting i PHP--, hvis du er fortrolig med JavaScript eller Java, 731 00:34:54,520 --> 00:34:56,949 du kan bruge plus underskrive for at gøre sammenkædning. 732 00:34:56,949 --> 00:34:59,974 >> I C, det er en smerte i neck-- og jeg er så ked af det, i p-sæt seks, 733 00:34:59,974 --> 00:35:02,390 du er nødt til at gøre her-- det er en smerte i nakken 734 00:35:02,390 --> 00:35:03,930 at sammenkæde strenge. 735 00:35:03,930 --> 00:35:04,670 Hvorfor? 736 00:35:04,670 --> 00:35:06,580 Tja, for hvis du har fået en streng, der er denne lange, 737 00:35:06,580 --> 00:35:09,538 og en anden streng, der er denne lange, du kan ikke bare sætte dem sammen. 738 00:35:09,538 --> 00:35:11,070 Hvad vil du i stedet nødt til at gøre i C? 739 00:35:11,070 --> 00:35:11,680 Ja? 740 00:35:11,680 --> 00:35:12,380 >> PUBLIKUM: [uhørligt] 741 00:35:12,380 --> 00:35:15,090 >> DAVID MALAN: Du skal malloc hukommelse eller bruge et array på stakken. 742 00:35:15,090 --> 00:35:17,214 Og du faktisk nødt til at at den opstilling stor nok 743 00:35:17,214 --> 00:35:20,940 til at passe dette plus det, plus backslash nul. 744 00:35:20,940 --> 00:35:24,994 Så sammenkæde dem sammen ved hjælp røre kat eller manuelt med en for-løkke, 745 00:35:24,994 --> 00:35:26,160 eller en række teknikker. 746 00:35:26,160 --> 00:35:27,760 Og vi viser dig et par i p-sæt 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 det er virkelig, hvad jeg mener om dette versus denne-- som C versus PHP. 749 00:35:34,190 --> 00:35:36,870 Du skal bare få så meget mere funktionalitet gratis, 750 00:35:36,870 --> 00:35:39,030 så du kan fokusere, ideelt, om det sjove 751 00:35:39,030 --> 00:35:41,190 del af kodning, den projekt, du ønsker at løse, 752 00:35:41,190 --> 00:35:43,190 snarere end det lave niveau bagateller. 753 00:35:43,190 --> 00:35:49,840 >> Så dette blot genererer header.php eller footer.php baseret på hvilken en jeg kalder. 754 00:35:49,840 --> 00:35:52,280 Og faktisk hvis jeg går i index.php, varsel 755 00:35:52,280 --> 00:35:56,230 alle, der er changed-- stedet for ringer gør sidehoved eller gøre sidefod, 756 00:35:56,230 --> 00:36:00,230 Jeg ringer gøre, efterfulgt af navn på den skabelon, jeg ønsker at gøre. 757 00:36:00,230 --> 00:36:02,370 Og du vil se det, også, i problemer sæt syv, 758 00:36:02,370 --> 00:36:05,530 hvorved vi giver dig mulighed for at bruge samme funktion at gøre bundter 759 00:36:05,530 --> 00:36:07,550 og klaser af forskellige websider. 760 00:36:07,550 --> 00:36:10,570 >> Så i stedet dvæle for meget mere om disse details-- 761 00:36:10,570 --> 00:36:13,210 som du vil se igen i Problemet sæt seven-- lad os se 762 00:36:13,210 --> 00:36:16,850 ved nu begyndelsen af ​​en opløsning til en mere interessant problem. 763 00:36:16,850 --> 00:36:19,310 Indtil videre, intet vi har gjort har gemte data. 764 00:36:19,310 --> 00:36:22,920 Faktisk er vi den eneste gang nogensinde har sparet noget vi har gjort i denne klasse 765 00:36:22,920 --> 00:36:31,030 er, når vi havde en meget simpel demo stund tilbage, hvorved vi brugte fil IO i C, 766 00:36:31,030 --> 00:36:34,520 og jeg tror, ​​jeg har skrevet i mit navn, og Hannahs navn, og Marias navn, 767 00:36:34,520 --> 00:36:37,610 eller måske Andy navn, og så vi gemt en CSV file-- 768 00:36:37,610 --> 00:36:39,430 kommaseparerede værdier fil. 769 00:36:39,430 --> 00:36:43,530 >> Og vi brugte fopen-- jeg tror vi brugte fprintf så vidt jeg husker, 770 00:36:43,530 --> 00:36:44,910 og vi gemt en fil. 771 00:36:44,910 --> 00:36:46,920 Nu, er den enkleste form af en database. 772 00:36:46,920 --> 00:36:50,230 Hvis du ønsker at lave en hjemmeside for Frosh IMS-programmet, hvor freshmen 773 00:36:50,230 --> 00:36:53,390 kan tilmelde sig en sport, du helst ønsker at gøre noget med disse data. 774 00:36:53,390 --> 00:36:55,370 I sidste uge, vi gjorde intet med data-- vi lige sagt, 775 00:36:55,370 --> 00:36:56,661 du er registreret, ikke rigtig. 776 00:36:56,661 --> 00:36:58,950 Eller måske emailet jeg Proctor, og det var det. 777 00:36:58,950 --> 00:37:02,110 >> Men det ville være rart, hvis jeg kunne give denne proctor en CSV-fil, 778 00:37:02,110 --> 00:37:03,340 ligesom en Excel-fil. 779 00:37:03,340 --> 00:37:05,090 Eller endnu bedre, ville det være rart, hvis jeg kunne 780 00:37:05,090 --> 00:37:08,830 sætte disse brugeres navne og dorm navne og alt dette 781 00:37:08,830 --> 00:37:11,740 i en database, der bare lever for evigt, 782 00:37:11,740 --> 00:37:13,530 indtil jeg vælger at slette dataene. 783 00:37:13,530 --> 00:37:15,645 En database, der tillader mig til at forespørge oplysninger. 784 00:37:15,645 --> 00:37:18,070 Og ja, det er hvad en database er. 785 00:37:18,070 --> 00:37:20,470 >> Vi introducerer i dag, og næste uge, også, en teknologi 786 00:37:20,470 --> 00:37:25,020 kaldet SQL-- en Structured Query Sprog, hvilket er et andet sprog. 787 00:37:25,020 --> 00:37:28,750 Det er hovedsageligt en programmering sprog, men for databaser. 788 00:37:28,750 --> 00:37:31,760 Og en database for nu, bare tænke på som en super fancy udgave 789 00:37:31,760 --> 00:37:35,710 Microsoft Excel eller Google Regneark eller Apple Numbers. 790 00:37:35,710 --> 00:37:39,950 Det er generelt et program, der tillader dig at gemme en hel masse data 791 00:37:39,950 --> 00:37:43,960 i rækker og søjler, helt ligesom du måske i Excel. 792 00:37:43,960 --> 00:37:47,100 >> Men hvad er rart, især hvis vi er ikke super fortrolig med Excel, 793 00:37:47,100 --> 00:37:52,040 hvad SQL giver dig mulighed for at gøre, er forespørgsel dette oplysninger ved at skrive linjer kode 794 00:37:52,040 --> 00:37:55,220 hvor du kan, selvom din database en million rækker i det, 795 00:37:55,220 --> 00:37:57,190 du kan finde ting super hurtigt. 796 00:37:57,190 --> 00:37:59,950 Faktisk Excel er særlig dårlige til store datasæt. 797 00:37:59,950 --> 00:38:02,460 Og faktisk op til et par år siden, viste sig 798 00:38:02,460 --> 00:38:08,890 Excel vil kun tillade dig at gemme op til 65.535 rækker data-- som 799 00:38:08,890 --> 00:38:12,020 lyder som en masse, men på gang jeg var en grad studerende, 800 00:38:12,020 --> 00:38:14,920 og jeg husker at snuble over dette, fordi jeg var generere 801 00:38:14,920 --> 00:38:17,900 CSV-filer til min forskning, og jeg ønskede at analysere dem hurtigt 802 00:38:17,900 --> 00:38:19,530 ved blot at åbne op i Excel. 803 00:38:19,530 --> 00:38:23,730 Selvfølgelig min computer bare styrtede ned, fordi jeg havde mere end 65.000 rækker. 804 00:38:23,730 --> 00:38:27,210 >> Men hvor kom de 65.535 fra? 805 00:38:27,210 --> 00:38:29,670 Hvad var Microsoft laver, formentlig? 806 00:38:29,670 --> 00:38:32,430 Hvis du er god med dine beføjelser to? 807 00:38:32,430 --> 00:38:37,160 Ja, de brugte en 16-bit værdi til at repræsentere rækkenummer. 808 00:38:37,160 --> 00:38:41,310 Og to til 16 er 65,536-- minus én, fordi hvis du 809 00:38:41,310 --> 00:38:45,414 nul indeks betyder, var mest antallet af rækker, jeg kunne have. 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 at gemme 16 bit, de begrænsede mig til 16.000 rækker, i stedet for 4 milliarder, 812 00:38:52,760 --> 00:38:54,322 som jeg kunne have haft ideelt. 813 00:38:54,322 --> 00:38:57,030 Men for nu, vi vil indføre denne mere i en web sammenhæng. 814 00:38:57,030 --> 00:39:00,390 Og hvad er rart om SQL er, at selv selvom det er temmelig stærk og smuk 815 00:39:00,390 --> 00:39:04,050 sofistikeret, det virkelig koger ned til fire centrale operationer, fire 816 00:39:04,050 --> 00:39:08,060 nøglefunktioner, hvis du will-- vælge, for at hente data, der søger 817 00:39:08,060 --> 00:39:12,510 for data; slette eller sletning af data; Indsæt til at tilføje rækker til databasen; 818 00:39:12,510 --> 00:39:13,410 og opdatering. 819 00:39:13,410 --> 00:39:17,010 Så hvis du nogensinde har brugt Google Regneark, Apple Numbers, Microsoft 820 00:39:17,010 --> 00:39:19,310 Excel, du har udført, mest sandsynligt, alle 821 00:39:19,310 --> 00:39:22,530 disse foranstaltninger som et menneske ved bare bruge dit tastatur og mouse-- 822 00:39:22,530 --> 00:39:26,050 indsætte data, ved hjælp af dine øjne for at vælge eller søge efter data, 823 00:39:26,050 --> 00:39:28,360 eller opdatere data eller slette data. 824 00:39:28,360 --> 00:39:29,870 >> Så hvad betyder det? 825 00:39:29,870 --> 00:39:34,300 Nå, forudinstalleret i CS50 IDE er et program kaldet MySQL. 826 00:39:34,300 --> 00:39:37,050 Det er en gratis, open-source database, der er super populær. 827 00:39:37,050 --> 00:39:40,590 Facebook, for eksempel, anvender det til denne dag, blandt andre værktøjer, som de bruger. 828 00:39:40,590 --> 00:39:44,300 Og en masse meget populære hjemmesider bruger det i vid udstrækning, fordi det er hurtigt, 829 00:39:44,300 --> 00:39:45,230 og fordi det er gratis. 830 00:39:45,230 --> 00:39:46,820 Men bestemt findes alternativer. 831 00:39:46,820 --> 00:39:49,580 Og nogle af jer måske fuske med alternativer til de endelige projekter. 832 00:39:49,580 --> 00:39:55,330 >> Dette er et skærmbillede, i mellemtiden, for et webbaseret værktøj kaldet phpMyAdmin. 833 00:39:55,330 --> 00:39:58,260 Det er en tilfældighed, at denne web-baseret værktøj er også 834 00:39:58,260 --> 00:40:01,720 skrevet i et sprog, PHP, men hvad det betød at gøre 835 00:40:01,720 --> 00:40:04,620 er at give os et web-baseret grænseflade til en database. 836 00:40:04,620 --> 00:40:07,180 Fordi MySQL typisk noget, historisk, du 837 00:40:07,180 --> 00:40:08,770 ville interagere med kun med en kommandolinje. 838 00:40:08,770 --> 00:40:10,811 Og det ville være super irriterende og Arcane at have 839 00:40:10,811 --> 00:40:14,487 at skrive tekstuelle kommandoer til at vælge data, indsætte data, og slette data. 840 00:40:14,487 --> 00:40:16,820 Så nogle mennesker på internettet skrev et web-baseret program 841 00:40:16,820 --> 00:40:18,900 at bare lade os styre data i vores database. 842 00:40:18,900 --> 00:40:23,040 Det er ligesom at dobbeltklikke på Excel og kører en webbaseret udgave heraf. 843 00:40:23,040 --> 00:40:26,370 >> Og hvad du vil bruge dette til i sidste ende i næste uge, ikke i p-sæt seks, 844 00:40:26,370 --> 00:40:28,680 men er at bygge noget kaldet CS50 Finans, som 845 00:40:28,680 --> 00:40:32,630 vil have en database over brugere, med brugernavne og adgangskoder, 846 00:40:32,630 --> 00:40:34,860 dollar beløb, de har i deres bankkonti. 847 00:40:34,860 --> 00:40:37,280 Det kommer til at blive noget, du bruger til at gemme 848 00:40:37,280 --> 00:40:39,910 symbolerne og de mængder af bestande, som brugerne 849 00:40:39,910 --> 00:40:42,567 har købt ved hjælp af virtuelle dollars, som du vil give til dem. 850 00:40:42,567 --> 00:40:44,900 Og det kommer til at give brugerne mulighed at registrere for dit websted, 851 00:40:44,900 --> 00:40:47,190 så selv dine venner kan tune ind på din hjemmeside 852 00:40:47,190 --> 00:40:49,360 og faktisk registrere, log ind og lege 853 00:40:49,360 --> 00:40:52,807 og forsøge at finde fejl i din kode, og forsøge at finde fejl i dit websted. 854 00:40:52,807 --> 00:40:55,390 Og de vil blot registrere ved tilføjer sig selv, effektivt, 855 00:40:55,390 --> 00:40:58,120 via kode, du skriver til din database. 856 00:40:58,120 --> 00:41:02,470 >> For eksempel er dette en hurtig skærmbillede af, hvad en database kan se ud. 857 00:41:02,470 --> 00:41:05,190 Dette var fra en af sidste års solutions-- 858 00:41:05,190 --> 00:41:07,760 det er ligesom en mini Excel fil, gemmes i vores database, 859 00:41:07,760 --> 00:41:09,950 gemt i denne software kaldet MySQL. 860 00:41:09,950 --> 00:41:13,260 På venstre side, jeg har åbenbart givet alle brugere et unikt nummer. 861 00:41:13,260 --> 00:41:16,200 I anden kolonne, har jeg givet alle en bruger name-- min egen 862 00:41:16,200 --> 00:41:16,880 blandt dem. 863 00:41:16,880 --> 00:41:21,430 Og på den højre side, Jeg har givet dem en hash. 864 00:41:21,430 --> 00:41:26,760 >> Nu er dette er faktisk en adgangskode, men det er ikke en almindelig tekst-adgangskode. 865 00:41:26,760 --> 00:41:30,160 Det er en krypteret adgangskode, hvis du vil, eller en hash-adgangskode. 866 00:41:30,160 --> 00:41:32,000 Som vi vil vende tilbage til inden længe. 867 00:41:32,000 --> 00:41:34,340 >> Men hvis du nogensinde har læst en artikel om, hvordan 868 00:41:34,340 --> 00:41:37,950 dit password på nogle bank eller nogle hjemmeside kunne have været kompromitteret, 869 00:41:37,950 --> 00:41:39,630 det kan generelt betyde en af ​​to ting. 870 00:41:39,630 --> 00:41:42,780 Så dette er bare et uddrag af seks brugere. 871 00:41:42,780 --> 00:41:45,460 Alle jer nu kan regne via hacking eller cracking 872 00:41:45,460 --> 00:41:47,690 hvad vores seks folks passwords er. 873 00:41:47,690 --> 00:41:49,720 Men hvis du nogensinde har fået en advarsel eller en undskyldning 874 00:41:49,720 --> 00:41:52,803 fra en virksomhed eller hjemmeside siger, undskyld, en hacker brød ind i vores database, 875 00:41:52,803 --> 00:41:56,360 bør du nok ændre din adgangskode, hvad kunne det betyde? 876 00:41:56,360 --> 00:41:59,670 >> Tja, en, kan betyde Virksomheden har været mere åndssvage, 877 00:41:59,670 --> 00:42:03,630 og har været opbevaring af dit password i en kolonne som denne, ukrypteret. 878 00:42:03,630 --> 00:42:05,840 Hvilket betyder modstanderen, der stjal databasen, 879 00:42:05,840 --> 00:42:07,440 bogstaveligt kender din brugernavn og adgangskode. 880 00:42:07,440 --> 00:42:08,960 Det er det værst tænkelige scenarie. 881 00:42:08,960 --> 00:42:11,710 Og som du kan se i p-sæt syv, så let at undgå. 882 00:42:11,710 --> 00:42:15,624 Der er absolut ingen undskyldning for, at form for dumhed i dagens internet. 883 00:42:15,624 --> 00:42:18,540 To-- og vi vil finde nogle artikler at vidne, at dette stadig 884 00:42:18,540 --> 00:42:21,710 sker, nonetheless-- to, måske modstanderen 885 00:42:21,710 --> 00:42:23,840 stjal denne version af databasen. 886 00:42:23,840 --> 00:42:27,110 Som stadig slags dårligt, fordi nu de ved, at jeg har seks kunder, 887 00:42:27,110 --> 00:42:29,270 Jeg kender brugernavne af disse seks kunder, 888 00:42:29,270 --> 00:42:32,910 og jeg kender den krypterede versioner, eller de skraverede versioner, 889 00:42:32,910 --> 00:42:34,340 af disse seks kunders adgangskoder. 890 00:42:34,340 --> 00:42:37,010 Men nogen af ​​jer, der måske har gjort [? Hacker 2?] 891 00:42:37,010 --> 00:42:41,150 hvor du krakket adgangskoder, eller tog et kig på denne version af problemet 892 00:42:41,150 --> 00:42:46,280 sæt, hvorfor er det stadig lidt bekymrende hvis modstanderen kender din hash 893 00:42:46,280 --> 00:42:47,435 adgangskoder? 894 00:42:47,435 --> 00:42:49,732 >> PUBLIKUM: Fordi de kunne Indtast hele ordbogen 895 00:42:49,732 --> 00:42:50,690 i hash-funktionen. 896 00:42:50,690 --> 00:42:54,520 Og hvis dit password er en ordbog ord, [? de kan bare match--?] 897 00:42:54,520 --> 00:42:57,640 >> DAVID MALAN: Præcis, modstanderen kan bare skrive kode, ligesom nogle af jer 898 00:42:57,640 --> 00:43:00,526 gjorde for [? Hacker?] 2, hvorved du gentage over 899 00:43:00,526 --> 00:43:03,400 alle ord i ordbogen, eller alle mulige kombinationer af A 900 00:43:03,400 --> 00:43:06,610 til Z og en gennem nine-- der lyder som en masse, og det er. 901 00:43:06,610 --> 00:43:08,361 Men for en computer, det er temmelig darn hurtigt. 902 00:43:08,361 --> 00:43:10,610 Og i virkeligheden, det var den punkt [? Hacker 2,?] Blev 903 00:43:10,610 --> 00:43:12,540 at tage ting, bogstaveligt ser sådan ud, 904 00:43:12,540 --> 00:43:14,900 og reverse engineering hvad det egentlig var. 905 00:43:14,900 --> 00:43:17,270 >> Så vi vil se på, hvordan vi kan gemme denne mere effektivt. 906 00:43:17,270 --> 00:43:20,210 Slår ud, heldigvis i MySQL, Der vil være datatyper. 907 00:43:20,210 --> 00:43:22,800 Og en af ​​de sjove dele om database design, for at være ærlig, 908 00:43:22,800 --> 00:43:25,810 der faktisk bestemmer selv hvordan skal du repræsenterer dataene? 909 00:43:25,810 --> 00:43:29,630 Skulle du repræsenterer et telefonnummer, som en int, ligesom en stor nummer, eller en lang? 910 00:43:29,630 --> 00:43:31,630 Eller har du rent faktisk gør det som en sekvens af tegn? 911 00:43:31,630 --> 00:43:33,780 Og der kan være meget ikke-trivielle virkninger af dette. 912 00:43:33,780 --> 00:43:36,714 >> Faktisk er en af tidligste, sjove germane historier 913 00:43:36,714 --> 00:43:39,880 er, når Mark Zuckerberg byggede Facebook blev det oprindeligt skrevet i, 914 00:43:39,880 --> 00:43:42,300 og stadig er i vid udstrækning i PHP. 915 00:43:42,300 --> 00:43:45,400 Og en af ​​de største udfordringer de stod tidligt blev skalering. 916 00:43:45,400 --> 00:43:48,820 Når de holdt tilføjer skolen efter skole efter skole, så vidt jeg ved, 917 00:43:48,820 --> 00:43:51,639 en af ​​de oprindelige løsninger var hovedsageligt at kopiere og indsætte 918 00:43:51,639 --> 00:43:53,430 nogle af databaserne og nogle af koden, 919 00:43:53,430 --> 00:43:55,346 således at Harvard var kører på sin egen server, 920 00:43:55,346 --> 00:43:56,995 og MIT kørte på sin egen server. 921 00:43:56,995 --> 00:43:59,120 Og var det derfor, for nogle af jer der måske husker, 922 00:43:59,120 --> 00:44:01,510 kunne du ikke har venner i andre netværk. 923 00:44:01,510 --> 00:44:05,050 >> Du sandsynligvis ikke har venner på MIT eller Harvard 10 eller så år siden, 924 00:44:05,050 --> 00:44:07,467 men du kunne ikke spænde netværk til dels af den grund. 925 00:44:07,467 --> 00:44:10,550 Og en af ​​de største udfordringer for Mark og for virksomheder som Facebook 926 00:44:10,550 --> 00:44:13,460 er faktisk håndtering hundredvis og tusinder og millioner 927 00:44:13,460 --> 00:44:14,460 af anmodninger per sekund. 928 00:44:14,460 --> 00:44:16,501 Så de ting, vi starter taler om i denne uge 929 00:44:16,501 --> 00:44:19,860 virkelig kommer til at være relevant for skrive god software, og i folkemunde 930 00:44:19,860 --> 00:44:23,040 succesfulde værktøjer, som kan håndtere masser af brugere. 931 00:44:23,040 --> 00:44:25,460 >> Så vi vil tale om ting ligesom indeksering og søgning, 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 dig mere på 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 for at den og trække fra det. 937 00:44:35,943 --> 00:44:38,859 Og du behøver ikke at holde fast i nogle forudbestemt mængde hukommelse. 938 00:44:38,859 --> 00:44:40,580 Nå, hvad er det kommer til at hedde? 939 00:44:40,580 --> 00:44:42,369 >> SPEAKER 1: Nå, hvad sker der? 940 00:44:42,369 --> 00:44:43,535 SPEAKER 2: Hvad mener du? 941 00:44:43,535 --> 00:44:44,451 Han giver en forelæsning. 942 00:44:44,451 --> 00:44:47,650 DAVID MALAN: Og vi kan bruge en funktion kaldet malloc at memory-- 943 00:44:47,650 --> 00:44:50,050 >> SPEAKER 1: Hvorfor ikke hans arme bevæger sig? 944 00:44:50,050 --> 00:44:52,450 >> SPEAKER 2: Nå that's-- du ved, det er normalt. 945 00:44:52,450 --> 00:44:57,162 Det er ligesom han har bare store pølser hængende 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 antage han ved et uheld 948 00:45:03,096 --> 00:45:06,840 erstattet sin deodorant med superlim. 949 00:45:06,840 --> 00:45:07,608