[Prehrávanie hudby] DAVID Malan: Toto je CS50, a to je začiatok týždňa osem. A sme tak nadšení privítať back, veľké prekvapenie, CS50 vlastné Ramon Galvan, rastúce senior, ktorý bol strávil posledných niekoľko mesiacov Od júla v Los Angeles, v Hollywoode, doslova pracujú na zbrusu nového televízora výstava s názvom Colony, tvorca, ktorý je vlastne Harvard kamenec sám. A tak sme veľmi radi, že vidieť debut v sieti USA tento rok v januári. Takže zostaňte naladení na to, a pre viac Ramon pre najbližších týždňoch. Vedieť hneď, že koniec je blízko. A čo to znamená je, že to nie je všetko, čo veľa zostalo z CS50, smutné. Máme len tri problém Sady left-- je tu Problém set six--, ktorý je v vaše ruky teraz alebo čoskoro budú, v priebehu tohtoročného week-- je určený na preklenutie naše svety príkazového riadku, kde sme strávili väčšinu času pomocou C, a svet webové programovanie. No, uvidíte veľa nápadov požičal si od príkazového riadku práce, ale aj veľa nových a zaujímavé nápady ktoré sa tiež bude Germaine pre mobilné aplikácie a pre technológie, všeobecnejšie, s ktorou chlapci sú všetci dobre poznáme v dnešnej dobe na notebooky a telefóny a podobne. Takže budete realizovať nie webové stránky, alebo webové stránky samy o sebe, ale o skutočný webový server. Budete písať zvyšok webového servera napísaný v C, ktorého cieľom v živote je prijímať požiadavky HTTP, ty virtuálne obálky sme stále hovoriť o, a vlastne reagujú buď Niektoré statické content-- ako bodka HTML súbor, alebo bodka JPEG alebo akýkoľvek iný počet súborov, alebo dokonca súbor PHP, kedy váš web Server sa bude vykladať, že PHP kód a vypľuť výsledky. Teraz sme pre vás pripravili docela dost rámca pre to-- skutočne Distribúcia kód problému set six je viac ako 1000 liniek dlho, je Mnoho z nich je komentáre, byť fair-- ale toto je v skutočnosti znamená, byť príležitosť dostať svoje špinavé ruky potápanie do pomerne veľkého projektu že máme veľmi konkrétne vytesané kusy pre vás, takže naozaj pri ukončení CS50 a vstúpiť do reálneho sveta programovania a chcú fušovať do ľubovoľný počet projektov, budete mať oveľa väčšie, pohodlie sťahovanie nejaký zdroj kód, niektoré open source projekt na webe, a potápanie v a robiť Zmeny, ktoré uznáte za vhodné. Problém set seven sa bude o vytvoriť vlastnú webovú aplikáciu ktorý berie dynamický vstup a vytvára dynamický výstup v podobe z etrade.com-ako webové stránky. A problém nastaviť osem sa zameria na doteraz iný jazyk, známy ako JavaScript. Medzitým, finálna Projekt je na obzore. Tzv pre-návrh je kvôli Odo dneška za týždeň. Pre-proposal-- podľa špecifikácie, ktorý je na CS50 je website-- je celkom neformálne príležitosť pre odoslať docela stručnou e-mail na svoje učenie kolegov len aby ho oboznámiť alebo jej o tom, čo si myslíš, aby použiť ho ako vŕbu. A majú zdravý rozum check-- či si myslíte o hryzenie off príliš moc alebo možno príliš málo, alebo možno nemáte tušenie, vôbec a chcú, aby sa zapojili do konverzácie. Potom je návrh a status hlásenia, tzv CS50 hackathon tu Cambridge pre Harvard a Yale študentov podobne. Záverečný projekt je Implementácie je odtiaľ. A potom CS50 veľtrh tu, v Cambridge, rovnako ako ďalšie v New Haven. Takže návrhu sa pozrieť na webové stránky pre tieto údaje. Ale viac vzrušujúce, taky, je možnosť dostať svoje špinavé ruky, a vaša myseľ otvorené celok banda tém a nástrojov a techniky, ktoré sú doplnkové core Osnova Course, ale napriek tomu súvisiace. A tiež nádherný odrazovým mostíkom do robí naozaj cool konečné projekty, ktoré idú ďaleko nad rámec materiálu, ktorý sme prebrali formálne problém nastaviť alebo v prednáške. Tak choďte na webové stránky CS50 pre celý zoznam seminárov. Ak ešte nemáte registrovať, je to v poriadku. Choďte do toho a zaregistrovať stále a budeme nadviazať s živým odkaz pre streamovanie, deň a čas je na webových stránkach. A všetko bude zaznamenávané a dať on-line keď nie je možné aby sa konkrétne dni a časy. Pokiaľ ide o to, čo je pred nami thereafter-- dobre, Samozrejme, je tu CS50 hackathon. Túto fotografiu, odvolanie, z týždňa nulovej prijatá okolo 4 AM jedného večera v minulých rokoch. CS50 veľtrh, ktorý sa znovu sa bude konať v oboch mestách. A potom, len sadiť semeno, aj keď sme ešte majú mesačne a ľavej časti semestra, pokiaľ by ste sa radi pripojili CS50 vlastné učenie personál, a chcete začať premýšľať o získanie CA, alebo výučby človek, viem, že Začneme hovoriť viac o tom Neskôr v tomto semestri. Ale tu na obrázku je väčšina z tohtoročného tímu. A tak, PHP-- a ja som bol tak smutný minulý týždeň, že [? Allysa?] Láskavo išiel do úsilia získania Americkí tieto nádherné rekvizity že som sa skončiť s použitím, tak to naozaj len pozrel trochu hlúpy že sme mali lopatu sedí tu všetko deň minulú stredu, a trochu lyžice. Ale toto bol môj metaforický spôsob, ako sa snaží maľovať obraz toho, prečo sme prechod z C na jazyk, ako je PHP. A to isté možno povedať o akejkoľvek počet languages-- Java, Python, Ruby alebo zväzky others--, ale zatiaľ čo v C, napríklad, písanie programu v C môže byť ako obvykle pričom lyžicu, ako je tento a kopať dieru v krajiny, v piesku alebo hliny. PHP umožňuje robiť moc väčšie sústa z problému, písanie oveľa menej kódu použitím oveľa menšie nástroj, pretože tam je oveľa viac funkčnosť pieced v. Teraz, keď sme boli naozaj dramatický, budeme musieť niečo lopata tu, ale budiž. Medzitým, druhý metafora sme prišli s Je, samozrejme, mohol by ste používať niečo ako kľúč zatĺcť niečo ako klinec. Ale samozrejme, právo nástroj pre použitie sa deje byť ani tak jazyk nazvaný C- a teraz som jednoducho naštvaný [? Sanders ,?] Pravdepodobne, budeme napraviť tak later-- správnym nástrojom k často používajú sa nebude to najnižšia úroveň nástroj. A skutočne, C nie je jazyk, ktorý väčšina z vás sa vôbec bude používať, alebo by nutne znovu použiť. A v skutočnosti, trochu secret-- jediný čas Ja používam C sám je v podstate medzi Septembri a decembri každého pádu semester. A to preto, že sme použiť ho ako príležitosť naučiť základom programovania, a s ním počítačom veda, základy dát štruktúry, algoritmy a jako--, ale veľmi rýchlo sa budete vidieť, že syntax a myšlienky podkladových C sú tak nádherne prevoditeľný na modernejšie vyššej úrovne, ako sú jazyky PHP a Python a Perl a Java a Objective-C- v skutočnosti, nie toľko Objective-C-, ale Swift, tie novšie jazyky, ktoré mnohí z vás potom fušovať s vami záverečný projekt. Takže bez ďalších okolkov, poďme vlastne použiť PHP vyriešiť niektoré problémy. Pripomeňme, že na začiatku, posledný týždeň, používali sme len CS50 IDE, sme napísali Dinky malý program že práve povedal, "Hello world". A potom som sa chytá v súbor s názvom hello.php. A potom som bežal tento príkaz. A prečo? V angličtine, čo sa to tu deje? Čo som robil, keď Bežal som tento príkaz? Jo? Divákov: Je tu nejaká funkcia PHP že číta to, čo sa in-- chápe, že. DAVID Malan: Dobrý, tam je nejaká funkcia PHP-- a nechaj ma byť konkrétnejší, existuje program s názvom PHP, tiež známy ako Interpret, ktorý chápe, Obsah hello.php, a interpretuje to zhora dole, zľava doprava, a robí to, čo tieto príkazy hovoria. Príkazy v hello.php, samozrejme, práve zdroj code-- funkcie a premenné a slučky a podobne, že my sami začala písať v PHP. Ale na rozdiel od C, čo je kompilované jazyk, PHP stačí písať, a spustite ho. Môžete preskočiť tento krok prostredníka premieňať to na núl a jednotiek, a potom v chode. A tak to, čo je hore o to? Prečo sme preskočením krok? Prečo viac moderných jazykov majú tendenciu tento krok preskočiť? Aký bol prínos? Alebo len intuitívne? Aj keď máme nie Pred písaný veľa PHP, čo je prospešné o ne kompiláciu kódu si o tom myslíš? Nie? Nie je spáchanie? Poškriabaniu vašej hlave? Jo. Divákov: dynamickejšie. DAVID Malan: Dynamickejší? Čo myslíš? Divákov: [Nepočuteľné] DAVID Malan: OK, dobrá, tak v závislosti na vstupe, nemusíte kompilovať pri každom. A je to naozaj ako jednoduché, ako to, čo that-- je bod pokračovanie zostaviť svoj kód? To je len krok, ktorý je making-- to vyžaduje, Za posledných niekoľko týždne, dvakrát toľko krokov ako bolo práve bežiaci program. Bolo to užitočné vidieť, že vás uvidíte nejaké chybové hlášky a tak ďalej, ale je to stále len nepríjemný krok. A tak si uvedomil, programátori v priebehu času, prečo nie my začnite písať jazyky, ktoré nemajú Potrebujeme tu pomerne mechanické krok, takže stačí napísať váš kód a spustite ho. Ale čo bola cena že sme videli sme zaplatili minulý týždeň, s jedným konkrétnym príkladu? Ano? Speed. Tak [? Čo je?] Tlmočníci trochu pomalšie, v tom, že nuly a jednotky sú pekné a rýchlo pre počítač pochopiť, pretože Intel CPU, alebo čo to je, len chápe, čo sa deje na s týmito vzormi bitov. Vzhľadom k tomu, tlmočníka je program, ktorý naozaj musí prečítať zdroj ASCII kód, ktorý ste napísali, a previesť ju, aby som tak povedal, alebo zistiť, ako to nakoniec prevádza sa núl a jednotiek. Tak to jednoducho trvá trochu trochu hit výkonu. Takže je to trochu kompromis. Teraz, ak to urobíme tu, dovoľte mi, aby som choďte do toho a robiť príklad takto. Ak by som ísť sem, nový súbor, idem uložiť To je opäť hello.php. A teraz budem pokračovať a hovoria, "print hello world" - a pripomenúť, že môžem použiť tlač, vôbec sa mi nepáči musieť použiť print-F. A teraz tu dole, keď urobím PHP z hello.php, huh-- I Nezdá sa, že je už vyložili. Čo som urobil zle? Divákov: Šikmé náramky. DAVID Malan: Jo, budete potrebovať že uhol držiak do top. Takže je to trochu nepríjemné, ale dostanete rýchlo na to zvyknete. Ak mám písať PHP kód, ja Všeobecne je potrebné povedať programu, alebo oznámiť interpret, hej PHP, prichádza nejaký PHP kód. A potom sa na správnu mieru, urobil by som to uzavrieť to nie je s to, ale skôr s len otázka uhla známky držiak, takže teraz tu dole, keď spustím to znova, teraz Aj získať požadovaný výsledok. Teraz poďme urobiť mierne optimalizácie, len preto, že ste to nevideli. To je tak trochu nepríjemné, že som musieť bežať PHP priestoru hello.php, pretože v minulosti som mohol len napísať dot lomítko názov programu, ktorý je celkom pekné. Je to trochu lepší užívateľský zážitok. Tak to dopadá, môžete to urobiť v PHP s following-- I možno použiť celkom záhadný zaklínadlo na vrchole tu, ktorý sa všeobecne nazýva shebang, pričom sa jedná o ostrý symbol, aby som tak povedal, je to rana alebo výkričník. A teraz je cesta k programu na typické systému Linux, ktorý sa nazýva prostredie, alebo env. A to line-- dlhý príbeh short-- linka človek len hovorí, hej počítač, nájsť PHP tlmočníka pre mňa v životnom prostredí, nájsť v pamäti, aby som tak povedal. A čo je príjemné teraz, je že keď pôjdem tu dole, Môžem robiť dot lomítko ahoj bodka php, nebo-- hmm. Prístup zamietnutý. No, uvidíte ešte viac z toho s problémom set sedem, ak ste tak ešte neurobili, s oprávneniami. Ukazuje sa, že musím na vykonanie tohto príkazu s názvom [? chamod?] pre zmenu mode-- A plus x hello.php. Tento dodatočný musím [nepočuteľných] krok, ktorý hovorí môj počítač, aby hello.php spustiteľný súbor. A teraz sledujte, čo happens-- bodku lomítko hello.php, to jednoducho beží. Nepotrebujem špecifikovať tlmočník ešte. A môžem si to ešte krajšie, napriek tomu, keď som premenovať túto vec. Keby som presunúť hello.php len Hello-- takže oznámenia v ľavom hornom rohu, názov programu je naozaj už len Ahoj. Teraz som si, aby to vyzeralo ako program C, aj keď je to napísané v PHP-- alebo úprimne povedané akékoľvek číslo iných jazykov. Takže marginálne vylepšenia, žiadna funkčná rozdiel. Ale je to len trochu kuriozita teraz, takže môžete písať programy v akomkoľvek jazyku, a užívateľ nie je musí vedieť, alebo jedno, čo to sú. Dobre, poďme sa pozrieť na viac presvedčivý príklad teraz že som rozdúchala s predstihom. A to sa nazýva quote.php. A je k dispozícii on-line. A všimnite si, že je to celkom short-- ale je to program pre príkazový riadok, ktorý je bude vyzerať hore ceny akcií pre mňa, ktorý je v skutočnosti deje byť relevantné k problém nastaviť sedem. Takže poďme sa pozrieť, čo robím. Na samom vrchole som dostal otvorený držiak otáznik PHP. Potom mám túto líniu, čím som vyžadujúce súbor nazvaný functions.php-- budeme vidieť viac o tom za chvíľu, ale to je ako C je ostrej verzie patrí, kam chcete ísť zahŕňať ďalší súbor. PHP volá to vyžadujú, aj keď to tiež má obsahovať funkciu. A ukázalo sa, že je function.php Len niečo, čo som napísal pred triedou. Dal som ho do rovnakého adresára, pretože Chcel som vytknúť nejaký kód že by sme mohli chcieť použiť inde. Medzitým, budete pravdepodobne odvodiť, čo sa tu deje. To je trochu odlišný od C-, ale Čo mám na mysli tým zabezpečiť riadne používanie? Preložiť tento technicky. Za akých okolností som ja ukončenie programu, alebo ukončenie? Jo? Divákov: Ak nemáte dva argumenty príkazového riadka. DAVID Malan: Keď nemám na argumenty príkazového riadku. A nezabudnite, že jeden z týchto argumenty je meno programu sám. A druhá bude ďalšie slovo, ktoré som písať po riadku. Takže rovnako ako C, toto je môj spôsob kontroly, sa užívateľ spolupracovať a spustiť program, ako som zamýšľal? A teraz, je tu niečo trochu inak s C- prvom rade sme majú tento znak dolára, a čo dolár prihlásiť označujú v PHP? Len variabilné. To je all-- len premenná nasledovaná čo chcete skutočne hovoria. Všimnite si, že je niečo chýba z môjho programu PHP, rovnako ako to chýbalo posledná týždeň, proti C, čo je to, čo? A typy, ale aj niečo iné. Neexistuje žiadny niečo function-- hlavnú funkciu. Neexistuje žiadna hlavné funkcie. Práve ste začať písať Váš kód, bez toho aby museli sa starať o pomerne ľubovoľný konvencie pomenovanie niektoré východiskové Funkcie main. Takže arg C je naozaj len globálne premennú že tlmočníka dáva k dispozícii ku mne. Teraz, to je zaujímavé. Tak sa pozrite na veci. Znak dolára stock je na odišiel, to je môj variabilný. Na pravej strane, tam je vraj funkcie v PHP volal, že vyhľadávanie Ja som okolo svojej poslednej príkazový riadok Argument to-- bez ohľadu na slovo. A uvidíme, ako to pracuje v okamihu. A potom nakoniec Hlásim cenu. Som vytlačenie jedného Podiel také a také. A pamätajte si, to je Spôsob, PHP-- spôsobom v PHP-- kde nemusíte robiť znak dolára S ešte. Stačí použiť zložené zátvorky a zapojte v nejakej premennej. Nemusíte sa starať o použitie printf rovnakým spôsobom. A ako stranou, keď dáte premenné vnútri dvojitých úvodzoviek, ako je tento, používate ozdobný techniky volal variabilný interpolácie. Znamená to len pripojiť premennú tu. A ako stranou, niektorí z vás, ktorí prišli z iných programovacích prostredí, nesmiete používať apostrofy okolo reťazca to urobiť. Je nutné použiť úvodzovky pre variabilný interpolácie do práce. Inak budete doslova vidieť tie zložené zátvorky. Tak konečne, poďme do toho a spustiť to. Dovoľte mi, aby môj terminál trochu väčšie. Nechaj ma ísť dopredu a spustite vnútri mojej citácie adresára. [? CDsource?] [? AM?] [? citát?] PHP quote bodka PHP, a budem hľadať niečo, ako GOOG, ktorá je jej burzový symbol, a jedna akcia novým názvom, Abeceda Inc, stojí $ 717 k dnešnému dňu. Dobre, ak chceme spustiť tento znova, niekto majú ďalšie burzové chcú vzhliadať? Myslím si, že je Microsoft tento, MSFT-- $. 53 Myslím si, že Yahoo je možno to. A Facebook je. Takže to, čo je tento program robí? Mágia sa zdá byť zakotvené v tejto funkcii vyhľadávania. Takže poďme sa rýchlo pozrieť. Ukazuje sa, že nepríde s PHP, je to vo functions.php. A nebudeme prechádzať Tento veľmi podrobne, nevšimnúť operatívne slovo je tu že na riadku šiesteho functions.php-- Doslova som povedať funkciu. Aj uveďte názov svojej funkcie. Potom som určiť akýkoľvek parametre, alebo parametre, Chcem, že funkcia take-- žiadny typ. A potom som ju realizovať. A ja budem mávať moju ruku na implementáciu, pretože je to celkom moderný pravdu teraz, ale budeme ho vidieť znova vlastne v týždni v probléme nastavení sedem. Ale môžem vyčistiť toto hore, taky. Tiež som súčasťou dnešné kód verzia citátu, ktorý nemá súbor bodka PHP. Pretože to, čo je pravdepodobne u Horná časť relácie len citovať? To tzv shebang-- docela mystický zaklínadlo že hovorí, že nájsť PHP a potom spustiť na môj kód tu. Dobre, takže prináša nás, kde sme skončili Posledná time-- aj keď s niektoré pokročilejšie príklady. Akékoľvek otázky doteraz o PHP alebo čo robíme? No-- v poriadku. Jo? Publikum: Vnútri HTML súbory, robiť vás-- [? áno?] [? stačí zavolať to?] a [nepočuteľný] PHP súbor? DAVID Malan: Dobrá otázka. Vo webovom súvislostiach, ktoré sme doslova o prechode na, nechcete použiť tzv shebang v hornej časti, pretože web server-- často program s názvom Apache alebo Microsoft IIS, Internet Information Server, alebo ľubovoľný počet ďalších web server softvér, vie, že keď vidí, súbor bodka PHP, že to by mal bežať tlmočníka na to. Nevyzerá to v tej prvej línii. Takže tento prvý línie trik je len, keď ste písanie príkazového riadku programs-- ktoré nebudeme robiť výborný často, ale je to náš spôsob premostenia Náš príklad C až teraz našej PHP. Takže poďme skutočne preklenúť tento svet z príkazového riadku svete, na web pomocou nasledujúceho postupu. Nechaj ma ísť dopredu a kresliť cez na chvíľku tu. Takže ak budeme mať webový server, alebo skôr ak máme svoj laptop tu, ktoré budem čerpať takhle. A tu máme internet v nejakej forme. A potom tu máme server v building-- to je, ako internet works-- a tu je server s niektorými svetla možná. Čo sa to vlastne deje medzi týmito dvoma prípojkami? Takže v tejto budove je webový server. To je len počítač že to beh niektorých operačných system-- možná zadarmo softvér nazvaný Apache, ktorý CS50 IDE beží. Takže sa môžete skutočne myslíte o tejto budovy ako budova v ktorý CSt0 IDE je uložený. To je miesto, kde všetky z vás má účty, kde sú všetky z vás, mať svoj vlastný webový server beh, všetky z vás, majú svoje vlastné jedinečné adresy URL, ako sme začali diskutovať, a uvidíte viac P. set šesť. Tu je môj notebook niekde inde na internete. A tak, keď som navštíviť URL, ktoré patria sa mi, že internetový prevádzka sa deje sa k serveru, na serveri Príjem HTTP request-- ako keď si index.html a to je odpoveď na túto webovú stránku. Tak to je všeobecný vzor. Vzhľadom k tomu, všetko hore Až do teraz, dnes všetko sa deje len v hranice tejto budovy. Bol som pomocou môjho notebooku, ale Bol som pripojený k CS50 IDE, takže všetky z týchto programov som išiel bola vo vnútri tohto servera, sám. Ale teraz, začnime opätovné využitie PHP napísať nejaké skutočné programy, ktoré sú podávané prostredníctvom webového servera. A ako to urobiť, ja idem do veľa príkladov že predstaví túto myšlienku tu. Takže to je tak trochu fantázie spôsob, ako popisujúci programovací paradigma. A v skutočnosti, ako ukončiť CS50 alebo pracovať na záverečných prác, alebo sa niektorí nasledujú na triede, začnete vidieť, že world-- najmä vyrastal s jazykmi ako C že sú super nízke level-- Uvedomujem si, že tam je lepšie spôsoby písania softvéru. Existujú určité vzory môžete sledovať, niektoré spôsoby organizácie súborov a spôsoby, ako pomenovanie svoje funkcie, takže dlhý príbeh krátky, svet má prísť s celou partiou skratiek a mená pre spôsoby programovania. To sú len techniky, môžete použiť. A jeden z nich sa volá MVC, Pre Model View Controller. A to je len pre , Teraz príliš komplikované spôsob, ako povedať, ako by ste mali rozvrhnúť webové stránky PHP báze, v našom prípade. Ako organizovať súbory, ako si zorganizovať svoju logiku, spôsobom, ktorý uľahčuje napísať zložitejšie webové stránky? A skutočne, budeme rýchlo tam si s p-set sedem. Takže vo svete MVC, budete vidieť, že náš kód možno všeobecne charakterizovať ako buď kódu modelu, alebo kód radič, alebo zobrazenie kódu. A ja idem na zjednodušovať ju ako follows-- regulátor je mozog vášho programu, to je miesto, kde všetky zaujímavá logika sa stane. Takže všetko, čo sme boli písanie tak ďaleko v triede, je niečo ako radiče code-- to ovládanie váš program, vaše slučky, vaše podmienky, vaša funkcia a premenné a všetko. Pohľady, teraz, sa bude trochu jasnejšie vo svete webu. Pohľad je estetika na vašich webových stránkach. To je to, čo používateľ sees-- obrazy, tabuľky HTML, HTML tagy, a všetky z toho, všetky našuchorený estetický veci, ktoré nie je tak ťažké písať, ale je len to, čo ste generovanie, je tzv pohľad, estetike. A model nakoniec sa deje byť databázy, ktoré stuff-- začneme potápanie do všetkých Čím viac sa túto stredu. Takže regulátor je logika, pohľad je estetická veci, a model bude, kde ukladáme naše aktuálne dáta. Takže poďme sa pozrieť na to konkrétnejšie s nasledujúcom príklade. Chystám sa ísť do môjho adresára tu dnešné zdroje code--, z ktorých všetky je k dispozícii on-line. A ja idem do verzie nula. A tu je-- nazvime to na verzia stránok CS50 je nula. Nie je toho veľa, tu vôbec. Je to veľmi jednoduché webové stránky, ktorá je Pravdepodobne používate, čo HTML tags-- práve Asi z minulých príkladov? Čo je to? H1-- pravdepodobne za to veľký tučný názov, že logo hore vrchol, CS50. A čo je ešte v hre? Jo? Divákov: Nečíslovaný zoznam. DAVID Malan: Nečíslovaný list-- tak UL tag a možno pár LI tagy. A ak si nepamätáte nich, to úprimne nezáleží. Jedná sa o akési našuchorený implementačné podrobnosti HTML že ste sa rýchlo vyhľadať a ste späť na vašej ceste. Budeme sa viac zamerať na programovanie myšlienky, ktoré sú šťavnatejšie kúsky. Tak nech to len vziať rýchly pozrite sa na HTML-- a naozaj keď som otvoriť zdroj zobrazenie tu, Jo, to je presne to, čo sa tu deje. Je tu značku UL. Vnorené vo vnútri, ktorý je Li tagy. A potom som si vypožičal URL skutočného osnov tu. A potom v lectures.php je zrejme ďalšie dynamicky generované stránky že to bude mať, poďme see-- ah, Prvé dva týždne prednášky. Tak týždeň nula a týždeň jednu, poďme pozrite sa na tohle-- keby som zobraziť zdrojový kód stránky, tiež super jednoduché. Tie vedú na dve stránky volal week0.php, a week1.php. Takže zvážte teraz, čo sa deje. Keď kliknem na week0.php, môj notebook je podanie žiadosti o week0.php. Webový server, tiež známy ako, CS50 IDE, prijíma, že virtuálne obálku. Je to vidieť správu ako, dostať week0.php. To je potom interpretácii súboru, top nadol, doľava right-- súboru volal week0.php-- a pľuvať výsledky. Takže vnútri tohto súboru, week0.php, musí byť riadiace logika, ktorá je generovanie tento HTML, a budeme čoskoro vidieť, že. Ale teraz mi dovoľte, aby som kliknite na týždeň nula, a teraz máme stredu a piatok, a teraz máme sklíčka pomaly týždni nula. A možno pamätáte toto od pri ceste späť. Tak to je všetko, tento web je robí. Takže poďme zvážiť, ako sa to robí. Chystám sa vrátiť do zdrojový kód tu, v CS50 IDE, a ja idem otvoriť index.php. V hornej časti tohto súboru je banda komentárov. A potom sa v polovici tohto súboru ju, Ukázalo sa, že nie je žiadny PHP kód vôbec. Pretože ak nemáte niektorý z otvorený držiak otáznik PHP tagy, ste zatiaľ len dať HTML. Vzhľadom k tomu, čo PHP interpret má robiť, je, keď to číta tento file-- zhora nadol, zľava right-- to len interpretuje kód to vidí medzi tieto lomené zátvorky otáznik. A niečo iné, že to tak nie je uznať ako PHP, to proste vypľuje. A HTML patrí medzi veci to bude len vypľuť. Takže tento súbor mohol mať boli povolaní index.html, ale ja som vymenovať všetko dot PHP ako odrazový mostík. Lectures.php-- podobne nezaujatý, je to len nejaký HTML. Week0.php, podobne len niektoré HTML. Ale teraz poďme dať na príslovečný inžinierstva klobúk, a zvážiť, ako môžeme vylepšiť to. Nie je ťažké to urobiť, ale som tak trochu prenesené do kopírovanie a vkladanie. A v skutočnosti, keď som vytvoriť dvojstĺpcový týždeň ste viem, čo som asi robiť? Chystám sa ísť do week1.php, ja som zameriam na všetko. Chystám sa ho kopírovať, vložiť ho do nového súboru s názvom week2.php, vyladiť niektoré adresy URL, a je na ceste. Takže na základe toho, čo máme Videl v C už, to nie je ono, dúfajme. Kopírovať, vložiť zriedka správnym riešením. Takže to, čo môžeme začať urobiť pre zlepšenie to? Tam, kde sú príležitosti pre lepší dizajn? V čase, keď som sa dostať do týždeň osem, to ide byť naozaj otravné ak chcem zmeniť písmo každého jedného z mojej stránky, alebo keď budem chcieť zmeniť štruktúru rozvrhnutie. Tak kde je príležitosť pre lepší dizajn? Dobre, poďme zvážiť, čo je zdieľané všetky tieto súbory. Tu je týždeň jednu, tu týždeň nula, tu je lectures.php, tu je to, čo index.php-- je rovnaký a Aký je rozdiel, zhruba povedané, v každom z týchto súborov? Jo? Divákov: [Nepočuteľné] DAVID Malan: OK, dobre. Takže tam je vzor, ​​iste, pričom zakaždým, keď som sa vybrať prednáška I, Mal by som byť generovanie veľmi podobné vyzerajúce stránky. A tak snáď môžem využiť skutočnosť, že v skutočnosti, vedome numericky indexované našu lectures-- či môžem dať ešte viac slov vašej odpovede. A čo je jediná vec, naozaj, že to mení medzi týždňa one-- a dovoľte mi prejdite nadol, takže je to zhruba v rovnakej place-- tak tu je týždeň nula, zhruba v hornej časti. Tu je týždeň raz, týždeň nula, týždeň jedným, týždeň nula. OK, doslova ak viete, žiadny program vôbec, toto je teraz len ako keď vzor zodpovedajúce hru. Takže to, čo je? Jo? Divákov: [Nepočuteľné] DAVID Malan: Dobrý, tak titul sa mení, niekedy tak trochu. Zero bude, samozrejme, na jednu. To isté sa deje v tagu H1. A nemáme dosť vidieť, ako ľahko, pretože URL sú trochu dlhšia. Ale tie adresy URL sa mení len nepatrne. Ale to, čo sa nemení je, trúfam si povedať, väčšina obsahu page-- značka HTML je rovnaký, hlava je rovnaké, titul je takmer rovnaký, telo je rovnaký, a skoro všetko ostatné je rovnaké, okrem tie malé vylepšenia. Tak ako môžeme ísť o factoring niečo z toho von? No dovoľte mi navrhnúť presne že v ďalšej verzii. Tak tu vo verzii jedna, mám presný rovnaké súbory, plus pár ďalších. Tu je index.php-- a to aj v prípade ste nikdy nevideli PHP predtým, čo mám asi robiť to vyriešiť problem-- základe toho, čo vidíte tu? Jo, je to mierny záväzku? Nie? Áno, ísť ďalej. Divákov: [Nepočuteľné] DAVID Malan: Jo. Divákov: [Nepočuteľné] DAVID Malan: Potrebujem, aby ste hovorí len trochu hlasnejšie. Divákov: [Nepočuteľné] DAVID Malan: OK, dobre. A think-- som, že ťažké vás-- ale počujem že to, čo ste sa dostal na je, že tagy, ktoré boli bežné až hore, a značky, ktoré boli bežné na dno, boli teraz vytknúť, alebo zaradený k aké súbory? Header.php a footer.php-- a ideme aby sa niektoré vylepšenia na riešiť obavy ste práve zvýšil o počte striedanie, pre Napríklad, keď som ťa počul správne. Ale to sa zdá byť podstata toho. Pokiaľ došlo k obrovské množstvo redundancia v hornej časti stránky, a obrovské množstvo redundancia v dolnej časti, poďme doslova highlight a znížiť, že obsah out, dať do samostatnej file--, rovnako ako myšlienka CSS, kde sme vytknúť veľmi podobné estetika, dal že v oddelenom dot PHP súboru použite vyžadujú mechanism-- ktorý je ako C ostrý include-- ktorý je v podstate ako hovoriť ísť chytiť obsah header.php, a kopírovať a vložiť tu. Ale čo to znamená je, že teraz v index.php, mám tie dva riadky. V lectures.php som tiež majú tieto dva riadky. V week0.php som tiež majú tieto dva riadky. Takže teraz, keď chcem zmeniť názov zo všetkých mojich stránkach, alebo chcem zmeniť základná štruktúra, Ja ju teraz môže zmeniť len v jednom mieste, alebo dva places-- hlavičky a päty, v tomto poradí. Teraz začína Kódexu sa pozrieť trochu záhadný, že jo? Ale či si myslíte, že o tom, čo na stránke je doing-- či som požadujúcich week0.php, rovnako ako na kreslenie cez here-- pri požiadavke week0.php, čo to znamená? Doslova je tento súbor požaduje prehliadači. Na webovú server-- tiež známy ako CS50 ID-- chytí to Súbor, week0.php, a číta to zhora nadol, zľava doprava. Na prvom riadku, okamžite narazí otvorený držiak otáznik PHP, vyžadujú header bodka PHP, a tak čo interpret PHP does--, ktorý je vstavaný do webu Server, pretože sme vopred konfigurované to pre vás-- prepne sa automaticky do header.php, skopíruje obsah, vloží je tu. Ale potom tlmočnícke stretnutie otáznik blízko držiak, takže je to všetko urobil myslí. Teraz to len slepo vypľuje out riadkov dva až sedem, pretože je to len surové HTML. Dostane na riadok osem, a to robí Rovnaký mágia again-- otvorenie súboru, popada obsah, a vyžadovať, aby oni alebo ich vkladanie vpravo potom ani tam. Ale ja som len zmieňoval sa o chybu. Toto je čiastočný krok späť, pretože keď sa pozrieme na header.php, Ja som trochu znížiť roh. Aké funkcie som sa vzdať, aby k získaniu tohto arguable lepší dizajn? Jo? Divákov: [Nepočuteľné] DAVID Malan: Jo, som tak trochu kosenia netriviálne roh. Ste poukázal na to, že to, čo sa mení bol názov, číslo v názve, a číslo v H1. Takže moje riešenie bolo, OK, nech to len premenovať stránku, a nezaoberá, že problém vôbec. Takže to je čiastočný krok späť pre istotu. Ale čo je pozoruhodné tu je, že to, čo som urobil inak je factored out všetky bežné veci. A v footer.php, Všimol som si, factored mimo to všetko, aj keď menšie, spoločnej veci. Tak som potrebné nejako teraz bude môcť ďalší krok vpred, a opraviť že právny nárok na otázky. Takže poďme to urobiť. Nechaj ma ísť do mojej druhej verzii tu, čo opäť má rovnaké súbory s výnimkou jedného nový prírastok. A je to trochu viac verbose, ale uvidíme, či budeme môže dráždiť od seba to, čo sa tu deje. Takže namiesto toho, vyžadujúce header.php, a footer.php, Pripadá mi, že sa vyžaduje iba jeden file-- zavolal, samozrejme, helpers.php. A dovoľte mi, aby som teraz stanoviť, to, čo je vo vnútri helpers.php je len banda funkciou že som napísal, rovnako ako predtým. Ale volal som to helpers.php. Teraz sa zdá, v riadok tri a 10, ja som volá dve functions-- vykreslenie záhlavia, päty render. Tí, ktorí neprídu s PHP, som napísal ty sám. A dal som ich do helpers.php. Teraz sme len videli túto syntax raz, a bolo to výborný krátky. Ale to je zrejme argument k tomu, aby záhlavie, funkcie. Prečo mám vedieť, že? Tak tu je blízky dvorenia, tu je otvorená párenia. A samozrejme, rovnako ako v C, niečo medzi týmito zátvorkami je input-- alebo argument funkcie. Aký je dátový typ tohto argumentu, na základe toho, čo som zvýraznené? Čo tie hranaté zátvorky ukazujú, na základe posledného týždňa? Jo, to je array-- konkrétne asociatívne pole. A to síce syntax je trochu funky, ale to je len okolo v jednom páre kľúčov hodnoty. Kľúčom k úspechu je, citujem koniec citátu titul, a je hodnota CS50. Ak by sme to urobil v C, to by mohlo namiesto toho vyzerajú skôr ako to, len citovať koniec citátu CS50-- alebo v skutočnosti by to bolo kučeravé traky, alebo niečo podobné, že v C, kde kľúč je nula, a hodnota CS50. Ale opäť, v PHP, hoci syntax je opäť trochu divný, to vám umožní odovzdať slová namiesto čísla spájať kľúčov s hodnotami. Takže čo to všetko znamená? Ak by som ísť do helpers.php, Pozrime sa na túto funkciu. renderHeader.php, skôr renderHeader je môj funkcie, a viem, že preto, že vidím, Funkcia kľúčové slovo tu. To je nová z C- to zjavne berie argument s názvom data-- ale ja som mohol nazval nič, ale volal som to údaje, stačí, aby sa trochu clean-- a stačí sa hádať, a to najmä ak ste naprogramovaný v niektorých iných vyššiu úroveň jazyka predtým, niečo nad C, koncepčne. Čo rovné otvorený držiak hranatou zátvorku pravdepodobne znamená? Alebo čo to môže znamenať? Už sme nevideli to v C. Jo? Prázdne pole. Konkrétne to znamená, že v prípade, Užívateľ nevolá renderHeader s argumentom, ja som stále bude mať argument s názvom dát, ale jeho predvolená hodnota bude prázdne pole. Takže je to len pekné pohodlie. Ja nemusím kričať na užívateľov, alebo hovoriť ste použili môj funkcie zle. Ja si len dať užívateľovi východzí hodnota, pokiaľ je mi nijako zvlášť nezaujíma. Teraz je táto funkcia, ja som bude mávať svoje ruky na. Ale táto funkcia umožňuje extrakt nám odovzdať tieto premenné v dátach do header.php nasledujúcim spôsobom. A to je posledný kus, Myslím si, funky syntaxe. Tu je môj nový verzia z header.php-- to hovorieval, a to doslova, otvorený držiak titul CS50, a že to bolo. A to isté pre H1. Teraz to vraj hovorí, že niečo celkom funky. A dovoľte mi, aby som toto zjednodušenie na chvíľu takto. To je to, čo som zmenil svoj názov, aby bol. Avšak, je to už trochu škaredý neustále otvorené zátvorky s PHP, a potom použite funkciu tlače. Ukazuje sa, že PHP má skratku zápis pre to, ktoré je len znamienko rovnosti, čo je technicky Funkcia tzv echo miesto tlače, ale je to to isté, efektívne. To len vyzerá lepšie. Je to len syntaktickou cukor, ak chcete, že robí môj kód vyzerať trochu lepšie. Ale ukazuje sa, a uvidíme to znova netrvalo dlho, musíme nazývať protivne dlho volanie funkcie Špeciálne znaky v HTML PHP, pretože sa ukázalo, tam sú niektoré vstupy že užívateľ by mohla poskytnúť nám, alebo že používatelia môžu dať nám, ktoré sa chystáte zlomiť naše stránky. Ale uvidíme, že budúci týždeň s JavaScript. Ale teraz, len viem, že tento súbor, headers.php, jednoducho má titul, ktorý Aj prešiel v roku, to robiť istý, že je bezpečné pre vstrekovanie do pásu strana, a to vypľuje ako môj titul a ako môj H1. Takže keď som sa ísť do tejto verzie teraz, Všimnite si, že prednášky má jeho titul späť, týždeň zero má svoj názov späť, a naozaj, HTML som generovanie je zhodný s čo môj prvý verziu was-- s výnimkou pre moje bielymi znakmi, pretože som začal formátovanie môj kód trochu inak. Ale ja som generované všetky kód mi záleží. Dovoľte mi teda pozastaviť len na chvíľu a vidieť ak tam je nejaké otázky alebo zmätenosťou som vytvoril. Dobre, tak sa poďme otočiť trochu ťažšie tu aby zistil, či tam je príležitosť pre zlepšenie. Helpers.php tiež mal toto funkcie, tzv renderFooter. A čo je pozoruhodné, o renderHeader, a renderFooter? A opäť, pre dnešné účely, know že funkcia extrakt je len môj spôsob odovzdávania argumentov do header.php a footer.php. Prosím? Divákov: [Nepočuteľné] DAVID Malan: Jo, len som zmene vyžadujú riadok. Takže doslova, ja som spáchal hriech kopírovanie a vkladanie, napriek tomu znova. Nie je to obrovské množstvo liniek, ale keď príde on-- keď som kopírovanie a vkladanie všetko stačí zmeniť jednu malú slovo, a jedna malá slovo, ktoré Alan body von je päta tu oproti hlavičky tu. Inak je všetko totožné, s výnimkou, Samozrejme, mená funkciu má. Takže to, čo by sme mohli robiť lepšie? No dovoľte mi, aby som otvoriť túto verziu tu, pričom v helpers.php, prečo nie ja len získať málo múdrejší o tom? Napíšte trochu zložitejšie kód, ale hovoria to robí? Tak čo som to zásadne zmenilo? To trvá argument now-- dva argumenty, dáta stále. A čo potom je prvý názov pravdepodobne sa používa pre, na základe toho, čo čítate tu? Aj keď niektoré z syntaxe je stále ešte nový. Čo je znak dolára šablóna? Prosím? Divákov: hlavičky alebo päty. DAVID Malan: hlavičky alebo päty. Takže sa zdá, som sa rozhodol, že v prípade, jediná vec, ktorá sa mení je to, čo chcem, šablóna na print-- a šablóny Mám na mysli to je plán pre kód, ktorý chcem výstup, ale chcem sa pripojiť v niektorých values-- takže keď je to len hlavičky alebo päty, prečo nie ja parametrizácii to a zavolajte znak argumentom dolára šablóna? A potom sa to funky syntaxe mi umožňuje pre vytvorenie cesty v premennej sem. Takže znak dolára cesta je variabilný. To, čo robí túto syntax áno, ak ste oboznámení? Jo? Divákov: [Nepočuteľné] DAVID Malan: Presne tak. Ak je šablóna je, citujem koniec citátu, hlavičky, alebo ak šablóna je, quote koniec citátu, päty, že linka že som sa zvýrazní, linka osem, je jednoducho pričom toto meno, ako je záhlavie, a zreťazenie ho bodovým PHP. Takže sme nemali tento operátor v C. Tento operátor bodka je úžasná vec v PHP--, ak ste oboznámení s JavaScript alebo Java, môžete použiť tlačidla plus prihlásiť robiť zreťazenie. V jazyku C, je to bolesť v neck-- a ja som moc ľúto, v p-set šesť, budete musieť urobiť tohle-- to je bolesť v krku zřetězit reťazca. Prečo? No, pretože ak máte reťazec, ktorý je tak dlho, a iný reťazec, ktorý je tak dlho, môžete nielen pripojiť dohromady. Čo namiesto toho musieť urobiť v C? Jo? Divákov: [Nepočuteľné] DAVID Malan: Musíte malloc pamäť, alebo použiť pole v zásobníku. A skutočne sa aby to pole dostatočne veľká aby sa zmestili to a to, plus spätné lomítko nula. Potom zřetězit dohromady s použitím miešať mačku alebo ručne pomocou slučky for, alebo ľubovoľný počet techník. A my vám ukázať pár v p-set šesť. Je to bolesť v krku. A to je skutočne to, čo mám na mysli o to proti tohle-- ako je C v porovnaní s PHP. Môžete len získať tak oveľa viac funkcionalita zdarma, takže sa môžete sústrediť, v ideálnom prípade, na zábavu časť kódovanie sa projekt, ktorý chcete vyriešiť, skôr než nízka úroveň detailov. Takže to len vytvára header.php alebo footer.php založená na ktorý z nich mám nazvať. A skutočne, keď idem do index.php, oznámenie všetko, čo sa changed-- Miesto volanie vykreslenie hlavičky alebo päty render, Volám činí, prípadne s využitím názov šablóny, ktorú chcem robiť. A uvidíte aj to, v probléme set sedem, v ktorom by sme vám umožní použiť rovnaká funkcia, aby sa zväzky a zväzky rôznych webových stránkach. Takže skôr ako býva príliš viac na tie details-- ktorý uvidíte opäť v Problém set siedmej poďme sa pozrieť na teraz začiatku roztoku k viac zaujímavý problém. Doteraz nič máme urobil má uložených dát. V skutočnosti, jediný čas, ktorý sme kedy uložili niečo, čo sme urobili v tejto triede je, keď sme mali veľmi jednoduchú ukážku chvíľu späť, pričom sme použili vstupno-výstupný súbor v jazyku C, a myslím, že som napísal v mojom mene, a Hannah meno, a Máriinho meno, alebo možno Andyho meno, a potom sme uložili vo formáte CSV file-- oddelené čiarkou hodnoty súboru. A sme fopen-- myslím, sme použili fprintf ak si spomínam, a uložili sme súbor. Teraz, že je najjednoduchšie forma databázy. Ak chcete vytvoriť webové stránky pre Program frosh IM, pričom prváci môžete zaregistrovať na šport, v ideálnom prípade vás chcete urobiť niečo s týmito dátami. Minulý týždeň sme neurobili nič s data-- sme práve povedali, ste registrovaní, naozaj nie. Alebo možno som e-mailom Proctor, a bolo to. Ale bolo by pekné, keby to šlo dať, že Proctor súboru vo formáte CSV, ako súboru programu Excel. Alebo ešte lepšie, bolo by to bolo pekné, keby som mohol dal mená týchto užívateľov a koľaji mená a všetky, ktoré do databázy, ktorá len žije na veky, kým vybrať zmazať dáta. Databázy, ktorá umožňuje mi na dotaz informácie. A naozaj, že to, čo je databáza. Predstavujeme dnes, a Budúci týždeň tiež technológia volal SQL-- štruktúrovaného dotazu Jazyk, ktorý je iný jazyk. Je to v podstate programovaní jazyka, ale pre databázy. A databázy pre túto chvíľu, len myslieť ako super efektné verziu Microsoft Excel alebo Google Tabuľkami alebo čísla Apple. Je to všeobecne program, ktorý umožňuje ukladať veľa dát v radoch a stĺpcoch, úplne ako by ste mohli v programe Excel. Ale čo je pekné, najmä v prípade, nie sme výborný oboznámení s aplikáciou Excel, čo SQL vám umožní urobiť, je to otázka Informácie o písaní riadkov kódu kde je to možné, aj keď vaše Databáza má milión riadkov v ňom, môžete nájsť veci, super rýchly. V skutočnosti, Excel je obzvlášť zlé veľkých dátových súborov. A v skutočnosti, až na pár Pred rokmi, ukázalo sa, Excel by umožnila iba ukladať až 65535 radu data--, ktoré znie ako veľa, ale u čas som bol postgraduálny študent, a Pamätám si zakopol to preto, že som bol generovanie CSV súbory pre svojho výskumu a ja Chcel, aby ich rýchlo analyzovať jednoduchým otvorením v programe Excel. Samozrejme, môj počítač práve havaroval, preto, že som mal viac ako 65.000 riadkov. Ale kdeže asi 65.535 pochádza? Čo to robí Microsoft, podľa všetkého? Ak ste dobrý so svojimi právomocami dvoch? Jo, oni boli za použitia 16-bit hodnota reprezentovať číslo riadka. A za druhé až 16 je 65,536-- mínus jedna, pretože ak budete nulový index znamená, že bol väčšina počet riadkov som mohol mať. A to bol len rozhodnutie o dizajne. Uložením 16 bitov, oni ma obmedzený na 16.000 riadkov namiesto 4 miliardy, ktoré som mohol mať v ideálnom prípade. Ale teraz, budeme zaviesť to viac v internetovom kontexte. A čo je pekné o SQL je, že aj aj keď je to dosť silný a dosť sofistikovaný, je to naozaj varí až na štyri kľúčové operácie, štyri kľúčové funkcie, pokiaľ will-- Select, pre získavanie dát, vyhľadávanie pre dáta; odstrániť alebo mazanie dát; vložka pre pridávanie riadkov do databázy; a aktualizácie. Takže ak ste niekedy používali Google Tabuľky, Apple, Microsoft Numbers Excel, ste popravený, s najväčšou pravdepodobnosťou, všetko z týchto operácií ako ľudské strany len pomocou klávesnice a mouse-- vkladanie dát, vočima zvoľte alebo vyhľadávať dáta, alebo aktualizovať údaje či odstraňovať dáta. Takže čo to znamená? Dobre, predinštalované v CS50 IDE je program s názvom MySQL. Je to zadarmo, open-source databázy, ktorá je super populárne. Facebook, napríklad, používa to, aby to deň, okrem iného nástroje, ktoré používajú. A kopa veľmi obľúbené webové stránky používať to z veľkej časti preto, že je to rýchle, a pretože je to zadarmo. Aj keď určite existujú alternatívy. A niektorí z vás možno fušovať s alternatívy pre záverečných prác. Jedná sa o snímku obrazovky, zatiaľ, z webový nástroj s názvom phpMyAdmin. Je to náhoda, že Tento webový nástroj je tiež napísaný v jazyku, PHP, ale čo to znamená robiť Je nám webová interface do databázy. Vzhľadom k tomu, MySQL je zvyčajne niečo, vás historicky, by v interakcii s iba s príkazového riadku. A to by bolo super nepríjemné a Arcane mať zadajte príkazy textové vyberte Údaje, vložiť dáta, a mazať dáta. Takže niektorí ľudia na internete napísal program, internetový že dajte nám zvládnuť dáta v našej databáze. Je to ako dvojitým kliknutím na Excel, a beží jej webovej verzie a. A čo budete používať to pre nakoniec budúci týždeň, a to v p-set šesť, ale je vybudovať niečo, čo volal CS50 Financie, ktorý bude mať databázu Užívatelia, s užívateľských mien a hesiel, Dolár sumy, ktoré majú vo svojich bankových účtoch. Je to bude niečo, čo použiť na uloženie symboly a množstvo populácií, ktoré užívatelia si kúpil za použitia virtuálnej dolárov, ktoré vám dám im. A to bude umožniť užívateľom registrovať pre vaše stránky, takže aj vašich priateľov môžu naladiť na vašich webových stránkach a vlastne registrovať, prihlásenie a pohrajte a pokúsiť sa nájsť chybu v kóde, a pokúsiť sa nájsť chyby na svoje webové stránky. A oni si jednoducho zaregistrovať pridávanie sa, účinne, pomocou kódu, píšete do databázy. Napríklad, to je rýchly obrazovky z toho, čo je databáza by mohla vyzerať. To bolo od jedného z minuloročnej solutions-- to je ako mini Excel súboru, uložené v našej databáze, uložené v tomto softvér nazvaný MySQL. Na ľavej strane, som zjavne keďže, každému užívateľovi jedinečné číslo. V druhom stĺpci, som dal každý užívateľ name-- môj vlastný medzi nimi. A na pravej strane, Dal som im hash. Teraz je to vlastne heslo, ale to nie je obyčajný text hesla. Je to šifrované heslo, ak budete, alebo hash hesla. Čo sa vrátime do onedlho. Ale ak ste niekedy čítal článok o tom, ako Vaše heslo na nejaké banke alebo niektoré webová stránka mohla byť ohrozená, to môže všeobecne znamenať jednu z dvoch vecí. Tak to je len výňatok zo šiestich užívateľov. Všetci z vás teraz môže prísť out cez hacking alebo praskliny čo hesla našich šesť ľudí sú. Ale ak ste niekedy dostali výstraha alebo ospravedlnenie od spoločnosti alebo webové stránky reči, Ospravedlňujem sa, hacker vlámal do našej databázy, asi by ste mali zmeniť svoj heslo, čo by to znamenalo? No, jeden mohol znamenať, že spoločnosť bola viac hlúpy, a bol uložením hesla v stĺpci, ako je tento, nezašifrované. Čo znamená, že protivníka, ktorý ukradol databázy, doslova pozná vaše Užívateľské meno a heslo. To je ten najhorší možný scenár. A ako uvidíte v p-set sedem, tak ľahko, aby sa zabránilo. Neexistuje absolútne žiadne ospravedlnenie pre to forma hlúposti v dnešnom Internete. Two-- a nájdeme nejaké články svedčiť skutočnosť, že táto stále sa stane, nonetheless-- dva, možno protivník ukradol túto verziu databázy. Čo je stále ešte trochu zle, pretože teraz vedia, že mám šesť zákazníkov, Viem, že používateľské mená z týchto šiestich zákazníkov, a ja viem, že šifrované verzia alebo Hashed verzie, hesiel týchto šiestich zákazníkov. Ale každý z vás, ktorí by mohlo urobil [? Hacker 2?] kde ste popraskané hesiel, alebo vzal Pozrite sa na tejto verzie problému set, prečo je to ešte trochu znepokojujúce v prípade, že protivník pozná vaše hash heslá? Divákov: Vzhľadom k tomu, čo mohli zadajte celý slovník do hash funkcie. A ak vaše heslo je slovník Slovo, [? oni môžu len match--?] DAVID Malan: Presne tak, protivník môžete len písať kód, ako niektorí z vás urobil pre [? Hacker?] 2, kedy ste iterácii všetky slová v slovníku, alebo všetky možné kombinácie A až Z a jedna až nine-- ktorý znie ako veľa, a to je. Ale pre počítač, je to sakramentsky rýchlo. A v skutočnosti, že bolo bod [? Hacker 2 ,?] Bol aby sa veci, ktoré doslova vyzerá to, a spätne analyzovať čo to vlastne bolo. Takže sa pozrieme na to, ako môžeme uložiť tento efektívnejšie. Ukázalo sa, našťastie v MySQL, tam sú bude dátové typy. A jeden z legrace častí o navrhovanie databáz, aby som bol úprimný, je vlastne rozhodovanie pre seba Ako by ste mali reprezentovať dáta? Ak by ste predstavujú telefónne číslo as int, ako veľký číslo alebo dlhé? Alebo si skutočne urobiť ako sled znakov? A tam môže byť veľmi netriviálne dôsledky tohto. V skutočnosti jeden z Najskôr, zábava German príbehy je, keď Mark Zuckerberg budoval Facebook, to bolo pôvodne napísané v, a napriek tomu je z veľkej časti napísaný v PHP. A jeden z najväčších problémov oni stáli na počiatku bola merítka. Keď sa pridával do školy po tom, čo Škola po škole, pokiaľ je mi známe, jeden z originálnych riešení bol v podstate kopírovať a vložiť niektoré z databáz a niektoré z kódu, takže Harvard bol bežiaci na vlastný server a MIT bežal na vlastnom serveri. A to bol dôvod, prečo, pre niektoré z vás, kto by mohol pripomenúť, ste nemohli mať priateľov v iných sieťach. Vy asi nemáte priateľom MIT alebo Harvard pred 10 rokov alebo tak, ale vy ste nemohli span siete pre čiastočne z tohto dôvodu. A jeden z najväčších výziev pre Mark a pre firmy, ako je Facebook je vlastne manipuláciu stovky a tisíce a milióny žiadostí za sekundu. Takže veci, začneme hovorí o tento týždeň sú naozaj bude relevantné k písanie dobrý softvér, a populárno úspešné nástroje, ktoré zvládne veľa užívateľov. Takže budeme hovoriť o veciach, ako je indexovanie a vyhľadávanie, ale že to je pre dnešok všetko. Uvidíme sa za viac v strede. [MUSIC - "Seinfeld" téma] DAVID Malan: môžete, aby ste to, a odpočítať od nej. A nemusíte držať sa niektoré vopred stanovené množstvo pamäte. No, čo sa, že bude volať? Reproduktor 1: No, čo sa deje? SPEAKER 2: Čo tým myslíš? Dáva prednášku. DAVID Malan: A môžeme použiť funkcia volaná malloc k memory-- Reproduktor 1: Prečo sa jeho paže v pohybe? SPEAKER 2: Dobre that's-- viete, že je to normálne. Je to ako, že má len veľké klobásy visí tam. Reproduktor 1: To je normálne? SPEAKER 2: Jo, myslím, že sme len predpokladať, on náhodne nahradil jeho dezodorant s sekundovým lepidlom.