HANNAH BLUMBERG: Üdv mindenkinek. Megyünk az induláshoz Csak pár perccel korábban Mivel van egy csomó Az anyag átvészelni. Én vagyok Hannah. Én egy TF. Maria fog csatlakozni nekünk csak egy pár percre. Tanít ​​a rész előtt jobbra. Tanítok részén jogot után, így fogunk tartani, hogy a másfél óra. Tehát ahogy látni fogjátok fel ide, van elég Néhány témákról kell átjutni, így megyünk egy kicsit gyors. De ha bármikor mondunk valamit túl gyorsan, vagy nem érted, nyugodtan szakítsa meg a kérdéseket. Azt akarjuk, hogy képes legyen, hogy ez egy felülvizsgálati ülésén hasznos mindenkinek, amint lehet. Fantasztikus. Úgyhogy ugrani a néhány téma, hogy mi valójában Nagyon, nagyon röviden kiterjed a világ kvíz 0 a kvíz 0 felülvizsgálati ülésén. Így kezdődő láncolt listák. Szóval, csak győződjön meg róla, hogy néhány alapvető ismereteket láncolt listák és kényelmes csinál néhány alapvető műveleteket. Tehát csak, hogy vizsgálja felül, kapcsolt listák jobbak, mint tömbök mert dinamikusan növekszik. Tehát van, hogy óriási előny. Láttuk őket használni A hash táblák amikor Nem tudom pontosan, hogy hány dolgokat fogunk szeretnénk szúrni a adatszerkezet. Sajnos, van darab A listába egész memóriát, ezért nem feltétlenül lesz képes megtenni állandó idejű hozzáférést bármely eleme a láncolt lista. Annak érdekében, hogy megtalálják a Különösen elemünkkel Van iterációkhoz összes ahogy az elején. Tehát ne feledje, hogy a legtöbb alapvető műveletek omegája 1. Tehát betét csak megy, hogy 1. Törlés fog tartani n mióta mennem kell találni azt a listából. És keresési eltarthat, a legrosszabb esetben n. Nem tehetünk valamit, mint bináris keresés a láncolt lista Mivel nem tudjuk, csak véletlenszerűen ugrik a közepén. Hűvös. Fantasztikus. Egy kis halom. Ez megint feljött a kvíz 0, így legyen szuper kényelmes vele. De halom, kérünk benneteket, emlékezni egy köteg tálcák. És ez lesz az első az, kitart. Tehát verem a dolgokat a köteget, majd ha igyekszünk, hogy valamit off-- ahogy mi hívjuk leugrás A stack-- jövünk le a tetejét. És ha azt akarjuk, hogy valamit a verem, hívjuk rámenős. Tehát ez mindig lesz felnövő alulról, mint egy köteg tálcák. Fantasztikus. Láttuk stack megvalósított Mindkét kapcsolódó listák és tömbök. Ha végrehajtási tömbökkel, azt szeretnénk, hogy győződjön meg arról, hogy nyomon követhesse mind a mérete és a kapacitást. Tehát méretű lesz az aktuális Számos dolog a verem, mivel kapacitás az az összes szám dolgokat lehet tárolni a verem. Hűvös. Nagyon hasonlóan, már a sorban állás. Ebben az esetben, ahelyett, gondolkodás egy köteg tálcák, gondolom, egy sorban. Ez lesz az első, first out. Tehát ha sorakozó valamit a boltban, reméljük, hogy a személy először vonalat fog segíteni az első. Ahelyett, hogy nyomja, és pop, mint mi a verem, mi csak azt Enqueue és dequeue. És újra, ha végrehajtja ezt egy sor, meg kell nyomon követni nem csak a méret és a kapacitás, hanem a fej, amely lesz az első a mi sorban. Hűvös. Bármilyen kérdése van ezzel? Fantasztikus. Mozgó végig. OK, hash táblák. Itt van, ahol kezd igazán érdekessé. Tehát egy hash tábla az egyik végrehajtása Egy asszociatív tömb. Tehát alapvetően mi történt A mi mindezt bemenet, és adunk el egy hash függvény, amely azt mondja, OK, ez az, ahol a hasítótábla tartozik. Tehát a legegyszerűbb hash függvény Láttuk, csak azt mondja, OK, tegyük fel akarjuk helyezni húrok a hasító táblázatban. És egy nagyon egyszerű ötlet Lehet azt mondani, OK, nézzük csak rendezni a első betű a szó. Tehát itt is látszik, veszünk banán, rakjuk át a hash függvény, és azt mondja, hé, hogy kell menni index 1. Tehát lényegében gondolni egy hash asztal, mint egy csomó különböző vödrök. És ezek mindegyike kanalak megy hogy tartsa a fejét egy láncolt lista. És abban a láncolt lista, ahol csak tudunk ténylegesen különböző adattartalommal. Tehát búvár egy kicsit egy hash függvény, itt A példa csak ismertetett, ahol már csak mondani, OK, hogy az első betű a szó, és mi vagyunk fog rendezni a vödörben. Tehát valószínűleg, nem lesz 26 vödrök, egy-egy betűt az ábécé. Miért nem ez a nagy hash függvény? Mi teszi ezt a nem ideális? Igen. Közönség: Fogsz hogy az ütközések. HANNAH BLUMBERG: Igen, pontosan. Te mész, hogy az ütközések. Szóval ez egy dolog. És fogunk beszélni, hogyan tudjuk erősít ütközések pillanatok alatt. Egy másik probléma ezzel a Különösen hash függvény az, hogy a különböző vödrök lesznek csinos drasztikusan különböző méretekben. Tudjuk, hogy van egy csomó több szót, kezdődik egy, mint X, így fogunk, hogy nagyon kiegyensúlyozatlan kanalak a hasító táblázatban. Hűvös. Szóval igen, térjünk vissza a lényeg az ütközések. Mit tegyünk, ha van egy ütközés? Van egy pár különböző lehetőségeket. Tehát egy, így feltételezem próbálunk hogy bogyó a mi hash tábla. És azt látjuk, ó, szeretnénk hogy betette index 1, de a banán már ott él. Mit fogunk csinálni? Van két fő lehetőséget. Számú azt mondhatjuk, OK, nincs helye az index 1, De tételezzük fel, nézz át amíg nem találunk egy másik nyitott helyre. Tehát azt fogjuk mondani, OK, Mondjuk a helyszínen 3. Ez az egyik lehetőség. Ezt hívják lineáris szondázás. És a második lehetőség azt mondja, OK, nos, Nézzük csak, hogy minden ilyen vödrök heads kapcsolt listák. És nem baj, ha több mint egy dolog egy vödör. Mi csak fog fűzze rá a front. Tehát itt láthatjuk, OK, amikor be bogyó, mi csak volt banán, egyfajta tolt át egy kicsit és dobott egy bogyó van. És ez is teljesen rendben. Ez az úgynevezett külön láncolás. Akkor gondolom, ennek a fajta, mint egy sor fejek láncolt listák. Bármilyen kérdésre hash asztalok, hash függvények? Fantasztikus. Fák és próbál. Tehát egy fa semmiféle Az adatstruktúra ahol van valami a hierarchia vagy valamilyen A rangsor a különböző tárgyakat. És ez lesz szuper világossá, ha egy példát. És láttuk próbálkozás mellett A hash táblák, az pset5-- ami megint teljesen tisztességes játék Ennek quiz-- a másik adat struktúrák, hogy mi lehet tárolni különböző dolog. Abban az esetben, szótár, tároltunk egy csomó szó. Szóval vessünk egy pillantást néhány fát. Szóval ez egy példa egy fa. Ez egy fajta struktúra, hogy hierarchikus felépítés, ahol láthatjuk, hogy Ez az 1 csomópont tetején van valamiféle rangot fenti 2. és 3. amelyek a fenti 4, 5, és 6 és 7, amelyek a fenti 8 és 9. Szóval ez minden, amit azalatt, hogy fa, így csak ilyen A kép ezt a fejedben. Most, hogy van egy pár speciálisabb fák. Tehát az egyik példa egy bináris fa. És egy bináris fa, megint csak lesz egy adatstruktúra valamilyen hierarchia, de az egyes csomópontok lehet, legfeljebb két gyermek. Ez az, ahol a szó bináris származik. Tehát ez egy példa egy bináris fa. Szóval ez egy kisebb kategóriát a fák. Most térjünk még speciálisabb és beszélni bináris trees-- bináris keresés fák, inkább. Tehát itt az ötlet nem csak azt teszi, minden csomópont, amelyeknek legfeljebb két gyermek, de a gyerekek a bal lesznek kisebbek és az összes gyermeket a jobbra, nagyobb lesz. Tehát hirdetmény csak a mi bináris fa, ott nincs kapcsolat a számokat. De mi a bináris keresés fa, azt látjuk, OK, itt 44. És minden szám balra 44 kisebb és mindent a jobb nagyobb. És hogy tartja minden szintjét a fa. Tehát itt, ez kisebb, mint 22 és ez az érték nagyobb, mint 22. És ez bináris kereső fa. Miért gondoljuk, hogy hívják bináris kereső fa? Milyen algoritmus nem is emlékeztet a? Közönség: bináris keresés. HANNAH BLUMBERG: bináris keresés. Mert ha keres egy adott számot a fán, minden pontján, akkor csak kopogtattak off fele a fa, ami nagyszerű. És így fog adni nekünk valamit hogy néz ki, mint a bináris keresés. Bármi kérdés? Rendben, jó. Rendben, megpróbálja. Mindenki kedvenc. Tehát ez a példa, hogy láttunk egy csomó osztályban. És ismét, ez is csak egy így tudjuk tárolni az adatokat. Abban az esetben, szótár, ismét, ez csak lesz szálakat. Szóval lássuk, mi ez valójában néz ki, mint egy valamivel alacsonyabb szinten. Szóval vessünk egy pillantást egy csomópont egy Trie. És azt látjuk, OK, ott lesz hogy egy logikai és egy csomópont, A mutató egy csomópontot. És azt látjuk, hogy a Logikai hívják is_word. Tehát lényegében ez lesz megfelelnek hogy ezek a kis háromszögek azt mondja, ha már ütött itt, megtalálta a szót. Tudjuk, hogy a "Turing" fölött Itt egy teljes szót, mivel csak T-U-R nem egy szó mert nem látjuk, hogy a kis delta. És az a kis delta, újra, megfelel ennek is_word, ez a logikai is_word. És akkor mi van egy sor gyerekeknek. Tehát minden szinten, akkor van egy adott csomóponthoz, és hogy csomópontokat egy tömb az egész ábécét. Így láthatja, újra, Ebben picture-- vagyok fog tartani ugrás vissza forth--, hogy a tömb tetején van egy csomó különböző csomópontok jön ki belőle. Ez 26, illetve 27 ha azt szeretné, felvenni egy extra karakter. És ez ad nekünk egy módon kell tárolni adatainkat oly módon, hogy lehet nézte hogy tudod nézni szuper gyors. Mi a keresési ideje egy Trie? Közönség: [hallható]. HANNAH BLUMBERG: Igen. Elméletileg ez az állandó idő. Ez csak akkor lesz a mérete A kívánt szót, hogy néz ki. Még ha hozzátesszük zillion több szót a Trie, ez nem fog minket tovább meghatározásához Ha egy adott szó a Trie. Szóval ez tényleg szép. Közönség: Csak úgy inicializálni a tömbben? Kihagyott egy pontot, vagy kettő. Lehet csak beszélni hogy egy pillanatra? HANNAH BLUMBERG: Persze, teljes mértékben. Jó kérdés. A kérdés az volt, mi Van egy tömb, ami megy, hogy node sztár szemben a csak csomópontot, nem igaz? Hűvös. Tehát itt, amit mondunk a mi tömb csak lesz mutatókat többi tömbben. Szóval ez essentially-- ez a fajta Olyan, mintha egy láncolt lista ezen a módon ahol minden egyes ilyen gyermekek csak pont a következő csomópontot. És az is, hogy mi valójában meghatározzák, hé, OK, mi már végigjárt egy egész szó, ez a szó a szótárban, mi csak ezt nézd is_word. Nagy kérdés. Igen. Közönség: OK. Tehát mi volt az áthidalási időt biztosít a Trie? HANNAH BLUMBERG: Persze. Tehát a futásidejű egy Trie számára keresési lesz állandó időt. Szóval ez csak lesz a betűk száma a szót. Ez nem függ a méret a szótárban vagy a mérete az adatok szerkezetét. Tehát itt egy kicsit egyszerűbb példa. Ebben az esetben, akkor láthatjuk, hogy a szó denevér a szótárban és van zoommal, de Nem kell valami, mint állatkertben. Hogyan tudnánk tenni állatkertben? Hogyan adjunk állatkertben a mi Szótár, hogy mi Trie? Igen. Közönség: Tedd is_word igaz az [hallhatatlan]. HANNAH BLUMBERG: Jó. Tehát azt mondanám, Z-O-O, és akkor lenne szeretné, hogy ellenőrizze le azt a dobozt is. Nagy. Hasonlítsuk össze nagyon röviden megpróbálja versus hash táblák. Megpróbálja igazán nagy mert, ahogy mondta, az általuk nyújtott folyamatos idejű keresést. De a nagy hátránya is ők humongous. Tudod kap az értelemben, még néztem, hogy fog tartani Hatalmas mennyiségű memóriát. Tehát ők fognak sokkal nagyobb, mint hash táblák, de ők fognak adni nekünk sokkal gyorsabb keresést alkalommal. Szóval ez a fajta a kompromisszum, mi érdekli Önt, hogy ez a sebesség vagy a memória. Bármilyen kérdésre sem, hogy, minden a C adat struktúrákat. Gyönyörű. OKÉ. Fogunk lépni egy kicsit kis webfejlesztés Mária. MÁRIA ZLATKOVA: Szép. OKÉ. HANNAH BLUMBERG: Tudod használni a laptopot. MÁRIA ZLATKOVA: Szép. Oké, rendben. Ahogy haladunk most web fejlődés, beszélgettünk egy kicsit a változó engedélyeket A fájlok és könyvtárak hogy így legyen hozzáférhető a többi felhasználó számára, hogy a világ, és így láthatjuk, hogy Alapvetően tudjuk közvetíteni számukra ha fejlesztjük a dolgok, mint honlapok hogy már többnyire csinál. Így láttuk a chmod parancsot, amely változást mód, alapvetően. Ez egy Linux parancs és megváltoztatja a hozzáférési jogosultságokat fájlrendszer-objektumok. És egy fájlrendszer objektum Csak egy könyvtár, egy fájlt, bármi, amit tudsz megváltoztatni a jogosultságokat. Tehát, hogy a jogosultságokat, beírjuk a ls, lista, -l. És ha beírjuk, hogy mi általában látni néhány engedélyekkel hogy néz ki, mint valami ebben a előtt egy könyvtár nevét. Szóval d utal könyvtárba. És akkor mi van három triádok, hogy alapvetően olvassa el a jogosultságokat vagy egy felhasználó, egy csoport, vagy a világ. A típusú engedélyeket, hogy mi lehet Van erre a három embercsoportok amelyek vagy r olvasási, w az levelet, és x-futtatás. És mi lehet azoknak a A csoport és a világ is. A trükkös dolog az, hogy néha ha beírjuk a chmod parancsot, mi lenne be is számot hogy állt három bit. Így lehet csinálni, mint 777 és hogy alapvetően utalt a hozzáadott érték minden ilyen triádok Mivel az R utal, hogy 4, w lenne lásd 2 és x utal az 1, így ha összeadódnak, minden egyes számhoz jött le, hogy a kumulatív száma halmozott értéke 0 és 7 között. Szóval mi is van 0 A semmilyen jogosultsággal nem rendelkeznek. És ez alapvetően nekünk Az engedélyeket a felhasználókra, A csoport, vagy a világ. Kapcsolatos kérdéseket a következő eddig? Közönség: Azt mondtad, olvasott, 4? MÁRIA ZLATKOVA: Igen. Közönség: [hallható]. HANNAH BLUMBERG: Ja. Közönség: És akkor hozzáadásával mindazoknak mások azt jelzi a számot. MÁRIA ZLATKOVA: Igen. Igen. Ezek nagy kérdések. Bájos. Következő, beugrott HTML és kicsit többet webfejlesztés. Szóval csak azt jelenti, HTML Hypertext Markup Language. És ez a jelölő nyelv, amely egy szabványos hogy ez létrehozásához használt weboldalakat. Úgy hívják jelölőnyelv mert nem fordítódnak. Nem azt mondja, hogy néhány kódot kell hajtható végre, vagy ilyesmi. Csak felvázolja és leírja, hogy a web oldalt kell létrehozni minden elemében és hogyan kell nézni, hogy a felhasználó. Néhány HTML tag, hogy mi Odamentem a következők. Minden HTML dokumentumok kezdődött a DOCTYPE html. Aztán mindig a html tag. Van egy fej és test. És fontos, hogy HTML-ben ez a fajta beágyazott szerkezetben mert nagyon világos. És akkor nagyon világossá válik, amikor kell nyitni, és valóban közel címkéket. És mindig be kell zárnia címkék nyitottunk. És itt van néhány típusú A dolgok előtt, hogy mi akar. Tehát van, például, címmel CS50. És akkor mi valójában A link egy stíluslap amely meghatározza, hogyan formázza a honlapunkon. Azaz CSS. Fogunk menni rajta a következő pár diák is. A szervezetben, mi meg Egyes osztályok és azonosítók. És emlékeztetőül, ismét, Azonosítók egyediek és osztályok lehet rendelni több példány. És ez csak azt jelenti, hogy tudjuk használni osztályok és azonosítók a más structures-- igen, Például belül CSS fájlok vagy stílus sheets-- utalni egyes elemeinek és alapvetően azt mondják, hogy azt akarjuk, hogy stílus vagy néhány elem tervezése Néhány különleges módon. És utalunk rájuk az azonosítók és osztályok. És mi is utal különböző dolgokat címkéket, valamint, de azonosítók és osztályok csak nekünk néhány sokoldalúság és mi pontosan mi szeretnénk hivatkozni. Tehát csak egy példa. Mi lehet megint belül CSS fájlban, ahol szeretné meghatározni néhány style-- így a színek, betűtípusok, és ilyesmi hogy-- tudjuk határozza meg a stílust a szervezetben. Szóval, amely meghatározza, hogy az egész testet tag. De akkor mi is meghatározhatjuk, stílus egy #title. És ismét, a hashtag utal a Azonosítót és a dot utal az osztály. És akkor az .info, mi is beállíthatja néhány attribútum. Viszont mikor megyünk vissza, mi volt a mi osztály info néven, és mi ID címet. És azt látjuk, hogy utalunk által számukra #title és .info. Közönség: Mondhatjuk kettőskereszt [? elfogadja engem? ?] MÁRIA ZLATKOVA: Sajnáljuk? Közönség: Mondhatjuk kettőskereszt [? elfogadja engem? ?] MÁRIA ZLATKOVA: Hashtag azt jelenti, ID, így #title utal, hogy bármilyen elemet ezt azonosítóval, úgynevezett címet. És akkor a pont utal egy osztály. Tehát .info utal ez az elem mert az osztály info. Aha. Közönség: Miért megkülönbözteti őket a HTML? Miért mondod bizonyos dolgok Azonosítók és bizonyos dolgok osztály? MÁRIA ZLATKOVA: Ez csak legfeljebb you-- HANNAH BLUMBERG: ismételje meg a kérdést. MÁRIA ZLATKOVA: Ó, sajnálom. Miért tesz különbséget az egyes elemek mint azonosítók és egyéb kellékeket osztályok? Ez csak azért, mert ez Tényleg sokszor design választás. Ez ad egy csomó sokoldalúság, hogy tudja mondani akarok ebben a konkrét elem hogy ezt az azonosítót, mert szeretné hogy csinál egy csomó dolgot vele, és én csak szeretnénk definiálni stílus, bizonyos stílust vagy színes bármi azt az elemet. És a módja, hogy csak így ez egy azonosítót. És akkor, ha azt akarjuk, hogy egy pár különböző tételek rendelkező, hogy ahelyett, megy és beállítási their-- ahelyett, hogy azt tag, mert a tag lenne állítsa be a sejt az egész címke minden alkalommal, hogy a használt címkét, akkor meg egy osztályt, hogy több elem. És akkor csak elérni, hogy az osztály, és azt mondják Azt akarom, hogy stílus ebben az osztályban, hogy így. És ismét, az osztály lehet több különböző tételeket és az azonosító egyedinek kell lennie. Nagy kérdés. Más kérdés? OK, félelmetes. Ez megint, hogy ezek a szelektor hivatkozik a CSS, a hashtag, dot, vagy anélkül semmit hozzárendeljük a stílus néhány tag, mint a test. És itt van az általános szintaktikai hogy ez hogyan történik. Megismételni néhány bevált gyakorlatok HTML és CSS, meg kell, újra, közel az összes A HTML címkéket, hogy nyitunk. És mi azt ajánljuk, hogy tenni a végleges projekt, valamint CS50 pénzügyminiszter, az, hogy arról, hogy minden HTML érvényesíti. És ez történik a W3-érvényesítő. És akkor mit tettünk és mi ajánljuk csinál elválasztja stílus, így CSS jelölő HTML. Tehát minden, ami kapcsolódik hogyan Ön az oldal fog vizuálisan nézni és hogyan fog módosítani kell kerüljön egy CSS dokumentumot. És akkor a jelölések mondván, hogy a dolgok vannak egymáshoz képest HTML, és hogy kell bemenni A HTML dokumentumokban. Bármi kérdés? MHM. Közönség: pontosan mi is folyik tovább a oldal érvényesítés amikor mi érvényesítésére HTML [hallhatatlan] létre? MÁRIA ZLATKOVA: Szóval what-- hiszed. Tehát pontosan mi is folyik folytassák az oldal érvényesítés és miért kell ezt csinálni? Alapvetően azt kell tennie, hogy mert egy csomó idő, a böngésző, ha nem zárja címkét vagy valami ilyesmi, A böngésző még mindig tart, hogy render egy oldalt, és lehet, hogy még mindig működik, de a legjobb gyakorlatot, hogy győződjön meg arról, hogy már megint zárva minden tag, hogy minden elem a módon, hogy legyen, és alapvetően, hogy ez a egyezmények, amelyek előre. Ez megint csak egy dolog, amit meg kell tanulni, hogy csinál, szemben, amelynek hanyagabb kódot, és ilyesmi. Igen. Oh Bocsánat. Azt hittem emelni a kezét. Közönség: Nem, én csak [hallható]. MÁRIA ZLATKOVA: OK. Közönség: Köszönöm. MÁRIA ZLATKOVA: Természetesen, köszönöm. Szóval megint folyik be, hogyan információ átvitelre és kommunikációs modellek adatot átvinni. TCP / IP. TCP csak azt jelenti Váltó Control Protocol és IP utal Internet Protocol. És ez csak utal vannak az adatok szállítani. Ha van néhány adat, kell szállítani you-- így Ön kérheti az adott szerver. Például, amikor mi megpróbál hozzáférni cs50.net, teszünk egy kérést A CS50 szerver és mi látom, hogy azt akarjuk, hogy ezt a fajta információt. És akkor alapulnak ezt a protokollt mennyi ez az információ nem került sor, A szerver ad információt vissza hozzánk, az ügyfél. És akkor képesek vagyunk megtekintéséhez Az információt az oldal és akkor használd. Így aztán Hypertext Transfer Protocol is csak egy protokollt, vagy állítsa egyezmények, amely meghatározza, hogyan A böngésző és a webszerver közölnie kell. És hogy ezt minden együtt, HTTP, ismét, Csak határozza meg, hogy ez a hipertext meghatározott A HTML, amit már dolgozom rajta, hogyan kell szállítani Önnek és hogyan, hogy az adatok, hogy Önnek kézbesített lesz az Ön számára. És ezért, ha a srácok emlékezni egy osztályt, volt egy csomó kéri és mi volt a sok szintaxis ezeket a kéréseket, hogy mi vagyunk megyek át most. Tehát újra, amikor küldjük a kéréssel, hogy a szerveren, definiálnunk kell egy pár dolgot. Tehát meg kell találni a típus A kérés, hogy mi a beállítást. És újra, meg kell, például GET egyik típusa a módszer hogy mi van a kérésünket. És akkor HTTP / 1.1 csak a protokoll, mi használ jelenleg. A legtöbb időt, hogy fog a protokoll, mi használ. Tehát, ha van egy kérdés mint hogy a kvíz. Ez az egyezmények hogy van eddig. Backslash utal, miféle A dolgok mi kérő. Ezután, a mi fogadó jelentése például, ebben az esetben igyekszünk menni google.com. Tehát ez az érték a házigazda. Ez egy olyan típusú kérés hogy lehet küldeni. És akkor egyfajta válasz, amely kell küldeni, ismét alapján ez a protokoll, ismét, HTTP / 1.1. Szóval ez a HTTP verzió újra. 200 OK csak a státusz kódot. És ez rendben van csak egy mondat alapul, hogy státusz kódot. És akkor a Content-Type utal, hogy a típus A visszaadott veled, hogy van az adott weboldal, amit kap és hogy a böngésző teheti utána. És ez text / html. Közönség: Mit 1.1 kifejezés? MÁRIA ZLATKOVA: Ez csak a változata of-- ó, mit 1,1 jelent? Ez csak a verzió, a HTTP változata egy protokoll, amely mi használ. Nagy kérdés. Más kérdés? Közönség: Tudna összefoglalni Content-Type tényleg gyorsan? MÁRIA ZLATKOVA: Szóval, hogy az, amit a szerver. típusától information-- mi tartalom típus volt a kérdés. Szóval ez volt az a fajta információ, amit kap vissza a szerverről, hogy milyen típusú adatok, hogy a böngésző majd render, hogy az Ön által használt. Közönség: Ez az, amit ez a protokoll azt mondja, hogy nem? MÁRIA ZLATKOVA: Sajnáljuk? Közönség: Ez az, amit a protokoll mondani? MÁRIA ZLATKOVA: A protocol-- Közönség: --what a Content-Type van, vagy what-- MÁRIA ZLATKOVA: A protokoll alapú on-- mi a protokoll mondom? Ez csak az utat hogy ezt az információt te kaptad alapján arról, hogy milyen protokoll volt ez az információ van szállított vissza hozzád. Van ennek értelme fajta? HANNAH BLUMBERG: Ön lehet gondolni protokoll mint egy-- Azt hiszem professzor Malan leírta osztályban, mint olyan, mint egy-- ez olyan, mint ami megegyezik az emberi kézfogás. Mondjuk, hé, én vagyok a kérelmet, és én tudja, hogyan kell kezelni a HTTP 1.1 változat. És akkor a szerver azt mondja, ó, OK, én-- és mindkettő létezik. Azt is tudom, hogyan kell kezelni a HTTP / 1.1. És fogok adni Ön vissza tartalmakat. Ebben az esetben, ez lesz hogy a text / html. Szóval ez a fajta csak egy módja közülük communicating-- MÁRIA ZLATKOVA: Ez csak megerősítve, hogy te mindkét alábbi ugyanaz protokoll és hogy mind Az ügyfél és a server-- így A böngésző és a server-- fajta tudhatod, mit veszel beszél, és Az egyezmény halad adatok. Közönség: Tehát a Content-Type part-- A Content-Type text / html-- ez egy külön része ugyanazt az üzenetet? Vagy ez része mondjuk, 200? Vajon 200 közölje velük, hogy vagy is-- MÁRIA ZLATKOVA: 200 azt mondja, minden ment az OK gombra. És akkor a tartalom típus egyfajta elkülönített részben ugyanazt az üzenetet, és azt mondja a dolog, hogy én visszaérkezett az ilyen típusú text / html. Ez csak így több információt. Van valami hozzá? OKÉ. Más kérdés ezzel kapcsolatban? Fantasztikus. Szóval néhány más HTTP állapotok tudnánk mellett 200 OK, is, hogy láttunk talán esetleg egy csomó olyan 403 és 404. Tehát 404, ha akarták hozzáférést valamit, ami nem létezik. Így például a CS50 Pénzügy psets, ha már renderelés quote.html és akkor nem volt, hogy a fájl, hanem meg kellett quote.php, hogy azt eredményezné, hogy 404 Not Found mert a fájl nem létezik. Egy 403 megtiltották, hogy utal, hogy a jogosultságokat. Tehát, ha néhány fájl nem olvasható a világban, akkor lehet, hogy egy 403 tért vissza. Mások, hogy lehet, get-- 301, Véglegesen áthelyezve; 302, talált; 304, Módosított; 400, Bad Request; majd Internal Server Error számára 500 és 503, szolgáltatás nem érhető el. Igen. Közönség: Will azt vártuk, memorizálni mindazokat állapotokat? MÁRIA ZLATKOVA: szerettem volna őket a puskát. [NEVETÉS] Közönség: vagyunk várhatóan tudom, hogy mi váltja ki mindegyiket? MÁRIA ZLATKOVA: Valóban? HANNAH BLUMBERG: Az is, hogy mi már fuss into-- így a kérdés was-- MÁRIA ZLATKOVA: Biztos, hogy várhatóan mit mindegyiknek státusz kódok ítélhetnek meg? Tehát az is, hogy már használt és berohant, azt mondanám, hogy igen. Így már biztosan látott 200 OK, és előadásokat azt psets. Láttuk 403, 404. Mert más is? HANNAH BLUMBERG: Én mondjuk 500 tűnik tisztességes játék. MÁRIA ZLATKOVA: 500, igen. HANNAH BLUMBERG: Igen. Csak egy általános értelemben vett A mi okozza őket. És azt is csak ezek neveket, akkor milyen mint hogy egy tanult hiszem, mint hogy valójában mi okozta. Például mozgassa tartósan, valószínűleg a fájlt áthelyezték véglegesen. Közönség: De egy korábbi vizsga, volt egy olyan hogyan várják tőlünk, hogy válaszoljak? HANNAH BLUMBERG: Ez Megérte nulla pont. A kérdés az 418 a teáskanna technikailag egy HTTP státusz, de megérte a nulla pont. Nyilvánvaló, hogy nem te vagy elvárható, hogy tudja őket. Közönség: Ez egy igazi? HANNAH BLUMBERG: Igazi egy, de ez nem jelent semmit. Ez csak egy vicc. Internet emberek vicces. MÁRIA ZLATKOVA: Nagy kérdés, srácok. Más kérdés? Közönség: Mi a belső szerver hiba? MÁRIA ZLATKOVA: Belső server error csak azt jelenti, hogy már tud kommunikálni A szerver valamiért. Tehát ez nem feltétlenül valamit, hogy köze az ügyfél, vagy valami ilyesmi. Nem tudom, hogy bármilyen konkrét példát hogy eljutottunk addig több mint elmagyarázni, de igen. HANNAH BLUMBERG: Persze. Így például, mint mondjuk mondjuk dolgoztál mashup és a Google szerver lement néhány Ezért egy áramszünet, mondjuk. Ez lenne egy belső szerver hiba vagy valamilyen of-- kedvellek nem kapunk választ vissza. MÁRIA ZLATKOVA: Igen. Csak ha éppen tud kommunikálni A szerver valamiért, mert Az, hogy megy le, vagy valamilyen más okból. Így beugrott a PHP. PHP, HTML eltérően, egy programozási nyelv. És elkezdtük használni, mert ez Nagyon hasznos webfejlesztés. Mi először használta a CS50 pénzügyminiszter. És alapvetően segít nekünk a együtt ez a jelölés, a tervezés, és hogyan is használják az információs megjelenítéséhez dolgokat egy weboldalon. Tehát a PHP maga jelenti PHP Hipertext feldolgozó, így ez egy rekurzív backnorym magától. És nyitó tag PHP mi a bal és jobb nyilak a kérdőjelek és php. Tehát már láttam egy csomó belőle. Most, mi csak fog menni fölött néhány alapvető dolgot róla. Összességében a PHP a változó kezdőbetűjét, dollár jel. Mi nem adja, ismét, változó írja többé. Csakúgy, mint tettük C, nem kell csinálni. Tehetünk egy csomó különböző cucc változók. Mi lehet összerakni őket a összefűző őket A dot jelölést, amely nem tudtunk csinálni a C újra. Ismét van egy kicsit több sokoldalúságot PHP szempontjából változók. Ismét, nincs egy fő funkciója. És PHP értelmezett szemben összeállított, Hogy mennyire tudtuk, hogy a C-fájlokat, nem kell tennie, hogy a PHP. Hanem az is, hogy a nyelv működteti magát, akkor azt úgy értelmezzük. És majd lazán gépelt Csak azt jelenti, hogy Nem kell megadni egy változót típusa és a változó típusok érteni a futás során. Közönség: Hát mit jelenti dot összefűzés? MÁRIA ZLATKOVA: Persze. Ha azt akarjuk, hogy a dolgokat together-- így ha volt néhány változó, volt a 3-as és mi volt a másik változó, ami volt az értéke karakterlánc, tudnánk tenni a változókat azáltal, hogy egy pont között és összefűzése őket. Vagy tudnánk létrehozni egy nevű változó nevét és tedd össze összefűző két húr. Tehát, ha lenne egy húr kétágyas idézetek és rakjuk egy pont után, és akkor még egy húr, hogy hozna létre egy string összesen. Közönség: OK. MÁRIA Lettország: Volt, hogy törölje? Közönség: Igen. MÁRIA ZLATKOVA: OK. Igen. Közönség: Amikor azt mondod értelmezni, nem pedig össze, Miről beszél akkor nem kell lennie, mint specifikus, amikor jön a PHP Versus C? MÁRIA ZLATKOVA: Amikor azt mondjuk, értelmezni, szemben összeállított, mit is jelent? Tehát ez azt jelenti, hogy nem kell futtatható fájlokat a PHP futtatására. Ez azt jelenti, hogy fut, mint megy. Ennek van értelme? Egy kicsit több. HANNAH BLUMBERG: Szóval lehet gondolni tolmács mint egy másik program, amely felelős megy soronként PHP-n keresztül és valóban futtatása, szemben összeállításában az egészet le bináris. Ez valójában nem jelent semmit hogyan egyedi kell lennünk. Továbbra is szükségünk van, hogy pontos, és nem elfelejtette a pontosvessző, és győződjön meg róla, Van a dollár jelet, és hasonló dolgok. Jó kérdés. MÁRIA ZLATKOVA: Igen. Tehát sorról sorra, mint szemben a C-fájlok, van, hogy az egész döntő mielőtt ténylegesen futtatni. Ez a fő különbség. De ismétlem, nem tudjuk Tényleg kevésbé pontos. Tehát tömbök PHP képviseli valójában egy megrendelt térkép. Tehát tömbök társult értékek kulcsokat. A két módon, hogy állapítsa meg tömb, ennek alapján szintaxist, mi lehet explicit amikor azt mondja, hogy van egy tömbben és itt van ez a KEY1, hogy a térképeket ez ertek1, KEY2, hogy a térképeket value2. Vagy mi csak létrehozunk egy tömböt értékeket tartalmazó maga majd a gombok értetődő módon. Kapcsolatos kérdéseket a következő? Közönség: Mi lenne a kulcsokat lennie a második példában? 0, 1, 2, 3? MÁRIA ZLATKOVA: Például, ez csak A kulcsokat ebben nem feltétlenül változtatni. Ők csak határozza meg, hogyan tudsz használja az értékeket belsejébe. Tehát, ha lenne egy foreach hurok a PHP, amely lehetővé teszi számunkra, hogy menjen végig az értékeket, mehetünk végig az értékeket, akkor is, ha kellett, vagy nem adta meg egy adott gomb a weboldalad előző szintaxis. Tehát még ezt a fajta A tömb, akkor még mindig Van egy foreach ciklus hogy megy keresztül minden Az értékek a kulcsot a tömbben. Szóval a szintaxis egy foreach hurok, kezdjük egy tömbben. Ez a $ tomb változó a tényleges tömb hogy mi határozza meg az előző dia mint érték, szó szerint megy keresztül minden az értékek, az időjárás ellenére mi volt a kulcs, vagy sem. És akkor tehetünk valamit értékének belül a foreach ciklus. Tehát újra, ha volna egy tömböt mint ez itt created-- így már a kulcsot az ize és értéke bár, a legfontosabb BAZ és értékét qux-- mi lehet egy foreach ciklus, hogy megy keresztül tömb legfontosabb érték majd csinálni valamit A kulcs és / vagy értéke. De mi nem feltétlenül mindig Van, hogy egy foreach hurok, amely megy keresztül tömb kulcsa térképre értéket. Mi mehet át a foreach ciklus tömb értékét. HANNAH BLUMBERG: És azt hiszem, alábbiakra: volt a kérdés, hogy mi a közvetett mutató? Közönség: Kinda. MÁRIA ZLATKOVA: Oh. HANNAH BLUMBERG: Igen, igen. Tehát alapvetően, ha nem adja meg kulcsfontosságú, hogy lesz 01. MÁRIA ZLATKOVA: Igen. Csakúgy, mint a C, az nulla indexelt, ha nem adja meg a kulcsot. Közönség: Sajnálom. Tudna próbálja beszél egy kicsit hangosabban? Én magam egy kicsit Nehezen hallja mindent. MÁRIA ZLATKOVA: Annyira sajnálom. Ja persze. Szóval nem akarsz velem hogy át megint? Vagy this-- Közönség: Tehát az előző slide-- ha akkor csak menj vissza egy pillanatra. MÁRIA ZLATKOVA: Persze, sajnálom. Közönség: Tehát a második tömb itt nem Úgy tűnik, hogy egy értéket írjuk, fajta [? ok-okozati összefüggés. ?] MÁRIA ZLATKOVA: Jó, jó. Közönség: Tehát hogyan működik ez ha azt mondod, hogy minden vagy semmi. Számomra úgy néz ki, mint a Egy [? ize?] már. MÁRIA ZLATKOVA: Igen, igen. Tehát újra, ez egy elrendelte térképen ebben az értelemben hogy ott értendők, például, az indexek itt lehet érteni, mint a 0, 1, 2, 3. Ismét, ez amelyek ezeket indexek a mi egyenértékű annak, gombok leképezve értékeket. Tehát, ha mi a legfontosabb az volt 0-- sajnálom. HANNAH BLUMBERG: Nem, Van elér ide. Ez tényleg nagyon szép. MÁRIA ZLATKOVA: Ez nagyszerű. OKÉ. Tehát még egyszer: $ tomb 0 lenne A kulcs az 1-es érték. 0 lenne a kulcs értéke 1. Közönség: Sajnálom. Ez láthatatlan. HANNAH BLUMBERG: Rendben, mindegy. Kréta rossz ötlet volt. Én vegye vissza. Akkor gondolom, a gombok 0-térképek az 1-es érték. MÁRIA ZLATKOVA: Igen. Tehát ez 0, ez 1, 2, 3. Ezek lehetnek a kulcsok. Akkor gondolom, ezek as-- igen. Tehát ahelyett, explicit kulcsok, ők fajta érteni Az indexek 0-nál kezdődik. A kréta nem segített. Igen. Közönség: A foreach ciklus, ha azt akartuk, hogy megtekinthesse a értékként, ez csak automatikusan indexet 0? MÁRIA ZLATKOVA: Igen. Ez megy végig az értékeket. Közönség: [hallható], mint 0 vagy azt, hogy csak nem 0? MÁRIA ZLATKOVA: Meg kellett volna mondani, mint dollár jel, majd Néhány változó neve, értéke. Közönség: [hallható]. MÁRIA ZLATKOVA: Sajnáljuk? Közönség: Bocs, én vagyok csak próbál emlékezni. Hogyan tennéd, ha meg tudod csinálni automatikusan indexelés csak 0? MÁRIA ZLATKOVA: Tehát hogyan tennéd ezt ha nem rendelkeztek konkrét kulcsneveket? Közönség: Igen. MÁRIA ZLATKOVA: akkor csak define-- csak azt mondom magának, mint néhány nevet. Tehát a psets, srácok talán emlékszem foreach $ row, mint $ sor, hoztunk létre magunkat, ezt mondván: $ row akarjuk, hogy menjen át sorban, mint $ sor. Annak ellenére, hogy nem volt ennek explicit $ sorok meghatározott, tudtunk csak megy, és azt mondják, ez lehet a kulcs, és csak megy végig az értékeket. Közönség: Így van értéke egy új változó hozunk létre, hogy tárolja [hallhatatlan]? MÁRIA ZLATKOVA: Tehát ez nem eredendően egy új változó. Ez egy változó, amely utal a belsejében a tömbben, hogy mindegyikre. HANNAH BLUMBERG: Ez az új változó nevét. MÁRIA ZLATKOVA: Igen, ez az új változó nevét, de ez nem inherently-- igen. Ez csak egy új változó hogy meg tudod csinálni ezt. Hogy mennyire nem csináltunk $ row, mint $ sorok, sorok volt az új változó nevét, hogy mi okozhat a mi foreach ciklus. Nem kell preexist előtt. Közönség: Tudna valaki átmegy a logika minden, a példa van? MÁRIA ZLATKOVA: Mhm. Oh Bocsánat. Íme a példa. Persze. Tehát minden array-- így ez azt jelenti, megy ebben a tömbben kulcsfontosságú value-- hogy fog hogy min megy keresztül a tömb és az első menni, és kap ize, a kulcs ize és értékét bárban. És akkor a második iterációs a for ciklus, ez fog átmenni, és vegye A kulcs BAZ és értékét qux. És akkor meg tudod csinálni valamit egyikük vagy mindkettő. Közönség: Szóval az ötlet mögött amelynek sarkalatos pontja az értéket, Mit végén betekintés? MÁRIA ZLATKOVA: Mi az ötletet Az, hogy kulcsszerepe mutató érték? Ez is csak egy egyezményt, egy másik módja megy át a tömböt és hogy képes elérni sem a kulcs vagy érték, vagy mindkettő, és használja őket. Közönség: Mi a szerepe a elrendelheti a foreach fut? Tehát ha mi voltunk hozzá elemeket a tömb később, lenne azoknak az elsők hívják a foreach tömb, Vagy lenne később? MÁRIA ZLATKOVA: Tehát mi A rend, hogy a foreach hurok átmegy egy tömböt? Ez megy keresztül az első elem az utolsó elem, az utolsó hozzáadott elemet. Ha hozzá elemeket később, ők kell accessed-- első eleme lenne érhető el, mint az első elemek a tömb, és akkor mennék végig az összes Az elemek fajta egy ordered-- nem rendezett, hanem az is, hogy ők hoztak be a tömbben. Közönség: Tehát az új elemek adunk a későbbiekben? Tehát ők added-- lesznek a Utóbbiak a [? ismétlés. ?] MÁRIA ZLATKOVA: Új elemek can-- Alapvetően, ha új elemmel egészül ki, meg vannak hozzáadva, hogy a végén a tömb? Közönség: Igen. MÁRIA ZLATKOVA: Azt hiszem, igen. Igen. És majd a foreach ciklus, miután új elemeket és megy rajtuk keresztül, Az új elemek lenne legyen accessed-- az új elem, ha ez hozzáadott utolsó, akkor lehet hozzáférni az utolsó. Közönség: Lehet csak egy példát valami, ami [hallhatatlan] valami értékkel mint a [hallhatatlan] vagy értéke, mint azt, hogyan lenne formázni, hogy? MÁRIA ZLATKOVA: Persze. Tudok adni egy példa, amit tennénk az érték? Tehát amit a srácok ismerős lehet az, hogy már ment keresztül egy tömböt és alapvetően nyomtatott egyes elemek, például, részeként egy rendezett lista vagy valami, ami. Van ennek értelme, vagy nem akarunk az alábbiakra: Közönség: Meg tudjuk nyomtatni ezeket az értékeket ki? MÁRIA ZLATKOVA: Igen, tudtuk nyomtatni majd lényegében $ ertek mert megadott érték, mi lenne nyomtatás értékét belsejébe. Tehát, ha mi voltunk az első iterációban belőle, és mi nyomtatott $ ertek, mi lenne, nyomtatás bárban. Közönség: Vannak olyan is ciklus a PHP vagy csak foreach hurok? MÁRIA ZLATKOVA: Van számára is ciklus a PHP. És azok logikája többnyire a ugyanaz, mint amit eddig használt. Közönség: Szóval értéke null. MÁRIA ZLATKOVA: Ez olyan, mint ugyanaz. Igen. Közönség: Én csak akartam kérdezni. Tehát, ha hirdessen tömb, akkor nem kell megmondani, hogy mekkora ez lesz lennie, ami azt jelenti, hogy ha csak hozzáadása és elvenni elemek [hallható]. MÁRIA ZLATKOVA: Ja. Aha. Pontosan. Amikor egy tömböt, amit Nem kell mondani, milyen méretű van, így tudjuk csak add elemek rá később is. További kérdések? Így hozza a PHP és HTML együtt, amit seen-- is, például, ebben a példában, van HTML formában, amely egy beviteli mező. És a beviteli mezőbe csak nevet és akkor van egy Submit gombra. És ha megnyomja a Küldés gombot, a mi hello.php fájlt, mert a módszer a forma kap, akkor érheti el mindent, ami a nevét Az e kapni globális változó, hogy is-- a szintaxis ez $ _GET. És akkor érheti el, amit a felhasználói belsejét, hogy formában név nevének megadásával az ezen a területen. Más kérdés, vagy bármely kérdésre a konkrét példát? Közönség: Hol van a PHP? MÁRIA ZLATKOVA: Itt. Szóval ez a mi nyitó tag a PHP. Közönség: Ó, igen. MÁRIA ZLATKOVA: Igen. HANNAH BLUMBERG: A = a rövidítés Ennek az a PHP és csak visszhang. Közönség: Ó. MÁRIA ZLATKOVA: Ja, bocs. Azt kellett volna, hogy világos. HANNAH BLUMBERG: Nyomtatás. MÁRIA ZLATKOVA: Ez csak a függvény amely lehetővé teszi számunkra, hogy nyomtassa valamit. Nagy kérdés. Szóval going-- igen. Közönség: Van-e lesz elég egy kis kézi kódolás PHP és HTML kvízkérdések 1? MÁRIA ZLATKOVA: Nem lehet egy méltányos összeg értelmezése A PHP és a HTML, nem feltétlenül mint egy hatalmas mennyiségű kódolás, bár lehet, hogy levelet foreach ciklus, bár egy ciklusban. Bármilyen a hurkok, hogy mi fedezésére itt tisztességes játékot. És ez többnyire azt. HANNAH BLUMBERG: Én kész lenne. Ugyanígy kértük, hogy levelet csomó C függvények kvíz 0, Lennék kész a ugyanazon a PHP és a JavaScript. MÁRIA ZLATKOVA: Igen. HANNAH BLUMBERG: Azt mondanám, Egy little--, mint mi nem vagyunk megy, hogy ha írunk egy hatalmas HTML Oldal csak azért, mert ez egy kicsit unalmas, de lehet, hogy alkatrészeket. Ezt teljesen tisztességes játék. Mint a kis HTML oldal, teljesen tárgyilagos. Közönség: OK. Mit szólnál a JavaScript is? HANNAH BLUMBERG: Igen. JavaScript tisztességes játék. MÁRIA ZLATKOVA: Igen. Ez teljesen tisztességes játék. HANNAH BLUMBERG: Veszünk hogy, hogy, mint 10 perc alatt. MÁRIA ZLATKOVA: SQL, megint, Structured Query Language. Ez alapvetően lehetővé teszi számunkra, hogy kezelni adatok relációs adatbázis-kezelő rendszer. Hogy alapvetően csak azt jelenti, hogy van valahol tárolni néhány adat, amit érdemes használni egy weboldalon vagy valamilyen más formában. És akkor mi van lekérdezések kap információt adatbázisunkban, vagy beszúrni információ alapján. Sok a közös ones-- UPDATE, INSERT, select és delete. Tehát UPDATE, ez a szintaxis frissítésére adatok egy adatbázisban. Frissítésével nevű táblába asztal, mondván SET, tudjuk meg néhány szereplő értékek sorok egyenlő valami mást. Így is megadhatja, néhány konkrét bejegyzéseket szeretnénk módosítani és hogy lehet ehhez, ahol. És tudjuk meg, hogy mi csak szeretnénk módosíthatja egyes sorokban, ahol a ház, ha lenne egy táblázatot a diákok és az összes diák volt ház, így csak módosítani néhány érték ha egy ház értéke Currier, például. INSERT írhatjuk be bizonyos értékeket táblázatba. Tehát INSERT INTO asztal, majd az értékeket, majd zárójelben, csak megadjuk milyen értékeket beszúrni kívánt. Tehát INSERT INTO asztal, col1 és KOL2, az érték ért1 és ért2. Tehát ez szúr alapvetően egy új sort egy táblázat, amely tartalmazza a értékeket az 1. és 2. alatt az 1. és 2. oszlopból. És akkor mi lesz, hogy menjen át egy gyors példa arra, hogy ez úgy néz ki mint az adatbázisunkban egy kicsit. De ez az utolsó lekérdezés, hogy én hiszem, fogunk, hogy menjen át, SELECT, csak lehetővé teszi számunkra, válassza ki adatokat egy táblázat hogy esetleg használni utána. És ahogy mi ez azt Csak tegye el néhány változó. És akkor lehet esetleg újra használni. Tehát SELECT csillag azt jelenti, jelölje ki az összes. Ez csak egy rövidített kiválasztására minden. Táblázatból HOL, keresünk néhány konkrét feltételeket, Szóval, ha oszlop értéke valami, például. Ha csak azt akartam, hogy jelölje ki az összes táblázatból, ez csak kiválasztja az összes oszlopot és minden sort egy táblázatból. Majd törölje táblázatból HOL col egyenlő valamit, Ez csak néhány törli sort az asztalunkra ahol van néhány különleges feltételeket. Ebben az esetben a feltételek vannak oszlop egyenlő valamit. Szóval csak egy gyors példa erre. Ha megvan ez a táblázat itt, és mi helyezze egy asztalra, ezeket az értékeket, amely helyezzen be egy új sort. És ha lenne auto-növekmény, ez Csak növekmény mi azonosítót 0-1 2-re. Ha kiválasztottuk az összes diákoktól, hogy Csak visszatér minden területen és minden sort. Hol évre nagyobb vagy egyenlő, mint 2016- ami csak vissza Hannah és én. És akkor, ha csak a kijelölt év id év diákoktól hol van a ház Cabot House, amely lenne, ismét visszatér Hannah és én. Aztán ha törlik a diákok ahol név egyenlő Rob, hogy eltörölné az egész sort. És akkor, ha mi meg a nevet, UPDATE diákok SET név megegyezik Daven Ahol House egyenlő Cabot House, hogy fog menni azokat a sorokat, majd frissíti a nevet. Majd néhány SQL adattípusok CHAR, VARCHAR, INT, és úszó. Ezek a tisztességes játék. Mennék újra és győződjön meg róla, és azokat a puskát, mi minden karakterre óta használják, milyen Ön használta őket a psets, és győződjön meg róla, hogy ismeri és kényelmes kelljen választani A különböző adattípusok a PSET. Igen. Közönség: Mi volt az asztalnál tárolt? Ja, hol van ez a táblázat tárolt? MÁRIA ZLATKOVA: Nos, most, ez nem tárolja. Különben is, hol van ez a táblázat tárolt? De lehet tárolni egy SQL adatbázisba. Közönség: És hol van az SQL adatbázis? A számítógép, az online Valahol, a szerver? MÁRIA ZLATKOVA: Ez lehet egy számos különböző dolog. HANNAH BLUMBERG: Már összekapcsolható SQL táblák többnyire phpMyAdmin. Így lehet kérni a szerveren tárolni őket nekünk. Mi lehet tárolni őket a saját számítógépre. MÁRIA ZLATKOVA: Ez csak attól függ hogyan szeretné csináld magad. De mi már tárolása őket, mint Hannah említettük, A phpMyAdmin, ami az interneten. És akkor hogyan használjuk PHP és SQL, tároljuk a néhány változót mi már kérdezett. Tehát, ha kiválasztjuk a történelemből ahol user_id megegyezik a session id, amely kijelöli az összes sorok az adott személy, aki bejelentkezett a történelem asztal és rendezheti sor. A hűvös dolog tudni, hogy CS50 lekérdezés funkció véd SQL injection tag. Ez csak azt jelenti, hogy biztosítja A bemeneti beírt helyes és hogy az a személy, aki belép a bemeneti nem próbál bemeneti néhány rosszindulatú kódot vagy csökken az asztalunkra vagy törölni mindent belsejében adatbázisunkban. Egy gyors áttekintés a Az MVC modell ez csak egy módja a szervező és gondolkodás kódot. Ez megint egy tervezési paradigma. Ez azt jelenti, hogy can-- és ez jó gyakorlatok külön különböző részein a mi kódot, és mit ellenőrizzék a három paradigma. Tehát véleményünk szerint a leggyakrabban a sablonok, mi elrendezés, ahogyan hogy mi meg hogyan kódom. Ez többnyire a CSS fájlok és az út hogy mi határozza meg a design a mi kódot, alapvetően. A vezérlő többnyire mi mi már ennek a PHP fájlokat. Szóval megint dolgozik a információ, hogy mi van és meghatározza, hogy hogyan információt használjuk, majd halad az információkat vagy rá a néző vagy a modell. És a modell a módja, hogy már már használ már adatbázisunkban, Szóval, ha információink úgy kell tárolni, hogy van valahol élni, és bármely, a kód, amely kapcsolódik az utat hogy megkapjuk ezt az információt, vagy a módon, hogy frissíti az információkat. Tehát az MVC modellt, HTTP kéréseket a web szerver. Ezután a vezérlő értelmezi A kérelmet a felhasználó majd érvényesíti a felhasználótól. Ez nem kötelező, hogy van A vezérlő kommunikálni egy modell, így valamit mint adatbázisunkban vagy valamilyen más alkalmassága közvetíti információkat. És végül, a vezérlő átadja az információt az nézetet úgy, hogy lehet kiolvasztott és hogy képes láthatóvá válnak az olyan személy, Az internethez való hozzáférésért oldalon. Bármi kérdés? Fantasztikus. Tehát ismét a modell, funkcióját, újra, perzisztens információk tárolására, kezeléséről és rendezéséről adatokat. És amit láttunk, így messze van a MySQL adatbázis és adatfájlokat használatára jogosult. Nézd meg, jelennek meg információk a a felhasználó, a felhasználói felület, vagy a felhasználói felület. És a példa erre a HTML. És akkor talán van minimális PHP. Tehát egy for ciklus végigmegy, hogy mint az adatok, amelyek kinyomtathatók része a nézet, mint szemben a vezérlő. És akkor sok a PHP fájlok esnek a vezérlő kategóriában. Csak kezeli a felhasználói kérések és kap információt a modellből. Beugrott a dokumentum Object Model, ez csak utal, hogy ahogy a HTML Dokumentumok szerveznek. És ők szerveztek egy fa szerkezet, hogy van egy hierarchia. Tehát, ha van, hogy [hallhatatlan] képviselete a dokumentumot, tudunk dolgozni a dokumentumot, mint a mi manipulálni tárgyakat alapvetően. És, hogy ez egy kicsit világosabb, ha van egy csomó mi különböző címkék reagálnak a különböző útvonalakon a mi fán. És akkor ebben a példában, mi Van a kiindulási dokumentum csomópontot. Van, majd a HTML-csomópont hogy hasad fej és a test. Fej címet, majd cím tartalmazza hello, világ. És a testünk csak tartalmaz hello, világ is. Így bármilyen kérdése van bármely dolgok, amiket eddig megtett? És ha nem, Hannah lesz átvenni a JavaScript. Fantasztikus. HANNAH BLUMBERG: OK, hűvös. Ha bármi jön fel a PHP vagy HTML, vagy a cucc Maria fedett, mi mindig szünet. Csinálunk jobban újra, annyira félelmetes. És csak, hogy menjen vissza nagyon gyorsan, hogy ezt, ha megnézi minden elmúlt év vizsga, ennek feljön either-- itt Egyes HTML, hogy ez a rajz. Vagy itt van ez a rajz, hogy néhány HTML, így biztosan gyakorolni ezt. És akkor ez egy garantált kérdés, hogy lehet kapni jobb. Hűvös. Szóval beszéljünk JavaScript és hogyan ez egy kicsit eltér nyelvek, mint a PHP és C, a két nyelv láttuk előre. Tehát számú, ez lazán gépelt. Azaz, mint a PHP, de ellentétben C. Ez egy értelmezett nyelv. Ismét, ez tetszik PHP, ellentétben C. És ez fog engedje meg, hogy ez use-- működik igazán szépen weboldalakat. Meg fog lehetővé teszi számunkra, hogy manipulálni A tartalom és hogyan néz ki és mit csinál. Fogunk látni egy kicsit Ajax. Ez lehetővé teszi számunkra, hogy kommunikálni aszinkron különböző szerverek és kap információt. És ez az a dolog, ami igazán elválasztja a JavaScript PHP és C az, hogy az ügyfél-oldali. A PHP és C tipikusan szerver oldali. A legtöbb és szinte teljes egészében mi láttunk, legalábbis Ebben az osztályban a JavaScript hat kliens oldali, ami azt jelenti, hogy a böngésző valójában felelős fut. És ez azt jelenti, hogy mi nem kell, hogy befolyásolja a szerver. Tehát ez azt jelenti, hogy sokkal gyorsabb mert ez valójában csak ez Chrome, ez a Safari, ez Firefox, amit használja ténylegesen fut a JavaScript. Közönség: Mit jelent aszinkron jelent? HANNAH BLUMBERG: Ah, milyen nem aszinkron jelent? Nagy kérdés. Aszinkron means-- Nos, a tartalom, amely használjuk azt, OK, létrehoz egy weboldalt és meg kell, hogy bizonyos információkat. Tehát a példa a mashup, Néhány információ, hogy mi érdemes a cikk címe. Most could-- egy lehetőség is kell csinálni szinkron és ez azt jelenti nézzük megállítani, megy kap a cikket, kap a cikket vissza, majd render, de ez lenne a nagyon lassú. Ez lenne a rossz felhasználói élményt mert akkor csak ül ott vár valamit válaszolni. Aszinkron jelenti fogunk tovább folyik a mi üzleti, az oldal megjelenítését, valamint küldünk ki kérés Ez a fajta a fog a háttérben történnek. Azt hiszem, használja a példa Előadás a hívó Rob, és azt mondja, Hé, megnézi ezt fel nekem, és kap vissza hozzám, szemben a csak nekem várva a telefonon. Tehát aszinkron jelent ez történik A háttérben tőlünk párhuzamosan. Nagy kérdés. Akármi más? Nagy. Majd ugorj sokkal inkább aszinkron kérések Ajax. Közönség: Vajon JavaScript-- hol van hogy esik a modell-nézet-vezérlő? HANNAH BLUMBERG: Nagy kérdés. Hol JavaScript bukása A modell-nézet-vezérlő? Hm. Azt hiszem, ez fall-- így általában nem szeretném giccs azt, hogy paradigma, de azt hiszem, azt mondanám, OK, így JavaScript valóban megy, hogy számunkra, hogy adatokat gyűjtsön, értelmezni az adatokat, amik valójában értelmes dolgokat az adatokat. Ebben az értelemben, ez nagyon ellenőrző-szerű. De ez is megy, hogy nekünk jelenítse meg és nyomtatási dolgokat. Ebben az értelemben, ez nagyon nézet-szerű. Igen. Szóval ez olyan, mint a PHP- akkor, ha ezt a fajta egyaránt. Jó kérdés. Akármi más? Rendben, félelmetes. Mozgó végig. Nézzük egy példát hogyan tudjuk használni JavaScript az egyik a webes programok. Úgyhogy úgy ezt index.html egy csomó HTML. És a dolog, azt akarom, összpontosítani ez script tag. És ez azt mondja, OK, szeretnék futtatni néhány JavaScript és itt van, ahol él. Ez él hello.js. És nagyon hasonlít CSS, tudtuk tedd JavaScript belül a HTML. Miért lenne azt akarjuk, hogy külön ki? Igen. Közönség: Könnyebb átírni? HANNAH BLUMBERG: Igen. Könnyebb használni az egész különböző weboldalakat. Úgy tartja a dolgokat tisztább. Ez csak a helyes gyakorlatot. Fantasztikus. Jó válasz. Így jó, így ez lesz hogy mi index.html. És akkor itt lent van a apró JavaScript fájlt. És azt mondja, éber Helló, világ. Tehát mi történik, ha Az oldal renders-- így ha elmész bármilyen honlapon ez is-- minden, ami történni fog A ez fog mondani, OK, én vagyok fog futni ezen a JavaScript kódot. És ez a JavaScript kódot Csak azt mondja figyelmeztető Helló, világ. Így fogok, hogy ezt barátságos kis pop-up. Hűvös? Ez olyan, mint a legelső JavaScript programot, a Helló, világ. Nézzünk egy kicsit arról, hogy mi A szintaxis a JavaScript néz ki. És konkrétan, hadd hasonlítsa össze a C és a PHP, amit eddig láttam. A JavaScript fogunk van var, a változó nevét, majd annak aktuális értékét. És mi nem adja meg a típusát, csak mint a PHP, de nagyon eltérően C. Így például, ha akarnánk az érték tárolásához 50, C, mi lett volna azt mondani, hé, C, szeretnék egy egész szám, Megyek hívom i, és az értéke 50. A PHP, ez egy kicsit könnyebb. Azt mondjuk, hé, szeretnék egy változót az i értéke pedig 50. Nagyon hasonlóan, JavaScript, mi mondom hé, szeretnék egy változó az i, ennek értéke 50. Minden további időpontban, amit használni Én, én nem kell írni var. Ez csak azt onnantól kezdve. Ugyanígy, C, ahol Egyszer azt mondjuk int i, csak használja azt. Hűvös? Minden rendben. Áttérve a hurkok, Szerencsére, ezek szinte nézd exactly-- Azt hiszem, pontosan ugyanaz, mint amit hurkokat fog kinézni olyasmi, mint C, ahol a hurok megy, hogy három parts-- egy kiindulási, olyan állapot, és a frissítés. A while ciklus, úgy néz ki, hogy pontosan ugyanaz. Csak hogy ez egy állapot. És a do while ciklus, ismét, pontosan ugyanaz. Mi ad ez egy állapot. Mondjuk akartam hajtogat over-- Tenni akartam valamit ötször. A C-ben, megírhassuk Az init i értéke 0. i kisebb, mint 5, i ++. Egyetlen különbség, JavaScript, ahelyett, hogy int i értéke 0, mondjuk var i értéke 0. Gyönyörű. Ez az egyetlen különbség. Bármilyen kérdése van ezzel? Igen. Közönség: Tehát a PHP, ez ugyanaz dolog, kivéve, de mint egy változó? Vagy az volt, hogy a var példa? HANNAH BLUMBERG: Igen. Tehát a PHP, ez lesz hogy egy dollár jel. Szóval ez lesz a $ i értéke 0, $ i kevesebb, mint 5, $ i ++. Nagy kérdés. Most beszéljünk funkciót nyilatkozatok. A C-ben, amikor nyilvánították funkciót, adtunk neki egy nevet és adtunk neki néhány paraméter. És az elején írtuk ezt a típust. A JavaScript, minden, amit kell tennie, hogy levelet function kulcsszó, hogy mondja, hé, JavaScript, Én azon vagyok, hogy egy függvény definiálása. Ebben az esetben, azt név összeget. És ez két paramétert, x és y. Figyeljük meg, hogy mi nem érdekel a típusú x és y. És csakúgy, mint a C, van ez a kulcsszó vissza, így nem tehetünk valamit mint a visszatérés az x és y. És most egyszerre is írtam ezt az első funkciót, tudjuk használni összeget bárhol. És ez teljesen rendben van. Egy nagyon klassz dolog JavaScript, hogy nagyon eltérően C az, hogy a funkciók kell kezelni, mint értékeket. Így tudunk tenni valamit, mint itt ahol azt hiszem fedezni ezt up-- Én fedezett fel a var összege part-- és mi csak azt mondta, funkciót xy egyenlő visszatérő x plus y. Ez az, amit neveznék egy névtelen függvényt. Ez egy függvény név nélkül. Mivel ez azt mondja funkció Összegezve, bla, bla, bla, ez csak azt a funkciót. De most bár én ez a névtelen függvényt, ez a funkció tényleg csak egy értéket. Mi lehet kezelni, mint egy értéket. Így tudjuk menteni egy változóban azonos módon tudunk tárolni 50 változó. Így elmondhatjuk, OK, szeretnék egy változó, úgy hívják összeget, és ez a funkció. Tehát ez a két dolog valójában fog csinálni pontosan ugyanaz a dolog, de a szintaxis egy kicsit más, és egyfajta szórakozás veszi. Igen. Közönség: Szóval lehet hívni funkciót, hogy névtelen volt, mondván, összeg zárójelben 2, 5? HANNAH BLUMBERG: Igen. Hívhatjuk ezt a névtelen funkció azonos módon. Tennéd összege (2, 5) ;. Ez lenne teljesen rendben. Ha nem tettem var összeg eléri funkciót, ha én csak hagyni this-- Tudom, hogy ez a kezem, de úgy, mintha én törölte this-- majd Ennek a funkciónak a fajta csak elment. Akkor ne használja újra, mert Önnek nincs nevét. Nehéz valamire hivatkozhatnak nem tudod, mit kell hívni. Jó kérdés. Igen. Közönség: Tud referencia összeg Más helyeken az x értéke plusz y? HANNAH BLUMBERG: Tud hivatkozási összeget más helyeken melynek értéke x plus y? Nem vagyok teljesen biztos benne, mire gondol. Közönség: Tehát a már félig anonim funkció összege egyenlő ezt névtelen függvényt, így az összeg Most egy változó, hogy can-- HANNAH BLUMBERG: Így van. Tehát az összeg változó, de ez actually-- így az összeg egy változó, amelynek érték a funkciót. Tehát ez egy olyan funkció, ami elég Furcsa dolog, hogy tekerje a fejét hiszen játszottunk az C és nem tudod, hogy a C. De most már hívhatjuk összefoglalni a ugyanúgy nevezhetnénk az összeget itt. Közönség: OK. HANNAH BLUMBERG: Igen. Jó kérdés. Igen. Közönség: Tehát nem használja a prototípusok PHP vagy JavaScript? HANNAH BLUMBERG: Nem, Nem kell használni prototípusok, különösen a JavaScript. Tehát az egyik rossz gyakorlatot dolog, hogy én vagyok azt fogja mondani, hogy nem szabad csinálni az, akkor nem kell írni var i = 50. Lehet csak kezdeni ezzel i = 50. És csak azt, hogy én egy globális változót. Ez nagyon rossz gyakorlat Soha nem mondom explicity var i, de ez valami, amit tehetünk. A tolmács nem fog kiabálni veled. JavaScript elég hasonlók, Azt csinálsz, amit akarsz. Oh Bocsánat. Van két. A narancssárga nadrágot. Előre. Közönség: Nem, te menj először. Közönség: Nem, én csak azt mondom Nekem nem volt a kezem. OKÉ. Tehát, ha úgy döntesz, hogy hívja hogy első alkalommal, most összefoglalni, hívjuk ugyanúgy, x, y, mint minden egyes alkalommal? HANNAH BLUMBERG: Igen. Tehát ez a két alapvetően nem ugyanaz a dolog. Közönség: És mi az előnye használatának egyik vagy a másik? HANNAH BLUMBERG: Nincs előnye használatának egyik vagy a másik. Csak azt akartam megmutatni, két különböző darab szintaxis. Sokszor, ahol anonim funkciók van egy célja az, ha az az érv, hogy egy másik funkciót kell egy funkció. És látni fogjuk, hogy a Csak egy pillanat az Ajax. Tehát, ha ez nem semmi értelme, tárolja a hátán a fejét. Ez az, ahol egy névtelen funkció hasznos lehet mert nem igazán érdemes így ez egy nevet, mert mi csak fogja használni egyszerre. Igen. Közönség: Ha x és y változás később a, összegzi is változni? HANNAH BLUMBERG: ha X és Y változás Később, összefoglalót is változni? Tehát ez valójában azt úgy gondolja, valamit, ami, újra, ez csak úgy érzi, nagyon különböző C. Ez nem egy érték. Ez nem 5. Ez csak a funkciót is. Tehát amint adsz paraméterek, akkor lesz valóban értékének kiszámításához. MÁRIA ZLATKOVA: És akkor akkor hívja a funkciót és használni, hogy valamilyen értéket. HANNAH BLUMBERG: Így van. Pontosan. Igen. Közönség: Tehát, ha csak tárolja a változó, mint a var x = összeg két values-- HANNAH BLUMBERG: Igen. Szóval lehet csak nem var összege egyenlő összeget két érték. Igen. Más kérdés? Igen. Közönség: De vajon, hogy megzavarja összeg és összege? Mint ha hívja a változó összeget, azt a függvényt összeget? HANNAH BLUMBERG: Mm. Mm. Ha volt valami mint, összeg eléri összege 2, 5? Közönség: Igen. HANNAH BLUMBERG: Úgy gondolom, hogy Ez felülírja a sum változó értéke. Tehát egy másik érdekes dolog JavaScript az, hogy egyetlen változó vehet egy csomó különböző típusú. Rossz megoldás. Nem kellene valamit csinálni mint amit az imént mondott. De a C, ha be van állítva egyenlő egész szám, tudjuk, hogy ez nem fog válni a húr. Ez nem így van a JavaScript. Igen, jó kérdés. Akármi más? Minden rendben. Jól megy az idő. Tartása megy. Minden rendben. Ha megnézzük egy tömböt JavaScript, itt Egy gyors példa egy tömböt. És tömbök dinamikusan növekszik. Ezek nem rendelkeznek fix méretű ugyanúgy hogy ők a C. tudjuk elérni a elemek csak a szögletes zárójelben. Hogy néz ki, mint a PHP és a sok mint a C, ahol azt mondhatjuk, ebben az esetben, ha akartam a szót JavaScript, megtenném nem arr szögletes zárójelben egy 0, 1, 2. És akkor, ha eszébe jut a C amikor akarta, hogy a hossza a tömb, ez nagyon idegesítő. De a JavaScript, szuper könnyű. Minden, amit csinálunk, .length. Adja a hossza. Ez az. Közönség: Ez nagyon egyszerű. HANNAH BLUMBERG: Igen, teszi az életed sokkal könnyebb. OK, object-- nem volt ott. Objektumok JavaScript érzést egy csomó, mint struktúrákat C-ben és asszociatív tömbök a PHP. Szóval mit láttunk Sok a JSON, amelyek áll a JavaScript Object Notation. És ez alapvetően egy módja A strukturálni adatok. Nézzük egy példát, talán a legegyszerűbb. Tehát itt egy példa egy objektum amely tárolja az osztály, CS50. És amikor azt mondom, osztály, úgy értem persze, Nem általam elvártnál igen, a tanfolyam, CS50. És látni fogod, hogy mindent az objektum lesz benne a zárójelek segítségével. És kezdjük társítani mezőnevek vagy gombokat a különböző értékeket. Így meg lehet kezdeni, hogy milyen ez a fajta Olyan, mintha egy asszociatív tömb PHP. Mi is így fogjuk bevonni a területen, vagy a gomb nevét, természetesen, a húr, CS50. Megyünk, hogy egy oktató. Megyünk, hogy TFs. Megyünk, hogy számos psets és megyünk, amit felvettünk. És egy klassz dolog megjegyezni, az összes Ezeket a dolgokat különböző típusú, és ez teljesen rendben van. Ez rendben van egy objektum, sőt, ez valószínűleg várhatóan egy objektum hogy egy kombinációs húrok és szám Logikai és tömbök és bármi mást, amit lehet szeretnénk, hogy a belsejében a tárgyat. És megjegyzem, hogy ezek lesznek A nevek vagy a kulcsokat, és aztán csak állítsa egyenlő egy kis vastagbélben. Közönség: Pontosan mit jelent a JSON jelent? HANNAH BLUMBERG: Mit Pontosan nem JSON jelent? JSON csak áll a JavaScript Object Notation. Ez csak egy módja a formázás. Igen. Ez egy módja a formázás adataink. A C-ben, ez struktúrákat. A PHP-ban ez az asszociatív tömböket. A JavaScript, van tárgyakat. Közönség: Szóval CS50 egy tárgyat? HANNAH BLUMBERG: CS50 van a tárgy ebben az esetben. Most, hogyan is ténylegesen elérhető Azokon a területeken, vagy változtatni ezeken a területeken. Tegyük fel például, úgy döntöttünk, hogy akartál eggyel kevesebb PSET ebben a félévben. Ahelyett, hogy kilenc vagyunk Csak megy, hogy nyolc. Hogyan tudnánk változtatni? Ó, rossz irányba. Két módon tudjuk csinálni. Számú a dot jelölés és a kettes számú ez a szögletes zárójel jelölést. Így például, ha I akarta változtatni vagy hozzáférési A psets területen a mi CS50 tárgy, én mit tennék a CS50.psets, így a neve a tárgy dot A mező nevét vagy a kulcs. Nagyon hasonlóan, ez pontosan egyenértékű csinálni CS50, majd szögletes zárójelben, psets. Hűvös? Igen. Közönség: Szóval az a JSON technikailag JavaScript még, annak ellenére, hogy a psets vagyunk külön ki [hallhatatlan]? HANNAH BLUMBERG: Persze. Tehát a kérdés az, hogy JavaScript és a JSON megfelelője? Tehát JSON jelölés, alapvetően az is, hogy írunk ki egy tárgyat a JavaScript. Tehát ők nem pontosan ugyanaz. Azt mondanám, JavaScript, ott objektumok a JavaScript. JSON veszi ezeket a tárgyakat, és nyomtatja ki őket, és megjeleníti őket vagy tárolja őket egy szép módon. Tehát JSON nem egy programozási nyelven az is, hogy a JavaScript van. Ez csak a jelölés a tárgyakat a JavaScript. Igen. Közönség: Tehát pontosan [Hallhatatlan] befejezni? HANNAH BLUMBERG: Persze. Tehát ez valójában nem csinál semmit. Ez csak egy módja annak, hogy hozzáférést. Tehát mondjuk akartunk változtatni A problémás szettek kilencről nyolcra. Amit mi csinálunk valamit csinálni mint CS50.psets = 8 ;. Igen, jó kérdés. Ez csak, hogy mutassa meg szintaxis. Valójában nem csinál semmit hasznos. Bármi kérdés? Mozgó végig. Tehát nézzük meg egy gyors példa arra, hogy JavaScript működik, mert Mondtam, hogy mindezeket a dolgokat, és hűvös lehetővé teszi számunkra, hogy módosítsa a weboldalakat. Nézzük valóban látni működés közben. Tehát vegyük például, ezt a HTML fájlt. És a dolog, azt akarom, hogy összpontosítson a ebben a konkrét címke, amely egy gomb, id search_button. Ez csak az oldalon. Tehát most lássuk, mi mi is valójában. Nos, tegyük fel, ha rákattint a gombra, azt szeretné, hogy egy alert-- rákattintott a gombra. Lássuk, hogyan tudjuk csinálni. Tehát window.onload-- ez nem olyasmi hogy láttad az osztályban, ezért nem kell tudni, hogy ez a teszt. De ez lényegében azt jelenti, OK, hívás Ezt a funkciót az ablak betölti. Szóval ez csak egyfajta beállítási kódot. Ne aggódj annyira, hogy. Mi azt akarom, hogy összpontosítson van itt. Azt mondjuk var searchButton egyenlő document.getElementById search_button. Tehát ahogy sejteni lehet, Mi ez azt mondja, OK, menj találja az elem ID search_button. És most, hogy aktuális elem és én vagyok majd tárolja változó searchButton. És most már ténylegesen használni ezt az elemet és változtassa meg, vagy elérni annak értékeit, hasonló dolgok. Mi is valójában kezd vegyenek részt a weboldalon. Tehát itt azt mondom, rendben, most, hogy van azt a gombot, amikor kattint, hívja ezt a névtelen függvényt. Szóval ez az, ahol anonim funkciókat is hasznosul. És mit jelent a funkció hatása? Nos, ez csak kéri ezt figyelmeztető funkció, és azt mondja, rákattintott a Keresés gombra. Szóval, mi fog történni, ha elmegyek bárhová Ezzel a HTML él és rákattintok a gombot, Hozok egy díszes kis figyelmeztetés hogy azt mondja rákattintott a gombra. Tehát a dolog, hogy összpontosítson here-- document.getElementById jelentkeznek egy adott HTML elemet ami az adott azonosítót. És most tudjuk meg mi történjen, amikor hogy az adott elem kattint. Közönség: Mi van, hogy az összes, hogy? HANNAH BLUMBERG: Sajnáljuk? Közönség: Muszáj fizikailag irányítószám alapján az? HANNAH BLUMBERG: Muszáj fizikailag irányítószám alapján az? Igen. Hát nem ez a fajta idegesítő? Ez egy csomó kód. Közönség: Lehet importálni valamit. HANNAH BLUMBERG: Így van. Mi jönne valami. És particular-- ó, ez mondja nekem kell tanítani részt. Különösen, hadd használja a könyvtár jQuery, mert ez tényleg Hosszú és nagyon bosszantó és azt akarom, hogy képes legyen annak egyszerűsítése és ez rövidebb és könnyebb írni. Tehát jQuery egy JavaScript könyvtár. Tehát A JavaScript programozási nyelv; jQuery egy könyvtár. És ez teszi egy csomó dolog könnyebb. Lehetővé teszi a változó és megy át Egy HTML dokumentum sokkal könnyebb. Lehetővé teszi kezelési események könnyebb. Lehetővé teszi animáció könnyebb és ez teszi Ajax könnyebb. Úgyhogy ugrik be két azok a dolgok most. Elnézést. Mielőtt teszünk, néhány alapvető szintaxis. Ez az, amit a legtöbb hívások jQuery könyvtár kinézni. Mi ezt dollár sign-- nincs kapcsolat jele, hogy a PHP, Csak inconvenient-- a neve egy választó, dot, majd egy akció. Tehát lássuk néhány konkrét példákat erre. Tehát ez tulajdonképpen ugyanaz, kódot a rendezvény csúszda. Tehát ez a hosszú, csúnya dolog lesz ez sokkal szebb, kisebb dolog. Úgyhogy próbáljuk megtörni ezt le. Ez azt mondja, OK, jQuery-- ezt dollár sign-- jQuery, találja meg az ablakot. Szóval ez a választó. Amikor betölti, hívja ezt a funkciót. Szóval ez mindent benne. OKÉ. Eddig jó? Minden rendben. Most, jQuery, találja meg a dolog ID search_button. És mit kattint, ezt a funkciót. És akkor ez a függvény pontosan ugyanaz. Csak nem egy kis figyelmeztetés, rákattintott a Keresés gombra. Tehát ez nagyon szép. Ez tényleg lecsapódik, és egyszerűsíti a kódot. Honnan tudom, hogy ez ID search_button és nem úgy, mint osztály search_button? Közönség: Hashtag? HANNAH BLUMBERG: Igen. Ez a hash szimbólum, ez csak, mint a CSS. Jól jegyezd meg, a CSS, amikor akart választani egy azonosító, használtuk a font jel. És ha azt akartuk, hogy válasszon valamit osztály, használjuk a pont. Nagy. Van értelme? Tehát jQuery állítólag Csak életét megkönnyítették. Igen. Közönség: Szóval egy kicsit zavaros, hogy milyen a névtelen funkció. Van elnevezni ezt anonymouse funkciót, működik? Hogyan hívják? HANNAH BLUMBERG: Persze. Tehát a funkció csak egy kulcsszó, ami mondja, én vagyok arról, hogy meghatározzák a funkciót. Közönség: Ó, oké. HANNAH BLUMBERG: OK? És akkor adja át, mint egy érv az alábbiakra: vessünk E belső one-- a kattintási funkcióval. Szóval igen, így a függvény, ez a névtelen függvényt, válik tényleges érv. Úgy emlékszem, a JavaScript, mi Kényeztesse funkcionál értékeket. Közönség: Ó, oké. HANNAH BLUMBERG: Igen. Szeretem, hogy "ó". Szép. Más kérdés? Idő? MÁRIA ZLATKOVA: Jó. Jó. HANNAH BLUMBERG: Félelmetes. Néhány gyors hasznos jQuery. Nem fogok menni mindezeken keresztül a. Ezek diák lesz akár on-line egy kicsit Később, így ellenőrizheti ki egy kicsit később. De alapvetően, az általános minta tart, ahol azt mondjuk, OK, hé, jQuery, itt az én választó és akkor itt van egy akció. És meg tudod csinálni a dolgokat, mint a hozzáférési érték egy formája, némelyikük a HTML, kontroll mi történik, ha a felhasználó elküld egy űrlapot, ilyesmi. Igen. Közönség: Tehát a vizsga, akkor szükségünk lesz tudni, hogy ma is sokat A jQuery dokumentációt. Tehát tekintettel arra, hogy copy / paste a jQuery dokumentációt a puskát, hol van az húzott vonal? Mint hányat kell tudnunk? HANNAH BLUMBERG: Nagy kérdés. A kérdés az, Lényegében tekintve, hogy nem tudja elérni a jQuery dokumentációt A vizsgálat során, hogy mennyi kéne tud? Azt nem várjuk el, hogy akár néhány véletlenszerű funkció hogy azt várnánk, hogy a Google. Dolgokat, amelyek a tisztességes játék tenném azt mondják, csak egyfajta általános szintaxis, hogy képes kiválasztani azonosító és által class-- így hasonlóan a CSS. És akkor a tényleges funkciók önállóan oldják meg, akkor valószínűleg azt mondja. Igen. Közönség: Tehát ha kiválaszt osztály azt jelentené dot. HANNAH BLUMBERG: Igen, pontosan. Jó. Ha kiválaszt osztály, ez lesz hogy pont helyett a font jel. Igen. Közönség: Megtenné megy át a különbség között kiválasztásával azonosító és osztályonként? HANNAH BLUMBERG: Persze. A különbség a kiválasztó ID és kiválasztja osztály. Tehát, mint Maria mondta egy kicsit korábban, ott csak egy HTML elem egy adott azonosítót, mivel osztály, ez lehetővé teszi számunkra, hogy csoport egy rakás A különböző elemek együttesen, így a dolgok, amelyek kapcsolódnak, de nem pontosan ugyanaz. Ez azt megválaszolni a kérdést? Fantasztikus. Igen. Közönség: Mi van, ha több dolgokat, amelyek ugyanabban az osztályban? HANNAH BLUMBERG: Mi történik, ha több dolgot, hogy ugyanazok osztály? Így például, ha vagyunk Csak a tiszta JavaScript, mi lenne ilyesmire document.getElementsByClass. És akkor mi, hogy valójában nem a hozamok tömbjére. És akkor sem végighaladni őket, vagy megtalálni, melyik akarsz. Ez nem fog adni Ön egyetlen elem. Meg fog adni tömbjére. Nagy kérdés. Akármi más? Fantasztikus. Tehát úgy gondolom, ha te vagy ismeri minden jQuery láttam a PSET, akkor legyen jó menni. Kérdés? Ó, nem. Én tényleg meg kell tanítani. Lazuljon el. Minden rendben lesz. Ott leszek. Beszéljünk Ajax. Tehát Ajax lesz egy-- is, Kezdjük azzal, amit képvisel. Ez egy mozaikszó. Ez áll a aszinkron JavaScript és XML. És XML alapvetően lesz [Hallhatatlan] egy típusú adataink. De nem a ténylegesen felhasznált XML. Ehelyett csak használja JSON. Tehát alapvetően, ez valami data-- aszinkron, JavaScript, és az adatok, Ebben az esetben, a JSON. És a célunk, mint már említettük Egy kicsit korábban, az, hogy képes arra, hogy egy kérés, hogy ezt a kérést nem A dolog a háttérben, de továbbra is Mindent megteszünk azért került szándékozó csinálni. És akkor, amikor ez az információ kész, akkor majd beépítése. Szóval lássuk, mi ez néznek ki. És ez, ha kell Egy kicsit ismerős re pset8, az imént fordult. Tehát itt egy érvényes jQuery funkciót, hogy talán szeretném tudni, about-- ezt dollár jel. Tehát azt mondja, jQuery funkció, .getJson. És mi ez a funkció nem az, hogy vesz egy URL-t és néhány parameters-- ezért úgy gondolom, abban az esetben, A pset8, olyan volt, mint, Az URL volt articles.php és a paraméterek volt menni = néhány irányítószámot. És azt mondja, OK, be kérelmét, Ez az URL a megadott paramétereket. És hogy épp. Amikor befejeződik, akkor vagy megy, hogy sikeresen vagy hogy fog sikerülni. Tehát ez egyenértékű a hívás Rob és megkérem, hogy tegyen valamit. És akkor, amikor azt kéri vissza, ő sem akartam mondani kész vagyok, vagy nem sikerült. Tehát abban az esetben, ha te történik, azt mondod, OK, nem vagyok kész. És akkor hívja ezt a funkciót. Ebben az esetben, ez lesz a funkciója, amely során bizonyos információkat. Az egyik, amit általában érdekel adatokat, Az adatok, hogy mi volt valójában visszatért ennek eredményeként a hívó .getJSON. És meg tudod csinálni valamit vele. Tehát abban az esetben, pset8, mi jelenik meg a listában. Fail lesz egy függvény hogy az úgynevezett amennyiben a kérelmet nem bármilyen okból. És abban az esetben pset8, mi csak console.log meg. Bármilyen kérdésre, hogy? Igen. Közönség: Meg tudjuk csak használni a funkciót theta ahelyett, hogy a funkció, textStatus, jqHXR. HANNAH BLUMBERG: Persze. Szóval igen, azt hiszem, a PSET, láttunk funkciót adatokat. Tehát csak the-- igen, az OK gombra. Ez az, amit láttunk az PSET. Ez teljesen rendben. Ezek csak ha akart hogy húzza ki több információt, Ezek azok a dolgok, is kaphat .getJSON. Jó kérdés. Akármi más? Igen. Közönség: Szóval .getJSON az Ajax? HANNAH BLUMBERG: OK. Tehát ez a fajta kutya elásva. Ez egy jQuery funkció, amely lehetővé teszi , hogy nem az aszinkron hívásokat. És ezek az aszinkron hívásokat, ez amit mi már utalva, mint az Ajax. Igen. Ami elvitt egy nagyon hosszú idő, hogy húzza szét, amikor diák voltam. Közönség: Tudsz mondani, hogy újra? HANNAH BLUMBERG: Igen. Elmondhatom, hogy újra? Ez .getJSON funkció, ez egy jQuery funkció. És ez meg fog tenni aszinkron hívást. És ezek az aszinkron hívásokat, most már lett utalva e mint Ajax. Más kérdés? Már csak pár perc van hátra. És Maria lesz lezárja a biztonsági majd megyünk hogy csak a kész. MÁRIA ZLATKOVA: Félelmetes, OK. Szóval ez is-- Csak egy pár másodperc, hogy nézd át ezt. És ez nem valami igazán nagyszerű. És lehet, hogy valaki mondja meg, miért? Mi folyik itt ize és májusban tudott potenciálisan eredményezheti valami rossz, és hogy ez mit hívják? Igen. Közönség: Ha az érvet, hogy az telt több mint 12 karakter, ez túlfolyhat. MÁRIA ZLATKOVA: Így van. Tökéletes. Hogy hívják? Csak azt nem említette. Közönség: Puffertúlcsordulás. MÁRIA ZLATKOVA: Ja, a puffer-túlcsordulás. Tehát ez olyan dolog, amit hivatkoznak, mint puffer túlcsordulás. És azt látjuk, hogy belül is az ize, amit meghatározott a puffert, c, , amelynek mérete 12. Azonban a fő, mi nem ellenőrizze semmilyen módon egyáltalán hogy a argv1-- úgy, hogy volt a második érv. Mi nem ellenőrzi, hogy a mérete helyénvaló. Tehát ha volt egy különösen rosszindulatú felhasználó aki hozott néhány érvet, hogy volt hosszabb, mint a 12, majd a potenciálisan túl a hogy érv, volt néhány olyan kód hogy ő próbál tenni valamit a rossz azzal; akkor ez, hogy mi fog történni, felülírja a visszatérés címét, az ize funkció, hogy a függvény, ha visszatért végre, hogy a kódot. És akkor rossz dolgok történnek. Van ennek értelme mindenkinek? És hogyan lehet ez ellen védekezni? Bármilyen javaslat? Alapvetően belsejét potenciálisan ize, hogyan tudjuk ellenőrizni, hogy győződjön meg arról, hogy ez nem történhet meg? Közönség: Ha a 12-es méretű túllépése, akkor többletforrásokat memória? MÁRIA ZLATKOVA: a javaslat arra, kiosztani további memória mérete meghaladta. Igazából mi tehetünk valamit a sokkal egyszerűbb, mint hogy is. Mi csak kap a húr hossza Az az érv, hogy a bevitt, ellenőrizze, hogy kevesebb, vagy egyenlő, mint 12-- amely a mi azt akarjuk, hogy azért, mert nem akarjuk, hogy haladják meg a puffer. És aztán, ha nem, akkor dolgozhat az érvelés. Aztán ha mégis, akkor valóban szeretné hogy YELLO potenciálisan a felhasználó. De ez hogyan is kellene csinálni. Igen. KÖZÖNSÉG: Meg tudná magyarázza memcpy tényleg gyorsan? MÁRIA ZLATKOVA: Ó, sajnálom. Igen. Memcpy vesz bármit is-- sajnálom, OK. Memcpy vesz mindent, ami bar, bármi jut ra ize, mint a parancssori argumentum. Szóval ez fog tartani argv1. Argv1 hívják bár itt. Szóval ez fog tartani bár és ez meg fog másolja be c. Közönség: OK. MÁRIA ZLATKOVA: És ez lesz copy-- a harmadik érv csak utal hogy mennyibe fog másolni c. Közönség: Ah. Szóval ez az ember a másolás az egészet akkor. MÁRIA ZLATKOVA: Igen, ez másolás az egészet. Igen. Először is, győződjön meg róla, a bár nem egyenlő null, mert ez egy mutató. Akkor megkapjuk a húr hossza bar. Gondoskodunk róla, hogy ez az kevesebb vagy egyenlő, mint 12. És akkor, mert már gondoskodott arról, mi is valójában memcpy és győződjön meg róla, hogy ez rendben van. Bármi kérdés? Nagy. Van két igaz vagy hamis kérdések. Tud valaki mondani rögtön, Ha ezek igazak vagy hamisak? Igen, ez igaz. Pontosan. Mindkettő hamis. Tehát használ egy jelszót Soha nem igazán jó ötlet mert ha valaki tudja, a jelszavát, akkor csak hozzáférhet a másik számlára. És akkor ikonok nem csinál semmit biztonsága érdekében. Meg kell általában úgy néz ki a HTTPS ahelyett, hogy a HTTP és az URL. És néhány más típusú támadások, amit már említettem, Dávid már említett előadás, SQL injection támadások. Már láttuk, hogy ha nem-- a CS50 lekérdezés funkció gondoskodik arról, hogy az SQL injection támadások nem fordulhat elő. De ha nem használ CS50, idézet, idézet vége ", a lekérdezés," mi lett volna, hogy megbizonyosodjon arról, hogy a felhasználói nem éppenséggel egy SQL Kérdés, hogy fog okozni az összes asztalunknál kell dobni vagy valami rossz történhet adatbázisunkban. Session eltérítéssel Egy másik típusú támadás ami történik, ha néhány rossz személy használ néhány áldozat ülésen ID elérni a bejelentkezési adatokat. Tehát egy nagyon triviális példa, hogy mint ha van egy nyilvános számítógépet, akkor az rossz ember bejelentkezik majd ezek a cookie-kat mentett. És cookie-k nem változik ülésén. Akkor mi az áldozat menni majd jelentkezzen be a honlap. A cookie-k nem változnak egy bizonyos munkamenet. És akkor az áldozat bejelentkezik A honlap, majd a levelek. És akkor az a személy, aki megy vissza Ezután továbbra is használhatja a session ID- hozzáférnek az információt. Szóval ez egy példa arra, hogyan, ami történhet. És akkor én nem aggódnék túl sokat a konkrét vagy bármi ilyesmi, hogy okozhat ez, de mivel valami ötlete, mi a változók részt vesz ebben vannak. És akkor manipulálni fejléc adatok egy másik típusa a támadás amely Dávid beszélt. És ez csak utal mi történhet, ha A válasz, a HTTP válasz belsejében a fejléc nincs megtisztítva megfelelően. És bármely fields-- például ha valaki felülírja az egyik fejléc értékeket tartalmaz mást, mint mit kell contain-- és ténylegesen tartalmaznak, például egy 200 OK státusz kódot, akkor esetleg nem rosszindulatú dolgokat, amikor nem kéne. De én nem aggódnék túl sokat az egyedi kódot hogy okozhat ez, csak egyfajta megértés magas szintű ilyesmi. Azt hiszem, ez az összes hogy meg kell fedezni. Elképesztő. Bárki bármilyen kérdése van bármely A dolgok, hogy mi vonatkozik? Igen. Közönség: Tehát az egyik fajta több logisztikai kérdés. A tartalmi főleg A dolgok után, kvíz 1? MÁRIA ZLATKOVA: Tehát kérdés az, hogy a tartalmat főként a dolgokat, miután kvíz 1? Tehát a hangsúly a után Quiz 1, azzal a kivétellel, hogy meg kell összpontosítani a dolgokat pset5 és sok a adatstruktúrák hogy mi vonatkozik. És nem mondhatjuk, hogy mi lehet figyelmen kívül hagyni valamit, mielőtt hogy azért, mert épül azt is. Szóval összpontosítani, hogy plusz pset5 anyag mint többek között láncolt listák, vermek, sorok, és mindent hogy Hannah odament. HANNAH BLUMBERG: Így van. Ja, átmentünk a C cucc a kezdet kezdetén nagyon gyorsan. De győződj meg róla, hogy vizsgálja felül ezt. Menjen vissza, és nézni a kvíz 0 kritika. Még néhány logisztikai jegyzetek, Csak míg nekünk a figyelmet. Mi lesz, hogy munkaidőben Mindkét hétfőn és kedden este. Ők lesznek az MD 119. Ez mind a honlapon, így ha nem hallom, nem gond. MÁRIA ZLATKOVA: 8:30 11:00 között. HANNAH BLUMBERG: Igen, 8:30-11:00. Mi is ott leszünk. Mi is ott leszünk, hogy válaszoljon a kérdésekre. Elég hideg és szórakoztató. Srácok kérheti bármilyen kérdése hogy van a kvíz 1. És kvíz 1 van Szerda, így a jó szerencsét. Ha bármilyen kérdése van, talán Gyere beszélgetni velünk itt egy-egy. Hűvös. Nagyon köszönöm. MÁRIA ZLATKOVA: Nagyon köszönöm, srácok. Közönség: Hurrá. [TAPS]