>> [Přehrávání hudby]
>> DAVID Malan: Toto je CS50, a to je začátek týdne osm.
A jsme tak nadšeni přivítat back, velké překvapení, CS50 vlastní Ramon
Galvan, rostoucí senior, který byl strávil posledních několik měsíců
Od července v Los Angeles, v Hollywoodu, doslova pracují na zbrusu nového televizoru
výstava s názvem Colony, tvůrce, který je vlastně Harvard kamenec sám.
A tak jsme velmi rádi, že vidět debut v síti USA letos v lednu.
Takže zůstaňte naladěni na to, a pro více Ramon pro příštích týdnech.
>> Vědět hned, že konec je blízko.
A co to znamená je, že to není vše, co hodně zbylo z CS50, smutné.
Máme jen tři problém Sady left-- je tu
Problém set six--, který je v vaše ruce nyní nebo brzy budou,
v průběhu letošního week-- je určen k překlenutí naše světy příkazového řádku, kde
jsme strávili většinu času pomocí C, a svět webové programování.
No, uvidíte spoustu nápadů půjčil si od příkazového řádku práce,
ale také spoustu nových a zajímavé nápady
které se rovněž bude germaine pro mobilní aplikace a pro technologie,
obecněji, s níž kluci jsou všichni dobře známe v dnešní době
na notebooky a telefony a podobně.
>> Takže budete realizovat ne webové stránky, nebo webové stránky
samy o sobě, ale o skutečný webový server.
Budete psát zbytek webového serveru napsaný v C, jehož cílem v životě
je přijímat požadavky HTTP, ty virtuální obálky jsme pořád mluvit
o, a vlastně reagují buď Některé statické content-- jako tečka HTML
soubor, nebo tečka JPEG nebo jakýkoli jiný počet souborů,
nebo dokonce soubor PHP, kdy váš web Server se bude vykládat, že PHP
kód a vyplivnout výsledky.
Nyní jsme pro vás připravili docela dost rámce
pro to-- skutečně Distribuce kód problému
set six je více než 1000 linek dlouho, je Mnoho z nich je komentáře, být fair--
ale toto je ve skutečnosti znamená, být příležitost
dostat své špinavé ruce potápění do poměrně velkého projektu
že máme velmi konkrétně vytesané kusy pro vás,
takže opravdu při ukončení CS50 a vstoupit do reálného světa programování
a chtějí fušovat do libovolný počet projektů,
budete mít mnohem větší, pohodlí stahování nějaký zdroj
kód, některé open source projekt na webu,
a potápění v a dělat Změny, které uznáte za vhodné.
Problém set seven se bude o vytvořit vlastní webovou aplikaci
který bere dynamický vstup a vytváří dynamický výstup v podobě
z etrade.com-jako webové stránky.
A problém nastavit osm se zaměří na dosud jiný jazyk, známý jako JavaScript.
>> Mezitím, finální Projekt je na obzoru.
Tzv pre-návrh je kvůli Ode dneška za týden.
Pre-proposal-- podle specifikace, který je na CS50 je website--
je docela neformální příležitost pro odeslat docela stručnou e-mail
na své učení kolegy jen aby ho obeznámit
nebo jí o tom, co si myslíš, aby použít ho jako vrbu.
A mají zdravý rozum check-- zda si myslíte
o kousání off příliš moc nebo možná příliš málo,
nebo možná nemáte tušení, vůbec a chtějí, aby se zapojily do konverzace.
>> Poté je návrh a status hlášení,
tzv CS50 Hackathon zde Cambridge pro Harvard a Yale studenty
podobně.
Závěrečný projekt je Implementace je odtud.
A pak CS50 veletrh tady, v Cambridge, stejně jako další v New Haven.
Takže návrhu se podívat na webové stránky pro tyto údaje.
>> Ale víc vzrušující, taky, je možnost dostat své špinavé ruce,
a vaše mysl otevřené celek banda témat a nástrojů
a techniky, jež jsou doplňkové core Osnova Course,
ale přesto související.
A také nádherný odrazovým můstkem do dělá opravdu cool konečné projekty, které
jdou daleko nad rámec materiálu, který jsme probrali formálně problém nastavit nebo v přednášce.
Tak jděte na webové stránky CS50 pro celý seznam seminářů.
Pokud ještě nemáte registrovat, je to v pořádku.
Jděte do toho a zaregistrovat stále a budeme navázat s živým odkaz pro streamování,
den a čas je na webových stránkách.
A všechno bude zaznamenávány a dát on-line
když není možné aby se konkrétní dny a časy.
>> Pokud jde o to, co je před námi thereafter-- dobře, Samozřejmě, je tu CS50 Hackathon.
Tuto fotografii, odvolání, z týdne nulové přijata kolem 4 AM jednoho večera v minulých letech.
CS50 veletrh, který se znovu se bude konat v obou městech.
A pak, jen sázet semeno, i když jsme ještě
mají měsíčně a levé části semestru, pokud byste se rádi připojili CS50 vlastní učení
personál, a chcete začít přemýšlet o získání CA,
nebo výuky člověk, vím, že Začneme mluvit víc o tom
Později v tomto semestru.
Ale tady na obrázku je většina z letošního týmu.
>> A tak, PHP-- a já jsem byl tak smutný minulý týden, že [? Allyse?] Laskavě
šel do úsilí získání Američtí tyto nádherné rekvizity
že jsem se skončit s použitím, tak to opravdu jen podíval trochu hloupý
že jsme měli lopatu sedí zde vše den minulou středu, a trochu lžíce.
Ale tohle byl můj metaforický způsob, jak se snaží malovat
obraz toho, proč jsme přechod z C na jazyk, jako je PHP.
A totéž lze říci o jakékoliv počet languages-- Java, Python, Ruby
nebo svazky others--, ale zatímco v C, například, psaní programu v C
může být jako obvykle přičemž lžíci, jako je tento
a kopat díru v země, v písku nebo hlíny.
PHP umožňuje pořizovat moc větší sousta z problému,
psaní mnohem méně kódu použitím mnohem menší nástroj,
protože tam je mnohem víc funkčnost pieced v.
>> Teď, když jsme byli opravdu dramatický, budeme muset něco lopata
tady, ale budiž.
Mezitím, druhý metafora jsme přišli s
Je, samozřejmě, mohl byste používat něco jako klíč
zatlouct něco jako hřebík.
Ale samozřejmě, právo nástroj pro použití se děje
být ani tak jazyk nazvaný C-
a teď jsem prostě naštvaný [? Sanders,?] Pravděpodobně,
budeme napravit tak later-- správným nástrojem k často používají
se nebude to nejnižší úroveň nástroj.
A skutečně, C není jazyk, který většina z vás se vůbec bude používat,
nebo by nutně znovu použít.
>> A ve skutečnosti, trochu secret-- jediný čas
Já používám C sám je v podstatě mezi Září a prosinci každého pádu
semestr.
A to proto, že jsme použít jej jako příležitost
naučit základům programování,
a s ním počítačem věda, základy dat
struktury, algoritmy a jako--, ale velmi rychle se budete
vidět, že syntaxe a myšlenky podkladových C
jsou tak nádherně převoditelný na modernější
vyšší úrovně, jako jsou jazyky PHP a Python a Perl a Java
a Objective-C- ve skutečnosti, ne tolik Objective-C-, ale Swift, ty novější
jazyky, které mnozí z vás pak fušovat s vámi závěrečný projekt.
>> Takže bez dalších okolků, pojďme vlastně použít PHP vyřešit některé problémy.
Připomeňme, že na začátku, poslední týden, používali jsme pouze CS50 IDE,
jsme napsali Dinky malý program že právě řekl, "Hello world".
A pak jsem se chytá v soubor s názvem hello.php.
A pak jsem běžel tento příkaz.
>> A proč?
V angličtině, co se to tady děje?
Co jsem dělal, když Běžel jsem tento příkaz?
>> To jo?
>> Diváků: Je tu nějaká funkce PHP že čte to, co se in-- chápe, že.
DAVID Malan: Dobrý, tam je nějaká funkce PHP-- a nech mě být konkrétnější,
existuje program s názvem PHP, také známý jako
Interpret, který chápe, Obsah hello.php,
a interpretuje to shora dole, zleva doprava,
a dělá to, co tyto příkazy říkají.
Příkazy v hello.php, samozřejmě, právě zdroj code-- funkce
a proměnné a smyčky a podobně, že my sami
začaly psát v PHP.
>> Ale na rozdíl od C, což je kompilované jazyk,
PHP stačí psát, a spusťte jej.
Můžete přeskočit tento krok prostředníka přeměňovat to na nul a jedniček,
a potom v chodu.
A tak to, co je vzhůru o to?
Proč jsme přeskočením krok?
Proč více moderních jazyků mají tendenci tento krok přeskočit?
Jaký byl přínos?
>> Nebo jen intuitivně?
I když máme ne Před psaný hodně PHP,
co je prospěšné o ne kompilaci kódu si o tom myslíš?
Ne?
Není spáchání?
Poškrábání vaší hlavě?
To jo.
>> Diváků: dynamičtější.
>> DAVID Malan: Dynamičtější?
Co myslíš?
>> Diváků: [Neslyšitelné]
DAVID Malan: OK, dobrá, tak v závislosti na vstupu,
nemusíte kompilovat při každém.
A je to opravdu jako jednoduché, jak to, co that--
je bod pokračování sestavit svůj kód?
To je jen krok, který je making-- to vyžaduje,
Za posledních několik týdny, dvakrát tolik kroků
jak bylo právě běžící program.
Bylo to užitečné vidět, že vás uvidíte nějaké chybové hlášky a tak dále,
ale je to pořád jen nepříjemný krok.
>> A tak si uvědomil, programátoři v průběhu času, proč ne my
začněte psát jazyky, které nemají Potřebujeme tu poměrně mechanické krok,
takže stačí napsat váš kód a spusťte jej.
Ale co byla cena že jsme viděli jsme zaplatili
minulý týden, s jedním konkrétním příkladu?
Ano?
>> Speed.
Tak [? Co je?] tlumočníci trochu pomaleji,
v tom, že nuly a jedničky jsou pěkné a rychle pro počítač
pochopit, protože Intel CPU, nebo co to je,
jen chápe, co se děje na s těmito vzory bitů.
Vzhledem k tomu, tlumočníka je program, který opravdu
musí přečíst zdroj ASCII kód, který jste napsali,
a převést ji, abych tak řekl, nebo zjistit, jak to nakonec převádí
se nul a jedniček.
Tak to prostě trvá trochu trochu hit výkonu.
Takže je to trochu kompromis.
Nyní, pokud to uděláme tady, dovolte mi, abych jděte do toho a dělat příklad takto.
Pokud bych jít sem, nový soubor, jdu uložit To je opět hello.php.
A teď budu pokračovat a říkají, "print hello world" -
a připomenout, že mohu použít tisk, vůbec se mi nelíbí muset použít print-F. A teď tady dole,
když udělám PHP z hello.php, huh-- I Nezdá se, že je již vyložily.
Co jsem udělal špatně?
>> Diváků: Šikmé náramky.
>> DAVID Malan: Jo, budete potřebovat že úhel držák do top.
Takže je to trochu nepříjemné, ale dostanete rychle na to zvyknete.
Mám-li psát PHP kód, já Obecně je třeba říci programu,
nebo sdělit interpret, hej PHP, přichází nějaký PHP kód.
A pak se na správnou míru, udělal bych to uzavřít to není s to, ale spíše
s jen otázka úhlu známky držák, takže teď tady dole,
když spustím to znovu, teď I získat požadovaný výsledek.
>> Nyní pojďme udělat mírné optimalizace, jen proto, že jste to neviděli.
To je tak trochu nepříjemné, že jsem muset běžet PHP prostoru hello.php,
protože v minulosti jsem mohl jen napsat dot lomítko
název programu, který je docela hezké.
Je to trochu lepší uživatelský zážitek.
>> Tak to dopadá, můžete to udělat v PHP s following-- I
lze použít docela záhadný zaklínadlo na vrcholu tady,
který se obecně nazývá shebang, přičemž se jedná o ostrý symbol,
abych tak řekl, je to rána nebo vykřičník.
A teď je cesta k programu na typické systému Linux, který
se nazývá prostředí, nebo env.
A to line-- dlouhý příběh short-- linka člověk jen
říká, hej počítač, najít PHP tlumočníka pro mě v životním prostředí,
najít v paměti, abych tak řekl.
>> A co je příjemné teď, je že když půjdu tady dole,
Můžu dělat dot lomítko ahoj tečka php, nebo-- hmm.
Přístup odepřen.
No, uvidíte ještě víc z toho s problémem set sedm, pokud jste
tak ještě neučinili, s oprávněními.
Ukazuje se, že musím k provedení tohoto příkazu
s názvem [? chamod?] pro změnu mode-- A plus x hello.php.
Tento dodatečný musím [neslyšitelných] krok, který říká můj počítač,
aby hello.php spustitelný soubor.
A teď sledujte, co happens-- tečku lomítko hello.php, to prostě běží.
Nepotřebuji specifikovat tlumočník ještě.
A můžu si to ještě hezčí, přesto, když jsem přejmenovat tuto věc.
Kdybych přesunout hello.php jen Hello-- takže oznámení v levém horním rohu,
název programu je opravdu už jen Ahoj.
Teď jsem si, aby to vypadalo jako program C, i když je to napsáno v PHP--
nebo upřímně řečeno jakékoliv číslo jiných jazyků.
>> Takže marginální vylepšení, žádná funkční rozdíl.
Ale je to jen trochu kuriozita teď, takže můžete psát programy
v jakémkoli jazyce, a uživatel není musí vědět, nebo jedno, co to jsou.
Dobře, pojďme se podívat na více přesvědčivý příklad nyní
že jsem rozdmýchala s předstihem.
A to se nazývá quote.php.
A je k dispozici on-line.
A všimněte si, že je to docela short-- ale je to program pro příkazový řádek, který je
bude vypadat nahoru ceny akcií pro mě, který je ve skutečnosti děje
být relevantní k problém nastavit sedm.
>> Takže pojďme se podívat, co dělám.
Na samém vrcholu jsem dostal otevřený držák otazník PHP.
Pak mám tuto linii, čímž jsem vyžadující soubor nazvaný functions.php--
budeme vidět více o tom za chvíli,
ale to je jako C je ostré verze patří,
kam chceš jít zahrnovat další soubor.
PHP volá to vyžadují, i když to také má obsahovat funkci.
A ukázalo se, že je function.php Jen něco, co jsem napsal před třídou.
Dal jsem ho do stejného adresáře, protože Chtěl jsem vytknout nějaký kód
že bychom mohli chtít použít jinde.
>> Mezitím, budete pravděpodobně odvodit, co se tady děje.
To je trochu odlišný od C-, ale Co mám na mysli tím zajistit řádné používání?
Přeložit tento technicky.
Za jakých okolností jsem já ukončení programu, nebo ukončení?
To jo?
>> Diváků: Pokud nemáte dva argumenty příkazového řádku.
>> DAVID Malan: Když nemám na argumenty příkazového řádku.
A nezapomeňte, že jeden z těchto argumenty je jméno programu sám.
A druhá bude další slovo, které jsem psát po řádku.
Takže stejně jako C, toto je můj způsob kontroly,
se uživatel spolupracovat a spustit program, jak jsem zamýšlel?
A teď, je tu něco trochu jinak
s C- první řadě jsme mají tento znak dolaru,
a co dolar přihlásit označují v PHP?
Jen variabilní.
To je all-- jen proměnná následovaná co chcete skutečně říkají.
Všimněte si, že je něco chybí z mého programu PHP,
stejně jako to chybělo poslední týden, proti C, což je to, co?
>> A typy, ale i něco jiného.
Neexistuje žádný něco function-- hlavní funkci.
Neexistuje žádná hlavní funkce.
Právě jste začít psát Váš kód, aniž by museli
se starat o poměrně libovolný konvence pojmenování některé výchozí
Funkce main.
Takže arg C je opravdu jen globální proměnnou
že tlumočníka dává k dispozici ke mně.
Nyní, to je zajímavé.
Tak se podívejte na věci.
Znak dolaru stock je na odešel, to je můj variabilní.
Na pravé straně, tam je prý
funkce v PHP volal, že vyhledávání Já jsem kolem své poslední příkazový řádek
Argument to-- bez ohledu na slovo.
A uvidíme, jak to pracuje v okamžiku.
>> A pak nakonec Hlásím cenu.
Jsem vytištění jednoho Podíl takové a takové.
A pamatujte si, to je Způsob, PHP-- způsobem v PHP--
kde nemusíte dělat znak dolaru S ještě.
Stačí použít složené závorky a zapojte v nějaké proměnné.
Nemusíte se starat o použití printf stejným způsobem.
>> A jako stranou, když dáte proměnné uvnitř dvojitých uvozovek, jako je tento,
používáte ozdobný techniky volal variabilní interpolace.
Znamená to jen připojit proměnnou tady.
A jako stranou, někteří z vás, kteří přišli z jiných programovacích prostředí,
nesmíte používat apostrofy kolem řetězce to udělat.
Je nutné použít uvozovky pro variabilní interpolace do práce.
Jinak budete doslova vidět ty složené závorky.
>> Tak konečně, pojďme do toho a spustit to.
Dovolte mi, aby můj terminál trochu větší.
Nech mě jít dopředu a spusťte uvnitř mé citace adresáře.
[? CDsource?] [? AM?] [? citát?] PHP quote tečka PHP,
a budu hledat něco, jako GOOG, která je její burzovní symbol,
a jedna akcie novým názvem, Abeceda Inc, stojí $ 717 k dnešnímu dni.
Dobře, pokud chceme spustit tento znovu, někdo
mají další burzovní chtějí vzhlížet?
>> Myslím si, že je Microsoft tenhle, MSFT-- $. 53
Myslím si, že Yahoo je možná to.
A Facebook je.
>> Takže to, co je tento program dělá?
Magie se zdá být zakotveny v této funkci vyhledávání.
Takže pojďme se rychle podívat.
>> Ukazuje se, že nepřijde s PHP, je to ve functions.php.
A nebudeme procházet Tento velmi podrobně,
nevšimnout operativní slovo je zde že na řádku šestého functions.php--
Doslova jsem říci funkci.
I uveďte název své funkce.
Pak jsem určit jakýkoliv parametry, nebo parametry,
Chci, že funkce take-- žádný typ.
A pak jsem ji realizovat.
>> A já budu mávat mou ruku na implementaci,
protože je to docela moderní pravdu teď, ale budeme ho vidět znovu vlastně
v týdnu v problému nastavení sedm.
Ale můžu vyčistit toto nahoru, taky.
Také jsem součástí dnešní kód verze
citátu, který nemá soubor tečka PHP.
Protože to, co je pravděpodobně u Horní část pořadu jen citovat?
To tzv shebang-- docela mystický zaklínadlo
že říká, že najít PHP a poté spustit na můj kód zde.
>> Dobře, takže přináší nás, kde jsme skončili
Poslední time-- i když s některé pokročilejší příklady.
Jakékoliv dotazy dosud o PHP nebo co děláme?
No-- v pořádku.
To jo?
>> Publikum: Uvnitř HTML soubory, dělat vás--
[? ano?] [? stačí zavolat to?] a [neslyšitelný] PHP soubor?
DAVID Malan: Dobrá otázka.
Ve webovém souvislostech, které jsme doslova o přechodu na,
nechcete použít tzv shebang v horní části,
protože web server-- často program s názvem Apache nebo Microsoft
IIS, Internet Information Server, nebo libovolný počet dalších web server software,
ví, že když vidí, soubor tečka PHP, že to
by měl běžet tlumočníka na to.
Nevypadá to v té první linii.
Takže tento první linie trik je jen, když jste
psaní příkazového řádku programs-- které nebudeme dělat výborný často,
ale je to náš způsob přemostění Náš příklad C až nyní naší PHP.
>> Takže pojďme skutečně překlenout tento svět z příkazového řádku světě, na web
pomocí následujícího postupu.
Nech mě jít dopředu a kreslit přes na chvilku zde.
Takže pokud budeme mít webový server, nebo spíše máme-li svůj laptop tady,
které budu čerpat takhle.
A tady máme internet v nějaké formě.
A pak tady máme server v building--
to je, jak internet works-- a tady
je server s některými světla možná.
Co se to vlastně děje mezi těmito dvěma přípojkami?
>> Takže v této budově je webový server.
To je jen počítač že to běh některých operačních
system-- možná zdarma software nazvaný Apache, který CS50 IDE běží.
Takže se můžete skutečně myslíte o této budovy
jako budova v který CSt0 IDE je uložen.
To je místo, kde všechny z vás má účty, kde jsou všechny z vás,
mít svůj vlastní webový server běh, všechny z vás,
mají své vlastní jedinečné adresy URL, jak jsme začali diskutovat,
a uvidíte více P. set šest.
>> Tady je můj notebook někde jinde na internetu.
A tak, když jsem navštívit URL, které patří se mi, že internetový provoz se děje
se k serveru, na serveru Příjem HTTP request--
jako když si index.html a to je odpověď na tuto webovou stránku.
Tak to je obecný vzor.
Vzhledem k tomu, všechno nahoru Až do teď, dnes vše
se děje pouze v hranice této budovy.
Byl jsem pomocí mého notebooku, ale Byl jsem připojen k CS50 IDE,
takže všechny z těchto programů jsem jel byla uvnitř tohoto serveru, sám.
>> Ale teď, začněme opětovné využití PHP napsat nějaké skutečné programy, které
jsou podávány prostřednictvím webového serveru.
A jak to udělat, já jdu do spoustu příkladů
že představí tuto myšlenku zde.
Takže to je tak trochu fantazie způsob, jak popisující programovací paradigma.
>> A ve skutečnosti, jak ukončit CS50 nebo pracovat na závěrečných prací,
nebo se někteří následují na třídě, začnete
vidět, že world-- zejména vyrůstal
s jazyky jako C že jsou super nízké level--
Uvědomuji si, že tam je lepší způsoby psaní softwaru.
Existují určitá vzory můžete sledovat,
některé způsoby organizace souborů a způsoby, jak pojmenování své funkce,
takže dlouhý příběh krátký, svět má přijít
s celou partou zkratek a jména pro způsoby programování.
To jsou jen techniky, můžete použít.
>> A jeden z nich se jmenuje MVC, Pro Model View Controller.
A to je jen pro , teď příliš komplikované
způsob, jak říct, jak byste měli rozvrhnout webové stránky PHP bázi, v našem případě.
Jak organizovat soubory, jak si zorganizovat svou logiku,
způsobem, který usnadňuje napsat složitější webové stránky?
A skutečně, budeme rychle tam si s p-set sedm.
>> Takže ve světě MVC, budete vidět, že náš kód lze obecně
charakterizovat jako buď kódu modelu, nebo kód řadič, nebo zobrazení kódu.
A já jdu na zjednodušovat ji jako follows--
regulátor je mozek vašeho programu,
to je místo, kde všechny zajímavá logika se stane.
Takže všechno, co jsme byli psaní tak daleko ve třídě,
je něco jako řadiče code-- to ovládání
váš program, vaše smyčky, vaše podmínky, vaše funkce
a proměnné a všechno.
>> Pohledy, nyní, se bude trochu jasnější ve světě webu.
Pohled je estetika na vašich webových stránkách.
To je to, co uživatel sees-- obrazy, tabulky HTML, HTML tagy, a všechny
z toho, všechny načechraný estetický věci, které není tak těžké psát,
ale je jen to, co jste generování, je tzv pohled, estetice.
A model nakonec se děje být databáze, které stuff--
začneme potápění do všech Čím více se tuto středu.
Takže regulátor je logika, pohled je estetická věci,
a model bude, kde ukládáme naše aktuální data.
>> Takže pojďme se podívat na to konkrétněji s následujícím příkladu.
Chystám se jít do mého adresáře zde dnešní zdroje code--, z nichž všechny
je k dispozici on-line.
A já jdu do verze nula.
A tady je-- nazvěme to na verze stránek CS50 je nula.
Není toho moc, tady vůbec.
Je to velmi jednoduché webové stránky, která je Pravděpodobně používáte, co HTML tags-- právě
Asi z minulých příkladů?
>> Co je to?
H1-- pravděpodobně za to velký tučný název, že logo nahoru vrchol, CS50.
A co je ještě ve hře?
To jo?
Diváků: Nečíslovaný seznam.
DAVID Malan: Nečíslovaný list-- tak UL tag a možná pár LI tagy.
A pokud si nepamatujete nich, to upřímně nezáleží.
Jedná se o jakési načechraný implementační podrobnosti HTML
že jste se rychle vyhledat a jste zpátky na vaší cestě.
Budeme se více zaměřit na programování myšlenky, které jsou šťavnatější kousky.
>> Tak ať to jen vzít rychlý podívejte se na HTML-- a opravdu
když jsem otevřít zdroj zobrazení tady, Jo, to je přesně to, co se tady děje.
Je tu značku UL.
Vnořené uvnitř, který je Li tagy.
A pak jsem si vypůjčil URL skutečného osnov zde.
>> A pak v lectures.php je zřejmě
další dynamicky generované stránky že to bude mít, pojďme see-- ah,
První dva týdny přednášky.
Tak týden nula a týden jednu, pojďme podívejte se na tohle-- kdybych zobrazit zdrojový kód stránky,
také super jednoduché.
Ty vedou na dvě stránky volal week0.php, a week1.php.
Takže zvažte teď, co se děje.
>> Když kliknu na week0.php, můj notebook je podání žádosti o week0.php.
Webový server, také známý jako, CS50 IDE, přijímá, že virtuální obálku.
Je to vidět zprávu jako, dostat week0.php.
To je pak interpretaci souboru, top dolů, doleva right-- souboru
volal week0.php-- a plivat výsledky.
Takže uvnitř tohoto souboru, week0.php, musí být
řídicí logika, která je generování tento HTML, a budeme brzy vidět, že.
>> Ale teď mi dovolte, abych klikněte na týden nula, a teď máme středu a pátek,
a teď máme sklíčka pomalu týdnu nula.
A možná pamatujete toto od při cestě zpět.
Tak to je vše, tento web je dělá.
>> Takže pojďme zvážit, jak se to dělá.
Chystám se vrátit do zdrojový kód zde, v CS50 IDE,
a já jdu otevřít index.php.
V horní části tohoto souboru je banda komentářů.
A pak se v polovině tohoto souboru ji, Ukázalo se, že není žádný PHP kód vůbec.
Protože pokud nemáte některý z otevřený držák otazník PHP tagy,
jste zatím jen dát HTML.
>> Vzhledem k tomu, co PHP interpret má dělat,
je, když to čte tento file-- shora dolů, zleva right--
to jen interpretuje kód to vidí mezi tyto lomené závorky otazník.
A něco jiného, ​​že tomu tak není uznat jako PHP, to prostě vyplivne.
A HTML patří mezi věci to bude jen vyplivnout.
>> Takže tento soubor mohl mít byli povoláni index.html,
ale já jsem jmenovat všechno dot PHP jako odrazový můstek.
Lectures.php-- podobně nezaujatý, je to jen nějaký HTML.
Week0.php, podobně jen některé HTML.
>> Ale teď pojďme dát na příslovečný inženýrství klobouk,
a zvážit, jak můžeme vylepšit to.
Není těžké to udělat, ale jsem tak trochu přenesené do kopírování a vkládání.
A ve skutečnosti, když jsem vytvořit dvousloupcový týden jste vím, co jsem asi dělat?
Chystám se jít do week1.php, já jsem zaměřím na všechno.
Chystám se ho kopírovat, vložit jej do nového souboru s názvem week2.php,
vyladit některé adresy URL, a je na cestě.
>> Takže na základě toho, co máme Viděl v C již,
to není ono, doufejme.
Kopírovat, vložit zřídka správným řešením.
Takže to, co můžeme začít udělat pro zlepšení to?
Tam, kde jsou příležitosti pro lepší design?
>> V době, kdy jsem se dostat do týden osm, to jde
být opravdu otravné pokud chci změnit
písmo každého jednoho z mé stránky, nebo když budu chtít
změnit strukturu rozvržení.
Tak kde je příležitost pro lepší design?
Dobře, pojďme zvážit, co je sdíleny všechny tyto soubory.
>> Tady je týden jednu, tady týden nula, tady je lectures.php,
tady je to, co index.php-- je stejný a Jaký je rozdíl, zhruba řečeno,
v každém z těchto souborů?
To jo?
>> Diváků: [Neslyšitelné]
DAVID Malan: OK, dobře.
Takže tam je vzor, ​​jistě, přičemž pokaždé, když jsem se vybrat přednáška I,
Měl bych být generování velmi podobné vypadající stránky.
A tak snad můžu využít skutečnost, že ve skutečnosti,
vědomě numericky indexovány naši lectures--
jestli můžu dát ještě víc slov vaší odpovědi.
A co je jediná věc, opravdu, že to mění mezi týdne one--
a dovolte mi přejděte dolů, takže je to zhruba ve stejné place--
tak tady je týden nula, zhruba v horní části.
Zde je týden jednou, týden nula, týden jedním, týden nula.
OK, doslova pokud víte, žádný program vůbec,
toto je nyní jen jako když vzor odpovídající hru.
Takže to, co je?
To jo?
>> Diváků: [Neslyšitelné]
DAVID Malan: Dobrý, tak titul se mění, někdy tak trochu.
Zero bude, samozřejmě, na jednu.
Totéž se děje v tagu H1.
A nemáme dost vidět, jak snadno, protože URL jsou poněkud delší.
Ale ty adresy URL se mění jen nepatrně.
>> Ale to, co se nemění je, troufám si říci, většina obsahu page--
značka HTML je stejný, hlava je stejné, titul je téměř stejný,
tělo je stejný, a skoro všechno ostatní
je stejné, kromě ty malé vylepšení.
Tak jak můžeme jít o factoring něco z toho ven?
>> No dovolte mi navrhnout přesně že v další verzi.
Tak tady ve verzi jedna, mám přesný stejné soubory, plus pár dalších.
Tady je index.php-- a to iv případě jste nikdy neviděli PHP předtím,
co mám asi dělat to vyřešit problem-- základě toho, co vidíte tady?
Jo, je to mírný závazku?
Ne?
Ano, jít dál.
>> Diváků: [Neslyšitelné]
>> DAVID Malan: Jo.
>> Diváků: [Neslyšitelné]
>> DAVID Malan: Potřebuji, abyste mluví jen trochu hlasitěji.
>> Diváků: [Neslyšitelné]
DAVID Malan: OK, dobře.
A think-- jsem, že těžké vás-- ale slyším
že to, co jste se dostal na je, že tagy, které byly běžné až nahoru,
a značky, které byly běžné na dno, byly nyní vytknout,
nebo zařazen k jaké soubory?
Header.php a footer.php-- a jdeme
aby se některé vylepšení na řešit obavy jste právě
zvýšil o počtu střídání, pro Například, když jsem tě slyšel správně.
>> Ale to se zdá být podstata toho.
Pokud došlo k obrovské množství redundance v horní části stránky,
a obrovské množství redundance v dolní části,
pojďme doslova highlight a snížit, že obsah out,
dát do samostatné file--, stejně jako myšlenka CSS, kde jsme vytknout
velmi podobné estetika, dal že v odděleném dot PHP souboru
použijte vyžadují mechanism-- který je jako C ostrý include-- který
je v podstatě jako říkat jít chytit obsah header.php,
a kopírovat a vložit zde.
>> Ale co to znamená je, že nyní v index.php, mám ty dva řádky.
V lectures.php jsem také mají tyto dva řádky.
V week0.php jsem také mají tyto dva řádky.
>> Takže teď, když chci změnit název ze všech mých stránkách,
nebo chci změnit základní struktura,
Já ji nyní může změnit jen v jednom místě, nebo dva places-- záhlaví a zápatí,
v tomto pořadí.
Nyní začíná Kodexu se podívat trochu záhadný, že jo?
Ale jestli si myslíte, že o tom, co na stránce je doing-- jestli jsem požadující week0.php,
stejně jako na kreslení přes here-- při požadavku week0.php,
co to znamená?
>> Doslova je tento soubor požaduje prohlížeči.
Na webovou server-- také známý jako
CS50 ID-- chytne to Soubor, week0.php, a čte
to shora dolů, zleva doprava.
Na prvním řádku, okamžitě narazí otevřený držák otazník PHP, vyžadují
header tečka PHP, a tak co interpret PHP
does--, který je vestavěný do webu Server, protože jsme předem nakonfigurováno
to pro vás-- přepne se automaticky do header.php, zkopíruje obsah,
vloží je zde.
>> Ale pak tlumočnické setkání otazník blízko držák,
takže je to všechno udělal myslí.
Teď to jen slepě vyplivne out řádků dva až sedm,
protože je to jen syrové HTML.
Dostane na řádek osm, a to dělá Stejný magie again-- otevření souboru,
popadat obsah, a vyžadovat, aby oni nebo jejich vkládání
vpravo pak ani tam.
>> Ale já jsem jen zmiňoval se o chybu.
Toto je částečný krok zpět, protože když se podíváme na header.php,
Já jsem trochu snížit roh.
Jaké funkce jsem se vzdát, aby k získání tohoto arguable lepší design?
To jo?
Diváků: [Neslyšitelné]
DAVID Malan: Jo, jsem tak trochu sečení netriviální roh.
Jste poukázal na to, že to, co se mění byl název, číslo v názvu,
a číslo v H1.
Takže moje řešení bylo, OK, ať to jen přejmenovat stránku,
a nezabývá, že problém vůbec.
Takže to je částečný krok zpět pro jistotu.
>> Ale co je pozoruhodné zde je, že to, co jsem udělal
jinak je factored out všechny běžné věci.
A v footer.php, Všiml jsem si, factored mimo to všechno, i když menší,
společné věci.
Tak jsem třeba nějak nyní bude moci další krok vpřed, a opravit
že právní nárok na otázky.
Takže pojďme to udělat.
>> Nech mě jít do mé druhé verzi zde, což opět má stejné soubory
s výjimkou jednoho nový přírůstek.
A je to trochu víc verbose, ale uvidíme, jestli budeme
může dráždit od sebe to, co se tady děje.
Takže místo toho, vyžadující header.php, a footer.php,
Připadá mi, že se vyžaduje pouze jeden file-- zavolal, samozřejmě, helpers.php.
A dovolte mi, abych nyní stanovit, to, co je uvnitř helpers.php
je jen banda funkcí že jsem napsal, stejně jako předtím.
Ale volal jsem to helpers.php.
>> Nyní se zdá, v řádek tři a 10, já jsem
volá dvě functions-- vykreslení záhlaví, zápatí render.
Ti, kteří nepřijdou s PHP, jsem napsal ty sám.
A dal jsem je do helpers.php.
>> Teď jsme jen viděli tuto syntaxi jednou, a bylo to výborný krátký.
Ale to je zřejmě argument k tomu, aby záhlaví, funkce.
Proč mám vědět, že?
Tak tady je blízký paren, tady je otevřená paren.
A samozřejmě, stejně jako v C, něco mezi těmito závorkami
je input-- nebo argument funkce.
>> Jaký je datový typ tohoto argumentu, na základě toho, co jsem zvýrazněny?
Co ty hranaté závorky ukazují, na základě posledního týdne?
Jo, to je array-- konkrétně asociativní pole.
A to sice syntax je trochu funky,
ale to je jen kolem v jednom páru klíčů hodnoty.
Klíčem k úspěchu je, cituji konec citátu titul, a je hodnota CS50.
>> Pokud bychom to udělal v C, to by mohlo místo toho
vypadají spíše jako to, jen citovat konec citátu CS50--
nebo ve skutečnosti by to bylo kudrnaté šle, nebo něco podobného, ​​že v C,
kde klíč je nula, a hodnota je CS50.
Ale opět, v PHP, přestože syntax je opět trochu divný,
to vám umožní předat slova namísto čísla
spojovat klíčů s hodnotami.
>> Takže co to všechno znamená?
Pokud bych jít do helpers.php, Podívejme se na tuto funkci.
renderHeader.php, spíše renderHeader je můj funkce,
a vím, že proto, že vidím, Funkce klíčové slovo zde.
To je nová z C- to zjevně bere argument s názvem data--
ale já jsem mohl nazval nic, ale volal jsem to údaje,
stačí, aby se trochu clean-- a stačí se hádat, a to zejména
pokud jste naprogramován v některých jiných vyšší úroveň jazyka předtím, něco
nad C, koncepčně.
>> Co rovné otevřený držák hranatou závorku pravděpodobně znamená?
Nebo co to může znamenat?
Už jsme neviděli to v C. Jo?
>> Prázdné pole.
Konkrétně to znamená, že v případě, Uživatel nevolá renderHeader
s argumentem, já jsem stále bude mít argument s názvem dat,
ale jeho výchozí hodnota je bude prázdné pole.
Takže je to jen hezké pohodlí.
Já nemusím křičet na uživatele, nebo říkat jste použili můj funkce špatně.
Já si jen dát uživateli výchozí hodnota, pokud je mi nijak zvlášť nezajímá.
Nyní je tato funkce, já jsem bude mávat své ruce na.
Ale tato funkce umožňuje extrakt nám předat tyto proměnné v datech
do header.php následujícím způsobem.
A to je poslední kus, Myslím si, funky syntaxe.
Tady je můj nový verze z header.php-- to
říkával, a to doslova, otevřený držák titul CS50, a že to bylo.
A to samé pro H1.
>> Teď to prý říká, že něco docela funky.
A dovolte mi, abych toto zjednodušení na chvíli takto.
To je to, co jsem změnil svůj název, aby byl.
Nicméně, je to už trochu ošklivý neustále otevřené závorky s PHP,
a pak použijte funkci tisku.
Ukazuje se, že PHP má zkratku zápis pro to, které je jen
rovnítko, což je technicky Funkce tzv echo místo tisku,
ale je to totéž, efektivně.
>> To jen vypadá lépe.
Je to jen syntaktickou cukr, chcete-li,
že dělá můj kód vypadat trochu lépe.
Ale ukazuje se, a uvidíme to znovu
netrvalo dlouho, musíme nazývat protivně dlouho volání funkce
Speciální znaky v HTML PHP, protože se ukázalo,
tam jsou některé vstupy že uživatel by mohla poskytnout nám,
nebo že uživatelé mohou dát nám, které se chystáte zlomit naše stránky.
Ale uvidíme, že příští týden s JavaScript.
Ale teď, jen vím, že tento soubor, headers.php, jednoduše
má titul, který I prošel v roce, to dělat
jistý, že je bezpečné pro vstřikování do pásu strana, a to vyplivne jako můj titul
a jako můj H1.
Takže když jsem se jít do této verze nyní, Všimněte si, že přednášky má jeho titul zpátky,
týden zero má svůj název zpět, a opravdu, HTML jsem generování
je shodný s co můj první verzi was-- s výjimkou pro mé bílými znaky,
protože jsem začal formátování můj kód trochu jinak.
Ale já jsem generované všechny kód mi záleží.
Dovolte mi tedy pozastavit jen na chvíli a vidět
pokud tam je nějaké otázky nebo zmateností jsem vytvořil.
Dobře, tak se pojďme otočit trochu těžší zde
aby zjistil, jestli tam je příležitost pro zlepšení.
Helpers.php také měl toto funkce, tzv renderFooter.
A co je pozoruhodné, o renderHeader, a renderFooter?
A opět, pro dnešní účely, know že funkce extrakt je jen
můj způsob předávání argumentů do header.php a footer.php.
>> Litovat?
>> Diváků: [Neslyšitelné]
DAVID Malan: Jo, jen jsem změně vyžadují řádek.
Takže doslova, já jsem spáchal hřích kopírování a vkládání, přesto znovu.
Není to obrovské množství linek, ale když přijde on--
když jsem kopírování a vkládání vše stačí změnit jednu malou slovo,
a jedna malá slovo, které Alan body ven je zápatí tady oproti záhlaví zde.
Jinak je vše totožné, s výjimkou,
Samozřejmě, jména funkci má.
Takže to, co bychom mohli dělat lépe?
>> No dovolte mi, abych otevřít tuto verzi tady, přičemž v helpers.php,
proč ne já jen získat málo chytřejší o tom?
Napište poněkud složitější kód, ale říkají to činí?
Tak co jsem to zásadně změnilo?
>> To trvá argument now-- dva argumenty, data stále.
A co pak je první název pravděpodobně se používá pro,
na základě toho, co čtete tady?
I když některé z syntaxe je stále ještě nový.
Co je znak dolaru šablona?
>> Litovat?
>> Diváků: záhlaví nebo zápatí.
>> DAVID Malan: záhlaví nebo zápatí.
Takže se zdá, jsem se rozhodl, že v případě, jediná věc, která se mění
je to, co chci, šablona na print-- a šablony
Mám na mysli to je plán pro kód, který chci výstup,
ale chci se připojit v některých values-- takže když je to jen záhlaví
nebo zápatí, proč ne já parametrizaci to a zavolejte znak argumentem dolaru
šablona?
A pak se to funky syntaxe mi umožňuje pro vytvoření cesty v proměnné sem.
>> Takže znak dolaru cesta je variabilní.
To, co dělá tuto syntaxi ano, pokud jste obeznámeni?
To jo?
>> Diváků: [Neslyšitelné]
DAVID Malan: Přesně tak.
Pokud je šablona je, cituji konec citátu, záhlaví, nebo pokud šablona je,
quote konec citátu, zápatí, že linka že jsem se zvýrazní, linka osm,
je prostě přičemž toto jméno, jako je záhlaví, a zřetězení jej bodovým PHP.
Takže jsme neměli tento operátor v C. Tento operátor tečka je
úžasná věc v PHP--, pokud jste obeznámeni s JavaScript nebo Java,
můžete použít tlačítka plus přihlásit dělat zřetězení.
>> V jazyce C, je to bolest v neck-- a já jsem moc líto, v p-set šest,
budete muset udělat tohle-- to je bolest v krku
zřetězit řetězce.
Proč?
No, protože pokud máte řetězec, který je tak dlouho,
a jiný řetězec, který je tak dlouho, můžete nejen připojit dohromady.
Co místo toho muset udělat v C?
To jo?
>> Diváků: [Neslyšitelné]
>> DAVID Malan: Musíte malloc paměť, nebo použít pole v zásobníku.
A skutečně se aby to pole dostatečně velká
aby se vešly to a to, plus zpětné lomítko nula.
Pak zřetězit dohromady s použitím míchat kočku nebo ručně pomocí smyčky for,
nebo libovolný počet technik.
A my vám ukázat pár v p-set šest.
>> Je to bolest v krku.
A to je skutečně to, co mám na mysli o to proti tohle-- jako je C ve srovnání s PHP.
Můžete jen získat tak mnohem více funkcionalita zdarma,
takže se můžete soustředit, v ideálním případě, na zábavu
část kódování se projekt, který chcete vyřešit,
spíše než nízká úroveň detailů.
>> Takže to jen vytváří header.php nebo footer.php založená na který z nich mám nazvat.
A skutečně, když jdu do index.php, oznámení
všechno, co se changed-- Místo volání vykreslení záhlaví nebo zápatí render,
Volám činí, popřípadě s využitím název šablony, kterou chci dělat.
A uvidíte i to, v problému set sedm,
v němž bychom vám umožní použít stejná funkce, aby se svazky
a svazky různých webových stránkách.
>> Takže spíše než bydlí příliš více na ty details--
který uvidíte opět v Problém set sedmé pojďme se podívat
na nyní začátku roztoku k více zajímavý problém.
Dosud nic máme udělal má uložených dat.
Ve skutečnosti, jediný čas, který jsme kdy uložili něco, co jsme udělali v této třídě
je, když jsme měli velmi jednoduchou ukázku chvíli zpět, přičemž jsme použili vstupně-výstupní soubor v jazyce C,
a myslím, že jsem napsal v mém jménu, a Hannah jméno, a Mariina jméno,
nebo možná Andyho jméno, a pak jsme uložili ve formátu CSV file--
oddělené čárkou hodnoty souboru.
>> A jsme fopen-- myslím, jsme použili fprintf pokud si vzpomínám,
a uložili jsme soubor.
Nyní, že je nejjednodušší forma databáze.
Chcete-li vytvořit webové stránky pro Program Frosh IM, přičemž prváci
můžete zaregistrovat na sport, v ideálním případě vás chcete udělat něco s těmito daty.
Minulý týden jsme neudělali nic s data-- jsme právě řekli,
jste registrováni, opravdu ne.
Nebo možná jsem e-mailem Proctor, a bylo to.
>> Ale bylo by hezké, kdyby to šlo dát, že Proctor souboru ve formátu CSV,
jako souboru aplikace Excel.
Nebo ještě lépe, bylo by to bylo hezké, kdybych mohl
dal jména těchto uživatelů a koleji jména a všechny, které
do databáze, která jen žije na věky,
dokud vybrat smazat data.
Databáze, která umožňuje mi na dotaz informace.
A opravdu, že to, co je databáze.
>> Představujeme dnes, a Příští týden také technologie
volal SQL-- strukturovaného dotazu Jazyk, který je jiný jazyk.
Je to v podstatě programování jazyka, ale pro databáze.
A databáze pro tuto chvíli, jen myslet jako super efektní verzi
Microsoft Excel nebo Google Tabulkami nebo čísla Apple.
Je to obecně program, který umožňuje ukládat spoustu dat
v řadách a sloupcích, zcela jako byste mohli v aplikaci Excel.
>> Ale co je hezké, zejména v případě, nejsme výborný obeznámeni s aplikací Excel,
co SQL vám umožní udělat, je to dotaz Informace o psaní řádků kódu
kde je to možné, i když vaše Databáze má milion řádků v něm,
můžete najít věci, super rychlý.
Ve skutečnosti, Excel je zvláště špatné velkých datových souborů.
A ve skutečnosti, až na pár Před lety, ukázalo se,
Excel by umožnila pouze ukládat až 65535 řady data--, které
zní jako hodně, ale u čas jsem byl postgraduální student,
a Pamatuji si zakopl to proto, že jsem byl generování
CSV soubory pro svého výzkumu a já Chtěl, aby je rychle analyzovat
pouhým otevřením v aplikaci Excel.
Samozřejmě, můj počítač právě havaroval, proto, že jsem měl více než 65.000 řádků.
>> Ale kampak asi 65.535 pochází?
Co to dělá Microsoft, podle všeho?
Pokud jste dobrý se svými pravomocemi dvou?
Jo, oni byli za použití 16-bit hodnota reprezentovat číslo řádku.
A za druhé až 16 je 65,536-- minus jedna, protože pokud budete
nulový index znamená, že byl většina počet řádků jsem mohl mít.
A to byl jen rozhodnutí o designu.
Uložením 16 bitů, oni mě omezen na 16.000 řádků namísto 4 miliardy,
které jsem mohl mít v ideálním případě.
Ale teď, budeme zavést to více v internetovém kontextu.
A co je hezké o SQL je, že i i když je to dost silný a dost
sofistikovaný, je to opravdu vaří až na čtyři klíčové operace, čtyři
klíčové funkce, pokud will-- Select, pro získávání dat, vyhledávání
pro data; odstranit nebo mazání dat; vložka pro přidávání řádků do databáze;
a aktualizace.
Takže pokud jste někdy používali Google Tabulky, Apple, Microsoft Numbers
Excel, jste popraven, s největší pravděpodobností, vše
z těchto operací jako lidské strany jen pomocí klávesnice a mouse--
vkládání dat, vočima zvolte nebo vyhledávat data,
nebo aktualizovat údaje či odstraňovat data.
>> Takže co to znamená?
Dobře, předinstalované v CS50 IDE je program s názvem MySQL.
Je to zdarma, open-source databáze, která je super populární.
Facebook, například, používá to, aby to den, mimo jiné nástroje, které používají.
A spousta velmi oblíbené webové stránky používat to z velké části proto, že je to rychlé,
a protože je to zdarma.
I když jistě existují alternativy.
A někteří z vás možná fušovat s alternativy pro závěrečných prací.
>> Jedná se o snímek obrazovky, zatím, z webový nástroj s názvem phpMyAdmin.
Je to náhoda, že Tento webový nástroj je také
napsaný v jazyce, PHP, ale co to znamená dělat
Je nám webová interface do databáze.
Vzhledem k tomu, MySQL je obvykle něco, vás historicky,
by v interakci s pouze s příkazového řádku.
A to by bylo super nepříjemné a Arcane mít
zadejte příkazy textové vyberte Údaje, vložit data, a mazat data.
Takže někteří lidé na internetu napsal program, internetový
že dejte nám zvládnout data v naší databázi.
Je to jako dvojitým kliknutím na Excel, a běží její webové verze a.
>> A co budete používat to pro nakonec příští týden, a to v p-set šest,
ale je vybudovat něco, co volal CS50 Finance, který
bude mít databázi Uživatelé, s uživatelských jmen a hesel,
Dolar částky, které mají ve svých bankovních účtech.
Je to bude něco, co použít k uložení
symboly a množství populací, které uživatelé
si koupil za použití virtuální dolarů, které vám dám jim.
A to bude umožnit uživatelům registrovat pro vaše stránky,
takže i vašich přátel mohou naladit na vašich webových stránkách
a vlastně registrovat, přihlášení a pohrajte
a pokusit se najít chybu v kódu, a pokusit se najít chyby na své webové stránky.
A oni si prostě zaregistrovat přidávání se, účinně,
pomocí kódu, píšete do databáze.
>> Například, to je rychlý obrazovky z toho, co je databáze by mohla vypadat.
To bylo od jednoho z loňské solutions--
to je jako mini Excel souboru, uložené v naší databázi,
uložené v tomto software nazvaný MySQL.
Na levé straně, jsem zjevně vzhledem k tomu, každému uživateli jedinečné číslo.
Ve druhém sloupci, jsem dal každý uživatel name-- můj vlastní
mezi nimi.
A na pravé straně, Dal jsem jim hash.
>> Nyní je to vlastně heslo, ale to není prostý text hesla.
Je to šifrované heslo, pokud budete, nebo hash hesla.
Což se vrátíme do zanedlouho.
>> Ale pokud jste někdy četl článek o tom, jak
vaše heslo na nějaké bance nebo některé webová stránka mohla být ohrožena,
to může obecně znamenat jednu ze dvou věcí.
Tak to je jen výňatek ze šesti uživatelů.
Všichni z vás nyní může přijít out přes hacking nebo praskliny
co hesla našich šest lidí jsou.
Ale pokud jste někdy dostali výstraha nebo omluva
od společnosti nebo webové stránky řeči, Omlouvám se, hacker vloupal do naší databáze,
asi byste měli změnit svůj heslo, co by to znamenalo?
>> No, jeden mohl znamenat, že společnost byla více pitomý,
a byl uložením hesla ve sloupci, jako je tento, nezašifrované.
Což znamená, že protivníka, který ukradl databáze,
doslova zná vaše Uživatelské jméno a heslo.
To je ten nejhorší možný scénář.
A jak uvidíte v p-set sedm, tak snadno, aby se zabránilo.
Neexistuje absolutně žádná omluva pro to forma hlouposti v dnešním Internetu.
Two-- a najdeme nějaké články svědčit skutečnost, že tato stále
se stane, nonetheless-- dva, možná protivník
ukradl tuto verzi databáze.
Což je stále ještě trochu špatně, protože teď vědí, že mám šest zákazníky,
Vím, že uživatelská jména z těchto šesti zákazníků,
a já vím, že šifrované verze nebo hashed verze,
hesel těchto šesti zákazníků.
Ale každý z vás, kteří by mohlo udělal [? Hacker 2?]
kde jste popraskané hesel, nebo vzal Podívejte se na této verze problému
set, proč je to ještě trochu znepokojující v případě, že protivník zná vaše hash
hesla?
>> Diváků: Vzhledem k tomu, co mohli zadejte celý slovník
do hash funkce.
A pokud vaše heslo je slovník Slovo, [? oni mohou jen match--?]
>> DAVID Malan: Přesně tak, protivník můžete jen psát kód, jako někteří z vás
udělal pro [? Hacker?] 2, kdy jste iteraci
všechna slova ve slovníku, nebo všechny možné kombinace A
až Z a jedna až nine-- který zní jako hodně, a to je.
Ale pro počítač, je to zatraceně rychle.
A ve skutečnosti, že bylo bod [? Hacker 2,?] Byl
aby se věci, které doslova vypadá to,
a zpětně analyzovat co to vlastně bylo.
>> Takže se podíváme na to, jak můžeme uložit tento efektivněji.
Ukázalo se, naštěstí v MySQL, tam jsou bude datové typy.
A jeden z legrace částí o navrhování databází, abych byl upřímný,
je vlastně rozhodování pro sebe Jak byste měli reprezentovat data?
Pokud byste představují telefonní číslo as int, jako velký číslo nebo dlouhé?
Nebo si skutečně udělat jako sled znaků?
A tam může být velmi netriviální důsledky tohoto.
>> Ve skutečnosti jeden z Nejdříve, zábava Germane příběhy
je, když Mark Zuckerberg budoval Facebook, to bylo původně psáno v,
a přesto je z velké části napsán v PHP.
A jeden z největších problémů oni stáli na počátku byla měřítka.
Když se přidával do školy poté, co Škola po škole, pokud je mi známo,
jeden z originálních řešení byl v podstatě kopírovat a vložit
některé z databází a některé z kódu,
takže Harvard byl běžící na vlastní server
a MIT běžel na vlastním serveru.
A to byl důvod, proč, pro některé z vás, kdo by mohl připomenout,
jste nemohli mít přátele v jiných sítích.
>> Vy asi nemáte přátelům MIT nebo Harvard před 10 let nebo tak,
ale vy jste nemohli span sítě pro částečně z tohoto důvodu.
A jeden z největších výzev pro Mark a pro firmy, jako je Facebook
je vlastně manipulaci stovky a tisíce a miliony
žádostí za sekundu.
Takže věci, začneme mluví o tento týden
jsou opravdu bude relevantní k psaní dobrý software, a populárně
úspěšné nástroje, které zvládne spoustu uživatelů.
>> Takže budeme hovořit o věcech, jako je indexování a vyhledávání,
ale že to je pro dnešek vše.
Uvidíme se za více ve středu.
>> [MUSIC - "Seinfeld" téma]
DAVID Malan: můžete, abyste to, a odečíst od ní.
A nemusíte držet se některé předem stanovené množství paměti.
No, co se, že bude jmenovat?
>> Reproduktor 1: No, co se děje?
SPEAKER 2: Co tím myslíš?
Dává přednášku.
DAVID Malan: A můžeme použít funkce volána malloc k memory--
>> Reproduktor 1: Proč se jeho paže v pohybu?
>> SPEAKER 2: Dobře that's-- víte, že je to normální.
Je to jako, že má jen velké klobásy visí tam.
>> Reproduktor 1: To je normální?
>> SPEAKER 2: Jo, myslím, že jsme jen předpokládat, on náhodně
nahradil jeho deodorant s vteřinovým lepidlem.