[00:00:02] [Musiikki soi] Hannah: Hei kaikki. Kiitos pojat niin paljon tulee ulos vuonna inhottavaa sää tietokilpailu yksi arvostelu istunto. Kuten te tiedätte, tietokilpailu yksi on tänä keskiviikkona. Joten aiomme mennä läpi joukko aiheita. DAVIN: Hei, voin sanoa jotain todella nopeasti? Hannah: Joo, Davin on menossa sanoa jotain todella nopeasti. DAVIN: Anteeksi. Vain todella nopeasti, jos sinulla on kysyttävää noin tietokilpailu, voit mennä verkossa. Siirry 2014 tietovisa yksi, noin tietokilpailu. Se sai logistiikka noin minne mennä, milloin mennä. Jos samanaikaisesti kirjoilla, olemme menossa on meikkiä tietokilpailu klo 5:30. Tai jos olet lähettänyt minulle ongelma, sinulla on jokin muu ongelma. Mutta puoli 6 on meikkiä aikaa keskiviikkona. Mutta jos sinulla on kysyttävää, yleisiä kysymyksiä, verkossa on kaikki logistiikka. Joten tarkista ensin. [00:00:47] Hannah: Mahtavaa. Joten tässä iso lista aiheista että olemme menossa läpi tänään. Aion kattaa kaikki C tavaraa, joka on, että ensimmäinen sarake. Joten C kamaa, että me katettu jälkeen tietokilpailu nolla. Alkaen linkitetty lista, joka sisältää viitteitä. [00:01:05] Okei, joten näimme tämän viime tarkastelun istunto, joten aion käydä läpi Tämä on hieman nopeammin. Vain nostamaan käden jos haluat minun hidastaa tai käsitellä jotain vielä. Mutta käytämme liittyvät luettelot, koska aloitimme C paneelit. Ja paneelit ovat suuria, mutta ongelma on heillä kiinteä koko. Liittyy luettelot avulla voimme luoda dynaamisesti kokoinen tietorakenteita. [00:01:28] Ja meillä on perustoiminnot, lisätä, poistaa ja etsiä. Ja voimme tehdä insert Pahimmassa tapauksessa vakioaikavälein jos me vain laittaa se aivan alussa. Poistaa ja hakea, pahin tapauksessa iso oh n ajan. Joten jälleen, vain kääntää kautta nämä kuvat, Tiedän näimme nämä viime kerralla, mutta me haluavat seurata meidän linkitetty lista pitämällä kirjaa vetäjänä linkitetyn listan. Koska tiedämme, että jokainen meidän solmuja on juuri menossa osoittamaan seuraava solmu meidän linkitetty lista. [00:01:58] Niin, että miten me seurata. Vaikka nämä eivät ole jatkuva kappaletta muistia, voimme löytää ne vain Seuraavat eri nuolet. Tässä on meidän rakenne varten linkitetyn listan solmu. Näimme tämän viimeisen kerran. Meillä on struct solmu. Ja se on kaksi ominaisuuksia. Numero yksi, todellinen arvon haluamme säilyttää. Tässä tapauksessa se on kokonaisluku. Se voisi olla merkkijono, se voisi olla char, mitä haluat. Ja sitten meillä on seurata seuraava solmu meidän linkitetty lista. Niin, että tulee olemaan osoittimen seuraavalle solmulle. Jos olit juuri tekemässä haku, kuten aiemmin sanoin, sinun täytyy seurata nuolia alas. Lisäys, voisitte seurata missä loput listasi on. Ja haluat ohjata pään osoittamaan uuden elementin, joka Tässä tapauksessa on yksi, ja sitten yksi tulee kohta loppuosaan linkitetyn listan. Joten jälleen, tiedän että tämä on pieni hieman toista tietokilpailu nolla. Joten meidän on oltava hyvin varovaisia noin järjestyksessä, jossa me tehdä näitä pointings joten emme kadottaa takana luettelon. OK, kysyttävää kanssa vain yksittäin liittyvät luettelot? Mahtavaa, OK, viileä. [00:03:06] Joten nyt, aiomme mennä kiinni jotain vain hieman monimutkaisempi, kaksinkertaisesti liittyvät luettelot. Joten lisäksi pitää Seuraa seuraavaan solmuun, haluamme myös seurata edellisen solmun. Ja tämä antaa meille mahdollisuuden, jos olemme jossain vaiheessa meidän linkitetty lista, ei vain mene eteenpäin, mutta myös kerrata taaksepäin. Koska kuten näimme yksittäin linkitetty lista, jos olisimme jossain solmussa, ja yhtäkkiä, päätimme, Oikeastaan ​​haluan mennä solmu juuri ennen minua, sinun täytyy mennä Paluumatkalla päähän ja kerrata kautta kunnes löysit solmu etsit. [00:03:35] Joten tämä tekee asioista hieman helpompaa kuin olemme yrittää kerrata kautta linkitetty lista. Mutta se vaatii meitä seurata yhden lisää osoitin, joten yksi solmu tähti. Okei, joten tässä tulee hauska osa. Aiomme harjoitella täytäntöönpanosta poistamaan kaksinkertaisesti liittyvät luettelot. Joten tämä on jotain, joka on täysin reilun pelin tietokilpailu. Se saapui ohi tietokilpailuja. Joten ehdottomasti olla valmis koodata hieman C. Älä unohda, että kaikki Tässä hauska PHP ja JavaScript, meillä on vielä muistaa tehdä C. Joten verestää että jos et tunne ruosteessa. [00:04:12] Okei, katsotaanpa jos voimme tehdä tämän. OK, viileä. Joten aiomme kokeilla muokata aivan täällä, ja toivottavasti tämä menee suunnitellusti. Okei, ei kukaan halua antaa minulle ehdotus siitä, miten minun pitäisi aloittaa? Vain oletus olen päätöksenteossa on, että olen jo ovat määritelty rakenne, yksi Näytin viimeisellä sivulla, viimeisenä dian. Ja olen tallentamiseen esimies liittyy lista joissakin osoitin nimeltään lista. Onko kukaan halua minua alkoi? [00:04:42] Yleisö: Voitko luoda uuden solmu soittaa listan läpi? [00:04:45] Hannah: Mahtavaa, joten aiomme luoda uusi solmu ryömimään listan läpi. Pidän siitä. Otan vain kutsua sitä osoitin jos se on OK. Ja jos olisi se alunperin aloittaa? [00:04:57] Yleisö: Luultavasti johtaja luettelon. Hannah: Kaunis. Haluamme aloittaa kärjessä, joka Sanoin aiotaan varastoida luetteloon. Mahtavaa. Toistaiseksi niin hyvä. Ja nyt, meidän tavoitteenamme on kerrata läpi lista kunnes löydämme solmu arvo n että haluamme poistaa. OK? [00:05:13] Joten nyt on osa, jossa haluamme kerrata kautta. Voiko joku ehdottaa tapa kerrata läpi? [00:05:19] Yleisö: silmukka. [00:05:20] Hannah: silmukka. Rakastan sitä. Erityisesti voimme yrittää samalla silmukka. OK, ja me tiedämme, että olemme saavuttaneet lopussa meidän luettelosta, kun mitä? Yleisö: Kun osoitin on null. Hannah: Kun osoitin on null. Kaunis, rakastan sitä. OK, viileä. Olen niin pahoillani, jos rajaava ahdin on eräänlainen putoamisen näytön. Toimme sen takaisin. OK, viileä. Mitä seuraavaksi? [00:05:48] Tiedämme siis haluamme poistaa solmu, joka on arvo n. Joten löytää tapauksessa me itse löytää meidän solmu. Joten miten voin tarkistaa, että? Olin juuri sanoa, jos osoitin, ja sitten jos minä haluavat saada arvoa pois osoitin, En vain nuoli n, on yhtä suuri kuin n, parametri että annoimme tämän toiminnon, solmu, että haluamme todella poistaa. Kaikki kysymykset asti täällä? Selvä. OK, joten nyt katsotaanpa piirtää nopea kuva taululle, jotta visualisoida. [00:06:24] Joten sanokaamme siellä meidän ihana solmu. Ja se on arvo, minä vain sanoa neljä. Ja se osoittaa seuraavaan solmu meidän linkitetty lista. Ja ei ole mitään ennen sitä. Joten meillä on edellinen osoittaa mitään. Tässä tapauksessa me osoittaa taaksepäin. OK, vain perustamalla minun linkitetyn listan tänne. Ja meillä on luettelo, joka muistuttaa Tämän rakenteen aluksi. Tulen piirtämään yksi enemmän Täydellisyyden vuoksi. OK. Tulen kohta tätä eteenpäin. Ja minä kohta että yksi taaksepäin. Anteeksi. Joo, sai tämän taaksepäin. Tee se uudestaan. OK, siellä mennään. Okei, sain sen. OK, tässä on meidän kuva. [00:07:21] OK, joten haluamme harkita kaksi tapausta. Ensimmäisessä tapauksessa on, jos solmu haluamme poistaa on aivan alussa listallamme. Ja sitten, toisessa tapauksessa, että haluamme harkita, jos se on muualla. Ymmärrän, että tämä täysin sotkuinen piirustus kaikella pyyhkimisen, mutta toivottavasti me yritämme tehdä tämän selväksi joidenkin koodia. [00:07:40] OK, joten katsotaanpa kattaa tapauksessa jossa löysimme solmu, ja se on aivan alkaa meidän linkitetyn listan. Jokainen antaa minulle ehdotus täällä, mitä Minun pitäisi tehdä todella poistaa meidän solmu? Se on vähän hankala. OK? [00:07:56] Yleisö: Sinun on otettava solmu, joka olisi ennen ja sen osoittamaan joka olisi sen jälkeen, ja ottaa solmun olisi sen jälkeen ja tehdä sen osoittamaan solmuun ennen kuin se. Hannah: Aivan. OK, joten näin on where-- meillä on kaksi tapausta. Meillä on tapaus, jossa solmu, että etsimme on edessä luettelon. OK, ja sitten siinä tapauksessa, että olet Kuvataan muuten, eikö? Se on jossain muualla luettelossa. Niin sanoit, meidän katsokaa solmu edellisen, ja tehdä edellisen solmun viittaavat seuraavaan solmuun. Joten sanokaamme olemme yrittävät ottaa viisi minun hyvin sotkuinen piirustus tänne. Haluamme varmistaa, että neljä viittaa nyt kuusi. Neljä seuraavaksi pistettä kuuteen. Ja kuusi edellinen pistettä neljään. Se on meidän tavoitteemme, eikö? Tämä on mitä mielestäni sinun juuri sanoi tuolla. [00:08:56] OK, joten lähdetään, että ensimmäinen pala. Tehdään on edellinen osoitin edellinen. Joten neljä seuraavaksi tulee osoittaa, mitä? Täsmälleen, tässä tapauksessa kuusi. Joten meidän pitäisi sanoa osoittimen vieressä. OK? Selvä. Joten päästä eroon tästä ruma kuva ja yrittää tehdä hieman mukavampi yksi. Meillä on lista pää täällä. Ja joka viittaa ensimmäiseen solmuun meidän linkitetty lista, joka sanoimme on neljä. Tässä on meidän toinen solmu, viisi. Ja kolmas solmu, kuusi. Yritän vain tehdä täsmälleen sama kuva, vain hieman puhtaammin. OK, joten neljä seuraava alunperin viittaa viiteen. Viisi seuraavaksi pistettä kuuteen. Kuusi edellinen pistettä viiteen. Ja viisi edellinen pistettä neljään. Niin paljon mukavampaa! OK, viileä. [00:10:04] Joten nyt, mitä teimme juuri täällä, tämä rivi koodia, joka sanoo osoitin edellinen seuraava, niin mitä se tarkoittaa? Tämä tarkoittaa, että jos me tarkastelemme viisi, siirtyä edelliseen solmuun, ja se on seuraavaksi pitäisi nyt kohta viisi seuraava. Joten pohjimmiltaan, mitä se on tekemässä on, että on poistamatta tätä nuolta ja tehden hypätä suoraan yli viisi. Onko selvä? Tiedän, että voi olla hieman summittainen. Näen joitakin pää nyökkää. Se on hyvä. OK, viileä. Nyt, mitä on seuraava askel? [00:10:39] Olen nollata seuraavaksi. Nyt joka muiden nuoli minun täytyy muuttaa? Tämä yksi täällä. Kuusi edellinen. Emme halua kuusi edellinen osoittamaan viiteen enää. Haluamme tuoda neljä. Tarkoittaako tämä kuva järkeä? Joten nyt voimme itse ottaa viisi. Joten saada, että pala. Mitä minun pitäisi tehdä ennen kuin nollata kuusi edellinen neljä? Onko ideoita siellä? [00:11:14] Yleisö: Vapauta solmun välillä ne asettamalla se nollaksi? Hannah: Cool. Ehdottomasti, meidän lopullinen tavoite on olemaan vapauttaa solmuun. Joten voimme tehdä sen täällä. Ilmainen osoitin. Ehdottomasti. Mutta jo ennen sitä, Katsotaanpa just-- tavoitteemme oikea tässä asettaa osoitin seuraavaan edellinen yhtä osoitin edelliseen. Tiedän, että tämä on tulossa peitetty. OK, katsotaanpa take-- jäähtyä. Voivatko kaikki nähdä tämän bottom line? Vai onko se erittäin pieni? [00:11:50] Joten ennen toteutamme tämä linja täällä, haluamme varmistaa, että osoitin seuraava ei ole nolla. Koska jos osoitin seuraavaksi on null, millainen virhe saan kun yritän viite nollaosoittimen? Yleisö: Seg vika. Hannah: seg vika, kaunis. OK, joten jos se ei ole null, niin voimme palauttaa. Ja meillä on kuusi kohta uudelleen neljään. Kysymyksiä tähän saakka? Kyllä? [00:12:17] Yleisö: teidän ensimmäinen jos ilmoitus, ethän tarkoittaa olla nuoli seuraava tai [äänetön]? Hannah: Tarkoitin osoitin nuoli n. Joten periaatteessa, mitä yritän tehdä on sanoa, nykyinen solmu, että olen iteroidessaan yli, nykyinen solmu, joka Etsin, olen tallentaminen osoitin. Ja haluan tietää osoittimen arvo, joka tässä tapauksessa on n. Ja haluan nähdä, on solmu Etsin solmun pyrin poistaa? Joten siksi olemme täällä osoitin n. [00:12:47] Yleisö: Niin nuoli menossa N, asetat arvon ja tallentaa sen solmun nimeltä n? [00:12:55] Hannah: Joten se on kuin jos olen läpi tätä linkitetty lista ja osoittaa viisi. Jos haluan saada että arvoa, jos Haluan saada että määrä, 5, Minun täytyy tehdä osoitin nuoli n. Cool? Joo. [00:13:07] Yleisö: on n muuttujan nimi? Hannah: Kyllä. Joten jos me flip takaisin yhteen liukumäki, n on nimi arvon sisällä solmu meidän linkitetty lista. Ja tiedän, että se voi saada hieman hieman sekava, koska meillä on myös vaativat asia että haluamme poistaa n. Niin, että jos se yksi rivi tulee. Joo? [00:13:27] Yleisö: Mitä sinulla on [Äänetön], miten ne toimivat? Osoitin [äänetön]? [00:13:35] Hannah: Toki. Puhutko about-- mikä linja? Yleisö: Viimeinen rivi [kuultavissa]. [00:13:44] Hannah: Toki, OK. Joten katsokaamme kuvaa Jotta yrittää selittää tätä. Olen pahoillani, että kamera, kysymys oli voimme selittää osoitin arrow seuraava osoitin edelliseen. OK, joten sanokaamme me olemme viisi ja tavoitteenamme on poistaa viisi. Joten osoitin seuraavaksi, mikä näistä kolme solmua ei, jotka antavat meille? Tästä pääsemmekin kuudes solmuun, eikö? [00:14:10] OK, joten nyt pyydämme kuuden aiemman. OK? Ja me nollaus tämä on yhtä suuri kuin neljä, joka sattui olemaan viisi edellinen. Tiedän, se on erittäin vaikea seurata. En todellakaan suosittele piirtää kuvia jos saat kysymyksen näin. Kyllä? [00:14:30] Yleisö: Onko syy, että meillä ei ole [äänetön]? [00:14:37] Hannah: Aivan. Joten kysymys oli, miksi meidän ei tarvitse tarkistaa täällä? Miksi emme tarvitse tarkistaa, että osoitin edellinen ei ole yhtä nollaamaan? Ja se on koska olemme jo erotettu jos osoittimen aivan alussa. Erittäin hyvä kysymys. Mitään muuta tästä? OK, viileä. Joten sen loppuun asti. Olemme melkein perillä. [00:14:59] Joten mitä jos se on kärjessä? Mitä jos sen sijaan yrittää poistaa viisi, me itse halusi poistaa neljä? Mitä minun täytyy tehdä? No, haluan palauttaa päähäni mitä? Shout it out? YLEISÖ: yksi sen jälkeen. Hannah: Kaunis. OK, joten haluamme luettelo on osoittaa mihin tahansa meidän osoitin seuraavalle solmulle on. Hyvä. Ja aivan täydellisyys n tähden, olisimme haluat tarkistaa, että niin kauan kuin lista ei ole nolla, niin kauan kuin lista ei ole tyhjä, haluamme asettaa Meidän edellinen yhtä null. Kysymys tähän mennessä? Yksi askel pois from--? [00:15:53] Yleisö: Olisiko jos Luettelo ei ole yhtä suuri kuin nollaamaan? [00:15:55] Hannah: Kyllä, olet täysin oikeassa. Olen niin pahoillani. Ei luettelo ei ole yhtä suuri null. Mahtavaa. Yritetään saada tämä kaikki ruudulla. Se on tavallaan putoamisen. Anteeksi, kaverit. Ja viimeisenä mutta ei vähäisimpänä, kaikki meidän täytyy tehdä on palata. OK. Se oli paljon pullollaan todella nopeasti. Ota toinen näyttää tämän yli. Kerro minulle, jos sinulla on kysyttävää. Joo? [00:16:20] Yleisö: Jos luettelo on pää, then-- odota, Nevermind. [00:16:26] Hannah: OK, hyvä. Joten tämä on, jos lista on kärjessä, poistamme sen mitä me asetettu. Joo? [00:16:31] Yleisö: Voitko selittää Ensimmäinen jos selvitys uudelleen? Jos osoitin n on yhtä suuri kuin n? Hannah: Toki. Joten meidän tavoitteena koko toiminto on poistaa solmu, jolla arvo n. Joten jos löydämme, kuten olemme iteroiden kautta listalle solmun arvo n, joka on yksi haluamme poistaa. Joten kaikki poistaminen tapahtuu sisällä että iso jos ilmoitus. Onko se järkevää? Cool. Joo? [00:16:59] Yleisö: Ehkä et vain voi nähdä se, mutta ei sinun on myös linja selaamiseen lista? Hannah: Mahtavaa. Katsotaanpa asian esille vähän, ja me heittää että aivan pohjaan. Ehkä hallitus olis ollut hieman parempi idea. Joten miten voin siirtää osoitinta eteenpäin? [00:17:17] Yleisö: Pointer yhtä kuin osoitin plus yksi. [00:17:20] Hannah: Kaunis. Niin, että voimme jatkaa iteroimalla läpi. OK. Yleisö: Eikö siellä olla muuta? Hannah: Vielä kerran? Yleisö: Eikö siellä olla muu jälkeen iso vanha, jos lausuman [äänetön]? Hannah: Mikä osa? Olen pahoillani. [00:17:38] Yleisö: läpikäynti, ei pitäisi siellä olla muuta? Hannah: Sinun on ehdottomasti voi olla muuta. Koska minulla on palautusoikeus siellä, et tarvitse muuta. Mutta joo, hyvä kysymys. OK, kyllä? Yleisö: Voimmeko ajatella osoittimen joka on menossa läpi lista kuten ottaen arvosta Jokaisen solmun luettelossa? Vai pitäisikö meidän ajatella sitä tavallaan ulkopuolinen luetteloon? [00:18:00] Hannah: Jompikumpi on hieno, luulen. Tapa uskoisin, että se on Sanon, OK, olen osoitin. Ja tämä on minun. Tämä on minun kädessäni. Aion viitata eri asioita, jotka haluan kerrata kautta. Ensinnäkin, aion kohta johtajalle luettelon. Ja että kertoo minulle olen menossa kohta neljä. Ja niin minulle, että ulkoinen listalle Voin viitata kussakin näistä osista. Joten ajattelen itseäni osoitin. Yleisö: Eli kun poistat yksi niistä, poistat itsesi, niin sanotusti. Hannah: Aivan. Joten poistat asia olet osoittaa. Joten esimerkiksi, että näimme missä olemme yrittää poistaa viisi, kun minä osoitan viiteen, Haluan poistaa asia Olen osoittaa. Täsmälleen oikea. Kyllä? Yleisö: Olemmeko hoidettu Tapauksessa, jossa n ei ole luettelossa? Hannah: Jos n ei ole luettelossa? Kaikki tämä tulee tapahtumaan on olet menossa kerrata läpi ja toistaa kautta, ja sitten, olet menossa päästä osoitin on null, ja sitten aiot tehdä. [00:18:48] Yleisö: Joten onko meillä palata mitään? Hannah: Voisimme. Tavalla, että jos se on määritetty tässä toiminto, minä vain sanoa, että se palaa mitätön riippumatta. Mutta sinulla voisi olla jotain kuten palaamassa kokonaisluku, ja on se palauttaa negatiivinen 1, jos se epäonnistuu. Jotain sellaista. Kysymyksiä with-- kyllä? Yleisö: [äänetön]? Hannah: Anteeksi? Yleisö: [äänetön]? Hannah: Toki. Niin, että actual-- kun olemme tehnyt kaiken tämän työn liikkuvien kaikki nämä nuolet ympäri, koko Tavoitteena oli päästä eroon solmun että etsimme. Joten tässä tapauksessa, vapauttaa osoitin, jos minä osoitan viiteen, se on kuin pyyhkien tämän keskellä solmu. Se ilmainen osoitin osa. Järkeä? [00:19:29] Yleisö: Niin edes ajatellut et ole [äänetön]? [00:19:31] Hannah: Joten me oletettu alussa meillä oli lista, joka oli already-- he olivat panneet tämän yhdessä. Joten jotta rakentaa tätä lista, he varmaan [kuultavissa]. Cool. Kaikki muu tämän? Kyllä? [00:19:46] Yleisö: Mitä jos lista ei yhtä nolla linja? [Äänetön]? Hannah: Täällä? Yleisö: Joo. Hannah: OK, kaikki olen tekemässä on olen vain varmista että ennen kuin yritän dereference listalle ennen kuin yrität käyttää edellisen, Haluan varmistaa, että se ei ole null joten en saa seg vika. Cool. [00:20:08] OK, tiedän tämä oli varsin paljon saada läpi. Joten tämä dia tulee saatavilla sinulle. Joten voit mennä sen läpi tarkemmin. Kyllä? [00:20:17] Yleisö: Miksi lista [äänetön]? Hannah: Toki. Joten lista todella viittaa Tämän elementin täällä, ensimmäinen elementti listassa. Joten se ei voi olla edellinen. Kyllä? [00:20:31] Yleisö: Onko osoitin kohtaan samaan osoitteeseen muistissa? Onko viittaavat samaan osoite muistiin solmu että se osoittaa? [00:20:40] Hannah: Kyllä, se osoittaa Tämän solmun muistiin. [00:20:43] Yleisö: Oikea, joten kun [äänetön]? [00:20:47] Hannah: Tavallaan kyllä. OK. Okei, mennään yhdessä tämän. Ja jos sinulla on lisää kysymyksiä, jäämään lopussa, ja voimme käydä läpi uudelleen. OK, viileä. Nyt pääsemme eteenpäin hash taulukoita, yrittää, ja puita, jotka sait Super perehtynyt p-asettaa viisi, speller. [00:21:04] Joten tiiviste on vain array yksittäin liittyvät luettelot tai kaksinkertaisesti sidottu luetteloiden tulossa pois siitä. Joten meillä on jonkinlainen assosiatiivisia array. Ja miten me tiedämme, mikä näistä taulukot kauhat päästä, käytämme hajautusfunktio. Joten tässä tapauksessa, voi kuka tahansa arvaa hajautusfunktio olisi vain perustuu joidenkin tulo- ja lähtö? [00:21:31] Yleisö: Kirje numero aakkoset. Hannah: Aivan. Se vain laittaa ne aakkosjärjestykseen. Kaikki, joka alkaa On otettu ensimmäinen ämpäri. Kaikkea kanssa B otetaan Toinen ämpäri, niin edelleen, ja niin edelleen. Mahtavaa, OK. Ja hash funktio on mitään toiminto, joka vie sana ja kertoo, mitä ämpäri se kuuluu. Joten mikä merkintä meidän array se kuuluu. [00:21:55] Joten joka kerta Annan tiivistefunktiota sana, se pitäisi kertoa minulle saman sijoita joka ikinen kerta. Joten jos käytämme hajautusfunktio edellisestä dia missä olemme lajittelu ensimmäinen kirjain aakkoset, joka kerta Annan tiivistefunktiota "omena" se tulee aina antaa minulle takaisin 0. Joten jos minulla on omena laittaa minun tiiviste, jos annan "omena" minun hash funktio, sen pitäisi sanoa, mene laita se ämpäriin 0. Jos Etsin omena minun tiiviste ja sanon, jossa voimin omena live, pyydät hajautusfunktio. Ja se sanoo, mene koriin 0. Kaikki kunnossa? Kysymykset hash toimintoja? Mahtavaa. [00:22:34] Tässä on hieman yksityiskohtainen selvitys mitä hajautusfunktiota voisi näyttää. Selvä. Nyt ongelma hash toiminnot on ihanteellinen maailmaan, meillä olisi vain yksi asia kussakin ämpäri. Mutta todellisuudessa, siellä ei vain yksi sana joka alkaa A. Ei ole vain yksi sana, joka alkaa B. Niin Tässä tapauksessa, jos me yhtäkkiä saada "marja" ja haluamme laittaa sen meidän tiiviste, ja näemme, oi, ei, banaani on jo olemassa, mitä me teemme? [00:23:03] No, meillä on kaksi vaihtoehtoa. Ensimmäinen vaihtoehto on lineaarinen luotaa, joka tarkoittaa vain mennä etsimään seuraava tyhjä ämpäri. Mene etsimään seuraavaan tyhjä array merkintä. Ja vain laittaa "marja" siellä. Tiedän siis sen pitäisi mennä banaani ämpäri yksi. Mutta laita se ämpäriin kolme, koska kauha kolme on tyhjä. Toinen vaihtoehto on luultavasti mitä toteuttaa teidän p-sarja, jossa oli erillinen ketjutus. Joten jokainen oman kauhat, kukin oman matriisielementtiä, ei vain omistaa yksi sanoista, mutta todellisuudessa omistaa osoitin luettelon sanoista. Niin että jos sinulla on ollut banaani teidän tiiviste ja yhtäkkiä halusi lisätä marja, ei ole ongelma. Lisää vain marja loppuun, tai Alussa oman linkitetyn listan. OK, mahtava. Kysymykset hash taulukot ennen kuin lähdemme? [00:23:58] Selvä. Puut ja yrittää. OK, joten tämä oli toinen vaihtoehto toteuttamiseksi sanakirja. Olisit voinut tehdä yrittää. Joten se erikoinen puu, joka käyttäytyy kuin monitasoinen tiiviste. Joten näet kuvan jossa on joukko, joka viittaa joukko paneelit että kohta kasan paneelit että kohta nippu paneelit. Ja näemme, mitä se näyttäisivät tulevaisuudessa liukumäki. Ja yleisemmin, puu on mikä tahansa tietorakennetta jossa tiedot on järjestetään joissakin hierarkiassa. Joten missä näimme meillä jonkinlainen käsitys huipputason, seuraavalle tasolle, seuraavalle tasolle, seuraavalle tasolle. Joten tämä on luultavasti kaikkein selvä joitakin konkreettisia esimerkkejä. Joten tässä meidän puu. Voit nähdä, että se on erityisesti tasot että aloitamme että juurisolmu yksi. Ja voimme mennä alas meidän puu. [00:24:50] Binääripuu on tietyntyyppisen puu. Ja ainoa eritelmä varten binääripuu on se, että jokaisella solmulla on korkeintaan kaksi lehteä. Joten et aio nähdä mitään näistä solmuista on kolme tai neljä tai jokin muu määrä lehtiä. Ja sitten vielä tarkempi on binäärihakupuu jossa jokainen solmu vasemmalla solmu joutuu arvoa pienempi. Ja jokainen arvo oikeus tulee olemaan isompi. Joten jos näet 44 on meidän root, vasemmalle, 11, 22, ja 33 ovat kaikki alle meidän root. Ja oikealla ovat kaikki numerot bigger-- 66, 55, ja 77. Ja tämä ominaisuus pätee kaikilla tasoilla puu. [00:25:37] Joten kun menemme alas 22, 11, ja 33, on edelleen 11 on pienempi kuin 22 ja 33 on suurempi kuin 22. Ja se helpottaa etsiä sillä jos etsit numero, tiedämme tarkalleen, mitkä haara seurata alas. Joten tämä pitäisi muistuttaa sinua hieman binäärihaku. Joo? [00:25:56] Yleisö: Eli kun olet kuvataan binary, sanoit se on korkeintaan kaksi lehteä? HANNAH: Mm-hm. Yleisö: Voisiko se olla vähemmän? Hannah: Joo. Joten sanokaamme esimerkiksi sinulle ei ollut edes monia asioita ja et voisi täyttää kaikki lehtiä, se on hienoa, jos yksi on yksi. OK? Mahtavaa. Kaikki muut kysymykset puissa? OK. [00:26:16] Takaisin meidän yrittää niin puhuin noin vähän aikaisemmin, miten meillä on nämä monitasoinen paneelit. Joten tässä tapauksessa, alamme huipulla. Ja voimme seurata mitään tiettyä sanaa alas. Joten sanokaamme halusimme etsiä Turing. Aloitamme klo T, seurata sitä alas array, joka sisältää U, ja seuraa sitä kunnes me päästä tämä pieni delta, joka kertoo meille, kyllä, olet löytänyt sanan. Clear yrittää? Mitään mennä sinne? Kyllä? Yleisö: Onko symboli delta täytyy miehittää tilaan kokeilla? Hannah: Joo, niin se ei välttämättä tarvitse olla edes delta. Mutta me tarvitsemme jonkin verran kertoa computer-- pahoillani, niin että me tiedämme, että TUR ei ole sana. Koska sanokaamme meillä ei ollut tämä käsite delta, tämä käsite onnittelut, olet löytänyt sanan, se menisi läpi ja kerrata T-U-R, ja sitten sanoa, mahtava, löysin sen! Sen on oltava sana. Mutta se ei todellakaan ole. Haluamme koko Turing olla sana. Joten meidän täytyy olla jotain pää, joka sanoo, onnittelut, olet löytänyt oikeutettu sana. Yleisö: Joten jos sinulla on ollut, kuten 26 kirjaimia, voisitteko oikeasti on 27 avaimet sinun kokeilla? [00:27:24] Hannah: Mahtavaa, joo. Joten itse olen sitä mieltä, että tulee olemaan seuraavan dian. Ta-da! Jos, jos sinulla on solmu teidän yrittää, olet menossa on 27 lasta sijasta 26. Kysyttävää kanssa? Joo? Yleisö: Miksi yrittää ottaa niin paljon tilaa [kuultavissa] kuten mennä? Miksi se pitää [äänetön]? Hannah: Toki. Mennään takaisin. Kysymys on, miksi ovat yrittää niin paljon suurempi kuin jotain tiiviste. Joten kaikilla näillä tasoilla, vaikka he eivät tähän piirretty, sinulla on kaikki 26 merkkiä. Ja syy, että et voi sanoa, oh, mutta kuten on Turing, I ei tarvitse olla mitään näistä samat asiat tasolla U. No, jos yhtäkkiä halusi lisätä jotain, joka oli kuin T-H, sinun täytyy olla valmiudet lisäten, että sana. Joten jokainen kirjain, olet menossa on on nippu paneelit tulossa pois siitä. Voit siis nähdä, miten se saisin todella iso, todella nopeasti. Muita kysymyksiä? Selvä. Joo? [00:28:29] Yleisö: Milloin yrittää nopeammin kuin hash taulukoita? [00:28:33] Hannah: Milloin yrittää nopeammin kuin hash taulukoita? Joten jos sinulla on ollut todella huono tiivistefunktio. Joten sanokaamme olin kuin, tässä on hajautusfunktio. Ei ole väliä mitä sana annat minulle, olen aina aikoo laittaa sen array merkintä 0. Ja niin päädymme vain laskemisesta Kaikki yhdellä iso pitkä linkitetty lista. Ja niin hakuaika veisi pahimmillaan n jos se on aivan lopussa meidän luettelosta. Kanssa kokeilla, meidän on vain kerrata läpi kirjaimet sana. Joten vaikka lisäsimme nippu lisää sanoja meidän kokeilla, se ei vie meitä enää löytää yksittäistä sanaa. [00:29:09] Kaikki meidän täytyy tehdä on, sillä Esimerkiksi tässä tapauksessa, sanotaanko etsimme zoom, olisimme vain kerrata yli Z-O-O-M, neljä kirjainta. Niin, että vain pituus sana zoom. Sillä ei ole väliä kuinka monta lisää sanoja laitamme tässä yrittää. Voimme aina se näissä neljässä vaiheessa. Mahtavaa. Kyllä? [00:29:32] Yleisö: Niin [äänetön] on array, eikö? [00:29:34] HANNAH: Mm-hm. Yleisö: Jos olet etsivät [äänetön] olisi sinun täytyy mennä läpi matriisisi löytää [äänetön]? Hannah: Toki. Yleisö: Eikö se vie enemmän aikaa? Hannah: Jos aion sanoa, että joukko on aina olemaan, B, C, D, E, F, G, blah blah blah, joten jos en aina tiedä sen samassa täsmälleen samassa järjestyksessä, jos en aina tiedä sen aakkosjärjestyksessä, Voin vain sanoa, O on numero niin ja niin aakkoset. Hyppää vain kyseiseen paikkaan. Koska muistan, jossa paneelit, voimme käyttää tahansa osa, joka array jatkuvassa aikaa, jos tiedämme, mistä me etsimme. Joo? [00:30:09] Yleisö: Edellisenä liu'uta [äänetön] 27, mutta 26 ensimmäistä. [00:30:14] Hannah: Anteeksi? [00:30:15] Yleisö: Ei ole ensimmäinen yksi 0, joten eikö olisi 26? [00:30:18] Hannah: Toki, niin kun sanomme 27, joka on aio antaa meille indeksit 0 kautta 26. Mutta jos todella luottaa ne pois, se tulee olemaan 27. Hyvä kysymys. Entä muuta? Joo? [00:30:31] Yleisö: Niin yrittää hitaampi kuin hash taulukoita? [00:30:34] Hannah: Yrittää tulevat olemaan, vuonna Teoriassa nopeampi kuin hash taulukoita mutta vievät enemmän muistia. Joo? Yleisö: [äänetön]? [00:30:45] Hannah: Olen pahoillani, en kuule sinua. Yleisö: [äänetön]. 0-25 antaa sinulle 26. [00:30:54] Hannah: 0-25 olisi antaa sinulle 26, oikea. [00:30:56] Yleisö: Ja sitten [kuultavissa]. Hannah: Oikea. Joten numero olemme täsmennetään on monia asioita meidän array. Joten jos meillä on 27, se on aio antaa meille 0 kautta 26, joka antaa meille tilaa, tässä tapauksessa, En lukien heittomerkki. Joten olemme pääsemässä 0 kautta 25 ovat 26 ensimmäisen aakkosten, tai kaikki 26 aakkosten. Ja sitten, että viime asia, maahantulon 26, on olemaan tarkistaa merkki, tai delta. Entä muuta? Mahtavaa. Kadonnut my space. OK, viileä. [00:31:31] Joten me jo tätä asiaa. Mutta iso kauppa pois välillä yrittää ja hash taulukoita on se, että yrittää tarjota, vuonna Teoriassa vakio etsiä kertaa, mutta käyttää paljon muistia. Okei, nyt meillä on hieman vähemmän monimutkaisia ​​rakenteita, ja me voidaan tehdä C, ja me siirtyä oikealle pitkin. [00:31:49] Joten pinot, näimme tämän luento, jossa on jotain pino tarjottimia, joissa viimeinen asia laittaa pinoon on menossa olla ensimmäinen asia, otat pois. Niin, että mitä oikeastaan ​​määrittelee pino on, että viimeinen asia mitä laittaa tulee olemaan ensimmäinen asia otat pois. Ja terminologiaa, jota käytämme jos aiomme laittaa jotain, jos aiomme lisätä jotain meidän pino, kutsumme että työntämällä. Ja jos otamme jotain pois, me kutsumme sitä popping. Ja jos aiomme toteuttaa pinon, me täytyy olla varma seurata Sekä koon ja kapasiteetin. Joten kokonaismäärä elementtejä voimme Pidä ja nykyinen määrä elementtejä että käymme. [00:32:27] Ja hyvin samalla, meillä on jonoja. Ja ainoa ero on sen sijaan pinoja, sanoimme viimeinen asia laitamme on ensimmäinen asia, otamme pois. Joten jonot, Ensimmäinen asia, laitamme tulee olemaan Ensimmäinen asia, otamme pois. Joten tämä on kuin jos olet todella riviin myymälä ja olet autetaan, sitten ensimmäinen henkilö linjassa pitäisi olla ensimmäinen henkilö auttaa. Niin että olisi jonossa. [00:32:52] Joten meidän täytyy seurata koko, kapasiteetti, ja pää koska olemme vie kaikki pois edestä luettelon sijasta takaisin. Kysymyksiä tähän? Kaikki C kysymyksiä, joita vaivaa sinua? Tietorakenteet, mitään, että hauskaa? Okei, viileä. Joten minä se luovuttaa Alison kohteeseen hypätä hieman ohjelmointia. [00:33:14] ALISON: Voi, näemme. Saa nähdä, miten hyvin teen täällä. OK, aion yrittää lentää kautta tätä kamaa, kaverit. Hannah meni hyvin vuonna syvyys kaikista hänelle asioita. Aion yrittää antaa olet nopea räjähdys yleiskatsaus jotta voimme saada Davin kaikki hauskaa JavaScript ja turvallisuus asioita että ehkä itse haluavat kuulla lisää. [00:33:33] OK, kuten Hannah sanoi, jos sinulla on kysyttävää, Aion liian nopeasti, ota, haluaisin tietää. Vastaan ​​kysymyksiin tarvittaessa. Joten aloittaa, aiomme aloittaa todennäköisesti yksi ensimmäisistä asioista olet oppinut web ohjelmointi, käyttöoikeudet. Joten chmod, te olisi pitänyt mestareita tämä kaikki web ohjelmoinnin, että olet tehneet viime aikoina. Se on pohjimmiltaan vain komento joka muuttaa käyttöoikeudet tai käyttöoikeudet meidän tiedostojärjestelmä esineitä. Tietenkin, todella katso nämä, jos olet ottaa mitään ongelmia näillä aikana ongelma sarjaa, olet saattanut käyttää ls -l, joka on pitkä, saada näkymä sellainen kuin tämä, jossa voit itse nähdä kaikki tiedoston käyttöoikeuksia. [00:34:16] Ja oikeastaan, me vain menossa läpi melko nopeasti vain melko paljon, mitä kukin näistä tarkoittaa. Joten olemme vrk täällä, joka vain sanoista hakemistoon. Ilmeisesti täällä, näemme rwx, joka on luettava, kirjoitettava ja suoritettavan. Nämä voivat myös olla edustettuna bittiä, joka me päästä seuraavalla sivulla. Joten jokainen kolmikko että näimme täällä, joten se on kolme kolmisoinnuista. Olemme rwx, r mitään X ja r mitään x tätä ensimmäistä tiedostoa. Se tämän yleisen rakenteen. [00:34:49] Joten meillä on joitakin hakemistoon. Meillä on joitakin käyttäjäryhmä näitä oikeuksia. Jotkut ryhmä, jolla on nämä oikeudet, ja maailmassa, joka on lupa. Voit ajatella näiden kuin kolmikko. Voit ajatella näitä kolme bittiä. Joten he voivat pitää arvot minnekään 0 ylös 7, minkä vuoksi joskus meillä oli et chmod 600 sijasta chmod rw riippumatta. Pääsemme esimerkiksi siellä. Mutta pohjimmiltaan, voit ajatella Näiden joko juuri rwx, tai voit ajatella niitä joidenkin numero, jos tämä ensimmäinen täällä on numero väliltä 0 ja 7, tämä toinen on numero väliltä 0 ja 7, ja kolmas on numero väliltä 0 ja 7, OK? [00:35:38] r: n arvo on 4 paino arvo on 2, ja x: arvo on 1, minkä vuoksi tämä lupa tässä olisi chmod 700. Koska tässä tapauksessa täällä, se sanoo me ovat ensimmäinen bitti siellä käännetään päälle. Joten meillä on 4 lukemista. Toinen bitti käännetään päälle W, joka on 2, joten nyt meillä on 6. Ja kolmas bitti käännetään päälle x, joka on 1, niin saamme seitsemän. Ja tietenkin, ryhmämme ja maailmamme ovat kukin 0. Joten tämä on myös vastaa chmod 700. Ja haluan ehdottomasti yrittää ymmärtää kartoitus näiden. En ole varma, jos se on keksiä tietokilpailu ennen, mutta se olisi kysymys, että voisin kysyä. [00:36:18] Vain vähän menee vielä syvemmälle chmod täällä, täällä on hyvin yleinen rakenne chmod puhelun. Niin tietysti olemme chmod täällä. Viitteet, mitä tämä tarkoittaa on jotka annammeko nämä oikeudet tai jotka me otetaan nämä käyttöoikeudet pois. Joten meillä on täällä käyttöoikeudet, kuten olemme antaneet teille chmod plus x, kuten näemme pian. tarkoittaa vain antaa nämä erityiset käyttöoikeudet kaikille. Anna heille kaikille. Joten voi hyvinkin olla u plus x tai g plus x tai o plus x tai useampia viipymättä. Niin, että ensimmäinen osa on aina olemaan viittauksia. Ketä me antamalla näille oikeuksia, tai jotka me ottaa ne pois? [00:37:03] Toinen on operaattori. Joten te kaverit ovat enimmäkseen käsitelty plus. Tämä antaa käyttöoikeudet kuka olet heille, katsoo miinus, loogisesti, poistaa ne. Joten ei mitään liian kauhea siellä. Ja sitten tilat on mitä puhuimme lukemisen, kirjoittamisen tai täytäntöönpanosta. Joten plus x tarkoittaa antaa suoritettavan käyttöoikeudet kaikille. Ja sitten, tietenkin, johon tietyn tiedoston tai hakemiston. OK? Jokainen hyvä chmod? Ei liian huono? [00:37:37] OK, niin HTML, joku teistä ovat tarpeeksi vanha to-- MySpace ikä? Lähetin tämä minun osassa, ja kirjaimellisesti puoli ihmisiä katsoi minua kuin olisin ollut hullu. Ja olin kuin, kaverit, emme ole, että vanha. Tule. Joten Hypertext Markup Language, se on rehellisesti vain tapa, jolla voit näyttämään tiettyjä asioita internetissä. Joten se markup language. Se ei ole scripting kieli. Ei mitään logiikkaa siinä. Se on yksinkertaisesti muuttaa miten asiat näytetään. OK, niin se tärkeä eroa tehdä. Se käsitteli markup language, ei scripting kieli. [00:38:12] Joten tässä meillä on HTML-tunnisteita. Tämän slide ovat luultavasti suurin osa ne, jotka sinun pitäisi olla perehtynyt ja todella mukava. Joten tietenkin, meillä on meidän HTML tag, joka nimeää, että kaikki Näiden kahden on HTML. Meillä on joitakin linkki, joka ilmeisesti antaa sinulle linkki ulkoiseen web-sivun. Jotkut otsikko, meidän pää täällä. Ja meillä on kehomme kanssa H1, joka on otsikon, niin se tekee se mukava ja rohkea ja isompi. Ja sitten meillä on joitakin p, joka on kohta. Sinun pitäisi varmaan tietää ja tuntee asiat kuten miten voit lisätä kuvan, ovat Onko muita otsikko luokat? Haluan ehdottomasti olla mukava div. Joten nämä ovat useimpien tagit että sinun pitäisi tuntea. Mutta tietenkin, kuten kaikki CS 50, luettelo ei ole tyhjentävä. Varmista siis verestää että. [00:39:08] CSS, joten CSS, jos joku teistä katsella minun seminaari kaksi viikkoa sitten, on oikeastaan ​​vain tapa muotoilla sivun? OK, joten meillä on kuvauskieli. HTML-, joka huolehtii vain tekstin ja missä se voisi olla sivulla. Mutta CSS on oikeastaan ​​mikä tekee siitä melko. Voisit olla näitä HTML tiedostoja, mutta kun me puhumme myöhemmin, Olen melko varma, että se voisi olla seuraava dia, se on yleinen käytäntö, ja todella Käytännössä että me todella kannustaa, voit pitää ne erillään, kun me puhua MVC ja että koko paradigma. Se on todella mitä tämä ruokkii. [00:39:42] Joten CSS on vain tapa tehdä asiat näyttävät aika. Asioita täällä, kuten kehon ja #title ja .info, näitä kutsutaan valitsimet ja mitä he tekevät on ne valita tiettyjä asioita sisällä HTML-tiedoston ja soveltaa mitä tahansa tyyliä, mikä tavallaan asioita, jotka haluat, tähän tiettyyn osa web sivu. Joten tässä, meillä on taustaväri ja väri ja kirjasinperheen olemuksen sovelletaan mitä on kehon. Joten jos me katsoimme takaisin tänne, se ei sovelleta otsikko. Se koskisi vain sitä, mikä on näissä kehon valitsimet, OK? [00:40:22] Osastoa täällä, tämä on olemaan sama asia, tekstin väriä on sininen on vain menossa vaikuttamaan mitä on sisällä otsikko valitsimet. Sekä info täällä, teksti on vaaleanpunainen, mitä: n info, joka on täällä. Joten ainoa asia, joka olisi vaaleanpunainen tällä sivulla on päivämäärä, maanantai, 17 marraskuu 2014. OK, joten CSS on vain tapa vaikuttaa enemmän over-- kyllä? [00:40:48] Yleisö: Miksi teillä on käyttää hash kanssa otsikko? [00:40:51] Hannah: Seuraava dia, lupaan! Pääsemme sinne. Joten tästä syystä meidän on käytettävä hash. Joten valitsimet ottavat kolmeen muotoja, jotka me puhua te noin. En fyou haluavat oppia lisää, siellä on paljon siellä. On hienoa CSS asiakirjoja. Ei tunnistetta, joka on tehtävä vain normaalin tageja HTML. Joten h1, p, div, h2, tuollaiset asiat. Ja voimme vain nimi niille kuin on. Joten kuten näemme täällä elin, se on normaalia tag. Joten voimme vain laittaa kehoon me puhumme meidän CSS-tiedosto. [00:41:26] Osaston, koko syy meillä on tämä hash on meillä mitä pidetään tunnus. Joten ID tulisi aina olla yksilöivä HTML-sivulla niin, että kun olet viitaten siihen, et tietää, että olet vain viittaavat yksi erityinen asia. Joten tässä tapauksessa täällä, meidän H1 täällä, CS 50 tarkastelun istunto, meillä id otsikko. Joten jotta vain viitata kyseiseen pala meidän HTML, teemme hash otsikko. Vain yleissopimus, tunnukset on nimetty kanssa hash eteensä. Samalla tavalla, näemme info tässä luokassa. Ja niin luokka CSS on nimetty piste luokka tai piste mitä se luokka on. Joten tässä tapauksessa täällä, se on info. [00:42:10] Joten otan sen takaisin. Molemmat olisivat vaaleanpunainen meidän CSS täällä koska ne molemmat ovat luokan info. Ja meidän CSS-tiedosto, olemme nimenneet että mitään luokan info on vaaleanpunainen. Onko järkeä? Kyllä? [00:42:27] Yleisö: Jos sinun pitäisi tehdä kaikki kehon valkoinen, ja sitten yrität tehdä jotain sisällä sininen, olisi, että aiheuttaa ongelmia? [00:42:34] Hannah: Niin CSS on CSS. Joten mitä on kohti pohja etusijalla. Joten jos teet jotain kehon, ja teet kaiken valkoinen, ja sitten myöhemmin muutat otsikko tai muutat tekstin runko, se korvaa ne. Joten mitään kohti pohja etusijalla. Kyllä? [00:42:56] Yleisö: Ja tunnukset ovat ainutlaatuisia, mutta luokissa voi olla? Hannah: Oikea. Joten tunnukset olisi ainutlaatuinen, ja luokat voivat viittaavat niin paljon kuin haluat. Muita kysymyksiä? Kyllä. [00:43:09] Yleisö: [äänetön]. Olen miettinyt, onko joka tekee eron. Hannah: Olen pahoillani, mikä oli kysymys? Yleisö: On pieni "F" ja pääoma "F." Hannah: Joten ero pienten "f" ja pääoma "F" ei pitäisi tehdä eroa. Joten "f" on 15 joko tavalla. Cool, mitään muuta? Jokainen hyvä, CSS? Kyllä? [00:43:30] Yleisö: Anteeksi. Voitko olla luokka ja tunnus? [00:43:35] Hannah: Kyllä, voit. Asiat voivat olla sekä luokan ja tunnus. Ja suosittelen lämpimästi testaamalla nämä itse. CSS opit parhaiten juuri tekemällä jotain, hyvin yksinkertainen web-sivun, laadittaessa joitakin CSS, ja juuri nähdä, miten ne ovat vuorovaikutuksessa. Ja voit saada erittäin hyvä, intuitiivinen tunne kuinka se toimii. [00:43:56] OK, jokainen hyvä CSS? Olet kaikki aikovat tehdä kaunis sivustot CSS nyt. OK, parhaita käytäntöjä, vain asioita pitää mielessä, asiat that-- siksi meidän telakka olet suunnittelija ja vaikka mitä. Joten sulje kaikki HTML tageja. Joten jos sinulla on avoin ja olisi lähellä elin. Jos sinulla on avoin kohta, olisi lähellä kohta. Tarkista sivusi vahvistaa. Teidän pitäisi olla hyvin tuttu Tämän p-asettaa seitsemän CS 50 talous kanssa W3 validator. Ja kuten aiemmin sanoin, yksi iso paradigmat erottelee tyyliäsi CSS teidän markup, joka on HTML. Ja sitten tietenkin, meillä on tämä suuri XKCD tänne. Jee, koomikko! [00:44:38] OK, TCP / IP. Näiden ja HTTP, pohjimmiltaan he molemmat protokollat. Joten voi vain ajatella heistä kuin säännöt jotka ohjaavat miten asiat liikkua Internetissä. Joten siirrin protokollaa, tai Internet-protokolla, on vain tapa varmistaa että tietoja saa mihin se on menossa ja että me tiedämme, jos me koskaan puuttuvat tiedot. Joten jos te muistelen luento Pari viikkoa sitten David jossa meillä oli neljä kirjekuoria, ne olivat kaikki luetut kuin yksi neljästä, kaksi neljä, kolme ja neljä, neljä neljä, tämä on vain joukko sääntöjä. Sanoimme, OK, kun olemme lähettää useamman kuin yhden paketin, aiomme numeroon se, mitä numero on ja kuinka monta yhteensä että käyttäjän tulee saada. [00:45:19] Ja tämä on vain kertoa kuka vastaanottaa tietoja siitä, onko ne ovat saaneet kaiken tai jos jotain eksynyt matkalla. Ja he tarvitsevat pyytää sitä uudelleen. Tämä on oikeastaan ​​vain joukko sääntöjä. Se, miten voit ajatella sitä, OK? Ja myös se määrittelee portin, joka te can-- Tiedän aikana luento, heillä oli koko luettelo satamista. Mutta meillä ei ole niitä täällä juuri nyt. [00:45:41] Joten Hypertext Transfer Protocol on, jälleen, se on toinen protokolla. Joten se on toinen joukko sääntöjä jotka ohjaavat, tässä tapauksessa, miten hyperteksti siirretään. Joten se vain mahdollistaa selaimissa puhua web-palvelimia. Ja kuten sanoimme täällä, se on kuten ihmisen kättely. Se on vain tapa hallita miten web-palvelin on menossa vuorovaikutuksessa selaimen. Ja meillä on vain pari esimerkkiä. Meillä on joitakin pyyntöjä täällä jos GET on menetelmä. Meillä on HTTP 1.1, joka on protokollan versio meille. Ja sitten, isäntä, joka on mitä me itse yrittää käyttää. Ja sitten, kuten näette täällä, me saada vastaus tähän 200 OK meidän HTTP vastauskoodilla. Meillä on iso lista aion vetää yhden sekunnin että te olisi tunnettava. Ja meillä on tämä sisältötyypin teksti / HTML, joka sanoo vain, millaista tietoa me vastaanotetaan palvelimelta, OK? Tämä kone ja tämän sisällön tyyppi ovat osa HTTP-otsikoita. Sinulla voi olla niin vähän tai niin vähän kuin tarpeen yhteydessä mitä olet tekemisissä. Joskus sinun on paljon tulevan tiedon palvelimelle. Ehkä he pyytävät paljon Tietojen käyttäjältä. Se vaihtelee riippuen yhteydessä. Jos tarkastellaan CS 50 Study, siellä on paljon enemmän siitä. Mutta meillä on paljon saada kautta, joten aion mennä oikealle eteenpäin, jos se on OK teidän kanssa? Cool. Pidä kiinni. Olen varmasti on, että Koko lista of-- huh! En tiedä miksi tämä on aina tänne. Kuvittelin kirjaimellisesti muuttanut se kun olin sitting-- [00:47:15] DAVIN: Haluatko opettaa sitä? Vai haluatko minua opettaa sitä? [00:47:17] Yleisö: Luulin voisimme vain näyttää niitä aloittaa. Tarkoitan, voit mennä niitä edelleen, mutta olen mielestä se järkevämpää, koska olen oli puhu vain HTTP statukset. Joten tässä koko lista. Luulen, mitä tulee tapahtumaan on Davin ei mene niihin myöhemmin. Mutta on koko listan, esikatselu maku tulemaan. OK, me aiomme blow-- tämä on menossa olla PHP pikakurssin kuin mikään muu. [00:47:41] Joten PHP, hyperteksti esikäsittelijään, se rekursiivinen Backronym, mikä tarkoittaa, että se oli nimeltään jotain muuta. Ja sitten he olivat kuin tämä ei oikeastaan ​​mitään järkeä. Niin ne vain nimetty it-- ja se oli lyhenne, joten ne vain tehnyt PHP hyperteksti esikäsittelijään, joka vain ei ole mitään järkeä. Fun tarina. Se on ohjelmointikieli. Niin paljon kuin Korostan, että HTML ei ole ohjelmointikieli, se kuvauskieli, PHP on ohjelmointikieli. Miten tiedät tämä on koska siellä on logiikka. On conditionals. Meillä on muuttujia, kun taas me ole yhtäkään näistä asioista HTML. [00:48:12] Okei, niin meillä on tämä pieni vähän täällä, että on kuin maku PHP. Joten perusasiat, muuttujien nimien aloittaa dollarin merkki. Monet ihmiset pitävät siitä. Muistuttaa meitä rahaa. Se kaikki loistava. Me kaikki haluamme PHP. Joten emme määritä muuttujan tyyppi enää. Se määritetään suorituksen aikana. Tulkki on luvassa, oh, me vain ajaa läpi, ja kontekstin mukaan, näemme, millaiset tyypit Näiden muuttujien täytyy olla. Ei ole päätehtävä. Asiat vain ajaa. Te kanssa tuonti omassa viime p-set, huomaat tämän. Ei ollut todellakaan päätehtävä. Sinä vain kirjoitti, mitä halusit tapahtua. Ja se vain sellainen tapahtui. Niin, että PHP sinulle. [00:48:56] Paneelit ovat hyvin samankaltaisia. Meillä on vielä tätä kiinnike. Täällä meillä on joitakin muuttuja nimeltään sov, ja se on yhtä suuri to-- meillä normaali kiinnike merkintätapa. Ja meillä on joitakin keskeisiä arvoa. Ja suuri ero välillä C ja PHP paneelit on se, että meillä voi olla tämän associate-- voimme liittää arvoja avaimia. Joten sen sijaan vain ottaa ryhmän, joka on indeksoitu useissa tai asema Kyseisen alkio taulukossa, voimme todella yhdistää sen avaimen. Jos voimme sanoa, OK, haluan tahansa arvo liittyy hedelmää. Ja ehkä meillä on hedelmiä meni banaani. Niin se olis palata banaani meille. [00:49:41] Mutta pohjimmiltaan, eniten voimakas asia tässä on se, että jos te muistaa demo luento missä me pohjimmiltaan rewrote aapinen PHP, ja se was-- lookup oli oikeastaan ​​vain haluavat, tämä avain on olemassa? Se on todella sellainen voima sen. Sinun ei tarvitse kerrata kautta array. Sinun ei tarvitse tietää mitä tilaa se on. Se voisi olla lopussa tai alussa. Niin kauan kuin tiedätte avain joka on liittynyt arvo, PHP voi vain sylkeä, että arvo Oikea ulos sinua, OK? [00:50:09] Ja sitten meillä on myös vain juuri siksi me voi olla avain arvopareja ei tarkoita, sinun täytyy. Voit myös vain luoda normaali array kuin täällä, alaosassa, jossa se on vain yksi, kaksi, kolme, neljä. Nämä ovat meidän arvomme. Ja itse asiassa, niiden avaimet ovat indeksejä. Joten avain voisi olla nolla. Avain kahdelle olisi yksi. Niin edelleen ja niin edelleen, ellei te nimenomaan määrittää avaimen, voisit olettaa, että arvo on vain heidän indeksi. Onko järkeä kaikille? Ei kysymyksiä? Mahtavaa. [00:50:38] OK foreach on tapa kerrata läpi paneelit. Joten meillä on jotain täällä, vain pääpiirteittäin. Joten foreach, nimi meidän array, kuten mitä tahansa haluat soittaa jokaiselle elementin, array, ja voimme tehdä jotain että tekijä tai tämän arvon. Joten meillä on esimerkki tästä. Meillä on assosiatiivinen array nämä kaksi merkintää baari liittyessä foo ja QUX olla mukana baz. Joten avaimet ovat foo ja Baz. Arvot ovat baari ja QUX. Joten foreach, meillä on joukko täällä, koska keskeinen arvo pari. Näin voimme käyttää sekä avain ja arvo. Ehkä haluat vain arvo, jolloin voisit tehdä kuten sov kuten $ arvo, ja sitten ovat vain päästä arvo kun kerrata läpi. Mutta ehkä joidenkin syystä haluat avaimen, minkä vuoksi päätin Tässä esimerkissä sen sijaan. Joten voit itse manipuloida avain ja arvo tässä tapauksessa. OK? Kysymys? [00:51:41] Yleisö: Jos halusi vain manipuloida avain, olisi sinun täytyy tehdä foreach-- [00:51:45] ALISON: Oikea. Joten jos halusi manipuloida vain avain, voisitte vielä tämän syntaksi koska jos vain on sov jotain, kuten yksi asia, se on menossa olettaa haluat arvoa, ei avain. Joten jos joskus on vain aivan kuten sov sillä, ehkä tämä on kuin $ elementti, se tulee olettaa, että kysyt vain arvo kussakin pisteessä. Jos nimenomaan haluat tehdä jotain näppäintä, vaikka et aio tee mitään arvoa, tarvitset tämän rakenteen että meillä on täällä missä olet nimenomaisesti pyytävät sekä avain ja arvo. Suuri kysymys. Entä muuta? Cool. [00:52:27] Okei, PHP ja HTML. Voi, olemme takaisin p-asettaa seitsemän uudelleen. Joten tämä näyttää hieman tutulta. Joten tämä on joitakin yksinkertaisia ​​HTML muodossa että on joitakin tulo nimi hei. Ja me näemme meillä menetelmä GET. Ja jos me muistamme meidän p-sarja, kun tämä lomake lähetetään, se lähettää array nimeltään $ _GET että on kaikki nämä tulot tai muuttujia muoto, jonka pitäisi olla manipuloitu meidän PHP. Joten tässä tapauksessa käyttäjä asettaisi heidän nimensä. Ne väittävät sitä. Ja me näemme, että saamme joitakin array täällä. Meillä GET array. Ja olemme päästä nimi. [00:53:11] Niin, että sanoo, OK, anna minulle arvoa, joka on liittynyt nimi, nimi on tässä avainasemassa. Ja joka kuvaa suoraan, mitä sanoimme meidän tulo nimi on. Joten tämä oli antaa sinulle avain mitä tulee olemaan teidän array täällä. Onko järkeä kaikille? Kyllä? [00:53:32] Yleisö: Onko nimi GET viittaavat violettiin rivi [äänetön]? [00:53:36] ALISON: Se viittaa tämän tästä. Joten tällä alalla täällä, se viittaa tähän nimi tähän. Joten tämä olisi voitu nimetty kuten puhelinnumero, tai mitä tahansa. Tämä nimi oikeastaan ​​kertoo, mitä soitat tällä alalla? Miten aiotte viitata tällä alalla? Ja tämä nimi on todella haluavat, olemme sanomalla tämä kenttä on nimeltään nimi. Näin me aiomme käyttää sitä. [00:53:59] Yleisö: Eli onko se kuin, tulo nimi on sama kuin Bob, and-- [00:54:02] ALISON: Oikea, niin voit saisi Bob sinne. Aivan. Jokainen viileä? Okei, joten GET vs. POST, nämä ovat pääasiassa kahdella tavalla että ohitamme tiedot HTTP-pyynnön. Te olisi pitänyt nähdä molemmat toivottavasti. Joten GET, tiedot johdetaan URL. Joten jos koskaan tehdä Google hakuja, YouTube, luultavasti luultavasti huomata joitakin kysymysmerkki. Ja sitten, kaikki sanat että olet vain laittaa sinne. Ja POST kulkee data HTTP viestin runko. Joten toisin GET, et sellaista harkita että tiedot on piilotettu käyttäjältä. Mutta mitä todella tärkeää ymmärtää on se, että tämä on edelleen aivan yhtä epävarma kuin GET. Analogisesti tykkään käyttää on, jos sinulla on tilinumero ja kirjoitat sen ulkopuolella kirjekuori, että ihan turvallinen. Jos sinun pitäisi kirjoittaa se pala paperi ja laita se sisälle kirjekuoren, se on silti todella turvaton, koska kaikki mitä sinun tarvitsee tehdä on avata, että jopa ja tarkastella todellista sisältöä Viestin nähdä, että. Joten tämä on "piilotettu", ja ihmiset haluavat mielestäni se on turvallista, mutta se todellakaan ole. Ja olen varma, että Davin tulee päästä, että enemmän, ehkä. Mutta se on tärkeä eroa tehdä ja jotain todella hyvää ymmärtää. [00:55:15] OK, SQL, Structured Query Language. Kaikki jutut, jotka olemme nähneet niin äskettäin! Joten se on pohjimmiltaan vain suunniteltu, tietenkin, hallintaan tietoja. Te oli paljon kokemusta tämä teidän taulukoita PHP MyAdmin. Ja on neljä yhteistä kyselyt että haluamme te tietää. Joten siellä on päivitys, lisää, Valitse ja poista. Joten varmista, että tiedät ne todella hyvin. Aiomme mennä niiden kautta todella nopeasti. [00:55:40] Joten päivittää, todella, kuten mitä luulisi se, se vain päivittää tiedot tietokantaan. Joten meillä on esimerkki tästä. Tämä on yleinen rakenne päivityskyselyn. Joten me päivittää taulukon että puhumme. Haluamme asettaa tiettyjä arvot, tietyt sarakkeet yhtä erityisiä arvoja. Joten tämä vain päivittää taulukon, muuttuvat arvot kaikki rivit tässä tapauksessa. Eli tässä yksi täällä, todellinen Meillä on esimerkiksi insert-- pahoillani. Tämä dia edennyt ilman minua ymmärtämättä sitä. [00:56:17] Joten tämä päivitykset taulukon col1 yhdenvertaisen jotta VAL1 jossa talo on yhtä "Currier." Mitä tämä tekee on se vain muuttuu, se vain päivittää näitä arvoja tiettyihin paikkoihin. Joten tässä ensimmäinen, se muuttuu nämä arvot kaikkea teidän pöytä, OK? Se tulee muuttamaan tätä sarake jokaisesta merkintä, jokaista yhden rivin. Mutta tämä, jos voisit ajattele sitä karsinnassa. Niin se vain muuttuu se hyvin tiettyihin paikkoihin. Joten p-asettaa seitsemän, kun ehkä päivitetty määrä rahaa että käyttäjä oli luultavasti ollut Joissakin jossa tunnus on yhtä istuntotunnus, eikö? [00:56:53] Koska et halua Muuta määrä rahaa jokaista henkilöä, joka käytti sivustosi. Sinun halusi muuttaa sitä yhden tietylle henkilölle, että henkilö on kuka oli käyttää sitä tuolloin. Oikea? OK, niin laita, lisää tietyt arvot taulukoita. Tämä on kuin silloin, kun olet luodaan uusi käyttäjä. Yleinen rakenne täällä on lisätä osaksi mitä tahansa taulukon puhumme. Arvot, että arvot, jotka me todella haluamme lisätä. OK, niin näemme täällä, me ovat työnnä pöytä. Tämä on erityinen palstoja niiden vastasi arvoja. Joten tämä kertoo, insert uusi rivi, joka sisältää arvot VAL1 ja VAL2 alle Näitä erityisiä sarakkeita. [00:57:33] Joten ehkä haluat vain täyttää pois puoli asioita tällä rivillä. Sitähän tämä osa täällä voit tehdä. Sen avulla voit todella mitkä osa. Kyllä? [00:57:44] Yleisö: Voitko vain [äänetön] solujen rivin [äänetön]? [00:57:52] ALISON: Jos täyttää vain tiettyjä osia rivin, Loput näiden solujen ovat vain tyhjiä. Niin kauan kuin he voivat olla tyhjä, se ei ole ongelma. Jos yrität käyttää niitä, se on aio palata tyhjiä elementti. Mutta on tärkeää tietää että tietyissä taulukoissa, Heidän on voitava olla tyhjä. Olet ehkä joutunut Ongelma aikana p-sarja koska emme anna mitään teidän arvot on null. Mutta voit määrittää Valinnainen arvo pöytään. [00:58:26] OK, valitse, joten tämä on vain tapa saada erityisiä tietoja pöytä Joissakin tunniste, jonka haluat. Joten valitse tähti pöytä, jossa col on yhtä jotain vain sitä, anna minulle kaikki siihen liittyvät tiedot jos tämä erityinen sarake on totta. Joten tähti tässä tapauksessa palauttaa koko rivi sinulle, OK? [00:58:49] Ja sitten, tässä tapauksessa valitse tähti taulukossa vain antaa sinulle koko pöydän. Ja sitten, poista ilmeisesti, se vain poistaa rivin taulukosta. Joten poistaa taulukosta, mitä taulukossa olemme löytymistä, jossa tiettyjä tunniste tai jotkut ehto on tosi. Kyllä? [00:59:07] Yleisö: Kysymys. Miksi käytät kaksinkertainen lainauksia, ja onko sinulla do lainausmerkkeihin tai yksittäinen lainauksia, se tee eroa? [00:59:13] ALISON: Lainausmerkkejä tai heittomerkkejä ei tee eroa SQL. Luulin nähneeni toinen kysymys. Kyllä? [00:59:20] Yleisö: Eikö se vaikuta, mitä saa pakeni kyselyn? [00:59:25] ALISON: Rob? [00:59:27] ROB: Mitä te tarkoitatte pakeni kyselyn? [00:59:31] Yleisö: Jos joku on yhdellä haulla muodossa of-- [00:59:36] ROB: Jos joku laita yksittäinen lainaus, niin niin kauan kuin olet puhdistus syöte, niin sillä ei ole väliä. Mutta jos käytät yhden lainaus ja olet väärin pakenevat tuloa, niin kyllä, he tarvitsevat laittaa heittomerkki, jotta voidaan rikkoa koodi. jos käytät lainausmerkkejä, ne täytyy laittaa kaksinkertainen Lainaan murtaa koodi. Mutta niin kauan kuin voit paeta asioita oikein, sillä ei ole väliä. Se vain menee käännettäväksi oikea symboli muutenkin. [00:59:59] Yleisö: Mitä paeta tarkoittaa? ALISON: No, kuten sanitoivan ja paeta. Tentti, että meillä on, suuri XKCD koominen, että ne vetää ylös, jos sinulla on, oh-- ROB: Se on viimeinen dia. ALISON: Se on viimeinen dia, todella? Oh my god. Siellä mennään, täydellinen. OK, joten periaatteessa voit pistää jotain tähän SQL-kysely missä se taukoja koodin, tai David osoitti luokassa, jos meillä on yksi quote 1 on 1, ja jos meidän koodia, me vain kopioida suoraan, että, ja meillä päättyy heittomerkki, mitä tapahtuu on saamme Joissakin lauseke tosi, että tulee antaa jonkun tulla meidän tietokanta ja saada tietoa, että me halua niitä saada. Joten puhdistus tulot tarkoittaa vain varmista että me pakenevat nämä merkkiä ja määrittämällä ne koska merkkiä ei asioita että olisi sallittava otettava kirjaimellisesti meidän SQL. [01:01:04] Joten iso asia, että sanoimme että te pitäisi käyttää olivat HTML erityistä merkkiä, joka on jotain että saatat haluta vilkaista. OK, poista. Datatyypit, tämä kaikki on verkossa. Koska olemme 15 minuuttia jäljellä, olen vain mene läpi tämä. PHP ja SQL, pohjimmiltaan tämä on vain meillä oli hakutoiminto, joka auttoi suojaamaan Näiden hyökkäyksiä. Joten kun käytät kysely, olimme varmista että asiat puhtaita ja vaikka mitä. [01:01:36] MVC on vain suunnittelu paradigma, niin malli, näkymä, ohjain. Se on vain tapa pitää asiat mukava ja hajosi samalla tavalla että meillä on tapana tekijä ulos koodi toimintoja. Tämä on vain web design kehys jonka avulla voit tehdä saman. Aion ohittaa tämän. [01:01:54] Tämä on jotain, että olen Olisi erittäin mukava kanssa. Se on erittäin pieni pöytä siellä. Se antaa sinulle toiminto esimerkki mallin. Olen juuri menossa läpi tämän, koska olen todella haluavat Davin pystyä puhumaan. Jos sinulla on kysyttävää, ota rohkeasti. Olen täällä sen jälkeen. Tule juttelemaan. Kanssa, että meillä on HTTP statukset. Ja Davin n räjäyttää kautta 15 minuuttia. Tämä tulee olemaan suuri. [01:02:17] DAVIN: OK. Uh, mikrofoni? Joo. Anteeksi. ALISON: tapa olla valmis. DAVIN: Ei, olen valmis. Olen valmis. Tehdään tämä. Se on valmis. OK. Anteeksi. Kaadoin kahvia itselleni. En tiedä olenko enemmän järkyttynyt, että näytän typerältä, tai että minulla ei ole kahvia enää. Joka tapauksessa, vain nopea tiedotus noin arkki teillä. Joten tämä levy teillä ei ole virkamies mitä on tietokilpailu. Tämä on virallinen mitä on tietokilpailu. Myös sivuilla kerromme teitä, OK, tämä tulee olemaan tietokilpailu. Joten pikku lunttilappua sinulla on, ei ole virallinen. Ja on virheitä sitä. Joten ei kannata vain sokeasti käyttää sitä. Niin joo, se siitä. Joten päästä tämän todella nopeasti. [01:03:05] Joten HTTP tilat. Mitä tapahtuu, kun sivusto, kaikki on kunnossa. Kaikki on OK. Kaikki tulee takaisin et miten haluat sen. Saat 200 OK. 301, jossa olemme nähneet, että 301 ennen? Odota, mikä hätänä? Anteeksi. Näimme i tina luento aikana turvallisuuteen. Joten aikana turvallisuus, joten jos David kirjoitettu http ja yritti sitten mennä cs50.net, te tulette näkemään 301 siirretty. Miksi? Koska se tulee suunnata automaattisesti meidän HTTPS. [01:03:35] Joten 301 muutti, vain se pohjimmiltaan uudelleenohjaus. Ja voit ajatella sitä näin. Mikä tahansa tilat, jotka alkavat 2: n, ne ovat kuin, OK, kaikki on OK. Mikä tahansa tilat, jotka alkavat 3, nämä ovat uudelleenohjaus. Tilat, jotka alkavat 4, että välineet siellä on jonkinlainen asiakkaan virhe. Tilat, jotka alkavat 5, että jonkinlainen palvelimen virhe. Joten sinulla sellainen hajottaa tilat niin. Joten 304 ei ole muutettu, joten sinun server.c p-sarjaa, joten sanokaamme ladattu cat.html. Kaikki tulee takaisin, saat 200S, OK, suuri. [01:04:03] Sanotaan, että olet päivittänyt sitä. No, sisällä että cat.html, sinulla on JPEG. No, JPEG ei ole menossa uudelleen. Et aio lähettää toiseen GET pyynnön palvelimelle, ja sitten saada kaikki nämä tiedot takaisin. Se tulee vain be-- että kuva on aiotaan välimuistissa koneeseen. Ja niin, että kuva tulee olemaan 304. Joten se ei ole muutettu. Jos sulje pois, kirkas evästeet, ja päivitä sitten ja yrittää ladata sivun uudelleen, olet menossa nähdä 200s. Et aio nähdä, että 304. [01:04:28] 400, huono pyynnöstä, todellinen nopea, kuten jos aikoivat lähettää JSON esine palvelimelle ja JSON esine oli virheellinen, näet jotain. 403, kielletty. Koska näet kielletty? Luultavasti Luultavasti? Yleisö: Chmod. DAVIN: Chmod, joo. Joten et ole asettanut käyttöoikeudet oikein. 404, ei löytynyt. Se vain ei ole siellä. Joten jos kirjoitat väärän URL. 500, sisäinen palvelin virhe, palvelin luultavasti ei ole määritetty oikein. Jotain ei teidän loppua, mutta jotain palvelimen puolella. Ja 503? Monet ihmiset näkivät 503s viimeisen p-sarja. Milloin se tapahtui? Kuulin kuiskaa. [01:05:05] Yleisö: Kun Google päättää olet robotti. DAVIN: Joo, kun Google päättää olet robotti, saat 503s. Niin, että ylikuormitus. Jos olet pyytänyt palvelimelta liikaa, se on yleensä väliaikainen. Ja useimmat teistä huomannut sitä. Joten näit 503. Olet ehkä ottanut hieman tauko, sitten 503s meni pois, ja kaikki oli kunnossa. [01:05:20] GABE: Real nopeasti, kun te olette päästä 500 luultavasti tämä viimeinen ongelma asettaa? Kyllä? [01:05:27] Yleisö: Yleensä jos palvelin on tiedosto väärässä paikassa tai [äänetön] niiden kone [äänetön]. [01:05:34] GABE: Joten se saattaa olla kokoonpano kysymys PHP palvelimella. Mutta se voi olla vain jotain kuten puolipiste että unohdin. Jos kirjoitat PHP, Joissakin virheellisen syntaksin saattaa saada jotain tuollaista. OK? [01:05:46] DAVIN: Cool. Haluatko minun tehdä juuri asti AJAX? [01:05:51] GABE: [äänetön]. DAVIN: OK. Joten mitä DOM? Mitä DOM seistä? [01:05:55] Yleisö: Document Object Model. DAVIN: Nice. Ja miksi me pidä siitä? Mahtavaa. Oikea, niin se vain antaa meille mahdollisuuden tutustua HTML, pääsyn sivuillemme hyvin nopeasti. Miksi? Koska olemme hoitoon meidän sivu, hoitoon meidän HTML-tunnisteet, käsittelemällä kaikki sillä jos he esineitä. Jos me kohdella heitä kuin he esineitä, niin mitä voimme tehdä? No, voimme soittaa toimintoja niitä. Ja tämä on tärkeää miksi? No, koska me aiomme käyttää JavaScriptin päivittää HTML, päivittää näitä esineitä. Joten jos kohtelemme heitä kuin esineitä, voimme kutsua toimintoja niitä. Aion päästä tähän pikku enemmän, kun menen JavaScript, mutta te kaikki nähneet, kuten document.getElementById. Joten asiakirja on elementti, saat elementti tunnus, niin olet menossa katsomaan joillekin tunnus HTML tag. Ja sitten, voit tehdä jotain muuta, että. Esimerkiksi kuten document.body, voit liittää lapsi. Joten aiot löytää asiakirjan. Sinulla on asiakirja. Olet menossa löytää ruumiin. Löysit ruumiin. Ja sitten, olet menossa soita jonkin toiminnon päälle. Joten liittää lapsi, ja voit liittää joitakin HTML kiinni loppuun kehon sisällä. Joten periaatteessa, olet vain käsittelemällä sitä kuin objekti. Hoidatko HTML tageja kuten objekti. Ja se on erittäin helppo ja nopea käydä niitä läpi. Mutta se voi myös soittaa toimintoja niitä joten voit käsitellä ja vaihtaa osia. [01:07:04] GABE: Koska tämä, miksi on Javascript tällainen kiva kieli vuorovaikutuksessa HTML? Kertoimet ovat, kun ihmiset olivat valinneet kielen selaimen, client side, JavaScript on todella mukava, se on todella hyvä käsitellä esineitä. Ja esineet ikään kuin objekteja, jotka näkyvät HTML, joten se on erittäin helppo JavaScript tehdä sellaista käsittelyä. DAVIN: Nice. Joten tässä on vain esimerkki. Joten mielestäni viime vuoden tietokilpailu, tai ehkä kaksi vuotta sitten, me kysyi voit luoda puuhun. Joten tämä on juuri sitä mitä tekisin. Joten voit aloittaa kanssa asiakirjan. Ja sitten et periaatteessa katsokaa tageja. Joten jos katsot, me aloittaa HTML-tunnisteen. Ja sitten, saat vihjeitä siitä, miten tehdä tämän perusteella sisennys. Joten pää sellainen oksat pois. Sisällä pää, meillä on toinen tag otsikko. Niin, meillä on otsikkokoodin. Ja sisällä että meillä on joitakin merkkijono. Ja niin me edustamme merkkijono ympyrä. Ja kaikki tagit ovat neliöitä. [01:07:54] Ja jos katsot, jos me ajatella tätä puuta, ja sanotaan, että HTML on vanhempi, sitten pään ja vartalon tulevat olemaan sisaruksia. He molemmat olemaan lapset että vanhempi. Joten koska he molemmat sisarukset, he olemaan eräänlainen vieressä toisiamme puumallin. Ja sitten, et periaatteessa tehdä täsmälleen sama asia. Joten ei ole vaikeaa, mutta olemme pyytäneet kysymyksiin, kuten tämä ennen sen tietokilpailu. GABE: Onko kukaan kysyttävää tähän mennessä? Onko se hyvä? DAVIN: Cool. JavaScript, OK, hyvää kamaa. Joten JavaScript, mikä on Javascript? No, JavaScript is-- se monimutkainen, mutta nämä ovat joitakin kohokohtia että sinun pitäisi pitää mielessä. Ensinnäkin, se on löyhästi kirjoitetut. Mitä tämä tarkoittaa? Joten PHP was-- joo, mitä kuuluu? [01:08:35] Yleisö: Sinun ei tarvitse erikseen valtion minkälainen muuttuja on. DAVIN: Perfect. Niin hän sanoi, et ei tarvitse nimenomaisesti muuttujan tyyppi. Juuri oikea. Joten C, jos olisin int i on yhtä kuin 50, sitten PHP, se on aivan kuin tämä, $ i, on yhtä suuri kuin 50. Sitten JavaScript, mitä puhelu on? Var, eikö? Se olisi kuin var i on yhtä kuin 50. Mutta sinun ei tarvitse olla kuten, OK, tämä on int. OK, tämä on merkkijono. Ei tarvitse tehdä. Se tulkitaan kieltä. Mitä tämä tarkoittaa? [01:09:04] Yleisö: Ei käännetty. [01:09:06] DAVIN: Mitä ei koottu tarkoittaa? Joo? [01:09:11] Yleisö: Sinulla ei ole uudelleen koodin saada se valmiiksi tietokone käyttää sitä. Se on juuri ottanut aikaan toteutus ja tietokone [äänetön]. DAVIN: Joo, niin se tulee läpi tulkin. Mutta olet aivan oikeassa. Joten olet koskaan kokoamaan sitä, eikö? Kun olit tekemässä teidän PHP ja JavaScript-koodia, et koskaan soittanut käännöksen. Et koskaan soittanut jotain tehdä tai mitään sellaista. Tämä johtuu sitä tulkitaan. Joten joka kerta se menee läpi selaimen, se menee läpi tulkin. Ja että menee tulkitsemaan sitä vain reaaliajassa heti sinulle. Mitkä ovat joitakin positiivisia ja negatiivisia ja ottaa tulkittu kieli ja ottaa käännetty kieli? Joten compiling-- joo, mitä kuuluu? [01:09:50] Yleisö: tulkittuna on hitaampaa. DAVIN: Missä mielessä? [01:09:57] Yleisö: Kun olet koota, sinulla ei ole tehdä mitään ylimääräisiä vaiheita suorittaa se, että tämä [kuultavissa]. [01:10:04] DAVIN: Oikea, täydellinen. Joten mitä sanoit on pohjimmiltaan, että kääntämiseen, kun käännät, sinulla on paljon alkuvaiheen kustannukset, eikö? Olet menossa kääntää sen. Mutta kun käännät sen, kääntäjä tulee optimoida. Se tulee olemaan nopeaa. Se tulee periaatteessa yhtä nopeasti kuin se voi olla. Tulkkaukseen, et koskaan on, että etukäteen kustannuksia. Pikemminkin se tulee olemaan hieman hitaampaa joka ikinen kerta kun sitä tulkitaan. Ja olet menossa on tulkita sitä joka ikinen kerta. Joten sen sijaan, että tämä yksi kulu, nyt olet täytyy tulkita sitä aina sivu tekee. [01:10:29] Joten tulkit ovat hyviä, koska sinun ei tarvitse kääntää se, mutta he huono, että jokainen ajoittaa sivu latautuu, se on menossa on tulkita tämän JavaScript. Ja se tulee ajaa hieman hitaammin kuin jos olisit kääntää sen. Voit communicate-- oh, odota. Käytetään manipuloida sisältöä ja ulkoasua. Olemme juuri puhuneet siitä. Se käyttää DOM. AJAX, me päästä AJAX hieman. Ja sitten, se on asiakkaan puolella. Joten PHP on palvelimen puolella. JavaScript on asiakkaan puolella. Mitä positiivisia tähän? Se sanoo. Se on nopeampi, eikö? Koska sinulla ei ole to-- se on nopeampi. Sinun ei tarvitse kommunikoida joidenkin muiden laitteeseen. Jos olet juuri teidän asiakas, et ole koskaan täytyy mennä ja nähdä, mitä palvelimelle ja sitten raportoimaan tai jotain sellaista. Joten asiakkaan puolella on taipumus olla hieman nopeammin. [01:11:15] GABE: Joo, mutta tämä ei tarkoita PHP on nopeampi kuin JavaScript tai mitään vastaavaa. Ne kulkevat tavallaan samassa nopeus, koska he molemmat tulkita kielillä. Asia, joka on hidas tässä pyynnöstä. Joten olet todella menossa aina yli Brasiliaan saada joitakin tietoja että asuu siellä. Mutta PHP ja JavaScript, ne eräänlainen ajaa samalla nopeudella. Se ei ole, että yksi on nopeammin kuin muut. Tämä myös, temppu kysymys. Joten JavaScript ei koskaan tule konekielelle, totta vai tarua? [01:11:47] Yleisö: False. GABE: False. Se on tullut kone koodia, koska kone koodi on ainoa asia kone ymmärtää. Vaikka se ei ole käännetty, se vielä tulee konekielelle koska tulkki on vain ohjelma, joka menee rivi riviltä ja muuntaa että rivi jotain tietokone ymmärtää. OK? Cool. [01:12:08] DAVIN: Tässä on vain hyvin yksinkertainen Hei maailma JavaScript-ohjelman. Joten en tiedä if-- olet nähnyt tämän. Mutta sinun täytyy vain HTML täällä. Ja sen sijaan todella toteuttavat JavaScript-koodit, niin olisit normaalisti laittaa sen päähän. Sinulla on koodit. Voit pudota se sinne. Kaikki me olemme tehneet täällä olemme sidoksissa in-- joten olemme sidoksissa JavaScript-tiedoston näin. Ja olet kaikki tehnyt tämän, eikö? Joten kun käytit jQuery ja Underscore.js viimeisen p-sarja, sinulla ei ole tonnia koodin ylös ohjelmatunnisteesi, jopa omassa päässäsi. Voisit tehdä sen, mutta sen sijaan olet vain yhdistää sitä. Ja olet liittämässä sitä aivan niin kuin sinä CSS. Niin se vain on helpompi lukea niin koodi ei ole kuin 1000 riviä pitkä tonnia toimintoja, jotka et ehkä käyttää. [01:12:52] Sen sijaan juuri linkittää sen. Se compartmentalizes sitä. Se on kuin kirjallisesti joitakin otsikkotiedoston, ja Sitten mukaan lukien otsikkotiedosto C. Ajattele sitä aivan kuten tämä. Mitä tällä tekee? No, tämä on menossa ajaa. Se tulee varoittaa. Joten aiot saada vähän pop up nimeltään Hello World. Nopea kysymys, vain järki tarkistaa, joten näet tässä kehossa, sanoa elin, HTML täällä. Mikä tulee ensin? Näenkö elin, HTML täällä, tai näen hälytys ensimmäisen? [01:13:19] Yleisö: Alert. [01:13:20] DAVIN: Oikea. Hän sanoo hälytys. Miksi? [01:13:22] Yleisö: Koska te mennä ylhäältä alas. [01:13:24] DAVIN: Kyllä. Perfect. Niin hän sanoo, menet ylhäältä pohja, joka on täysin oikea. Olet menossa ylhäältä alas. Ja JavaScript, jQuery, sinulla on toiminto, joka on kuin onload, tai valmiina, ja joka sanoo, OK, odota kaikki tämä HTML on ladattu. Ja sitten, soita JavaScript. Koska meillä ei ole, että täällä, Aivan ensimmäinen asia, joka tulee tapahtumaan on se mene ylhäältä alas. Se tulee lyödä että JS kutsua, se tulee varoittaa. Tämän jälkeen valitset OK, että hälytys menee pois. Sitten se tulee näyttämään voit kehon HTML täällä. Nice. [01:13:54] OK, joten vain todella nopeasti, kirjoittaminen JavaScript on super nopea. Jotta julistaa muuttuja, var nimi. Joten C, sinulla on int i, sinulla on julistaa millainen tyyppi se on. PHP, $. JavaScript, var. Olemme puhuneet tästä. Okei, mennään. [01:14:11] Silmukat, sama asia. Sama juttu. Toiminto julkilausumat, joten aivan kuten olet nähnyt C. Ainoa asia erilainen on niin kun saat muita ohjelmointikieliä, kuten kun otat 51 seuraavan lukukauden ja teet kanssa OCaml, voit käsitellä anonyymi toimintoja. Niin, että mitä sinulla on täällä. Joten haluat laittaa summa, jonkinlainen summa-arvon. Mutta saatat vain tehdä sen kerran. Joten et halua kutsua sitä toiminto summa, anna se toiminto ilmoituksen. Sen sijaan voit vain käyttää sitä anonyyminä toiminto. Ja olet nähnyt tätä paljon. Näet esimerkki Tässä pari dioja. Joo, näemme. GABE: Hyvä kysymys. Kun ehkä haluat käyttää anonyymi funktio täällä? Periaatteessa kun haluat jotain, kuten tapauksessa tapahtua. Joten kun hiiri on napsautetaan, esimerkiksi, Haluatko joitakin toimintoa kutsutaan. Joten ohitat tapahtuman käsittelijä, ohitat tapahtuman sellainen, toiminto, joka Haluatko kutsua. Ja mitä olet ohimennen on kuin lopussa päivä, vain osoitin että opetusta, jotta toiminto. Joten se ei ole kuin olet ohimennen koko koodin, aivan kuten osoitin toiminto. Ja sitten, kun joku napsauttaa hiiri, niin että toiminta saa kutsutaan. [01:15:17] DAVIN: Taulukot, joten voit on array ilmoitus. Sitten joukko laittaa asioita. Real nopea, mitä tämä tulostaa? Mitä kolmas elementti on? [01:15:31] Yleisö: "JS". [01:15:32] DAVIN: Oikea, se olisi "JS". Odota, mene takaisin. Mikä on pituus? [01:15:37] Yleisö: Kolme. DAVIN: Kolme, eikö? Täsmälleen mitä luulet. OK, nyt mennä. Taulukot, voit lisätä asioita heille. Joten voit mennä pidemmälle alkuperäisen rajoja. Vain jotain pitää mielessä. PHP, JavaScript, he hieman hieman enemmän anteeksi kannalta asioita niin. Esineet, kovasti structs C, hyvin paljon kuten assosiatiiviset taulukot PHP. Olette kaikki ollut kokemusta tästä. Joten JSON, kun olet ohimennen JSON edestakaisin p-asetettu kahdeksan, se on teidän esine. [01:16:03] Niin joo, esimerkiksi todellinen nopea esimerkki. Tässä on esine. Miten te viittaavat tähän esine, joten vain todella nopeasti, sanokaamme halusin löytää ulos, OK, mikä on kurssin? Ja niin objektin nimi tässä CS50. Ja sitten jos olisin assosiatiivinen array, miten tekisin? Tulen avaimella, eikö? Joten minulla on nimi array. Minulla on kiinnike, lainauksia, avain, end lainauksia, lopussa kiinnike, ja että tulee viittaus, että elementti sisällä minun assosiatiivisia array. Miten viitattu Tietenkin sisällä minun esine? Tietääkö kukaan? [01:16:39] Yleisö: [äänetön]. [01:16:40] DAVIN: Mikä hätänä? Yleisö: CS50.course. DAVIN: Oikea, joo. Niin CS50.course. Joten miten te viite asiat sisällä JSON esine on pisteellä. [01:16:48] Yleisö: Voit myös käyttää array syntaksi. [01:16:53] DAVIN: OK, hieno. [01:16:54] GABE: Voit myös käyttää CS50 kiinnike, merkkijono, kuten lainausmerkkejä. Yleisö: Minusta se on identtinen PHP. GABE: Se on sama asia. DAVIN: Hieno! Mutta näet tämän muissa paikoissa. Joo, niin pitää käynnissä. Tämä on, mitä juuri sanoin. Joten osaksi JavaScript jQuery esimerkki. Joten tämä on minun DOM, eikö? Real nopea, joten minulla on pää, hello world, elin. Minulla painiketta. Siinä sanotaan "työntää minua", niin haluan viedä sitä. Ja haluan tehdä jotain kun se napsautetaan. Oikea, seuraavaksi. [01:17:31] Oikea, joten tämä on minun JavaScript. Joten jQuery on vain helpompaa tapa kirjoittaa JavaScript. Joten tämä, ja mitä aion näyttää ensi, tulee olemaan jQuery, ovat samat. Niin he tekevät samoja asioita. Vain jQuery taipumus olla hieman helpompaa. Ihmiset yleensä haluavat sitä enemmän. Se on paljon toiminnallisuutta. Joten ihmiset pyrkivät käyttämään jQuery. Te kaikki käytetyt jQuery viimeisen p-sarja. Joten mitä tämä tekee? Miltä tämä JavaScript-- niin tämä on pelkkää JavaScript. Mitä tämä tekee? Mitä se aikoo tehdä? [01:18:03] Joten ensimmäinen, näet ikkunan onload. Oikea? Joten emme nähneet, että ennen. Joten tämä on menossa odottaa kunnes koko ikkunan kuormia. Joten se tulee odottaa HTML, kaikki kuvat kuorma ennen kuin se tekee mitään. Joten sanokaamme meidän DOM on ladattu. Kaikki on siellä. Sitten mitä tulee tapahtumaan? Joo? [01:18:19] Yleisö: Button tulee. [01:18:22] DAVIN: painikkeen jo siellä. Joo, niin painiketta n jo olemassa. Mutta tämä on menossa sanoa, OK, jos painan nappia, joten painikkeen jo siellä, kuin että HTML tag. Odota, mene takaisin todella nopeasti. Tämä tagi oikea täällä on olemaan painikkeen jo. On jo painiketta. Mutta sitten, JavaScript tag, täällä, se sanoo, OK, haluan saada elementti tunnus, joten hakupainikkeen sanoo vain, OK, haluan kartoittaa tämän muuttujan että painiketta. Niin, että muuttuja on vain helpompi tapa käyttää tätä nappia. Ja minä sanon, OK, jos painan että painike, joten jos painan että elementti, ja tämä elementti viittaa painiketta, jos painan sitä, sitten haluan soittaa toiminto. Tässä on yksi niistä anonyymi toiminnot puhuimme. [01:19:03] Soita jokin funktio. Inside että toiminto, pohjimmiltaan jotain olemme nähneet paljon, hälytys. Klikkaat haku-painiketta. Se tulee periaatteessa olla painike. Klikkaat sitä. Saat että hälytys. X ulos. Siinä kaikki. Joo? [01:19:16] Yleisö: Joten jos laitat käsikirjoituksen [Äänetön], komentosarjatunnus HTML? [01:19:21] DAVIN: Voit laittaa skriptin tag suoraan päähän koska sinulla on tämä onload. Se on myös, että sinulla on napsautuksella. Joten se tulee odottaa klikkaat jotain. Mutta onload on vain oltava turvallisia, jotta että kaikki kuormat HTML etukäteen. Joo? Haluatko sanoa jotain? [01:19:40] GABE: [äänetön]. DAVIN: Joo. [01:19:42] Yleisö: Niin onload välttelee määritellään muuttuja hakupainikkeen mukaan vain sanomalla document.getElementById hakupainikkeen dot [kuultavissa]. [01:19:49] DAVIN: Ehdottomasti, mutta sitten merkkijono vain saa valtava. Aivan, joten tämä on vain helpottaa sinua, joo. Kyllä? [01:19:56] Yleisö: Mistä me luoda window.onload? Tai document.ready? [01:19:58] DAVIN: Kyllä, siellä on. Kyllä, siellä on, olen tarkistanut. [01:20:02] GABE: Ei ne välitä. [01:20:03] DAVIN: OK, joten aion kertoa muutenkin. Joten periaatteessa, vain yleisesti, niin window.onload odottaa kunnes DOM, kaikki HTML, kuormat. Se odottaa, kunnes kuvat latautuvat. Se odottaa, kunnes kaikki kuormat. document.ready, se vain odottaa kunnes DOM kuormia. Kun HTML on siellä, kun teidän DOM on siellä, käynnistyy. Se on ainoa ero. [01:20:23] GABE: Nopea järki tarkistaa täällä. Joten tämä voidaan nähdä sellaista kuten koodirivin, eikö? Koska se on window.onload yhtä suuri nippu tavaraa. Kun JavaScript lukee tämän, totta vai vääriä, toiminnon saa suorittaa. False. OK? Mitä täällä tapahtuu, olet vain ohimennen Tämän toiminnon anonyyminä toiminnot ja window.onload. Ja sitten kun se tulee todella saada teloitettiin? Kun ikkuna kuormia. Se tapahtuma. Niin, että jus t asia olemme puhumme aikaisemmin, eikö? Joten kun tapahtuma tapahtuu, toiminto tapahtuu. Sama juttu onclick. [01:20:59] DAVIN: OK, niin joku otti pois document.ready. Mutta tämä tulee olemaan tarkka same-- Yleisö: dollarin merkki, että on document.ready. Se oikotie. [01:21:07] DAVIN: Voi, että on? OK, joten tämä keino document.ready, pikakuvake. Mutta tämä on sama kuin window.onload paitsi että pieni ero Kerroin. Ja tämä on jQuery. Joten tämä on täsmälleen sama thing-- tämä on JavaScript. Tämä on just-- jotkut ihmiset ajattelevat se koska enemmän kevyt, tyylikäs versio että on paljon toiminnallisuutta että sinun todennäköisesti käyttää. Joten tämä tekee täsmälleen sama asia. [01:21:34] Joten asioita eräänlainen huomauttaa. Joten muista esimerkissä oli document.getElementById, joten meillä oli pitkä merkkijono, joka tulee saada elementti millä tahansa tunnus on. Se on korvattava tällä puhelu täällä. Niin näet dollarin merkki, sitten näet lainaus, hashtag. Hashtag on aina valitsin. Siinä sanotaan, OK, tämä on tekemistä tunnus. Mikä valitsin luokassa? [01:21:56] Yleisö: Dot. [01:21:57] DAVIN: Dot, oikea. Jos olet juuri menossa Valitse tunniste, mikä se on? Se on vain tunniste, tarkalleen. Ja voit käyttää että täällä, samoin. [01:22:05] GABE: Ja tag, tarkoitamme kuten div, tai esimerkiksi pään. [01:22:08] DAVIN: Tai elin tai p tai mitään sellaista, joo. Joten tässä, OK, sen sijaan että hän document.getElementById, tämä on vain täsmälleen sama asia. Juuri jQuery, se on lyhyempi. Joten se on yksinkertaisempi. Niin, enää onclick, klikkaa. jQuery toiminto, kutsuvat tätä toimintoa. Alert on täsmälleen sama. Joten se on hieman pienempiä tai vähän lyhyempi, hieman bit-- ihmiset ajattelevat se on vähän helpompi kirjoittaa, hieman helpompi ymmärtää. Mutta tämä on jQuery. Monet ihmiset saavat hieman hieman sekava ja huolissaan ja he ajattelevat, OK, jQuery on erilainen kuin JavaScript. Täytyy muistaa nämä kaksi eri asiaa. Se ei ole. Tarkoitan, se on erilainen syntaksi. Mutta jQuery on JavaScript. Se on vain näennäisesti parempi versio, joka saattaa olla helpompi ymmärtää, että ihmiset käyttävät. GABE: Joo, on rehellinen, että dollarin merkki että näet jQuery, että vain nimeksi toiminto, jQuery määrittelee. Sillä ei ole mitään erityistä. Onko se vain nimi toiminto, aivan kuten voit määritellä dollarin merkki. [01:23:03] DAVIN: Joo, niin puhui tästä. Joitakin hyödyllisiä asioita. Odotin takaisin vanhoja tietokilpailuja. Aiemmin pari tietokilpailuja, he ovat täytyi käyttää asioita, kuten tämä. Niin document.ready, niin varmista, että kaikki n ladattu ennen kuin aloitat tekemään asioita. Valitse tunnus, tai valitse luokan, se oli juuri olla lainaus täplittää luokan loppuun lainaus. Lähetä, joten jos olet Lähettämällä lomakkeen ja puhelun Tämän toiminnon jälkeen lomake väittää. Arvo, joten sanokaamme jouduin muodossa jättämisestä, kuten käyttäjätunnus, sähköposti, mitä tahansa. Minulla oli tekstikenttään. Joten olen kirjoittamalla tuohon tekstikenttään. No, jos haluat saada arvoa pois, että tekstikenttään käytät piste val. Ja sitten, tänne, dot HTML on sama on kuin dokumentti piste getElementById dot innerHTML. Niin että menee palata voit HTML kyseisestä tunnus. Täällä voit vain käyttää joitakin ID tai mitä tahansa piste HTML. Että saat HTML siitä elementti. Jos halusi sitten muuttaa, että HTML, voit siirtää sen jotain. Joten sinun olisi kuin piste HTML, ja sitten sisällä, lainauksia, uusia HTML tai jotain. [01:24:05] GABE: OK, niin AJAX. Pidän todella ymmärtää AJAX todella hyvin. Joten haluan sinun kaverit ymmärtää AJAX todella hyvin. Koska jos et, olet aika paljon menossa ymmärtää kaiken, on tekemistä HTTP, PHP, JavaScript koska kaikki tulee yhdessä AJAX. AJAX ei ole kieltä. AJAX tekniikkaa. Ja se käyttää paljon erilaisia ​​työkaluja. AJAX sanoista asynkroninen JavaScript XML. Joten menetelmä, kielen, tiedot. [01:24:36] Joten pääkieli, että käytämme AJAX laukaista kaikki ja hoitaa kaiken myöhemmin on Javascript. Siksi se koskee hyvin lähellä JavaScript. Ja sitten asynkroninen on koska emme tee sitä kaikki kerralla, kun olemme sivun lataamisen. Tämä on asia, että voimme tehdä asioita tavallaan rinnakkain. Perusajatuksena AJAX on, että haluat sitä saada tiettyjä tietoja. Esimerkiksi, kun kirjoitat uutta käyttäjänimen kun rekisteröidyt käyttäjätunnus, minun käyttäjänimi on abc123. Ja sitten, lopussa muodossa, sinun täytyy klikkaa Lähetä. Ja se piti mennä palvelimelle, ja sitten tarkistaa, jos tietokantaan, abc123 on jo siellä. Ja jos se on jo olemassa, se sanoo, käyttäjätunnus on jo tietokannassa. Ja he, sinun täytyy täyttää ulos koko lomake uudelleen. Ja se oli todella, todella huono. [01:25:23] Ja sitten ihmiset sanovat, OK, miksi emme vain tehdä pieni HTTP-pyynnön vain tarkistaa onko tämä käyttäjä on tietokanta ennen kuin käyttäjä oli lähetä koko lomakkeen? Niinpä esimerkiksi silloin, kun käyttäjä on lopettanut kirjoittamisen abc123, mennään vain palvelimelle hieman bittinen ja vain saada tosi tai epätosi palvelimelta, onko se kelvollinen käyttäjätunnus tai ei. OK, joten se on yksi tärkeimmistä käyttää AJAX nykyään yhä. [01:25:49] DAVIN: Niin todella nopeasti, vuonna Ajax puhelun jQuery, voisit merkiksi siitä, että haluavat sen olevan synkronoitu. Sinun ei pitäisi tehdä tätä. Mutta voit tehdä sen. Ja jos teit sen, mitä tapahtuisi? No, esimerkiksi, kun olet saada uutisia tai mitä tahansa, selain on juuri menossa odottamaan asti, että koko puhelu on valmis sen sijaan, että teet muut asiat oikein, kun napsautat sitä. [01:26:14] GABE: Se ei ole ohi enää. Oh my god. Anteeksi! Jep. "Aiemmin asiakkaan tarpeen pyynnön koko sisältö verkkosivuilla. " Se mitä sanoin. Se antaa meille mahdollisuuden lähettää ylimääräisiä GET tai POST pyynnöt ilman ladata myös selaimen. Joten lopussa päivä, olemme todella tehdä HTTP-pyyntöjä täällä JavaScriptin avulla. Koska ennen, me vain käyttää JavaScript muuttaa HTML että jo tuli. Ja nyt, voimme käyttää sitä käyttöliittymä web-palvelimia samoin. Miten tämä tapahtuu on meillä asiakas. Davin on asiakas. Ja hänellä on kaikki JavaScript käynnissä, koska HTML on tyhmä. JavaScript on fiksu. Joten Davin Davin on hänen älykäs osa ja hänen tyhmä osa. Hän aikoo käyttää hänen fiksu osa nyt. Hän aikoo käyttää JavaScript että pyyntö, esimerkiksi onko abc123 on tietokannan kanssa tai ei. [01:27:04] Joten Davin, ota, juuri Lähetä minulle HTTP-pyynnön. Kiitos. Joten hän vain lähetti HTTP-pyynnön. Näetkö tuon? Ja tämä on vain samalla tavalla että kaikki HTTP-pyyntö lähetetään. Selain, Google Chrome tai jotain, on näkemään, että Davin n yrittää lähettää HTTP-pyynnön, auta hm hieman. Ja joka on menossa aina palvelimelle. Nyt palvelin on menossa PHP täällä, tai millä tahansa muulla kielellä. Aivan kuin normaali HTTP-pyynnön. Se on aika paljon normaalia HTTP-pyynnön. [01:27:31] Ja sitten, palvelin aikoo sanoa, OK, Davin haluaa minun tarkistaa, tämä abc123 on tietokannassa. Puhu malliin. Mallin mukaan se ei ole. abc123 on hyvä käyttäjätunnus. Ja sitten, web-palvelin on menossa PHP tehdä jonkinlainen tiedoston. Se voisi olla kirjaimellisesti vain tiedosto joka sisältää "yes", tai "ei, tai jotain sellaista. Se voisi olla minkä tahansa tiedoston. [01:27:54] Se voisi olla kuin aion Lähetä Davin kuvan ankka jos se tietokantaan ja Lähetä kuva hamsteri jos se ei ole tietokannassa. Se olisi eräänlainen tyhmä, mutta se toimii. OK, joten lähetän ankka Davin. Davin sai ankka. Ja nyt, kuka käsitellä ankka? Davin älykäs osa taas, niin JavaScript, eikö? JavaScript lähetetty pyynnöstä, ja JavaScript on menossa vastaanottamaan pyynnön ja tulkita sitä jossain muodossa. [01:28:22] Ja tässä mielessä, se tulee sanovat, OK, jos ankka niin olen hyvä. Jos hamsteri, niin aion sanoa, no, käyttäjätunnus on jo on olemassa tietokannassa. Mutta yleensä, et ole aikoo lähettää ankka. Olet menossa lähettää jotain hieman fiksummin. Ja mitä käytämme on XML. Ja viime aikoina, käytämme JSON. JSON on vain JavaScript Object merkintätapa, joka on pohjimmiltaan saat Koko JavaScript olio. Ja laitat sen tiedoston, aivan kuten että CS50 objekti että te nähnyt. Voit laittaa sen tiedoston, ja lähetät sen yli Davin. [01:28:53] Joten tässä tapauksessa, haluaisin tehdä JavaScript olio ja vain sanoa, käyttäjän on olemassa, kyllä. Tai käyttäjä on olemassa, ei. Ja lähettää sen takaisin hänelle. Ja miksi JSON? Koska henkilö kuka vastaanottaa tämä on aio käyttää JavaScript käsitellä vastausta. Ja JavaScript toimii niin hyvin, koska sitä kutsutaan JavaScript Object merkintätapa. Oikea? Joten hän voi vain soittaa toiminto ja saat tässä mukava objekti vastausta. Ja sitten, hän aikoo tietää että käyttäjä on tietokannassa vai ei. [01:29:22] Niin näet, kaikki sen tulevan yhdessä web-palvelin, ja sitten on yksi HTTP pyyntö ja yksi HTTP-vastaus ja kaiken. Joten varmista, että te ymmärtää tämän AJAX puhelu koska se auttaa sinua ymmärtämään kaikki käsitteiden puhumme. [01:29:37] Joten tässä esimerkki AJAX jQuery. Ja tässä, teemme get JSON. Joten emme yritä saada kuva kissa täällä, tai ankka. Yritämme saada JSON-tiedoston. Ja sitten me odottaa se tehdään, piste tehnyt. Tämä tarkoittaa Odotan vastausta. Se saattaa kestää hetken. Sitten voit nähdä hieman lastaus. Jos haluat tehdä sivuston. Joten dot tehnyt, ja mitä sitten tapahtuu, kun se on tehty? Voit kulkea anonyymi toiminto, aivan kuten näimme ennen. Koska tehty on tapahtuma, juuri kuten hiiren tai mitä tahansa, jQuery. Joten ohitat tämän toiminnon kanssa datan, tekstin, tilan ja jqXHR. Ja pohjimmiltaan, se on vain joitakin muuttujia että voit käyttää myöhemmin olla tilan HTTP-pyynnön, tiedot, jotka se on menossa lähettää takaisin sinulle. Joten voit myöhemmin tulkita sitä ja tehdä jotain merkityksellistä sen kanssa. Ja jos se ei onnistu, kun se voisi epäonnistua? No, kun HTTP-pyynnön antaa te 500 tai jotain. Sitten se tulee kertoa tila, millainen vika, joka oli, ja kaikenlaisia ​​asioita. Sinun täytyy varmistaa, käsitellä molemmissa tapauksissa, muuten ohjelma sekoaa. [01:30:42] DAVIN: Niin joo, tämä on juuri mitä näit teidän viimeinen s-sarja. Varsinainen AJAX puhelu on get JSON. Se on puhelu. Ja sitten, piste tehty on kuin se tarkistaa, jos se onnistuu. Jos se onnistuu, haluat tehdä jotain tietoja. Saat takaisin, että JSON-pyynnön tietoja. Tämä on mitä saat takaisin. Joten jos muistat p-sarja, monet teistä olivat kuin tiedot kiinnike i tai mitä tahansa, piste linkki tai otsikko. Riippumatta tulee takaisin siitä JSON riippumatta kentät ovat kyseisessä JSON esine, se mitä saat takaisin. Tiedot on mitä saat takaisin. Tekstin tila, vain jotain, joka voit tietää mitä tapahtui. Ja sitten, jqXHR, että vain jQuery XML HTTP-pyynnön. Se on aivan kuin objekti. Ja sitten ei, aivan kuten Gabe sanoi. GABE: Meidän pikku esimerkki abc123 vain tarkistaa, jos se on tietokannassa tai ei, tietoja olisi jotain tekisi, jos tiedot piste käyttäjätunnus olemassa, joka on mitä PHP tuotettu te, jos tiedot piste käyttäjänimi on olemassa, niin Aion varoittaa, käyttäjän nimi on jo olemassa. Else, olen juuri menossa antaa käyttäjä jatka täyttämällä lomakkeen. OK, turvallisuus, viileä. [01:31:50] DAVIN: Haluatko minun? [01:31:52] GABE: Pidän tästä. Joten jotain, joka näyttää tutulta. Olemme melkein valmiita. Joten tämä on vain esimerkki te näki luokassa. Käytit argv1 täällä. Se on kuin komentorivillä. Ja me Mem kopioimalla osaksi puskurikokoa 12. Mikä ongelma? Puskurin ylivuoto! Koska meillä on puskurikokoa 12. argv1 voi olla kooltaan kaksi miljardia. Emme tee mitään rajaa tarkkailun. Joten voisimme kopioida paljon muistia. Ja me olla erityisen paha tästä. Mitä voisimme tehdä se hyvin, hyvin tarkoittaa tässä tapauksessa? Kyllä? Yleisö: Osa kaksi miljardia asiaa sisältää koodia, joka palauttaa [Äänetön]. GABE: Aivan. Niin, että sellainen asia, että ihmiset käyttävät karkaaminen iPhone, esimerkiksi. Niin, että sellainen asia. Koska voit vain tehdä laitteesta suorittaa koodia, josta pidät. Fix, joten korjaus on helppoa. Vain tarkistaa rajoja. Voit tarkistaa null koska me aina tarkistaa null kun olemme tekemisissä jousille. Ja sitten, otat merkkijonon pituus ennen. Ja jos merkkijono pituus on voimassa merkkijono pituus, joka on sisällä 0 ja 12, sitten olemme hyviä. [01:33:03] DAVIN: Jos et tarkista null, todella nopeasti, mitä tapahtuu? Se tulee Seg vika. Miksi se tulee Seg vika? Koska soitat strlen on null. GABE: Joo. Totta vai tarua, käyttäen yhtä salasana on hyvä idea. [01:33:19] Yleisö: False. [01:33:20] GABE: False. Käytä monia salasanoja, ja iso, pitkiä. Lukko kuvakkeet turvallisuuden varmistamiseksi. [01:33:26] Yleisö: False. [01:33:27] GABE: False. Se ei tarkoita mitään. Se on vain kuvake. SSL suojaa mies middle-hyökkäys. Yleisö: False. GABE: False. OK, joten kaikki nämä ovat vääriä. Nice. [Äänetön] Haluatko puhua tästä? Sinun vuorosi. DAVIN: Tyypit hyökkäyksiä, mies keskellä. Mitä mies middle-hyökkäys? Yleisö: [äänetön]. DAVIN: Jos lähetät HTTP pyynnöstä, he voisivat tehdä tämän, eikö? Mutta jos olet lähettää HTTPS, he luultavasti ei voi tehdä tätä. On paljon pisteitä pitkin yhteys. Sinulla on reitittimet. Sinulla on DNS-palvelimet. Jos joku pystyy fyysisesti mitä olet lähettää, joten joku pystyy itse saada sinun, asiakas ja palvelin, ja on nähdä, mitä aiot lähettää, tämä on mies middle-hyökkäys. Joten mitä yrität saada palvelin, tai sillä on mahdollisuus see-- huonompi, saatat nähdä evästeet tai jotain. [01:34:16] Joten esimerkiksi, jos et käytä SSL, hän ehkä nähdä sinun istuntoevästeitä. Ja tätä kutsutaan istunnon kaappaamisen koska hän näkee tunnus evästeet, ja sitten hän voi mennä, että verkkosivuilla ja olevinaan sinua. Koska aivan kuten PHP, muistaa kun me kirjautunut sisään, mitä me teemme? Asetimme istuntotunnus yhtä tunnus. Joten, joka tunnistaa sinut. Siksi näet oman salkun ja ei kaikki muutkin salkun. [01:34:38] No, jos olen voinut saada, että evästeen, niin voin kirjautua sivulla. Ja sitten, voin vain nähdä kamaa ja alkaa ostaa ja myydä tavaraa. Niin, että istunnon kaappaamisen. Mutta sinun ei pitäisi voida to-- joten sinun voi käyttää mies middle-hyökkäys vaikka he käyttävät SSL. Mutta sinun ei pitäisi pystyä. Jos he käyttävät SSL, et voi istunnon kaappaus. Miksi? Koska se kaikki salattu, oikeassa? jos se on salattu, ja olen edelleen mies keskimmäinen, olen silti tietosi. Se on hyvä. Mutta se salattu. Joten en voi käyttää sitä. Niin, että kaksi. [01:35:09] Real nopea, cross site pyynnöstä väärennös. Se on vain, jos siellä linkki ja tämä yhteys tekee jotain että et usko sitä pitäisi tehdä. Niinpä esimerkiksi, jos linkki oli menossa ostamaan varastoja tai myydä varastoja, ja et tiennyt että. Sinä napsautti linkkiä, lähetti pyynnön, ostaneet tai myydä jotain, et tarkoita tehdä. Se siitä. [01:35:25] Cross site scripting, joten tässä, olet ohimennen kautta muuttujan q, sijaan kulkee jonkinlaisessa arvoa, ehkä q on kuin nimi. Joten sen sijaan kulkee Q on yhtä Davin tai jotain, jos et käytä HTML erityistä merkkiä, jos ei paeta tätä varmista, että se on OK, sitten voisin kulkea sen sijaan, sanotaanko täällä sanon Tulosta tai jotain, Sitten voisin kulkea täällä komentosarjakutsun. [01:35:51] Niin, sen sijaan, juuri muuttuja, Haluaisin suorita tämä kirjoitus puhelun. Joten sisällä että kirjoitus soittaa, mitä se tekee? Asiakirja piste sijainti, joka on menossa sijainnin muuttaminen asiakirjan. Joten aion suunnata jonnekin muualle. Sitä kutsutaan paha kaveri Tässä esimerkissä, erittäin hyvä. Voisiko ajatella sanaa. Ja sitten, mitä vielä pahempaa on, että aion ja sitten asettaa evästeen, joka on noin muuttuja Minulla on tällä sivustolla. Aion asettaa se sama Asiakirjan piste evästeen. Siksi aion varastaa evästeen. Ja aion suunnata joitakin tietoja verkkosivuilla että sinun ei pitäisi päästä. Ja tämä kaikki tapahtuu, koska olet ei pakenevat mitä olet nähnyt. Joo? [01:36:29] Yleisö: Joten vain tehdä sen selväksi, se on vulnerable.com että on altis tämän. Niin, että linkki voi näkyä samalla sivulla. Joku napsauttaa sitä, menee vulnerable.com. Sinulla evästeen vulnerable.com. Sanotaan Facebook on haavoittuva, joten facebook.com. Sinulla on Facebook evästeen. Mitä tämä tekee, olet menossa facebook.com, se heti suuntaamalla voit badguy.com, mutta myös oman evästeen tietoja. Joten se on nopea uudelleenohjaus, mutta Facebook evästeen mukana, että uudelleenohjaus, ja se, miten he [kuultavissa]. GABE: Joo, siellä on joitakin hyvin ilkeyksiä että ihmiset voivat tehdä, jos on tämä. Esimerkiksi, jos Facebookissa sallittu jokainen muuttaa käyttäjätunnuksesi, ja he eivät tee mitään järki tarkastuksia, joten voit voisi lisätä JavaScript asia, että Muuttaa kuvan hamsteri. Ja lisää saman JavaScript osaksi jokainen joka näkee sivusi. Joten jokainen, joka näkee sivusi on sama asia käyttäjätunnus. Ja koska se on virus, se leviää eksponentiaalisesti. DAVIN: Me ohittaa viimeisen yksi, ja sitten olemme tehneet. Joten tämä on vain yksi esimerkki. Joten tämä on, ne eivät ole pakenevat heidän SQL pöytä. Joten voit pudottaa sen. Joten haluat paeta asioita. Se oli edellisessä esimerkissä kanssa cross site scripting. Valitettavasti me juoksimme hieman myöhässä. Huomenna, sorry! Huomenna meillä on virka. Joten virka-ajan Cabbot 8:00-11:00. Aukioloajat ovat tiukasti visailukysymysten.