[Review: Quiz 1] [Ali Nahm, Oreoluwa Barbarinsa, Lucas Freitas, Rob Bowden] [Harvardin yliopisto] [Tämä on CS50.] [CS50.TV] [Lucas Freitas] Tervetuloa kaikille. Tämä on arviointisi tietokilpailu 1. Aivan kuten vastuuvapauslauseke, tämä on - Tarkoitan, aiomme yrittää kattaa niin paljon kuin mahdollista, mutta se ei tarkoita, että aiomme kattaa kaikki asioita, jotka voivat olla tietokilpailuun 1. Joten varmista, että olet myös katsomaan luento, osastot, kaiken, mitä voi. Quiz 1 tulee olemaan keskiviikkona ensi keskiviikkona. Niin varmasti tutkia. Se tulee olemaan, melko paljon, kuten ensimmäinen tietokilpailu koskevat sen muodossa, mutta se on luultavasti olemaan paljon vaikeampaa. Ainakin viime vuonna, kun otin 50, luulin että se oli paljon vaikeampaa. Tutki siis paljon. Aion kattaa tietorakenteiden ja Huffman-koodausta. Tämä on jotain, että monet ihmiset ajattelevat on monimutkainen, mutta aion yrittää tehdä niin helpoksi kuin mahdollista. Ensinnäkin, mitä me haluamme te tietää tietovisa 1 on ymmärtää käsitteellinen kuvaukset kunkin tietorakenteita joita aion esittää. Tämä tarkoittaa, että sinun ei tarvitse itse toteuttaa hash taulukon tietokilpailun 1. Emme halua sinua toteuttamaan koko tiiviste, ehkä me yritämme tehdä sinusta toteuttaa joitakin toimintoja, yleisimmät toiminnot, mutta emme aio tehdä teille toteuttaa kaiken. Joten on tärkeää, että ymmärrät käsitteen taakse tietorakenne ja että pystyt koodia C, vain yleisimmät toiminnot heillä on jokaisen tiedon rakennetta. Ja myös pystyä tarkistamaan osoittimia ja structs, koska ne näyttävät paljon näissä tietorakenteita. Ensinnäkin liittyvät luettelot. Liittyy luettelot ovat itse asiassa hyvin samankaltaisia ​​paneelit, mutta ero linkitetty lista ja array, Ensinnäkin, on se, että linkitetyn listan on erittäin joustava koko, kun taas paneelit sinun täytyy valita joko erittäin suuri koko jono, niin tiedät, että olet menossa voi tallentaa kaikki tiedot, jotka array, tai voit käyttää malloc olla joustava pituus array. Vuonna linkitetyt se on erittäin helppo vain saada enemmän elementtejä, laittaa enemmän elementtejä linkitetty lista tai poistaa osia. Ja todella, jos et halua linkitetty lista voidaan lajitella, voit etsiä ja poistaa elementtejä vakioaikavälein, joten O (1) ajan, joten se on erittäin kätevä. Täytyy vain olla varovainen aina muistaa malloc ja free solmuja, vain koska jos et, sinulla on muisti vuotaa. Joten linkitetyt - määritelmä solmu on aivan kuin mitä meillä on tuolla. Laitoin int n, mutta voit tallentaa kaikki tiedot haluat. Joten jos haluat tallentaa merkkijonon, se on hieno. Jos haluat tallentaa struct, se on hieno, kaksinkertainen, mitä haluat. Sain laittaa int n, esimerkkejä tästä. Ja sinulla on osoittimen seuraavaan solmuun. Niin, periaatteessa, linkitetty lista on joitakin tietoja, ja sitten se osoittaa seuraavaan solmuun. Jos se on viimeinen elementti linkitetty lista, se tulee osoittamaan null. Joten tämä on esimerkki linkitetyn listan. Okei, joten nyt katsotaan, mitä meidän pitäisi tehdä, jos haluan lisätä elementti linkitetty lista. Ensinnäkin toiminto insertti on tyyppiä void koska en halua palata mitään. Ja aion ottaa int argumenttina, koska haluan tietää, mitä haluan lisätä. Joten mikä on ensimmäinen asia, joka minun pitäisi tehdä? No, minun pitäisi malloc on newnode, niin että on ensimmäinen rivi. Olen vain luoda uusi solmu laittaa linkitetty lista. Joten mitä voin tehdä? No, me tiedämme, että meidän toteutukset liittyvät luettelot luokassa, olemme aina laittaa pään globaali muuttuja. Joten mitä voimme tehdä, on muuttaa pään. Voin tehdä tästä uusi solmu on uusi johtaja, ja se tulee osoittamaan edelliseen päähän. Miten voimme tehdä sen? Ensimmäinen asia, joka minun täytyy tehdä on muuttaa 'n' uudessa solmun arvoa, joka on siirtynyt toiminto. Sitten newnode seuraavaksi tulee olemaan päähän. Pää aiotaan newnode. Joten se on melko yksinkertainen. Poistamisen solmu, voimme tehdä sen kuin - Yksi tapa voisimme tehdä toisin sanoen, okei, jos halusin poistaa, esimerkiksi 3, mitä voisin tehdä, on vain pisteen edellisen solmun seuraavalle solmulle 3. Joten haluan vain tehdä jotain. Mutta mikä on ongelma tuon? Minulla on muistivuoto, joten minulla ei ole pääsyä numero 3 enää. Ongelmana tässä on se, että en aio voi vapauttaa, että solmu. Aion olla muistivuoto ja (käsittämätön) on menossa vihaavat minua. Joten sen sijaan tehdä, että minun pitäisi oikeastaan ​​olla tilapäinen osoitin. Joten laitoin temp. Se tulee osoittamaan solmuun, että haluan poistaa. Ja sitten voi siirtää edellisen solmut kohdan seuraavalle solmulle solmun, että haluan poistaa. Ja lopuksi, voin vapauttaa osoittimen. Onko minulla vapauttaa osoitin, että olen luonut tuolla? En tarvitse, vain siksi - ero on, että tämä solmu on luotu malloc, joten se kasaan, kun tämä oli juuri ilmoitettu NULL kytkimen pinossa. Joten minulla ei ole vapauttaa sitä. Okei. Joten nyt puhutaanpa pinot. Pinot ovat melko suoraviivaista. Teimme pinot ja jonot luokassa vain käyttämällä paneelit, mutta sinun pitäisi olla tuttu - vain olla tietoinen että voit myös tehdä pinot määrittäminen käyttämällä linkitettyjä listoja samoin. Joten jos sinulla on joukko, mikä olisi pino? Pino, ensimmäisen, täytyy olla kooltaan. Sinun täytyy tallentaa, mitä on koko pino, joka sinulla on juuri nyt. Ja myös sinulla olisi array, tässä tapauksessa numeroita, mutta jos haluat, se voi olla array merkkijonojen, joukko struct, jotain mitä haluat tallentaa. Tietoja pino: ero pino ja linkitetty lista on, että pinon sinulla on pääsy vain viimeinen osa, joka esitettiin pinossa. Sitä kutsutaan viime in, first out. Aivan kuten sinulla on pino tarjottimia, jos laittaa tarjottimen pinon päälle, sinun täytyy poistaa ensin tästä lokerosta saada muita lokeroita. Se on sama juttu pinot. Joten jos haluan esimerkiksi lisätä elementti pino, mitä minun pitäisi tehdä? Sitä kutsutaan push, ja se on melko yksinkertainen. Ensimmäinen asia mitä sinun tarvitsee tehdä on tarkistaa, jos koko pinon ei ole suurempi tai yhtä suuri kuin pinojen kapasiteettia. Koska jos olet jo täydellä kapasiteetilla, et voi lisätä mitään muuta. Ja sitten jos ei, sinun täytyy vain lisätä osa pinoon. Ja lopuksi, kasvattaa kokoa. Joten se on melko yksinkertainen. Joten en vain lisätä numero 2. Ja jos haluan pop, mikä tarkoittaa, että haluan poistaa viimeinen osa, joka lisättiin ja palauttaa arvo elementin, Ensimmäinen asia, joka minun täytyy tarkistaa, että pino ei ole tyhjä. Koska jos se on tyhjä, en voi palata mitään. Siinä tapauksessa, olen palaamassa -1. Muuten, aion dekrementoidaan koko spec, ja palata numerot (s.size). Miksi minä dekrementoidaan koko ja palata sitten s.size? Se johtuu siitä, tässä tapauksessa spec on koko 4, ja haluan palata neljäs osa, eikö? Mutta mikä on indeksi neljännen elementin? Kolme. Koska en koko - tulee olemaan 3, voin vain palata s.numbers (s.size) koska se on 3. Joten se on vain indeksin. Nyt jonot. Jonot ovat melko sama asia. Ainoa ero on se, että sen sijaan, että viime in, first out, sinulla on first in, first out. Todennäköisesti jos odotat mennä konserttiin, et olisi onnellinen, jos olisi pinon sijasta jonossa. Koska viimeinen henkilö tulemaan olisi ensimmäinen henkilö päästä konserttiin. Olet luultavasti ei olisi onnellinen. Jonossa, ensimmäinen henkilö päästä on myös ensimmäinen henkilö päästä pois. Joten n määritelmässä jono, sen lisäksi, että koko jono, sinun on myös oltava pää, joka on indeksi johtaja pinon. Joten ensimmäinen elementti juuri nyt. Enqueue on sama asia kuin push pinot. Jos olit hyvin naiivi, olisit vain sanoa, No, voin vain tehdä täsmälleen sama asia kuin tein push. Voin vain tarkistaa, jos se ei ole yli kapasiteetin. Jos se on, palaan väärä, muuten en voi vain viedä uusi arvo ja sitten kasvattaa kokoa. Mutta miksi tämä on väärin? Katsotaanpa tätä esimerkkiä. Yritän laittaa jonoon nippu tavaraa, ja sitten aion dequeue ja laittaa jonoon. Siellä on paljon komentoja, mutta se on hyvin yksinkertainen. Aion laittaa jonoon 5, joten lisää 5, ja sitten 7, 1, 4, 6, ja sitten haluan dequeue jotain, mikä tarkoittaa, että aion poistaa ensimmäistä osaa. Joten aion poistaa numero 3, eikö? Ensimmäinen elementti. Okei. Nyt jos yritän laittaa jonoon jotain muuta, mitä tulee tapahtumaan? Saamieni täytäntöönpanoa, Aioin laittaa seuraavaan numeroon indeksi q.size. Tällöin koko on 8, joten indeksi 8 tulee olemaan täällä viimeinen asema. Jos yritän laittaa jonoon 1 täällä, olisin päälle viimeinen asema on numero 1, joka on täysin väärä. Mitä haluan tehdä, on kietoa ja mene ensimmäiseen asentoon. Ehkä voisitte vain sanoa, hyvin, olen vain tarkistaa jos en voi itse laittaa jotain siellä. Jos ei, voin sanoa, oh, kokonaan uusi kapasiteetti on oikeastaan ​​kapasiteetti - 1, ja et voi laittaa elementti siellä. Mutta mikä on ongelma? Ongelmana on, että jos vain dequeue kaiken täällä ja sitten yritän lisätä jotain muuta, se olisi vain sanoa, No, olit täydellä kapasiteetilla, joka on 0. Niin jono on mennyt. Sinun täytyy kietoa, ja tapa kiertyy että te oppinut visionääri ja muiden psets käytti mod. Voit kokeilla sitä kotona ymmärtää, miksi te tekisitte q.size + q.head mod kapasiteettia, mutta jos tarkistaa täällä, voimme nähdä, että se toimii. Joten viimeinen esimerkki, q.size oli 8 ja pää oli 1, koska se oli tässä asennossa täällä jono. Joten se on 8 + 1, 9. Mod kapasiteetti 9 olisi 0. Se menisi indeksi 0. Otamme oikeaan asentoon. Ja yritä sitten jono kotona. Joitakin tärkeitä asioita: yrittää ymmärtää ero pino ja jono. Kotona, yritä saada hyvin perehtynyt täytäntöön enqueue, dequeue, push ja pop. Ja ymmärtävät, jos voisitte käyttää kullekin. Joten rentoudu 10 sekuntia joukko Pokemons. Ja nyt mennään takaisin tietorakenteita. Hash taulukoita. Monet ihmiset pelkäsivät hash taulukoita. ongelmatilanteissa asetettu 6, Spell Checker. Hash taulukoita ja yrittää, monet ihmiset pelästyä niitä. He luulevat olevansa niin vaikea ymmärtää. Joo? [Rob Bowden] Harjoitus 5. Harjoitus 5, joo. Kiitos Rob. Joo. Kuusi oli Huff n 'Puff, joo. Harjoitus 5 on Spell Checker, ja sinun piti käyttää joko tiiviste tai kokeilla. Monet ihmiset ajattelivat, että he olivat erittäin vaikea ymmärtää, mutta ne ovat oikeastaan ​​aika yksinkertainen. Mikä on hash pöytä, pohjimmiltaan? Tiiviste on joukko linkitettyjä listoja. Ainoa ero array ja tiiviste on, että tiiviste sinulla on jotain kutsutaan hajautusfunktio. Mikä on hajautusfunktio? En tiedä, jos te voitte lukea täältä. Tämä on esimerkki siitä, hash-taulukko. Voit siis nähdä, että sinulla on array 31 elementtejä. Ja mitä teemme hash taulukon on hajautusfunktio että aikoo kääntää avain, kukin int indeksiin. Jos esimerkiksi, jos haluan valita B. Harrison, Haluaisin laittaa B. Harrison minun hash toimintoja, ja hajautusfunktio palaisi 24. Joten tiedän, että haluan tallentaa B. Harrison 24. Niin, että ero vain ottaa array ja ottaa tiiviste. Vuonna tiiviste sinulla on toiminto, joka on menossa kertoa tallennuspaikka tiedot, jotka haluat säilyttää. Hash funktio, jonka haluat etsiä hajautusfunktio joka on deterministinen ja hyvin jakautunut. Kuten näette täällä, näet, että paljon tietoa, että halusin myymälä oli todella 19 sijaan käyttää 31 ja 30 ja 29, jotka olivat kaikki ilmaiseksi. Joten hajautusfunktio että käytin ei ollut kovin hyvin jakautunut. Kun sanomme hyvin jakautunut, se tarkoittaa, että haluamme olla, karkeasti, ainakin 1 tai 2 kunkin - kuten, ero on 1 tai 2 kunkin indekseistä ryhmät. Haluat olla suurin piirtein sama määrä elementtejä kunkin linkitetyn listan jono. Ja se on helppo tarkistaa, jos se on voimassa tiiviste, katsella kuin hash taulukoita. Sitten puita. Tämä on puu. Puut tietotekniikassa ovat ylösalaisin jostain syystä. Joten täällä sinulla on puun juuri ja sitten lehdet. Sinun pitäisi vain tietää nimikkeistön vanhemmille ja lapselle. Jokainen solmu on sen lapsia, jotka ovat solmuja, jotka ovat alle vanhempi. Niinpä esimerkiksi, 2 tulee olemaan vanhemman 3 ja muiden lapsen oikeassa, kun 3 tulee olemaan vanhemman 1 ja muut lapset, jotka ovat siellä. Ja 1 tulee olemaan 3: n lapsi, ja niin edelleen. Meillä on jotain paljon mielenkiintoisempaa, nimeltään binäärihakupuu, jossa kaikki arvot oikealla puolella solmun tulevat olemaan oikealla, täällä - oikealla, tulevat olemaan suurempi kuin elementti juuren. Joten jos minulla on numero 5 täällä, kaikki elementit oikealla tulevat olemaan suurempi kuin 5, ja vasemmalla kaikki elementit tulevat olemaan alle 5. Miksi tämä hyödyllinen? No, jos haluan tarkistaa jos numero 7 on täällä, esimerkiksi Minä vain mennä 5 ensimmäinen ja aion nähdä, on 7 enemmän tai vähemmän kuin 5? Se on suurempi, joten tiedän, että se tulee olla oikealla puolella puu. Joten minulla on paljon vähemmän tavaraa katsomaan. Täytäntöönpanon binäärihakupuu, solmu, olen vain täytyy olla tiedot, joten int n; sinulla voisi olla myös merkkijono tai mitä halusi. Sinun täytyy vain olla varovainen määriteltäessä, mitä on suurempi, mikä on vähemmän. Joten jos sinulla on ollut jouset, esimerkiksi voisit määritellä että kaikki ne asiat oikealla menossa on pitempi, vasemmalla ovat menossa on pienempi pituudet, joten se on todella sinun. Miten voin toteuttaa löytää BST? Ensimmäinen asia, meidän täytyy tehdä, on tarkistaa, jos juuri on NULL. Jos se on NULL, se tarkoittaa, että asia ei ole olemassa koska sinulla ei edes ole puu, eikö? Joten palaan vääriä. Muuten, aion tarkistaa, jos luku on suurempi kuin arvo root. Aion yrittää löytää elementin oikealla puun. Huomaatte, että olen käyttäen rekursion täällä. Ja sitten jos se on vähemmän, olen menossa katsomaan vasemmalle. Ja lopuksi, muuten, jos se ei ole vähemmän tai ei ole suurempi, se tarkoittaa, että se on arvo sinänsä. Joten en juuri palata totta. Voit nähdä täällä, että käytin jos, jos, jos. Ja muistakaa, tietokilpailuun 0, meillä oli ongelma, joka oli jos, jos, jos, ja sinun piti löytää tehottomuutta, ja tehottomuus oli, että käytit jos. Sinun olisi pitänyt käyttää, jos muuta, jos, if, ja muuta. Joten minun pitäisi käyttää if ja else if ja muu täällä? Ei kukaan - joo? [Student puhuminen, äänetön] Onpa täydellistä. Joten hän sanoo, että sillä ei ole väliä, vain koska tehottomuus että meillä oli ennen oli, että koska, ehkä jos ehdosta oli tyytyväinen, niin olet tehnyt kanteen, mutta sitten olit menossa tarkistaa kaikki muut ehdot. Mutta tässä tapauksessa, se palasi heti, joten sillä ei ole väliä. Joten sinun ei tarvitse käyttää if. Ja lopuksi, puhutaanpa yrittää, joka on kaikkien suosikki. Lisäpisteyritys puu paneelit. Se on erittäin nopea etsiä arvoja, mutta se käyttää paljon muistia. Ja se on yleensä suodattaa sanoja, joten kun haluavat toteuttaa esimerkiksi en tiedä, kuin puhelinluettelo puhelimen ja haluat pystyä kirjoittamaan B ja vain niiden henkilöiden nimet, jotka ovat B. Se on erittäin helppo toteuttaa, että käyttämällä kokeilla, esimerkiksi. Miten määrittelet solmun kokeilla? Täytyy vain olla bool joka aiotaan is_word. Joka edustaa että käyttämällä kaikki merkit ennen solmu, olet pystyivät muodostamaan sana, ja sitten sinulla on joukko osoittimia solmuja. Näetkö, että meillä on joukko vanhempisolmuja, joten solmu * array? Joo? Katsotaanpa, miten tämä toimii. Sillä oikeinkirjoituksen tarkistus, meillä on joukko 27 elementtejä, koska meillä on kaikki kirjeet ja heittomerkki. Ennen tässä olen juuri menossa käyttää 2 koska haluan pystyä kirjoittamaan taululle. Okei. Joten tämä on esimerkki yrittää. Jos vain määritellä ensimmäinen solmu, Otan joukko 2 elementtiä jotka ovat 2 osoittimia NULL, joten olen vain laittaa "" ja "b". Ja aion olla bool joka sanoo is_word. Se tulee olemaan epätosi ensimmäinen, vain siksi, ennen sinulla ei ole mitään merkkiä. Niin tyhjä sana ei ole sana. Joten se on väärä. Jos haluan lisätä "" tälle sanakirjaan, mitä minun täytyy tehdä? Haluaisin vain täytyy malloc uusi solmu varten '", ja sitten lisätä sen sanan totta. Niin se vain merkitsee, että ottaa "" tulee olemaan totta. Järkeä? Sitten jos haluan lisätä "ba", minun täytyy malloc 1 'b', ja sitten aion perustaa boolean epätosi, koska "b" itsessään ei ole sana. Sitten aion malloc vielä yksi "", joten "ba", ja sitten aion perustaa se sana totta. Koska "ba" on sana. Ja sitten jos haluan nähdä, jos 'b' on tässä sanakirja, Voin vain mennä ensimmäinen, 'b'. Menen alas, ja katson on sana, ja se sanoo vääriä. Joten se ei ole sana. Jos haluan tarkistaa "ba", Menen ensimmäinen, 'b', ja sitten mennä "", ja näen totta, niin se on sana. Järkeä? Monet ihmiset hämmentyvät yrittää. Ei? Lopuksi, Huffman-koodausta. Huffman-koodaus on erittäin hyödyllistä muistin säästämiseksi ja pakkaa tekstitiedostoja, vain siksi paljon kertaa käytät "" ja "e", esimerkiksi dokumenteista, mutta en tiedä, jos kaverit käyttää "Q" tai "Z" niin paljon. Ottaa vain 1 tavu jokaista yksittäistä merkkiä joka ikinen - 256 merkkiä, joka meillä on ASCII taulukko ei ole kovin optimaalinen, vain koska on olemassa joitakin merkkejä, että käytät paljon enemmän, niin sinun pitäisi luultavasti käyttää vähemmän muistia niille. Miten käytän Huffman-koodausta? Meidän täytyy tehdä Huffman puu.  Huffman puu on solmut että on symboli, joka tulee olemaan tyyliin "',' b ',' c ', kirje, mitä kirjeen sinulla on, taajuus on taajuus, että sana esiintyy tekstissä, että olit luomassa Huffman puu, ja sitten solmu, joka tulee osoittamaan vasemmalla Huffman puu ja toinen solmu, joka tulee osoittamaan oikeaan. Joten aivan kuten puu. Miten rakentaa Huffman puu? Olet menossa hakemaan 2 solmut, jotka ovat alhaisimmat taajuudet. Jos sinulla on tie aiot valita 2 solmut että on alhaisin ASCII arvot samoin. Sitten olet menossa luoda uusi puu irti niistä 2 solmut että tulee olemaan yhdistetty taajuus isäsolmuun. Ja sitten olet menossa poistamaan 2 lasta metsästä ja korvata ne vanhemman. Ja aiot toistaa, kunnes sinulla on vain 1 puu metsässä. Joten katsotaanpa miten tekisit Huffman puu ZAMYLA. Voit nähdä täällä, että kaikki kirjeet on taajuus 1 paitsi '", että on taajuus 2. Joten olen luonut solmut kaikki kirjaimet laitoin järjestyksessä ASCII-arvo ja taajuus. Joten jos haluan luoda ensimmäinen puu, se on kanssa "L" ja "M". Joten se on täällä. Taajuus pari on 2 koska se on 1 + 1, niin seuraavan 2, jolla on pienin taajuudet ovat "Y" ja "Z". Ja sitten minulla on ne kaikki ovat - on taajuus 2. Niin mitkä ovat ne, jotka ovat alhaisimmat ASCII-arvon seuraava? "" Ja "L". Joten Luon uusi solmu, ja lopuksi, se on 4 ja 2, joten 2 tulee olemaan vasemmalla. Ja tämä on Huffman puu. Sitten jos haluan kirjoittaa tekstiä, kuten binary muuntaa tekstin käyttäen Huffman puu on erittäin helppoa. Esimerkiksi, jos sanon, että siirtyminen vasemmalle on 0 ja liikkuvat oikealle on 1, Mikä on, että menossa edustamaan? Niin kuin 1, 1, joten oikea, oikea, ja sen jälkeen 0, joten jäljellä olisi L, ja sitten 1, 0, 0. Joten 1, 0, joten vain 1, 0, "". Ja sitten 0, 1, joten 'Z'. Ja sitten 1, 0, 0 - no. 0, 0 on "Y", niin laiska. Niin, että kaikki minulle, Rob vie yli. [Rob Bowden] Niin, viikko 7 kamaa. Meillä on paljon mennä yli todella nopeasti. Bittioperaatioiden, puskurin ylivuoto, CS50 kirjastosta ja HTML, HTTP, CSS. Kaikki, kuten 15-20 minuuttia. Bittioperaatioiden. On 6 niistä, jotka sinun täytyy tietää. Bittikohtaisesti, bittikohtainen tai, XOR, vasen muutos, oikeus siirtää, ja ei. OIKEA VAIHTO eikä tuskin näki luento ollenkaan. Menemme sen yli nopeasti tänne, mutta on hyvä tietää, että nämä ovat 6 olemassa. Muista, että bittioperaatioiden ovat kuin kun teet 3 + 4. Et ole tekemisissä binary 3 ja 4. Kanssa bittioperaatioiden olet todella puuttua yksittäisten bittien numerot 3 ja 4. Joten ensimmäinen, joka sanomme ei bittikohtainen ole, ja se vain kääntää kaikki bitit. Joten tässä, jos olet kirjoittamassa tätä C, et kirjoita sitä kuten ~ 11011 tai mitä tahansa, voit kirjoittaa sen kuin ~ 4, ja sitten se kääntää binääriesityksen 4. Joten tässä, ~ noin binary numero 1101101 on menossa juuri kääntää kaikki 1: n ja 0: n ja kaikki 0: n ja 1: n. Kuten sanoin siellä, usein käyttää tätä, ja näemme sen vähän, on kuin haluamme keksiä jokin numero jossa kaikki bitit ovat 1, paitsi yksi heistä. Niin se on yleensä helpompi ilmaista numero jos vain, että yksi bitti on asetettu, ja sitten ottaa ~ sen, niin joka toinen bitti on asetettu paitsi että yksi. Niin, että mitä aiomme käyttää enemmän vähän. Biteittäin tai. Tässä on 2 binääriluvut, ja nämä 2 numerot ovat melko edustava, koska ne edustavat kaikkia mahdollisia bittiyhdistelmä sinulla olisi toimia. Täällä, kun OR-toiminto kunkin bitin, olemme juuri menossa verrata suoraan alas. Niin vasemmalla puolella meillä on 1 ja 1. Kun minä biteittäinen | niille, mitä aion saada? Yksi. Sitten biteittäinen | 0 ja 1 ei aio antaa minulle? Yksi. Bittivastineen 1 ja 0 tulee olemaan sama asia, yksi. Bittivastineen 0 | 0 aikoo antaa minulle 0. Joten ainoa tapaus, jossa saan 0 on 0 | 0 kotelo. Ja voit ajatella, että aivan kuten looginen ors. Joten jos ajattelet 1 totta ja 0 vääriksi, sama asia pätee täällä. Niin totta tai totta totta, tosi tai epätosi on totta. Vääriä tai oikeita, on totinen, vääriä tai virheellisiä on ainoa asia, joka on oikeastaan ​​väärä. Tässä on esimerkki siitä, että sinun pitäisi tietää niin aika hyvä esimerkki, kun bittioperaatioiden käytetään. Täällä jos me tai pääomaa "" kanssa Ox20, ja me katsomme näitä toisessa, saamme jotain. Ja jos me tai pieniä "" kanssa Ox20, saamme jotain. Joten vedä ylös ASCII taulukossa. Okei. Tässä näemme, että "" on - tässä meillä on "" on desimaalin 65. Mutta minä menen heksadesimaalimerkin, joka on Ox41. Melko varmasti näimme sen luokassa. Mielestäni näimme sen luokassa että se on melko helppo muuntaa heksadesimaali ja binary. Joten tässä, jos en halua laittaa 4 binary, joka on vain olemaan 0100. Tämä on 1 paikka, 2 paikka, 4 paikka, joten tämä on 4. Sitten voin jakaa 1 binary, joka tulee olemaan 0001. Ja niin tämä tulee olemaan edustus "" binary. Kun pieniä "", se on nyt olemaan Ox61, jos, jakamalla nämä ylös sen binary, joten 6 - Katsotaanpa todella tehdä sen - on siellä ole pyyhekumi? Eraser. Ox61. Joten jakaminen 6 binary tulee olemaan 0 + 4 + 2 + 0. Ja jakaminen 1 tulee olemaan 0001. Tarkasteltaessa ero näiden 2, näemme, että ainoa ero pienten ja pääoman "" onko tämä yksi bitti. Joten palaan tänne - okei. Palatakseni tänne, jos katsomme, mitä vähän Ox20 on, niin halkaisu Ox20 osaksi binary, on 0010, 0000. Ox20, ainoa bitti, joka on asetettu tämä vähän, että olemme huolissamme, kanssa vaihtamisesta sekä isoja että pieniä "". Jos minä tai "", joka on tämä, "", jos minä tai "" kanssa Ox20, mitä aion saada? [Student, äänetön] Pienet '", koska se tulee kääntää tämän bitin 1. Ja jos minä tai "" kanssa Ox20, mitä aion saada? Pieniksi, koska vain ORING "" kanssa Ox20, Olen juuri menossa ORING tämän yhden bitin 1, se on jo 1, joten sillä ei ole väliä. Joten saamme "" ja "". Biteittäin ja. Jälleen voimme ajatella tätä meidän looginen ja vastine. Vasemmalla puolella meillä on totta ja totta. Se tulee olemaan totta, ja kaikissa tapauksissa, false & totta vai true & epätosi vai false & vääriä, mikään näistä asiat ovat totta. Joten mitä me lopulta saada on 1000. Joten nyt, tässä, tässä kun olen käyttänyt luotettava peiton ole, jossa meillä oli Ox20. Joten tämä on Ox20. Nyt mitä haluan tehdä, bittivastineen ~ of Ox20. Tämä tulee kääntää kaikki bitit. Joten minulla on 1101, 1111. Ja niin "" anded kanssa ~ Ox20 ei aio antaa minulle mitä? Vain vähän meidän täytyy todellakin miettiä tämä, sillä, jos kaikki nämä bitit asetetaan 1, Sitten me aiomme saada mitä "" oli, paitsi mahdollisesti mitä tämä vähän on. Koska jos se oli 1, nyt se tulee asettaa 0, koska mitä tämä on, anded tällä tulee olemaan 0. Joten mikä on "" & ~ Ox20 aio antaa minulle? [Opiskelijat vastata, äänetön] Ja mikä on "" ja - se on "". Ja mikä on "" & ~ Ox20 aio antaa minulle? "A." Koska tämä on tällä hetkellä 1. Anding tämän 0 aikoo tehdä sen 0, ja nyt me aiomme saada "". Molemmat ovat "," ja viimeisenä mutta ei vähäisimpänä tätä tyyppiä, meillä on XOR. Se on hyvin paljon, tai paitsi se tarkoittaa yksinomaan tai. Tämä on kuin mitä yleensä ajatella kuin tai todellisessa maailmassa. Niin et joko "x" tai "y", mutta ei molempia. Täällä 1 ^ 1 tulee olemaan 0. Koska totta, tämä on - se ei toimi yhtä hyvin looginen oikean ja väärän kuten peiton ja ja tai tehdä, mutta totta ^ totta on epätosi. Koska me vain haluamme palauttaa true, jos vain toinen niistä on totta. Joten 1 ^ 1 on 0. Entä 0 ^ 1? On 1.. 1 ^ 0 on 1, 0 ^ 0 on 0. Joten kaikissa olosuhteissa, 0 bittikohtainen jotain 0 tulee olemaan 0. 1 peiton jotain 0 tai 0 bittikohtainen 1, jos se on | tai ^, se tulee olemaan 1, ja jos se on ja se tulee olemaan 0. Ja ainoa tapaus, jossa 1 peiton 1 ei ole 1 on yksinoikeudella tai. Se on 0110. Joten tässä nyt XOR - niin olemme takaisin 20. "'^ Ox20 on nämä 2 bittiä olemme vertaamalla. Joten 1 ^ 0 aikoo antaa minulle mitä? Yksi. "'^ Ox20 ei aio antaa minulle? Pieniksi. "'^ Ox20 ei aio antaa minulle? Capital A. Koska mitä tämä tekee, tämä XORing kanssa Ox20 tehokkaasti flipping mitä tämä vähän on. Jos tämä on 0, se on nyt tulossa 1. Koska tämä on 1, 1 ^ 1 on 0. Joten meidän "" on tullut "", ja meidän "" on tullut "". Joten XOR on todella kätevä tapa vain flipping tapauksessa. Haluat vain kerrata yli merkkijono kirjaimia ja varajäsenten osalta jokainen yksittäinen merkki, juuri XOR kaiken Ox20. Nyt olemme vasen muutos. Vasen muutos on juuri menossa, periaatteessa, työntää kaikki numeroita, tai vasemmalle, ja aseta 0: n takana. Joten tässä meillä on 00.001.101. Aiomme ajaa 3 0: n sisään oikealta, ja saamme 01101000. Vuonna nonbinary kannalta, näemme, että se on todella kyse 13 vasemmalle siirtynyt 3, joka antaa meille 104. Joten vasemmalle siirtyminen, tässä näemme, x << y on pohjimmiltaan x * 2 ^ y. 13 * 2 ^ 3, 2 ^ 3 on 8, joten 13 * 8 104. Jos vain ajatella binary yleensä, miten kunkin numeron, jos lähdetään oikein, se on 1 paikka, sitten 2 paikka, sitten 4 paikka. Joten työntämällä 0: n oikealta, me vain työntää asioita, jotka olivat 4: n paikka 8 paikka, ja asiat, jotka olivat 8: n paikka 16 paikka. Jokainen muutos vain kertoo 2. Joo? [Opiskelija] Mitä tapahtuu, jos siirtynyt 5? [Bowden] Jos siirretään 5 olisit vain menettää numeroa. Väistämättä se on sama asia. Like, kokonaisluvut ovat vain 32 bittiä, joten jos lisäät 2 todella iso kokonaislukuja, se vain ei sovi kokonaisluku. Joten se on sama asia täällä. Jos olet siirtynyt 5, olisimme vain menetä että yksi. Ja se on sellainen mitä tarkoitan "suunnilleen" jos jos siirtää liian pitkälle, häviät bittiä. Oikea siirtyminen tulee olemaan päinvastainen, minne olemme menossa pistää 0: n pois lopussa, ja meidän tarkoituksiin, täytä 0: n vasemmalta. Joten Näin olemme pohjimmiltaan peruutettaessa, mitä olimme jo tehneet. Ja me näemme, että kolme 0: n oikealla juuri pudonnut, ja olemme työnsi 1101 aina oikeassa. Tämä tekee 104 3, joka on tehokkaasti, x / 2 ^ y. Joten nyt täällä, se on samanlainen idea. Miksi se on vain noin x / 2 ^ y, eikä oikeastaan ​​x / 2 ^ y? Koska jos olisin siirtynyt 4, olisin menettänyt 1. Periaatteessa, mitä ajattelet, ajatelkaa kokonaislukujakolasku yleensä. Joten, kuten 5/2 on 2. Se ei ole 2.5. Se on sama idea täällä. Kun jaamme 2, voimme menettää outoa bittiä matkan varrella. Joten nyt - se on siinä peiton. Siinä kaikki mitä sinun tarvitsee tietää. Muista käyttää tapauksissa näimme luokassa, kuten bittimaski on hyödyllinen bittioperaatioiden, tai voit käyttää niitä bittimaskeja. Isot kirjaimet ja pienet kirjaimet, tuloksia on melko prototyyppinä. Okei, joten puskurin ylivuoto hyökkäyksiä. Muistaako kukaan mikä oli vialla tätä toimintoa? Huomaatko me julisti joukko 12 tavua, 12 merkkiä, ja sitten me kopioi meidän puskurin 12 merkkiä koko merkkijono baarissa. Niin mikä on ongelma? Maaginen numero 12 olisi aika paljon heti pop ulos - miksi 12? Mitä jos baari sattuu olemaan enemmän kuin 12 merkkiä? Mitä jos baari on miljoonia merkkiä? Tässä kysymys on memcpy. Jos baari on riittävän pitkä, se vain täysin - "c", "c" ei ​​välitä siitä, että se oli vain 12 merkkiä; "C" ei välitä siitä, että se ei sovi, että monta tavua. Se vain täysin korvata nieriä, 12 tavua olemme varattu sitä, ja kaikki ohi sen muistiin, joka ei itse kuulu sen puskurin kanssa, mitä merkkijono baari on. Joten tämä oli kuva näimme luokassa jossa meillä on pino kasvaa. Sinun pitäisi käyttää näitä kuvia tai tutustua niitä uudelleen. Meillä on pino kasvaa, muistiosoitteita alkavat 0 yläosassa ja kasvaa alas pidä 4000000000 alareunassa. Meillä on joukko "c" jonnekin muistiin, Sitten meillä on osoitin bar oikealle alla, ja sitten meillä on tämä tallennettu runko osoitin meidän palautusosoite ja meidän vanhempi rutiini n pino. Muistakaa, mitä paluu osoite on? Se kun tärkein kutsuu funktio foo, puhelut toiminto baari, väistämättä, baari palaa. Joten kun baari palaa, heidän täytyy tietää, että se tulee takaisin foo että kutsui sitä. Joten paluu on osoite toiminnon, että se on palata, kun funktio palauttaa. Syystä, että on tärkeää, että puskurin ylivuoto hyökkäyksiä johtuu siitä, kätevästi, hakkerit haluaisin muuttaa, että lähettäjän osoite. Sen sijaan, että menee takaisin foo, aion mennä takaisin sinne, missä hakkeri haluaa minun palata. Ja sopivasti, jossa hakkeri usein haluaa palata on alku-puskuria, joka meillä oli alun perin. Niin huomaa, jälleen, pieni intialainen. Laite on esimerkki pieni intialainen järjestelmä, joten kokonaisluku tai osoitin on tallennettu tavua päinvastaiseksi. Joten tässä näemme - tämä on? Joo. Näemme Ox80, OxC0, Ox35, OxO8. Muista heksadesimaaliyksikön? Emme kääntää heksadesimaaliyksikön Little Indian, koska 2 heksadesimaaliyksikön muodostavat yhden tavun, ja me kääntää tavua. Siksi emme säilytä, kuten, 80530CO8. Me tallentaa sen sijaan, kunkin parin 2 merkkiä, joka alkaa oikealta. Että osoite viittaa osoitteen alku meidän puskurin että me itse halusi kopioida ensiksi. Syystä, että on hyödyllistä siksi, mitä jos hyökkääjä tapahtui, sen sijaan, että merkkijono, joka oli juuri harmiton merkkijono kuten nimensä tai jotain, mitä jos sen sijaan, että jono oli vain joitakin mielivaltaisen koodin että tekivät mitä he halusivat sen tehdä? Jotta he voisivat - En voi ajatella mitään siistiä koodia. Se voi olla mitä tahansa, vaikka. Mikä tahansa tuhoisa koodi. Jos he halusivat, he voisivat tehdä jotain seg vikoja, mutta se olisi turhaa. He yleensä tekevät sen hakata järjestelmään. Okei. CS50 kirjasto. Tämä on pohjimmiltaan getInt, getString, kaikki ne toiminnot tarjosimme sinulle. Joten meillä on char * merkkijono, ja se on abstraktio, joka me puhalsi pois jossain vaiheessa lukukauden aikana. Muista, että merkkijono on vain joukko merkkejä. Näemme tässä lyhennelmä getString. Sinun pitäisi muistella sitä muistaa, kuinka se toteutetaan. Key yksityiskohdat ovat, huomaa saamme yhden merkin kerrallaan alkaen standardi, joka on aivan kuten meille kirjoittamalla näppäimistöllä. Joten yhden merkin kerrallaan, ja jos saamme liikaa merkkejä, joten jos n + 1 on suurempi kuin kapasiteetti, Sitten meidän on lisättävä kapasiteettia meidän puskurin. Joten tässä olemme koko kaksinkertaistui meidän puskurin. Ja se pitää käynnissä, me merkin lisäämiseksi meidän puskuriin kunnes saamme uutta rataa tai tiedoston loppuun tai mitä tahansa, missä tapauksessa olemme tehneet merkkijono ja sitten todellinen getString kutistuu muistia, kuin jos me varattu liikaa muistia se menen takaisin ja kutistuu hieman. Joten emme näytä sitä, mutta tärkein ajatus on se on lukea yhden merkin kerrallaan. Se voi vain lukea koko juttu kerralla, koska niiden puskuri on vain tietyn koon. Joten jos merkkijono että se yrittää lisätä puskuriin on liian iso, niin se vuotaa yli. Joten tässä estämme, että vain lukemalla yhden merkin kerrallaan ja kasvava aina tarpeen tullen. Niin getInt ja muut CS50 kirjaston toimintoja on taipumus käyttää getString niiden toteutukset. Joten olen korostanut tärkeitä asioita täällä. Se kehottaa getString saada merkkijono. Jos getString ole palautuneet muistia, muistaa, että getString mallocs jotain, joten aina kun soittaa getString sinun ei pitäisi (käsittämätön) vapauttaa merkkijono että sait. Joten tässä, jos se ei ole malloc jotain, palaamme INT_MAX kuin vain lippu, että hei, emme olleet oikeastaan ​​päässyt kokonaisluku. Sinun pitäisi sivuuttaa, mitä minä käännyn teidän, tai sinun ei pitäisi kohdella tätä kelvolliseksi syötteeksi. Lopuksi olettaen, että ei onnistu, käytämme sscanf, että erityistä lippu, mikä tarkoittaa, ensimmäinen ottelu kokonaisluku, sitten vastaa mitään merkkejä sen jälkeen kokonaisluku. Joten huomaa haluamme sen equal 1. Joten sscanf Palautukset Miten monta ottelua, jos menestyksekkäästi? Se palaa 1, jos se sovitetaan onnistuneesti kokonaisluku, se palauttaa 0, jos se ei vastaa kokonaisluku, ja se palaa 2 jos se sopi kokonaisluku, jota seuraa jokin merkki. Joten huomaat me yritä uudelleen, jos me vastaamaan mitään, mutta 1. Jos siis otetaan 1, 2, 3, C, tai 1, 2, 3, X, Sitten 1, 2, 3 ei saa varastoida kokonaisluku, X saisi säilyttää merkin, sscanf palaisi 2, ja olisimme yritä, koska me vain haluamme kokonaisluku. Nopeasti puhaltaa läpi HTML, HTTP, CSS. Hypertext Markup Language on rakenne ja semantiikka web. Tässä on esimerkki luento, jossa meillä on HTML-tunnisteita. Meillä on pää tunnisteet, body-tunnisteiden, meillä on esimerkkejä tyhjiä tunnisteita missä me itse ei tarvitse käynnistää ja sulkea tag, meidän on vain linkki ja kuva. Ei ole sulkeminen kuva tag, siellä on vain yksi tunniste, jolla saavutetaan kaiken tag tarvitsee tehdä. Linkki on esimerkki, näemme, miten voit linkittää CSS, käsikirjoitus on esimerkki siitä, miten voit linkittää ulkoiseen JavaScript. Se on melko yksinkertainen, ja muistaa, HTML ei ole ohjelmointikieli. Täällä, muistan kuinka voisitte määritellä muodossa tai ainakin mitä tämä tekisi? Tällainen muoto on toimintaa ja menetelmää. Menetelmiä tulet aina vain nähdä ovat GET ja POST. Joten on versio, jossa asia saa laittaa URL. POST on, jos se ei ole laittaa URL. Sen sijaan tietoja lomakkeesta lisätään enemmän piilotettu HTTP-pyynnön. Joten tässä, toiminta määrittää, missä HTTP-pyynnön menee. Mihin se on menossa on google.com / haku. Menetelmällä. Muista erot GET ja POST, ja vain sanoa kuten esimerkiksi jos haluat kirjanmerkin jotain. Et koskaan voi kirjanmerkki POST URL koska data ei sisälly URL. HTTP, nyt on HTTP-protokolla. HTTP-protokolla, voit odottaa sen siirtää Hypertext Markup Language, ja se tekee. Mutta se myös siirtää kaikki kuvat löydät Webissä, mitään latauksia teet aloittaa HTTP-pyynnön. Joten HTTP on vain kieli World Wide Web. Ja tässä sinun täytyy tunnustaa tällaista HTTP-pyynnön. Täällä HTTP/1.1 puolella vain sanoo, että versio Pöytäkirjan Käytän. Se on oikeastaan ​​aina olemaan HTTP/1.1, niin näet sen. Sitten näemme, että tämä oli GET, vaihtoehtona on POST, että saatat nähdä. Ja URL että yritin käydä oli www.google.com/search?q = blaa, blaa, blaa. Niin muista, että tämä kysymysmerkki q = blah blah blah, on tällaista tavaraa, joka jättää lomake. Vastaus saattaa palaa luokseni näyttäisi jotain tällaista. Jälleen alkaen protokollaa, joka tulee olemaan, että jonka jälkeen tilan koodi. Tässä se on 200 OK. Ja lopuksi, web-sivun, että olen itse pyytänyt seurataan. Mahdollinen tila koodi saatat nähdä, ja sinun pitäisi tietää useita. 200 OK olet luultavasti nähnyt ennen. 403 Forbidden, 404 Not Found, 500 Internal Server Error on yleensä jos menet verkkosivuilla ja jotain on rikki tai niiden PHP kaatuu, kun taas laite meillä on tuo iso oranssi laatikko joka tulee ja sanoo, kuten, jotain on vialla, tämä koodi ei toimi tai tätä toimintoa huono. Yleensä sivustot eivät halua sinun tietää, mitkä toiminnot ovat todella huonoja, joten sen sijaan he vain antaa sinulle 500 Internal Server virheet. TCP / IP on 1 kerros alle HTTP. Muista, että on Internet ulkopuolella World Wide Web. Kuten jos pelaat online-peli, joka ei mene läpi HTTP, se menee läpi erilainen - se on edelleen käytössä Internet, mutta se ei käytä HTTP. HTTP on vain yksi esimerkki protokollan rakennettu TCP / IP. IP tarkoittaa kirjaimellisesti Internet Protocol. Jokaisella tietokoneella on IP-osoite, ne ovat ne, 4-numeroinen asioita kuten 192.168.2.1, tai mitä tahansa, joka on yleensä paikallinen yksi. Mutta joka on mallia IP-osoite. Joten DNS, Domain Name Service, sitähän kääntää asioita, kuten google.com on todellinen IP-osoite. Joten jos kirjoitat, että IP-osoite URL, joka toisi sinut Google, mutta sinun ei yleensä muistaa niitä asioita. Sinulla on taipumus muistaa google.com sijaan. Viimeinen asia, meillä on portteja, jos tämä on TCP osa IP. TCP tekee enemmän. Ajattele, kuten sinulla on selaimessasi käynnissä. Ehkä sinulla on joitakin sähköpostiohjelma käynnissä; Ehkä sinulla on jokin muu ohjelma, joka käyttää Internet käynnissä. He kaikki tarvitsevat pääsyn internetiin, mutta tietokone on vain 1 WiFi-kortti tai mitä tahansa. Joten satamat ovat tapa, että emme voisi jakaa miten nämä sovellukset voivat käyttää Internetiä. Jokainen hakemus saa 1 tiettyyn porttiin, että se voi kuunnella, ja oletuksena, HTTP käyttää porttia 80. Jotkin sähköpostipalvelut käyttää 25. Low-numeroidut yleensä pidätetään. Voinet saada korkeamman numeroidut itse. CSS, Cascading Style Sheets. Meidän tyyli verkkosivuja CSS, ei HTML. On 3 paikkaa voit laittaa CSS. Se voi olla inline, välillä tyyli tunnisteet tai kokonaan erilliseen tiedostoon ja liitetään sisään Ja tässä on vain esimerkki CSS. Teidän pitäisi ymmärtää tätä mallia, jossa ensimmäinen esimerkki on me vastaavia body, ja tässä olemme keskitys body. Toisessa esimerkissä olemme matching asia ID-footer, ja olemme soveltamalla joitakin tyylejä, että. Huomaa, että ID alatunnistetekstin-tasaa vasemmalle, ottaa huomioon, että leipäteksti-suoristaa keskustasta. Footer on kehossa. Se sen sijaan, text-align jäljellä, vaikka keho sanoo text-align center. Tämä on koko CSS osa sitä. Sinulla voi olla - voit määrittää tyylejä kehon, ja sitten asiat elimistössä voit määrittää tarkempia tyylejä, ja asiat toimi odotetusti. Tarkempi CSS suunnittelijat etusijalla. Minusta se on siinä. [Ali Nahm] Hi everyone. Jos voisin vain saada huomiota. Olen Ali ja aion käydä läpi PHP ja SQL todella nopeasti. Joten voimme aloittaa. PHP on lyhenne sanoista PHP: Hypertext Preprocessor. Ja kuten kaikki pitäisi tietää, se on server-side scripting kieli, ja käytämme sitä loppupäätä sivustoja, ja miten se tekee paljon laskelmat, takana-kulissien osa. Syntax. Se ei ole kuin C, yllätys, yllätys. Se on aina aloittaa, jos näet, - En voi liikkua eteenpäin. Näet tarvitset uudenlaisia ​​henkselit ja sitten tarvitset myös? Php. Se on aina miten sinun pitää kehystää PHP tekstein, PHP-koodin. Joten se voi vain olla kuin C, jossa sellainen laittaa sen ensin. Sinun täytyy aina ympäröivät sitä. Ja nyt, suuri syntaksi on, että kaikki muuttujat on aloitettava $ luonnetta. Sinun täytyy tehdä sitä, kun olet määrittelemättä niitä, sinun täytyy tehdä se kun olet viittaavat niihin myöhemmin. Aina on, että $. Se on sinun uusi paras ystävä, melko paljon. Sinun ei - toisin kuin C, sinun ei tarvitse laittaa millaisia ​​muuttujan tyyppi se on. Joten kun et tarvitse $, sinun ei tarvitse laittaa, kuten, int x tai merkkijono y, jne., jne.. Joten pieni ero. Seurauksena tästä, se tarkoittaa, että PHP on heikosti tyyppiä. PHP on heikosti tyyppi kieli, ja se on heikosti kirjoitettu muuttujia. Toisin sanoen, se tarkoittaa, että voit vaihtaa erilaisia ​​muuttujatyyppejä. Voit tallentaa numerolla 1 int, voit tallentaa sen merkkijono, ja voit tallentaa sen kellua, ja se kaikki on, että numero 1. Vaikka olet tallentaa sen eri muodoissa, se on silti - muuttujatyypeille edelleen jatkavat lopussa. Joten jos kuulehan, jos muistat PSET 7, Monet teistä luultavasti ollut ongelmia tämän. Kaksi yhtäsuuruusmerkit 3 yhtäsuuruusmerkit 4 yhtä merkkejä. Okei, ei ole 4 yhtäläisyys, mutta on 2 ja 3. Käytät 2 yhtäsuuruusmerkit tarkistaa arvot. Se voi tarkistaa koko tyyppiä. Joten jos voit nähdä ensimmäinen esimerkki, Minulla on num_int == num_string. Joten int ja string ovat sekä teknisesti, 1, mutta he ovat erilaisia. Mutta kaksinkertainen vastaa, se silti kulkea. Kuitenkin kolminkertainen vastaa, se tarkistaa arvo sekä erilaisia. Tämä tarkoittaa, että se ei aio siirtää tässä toisessa asiassa, jos käytät 3 yhtäsuuruusmerkit sijaan. Niin, että merkittävä ero, että sinun pitäisi kaikki ovat osoittaneet nyt. String ketjutus on toinen voimakas asia voit käyttää PHP. Se on pohjimmiltaan vain tämä kätevä dot merkintä, ja niin voit sitoa langat yhteen. Joten jos sinulla on kissa ja sinulla on koira, ja haluat laittaa 2 langat yhteen, voit käyttää ajan, ja se on sellainen miten se toimii. Voit myös laittaa ne vierekkäin, kuten voitte nähdä täällä pohjan esimerkiksi jossa olen kaiku merkkijono 1, tilaa merkkijono 2. PHP tietävät korvata niitä sellaisina. Taulukot. Nyt, PHP, on olemassa 2 erilaista paneelit. Voit säännöllisesti taulukoita, ja voit myös assosiatiivisia taulukoita, ja aiomme käydä läpi niitä juuri nyt. Säännöllinen paneelit ovat vain tämän C, ja niin sinulla on indeksien numeroitu. Juuri nyt me vain odotamme luoda yksi ja laittaa - joten tämä on, miten luomme tyhjä array, niin aiomme panna indeksin numero 0. Aiomme laittaa numero 6, arvo 6. Voit nähdä sen alareunassa täällä. Where's - klo indeksin numero 1 aiomme laittaa arvo 4, ja niin voit nähdä siellä 6, siellä on 4, ja sitten kun olemme tulostus asioita, kun yritämme ja tulostaa tallennettu arvo indeksin numero 0, Sitten näemme arvo 6 tulostetaan ulos. Cool? Niin, että säännöllinen paneelit sinulle. Toinen tapa voit myös lisätä asioita säännöllisesti paneelit nyt on, voit vain liittää ne lopussa. Tämä tarkoittaa, että sinun ei tarvitse määrittää tietyn indeksin. Näet numeron, ja sitten hakasulkeissa ei ole indeksiä määritelty. Ja se tietää - PHP tietävät vain lisää se listan loppuun, seuraava vapaa paikka. Voit siis nähdä 1 oikeassa tuossa 0 paikalla, 2 meni tuolla ensimmäisellä paikalla. 3 menee - lisätään myös siellä. Niin tuollainen järkevää. Olet vain jatkuvasti lisäämällä sitä, ja sitten kun olemme kaikuvat indeksi numero 1, se tulostaa arvon 2. Sitten meillä on paneelit, jotka ovat assosiatiivisia taulukoita. Assosiatiiviset taulukot sen sijaan, numeeristen, mitä he tekevät on, ne ovat indeksit, jotka ovat merkkijono. Näet sijasta - Pääsin eroon kaikista niistä numero indeksit, ja nyt se on key1, AV.2, KEY3, ja he lainausmerkkeihin merkiksi siitä, että he ovat kaikki kielet. Jotta voimme olla esimerkki tästä. Esimerkki tästä on se, että meillä on tf, ja se on indeksin nimi. Aiomme laittaa "Ali", kuten nimi, on indeksi, kalorit syönyt, voimme laittaa int tällä kertaa sijaan merkkijonon, ja sitten indeksi tykkää, voimme laittaa koko ryhmän sisälle. Joten tämä on tavallaan - se on samanlainen käsite miten meillä oli indeksit numeroita, mutta nyt voimme muuttaa indeksien ympärillä on ne jouset sijaan. Voit myös tehdä tämän lisäksi juuri tekemässä sitä erikseen, voit tehdä sen kaikki yhdessä murikka. Voit siis nähdä, että TF kyseisen array, ja sitten asetamme ne kaikki yhdellä jättiläinen hakasulkeen asetettu. Jotta voidaan nopeuttaa asioita. Se on enemmän tyylillinen vaihtoehto kuin ei. Meillä on myös silmukoita. C meillä on lenkit, jotka toimivat näin. Meillä oli jono, ja menimme indeksistä 0 listan loppuun, ja me tulostaa sen kaiken, eikö? Paitsi ongelma on, sillä assosiatiivinen taulukot, emme välttämättä tiedä näiden numeeristen koska nyt meillä on merkkijono indeksit. Nyt käytämme foreach silmukoita, joka taas et toivottavasti käytetään PSET 7. Foreach silmukoita vain tietää jokainen osa luettelon. Ja se ei tarvitse tietää tarkalleen Numeroindeksi että sinulla on. Joten sinulla on foreach syntaksin, joten se on foreach, laitat array. Joten minun array kutsutaan PSET, ja sitten, sanaa, ja sitten laitat tämän paikallisen väliaikainen muuttuja, joka aiot käyttää vain erityinen asia, joka aikoo järjestää erityisiä - Yhdessä tapauksessa tai yksi osa array. Pset num järjestää 1, ja sitten ehkä se pitää numero 6, ja sitten se pitää numero 2. Mutta se on taatusti käydä läpi jokainen arvo, joka on jono. Hyödyllisiä toimintoja, että sinun pitäisi tietää, PHP ovat vaativat, niin että tekee varma, että olet myös tiettyjä tiedostoja, kaiku, exit, tyhjä. Suosittelen katsomaan PSET 7 ja katsoa kyseisiä toimintoja. Saatat joutua tietää niistä, niin olisin varmasti tietää mitä tarkalleen ottaen nämä kaikki menee. Ja nyt me aiomme käydä läpi soveltamisalan todella nopeasti. Laajuudeltaan, PHP on eräänlainen funky asia, toisin kuin C, ja niin me vain mene läpi se nopeasti. Joten sanokaamme aloitamme että nuoli, että meillä on siellä. Ja aiomme aloittaa $ i. Joten muuttujan 'i' tulee olemaan 0, ja me vain aio pitää tulostaa sen, että iso valkoinen laatikko tuolla. Aiomme aloittaa i0, ja sitten me aiomme yhtyä siihen. Joten ei 0. Ja sitten me aiomme kasvattaa sitä varten silmukka, ja sitten se tulee olemaan arvo 1. Yksi on alle 3, joten se menee läpi, että silmukka, ja sitten me aiomme nähdä sen painettu uudelleen. Me aiomme kasvattaa sitä uudelleen 2, ja 2 on alle 3, joten se menee ohi silmukka, ja se tulee tulostaa 2. Tulet huomata, että 3 on vähintään 3, niin me murtautumaan ulos silmukan. Joten nyt olemme lähtenyt, ja sitten me aiomme mennä ATOIMINTA. Okei. Niin sinun täytyy huomata, että tämä muuttuja että olemme luoneet, 'i' muuttuja, ei paikallisesti scoped. Tämä tarkoittaa, että se ei ole paikallista aikaa silmukka, ja että muuttuva voimme vielä käyttää ja muuttaa jälkeenpäin, ja se on silti tehokas. Joten jos menet toiminnon nyt, huomaat, että käytämme myös "i" muuttuja, ja aiomme kasvattaa 'i' + +. Luulisi, aluksi, joka perustuu C, että se on kopio "i" muuttuja. Se on täysin eri asia, mikä on oikein. Joten kun me painamme sitä, me aiomme tulostaa 'i' + +, joka tulee tulostaa, että 4, ja sitten me aiomme - sorry. Sitten me aiomme lopettaa ulos tämän tehtävän, ja me aiomme olla siellä missä että nuoli on juuri nyt. Tämä tarkoittaa, että sen jälkeen, kuitenkin, vaikka toiminto muuttunut arvosta "i", se ei muuta funktion ulkopuolella, koska toiminto on erillinen soveltamisala. Tämä tarkoittaa, että kun me echo 'i', se ei ole muuttunut soveltamisalaan toiminto, ja niin sitten me aiomme tulostaa 3 uudelleen. Eri asioita soveltamisala PHP kuin C. Nyt PHP ja HTML. PHP on käytetty tehdä web-sivuja dynaamista. Se ikään kuin tekee asiat toisin. Meillä on se eroaa HTML. HTML, meillä on aina vain sama staattinen asia, kuten miten Rob osoitti, katsoo PHP, voit muuttaa asioita perustuu kuka käyttäjä on. Joten jos minulla on tämä, olen, "Olet kirjautunut sisään nimellä -" ja sitten nimi, ja voin vaihtaa nimeä. Joten nyt nimi on Joseph, ja se on "minusta", mutta voin myös vaihtaa nimensä on Tommy. Ja se olisi eri asia. Niin sitten voimme myös muuttaa eri asioita hänestä, ja se näyttää eri sisältöä nimen perusteella. Joten PHP voi tavallaan muuttaa mitä tapahtuu sivustoosi. Sama täällä. Edelleen on huomattava, että niillä on eri sisältö, vaikka olet teknisesti käyttää yhä saman sivun pinnalla. Tuottaa HTML. On 2 eri tapoja, joilla voit tehdä tämän. Joten me menemme läpi juuri nyt. Ensimmäinen tapa on, sinulla on - Joo, anteeksi. Joten sinun tarvitsee vain tavallisia silmukka PHP, ja sitten kaiku PHP ja olet kaiku ulos HTML. Käyttäen mitä Rob osoitti sinulle HTML script ja sitten käyttämällä PHP tulostaa vain tulostaa sen sivun. Vaihtoehtoinen tapa on tehdä se kuin jos erottaa PHP ja HTML. Joten voit olla rivi PHP, joka alkaa silmukka, niin voit olla rivi HTML erillisessä asia, ja sitten lopetat silmukka, jälleen, ja PHP. Joten se on tavallaan erottamalla se pois. Vasemmalla puolella, voit että sinulla on kaikki - se on vain 1 murikka PHP. Oikealla näet, että sinulla on rivi PHP, sinulla on rivi HTML, ja sinulla on rivi PHP uudelleen. Joten erottamalla sen ulos, mitä he tekevät. Ja voit huomata, että joko tavalla, joko niistä, he silti tulostaa kuvan, kuva, kuva, niin, että HTML vielä tulostetaan samalla tavalla. Ja sitten näet yhä 3 kuvaa näy sivustossasi. Joten se on 2 eri tapoja tehdä sama asia. Nyt meillä on muotoja ja pyyntöjä. Kuten Rob osoitti sinua, on olemassa muotoja HTML, ja me vain tuulta läpi tätä. Sinulla on toimintaa ja sinulla on menetelmä, ja toiminta sellainen näyttää, missä olet menossa lähettää sen, ja menetelmä on, onko se tulee olemaan GET tai POST. Ja GET-pyyntöä, kuten Rob sanoi, tarkoittaa, että aiot laittaa sen muodossa ja näet sen URL-osoitteen, kun taas POST pyyntö et näe URL. Joten pieni ero. Kuitenkin yksi asia, joka on samanlainen asia on, että POST ja GET ovat yhtä epävarmoja. Joten saatat ajatella, että vain koska et näe sitä URL, se tarkoittaa, että POST on turvallisempi, mutta voit silti nähdä se teidän evästeet tietoja, jotka olet lähettämässä. Joten en usko, että noin yksi tai toisella. Toinen huomioitava asia on se, että sinulla on myös kohta muuttujia. Te käytetty tätä PSET 7 saat käyttäjätunnuksen tietoja. Mitä tapahtui oli se, että voit käyttää tätä assosiatiivisia array, $ _SESSION, ja sitten pystyt käyttämään eri asioita ja tallentaa eri asioita eri puolilla sivua. Viimeinen asia on, että meillä on SQL, Structured Query Language, ja tämä on ohjelmointikieli hallita tietokantoja. Mitä tarkalleen ottaen ovat tietokantoja? He ovat kokoelmia taulukoita, ja jokainen pöytä voi olla samanlaisen esineitä. Joten meillä oli taulukko käyttäjien oman rahoituksen PSET. Ja miksi ne ovat hyödyllisiä? Koska se on tapa pysyvästi tallentaa tietoa. Se on tapa seurata asioita ja hallita asioita ja todella nähdä sen eri sivuilla ja pitää kirjaa. Kun taas jos vain tallentaa sitä, että yksi välittömästi hetki ja sitten käyttää sitä myöhemmin, et voi käyttää mitään, että olet tallentanut. Meillä on 4 suurta asiaa, joita käytämme SQL komentoja. Meillä on valita, lisätä, poistaa ja päivittää. Nämä ovat todella tärkeitä te tietää tietokilpailun. Me nopeasti mennä yli valitse juuri nyt. Periaatteessa olet valitsemalla rivejä tietokannasta. Joten jos sinulla on, täällä - meillä on nämä 2 eri asioita, ja haluamme valita luokat taulukko jossa mahtava - missä mahtava sarakkeen arvo on 1. Niin näet täällä, meillä on nämä 2 asiat luokan nimi, CS50 ja Stat110, ja meillä on luokkatunnukset ja iskulause. Joten haluamme valita kaikki nämä tiedot. Niin näet täällä, että se on tavallaan poiminta tuon mahtava sarakkeessa jossa kaikki asiat ovat 1, ja sitten se on luokan tunnus, luokan nimi ja iskulause, että se voi poimia. Miten tarkalleen tehdä tämän koodin? Sinun täytyy käyttää PHP. Niin, että on tavallaan miten PHP ja SQL liittyvät toisiinsa. Nyt meillä on koodi, ja aiomme käyttää hakutoiminto kuten teimme PSET 7, ja aiomme ajaa SQL-kyselyn. Sitten me aiomme olla - meillä on aina tarkistaa, jos rivin kolminkertainen yhtä jos epätosi. Joten jälleen, haluat tarkistaa tyyppi ja arvo, ja sitten jos se ei toimi, niin haluat pyytää anteeksi, kuten tavallista, kuten teimme PSET 7. Muuten haluat silmukan läpi kaiken kanssa ne käteviä foreach silmukoita, että me vain meni yli. Nyt kun olemme läpiohjaus ja olemme tehneet sen ohi, Oletetaan, että meidän kyselyn kulunut, nyt meillä on foreach silmukka. Ja ensimmäinen rivi se on, joten tässä on rivi, täällä, se on boxed. Se tulee tulostaa kaikki tiedot, jotka se on mennyt. Joten se tulee tulostaa alareunassa "Wanna Learn HTML?" Sitten se tulee mennä seuraavalle riville, koska se on valmistunut ensimmäinen silmukka, ja niin sitten se tulee tulostaa toisella rivillä sitä, joka tulee olemaan STAT110, Etsi kaikki Moments. Viimeinen asia on SQL haavoittuvuudet. Tiedän David kosketti tätä hieman luento. Voit lukea tämän myöhemmin. Se on todella hauska. SQL Injection on tavallaan hankala asia. Oletetaan, että olet vain kiinni nämä muuttujat oikeus omaan kyselyn, kuten näette, että ensimmäisellä rivillä. Niin se näyttää hyvin, eikö? Olet vain ottamassa käyttäjätunnus ja salasanan SQL-kyselyn, ja haluat lähettää sen pois ja saada mitä on tietosi pöytä. Tämä vaikuttaa melko yksinkertainen. Joten avulla sanoa joku antaa oivan, salasanaa, tämä tai tekstiä täällä - pitäisi oikeastaan ​​olla punainen laatikko. Joten sanotaan, että ne laittaa, että salasana - sitähän ne tulevat. Joten he laskemisesta tai "1" = 1. Sellainen typerä salasana on. Nyt vain korvata sitä, ja sinun huomata, että kyseisessä SQL kyselyn nyt se arvioi aina totta, koska sinun huomata, että voit SQL-kysely valita kaiken tämän tiedon tai voit vain 1 = 1. Niin, että on aina menossa on tosi. Se ei tule todellakaan toimi, koska se tarkoittaa, että hakkeri voi murtautua järjestelmään. Ratkaisu tähän on, että sinun täytyy käyttää SAN-järjestelmä, mikä tarkoittaa, että sinun täytyy käyttää kysymysmerkkejä, joka on mitä te käytetty PSET 7, jos aiot käyttää kysymysmerkki sijasta, johon haluat laittaa jotain, ja sitten olet menossa on pilkku, ja sitten sinulla on jälkeenpäin, jälkeen merkkijono, eri muuttujia, jotka haluat korvata omaan kysymysmerkki. Joten voit huomata tässä, että nyt minulla on nämä punaiset kysymysmerkkejä. Sitten laitoin muuttujat jälkeen kieliäni joten tiedän korvata ne tässä järjestyksessä jälkeenpäin. Joka varmistaa, että jos joku tekee sen näin, ja niillä on tai 1 = 1 tilanne, joka varmistaa, loppupäätä, varmista, että se ei oikeastaan ​​murtaa SQL-kyselyn. Okei, niin se on aika paljon se, tornado PHP ja SQL. Onnea kaikille teille, ja nyt Ore [Oreoluwatomiwa Babarinsa] Okei kaikille. Aika mennä yli joitakin JavaScript ja joitakin muita asioita hyvin nopeasti, joten meidän ei pidä sinua tänä iltana. JavaScript. Kyllä. JavaScript on sellainen kova juttu, muka. Mitä todella tarvitsee tietää JavaScript, se on tavallaan kuin client-side päähän mitä web-sovellus aiotaan tehdä. On joitakin asioita, sinun vain halua huolehtia koko ajan palvelimen puolella. Kaikki vähän vuorovaikutusta, korostaen yksi asia, jonkin kadottaminen. Et todellakaan halua olla puhua palvelimelle kaikkien aikaa. Ja osa, joka ei ole edes mahdollista tehdä palvelimen puolella. Siksi me tarvitsemme jotain JavaScript. Cool asioita JavaScript: Se on dynaamisesti kirjoitetaan. Mitä tämä tarkoittaa sitä, että ohjelmaa ei tarvitse tietää mitä tarkalleen ottaen muuttujat ovat, kun kirjoittaa sen ulos. Se vain eräänlainen tajuta se, koska se on käynnissä. Muita asioita, jotka ovat viileitä siitä: Se on kihara ahdin kieli, mikä tarkoittaa syntaksi on samanlainen kuin C ja PHP. Sinun ei tarvitse tehdä paljon muokata, kun opettelet JavaScript. Täällä meillä on hieman JavaScript. Mielenkiintoista tässä on, että jos tarkastellaan sitä, meillä on hieman JavaScript tuolla pään tag. Mikä on se on pohjimmiltaan vain sisällyttää JavaScript-tiedoston. Tämä on yksi tapa voit sisällyttää JavaScript-ohjelmaan. Sitten toinen hieman on oikeastaan ​​rivinsisäinen JavaScript, hyvin samankaltainen inline tyyliin CSS, ja olet vain kirjallisesti joitakin koodi hyvin nopeasti siellä. JavaScript on taulukot. Vain yksi tapa pitää tiedot noin, erittäin hyödyllinen. Erittäin mukava ja helppo syntaksi. Käytät hakasuluissa tutustua kaikkeen ja pitää kaiken yhdessä. Ei mitään liian monimutkaista. Cool juttu Javascript ja ohjelmointikieliä yleensä on, että sinun ei tarvitse huolehtia array kokoa. Voit vain käyttää array.length ja seurata sitä, ja myös array voi kasvaa tai kutistua, kun tarvitset sitä. Joten sinun ei edes tarvitse pelätä minkäänlaista, Voi ei, minun täytyy jakaa enemmän asioita, tai jotain sellaista. Cool juttu tässä on, että JavaScript on jotain kutsutaan esineitä. Se on olio-ohjelmointikieli, niin mitä se on on pohjimmiltaan tapa, jolla voit ryhmitellä tietoja yhdessä, hieman samanlainen struct, mutta voit käyttää sitä kuin struct tai assosiatiivisia array syntaksin. Se on melko yksinkertainen ja mitä voit tehdä tämä on ryhmän tietojen yhdessä jos sinulla on joukko tietoja, jotka ovat sukua. Koska se on kaikki mitä tarvitset kuvata auton, sinun ei tarvitse olla se joukko eri paikoissa. Voit vain kiinni sen 1 esineen JavaScript. Kuten ehkä tiedätte, iteroimalla on yksi niistä tylsiä tehtäviä. Sinä vain tehdä sen yli uudestaan. Sinun täytyy puhua jokaisen esineen autossa, tai sinun täytyy mennä läpi jokaisen kohteen luettelosta tai jotain. Joten JavaScript on samanlainen PHP, foreach syntaksin. Tässä tapauksessa se on silmukka. Haluat käyttää tätä vain esineitä. On joitakin ongelmia, joita esiintyy, jos käytät tätä taulukot. Se on yleensä yksi niistä asioista, vaikka, joka on erittäin hyödyllinen, koska voit poistaa paljon yläpuolella koska sinun ei tarvitse vetää kaiken teidän esine itse. Sinun ei tarvitse muistaa kaikkia keskeisiä nimiä. Sinä vain eräänlainen saada ne takaisin tässä syntaksin. Tässä, jossa sillä, haluat vain muistaa että saat takaisin kaikki avaimet, hyvin samalla tavalla hash table. Jos muistat, että kun voisitte laittaa merkkijonon voisit saada jotain irti että olisi liittyy arvo sen kanssa. Mitä voit tehdä tämä on voit sanoa, kaikki hyvin, Laitoin auton, ja kutsuin sitä Ferrari. Joten voit laittaa merkkijonon Ferrari myöhemmin uudelleen, ja voit saada, että ulos. Ja voit tehdä sen silmukka, jossa on silmukka. Joten lisää esineitä. Keskeinen asia tästä sinun täytyy muistaa on, että voit käyttää esine struct syntaksi milloin haluat näiden kanssa, paitsi jos mitä aikoo käyttää merkkijono ei ole kelvollinen muuttujan nimi. Joten jos tarkastellaan, että meillä on avain välilyönneillä. No, jos olisit laittaa object.key, tila, jossa, tilaa, tilat, että vain ei olisi järkevää lauseopillisesti. Joten voit vain voi tehdä, että tällaista kiinnike syntaksin. Myös JavaScript on hyvin soveltamisala-viisasta PHP. Sinulla on 2 ratkaisumahdollisuuksia soveltamisalaa. Et voi olla var edessä muuttujan ja että vain sitä, tämä on globaali. Voit nähdä sen mistä tahansa. Vaikka olisit laittaa tämä jos ilmoitus, missään muualla koodissa tuon ajankohdan jälkeen näyttää siltä, ​​että muuttuja. Toinen asia on kuitenkin se, jossa var, se on rajoitettu mitä toimintoa olet tuumaa Jos et ole toimintoa, no, se on globaali. Mutta jos olet toiminto on näkyvissä vain kyseisen toiminnon. Minulla ei ole esimerkki, mutta joo. Se on yksi niistä asioista, joissa voit hallita mitä muuttujia haluat olla maailmanlaajuista, mitä muuttujia haluat olla paikallisia, mutta sinun täytyy olla varovainen tästä, koska sinulla ei ole tyyppiä hienorakeinen valvonnan teet C, jos jos jotain on ilmoitettu silmukka, se tulee jäämään, että silmukka. Asia, jota emme oikeastaan ​​välitä käyttää Javascript manipuloi web-sivuja, eikö? Tarkoitan, siksi me teemme tätä. Voit tehdä, että käytämme jotain kutsutaan DOM. Document Object Model. Periaatteessa, mitä se on se vie kaiken HTML ja malleja sen ulos joukko esineitä, jotka ovat sisäkkäin sisällä toisistaan. Aloitat ulos jotain tällaista. Sinulla on, oikealla minulle, nippu koodia siellä, että on tavallaan - Luulisi, että olisi hyvin vaikea manipuloida, koska olisit jäsentämiseen läpi joukko tekstin ja ottaa pala erilleen asioita. Ja mitä jos se ei ole oikeassa muodossa? Pahoja asioita tapahtuu. Joten JavaScript huolehtii tämän sinulle, ja saat mukavan tietorakenne, kuin yksi vasemmalla puolellani, josta juuri on asiakirja, ja sisältä että sinulla on jotain kutsutaan HTML, ja sisältä että sinulla on pään ja ruumiin, ja sisältä että pää sinulla on otsikko, ja niin edelleen, ja niin edelleen, ja niin edelleen. Tämä yksinkertaistaa manipuloimalla web-sivu, niin se on vain, oh, haluan vain puhua tämän kohteen. Tavallaan hyvin samalla tavalla voisitte puhua toisen objektin olet tehnyt itsellesi. Kuten sanoin, kaikki DOM on Document Object. Joko se on vain yksi paikka, ja sitten voit mennä siinä löytää asioita, ja voit tehdä sen - tämä on vanha tyyli tehdä se, siellä, jossa et document.getElementById, ja sitten nimi, ja kuten voitte luultavasti kertoa, tämä saa erittäin jäykkää jonkin ajan kuluttua. Joten luultavasti halua tehdä sitä. Siksi meillä on Seuraava asia aiomme puhua tämän jälkeen. Keskeinen asia tässä on, että, okei, sinulla on kaikki nämä elementit, eikö? Joten ehkä voin vaihtaa väriä jotain, kun sivu latautuu. Niin mitä? Entä jos käyttäjä napsauttaa jotain? Haluan sen tehdä jotain mielenkiintoista, kun hän napsauttaa jotain. Siksi meillä on tapahtumia. Voit pohjimmiltaan löytää mitään elementin, DOM, ja sitten sanoa, hei. Kun tämä lataa tai joku napsauttaa sitä, tai kun he hiiren sen, asialle jotain. Ja mitä sinulla on, sinulla on toimintoja, jotka käsittelevät tämän sinulle. Nämä toiminnot ovat tapahtumankäsittelijät. Mitä He ovat - se on vain hieno tapa sanoa, tämä toiminto suoritetaan vain, kun tämä tapahtuma tapahtuu. Joten se käsittelee tapahtuman perusteella. Näin voit asetella tapahtumankäsittelijänä. Minulla on joitakin painiketta, ja kun klikkaat sitä, se räjähtää. Joten älä osoita painiketta. Tämä on yksi tapa lähestyä sitä, eikö? Sinulla on painike tag, ja klikkaa sinulla on merkkijono, joka kertoo, oh, muuten, teen tätä räjähtänyt juttu. Muuten, se on aivan kuin tavallinen painiketta juuri tehnyt. Voit tehdä tämän myös toisella tavalla, tarttumalla DOM elementti, mutta me tallentaa, että kun puhumme jQuery. JQuery: On kirjasto, joka on rajat selaimen. Voit käyttää sitä melko paljon mitään. Ja se vain antaa sinulle paljon työkaluja työskennellä. Koska JavaScript, kun voimakas, ei ole kaikki työkalut, joita tarvitset kättelyssä todella puuttua web app saatat haluta tehdä. Joten se yksinkertaistaa asioita, antaa sinulle paljon toimintoja kättelyssä, joita normaalisti täytyy kirjoittaa itse, uudestaan ​​ja uudestaan ​​ja uudestaan. Ja vain tekee asiat hyvin yksinkertainen. Sinulla on myös valitsimet, joiden avulla voit ottaa kaikki nämä seikat teidän DOM paljon yksinkertaisemmin, eikä tarvitse käyttää näitä erittäin pitkiä funktiokutsut. Lisää näitä valitsimia. Olet, siellä olet, sanotaanko Haluan saada elementti tunnus "kiven." No, jQuery, se on vain $ ja sitten merkkijono, joka on punta, ja sitten "rockia." Se on hyvin yksinkertainen ja paljon nopeammin kuin perinteinen JavaScript tapa puuttua tähän ongelmaan. Ja sinulla on samankaltaisia ​​asioita luokat ja elementtityypit. jQuery on - yksi hienoja ominaisuuksia on, voit tavallaan pakata alas kyselyt teidän DOM hyvin, hyvin nopeasti. Nyt olemme takaisin tapahtuman käsittelystä, ja näin hoitaisi yksi tapahtuma jQuery. Joten mitä aiomme tässä me sanomme, kaikki hyvin. Minulla on komentosarjatunnus, eikö? Joten minulla on tämä Inline JavaScript. Mitä aiomme tehdä, on aiomme sanoa, kaikki hyvin. Kun asiakirja on valmis, mikä tarkoittaa asiakirjan ladattu, aiomme mennä tälle tehtävälle, ja aiomme sanoa, kaikki hyvin, tämä toiminto on todella tehdä jotain muuta. Se on pohjimmiltaan sanoi, okei, saat minut elementti tunnus "myid." Ja sitten antaa tämä toiminto ohjaaja, joka suorittaa, kun osoitat sitä. Periaatteessa mitä tämä tekee on, se sanoo, kaikki hyvin. Sivu on ladattu, joten aion vuonna, löytää tämä elementti, antoivat tämän Tapahtumakäsittelijän ja se pohjimmiltaan luodaan sivusi sinulle. Ja näin haluat ajatella tapahtuman käsittelyä. Sinä vain halua ajatella, okei, kun jotain tapahtuu, mitä haluan tapahtuvan? Et halua ajatella, okei, minun täytyy varmistaa tämä asia puhuu tämä asia, tämä asia blah blah blah, koska et vain halua puhua asia suhteen tapahtumiin. Kun näin tapahtuu, tämä tapahtuu. Kun näin tapahtuu, se tapahtuu. Ja jos asiat laukaista muita asioita, se on hienoa. Mutta et halua yrittää tehdä monimutkaista koodia jos olet käynnistää useita asioita samaan aikaan, koska olet juuri menossa antaa itsellesi päänsärky. Selvä. Nyt saamme sivuillemme käsitellä tapahtumia, mutta sanotaanko minun käyttäjä napsauttaa painiketta. Mitä jos haluan lähettää tämän pyynnön takaisin palvelimelle, mutta en halua ladata sivun uudelleen, koska se kun lataa uuden sivun joka ikinen kerta saa sellaista tylsiä, ja miksi tarvitsen kaatamaan otsikkoa uudelleen, ja footer uudelleen, ja kaikki elementit sivun uudelleen vain virkistää tervehdys tai aikaa? Joten siksi meillä on jotain Ajax. Mitä voimme tehdä täällä Ajax on, voimme sanoa, kaikki hyvin, Haluan lähettää joitakin tietoja palvelimelle, ja haluan saada vastauksen takaisin jotta voin päivittää sivuni tai ehkä vain tehdä joitakin algoritmeihin laskelma, joka ei välttämättä näytä mitään käyttäjälle. Mitä sinun tarvitsee tehdä tämän? No, sinun täytyy URL sinun täytyy puhua. Palvelimella voi vain maagisesti kuunnella tyhjästä. Sinun täytyy olla tiettyyn paikkaan aiot lähettää nämä tiedot. Ja sinun on myös joitakin tietoja lähettää, tai ehkä se on dataton kyselyn. Haluat vain ping takaisin palvelimelle ja sanoa, hei, olen elossa, tai jotain sellaista. Ja sitten haluat toiminto, joka pohjimmiltaan käsittelee onnistuneesti. Sanotaan saat takaisin joitakin tietoja palvelimelle, ja haluat muuttaa käyttäjän otsikko sivullaan. Joten saisit tiedot takaisin, ja voisitte työntää että näyttöön. Mitä tapahtuu, on, kun sivu on valmis, luot siitä näppäysfunktio tämän painike nimeltä tervehtimestä. Mitä tämä sitten tekee on, kun se painetaan, puhut greetings.php, teet POST pyynnön, ja te sanotte, hei, saat minulle jotain sivultasi. Meillä ei todellakaan tarvitse kuvata sitä, mutta greetings.php, haluan vain sanoa, antaa takaisin "Hello World". Joten palaamme tähän "Hello World" ja onnistumisen, olettaen mitään menee pieleen, niin me vain mennä tämän tavoitteen paikkaan että me määritelty ja me vain kiinni vasteen siellä. Ja tämä on hyvin yksinkertainen tapa määrittää Ajax kyselyn. Hyvin nopeasti, Rob tavallaan mainitsi tämän jo, asiat voivat mennä pieleen, pahoja asioita voi tapahtua, joten haluat tutustua näihin HTTP-vastauksen koodeja. Mitä nämä ovat ovat aivan, kuin, 200, kaikki meni hyvin. Jotain muuta, pahaa tapahtui. Se on yleensä asia, jonka haluat muistaa. Mutta on mukava tietää kaikki nämä. Ja lopuksi, kun olemme käyneet läpi kaiken tämän, meidän täytyy puhua hyvin nopeasti suunnittelusta, ja sitten voimme antaa teille kaikki lähtevät. Suunnittelu. Asioita haluat muistaa. Kysy itseltäsi seuraavat kysymykset: Kuka käyttää tätä? Mitä he käyttää sitä? Mitä minun käyttäjät välitä? Mitä he eivät välitä? Et vain halua tehdä app ja anna se vain kasvaa ja tulla tämä jättiläinen, kaikki vievää asia, että et voi edes loppuun. Haluat olla erillisiä tavoitteita ja suunnitelmia ja asioita haluat käsitellä. Tee se vaivatonta. Kaikki tämä kertoo, pohjimmiltaan, helpottavat käyttäjän käyttää sitä, älä tee sitä jättiläinen möykky tekstiä, kuten tämän dian on, todella. Sinä vain haluat sen olevan jotain missä se on erittäin helppo jonkun mennä ja tehdä mitä he haluavat tehdä. Et halua heille on navigoida 5 sivua päästä parhaassa toiminnon sivustosi. Jos Google oli 5 sivua ennen kuin voi edes etsiä jotain, kukaan ei käytä sitä. Ja lopuksi, paperi prototyyppi, focus group. On hyvä suunnittelun ja testauksen käytäntöjä. Vain koska luulet se toimii sinulle, ei tarkoita kukaan muu ajattelee se toimii. Mutta joo, se on siinä. [CS50.TV]