>> [MUSIC Playing]
HANNAH: Hi, të gjithë.
Faleminderit djema aq shumë për të ardhur nga në mot të neveritshme për quiz një
të shqyrtojë seancë.
Si ju djema e di, quiz një është kjo e mërkurë.
Pra, ne jemi duke shkuar për të shkuar përmes një bandë e temave.
Davin: Hej, mund të them diçka të vërtetë të shpejtë?
HANNAH: Yeah, Davin-së shkuar për të thënë diçka të vërtetë të shpejtë.
Davin: Më vjen keq.
Vetëm të shpejtë të vërtetë, në qoftë se ju keni pyetje për quiz, ju mund të shkoni online.
Shko në 2014 një kuiz, për quiz.
Atë e mori logjistikës për ku të shkoni, kur për të shkuar.
Nëse ju jeni të regjistruar në të njëjtën kohë, ne jemi do të kemi një quiz grim në 05:30.
Ose në qoftë se ju më dërgoi një çështje, ju keni disa çështje të tjera.
Por 05:30 është make-up Koha më e mërkurë.
Por në qoftë se ju keni pyetje, pyetje të përgjithshme,
internet ka të gjitha logjistikës.
Pra kontrolloni aty pari.
>> HANNAH: mbresëlënës.
Kështu që këtu është lista e madhe e temave se ne jemi duke shkuar për të shkuar deri sot.
Unë jam duke shkuar për të mbuluar të gjitha të C sende, e cila është se kolonë të parë.
Pra sende C se ne i mbuluar pas quiz zero.
Duke filluar me një listë të lidhura, e cila përfshin pointers.
>> Në rregull, kështu që ne pamë këtë në seancën e fundit të shqyrtimit,
kështu që unë jam duke shkuar për të shkuar nëpërmjet kjo është pak më të shpejtë.
Vetëm të ngrenë dorën tuaj nëse doni mua për të ngadalësojë ose të adresuar diçka më tej.
Por ne i përdorim listat e lidhur sepse kemi filluar në C me vargjeve.
Dhe vargjeve janë të mëdha, por Problemi është se ata kanë një madhësi të caktuar.
Listat e lidhura të na lejojë për të krijuar mesme dinamike strukturat e të dhënave.
>> Dhe ne kemi operacionet tona themelore, insert, fshini, dhe kërko.
Dhe ne mund të bëjmë insert në Rasti më i keq kohë konstante
në qoftë se ne vetëm vënë atë në fillim.
Fshij dhe kërko, më i keq Rasti i madh oh e kohës n.
Pra, përsëri, vetëm për të rrokullisje nëpër këto foto,
Unë e di që kemi parë këto kohë të fundit, por ne duan të mbajnë gjurmët e listës sonë të lidhura
nga mbajtja e kreu i listës sonë të lidhura.
Sepse ne e dimë se secili një nga nyjet tona
është vetëm do të tregojnë për nyje tjetër në listën tonë të lidhura.
>> Pra, kjo është se si ne të mbajnë gjurmët.
Edhe pse këto nuk janë pjesë e vazhdueshme e kujtesës,
ne mund t'i gjeni duke i drejtë duke ndjekur shigjetat ndryshme.
Këtu është struktura jonë për një listë nyje të lidhura.
Ne e pamë këtë herë të fundit.
Ne kemi nyje tonë struct.
Dhe ajo ka dy veti.
Numri një, aktual Vlera ne duam të ruajtur.
Në këtë rast, është një numër të plotë.
Kjo mund të jetë një varg, ajo mund të të jetë një char, çdo gjë që ju dëshironi.
Dhe pastaj, ne duhet të mbajnë gjurmët e nyje tjetër në listën tonë të lidhura.
Kështu që do të jetë një treguesin në nyjen e ardhshëm.
Nëse keni qenë vetëm duke bërë kërko, siç kam thënë më parë,
ju do të keni për të ndjekur shigjetat tuaja poshtë.
Futje, ju do të mbani gjurmët e ku pjesa tjetër e listës suaj është.
Dhe ju doni të përcjellim në kokë të tregojnë për elementin tonë të re, e cila
në këtë rast është një, dhe pastaj një do të nxjerr
të mbetur të lista lidhur.
Pra, përsëri, unë e di se kjo është pak bit e një përsëritje nga quiz zero.
Pra, ne duhet të jemi shumë të kujdesshëm për rendin në të cilën ne
bëjnë këto pointings kështu që ne nuk bëjmë të humbur gjurmët e pasme të listës.
OK, ndonjë pyetje me vetëm i lidhur në formë individuale listat?
Awesome, OK, cool.
>> Deri tani, ne jemi duke shkuar për të shkuar mbi diçka vetëm pak më e komplikuar,
i lidhur dyfish listat.
Pra, përveç mbajtjes udhë e nyjeve të ardhshëm,
ne gjithashtu duam të mbajtur nën e nyjeve kaluar.
Dhe kjo na lejon për të, në qoftë se ne jemi në një pikë në listën tonë të lidhura,
jo vetëm të shkojnë përpara, por gjithashtu iterate prapa.
Sepse siç e pamë në një listë e lidhur në formë individuale,
në qoftë se ne ishim në një nyje, dhe të gjithë një e papritur, ne kemi vendosur,
në të vërtetë, unë dua të shkoj në e drejtë nyjen para meje,
ju do të keni për të shkuar të gjithë mënyrë mbrapa në kokë
dhe iterate përmes derisa ju të gjetur nyjen ju po kërkoni.
>> Pra, kjo i bën gjërat pak më e lehtë si ne jemi
duke u përpjekur për të iterate përmes listën tonë të lidhura.
Por kjo kërkon që ne të mbajnë gjurmët e njërit më akrep, kështu që një yll më shumë nyje.
Në rregull, kështu që këtu vjen pjesa fun.
Ne jemi duke shkuar për të praktikuar zbatimin hequr për listat e lidhura dyfish.
Pra, kjo është diçka që është lojë tërësisht e drejtë për quiz.
Ajo ka treguar deri në kuize të fundit.
Pra, patjetër të jenë të përgatitur të kodit pak në C.
Mos harroni se me gjithë kjo PHP argëtim dhe JavaScript,
ne ende duhet të mbani mend për të bërë C. Pra pastrohen deri në atë
nëse ju jeni ndjeheni ndryshkur.
>> Në rregull, le të shohim nëse ne mund të bëjmë këtë.
OK, cool.
Pra, ne jemi duke shkuar për të provoni për të redaktuar të drejtë në këtu,
dhe shpresojmë se kjo shkon siç është planifikuar.
Në rregull, ka njeri të dëshironi të jepni mua një sugjerim se si unë duhet të fillojë?
Vetëm supozim unë jam duke e bërë është se unë tashmë
kanë një strukturë të përcaktuar, një I tregoi në faqen e fundit,
në rrëshqitje e fundit.
Dhe unë jam ruajtjen kreun e lidhura tim listë në disa treguesin e quajtur listë.
Do që ndokush të merrni mua filloi?
>> AUDIENCA: A mund të krijojë një të ri nyje për të thirrur nëpër lista?
>> HANNAH: mbresëlënës, kështu ne jemi duke shkuar për të krijuar
një nyje të re të zvarritem nëpër lista.
Më pëlqen kjo.
Unë vetëm do të thërrasë atë akrep nëse kjo është në rregull.
Dhe ku duhet ajo fillimisht të fillojë?
>> AUDIENCA: Ndoshta në kreu i listës.
HANNAH: Beautiful.
Ne duam të fillojë në kokë, i cili Unë i thashë do të jetë i ruajtur në listë.
Awesome.
Deri më tani, në mënyrë të mirë.
Dhe tani, qëllimi ynë është që të iterate nëpër lista
deri sa të gjejmë nyjen me Vlera n se ne duam të fshini.
OK?
>> Pra, tani është pjesa ku ne duam të iterate nëpër.
Can anyone sugjerojnë një mënyrë për të iterate nëpër?
>> AUDIENCA: Një lak.
>> HANNAH: Një lak.
Unë e dua atë.
Në mënyrë të veçantë, ne mund të provoni një lak, ndërsa.
OK, dhe ne e dimë se ne kemi arritur fundi i listës sonë kur është çfarë?
AUDIENCA: Kur akrep është null.
HANNAH: Kur akrep është null.
Beautiful, I love it.
OK, cool.
Pra vjen keq nëse mbajtëse ime bounding është lloj duke u pakësuar në ekran.
Ne e solli atë përsëri.
OK, cool.
Çfarë ndodh më pas?
>> Pra, ne e dimë që ne duam të fshini nyjë që ka vlerë n.
Pra, le të gjej rastin kur është e ne në të vërtetë të gjeni nyje tonë.
Pra, si do që unë të kontrolloni se?
Unë do të them vetëm nëse akrep, dhe pastaj nëse unë doni të merrni vlerën nga akrep,
Unë vetëm mund shigjetë n, është e barabartë n, parametrin
që kemi dhënë në këtë funksion, nyjë që ne duam të vërtetë fshini.
Çdo pyetje deri deri këtu?
Dakord.
OK, kështu që tani le të nxjerrë një foto të shpejtë në tabelën në mënyrë të dukshëm kjo.
>> Pra, le të thonë se nuk ka nyje tonë të bukur.
Dhe kjo ka një vlerë, unë do të them vetëm katër.
Dhe kjo tregon për tjetër nyje në listën tonë të lidhura.
Dhe nuk ka asgjë para tij.
Pra, ne kemi previous tonë duke treguar për asgjë.
Në këtë rast, ne pikë prapa.
OK, vetëm ngritjen tim i lidhur listë mbi këtu.
Dhe ne kemi një listë që tregon në këtë strukturë për të filluar me.
Unë do të tërheq një më shumë për hir të plotësisë.
OK.
Unë do të theksoj këtë përpara.
Dhe unë do të theksoj se një prapa.
Oops, sorry.
Yeah, mori kjo prapa.
A atë përsëri.
OK, atje ne do të shkojmë.
Në rregull, e mori atë.
OK, këtu është fotografia jonë.
>> OK, kështu që ne duam të marrin në konsideratë dy raste.
Rasti i parë është nëse nyje ne duam të fshini
është që në fillim të listës sonë.
Dhe pastaj, rasti i dytë që ne duam për t'u marrë parasysh është nëse është e kudo tjetër.
Unë e kuptoj se kjo a tërësisht i çrregullt duke tërhequr me gjithë erasing tim,
por shpresojmë se ne do të përpiqemi për të të bërë këtë të qartë me disa kodin.
>> OK, kështu që le të mbulojë çështjen ku kemi gjetur nyje tonë,
dhe kjo është në shumë filloni nga listën tonë të lidhura.
Dikush të më jepni një sugjerim këtu si për atë
Unë duhet të bëjë në fakt të hequr nyje tonë?
Kjo është pak i ndërlikuar.
OK?
>> AUDIENCA: Ju keni për të marrë nyje që do të jetë para saj
dhe të bëjë atë të tregojnë për një të tillë që do të jetë pas saj,
dhe të marrë nyjen që do të ishte pas saj dhe të bëjë
ajo pikë në nyjen para saj.
HANNAH: Pikërisht.
OK, kështu që ky është rasti where-- ne kemi dy raste.
Ne kemi rastin ku e nyjë që ne jemi duke kërkuar për
është front i listës.
OK, dhe pastaj rasti që t'ju përshkruar është ndryshe, e drejtë?
Është diku tjetër në listë.
Pra, ju tha, ne kemi nevojë për të shikoni në nyjen e mëparshëm,
dhe të bëjë nyjen e mëparshme tregojnë për nyjen e ardhshëm.
Pra, le të thonë se ne jemi duke u përpjekur për të marrë nga pesë
në vizatim tim shumë të çrregullt mbi këtu.
Ne duam të sigurohemi që katër tani vë në gjashtë.
Katër-së pika të ardhshëm në gjashtë.
Dhe gjashtë pikat e mëparshme të katër.
Kjo është qëllimi ynë këtu, apo jo?
Kjo është ajo që unë mendoj se ju tha pak më shumë atje.
>> OK, kështu që le të marrë atë copë të parë.
Le të bëjmë të ketë akrep i mëparshëm i mëparshëm.
Pra, katër të ardhshëm duhet të tregojnë për çfarë?
Pikërisht, në këtë rast, gjashtë.
Pra, ne duhet të themi treguesin, tjetër.
OK?
Dakord.
Pra, le të heqin qafe këtë foto shëmtuar dhe të përpiqen për të nxjerrë një të pak nicer.
Ne kemi kokën listën tonë këtu.
Dhe që tregon për nyjen e parë në lista jonë e lidhur, që kemi thënë është katër.
Ja nyje ynë i dytë, pesë.
Dhe nyje ynë i tretë, gjashtë.
Vetëm duke u përpjekur për të nxjerrë të njëjtën gjë e saktë foto, vetëm pak më shumë pastër.
OK, kështu që katër të ardhshëm fillimisht vë në pesë.
Pesë-së pika të ardhshëm në gjashtë.
Gjashtë pikat e mëparshme për pesë.
Dhe pesë-së pikat e mëparshme të katër.
Aq shumë nicer!
OK, cool.
>> Deri tani, ajo që ne e bëmë vetëm këtu, kjo linjë e kodit,
e cila thotë akrep mëparshme tjetër, kështu që çfarë do të thotë kjo?
Kjo do të thotë në qoftë se ne jemi duke kërkuar në pesë, shkoni në nyjen e mëparshëm,
dhe është e ardhshëm duhet tani pikë në pesë të ardhshëm.
Pra, në thelb, ajo që kjo është bërë po që është fshirja e këtij shigjetë
dhe duke e bërë të kaloni djathtas mbi pesë.
A është kjo e qartë?
Unë e di se mund të jetë pak skematik.
Unë shoh disa nyje kokë.
Kjo është e mirë.
OK, cool.
Tani, çfarë është hapi tjetër?
>> Unë e kam rivendosur tjetër.
Tani, cila shigjetë tjetër nuk kam nevojë për të ndryshuar?
Kjo e drejtë këtu.
Gjashtë-së mëparshme.
Ne nuk duam gjashtë e mëparshme për pikë në pesë më.
Ne duam që ajo të nxjerr në katër.
A se foto kuptim?
Pra, tani ne fakt mund të marrë pesë out.
Pra, le të marrë atë copë.
Çfarë duhet të bëj para se unë rivendosni gjashtë-së mëparshme në katër?
Çdo ide atje?
>> AUDIENCA: Free nyjen mes ata duke vendosur që ajo të null?
HANNAH: Best.
Definitely, qëllimi ynë përfundimtar është do të jetë për të liruar nyjen.
Pra, ne mund të bëjmë atë të drejtë këtu.
Akrep falas.
Absolutisht.
Por edhe para se, le të just-- drejtën tonë qëllimi
këtu është për të vendosur treguesin e ardhshme mëparshme e barabartë me treguesin e mëparshme.
Unë e di se kjo është duke u mbuluar.
OK, le të take-- cool.
A mund të gjithë të shohin këtë linjë fund?
Apo është super i vogël?
>> Pra, para se të ekzekutojë kjo linjë këtu, ne duam
për të siguruar se tregues tjetër nuk është i pavlefshëm.
Sepse nëse akrep tjetër është null, çfarë lloj të gabimit
do të shkoj kur unë të përpiqet për të referencë një tregues null?
AUDIENCA: faji seg.
HANNAH: Një faji seg, të bukur.
OK, kështu që nëse kjo nuk është e null, atëherë ne mund të rishkruhet.
Dhe ne kemi gjashtë pikë përsëri në katër.
Pyetjet Deri në këtë pikë?
Po?
>> AUDIENCA: Në juaj e parë nëse deklarate, a keni
do të thotë që të ketë arrow tjetër, ose [e padëgjueshme]?
HANNAH: Unë do të thotë akrep shigjetë n.
Pra, në thelb, ajo që unë jam duke u përpjekur për të bërë po them, nyjen aktual që unë jam
iterating mbi, nyjen aktual që Unë jam duke kërkuar në, unë jam ruajtjen në treguesin.
Dhe unë dua të di akrep-së vlera, e cila në këtë rast është n.
Dhe unë dua të shoh, është nyjë Unë jam duke kërkuar
për nyjen unë jam duke synuar për të fshini?
Pra, kjo është arsyeja pse ne kemi këtu treguesin n.
>> AUDIENCA: Pra shigjetë shkuar deri n, keni vendosur vlerën
dhe ruajtur atë në një nyje të quajtur n?
>> HANNAH: Pra, kjo është si në qoftë se unë jam duke kaluar nëpër këtë listë të lidhura
dhe duke treguar për pesë.
Nëse unë dua të të marrë atë vlerë, në qoftë se Unë dua që të merrni këtë numër, 5,
Unë kam për të bërë tregues shigjetë n.
I ftohtë?
Vërtet.
>> AUDIENCA: është n emrin e variablit?
HANNAH: Po.
Pra, nëse ne rrokullisje prapa një rrëshqitje, n është emri
të vlerës brenda e nyje në listën tonë të lidhura.
Dhe unë e di se ajo mund të marrë pak pak konfuze sepse ne gjithashtu
janë duke e quajtur gjënë që ne duam të fshini n.
Pra, kjo është ajo ku se një linjë vjen nga.
Vërtet?
>> AUDIENCA: Çfarë keni [E padëgjueshme] si ata punojnë?
Një tregues [e padëgjueshme]?
>> HANNAH: Sigurisht.
A jeni duke folur about-- cila linjë?
AUDIENCA: Linja e fundit [e padëgjueshme].
>> HANNAH: Sure, OK.
Pra, le të shohim në foto në mënyrë që të përpiqen për të shpjeguar këtë.
Më vjen keq, për kamera, pyetja ishte
mund të shpjegoj treguesin shigjetë tregues tjetër i mëparshëm.
OK, kështu që le të thonë se ne jemi në pesë dhe qëllimi ynë është që të fshini pesë.
Pra treguesin e ardhshme, të cilat nga këto tre nyjet e bën që të na japë?
Kjo na sjell në nyjen e gjashtë, e drejtë?
>> OK, kështu që tani që ne jemi duke i kërkuar për gjashtë-së mëparshme.
OK?
Dhe ne jemi duke resetting kjo të jenë të barabartë me katër,
i cili ka ndodhur të jetë pesë të mëparshme.
Unë e di, kjo është super e vështirë të mbajnë gjurmët e.
Unë me të vërtetë ju rekomandojmë që të nxjerrë fotot nëse ju merrni një pyetje si kjo.
Po?
>> AUDIENCA: A është arsyeja që ne nuk kemi një [e padëgjueshme]?
>> HANNAH: Pikërisht.
Pra, pyetja ishte, pse bëni ne nuk duhet të kontrolloni këtu?
Pse nuk kemi nevojë të kontrolloni se akrep i mëparshëm nuk është i barabartë me null?
Dhe kjo është për shkak se ne kemi tashmë të ndara nga
rasti nëse akrep-së në fillim.
Pyetje shumë e mirë.
Çdo gjë tjetër në këtë?
OK, cool.
Pra, le të përfundojë atë.
Ne jemi pothuajse atje.
>> Pra, çfarë nëse ajo është në krye?
Çfarë nëse në vend të duke u përpjekur të fshini pesë,
ne në të vërtetë të kërkuar për të fshini katër?
Çfarë do të më duhet të bëj?
E pra, unë dua të rivendosur kokën time për çfarë?
Shout atë?
AUDIENCA: njëra pas saj.
HANNAH: Beautiful.
OK, kështu që ne duan lista që do të vënë në për çfarëdo akrep nyje ynë tjetër është.
I mirë.
Dhe vetëm për plotësinë-së hir, ne do të
dëshironi të kontrolloni se sa kohë që lista jonë nuk është null, sa kohë që lista jonë nuk është
bosh, atëherë ne duam të vendosur ynë i mëparshëm i barabartë për të null.
Pyetje deri tani?
Një hap larg from--?
>> AUDIENCA: A do të ishte nëse lista nuk është e barabartë tek null?
>> HANNAH: Po, ju jeni plotësisht të drejtë.
Unë jam aq i keq.
Është lista nuk është e barabartë me null.
Awesome.
Duke u përpjekur për të sjellë këtë të gjithë në ekran.
Është lloj i bie off.
Na vjen keq, djema.
Dhe e fundit por jo më pak, të gjithë ne duhet të bëni është kthimi.
OK.
Kjo ishte një shumë e mbushur në të vërtetë shpejt.
Merrni një të dytë për të parë këtë pa.
Më tregoni nëse keni ndonjë pyetje.
Vërtet?
>> AUDIENCA: Nëse lista është në kreu, then-- prisni, Nevermind.
>> HANNAH: OK, mirë.
Pra, kjo është në qoftë listë është në krye, ne hiqni atë për çdo gjë që ne e futur.
Vërtet?
>> AUDIENCA: A mund të shpjegojë parë nëse deklarata përsëri?
Nëse tregues të n është e barabartë me n?
HANNAH: Sigurisht.
Pra, qëllimi ynë i këtij funksioni të tërë është të fshini nyjen që ka vlerë n.
Pra, nëse ne gjejmë, si ne jemi iterating përmes listën tonë,
nyjë me vlerës n, kjo është e një ne duam të fshini.
Pra të gjithë e fshirjes ndodh brenda asaj i madh nëse deklaratë.
A që ka kuptim?
Ftohtë.
Vërtet?
>> AUDIENCA: Ndoshta ju thjesht nuk mund të shihni ajo, por mos ju gjithashtu nevojë për një linjë të
për Scroll nëpër lista?
HANNAH: mbresëlënës.
Le të sjellë kjo deri pak, dhe ne do të hedhin atë të drejtë në pjesën e poshtme.
Ndoshta bordi do të kemi qenë një ide pak më të mirë.
Pra, si do të lëvizë treguesin përpara?
>> AUDIENCA: Pointer është e barabartë me treguesin plus një.
>> HANNAH: Beautiful.
Kështu që na lejon të vazhdojnë iterating përmes.
OK.
AUDIENCA: A nuk do të ndodhë ndonjë tjetër?
HANNAH: Një herë më shumë?
AUDIENCA: A nuk do të ketë një tjetër pasi i madh i vjetër në qoftë se
Deklarata [e padëgjueshme]?
HANNAH: Cila pjesë?
Më vjen keq.
>> AUDIENCA: traversal, nuk duhet të ketë një tjetër?
HANNAH: Ju absolutisht mund të ketë një tjetër.
Sepse unë kam të drejtë të kthimit atje, ju nuk keni nevojë për një tjetër.
Por vërtet, pyetje e mirë.
OK, po?
AUDIENCA: A mund të mendoni për treguesin që lëvizin nëpër lista
si duke marrë mbi vlerën i çdo nyje në listë?
Apo duhet të mendojnë për atë si lloj i jashtëm në listë?
>> HANNAH: Ose një është e mirë, unë mendoj.
Mënyra unë të imagjinojmë se është Unë them, OK, unë jam akrep.
Dhe kjo është më.
Kjo është dora ime.
Unë jam duke shkuar për pikë për të ndryshëm gjërat që unë dua për të iterate nëpër.
Së pari, unë jam duke shkuar për pikë në krye të listës.
Dhe kjo tregon mua unë jam do të tregojnë për katër.
Dhe kështu unë, duke qenë i jashtëm në listë, I mund pikë në secilin prej këtyre elementëve.
Kështu që unë mendoj për veten si pointer.
Audienca: Pra, kur ju fshini një nga ato elemente,
ju fshini veten, kështu që të flasin.
HANNAH: Pikërisht.
Pra, ju fshini gjë ju jeni duke treguar.
Kështu në shembullin që ne pamë ku ne jemi
duke u përpjekur të fshini pesë, kur unë jam duke treguar për pesë,
Unë dua të fshini gjë që unë jam duke treguar për.
Saktësisht e drejtë.
Po?
AUDIENCA: A e kemi marrë kujdesin e rast ku n nuk është në lista?
HANNAH: Nëse n nuk është në lista?
E gjithë kjo do të ndodhë është që ju jeni do të iterate nëpër dhe Iterate
përmes, dhe pastaj, ju do të jeni për të marrë në treguesin duke u null,
dhe pastaj ju do të jeni për të bërë.
>> Audienca: Pra, a kemi asgjë për t'u kthyer?
HANNAH: Ne mund.
Mënyra se nëse përcaktohet kjo funksion, unë vetëm them se ajo kthehet
të pavlefshme pa dallim.
Por ju mund të keni diçka si u kthyer një numër të plotë,
dhe e kanë atë të kthehen negativ 1 nëse ajo dështon.
Diçka si kjo.
Pyetjet with-- po?
Audienca: [padëgjueshme]?
HANNAH: Na vjen keq?
Audienca: [padëgjueshme]?
HANNAH: Sigurisht.
Pra, kjo është actual-- dikur ne kemi bërë e gjithë kjo punë e lëviz
të gjitha këto shigjeta përreth, e tërë ynë Qëllimi ishte për të hequr qafe të nyjeve
që ne po kërkoni.
Pra në këtë rast, duke çliruar akrep, në qoftë se unë jam duke treguar për pesë,
kjo është si fshirja e kësaj nyje e mesme.
Kjo është pjesë e lirë akrep.
Se kuptim?
>> Audienca: Pra menduar edhe ju nuk e [e padëgjueshme]?
>> HANNAH: Pra, ne mori në fillim kemi pasur disa lista që ishte already--
ata kishin vënë këtë së bashku.
Pra, në mënyrë për të ndërtuar këtë listë, ata duhet të kem [e padëgjueshme].
Ftohtë.
Çdo gjë tjetër me këtë?
Po?
>> AUDIENCA: Çfarë nëse lista nuk e barabartë me linjë të null?
[E padëgjueshme]?
HANNAH: E drejta këtu?
AUDIENCA: Po.
HANNAH: OK, të gjitha unë jam duke bërë po unë jam vetëm duke u siguruar
që para se unë të përpiqet për të listën dereference, para se unë të përpiqet për të hyrë mëparshme,
Unë dua të bëni të sigurtë që kjo nuk është e null kështu që unë nuk do të marrë një defekt seg.
Ftohtë.
>> OK, unë e di se kjo ishte mjaft një shumë për të marrë përmes.
Pra, kjo rrëshqitje do të jetë vënë në dispozicion për ju.
Kështu që ju mund të shkoni nëpër atë në më shumë detaje.
Po?
>> AUDIENCA: Pse listë [e padëgjueshme]?
HANNAH: Sigurisht.
Pra listë me të vërtetë tregon për ky element e drejtë këtu,
elementi i parë në lista.
Pra, ajo nuk mund të ketë një të kaluar.
Po?
>> AUDIENCA: A pikë tregues në të njëjtën adrese ne memorie?
A do të tregojnë të njëjtën gjë adresë në memorie si nyjen
se ajo është duke treguar për?
>> HANNAH: Po, ai vë në në këtë nyje në kujtesë.
>> AUDIENCA: E drejta, kështu që kur ju [e padëgjueshme]?
>> HANNAH: Në një kuptim, po.
OK.
Në rregull, le të shkojë së bashku me këtë.
Dhe në qoftë se ju keni më shumë pyetje, rrinë përreth në fund,
dhe ne mund të shkoni nëpër atë përsëri.
OK, cool.
Tani, ne kemi marrë për të lëvizur në të përpunojnë tavolina, tentativa
dhe pemët, të cilat ju mori super njohur me të në p-set pesë, SPELLER.
>> Pra tabelë hash është vetëm një array me lista të lidhura në formë individuale
ose dyfish i lidhur listat që vijnë jashtë të saj.
Pra, ne kemi një lloj i array associative.
Dhe si ne e dimë që këto vargjeve kova për të marrë në,
ne përdorim një funksion hash.
Pra në këtë rast, mund dikush me mend se çfarë funksionin hash
do të bazohet vetëm në disa i hyrje dhe dalje?
>> AUDIENCA: Numri Letra e alfabetit.
HANNAH: Pikërisht.
Ajo vetëm vë ata në rend alfabetik.
Çdo gjë që fillon me një A është vënë në kovë e parë.
Çdo gjë me një B është vënë në kovë i dytë, e kështu me radhë, dhe kështu me radhë.
Awesome, OK.
Dhe një funksion hash është çdo funksion që merr me një fjalë
dhe do të ju tregojnë se çfarë kovë ajo i takon në.
Kështu që hyrja në tonë array ajo i takon në.
>> Kështu që çdo herë që unë të jap të mia hash funksionojë një fjalë,
ajo duhet të më thoni të njëjtën gjë vendosni çdo herë të vetme.
Pra, nëse ne përdorim funksionin hash nga rrëshqitje mëparshme
ku ne jemi zgjidhja nga Letra e parë e alfabetit,
çdo herë që unë të jap tim Funksioni hash "mollë",
ajo duhet gjithmonë të më kthejë 0.
Pra, nëse unë kam një mollë për të vënë në tryezën time hash,
në qoftë se unë jap "mollë" për funksionin tim hash, ajo duhet të them, të shkojnë e vënë atë në kovë 0.
Nëse unë jam duke kërkuar për një mollë në tryezën time hash
dhe unë them, ku mollë trimëritë jetojnë, ju kërkoni funksionin tuaj hash.
Dhe ai thotë, të shkojnë në kovë 0.
Të gjithë të drejtë?
Pyetjet me funksione të hash?
Awesome.
>> Këtu është një pak më shumë shpjegim i detajuar
i asaj që një funksion hash mund të duket si.
Dakord.
Tani, problemi me hash Funksionet është në një botë ideale,
ne do të kemi vetëm një të tillë gjë në çdo kovë.
Por në realitet, nuk ka jo vetëm një fjalë
që fillon me A. Nuk është vetëm një fjalë që fillon me B. Pra
në këtë rast, nëse ne papritmas merrni "kokrra të kuqe,"
dhe ne duam të vënë atë në tryezën tonë hash,
dhe ne e shohim, oh, jo, banane është tashmë atje, çfarë po ne gonna të bëjmë?
>> E pra, ne kemi dy opsione.
Mundësia e parë është linear probing, që
thjesht do të thotë shkoni gjeni kovë tjetër bosh.
Shko gjej hyrjen tjetër array bosh.
Dhe vetëm vënë "kokrra të kuqe" atje.
Kështu që unë e di se është menduar të shkoj me banane në kovë një.
Por vetëm vënë atë në kovë tre, sepse kovë tre është bosh.
Një tjetër alternativë është ndoshta çfarë ju të zbatojë
në p-vendosur tuaj, ku ju kishte chaining veçantë.
Pra, secili prej kova tuaja, secili prej elementeve tuaja array,
jo vetëm që mban një fjalë, por në të vërtetë mban një tregues për një listë të fjalëve.
Kështu që nëse keni pasur banane në tryezën tuaj të hash
dhe ju papritmas të kërkuar për të shtuar kokrra të kuqe, nuk ka problem.
Vetëm shtuar kokrra më në fund, ose tek fillimi, e listën tuaj të lidhura.
OK, awesome.
Pyetjet me hash tavolina para se të shkojnë në?
>> Dakord.
Pemë dhe mundohet.
OK, kështu që kjo ishte një tjetër opsion për zbatimin dictionary.
Ju mund të ketë bërë një provoni.
Pra, kjo është një lloj i veçantë i pemës që sillet si një tabelë hash shumë-nivelit.
Pra, ju do të shihni foto ku ju keni një rrjet që
tregon për një bandë e vargjeve që tregojnë për një bandë e vargjeve
që tregojnë për një bandë e vargjeve.
Dhe ne do të shohim pikërisht ajo që do të duken si në një rrëshqitje të ardhmen.
Dhe më në përgjithësi, një pemë është vetëm ndonjë strukturë e të dhënave
në të cilën dhënave është i organizuar në disa hierarki.
Pra, ku kemi parë ne kemi një lloj i të kuptuarit
i një niveli të lartë, një nivel tjetër, një nivel tjetër, një nivel tjetër.
Pra, kjo është ndoshta më e qartë me disa shembuj specifike.
Kështu që këtu është pemë tonë.
Ju mund të shihni se ajo ka nivele të veçanta
që ne të fillojmë me atë nyjen rrënjë, një.
Dhe ne mund të shkojnë poshtë nëpër pemë tonë.
>> Një pemë binare është një lloj i veçantë i pemës.
Dhe vetëm specifikim për një pemë binare
është se çdo nyjë ka në shumicën e dy gjethe.
Pra, ju nuk jeni duke shkuar për të parë ndonjë e këto nyje të ketë tre ose katër
ose disa numër tjetër i lë.
Dhe pastaj edhe më specifik është një pemë e kërkimit binar
ku çdo nyje në të majtë të nyje do të ketë një vlerë më të vogël.
Dhe çdo vlerë të e drejtë do të jetë më e madhe.
Pra, nëse ju shihni 44 është në rrënjë tonë, në të majtë, 11, 22, dhe 33
janë të gjitha më pak se rrënjë tonë.
Dhe në të djathtë janë të gjitha Numrat bigger-- 66, 55, dhe 77.
Dhe kjo pronë është e vërtetë në çdo nivel të pemës.
>> Pra, kur të shkojmë poshtë në 22, 11, dhe 33, ende 11
është më i vogël se 22 dhe 33 është më e madhe se 22.
Dhe kjo e bën më të lehtë për të kërkuar sepse në qoftë se ne jemi duke kërkuar për një numër,
ne e dimë saktësisht se cila degë për të ndjekur poshtë.
Pra kjo duhet të ju kujtoj një pak bit e kërkimit binar.
Vërtet?
>> Audienca: Pra, kur ju jeni përshkruar binare,
ju tha se ka në shumicën e dy gjethe?
HANNAH: Mm-hm.
AUDIENCA: Mund të ketë më pak?
HANNAH: Po.
Pra, le të themi, për shembull, ju nuk kanë numër çift të gjërave
dhe ju nuk mund të mbush up gjitha tuaj gjethet, kjo është në rregull në qoftë se një ka një të tillë.
OK?
Awesome.
Çdo pyetje të tjera në pemë?
OK.
>> Mbrapsht në përpiqet tona si unë isha duke folur për pak më herët,
se si ne kemi këto vargjeve multi-nivelit.
Pra në këtë rast, ne fillojmë në krye.
Dhe ne mund të ndjekim ndonjë fjalë e dhënë poshtë.
Pra, le të thonë se kemi dashur për të kërkuar Turing.
Ne të fillojë në T, të ndjekë atë poshtë për një grup që përmban U,
dhe të ndjekë atë poshtë derisa ne arritur këtë delta të vogël që
na tregon, po, ju gjetur një fjalë.
Qartë mbi përpiqet?
Çdo gjë për të shkuar atje?
Po?
AUDIENCA: A simbolin e deltës kanë për të zënë hapësirë ​​në kuadër të provoni?
HANNAH: Yeah, kështu që ajo nuk ka domosdoshmërisht edhe duhet të jetë një delta.
Por ne kemi nevojë për një mënyrë për të them tonë computer-- vjen keq,
kështu që ne e dimë se TUR nuk është një fjalë.
Sepse le të thonë se ne nuk kemi ky koncept i një delta, ky koncept
e urime, ju gjetur një fjalë, ajo do të shkonte nëpër dhe iterate T-U-R,
dhe pastaj thonë, awesome, kam gjetur atë!
Ajo duhet të jetë një fjalë.
Por kjo nuk është e vërtetë.
Ne duam gjithë Turing të jetë një fjalë.
Pra, ne duhet të kemi diçka në fund që thotë, urime,
ju keni gjetur një fjalë të ligjshme.
Audienca: Pra, nëse keni pasur si 26 shkronja në alfabetin,
do të ju në fakt kanë 27 çelësat në provoni tuaj?
>> HANNAH: mbresëlënës, vërtet.
Kështu që në të vërtetë, unë mendoj se do të jetë në rrëshqitje të ardhshëm.
Ta-da!
Ku në qoftë se ju keni një nyje në provoni tuaj, ju jeni
do të ketë 27 fëmijë në vend të 26.
Çdo pyetje me se?
Vërtet?
AUDIENCA: Pse mundohet të marrë kështu hapësirë ​​shumë më [e padëgjueshme] si ju shkoni?
Pse është konsideruar të jetë [e padëgjueshme]?
HANNAH: Sigurisht.
Le të kthehemi.
Pyetja është, pse janë mundohet aq shumë më të madhe
se diçka si një tabelë hash.
Kështu për secilën nga këto nivele, edhe në qoftë se ata nuk janë tërhequr këtu,
ju duhet të keni të gjitha 26 karaktere.
Dhe arsyeja që ju nuk mund thonë, oh, por si për Turing, unë
nuk duhet të ketë ndonjë nga ato njëjtat gjëra në nivelin e U. pra,
nëse papritmas ju të kërkuar për të shtuar diçka që ishte si T-H,
ju do të duhet të ketë aftësi të shtuar këtë fjalë.
Pra, për çdo shkronjë të vetme, ju jeni do të ketë
që të ketë një bandë e vargjeve që vijnë jashtë të saj.
Kështu që ju mund të shihni se si ajo do të merrni me të vërtetë i madh, të vërtetë të shpejtë.
Çdo pyetje të tjera?
Dakord.
Vërtet?
>> AUDIENCA: Kur janë të mundohet më shpejt se tavolina hash?
>> HANNAH: Kur janë të mundohet më shpejt se tavolina hash?
Pra, nëse keni pasur një të vërtetë Funksioni i keq hash.
Pra, le të thonë se unë kam qenë si, këtu është funksion juaj hash.
Pa marrë parasysh se çfarë fjalë të më japësh, unë jam gjithmonë
duke shkuar për të vënë atë në array hyrjes 0.
Dhe kështu ne fund me vetëm vënien çdo gjë në një listë të madhe të lidhura gjatë.
Dhe kështu një kohë lookup do të marrë në të keqe n në qoftë se është në fund të listës sonë.
Me përpjekje, ne vetëm duhet të iterate përmes letrave në fjalë.
Pra, edhe në qoftë se ne kemi shtuar një bandë më shumë fjalë për të provoni tonë,
ajo nuk do të na merr më gjatë për të gjetur një fjalë të veçantë.
>> Të gjithë ne duhet të bëni është, për shembull, në këtë rast,
le të thonë se ne jemi duke kërkuar për zoom, ne vetëm do të duhet të iterate mbi
Z-O-O-M, katër letra.
Pra, kjo është vetëm Gjatësia e fjalës zoom.
Nuk ka rëndësi se sa shumë më shumë fjalë ne kemi vënë në këtë përpjekje.
Ne gjithmonë mund të merrni atë në këto katër hapa.
Awesome.
Po?
>> Audienca: Pra [e padëgjueshme] është një grup, apo jo?
>> HANNAH: Mm-hm.
AUDIENCA: Nëse ju jeni kërkoni për [e padëgjueshme],
do të ju duhet të kalojnë nëpër array juaj për të gjetur [e padëgjueshme]?
HANNAH: Sigurisht.
AUDIENCA: A nuk qe marrë më shumë kohë?
HANNAH: Nëse unë jam duke shkuar për të thonë se array ime është gjithmonë
do të jenë A, B, C, D, E, F, G, blah blah blah,
kështu që në qoftë se unë gjithmonë e di se është e në të njëjtën mënyrë të saktë,
në qoftë se unë gjithmonë e di se është e në rend alfabetik,
Unë mund të them vetëm O është numër kështu dhe kështu në alfabetin.
Vetëm të hidhen në atë vend.
Sepse mos harroni, me vargjeve, ne mund të hyni
ndonjë element i këtij grup në konstante kohë në qoftë se ne e dimë se ku ne jemi duke kërkuar.
Vërtet?
>> AUDIENCA: Të mëparshme rrëshqas [e padëgjueshme] 27,
por 26 për një të parë.
>> HANNAH: Na vjen keq?
>> AUDIENCA: A nuk është e para një 0, kështu që nuk do të ishte 26?
>> HANNAH: Sure, kështu që kur themi 27, kjo është e do të na japin indekset 0 përmes 26.
Por në qoftë se ju në të vërtetë të mbështeteni ato jashtë, ajo do të jetë 27.
Pyetje e mirë.
Çdo gjë tjetër?
Vërtet?
>> Audienca: Pra, janë mundohet ngadalshme se tavolina hash?
>> HANNAH: Mundohet do të jetë, në teori, më të shpejtë se tabelat hash
por marrin më shumë memorie.
Vërtet?
Audienca: [padëgjueshme]?
>> HANNAH: Më vjen keq, unë nuk e kam dëgjuar ju.
Audienca: [padëgjueshme].
0 në 25 të jep 26.
>> HANNAH: 0 në 25 do ju jap 26, e drejtë.
>> AUDIENCA: Dhe pastaj [e padëgjueshme].
HANNAH: E drejta.
Pra, numri që ne jemi duke specifikuar është numër i gjërave në array tonë.
Pra, në qoftë se ne kemi 27, është e do të na jap 0
përmes 26, e cila do t'i japë na dhomë për të, në këtë rast,
Unë nuk jam përfshirë një apostrof.
Pra, ne jemi duke marrë 0 përmes 25 janë të 26 shkronjat e para të alfabetit,
ose të gjitha 26 shkronjat e alfabetit.
Dhe pastaj kjo e fundit gjë, në hyrje 26, është
do të jetë çeku të shënojë, apo delta.
Çdo gjë tjetër?
Awesome.
Keni humbur hapësirën time.
OK, cool.
>> Pra, ne tashmë e preku këtë.
Por tregtia e madhe off në mes të përpiqet dhe tabelat hash
është se përpiqet të sigurojë, në teori, konstante kërkoni
herë, por përdorin një tërësi shumë të kujtesës.
Në rregull, tani ne kemi pak Strukturat më pak të komplikuara,
dhe ne do të bëhet me C, dhe ne do të lëvizin drejtë së bashku.
>> Pra, oxhaqet, ne pamë këtë në leksionin ku ju
të ketë diçka si një rafte e tabaka aty ku është
gjëja e fundit që ju vënë në rafte është duke shkuar
të jetë gjëja e parë që ju të marrë jashtë.
Pra, kjo është ajo që me të vërtetë përcakton një pirg është se gjëja e fundit që ju vënë në
do të jetë i parë gjë që ju të marrë jashtë.
Dhe terminologjia që ne përdorim në qoftë se ne jemi duke shkuar për të vënë diçka,
në qoftë se ne jemi duke shkuar për të shtuar diçka për rafte ynë, ne e quajmë atë shtyjnë.
Dhe në qoftë se ne të marrë diçka off, ne e quajmë atë popping.
Dhe në qoftë se ne jemi duke shkuar për zbatojë një pirg, ne
duhet të jetë i sigurt për të mbajtur gjurmët e të dy madhësi dhe kapacitet.
Kështu numri i përgjithshëm i elementeve ne mund mbajë dhe numri aktual i elementeve
që ne po mbajnë.
>> Dhe shumë në mënyrë të ngjashme, ne kemi radhët e gjata.
Dhe vetëm ndryshim është në vend të me oxhaqet,
ne tha gjëja e fundit që ne kemi vënë në është gjëja e parë që ne të marrë jashtë.
Pra me rradhë, gjëja e parë që ne kemi vënë në
do të jetë Gjëja e parë që ne të marrë jashtë.
Pra, kjo është si në qoftë se ju jeni në të vërtetë rreshtuar në një dyqan
dhe ju jeni duke u ndihmuar, atëherë personi i parë në linjë
duhet të jetë personi i parë që do të ndihmohen.
Kështu që do të ishte një radhë.
>> Pra, ne duhet të mbajnë gjurmët e madhësia, kapaciteti dhe koka pasi ne jemi të
do të marrë të gjithë jashtë pjesën e përparme nga lista vend e prapme.
Pyetjet për se?
Çdo pyetje C që janë të ju mërzit?
Strukturat e të dhënave, asnjë nga që stuff fun?
Në rregull, cool.
Kështu që unë do t'ia dorëzojë atë Alison për hidhen në një programim më shumë.
>> ALISON: Oh, ne do të shohim.
Ne do të shohim se si edhe unë bëj këtu.
OK, unë jam duke shkuar për të përpiqen dhe të fluturojnë përmes këtij stuff, djema.
Hannah shkoi shumë në thellësi mbi të gjitha thesaret e.
Unë do të përpiqem të jap ju një pasqyrë të shpejtë shpërthim
kështu që ne mund të merrni për të Davin me gjithë e fun JavaScript dhe sigurisë gjëra
që ndoshta ju në të vërtetë duan të dëgjojnë më shumë për.
>> OK, siç tha Ana, nëse ju keni ndonjë pyetje,
Unë jam duke shkuar shumë shpejt, ju lutem, më lejoni të di.
Unë do të përgjigjem pyetjeve si të nevojshme.
Pra, për të filluar, ne jemi duke shkuar për të filluar me ndoshta një nga gjërat e para
ju mësuar me web programimi, lejet.
Pra, chmod, ju djema duhet të kemi qenë mjeshtra në këtë me të gjitha web të
programimi që ju keni qenë duke bërë kohët e fundit.
Kjo është në thelb vetëm një komandë që ndryshon lejet
ose lejet e qasjes e objekteve tona të skedarëve të sistemit.
Sigurisht, që në fakt shohim këto, nëse ju jeni
të ketë ndonjë problem me këto gjatë përcakton tuaj me probleme,
ju mund të keni përdorur ls -l, e cila është e gjatë, për të marrë lloj view i si kjo,
ku ju në të vërtetë të shihni të gjithë lejet për një skedar.
>> Dhe me të vërtetë, ne jemi vetëm duke shkuar për të shkuar përmes shumë shpejt vetëm goxha
shumë ajo që secili prej tyre të thotë.
Pra, ne kemi d të drejtë këtu, që vetëm qëndron për directory.
Natyrisht drejtë këtu, shohim rwx, e cila është i lexueshëm, shkrueshme, dhe i ekzekutueshëm.
Këto mund gjithashtu të përfaqësohet si copa, të cilat ne do të merrni në në faqen tjetër.
Pra, secili treshe që kemi parë këtu, kështu që është tre triads.
Ne kemi rwx, r asgjë x dhe r asgjë x për këtë fotografi të parë.
Është kjo strukturë përgjithësi.
>> Pra, ne kemi disa direktori.
Ne kemi disa grup të përdoruesit me këto leje.
Disa grup që ka këto lejet, dhe një botë që ka një leje.
Ju mund të mendoj për këto si një treshe.
Ju mund të mendoj për këto si tre bit.
Kështu që ata mund të mbajnë vlerat diku nga 0 deri
në 7, e cila është arsyeja pse nganjëherë ne kishim ju bëni chmod
600 në vend të chmod rw çfarëdo.
Ne do të marrë në një shembull atje.
Por në thelb, ju mund të mendoni e këto si ose vetëm rwx,
ose ju mund të mendoni për to si disa numër ku ky i pari këtu
përfaqëson një numër ndërmjet 0 dhe 7, kjo dyta
përfaqëson një numër ndërmjet 0 dhe 7, dhe nje tretë
përfaqëson një numër mes 0 dhe 7, OK?
>> r ka një vlerë prej 4. w me një vlerë prej 2, dhe x
ka një vlerë prej 1, e cila është pse ky Leja këtu do të chmod 700.
Sepse në këtë rast këtu, ajo thotë se ne kanë bit e parë atje është kthyer më.
Pra, ne kemi 4 për të lexuar.
Bit i dytë është kthyer në për w, i cili është 2, kështu tani kemi 6.
Dhe e treta bit është kthyer në për x, e cila është 1, kështu që ne të merrni shtatë.
Dhe sigurisht, grupi ynë dhe botën tonë janë çdo 0.
Pra, kjo është edhe ekuivalent i chmod 700.
Dhe unë patjetër do të përpiqet të kuptojnë hartës mes atyre.
Unë nuk jam i sigurt nëse ajo ka dalë në një quiz para,
por kjo do të ishte një Pyetja që unë mund të kërkoj.
>> Vetëm pak shkuar edhe më tej në chmod këtu, këtu
është i përgjithshëm shumë Struktura e një thirrje chmod.
Pra natyrisht, ne kemi chmod këtu.
Referencat, çfarë kjo i referohet është të cilët janë ne i dhënë këto leje për
ose të cilët janë duke marrë ne këto lejet larg nga.
Pra, ne kemi një këtu në lejet, si ne kemi dhënë ju chmod një plus x,
si ne do të shohim së shpejti.
a do të thotë vetëm të japë këto specifik lejet për të gjithë.
Jepu atyre për të gjithë.
Pra, ju shumë mirë mund të duhet me u plus x ose g plus x ose o plus x ose të shumëfishta
saj.
Kështu që pjesa e parë është gjithmonë do të jetë referenca.
Kush jemi ne duke i dhënë këto leje për të, ose të cilët janë ne duke marrë ata larg nga?
>> E dyta është operator.
Pra ju djema kanë trajtuar kryesisht me plus.
Kjo i jep leje për kush ju jeni duke i dhënë ato,
ndërsa minus, logjikisht, heq ato.
Pra, asgjë tepër të tmerrshme atje.
Dhe pastaj modes është ajo që kemi biseduar për me lexim, shkrim, ose ekzekutimin.
Pra, një plus x thotë jap ekzekutueshme lejet për të gjithë.
Dhe pastaj, sigurisht, në të cilën skedari apo direktoriumi.
OK?
Çdo njeri i mirë me chmod?
Jo shumë i keq?
>> OK, kështu HTML, ndonjë nga ju janë vjetër të mjaftueshme to-- MySpace moshë?
I dërguar këtë për seksionin tim, dhe fjalë për fjalë gjysma e popullit
më shikoi sikur isha i çmendur.
Dhe unë kam qenë si, djemtë, ne nuk jemi se i vjetër.
Come on.
Pra HyperText Markup Language, kjo është sinqerisht vetëm një mënyrë për ju
për të shfaqur disa gjëra në web.
Pra, është një gjuhë markup.
Kjo nuk është një gjuhë e shkruar.
Nuk ka asnjë logjikë në të.
Kjo është thjesht për të ndryshuar Mënyra diçka shfaqet.
OK, kështu që kjo është një e rëndësishme dallim për të bërë.
Është konsideruar një gjuhë markup, jo një gjuhë e shkruar.
>> Pra, këtu ne kemi tags tona HTML.
Në këtë rrëshqitje janë ndoshta më të ato që ju duhet të jenë të njohur me
dhe të jetë me të vërtetë të rehatshme me.
Pra, natyrisht, ne kemi HTML tag tonë, e cila
përcakton se çdo gjë në ndërmjet këtyre dy do të jenë të HTML.
Ne kemi disa lidhje, e cila padyshim do të ju jap
një lidhje me një faqe web të jashtëm.
Disa titulli, brenda kokën tonë këtu.
Dhe ne kemi trupin tonë me h1, e cila është një kokë,
kështu ajo do të bëjë atë të mirë dhe të guximshme dhe më të mëdha.
Dhe atëherë, ne kemi disa p, e cila është një paragraf.
Ju ndoshta duhet të dini dhe të jenë të njohur me gjëra të
si se si ju futur një figurë, janë ka ndonjë klasat e tjera header?
Unë patjetër do të jetë rehat me div.
Pra, këto kanë shumicën e etiketave se ju duhet të jenë të njohur me të.
Por sigurisht, si me çdo gjë në CS 50, lista nuk është shteruese.
Pra, sigurohuni që ju të pastrohen deri në atë.
>> CSS, kështu CSS, në qoftë se ndonjë nga ju të shikojnë seminar ime nga dy javë më parë,
është me të vërtetë vetëm një mënyrë të stilit faqen tuaj web?
OK, kështu që ne kemi disa gjuhë markup.
HTML, që kujdeset vetëm tekstin dhe ku ajo mund të jetë në faqe.
Por CSS është me të vërtetë ajo që e bën atë mjaft.
Ju mund të keni këto në HTML tuaj Fotografi të, por si ne do të flasim për më vonë,
Unë jam goxha i sigurt se mund të jetë rrëshqitje tjetër, ajo
Është praktikë e zakonshme, dhe në të vërtetë praktikë që ne me të vërtetë të inkurajuar,
për ju për të mbajtur ata të ndarë kur ne flasim për MVC dhe atë të tërë paradigmë.
Kjo është me të vërtetë ajo që kjo ushqen në.
>> Pra, CSS është vetëm një mënyrë për të bëjë gjëra të duken bukur.
Gjërat këtu, si Trupi dhe #title dhe info,
këto janë quajtur selectors dhe çfarë ata bëjnë është që ata të zgjidhni gjëra të veçanta
brenda dosjen tuaj HTML dhe të aplikojnë çfarëdo stil,
çfarëdo lloj gjëra që ju duan, për atë element të veçantë të web tuaj
faqe.
Pra këtu, ne kemi një ngjyrë sfond dhe një ngjyrë
dhe një familje font që është duke u aplikohet për çdo gjë që është në trup.
Pra, nëse kemi shikuar përsëri këtu, atë nuk do të zbatohet për titullin.
Ajo do të zbatohen vetëm për atë që është në këto selektorë të trupit, OK?
>> Me titullin këtu, kjo është e do të jetë e njëjta gjë,
ngjyra e tekstit duke qenë blu është vetëm do
të ndikojë në atë që është brenda të Selectors titullin.
Si dhe info këtu, Teksti do të jetë rozë,
çfarëdo e info, e cila është e drejtë këtu.
Pra, e vetmja gjë që do të jetë rozë në këtë faqe
është data, e hënë, nëntor 17, 2014.
OK, kështu CSS është vetëm një mënyrë për të kanë më shumë kontroll over-- po?
>> AUDIENCA: Pse ju keni për të përdorur hash me titullin?
>> HANNAH: rrëshqitje Tjetra, premtoj!
Ne do të merrni atje.
Pra, kjo është arsyeja pse ne duhet të përdorim hash.
Pra Selectors të marrë në tre kryesore Format që ne flasim për të ju djema rreth.
Unë fyou doni të mësoni më shumë, ka shumë atje.
Ka dokumentacion i madh CSS.
Ka një emër tag, e cila ka të bëjë me vetëm tags normale tuaja në HTML.
Pra, H1, p, div, H2, ato llojet e gjërave.
Dhe ne mund të emrit vetëm ato siç është.
Pra, siç e shohim këtu me trup, kjo është një tag normal.
Pra, ne mund vetëm të vënë trupin kur ne jemi duke folur në dosjen tonë CSS.
>> Me titullin, të gjithë arsye ne keni këtë hash është që ne kemi atë që është e
konsideruar një ID.
Pra një ID duhet të jetë gjithmonë unik brenda faqes tuaj HTML
kështu që kur ju jeni duke iu referuar të, ju
e di se ju jeni vetëm duke iu referuar për një gjë të veçantë.
Pra, në këtë rast këtu, me tonë h1 këtu, CS 50 seancë shqyrtimi,
ne kemi një id të titullit.
Kështu që në mënyrë të vetëm referohen se copë HTML sonë, ne bëjmë një titull hash.
Vetëm me anë të konventës, ID janë përcaktuar me një hash në frontin e tyre.
Në të njëjtën mënyrë, ne shohim info këtu është një klasë.
Dhe kështu klasë me CSS është caktuar si një dot klasë
ose dot çfarëdo që është klasë.
Pra, në këtë rast këtu, është e info.
>> Kështu që unë të marrë atë përsëri.
Të dyja këto do të ishin rozë për CSS tonë këtu
sepse ata të dy kanë një klasë e info.
Dhe në dosjen tonë CSS, ne kemi caktuar se çdo gjë me një klasë të info
do të jetë rozë.
A ka kjo kuptim?
Po?
>> AUDIENCA: Nëse ju do të bëni çdo gjë në të bardhën e trupit,
dhe pastaj ju të përpiqet të bëjë diçka brenda tij blu,
do që të shkaktojë probleme?
>> HANNAH: Pra CSS është fletët Cascading style.
Pra, çdo gjë që është në drejtim të fund do të kenë përparësi.
Pra, nëse ju bëni diçka me trupin, dhe ju bëni çdo gjë të bardhë,
dhe pastaj më vonë për ju të ndryshojë titullin ose ju ndryshojë tekstin brenda trupit,
ajo overwrites se.
Pra, çdo gjë drejt fund do të kenë përparësi.
Po?
>> Audienca: Dhe ID janë unike, por klasa mund të jetë më shumë?
HANNAH: E drejta.
Pra ID duhet të jetë unike, dhe klasa mund referohen si shumë gjëra si ju dëshironi.
Çdo pyetje të tjera?
Po.
>> Audienca: [padëgjueshme].
Unë jam i pyesin nëse që bën një dallim.
HANNAH: Më vjen keq, çfarë ishte pyetja?
AUDIENCA: Ka vogël "F" dhe kapital "F."
HANNAH: Pra dallimi midis të vogël "f" dhe kapitalit "F"
nuk duhet të bëjë një ndryshim.
Pra, "f" do të jetë 15 ose mënyrë.
Cool, ndonjë gjë tjetër?
Çdo njeri i mirë, CSS?
Po?
>> AUDIENCA: Më vjen keq.
A mund të kemi një klasë dhe një ID?
>> HANNAH: Po, mundeni.
Gjërat mund të ketë edhe një klasë dhe një ID.
Dhe unë rekomandoj testimin këto në tuaj.
CSS ju do të mësojnë më mirë vetëm duke e bërë diçka, faqe shumë e thjeshtë web,
hartimin e disa CSS, dhe vetëm duke parë se si ata ndërveprojnë.
Dhe ju do të fitoni një shumë të mirë, ndjenjë intuitive për mënyrën se si funksionon.
>> OK, të gjithë mirë me CSS?
Ju jeni të gjithë duke shkuar për të bërë Faqet e internetit të bukura me CSS tani.
OK, praktikat më të mira, vetëm gjëra për të mbajtur në mend, gjëra
that-- kjo është arsyeja pse ne dok ju për projektuesi dhe gjësend.
Pra mbyllni të gjitha tags tuaj HTML.
Pra, nëse ju keni një trup të hapur, nuk duhet të jetë një organ i ngushtë.
Nëse ju keni një paragraf të hapur, duhet të ketë një paragraf i afërt.
Kontrollo për të parë faqen tuaj validates.
Ju djema duhet të jenë shumë të njohur me këtë nga p-set shtatë
me CS 50 financë me validator W3.
Dhe siç kam thënë më parë, një nga paradigmat tona të mëdha
është e ndarë stilin tuaj me CSS nga Markup tuaj, e cila është HTML.
Dhe pastaj, sigurisht, ne kemi kjo XKCD madhe poshtë këtu.
Yay, lehtësim komik!
>> OK, TCP / IP.
Në mes të këtyre dhe HTTP, në thelb ata janë të dy protokollet.
Kështu që ju mund vetëm të mendoj prej tyre si një grup rregullash
që qeverisin se si gjërat lëvizin nëpër internet.
Pra kontrollit të transmetimit protokoll, ose protokoll të internetit,
është vetëm një mënyrë për t'u siguruar se të dhënat e merr ku ajo do
dhe që ne e dimë nëse ne jemi ndonjëherë të humbur të dhënave.
Pra, në qoftë se ju djema mendoni përsëri në leksionin disa javë më parë me Davidin
ku kemi pasur katër zarf, ata u regjistruan të gjithë si një nga katër,
dy nga katër, tre nga katër, katër prej katër, kjo është vetëm një grup rregullash.
Ne i thamë, në rregull, sa herë që ne jemi dërgimin e më shumë se një pako,
ne do të numërojmë ajo me çfarë numri është
dhe sa totale që përdoruesi duhet të merrni.
>> Dhe kjo është vetëm duke u thënë kush po merr të dhënat e nëse ata
kanë marrë çdo gjë, ose nëse diçka kam humbur gjatë rrugës.
Dhe ata duhet të pyesni për atë përsëri.
Kjo është me të vërtetë vetëm një grup i rregullave.
Kjo është se si ju mund të mendoni për atë, OK?
Dhe gjithashtu, ai specifikon portit, i cili ju djema can-- unë njoh gjatë ligjëratës,
ata kishin një listë e tërë e porteve.
Por ne nuk kemi këtu tani.
>> Protokoll kështu HyperText transfer është, përsëri, kjo është një tjetër protokoll.
Pra, kjo është një tjetër grup rregullash që drejtojnë, në këtë rast,
si HyperText është transferuar.
Pra, ai vetëm i lejon shfletuesit për të folur me serverat e internetit.
Dhe siç kemi thënë këtu, është si shtrëngimet e duarve të njeriut.
Është vetëm një mënyrë për të qeverisur si web server është
duke shkuar për të bashkëvepruar me shfletuesin tuaj.
Dhe ne kemi vetëm disa shembuj.
Ne kemi disa kërkesa këtu ku GET është metodë.
Ne kemi HTTP 1,1, e cila është version protokoll për ne.
Dhe pastaj, host, e cila është çfarë ne jemi në të vërtetë duke u përpjekur për të hyrë.
Dhe pastaj, siç e shihni këtu, ne marrë disa përgjigje me këtë 200
OK si kodit tonë HTTP përgjigje.
Ne kemi një listë të madhe që unë jam duke shkuar për të tërhequr deri në një të dytë
se ju djema duhet të jenë të njohur me të.
Dhe ne e kemi këtë të tipit Përmbajtja e tekstit / HTML, që vetëm thotë se çfarë lloji i të dhënave
po ne marrjen nga serveri, OK?
Kjo mikpritës dhe ky lloj përmbajtja janë pjesë e HTTP headers.
Ju mund të keni sa pak apo sa më pak që të nevojshme për kontekstin e asaj që
ju jeni që kanë të bëjnë me të.
Ndonjëherë ju do të keni një shumë të Informacioni që vjen nga serveri juaj.
Ndoshta ata janë duke kërkuar një shumë e informacionit nga përdoruesit.
Ajo ndryshon në varësi të kontekstit.
Nëse ju shikoni në CS 50 Studimit, ka shumë më shumë për këtë.
Por ne kemi një shumë për të marrë nëpër, kështu që unë jam duke shkuar
për të shkuar drejtë përpara nëse kjo është në rregull me ju djema?
Ftohtë.
Të mbajë në.
Unë patjetër duhet që listë e tërë of-- huh!
Unë nuk e di pse kjo është të gjithë rrugën mbi këtu.
Unë mendova se fjalë për fjalë u zhvendos atë ndërsa unë isha sitting--
>> Davin: A doni të mësojë atë?
Apo ju doni mua për të mësuar atë?
>> AUDIENCA: Unë mendova që ne mund të vetëm tregoni atyre për të filluar me.
Unë do të thotë, ju mund të shkoni në ato më tej, por unë
mendoi ajo bëri më shumë kuptim që nga I ishte vetëm duke folur për HTTP statuseve.
Kështu që këtu është e gjithë lista.
Unë mendoj se çfarë do të ndodhë është Davin do të shkojë në ato më vonë.
Por ka një listë e tërë, një vrojtim i shije që do të vijnë.
OK, ne jemi duke shkuar për blow-- kjo po ndodh të jetë një kurs përplasje PHP si asnjë tjetër.
>> Pra PHP, HyperText preprocessor, kjo është një backronym rekursive,
që do të thotë ajo u quajt diçka tjetër.
Dhe pastaj ata ishin si, kjo nuk ka të vërtetë të bëjë kuptim.
Pra, ata të quajtur vetëm it-- dhe kjo ishte një akronim,
kështu ata vetëm e bëri atë PHP preprocessor HyperText, e cila
vetëm nuk ka kuptim.
Histori Fun.
Kjo është një gjuhë programimi.
Pra, sa më shumë që unë theksoj se HTML nuk është një gjuhë programimi,
kjo është një gjuhë markup, PHP është një gjuhë programimi.
Si e dini se kjo është sepse nuk ka logjikë.
Ka conditionals.
Ne kemi variablave, ndërsa ne kanë asnjë nga ato gjëra në HTML.
>> Në rregull, atëherë ne e kemi këtë pak bit këtu që është si një shije të PHP.
Pra bazat, emrat e ndryshueshme të fillojë me një shenjë të dollarit.
Shumë njerëz si ajo.
Kujton us parave.
Kjo është e gjitha e madhe.
Ne të gjithë duam PHP.
Pra, ne nuk e specifikon një lloji më i ndryshueshëm-së.
Ajo është e vendosur në kohë të kandidojë.
Përkthyesi do të jetë si, oh, ne vetëm do të vazhdojë deri,
dhe në përputhje me kontekstin, ne do të shohim se çfarë lloje të llojeve
këto variabla duhet të keni.
Nuk ka asnjë funksion kryesor.
Gjërat vetëm do të kandidojë.
Ju djema me importin tuaj në tuaj p-set kaluar, ju do të vëreni këtë.
Nuk ishte me të vërtetë një funksion kryesor.
Ju vetëm shkruante çfarë ju të kërkuar për të ndodhë.
Dhe ajo vetëm lloj i ndodhur.
Pra, kjo është PHP për ju.
>> Vargjeve janë shumë të ngjashme.
Ne ende e kanë këtë kllapa.
Këtu, ne kemi disa ndryshore i quajtur arr, dhe është e barabartë
to-- ne kemi normal ynë simbol kllapa.
Dhe ne kemi disa vlera të rëndësishme.
Dhe ndryshim i madh ndërmjet C dhe PHP vargjeve
është se ne mund të kemi këtë associate-- ne mund të lidhin vlerat për të çelësat.
Pra, në vend të vetëm duke pasur një grup që është indeksuar
nga numri apo pozicioni i këtij elementi në grup,
ne fakt mund të shoqërojnë atë me një çelës.
Ku ne mund të themi, OK, unë dua çdo gjë vlera shoqërohet me fruta.
Dhe ndoshta ne kemi fruta shkoi në banane.
Kështu ajo do të kthehet banane për ne.
>> Por në thelb, më gjë e fuqishme në lidhje me këtë
është se në qoftë se ju djema mbani mend demo nga leksion ku ne thelb
speller rishkroi në PHP, dhe ajo lookup was-- ishte me të vërtetë ashtu si,
ekziston ky kyç?
Kjo është me të vërtetë lloji i fuqisë së tij.
Ju nuk keni nevojë për të iterate përmes array tuaj.
Ju nuk keni nevojë të dini çfarë hapësirë ​​është në.
Kjo mund të jetë në fund ose fillim.
Për sa kohë që ju e dini çelësin që është e lidhur me vlere,
PHP vetëm mund të nxjerr se vlera e drejtë të kthehet nga ju, OK?
>> Dhe pastaj, ne gjithashtu sapo kanë vetëm sepse ne
mund të ketë palë kyçe me vlerë nuk do të thotë që ju keni për të.
Ju gjithashtu mund të krijojë vetëm një grup normal si këtu,
në të poshtme, ku është vetëm një, dy, tre, kater.
Këto janë vlerat tona.
Dhe në fakt, çelësat e tyre janë indekset.
Pra, çelësi për një të tillë do të jetë zero.
Kyç për dy do të jenë një.
Kështu me radhë e kështu me radhë, përveç nëse ju në mënyrë eksplicite të caktojë një kyç,
ju mund të supozojmë se Vlera është vetëm indeksi i tyre.
A do të ketë kuptim për të gjithë?
Nuk ka pyetje?
Awesome.
>> OK, foreach është një mënyrë për të iterate përmes vargjeve tuaja.
Pra, ne kemi diçka këtu, vetëm struktura përgjithësi.
Pra foreach, emri i array tonë, si çdo gjë
ju doni të telefononi çdo element në grup tuaj,
dhe ne mund të bëjmë diçka me që element apo me atë vlerë.
Pra, ne kemi një shembull këtu.
Ne kemi një associative grup me këto dy shënimeve
me bar duke u lidhur me foo dhe qux duke u lidhur me Baz.
Pra çelësat janë të foo dhe baz.
Vlerat janë bar dhe qux.
Pra foreach, ne kemi koleksion tonë këtu, si palë e vlerës kryesore.
Kjo na lejon për qasje të dy kyç dhe vlera.
Ndoshta ju vetëm duan vlera, në të cilin rast
ju mund të bëni ashtu si arr si vlerë $, dhe pastaj ju
janë vetëm të qasjes në vlerën si ju iterate nëpër.
Por, ndoshta, për disa arsye, ju doni çelësin,
cila është arsyeja pse unë zgjodha ky shembull në vend.
Kështu që ju mund të vërtetë të manipuluar kyç dhe vlera në këtë rast.
OK?
Pyetje?
>> AUDIENCA: Nëse dëshironi të vetëm manipuluar çelësin, do të
ju duhet të bëni foreach--
>> ALISON: E drejta.
Pra, në qoftë se ju të kërkuar për të manipuluar vetëm çelësin,
ju ende do të duhet kjo Sintaksa sepse në qoftë se ju vetëm
kanë arr si diçka, si një gjë, është e
do të supozojmë që ju dëshironi vlera, jo kyç.
Pra, nëse ndonjëherë ju vetëm duhet vetëm si arr si, ndoshta kjo është si $ element,
ajo do të supozojmë se ju jeni duke i kërkuar për vetëm vlera në secilën pikë.
Nëse ju doni të qartë të bëjë diçka me kyç,
edhe në qoftë se ju nuk do të jeni të të bëjë asgjë me vlerë,
keni nevojë për këtë strukturë që ne kemi këtu
ku ju jeni duke kërkuar në mënyrë eksplicite për të dy çelësit dhe vlerë.
Pyetje e madhe.
Çdo gjë tjetër?
Ftohtë.
>> Në rregull, PHP dhe HTML.
Oh, ne jemi kthyer në p-vendosur shtatë përsëri.
Pra kjo duhet të duket pak i njohur.
Pra, kjo është një formë e thjeshtë HTML se ka ndonjë emër të dhëna e përshëndetje.
Dhe ne shohim ne kemi metodën tonë të MERRNI.
Dhe në qoftë se ne kujtojmë nga p-set tonë, kur kjo formë është dorëzuar,
ajo dërgon një grup të quajtur $ _GET që ka të gjitha këto inputeve ose variablave nga
formë që duhet të jetë manipuluar në PHP tonë.
Pra në këtë rast, përdoruesit do të vënë në emër të tyre.
Ata dërgojë atë.
Dhe ne shohim se ne të merrni disa rrjet këtu.
Ne kemi rrjet tonë Teklif.
Dhe ne jemi të qasjes emrin.
>> Kështu që thotë, OK, më jep Vlera që është i lidhur me emrin,
të përmendur duke qenë kyç këtu.
Dhe se harta direkt në çfarë kemi thënë emrin tonë input është.
Pra, kjo është duke ju dhënë çelësin për çfarë do të jetë në rrjet tuaj këtu.
A do të ketë kuptim për të gjithë?
Po?
>> AUDIENCA: A emri në GET referohen në vijën e purpurt në [e padëgjueshme]?
>> ALISON: Ajo i referohet ky këtu.
Pra, kjo fushë drejtë këtu, ajo i referohet këtij emri këtu.
Pra, kjo mund të ishte quajtur si numri i telefonit, ose çfarëdo.
Ky emër në të vërtetë thotë, çfarë po ju duke e quajtur këtë fushë?
Si po ju do të referohen në këtë fushë?
Dhe ky emër është në të vërtetë pëlqen, ne jemi duke thënë këtë fushë quhet emri.
Kjo është se si ne jemi duke shkuar për të hyrë në të.
>> Audienca: Pra, është ajo donte, Emri input është e barabartë me Bob, and--
>> ALISON: E drejta, atëherë ju do të merrni Bob atje poshtë.
Exactly.
Gjithkush i ftohtë?
Në rregull, kështu GET kundrejt POST, këto janë dy mënyra kryesore
që ne të kalojë të dhënat në një kërkesë HTTP.
Ju djema duhet të keni parë të dyja këto me shpresë.
Pra me MERRNI, informatat është kaluar përmes URL.
Pra, nëse ju ndonjëherë të bëni Google kërkimet, YouTube, ju do të
ndoshta vëreni disa pikëpyetje.
Dhe pastaj, të gjitha fjalët që ju vetëm vënë në atje.
Dhe POST kalon të dhënat në trup HTTP mesazhit.
Pra ndryshe nga MERRNI, ju lloj i konsiderojnë se të dhënat është e fshehur nga përdoruesit.
Por ajo që është me të vërtetë i rëndësishëm për të kuptuar
është se kjo është ende po aq e pasigurtë sa MERRNI.
Analogji Më pëlqen të përdorin është nëse ju keni numrin e llogarisë tuaj bankare
dhe ju shkruani atë në pjesën e jashtme një zarf, që është goxha i pasigurt.
Nëse ju do të shkruani atë në një copë letër dhe e vënë atë brenda në zarf,
është ende e vërtetë e pasigurt sepse të gjithë ju duhet të bëni është hapur që deri
dhe të kërkoni në përmbajtjen aktuale i mesazhit të parë se.
Pra, kjo është "fshehur", dhe njerëz si për të mendoj se është e sigurt, por kjo nuk është e vërtetë.
Dhe unë jam i sigurt se do të Davin merrni në se më shumë, ndoshta.
Por kjo është një e rëndësishme dallim për të bërë
dhe diçka me të vërtetë e mirë për të kuptuar.
>> OK, SQL, Structured Query Language.
Të gjitha gjëra që që kemi parë deri kohët e fundit!
Pra, kjo është në thelb i projektuar vetëm, padyshim, për menaxhimin e të dhënave.
Ju djema pasur shumë përvojë me kjo në tryezat tuaja me PHP MyAdmin.
Dhe ka katër pyetje të shpeshta që ne duam që ju djema të dini.
Pra, nuk ka update, insert, zgjidhni, dhe fshini.
Prandaj sigurohuni që ju e dini se ata me të vërtetë mirë.
Ne jemi duke shkuar për të shkuar nëpërmjet tyre të vërtetë të shpejtë.
>> Pra rinovuar, me të vërtetë, si çfarë ju mund të mendoni se e bën atë,
ajo vetëm përditëson të dhënat në bazën e të dhënave tuaja.
Pra, ne kemi disa shembuj këtu.
Ky është i përgjithshëm Struktura e një pyetje update.
Pra, ne update në tryezë se ne jemi duke folur rreth.
Dhe ne duam të vendosur sigurtë vlerat, kolona të caktuara
e barabartë me vlerat specifike.
Pra, kjo vetëm përditësime në tryezë, duke ndryshuar Vlerat në të gjitha rreshtave në këtë rast.
Pra, në këtë poshtë këtu, një aktuale shembull, ne kemi insert-- sorry.
Kjo rrëshqitje avancuar pa mua e kuptuar atë.
>> Pra, kjo tabelë updates vendosur col1 i barabartë të val1 ku shtëpia është e barabartë me "korrier".
Çfarë kjo nuk është ajo vetëm ndryshon, ajo vetëm
përditëson këto vlera në vende të veçanta.
Pra, në këtë një të parë, ajo ndryshon këto Vlerat për çdo gjë në tryezën tuaj,
OK?
Ajo do të ndryshojë kjo kolonë për çdo hyrje të vetme,
për çdo rresht të vetëm.
Por kjo ku, ju mund të të mendojnë për atë si një përcaktim.
Pra, ajo është vetëm do të ndryshojë ajo në vende shumë specifike.
Pra, në p-vendosur shtatë, kur ju ndoshta përditësuar sasinë e parave të gatshme
që përdoruesit e juaj kishte, ju ndoshta kishte disa ku ID e barabartë ID seancë, e drejtë?
>> Sepse ju nuk duan të ndryshojë shumën e parave të gatshme
për çdo person i cili ishte duke përdorur faqen tuaj te internetit.
Ju të kërkuar për të ndryshuar atë për një personi konkret, ky person duke qenë
kush ishte duke e përdorur atë në atë kohë.
E drejtë?
OK, kështu insert, insert Vlerat e caktuara në tavolina.
Kjo është si kur ju jeni duke krijuar një përdorues të ri fringo.
Struktura e përgjithshme këtu është futur në çfarëdo tryezë
ne jemi duke folur për.
Vlerat, duke qenë vlerat që ne në të vërtetë doni të futur.
OK, kështu që ne shohim këtu, ne kanë futur në tryezë.
Kjo është kolona të veçanta me vlerat e tyre përgjigjej.
Pra kjo thotë, insert një rresht i ri që përmban
Vlerat val1 dhe val2 nën këto kolona të veçanta.
>> Kështu që ndoshta ju vetëm dëshironi të plotësoni nga gjysma e gjërave në këtë rresht.
Kjo është ajo që këtu lejon kjo pjesë ju bëni.
Kjo ju lejon të vërtetë të përcaktuar se cila pjesë.
Po?
>> AUDIENCA: A mund ti vetëm [e padëgjueshme] qelizat në rreshtin [e padëgjueshme]?
>> ALISON: Nëse ju vetëm plotësoni në pjesë të caktuara të rresht tuaj,
Pjesa tjetër e këtyre qelizave janë vetëm bosh.
Për sa kohë që ju lejojnë ata që të të jetë bosh, kjo nuk është një problem.
Nëse ju të përpiqet për të hyrë në ato, është e do të kthehen disa element i zbrazët.
Por është e rëndësishme të dini që në tryeza të caktuara,
ata kanë për të të lejohet të jetë null.
Ju mund të keni drejtuar në një Problemi gjatë p-vendosur tuaj
sepse ne nuk i la asnjë e vlerat e tua të jenë të null.
Por ju mund të specifikoni një Vlera opsionale në tryezën tuaj.
>> OK, zgjidhni, kështu që kjo është vetëm një mënyrë për të marrë
të dhëna specifike nga një tavolinë në disa identifikues që ju dëshironi.
Pra, zgjidhni yll nga tryeza ku col barabartë diçka thjesht do të thotë,
më jepni të gjitha të dhënat që lidhen ku kjo kolonë të veçantë është e vërtetë.
Pra yll në këtë rast do të kthejë të gjithë rresht për ju, OK?
>> Dhe pastaj, në këtë rast, zgjidhni yll nga tabelë vetëm ju jep të gjithë tabelën.
Dhe pastaj, fshini padyshim, ajo vetëm fshin rresht nga tabela.
Pra fshini nga tabela, çfarëdo tryezë ne jemi
referenca, ku disa të veçanta Identifikuesi ose disa kusht është e vërtetë.
Po?
>> AUDIENCA: Pyetje.
Pse jeni duke përdorur të dyfishtë Kuotat, dhe nëse ju
të bëjë kuotat e dyfishtë apo të vetme Kuotat, e bën atë të bëjë një ndryshim?
>> ALISON: Kuotat e dyfishta apo Kuotat e vetme nuk e bën një ndryshim në SQL.
Unë mendova se pashë një pyetje tjetër.
Po?
>> AUDIENCA: A nuk të ndikojë çfarë merr arratis nga pyetje?
>> ALISON: Rob?
>> Rob: Çfarë do të thotë nga ikur nga pyetje?
>> AUDIENCA: Nëse dikush ka një pyetje të vetme në formën of--
>> Rob: Nëse dikush do të vënë një kuotë të vetme në,
pastaj sa kohë që ju jeni sanitizing input tuaj, atëherë kjo nuk ka rëndësi.
Por nëse ju jeni duke përdorur një të vetme japin kuotën e dhe ju jeni gabimisht
ikin inputet tuaja, atëherë po, ata duhet
për të vënë një kuotë të vetme në mënyrë për të thyer Kodi juaj. në qoftë se ju përdorni kuotat e dyfishtë,
ata kanë nevojë për të vënë një të dyfishtë japin kuotën e tyre për të thyer kodin tuaj.
Por për aq kohë sa ju shpëtojnë gjëra si duhet, kjo nuk ka rëndësi.
Është vetëm do të jenë të përkthyera në simbolin e saktë gjithsesi.
>> AUDIENCA: Çfarë do të thotë ikje?
ALISON: E pra, si sanitizing dhe shpëtojnë.
Provimi që ne kemi, XKCD i madh komik që ata të tërheqë deri ku ju keni,
oh--
Rob: Është rrëshqitje e kaluar.
ALISON: Është rrëshqitje e fundit, me të vërtetë?
Oh my god.
Ka ne do të shkojmë, të përsosur.
OK, kështu që në thelb, ju mund të injektojnë diçka në këtë query SQL
ku ajo prishet tuaj Kodi, apo si David tregoi
në klasë, në qoftë se ne kemi disa të vetme quote 1 është e barabartë me 1 dhe në qoftë se në kodin tonë,
ne vetëm drejtpërdrejt kopje që në, dhe ne kemi një kuotë mbaron të vetme,
ajo që ndodh është që ne të merrni disa shprehje që
vlerëson të vërtetë që do të le dikush të hyjë database tonë
dhe për të marrë të dhënat që ne nuk duan që ata të marrin.
Pra sanitizing inputet thjesht do të thotë duke u siguruar
që ne po ikin këto karaktere dhe përcaktimin e tyre
si gërma dhe jo gjërat e që duhet të lejohet
që do të merret fjalë për fjalë si deklaratën tonë SQL.
>> Pra, gjëja e madhe që thamë se ju djema duhet të jetë duke përdorur
ishin chars veçanta HTML, e cila është diçka
që ju mund të dëshironi të hidhni një sy në.
OK, fshini.
Llojet e të dhënave, kjo të gjithë do të jetë online.
Që nga viti ne kemi lënë 15 minuta, unë jam vetëm do të shkojnë drejtë nëpër këtë.
PHP dhe SQL, në thelb kjo është vetëm kemi pasur një funksion query që
ndihmuar në mbrojtjen kundër këto sulme me qëllim të keq.
Pra, sa herë që ju përdorni pyetje, ne ishim duke u siguruar
se gjërat janë pastruar dhe gjësend.
>> MVC është vetëm një paradigmë të projektimit, kështu model, pikëpamje, kontrollues.
Është vetëm një mënyrë për të mbajtur gjërat e bukur dhe të ndarë në të njëjtën mënyrë
që ne priren të faktor Kodi jashtë në funksionet.
Kjo është vetëm një kornizë e web design që ju lejon të bëni të njëjtën gjë.
Unë jam duke shkuar për të kaloni këtë.
>> Kjo është diçka që unë do të ishte super i qetë me.
Kjo është një tabelë e madhe pak atje.
Kjo ju jep funksionin shembull i modelit.
Unë jam vetëm duke shkuar nëpër këtë, sepse unë me të vërtetë duan Davin të jetë në gjendje për të folur.
Nëse keni ndonjë pyetje, ju lutem mos ngurroni.
Unë do të jetë këtu pas.
Vetëm të vijnë të bisedojnë me mua.
Me këtë, ne kemi HTTP statuse.
Dhe Davin-së do të hidhte në erë nëpër këtë në 15 minuta.
Kjo do të jetë i madh.
>> Davin: OK.
Uh, mic juaj?
Vërtet.
Më vjen keq.
ALISON: Rruga për të jenë të përgatitur.
Davin: Jo, unë jam i gatshëm.
Unë jam i gatshëm.
Le të bëjmë këtë.
Është gati.
OK.
Më vjen keq.
I derdhur kafe mbi veten time.
Unë nuk e di nëse unë jam më shumë mërzitur se unë shoh pa kuptim,
apo që unë nuk kam kafe më.
Gjithsesi, vetëm një njoftim i shpejtë për fletë ju djema keni.
Pra, kjo fletë ju djema keni nuk është e zyrtar se çfarë është në quiz.
Kjo është zyrtar se çfarë është në quiz.
Gjithashtu, në faqen e internetit, ne them ju, OK, kjo do të jetë në quiz.
Pra, në pak fletë mashtrojnë ju keni, nuk zyrtar.
Dhe ka gabime në të.
Pra, jo më e mirë për të vetëm verbërisht përdorin atë.
Pra, vërtet, kjo është se.
Pra, le të marrë në këtë të shpejtë të vërtetë.
>> Kështu HTTP statuse.
Pra, çfarë ndodh kur website, çdo gjë është në rregull.
OK e çdo gjëje.
Çdo gjë vjen përsëri në ju në mënyrë që ju dëshironi që ajo të.
Ju merrni një 200 OK.
301, ku kemi parë se 301 para?
Prisni, çfarë është lart?
Më vjen keq.
Ne pamë leksion unë kallaji gjatë sigurinë.
Pra gjatë sigurinë, kështu që nëse David shtypur në http dhe pastaj u përpoq për të shkuar në cs50.net,
ju jeni do të shihni 301 lëvizur.
Përse?
Për shkak se ajo do të përcjellim ju automatikisht për HTTPS tonë.
>> Pra 301 lëvizur, vetëm se është në thelb një redirection.
Dhe ju mund të mendoni për atë si kjo.
Ndonjë nga statuset që fillojnë me 2-të, ato janë si, OK, OK çdo gjë së.
Ndonjë nga statuset që fillojnë me 3, ato janë redirection.
Statuse që fillojnë me 4, që do të thotë ka disa lloj gabimi klientit.
Statuse që fillojnë me 5, kjo është një lloj i gabimit server.
Kështu që ju lloj i prishur , statuset si kjo.
Pra, jo jo 304 modifikuara, kështu që në tuaj server.c p-grupe, kështu që le të thonë se ju
cat.html ngarkuar.
Çdo gjë vjen mbrapa, ju merrni 200s, OK, i madh.
>> Le të thonë se ju rifreskohen atë.
E pra, brenda se cat.html, ju keni një JPEG.
E pra, kjo nuk është JPEG do të merrni reloaded.
Ju nuk jeni duke shkuar për të postoj një tjetër GET kërkesën për serverit,
dhe pastaj të merrni të gjithë këtë informacion përsëri.
Ajo do të vetëm be-- se imazhi është do të jetë kopje e ruajtur në kompjuterin tuaj.
Dhe kështu që imazhi do të jetë një 304.
Pra, ajo nuk i është ndryshuar për herë.
Nëse ju pastaj të mbyllur jashtë, i qartë cookies, dhe pastaj refresh
dhe të përpiqen për të ngarkuar atë faqe përsëri, ju jeni do të shihni 200s.
Ju nuk jeni duke shkuar për të parë se 304.
>> 400, kërkesë e keqe, e vërtetë i shpejtë, si në qoftë se ju
ishin duke shkuar për të dërguar një JSON objekt në server
dhe objekti juaj JSON ishte i pasaktë, ju do të shihni diçka të tillë.
403, i ndaluar.
Kur do të shihni një e ndaluar?
Ndoshta Ndoshta?
AUDIENCA: chmod.
Davin: chmod, vërtet.
Pra, ju nuk keni vendosur lejet e saktë.
404, nuk gjendet.
Është vetëm jo aty.
Pra, nëse ju shkruani në e gabuar URL.
500, gabim i brendshëm server, server ndoshta nuk është konfiguruar si duhet.
Jo diçka në fund tuaj, por diçka në anën e serverit.
Dhe 503?
Shumë njerëz e pa 503s në p-set fundit.
Kur do që të ndodhë?
Kam dëgjuar pëshpëritjet.
>> AUDIENCA: Kur Google vendos ju jeni një robot.
Davin: Yeah, kur Google vendos ju jeni një robot, ju merrni 503s.
Pra, kjo është një mbingarkesë.
Nëse ju keni kërkuar nga serveri shumë, është zakonisht i përkohshëm.
Dhe shumica prej jush vënë re atë.
Pra, ju e pa 503.
Ju mund të keni marrë pak pushim, atëherë 503s shkoi larg,
dhe çdo gjë ishte në rregull.
>> Gabe: Real shpejtë, kur e bëni ju djema 500 në ndoshta ky problem të fundit të vendosur?
Po?
>> AUDIENCA: Zakonisht në qoftë se server ka një dosje të humbur
ose [e padëgjueshme] e tyre makinë [e padëgjueshme].
>> Gabe: Pra, ajo mund të jetë një konfiguracion çështje në PHP tuaj në serverin tuaj.
Por ajo mund të jetë vetëm diçka si pikëpresje se juaj harruar.
Nëse ju jeni të shtypni PHP, disa sintaksë e gabuar
mund të merrni ju diçka të tillë.
OK?
>> Davin: Best.
A doni mua për të bërë vetëm deri AJAX?
>> Gabe: [padëgjueshme].
Davin: OK.
Pra, çfarë është DOM?
Çfarë do të qëndrojë për DOM?
>> AUDIENCA: Modeli Document objekt.
Davin: Bukur.
Dhe pse nuk na pëlqen?
Awesome.
E drejtë, kështu që ajo vetëm na lejon për qasje HTML, hyni në faqen tonë shumë shpejt.
Përse?
Sepse ne jemi duke e trajtuar tonë faqe, duke e trajtuar tags tona HTML,
trajtimin e çdo gjë si në qoftë se ata janë objekte.
Nëse ne jemi duke i trajtuar ata si ata janë objekte, atëherë çfarë mund të bëjmë?
E pra, ne mund të telefononi funksionet mbi ta.
Dhe kjo është e rëndësishme pse?
E pra, sepse ne jemi duke shkuar për të përdorur JavaScript për të rinovuar HTML tonë,
Përditëso këto objekte.
Pra, nëse ne i trajtojmë ato si objekte, ne pastaj mund të telefononi funksionet mbi ta.
Unë jam duke shkuar për të marrë në këtë pak më shumë kur unë shkoj në JavaScript,
por ju kemi parë të gjithë si document.getElementByID.
Pra dokument është tuaj element, të merrni element me ID,
kështu që ju jeni do të shikojmë për disa ID në një tag HTML.
Dhe pastaj, ju mund të bëni diçka tjetër për atë.
Për shembull, si document.body, atëherë ju mund të append fëmijë.
Pra, ju jeni do të gjeni dokumentin.
Ju keni dokumentin.
Ju do të jeni për të gjetur trupin.
Ju gjeti trupin.
Dhe pastaj, ju jeni do të telefononi disa funksion në të.
Pra append fëmijë, dhe ju mund të append disa HTML në fund brenda trupit tuaj.
Pra, në thelb, ju jeni vetëm e trajtuar atë si një objekt.
Ju jeni duke e trajtuar HTML tags si një objekt.
Dhe kjo e bën shumë të lehtë dhe të shpejtë për të shkuar nëpërmjet tyre.
Por ajo gjithashtu ju lejon për të thirrur funksione në to
kështu që ju mund të manipulojë dhe për të ndryshuar elementet.
>> Gabe: Duke pasur parasysh këtë, pse është i tillë JavaScript një gjuhë e bukur për të bashkëvepruar me HTML?
Shanset janë, kur njerëzit ishin zgjedhur gjuha për shfletuesit,
për anën e klientit, JavaScript është me të vërtetë e bukur,
kjo është me të vërtetë mirë në trajtimin e objekteve.
Dhe objektet janë lloj i pëlqen objektet që shfaqen në HTML,
kështu që është shumë e lehtë për JavaScript për të bërë atë lloj të trajtimit.
Davin: Bukur.
Kështu që këtu është vetëm një shembull.
Kështu që unë mendoj në quiz e vitit të kaluar, ose ndoshta dy vjet më parë, ne
kërkuar që ju të krijoni një pemë.
Pra, kjo është pikërisht ajo që ju do të bëni.
Pra, ju filloni me dokument.
Dhe pastaj ju në thelb vetëm shikoni në tags.
Pra, nëse ju shikoni, ne të fillojë me një tag HTML.
Dhe pastaj, ju merrni të dhëna rreth asaj se si për të bëni këtë bazuar në vulë.
Pra lloj kreu i degëve off.
Brenda kokës, ne kemi tjetër tag për titull.
Pra, atëherë, ne kemi një tag titullin.
Dhe brenda kësaj, ne kemi disa string.
Dhe kështu që ne përfaqësojmë një varg në një rreth.
Dhe të gjithë tags janë në sheshe.
>> Dhe në qoftë se ju shikoni, nëse ne mendojnë për këtë si një pemë,
dhe le të themi se HTML është një prind, pastaj kokë dhe trup
do të jenë vëllezërit e motrat.
Ata janë të dy do të jetë bijtë e atij prindi.
Pra, për shkak se ata janë të të dy vëllezërit e motrat, ata janë
do të jetë lloj tjetër të njëri-tjetrin në modelin tonë pemë.
Dhe pastaj, ju në thelb të bëjë të njëjtën gjë e saktë.
Pra, nuk është e vështirë, por ne kemi kërkuar pyetje si kjo para në quiz.
Gabe: A askënd keni pyetje deri tani?
A është e mirë?
Davin: Best.
JavaScript, OK, gjëra të mira.
Pra JavaScript, çfarë është JavaScript?
E pra, JavaScript is-- është e komplikuar, por këto
janë disa nga pikat kryesore që ju duhet të mbani në mend.
Së pari, është e shtypur lirshëm.
Çfarë do të thotë?
Pra PHP was-- vërtet, çfarë është lart?
>> AUDIENCA: Ju nuk keni për të në mënyrë eksplicite shtet çfarë lloji i variablit është.
Davin: Perfect.
Kështu që ai tha se ju nuk keni për të përcaktojë qartë llojin e ndryshores.
Kjo është saktësisht e drejtë.
Pra në C, në qoftë se kam pasur int i barabartë me 50, pastaj në PHP, kjo është vetëm si kjo, $ i,
është e barabartë me 50.
Pastaj në JavaScript, çfarë do të ishte thirrje?
Var, e drejtë?
Ajo do të jetë si var i barabartë me 50.
Por ju nuk duhet të jenë të si, OK, kjo është një int.
OK, kjo është një string.
Nuk ka nevojë për të bërë këtë.
Është një gjuhë interpretuar.
Pra, çfarë do të thotë kjo?
>> AUDIENCA: Jo hartuar.
>> Davin: Çfarë nuk i hartuar do të thotë?
Vërtet?
>> AUDIENCA: Ju nuk keni për të ristrukturuar kodin
për të marrë atë gati për kompjuter për të drejtuar atë.
Ajo është marrë vetëm në kohën e Ekzekutimi dhe kompjuter [e padëgjueshme].
Davin: Yeah, kështu që ajo do të të kalojë përmes një përkthyesi.
Por ju jeni saktësisht e drejtë.
Kështu që ju kurrë nuk do të jeni për të hartuar atë, e drejtë?
Kur ju u bën tuaj PHP dhe kodin JavaScript,
ju kurrë nuk e quajti përpiloni.
Ju kurrë nuk quhet diçka si bërë ose diçka të tillë.
Kjo për shkak se është interpretuar.
Pra, çdo herë që ajo shkon përmes shfletuesit, ajo shkon përmes një përkthyesi.
Dhe kjo do të interpretojnë atë vetëm në kohë reale e drejtë larg për ju.
Pra cilat janë disa pozitive dhe negative për të pasur një gjuhë të interpretohet
dhe që ka një gjuhë të hartuar?
Pra compiling-- vërtet, çfarë është lart?
>> AUDIENCA: interpretohet është më i ngadalshëm.
Davin: Në çfarë kuptimi?
>> AUDIENCA: Pas jush përpiloj, ju nuk keni
për të bërë ndonjë hap shtesë për të ekzekutuar ajo, ndërsa ky [e padëgjueshme].
>> Davin: E drejta, e përsosur.
Pra, çfarë ju tha është në thelb që përpiluan atë,
kur ju përpilojnë, ju keni një shumë i shpenzimeve upfront, e drejtë?
Ju jeni do të përpiloj atë.
Por pasi ju përpiloj atë, compiler do të zgjedh atë.
Ajo do të jetë i shpejtë.
Ajo do të në thelb të jetë aq shpejt sa ajo mund të jetë.
Me interpretimin, ju kurrë kanë atë kosto upfront.
Përkundrazi, ajo do të jetë pak më e ngadalshme çdo herë të vetme që ju të interpretuar atë.
Dhe ju jeni do të duhet të interpretojnë atë çdo herë të vetme.
Pra, në vend të kësaj një kosto kohë, tani ju jeni
do të keni për të interpretuar atë çdo herë faqe bën.
>> Pra përkthyesit janë të mira sepse ju nuk keni për të hartuar atë,
por ata janë keq në se çdo Herën e faqe ngarkesa, është e
do të duhet të interpretojnë këtë JavaScript.
Dhe ajo do të kandidojë pak më ngadalë se në qoftë se keni qenë për të hartuar atë.
Ju lejon të communicate-- oh, prisni.
Përdoret për të manipuluar përmbajtja dhe pamja.
Ne vetëm biseduar për atë.
Ai përdor DOM.
AJAX, ne do të merrni në AJAX në pak.
Dhe pastaj, kjo është pala e klientit.
Pra PHP është anë server.
JavaScript është anë klient.
Cilat janë pozitive për këtë?
Ajo thotë atë.
Është e shpejtë, e drejtë?
Sepse ju nuk keni to-- kjo është më e shpejtë.
Ju nuk keni për të komunikuar me disa pajisje të tjera.
Nëse ju jeni vetëm në tuaj klient, ju kurrë nuk jeni të
do të keni për të shkuar dhe parë se çfarë është në server
dhe pastaj të raportojnë përsëri ose diçka të tillë.
Pra, pala klienti tenton të të jetë pak më të shpejtë.
>> Gabe: Po, por kjo nuk do të thotë PHP është
më shpejt se JavaScript apo diçka të ngjashme.
Ata të drejtuar lloj në të njëjtën Shpejtësia shkak se ata janë të dy
Gjuhë të interpretuar.
Gjë që është i ngadalshëm këtu është kërkesë.
Pra, ju jeni në të vërtetë duke shkuar gjithë rrugës mbi të Brazilit
për të marrë disa informata që jeton atje.
Por PHP dhe JavaScript, ata lloj i drejtuar në të njëjtën shpejtësi.
Kjo nuk është se njëri është më shpejt se tjetri.
Kjo, gjithashtu, pyetje mashtrim këtu.
Pra JavaScript kurrë nuk bëhet e Kodi makinë, e vërtetë apo e rreme?
>> AUDIENCA: False.
Gabe: False.
Ajo ka për të bërë makinë Kodi shkak code makinë është
e vetmja gjë makinë kupton.
Edhe pse kjo nuk është hartuar, ajo ende bëhet Kodi makinë
sepse përkthyesi është vetëm një program që shkon rresht pas rreshti
dhe transformon atë në linjë diçka kompjuteri e kupton.
OK?
Ftohtë.
>> Davin: Këtu është vetëm një shumë bazë përshëndetje botërore programin JavaScript.
Kështu që unë nuk e di if-- ju kam parë këtë.
Por ju vetëm duhet HTML këtu.
Dhe në vend të vërtetë vënë JavaScript në tags shkrimit,
kështu që ju do të normalisht vënë atë në kokë.
Ju keni tags script.
Ju heqin atë atje.
Të gjithë ne kemi bërë këtu është që ne kemi lidhur in-- kështu që ne kemi lidhur në një skedar JavaScript
si kjo.
Dhe ju keni bërë gjithë këtë, apo jo?
Pra, kur ju jeni duke përdorur jQuery dhe underscore.js në p-set e fundit,
ju nuk keni ton e kodit deri në tags tuaj script, deri në kokën tuaj.
Ju mund të bëni atë, por në vend të kësaj ju jeni vetëm duke e lidhur atë në.
Dhe ju jeni duke e lidhur atë në Ashtu si ju bëni me CSS.
Pra, ai thjesht e bën më të lehtë për të lexuar kështu Kodi juaj nuk është si 1000 rreshta të gjatë
me ton të funksioneve që ju nuk mund të jeni duke përdorur.
>> Në vend të kësaj, ju vetëm të lidhë atë në.
Ajo compartmentalizes atë.
Është si duke shkruar disa header fotografi, dhe pastaj duke përfshirë edhe atë header skedarin në C.
Mendoni se vetëm si kjo.
Pra, çfarë do të bëni këtë?
E pra, kjo do të kandidojë.
Ajo do të njoftuar.
Pra, ju jeni do të merrni pak pop up quajtur botë Hello.
Pyetje të shpejtë, vetëm kontrolloni mendje e shëndoshë, kështu që ju të shihni këtu në trup,
them trupit, HTML këtu.
Çfarë vjen e para?
A kam shoh trupin, HTML këtu, ose mund ta shoh alarm i parë?
>> AUDIENCA: Alert.
>> Davin: E drejta.
Ai thotë vigjilent.
Përse?
>> AUDIENCA: Sepse ju shkojnë nga lart poshtë.
>> Davin: Po.
Perfect.
Kështu thotë ai, ju shkoni nga lart fund, e cila është absolutisht e saktë.
Ju jeni do të shkojnë nga lart poshtë.
Dhe në JavaScript, jQuery, ju keni një funksion që është onload si, ose gati,
dhe që thotë, OK, prisni derisa të gjithë i këtij HTML është ngarkuar.
Dhe pastaj, telefononi JavaScript.
Sepse ne nuk kemi se këtu, Gjëja e parë që do të ndodhë
po ajo do të shkojnë nga lart poshtë.
Ajo do të goditur se JS telefononi, ajo do të të njoftuar.
Pasi që ju klikoni OK, që vigjilent shkon larg.
Atëherë ajo do të tregojë ju HTML trupi këtu.
E bukur.
>> OK, kështu që vetëm i vërtetë i shpejtë, shkrim në JavaScript është e super të shpejtë.
Në mënyrë për të deklaruar një variabël, emri var.
Pra në C, ju keni int i, ju keni për të deklaruar se çfarë lloj tipi është.
PHP, $.
JavaScript, var.
Kemi biseduar për këtë.
Në rregull, le të shkojnë.
>> Unazore, të njëjtën gjë.
E njëjta gjë.
Deklaratat funksion, kështu ashtu si ju kam parë në C.
E vetmja gjë që i ndryshëm është kështu kur ju merrni për gjuhët e tjera të programimit,
si kur ju keni marrë 51 semestrin e ardhshëm dhe ju jeni duke bërë me OCAML,
ju mund të merren me funksione anonime.
Pra, kjo është pikërisht ajo që ju kemi këtu.
Pra, ju doni për të vënë në fjalë, një lloj i vlerës së shumës.
Por ju mund të bëni vetëm atë një herë.
Pra, ju nuk doni të telefononi atë funksion Shuma, t'i jepte një deklaratë funksion.
Në vend të kësaj, ju vetëm e përdorin atë si një funksion anonim.
Dhe ju e kam parë këtë shumë.
Ju do të shihni një shembull të kjo në një slides çift.
Yeah, ne do të shohim.
Gabe: Pyetje e mirë.
Kur mund të doni të përdorni një funksion anonim këtu?
Në thelb, kur ju doni diçka, si një ngjarje, që të ndodhë.
Pra, kur miu është klikuar, për shembull,
ju doni disa funksion që do të quhet.
Pra, ju të kalojë të ngjarjes mbajtës, ju të kalojë të ngjarjes,
lloj, funksion që ju doni që do të quhet.
Dhe çfarë ju jeni duke kaluar është si, në fund
e ditës, vetëm një tregues për që udhëzim, në funksion.
Pra, kjo nuk është si ju jeni duke kaluar i gjithë kodi, ashtu siç
një tregues të funksionit.
Dhe pastaj, kur dikush klikimeve mouse, pastaj se funksioni merr quajtur.
>> Davin: Vargjeve, kështu që ju të ketë një deklaratë array.
Pastaj, një grup për të vënë gjërat në.
Real i shpejtë, çfarë do të shtypura nga kjo?
Çfarë do element i tretë jetë?
>> AUDIENCA: "JS".
>> Davin: E drejta, ajo do të ishte "JS."
Prisni, të shkojnë prapa.
Çfarë është gjatësia?
>> AUDIENCA: Tre.
Davin: Tre, e drejtë?
Pikërisht ajo që ju mendoni.
OK, tani shkoni.
Vargjeve, ju mund të shtoni gjëra për ta.
Kështu që ju mund të shkoni përtej kufijtë e tyre fillestare.
Vetëm diçka për të mbajtur në mend.
PHP, JavaScript, ata janë pak pak më shumë falës në drejtim të gjërave
si kjo.
Objekte, shumë shumë si structs në C, shumë
si vargjeve associative në PHP.
Ju keni pasur të gjithë përvojë me këtë.
Pra JSON, kur ju jeni duke kaluar JSON mbrapa dhe me radhë në p-set tetë,
kjo është objekt tuaj.
>> Pra, vërtet, shembull, shembull i vërtetë i shpejtë.
Këtu është një objekt.
Mënyrë që ju referencë kjo objekt, kështu që vetëm të vërtetë të shpejtë,
le të thonë se unë të kërkuar për të gjetur jashtë, OK, çfarë është kurs?
Dhe kështu emri objekt këtu është CS50.
Dhe pastaj në qoftë se unë kishte një associative array, si do ta bëj këtë?
Unë do të jetë duke përdorur një çelës, e drejtë?
Kështu që unë kam emrin e vektorit.
Unë kam kllapa, citate, çelës, Kuotat fund, fund kllapa,
dhe që do të referencës që element brenda array tim associative.
Si mund të cekura Sigurisht brenda objektit time?
Çdokush e di?
>> Audienca: [padëgjueshme].
>> Davin: Si është puna?
AUDIENCA: CS50.course.
Davin: E drejta, vërtet.
Pra CS50.course.
Pra mënyrë ju referencë gjëra brenda një objekt JSON është me një pikë.
>> AUDIENCA: Ju mund të përdorni array sintaksë.
>> Davin: OK, gjobë.
>> Gabe: Ju mund të përdorni CS50 kllapa, string, si thonjëza.
AUDIENCA: Unë mendoj se është identike me PHP.
Gabe: Është e njëjta gjë.
Davin: Fine!
Por ju do të shihni këtë vende të tjera.
Yeah, kështu që do të mbajë.
Kjo është ajo që unë vetëm tha.
Pra, në një shembull JavaScript jQuery.
Pra, kjo është DOM im, e drejtë?
Real i shpejtë, kështu që unë kam një kreu, përshëndetje botë, trupi.
Unë kam një buton.
Ajo thotë se "shtytje mua", kështu që unë dua të shtyjë atë.
Dhe unë dua të bëj diçka kur është e klikuar.
E drejtë, e ardhshëm.
>> E drejtë, kështu që kjo është e mia JavaScript.
Pra jQuery është vetëm një e lehtë mënyrë për të shkruar JavaScript.
Pra kjo, dhe atë që unë jam duke shkuar për të treguar ju i ardhshëm, do të jetë jQuery,
janë identike.
Kështu ata do të bëjnë të njëjtat gjëra.
Vetëm jQuery ka tendencë të jetë pak më e lehtë.
Njerëzit kanë tendencë për të si ajo më shumë.
Ajo ka një shumë të funksionalitetit.
Pra, njerëzit kanë tendencë për të përdorur jQuery.
Ju të gjithë e përdorur jQuery në p-set fundit.
Pra, çfarë do të bëni këtë?
Çfarë do të këtë JavaScript-- kështu kjo është vetëm plain JavaScript.
Çfarë do të bëni këtë?
Çfarë do të bëni?
>> Pra, së pari, ju shihni onload dritare.
E drejtë?
Pra, ne nuk e shohim se më parë.
Pra, kjo do të pres derisa tërë ngarkesa dritare.
Kështu ajo do të presë deri në ngarkesës HTML, të gjitha imazhet
para se ajo nuk bën asgjë.
Pra, le të thonë se DOM jonë ka ngarkuar.
Çdo gjë është atje.
Pastaj çfarë do të ndodhë?
Vërtet?
>> AUDIENCA: Button shfaqet.
>> Davin: Butoni është tashmë atje.
Yeah, kështu button-së tashmë atje.
Por kjo do të thotë, OK, në qoftë se unë klikoni butonin,
kështu button është tashmë aty, si kjo HTML tag.
Prisni, të shkojnë prapa vërtetë të shpejtë.
Kjo etiketë e drejtë e drejtë këtu është do të jetë një buton tashmë.
Ka tashmë një buton.
Por pastaj, JavaScript tag, të drejtë këtu,
ajo thotë, OK, unë dua për të marrë element me ID,
kështu button kërko vetëm thotë, OK, unë dua të ndajë këtë variabël për atë buton.
Kështu që variabël është vetëm një Mënyra më e lehtë për të hyrë në atë buton.
Dhe unë them, OK, në qoftë se unë klikoni se button, kështu që në qoftë se unë klikoni atë element,
dhe ky element i referohet button, në qoftë se unë klikoni atë,
atëherë unë dua për të thirrur një funksion.
Këtu është një nga ata anonim Funksionet ne ishim duke folur për.
>> Vetëm thirrje disa funksion.
Brenda atë funksion, në thelb diçka që ne kemi parë shumë, alarm.
Ju klikoni butonin e kërkimit.
Ajo do të në thelb kanë një buton.
Ju click it.
Ju merrni atë vigjilent.
X jashtë.
Kjo ishte.
Vërtet?
>> Audienca: Pra, nëse ju vënë script [E padëgjueshme], tag script në HTML tuaj?
>> Davin: Ju mund të vënë script drejt tag në kokë
sepse ju e keni këtë onload.
Është gjithashtu që ju të keni një klik.
Kështu ajo do të presë deri në ju klikoni për diçka.
Por onload është vetëm që të jetë e sigurt, për të bërë siguruar që gjithçka ngarkesa në HTML tuaj
paraprakisht.
Vërtet?
Ju doni të thoni diçka?
>> Gabe: [padëgjueshme].
Davin: Po.
>> AUDIENCA: shmang Pra onload përcaktimin butonin e kërkimit ndryshueshme
nga vetëm duke thënë document.getElementByID kërko buton dot [e padëgjueshme].
>> Davin: Definitely, por pastaj string tuaj vetëm merr të madh.
Pikërisht, kështu që kjo është vetëm për të bëjë më të lehtë për ju, vërtet.
Po?
>> AUDIENCA: Nga kemi krijuar window.onload?
Ose document.ready?
>> Davin: Po, ka.
Po, atje është, i kontrolluar.
>> Gabe: Jo për ta që të intereson.
>> Davin: OK, kështu që unë jam duke shkuar për të të treguar ty anyway.
Pra, në thelb, vetëm në përgjithësi, kështu që window.onload pret deri DOM tuaj, të gjithë
HTML tuaj, ngarkesa.
Ajo pret deri imazhet ngarkesën tuaj.
Ajo pret deri ngarkesa të çdo gjë.
document.ready, ajo vetëm pret deri ngarkesa tuaja DOM.
Pasi HTML është e gjitha atje, dikur DOM juaj është atje, fillon running.
Kjo është vetëm ndryshim.
>> Gabe: mendje e shëndoshë Quick kontrolloni këtu.
Pra, kjo mund të shihet lloj si një linjë e kodit, e drejtë?
Sepse është e window.onload është e barabartë me një bandë e stuff.
Kur JavaScript lexon këtë, e vërtetë ose false, funksioni merr ekzekutuar.
False.
OK?
Çfarë ndodh këtu, ju jeni vetëm duke kaluar ky funksion si një funksione anonime
të window.onload.
Dhe atëherë kur është ajo shkon që në fakt të marrë të ekzekutuar?
Kur ngarkesa dritare.
Kjo është një ngjarje.
Pra, kjo është jus t gjë që ne jemi duke folur për më herët, e drejtë?
Pra, kur ngjarja ndodh, funksion ndodh.
E njëjta gjë me OnClick.
>> Davin: OK, kështu që dikush e mori larg document.ready.
Por kjo do të jetë same-- saktë
AUDIENCA: shenjë dollar, që është një document.ready.
Kjo është një shkurtore.
>> Davin: Oh, kjo është?
OK, kështu që kjo do të thotë document.ready, shkurtore.
Por kjo është e njëjtë si window.onload me përjashtim të asaj diference të vogël
Unë jua kisha thënë.
Dhe kjo është jQuery.
Pra, kjo është e njëjtë e saktë thing-- kjo është JavaScript.
Kjo është just-- disa njerëz mendojnë për atë si një peshë më të lehta, version të hijshme
se ka shumë funksionalitetit që ju ndoshta do të jetë duke përdorur.
Pra, kjo do të bëjë të njëjtën gjë e saktë.
>> Pra, gjëra për të lloj të nxjerr në pah.
Kështu në shembullin tjetër, ne kishte document.getElementByID,
kështu që kemi pasur këtë të gjatë varg që do të marrë
element nga çfarëdo ID ajo ka.
Kjo është zëvendësuar me këtë thirrje të drejtë këtu.
Kështu që ju shihni shenjën e dollarit, atëherë ju shihni kuotë, hashtag.
Hashtag është gjithmonë një përzgjedhës.
Ajo thotë, në rregull, kjo ka të bëjë me një ID.
Çfarë është përzgjedhës për një klasë?
>> AUDIENCA: Dot.
>> Davin: Dot, e drejtë.
Nëse ju jeni vetëm do të zgjidhni një tag, çfarë është ajo?
Është vetëm tag, saktësisht.
Dhe ju mund të përdorni atë këtu, po ashtu.
>> Gabe: Dhe nga tag, ne do të thotë si div, për shembull, ose kokë.
>> Davin: Ose organ ose p ose diçka të tillë, vërtet.
Pra këtu, OK, në vend të thënë document.getElementByID,
kjo është vetëm saktë të njëjtën gjë.
Vetëm në jQuery, kjo është më e shkurtër.
Kështu që është e thjeshtë.
Kështu, pra, jo më shumë onClick, vetëm klikoni.
funksion jQuery, e quajmë këtë funksion.
Alert është e njëjtë e saktë.
Pra, kjo është pak më të vogla, apo pak bit
më të shkurtër, një popull pak bit-- mendoj kjo është pak më e lehtë për të shkruar jashtë,
pak më e lehtë për të kuptuar.
Por kjo është jQuery.
Shumë njerëz të marrë pak pak i hutuar dhe i shqetësuar
dhe ata të mendojnë, OK, jQuery është e ndryshme se sa JavaScript.
Më duhet të mbani mend këto dy gjëra të ndryshme.
Kjo nuk është.
Unë do të thotë, është e sintaksë e ndryshme.
Por jQuery është JavaScript.
Është vetëm një dukje të version më mirë se
mund të jetë më e lehtë për të kuptoj që njerëzit përdorin.
Gabe: Po, për të qenë i ndershëm, që shenjë dollar
që ju shihni në jQuery, kjo është vetëm emrin e një funksioni që jQuery përcakton.
Ajo nuk ka ndonjë gjë të veçantë.
A Është vetëm emri i funksionit, ashtu si ju mund të përcaktojë shenjën e dollarit.
>> Davin: Yeah, kështu që ka folur për këtë.
Disa gjëra të dobishme.
Unë isha duke kërkuar mbrapa në kuize të vjetra.
Në kuize çift të fundit, ata kanë kishte për të përdorur gjëra të tilla si kjo.
Pra document.ready, kështu sigurohuni që çdo gjë është
ngarkuar para jush fillojnë të bëjnë gjëra.
Zgjidh një ID, ose zgjidhni një klasë, ajo vetëm do të
të jetë quote dot disa klasit, kuotë fund.
Submit, kështu që nëse ju jeni paraqitur një formë dhe thirrjen e
ky funksion pas formën e dorëzon.
Vlera, kështu që le të thonë se unë kam një formë nënshtrim, si një emër përdoruesi, një email,
çfarëdo.
Unë kisha një kuti teksti.
Kështu që unë jam duke shtypur në atë kutinë e tekstit.
E pra, në qoftë se ju doni të merrni vlerën nga se kutinë e tekstit, ju përdorni dot val.
Dhe pastaj, poshtë këtu, dot HTML është i njëjtë
është si dokument dot getElementByID dot innerHTML.
Kështu që do të kthehen ju HTML nga ajo ID.
Këtu, ju vetëm përdorni disa ID ose çfarëdo dot HTML.
Që do të merrni nga HTML atë element.
Në qoftë se ju të kërkuar për të pastaj të ndryshojë atë HTML, ju mund të kalojë atë diçka.
Pra, ju do të jetë si dot HTML, dhe pastaj brenda, citate, HTML e re apo diçka.
>> Gabe: OK, kështu AJAX.
Unë me të vërtetë si për të kuptuar AJAX me të vërtetë mirë.
Kështu që unë dua të ju djema të kuptoj AJAX me të vërtetë mirë.
Sepse në qoftë se ju bëni, ju jeni shumë e shumë të shkuar
për të kuptuar çdo gjë që ka të bëjë me HTTP, PHP,
JavaScript sepse të gjitha vjen së bashku në AJAX.
AJAX nuk është një gjuhë.
AJAX është një teknikë.
Dhe ai përdor shumë mjete të ndryshme.
AJAX qëndron për asinkron XML JavaScript.
Pra metodë, gjuha, të dhënat.
>> Pra, gjuhë kryesore që ne përdorim në AJAX për të shkaktuar gjithçka
dhe për të trajtuar çdo gjë më vonë është JavaScript.
Kjo është arsyeja pse ajo lidhet shumë afër JavaScript.
Dhe pastaj asinkron është sepse ne nuk e bëjmë atë
të gjitha menjëherë kur ne jemi ngarkimit faqe.
Kjo është gjëja që ne mund bëjë gjëra lloj paralelisht.
Ideja kryesore prapa AJAX është që ju doni
kjo për të marrë disa informata specifike.
Për shembull, kur ju jeni të shtypni i ri Emri përdorues kur ju të regjistruar një emër përdoruesi,
Emri im përdorues është abc123.
Dhe pastaj, në fund të formë, ju duhet të klikoni Submit.
Dhe ajo kishte për të shkuar në server, dhe pastaj kontrolloni nëse në bazën e të dhënave,
abc123 është tashmë atje.
Dhe nëse kjo është tashmë atje, ai thotë se, Emri përdorues tashmë në bazën e të dhënave.
Dhe ata, ju duhet të plotësoni nga të gjithë formën përsëri.
Dhe kjo ishte e vërtetë, të vërtetë e keqe.
>> Dhe pastaj njerëzit thonë, OK, pse nuk mund ne vetëm
bëni një HTTP kërkesë të vogël për të vetëm shikoni për të parë nëse ky përdorues është në bazën e të dhënave
para përdorues kishte për paraqesë të gjithë formularin?
Kështu për shembull, kur përdorues përfundon shtypja abc123,
le të vetëm të shkojnë në server a pak bit dhe vetëm të marrë një e vërtetë apo e rreme
nga serveri për të parë nëse kjo është një emër i vlefshëm përdorues apo jo.
OK, kështu që kjo është një nga kryesore përdor nga AJAX në ditët e sotme ende.
>> Davin: Pra i vërtetë i shpejtë, në një thirrje Ajax në jQuery,
ju mund ditur se ju duan që ajo të jetë sinkron.
Ju nuk duhet ta bëjë këtë.
Por ju mund të bëni atë.
Dhe në qoftë se ju e bëri atë, çfarë do të ndodhë?
E pra, për shembull, kur ju jeni duke marrë lajme apo çfarëdo,
shfletuesi juaj është vetëm do të presë derisa që tërë thirrje është e plotë
në vend të lejuar të bëjë tjetër gjërat e drejtë pas ju click it.
>> Gabe: Kjo nuk është duke kaluar më.
Oh my god.
Na vjen keq!
Yup.
"Në të kaluarën, klient të nevojshme për kërkesë
tërë përmbajtja e një faqe interneti. "
Kjo është ajo që kam thënë.
Kjo na lejon të dërgoni GET shtesë ose POST
Kërkesat pa pasur nevojë për të rifreskoni shfletuesin tonë.
Pra, në fund të ditës, ne jemi në të vërtetë duke e bërë një HTTP kërkesa
këtu duke përdorur JavaScript.
Sepse para, ne kemi përdorur vetëm JavaScript-in për të ndryshuar HTML që tashmë kishte ardhur.
Dhe tani, ne mund të përdorni atë për të kryesh me serverat e internetit si.
Mënyrë kjo ndodh është që ne kemi klientin.
Davin është një klient.
Dhe ai i ka të gjitha të JavaScript-in running sepse HTML është memec.
JavaScript është e zgjuar.
Pra davin Davin ka zgjuar i tij pjesë dhe pjesa e tij memec.
Ai do të përdorin pjesën e tij të zgjuar tani.
Ai do të përdorin JavaScript të kërkesës, për shembull,
nëse abc123 është në bazës së të dhënave apo jo.
>> Pra Davin, ju lutem, ju vetëm më dërgoni një kërkesë HTTP.
Falemnderit.
Pra, ai vetëm i dërgoi një kërkesë HTTP.
Ju shikoni se?
Dhe kjo është vetëm në të njëjtën mënyrë që çdo kërkesë HTTP është dërguar.
Shfletues, Google Chrome apo diçka, është
do të shohim se Davin-së duke u përpjekur për të dërguar një kërkesë HTTP,
do të ndihmojë HM pak.
Dhe kjo do të shkoj të gjitha rrugën në server.
Tani, server do të ketë PHP këtu, apo ndonjë gjuhë tjetër.
Ashtu si në një HTTP kërkesë normale.
Kjo është shumë e shumë një HTTP kërkesë normal.
>> Dhe pastaj, server është duke shkuar për të thënë, OK,
Davin dëshiron mua për të kontrolluar nëse kjo abc123 është në bazën e të dhënave.
Shkoni flisni me modelin.
Modeli i thotë se ajo nuk është. abc123 është një emër i mirë përdorues.
Dhe pastaj, web server do të përdorin PHP që të merr një formë të dosjes.
Kjo mund të jetë fjalë për fjalë vetëm një fotografi që përmban "po" në të, ose "jo,
ose diçka të tillë.
Ajo mund të jetë çdo skedar.
>> Kjo mund të jetë si unë jam duke shkuar për të dërgoni Davin një foto të një rosë
nëse kjo është në bazën e të dhënave dhe dërgoni një foto të një lloj brejtësi
nëse kjo nuk është në bazën e të dhënave.
Kjo do të ishte lloj i memec, por ajo do të punojë.
OK, kështu që unë dërgoj një rosë të Davin.
Davin mori një rosë.
Dhe tani, që po shkon për të trajtuar rosë?
Pjesa zgjuar Davin-së përsëri, kështu JavaScript, e drejtë?
JavaScript dërguar kërkesë, dhe JavaScript
është duke shkuar për të marrë kërkesën dhe interpretojnë atë në disa forma.
>> Dhe në këtë kuptim, ajo do të them, OK, nëse rosë atëherë unë jam i mirë.
Nëse lloj brejtësi, atëherë unë jam duke shkuar për të thënë, jo, emri i përdoruesit tashmë
ekziston në bazën e të dhënave.
Por zakonisht, ju nuk jeni duke shkuar për të dërguar një rosë.
Ju jeni do të dërgojë diçka pak më të zgjuar.
Dhe ajo që ne përdorim është XML.
Dhe më shumë kohët e fundit, ne përdorim JSON.
JSON është vetëm JavaScript Simbol objekt, i cili
është në thelb ju merrni një Gjithë objekt JavaScript.
Dhe ju vënë atë në një skedar, ashtu si se objekt CS50 se ju djema e pa.
Ju vënë atë në një skedar, dhe ju dërgoni atë mbi të Davin.
>> Pra në këtë rast, unë do të të bëjë një objekt të aktivizoni Java
dhe vetëm thonë, përdoruesi ekziston, po.
Ose përdoruesi ekziston, nr.
Dhe dërgoni atë përsëri tek ai.
Dhe pse JSON?
Për shkak të personit i cili është marrja e kjo është
do të përdorin JavaScript për të trajtuar përgjigje.
Dhe JavaScript punon aq mirë sepse është quajtur JavaScript Object simbol.
E drejtë?
Pra, ai vetëm mund të telefononi një funksion dhe për të marrë ky objekt i bukur nga e përgjigjes.
Dhe pastaj, ai do të di nëse se përdoruesi është në bazën e të dhënave apo jo.
>> Kështu që ju shikoni, të gjithë atë që vjen së bashku në web server,
dhe pastaj nuk ka një HTTP të kërkesës dhe një HTTP përgjigje dhe çdo gjë.
Prandaj sigurohuni që ju djema kuptojnë këtë thirrje AJAX
sepse ajo ju ndihmon të kuptoni të gjithë i koncepteve ne jemi duke folur rreth.
>> Kështu që këtu është një shembull i AJAX me jQuery.
Dhe këtu, kemi të bëjmë me get JSON.
Pra, ne nuk jemi duke u përpjekur për të marrë një Imazhi i një mace këtu, ose një rosë.
Ne jemi duke u përpjekur për të marrë një fotografi JSON.
Dhe pastaj ne presim deri ajo është bërë, dot bërë.
Kjo do të thotë unë jam duke pritur për përgjigjen.
Ajo mund të marrë një kohë pak.
Pastaj, ju shihni një ngarkim të vogël.
Nëse ju doni të bëni atë në faqen tuaj te internetit.
Pra dot bërë, dhe pastaj çfarë ndodh kur është bërë?
Ju të kalojë në një anonim funksion, ashtu si kemi parë më parë.
Sepse bëhet është një ngjarje, vetëm si klikuar një mouse apo çfarëdo,
për jQuery.
Pra, ju të kalojë në këtë funksion me të dhëna, text, statusin, dhe jqXHR.
Dhe në thelb, kjo është vetëm disa variabla
që ju mund të përdorni më vonë që të ketë Statusi i HTTP kërkesës,
të dhëna që ajo që po ndodh për të dërguar përsëri tek ju.
Pra, atëherë ju mund të më vonë në interpretojë dhe të bëjë diçka kuptimplotë me të.
Dhe nëse kjo dështon, kur mund të dështojnë?
E pra, kur HTTP kërkesë jep ju një 500 ose diçka të tillë.
Pastaj, ajo do të ju them Statusi, çfarë lloj i dështimit që ishte,
dhe të gjitha llojet e gjërave.
Ju duhet të bëni të sigurtë për të trajtuar të dyja rastet,
ndryshe program shkon i çmendur.
>> Davin: Pra, vërtet, kjo është pikërisht çfarë ke parë më i fundit p-vendosur tuaj.
Thirrja aktual AJAX është në JSON get.
Kjo është thirrje.
Dhe pastaj, dot bëhet është si ajo kontrollon nëse është e suksesshme.
Nëse është i suksesshëm, ju doni për të bërë diçka me të dhënat.
Ju merrni mbrapa nga se Të dhënat JSON kërkesë.
Kjo është ajo që ju të merrni përsëri.
Pra, nëse ju kujtohet nga p-vendosur tuaj, një shumë prej jush ishin si të të dhënave kllapa i
apo çfarëdo, dot lidhje ose titull.
Çfarëdo që të vjen përsëri nga ajo JSON, çfarëdo
fushat janë në atë objekt JSON, kjo është ajo që ju jeni duke marrë mbrapsht.
Data është ajo që ju jeni duke u kthyer.
Statusi Tekst, vetëm diçka që lejon ju e dini se çfarë ka ndodhur.
Dhe pastaj, jqXHR, kjo është vetëm jQuery XML HTTP kërkesë.
Kjo është vetëm si një objekt.
Dhe pastaj dështojnë, ashtu si Gabe tha.
Gabe: Në shembullin tonë të vogël e abc123 vetëm për të parë nëse kjo është në bazën e të dhënave
ose jo, të dhënat do të jetë diçka të ju do të bëjë, në qoftë se të dhënat dot emër përdoruesi ekziston,
cila është ajo që PHP juaj krijuara për ju, në qoftë se emri i të dhënave dot përdoruesi ekziston, atëherë
Unë jam duke shkuar për të njoftuar, përdorues Emri tashmë ekziston.
Tjetër, unë jam vetëm duke shkuar për të le të përdorues të vazhdojë të plotësojë formularin.
OK, të sigurisë, cool.
>> Davin: Duan mua për të?
>> Gabe: Më pëlqen këtë.
Pra, diçka që duket e njohur.
Ne jemi bërë gati.
Pra, kjo është vetëm shembulli ju djema e pa në klasë.
Ju keni qenë duke përdorur argv1 këtu.
Kjo është si një argument command line.
Dhe ne jemi duke MEM kopjimi se në një tampon të madhësisë 12.
Çfarë është problemi këtu?
Buffer del nga shtrati!
Sepse ne kemi një tampon të madhësisë 12.
argv1 mund të ketë një madhësi prej dy miliardë.
Ne nuk bëjmë asnjë kontrollin e kufirit.
Pra, ne mund të kopjoni një shumë të kujtesës.
Dhe ne do të jetë veçanërisht e keq për këtë.
Çfarë mund të bëjmë që është e shumë, shumë do të thotë në këtë rast?
Po?
AUDIENCA: Një pjesë e dy miliardë gjërave përmban kodin ekzekutueshme që kthen
[E padëgjueshme].
Gabe: Pikërisht.
Pra, kjo është lloj i gjë që njerëzit përdorin
të jailbreak një iPhone, për shembull.
Pra atë lloj gjë.
Sepse ju mund të bëni vetëm pajisjen ekzekutojë ndonjë kod që ju pëlqen.
Fix, kështu fix është e lehtë.
Vetëm shikoni për caqeve.
Ju kontrolloni për null sepse ne gjithmonë kontrolloni for null
kur ne jemi që kanë të bëjnë me tela.
Dhe pastaj, ju të marrë gjatësia string para.
Dhe në qoftë se të vargut Gjatësia është një varg i vlefshëm
gjatësi, e cila është brenda 0 dhe 12, atëherë ne jemi të mirë.
>> Davin: Nëse ju nuk e shikoni për null, i vërtetë i shpejtë, çfarë do të ndodhë?
Ajo do të Seg faj.
Pse do të Seg faj?
Për shkak se ju jeni duke bërë thirrje strlen mbi null.
Gabe: Po.
Vërtetë apo e rreme, duke përdorur një Fjalëkalimi është një ide e mirë.
>> AUDIENCA: False.
>> Gabe: False.
Përdor shumë fjalëkalime, dhe, ato të mëdha të gjata.
Icons dry të garantuar sigurinë.
>> AUDIENCA: False.
>> Gabe: False.
Kjo nuk do të thotë asgjë.
Është vetëm një ikonë.
SSL mbron kundër një njeri në sulmin e mesme.
AUDIENCA: False.
Gabe: False.
OK, kështu që të gjithë ata që janë të rreme.
E bukur.
[E padëgjueshme]
Dua të flas për këtë?
Rradha juaj.
Davin: Llojet e sulmeve, njeri në mes.
Çfarë është një njeri në sulmin e mesme?
Audienca: [padëgjueshme].
Davin: Nëse ju dërgoni një HTTP kërkesë, ata mund të bëjnë këtë, apo jo?
Por në qoftë se ju jeni dërguar HTTPS, ata ndoshta nuk do të jetë në gjendje të bëjë këtë.
Ka shumë pika të së bashku lidhjen tuaj.
Ju keni routers.
Ju keni serverat DNS.
Nëse dikush është në gjendje të fizikisht shikoni se çfarë ju jeni dërguar,
kështu që dikush është në gjendje të në të vërtetë të marrë në mes jush,
klienti, dhe server, dhe është në gjendje për të parë se çfarë ju jeni dërguar,
ky është një njeri në sulmin e mesme.
Pra, për të parë se çfarë ju jeni duke u përpjekur për të marrë nga server, apo është në gjendje të see-- më keq,
ju mund të jetë në gjendje për të parë biskota apo diçka të tillë.
>> Kështu për shembull, në qoftë se ju nuk jeni duke përdorur SSL, ai
mund të jetë në gjendje për të parë biskota ID tuaj sesion.
Dhe kjo quhet sesion rrëmbimi sepse ai e sheh cookies tuaj të identitetit,
dhe atëherë ai është në gjendje të shkojnë në atë website dhe pretendon të jetë ju.
Sepse ashtu si në PHP, mbani mend kur ne regjistrohet në, çfarë bëjmë ne?
Ne kemi vendosur ID e sesionit të barabartë me ID.
Kështu që ju identifikon.
Kjo është arsyeja pse ju mund të shihni portofolin tuaj dhe portofoli jo gjithkush tjetër.
>> E pra, nëse unë jam në gjendje për të marrë atë cookie, atëherë unë mund të hyni mbi atë faqe.
Dhe pastaj, unë vetëm mund të shihni stuff tuaj dhe të fillojnë blerjen dhe shitjen e stuff.
Pra, kjo është seancë rrëmbimi.
Por ju nuk duhet të jetë në gjendje to-- kështu ju mund të përdorin njeriun në sulmin e mesme
edhe në qoftë se ata janë duke përdorur SSL.
Por ju nuk duhet të jetë në gjendje për të.
Nëse ata janë duke përdorur SSL, ju nuk mund sesion rrëmbej.
Përse?
Sepse kjo është e gjitha e koduar, e drejtë? nëse është e koduar,
dhe unë jam ende një burrë në e mesme, unë ende të marrë të dhënat tuaja.
Kjo është në rregull.
Por është e koduar.
Kështu që unë nuk mund të vërtetë e përdorin atë.
Pra, kjo është dy.
>> Real i shpejtë, kërkesa faqe kryq falsifikim.
Kjo është vetëm nëse ka një lidhje dhe se lidhja bën diçka
se ju nuk mendoj se ajo duhet të bëjë.
Kështu për shembull, në qoftë se lidhja ishte shkuar për të blerë aksione ose shitur aksione,
dhe ju nuk e dini se.
Ju klikuar mbi link, i dërgoi një kërkesë, bleu
ose shitur diçka që ju nuk do të thotë për të bërë.
Kjo është se.
>> Site scripting Kryqi, kështu që këtu, ju jeni duke kaluar në nëpërmjet q ndryshueshme,
në vend të kalimit në një lloj e vlerës, ndoshta q është si një emër.
Pra, në vend të kalimit të barabartëve q Davin ose diçka të tillë,
në qoftë se ju nuk e përdorni HTML chars të veçanta, në qoftë se ju
nuk e shpëtojnë këtë për t'u siguruar se është OK, atëherë unë do të mund të kalojë në vend të kësaj,
le të themi në këtu unë jam duke thënë print ose diçka të tillë,
atëherë unë do të mund të kalojë në këtu një thirrje script.
>> Kështu, pra, në vend të vetëm marrjen e një ndryshore,
Unë atëherë do të ekzekutojë këtë thirrje script.
Pra, brenda këtij shkrimit telefononi, çfarë do të bëni?
Dokumenti dot vend, që do të të ndryshojë vendndodhjen e dokumentit.
Kështu që unë jam duke shkuar për të përcjellim për diku tjetër.
Është quajtur djalë i keq në ky shembull, shumë i mirë.
Nuk mund të mendoj të fjalës.
Dhe pastaj, çfarë është edhe më keq është se unë jam duke shkuar
për të vendosur pastaj cookie, e cila është disa variabël unë kam në këtë website.
Unë jam duke shkuar për të vendosur atë të barabartë në dokument dot cookie.
Prandaj, unë jam duke shkuar për të vjedhur cookie tuaj.
Dhe unë jam duke shkuar për të përcjellim disa informata në një faqe interneti
që ju nuk duhet të qasjes.
Dhe kjo ndodh sepse të gjithë ju jeni nuk ikin atë që kam parë.
Vërtet?
>> Audienca: Pra, vetëm për të bëjnë që qartë, është e
vulnerable.com se është e ndjeshme për këtë.
Kështu që lidhja mund të shfaqen në çdo faqe të dhënë.
Dikush klikimeve në të, shkon në vulnerable.com.
Ju keni një cookie të vulnerable.com.
Le të thonë se Facebook është të pambrojtur, kështu facebook.com.
Ju keni Facebook cookie tuaj.
Çfarë kjo është bërë, ju jeni shkuar në facebook.com,
ajo është menjëherë Përcjellin ju të badguy.com,
por duke përfshirë informacionin tuaj cookie.
Pra, kjo është një përcjellim të shpejtë, por Facebook cookie tuaj
është e përfshirë me atë ridrejtimi, dhe kjo është se si ata [e padëgjueshme].
Gabe: Yeah, nuk ka disa gjëra shumë mesatare
që njerëzit mund të bëni në qoftë se ka kjo.
Për shembull, në qoftë se lejohet Facebook të gjithë të ndryshojë emrin tuaj të përdoruesit,
dhe ata nuk kanë bërë ndonjë kontrolle mendje e shëndoshë, kështu që ju
mund të futur një gjë JavaScript që ndryshon imazhin tuaj në një lloj brejtësi.
Dhe që fut të njëjtin JavaScript-in në të gjithë që pikëpamjet faqen tuaj.
Pra, gjithkush që sheh faqen tuaj ka të njëjtën gjë në emër të përdoruesit.
Dhe për shkak se kjo është një virus, ajo përhapet në mënyrë eksponenciale.
Davin: Ne do të kaloni fundit një, dhe pastaj ne jemi duke bërë.
Pra, kjo është vetëm një tjetër shembull.
Pra, kjo është se ata nuk janë të ikin tryezën e tyre SQL.
Kështu që ju mund të heq dorë.
Pra, ju doni të shpëtuar gjërat.
Kjo ishte shembulli i mëparshëm me scripting kryq faqes.
Na vjen keq ne u zhvillua një pak vonë.
Nesër, më vjen keq!
Nesër, ne kemi orarin e punës.
Kështu orë zyrës në Cabbot 8:00-11:00.
Orët zyra janë në mënyrë rigoroze për pyetje quiz.