1 00:00:00,000 --> 00:00:02,916 2 00:00:02,916 --> 00:00:04,860 >> [Speel van musiek] 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 die begin van die week agt. 5 00:00:13,350 --> 00:00:17,510 En ons is so opgewonde om te verwelkom rug, groot verrassing, eie Ramon CS50 se 6 00:00:17,510 --> 00:00:22,160 Galvan, 'n stygende senior wat reeds die besteding van die afgelope paar maande 7 00:00:22,160 --> 00:00:26,190 sedert Julie in LA, in Hollywood, letterlik besig met 'n splinternuwe TV 8 00:00:26,190 --> 00:00:31,930 show genoem Kolonie, die skepper van wat is eintlik 'n Harvard aluin homself. 9 00:00:31,930 --> 00:00:36,610 En so het ons is baie opgewonde om dit te sien debuut op die VSA netwerk hierdie Januarie. 10 00:00:36,610 --> 00:00:40,370 So bly ingeskakel vir wat, en vir meer Ramon vir die komende weke. 11 00:00:40,370 --> 00:00:42,550 >> Weet nou dat die einde naby is. 12 00:00:42,550 --> 00:00:47,400 En wat dit beteken, is dat daar nie alles wat veel oorbly van CS50, hartseer om te sê. 13 00:00:47,400 --> 00:00:49,400 Ons het net drie probleem stelle left-- daar 14 00:00:49,400 --> 00:00:52,510 probleem stel six-- wat in jou hande nou of binnekort sal wees, 15 00:00:52,510 --> 00:00:56,080 as gevolg van later hierdie week-- is bedoel om te oorbrug ons wêrelde van die opdrag lyn, waar 16 00:00:56,080 --> 00:00:59,450 ons het spandeer die meeste van ons tyd met behulp van C, en die wêreld van die web ontwikkeling. 17 00:00:59,450 --> 00:01:02,350 Wel, jy sal 'n baie idees sien geleen uit die opdrag lyn werk, 18 00:01:02,350 --> 00:01:04,560 maar ook 'n baie nuwe en interessante idees 19 00:01:04,560 --> 00:01:07,929 wat ook gaan related te wees mobiele programme en tegnologie, 20 00:01:07,929 --> 00:01:10,470 meer algemeen, waarmee jy ouens is almal bekend deesdae 21 00:01:10,470 --> 00:01:12,090 op skootrekenaars en selfone en dies meer. 22 00:01:12,090 --> 00:01:15,220 >> Sodat jy nie te implementeer 'n webblad, of 'n webwerf 23 00:01:15,220 --> 00:01:17,620 per se nie, maar 'n werklike web server. 24 00:01:17,620 --> 00:01:21,590 Jy sal die res van 'n web bediener te skryf geskryf in C, wie se doel in die lewe 25 00:01:21,590 --> 00:01:25,410 is om HTTP versoeke, diegene te ontvang virtuele koeverte ons bly praat 26 00:01:25,410 --> 00:01:29,780 oor, en eintlik reageer óf met sommige statiese content-- soos 'n dot HTML 27 00:01:29,780 --> 00:01:32,310 lêer, of 'n dot JPEG of enige ander aantal lêers, 28 00:01:32,310 --> 00:01:37,070 of selfs 'n PHP lêer waardeur jou web bediener gaan wat PHP interpreteer 29 00:01:37,070 --> 00:01:38,332 kode en spoeg uit die resultate. 30 00:01:38,332 --> 00:01:40,540 Nou het ons jou voorsien nogal 'n bietjie van 'n raamwerk 31 00:01:40,540 --> 00:01:43,100 Want die it-- verspreiding kode vir die probleem 32 00:01:43,100 --> 00:01:47,496 stel ses is oor 1000 lyne lank, 'n baie wat kommentaar, fair-- te wees 33 00:01:47,496 --> 00:01:49,370 maar dit is eintlik bedoel om 'n geleentheid te wees 34 00:01:49,370 --> 00:01:52,570 om jou hande vuil duik in 'n redelike groot projek 35 00:01:52,570 --> 00:01:55,570 wat ons het baie spesifiek uitgekap stukke vir jou, 36 00:01:55,570 --> 00:01:59,046 sodat regtig wanneer jy CS50 verlaat en Tik die werklike wêreld van ontwikkeling 37 00:01:59,046 --> 00:02:00,920 en wil ploeteraars in enige aantal projekte, 38 00:02:00,920 --> 00:02:03,253 jy sal veel groter het troos aflaai 'n bron 39 00:02:03,253 --> 00:02:05,020 kode, sommige open source projekteer op die web, 40 00:02:05,020 --> 00:02:08,174 en duik in en maak veranderinge wat jy goeddink. 41 00:02:08,174 --> 00:02:11,340 Probleem die sewe gaan wees oor maak jou eie web-gebaseerde program 42 00:02:11,340 --> 00:02:14,140 wat neem dinamiese insette en produseer dinamiese uitset in die vorm 43 00:02:14,140 --> 00:02:16,920 van 'n etrade.com-agtige webwerf. 44 00:02:16,920 --> 00:02:20,800 En die probleem stel agt sal nog fokus op 'n ander taal bekend as JavaScript. 45 00:02:20,800 --> 00:02:24,170 >> Intussen het die finale projek is op die horison. 46 00:02:24,170 --> 00:02:26,800 Die sogenaamde pre-voorstel is as gevolg van 'n week van vandag af. 47 00:02:26,800 --> 00:02:29,930 Pre-proposal-- per die spesifikasie, wat op CS50 se website-- 48 00:02:29,930 --> 00:02:33,260 is 'n mooi gemaklik geleentheid vir jy 'n mooi bondige e-pos te stuur 49 00:02:33,260 --> 00:02:35,170 om jou onderrig mede net om hom te vergewis 50 00:02:35,170 --> 00:02:38,250 of haar van wat jy dink, om gebruik hom of haar as 'n klankbord. 51 00:02:38,250 --> 00:02:40,980 En het 'n gesonde verstand check-- of jy dink 52 00:02:40,980 --> 00:02:43,210 oor byt te af veel of dalk te min, 53 00:02:43,210 --> 00:02:46,480 of miskien het jy het geen idee hoegenaamd en wil betrokke raak in 'n gesprek. 54 00:02:46,480 --> 00:02:48,480 >> Daarna is 'n voorstel en status verslag 55 00:02:48,480 --> 00:02:51,860 die sogenaamde CS50 hackathon hier in Cambridge vir Harvard en Yale studente 56 00:02:51,860 --> 00:02:52,362 gelyk. 57 00:02:52,362 --> 00:02:54,320 Die finale projek se implementering is dan gevolg. 58 00:02:54,320 --> 00:02:59,290 En dan 'n CS50 billike hier, in Cambridge, sowel as die ander in New Haven. 59 00:02:59,290 --> 00:03:02,500 So het die voorstel, neem 'n blik op die webwerf vir diegene besonderhede. 60 00:03:02,500 --> 00:03:06,530 >> Maar meer spannende, te, is 'n geleentheid om jou hande vuil te kry, 61 00:03:06,530 --> 00:03:09,350 en jou gedagtes oop vir 'n hele n klomp van die onderwerpe en gereedskap 62 00:03:09,350 --> 00:03:12,920 en tegnieke wat aanvullende om die kursus se kernsillabus, 63 00:03:12,920 --> 00:03:14,810 maar tog verwant is. 64 00:03:14,810 --> 00:03:18,400 En ook wonderlike trapklippe te doen regtig cool finale projekte wat 65 00:03:18,400 --> 00:03:22,020 goed gaan verder as materiaal wat ons het gedek formeel in die probleem stel of in lesing. 66 00:03:22,020 --> 00:03:24,446 So gaan na die webwerf CS50 se die hele rooster van seminare. 67 00:03:24,446 --> 00:03:26,070 As jy nog nie registreer nie, is dit goed. 68 00:03:26,070 --> 00:03:29,860 Gaan voort en teken nog steeds en ons sal volg op met 'n live streaming skakel 69 00:03:29,860 --> 00:03:31,844 die dag en tyd is op die webwerf. 70 00:03:31,844 --> 00:03:33,760 En alles sal wees aangeteken en aanlyn sit 71 00:03:33,760 --> 00:03:35,800 as jy nie kan maak die spesifieke dae en tye. 72 00:03:35,800 --> 00:03:39,380 >> As wat voorlê thereafter-- goed, natuurlik, is daar die CS50 hackathon. 73 00:03:39,380 --> 00:03:43,560 Hierdie foto, onthou, van week nul geneem rondom 04:00 een aand in die afgelope jare. 74 00:03:43,560 --> 00:03:46,900 Die CS50 billike weer wat sal plaasvind in beide stede. 75 00:03:46,900 --> 00:03:49,760 En dan, net om die plant saad, selfs al het ons nog steeds 76 00:03:49,760 --> 00:03:54,080 'n maand plus oorbly semester, as jy wil eie onderrig CS50 se sluit 77 00:03:54,080 --> 00:03:56,770 personeel, en jy wil om te begin dink oor hoe 'n CA, 78 00:03:56,770 --> 00:03:59,550 of onderrig mede, weet dat Ons begin praat meer daaroor 79 00:03:59,550 --> 00:04:00,630 later hierdie semester. 80 00:04:00,630 --> 00:04:03,470 Maar hier uitgebeeld word die meeste van span vanjaar se. 81 00:04:03,470 --> 00:04:06,950 >> En so, PHP-- en ek was so hartseer verlede week dat [? Allyse?] Vriendelik 82 00:04:06,950 --> 00:04:09,370 gegaan om die moeite om ons hierdie wonderlike rekwisiete 83 00:04:09,370 --> 00:04:11,720 dat ek nie uiteindelik met behulp van, so dit regtig net gekyk soort stupid 84 00:04:11,720 --> 00:04:15,160 dat ons 'n graaf sit hier al dag verlede Woensdag, en 'n bietjie lepel. 85 00:04:15,160 --> 00:04:17,709 Maar dit was my metaforiese manier om te probeer om te verf 86 00:04:17,709 --> 00:04:21,600 die foto van die rede waarom ons die oorgang van C na 'n taal soos PHP. 87 00:04:21,600 --> 00:04:25,480 En dieselfde kan gesê word van enige aantal languages-- Java, Python, Ruby 88 00:04:25,480 --> 00:04:31,270 of trosse van others-- maar terwyl in C, byvoorbeeld, skryf 'n program in C 89 00:04:31,270 --> 00:04:34,050 kan tipies wees soos neem 'n lepel soos hierdie 90 00:04:34,050 --> 00:04:36,770 en grawe 'n gat in die grond, in die sand of die vuil. 91 00:04:36,770 --> 00:04:39,770 PHP kan jy veel groter byt uit die probleem, 92 00:04:39,770 --> 00:04:42,842 skryf baie minder-kode met behulp van 'n veel kleiner instrument, 93 00:04:42,842 --> 00:04:45,050 want daar is soveel meer funksionaliteit een stuk in. 94 00:04:45,050 --> 00:04:47,633 >> Nou, as ons regtig dramatiese, ons iets om te skop wil hê 95 00:04:47,633 --> 00:04:48,760 hier nie, maar laat dit so wees. 96 00:04:48,760 --> 00:04:51,370 Intussen het die ander metafoor ons het met 97 00:04:51,370 --> 00:04:53,770 is, natuurlik, jy kan gebruik iets soos 'n sleutel 98 00:04:53,770 --> 00:04:56,610 om die hamer in iets soos 'n spyker. 99 00:04:56,610 --> 00:04:58,980 Maar natuurlik, die reg instrument gebruik gaan 100 00:04:58,980 --> 00:05:01,360 om nie soseer die wees taal, die sogenaamde C-- 101 00:05:01,360 --> 00:05:03,590 en nou het ek net vererg [? Sanders,?] Waarskynlik 102 00:05:03,590 --> 00:05:07,890 ons sal regmaak later-- so die regte gereedskap om gebruik dikwels 103 00:05:07,890 --> 00:05:09,640 is nie van plan om hierdie laagste vlak instrument. 104 00:05:09,640 --> 00:05:13,720 En inderdaad, C is nie 'n taal wat die meeste van wat jy ooit gaan gebruik, 105 00:05:13,720 --> 00:05:15,590 of moet noodwendig weer te gebruik. 106 00:05:15,590 --> 00:05:18,350 >> En in die feit, 'n bietjie secret-- die enigste tyd 107 00:05:18,350 --> 00:05:23,160 Ek gebruik C myself is pretty much tussen September en Desember van elke val 108 00:05:23,160 --> 00:05:23,870 semester. 109 00:05:23,870 --> 00:05:25,790 En dit is omdat ons gebruik dit as 'n geleentheid 110 00:05:25,790 --> 00:05:27,852 om die beginsels te leer van die ontwikkeling, 111 00:05:27,852 --> 00:05:29,810 en met dit die rekenaar wetenskap grondbeginsels, data 112 00:05:29,810 --> 00:05:32,435 strukture, algoritmes en die like-- maar baie vinnig sal jy 113 00:05:32,435 --> 00:05:35,010 sien nou dat die sintaksis en die idees onderliggend C 114 00:05:35,010 --> 00:05:37,530 is so wonderlik oordraagbaar na meer moderne 115 00:05:37,530 --> 00:05:41,130 hoër vlak tale, soos PHP en Perl Python en en Java 116 00:05:41,130 --> 00:05:46,750 en Objective-C-- eintlik nie soseer Objective-C-- maar Swift, hierdie nuwer 117 00:05:46,750 --> 00:05:50,010 tale wat baie van julle sal dan ploeteraars met jou finale projek. 118 00:05:50,010 --> 00:05:55,070 >> So sonder verdere uitstel het, laat ons eintlik gebruik PHP 'n paar probleme op te los. 119 00:05:55,070 --> 00:06:00,230 Onthou dat vroeg op, laaste week, het ons net gebruik CS50 IDE, 120 00:06:00,230 --> 00:06:02,990 Ons het 'n knap klein program wat net gesê, "Hello world." 121 00:06:02,990 --> 00:06:05,680 En dan gered Ek dit in 'n lêer genaamd hello.php. 122 00:06:05,680 --> 00:06:07,280 En dan het ek hierdie opdrag. 123 00:06:07,280 --> 00:06:08,080 >> En waarom? 124 00:06:08,080 --> 00:06:09,900 In Engels, wat gaan hier aan? 125 00:06:09,900 --> 00:06:12,760 Wat ek doen wanneer Ek hardloop hierdie opdrag? 126 00:06:12,760 --> 00:06:13,405 >> Ja? 127 00:06:13,405 --> 00:06:16,572 >> GEHOOR: Daar is 'n funksie PHP wat lees wat in-- verstaan ​​dat. 128 00:06:16,572 --> 00:06:19,696 David Malan: Goed, daar is 'n funksie PHP-- en laat my meer spesifieke, 129 00:06:19,696 --> 00:06:21,810 daar is 'n program genaamd PHP, a.k.a. 130 00:06:21,810 --> 00:06:25,872 'N tolk, wat verstaan die inhoud van hello.php, 131 00:06:25,872 --> 00:06:27,830 en interpreteer dit om top onder, links na regs, 132 00:06:27,830 --> 00:06:29,590 en doen wat daardie opdragte te sê. 133 00:06:29,590 --> 00:06:33,320 Die opdragte in hello.php, natuurlik, is net die bron code-- funksies 134 00:06:33,320 --> 00:06:35,750 en veranderlikes en loops en die wil, dat ons onsself 135 00:06:35,750 --> 00:06:37,460 het begin skryf in PHP. 136 00:06:37,460 --> 00:06:40,240 >> Maar in teenstelling met C, wat is 'n saamgestel taal, 137 00:06:40,240 --> 00:06:42,810 PHP jy net skryf dit, en voer dit uit. 138 00:06:42,810 --> 00:06:46,420 Jy slaan dat middelman stap van dit na nulle en ene, 139 00:06:46,420 --> 00:06:47,790 en dan loop dit. 140 00:06:47,790 --> 00:06:50,510 En so wat is 'n onderstebo van hierdie? 141 00:06:50,510 --> 00:06:52,690 Hoekom is ons draai die stap? 142 00:06:52,690 --> 00:06:55,238 Hoekom doen meer moderne tale is geneig om hierdie stap oor te slaan? 143 00:06:55,238 --> 00:06:58,880 144 00:06:58,880 --> 00:07:01,220 Wat was die voordeel? 145 00:07:01,220 --> 00:07:02,080 >> Of net intuïtief? 146 00:07:02,080 --> 00:07:04,200 Selfs as ons het nie geskryf veel PHP voor, 147 00:07:04,200 --> 00:07:07,210 Wat is voordelig oor nie die opstel van jou kode dink jy? 148 00:07:07,210 --> 00:07:08,520 Geen? 149 00:07:08,520 --> 00:07:09,610 Nie pleeg? 150 00:07:09,610 --> 00:07:11,350 Krap jou kop? 151 00:07:11,350 --> 00:07:12,614 Ja. 152 00:07:12,614 --> 00:07:13,600 >> GEHOOR: Meer dinamiese. 153 00:07:13,600 --> 00:07:14,683 >> David Malan: Meer dinamiese? 154 00:07:14,683 --> 00:07:16,032 Wat bedoel jy? 155 00:07:16,032 --> 00:07:17,000 >> GEHOOR: [onhoorbaar] 156 00:07:17,000 --> 00:07:20,349 157 00:07:20,349 --> 00:07:22,390 David Malan: OK, goed, so afhangende van die insette, 158 00:07:22,390 --> 00:07:23,470 jy hoef nie om dit elke keer op te stel. 159 00:07:23,470 --> 00:07:24,990 En dit is regtig so eenvoudig soos that-- wat 160 00:07:24,990 --> 00:07:26,990 is die punt van die voortsetting van om jou kode te stel? 161 00:07:26,990 --> 00:07:29,480 Dit is net 'n stap wat making-- dit vereis, 162 00:07:29,480 --> 00:07:31,900 vir die afgelope paar weke, twee keer soveel stappe 163 00:07:31,900 --> 00:07:33,820 as net die bestuur van jou program. 164 00:07:33,820 --> 00:07:36,940 Dit is nuttig om te sien dat jy sien 'n paar fout boodskappe en so meer, 165 00:07:36,940 --> 00:07:38,720 maar dit is nog steeds net 'n irriterende stap. 166 00:07:38,720 --> 00:07:41,810 >> En so programmeerders besef met verloop van tyd, hoekom het ons nie 167 00:07:41,810 --> 00:07:45,327 begin skryf tale wat nie nodig dat redelik meganiese stap, 168 00:07:45,327 --> 00:07:47,160 sodat net skryf jou kode en voer dit uit. 169 00:07:47,160 --> 00:07:48,920 Maar wat was die prys dat ons het ons betaal 170 00:07:48,920 --> 00:07:50,910 verlede week, met 'n spesifieke voorbeeld? 171 00:07:50,910 --> 00:07:51,650 Ja? 172 00:07:51,650 --> 00:07:52,370 >> Spoed. 173 00:07:52,370 --> 00:07:54,690 So [? wat is?] tolke 'n bietjie stadiger, 174 00:07:54,690 --> 00:07:57,330 in daardie nulle en ene is mooi en vinnig vir 'n rekenaar 175 00:07:57,330 --> 00:08:00,070 om te verstaan, want die Intel CPU, of wat dit ookal is, 176 00:08:00,070 --> 00:08:03,070 net verstaan ​​wat aangaan met diegene patrone van stukkies. 177 00:08:03,070 --> 00:08:05,370 Terwyl 'n tolk is 'n program wat regtig 178 00:08:05,370 --> 00:08:07,980 het na die Ascii bron gelees kode wat jy geskryf het, 179 00:08:07,980 --> 00:08:12,700 en dit omskep, om so te praat, of uit te vind hoe dit vat uiteindelik 180 00:08:12,700 --> 00:08:13,525 om nulle en ene. 181 00:08:13,525 --> 00:08:15,650 So dit neem net 'n bietjie bietjie van 'n prestasie treffer. 182 00:08:15,650 --> 00:08:16,858 So dit is 'n bietjie van 'n trade-off. 183 00:08:16,858 --> 00:08:21,570 Nou as ons dit doen hier, laat my gaan voort en doen 'n voorbeeld soos volg. 184 00:08:21,570 --> 00:08:26,610 As ek gaan hier, nuwe lêer, ek gaan om dit weer te red is hello.php. 185 00:08:26,610 --> 00:08:31,450 En nou gaan ek voort te gaan en sê, "druk hello world" - 186 00:08:31,450 --> 00:08:35,130 en onthou dat ek druk kan gebruik, doen ek nie, moet druk-F te gebruik. En nou af hier, 187 00:08:35,130 --> 00:08:42,039 as ek PHP van hello.php doen huh-- ek lyk nie dit geïnterpreteer het. 188 00:08:42,039 --> 00:08:43,412 Wat het ek verkeerd gedoen? 189 00:08:43,412 --> 00:08:44,710 >> GEHOOR: Die skuins armbande. 190 00:08:44,710 --> 00:08:47,015 >> David Malan: Ja, moet jy daardie hoek bracket up top. 191 00:08:47,015 --> 00:08:49,390 So dit is soort van irriterende, maar jy gebruik om dit vinnig. 192 00:08:49,390 --> 00:08:53,500 As ek moet PHP kode te skryf, het ek algemeen nodig het om die program te vertel, 193 00:08:53,500 --> 00:08:56,950 of vertel die tolk, hey PHP, hier kom 'n paar PHP-kode. 194 00:08:56,950 --> 00:09:00,440 En dan vir 'n goeie maatreël, sou ek sluit dit nie met hierdie, maar eerder 195 00:09:00,440 --> 00:09:03,740 met net vraagteken hoek bracket, so wat nou hier, 196 00:09:03,740 --> 00:09:06,840 as ek weer loop dit nou Ek kry die gewenste resultaat. 197 00:09:06,840 --> 00:09:09,820 >> Nou laat ons doen 'n effense optimalisering, net sodat jy dit nog nooit gesien. 198 00:09:09,820 --> 00:09:14,040 Dit is 'n soort van irriterende dat ek moet PHP ruimte hello.php hardloop, 199 00:09:14,040 --> 00:09:16,060 want in die verlede het ek kon net skryf dot streep 200 00:09:16,060 --> 00:09:17,560 program naam, wat is 'n soort van mooi. 201 00:09:17,560 --> 00:09:19,420 Dit is soort van 'n beter gebruikers ervaring. 202 00:09:19,420 --> 00:09:24,160 >> So dit blyk jy kan dit doen in PHP met die following-- ek 203 00:09:24,160 --> 00:09:28,780 kan gebruik hierdie redelik kriptiese inkantasie aan die bokant hier 204 00:09:28,780 --> 00:09:31,740 wat algemeen bekend as 'n kaboedel, waardeur dit is 'n skerp simbool, 205 00:09:31,740 --> 00:09:34,270 om so te praat, is dit 'n knal of 'n uitroepteken. 206 00:09:34,270 --> 00:09:38,490 En dit is nou die pad na 'n program op 'n tipiese Linux stelsel wat 207 00:09:38,490 --> 00:09:41,500 genoem omgewing, of env. 208 00:09:41,500 --> 00:09:43,920 En dit line-- lang storie short-- lyn een net 209 00:09:43,920 --> 00:09:48,710 sê, hey rekenaar, vind die PHP tolk vir my in die omgewing, 210 00:09:48,710 --> 00:09:50,610 vind dit in jou geheue, om so te praat. 211 00:09:50,610 --> 00:09:54,130 >> En wat is nou mooi, is dat as ek gaan hier, 212 00:09:54,130 --> 00:09:57,750 Ek kan dot streep te doen hallo dot php, or-- hmm. 213 00:09:57,750 --> 00:09:59,000 Toestemming geweier. 214 00:09:59,000 --> 00:10:02,350 Wel, sal jy selfs meer van dit te sien met die probleem sit sewe, as jy 215 00:10:02,350 --> 00:10:04,060 nie reeds met regte. 216 00:10:04,060 --> 00:10:06,510 Dit blyk dat ek nodig het om hierdie opdrag uit te voer 217 00:10:06,510 --> 00:10:10,779 genoem [? chamod?] vir 'n verandering mode-- 'n plus x hello.php. 218 00:10:10,779 --> 00:10:13,820 Ek moet [onhoorbaar] hierdie een addisionele stap wat vertel van my rekenaar, 219 00:10:13,820 --> 00:10:16,400 maak hello.php uitvoerbare. 220 00:10:16,400 --> 00:10:21,310 En nou kyk wat happens-- dot streep hello.php, is dit net loop. 221 00:10:21,310 --> 00:10:23,310 Ek het nie nodig om te spesifiseer die tolk nie. 222 00:10:23,310 --> 00:10:26,680 En ek kan dit nog mooier te maak, Tog, as ek hierdie ding hernoem. 223 00:10:26,680 --> 00:10:30,570 As ek hello.php beweeg net Hello-- so in kennis links bo, 224 00:10:30,570 --> 00:10:32,860 die naam van die program is inderdaad nou net Hello. 225 00:10:32,860 --> 00:10:37,300 Nou kan ek maak dat dit lyk soos 'n C program, selfs al is dit geskryf in PHP-- 226 00:10:37,300 --> 00:10:39,210 of eerlik enige aantal van ander tale. 227 00:10:39,210 --> 00:10:41,480 >> So marginale verbetering, geen funksionele verskil. 228 00:10:41,480 --> 00:10:44,460 Maar dit is net 'n bietjie nuuskierigheid nou, sodat jy kan programme te skryf 229 00:10:44,460 --> 00:10:48,989 in enige taal, en die gebruiker nie doen moet weet of omgee wat dit is. 230 00:10:48,989 --> 00:10:51,030 Wel, laat ons kyk na 'n meer dwingende byvoorbeeld nou 231 00:10:51,030 --> 00:10:52,850 dat ek opgesweep in advance. 232 00:10:52,850 --> 00:10:54,955 En dit is genoem quote.php. 233 00:10:54,955 --> 00:10:56,740 En dit is aanlyn beskikbaar. 234 00:10:56,740 --> 00:11:00,299 En sien dat dit is redelik short-- maar dit is 'n command line program wat 235 00:11:00,299 --> 00:11:02,840 gaan kyk voorraad pryse vir my, wat eintlik gaan 236 00:11:02,840 --> 00:11:04,230 related te wees om die probleem die sewe. 237 00:11:04,230 --> 00:11:05,396 >> So laat ons sien wat ek doen. 238 00:11:05,396 --> 00:11:08,640 Op die heel boonste Ek het die oop bracket vraagteken PHP. 239 00:11:08,640 --> 00:11:13,372 Toe Ek het hierdie lyn, waardeur ek vereis 'n lêer genaamd functions.php-- 240 00:11:13,372 --> 00:11:15,080 ons gaan om te sien meer hieroor in 'n bietjie, 241 00:11:15,080 --> 00:11:17,340 maar dit is soos C se weergawe van skerp sluit, 242 00:11:17,340 --> 00:11:19,090 waar jy wil gaan sluit 'n ander lêer. 243 00:11:19,090 --> 00:11:23,720 PHP noem dit nodig het, al is dit het ook 'n funksie insluit. 244 00:11:23,720 --> 00:11:26,861 En dit blyk dat function.php is net iets wat ek geskryf het voor die klas. 245 00:11:26,861 --> 00:11:29,860 Ek sit dit in dieselfde gids, want Ek wou faktor paar kode 246 00:11:29,860 --> 00:11:31,800 dat ons dalk wil elders gebruik. 247 00:11:31,800 --> 00:11:34,560 >> Intussen kan jy waarskynlik aflei wat gaan hier aan. 248 00:11:34,560 --> 00:11:39,200 Dit is 'n bietjie anders as C-- maar wat bedoel ek met verseker dat behoorlike gebruik? 249 00:11:39,200 --> 00:11:41,180 Vertaal dit meer tegnies. 250 00:11:41,180 --> 00:11:45,950 Onder watter omstandighede is ek ophou van die program, of afsluit? 251 00:11:45,950 --> 00:11:47,074 Ja? 252 00:11:47,074 --> 00:11:47,990 >> GEHOOR: Wanneer jy nie twee command line argumente. 253 00:11:47,990 --> 00:11:49,480 >> David Malan: Wanneer Ek het nie om lyn argumente beveel. 254 00:11:49,480 --> 00:11:52,396 En onthou dat een van daardie argumente is die naam van die program se self. 255 00:11:52,396 --> 00:11:55,340 En die tweede gaan wees ander woord ek tik na die vinnige. 256 00:11:55,340 --> 00:11:57,460 So net soos C, hierdie is my manier van kontrole, 257 00:11:57,460 --> 00:12:00,022 het die gebruiker saam te werk en hardloop die program as ek bedoel? 258 00:12:00,022 --> 00:12:01,730 Nou, daar is iets 'n bietjie anders 259 00:12:01,730 --> 00:12:04,020 met C-- eerste van alles wat ons hierdie dollar teken 260 00:12:04,020 --> 00:12:07,710 en wat 'n dollar teken dui in PHP? 261 00:12:07,710 --> 00:12:08,440 Net 'n veranderlike. 262 00:12:08,440 --> 00:12:11,731 Dit is net 'n all-- veranderlike gevolg deur alles wat jy wil eintlik dit noem. 263 00:12:11,731 --> 00:12:14,000 Let daarop dat daar is iets ontbreek my PHP program, 264 00:12:14,000 --> 00:12:18,210 net soos dit was ontbreek laaste week, teenoor C, en dit is wat? 265 00:12:18,210 --> 00:12:21,620 >> A tipes, maar ook iets anders. 266 00:12:21,620 --> 00:12:26,409 Daar is geen iets function-- hooffunksie. 267 00:12:26,409 --> 00:12:27,450 Daar is geen hooffunksie. 268 00:12:27,450 --> 00:12:29,680 Jy begin net skryf jou kode sonder 269 00:12:29,680 --> 00:12:32,790 te bekommer oor 'n redelik arbitrêre konvensie van noem sommige verstek 270 00:12:32,790 --> 00:12:33,880 funksie belangrikste. 271 00:12:33,880 --> 00:12:36,720 So arg C is net regtig 'n globale veranderlike 272 00:12:36,720 --> 00:12:39,049 dat die tolk maak vir my beskikbaar. 273 00:12:39,049 --> 00:12:40,090 Nou, dit is interessant. 274 00:12:40,090 --> 00:12:41,140 So kyk dinge. 275 00:12:41,140 --> 00:12:43,370 Dollar-teken voorraad op die links, dit is my veranderlike. 276 00:12:43,370 --> 00:12:45,120 Op die regterkant, daar is blykbaar 277 00:12:45,120 --> 00:12:50,270 'n funksie in PHP genoem lookup dat Ek verby my laaste command line 278 00:12:50,270 --> 00:12:51,902 argument aan- ongeag die woord is. 279 00:12:51,902 --> 00:12:53,610 En ons sal sien hoe dit werk in 'n oomblik. 280 00:12:53,610 --> 00:12:55,380 >> En dan laastens ek die aanmelding van die prys. 281 00:12:55,380 --> 00:12:58,650 Ek is uit te druk een deel van so en so. 282 00:12:58,650 --> 00:13:02,082 En onthou, dit is die manier PHP-- 'n manier in PHP-- 283 00:13:02,082 --> 00:13:04,290 waar jy nie hoef te doen die dollar teken S nie. 284 00:13:04,290 --> 00:13:06,782 Jy kan net gebruik krulhakies en prop in sommige veranderlike. 285 00:13:06,782 --> 00:13:09,240 Jy hoef nie bekommerd te wees oor gebruik van printf op dieselfde manier. 286 00:13:09,240 --> 00:13:13,530 >> En as 'n eenkant, wanneer jy 'n veranderlike binnekant van dubbele aanhalingstekens soos hierdie, 287 00:13:13,530 --> 00:13:17,370 jy 'n fancy tegniek genoem veranderlike interpolasie. 288 00:13:17,370 --> 00:13:20,380 Dit beteken net prop die veranderlike hier. 289 00:13:20,380 --> 00:13:23,760 En as 'n eenkant, sommige van julle wat kom van ander programme agtergronde, 290 00:13:23,760 --> 00:13:26,960 jy mag nie aanhalingstekens gebruik rondom snare om dit te doen. 291 00:13:26,960 --> 00:13:30,290 Jy moet dubbel kwotasies vir gebruik veranderlike interpolasie te werk. 292 00:13:30,290 --> 00:13:32,740 Anders sal jy letterlik sien daardie krullerige draadjies. 293 00:13:32,740 --> 00:13:34,500 >> So laastens, laat ons gaan voort en hardloop hierdie. 294 00:13:34,500 --> 00:13:36,690 Laat my my terminale 'n bietjie groter. 295 00:13:36,690 --> 00:13:41,940 Laat my gaan voort en hardloop binnekant van my quote gids. 296 00:13:41,940 --> 00:13:46,950 [? CDsource?] [? AM?] [? quote?] PHP quote dot PHP, 297 00:13:46,950 --> 00:13:50,290 en ek gaan om te soek vir iets soos GOOG, wat is die simbool, 298 00:13:50,290 --> 00:13:55,510 en een deel van sy nuwe naam, Alfabet Inc, kos $ 717, soos vandag. 299 00:13:55,510 --> 00:13:58,680 Alle reg, as ons wil weer uit te voer hierdie, iemand 300 00:13:58,680 --> 00:14:02,600 het 'n ander voorraad ENKELE hulle wil om te kyk? 301 00:14:02,600 --> 00:14:06,770 >> Microsoft ek dink is hierdie een, MSFT-- $ 53. 302 00:14:06,770 --> 00:14:09,720 Ek dink Yahoo is miskien. 303 00:14:09,720 --> 00:14:12,130 En Facebook is dat. 304 00:14:12,130 --> 00:14:13,740 >> So, wat is hierdie program doen? 305 00:14:13,740 --> 00:14:16,306 Die magic blyk te wees ingesluit in daardie lookup funksie. 306 00:14:16,306 --> 00:14:17,430 So laat ons neem 'n vinnige blik. 307 00:14:17,430 --> 00:14:21,815 >> Dit blyk dat nie kom met PHP, dit is in functions.php. 308 00:14:21,815 --> 00:14:23,690 En ons sal nie deur hierdie in groot detail, 309 00:14:23,690 --> 00:14:28,040 maar kennis van die operatiewe woord hier is wat op die lyn ses functions.php-- 310 00:14:28,040 --> 00:14:29,440 Ek het letterlik sê funksie. 311 00:14:29,440 --> 00:14:31,050 Ek die naam van my funksie spesifiseer. 312 00:14:31,050 --> 00:14:34,330 Ek spesifiseer dan enige argumente of parameters, 313 00:14:34,330 --> 00:14:36,480 Ek wil hê dat die funksie om geen tipes take--. 314 00:14:36,480 --> 00:14:37,580 En dan het ek dit te implementeer. 315 00:14:37,580 --> 00:14:39,240 >> En Ek sal my hand waai by die implementering, 316 00:14:39,240 --> 00:14:42,115 want dit is redelik gevorderde reg nou nie, maar ons sal dit weer sien eintlik 317 00:14:42,115 --> 00:14:44,700 in 'n week in die probleem stel sewe. 318 00:14:44,700 --> 00:14:47,490 Maar ek kan dit ook skoon te maak. 319 00:14:47,490 --> 00:14:49,590 Ek het ook ingesluit in vandag se kode van 'n weergawe 320 00:14:49,590 --> 00:14:52,340 van quote, wat geen dot PHP lêer. 321 00:14:52,340 --> 00:14:57,270 Want wat is vermoedelik by die top van die program genoem net haal? 322 00:14:57,270 --> 00:15:00,140 Dat die sogenaamde shebang-- die redelik kriptiese inkantasie 323 00:15:00,140 --> 00:15:04,590 wat sê vind PHP en dan voer dit op my kode hier. 324 00:15:04,590 --> 00:15:07,360 >> Alle reg, sodat bring ons waar ons opgehou het 325 00:15:07,360 --> 00:15:09,560 laaste time-- al is dit met sommige meer gevorderde voorbeelde. 326 00:15:09,560 --> 00:15:13,980 Enige vrae wat tot dusver oor PHP of wat ons doen? 327 00:15:13,980 --> 00:15:15,570 No-- alles reg. 328 00:15:15,570 --> 00:15:16,180 Ja? 329 00:15:16,180 --> 00:15:19,610 >> GEHOOR: Binne-in die HTML-lêers, doen you-- 330 00:15:19,610 --> 00:15:22,226 [? doen jy ?] [? noem dit net?] 'n [onhoorbaar] PHP lêer? 331 00:15:22,226 --> 00:15:23,350 David Malan: Goeie vraag. 332 00:15:23,350 --> 00:15:26,070 In 'n web konteks, wat ons is letterlik oor die oorgang na, 333 00:15:26,070 --> 00:15:28,028 jy nie die gebruik van die sogenaamde kaboedel aan die bokant, 334 00:15:28,028 --> 00:15:31,980 omdat die web server-- dikwels 'n program genaamd Apache of Microsoft 335 00:15:31,980 --> 00:15:37,470 IIS, Internet Information Server, of enige aantal ander web bediener sagteware, 336 00:15:37,470 --> 00:15:40,636 weet dat wanneer dit sien 'n dot PHP lêer, dat dit 337 00:15:40,636 --> 00:15:42,010 moet die tolk hardloop op dit. 338 00:15:42,010 --> 00:15:43,468 Dit lyk nie op daardie eerste lyn. 339 00:15:43,468 --> 00:15:45,580 So die eerste lyn truuk is net wanneer jy 340 00:15:45,580 --> 00:15:48,330 skryf command line programs-- wat ons sal nie super dikwels doen, 341 00:15:48,330 --> 00:15:52,510 maar dit is die manier waarop ons te oorbrug ons C voorbeelde om nou ons PHP. 342 00:15:52,510 --> 00:16:00,680 >> So laat inderdaad die wêreld te oorbrug uit die opdrag lyn wêreld om die web 343 00:16:00,680 --> 00:16:02,230 deur die volgende te doen. 344 00:16:02,230 --> 00:16:05,090 Laat my gaan voort en teken hier vir net 'n oomblik. 345 00:16:05,090 --> 00:16:09,940 So as ons 'n web bediener, of liewer as ons my laptop hier, 346 00:16:09,940 --> 00:16:11,280 wat ek sal maak soos hierdie. 347 00:16:11,280 --> 00:16:14,250 En hier het ons die internet in 'n vorm. 348 00:16:14,250 --> 00:16:18,210 En dan hier, ons het 'n bediener in 'n building-- 349 00:16:18,210 --> 00:16:20,760 Dit is hoe die internet works-- en hier 350 00:16:20,760 --> 00:16:23,120 is 'n bediener met 'n paar ligte miskien. 351 00:16:23,120 --> 00:16:27,530 Wat is eintlik aan die gang tussen hierdie twee verbindings? 352 00:16:27,530 --> 00:16:29,240 >> So in hierdie gebou is 'n web bediener. 353 00:16:29,240 --> 00:16:31,420 Dit is net 'n rekenaar dit is wat loop sommige bedryfstelsel 354 00:16:31,420 --> 00:16:34,561 system-- dalk die vrye sagteware genoem Apache, wat CS50 IDE loop. 355 00:16:34,561 --> 00:16:36,310 So jy kan eintlik dink hierdie gebou 356 00:16:36,310 --> 00:16:38,579 as die gebou in wat CSt0 IDE gestoor word. 357 00:16:38,579 --> 00:16:40,870 Dit is waar almal van julle het rekeninge, waar almal van julle 358 00:16:40,870 --> 00:16:43,130 jou eie web server hardloop, almal van julle 359 00:16:43,130 --> 00:16:45,730 jou eie unieke URL's, as ons begin om te bespreek, 360 00:16:45,730 --> 00:16:47,280 en jy sal sien meer in P. stel ses. 361 00:16:47,280 --> 00:16:49,450 >> Hier is my laptop iewers anders op die internet. 362 00:16:49,450 --> 00:16:54,550 En so toe ek besoek 'n URL wat behoort vir my is dat die internet verkeer gaan 363 00:16:54,550 --> 00:16:58,360 oor die bediener, die bediener se ontvangs van 'n HTTP request-- 364 00:16:58,360 --> 00:17:02,900 soos 'n te kry en dit is index.html antwoord op daardie webblad. 365 00:17:02,900 --> 00:17:04,280 So wat is die algemene paradigma. 366 00:17:04,280 --> 00:17:07,089 AANGESIEN alles op tot nou vandag alles 367 00:17:07,089 --> 00:17:09,660 slegs gebeur in die grense van hierdie gebou. 368 00:17:09,660 --> 00:17:12,910 Ek gebruik my laptop, maar Ek is verbind tot CS50 IDE, 369 00:17:12,910 --> 00:17:17,369 so al die programme ek hardloop was binnekant van die bediener, self. 370 00:17:17,369 --> 00:17:22,660 >> Maar nou, laat ons begin hergebruik PHP sommige werklike programme te skryf wat 371 00:17:22,660 --> 00:17:24,230 is up bedien deur 'n web bediener. 372 00:17:24,230 --> 00:17:30,320 En om dit te doen, ek gaan om te gaan in 'n hele klomp van die voorbeelde 373 00:17:30,320 --> 00:17:33,710 wat stel hier hierdie idee. 374 00:17:33,710 --> 00:17:38,500 So dit is 'n soort van 'n fancy manier beskrywing van 'n programmeertaal paradigma. 375 00:17:38,500 --> 00:17:41,540 >> En in die feit, soos jy CS50 verlaat of werk op die finale projekte, 376 00:17:41,540 --> 00:17:43,520 of neem 'n paar te volg op die klas, sal jy begin 377 00:17:43,520 --> 00:17:45,740 om te sien dat die world-- veral nadat grootgeword 378 00:17:45,740 --> 00:17:48,300 met tale soos C wat super lae level-- 379 00:17:48,300 --> 00:17:51,290 besef dat daar is beter maniere van skryf sagteware. 380 00:17:51,290 --> 00:17:53,290 Daar is sekere patrone wat jy kan volg, 381 00:17:53,290 --> 00:17:57,640 sekere maniere organiseer jou lêers en weë van die name van jou funksies, 382 00:17:57,640 --> 00:18:00,300 sodat lang storie kort, die wêreld het gekom 383 00:18:00,300 --> 00:18:04,340 met 'n hele klomp van die akronieme en name vir maniere van programmering. 384 00:18:04,340 --> 00:18:06,260 Dit is net tegnieke wat jy kan gebruik. 385 00:18:06,260 --> 00:18:09,660 >> En een van hulle is genoem MVC, vir Model View Controller. 386 00:18:09,660 --> 00:18:12,270 En dit is net vir nou, 'n té ingewikkeld 387 00:18:12,270 --> 00:18:18,960 manier om te sê hoe jy moet uit te lê 'n PHP-gebaseerde webwerf, in ons geval. 388 00:18:18,960 --> 00:18:22,140 Hoe kan jy jou lêers, hoe kan jy organiseer jou logika, 389 00:18:22,140 --> 00:18:26,220 in 'n manier dat dit makliker is om maak skryf meer ingewikkeld webwerwe? 390 00:18:26,220 --> 00:18:28,550 En inderdaad, sal ons vinnig kry daar saam met p-stel sewe. 391 00:18:28,550 --> 00:18:32,020 >> So in die wêreld van MVC, jy gaan om te sien dat ons kode kan oor die algemeen 392 00:18:32,020 --> 00:18:38,290 gekenmerk word as óf model kode, of kontroleerder kode, of oog-kode. 393 00:18:38,290 --> 00:18:40,200 En ek gaan oversimplify dit as follows-- 394 00:18:40,200 --> 00:18:42,074 die kontroles is die brein van jou program, 395 00:18:42,074 --> 00:18:44,100 dit is waar al die interessante logika gebeur. 396 00:18:44,100 --> 00:18:46,110 So alles wat ons het is skryf tot dusver in die klas, 397 00:18:46,110 --> 00:18:48,210 is soort van soos kontroleerder code-- dit beheer 398 00:18:48,210 --> 00:18:50,585 jou program, jou loops, jou voorwaardes, u funksies 399 00:18:50,585 --> 00:18:52,100 en veranderlikes en alles wat. 400 00:18:52,100 --> 00:18:56,160 >> Uitsig, nou, gaan 'n bietjie te wees meer duidelik in die wêreld van die web. 401 00:18:56,160 --> 00:18:59,360 'N siening is die estetika van jou webwerf. 402 00:18:59,360 --> 00:19:04,080 Dit is wat die gebruiker die beelde sees--, die HTML tafels, die HTML tags, en al 403 00:19:04,080 --> 00:19:08,220 van dat, al die sagte estetiese dinge wat nie so moeilik om te skryf, 404 00:19:08,220 --> 00:19:11,380 maar is net wat jy genereer, is die sogenaamde oog, die estetika. 405 00:19:11,380 --> 00:19:13,880 En model, uiteindelik, gaan databasis spul wees wat 406 00:19:13,880 --> 00:19:16,510 ons sal duik in al begin die meer hierdie Woensdag. 407 00:19:16,510 --> 00:19:19,740 So kontroleerder is die logika, siening is die estetiese dinge, 408 00:19:19,740 --> 00:19:23,500 en model gaan wees waar Ons slaan ons werklike data. 409 00:19:23,500 --> 00:19:26,410 >> So laat ons kyk na dit meer konkreet met die volgende voorbeeld. 410 00:19:26,410 --> 00:19:34,700 Ek gaan hier in my gids gaan bron vandag se code-- wat almal 411 00:19:34,700 --> 00:19:35,770 is aanlyn beskikbaar. 412 00:19:35,770 --> 00:19:37,800 En ek gaan in weergawe nul om te gaan. 413 00:19:37,800 --> 00:19:41,500 En hier is-- kom ons noem dit die weergawe van die webwerf nul CS50 se. 414 00:19:41,500 --> 00:19:43,010 Daar is nie veel hier nie. 415 00:19:43,010 --> 00:19:46,810 Dit is 'n baie eenvoudige webblad wat waarskynlik gebruik wat HTML tags-- net 416 00:19:46,810 --> 00:19:48,970 raai uit die verlede voorbeelde? 417 00:19:48,970 --> 00:19:49,890 >> Wat is dit? 418 00:19:49,890 --> 00:19:53,920 H1-- waarskynlik vir daardie groot vet titel, wat logo up top, CS50. 419 00:19:53,920 --> 00:19:55,080 En wat anders is op die spel? 420 00:19:55,080 --> 00:19:55,799 Ja? 421 00:19:55,799 --> 00:19:56,840 GEHOOR: On-geordende lys. 422 00:19:56,840 --> 00:19:59,990 David Malan: Ongeordende list-- so die UL tag en miskien 'n paar van die LI tags. 423 00:19:59,990 --> 00:20:01,840 En as jy nie hierdie onthou, dit eerlik nie saak nie. 424 00:20:01,840 --> 00:20:04,170 Dit is soort van sagte implementering van HTML besonderhede 425 00:20:04,170 --> 00:20:06,378 dat jy vinnig opkyk en jy is terug op jou pad. 426 00:20:06,378 --> 00:20:10,040 Ons sal meer fokus op die ontwikkeling idees wat die sappiger stukke is. 427 00:20:10,040 --> 00:20:12,890 >> So laat ons net 'n vinnige kyk na die HTML-- en inderdaad 428 00:20:12,890 --> 00:20:16,880 as ek oop te maak die bron oog hier, yup, Dit is presies wat gaan hier aan. 429 00:20:16,880 --> 00:20:18,440 Daar is 'n UL tag. 430 00:20:18,440 --> 00:20:20,630 Geneste binnekant van dit is LI tags. 431 00:20:20,630 --> 00:20:24,470 En dan geleen Ek die URL van die werklike leerplan hier. 432 00:20:24,470 --> 00:20:27,570 >> En dan in die lectures.php is blykbaar 433 00:20:27,570 --> 00:20:31,640 'n ander dinamiese gegenereerde bladsy wat gaan om te hê, laat ons see-- ah, 434 00:20:31,640 --> 00:20:33,170 die eerste twee weke van lesing. 435 00:20:33,170 --> 00:20:36,600 So week nul en een week, laat kyk na this-- as ek sien bladsy bron 436 00:20:36,600 --> 00:20:38,120 ook super eenvoudig. 437 00:20:38,120 --> 00:20:42,430 Dit is wat lei tot twee bladsye genoem week0.php en week1.php. 438 00:20:42,430 --> 00:20:44,040 So oorweeg nou wat gebeur. 439 00:20:44,040 --> 00:20:50,630 >> Wanneer ek op week0.php, my laptop maak 'n versoek om week0.php. 440 00:20:50,630 --> 00:20:53,700 441 00:20:53,700 --> 00:20:58,110 Die web bediener, a.k.a., CS50 IDE, ontvang dat virtuele koevert. 442 00:20:58,110 --> 00:21:01,040 Dit sien 'n boodskap soos, kry week0.php. 443 00:21:01,040 --> 00:21:05,060 Dit word dan die interpretasie van die lêer, top na onder, links na die lêer right-- 444 00:21:05,060 --> 00:21:07,720 genoem week0.php-- en spoeg uit die resultate. 445 00:21:07,720 --> 00:21:10,510 So binnekant van hierdie lêer, week0.php, moet 446 00:21:10,510 --> 00:21:15,410 die kontroles logika wat genereer hierdie HTML, en ons sal gou sien dat. 447 00:21:15,410 --> 00:21:19,340 >> Maar vir nou, laat my klik op week nul, en nou het ons Woensdag en Vrydag, 448 00:21:19,340 --> 00:21:25,260 en nou het ons die skyfies stadig van week nul. 449 00:21:25,260 --> 00:21:27,400 En jy kan onthou dit van pad terug toe. 450 00:21:27,400 --> 00:21:29,340 So dit is al wat hierdie webwerf is om te doen. 451 00:21:29,340 --> 00:21:31,120 >> So laat ons kyk hoe dit dit te doen. 452 00:21:31,120 --> 00:21:34,290 Ek gaan om terug te gaan na die bronkode hier, in CS50 IDE, 453 00:21:34,290 --> 00:21:36,660 en ek gaan om oop te maak index.php. 454 00:21:36,660 --> 00:21:38,910 Op die top van hierdie lêer is 'n klomp van die kommentaar. 455 00:21:38,910 --> 00:21:43,000 En dan in die middel van hierdie lêer, dit blyk, is geen PHP-kode hoegenaamd nie. 456 00:21:43,000 --> 00:21:47,380 Want as jy nie enige van die het oop bracket vraagteken PHP tags, 457 00:21:47,380 --> 00:21:49,180 jy is vry om net sit HTML. 458 00:21:49,180 --> 00:21:51,480 >> Want wat die PHP tolk veronderstel is om te doen nie, 459 00:21:51,480 --> 00:21:53,938 is wanneer dit lees hierdie file-- bo na onder, links na right-- 460 00:21:53,938 --> 00:21:59,100 dit interpreteer net code dit sien tussen diegene hoek tussen hakies vraagteken. 461 00:21:59,100 --> 00:22:02,380 En enigiets anders wat dit nie doen nie erken as PHP, dit spoeg net uit. 462 00:22:02,380 --> 00:22:05,080 En HTML is een van die dinge dit sal net spoeg uit. 463 00:22:05,080 --> 00:22:09,090 >> So hierdie lêer kon is index.html genoem, 464 00:22:09,090 --> 00:22:11,690 maar ek noem alles dot PHP as 'n stepping stone. 465 00:22:11,690 --> 00:22:15,960 Lectures.php-- insgelyks underwhelming, dit is net 'n paar HTML. 466 00:22:15,960 --> 00:22:19,840 Week0.php, insgelyks net 'n paar HTML. 467 00:22:19,840 --> 00:22:22,300 >> Maar laat ons nou op die spreekwoordelike ingenieurswese hoed, 468 00:22:22,300 --> 00:22:24,400 en kyk hoe ons dit kan verbeter. 469 00:22:24,400 --> 00:22:28,541 Dit is nie moeilik om dit te doen nie, maar ek soort van afgewentel na kopie en plak. 470 00:22:28,541 --> 00:22:31,540 En in die feit, as ek week twee, jy weet wat ek waarskynlik gaan om te doen? 471 00:22:31,540 --> 00:22:34,940 Ek gaan om te gaan na week1.php, ek is gaan alles beklemtoon. 472 00:22:34,940 --> 00:22:39,110 Ek is van plan om dit te kopieer, plak dit in 'n nuwe lêer genaamd week2.php, 473 00:22:39,110 --> 00:22:42,440 tweak paar URLs, en op my manier. 474 00:22:42,440 --> 00:22:45,240 >> So op grond van wat ons het gesien in C reeds 475 00:22:45,240 --> 00:22:46,860 Dit beteken egter nie reg voel, hopelik. 476 00:22:46,860 --> 00:22:49,610 Kopieer, plak selde die regte oplossing. 477 00:22:49,610 --> 00:22:51,429 So, wat kan ons begin om te doen om dit te verbeter? 478 00:22:51,429 --> 00:22:53,345 Waar is die geleenthede vir 'n beter ontwerp? 479 00:22:53,345 --> 00:22:56,890 480 00:22:56,890 --> 00:22:58,760 >> Teen die tyd dat ek by week agt, dit gaan 481 00:22:58,760 --> 00:23:00,910 regtig irriterende te wees as ek wil om te verander 482 00:23:00,910 --> 00:23:03,930 die font van elkeen van my bladsye, of as ek wil 483 00:23:03,930 --> 00:23:06,522 om die struktuur van die uitleg te verander. 484 00:23:06,522 --> 00:23:08,396 So waar is die geleentheid vir 'n beter ontwerp? 485 00:23:08,396 --> 00:23:11,990 486 00:23:11,990 --> 00:23:15,160 Wel, laat ons kyk wat is gedeel oor al hierdie lêers. 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 dieselfde is en Wat is anders, rofweg gesproke, 489 00:23:25,790 --> 00:23:26,760 in elk van hierdie lêers? 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 >> GEHOOR: [onhoorbaar] 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 So is daar 'n patroon, sekerlik, waardeur elke keer as ek kies lesing I, 496 00:23:46,115 --> 00:23:48,250 Ek moet skep van 'n baie soortgelyk soek-bladsy. 497 00:23:48,250 --> 00:23:50,375 En so miskien kan ek hefboom die feit dat baie, 498 00:23:50,375 --> 00:23:53,060 ons doelbewus numeries geïndekseer ons lectures-- 499 00:23:53,060 --> 00:23:55,290 as ek nog meer kan sit woorde in jou antwoord. 500 00:23:55,290 --> 00:23:59,984 En wat is die enigste ding wat regtig nie, dit is die verandering tussen week one-- 501 00:23:59,984 --> 00:24:02,400 en laat my rol af so dit is rofweg in dieselfde place-- 502 00:24:02,400 --> 00:24:05,480 so hier is week nul, rofweg aan die bokant. 503 00:24:05,480 --> 00:24:12,370 Hier is week een week nul, week een week nul. 504 00:24:12,370 --> 00:24:14,370 OK, letterlik as jy weet geen program ookal, 505 00:24:14,370 --> 00:24:16,286 dit is nou net soos 'n patroon wat ooreenstem met spel. 506 00:24:16,286 --> 00:24:17,200 So, wat is die verskil? 507 00:24:17,200 --> 00:24:18,765 Ja? 508 00:24:18,765 --> 00:24:19,777 >> GEHOOR: [onhoorbaar] 509 00:24:19,777 --> 00:24:22,360 David Malan: Goed, so die titel verander, ooit so effens. 510 00:24:22,360 --> 00:24:24,010 Zero gaan, natuurlik, een. 511 00:24:24,010 --> 00:24:25,570 Dieselfde ding gebeur in die H1 tag. 512 00:24:25,570 --> 00:24:28,790 En ons het nie baie sien dit as maklik, omdat die URLs is 'n bietjie lank. 513 00:24:28,790 --> 00:24:30,670 Maar diegene URLs is effens verander. 514 00:24:30,670 --> 00:24:34,490 >> Maar wat nie verander nie, durf ek sê, die meeste van die inhoud van die page-- 515 00:24:34,490 --> 00:24:38,530 die HTML tag is dieselfde, die kop is dieselfde, die titel is byna dieselfde, 516 00:24:38,530 --> 00:24:40,659 die liggaam is dieselfde, en byna alles anders 517 00:24:40,659 --> 00:24:42,450 is dieselfde, behalwe vir daardie klein tweaked. 518 00:24:42,450 --> 00:24:45,310 So, hoe kan ons gaan oor factoring sommige van dit uit? 519 00:24:45,310 --> 00:24:48,740 >> Wel laat ek stel presies dat in die volgende weergawe. 520 00:24:48,740 --> 00:24:53,890 So hier in weergawe een, ek het die presiese dieselfde lêers, plus 'n paar ander. 521 00:24:53,890 --> 00:24:59,730 Hier is index.php-- en selfs as jy nog nooit gesien voor PHP, 522 00:24:59,730 --> 00:25:05,511 wat ek waarskynlik doen om hierdie op te los problem-- gebaseer op wat jy hier sien? 523 00:25:05,511 --> 00:25:11,300 524 00:25:11,300 --> 00:25:12,760 Ja, is dat 'n effense verbintenis? 525 00:25:12,760 --> 00:25:13,450 Geen? 526 00:25:13,450 --> 00:25:16,020 Ja, gaan op. 527 00:25:16,020 --> 00:25:17,380 >> GEHOOR: [onhoorbaar] 528 00:25:17,380 --> 00:25:18,380 >> David Malan: Yep. 529 00:25:18,380 --> 00:25:20,380 >> GEHOOR: [onhoorbaar] 530 00:25:20,380 --> 00:25:26,090 531 00:25:26,090 --> 00:25:28,669 >> David Malan: Ek moet jy praat net 'n bietjie harder. 532 00:25:28,669 --> 00:25:31,084 >> GEHOOR: [onhoorbaar] 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 ek think-- dit was moeilik om te you-- maar ek hoor 536 00:25:38,620 --> 00:25:42,690 dink wat jy kry op is dat die etikette wat algemeen up top was, 537 00:25:42,690 --> 00:25:47,710 en die etikette wat algemeen was op die bodem, is nou ingereken word, 538 00:25:47,710 --> 00:25:51,140 of verban na watter lêers? 539 00:25:51,140 --> 00:25:53,476 Header.php en footer.php-- en ons gaan 540 00:25:53,476 --> 00:25:55,600 sommige tweaks maak spreek die kommer jy net 541 00:25:55,600 --> 00:25:59,370 uitgespreek oor die getalle verander, want Byvoorbeeld, as ek reg gehoor nie. 542 00:25:59,370 --> 00:26:02,060 >> Maar dit blyk die kern van dit te wees. 543 00:26:02,060 --> 00:26:04,820 As daar 'n groot hoeveelheid van die ontslag aan die bokant van die bladsy 544 00:26:04,820 --> 00:26:06,736 en 'n groot hoeveelheid van die ontslag aan die onderkant, 545 00:26:06,736 --> 00:26:09,280 laat letterlik net 'n hoogtepunt en sny dat die inhoud nie, 546 00:26:09,280 --> 00:26:13,270 sit dit in 'n aparte file-- net soos die idee van CSS, waar ons ingereken uit 547 00:26:13,270 --> 00:26:16,710 baie soortgelyk estetika, sit dit in 'n aparte dot PHP lêer, 548 00:26:16,710 --> 00:26:20,340 gebruik die mechanism-- vereis wat is soos C skerp include-- wat 549 00:26:20,340 --> 00:26:23,570 is in wese soos om te sê gaan gryp die inhoud van header.php, 550 00:26:23,570 --> 00:26:25,370 en kopieer en plak dit hier. 551 00:26:25,370 --> 00:26:29,490 >> Maar wat dit beteken is dat dit nou in index.php, ek het die twee lyne. 552 00:26:29,490 --> 00:26:32,130 In lectures.php, het ek ook het die twee lyne. 553 00:26:32,130 --> 00:26:35,230 In week0.php, het ek ook het die twee lyne. 554 00:26:35,230 --> 00:26:38,380 >> So nou, as ek wil om te verander die titel van al my bladsye, 555 00:26:38,380 --> 00:26:40,530 of ek wil die verander fundamentele struktuur, 556 00:26:40,530 --> 00:26:44,380 Ek kan dit nou verander in net een plek, of twee places-- kop-en voet, 557 00:26:44,380 --> 00:26:45,429 onderskeidelik. 558 00:26:45,429 --> 00:26:47,970 Nou begin die kode se om te kyk 'n bietjie meer kriptiese, reg? 559 00:26:47,970 --> 00:26:53,590 Maar as jy dink oor wat die bladsy is doing-- as ek versoek week0.php, 560 00:26:53,590 --> 00:26:59,880 net soos op die tekening oor here-- wanneer week0.php versoek word, 561 00:26:59,880 --> 00:27:00,960 wat beteken dit? 562 00:27:00,960 --> 00:27:04,410 >> Letterlik, hierdie lêer is versoek deur die leser. 563 00:27:04,410 --> 00:27:06,240 Die web server-- a.k.a. 564 00:27:06,240 --> 00:27:09,250 CS50 ID-- gryp hierdie lêer, week0.php, en lees 565 00:27:09,250 --> 00:27:10,780 dit bo tot onder, links na regs. 566 00:27:10,780 --> 00:27:15,400 On line een, is dit onmiddellik ontmoetings oop bracket vraagteken PHP, vereis 567 00:27:15,400 --> 00:27:17,872 header dot PHP, en so wat die PHP tolk 568 00:27:17,872 --> 00:27:20,580 does-- dit is gebou in die web bediener, omdat ons vooraf 569 00:27:20,580 --> 00:27:24,580 dit you-- dit outomaties gaan in header.php, afskrifte van die inhoud, 570 00:27:24,580 --> 00:27:25,640 plak hulle hier. 571 00:27:25,640 --> 00:27:28,790 >> Maar dan moet die tolk ontmoetings vraagteken naby bracket, 572 00:27:28,790 --> 00:27:30,320 so dit is al gedoen dink. 573 00:27:30,320 --> 00:27:33,400 Nou is dit net blindelings spoeg uit lyne twee deur sewe 574 00:27:33,400 --> 00:27:35,240 want dit is net rou HTML. 575 00:27:35,240 --> 00:27:38,470 Kry om te reël agt, en doen wat dieselfde magic again-- die opening van die lêer, 576 00:27:38,470 --> 00:27:41,460 gryp die inhoud en wat hulle of hulle plak 577 00:27:41,460 --> 00:27:42,480 regs en dan of daar. 578 00:27:42,480 --> 00:27:44,210 >> Maar ek het net verwys na 'n fout. 579 00:27:44,210 --> 00:27:48,610 Dit is 'n gedeeltelike stap agteruit, want as ons kyk in header.php, 580 00:27:48,610 --> 00:27:50,850 Ek het soort van sny 'n hoek. 581 00:27:50,850 --> 00:27:56,250 Watter kenmerk het ek opgee om om hierdie omstrede beter ontwerp te kry? 582 00:27:56,250 --> 00:27:57,305 Ja? 583 00:27:57,305 --> 00:27:58,180 GEHOOR: [onhoorbaar] 584 00:27:58,180 --> 00:28:00,570 David Malan: Ja, ek soort van sny 'n triviaal hoek. 585 00:28:00,570 --> 00:28:04,489 Jy het daarop gewys dat dit wat die verandering was die titel, die nommer in die titel, 586 00:28:04,489 --> 00:28:05,530 en die getal in die H1. 587 00:28:05,530 --> 00:28:08,170 So my oplossing was, OK, laat ons net die naam van die blad, 588 00:28:08,170 --> 00:28:10,080 en nie te gaan met dit probleem hoegenaamd nie. 589 00:28:10,080 --> 00:28:12,130 So dit is 'n gedeeltelike stap agteruit vir seker. 590 00:28:12,130 --> 00:28:14,300 >> Maar wat opvallend is hier Is dit wat ek gedoen het 591 00:28:14,300 --> 00:28:17,200 anders ingereken al die gemeenskaplike dinge. 592 00:28:17,200 --> 00:28:21,520 En in footer.php, sien ek ingereken al van dat, hoewel minder, 593 00:28:21,520 --> 00:28:22,790 algemene dinge. 594 00:28:22,790 --> 00:28:26,070 So ek moet een of ander manier nou in staat wees om neem nog 'n stap vorentoe, en los 595 00:28:26,070 --> 00:28:27,160 daardie titel kwessies. 596 00:28:27,160 --> 00:28:28,180 So laat dit te doen. 597 00:28:28,180 --> 00:28:35,060 >> Laat my gaan in my tweede weergawe hier, wat, weer, het dieselfde lêers 598 00:28:35,060 --> 00:28:36,825 behalwe vir een nuwe toevoeging. 599 00:28:36,825 --> 00:28:38,950 En dit is 'n bietjie meer verbose, maar laat ons kyk of ons 600 00:28:38,950 --> 00:28:40,550 kan terg uitmekaar wat gaan hier aan. 601 00:28:40,550 --> 00:28:45,370 So in plaas van dat header.php en footer.php, 602 00:28:45,370 --> 00:28:50,180 Dit lyk asof ek net wat een file-- genoem, natuurlik, helpers.php. 603 00:28:50,180 --> 00:28:52,560 En laat my nou bepaal, wat binne in helpers.php 604 00:28:52,560 --> 00:28:55,330 is net 'n klomp van die funksies wat ek geskryf het, net soos voorheen. 605 00:28:55,330 --> 00:28:57,550 Maar ek het dit helpers.php. 606 00:28:57,550 --> 00:29:00,370 >> Nou blykbaar in lyn drie en 10, ek is 607 00:29:00,370 --> 00:29:02,840 roep twee functions-- lewer kop, lewer footer. 608 00:29:02,840 --> 00:29:05,040 Diegene kom nie met PHP, het ek geskryf diegene myself. 609 00:29:05,040 --> 00:29:07,880 En ek het dit in helpers.php. 610 00:29:07,880 --> 00:29:11,210 >> Nou het ons net gesien hoe hierdie sintaksis een keer, en dit was super kort. 611 00:29:11,210 --> 00:29:15,330 Maar dit is blykbaar 'n argument om kop, die funksie lewer. 612 00:29:15,330 --> 00:29:16,450 Hoekom weet ek dit? 613 00:29:16,450 --> 00:29:18,522 Wel, hier is 'n beslote paren, hier is 'n oop hakie. 614 00:29:18,522 --> 00:29:21,230 En natuurlik, net soos in C, enigiets tussen diegene hakies 615 00:29:21,230 --> 00:29:23,350 is 'n input-- of 'n argument om die funksie. 616 00:29:23,350 --> 00:29:26,710 >> Wat is die data tipe van hierdie argument, gebaseer op wat ek uitgelig? 617 00:29:26,710 --> 00:29:30,820 Wat doen diegene vierkantige hakies dui, gebaseer op verlede week? 618 00:29:30,820 --> 00:29:33,390 Ja, dit is 'n array-- spesifiek 'n assosiatiewe skikking. 619 00:29:33,390 --> 00:29:35,700 En dit sintaksis weliswaar is 'n bietjie funky, 620 00:29:35,700 --> 00:29:38,860 Maar dit is net verby in een van die belangrikste waarde paar. 621 00:29:38,860 --> 00:29:43,530 Die sleutel is, quote unquote titel, en die waarde is CS50. 622 00:29:43,530 --> 00:29:46,220 >> As ons dit gedoen in C, kan dit plaas 623 00:29:46,220 --> 00:29:49,400 lyk meer soos hierdie, net quote unquote CS50-- 624 00:29:49,400 --> 00:29:52,460 of eintlik sou dit wees krullerige draadjies, of iets soos dit in C, 625 00:29:52,460 --> 00:29:55,580 waar die sleutel is nul, en die waarde is CS50. 626 00:29:55,580 --> 00:29:59,840 Maar weereens, in PHP, selfs al is die sintaksis is, weer, 'n bietjie vreemd, 627 00:29:59,840 --> 00:30:02,860 dit kan jy in slaag woorde in plaas van getalle 628 00:30:02,860 --> 00:30:05,120 om sleutels te assosieer met waardes. 629 00:30:05,120 --> 00:30:06,390 >> So, wat beteken dit alles? 630 00:30:06,390 --> 00:30:09,750 As ek gaan in helpers.php, laat ons kyk na hierdie funksie. 631 00:30:09,750 --> 00:30:13,620 renderHeader.php, eerder renderHeader is my funksie, 632 00:30:13,620 --> 00:30:16,220 en ek weet dat want ek sien die funksie navraag hier. 633 00:30:16,220 --> 00:30:19,450 Dit is 'n nuwe uit C-- dit blykbaar neem 'n argument genoem data-- 634 00:30:19,450 --> 00:30:22,400 maar ek kon dit genoem enigiets nie, maar ek het dit data, 635 00:30:22,400 --> 00:30:25,090 net 'n bietjie clean-- wees en net 'n raaiskoot, veral 636 00:30:25,090 --> 00:30:28,173 as jy het geprogrammeer in 'n ander hoër vlak taal voor, iets wat 637 00:30:28,173 --> 00:30:29,820 bo C, konseptueel. 638 00:30:29,820 --> 00:30:33,820 >> Wat beteken gelyke oop bracket vierkante bracket waarskynlik beteken? 639 00:30:33,820 --> 00:30:35,540 Of wat kan dit beteken? 640 00:30:35,540 --> 00:30:39,660 Ons het dit nie gesien in C. Ja? 641 00:30:39,660 --> 00:30:40,480 >> 'N leë skikking. 642 00:30:40,480 --> 00:30:45,440 Spesifiek, beteken dit dat indien die gebruiker renderHeader noem nie 643 00:30:45,440 --> 00:30:49,340 met 'n argument, ek gaan nog om 'n argument genoem data het, 644 00:30:49,340 --> 00:30:52,327 maar die standaard waarde is gaan na 'n leë verskeidenheid wees. 645 00:30:52,327 --> 00:30:53,660 So dit is net 'n mooi gerief. 646 00:30:53,660 --> 00:30:56,493 Ek hoef nie te skree die gebruiker, of sê jy gebruik my funksie verkeerd. 647 00:30:56,493 --> 00:30:59,849 Ek kan net 'n verstek gee die gebruiker waarde, indien ek nie veral sorg. 648 00:30:59,849 --> 00:31:01,890 Nou is hierdie funksie, ek is gaan my hande waai. 649 00:31:01,890 --> 00:31:07,620 Maar hierdie uittreksel funksie kan ons om hierdie veranderlikes in die data slaag 650 00:31:07,620 --> 00:31:10,360 in header.php in die volgende manier. 651 00:31:10,360 --> 00:31:13,100 En dit is die laaste stuk, Ek dink, van funky sintaksis. 652 00:31:13,100 --> 00:31:15,860 Hier is my nuwe weergawe van header.php-- dit 653 00:31:15,860 --> 00:31:20,140 gebruik om te sê, letterlik, oop bracket titel CS50, en dit was dit. 654 00:31:20,140 --> 00:31:21,766 En dieselfde ding vir die H1. 655 00:31:21,766 --> 00:31:24,310 >> Nou is dit blykbaar sê iets mooi funky. 656 00:31:24,310 --> 00:31:28,030 En laat my vereenvoudig vir 'n oomblik soos volg. 657 00:31:28,030 --> 00:31:31,020 Dit is wat ek het verander my titel te wees. 658 00:31:31,020 --> 00:31:35,140 Dit is egter 'n bietjie lelik om voortdurend oop hakies met PHP, 659 00:31:35,140 --> 00:31:36,610 en gebruik dan die gedrukte funksie. 660 00:31:36,610 --> 00:31:40,810 Dit blyk dat 'n snelskrif PHP notasie vir hierdie, wat net 661 00:31:40,810 --> 00:31:45,050 'n gelyke teken, wat is tegnies 'n funksie genoem eggo in plaas van druk, 662 00:31:45,050 --> 00:31:46,800 maar dit is dieselfde ding, effektief. 663 00:31:46,800 --> 00:31:48,440 >> Dit lyk net beter. 664 00:31:48,440 --> 00:31:50,510 Dit is net 'n sintaktiese suiker, as jy wil, 665 00:31:50,510 --> 00:31:52,260 dit maak my kode kyk 'n bietjie beter. 666 00:31:52,260 --> 00:31:54,010 Maar dit blyk, en ons sal dit weer te sien 667 00:31:54,010 --> 00:31:57,420 voor lank het ons na hierdie skakel lastig lang funksie genoem 668 00:31:57,420 --> 00:32:00,582 HTML spesiale karakters in PHP, want dit blyk 669 00:32:00,582 --> 00:32:02,790 daar is sekere insette wat die gebruiker kan gee vir ons, 670 00:32:02,790 --> 00:32:05,160 of dat die gebruikers om ons te gee, wat gaan ons webwerf te breek. 671 00:32:05,160 --> 00:32:07,035 Maar ons sal sien dat die volgende week met JavaScript. 672 00:32:07,035 --> 00:32:10,740 Maar vir nou, weet net dat hierdie lêer, headers.php, eenvoudig 673 00:32:10,740 --> 00:32:13,040 neem die titel wat Ek geslaag, dit maak 674 00:32:13,040 --> 00:32:17,380 seker dit is veilig om te ingespuit word in 'n web bladsy, en dit spoeg dit uit as my titel 675 00:32:17,380 --> 00:32:18,640 en as my H1. 676 00:32:18,640 --> 00:32:24,440 So as ek gaan in hierdie weergawe nou, sien dat lesings het sy titel terug, 677 00:32:24,440 --> 00:32:28,630 week nul het sy titel terug, en Trouens, die HTML ek genereer 678 00:32:28,630 --> 00:32:32,110 is identies aan wat my eerste weergawe was-- behalwe vir my spasie, 679 00:32:32,110 --> 00:32:35,150 want ek het begin opmaak my kode 'n bietjie anders. 680 00:32:35,150 --> 00:32:38,082 Maar ek het al gegenereer die kode wat ek omgee. 681 00:32:38,082 --> 00:32:39,790 So laat my breek vir net 'n oomblik en kyk 682 00:32:39,790 --> 00:32:42,200 as daar enige vrae of verwarring wat ek gemaak het. 683 00:32:42,200 --> 00:32:44,970 684 00:32:44,970 --> 00:32:48,150 Alle reg, so laat draai 'n bietjie harder hier 685 00:32:48,150 --> 00:32:51,500 om te sien of daar 'n geleentheid vir verbetering. 686 00:32:51,500 --> 00:32:56,130 Helpers.php hierdie het ook funksie, genaamd renderFooter. 687 00:32:56,130 --> 00:32:59,652 En wat is merkwaardig oor renderHeader en renderFooter? 688 00:32:59,652 --> 00:33:02,610 En weer, vir doeleindes vandag se, jy weet dat die uittreksel funksie is net 689 00:33:02,610 --> 00:33:08,280 my manier van verbygaande argumente in header.php en footer.php. 690 00:33:08,280 --> 00:33:10,900 691 00:33:10,900 --> 00:33:11,780 >> Jammer? 692 00:33:11,780 --> 00:33:13,056 >> GEHOOR: [onhoorbaar] 693 00:33:13,056 --> 00:33:15,180 David Malan: Ja, ek alleen verander die vereistes lyn. 694 00:33:15,180 --> 00:33:19,410 So letterlik, het ek die sonde van kopieer en plak, maar weer. 695 00:33:19,410 --> 00:33:21,920 Dit is nie 'n groot aantal lyne, maar kom on-- 696 00:33:21,920 --> 00:33:25,220 as ek kopieer en plak alles net een klein woord te verander, 697 00:33:25,220 --> 00:33:28,610 en die een wat bietjie woord wat Alan wys Out is voet teks hier versus header hier. 698 00:33:28,610 --> 00:33:30,670 Anders, alles is identies, behalwe vir, 699 00:33:30,670 --> 00:33:32,180 natuurlik, name van die funksie. 700 00:33:32,180 --> 00:33:33,690 So wat kan ons beter doen? 701 00:33:33,690 --> 00:33:39,810 >> Wel laat ek oopmaak hierdie weergawe hier, waardeur in helpers.php, 702 00:33:39,810 --> 00:33:42,300 Hoekom kry ek nie net 'n bietjie slimmer oor hierdie? 703 00:33:42,300 --> 00:33:46,410 Skryf effens meer ingewikkeld kode, maar noem dit lewer? 704 00:33:46,410 --> 00:33:48,470 So wat het ek fundamenteel verander? 705 00:33:48,470 --> 00:33:51,770 >> Dit neem 'n argument now-- twee argumente, data steeds. 706 00:33:51,770 --> 00:33:54,444 En dan wat is die eerste naam waarskynlik gebruik word vir, 707 00:33:54,444 --> 00:33:55,860 gebaseer op wat jy hier lees? 708 00:33:55,860 --> 00:33:58,452 Selfs as 'n paar van die sintaksis is nog nuut. 709 00:33:58,452 --> 00:33:59,660 Wat is dollar teken sjabloon? 710 00:33:59,660 --> 00:34:02,400 711 00:34:02,400 --> 00:34:03,016 >> Jammer? 712 00:34:03,016 --> 00:34:03,710 >> GEHOOR: Selected of footer. 713 00:34:03,710 --> 00:34:04,510 >> David Malan: Selected of footer. 714 00:34:04,510 --> 00:34:07,134 So glo, het ek besluit dat indien die enigste ding wat verander 715 00:34:07,134 --> 00:34:10,159 is wat ek wil sjabloon om print-- en template 716 00:34:10,159 --> 00:34:13,100 Ek bedoel dit is bloudruk vir kode wat ek wil lewer, 717 00:34:13,100 --> 00:34:16,350 maar ek wil aan te sluit in 'n paar values-- so as dit is net kop 718 00:34:16,350 --> 00:34:20,440 of footer, hoekom nie ek parameteriseren dit en noem die argument dollar teken 719 00:34:20,440 --> 00:34:21,409 sjabloon? 720 00:34:21,409 --> 00:34:26,250 En dan hierdie funky sintaksis laat my om 'n pad hier te skep in 'n veranderlike. 721 00:34:26,250 --> 00:34:28,030 >> So dollar teken pad is 'n veranderlike. 722 00:34:28,030 --> 00:34:31,120 Wat beteken dit sintaksis doen, as jy vertroud is? 723 00:34:31,120 --> 00:34:32,512 Ja? 724 00:34:32,512 --> 00:34:34,065 >> GEHOOR: [onhoorbaar] 725 00:34:34,065 --> 00:34:34,940 David Malan: Presies. 726 00:34:34,940 --> 00:34:37,600 As sjabloon is, quote unquote, kop, of as sjabloon is, 727 00:34:37,600 --> 00:34:41,170 quote unquote, footer, daardie lyn is daar wat ek uitgelig, lyn agt, 728 00:34:41,170 --> 00:34:46,330 is eenvoudig te neem dat die naam, soos kop, en concatenating met dot PHP. 729 00:34:46,330 --> 00:34:49,750 So het ons nie hierdie operateur het in C. Dit dot operateur is 730 00:34:49,750 --> 00:34:54,520 'n wonderlike ding in PHP-- as jy vertroud is met JavaScript of Java, 731 00:34:54,520 --> 00:34:56,949 kan jy die plus gebruik teken om aaneenskakellling doen. 732 00:34:56,949 --> 00:34:59,974 >> In C, dit is 'n pyn in die neck-- en ek is so jammer, in p-stel ses 733 00:34:59,974 --> 00:35:02,390 jy gaan het te doen this-- dit is 'n pyn in die nek 734 00:35:02,390 --> 00:35:03,930 snare koppel. 735 00:35:03,930 --> 00:35:04,670 Hoekom? 736 00:35:04,670 --> 00:35:06,580 Wel, want as jy het 'n string wat is hierdie lang, 737 00:35:06,580 --> 00:35:09,538 en 'n ander string wat hierdie lang, jy kan nie net prop hulle saam. 738 00:35:09,538 --> 00:35:11,070 Wat doen jy in plaas daarvan het te doen in C? 739 00:35:11,070 --> 00:35:11,680 Ja? 740 00:35:11,680 --> 00:35:12,380 >> GEHOOR: [onhoorbaar] 741 00:35:12,380 --> 00:35:15,090 >> David Malan: Jy moet malloc geheue, of gebruik 'n skikking op die stapel. 742 00:35:15,090 --> 00:35:17,214 En jy eintlik moet maak dat die verskeidenheid groot genoeg 743 00:35:17,214 --> 00:35:20,940 om hierdie pas plus dit plus agteroorskuisstreep nul. 744 00:35:20,940 --> 00:35:24,994 Koppel hulle dan saam met behulp van roer kat of met die hand met 'n lus, 745 00:35:24,994 --> 00:35:26,160 of enige aantal tegnieke. 746 00:35:26,160 --> 00:35:27,760 En ons wys jou 'n paar in-p stel ses. 747 00:35:27,760 --> 00:35:29,080 >> Dit is 'n pyn in die nek. 748 00:35:29,080 --> 00:35:34,190 En dit is werklik wat ek bedoel oor hierdie versus this-- soos C versus PHP. 749 00:35:34,190 --> 00:35:36,870 Jy kry net soveel meer funksie vir gratis, 750 00:35:36,870 --> 00:35:39,030 sodat jy kan fokus, ideaal, aan die pret 751 00:35:39,030 --> 00:35:41,190 deel van kodering, die projek wat jy wil om op te los, 752 00:35:41,190 --> 00:35:43,190 eerder as die lae vlak kleinigheden. 753 00:35:43,190 --> 00:35:49,840 >> So dit net genereer header.php of footer.php gebaseer op watter een ek bel. 754 00:35:49,840 --> 00:35:52,280 En inderdaad as ek gaan in index.php, kennisgewing 755 00:35:52,280 --> 00:35:56,230 al wat changed-- plaas van roep lewer kop of lewer footer, 756 00:35:56,230 --> 00:36:00,230 Ek bel lewer, gevolg deur die Naam van die sjabloon wat ek wil doen. 757 00:36:00,230 --> 00:36:02,370 En jy sal dit sien, ook in die probleem stel sewe 758 00:36:02,370 --> 00:36:05,530 waardeur ons toelaat om die gebruik dieselfde funksie om trosse te maak 759 00:36:05,530 --> 00:36:07,550 en trosse van verskillende webblaaie. 760 00:36:07,550 --> 00:36:10,570 >> So eerder as woon te veel meer op die details-- 761 00:36:10,570 --> 00:36:13,210 wat julle weer sien in probleem stel seven-- laat ons kyk 762 00:36:13,210 --> 00:36:16,850 by nou die begin van 'n oplossing om 'n meer interessante probleem. 763 00:36:16,850 --> 00:36:19,310 So ver, ons het niks gedoen het gered data. 764 00:36:19,310 --> 00:36:22,920 Trouens, die enigste tyd wat ons nog ooit gered iets wat ons gedoen het in hierdie klas 765 00:36:22,920 --> 00:36:31,030 is wanneer ons het 'n baie eenvoudige demo rukkie terug, waardeur ons gebruik lêer IO in C, 766 00:36:31,030 --> 00:36:34,520 en ek dink ek getik in my naam, en Hannah se naam, en die naam Maria se 767 00:36:34,520 --> 00:36:37,610 of miskien naam Andy se en dan gered ons CSV file-- 768 00:36:37,610 --> 00:36:39,430 CSV. 769 00:36:39,430 --> 00:36:43,530 >> En ons gebruik fopen-- Ek dink ons gebruik fprintf as ek reg onthou, 770 00:36:43,530 --> 00:36:44,910 en ons gered van 'n lêer. 771 00:36:44,910 --> 00:36:46,920 Nou, dit is die eenvoudigste vorm van 'n databasis. 772 00:36:46,920 --> 00:36:50,230 As jy wil 'n webwerf vir die maak Frosh kitsboodskappe program, waardeur eerstejaars 773 00:36:50,230 --> 00:36:53,390 kan ideaal vir 'n sport, jy wil iets met daardie data te doen. 774 00:36:53,390 --> 00:36:55,370 Verlede week, het ons niks met die data-- ons het net gesê, 775 00:36:55,370 --> 00:36:56,661 jy geregistreer is, nie regtig nie. 776 00:36:56,661 --> 00:36:58,950 Of miskien per e-pos wat ek die Proctor, en dit was dit. 777 00:36:58,950 --> 00:37:02,110 >> Maar dit sal lekker wees as ek kon gee dat Proctor n CSV-lêer, 778 00:37:02,110 --> 00:37:03,340 soos 'n Excel-lêer. 779 00:37:03,340 --> 00:37:05,090 Of nog beter, sou dit lekker wees as ek kon 780 00:37:05,090 --> 00:37:08,830 sit name diegene gebruikers en dorm name en al wat 781 00:37:08,830 --> 00:37:11,740 in 'n databasis wat net leef vir ewig, 782 00:37:11,740 --> 00:37:13,530 totdat ek kies om die data te verwyder. 783 00:37:13,530 --> 00:37:15,645 'N databasis wat kan my inligting navraag. 784 00:37:15,645 --> 00:37:18,070 En inderdaad, dit is wat 'n databasis is. 785 00:37:18,070 --> 00:37:20,470 >> Ons stel vandag, en volgende week ook 'n tegnologie 786 00:37:20,470 --> 00:37:25,020 genoem SQL-- n Structured Query Taal, wat is 'n ander taal. 787 00:37:25,020 --> 00:37:28,750 Dit is in wese 'n programmeertaal taal, maar vir databasisse. 788 00:37:28,750 --> 00:37:31,760 En 'n databasis vir nou, net dink as 'n super fancy weergawe 789 00:37:31,760 --> 00:37:35,710 van Microsoft Excel, of Google Sigblaaie, of Apple Nommers. 790 00:37:35,710 --> 00:37:39,950 Dit is oor die algemeen 'n program wat dit moontlik maak jy 'n hele klomp van die data te stoor 791 00:37:39,950 --> 00:37:43,960 in rye en kolomme, heel soos jy dalk in Excel. 792 00:37:43,960 --> 00:37:47,100 >> Maar wat is lekker, veral as ons is nie vertroud is met super Excel, 793 00:37:47,100 --> 00:37:52,040 wat SQL kan jy doen is navraag hierdie inligting deur die skryf van reëls van die kode 794 00:37:52,040 --> 00:37:55,220 waar jy kan, selfs as jou databasis het 'n miljoen rye in dit, 795 00:37:55,220 --> 00:37:57,190 jy kan vind dinge super vinnig. 796 00:37:57,190 --> 00:37:59,950 In werklikheid, Excel is veral sleg groot datastelle. 797 00:37:59,950 --> 00:38:02,460 En in die feit, tot 'n paar jaar gelede, blyk 798 00:38:02,460 --> 00:38:08,890 Excel sal net toelaat dat jy om te stoor tot 65.535 rye data-- wat 799 00:38:08,890 --> 00:38:12,020 klink soos 'n baie, maar aan die tyd was ek 'n grad student, 800 00:38:12,020 --> 00:38:14,920 en ek onthou struikel oor hierdie, want ek was te genereer 801 00:38:14,920 --> 00:38:17,900 CSV lêers vir my navorsing en ek wou hulle vinnig analiseer 802 00:38:17,900 --> 00:38:19,530 deur net die opening in Excel. 803 00:38:19,530 --> 00:38:23,730 Natuurlik, my rekenaar net neergestort, want ek het meer as 65.000 rye. 804 00:38:23,730 --> 00:38:27,210 >> Maar waar het die 65535 vandaan? 805 00:38:27,210 --> 00:38:29,670 Wat is Microsoft doen, vermoedelik? 806 00:38:29,670 --> 00:38:32,430 As jy goed met jou magte van twee is? 807 00:38:32,430 --> 00:38:37,160 Ja, hulle gebruik 'n 16-bit waarde tot die ry getal verteenwoordig. 808 00:38:37,160 --> 00:38:41,310 En twee tot 16 is 65,536-- minus een, want as jy 809 00:38:41,310 --> 00:38:45,414 zero-indeks beteken dit was die meeste aantal rye Ek kon hê. 810 00:38:45,414 --> 00:38:46,830 En dit was net 'n ontwerp besluit. 811 00:38:46,830 --> 00:38:52,760 Deur die redding van 16 stukkies, hulle het my beperk om 16.000 rye, in plaas van 4 miljard, 812 00:38:52,760 --> 00:38:54,322 wat ek ideaal kon gehad het. 813 00:38:54,322 --> 00:38:57,030 Maar vir nou, ons gaan stel dit meer in 'n web konteks. 814 00:38:57,030 --> 00:39:00,390 En wat is lekker oor SQL is dat selfs al is dit mooi en mooi kragtige 815 00:39:00,390 --> 00:39:04,050 gesofistikeerde, dit is werklik kook af na vier belangrike bedrywighede, vier 816 00:39:04,050 --> 00:39:08,060 sleutel funksies, as jy will-- kies, vir die herwinning van data, soek 817 00:39:08,060 --> 00:39:12,510 vir data; verwyder of verwyder data; voeg vir die toevoeging van rye van die databasis; 818 00:39:12,510 --> 00:39:13,410 en opdatering. 819 00:39:13,410 --> 00:39:17,010 So as jy ooit gebruik Google Sigblaaie, Apple Nommers, Microsoft 820 00:39:17,010 --> 00:39:19,310 Excel, het jy uitgevoer word, waarskynlik, al 821 00:39:19,310 --> 00:39:22,530 van hierdie bedrywighede as 'n mens deur net die gebruik van jou sleutelbord en mouse-- 822 00:39:22,530 --> 00:39:26,050 invoeging van data, die gebruik van jou oë te kies of soek vir data, 823 00:39:26,050 --> 00:39:28,360 of update data, of te verwyder data. 824 00:39:28,360 --> 00:39:29,870 >> So, wat beteken dit? 825 00:39:29,870 --> 00:39:34,300 Wel, pre-geïnstalleer in CS50 IDE is 'n program genaamd MySQL. 826 00:39:34,300 --> 00:39:37,050 Dit is 'n gratis, open-source databasis wat is super gewild. 827 00:39:37,050 --> 00:39:40,590 Facebook, byvoorbeeld, gebruik dit om hierdie dag onder ander instrumente wat hulle gebruik. 828 00:39:40,590 --> 00:39:44,300 En 'n baie baie gewild webtuistes gebruik dit in 'n groot deel, want dit is vinnig, 829 00:39:44,300 --> 00:39:45,230 en omdat dit is gratis. 830 00:39:45,230 --> 00:39:46,820 Alhoewel beslis alternatiewe bestaan. 831 00:39:46,820 --> 00:39:49,580 En sommige van julle dalk ploeteraars met alternatiewe vir finale projekte. 832 00:39:49,580 --> 00:39:55,330 >> Dit is 'n kiekie, intussen, van 'n web-gebaseerde instrument genoem phpMyAdmin. 833 00:39:55,330 --> 00:39:58,260 Dit is 'n toeval dat hierdie web-gebaseerde instrument is ook 834 00:39:58,260 --> 00:40:01,720 geskryf in 'n taal, PHP, maar wat dit bedoel is om te doen 835 00:40:01,720 --> 00:40:04,620 is vir ons 'n web-gebaseerde koppelvlak om 'n databasis. 836 00:40:04,620 --> 00:40:07,180 Omdat MySQL tipies is iets histories jy 837 00:40:07,180 --> 00:40:08,770 wisselwerking met slegs met 'n command line. 838 00:40:08,770 --> 00:40:10,811 En dit sou wees super irriterende en arcane om 839 00:40:10,811 --> 00:40:14,487 tekstuele opdragte tik te kies data, voeg data en data verwyder. 840 00:40:14,487 --> 00:40:16,820 So 'n paar mense op die internet het 'n web-gebaseerde program 841 00:40:16,820 --> 00:40:18,900 dat net laat bestuur die data in ons databasis. 842 00:40:18,900 --> 00:40:23,040 Dit is soos dubbel te kliek op Excel, en bestuur van 'n web-gebaseerde weergawe daarvan. 843 00:40:23,040 --> 00:40:26,370 >> En wat jy gaan om dit te gebruik vir uiteindelik volgende week, nie in-p stel ses 844 00:40:26,370 --> 00:40:28,680 maar om iets te bou genoem CS50 Finansies, wat 845 00:40:28,680 --> 00:40:32,630 gaan 'n databasis van het gebruikers, met gebruikers name en wagwoorde, 846 00:40:32,630 --> 00:40:34,860 dollar beloop dat hulle in hul bankrekeninge. 847 00:40:34,860 --> 00:40:37,280 Dit gaan wees iets wat jy gebruik om te stoor 848 00:40:37,280 --> 00:40:39,910 die simbole en die hoeveelhede van die aandele wat gebruikers 849 00:40:39,910 --> 00:40:42,567 gekoop het die gebruik van virtuele dollars wat jy vir hulle gee. 850 00:40:42,567 --> 00:40:44,900 En dit gaan toelaat gebruikers om te registreer vir jou site, 851 00:40:44,900 --> 00:40:47,190 sodat selfs jou vriende kan inskakel om jou webwerf 852 00:40:47,190 --> 00:40:49,360 en eintlik te registreer, inteken, en speel rond 853 00:40:49,360 --> 00:40:52,807 en probeer om fout te vind in jou kode, en probeer om foute in jou webwerf. 854 00:40:52,807 --> 00:40:55,390 En hulle sal net registreer hulself te voeg, effektief, 855 00:40:55,390 --> 00:40:58,120 via kode wat jy skryf aan jou databasis. 856 00:40:58,120 --> 00:41:02,470 >> Byvoorbeeld, dit is 'n vinnige kiekie van wat 'n databasis kan lyk. 857 00:41:02,470 --> 00:41:05,190 Dit was een van solutions-- verlede jaar se 858 00:41:05,190 --> 00:41:07,760 dit is soos 'n mini Excel lêer, gestoor in ons databasis 859 00:41:07,760 --> 00:41:09,950 gestoor in hierdie sagteware genoem MySQL. 860 00:41:09,950 --> 00:41:13,260 Op die linkerkant, ek het blykbaar gegee elke gebruiker 'n unieke nommer. 861 00:41:13,260 --> 00:41:16,200 In die tweede kolom, het ek gegee almal 'n gebruiker name-- my eie 862 00:41:16,200 --> 00:41:16,880 tussen hulle. 863 00:41:16,880 --> 00:41:21,430 En op die regterkant, Ek het vir hulle 'n hash gegee. 864 00:41:21,430 --> 00:41:26,760 >> Nou is dit eintlik 'n wagwoord, maar dit is nie 'n gewone teks wagwoord. 865 00:41:26,760 --> 00:41:30,160 Dit is 'n geënkripteerde wagwoord as jy wil, of 'n hash wagwoord. 866 00:41:30,160 --> 00:41:32,000 Wat ons sal terug na voor lank kom. 867 00:41:32,000 --> 00:41:34,340 >> Maar as jy al ooit gelees 'n artikel oor hoe 868 00:41:34,340 --> 00:41:37,950 jou wagwoord op 'n sekere bank of 'n webwerf kon gewees het in die gedrang, 869 00:41:37,950 --> 00:41:39,630 dit kan oor die algemeen beteken een van twee dinge. 870 00:41:39,630 --> 00:41:42,780 So dit is net 'n uittreksel uit ses gebruikers. 871 00:41:42,780 --> 00:41:45,460 Almal van julle kan nou uitvind uit via inbraak of krake 872 00:41:45,460 --> 00:41:47,690 wat wagwoorde ons ses mense se. 873 00:41:47,690 --> 00:41:49,720 Maar as jy al ooit gekry 'n waarskuwing of 'n verskoning 874 00:41:49,720 --> 00:41:52,803 van 'n maatskappy of 'n webwerf woord Jammer, 'n hacker breek in ons databasis 875 00:41:52,803 --> 00:41:56,360 jy moet waarskynlik verander jou wagwoord wat kan dit beteken? 876 00:41:56,360 --> 00:41:59,670 >> Wel, een, kan beteken dat die maatskappy het meer moronic was, 877 00:41:59,670 --> 00:42:03,630 en is die stoor van jou wagwoord in 'n kolom soos hierdie, unencrypted. 878 00:42:03,630 --> 00:42:05,840 Wat beteken dat die teenstander, wat die databasis gesteel het, 879 00:42:05,840 --> 00:42:07,440 letterlik ken jou gebruikersnaam en wagwoord. 880 00:42:07,440 --> 00:42:08,960 Dit is die ergste moontlike scenario. 881 00:42:08,960 --> 00:42:11,710 En as jy sien in p-stel sewe, so maklik is om te vermy. 882 00:42:11,710 --> 00:42:15,624 Daar is absoluut geen verskoning vir wat vorm van onnoselheid in vandag se internet. 883 00:42:15,624 --> 00:42:18,540 Two-- en ons sal 'n paar artikels vind om te getuig van die feit dat dit nog steeds 884 00:42:18,540 --> 00:42:21,710 gebeur, nonetheless-- twee, miskien is die teenstander 885 00:42:21,710 --> 00:42:23,840 gesteel hierdie weergawe van die databasis. 886 00:42:23,840 --> 00:42:27,110 Wat is nog soort van slegte, want nou hulle weet dat Ek het ses kliënte, 887 00:42:27,110 --> 00:42:29,270 Ek weet die gebruikers name van daardie ses kliënte, 888 00:42:29,270 --> 00:42:32,910 en ek weet die geïnkripteer weergawes, of die hashed weergawes, 889 00:42:32,910 --> 00:42:34,340 wagwoorde daardie ses klante. 890 00:42:34,340 --> 00:42:37,010 Maar niemand van julle wat dalk het gedoen [? Hacker 2?] 891 00:42:37,010 --> 00:42:41,150 waar jy gekraak wagwoorde, of het 'n blik op die weergawe van die probleem 892 00:42:41,150 --> 00:42:46,280 stel, hoekom is dit nog 'n bietjie kommerwekkend indien die teenstander ken jou hash 893 00:42:46,280 --> 00:42:47,435 wagwoorde? 894 00:42:47,435 --> 00:42:49,732 >> GEHOOR: Omdat hulle kon Tik die hele woordeboek 895 00:42:49,732 --> 00:42:50,690 in die hash funksie. 896 00:42:50,690 --> 00:42:54,520 En as jou wagwoord is 'n woordeboek woord [? hulle kan net match--?] 897 00:42:54,520 --> 00:42:57,640 >> David Malan: Presies, die teëstander kan net skryf kode, soos sommige van julle 898 00:42:57,640 --> 00:43:00,526 gedoen het vir [? Hacker?] 2, waardeur jy Itereer oor 899 00:43:00,526 --> 00:43:03,400 al die woorde in die woordeboek, of al die moontlike kombinasies van A 900 00:43:03,400 --> 00:43:06,610 deur Z en een deur nine-- wat klink soos 'n baie, en dit is nie. 901 00:43:06,610 --> 00:43:08,361 Maar vir 'n rekenaar, dit is pretty darn vinnig. 902 00:43:08,361 --> 00:43:10,610 En in die feit, dit was die punt van [? Hacker 2,?] Was 903 00:43:10,610 --> 00:43:12,540 om dinge te neem wat letterlik lyk soos hierdie, 904 00:43:12,540 --> 00:43:14,900 en reverse engineering wat dit werklik was. 905 00:43:14,900 --> 00:43:17,270 >> So ons sal kyk hoe ons kan stoor dit meer doeltreffend. 906 00:43:17,270 --> 00:43:20,210 Blyk, gelukkig in MySQL, daar gaan datatipes wees. 907 00:43:20,210 --> 00:43:22,800 En een van die pret dele oor databasis ontwerp, om eerlik te wees, 908 00:43:22,800 --> 00:43:25,810 is eintlik besluit vir jouself hoe moet jy die data verteenwoordig? 909 00:43:25,810 --> 00:43:29,630 Moet jy 'n telefoonnommer verteenwoordig as 'n int, soos 'n groot aantal, of 'n lang? 910 00:43:29,630 --> 00:43:31,630 Of het jy eintlik doen as 'n reeks van karakters? 911 00:43:31,630 --> 00:43:33,780 En daar kan baie wees nie-triviale impak van hierdie. 912 00:43:33,780 --> 00:43:36,714 >> Trouens, een van die vroegste, pret related stories 913 00:43:36,714 --> 00:43:39,880 is wanneer Mark Zuckerberg gebou Facebook, is dit oorspronklik geskryf, 914 00:43:39,880 --> 00:43:42,300 en nog steeds is grootliks geskryf in PHP. 915 00:43:42,300 --> 00:43:45,400 En een van die grootste uitdagings hulle in die gesig gestaar vroeg op is skalering. 916 00:43:45,400 --> 00:43:48,820 Wanneer hulle het die toevoeging van die skool na skool na skool, na my wete, 917 00:43:48,820 --> 00:43:51,639 een van die oorspronklike oplossings was in wese te kopieer en plak 918 00:43:51,639 --> 00:43:53,430 sommige van die databasisse en 'n paar van die kode, 919 00:43:53,430 --> 00:43:55,346 sodat Harvard was loop op sy eie server, 920 00:43:55,346 --> 00:43:56,995 en MIT hardloop op sy eie bediener. 921 00:43:56,995 --> 00:43:59,120 En dit is die rede waarom, vir 'n paar van julle wat kan onthou, 922 00:43:59,120 --> 00:44:01,510 jy kan nie vriende het in ander netwerke. 923 00:44:01,510 --> 00:44:05,050 >> Jy het waarskynlik nie vriende het op MIT of Harvard 10 of so jaar gelede, 924 00:44:05,050 --> 00:44:07,467 maar jy kan nie netwerke span vir deels daardie rede. 925 00:44:07,467 --> 00:44:10,550 En een van die grootste uitdagings vir die Mark en vir maatskappye soos Facebook 926 00:44:10,550 --> 00:44:13,460 is eintlik die hantering van honderde en duisende en miljoene 927 00:44:13,460 --> 00:44:14,460 versoeke per sekonde. 928 00:44:14,460 --> 00:44:16,501 So die dinge wat ons sal begin praat oor die week 929 00:44:16,501 --> 00:44:19,860 is regtig related om te wees die skryf van goeie sagteware, en algemeen 930 00:44:19,860 --> 00:44:23,040 suksesvolle gereedskap wat kan hanteer baie van die gebruikers. 931 00:44:23,040 --> 00:44:25,460 >> So ons sal praat oor dinge soos kruip en soek, 932 00:44:25,460 --> 00:44:26,910 maar dit is dit vir vandag. 933 00:44:26,910 --> 00:44:28,780 Ons sal jy sien vir meer op Woensdag. 934 00:44:28,780 --> 00:44:31,780 935 00:44:31,780 --> 00:44:33,902 >> [MUSIEK - "Seinfeld" TEMA] 936 00:44:33,902 --> 00:44:35,943 David Malan: jy kan om , en trek daaruit. 937 00:44:35,943 --> 00:44:38,859 En jy hoef nie te hou met sommige pre-bepaal bedrag van die geheue. 938 00:44:38,859 --> 00:44:40,580 Wel, wat is dit gaan om genoem te word? 939 00:44:40,580 --> 00:44:42,369 >> Spreker 1: Wel, wat gaan aan? 940 00:44:42,369 --> 00:44:43,535 Spreker 2: Wat bedoel jy? 941 00:44:43,535 --> 00:44:44,451 Hy gee 'n lesing. 942 00:44:44,451 --> 00:44:47,650 David Malan: En ons kan 'n gebruik funksie genoem malloc om memory-- 943 00:44:47,650 --> 00:44:50,050 >> Spreker 1: Hoekom is daar nie sy arms beweeg? 944 00:44:50,050 --> 00:44:52,450 >> Spreker 2: Wel that's-- jy weet, dit is normaal. 945 00:44:52,450 --> 00:44:57,162 Dit is net soos hy net groot wors hang daar. 946 00:44:57,162 --> 00:44:59,040 >> Spreker 1: Dit is normaal? 947 00:44:59,040 --> 00:45:03,096 >> Spreker 2: Ja, ek dink ons net aanvaar hy per ongeluk 948 00:45:03,096 --> 00:45:06,840 vervang sy deodorant met superlijm. 949 00:45:06,840 --> 00:45:07,608