>> R.J. Aquino: Ni simple komencu.
Do tiu estas Kvizo 1.
Jen estas kelkaj altnivelaj informo.
La Pri paĝo por la kvizo estas en ĉi tiu URL ne plu CS50.net, kvankam tio
Mi ankoraŭ laboras.
Estas CS50.harvard.edu/quizzes/2013/1.
Ĝi estas la granda Pri paĝo, dirante al vi kie kaj kiam, nome apud merkredo
en faskon da ĉambroj.
Kaj por la proksimaj merkredo, mi signifi du tagoj.
Ĉiuj ĉi informoj estas tie.
Sed ĝi estas tuteca.
>> Do ĉio ekde la unua duono de la jaro estas potenciale en la kvizo,
ĉar vi ne povas vere plenumi progresinta aferojn en C sen se kondiĉoj kaj
por maŝojn kaj similaj.
Sed estos emfazo je la materialo kovritaj ekde Kvizo 0,
komencante per structs kaj Arkivo Mi / O. Ĝi estas tipe pli
defia ol Kvizo 0.
La averaĝa poentaro estas tipe pli malalte.
Studu malmola.
>> Dum vi studas, nepre uzu CS50/discuss sendi viajn demandoj
kaj legi fremdajn demandoj.
Do se vi ne havas ajnajn demandojn, ensalutu kaj legi
via geamikoj 'demandoj.
Ili estas probable bona demandoj.
Kaj prenu la praktiko kvizojn.
Ni estis donante kvizojn por sep aŭ ok jaroj nun.
Ili ĉiuj estas en linio.
Estonteco demandoj estas similaj malnovaj demandoj.
Tiel estas kiel ni faras ilin.
>> La kvizo ne ekzistanta.
Neniu el ni vidis gxin.
Sed ĝi similos antaŭa kvizojn.
Por ĉi tiu recenzo sesio, ĉi tio ne estas ĝisfunda listo de temoj.
Vi povas ne nur ĉeesti ĉi kaj tiam estu perfekte pretas por la kvizo.
Alie, ĝi ne estus ke multe de kvizon.
Kaj tio estas ankaŭ ne nepre ĉio kion vi bezonas scii pri neniu
donita temo.
Ĝi signifis elmontri vin al la aferoj ni kovris, rememorigi al vi, kion ni
kovrita, kaj la maniero kiuj ni kovris ĝin.
Sed vi devos iri pli for kaj profunda kiam vi studas por rekontroli
ke vi ĉion scias pri ajna donita temon kaj ke vi jam plenigis
ĉiuj anguloj, kovrita per prelego.
>> La kvizo notoj diri al vi iri al la skribisto notoj, gardoparto prelego filmetoj.
Tio estas bona vojo por certigi vi havas kovris cxiujn viajn bazojn.
Do ekuzi, kiam mi faris ĉi tiujn diapozitivoj, mi klopodis meti kie mi trovis
informoj.
Do por Dosiera / Aŭ, ekzemple, Semajno 7, Lundo la lekcio, kaj la afiŝis
Sekcio 6 kaj Problemo Ara ĉiuj havas informon pri dosiera mi / O. Mi jam faris
ĉi por ĉiu temo.
Do tiuj titolo diapozitivoj may esti utila al vi.
>> Do ĉi tie ni havas Dosieraj mi / O. Memoru, en Problemo Ŝanĝu 5, ni uzis fopen, fclose,
fwrite, fread kaj fseek.
Esti rekuperita 30ish JPEG-oj kaj esti malpligrandigeblaj kaj paneas kun
bitmaps, vi devus esti bela familiara per tiuj funkcioj
kaj kiel ili funkcias.
Se vi estas jam konataj, definitive revizii ilin.
Kaj certigi vin kompreni kion la malsamaj argumentoj estas,
kiam ili estas uzataj.
>> Sed la komuna dosiero-rilataj cimojn vi rajtas demandi pri -
bone, se vi jam forgesis kontroli ĉu fopen efektive laboris antaŭ vi iru al
modifi dosiero.
Tio povus esti malbona.
Se vi forgesis fclose dosieron ke vi jam fopened, tio estas simila al
memoro liko.
Tio estas sufiĉe malbona.
Kaj forgesante por kontroli se vi havas atingis la finon de la dosiero al vi
komenci skribi al ĝi.
>> Do se vi diras, bona, mi estas je la finon de la dosiero.
Donu al mi ankoraŭ 5 bajtoj.
Nu, tio verŝajne ne tuj labori ekster la vojo vi atendas.
Tio estas vere por Dosieraj I / O, ĉar ni faris tiom multe de ĝi
kun la problemo metita.
Do se vi komprenis, kion estis okazi en Problemo Ara 5, memoru la bitmats
kaj la JPEG-oj, tiam vi estas probable ĉiuj metita por Dosieraj mi / O. Se tio estas iom
fuzzy, definitive revizii tiun problemon aro kaj de la asociita materialo.
>> Structs estis la temo, kiuj estis sur la linio inter Kvizo 0 kaj Kvizo 1.
Ne tute fari la kortego por Kvizo 0.
Do ili povos definitive esti sur Kvizo 1, Semajno 7, lundo.
Kio estas struct?
Ĉi tie ni montras struct.
Ĝi estas kvazaŭ nova tipo.
Estas kiel ujo por multnombraj kampoj.
>> En ĉi tiu kazo, ni jam deklarita struct studento kiu havas du kampoj -
ĉeno kiu ni vokis nomon kaj an int ke ni vokas aĝo.
Do kiam mi pasas ĉirkaŭ lernantoj aŭ mi redakti lernantoj, mi povos
konsenti liajn nomon kaj lian aĝon.
Ni rigardu kelkajn kodo por tio.
Ĉi tie ni vidas, ke mi deklaris studento s, samkiel
Mi deklaras iu variablo -
int x, int y, ktp.
>> Jen studento s.
Ĝi komenciĝas per nenio en liaj kampoj.
Do ni starigu ilin.
Vi starigis kampoj de struct kun skalara.
Do mi diris ĉi tie ke s.name = RJ.
Kaj s.age = 21.
Vi povas ankaŭ ĝisdatigi kampoj sammaniere oni kredus ĝisdatigi
la valoro de variablo.
Do mi volas ŝanĝi mian nomon el RJ kun neniu periodoj por R.J. literumis la
korekta vojo.
Estus s.name = RJ, la sama kiel ni diris, ke origine.
Kaj tiam vi povas aliri ilin.
>> Do ni starigu ilin.
Ni ĝisdatigis ilin.
Vi povas ankaŭ aliri ilin en la sama maniero.
Do jen, mi presado ekstere R.J. Estas 21 jara.
Kaj mi aliru tiujn valorojn kun s.name kaj s.age.
Do jen alirante structs kun la skalara skribmaniero.
Yep, pridubas?
>> Spektantaro: Ĉu ekzistas kialo pri la antaŭa slide ke vi ne metis
studento sur supro linio, kiel typedef struct lernanto kaj poste
lernantino ĉe la fino?
>> R.J. Aquino: Do ​​la demando estis, je ĉi glito, ni kutime vidita
typedef struct nodo kaj tiam la kampoj de la struct kaj
tiam la vorto nodo.
Kaj kiel veni tien Mi ne diris, typedef struct studento kaj tiam la
kampoj de la struct kaj tiam studento?
La kialo estas ke mi ne bezonas aliri gxin interne de la struct.
Do estas OK lasi ĝin sen nomo.
Mi povas simple lasi ĝin kiel anonima struct.
>> La kialo, ni faros, pro ligita lertaj kaj tion estas ĉar interne vi bezonas
por referenci al struct nodoj stelo.
Do la struct devas havi nomon, tial vi povas aliri gxin poste.
Ĝi estas malgranda detalo.
Sed vi tipe vidi typedef struct krispa krampoj, se vi ne bezonas
la nomo kaj typedef struct iu nomo sekvata de krispa krampoj, se vi volas,
bezonas la nomon.
Do, tio estas bona demando.
>> Kaj je tiu punkto, ni emas modifi structs migru ĉirkaŭ structs per
referenci, ne per valoro.
Do ni simple preterpasas ĉirkaŭe montriloj al structs anstataŭ pasante tra la
structs sin.
Do vi estas tre ofte tuj estos uzante, en ĉi tiu kazo, lernanto * aŭ
struct nodo * aŭ nodo * anstataŭ el studentoj aŭ nodoj.
Do jen, mi jam diris, OK, la variablo ptr tuj estos la adreso de s.
Ĝi tuj estos la montrilo al la studento R.J.
>> Do ni povas ricevi en tiuj kampoj la samaj kiel ni atingos ion.
Unue, ID referenci la montrilo por ricevi la struct.
Tio estas * ptr kaj poste skalara kaj tiam aĝon.
Do por aliri la kampon, kaj mi ĝisdatigita ĝin nun al 22, ĉar, ni
diru, ĝi estis mia naskiĝtago.
Ekzistas ŝparvojo sintakso uzante la sago ĉi tie.
Do ptr sago aĝo estas apenaŭ la sama kiel * ptr.age.
Nun, ke io, kion vi devos por enmemorigi kaj memori.
>> Vi uzis ĝin multe en pset6, la Speller pset.
Sed tio estas vere, kio okazas sur sub la kapuĉo.
Ĝi estas dereferencing la montrilo kaj poste aliri ĝin.
Demandon?
>> Spektantaro: [inaudibles].
>> R.J. Aquino: Do ​​kial ni uzas pointers kiel structs anstataŭ la
structs mem?
La kialo estus se vi pasante a struct al funkcio, vi probable
volas pasi ĉirkaŭe nur la 4 aŭ tiom bitokoj kiuj reprezentas la montrilon, kiel
kontraste al la potenciale 30 aŭ 40 bitokoj, kiuj estas la struct.
Do pasas ion al funkcio Estas pli facile kiam la afero
estas pli malgranda en mallonga.
Demandon?
>> Spektantaro: Vi eble menciis ĉi en la komenco, sed estas tie
aliaj diapozitivoj supren sur [inaudibles]?
>> R.J. Aquino: tiuj diapozitivoj estos Sekvu la recenzo kunsido.
Ni devos sendi ilin en la retejo.
Do movante en kaj movante en iomete pli rapida, ni iras por paroli pri datumoj
strukturoj.
Ekzistas multe.
Ni kovris faskon da ili.
Jen kion vi devus kompreni pri datumstrukturo.
>> Vi devas vere kompreni je alta ras, kion ĉiu strukturo estas.
Ĉu vi povas klarigi en la angla al via amiko kiu ne prenis CS50 kiom
ni organizas nian datumoj kaj kial ni volas uzos ion en tiu maniero?
Tio estas afero tiu.
Aĵo du, kompreni la efektivigo.
Do komprenu kiel uzi tiujn aferojn en C. Kaj ni iros trans ĉi.
>> Kaj tiam tion tri estus scii la kuri tempoj kaj la limigoj de la
diversaj strukturoj vi uzas.
Do komprenas kial vi uzus hash tablon anstataŭ tabelo.
Kompreni kiel rapida, mezume, aliro kradon tablo estas.
Komprenas kion operacioj estas vigle ligillisto sed malrapida sur arrays kaj
inverse.
Do por kompreni tion, vi devos kompreni Big-a skribmaniero nur scias
kiel paroli pri tiuj klason de aĵoj.
Kaj ni reparolos pri tio.
>> Do unua afero, ligita listoj.
Ĉi tie estas altnivela bildo de ligillisto.
Ni montros al tio en la klaso.
Ni kutime havas 10 personoj starante sur la scenejo.
Sed ni havas serion de nodoj kie ĉiu nodo havas iun valoron kaj puntero
al lia proksima valoro.
Do, por ricevi de unu vertico al la sekva, vi nur diru, donu al mi la sekva nodo.
Vi havas tiu nodo.
Donu al mi la sekva nodo.
Vi havas tiu nodo.
Donu al mi la sekva nodo kaj tiel plu ĝis tie ne estas nodo maldekstren.
>> Do daŭrigi paroli pri lin je alta nivelo.
Ĝi estas tre facila por enmeti tion en ligillisto.
Se vi ne zorgas pri la ordo, vi povas simple lasi ĝin
ĝuste en la komenco.
Tio estas konstanta tempo.
Sed estas malfacile trovi valoron.
Se vi provas demandi, estas sep en mia listo?
Vi devas iri tra ĉiu unuopa valoro.
Ĉu ĉi tiu estas sep?
Denove kaj denove.
Kaj tio estas O (n).
Do studinte por la kvizo, kompari ĉi tion kun arrays.
>> Ĉu tio estas OK?
La lumoj dim.
OK.
Kiam estas ligillisto pliboniĝu?
Kiam estas tabelo pli bone?
Do ni rigardu iujn kodo.
Ĉi tie estas potenciala nodo.
Estas struct.
Ĝi havas int n, kiu estos nia valoro.
Kaj ĝi havas struct nodo * proksima, kio Estas nia montrilon al la sekva nodo.
Do jen, ni povas vidi ke ni okazis esti enmetu int en nia nodo.
Sed se tiu estis ligillisto char steloj aŭ ligita listo de flosoj, ni
tute povus ankaŭ fari tion.
>> Memoru en pset6, vi probable havis ligillisto char steloj aŭ ĝuste
static char arrays.
Ni rigardu tien ĉi ĉe operacio.
Do ni volas enmeti novan n en nian ligillisto.
Ni komencu per kapo montrilon, kiu estas puntero al tiu nodo, kiu havas la
valoro de n kaj proksima de puntero ke punktoj por tiu nodo estas valoro de
n kaj proksima de nula, ĉar ĝi estas la lasta nodo.
Do, en la intereso de tempo, mi volas meti ĉiuj la kodon sur la ekrano.
Kaj ni vidos marŝi tra ĝi kelkaj linioj samtempe.
>> Do jen la kodon.
Mi esperas, ĝi estas legebla.
La unua afero, kiun ni faras estas ni malloc nova nodo.
Do ĝi faras montrilo al nova nodo ke ne tute havas nenion starigis
supren en ĝi ankoraŭ.
Ni kontrolu certigi ke la nova vertico estas ne nulaj.
Alie, ni devas rezigni.
Do li kontrolis ke ni nun starigis la valorojn en la nodo.
Do ni metas la nova n en nian n kampo.
Kaj ni starigis la sekvanta montrilon por montri al la originala kapo, tiel ke ni povos
nun enmetis ĉi nodo en nian liston.
>> Fine, ni havas la tutmonda kapo punkto al nia nova nodo, tial ke se ni devis
komenci ĉe kapo, ni estus en ĉi tiu nova unua nodo anstataŭ
la malnova unua nodo.
Kaj kiam cxi tiu funkcio eliroj, la variablo novan nodon jam ne ekzistas,
ĉar estis loka al la funkcio.
Do tiu estas la stato de la mondo.
Nia tutmonda kapon antaŭ nia nova unua nodo, kiu notas al nia
originalaj unua nodo, kiuj punktoj al la nodo post tio.
>> Tio estis inserción.
Mi esperas ke estis relative simpla al sekvi.
Kiam en dubo, desegni bildon.
Do mi trovas ke parolante pri ligita lertaj kaj rigardante
kodo estas tre helpema.
Dum rigardanta bildon de ligita listo permesas al mi pensi, ho, tiel
Mi havas ĉi tiu nodo tie.
Sed se mi ĝisdatigos ke montrilon, finu malkonektita.
Kaj mi forgesis kie la nodo iras.
Kaj la kodo elirojn.
Kaj vi havas plurajn nodoj ke estas malkonektita.
Kaj vi ne finas kun la listo vi deziras.
>> Do se vi tiros la pentraĵo kaj faru ĝin paŝon post paŝo, espereble, vi vidos
la ĝusta ordo de aferoj rilate ĝisdatigi la montriloj certigi
ke la listo kunfluas.
Enmeti estas relative simpla.
Pli komplika estus inserción en ordo listo.
Pli komplika funkcio estas forviŝi kaj trovi, do rigardante tra lerta por
vidi, ĉu io estas tie.
Eble vi faris tion en pset6 kiam vi eniris vian hash tablo kaj vi diris:
Nu, estas la vorto apple en mia ligillisto?
>> Do eble vi jam faris tion.
Sed certe, refreŝigi vian memoron kaj provi reimplement trovaĵo kaj
reimplement forviŝi por ligillisto.
Fun flanko noto, tie ankaux duoble-ligita listoj, kie vi havas
pointers kiuj notas ambaŭ antaŭen kaj malantauxen, tiel ke vi povus iri al la
sekvanta nodo kaj al la antaŭa nodo.
Kaj tie estis demando pri pasintjara kvizo de tiu tipo, parolante
pri duoble-ligita listoj.
>> Nu, tio estas strukturo kiu vi estas relative konanta, ĉar plej
vi verŝajne uzas ilin sur pset6.
Jen unu, kiu estas iomete malpli konata.
Kiel flanka noto, mi pensas ke Kvizo 1 estas unuavice malfacila ol Kvizo 0, ĉar
la vazaro vi faras, vi ne faris tiel.
Meti tiun alian vojon, por Kvizo 0, vi estis skribinta multajn C. Kaj ni
demandis vin pri C.
>> Por Kvizo 1, ni iras, por demandi vin pri PHP kaj Javascript, kion vi
ne skribis tiel de.
Ni iras al vi demandon pri la C-kodo kiu Vi ne skribas tiel de,
tiu progresinta C vazaro.
Do certe, praktiki la vazaro ni raportis en prelego, ke vi
ne nepre faru sur la problemo metita.
>> Parolante pri kio, vi ankoraŭ ne skribita stako sur problemo metita.
Sed estis en prelego.
Jen la alta nivelo bildon de stakoj, ke ni montras ĉiun jaron.
Ĝi estas la stako de pletoj en la Mather manĝejo.
Ĉe alta nivelo, stakoj estas lasta en, unua el datumstrukturo.
Tio signifas ke vi iras meti aĵojn en -
1, 3, 7, 12, 14, negativa 0.
La unu aferon mi ne povis havi diris - negativa 3, 0.
Vi metis cxion cxi tion, in
Kaj la lasta vi metis en la unua kiu tuj eliru.
>> Do vi havas du operacioj -
puŝi kaj pop.
Ĉiuj el la meto en kiuj mi estis gestante ŝatas ĉi estas puŝo.
Kaj poste, kiam mi atingas en ekpreni iun aŭ atingos sur supro ekpreni
io, tio estas popo.
Do ni tuj apliki stakoj.
Kaj ni montris al ili en lekcio uzante arrays.
Sed vi povus fari ilin uzante ligita listoj.
A stako estas koncepta datumoj strukturo, ne kiel
efektivigo-specifa.
>> Do kion devus kiuj aspektas kiel?
Ĝi devus aspekti ia kiel ĉi tio.
Vi ŝatus havi entjero grandeco.
Kaj vi havus tabelo de valoroj kiuj Ni nomas pletoj, ĉar tio
kia la bildo estis por ni - int pletoj -
kaj tiam iuj maksimuma kapacito.
Do kion devus peli rigardon kiel?
Nu, se ni havas stako s, tiam puŝi io sur s, ni akirus
la grandeco de s.
Kaj kiu estus la sekva malfermita loko de nia tabelo.
Do, se ni havas tri aferojn en nia stako, tiam pletoj 3 estus la sekva
malfermita loko, ĉar 0, 1, kaj 2 estas jam plenigis.
>> Do ni petu al s.trays [s.size], la tria loko.
Kaj tiam ni pliigo s.size diri, hey, ni havis tri aferoj antaŭe.
Nun, ni havas kvar.
Do la venontan fojon vi kornobatos, vi estas tuj metis ion en 4.
Aŭ la venontan fojon vi pop, vi tuj rigardi 3 anstataŭ 4 aŭ kio ajn.
Kaj poste ni revenos vera por diru, hey, ni sukcesis.
Ĉi laboris.
Kiel regulo de thumb, se funkcio tio supozis redoni vera aŭ
malvera ĉiam revenas vera, vi rajtas faris ion malbonan.
Do tio funkcias?
>> Nu, tio funkcias bone por 1 kaj 2, kaj 3, kaj 4, kaj kvin.
Sed diru mi atingos mian kapablon.
Mi tiam kolizii problemo, ĉar se grandeco estas la sama kiel kapablo, mi estas
nun provas meti ion enen tabelo, kie mi ne havas spacon.
Do mallonga ĉekon ripari tion.
Se s.size == KAPACITO, revenu falsaj.
Alie, iru kaj faru kion ni faris.
Do, kion alian ni povus demandi pri por piloj?
Kio alie vi studas?
Kio alie vi praktikas?
>> Nu, efektivigo de la popo.
Ni jam faris puŝo.
Mi riparos tion.
Ne-tabelo efektivigo, kie vi uzas ligillisto, eble.
Ne-entjeraj efektivigo.
Ni faris ints tie.
Sed povus esti estinta flosoj.
Mi povus esti kordoj.
Ĝi povus esti char steloj.
Rigardu pasinteco kvizojn por la specoj de demandojn ni demandis pri stakoj.
>> Mi diras, ke ni kovris stakoj ĉirkaŭe la samaj, kiel ni jam kovris ilin en
jaroj pasintaj.
Do la kvizo demandoj devus estus bona indiko.
Movante antaŭen eĉ pli rapide, vostoj.
Ili estas kiel piloj.
Sed ili estas unue en, unua el.
Se vi estas brita, la vorto vosto probable faris multe da senco por vi.
Alikaze, vi povas havi aŭdis de ĝi kiel linio.
Ili funkcias same kiel la linio en la Apple vendejo.
La unua persono al manifestacio je 3:00 en la mateno estas la unua
persono por aĉeti liajn iPad.
>> Do ni havas du operacioj -
enqueue kaj dequeue.
Enqueue metas iun en la linio.
Dequeue tiras la unua persono super la linio.
Denove, ni povas apliki tiu kun tabelo.
Do kio estas la struct ni montris en prelego?
Estis ĉi tiu.
Denove, nombroj.
Denove, grandeco kaj tio ion novan fronton.
Kial ekzistas io nomata antaŭa?
Ĝi estas la indekso de la venonta elemento al dequeue.
Ĝi estas nur interne konservanta trako de La unua ulo por montri, ke jam ni
povas tiri ĝin kiam ni bezonas.
>> Definitive rigardi prelego notoj kaj provi apliki enqueue kaj dequeue
studinte por la kvizo.
Gravaj aferoj por pripensi.
Fluigi ĉirkaŭ se la antaŭa plus la grandeco finu pli granda ol havita.
Denove, se via strukturo estas plena, vi tuj havas problemon.
Hash tabloj vi vidis antaŭe.
La plejparto de vi probable implementado tiuj sur pset6.
Ĝi estas strukturo kiu celas por O (1) konstanta tempo inserción kaj O (1)
konstanta tempo lookup.
>> En CS50, ni implementado tion kiel tabelo de lertaj kunligitaj.
La ŝlosilaj komponantoj al hash tablo Estas la krada funkcio.
Do ĝi konvertas via enigo, ni diru, vortaro vorton, en numeron,
kiu iras al nia indekso.
Kaj ni vidos uzi tiun indekso en nia tabelo.
Do jen plaĉan bildon el study.50.net.
Ni ĵeti ĉiujn vortojn en nia hash funkcio.
Kaj la krada funkcio diras al ni kie meti tiujn vortojn.
>> Ĉi tio estas la tuta granda en la lando kie ekzistas nur unu vorto por ĉiu fendo.
Sed kiel vi memoras el pset6, tie Estas pli da vortoj ol fendoj.
Do kio okazas kiam vi get kolizio?
Anstataŭ stokante unu valoron, diru, hash tablo 3, vi
butika ligillisto.
Kaj tial anstataŭ havi melono ĉi tie, vi havus ligillisto,
kie la unua nodo estas melono.
Kaj la sekvantan nodo estas kato.
Kaj la tria vertico estas kolizio, ni diri, ĉar ĉiuj tiuj vortoj komenci
kun C.
>> Do plejparto de vi faris ĉi tion por pset6.
Se vi ne faras hash tablo sur pset6 kaj vi provis ion kiel
a trie, definitive revizii hash tabloj.
Se vi ne faras tion sur pset6, definitive revizii hash tabloj.
Kaj se vi faris ĝin sur pset6 kaj ĝi ja ne labori el tute pravas kaj vi
havis multajn problemojn kun ĝi, definitive revizii hash tabloj.
Do la lecionon vere estas definitive revizii hash tabloj.
>> La granda minoritato de vi provis el traktas sur pset6.
Alta nivelo portreto.
Estas io tiamaniere, kie ĉiu nodo havas aron da infanoj, kie ĉiu
infano respondas al letero.
Kaj cxiu nodo ankaŭ diras, bona, mi estas vorto.
Do, en tiu ekzemplo, la vorto de Maxwell, se vi sekvos la M al la A al la
X-W-E-L-L kaj tiam sekvas ĝin unu pli.
Kaj vi ricevas tiun simbolon, delto, kiu Ni instigu signifi tiu estas vorto.
Do Maxwell estas vorto.
Tiuj deltas estas laŭlonge montras kio ajn estas vortoj kaj kion
aĵoj ne estas.
>> Do en pset6, la datumoj stokitaj apud iu el niaj nodoj estis "I am a
vorto. "Kaj la malvarmeta afero pri tries Estas ili pruvas inserción kaj
lookup en O (longo de vorto).
Do simple akiri pere de Maxwell, ĝi estas M-A-X-W-E-L-L. Do sep aŭ ok -
Mi ne povas rakonti -
ŝtupoj por atingi la finon kaj kontrolu tion eksteren.
Do rapida efektivigo tie.
Rob iris tra ligita listo en sia postmortem.
Do kontrolu ke ekstere.
Pardonon.
Iris tra trie en sia postmortem.
Do kontrolu ke ekstere.
>> Sed vi esence havi ĉiu vertico havas 27 montriloj al la sekvanta nodoj kaj unu
Bulea cxar cxu mi vorton.
Check out Rob la postmortem dum kiom tiu fakte estas efektivigita.
Nia fina strukturo, niaj arboj kaj duumaj arboj de serĉo.
Do rigardante tiujn, tiuj estis kovritaj plej laste Semajno 8, lundo.
Arbo estas simila al trie, krom vi ne nepre havas 27 nodoj ĉe
ĉiu punkto.
Kaj vi ne havas ĉi tiun datumojn al ĉiu paŝo kiu signifas ĉu la -
la vojo ne gravas.
Pro trie, la vojo de supre fundo, Maxwell, estis grava por ni.
>> Sed ĉiu vertico havas plurajn infanoj, eble.
Ni havas iom pli da vortprovizo.
La radiko de la arbo Estas ĉe la plejsupro.
Kaj ni diras, ke la tre ĉefundan nodoj, kiuj ne havas
infanoj estas folioj.
Do kiel trie, arbo estas strukturo de nodoj.
Komuna tipo de arbo, kiun ni iras paroli estas duuma arbo, kie
ĉiu nodo havas filojn aŭ unu infano aŭ du infanoj.
Do tiu bildo ĉi tie ne estas duuma arbo, ĉar
nodo 3 havas tri infanojn.
>> Sed se ni estis ignori tiujn, la reston de ĝi estas duuma arbo pro tio
pruvas la propraĵo ke ĉiu vertico havas nulo, unu, aŭ du infanoj.
Do kiel ni povus esprimi tion en la kodo?
Ni povus havi nodo kie ĉiu vertico havas entjero interne de gxi, tiel
kiel montrilo al la arbo sur la maldekstra kaj montrilon al la arbo sur la
Bone, do la du infanoj.
Kio tio estas utila?
Nu, se ni faras reguloj pri, kie ni meti nodojn, oni povas fari serĉon rapida.
>> Do tie estas koncepto de duuma serĉo arbo, kie ĉiuj verticoj en la
maldekstra subarbo havas pli malgrandan valoron ol la nodo ni rigardas.
Kaj ĉiuj nodoj ĉe la dekstra subarbo havas grandan valoron
ol la radika vertico.
Nun, kiu aspektas kiel multe da vortoj.
Mi tuj metos gxin ene de duobla citaĵoj kaj montros al vi bildon.
Do jen estas ekzemplo de duuma serĉarbo.
Zorgu, ke ni komencu per 10.
Ĉion al la maldekstro de 10 estas pli malgranda ol ĝi.
Kaj ĉio dekstren estas pli granda ol ĝi.
>> Sed pli ol tio, ĉiu nodo en la arbo esprimas tiun proprieton.
Do la nodo 7 havas 3 al la forlasis kaj 9 dekstre.
Do ĉiuj el tiuj estas pli malgrandaj ol 10.
Sed rigardante nur tiuj, la 7 havas 3 al lia maldekstra kaj 9 al lia rajto.
Kaj simile pri la rajto, 15 havas 14 lia maldekstra kaj 50 al lia rajto.
Do la tri nodoj tien, 15, 14, kaj 50, estas ankaŭ valida duuma arbo
aŭ validan duuma serĉarbo.
Kaj ili ĉiuj estas pli granda ol 10.
Do ili rajtas esti sur la dekstra tie.
Cxu ekzistas demando?
>> Spektantaro: Kiel vi agos kiam vi havas du po sep paroj?
>> R.J. Aquino: Jes.
Kiel vi agos kun du valoroj kiu estas la samaj?
Kelkaj duuma serĉo arboj diri ke vi ignori duobligitaj, ĉar la celo estas
nur diri, mi vidis ĉi tiuj aferoj estas tiel malproksima.
Kelkaj duuma serĉo arbojn vi povus diri havi grafo ene de la nodo.
Aliaj povus diri, ke ĉion la maldekstro estas malpli ol aŭ egala al.
Kaj ĉio dekstren estas pli granda ol.
>> Ĝi nur dependas, kion la problemo estas ke vi solvi.
Do en vortaro, ekzemple, vi ne zorgas pri duobligitaj.
Vi devus forĵeti ilin.
Sed iuj aliaj problemo vi eble zorgas.
>> Spektantaro: Ĉu eblas havi 1 maldekstren de 15, kiun
estas malpli ol 10?
>> R.J. Aquino: N-ro
Se la 14an tie estis a 1, ĉi tio ne estos valida duuma serĉarbo,
ĉar ĉion al la rajto de 10 devas esti pli granda ol ĝi.
Kaj ni vidos kial.
Se en la lando de serĉado mia celo estas trovi 14, mi komencas ĉe la radiko.
Do mi rigardu.
OK.
Ni tuj komencu ĉe la radiko.
Rigardu 10.
>> Nu, 14, nia celo, estas pli granda ol 10.
Do ĝi devas esti sur la dekstra.
Ĉi tio estas tre simila al la tuta telefono libro afero ni faris, la duuma
serĉu tie.
Sed anstataŭ duumaj serĉado en tabelo, ni estas duargumenta
serĉado en ĉi tiu arbo.
Do ni daŭre serĉas 14.
Nu, 14 estas pli malgranda ol 15.
Do, se ĝi estas en niaj arbo, ĝi devas esti en tiu areo tie.
Ĝi devas esti al la rajto de 10 kaj al la maldekstra de 15.
>> Kaj tial ni kontrolu ĉi tiu nodo.
Kaj yay, ni trovis 14.
Mi ne tuj marŝi tra ĝi.
Sed jen la kodon.
Tie fakte relative simpla,
ĉar ĉi tio estas rekursie.
Kion ni povus peti de vi sur kvizo?
Ni povus peti vin skribi tiun kodon.
Ni povus demandi vin rigardi ĉi kodo kaj modifi ĉi kodo kaj klarigi kio
ĝi estas faranta.
Jes.
Demandon?
>> Spektantaro: Cxu tiuj diapozitivoj tuj estos disponebla kiel ili estis en la pasinta tempo?
>> R.J. Aquino: Jes.
Do tiuj diapozitivoj volas definitive esti eldonitaj.
>> Spektantaro: Ili estas efektive afiŝis ĝuste nun sur la paĝo.
David ĵus faris tion.
>> R.J. Aquino: La diapozitivoj estas ĝuste nun sur la paĝo.
Mi verŝajne fliki kelkaj la tajperaroj mi rimarkis kaj ripari ilin.
Sed estas kurento versio de la paĝaro.
Aliaj aferoj ni povus peti de vi -
skribi insert.
Skribu ripeta versio de la rekursia funkcio ni simple montris vin
aŭ paroli pri tiuj aferoj, kiel en alineoj, en vortoj, en frazoj.
Komparante la tempoj de ekzekuto kaj eksplikante kion vi volus uzi duuma
serĉarbo por anstataŭ hash tabelo, ekz.
>> Do komprenu tiujn strukturojn ĉe belan profunda nivelo.
Kompreni kiel skribi ilin, kiel uzi ilin, kiel paroli pri ili.
Kaj vi estos la tuta aro.
Demandon?
>> Spektantaro: Kiam vi skribas la duuma serĉarbo, kiel do vi
determini kion valoron al fari ĝin kiel la radika?
>> R.J. Aquino: Do ​​la demando estas, kion valoron vi faru kiel la radiko?
Depende de via kodo, vi povas havi ĝeneralan radikon.
Do eble vi verŝajne havis en pset6 tutmonda hash tablo.
Aŭ vi povus pasi al la radiko en kiel argumento.
Do tiu serĉo funkcio ĉi tie prenas argumenton nodo *.
Kaj tial ajn nodo vi hazarde estos rigardante estas tiu kiun vi traktis
kiel vian radikon, kiam vi transiros it in
Kaj mi certas tutan aron.
Tiuj estas miaj diapozitivoj.
La sekva persono povas veni interŝanĝo en tekkomputilo kaj mic.
>> ROB Bowden: Mi pensas ke mi povus havi interpretis ke demandon malsame.
Sed mi interpretis kiel, se vi havas la nombroj 1, 2, kaj 3, kiel do ni
scias fari 2 radiko kontraste al 1 aŭ 3?
Se ni faras 2 la radiko, tiam ĝi estas bele 1 kaj 3 al la maldekstra kaj dekstra.
Sed se 1 estas la radiko, tiam ĝi estas 1 al la supro, 2 dekstre, 3 al la dekstra.
Do defaŭlte, vi ne scias, kion faras la radiko.
Kaj por ĉiu algoritmo ni atendante doni al vi, nur la unua afero, vi
insert estus la radiko.
Aux ni deziras al vi duuma arbo jam ekzistas, ke ĝi havas radikon.
Sed aliaj algoritmoj ekzistas tiaj ke la radiko ĝisdatigos, tiel ke se vi
ili finas en la situacio kie ĝi estas 1, 2, 3, estus aŭtomate aktualigi al
fari 2 la nova radiko, por ke ĝi estas ankoraŭ bele balancita.
>> Angela LI: Cool.
Hej, knaboj.
Mi estas Angela.
Kaj mi tuj ellaborus niaj C kaj poste iru al iu el niaj ttt
teknologiojn -
HTTP, HTML kaj CSS.
Do la unua afero estas bufro overflow atakoj.
Do ni rigardu tiun kodon.
Ĝi estas sufiĉe simpla.
Ekzistas funkcio foo.
Kaj tio ne revenas nenion.
Sed ĝi portas en montrilo al ĉeno nomata trinkejo.
>> Kaj ĝi tuj rakontos ĉi bufro, kiu estas gravulo
tabelo kiu havas 12 fendoj.
Kaj ĝi uzas memcpy, kiu estas nur funkcio kiu kopiojn de unu adreso
en alian.
Do tio estas provi kopii en nia buffer el kio ajn
stango indikante.
Do iun ideon kio estas erara kun tiu kodo?
>> Spektantaro: Se trinkejo estas pli longa ol C, oni reskribi.
>> Angela LI: Jes, ĝuste.
Ni ne havas garantion ke trinkejo tuj estos malpli ol 12.
Ni ĵus faris kelkajn arbitran numeron 12.
Kaj ni estis kiel, ni esperas, ke nia uzanto enigo estas malpli ol
12 signojn longa.
Do en ideala mondo, se nia enigo estas ĉiam kiel atendita, tiam ni ricevos
io kiel, saluton.
Tio estas malpli ol 12 signoj.
Ĝi gets legis en char c.
Kaj tiam ni faru ion kun tio.
Ĝi vere ne gravas.
>> Sed malica persono povus fari ion pli ŝatas ĉi tion, kie ili
donu al ni kion ajn stango indikante, ĝi tuj atentigi al tiu grandega tabelo
de ĵus A-aj jaroj.
Kaj tio estas vojo pli longa ol 12.
Do ĝi estas tuj iros tuta vojo cxi tie, kie la reveno
adreso kutimis esti.
Do diru ĉi funkcio nomas foo.
Eble foo estis nomita de iu alia funkcio, kiu estis nomita de main.
Do kiam foo kuras, gxi bezonas scii kie reveni al.
>> Se foo estis nomata per iu funkcio nomata Rabado, ĝi devas scii, ke ĝi estas
devas iri reen al Rabado.
Kaj tio kion tiu reveno adreso cxi tie estas diranta al ni.
Sed se ni anstataŭigi ĝin per iu alia adreso, en ĉi tiu kazo, tio estas
prezento de la adreson ĉe la tre komencante de tiu buffer, tiam
kio reale okazos trovas ke anstataŭ reveni reen al Rabado,
kiu vokis nia funkcio, ĝi estas nur tuj iri al la fronto de tiu kodo.
>> Kaj se ĉi tie ĉar malica hacker dude venis kaj
injektita ĉi, tiam eble tiu sumo de A estas ne reale A-aj jaroj.
Kaj ĝi estas fakte ĝuste kodo kiu rompas via komputilo aŭ io.
Do por esti defenda pri tiu speco de afero, oni devas neniam supozas ke
uzanto enigo estas certa kvanto da karakteroj.
Ekzemple, kiam vi estis farantaj Speller, vi diris, ke parolo
nur tuj estos 40 signoj longa maksimumo.
Kaj tio estis bona.
>> Sed se ne, tiam vi devus certigi nur legis en 45
karakteroj samtempe.
Alie, vi povus anstataŭigi via bufro.
Demandojn pri tio.
Jes.
>> Spektantaro: Ĉu vi povas simple paroli iom pli pri tiuj?
>> Angela LI: Pardonu.
Jes.
>> Spektantaro: La mic estas nur por tiu video.
Mi provos kaj projekto.
Saluton, knaboj.
Sup?
Do ni iru pri malmultaj aferoj en la CS50 biblioteko, kiun vi jam estis uzanta
ĉiuj semestro, plejparte akiri uzanto enigon.
Kiel vi scias, vi inkludas la CS50 bibliotekon por nur faras CS50.h, kiuj
enhavas ĉiujn prototipoj de la funkcioj kiujn vi povas uzi, kiel
GetString kaj GetInt, kaj GetFloat, ktp.
Kaj tie estas tio unu linio en la CS50 biblioteko kiu difinas ĉenon, kiun
you guys ĉiuj scias nun estas nur char *.
>> Sed ni prenu peek ĉe kiom GetString funkcias.
Tio estas tre mallongigita versio.
Vi povas tiri supren la CS50 biblioteko dosierojn de, mi pensas, manuals.CS50.net.
Kaj vi povas legi pere la efektiva funkcio.
Sed ĉi kovras iujn el la gravaj partoj.
Do ni jam kreis iun bufron kun iom da kapablo.
Kaj kion ni faros estas ni preni unu signo en momento de norma n.
Tie estas kie la uzulo enigas teksto en la konzolo.
>> Kaj do ni legos en karaktero tiom longe kiom ĝi ne estas nova
linio kaj ĝi ne estas fino de la dosiero, kiun estas la fino de norma enigo.
Kaj por ĉiu signo ke ni legu en: se tiu karaktero finu aldono
la nombro de signoj ni legis in kaj kiu estas pli ol nia kapablo,
do kion ni faras estas ni nur regrandigi nia bufro tiel ke ĝi estas duoble pli longa.
Do denove, ĉi protekti kontraŭ buffer overflow atakojn, cxar vi legis en
karaktero samtempe.
Kaj se en ajna punkto vi legis tro multaj, vi nur pligrandigas viajn bufro.
Vi multigos gxin per du.
Kaj tiam vi havos pli da spaco.
>> Alie, vi simple aldonu karaktero al buffer.
Kaj post kiam vi legis en la tuta karakterojn, estos shrink la bufro
reen malsupren al la normalan grandecon, aldoni nula finilo, kaj tiam revenu.
Nun, ni rigardu GetInt.
Ĉu vi uloj legi tiun?
Mi povas zomi iom.
Mi ne scias kiel komputiloj funkcios.
Neniam menso.
Mi ne povas zomi konvene.
>> Tio estas vere malfacila.
Mi bedaŭras.
Ni simple rigardi ĉi.
Do kio GetInt faras estas unue ĝin legas en ĉeno de GetString, kiuj
ni implementado antaŭe.
Kaj la grava parto noti ĉi tie estas se tiu dividado kiu finu
legado estas kiel ne reale kordo, do ni ĵus revenas INT_MAX al
reprezenti malsukceso.
Kial ni revenos INT_MAX anstataŭ de negativa 1 aŭ 1?
Ajna ideoj?
>> Spektantaro: [inaudibles] negativa 1 sur unu.
>> Angela LI: Jes, ĝuste.
Do vi estas vojo pli versxajne nur volas enigi 1 aŭ negativa 1 kiam instigis
por n-a kaj kio ajn n-a maxes.
Ĝi estas grandega.
Vi probable ne tuj uzu ĝin.
Do tiu estas kiel dezajno decido certigi ke vi ne faru hazarde
revenu eraro aux vi ne revenos 1, kiuj povus esti analizitaj
kiel korekta respondo.
Do se linio ne ekzistas, ni revenos INT-MAX.
Alie, ni uzas sscanf, kio estas kiel scanf.
Sed ĝi legas per ŝnureto.
>> Kaj ni havas ĉi formatita kordo, kiu estas% i% c.
Kaj ni klopodos kaj kongruas ke kun kion ajn la uzanto donis al ni.
Ni volas ke la nombro de parigitaj aferoj al esti 1, kio signifas, ke ni nur
vere volas parigi entjero ĉirkaŭata de eble blanka
spaco, eble ne.
En ĉi tiu kazo, se vi metas en io kiel stango, trinkejo ne kongruas tute ne,
ĉar ne bezonas esti entjera, je la komenco.
Do sscan neniam turnis 0.
Do vi ne redonos tion.
>> Alternative, se vi metas en io kiel 1, 2, 3, A, B, C, kiu alumetoj
ambaŭ la entjero sed ankaŭ la karaktero post tio.
Do sscanf revenos 2, kiu Estas ankaŭ ne estas ideala.
Vi ne volas la 1, 2, 3, A, B, C al esti valida int.
Por ke ankaŭ tio ne funkciis.
Sed diru vi metas en iun kiel 50.
Tio kongruas kun la% i, kiu signifas alvenos legi en la n.
Kaj nun, n enhavos la numeron 50.
Kaj tiam vi povas reveni al ĝi.
>> Alie, vi batis Retry.
Kaj tiam ĝi simple iras denove ĝis vi ricevas taŭgan enigon el la uzanto.
Demandojn pri tio?
>> Spektantaro: Do ​​se vi estus al presi La valoro de la GetInt sur [inaudibles]
ĉu estos nur la entjeran kaj max?
>> Angela LI: Jes.
Do, se vi uzas GetInt, vi devus supozi ke vi ne volas ke n-a maks al
esti valida enigo, ĉar vi iras supozi, ke tio estis malbona.
>> Spektantaro: Se ni ne havas char c kaj iu metas en 1, 2, 3, Sam, ĉu ĝi
ankoraŭ labori por 1, 2, 3?
>> Angela LI: Mi pensas ke funkcius.
Sed vi ne deziras 123Sam al esti valida enigo de uzanto.
Tio ne vere int.
Do tio ne ŝajnas bela por analizi ĝin kiel int.
OK.
En tiu kazo, ni movas sur la interreto.
Do HTTP ne estas lingvo.
HTTP estas ĝuste la aro de normoj por kiom vi sendu tion for klientoj,
tio estas vi, por serviloj.
Tio estas alia homoj en la TTT.
>> Do HTTP staras por Hypertext Transfer Protocol.
Ĝi estas la koro kaj animo de la tuta retejo.
La hipertekstaj parto nur rilatas al HTML.
La transporto estas klientoj kiel vi sendos petojn al
serviloj, kiuj donas respondojn.
Kaj la protokolo estas justa, kiom fari vi atendas servilon konduti?
Kaj kiel vi supozis konduti tia, ke oni povas agilizar ĉi
komunikado procezo?
>> Do HTTP petojn aspektas multe kiel ĉi tio.
GET estas la tipo de peto.
Vi infanoj vidis GET petoj kaj POST petoj.
Tiu dua afero tie, / mi, tio estas nur la URI aŭ la URL de kie vi
deziras iri en la tendaron.
Do tiu peto estas petante la paĝo, kiel www.facebook.com / mi.
Kaj ĝi estas GET peton.
Kaj tiam tiu HTTP/1.1, tio estas nur la versio de HTTP vi uzas.
Ĝi estas preskaŭ ĉiam 1.1.
>> Kaj tiam tie estas faskon de aliaj aferoj ankaŭ.
Vi povas vere vidi tiujn se vi malfermu vian konzolo kiam vi estas
foliumi la retejo.
Responses rigardi ion pli kiel ĉi tio.
La supra parto estas, denove, la tipo de HTTP vi uzas
sekvate de statuso kodo.
Do 200 OK estas ĉiu laboris ekstere.
Jen via enhavo.
Vian enhavon tuj sekvos.
Kaj tiam ĝi rakontos al vi kian de enhavo kaj aliajn aferojn tro.
>> La statuso kodoj, tie estas kelkaj gravaj, ke vi devus scii.
200 OK estas kiel ĉio ora.
Ĉio funkcias.
403 Forbidden.
Ĉi vi probable vidi se vi forgesis al chmod ion konvene.
Tio signifas ke vi ne havas dekstre permesojn al
aliri, ke sur la servilo.
Estas kiel, ne, vi ne povas vidi ĝin.
404 signifas, ke afero ne ekzistas.
Ne trovita.
Vi verŝajne vidis ke multa.
>> 500 Interna Servilo Eraro estas kutime kiel iu misfunkciis sur la flanko
de la servilo.
Do, kiam vi estis efektivigo pset7, se vi havus PHP eraroj, vi povus fari
efektive iru al la paĝo kaj vidas tutan faskon da PHP eraro vazaro.
Sed tio ne normale okazus, ĉar retejoj ne vere volas
diru al vi, kial ilia loko estas rompita.
Ili verŝajne simple resendas 500 Interna Servilo Eraro.
>> Kaj tiam tie estas 418 Mi estas tekruĉo.
Tie estas tuta historio pri kial tio estas io.
Sed vi povas legi pri tio sur via propra epoko.
Ekzistas tuta fasko da alia stato kodoj tro.
Sed tiuj estas tiuj, Vi devus scii.
Do ni parolu pri HTML.
HTML, memoru, estas ne programlingvo.
Ĝi estas markado lingvo.
Tio signifas, priskribas enhavo.
Ĝi diros al vi kion HTML dokumento aspektas kiel aŭ ne kio ĝi aspektas kiel
sed kiel ĝi estas strukturita.
>> Do ĝi difinas strukturon kaj semantiko de retpaĝoj.
Estas kiel, ĉi tiu estas alineo.
Ĉi tio estas ordigita listo.
Ĉi tio estas kiel sekcio de mia paĝo.
Jen la titolo.
Ĝi faras aferojn tiel.
Ĝi ne stiligi ajn pri tio, ĉar ke estas kion vi faros en CSS.
Kaj ĝi aspektas kiel serio de nestitaj etikedojn.
Do uzi ekzemplo de vere bazaj HTML-paĝo, vi havos la DOCTYPE
deklaro tie supre.
>> Ĉi DOCTYPE deklaro estas dirante, ni uzas HTML5.
Tiam vi havos la grandan HTML-etikedo.
Ĝi enhavas kapo kaj korpo.
Interne de la kapo, vi havas la titolon.
Tio estas tio, kio eniras en la titolo trinkejo de via retumilo.
Ni havas ligon etikedo kiu ligiloj en ekstera stilo folio.
Kaj tiam ni havas skripton kiu tiras de ekstera JavaScript tiel.
>> Kaj poste ene de nia korpo estas reale kio gets montrita en la paĝo.
Ni havas novan alineon kaj poste bildo interne de la alineo.
Ĉi tiu estas portreto de katidoj.
Rimarku ke la bildo tag fermas sin.
Do anstataŭ malfermo kun bildo kaj tiam fari alian / bildon, vi
ĝuste havas ĉi iom oblikvo ĉi tie, kiuj fermas ĝin.
Kaj la bildon tag ankaŭ havas ĉi tiun ŝlosilon valoro atributo nomata alt.
Tio estas la alternativa teksto kiu okazas kiam vi ŝvebi super ĝi.
>> Plej HTML elementoj havas iun klavon valoro aferoj kiujn vi povas doni ĝin, diversaj
personigo.
Jes.
>> Spektantaro: [inaudibles].
>> Angela LI: Nu, do ĝi estas atributo de la etikedo.
Do se vi estas uzanta jQuery, vi povus fari fari unuaranga image.getAttribute.
Kaj tiam vi povas serĉi akiri la alt atributo.
Kaj gxi donos al vi katidoj.
Se vi memoras formoj en HTML, enigo elementoj havos nomon atributoj.
Kaj tio estas kia PHP uzas por sendi petoj kiam formo estas donita.
>> Spektantaro: Ĉu vi mencias ion pri kiel se vi uzas kittens.jpg aŭ
iu kiu havas la mankanta dosiero dosierujoj aux aliajn dosierojn?
>> Angela LI: Jes.
Do ĉi tiu estas kion oni nomas parenco vojon, ĉar mi ne donante
vi la tutan vojon.
Ĉi tio estas kiel kiam en C, se vi faros fopen iu dosiero, se vi fopen hi.txt, ke
hi.txt atendas esti en la sama dosierujo, krom se vi donas ĝin pli
kompleksa vojo.
>> Spektantaro: Tiel vi povus precizigi kiu dosierujo [inaudibles]?
>> Angela LI: Jes.
Kaj vi povas rigardi supren kiel fari tion.
Sed se mi volis akiri kittens.jpg ekstere de la patro dosierujo, mi farus
.. / Kittens.jpg.
Jes.
Pardonon.
Jes.
Ho viro, mi forgesis pri la demando.
Kio estis la demando?
Ho, la demando estis estas, kittens.jpg antaŭvideble estos en la sama dosierujo?
Kaj en ĉi tiu kazo, ĝi estas.
Sed vi ankaŭ povas doni iun vojon tia, ke ĝi ne devas esti.
Bonan?
>> CSS.
Do CSS, kiel HTML, estas ne programlingvo.
CSS estas nur serio de stilo regulojn.
Ĝi staras por Laŭtemaj Style Sheets.
Kaj vi uzas ĝin en konjunkcio kun HTML al stilo paĝoj.
Do estas tri manieroj vi povas inkluzivi ĝin.
Unu maniero vi povas fari tion en la kapo parto de via HTML, vi povas simple
malfermi stilo etikedon kaj poste algluita iuj CSS regas en tie.
Ĝi estas sufiĉe bone.
Jes.
>> Spektantaro: Ĉu vi povus meti tiujn stilo-etikedoj en inter, ni
diru, korpon kaj / korpo.
Kaj tiam vi estus stilo nur en korpo.
>> Angela LI: Vi povus.
Ĝi devos labori.
Sed vi ne devus, ĉar stilo estas speco de la metadatumojn kiuj devis iri en
la kapo de via dokumento.
Korpo devus vere nur enhavi kio efektive tuj
aperos sur via paĝo.
>> Spektantaro: Do ​​vi volas meti stilo en via kapo stiligi la
tuta retpaĝo, ĉu ne?
>> Angela LI: Jes.
Do metante stilo tie ĉi, tiujn CSS reguloj aplikos al la tuta paĝo bazita sur
ilia selectores.
Do la bona maniero fari ĝin estas anstataŭ havi stilo etikedon en via kapo,
vi havas ĉi ligilo al ekstera stilo tukon kiel mi montris al vi en la
antaŭa ekzemplo.
Kion tio faras estas pretendu kaj trovas la dosiero style.css kaj poste tiras gxin
in kaj uzas tiun kiel la stiloj de la paĝo.
Kaj via style.css farus nur aspektas kiel ĉi tio.
Ĝi estus nur faskon de CSS.
>> Kaj fine, estas alia vojo vi povas inkluzivi CSS, kiun vi vere
ne devus iam fari.
Estas alvoko inline stilo.
Kaj tiel ajnan HTML elemento povas ankaŭ preni stilo atributo.
Kaj tiam en tiu stilo atributo, vi povas doni ĝin CSS regulojn.
Do, en tiu kazo, sendepende div mi estas difinanta ĝuste ĉi tie, tio okazas al
havas nigran fonon kaj blanka teksto koloro.
Sed vi ne devus fari tion, ĉar kio ĉi tio estas ĝi metas vian stilo
en via HTML.
>> Kaj mi scias, ni jam parolis pri HTML estas strukturo kaj CSS estas stilo.
Se vi faros tion, ĝi miksas ilin kune.
Kaj ĝi estas ne tre pura.
Do ne fari tion.
Uzanta ekzemplo de CSS, tie supre, ni nur elektu la korpon de la HTML
dokumenta filmo.
Kaj ni estas kiel, ĉio tuj estos Comic Sans.
Mi ankaŭ ne rekomendas tion.
Sed vi povus fari tion.
>> La dua regulo ĝuste ĉi tie, tio okazas elekti la elementon en la
paĝo kun ID ĉefa.
Do kion ajn HTML elemento, mi diris ID = Ĉefa, mi tuj donos ke
20-rastrumero rando kaj vicigi ĉio, la tutan tekston, al la centro.
La lasta afero selektas per CSS-klaso.
Do ĉiu elemento en la paĝo, kiun mi donis sekcio klaso, mi tuj faros gxin
fona koloro de lumo blua.
Yep.
Jen ĉio mi atingis.
Demandon?
>> Spektantaro: Kion faras la etiketo antaŭ la ĉefaj fari?
>> Angela LI: La demando estas, kion faras la etiketo antaux ĉefa do?
En ĉi tiu kazo, la hash en CSS signifas unuaranga de ID.
Do, se mi havis iom da HTML-elemento, kiel divID = ĉefa, ĉi CSS regulo selektu
la afero kun ID ĉefa.
Kaj simile, la periodo antaŭ la sekcio estas unuaranga per CSS-klaso aŭ
selektu per HTML-klaso.
>> Spektantaro: Kial estas tie havas antaŭ 6 en fonkoloro?
>> Angela LI: Jes.
Do la demando estas, kial estas tie kradon antaŭ la 6?
Tiu estas malsama ol tiu hash.
Tio signifas, ke vi donas deksesuma koloro.
Do deksesumajn koloroj, tiu simple reprezentas koloron.
Kaj vi rememoros RVB triopoj kiam vi faris la jura pset?
Tio estas simila.
La unuaj du ciferoj reprezentas kiom ruĝa estas en la koloro.
La dua du reprezenti kiom verda.
Kaj la tria reprezentas kiom blua.
Kaj la hash estas ĉi tuj por reprezenti koloran.
>> Do, frazoj de 0, 0, 0, 0, 0, 0 supren al F, F, F, F, F, F estas valida.
Estas iuj valida koloro kiu povas esti montrata per via foliumilo.
Demandon?
>> Spektantaro: Kio estas la diferenco inter uzante de ID kaj per klaso?
>> Angela LI: La demando estas kio estas la diferenco inter
uzante de ID kaj klaso?
Vi povas havi nur unu elemento en HTML-dokumenton, kiu havas donita ID.
Do nur unu afero en mia paĝo rajtas havi ID ĉefa.
Do vi uzu gxin por cxi tiu estas la ĉapon.
Tiu estas la navigacio.
Tiu estas la piedlinio.
Klasoj estas malsamaj, ĉar vi povas apliki klasoj por tiom da HTML-elementoj
kiel vi volas.
>> Do ekzemple, mi faris klaso sekcio, ĉar tie estas verŝajne pli ol unu
alineo sur mia paĝo.
Vi simple permesis havi tiom da elementoj sur la paĝo kun la sama
klaso sed nur kun certa identigilo.
>> Spektantaro: Do ​​la skalara reprezentas la klaso?
>> Angela LI: Jes.
A dot reprezentas klaso.
Cool.
Jen ĉio mi havas, knaboj.
Dankon.
>> [Aplaŭdo]
>> ZAMYLA CHAN: Saluton, ĉiuj.
Mi Zamyla.
Mi tuj iros kovrante PHP, MVC, kaj SQL hodiaŭ.
Multaj de la materialo, kiun mi estos kovron tuj estos sufiĉe tre
dekstra el pset7.
Ĉiuj pravas.
Do kio estas PHP?
PHP staras por PHP Hypertext Antaŭtraktilo.
Do, en si mem, estas rekursia nomo, kiu estas sufiĉe freŝa.
PHP estas servilo-flanka skriptado lingvon, kaj ĝi provizas la backend
kaj la logikan fundamenton de nia retejo.
>> Do Angela parolis multe pri la HTML kaj CSS kiuj faros la strukturon
de la retejo.
Sed kion se vi volas ŝanĝi tion enhavon dinamike aŭ se ĝi varias
surbaze de la uzanto aŭ certaj kondiĉoj?
Tie estas kie PHP eniros
Nun, tipe, PHP povas preni kelkajn malpli linioj por apliki la saman aferon
en C. Tio estas ĉar PHP manipulas memoro demarŝo por la programisto,
kontraste al ni devi malloc libera, aĵoj kiel tio.
>> Sed ĉar PHP estas lego lingvo, tipe, ĝi povus plenumi
iom pli malrapide ol C, kiu estas kompilitaj lingvo.
Ĉar ni movanta programado lingvoj, ni rigardu kiamaniere la
sintakso diferencos.
Ni estu tre atenti ne get konfuzita kun tio.
Do per PHP sintakso, ĉu vi estas enigo via PHP-ene de HTML
dosiero aŭ ene. php-dosiero mem, vi bezonas cxirkauxu tiun kodon en la malfermita
PHP kaj la fermita PHP etikedoj kiel sekvas, same kiel sur la ekrano.
>> Variabloj en PHP.
Ĉiu unuopa variablo komencos kun la $ signo sekvata de la nomo de
via variablo.
Nun, variabloj en PHP estas lakse tajpita, kio signifas ke vi ne bezonas
por indiki kion la datumtipo Estas kiam vi deklaras ĝin.
Tamen, tio ne signifas, ke ili ne havas ajnan tipoj ajn.
Do, se mi deklaras variablon kaj ĝuste starigis gxi egalas al 1, kaj poste mi rakontos
alia variablo, starigis ĝin egala al "1", kaj tiam alia 1.0, bone,
depende de la tipo de egaleco operatoroj mi uzas, se mi volas kompari
tra ĉiuj tipoj, tiam ili devos esti egala.
Sed se mi volas certigi, ke la tipoj estas egalaj, PHP povas ankoraŭ fari
ke, eĉ se ni ne indikas kio tipo estas kiam ni
unue fari la dosieron.
>> Nun, en PHP, kvankam ni estas switching transprenis de programado
lingvoj de C, ni ankoraŭ havas nian fidela se kondiĉo, ĝuste kiel ĉi tio.
Ni ankoraux havas niajn dum masxojn, simple kiel tiu, kie vi metis en vian
kondiĉo kaj tiam la korpo de la ciklo.
Kaj tiam ni ankaŭ havos nian buklo, kiuj tipe aspektas kiel ĉi tio.
Do se mi volas persisti super ĉiuj naŭ psets kaj submeti kaj proklamu
funkcio submitPset, tiam mi povos fari tion ĉi tie, kion vi infanoj ĉiuj
farita de tiu punkto.
Gratulon, apud la vojo.
>> Por la ĉambro, personoj diris, mi dankas vin.
Nun, se vi ne volas simple uzi ĉi buklo, tiam PHP reale ankaŭ
estas aferoj alvokis foreach maŝojn.
Do, se mi havis aron da entjeroj, 0 tra 8, konservataj en la tabelo psets,
tiam mi povus havi foreach buklo ke ripetas super ĉiu nombro en psets.
Kaj tiam mi povis nomi la saman funkcii ok fojojn,
ĝuste kiel mi faris antaŭe.
Do ĉi por ĉiu iteracio estas agrabla, ĉar Vi ne devas, se vi ne scias,
la ĝusta longeco de la tabelo, ke vi ili, tiam uzanta ĉi foreach buklo
prizorgos, ke por vi.
>> Do mi faris psets kiel tabelo.
Ni rigardu tion.
Arrays en PHP estas tipe la saman kiel tiuj, kiujn ni havis en C, kie
vi povas deklari tabelon.
Kaj tie, mi povas deklari malplenan tabelo kaj do konstruu dinamike uzante
indeksoj kiel entjeroj.
Do indekso 0, mi iros por stoki entjero nomata 1.
Je indekso 1 el mia listo, mi tuj stoki la valoro 2.
Kaj je la tria indekso sed la dua numero, mi tuj
stoki la numeron 12.
>> Nun, ĉi tio estas tre bone en tiu laboras ĝi funkcias bone.
Sed diru tio gravas al mi, kion ĉiu indekso tenas.
Por mi, indekso 0 signifas kiom multaj katoj mi havas.
Kaj la indekso 1 signifas kiom multaj strigoj mi havas.
Kaj la sekvantan unu signifas kiom da hundoj.
Nu, tiam ĝi precizigi ke, anstataŭ devi memori 0 rilatas al
katojn kaj 1 por strigoj, mi povas uzi asocieca sensilo, kiu signifas, ke
anstataŭe de entjeroj kiel mia indeksoj, Mi povas reale uzi kordoj.
>> Do tio estas sufiĉe utila.
Kaj vi jam esence nur anstataŭis La entjeroj kun kordoj.
Kaj tie vi havas asocieca tabelo.
Jes.
>> Spektantaro: Ĉu ekzistas tial ekzistas an substreko por la dua
parton, ĉar mia listo havas la tabelo.
>> ZAMYLA CHAN: La demando estis, estas tie oni tial tie estas
substreko inter mia kaj listo?
N-ro
Tio estas ĝuste kiel mi enoficigante mia variablo.
>> Spektantaro: Okaze de la unua linio, ĝi estas unu vorto.
>> ZAMYLA CHAN: Mia pardonpeton.
Mi riparos tion.
Jes.
Ili devus esti la sama nomo de la variablo.
Bonan kaptu.
OK.
Do ni pluiru al ŝnuro kunmeto.
Se mi volis preni du kordojn, tiam mi povas concatenate ilin
kun la skalara operatoro.
Do, se mi havas Milo kiel unua nomo kaj Banano kiel familinomo, do
concatenando kun la skalara operatoro kaj tiam meti spacon inter
faros ĉeno kiu enhavas Milo Banano, kion mi povas tiam eĥo aŭ,
prefere, presi.
>> Parolante pri eĥo, ni parolu pri kelkaj utilaj -
oops.
Mi bedaŭras.
Kelkaj utilaj PHP funkcioj.
Do ni havas la -
teknikajn malfacilaĵojn.
Unu sekundo.
Mi gxin sendis.
PowerPoint problemojn.
Kaj ni estas reen kun PHP funkcioj.
>> Do ni havas la postulus funkcio, kie se vi pasas en dosiero, jen estas nur
ekzemplo de dosiero Mi pasu in
Tiam kiu komprenos la PHP-kodo de tiu dosiero, kiun mi indikos.
Kaj taksos ke in
Tiam ni havas ankaŭ eĥo, kiun estas paralela al printf.
Eliro estas paralela al rompi, kiu eliras la bloko de
kodo kiun vi in
Kaj poste malplenan ĉekojn ĉu donita variablo estas kiel nula aŭ nulo aŭ
kion ajn oni egaligas kun esti malplena.
Jes.
>> Spektantaro: Por la kordo kunmeto skalara operatoro, en PHP, estas ke la
sama kiel en JavaScript kie ĝi estas uzanta la skalara por kunmeto signifas pli?
Do por plena nomo, vi povus havi dolaro subskribi unua + kaj tiam + daŭri?
>> ZAMYLA CHAN: Jes.
Do la demando estis, cxu en PHP-ni povas uzi la saman kordo kunmeto
kiel en JavaScript kun la pluses.
Kaj Jozef estos eniras kiu poste.
Mi kredas li havas glito sur tio.
Efektive, ĝi estas malsama.
Do en JavaScript, vi bezonos uzi la alpago por concatenate kordoj.
Kaj en PHP, vi devas uzi la skalara operatoro.
Do ili estas malsamaj.
>> OK.
Do nun, ke ni jam kovris la tutan ĉi PHP, kie gxin faras
vere veni en oportuna?
Nu, temas en oportuna kiam ni povas kombini ĝin kun niaj HTML.
Do nia PHP donos al ni la povon por ŝanĝi paĝon la HTML enhavo antaŭ
lia ŝarĝo.
Do surbaze de malsamaj kondiĉoj, kutime la specifa uzanto tio
ensalutita, ni povas montri diversaj informoj.
Bela, ĉu vi havas demandon?
>> Spektantaro: Can you concatenate entjero ankaŭ?
>> ZAMYLA CHAN: Jes, vi povas.
Do la demando estis, se vi povas concatenate entjeroj aŭ aliaj
variable.s nun, ni pluiru al MVC, kiuj estas paradigma ke ni uzas en
pset7 kaj multajn ttt diseñadores uzas por organizi la kodon en la dosierojn
en sia retejo.
M staras por Modelo.
Kaj esence, modelo dosierojn temos per interagoj kun la datumbazo.
Rigardu dosierojn, ili rilatas al la estetiko de la retejo.
Kaj la Controller ansoj uzanto petoj, parses
datumoj, faras alian logikon.
>> En pset7, ni kombinis la modelon kaj la regilo.
Kaj ni simple nomas ilin regiloj kaj meti ilin en la publikan dosierujo.
Kaj la vido dosierojn, ni uzas ilin kiel ŝablonoj en la ŝablonoj dosierujo.
Do tiu diagramo tie reprezentas ankaŭ tiu sama speco de divido kun la
modelo kaj la regilo purpura ĉi tie en la maldekstra kaj
la vido sur la dekstra.
Do tiu estas grafika dokumento, ke kelkaj el vi eble vidis cxe Oficejo Horoj aŭ
diagramojn, ke ni estis desegno kiel vi estis elŝeligi via pset.
>> Do jen, en donita adaptilo, modelo adaptilo, ni havas funkcioj
kiuj rilatas al informpeti la SQL datumaron, ekzekutante PHP logiko.
Eble vi devus serĉi sako en Yahoo!
Financo.
Aŭ eble, vi estus simple kontroli por vidi ĉu la uzanto estis donita a
formi jam antaŭ havi vizitis vian paĝon.
Kaj tiam vi farus Formo super tie.
Post tiu formo estis donita de la uzanto, la agado kiun estis
specifita en la formo de HTML-etikedo indikus la artikolo, kiun ĝi
Revenas ke datumojn.
>> Do ĉiu el tiu informo estus sendita reen al via regilo.
Tiam vi verŝajne faras iom pli logiko en tio kaj eble faros kelkajn
pli pridemandojn en SQL datumbazo kaj poste, fine, venis kun bele
pakis aro de informo kiun vi farus Iam en en iu alia ŝablono
ke montriĝas, ke la informo.
Nu, kiel do ni efektive paki ke informo supren?
Nu, ni havas funkcion nomata Redonu kiu estis en la functions.php dosiero en
pset7, kie vi pasas en la nomo de dosiero: la nomo de ŝablono.
>> Kaj tiam vi ankaŭ iam en asocieca tabelo.
Kaj tial ke asocieca tabelo reprezentas la malsamaj informoj
ke vi volas pasi in
Nun, kio okazas al esti konstantaj en tiuj ekzemploj estas ke la klavoj aŭ,
pli ĝuste, la ŝlosilojn de la asocia arrays, tiuj estas kio okazas al esti
antaŭvideble estos konstanta per la ŝablono, ĉar scias bezonu
iu nomita mesaĝon aŭ nomis nomon.
Kaj tiam tion, je la dekstra, la realaj valoroj, do en tiu kazo, kiu estas
bona knabo kaj Milo, tiuj iras esti la valoroj kiuj ŝanĝiĝas
ke la regilo ŝanĝas ĉiufoje aŭ bazita sur certaj kondiĉoj kaj
pasos ke in
>> Do ĉi tie en ŝablonoj, ni vidas, ke ni uzas HTML-supersignoj,
kio ĝuste esence signifas ke ni volas por ricevi la peer kordoj, ke la
uzanto enmetita tien
Kaj ni volas anstataŭigi mesaĝon en tie.
Do tiam, kiam ni efektive rigardi la dosiero, la specifa
informoj trapasas in
Notu ke la ŝlosilo kiom redonu verkoj estas ke la sxlosilojn de la asocia
arrays, tiuj fariĝis variablo nomoj tie.
Kaj tial la valorojn de tiu klavo en la asocieca tabelo tiam fariĝas la
valoro de la variablo.
>> Nun, ni pluiru al la SQL.
Ĝi staras por Strukturita Query Language.
Kaj tiel tio estas nur programado lingvo desegnita
por mastrumi datumbazoj.
Kaj gxi eliris en oportuna por ni en nia pset7 financoj retejo.
Esence, ĝi estas nur facilan vojon al spuri kaj mastrumi celoj kaj tabloj
kaj ligi ilin al unu la alian.
Nun, pensu pri via SQL datumbazo esence kiel Excel dosiero, eble,
kun multnombraj pestañas littukojn.
>> Do vi povus havi plurajn tabloj, eble, ke ligita al unu la alian.
Kaj multe kiel Excel, ni havas multe da la funcionalidad ke ni volas.
Ekzemple, ni povas elekti iujn vicojn.
Ni povas enmeti informon.
Ni povas ĝisdatigi vicoj.
Kaj ni ankaŭ povas viŝi aferojn.
>> La SQL elektu verkoj elektante vicoj aŭ vico da specifita kolumnoj de
datumbaza kiuj kongruas certan kriterioj kiujn vi indikas.
Do ĉi tie kiam mi vidas select * de sorcxistojn kie domo = Ravenclaw, tiam
Mi elektanta *, kio signifas ke mi estas elektado ĉiu unuopa kolono en tiu
remi el la sorcxistojn tablo sed nur se la domo kolumno egalas Ravenclaw.
Nun, ĉi tiu estas puraj aŭ SQL.
Do, se mi tuj foriris en phpMyAdmin, kiu estas la specifan vojon, kiun ni uzas por mastrumi
nia SQL-datumbazoj, tiam mi povus enmeti ke en la phpMyAdmin retejo.
Kaj tio estus ekzekuti.
>> Sed ni vere volas fari ke sur la PHP flanko.
Do kiel ni faros tion?
Nu, ni uzas la informpeto funkcio, kiu esence ekzekutas ke SQL query.
Uzanta?
kiel lokokupilo, ni povas pasi en iun valorojn al nia kordoj, ke ni
volas anstataŭigi.
Do eble mi stokante malsamajn valorojn en la curr_house, kiuj
reprezentas la aktuala domo ke mi iros tra.
Do mi povas pasi, ke en kiel lokokupilo kun la demandosigno.
Kaj poste mi esence ekzekuti la samon kiel mi faris antaŭe, krom
nun, mi estas en PHP.
>> Kaj konsulto revenos an asocieca tabelo.
Kaj mi tuj konservas ĝin en vicoj.
Nun, konsulto povas ĉiam malsukcesas.
Eble la SQL query ne povis plenumi cxar la tabelo ne ekzistis.
Aŭ eble, la kolumno ne ekzistas.
Io misokazis.
Nu, en tiu kazo, vi volas fari certa, ke vi kontrolu, cxu la
informpeto revenis falsaj.
Kaj tio estas per uzo de la triobla egalas operacio tie.
>> Kaj poste mi pardonpetas, kio apartenas al alia CS50 funkcion, pasante en mesaĝo.
Kaj se vi rigardas en pardonpetas, ĉio tio vere faras estas redonu apology.php.
Jes.
>> Spektantaro: Ĉu vi povas klarigi kion tio stelo faras inter unuaranga kaj el?
>> ZAMYLA CHAN: Jes, absolute.
Do la stelo en inter unuaranga kaj el signifas ke mi volas elekti la tutan
tutan vicon de mia tablo.
Mi povus jam indikis unuaranga nomumi, jaro, domo.
Kaj mi nur ricevas tiujn tri kolumnoj en mia tablo.
Sed se mi diras select *, tiam Mi timige akiri ĉion en tiu kolumno.
Tiam mi tuj iros al vi en la dorso.
>> Spektantaro: Do ​​tiu estas ankoraŭ en SQL, ĉu ne?
Ĉu ĉi tiu konsulto aŭ trovas ĉi PHP?
>> ZAMYLA CHAN: Ni estas en konsulto.
Do tiu estas en PHP.
Do per la PHP-a funkcio konsulto, ni ekzekutante SQL query.
>> Spektantaro: Ĉu io en SQL uskladon, kiel elekti
aŭ sorĉistoj aŭ domo?
>> ZAMYLA CHAN: Ĉu io en SQL uskladon?
Mi kredas jes, jes.
Mi kredas, ke SELECT kaj EL Kaj kie estas uskladon.
Neniu?
>> ROB Bowden: Do, ĝi estas la malo.
La kolumno nomoj kaj la tablon per: ĉiuj el tiuj estas uskladon.
Sed neniu el la MySQL ŝlosilaj vortoj, kiel SELECT, EL, kaj KIE, tiuj ne estas
uskladon.
OK.
Do la malo de tio kion mi diris.
Do ĉiu el la MySQL ŝlosilvortoj -
elektu, de kie - tiuj ne inkluzivas uskladon.
Sed ĉio alia estas.
OK.
Vi en la fronto.
>> Spektantaro: Se mi $ vicoj en terminoj de pli ol unu vico, tio signifas estas
nur iĝas asocieca tabelo?
>> ZAMYLA CHAN: Do la demando estis se vicoj havas pli ol unu vico en ĝi, ne
ĝi fariĝis asocieca tabelo?
Do ĝi estas tabelo de asocia arrays jam.
Do eĉ se estas nur unu vico revenis, tiam vi devus iri al
indekso 0 de tiu rezulto.
Kaj tiam vi volas havi tiun unuan vicon.
Jes, Belinda?
>> Spektantaro: Kiam vi uzas ===, Estas ĉi tio la sola kazo?
Aŭ ĉu ekzistas aliaj?
>> ZAMYLA CHAN: Do, en tiu kazo, === Estas kompare trans tipoj.
Pardonon. === Estas komparo kiu komparas la tipoj.
Kaj poste == komparas tra ĉiuj tipoj.
>> Spektantaro: Cxu vi povas klarigi, kio vicoj estas en ĉi tiu situacio?
Ĉu remi de datuma?
>> ZAMYLA CHAN: En la sekvanta glito, mi estas tuj klarigos kia vicoj estas.
Do se vi ne gravas tenante ekstere sur tio.
Kaj tiam vi en la dorso?
>> Spektantaro: Por funkciojn kiel konsulto, redonu kaj pardonpetas [inaudibles]?
>> ZAMYLA CHAN: La demando estis ĉu tiuj funkcioj - query, senkulpigi,
kaj redonu -
estas komuna tra PHP.
Ĉi tiuj estas tiuj pri kiuj CS50 skribis por pset7.
Kaj Jay?
>> Spektantaro: Kiam vi bezonas diri $ _session, Estas, ke nur por IDs?
Aŭ vi povus esti dirinta ke ĉi tie?
>> ZAMYLA CHAN: Do la demando estis, kiam ni uzu $ _session, kiu estis specifa
malloka variablo ke ni uzas.
Tie ĉi tiu variablo estas tuj esti lokaj al nia funkcio.
Do ni simple deklarante nova variablo.
>> Spektantaro: Kiamaniere senkulpigi implementado?
>> ZAMYLA CHAN: La demando estis, kiele pardonpetas implementado?
Kaj mi kredas ke tiu estas vere bela bona praktiko por vi uloj por iri en
la functions.php sekcio kaj rigardi pardonpeti kaj vidi kiel vi povus havi
faris ĝin mem.
Do mi povas lasi tiun al vi sed nur diri ke se vi rigardas pardonpetas,
tiam ĝi prenas la mesaĝon, ke vi donita senkulpigi, kaj poste ĝi
laude tiu mesaĝo.
Plu demandoj?
Mi amas demandoj.
Observu do ili venas.
>> Spektantaro: [inaudibles]
echo aŭ presita tie?
>> ZAMYLA CHAN: La demando estis, ni ne povis ĝuste enmetis
echo aŭ presita tie.
Do kiu estus farinta ion iomete malsamaj.
Tio estus presita informpeto malsukcesis en tio -
nu, nun, ni estas vere en nia regilo.
Do ni ne vere havas HTML starigis tie.
Senkulpigi por prunti apologize.php reale alidirektilojn vin apology.php.
OK.
>> Do nun, ni iru al adreso la demando de antaŭaj pri kio
vere estas vicoj.
Nu, demando revenos tabelo de vicoj.
Kaj cxiu vico estas reprezentita per asocieca tabelo.
Do se mi ekzekutita iuj SQL query kaj Mi jam stokis la rezulton en vicoj, tiam
uzante foreach buklo, tiam la tabelo nomo estas la unua tie - vicoj.
Kaj poste mi iros alvoki ĉiun vicon tien $ vico.
>> Do ripetanta super tio, mi povas tiam aliri la donita vico nomo kolumno,
jaro kolumno kaj domo kolumno.
Notu ke mi ne povis fari tion kun vicoj, ĉar vicoj indekso
nomo ne ekzistas.
Vicoj estas nur tabelo de asocieca arrays.
Do vi havas du nivelojn tie.
Kiam vi havas la tabelo de vicoj, vi devos eniri en tio.
Kaj tiam vi povas aliri la kolumnoj.
Ĉu tio klarigi?
Yeah, fronte?
>> Spektantaro: [inaudibles] malfermi krampoj por [inaudibles]?
>> ZAMYLA CHAN: Pardonu?
>> Spektantaro: La malferma krampoj.
>> ZAMYLA CHAN: Tiuj ĉi tien?
Tio permesas al mi por inkluzivi ke variablo.
Jes.
>> Spektantaro: Kiam vi presi, estas vi videbligi al la HTML kodo?
>> ZAMYLA CHAN: Jes.
Kiam mi presas, ĉi tie estas interne mia ŝablono nun, do
mia vido de MVC metodo.
Do mi presado en la HTML.
>> Spektantaro: Do, se ni iris en developer iloj post kuri ĉi, ni povis
ke efektive en kodo?
>> ZAMYLA CHAN: Tio estas granda demando, jes.
Do se vi venis en la developer iloj en Firefox uzante Firebug aŭ
Chrome, tiam jes, vi povus fari vidu la specifa HTML.
Do tio ne pruvas $ vico ["Nomo"].
Ĝi montrus ajn nomo estas en tiu vico.
>> Spektantaro: Just a ĝenerala temo, kio estas tr kaj td difinita kiel?
Kial ni [inaudibles]?
>> ZAMYLA CHAN: Tabelo vico tr, tablo tiam td kolumno.
OK.
>> Spektantaro: Jes, estas tablo datumojn.
>> ZAMYLA CHAN: Tabelo datumojn.
Jes.
>> Spektantaro: Ĝi estas vico en kiu la vico estas traktata kiel kolono?
>> ZAMYLA CHAN: Pardonu.
Ĉu vi povas ripeti tion?
>> Spektantaro: Kiel vi bildigi vicojn?
>> ZAMYLA CHAN: Kiel vi visualizar vicojn en kia maniero?
Ĉu vi parolas pri tiuj vicojn tien aŭ al la tr vicojn?
>> Spektantaro: La vicoj.
>> ZAMYLA CHAN: tiuj vicoj tie?
Mi volus bildigi tion kiel Mi faros mian konsulto.
Kaj diras, OK, mi havas ĉu 0 al n kvanto de vicoj kiuj kongruas al la kriterioj
ke vi estis konsulti.
Do mi havas kelkaj nombro de vicoj.
Do vicoj, la $ vicoj, butikoj ĉiu unu el tiuj vicoj en tabelo.
Do eĉ se estas nur unu el ili, ĝi estas ankoraŭ tabelo de vicoj kiuj kongruas ĝin.
>> Tial, ekzemple, ĉi tiu estas simila al kiam vi fetched
la kaŝmemoron de uzantoj.
Kaj la kriterioj ne trovis kie ID egalas la kunsido ID.
Tie vere nur estas unu vico kiu povus kongruas tio.
Sed ankoraŭ vicoj ĵus revenis unu vico.
Do vi devus iri al vicoj, indekso 0, indekso kaŝmemoron por
reale preni vian kaŝmemoron.
>> Spektantaro: Ĉu la presita funkcio en echo la saman aferon?
>> ZAMYLA CHAN: Jes.
Jes.
Presi eĥo de la sama.
>> Spektantaro: Ĉu la foreach buklo la sola maniero indekson en vicoj?
>> ZAMYLA CHAN: Estas foreach buklo la nura maniero kiun vi povas
persisti tra vicojn?
N-ro
Vi povas ankaŭ uzi por buklo, provizita ke vi scias la longo
de la vico de la tabelo.
>> Spektantaro: Ĉu vi povas aliri gxin uzante vico kiel [inaudibles]?
>> ZAMYLA CHAN: Do vi ne povas aliri gxin nur uzante vico, se vi ne havas
foreach buklo kondicxe ke vi ne deklaris vico.
Jes.
Jes, en la blanka.
>> Spektantaro: Do ​​kion tr kaj td fari?
>> ZAMYLA CHAN: Do tr kaj td estas HTML-etikedojn.
tr indikas la komencon de tabulo vico.
Kaj ĉiu td indikas nova tabelo datumoj kolumno.
>> Spektantaro: Por vida de kia vico Estas kiel, apenaŭ imagi la SQL, kiom
Ili havas unu vicon.
[Inaudibles].
>> ZAMYLA CHAN: Jes.
Tio estas granda punkto.
Vi povas bildigi vicoj kiel justa kiel en Excel tablo, nur
la listo de la vicoj.
OK.
Ĉiuj pravas.
Do nun, ke ni jam trapasis unuaranga, se ekzistas ne plu demandoj, ni
transiru sur insert.
Do, se mi volis enmeti en iun tablo kaj enmeti iujn kolumno
valoroj, mi povis enmeti mem en Ravenclaw en jaro 7.
Sed kelkfoje povus esti duobligita valoroj, kiel ni vidis en pset7 kiam ni
estis ĝisdatigi nian biletujo.
>> Do, en tiu kazo, ni deziras uzi ON Duobligi KEY UPDATE, tiel ke ni ne
stoki multnombraj vicoj kun la sama taksas sed prefere ĝisdatigi ĝin.
Tiam ni efektive havis ĝisdatigo: kiu ne estas ia insert.
Estas nur ĝisdatigon kie vi ĝisdatigos en iu tabelo kun donita
kriteriojn kaj poste, fine, forigi, kio faras tre simila afero.
>> Spektantaro: Ĉu vi povas mallonge transiru la duobligita klavo?
>> ZAMYLA CHAN: Jes.
Esence cxi tie, mi havas INSERT INTO Gringotts, estas, galeones, tiuj valoroj.
Sed ID, supozeble, estas unika ŝlosilo valoro starigis en MySQL tablo.
Do, se mi jam estus ke ID starigis, tiam mi ne povas enmeti novan vicon.
Do, se ĝi ne ekzistas jam, tiam mi devas ĝisdatigi ĝin.
Meze en la blanka.
>> Spektantaro: Do ​​enigi, update, forigi, kaj unuaranga, estas tiuj ĉiuj haveblaj
loke [inaudibles]?
>> ZAMYLA CHAN: Do enigi, ĝisdatigo, forigi, kaj
selektu estas ĉiuj SQL mendoj.
Do kiam ajn vi uzas SQL, vi devos tiuj haveblas.
>> Spektantaro: Reen al la pasinteco kvizojn -
Estis demando kiu pritraktis se vi havus tablon kaj volis
enŝovu testo partituroj en unu kaj vi enmetas via nomo do ĝi ne lasos al vi
[Inaudibles] via amiko testo partituro.
Kiel vi faras tion kun insert?
>> ZAMYLA CHAN: Do la demando estis pri antaŭa meza termino demando.
Mi ne konscias pri kion unu estas nun.
Do eble poste, se vi volas venu, kaj montras al mi, tiam mi povos
certe transdonos vin bekojn.
Sed parolante de enmeto de aĵoj, kiel preni ies partituro kiam vi
ne, tuj parolos pri SQL injekto atakoj.
Do SQL injekto atako estas esence kie iu prenas
avantaĝo de la malalta sekureco de la maniero, ke vi prenas en datumojn.
>> Do ĉi tie, samkiel en CS50 financo, kiam ni ensalutinta, ni povas eniri en
username en la saluta formon, la unua teksta kadro, kaj
tiam eniras en pasvorton.
Eble niaj PHP kodo povus rigardi io tiamaniere, kie $ salutnomo
estas la post-datumoj salutnomo kaj pasvorto estas post-datumoj pasvorton.
Kaj tiam ni ĵus ekzekuti nia demando, ni diru, Okej, bone, nia informpeto tuj
elektu el niaj uzantoj, kie la uzantonomo estas la
kiu oni prezentis.
Kaj la pasvorto estas la pasvorto, signifanta, ke la pasvortoj egalas.
>> Nun, kio se anstataŭ reale Sendante reala pasvorton, kiel
12345 kaj diveni ĉe dento kiu diras pasvorto kaj klopodante pirati iliaj
konton, kio se anstataŭ Ili prezentis ĉi.
Ili povis tajpi en eble a diveno ĉe pasvorton.
Kaj tiam ili finus la citaĵo tiam entajpu aŭ 1 = 1.
Tio estus pasxadi rekte en la SQL demandi rigardi ion kiel ĉi tio.
Elektu el la uzantoj kie salutnomo = Puas kaj pasvorto
egalas lilio aŭ 1 = 1.
>> Do ĉu la pasvorto devas esti ĝusta aŭ 1 = 1,
kiu estas ĉiam vera.
Do, en tiu kazo, esence, uzanto povas utiligi ĉi tion kaj simple ensaluti
sin kaj hack ies konton.
Do jen kial ni volas eviti iu devi fari tion.
Sed bonŝance la informpeto funkcio per pasante en la anstataŭiloj prenos
prizorgi tion por vi.
Ankaŭ, vi tipe neniam volas por fakte submeti la pasvortojn
sin.
Pro tio ni hashed aŭ ĉifrita ilin en CS50 financo.
>> Spektantaro: La pasinteco kvizo parolis pri MySQL eskapo kordoj.
Ĉu ni devas zorgi pri tio?
>> ZAMYLA CHAN: Tio estas bona demando.
La MySQL-eskapo kordoj estas definitive Funkcio kiu estis uzita en nia demando.
Sed definitive rigardi en tio.
Mi dirus ke tio estas justa ludo scii ke vi bezonus voki ke
funkcii sur ŝnuro.
Yeah, Belinda?
>> Spektantaro: Kiel vi scias, kiam ĝi estas citiloj aux citiloj?
Kaj ankaŭ mi sentas min kiel en lekcio vi menciita io pri ne havi
la [inaudibles] aŭ iu aŭ la dua simpla citaĵo ĉe la fino.
Mi kredas ke li atentigis en prelego, ke vi supozis havi apostrofo 1
kaj tiam ne havas apostrofojn aŭ io.
>> Spektantaro: [inaudibles].
>> Spektantaro: La afero estas la lasta sola citaĵo en tie en tiu dua skatolo
ne devus esti tie.
[Inaudibles]
Ĉar, kiam vi prenas tiun lastan sola citi el kaj kongruas tiujn por enhavo
kie la pasvorto estas, se vi havas tiun informpeto, estas sola citaĵo at
Fine jam.
Vi volas uzi tiun solan citaĵo kiel tiu kiu alfrontas la
[Inaudibles].
Do kio estas fakte en tiu teksto skatolo ne devus havi tio.
>> ZAMYLA CHAN: Mi ŝanĝos tion.
OK.
Se tie ne estas ia demandoj, tiam Mi timige fordoni transiru al Jozef, por paroli
Pri Javascript, ktp.
>> [Aplaŭdo]
>> JOSEPH ONG: Do ni estas kurante iom malantaŭe.
Do, se vi devas lasi, ke estas OK.
Sed ni petas, ke vi plenumu viajn kapojn malsupren se vi estas en la mezo, do vi
ne blokas la ĉambron kaj vi uzos la dorso eliron, se vi devas.
Mi estas Jozef laux la vojo.
Saluton.
Provo, provo.
Dan estas la bona?
Cool.
>> Do la video ankaŭ estos afiŝis linio por tiuj kiuj
devas foriri nun.
Malgracia.
OK.
Do kvizo revizio.
Ĉi tio estas kato.
Nun, JavaScript, kiu estas eble ne kiel aww por iu el vi guys.
OK.
Do jen unue, memoras el Zamyla.
Memoru ke PHP estas kuri sur la servilo.
Kaj multajn fojojn, vi infanoj skribis masxojn en PHP presi HTML, ĉu ne?
Do iam tio kodo ekzekutas, ke HTML-eligo ke vi presi
gets sendita al la uzanto.
Kaj foje tio okazos, ne pli PHP povas oni kuras, krom se vi reŝarĝi la paĝon, de
Certe, kio reexecutes la PHP.
Sed iam vi presi ke HTML, vi ne povas iri ien ajn.
>> Por ke HTML estas transigis al la uzanto, kiu estas la retumilo super tie, kie
Milo estas uzanta la komputilo.
Kaj tiel bone, ekzistas pluraj aferoj iam ni sendu HTML por la uzanto.
Kelkfoje ni volas fari ion kiel kiam vi klakos sur io, ni volas
garde skatoloj pop up, tiuj specoj de interagoj, kiel kiam vi alklakos la
klavo, kiam vi klakos io en la paĝo, mi volas ion okazi.
Nu, vi ne povas reexecute PHP kodo fojo ke HTML estas fiksita.
Do kiel vi faras tion?
>> Ni enkondukos novan lingvon nomata Javascript, kiuj kuras en la foliumilo
kiu permesas vin fari tion, al HTML post vi ricevos
ilin de la servilo.
Kaj tio estas kial ni nomas ĝin kliento-flanko programlingvo.
Ĝi funkcias en via komputilo -
la kliento.
Demandojn pri kiuj ĝis nun?
Tio paradigmo sencoplena popolo?
OK.
Bona.
Ĉiuj pravas.
Do la unua afero Observi estas JavaScript estas ne PHP.
>> Ili havas iom malsamajn sintakso, kiuj ni iros en.
Kaj ili havas tre malsamajn uzojn.
Javascript, denove, pro via retumilo, por la kliento.
Servilo funkcias ie en aliulaj komputilo kiu sendas informojn
al vi, korekti?
Do, se ni petas vin skribi PHP kodo je iu ekzameno demando, ne skribu
JavaScript kaj inverse.
Vi nur perdos punktoj, kaj gxi ne estos prava.
>> Do ni ricevas en iun sintakso diferencoj -
Ĝavaskripton en la maldekstra kaj PHP dekstre.
La unua afero, vi rimarkos kun Javascript, ni deklaras variablojn kun
la var ŝlosilvorto -
V-A-R. PHP uzis la dolaro-signo, kiel Zamyla diskutita antaŭe.
Se vi volas deklari asocieca tabelo, ni vidas la familiara sintakso sur
la dekstra flanko kun PHP.
Sur la maldekstra flanko, anstataŭ vi uzas krispa krampoj.
Kaj tiam via ŝlosiloj estas en la maldekstra.
Tiam vi havas dupunkto.
Kaj tiam vi havas la valorojn ke vi deziras.
>> Do jen kiel vi devus fari ĝin en PHP sur la dekstra flanko kun tiu dua
Linio, kiu komenciĝas ĉe Milo.
Kaj tio estas kiel vi farus tion sur la maldekstra flanko en JavaScript se vi volas
kion ni nomas objekton.
Kaj objektoj en JavaScript estas nur asociaj tabeloj.
Do se vi volas aliri kampoj, en PHP vi uzas ĉi krampo sintakso.
Kaj tiamaniere, vi povos religi ĉi mastro kampo al Lauren.
>> Nu, en JavaScript, se oni volas konsenti kampo kaj anstatauxigi gxin, vi povas
uzi la skalara sintakso.
Vi povas ankaŭ uzi la krampo sintakso.
Sed vi ne povas uzi la dot sintakso en PHP.
Tio ne funkcios.
Ĝi funkcias nur en PHP.
Kaj fine, presi aĵojn al la konzolo, vi uzu console.log, kiuj
you guys uzi multon en pset8.
Vi povas console.log tio.
>> Se vi volas presi tabelo en PHP, vi devas uzi print r.
Kaj sur la dekstra flanko, vi vidos i hash kordo kunmeto tie.
Iu demandis pli frue.
Mi uzu pli en JavaScript.
Se mi volas concatenate ion en PHP, mi uzas la punkton.
Ĉi tiuj estas aliaj.
Se vi skribas PHP-kodo, ne uzu alpago.
Se vi skribas JavaScript kodo, ne skribu punkto.
Estos malbone.
Kaj vi estos malgaja.
>> Do sintakso diferencoj.
Sciu vian sintakso, ĉar se oni devas skribi demandon kaj vi uzas sintakson
el la malĝusta lingvon, ĝi ne funkcios.
Kaj tio estos malĝusta.
Do ni parolu pri iuj kontrolo flui diferencoj, kiel vi uzos
loops en ĉiu el ili.
Zamyla foriris trans la dekstra flanko.
Stuff sur la dekstra flanko devus esti konata.
Ni rigardu sur la maldekstra flanko.
>> Kiam vi uzas por n buklo en JavaScript, via buklo variablo, var i tien,
buklo super la sxlosilojn de la tabelo.
Do vi vidas nomon, domon, kaj rolo.
Se mi console.log i, I get nomo, domon, kaj rolo.
Tiuj estas la ŝlosilojn.
En JavaScript, a foreach buklo iras super la valoroj de tiu tabelo.
Do vi rimarkos ke ili estas ambaŭ i.
Sed ĉi tie sur la PHP-flanko, presas el Milo, CS50 kaj Maskoto.
Tiuj estas la valoroj en PHP.
>> Do jen estas kiel tiuj du estas malsamaj en la diversaj lingvoj.
Do se vi estas uzanta foreach buklo, ne supozu, ke tio
donas al vi la ŝlosilojn.
Kaj se vi uzas por n buklo, ne faru supozi donas al vi la valoroj.
Ĉu tio havas sencon ĝis nun?
La sekva slide tuj montros al vi kiel vi povas aliri la malon en
ĉiu el ili.
>> Nu, se vi havas la ŝlosilon en JavaScript kaj vi volas ke la valoro eksteren,
vi simple indekson en la tabelo kun tio.
Do Milo de i akiros al vi, kion vi volas - la valoroj.
Tie estas tio malsamaj sintakso en PHP.
Se vi vere volas scii ĝin, mi ne faras kredas ke ni jam montris ĝin al vi ankoraŭ.
Sed se vi estas interesita, vi povas uzi tiu plia sintakso sur la dekstra
flanko kiu efektive lasu vin akiri la klavoj en PHP, kiam vi uzas a
foreach buklo.
Do nur iom da vidindaĵoj se vi interesiĝas.
>> Do tio estas nur por pruvi la diferencoj inter tiuj du maŝojn.
Ne miksi ilin supren, kiam vi estas programado demandon.
Demandojn pri tio.
Cool.
Ĉiuj pravas.
Javascript celoj.
Mi parolis pri ili.
Ili estas kiel asociaj tabeloj.
La unu aferon mi ŝatus ke vi rimarku ĉi tie estas ke valoro en asocia
tabelo povas esti nenio en JavaScript.
>> Ĝi eĉ povas esti funkcio, kiel tie.
Mi havas funkcion kiu estas valoro de klavo.
Kaj se mi volas nomi tiun funkcion, Mi nur aliri ŝelon.
Kaj poste mi metis la krampoj post tio.
Kaj tio funkcias.
Do demandojn?
Neniu?
OK.
Bona.
Javascript, kiel PHP, estas pigre tajpita.
Kion tio signifas?
>> Ĝi ja havas tipoj.
Sed kiam vi deklaras JavaScript variablo, vi diras var i.
Vi ne parolu.
Tio ne estas afero.
Vi nur diras ke estas variablo.
Kaj tiam JavaScript manipulos la tipoj sub la kapuĉo por vi.
Ni povas libere konverti inter tipoj pro tio.
Do mi komencas kiel nombro en ĉi tiu kazo.
Kaj tiam mi havas ĉenon.
Kaj mi aldonu i al tio.
Kaj mi religi ĝin denove en i.
>> Do en tiu unua linio, i estas la nombro.
Sur la dua linio, i nun iĝas kordo post mi faras la reasignación.
Kaj tie, mi simple concatenando tiun ciferon sur la kordo.
Do vi vidas, ke kvankam i estis entjero en la unua parto, ĝi estas speco
de kiel esti konvertita al ŝnuro kaj tiam esti aldonitaj
sur tiu saluton kordo.
Kaj do, tio estas kion mi volas diri per la nefiksitaj tajpadon.
Tio estas, ke vi konverti inter tipoj tre facile.
Kaj ne ĵetas avertoj ĉe vi ŝatas C faras.
>> Do mi nun entenas saluton 123 al la kordo.
Sekva.
Ni povas ankaux libere kompari inter tipoj.
Do, se vi simple uzu ==, tre multe kiel en PHP, JavaScript
faras similan aferon.
La kordoj 123 estas la sama kiel la nombro 123 kiam vi uzas duoblan egaluloj.
Kiam uzata triobla egaluloj, ĝi ankaŭ volas certigi ke
la tipo estas la sama.
Do pro tio ke estas ĉeno kaj tio estas nombro, eĉ kvankam ili ambaŭ estas
123, kiam vi uzas triobla egalas, vi ricevas falsaj.
En la duobla egalas kazo, vi ricevas vera, ĉar duoblan egaluloj ne
zorgas pri tipo.
Triobla egaluloj ne zorgas pri tipo.
Demandojn?
OK.
>> Kaj alia afero pri JavaScript estas medio estas speco de tutmonda, krom se vi estas
en funkcio.
Kaj ĝi funkcias same vojon en PHP reale.
Do ni iru tra tiu ekzemplo.
Mi starigis inter mi kaj 999.
Kaj poste mi iros al tiu por buklo.
Do se mi presado i eliris en tiu por buklo, mi atendas 0, 1, 2, 3, 4.
Mi alvenas al mi = 4.
Ĝi pliigas i nun al 5 at la finon de la buklo.
Kaj tiam ĝi rompas el la maŝo, ĉar ne plenumas la
kondiĉi plu.
>> Kion vi opinias, ke apud console.log presas ekstere?
Do, tio estas kion li farus en C. En C, ĉar se vi havas kiel var i ekstere
kaj vi devas var i ene de buklo, kiel buklo, tiam ĝi faras tiaj ke
ĝi estas scoped ke la du i informoj estas malsamaj.
En JavaScript, gxi simple trakti ĝin kiel la samaj i.
Mi ricevas 5, ĉar tiu estis la valoro post kiam ĝi eliris el la iteracio.
Do tiuj i informoj estas la sama i.
Ĉu tio havas sencon?
>> Nu, tio havas sencon de JavaScript starpunkto.
Sed la sama paradigmo ne porti super al C. Ili havas
malsamaj scoping regulojn.
Jes.
>> Spektantaro: [inaudibles]
ekster la funkcio [inaudibles]?
>> JOSEPH ONG: Do ekster kiu funkcio?
Do mi devos akiri al tio en nur la duan.
Do ni nomas foo (i).
Ĉi pasas i en foo, pliigoj ĝin, kaj poste registras gxin.
Tiel okazis, 5.
Do ĝi iĝas 6.
Sed kio mi parolas estas ke i en tiu funkcio.
Ĉar ĝi estas parametro, ĝi estas scoped por tiu funkcio.
Do iam mi reale preni el tiu funkcio, ĝi estas nun tuj iros
reen al la malnova i.
Tio i estas nur scoped ĉar ĝi estas en funkcio.
Kaj ni havas atingon kaj funkcioj.
Sed ni ne havas atingon ekstere de funkcioj en JavaScript.
Ĉu tio havas sencon?
Jes.
Demando.
>> Spektantaro: Sama [inaudibles]?
>> JOSEPH ONG: Do jes.
En PHP, ĝi estas la sama tipo de afero.
Tie estas malpeza subtileco en la praktiko.
Sed vi povas demandi min pri ke post la revizio.
Vi ne vere necesas scii ke subtileco por la kvizo.
Por iuj celoj, kiel variabloj, tutmondaj kaj PHP, krom se
Ili estas en funkcio, sama afero en JavaScript.
Jes.
>> Spektantaro: Kial ĉi tio permesis en JavaScript kaj neniu kie alie?
>> JOSEPH ONG: Do kial ĝi permesis en JavaScript kaj ne en C?
Ĝi estas nur iu, kiu venis kun Javascript decidis ke tio OK en
Javascript.
Do ĝi estas ĵus kiel programlingvo konvencio kiel ni dirus.
Jes.
>> Spektantaro: Do ​​kial faris lin foriri de 6 al 5?
>> JOSEPH ONG: Tiel iris de 6 al 5, ĉar kiam mi preterpasis i en foo, ke
i interne de foo nun scoped al foo, ĉar medion ekzistas en funkcioj en
Javascript.
Sed iam mi eliros el ĉi tie, ĉar ĝi Estis scoped al la funkcio, mi estas nur
uzante la regula i tiu estis ene la resto de la kontrolo de fluo.
Havas sencon?
Ĉu mi povas pluiri?
Ĉiuj pravas.
Cool.
>> La akcepto de tio estas objektoj ili preteriris referenco.
Vi scias, kiel kiam vi transiros tabelo en C vi povis
efektive modifas la tabelo?
Ĝi estas la sama afero en JavaScript.
Se mi pasos objekto, en tiu kazo, mi pasis Milo en tiun catify funkcio.
Milo komencu.
Lia nomo estas Milo Banano.
Mi preterpasonta objekto enen funkcio ĉar ĝi estas objekto, asocieca
tabelo en JavaScript.
>> Kiam mi plenumos operacio en tiu funkcio, ĝi volas
efektive ŝanĝas la objekton.
Do ĉi tio nur okazos por objektoj en JavaScript, simple plaĉas okazas
por arrays ene de C. Do Milo nomo efektive fariĝis kato nun.
Ĉu tio havas sencon?
Do tio nur funkcias por objektoj.
Celoj estas pasitaj per referenco.
Jes.
>> Spektantaro: Do ​​vi diras, ke en kontrasto al variablo i.
>> JOSEPH ONG: Jes.
Kiu variablo i estis nur nombro, ĉu ne?
Estas kiel en C, kiam vi transiros an entjero a, ĝi faras kopion.
Kaj kiam vi transiros tabelo, ĝi reale ŝanĝas la efektiva tabelo en
C. La sama afero okazas kun Javascript en tiu kazo.
Ĉiuj pravas.
Kaj apud, Milo estas malĝoja pro Li estas nun kato.
Tio estis efektive Milo post iuj vojaĝo al la veterinaro.
>> Do kiel ni uzas JavaScript en TTT-paĝo?
Ni povas inkluzivi ĝin.
Tiu estas la HTML kodo kun la strio etikedojn.
Do mi havas strion etikedoj tie.
Kaj tiam mi metos kelkajn JavaScript kodo ene de la skripto etikedojn.
Kaj tiam ĝi ekzekutas ĉi.
Kiam mi nur faros gxin kiel tiu, ĝi estas vokis inline JavaScript.
Ĝi estas speco de senorda, ĉar la Javascript estas vere en la HTML.
>> Al bona maniero por fari tion, des pli afabla, estas skribi vian JavaScript en
eksteran dosieron kaj poste provizi la skripto etikedon kun fonto.
Kaj tiu iros al tiu JavaScript dosieron kaj legu la kodo JavaScript el
ke dosieron anstataŭe.
Kaj tiamaniere, vi ne havas multe da Javascript komence de viaj
HTML-dosiero, kion faras gxi vere senorda.
Vi nur metis ĝin ie ajn.
Kaj tiam ĝi legos ĝin de tie.
Ĉu tio sencas?
>> Lokigo aferoj.
En tiu aparta kazo, la skripto estas antaŭ la korpo.
Do kiam mi faros tion, ne estas nenio en la korpo ankoraŭ.
Eble ĉi tio faros iom pli sentas kiam mi montras ĉi sekva parto.
En ĉi tiu kazo, la skripto venas post la div.
Do la div efektive aperas sur la paĝo unue.
Ĝuste ĉi tie en ĉi tiu malgranda ruĝa rondo, vi vidas la teksto aperas.
Kaj tiam la garde montras supren.
>> En la unua kazo, ĉar la skripto Antaux la div, la
garde montras supren unue.
Kaj tiam la div montras supren post vi adiaŭas la skatolo.
Do la ekzekuto gravas.
Do ni observu ĉi tion en menso.
Tiu estos grava en iomete.
OK.
Do bone, kiel vi atendos ĝis la tuta paĝo estas ŝarĝita tiam antaux vi
ekzekuti iu kodo?
Ni ricevos en ĉi tiu iom iom poste ankaŭ.
Sed ĝuste teni ĉi investo aferoj en menso por kiam ni
veni al alia glito.
>> Do ni atingos DOM nun.
Kaj kio estas DOM?
Do, se vi rigardas la HTML kodo, estas nur faskon da teksto sur la ekrano.
Do kiel JavaScript scii ke tio estas HTML elemento?
Do ni devas havi iun memoron reprezento de tiu
strukturo kiun ni havas.
Kaj kiam ni havas ĉi tion en la memoro reprezenton en JavaScript, ni nomas
ke la DOM.
Kaj tio estas nur maniero ke homoj decidis ke ni devus reprezenti ĉi
HTML-strukturon kiel.
>> Kaj kion signifas ĉi DOM aspekti?
Nu, en memoro reprezento, ni prenu tiun tekston.
Kaj ni igi ĝin memoro reprezento.
Do tiu estas la HTML.
Do ni unue eltrovi, ke ĉiu DOM arbo havas dokumenton.
Ĝi aspektas kiel arbo.
Kaj la dokumento entenas la HTML etikedo, efektive ĉio
ene de ĉi nun.
La HTML-etikedo havas du infanoj.
Ĝi havas kapon.
Tio kapo, se vi rigardas deŝovon tie ĉe kiel ĝi estas strukturita
inter la proksimaj etikedoj, kapo havas infanon.
La infano estas titolo.
Ekzakte.
>> Nun, ni havas korpon infano.
Kaj tiam tiu korpo havas infano nomata familio.
Kaj tiu familio havas tri filojn -
malnova, meza, kaj la plej juna.
Do vi devus scii kiel desegni diagramon kiel tiu, kiam ni demandas vin kiom
desegni diagramon kiam ni donu vi la HTML maldekstre.
Scias kiel produkti la DOM arbo.
Kaj ene de tiuj aferoj, ne nur iu teksto, kiun mi reprezentis
kiel iom skatoloj.
>> Ĉu tio DOM arbo strukturo fari senco kaj kion la DOM estas?
Do kion signifas la p stand for?
Ĉi tie, la p tien en tiu etikedo reprezentas
alineo etikedon en HTML.
Do vi povas rigardi ĝin.
Sed tio nur signifas ke ĝi estas iom spaco por iu teksto.
Kaj ĝi havas iujn defaŭlta CSS stilo, ĉar ĝi estas paragrafo etikedo.
Sed ne vere maltrankviligi tiu parto tro multe.
Nur scias ke estas lokokupilo por iu teksto.
Jes.
Demandon?
Jes.
>> Spektantaro: Vi ĵus menciita CSS.
La hash familio kaj la hash cxiuj, kiuj aĵoj estas esence
reprezenti IDs en CSS-?
>> JOSEPH ONG: Jes, ĝuste.
Mi ricevos por kio tiuj hashes signifas en sekundo.
Kiam Angela transiris CSS, ŝi parolis pri CSS selectores.
Tiuj estas la CSS selectores ke ŝi parolas.
Jes, Rob?
>> ROB Bowden: Volonte ankaux mi komentu ke DOM ene de titolo etikedon
Estas ankaŭ teksto nodo.
>> JOSEPH ONG: Ĝuste.
Do ene de la titolo etikedo, Mi havas iom da teksto DOM.
Do vere, tiu titolo devus havi kiel iom skatolo elspezi gxin tiel.
Sed tio ne vere gravas tro multa en ĉi tiu kazo.
Ni ne vere zorgas pri teksto nodoj, kiel ni nomas ilin, tro multe.
OK, ni faros.
Ŝajne, ni faros.
Kaj mi fiksos ke kiam Mi alŝutu ĝin denove.
Ĉu tio havas sencon?
>> Do kiel ni laboros kun la DOM?
Kiam ajn vi agos kun la DOM en Javascript, estas du paŝojn.
Vi elektu DOM elemento.
Kaj tiam vi faras tion al ĝi.
Do, en tiu kazo, abstrakte, mi havas selektis la meza elemento.
Kaj poste ekzemplon de faranta stuff al ĝi estus ŝanĝi la tekston.
Tio kutimis esti Bob.
Nun, kion Mi faris al gxi iris mi ŝanĝis Bob por Milo en ĉi tiu okazo.
>> Do kiel ni vere faras tion?
Kiel ni faru la elektu?
Kiel do ni ja la faradon uzatajxojn, por la aferon unufoje ni prenis ĝin?
Nu, la maniero vi infanoj lernis ĝin en ĉi tiu kategorio estas per uzo de io
vokis jQuery.
Do kio estas jQuery?
jQuery estas biblioteko kiu faras Javascript facile verki.
Do iu prenis la tempon kaj skribis jQuery.
>> jQuery vere skribita en JavaScript.
Kaj tiam, ĉar ili faris tion, ni nun havi tutan aron de funkcioj kiuj
ni povas uzi tiun fari nian vivas vere facila.
Do kio estas kelkaj el la tion ĝi faras?
Ĝi faras elektante elementojn pli facila.
It makes ŝanĝi HTML, aldonante klasoj facila.
It makes Ajax facila.
Ni ricevos por ke en sekundo.
>> Kaj ĝi estas analoga al C bibliotekojn.
Do vi inkluzivi string.h, vi get strlen.
Vi ricevas strcpy, ĉiuj ĉi tiuj aferoj.
Kiam vi inkluzivi jQuery, vi ricevas belan manierojn elekti elementojn por ŝanĝo
aferoj, kaj tiel plu.
Vi akiras ekstran funcionalidad ke Javascript ne donas al vi.
Do jQuery ne estas JavaScript.
jQuery estas biblioteko ke estas skribite en Javascript kiu faras JavaScript
pli facile verki.
>> Do jQuery ne estas programado lingvo.
Sed JavaScript estas.
fari.
Certe vi ricevos vian terminaro pravas.
Demandojn?
Jes.
Ĉu tio estas demando?
Ĉiuj pravas.
Do kiel vi uzas jQuery?
Nu, kiam vi skribas iun Javascript kodon kaj vi inkludus
jQuery ĉe la supro de via dosiero kiel La skripton, oni uzas la dolaro signo
nun akiri aliron al jQuery.
Kaj ĉi tiu estas malsama de la dolaro signo en PHP.
>> Ĝi estas la sama simbolo vin tajpi sur via klavaro.
Sed ili signifas tre malsamaj aferoj.
Dolaro signo en PHP signifas ĉi Tiel mi deklari variablon.
En JavaScript, kiam vi jam inkludis jQuery, ĝi staras por jQuery.
Observu do, ke en la menso.
Do kiom eble ni elektu DOM elementoj?
Nu, kiam vi faras ĝin la malbela JavaScript Tiel vi aliri la
dokumenti malloka variablo.
Kaj tiam vi ricevas elementon per ID familio.
Tiu estas vere longa kaj wordy kaj ne tre bela.
>> Aux vi povas akiri tutan elementoj ke estas p-etikedo.
Tio funkcias ankaux en JavaScript.
Sed ni neniam vere montris vi la sintakso tro multe.
Kion ni montris al vi iris jQuery.
Por ke tutaj selector tie supre, ke estis esprimita en JavaScript nur gets
kondensita al ĉi tiu tre bela dolaro subskribi etiketon familio.
Kaj $ p, precize kie ĝi estas tiel.
Se vi volas elekti ĉiuj p-etikedoj ene de familio, ni metis spacon
inter la du.
Kaj nun, ni preni la tutan p tags ene de familio.
>> Kaj rigardu familiara?
Nu, Angela parolis pri CSS selectores.
Donu al mi unu sekundo.
Kaj tial la celo elekti elementon, vi simple uzu la samon kiel vi
farus kun CSS selector.
Se vi metas kradon en fronto de ĝi, ĝi selektas per identigilo.
A dot selektas per klasoj.
Se vi nur havas la aferon sen hashes aŭ dots, selektas tiujn etikedojn.
Demandoj.
Jes?
>> Spektantaro: Kiam ni uzas punkton en nia HTML, estas ke ne jQuery?
>> JOSEPH ONG: Dot en nia HTML estas JavaScript afero.
Tio ne estas jQuery afero.
La vojo vi uloj lernis ĝin per jQuery estas uzi. html.
Kaj tiam vi preterpasis ŝin ajn la HTML tuj estos.
Do mi devos atingi ke en nur dua praktiko.
Do kiel ni faros uzatajxojn, por elemento iam ni selektis?
Do tio estas ekzemplo de elektado ero.
Do nun, ni volas fari aferojn al ĝi.
>> Do, en tiu kazo, permesu al mi iri reen al la antaŭa glito.
Estis Bob antaŭe.
Kaj mi volas ŝanĝi tiun ene de HTML al Milo.
Do mi nomas la HTML-funkcio de la elemento.
Tio HTML funkcio estas metodo de elemento.
Kaj poste mi donos, kion Mi volas ke la HTML-esti.
Kaj tio nur anstataŭas kio estas interne de ke etikedon kun kiom mi gxin donas.
Jes.
Demandon?
>> Spektantaro: La etiketo estas uzata cxar nur la jQuery.
[Inaudibles]
ni ne uzus tion.
>> JOSEPH ONG: Jes, ĝuste.
Sed ne tro maltrankviliĝu pri pura JavaScript.
Mi nur volas you guys koncentriĝi pri kio vi farus kun jQuery, ĉar
ke tuj estos la grava parto de la kvizo.
Ĝuste.
Ekzakte.
Do vi vidas, ke etiketo, por ke respondas elekti la elemento kun
la ID mezo pro tiu etiketo.
Etiketon signifas ID.
Kaj ĉi elemento havas ID de mezo.
Do tio estas la elemento ni elektu.
>> Spektantaro: [inaudibles].
dolaro signo etiketon [inaudibles]?
>> JOSEPH ONG: Do ne.
La demando estas ĉu vi povas uzi. Valoro.
Kaj. Valoron nur funkcias sur elementoj ke estas enigoj.
En jQuery, estus . Val, ne. Valoro.
Do mi devos akiri al malgranda ekzemplo kiu pruvas ĉion tion en kombino
en dua.
Sed mi pensas tio utilas malgranda fragmento sencoplena homoj ĝis nun.
Deziras ŝanĝi la HTML, vokas la HTML metodon.
Jes.
>> Spektantaro: Cxu vi povas ekspliki la metodo denove?
>> JOSEPH ONG: Do metodo estas nur Funkcio kiu apartenas al unu, en ĉi tiu
kazo, unu el tiuj DOM elementoj, ĉar vi vidas, Mi
selektis la elementon unue.
Fakte, mi uzas la muson.
Mi selektis la elementon unue.
Kaj poste mi nomis ĉi HTML Funkcio kiu havis.
Kaj ĉar ĉi funkcio apartenas al tion ni nomas gxin metodo.
Tio estas nur fantazio nomo por ĝi.
Diru tion denove.
Do memoru, ni selektis la elemento nun.
Kaj ni metis gxin interne de la elemento variablo.
Korekti?
>> Do kiam ni volas ŝanĝi la HTML de interne, ĉar ĝi estis Bob antaŭe, vi
volas ŝanĝi tiun tekston al Milo.
Do ni nomas HTML.
Kaj ni rakontu kion la HTML ene tiu elemento devas esti nun.
Kaj tial ĝi ŝanĝas ĝin al Milo, ĉar mi donis ĝin Milo.
>> Spektantaro: Do ​​ili laboras kune.
[Inaudibles]
>> JOSEPH ONG: Jes, jes.
Ili laboras kune.
Do unu el ili selektas la elementon unue.
Kaj la duan oni faras ion al ŝi.
Jes.
>> Spektantaro: [inaudibles].
Se ĉi tiu metodo estas malsama en HTML vi havas la metodo egalaj reala.
>> JOSEPH ONG: Jes.
Tio estas alia metodo.
Kaj ni povas kovri ke en nur unu duan kiam ni atingos ekzemplo.
Mi volas certigi ke ni plirapidigi ĉar ni elĉerpiĝas de tempo.
Sed ni kuros vojon tra la tempo nun.
OK.
Cool.
Do se vi volas aldoni al klaso, estas Ankaŭ add klaso metodo.
Tiu estas nur ekzemplo de kio vi povas fari kun jQuery.
Tio nur aldonas klaso.
>> Se vi volas forigi ĝin, vi povas voki forigi.
Tio estas nur alia afero vi povas fari.
Do pli ekzemplojn de aferoj kiujn vi povas fari.
Do ĉu mi povas nur meti ĝin ĉe la supro kiel tiu?
Plej juna forigi.
Se mi ĝuste ekzekuti ke JavaScript ĉe la supro de mia dosiero, faros, ke labori?
Ĝuste.
Ĉar mezo ne ekzistanta.
Do tio ne tuj funkcias.
Ekzekuto ordo.
Ĝi iras al la supro unue.
Kio?
>> Spektantaro: Benjamin ne ekzistanta?
>> JOSEPH ONG: Jes.
Benjamín ne ekzistanta.
Ekzakte.
>> Spektantaro: Vi diris mezo.
>> JOSEPH ONG: Pardonu.
Benjamín ne ekzistanta.
Kaj la alia afero estas mi ne havas inkludis la jQuery
dosiero petas skripton src.
Do tio ne tuj funkcias.
Fakte, mi ne faros tion en la sekva glito, kio estas
supozis ripari ke ĉu.
Sed la maniero ni faras ĉi estas JavaScript estas okazaĵo pelataj.
Do, kion ni faras estas ni uzas evento Traktilo por fari ĉi tiu okazi.
Kaj do mi elektu la dokumenton starigis unue.
Mi diras, OK, kiam la dokumento estas preta, mi kuros funkcio.
Do tio estas ĉio, kion sintakso rimedoj.
>> Mi selektis la dokumento.
Nun, kiam la dokumento estas preta, ruli la funkcio.
Kaj do ĉi tie kiam la dokumento estas preta, kion signifas la tutan HTML havas
ŝarĝitaj, kaj mi kuros al la funkcio kiuj forigas tiun elementon.
Kaj tiel nun, kiam mi kuros ĉi funkcio kiun mi pasis en preta, mi estas
garantiis ke la tutan HTML je la paĝo tuj ekzistas unue.
Jes.
Demandon?
>> Spektantaro: Kio estas la evento ŝlosilvorto ene de la funkcio?
>> JOSEPH ONG: Por ke okazaĵo ŝlosilvorto en la funkcio estas nur parametro kiu
gets pasita al la funkcio por ajna okazaĵo.
Estas nur ion ke vi ricevas senpage.
Kiam vi uzas klavon kodogrupo except en pset8, tiu evento povis diri al vi, ĉar
Ekzemple, kiu klavo vi premis plu.
En ĉi tiu kazo, oni pretas evento, fakte ne estas super utila.
Sed por kerna malsupren eventon, ĝi estas pli utila, ĉar vi ekkoni kiujn
Ŝlosilo vi premis alirante ŝlosilon kodo for ke okazaĵo objekto.
Korekti?
Ĉu tio havas sencon?
OK.
Jes.
Demandon?
>> Spektantaro: Do ​​vi povas meti la skripto tag suba malsupren?
>> JOSEPH ONG: Do jes.
Vi povus meti la skripto marki suba malsupren.
Sed tiam ĝi simple iĝas vere senorda.
Kaj ni ŝatas centralizi ĉiuj de nia kodo en unu loko.
Kaj tion permesos al ni plenumi gxin.
Memoru fruaj mi diris ke estas pli agrabla maniero por certigi, ke elementoj estas
sur la paĝo antaux vi ekzekuti kodon?
Kaj tiu estas nur bela vojo vi finigxi tio.
>> Spektantaro: [inaudibles].
>> JOSEPH ONG: Jes.
Vi ankoraŭ devos, ĉu ne?
Ĉar rememoru, vi inkludis la dosiero ĉe la supro de la paĝo.
Do ĝi estas tuj ekzekuti unue antaux vi atingis la fundon de la paĝo.
OK.
Do vi povas aldoni ankaŭ alian tipo de okazaĵo traktilo.
Ĉi tiu nur procesas klakoj.
Kiam mi klakas sur plej junan, tiam tio estos pop supren kun garde.
Ĉi tio estas nur malsama tipo de okazaĵo.
Fronte al la preta evento, vi nun uzi la klako okazaĵo kiam vi ricevas
Alklako sur elementon.
>> Kaj tiel en tiu kazo, memoru, la klako traktilo estas alfiksita al la plej juna.
Do tio nur okazas kiam Mi alklaku juna.
Kaj en la alia, la preta okazaĵo estis fiksitaj al la dokumento.
Do ĝi atendas la dokumenton esti preta.
Havas sencon?
Mi pensas ke mi povas pluiri.
Jes.
Demandon?
>> Spektantaro: [inaudibles].
en tiu kazo oni uzas [inaudibles].
>> JOSEPH ONG: Ho, jes, ĉar en tiu kazo, mi devas atendi ke la plej juna
ero por aperi sur la ekrano unue antaŭ ol mi povas alfiksi klako traktilo por
tio, kio estas kial mi metis gxin interne de de dokumento preta.
OK.
Kaj baldaŭ, do ĉi tiu estas granda ekzemplo de kiel vi devus kombini ĉion.
Tiu estas nur formo validigo ekzemplo vi jam vidis en prelego.
Do prenu ĝin paŝon post paŝo, kiel vi iri tra ĉi.
Kaj gxi estos plene okej.
Nur legi gxin de supro al malsupro.
>> Mi havas formularon ĉe la malsupro.
Kiam la dokumento estas preta, mi alfiksi submit traktilo al la formo, tia ke
kiam mi la formularon, mi alvenas al la valoroj ene de ĉiu el tiuj enigoj.
Kaj mi kontrolu, se ĝi estas malplena.
Se ĝi estas blanka, mi revenos falsa, ĉar Mi ne volas submetiĝi al la formo,
ĉar la formo estas malĝusta.
Se la pasvorto estas malplena aŭ ĝi estas malpli ol ok karakteroj, mi ne submetiĝi
la formo, ĉar tio estas ankaŭ malbone.
Kaj la reveno malvera nur antaŭvidas la formo de sendado kaj
irante al nova paĝo.
>> Kaj espereble, tio faras sencon.
Mi kredas vi uloj devus iradi tra tiun kodon paŝo post paŝo sur via propra.
Kaj iam vi komprenas kio estas la unuaranga elementoj kaj fari aferojn al ĝi
reale kunportas, tiu faros multe da senco por vi.
Jes?
>> Spektantaro: Kion faras la nomo = salutnomo signifi?
>> JOSEPH ONG: Do la nomo = salutnomo kaj nomo = pasvorton simple signifas rigardi la
atributo de kio ajn vi estas elektanta.
Kaj tiam kiu havas por kongrui.
Do ni iru en la registro.
Kaj poste ni rigardas ĉiuj enigoj kaj registriĝo.
Kaj tiam ni elektu unu kie la nomo atributo estas egala al uzantnomon.
Por ke unue selector nur selektu la uzantonomo enigo.
Kaj tiu dua selector nur selektas la pasvorto, ĉar tiuj havas
ilia nomo atributoj starigis kiel kio ili estas supozataj esti.
Demandon?
>> Spektantaro: Sur submetiĝo, kiel faras la malsupran parton solvi la supro parto?
>> JOSEPH ONG: Do tio estas ĉar de la eventa traktilo.
Do ni atendas por submeti okazaĵo ke gets pafitaj de la formularo.
Kaj tio estas ĉio, kio estas submetiĝi.
Kial mi vokas submit tie supre?
Ĝi diras, kiam la formo estas donita, Mi ricevas submit okazaĵo.
Do mi simple interkapti tio kaj tiam kuras tiun kodon anstataŭe.
Jes?
>> Spektantaro: Kial vi havas havi funkcion evento?
Kial vi ne povas simple [inaudibles]?
>> JOSEPH ONG: Ĉar en JavaScript, vi devas deklari la funkcioj.
Tio estas ĝuste kiel ĝi funkcias en JavaScript.
Vi devus diri ĝi okazas kuri funkcio.
Do vi diras, ke vi estas atendante funkcio ĉi tie anstataŭ
nur krispa krampoj.
>> Spektantaro: Kaj la funkcio Estas ajn sekvas?
>> JOSEPH ONG: Jes.
La funkcio estas chio ajn ene la krispa krampoj post
ke funkcio ŝlosilvorton.
Jes?
>> Spektantaro: [inaudibles].
>> JOSEPH ONG: Por submeti?
>> Spektantaro: Ne, cxar funkcio sen la evento.
>> JOSEPH ONG: Jes.
Do sen la evento, vi povas havi tiun.
Se vi ne bezonas la evento, tiam vi povas simple ellasi ĝin.
Sed se vi faras, ĉar vi nur metis ĝin tie.
Jes.
Rapida demando?
>> Spektantaro: [inaudibles].
>> JOSEPH ONG: Jes.
Pro kio vi bezonas fari, la document.ready nur diras atendu por ĉiuj
la HTML de la paĝo, por ŝarĝi unue.
Kaj kutime, vi volas, ke via elementoj en loko antaux vi kuras ĉiu kodo.
Ĉiuj pravas.
Ni devas atingi Ajax.
Ni ne havas multan tempon.
Do avantaĝojn kaj malavantaĝojn.
Javascript estas facile try skribi kun jQuery.
Sed jQuery estas speco de malrapida.
>> Estas kiel PHP estas pli malrapida ol C, ĉar ĝi estas interpretita.
Kaj jQuery estas iom pli malrapida ol Javascript, ĉar ĝi faras multajn
aferoj sub la kapuĉo.
Kaj do, se vi uzas jQuery, ĝi estas nur iom pli malrapida ol
Javascript, eĉ kvankam ĝi donas al vi belan eleganteco.
Kaj fine, Ajax.
Ĝis nun kun Ajax, vi ne vidis Ajax en terminoj de pset7 tamen, ĉar
kiam vi faros, vi submetas formo citaĵo.
Ĝi ŝarĝas novan paĝon.
Do vi ricevas tiun grandan blankan fulmilo sur la paĝo dum ke
dua paĝo ŝarĝojn, korekta?
>> Estus vere bela, se vi ne havas tiun Flash.
Kiel Facebook, se vi nur rulumu al malsupre, ĝi aldonas novan enhavon
sen refreŝigan la tuton de la paĝo.
Do io simila estus agrabla.
Ĉi tio estas JavaScript kodo sur la maldekstra flanko.
Vi akiras kio estas ene de tiu enigo.
Vi ricevas la stoko info de Yahoo!
Kaj tiam vi faras grandan ĉenon ke diras, OK, ĉi tiu estas la mesaĝo mi volas
por montri en la ekranon.
Kaj tiam vi metis tiun mesaĝon interne de iu HTML elemento kiu alvenas
montratan ĉe la ekrano.
>> Do tio estas ĉio tio, kio okazas tie.
Do esence, ĉar tiu estas la tuta JavaScript kaj vi ne bezonas kuri
plu PHP, tiu estos certigi ke la paĝo ne fortigu.
Do tiu estas nur abstrakta ideo ke mi diras ĉi tie ĝis nun.
La abstrakta ideo estas, ke se vi faros tion ĉiuj en JavaScript, vi ne havas
paĝo rekalkuli.
Sed kiel vi efektive fari tion?
>> Nu, fakte, ni parolu pri problemo kun ĉi tiu unua.
Problemo estas en JavaScript, ekzekuto estas síncronas.
Do vi devos atendi unu linio fini antaux vi
ekzekuti la sekva linio.
Kaj kio, se mi iros super al Yahoo!, kaj iliaj serviloj estas vere malrapida, kaj
ilin portas tri sekundoj por redonu al mi ke stock info?
Kiam mi trafis tiun prezon linio, se la ekzekuto estas sinkronigita, kiel ĝi estas per
Defaŭlte, kio ĝi estas ĝuste tuj fari estas Via retumilo tuj en perdo por
tri sekundoj.
Kaj vi ne tuj povos fari ion dum ĝi akiras tiun datumon.
Ĝi tuj glaciiĝas.
>> Kaj tio estas malbona.
Vi ne volas la uzanto havi glaciiĝinta retpaĝo.
Korekti?
Tio estas simple malbona.
Ĉiuj konsentas?
Se vi foliumas Facebook kaj ĝi frostas kaj oni povas fari nenion, vi
get vere frustrita.
Do la solvo estas ke ni faru ion asincrónico anstataŭe.
Do ĉio ĉi asincrónico aferon diras estas, mi tuj demandas ĉi
URL por iuj datumoj.
Kaj poste mi iros plu iri.
Mi simple tuj teni ekzekuti kion ajn kodo, kiu estis post tio.
>> Kaj tiam krom se tiu datumo estas preta, tiam Mi donos procesi ĝin.
Jen ĉio estas jene.
>> Spektantaro: Ajax nur faras kodo asincrónico?
>> JOSEPH ONG: Ĝi estas asincrónico vojo de kolektadon de datumoj.
Do la unua afero, pri Ajax Estas ĝi lasas min forpreni datumoj
de ekstera retejo.
Kaj la dua afero estas tio certigas ke mia paĝo ne en perdo dum mi estas
ricevado ke datumojn.
Tio estas la asincrónico parto de ĝi.
Ĉar ĝi pafas aliloken, ĉar mi diras, ke mi gardu okazas dum
ĝi estas ricevado ke datumojn, kiuj faras asincrónico.
Mi gardas la ekzekuti.
>> Observu do, ke asincrónico ideo en la menso.
Kaj mi montros al vi kion la diferenco estas.
La síncronas versio Estas sur la maldekstra flanko.
La asincrónico versio Estas sur la dekstra flanko.
Rigardu la numerojn por vidi kio paŝoj respondas al kio
ekzekutas je ĉiu linio.
Tie, la garde montras supren unue.
Ĉar atingi stock info de Yahoo!
portas tri sekundoj, ĝi stalojn dum tri sekundoj.
Kaj tiam garde la prezo post tiuj tri sekundoj.
>> Do nun, ke garde shows supren al tiu tempo -
tri sekundoj in
Kaj tiam ĝi avertas by post tio.
Do ĝuste iras paŝon post paŝo.
Estas kiel kion vi infanoj akceptus, korekta?
Kun asincrónico ekzekuto, vi alarmi unue.
Tiam vi iros for al tiu retadreso.
Kaj vi diras: Mi tuj nur peti la datumojn.
Kaj poste mi iros procesi ĝin poste.
Do ĝi tuj ekzekutu la sekvanta linio post kiam mi faras tiun
asincrónico peton.
>> Do oni 0,001 sekundoj, vi vidos garde hi.
Plenumu tiu funkcio, garde revido.
Kaj ĉar mi faris promeson, ke mi devus prilabori la datumojn poste, kion
okazas estas kiam tiu datumo venas reen tri sekundoj poste, tiam mi kuris ke
funkcio, kiun mi havas tie.
Jes?
>> Spektantaro: Ĉu vi povas specifi aŭ klarigi kion Ajax signifas?
>> JOSEPH ONG: Do Ajax estas maniero ke, se mi bezonas datumoj kiam mi estas sur retpaĝo kaj mi
ne deziras refreŝigi la paĝon, tiam Mi uzas tiun teknologion nomata Ajax.
Tio esence nur signifas, iru, alportu al datumoj de alia retejo.
Kaj faru tion en maniero kiu nur ne en perdo de mia retpaĝo.
>> Spektantaro: Tiel estas, ke imanenta parton de JavaScript aŭ jQuery?
>> JOSEPH ONG: Do iu skribis manieron fari tiu en JavaScript longe.
En momento, ĝi ne ekzistas.
Kaj tial iu elpensis tiun teknikon por permesi homoj por peti ĉi datumoj
en ĉi tiu maniero.
Kaj ili skribis iujn stuff kaj faros al vi.
Kaj jQuery simple donas al vi tiun tre bela maniero por fari tion
kun tiu $. get funkcio.
demandojn?
Mi povas respondi demandojn pri Ajax poste ankaŭ.
Mi estos tie.
>> Do ni ni elirigu por datumoj sen refreŝigan la paĝo.
Kaj ni ni faru tion en an asincrónico maniero kiu
ne glaciiĝas la paĝo.
Tro longa, ne legu se tiu ekspliko estis tro longa por vi.
Do fine, kruco-ejo skripta atakoj.
Ni vidis tion kun Zamyla.
Se en mia datumbazo iu havas tiun nomon, kio estas ĉi tiu skripto etikedon, kaj mi
havi iom da kodo sur mia paĝo ke printaĵoj el popola nomoj en vico, aŭ mi havas
iuj JavaScript kodo kiu enmetas tiu nomo en la pagxo,
kio HTML gets produktitaj?
Nu, mi presi la HTML-etikedo.
Mi presi cxiujn tiujn etikedojn.
>> Mi alvenas al la parto kie mi estas pres ekstere kun miaj amikoj.
Mi presi Lauren eksteren.
Ĝi presas Milo eksteren.
Kaj tiam mia nomo en la datumbazo estas skripto posteno
unflattering Facebook statuso.
Ĉar mi enmetitaj tiu enen la paĝon ĉar ĝi aspektas kiel JavaScript, kiam
ĉi paĝo gets sendita al la uzanto, ĝi gets ekzekutita kiel JavaScript.
Kaj tiel tio estas, kion ni nomas kruco-ejo skripta atako.
Iu metas malican informoj en via datumbazo kiu povus respondi al
kelkaj aldonaj kordoj aŭ iuj JavaScript kordo.
>> Kaj kiam gets presita ekster la paĝo en ĉi tiu maniero, do kio
okazas estas ke malbona kodo gets ekzekutita ke mi ne intencis
por ĝi get ekzekutita.
Kaj jen ĉio kruco-ejo skripta atako estas.
Kaj la vojon vi ricevas ĉirkaŭ ĉi tio estas kiel Zamyla diris.
Vi nur enpaki aĵojn en HTML specialaj signoj.
Kaj ĉi HTML specialaj signoj estas PHP- funkcio kiu evitos koncerna varo
aferoj okazas al vi se vi havas malican
kordo en via datumbazo.
Ĝi simple eskapas ĝin, tiel ke ĝi ne get interpretita kiel HTML.
Ĝi anstataŭas la eta krampoj kun kio ni nomas entoj.
Kaj ni transiris ĉi en prelego tro.
Do mi opinias ke vi knaboj devus havi bonan komprenon pri tio.
Demandojn?
Jes.
>> Spektantaro: Do ​​kiel farus la [inaudibles]?
>> JOSEPH ONG: Diru tion denove.
>> Spektantaro: Kiel la monitoro -
>> JOSEPH ONG: Ĝuste.
Do vi havas iun kiu diras, kiam Mi enskribis, tajpu en mia nomo.
Mi simple tajpi en tiu kampo, mia nomo estas deprenis post unflattering Facebook
statuso proksime skripto etikedo.
Kaj tio nur gets meti en la datenbazo, ĉar mi ne povas diri ke iu
en la mondo ne havas nomon per maldekstra sagon en ĝin aŭ la
vorto skripton en ĝi.
Tio vere ne havas sencon.
Do mi simple devas certigi, ke mi sanitize la vazaro antaux Mi presi gxin
eliru al la paĝo.
>> Spektantaro: Do ​​la HTML specialaj kartoj malhelpas la skripto etikedoj?
>> JOSEPH ONG: Jes.
Do tio ne malhelpas la skripto etikedojn.
Ĝi nur certigas ke la skripto etikedoj ne ricevas
interpretita kiel HTML aŭ -
yeah.
Tio simple venas supren kiel kio gxi vere estas.
Ĉiuj pravas.
Tiel estis la kvizo revizio.
Cool.
>> [Aplaŭdo]