[Predvaja glasba] DAVID Malan: To je CS50, in to je začetek osmih teden. In mi smo tako veseli, da so dobrodošli nazaj, veliko presenečenje, CS50 lastne Ramon Galvan, narašča senior, ki je bil porabe v zadnjih nekaj mesecev od julija v Los Angelesu, v Hollywoodu, dobesedno delajo na povsem novo televizijo predstava se imenuje kolonija, ustvarjalec, ki je pravzaprav Harvard alum sam. In zato smo zelo veseli, da vidim to prvenec na ZDA omrežja januarja letos. Torej, ostanite z nami za to, in za več Ramon za prihodnjih tednih. Zdaj vem, da je konec blizu. In kaj to pomeni, da tam ni vsi, da je veliko ostalo od CS50, žalostno, da povem. Imamo samo tri težave kompleti left-- obstaja problem nastaviti six--, ki je v vaše roke bodo zdaj ali kmalu, zaradi kasneje ta week-- je mišljeno za premostitev naši svetovi ukazni vrstici, kjer smo preživeli večino našega časa s pomočjo C, in svet spletnega programiranja. No, boste videli veliko idej izposojen iz dela v ukazni vrstici, ampak tudi veliko novih in zanimive ideje da se tudi bo germane za mobilne aplikacije in za tehnologijo, bolj na splošno, s katero Fantje so vsi seznanjeni danes na prenosnih računalnikih in telefonih in podobno. Tako boste ne izvajajo spletna stran ali spletna stran per se, ampak dejanski spletni strežnik. Boste napisali ostali spletni strežnik napisana v C, katerih namen v življenju je za sprejem zahteve HTTP, tiste virtualne ovojnice hranimo govorimo o, in dejansko odzove bodisi z nekatere statične content-- kot dot HTML datoteke ali pika JPEG ali katera koli druga število datotek, ali celo PHP datoteka s katerim vašo spletno Strežnik se dogaja, da razloži to PHP kodo in pljunil ven rezultate. Zdaj smo vam z zelo malo okvira za it-- dejansko distribucija koda za problem nastavite šest je več kot 1000 vrstic, A Veliko, ki je komentar, ki bo fair-- vendar je to res mišljeno da priložnost da bi dobili svoje roke umazane potapljanje v dokaj velikem projektu ki smo jih zelo specifično izrezljani iz kosov za vas, tako da res, ko zapustite CS50 in vstop v resnični svet programiranja in želite Praćakati v poljubno število projektov, boste imeli veliko večji Udobje downloading nekaj vir kode, nekaj open source projekt na spletu, in potapljanje in izdelavo Spremembe, ki jih vidite fit. Problem nastavite sedem se bo o izdelavo lastne spletne aplikacije da je sprotno in proizvaja dinamičen izhod v obliki iz-etrade.com kot spletno stran. In problem je določeno osem se bo osredotočil na še drug jezik, znan kot JavaScript. Medtem, končna Projekt je na obzorju. Tako imenovani pre-predlog je zaradi enega tedna od danes. Pre-proposal-- po specifikaciji, ki je na CS50 je website-- je precej priložnostno priložnost za lahko pošljete precej skope email na vaš asistent samo, da ga seznani ali ji kaj si mislil, da ga ali jo uporabite kot sondirnih krovu. In imajo prisebnost check-- ali razmišljate o odgriznjenjem preveč veliko ali morda premalo, ali morda nimaš pojma whatsoever in želite sodelovati v pogovoru. Nato je predlog in poročilo o stanju, ti CS50 hackathon tukaj Cambridge za Harvard in Yale študentov enako. Končni projekt je izvajanje je potem naravnost. In potem CS50 pošten tukaj, v Cambridgeu, kakor tudi drugi v New Haven. Torej predloga, si oglejte spletna stran za teh podatkov. Toda še bolj vznemirljivo, preveč, je Priložnost, da bi dobili svoje roke umazane, in vaš um odprt do celote kup teme in orodja in tehnike, ki so pomožna da jedro učnega načrta predmeta je, vendar vseeno povezani. In tudi čudovit kamniti do početje res kul končne projekte, ki krepko presegajo material, ki smo jih pokriva formalno problem nastavi ali v predavanju. Torej, pojdite na spletno stran CS50 za celoten roster seminarjev. Če se ne registrirate še, da je v redu. Pojdi naprej in se prijavite še in bomo nadaljevanje s povezavo za pretakanje žive, dan in čas, je na spletni strani. In bo vse evidentirajo in na spletu če ne morete da posebne dneve in ure. Glede tega, kaj je pred nami thereafter-- dobro, Seveda, tam je CS50 hackathon. Ta fotografija, odpoklic, od nič teden sprejeti okrog 04:00 en večer v preteklih letih. Sejem CS50, kar spet bo potekala v obeh mestih. In potem, samo da obrat za seme, čeprav smo še vedno imajo na mesec plus ostalo semestra, če vi bi radi, da se pridružijo lastnega poučevanja CS50 je osebje in želite začeti razmišljanje o postaja CA, ali poučevanje kolega, vem, da je bomo začeli govoriti več o tem kasneje ta semester. Vendar je na sliki, se Najbolj letošnje ekipe. In tako je bilo PHP-- in sem tako žalostna prejšnji teden, da [? Allyse?] Vljudno šel k prizadevanjem za pridobivanje nas te čudovite rekviziti da nisem na koncu z uporabo, tako da je res samo pogledal nekako neumno da smo imeli lopato sedel tukaj vse dan prejšnjo sredo, in malo žlico. Toda to je bil moj metaforična način poskuša naslikati slika, zakaj smo prehajamo od C do jezika, kot je PHP. In bi bila lahko enaka omenjeni katerem koli Število languages-- Java, Python, Ruby ali grozde others-- ker pa v C, na primer, pisanje program v C Morda običajno kot ob žlico, kot je ta in kopati luknjo v tla, v pesku ali umazaniji. PHP vam omogoča, da veliko Večje ugrizi od problema, pisanje veliko manj kode uporabi bistveno manjše orodje, zato, ker je toliko bolj funkcionalnost pieced v. Zdaj, če smo bili res dramatično, bi imeli kaj za lopata tukaj, ampak naj bo tako. Medtem, drugi Metafora smo prišli do je, seveda, lahko uporabite nekaj podobnega ključem kladivo v nekaj podobnega žebelj. Seveda se je zgodilo orodje za uporabo se dogaja da ne sme biti toliko jezik imenuje C- in zdaj sem jezen [? Sanders?] Verjetno, bomo popraviti later-- tako pravo orodje za pogosto uporabo se ne bo ta najnižja orodje raven. In res, C, ni jezik, ki večina od vas kdaj uporabiti, ali je treba nujno ponovno uporabiti. In dejansko malo secret-- edino čas Uporabljam C sam je precej med Septembra in decembra vsakega padca semester. In to zato, ker mi jo uporabite kot priložnost naučiti osnov programiranja, in z njo računalniško znanstvene osnove, podatki strukture, algoritmi in like-- vendar zelo hitro boš zdaj vidim, da sintakso in ideje, ki je podlaga C so tako čudovito prenosljive na bolj moderno višje jeziki ravni, kot PHP in Python in Perl in Java in Objective-C- dejansko, ne toliko Cilj-C- vendar Swift, ti novejši jeziki, da mnogi od vas bo nato umazali s tabo končni projekt. Torej, brez odlašanja, kaj je dejansko uporabljati PHP za reševanje problemov. Spomnimo se, da je že na začetku, je bila nazadnje teden smo pravkar uporabljali CS50 IDE, smo napisal Dinky malo programa da je pravkar rekel, "Hello world". In potem sem jo shranili v datoteka z imenom hello.php. In potem sem tekel ta ukaz. In zakaj? V angleščini, kaj se dogaja tukaj? Kaj sem delal, ko Stekel sem ta ukaz? Ja? OBČINSTVO: Tukaj je nekaj funkcija PHP ki se glasi, kaj je in-- razume. DAVID Malan: Dobro, tam je nekaj funkcija PHP-- in mi bi bili bolj specifični, tam je program, imenovan PHP, alias Tolmač, da razume vsebina hello.php, in jo interpretira na vrh spodaj, z leve proti desni, in ne, kaj ti ukazi pravijo. Ukazi v hello.php seveda je samo vir code-- funkcije in spremenljivke in zanke in podobno, da smo sami so začeli pisati v PHP. Toda za razliko od C, ki je preveden jezik, PHP si ga napisal, in ga zaženite. Vi preskočite ta posrednik korak pretvorbe v ničel in enic, in ga nato teče. In kaj je narobe s tem? Zakaj smo preskoči korak? Zakaj več modernih jezikov nagibajo k preskočite ta korak? Kakšne so koristi? Ali pa samo intuitivno? Tudi če smo jih ne Pred napisal veliko PHP, kaj je koristno pa ne pripravo kodo misliš? Ne? Ne stori? Praskanje svojo glavo? Ja. OBČINSTVO: Bolj dinamično. DAVID Malan: Bolj dinamično? Kaj misliš? OBČINSTVO: [neslišno] DAVID Malan: OK, dobro, zato odvisno od vhoda, nimate, naj mu pripravijo vsakič. In res je, kot je enostavno, kot that-- kaj je točka nadaljevanja sestaviti kodo? To je le korak, ki je making-- se to zahteva, V zadnjih nekaj tednov, dvakrat toliko korakov kot samo tekmovanje v teku svoj program. To je bilo koristno, da vidimo, da vas vidim nekaj sporočil o napakah in tako naprej, vendar je še vedno samo nadležno korak. In tako spoznal programerji čez čas, zakaj ne bomo začnite pisati jezike, ki ne Potrebujemo precej mehansko korak, tako da lahko samo napisati svojo kodo in ga zaženite. Ampak kakšna je bila cena da smo videli smo plačali prejšnji teden, z eno posebno primer? Ja? Hitrost. Torej [? kaj je?] tolmači malo počasneje, s tem, da so ničel in enic lepo in hitro za računalnik razumeti, saj Intel CPU, ali karkoli že je, samo razume, kaj se dogaja na teh vzorcih bitov. Ker tolmača je program, ki res mora prebrati vir ASCII kodo, ki ste napisali, in ga spremeniti, če se tako izrazim, ali ugotovimo, kako se pretvori v končni fazi do ničel in enic. Torej, to traja le malo malo hit uspešnosti. Torej, to je malo kompromisu. Zdaj, če to počnemo tukaj, pusti me iti naprej in narediti zgled, kot sledi. Če grem noter, nova datoteka, jaz grem ponovno shranite to hello.php. In zdaj bom, da gredo naprej in reči, "print zdravo svet" - in opozarjajo, da lahko uporabljam print, jaz ne morali uporabiti tiskalno-F. In zdaj tukaj, če naredim PHP hello.php, huh-- I ne zdi, da so jo razlagajo. Kaj sem naredila narobe? OBČINSTVO: Za kotne zapestnice. DAVID Malan: Ja, morate da kot nosilec up top. Torej, to je nekako siten, ampak se navadiš na to hitro. Če moram pisati PHP kodo, sem na splošno morali povedati programu, ali povej tolmača, hej PHP, tukaj prihaja nekaj PHP kodo. In potem za dober ukrep, jaz bi zapre to ne s tem, ampak s samo vprašaj kotom nosilec, tako da je zdaj tu, če sem to spet teči, sedaj Dobim želenega rezultata. Sedaj naredimo rahlo optimizacijo, samo zato, da ste ga videli prej. To je vrsta siten, da I teči PHP prostora hello.php, ker je v zadnjem I lahko samo napisati dot poševnica ime programa, ki je nekako lepo. To je nekako boljšo uporabniško izkušnjo. Tako se izkaže, da lahko to storite v PHP z following-- I Lahko uporabite to precej Grobni zaklinjanje na vrhu tukaj, kar se na splošno imenuje shebang, pri čemer je ta oster simbol, tako rekoč, da je to pok ali klicaj. In to je zdaj pot do programa na tipičnem sistemu Linux, ki se imenuje okolje, ali env. In to line-- dolgo zgodbo short-- linija eno samo pravi, hej računalnik, našli PHP tolmač za mene v okolju, ga našli v vašem spominu, tako rekoč. In tisto, kar je lepo zdaj, je da če grem dol, Jaz lahko naredim dot poševnica Pozdravljeni dot php, or-- hmm. Dovoljenje zavrnjeno. No, boste videli še več o tem s problemom nastavite sedem, če vas tega še niste storili, z dovoljenji. Izkazalo se je, da moram za izvedbo tega ukaza imenovanega [? chamod?] za spremembo mode-- na plus x hello.php. To ena dodatna rabim [neslišno] korak, ki je povedal moj računalnik, da hello.php izvedljivo. In zdaj gledam kaj happens-- dot poševnica hello.php, samo teče. Ne rabim, da določite tolmač več. In lahko bi bilo še lepše, Še vedno, če je to stvar, ki sem preimenovati. Če se preselim hello.php samo Hello-- tako opazili v zgornjem levem kotu, ime programa je res zdaj samo Pozdravljeni. Zdaj lahko bi bilo videti, kot programa C, čeprav je to napisano v PHP-- ali odkrito poljubno število drugih jezikov. Torej obrobna izboljšava, ni funkcionalne razlike. Ampak to je samo malo radovednost zdaj, tako da lahko pišete programe v katerem koli jeziku, in uporabnik ne morali vedeti, ali je vseeno, kaj to so. No, pa si poglejmo bolj prepričljiv primer zdaj da sem podžigal vnaprej. In to se imenuje quote.php. In je na voljo na spletu. In opazil, da je to precej short-- ampak to je program za ukazno vrstico, ki je bo videti gor cen delnic za mene, kar se dejansko dogaja da je soroden problem nastaviti sedem. Torej, poglejmo, kaj delam. Na samem vrhu sem z igro odprti oklepaj vprašaj PHP. Potem pa sem dobil to linijo, pri čemer sem zahteva datoteko z imenom functions.php-- bomo videli več o tem v nekaj, ampak to je kot C-jih različica oster vključujejo, kamor želite iti vključujejo drugo datoteko. PHP poziva zahteva, čeprav to Ima tudi vključi funkcijo. In se izkaže, da je function.php samo nekaj, kar sem napisal pred razredom. Sem ga dal v isto mapo, ker Želel sem, da dejavnik ven nekaj kode da bomo morda želeli uporabiti drugje. Medtem, lahko verjetno sklepati, kaj se dogaja tukaj. Ta je malo drugačen od C- a Kaj mislim s zagotovili pravilno uporabo? Prevedi to bolj tehnično. V kakšnih okoliščinah sem jaz opustili program, ali izstopa? Ja? OBČINSTVO: Če nimate dva argumenta ukazne vrstice. DAVID Malan: Ko nimam ukaz argumente vrstice. In ne pozabite, da je eden od tistih, ki argumenti sama ime programa. In drugi se bo druga beseda sem tip po pozivu. Torej tako kot C, kar je moj način preverjanja, je uporabnik sodeluje in zagon programa, kot sem nameraval? Zdaj pa, da je nekaj malo drugačna s C- najprej smo imajo to znak za dolar, in kaj počne dolar prijavite označuje v PHP? Samo spremenljiva. To je all-- le spremenljivka sledi karkoli hočeš, da ga dejansko poklicati. Opazili, da je nekaj manjka iz mojega program PHP, tako kot je bilo manjka zadnji teden, v primerjavi s C, kar je za kaj? Vrste A, ampak tudi nekaj drugega. Ni nekaj function-- glavno funkcijo. Ni glavna funkcija. Pravkar ste začeli pisati kodo brez skrbeti dokaj arbitrarna Konvencija poimenovanja nekaj privzeto Funkcija glavni. Torej arg C Res globalna spremenljivka da tolmača naredi mi na voljo. Zdaj, to je zanimiva. Torej, poglej gor stvari. Znak za dolar zalog je na levo, da je moja spremenljivka. Na desni strani, tam je očitno funkcija v PHP pozval lookup da Jaz sem mimo moj zadnji ukazno vrstico argument to-- karkoli je beseda. In bomo videli, kako se je to deluje v trenutku. In potem na koncu sem poročanje ceno. Jaz tiskanje enega Delež tak in tak. In ne pozabite, to je Način, na PHP-- način v PHP-- kjer vam ni treba storiti znak za dolar S anymore. Saj lahko uporabiš zavite oklepaje in plug v neki spremenljivki. Vam ni treba skrbeti za uporabi printf na enak način. In kot prahi, ko si dal spremenljivko znotraj dvojnih narekovajev, kot je ta, uporabljate fancy tehniko imenujemo spremenljivka interpolacija. To samo pomeni, da priključite spremenljivko tukaj. In kot prahi, nekateri od vas, ki prihajajo od drugih programskih okolij, ne smete uporabljati enojne narekovaje okoli strune, da to storijo. Morate uporabiti dvojne narekovaje za spremenljivka interpolacija delati. V nasprotnem primeru boste dobesedno videli tiste zavite oklepaje. Torej nazadnje, pojdimo naprej in vodijo to. Dovolite mi, da moja terminal malo večji. Naj gredo naprej in zagon znotraj mojega citatom imenik. [? CDsource?] [? AM?] [? quote?] PHP quote pika PHP, in grem iskati nekaj kot GOOG, ki je njen simbol ticker, in ena delnica svojega novega imena, Abeceda Inc, stane 717 $, kot je danes. Vse je v redu, če želimo spet teči to, kdo še en zaloge Ticker hočejo poglej gor? Microsoft mislim, da je tale, MSFT-- 53 $. Mislim, da Yahoo je morda to. In Facebook je to. Torej, kaj je ta program počne? Zdi se, magija se vgrajeni v tej funkciji lookup. Torej, kaj je na hitro pogledamo. Izkazalo se je, da ne pride s PHP, je v functions.php. In ne bomo šli skozi to zelo podrobno, ampak obvestilo operativni beseda tukaj je da je na liniji šestega functions.php-- Dobesedno sem reči funkcijo. Jaz določite ime mojega delovanja. Nato sem podajte argumenti, ali parametri, Rad bi, da je funkcija take-- nobenih vrst. In potem sem jo izvajati. In bom val roko pri izvajanju, saj je dokaj napredna desno zdaj, ampak ga bomo spet videli dejansko v enem tednu v problem nastaviti sedem. Ampak jaz lahko to počistiti, preveč. Jaz tudi v današnja koda različica citata, ki nima dot datoteko PHP. Ker tisto, kar je verjetno Na top programa imenovanega samo citiram? To je tako imenovano shebang-- precej Grobni incantation ki pravi, da ugotovite, PHP in nato jih predvajajo na mojo kodo tukaj. Vse je v redu, tako da prinaša nas, kjer smo končali zadnji time-- čeprav z nekatere bolj napredne primeri. Vsa vprašanja doslej o PHP in kaj delamo? No-- vse v redu. Ja? OBČINSTVO: Znotraj HTML datoteke, naredite you-- [? ali ti ?] [? Pravkar je poklical?] A [neslišno] PHP datoteke? DAVID Malan: Dobro vprašanje. V spletnem kontekstu, ki sva dobesedno približno za prehod, ne boste uporabljali tako imenovane shebang na vrhu, ker je web server-- pogosto Program se imenuje Apache ali Microsoft IIS, Internet Information Server, ali poljubno število druge programske opreme, spletni strežnik, ve, da ko vidi pika PHP datoteko, ki ji mora teči tolmača na njem. To ne gleda na to prvo linijo. Torej to prvo linijo trik je samo, če ste pisanje ukazni vrstici programs-- ki nam ne bo naredil super pogosto, ampak to je naš način premostitve naši primeri C do zdaj naši PHP. Torej, kaj je res premostiti ta svet iz sveta v ukazni vrstici na spletu s tem naslednje. Naj gredo naprej in pripraviti sem za trenutek. Torej, če imamo spletni strežnik, ali bolje če imamo svoj laptop tukaj, ki bom sestaviti takole. In tukaj imamo internet v neki obliki. In potem je tukaj, imamo strežnik v building-- to je, kako internet works-- in tukaj je strežnik z nekaj luči morda. Kaj se pravzaprav dogaja med tema dvema povezav? Torej, v tej stavbi je spletni strežnik. To je samo računalnik da je tekmovanje v teku nekaterih operacijskih system-- morda imenuje brezplačna programska oprema Apache, ki CS50 IDE teče. Torej si lahko dejansko mislim te stavbe kot stavba v ki je shranjen CSt0 IDE. To je, če imate vse vas računi, kjer vas vse imeti svoj spletni strežnik teče, vse vas imajo svoje lastne edinstvene URL-jev, kot smo začeli razpravljati, in videli boste več v P. nastavite šest. Tu je moj laptop nekje drugje na spletu. In tako, ko sem obiskal URL, ki pripada se mi, da je internet je promet tekoč več na strežniku, strežnik je prejemanje HTTP request-- kot GET index.html in je odgovarjanje na tej spletni strani. Tako da je splošna paradigma. Ker je vse gor do zdaj danes, vsega se dogaja samo v omejuje te stavbe. Sem bil using svoj laptop, ampak Sem bil povezan z CS50 IDE, tako da vse tiste programe, sem bil teče je znotraj tega strežnika, sama. Toda zdaj, začnimo ponovno uporabo PHP napisati nekaj konkretnih programov, ki so postregli s spletnega strežnika. In za to, sem šel v cel kup primerov da uvedejo to idejo tukaj. Torej je to neke vrste fancy način opisuje programsko paradigmo. In v resnici, ko končate CS50 ali delo na končnih projektov, ali traja nekaj sledite na razred, boste začeli videti, da je world-- še posebej, ko je odrasel pri jezikih, kot so C da so zelo nizke level-- Zavedam se, da se je bolje načini pisanja programske opreme. Obstajajo nekatere vzorci lahko sledite, nekateri načini organiziranja datotek in načini za poimenovanje svoje funkcije, da skrajšam zgodbo, svet je prišel gor z cel kup kratic in imena za načine programiranja. To so le tehnike, ki jih lahko uporabite. In eden od njih se imenuje MVC, za model View Controller. In to je samo za Zdaj, pretirano zapleten besedami, kako naj si začrtate spletna stran, ki temelji na PHP, v našem primeru. Kako organizirati svoje datoteke, kako si organizirati logiko, na način, ki omogoča lažje napisati bolj zapletene spletne strani? In res, bomo hitro tja s p-set sedem. Tako v svetu MVC, boste videti, da lahko naša koda na splošno je treba opredeliti bodisi kot vzorčni kodi, ali koda krmilnik, ali pogled na kodo. In bom ga poenostavljam kot follows-- krmilnik je možgani vašega programa, to je, če vse Zanimiva logika zgodi. Torej vse, kar smo bili pisanje doslej v razredu, je nekako kot krmilnik code-- to je obvladujoča vaš program, svoje zanke, vaš pogoji, vaše funkcije in spremenljivke in vse to. Ogledi, sedaj se dogaja, da se malo bolj očitno v svetu spleta. Pogled je estetika vaše spletne strani. To je tisto, kar uporabnik sees-- slike, HTML mize, oznake HTML, in vse od tega, vsi puhastimi estetskega stvari, da ni tako težko pisati, ampak je samo tisto, kar ste ustvarjajo, je tako imenovani pogled, estetika. In model, na koncu, se bo da so podatkovne baze, ki stuff-- bomo začeli potapljati v vse bolj to sredo. Torej regulator je logika, Pogled je estetska stvari, in model se bo, kadar hranimo naše dejanske podatke. Torej, si oglejmo to bolj konkretno z naslednjim primerom. Jaz bom šel v mojem imeniku tukaj današnjega vira code-- vse, ki je na voljo na spletu. In jaz bom šel v različici ničlo. In tukaj is-- kaj je to, da pokličete Različica nič spletne strani CS50 je. Ni veliko tukaj sploh. To je zelo preprosta spletna stran, ki je Verjetno uporabljate kaj HTML tags-- pravkar Verjetno iz preteklih primerov? Kaj je to? H1-- verjetno za tako velik krepko Naslov, ki logo do vrha, CS50. In kaj je v igri? Ja? OBČINSTVO: Neurejen seznam. DAVID Malan: Neurejen list-- tako UL tag in morda nekaj LI oznak. In če se ne spomnite teh, je pošteno ni važno. To so puhasto vrste Podrobnosti izboljšava HTML da boste hitro pogledaš gor in ste nazaj na svoj način. Bomo bolj osredotočili na programiranje Ideje, ki so juicier kosov. Torej, kaj je samo na hitro poglej HTML-- in dejansko če sem odprla vir pogled tu, Ja, to je točno to, kar se dogaja tukaj. Tam je UL tag. Ugnezdena znotraj, ki je LI oznak. In potem sem si sposodil URL dejanskega predmetnika tukaj. In potem v lectures.php je očitno drugo dinamično ustvarjena stran da se dogaja, da imajo, kaj je see-- ah, v prvih dveh tednih predavanje. Torej nič teden in en teden, kaj je poglej this-- če sem Ogled vira, tudi super enostavna. Te vodijo k dvema stranema imenuje week0.php in week1.php. Tako menijo sedaj, kaj se dogaja. Ko sem kliknite na week0.php, moj laptop je vložitev zahteve za week0.php. Spletni strežnik, alias, CS50 IDE, prejema te virtualne kuverto. To je videnje sporočilo všeč, dobili week0.php. Nato je tolmačenje datoteko, top navzdol, levo right-- datoteko imenuje week0.php-- in izpljunil rezultate. Torej znotraj te datoteke, week0.php, mora biti logika krmilnik, ki ustvarja to HTML, in bomo kmalu videli, da. Ampak za zdaj, mi kliknite na ničelno teden, in sedaj imamo sredo in petek, in zdaj imamo diapozitive počasi od ničelne teden. In morda se spomni to je pot nazaj, ko. Tako, da je vse to spletno počne. Torej, kaj menijo, kako se to počne. Jaz bom šel nazaj v izvorna koda tu, v CS50 IDE, in bom odprla index.php. Na vrhu te datoteke je kup pripomb. In potem v sredini te datoteke, jo Izkazalo se je, ni PHP koda whatsoever. Ker če ne boste imeli kaj od open nosilec vprašaj PHP oznake, ste prosto samo dal HTML. Ker kaj je PHP Tolmač je moral storiti, je, ko prebere to file-- zgoraj navzdol, od leve proti right-- to razlaga le kodo, da vidi med ti kotni nosilci vprašaj. In karkoli drugega, ki pa ne prepozna kot PHP, je samo izpljune. In HTML je med stvarmi to bo samo izpljuni. Torej bi lahko ta datoteka ima bil imenovan index.html, vendar sem poimenoval vse dot PHP kot odskočna deska. Lectures.php-- podobno underwhelming, to je samo nekaj HTML. Week0.php, podobno samo nekatere HTML. Zdaj pa kaj je dal na pregovorna inženiring klobuk, in razmisli, kako bi lahko to izboljšali. To ni težko, da to storijo, vendar sem nekako od prenesena v kopiranje in lepljenje. In v resnici, če naredim dva tedna, si vem, kaj bom verjetno bo, da naredim? Bom šel na week1.php sem dogaja, da označite vse. Jaz grem, da ga kopirate, prilepite v novo datoteko imenovano week2.php, poteg nekaj URL-jev, in na moji poti. Torej, ki temelji na tisto, ki smo jih videla v C že, to ne zdi prav, upajmo. Copy, paste redko prava rešitev. Torej, kaj lahko začnemo storiti, da bi to izboljšali? Kje so priložnosti za boljše načrtovanje? Do takrat, ko pridem do osem tednov, da se dogaja biti zelo nadležno če želim spremeniti pisave za vsakega izmed moji strani, ali pa, če želim spremeniti strukturo postavitve. Torej, kje je priložnost za boljše načrtovanje? No, pa razmisli, kaj je delijo po vseh teh datotek. Tukaj je en teden, tukaj je teden nič, tukaj je lectures.php, tukaj je index.php-- kar je enako in Kaj je drugače, grobo rečeno, V vsaki od teh datotek? Ja? OBČINSTVO: [neslišno] DAVID Malan: OK, dobro. Tako da je vzorec, zagotovo, pri čemer vsakič, ko sem se odločil, predavanje I, I je treba tvorjenje Zelo podobno je videti stran. In tako morda lahko vzvod dejstvo, da je res, smo namenoma številčno indeksirane našo lectures-- če bom lahko dal še več besede v svojem odgovoru. In kaj je edina stvar, res, ki se spreminja med tednom one-- in mi se pomaknite navzdol, tako da je približno v istem place-- tako da tukaj je nič teden, približno na vrhu. Tukaj je en teden, teden nič, en teden, nič teden. OK, dobesedno, če veš noben program sploh, to je zdaj tako kot Vzorec ujemanje igro. Torej, kaj je drugače? Ja? OBČINSTVO: [neslišno] DAVID Malan: Dobro, da je naslov se spreminja, vedno tako malo. Zero se bo, seveda, na enega. Enako se dogaja v H1 tag. In ne bomo povsem videti tako preprosto, ker so URL-ji malo dolgo. Toda ti URL-ji se nekoliko spreminjajo. Ampak, kaj se ne spreminja je, si drznem reči, večina vsebine page-- HTML tag je isto, glava je enako, naslov je skoraj enak, telo je isti, in skoraj vse ostalo je enaka, razen ti malo poteg. Torej, kako lahko greste o faktoring nekaj tega ven? No povej mi predlagamo natančno da v naslednji različici. Torej, tukaj v različici eni, imam točen Iste datoteke, plus nekaj drugih. Tukaj je index.php-- in četudi še nikoli niste videli PHP prej, kaj bom verjetno delal za reševanje tega problem-- temelji na tisto, kar vidite tu? Ja, je, da je rahlo zavezo? Ne? Ja, pojdi naprej. OBČINSTVO: [neslišno] DAVID Malan: Yep. OBČINSTVO: [neslišno] DAVID Malan: ti morajo govorijo le malo glasneje. OBČINSTVO: [neslišno] DAVID Malan: OK, dobro. In sem think-- je bilo težko you-- ampak slišim pomislite, kaj ste dobili na je, da oznake, ki so pogosti do vrha, in oznake, ki so skupni na spodnji, so bili vključeno ven, ali potisnjeni na katere datoteke? Header.php in footer.php-- in greva narediti nekaj Tweaks Odgovor na pomislek, ki ste jo pravkar postavljeno o številkah spreminjanja, za primer, če sem dobro slišal. Vendar se zdi, da je bistvo tega. Če je bilo ogromno redundance na vrhu strani, in ogromno redundance na dnu, kaj je dobesedno le vrhunec in cut, da je vsebina ven, ga dal v ločenem file-- tako kot ideja CSS, kjer smo vključeno ven Zelo podobne estetika, dani je v ločenem dot PHP datoteke, uporabite zahtevajo mechanism-- ki je kot C oster include-- ki je v bistvu kot pravi iti zgrabi vsebino header.php, in jih kopirajte in prilepite tukaj. Toda kaj to pomeni, da je zdaj v index.php, imam ti dve vrstici. V lectures.php, tudi jaz imajo ti dve liniji. V week0.php, tudi jaz imajo ti dve liniji. Torej, zdaj, če želim spremeniti naslov vse moje strani, ali želim spremeniti temeljna struktura, Lahko ga spremenite zdaj v samo enem mestu, ali dva places-- glave in noge, oz. Zdaj kodo izhodiščna pogledati malo bolj skrivnosten, kajne? Ampak, če mislite, da o tem, kaj stran je doing-- če sem zahteval week0.php, tako kot na pripravo več here-- ko se zahteva week0.php, kaj to pomeni? Dobesedno, je ta datoteka brskalnik zahteval. Spletnem server-- alias CS50 ID-- zgrabi to Datoteka, week0.php, in se glasi je od zgoraj navzdol, od leve proti desni. Na liniji, takoj naleti odprti oklepaj vprašaj PHP, zahtevajo Glava dot PHP, in tako kaj je PHP interpreter does--, ki je vgrajen v spletu Strežnik, ker smo že tovarniško je za you-- samodejno gre v header.php, kopira vsebina, jih prilepi tukaj. Potem pa naleti tolmači Vprašanje znamka blizu nosilec, tako da je vse narejeno razmišljanje. Zdaj je le slepo pljuva out linijami dva skozi sedem, saj to je samo surovo HTML. Pride do črte osem, in ne da Enako magic again-- odprtju datoteke, oprijemalne vsebine, in jih zahteva ali jih prilepite prav takrat ali tam. Ampak sem namiguje na hrošča. To je delni korak nazaj, ker če pogledamo v header.php, Sem nekako zmanjšati kotiček. Kaj je značilnost sem dal gor, da bi da pridobijo to obtožbo boljši design? Ja? OBČINSTVO: [neslišno] DAVID Malan: Ja, sem nekako od cut netrivialni kotiček. Ste poudarili, da je kaj se je spreminjal je bil naslov, številko v naslovu, in številka v H1. Torej, moja rešitev je bila, OK, kaj je samo preimenovanje strani, in se ne ukvarjajo s tem problem whatsoever. Tako, da je delna korak nazaj za prepričani. Toda kaj je omeniti tukaj je, da tisto, kar sem storil je sicer vključeno vse skupne stvari. In v footer.php, opazila sem vključeno ven vse to, čeprav manj, skupni stvari. Tako da moram nekako sedaj lahko narediti še korak naprej, in določi so vprašanja naslov. Torej, kaj je to. Naj gredo v mojo drugo različico tod ki spet ima iste datoteke razen ene novi dodatek. In to je malo več verbose, ampak poglejmo, če bomo Lahko draži narazen, kaj se dogaja tukaj. Torej, namesto da zahtevajo header.php in footer.php, Zdi se mi, da je treba le, da se enemu file-- pozval, seveda, helpers.php. In mi določajo zdaj, kaj je znotraj helpers.php je samo kup funkcij da sem napisal, tako kot prej. Vendar sem ga poimenoval helpers.php. Zdaj je očitno, v tretja vrstica in 10, sem kliče dve functions-- render glavo, render nogo. Tisti, ki ne prihajajo z PHP, sem napisal tiste sam. In sem jih dal v helpers.php. Zdaj smo videli samo to sintakso enkrat, in bilo je super kratek. Ampak to je očitno argument nuditi glavo, funkcijo. Zakaj vem, da je? No tu je tesno paren, tukaj je odprta paren. In seveda, tako kot v C, kaj med temi oklepaji je input-- ali argument funkcije. Kaj je podatkovni tip tega argumenta, ki temelji na tisto, kar sem poudaril? Kaj ti oglati oklepaj kažejo, temelji na prejšnji teden? Ja, to je array-- posebej asociativno paleto. In ta sintaksa sicer je malo funky, vendar je to pravkar poteka v eni para ključev vrednosti. Ključno je, citiram konec citata Naslov, in je vrednost CS50. Če bi to storili v C, bi bilo namesto videti bolj kot to, Samo quote citata CS50-- ali dejansko bi bilo kodrasti naramnice, ali kaj podobnega, v C, kjer je ključni nič, in je vrednost CS50. Ampak še enkrat, v PHP, čeprav sintaksa je, še enkrat, malo čudno, to vam omogoča, da prenese v Besede namesto številke povezati ključe z vrednostmi. Torej, kaj vse to pomeni? Če grem v helpers.php, Oglejmo si te funkcije. renderHeader.php, ne renderHeader je moja funkcija, in vem, da zato, ker vidim, funkcija ključna beseda tukaj. To je nova od njega C- očitno Traja argument imenovano data-- ampak jaz bi to imenuje karkoli, vendar sem ga poimenoval podatkov, samo, da se malo clean-- in vzemite ugibati, še posebej, če ste programirani v nekaterih drugih višji ravni jezika pred nekaj nad C, konceptualno. Kaj počne enako odprto konzolo peto nosilec verjetno pomenilo? Ali pa, kaj bi to pomenilo? Mi smo ne videl to v C. Ja? Prazen niz. Konkretno to pomeni, da če uporabnik ne pokliče renderHeader z argumentom, da sem še vedno tekoč da ima argument imenovano podatkov vendar je njegova privzeta vrednost je bo prazna matrika. Torej, to je samo lepo priročno. Nimam kričati na uporabnika, ali da ste uporabili mojo funkcijo narobe. Jaz lahko samo dati uporabniku privzeto vrednost, če ne bom posebej skrbi. Zdaj to funkcijo, sem bo val moje roke na. Toda ta funkcija izvleček omogoča nam, da prenese te spremenljivke v podatkih v header.php na naslednji način. In to je zadnji kos, Mislim, funky sintakse. Tukaj je moja nova različica , da header.php-- uporabljajo za povedati, dobesedno, odprt nosilec naslov CS50, in to je bilo to. In ista stvar za H1. Zdaj je očitno pravi nekaj precej funky. In mi poenostaviti to za trenutek, kot sledi. To je tisto, kar sem imel spremenila svoj naslov za to. Vendar pa je že malo grdo stalno odprtih razredih z PHP, in nato uporabite funkcijo tiskanja. Izkazalo se je, da ima PHP okrajšavo zapis za to, kar je le enako znamenje, ki je tehnično Funkcija se imenuje echo namesto tiska, ampak to je ista stvar, učinkovito. Da samo izgleda bolje. To je samo skladenjska sladkor, če hočete, da si moja koda videti malo bolje. Ampak se je izkazalo, in bomo to še enkrat videti Pred dolgo, moramo to imenujemo Dolgčas dolg funkcija imenuje HTML posebnih znakov v PHP, saj se je izkazalo, obstajajo nekateri vnosi da uporabnik lahko nam dal, ali da bi nas uporabnikom izročiti, da se bo prekinil našo spletno stran. Ampak bomo videli, da je zraven teden JavaScript. Ampak za zdaj, samo vem, da ta datoteka, headers.php, preprosto je naziv, ki Sem opravil leta, da bi prepričajte, da je varno, ki se vbrizga v spletu stran, in jo izpljune kot moj naslov in kot moj H1. Torej, če sem šel v tej različici zdaj, opazili, da ima predavanja njen naslov nazaj, nič teden ima svoj naslov nazaj, in res, HTML sem generiranje je enaka, kaj je moj prvi različici was-- razen za mojo belini, ker sem začel oblikovanje moja koda malo drugače. Ampak sem ustvarila vse koda mi je mar. Zato mi dovolite, premor samo trenutek in poglejte Če obstaja kakršna koli vprašanja ali zmedenostjo sem ustvaril. Vse je v redu, tako da je zasuk malo težje tukaj da vidim, če tam je priložnost za izboljšanje. Helpers.php imeli tudi to funkcija, ki se imenuje renderFooter. In kaj je treba omeniti, o renderHeader in renderFooter? In še enkrat, za današnje namene, veš, da je funkcija ekstrakt je le moj način kratki argumentov v header.php in footer.php. Žal? OBČINSTVO: [neslišno] DAVID Malan: Ja, samo spremenila zahtevajo črta. Torej dobesedno sem storila greh kopiranja in lepljenja, še enkrat. To ni ogromno število linij, ampak pridejo on-- če sem kopiranjem in lepljenjem vse samo spremeniti eno malo besedo, in tisti malo beseda, ki Alan točke jasno je nogo tukaj, v primerjavi header tukaj. Sicer pa je vse identična, razen, Seveda, imena funkcija je. Torej, kaj lahko storimo bolje? No povej mi odprla to različico tukaj, pri čemer v helpers.php, zakaj ne sem dobil malo pametnejši o tem? Napišite nekoliko bolj zapleteno kodo, ampak poklicati to postane? Torej, kaj sem se korenito spremenile? To traja argument now-- dva argumenta, podatki še vedno. In kaj potem je prvi Ime verjetno uporabljajo za, ki temelji na tisto, kar berete tukaj? Tudi če nekaj sintakse še novo. Kaj je dolar predlogo znamenje? Žal? OBČINSTVO: Glava ali Noga. DAVID Malan: glavo ali nogo. Torej je očitno, sem se odločil, da če edina stvar, ki se spreminja je tisto predlogo želim da print-- in predlogi Mislim, da je to načrt za koda, da želim, da izhod, ampak želim, da priključite v nekaterih values-- tako da, če je le glava ali nogo, zakaj ne bom parameterize da in pokličite argument znak za dolar predlogo? In potem je to funky sintaksa mi omogoča ustvariti pot v spremenljivko tukaj. Torej znak za dolar Pot je spremenljivka. Kaj to sintakso storiti, če ste seznanjeni? Ja? OBČINSTVO: [neslišno] DAVID Malan: Točno tako. Če predloga je, citiram konec citata, Glava, ali če predloga je, quote citata, footer, da linija ni da sem poudaril, linija osem, je preprosto pokazal, da je ime, kot so glave, in ga združite z dot PHP. Tako nismo imeli tega operaterja v C. Ta operator pika neverjetno stvar v PHP-- če ste seznanjeni z JavaScript ali Java, lahko uporabite plus prijavite narediti spoj. V C, je bolečina v neck-- in sem tako žal, v p-set šest, boste morali storiti this-- je bolečina v vratu za združevanje nizov. Zakaj? No, saj če imaš niz, ki je tako dolgo, in drugi niz, ki je tako dolgo, si ne more jih priključite skupaj. Kaj namesto tega morali narediti v C? Ja? OBČINSTVO: [neslišno] DAVID Malan: Moraš malloc spomin, ali pa uporabite paleto na kupu. In ti dejansko morali narediti, da je matrika dovolj velika da se prilega to plus to, plus poševnica nazaj nič. Nato pa jih združite skupaj s pomočjo premešamo mačko ali ročno z zanko, ali katerokoli izmed številnih tehnik. In mi vam pokažem nekaj v-p nastavite šest. To je bolečina v vratu. In to je res tisto, kar sem mislil s tem, To v primerjavi this-- kot C v primerjavi s PHP. Moraš dobiti toliko bolj funkcionalnost brezplačno, tako da se lahko osredotočite, idealno, na zabavo del kodiranje je Projekt želite rešiti, namesto ravni minucij nizke. Torej, to samo ustvarja header.php ali footer.php na podlagi katerih tisti, ki sem se ustavil. In res, če grem v index.php, obvestilo vse, kar je changed-- Namesto kliče render glave ali onemogočijo noge, Kličem render, čemur sledi ime predloge, da želim storiti. In boste videli, preveč, v problem nastaviti sedem, pri čemer smo vam omogočajo, da uporabite ista funkcija da bi grozde in grozde različnih spletnih straneh. Torej, namesto da živijo preveč veliko več o teh details-- ki jih boste spet videli v Problem set seven-- oglejmo Na sedaj začetku raztopini k bolj zanimivo problem. Tako daleč, nič smo jih storjeno ima shranjene podatke. Dejstvo je, edini čas, ki smo jih kdaj shranili nekaj, kar smo naredili v tem razredu je, ko smo imeli zelo preprost demo nekaj časa nazaj, pri čemer smo uporabili datoteke IO v C, in mislim, da sem tipkal v mojem imenu, in Ime Hannah je, in ime Marijina, ali morda ime Andy, in potem bomo shranili CSV file-- comma separated values ​​datoteko. In smo uporabili fopen-- mislim smo uporabili fprintf kot se spomnim, in smo shranili datoteko. Zdaj, da je najpreprostejši oblika baze podatkov. Če želite spletno stran za Program Frosh UI, pri čemer novincev se lahko prijavijo za šport, vas idealno želijo nekaj narediti s temi podatki. Prejšnji teden smo naredili ničesar z data-- smo pravkar rekel, ste registrirani, ni res. Ali morda jaz emailed proctor, in to je bilo to. Vendar bi bilo lepo, če bi lahko dati, da Proctor datoteko CSV, kot Excelove datoteke. Ali še bolje, bi bilo bilo lepo, če bi lahko dal imena teh uporabnikov, in Dorm imena in vse to v bazo podatkov, ki Samo živi večno, dokler sem se odločil, da izbriše podatke. Podatkovna baza, ki omogoča me, da se pozanima informacij. In res, da je tisto, kar je podatkovna baza. Uvajamo danes, in Naslednji teden, preveč, tehnologija imenuje SQL-- strukturiran Query Jezik, ki je še en jezik. To je v bistvu programiranje jezika, ampak za podatkovne baze. In baze podatkov za zdaj, samo misliti kot super fancy različico Microsoft Excel, ali Google Preglednic ali Apple Numbers. To je splošno program, ki omogoča , da shranite cel kup podatkov v vrsticah in stolpcih, precej kot ste morda v Excelu. Toda kaj je lepo, še posebej, če nismo super seznanjeni z Excel, kaj SQL vam omogoča, da je izraz tega Informacije, ki jih pisanje vrstic kode kjer si lahko, tudi če je vaš Podatkovna baza ima milijon vrstic v njej, lahko najdete stvari, super hitro. Dejstvo je, Excel je zlasti slabo na velikih zbirk podatkov. In dejansko do nekaj Pred leti, izkazalo Excel bi samo vam omogočajo, da shranite do 65.535 vrstic data-- ki Sliši se veliko, vendar pa Tokrat sem bil grad študent, in Spomnim se spotaknete to zato, ker sem bil ustvarjanje CSV datoteke za moje raziskave in I želel, da jih hitro analizirati s samo odpiranje v Excelu. Seveda, moj računalnik samo strmoglavilo, ker sem imela več kot 65.000 vrstic. Ampak kje Ali je 65.535 prišel? Kaj je Microsoft počne, verjetno? Če ste dobri s svojimi pooblastili dva? Ja, so bili z uporabo 16-bit Vrednost za zastopanje številko vrstice. In dva do 16 je 65,536-- minus ena, ker če vas nič indeks pomeni, da je bila Najbolj število vrstic, da bi lahko imel. In to je samo odločitev design. Z varčevanjem 16 bitov, so me omejena 16.000 vrstic, namesto 4 milijarde, ki bi sem imel idealno. Ampak za zdaj, gremo na uvesti to bolj v spletnem okolju. In kaj je lepo o SQL je, da tudi čeprav je zelo močna in lepa prefinjena, je res izvira navzdol, da štiri ključne dejavnosti, štiri ključne funkcije, če will-- izberite za pridobivanje podatkov, iskanje za podatke; izbrisati ali brisanje podatkov; vložek za dodajanje vrstic v zbirki podatkov; in posodabljanje. Torej, če ste že kdaj uporabili Google Preglednice, Apple Numbers, Microsoft Excel, ste izvedli, najverjetneje vse teh operacij, kot človek s samo z uporabo tipkovnice in mouse-- vstavljanje podatkov, s pomočjo vaše oči Izberite ali iskanje podatkov, ali posodabljanje podatkov ali brisanje podatkov. Torej, kaj to pomeni? No, vnaprej nameščen v CS50 IDE je program, imenovan MySQL. Je brezplačna, open-source baza podatkov, ki je super priljubljena. Facebook, na primer, ga uporablja za to dan, med drugimi orodji, ki jih uporabljajo. In veliko zelo priljubljenih spletnih strani, uporabite je v veliki meri zato, ker je hiter, in zato, ker je zastonj. Čeprav seveda obstajajo alternative. In nekateri od vas morda umazali s alternative za končnih projektov. To je screenshot, medtem, od spletno orodje, imenovano phpMyAdmin. Je naključje, da To spletno orodje je tudi napisana v jeziku, PHP, ampak kaj je bilo mišljeno, da storijo se nam spletna temelji na vmesnik z bazo podatkov. Ker MySQL je običajno nekaj, zgodovinsko vas, bi interakcijo z le z ukazno vrstico. In da bi bilo super nadležno in Skrivnosten, da imajo vtipkati tekstovnih ukazov za izbiro Podatki, vstaviti podatke in brisanje podatkov. So nekateri ljudje na internetu napisal spletni program, da samo nam upravljanje podatki v naši bazi podatkov. To je kot dvojnim klikom na Excel in teče njegov spletno različico. In kaj boš s tem uporabiti za na koncu naslednji teden, ne-p nastavite šest, vendar je zgraditi nekaj imenuje CS50 Finance, ki se dogaja, da imajo bazo Uporabniki, z uporabniškimi imeni in gesli, Dolar zneske, ki jih imajo v svojih bančnih računov. To se dogaja, da nekaj, kar lahko uporabite za shranjevanje simboli in količine staležev, ki jih uporabniki so kupili s pomočjo virtualnega dolarjev, ki ga bom dal na njih. In to se dogaja, da se omogoči uporabnikom da se registrirajo za vašo spletno stran, tako da tudi svojim prijateljem lahko prisluhnete na vašo spletno stran in dejansko register, se prijavite, in igral in poskusite najti napake v kodi, in poskusite najti napake v vašo spletno stran. In jih bomo preprosto register, ki ga sami dodal, učinkovito, preko kode pišete na vašo bazo podatkov. Na primer, to je hiter zaslona o tem, kaj bi lahko baza podatkov izgledal. To je bilo iz ene lanskoletne solutions-- to je kot mini Excel datoteke, shranjene v naši bazi podatkov, shranjene v to programsko opremo, imenovano MySQL. Na levi strani, kjer sem imel očitno dati vsakemu uporabniku edinstveno številko. V drugem stolpcu, sem dal vsak uporabnik name-- moja med njimi. In na desni strani, Sem jim dal hašiš. Zdaj je to pravzaprav geslo vendar to ni besedilo geslo navaden. To je šifrirano geslo, če boste, ali geslo hash. Kateri se bomo vrnili na že dolgo. Ampak, če ste jih kdaj prebral članek o tem, kako geslo na neki banki ali nekatere Spletna stran je bila morda ogrožena, lahko na splošno pomeni eno od dveh stvari. Torej je to samo odlomek iz šestih uporabnikov. Vse vas zdaj lahko ugotovimo ven prek taksist ali razpokane kaj gesla Naših šest ljudi so. Ampak, če ste kdaj gotten opozorilo ali opravičilo od podjetja ali spletnega pregovor, Žal mi je, heker vdrl v naši podatkovni bazi, bi verjetno morali spremeniti vaš geslo, kaj bi to pomenilo? No, ena, lahko pomeni Družba je bila bolj moronic, in je bil shranjevanje geslo v koloni, kot je ta, nekodirano. Kar pomeni nasprotnika, kdo je ukradel bazo podatkov, dobesedno pozna vaše uporabniško ime in geslo. To je najslabši možni scenarij. In kot boste videli v p-set sedem, tako enostavno izogniti. Ni nobenega opravičila za to oblika neumnosti v današnjem internetu. Dvo in našli bomo nekaj člankov pričati, da je to še vedno zgodi, nonetheless-- dva, morda nasprotnik Ukradel te različice baze podatkov. Ki je še vedno nekako slabo, ker zdaj vedo, da imam šest strank, Poznam imena uporabnikov od teh šestih strank, in vem, da je šifrirano različice, ali zgoščene različice, gesel teh šestih strank. Ampak kdo od vas, ki bi lahko naredil [? Hacker 2?] kje ste razpokan gesla, ali je poglej na to različico problema set, zakaj je še vedno malo zaskrbljujoče če nasprotnik pozna svoje hash gesla? OBČINSTVO: Ker so lahko vnesti celotno slovar v funkcije razpršitve. In če je vaše geslo je slovar beseda [? so lahko samo match--?] DAVID Malan: Točno, nasprotnik Lahko samo pisanje kode, kot nekateri od vas storil za [? Hacker?] 2 pri čemer si Ponovil več vse besede v slovarju, ali vse možne kombinacije A do Z in eno skoznjo nine-- ki zveni kot veliko, in je. Toda za računalnik, je precej darn hitro. In z dejstvom, da je točka [? Hacker 2?] Je bila vzeti stvari, ki dobesedno videti takole, in obratno inženir kaj je dejansko bilo. Tako si bomo pogledali, kako lahko učinkoviteje shranite to. Izkazalo se je, na srečo v MySQL, tam se bodo tipi podatkov. In ena izmed zabavnih delov približno načrtovanje podatkovne baze, če sem iskren, se dejansko odloča za sebe kako naj si predstavljajo podatke? Če predstavljajo telefonsko številko, kot je int, kot veliko število, ali dolg? Ali pa dejansko narediti kot zaporedje znakov? In ne more biti zelo netrivialne posledice tega. Pravzaprav je eden izmed Prvi, zabava Germane zgodbe je, ko Mark Zuckerberg je gradnjo Facebook, je bila prvotno napisana v, in je še vedno v veliki meri napisana v PHP. In eden od največjih izzivov se soočajo že na začetku je bilo luščenje. Ko se hranijo dodajanje šolo po Šola po šoli, da se mi je znano, eden od prvotnih rešitev je bil v bistvu kopiraj in prilepi nekatere od podatkovnih baz in nekatere kode, tako da je Harvard teče na svojem strežniku, in MIT je tekmovanje v teku na svojem strežniku. In to je bil razlog, za nekatere med vami, ki bi se spomni, si ne bi mogla imeti prijatelje v drugih omrežjih. Saj verjetno na nima prijateljev MIT in Harvard pred 10 let ali tako, vendar niste mogli span omrežij za delno zaradi tega razloga. In eden izmed največjih izzivov za Mark in za podjetja, kot so Facebook je dejansko ravnanje stotine in na tisoče in milijone zahtevkov na sekundo. Torej, stvari bomo začeli govorimo o tem tednu se v resnici dogaja, da se germane za pisanje dobre programske opreme, in popularno uspešna orodja, ki zmorem veliko uporabnikov. Torej bomo govorili o stvareh, kot indeksiranje in iskanje, ampak to je to za danes. Vam bomo videli več v sredo. [MUSIC - "Seinfeld" TEMA] DAVID Malan: Lahko, da to, in odštejemo od njega. In ne boste imeli, da se držijo z nekatere vnaprej določene količine pomnilnika. No, kaj da bo, da se imenuje? SPEAKER 1: No, kaj se dogaja? SPEAKER 2: Kaj misliš s tem? On predava. DAVID Malan: In bomo lahko uporabite Funkcija se imenuje malloc za memory-- SPEAKER 1: Zakaj niso njegove roke premika? SPEAKER 2: No that's-- veste, da je to normalno. To je tako kot da ima samo velike klobase visi tam. SPEAKER 1: To je normalno? SPEAKER 2: Ja, mislim, da smo le domnevati, je po nesreči zamenjati svoj deodorant z superglue.