1 00:00:00,000 --> 00:00:02,916 2 00:00:02,916 --> 00:00:04,860 >> [Muziek] 3 00:00:04,860 --> 00:00:10,210 4 00:00:10,210 --> 00:00:13,350 >> DAVID MALAN: Dit is CS50, en Dit is het begin van week acht. 5 00:00:13,350 --> 00:00:17,510 En we zijn zo enthousiast te verwelkomen rug, grote verrassing, eigen Ramon CS50's 6 00:00:17,510 --> 00:00:22,160 Galvan, een stijgende senior die is geweest besteding van de afgelopen maanden 7 00:00:22,160 --> 00:00:26,190 sinds juli in LA, in Hollywood, letterlijk werken aan een nieuwe tv- 8 00:00:26,190 --> 00:00:31,930 show genaamd Colony, de maker van die is eigenlijk een Harvard aluin zelf. 9 00:00:31,930 --> 00:00:36,610 En dus we zijn erg blij om dit te zien debuut op de VS-netwerk in januari. 10 00:00:36,610 --> 00:00:40,370 Dus stay tuned voor dat, en voor meer Ramon voor de komende weken. 11 00:00:40,370 --> 00:00:42,550 >> Weet nu dat het einde nabij is. 12 00:00:42,550 --> 00:00:47,400 En wat dit betekent is dat er niet al dat veel links van CS50, triest om te zeggen. 13 00:00:47,400 --> 00:00:49,400 We hebben slechts drie probleem sets left-- er 14 00:00:49,400 --> 00:00:52,510 probleem set six-- die in je handen nu of binnenkort zal worden, 15 00:00:52,510 --> 00:00:56,080 later dit week-- is bedoeld om te overbruggen onze werelden van de command line, waar de 16 00:00:56,080 --> 00:00:59,450 We hebben het grootste deel van onze tijd met behulp C, en de wereld van het web programmeren. 17 00:00:59,450 --> 00:01:02,350 Nou, je zult een heleboel ideeën te zien geleend van de command line werk, 18 00:01:02,350 --> 00:01:04,560 maar ook een heleboel nieuwe en interessante ideeën 19 00:01:04,560 --> 00:01:07,929 die ook zullen germane te worden mobiele toepassingen en voor technologie, 20 00:01:07,929 --> 00:01:10,470 meer in het algemeen, waarmee je jongens zijn allemaal bekend tegenwoordig 21 00:01:10,470 --> 00:01:12,090 op laptops en telefoons en dergelijke. 22 00:01:12,090 --> 00:01:15,220 >> Dus je zult niet te implementeren een webpagina of een website 23 00:01:15,220 --> 00:01:17,620 per se, maar een effectief webserver. 24 00:01:17,620 --> 00:01:21,590 Je zult de rest van een webserver te schrijven geschreven in C, waarvan het doel in het leven 25 00:01:21,590 --> 00:01:25,410 is om HTTP-verzoeken, die te ontvangen virtuele enveloppen we blijven praten 26 00:01:25,410 --> 00:01:29,780 over, en eigenlijk te reageren, hetzij met sommige statische content-- als een dot HTML 27 00:01:29,780 --> 00:01:32,310 bestand of een punt JPEG of een ander aantal bestanden, 28 00:01:32,310 --> 00:01:37,070 of zelfs een PHP bestand waarmee uw web- server gaat dat PHP interpreteren 29 00:01:37,070 --> 00:01:38,332 code en spugen de resultaten. 30 00:01:38,332 --> 00:01:40,540 Nu, hebben wij u voorzien nogal wat raamwerk 31 00:01:40,540 --> 00:01:43,100 want inderdaad de het-- verdeelsleutel voor het probleem 32 00:01:43,100 --> 00:01:47,496 set van zes is meer dan 1000 regels lang, een Veel van die reacties, fair-- worden 33 00:01:47,496 --> 00:01:49,370 maar dit is echt bedoeld om een ​​kans te zijn 34 00:01:49,370 --> 00:01:52,570 om je handen vuil duiken in een vrij groot project 35 00:01:52,570 --> 00:01:55,570 dat we heel specifiek uitgehouwen stukken voor u, 36 00:01:55,570 --> 00:01:59,046 zodat echt wanneer je CS50 verlaten en voer de echte wereld van de programmering 37 00:01:59,046 --> 00:02:00,920 en willen ploeteren in een aantal projecten, 38 00:02:00,920 --> 00:02:03,253 je zult veel meer hebben Comfort downloaden van een bron 39 00:02:03,253 --> 00:02:05,020 code, een aantal open source projecteren op het web, 40 00:02:05,020 --> 00:02:08,174 en duiken in en het maken van veranderingen die je past. 41 00:02:08,174 --> 00:02:11,340 Probleem stelde zeven gaat worden over het maken van uw eigen web-based applicatie 42 00:02:11,340 --> 00:02:14,140 dat neemt dynamische input en produceert dynamische output in de vorm 43 00:02:14,140 --> 00:02:16,920 van een etrade.com-achtige website. 44 00:02:16,920 --> 00:02:20,800 En probleemoplossend ingesteld acht zal nog richten op andere taal bekend als JavaScript. 45 00:02:20,800 --> 00:02:24,170 >> Intussen is de uiteindelijke project is aan de horizon. 46 00:02:24,170 --> 00:02:26,800 De zogenaamde pre-voorstel is het gevolg van een week vanaf nu. 47 00:02:26,800 --> 00:02:29,930 Pre-proposal-- per de specificatie, die op CS50's website-- 48 00:02:29,930 --> 00:02:33,260 is een vrij informele gelegenheid voor u een vrij beknopte e-mail 49 00:02:33,260 --> 00:02:35,170 om uw onderwijs collega alleen maar om hem te hoogte te stellen 50 00:02:35,170 --> 00:02:38,250 of haar van wat je denkt, om Gebruik hem of haar als klankbord. 51 00:02:38,250 --> 00:02:40,980 En hebben een gezond verstand check-- of u denkt 52 00:02:40,980 --> 00:02:43,210 over te bijten off veel of misschien te weinig, 53 00:02:43,210 --> 00:02:46,480 of misschien heb je geen idee wat en wenst deel te nemen aan een gesprek. 54 00:02:46,480 --> 00:02:48,480 >> Daarna is een voorstel en statusrapport, 55 00:02:48,480 --> 00:02:51,860 de zogenaamde CS50 hackathon hier Cambridge voor Harvard en Yale studenten 56 00:02:51,860 --> 00:02:52,362 alike. 57 00:02:52,362 --> 00:02:54,320 Het uiteindelijke project implementatie is dan het gevolg. 58 00:02:54,320 --> 00:02:59,290 En dan een CS50 eerlijke hier, in Cambridge, alsmede een in New Haven. 59 00:02:59,290 --> 00:03:02,500 Zodat het voorstel, een kijkje nemen op de website voor deze gegevens. 60 00:03:02,500 --> 00:03:06,530 >> Maar meer opwindend, ook, is een mogelijkheid om uw handen vuil te krijgen, 61 00:03:06,530 --> 00:03:09,350 en je geest open voor een hele stelletje onderwerpen en gereedschap 62 00:03:09,350 --> 00:03:12,920 en technieken die bijkomende aan de cursus kern syllabus, 63 00:03:12,920 --> 00:03:14,810 maar desalniettemin verwant. 64 00:03:14,810 --> 00:03:18,400 En ook prachtige stapstenen aan doet echt cool laatste projecten die 65 00:03:18,400 --> 00:03:22,020 gaan veel verder dan materiaal dat we hebben behandeld formeel probleem stelt of in collegezaal. 66 00:03:22,020 --> 00:03:24,446 Dus ga naar de website van CS50's voor de hele rooster van seminars. 67 00:03:24,446 --> 00:03:26,070 Als u nog niet te registreren, is dat prima. 68 00:03:26,070 --> 00:03:29,860 Ga je gang en meld je nog steeds en we zullen follow-up met een live streaming link 69 00:03:29,860 --> 00:03:31,844 de dag en de tijd is op de website. 70 00:03:31,844 --> 00:03:33,760 En alles zal zijn opgenomen en online gezet 71 00:03:33,760 --> 00:03:35,800 als je niet kunt maken van de bepaalde dagen en tijden. 72 00:03:35,800 --> 00:03:39,380 >> Met betrekking tot wat ons te wachten thereafter-- goed, Natuurlijk is er de CS50 Hackathon. 73 00:03:39,380 --> 00:03:43,560 Deze foto, recall, vanaf week nul genomen rond 04:00 op een avond in de afgelopen jaren. 74 00:03:43,560 --> 00:03:46,900 De CS50 beurs, die weer vindt plaats in beide steden. 75 00:03:46,900 --> 00:03:49,760 En dan, alleen maar om de planten zaad, hoewel we nog steeds 76 00:03:49,760 --> 00:03:54,080 hebben een maand plus links van semester, indien u wilt eigen onderwijs CS50's mee 77 00:03:54,080 --> 00:03:56,770 personeel, en u wilt beginnen denken over hoe u een CA, 78 00:03:56,770 --> 00:03:59,550 of onderwijs collega, weet dat We beginnen te praten over dat 79 00:03:59,550 --> 00:04:00,630 Later dit semester. 80 00:04:00,630 --> 00:04:03,470 Maar hier afgebeeld wordt het grootste deel van het team van dit jaar. 81 00:04:03,470 --> 00:04:06,950 >> En dus, PHP-- en ik was zo verdrietig vorige week dat [? Allyse?] Vriendelijk 82 00:04:06,950 --> 00:04:09,370 naar de inspanning krijgen ons deze prachtige rekwisieten 83 00:04:09,370 --> 00:04:11,720 dat ik niet uiteindelijk met behulp van, dus het eigenlijk alleen maar leek soort stomme 84 00:04:11,720 --> 00:04:15,160 dat we een schop zitten hier allemaal dag afgelopen woensdag, en een kleine lepel. 85 00:04:15,160 --> 00:04:17,709 Maar dit was mijn metaforische manier om te proberen om te schilderen 86 00:04:17,709 --> 00:04:21,600 het beeld van waarom we de overgang van C naar een taal als PHP. 87 00:04:21,600 --> 00:04:25,480 En hetzelfde kan gezegd worden van elke aantal languages-- Java, Python, Ruby 88 00:04:25,480 --> 00:04:31,270 of trossen van others-- maar terwijl in C, bijvoorbeeld, het schrijven van een programma in C 89 00:04:31,270 --> 00:04:34,050 kan doorgaans worden als het nemen van een lepel als deze 90 00:04:34,050 --> 00:04:36,770 en het graven van een gat in de grond, in het zand of stof. 91 00:04:36,770 --> 00:04:39,770 PHP kun je veel te nemen grotere happen uit het probleem, 92 00:04:39,770 --> 00:04:42,842 schrijven veel minder code met een veel kleiner tool, 93 00:04:42,842 --> 00:04:45,050 want er is zo veel meer functionaliteit geknutseld in. 94 00:04:45,050 --> 00:04:47,633 >> Nu, als we waren echt dramatisch, we iets om schop zou moeten 95 00:04:47,633 --> 00:04:48,760 hier, maar het zij zo. 96 00:04:48,760 --> 00:04:51,370 Intussen is de andere metafoor we kwamen met 97 00:04:51,370 --> 00:04:53,770 is natuurlijk, je kon gebruik iets als een moersleutel 98 00:04:53,770 --> 00:04:56,610 hamer in iets als een spijker. 99 00:04:56,610 --> 00:04:58,980 Maar natuurlijk de juiste tool om te gebruiken gaat 100 00:04:58,980 --> 00:05:01,360 niet zozeer het zijn taal genaamd C-- 101 00:05:01,360 --> 00:05:03,590 en nu heb ik alleen maar geïrriteerd [? Sanders,?] Waarschijnlijk 102 00:05:03,590 --> 00:05:07,890 zullen we lossen dat later-- zo het juiste gereedschap te gebruiken vaak 103 00:05:07,890 --> 00:05:09,640 is niet van plan te zijn Dit laagste niveau tool. 104 00:05:09,640 --> 00:05:13,720 En inderdaad, C is niet een taal die de meesten van jullie ooit gaat gebruiken, 105 00:05:13,720 --> 00:05:15,590 of moet per se opnieuw gebruiken. 106 00:05:15,590 --> 00:05:18,350 >> En inderdaad, een beetje secret-- de enige keer 107 00:05:18,350 --> 00:05:23,160 Ik gebruik C zelf is vrij veel tussen September en december van elke herfst 108 00:05:23,160 --> 00:05:23,870 semester. 109 00:05:23,870 --> 00:05:25,790 En dat is omdat we Gebruik het als een kans 110 00:05:25,790 --> 00:05:27,852 de fundamenten leren van de programmering, 111 00:05:27,852 --> 00:05:29,810 en daarmee computer wetenschap fundamentals, data 112 00:05:29,810 --> 00:05:32,435 structuren, algoritmen en like-- maar al snel zul je 113 00:05:32,435 --> 00:05:35,010 zie nu dat de syntax en de ideeën die ten grondslag liggen C 114 00:05:35,010 --> 00:05:37,530 zijn zo heerlijk overdraagbaar modernere 115 00:05:37,530 --> 00:05:41,130 hoger niveau talen, zoals PHP en Python en Perl en Java 116 00:05:41,130 --> 00:05:46,750 en Objective-C-- eigenlijk niet zozeer Objectieve C-- maar Swift, deze nieuwere 117 00:05:46,750 --> 00:05:50,010 talen die velen van jullie zullen dan knoeien met je afstudeerproject. 118 00:05:50,010 --> 00:05:55,070 >> Dus zonder verder oponthoud, laten we eigenlijk PHP gebruiken om een ​​aantal problemen op te lossen. 119 00:05:55,070 --> 00:06:00,230 Bedenk dat vroeg op, de laatste week, we gebruikten gewoon CS50 IDE, 120 00:06:00,230 --> 00:06:02,990 We schreven een dinky klein programma dat net zei, "Hallo wereld". 121 00:06:02,990 --> 00:06:05,680 En vervolgens opgeslagen ik het in een bestand genaamd hello.php. 122 00:06:05,680 --> 00:06:07,280 En toen kwam ik deze opdracht. 123 00:06:07,280 --> 00:06:08,080 >> En waarom? 124 00:06:08,080 --> 00:06:09,900 In het Engels, wat is hier aan de hand? 125 00:06:09,900 --> 00:06:12,760 Wat deed ik toen Ik liep deze opdracht? 126 00:06:12,760 --> 00:06:13,405 >> Ja? 127 00:06:13,405 --> 00:06:16,572 >> Publiek: Er is een aantal functies PHP die leest wat in-- begrijpt dat. 128 00:06:16,572 --> 00:06:19,696 DAVID MALAN: Goed, er is een functie PHP-- en laat me meer specifiek, 129 00:06:19,696 --> 00:06:21,810 Er is een programma genaamd PHP, alias 130 00:06:21,810 --> 00:06:25,872 Een tolk, die begrijpt de inhoud van hello.php, 131 00:06:25,872 --> 00:06:27,830 en interpreteert boven naar beneden, van links naar rechts, 132 00:06:27,830 --> 00:06:29,590 en doet wat die opdrachten zeggen. 133 00:06:29,590 --> 00:06:33,320 De commando's in hello.php natuurlijk is gewoon bron code-- functies 134 00:06:33,320 --> 00:06:35,750 en variabelen en loops en dergelijke, dat we onszelf 135 00:06:35,750 --> 00:06:37,460 zijn begonnen met het schrijven in PHP. 136 00:06:37,460 --> 00:06:40,240 >> Maar in tegenstelling tot C, die een gecompileerde taal, 137 00:06:40,240 --> 00:06:42,810 PHP je gewoon schrijven, en voer het uit. 138 00:06:42,810 --> 00:06:46,420 Je overslaan dat tussenpersoon stap van converteren naar nullen en enen, 139 00:06:46,420 --> 00:06:47,790 en dan het runnen van het. 140 00:06:47,790 --> 00:06:50,510 En dus wat is een omgekeerde van deze? 141 00:06:50,510 --> 00:06:52,690 Waarom zijn we het overslaan van de stap? 142 00:06:52,690 --> 00:06:55,238 Waarom hebben meer moderne talen hebben de neiging om deze stap overslaan? 143 00:06:55,238 --> 00:06:58,880 144 00:06:58,880 --> 00:07:01,220 Wat is het voordeel? 145 00:07:01,220 --> 00:07:02,080 >> Of gewoon intuïtief? 146 00:07:02,080 --> 00:07:04,200 Zelfs als we hebben niet geschreven veel PHP vóór, 147 00:07:04,200 --> 00:07:07,210 wat is gunstig over het niet samenstellen van uw code denk je? 148 00:07:07,210 --> 00:07:08,520 Nee? 149 00:07:08,520 --> 00:07:09,610 Niet begaan? 150 00:07:09,610 --> 00:07:11,350 Krassen op je hoofd? 151 00:07:11,350 --> 00:07:12,614 Ja. 152 00:07:12,614 --> 00:07:13,600 >> Publiek: Meer dynamiek. 153 00:07:13,600 --> 00:07:14,683 >> DAVID MALAN: meer dynamiek? 154 00:07:14,683 --> 00:07:16,032 Wat bedoel je? 155 00:07:16,032 --> 00:07:17,000 >> PUBLIEK: [onverstaanbaar] 156 00:07:17,000 --> 00:07:20,349 157 00:07:20,349 --> 00:07:22,390 DAVID MALAN: Oké, goed, dus afhankelijk van de input, 158 00:07:22,390 --> 00:07:23,470 je hoeft niet elke keer te compileren. 159 00:07:23,470 --> 00:07:24,990 En het is echt zo simpel als wat dat-- 160 00:07:24,990 --> 00:07:26,990 is het punt van voortdurende om uw code te compileren? 161 00:07:26,990 --> 00:07:29,480 Dit is slechts een stap die is making-- dit is vereist, 162 00:07:29,480 --> 00:07:31,900 voor de afgelopen weken, twee keer zoveel stappen 163 00:07:31,900 --> 00:07:33,820 als gewoon het runnen van uw programma. 164 00:07:33,820 --> 00:07:36,940 Het is nuttig in te zien dat u zie een aantal foutmeldingen, enzovoort, 165 00:07:36,940 --> 00:07:38,720 maar het is nog steeds gewoon een vervelende stap. 166 00:07:38,720 --> 00:07:41,810 >> En zo programmeurs gerealiseerd na verloop van tijd, waarom doen we niet 167 00:07:41,810 --> 00:07:45,327 beginnen met het schrijven talen die dat niet doen moet dat vrij mechanische stap, 168 00:07:45,327 --> 00:07:47,160 zodat kan gewoon schrijven de code en voer het uit. 169 00:07:47,160 --> 00:07:48,920 Maar wat was de prijs die we zagen we betaald 170 00:07:48,920 --> 00:07:50,910 vorige week, met een bijzonder voorbeeld? 171 00:07:50,910 --> 00:07:51,650 Ja? 172 00:07:51,650 --> 00:07:52,370 >> Snelheid. 173 00:07:52,370 --> 00:07:54,690 Dus [? wat is er?] tolken een beetje langzamer, 174 00:07:54,690 --> 00:07:57,330 doordat nullen en enen zijn mooi en snel voor een computer 175 00:07:57,330 --> 00:08:00,070 begrijpen, omdat de Intel CPU, of wat het ook is, 176 00:08:00,070 --> 00:08:03,070 alleen begrijpt wat er aan de hand op met de bitpatronen. 177 00:08:03,070 --> 00:08:05,370 Terwijl een tolk is een programma dat echt 178 00:08:05,370 --> 00:08:07,980 moet de ASCII bronleesverzoek code die je hebt geschreven, 179 00:08:07,980 --> 00:08:12,700 en omzetten, zo te zeggen, of erachter te komen hoe het omzet uiteindelijk 180 00:08:12,700 --> 00:08:13,525 nullen en enen. 181 00:08:13,525 --> 00:08:15,650 Dus het duurt slechts een beetje beetje een performance hit. 182 00:08:15,650 --> 00:08:16,858 Dus het is een beetje een trade-off. 183 00:08:16,858 --> 00:08:21,570 Nu, als we dit doen hier, laat me ga je gang en doe een voorbeeld als volgt. 184 00:08:21,570 --> 00:08:26,610 Als ik ga hier, nieuw bestand, ga ik om dit opnieuw te besparen is hello.php. 185 00:08:26,610 --> 00:08:31,450 En nu ga ik om verder te gaan en zeggen: "print hello world" - 186 00:08:31,450 --> 00:08:35,130 en herinner me dat ik druk kan gebruiken, ik niet moeten afdrukken-F te gebruiken. En nu hier beneden, 187 00:08:35,130 --> 00:08:42,039 als ik PHP van hello.php doen, huh-- I lijken niet te hebben geïnterpreteerd. 188 00:08:42,039 --> 00:08:43,412 Wat heb ik verkeerd gedaan? 189 00:08:43,412 --> 00:08:44,710 >> Publiek: De schuine armbanden. 190 00:08:44,710 --> 00:08:47,015 >> DAVID MALAN: Ja, moet je dat hoekijzer boven. 191 00:08:47,015 --> 00:08:49,390 Dus het is een beetje vervelend, maar je wennen aan het snel. 192 00:08:49,390 --> 00:08:53,500 Als ik moet PHP-code te schrijven, I algemeen behoefte om het programma te vertellen, 193 00:08:53,500 --> 00:08:56,950 of vertel de tolk, hey PHP, hier komt een aantal PHP-code. 194 00:08:56,950 --> 00:09:00,440 En dan voor een goede maatregel, zou ik sluit dit niet mee, maar veeleer 195 00:09:00,440 --> 00:09:03,740 met slechts vraagteken hoek beugel, zodat hier nu naar beneden, 196 00:09:03,740 --> 00:09:06,840 als ik weer rennen dit, nu Ik krijg het gewenste resultaat. 197 00:09:06,840 --> 00:09:09,820 >> Laten we nu eens doen een lichte optimalisatie, gewoon zo dat je het eerder hebt gezien. 198 00:09:09,820 --> 00:09:14,040 Dit is een soort van vervelend dat ik moeten PHP ruimte hello.php lopen, 199 00:09:14,040 --> 00:09:16,060 omdat ik in het verleden kon gewoon schrijven dot slash 200 00:09:16,060 --> 00:09:17,560 programmanaam, dat is wel leuk. 201 00:09:17,560 --> 00:09:19,420 Het is een soort van een betere gebruikerservaring. 202 00:09:19,420 --> 00:09:24,160 >> Dus het blijkt dat je kunt dit doen in PHP met de following-- I 203 00:09:24,160 --> 00:09:28,780 kunnen gebruik maken van dit vrij cryptische bezwering aan de top hier, 204 00:09:28,780 --> 00:09:31,740 die is over het algemeen wel een keet, waarbij dit is een scherpe symbool, 205 00:09:31,740 --> 00:09:34,270 zo te zeggen, dit is een knal of een uitroepteken. 206 00:09:34,270 --> 00:09:38,490 En dit is nu het pad naar een programma Op een typische Linux systeem 207 00:09:38,490 --> 00:09:41,500 heet milieu of env. 208 00:09:41,500 --> 00:09:43,920 En dit line-- lang verhaal short-- lijn een net 209 00:09:43,920 --> 00:09:48,710 zegt, hey computer, vindt de PHP tolk voor mij in het milieu, 210 00:09:48,710 --> 00:09:50,610 vind het in je geheugen, om zo te zeggen. 211 00:09:50,610 --> 00:09:54,130 >> En wat is er nu leuk is dat als ik ga hier naar beneden, 212 00:09:54,130 --> 00:09:57,750 Ik kan dot slash doen hallo dot php, of-- hmm. 213 00:09:57,750 --> 00:09:59,000 Geen toestemming. 214 00:09:59,000 --> 00:10:02,350 Nou, je zult nog meer van dit zien met een probleem stelde zeven, als je 215 00:10:02,350 --> 00:10:04,060 nog niet hebt gedaan, met toestemmingen. 216 00:10:04,060 --> 00:10:06,510 Het blijkt dat ik nodig om deze opdracht uit te voeren 217 00:10:06,510 --> 00:10:10,779 genaamd [? chamod?] voor verandering mode-- een plus x hello.php. 218 00:10:10,779 --> 00:10:13,820 Ik moet [onverstaanbaar] dit een extra stap die vertelt mijn computer, 219 00:10:13,820 --> 00:10:16,400 maken hello.php uitvoerbaar. 220 00:10:16,400 --> 00:10:21,310 En nu kijk wat happens-- dot slash hello.php, het is gewoon loopt. 221 00:10:21,310 --> 00:10:23,310 Ik hoef niet te geven de tolk meer. 222 00:10:23,310 --> 00:10:26,680 En ik kan het nog mooier te maken, nog steeds, als ik de naam van dit ding. 223 00:10:26,680 --> 00:10:30,570 Als ik hello.php naar net Hello-- zodat het bericht in de linkerbovenhoek, 224 00:10:30,570 --> 00:10:32,860 de naam van het programma is inderdaad nu slechts Hallo. 225 00:10:32,860 --> 00:10:37,300 Nu kan ik het eruit als een C-programma, ook al is het geschreven in PHP-- 226 00:10:37,300 --> 00:10:39,210 of eerlijk gezegd een aantal andere talen. 227 00:10:39,210 --> 00:10:41,480 >> Dus marginale verbetering, geen functionele verschil. 228 00:10:41,480 --> 00:10:44,460 Maar het is gewoon een beetje nieuwsgierigheid nu, zodat u programma's te schrijven 229 00:10:44,460 --> 00:10:48,989 in elke taal, en de gebruiker niet doet moet weten of schelen wat die zijn. 230 00:10:48,989 --> 00:10:51,030 Nou, laten we eens kijken op een meer overtuigend voorbeeld nu 231 00:10:51,030 --> 00:10:52,850 dat ik slagroom op voorhand. 232 00:10:52,850 --> 00:10:54,955 En dit heet quote.php. 233 00:10:54,955 --> 00:10:56,740 En het is online beschikbaar. 234 00:10:56,740 --> 00:11:00,299 En merken dat het is vrij short-- maar het is een command line programma dat is 235 00:11:00,299 --> 00:11:02,840 gaan opzoeken aandelenkoersen voor mij, wat er werkelijk gaande is 236 00:11:02,840 --> 00:11:04,230 germane te zijn om probleem stelde zeven. 237 00:11:04,230 --> 00:11:05,396 >> Dus laten we zien wat ik doe. 238 00:11:05,396 --> 00:11:08,640 Op de top Ik heb de geopend beugel vraagteken PHP. 239 00:11:08,640 --> 00:11:13,372 Toen ik heb deze lijn, waarbij ik ben die een bestand genaamd functions.php-- 240 00:11:13,372 --> 00:11:15,080 we gaan om te zien Meer hierover in een beetje, 241 00:11:15,080 --> 00:11:17,340 maar dit is als C's versie van scherpe omvatten, 242 00:11:17,340 --> 00:11:19,090 waar je heen wil gaan onder ander bestand. 243 00:11:19,090 --> 00:11:23,720 PHP noemt het nodig is, hoewel het heeft ook een include-functie. 244 00:11:23,720 --> 00:11:26,861 En het blijkt dat function.php is gewoon iets wat ik schreef voor de les. 245 00:11:26,861 --> 00:11:29,860 Ik zet het in dezelfde map, omdat Ik wilde factor enkele code 246 00:11:29,860 --> 00:11:31,800 opdat wij zouden willen elders te gebruiken. 247 00:11:31,800 --> 00:11:34,560 >> Ondertussen kunt u waarschijnlijk afleiden wat er hier aan de hand. 248 00:11:34,560 --> 00:11:39,200 Dit is een beetje anders, maar C-- wat bedoel ik door zorgen juiste gebruik? 249 00:11:39,200 --> 00:11:41,180 Vertaal deze meer technisch. 250 00:11:41,180 --> 00:11:45,950 Onder welke omstandigheden ben ik stoppen met het programma, of verlaten? 251 00:11:45,950 --> 00:11:47,074 Ja? 252 00:11:47,074 --> 00:11:47,990 >> Publiek: Als u niet beschikt over twee commandoregel argumenten. 253 00:11:47,990 --> 00:11:49,480 >> DAVID MALAN: Als ik niet om argumenten te bevelen. 254 00:11:49,480 --> 00:11:52,396 En vergeet niet dat een van die argumenten is de naam van het programma zelf. 255 00:11:52,396 --> 00:11:55,340 En de tweede gaat worden een ander woord typ ik na de prompt. 256 00:11:55,340 --> 00:11:57,460 Dus net als C, dit is mijn manier om te controleren, 257 00:11:57,460 --> 00:12:00,022 heeft de gebruiker samenwerken en start het programma als ik van plan was? 258 00:12:00,022 --> 00:12:01,730 Nu, er is iets een beetje anders 259 00:12:01,730 --> 00:12:04,020 met C-- allereerst we hebben dit dollarteken, 260 00:12:04,020 --> 00:12:07,710 en wat doet een dollar ondertekenen duiden in PHP? 261 00:12:07,710 --> 00:12:08,440 Slechts een variabele. 262 00:12:08,440 --> 00:12:11,731 Dat is all-- gewoon een variabele gevolgd door wat je wilt eigenlijk noemen. 263 00:12:11,731 --> 00:12:14,000 Merken dat er iets ontbreekt in mijn PHP-programma, 264 00:12:14,000 --> 00:12:18,210 net als het ontbrak afgelopen week, tegenover C, dat is wat? 265 00:12:18,210 --> 00:12:21,620 >> Een types, maar ook iets anders. 266 00:12:21,620 --> 00:12:26,409 Er is geen iets function-- belangrijkste functie. 267 00:12:26,409 --> 00:12:27,450 Er is geen hoofdfunctie. 268 00:12:27,450 --> 00:12:29,680 Je begint gewoon schrijven uw code zonder 269 00:12:29,680 --> 00:12:32,790 zorgen te maken over een tamelijk willekeurige conventie van naamgeving van een aantal standaard 270 00:12:32,790 --> 00:12:33,880 functie main. 271 00:12:33,880 --> 00:12:36,720 Dus arg C is gewoon echt een globale variabele 272 00:12:36,720 --> 00:12:39,049 dat de tolk maakt voor mij beschikbaar. 273 00:12:39,049 --> 00:12:40,090 Nu is dit interessant. 274 00:12:40,090 --> 00:12:41,140 Dus kijk up spullen. 275 00:12:41,140 --> 00:12:43,370 Dollarteken voorraad is op het links, dat is mijn variabele. 276 00:12:43,370 --> 00:12:45,120 Aan de rechterkant, Er is blijkbaar 277 00:12:45,120 --> 00:12:50,270 een functie in PHP genaamd lookup dat Ik ben het passeren van mijn laatste command line 278 00:12:50,270 --> 00:12:51,902 argument to-- wat het woord is. 279 00:12:51,902 --> 00:12:53,610 En we zullen zien hoe dit werkt in een moment. 280 00:12:53,610 --> 00:12:55,380 >> En dan tot slot ben ik de rapportage van de prijs. 281 00:12:55,380 --> 00:12:58,650 Ik ben het afdrukken van één aandeel van die en die. 282 00:12:58,650 --> 00:13:02,082 En vergeet niet, dit is de manier PHP-- een manier PHP-- 283 00:13:02,082 --> 00:13:04,290 waar je niet hoeft te doen het dollarteken S meer. 284 00:13:04,290 --> 00:13:06,782 U kunt gewoon gebruik maken van accolades en steek de stekker in een aantal variabele. 285 00:13:06,782 --> 00:13:09,240 U hoeft geen zorgen te maken over met behulp van printf op dezelfde manier. 286 00:13:09,240 --> 00:13:13,530 >> En als een terzijde, wanneer je een variabele binnenkant van de dubbele aanhalingstekens als deze, 287 00:13:13,530 --> 00:13:17,370 u een mooie techniek genaamd variabele interpolatie. 288 00:13:17,370 --> 00:13:20,380 Het betekent gewoon de stekker van de variabele hier. 289 00:13:20,380 --> 00:13:23,760 En als een terzijde, sommigen van jullie die komen uit andere programmering achtergronden, 290 00:13:23,760 --> 00:13:26,960 je mag niet enkele aanhalingstekens gebruiken rond snaren om dit te doen. 291 00:13:26,960 --> 00:13:30,290 U moet dubbele aanhalingstekens te gebruiken variabele interpolatie werken. 292 00:13:30,290 --> 00:13:32,740 Anders zul je letterlijk zie die accolades. 293 00:13:32,740 --> 00:13:34,500 >> Dus tot slot, laten we verder gaan en lopen dit. 294 00:13:34,500 --> 00:13:36,690 Laat me mijn terminal een beetje groter. 295 00:13:36,690 --> 00:13:41,940 Laat me gaan en lopen binnenkant van mijn citaat directory. 296 00:13:41,940 --> 00:13:46,950 [? CDsource?] [? EEN M ?] [? citaat?] PHP citaat dot PHP, 297 00:13:46,950 --> 00:13:50,290 en ik ga op zoek naar iets zoals GOOG, die haar ticker symbool, 298 00:13:50,290 --> 00:13:55,510 en een deel van de nieuwe naam, Alfabet Inc, kost $ 717, met ingang van vandaag. 299 00:13:55,510 --> 00:13:58,680 Oké, als we willen opnieuw uit te voeren dit, iedereen 300 00:13:58,680 --> 00:14:02,600 nog een ticker ze willen opzoeken? 301 00:14:02,600 --> 00:14:06,770 >> Microsoft vind ik deze, MSFT-- $ 53. 302 00:14:06,770 --> 00:14:09,720 Ik denk dat Yahoo is misschien dat. 303 00:14:09,720 --> 00:14:12,130 En Facebook is dat. 304 00:14:12,130 --> 00:14:13,740 >> Dus wat is dit programma doen? 305 00:14:13,740 --> 00:14:16,306 De magie lijkt te worden ingebed in die lookup functie. 306 00:14:16,306 --> 00:14:17,430 Dus laten we eens een snelle blik. 307 00:14:17,430 --> 00:14:21,815 >> Het blijkt dat niet komt met PHP, het is in functions.php. 308 00:14:21,815 --> 00:14:23,690 En we zullen niet gaan door dit in detail, 309 00:14:23,690 --> 00:14:28,040 maar merken het sleutelwoord hier is dat on line zes functions.php-- 310 00:14:28,040 --> 00:14:29,440 Ik letterlijk zeggen functie. 311 00:14:29,440 --> 00:14:31,050 Ik de naam van mijn functie te geven. 312 00:14:31,050 --> 00:14:34,330 Ik geef dan elke argumenten, of parameters, 313 00:14:34,330 --> 00:14:36,480 Ik wil die functie geen types take--. 314 00:14:36,480 --> 00:14:37,580 En dan heb ik implementeren. 315 00:14:37,580 --> 00:14:39,240 >> En ik zal mijn hand wuiven bij de uitvoering, 316 00:14:39,240 --> 00:14:42,115 want het is vrij geavanceerde rechts nu, maar we zullen het opnieuw zien eigenlijk 317 00:14:42,115 --> 00:14:44,700 in een week in probleem stelde zeven. 318 00:14:44,700 --> 00:14:47,490 Maar ik kan dit ook opruimen. 319 00:14:47,490 --> 00:14:49,590 Ik ook opgenomen in de huidige code een versie 320 00:14:49,590 --> 00:14:52,340 citaat, waarin geen punt PHP-bestand heeft. 321 00:14:52,340 --> 00:14:57,270 Want wat vermoedelijk de bovenkant van het programma met de naam gewoon citeren? 322 00:14:57,270 --> 00:15:00,140 Dat de zogenaamde shebang-- de vrij cryptisch bezwering 323 00:15:00,140 --> 00:15:04,590 die zegt te vinden PHP en vervolgens draaien op mijn code hier. 324 00:15:04,590 --> 00:15:07,360 >> Oké, dus dat brengt ons naar waar we gebleven 325 00:15:07,360 --> 00:15:09,560 laatste tijd-- zij het met sommige meer geavanceerde voorbeelden. 326 00:15:09,560 --> 00:15:13,980 Voor vragen tot nu toe over PHP of wat we doen? 327 00:15:13,980 --> 00:15:15,570 No-- goed. 328 00:15:15,570 --> 00:15:16,180 Ja? 329 00:15:16,180 --> 00:15:19,610 >> Publiek: Inside the HTML-bestanden, doen u-- 330 00:15:19,610 --> 00:15:22,226 [? doe je ?] [? noem het?] a [onverstaanbaar] PHP-bestand? 331 00:15:22,226 --> 00:15:23,350 DAVID MALAN: Goede vraag. 332 00:15:23,350 --> 00:15:26,070 In een web context, die we letterlijk over de overgang naar, 333 00:15:26,070 --> 00:15:28,028 u geen gebruik maken van de zogenaamde keet aan de top, 334 00:15:28,028 --> 00:15:31,980 omdat het web server-- vaak programma genaamd Apache of Microsoft 335 00:15:31,980 --> 00:15:37,470 IIS, Internet Information Server, of een aantal andere web-server software, 336 00:15:37,470 --> 00:15:40,636 weet dat als het ziet een punt PHP-bestand, dat het 337 00:15:40,636 --> 00:15:42,010 moet de tolk draaien op. 338 00:15:42,010 --> 00:15:43,468 Het ziet er niet op dat de eerste lijn. 339 00:15:43,468 --> 00:15:45,580 Dus deze eerste lijn truc is net als je bent 340 00:15:45,580 --> 00:15:48,330 schrijven command line programs-- die we zullen niet super vaak doen, 341 00:15:48,330 --> 00:15:52,510 maar het is onze manier van het overbruggen onze C voorbeelden om nu onze PHP. 342 00:15:52,510 --> 00:16:00,680 >> Dus laten we inderdaad deze wereld te overbruggen vanaf de opdrachtregel wereld op het web 343 00:16:00,680 --> 00:16:02,230 door het volgende te doen. 344 00:16:02,230 --> 00:16:05,090 Laat me gaan en trekken hier voor slechts een moment. 345 00:16:05,090 --> 00:16:09,940 Dus als we een webserver, of liever als we mijn laptop over hier, 346 00:16:09,940 --> 00:16:11,280 die ik zal trekken als dit. 347 00:16:11,280 --> 00:16:14,250 En hier hebben we de internet in een bepaalde vorm. 348 00:16:14,250 --> 00:16:18,210 En dan hier, we hebben een server in een gebouw-- 349 00:16:18,210 --> 00:16:20,760 dit is hoe het internet works-- en hier 350 00:16:20,760 --> 00:16:23,120 is een server met een paar lampen misschien. 351 00:16:23,120 --> 00:16:27,530 Wat is er eigenlijk aan de hand tussen deze twee verbindingen? 352 00:16:27,530 --> 00:16:29,240 >> Dus in dit gebouw is een webserver. 353 00:16:29,240 --> 00:16:31,420 Dat is gewoon een computer dat loopt sommige besturingssystemen 354 00:16:31,420 --> 00:16:34,561 system-- misschien de gratis software genaamd Apache, die CS50 IDE loopt. 355 00:16:34,561 --> 00:16:36,310 Dus je kunt eigenlijk denk aan dit gebouw 356 00:16:36,310 --> 00:16:38,579 als het gebouw die CSt0 IDE wordt opgeslagen. 357 00:16:38,579 --> 00:16:40,870 Dat is waar jullie allemaal hebben rekeningen waar jullie allemaal 358 00:16:40,870 --> 00:16:43,130 uw eigen webserver running, u allen 359 00:16:43,130 --> 00:16:45,730 je eigen unieke URL's, zoals we begonnen te bespreken, 360 00:16:45,730 --> 00:16:47,280 en je zult zien meer in P. ingesteld zes. 361 00:16:47,280 --> 00:16:49,450 >> Hier is mijn laptop ergens anders op het internet. 362 00:16:49,450 --> 00:16:54,550 En dus toen ik een bezoek aan een URL die hoort voor mij, is dat het internetverkeer te gaan 363 00:16:54,550 --> 00:16:58,360 over naar de server, de server het ontvangen van een HTTP request-- 364 00:16:58,360 --> 00:17:02,900 als een index.html te krijgen en het is het beantwoorden van die webpagina. 365 00:17:02,900 --> 00:17:04,280 Dus dat is de algemene paradigma. 366 00:17:04,280 --> 00:17:07,089 Overwegende dat alles up Tot nu vandaag, alles 367 00:17:07,089 --> 00:17:09,660 werd pas gebeurt in de grenzen van dit gebouw. 368 00:17:09,660 --> 00:17:12,910 Ik was met mijn laptop, maar Ik was aangesloten op CS50 IDE, 369 00:17:12,910 --> 00:17:17,369 dus al die programma's die ik liep was de binnenkant van die server zelf. 370 00:17:17,369 --> 00:17:22,660 >> Maar nu, laten we beginnen met het hergebruik van PHP sommige werkelijke programma's schrijven dat 371 00:17:22,660 --> 00:17:24,230 worden geserveerd door een webserver. 372 00:17:24,230 --> 00:17:30,320 En om dit te doen, ik ga om te gaan in een heleboel voorbeelden 373 00:17:30,320 --> 00:17:33,710 dat introduceren hier dit idee. 374 00:17:33,710 --> 00:17:38,500 Dus dit is een soort van een mooie manier om beschrijft een programmeerparadigma. 375 00:17:38,500 --> 00:17:41,540 >> En in feite, zoals u CS50 verlaten of werken aan afstudeeropdrachten, 376 00:17:41,540 --> 00:17:43,520 of neem wat te volgen op klasse, zult u beginnen 377 00:17:43,520 --> 00:17:45,740 om te zien dat de wereld-- vooral opgegroeid 378 00:17:45,740 --> 00:17:48,300 met talen als C dat zijn super laag level-- 379 00:17:48,300 --> 00:17:51,290 beseffen dat er betere manieren van het schrijven van software. 380 00:17:51,290 --> 00:17:53,290 Er zijn bepaalde patronen die je kunt volgen, 381 00:17:53,290 --> 00:17:57,640 een bepaalde manier van het organiseren van uw bestanden en manieren om het benoemen van uw functies, 382 00:17:57,640 --> 00:18:00,300 zodat lang verhaal kort, de wereld is gekomen 383 00:18:00,300 --> 00:18:04,340 met een hele hoop van acroniemen en namen voor wegen programmering. 384 00:18:04,340 --> 00:18:06,260 Dit zijn slechts technieken die je zou kunnen gebruiken. 385 00:18:06,260 --> 00:18:09,660 >> En een van hen is genoemd MVC, voor Model View Controller. 386 00:18:09,660 --> 00:18:12,270 En dit is slechts voor Nu, een overdreven ingewikkeld 387 00:18:12,270 --> 00:18:18,960 manier om te zeggen hoe je moet lay-out een PHP-gebaseerde website, in ons geval. 388 00:18:18,960 --> 00:18:22,140 Hoe organiseer je bestanden, hoe organiseer je je logica, 389 00:18:22,140 --> 00:18:26,220 op een manier die het gemakkelijker maakt schrijf ingewikkelder websites? 390 00:18:26,220 --> 00:18:28,550 En inderdaad, zullen we snel krijgen daar met p-set zeven. 391 00:18:28,550 --> 00:18:32,020 >> Dus in de wereld van MVC, je gaat om te zien dat onze code kunnen over het algemeen 392 00:18:32,020 --> 00:18:38,290 worden gekarakteriseerd als ofwel modelcode, of controller code, of uitzicht op de code. 393 00:18:38,290 --> 00:18:40,200 En ik ga te simpel als follows-- 394 00:18:40,200 --> 00:18:42,074 de controller is de hersens van uw programma, 395 00:18:42,074 --> 00:18:44,100 Het is waar alle interessant logica gebeurt. 396 00:18:44,100 --> 00:18:46,110 Dus alles wat we geweest schrijven tot nu toe in de klas, 397 00:18:46,110 --> 00:18:48,210 is een soort controller code-- dat het beheersen van 398 00:18:48,210 --> 00:18:50,585 je programma, je loops, uw voorwaarden, uw functies 399 00:18:50,585 --> 00:18:52,100 en variabelen en dat alles. 400 00:18:52,100 --> 00:18:56,160 >> Uitzicht, nu, gaan een beetje te zijn meer voor de hand in de wereld van het web. 401 00:18:56,160 --> 00:18:59,360 Een visie is de esthetiek van uw website. 402 00:18:59,360 --> 00:19:04,080 Het is wat de gebruiker de beelden sees--, HTML tabellen, de HTML-tags, en al 403 00:19:04,080 --> 00:19:08,220 dat, alle pluizige esthetische spul dat is niet zo moeilijk om te schrijven, 404 00:19:08,220 --> 00:19:11,380 maar is net wat je genereren, is de zogenaamde view, de esthetiek. 405 00:19:11,380 --> 00:19:13,880 En model, uiteindelijk gaat database stuff-- zijn welke 406 00:19:13,880 --> 00:19:16,510 we duiken in alle beginnen hoe meer deze woensdag. 407 00:19:16,510 --> 00:19:19,740 Dus controller logica, uitzicht is de esthetische spul, 408 00:19:19,740 --> 00:19:23,500 en het model gaat worden, waar We slaan onze actuele gegevens. 409 00:19:23,500 --> 00:19:26,410 >> Dus laten we eens kijken naar dit concreter met het volgende voorbeeld. 410 00:19:26,410 --> 00:19:34,700 Ik ga hier in mijn map gaan bron huidige code-- allemaal 411 00:19:34,700 --> 00:19:35,770 is online beschikbaar. 412 00:19:35,770 --> 00:19:37,800 En ik ga naar versie nul te gaan. 413 00:19:37,800 --> 00:19:41,500 En hier is-- laten we noemen het de versie nul van de website CS50's. 414 00:19:41,500 --> 00:19:43,010 Er is niet veel hier helemaal. 415 00:19:43,010 --> 00:19:46,810 Het is een zeer eenvoudige webpagina die is waarschijnlijk met behulp van wat HTML tags-- net 416 00:19:46,810 --> 00:19:48,970 denk uit het verleden voorbeelden? 417 00:19:48,970 --> 00:19:49,890 >> Wat is dat? 418 00:19:49,890 --> 00:19:53,920 H1-- waarschijnlijk voor die grote vette titel, dat logo op de top, CS50. 419 00:19:53,920 --> 00:19:55,080 En wat is in het spel? 420 00:19:55,080 --> 00:19:55,799 Ja? 421 00:19:55,799 --> 00:19:56,840 Publiek: Ongeordende lijst. 422 00:19:56,840 --> 00:19:59,990 DAVID MALAN: Ongeordende list-- zodat de UL tag en misschien een paar LI-tags. 423 00:19:59,990 --> 00:20:01,840 En als je niet van deze herinneren, het is eerlijk gezegd niet uit. 424 00:20:01,840 --> 00:20:04,170 Dit zijn pluizige soort implementatie details van HTML 425 00:20:04,170 --> 00:20:06,378 dat je snel opzoeken en je bent weer op weg. 426 00:20:06,378 --> 00:20:10,040 We zullen meer richten op de programmering ideeën die de sappiger stukken zijn. 427 00:20:10,040 --> 00:20:12,890 >> Dus laten we gewoon een snelle kijk naar de HTML-- en inderdaad 428 00:20:12,890 --> 00:20:16,880 als ik het openstellen van de bron weergave hier, yup, Dat is precies wat er aan de hand hier. 429 00:20:16,880 --> 00:20:18,440 Er is een UL tag. 430 00:20:18,440 --> 00:20:20,630 Geneste binnenin dat wil LI markeringen. 431 00:20:20,630 --> 00:20:24,470 En dan leende ik de URL de eigenlijke programma in. 432 00:20:24,470 --> 00:20:27,570 >> En vervolgens in de lectures.php blijkbaar 433 00:20:27,570 --> 00:20:31,640 een dynamisch gegenereerde pagina dat gaat te hebben, laten we see-- ah, 434 00:20:31,640 --> 00:20:33,170 de eerste twee weken van de lezing. 435 00:20:33,170 --> 00:20:36,600 Dus week nul en één week, laten we kijk naar dit-- als ik bekijken pagina bron, 436 00:20:36,600 --> 00:20:38,120 ook super eenvoudig. 437 00:20:38,120 --> 00:20:42,430 Deze leiden tot twee bladzijden riep week0.php en week1.php. 438 00:20:42,430 --> 00:20:44,040 Dus overweeg nu wat er gebeurt. 439 00:20:44,040 --> 00:20:50,630 >> Wanneer ik op week0.php, mijn laptop is het maken van een verzoek om week0.php. 440 00:20:50,630 --> 00:20:53,700 441 00:20:53,700 --> 00:20:58,110 De webserver, alias, CS50 IDE, ontvangt dat virtual envelope. 442 00:20:58,110 --> 00:21:01,040 Het zien van een bericht als, krijgen week0.php. 443 00:21:01,040 --> 00:21:05,060 Vervolgens wordt de interpretatie van het bestand, top naar beneden, van links naar het bestand right-- 444 00:21:05,060 --> 00:21:07,720 riep week0.php-- en uitspugen de resultaten. 445 00:21:07,720 --> 00:21:10,510 Dus de binnenkant van dit bestand, week0.php, moet 446 00:21:10,510 --> 00:21:15,410 de controller logica genereert deze HTML, en we zullen snel zien dat. 447 00:21:15,410 --> 00:21:19,340 >> Maar voor nu, laat me op week nul, en nu hebben we woensdag en vrijdag, 448 00:21:19,340 --> 00:21:25,260 en nu hebben we de slides langzaam van week nul. 449 00:21:25,260 --> 00:21:27,400 En je zou kunnen herinneren deze uit de weg terug wanneer. 450 00:21:27,400 --> 00:21:29,340 Dus dat is alles wat deze website doet. 451 00:21:29,340 --> 00:21:31,120 >> Dus laten we eens kijken hoe het dit doet. 452 00:21:31,120 --> 00:21:34,290 Ik ga om terug te gaan naar de source code hier, in CS50 IDE, 453 00:21:34,290 --> 00:21:36,660 en ik ga openstellen index.php. 454 00:21:36,660 --> 00:21:38,910 Boven aan dit bestand is een heleboel opmerkingen. 455 00:21:38,910 --> 00:21:43,000 En dan in het midden van het bestand, blijkt, is geen PHP-code dan ook. 456 00:21:43,000 --> 00:21:47,380 Want als je niet een van de hebben geopend beugel vraagteken PHP-tags, 457 00:21:47,380 --> 00:21:49,180 je bent vrij om gewoon HTML. 458 00:21:49,180 --> 00:21:51,480 >> Want wat de PHP tolk verondersteld wordt te doen, 459 00:21:51,480 --> 00:21:53,938 is wanneer het dit leest file-- van boven naar beneden, van links naar right-- 460 00:21:53,938 --> 00:21:59,100 interpreteert alleen code ziet tussen die punthaken vraagteken. 461 00:21:59,100 --> 00:22:02,380 En iets anders dat het niet herkennen als PHP, spuugt gewoon uit. 462 00:22:02,380 --> 00:22:05,080 En HTML is een van de dingen het zal gewoon spugen. 463 00:22:05,080 --> 00:22:09,090 >> Dus dit bestand zou kunnen hebben is index.html genoemd, 464 00:22:09,090 --> 00:22:11,690 maar ik ben het benoemen van alles dot PHP als een opstapje. 465 00:22:11,690 --> 00:22:15,960 Lectures.php-- evenzo underwhelming, het is slechts enkele HTML. 466 00:22:15,960 --> 00:22:19,840 Week0.php, net slechts enkele HTML. 467 00:22:19,840 --> 00:22:22,300 >> Maar nu laten we aan de spreekwoordelijke techniek hoed, 468 00:22:22,300 --> 00:22:24,400 en onderzoeken hoe we dit kunnen verbeteren. 469 00:22:24,400 --> 00:22:28,541 Het is niet moeilijk om dit te doen, maar ik soort van gedeconcentreerde in kopiëren en plakken. 470 00:22:28,541 --> 00:22:31,540 En in feite, als ik week twee, u weet wat ik ben waarschijnlijk gaan doen? 471 00:22:31,540 --> 00:22:34,940 Ik ga naar week1.php, ik ben ga alles markeren. 472 00:22:34,940 --> 00:22:39,110 Ik ga om het te kopiëren, plakken in een nieuw bestand met de naam week2.php, 473 00:22:39,110 --> 00:22:42,440 tweak sommige URL's, en op mijn manier. 474 00:22:42,440 --> 00:22:45,240 >> Dus gebaseerd op wat we hebben gezien in C al, 475 00:22:45,240 --> 00:22:46,860 Dit voelt niet goed, hopelijk. 476 00:22:46,860 --> 00:22:49,610 Kopiëren, plakken zelden de juiste oplossing. 477 00:22:49,610 --> 00:22:51,429 Dus wat kunnen we beginnen te doen om dit te verbeteren? 478 00:22:51,429 --> 00:22:53,345 Waar liggen de kansen voor een beter ontwerp? 479 00:22:53,345 --> 00:22:56,890 480 00:22:56,890 --> 00:22:58,760 >> Tegen de tijd dat ik aan week acht, het gaat 481 00:22:58,760 --> 00:23:00,910 echt vervelend te zijn als ik wil veranderen 482 00:23:00,910 --> 00:23:03,930 het lettertype van elk van mijn pagina's, of als ik wil 483 00:23:03,930 --> 00:23:06,522 de structuur van de inrichting te veranderen. 484 00:23:06,522 --> 00:23:08,396 Dus waar is de kans voor een beter ontwerp? 485 00:23:08,396 --> 00:23:11,990 486 00:23:11,990 --> 00:23:15,160 Nou, laten we eens kijken wat er gedeeld door al deze bestanden. 487 00:23:15,160 --> 00:23:21,696 >> Hier is een week, hier is week nul, hier is lectures.php, 488 00:23:21,696 --> 00:23:25,790 hier is index.php-- wat hetzelfde is en Wat is het verschil, grofweg, 489 00:23:25,790 --> 00:23:26,760 in elk van deze bestanden? 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 >> PUBLIEK: [onverstaanbaar] 493 00:23:34,560 --> 00:23:41,244 494 00:23:41,244 --> 00:23:42,160 DAVID MALAN: OK, goed. 495 00:23:42,160 --> 00:23:46,115 Dus er is een patroon, zeker, waarbij elke keer als ik kies lezing die ik, 496 00:23:46,115 --> 00:23:48,250 Ik moet het genereren van een zeer vergelijkbaar uitziende pagina. 497 00:23:48,250 --> 00:23:50,375 En dus misschien kan ik hefboomwerking het feit dat echt, 498 00:23:50,375 --> 00:23:53,060 we bewust numeriek geïndexeerd onze lectures-- 499 00:23:53,060 --> 00:23:55,290 als ik nog meer kan zetten woorden in uw antwoord. 500 00:23:55,290 --> 00:23:59,984 En wat is het enige, echt, dat verandert tussen week een-- 501 00:23:59,984 --> 00:24:02,400 en laat me scroll naar beneden dus het is ongeveer in dezelfde plaats-- 502 00:24:02,400 --> 00:24:05,480 dus hier is week nul, ruwweg bovenaan. 503 00:24:05,480 --> 00:24:12,370 Hier is een week, week nul, één week, week nul. 504 00:24:12,370 --> 00:24:14,370 OK, letterlijk als je weet geen programma dan ook, 505 00:24:14,370 --> 00:24:16,286 dit is nu net als een patroonherkenning spel. 506 00:24:16,286 --> 00:24:17,200 Dus wat is er anders? 507 00:24:17,200 --> 00:24:18,765 Ja? 508 00:24:18,765 --> 00:24:19,777 >> PUBLIEK: [onverstaanbaar] 509 00:24:19,777 --> 00:24:22,360 DAVID MALAN: Goed, dus de titel is aan het veranderen, ooit zo iets. 510 00:24:22,360 --> 00:24:24,010 Nul gaat uiteraard één. 511 00:24:24,010 --> 00:24:25,570 Hetzelfde gebeurt in de H1-tag. 512 00:24:25,570 --> 00:24:28,790 En we niet helemaal zien het zo gemakkelijk, omdat de URL's zijn een beetje lang. 513 00:24:28,790 --> 00:24:30,670 Maar die URL's zijn iets te veranderen. 514 00:24:30,670 --> 00:24:34,490 >> Maar wat niet is aan het veranderen, durf ik zeggen, de meeste van de inhoud van de page-- 515 00:24:34,490 --> 00:24:38,530 de HTML-tag is hetzelfde, het hoofd is hetzelfde, de titel is bijna hetzelfde, 516 00:24:38,530 --> 00:24:40,659 het lichaam is hetzelfde, en bijna alles anders 517 00:24:40,659 --> 00:24:42,450 is hetzelfde behalve voor die kleine tweaks. 518 00:24:42,450 --> 00:24:45,310 Dus hoe kunnen we gaan over het factoring een aantal van dit uit? 519 00:24:45,310 --> 00:24:48,740 >> Nou laat me voorstellen precies dat in de volgende versie. 520 00:24:48,740 --> 00:24:53,890 Dus hier in één versie, heb ik de exacte dezelfde bestanden, plus een paar anderen. 521 00:24:53,890 --> 00:24:59,730 Hier index.php-- en zelfs als je nog nooit eerder gezien PHP, 522 00:24:59,730 --> 00:25:05,511 wat ben ik waarschijnlijk doen om dit op te lossen probleem-- op basis van wat u hier ziet? 523 00:25:05,511 --> 00:25:11,300 524 00:25:11,300 --> 00:25:12,760 Ja, is dat een lichte inzet? 525 00:25:12,760 --> 00:25:13,450 Nee? 526 00:25:13,450 --> 00:25:16,020 Ja, ga op. 527 00:25:16,020 --> 00:25:17,380 >> PUBLIEK: [onverstaanbaar] 528 00:25:17,380 --> 00:25:18,380 >> DAVID MALAN: Yep. 529 00:25:18,380 --> 00:25:20,380 >> PUBLIEK: [onverstaanbaar] 530 00:25:20,380 --> 00:25:26,090 531 00:25:26,090 --> 00:25:28,669 >> DAVID MALAN: ik heb je nodig om te spreken alleen een beetje luider. 532 00:25:28,669 --> 00:25:31,084 >> PUBLIEK: [onverstaanbaar] 533 00:25:31,084 --> 00:25:35,744 534 00:25:35,744 --> 00:25:36,660 DAVID MALAN: OK, goed. 535 00:25:36,660 --> 00:25:38,620 En ik think-- het was moeilijk te krijge maar ik hoor 536 00:25:38,620 --> 00:25:42,690 denk dat wat je krijgt bij is dat de tags die gemeenschappelijke up top waren, 537 00:25:42,690 --> 00:25:47,710 en labels die gemeenschappelijk waren aan de onderkant, zijn nu meegenomen uit, 538 00:25:47,710 --> 00:25:51,140 of gedegradeerd tot welke bestanden? 539 00:25:51,140 --> 00:25:53,476 Header.php en footer.php-- en we gaan 540 00:25:53,476 --> 00:25:55,600 enkele tweaks leveren aan het adres van de zorg die u zojuist 541 00:25:55,600 --> 00:25:59,370 geuit over de nummers veranderen, voor Bijvoorbeeld, als ik het goed hoorde je. 542 00:25:59,370 --> 00:26:02,060 >> Maar dat lijkt de kern van het zijn. 543 00:26:02,060 --> 00:26:04,820 Als er een enorme hoeveelheid redundantie aan de bovenkant van de pagina, 544 00:26:04,820 --> 00:26:06,736 en een enorme hoeveelheid redundantie onderaan, 545 00:26:06,736 --> 00:26:09,280 laten we letterlijk hoogtepunt en snijd die inhoud uit, 546 00:26:09,280 --> 00:26:13,270 zet het in een aparte file-- net als het idee van CSS, waar we meegenomen uit 547 00:26:13,270 --> 00:26:16,710 vergelijkbaar esthetica, zet in een apart punt PHP-bestand, 548 00:26:16,710 --> 00:26:20,340 gebruik maken van de mechanism-- vereisen die is als C scherpe include-- die 549 00:26:20,340 --> 00:26:23,570 is in wezen hetzelfde als zeggen gaan pak de inhoud van header.php, 550 00:26:23,570 --> 00:26:25,370 en kopieer en plak ze hier. 551 00:26:25,370 --> 00:26:29,490 >> Maar wat dit betekent is dat nu in index.php, ik heb die twee lijnen. 552 00:26:29,490 --> 00:26:32,130 In lectures.php ik ook hebben deze twee lijnen. 553 00:26:32,130 --> 00:26:35,230 In week0.php ik ook hebben deze twee lijnen. 554 00:26:35,230 --> 00:26:38,380 >> Dus nu, als ik wil veranderen de titel van al mijn pagina's, 555 00:26:38,380 --> 00:26:40,530 of ik wil het veranderen fundamentele structuur, 556 00:26:40,530 --> 00:26:44,380 Ik kan het nu veranderen in slechts één plaats, of twee places-- kop- en voettekst, 557 00:26:44,380 --> 00:26:45,429 respectievelijk. 558 00:26:45,429 --> 00:26:47,970 Nu start de code te kijken een beetje cryptisch, toch? 559 00:26:47,970 --> 00:26:53,590 Maar als u denkt over wat de pagina wordt doing-- als ik het aanvragen week0.php, 560 00:26:53,590 --> 00:26:59,880 net zoals op de tekening boven hier-- wanneer week0.php wordt gevraagd, 561 00:26:59,880 --> 00:27:00,960 wat betekent dat? 562 00:27:00,960 --> 00:27:04,410 >> Letterlijk, dit bestand verzoekt de browser. 563 00:27:04,410 --> 00:27:06,240 Het web server-- a.k.a. 564 00:27:06,240 --> 00:27:09,250 CS50 ID-- pakt dit bestand, week0.php, en leest 565 00:27:09,250 --> 00:27:10,780 is van boven naar beneden, van links naar rechts. 566 00:27:10,780 --> 00:27:15,400 Op lijn één, het onmiddellijk ontmoetingen geopend beugel vraagteken PHP, vereisen 567 00:27:15,400 --> 00:27:17,872 header dot PHP, en zo wat de PHP-tolk 568 00:27:17,872 --> 00:27:20,580 does-- die is ingebouwd in het web server, omdat we voorgeconfigureerd 569 00:27:20,580 --> 00:27:24,580 het voor u-- automatisch gaat in header.php, kopieert de inhoud, 570 00:27:24,580 --> 00:27:25,640 plakt ze hier. 571 00:27:25,640 --> 00:27:28,790 >> Maar toen de tolk ontmoetingen vraagteken haakje sluiten, 572 00:27:28,790 --> 00:27:30,320 dus het is allemaal gedaan denken. 573 00:27:30,320 --> 00:27:33,400 Nu is het gewoon blindelings spuugt out lijnen twee door zeven, 574 00:27:33,400 --> 00:27:35,240 want het is gewoon rauwe HTML. 575 00:27:35,240 --> 00:27:38,470 Krijgt naar lijn acht, en doet dat Dezelfde magie again-- openen van het bestand, 576 00:27:38,470 --> 00:27:41,460 grijpen de inhoud, en die hen of ze plakken 577 00:27:41,460 --> 00:27:42,480 recht toen en daar. 578 00:27:42,480 --> 00:27:44,210 >> Maar ik gezinspeeld op een bug. 579 00:27:44,210 --> 00:27:48,610 Dit is een gedeeltelijke stap achteruit, want als we kijken in header.php, 580 00:27:48,610 --> 00:27:50,850 Ik heb soort snijden een hoek. 581 00:27:50,850 --> 00:27:56,250 Welke functie heb ik opgeven in orde om dit verdedigbaar beter ontwerp te krijgen? 582 00:27:56,250 --> 00:27:57,305 Ja? 583 00:27:57,305 --> 00:27:58,180 PUBLIEK: [onverstaanbaar] 584 00:27:58,180 --> 00:28:00,570 DAVID MALAN: Ja, ik soort van sneed een triviale hoek. 585 00:28:00,570 --> 00:28:04,489 U wees erop dat wat aan het veranderen was was de titel, het nummer in de titel, 586 00:28:04,489 --> 00:28:05,530 en het aantal in de H1. 587 00:28:05,530 --> 00:28:08,170 Dus mijn oplossing was, OK, laten we gewoon de naam van de pagina, 588 00:28:08,170 --> 00:28:10,080 en niet behandelen die enkel probleem. 589 00:28:10,080 --> 00:28:12,130 Dus dat is een gedeeltelijke stap achteruit voor zeker. 590 00:28:12,130 --> 00:28:14,300 >> Maar wat opmerkelijk is hier is dat wat ik heb gedaan 591 00:28:14,300 --> 00:28:17,200 anderszins ingecalculeerd alles uit de gewone dingen. 592 00:28:17,200 --> 00:28:21,520 En in footer.php, merk ik ingecalculeerd uit dat alles, zij het in mindere, 593 00:28:21,520 --> 00:28:22,790 gemeen spul. 594 00:28:22,790 --> 00:28:26,070 Dus ik moet een of andere manier nu in staat zijn om neem een ​​andere stap voorwaarts, en bevestig 595 00:28:26,070 --> 00:28:27,160 die titel kwesties. 596 00:28:27,160 --> 00:28:28,180 Dus laten we dat doen. 597 00:28:28,180 --> 00:28:35,060 >> Laat me gaan in mijn tweede versie Hier, waarbij wederom dezelfde bestanden 598 00:28:35,060 --> 00:28:36,825 behalve één nieuwe toevoeging. 599 00:28:36,825 --> 00:28:38,950 En het is een beetje meer breedsprakig, maar laten we eens kijken of we 600 00:28:38,950 --> 00:28:40,550 kan plagen elkaar wat er hier aan de hand. 601 00:28:40,550 --> 00:28:45,370 Dus in plaats van dat header.php en footer.php, 602 00:28:45,370 --> 00:28:50,180 Ik meen mij te slechts vereisen een file-- genoemd, natuurlijk, helpers.php. 603 00:28:50,180 --> 00:28:52,560 En laat me nu bepalen, wat is de binnenkant van helpers.php 604 00:28:52,560 --> 00:28:55,330 is gewoon een stel functies die ik schreef, net als vroeger. 605 00:28:55,330 --> 00:28:57,550 Maar ik noemde het helpers.php. 606 00:28:57,550 --> 00:29:00,370 >> Nu schijnbaar, in lijn drie en 10, ik ben 607 00:29:00,370 --> 00:29:02,840 roepen twee functions-- maken header, maken voettekst. 608 00:29:02,840 --> 00:29:05,040 Die komen niet met PHP, schreef ik die mezelf. 609 00:29:05,040 --> 00:29:07,880 En ik zet ze in helpers.php. 610 00:29:07,880 --> 00:29:11,210 >> Nu hebben we alleen gezien deze syntaxis een keer, en het was super kort. 611 00:29:11,210 --> 00:29:15,330 Maar dit is blijkbaar een argument header, de functie te maken. 612 00:29:15,330 --> 00:29:16,450 Waarom weet ik dat? 613 00:29:16,450 --> 00:29:18,522 Nou hier is een goede paren, hier is een open paren. 614 00:29:18,522 --> 00:29:21,230 En natuurlijk, net als in C, alles tussen de haakjes 615 00:29:21,230 --> 00:29:23,350 een input-- of argument voor de functie. 616 00:29:23,350 --> 00:29:26,710 >> Wat is het datatype van dit argument, gebaseerd op wat ik heb gewezen? 617 00:29:26,710 --> 00:29:30,820 Wat doen die vierkante haakjes geven, op basis van vorige week? 618 00:29:30,820 --> 00:29:33,390 Ja, het is een array-- specifiek een associatieve array. 619 00:29:33,390 --> 00:29:35,700 En deze syntaxis weliswaar is een beetje funky, 620 00:29:35,700 --> 00:29:38,860 maar dit is gewoon voorbij in een belangrijke waarde paar. 621 00:29:38,860 --> 00:29:43,530 De sleutel is, citaat unquote titel, en de waarde is CS50. 622 00:29:43,530 --> 00:29:46,220 >> Als we hadden gedaan in C, het zou kunnen in plaats daarvan 623 00:29:46,220 --> 00:29:49,400 kijk meer als dit, gewoon citaat unquote CS50-- 624 00:29:49,400 --> 00:29:52,460 of zelfs zou worden gekruld bretels, of iets dergelijks in C, 625 00:29:52,460 --> 00:29:55,580 waarbij de sleutel nul, en de waarde is CS50. 626 00:29:55,580 --> 00:29:59,840 Maar nogmaals, PHP, hoewel de syntax is, nogmaals, een beetje raar, 627 00:29:59,840 --> 00:30:02,860 het laat je in passeren woorden in plaats van nummers 628 00:30:02,860 --> 00:30:05,120 om sleutels te associëren met waarden. 629 00:30:05,120 --> 00:30:06,390 >> Dus wat betekent dit allemaal? 630 00:30:06,390 --> 00:30:09,750 Als ik in helpers.php, laten we eens kijken naar deze functie. 631 00:30:09,750 --> 00:30:13,620 renderHeader.php plaats renderHeader is mijn functie, 632 00:30:13,620 --> 00:30:16,220 en ik weet dat omdat ik zie de functie sleutelwoord. 633 00:30:16,220 --> 00:30:19,450 Dit is nieuw van C-- het blijkbaar neemt een argument genoemd data-- 634 00:30:19,450 --> 00:30:22,400 maar ik zou dit hebben genoemd wat dan ook, maar ik noemde het data, 635 00:30:22,400 --> 00:30:25,090 alleen maar om een ​​beetje schoon-- en gewoon een gok, vooral 636 00:30:25,090 --> 00:30:28,173 als je hebt geprogrammeerd in een andere hogere programmeertaal voor, iets 637 00:30:28,173 --> 00:30:29,820 boven C, conceptueel. 638 00:30:29,820 --> 00:30:33,820 >> Wat doet gelijke geopend beugel square bracket waarschijnlijk betekenen? 639 00:30:33,820 --> 00:30:35,540 Of wat zou dat betekenen? 640 00:30:35,540 --> 00:30:39,660 We hebben dit niet gezien in C. Yeah? 641 00:30:39,660 --> 00:30:40,480 >> Een lege array. 642 00:30:40,480 --> 00:30:45,440 Concreet betekent dit dat als De gebruiker hoeft niet te bellen renderHeader 643 00:30:45,440 --> 00:30:49,340 met een argument, ben ik nog steeds een argument genaamd gegevens, 644 00:30:49,340 --> 00:30:52,327 maar de standaard waarde is naar een lege array. 645 00:30:52,327 --> 00:30:53,660 Dus het is gewoon een leuke gemak. 646 00:30:53,660 --> 00:30:56,493 Ik hoef niet te schreeuwen bij de gebruiker, of zeggen dat je gebruikte mijn functie verkeerd. 647 00:30:56,493 --> 00:30:59,849 Ik kan gewoon een standaard geven de gebruiker waarde, als ik niet bijzonder schelen. 648 00:30:59,849 --> 00:31:01,890 Nu deze functie, ik ben ga mijn handen zwaaien. 649 00:31:01,890 --> 00:31:07,620 Maar dit extract functie kunt ons om deze variabelen in de gegevens doorgeven 650 00:31:07,620 --> 00:31:10,360 in header.php op de volgende manier. 651 00:31:10,360 --> 00:31:13,100 En dit is het laatste stuk, Ik denk, van funky syntaxis. 652 00:31:13,100 --> 00:31:15,860 Hier is mijn nieuwe versie van header.php-- is 653 00:31:15,860 --> 00:31:20,140 placht te zeggen, letterlijk open beugel titel CS50, en dat was het. 654 00:31:20,140 --> 00:31:21,766 En hetzelfde voor de H1. 655 00:31:21,766 --> 00:31:24,310 >> Nu het blijkbaar zegt iets behoorlijk funky. 656 00:31:24,310 --> 00:31:28,030 En laat me dit te vereenvoudigen even als volgt. 657 00:31:28,030 --> 00:31:31,020 Dit is wat ik heb veranderde mijn titel te zijn. 658 00:31:31,020 --> 00:31:35,140 Echter, het wordt een beetje lelijk om constant open haakjes met PHP, 659 00:31:35,140 --> 00:31:36,610 en gebruik vervolgens de printfunctie. 660 00:31:36,610 --> 00:31:40,810 Het blijkt dat PHP heeft een verkorte notatie voor dit, dat is gewoon 661 00:31:40,810 --> 00:31:45,050 een gelijk teken, dat is technisch gezien een functie genaamd echo in plaats van print, 662 00:31:45,050 --> 00:31:46,800 maar het is hetzelfde, effectief. 663 00:31:46,800 --> 00:31:48,440 >> Dat ziet er gewoon beter. 664 00:31:48,440 --> 00:31:50,510 Het is gewoon een syntactische suiker, als je wil, 665 00:31:50,510 --> 00:31:52,260 dat maakt mijn code ziet er een beetje beter. 666 00:31:52,260 --> 00:31:54,010 Maar het blijkt, en we zullen dit opnieuw zien 667 00:31:54,010 --> 00:31:57,420 het duurde niet lang, we hebben om dit te bellen hinderlijk lang functie genaamd 668 00:31:57,420 --> 00:32:00,582 HTML speciale tekens in PHP, want het blijkt 669 00:32:00,582 --> 00:32:02,790 zijn er bepaalde inputs dat de gebruiker kan geven ons, 670 00:32:02,790 --> 00:32:05,160 of gebruikers ons kunnen geven, die gaan naar onze site te breken. 671 00:32:05,160 --> 00:32:07,035 Maar we zullen zien dat de volgende week met JavaScript. 672 00:32:07,035 --> 00:32:10,740 Maar voor nu, weet alleen dat Dit bestand, headers.php, gewoon 673 00:32:10,740 --> 00:32:13,040 neemt de titel die Ik ging in het maken 674 00:32:13,040 --> 00:32:17,380 zeker dat het veilig is om te worden geïnjecteerd in een web pagina, en het spuugt het uit als mijn titel 675 00:32:17,380 --> 00:32:18,640 en zoals mijn H1. 676 00:32:18,640 --> 00:32:24,440 Dus als ik in deze versie nu, merken dat lezingen heeft zijn titel terug, 677 00:32:24,440 --> 00:32:28,630 week nul heeft zijn titel terug, en inderdaad, de HTML ik genereren 678 00:32:28,630 --> 00:32:32,110 identiek aan wat mijn eerste versie was-- behalve mijn witruimte, 679 00:32:32,110 --> 00:32:35,150 want ik ben begonnen opmaak mijn code een beetje anders. 680 00:32:35,150 --> 00:32:38,082 Maar ik heb alle gegenereerde de code die ik zorg over. 681 00:32:38,082 --> 00:32:39,790 Dus laat me pauzeren gewoon een moment en zien 682 00:32:39,790 --> 00:32:42,200 als er vragen of verwarring die ik heb gemaakt. 683 00:32:42,200 --> 00:32:44,970 684 00:32:44,970 --> 00:32:48,150 Oké, dus laten draaien een beetje harder hier 685 00:32:48,150 --> 00:32:51,500 om te zien of er een mogelijkheden voor verbetering. 686 00:32:51,500 --> 00:32:56,130 Helpers.php dit had ook functie, genaamd renderFooter. 687 00:32:56,130 --> 00:32:59,652 En wat is opmerkelijk over renderHeader en renderFooter? 688 00:32:59,652 --> 00:33:02,610 En nogmaals, voor de doeleinden van vandaag, weet dat het extract functie is gewoon 689 00:33:02,610 --> 00:33:08,280 mijn manier van passerende argumenten in header.php en 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 >> PUBLIEK: [onverstaanbaar] 693 00:33:13,056 --> 00:33:15,180 DAVID MALAN: Ja, maar ik veranderde de nodig lijn. 694 00:33:15,180 --> 00:33:19,410 Dus letterlijk, heb ik de zonde begaan kopiëren en plakken, nog maar eens. 695 00:33:19,410 --> 00:33:21,920 Het is niet een enorm aantal lijnen, maar kom on-- 696 00:33:21,920 --> 00:33:25,220 als ik het kopiëren en plakken alles alleen maar om een ​​woordje te veranderen, 697 00:33:25,220 --> 00:33:28,610 en het ene woordje dat Alan wijst out is voettekst hier, versus header hier. 698 00:33:28,610 --> 00:33:30,670 Anders, alles is identiek, met uitzondering van, 699 00:33:30,670 --> 00:33:32,180 Uiteraard namen de functie. 700 00:33:32,180 --> 00:33:33,690 Dus wat kan er beter? 701 00:33:33,690 --> 00:33:39,810 >> Nou laat me open te stellen deze versie hier, waarbij in helpers.php, 702 00:33:39,810 --> 00:33:42,300 waarom heb ik niet alleen een beetje slimmer over dit? 703 00:33:42,300 --> 00:33:46,410 Schrijf iets ingewikkelder code, maar noemen het maken? 704 00:33:46,410 --> 00:33:48,470 Dus wat heb ik fundamenteel veranderd? 705 00:33:48,470 --> 00:33:51,770 >> Het duurt een argument now-- twee argumenten, gegevens nog steeds. 706 00:33:51,770 --> 00:33:54,444 En wat is dan de eerste Naam mogelijk gebruikt voor, 707 00:33:54,444 --> 00:33:55,860 op basis van wat je hier lezen? 708 00:33:55,860 --> 00:33:58,452 Zelfs als sommige van de syntax is nog nieuw. 709 00:33:58,452 --> 00:33:59,660 Wat is dollarteken template? 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 >> PUBLIEK: kop- of voettekst. 713 00:34:03,710 --> 00:34:04,510 >> DAVID MALAN: kop- of voettekst. 714 00:34:04,510 --> 00:34:07,134 Dus blijkbaar, heb ik besloten dat als het enige dat verandert 715 00:34:07,134 --> 00:34:10,159 is wat template ik wil om print-- en door het sjabloon 716 00:34:10,159 --> 00:34:13,100 Ik bedoel, dit is een blauwdruk voor code die ik wil output, 717 00:34:13,100 --> 00:34:16,350 maar ik wil plug in sommige values-- dus als het alleen header 718 00:34:16,350 --> 00:34:20,440 of voettekst, waarom niet ik parametriseren dat en bel het argument dollarteken 719 00:34:20,440 --> 00:34:21,409 template? 720 00:34:21,409 --> 00:34:26,250 En dan is dit funky syntaxis stelt me een pad creëren hier een variabele. 721 00:34:26,250 --> 00:34:28,030 >> Dus dollarteken pad is een variabele. 722 00:34:28,030 --> 00:34:31,120 Wat doet deze syntaxis te doen, als je bekend bent? 723 00:34:31,120 --> 00:34:32,512 Ja? 724 00:34:32,512 --> 00:34:34,065 >> PUBLIEK: [onverstaanbaar] 725 00:34:34,065 --> 00:34:34,940 DAVID MALAN: Precies. 726 00:34:34,940 --> 00:34:37,600 Als sjabloon, citaat unquote, header, of als sjabloon, 727 00:34:37,600 --> 00:34:41,170 citaat unquote, voettekst, die lijn er die ik heb gemarkeerd, lijn acht, 728 00:34:41,170 --> 00:34:46,330 is gewoon het nemen van die naam, zoals header, en aaneenschakelen met stip PHP. 729 00:34:46,330 --> 00:34:49,750 Zodat we niet deze operator in C. Deze dot operator 730 00:34:49,750 --> 00:34:54,520 een geweldig ding PHP-- als je vertrouwd zijn met JavaScript of Java, 731 00:34:54,520 --> 00:34:56,949 kunt u de plus gebruiken ondertekenen aaneenschakeling doen. 732 00:34:56,949 --> 00:34:59,974 >> In C, het is een pijn in de neck-- en het spijt me zo, in de p-set van zes, 733 00:34:59,974 --> 00:35:02,390 je gaat moeten doen dit-- het is een pijn in de nek 734 00:35:02,390 --> 00:35:03,930 strings samenvoegen. 735 00:35:03,930 --> 00:35:04,670 Waarom? 736 00:35:04,670 --> 00:35:06,580 Nou, want als je hebt een koord dat deze lange, 737 00:35:06,580 --> 00:35:09,538 en andere string dat is deze lange, je kunt niet zomaar de stekker ze samen. 738 00:35:09,538 --> 00:35:11,070 Wat heb je in plaats daarvan moet doen in C? 739 00:35:11,070 --> 00:35:11,680 Ja? 740 00:35:11,680 --> 00:35:12,380 >> PUBLIEK: [onverstaanbaar] 741 00:35:12,380 --> 00:35:15,090 >> DAVID MALAN: Je moet malloc geheugen of gebruikt een matrix op de stapel. 742 00:35:15,090 --> 00:35:17,214 En je eigenlijk moet maken die array groot genoeg 743 00:35:17,214 --> 00:35:20,940 deze passen plus dit, plus de backslash nul. 744 00:35:20,940 --> 00:35:24,994 Aaneenschakelen ze dan samen met roer kat of handmatig met een lus, 745 00:35:24,994 --> 00:35:26,160 of een aantal technieken. 746 00:35:26,160 --> 00:35:27,760 En laten we u een paar in-p zes. 747 00:35:27,760 --> 00:35:29,080 >> Het is een pijn in de nek. 748 00:35:29,080 --> 00:35:34,190 En dit is echt wat ik bedoel dit versus dit-- zoals C versus PHP. 749 00:35:34,190 --> 00:35:36,870 Je krijgt net zoveel meer functionaliteit gratis, 750 00:35:36,870 --> 00:35:39,030 zodat u zich kunt concentreren, idealiter op het plezier 751 00:35:39,030 --> 00:35:41,190 deel van codering, de project dat u wilt oplossen, 752 00:35:41,190 --> 00:35:43,190 in plaats van het lage niveau kleinigheden. 753 00:35:43,190 --> 00:35:49,840 >> Dus dit gewoon genereert header.php of footer.php op basis waarvan één ik noem. 754 00:35:49,840 --> 00:35:52,280 En inderdaad, als ik ga in index.php, bericht 755 00:35:52,280 --> 00:35:56,230 alles wat changed-- plaats van bellen maken kop- of voettekst maken, 756 00:35:56,230 --> 00:36:00,230 Ik bel te maken, gevolgd door de Naam van de sjabloon die ik wil doen. 757 00:36:00,230 --> 00:36:02,370 En je zult dit zien, ook, in probleem stelde zeven, 758 00:36:02,370 --> 00:36:05,530 waarbij wij u toestaan ​​om het te gebruiken dezelfde functie aan trossen te maken 759 00:36:05,530 --> 00:36:07,550 en trossen van verschillende webpagina's. 760 00:36:07,550 --> 00:36:10,570 >> Dus in plaats van wonen te veel meer op die details-- 761 00:36:10,570 --> 00:36:13,210 die je weer zal zien in probleem set seven-- laten we eens kijken 762 00:36:13,210 --> 00:36:16,850 nu aan het begin van een oplossing voor een interessant probleem. 763 00:36:16,850 --> 00:36:19,310 Tot nu toe, we hebben niets gedaan heeft opgeslagen gegevens. 764 00:36:19,310 --> 00:36:22,920 In feite is de enige keer dat we ooit hebben gered iets wat we hebben gedaan in deze klasse 765 00:36:22,920 --> 00:36:31,030 is toen we een zeer eenvoudige demo een tijdje rug, waarbij we gebruik bestand IO in C, 766 00:36:31,030 --> 00:36:34,520 en ik denk dat ik typte in mijn naam, en Hannah's naam, en de naam van Maria's, 767 00:36:34,520 --> 00:36:37,610 of misschien de naam Andy's en vervolgens opgeslagen we een CSV file-- 768 00:36:37,610 --> 00:36:39,430 komma's gescheiden waarden bestand. 769 00:36:39,430 --> 00:36:43,530 >> En we gebruikten fopen-- denk ik gebruikten we fprintf als ik me goed herinner, 770 00:36:43,530 --> 00:36:44,910 en we opgeslagen in een bestand. 771 00:36:44,910 --> 00:36:46,920 Nu, dat is de eenvoudigste vorm van een database. 772 00:36:46,920 --> 00:36:50,230 Als u wilt een website voor het maken Frosh IMS-programma, waarbij eerstejaars 773 00:36:50,230 --> 00:36:53,390 kan ideaal registreren voor een sport, je willen iets met die gegevens doen. 774 00:36:53,390 --> 00:36:55,370 Vorige week hebben we niets met de data-- we net zei, 775 00:36:55,370 --> 00:36:56,661 u geregistreerd bent, niet echt. 776 00:36:56,661 --> 00:36:58,950 Of misschien mailde ik het Proctor, en dat was het. 777 00:36:58,950 --> 00:37:02,110 >> Maar het zou mooi zijn als ik kon geven dat Proctor een CSV-bestand, 778 00:37:02,110 --> 00:37:03,340 als een Excel-bestand. 779 00:37:03,340 --> 00:37:05,090 Of beter nog, het zou mooi zijn als ik kon 780 00:37:05,090 --> 00:37:08,830 zet de namen die de gebruikers en dorm namen en dat alles 781 00:37:08,830 --> 00:37:11,740 in een database die gewoon leeft voor altijd, 782 00:37:11,740 --> 00:37:13,530 totdat ik ervoor kiezen om de gegevens te verwijderen. 783 00:37:13,530 --> 00:37:15,645 Een database waarmee mij om informatie vragen. 784 00:37:15,645 --> 00:37:18,070 En inderdaad, dat is wat een database is. 785 00:37:18,070 --> 00:37:20,470 >> We introduceren vandaag, en volgende week, ook, een technologie 786 00:37:20,470 --> 00:37:25,020 riep SQL-- een Structured Query Taal, dat is een andere taal. 787 00:37:25,020 --> 00:37:28,750 Het is in wezen een programmering taal, maar voor databases. 788 00:37:28,750 --> 00:37:31,760 En een database voor nu, net denken als een super luxe versie 789 00:37:31,760 --> 00:37:35,710 Microsoft Excel of Google Spreadsheets, of Apple Numbers. 790 00:37:35,710 --> 00:37:39,950 Het is over het algemeen een programma waarmee je een hele hoop gegevens op te slaan 791 00:37:39,950 --> 00:37:43,960 in rijen en kolommen, heel zoals je misschien in Excel. 792 00:37:43,960 --> 00:37:47,100 >> Maar wat is leuk, vooral als we zijn niet super bekend met Excel, 793 00:37:47,100 --> 00:37:52,040 wat SQL kunt u doen is deze vraag informatie door het schrijven van regels code 794 00:37:52,040 --> 00:37:55,220 waar u kunt, zelfs als uw database een miljoen rijen daarin, 795 00:37:55,220 --> 00:37:57,190 je kunt vinden wat super snel. 796 00:37:57,190 --> 00:37:59,950 In feite, Excel bijzonder slecht in grote datasets. 797 00:37:59,950 --> 00:38:02,460 En in feite tot enkele jaar geleden, bleek 798 00:38:02,460 --> 00:38:08,890 Excel zou alleen kunt u op te slaan tot 65.535 rijen van data-- die 799 00:38:08,890 --> 00:38:12,020 klinkt als veel, maar op de keer was ik een grad student, 800 00:38:12,020 --> 00:38:14,920 en ik herinner me struikelen over dit omdat ik het genereren 801 00:38:14,920 --> 00:38:17,900 CSV-bestanden voor mijn onderzoek en ik wilde hen snel te analyseren 802 00:38:17,900 --> 00:38:19,530 door gewoon te openen in Excel. 803 00:38:19,530 --> 00:38:23,730 Natuurlijk, mijn computer gewoon crashte, want ik had meer dan 65.000 rijen. 804 00:38:23,730 --> 00:38:27,210 >> Maar waar de 65.535 vandaan? 805 00:38:27,210 --> 00:38:29,670 Wat is Microsoft bezig, vermoedelijk? 806 00:38:29,670 --> 00:38:32,430 Als je goed met je krachten van twee bent? 807 00:38:32,430 --> 00:38:37,160 Ja, zij werden met behulp van een 16-bits waarde voor het rijnummer vertegenwoordigen. 808 00:38:37,160 --> 00:38:41,310 En twee tot 16 is 65,536-- min één, want als je 809 00:38:41,310 --> 00:38:45,414 nul index betekent dat was het meeste aantal rijen ik kon hebben. 810 00:38:45,414 --> 00:38:46,830 En het was gewoon een ontwerp beslissing. 811 00:38:46,830 --> 00:38:52,760 Door het opslaan van 16 bits, ze me beperkt tot 16.000 rijen, in plaats van 4 miljard, 812 00:38:52,760 --> 00:38:54,322 die ik idealiter zou hebben gehad. 813 00:38:54,322 --> 00:38:57,030 Maar voor nu, we gaan introduceren dit meer in een web context. 814 00:38:57,030 --> 00:39:00,390 En wat is er leuk aan SQL is dat zelfs maar het is vrij krachtig en mooi 815 00:39:00,390 --> 00:39:04,050 verfijnd, het is echt kookt neer op vier belangrijke activiteiten, vier 816 00:39:04,050 --> 00:39:08,060 belangrijke functies, als je will-- selecteert, voor het ophalen van data, zoeken 817 00:39:08,060 --> 00:39:12,510 voor data; wissen of verwijderen van gegevens; plaatst voor het toevoegen van rijen aan de database; 818 00:39:12,510 --> 00:39:13,410 en bijwerken. 819 00:39:13,410 --> 00:39:17,010 Dus als je ooit hebt gebruikt Google Spreadsheets, Apple Numbers, Microsoft 820 00:39:17,010 --> 00:39:19,310 Excel, heb je uitgevoerd, waarschijnlijk alle 821 00:39:19,310 --> 00:39:22,530 van deze activiteiten als mens door alleen met behulp van uw toetsenbord en mouse-- 822 00:39:22,530 --> 00:39:26,050 invoegen van gegevens, het gebruik van uw ogen om te selecteren of zoeken naar gegevens, 823 00:39:26,050 --> 00:39:28,360 of updaten van gegevens, of te verwijderen gegevens. 824 00:39:28,360 --> 00:39:29,870 >> Dus wat betekent dit? 825 00:39:29,870 --> 00:39:34,300 Nou, vooraf geïnstalleerd in CS50 IDE is een programma genaamd MySQL. 826 00:39:34,300 --> 00:39:37,050 Het is een gratis, open-source database die is super populair. 827 00:39:37,050 --> 00:39:40,590 Facebook bijvoorbeeld, gebruikt het deze dag, onder andere tools die ze gebruiken. 828 00:39:40,590 --> 00:39:44,300 En een groot aantal zeer populaire websites gebruiken in een groot deel omdat het is snel, 829 00:39:44,300 --> 00:39:45,230 en omdat het is gratis. 830 00:39:45,230 --> 00:39:46,820 Maar zeker alternatieven bestaan. 831 00:39:46,820 --> 00:39:49,580 En sommigen van jullie misschien ploeteren met alternatieven voor de laatste projecten. 832 00:39:49,580 --> 00:39:55,330 >> Dit is een screenshot, ondertussen, van een web-based tool genaamd phpMyAdmin. 833 00:39:55,330 --> 00:39:58,260 Het is een toeval dat Deze web-based tool is ook 834 00:39:58,260 --> 00:40:01,720 geschreven in een taal, PHP, maar wat het is bedoeld om te doen 835 00:40:01,720 --> 00:40:04,620 is ons een web-based interface naar een database. 836 00:40:04,620 --> 00:40:07,180 Omdat MySQL typisch iets, historisch gezien, u 837 00:40:07,180 --> 00:40:08,770 zou interageren met slechts met een command line. 838 00:40:08,770 --> 00:40:10,811 En het zou super zijn vervelend en geheimzinnige te hebben 839 00:40:10,811 --> 00:40:14,487 tekstuele commando's typen om te selecteren data, plaatst data en gegevens te verwijderen. 840 00:40:14,487 --> 00:40:16,820 Dus sommige mensen op het internet schreef een web-based programma 841 00:40:16,820 --> 00:40:18,900 dat laat het ons beheren de gegevens in onze database. 842 00:40:18,900 --> 00:40:23,040 Het is net als dubbelklikken op Excel en het runnen van een web-based versie daarvan. 843 00:40:23,040 --> 00:40:26,370 >> En wat je gaat om dit te gebruiken voor uiteindelijk volgende week, niet-p zes, 844 00:40:26,370 --> 00:40:28,680 maar is om iets op te bouwen riep CS50 Financiën, die 845 00:40:28,680 --> 00:40:32,630 gaat om een ​​database van hebben gebruikers, met gebruikersnamen en wachtwoorden, 846 00:40:32,630 --> 00:40:34,860 dollar bedragen die zij in hun bankrekeningen. 847 00:40:34,860 --> 00:40:37,280 Het gaat zijn iets wat je gebruiken voor het opslaan 848 00:40:37,280 --> 00:40:39,910 de symbolen en de hoeveelheden van aandelen die gebruikers 849 00:40:39,910 --> 00:40:42,567 hebben gekocht met behulp van virtuele dollars dat je aan hen te geven. 850 00:40:42,567 --> 00:40:44,900 En het gaat om gebruikers te laten in te schrijven voor uw site, 851 00:40:44,900 --> 00:40:47,190 zodat zelfs je vrienden kunt afstemmen op uw website 852 00:40:47,190 --> 00:40:49,360 en eigenlijk te registreren, log in en spelen rond 853 00:40:49,360 --> 00:40:52,807 en probeer te merken in uw code, en proberen om bugs in uw website te vinden. 854 00:40:52,807 --> 00:40:55,390 En ze zullen gewoon aanmelden door zich voegen, effectief 855 00:40:55,390 --> 00:40:58,120 via code je schrijven op uw database. 856 00:40:58,120 --> 00:41:02,470 >> Bijvoorbeeld is dit een snelle screenshot wat een database eruit zou kunnen zien. 857 00:41:02,470 --> 00:41:05,190 Dit was van één van solutions-- vorig jaar 858 00:41:05,190 --> 00:41:07,760 Dit is als een mini-Excel file, opgeslagen in onze database, 859 00:41:07,760 --> 00:41:09,950 opgeslagen in deze software genaamd MySQL. 860 00:41:09,950 --> 00:41:13,260 Aan de linkerkant, ik heb blijkbaar krijgt elke gebruiker een uniek nummer. 861 00:41:13,260 --> 00:41:16,200 In de tweede kolom, heb ik gezien iedereen een gebruiker name-- mijn eigen 862 00:41:16,200 --> 00:41:16,880 onder hen. 863 00:41:16,880 --> 00:41:21,430 En aan de rechterkant, Ik heb ze een hash gegeven. 864 00:41:21,430 --> 00:41:26,760 >> Nu is dit eigenlijk een wachtwoord, maar het is niet een gewone tekst wachtwoord. 865 00:41:26,760 --> 00:41:30,160 Het is een versleutelde wachtwoord, indien je wil, of een hash wachtwoord. 866 00:41:30,160 --> 00:41:32,000 Die we weer terug naar het duurde niet lang te komen. 867 00:41:32,000 --> 00:41:34,340 >> Maar als je ooit hebt gelezen een artikel over hoe 868 00:41:34,340 --> 00:41:37,950 je wachtwoord op een bank of een website kan zijn gecompromitteerd, 869 00:41:37,950 --> 00:41:39,630 het kan over het algemeen betekenen een van twee dingen. 870 00:41:39,630 --> 00:41:42,780 Dus dit is slechts een fragment van de zes gebruikers. 871 00:41:42,780 --> 00:41:45,460 Jullie allemaal nu kunt achterhalen uitgevoerd via hacken of kraken 872 00:41:45,460 --> 00:41:47,690 wat wachtwoorden onze zes mensen zijn. 873 00:41:47,690 --> 00:41:49,720 Maar als je ooit hebt gekregen een waarschuwing of een verontschuldiging 874 00:41:49,720 --> 00:41:52,803 van een bedrijf of website gezegde, sorry, een hacker brak in onze database, 875 00:41:52,803 --> 00:41:56,360 moet je waarschijnlijk veranderen uw wachtwoord, wat zou dat betekenen? 876 00:41:56,360 --> 00:41:59,670 >> Nou, een, zou kunnen betekenen dat de bedrijf heeft meer debiele geweest, 877 00:41:59,670 --> 00:42:03,630 en is het opslaan van uw wachtwoord in een kolom als dit, ongecodeerd. 878 00:42:03,630 --> 00:42:05,840 Wat betekent dat de tegenstander, die de database gestolen, 879 00:42:05,840 --> 00:42:07,440 letterlijk weet je gebruikersnaam en wachtwoord. 880 00:42:07,440 --> 00:42:08,960 Dat is het slechtst mogelijke scenario. 881 00:42:08,960 --> 00:42:11,710 En zoals u zult zien in de p-set zeven, zo gemakkelijk te voorkomen. 882 00:42:11,710 --> 00:42:15,624 Er is absoluut geen excuus voor dat vorm van domheid in het huidige internet. 883 00:42:15,624 --> 00:42:18,540 Two-- en we zullen een aantal artikelen vinden om te getuigen van het feit dat dit nog steeds 884 00:42:18,540 --> 00:42:21,710 gebeurt, nonetheless-- twee, misschien de tegenstander 885 00:42:21,710 --> 00:42:23,840 stal deze versie van de database. 886 00:42:23,840 --> 00:42:27,110 Dat is nog een beetje slecht, want nu ze weten dat ik heb zes klanten, 887 00:42:27,110 --> 00:42:29,270 Ik weet dat de gebruikersnamen van die zes klanten 888 00:42:29,270 --> 00:42:32,910 en ik weet dat de versleutelde versies of gehakte versies 889 00:42:32,910 --> 00:42:34,340 wachtwoorden die zes klanten. 890 00:42:34,340 --> 00:42:37,010 Maar iemand van jullie die misschien heb gedaan [? Hacker 2?] 891 00:42:37,010 --> 00:42:41,150 waar u gebarsten wachtwoorden of namen Een blik op die versie van het probleem 892 00:42:41,150 --> 00:42:46,280 set, waarom is het nog steeds een beetje zorgwekkend Als de tegenstander kent uw hash 893 00:42:46,280 --> 00:42:47,435 wachtwoorden? 894 00:42:47,435 --> 00:42:49,732 >> Publiek: Omdat ze konden voer het hele woordenboek 895 00:42:49,732 --> 00:42:50,690 in de hash-functie. 896 00:42:50,690 --> 00:42:54,520 En als uw wachtwoord is een woordenboek woord, [? ze kunnen gewoon match--?] 897 00:42:54,520 --> 00:42:57,640 >> DAVID MALAN: Precies, de tegenstander kan gewoon schrijven code, zoals sommige van jullie 898 00:42:57,640 --> 00:43:00,526 deed voor [? Hacker?] 2, waarbij je itereren over 899 00:43:00,526 --> 00:43:03,400 alle woorden in het woordenboek, of alle mogelijke combinaties van A 900 00:43:03,400 --> 00:43:06,610 tot en met Z en één door de nine-- die klinkt als veel, en het is. 901 00:43:06,610 --> 00:43:08,361 Maar voor een computer, het is pretty darn snel. 902 00:43:08,361 --> 00:43:10,610 En in feite, dat was de punt van [? Hacker 2,?] Was 903 00:43:10,610 --> 00:43:12,540 om dingen te nemen dat letterlijk ziet er zo uit, 904 00:43:12,540 --> 00:43:14,900 en reverse engineering wat het eigenlijk was. 905 00:43:14,900 --> 00:43:17,270 >> Dus we zullen kijken hoe we kunnen bewaar dit efficiënter. 906 00:43:17,270 --> 00:43:20,210 Blijkt gelukkig in MySQL, er zullen data types. 907 00:43:20,210 --> 00:43:22,800 En een van de leuke delen over database-ontwerp, om eerlijk te zijn, 908 00:43:22,800 --> 00:43:25,810 is eigenlijk beslissen voor jezelf hoe moet je de gegevens te vertegenwoordigen? 909 00:43:25,810 --> 00:43:29,630 Mocht u een telefoonnummer vertegenwoordigen als een int, zoals een groot aantal, of een lange? 910 00:43:29,630 --> 00:43:31,630 Of heb je eigenlijk doen als een reeks tekens? 911 00:43:31,630 --> 00:43:33,780 En er kan heel zijn niet-triviale gevolgen hiervan. 912 00:43:33,780 --> 00:43:36,714 >> In feite is een van de vroegste, fun germane verhalen 913 00:43:36,714 --> 00:43:39,880 is toen Mark Zuckerberg bouwde Facebook werd oorspronkelijk geschreven in, 914 00:43:39,880 --> 00:43:42,300 en nog steeds is grotendeels geschreven in PHP. 915 00:43:42,300 --> 00:43:45,400 En een van de grootste uitdagingen ze geconfronteerd vroeg was schaalvergroting. 916 00:43:45,400 --> 00:43:48,820 Toen ze bleven toevoegen school na school na school, bij mijn weten, 917 00:43:48,820 --> 00:43:51,639 een van de oorspronkelijke oplossingen was in wezen te kopiëren en plakken 918 00:43:51,639 --> 00:43:53,430 enkele van de gegevensbestanden en een deel van de code, 919 00:43:53,430 --> 00:43:55,346 zodat Harvard was die op zijn eigen server, 920 00:43:55,346 --> 00:43:56,995 MIT en liep op zijn eigen server. 921 00:43:56,995 --> 00:43:59,120 En dit was de reden voor sommige onder u die zou kunnen herinneren, 922 00:43:59,120 --> 00:44:01,510 kon je geen vrienden in andere netwerken. 923 00:44:01,510 --> 00:44:05,050 >> U heeft waarschijnlijk niet vrienden hebben op MIT en Harvard 10 jaar of zo geleden, 924 00:44:05,050 --> 00:44:07,467 maar je kon niet netwerken overspannen voor een deel die reden. 925 00:44:07,467 --> 00:44:10,550 En een van de grootste uitdagingen voor Mark en voor bedrijven als Facebook 926 00:44:10,550 --> 00:44:13,460 is eigenlijk de behandeling van honderden en duizenden en miljoenen 927 00:44:13,460 --> 00:44:14,460 aanvragen per seconde. 928 00:44:14,460 --> 00:44:16,501 Dus de dingen die we beginnen praten over deze week 929 00:44:16,501 --> 00:44:19,860 zijn echt relevant voor te zijn het schrijven van goede software en in de volksmond 930 00:44:19,860 --> 00:44:23,040 succesvolle instrumenten die kan omgaan met tal van gebruikers. 931 00:44:23,040 --> 00:44:25,460 >> Dus we praten over dingen zoals het indexeren en zoeken, 932 00:44:25,460 --> 00:44:26,910 maar dat is het voor vandaag. 933 00:44:26,910 --> 00:44:28,780 Wij zullen u voor meer informatie over woensdag. 934 00:44:28,780 --> 00:44:31,780 935 00:44:31,780 --> 00:44:33,902 >> [MUZIEK - "SEINFELD" THEMA] 936 00:44:33,902 --> 00:44:35,943 DAVID MALAN: U kunt het, en het te verkleinen. 937 00:44:35,943 --> 00:44:38,859 En je hoeft niet aan de stok met aantal vooraf bepaalde hoeveelheid geheugen. 938 00:44:38,859 --> 00:44:40,580 Nou, wat dat gaat worden genoemd? 939 00:44:40,580 --> 00:44:42,369 >> SPEAKER 1: Nou, wat is er aan de hand? 940 00:44:42,369 --> 00:44:43,535 Luidspreker 2: Wat bedoel je? 941 00:44:43,535 --> 00:44:44,451 Hij geeft een lezing. 942 00:44:44,451 --> 00:44:47,650 DAVID MALAN: En we kunnen gebruiken functie genaamd malloc om memory-- 943 00:44:47,650 --> 00:44:50,050 >> SPEAKER 1: Waarom zijn niet zijn armen bewegen? 944 00:44:50,050 --> 00:44:52,450 >> Luidspreker 2: Nou that's-- je weet wel, dat is normaal. 945 00:44:52,450 --> 00:44:57,162 Het is net alsof hij net grote worsten opknoping daar. 946 00:44:57,162 --> 00:44:59,040 >> SPEAKER 1: Dat is normaal? 947 00:44:59,040 --> 00:45:03,096 >> Luidspreker 2: Ja, ik denk dat we gewoon aannemen hij per ongeluk 948 00:45:03,096 --> 00:45:06,840 verving zijn deodorant met superlijm. 949 00:45:06,840 --> 00:45:07,608