>> R.J. Aquino: Ütleme lihtsalt alustada.
Nii et see on Quiz 1.
Siin on mõned kõrgetasemeline teave.
Info lehel viktoriin on selles URL enam CS50.net, kuigi see
ikkagi tööd.
See CS50.harvard.edu/quizzes/2013/1.
See on suur About page, ütlen kus ja millal, nimelt järgmisel kolmapäeval
hunnik toad.
Ja järgmisel kolmapäeval, I tähendab kahe päeva pärast.
Kõik see info on olemas.
Aga see on kumulatiivne.
>> Nii kõike esimesel poolel aastal potentsiaalselt on viktoriin,
sest sa ei saa tõesti arenenud asjad C ilma, kui tingimused ja
jaoks silmuseid ja sarnased.
Aga seal on rohkem rõhku materjalis alates Quiz 0,
alustades structs ja File I / O. See on tavaliselt rohkem
raskem kui Quiz 0.
Keskmine punktisumma on tavaliselt madalam.
Uuring kõva.
>> Kuigi sa õpid, tuleb kindlasti kasutada CS50/discuss saata oma küsimused
ja lugeda teiste inimeste küsimustele.
Nii et kui teil ei ole mingit küsimust, sisse ja loe
Sõprade küsimustele.
Nad on ilmselt head küsimused.
Ja võta praktikas viktoriine.
Me olen seda viktoriinid seitse või kaheksa aastat.
Nad kõik on võrgus.
Future küsimused on sarnased vanu küsimusi.
See, kuidas me neid teha.
>> Viktoriin veel ei ole.
Keegi meist ei näinud seda.
Aga see näeb välja eelmine viktoriine.
Selle läbivaatamise istungil, ei ole see ammendavat loetelu teemadest.
Sa ei saa lihtsalt käia seda ja siis olema täiesti valmis tegema.
Vastasel korral ei oleks et palju viktoriini.
Ja see ei ole ka tingimata kõik, mida sa pead teadma iga
antud teemal.
See tähendas, et paljastada teil asjad oleme kaetud, tuletan teile meelde, mida me
kaetud, ja seda, kuidas mida me katta see.
Aga sa pead minema edasi ja sügavamale kui õpid Kontrollisin
et sa tead kõike mis tahes teema ja et olete sisestanud
kõik nurgad, mis olid kaetud loeng.
>> Viktoriin märkmeid ütlen teile, et minna kirjutaja märgib kella loeng videod.
See on hea viis veenduge, et olete kaetud kõik oma alused.
Nii alustanud, kui ma tegin need slaidid, püüdsin panna, kust ma leidsin
teavet.
Nii Faili I / O, näiteks nädal 7 Esmaspäev loeng, ja lähetatud
6. jagu ja Ülesanded kõik on informatsiooni Faili I / O. Olen teinud
see iga teema.
Nii et need tiitlislaidi võib olla abiks teile.
>> Nii et siin on meil Faili I / O. Pea meeles, et Ülesanded 5 kasutasime fopen, kirjutamisel,
fwrite, fread ja fseek.
Olles taastunud 30ish JPEG ja olles suurust ja jamasid
bitmaps, siis peaks olema üsna tuttav nende funktsioonide
ja kuidas nad töötavad.
Kui te ei ole enam kursis, kindlasti neid kontrollida.
Ja veenduge, et saate aru, mida erinevad argumendid,
kui nad on harjunud.
>> Aga ühisesse seotud vead võidakse teilt umbes -
Noh, kui olete unustanud, et kontrollida, kas fopen tegelikult töötatud enne reisile minekut
muuta faili.
See võib olla halb.
Kui oled unustanud kirjutamisel faili et olete fopened, mis on sarnane
mälu leke.
See on päris halb.
Unustades, et kontrollida, kui olete jõudnud faili lõppu, enne kui
hakake seda.
>> Nii et kui te ütlete, hei, ma olen Faili lõpus.
Anna mulle veel 5 baiti.
Noh, see on ilmselt ei kavatse töötada välja nii nagu te ootate.
See on tõesti see File I / O, sest me tegime nii palju on
koos lahendamist.
Nii et kui sa said aru, mis toimub aastal Ülesanded 5 mäleta bitmats
ja JPEG, siis oled ilmselt kõik seatud Faili I / O. Kui see on natuke
udune, kindlasti vaadata, et probleem määratud ja nendega seotud materjali.
>> Structs oli teema, mis olid piiri Quiz 0 ja Quiz 1.
Ei ole päris teha lõikus Quiz 0.
Nii nad kindlasti edasi Quiz 1 nädal 7, esmaspäev.
Mis on struct?
Siin näitame struktuure.
See on nagu uus tüüp.
See on nagu konteiner mitu valdkondades.
>> Sellisel juhul oleme kuulutanud struct õpilane, kes on kahes valdkonnas -
string, mis me kutsudes nimi ja int et me kutsudes vanus.
Nii et kui ma liigu ringi õpilased või I muuta õpilased, ma saaks
juurdepääsu oma nime ja vanuse.
Vaatame mõned kood, mis.
Siin näeme, et olen deklareerinud üliõpilane s, nagu
Kinnitan iga muutuja -
int x, int y, jne.
>> Siin on õpilastel.
Ta hakkab midagi oma valdkonnas.
Niisiis lepime nendega.
Sa seadsid valdkondades struct dot.
Nii et ma olen siin öelnud, et s.name = RJ.
Ja s.age = 21.
Võite uuendada väljad samamoodi soovite värskendada
väärtus muutuja.
Nii et ma tahan muuta oma nime RJ koos no perioodide R.J. kirjutatud
õige.
Oleks s.name = RJ, samal kui me ütlesime see algselt.
Ja siis saab neid kasutada.
>> Nii et me oleme nende kehtestamiseks.
Oleme uuendanud neid.
Võite kasutada ka neid aastal väga ühtemoodi.
Nii et siin ma väljatrükk R.J. Kas 21-aastane.
Ja ma tutvumise need väärtused koos s.name ja s.age.
Seega, see tutvumise structs dot märke.
Yep, küsimus?
>> Publik: Kas põhjus on Eelmine slaid, et sa ei pane
üliõpilane peal line, nagu typedef struct õpilane ja siis
üliõpilane lõpus?
>> R.J. Aquino: Nii et küsimus oli, on See klapp, oleme tavaliselt näinud
typedef struktuure sõlme ja seejärel Valdkonnad struktuure ja
siis sõna sõlme.
Ja miks siin ma ei öelnud, typedef struct õpilane ja siis
Valdkonnad struct ja siis üliõpilane?
Põhjus on selles, et ma ei pea ligi sees struktuure.
Nii et see on OK, et jätta see ilma nimeta.
Ma ei jäta seda nii anonüümne struktuure.
>> Põhjus, miks me teeme seda, mis on seotud nimekirju ja asjad on, sest teie sees on vaja
viitamiseks struct sõlmede star.
Nii struct peab olema nimi, nii et saate seda kasutada hiljem.
See on pisiasi.
Aga sa tavaliselt näha typedef struktuure looksulg kui sa ei pea
nimi ja typedef struct mõned nimi järgneb looksulg kui soovite
nime vaja.
Nii et see on hea küsimus.
>> Ja selles punktis, kaldume muuta structs ja liigu ringi structs poolt
viide, mitte raha.
Nii me lihtsalt liigu ringi vihjeid structs asemel kulgeb ümber
structs ise.
Nii et sa oled väga sageli saab olema kasutades, sel juhul õpilane * või
struct tipp * või sõlme * asemel välja õpilaste või sõlmed.
Nii et siin ma olen öelnud, OK, muutuja ptr saab olema aadress s.
See saab olema pointer õpilase R.J.
>> Nii saame neile väljad samas kui me midagi.
Esiteks ID viide pointer saada struktuure.
See * ptr ja seejärel dot ja siis vanuse.
Nii juurdepääsu valdkonnas, ja ma olen ajakohastatud see nüüd 22, sest olgem
ütleme, et see oli minu sünnipäev.
Seal on otsetee süntaks noole abil siin.
Nii ptr nool vanus on lihtsalt sama * ptr.age.
Nüüd, see on midagi, mida sa pead meelde jätta ja meenutada.
>> Sa kasutasid seda palju pset6, speller pset.
Aga see on tegelikult, mis toimub seal all kapuuts.
See viite mahavõtmine pointer ja siis juurdepääsemiseks.
Küsimus?
>> Publik: [kuuldamatu].
>> R.J. Aquino: Miks me kasutades viiteid kui structs asemel
structs ise?
Põhjus oleks, kui sa möödaminnes struct et funktsioon, siis ilmselt
soovid läbida umbes ainult 4 või nii baiti, mis esindavad pointer, kuna
vastandina potentsiaalselt 30 või 40 baiti, mis on struct.
Nii möödaminnes midagi funktsioon on lihtsam, kui asi
on väiksem lühike.
Küsimus?
>> Publik: Te olete maininud aasta alguses, kuid on olemas
teiste slaidid üles [kuuldamatu]?
>> R.J. Aquino: Need slaidid järelt läbivaatamise istungil.
Saadame neile veebilehel.
Nii liigub ja liigub kergelt kiiremini, me räägime andmed
struktuure.
Seal on palju.
Meil kaetud hunnik neid.
Siin on, mida sa peaksid mõistma, kohta andmete struktuuri.
>> Sa peaksid tõesti aru kõrge tase, mida iga struktuur on.
Kas oskate selgitada, inglise keeles, et teie sõber, kes ei ole võtnud CS50 kuidas
Me korraldame oma andmeid ja miks me suudaksime kasuta midagi niimoodi?
See on asi, mida üks.
Thing kaks, mõista rakendamist.
Nii aru, kuidas kasutada neid asju C. Ja me minema üle selle.
>> Ja siis asi kolm oleks teada, joosta korda ja piirangud
erinevate struktuuride te kasutate.
Nii aru, miks sa kasutada hash tabelit asemel massiivi.
Mõista, kuidas kiire, keskmiselt tutvumise hash tabel.
Aru, mida tegevus on kiiresti edasi seotud nimekirja, kuid aeglane massiivid ja
vastupidi.
Nii, et mõista, et pead aru Big-O märke lihtsalt teada
kuidas rääkida nende erinevaid asju.
Ja me räägime sellest.
>> Nii et esimene asi, mis on seotud nimekirja.
Siin on kõrgetasemeline pilt on seotud nimekirja.
Näitame seda klassis.
Meil on tavaliselt 10 inimest seisab laval.
Aga meil on mitmeid sõlmi, kus iga sõlm on mingi väärtus ja pointer
oma järgmise väärtuse.
Nii et saada ühest tipust teise, sa lihtsalt ütlen, anna mulle järgmise sõlme.
Sa pead, et sõlme.
Anna mulle järgmine sõlme.
Sa pead, et sõlme.
Anna mulle järgmine sõlme ja nii edasi kuni pole sõlm vasakule.
>> Nii jätkata rääkida seda kõrgel tasemel.
See on väga lihtne lisada asju arvesse seotud nimekirja.
Kui sa ei hooli, et, võite lihtsalt tilk seda
kohe alguses.
See on pidevalt aega.
Aga see on raske leida raha.
Kui sa üritad küsida, on seitse minu nimekirjas?
Sa pead minema läbi iga väärtus.
Kas see on seitse?
Ikka ja jälle.
Ja see on O (n).
Nii õppides viktoriini Võrrelge seda massiivid.
>> Kas see on OK?
Tuled kustusid lähituled.
OK.
Kui on seotud nimekirja parem?
Kui on massiiv parem?
Nii vaatame natuke koodi.
Siin on potentsiaali sõlme.
See struktuure.
See on int n, kus on meie väärtus.
Ja see on struct tipp * järgmine, mis on meie kursor järgmisele sõlme.
Nii et siin me näeme, et meil juhtus et on loonud int meie sõlme.
Aga kui see oli seotud nimekirja char tähed või seotud nimekirja ujukid, me
täiesti võib teha ka.
>> Mäleta pset6, siis ilmselt oli seotud nimekirja char tärni või lihtsalt
static char massiivid.
Vaatame siin tööd.
Nii et me tahame lisada uus n meie seotud nimekirja.
Alustame läbi pea pointer, mis on kursor selle sõlme, mis on
n väärtus ja järgmise pointer et osutab see sõlm on väärtus
n ja kõrval on null, sest see on viimane sõlm.
Nii huvides aega, siis ma panna kõik kood ekraanile.
Ja me läbi minema paar rida korraga.
>> Nii et siin on kood.
Loodan, et see on loetav.
Esimene asi, mida me teeme, on me malloc uus sõlm.
Nii et see muudab kursor uus sõlm, et ei ole päris on midagi seadistada
kuni ta veel.
Me veenduge, et uus sõlm ei ole null.
Vastasel juhul peame loobuma.
Nii ta on kindlaks teinud, et me nüüd määratud väärtuste sõlme.
Seega me paneme uue n meie n valdkonnas.
Ja seadsime järgmise pointer osutada originaal peaga, et saaksime
nüüd on sisestatud käesoleva sõlme meie nimekirjas.
>> Lõpuks oleme globaalne juht punkti meie uus sõlm, nii et kui me
algavad head, meil oleks selles uus esimese sõlme asemel
vana esimese sõlme.
Ja kui see funktsioon väljub, muutuja uus sõlm ei ole enam olemas,
sest see oli kohalik funktsioon.
Nii et see on riik maailmas.
Meie globaalne juht juhib meie uute esimene sõlm, mis juhib meie
originaal esimene sõlm, mis punkte Lisa sõlm pärast seda.
>> See oli sisestamisel.
Loodan, et see oli suhteliselt lihtne järgida.
Kui kahtled, joonista pilt.
Seega ma leian, et räägime ahelloendid ja vaadates
kood on väga ei aita.
Arvestades vaadates pilt seotud nimekiri võimaldab mul mõelda, oh, nii
Mul on selle sõlme siin.
Aga kui ma ajakohastab seda pointer, ta jõuab lahti.
Ja ma olen unustanud, kus sõlme läheb.
Ja kood väljub.
Ja sul on mitu tippu mis on lahti.
Ja sa ei lõpetame nimekiri, mida soovid.
>> Nii et kui te joonistada pilt ja seda samm-sammult, loodetavasti näete
õiges järjekorras asju seisukohalt ajakohastada viiteid veenduda
et nimekiri on koos.
Insert on suhteliselt lihtne.
Keerulisema oleks sisestamist järjestatud nimekirja.
Keerulisem ülesanne on kustutada ja leida, et vaadata läbi nimekirja
vaata, kas midagi on seal.
Võibolla tegi seda pset6 kui sa sain oma hash tabelit ja sa ütlesid,
Noh, on sõna apple minu seotud nimekirja?
>> Nii et teil on seda juba teinud.
Aga kindlasti, värskendada oma mälu ja proovige implementeerid leida ja
implementeerid kustutada jaoks seotud nimekirja.
Fun pool tähele, seal ka kahekordselt seotud nimekirju, kus teil on
vihjeid, mis viitavad nii edasi ja tahapoole, nii et võid minna
Järgmine sõlme ning eelmise sõlme.
Ja seal oli küsimus eelmise aasta viktoriin seda tüüpi, rääkides
umbes kahekordselt seotud nimekirju.
>> Nüüd, see on struktuur, mis sa oled suhteliselt tuttav, sest enamik
te ilmselt kasutada neid pset6.
Siin on üks, mis on veidi vähem tuttav.
Nagu pool tähele, ma arvan, et Quiz 1 on peamiselt raskem kui Quiz 0, sest
asjad, mida sa teed, sa teinud ei ole nii palju.
Panna see muul viisil, Viktoriini 0, teil oli kirjutatud palju juures ja me
küsisin sult C.
>> Viktoriini 1, me ei kavatse küsida PHP ja JavaScript, mis sa
kirjutanud pole nii palju.
Me läheme küsida C-koodi, sa ei ole kirjutanud nii palju,
advanced C kraam.
Seega kindlasti harjutada asju me rääkis loengus, et sa
ei pruugi seda probleemile kehtestada.
>> Rääkides, mida sa ei ole kirjutanud virna lahendamist.
Aga see oli loeng.
Siin on kõrgetasemeline ülevaade korstnad, et näitame igal aastal.
See virn sisse Ema söögisaal.
Kõrgel tasemel, korstnad on viimane in, first out andmestruktuur.
See tähendab, et sa lähed panna asjad -
1, 3, 7, 12, 14, negatiivse 0.
Üks asi, mida ma ei saanud ütles - negatiivne 3, 0.
Sa panna kõik need asjad sisse
Ja viimane paned on esimene üks, mis läheb välja tulema.
>> Nii et teil on kaks tegevust -
push ja pop.
Kõik kasutusele, et olin žestid nagu see on viik.
Ja siis, kui ma jõuan ette, et haarata midagi või jõuda peal haarata
midagi, mis on pop.
Nii et me ei kavatse rakendada korstnad.
Ja me näitasime neile loengu kasutades massiive.
Aga sa võiks teha neist kasutades ahelloendid.
Stack on kontseptuaalne andmed struktuur, ei meeldi
rakendamise konkreetse üks.
>> Nii milline see välja näeb?
See näeks välja selline nagu see.
Sa pead täisarv suurus.
Ja sul oleks massiivi väärtuste me kutsudes plaate, sest see on
Mis pilt oli us - int alused -
ja siis mõned maksimaalne võimsus.
Mis siis suruda välja näeb?
Noh, kui meil stack s, siis suruda midagi peale s, saaksime
suurus s.
Ja see oleks järgmine avatud koht meie massiivi.
Nii et kui meil on kolm asja meie korstnat siis kandikud 3 oleks järgmine
avatud koht, sest 0, 1, ja 2 on juba täis.
>> Seega me paneme väärtuse s.trays [s.size] kolmanda koha.
Ja siis me juurdekasvu s.size öelda, hei, meil oli kolm asja enne.
Nüüd on meil neli.
Nii et järgmine kord, kui vajutada, sa oled panen midagi 4.
Või kui te järgmine kord pop, sa lähed pilk 3 asemel 4 või mis iganes.
Ja siis tagasi tõsi ütleme, hei, meil õnnestus.
See töötas.
Nagu rusikareegel, kui funktsioon, mis on peaks tagasi true või
false tagastab alati tõsi, siis võib oleme teinud midagi valesti.
Nii see toimib?
>> Noh, see toimib trahvi, 1 2 ja 3 ja 4, ning viis.
Aga oletame, et ma jõuan oma võimsust.
Olen siis tekib probleem, sest kui suurus on sama võimsusega, ma olen
nüüd üritab panna midagi sisse massiiv, kus ma ei ole ruumi.
Nii lühike check määrata see.
Kui s.size == võimsuse tagasi false.
Muidu minna ja teha seda, mida me tegime.
Niisiis, mida võiks veel küsida umbes virnade?
Mida peaks veel uurima?
Mida peaks veel harjutama?
>> Noh, rakendatakse pop.
Me juba tegime push.
Ma parandan selle.
Mitte-massiivi rakendamist, kus te kasutate seotud nimekirja, võibolla.
Mitte-int rakendamist.
Tegime ints siin.
Aga see oleks võinud olla ujukid.
Ma oleks võinud stringe.
See oleks võinud olla char tähte.
Vaata viimase viktoriinid liiki küsimusi oleme küsinud korstnad.
>> Ma ütlen, et me kaetud korstnad ümber samas kui oleme kaetud neid
aastat varem.
Nii viktoriini küsimustele tuleb olema hea märk.
Liikuda edasi isegi kiiremini, järjekorrad.
Nad on nagu korstnad.
Aga nad esimesena sisse, esimesena välja.
Kui sa oled Briti sõna järjekord arvatavasti palju mõistust teile.
Vastasel juhul võib teil olla kuulnud seda joont.
Nad töötavad nagu rida Apple Store.
Esimene inimene, kes näitavad üles 3:00 hommikul on esimene
inimene osta oma iPad.
>> Nii et meil on kaks tegevust -
Lisa järjekorda ja dequeue.
Lisa järjekorda paneb keegi rida.
Dequeue tõmbab esimese inimene off line.
Jällegi, me saame rakendada seda massiivi.
Mis on struct me näitas loeng?
See oli üks.
Jällegi numbrid.
Jällegi, suurus ja see uus asi ees.
Miks on midagi, mida nimetatakse ees?
See indeks järgmise element dequeue.
See on lihtsalt sisemiselt jälgida esimene mees, et näidata üles, et me
saab tõmmata, kui me peame.
>> Kindlasti vaadata loengumaterjalid ja proovige rakendada Lisa järjekorda ja dequeue
õppides viktoriini.
Tähtis asju mõelda.
Ümbritsedes kui ees pluss suurus jõuab suurem mahutavus.
Jällegi, kui struktuur on täis, sa lähed on probleem.
Räsitabeli olete näinud.
Enamik teist ilmselt ellu need on pset6.
See on struktuur, mille eesmärk O (1) pidev aja sisestamise ja O (1)
pidevalt aega otsing.
>> In CS50, rakendasime seda array seotud nimekirju.
Võtmeelement hash tabel on hash funktsiooni.
Nii ta teisendab sisendi, ütleme, sõnastik sõna, mitmeks,
mis saab olema meie kataloogi.
Ja me kasutame, et indeks meie massiivi.
Nii et siin on armas väike pilt alates study.50.net.
Viskame kõik sõnad meie hash funktsiooni.
Ja räsifunktsiooni ütleb meile kuhu panna need sõnad.
>> See on suur maa, kus seal on ainult üks sõna iga pesa.
Aga kui see teile meenub alates pset6, seal on rohkem sõnu kui mänguautomaadid.
Mis juhtub, kui sa saada kokkupõrget?
Selle asemel, et hoida üks väärtus, oletame, hash tabel 3, siis
Hoida seotud nimekirja.
Ja selle asemel, cantaloupe siin, siis oleks seotud nimekirja,
kui esimene sõlm on melon.
Ja järgmine sõlm on kass.
Ja kolmas sõlm on kokkupõrge, olgem öelda, sest kõik need sõnad algavad
koos C.
>> Nii et enamik teist tegin seda pset6.
Kui sa ei tee hash tabel pset6 ja proovisid midagi
Prefiksipuu kindlasti vaadata hash tabeleid.
Kui sa ei tee seda pset6, kindlasti vaadata hash tabeleid.
Ja kui sa tegid seda pset6 ja see ei töötada välja täiesti õige ja sa
oli palju probleeme see, kindlasti vaadata hash tabeleid.
Niisiis õppetund tegelikult on kindlasti vaadata hash tabeleid.
>> Valdav vähemus olete proovinud välja proovib pset6.
Kõrgetasemeline pilt.
See on midagi sellist, kus iga sõlm on komplekt lastele, kus iga
laps vastab kirjaga.
Ja iga sõlme ütleb ka, Hei, ma olen sõna.
Nii et sel juhul sõna Maxwell, kui te järgite M kuni
X-W-E-L-L ja järgige seda veel.
Ja sa saad seda sümbolit, delta, mis me tähendama tähendab see sõna.
Nii Maxwell on sõna.
Need deltad on kogu märgilist mis asjad on sõnad ja mis
asjad ei ole.
>> Nii pset6 andmeid me salvestatud koos mõne meie tippe oli: "Ma olen
sõna. "Ja lahe asi üritab on need näitavad sisestamise ja
Lookup O (pikkus sõna).
Nii lihtsalt läbi saama Maxwell, see on M--X-W-E-L-L. Nii seitse või kaheksa -
Ma ei saa loota -
samme, et saada lõpuni ja asju kontrollima.
Nii kiiret rakendamist siin.
Rob läbis seotud loetleda tema lahkamist.
Nii et vaadata, mis välja.
Vabandust.
Läksin läbi Prefiksipuu tema lahkamist.
Nii et vaadata, mis välja.
>> Aga siis põhimõtteliselt on iga sõlm on 27 osuti järgmisele sõlmede ja üks
Boole'i ​​jaoks olen ma sõna.
Tutvu Rob postmortem kuidas seda tegelikult rakendatakse.
Meie lõplik struktuur, meie puud ja binaarne otsing puud.
Nii vaadates neid, need olid kaetud viimati 8. nädalal, esmaspäeval.
Puu sarnaneb Prefiksipuu va te ei pea 27 sõlmede
igas punktis.
Ja sa ei pea neid andmeid igal samm, mis tähendab kas -
tee ei ole oluline.
Arvestades Prefiksipuu, tee ülevalt alt, Maxwell, oli meile oluline.
>> Aga iga sõlm on mitu lapsed, võib-olla.
Meil on veel mõned sõnavara.
Puu juur on tipus.
Ja me ütleme, et väga Alumised sõlmed, mis ei ole
lapsed on lehed.
Nii nagu Prefiksipuu, puu struktuuri sõlmed.
Levinum puu, mis me rääkida on kahendpuu, kus
iga sõlm pole lapsi või üks laps või kaks last.
Nii et see pilt siin ei ole kahendpuu, sest
sõlm 3 on kolm last.
>> Aga kui me ignoreerida neid, ülejäänud see on kahendpuu sest
näitab vara, et iga sõlme on null, üks või kaks last.
Niisiis, kuidas me saaksime väljendada seda koodi?
Meil võiks olla sõlme, kus iga sõlm on täisarv sees seda, samuti
kui kursor puu vasakul ja viit puud
Hästi, kaks last.
Kuidas on see kasulik?
Noh, kui me teeme reeglid selle kohta, kus me pane sõlmede saame otsing kiiremini.
>> Nii et seal on mõiste binaarne otsing puu, kus kõik tipud on
vasak alampuu on väiksem väärtus kui sõlm me vaatame.
Ja kõik sõlmed paremal alampuu väärtuslikumaks
kui root sõlme.
Nüüd, mis näeb välja palju sõnu.
Ma panen selle sees topelt tsitaadid ja näidata teile pilti.
Niisiis on siin näiteks Kahendotsingupuu.
Vaadake, et alustame 10.
Kõike vasakus 10 on väiksem, kui see.
Ja kõike paremal on suurem kui see.
>> Aga rohkem kui see, iga sõlme puu väljendab selle vara.
Nii sõlm 7 on 3 kuni vasakule ja 9 paremale.
Nii et kõik need on väiksemad kui 10.
Aga vaadates lihtsalt need, 7 on 3 oma vasakule ja 9 tema õigust.
Ja samamoodi on õige, 15 on 14 oma vasakule ja 50 tema õigust.
Niisiis kolm sõlmede seal, 15, 14, ja 50, on ka kehtiv kahendpuu
või kehtiv Kahendotsingupuu.
Ja nad on kõik suurem kui 10.
Nii et nad võivad olla on seal.
Kas on küsimusi?
>> Publik: Kuidas toime tulla, kui sul on kaks seitset?
>> R.J. Aquino: Jah.
Kuidas sa tegelema kaks väärtust mis on sama?
Mõned binaarne otsing puud öelda, et sa ignoreerida duplikaadid, sest eesmärk on
lihtsalt öelda, ma olen näinud need asjad nii kaugele.
Mõned binaarne otsing puud võib öelda, on loota sees sõlme.
Teised võivad öelda, et kõik, Vasakul on väiksem või võrdne.
Ja kõike paremal on suurem.
>> See lihtsalt sõltub sellest, mida Probleem on selles, et sa lahendada.
Nii sõnastik, näiteks, siis ei hooli duplikaadid.
Sa ei viska nad välja.
Aga mõne muu probleemi võite huvita.
>> Publik: Kas on võimalik, et on 1 vasakul 15, mida
on väiksem kui 10?
>> R.J. Aquino: Ei
Kui 14 siin oli 1, see aitab ei ole kehtiv Kahendotsingupuu,
sest kõike paremal 10 peab olema suurem, kui see.
Ja me näeme, miks.
Kui maal otsing minu eesmärk on leida 14, ma hakkan keskmes.
Nii ma vaatan.
OK.
Me alustada root.
Vaata 10.
>> Noh, 14, meie eesmärk, on suurem kui 10.
Nii et see peab olema õige.
See on väga sarnane kogu telefoni raamat, mida me tegime, binaarne
otsi seal.
Kuid selle asemel, binaarne otsing massiiv, oleme binaarne
otsides seda puud.
Nii et me otsime veel 14.
Noh, 14 on väiksem kui 15.
Nii et kui see on meie puu, see peab olema selles valdkonnas siin.
See peab olema õigus 10 ja vasakul 15.
>> Ja nii me kontrollime seda sõlme.
Ja jess, oleme leidnud 14.
Ma ei kavatse sellest läbi minema.
Aga siin on kood.
See on tegelikult suhteliselt arusaadav,
sest see on rekursiivne.
Mis võiks palume teha viktoriini?
Võiksime küsida, et kirjutada selle koodi.
Võiksime küsida, vaadata seda koodi ja muuta seda koodi ja selgitada, mida
see teeb.
Jah.
Küsimus?
>> Publik: Kas need slaidid saab olema kättesaadavaks, kui nad olid eelmine kord?
>> R.J. Aquino: Jah.
Nii et need slaidid kindlasti postitatud.
>> Publik: Nad tegelikult postitatud Praegu kodulehel.
David seda tegin.
>> R.J. Aquino: slaidid Praegu kodulehel.
Ma ilmselt lappima paari kirjavigu ma märkida ja neid parandada.
Aga seal on praegune versioon kohapeal.
Teised asjad, mida me võiks küsida, mida teha -
kirjuta lisada.
Kirjutage iteratiivne versioon rekursiivne funktsioon me just näitasin
või rääkida neist asjadest, nagu punktid, sõnades, lausetes.
Võrreldes run korda ja selgitab mida sa tahaksid kasutada binaarse
search puu asemel hash tabelit, näiteks.
>> Nii mõistavad need struktuurid juures üsna sügaval tasandil.
Mõista, kuidas kirjutada neid, kuidas neid kasutada, kuidas neist rääkida.
Ja sa pead olema valmis.
Küsimus?
>> Publik: Kui sa oled kirjalikult Kahendotsingupuu, kuidas te
otsustada, milline väärtus teha nii root?
>> R.J. Aquino: Nii et küsimus oli, mida väärtus sa teha root?
Sõltuvalt oma kood, siis võib olla globaalne root.
Nii et teil on tõenäoliselt olnud pset6 globaalne hash tabel.
Või te võite läbida root nii argument.
Nii et see allalaadimisfunktsioon siin võtab argument sõlme *.
Ja nii iganes sõlme teil juhtub olema vaadates on üks sa oled ravivad
kui teie juure, kui te kaotate selle sisse
Ja ma olen valmis.
Need on minu slaidid.
Järgmine inimene võib tulla swap sülearvuti ja mic.
>> ROB BOWDEN: Ma arvan, et võib-olla tõlgendada seda küsimust erinevalt.
Aga ma tõlgendada seda, kui teil on numbrid 1, 2 ja 3, kuidas me
tean, et 2 root erinevalt 1 või 3?
Kui me teeme 2 juur, siis on kenasti 1 ja 3 kuni vasakul ja paremal.
Aga kui 1 on juur, siis on 1. top, 2 parem, 3 paremale.
Nii vaikimisi, sa ei tea, Mida teha root.
Ja iga algoritm me oodanud teile, just esimene asi, mida
insert oleks root.
Või me teile kahendpuu et on juba olemas, mis on root.
Aga teised algoritmid olemas nii et root uuendab, nii et kui sa
sattuda olukorda, kus ta on 1, 2, 3, on see automaatselt, et
teha 2 uus juur, nii et see on ikka kenasti tasakaalus.
>> ANGELA LI: Cool.
Hei, kutid.
Olen Angela.
Ja ma lähen lõpuni ära meie C ja siis minna mõnda meie veebis
tehnoloogiaid -
HTTP, HTML ja CSS.
Nii et esimene asi on puhver ülevoolu rünnakuid.
Võtame pilk see kood.
See on päris lihtne.
Seal on funktsioon suva.
Ja see ei ole ikka midagi.
Aga see võtab pointer string nimega baar.
>> Ja see läheb kuulutada see puhver, mis on märk
massiiv, mis on 12 slots.
Ja ta kasutab memcpy, mis on lihtsalt funktsioon, mis koopiad ühest aadress
teise.
Nii et see püüab kopeeritav meie puhver iganes
baar on suunaga.
Nii aimu mis viga Selle koodi?
>> Publik: Kui bar on pikem kui C, nad kirjutavad.
>> ANGELA LI: Jah, täpselt.
Meil ei ole mingit garantiid, et baar saab olema alla 12.
Me just mingi suvaline number 12.
Ja me olime nagu Loodame, et meie kasutaja sisend on väiksem kui
12 märki.
Nii et ideaalne maailm, kui meie panus on alati ootuspäraselt, siis me saame
midagi, tere.
See on vähem kui 12 tähemärki.
Läheb loe arvesse char c.
Ja siis me midagi teha.
See ei ole tegelikult küsimus.
>> Aga pahatahtlik inimene võiks teha midagi sellist, kus nad
annab meile kõik, baar osutades, see läheb juhtida sellele tohutu hulga
lihtsalt on.
Ja see on viis rohkem kui 12.
Nii see läheb minna kogu tee siia alla, kus tagasipöördumine
aadress varem.
Ütleme seda funktsiooni nimetatakse foo.
Ehk foo kutsuti mõnel muul funktsioon, mis oli kutsutud peamine.
Nii et kui foo töötab, peab ta teada, kuhu naasta.
>> Kui foo kutsuti mõne funktsiooni nimega Baz, see on teada, et see on
pean minema tagasi Baz.
Ja see on, mida see saatja aadress siin räägib meile.
Aga kui me seda üle kirjutada mõne muu aadressi, antud juhul on see
esindatuse aadress alguses see puhver, siis
mis tegelikult juhtub on see, et asemel tagasi minna Baz,
milles kutsuti meie ülesanne, see on lihtsalt lähen esiosale see kood.
>> Ja kui see oli olemas, sest pahatahtlik häkker kutt tuli ja
süstitakse seda, siis võibolla see summa ning on tegelikult ei oma.
Ja see on tegelikult lihtsalt kood, mis puruneb arvuti või midagi.
Nii olevat kaitsev umbes selline asi, mida sa pead kunagi eeldada, et
kasutaja sisend on teatud summa tähemärki.
Näiteks, kui sa teed speller, siis öeldi, et sõnad olid
vaid saab olema 40 tähemärki pikk maksimaalne.
Ja see oli hea.
>> Aga kui mitte, siis oleks veenduge, et lugeda ainult 45
märki korraga.
Vastasel juhul võite kirjutada oma puhvris.
Kõik küsimused selle kohta.
Jah.
>> Publik: Kas te saaksite rääkida veidi rohkem neid?
>> ANGELA LI: Vabandust.
Jah.
>> Publik: mic on lihtsalt video.
Püüan ja projekti.
Tere, kutid.
Sup?
Nii lähme üle mõned asjad CS50 raamatukogu, mida olen kasutanud
kõik semester, enamasti saada kasutaja sisend.
Nagu te teate, siis sisaldavad CS50 raamatukogu poolt lihtsalt teeme CS50.h, mis
sisaldab kõiki prototüübid funktsioone, mida saab kasutada nagu
GetString ja GetInt ja GetFloat, jne.
Ja seal on see rida CS50 raamatukogu, mis määratleb string, mis
te kõik teame nüüd, on lihtsalt char *.
>> Kuid olgem kurkistaa kuidas getString toimib.
See on väga lihtsustatud versioon.
Võite tõmba CS50 raamatukogu faile , vist, manuals.CS50.net.
Ja te võite lugeda läbi tegelik funktsioon.
Kuid see hõlmab mõningaid oluline osa.
Nii oleme loonud mõned puhver mõned võimsust.
Ja mida me teeme, on meil saada üks märk korraga alates standard n.
See, kui kasutaja sisestab tekst konsooli.
>> Ja nii me lugeda iseloomu nii kaua kui see ei ole uus
line ja see ei faili lõppu, mis on lõpuks standard input.
Ja iga märk, et me lugeda, kui see tegelane jõuab lisades
arvu märke oleme lugenud aastal ja mis on rohkem kui meie mahutavusega
siis mida me teeme, on meil lihtsalt resize meie puhver nii, et see on kaks korda nii pikk.
Niisiis jällegi seda kaitsta puhvris overflow rünnakud, sest sa lugeda
märgi korraga.
Ja kui igal hetkel võite lugeda ka palju, siis lihtsalt laiendada oma puhvris.
Sa korrutada see kahega.
Ja siis on veel ruumi.
>> Muidu sa lihtsalt lisada iseloomu puhverdada.
Ja kui oled lugenud kõiki tähemärki, siis kahaneb puhver
tagasi alla normaalse suurusega, lisada null terminaator ja siis tagasi.
Nüüd vaatame GetInt.
Kas te lugeda seda?
Ma suumida natuke.
Ma ei tea, kuidas arvutid töötavad.
Pole viga.
Ma ei saa suumida korralikult.
>> See on tõesti raske.
Vabandust.
Lähme vaatame seda.
Mis siis GetInt ei ole see esimene loeb string alates getString, mis
oleme rakendanud enne.
Ja oluline osa siinkohal märkida, on see, kui see jagamine, et see jõuab
lugemine on nagu tegelikult string, siis me lihtsalt tagasi INT_MAX et
esindama rike.
Miks me tagasi INT_MAX asemel Negatiivse 1 või 1?
Iga ideid?
>> Publik: [kuuldamatu] negatiivne 1 ühele.
>> ANGELA LI: Jah, täpselt.
Nii et sa oled viis tõenäolisemalt tahavad lihtsalt sisend 1 või -1, kui küsitakse
jaoks nda ja mis iganes nda maxes.
See on tohutu.
Sa ilmselt ei kavatse seda kasutada.
Nii et see on nagu disain otsuse veenduge, et te ei kogemata
tagasi viga või sa ei naase 1, mis võib sõeluda
kui õige vastus.
Seega, kui liin ei ole olemas, me tagasi INT-MAX.
Vastasel juhul me kasutame sscanf, mis on nagu scanf.
Aga ta loeb string.
>> Ja meil on see vormindatud string, mis on% i% c.
Ja me püüame ja sobitada, et koos olenemata kasutaja andis meile.
Tahame arvu sobitada asju olla 1, mis tähendab, et me ainult
tõesti tahad mängu täisarv ümbritsetud äkki valge
ruumi, võib-olla mitte.
Sel juhul, kui paned midagi nagu, baar ei sobi üldse
sest seal tuleb täisarv alguses.
Nii sscan kunagi välja 0.
Nii et sa ei saa tagasi seda.
>> Alternatiivselt, kui paned midagi nagu 1, 2, 3, B, C, et vasteid
nii täisarv, vaid ka pärast seda.
Nii sscanf tagasi 2, mis Samuti ei ole ideaalne.
Sa ei taha, 1, 2, 3,, B, C olema kehtiv int.
Nii et ka see ei tööta.
Aga öelda, paned midagi 50.
See sobib% i, mis tähendab, ta saab lugeda meie n.
Ja nüüd, n sisaldavad number 50.
Ja siis saab see tagasi.
>> Muidu vajutad Uuesti.
Ja siis ta lihtsalt läheb jälle, kuni saad korraliku kasutajalt.
On küsimusi?
>> Publik: Nii et kui sa olid välja trükkida väärtus GetInt kohta [kuuldamatu]
see oleks lihtsalt täisarv ja max?
>> ANGELA LI: Jah.
Nii et kui te kasutate GetInt, siis tuleb eeldada, et sa ei taha nda max
olema kehtiv sisend, sest sa lähed eeldada, et see oli halb.
>> Publik: Kui meil ei oleks char c ja keegi panna 1, 2, 3, Sam, oleks see
ikka töö juures 1, 2, 3?
>> ANGELA LI: ma arvan, et see töötaks.
Aga sa ei taha 123Sam et olema kehtiv sisend kasutaja.
See ei ole tõesti int.
Nii et see ei tundu õiglane sõeluda seda int.
OK.
Sellisel juhul Liigume Internetti.
Nii HTTP ei ole keel.
HTTP on lihtsalt kogum standardeid kuidas saadate asju klientidele,
see oled sina, et servereid.
See on teised inimesed veebis.
>> Nii HTTP tähistab Hypertext Transfer Protocol.
See on südame ja hinge kogu veebis.
Hüpertekst osa lihtsalt viitab HTML.
Edastamine on kliente nagu sa saadad taotlused
serverid, mis annavad vastuseid.
Ja protokoll on lihtsalt, kuidas teha ootate server käituda?
Ja kuidas sa peaksid käituma nii, et saate parandada seda
suhtlemise protsessi?
>> Nii HTTP taotlusi otsima palju nagu see.
GET taotluse liik.
Te olete näinud GET taotlused ja POST taotlused.
See teine ​​asi on, / me, et see on lihtsalt URI või URL, kus te
tahan minna vastuvõtva.
Nii, et see taotlus on palunud lehel, nagu www.facebook.com / mind.
Ja see on GET taotluse.
Ja siis see HTTP/1.1, see on lihtsalt versioon HTTP te kasutate.
See on peaaegu alati 1,1.
>> Ja siis on hunnik muid asju ka.
Võite tegelikult näha neid, kui sa avada oma konsooli, kui oled
veebi sirvimise.
Vastused otsima midagi rohkem niimoodi.
Ülemine osa on jällegi tüüpi HTTP te kasutate
järgneb seisundi kood.
Nii 200 OK on kõik välja töötatud.
Siin on oma sisu.
Sinu sisu läheb järgida.
Ja siis ta ütleb teile, millist sisu ja muid asju ka.
>> Olekud, on vähe olulisemad, mida sa peaksid teadma.
200 OK on nagu kõik on kuldne.
Kõik toimib.
403 keelatud.
Seda olete ilmselt näinud, kui sa unustasid to chmod midagi õigesti.
See tähendab, et sa ei pea piisavadõigused
juurdepääs sellele serverile.
See on nagu, ei, sa ei näe seda.
404 tähendab, et asi ei ole.
Ei ole leitud.
Te olete ilmselt näinud palju.
>> 500 Internal Server Error on tavaliselt nagu midagi läks valesti küljel
server.
Nii et kui sa olid rakendamisel pset7, kui sul oleks PHP vead, siis võiks
tegelikult minna lehele ja vaata terve hunnik PHP viga kraam.
Aga see ei ole tavaliselt juhtub, sest veebilehed tõesti ei taha
ütlen teile, miks nende sait on katki.
Nad ilmselt lihtsalt tagasi 500 Internal Server Error.
>> Ja siis on 418 ma olen teekann.
Seal on terve lugu miks see asi.
Aga sa võid lugeda, et teile sobival ajal.
Seal on terve hunnik muu olekukoode liiga.
Kuid need on need sa peaksid teadma.
Niisiis räägime HTML.
HTML, mäletan, ei ole programmeerimiskeelt.
See on märgistuskeel.
See tähendab, et see kirjeldab sisu.
Ta ütleb sulle, mida HTML dokumendi välja nagu või kuidas see välja näeb
aga kuidas see üles ehitatud.
>> Seega määratleb struktuuri ja semantika veebilehti.
See on nagu, see on punkt.
See on tellitud nimekirja.
See on nagu osa minu lehel.
Siin on pealkiri.
Ta teeb selliseid asju.
See ei stiili ükskõik et kuna see on, mida te teete CSS.
Ja tundub, et seeria Pesastatud tags.
Nii kasutada näiteks väga aluseline HTML-lehe, siis on DOCTYPE
avaldus seal.
>> See DOCTYPE deklaratsioon öeldes, me kasutame HTML5.
Siis on suur HTML tag.
See sisaldab pea ja keha.
Peas, siis on pealkiri.
Seda läheb pealkiri oma veebibrauseri.
Meil on link tag, mis seob välises laadilehe.
Ja siis on meil skript, mis tõmbab Välisest JavaScript samuti.
>> Ja siis sees meie keha on tegelikult mida saab näidata lehel.
Meil lõik ja seejärel pilt sees, et punkt.
See üks on pilt kassipojad.
Pange tähele, et pilt tag sulgub ise.
Selle asemel, et ava pilt ja siis teeme veel / pilt, siis
lihtsalt on see väike, kaldkriips siin, mis sulgeb.
Ja pilt tag on ka see võti väärtuse atribuut nimega alt.
See on alternatiivne tekst, mis juhtub, kui sa hõljuma üle.
>> Enamik HTML elemendid on mõned põhiväärtus asjad, mida saab anda talle erinevaid
kohandamine.
Jah.
>> Publik: [kuuldamatu].
>> ANGELA LI: Noh, nii et see on atribuut tag.
Nii et kui sa kasutad jQuery, siis võiks tegema valige image.getAttribute.
Ja siis võite otsida saada alt atribuut.
Ja see annab sulle kassipojad.
Kui meenub vormid HTML, sisend elemendid on nimi atribuudid.
Ja see, mida PHP kasutab saata taotlused, kui vorm on esitatud.
>> Publik: Kas sa mainisid midagi kuidas, kui te kasutate kittens.jpg või
midagi, mis on kadunud kaustades või muid faile?
>> ANGELA LI: Jah.
Nii et see on see, mida nimetatakse suhtelise tee, sest ma ei anna
sa kogu tee.
See on nagu siis, kui C kui sa fopen mõne faili, kui teil fopen hi.txt, et
hi.txt eeldatavasti samas kataloog, kui te seda veel
keeruline tee.
>> Publik: Nii et sa võiksid täpsustada mis kausta [kuuldamatu]?
>> ANGELA LI: Jah.
Ja saate otsida, kuidas seda teha.
Aga kui sa tahad saada kittens.jpg välja emaettevõtte kataloog, mida tahaksin teha
.. / Kittens.jpg.
Jah.
Vabandust.
Jah.
Oh, ma unustasin küsimuse.
Mis oli küsimus?
Oh, oli küsimus on, kittens.jpg eeldatavasti samas kataloogis?
Ja sel juhul on see.
Aga sa võid ka anda seda teatud tee selline, et see ei pea olema.
Hea?
>> CSS.
Nii CSS, nagu HTML, ei ole programmeerimiskeelt.
CSS on lihtsalt rida stiil reegleid.
See tähistab kaskaadlaadistik.
Ja kui seda kasutada koos HTML stiili lehekülge.
Seega on kolm võimalust saate lisada see.
Üks võimalus, mida saate teha on peas osa oma HTML, saate lihtsalt
avada style tag ja siis kinni mõned CSS reeglid seal.
See on päris OK.
Jah.
>> Publik: Kas paned need stiilis sildid vahel, olgem
ütleme, keha ja / body.
Ja siis oleks stiil ainult keha.
>> ANGELA LI: Sa võiksid.
See sobib.
Kuid te ei tohiks, sest stiil on objekti metaandmeid, mis peaks minema
pea oma dokumenti.
Keha peaks tõesti sisaldama ainult mis tegelikult toimub
ilmu lehel.
>> Publik: Nii et paned stiil oma peaga stiili
kogu veebilehe, eks?
>> ANGELA LI: Jah.
Nii paneb stiil siin, need CSS reeglid kehtib terve lehekülje põhineb
nende valijad.
Nii oleks parem viis seda teha on, selle asemel võttes style tag oma peaga,
sul on see link välise stiili lehed nagu ma näitasin sulle
eelmises näites.
Mis see on see proovib ja leiab fail style.css ja siis tõmbab see
ja kasutab seda nii stiili lehel.
Ja teie style.css oleks lihtsalt näeb välja selline.
See oleks lihtsalt hunnik CSS.
>> Ja lõpuks, on teine ​​tee sind võib sisaldada CSS, mis sa tõesti
ei tohiks kunagi teha.
See on üleskutse inline stiili.
Ja nii iga HTML elemendi saab ka võta style atribuut.
Ja siis selles stiilis atribuut, sa ei anna seda CSS reeglid.
Nii et sel juhul ja olenemata div olen määratletakse siin, siis läheb
on must taust ja valge teksti värvi.
Kuid te ei tohiks seda teha, sest see, mida see on see paneb oma stiil
sees oma HTML.
>> Ja ma tean, et me oleme rääkinud HTML on struktuur ja CSS on stiili.
Kui te seda teete, see segab neid koos.
Ja see ei ole väga puhas.
Nii ei tee seda.
Kasutades näiteks CSS, seal me lihtsalt valida keha HTML
dokumentaalfilm.
Ja me oleme nagu kõik on läheb Comic Sans.
Ma ka ei soovita seda.
Aga sa võid seda teha.
>> Teine reegel on siin, see läheb valida elemendi
lehe ID peamine.
Mida iganes HTML element, ütlesin ID = Põhiline, ma annan selle
20-pixel varu ning viia kõik, kogu tekst, kesklinnas.
Viimane asi, mida valib CSS klass.
Nii iga element lehel, et andsin lõik klass, ma lähen tegema seda
taustavärvi helesinine.
Yep.
See on kõik, mis mul on.
Küsimus?
>> Publik: Mida hashtag enne peamisi teha?
>> ANGELA LI: Küsimus on, mida teeb hashtag enne peamisi do?
Sel juhul haššiga CSS tähendab Valige ID.
Kui mul oleks mõned HTML element, nagu divid = põhiline, see CSS reegel valib
asi ID peamine.
Ja samamoodi, perioodi ees lõik on valida CSS klass või
Valige HTML klass.
>> Publik: Miks on on enne 6 tausta värvi?
>> ANGELA LI: Jah.
Seega on küsimus selles, miks on hash varem 6?
See on erinev kui räsi.
See tähendab, et sa annad kuueteistkümnendsüsteemis värvi.
Nii hex värvi, see lihtsalt tähistab värvi.
Ja sa mäletad RGB kolmikute kui sa tegid kohtuekspertiisi pset?
See on sarnane.
Esimesed kaks numbrit tähistavad kui palju punast on värviline.
Teine kaks esindavad kui palju rohelist.
Ja kolmas on kui palju sinine.
Ja hash see läheb esindama värvi.
>> Niisiis midagi 0, 0, 0, 0, 0, 0 kuni F, F, F, F, F, F on kehtiv.
See on ka kehtivad värv, mida saab kuvada brauseris.
Küsimus?
>> Publik: Mis vahe on abil, mida ID ja klassi?
>> ANGELA LI: Küsimus on selles, mis on vahe
abil, mida ID ja klassi?
Sul võib olla üks osa HTML dokument, mis on antud ID.
Seega ainus asi minu lehel maldatakse ID peamine.
Nii et teil seda kasutada on päises.
See on navigatsiooni.
See on jalus.
Klassid on erinevad, sest sa võid kohaldata klassi nii palju HTML elemente
kui soovite.
>> Nii näiteks, tegin klassi jagu, sest seal on tõenäoliselt rohkem kui üks
lõik minu lehel.
Sa lihtsalt lubatud on nii palju elemendid lehel sama
tasemega, kuid ainult üks teatud ID.
>> Publik: Nii dot esindab klass?
>> ANGELA LI: Jah.
Dot esindab klassi.
Lahe.
See on kõik, mis mul on, poisid.
Aitäh.
>> [APLAUS]
>> ZAMYLA Chan: Tere, kõigile.
Olen Zamyla.
Ma lähen hõlmab PHP, MVC ja SQL täna.
Palju materjali, et ma tulen kate saab olema päris palju
õigus välja pset7.
Hea küll.
Mis on PHP?
PHP tähistab PHP Hypertext Preprocessor.
Nii et see iseenesest on rekursiivne Nimi, mis on päris lahe.
PHP on server-side scripting keeles ja see annab backend
ja loogiline tagapõhi meie veebilehel.
>> Nii Angela rääkisime palju HTML ja CSS, mis muudab struktuuri
kodulehel.
Aga mis siis, kui soovite muuta, et sisu dünaamiliselt või kui see on erinev
põhineb kasutaja või teatud tingimustel?
See, kui PHP on sisse
Nüüd tavaliselt, PHP võib võtta mõne vähem read rakendada sama
C. See on sellepärast, PHP käepidemed mälu juhtimise jaoks programmeerija,
erinevalt meist võttes malloc tasuta asju.
>> Aga kuna PHP on tõlgendav keele, tüüpiliselt, võib teostada
veidi aeglasemalt kui C, mis on koostatud keeles.
Kuna me liigume programmeerimine keeles, vaatame, kuidas
süntaks on erinev.
Olgem väga ettevaatlikud, et mitte saada segi ajada seda.
Nii PHP süntaks, kas olete kinnistades oma PHP sees HTML
faili või sees. php faili ennast, siis vaja lisada koodi avatud
PHP ja suletud PHP sildid nagu järeldub, nagu ekraanil.
>> Muutujad PHP.
Iga muutuja algab $ märk, millele järgneb nimi
oma muutuja.
Nüüd muutujaid PHP on nõrgalt kirjutatud, mis tähendab, et sa ei pea
märkida, milliseid andmeid liik on see, kui sa oled selle väljakuulutamiseks.
Kuid see ei tähenda, et nad pole tüübid üldse.
Nii et kui ma kuulutada muutuja ja lihtsalt seadistada see on 1, ja siis ma kinnitan,
muu muutuja, mis pani võrdne "1" ja siis veel üks 1,0, noh,
sõltuvalt võrdsuse ettevõtjad ma kasutan, kui ma tahan võrrelda
kõigi liikide, siis nad on võrdsed.
Aga kui ma tahan veenduda, et tüübid on võrdsed, PHP saab veel teha
et kuigi me ei näita mis tüüpi see on, kui me
esmalt faili.
>> Nüüd, PHP, kuigi me oleme üleminekut alates programmeerimine
keeles C, on meil ikka veel ustav kui seisund, just niimoodi.
Meil on ikka veel meie ajal silmad, lihtsalt nagu see, kui paned oma
tingimus ja seejärel keha silmus.
Ja siis on ka meie jaoks loop, mis tavaliselt näeb välja selline.
Nii et kui ma tahtsin Käi kõik üheksa psets ja esitama ja kõne
funktsioon submitPset, siis ma ei saa seda teha siin, mis teiega on kõik
teha selles küsimuses.
Palju õnne, muide.
>> Sest kaamera, inimesed ütles aitäh.
Nüüd, kui te ei taha lihtsalt kasutada seda loop, siis PHP tegelikult ka
on asju nimetatakse foreach ahelat.
Kui mul oleks massiivi täisarvud 0 kuni 8, salvestatakse massiivi psets,
siis ma oleks foreach silmus, mis kordab üle iga number psets.
Ja siis ma võiks helistada sama toimida kaheksa korda,
nagu tegin enne.
Nii et see iga silmus on tore, sest sa ei pea, kui sa ei tea,
täpne pikkus array et sa on, siis kasutavad seda foreach silmus
hoolitseme, et teie jaoks.
>> Tegin psets massiiv.
Vaatame seda.
Massiivid PHP on tavaliselt sama need, mis meil oli C, kus
saab deklareerida massiivi.
Ja siin, võin tunnistada tühi massiiv ja siis ehitada dünaamiliselt abil
indekseid täisarvud.
Nii indeks 0, ma lähen hoida täisarv nimega 1.
Indeksiga 1 minu nimekiri, ma lähen Väärtuse salvestamiseks 2.
Ja kolmas indeks aga teine ​​number, ma lähen
salvestada number 12.
>> Nüüd, see on hea, et toimib see toimib hästi.
Aga öelda, et see mulle loeb mida iga indeks hoiab.
Minu jaoks on indeks 0 tähendab, kui paljud kassid on mul.
Ja indeks 1 tähendab, kuidas paljud öökullid olen.
Ja järgmine tähendab, kui palju koeri.
Noh, siis täpsustada, et selle asemel, vaja meeles pidada 0 käsitleb
kassid ja 1 öökullid, saan kasutada assotsiatiivne massiivid, mis tähendab, et
asemel täisarvud kui minu indeksite Ma ei saa tegelikult kasutada stringe.
>> Nii et see on üsna kasulik.
Ja sa põhimõtteliselt lihtsalt asendada täisarvud stringe.
Ja et teil on assotsiatiivne massiiv.
Jah.
>> Publik: Kas, miks seal on alakriips teist
osa, sest minu nimekiri on massiiv.
>> ZAMYLA Chan: küsimus oli, on seal põhjus, miks seal on
rõhutavad vahel minu ja nimekiri?
Ei.
See on lihtsalt, kuidas ma nime minu muutuja.
>> Publik: esimesel line, et see on üks sõna.
>> ZAMYLA Chan: Minu vabandused.
Ma parandan selle.
Jah.
Nad peaksid olema sama muutuja nimi.
Hea saak.
OK.
Nii liigume edasi string ahel.
Kui ma tahan võtta kaks stringi, siis ma saan concatenate neid
dot operaator.
Nii et kui mul on Milo nagu eesnimi ja Banana nagu perekonnanimi, siis
concatenating dot operaator ja siis paneb ruumi vahel
teeb string, mis sisaldab Milo Banaan, mida ma siis kordan või
pigem välja printida.
>> Rääkides kaja, räägime umbes mõned kasulikud -
oops.
Vabandust.
Mõned kasulikud PHP funktsioone.
Nii et meil on -
tehnilised raskused.
Üks hetk.
Saatsin ta.
PowerPoint probleeme.
Ja me oleme tagasi koos PHP funktsioone.
>> Nii oleme nõuavad funktsiooni, kus kui te kaotate faili, siin on lihtsalt
Näiteks faili Ma võiks läbida sisse
Siis, mis sisaldab PHP kood selle faili, et ma näidata.
Ja ta hindab, et sisse
Siis on meil ka kaja, mis on paralleelselt printf.
Väljapääs on paralleelne murda, mis väljub ploki
koodi, mis sa sisse
Ja siis tühi kontrollib, kas antud muutuja on nagu null või null või
kõik, mis on võrdsustada on tühi.
Jah.
>> Publik: stringi liitmise tehe dot operaator üks, PHP, on see, et
sama, JavaScript, kus ta kasutab dot jaoks ahel tähendab pluss?
Nii täielik nimi, siis oleks võinud dollar logi esimene + ja siis + kestab?
>> ZAMYLA Chan: Jah.
Seega on küsimus selles, kas PHP me saab kasutada sama stringi liitmise tehe
nagu JavaScripti plussid.
Ja Joosep satuvad hiljem.
Ma arvan, et ta on slide selle kohta.
Tegelikult on see erinev.
Nii et JavaScript on vaja kasutada pluss concatenate stringe.
Ja PHP, pead kasutada dot operaator.
Nii et nad on erinevad.
>> OK.
Nüüd, kui oleme kaetud kõik see PHP, kuhu ta
tõesti tarvis minema?
Noh, see on kasulik, kui me saab kombineerida seda oma HTML.
Nii et meie PHP annab meile võimu muuta lehe HTML sisu enne
selle peale.
Nii põhineb erinevatel tingimustel, tavaliselt konkreetne kasutaja, mis on
sisse loginud, saame näidata erinevat informatsiooni.
Linda, kas teil on küsimusi?
>> Publik: Kas concatenate täisarv ka?
>> ZAMYLA Chan: Jah, saate küll.
Nii et küsimus on, kui saad concatenate täisarvud või muu
variable.s nüüd astume MVC, mis on paradigma, mida me kasutada
pset7 ja palju veebidisainerid kasutada korraldades kood failid
oma veebilehel.
M tähistab mudel.
Ja põhimõtteliselt, mudel failid tegelema omavahelistest suhetest andmebaasi.
Vaata faili, need on seotud esteetika kodulehel.
Ja Controller käepidemed kasutaja soovib, korrastab
andmetele, ei muud loogikat.
>> In pset7 me kombineeritud mudel ja kontroller.
Ja me lihtsalt nimetatakse neid kontrollereid ja panna neid avalikus kataloogis.
Ja vaade faili, me kasutame neid malle mallide kataloog.
Nii et see skeem ka siin on et samasugune osakonnale
mudel ja kontrollerit lilla siin vasakul
vaade paremalt.
Nii et see on skeem, et mõned teist võis näha Lahtiolekuaeg või
diagramme, et me joonistus kui olid figuring oma pset.
>> Nii et siin, teatavas kontroller, mudel kontroller, meil on funktsioonid
mis on seotud päringute SQL andmebaas, täidesaatva PHP loogika.
Äkki otsiks laos Yahoo!
Finance.
Või ehk, siis oleks lihtsalt vaadata, kas kasutaja on esitanud
moodustada juba enne, külastas oma lehele.
Ja siis muudaks moodustada siin.
Pärast seda vormi ei olnud esitatud kasutaja on hagi, mis oli
täpsustatud vormi HTML tag viitaks lehele, et ta
tagastab selle andmed.
>> Seega kõik, et teave oleks saata tagasi oma kontroller.
Siis oleks ilmselt teha natuke rohkem loogika on, et võib-olla täita mõned
rohkem päringuid SQL andmebaasi ja siis lõpuks tulla kenasti
pakitud komplekti teavet, mida oleks liigu mõnda teise malli
et kuvada seda informatsiooni.
Nüüd, kuidas me tegelikult paketi et info up?
Noh, meil on funktsioon nimega Render mis oli functions.php faili
pset7, kus te kaotate nime Faili nime template.
>> Ja siis ka pass assotsiatiivne massiiv.
Ja nii, et assotsiatiivne massiiv on erinevat informatsiooni
et soovid edastada sisse
Nüüd, mis saab olema konstantne need näited on, et klahvid või
Pigem võtmed assotsiatiivne massiivid, need on need, mis saab olema
eeldatavasti püsivana malli sest ta teab, mida ta vajab
midagi, mida nimetatakse sõnum või nimetatakse nimi.
Ja siis asjad on korras, tegelikke väärtusi, nii sellisel juhul, kes
hea poiss ja Milo, need lähevad olema väärtused muutuvad
et vastutav töötleja muudab iga kord või põhineb teatud seisund ja
läheb, et sisse
>> Nii et siin on mallid, siis näeme, et me kasutate HTML erimärkide
mis lihtsalt tähendab põhimõtteliselt, et me tahame saada peer string
kasutaja panna sisse
Ja me tahame, et asendada sõnum seal.
Niisiis, kui me tegelikult vaadata fail, konkreetsed
teave kandub sisse
Pidage meeles, et võti, kuidas muuta tööd on et võtmed assotsiatiivne
massiivid, need muutuvad muutuja nimed siia.
Ja nii väärtuste, et võti assotsiatiivne massiiv siis muutub
muutuja väärtus.
>> Nüüd liigume edasi SQL.
See tähistab Structured Query Language.
Ja nii see on ainult programmeerimine keel, mille eesmärk
hallata andmebaase.
Ja see tuli käepärane meid meie pset7 rahandus kodulehel.
Sisuliselt on see lihtsalt lihtne jälgida ja juhtida objekte ja tabelid
ning siduda need omavahel.
Nüüd mõtle oma SQL andmebaas põhiliselt Exceli faili, ehk,
mitme sakkidega lehed.
>> Nii võib olla mitmeid tabeleid, võibolla, et üksteisega seotud.
Ja palju nagu Excel, meil on palju funktsionaalsus, mida me tahame.
Näiteks saame valida teatud ridu.
Meil on võimalik lisada teavet.
Saame uuenda ridu.
Ja meil on võimalik ka kustutada asju.
>> SQL valige töid valides ridade või reas ettenähtud veerud
andmebaas, mis vastavad teatud kriteeriumid, et sa näidata.
Nii siin, kui ma näen select * from võlurid, kus maja = Ravenclaw, siis
Ma valides *, mis tähendab, et ma olen Valides iga veeru, et
reas võlurid tabel aga ainult siis, kui maja veerus võrdub Ravenclaw.
Nüüd, see on puhas või SQL.
Nii et kui ma läksin phpmyadmin, mis on kindlal viisil, mida me kasutame, et juhtida
meie SQL andmebaase, siis ma saaks sisestada et arvesse phpMyAdmin veebilehel.
Ja see oleks käivitunud.
>> Aga me tahame seda teha et PHP poolel.
Niisiis, kuidas me seda teeme?
Noh, me kasutame päringu funktsiooni, mis põhiliselt täidab et SQL päring.
Kasutate?
kohatäide, saame edastada teatud väärtused meie string, et me
soovite asendada.
Nii et ehk ma ladustamiseks eri väärtused curr_house, mis
esindab praegune maja et ma lähen läbi.
Nii et ma ei liigu, et kohatäide koos küsimärk.
Ja siis ma põhimõtteliselt täita sama asi nagu tegin enne, välja arvatud
Nüüdseks olen PHP.
>> Ja päring tagastab assotsiatiivne massiiv.
Ja ma lähen hoida seda rida.
Nüüd päringu saate alati ei õnnestu.
Ehk SQL päringu käivitamine nurjus sest tabel ei eksisteeri.
Või ehk kolonni ei ole olemas.
Midagi läks valesti.
Noh, sel juhul sa tahad teha Veenduge, et teil kontrollida, kas
päringu tagasi false.
Ja see on, kasutades triple võrdub seal tegevust.
>> Ja siis ma vabandan, mis on teise CS50 funktsioon, mis kulgeb sõnum.
Ja kui sa vaatad vabandust, kõik see tõesti ei muuda apology.php.
Jah.
>> Publik: Kas oskate selgitada, mida see star teeb vahel valida ja?
>> ZAMYLA Chan: Jah, absoluutselt.
Nii tähe vahel valida ja tähendab, et ma tahan, et valida kogu
Terve rea minu lauale.
Ma oleks märgitud valige nimi, aasta, maja.
Ja ma ainult saada need kolm veergude minu lauale.
Aga kui ma ütlen, valige *, siis ma kõike selles veerus.
Siis ma lähen teile taga esimene.
>> Publik: Nii et see on ikka SQL, eks?
Kas see päring või on see PHP?
>> ZAMYLA chan Oleme päring.
Nii et see on PHP.
Nii et kasutades PHP funktsioon päringu me täidesaatva SQL päring.
>> Publik: Kas midagi SQL tõstutundlik, nagu valida
või võlurid või maja?
>> ZAMYLA Chan: Kas midagi SQL-ja väiketähti?
Ma usun küll, jah.
Ma usun, et SELECT ja FROM Ja kus on tõstutundlik.
Ei?
>> ROB BOWDEN: Nii, see on vastupidine.
Veerus nimed ja laua abil, kõik need on tõstutundlik.
Aga tahes MySQL võtmesõnad, nagu Vali, FROM, ja kui neid ei ole
tõstutundlik.
OK.
Nii vastand, mida ma ütlesin.
Nii et kõik on MySQL märksõnad -
valida, alates, kui - need ei ole tõstutundlik.
Aga kõik muu on.
OK.
You ees.
>> Publik: Kui ma saaksin $ rida tingimusi rohkem kui üks rida, see tähendab, on
lihtsalt muutub assotsiatiivne massiiv?
>> ZAMYLA Chan: Nii et küsimus oli, kui rida on rohkem kui üks rida on see, mis
see muutub assotsiatiivne massiiv?
Nii et see on massiiv assotsiatiivne massiivid juba.
Nii et isegi kui seal on ainult üks rida tagasi, siis sa pead minema
index 0 selle tulemus.
Ja siis on teil, et esimeses reas.
Jah, Belinda?
>> Publik: Kui kasutate ===, see on ainult näiteks?
Või on olemas veel?
>> ZAMYLA chan Seega antud juhul === on võrdlus mitut tüüpi.
Vabandust. === On võrdlus mis võrdleb tüübid.
Ja siis == võrdleb igat tüüpi.
>> Publik: Kas oskate selgitada, mida rida on selles olukorras?
Kas see andmerida?
>> ZAMYLA chan Järgmise slaidi, ma olen läheb selgitada, millised read on.
Nii et kui sa ei pahanda, kellel ära selle.
Ja siis sisse tagasi?
>> Publik: For funktsioone nagu päringu muuta ja vabandada [kuuldamatu]?
>> ZAMYLA Chan: küsimus oli, kas neid funktsioone - päringu vabandada,
ja muuta -
on tavalised PHP.
Need on need, mis CS50 kirjutas pset7.
Ja Jay?
>> Publik: Kui teil on vaja öelda $ _SESSION, On see, et ainult ID?
Või kas te olete öelnud, et siin on?
>> ZAMYLA Chan: Nii et küsimus oli, kui me kasutame $ _SESSION, see oli konkreetne
globaalne muutuja, mida me kasutame.
Siin see muutuja läheb kohalikud meie funktsioon.
Nii et me lihtsalt kuulutatakse uus muutuja.
>> Publik: Kuidas vabandada rakendada?
>> ZAMYLA Chan: küsimus oli, kuidas vabandan rakendada?
Ja ma arvan, et see on tegelikult päris hea tava kutid minna
functions.php jagu ja vaadata vabandan ja näha, kuidas te oleksite
teha seda ise.
Nii ma jätan selle sulle, kuid ainult öelda, et kui te vaatate vabandada,
siis võtab see sõnum, mida esitatud vabandada ja siis
osutab, et sõnum.
Veel küsimusi?
Ma armastan küsimusi.
Nii tulevad nad.
>> Publik: [kuuldamatu]
echo või print on?
>> ZAMYLA Chan: küsimus oli, kas me mitte lihtsalt ei pane
echo või print seal.
Nii et oleks teinud midagi veidi erinev.
See oleks trükitud päringu jättis sinna -
Noh, just nüüd, me oleme tegelikult meie töötleja.
Nii et me tegelikult ei ole HTML luua siin.
Vabandada muutes apologize.php tegelikult suunab teid apology.php.
OK.
>> Nüüd lähme edasi tegeleda küsimusele varem, mida
tegelikult on rida.
Noh, päring tagastab massiivi rida.
Ja iga rida esindab poolt assotsiatiivne massiiv.
Nii et kui ma olen täide mõned SQL päringu ja Olen salvestatud tulemus ridadesse, siis
kasutades foreach silmus, siis massiivi nimi on esimene seal - rida.
Ja siis ma lähen helistada iga rida on $ rida.
>> Nii iterating üle, et võin siis juurdepääsu antud rida nimi veeru
aasta veeru ja maja veerus.
Pange tähele, et ma ei oleks suutnud teha seda rida, sest rida indeks
nimi ei ole olemas.
Read on lihtsalt massiivi assotsiatiivne massiivid.
Nii et teil on kaks taset seal.
Kui teil on massiivi ridade sa pead sinna.
Ja siis pääsete veergu.
Kas see selgeks teha?
Jah, ees?
>> Publik: [kuuldamatu] avada sulgudes [kuuldamatu]?
>> ZAMYLA chan Vabandust?
>> Publik: avatud sulgudes.
>> ZAMYLA Chan: Need siin on?
Seda võimaldab mul lisada et muutuja.
Jah.
>> Publik: Kui prindite, on teil trükkimine HTML koodi?
>> ZAMYLA Chan: Jah.
Kui ma printida, see siin on sees minu malli nüüd, et
minu arvates MVC meetod.
Nii et ma printimine arvesse HTML.
>> Publik: Nii et kui me läksime arendaja vahendid pärast töötab see, võiksime
et tegelikult on kood?
>> ZAMYLA Chan: See on hea küsimus, jah.
Nii et kui teil läks arendaja tööriistad Firefoxi kasutades Firebug või
Chrome, siis jah, siis võiks vaata konkreetse HTML.
Nii et see ei näita $ rida ["nimi"].
See näitaks, kumb nimi on selles reas.
>> Publik: Lihtsalt üldine probleem, Mida tr ja td defineeritud?
Miks me [kuuldamatu]?
>> ZAMYLA chan Tabeli rea sm-sse, tabel siis td veerus.
OK.
>> Publik: Jah, see on tabeli andmeid.
>> ZAMYLA Chan tabeli andmed.
Jah.
>> Publik: See on rida, milles rida koheldakse nagu veerg?
>> ZAMYLA Chan: Vabandust.
Kas te saaksite seda korrata?
>> Publik: kuidas te visualiseerida rida?
>> ZAMYLA Chan: Kuidas visualiseerida rida, millist teed?
Kas te räägite need ridadesse või tr rida?
>> Publik: rida.
>> ZAMYLA chan Need read siin?
Ma visualiseerida seda Ma täita oma päring.
Ja ta ütleb, et OK, mul on kas 0 kuni n ridu, mis vastavad kriteeriumidele,
et sa olid kahelnud.
Nii et mul on mõned ridade arv.
Nii rida, $ rida, kauplustes iga üks neist ridade massiivi.
Nii et isegi kui see on vaid üks neist, see on veel hulgaliselt vastavad read ta.
>> Niisiis, näiteks, see on sarnane kui sa tõmmatud
cache kasutajatelt.
Ja kriteeriumid ei olnud kus ID võrdub sessiooni ID.
Seal on tõesti ainult üks rida et võiks sobitada seda.
Aga veel rida just tagasi ühes reas.
Nii et sa pead minema rida, indeks 0, indeks vahemälu
tegelikult saada oma vahemälu.
>> Publik: Kas väljatrükki echo sama asi?
>> ZAMYLA Chan: Jah.
Jah.
Printida kaja sama.
>> Publik: Kas foreach silmus Ainus viis indeksi rida?
>> ZAMYLA Chan: Kas foreach silmus Ainult nii saab
itereerima läbi rida?
Ei.
Võite kasutada silmus, tingimusel et sa tead, pikkus
Rea on massiiv.
>> Publik: Kas sa seda kasutada kasutades rida [kuuldamatu]?
>> ZAMYLA Chan: Nii et sa ei saa seda kasutada lihtsalt kasutades rida, kui teil ei ole
foreach silmus tingimusel et Te ei ole kuulutatud rida.
Jah.
Jah, ka valge.
>> Publik: Mida tr ja td teha?
>> ZAMYLA chan Nii tr ja td on HTML teeke.
tr näitab alguses tabeli reas.
Ja iga td näitab uus tabel andmebaasi veerus.
>> Publik: visuaalseks mida järjest on sarnased, vaid ette kujutada, SQL, kuidas
neil rida.
[Kuuldamatu].
>> ZAMYLA Chan: Jah.
See on hea koht.
Võite ette kujutada ridu lihtsalt nagu Exceli tabelis, just
nimekirja rida.
OK.
Hea küll.
Nüüd, kui oleme läinud üle valida, kas seal ei ole enam küsimusi, siis tulen
minna üle peale lisada.
Nii et kui ma tahtsin lisada mõned tabel ja lisada teatud veerg
väärtused, võin sisestada ise arvesse Ravenclaw 7. aastal.
Aga mõnikord võib esineda kahes eksemplaris väärtused, nagu nägime pset7 kui me
aastal ajakohastamist meie portfelli.
>> Nii et kui me tahame kasutamiseks Korduv võti UPDATE, nii et meil ei ole
salvestada mitu rida sama Väärtustame vaid ajakohastada.
Siis tegelikult on uuendus, mis ei sisesta.
See on lihtsalt uuendus, kus sa uuendada aastal teatud tabelis toodud
kriteeriumid ja siis lõpuks, kustutada mis teeb väga sarnane asi.
>> Publik: Kas sa lühidalt minna üle korduv võti?
>> ZAMYLA Chan: Jah.
Sisuliselt siin pean INSERT INTO Gringotts, on galleons need väärtused.
Aga ID eeldatavasti on unikaalne võti väärtus loodud MySQL tabelis.
Nii et kui ma juba, et ID moodustada siis ma ei saa lisada uus rida.
Nii et kui see ei ole juba olemas, siis ma pean seda ajakohastama.
Keset valgel.
>> Publik: Nii sisestada, ajakohastada, kustutada, ja valige, on need kõik olemas
kohapeal [kuuldamatu]?
>> ZAMYLA chan Nii sisestada, ajakohastada, kustutada ja
vali kõik SQL päringuid.
Nii et kui te kasutate SQL, sul on need olemas.
>> Publik: Tagasi minevikku viktoriinid -
tekkis küsimus, et käsitleda kui teil on olnud tabelis ja tahtis
sisestada skooriga ühes ja sisestate oma nime, nii et see ei lase sul
[Kuuldamatu] sõbra testi skoor.
Kuidas sa seda lisada?
>> ZAMYLA Chan: Nii et küsimus oli umbes eelmine vahekokkuvõtte küsimus.
Ma ei tea, mis üks on praegu.
Ehk hiljem, kui soovite tulla ja näita mulle, siis ma ei
kindlasti teile vihjeid.
Aga rääkides sisestamist asju, nagu võttes kellegi tulemus, kui sa
ei, räägime SQL süst rünnakud.
Nii SQL süst rünnak on sisuliselt kui keegi võtab
ära vähese turvalisuse nii, et te kasutate andmete.
>> Nii et siin, nagu ka CS50 rahandus, Kui me sisse saame sisestada
kasutajanimi login vorm, kõigepealt tekstikasti ja
siis sisestage parool.
Võibolla meie PHP kood võib tunduda midagi sellist, kus $ kasutajanimi
on post-data kasutajanimi ja parool on post-andmed parool.
Ja siis me lihtsalt täita oma päring, ütleme, OK, hästi, meie päring läheb
Vali meie kasutajatele, kus kasutajanimi on
mis nad esitasid.
Ja parool on parool, mis tähendab, et paroolid sobi.
>> Nüüd, aga kui selle asemel, et tegelikult esitamise tegelik parool nagu
12345 ja aim at Piik, mis ütleb, UUS ja üritab häkkida oma
konto, mis siis, kui selle asemel nad esitasid seda.
Nad võiksid kirjuta võibolla oletus salasõna.
Ja siis nad oleks lõpetada quote siis kirjuta või 1 = 1.
See tempo otse SQL päringu välja midagi sellist.
Valige kasutajate kus kasutajanimi = Piiki ja salasõna
võrdub liilia või 1 = 1.
>> Niisiis, kas parool on õigeks või 1 = 1,
mis on alati tõsi.
Nii sel juhul, põhimõtteliselt saab kasutaja seda ära ja lihtsalt sisse
ise ja hack kellegi kontole.
Nii et miks me soovime vältida keegi, kellel seda teha.
Aga õnneks, päringu funktsiooni kulgeb kohahoidjad võtab
hoolt selle eest.
Samuti saate tavaliselt ei taha tegelikult esitama paroolid
ise.
Sellepärast me räsitud ja krüpteeritud neid CS50 rahastamiseks.
>> Publik: minevik viktoriin rääkinud umbes MySQL põgeneda stringe.
Kas me ei pea muretsema, et?
>> ZAMYLA Chan: See on hea küsimus.
MySQL põgeneda stringid on kindlasti funktsioon, mida kasutati meie päringule.
Aga kindlasti uurima seda.
Ma ütleks, et see on aus mäng teada et sa vaja helistada, et
toimima string.
Jah, Belinda?
>> Publik: Kuidas sa tead, kui see on ülakoma või jutumärgid?
Ja ka mina tunnen ennast loengus te mainis midagi, millel ei ole
[kuuldamatu] või midagi või teine ​​singel quote lõpus.
Ma arvan, et ta märkis loeng et sa peaksid olema ülakoma 1
ja siis ei pea ülakomad või midagi.
>> Publik: [kuuldamatu].
>> Publik: asi on viimane vallaline quote sinna, et teine ​​kast
ei peaks seal olema.
[Kuuldamatu]
Sest kui te võtate, et viimane vallaline Tsiteerin välja ja viivad need sisu
kui parool on, kui sul on see päringu, ei ülakoma juures
aasta lõpuks juba.
Mida soovite kasutada, et ülakoma kui üks, mis seisab ühe
[Kuuldamatu].
Mis on tegelikult see, et tekst kast ei tohiks seda lubada.
>> ZAMYLA chan ma seda muuta.
OK.
Kui seal ei ole küsimusi, siis ma andke see üle Joseph rääkida
umbes JavaScript, jne.
>> [APLAUS]
>> JOSEPH ONG: Nii oleme töötab natuke maha.
Nii et kui sa pead lahkuma, see on OK.
Aga me palume, et te ei hoia oma pead all kui sa oled keset, siis
ei blokeeri kaamera ja te kasutate tagasi exit kui sa pead.
Olen Joseph muide.
Tere.
Test, test.
Dan, see on hea?
Lahe.
>> Nii video ka postitatud Internetis neile,
peame kohe lahkuma.
Ebamugav.
OK.
Nii viktoriin läbi.
See on kass.
Nüüd, JavaScript, mis on võib-olla mitte nagu aww mõned kutid.
OK.
Nii et esimene, mäletate Zamyla.
Pea meeles, et PHP on käivitada serveris.
Ja palju kordi, kutid kirjutas silmuseid PHP printida HTML, eks?
Nii et kui see kood hukatakse, et HTML väljund, mis sa välja printida
saab saata kasutaja.
Ja kui see juhtub, ei ole enam PHP saab käivitada, kui sa asendusostu lehekülge, ning
Muidugi, mis reexecutes PHP.
Aga kui sa välja printida, et HTML, sa ei saa kuhugi minna.
>> Nii et HTML on saadetud üle kasutaja, mis on brauser siin, kus
Milo on arvuti abil.
Ja nii hästi, on palju asju, kui me saadame HTML kasutaja.
Vahel me tahame teha midagi kui klõpsate midagi, me tahame
alert karbid avanevad need sorti koostoimeid, nagu siis, kui vajutate
klahvi, kui klõpsad midagi leht, ma tahan, et midagi juhtuks.
Noh, sa ei saa reexecute PHP kood, kui et HTML on määratud.
Niisiis, kuidas sa seda teed?
>> Tutvustame uusi keeles nimetatakse JavaScript, mis töötab brauseris
mis võimaldab teil teha asju HTML pärast saate
need serverist.
Ja see on põhjus, miks me nimetame seda kliendipoolse programmeerimiskeelt.
Toimib arvutis -
kliendile.
Kõik küsimused, mis nii palju?
See paradigma mõtet inimesi?
OK.
Väga hea.
Hea küll.
Nii et esimene asi, mida tähele on JavaScript ei ole PHP.
>> Neil on mõned erinevad süntaks, mis me minna.
Ja nad on väga erinevaid kasutusviise.
JavaScript jällegi oma brauser, kliendi jaoks.
Server jookseb kuskil kellegi teise arvuti, mis saadab andmed
teile, õige?
Nii et kui me palume teil kirjutada PHP koodi on eksami küsimus, ärge kirjutage
JavaScript ja vastupidi.
Sa lihtsalt kaotad punkte, ja see ei ole õige.
>> Nii lähme mõnda süntaksi erinevused -
JavaScript vasakul ja PHP paremal.
Esimene asi, mida märkad JavaScript, deklareerime muutuja
var märksõna -
V-A-R. PHP kasutatakse dollari märk, kui Zamyla arutatud ka varem.
Kui soovite deklareerida assotsiatiivne massiiv, näeme tuttav süntaks on
paremal PHP.
Vasakul pool, selle asemel kasutate lokkis traksid.
Ja siis teie võtmed on vasakul.
Siis on koolon.
Ja siis on väärtused mis sa tahad.
>> Nii et see on, kuidas sa seda teha PHP paremal küljel, et teine
line, mis algab Milo.
Ja see on, kuidas sa seda teha vasakule küljele JavaScript, kui soovite
mida me nimetame objekti.
Ja objektid JavaScript on lihtsalt assotsiatiivne massiivid.
Nii et kui soovite juurdepääsu valdkonnas, PHP te kasutate seda sulg süntaks.
Ja see tee, võite ümber jaotada Selle omanik valdkonnas Lauren.
>> Noh, JavaScript, kui üks taha juurdepääsu valdkonnas ning seda muuta, võid
kasutada dot süntaks.
Võite kasutada ka sulg süntaks.
Aga te ei saa kasutada dot süntaksit PHP.
See ei tööta.
See toimib ainult PHP.
Ja lõpuks, printida asju konsool, mida kasutate console.log, mis
te kasutate palju pset8.
Võite console.log et.
>> Kui soovite printida massiivi PHP, sa pead kasutama print r.
Ja paremal küljel, näed ma hash stringi liitmise tehe seal.
Keegi küsis varem.
Ma kasutan pluss JavaScript.
Kui ma tahan concatenate midagi PHP, ma kasutan dot.
Need on erinevad.
Kui sa oled kirjalikult PHP koodi ei kasuta pluss.
Kui sa oled kirjalikult JavaScript kood, ärge kirjutage dot.
See on vale.
Ja võite olla kurb.
>> Nii süntaksi erinevused.
Tea oma süntaks, sest kui sa pead kirjuta küsimus ja te kasutate süntaks
vale keele, see ei toimi.
Ja see on vale.
Niisiis räägime mõned kontroll voolu erinevused, kuidas kasutada
silmuseid igaüks neist.
Zamyla läks üle paremale poole.
Stuff paremal peaksid olema tuttavad.
Vaatame vasakul.
>> Kui kasutate n loop JavaScript, oma loop muutuja var i sinna
silmus üle võtmed massiivi.
Nii et näete nimi, maja ja roll.
Kui ma console.log i, saan nimi, maja ja roll.
Need on võtmed.
In JavaScript, foreach silmus läheb üle väärtused käesoleva massiivi.
Nii et te teate, et nad mõlemad i.
Aga siin on PHP poolel ta prindib välja Milo, CS50 ja Mascot.
Need on väärtused, PHP.
>> Nii et need on, kuidas need kaks erinevat erinevates keeltes.
Nii et kui te kasutate foreach loop, ei saa eeldada, et ta
annab teile võtmed.
Ja kui te kasutate n loop, ärge eeldada, et see annab teile väärtused.
Kas see on mõtet nii palju?
Järgmine slaid läheb näidata teile kuidas pääsete vastupidist
igaüks neist.
>> Noh, kui sul on võti JavaScript ja sa tahad raha välja,
sa lihtsalt indeks array sellega.
Nii Milo i sulle, mida soovite - väärtused.
Seal on see erinev süntaks PHP.
Kui sa tõesti tahad teada, siis ma seda ei tee arvan, et meil näitas see teile veel.
Aga kui sa oled huvitatud, võite kasutada Selle süntaksi paremal
külg, mis tegelikult võimaldab teil saada võtmed PHP kui te kasutate
foreach silmus.
Nii lihtsalt natuke tühiasi kui oled huvitatud.
>> Nii et lihtsalt näidata erinevusi nende kahe silmuseid.
Ärge segage neid kui sa oled programmeerimise küsimus.
Kõik küsimused selle kohta.
Lahe.
Hea küll.
JavaScript objektid.
Ma rääkisin nendega.
Nad on nagu assotsiatiivne massiivid.
Üks asi, mida ma tahaksin, et sa tähele siin on see, et väärtus assotsiatiivne
massiivi saab midagi sisse JavaScript.
>> See võib isegi olla funktsioon, nagu seal.
Mul on funktsioon, mis on väärtus võti.
Ja kui ma tahan, et helistada, et funktsioon, Ma lihtsalt pääseda koor.
Ja siis panin sulgudesse pärast seda.
Ja see toimib.
Nii tekib küsimusi?
Ei?
OK.
Väga hea.
JavaScript, nagu PHP, lõdvalt kirjutatud.
Mida see tähendab?
>> Tal on tüübid.
Aga kui sa kuulutada JavaScript muutuja, ütlete var i.
Sa ei ütle seda.
See ei ole asi.
Sa lihtsalt öelda, et see on erinev.
Ja siis JavaScript tegelen tüüpi kapoti alla teile.
Me võime vabalt teisendada vahel tüüpi, sest sellest.
Nii et ma hakkab läbi mitmeid sel juhul.
Ja siis mul on string.
Ja lisan ma seda.
Ja ma ümber jaotada see tagasi i.
>> Nii on, et esimene joon, i on number.
Teisel real, ma nüüd muutub string pärast ma sihtotstarbe.
Ja siin, ma lihtsalt concatenating mis number peale string.
Nii et näete, et kuigi ma olin täisarv esimeses osas, see on omamoodi
samasuguste konvertinud string ja seejärel lisanduvad
peale, et tere string.
Ja nii see on, mida ma mõtlen poolt lahti kirjutama.
See, et teil teisendada vahel liigid on väga lihtne.
Ja see ei visata hoiatused sind nagu C teeb.
>> Nii et ma nüüd sisaldab tere 123 string.
Next.
Me võime ka vabalt võrrelda tüüpide vahel.
Nii et kui sa lihtsalt kasutada ==, väga palju nagu PHP, JavaScript
ei sarnane asi.
String 123 on sama arv 123, kui kasutate topelt võrdne.
Kui kasutatakse triple vormis, see ka tahab olla kindel, et
tüüp on sama.
Niisiis, kuna see on string ja mis on number, kuigi nad mõlemad
123, kui kasutad triple võrdub saad vale.
Topelt võrdub juhul saad tõsi, sest topelt võrdub ei
hooli tüüp.
Triple võrdub hooli tüüp.
Küsimused?
OK.
>> Ja teine ​​asi on siis JavaScript ulatus on selline globaalne kui sa oled
funktsioonis.
Ja see töötab sama kuidas PHP tegelikult.
Lähme läbi selle näiteks.
Seadsin i 999.
Ja siis ma lähen selle jaoks silmus.
Nii et kui ma printimine i käesolevas eest loop, ma eeldan, 0, 1, 2, 3, 4.
Ma saan i = 4.
See sammuga i nüüd 5 juures lõpuks silmus.
Ja siis ta murrab läbi silmuse, sest see ei vasta
tingimus enam.
>> Mis sa arvad, et järgmisel console.log prindib?
Nii see on, mida ta teeks C. C, sest kui sul on nagu var i väljaspool
ja sul on var i sees loop, nagu loop, siis muudab sellised, et
see scoped et kaks i on erinevad.
JavaScript on see lihtsalt seda ravida samal i.
Ma saan 5, kuna see oli väärtus Pärast seda lahkus välja silmus.
Nii et need i-d on samad i.
Kas see on mõtet?
>> Noh, on mõttekas alates JavaScript vaatevinklist.
Kuid sama paradigma ei üle kanda C. Neil on
erinevate kindlaksmääramisest eeskirju.
Jah.
>> Publik: [kuuldamatu]
väljaspool funktsiooni [kuuldamatu]?
>> JOSEPH ONG: Nii, millest väljaspool funktsiooni?
Nii et ma saan, et just teine.
Nii me nimetame foo (i).
See möödub i arvesse foo suurendatud , ja siis logib ta.
Nii et see oli 5.
Nii muutub see 6.
Aga mida ma räägin on et ma selle funktsiooni.
Sest see on parameeter, see on scoped sellele funktsioonile.
Nii et kui ma tegelikult välja tulla, et funktsioon, see on nüüd lähen
tagasi vana i.
Et ma ainult scoped sest see on funktsioon.
Ja meil on reguleerimisala ja ülesannetega.
Aga meil ei ole ulatus väljaspool Funktsioonide sisse JavaScript.
Kas see on mõtet?
Jah.
Küsimus.
>> Publik: Same [kuuldamatu]?
>> JOSEPH ONG: Nii et jah.
PHP, see on sama tüüpi asi.
Seal on väike nüanss tegelikult.
Aga te võite küsida minult et pärast vaadata.
Sa tõesti ei pea teadma et teravmeelsus viktoriini.
Sest kõik kavatsused ja eesmärkidel, nagu muutujad, globaalsed ja PHP, välja arvatud juhul,
nad on funktsioon, samal asi JavaScript.
Jah.
>> Publik: Miks on see lubatud JavaScript ja ei kus mujal?
>> JOSEPH ONG: Miks on see lubatud JavaScript mitte C?
See on lihtsalt kes tulid JavaScript otsustanud, et see oli OK
JavaScript.
Nii et see on nagu programmeerimiskeelt konventsiooni kui me ütleks.
Jah.
>> Publik: Nii et miks see minna 6-5?
>> JOSEPH ONG: Nii see läks 6-5, sest kui ma möödunud i arvesse suva, et
i sees suva nüüd scoped foo, sest ulatus on olemas funktsioonid
JavaScript.
Aga kui ma saan siit minema, sest see aastal scoped funktsioon, ma lihtsalt
kasutades regulaarselt i, mis oli sees Ülejäänud käsuvoog.
Mõtet?
Kas ma saan edasi liikuda?
Hea küll.
Lahe.
>> Aktsepteerimine on objektid on üle teatena.
Sa tead, kuidas, kui te kaotate massiiv C võid
tegelikult muuta massiivi?
See on sama asi JavaScript.
Kui ma edasi objekti, antud juhul ma möödunud Milo sellesse catify funktsioon.
Milo hakkab läbi.
Tema nimi on Milo Banana.
Ma edasi, et ese funktsioon sest see on eesmärk, assotsiatiivne
massiivi JavaScript.
>> Kui ma teha operatsiooni selle funktsiooni, siis
tegelikult muuta objekti.
Nii, et see saab toimuda ainult siis objektid JavaScript, nii nagu see juhtub
jaoks massiivid sees C. Nii Milo nimi tegelikult muutunud kass nüüd.
Kas see on mõtet?
Nii et see toimib ainult objektid.
Objektid on üle teatena.
Jah.
>> Publik: Nii et sa tahad öelda, et Erinevalt muutuja i.
>> JOSEPH ONG: Jah.
Muutuva olin lihtsalt number, eks?
See on nagu C, kui te kaotate täisarv, see teeb koopia.
Ja kui te kaotate array, siis tegelikult muudab tegeliku massiivi
C. Sama asi juhtub JavaScript antud juhul.
Hea küll.
Ja järgmine, Milo on kurb, sest ta on nüüd kass.
See oli tegelikult Milo pärast mõned reis vet.
>> Niisiis, kuidas me kasutame JavaScript on veebileht?
Me saame selle lisada.
See on HTML koodi riba sildid.
Nii et mul on riba märksõnade seal.
Ja siis ma panen JavaScript koodi script sildid.
Ja siis ta täidab seda.
Kui ma seda teha niimoodi, et see on nimetatakse inline JavaScript.
See on selline räpane, sest JavaScript on tegelikult HTML.
>> Parem viis seda teha, palju ilusam, on kirjutada oma JavaScript sisse
väline fail ja seejärel anda script tag allikas.
Ja see läheb, et JavaScript fail ja loe JavaScript koodi
et faili asemel.
Ja nii, et sa ei pea palju JavaScript alguses oma
HTML-faili, mis muudab see on tõesti räpane.
Sa lihtsalt pane see kuhugi mujale.
Ja siis ta ei loe seda sealt.
Kas see on mõistlik?
>> Paigutuse eest.
Sel juhul, script on enne keha.
Nii et kui ma ellu, et seal on midagi kehas veel.
Võib-olla see teeb natuke rohkem mõtet, kui ma näitan seda järgmise osa.
Sel juhul skript tuleb pärast div.
Nii div tegelikult ilmub lehel esimene.
Siin see väike punane ring, näete tekst ilmub.
Ja siis hoiatus ilmub.
>> Esimesel juhul, sest script oli enne div,
hoiatus ilmub esimene.
Ja siis div ilmub pärast kui jätta kasti.
Nii täitmise küsimustes.
Nii et me hoiame seda meeles.
See on oluline aastal natuke.
OK.
Nii hästi, kuidas sa oodata, kuni Kogu leht on laetud, siis enne
täita mõned kood?
Me võtame arvesse seda veidi Natuke hiljem ka.
Aga muudkui see paigutus küsimused meeles, kui me
tulnud veel slide.
>> Nii saame DOM nüüd.
Ja mis on DOM?
Nii et kui te vaatate HTML koodi, et see on lihtsalt hunnik teksti ekraanil.
Niisiis, kuidas JavaScript teada, et see on HTML element?
Nii et meil on mõned mälu Esitame selle
struktuur, mis meil on.
Ja iga kord, kui meil on see mälu esindatus JavaScript kutsume
et DOM.
Ja see on lihtsalt nii, et inimesed otsustasid et me peaks esindama selle
HTML struktuuri.
>> Ja mida see DOM välja näeb?
Noh, mälu esindamise võtame selle teksti.
Ja me muudame selle mälu esindatust.
Nii et see on HTML.
Nii et me esimest korda teada, et iga DOM puu on dokument.
Tundub, et puu.
Ja kui dokument sisaldab HTML tag, tegelikult kõik
sees nüüd.
HTML tag on kaks last.
See on pea.
Seda head, kui te vaatate taandus seal juures, kuidas ta on struktureeritud
vahel tihe silte pea on laps.
Laps on pealkiri.
Täpselt.
>> Nüüd on meil keha laps.
Ja siis, et keha on laps kutsus pere.
Ja see pere on kolm last -
vanim, keskmine ja noorim.
Nii et sa peaksid teadma, kuidas juhtida skeem nagu see, kui me küsime, kuidas
joonistada skeem, kui me anname sa HTML vasakul.
Tea, kuidas toota DOM puu.
Ja sees neid asju, seal on lihtsalt mingi tekst, mis ma olen esindatud
nagu kastikesed.
>> Kas see DOM puu struktuuri muuta mõttes ja mida DOM on?
Mis siis p seista?
Siinpool p seal Kõnealune kood on
lõikes tag HTML.
Nii saate otsida see üles.
Aga see tähendab, et see on teatud ruumi mingi tekst.
Ja see on mingi vaikimisi CSS stiil, sest see on punkt tag.
Aga tegelikult ei muretse see osa liiga palju.
Lihtsalt tean, et see on kohatäide mõnda teksti.
Jah.
Küsimus?
Jah.
>> Publik: Sa mainitud CSS.
Hash pere ja räsi kõik see kraam on põhimõtteliselt
esindavad sümbolid CSS?
>> JOSEPH ONG: Jah, täpselt.
Ma saan, mida need hashes tähendab teine.
Kui Angela läks üle CSS, ta rääkis CSS valijad.
Need on CSS valijad et ta rääkis.
Jah, Rob?
>> ROB BOWDEN: Tahan ka kommenteerida et DOM sees pealkiri tag
Samuti on teksti sõlme.
>> JOSEPH ONG: Õigus.
Nii sees pealkiri tag, Mul on mingi tekst DOM.
Nii et tõesti, see pealkiri peaks olema nagu väike kast maha tulemata see samuti.
Aga see ei ole tegelikult tähtis liiga palju selles asjas.
Me tõesti ei hooli teksti sõlmede kui me kutsume neid liiga palju.
OK, me teeme.
Ilmselt teeme.
Ja ma kinnitada, et kui Ma laadige see uuesti.
Kas see on mõtet?
>> Niisiis, kuidas me töötame koos DOM?
Kui teil tegeleda DOM sisse JavaScript on kaks etappi.
Valite DOM element.
Ja siis teha asju ta.
Nii et sel juhul abstraktselt, ma olen Valitud keskel element.
Ja siis näiteks tehes asju et oleks muutes teksti.
See oli varem, Bob.
Nüüd, mida ma tegin, et see oli Muutsin Bob Milo käesolevas asjas.
>> Niisiis, kuidas me tegelikult seda teha?
Kuidas me seda teeme valides?
Ja kuidas me teeme asju asi kui oleme võtnud seda?
Noh, kuidas te olete õppinud seda Selle klassi on kasutada midagi, mida me
nimetatakse jQuery.
Mis on jQuery?
jQuery on raamatukogu, mis muudab JavaScript lihtsam kirjutada.
Nii et keegi võttis aega ja kirjutas jQuery.
>> jQuery on tegelikult kirjutatud JavaScript.
Ja siis, kuna nad tegid seda, nüüd on terve hunnik funktsioone, mis
saame kasutada, et muuta meie elab tõesti lihtne.
Millised on mõned asju ta teeb?
See muudab valides elemendid lihtsamaks.
See muudab muutuv HTML, Lisades klasside lihtsamaks.
See teeb Ajax lihtsamaks.
Me jõuame, et teine.
>> Ja see on analoogne C raamatukogudes.
Nii et te sisaldama string, teil strlen.
Sa saad strcpy, kõik need asjad.
Kui teil lisada jQuery, saad kena Võimalusi valida elemente muutus
asjad, jne.
Sa saad lisafunktsionaalsus mis JavaScript ei anna teile.
Nii jQuery pole JavaScript.
jQuery on raamatukogu, mis on kirjutatud JavaScript et teeb JavaScript
lihtsam kirjutada.
>> Nii jQuery ei ole programmeerimine keel.
Aga JavaScript on.
teha.
Muidugi sa saad oma terminoloogia õigus.
Kas on küsimusi?
Jah.
Kas see on küsimus?
Hea küll.
Niisiis, kuidas sa kasutada jQuery?
Noh, kui olete kirjalikult mõned JavaScript koodi ja sa sisaldama
jQuery ülaosas oma pilt script faili, saate kasutada dollari märk
nüüd, et saada ligipääsu jQuery.
Ja see erineb dollar siseneda PHP.
>> See on sama sümboliga, kirjuta klaviatuuril.
Aga need tähendavad väga erinevaid asju.
Dollar siseneda PHP tähendab see kuidas ma kuulutada muutuja.
Javascript, kui olete lisatud jQuery tähistab see jQuery.
Nii et hoidke seda silmas pidades.
Niisiis, kuidas võiks valime DOM elemente?
Noh, kui sa seda kole JavaScript Nii pääsete
dokumenteerima globaalse muutuja.
Ja siis saad elemendi ID perele.
See on tõesti pikk ja paljusõnaline ja ei ole väga kena.
>> Või saad kõik elemendid mis on p tag.
Ka see toimib JavaScript.
Aga me kunagi näitas sa süntaks liiga palju.
Mida me näitasime teile oli jQuery.
Nii et kogu valijat üles seal, väljendati JavaScript lihtsalt muutub
kondenseerub sellele väga kena dollar logi hashtag pere.
Ja $ p, just seal, kus see on niimoodi.
Kui soovite valida kõik p silte sees pere, paneme ruumi
vahel kaks.
Ja nüüd saame kõik p tags sees perele.
>> Ja tundub tuttav?
Noh, Angela rääkis CSS valijad.
Anna mulle üks sekund.
Ja nii, et valida element, sa lihtsalt kasutage sama asi nagu sa
teeks koos CSS valijat.
Kui paned hash ees see, valib ta teel ID.
Dot valib klasside.
Kui sa lihtsalt asi ilma hashes või punkte, valib ta need sildid.
Küsimused.
Jah?
>> Publik: Kui me kasutame dot meie HTML, on see, et mitte jQuery?
>> JOSEPH ONG: Dot meie HTML JavaScript on asi.
See ei ole jQuery asi.
Kuidas te õppinud seda jQuery on kasutada. html.
Ja siis võttis ta iganes HTML saab olema.
Nii et ma saan, et just teine ​​tegelikult.
Niisiis, kuidas me teeme asju element kui oleme valinud seda?
Nii et see näide Valides element.
Nüüd, mida me tahame teha asju ta.
>> Nii et sel juhul lubage mul minna tagasi Eelmise slaidi juurde.
See oli Bob enne.
Ja ma tahan, et seda muuta sees HTML Milo.
Nii et ma kutsun HTML funktsioon alates element.
See HTML funktsioon meetod element.
Ja siis ma annan seda mida Tahan HTML olema.
Ja see asendab, mis seal sees on et silt mida ma talle anda.
Jah.
Küsimus?
>> Publik: hashtag kasutatakse ainult jQuery.
[Kuuldamatu]
me ei kasuta seda.
>> JOSEPH ONG: Jah, täpselt.
Aga ärge muretsege liiga palju umbes puhas JavaScript.
Ma lihtsalt tahan, et te keskenduda sellele, kuidas te teeksin seda koos jQuery, sest
et see saab olema oluline osa kohta viktoriini.
Õige.
Täpselt.
Nii et näete, et hashtag, nii et vastab valige element koos
ID keset sellepärast hashtag.
Hashtag tähendab ID.
Ja see element on ID keskel.
Nii et see element valime.
>> Publik: [kuuldamatu].
dollari märk hashtag [kuuldamatu]?
>> JOSEPH ONG: Nii ei.
Küsimus on, kas sa kasutad. Väärtus.
Ja. Väärtus töötab ainult elementide mis on sisendid.
JQuery oleks . Val, ei. Väärtus.
Nii et ma saan väikese näite, et näitab see kõik koos
teine.
Aga ma arvan, et see toimib veidi koodijupi mõttekas inimesed siiani.
Tahad muuta HTML, kutsuvad HTML meetod.
Jah.
>> Publik: Kas oskate selgitada meetod jälle?
>> JOSEPH ONG: Nii meetod on lihtsalt funktsioon, mis kuulub üks sellega
juhul üks neist DOM elemente, sest näed ma
Valitud element esimene.
Tegelikult, las ma hiirega.
I valitud element esimene.
Ja siis ma helistasin selle HTML funktsioon, mis see oli.
Ja kuna see funktsioon kuulub see asi, mida me nimetame seda meetodit.
See on lihtsalt väljamõeldud nimi.
Ütle, et jälle.
Seega pidage meeles, mis me valisime element nüüd.
Ja me panime ta sees element muutuv.
Õige?
>> Nii et kui me tahame muuta HTML edasi sees, sest see oli Bob enne, siis
soovite muuta, et teksti Milo.
Nii me nimetame HTML.
Ja me öelda seda, mida HTML sees et element peaks olema nüüd.
Ja nii see muudab selle Milo, sest ma andsin selle Milo.
>> Publik: Nii nad töötavad koos.
[Kuuldamatu]
>> JOSEPH ONG: Jah, jah.
Nad töötavad koos.
Nii üks neist valib element esimene.
Ja teine ​​teeb midagi ta.
Jah.
>> Publik: [kuuldamatu].
Kui see meetod erineb HTML teil on meetod võrdub tegelik.
>> JOSEPH ONG: Jah.
See on teine ​​meetod.
Ja meil on võimalik katta, et just teine kui saame näiteks.
Ma tahan veenduda, et me kiirendada sest meil hakkab aeg otsa saama.
Aga meil kestab viis ajas nüüd.
OK.
Lahe.
Nii et kui soovite lisada klass, seal ka add klassi meetod.
See on vaid üks näide sellest, mida saate teha jQuery.
See lihtsalt lisab klass.
>> Kui soovite eemaldada, võite helistada eemalda.
See on lihtsalt üks asi, mida sa teha saad.
Seega rohkem näiteid, mida te saate.
Nii ma lihtsalt pane see kell top nagu see on?
Noorim eemalda.
Kui ma lihtsalt täita, et JavaScript juures peale minu fail, siis see töötab?
Õige.
Kuna keskel veel ei ole.
Nii et see ei hakka tööle.
Execution järjekorras.
See läheb üles esimene.
Mida?
>> Publik: noorim veel ei ole?
>> JOSEPH ONG: Jah.
Noorim veel ei ole.
Täpselt.
>> Publik: Sa ütlesid keskel.
>> JOSEPH ONG: Vabandust.
Noorim veel ei ole.
Ja teine ​​asi on see, ma ei ole lisatud jQuery
faili küsida script src.
Seega, see ei lähe tööle.
Tegelikult, ma ei teinud seda, et Järgmine slaid, mis on
peaks määrama, et kas.
Aga kuidas me seda teeme on JavaScript sündmuste ahela.
Niisiis, mida me teeme, on meil kasutada sündmus käitleja, et see juhtuks.
Ja nii ma valige dokument määratud esimene.
Ma ütlen, OK, kui dokument on valmis, andke mulle käivitada funktsioon.
Nii et kõik, mis süntaksi abil.
>> I valitud dokumendis.
Nüüd, kui dokument on valmis, käivitage funktsioon.
Ja nii siin kui dokument on valmis, mis tähendab kõikide HTML on
koormatud, siis ma saan funktsiooni mis eemaldab see element.
Ja nüüd, kui ma saan seda funktsiooni et mul läks valmis, ma olen
tagatud, et kõik HTML on leht läheb olemas esimesel.
Jah.
Küsimus?
>> Publik: Milline sündmus märksõna jooksul funktsioon?
>> JOSEPH ONG: Nii et sündmus märksõna funktsioon on lihtsalt parameeter,
saab edasi funktsioonile jaoks igal juhul.
See on lihtsalt midagi, mida saad tasuta.
Kui kasutate võti töötlejad pset8, et sündmus saaks sulle öelda, sest
Näiteks mis klahvi vajutatakse.
Sel juhul kohaldatakse valmis juhul see pole tegelikult väga kasulik.
Aga klahv sündmus, see on rohkem kasulik, sest sa saad teada, mis
klahvi vajutada, pääsedes võti kood ära juhul objekti.
Õige?
Kas see on mõtet?
OK.
Jah.
Küsimus?
>> Publik: Nii saab panna script tag allpool?
>> JOSEPH ONG: Nii et jah.
Sa võiksid panna skript tag allpool.
Aga siis muutub tõesti räpane.
Ja me tahame, et koondada kõik meie koodi ühes kohas.
Ja see võimaldab meil seda teha.
Mäleta varem ütlesin seal on ilusam viis tagada, et elemendid on
lehel enne kui käivitada koodi?
Ja see on lihtsalt tore viis siis oleks täita seda.
>> Publik: [kuuldamatu].
>> JOSEPH ONG: Jah.
Sa ikkagi, eks?
Sest mäletan, siis lisatud faili ülaosas lehekülge.
Nii see läheb täide, enne sa saad lehekülje allosas.
OK.
Nii saate lisada ka erinevate tüüpi sündmus.
See üks lihtsalt töötleb klikke.
Kui ma klikin noorim, siis see ilmub koos tähelepanelik.
See on lihtsalt erinevad sündmuse tüüp.
Erinevalt valmis juhul sa nüüd kasutada kliki sündmuse saabudes
klikib element.
>> Ja sel juhul, mäletan, kliki käitleja on lisatud noorim.
Nii et see juhtub ainult siis, kui Ma vajutan noorim.
Ja teine, valmis sündmus oli lisatud dokumendis.
Seega ootab dokument et olla valmis.
Mõtet?
Ma arvan, et ma ei saa edasi liikuda.
Jah.
Küsimus?
>> Publik: [kuuldamatu].
Sellisel juhul peate kasutama [kuuldamatu].
>> JOSEPH ONG: Jah, sest see juhul pean ootama noorim
element ilmub ekraanile esimene enne kui ma võin lisada click käitleja
see, mis on, miks panin selle sees Dokumendi valmis.
OK.
Ja kõrval, nii et see on suur eeskuju kuidas oleks võimalik ühendada kõik.
See on lihtsalt vormi kinnitamine näide olete näinud loeng.
Nii et see samm-sammult nagu sa lähed läbi selle.
Ja see on täiesti OK.
Lihtsalt loe see ülalt alla.
>> Mul on vormi allosas.
Kui dokument on valmis, ma kinnitada esitama käitleja, nii et
kui ma esitada vorm, saan väärtused sees kõik need sisendid.
Ja ma saan vaadata, kui see on tühi.
Kui see on tühi, ma tagasi vale, sest Ma ei taha, et esitada vorm,
sest vorm on vale.
Kui parool on tühi või on vähem kui kaheksa tähemärki, ma ei esita
kujul, sest see on ka vale.
Ja tagasi false lihtsalt takistab vormis esitamist ja
läheb uue lehekülje.
>> Ja loodetavasti on see mõistlik.
Ma arvan, et te peaks kõndida läbi Selle koodi samm-sammult oma.
Ja kui sa aru, mida valige elemente ja teha asju ta
tegelikult kaasa toob, see teeb palju mõistust teile.
Jah?
>> Publik: Mida teeb name = Kasutajanimi tähendab?
>> JOSEPH ONG: Nii name = Kasutajanimi ja name = salasõna tähendab lihtsalt vaadata
atribuut iganes te valite.
Ja siis on sobitada.
Nii et me minna registreerimist.
Ja siis me vaatame kõik sisendid ja registreerimine.
Ja siis vali üks, kus nimi atribuut on võrdne kasutajanimi.
Nii et esimene valijat ainult valib kasutajanimi sisend.
Ja see teine ​​valija ainult tõlkebüroosid UUS üks, sest need on
oma nimi atribuudid määrata mis nad peaksid olema.
Küsimus?
>> Publik: On esitamine, kuidas alumine osa lahendada ülemine osa?
>> JOSEPH ONG: Nii see on, sest Ürituse käitleja.
Nii et me ootame esitama sündmus mis saab vallandati kujul.
Ja see on kõik, mis on esitada.
Miks ma nimetan esitama seal?
Ta ütleb, kui vorm on esitatud, Ma saan esitada juhul.
Nii et lubage mul lihtsalt pealt, et ja seejärel käivitada selle koodi asemel.
Jah?
>> Publik: Miks sul on funktsioon sündmus?
Miks sa ei saa lihtsalt [kuuldamatu]?
>> JOSEPH ONG: Sest JavaScript, siis peavad deklareerima funktsioone.
See on lihtsalt, kuidas see toimib JavaScript.
Sa pead ütlema, et see saab käivitada funktsioon.
Te ütlete, et te olete ootab funktsioon siin asemel
lihtsalt lokkis traksid.
>> Publik: Ja funktsioon on mis tahes järgmine?
>> JOSEPH ONG: Jah.
Funktsioon on kõik, mis on sees lokkis traksid peale
mis funktsioon märksõna.
Jah?
>> Publik: [kuuldamatu].
>> JOSEPH ONG: For esitama?
>> Publik: Ei, funktsioon ilma sündmuseks.
>> JOSEPH ONG: Jah.
Niisiis ilma korral, sul võib olla see.
Kui sul ei ole vaja juhul, siis saate lihtsalt jätta see.
Aga kui te seda teete, siis te lihtsalt pane see sinna.
Jah.
Kiire küsimus?
>> Publik: [kuuldamatu].
>> JOSEPH ONG: Jah.
Sest see, mida sa pead tegema, document.ready lihtsalt ütleb oodake kõik
HTML lehe laadimine esimene.
Ja tavaliselt, tahad oma elemendid paigas enne otsa kood.
Hea küll.
Peame Ajax.
Meil ei ole palju aega.
Nii plusse ja miinuseid.
JavaScript on lihtsam proovida kirjutada jQuery.
Aga jQuery on selline aeglane.
>> See on nagu PHP on aeglasem kui C, sest see on tõlgendatud.
Ja jQuery on veidi aeglasem kui JavaScript, sest see teeb palju
asjad kapoti alla.
Ja kui te kasutate jQuery, see on natuke aeglasem
JavaScript, kuigi see annab teile kena elegantsi.
Ja lõpuks, Ajax.
Seni Ajax, sa ei ole näinud Ajax poolest pset7 veel, sest
kui te seda teete, siis esitab vormi tsiteerida.
See laeb uue lehekülje.
Nii saad selle suure valge välk lehel, samal ajal kui
teine ​​leht laeb, on õige?
>> Oleks tore, kui te ei ole seda flash.
Nagu Facebook, kui sa lihtsalt leidke põhja, see lisab uue sisu
ilma värskendav terve lehekülje.
Nii et midagi sellist oleks tore.
See on JavaScripti koodi vasakul poolel.
Sa saad, mida on sees, et sisend.
Sa saad stock info Yahoo!
Ja siis teha suur string ütleb, OK, see on sõnum, mida ma tahan
näidata ekraanil.
Ja siis pane see sõnum sees mõned HTML element, mis saab
kuvatakse ekraanil.
>> Nii et kõik, mis siin toimub.
Ühesõnaga, sest see on kõik, JavaScript ja sa ei pea sõitma
enam PHP, see teeb kindlasti et leht ei uuene.
Nii et see on lihtsalt abstraktne idee et ma räägin siin praegu.
Abstraktne mõte on see, et kui sa seda kõik JavaScript, et sa ei pea
lehe värskendamiseks.
Aga kuidas sa tegelikult seda teha?
>> Noh, tegelikult räägime Probleemiks on see esimene.
Probleem on JavaScript, täitmine on sünkroonne.
Nii et sa pead ootama ühe line lõpetada enne, kui
täita järgmisel real.
Ja mis siis, kui ma lähen üle Yahoo!, ja nende serverid on tõesti aeglane ja
see võtab neil kolm sekundit anna mulle tagasi, et aktsia info?
Kui ma tabanud, et hind line, kui täitmine on sünkroonne, nagu see on,
Vaikimisi, mida ta on lihtsalt teha, on Teie brauser läheb varisemine
kolm sekundit.
Ja sa ei kavatse olla võimeline tegema midagi, kui ta saab need andmed.
See saab külmutada.
>> Ja see on halb.
Sa ei taha, et kasutaja on külmutatud veebilehele.
Õige?
See on lihtsalt halb.
Kõik on nõus?
Kui olete sirvimise Facebook ja see külmub ja sa ei saa midagi teha, siis
saada tõesti pettunud.
Seega lahendus on meil teha midagi asünkroonne asemel.
Nii et kõik see asünkroonne asi ütleb on, ma küsin seda
URL mõned andmed.
Ja siis ma lähen edasi.
Ma lihtsalt hoida täidesaatvas mis iganes kood, mis oli pärast seda.
>> Ja siis, kui need andmed on valmis, siis ma neid töödelda.
See on kõik, see on selge.
>> Publik: Ajax ajab kood asünkroonne?
>> JOSEPH ONG: See on asünkroonne tee tõmbamist andmed.
Nii et esimene asi, Ajax see võimaldab mul saada andmeid
välise veebilehel.
Ja teine ​​asi on see tagab et minu lehekülg ei seiskuks, kui ma olen
edev, et andmed.
See on asünkroonne osa.
Sest see kustub kusagil mujal, sest ma ütlen Hoian toimub samas
see on edev, et andmed, mis muudab asünkroonne.
Hoian täitev.
>> Nii hoida, et asünkroonne meelsed.
Ja ma näitan teile, mida Erinevus on.
Sünkroonne versioon on vasakul pool.
Asünkroonne versioon on paremal pool.
Vaata numbreid näha, millised samme vasta sellele, mida
täidab iga rida.
Seal, hoiatus ilmub esimene.
Sest saan stock info Yahoo!
võtab kolm sekundit, see kioskites kolm sekundit.
Ja siis ta hoiatab hind Pärast nende kolme sekundi jooksul.
>> Nüüd, et hoiatus näitab kuni sel ajal -
kolme sekundi sisse
Ja siis ta hoiatusi pärast seda.
Nii see lihtsalt käib samm-sammult.
See on nagu see, mida te oleks nõus, on õige?
Mis asünkroonne täitmist, sa märku esimene.
Siis lähme selle URL.
Ja sa ütled, ma lähen lihtsalt küsida andmeid.
Ja siis ma lähen töödelda hiljem.
Nii see kohe täide järgmisel real pärast ma teen, et
asünkroonne taotluse.
>> Nii 0,001 sekundit, näete alert hi.
Execute selle funktsiooni häire aega.
Ja kuna ma lubasin, et ma töötleb andmeid hiljem, mida
nii on, kui need andmed tuleb tagasi kolm sekundit hiljem, siis ma saan selle
funktsiooni, et mul on seal.
Jah?
>> Publik: Kas saaksite täpsustada või selgitada, mida Ajax tähendab?
>> JOSEPH ONG: Nii Ajax on nii, et kui ma vaja andmeid, kui ma olen veebilehel ja ma
ei taha värskenda lehekülge, siis Ma kasutan seda tehnoloogiat nimega Ajax.
See sisuliselt tähendab lihtsalt, mine too andmeid teisele veebilehele.
Ja teha seda nii, et lihtsalt ei seiskuks minu veebilehele.
>> Publik: Nii see on omane osa JavaScript või jQuery?
>> JOSEPH ONG: Nii keegi kirjutas, kuidas teha Seda JavaScript ammu.
Ühel hetkel, see ei ole olemas.
Ja keegi leiutanud seda tehnikat et inimesed saaksid nõuda andmete
Selles mood.
Ja nad kirjutasid mõned asjad seda teha teie jaoks.
Ja jQuery lihtsalt sulle selle väga kena viis seda teha
Selle $. saada funktsiooni.
Kas on küsimusi?
Võin vastata küsimustele Ajax hiljem ka.
Ma olen siin.
>> Nii et olgem meile tooma andmed ilma lehe värskendamist.
Ja olgem meile seda teha asünkroonselt et
ei külmu lehel.
Liiga pikk, ei lugenud, kui see selgitus oli teie jaoks liiga pikk.
Nii et lõpuks, cross-site skriptimine rünnakuid.
Me nägime seda Zamyla.
Kui minu andmebaasis keegi on selle nimi, mis on see script tag, ja ma
on mingi kood minu lehel, mis prindib välja inimeste nimesid järjest, või on mul
mõned JavaScript koodi, mis lisab Selle nime lehel
Mis HTML saab toota?
Noh, ma välja printida HTML tag.
I printida välja kõik need sildid.
>> Ma saan, kus ma olen trükkimine läbi minu sõbrad.
Printida Lauren välja.
See printida Milo välja.
Ja siis minu nimi andmebaasis on script post
paigast Facebook staatus.
Sest ma sisestatud seda arvesse lehele sest tundub, JavaScript, kui
see leht saab saata kasutaja see läheb täide, nagu JavaScript.
Ja nii see on, mida me nimetame murdskriptimise rünnak.
Keegi paneb pahatahtlik teave andmebaasi, mis võib vasta
mõned täiendavad string või mõned JavaScript string.
>> Ja kui ta saab välja printida kuni lehekülje Sedasi siis milline
juhtub see, et halb kood läheb täide et ma ei kavatse
seda, et hukatakse.
Ja see on kõik cross-site skriptimine rünnak.
Ja kuidas sa saad ümber see on nagu Zamyla ütles.
Sa lihtsalt wrap asju HTML eriline tähemärki.
Ja see HTML eriline tähemärki on PHP funktsioon, mis aitab ära hoida seda tüüpi
asi juhtub sinuga kui teil on pahatahtlik
string oma andmebaasi.
See lihtsalt põgeneb see, et see ei saada tõlgendada HTML.
See asendab vähe sulgudes mida me nimetame üksused.
Ja me läksime üle see loeng ka.
Nii et ma arvan, et te peaks olema hea haarata selle kohta.
Küsimused?
Jah.
>> Publik: Niisiis, kuidas oleks [kuuldamatu]?
>> JOSEPH ONG: Ütle seda uuesti.
>> Publik: Kuidas oleks monitor -
>> JOSEPH ONG: Õigus.
Nii et teil on midagi, mis ütleb, et kui Registreeruda, kirjuta oma nimi.
Ma lihtsalt kirjuta see väli, minu nimi on stript post paigast Facebook
staatus lähedal script tag.
Ja see lihtsalt saab panna andmebaas, sest ma ei saa öelda, et keegi
aastal maailmas ei ole nime vasaku noolega või
sõna script ta.
See ei ole tegelikult mõtet.
Nii et ma lihtsalt veenduda, et ma Puhas kraam enne kui ma printida
välja saada.
>> Publik: Nii HTML eriline kaardid lase script sildid?
>> JOSEPH ONG: Jah.
Nii et see ei takista script sildid.
See muudab kindel, et script sildid ei saa
tõlgendada HTML või -
jah.
See lihtsalt kerkib nagu mida see tegelikult on.
Hea küll.
Nii et oli viktoriin läbi.
Lahe.
>> [APLAUS]