>> DAVID Malan: Olgu.
See on CS50, ja see on nädala lõpuks üheksa.
See oli keeristorm üle Viimase paari päeva jooksul.
Ja probleem pani seitse, kui sa põlve sügavale ta aru, seal on üsna
natuke uus, mis seal sees on.
Aga vaatame, kas me saame panema kõik koos siin lühidalt
enne siis pöördub ära veel teises suunas ja nägemine
Kus mujal me minna ei saa.
>> Seega seni oleme rääkinud HTML.
Me oleme rääkinud CSS.
Me oleme rääkinud PHP.
Sul tekkisid SQL.
Täna me räägime natuke umbes JavaScript.
Aga kuidas kõik need erinevad keeltes kokku sobivad?
>> Nii me rääkisime eelmisel nädalal umbes mõiste, mille server.
Teeme lihtsalt joonistada ristkülik nagu web server siin.
Ja web server teenib kindlasti faile.
Ja mõned neist faile saab HTML-faile.
Nii et üks asi, mis veebi server saab sülitama olla faili
me lihtsalt juhtida niimoodi sisaldavad mõned HTML.
Nii üldarusaadavat mõttes, mida Mis HTML saate teha?
>> Publik: Page välimus kena.
>> DAVID Malan: OK, teeb lehe välimus kena, kuigi ma arvan, et olen tõestanud
et muidu.
Nii HTML ei lase sul panema lehekülge struktuurilt ja see võimaldab teil
omamoodi esteetiliselt märgistada lehel märgistada staatiline sisu, nii et te
saab siis vaadata seda brauseris.
>> Aga see on võti.
See on staatiline sisu.
Sa kirjutad seda, mida salvestada, ja siis vedada.
Ja web server siis teenib ta kuni oma külastajaid.
>> Aga me Stilisoida asju kasutades erinevat keel üldse.
Hakkasime kasutama style atribuut teatavaid koode.
Ja style atribuut paneme asjad nagu kirja suurus ja värv.
Ja sa oled ilmselt hakanud avastama, või sa varsti lõplikuks
projektide potentsiaalselt veel teisi omadused, mida saab kasutada CSS.
Ja nii üldarusaadavat mõttes, mida tõesti siis ei CSS teha?
Need on vaid näited.
Mis see lasta sul seda teha HTML ei tundu, mida
oleme näinud siiani?
>> Publik: Määratle laadid ise.
>> DAVID Malan: Määratle laadid ise.
Nii määratleb asjad klasside te võivad olla tekkinud või üheselt
kindlaks sõlmede dokument nii et saate Stilisoida neid.
Aga täpsemalt, ma ütleksin, et CSS tegelikult võimaldab teha asju
viimane miil ning võimaldab teil määrata palju täpsemalt esteetika,
arvestades HTML enamasti võimaldab Sa struktuuri saidile.
>> Ja kuigi seal on mõned vaikimisi, nagu nägime silt
rubriik tag, mis jämedalt öeldes tehtud asjad suur ja julge.
See on üsna üldine määratlus tag - suur ja julge.
Mis font size on?
Mis värvi see on?
Kuidas julge on?
Ja CSS võimaldab rohkem peeneks tune asjad niimoodi.
Samuti paigutus, nagu mõned teist on näinud.
>> Ja ausalt öeldes, CSS on natuke räpane keel.
See on väga võimas, et saate sõna otseses mõttes igal veebilehel, et olete
näha veebis täna, kuid see on selline valu kaela.
Ja mõned teist on põrutasin oma peaga vastu seinu juba lihtsalt teha
midagi loll nagu keskus menüü probleem pani seitse kui oled õppinud
Sel hetkel juba.
>> Aga aru, need asjad saada lihtsamaks ajas.
Te hakkate märkama mustreid.
Ja jälle, Google on sinu sõber eri viise, mille abil saab
lahendada selliseid probleeme.
>> Julgen öelda, CSS ja HTML enam üldiselt, siis on võimalik lahendada probleeme
palju rohkem võimalusi, mis kõik võiks väga õige olla, kui sa saaksid
midagi nagu C, isegi nüüd PHP või JavaScripti.
Seal on lihtsalt palju erinevaid kuidas panna asju teha.
>> Aga see hakkas saada räpane, me ütlesime.
Just selline segunemine oma HTML ja oma CSS stiilis atribuut oli
veidi lohakas.
Ja nii me selle asemel öelda, omamoodi abstraktselt öeldes, et sa peaksid
vähemalt hakkavad tegur välja oma CSS ilmselt.
Ei oma stiili tunnused, kuid vähemalt kasutada style tag sees, mida
osa veebilehe?
>> Publik: Head.
>> DAVID Malan: pähe.
Senini oli meil ainult pealkirja üles olemas, kuid saate lisada ka stiil
sildistamiseks ja võite panna CSS jämedalt räägi poole lehekülje ülaserva.
Aga siis võtsime asjad sammu edasi ja me tegureid, et rohkem
eraldi faili.
>> Ja nii need kaks faili olid kuidagi nüüd seotud.
Ja tõepoolest see oli tag et seda tegin.
Ja mis oli üks üldine põhjusi faktooring meie CSS
kõik rohkem?
>> Publik: korduvkasutamine.
>> DAVID Malan: korduvkasutamine.
Eks ole?
Võite näinud p-set seitse juba et palju lehti,
ostmine lehel müügi lehele, portfelli lehel, on ilmselt
struktureeritud mõnevõrra samamoodi.
Seal CS50 rahandus logo ülaosas kui sa oled otsustanud, et seda muuta.
Seal on jalus allosas lehekülge.
Ja CSS võimaldab teil siis tegur see välja see eraldi faili, nii et kui
sa tahad midagi muuta maailmas üle kogu oma saidile, saate tõesti
lihtsalt muuta seda ühes kohas.
>> Aga seal on hind, mida maksate potentsiaalselt poolt, kes on arvutatud välja
CSS mu HTML faili eraldi faili viitamise seda
tag, mis me nägime esmaspäeval.
Mis võib Puuduseks on see?
Mõeldes tagasi nädal tagasi, et kui me oleme räägime HTTP ja TCP / IP ja kuidas
Internet töötab.
Midagi on siin?
>> Publik: See võtab rohkem aega.
>> DAVID Malan: See võtab rohkem aega.
Miks?
>> Publik: [kuuldamatu].
>> DAVID Malan: Jah.
Nii et see väidetavalt võtab natuke rohkem aega.
Sest üks, CSS on ilmselt ei ole samas failis.
Nüüd sa pead tegema mitte üks, vaid kaks taotlust.
Ja kõik need taotlused, nagu nägime Chrome nn inspektor,
ja me vaatasime võrgu tab, iga neid faile on vaja ühe HTTP
taotluse, mis me nägime võtab mõned ajaga.
Nüüd võib-olla see ei ole palju.
Võibolla on see vaid 20 millisekundit.
Võib-olla on 200 millisekundit.
>> Aga mõtle lehekülg nagu Facebook, või CNN või Google, mis on palju
suuremad näited me oleme vaatasin siiani.
Need leheküljed võivad olla kümneid faile, millest igaüks võib nõuda
faili allalaadimist.
Nii et asjad võivad potentsiaalselt hakata aeglustuma.
>> Ja eriti need päevad, mil me kõik mobiiltelefonid taskus ja
aeglasem internetiühendused, võttes oodake veel paar millisekundit, paar
rohkem millisekundi täiendavate faile saab tegelikult aeglane.
Latentsus on sõna, mis kirjeldab objekti ootab, et sul on, et sa
tekib siis, kui ootad mõned tükk informatsiooni.
>> Aga ei pea.
Nii see ei ole kõik omamoodi -
see on tegelikult natuke kõikuma siin.
Ohustavad nüüd, aga brauserid saab teha kui nad on targad, et vältida
oleks vaja taotleda sama styles.css faili uuesti saab teha mida?
>> Cache ta.
Nii vahemällu -
C-C-H-E -
Üldiselt tähendab siin lihtsalt säästa fail, mida taotletakse esmakordselt, ja
Seejärel kontrollige oma cache seda.
Kontrolli oled omamoodi hoiuruum, ja kui sul on juba
koopia styles.css, isegi kui mõned teised lehekülje p-set, või mis tahes veebilehel,
taotleb uuesti, lihtsalt anda kasutaja sama puhverdatud koopia.
Ei viitsinud seda taotlevad.
>> Need on valdavalt olemas, kuigi, nagu mõned teist on rakendunud üle p-set.
Kui teete muudatusi serveris ja sa lähed tagasi brauser ja te
reload, mõnikord brauser ei sulle teene ja ei häiri
uuesti allalaadimist styles.css fail sest nüüd, mis on vastuolus
et neid stiile, et Facebook kasutab muudame tund tund või
igapäevases?
See on üsna väike.
Nad võivad aja jooksul muutuda, kuid mitte minut või tund.
>> Nii trikk, lihtsalt FYI tehes web arengut, on sageli hoidke
tõstuklahvi näiteks ja seejärel klõpsake laadida oma brauseris, ja see
tavaliselt sirvija reload kõik, isegi kui sul on juba
see vahemälu.
Nii et taas, tasa ja varjuküljed, kuid neid kõiki
lõpuks disaini otsuseid.
>> Nüüd, me ei ole lihtsalt lõpetada lugu siin.
Kui ma nüüd tagasi minna ja edasi ja tagasi ja tagasi alustasime tutvustada mitte ainult
HTML, kuid PHP.
Nii üldarusaadavat mõttes, mida php tehkem?
>> Publik: [kuuldamatu].
>> DAVID Malan: Mis see on?
>> Publik: Hakata loogika arvesse kood.
>> DAVID Malan: Jah, tutvustada loogika oma kood.
Nii et see on tõsi programmeerimiskeelt silmad ja muutujate ja
funktsioonid ning tingimused, ja kõik asju, mida me oleme kasutanud viis tagasi
kui alates nullist.
Ja PHP, mida me oleme näinud, mida saab kasutada kas käsurealt - see
ei pea midagi tegema, web, kuigi see on
tegelikult alguse ja mida see kipub olema hea ning soodustab -
kuid mida saab kasutada PHP lihtsalt loomu ning asjaolu, et see on print ()
funktsioon ja printf () funktsiooni, või echo () funktsiooni.
Seal on kobarad võimalusi, saab printida teksti PHP.
>> Seega saate kasutada seda programmi keel väljund täpselt
mida me rääkisime varem.
Võite dünaamiliselt HTML.
Võib-olla mitte kõik.
Äkki kõva kood asjad, nagu päise ja jaluse ning logo,
ja oma stiili lehed, ja kõik see.
Aga midagi sellist p-pani seitse, kuhu manipuleerides varude ja
näitab kasutaja portfell, mis on läheb dünaamiliselt muuta, võid
kindlasti kasutada PHP ja loogika see annab sa nagu programmeerimiskeelt
väljundi dünaamiliselt alamhulki lehel.
>> Nii et kui te räägite dünaamilisi veebisaite, või veebi programmeerimine, mis on
mida sa tegelikult räägid.
Kasutades keeles nagu PHP või asjad nimetatakse Python või Ruby või Java või
veel teisi keeli, päringu andmebaasi Sageli, või teise serverisse ja
siis dünaamiliselt sülitama HTML.
>> Nüüd lõpptulemus, kui kõrvale jätta, on et HTML kõige veebilehed,
sealhulgas oma p-set seitse, on ilmselt saab olema tohutu segadus, kui
te vaatate allikas kood brauseris.
See ei ole suur asi.
Sel hetkel, kui me hoolime stiil, me hoolime
kraam, mis sa kirjutad.
Me ei hooli kraami et mida teie kood väljundid.
Nii et ärge muretsege taandus siin, kas see on PHP, mis on
tegelikult kirjutamine asju.
Lõppude brauser ei huvita, ja inimene ei saa vaadata
tekkekohas niikuinii.
Me personal Näiteks oleks vaadates oma PHP.
>> Nii et lubage mul anda kiire näide nüüd miks muidu see võib osutuda kasulikuks.
Nii öeldes, ma ei mäleta viimast kord kasutasin C lahendada probleem
reaalses maailmas.
See oli ilmselt lõpetanud kooli kui Mul oli vaja kasutada keelt, et
oli suhteliselt madal tase ja andis mulle võimalus teha midagi väga kõrge
täidab tõesti päästa nii palju CPU tsüklit, kui suutsin, suuresti
sest olin kasutades tohutu andmekogumid ja iga protsessori tsükli arvestata.
Ja ausalt öeldes, isegi asjad nagu telefonid need päevad ja muud seadmed
kui sa ei ole päris nii palju mälu ja te ei saa päris olla nii
palju CPU, kasutades kiiremini keeles on ikka ahvatlev.
>> Kuid reaalses maailmas, kui sa lihtsalt taha visata mõned programmi koos
analüüsida mõningaid andmeid või olete kogunud terve hunnik registreeringud
mõned üliõpilased ja tahad väga kiiresti automatiseerida saates e-kirju
ükshaaval iga üks neist registreerijatele, sa lähed, et jõuda
kõrgemal tasemel keeles kui C nii rääkida.
Midagi PHP või Python või Ruby, või pool tosinat teised, et on olemas
nendel päevadel.
Aga need kolm on ilmselt kõige trendikas praegu.
>> Ja mida see tähendab, et saate avada tekstiredaktor nagu gedit või
Kõige midagi ja siis lihtsalt alustada kirjalikult koodi ilma muretsema
kompileerimine, ilma, et tõesti muretsema mälu haldamine,
pidades meeles, kuigi see veidi räpasus lõpuks tulevad tagasi
hammustada teid, kui andmekogum saab suurem või probleem muutub suur.
Aga mida see tähendab meil on järgmine.
>> Lubage mul minna ja joosta speller alates lahendamist kuus.
Nii et see on minu Prefiksipuu põhinev rakendamine et ma kasutasin on suur
pardale, kus ma läbi mitte nii hästi.
Me tuleme tagasi nädala pärast ja vaadata neid, kes ei jõua atop
suur pardal meie viimane loeng.
Aga nüüd, lubage mul minna ja lihtsalt joosta oma lahenduse teksti ja me teeme
King James Bible, ja siin me läheme.
>> Nii et need on kõik väidetavalt valesti kirjutatud sõnade välja
King James Bible.
Ja minu rakendamisele kulus pool sekundit kokku.
Nii ei ole liiga halb on see konkreetse arvutiga.
Aga mõtle, kui palju kood oli vaja kirjutada.
Mõtle, kui palju koodi sa pidid kirjutama.
Mõtle mitu tundi veedetud D-hall või oma Dorm või kus iganes
tegelikult kodeerimine üles, et lahendus.
>> Noh, kui ma tegelikult olema kõrgem keeles nagu PHP, võtta teadmiseks
Mida ma saan teha siin.
Esimese, oletame, et see on hoopis sinu distributsioon kood.
See on fail nimega speller.
See on saadaval osana tänapäeva jaotus kood.
Ja ma lähen laine mu kätt kõige kohta üksikasju, kuid see on tegelikult
Huvitav näide sellest, kuidas sa võiks port keel
nagu C üle PHP.
Ma sõna otseses mõttes avanud kaks teksti aknad, üks minu C versiooni speller.c,
ja hakkasin lihtsalt tõlkida see minu pea PHP ja kirjutades kasutades
lähim samaväärseid ülesandeid.
>> Nii mõned need asjad on erinevad.
Me nägime viimast korda, et PHP ei kasuta sisaldavad üsna ühtemoodi.
See kasutab nõuavad tavaliselt, kuigi hulka ei eksisteeri.
Määrake on natuke erinev # Define C, kuid see on
kuidas teha püsiv.
$ Argc selgub olemas PHP, nii et me oleme näinud, et enne.
Need on vaid muutuja kõiki mis algavad dollar märke.
Meenuta need on lihtsalt hunnik ujuva punkti.
>> Nii pikk lugu lühike, sa oled teretulnud flip läbi selle, kui uudishimulik, see on
peaaegu line-for-line konverteerimine C versiooni speller.c arvesse PHP.
Ja sa võid seda uuesti pool tosinat teistes keeltes.
>> Aga mis on huvitav on see.
Või mis on ausalt ehmatavam on see.
Lubage mul minna ja kirjuta umbes dictionary.php, ja väidavad, et ma olen
läheb minna ja uuesti rakendada lahendamist kuus siin.
>> Teeme ettepaneku, et esiteks on see fail, mida viiakse ellu
PHP, las ma avan oma silte niimoodi.
Annan ennast globaalse muutuja, $ suurus muutub null.
Ja ma annan mina hash tabel.
Ma kasutan hash tabel selle asja.
Kuidas deklareerida hash tabelit PHP?
Valmis.
OK.
>> Nii sulg sulg tähistab Mis PHP, nagu me oleme näinud?
Massiiv, kuid massiivi võib olema assotsiatiivne massiiv.
Assotsiatiivne massiiv on andmestruktuur
seostab võtmed väärtused.
>> Nüüd lihtsaim arvuliselt indekseeritud massiiv, need võtmed on mis?
Null, üks, kaks, kolm, eks?
Vana kooli värk tagasi C. Kuid see ei saa Samuti strings nagu foo ja bar,
või maxwell, või mis tahes sellise string.
Ma võin ära, et vaid hetk.
>> Lubage mul minna ja kuulutada funktsioon nagu -
teeme load () esimene.
Seega funktsioon load ().
Ja PHP on veidi teistsugune, kuna sa sõna otseses mõttes tüüpi funktsiooni, kuid te
ärge tippige tagastamise tüüp.
Ma lähen edasi minna ja öelda, et load () funktsiooni peaks võtma
argument $ sõnastik, lihtsalt nagu C versioon tegid.
Ma teen et mälust.
>> Ja pakun, et ma olen kavatsen seda teha.
Ma lihtsalt teen foreach.
Ma lähen kutsun funktsiooni nimetatakse fail (), mis kulgeb nimel, et
fail, mis on varieeruv $ Sõnastik $ sõna.
Ja siis sees minu jaoks loop siin, ma olen läheb minna ja säilitada oma
$ Tabel, $ jutud tõele.
Valmis.
Oh, oota.
Valmis.
OK.
>> See on load () funktsioon öelda PHP.
Nüüd, miks see toimib?
Ja ma olen selline petmine siin.
>> Niisiis, üks, foreach nägime lühidalt viimast korda.
See tähendab lihtsalt, et saate kinnitada, üle array ilma häirib i
ja n ja pluss pluss, ja kõik see.
Sõnastik on muidugi faili nimi midagi suurt või väikest, kaks
sõnastikud kasutasime viimast korda.
Fail on funktsioon, mis avab teksti fail, loeb seda rida-realt, ja
kätt tagasi tohutu hulga, iga, mille elemendid on
joont, et fail.
Nii et see kombinatsioon fopen ja fread ja samas loop ja kirjutamisel,
ja kõik see.
Lõpuks, nagu sõna tähendab lihtsalt, et see on muutuja Ma juurdepääs
iga iteratsiooni selles silmus.
>> Nii lühike, see üks liner tähendab siin avada faili, mille nimi on sisse
sõnastik, muutuja, Käi see rida-realt, ja iga kord, kui sa
line, kaupluse muutuja nimega sõna, ja siis midagi teha sõna.
Mida ma tahan teha?
Ma tahan, et sõna minu hash tabel.
>> Noh, ma ei pane midagi minu hash tabelit just nagu C
kasutades nurksulgudes.
See on nimi, minu hash tabel.
Ma lähen indeks et hash tabel selles kohas.
Nii ei sulg null, ei sulg üks.
Bracket quote lõppeb midagi, mis iganes see sõna.
Ja nagu te võib-olla oma hash tabel töö Prefiksipuu, sa lihtsalt salvestada
tõhusalt Loogiline kaudselt või otseselt.
Valmis.
Ma ladustamiseks väärtus true.
>> Nüüd on paar asja Ma pealiskaudsust siin.
Tehniliselt ei kavatse olla tüütu uuele reale / n, lõpus
iga sõna.
Nii et ma peaks ilmselt helistada PHP funktsiooni nimetatakse karbonaad (), mis
sõnalt tükelda see välja lülitatud.
Ja ma tegelikult vaja teha üks asi.
Ma peaks ilmselt juurdekasvu suurus iga iteratsiooni, nii et ma olen kursis hoida
maailmas, mis see on.
Ja ausalt, ja see on üks lollim aspekte PHP, kui sa oled
kasutades globaalse muutuja, peate selgesõnaliselt öelda, et sa oled.
Nii et ma lähen tegelikult kirjutad ülemaailmne $ Suurus, global $ lauda ja nüüd
mu funktsioon on täielik.
>> Nii ei ole päris nii lihtne kui varem, kuid Tõenäoliselt jäi vähem aega kui C
versioon ehk?
OK.
>> Nüüd teeme check () funktsiooni.
Vaatame, kui vähemalt viis tunni lõpus, et ta võttis meid C. Seega
Lubage mul minna ja kuulutada vaadake funktsioonina.
Võtab argument sõna, mis on läheb tulema speller.
Ja ma lihtsalt kontrollida, kas järgmine muutuja isset tabel
sulg strtolower sõna -
olgem tasakaalu kõigi minu sulgudes -
siis tagasi tõsi.
Else -
See oli tõesti raske selle programmi raames.
Else, tagastab false.
Valmis.
See kontroll ().
>> Nüüd, miks see toimib?
Noh, mida ma möödunud ühesõnaga mis on string.
Kaks, Ma kontrollin sees hash tabel, kes nimetatakse $ tabel.
Ma surumine väiketäheliseks helistades funktsiooni üsna sarnane tolower () in
C, kuid see ei kogu sõna, mitte ühte märki.
Ja kui see on seatud, teisisõnu seal on määratud väärtust, teisisõnu
kui see on tõsi, siis jah, see on sõna.
Sest ma panen ta sinna load ().
Ja kui ei, siis ma lähen tagasi false.
>> Nüüd teised on lihtne.
Funktsioon suurus (), siis kuidas ma seda teen?
Ma põhiliselt seda tagasi $ suurusest.
Aga ma tehniliselt vaja seda tüütu asi.
Ja tegelikult üles kuulda, olin lõikamine ühte nurka liiga palju.
Mul on tõesti vaja teha global $ tabel.
>> Aga mis öeldud, lossimiseks).
Lossimiseks () on hämmastav.
Funktsioon lossimiseks ().
Kui ma tahan, et rakendada lossimiseks ()?
Valmis.
OK.
>> Nii lossimiseks (), mälu haldamine on täiesti hoolitseda sind
midagi nagu PHP ja palju kõrgemal tasemel keeles.
Nii et see on hämmastav.
Nagu miks kurat me veetsime viimase kaheksa pluss nädalat C kirjalikult
ilmselt tõesti aeglane, tõesti aeg tarbivad probleeme kümnete tundide
töö kanname vööd?
>> Noh, üks asi, see võib töötada trahvi väikesed programmid.
Kindlasti kiirendada minu arengu ajal.
Aga vaatame, mis juhtub reaalses maailmas.
>> Lase mul minna sellesse kataloogi terminali aknas.
Seal speller.
Ja teate, kui kõrvale, ja te võite on tekkinud selle lahendamist
kuus või probleem pani seitse.
Sul ei ole rangelt pea lõppu PHP faile. php.
Kui paned line niimoodi esimene kell väga top, mis on eriline joon
süntaks, mis sisuliselt tähendab leida programmi nimega PHP ja kasutada seda
tõlgendavad seda faili.
Nüüd keegi ei tea, et Ma töötab PHP programm.
Ma saan käivitada see lihtsalt nii, nagu see olid midagi koostatud C.
>> Aga siin on asi.
Tegelikult teeme seda jälle.
Dropbox/pset6 /.
Seal speller.
OK, 0,44 sekundit.
See sai kiiremini seekord.
>> Nüüd lähevad PHP versioon.
Nice touch.
Aga mõelge, kui palju aega Ma salvestatakse tööajal.
OK.
>> Nii 3,59 sekundit, mis tegelikult ei kõla täpne kas.
Aga see on, sest pikk lugu lühike, kui sa välja printida suur summa
kraami ekraan, mis ise aeglustab asju ette.
Mida see tegelikult oli CPU Seade oli 3,59 sekundi sisse
vastandina C, mis võttis 0,44 sekundit viimasena.
See on tõeliselt järjekorras suurus erinev.
>> Nii et kui on mis hind tuleb?
Miks on nii palju aeglasem?
Miks PHP täita nii halvasti?
Danielle?
>> Publik: Sa ei ole tegelikult kasutada hash tabel.
>> DAVID Malan: ma ei ole tõesti kasutada hash tabel.
Nii et ma sellist tegi.
Nii et see on assotsiatiivne massiiv.
Tõenäoliselt, kui inimesed PHP on väga targad, nad kasutasid all
kapuuts tegelik hash tabel ellu midagi nagu C või C + +.
Kuid.
Jah.
>> Publik: [kuuldamatu].
>> DAVID Malan: Jah.
Seega iga funktsiooni Kirjutasin nüüd - tegelikult, sa võid öelda, et veel kord
veidi valjem?
>> Publik: Kõik funktsioonid, mis sa lisada on palju rohkem täis
võimsus üle -
>> DAVID Malan: Nii et see on väga õige.
Seal on palju rohkem üldkulusid, et me oleme tõesti ei näe, keskendudes ainult
dictionary.php, mis ma kirjutasin.
Seevastu seal on terve tõlk läheb taustal.
Tõepoolest, kui ma jooksin selle programmi, siis ei töötab koostatud nulli ja need
mõeldud minu Intel CPU.
Pigem oli see töötab rida-realt PHP kood, mis näeb välja täpselt
nagu me kirjutada seda.
Ja nii iga kord, kui te kasutate tõlgendada keel, siis
tegelikult ei maksa seda hinda.
See saab võtta aega, et lugeda fail ülevalt alla, vasakult
õige, ja siis täitma iga line ja jälle.
>> Nüüd tegelikult eriti veebis saab tegelikult kiirendada seda protsessi
vahemällu tulemused PHP koodi tõlgendada.
Ja mis mõtet netis, sest kui sa ei ole üks kasutaja nagu
mina siin, aga 1000 või 10000 kasutajat, siis võibolla esimest korda fail on
juurde see on aeglane, kuid seejärel see on palju kiirem.
>> Aga ka see jällegi on kompromiss.
Ja midagi uuringuandmed määratud, või isegi midagi suurt nagu
Selle kasutajad saavad lõpuks hakata tundma, et aeglustumine.
>> Nii lühike, tõlgendatakse keeli väga moes, väga populaarne ja
ausalt ilmselt keelte tuleks jõuda ülesannete lahendamisel
pärast CS50.
Aga aru, kui palju sa oled tõesti võttes iseenesestmõistetavana all kapuuts
tegelikult on möödunud mitu nädalat hash tabeleid ja puud, ja püüab,
mida kasutatakse lõppkokkuvõttes tegelikult rakendada asjad sulg,
square bracket, mis meie võimuses, praegu tänulikult enesestmõistetavaks.
>> Võtame pilk nüüd Selles web kontekstis.
Ja ma mainisin viimast korda, et seal on hunnik superglobals PHP et
ei ole tõesti asjakohane at käsureal.
Nad on enam asjakohane seoses kasutades PHP web kontekstis.
Nii töötab PHP veebiserver, et genereerida asju HTML.
>> Ja me vaatas $ _GET ja $ _POST, ja see on kui automaatselt kasutajate
input jõuab lihtsalt kui saadate moodustada fail lõpeb. PHP web
server nagu aparaat.
Aga vaatame lühidalt $ _COOKIE Ja $ _SESSION.
>> In üldarusaadavat mõttes, mida on küpsis nagu sa aru kontekstis
kasutades veebis?
>> Publik: failina arvutis.
>> DAVID Malan: Jah.
See fail kasutaja arvutisse istutatud tahes veebilehe
juhtub, et külastada.
Nii et kui te lähete Facebook, kui lähete et bankofamerica.com, kui lähete
et google.com, kui lähete peaaegu iga kodulehel maailmas nendel päevadel,
sealhulgas cs50.net, küpsise istutatud arvutisse, mis on
kas väärtus salvestatakse RAM oma arvuti brauseri mällu või
mõnikord tõepoolest faili talletatakse kõvakettal.
>> Ja mida tavaliselt hoitakse seda faili ei ole sinu kasutaja nimi, mitte teie
salasõna, tavaliselt mitte midagi tundlik, kui kodulehel ei ole nii
hea oma julgeolekut, vaid pigem see on suur kordumatu tunnus seas
muid asju.
See on suur juhuslik number istutatud oma arvuti, kuid sa ei mõtle nagu
omamoodi virtuaalne käsi tempel nagu alates klubi või mõned lõbustuspark, mis
võimaldab töötajatele, omanikele, et teenus, et meenutada, kes sa oled.
Nii et kui suur juhuslik arv on nagu 12345678, kuigi see on ilmselt
mitte liiga juhuslik, mõtlevad, et kui käsitsi templi, et kui külastate
facebook.com esmakordselt nad tembeldab selle numbri oma käsi.
Ja siis, sest te räägite HTTP, siis on brauser, ja kuna Facebook
Ilmselt räägib sama web server, protokoll HTTP ütleb, et
millal sa hiljem külastada facebook.com, kas see teine
hiljem tund hiljem, isegi järgmisel päeval nii kaua, kui te ei ole sõnaselgelt
välja loginud, mis tõhusalt on nagu pesu käed.
HTTP ütleb, et sa peaksid esitama oma käsi tempel iga kord, kui
tagasi, et veebilehel.
>> Mis Facebook siis ei on nad vaadata, et käsi tempel ja
nad ütlevad, oh, 123456789.
Ma ei tea, esmapilgul, et see David Malan Cambridge'is
Massachusetts, kuid nad ei saa kontrollida nende andmebaasi ja öelda, oh, inimene
kelle arvuti me istutatud 123456789 David Malan Cambridge,
Massachusetts.
Näitame, et kasutaja, siis tema konto lehel või oma News Feed.
>> Aga seal on probleem, kui see kuidas web tõepoolest toimib.
Võtame pilk kiire näite.
Olgem tegelikult minna ütlema facebook.com.
Aga enne kui me sinna minna, las mul minna ja avada Chrome'i
Inspektor siin.
Las ma vaatan võrgu alt.
Ja nüüd lähme edasi ja kirjuta aastal https://facebook.com.
Ja ma teen selle nii, et me ei näe, kõik need ümbersuunamisi ja jäätmed
aega vaadates läbi nende.
Lubage mul Enter.
>> Hea küll.
Me näeme terve hulk taotlusi.
Seal tuleb Facebook.
Seal on terve hunnik faile.
Ja siin, iga minu mainita latentsus viimast korda, see on
palju HTTP päringuid.
Aga esimene on ilmselt Kõige huvitavam.
>> Teeme keri siin, ja Ma suumida teine.
See saab olema selline jama, aga vaatame.
Facebook saatis meid terve hunnik asju.
>> Aga oota, huvitav.
Nad istutamist mitte üks, vaid neli poolt templite peale minu poolt siin.
Set-Cookie, Set-Cookie, set-cookie, set-cookie.
Ja seal on mõned funktsioonid siin.
Kõik nad mainida mõningaid objekti lõppemist.
Ja tundub, et Facebook loodab mäleta mind kuni 2015.
Nii et ilmselt aega, mille Ma pean välja logida või nad lihtsalt
automaatselt eeldada, ma olen ei tule tagasi.
Nii et tegelikult korralik ajaga.
>> Ja seal on mõned muud asjad siin toimub.
See küpsis olevat sunniviisiliselt välja öelda, see aegus 1970
enne küpsised eksisteerinud.
Nii brauser on lihtsalt läheb eeldada, OK, see on nagu
pestes käed tempel.
>> Aga nüüd, kui minu brauser teeb järgnevale -
Lubage mul minna ja teha seda uuesti ja uuesti laadimise.
Nüüd ma kerin tagasi top taotlus ja minna
siin taotleda päiseid.
Pange tähele, see.
Nüüd ma alla ei vastus päised, aga teate seda ütleb taotluse päised.
Ja teate, et minu brauser osana oma taotluse pärast lööb reload on
Saadetud vähemalt järgmisi teavet.
Ei ole määratud-cookie, kuid küpsise.
Nii et see on joon, HTTP päis nii rääkida, kui minu brauser on omamoodi
ning ilma minu teadmata esitades minu käes Facebook ülevaatus.
>> Nii et need küpsised võivad olla kasutatakse siis mida?
Tuletada meelde, kes sa oled, või mäletan, kuidas mitu korda sa oled olnud seal, või
tegelikult midagi.
>> Nii et siin on counter.php.
Ja las ma suumida font.
Ja iga kord, kui ma laadige see leht, teade see on meeles pidada, mitu korda
Ma olen seal olnud.
Noh, see pole veel kõik, et muljetavaldav.
Ütleme lihtsalt sulgeb kaardi, ja nüüd lähme tagasi
http://localhost/counter.php.
>> Oh, see on huvitav.
See ikka meeles, isegi kuigi ma suletud tab.
Ja ausalt öeldes, kui ma brauseri sulgemiseks kui rakendatakse õigesti, I
võiks ikka meeles pidada, et see kasutaja on kes ta oli esimene kord, ja
ainult kord kui ma minema Chrome'i menüü mis siin on siin, ja minna
Ajalugu ja klõpsa Kustuta sirvimise andmed, nagu mõned teist võib-olla ka
Varem, alles siis küpsised tegelikult ajal kustutatakse web
arengut.
>> Seega, kui me läheme -
olgem sulguks gedit siin.
Ja kui me läheme nüüd selle faili.
Lubage mul minna meie vhosts / localhost / avalik, ja las ma teen
counter.php.
Pange tähele, et see on päris lihtne programm.
See on päris lihtne veebileht.
>> Nii top faili on lihtsalt kommentaarid.
Aga siin on uus liin, mida võib nägime juba p-pani seitse,
session_start ().
See on rida PHP kood, mis sisuliselt ütleb web server, teha
kindel, et juurida käed ja teha Kontrollige käega marke.
See on kõik, et liin ei, ja see teeb kõik, et protsessi juures.
Siis teate ma pean lihtsalt mõlemad siin.
Kui loendur võti sees selle eriline globaalse muutuja nimega
$ _SESSION On seatud - teisisõnu, kui seal on mingi väärtus olemas -
lähme see üles ja hoidke seda kohalikku muutuja nimega $ counter.
Else, olgem anda $ counter Vaikimisi väärtus 0.
>> Nüüd siin on üks aspekt, PHP, mis on nii õnnistus ja needus.
PHP on natuke lohakas.
Seega arvestades, C, mis oleks ulatus counter olnud
kas siin või siin?
>> See oleks olnud piiratud neile lokkis traksid.
Arva ära?
PHP, see on olemas ka väljaspool neid looksulg, siin ja siin,
ja siin ja siin ja isegi allapoole.
Nii et ma ütlen, et see on õnnistus, mis tähendab, et sa ei pea mõtlema, kui
raske, kui me tegime nädalat tagasi.
Aga see on ka natuke needus, et olenemata sellest, kus te kasutate muutuja
PHP, vähemalt programmi niimoodi, see on ülemaailmselt kättesaadav
parem või halvem.
Nii et sa pead meeles pidama, et nüüd, oma muutujate ei ole määratud.
Te võite need on määratud mujal.
>> Aga mida ma teen lõpuks?
Ma lähen hoida sees, et globaalne muutuja väärtus
counter sisestada tulemus teeb counter + 1.
Nii et see on lihtsalt aritmeetiline et ei
juurdekasvu et counter.
Ja see, et ma ladustamiseks et väärtus tagasi on siin tähendab
sisuliselt uuendada andmebaasi meeles pidada, et kasutaja 123456789 olnud
siin kaks korda.
Ja kui ma seda uuesti, kui järgmine kord ma asendusostu lehekülge, see läheb kontrollima
mu käsi tempel ja öelda, oh, kasutaja 123456789 on nüüd
siin olnud kolm korda.
>> Ja mis PHP jms keeles teeme meie jaoks on nad viinud
kuidas ja kus ja kui kaua salvestada väärtused selles erilist
superglobal.
Ja see superglobal järgmine kord külastada lehekülge on justkui võluväel
Eeltäidetud, täis väärtusi, seal olid sa viimati külastatud
kas see oli hetk tagasi, nädal tagasi, või 2013 ja nüüd me räägime
umbes 2015.
PHP ja web server hoolitseda kõik selle teile.
>> Publik: [kuuldamatu].
>> DAVID Malan: Muutujad PHP on sisuliselt alati globaalne kui sa
deklareerida neid sees funktsiooni ja siis nad on kohalikud
funktsioon ainult.
Aga kuna ma ei ole kirjutanud ühtegi funktsioone, on nad nüüd tõhusalt
globaalne kogu minu pilt siin.
>> Publik: Kas on võimalik et need kohalikud?
>> DAVID Malan: Kas on olemas kuidas teha neid kohalik?
Ainult pakkimine neid funktsioone.
Mis viimane versioon PHP, saad seda teha koos
anonüümne funktsioon.
Aga rohkem, et kontekstis JavaScript.
Aga lühike vastus on ei.
Pikem vastus on jah.
Nice.
Hea küsimusele.
Hea küll.
>> Nii lõpuks leht ise on tegelikult üsna lihtne.
Pange tähele, et kui ma väljumise PHP režiim, tagasivõtmine et kõik see kraam maha
Allpool on ainult hakka sülitama välja toores brauseris.
Mis on hea, sest ma ei taha saata kasutaja mõned HTML, kuid ma ei taha
dünaamiliselt värskendada et HTML.
Ja üks viis, kuidas ma seda teha ei sorteerima väga kiiresti langeda tagasi PHP
režiimis sulg küsimärk võrdusmärk ning seejärel väljund väärtus
counter.
>> Või kui see tundub veidi segasena, see võrdusmärk on tegelikult vaid mõned
süntaktiline suhkur sel printf ($ counter).
Aga ausalt, see on natuke inetu ja natuke tüütu tüüp.
Nii PHP väga kenasti pakub see funktsioon kus saab lihtsalt öelda, et see rohkem
lühidalt samamoodi.
>> Niisiis, mis toimub all kapuuts?
Lähme kiiresti vaadata võrgustik tab siin counter.php.
Ja lubage mul minna ja esimene olgem kustutada oma küpsiseid.
Olgem selge sirvimise andmed alates algusest.
Nüüd lähme tagasi siia.
Nüüd laadige leht uuesti.
Ja ma olen tagasi nullis.
Kuna mu käsi tempel on pestud, Nüüd ma saan uue küpsise.
>> Tõepoolest, kui ma vaatan võrgu kaart ja vaata vastus päised, teade
et seade saadab mind küpsis, kelle nimi on mõnevõrra
omavoliliselt, kuid selline mõistlikult, PHPSESSID.
Ja see saadab mind see tõesti suur juhuslik number.
See ei ole päris mitu.
See ei ole päris kuueteistkümnendsüsteemis.
See on mingi täht string, kuid arvatavasti on see juhuslik.
Ja see on käsitsi templi nii, et rääkida, et ma viidates.
>> Vahepeal, kui ma nuppu reload ja siis pilk see teine ​​joon minu teine
taotlused, teatised nüüd, et minu soov päised sisaldavad PHPSESSID võrdub see,
ei set-cookie, kuid ainult küpsise.
Ja see on minu brauseri esitlus minu käest tempel.
>> Nüüd nagu teaser ja me räägime veel Selle nädala või nii, kuid
Millisel viisil see et sa kaitsetud oma Facebook konto
kaitsetud ja muu selline moodustab haavatav?
>> Publik: Kui keegi on oma küpsise.
>> DAVID Malan: Jah, kui keegi on oma küpsise.
Ma mõtlen tõesti, palju nagu mõned teist oleks proovinud nagu klubi või
lõbustuspark, kui sa püüad midagi niimoodi kopeerida tempel, ehkki
tagasi peale teise isiku poolt, ja siis ta esitab selle
oma, kui see tegelikult ei vaata identsed, 123456789, siis web
server on ilmselt lihtsalt läheb usun, et see kasutaja on teile.
>> Ja see on tõesti peamine ohtu iga kord, kui kasutate küpsiseid
sest kui keegi lihtsalt võltsib nii et räägi oma küpsis, arvud, mida ta
on, kas tõesti kopeerides vaadates arvuti
ja on nagu OK.
Davidi Präänik JJ3JIK ja nii edasi, ja siis nad piisavalt targad, et teavad
kuidas omamoodi käsitsi saata, et küpsist brauser või
programmi nad kirjutavad, mida nad võiksid täielikult logige kodulehel teile.
See ei ole nii raske teeselda, et olla keegi teine, kui me uuesti p-set
kaks, millega kehtestati mida?
>> Publik: krüptograafia.
>> DAVID Malan: vähe natuke krüptograafia.
Simple krüptograafia, vähemalt Standard Edition, kuid krüpto
sellegipoolest.
vähem.
Nii selgub, kui te krüptida kõik need pealkirjad, kasutades midagi, mida
võib nüüd rohkem teada lähedalt nagu SSL, secure socket layer või https:// URL
siis kõik need asjad, mida me oleme olnud põrkav tegelikult kodeeritud,
mis tähendab, et see on nagu sa ei saa lugeda käsi tempel.
Ainult facebook.com ei või google.com, või sel juhul võivad seadme
lugesin, et käsi tempel.
>> Traagiline on küll, ja jälle, et see on liigagi sobivaks NSA stuff
hilja, isegi SSL on purunev.
Ja see tegelikult ei ole nii raske isegi crack et krüpteerimist.
Mitte niivõrd lõhenemist krüpteerimine kuid tricking
veebilehitsejate dekrüpteerimiseks andmed enneaegselt.
Aga jälle, me kiusa selle enne pikk.
Praegu lihtsalt karta.
See on kahjuks selline tõsi.
>> Hea küll.
Nii, et kui see nüüd jäta meid?
Noh, teeme selle ära.
Lähme edasi ja võtta kiire teaser enne me pausi.
Ja ma arvan, et me jõlkuma veidi kauem täna, kuid me ei kavatse sukelduda
midagi täiesti uut ja seksikas, mis ihuma oma isu veelgi.
Nii et see teaser.
>> Nii SQL hakkasime rääkima kunagi nii lühidalt viimast korda.
Sa tõesti, et su käed määrdunud mõned seda p-set seitse.
Ja üldarusaadavat mõttes, mida see SQL -
S-Q-L -
heaks teha?
Mis see on?
Jah.
>> Publik: Teeme teile juurdepääsu andmetele.
>> DAVID Malan: Jah.
See olgem teil juurdepääs andmetele andmebaasis.
Structured Query Language.
Ja see on sisuliselt programmeerimiskeelt.
On omadusi see, et me isegi ei kasuta seda klassis.
Aga sa ei saa tõhusalt define funktsioone.
Neid nimetatakse salvestatud menetlused SQL.
Aga me hoiame see üsna lihtne ja lihtsalt kasutada seda mõned põhilised toimingud
nagu valides andmed, andmete sisestamiseks ajakohastada andmed ja andmete kustutamine.
>> Ja sa tõesti arvad andmebaasi nagu SQL andmebaasi, kui lihtsalt
on Microsoft Excel.
Kuna SQL viitab relatsiooniline andmebaasi, kus
seoses tähendab lihtsalt tabeleid.
Read ja veerud.
Seega midagi saab panna tabelisse Asjalik või Google Docs,
võid panna SQL andmebaas kuulutades tabelis.
>> Nüüd, kuidas sa tegelikult pääseda et informatsiooni?
Noh, käske või päringuid niimoodi.
SELECT, INSERT, UPDATE ja DELETE.
Ja enamasti on need neli ainult koostisosade pead
midagi üsna võimsalt Probleemse pani seitse.
>> Nüüd juba järgmisel päeval, siis oleks tegelikult suhelda andmebaasi
must ja valge terminali aknas vilgub kiire niimoodi.
Ja andmebaasi me töötab Seade on kutsutud MySQL, mis on
tasuta ja avatud lähtekoodiga andmebaasi mootor.
Kui sa Google ja lugeda Wikipedia artiklis, saate teada, et nimi on
natuke üleminek mõnda Linuxit.
Maria andmebaas on tegelikult toidulauale niiöelda MySQL.
>> Pikk lugu lühike, Oracle ostis MySQL.
Oracle on suur firma.
Inimesed on mures, et see oleks enam ei ole päris nii avatud lähtekoodiga,
nii et see on lihtsalt koopia MySQL, mis on veel tasuta, ikka avatud lähtekoodiga ja
paigaldada Fedora Linux vaikimisi.
>> Aga see on selline valu kael tutvuda
andmebaasis nii.
Nii me lisada CS50 seade tasuta avatud lähtekoodiga tööriista nimega
phpMyAdmin.
Lihtsalt juhus, et See on kirjutatud PHP.
Ei ole olulist vaja PHP siin.
Aga see on vaid veebipõhine vahend, mis me tasuta alla laadida, paigaldada
seade, mis võimaldab meil graafiline kasutajaliides, mis
uurida p-pani seitse andmebaas mis luua uusi andmebaase,
öelda oma lõpliku projekti, kui soovite nagu, ja lõpuks luua
dünaamilisi veebisaite nagu CS50 rahandus mis võimaldavad teil andmeid ning
uuendada andmeid dünaamiliselt.
>> Sa ei kavatse on kasutada lihtsalt lihttekstifaili või CSV.
Võite tegelikult kasutada smart andmebaas programm, nii et saate käivitada rohkem
keerukamaid päringuid lihtsalt lugemise läbi kõik lineaarselt.
>> Nii näiteks on see, mida me anname sa karbist p-pani seitse.
See tabel ilmselt vähemalt kolm veergu, millest üks on
kasutajanimi, millest üks on hash, ja teine, mis on ID.
>> Aga huvitav asi, ja ainult nalja teha üks mõte siin, kasutajanimi
Oletatavalt juba unikaalne, eks?
Ma mõtlen, et kõige tahes veebilehel, kui sul on kasutajanimi olemas
ei saa olla kahte caesars.
Ei saa olla kaks Malans.
Ei saa olla kahte jharvards.
Selle unikaalne.
Muidu nad ei tea, mis jharvard see tegelikult on.
Niisiis, milline võiks olla motivatsioon ka võttes kolmandast veerust vasakul
seal nimetatakse ID, mis näeb number, mis on samamoodi unikaalne?
See tundub natuke ülearune mulle esimesel pilgul.
Miks võib see olla kaalukas olema mitte ainult unikaalne kasutajanimed,
vaid ka unikaalne numbrid?
>> Publik: Nad võivad olla sama salasõna.
>> DAVID Malan: Inimesed võib-olla sama parooli, muidugi.
See võib täiesti juhtuda.
Aga kui nad on selle unikaalne kasutajanimi, I väidan, et see ei ole tegelikult
küsimus, sest kui nad kirjuta oma kasutajanimi, ma ainult vaja vaadata oma
Parooli nende hash sätestatut.
Miks muidu?
>> Publik: Faster otsimine.
>> DAVID Malan: Faster otsimine.
Miks?
>> Publik: ID on vaid üks.
>> DAVID Malan: ID on vaid üks märk, või täpsemalt, see on number,
nii on see ilmselt 32 bitti või midagi sellist.
Arvestades, et kasutajanimi, ilmselt Jason Hirschhorn on seal on mingisugune
naeruväärselt pikk ja see läheb mind palju rohkem aega, et string
võrrelge H-I-R-S-C-H-H-O-R-N ja võibolla / 0 või midagi sellist, et
otsida Jason, mitte lihtsalt ütlesid mulle kasutaja number kaks.
See on 32 bitti.
See on ühe INT et sul on, mida võrrelda.
Ja tõepoolest, see on täpselt, miks andmebaasid kipuvad Unikaalsete IDd
rida neid.
>> Nüüd sellest, mis muude andmete liigid on olemas lisaks INT ja ilmselt
strings nagu see on?
Noh, et olla õige, SQL andmebaase, nagu
MySQL on CHAR väljad.
Ja CHAR veidi eksitavalt ei ole ühe CHAR.
CHAR väli MySQL andmebaasi üks või mitu märki, kuid see on
fikseeritud arvu märke.
>> Nii näiteks, kui ma lähen üle phpMyAdmin nagu te võib-olla juba, või
varsti probleem seatud seitse, ja ma lähen minu andmebaasi ning lihtsalt lõbu pärast,
olgem luua uus tabel nimega katsetada vaid kaks veergu.
Ma siis nuppu Mine.
Ja see muutub üsna tuttav, eriti kui te käpard
ümber oma.
Siin ma võiks kirjutada ID loomiseks Uue tabeli tüüp Int.
Aga siin ma võiks kirjutada kasutajanime uuesti, et varem tabel.
Ja teate mul on terve hunnik liiki valida.
>> Ja just see on põhjus, miks phpMyAdmin on selline kena.
See on selline enese õpetuse, mida saab lihtsalt mingi punkt ja klõpsake, ja
vaata rippmenüüst menüüde ja tuletada et see, mida võimu SQL annab sulle.
>> Ja tõepoolest, kui ma valin CHAR, ma siis tuleb täpsustada pikkus, või kuidas
palju väärtusi, kui palju sümboliga.
Nii väga ühised väärtused on asjad 255, kuid see on veidi pikk.
Tavaliselt on kaheksa kasutajanime.
Aga see on natuke väike nendel päevadel.
Nii et see on disain otsus.
Kas see 8 tähemärki, 32, 255, 1000?
See on tõesti sinust.
Aga CHAR valdkonnas on fikseeritud number.
Nii et valida liiga vähe ja sa oled natuke kruvitud, kui soovite enam kasutajanimi.
Vali liiga palju ja mida on Puuduseks?
>> Publik: [kuuldamatu].
>> DAVID Malan: See on raiskamine.
Just nagu C, kui teil on suurem tüki mälu kui vaja, sa oled
lihtsalt raiskab aega ja raiskab ruumi.
Nii alternatiivina olemas VARCHAR, mis lahendab selle probleemi
ravivad pikkus ei fikseeritud pikkusega kuid maksimaalne pikkus, ja kasutades
muutuja arvuni, mis siis kipub kasutada ainult nii palju sümboliga kui
tegelikult vajavad.
See kõlab ideaalne.
>> Miks me ei saada lahti SÜMBOL andmetüüp siis?
Mis võib olla negatiivsed kasutades VARCHARs, mis kõlab
nagu see on tore võita?
Jah?
>> Publik: [kuuldamatu].
>> DAVID Malan: OK, hea.
Seega, kui kõik andmed on sama pikkus, mis on mure?
>> Publik: Sest sa raiskad andmed, öeldes neile kõik.
>> DAVID Malan: Nii et kui kõik andmed on sama pikk, kuigi ma väidan,
mis täpsustatakse maksimaalne pikkus on varchar ei erine
täpsustades fikseeritud pikkusega CHAR kui sa tead, et number ette.
Aga seal on tõesti, ja ma omamoodi väljavõte, vastus reaalsus
et seal on veel maks, mis võiks olla tüütu, eriti kui sa
tekib isiku nimi, mis on ebatavaliselt pikk, et sa ei
prognoosida.
Ja see on ka veidi vähem tõhus tegelikult otsida VARCHARs kui
mitte otsides sümboliga, eriti kaua tabeleid, mis on palju ja
palju andmeid.
Nii ka siin, temaatilised on jälle ei ilmne valik.
>> Nii lihtsalt, et anda teile tunde teiste andmetüübid, mis võivad pakkuda huvi
kas p-set seitse või Tulevikus seal INT.
Seal BIGINT, mis on nagu pikk pikk.
See kipub olema 64 bitti.
Ei Koma mis näete Ülesanded, mis on palju
puhtam vastus probleemidele me esinenud float ja ujuv
punkt ebatäpsus.
Ja siis on DATETIME.
Seal on sõna otseses mõttes andmetüüp, mis on sarnanema aasta, kuu, päev,
ja tund, minut ja sekund.
>> Aga SQL andmebaase ka asju, mida me helistame indeksid.
Ja indeks on midagi, mida sa täpsustada, kui luua tabeli
teha otsinguid ja muud toimingud tõhusamaks.
Täpsemalt, ei midagi, mida nimetatakse PRIMARY indeks, mida võiks
deklareerida järgmiselt.
>> Me tegime seda teile kasutajate tabel anname.
Aga teate kui ma käsitsi taasloomine kasutajate tabel siin annab
see nimi kasutajatele.
Ma juba määratud ID.
Määratletud I INT.
I määratletud kasutajanime maksimum 32 tähemärki.
Aga kui me hoiame kerimine selles üsna lai aken, märkate seal
hunnik muid asju ma ei määrata.
>> Üks, ma ei saa määrata atribuudid meeldib, sa tead, mida see
INT tuleks allkirjastamata.
Ma ei taha, negatiivsed arvud, nii teeme seda allkirjastamata.
Null ei ole siin oluline, sest Ma ei taha iga kasutaja
olema kordumatu number.
Ma ei taha, et see oleks null.
>> Aga see on huvitav.
Võin täpsustada, et ID on kas primaarvõtme selle andmebaasi või see on
ainulaadne, või see on indekseeritud või täistekst.
Nii tänases eesmärkidel pikk lugu Ühesõnaga, peamine vahend, et see peab
olema nii sisuliselt kui ka tehniliselt valdkonnas, et me kasutame, et unikaalselt
tuvastamiseks.
>> Nii et kui me otsida kasutajatele, see on omamoodi on lubadus vaadata neid enamasti
et kordumatu tunnus.
Ja andmebaasi tagab, et kui sa on kasutaja number 3, siis ei saa
füüsiliselt lisada uue kasutaja selle sama number 3.
Andmebaas lihtsalt keelduda Muudatuste salvestamiseks.
Milline on hea asi, sest sa võid kaitsta end ise. ise
>> Alternatiivina kasutajanimi.
Nii teise rea, mäletate, on kasutajanimi valdkonnas.
Nii teise rea siin on kasutajanimi, nagu tegime kaugele vasakule seal.
>> Nii et mida veel võiks ma tahan täpsustada?
Ma ei tohi vastavalt SQL, täpsustada kaks peamist võtit.
saab määrata ühine võti kuhu vaadata nii valdkondades, kuid nad ei saa
eraldi olema esmane võtmed.
Nii et see ei tule kõne allagi.
Nii et mis võiks tahan valida?
>> Noh, UNIQUE on sarnase sisuga primaarvõti, kui määrate selle
valdkonnas peab olema ainulaadne, kuid see on ei kavatse olla üks
Ma kasutan kogu aeg.
Ja me ei kavatse kasutada seda üks kõik aeg, mis põhjusel jälle?
See on aeglasem potentsiaalselt kui see on pikk kasutajanimi.
See on lihtsalt aja raiskamine.
>> INDEX, vahepeal ette, et see on ei kavatse olla unikaalne, kuid tahaks
teil töötada oma võlu all kapuuts teha seda kiiremini minu jaoks
otsida selles valdkonnas.
Nii see ilmselt ei ole siin asjakohane.
Kasutajanime, ma väita, et UNIQUE on hea vastus.
Aga oletame, et me tegime kasutajatele rohkem huvitavam kui lihtsalt kasutajanimed
hashes ja ID numbrid.
Mis siis, kui me andsime inimestele täisnimed?
Mis siis, kui me andsime neile aadressid ja muid andmeid nende kohta?
>> Noh, kui olete määranud, et veerg andmebaasis on indekseeritud, mis tähendab, et
MySQL või Oracle, või mis iganes andmebaas te kasutate, peaks töötama oma võlu
ja kasutada mingit fancy andmed struktuur, nagu puu või Prefiksipuu või
hash tabel või midagi, et tagada et kui sa otsida andmeid kasutades
valige selle konkreetse valdkonna -
nagu mulle näidata kõigile, et elab Oxford Street.
Päringu niimoodi.
Kui teil on eelnevalt kindlaks määratud, et soovite indeksi selles valdkonnas,
otsingud on palju, palju kiiremini.
>> Kui te ei täpsusta indeks, parim saate teha, on lineaarne otsing kui
see ei järjestatud.
Aga kui sa täpsustada INDEX, nutikas inimesed, kes on teinud andmebaasi -
inimesed nagu sina, kes teavad nüüd puud ja püüab ja räsitabeli -
automaatselt luua selliseid andmeid struktuuri RAM veenduda, et
need otsingud on palju kiirem.
>> FULLTEXT vahepeal on sarnase sisuga, kuid võimaldab teil teha wildcard
otsingud, nagu mulle näidata kõigile, et elab tänavatel algab
täht O ükskõik millisel põhjusel.
Seda saab teha wildcard otsingud niimoodi.
Või rohkem kaalukaid asju näitama mind kõigile, kes on sõna -
näita mulle kõik, kelle nimi algab konkreetse kirja.
Võid otsida märksõnu Sel viisil.
Hea küll.
>> Niisiis, disain võimalusi seal potentsiaalselt.
On teisi, et ma laine mu käed.
Selgub, et teil on eri ladustamise mootorid.
Ja see on veel kauge kui me vajame Kindlasti jaoks probleem pani seitse.
Vaikimisi te kasutate midagi, mida nimetatakse InnoDB.
Näete mainita kusagil phpMyAdmin liides kõige tõenäolisem.
Aga tean, et on ka teisi disain otsuseid, mis on potentsiaalsed
huvi tulla lõpliku projekti kui sa midagi veebipõhine.
>> Aga teeme seda.
Lähme edasi ja pane see edasi ekraan nagu teaser lugu
hõlmab teid, toakaaslane, ja klaas piima.
Võtame kaks minutit või nii murda siin.
Ja kui sa ei jääda umbes, lähme tulla tagasi, vaata natuke rohkem SQL, ja
siis natuke JavaScripti p-set kaheksa meeles.
>> Hea küll.
Niisiis, oletame, et sa mõtled nurgas nii, et saate väga lihtsalt tekkida
kontekstis, kasutades andmebaasi või ausalt, isegi kasutades reaalses maailmas asjad
nagu sularahaautomaadid, et saada raha.
Nii et siin on külmkapis.
Oletame, et sul üks liiga oma Dorm või maja.
Ja sul on üks toakaaslane, ja nii sa tõesti meeldib piim näiteks.
>> Nii et sa koju klassis ühel päeval.
Ta ei ole veel tagasi.
Sa avada külmik.
Sa tõesti tahad suur klaas piima.
Ei ole piima.
Nii et mida sa teed?
Sa sulgeda külmik.
Sa haara võtmed.
Sa minema väljakule.
Ja sa saad kooskõlas CVS neile ise kassasse asjad, mis alati
võtab rohkem aega kui tegelikult võttes kassapidajad.
Igatahes.
>> Niisiis, vahepeal dot dot dot, oma toakaaslane koju ja ta
Samamoodi on igatsus jaoks piima.
Nii ta avab külmik, näeb sees, ja oh, neetud.
No piim.
Nii ta juhib tähelepanu, juhtub minema Lisa muud CVS, mis oli ainult
blokeerida kaugusel mingil põhjusel ja tal või ta saab kooskõlas osta piima.
>> Vahepeal sa tuled koju, ta või ta tuleb koju, ja mida teha
sa lõpuks on?
Kaks korda nii palju piima.
Aga sa tõesti ei meeldi piima nii palju.
Nüüd teil on nii palju piima, et nüüd üks neist on lihtsalt läheb hapuks
lõpuks.
Nii et see on tõesti halb probleem.
Eks ole?
>> Niisiis, mis juhtus?
Seega põhimõtteliselt on see omamoodi on naeruväärne näide.
Aga all kapuuts, mis meil on olnud juhtub siin on teile mõlemale kontrollida
seisundi mõned tükk mälu, külmkapp.
Mõlemad olete kontrollinud riik Mõnede muutuja.
Sa juhtisid sõlmimist mis sa siis tegutses.
Aga kahjuks, kui teie toakaaslane Selveri juures, seisund, mis
muutuja muutunud, ta tuli tagasi ja nüüd tahab muuta riiki, kuid
see on juba muutunud tema kohta.
Ja muidugi, ta ei oleks läinud poodi, kui nad teadsid,
et sa olid juba teel.
>> Nii reaalses maailmas, kuidas sa võisid Et seda probleemi vältida, eeldades, et teil on
külmik, teil on toakaaslane, ja mida sa tegelikult meeldib piima?
>> Publik: teavitamine.
>> DAVID Malan: teavitamine.
OK.
Aga kuidas võib suhelda?
>> Publik: Jäta teadmiseks.
>> DAVID Malan: Jäta teadmiseks, eks?
Alati jätke NB! fännid show.
Olgu, alati jätta tähele, või pane tõesti nagu tabalukk või midagi
on külmkapp, mis hoiab oma toakaaslane kontrollimise seisu
et muutuja.
>> Nüüd, miks see nii Sobiv Ülesanded seitse või sularahaautomaati.
Noh, kujutage ette maailma ATM kus sa võiksid minna kuni ATM
masin siin, ja teise ATM siin.
Ja see juhtub üsna sageli.
Ja arvan, et teil on kaks ATM kaarte, mis on võimalik saada.
Ja sa sisse logida mõlemad masinad tõhusalt samaaegselt loodetavasti
kui keegi vaatab.
Ja siis sa kirjutad oma PIN umbes samal ajal.
Ja siis sa saldopäring näha, kui palju raha sul on.
Ja oletame, et sul on $ 100 lahkus oma konto.
Nii et sisuliselt üheaegselt, siis öelda üks, null, null, siseneda.
Ja sa loodetavasti saan tagasi raha.
>> Aga kui palju raha võiks sa tagasi?
Nüüd arvutid lõpus päeval, eriti kui nad on rääkinud
serverid, ei pruugi asju järjekorras, mis on oodatud.
>> Nii oletame, mis juhtub, sest olenemata võrgu kiirus küsimusi seal
on või CPU küsimusi on, või midagi sellist, arvan, et
Esimene ATM kontrollib oma tasakaalu ja näeb, oh, see inimene on 100 $.
Aga siis saab segane, sest võib-olla backup toimub ja seega on
aeglustub.
Või äkki kui kontroll-, võrk ühendus on pisut aeglasem, sest
see lihtsalt juhtub.
Nad on füüsiline seade.
Nii vahepeal teise ATM küsib sama küsimuse.
Kui palju raha David on? $ 100 on vastus.
Aga sellepärast, et esimese ATM ei ole veel saatnud sõnumi lahutama $ 100, nii
Sularahaautomaadid on kontrollitud panga võlvkelder, näeme seal on $ 100 olemas, ja nüüd
mõlemad masinad potentsiaalselt on läheb sülitama vastus.
>> Nüüd on see suurepärane sa mõnes mõttes kui see, mida pank teeb lõpuks
on muuta summa miinus 100 võrra milles muutuja võrdseks
pangakonto võrdne 0, mitte tehes miinus 100.
Nüüd halvimal juhul panga jaoks -
või parim pank, vahepeal nad annavad sulle $ 200, ja
pangakonto näitab nüüd negatiivne $ 100, mis tegelikult ei ole
kasu sa üldse.
Aga asi on selles, et see rass tingimus kaks toakaaslased saada
piima, või kaks pangaautomaati üritavad raha ja muuta riigi võlvkelder
samal ajal on olemas mõni kord, kui on andmebaas.
>> Nüüd probleem seatud seitse, see küsimus tekib tunne, et kui ostad
osakaal Facebook stock, ja siis Näiteks ostate teine ​​osa
Facebook aktsia, mida on vaja teha Otsust on programmeerija.
Selleks, et otsustada, kuidas uuendada andmebaas, koefitsiendid sa lähed
on üks rida, et laos ja see on üks viis seda rakendada.
Ja sa lähed on üks osa FB, mis on nende börsikood
Selle kasutajanime või see kasutaja ID, kordumatu tunnus.
>> Kuid sama lugu võib juhtuda siin.
Kui te ei vali SQL, kui näete Probleemse pani seitse, kui näed,
oh, David on üks osa Facebooki aktsia.
Lubage mul nüüd muuta, et see oleks kaks aktsiat, sest ta tahab osta
Teine osa.
Aga oletame David oli tegelikult kaks brauseri aknad avatud, või oletada, et
see on ühine konto abikaasade ja mõlemad üritavad sooritada
sama operatsiooni ka seal, võimalik, et otsus oleks
baseeruvad eelmise riik maailmas -
kontol on üks osa -
ja nii inimesed, või mõlemad serverid nüüd proovida öelda juurdekasvu seda kaks aktsiat.
Aga sel juhul, sa võisid laetud minu raha nii aktsiatesse, kuid
suurendatakse ainult see üks kord.
>> Nii lühike, põhiprobleem siin, nagu nalja lahkumist
märkida või panna tabalukk, on see, kui kaks inimest, või kaks niidid -
arvan, et tagasi tühjalt -
saab kontrollida riigi mõne muutuja ja proovige seda muuta muutuja,
kuid need kaks asja ei juhtu juures Samas aga ei saa katkestada
teiste asju juhtub, andmeid saab sattuda väga imelik riik.
Ja te võite saada või saab kannatada selles mõttes, et raha näiteks.
>> Nii et probleem komplekti seitse, anname see üks rida koodi, mis pikemas
lugu lühike, lahendab selle probleem MySQL.
See on väga pikk juhend, mis ei isegi mahuksid ühele joon
ekraan siin tagab, et teie töö on see, mida nimetatakse aatomi.
See kõik juhtub korraga, või seda ei juhtu üldse.
See on väga pikk lause ei saa saada katkenud osaliselt.
>> Ja mis see on sõna otseses mõttes mida ta ütleb.
Lisada mõned tabel järgmise kolm välja need konkreetsed väärtused,
kuid korduv võti, ei tee sisestada.
Kas uuendada.
Nii et see on nagu teed SELECT ja INSERT niiöelda samal ajal.
Ja mis on peamine, mis on ilmselt on nimetatud siin?
>> Selgub, ja te näete seda probleem seatud seitse spec, sest
meil tunnistada, et on olemas unikaalne võti selle konkreetse tabeli nii, et
sa ei saa olla mitu rida sama kasutajaga
Sama senti aktsia sümbol -
selles näites siin, DVN.V on rumal senti aktsia, et me
vaadake ka spec.
Sest me oleme kuulutanud olema ainulaadne, mida see tähendab, et kui sa
proovige sisestada dubleeritud rida, sa oled asemel läheb uuendada ilma
keegi, kellel on võimalus muuta olukord maailmas nii.
Nii lühike, see tagab asjad on aatomi.
>> Üldiselt küll, andmebaaside nagu MySQL -
ja sa ei pea seda funktsiooni p-set seitse, kuid hoida seda meeles
tulevikus -
toetama nn tehingute kui sa ei saa öelda,
START TEHINGU sõnalt.
Seejärel saab täita kaks SQL avaldused.
Ja SQL, kui näete p-set seitse, tundub vähe
midagi sellist.
Uuenda tabel nimega konto.
Seadke tasakaal veerg võrdne olenemata tasakaalu veerg praegu
on miinus 1000, kui number konto number, nagu kasutaja ID,
võrdub 2 ja seejärel ajakohastada konto dot dot dot.
>> Nii üldarusaadavat mõttes, mida need kaks päringuid näivad teed
reaalses maailmas mõttes pangandus?
>> Publik: teisaldamine kokkuhoid.
>> DAVID Malan: Täpselt.
Raha ülekandmisega ühelt moodustavad teise.
Ja see on veel üks näide, kus sa tõesti need kaks asja juhtuda
või ei juhtu.
Sa ei taha midagi saada Nende keskel ja potentsiaalselt segi ajama
matemaatika või segi ajama, kui palju raha sul on, või kui palju
raha pangas on.
Niisiis, mida on tõesti tore tehingud MySQL on, ja
andmebaaside üldisemalt on see, et nad ja arukad inimesed, kes olen rakendatud
need funktsioonid välja mõtlema, kuidas teha kindel, et nii need asjad juhtuda
või üldse mitte.
>> Ja kui sa oled tõesti soovivad teha veebileht, mis on kasutatud inimest
campus, inimesed reaalses maailmas, tehes midagi startup mõttes
need on liiki disaini otsuseid, mis
saanud kunagi nii oluline.
Muidu hakkate kaota andmeid, kaotavad kasutajate või halvimal juhul kui
oleme näinud siin, potentsiaalselt kaotada raha.
Nii et taas, veel sellel aastal probleem määrata seitse, samuti võib-olla mõnede
sa lõplik projekte.
>> Nii muudame selle pildi pidime hetk tagasi just veel üks viis.
Nii et lubage mul tegelikult näha, kas ma suudan -
nope, mis on kadunud.
Siin see on.
>> Nii et see on koht, kus me pooleli viimast korda.
Ja selgub, me Toss üks asi veel arvesse segatakse siin -
keeles nimetatakse JavaScript.
Nii JavaScript tegelikult sobib sellesse tükk -
ja ma ei ole päris jätta piisavalt ruumi, nii see ei ole nüüd skaala.
OK, see on tõesti hale.
OK, nii see on JavaScript.
Hea küll.
Ma tõesti seda teha karuteene.
Hea küll.
>> Nii JavaScript on teine ​​programmeerimine keel ja meie viimane, kui see aitab
kinnitada, et seal ei ole palju rohkem on tuletõrjehüdrandid siin.
Nii JavaScript on ka tõlgendada keel, mis tähendab, et sa ei
kompileerida see nulli ja ones.
Sa lihtsalt käivitada.
Aga mis on põhimõtteliselt erinev JavaScript tavaliselt on, et sa
ärge seda oma veebiserver.
See ei saa toimuda Seade iseenesest.
Pigem ta saab alla laadida kasutaja poolt HTTP selaimiinsa -
Chrome, Safari, Internet Explorer, Firefox, mis iganes -
ja see on brauserit, mis täidab käesoleva eriti programmeerimiskeelt.
>> Nii, et oleks selge, PHP on seni olnud täidetakse kas käsurealt
meie must ja valge aknas serveris nagu seadme arvuti
nagu seade, või see on olnud sooritatud veebiserver
töötab arvuti.
Aga teema on see, et PHP seni on teostatud server-side, nii
kasutaja ja kasutaja brauseri kunagi näeb rida PHP kood.
>> Tegelikult, kui te kunagi avada brauseri veebisaidi või teise ja sa
tegelikult näha PHP kood oma aknas keegi on silmamunad.
Sest see ei ole mõeldud selleks, et olla saadetakse brauser otse.
See peaks olema täidetud ja välja millekski nagu HTML.
>> Aga JavaScript on sisuliselt vastupidist.
See tähendas, et sõidetakse tavaliselt sees on kasutaja brauseri aken.
Ja milliseid veebisaite kasutada JavaScript siis nendel päevadel?
>> Nagu sõna otseses mõttes iga populaarne veebilehel.
Iga veebileht, et te ilmselt kasutada iga päev kasutada JavaScripti
Lihtsaim ja isegi seksikaim funktsioone.
>> Seega midagi nagu Facebook Jututuba kui te kasutate seda.
Kuidas see tegelikult toimib?
Noh siiani on kõik asjad oleme teha HTML ja PHP eeldab, et
sa tõmba URL ja vajutad Enter, ja näed mõned HTML-sisu.
Ja klõpsate linki, mis muudab URL, muutub leht ja uuestilaadimise
mõned uue sisu.
Klõpsake teise URL või esitama vormi, siis saada pühitakse teisele lehele ja
näete mõned uue sisu.
>> Aga kasutades midagi Facebook Chat, või Gchat või Google Maps, harva
Mis terve lehekülg värskendada, nii et näete valge ekraan hetkeks ja
siis uus sisu.
Pigem veebilehti täna on dünaamiliselt saada ajakohastatud uuesti ja
ja jälle kõik omamoodi ja kulisside taga.
Ja selgub, et kui sa minna midagi nagu Facebook või Gchat,
või Gmaili ja lehel uuendused automaatselt ilma pealelaadimisel
kogu ekraani, mis juhtus on see, et Teie brauser on teinud omamoodi salaja
täiendav HTTP taotlusi -
mitte kogu veebilehti, kuid ainult vähe tükkideks andmed, nagu
instant sõnum, et teie sõber lihtsalt saadetakse teile või staatuse värskendus
keegi lihtsalt saata teile või piiksuma et keegi lihtsalt saata.
See on lihtsalt tegemist vähe taotlusi andmed ja seejärel kasutades JavaScript, see
programmeerimise keel, seda muuta veebileht välja näeb ilma
server aidata, ilma et server on need HTML.
>> Nii lühike, JavaScript saab kasutada siis mitte ainult tooma uued andmed
server ümberlaadimata kogu leht või plangil.
Samuti võib kasutada, et muuta nn DOM -
Document Object Model -
mis on lihtsalt fancy viis ütles puu HTML
et me nägime viimast korda.
>> Nii, et rahustada JavaScript on süntaktiliselt nii sarnane C samuti.
Ei ole põhifunktsioon.
Sa lihtsalt hakake kood ja see saab täidetud, või
tõlgendada enam korralikult.
Tingimused näeb välja selline.
Ei erine C või PHP, et asi.
Loogiline väljendeid või-ed kokku näeb välja selline.
Anded koos välja nägema selline.
>> Lülitid näeb välja selline.
Sest ring näeb välja selline.
Kuigi ring näeb välja selline.
Kas samas silmuseid näeb välja selline.
>> See on uus.
Nii JavaScript ei ole foreach ehitada per se, kuid see ehitada
muutuja i massiivi ja ma selles juhul muutub indeksi väärtus.
Nii et see on natuke erinev foreach, kuigi uued versioonid
JavaScript tulevad välja kogu aeg, nii et isegi need keele funktsioonid
arenevad.
>> Ja kõrvale JavaScript nendel päevadel saab kasutada ka serveris nagu
PHP abil raames kutsutakse Node.js.
Üks CS50 on TF, Kevin, on viinud seminar Node.js see on kättesaadav
cs50.net/seminars.
Nii et kui sa oled uudishimulik, tean, et sa saab kasutada seda serveripoolne nagu
hästi, kuid see on üsna hiljutine suundumus, kuid võimas seda.
>> See on veidi erinev.
See on massiiv JavaScript.
Ja mis lööb sind erinev versus C või PHP?
Siin on mõned kiired lood saame öelda siin.
Mis puudu versus PHP?
>> Publik: [kuuldamatu].
>> DAVID Malan: Jah?
Vabandame, ütlen veel kord?
>> Publik: Ei kuulutatakse tüüpi muutuja.
>> DAVID Malan: Me ei kuulutatakse tüüpi muutuja.
Nii tegelikult üsna nagu PHP, me ei ole täpsustatakse tüüpi muutuja.
Pigem oleme rohkem üldmõistena öeldes var muutuja.
Meil ei ole PHP ebameeldivalt dollari märk, mis samas tüütu
tüüp, ei tee veel selge, et midagi on muutuv.
Arvestades siin, me oleme omamoodi tagasi C lähenemine just kutsudes
muutuja nime me tahame anda seda, nagu numbrid.
Ja samuti nagu PHP, meil Nurksulgudes eest
väärtused sees, et massiivi.
>> Nii muutujad JavaScript ka tunduda see.
Teade siin see on string kutsus s, aga samamoodi on meil määratlemata
et see on string.
Siin aga on funktsioon, mis ei ole olemas täpselt samamoodi PHP,
kuid natuke sarnaselt.
See on objekt JavaScript.
Ja objektid on omamoodi Šveitsi armee Nuga on andmestruktuur, mida
ei kasuta neid mistahes mitmeid asju.
>> Siin näiteks, me kuulutab muutuja nimega tsiteerida.
Tüüpi muutuja on objekt.
Sa ei mõtle seda kui C struct et on võtmed ja väärtused.
Sümbol on võti.
FB on väärtus, ilmselt aktsia sümbol.
Koma.
Hind on veel üks oluline ja selle väärtus on ilmselt ujukoma või
number üldisemalt JavaScript on $ 49,26.
>> Nii PHP ei ole -
me ei ole näinud PHP objektid üsna meeldib see, kuid me ei vaata analoog,
mis oli mis?
>> Publik: [kuuldamatu].
>> DAVID Malan: assotsiatiivne massiivid.
Nii et PHP on assotsiatiivne massiivid mille süntaks on kunagi veidi nii
erinev -
nägime nurksulgudes.
Nägime imelik nooled sümbolid.
JavaScript on esemeid, kuid see on enamasti semantilist ja
erinevate sünonüümina nüüd.
Kuid nagu kõrvale, PHP on ka objekte, nii et Java ja muude
keeltes on objektide objektorienteeritud programmeerimine.
Aga me kasutame neid ainult andmetüüpe nüüd.
Objektid ja assotsiatiivne massiivid.
>> Seda võiks teha natuke selgem.
Siin miks ese on kasulik.
Kui soovite deklareerida üliõpilane, nagu Zamyla, saame tegelikult
kapseldada niiöelda seestpoolt, et objekti kasutades looksulgudes nagu
enne terve hunnik võtmeid ja väärtused siin.
Meil on ID, maja, ja nime Zamyla, järgneb semikoolon kui
tavaline lõpus.
>> Alla ka siin, see on veidi erinevad, kuid ka väga võimas
nendel päevadel.
Siin on massiiv, ja ma tean, et kuna seal nurksulg üles
top ja nurksulg allosas.
Ja see on massiiv, milliseid andmeid kirjuta ilmselt JavaScript?
See on rida tundub nagu kolm objekti.
Ja ma tean, et see objekt ainult sest lokkis traksid.
Ja teate seal on avatud lokkis traksidega, mõned asjad, close lokkis traksidega, koma
siis veel mõned, koma ja siis veel.
Nii et kolm argumenti eraldatud kaks koma.
>> Nii et see on massiiv kolm objekti.
Ja kõik need objektid tundub olevat õpilane või töötaja mõnes
sort, iga ID, maja ja nimi.
Aga ma olen nimetanud seda midagi nimega JSON -
JavaScript Object märke.
Ja see on andmed kujul, mis tegelikult on nii väga populaarne ja
moes nendel päevadel, kui sa kirjutad rakendus, mis kasutab Facebook
API, Twitter API, tegelikult peaaegu iga API seal nendel päevadel,
sealhulgas mõned CS50 enda, andmed saad tagasi ei
vana kooli CSV formaadis.
>> Sest tagasivõtmine et CSV on super lihtne.
See on lihtsalt veerud on eraldatud komadega.
JSON andmeid annab rohkem metaandmed.
See seostab oluline iga väärtus nii nad ei pea lihtsalt eeldada, et
zeroth veerus on üks väärtus, veerg üks on teise veeru kaks on veel.
Kõik on JSON objekti siin on omamoodi ise kirjeldab, sest iga
üks nimed selles failis on sõna otseses mõttes nime ees seda
jutumärkide.
>> Võtame pilk mõned näited siin.
Lubage mul minna seade.
Ja lubage mul minna oma vhost Kataloog avalikuks.
Ja lubage mul minna JavaScript kataloog.
Ja olgem minna ja avada dom-0.html, kus DOM tähendab lihtsalt
Document Object Model.
See on puust asju, mis Mainisin.
>> Ja las ma välja järgmise.
Siin on veebileht, mille keha on üsna lihtne.
Nii siin all, teate mul vormi.
Me oleme näinud neid varem.
Sellel on kaks sisendit, millest üks on ID nime, millest üks on tüüpi
esitada, ning esimene üks tüüp on tekst.
Nii see tegelikult kõlab päris lihtne.
>> Lähme siit.
Lähme tagasi sellele lehele siin.
Läheme localhost ja mine Meie JavaScript kataloog ja minna
dom-0, ja siin on meil seda vormi.
Nii et ilmselt kõik see leht teeb.
See on nimi valdkonnas Submit nuppu.
Aga ma ei kavatse kasutada PHP siin.
Ma teen kõike kliendi poolel niiöelda JavaScript järgmiselt.
>> Pange tähele, et ma olen tõepoolest antud nimetus valdkonnas selle sisendi ainulaadne
tunnus, mis tegelikult päästa mind mõnda aega hetkel.
Ja teate Olen tutvustas teise tag peas minu veebilehele
tag.
>> Nii et see on selles mõttes, et JavaScript on kliendipoolse programmeerimiskeelt.
Sellisel juhul nagu CSS, ma olen panna seda otse sees minu HTML.
Kuid pange Olen deklareeritud funktsioon mis näeb välja natuke nagu PHP
lauseehituslikult, kuid see on tegelikult JavaScript, sest jällegi, see on
kliendipoolne brauser.
Ja võtke ära arvata, mida see läheb teha, kuigi mõned süntaks
siin on uus.
>> Publik: Ütle tere kes.
>> DAVID Malan: See saab öelda tere sellele, kes külastab seda lehte.
Niisiis, kuidas?
>> Nii teate, selgub JavaScript seal on alert () funktsiooni.
See on väga omamoodi kurb funktsiooni tõesti lihtsalt kipub tüütama kasutajatele.
See ei ole see, mida peaks tegelikult kasutama tavaliselt, kuid see on kiire ja räpane
viis omamoodi trükkimise midagi et graafiline kasutajaliides
liides, nagu brauseris.
Pane tähele, mida ma pean string ülakoma.
Selgub, et erinevalt C, JavaScript võib tegelikult olla te kasutate ühe
hinnapakkumisi, ja ausalt öeldes on see lihtsalt selline stiililise konventsiooni vahel
JavaScript programmeerijad kasutada ülakoma.
PHP, kui neil tegelikult on veidi erinev tähendus.
Aga nüüd, lihtsalt tean, et see on ainus põhjus.
Konventsiooni JavaScript on sageli Kasutada ülakoma, kuid me ei kasuta
jutumärgid mõlemas kohas samuti.
>> Nii et see on huvitav.
Meenuta viimast korda, et meil oli see pilt ekraanil, mis juhtis puu
kus sa pidid HTML sõlm ja tippsõlme ja keha sõlme,
ja siis mingi teksti.
Aga seal oli üks eriline sõlm väga top, et ma helistasin dokument.
Noh, tuli välja JavaScript, iga kord, kui sa kirjutad programmi JavaScript
brauser, teil on juurdepääs eriline globaalse muutuja.
Sarnase sisuga PHP superglobals, see üks on kutsutud
väiketähti dokument.
>> See on nagu struct, kuid see struct Samuti on funktsioonide sees on.
Nii C struct lihtsalt on andmed tavaliselt.
Aga JavaScript objekt, sest see Tehniliselt on ka funktsioone,
muidu tuntud meetoditega sees on.
Ja võite helistada funktsioon sees Selle objekti sõnalt teeb oma
nimi, punkt, ja siis nimi funktsioon, või jälle meetod.
See on lihtsalt sünonüüm, tõesti.
>> Ja mida see funktsioon teeb?
Võite omamoodi arvata oma nime.
Hangi elemendi ID.
Nii see läheb otsima veebilehe otsida, et puu, otsin
sõltumata sõlme, AKA element, on unikaalse ID quote lõppeb nimi.
Ja mis ma nüüd teen?
Ma lähen, et saada raha sees et sõlme puust ja ma lähen
kuidagi tere öelda, et nimi.
>> Nii et arvan, kuigi me pole seda näinud veel, mida teha, pluss
sümbolid tähendavad siin ja siin ilmselt?
>> Publik: CONCATENATE.
>> DAVID Malan: CONCATENATE.
Just, ja need on vaid omamoodi disaini otsuseid
inimesed tegid aastat tagasi.
PHP, sa concatenate asju dots.
C, kui hüpata läbi mitme kõvadele ja Kõnefunktsioonid nagu strCopyDatabaseOK () või
strcat () või muid selliseid funktsioone.
Aga JavaScript, kasutate plussid.
Nii et see on lihtsalt concatenating kolm stringid -
tere, nime ja seejärel hüüumärk.
>> Niisiis, millal ja miks on see funktsioon nimetatakse küll?
Noh, arvan, et alates HTML allosas.
Miks tervitama () nimega, või millal?
>> Ilmselt nii hästi ma võin öelda, on esitama, kui see vorm on esitatud,
Ma teen kõik, mis on sees need jutumärgid.
Ja just, ma lähen helistada tervitama () ja siis tagasi vale.
>> Noh, vaatame, mis net mõju on siin esimene.
Nii et lubage mul minna ja kirjuta , ütleme, Loren, Saada.
Tere Loren.
Vaatame, kui võib-olla see oli lihtsalt õnnelik rakendamist.
Nope.
Nii see on kirjutades läbi mis iganes nime ma tegelikult sinna pannakse.
>> Aga teate, mis ei muuda.
URL on ikka dom-0.html.
Pole register.php.
Ei ole teist faili.
Teie ise ei atribuut.
Mis siis on see tagasi false arvatavasti teed?
Miks ma kutsudes tervitama () ja seejärel tagasisaatmisel vale ilmselt?
Mis tavaliselt juhtub, kui klõpsate Esitada vastavalt vormile, et isegi meil
näinud viimase nädala jooksul?
>> Publik: [kuuldamatu].
>> DAVID Malan: See läheb kuhugi, eks?
See läheb mõne sihtkoha URL.
Aga ma ei taha, et see juhtuks siin.
Ma tahan, et mu veebilehe täiesti dünaamiline nagu Gmail, kus, kui sa oled
seal, siis seal viibida.
URL ei muutu nii, et näitab terve lehekülg uuesti laadida.
Pigem, ma tahan midagi muuta nagu printimisest midagi
siin ekraanil.
>> Noh las ma puhastan selle üles natuke.
Lubage mul avada ei dom-0, kuid Lubage mul avada dom-2.
Lihtsalt, et sa oled näinud mõned süntaks siin.
>> Selgub, et see, mida me Kas kasutab toores JavaScript.
Nii et see on tõesti keel JavaScript.
Mõned võite teada raamatukogu kutsus jQuery.
>> Nii jQuery ei ole sama asi nagu JavaScript.
See on lihtsalt üks raamatukogu, mis tõesti nutikas kutt kirjutas ja populariseeritud selline
et peaaegu kõik maailmas praegu kasutab jQuery, kasutades JavaScript.
Ja esimesel pilgul, ausalt, see tundub veidi segasena.
Aga sa leiad, eriti kui sa lähed seal oma lõpliku projekti web
arengut, siis leiad, et see puhastab asju ja säästab üsna
paar rida koodi.
>> Niisiis olgem lihtsalt pilk kuidas see vorm töötab.
Pane tähele, mida ma eemaldada ilmselt minu HTML?
Pole kohta esitama käitleja nii rääkida.
Ei ole atribuut.
Sest sa tead, mida Ma tegelikult ei meeldi?
Tundsin olime kuuluvate vanade harjumuste seal.
Just nagu ta oli hakanud tundma lohakas segunevad nii CSS
HTML, sest sa oled selline viskamine erinevates keeltes üle kogu
koht, samamoodi ei see enesetunne nagu halb tee minna, kui
Panen JavaScripti koodi sees minu HTML asemel faktooring välja.
>> Nii et see õppetund.
Dom-2.html, ma faktooring välja.
Ja ma teen asju veidi erinevalt.
Sest nüüd ma lähen laine mu käed , mida see tõepoolest
all kapuuts.
Aga just nüüd eeldada, et esimene koodirida selles raamatukogu
nimetatakse jQuery tähendab lihtsalt, kui dokument on valmis, tehke järgmist.
>> Kuna veebilehti võib võtta aega laadida.
Sa võid olla aeglane internet ühendus, ja see võib olla ketramine
ja ketramine, ja lõpuks see on laetud.
See koodirida lihtsalt ütleb oodake Kogu leht on valmis, dokument
on valmis, enne täidesaatva see kood.
>> Ja nüüd teate, et see on ilmselt kõige esimene kasulik
ära võtta jQuery.
See joon siin on väga sarnase sisuga sellele palju pikem rida siin.
Arvestades, et tooraine JavaScript koodi, seal olemas dokument globaalse objekti,
on funktsioon nimega getElementById () inimesed, kes kirjutas
jQuery lihtsustatud, et lihtsalt öelda, dollari märk, ja siis sees
Sulgudes panna kaks hinnapakkumisi ja seejärel pane hash sümbol, millele järgneb
unikaalne ID, mida soovite haarata.
Nii et see on võrdne document.getElementById.
>> Vahepeal. Esitama tähendab lihtsalt edasi esitamine mis tahes vormis sa oled
viidates vasakul, minge minna ja täita see.
Aga see on nüüd uudishimu ka.
Mis on imelik, mida Olen siin esile?
Mitte ainult see on omamoodi süntaktiliselt uus, seal on ka midagi puudu.
>> Publik: See on lihtsalt kutsutud funktsioon?
See ei ole nn hoiatus?
>> DAVID Malan: Jah.
Noh, nii alert () ei tööta siin, kui aus olla.
Aga seal ei mainita Nime, nagu te teate, foo või
midagi siin.
Ja tõepoolest, see on üks funktsioone JavaScript et on üsna
võimas, kuid ka üsna uus.
Ja PHP tegelikult on see samuti.
>> Lubage mul minna ja teha midagi päris kiire.
Lubage mul minna ja panna see siia.
Lubage mul seda teha.
Funktsiooni.
Kutsume seda handler ().
Handler funktsioon nii rääkida.
Midagi, mis käsitleb teatud tööd.
Lubage mul koristada minu taandus.
Ja pane see siia.
Yep.
OK.
>> Nüüd mul on funktsioon nimega handler (), et ma tõesti ei tea,
mida see veel.
See lihtsalt on veel see värk.
Ups.
Võttis liiga palju.
Teeme seda.
Hea küll.
Vabandust.
Hea küll.
Lubage mul seda teha.
OK.
See ilus ja sirge edastada nüüd.
Lubage mul seda teha.
Tehke seda.
Ja OK.
Nüüd, paneme selle siia.
Enam programmeerimine lennult.
OK.
>> Nüüd lähme tagasi kui lugu algas.
Varem ma ütlesin, et see joon siin tähendab, et kui dokument on valmis, mine
minna ja seda teha.
Mida ma tahan teha?
Noh täpsemalt, ma tahan minna edasi ja tehke järgmist.
Käivita see koodirida ja seejärel mida ma tahan, et sa ei kutsuvad seda
töötada, kui vorm on esitatud.
>> Nüüd on see, mida on huvitav.
See ei ole iseenesest funktsiooni.
Pane tähele, ma ei esita sulgudes siin tavalisel viisil.
Ma sõna otseses mõttes möödaminnes funktsioon nimega handler () teise funktsiooni
kutsutakse esitama () argumendina nagu kuigi see on nagu muutuv.
Ja see on üks tunnuseid JavaScript on ülesandeid ise
on tõesti ainult esemed.
Tegelikult on nad tõesti lihtsalt muutujad mingisugune.
Ja kui nime funktsioon handler (), ei ole põhjus, miks ma ei saa
andke seda argumendina siin.
Ja see tähendab, kui vorm ID-demo on
esitatud, nimetame seda funktsiooni.
>> Aga nüüd, kui ma tagasi võtta kõik see, miks siis ma võib-olla teha
see hetk tagasi?
Noh, see on anonüümne funktsioon.
Sest ausalt öeldes, ma sain aru, miks ma olen häirib raisata aega kuulutatakse
funktsiooni nimetatakse handler () vaid helistada see üks ja ainus koht?
Kui ma ei pea nime, ja ma ei ole vaja kutsuda rohkem kui üks koht,
Ütleme lihtsalt rakendada funktsioon õigus, kus seda vaja on.
Ja nii JavaScript ja PHP tugi, mida kutsutakse anonüümne funktsioone
Lubage mul teha just seda siin.
>> Aga me lihtsalt kriimustada pinda.
Olgem kiusa vaid paar lõplik näited siin.
>> Kui ma minema quote.php.
Pange tähele, et see on tegelikult PHP funktsiooni PHP programm, mis ma kirjutasin
mis eeldab HTTP parameeter nimega sümbol, ja ma ei liigu
väärtus nagu FB.
Ja kui me tegelikult vaadata allikas kood, see on päringu tasuta veebisaidi
kutsus Yahoo Finance, nagu p-set seitse ja see on jälle mind
midagi ilmselt formaat tuntud on JSON -
JavaScript Object märke.
See on lihtsalt ese.
Märka lokkis traksid, jutumärgid, koolon ja koma.
>> Nüüd vahepeal see on päris lahe.
Sest ma ilmselt kasutada programmi keeles, et tekitada Aadressid
mis näeb välja selline dünaamiliselt, eks?
Ma ei muuda seda, et Google ja saada tagasi Google'i
aktsia hind $ 1,017.55.
Seega vaatame, kas me saame kasutada seda nüüd.
>> Lubage mul minna Ajax 0 siin, mis Tundub, et järgmine.
See on lihtsalt veebileht, mis on vormi nuppu.
Lubage mul siin minna ja kirjuta YHOO Yahoo aktsia sümbol, kliki siia
Quote, ja nüüd teate ma olen saanud tähelepanelik 32,86.
>> Las ma tegelikult minna Kasvataja versioon Selle lehe versioon kaks ja
kirjuta oletame Microsoft, MSFT.
Saa Quote.
Ja nüüd teate, ei ole häire.
Pange tähele, kui ta ütleb hinna tuleb kindlaks määrata?
On lihtsamaid näiteid, mis vihjab mida Gchat ja Facebook
Vestlus ja Gmail ja muu selline veebilehed teete, tegelikult
muutes veebilehele.
>> Pange tähele, see.
Lubage mul asendusostu lehekülge.
Lubage mul avada Chrome'i inspektor.
Lubage mul minna elemendid tab siin.
Nüüd teate, kui ma suumida siin ja selle avada, teate, et see on minu
HTML DOM - minu dokumendi objekti mudeli.
See on minu HTML.
Aga nüüd teate, kuigi see läheb olla natuke raske näha seda nii
kohas korraga, kui ma tüüpi FB siin, vaata alt
ekraani ainult.
>> See on tõepoolest muutub minu HTML lennult.
Ja ta teeb seda üsna lihtsalt tehes midagi sellist.
Kui ma avada ajax-2, teade rakendamisel midagi nii seksikas kui
, et kuigi see on päris kole, kuid nii kogenud kui et
funktsionaalselt, on mõned HTML allosas.
Aga teate ma kasutasin sildistada.
Me ei kasuta seda enne, kuid see on nagu, kuid see ei sunni
kõik peale uue rea.
See muudab ristkülikukujuline piirkond samal liinil põhiliselt.
>> Pange tähele, et ma andsin selle ID hinna.
Ja selgub, kasutades sama JavaScript raamatukogu, mul on funktsioon
nimetatakse quote () seda nimetatakse, kui vorm on esitatud.
Ja mida ma teen on see.
Teatan muutuja JavaScript nimega url, säästes raha
quote.php? symbol =.
Teisisõnu, ma ise olen hakanud valmistada HTTP taotluse ja seejärel
Ma concatenating peale, et koos plus olenemata elemendi ID
sümbol on, mida teate, et tekstiväli siinsamas.
Nii lihtsalt meeldib pidime vormid minevikus.
>> Ja siis selgub, jQuery, kui te helistada. val (), mis kutsub ja val
Funktsiooni väärtus funktsioon, mis saab olenemata kasutaja on kirjutatud sisse
Ja siis kõik võrguliiklust mis juhtub, on see.
$. GetJSON.
>> Ja kõrvale, dollari märk on lihtsalt stenografist märke.
See on tõesti jQuery.getJSON.
Viige mind JSON selle URL, ja kui taotlus tuleb tagasi, nimetame seda
funktsioon ja liigu kui argument mis iganes tuli tagasi serverisse.
>> Nii teisisõnu, kui ma tagasi minna brauser ja ma lähen tagasi quote.php,
Mis minu brauser teeb on saada see patakas andmed.
Ja kui ma lähen selle veebilehe siin teate, kui me selle asemel minna võrku
tab ja selge see, ja siis kirjuta midagi GOOG Google ja saada
Tsiteeri märka leht ei muutunud.
Aga HTTP taotlus esitati, ja mida tulin siia tagasi, kui me vaatame
vastus on terve hunnik JSON et me siseneme lõpuks koos
Selle lihtsa line siin.
>> Andmed, mida ei saanud serverist.
Hind on nimi võti ma hoolin.
Nii data.price annab mulle.
>> Nüüd vahepeal ja see on viimane näide.
Seda saab teha veel rohkem lehel.
Üks tegelikult ka kaks.
Saame tagasi tuua sildistada, kui sa mäletad seda.
See JavaScript.
Me saame seda teha.
Väga põnev.
Me lahkume, et pinge.
>> Aga rohkem põnevalt, saate selliseid asju tegema.
Kui ma lähen geolokaliseerimise-1, selgub et Chrome teab, et me oleme
laius, pikkus 42,37. -71,10.
Nii et seal on isegi rohkem seal Teie käsutuses.
Aga rohkem sellest järgmisel nädalal.
Näeme esmaspäeval.