>> R.J. Aquino: Hebu tu kuanza.
Hivyo hii ni Quiz 1.
Hapa ni baadhi ya habari ngazi ya juu.
Kuhusu ukurasa kwa jaribio ni wakati huu URL, tena CS50.net, pamoja na kwamba
bado kazi.
Ni CS50.harvard.edu/quizzes/2013/1.
Ni kubwa Kuhusu ukurasa, nawaambia wapi na wakati, yaani Jumatano ijayo
katika kundi la vyumba.
Na kwa Jumatano ijayo, mimi maana siku mbili kuanzia sasa.
Habari hii yote ni huko.
Lakini ni nyongeza.
>> Kwa hiyo kila kitu kutoka nusu ya kwanza ya mwaka ni uwezekano wa juu ya jaribio,
kwa sababu unaweza si kweli kufanya juu mambo katika C bila kama hali na
kwa loops na kadhalika.
Lakini kutakuwa na msisitizo juu ya vifaa kufunikwa tangu Quiz 0,
kuanzia na structs na Picha I / O. Ni kawaida zaidi
changamoto kuliko Quiz 0.
alama ya wastani ni kawaida ya chini.
Kusoma kwa bidii.
>> Wakati wewe ni kusoma, kuwa na uhakika wa kutumia CS50/discuss baada ya maswali yako
na kusoma maswali ya watu wengine.
Hivyo kama huna maswali yoyote, kuingia katika na kusoma
maswali rafiki yako.
Wao ni pengine maswali mazuri.
Na kuchukua Quizzes mazoezi.
Tumekuwa kutoa Quizzes kwa saba au miaka minane sasa.
Wao ni wote online.
Maswali baadaye ni sawa kwa maswali ya zamani.
Hiyo ni jinsi sisi kufanya nao.
>> Jaribio haipo bado.
Hakuna hata mmoja wetu tumeona.
Lakini itakuwa kuangalia kama uliopita Quizzes.
Kwa ajili ya kikao tathmini hii, hii si orodha kamili ya mada.
Huwezi kuhudhuria hii na kisha kikamilifu tayari kwa jaribio.
Vinginevyo, itakuwa ni kwamba sehemu kubwa ya jaribio.
Na hii pia ni si lazima kila kitu unahitaji kujua kuhusu yoyote
kutokana na mada.
Ni maana ya nje wewe mambo tumekuwa kufunikwa, kuwakumbusha nini sisi
kufunikwa, na njia ambayo sisi kufunikwa.
Lakini utakuwa na kwenda mbali zaidi na zaidi wakati kujifunza kwa mara mbili-check
kwamba unajua kila kitu kuhusu wowote mada na kwamba umefanya kujazwa katika
pembe wote waliokuwa kufunikwa katika hotuba.
>> maelezo jaribio kukuambia kwenda kwa maelezo, mwandishi, kuangalia hotuba video.
Hiyo ndiyo njia nzuri ya kuhakikisha wameweza kufunikwa besi yako yote.
Hivyo kupata kuanza, wakati mimi alifanya haya slides, mimi alijaribu kuweka ambapo nimeona
habari.
Hivyo kwa File I / O, kwa mfano, Wiki 7, Jumatatu hotuba, na posted
Sehemu ya 6 na kuweka tatizo wote wana taarifa kuhusu File I / O. Nimekuwa kufanyika
hii kwa kila mada.
Hivyo slides wale cheo inaweza kuwa na manufaa na wewe.
>> Kwa hiyo hapa tuna File I / O. Kumbuka, katika Tatizo Kuweka 5, tulikuwa fopen, fclose,
fwrite, fread, na fseek.
Baada ya zinalipwa 30ish JPEGs na kuwa resized na messed na
bitmaps, unapaswa kuwa na pretty ukoo kwa kazi hizi
na jinsi kazi.
Kama wewe ni tena utambuzi, dhahiri tathmini yao.
Na kuhakikisha kuelewa nini hoja mbalimbali ni,
wakati wao ni kutumika.
>> Lakini kawaida mende file-kuhusiana unaweza kuulizwa kuhusu -
vizuri, kama tumesahau kuangalia kama fopen kweli kazi kabla ya kwenda
kurekebisha faili.
Hiyo inaweza kuwa mbaya.
Kama umefanya wamesahau fclose file kwamba umefanya fopened, hiyo ni sawa na
kumbukumbu leak.
Hiyo ni pretty mbaya.
Na kusahau kuangalia kama wameweza kufikiwa mwisho wa file kabla ya
kuanza kuandika hiyo.
>> Hivyo kama wewe kusema, hey, mimi nina katika mwisho wa faili.
Nipe 5 ka zaidi.
Naam, kwamba pengine si kwenda kazi nje ya njia wewe kutarajia.
Hiyo ni kweli ni kwa File I / O, kwa sababu sisi alifanya hivyo sehemu kubwa ya
na kuweka tatizo.
Hivyo kama wewe kuelewa nini kinachoendelea katika kuweka tatizo 5, kumbuka bitmats
na JPEGs, basi wewe ni pengine wote kuweka kwa File I / O. Kama hiyo ni kidogo
fuzzy, dhahiri kupitia tatizo kwamba kuweka na vifaa kuhusishwa.
>> Structs walikuwa mada waliokuwa juu ya line kati ya Quiz 0 na Quiz 1.
Je, si kabisa kufanya kata kwa Quiz 0.
Basi utakuwa dhahiri kuwa juu ya Quiz 1, Wiki 7, Jumatatu.
Ni struct nini?
Hapa sisi kuonyesha struct.
Ni kama aina mpya.
Ni kama chombo kwa ajili ya mashamba nyingi.
>> Katika kesi hiyo, tumekuwa alitangaza struct mwanafunzi ambayo ina mashamba mawili -
kamba kwamba sisi ni wito jina na int kwamba sisi ni wito umri.
Hivyo wakati mimi kupita kote wanafunzi au mimi kurekebisha wanafunzi, mimi utakuwa na uwezo wa
kupata majina yao na umri wao.
Hebu tuangalie baadhi ya kanuni kwa ajili hiyo.
Hapa tunaona kwamba nimepata alitangaza mwanafunzi s, kama
Mimi kutangaza variable yoyote -
int x, y int, nakadhalika.
>> Hapa ni mwanafunzi s.
Yeye kuanza na kitu katika mashamba yake.
Basi hebu kuweka yao.
Kuweka mashamba ya struct na dot.
Hivyo nimekuwa alisema hapa kwamba s.name = RJ.
Na s.age = 21.
Unaweza pia update mashamba njia hiyo utaweza kuboresha
thamani ya kutofautiana.
Hivyo nataka kubadili jina langu kutoka RJ na hakuna vipindi kwa R.J. yameandikwa
njia sahihi.
Itakuwa s.name = RJ, sawa kama sisi alisema awali.
Na kisha unaweza kuzipata.
>> Hivyo tumekuwa kuweka yao.
Tumekuwa updated yao.
Unaweza pia kupata yao katika njia hiyo hiyo.
Hivyo hapa, mimi nina uchapishaji nje R.J. Ni umri wa miaka 21.
Na mimi nina kupata maadili hayo na s.name na s.age.
Hivyo hiyo kupata structs na dot nukuu.
Yep, swali?
>> Watazamaji: Je, kuna sababu juu ya slide uliopita kwamba hakuwa na kuweka
mwanafunzi wa line ya juu, kama typedef struct mwanafunzi na kisha
mwanafunzi mwishoni?
>> R.J. Aquino: Kwa hiyo swali lilikuwa, juu ya slide hii, tumekuwa kawaida kuonekana
typedef struct node na kisha mashamba ya struct na
kisha neno nodi.
Na jinsi ya kuja hapa mimi hakusema, typedef struct mwanafunzi na kisha
mashamba ya struct na kisha mwanafunzi?
Sababu ni kwamba mimi hawana haja ya kupata hiyo ndani ya struct.
Hivyo ni sawa na kuondoka bila jina.
Siwezi kuondoka tu kama bila majina struct.
>> sababu sisi kufanya hivyo kwa orodha wanaohusishwa na mambo ni kwa sababu ndani unahitaji
rejea struct nodes nyota.
Hivyo struct ina kuwa na jina, hivyo unaweza kupata baadaye.
Ni undani madogo.
Lakini utasikia kawaida kuona typedef struct braces curly kama huna haja ya
jina na typedef struct baadhi jina ikifuatiwa na braces curly kama wewe
haja jina.
Hivyo kwamba ni swali zuri.
>> Na juu ya hatua hiyo, sisi huwa na kurekebisha structs na kupita kote structs na
rejea, si kwa thamani.
Hivyo tutaweza tu kupita kote kuyatumia kwa structs badala ya kupita karibu na
structs wenyewe.
Hivyo wewe ni mara nyingi sana kwenda kuwa kutumia, katika kesi hii, mwanafunzi * au
* node struct au nodi * badala nje ya wanafunzi au nodes.
Hivyo hapa, nimekuwa alisema, OK, variable PTR ni kwenda kuwa pepe ya s.
Ni kwenda kuwa pointer kwa mwanafunzi R.J.
>> Ili tuweze kupata katika mashamba hayo sawa na sisi kupata kitu chochote.
Kwanza, ID kumbukumbu pointer kupata struct.
Hiyo ni * PTR na kisha dot na kisha umri.
Hivyo kupata shamba, na nimekuwa updated sasa 22, kwa sababu, hebu
kusema, ilikuwa ni siku ya kuzaliwa yangu.
Kuna syntax njia ya mkato kutumia mshale hapa.
Hivyo PTR arrow umri ni sawa na * ptr.age.
Sasa, hiyo ni kitu itabidi kukariri na kukumbuka.
>> Unaweza kutumika ni mengi katika pset6, Speller pset.
Lakini hii ni kweli nini kinaendelea juu ya chini ya Hood.
Ni dereferencing pointer na kisha kupata huduma hiyo.
Swali?
>> Watazamaji: [inaudible].
>> R.J. Aquino: Basi kwa nini ni sisi kutumia kuyatumia kama structs badala ya
structs wenyewe?
sababu itakuwa kama wewe ni kupita struct kazi, pengine
unataka kupita karibu tu 4 au hivyo ka kwamba kuwakilisha pointer, kama
kinyume na uwezekano wa 30 au Ka 40 ambayo ni struct.
Hivyo kupita kitu kazi ni rahisi zaidi wakati kitu
ni ndogo katika muda mfupi.
Swali?
>> Watazamaji: Unaweza kuwa zilizotajwa hii katika mwanzo, lakini kuna
slides nyingine juu ya [inaudible]?
>> R.J. Aquino: slides hawa watakuwa baada ya mapitio kikao.
Tutaweza baada yao kwenye tovuti.
Hivyo kuhama na kuhamia kwenye kidogo kasi, sisi ni kwenda kuzungumza kuhusu data
miundo.
Kuna mengi.
Sisi kufunikwa rundo la yao.
Hapa ni nini wanapaswa kuelewa juu ya muundo wa data.
>> Lazima kweli kuelewa wakati high ngazi nini kila muundo ni.
Je, unaweza kuelezea kwa Kiingereza yako rafiki kwamba hana CS50 jinsi
sisi ni kuandaa data zetu na kwa nini tunatarajia kutumia kitu kwa njia hii?
Hilo ni jambo moja.
Kitu mbili, kuelewa utekelezaji.
Hivyo kuelewa jinsi ya kutumia mambo haya katika C. Na tutaweza kwenda juu ya hili.
>> Na kisha kitu tatu itakuwa kujua mara kukimbia na mapungufu ya
miundo mbalimbali unatumia.
Hivyo kuelewa ni kwa nini ungependa kutumia hash meza badala ya safu.
Kuelewa jinsi ya kufunga, kwa wastani, kupata meza hash ni.
Kuelewa nini shughuli ni ya kufunga juu ya orodha wanaohusishwa lakini polepole juu ya arrays na
kinyume chake.
Hivyo kuelewa kwamba, itabidi kuelewa Big-O nukuu tu kujua
jinsi ya kuzungumza juu ya haya aina ya mambo.
Na tutaweza kuzungumzia suala hilo.
>> Kitu hivyo kwanza, wanaohusishwa orodha.
Hapa ni kiwango cha juu cha picha orodha ya uhusiano.
Sisi kuonyesha hili darasani.
Sisi kawaida na watu 10 amesimama juu ya hatua.
Lakini sisi kuwa na mlolongo wa nodes ambapo kila node ina baadhi ya thamani na pointer
kwa thamani yake ya pili.
Hivyo kupata kutoka node moja kwa ya pili, kusema tu, nipe node ijayo.
Una kwamba nodi.
Nipe node ijayo.
Una kwamba nodi.
Nipe node ya pili na kadhalika mpaka hakuna kushoto nodi.
>> Hivyo kuendelea kuzungumzia kuhusu katika ngazi ya juu.
Ni rahisi sana kwa kuingiza mambo katika orodha wanaohusishwa.
Kama huna huduma ya juu ili, unaweza tu kushuka
haki katika mwanzo.
Hiyo ni mara ya mara kwa mara.
Lakini ni vigumu kupata thamani.
Kama wewe ni kujaribu kuuliza, ni saba katika orodha yangu?
Una kwenda kwa njia ya kila thamani moja.
Je, hii ni saba?
Tena na tena.
Na kwamba O (n).
Hivyo wakati kusoma kwa jaribio, kulinganisha na arrays.
>> Ni kwamba OK?
taa akaenda dim.
OK.
Wakati ni orodha wanaohusishwa bora?
Wakati ni safu bora?
Hivyo basi tuangalie baadhi ya kanuni.
Hapa ni node uwezo.
Ni struct.
Ina int n, ambayo itakuwa thamani yetu.
Na ina struct nodi * ya pili, ambayo ni pointer yetu node ijayo.
Hivyo hapa, tunaweza kuona kwamba sisi kilichotokea kuwa na kuweka int katika node yetu.
Lakini kama hii walikuwa orodha wanaohusishwa ya char nyota au orodha wanaohusishwa ya ikifungwa, sisi
kabisa inaweza kufanya hivyo pia.
>> Kumbuka katika pset6, pengine alikuwa wanaohusishwa orodha ya nyota char au tu
tuli char arrays.
Hebu tuangalie hapa katika utendaji.
Hivyo tunataka kuingiza mpya n katika orodha yetu wanaohusishwa.
Sisi kuanza nje na kichwa pointer kwamba ni pointer kwa node hii ambayo ina
thamani ya n na ya pili ya pointer kwamba pointi node hii ni thamani ya
n na ya pili ya null, kwa sababu ni node mwisho.
Hivyo kwa maslahi ya wakati, mimi kuweka code yote juu ya screen.
Na tutaweza kutembea kwa njia yake mistari michache wakati huo.
>> Hivyo hapa ni code.
Natumaini ni someka.
Jambo la kwanza sisi kufanya ni sisi malloc node mpya.
Hivyo inafanya pointer kwa node mpya ambayo haina kabisa kuwa na kitu chochote kuweka
ndani yake bado.
Sisi kuangalia kuhakikisha kwamba node mpya siyo null.
Vinginevyo, sisi na kutoa up.
Hivyo kuwa checked kwamba, sisi sasa kuweka maadili katika node.
Hivyo sisi kuweka n mpya katika n uwanja wetu.
Na sisi kuweka pointer ijayo kwa uhakika na kichwa ya awali, hivyo kwamba tunaweza
sasa kuwa kuingizwa hii nodi katika orodha yetu.
>> Hatimaye, tuna kimataifa kichwa hatua nodi wetu mpya, ili kama tulikuwa
kuanza saa kichwa, tunataka kuwa wakati huu node mpya ya kwanza badala ya
zamani kwanza kwenye vituo maalum.
Na wakati kazi hii exits, variable mpya wa nodi unafanya haipo tena,
kwa sababu ilikuwa mitaa kufanya kazi.
Hivyo hii ni hali ya dunia.
Kichwa wetu wa kimataifa anazungumzia wetu mpya node kwanza, ambayo pointi wetu
node ya awali kwanza, ambayo pointi nodi baada ya hapo.
>> Hiyo ilikuwa ni kuingizwa.
Natumaini kwamba ulikuwa na moja kwa moja kwa kufuata.
Wakati katika shaka, kuchora picha.
Basi, mimi kujua kwamba kuzungumza juu ya orodha ya wanaohusishwa na kuangalia
code ni sana si kusaidia.
Wakati kuangalia picha ya wanaohusishwa orodha inaruhusu mimi nadhani, oh, hivyo
Mimi na node hii hapa.
Lakini kama mimi update kwamba pointer, mwisho juu disconnected.
Na mimi tumesahau ambapo node unaendelea.
Na kanuni exits.
Na una nodes nyingi kwamba ni kukatika.
Na huna kuishia na orodha unataka.
>> Hivyo kama wewe kuchora picha na kufanya hivyo hatua kwa hatua, hopefully, utaona
mpangilio sahihi ya mambo katika suala la kuhuisha kuyatumia ili kuhakikisha
kwamba orodha huja pamoja.
Insert ni rahisi.
moja ngumu zaidi itakuwa kuingizwa katika orodha Iliyopangwa.
kazi ngumu zaidi ni kufuta na kupata, hivyo kutafuta njia ya orodha ya
kuona kama kitu ni huko.
Labda alifanya hii katika pset6 wakati got katika hash meza yako na wewe alisema,
vizuri, ni neno apple katika orodha yangu wanaohusishwa?
>> Hivyo unaweza kuwa tayari aliyefanya hivyo.
Lakini dhahiri, mahitaji kumbukumbu yako na kujaribu reimplement kupata na
reimplement kufuta kwa orodha wanaohusishwa.
Furaha upande note, kuna pia doubly-wanaohusishwa orodha, ambapo una
kuyatumia kwamba uhakika wote mbele na nyuma, ili kwamba unaweza kwenda
node ujao na node uliopita.
Basi, kulikuwa na swali juu ya mwaka jana Jaribio wa aina hiyo, kuzungumza
kuhusu doubly-wanaohusishwa orodha.
>> Sasa, hiyo ni muundo kwamba wewe ni kiasi ukoo na, kwa sababu wengi
ya pengine kutumika yao juu ya pset6.
Hapa ni moja hiyo ni kidogo chini ya ukoo.
Kama upande note, nadhani kwamba Quiz 1 ni kimsingi ngumu kuliko Quiz 0, kwa sababu
mambo wewe ni kufanya, unaweza hawajafanya kama sana.
Kuweka kwamba njia nyingine, kwa Quiz 0, ungeandika mengi ya C. Na sisi
aliuliza juu ya C.
>> Kwa Quiz 1, tunakwenda kuuliza kuhusu PHP na JavaScript, ambayo
si imeandikwa kama mengi ya.
Tunakwenda kuuliza kuhusu C-kificho kwamba wewe si imeandikwa kama mengi ya,
hii C mambo ya juu.
Hivyo dhahiri, mazoezi mambo sisi kuongelea katika hotuba kwamba
haikuwa lazima kufanya juu ya kuweka tatizo.
>> Akizungumza ambayo, wewe si imeandikwa stack juu ya kuweka tatizo.
Lakini ilikuwa katika hotuba.
Hapa ni kiwango cha juu cha picha ya mwingi kwamba sisi kuonyesha kila mwaka.
Ni mkusanyiko wa trays katika Mather dining hall.
Katika ngazi ya juu, mwingi ni mwisho katika, kwanza nje ya muundo data.
Hiyo ina maana utaenda kuweka mambo katika -
1, 3, 7, 12, 14, hasi 0.
jambo moja sikuweza na alisema - hasi 3, 0.
Kuweka mambo hayo yote in
Na moja ya mwisho ya kuweka katika ni mara ya kwanza moja ambayo inaenda kutoka nje.
>> Hivyo kuwa na shughuli mbili -
kushinikiza na pop.
Yote ya kuweka katika kwamba mimi ni gesturing kama hii ni kushinikiza.
Na kisha wakati mimi kufikia katika kunyakua kitu au kufikia juu kwa kunyakua
kitu, kwamba pop.
Hivyo sisi ni kwenda kutekeleza mwingi.
Na sisi kuwaonyesha katika hotuba kutumia arrays.
Lakini unaweza kufanya nao kutumia orodha wanaohusishwa.
stack ni data dhana muundo, si kama
utekelezaji maalum moja.
>> Hivyo gani ili kuangalia kama?
Itakuwa kuangalia aina ya kama hii.
D na integer kawaida.
Na wewe d kuwa safu ya maadili ambayo sisi ni wito trays, kwa sababu hiyo
nini picha ilikuwa kwa ajili ya sisi - int trays -
na kisha baadhi uwezo wa kiwango cha juu.
Hivyo gani kushinikiza kuangalia kama?
Naam, kama sisi na stack, basi kushinikiza kitu kwenye s, tunataka kupata
ukubwa wa s.
Na kwamba itakuwa ijayo doa wazi ya safu yetu.
Hivyo kama sisi na mambo matatu katika stack yetu, kisha trays 3 itakuwa ijayo
doa wazi, kwa sababu 0, 1, na 2 tayari kujazwa up.
>> Hivyo sisi kuweka thamani katika s.trays [s.size], nafasi ya tatu.
Na kisha sisi nyongeza s.size kusema, hey, tulikuwa na mambo matatu kabla ya.
Sasa, tuna nne.
Hivyo wakati mwingine kushinikiza, wewe ni kwenda kuweka kitu ndani ya 4.
Au wakati mwingine pop, wewe kwenda kuangalia 3 badala ya 4 au chochote.
Na kisha tutaweza kurudi kweli kwa kusema, hey, sisi wamefanikiwa.
Hii kazi.
Kama utawala wa thumb, kama kazi hiyo ni wanatakiwa kurudi kweli au
uongo daima anarudi kweli, unaweza wamefanya kitu kibaya.
Hivyo gani kazi hii?
>> Naam, ni kazi nzuri kwa ajili 1, na 2, na 3, na 4, na tano.
Lakini hebu sema mimi kufikia uwezo wangu.
Nimekuwa kisha kukimbia katika tatizo, kwa sababu kama kawaida ni sawa na uwezo, mimi nina
sasa ni kujaribu kuweka kitu ndani ya safu ambapo sina nafasi.
Hivyo kuangalia short kurekebisha hii.
Kama s.size == uwezo, kurudi uongo.
Vinginevyo, kwenda na kufanya sisi alivyofanya.
Hivyo kile kingine tunaweza kuuliza kuhusu kwa mwingi?
Nini kingine unapaswa kujifunza?
Nini kingine unapaswa mazoezi?
>> Naam, utekelezaji wa pop.
Sisi tayari alifanya kushinikiza.
Mimi itabidi kurekebisha hiyo.
utekelezaji mashirika yasiyo ya safu, ambapo matumizi ya orodha wanaohusishwa, labda.
utekelezaji mashirika yasiyo ya int.
Sisi tulikuwa ints hapa.
Lakini inaweza kuwa ikifungwa.
Mimi naweza kuwa masharti.
Ni wangeweza nyota char.
Angalia mambo yaliyopita ya Quizzes kwa aina ya maswali tumekuwa kuulizwa kuhusu mwingi.
>> Mimi itabidi kusema kwamba sisi kufunikwa mwingi karibu sawa na tumekuwa kufunikwa yao katika
miaka ya nyuma.
Kwa hiyo, maswali jaribio lazima kuwa ni dalili nzuri.
Kusonga mbele hata kwa kasi, foleni.
Wao ni kama mwingi.
Lakini wao ni kwanza, kwanza nje.
Kama wewe ni Uingereza, neno foleni pengine alifanya mengi ya maana na wewe.
Vinginevyo, unaweza kuwa na habari ya tukio hilo kama line.
Wao kazi kama line katika duka la Apple.
mtu wa kwanza kuonyesha hadi saa 3:00 asubuhi ni mara ya kwanza
mtu kununua iPad yake.
>> Hivyo tuna shughuli mbili -
enqueue na dequeue.
Enqueue unaweka mtu katika line.
Dequeue pulls kwanza mtu off line.
Tena, tunaweza kutekeleza hii kwa safu.
Kwa hiyo kile ni struct sisi ilionyesha katika hotuba?
Ilikuwa ni hii moja.
Tena, idadi.
Tena, ukubwa na hii mpya kitu mbele.
Kwa nini kuna kitu kinachoitwa mbele?
Ni index ya pili hiki kwa dequeue.
Ni ndani tu kuweka wimbo wa guy kwanza kuonyesha juu, hivyo kwamba sisi
unaweza kuvuta ni nje wakati tunahitaji.
>> Dhahiri kuangalia maelezo ya hotuba na kujaribu kutekeleza enqueue na dequeue
wakati kusoma kwa jaribio.
Mambo muhimu kufikiria.
Kumalizika kwa mpango wa karibu kama mbele pamoja na ukubwa mwisho juu kubwa kuliko uwezo.
Tena, kama mfumo wako ni kamili, utaenda kuwa na tatizo.
Hash meza umefanya kuona mbele.
Wengi wenu pengine kutekelezwa haya juu ya pset6.
Ni muundo ambayo ina lengo la kwa O (1) wakati mara kwa mara kuingizwa na O (1)
mara kwa mara wakati chaguo-msingi.
>> Katika CS50, sisi kutekelezwa hii kama safu ya orodha wanaohusishwa.
sehemu muhimu kwa meza hash ni hash kazi.
Hivyo ni waongofu mchango wako, hebu sema, kamusi neno, katika idadi,
ambayo ni kwenda kuwa index yetu.
Na tutaweza kutumia index katika safu yetu.
Hivyo hapa ni cute picha kidogo kutoka study.50.net.
Sisi kutupa maneno yote ndani ya hash kazi yetu.
Na heshi inatuambia mahali pa kuweka maneno haya.
>> Hii yote ni kubwa katika nchi ambapo kuna neno moja tu kwa kila yanayopangwa.
Lakini kama unakumbuka kutoka pset6, kuna ni zaidi ya maneno inafaa.
Hivyo kile kinachotokea wakati kupata mgongano?
Badala ya kuhifadhi thamani moja katika, hebu sema, hash meza 3, wewe
kuhifadhi orodha wanaohusishwa.
Na hivyo badala ya kuwa tikiti maji hapa, ingekuwa orodha wanaohusishwa,
ambapo node kwanza ni tikiti maji.
Na node ya pili ni paka.
Na node ya tatu ni mgongano, hebu kusema, kwa sababu maneno haya yote kuanza
na C.
>> Kwa hiyo wengi alifanya hivyo kwa pset6.
Kama hakufanya meza hash juu ya pset6 na jaribio kitu kama
trie, dhahiri kupitia meza hash.
Kama hakuwa kufanya hivyo kwa pset6, dhahiri kupitia meza hash.
Na kama wewe alifanya hivyo kwa pset6 na ilivyokuwa si kufanya kazi nje ya haki kabisa na wewe
alikuwa na mengi ya shida na hayo, dhahiri kupitia meza hash.
Somo kwa kweli ni dhahiri kupitia meza hash.
>> wachache kubwa ya walijaribu nje anajaribu juu ya pset6.
Kiwango cha juu cha picha.
Ni kitu kama hii, ambapo kila node ina seti ya watoto, ambapo kila
mtoto sambamba na barua.
Na kila node pia anasema, hey, mimi neno.
Hivyo katika mfano huu, neno Maxwell, kama wewe kufuata M kwa A kwa
X-W-E-L-L na kisha kufuata moja zaidi.
Na kupata alama hii, delta, ambayo sisi tumeni ujumbe kwa maana hii ni neno.
Hivyo Maxwell ni neno.
Delta Hizi ni katika akionyesha Hayo ndiyo mambo ambayo ni maneno na ambayo
mambo si.
>> Hivyo katika pset6, data sisi kuhifadhiwa pamoja na yoyote ya nodes yetu ilikuwa "Mimi ni
neno. "Na jambo zuri kuhusu inajaribu ni wao kuonyesha kuingizwa na
Luke katika O (urefu wa neno).
Hivyo tu kupata njia ya Maxwell, ni M-A-X-W-E-L-L. Hivyo saba au nane -
Siwezi kuhesabu -
hatua ya kupata hadi mwisho na kuangalia mambo ya nje.
Utekelezaji Hivyo haraka hapa.
Rob akaenda kwa njia ya uhusiano orodha katika postmortem yake.
Ili kuangalia kwamba nje.
Sorry.
Akaenda kwa njia ya trie katika postmortem yake.
Ili kuangalia kwamba nje.
>> Lakini kimsingi kuwa kila nodi ina 27 kuyatumia kwa nodes ya pili na moja
Boolean kwa mimi neno.
Angalia postmortem Rob kwa ajili ya jinsi hii kwa kweli ni kutekelezwa.
Muundo wa mwisho wetu, miti yetu na miti binary search.
Hivyo kuangalia haya, haya walikuwa kufunikwa hivi karibuni Wiki 8, Jumatatu.
mti ni sawa na trie, ila wewe si lazima kuwa 27 nodes katika
kila hatua.
Na huna data hii katika kila hatua hiyo kunaashiria kama -
njia haijalishi.
Wakati trie, njia kutoka juu ya chini, Maxwell, ni muhimu kwetu.
>> Lakini kila nodi ina nyingi watoto, pengine.
Tuna baadhi ya msamiati zaidi.
mizizi ya mti ni saa ya juu sana.
Na sisi kusema kwamba bottommost sana nodes kwamba hawana
watoto ni majani.
Hivyo kama trie, mti ni muundo wa nodes.
aina ya kawaida ya mti kwamba tunakwenda kuzungumza juu ya ni binary mti, ambapo
kila nodi hana watoto au mtoto mmoja au watoto wawili.
Hivyo picha hii hapa ni si mti binary, kwa sababu
node 3 ana watoto watatu.
>> Lakini kama tulikuwa kupuuza wale, wengine yake ni mti binary kwa sababu
inaonyesha mali kwamba kila node ina zero, moja, au watoto wawili.
Hivyo ni jinsi gani sisi kueleza hii katika kanuni?
Tunaweza kuwa na node ambapo kila node ina integer ndani yake, kama vile
kama pointer kwa mti upande wa kushoto na pointer kwa mti juu ya
haki, hivyo watoto wawili.
Jinsi hii ni muhimu?
Naam, kama sisi kufanya sheria kuhusu ambapo sisi kuweka nodes, tunaweza kufanya search kwa kasi zaidi.
>> Hivyo kuna dhana ya search binary mti, ambapo nodes yote juu ya
kushoto subtree na thamani ndogo kuliko node sisi ni kuangalia.
Na nodes yote juu ya subtree haki kuwa na thamani kubwa
kuliko mzizi wa nodi.
Sasa, kwamba inaonekana kama mengi ya maneno.
Mimi nina kwenda kuweka ndani ya mara mbili quotes na kuonyesha picha.
Hivyo hapa ni mfano wa binary search mti.
Kuona kwamba sisi kuanza na 10.
Kila kitu upande wa kushoto wa 10 ni ndogo zaidi.
Na kila kitu kwa haki ni kubwa kuliko yake.
>> Lakini zaidi ya hapo, kila nodi katika mti linaonyesha mali hii.
Hivyo node 7 ina 3 kushoto na 9 na haki.
Hivyo wale wote ni ndogo kuliko 10.
Lakini kuangalia tu wale, 7 ina 3 upande wa kushoto wake na 9 kwa haki yake.
Na vile vile juu ya haki, 15 ina 14 upande wa kushoto wake na 50 haki yake.
Hivyo nodes tatu zaidi ya hapo, 15, 14, na 50, pia ni halali binary mti
au halali binary search mti.
Na wao uko wote kubwa kuliko 10.
Hivyo wanaruhusiwa kuwa na juu ya haki pale.
Je, kuna swali?
>> Watazamaji: Je, unaweza kukabiliana wakati una sevens mbili?
>> R.J. Aquino: Yeah.
Jinsi gani unaweza kukabiliana na maadili mbili ambazo ni sawa?
Baadhi ya miti binary search kusema kwamba kupuuza marudio, kwa sababu lengo ni
tu kusema, nimeona mambo haya ili mbali.
Baadhi ya binary miti search unaweza kusema na kuhesabu ndani ya nodi.
Wengine wanaweza kusema kuwa kila kitu kwa kushoto ni chini ya au sawa na.
Na kila kitu kwa haki ni mkubwa kuliko.
>> Ni tu unategemea nini Tatizo ni wewe kutatua.
Hivyo katika kamusi, kwa mfano, unaweza bila huduma ya juu marudio.
Ungependa kutupa nje.
Lakini baadhi ya tatizo nyingine unaweza huduma.
>> Watazamaji: Je, inawezekana kuwa na 1 upande wa kushoto wa 15, ambayo
ni chini ya 10?
>> R.J. Aquino: Hapana
Kama 14 hapa na 1, hii ingekuwa kuwa halali binary search mti,
kwa sababu kila kitu na haki ya 10 ina kuwa kubwa kuliko yake.
Na tutaweza kuona nini.
Kama katika ardhi ya kutafuta lengo langu ni kupata 14, mimi kuanza kwenye mizizi.
Basi, mimi kuangalia.
OK.
Sisi ni kwenda kuanza kwenye mizizi.
Angalia saa 10.
>> Naam, 14, lengo letu, ni kubwa kuliko 10.
Hivyo ni lazima kuwa juu ya haki.
Hii ni sawa na simu nzima kitabu kitu sisi hivyo, binary
kutafuta huko.
Lakini badala ya binary kutafuta katika safu, sisi ni binary
kutafuta katika mti huu.
Hivyo sisi ni bado kuangalia kwa 14.
Naam, 14 ni ndogo kuliko 15.
Hivyo kama ni katika mti wetu, ni lazima kuwa katika eneo hili hapa.
Ni lazima na haki ya 10 na kwa upande wa kushoto wa miaka 15.
>> Na hivyo sisi kuangalia node hii.
Na yay, tumekuwa kupatikana 14.
Mimi si kwenda kutembea kwa njia hiyo.
Lakini hapa code.
Ni kweli kiasi moja kwa moja,
kwa sababu hii ni ya kujirudia.
Nini tunaweza kuuliza wewe kufanya juu ya jaribio?
Tunaweza kuuliza wewe kuandika kanuni hii.
Tunaweza kuuliza wewe kuangalia kanuni hii na kurekebisha kanuni hii na kueleza kile
ni kufanya.
Yeah.
Swali?
>> Watazamaji: Je, slides hizi kwenda kuwa kupatikana kama walikuwa mara ya mwisho?
>> R.J. Aquino: Ndiyo.
Hivyo slides haya dhahiri kuwa posted.
>> Watazamaji: Wao ni kweli zilizowekwa sasa hivi kwenye tovuti.
David tu alifanya hivyo.
>> R.J. Aquino: slides ni sasa hivi kwenye tovuti.
Mimi itabidi pengine kiraka juu ya wanandoa wa typos mimi alibainisha na kurekebisha yao.
Lakini kuna sasa toleo kwenye tovuti.
Wengine mambo tunaweza kuuliza wewe kufanya -
kuandika kuingiza.
Kuandika toleo la usioisha ya kazi kujirudia sisi tu ilionyesha ninyi
au kuzungumza juu ya mambo haya, kama katika aya, kwa maneno, katika hukumu.
Kulinganisha mara kukimbia na kueleza nini wanataka kutumia binary
search mti kwa badala ya hash meza, kwa mfano.
>> Hivyo kuelewa miundo katika pretty kina ngazi.
Kuelewa jinsi ya kuandika yao, jinsi ya matumizi yao, jinsi ya kuzungumza juu yao.
Na wewe utakuwa na kuweka wote.
Swali?
>> Watazamaji: Wakati wewe ni kuandika binary search mti, jinsi gani unaweza
kuamua thamani nini kufanya hivyo kama mizizi?
>> R.J. Aquino: Kwa hiyo swali, ni nini thamani gani unaweza kufanya kama mizizi?
Kulingana na kanuni yako, wewe inaweza kuwa na mizizi kimataifa.
Hivyo unaweza kuwa uwezekano alikuwa katika pset6 kimataifa hash meza.
Au unaweza kupita mzizi katika kama hoja.
Hivyo hii kutafuta kazi hapa inachukua hoja node *.
Na hivyo chochote node kutokea kwa kuwa kuangalia ni moja wewe ni kutibu
kama mzizi yako wakati wewe kupita in
Na mimi nina kuweka wote.
Wale ni slides yangu.
mtu mwingine anaweza kuja wabadilishane katika mbali na mic.
>> Rob BOWDEN: Nadhani anaweza kuwa na kutafsiriwa swali kwamba tofauti.
Lakini mimi kufasiriwa kama, kama una namba 1, 2, na 3, ni jinsi gani sisi
kujua kufanya 2 mzizi kinyume na 1 au 3?
Kama sisi kufanya 2 mizizi, basi ni vizuri 1 na 3 kwa upande wa kushoto na kulia.
Lakini kama 1 ni mzizi, basi ni 1 kwa juu, 2 haki, 3 na haki.
Hivyo kwa default, hamjui nini cha kufanya mizizi.
Na kwa algorithm yoyote sisi ni wanatarajia kukupa, tu Jambo la kwanza
kuingiza itakuwa mizizi.
Au tunatarajia kukupa mti binary kwamba tayari ipo ambayo ina mizizi.
Lakini algorithms nyingine ipo kama kwamba mizizi update, hivyo kwamba kama
kuishia katika hali ambapo ni 1, 2, 3, ingekuwa moja kwa moja update kwa
kufanya 2 mzizi mpya, ili ni bado nicely uwiano.
>> ANGELA li: Cool.
Hey, guys.
Mimi nina Angela.
Na mimi nina kwenda kumaliza mbali C yetu na kisha kwenda katika baadhi ya mtandao wetu
teknolojia -
HTTP, HTML, na CSS.
Hivyo jambo la kwanza ni buffer kufurika mashambulizi.
Hivyo basi tuangalie kanuni hii.
Ni pretty rahisi.
Kuna kazi foo.
Na haina kurudi kitu chochote.
Lakini inachukua katika pointer kwa string kuitwa bar.
>> Na itakuja kutangaza hili buffer, ambayo ni tabia
safu kwamba ina inafaa 12.
Na inatumia memcpy, ambayo ni kazi ambayo nakala kutoka anwani moja
ndani ya mwingine.
Hivyo hii ni kujaribu nakala katika buffer yetu kutoka kila
bar ni akizungumzia.
Hivyo wazo lolote nini mbaya na kanuni hii?
>> Watazamaji: Kama bar ni zaidi ya C, wao itakuwa overwrite.
>> ANGELA li: Yeah, hasa.
Sisi hatuna uhakika kwamba bar ni kwenda kuwa chini ya 12.
Sisi tu alifanya baadhi idadi holela 12.
Na sisi kama, hebu matumaini kwamba pembejeo user yetu ni chini ya
Wahusika 12 kwa muda mrefu.
Hivyo katika ulimwengu bora, kama pembejeo yetu ni daima kama ilivyotarajiwa, kisha tutaweza kupata
kitu kama, hello.
Hiyo ni chini ya wahusika 12.
Ni anapata kusoma katika char c.
Na kisha sisi kufanya kitu kwa hayo.
Ni kweli haina jambo.
>> Lakini mtu malicious kufanya kitu zaidi kama hii, ambapo wao
kutupa chochote bar ni akizungumzia, itakuja kwa uhakika na hii safu kubwa
ya tu A ya.
Na hii ni njia zaidi ya 12.
Hivyo ni kwenda kwenda njia yote chini hapa ambapo kurudi
anwani kutumika kuwa.
Basi hebu kusema kazi hii inaitwa foo.
Labda foo aliitwa na nyingine kazi, ambayo aliitwa na kuu.
Hivyo wakati foo ni mbio, inahitaji kujua wapi kurudi.
>> Kama foo aliitwa na baadhi ya kazi jina lake bazi, ina kujua kwamba ni
got kwenda nyuma bazi.
Na kwamba ni nini anwani hii kurudi hapa chini ni kutuambia.
Lakini kama sisi overwrite ni pamoja na baadhi nyingine mitaani, katika kesi hii, ni
uwakilishi wa anwani katika mwanzo wa buffer hii, basi
nini hasa kinachoendelea kutokea ni kwamba badala ya kurudi nyuma na bazi,
ambayo inaitwa kazi yetu, ni tu kwenda mbele ya kanuni hii.
>> Na kama hii ilikuwa pale kwa sababu malicious hacker dude alikuja na
sindano hii, basi labda kiasi hiki ya A ni si kweli A ya.
Na ni kweli ya kificho tu kwamba mapumziko kompyuta yako au kitu.
Hivyo kuwa kujihami kuhusu aina hii ya kitu, una kamwe kudhani kwamba
pembejeo user ni baadhi ya kiasi cha wahusika.
Kwa mfano, wakati walikuwa kufanya Speller, wewe waliambiwa kwamba maneno walikuwa
kwenda tu kuwa wahusika 40 muda mrefu kiwango cha juu.
Na kwamba ilikuwa nzuri.
>> Lakini kama bado, basi ingekuwa kuhakikisha tu kusoma katika 45
wahusika kwa wakati mmoja.
Vinginevyo, unaweza overwrite buffer yako.
Maswali yoyote juu ya hilo.
Yeah.
>> Watazamaji: Je, wewe tu kuzungumza zaidi kidogo kuhusu haya?
>> ANGELA li: Sorry.
Ndiyo.
>> Watazamaji: mic ni kwa ajili ya video.
Mimi kujaribu na mradi huo.
Hi, guys.
Sup?
Basi hebu kwenda juu ya mambo kadhaa katika CS50 maktaba, ambayo tumekuwa kutumia
wote muhula, wengi wao wakiwa kupata pembejeo user.
Kama unajua, wewe ni pamoja na CS50 maktaba na kufanya tu CS50.h, ambayo
ina prototypes yote ya kazi ambayo unaweza kutumia, kama
GetString na GetInt, na GetFloat, nakadhalika.
Na kuna mstari huu moja katika CS50 maktaba ambayo amefafanua kamba, ambayo
nyie wote tunajua kwa sasa ni tu char *.
>> Lakini hebu kuchukua Peek katika jinsi GetString kazi.
Hili ni toleo la abridged sana.
Unaweza kuvuta up files CS50 maktaba kutoka, nadhani, manuals.CS50.net.
Na unaweza kusoma kwa njia ya kazi halisi.
Lakini hii inashughulikia baadhi ya sehemu muhimu.
Hivyo tumeunda baadhi buffer pamoja na baadhi ya uwezo.
Na nini cha kufanya ni sisi kupata tabia moja kwa wakati mmoja kutoka kiwango n.
Hiyo ambapo pembejeo user Nakala katika console.
>> Na hivyo sisi ni kwenda kusoma katika tabia ya muda mrefu kama siyo mpya
line na si mwisho wa file, ambayo ni mwisho wa pembejeo kiwango.
Na kwa kila tabia ya kuwa sisi kusoma katika, kama kwamba tabia ya mwisho juu ya kuongeza
kwa idadi ya wahusika tumekuwa kusoma katika na ambayo ni zaidi ya uwezo wetu,
kisha nini cha kufanya ni sisi tu resize wetu buffer ili mara mbili kwa muda mrefu.
Hivyo tena, hii kulinda dhidi ya buffer mashambulizi ya kufurika, kwa sababu kusoma katika
tabia ya wakati huo.
Na kama katika hatua yoyote kusoma katika pia wengi, tu kupanua buffer yako.
Wewe kuzidisha ni kwa mbili.
Na kisha una nafasi zaidi.
>> Vinginevyo, wewe tu kuongeza tabia ya buffer.
Na baada ya umeisoma katika wote wahusika, itakuwa shrink buffer
nyuma chini ya kawaida ya kawaida, kuongeza null Terminator, na kisha kurudi.
Sasa, hebu tuangalie GetInt.
Je, unaweza guys kusoma hii?
Mimi wanaweza kuvuta kidogo.
Sijui jinsi ya kompyuta kazi.
Kamwe akili.
Siwezi kuvuta vizuri.
>> Hii ni ngumu kweli kweli.
Mimi nina sorry.
Hebu na tuangalie katika hili.
Kwa hiyo kile GetInt gani ni ya kwanza wasomaji katika kamba kutoka GetString, ambayo
tumekuwa kutekelezwa kabla ya.
Na sehemu muhimu kutambua hapa ni kama kugawana hii inaishia
kusoma ni kama si kweli kamba, kisha sisi tu kurudi INT_MAX kwa
kuwakilisha kushindwa.
Kwa nini sisi kurudi INT_MAX badala hasi 1 au 1?
Mawazo yoyote?
>> Watazamaji: [inaudible] hasi 1 kwa moja.
>> ANGELA li: Yeah, hasa.
Basi, wewe ni njia zaidi uwezekano wa kutaka tu pembejeo 1 au hasi 1 wakati ilisababisha
kwa nth na chochote nth maxes.
Ni kubwa.
Wewe ni pengine si kwenda matumizi yake.
Hivyo hii ni kama uamuzi wa kubuni kwa kuhakikisha kwamba huna ajali
kurudi kosa au huna kurudi 1, ambayo inaweza kuchanganuliwa
kama jibu sahihi.
Hivyo kama line haipo, sisi kurudi INT-MAX.
Vinginevyo, sisi kutumia sscanf, ambayo ni kama scanf.
Lakini wasomaji kutoka kamba.
>> Na tuna hii formatted kamba, ambayo ni% i% c.
Na sisi kujaribu na mechi hiyo kwa chochote user alitoa yetu.
Tunataka idadi ya mambo kuendana kuwa 1, ambayo ina maana kwamba sisi tu
kweli wanataka mechi integer kuzungukwa na labda nyeupe
nafasi, labda si.
Katika kesi hiyo, kama wewe kuweka katika kitu kama bar, bar hailingani wakati wote,
kwa sababu kuna haja ya kuwa integer mwanzoni.
Hivyo sscan kamwe akageuka 0.
Hivyo huna kurudi hiyo.
>> Vinginevyo, kama wewe kuweka katika kitu kama 1, 2, 3, A, B, C, kwamba mechi
wote integer lakini pia tabia ya baada ya yake.
Hivyo sscanf atarudi 2, ambayo ni pia si bora.
Hawataki 1, 2, 3, A, B, C kuwa halali int.
Ili pia haifanyi kazi.
Lakini kusema kuweka katika kitu kama 50.
Kwamba mechi% i, ambayo ina maana ni kupata kusoma katika n.
Na sasa, n vyenye idadi 50.
Na kisha unaweza kurudi.
>> Vinginevyo, wewe hit Jaribu tena.
Na kisha huenda tu tena mpaka kupata pembejeo sahihi kutoka kwa mtumiaji.
Maswali yoyote juu ya hilo?
>> Watazamaji: Hivyo kama ungekuwa na magazeti nje thamani ya GetInt juu ya [inaudible]
itakuwa ni tu integer na max?
>> ANGELA li: Yeah.
Hivyo kama wewe kutumia GetInt, unapaswa kudhani kwamba hawataki nth max kwa
pembejeo halali, kwa sababu wewe utaenda kudhani kwamba ilikuwa mbaya.
>> Watazamaji: Kama hatukuwa na char c na mtu kuweka katika 1, 2, 3, Sam, ingekuwa ni
bado kazi kwa ajili ya 1, 2, 3?
>> ANGELA li: Nadhani ingekuwa kazi.
Lakini hawataki 123Sam kwa pembejeo halali kwa mtumiaji.
Hiyo ni kweli si int.
Hivyo haionekani haki kwa Hazrat ni kama int.
OK.
Katika kesi hiyo, hebu hoja kwenye mtandao.
Hivyo HTTP ni si lugha.
HTTP ni kuweka viwango kwa ajili ya jinsi gani kupeleka yale mambo kutoka kwa wateja,
kwamba wewe, kwa watumishi.
Hiyo ni watu wengine kwenye mtandao.
>> Hivyo HTTP anasimama kwa HyperText Kuhamisha Itifaki.
Ni moyo na roho ya yote mtandao.
hypertext sehemu tu inahusu HTML.
uhamisho ni wateja kama wewe kutuma maombi ya
watumishi, ambayo kuwapa majibu.
Na itifaki ni tu, jinsi gani unatarajia server ya kuishi?
Gani na jinsi gani wanatakiwa kuishi kama kwamba unaweza kuboresha hii
mawasiliano mchakato?
>> Hivyo maombi HTTP kuangalia sana kama hii.
GET ni aina ya ombi.
You guys tumeona maombi GET na maombi POST.
Hiyo Jambo la pili huko, / yangu, kwamba tu URI au URL wapi
unataka kwenda ndani ya jeshi.
Hivyo ombi hili ni kuuliza kwa ukurasa, kama www.facebook.com / yangu.
Na ni ombi GET.
Na kisha HTTP/1.1 hii, kwamba tu toleo la HTTP unatumia.
Ni karibu kila mara 1.1.
>> Na kisha kuna rundo ya mambo mengine pia.
Unaweza kweli kuona haya ikiwa kufungua console yako wakati uko
browsing kwenye mtandao.
Majibu kuangalia kitu zaidi kama hii.
sehemu ya juu ni mara ya pili, aina ya HTTP unatumia
ikifuatiwa na hali ya code.
Hivyo 200 OK ni kila kitu kazi nje.
Hapa ni maudhui yako.
Maudhui yako ni kwenda kufuata.
Na kisha itakuambia ni aina gani ya bidhaa na mambo mengine pia.
>> codes hali, kuna wachache muhimu wale ambao unapaswa kujua.
200 OK ni kama dhahabu kila kitu.
Kila kitu kazi.
403 Haramu.
Hii ve pengine kuona kama alisahau kwa chmod kitu vizuri.
Maana yake ni kwamba huna ruhusa haki ya
kupata kwamba kwenye kompyuta.
Ni kama, hakuna, huwezi kuona.
404 ina maana kwamba kitu haipo.
Haikupatikana.
Ve pengine kuona kwamba mengi.
>> 500 Ndani Error Server ni kawaida kama kitu potoka upande
ya server.
Hivyo wakati wewe walikuwa utekelezaji wa pset7, kama alikuwa na PHP makosa, unaweza
kweli kwenda kwenye ukurasa na kuona kundi zima la PHP makosa mambo ya ajabu.
Lakini hiyo haina kawaida kutokea, kwa sababu ya Nje si kweli wanataka
kukuambia kwa nini tovuti yao ni kuvunjwa.
Wao itabidi pengine tu kurudi 500 Ndani Error Server.
>> Na kisha kuna 418 mimi nina buli.
Kuna hadithi nzima kuhusu kwa nini hilo ni jambo.
Lakini unaweza kusoma kuhusu kwamba wakati yako mwenyewe.
Kuna kundi zima la namba nyingine hali pia.
Lakini hao ndio unapaswa kujua.
Hivyo basi majadiliano juu ya HTML.
HTML, kumbuka, si lugha ya programu.
Ni lugha ghafi.
Hiyo ina maana inaelezea maudhui.
Ni anaelezea nini HTML hati inaonekana kama au si nini inaonekana kama
lakini ni jinsi gani muundo.
>> Hivyo amefafanua muundo na semantiki ya kurasa za mtandao.
Ni kama, hii ni aya.
Hii ni orodha aliamuru.
Hii ni kama sehemu ya ukurasa wangu.
Hapa ni cheo.
Ni gani mambo kama hayo.
Haina style yoyote ya kwamba, kwa sababu kwamba ni nini kufanya katika CSS.
Na inaonekana kama mfululizo ya Furushi vitambulisho.
Hivyo kutumia mfano wa kweli ya msingi Ukurasa HTML, una DOCTYPE
tamko huko.
>> Tamko hili DOCTYPE ni akisema, sisi ni kutumia HTML5.
Kisha una kubwa HTML tag.
Ina kichwa na mwili.
Ndani ya kichwa, una cheo.
Hiyo ni nini huenda katika cheo bar ya browser yako.
Tuna tag kiungo kwamba viungo katika karatasi ya nje style.
Na kisha tuna script kwamba pulls kutoka nje JavaScript pia.
>> Na kisha ndani ya mwili wetu ni kweli nini anapata imeonyesha juu ya ukurasa.
Sisi tumepewa aya na kisha picha ndani ya aya hiyo.
Hii ni moja ya picha ya kittens.
Taarifa kwamba picha tag kufunga yenyewe.
Hivyo badala ya ufunguzi na picha na kisha kufanya mwingine / picha, wewe
tu hii kufyeka kidogo hapa, ambayo inafunga yake.
Na tag picha pia ina hii muhimu thamani sifa aitwaye alt.
Hiyo ni Nakala mbadala ambayo hutokea wakati hover juu yake.
>> Wengi HTML mambo na baadhi thamani muhimu mambo ambayo unaweza kufanya hivyo, mbalimbali
customization.
Yeah.
>> Watazamaji: [inaudible].
>> ANGELA li: Naam, hivyo ni sifa ya tag.
Hivyo kama wewe walikuwa kutumia jQuery, unaweza kufanya kuchagua image.getAttribute.
Na kisha unaweza kutafuta kupata alt sifa.
Na nitakupa kittens.
Kama unakumbuka aina katika HTML, pembejeo mambo itakuwa na sifa jina.
Na kwamba ni nini PHP anatumia kutuma maombi wakati aina ni kuwasilishwa.
>> Watazamaji: Je, kutaja kitu kuhusu jinsi ya kama wewe kutumia kittens.jpg au
jambo ambalo missing faili folders au faili nyingine?
>> ANGELA li: Ndiyo.
Hivyo hii ni kile kinachoitwa jamaa njia, kwa sababu mimi si kutoa
ninyi njia kamili.
Hii ni kama wakati katika C kama wewe kufanya fopen baadhi ya faili, kama fopen hi.txt, kwamba
hi.txt unatarajiwa kuwa katika huo directory, isipokuwa kuwapa zaidi
tata njia.
>> Watazamaji: Hivyo unaweza bayana ambayo folder [inaudible]?
>> ANGELA li: Yeah.
Na unaweza kuangalia juu ya jinsi ya kufanya hivyo.
Lakini kama nilitaka kupata kittens.jpg nje ya saraka ya mzazi, napenda kufanya
.. / Kittens.jpg.
Yeah.
Sorry.
Yeah.
Oh mtu, I forgot swali.
Nini swali?
Oh, swali ni, kittens.jpg inatarajiwa kuwa katika orodha hiyo?
Na katika kesi hii, ni.
Lakini pia unaweza kuwapa njia fulani kama kwamba hana kuwa.
Nzuri?
>> CSS.
Hivyo CSS, kama HTML, ni si lugha ya programu.
CSS ni mfululizo wa styling sheria.
Anasimama kwa kuachia Style Sheets.
Na matumizi yake kwa kushirikiana na HTML kurasa style.
Hivyo kuna njia tatu unaweza pamoja na hiyo.
Njia moja unaweza kufanya hivyo ni katika kichwa sehemu ya HTML yako, unaweza tu
kufungua tag style na kisha fimbo baadhi CSS sheria huko.
Ni pretty OK.
Yeah.
>> Watazamaji: Unaweza kuweka wale tags style katika kati ya, hebu
kusema, mwili na / mwili.
Na kisha itakuwa styling tu katika mwili.
>> ANGELA li: Unaweza.
Kutakuwa na kazi.
Lakini hawapaswi, kwa sababu styling ni aina ya metadata kwamba lazima kwenda katika
mkuu wa hati yako.
Mwili lazima kweli tu vyenye nini kweli kwenda
show up kwenye ukurasa wako.
>> Watazamaji: Hivyo wewe d kuweka style katika kichwa yako style
mtandao mzima ukurasa, haki?
>> ANGELA li: Yeah.
Hivyo kuweka style hapa, CSS sheria hizi itatumika nzima ukurasa msingi
selectors yao.
Hivyo njia bora ya kufanya hivyo ni badala ya kuwa na tag style katika kichwa yako,
una kiungo hiki style nje karatasi kama mimi ilionyesha katika
mfano uliopita.
Nini hii ni anajaribu na hupata faili style.css na kisha pulls ni
katika na matumizi ya kwamba kama mitindo kwa ukurasa.
Na style.css yako ingekuwa tu kuangalia kama hii.
Itakuwa tu kuwa kundi la CSS.
>> Na hatimaye, kuna njia nyingine wewe ni kama CSS, ambayo kwa kweli
haipaswi milele kufanya.
Ni mwito inline styling.
Na hivyo yeyote hiki HTML unaweza pia kuchukua style sifa.
Na kisha katika style sifa, unaweza kuwapa sheria CSS.
Hivyo katika kesi hii, bila kujali div mimi nina kufafanua haki hapa, ni kwenda kwa
na background nyeusi na nyeupe rangi ya maandishi.
Lakini si lazima kufanya hivyo, kwa sababu kile hii haina ni unaweka styling yako
ndani ya HTML yako.
>> Na Mimi najua tumekuwa kuzungumza juu ya HTML ni muundo na CSS ni style.
Kama kufanya hivyo, huchanganyika pamoja.
Na si safi sana.
Hivyo si kufanya hivyo.
Kutumia mfano wa CSS, huko, sisi tu kuchagua mwili wa HTML
documentary.
Na sisi ni kama, kila kitu kwenda kuwa Comic Sans.
Mimi pia kupendekeza kwamba.
Lakini unaweza kufanya hivyo.
>> utawala pili kulia hapa, ni kwenda kuchagua hiki juu ya
ukurasa kwa ID kuu.
Kwa hiyo chochote HTML hiki, mimi alisema ID = Kuu, mimi nina kwenda kutoa kwamba a
20-pixel kiasi na align kila kitu, Nakala wote, kwa kituo hicho.
Jambo la mwisho teua na CSS darasa.
Hivyo hiki yoyote juu ya ukurasa kwamba mimi alitoa sehemu darasa, mimi nina kwenda kufanya ni
rangi ya asili ya mwanga wa bluu.
Yep.
Hayo ni yote Mimi got.
Swali?
>> Watazamaji: Nini maana alama kabla ya kuu nini?
>> ANGELA li: swali ni, nini alama kabla ya kufanya kuu?
Katika kesi hiyo, hash katika CSS maana kuchagua na ID.
Basi, ikiwa mimi na baadhi ya hiki HTML, kama divID = kuu, CSS utawala huu kuchagua
kitu na ID kuu.
Na vile vile, kipindi mbele ya sehemu ni kuchagua na CSS darasa au
kuchagua kwa HTML darasa.
>> Watazamaji: Kwa nini kuna ina kabla ya 6 katika rangi ya asili?
>> ANGELA li: Yeah.
Hivyo, swali ni kwa nini kuna hash kabla ya 6?
Hii ni tofauti na ule hash.
Hii ina maana kwamba wewe ni kutoa hexadesimoli rangi.
Rangi ili hex, hii tu inawakilisha rangi.
Na unakumbuka RGB triples wakati alifanya forensics pset?
Hii ni sawa.
tarakimu mbili za kwanza kuwakilisha kiasi gani nyekundu ni katika rangi.
pili wawili kuwakilisha kiasi gani ya kijani.
Na tatu inawakilisha kiasi gani rangi ya bluu.
Na hash ni hii ni kwenda kuwakilisha rangi.
>> Hivyo kitu chochote kutoka 0, 0, 0, 0, 0, 0 hadi F, F, F, F, F, F ni halali.
Ni baadhi ya rangi halali ambayo inaweza kuonyeshwa na browser yako.
Swali?
>> Watazamaji: Nini tofauti kati ya kutumia kwa ID na kwa darasa?
>> ANGELA li: swali ni nini tofauti kati ya
kutumia kwa ID na darasa?
Unaweza kuwa tu na hiki moja katika HTML hati ambayo ina ID huo.
Jambo moja hivyo tu kwenye ukurasa wangu anaruhusiwa kuwa ID kuu.
Hivyo kuitumia kwa ajili ya hii ni header.
Hii ni navigation.
Hii ni footer.
Madarasa ni tofauti, kwa sababu unaweza kuomba madarasa ya HTML mambo kama wengi
kama unataka.
>> Hivyo kwa mfano, mimi sehemu darasa, kwa sababu kuna pengine zaidi ya moja
sehemu ya ukurasa wangu.
Wewe tu kuruhusiwa kuwa kama wengi mambo juu ya ukurasa kwa moja
darasa lakini moja tu kwa ID fulani.
>> Watazamaji: Kwa hiyo dot inawakilisha darasa?
>> ANGELA li: Yeah.
dot inawakilisha darasa.
Baridi.
Hayo ni yote Mimi nimepata, guys.
Asante.
>> [Makofi]
>> ZAMYLA CHAN: Hi, kila mtu.
Mimi nina Zamyla.
Mimi nina kwenda kuwa kufunika PHP, MVC, na SQL leo.
mengi ya vifaa kwamba mimi itakuwa kufunika ni kwenda kuwa pretty much
haki nje ya pset7.
Sawa.
Kwa hiyo kile ni PHP?
PHP anasimama kwa PHP HyperText Preprocessor.
Hivyo, katika yenyewe, ni kujirudia jina, ambayo ni pretty cool.
PHP ni server-upande lugha scripting, na hutoa backend
na nguzo mantiki ya tovuti yetu.
>> Hivyo Angela aliongea mengi kuhusu HTML na CSS kwamba kufanya muundo
wa tovuti.
Lakini nini kama unataka mabadiliko ya kwamba maudhui ya dynamically au kama inatofautiana
msingi mtumiaji au hali fulani?
Hiyo ambapo PHP anakuja in
Sasa, kwa kawaida, PHP inaweza kuchukua chache mistari chini ya kutekeleza kitu kimoja
katika C. Hii ni kwa sababu PHP Hushughulikia kumbukumbu usimamizi kwa ajili ya programu,
kinyume na sisi kuwa na malloc bure, mambo kama hayo.
>> Lakini tangu PHP ni interpretive lugha, kawaida, inaweza kutekeleza
polepole kidogo zaidi ya C, ambayo ni lugha ulioandaliwa.
Kwa sababu sisi ni kusonga programu lugha, hebu tuangalie jinsi
syntax itakuwa tofauti.
Hebu kuwa makini sana si kwa kupata kuchanganyikiwa na hili.
Hivyo, pamoja na PHP syntax, kama wewe ni upachikaji PHP yako ndani ya HTML
faili au ndani. php file yenyewe, haja uambatanishe code katika wazi
PHP na vitambulisho kufungwa PHP kama ifuatavyo, kama juu ya screen.
>> Vigezo katika PHP.
Kila variable moja itaanza na $ Ishara na kufuatiwa na jina la
variable yako.
Sasa, vigezo katika PHP ni loosely typed, ambayo ina maana kwamba huna haja ya
zinaonyesha aina gani data ni wakati wewe ni kutangaza ni.
Hata hivyo, hii haina maana kwamba wao hawana aina yoyote wakati wote.
Basi, ikiwa mimi kutangaza kutofautiana na tu kuweka ni sawa na 1, na kisha mimi kutangaza
mwingine kutofautiana, kuweka sawa na "1," na kisha mtu mwingine 1.0, vizuri,
kulingana na aina ya usawa operators mimi kutumia, kama nataka kulinganisha
katika aina zote, kisha wao utakuwa sawa.
Lakini kama nataka kuhakikisha kwamba aina ni sawa, PHP bado anaweza kufanya
kwamba, hata kama sisi si zinaonyesha ni aina gani ni wakati sisi
kwanza kufanya faili.
>> Sasa, katika PHP, hata kama sisi ni byte juu kutoka programu
lugha kutoka C, bado tuna yetu muaminifu kama hali, kama hii.
Bado tuna wakati wetu tanzi, tu kama hii, ambapo wewe kuweka katika yako
hali na kisha mwili ya kitanzi.
Na kisha sisi pia kuwa yetu kwa kitanzi, ambayo kwa kawaida inaonekana kama hii.
Basi, ikiwa mimi alitaka iterate juu ya yote psets tisa na kuwasilisha na kuwaita
kazi submitPset, basi mimi anaweza kufanya hivyo hapa, ambayo guys kuwa wote
kufanyika kwa hatua hii.
Hongera, kwa njia.
>> Kwa kamera, watu akasema, asante.
Sasa, ikiwa hakutaka kutumia haki hii kwa kitanzi, kisha PHP kweli pia
ina mambo kuitwa foreach matanzi.
Basi, ikiwa mimi alikuwa na safu ya integers, 0 kwa njia ya 8, kuhifadhiwa katika psets safu,
kisha mimi naweza kuwa na foreach kitanzi kwamba iterates juu ya kila idadi katika psets.
Na kisha mimi naweza kuita sawa kazi mara nane,
tu kama mimi kabla ya.
Hivyo hii kwa kila kitanzi ni nzuri, kwa sababu huna na kama hamjui
urefu halisi ya safu kwamba kuwa, basi kwa kutumia kitanzi hii foreach
itachukua huduma ya kwamba kwa ajili yenu.
>> Hivyo mimi alifanya psets kama safu.
Hebu tuangalie hiyo.
Arrays katika PHP ni kawaida sawa na wale ambao tulikuwa na katika C, ambapo
unaweza kutangaza safu.
Na hapa, siwezi kutangaza safu tupu na kisha kujenga dynamically kwa kutumia
fahirisi kama integers.
Hivyo index 0, mimi nina kwenda kuhifadhi integer jina lake 1.
Katika index 1 ya orodha yangu, mimi nina kwenda kuhifadhi thamani 2.
Na saa tatu index lakini Idadi ya pili, mimi nina kwenda kwa
kuhifadhi namba 12.
>> Sasa, hii ni nzuri kwa kuwa kazi ni kazi vizuri.
Lakini kusema ni mambo kwangu nini kila index ana.
Kwangu mimi, index 0 maana jinsi paka wengi mimi.
Na index 1 maana jinsi bundi wengi mimi.
Na moja ijayo maana mbwa wangapi.
Vizuri, basi ni kwa bayana kwamba, badala ya kuwa na kukumbuka 0 inahusiana na
paka na 1 kwa bundi, naweza kutumia arrays associative, ambayo ina maana kwamba
badala ya integers kama fahirisi yangu, Mimi unaweza kweli kutumia masharti.
>> Hivyo hii ni muhimu kabisa.
Na umefanya kimsingi tu kubadilishwa integers kwa masharti.
Na kuna una associative safu.
Yeah.
>> Watazamaji: Je, kuna sababu kwa nini kuna kusisitiza kwa ajili ya pili
sehemu, kwa sababu orodha yangu ina safu.
>> ZAMYLA CHAN: Swali ni kuwa, ni kuna sababu kwa nini kuna
kusisitiza kati ya yangu na orodha?
Hapana
Hiyo tu jinsi mimi nina kutaja variable yangu.
>> Watazamaji: On kwanza line, ni neno moja.
>> ZAMYLA CHAN: msamaha wangu.
Mimi itabidi kurekebisha hiyo.
Yeah.
Lazima wao jina moja kutofautiana.
Nzuri samaki.
OK.
Hivyo basi hoja juu ya kamba concatenation.
Kama nilitaka kuchukua masharti mawili, basi naweza concatenate yao
na dot operator.
Basi, ikiwa mimi na Milo kama jina la kwanza na Banana kama jina la mwisho, kisha
concatenating na dot operator na kisha kuweka nafasi katika kati ya
itafanya kamba ambayo ina Milo Banana, ambayo siwezi kisha echo au,
badala yake, magazeti nje.
>> Akizungumza ya echo, hebu majadiliano kuhusu muhimu wachache -
oops.
Mimi nina sorry.
chache muhimu PHP kazi.
Hivyo tuna -
matatizo ya kiufundi.
Moja ya pili.
Mimi Wajumbe.
PowerPoint matatizo.
Na sisi ni nyuma na kazi PHP.
>> Hivyo tuna zinahitaji kazi, ambapo kama wewe kupita katika file, hapa ni tu
mfano wa faili kwamba Nipate kupita in
Basi hiyo itakuwa ni pamoja na PHP code na kwamba faili kwamba mimi zinaonyesha.
Na itakuwa kutathmini kwamba in
Kisha sisi pia kuwa echo, ambayo ni sambamba na printf.
Toka ni sambamba na kuvunja, ambayo exits ya kuzuia wa
kificho kwamba wewe ni in
Na kisha hundi tupu kama kupewa kutofautiana ni kama null au sifuri au
chochote ni sawa na kuwa tupu.
Yeah.
>> Watazamaji: Kwa kamba concatenation dot operator moja, katika PHP, ni kwamba
sawa katika JavaScript ambapo ni kutumia dot kwa concatenation maana pamoja na?
Hivyo kwa jina kamili, unaweza kuwa na dola ishara ya kwanza + na kisha + mara ya mwisho?
>> ZAMYLA CHAN: Yeah.
Hivyo swali lilikuwa kama katika PHP sisi unaweza kutumia moja string concatenation
kama katika JavaScript na pluses.
Na Joseph kupata ndani ya baadaye.
Nadhani ana slide juu ya hilo.
Kwa kweli, ni tofauti.
Hivyo katika JavaScript, unahitaji kutumia pamoja na kwa concatenate masharti.
Na katika PHP, una kutumia dot operator.
Hivyo ni tofauti.
>> OK.
Hivyo sasa kwamba tumekuwa kufunikwa wote PHP hii, ambapo gani
kweli kuja katika Handy?
Naam, ni huja katika Handy wakati sisi unaweza kuchanganya ni pamoja na HTML yetu.
Hivyo PHP yetu kutupa nguvu kwa kubadilisha ukurasa wa HTML maudhui ya kabla ya
upakiaji yake.
Hivyo kulingana na hali tofauti, kawaida user maalum kwamba
watumiaji katika, tunaweza kuonyesha taarifa mbalimbali.
Linda, je, una swali?
>> Watazamaji: Je, unaweza concatenate integer pia?
>> ZAMYLA CHAN: Ndiyo, unaweza.
Hivyo swali kama unaweza concatenate integers au nyingine
variable.s sasa, sisi kuendelea na MVC, ambayo ni dhana kwamba sisi kutumika katika
pset7 na mengi ya mtandao wabunifu kutumia kwa kuandaa code katika files
katika tovuti yao.
M anasimama kwa Model.
Na kimsingi, files mfano atapambana na mwingiliano na database.
Kuona files, kuhusiana na aesthetics wa tovuti.
Na Mdhibiti Hushughulikia maombi user, parses
data, je, mantiki nyingine.
>> Katika pset7, sisi pamoja na mfano na mtawala.
Na sisi tu kuitwa controllers yao na kuziweka katika orodha ya umma.
Na mtazamo files, sisi matumizi yao kama templates katika templates directory.
Hivyo mchoro huu hapa pia inawakilisha watu wa aina hiyo mgawanyiko na
mfano wa kuigwa na mtawala katika zambarau hapa upande wa kushoto na
maoni juu ya haki.
Hivyo hii ni schematic kwamba baadhi yenu tumeona katika Ofisi ya masaa au
michoro kuwa tulikuwa kuchora kama wewe walikuwa kuhesabia pset yako.
>> Hivyo hapa, katika mtawala fulani, mfano mtawala, tuna kazi
ambayo yanahusiana na querying SQL database, utekelezaji wa PHP mantiki.
Labda bila kuangalia up biashara katika Yahoo!
Fedha.
Au labda, ungekuwa kuangalia tu kwa kuona kama mtumiaji alikuwa in
kuunda tayari kabla ya kuwa na alitembelea ukurasa wako.
Na kisha litafanya a kuunda zaidi ya hapa.
Baada ya fomu ambayo yamekuwa in kwa mtumiaji, hatua ambayo ilikuwa
maalum katika fomu ya HTML tag ingekuwa zinaonyesha ukurasa kwamba
anarudi data kwamba.
>> Hivyo wote wa habari kwamba itakuwa kurejea kwa mtawala yako.
Basi pengine kufanya kidogo zaidi mantiki juu ya kuwa na labda nitafanya chache
maswali zaidi katika SQL database na kisha, mwisho, kuja na nicely
Zikiwa seti ya habari kuwa wewe kupita katika katika baadhi ya template nyingine
kwamba kuonyeshwa kwamba habari.
Sasa, ni jinsi gani sisi kweli mfuko kwamba taarifa up?
Vizuri, tuna kazi kuitwa Mpeni kwamba alikuwa katika functions.php file katika
pset7, ambapo kupita katika jina la file, jina la template.
>> Na kisha pia kupita katika associative safu.
Na ili safu associative inawakilisha taarifa mbalimbali
kwamba unataka kupita in
Sasa, nini kinaendelea kuwa mara kwa mara katika mifano hii ni kwamba funguo au,
badala yake, funguo za associative arrays, wale ni nini kinaendelea kuwa
inatarajiwa kuwa mara kwa mara na template, kwa sababu anajua mahitaji
kitu kinachoitwa ujumbe au kuitwa jina.
Na kisha mambo juu ya haki, maadili halisi, hivyo katika kesi hii, ambaye ni
mtoto mzuri na Milo, wale ni kwenda kuwa na maadili ambayo ni kubadilisha
kwamba mtawala mabadiliko ya kila wakati au kulingana na hali fulani na
itapita kwamba in
>> Hivyo hapa katika templates, tunaona kwamba ni kutumia HTML herufi maalum,
ambayo tu kimsingi ina maana kwamba tunataka kupata kamba rika kwamba
user kuweka in
Na tunataka mbadala ujumbe huko.
Hivyo basi wakati sisi kweli kuona file, maalum
habari ni kupita in
Kumbuka kwamba muhimu jinsi atatoa kazi ni kwamba funguo za associative
arrays, wale variable kuwa majina hapa.
Na hivyo maadili ya kuwa muhimu katika associative safu basi inakuwa
thamani ya kutofautiana.
>> Sasa, hebu kuendelea na SQL.
Anasimama kwa Strukturerad Swala lugha.
Na hivyo hii ni programu lugha iliyoundwa
kwa ajili ya kusimamia database.
Na alikuja katika Handy kwa ajili yetu katika yetu pset7 fedha tovuti.
Kimsingi, ni njia tu rahisi kwa kufuatilia na kusimamia vitu na meza
na kiungo wao kwa kila mmoja.
Sasa, kufikiria SQL Mbegu yako kimsingi kama Excel file, pengine,
pamoja na karatasi nyingi tabbed.
>> Hivyo unaweza kuwa na meza nyingi, pengine, kwamba wanaohusishwa na mtu mwingine.
Na mengi kama Excel, tuna mengi ya utendaji kwamba tunataka.
Kwa mfano, tunaweza kuchagua baadhi ya mistari.
Tunaweza kuingiza habari.
Tunaweza kuboresha safu.
Na tunaweza pia kufuta mambo.
>> SQL kuchagua kazi kwa kuchagua safu au safu ya nguzo fulani kutoka
database wanaofanana na baadhi ya vigezo kwamba zinaonyesha.
Hivyo juu ya hapa wakati mimi kuona kuchagua * kutoka wachawi ambapo nyumba = Ravenclaw, basi
Mimi nina kuchagua *, ambayo ina maana mimi nina kuchagua kila safu moja katika
mstari kutoka wachawi meza lakini tu kama safu nyumba sawa na Ravenclaw.
Sasa, hii ni safi au SQL.
Hivyo kama nilikwenda PHPmyadmin, ambayo ni njia maalum kwamba sisi kutumia ili kusimamia
database yetu SQL, basi mimi naweza kuingiza kwamba katika tovuti PHPmyadmin.
Na kwamba itakuwa nitafanya.
>> Lakini sisi kweli wanataka kufanya kuwa upande PHP.
Hivyo ni jinsi gani sisi kufanya hivyo?
Naam, sisi kutumia swala kazi, ambayo kimsingi executes kwamba SQL query.
Kutumia?
kama placeholder, tunaweza kupita katika baadhi ya maadili kwa kamba yetu kwamba sisi
wanataka nafasi.
Hivyo labda mimi nina kuhifadhi mbalimbali maadili katika curr_house, ambayo
inawakilisha nyumba sasa kwamba mimi nina kwenda kwa.
Hivyo siwezi kupita kwamba katika kama placeholder na alama ya swali.
Na basi mimi itabidi kimsingi kutekeleza kitu kimoja kama nilivyokwisha waonya kabla, ila
sasa, mimi nina katika PHP.
>> Na swala atarudi associative safu.
Na mimi nina kwenda kuhifadhi katika safu.
Sasa, swala anaweza daima kushindwa.
Labda SQL swala hakuweza kutekeleza kwa sababu meza hayupo.
Au labda, safu hayupo.
Kitu potoka.
Naam, katika kesi hiyo, utasikia wanataka kufanya kuhakikisha kwamba kuangalia kama
swala akarudi uongo.
Na kwamba ni kwa kutumia mara tatu sawa na kazi huko.
>> Na kisha mimi kuomba msamaha, ambayo ni mwingine CS50 kazi, kupita katika ujumbe.
Na kama ukiangalia katika kuomba msamaha, wote ni kweli gani ni kutoa apology.php.
Yeah.
>> Watazamaji: Unaweza kuelezea kile ambacho nyota gani kati ya kuchagua na kutoka?
>> ZAMYLA CHAN: Yeah, kabisa.
Hivyo nyota katika kati ya kuchagua na kutoka ina maana kwamba mimi unataka kuchagua zima
nzima mstari kutoka meza yangu.
Mimi nilikuwa ve unahitajika kuchagua jina, mwaka, nyumba.
Na napenda tu kupata wale tatu nguzo katika meza yangu.
Lakini kama mimi kusema kuchagua *, basi mimi itabidi kupata kila kitu katika safu hiyo.
Kisha mimi nina kwenda ninyi katika nyuma ya kwanza.
>> Watazamaji: Hivyo hii ni bado katika SQL, sawa?
Ni swala hii au ni PHP hii?
>> ZAMYLA CHAN: Tuko katika swala.
Hivyo hii ni katika PHP.
Hivyo kwa kutumia PHP kazi swala, sisi ni utekelezaji wa SQL query.
>> Watazamaji: Je, kitu chochote katika SQL kesi nyeti, kama kuchagua
au wachawi au nyumba?
>> ZAMYLA CHAN: Je, kitu chochote katika SQL kesi nyeti?
Naamini hivyo, ndiyo.
Naamini kuwa CHAGUA na kutoka na WAPI ni suala nyeti.
No?
>> Rob BOWDEN: Kwa hiyo, ni kinyume.
majina safu na njia meza, wale wote ni suala nyeti.
Lakini yoyote ya MySQL muhimu maneno, kama CHAGUA, kutoka, na wapi, hao si
kesi nyeti.
OK.
Hivyo kinyume cha kile alisema.
Basi wote wa maneno MySQL -
kuchagua, kutoka, ambapo - wale ni si suala nyeti.
Lakini kila kitu kingine ni.
OK.
Wewe mbele.
>> Watazamaji: Kama mimi na $ safu katika suala la mstari zaidi ya moja, haina maana kuwa ni
tu inakuwa safu associative?
>> ZAMYLA CHAN: Kwa hiyo swali ilikuwa kama safu ina mstari zaidi ya moja ndani yake, haina
ni kuwa safu associative?
Hivyo ni safu ya associative arrays tayari.
Hivyo hata kama kuna mstari mmoja tu kurudishwa, basi utaweza kwenda
index 0 wa matokeo.
Na kisha wewe d na kwamba safu ya kwanza.
Ndiyo, Belinda?
>> Watazamaji: Wakati matumizi ya ===, ni hii mfano tu?
Au kuna watu wengine?
>> ZAMYLA CHAN: Hivyo katika kesi hii, === ni kulinganisha katika aina.
Sorry. === Ni kulinganisha ambayo inalinganishwa aina.
Na kisha == kulinganisha na katika aina zote.
>> Watazamaji: Je, unaweza kueleza nini safu ni katika hali hii?
Je, ni mstari wa data?
>> ZAMYLA CHAN: Katika slide ya pili, mimi nina kwenda kueleza kile safu ni.
Hivyo kama huna akili kufanya mbali juu ya hilo.
Na kisha katika nyuma?
>> Watazamaji: Kwa kazi kama swala, kutoa na kuomba msamaha [inaudible]?
>> ZAMYLA CHAN: swali lilikuwa kama kazi hizi - swala, kuomba msamaha,
na kutoa -
ni ya kawaida katika PHP.
Hao ndio wale CS50 aliandika kwa ajili ya pset7.
Na Jay?
>> Watazamaji: Wakati unahitaji kusema $ _session, Ni kwamba tu kwa vitambulisho?
Au unaweza kuwa alisema kwamba hapa?
>> ZAMYLA CHAN: Kwa hiyo swali mara, wakati sisi kutumia $ _session, kwamba ilikuwa maalum
variable kimataifa kwamba sisi ni kutumia.
Hapa variable hii ni ya kwenda kuwa ndani kwa kazi yetu.
Hivyo sisi ni kutangaza tu variable mpya.
>> Watazamaji: Ni jinsi gani msamaha kutekelezwa?
>> ZAMYLA CHAN: Swali ni kuwa, ni jinsi gani msamaha kutekelezwa?
Na nadhani hii ni kweli pretty mazoezi mazuri kwa nyie kwenda katika
functions.php sehemu na kuangalia kuomba msamaha na kuona ni jinsi gani unaweza kuwa na
amefanya hivyo mwenyewe.
Ili nipate kuondoka kuwa na wewe lakini tu kusema kwamba kama ukiangalia kuomba msamaha,
kisha inachukua ujumbe kwamba kuwasilishwa kwa msamaha, na kisha
mithili ya ujumbe huo.
Yoyote maswali zaidi?
Nampenda maswali.
Hivyo kuwaweka ijayo.
>> Watazamaji: [inaudible]
echo au magazeti huko?
>> ZAMYLA CHAN: Swali ni kuwa, tunaweza si tu kuweka
echo au magazeti huko.
Hivyo kwamba ingekuwa amefanya kitu tofauti kidogo.
Hiyo ingekuwa kuchapishwa swala alishindwa katika kuwa -
vizuri, sasa hivi, sisi ni kweli katika mtawala wetu.
Kwa hiyo sisi si kweli kuwa HTML kuanzisha hapa.
Kuomba msamaha na utoaji apologize.php kweli maelekezo wewe apology.php.
OK.
>> Hivyo sasa, hebu kwenda juu ya kushughulikia swali kutoka mapema juu ya nini
kweli ni safu.
Naam, swala atarudi safu ya mistari.
Na kila mstari ni kuwakilishwa na safu associative.
Hivyo kama nimekuwa kunyongwa baadhi swala SQL na Nimekuwa kuhifadhiwa matokeo katika safu, basi
kutumia foreach kitanzi, kisha safu jina ni moja ya kwanza huko - safu.
Na basi mimi nina kwenda kuwaita kila mstari katika huko mstari $.
>> Hivyo iterating juu ya kwamba, siwezi kisha kupata mstari kutokana na jina la safu,
mwaka safu, na nyumba safu.
Kumbuka kwamba mimi bila kuwa na uwezo wa kufanya hivyo kwa safu, kwa sababu safu index
jina haipo.
Safu ni safu ya associative arrays.
Hivyo kuwa na ngazi mbili huko.
Mara baada ya kuwa safu ya mistari, una kupata ndani ya hiyo.
Na basi unaweza kupata nguzo.
Je, kwamba kufanya hivyo ni wazi?
Yeah, mbele?
>> Watazamaji: [inaudible] kufungua mabano kwa [inaudible]?
>> ZAMYLA CHAN: Msamaha mimi?
>> Watazamaji: mabano wazi.
>> ZAMYLA CHAN: Hizi hapa?
Hiyo kuniruhusu ni pamoja na kwamba kutofautiana.
Yeah.
>> Watazamaji: Wakati magazeti, wewe ni uchapishaji kwa HTML code?
>> ZAMYLA CHAN: Ndiyo.
Wakati mimi magazeti, hii hapa ni ndani ya template yangu sasa, hivyo
mtazamo wangu wa MVC mbinu.
Hivyo mimi nina uchapishaji katika HTML.
>> Watazamaji: Hivyo kama sisi akaingia developer zana baada ya mbio hii, tunaweza
kwamba kweli katika kanuni?
>> ZAMYLA CHAN: Hiyo ni kubwa swali, yeah.
Hivyo kama wewe akaenda katika zana developer katika Firefox kwa kutumia Firebug au
Chrome, kisha yeah, unaweza kuona HTML maalum.
Hivyo hakutaka kuonyesha $ mstari ["Jina"].
Itakuwa kuonyesha kwa namna yoyote jina ni katika mstari huo.
>> Watazamaji: Just suala ujumla, nini ni tr na magonjwa ya zinaa hufafanuliwa kama?
Kwa nini sisi [inaudible]?
>> ZAMYLA CHAN: Table mstari tr, meza kisha td safu.
OK.
>> Watazamaji: Yeah, ni data meza.
>> ZAMYLA CHAN: data meza.
Yeah.
>> Watazamaji: Ni mstari ambayo mstari ni kutibiwa kama safu?
>> ZAMYLA CHAN: Sorry.
Unaweza kurudia kwamba?
>> Watazamaji: Ni kwa jinsi gani taswira safu?
>> ZAMYLA CHAN: jinsi gani taswira safu katika aina gani ya njia?
Je, wewe ni kuzungumza juu ya haya safu hapa au safu tr?
>> Watazamaji: mistari.
>> ZAMYLA CHAN: safu hizi hapa?
Ningependa taswira hii kama Mimi nitafanya hoja yangu.
Na inasema, OK, nina aidha 0 kwa n kiasi cha safu wanaofanana na vigezo
kwamba alikuwa aliuliza.
Hivyo mimi na baadhi ya idadi ya mistari.
Hivyo safu, safu $, maduka ya kila moja ya mistari wale katika safu.
Hivyo hata kama ni moja tu kati yao, ni bado safu ya safu kwamba mechi hiyo.
>> Hivyo basi, kwa mfano, hii ni sawa na wakati fetched
cache kutoka kwa watumiaji.
Na vigezo kulikuwa ambapo ID ni sawa na kikao cha ID.
Kuna kweli tu ni mstari mmoja ambayo inaweza mechi hiyo.
Lakini bado safu tu akarudi mstari mmoja.
Hivyo d kwenda safu, index 0, index cache kwa
kweli kupata cache yako.
>> Watazamaji: Je, magazeti kazi katika echo kitu kimoja?
>> ZAMYLA CHAN: Ndiyo.
Ndiyo.
Magazeti echo ya sawa.
>> Watazamaji: Je, foreach kitanzi njia pekee ya index katika safu?
>> ZAMYLA CHAN: Je, foreach kitanzi njia pekee ambayo unaweza
iterate kwa njia ya safu?
Hapana
Unaweza pia kutumia kwa kitanzi, mradi kwamba unajua urefu
ya safu safu ya.
>> Watazamaji: Unaweza kupata hiyo kutumia mstari kama [inaudible]?
>> ZAMYLA CHAN: Kwa hiyo huwezi kupata ni tu kwa kutumia mstari kama huna
foreach kitanzi mradi wewe si alitangaza mfululizo.
Ndiyo.
Yeah, katika nyeupe.
>> Watazamaji: Basi je, tr na magonjwa ya zinaa nini?
>> ZAMYLA CHAN: Kwa hiyo tr na td ni HTML.
tr inaonyesha mwanzo ya mstari wa meza.
Na kila td inaonyesha meza mpya data safu.
>> Watazamaji: Kwa Visual ya nini mstari ni kama, tu kufikiria SQL, jinsi
wao na mfululizo.
[Inaudible].
>> ZAMYLA CHAN: Yeah.
Hiyo ni hatua kubwa.
Unaweza taswira safu kama tu kama katika meza Excel, tu
orodha ya mistari.
OK.
Sawa.
Hivyo sasa kwamba tumeenda juu ya kuchagua, kama kuna maswali yoyote zaidi, tutaweza
kwenda juu kwenye kuingiza.
Basi, ikiwa mimi alitaka kuingiza katika baadhi ya meza na kuingiza safu baadhi ya
maadili, mimi nilikuwa kuingiza mwenyewe ndani ya Ravenclaw katika mwaka 7.
Lakini wakati mwingine huenda kuna duplicate maadili, kama tuliona katika pset7 wakati sisi
walikuwa kuhuisha kwingineko yetu.
>> Hivyo katika kesi hii, tunataka matumizi ya DUPLICATE KEY UPDATE, hivyo kwamba sisi si
kuhifadhi safu mbalimbali kwa moja thamani lakini badala update.
Kisha sisi kweli kuwa update, ambayo si kuingiza.
Ni tu update ambapo update katika meza fulani na kupewa
vigezo na kisha, mwisho, kufuta, ambayo haina kitu sawa sana.
>> Watazamaji: Je, kwa ufupi kwenda juu muhimu duplicate?
>> ZAMYLA CHAN: Yeah.
Kimsingi hapa, nina kuingiza ndani ya gringotts, ni, galleons, maadili haya.
Lakini ID, labda, ni muhimu kipekee thamani kuanzisha katika MySQL meza.
Basi, ikiwa mimi tayari kwamba ID kuanzisha, kisha siwezi kuingiza safu mpya.
Hivyo kama haipo tayari, basi mimi na update.
Katikati katika nyeupe.
>> Watazamaji: Kwa hiyo kuingiza, update, kufuta, na kuchagua, ni wale wote inapatikana
ndani ya nchi [inaudible]?
>> ZAMYLA CHAN: Kwa hiyo kuingiza, update, kufuta, na
kuchagua ni maswali yote SQL.
Hivyo wakati wowote unatumia SQL, itabidi wale inapatikana.
>> Watazamaji: Nyuma ya Quizzes iliyopita -
kulikuwa na swali kwamba kushughulikiwa na kama alikuwa na meza na alitaka
kuingiza alama mtihani katika moja na kuingiza jina lako hivyo itakuwa si basi wewe
[Inaudible] rafiki yako mtihani score.
Jinsi gani unaweza kufanya hivyo kwa kuingiza?
>> ZAMYLA CHAN: Kwa hiyo swali mara kuhusu uliopita swali katikati mrefu.
Mimi nina ufahamu ambayo moja ni haki sasa.
Hivyo labda baada ya hapo, kama unataka kuja na kuonyesha yangu, basi mimi unaweza
hakika kukupa tips.
Lakini akizungumza ya kuingiza mambo, kama kuchukua alama ya mtu wakati
hawapaswi, hebu majadiliano juu ya SQL sindano mashambulizi.
Hivyo mashambulizi SQL sindano kimsingi ni ambapo mtu inachukua
faida ya usalama chini ya njia kuwa wewe ni kuchukua katika data.
>> Hivyo katika hapa, kama katika CS50 fedha, wakati sisi watumiaji katika, tunaweza kuingia katika
jina la mtumiaji katika fomu kuingia, kwanza Nakala sanduku, na
kisha kuingia katika password.
Labda PHP kanuni zetu ili kuangalia kitu kama hiki, ambapo $ jina la mtumiaji
ni jina la mtumiaji baada ya data na password ni baada ya data password.
Na kisha sisi tu kutekeleza swala yetu, kusema, OK, vizuri, swala yetu ni kwenda
kuchagua kutoka kwa watumiaji wetu, ambapo jina la mtumiaji ni
moja kwamba waliwasilisha.
Na password ni password, maana kwamba nywila mechi.
>> Sasa, nini kama badala ya kweli kuwasilisha password halisi, kama
12,345 na kubahatisha katika prong kwamba anasema password na kujaribu hack yao
akaunti, nini kama badala wao in hii.
Wangeweza aina katika labda nadhani katika password.
Na kisha wangeweza kumaliza quote basi aina ya au 1 = 1.
Hiyo kasi moja kwa moja kwenye SQL swala kuangalia kitu kama hiki.
Kuchagua kutoka kwa watumiaji ambapo jina la mtumiaji = Prongs na password
sawa na lily au 1 = 1.
>> Hivyo aidha password ina kuwa sahihi au 1 = 1,
ambayo ni kweli daima.
Hivyo katika kesi hii, kimsingi, mtumiaji anaweza kuchukua fursa hii na kuingia tu
wenyewe katika na hack akaunti ya mtu.
Hivyo ndiyo sababu tunataka kuepuka mtu kuwa na kufanya hivyo.
Lakini kwa bahati, swala kazi kwa kupita katika placeholders itachukua
utunzaji wa hii kwa ajili yenu.
Pia, utasikia kawaida kamwe wanataka kwa kweli kuwasilisha nywila
wenyewe.
Hiyo ni kwa nini sisi heshi au encrypted yao katika CS50 fedha.
>> Watazamaji: Jaribio zamani aliyesema kuhusu MySQL kutoroka masharti.
Je, sisi kuwa na wasiwasi kuhusu hilo?
>> ZAMYLA CHAN: Hilo ni swali zuri.
MySQL kutoroka masharti ni dhahiri kazi ambayo ilitumika katika swala zetu.
Lakini dhahiri kuangalia katika hiyo.
Ningependa kusema kwamba haki mchezo kujua kwamba Ningependa haja ya simu kwamba
kazi juu ya kamba.
Yeah, Belinda?
>> Watazamaji: Je, unajua wakati ni quotes moja au quotes mbili?
Na pia, mimi kuhisi kama katika hotuba ninyi zilizotajwa kitu juu ya kutokuwa na
[Inaudible] au kitu au single ya pili quote mwishoni.
Nadhani alisema katika hotuba kwamba wewe ni walidhani kuwa apostrophe 1
na kisha kuwa na apostrophes au kitu.
>> Watazamaji: [inaudible].
>> Watazamaji: Jambo ni moja ya mwisho quote huko katika sanduku pili
haipaswi kuwa hapo.
[Inaudible]
Kwa sababu wakati wewe kuchukua moja mwisho kunukuu nje na mechi hizi kwa maudhui
ambapo password ni, kama una kwamba swala, kuna quote moja katika
mwisho tayari.
Unataka kutumia quote moja kama moja ambayo nyuso moja
[Inaudible].
Basi nini kweli katika maandishi kwamba sanduku haipaswi kuwa na hiyo.
>> ZAMYLA CHAN: Mimi itabidi mabadiliko hayo.
OK.
Kama kuna maswali yoyote, basi mimi itabidi kupita juu ya Joseph kuzungumza
kuhusu JavaScript, na kadhalika.
>> [Makofi]
>> JOSEPH Ong: Hivyo sisi ni mbio kidogo nyuma.
Hivyo kama una kuondoka, kwamba ni sawa.
Lakini sisi kuuliza kwamba kuweka vichwa yako chini kama uko katikati, hivyo
si kuzuia kamera na matumizi ya nyuma exit kama una.
Mimi nina Joseph kwa njia.
Hi.
Mtihani, mtihani.
Dan, ni mzuri?
Baridi.
>> Hivyo video pia kuwa posted online kwa wale ambao
na kuondoka sasa.
Awkward.
OK.
Hivyo jaribio mapitio.
Hii ni paka.
Sasa, JavaScript, ambayo ni labda si kama aww kwa baadhi ya nyie.
OK.
Hivyo kwamba ni ya kwanza, kukumbuka kutoka Zamyla.
Kumbuka kwamba PHP ni kukimbia kwenye server.
Na kura ya mara, you guys aliandika loops katika PHP na magazeti nje HTML, sawa?
Hivyo mara moja kwamba kanuni executes, kwamba Pato HTML kwamba magazeti nje
anapata alimtuma kwa mtumiaji.
Na mara moja kuwa kinachotokea, hakuna PHP zaidi unaweza kuwa na kukimbia, isipokuwa upya ukurasa, ya
Bila shaka, ambayo reexecutes PHP.
Lakini mara moja magazeti kuwa HTML, huwezi kwenda popote.
>> Ili HTML ni alimtuma juu kwa mtumiaji, ambayo ni browser zaidi ya hapa, ambapo
Milo ni kutumia kompyuta.
Na hivyo vizuri, kuna mambo kadhaa mara moja sisi kutuma HTML kwa mtumiaji.
Wakati mwingine sisi wanataka kufanya kitu kama wakati bonyeza juu ya kitu, tunataka
masanduku ya tahadhari kwa pop up, wale aina ya mwingiliano, kama wakati vyombo vya habari
muhimu, wakati bonyeza kitu juu ya ukurasa, nataka kitu kutokea.
Naam, huwezi reexecute PHP code mara moja kwamba HTML ni kuweka.
Hivyo ni jinsi gani unaweza kufanya hili?
>> Sisi kuanzisha lugha mpya iitwayo JavaScript, ambayo inaendesha katika browser
kwamba utapata kufanya mambo HTML baada ya kupokea
yao kutoka server.
Na hii ni kwa nini sisi kuiita mteja upande lugha ya programu.
Ni kazi kwenye kompyuta yako -
mteja.
Maswali yoyote kuhusu kwamba hadi sasa?
Dhana kwamba inafanya hisia kwa watu?
OK.
Nzuri.
Sawa.
Hivyo Jambo la kwanza kutambua ni JavaScript ni si PHP.
>> Wana baadhi ya syntax mbalimbali, ambayo tutaweza kwenda katika.
Na wao wana matumizi tofauti sana.
JavaScript, tena, kwa ajili yako browser, kwa mteja.
Server anaendesha mahali fulani juu ya mtu mwingine kompyuta anaye habari
na wewe, ni sahihi?
Hivyo kama tunakuomba kuandika PHP code juu ya suala mtihani, wala kuandika
JavaScript na kinyume chake.
Utasikia tu kupoteza pointi, na itakuwa si kuwa na haki.
>> Basi hebu kupata katika baadhi ya syntax tofauti -
JavaScript upande wa kushoto na PHP juu ya haki.
Jambo la kwanza utasikia taarifa na JavaScript, sisi kutangaza vigezo na
var keyword -
V-A-R. PHP kutumika ishara ya dola, kama Zamyla kujadiliwa mapema.
Kama unataka kutangaza associative safu, tunaona syntax ukoo juu ya
upande wa kulia na PHP.
Upande wa kushoto, badala matumizi ya braces curly.
Na kisha funguo yako ni upande wa kushoto.
Kisha una koloni.
Na kisha una maadili kwamba unataka.
>> Hivyo hii ni jinsi gani kufanya hivyo katika PHP upande wa kulia na kwamba pili
line kwamba kuanza saa Milo.
Na kwamba ni jinsi gani kufanya hivyo kwa upande wa kushoto katika JavaScript kama unataka
kile tunachokiita kitu.
Na vitu katika JavaScript ni tu associative arrays.
Hivyo kama unataka kupata mashamba, katika PHP kutumia hii syntax bracket.
Na kwa njia hii, unaweza reassign uwanja huu mmiliki wa Lauren.
>> Naam, katika JavaScript, kama mtu unataka kupata shamba na mabadiliko hayo, unaweza
kutumia dot syntax.
Unaweza pia kutumia mabano syntax.
Lakini huwezi kutumia dot syntax katika PHP.
Hiyo si kazi.
Ni kazi tu katika PHP.
Na hatimaye, magazeti mambo ya console, unaweza kutumia console.log, ambayo
nyie matumizi mengi katika pset8.
Unaweza console.log hiyo.
>> Kama unataka magazeti safu katika PHP, una kutumia magazeti r.
Na upande wa kulia, unaweza kuona i hash kamba concatenation zaidi ya hapo.
Mtu mmoja alimuuliza mapema.
Mimi kutumia pamoja na katika JavaScript.
Kama mimi nataka concatenate kitu katika PHP, mimi kutumia dot.
Hizi ni tofauti.
Kama wewe ni kuandika PHP code, wala kutumia plus.
Kama wewe ni kuandika JavaScript code, wala kuandika dot.
Itakuwa vibaya.
Na wewe utakuwa na huzuni.
>> Hivyo syntax tofauti.
Kujua syntax yako, kwa sababu kama una kuandika swali na matumizi ya syntax
kutoka lugha vibaya, itakuwa si kazi.
Na itakuwa makosa.
Hivyo basi majadiliano juu ya baadhi ya kudhibiti kati yake tofauti, jinsi ya kutumia
matanzi katika kila mmoja wao.
Zamyla akaenda juu ya upande wa kulia.
Mambo upande wa kulia wanapaswa kuwa ukoo.
Hebu tuangalie upande wa kushoto.
>> Wakati kutumia kwa ajili ya n kitanzi katika JavaScript, kitanzi variable yako, var i zaidi ya hapo,
kitanzi juu ya funguo wa safu.
Hivyo unaweza kuona jina, nyumba, na jukumu.
Kama mimi console.log i, mimi kupata jina, nyumba, na jukumu.
Wale ni funguo.
Katika JavaScript, foreach kitanzi huenda juu ya maadili ya safu hii.
Hivyo taarifa wao ni wote i.
Lakini katika hapa upande wa PHP, prints nje Milo, CS50, na Mascot.
Wale ni maadili katika PHP.
>> Basi hao ni jinsi hizi mbili ni tofauti katika lugha mbalimbali.
Hivyo kama wewe ni kutumia foreach kitanzi, wala kudhani kuwa ni
anatoa funguo.
Na kama wewe ni kutumia kwa ajili ya n kitanzi, si kudhani inakupa maadili.
Je, hii kufanya akili hadi sasa?
slide ya pili ni kwenda kuonyesha jinsi gani wanaweza kupata kinyume katika
kila mmoja wao.
>> Naam, kama una muhimu katika JavaScript na unataka thamani nje,
wewe tu index katika safu na kwamba.
Hivyo Milo ya i kupata nini unataka - maadili.
Kuna syntax hii tofauti katika PHP.
Kama kweli unataka kujua hayo, mimi si nadhani tumekuwa ilionyesha wewe bado.
Lakini kama wewe ni nia, unaweza kutumia syntax hii ya nyongeza juu ya haki
upande kwamba kwa kweli basi kupata funguo katika PHP wakati unatumia
foreach kitanzi.
Hivyo tu kidogo ya trivia kama wewe ni nia.
>> Ili tu kuonyesha tofauti kati ya loops hizi mbili.
Je, si kuchanganya yao juu wakati uko programu swali.
Maswali yoyote juu ya hilo.
Baridi.
Sawa.
JavaScript vitu.
Mimi kuongelea kuhusu yao.
Wao ni kama arrays associative.
jambo moja Ningependa kutambua hapa ni kwamba thamani katika associative
safu inaweza kuwa kitu chochote katika JavaScript.
>> Inaweza hata kuwa na kazi, kama zaidi ya hapo.
Nina kazi ambayo ni thamani ya muhimu.
Na kama nataka kuwaita kazi hiyo, I just kupata maganda.
Na kisha mimi kuweka mabano baada ya hapo.
Na kwamba kazi.
Kwa hiyo, maswali yoyote?
No?
OK.
Nzuri.
JavaScript, kama PHP, ni loosely typed.
Hiyo ina maana gani?
>> Ni gani aina.
Lakini wakati kutangaza JavaScript variable, unaweza kusema var i.
Huwezi kusema hivyo.
Hiyo si kitu.
Wewe tu kusema ni kutofautiana.
Na kisha JavaScript kushughulikia aina chini ya kofia kwa ajili yenu.
Tunaweza uhuru kubadilisha kati ya aina sababu ya hili.
Hivyo i kuanza nje kama idadi katika kesi hii.
Na kisha mimi na kamba.
Na mimi kuongeza i yake.
Na mimi reassign nyuma katika i.
>> Hivyo kuwa mstari wa kwanza, i ni idadi.
On line pili, i sasa inakuwa kamba baada ya mimi kufanya reassignment.
Na hapa, mimi nina concatenating tu kwamba idadi kwenye kamba.
Hivyo unaweza kuona kwamba hata kama i mara integer katika sehemu ya kwanza, ni aina
ya kama kuwa waongofu kwa kamba na kisha aliongeza kuwa
kwenye kamba kwamba hello.
Na hivyo kwamba ni nini I mean na kuandika huru.
Hiyo ni kwamba kubadilisha kati ya aina kwa urahisi sana.
Na haina kutupa onyo wewe kama C gani.
>> Hivyo i sasa ina hujambo 123 kwa kamba.
Next.
Tunaweza pia uhuru kulinganisha kati ya aina.
Hivyo kama wewe tu kutumia ==, sana sana kama katika PHP, JavaScript
kitu gani kama hayo.
kamba 123 ni sawa na idadi 123 wakati matumizi ya usawa mbili.
Wakati kutumika usawa tatu, pia anataka kuhakikisha kwamba
aina ni sawa.
Basi, kwa sababu kwamba ni kamba na kwamba ni idadi, ingawa wao ni wote
123, wakati matumizi ya tatu sawa, kupata uongo.
Katika mara mbili sawa na kesi, unaweza kupata kweli, kwa sababu ya usawa mbili haina
huduma ya juu aina.
Usawa tatu haina huduma ya juu aina.
Maswali?
OK.
>> Na kitu kingine kuhusu JavaScript ni wigo ni aina ya kimataifa kama wewe ni
katika kazi.
Na kazi hiyo njia katika PHP kweli.
Basi hebu kwenda kwa njia ya mfano huu.
Mimi kuweka i kwa 999.
Na kisha mimi kwenda katika hii kwa kitanzi.
Basi, ikiwa mimi nina uchapishaji i nje katika hii kwa kitanzi, mimi kutarajia 0, 1, 2, 3, 4.
Mimi kupata i = 4.
Ni nyongeza i sasa kwa 5 katika mwisho wa kwa kitanzi.
Na kisha inavunja nje ya kitanzi, kwa sababu haina kutimiza
Hali tena.
>> Je, unafikiri kwamba ijayo console.log Prints nje?
Hivyo kwamba ni nini ingekuwa kufanya katika C. Katika C, kwa sababu kama una kama var i nje
na una var i ndani ya kitanzi, kama kwa kitanzi, kisha inafanya kama kwamba
ni scoped kwamba wawili i ni tofauti.
Katika JavaScript, itakuwa tu kutibu kama i huo.
Mimi kupata 5, kwa sababu kwamba alikuwa thamani baada ya exited nje ya kitanzi.
Hivyo wale i ni i huo.
Je, hiyo mantiki?
>> Naam, ni mantiki kutoka JavaScript upande.
Lakini dhana hiyo haina kubeba zaidi ya C. Wana
mbalimbali ya sheria scoping.
Ndiyo.
>> Watazamaji: [inaudible]
nje kazi [inaudible]?
>> JOSEPH Ong: Kwa hiyo nje ambayo kazi?
Kwa hiyo nitakuwa kupata kwamba katika haki ya pili.
Hivyo tunatoa wito foo (i).
Hii hupita i ndani ya foo, nyongeza yake, na kisha kumbukumbu yake.
Hivyo ilikuwa 5.
Hivyo ni 6.
Lakini nini mimi kuzungumza juu ya ni kwamba i katika kazi hiyo.
Kwa sababu ni parameter, ni scoped kwa kazi hiyo.
Hivyo mara moja mimi kwa kweli kupata nje ya kwamba kazi, ni sasa kwenda
nyuma na umri i.
Hiyo i ni scoped tu kwa sababu ni katika kazi.
Na sisi kuwa na upeo na kazi.
Lakini hatuna wigo nje ya kazi katika JavaScript.
Je, hiyo mantiki?
Ndiyo.
Swali.
>> Watazamaji: Same [inaudible]?
>> JOSEPH Ong: Hivyo yeah.
Katika PHP, ni aina moja ya kitu.
Kuna hila kidogo kwa kweli.
Lakini unaweza kuuliza mimi kuhusu kwamba baada ya mapitio.
Si kweli haja ya kujua kwamba hila kwa jaribio.
Kwa nia yote hiyo na malengo, kama vigezo, kimataifa na PHP, isipokuwa
wao uko katika kazi, sawa na kitu katika JavaScript.
Ndiyo.
>> Watazamaji: Kwa nini hii ni kuruhusiwa katika JavaScript na hakuna ambapo mwingine?
>> JOSEPH Ong: Basi kwa nini ni kuruhusiwa katika JavaScript na si katika C?
Ni yeyote tu kuja na JavaScript aliamua kwamba hii ilikuwa sawa katika
JavaScript.
Hivyo tu kama lugha ya programu mkataba kama sisi kusema.
Ndiyo.
>> Watazamaji: Basi kwa nini alifanya ni kwenda 6-5?
>> JOSEPH Ong: Kwa hiyo akaenda 6-5, kwa sababu wakati mimi kupita i ndani ya foo, kwamba
i ndani ya foo sasa ni scoped kwa foo, kwa sababu wigo ipo katika kazi katika
JavaScript.
Lakini mara moja mimi kupata nje ya hapa, kwa sababu ilikuwa scoped kazi, mimi nina tu
kutumia i mara kwa mara kwamba alikuwa ndani ya wengine wa kudhibiti kati yake.
Mantiki?
Je, mimi hoja juu ya?
Sawa.
Baridi.
>> kukubali hii ni vitu ni kupita kwa kumbukumbu.
Unajua jinsi wakati kupita safu ndani ya C unaweza
kweli kurekebisha safu?
Ni kitu kimoja katika JavaScript ni.
Kama mimi kupita kitu, katika kesi hii, mimi kupita Milo katika hii kazi catify.
Milo kuanza nje.
Jina lake ni Milo Banana.
Mimi kupita kwamba kitu katika kazi kwa sababu ni kitu, associative
safu katika JavaScript.
>> Wakati mimi kufanya operesheni katika kazi hiyo, itakuwa
kweli mabadiliko ya kitu.
Hivyo hii itakuwa tu kutokea kwa vitu katika JavaScript, kama vile inajitokeza
kwa arrays ndani ya jina C. Hivyo Milo ya kweli kuwa paka sasa.
Je, hiyo mantiki?
Hivyo hii kazi tu kwa ajili ya vitu.
Vitu ni kupita kwa kumbukumbu.
Ndiyo.
>> Watazamaji: Hivyo wewe ni kusema kwamba tofauti na kutofautiana i.
>> JOSEPH Ong: Yeah.
Ambayo variable i mara tu idadi, sawa?
Ni kama katika C wakati kupita Integer, inafanya nakala.
Na wakati kupita safu, ni kweli mabadiliko safu halisi katika
C. kitu kimoja kinachotokea kwa JavaScript katika kesi hii.
Sawa.
Na wa pili, Milo ni huzuni kwa sababu yeye sasa paka.
Hiyo ilikuwa ni kweli Milo baada ya baadhi safari kwa daktari.
>> Hivyo ni jinsi gani sisi kutumia JavaScript katika ukurasa mtandao?
Tunaweza pamoja na hiyo.
Hii ni HTML code na vitambulisho strip.
Hivyo nina vitambulisho strip huko.
Na kisha mimi kuweka baadhi ya JavaScript code ndani ya vitambulisho script.
Na kisha executes hii.
Wakati mimi tu kufanya hivyo kama hii, ni aitwaye inline JavaScript.
Ni aina ya messy, kwa sababu JavaScript ni kweli katika HTML.
>> njia bora ya kufanya hivyo, kiasi nicer, ni kuandika yako JavaScript katika
file nje na kisha kutoa script tag na chanzo.
Na hii kwenda kwamba JavaScript file na kusoma JavaScript code kutoka
kwamba faili badala yake.
Na kwa njia hii, huna mengi ya JavaScript mwanzoni mwa yako
HTML file, ambayo inafanya ni kweli messy.
Wewe tu kuweka mahali pengine.
Na kisha itakuwa kusoma kutoka huko.
Je, kwamba inafanya hisia?
>> Upangaji mambo.
Katika kesi hii, script ni kabla ya mwili.
Hivyo wakati mimi nitafanya kwamba, kuna kitu katika mwili bado.
Labda hii kufanya kidogo zaidi maana wakati mimi kuonyesha sehemu hii ya pili.
Katika kesi hiyo, script inakuja baada ya div.
Hivyo div kweli inaonekana juu ya ukurasa wa kwanza.
Haki hapa katika mzunguko kidogo nyekundu, unaweza kuona Nakala inaonekana.
Na kisha macho inaonyesha up.
>> Katika kesi ya kwanza, kwa sababu script mara kabla ya div,
macho inaonyesha juu kwanza.
Na kisha div inaonyesha juu baada ya ninyi kumfukuza sanduku.
Hivyo utekelezaji mambo.
Hivyo tutaweza kuweka hii katika akili.
Hii itakuwa muhimu katika kidogo.
OK.
Vizuri, ni jinsi gani unaweza kusubiri hadi ukurasa mzima ni kubeba kisha kabla ya
kutekeleza baadhi ya kanuni?
Tutaweza kupata katika hili kidogo kidogo baadaye pia.
Lakini kuweka tu upangaji hii mambo katika akili kwa wakati sisi
kuja slide nyingine.
>> Hivyo sisi kupata DOM sasa.
Na ni nini DOM?
Hivyo kama ukiangalia HTML code, ni tu kundi la maandishi kwenye screen.
Hivyo ni jinsi gani JavaScript kujua kwamba hii ni HTML hiki?
Hivyo sisi kuwa na baadhi ya kumbukumbu uwakilishi wa hii
muundo kwamba tuna.
Na wakati wowote tuna hii katika kumbukumbu uwakilishi katika JavaScript, sisi kuwaita
kwamba DOM.
Na ni njia tu kwamba watu aliamua kwamba tunapaswa kuwakilisha hii
HTML muundo kama.
>> Na nini DOM hii kuangalia kama?
Naam, katika kumbukumbu ya uwakilishi, sisi kuchukua Nakala hii.
Na sisi kurejea ndani ya kumbukumbu uwakilishi.
Hivyo hii ni HTML.
Hivyo sisi kwanza kujua kwamba kila DOM mti hati.
Inaonekana kama mti.
Na hati ina HTML tag, kwa kweli kila kitu
ndani ya hii sasa.
Tag HTML ana watoto wawili.
Ina kichwa.
Kichwa kwamba, kama ukiangalia indentation zaidi ya hapo katika ni jinsi gani muundo
kati ya vitambulisho karibu, kichwa mtoto.
mtoto ni cheo.
Hasa.
>> Sasa, tuna mwili wa mtoto.
Na kisha mwili huo mtoto aitwaye familia.
Na familia ambayo ina watoto watatu -
kongwe, katikati, na mdogo.
Hivyo unapaswa kujua jinsi ya kuchora mchoro kama hii wakati sisi kuuliza jinsi
kuchora mchoro tunapotoa ninyi HTML upande wa kushoto.
Kujua jinsi ya kuzalisha DOM mti.
Na ndani ya mambo haya, kuna tu baadhi asilia, ambayo nimekuwa kuwakilishwa
kama kidogo masanduku.
>> Je, muundo huu DOM mti kufanya maana na nini DOM ni?
Basi ni nini p kusimama kwa?
Zaidi ya hapa, p zaidi ya hapo katika tag kwamba inawakilisha
aya tag katika HTML.
Hivyo unaweza kuangalia it up.
Lakini ni njia tu ni baadhi nafasi kwa baadhi maandishi.
Na ina baadhi ya default CSS styling, kwa sababu ni aya tag.
Lakini si kweli na wasiwasi juu ya sehemu ambayo sana.
Tu kujua ni placeholder kwa baadhi maandishi.
Ndiyo.
Swali?
Ndiyo.
>> Watazamaji: Wewe tu zilizotajwa CSS.
hash familia na hash mambo ambayo yote ni kimsingi
anayewakilisha vitambulisho katika CSS?
>> JOSEPH Ong: Yeah, hasa.
Mimi itabidi kupata nini hashes haya maana katika pili.
Wakati Angela akaenda juu ya CSS, yeye kuongelea CSS selectors.
Hizi ni selectors CSS kwamba yeye alikuwa kuzungumza juu.
Ndiyo, Rob?
>> Rob BOWDEN: Napenda pia kutoa maoni kwamba DOM ndani ya cheo tag
ni pia Nakala nodi.
>> JOSEPH Ong: Haki.
Hivyo ndani ya cheo tag, Mimi na baadhi ya DOM maandishi.
Hivyo kweli, jina hili wanapaswa kuwa na kama sanduku kidogo kuja mbali ya hilo pia.
Lakini haina kweli jambo sana katika kesi hii.
Sisi si kweli huduma ya juu nodes maandishi, kama sisi kuwaita, sana.
OK, sisi kufanya.
Inavyoonekana, sisi kufanya.
Nami kurekebisha kwamba wakati Mimi upload tena.
Je, hiyo mantiki?
>> Hivyo ni jinsi gani sisi kazi na DOM?
Kila kukabiliana na DOM katika JavaScript, kuna hatua mbili.
Kuchagua DOM hiki.
Na kisha kufanya mambo yake.
Hivyo katika kesi hii, abstractly, nimekuwa aliliteua hiki katikati.
Na kisha mfano wa kufanya mambo hiyo itakuwa kubadilisha Nakala.
Kwamba kutumika kuwa Bob.
Sasa, nini mimi na kama ilikuwa ni mimi iliyopita Bob kwa Milo katika kesi hii.
>> Hivyo ni jinsi gani sisi kwa kweli kufanya hili?
Tutafanyaje kuchagua?
Na jinsi gani hatuna kufanya mambo kwa kitu mara moja tumekuwa kuchukuliwa yake?
Naam, njia guys wamejifunza ni katika darasa hili ni kwa kutumia kitu sisi
aitwaye jQuery.
Kwa hiyo kile ni jQuery?
jQuery ni maktaba kwamba inafanya JavaScript rahisi kuandika.
Ili mtu alichukua muda na aliandika jQuery.
>> jQuery ni kweli imeandikwa katika JavaScript.
Na kisha kwa sababu wao alifanya hivyo, sisi sasa na rundo zima la kazi ambayo
tunaweza kutumia kwamba kufanya yetu anaishi kweli ni rahisi.
Kwa hiyo kile ni baadhi ya mambo ni gani?
Inafanya kuchagua mambo rahisi.
Inafanya mabadiliko ya HTML, kuongeza madarasa rahisi.
Inafanya Ajax rahisi.
Tutaweza kupata kwamba katika pili.
>> Na ni sawa na maktaba C.
Hivyo ni pamoja na string.h, kupata strlen.
Unaweza kupata strcpy, mambo yote haya.
Wakati ni pamoja na jQuery, unaweza kupata nzuri njia ya kuchagua mambo ya mabadiliko
mambo, na kadhalika.
Unaweza kupata utendaji ziada kwamba JavaScript haina kukupa.
Hivyo jQuery ni si JavaScript.
jQuery ni maktaba ambayo imeandikwa katika JavaScript kwamba inafanya JavaScript
rahisi kuandika.
>> Hivyo jQuery ni si programu lugha.
Lakini JavaScript ni.
kufanya.
Kuhakikisha kupata istilahi wako wa kulia.
Maswali yoyote?
Ndiyo.
Ni kwamba swali?
Sawa.
Hivyo ni jinsi gani kutumia jQuery?
Naam, wakati wewe ni kuandika baadhi JavaScript code na ni pamoja na
jQuery juu ya faili yako kama file script, matumizi ya ishara ya dola
sasa kwa kupata jQuery.
Na hii ni tofauti na ishara ya dola katika PHP.
>> Ni ishara sawa na wewe aina kwenye keyboard yako.
Lakini wao maana mambo mbalimbali sana.
Dollar ishara katika PHP maana hii ni jinsi mimi kutangaza kutofautiana.
Katika JavaScript, wakati umeweka ni pamoja na jQuery, anasimama kwa jQuery.
Hivyo kuendelea kuwa katika akili.
Hivyo jinsi gani sisi kuchagua DOM mambo?
Naam, wakati wewe kufanya hivyo ugly JavaScript njia, kupata
hati variable kimataifa.
Na kisha kupata hiki na ID ya familia.
Hii ni kweli kwa muda mrefu na wordy na si nzuri sana.
>> Au unaweza kupata mambo yote kwamba ni p tag.
Kwamba kazi pia katika JavaScript.
Lakini sisi kamwe kweli ilionyesha ninyi syntax sana.
Nini sisi kuonyesha mara jQuery.
Ili selector nzima hadi pale kwamba ilielezwa katika JavaScript anapata tu
kufupishwa na dola hii nzuri sana ishara alama ya familia.
Na $ p, tu ambapo ni kama hiyo.
Kama unataka kuchagua vitambulisho wote p ndani ya familia, sisi kuweka nafasi
kati ya mbili.
Na sasa, sisi kupata p wote tags ndani ya familia.
>> Na kuangalia familiar?
Naam, Angela kuongelea CSS selectors.
Nipe moja ya pili.
Na hivyo ili kuchagua kipengele, wewe tu kutumia kitu kimoja kama wewe
angefanya na CSS selector.
Kama kuweka hash mbele yake, ni kuchagua na ID.
dot teua na madarasa.
Kama wewe tu na kitu bila hashes au dots, ni kuchagua wale vitambulisho.
Maswali.
Ndiyo?
>> Watazamaji: Wakati sisi kutumia dot katika yetu HTML, ni kwamba si jQuery?
>> JOSEPH Ong: Dot katika HTML wetu ni kitu JavaScript.
Si Ni jambo jQuery.
njia guys kujifunza ni pamoja na jQuery ni kutumia. html.
Na kisha kupita chochote HTML ni kwenda kuwa.
Kwa hiyo nitakuwa kupata kwamba katika tu pili kweli.
Hivyo ni jinsi gani sisi kufanya mambo kwa hiki mara moja tumekuwa aliliteua yake?
Hivyo kwamba ni mfano wa kuchagua hiki.
Basi sasa, tunataka kufanya mambo yake.
>> Hivyo katika kesi hii, napenda kwenda nyuma kwa slide uliopita.
Ilikuwa ni Bob kabla ya.
Na mimi nataka mabadiliko hayo ndani ya HTML kwa Milo.
Hivyo mimi wito HTML kazi kutoka hiki.
Hiyo HTML kazi ni njia ya hiki.
Na kisha mimi kutoa ni nini Nataka HTML kuwa.
Na tu nafasi ya nini ndani ya kwamba tag na chochote mimi kuwapa.
Ndiyo.
Swali?
>> Watazamaji: alama hutumiwa kwa tu jQuery.
[Inaudible]
sisi bila kutumia.
>> JOSEPH Ong: Yeah, hasa.
Lakini si wasiwasi sana kuhusu safi JavaScript.
Mimi nataka tu wewe guys kwa kuzingatia jinsi bila kufanya hivyo kwa jQuery, kwa sababu
kwamba kinaendelea kuwa muhimu sehemu ya juu ya jaribio.
Haki.
Hasa.
Hivyo unaweza kuona kwamba alama, ili sambamba na kuchagua kipengele kwa
ID katikati kwa sababu ya kuwa alama.
Alama maana ID.
Na hiki hii ina ID ya katikati.
Hivyo kwamba ni hiki sisi kuchagua.
>> Watazamaji: [inaudible].
ishara ya dola alama [inaudible]?
>> JOSEPH Ong: Hivyo hakuna.
swali ni je, unaweza kutumia. thamani.
Na thamani. Kazi tu juu ya mambo kwamba ni pembejeo.
Katika jQuery, itakuwa . Val, si. Thamani.
Kwa hiyo nitakuwa kupata mfano mdogo kwamba inaonyesha haya yote pamoja
katika pili.
Lakini nadhani hii mtumishi snippet kidogo mantiki watu hadi sasa.
Wanataka kubadili HTML, kuwaita njia HTML.
Ndiyo.
>> Watazamaji: Je, unaweza kuelezea njia tena?
>> JOSEPH Ong: Kwa hiyo ni njia tu kazi ambayo ni mmoja, katika hii
kesi, moja ya mambo haya DOM, kwa sababu unaweza kuona mimi
aliliteua hiki kwanza.
Kwa kweli, napenda kutumia panya.
Mimi kuchaguliwa hiki kwanza.
Na kisha mimi kuitwa HTML hii kazi kwamba alikuwa.
Na kwa sababu kazi hii ni mali ya jambo hili, sisi kuiita mbinu.
Hiyo tu jina dhana kwa ajili yake.
Kusema kwamba tena.
Basi kumbuka, sisi kuchaguliwa hiki sasa.
Na tumekuwa kuweka ndani ya hiki kutofautiana.
Sahihi?
>> Hivyo wakati tunataka mabadiliko ya HTML juu ya ndani, kwa sababu ilikuwa Bob kabla,
wanataka kubadili Nakala kwamba kwa Milo.
Hivyo tunatoa wito HTML.
Na sisi tunasema ni nini HTML ndani ya kwamba hiki lazima sasa.
Na hivyo mabadiliko hayo kwa Milo, kwa sababu mimi akampa Milo.
>> Watazamaji: Kwa hiyo wao ni kufanya kazi pamoja.
[Inaudible]
>> JOSEPH Ong: Yeah, yeah.
Wao ni kufanya kazi pamoja.
Hivyo mmoja wao teua hiki kwanza.
Na wa pili gani kitu hiyo.
Ndiyo.
>> Watazamaji: [inaudible].
Kama njia hii ni tofauti na katika HTML una njia sawa halisi.
>> JOSEPH Ong: Yeah.
Hiyo ni njia tofauti.
Na tunaweza cover kwamba katika haki ya pili wakati sisi kupata mfano.
Nataka kuhakikisha kwamba sisi kuharakisha kwa sababu sisi ni mbio nje ya muda.
Lakini tumekuwa kukimbia njia baada ya muda sasa.
OK.
Baridi.
Hivyo kama unataka kuongeza darasa, kuna pia ni njia ya kuongeza darasa.
Hii ni mfano tu wa kile unaweza kufanya na jQuery.
Kwamba anaongeza tu darasa.
>> Kama unataka kuondoa hiyo, unaweza kupiga kuondoa.
Hiyo tu kitu kingine unaweza kufanya.
Mifano hivyo zaidi ya mambo unaweza kufanya.
Hivyo naweza tu kuiweka katika juu kama hii?
Mdogo kuondoa.
Kama mimi tu kutekeleza kwamba JavaScript katika juu ya faili wangu, kwamba kazi?
Haki.
Kwa sababu katikati haipo bado.
Hivyo hii ni si kwenda kufanya kazi.
Utekelezaji utaratibu.
Unaendelea juu ya kwanza.
Nini?
>> Watazamaji: mdogo haipo bado?
>> JOSEPH Ong: Yeah.
Mdogo haipo bado.
Hasa.
>> Watazamaji: Ulisema katikati.
>> JOSEPH Ong: Sorry.
Mdogo haipo bado.
Na kitu kingine ni mimi na si pamoja na jQuery
faili kuuliza script src.
Hivyo kwamba si kwenda kufanya kazi.
Kwa kweli, mimi hakufanya hivyo katika slide ya pili, ambayo ni
wanatakiwa kurekebisha kuwa ama.
Lakini njia ya sisi kufanya hii ni JavaScript ni tukio inaendeshwa.
Hivyo kile sisi kufanya ni sisi kutumia tukio la handler kwa kufanya hili kutokea.
Na hivyo mimi kuchagua hati kuweka kwanza.
Mimi kusema, OK, wakati hati ni tayari, napenda kukimbia kazi.
Hivyo hiyo ni kwamba syntax njia zote.
>> Mimi kuchaguliwa hati.
Sasa, wakati hati ni tayari, kukimbia kazi.
Na hivyo juu ya hapa wakati hati ni tayari, ambayo ina maana HTML yote ina
kubeba, basi mimi kukimbia kazi kwamba kuondosha kwamba hiki.
Na hivyo kwa sasa, wakati mimi kukimbia kazi hii kwamba mimi kupita katika tayari, mimi nina
uhakika kwamba HTML yote juu ya ukurasa ni kwenda kuwepo kwanza.
Ndiyo.
Swali?
>> Watazamaji: ni tukio keyword nini ndani ya kazi?
>> JOSEPH Ong: Hivyo kwamba tukio keyword katika kazi ni parameter kwamba
anapata kupita kwa kazi kwa tukio lolote.
Ni jambo tu kwamba kupata kwa bure.
Wakati unatumia handlers muhimu katika pset8, tukio hilo kuwa naweza kukuambia, kwa
mfano, ambayo muhimu taabu juu.
Katika kesi hiyo, kwa ajili ya tukio tayari, ni kweli si super muhimu.
Lakini kwa tukio muhimu chini, ni zaidi muhimu, kwa sababu ya kupata kujua ambayo
muhimu taabu kwa kupata muhimu code mbali kwamba tukio kitu.
Sahihi?
Je, hiyo mantiki?
OK.
Ndiyo.
Swali?
>> Watazamaji: Hivyo unaweza kuweka tag script chini chini?
>> JOSEPH Ong: Hivyo yeah.
Unaweza kuweka script tag chini chini.
Lakini basi tu inakuwa kweli messy.
Na sisi kama kuvifanya wote ya kanuni zetu katika sehemu moja.
Na hii itaruhusu yetu kufanya hivyo.
Kumbuka kabla ya hapo nilikuwa alisema kuna nicer njia ya kuhakikisha kwamba mambo ni
juu ya ukurasa kabla ya kutekeleza kanuni?
Na hii ni njia nzuri ya ungependa kukamilisha hilo.
>> Watazamaji: [inaudible].
>> JOSEPH Ong: Yeah.
Ungependa bado, sawa?
Kwa sababu kumbuka, ni pamoja na faili juu ya ukurasa.
Hivyo ni kwenda kutekeleza kwanza kabla ya kupata chini ya ukurasa.
OK.
Hivyo unaweza pia kuongeza mbalimbali aina ya tukio handler.
Hii moja tu michakato ya Clicks.
Wakati mimi bonyeza mdogo, kisha itakuwa pop up na tahadhari.
Hii ni tofauti aina ya tukio hilo.
Kinyume na tukio tayari, sasa kutumia tukio la click wakati kupokea
Clicks hiki.
>> Na hivyo katika kesi hii, kumbuka, click handler ni masharti ya mdogo.
Hivyo hutokea tu wakati Mimi bonyeza mdogo.
Na katika nyingine moja, tukio tayari masharti ya waraka huo.
Hivyo ni kusubiri kwa hati kuwa tayari.
Mantiki?
Nadhani unaweza kusonga mbele.
Ndiyo.
Swali?
>> Watazamaji: [inaudible].
katika kesi hii kutumia [inaudible].
>> JOSEPH Ong: Oh, yeah, kwa sababu katika hii kesi, mimi kusubiri kwa ajili ya mdogo
hiki kuonekana kwenye screen kwanza kabla ya mimi watachomeka click handler kwa
yake, ambayo ni kwa nini mimi kuiweka ndani ya ya hati tayari.
OK.
Na wa pili, hivyo hii ni mfano kubwa ya jinsi gani kuchanganya kila kitu.
Hii ni aina tu uthibitisho mfano ve kuonekana katika hotuba.
Hivyo kuchukua hatua kwa hatua kama kwenda kwa njia hii.
Na itakuwa kabisa OK.
Tu kusoma kutoka juu hadi chini.
>> Nina fomu chini.
Wakati hati ni tayari, mimi ambatisha kuwasilisha handler kwa aina, kama kwamba
wakati mimi kuwasilisha fomu, mimi kupata maadili ndani ya kila mmoja wa pembejeo hizo.
Na mimi kuangalia kama ni tupu.
Kama ni tupu, mimi kurudi uongo, kwa sababu Sitaki kuwasilisha fomu,
kwa sababu fomu ni sahihi.
Kama password ni tupu au ni chini zaidi ya herufi nane, mimi si kuwasilisha
fomu, kwa sababu hiyo pia makosa.
Na kurudi uongo tu kuzuia fomu kutoka kwa kuwasilisha na
kwenda ukurasa mpya.
>> Na hopefully, hii ina maana.
Nadhani guys lazima kutembea kwa njia ya kanuni hii hatua kwa hatua juu yako mwenyewe.
Na mara moja wewe kuelewa nini kuchagua mambo na kufanya mambo yake
kweli unahusu, hii itafanya mengi ya maana na wewe.
Ndiyo?
>> Watazamaji: Nini maana jina = jina la mtumiaji maana yake nini?
>> JOSEPH Ong: Kwa hiyo jina = jina la mtumiaji na jina = password tu ina maana kuangalia
sifa ya chochote wewe ni kuchagua.
Na kisha ambayo ina mechi.
Kwa hiyo sisi kwenda katika usajili.
Na kisha sisi kuangalia pembejeo zote na usajili.
Na kisha sisi kuchukua moja ambapo jina sifa ni sawa na jina la mtumiaji.
Ili selector kwanza kuchagua tu jina la mtumiaji pembejeo.
Na kwamba selector pili teua tu password moja, kwa sababu wale na
sifa jina wao kuweka kama nini wao ni walidhani kuwa.
Swali?
>> Watazamaji: On kuwasilisha, jinsi gani chini sehemu kutatua sehemu ya juu?
>> JOSEPH Ong: Basi hiyo ni kwa sababu ya tukio handler.
Hivyo tunasubiri kwa kuwasilisha tukio kwamba anapata kufukuzwa aina.
Na kwamba wote kwamba ni Waislamu.
Kwa nini mimi wito kuwasilisha huko up?
Ni anasema, wakati fomu ni in, Mimi kupata kuwasilisha tukio hilo.
Hivyo basi mimi tu kukatiza kuwa na kisha kukimbia kanuni hii badala yake.
Ndiyo?
>> Watazamaji: Kwa nini una kwa kuwa tukio kazi?
Kwa nini hawawezi wewe tu [inaudible]?
>> JOSEPH Ong: Kwa sababu katika JavaScript, wewe na kutangaza kazi.
Hiyo tu jinsi kazi katika JavaScript.
Una kusema ni kwenda kuendesha kazi.
Hivyo wewe ni kuwaambia ni kwamba wewe ni wanatarajia kazi hapa badala ya
tu curly braces.
>> Watazamaji: Na kazi ni chochote ifuatavyo?
>> JOSEPH Ong: Yeah.
kazi ni chochote ni ndani ya braces curly baada ya
kwamba kazi ya keyword.
Ndiyo?
>> Watazamaji: [inaudible].
>> JOSEPH Ong: Kwa Waislamu?
>> Watazamaji: Hapana, kwa ajili ya kazi bila ya tukio hilo.
>> JOSEPH Ong: Yeah.
Hivyo bila ya tukio hilo, unaweza kuwa na hiyo.
Kama huna haja ya tukio hilo, basi unaweza tu omit yake.
Lakini kama wewe kufanya, basi tu ya kuweka huko.
Ndiyo.
Haraka swali?
>> Watazamaji: [inaudible].
>> JOSEPH Ong: Yeah.
Kwa sababu unahitaji nini cha kufanya, document.ready tu anasema kusubiri kwa ajili ya wote
HTML kwenye ukurasa wa mzigo kwanza.
Na kwa kawaida, unataka mambo yako katika mahali kabla ya kukimbia code yoyote.
Sawa.
Sisi na kupata Ajax.
Hatuna muda mwingi.
Hivyo faida na hasara.
JavaScript ni rahisi kujaribu kuandika na jQuery.
Lakini jQuery ni aina ya polepole.
>> Ni kama PHP ni polepole zaidi kuliko C, kwa sababu ni kufasiriwa.
Na jQuery ni kidogo polepole zaidi kuliko JavaScript, kwa sababu anafanya mengi ya
mambo chini ya kofia.
Na hivyo kama unatumia jQuery, ni kidogo tu polepole zaidi kuliko
JavaScript, hata kama ni anatoa nzuri ulimbwende.
Na hatimaye, Ajax.
Hivyo mbali na Ajax, hawajaona Ajax katika suala la pset7 bado, kwa sababu
wakati wa kufanya, kuwasilisha fomu ya kunukuu.
Ni mizigo ukurasa mpya.
Ili kupata hii kubwa nyeupe flash juu ya ukurasa wakati kwamba
ukurasa wa pili mizigo, sahihi?
>> Itakuwa kweli nzuri kama wewe hawakuwa na flash hii.
Kama Facebook, kama wewe tu kitabu kwa chini, inaongeza mambo mapya
bila refreshing ukurasa mzima.
Hivyo kitu kama hii itakuwa nzuri.
Hii ni JavaScript code upande wa kushoto.
Unaweza kupata nini ni ndani ya pembejeo kwamba.
Unaweza kupata hisa maelezo kutoka Yahoo!
Na kisha kufanya kamba kubwa kwamba anasema, OK, huu ni ujumbe nataka
kuonyesha kwenye screen.
Na kisha kuweka ujumbe kwamba ndani ya baadhi ya hiki HTML kwamba anapata
kuonyeshwa kwenye screen.
>> Hivyo kwamba ni yote yale yanayotokea hapa.
Hivyo kimsingi, kwa sababu hii yote ni JavaScript na huna haja ya kuendesha
tena PHP, hii kuhakikisha kwamba ukurasa haina mahitaji.
Hivyo hii ni wazo tu abstract kwamba mimi kusema hapa kwa sasa.
wazo abstract ni kwamba kama wewe kufanya hivyo wote katika JavaScript, huna
ukurasa mahitaji.
Lakini jinsi gani unaweza kweli kufanya hili?
>> Vizuri, kwa kweli, hebu majadiliano juu ya tatizo na hii ya kwanza.
Tatizo ni katika JavaScript, utekelezaji ni synchronous.
Hivyo kuwa na kusubiri kwa moja line kumaliza kabla ya
kutekeleza line ijayo.
Na nini kama mimi nina kwenda juu ya Yahoo!, na server yao ni kweli polepole, na
inachukua yao sekunde tatu kwa nipe nyuma kwamba hisa info?
Wakati mimi hit kwamba line bei, kama utekelezaji ni synchronous, kama ni kwa
default, ni nini tu kwenda kufanya ni ya browser yako ni kwenda duka kwa
sekunde tatu.
Na wewe si kwenda kuwa na uwezo wa kufanya kitu chochote wakati anapata data hiyo.
Ni kinaendelea kuwa hao.
>> Na kwamba ni mbaya.
Hawataki mtumiaji na waliohifadhiwa mtandao ukurasa.
Sahihi?
Hiyo ni mbaya tu.
Kila mmoja anakubali?
Kama wewe ni kuvinjari Facebook na huganda na huwezi kufanya kitu chochote,
kupata kweli kuchanganyikiwa.
Hivyo ufumbuzi ni sisi kufanya kitu Asynchronous badala yake.
Hivyo jambo hili wote Asynchronous anasema ni, mimi naenda kuuliza hii
URL kwa baadhi ya data.
Na kisha mimi nina kwenda kuendelea.
Mimi tu kwenda kuweka utekelezaji chochote kificho kwamba alikuwa baada ya hapo.
>> Na kisha wakati wowote data kwamba ni tayari, basi mimi mchakato yake.
Hayo ni yote ni akisema.
>> Watazamaji: Ajax tu hufanya code Asynchronous?
>> JOSEPH Ong: Ni asynchronous njia ya data kuchota.
Hivyo jambo la kwanza kuhusu Ajax ni lets mimi kupata data
kutoka kwenye tovuti ya nje.
Na jambo la pili ni inafanya uhakika kwamba ukurasa wangu hana duka wakati mimi nina
kuchota data hiyo.
Hiyo ni sehemu Asynchronous yake.
Kwa sababu huenda mbali mahali pengine, kwa sababu mimi kusema kuendelea juu ya wakati
ni kuchota data hiyo, ya kwamba inafanya Asynchronous.
Mimi kuweka utekelezaji.
>> Hivyo kuendelea kuwa asynchronous wazo katika akili.
Na mimi itabidi kuonyesha nini tofauti ni.
toleo synchronous ni upande wa kushoto.
toleo asynchronous ni upande wa kulia.
Kuangalia idadi kuona ambayo hatua yanahusiana na nini
executes katika kila mstari.
Zaidi ya hapo, tahadhari inaonyesha juu kwanza.
Kwa sababu ya kupata hisa maelezo kutoka Yahoo!
inachukua sekunde tatu, maduka kwa sekunde tatu.
Na kisha alerts bei baada ya sekunde wale watatu.
>> Basi sasa, kwamba macho inaonyesha hadi saa wakati huo -
sekunde tatu in
Na kisha alerts na baada ya hapo.
Hivyo huenda tu hatua kwa hatua.
Ni kama nini guys wangeweza kukubali, sahihi?
Pamoja na Asynchronous utekelezaji, ninyi macho ya kwanza.
Basi kwenda mbali na URL hii.
Na kusema, mimi nina kwenda kuuliza tu kwa data.
Na kisha mimi nina kwenda mchakato wa baadaye.
Hivyo mara moja executes mstari wa pili baada ya mimi kufanya
Asynchronous ombi.
>> Hivyo sekunde 0.001, unaweza kuona macho hi.
Kutekeleza kwamba kazi, macho bye.
Na kwa sababu mimi alitoa ahadi kwamba mimi ingekuwa mchakato data baadaye, nini
hutokea ni wakati data kwamba anakuja nyuma sekunde tatu baadaye, basi mimi kukimbia kwamba
kazi ambayo nina zaidi ya hapo.
Ndiyo?
>> Watazamaji: Je, wewe taja au kufafanua nini Ajax inamaanisha nini?
>> JOSEPH Ong: Kwa hiyo Ajax ni njia kwamba kama mimi haja data wakati mimi niko kwenye tovuti na mimi
hawataki mahitaji ukurasa, basi Mimi kutumia teknolojia ya hii inayoitwa Ajax.
Kwamba kimsingi ina maana, kwenda kuchota data kutoka tovuti nyingine.
Na kufanya hivyo kwa njia tu kwamba haina duka mtandao ukurasa wangu.
>> Watazamaji: Hivyo ni kwamba asili sehemu ya JavaScript au jQuery?
>> JOSEPH Ong: Kwa hiyo mtu aliandika njia ya kufanya hii katika JavaScript muda mrefu uliopita.
Katika hatua moja, haikuwepo.
Na hivyo mtu zuliwa mbinu hii kuruhusu watu kuomba data hii
kwa mtindo huu.
Na waliandika baadhi ya mambo kufanya hivyo kwa ajili yenu.
Na jQuery tu inakupa hii nzuri sana njia ya kufanya hivyo
na $ hii. kupata kazi.
maswali?
Siwezi kujibu maswali kuhusu Ajax baadaye pia.
Mimi nitakuwa hapa.
>> Hivyo hebu sisi kuchota data bila refreshing ukurasa.
Na hebu sisi kufanya hivyo katika njia Asynchronous kwamba
haina kufungia ukurasa.
Muda mrefu sana, hakuwa na kusoma kama kwamba maelezo mara muda mrefu sana kwa ajili yenu.
Hivyo hatimaye, msalaba-site scripting mashambulizi.
Tuliona huu kwa Zamyla.
Kama katika database yangu mtu ana jina hili, ambayo ni hii tag script, na mimi
na baadhi ya kanuni juu ya ukurasa yangu kwamba prints nje majina ya watu katika mstari, au mimi
baadhi JavaScript kificho kwamba kuwekeza jina hili katika ukurasa,
nini HTML anapata zinazozalishwa?
Naam, mimi magazeti nje HTML tag.
Mimi magazeti nje haya tags wote.
>> Mimi kupata sehemu ambapo mimi nina uchapishaji nje na marafiki zangu.
Mimi magazeti Lauren nje.
Ni magazeti Milo nje.
Na kisha jina langu katika orodha ya ni script baada ya
unflattering Facebook sasa.
Kwa sababu mimi kuingizwa hii katika ukurasa kwa sababu inaonekana kama JavaScript, wakati
ukurasa hii anapata alimtuma user, anapata kunyongwa kama JavaScript.
Na hivyo hii ni kile tunachokiita msalaba-site scripting shambulio hilo.
Mtu unaweka habari malicious katika Mbegu yako ambayo inaweza yanahusiana na
baadhi kamba ya ziada au baadhi kamba JavaScript.
>> Na wakati anapata kuchapishwa kwa ukurasa kwa mtindo huu, basi
kinachotokea ni kwamba kanuni mbaya anapata kunyongwa kwamba sikuwa na nia ya
kwa kuwa na kupata kuuawa.
Na kwamba wote msalaba-site scripting mashambulizi ni.
Na njia ya kupata karibu hii ni kama Zamyla alisema.
Wewe tu kufuta mambo katika HTML maalum chars.
Na hii HTML chars maalum ni PHP kazi ambayo kuzuia aina hii
ya kitu kutoka yanatokea kwenu kama una malicious
kamba katika orodha yako.
Ni tu epuka, hivyo kwamba hana kupata kutafsiriwa kama HTML.
Ni nafasi ya mabano kidogo na kile tunachokiita vyombo.
Na sisi akaenda juu ya hili katika hotuba pia.
Hivyo nadhani nyie wanapaswa kuwa na kufahamu nzuri juu ya hilo.
Maswali?
Ndiyo.
>> Watazamaji: Hivyo ni jinsi gani [Inaudible]?
>> JOSEPH Ong: Sema tena.
>> Watazamaji: Ni kwa jinsi gani kufuatilia -
>> JOSEPH Ong: Haki.
Hivyo kuwa na kitu ambacho anasema, wakati Mimi kujiandikisha, aina ya jina langu.
I just aina katika shamba hilo, jina langu ni stript baada ya unflattering Facebook
hali ya karibu script tag.
Na kwamba tu anapata kuweka katika database, kwa sababu siwezi kusema mtu
katika dunia haina jina na mshale wa kushoto katika au
neno script ndani yake.
Kwamba si kweli mantiki.
Hivyo mimi tu na kuhakikisha kwamba mimi kumsafisha mambo kabla ya mimi magazeti
nje kwa ukurasa.
>> Watazamaji: Kwa hiyo kadi HTML maalum kuzuia vitambulisho script?
>> JOSEPH Ong: Yeah.
Hivyo hana kuzuia vitambulisho script.
Ni tu hufanya kuhakikisha kwamba tags script hawapati
kufasiriwa kama HTML au -
yeah.
Ni tu anakuja juu kama nini ni kweli ni.
Sawa.
Ili kwamba ilikuwa mapitio jaribio.
Baridi.
>> [Makofi]