>> 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.