>> [Zenelejátszási]
HANNAH: Üdv mindenkinek.
Köszönöm srácok, hogy eljöttetek ki A undorító időjárás kvíz egy
felülvizsgálja ülésén.
Mint tudjátok, kvíz az egyik szerdán.
Így fogunk menni egy csomó téma.
DAVIN: Hé, mondhatok valami tényleg gyorsan?
HANNAH: Igen, Davin folyik hogy mondjon valamit gyorsan.
DAVIN: Sorry.
Csak tényleg gyorsan, ha kérdésed van a kvíz, mehetsz online.
Menjünk az 2014 quiz egy, a kvíz.
Van rajta logisztikai mintegy hová menjen, ha menni.
Ha egyszerre beiratkozott vagyunk Lesz egy smink kvíz at 05:30.
Vagy ha te küldtél engem olyan kérdés, van néhány más kérdés.
De 05:30 a make-up idő szerdán.
De ha kérdésed van, Általános kérdések,
Online-t a logisztika.
Így ellenőrizni ott először.
>> HANNAH: Awesome.
Tehát itt a nagy témák listája hogy fogunk átmenni ma.
Megyek minden a C cucc, ami az első oszlopban.
Így a C dolog, hogy mi borított után kvíz nulla.
Kezdve a láncolt lista, amely magában foglalja a mutatók.
>> Rendben, így látta ezt Az elmúlt felülvizsgálati ülésén,
úgyhogy megyek keresztül, ez egy kicsit gyorsabb.
Csak emelje fel a kezét, ha azt akarod, hogy lassítják, vagy foglalkozzon valami újabb.
De az általunk használt láncolt listák miatt elkezdtük a C tömbökkel.
És tömbök nagy, de a probléma az, hogy van egy fix méretű.
Láncolt listák teszi számunkra, hogy hozzon létre dinamikusan méretű adatszerkezeteket.
>> És mi van a alapműveletek Insert, Delete, és keresni.
És nem tehetünk betétet Legrosszabb esetben állandó idő
ha azt csak a legelején.
Törlésére és lekérdezésére, legrosszabb esetében nagy oh n időt.
Tehát újra, csak a flip keresztül ezek a képek,
Tudom, hogy láttuk az elmúlt időben, de szeretné nyomon követni a mi láncolt lista
nyilvántartja a vezetője a láncolt lista.
Mert tudjuk, hogy Minden egyik csomópontok
csak fog mutatni a következő csomópontot a mi láncolt lista.
>> Szóval így vagyunk nyomon követni.
Bár ezek nem folyamatos darab memória,
találjuk őket, egyszerűen következő különböző nyilak.
Itt a mi szerkezete Egy láncolt lista csomópontot.
Ezt láttuk utoljára.
Megvan a struct csomópontot.
És ez a két tulajdonság.
Számú, a tényleges értéket akarunk tárolni.
Ebben az esetben, ez egy egész szám.
Ez lehet egy string, lehetett egy char, amit akarsz.
És akkor mi van nyomon követni A következő csomópontot a mi láncolt lista.
Szóval ez lesz a mutatót a következő csomópontot.
Ha éppen csinál keresés, mint már mondtam,
ha volna, hogy kövesse a nyilak lefelé.
Beillesztés, akkor nyomon követheti hol a többi a lista.
És szeretné irányítani a fejét hogy pont a mi új elem, amely
ebben az esetben egy, majd az egyik fog mutatni
hogy a fennmaradó a láncolt lista.
Tehát újra, tudom, hogy ez egy kicsit bit megismétlődik a kvíz nulla.
Tehát meg kell nagyon óvatosnak kell a sorrendet, amelyben azt
ezek a pointings így nem veszítjük hátul a listán.
OK, bármilyen kérdése a Csak egyszeresen láncolt listák?
Félelmetes, OK, hűvös.
>> Szóval most elmegyünk rá valamit csak egy kicsit bonyolultabb,
kétszeresen láncolt listák.
Tehát megőrzése mellett a követni a következő csomópontot,
Azt is szeretné nyomon követni az előző csomópont.
És ez lehetővé teszi számunkra, hogy, ha mi vagyunk valamikor a mi láncolt lista,
nem csak menni előre, de is iterációkhoz hátra.
Mert mint láttuk, az egyszeresen láncolt lista,
ha mi voltunk néhány csomópontot, és hirtelen, úgy döntöttünk,
Igazából akarok menni A csomópont jobb előttem,
ha volna, hogy menjen minden Az utat vissza a fejét
és halad végig, amíg meg nem találta A csomópont, amit keresett.
>> Tehát ez teszi a dolgokat valamivel könnyebb, mint mi vagyunk
próbál iterálására keresztül kapcsolódik listán.
De ez megköveteli tőlünk, hogy nyomon követhesse az egyik Több mutató, így még egy node csillag.
Rendben, akkor itt jön az érdekes rész.
Fogunk gyakorolni végrehajtási távolítsa el a kétszeresen láncolt listák.
Tehát ez olyan dolog, ami teljesen fair játék a kvíz.
Ez tűnt fel a múlt vetélkedők.
Tehát feltétlenül kell készíteni kódolni egy kicsit a C.
Ne felejtsük el, hogy minden ebben a szórakoztató PHP és JavaScript,
amit még meg kell emlékezni csinálni C. Tehát ecsettel fel, hogy
Ha érzel magadban rozsdás.
>> Rendben, lássuk, ha ezt meg tudjuk tenni.
OK, hűvös.
Így fogunk próbálni szerkeszteni jobb itt,
és remélhetőleg ez a terv szerint halad.
Rendben, nem mindenki akar adni nekem egy javaslat, hogy hogyan kell kezdeni?
Az egyetlen feltételezés vagyok készítés az, hogy én már
olyan struktúrával definiált, a Egy Megmutattam az utolsó oldalon,
az utolsó diát.
És én tárolására vezetője én kötött lista néhány mutatót nevű listán.
Akar valaki kap én kezdődött?
>> Közönség: lehet létrehozni egy új node, hogy hívja ki a listából?
>> HANNAH: Félelmetes, így fogunk létrehozni
Új csomópont feltérképezni a listában.
Nekem tetszik.
Én csak nevezni pointer, ha ez rendben van.
És hol kell az eredetileg kezdeni?
>> Közönség: valószínűleg A lista élére.
HANNAH: Gyönyörű.
Szeretnénk elindítani az élén, amely Azt mondtam fog tárolni listán.
Félelmetes.
Eddig jó.
És most, a célunk az, hogy halad végig a listát
amíg meg nem találjuk a csomópontot értéke n, hogy szeretnénk törölni.
OK?
>> Tehát most az a rész, ahol akarunk halad végig.
Tud valaki arra utalnak, módja annak, hogy halad végig?
>> Közönség: A hurok.
>> HANNAH: A hurok.
Imádom.
Pontosabban, mi lehet próbálni egy while ciklus.
OK, és tudjuk, hogy elértük Vége a listán, ha mi?
Közönség: Amikor mutató null.
HANNAH: Amikor mutató null.
Gyönyörű, imádom.
OK, hűvös.
Szóval sajnálom, ha én befoglaló zárójel fajta esett le a képernyőn.
Mi hozta vissza.
OK, hűvös.
Mi a következő lépés?
>> Tehát tudjuk, hogy szeretnénk törölni A csomópont, aminek értéke n.
Szóval találjuk az esetben, ha mi valójában találni a csomópontot.
Szóval hogyan tudom megnézni, hogy?
Én csak azt mondom, ha a mutató, majd ha én Szeretném az értéket ki a pointer,
Csak azt nyíl n, értéke N, a paraméter
amit mi adtunk, hogy ezt a funkciót, a node, hogy azt akarjuk, hogy valóban törölni.
Bármilyen kérdése, amíg itt?
Rendben van.
OK, így most nézzük felhívni egy gyors kép A fórumon annak érdekében, hogy megjelenítsék ezt a.
>> Tehát mondjuk van kedves csomópontot.
És van egy értéke, én csak azt mondom négy.
És megjegyzi, hogy a következő csomópontért a láncolt lista.
És semmit sem előtte.
Tehát van a korábbi rámutatva, hogy semmi.
Ebben az esetben, akkor pont hátrafelé.
OK, csak beállítani a láncolt lista itt.
És van egy lista, amely rámutat hogy ezt a struktúrát, hogy kezdődik.
Én felhívni még egyet A teljesség kedvéért.
OK.
Én pont ezt a forward.
És Én pont, hogy egy vissza.
Hoppá, sajnálom.
Igen, van ez visszafelé.
Újra meg újra.
OK, ott megyünk.
Rendben, megvan.
OK, itt van a kép.
>> OK, így szeretnénk két esetet kell megvizsgálni.
Az első esetben, ha a node akarunk törölni
a legelején a listánkon.
És akkor, a második esetben, hogy azt akarjuk, hogy fontolja meg, ha ez bárhol máshol.
Megértem, hogy ez egy teljesen rendetlen rajz az én törlés,
de remélhetőleg megpróbálunk hogy ez világos néhány kódot.
>> OK, úgyhogy azt az esetet, ahol megtaláltuk a csomópont,
és ez a nagyon kezdete a láncolt lista.
Valaki adjon nekem egy javaslat az, hogy mi
Azt kell tennie, hogy el kellett távolítania a csomópont?
Ez egy kicsit trükkös.
OK?
>> Közönség: Meg kell venni a csomópont lenne előtte
és ez pont a az egyik, hogy lenne utána,
és megteszi a csomópont, amely lenne utána, és
Emlékeztet, hogy a csomópont előtt.
HANNAH: Pontosan.
OK, így ez a helyzet where-- van két esetben.
Megvan az esetben, ha a node, hogy keresünk
az első a listán.
OK, majd a helyzet, hogy leírt egyébként, ugye?
Ez valahol máshol a listán.
Szóval azt mondta, meg kell nézd meg a csomópont korábbi,
és hogy az előző csomópont pont a következő csomópontot.
Tehát mondjuk mi vagyunk megpróbálja kivenni öt
én nagyon rendetlen rajzot ide.
Azt szeretnénk, hogy győződjön meg arról, hogy Négy utal most már hat.
Négy következő pont hat.
És hat korábbi pont négy.
Ez a célunk itt, ugye?
Ez az, amit azt hiszem, csak azt mondta ott.
>> OK, úgyhogy kap, hogy első darabja.
Csináljuk a van előző pointer előző.
Tehát négy következő mutatnia kellene, mi?
Pontosan, ebben az esetben, hat.
Tehát azt kell mondanom, pointer mellett.
OK?
Rendben van.
Akkor most hogy eltűnjön ez a csúnya képet és próbálja felhívni a kissé szebb.
Megvan a lista feje van.
És hogy pont az első csomópont a láncolt lista, amely azt mondta, négy.
Itt a második csomópont, öt.
És mi a harmadik csomópont, hat.
Csak próbálják felhívni a pontosan ugyanolyan kép, csak egy kicsit tisztábban.
OK, így négy következő Eredetileg arra utal, hogy öt.
Öt következő pont hat.
Hat korábbi pont öt.
És öt korábbi pont négy.
Sokkal szebb!
OK, hűvös.
>> Tehát most, hogy mit csináltunk, csak Itt, ebben a kódsort,
amely azt mondja, pointer előző legközelebb, ezért ez mit jelent?
Ez azt jelenti, ha keresünk Öt, itt az előző csomópont,
és ez a következő lépés most pont öt következő.
Tehát lényegében ez mit csinál az, hogy van törölné ezt a nyilat
és így kihagyja jobb mint öt.
Világos?
Tudom, hogy lehet egy kicsit vázlatos.
Látok néhány fej bólint.
Ez jó.
OK, hűvös.
Most, mi a következő lépés?
>> Már állítani a másikra.
Most, mely más nyíl Hogy tudok változtatni?
Ez az egyik itt.
Hat korábbi.
Nem akarjuk, hogy a hat korábbi hogy pont öt többé.
Azt akarjuk, hogy pont a négy.
Ez azt a képet értelme?
Így most már valóban megteszi ötben.
Szóval térjünk hogy a darab.
Mit kell tennem, mielőtt állítsa vissza a hat korábbi négy?
Van ötleted van?
>> Közönség: Szabad a csomópont között ezeket a beállítást null?
HANNAH: Cool.
Határozottan, a végső cél lesz, hogy kiszabadítsa a csomópontot.
Így nem tehetünk, hogy itt van.
Ingyenes pointer.
Abszolút.
De még ezt megelőzően, nézzük Csak-- célunk jobb
Itt van, hogy hozzanak melletti mutatóra előző egyenlő, a mutató az előző.
Tudom, hogy ez már fedezett fel.
Oké, take-- cool.
Lehet, hogy mindenki látja ezt a lényeg?
Vagy ez szuper apró?
>> Szóval mielőtt végrehajtja ez a sor itt, azt akarjuk,
meggyőződni arról, hogy pointer következő nem null.
Mert ha melletti mutatóra van null, milyen hiba
kapok, amikor megpróbálom hivatkozhat egy null pointer?
Közönség: Seg hiba.
HANNAH: A seg hiba, gyönyörű.
OK, így ha ez nem null, akkor vissza lehet állítani.
És már hat ponttal ismét négy.
Kérdések amíg ez a pont?
Igen?
>> Közönség: Az első if, ugye
jelenti, hogy a nyíl Ezután vagy [hallható]?
HANNAH: Úgy értettem egérmutató n.
Tehát alapvetően, mit akarok csinálni mondania, az aktuális elem, hogy én vagyok
iterálás, a jelenlegi csomópont, amely Nézem, én tárolja pointer.
És tudni akarom, hogy egérmutató érték, amely ebben az esetben n.
És azt akarom látni, A csomópont keresem
a csomópont a célom, hogy törölni?
Szóval ezért van itt pointer n.
>> Közönség: Tehát a nyíl megy hogy n, a megadott érték
és tárolja a csomópont úgynevezett n?
>> HANNAH: Tehát ez olyan, mint ha én vagyok megy keresztül ez a láncolt lista
és rámutatva, hogy öt.
Ha azt szeretnénk, hogy ezt az értéket, ha Azt akarom, hogy ez a szám, 5,
Meg kell tennem mutató nyíl n.
Cool?
Igen.
>> Közönség: N és a változó nevét?
HANNAH: Igen.
Ha tehát flip vissza egy dia, n értéke a neve
értékének belsejében a csomópontért a láncolt lista.
És tudom, hogy lehet, hogy egy kicsit kicsit zavaros, mert mi is
a hívás a dolog hogy szeretnénk törölni n.
Tehát ott, hogy egy vonal származik.
Igen?
>> Közönség: Mit kell [Hallhatatlan] hogyan működnek?
A pointer [hallhatatlan]?
>> HANNAH: Persze.
Te beszélsz about-- melyik vonal?
Közönség: Az utolsó sor [hallhatatlan].
>> HANNAH: Persze, OK.
Szóval nézzük a képet annak érdekében, hogy megpróbálják megmagyarázni ezt.
Sajnálom, hogy a kamerát, az volt a kérdés
Mivel magyarázható pointer nyílra pointer előző.
OK, így mondjuk mi vagyunk az öt és a célunk az, hogy törölje az öt.
Tehát melletti mutatóra, amely ezen három csomópont mond ez nekünk?
Ez elvezet minket a hatodik csomópont, ugye?
>> OK, így most kérünk a hat korábbi.
OK?
És mi alaphelyzetbe állítása hogy egyenlő négy,
amely történetesen öt korábbi.
Tudom, ez szuper Nehéz nyomon követni.
Nagyon ajánlom neked rajzolni Ha kapsz egy kérdés, mint ez.
Igen?
>> Közönség: az oka, hogy nincs egy [hallhatatlan]?
>> HANNAH: Pontosan.
Szóval a kérdés az volt, hogy miért nem azt nem kell ellenőrizni itt?
Miért nem kell ellenőrizni, hogy pointer korábbi nem egyenlő null?
És ez azért van, mert Már elkülöníteni
a helyzet, ha az egérmutató a legelején.
Nagyon jó kérdés.
Bármi mást erről?
OK, hűvös.
Tehát fejezzük be azt.
Már majdnem ott vagyunk.
>> Szóval mi van, ha ez az élén?
Mi lenne, ha ahelyett, megpróbálta törölni öt,
igazából akartam törölni négy?
Mit is kell tenned?
Nos, azt akarom állítani a fejem, hogy mit?
Shout ki?
Közönség: Az egyik utána.
HANNAH: Gyönyörű.
OK, így szeretnénk felsorolni, hogy mutasson hogy bármi legyen a pointer következő csomópont.
Jó.
És csak a teljesség által kedvéért, mi lenne
ellenőrizni kívánja, hogy amíg mi lista nem nulla, amíg A lista nem
üres, akkor szeretnénk beállítani Korábbi egyenlő null.
Kérdés eddig?
Egy lépésre from--?
>> Közönség: Lenne, ha felsorolás nem egyenlő null?
>> HANNAH: Igen, igazad teljesen igaza van.
Annyira sajnálom.
Ez a lista nem egyenlő null.
Félelmetes.
Próbál, hogy ez az egész a képernyőn.
Ez a fajta esett le.
Sajnálom, srácok.
És végül, de nem utolsósorban, az összes meg kell tennie, hogy cserébe.
OK.
Ez rengeteg zsúfolásig A nagyon gyorsan.
Vegyünk egy második nézni ezt át.
Mondd meg nekem, ha bármilyen kérdése van.
Igen?
>> Közönség: Ha a lista a fej, ​​then-- várni, sebaj.
>> HANNAH: OK, jó.
Tehát ez, ha a lista élén, mi távolítsa el azt, hogy bármit is be.
Igen?
>> Közönség: Meg tudod magyarázni, Az első, ha a nyilatkozatot újra?
Ha a mutató, hogy n egyenlő n?
HANNAH: Persze.
Tehát a célunk ennek az egész funkció törölni a csomópont, aminek értéke n.
Ezért ha úgy találjuk, mint mi vagyunk iterációjával keresztül listán,
A csomópont értéke n, ez Az egyik akarunk törölni.
Így minden a törlés történik belsejét, hogy nagy, ha a nyilatkozatot.
Van ennek értelme?
Cool.
Igen?
>> Közönség: Talán csak nem látjuk , de nem kell még egy sort
lapozása listán?
HANNAH: Awesome.
Nézzük, hogy ezt egy kicsit, és fogjuk dobni ezt a jogot az alján.
Lehet, hogy a fedélzeten volna már egy kicsit jobb ötletem.
Szóval hogyan mozgok mutatót előre?
>> Közönség: Pointer egyenlő mutató plusz egy.
>> HANNAH: Gyönyörű.
Úgy, hogy lehetővé teszi számunkra, hogy továbbra iterációjával keresztül.
OK.
Közönség: Nem lenne ott lenni más?
HANNAH: Még egy időben?
Közönség: Nem lenne ott lenni else után a nagy öreg, ha
nyilatkozatot [hallhatatlan]?
HANNAH: Melyik része?
Sajnálom.
>> Közönség: A bejárás, Nem kellene egy más?
HANNAH: Egészen lehettek mást.
Mert van egy visszatérő joga van, akkor nem kell egy mást.
De igen, jó kérdés.
OK, igen?
Közönség: Meg tudjuk gondolni pointer hogy halad végig a listát
mint vevő az értéke Az egyes node a listán?
Vagy inkább úgy mondanám, hogy egyfajta külső a listára?
>> HANNAH: Vagy valamelyik rendben van, azt hiszem.
Én úgy elképzelni, hogy Azt mondják, OK, én vagyok a mutató.
És ez nekem.
Ez a kezemet.
Megyek, hogy pont a másik dolgokat, hogy azt akarom, hogy halad végig.
Először fogok mutatni A lista élére.
És, hogy azt mondja, én vagyok fog mutatni, hogy négy.
És így velem, hogy a külső a listára, Azt is pont minden egyes ilyen elemek.
Szóval azt hiszem magamról, pointer.
Közönség: Tehát ha törli Egy ilyen elem,
törli magát, hogy úgy mondjam.
HANNAH: Pontosan.
Szóval törölje a dolog te mutat.
Azaz, például, hogy Láttuk, hol vagyunk
megpróbálta törölni öt, ha én vagyok a mutató öt,
Azt akarom, hogy törölje a amit én mutatva.
Pontosan így van.
Igen?
Közönség: Van már gondoskodott a esetben, ha n nem a listán?
HANNAH: Ha n nem szerepel a listán?
Minden, ami történni fog az Ön majd halad végig, és iterate
keresztül, majd fogsz hogy a mutatóra, hogy null,
majd fogsz tenni.
>> Közönség: Szóval van vissza semmit?
HANNAH: tudtuk.
Az is, hogy ha meg van adva ez a funkciót, csak annyit, hogy visszatér
semmissé függetlenül.
De akkor lehetett volna valamit mint egész szám visszaadása
és már akkor vissza Negatív 1, ha nem sikerül.
Valami ilyesmi.
Kérdések with-- igen?
Közönség: [hallható]?
HANNAH: Tessék?
Közönség: [hallható]?
HANNAH: Persze.
Szóval ez a actual-- egyszer voltunk elvégezni ezt a munkát a mozgó
Mindezen nyilak körül, az egész célja az volt, hogy megszabaduljon a csomópont
hogy keresünk.
Tehát ebben az esetben, megkímélve pointer, ha én vagyok mutatva öt,
ez olyan, mint törölné ezt a középső csomópont.
Ez az ingyenes pointer része.
Van ennek értelme?
>> Közönség: Így is gondoltam nem tetted [hallhatatlan]?
>> HANNAH: Tehát kezdetén feltételeztem volt néhány listán volt already--
zárták be ezt együtt.
Tehát azért, hogy létrehozzunk erre listájában, akkor biztos [hallhatatlan].
Cool.
Bármi más ezzel?
Igen?
>> Közönség: Mi van, ha a listában nem egyezik meg a null vonalat?
[Hallhatatlan]?
HANNAH: Pont itt?
Közönség: Igen.
HANNAH: OK, minden, amit csinálok hogy én vagyok csak megbizonyosodtunk
hogy mielőtt megpróbálom, követéssel listán, Mielőtt megpróbálok hozzáférni az előző,
Azt szeretnénk, hogy győződjön meg arról, hogy ez nem null így nem kap egy seg hiba.
Cool.
>> OK, tudom, hogy ez elég Sok átvészelni.
Tehát ez a slide lesz elérhetővé teszi.
Szóval lehet menni rajta részletesen.
Igen?
>> Közönség: Miért tüntetnek fel [hallhatatlan]?
HANNAH: Persze.
Szóval lista igazán mutat ez az elem itt,
Az első elem a listában.
Így nem volt már.
Igen?
>> Közönség: Vajon a pointer pont ugyanarra a címre a memóriában?
Vajon mind ugyanarra A cím memóriában, mint a csomópont
hogy ez mutatva, hogy?
>> HANNAH: Igen, ez rámutat hogy ez a csomópont a memóriában.
>> Közönség: Rendben, tehát ha [hallhatatlan]?
>> HANNAH: Bizonyos értelemben igen.
OK.
Rendben, menjünk együtt ezt.
És ha további kérdései vannak, sehova végén,
és mi lehet menni rajta újra.
OK, hűvös.
Most, hogy lépni hash táblák, próbálkozás,
és a fák, amelyek megvan super ismeri a p-be öt, helyesírás.
>> Tehát hash tábla csak egy tömb egyenként kapcsolt listák
vagy kétszeresen láncolt listák jön ki belőle.
Tehát van valamiféle Az asszociatív tömb.
És hogyan tudjuk, hogy ezek közül tömbök vödrök bejutni,
használjuk a hash függvény.
Tehát ebben az esetben, lehet valaki kitalálni, mi a hash függvény
lenne csak az alapján, Az input és output?
>> Közönség: Letter száma az ábécé.
HANNAH: Pontosan.
Ez csak teszi őket ábécé sorrendben.
Minden, ami kezdődik, A helyezik az első vödör.
Minden, a B kerül be a második vödör, így tovább, és így tovább.
Félelmetes, OK.
És a hash függvény minden működést, mely egy szó
és megmondja, hogy mi vödör tartozik az.
Tehát melyik bejegyzés a array tartozik az.
>> Így minden alkalommal adom hash függvény egy szót,
meg kell mondani, ugyanazon helyezze minden egyes alkalommal.
Tehát, ha a hash függvény Az előző diára
ahol mi vagyunk válogatás a első betű az ábécé,
minden alkalommal adom hash függvény "alma"
azt mindig add vissza 0.
Tehát ha van egy alma tenni az én hash tábla,
ha adok "alma" az én hash függvény, meg kell mondani, menj tedd a vödörbe 0.
Ha én keresek egy Az Apple az én hash tábla
és azt mondom, ahol erejével apple Élő, akkor kérdezze meg hash függvény.
És azt mondja, menjen a vödör 0.
Rendben?
Kérdések a hash függvények?
Félelmetes.
>> Itt van egy valamivel több, részletes magyarázatot
amit egy hash függvény nézhet.
Rendben van.
Nos, a probléma a hash funkciók egy ideális világban,
mi lenne csak egy dolog, minden vödör.
De a valóságban, van Nem csak egy szót
kezdődő A. Ott nem csak egy szó, hogy elindul a B. Tehát
Ebben az esetben, ha hirtelen kap "bogyó"
és azt akarjuk, hogy tedd a mi hash tábla,
és látjuk, ó, nem, banán már ott, mit fogunk csinálni?
>> Nos, van két lehetőség.
Az első lehetőség lineáris szondázás, amely
csak azt jelenti, menj találja A következő üres vödröt.
Keresd meg a következő üres tömböt bejegyzést.
És csak hogy "bogyó" van.
Úgy tudom, hogy kéne menjen banán vödör egyet.
De csak betette a vödör három, mert vödör három üres.
Egy másik lehetőség az, valószínűleg amit végre
a p-set, ahol volt külön kötésével.
Tehát minden a vödrök, minden a tömb elemeit,
nem csak a birtokában szavakat, de valójában tartja a mutatót a szavak listáját.
Tehát, hogy ha volt banán a hash tábla
és akkor hirtelen akart hozzáadni bogyó, nem probléma.
Csak add bogyó a végéig, vagy Kezdetben a láncolt lista.
OK, félelmetes.
Kérdések a hash asztalok, mielõtt?
>> Rendben van.
Fák és próbál.
OK, így ez volt a másik lehetőség végrehajtására szótárban.
Akkor lehetett volna tenni egy próbát.
Szóval ez egy különleges fajta fa, úgy viselkedik, mint egy multi-level hash tábla.
Így látni fogod a kép ahol van egy tömbben, hogy
rámutat, hogy egy csomó tömbök Ezen a ponton, hogy egy csomó tömbök
Ezen a ponton, hogy egy csomó tömbök.
És majd meglátjuk, hogy pontosan mit nézne ki a jövő slide.
És általában egy fa csak olyan adatok szerkezete
amelyben az adatok szervezett egy hierarchia.
Szóval, ha láttuk mi valamiféle megértést
A felső szinten egy következő szintre, a következő szintre, a következő szintre.
Tehát valószínűleg ez a legtisztább néhány konkrét példát.
Tehát itt a mi fán.
Láthatjuk, hogy tevékenység különösen szinten
hogy kezdjük, hogy gyökér csomópontot, egy.
És mi lehet lemenni a mi fán.
>> A bináris fa egy adott típusú fa.
És az egyetlen specifikáció egy bináris fa
az, hogy minden csomópont legfeljebb két levél.
Szóval nem fog lát E csomópontok három vagy négy
vagy valamilyen más levelek száma.
És akkor még speciálisabb egy bináris kereső fa
ahol minden csomópont, hogy a bal oldalon a node megy, hogy egy kisebb értékkel.
És minden értéket a jobb lesz nagyobb.
Tehát, ha látsz 44 van a gyökere, balra, 11, 22, és 33
mind kevesebb, mint a gyökér.
És a jobb oldalon az összes számok bigger-- 66, 55, és 77.
És ez a tulajdonság igaz minden szinten a fa.
>> Tehát amikor megyünk le 22, 11, és 33, még mindig 11
kisebb, mint a 22 és 33 nagyobb, mint 22.
És ez megkönnyíti a keresés mert ha keresünk egy számot,
tudjuk, pontosan melyik ága, hogy kövesse le.
Szóval ez emlékeztetném önöket a kis bináris keresés.
Igen?
>> Közönség: Tehát, ha éppen leíró bináris,
Ön azt mondta, hogy legfeljebb két levél?
HANNAH: Mm-hm.
Közönség: Lehet, hogy kevesebb?
HANNAH: Igen.
Mondjuk, például, ha nem volt páros számú dolgok
és te nem töltse ki az összes levelek, semmi baj, ha az ember egy.
OK?
Félelmetes.
Bármilyen további kérdése van a fákat?
OK.
>> Vissza a próbálkozás, mint én beszélek egy kicsit korábban,
hogyan kell ezeket a multi-level tömbök.
Tehát ebben az esetben, kezdjük a tetején.
És tudjuk követni az adott szót le.
Tehát mondjuk azt akartuk, keresni Turing.
Kezdjük a T kövesse le tömbbé tartalmazó U,
és kövesse le, amíg meg éri el ezt a kis delta, amely
azt mondja, igen, akkor megtalálta a szót.
Világos megpróbálja?
Bármi, hogy menjen oda?
Igen?
Közönség: Vajon a szimbóluma delta Van helyet követel magának az esélyt?
HANNAH: Igen, így nem is szükségszerűen kell hogy legyen a delta.
De szükségünk van valamilyen módon mondjuk a computer-- sajnálom,
így tudjuk, hogy TUR nem egy szó.
Mert mondjuk nem volt Ez a koncepció a delta, ez a koncepció
gratulálok, hogy talált egy szót, ez megy keresztül, és léptetjük T-U-R,
majd azt mondják, félelmetes, megtaláltam!
Meg kell egy szót.
De ez tényleg nem.
Szeretnénk egészében Turing, hogy egy szót sem.
Tehát mi kell valamit a end, hogy azt mondja, gratulálok,
megtalálta jogos szót.
Közönség: Tehát, ha kellett, mint 26 betű az ábécében,
azt, hogy tényleg kell 27 kulcsokat a próbát?
>> HANNAH: Félelmetes, igen.
Tehát valójában, azt hiszem, hogy lesz a következő dia.
Ta-da!
Ahol ha van egy node a próbát, akkor
megy, hogy 27 gyermek helyett 26.
Bármilyen kérdése van ezzel?
Igen?
Közönség: Miért próbál felvenni, így sok hely [hallhatatlan] kirovó?
Miért kell tekinteni [hallhatatlan]?
HANNAH: Persze.
Menjünk vissza.
A kérdés az, hogy miért a próbálkozás sokkal nagyobb
mint olyasmi, mint egy hash táblát.
Így minden egyes ilyen szintek, akkor is, ha ők nem készült itt,
van, hogy mind a 26 karaktert.
És az oka, hogy nem tudsz azt mondják, ó, de mint a Turing, I
nem kell, hogy bármely olyan Ugyanazokat a dolgokat szintjén U. Nos,
ha hirtelen ezt szeretnéd elérni valami, ami olyan volt, mint a T-H,
azt kell, hogy a képessége hozzátéve, hogy szót.
Tehát minden egyes betű, fogsz is
hogy van egy csomó tömbök jön ki belőle.
Így láthatja, hogyan lennék igazán nagy, nagyon gyors.
Más kérdés?
Rendben van.
Igen?
>> Közönség: Mikor próbálkozás gyorsabb, mint hash táblát?
>> HANNAH: Mikor próbálkozás gyorsabb, mint hash táblát?
Tehát, ha volt egy igazán rossz hash függvény.
Mondjuk én, mint itt a hasító függvény.
Nem számít, milyen szót adsz nekem, én mindig
megy, hogy a tömb bejegyzés 0.
És így a végén csak üzembe mindent egy nagy, hosszú láncolt lista.
És így a keresési időt venne igénybe a legrosszabb n, ha ez a legvégén a listánkon.
A próbát, már csak azt kell iterálására levelek útján a szót.
Tehát még ha hozzá egy csomó több szót a próbát,
hogy nem vesz minket tovább megtalálni egy adott szót.
>> Mindössze annyit kell tennie, hogy a Például ebben az esetben,
mondjuk keresünk zoom, mi lenne csak ki kell végighaladni
Z-O-O-M, négy betű.
Tehát ez csak a hossza a szó zoom.
Nem számít, hogy hány több szót tesszük ebben a próbát.
Mindig lehet kapni e négy lépésből áll.
Félelmetes.
Igen?
>> Közönség: Szóval [hallható] egy tömb, ugye?
>> HANNAH: Mm-hm.
Közönség: Ha keres [hallható],
azt kell átmenni a tömb találni [hallhatatlan]?
HANNAH: Persze.
Közönség: Ez nem azt több időt vesz igénybe?
HANNAH: Ha megyek azt mondják, hogy én tömb mindig
lesz az A, B, C, D, E, F, G, bla-bla-bla,
Tehát, ha mindig tudom, hogy ez pontosan ugyanolyan sorrendben,
Ha mindig tudom, hogy ez ábécésorrendben,
Én csak azt mondom O száma így és így az ABC-ben.
Ugorjon arra a helyre.
Mert emlékszem, a tömbök, akkor érheti el
minden eleme a tömbben állandó idő, ha tudjuk, hogy hol is keresünk.
Igen?
>> Közönség: az előző csúsztassa [hallhatatlan] 27,
de 26 az első.
>> HANNAH: Tessék?
>> Közönség: Nem ez az első Egy 0, tehát nem lenne 26?
>> HANNAH: Persze, így amikor azt mondjuk, 27, ennyi elmondja nekünk indexek 0-tól 26.
De ha valóban számít ezeket ki, hogy lesz 27.
Jó kérdés.
Van még valami?
Igen?
>> Közönség: Így van próbálkozás lassabb, mint a hash táblát?
>> HANNAH: Megpróbálja lesznek, a Elméletileg gyorsabb, mint hash táblák
de több memóriát.
Igen?
Közönség: [hallható]?
>> HANNAH: Sajnálom, én nem hallom.
Közönség: [hallható].
0-25 ad 26.
>> HANNAH: 0 25 fő kapsz 26, jobbra.
>> Közönség: És akkor [hallhatatlan].
HANNAH: Így van.
Így a szám mi megadásával is a néhány dolog a tömbben.
Tehát ha van 27, ez elmondja nekünk 0
a 26, amely megadja minket szoba, ebben az esetben,
Én nem beleértve az aposztróf.
Tehát mi megvagyunk 0-tól 25-a Az első 26 az ábécé betűit,
vagy mind a 26 betű az ábécé.
És akkor, hogy az utolsó dolog, belépéskor 26, az
lesz az ellenőrzés jelöli meg, vagy a delta.
Van még valami?
Félelmetes.
Elvesztettem a helyet.
OK, hűvös.
>> Így már érintettem ezt.
De a nagy kompromisszum között a kísérletek és hash táblák
az, hogy megpróbálja biztosítani, a Elméletileg állandó felnéz
szor de egy csomó memóriát.
Rendben, most már valamivel kevésbé bonyolult szerkezetek,
és mi történhet C, és mi költözünk végig.
>> Tehát halom, láttuk ezt előadótermekben, ahol
Van valami, mint egy köteg tálcák, ahol
Az utolsó dolog, amit tesz A stack megy
hogy az első dolog, amit felszállni.
Szóval ez az, ami igazán meghatározza a stack az, hogy az utolsó dolog, amit fel
lesz az első dolog, amit felszállni.
És a terminológiát, hogy az általunk használt ha fogunk tenni valamit,
ha fogunk adni valamit a verem, ezt nevezzük rámenős.
És ha veszünk valamit off, hívjuk pukkanó.
És ha megyünk végre egy köteg, mi
meg kell bizonyosodni arról, hogy nyomon követhesse mind a méret és a kapacitás.
Így az összes elemet tudunk tartása és az aktuális elemek száma
hogy tartunk.
>> És nagyon hasonlóan, mi sorokat.
És az egyetlen különbség ehelyett a halom,
azt mondta, az utolsó dolog, amit fel az első dolog, amit felszállni.
Tehát a sorok, a első dolog, amit beviszünk a
lesz a első dolog, amit kivenni.
Tehát ez olyan, mint ha valóban rajthoz áll a boltban
és te is segített, akkor az első személy sorban
legyen az első, aki segíteni.
Szóval ez lenne a sorban.
>> Tehát meg kell nyomon követni a méret, kapacitás, és a fejét, mivel mi vagyunk
fog tartani mindenkit le az elülső A lista helyett vissza.
Kérdések a véleményed?
Bármilyen C kérdésére gondod?
Adatstruktúrák, bármely olyan vicces dolgokat?
Rendben, jó.
Úgyhogy átadja Alison hogy ugorj be néhány programozási.
>> ALISON: Ó, majd meglátjuk.
Meglátjuk, milyen jól csinálok itt.
OK, megyek próbálni, és repülni révén ez a cucc, srácok.
Hannah nagyon ban mélység minden holmiját.
Megyek próbálja beadni egy gyors robbanás áttekintése
hogy mi lehet eljutni Davin minden A szórakoztató JavaScript és biztonsági dolgok
hogy talán valóban szeretne többet hallani.
>> OK, mint Hannah azt mondta, ha Ha bármilyen kérdése,
Én is megyek gyorsan, kérjük, tudassa velem.
Én válaszolni a kérdésekre, ha szükséges.
Így kezdeni, fogunk kezdeni talán az egyik legelső dolog,
megtanultad a web programozás, az engedélyeket.
Tehát chmod, srácok kellett volna mesterek ebben minden web
programozási, hogy már késõn csináltál.
Ez alapvetően csak a parancs amely megváltoztatja az engedélyeket
vagy a hozzáférési jogosultságok A mi fájlrendszer-objektumok.
Persze, hogy ténylegesen ezeket, ha
hogy bármilyen baj ezekkel során a problémát készletek,
lehet, hogy használt ls -l, ami hosszú, hogy a néző olyan, mint ez a,
ahol valóban látni az összes Az engedélyeket a fájlt.
>> És tényleg, mi csak fog menni keresztül elég gyorsan csak szép
sokat, amit minden egyes ilyen jelenti.
Szóval még nap itt, amelyek csak áll a könyvtár.
Természetesen itt azt látjuk, rwx, amely olvasható, írható, és végrehajtható.
Ezek is képviselteti magát bit, amit majd bejutni a következő oldalon.
Így minden triád, hogy láttuk Itt, így három triádok.
Mi már rwx, r semmi x és r semmi x ehhez első fájlt.
Ez az általános képletben.
>> Így van némi könyvtárban.
Van néhány felhasználói csoport ezekkel a jogosultságokkal.
Néhány csoport, amely ezeket az engedélyeket, és a világnak, hogy van egy engedélyt.
Azt lehet gondolni ezeket a triád.
Azt lehet gondolni ezeket három bit.
Így azok az értékek követése bárhol a 0-ig
7, ezért néha mi volt teszel chmod
Helyett 600 chmod rw bármi.
Veszünk egy példa van.
De alapvetően, akkor gondolom, Ezeknek, mint akár csak rwx,
vagy tudod gondolni rájuk, mint valami száma, ahol az első egy van
jelentése közötti szám 0 és 7, ez a második egy
jelentése közötti szám 0 és 7, valamint a harmadik egy
számot jelent 0 és 7 között, OK?
>> r értéke 4. w értéke 2, és x
értéke 1, ezért ez a engedélyt kellene legyen chmod 700.
Mivel ebben az esetben is, ez azt mondja, már az első bit van van tükrözve.
Tehát van 4-olvasás.
A második bit van tükrözve a w, amely 2, így most már 6.
És a harmadik bit van tükrözve az x, ami 1, így jutunk hét.
És persze, a csoport és a világot egyaránt 0.
Tehát ez is a megfelelője chmod 700.
És azt is biztosan megpróbál megérteni a leképezés között.
Nem vagyok benne biztos, hogy van felér egy kvíz előtt,
de jó lenne egy kérdés, hogy én lehet kérni.
>> Csak egy kicsit még tovább megy tovább chmod itt, itt
a nagyon általános szerkezete a chmod hívás.
Így persze, már chmod itt.
Referenciák, mire is utal, hogy a Kik vagyunk teremtve ezen engedélyekkel
vagy akik már szedik ezeket jogosultságokat re.
Tehát van egy itt a jogosultságokat, mint mi adtam neked chmod a plusz x,
mint látni fogjuk hamarosan.
Egy csak azt jelenti, hogy ezek a konkrét engedélyeket mindenkinek.
Adj nekik minden.
Szóval akkor nagyon is van u plus x vagy g plusz x vagy o plusz x vagy több
cikke.
Tehát ez az első rész mindig lesz hivatkozásokat.
Kik vagyunk mi, így ezeket az engedélyeket az, vagy akik azt figyelembe őket távol?
>> A második az üzemeltető.
Szóval ti nagyrészt foglalkozott plusz.
Ez ad jogosultsága Aki adsz nekik,
míg mínusz, logikusan, eltávolítja azokat.
Tehát semmi túl szörnyű ott.
És akkor módok, amit megbeszéltünk olvasás, írás, vagy végrehajtó.
Tehát egy plusz x azt jelenti, hogy futtatható engedélyeket mindenkinek.
És aztán, persze, amelyre fájl vagy könyvtár.
OK?
Mindenki jó chmod?
Nem is rossz?
>> OK, így HTML, bárki közületek elég idős to-- MySpace korban?
Elküldtem ezt az én szakaszt, és szó szerint a megkérdezettek fele
nézett rám, mint egy őrült.
És én, mint a srácok, nem vagyunk olyan öreg.
Gyerünk.
Tehát Hypertext Markup Language, ez tényleg csak egy módja,
megjelenítésére bizonyos dolgokat az interneten.
Szóval ez egy leíró nyelv.
Ez nem egy programozási nyelv.
Nincs logika azt.
Ez egyszerűen változtatni a Így valami jelenik meg.
OK, szóval ez egy fontos Különbséget kell tenni.
Ez tekinthető egy leíró nyelv, Nem egy programozási nyelv.
>> Tehát itt van a mi HTML.
Ezen slide valószínűleg a legtöbb azokat, amiket meg kell ismernie
és igazán kényelmes.
Tehát nyilvánvaló, hogy van a HTML tag, amely
jelöli, hogy mindent E két lesznek HTML.
Van néhány link, amely Nyilvánvalóan Önnek
egy linket egy külső weboldalon.
Néhány cím belül fejünk itt.
És mi van a test H1, amely egy fejléc,
így lesz, hogy szép és merész és nagyobb.
És akkor mi van némi p, amely egy bekezdés.
Akkor valószínűleg tudja, és ismernie kell a dolgokat
mint azt, hogyan képet beszúrni, amelyek Van más header osztályok?
Azt biztosan kényelmes div.
Tehát ezek többsége címkék hogy meg kell ismernie kell.
De természetesen, mint minden a CS 50, a lista nem teljes.
Ügyeljen arra, hogy ecsettel fel, hogy.
>> CSS, így CSS, ha valakinek nézni én szemináriumot a két héttel ezelőtti,
tényleg csak egy módja stílust a weboldal?
OK, így van némi jelölőnyelv.
HTML, amely gondoskodik a csak a szöveg és hol lehet az oldalon.
De CSS valóban mi teszi elég.
Lehet, hogy ezeket a HTML fájlokat, de fogunk beszélni később,
Biztos vagyok benne, hogy talán hogy a következő diát, akkor
Általános gyakorlat, és ténylegesen gyakorlatot, hogy valóban ösztönözni,
, hogy tartsa őket egymástól, amikor beszélni MVC, és hogy az egész paradigma.
Ez tényleg, mi ez táplálja.
>> Tehát CSS csak egy módja annak, hogy hogy a dolgok nézel.
A dolog van, mint a test és #title és .info,
ezek az úgynevezett választók és mit úgy csinálják, hogy válasszuk külön a dolgokat
belül a HTML fájlt és alkalmazni mindegy, milyen stílusban,
bármilyen fajta dolog, amit akar, E sajátos eleme a web
oldalon.
Tehát itt van egy háttérszínt és egy színes
és Betűcsalád, amit most alkalmazott, hogy bármi is van a szervezetben.
Tehát, ha nézett vissza ide, hogy nem vonatkozna a cím.
Ez csak azokra mi Ezekben test választók, OK?
>> A cím itt, ez lesz ugyanaz a dolog,
a színe a szöveg hogy kék csak akkor fog
befolyásolja, ami belül A cím választók.
Valamint az információ itt A szöveget a pink,
bármi van info, ami itt van.
Tehát az egyetlen dolog, ami lenne pink ezen az oldalon
az időpont, hétfő, november 17, 2014.
OK, így CSS csak egy módja annak, hogy több ellenőrzés over-- igen?
>> Közönség: Miért kell használja a hash cím?
>> HANNAH: Next slide, megígérem!
Mi lesz ott.
Tehát ezért kell használnunk hash.
Tehát választók veszi három fő formákat, hogy beszéljen nektek szól.
Azt fyou szeretne többet, rengeteg odakint.
Ott nagy CSS dokumentációt.
Van egy tag nevét, amely arról szól, hogy csak a szokásos címkéket HTML-ben.
Tehát H1, p, div, h2, azok a dolgok.
És mi csak megnevezni azokat, ahogy van.
Tehát mint látjuk itt test, ez egy normális tag.
Szóval csak fel testben, ha beszélünk a mi CSS fájlban.
>> Címmel, az egész oka van ezt hash van, mi van
minősül ID.
Tehát egy azonosítót mindig belül egyedi HTML oldalt
úgy, hogy ha a utalva rá, akkor
tudom, hogy te csak utalva hogy egy adott dolog.
Tehát ebben az esetben is, a mi H1 itt, CS 50 felülvizsgálati ülésén,
van egy id cím.
Tehát annak érdekében, hogy csak nézze meg, hogy darab a HTML, mi egy hash címet.
Csak egyezményesen azonosítókat jelölnek A kettőskereszt előttük.
Ugyanígy, azt látjuk, info itt van egy osztályban.
És így osztályban CSS jelölték a dot osztály
vagy pont, amit az osztályban van.
Tehát ebben az esetben is, ez info.
>> Így hát vegye vissza.
Mindkét lennének rózsaszín a mi CSS itt
mert mindketten egy osztály info.
És a mi CSS fájlban, már kijelölt hogy semmit egy osztály info
legyen rózsaszín.
Van ennek értelme?
Igen?
>> Közönség: Ha volt, hogy mindenre a szervezetben fehér,
majd megpróbáljuk valami benne kék,
azt, hogy problémát okozhat?
>> HANNAH: Tehát CSS Cascading Style Sheets.
Tehát bármit is felé alján előnyt élvez.
Tehát, ha valamit csinálni test, és te is mindent fehér,
majd később megváltoztatja a címet vagy megváltoztatja a szöveget belüli test,
felülírja ezt.
Tehát semmi felé alján előnyt élvez.
Igen?
>> Közönség: És azonosítók egyediek, de az osztályok lehetnek még?
HANNAH: Így van.
Tehát azonosítók egyedinek kell lennie, és osztályok olvassa el, nagyon sok mindent, mint szeretné.
Más kérdés?
Igen.
>> Közönség: [hallható].
Kíváncsi vagyok, hogy ez teszi a különbséget.
HANNAH: Sajnálom, mi volt a kérdés?
Közönség: Van kicsi "F" és a tőke "F."
HANNAH: Tehát a különbség közötti kis "f" és a tőke "F"
nem tesz különbséget.
Tehát "f" lesz 15 mindkét irányban.
Cool, bármi más?
Mindenki jó, CSS?
Igen?
>> Közönség: Sorry.
Lehet, hogy van egy osztály és az ID?
>> HANNAH: Igen, ez lehetséges.
A dolgok már mind az osztály és az azonosító.
És én nagyon ajánlom tesztelik ezeket a saját.
CSS akkor tanulnak a legjobban, csak azzal, hogy valamit, nagyon egyszerű internetes oldalt,
kidolgozása CSS-t, és csak látva, hogyan hatnak egymásra.
És akkor nyereség egy nagyon jó, intuitív értelme, hogyan működik.
>> OK, mindenki jó CSS-t?
Mind meg fogtok tenni szép weboldalak CSS most.
OK, a legjobb gyakorlatok, csak dolgokat kell szem előtt tartani, a dolgok
hogy-- ezért is kiköthet Ön a designer és miegymás.
Tehát zárja be az összes HTML tag.
Tehát ha van egy nyitott szervezet, léteznie kell egy közeli testet.
Ha van egy nyitott bekezdés, léteznie kell egy közel bekezdés.
Ellenőrizze, hogy az oldal érvényesíti.
Srácok, jól kell ismerniük ezzel származó p-set hét
A CS 50 pénzügyek A W3 elfogadó.
És mint már mondtam, Az egyik nagy paradigmák
elválasztja a stílus CSS az Ön jelölés, amely HTML.
És aztán, persze, van ez a nagy XKCD le ide.
Hurrá, komikus!
>> OK, TCP / IP.
Ezek között és a HTTP, Alapvetően mindketten protokollokat.
Szóval akkor csak gondolja Ezek a szabályok
szabályozzák, hogy milyen dolgokat mozog az interneten keresztül.
Tehát adásellenŒrzŒ protokoll, illetve internet protokoll,
csak egy módja annak, hogy hogy az adatok kap hová megy
és hogy tudjuk, ha mi valaha hiányzó adatokat.
Tehát, ha hiszitek, vissza előadás Pár héttel ezelőtt David
ahol volt négy borítékot, akkor mind számozzák, mint a négy,
kettő, négy, három, négy, négy a Négy, ez csak egy szabályrendszer.
Mi azt mondtuk, rendben, amikor mi vagyunk küld több mint egy csomag,
fogjuk, hogy megszámlálja azt milyen számról van
és összesen hány, hogy A felhasználó kap.
>> És ez csak azt mondom, aki kap az adatokat, hogy azok
ütött mindent, vagy ha valami eltévedt az út mentén.
És meg kell kérni újra.
Ez tényleg csak egy szabályrendszer.
Így lehet gondolni rá, OK?
És azt is, hogy meghatározza a port, amely srácok can-- Tudom során előadást,
volt egy egész portok listáját.
De nem kell őket itt.
>> Tehát Hypertext Transfer Protocol van, újra, ez egy másik protokollt.
Szóval ez egy szabályzat hogy szabályozzák, ebben az esetben,
hogyan hypertext át.
Tehát csak lehetővé teszi a böngészők beszélni web szerverek.
És ahogy mondta itt, hogy mint az emberi kézfogás.
Ez csak egy módja annak, hogy szabályozzák hogy a webszerver
fog lépni a böngészőben.
És mi van, csak egy pár példa.
Van néhány kérést itt ahol GET a módszer.
Van HTTP 1.1, amely protokollverziót számunkra.
És akkor, a házigazda, amely a mi mi próbálunk elérni.
Aztán, ahogy itt látsz, azt egy kis választ ezzel 200
OK, mint a mi HTTP válasz kódját.
Van egy nagy listát fogok hogy húzza fel egy másodperc alatt
hogy a srácok meg kell ismernie.
És mi van a tartalom text / html típusú, ami csak azt mondja, hogy milyen típusú adatok
vagyunk fogadására a szerverről, OK?
Ez a gép és a tartalom típus részei a HTTP fejléceket.
Akkor lehet, mint néhány vagy kevés, szükséges összefüggésben, amit
te dolgod.
Néha lesz egy csomó származó információk a szerver.
Talán ők kérő sok származó információk a felhasználó.
A szükséges idő függ a kontextusban.
Ha megnézzük a CS 50 Study, van egy csomó bővebben.
De van egy csomó, hogy keresztül, úgyhogy megyek
hogy tessék, ha ez rendben van veletek?
Cool.
Várj.
Én biztosan van, hogy teljes lista of-- huh!
Nem tudom, miért van ez egészen ide.
Azt hittem, a szó szoros értelmében költözött közben voltam sitting--
>> DAVIN: Szeretné tanítani?
Vagy azt akarod, hogy tanítsa meg?
>> Közönség: Gondoltam Csak mutasd meg nekik kezdeni.
Úgy értem, akkor menj be őket tovább, de én
gondoltam, hogy több értelme, mert én csak beszélek HTTP státusz.
Tehát itt a teljes lista.
Azt hiszem, mi fog történni a Davin fog menni később.
De van egy teljes lista, a ízelítőt az ízét, hogy jöjjön.
OK, fogunk blow-- ez megy hogy a PHP gyorstalpaló, mint senki más.
>> Tehát PHP, a hipertext feldolgozó, ez egy rekurzív backronym,
ami azt jelenti nevezték valami mást.
És akkor olyanok voltak, mint ez a nem igazán van értelme.
Így csak elemzi it-- és ez egy mozaikszó,
így csak tette PHP hipertext feldolgozó, amely
Csak nincs értelme.
Szórakoztató történet.
Ez egy programozási nyelv.
Tehát, mint szeretném hangsúlyozni, hogy HTML nem egy programozási nyelv,
ez egy leíró nyelv, a PHP egy programozási nyelv.
Hogyan tudod ezt mert van logika.
Vannak feltételes.
Van változók, míg mi Van senki azok közül a dolgok HTML.
>> Rendben, akkor itt van ez a kis Néha itt, hogy olyan, mint egy kis ízelítőt a PHP.
Tehát alapjait, változó neve kezdeni egy dollár jel.
Sok ember szereti.
Emlékeztet minket a pénz.
Ez mind jó.
Mindannyian szeretnénk PHP.
Tehát nem ad meg változó típusát többé.
Ez határozza meg futás közben.
A tolmács lesz, mint, Ó, akkor csak végigmenni,
és értelem szerűen, majd meglátjuk, milyen típusú
ezeket a változókat szükség van.
Nincs fő funkciója.
A dolgok csak futni.
Srácok az Ön import a utolsó p-be, akkor veszi észre.
Nem volt igazán a fő funkciója.
Csak azt írtam, amit akartad, akkor.
És ez csak egyfajta történt.
Szóval ez PHP az Ön számára.
>> A tömbök nagyon hasonló.
Még mindig van ez a konzol.
Itt van néhány változót nevű arr, és ez egyenlő
to-- megvan a normális konzol jelöléssel.
És van néhány alapvető érték.
És a nagy különbség a C és PHP tömbök
az, hogy mi lehet ennek a associate-- hozzárendeljük az értékeket kulcsokat.
Tehát ahelyett, hogy csak úgy, tömb indexelt
száma, vagy a pozíció ezen elem a tömbben,
mi is valójában társítását a gombot.
Ahol azt mondhatjuk, OK, azt akarom, amit értéket rendel hozzá a gyümölcs.
És talán van gyümölcs ment banán.
Így bejöttünk, banán nekünk.
>> De alapvetően, a leginkább nagy dolog ez a
az, hogy ha a srácok emlékszik a demo előadás, ahol alapvetően
Átírta helyesírás PHP és was-- keresési tényleg csak tetszik,
nem ez a kulcs létezik?
Ez tényleg ilyen az erejét.
Nem kell iterációkhoz át a tömböt.
Önnek nem kell tudni mi helyet bent van.
Ez lehet a végén, vagy az elején.
Mindaddig, amíg tudod, hogy a legfontosabb ami társított értéket,
PHP is csak köpni, hogy értéke Rögtön jövök ki rád, OK?
>> És akkor, mi is csak van csak azért, mert
lehet kulcs érték párok nem jelenti azt, hogy.
Azt is csak létre egy normális tömb, mint itt,
az alján, ahol ez csak egy, kettő, három, négy.
Ezek értékeinket.
És valóban, a kulcsok pedig a mutatók.
Tehát a legfontosabb egy nulla lenne.
A gomb két lenne az egyik.
Így tovább és így tovább, hacsak Ön kifejezetten hozzá egy kulcsot,
akkor feltételezhetjük, hogy a értéke csak az index.
Van ennek értelme mindenki számára?
Nem kérdés?
Félelmetes.
>> OK, foreach egy módja annak, hogy halad végig a tömbök.
Szóval van itt valami, csak az általános szerkezet.
Tehát foreach, a nevét a tömb, mint bármi
szeretnénk felhívni minden eleme a tömb,
és mi tehetünk valamit elemnek vagy ezzel az értékkel.
Tehát van példának.
Van egy asszociatív tömb két bejegyzés
bárral, hogy hozzájárulhatunk ize és qux részvétel a BAZ.
Tehát kulcsok ize és BAZ.
Az értékek bár és qux.
Tehát foreach, van array itt is, mint a kulcs-érték párt.
Ez lehetővé teszi számunkra, hogy hozzáférést mind a kulcs és érték.
Lehet, hogy csak azt a érték, amely esetben
akkor csak csinálni, mint arr as $ ertek, és akkor
csak elérni a értékét ahogy halad végig.
De talán, valamilyen Ezért szeretné a kulcsot,
ezért úgy döntöttem, ezt a példát helyette.
Így valóban manipulálni kulcs és érték ebben az esetben.
OK?
Kérdés?
>> Közönség: Ha akarta, hogy Csak manipulálni a kulcsot, ami
meg kell csinálni foreach--
>> ALISON: Így van.
Tehát, ha akar manipulálni, csak a kulcsot,
te még mindig szükség erre szintaxis mert ha éppen
van arr, mint valami, az egyik dolog, ez
Feltételezem, hogy szeretné az érték, nem a legfontosabb.
Tehát, ha valaha csak meg, mint arr, mint, talán ez olyan, mint $ elem,
ez lesz a feltételezés, hogy kérded A csak az érték minden ponton.
Ha kifejezetten akar tenni valamit a legfontosabb,
akkor is, ha nem fogod mit kezdeni az értéket,
Szüksége van erre szerkezete hogy itt van
hová kifejezetten kéri mind a kulcs, és az értéket.
Nagy kérdés.
Van még valami?
Cool.
>> Rendben, PHP és HTML.
Ó, mi vissza p-set hét újra.
Tehát ez kell nézni egy kicsit ismerős.
Tehát ez néhány egyszerű HTML form hogy van néhány input name of helló.
És látjuk, mi van a módszer GET.
És ha arra gondolunk, a mi p-set, amikor a lapot bemutatják,
küld nevű tömbben $ _GET, amely az összes ilyen bemenet vagy változók
formájában, hogy legyen manipulálni a PHP.
Tehát ebben az esetben, a felhasználó tenné, hogy a nevükben.
Azt állítják azt.
És azt látjuk, hogy egy kis tömb itt.
Megvan a GET tömb.
És mi hozzáférnek a nevét.
>> Úgy, hogy azt mondja, OK, adj a értéket, ami jár a nevet,
elnevezésére a kulcs itt.
És, hogy a térképeket közvetlenül a mi mondtuk input név.
Szóval ez adta meg a kulcsot, hogy mit lesz a tömb itt.
Van ennek értelme mindenki számára?
Igen?
>> Közönség: Az a név, a GET lásd A lila vonal [hallhatatlan]?
>> ALISON: Arra utal, hogy ez az itt.
Tehát ezen a területen itt, arra utal, hogy ez a név itt.
Tehát ez lehetett volna elemzi mint a telefonszámot, vagy bármi más.
Ez a név is mondja, hogy mi hívsz ezen a területen?
Hogyan fogsz olvassa el ezen a területen?
És ez a név az tetszik, mi vagyunk mondván ezen a területen az úgynevezett nevet.
Így fogunk hozzáférni.
>> Közönség: Így van ez tetszik, input neve egyet Bob, és--
>> ALISON: Jobb, akkor kapnánk Bob odalent.
Pontosan.
Mindenki jó?
Rendben, úgyhogy versus POST, ez az a két fő módja
hogy átadjuk az adatokat egy HTTP kérést.
Srácok kellett volna látni mindkét remélhetőleg.
Tehát a GET, az információs áthalad a URL-t.
Tehát, ha valaha is Google keresések, YouTube, akkor
valószínűleg észre néhány kérdőjel.
És akkor, az összes szó hogy csak fel oda.
És POST halad az adatokat A HTTP üzenet törzsét.
Annyira nem GET, akkor milyen fontolóra hogy az adatokat el van rejtve a felhasználó.
De ami igazán Fontos megérteni,
az, hogy ez még mindig ugyanolyan biztonságos, mint a GET.
Az analógia szeretem használni, ha akkor a bankszámla számát
és írsz a külső egy borítékot, hogy elég biztonságos.
Ha úgy döntesz, hogy írja le egy darab papírt és tedd a borítékba,
ez még mindig nagyon biztonságos, mert a Mindössze annyit kell tennie, hogy megnyitja hogy akár
és nézd meg a tényleges tartalom Az üzenet látni.
Szóval ez a "rejtett", és az emberek, mint a Szerintem ez biztos, de ez tényleg nem.
És biztos vagyok benne, Davin lesz bejutni, hogy több, talán.
De ez egy fontos distinkció
és valami igazán jó, hogy megértsük.
>> OK, SQL, Structured Query Language.
Az összes dolgot, láttuk, így az utóbbi időben!
Tehát ez alapvetően csak tervezték, Nyilvánvaló, hogy az adatkezelés.
Srácok, volt egy csomó tapasztalat Ezt a táblákat PHP MyAdmin.
És van négy közös lekérdezések hogy szeretnénk, ha a srácok tudni.
Szóval van update, insert, válassza, és törölje.
Úgyhogy győződjön meg róla, hogy ismeri azokat is.
Fogunk menni rajtuk keresztül nagyon gyorsan.
>> Szóval frissíteni, tényleg, azt, hogy milyen gondolná igen,
ez csak frissíti adatbázisának adataival.
Így van némi példának.
Ez az általános szerkezet egy frissítő lekérdezés.
Így frissíti a táblázatot hogy beszélünk.
És szeretnénk állítani bizonyos értékek, bizonyos oszlopok
egyenlő konkrét értékeket.
Tehát ez csak frissíti a táblázatot, változó értékek az összes sorok ebben az esetben.
Tehát ebben az egy itt, egy tényleges Például, van insert-- sajnálom.
Hogy slide fejlett nélkülem észrevennénk.
>> Tehát ez frissítések táblázat col1 egyenlő hogy ért1, ahol house egyenlő "Currier."
Milyen ez nem az, ez csak a változások, csak
frissíti ezeket az értékeket adott helyen.
Tehát ebben elsőt, megváltoztatja ezeket a értékeket mindent az asztalra,
OK?
Ez meg fogja változtatni ezt oszlop minden egyes bejegyzés,
minden egyes sorban.
De hová, amit lehetett gondolok rá, mint egy selejtezőn.
Tehát ez csak akkor fog változtatni ez nagyon különleges hely.
Tehát a p-be hét, amikor Talán frissíteni a készpénz összegének
hogy a felhasználói volna, akkor valószínűleg már ahol néhány ID egyenlő session ID, ugye?
>> Mert nem akarom, hogy megváltoztatni a készpénz összegének
minden személy, aki használta a honlapon.
Meg akarta megváltoztatni egy konkrét személyt, hogy az illető személy
Aki volt használ ez abban az időben.
Ugye?
OK, így helyezze, betét Bizonyos értékek a táblákba.
Ez olyan, mint amikor te ami a márka új felhasználót.
Az általános szerkezet itt A illeszteni bármilyen asztalon
beszélünk.
Értékeket, hogy azokat az értékeket, mi valójában szeretné szúrni.
OK, így látjuk itt, már szúrni asztalra.
Ez bizonyos oszlopokat azok megfeleltek értékeket.
Tehát ez azt mondja, insert Új sort tartalmazó
értékeket ért1 és értl2 alatt Ezek bizonyos oszlopokat.
>> Így talán csak szeretné kitölteni a fél a dolgok ebben a sorban.
Ez az, amit ez a rész itt nyílik lehetősége.
Ez lehetővé teszi, hogy valóban melyik részét.
Igen?
>> Közönség: Tud csak [hallhatatlan] sejtek a row [hallhatatlan]?
>> ALISON: Ha csak kitölteni egyes részei a sorban,
a többi, e sejtek csak üres.
Mindaddig, amíg lehetővé teszik számukra, hogy lehet üres, ez nem probléma.
Ha megpróbálja elérni őket, ez fog visszatérni néhány üres elem.
De fontos tudni hogy bizonyos táblák,
Nekik kell tenni, hogy semmis.
Lehet, hogy befut egy probléma során a p-set
mert nem hagyja, Ön értékek semmis.
De megadhat egy opcionális értéket a táblázatban.
>> OK, válassza, így ez Csak egy módja
konkrét adatokat a tábla valamilyen azonosító, amit akar.
Tehát válassza csillag asztalhoz, ahol col egyenlő valamit, csak azt jelenti,
adj minden adat, ahol ez külön oszlopban igaz.
Tehát a csillag ebben az esetben vissza az egész sort, neked, OK?
>> És akkor, ebben az esetben válassza csillag táblázatban csak megadja neked a teljes táblázatot.
És akkor, törölje nyilván, ez csak törli a sort a táblázatból.
Tehát törölni asztal, bármilyen asztalon vagyunk
hivatkozva, ahol bizonyos konkrét azonosító vagy valamilyen feltétel igaz.
Igen?
>> Közönség: Kérdés.
Miért kettős idézetek, valamint attól, hogy
nem dupla idézőjelek vagy szimpla idézetek, nem mindegy, hogy a különbség?
>> ALISON: dupla idézőjelek vagy szimpla idézőjelet nem tesz különbséget a SQL.
Azt hittem, láttam egy másik kérdés.
Igen?
>> Közönség: Nem lesz hatással, amit lesz megszökött a lekérdezés?
>> ALISON: Rob?
>> Rob: Mit értesz az alatt, megszökött a lekérdezés?
>> Közönség: Ha valaki egy egyetlen lekérdezést formájában of--
>> Rob: Ha valaki tedd egy idézet,
akkor mindaddig, amíg te fertőtlenítő a bemenetet, akkor nem számít.
De ha egy egységes árajánlatot, és akkor helytelenül
menekülés a bemenetek, akkor igen, meg kell
hogy egy aposztróf, hogy megtörjék A kód. ha használja idézőjelek,
meg kell tenni a kettős idézni, hogy megtörje a kódot.
De amíg menekülni a dolgokat helyesen, ez nem számít.
Ez csak fog fordítani A megfelelő szimbólum egyébként.
>> Közönség: Mit jelent menekülési jelent?
ALISON: Nos, mint fertőtlenítéshez és a menekülés.
A vizsga hogy mi van, a nagy XKCD comic, hogy húzza fel, ahol van,
oh--
Rob: Ez az utolsó kép.
ALISON: Ez az utolsó dia, tényleg?
Oh my god.
Oda megyünk, tökéletes.
OK, így alapvetően is adható valamit ebbe SQL lekérdezés
ahol összetöri a kódot, vagy David mutatott
osztályban, ha van néhány egyágyas quote 1 értéke 1, és ha a mi kódot,
mi csak közvetlenül másolni, hogy, és van egy végződő aposztróf
mi történik, megkapjuk Néhány kifejezés,
értéke igaz-e, hogy lesz legyen valaki be adatbázisunkban
és kap adatokat, hogy mi Nem akarom, hogy kap.
Tehát fertőtlenítő bemenetek csak azt jelenti, ügyelve arra,
hogy mi elől ezeket a karakterek és kijelöli ezeket
mint karakter, és nem a dolgok hogy lehetővé kell tenni,
szerint kell érteni mint a mi SQL utasítást.
>> Tehát a nagy dolog, hogy azt mondtuk hogy a srácok kell a
voltak HTML speciális karaktereket; ami valami
hogy érdemes egy pillantást.
OK, törölheti.
Adattípusok, ez az összes online.
Mivel mi már 15 perc van hátra, én vagyok csak fog menni egészen erre.
PHP és SQL, tulajdonképpen ez az, Csak volt egy lekérdezés funkciót, hogy
segített véd rosszindulatú támadások ellen.
Tehát, ha használja query voltunk meggyőződve arról,
hogy a dolgok megtisztítva és miegymás.
>> MVC csak egy tervezési paradigmát, így a modell, nézet, kontroller.
Ez csak egy módja annak, hogy a dolgok szép és szét ugyanúgy
hogy hajlamosak vagyunk tényező out kódot funkciókat.
Ez csak egy web design keret amely lehetővé teszi, hogy nem ugyanaz a dolog.
Megyek átugrani.
>> Ez olyan dolog, hogy én lenne szuper kényelmes a.
Ez egy jó kis asztalon.
Ez adja a funkciót példa a modell.
Én csak megy keresztül, mert én Nagyon szeretnék Davin, hogy képes beszélni.
Ha bármilyen kérdése van, nyugodtan.
Itt leszek után.
Csak gyere velem beszélni.
Azzal, hogy mi HTTP státusz.
És Davin ki fog robbantani ezen keresztül 15 perc alatt.
Ez nagy durranás lesz.
>> DAVIN: OK.
Uh, a mikrofon?
Igen.
Bocsánat.
ALISON: Way kell készíteni.
DAVIN: Nem, én kész vagyok.
Én készen állok.
Csináljuk meg.
Ez kész.
OK.
Bocsánat.
Én kiömlött kávé magam.
Nem tudom, ha én több vagyok ideges, hogy nézek ki buta,
vagy azt, hogy nem kell a kávé többé.
Különben is, csak egy gyors bejelentését a lap nektek.
Szóval ez a lap a srácok nem a hivatalos, mi van a kvíz.
Ez a hivatalos, mi van a kvíz.
Szintén a honlapon, elmondjuk Ön, OK, ez lesz a kvíz.
Tehát a kis puskát van, nem hivatalos.
És vannak hibák rajta.
Tehát legjobb, ha nem csak vakon használni.
Szóval igen, ennyi.
Szóval térjünk ebbe gyorsan.
>> Tehát HTTP státusz.
Tehát mi történik, ha a website, minden rendben van.
Minden rendben.
Minden jön vissza téged, ahogy te szeretnéd.
Kapsz egy 200 OK.
301, ahol láttunk, hogy 301 előtt?
Várj, mi van?
Bocsánat.
Láttuk i tin előadás során a biztonság.
Tehát ez alatt a biztonság, így ha David beírt http majd megpróbált megnyitni cs50.net,
fogsz látni 301 mozgott.
Miért?
Mert ez lesz átirányítani akkor automatikusan a HTTPS.
>> Tehát 301 mozdult, csak ez alapvetően egy átirányítást.
És akkor gondolj rá, mint ez.
Bármelyik állapotok kezdődő 2-es, olyanok, mint, OK, minden rendben.
Bármelyik állapotok indul 3, ezek az átirányítást.
Státuszok kezdődő 4, azt jelenti, van valamilyen kliens hibát.
Státuszok kezdődő 5, hogy valamiféle server error.
Szóval egyfajta szakítani A státuszok ilyesmi.
Tehát 304 nem és nem módosul, így a server.c p beállítást, így mondjuk
betöltött cat.html.
Minden jön vissza, kapsz 200s, OK, nagyszerű.
>> Tegyük fel, hogy felfrissült meg.
Nos, amit belül cat.html, van egy JPEG.
Nos, JPEG nem lesz, hogy újratöltve.
Nem fogsz más állásra GET kérést a szervernek,
majd kap minden információt vissza.
Ez fog most be--, hogy a kép lesz cache-elt a gépen.
És hogy a kép lesz a 304.
Szóval ez nem módosult.
Ha majd zárja ki, egyértelmű cookie-kat, majd frissítse
és próbálja meg betölteni az oldalt Ismét fogsz látni 200s.
Nem fogsz látni, hogy 304.
>> 400, a rossz kérésére, valós Gyors, mint ha
akartál küldeni JSON objektumot a szerver
és a JSON helytelen volt, látni fogod, valami ilyesmi.
403, tilos.
Ha azt akarod látni a tiltott?
Valószínűleg Valószínűleg?
Közönség: Chmod.
DAVIN: Chmod, igen.
Tehát nem állított jogosultságok helyesen.
404, nem található.
Ez egyszerűen nem létezik.
Tehát ha beírja a rossz URL.
500, belső szerver hiba, a szerver Valószínűleg nem volt rendesen beállítva.
Valami nem a vég, hanem valamit a szerver oldalon.
És 503?
Sokan látták 503s az elmúlt p-set.
Mikor történt ez?
Hallottam suttogás.
>> Közönség: Amikor a Google úgy dönt, te egy robot.
DAVIN: Ja, amikor a Google úgy dönt, te egy robot, kapsz 503s.
Szóval ez egy túlterhelés.
Ha már kérte a szerver túl sok, ez általában átmeneti.
És a legtöbben észre.
Szóval látta 503.
Lehet, hogy volna egy kicsit szünet, majd a 503s elment,
és minden rendben volt.
>> GABE: Real gyors, mikor van srácok 500 Valószínűleg ez az utolsó probléma van beállítva?
Igen?
>> Közönség: Általában, ha a szerver egy fájl rossz helyre
vagy [hallható] a gép [hallhatatlan].
>> GABE: Így lehet, hogy egy konfigurációs kérdés a PHP a szerveren.
De lehet, hogy csak valami mint egy pontosvessző, hogy a elfelejtettem.
Ha gépelés PHP, néhány helytelen szintaxis
Lehet, hogy neked valami ilyesmi.
OK?
>> DAVIN: Cool.
Akarod, hogy nem csak addig, amíg AJAX?
>> GABE: [hallható].
DAVIN: OK.
Szóval mi a DOM?
Mit jelent DOM állni?
>> Közönség: Document Object Model.
DAVIN: Nice.
És miért tetszik?
Félelmetes.
Jobb, így csak lehetővé teszi számunkra, hogy hozzáférést A HTML, igénybe veheti az oldal nagyon gyorsan.
Miért?
Mert mi bánjunk oldal, bánjunk HTML,
kezelésére mindent mintha ők tárgyakat.
Ha bánnak velük, mint ők objektumokat, akkor mit tehetünk?
Nos, tudjuk hívni funkciók rájuk.
És ez fontos, hogy miért?
Nos, azért, mert fogunk használni JavaScript frissíteni a HTML,
frissíti ezeket az objektumokat.
Tehát ha kezeljük őket, mint a tárgyak, tudjuk majd hívja funkciók őket.
Megyek, hogy ebbe egy kicsit inkább, ha bemegy a JavaScript,
de minden látta, mint document.getElementById.
Így a dokumentum a elem, hogy elem azonosító,
így fogsz keresni Néhány ID egy HTML tag.
És akkor, meg tudod csinálni valami mást, hogy.
Például, mint document.body, akkor fűzze gyermeket.
Szóval fogsz találni a dokumentumot.
Megvan a dokumentumot.
Meg fogjuk találni a testet.
Megtalálták a testet.
És akkor, fogsz hívja egyes függvényt.
Szóval csatolja gyermeke, és akkor fűzze Egyes HTML rá a végén a test belsejében.
Tehát alapvetően, te csak kezelést, mint egy tárgy.
Te kezelésére HTML Címkék, mint egy tárgy.
És ez nagyon megkönnyíti és gyorsan menjen át őket.
De azt is lehetővé teszi, meghívni őket
így lehet manipulálni és változtassa meg a elemet.
>> GABE: Tekintettel erre, miért JavaScript például egy szép nyelv, hogy befolyásolja a HTML?
Esélyek, amikor az emberek kiválasztásában A nyelv a böngésző,
A kliens oldalon, JavaScript tényleg szép,
ez tényleg jó kezelése tárgyakat.
És a tárgyak olyan, mint A tárgyak, amik a HTML,
így nagyon könnyű a JavaScript erre a fajta kezelést.
DAVIN: Nice.
Tehát itt csak egy példa.
Szóval azt hiszem, a tavalyi kvíz, vagy talán két évvel ezelőtt,
megkérte, hogy hozzon létre egy fa.
Tehát ez pontosan mit tennél.
Tehát ha elindul a dokumentumot.
És akkor alapvetően csak nézd meg a címkéket.
Tehát, ha megnézi, mi kezdeni egy HTML tag.
És akkor, kapsz deríteni, hogy hogyan kell Ehhez alapján a behúzás.
Tehát vezetője fajta ágazik le.
Belül a fejét, van újabb címkét címet.
Tehát, van egy cím.
És bent, és van néhány húr.
És így az általunk képviselt karakterlánc egy kört.
És az összes címkék vannak négyzetek.
>> És ha megnézzük, ha gondolni ezt a fát,
És mondjuk, hogy a HTML a szülő, akkor fej és a test
lesznek testvérek.
Mindketten lesz gyermekeinek, hogy a szülő.
Szóval azért, mert ők Mindkét testvér, ők
lesz a fajta mellett egymást a fa modell.
És akkor, akkor alapvetően nem pontosan ugyanaz a dolog.
Így nem nehéz, de kértük kérdések, mint ez előtt a kvízt.
GABE: tudja valaki, kérdései eddig?
Jó ez?
DAVIN: Cool.
JavaScript, OK, a jó dolgokat.
Tehát JavaScript, mi JavaScript?
Nos, JavaScript ez-- ez bonyolult, de ezek a
van néhány fontos hogy meg kell szem előtt tartani.
Először is, lazán gépelt.
Ez mit jelent?
Tehát PHP was-- igen, mi a helyzet?
>> Közönség: Nem kell, hogy kifejezetten hogy milyen típusú változó is.
DAVIN: Tökéletes.
Ezért azt mondta nem kell, hogy kifejezetten, a változó típusa.
Ez pontosan így van.
Tehát a C, ha tudtam volna int i értéke 50, Ezután a PHP, csak, mint ez, $ i,
egyenlő 50.
Aztán JavaScript, mi lenne a hívás lesz?
Var, ugye?
Olyan, mintha var i értéke 50.
De nem kell, hogy legyen szerű, OK, ez egy int.
OK, ez egy húr.
Nincs szükség erre.
Ez egy értelmezett nyelv.
Szóval mit is jelent ez?
>> Közönség: Nem összeállítani.
>> DAVIN: Mi nem összeállított jelent?
Igen?
>> Közönség: Nem kell átalakítása a kódot
hogy ez kész A számítógép futtatni.
Ez csak venni idején végrehajtás és a számítógép [hallhatatlan].
DAVIN: Igen, tehát ez lesz áthaladnak egy tolmácsot.
De te pontosan így van.
Szóval te soha nem fog lefordítani, ugye?
Ha csinálsz a PHP és JavaScript kódot,
Ön soha nem hívott fordításkor.
Soha nem nevezett valami ilyesmi hogy vagy ilyesmi.
Azért, mert ez értelmezhető.
Tehát minden alkalommal, amikor megy keresztül a böngésző, megy tolmács segítségével.
És hogy fog értelmezni Csak valós időben azonnal az Ön számára.
Tehát melyek a pozitív és negatív hogy miután egy értelmezett nyelv
és miután egy összeállított nyelvet?
Tehát compiling-- igen, mi a helyzet?
>> Közönség: Az értelmezett lassabb.
DAVIN: Milyen értelemben?
>> Közönség: Miután lefordítani, akkor nem kell
hogy nem minden extra lépéseket végrehajtani ez, mivel ez [hallhatatlan].
>> DAVIN: Jobb, tökéletes.
Szóval, mit mondott, Alapvetően a fordítási,
amikor fordítod, akkor a Sok induló költségek, ugye?
Fogsz fordítsuk le.
De miután fordítani, a fordító fog optimalizálni.
Ez lesz gyors.
Ez lesz az alapvetően olyan gyors, mint lehet.
Tolmácsoló, soha Van, hogy indulási költségek.
Inkább ez lesz valamivel lassabb Minden egyes alkalommal, amikor értelmezik.
És te lesz, hogy értelmezni, hogy minden egyes alkalommal.
Tehát ahelyett, hogy ezt a egyszeri költség, most te vagy
kell majd értelmezni az oldal minden teszi.
>> Tehát tolmácsok jó, mert nem kell lefordítani,
de ők rossz, hogy minden időzíteni az oldal betöltődik, ez
lesz, hogy értelmezik ezt a JavaScript.
És ez meg fog futtatni valamivel lassabb mint ha úgy döntesz, hogy fordítsuk le.
Lehetővé teszi, hogy communicate-- ó, várj.
Kezelheti a tartalmát és megjelenését.
Mi csak beszélgettünk erről.
Használja a DOM.
AJAX, mi lesz a AJAX egy kicsit.
És akkor, ez kliens oldalon.
Tehát PHP szerver oldalon.
A JavaScript kliens oldalon.
Milyen pozitív, hogy?
Azt mondja rá.
Ez gyorsabb, igaz?
Mert akkor nem kell to-- ez gyorsabb.
Nem kell kommunikálni néhány más eszköz.
Ha csak a ügyfél, akkor soha nem
fog menni, és lásd, mi van a szerveren
majd arról vagy valami ilyesmi.
Tehát kliens oldali hajlamos egy kicsit gyorsabban.
>> GABE: Igen, de ez nem azt jelenti, PHP
gyorsabb, mint JavaScript vagy valami hasonló.
Futnak a fajta ugyanazon sebességét, mert mindketten
értelmezett nyelvekhez.
A dolog, ami lassú itt a kérést.
Szóval tényleg lesz egészen át Brazíliába
hogy bizonyos információkat hogy ott lakik.
De a PHP és a JavaScript, akkor fajta fut azonos sebességgel.
Ez nem, hogy az egyik gyorsabb, mint a többi.
Ez is, beugratós kérdés itt.
Tehát JavaScript soha nem válik gépi kód, igaz vagy hamis?
>> Közönség: Hamis.
GABE: Hamis.
Azt kell válnia gép kódot, mert a gép kód
Az egyetlen dolog, a gép megért.
Annak ellenére, hogy ez nem összeállított, még mindig válik gépi kód
mert a tolmács csak a programot, hogy megy soronként
és átalakítja, hogy sort valamit a számítógép megért.
OK?
Cool.
>> DAVIN: Itt csak egy nagyon alap hello world JavaScript programot.
Szóval nem tudom if-- láttad ezt a.
De csak azt HTML itt.
És ahelyett, hogy ténylegesen üzembe A JavaScript a script tag,
így azt általában betette a fejét.
Van szkriptcímkéket.
Te vidd el oda.
Minden, amit eddig csináltunk itt voltunk kapcsolódik in-- így már kapcsolódik egy JavaScript fájl
mint ez.
És ha már minden kész, ugye?
Tehát, ha arra a jQuery és underscore.js az elmúlt p-set,
nincs tonna kódot fel a szkriptcímkéket, a fejedben.
Lehet csinálni, hanem csak most, összekapcsolva azt a.
És te, összekapcsolva azt a Csakúgy, mint te a CSS.
Tehát csak könnyebbé teszi a beolvasott A kód nem olyan, mint 1000 sor hosszú
tonna funkciók lehet, hogy nem használja.
>> Ehelyett egyszerűen csak hivatkoznak rá.
Ez compartmentalizes meg.
Ez olyan, mint írásban néhány header fájlt, és Ezután beleértve, hogy a header fájlt C.
Gondolj rá, mint ez.
Mit is jelent ez csinálni?
Nos, ez fog futni.
Meg fog figyelmeztetni.
Tehát fogsz egy kicsit felbukkan nevű hello world.
Gyors kérdés, csak józan ellenőrzés, így látod, itt van a szervezetben,
azt mondják, test, HTML itt.
Mi jön először?
Látok test, HTML itt, vagy látom a figyelmeztető első?
>> Közönség: Alert.
>> DAVIN: Így van.
Azt mondja éber.
Miért?
>> Közönség: Mert menj fentről lefelé.
>> DAVIN: Igen.
Tökéletes.
Azt mondja, menj fentről alján, ami teljesen korrekt.
Fogsz menni, fentről lefelé.
És JavaScript, jQuery, hogy van egy funkciót, amely olyan, mint berakás, vagy kész,
és hogy azt mondja, OK, várjon, amíg Mindez HTML betöltődött.
És akkor, hívja a JavaScript.
Mert nincs, hogy itt, a legelső dolog, hogy ez fog történni
A ez fog menni, fentről lefelé.
Meg fog ütni, hogy JS hívni, hogy fog figyelmeztetni.
Ez után kattintson az OK gombra, hogy figyelmeztető elmúlik.
Akkor fog mutatni akkor a test HTML itt.
Nice.
>> OK, így csak tényleg gyorsan, írásban A JavaScript szuper gyors.
Ahhoz hogy az változó, var nevét.
Tehát a C, akkor int i, van, hogy állapítsa meg, hogy milyen típusú ez.
PHP, $.
JavaScript, var.
Beszéltünk erről.
Rendben, menjünk.
>> Loops, ugyanaz a dolog.
Ugyanaz a dolog.
Funkció nyilatkozatok, így mint amit láttam C.
Az egyetlen különbség az, így amikor kapsz más programozási nyelvek,
mint amikor veszel 51 következő félévben és mit csinálsz a OCaml,
tudod kezelni a névtelen függvények.
Szóval ez pontosan mit itt.
Tehát azt szeretnénk, hogy hozzanak összeget, valamilyen összeg érték.
De lehet, hogy csak csinálja egyszerre.
Szóval nem akarja nevezni funkció Összegezve, hogy ez egy függvény deklaráció.
Ehelyett egyszerűen csak használni névtelen funkciót.
És láttad, hogy ez a sok.
Majd meglátod egy példa ez a pár diák.
Igen, majd meglátjuk.
GABE: Jó kérdés.
Mikor érdemes használni kívánt egy névtelen függvény itt?
Alapvetően, ha akar valamit, Szeretne egy eseményt, hogy megtörténjen.
Tehát, amikor az egér kattintva, például,
Kérsz ​​egy függvényt,.
Így adja át az eseményt handler, adja át a rendezvény,
fajta, a funkció, amely azt szeretné, hogy hívják.
És mit halad olyan, mint, a végén
A nap, csak egy mutatót az utasítást, hogy a funkció.
Szóval ez nem olyan, mint te halad A teljes kódot, ahogy
a mutató a funkciót.
És akkor, amikor valaki rákattint a egér, akkor ez a funkció meghívásra kerül.
>> DAVIN: tömbök, így Van egy sor nyilatkozatot.
Ezután egy tömböt, hogy tegyük a dolgokat.
Igazi gyors, mi lesz ennek a kinyomtatni?
Milyen lesz a harmadik elem lesz?
>> Közönség: "JS".
>> DAVIN: Jobb lenne, ha "JS".
Várj, menj vissza.
Milyen hosszú?
>> Közönség: Három.
DAVIN: Három, ugye?
Pontosan mit gondol.
OK, most menj.
Tömbök, felveheti a dolgokat nekik.
Így túlmutatnak a kezdeti határokat.
Csak valami szem előtt tartani.
PHP, JavaScript, ők egy kicsit kicsit elnéző szempontjából dolgokat
ilyesmi.
Tárgyakat, nagyon hasonlít Struktúrák a C, nagyon sok
mint az asszociatív tömböket a PHP.
Már az összes volt tapasztalata ezzel.
Tehát JSON, ha éppen elhaladó JSON oda-vissza a p-set nyolc,
ez a tárgy.
>> Szóval igen, például a valós gyors példát.
Itt van egy tárgy.
Ahogy referencia ezt a objektumot, így csak tényleg gyorsan,
mondjuk meg akartam találni ki, OK, mi a pálya?
És így az objektum nevét itt CS50.
És akkor, ha volt egy asszociatív tömb, hogyan tettem volna?
Fogom használni a kulcsot, ugye?
Szóval van a tömb nevét.
Van konzol, idézetek, kulcs, end idézetek, motorágyegység,
és hogy fog hivatkozni, hogy eleme belülről én asszociatív tömb.
Hogyan hivatkozott Természetesen benne célom?
Tudja valaki?
>> Közönség: [hallható].
>> DAVIN: Mi a helyzet?
Közönség: CS50.course.
DAVIN: Jobb, igen.
Tehát CS50.course.
Szóval, ahogy referencia dolgokat belsejében egy JSON objektum egy ponttal.
>> Közönség: Ön is használja tömb szintaxis.
>> DAVIN: OK, rendben.
>> GABE: Ön is használja CS50 konzol, húr, mint idézőjelbe.
Közönség: Azt hiszem, ez azonos a PHP.
GABE: Ez ugyanaz a dolog.
DAVIN: Fine!
De látni fogja ezt más helyeken.
Igen, így folyamatosan megy.
Ez az, amit az előbb mondtam.
Tehát egy JavaScript jQuery példa.
Szóval ez az én DOM, ugye?
Igazi gyors, így már egy fej, ​​hello world, test.
Nekem van egy gomb.
Azt mondja: "álljon meg", így azt akarom, hogy álljon meg.
És szeretnék tenni valamit ha valaki rákattint.
Jobb mellett.
>> Rendben, ez az én JavaScript.
Tehát jQuery csak egy könnyebb módon írni JavaScript.
Szóval ez, és mit fogok mutatni Jövő, lesz jQuery,
azonosak.
Így azok nem ugyanazokat a dolgokat.
Csak jQuery inkább egy kicsit könnyebb.
Az emberek hajlamosak tetszik jobban.
Van egy csomó funkcióval.
Tehát az emberek hajlanak arra, hogy jQuery.
Ön az összes használt jQuery utolsó p-set.
Tehát mit fog ez vajon?
Mit fog ez JavaScript-- így ez csak sima JavaScript.
Mit fog ez csinálni?
Mit fog csinálni?
>> Tehát az első, látod ablak onload.
Ugye?
Tehát nem láttunk ilyet.
Szóval ez lesz várni amíg az egész ablak terhelések.
Így fog várni, amíg A HTML, a képek betöltése
mielőtt ez semmit.
Tehát mondjuk a DOM betöltötte.
Minden ott van.
Akkor mi fog történni?
Igen?
>> Közönség: gomb.
>> DAVIN: a gomb már ott van.
Igen, tehát a gomb már ott.
De ez fog mondani, OK, ha rákattintok a gombot,
így a gomb már ott, mint a HTML tag.
Várj, menj vissza gyorsan.
Ez a tag joga itt van lesz egy gomb már.
Már van egy gomb.
De aztán, a JavaScript tag, itt,
azt mondja, OK, azt akarom, hogy eleme az ID,
így a keresés gombot csak azt mondja, OK, azt akarom, feltérképezni ezt a változót, hogy a gombot.
Annak érdekében, hogy a változó csak egy egyszerűbb módja, hogy hozzáférjenek az gombot.
És én azt mondom, OK, ha rákattintok, hogy gombra, így ha rákattintok, hogy eleme,
és ez az elem utal A gomb, ha jól kattintson rá,
akkor szeretném hívni a funkciót.
Itt az egyik ilyen anonim funkciók beszéltünk.
>> Csak hívja néhány funkciója.
Belül, hogy a funkció, alapvetően valamit láttunk sokat, éber.
Ön kattintson a keresés gombra.
Meg fog alapvetően egy gombot.
Rákattint.
Kapsz, hogy éber.
X out.
Ennyi.
Igen?
>> Közönség: Tehát ha tesz a forgatókönyvet [Hallható], script tag a HTML?
>> DAVIN: Tudod, hogy a script tag egyenesen a fejét
mert van ez a berakás.
Az is, hogy van egy kattintással.
Így fog várni, amíg rákattint valamit.
De berakás van a biztonság kedvéért, hogy arról, hogy minden teher a HTML
előre.
Igen?
Azt akarod mondani valamit?
>> GABE: [hallható].
DAVIN: Igen.
>> Közönség: Tehát onload meghiúsítja meghatározza a változó keresés gombot
az csak azt mondom document.getElementById keresés gombra dot [hallhatatlan].
>> DAVIN: Határozottan, de aztán a húr csak lesz hatalmas.
Pontosan, tehát ez csak a megkönnyíti az Ön számára, igen.
Igen?
>> Közönség: honnan vettük hozzon létre window.onload?
Vagy document.ready?
>> DAVIN: Igen, van.
Igen, van, megnéztem.
>> GABE: Nem nekik, hogy érdekel.
>> DAVIN: OK, úgyhogy megyek hogy elmondjam, egyébként.
Tehát alapvetően, csak általában, így window.onload megvárja, amíg a DOM, minden
a HTML, terhelés.
Arra vár, amíg a képeket terhelést.
Arra vár, amíg mindent terhelés.
document.ready, ez csak megvárja, amíg a DOM terhelést.
Miután a HTML minden ott, egyszer a DOM van, elindul.
Ez az egyetlen különbség.
>> GABE: Gyors józanság ellenőrizze itt.
Tehát ez látható a fajta mint egy sor kódot, ugye?
Mert ez window.onload egyenlő egy csomó dolgot.
Amikor JavaScript olvassa ezt igaz vagy hamis, a funkció kerül végrehajtásra.
Hamis.
OK?
Mi történik itt, csak most halad Ezt a funkciót a névtelen függvények
a window.onload.
És akkor, amikor ez fog hogy valóban kivégeznek?
Amikor az ablak terhelés.
Ez egy esemény.
Szóval ez jus t dolog vagyunk beszélünk korábban, igaz?
Tehát, ha az esemény bekövetkezik, A funkció történik.
Ugyanezt a onclick.
>> DAVIN: OK, így valaki vette re a document.ready.
De ez lesz a pontos same--
Közönség: a dollár jelet, ez egy document.ready.
Ez egy parancsikont.
>> DAVIN: Ó, ez?
OK, így ez azt jelenti document.ready, parancsikont.
De ez ugyanaz, mint a window.onload kivéve, hogy kicsi a különbség
Mondtam neked.
És ez jQuery.
Tehát ez pontosan ugyanaz thing-- Ez a JavaScript.
Ezt Csak-- néhány ember úgy gondolja, hogy mint egy könnyű, karcsú változatban
amely sok funkciót hogy akkor valószínűleg használni.
Tehát ez nem pontosan ugyanaz a dolog.
>> Így a dolgok, hogy milyen rámutatni.
Így a többi példában, mi volt document.getElementById,
így volt ez a hosszú húr, hogy fog kapni
Az elem bármilyen ID van.
Ez az, helyébe e felhívás itt.
Így látod a dollár jelet, akkor látni idézet, hashtag.
Hashtag mindig választó.
Azt mondja, OK, ez arról szól, hogy egy azonosítót.
Mi a választó egy osztály?
>> Közönség: Dot.
>> DAVIN: Dot, ugye.
Ha most fog válasszon ki egy címkét, mi ez?
Ez csak a tag, pontosan.
És jól jönne, hogy itt is.
>> GABE: És tag, értünk, mint div, például, vagy a fej.
>> DAVIN: vagy szerv, vagy p vagy ilyesmi, igen.
Tehát itt, OK, ahelyett, hogy document.getElementById,
ez csak pontosan ugyanaz a dolog.
Csak a jQuery, ez rövidebb.
Szóval ez egyszerűbb.
Tehát, nincs több onclick, csak kattints.
jQuery funkciót, ezt a funkciót.
Alert pontosan ugyanaz.
Szóval ez egy kicsit kisebb, vagy kicsit
rövidebb, egy kicsit bit-- ember úgy gondolja, ez egy kicsit könnyebb, hogy írjon ki,
egy kicsit könnyebb megérteni.
De ez jQuery.
Egy csomó ember, hogy egy kicsit kicsit zavaros, és aggódik
és azt hiszik, OK, jQuery más, mint a JavaScript.
Azt kell emlékezni ezen két különböző dolog.
Ez nem.
Úgy értem, ez másképp néz ki.
De jQuery JavaScript.
Ez csak látszólag jobb verzió
talán könnyebb lesz Megértjük, hogy az emberek használni.
GABE: Ja, hogy Őszintén szólva az dollárjellel
hogy látod a jQuery, ez csak a függvény nevét, hogy jQuery határozza meg.
Nem kell semmi különöset.
Vajon ez csak a függvény nevét, Csak szeretném, ha lehetne meghatározni dollár jel.
>> DAVIN: Igen, így beszélt erről.
Néhány hasznos dolog.
Kerestem vissza a régi vetélkedők.
Az elmúlt néhány kvízek, hogy már kellett használni a dolgokat, mint ez.
Tehát document.ready, így győződjön meg róla mindent a
betöltött, mielőtt elkezdené a dolgok.
Válasszon ki egy ID, vagy válassza egy osztály, akkor épp
legyen quote dot néhány osztályt, Idézet vége.
Benyújtására, így ha olyan űrlapot, és hívás
Ez a funkció után formájában előadja.
Érték, így mondjuk volt egy űrlapot benyújtását, mint egy felhasználói nevet és egy e-mail,
bármi.
Volt egy szövegmezőbe.
Úgyhogy gépelés, hogy mezőbe.
Nos, ha azt akarjuk, hogy az értéket ki, hogy szövegmezőbe, használja dot val.
És akkor, itt lent, dot HTML ugyanaz
olyan, mint dokumentum dot getElementById dot innerHTML.
Szóval ez fog visszatérni Ön a HTML-re, hogy ID.
Itt csak használja az egyes ID vagy bármi dot HTML.
Hogy megkapja a HTML-re ezt az elemet.
Ha akarta, hogy változtassa meg, hogy HTML, akkor adja át valamit.
Szóval lenne, mint dot HTML, majd belsejében, idézetek, új HTML vagy valami.
>> GABE: OK, így AJAX.
Nagyon szeretném megérteni AJAX igazán jól.
Szóval azt akarom srácok, hogy megérteni AJAX igazán jól.
Mert ha igen, te elég sokat megy
mindent megérteni, hogy van köze HTTP, PHP,
JavaScript mert minden jön össze AJAX.
AJAX nem egy nyelvet.
Ajax egy technika.
És ez használ sok különböző eszközöket.
AJAX jelentése aszinkron JavaScript XML.
Így a módszer, a nyelv, az adatok.
>> Tehát a fő nyelv, amit használunk AJAX kiváltó mindent
és kezelni mindent később a JavaScript.
Ezért az vonatkozik nagyon közel JavaScript.
És akkor aszinkron van mert mi nem tesszük meg
Minden egyszerre, amikor éppen betölti az oldalt.
Ez az a dolog, amit lehet dolgokat fajta párhuzamosan.
A fő gondolata AJAX, hogy azt szeretné,
hogy kap néhány konkrét információt.
Például, ha gépelés új felhasználói név, ha regisztrálja a felhasználói nevet,
én felhasználói név abc123.
Aztán, a végén a formában, akkor kattintson a Küldés gombra.
És el kellett menni a szerver, majd ellenőrizze, hogy szerepel az adatbázisban,
abc123 már ott van.
És ha már ott van, azt mondja, a felhasználó név már szerepel az adatbázisban.
És, ki kell töltenie ki az egész űrlapot újra.
És ez nagyon, nagyon rossz.
>> És akkor az emberek azt mondják, OK, miért nem lehet egyszerűen
csinál egy kis HTTP kérést, hogy csak ellenőrizni hogy ha ez a felhasználó az adatbázisban
mielőtt a felhasználó azt, benyújtja az egész űrlapot?
Így például, ha a használati befejezi gépelés abc123,
menjünk a szerver egy kicsit bit, és csak kap egy igaz vagy hamis
a szerverről, hátha ez egy érvényes felhasználói nevet, vagy sem.
OK, szóval ez az egyik fő használja az AJAX napjainkban is.
>> DAVIN: Szóval tényleg gyorsan, a Ajax hívás jQuery,
akkor amellyel jelzi, hogy akarjuk, hogy legyen szinkron.
Nem kellene ezt csinálni.
De tudod csinálni.
És ha igen, hogy mi fog történni?
Nos, például, ha éppen hírek érkeznek, vagy bármi,
A böngésző csak fog várni addig a teljes hívás befejezése
ahelyett, hogy te más dolgokat, miután rákattint.
>> GABE: Ez nem megy többé.
Oh my god.
Elnézést!
Aha.
"A múltban, a kliens szükséges kérelem
A teljes tartalmát a honlap. "
Ez az, amit mondtam.
Ez lehetővé teszi számunkra, hogy küldjön További GET vagy POST
kérések nélkül újratölti a böngészőt.
Így a végén a nap, mi vagyunk valóban így egy HTTP kérések
Itt a JavaScript.
Mert előbb, csak a használt JavaScript megváltoztatni a HTML, hogy már eljött.
És most, fel tudjuk használni, az interfész A web szervereket is.
Az, hogy ez történik, ez van az ügyfél.
Davin egy kliens.
És ő minden JavaScript futás miatt HTML néma.
JavaScript okos.
Tehát Davin Davin megvan a smart rész és a néma része.
Meg fog használni a smart része most.
Meg fog használni JavaScript a kérelem, például,
hogy abc123 van Az adatbázis vagy sem.
>> Tehát Davin, kérjük, csak küldj egy HTTP kérést.
Köszönöm.
Szóval csak küldött egy HTTP kérést.
Látod ezt?
És ez ugyanúgy hogy minden HTTP kérés érkezik.
A böngésző, Google Chrome, vagy valami,
majd, hogy Davin a próbál küldeni egy HTTP kérés,
fog segíteni hm egy kicsit.
És hogy fog menni egészen a szerverre.
Most, a szerver megy, hogy PHP itt, vagy bármilyen más nyelven.
Pont, mint egy normál HTTP kérést.
Ez nagyjából egy normál HTTP kérést.
>> És akkor, a szerver azt fogja mondani, OK,
Davin azt akarja, hogy ellenőrizze ez abc123 van az adatbázisban.
Menj, beszélj a modell.
A modell azt mondja, hogy nem. abc123 egy jó felhasználói nevet.
És akkor, a webszerver fog PHP teszi valamilyen formában a fájl.
Lehet szó szerint csak egy fájl amely tartalmazza az "igen", vagy "nem,
vagy valami ilyesmi.
Ez lehet bármilyen fájlt.
>> Ez lehet, mint fogok Levél Davin egy kép egy kacsa
ha ez az adatbázisban, és Levél egy képet egy hörcsög
ha ez nem szerepel az adatbázisban.
Ez lenne a fajta buta, de működni fog.
OK, úgy küldelek én is egy kacsa, hogy Davin.
Davin kapott egy kacsa.
És most, hogy ki fog kezelni a kacsa?
Davin intelligens része újra, így JavaScript, ugye?
JavaScript elküldte a kérésre, és a JavaScript
fog kapni a kérelem és értelmezni azt valamilyen formában.
>> És ebben az értelemben, hogy fog azt mondják, OK, ha kacsa, akkor jó vagyok.
Ha a hörcsög, akkor fogok mondani, nem, a felhasználó név már
létezik az adatbázisban.
De általában, te nem akartam küldeni egy kacsa.
Fogsz küldeni valami kicsit okosabb.
És mire használjuk az XML.
És az utóbbi időben, az általunk használt JSON.
JSON csak JavaScript Object jelölés, amely
alapvetően akkor kap egy teljes JavaScript objektumot.
És betette egy fájlt, csak szeretném hogy CS50 objektumot, hogy a srácok látta.
Tette be a fájlt, és akkor küldje át a Davin.
>> Tehát ebben az esetben, megtenném hogy egy JavaScript objektum
és csak azt mondom, felhasználó létezik, igen.
Vagy felhasználó létezik, nincs.
És küldje vissza neki.
És miért JSON?
Mert az a személy aki megkapta ezt a
fogja használni JavaScript kezelni a válasz.
És JavaScript működik olyan jól, mert ez az úgynevezett JavaScript Object Notation.
Ugye?
Így tudja csak hívja a funkciót, és kap ez a szép tárgyat a választ.
És akkor, ő fog tudni, hogy a felhasználó ki van az adatbázisban, vagy sem.
>> Így látod, az egészet jön együtt a web szerver,
és akkor ott van egy HTTP kérést, hogy és egy HTTP választ, és mindent.
Ügyeljen arra, hogy a srácok megérteni ezt AJAX hívás
mert segít megérteni az összes A fogalmak beszélünk.
>> Tehát itt egy példa Az AJAX jQuery.
És itt, mi köze get JSON.
Szóval nem próbálok egy kép egy macska van, vagy egy kacsa.
Megpróbáljuk kap egy JSON fájlt.
És akkor várja meg, amíg ez kész, pont kész.
Ez azt jelenti, várok a választ.
Ez eltarthat egy darabig.
Ezután megjelenik egy kis terheléssel.
Ha azt szeretnénk, hogy ezt, hogy a honlapon.
Tehát dot tenni, és akkor mi történik, ha kész?
Elmész egy névtelen funkciót, ugyanúgy, mint korábban láttunk.
Mivel történik egy olyan esemény, csak mint kattint az egér, vagy bármi,
A jQuery.
Így adja át az ezt a funkciót adatok, szöveg, állapotát, és jqXHR.
És alapvetően, ez Csak néhány változó
amelyek segítségével később, hogy az állapotát a HTTP kérést,
Az adatok, hogy folyik küld vissza hozzád.
Tehát akkor később értelmezni és nem valami értelmes vele.
És ha ez nem sikerül, ha esetleg ez nem?
Nos, ha a HTTP kérést ad Ön a 500, vagy valami ilyesmi.
Aztán, hogy fog mondani a status, milyen hiba volt,
és mindenféle dolgok.
Meg kell győződjön meg róla, kezelni mindkét esetben,
Más esetben a program megőrül.
>> DAVIN: Szóval igen, ez pontosan mit láttál a múlt p-set.
A tényleges AJAX hívás a get JSON.
Ez a hívás.
És akkor, dot tenni, mint akkor ellenőrzi, hogy ez sikeres legyen.
Ha ez sikerül, azt szeretnénk, hogy tegyen valamit az adatokat.
Kapsz vissza, hogy JSON kérésére adatokat.
Ez az, amit kapsz vissza.
Tehát, ha emlékszel az Ön p-set, Sok voltál adatok konzol i
vagy bármi, dot linket vagy címet.
Bármi is jön vissza attól a JSON, bármi
A mezők, hogy JSON, ez az, amit kapsz vissza.
Az adatok mit kapsz vissza.
Szöveg állapotát, csak valami, ami lehetővé teszi, hogy tudom, mi történt.
És akkor, a jqXHR, ez csak A jQuery XML HTTP kérés.
Ez csak, mint egy tárgy.
És akkor nem, mint Gabe mondta.
GABE: A mi kis példa a abc123 csak azért, hogy ellenőrizze, ha ez az adatbázisban
vagy sem, az adatok lenne valami, amit tenne, ha az adatok dot felhasználói név létezik,
ami pedig a PHP generált akkor, ha az adatok dot felhasználói név létezik, akkor
Megyek, hogy figyelmeztesse, használati már létezik.
Else, én csak hagyom, hogy a használati folytassa az űrlap kitöltésekor.
OK, biztonsági, hűvös.
>> DAVIN: Akarod, hogy?
>> GABE: Szeretem ezt.
Tehát valami, ami ismerősnek tűnik.
Már majdnem készen vagyunk.
Tehát ez csak a példa srácok látta az osztályban.
Ön által használt argv1 itt.
Ez olyan, mintha egy parancssori argumentum.
És mi mem másolása után egy puffer mérete 12.
Mi itt a probléma?
Puffer túlcsordulás!
Mert van egy puffer mérete 12.
argv1 lehet a mérete kétmilliárd.
Mi nem csinál semmi határán ellenőrzés.
Tehát lehet, hogy másolni egy csomó memóriát.
És mi lesz, különösen a rossz erről.
Mit tehetünk, hogy ez Nagyon-nagyon értem ebben az esetben?
Igen?
Közönség: Része a kétmilliárd dolgokat végrehajtható kódot tartalmaz, amely visszaadja
[Hallhatatlan].
GABE: Pontosan.
Szóval ez a fajta dolog, hogy az emberek használni
jailbreak az iPhone, például.
Tehát ez a fajta dolog.
Mert ha csak így az eszköz hajt végre olyan kódot, ami tetszik.
A fix, így a fix könnyű.
Csak ellenőrizze a határokat.
Ellenőrizte, hogy a null miatt mindig ellenőrizze a null
ha van dolgunk szálakat.
És akkor, akkor megteszi a karakterlánchossz előtt.
És ha a húr hossza egy érvényes karakterlánc
hossz, amely belül van 0 és 12, majd jók vagyunk.
>> DAVIN: Ha nem ellenőrzi null, tényleg gyorsan, mi fog történni?
Nem lesz seg hiba.
Miért ez seg hibája?
Mivel hívsz strlen a null.
GABE: Igen.
Igaz vagy hamis, valamelyikének felhasználásával jelszó egy jó ötlet.
>> Közönség: Hamis.
>> GABE: Hamis.
Használja sok jelszót, és a nagy, a hosszabbak.
Lakat ikon biztonsága érdekében.
>> Közönség: Hamis.
>> GABE: Hamis.
Ez nem jelent semmit.
Ez csak egy ikon.
SSL véd a man in the middle támadást.
Közönség: Hamis.
GABE: Hamis.
OK, tehát minden hamis.
Nice.
[Hallhatatlan]
Akarok beszélni erről?
A sor.
DAVIN: típusú támadások, man in the middle.
Mi a man in the middle támadás?
Közönség: [hallható].
DAVIN: Ha küld egy HTTP kérést, hogy meg tudják csinálni, ugye?
De ha küld HTTPS, akkor Valószínűleg nem lesz képes erre.
Van sok pont valamint a kapcsolat.
Van router.
Van DNS szerverek.
Ha valaki tudja, hogy fizikailag meglássa, mit küldését,
így valaki képes tényleg csak közted,
az ügyfél, és a szerver, és tudja, hogy mit akar küldeni,
ez egy ember a közepén támadás.
Tehát, hogy mit akarsz eljutni a szerver, vagy képes csak-- rosszabb,
akkor lehet, hogy sütemény vagy valami ilyesmi.
>> Így például, ha a Ön nem használja az SSL-ben
képes lehet látni a session ID cookie-kat.
És ezt nevezik munkamenet eltérítése mert látja az azonosító cookie-kat,
majd ő tudja, hogy megy, hogy a honlapján, és úgy tesz, mintha meg.
Mert ahogy a PHP, emlékszem amikor bejelentkezve, mit tegyünk?
Mi meg session ID egyenlő ID.
Tehát az Önt azonosító.
Ezért láthatjuk a tárca és nem mindenki más portfoliójában.
>> Nos, ha én vagyok képes, hogy a cookie, akkor tudok majd jelentkezni az oldalra.
És akkor, én is csak látja a dolgokat és meg kell kezdeni a vételi és eladási dolgokat.
Szóval ez munkamenet eltérítése.
De akkor nem lesz képes to-- így Használhatja a man in the middle támadás
Akkor is, ha az SSL használatával.
De akkor nem lesz képes.
Ha az általuk használt SSL, nem tudsz ülésen eltérítheti.
Miért?
Mert ez mind titkosított, ugye? ha ez titkosított,
és én még mindig a férfi a közepén, én még mindig az adatokat.
Ez rendben van.
De ez titkosítva.
Szóval nem igazán tudom használni.
Szóval ez a két.
>> Igazi gyors, cross-site kérés hamisítás.
Ez csak ha van egy link és ez a kapcsolat nem valami
hogy nem hiszem, hogy kellene csinálni.
Így például, ha a kapcsolat volt fognak vásárolni állományok, vagy eladni készletek,
és te nem tudod.
Rákattintott a linkre, intézett, vásárolt
vagy eladott valamit, Ön még nem jelenti, hogy nem.
Ez van.
>> Cross site scripting, így itt, te halad keresztül változó q,
ahelyett, hogy továbbítaná valamilyen Az érték, talán q olyan, mint egy név.
Tehát ahelyett, hogy továbbítaná q egyenlők Davin, vagy valami ilyesmi,
Ha nem használja a HTML speciális jelek, ha
Nem menekül meg, hogy megbizonyosodjon arról, hogy OK, akkor én is át a helyett,
mondjuk itt mondok print vagy valami ilyesmi,
akkor én is át itt a script hívást.
>> Így aztán, ahelyett, csak arra, hogy egy változó,
Azt majd végrehajtja ezt a forgatókönyvet hívást.
Szóval benne, hogy script hívja, mit csinál?
Dokumentum dot helyét, hogy fog változtatni a helyét a dokumentumban.
Így fogok átirányítani máshová.
Úgy hívják rosszfiú Ebben a példában, nagyon jó.
Nem jutott eszébe a szó.
És akkor mi is rosszabb, hogy megyek
hogy állítsa sütit, ami némi változó én a jelen honlapon.
Megyek beállítani egyenlő A dokumentum dot sütit.
Ezért megyek ellopni a cookie-t.
És fogok átirányítani Egyes információk a honlapon
hogy nem szabad hozzáférését.
És mindez azért történik, mert te Nem menekülés, mit láttál.
Igen?
>> Közönség: Tehát csak A félreértések, ez
vulnerable.com, hogy az érzékeny erre.
Tehát, hogy hivatkozásával adott oldalra.
Valaki rákattint rajta, megy vulnerable.com.
Van egy cookie vulnerable.com.
Mondjuk Facebook sérülékeny, így facebook.com.
Megvan a Facebook sütit.
Milyen ez az csinál, te fog facebook.com,
ez azonnal átirányítása hogy badguy.com,
de beleértve a cookie információkat.
Tehát ez egy gyors átirányítás, de a Facebook cookie-
tartalmazza az átirányítás, és ez hogyan [hallhatatlan].
GABE: Igen, van néhány nagyon kegyetlen dolgokat
hogy az emberek tehetnek, ha itt van ez.
Például, ha a Facebook megengedett mindenki, hogy változtassa meg a felhasználói nevet,
és nem tettek semmilyen alapvető ellenőrzést, így
épülhet be a JavaScript dolog, megváltoztatja a képet, hogy a hörcsög.
És beszúrja az ugyanazon JavaScript be mindenki, aki megtekinti az oldalt.
Tehát mindenki, aki megtekinti az oldalt ugyanaz a dolog, a felhasználói nevet.
És mivel ez egy vírus, terjed exponenciálisan.
DAVIN: Majd hagyja az utolsó Egy, aztán kész.
Szóval ez is csak egy példa.
Tehát ez ők nem menekülés a SQL táblát.
Szóval lehet ejtse le.
Tehát azt szeretnénk, hogy elkerülje a dolgok.
Ez volt az előző példában A cross site scripting.
Bocs, hogy futott egy kicsit későn.
Holnap, bocs!
Holnap, van munkaidőben.
Így munkaidőn Cabbot 8:00-11:00.
Az iroda nyitva tartása szigorúan kvíz kérdések.