R.J. AQUINO: Toivotaan vain päästä alkuun. Joten tämä on Quiz 1. Tässä on joitakin korkean tason tietoa. Tietoja sivun Quiz on tässä URL-osoite, ei enää CS50.net, vaikka tämä toimivat edelleen. Se on CS50.harvard.edu/quizzes/2013/1. Se on iso Tietoja-sivulla, jossa kerrotaan missä ja milloin, eli ensi keskiviikkona kasan huonetta. Ja ensi keskiviikkona, I tarkoittaa kahden päivän ajan. Kaikki tämä tieto on siellä. Mutta se on kumulatiivinen. Joten kaiken alkupuoliskolla vuosi on potentiaalisesti on tietokilpailu, koska et voi oikeastaan ​​tehdä kehittyneitä asiat C ilman jos olosuhteet ja Silmukoiden ja vastaavat. Mutta siellä painotetaan tarkoitetun materiaalin vuodesta Quiz 0, alkaen structs ja File I / O. Se on tyypillisesti haasteellisempi Quiz 0. Keskiarvo pisteet on tyypillisesti pienempi. Opiskella ahkerasti. Kun olet opiskelee, muista käyttää CS50/discuss lähettää kysymyksiä ja lukea muiden ihmisten kysymyksiin. Joten jos sinulla ei ole kysyttävää, kirjaudu sisään ja lue ystävien kysymyksiin. He luultavasti hyviä kysymyksiä. Ja ottaa harjoitustestejä. Olemme antaneet tietovisat seitsemän tai kahdeksan vuotta. He ovat kaikki verkossa. Tulevaisuuden kysymyksiä ovat samankaltaisia vanhoihin kysymyksiin. Näin me ne. Tietokilpailu ei vielä ole. Kukaan meistä ovat nähneet sen. Mutta se näyttää edellinen tietokilpailuja. Tätä tarkastelua istunto, tämä ei ole tyhjentävä luettelo aiheista. Et voi vain osallistua tähän ja sitten olla täysin valmis tietokilpailu. Muuten se ei olisi että paljon tietokilpailu. Ja tämä ei myöskään ole välttämättä kaiken mitä sinun tarvitsee tietää mitään annetusta aiheesta. Se on tarkoitettu altistaa sinut asioita olemme kattaa, muistuttamaan mitä me katettu, ja tapa, jota peitti sen. Mutta sinun täytyy mennä pidemmälle ja syvemmälle, kun tutkimus tarkistamaan, että tiedät kaiken tahansa aihe ja että olet täyttänyt kaikki kulmat, jotka olivat katettu luento. Tietokilpailu muistiinpanoja kertoa mennä kirjuri muistiinpanoja, katsella luento videoita. Se on hyvä tapa varmistaa olet kattaa kaikki perusteet. Joten aloittelemassa, kun tein näitä dioja, yritin laittaa missä löysin tietoja. Joten Tiedoston I / O esimerkiksi viikko 7, Maanantain luento, ja lähetetty 6 § ja Harjoitus kaikilla on tietoa File I / O. Olen tehnyt tämä jokaisesta aiheesta. Joten ne otsikko dioja voi olla apua sinulle. Joten tässä meillä on File I / O. Muista, että Harjoitus 5, käytimme fopen, fclose, fwrite, fread ja fseek. Toivuttuaan 30ish JPEG ja ottaa kokoa ja sekaisin kanssa bittikarttojen, sinun pitäisi olla tuttuja kyseiset toiminnot ja miten ne toimivat. Jos et ole enää tuttuja, ehdottomasti tarkistaa ne. Ja varmista, että ymmärrät, mitä erilaisia ​​argumentteja ovat, kun niitä käytetään. Mutta yhteinen tiedosto liittyvien virheiden saatat olla kysyttiin - No, jos olet unohtanut tarkistaa, jos fopen todella toiminut ennen kuin menet muokata tiedostoa. Se voisi olla huono. Jos olet unohtanut FSulje tiedosto että olet fopened, joka on samanlainen muistivuoto. Se on aika huono. Ja unohtaen tarkistaa, jos olet pääsi tiedoston loppuun, ennen kuin alkaa kirjoittaa sitä. Joten jos sanot, hei, olen tiedoston loppuun. Anna minulle vielä 5 tavua. No, se ei todennäköisesti aio treenata niin kuin odottaa. Se on todella se File I / O, koska teimme niin paljon se ongelmaa asetettu. Joten jos ymmärtänyt mitä oli tekeillä vuonna Harjoitus 5, muista bitmats ja JPEG, niin olet luultavasti kaikki asetettu File I / O. Jos se on vähän sumea, ehdottomasti tarkistaa, että ongelma asettaa ja siihen liittyvä materiaali. Structs olivat aihe, jotka olivat välisen linjan Quiz 0 ja Quiz 1. Ei aivan tehdä leikkaus Quiz 0. Joten he ehdottomasti olla Quiz 1, viikko 7, maanantaina. Mikä on struct? Täällä näytämme struct. Se on kuin uusi tyyppi. Se on kuin säiliön useita kenttiä. Tässä tapauksessa olemme julisti struct opiskelija, joka on kaksi kenttää - merkkijono, että olemme kutsumanimi ja int että olemme soittaa ikä. Joten kun kuljen ympäri opiskelijoita tai I muokata opiskelijoita, otan osaa käyttää nimensä ja ikänsä. Katsotaanpa joitakin koodin mukaisesti. Tässä näemme, että olen julistanut opiskelijan s, aivan kuten Julistan tahansa muuttuja - int x, int y, jne.. Tässä opiskelijan s. Hän alkaa mitään hänen aloilla. Joten asettaa niitä. Asetat aloilla struct pisteellä. Joten olen sanonut täällä, että s.name = RJ. Ja s.age = 21. Voit myös päivittää kentät samalla tavalla haluat päivittää muuttujan arvo. Joten haluan vaihtaa nimeni RJ kanssa no kaudet R.J. speltti oikein. Olisi s.name = RJ, sama kuten sanoimme sen alun. Ja sitten voit käyttää niitä. Joten olemme asettaa niitä. Olemme päivittäneet ne. Voit myös käyttää niitä aivan samalla tavalla. Joten tässä, olen tulostamalla R.J. 21 vuotta vanhoja. Ja olen käyttämiseen liittyvistä arvoista kanssa s.name ja s.age. Niin, että pääsy structs kanssa piste merkintää. Jep, kysymys? Yleisö: Onko syyn Edellisen kalvon että ette laita opiskelija ylimmälle riville, kuten typedef struct opiskelija ja sitten Opiskelija lopussa? R.J. AQUINO: Eli kysymys oli, on tämän dian, olemme yleensä nähty struct solmu ja sitten aloilla struct ja sitten sana solmu. Ja miten tänne En sanonut, typedef struct opiskelija ja sitten aloilla struct ja sitten opiskelija? Syynä on, että en tarvitse käyttää sitä sisällä struct. Niin se on OK jättää ilman nimeä. Voin vain jättää sitä anonyymi struct. Syy teemme sen liittyvät luettelot ja asioita on, koska sisältä tarvitset viitata struct solmuja tähti. Joten struct on oltava nimi, joten voit käyttää sitä myöhemmin. Se on sivuseikka. Mutta voit yleensä nähdä struct aaltosulkeita jos et tarvitse nimi ja struct joku nimi seuraa aaltosulkeita jos tulee tarvitsevat nimi. Niin se on hyvä kysymys. Ja tältä osin meillä on tapana muuttaa structs ja kulkemaan structs by viite, eikä arvoa. Joten me vain kiertämään viitteitä structs sijaan kulkee ympäri structs itse. Eli olet hyvin usein olemaan käyttäen, tässä tapauksessa opiskelija * tai struct solmu * tai solmu * sijaan out opiskelijoille tai solmuja. Joten tässä, olen sanonut, OK, muuttuja ptr tulee olemaan osoitteen s. Se tulee olemaan osoitin opiskelijalle R.J. Jotta voimme saada noita kentät sama kuin saamme mitään. Ensinnäkin tunnus viite osoitin saada struct. Se * ptr ja sitten piste ja sitten iän. Joten päästä kentälle, ja olen päivittänyt se nyt 22, koska nyt sanoa, se oli minun syntymäpäivä. Siellä on oikotie syntaksin käyttämällä nuoli täällä. Joten PTR nuoli ikä on vain sama kuin * ptr.age. Nyt se on jotain sinun täytyy muistaa ja muistaa. Käytit sitä paljon pset6, speller PSET. Mutta tämä on oikeastaan ​​mitä tapahtuu on alla huppu. Se dereferencing osoitin ja sitten päästä se. Kysymys? Yleisö: [kuultavissa]. R.J. AQUINO: Miksi käytämme osoittimet kuten structs sijasta structs itse? Syynä olisi, jos olet ohimennen struct toiminnon, luultavasti halua siirtää noin vain 4 tai niin tavua, jotka edustavat osoitin, kuten vastustaa mahdollisesti 30 tai 40 tavua, jotka ovat struct. Joten kulkee jotain toiminto on helpompaa, kun asia on pienempi lyhyt. Kysymys? Yleisö: Olet ehkä maininnut alussa, mutta on olemassa muita dioja ylös [kuultavissa]? R.J. AQUINO: Nämä kalvot ovat sen jälkeen, kun tarkastelun istunto. Lähetämme ne verkkosivuilla. Niin liikkuu ja liikkuu hieman nopeammin, me aiomme puhua tiedot rakenteita. On olemassa paljon. Kävimme nippu niitä. Tässä mitä sinun pitäisi ymmärtää noin tietorakenne. Sinun pitäisi todella ymmärtää korkealla taso mitä kukin rakenne on. Voitko selittää Englanti sinun ystävä, joka ei ole ottanut CS50 miten me organisoimaan tietoja ja miksi me osaisimme käyttää jotain tällä tavalla? Se on asia yksi. Asia kaksi, ymmärtää täytäntöönpanoa. Joten ymmärtää, miten käyttää näitä asioita C. Ja me olla menossa tänä. Ja sitten juttu kolme olisi tietää ajoajat ja rajoitukset erilaisia ​​rakenteita käytät. Joten ymmärrä, miksi käyttäisit hash taulukon sijasta array. Ymmärtää, miten nopeasti, keskimäärin saatavuuden tiiviste on. Ymmärtää, mitä toimintoja paastota linkitetty lista mutta hidas taulukot ja päinvastoin. Niin ymmärtää, että sinun täytyy ymmärtää Big-O merkintä vain tietää miten puhua näistä mitäkin. Ja me puhumme siitä. Joten ensimmäinen asia, joka liittyy luettelot. Tässä on korkean tason kuva linkitetyn listan. Osoitamme tässä luokassa. Meillä on yleensä 10 ihmistä seisoo lavalla. Mutta meillä on joukko solmuja, jossa kukin solmulla on jotain arvoa ja osoitin sen seuraavan arvon. Joten saada yhdestä solmusta toiseen, voit vain sanoa, anna minulle seuraavaan solmuun. Sinulla on, että solmu. Anna minulle seuraavaan solmuun. Sinulla on, että solmu. Anna minulle seuraavaan solmuun ja niin edelleen kunnes ei ole solmun vasempaan. Joten edelleen puhua se korkealla tasolla. Se on erittäin helppo lisätä asioita osaksi linkitetty lista. Jos et välitä järjestyksessä, voit vain pudottaa sen heti alussa. Se on vakiona aika. Mutta on vaikea löytää arvoa. Jos yrität kysyä, on seitsemän listallani? Sinun täytyy mennä läpi jokainen arvo. Onko tämä seitsemän? Onko tämä seitsemän? Onko tämä seitsemän? Onko tämä seitsemän? Uudestaan ​​ja uudestaan. Ja se on O (n). Joten kun opiskelee tietokilpailu, vertaamme tätä paneelit. Sopiiko? Valot sammuivat hämärä. OK. Kun on linkitetty lista paremmin? Kun on array parempi? Joten katsokaamme koodia. Tässä on potentiaalinen solmu. Se on struct. Se on int n, joka on meidän arvo. Ja se on struct solmu * ensi vuonna, mikä on meidän osoitin seuraavaan solmuun. Joten tässä, voimme nähdä, että meillä tapahtui ryhtyneen int meidän solmussa. Mutta jos tämä olisi linkitetty luettelo char tähtiä tai linkitetty lista kelluu, me täysin voisi tehdä niin. Muistan pset6, vika on luultavasti linkitetty lista nieriää tähteä tai vain staattinen char taulukot. Katsotaanpa täällä toimintaa. Joten haluamme lisätä uuden n osaksi linkitetty lista. Aloitamme ulos esiosoitinta joka on osoitin tähän solmuun, joka on n: n arvo, ja seuraavan osoittimen, joka pistettä tämä solmu on arvo n ja ensi null, koska se on viimeinen solmu. Joten edun aikaa, aion laittaa kaikki koodi ruudulla. Ja käymme läpi muutama rivi kerrallaan. Joten tässä on koodi. Toivottavasti se on luettavissa. Ensimmäinen asia mitä teemme on me malloc uusi solmu. Niin se tekee osoittimen uusi solmu, joka ei aivan ole mitään asetettu vuonna sitä vielä. Me varmista, että uusi solmu ei ole nolla. Muuten, meidän täytyy luopua. Niin tarkistettuaan, että meillä on nyt asettaa arvot solmussa. Joten laitoimme uuden n osaksi n kenttään. Ja asetamme seuraavan osoittimen osoittamaan alkuperäinen pää, jotta voimme nyt asettanut tämän solmun lista. Lopuksi, meillä on maailmanlaajuinen johtaja piste meidän uusi solmu, niin että jos me alkavat pää, olisimme tässä uusi ensimmäinen solmu sijaan vanha ensimmäinen solmu. Ja kun tämä toiminto poistuu, muuttuja uusi solmu ei enää ole, koska se oli paikallista toimintaa. Joten tämä on maailman tilasta. Globaali pää osoittaa uusi ensimmäinen solmu, joka viittaa meidän alkuperäinen ensimmäinen solmu, joka pistettä solmun jälkeen. Se oli lisäys. Toivon, että oli suhteellisen suoraviivainen seurata. Jos olet epävarma, piirtää kuvan. Niin huomaan, että puhumme liittyvät luettelot ja katsot koodi on hyvin ei auta. Ottaa huomioon, että katsot kuvaa linkitetty luettelon avulla minut ajattelemaan, oi, niin Minulla on tähän solmuun täällä. Mutta jos päivitän että osoitin, se päätyy irti. Ja olen unohtanut missä solmu menee. Ja koodi poistuu. Ja sinulla on useita solmuja jotka on irrotettu. Ja et päädy lista, jonka haluat. Joten jos piirtää kuvan ja tehdä se askel askeleelta, toivottavasti näet oikea järjestys asioita kannalta päivittäminen viitteitä varmistaa että lista tulee yhteen. Insertti on suhteellisen yksinkertaista. Monimutkaisempi yksi olisi liittämistä osaksi lajiteltu luettelo. Monimutkaisempi toiminto on poistaa ja löytää, joten katsellut luettelossa katso jos jotain on olemassa. Ehkä teit tämän pset6 kun sai omaan tiiviste ja sanoitte, hyvin, on sana omena minun linkitetty lista? Niin olet ehkä jo tehnyt tämän. Mutta ehdottomasti, muistin virkistämiseksi ja yrittää reimplement löytää ja reimplement poistaa ja linkitetty lista. Hauska Sivuhuomautuksena, siellä myös kaksinkertaisesti sidottu luettelot, jossa on osoittimia, jotka osoittavat sekä eteen taaksepäin, jotta voisitte mennä Seuraavan solmun ja edellisen solmun. Ja siellä oli kysymys viime vuoden tietokilpailu tätä tyyppiä, puhuminen noin kaksinkertaisesti sidottu luetteloita. Nyt se on rakenne, joka olet suhteellisen tuttu, koska useimmat teistä todennäköisesti käyttänyt niitä pset6. Tässä on yksi, joka on hieman vähemmän tuttuja. Sivuhuomautuksena, mielestäni Quiz 1 on ensisijaisesti vaikeampaa kuin Quiz 0, koska kamaa teet, olet eivät ole tehneet niin paljon. Esittää, että toinen tapa, sillä Quiz 0, Olit kirjoittanut paljon C. Ja me kysynyt sinulta C. Saat Quiz 1, aiomme kysyä teiltä PHP ja JavaScript, johon ei ole kirjoitettu niin paljon. Aiomme kysyä teiltä C-koodia, joka Et ole kirjoittanut niin paljon, tämä kehittynyt C kamaa. Niin ehdottomasti, harjoitella juttuja me puhui luentosalissa, että olet ei välttämättä tee ongelmasta asetettu. Puhuminen josta et ole kirjoitettu pinon ongelma asetettu. Mutta se oli luento. Tässä korkean tason kuva pinot, että näytämme joka vuosi. Se on pino lokerot Mather ruokasalissa. Korkealla tasolla, pinot ovat viime in, first out tietorakenne. Tämä tarkoittaa olet menossa laittaa asiat - 1, 3, 7, 12, 14, negatiivinen 0. Yksi asia en voinut olla sanoi - negatiivinen 3, 0. Voit laittaa kaikki nämä asiat sisään Ja viimeinen laitat on ensimmäinen yksi, joka aikoo tulla ulos. Joten sinulla on kaksi toimintaa - push ja pop. Kaikki ottamassa että olin elehtiminen, kuten tämä on push. Ja sitten kun pääsen sisään napata jotain tai päästä päälle napata jotain, joka on pop. Joten aiomme toteuttaa pinoja. Ja me näytimme heille luento käyttäen järjestettyjä. Mutta voit tehdä niitä käyttämällä linkitettyjä listoja. Pino on käsitteellinen tiedot rakenne, pidä täytäntöönpano-erityislaatuinen. Joten mitä se näyttää? Se näyttää ikään kuin tämä. Sinun täytyy kokonaisluku kokoa. Ja sinun on joukko arvoja, jotka me soitat tarjottimet, koska se on mitä kuva oli us - int tarjottimet - ja sitten jotkut maksimikapasiteetti. Joten mikä nostaisi näyttää? No, jos meillä on pino s, sitten työntää jotain päälle s, saisimme koko s. Ja se olisi seuraava avoin paikka meidän array. Joten jos meillä on kolme asiaa meidän pinoon Sitten lokerot 3 olisi seuraava avoin paikka, koska 0, 1, ja 2 ovat jo täynnä. Joten laitoimme arvo otetaan s.trays [s.size], kolmas paikka. Ja sitten me kasvattaa s.size sanoa, hei, meillä oli kolme asiaa ennen. Nyt meillä on neljä. Joten seuraavan kerran kun painat, olet aikoo laittaa jotain osaksi 4. Tai seuraavan kerran pop, olet menossa katsomaan 3 sijasta 4 tai mitä tahansa. Ja sitten palaamme totta sanoa, hei, onnistuimme. Tämä toimi. Koska nyrkkisääntö, jos toiminto, joka on oletetaan palaavan totta vai false palauttaa aina totta, et voi tehnyt jotain väärin. Joten tämä toimii? No, se toimii hyvin 1 ja 2 ja 3, ja 4, ja viisi. Mutta sanotaanko Saavutinko kapasiteettia. Olen sitten törmätä ongelmaan, koska jos koko on sama kuin kapasiteetti, olen nyt yrittää laittaa jotain osaksi array jossa minulla ei ole tilaa. Joten lyhyt tarkistaa korjata. Jos s.size == kapasiteetin return false. Muuten, mennä ja tehdä mitä teimme. Joten mitä muuta voisimme kysyä noin kirjepinojen? Mitä muuta pitäisi opiskella? Mitä muuta sinun pitäisi harjoitella? No, täytäntöönpanosta pop. Meillä on jo tehnyt push. Laitan sen. Ei-rakennetoteutus, jossa käytät linkitetty lista, ehkä. Ei-int täytäntöönpanoa. Teimme ints täällä. Mutta se olisi voinut olla kelluu. Olisin voinut jousille. Se olisi voinut olla char tähteä. Menneistä tietovisat erilaisia kysymyksiä olemme kysyttiin pinot. Sanon, että kävimme pinot ympäri sama kuin olemme käsitellä niitä menneinä vuosina. Joten visailukysymysten olisi olla hyvä osoitus. Eteenpäin vielä nopeammin, jonot. Ne ovat kuin pinot. Mutta he first in, first out. Jos olet British, Jono todennäköisesti tehnyt paljon järkeä sinulle. Muuten, sinulla voi olla kuullut sitä linjaa. Ne toimivat samoin kuin linja Apple Storesta. Ensimmäinen henkilö ilmaantuvat 03:00 aamulla on ensimmäinen henkilö ostaa hänen iPad. Joten meillä on kaksi toimintaa - enqueue ja dequeue. Enqueue laittaa joku linja. Dequeue vetää ensimmäisen henkilö pois linja. Jälleen voimme toteuttaa tätä array. Joten mikä on struct me osoitti luento? Se oli tämä. Jälleen numerot. Jälleen koko ja tämä uusi asia edessä. Miksi on olemassa jotain kutsutaan edessä? Se indeksi seuraavan elementti dequeue. Se on vain sisäisesti pitää kirjaa ensimmäinen kaveri paikalle, jotta me voi vetää sen pois kun meidän. Ehdottomasti tarkastella luentojen ja yritä toteuttaa enqueue ja dequeue kun opiskelee tietokilpailu. Tärkeitä asioita ajatella. Kiertyy jos edessä plus koko päätyy isompi kuin kapasiteettia. Jälleen, jos rakenne on täynnä, olet menossa on ongelma. Hash taulukoita olet nähnyt ennen. Useimmat varmaan täytäntöön nämä on pset6. Se on rakenne, joka tähtää O (1) vakioaikaisia ​​paikoilleen ja O (1) vakioaikaisia ​​haku. Vuonna CS50, toteutimme tätä joukko linkitettyjä listoja. Keskeisesti hajautustaulua on hash-funktio. Joten se muuntaa panos, sanokaamme, sanakirja sana, tulee numero, joka tulee olemaan meidän indeksiin. Ja käytämme tämän indeksin meidän array. Joten tässä on suloinen kuva alkaen study.50.net. Heitämme kaikki sanat meidän hajautusfunktio. Ja hajautusfunktio kertoo mihin nämä sanat. Tämä on kaikki suuri maa, jossa On vain yksi sana jokaisessa välissä. Mutta kuten muistat pset6, siellä ovat enemmän sanoja kuin lähtö. Joten mitä tapahtuu, kun saada törmäys? Sen sijaan, että tallennetaan yhden arvon, sanotaanko, hash table 3, voit tallentaa linkitetyn listan. Ja niin sen sijaan, cantaloupe täällä, olisit linkitetty lista, jossa ensimmäinen solmu on milón. Ja seuraava solmu on kissa. Ja kolmas solmu on törmäys, katsotaanpa sanoa, koska kaikki nämä sanat alkavat C. Joten useimmat teit tätä pset6. Jos et tee hash taulukon pset6 ja yritit jotain trie, ehdottomasti tarkistaa hash taulukoita. Jos et tee sitä pset6, ehdottomasti tarkistaa hash taulukoita. Ja jos teit sen pset6 ja se ei sujukaan ja sinä oli paljon ongelmia sen kanssa, ehdottomasti tarkistaa hash taulukoita. Joten opetus todella on ehdottomasti tarkistaa hash taulukoita. Suurin vähemmistö yritit out yrittää muodostaa pset6. Korkean tason kuvaa. Se on jotain tällaista, jossa jokainen solmulla on joukko lapsia, jossa kukin lapsi vastaa kirjeen. Ja jokainen solmu sanoo myös, hei, olen sana. Joten tässä tapauksessa sana Maxwell, jos noudatat M on X-W-E-L-L ja noudata sen vielä. Ja saat tämän symboli, delta, joka me merkitsevät tarkoittaa tämä on sana. Joten Maxwell on sana. Nämä delta ovat koko merkityksenannon mitkä asiat ovat sanoja ja jotka asiat eivät ole. Joten pset6, data me tallennetut rinnalla tahansa meidän solmuja oli "Olen sana. "Ja cool juttu yrittää on ne osoittavat paikoilleen ja lookup O (pituus sana). Joten vain saada läpi Maxwell, se on M-A-X-W-E-L-L. Joten seitsemän tai kahdeksan - En voi laskea - askeleen päästä päähän ja tarkistaa asioita. Joten nopean täytäntöönpanon täällä. Rob meni läpi linkitetty luetella hänen jälkipuinti. Joten tarkista, että ulos. Anteeksi. Meni läpi triellä hänen jälkipuinti. Joten tarkista, että ulos. Mutta periaatteessa on jokaisella solmulla on 27 osoittimet seuraavaan solmut ja yksi Boolean olenko minä sanaa. Tutustu Rob jälkipuinti kuinka tämä todella toteutetaan. Meidän lopullinen rakenne, puitamme ja binäärihaku puita. Joten tarkastelee näitä, kattaa ne viimeksi Viikko 8, maanantaina. Puu on samanlainen triellä, paitsi sinä ei välttämättä ole 27 imusolmukkeita kunkin pisteen. Ja sinulla ei ole näitä tietoja kussakin vaihe, joka merkitsee, onko - polku ei ole väliä. Sekä katsoo trie, polku ylhäältä pohja, Maxwell, oli meille tärkeää. Mutta jokaisella solmulla on useita lapsia, ehkä. Meillä on joitakin enemmän sanastoa. Puun juurelle on huipulla. Ja me sanomme, että hyvin alimmainen solmut, joilla ei ole lapset ovat lehtiä. Niin kuin triestä, puu on rakenne solmuja. Yleinen laji puu, joka aiomme puhua on binääripuu, jossa jokaisella solmulla on lapsia tai yksi lapsi tai kaksi lasta. Joten tämä kuva tässä ei ole binääripuu, koska solmu 3 on kolme lasta. Mutta jos me sivuuttaa nämä, loput se on binäärinen puu, koska se osoittaa ominaisuus, että jokainen solmu on nolla, yksi tai kaksi lasta. Joten miten voisimme ilmaista tämän koodin? Meillä voi olla solmu, jossa jokaisella solmulla on kokonaisluku sen sisälle, samoin osoittimena puun vasemmalla ja osoitin puu oikealle, joten kaksi lasta. Miten tämä on hyödyllistä? No, jos teemme säännöt siitä, missä me laittaa solmut, voimme tehdä haun nopeammin. Joten on käsite binäärihaku puu, jossa kaikki solmut vasen alipuu on pienempi arvo kuin solmu etsimme. Ja kaikki solmut oikealla alipuu arvokkaammiksi kuin juurisolmu. Nyt, joka näyttää paljon sanoja. Aion laittaa sen sisälle kaksinkertaisen lainauksia ja näyttää kuvan. Joten tässä on esimerkki binäärihakupuu. Nähdä, että aloitamme 10. Kaikkea vasemmalla 10 on pienempi kuin se. Ja kaiken oikealle on suurempi kuin se. Mutta enemmän kuin, että jokainen solmu puu ilmaisee tämän omaisuutta. Joten solmun 7 on 3 vasemmalle ja 9 oikealle. Joten kaikki nämä ovat pienempiä kuin 10. Mutta katsot vain niitä, 7 on 3 sen vasemmalle ja 9 sen oikealla puolella. Ja vastaavasti oikealla, 15 on 14 sen vasemmalle ja 50 oikealle puolelle. Joten kolme solmua tuolla, 15, 14, ja 50, ovat myös voimassa binääripuuta tai voimassa binäärihakupuu. Ja he kaikki suurempi kuin 10. Joten ne saavat olla on oikeassa. Onko kysymys? Yleisö: Miten te suhtaudutte kun sinulla on kaksi seiskan? R.J. AQUINO: Joo. Miten te suhtaudutte kaksi arvoa jotka ovat samoja? Jotkut binäärihaku puita sanoa, että olet sivuuttaa kaksoiskappaleita, koska tavoitteena on vain sanoa, olen nähnyt näitä asioita niin pitkälle. Jotkut binäärihaku puita voisi sanoa on määrä sisällä solmun. Toiset saattavat sanoa, että kaiken Vasemmalla on pienempi tai yhtä suuri kuin. Ja kaiken oikealle on suurempi kuin. Se vain riippuu siitä, mitä Ongelmana on, olet ratkaista. Joten sanakirjasta, esimerkiksi sinulle ei välitä kaksoiskappaleet. Voisitte heittää ne pois. Mutta jokin muu ongelma saatat välitä. Yleisö: Onko mahdollista saada 1 vasemmalla puolella 15, joka on vähemmän kuin 10? R.J. AQUINO: Ei. Jos 14 täällä olivat 1, tämä johtaisi olla voimassa binäärihakupuu, koska kaikki oikealle 10 on oltava suurempi kuin se. Ja näemme miksi. Jos maassa haku minun tavoite on löytää 14, aloitan juuresta. Joten odotan. OK. Aiomme aloittaa juuresta. Katsokaa 10. No, 14, meidän tavoite, on suurempi kuin 10. Niin se on oikealla puolella. Tämä on hyvin samankaltainen kuin koko puhelimen kirjajuttuun teimme, binary etsi siellä. Mutta sen sijaan binary haku array, olemme binary etsimällä tässä puussa. Joten olemme yhä etsivät 14. No, 14 on pienempi kuin 15. Joten jos se meidän puu, sen on olla tällä alueella täällä. Sen on oltava oikealla 10 ja vasemmalla 15. Ja niin voimme tarkistaa tämän solmun. Ja jee, olemme löytäneet 14. En aio kävellä läpi. Mutta tässä on koodi. Se on itse asiassa suhteellisen suoraviivainen, koska tämä on rekursiivinen. Mitä voisimme pyytää sinua tekemään tietovisa? Voisimme pyytää sinua kirjoittamaan tätä koodia. Voisimme pyytää teitä katsomaan tätä koodia ja muuttaa tämän koodin ja selittää, mitä se tekee. Joo. Kysymys? Yleisö: Ovatko nämä diat olemaan saataville kuin ne olivat viimeksi? R.J. AQUINO: Kyllä. Joten näitä dioja varmasti julkaisua. Yleisö: He todella lähetetty nyt sivuilla. David vain teki sen. R.J. AQUINO: diat ovat nyt sivuilla. Olen luultavasti paikata pari kirjoitusvirheet Huomasin ja korjata ne. Mutta on nykyinen versiona. Muut asiat voisimme pyytää sinua tekemään - kirjoittaa insert. Kirjoita iteratiivinen versio rekursiivinen funktio me vain näytti sinulle tai puhua näistä asioista, kuten kohdat, sanoissa, lauseissa. Vertaamalla ajoajat ja selitetään mitä haluaisi käyttää binary search puu sijaan hash table, esimerkiksi. Joten ymmärtää nämä rakenteet klo melko syvällä tasolla. Ymmärtää, miten kirjoittaa heille, miten käyttää niitä, miten puhua niistä. Ja sinun on kaikki asetettu. Kysymys? Yleisö: Kun kirjoitat binäärihakupuu, miten te määrittää, mitä lisäarvoa tee se niin root? R.J. AQUINO: Eli kysymys oli, mitä arvo teet root? Riippuen koodin, voi olla maailmanlaajuinen root. Joten ehkä todennäköisesti ollut pset6 maailmanlaajuinen tiiviste. Tai saatat kulkea root niin argumentti. Joten tämä hakutoiminto täällä vie argumentti solmu *. Ja niin mitä solmun satut olemaan katsomalla on yksi hoidatte kuin root kun ohitat sen sisään Ja olen valmiina. Nämä ovat minun dioja. Seuraava henkilö voi tulla swap kannettavan ja mikrofoni. ROB BOWDEN: Taidan olla tulkita tätä kysymystä eri tavalla. Mutta olen tulkinnut sen niin, jos sinulla on numerot 1, 2, ja 3, miten me tietää tehdä 2 root toisin kuin 1 tai 3? Jos teemme 2 root, niin se on kauniisti 1 ja 3 vasemmalle ja oikealle. Mutta jos 1 on root, niin se on 1 top, 2 oikealle, 3 oikealle. Niin oletuksena, et tiedä mitä tehdä root. Ja tahansa algoritmi odotamme sen antaa sinulle, vain ensimmäinen asia, sinun insertti olisi juuri. Tai me Antaisin binääripuu että on jo olemassa, että on root. Mutta muut algoritmeja on olemassa sellainen, että root päivittää, niin että jos päätyvät tilanteeseen, jossa se on 1, 2, 3, se päivittyy automaattisesti tehdä 2 uutta root, jotta se on edelleen hyvin tasapainoinen. ANGELA LI: Cool. Hei, kaverit. Olen Angela. Ja aion lopettaa meidän C ja sitten mennä joitakin web teknologiat - HTTP, HTML, ja CSS. Niin ensimmäinen asia on puskuri ylivuoto hyökkäyksiä. Joten katsomaan tätä koodia. Se on melko yksinkertainen. Siellä on toiminto foo. Ja se ei palauta mitään. Mutta se vie osoitin merkkijono kutsutaan baari. Ja se tulee julistaa tämän Puskuri, joka on merkki array, joka on 12 paikkaa. Ja se käyttää memcpy, joka on vain toiminto, joka kopioi vain yhteen osoitteeseen toiseen. Joten tämä yrittää kopioida meidän puskurin mistä tahansa palkki osoittaa. Joten mitään käsitystä mitä vikaa tämän koodin? Yleisö: Jos palkki on pidempi kuin C, he korvaa. ANGELA LI: Joo, aivan. Meillä ei ole mitään takeita siitä, että baari tulee olemaan alle 12. Olemme juuri tehneet joitakin mielivaltaisen määrän 12. Ja olimme kuin, toivotaan, että Meidän käyttäjä syöttää alle 12 merkkiä pitkä. Joten Ihanteellisessa maailmassa, jos meidän tulo on aina odotetusti, niin saamme jotain, hei. Se on alle 12 merkkiä. Se saa lukea osaksi char c. Ja sitten teemme jotain. Se ei ole oikeastaan ​​väliä. Mutta ilkeä henkilö voi tehdä jotain enemmän kuin tämä, jossa he antaa meille mitä baari on osoittaa, se tulee osoittamaan tämän valtava vain luvulla. Ja tämä on paljon pidempään kuin 12. Joten se tulee mennä aina tänne, jos palauttaminen osoite käytetään olla. Joten sanokaamme tämä toiminto kutsutaan foo. Ehkä foo kutsuttiin muulla toiminto, joka kutsuttiin tärkeimmät. Joten kun foo on käynnissä, se tarvitsee tietää, mistä palata. Jos foo kutsuttiin jokin funktio nimeltä Baz, se on tietää, että se on täytyy mennä takaisin baz. Ja sitähän tämä paluuosoite tänne kertoo meille. Mutta jos me korvata se jollakin muulla osoite, tässä tapauksessa tämä on edustus osoitteen Alusta tämän puskurin, niin mitä todella tapahtuu on, että sijaan palaamassa Baz, jossa vaadittiin meidän tehtävämme, se on vain menossa edessä tämän koodin. Ja jos tämä oli siellä, koska ilkeä hakkeri jätkä tuli ja pistetään tämä, niin ehkä tämä määrä A: n ei ole oikeastaan ​​luvulla. Ja se on oikeastaan ​​vain koodata että taukoja tietokoneen tai jotain. Joten olla puolustuskannalla tällaista asia, sinun on koskaan olettaa, että Toiminto on tiettyjä määrä merkkiä. Esimerkiksi kun olit tekemässä aapinen, olisit kertonut, että sanat olivat vain olemaan 40 merkkiä pitkä maksimi. Ja se oli hyvä. Mutta jos ei, niin sinun täytyisi Varmista vain lukea 45 merkkiä kerrallaan. Muussa tapauksessa saatat korvata teidän puskuri. Kaikki kysymykset siitä. Joo. Yleisö: Voisitko puhua hieman enemmän näistä? ANGELA LI: Anteeksi. Kyllä. Yleisö: mikrofoni on vain video. Yritän projekti. Hei, kaverit. Sup? Joten mennään yli muutamia asioita CS50 kirjasto, jossa olet käyttänyt kaikki lukukauden, enimmäkseen saada käyttäjä syöttää. Kuten tiedätte, lisäät CS50 Kirjasto tekemällä ihan CS50.h, joka sisältää kaikki prototyyppejä toimintoja, joita voi käyttää, kuten GetString ja GetInt, ja GetFloat, jne.. Ja siellä on tämä yksi rivi CS50 kirjasto, joka määrittelee merkkijonon, joka te kaikki tiedämme jo nyt on vain char *. Mutta katsotaanpa kurkistaa miten getString toimii. Tämä on erittäin lyhennetty versio. Voit vetää CS50 kirjaston tiedostoja alkaen, luulen, manuals.CS50.net. Ja voit lukea läpi todellinen toiminta. Mutta tämä kattaa joitakin tärkeitä osia. Joten olemme luoneet joitakin puskuri joidenkin kapasiteetti. Ja mitä teemme on saamme yhden merkin kerrallaan standardin n. Se kun käyttäjä syöttää tekstin konsolin. Ja niin aiomme lukea merkin niin kauan kuin se ei ole uutta linja ja se ei ole tiedoston loppuun, jonka on lopussa vakiosyötteen. Ja jokaisen merkin, että luemme, jos kyseisen merkin päätyy lisäämällä sen määrän merkkejä olemme lukeneet ja se on enemmän kuin meidän kapasiteettia, niin mitä teemme, on meidän vain muuttaa meidän puskuria niin, että se on kaksi kertaa niin pitkä. Joten jälleen, tämä suojaa puskuria ylivuoto hyökkäyksiä, koska olet lukenut merkki kerrallaan. Ja jos jossain vaiheessa lukea liian Monille juuri laajentaa puskuria. Kerrot sen kahdella. Ja sitten on enemmän tilaa. Muuten, sinun tarvitsee vain lisätä merkin puskuri. Ja kun olet saanut ladattua kaikki merkkiä, se kutistuu puskuri takaisin alas normaalikokoinen, lisää null terminaattori, ja palata sitten. Nyt, katsotaanpa GetInt. Voisitteko lukea tämän? Voin suurentaa vähän. En tiedä, miten tietokone toimi. Ei se haittaa. En voi suurentaa kunnolla. Tämä on todella kova. Olen pahoillani. Katsotaanpa katsokaa tätä. Joten mikä GetInt ei se lukee ensin vuonna merkkijonon getString, joka olemme täytäntöön ennen. Ja tärkeä osa huomata tässä on, jos tämä jako että se päätyy lukeminen on kuin ei oikeastaan ​​merkkijono, Sitten me vain palata INT_MAX to edustavat vika. Miksi palaamme INT_MAX sijaan negatiivinen 1 tai 1? Onko ideoita? Yleisö: [kuultavissa] negatiivinen 1 yhden. ANGELA LI: Joo, aivan. Joten olet tapa todennäköisesti vain haluavat syötettävä 1 tai negatiivinen 1 pyydettäessä varten nnellä ja mitä nnen Maxes. Se on valtava. Olet todennäköisesti aio käyttää sitä. Joten tämä on kuin suunnittelu päätös varmista, että et vahingossa palata virhe tai et palauta 1, joka voidaan jäsentää koska oikea vastaus. Joten jos linja ei ole olemassa, palaamme INT-MAX. Muuten käytämme sscanf, joka on kuin scanf. Mutta se lukee merkkijonon. Ja meillä on tämä alustettu merkkijono, joka on% i% c. Ja yritämme sovittaa että mitä käyttäjä antoi meille. Haluamme määrä Hyväksytty asioita on 1, mikä tarkoittaa sitä, että vain todella haluavat sovittaa kokonaisluku ympäröi ehkä valkoinen tilaa, ehkä ei. Tässä tapauksessa, jos laitat jotain kuten baari, baari ei vastaa ollenkaan, koska siellä pitää olla kokonaisluku alussa. Joten sscan koskaan poisteta 0. Joten et palauta sitä. Vaihtoehtoisesti, jos laitat jotain kuten 1, 2, 3, A, B, C, että tulosta Sekä kokonaisluku, mutta myös merkin jälkeen. Niin sscanf palaa 2, joka ei myöskään ole ihanteellinen. Et halua 1, 2, 3,, B, C olevan kelvollinen int. Joten ei myöskään toimi. Mutta sanoa laitat jotain 50. , Joka vastaa% i, joka tarkoittaa se saa luetaan n. Ja nyt, n sisältää numeron 50. Ja sitten voit palauttaa sen. Muuten, osut Yritä uudelleen. Ja sitten se vain menee uudestaan ​​kunnes saat asianmukaista panosta käyttäjä. Kaikki kysymykset siitä? Yleisö: Joten jos olit tulostaa arvo GetInt on [kuultavissa] se olisi vain kokonaisluku ja max? ANGELA LI: Joo. Joten jos käytät GetInt, tulee olettaa että et halua nnen max olla voimassa tulo, koska olet menossa olettaa, että se oli huono. Yleisö: Jos meillä ei olisi char c ja joku laittaa 1, 2, 3, Sam, olisiko toimivat edelleen 1, 2, 3? ANGELA LI: Minusta se toimisi. Mutta et halua 123Sam to olla voimassa käyttäjän syöttämiä. Se ei oikeastaan ​​int. Joten se ei tunnu hyvältä jäsentää sitä int. OK. Tällöin lähdetään Internetiin. Joten HTTP ei ole kieltä. HTTP on vain normisto miten lähettää asioita asiakkailta, se olet sinä, palvelimiin. Se on muita ihmisiä verkossa. Joten HTTP on lyhenne sanoista Hypertext Transfer Protocol. Se on sydän ja sielu koko web. Hypertekstin osa vain viittaa HTML. Siirto on asiakkaille, kuten voit lähettää pyyntöjä palvelimia, jotka antavat vastauksia. Ja protokolla on vain, miten odotat palvelimen käyttäytyä? Ja miten sinun pitäisi käyttäytyä niin että voit tehostaa asiaa viestintää? Joten HTTP-pyyntöjen näyttää paljon kuin tämä. GET on pyynnön tyyppi. Olette nähneet GET pyyntöjä ja POST-pyynnöt. Tämä toinen asia on, / me, se on vain URI tai URL, missä olet halua mennä sisälle isäntä. Joten tämä pyyntö ei pyydä sivu, kuten www.facebook.com / me. Ja se on GET-pyynnön. Ja sitten tämä HTTP/1.1, se on vain versio HTTP käytät. Se on melkein aina 1.1. Ja sitten on joukko muita juttuja myös. Voit itse nähdä nämä jos avata konsoli kun olet selaamiseen. Vastaukset näyttävät jotain enemmän kuin tämä. Yläosa on, jälleen, tyyppi HTTP käytät jonka jälkeen tilan koodin. Joten 200 OK on kaikki toimi. Tässä on sisältöä. Sisältöä tulee seurata. Ja sitten se kertoo, millainen sisältöä ja muita juttuja myös. Tilakoodeja, on olemassa muutamia tärkeitä, että sinun pitäisi tietää. 200 OK on kuin kaikki on kultainen. Kaikki toimii. 403 Forbidden. Tämä olet luultavasti nähnyt, jos olet unohtanut chmod jotain oikein. Se tarkoittaa, että sinulla ei ole oikeus käyttöoikeudet pääsyn että palvelimessa. Se on kuin, no, et näe sitä. 404 tarkoittaa, että asia ei ole olemassa. Ei löytynyt. Olet varmasti nähnyt, että paljon. 500 Sisäinen Server Error on yleensä jotain meni pieleen puolella palvelimen. Joten kun olit täytäntöön pset7, jos sinulla on ollut PHP virheitä, voisit itse mennä sivulle ja katso koko joukko PHP virhe juttuja. Mutta se ei tapahdu normaalisti, koska sivustot eivät todellakaan halua kertoa miksi niiden päällä on rikki. He luultavasti vain palaa 500 Internal Server Error. Ja sitten on 418 Olen teekannu. On koko tarina miksi se juttu. Mutta voit lukea, että omaa aikaa. On koko joukko muut tilakoodeja liikaa. Mutta nämä ovat niitä sinun pitäisi tietää. Joten puhutaanpa HTML. HTML, muistakaa, ei ole ohjelmointikieli. Se on kuvauskieli. Se tarkoittaa, että sisältöä kuvaava. Se kertoo, mitä HTML-dokumentti näyttää kuten vai ei, miltä se näyttää mutta miten se rakentuu. Joten se määrittelee rakenteen ja semantiikka web-sivuja. Se on kuin, tämä on kohta. Tämä on järjestetty lista. Tämä on kuin osa minun sivulla. Tässä on otsikko. Se tekee sellaista. Se ei muotoilla mitään siitä, koska se mitä teet CSS. Ja se näyttää sarja sisäkkäisiä tunnisteita. Joten käyttää esimerkiksi todella perus HTML-sivun, sinulla on DOCTYPE ilmoitus sinne. Tämä DOCTYPE ilmoitus sanoen käytämme HTML5. Sitten on iso HTML-tunniste. Se sisältää pään ja kehon. Pään sisällä, sinulla on otsikko. Sitähän menee otsikossa selaimen. Meillä link tag, joka yhdistää ulkoinen tyylisivu. Ja sitten meillä on skripti, joka vetää ulkoisesta JavaScript samoin. Ja sitten sisällä kehomme on todella mitä saa näkyy sivulla. Meillä kohta ja sitten kuva sisällä kyseisessä kohdassa. Tämä on kuva pennuista. Huomaa, että kuva tag sulkeutuu itsestään. Joten sen sijaan aukon kuva ja sitten tehdään toista / kuvaa, voit vain tämä pieni slash täällä, mikä sulkee sen. Ja kuva tag on myös tätä näppäintä arvo määreen alt. Se on vaihtoehtoinen teksti, joka tapahtuu, kun viet sen yli. Useimmat HTML-elementeillä on joitakin keskeisiä arvoa asioita, joita voit antaa sille eri räätälöintiä. Joo. Yleisö: [kuultavissa]. ANGELA LI: No, joten se on ominaisuus tag. Joten jos käytit jQuery, voisit Tehtävät Valitse image.getAttribute. Ja sitten voit hakea saat alt attribuutti. Ja se antaa sinulle pentuja. Jos muistat lomakkeita HTML, syöttö elementit on nimi määritteitä. Ja sitähän PHP käyttää lähettää pyynnöt, kun lomake lähetetään. Yleisö: Sanoitko jotain miten jos käytät kittens.jpg tai jotain, joka on puuttuva kansioita tai muita tiedostoja? ANGELA LI: Kyllä. Joten tämä on mitä kutsutaan suhteellinen polku, koska en anna olet koko polku. Tämä on kuin silloin C jos et fopen Joissakin tiedosto, jos fopen hi.txt, että hi.txt odotetaan olevan samalla hakemistoon, ellet anna sitä enemmän monimutkainen polku. Yleisö: Joten voi määrittää mihin kansioon [kuultavissa]? ANGELA LI: Joo. Ja voit etsiä, miten se tehdään. Mutta jos halusin saada kittens.jpg ulos Emoyhtiön hakemiston, tekisin .. / Kittens.jpg. Joo. Anteeksi. Joo. Voi mies, unohdin kysymyksen. Mikä oli kysymys? Voi, kysymys oli on, kittens.jpg odotetaan olevan samassa hakemistossa? Ja tässä tapauksessa on. Mutta voit myös antaa sille tiettyä polkua siten, että sen ei tarvitse olla. Hyvä? CSS. Niin CSS, kuten HTML, ei ole ohjelmointikieli. CSS on vain sarja styling sääntöjä. Se sanoista Cascading Style Sheets. Ja käytät sitä yhdessä HTML tyyliin sivuja. Joten on olemassa kolme tapaa voit sisällyttää sen. Yksi tapa tehdä se on pään osa HTML, voit vain avaa tyyli tag ja sitten kiinni CSS-sääntöjä siellä. Se on ihan ok. Joo. Yleisö: Voisitko laittaa ne tyyli tageja välillä, katsotaanpa sanoa, kehon ja / body. Ja sitten olisi muotoilutuotteet vain runko. ANGELA LI: Voisit. Se toimii. Mutta sinun ei pitäisi, koska muotoilu on millaisia ​​metatietoja, että pitäisi mennä pään teidän asiakirjan. Elimen olisi oikeastaan ​​vain sisältää mitä todella tulee näy sivulla. Yleisö: Joten sinun olisi laittaa tyyliin oman pään tyyli koko sivun, eikö? ANGELA LI: Joo. Joten laskemisesta tyyli täällä, nämä CSS-sääntöjä sovelletaan koko sivu perustuu niiden valitsimet. Joten parempi tapa tehdä se on sen sijaan ottaa tyyli tag in your head, sinulla on linkki ulkoinen tyyli arkkimaisesta näytin sinulle edellisessä esimerkissä. Mikä tämä on se yrittää ja löytää tiedosto style.css ja sitten vetää sen ja käyttää, että tyylejä sivun. Ja style.css olisi vain näyttää tämän. Se olisi vain nippu CSS. Ja lopuksi, on olemassa toinen tapa sinua voi sisältää CSS, joka todella ei pitäisi koskaan tehdä. Se puhelu inline muotoilu. Joten kaikki HTML-elementti voi myös ottaa tyyliattribuutti. Ja niin siinä tyyliattribuutti, voit antaa sen CSS-sääntöjä. Joten tässä tapauksessa riippumatta div olen määritellään täällä, se tulee on musta tausta ja valkoinen tekstin väri. Mutta sinun ei pitäisi tehdä tätä, sillä mitä Tämä ei se tuo teidän tyyli sisällä HTML. Ja tiedän, olemme puhuneet HTML on rakenne ja CSS on tyyliä. Jos teet näin, se sekoittuu ne yhteen. Ja se ei ole kovin puhdasta. Joten älä tee sitä. Käyttäen esimerkkinä CSS, siellä me valitse vain ruumiin HTML dokumentti. Olemme kuin, kaikki on olemaan Comic Sans. En myöskään suosittele sitä. Mutta te voitte tehdä sen. Toinen sääntö täällä, se tulee Valitse elementti sivu, jonka tunnus on tärkein. Joten mitä HTML-elementti, sanoin tunnus = Tärkein, aion antaa, että 20 pikselin marginaali ja yhdenmukaistaa kaikkea, kaikki teksti, keskustaan. Viimeinen asia valitsee CSS-luokka. Joten mitä tahansa elementtiä sivulla, että annoin poikkileikkausluokasta, aion tehdä sen taustavärin vaaleansininen. Jep. Se on kaikki mitä minulla. Kysymys? Yleisö: Mitä hashtag ennen isoja tehdä? ANGELA LI: kysymys on, mitä tekee hashtag ennen isoja do? Tässä tapauksessa pyttipannua CSS tarkoittaa Valinta tunnus. Joten jos minulla oli joitakin HTML-elementti, kuten Divid = tärkein, CSS sääntö valitsee juttu tunnus main. Ja samoin ajan edessä osa on Valinta CSS luokka-tai Valitse HTML luokassa. Yleisö: Miksi on olemassa on ennen 6 taustaväri? ANGELA LI: Joo. Joten kysymys on, miksi on olemassa hash ennen 6? Tämä on erilainen kuin hash. Tämä tarkoittaa sitä, että annat heksadesimaali väri. Joten hex värejä, tämä vain edustaa väri. Ja muistat RGB kolminkertaistuu, kun teit rikosteknisen PSET? Tämä on samanlainen. Kaksi ensimmäistä numeroa ovat kuinka paljon on punaista väriä. Toinen kaksi edustaa kuinka paljon vihreää. Ja kolmasosa vastaa kuinka paljon sininen. Ja hash tämä on menossa edustamaan väri. Joten mitään 0, 0, 0, 0, 0, 0 jopa F, F, F, F, F, F on voimassa. On joitakin päteviä väri, joka voi tuoda näkyviin selaimen. Kysymys? Yleisö: Mitä eroa käyttäen tunnus ja luokittain? ANGELA LI: kysymys on, mitä on erotus käyttäen tunnus ja luokka? Sinulla voi olla vain yksi osatekijä HTML asiakirja, joka on annettu tunnus. Joten vain yksi asia sivuni on sallittua pitää ID main. Joten voit käyttää sitä tähän on otsikon. Tämä on navigointi. Tämä on footer. Luokat ovat erilaisia, koska voit sovelletaan luokat niin monta HTML-elementtejä kuin haluat. Niinpä esimerkiksi, tein luokan osa, koska siellä on luultavasti enemmän kuin yksi jakso sivuni. Olet vain saa olla niin monta elementtejä sivulla samalla luokan mutta vain yksi tietyn tunnus. Yleisö: Niin piste vastaa luokka? ANGELA LI: Joo. Piste vastaa luokkaa. Cool. Se on kaikki mitä minulla on, kaverit. Kiitos. [APPLAUSE] ZAMYLA Chan: Hei kaikki. Olen Zamyla. Aion olla kattavat PHP, MVC, ja SQL tänään. Paljon materiaalia Tulen pinnoite tulee olemaan aika paljon oikealle ulos pset7. Selvä. Joten mikä on PHP? PHP on lyhenne sanoista PHP Hypertext Preprocessor. Niin se itsessään on rekursiivinen nimi, joka on aika siistiä. PHP on server-side scripting kieli, ja se tarjoaa backend ja looginen perustan sivuillamme. Joten Angela puhui paljon HTML ja CSS, joka tekee rakenteesta verkkosivuilla. Mutta entä jos haluat muuttaa, että sisältöä dynaamisesti tai jos se vaihtelee perustuu käyttäjän tai tietyt edellytykset? Siellä PHP tulee sisään Nyt, tyypillisesti, PHP voi kestää muutaman vähemmän linjat toteuttaa sama asia C. Tämä johtuu siitä, PHP käsittelee muistia hallinta ohjelmoija, toisin kuin meidän tarvitse malloc vapaa, tuollaista. Mutta koska PHP on tulkitseva kieli, tyypillisesti se voi suorittaa hieman hitaammin kuin C, joka on käännetty kieli. Koska liikumme ohjelmointi kielet, katsokaamme miten syntaksi on erilainen. Ollaan hyvin varovainen, ettei hämmentyä tämän. Joten PHP syntaksia, olitpa upottamisen PHP sisällä HTML tiedostoon tai sisällä. php tiedoston itse, voit tarvitse kirjoittaa koodia auki PHP ja suljetun PHP tageja kuten seuraa, kuten näytöllä. Muuttujat PHP. Jokainen yksittäinen muuttuja alkaa $ merkki, jota seuraa nimi muuttuja. Nyt muuttujat PHP on väljästi kirjoitettu, mikä tarkoittaa, että sinun ei tarvitse osoittamaan, mitä tietotyyppiä on, kun olet julistaa. Mutta tämä ei tarkoita, että he ei ole mitään tyyppejä lainkaan. Jos siis julistaa muuttuja ja vain asettaa se on 1, ja sitten julistan toisen muuttujan, aseta se yhtä kuin "1" ja sitten toinen 1,0, hyvin, riippuen tasa-arvon operaattorit käytän, jos haluan verrata kaikissa tyypit, sitten he ovat yhtä. Mutta jos haluat varmistaa, että tyypit ovat samat, PHP voi silti tehdä että vaikka emme ole merkki millaista se on, kun me ensin tiedosto. Nyt, PHP, vaikka olemme siirtymisestä ohjelmoinnista kieltä C, meillä on edelleen luotettava jos kunnossa, aivan kuten tämä. Meillä on edelleen samalla silmukoita, vain näin, jos laitat kunto ja sitten elin silmukan. Ja sitten meillä on myös silmukka, joka yleensä näyttää tältä. Joten jos halusin kerrata kaikkia yhdeksän psets ja toimittaa ja soita toiminto submitPset, niin voin tehdä sen täällä, mikä te olette kaikki tehdään tässä vaiheessa. Onnittelut muuten. Kameralle, ihmiset sanoi, kiitos. Nyt, jos et halua vain käyttää tätä silmukka, sitten PHP oikeastaan ​​myös on asioita kutsutaan foreach silmukoita. Joten jos olisin joukko kokonaislukuja, 0 kautta 8, tallennetaan array psets, voisin olla foreach silmukka, joka iteroi jokainen numero psets. Ja sitten voisin soittaa samaa toimiakseen kahdeksan kertaa, aivan kuten ennenkin. Joten tämä jokaisen silmukka on mukavaa, koska sinun ei tarvitse, jos et tiedä tarkka pituus array että olet ovat, sitten käyttämällä tätä foreach silmukka hoitaa sen puolestasi. Joten tein psets kuin array. Katsotaan, että. Taulukot PHP ovat yleensä sama kuin ne, jotka meillä on ollut C, jossa voit ilmoittaa array. Ja tässä, voin julistaa tyhjä array ja sitten rakentaa dynaamisesti käyttämällä indeksien kokonaislukuja. Joten indeksi 0, aion tallentaa kokonaisluku nimeltä 1. Klo indeksi 1 listallani, aion Tallenna arvo 2. Ja kolmannessa indeksi, mutta Toinen numero, aion Tallenna numero 12. Nyt tämä on hienoa, että toimii se toimii hyvin. Mutta sano se merkitse minulle mitä kukin indeksi omistaa. Minulle index 0 tarkoittaa, miten monta kissaa minulla on. Ja indeksi 1 tarkoittaa, miten monet pöllöt minulla on. Ja seuraava tarkoittaa kuinka monta koiraa. Hyvin, niin se täsmentää, että sen sijaan tarvitse muistaa 0 koskee kissat ja 1 pöllöt, voin käyttää assosiatiiviset taulukot, mikä tarkoittaa sitä, että sijasta kokonaislukuja minun indeksit, Itse asiassa voin käyttää jouset. Joten tämä on varsin hyödyllinen. Ja olet pohjimmiltaan vain korvattu kokonaislukuja ja jouset. Ja siinä assosiatiivisia array. Joo. Yleisö: Onko syytä miksi siellä alaviivaa toisen osa, koska listallani on jono. ZAMYLA Chan: kysymys oli, on Onko jokin syy, miksi siellä on korostavat välillä minun ja lista? Ei. Juuri näin olen nimeäminen minun muuttuja. Yleisö: Ensimmäisessä line, se on yksi sana. ZAMYLA Chan: Pahoitteluni. Laitan sen. Joo. Niiden pitäisi olla saman muuttujan nimi. Hyvä saalis. OK. Joten siirtyä string ketjuttamista. Jos haluaisin ottaa kaksi merkkijonoa, niin voin liität ne kanssa piste operaattorin. Joten jos minulla on Milo kuin etunimi ja Banana kuin sukunimi, sitten ketjuttamalla kanssa piste operaattorin ja sitten asettaa välilyöntiä tekee merkkijono, joka sisältää Milo Banana, jota en voi sitten echo tai Pikemminkin tulostaa. Puhuminen kaiku, puhutaanpa noin muutamia hyödyllisiä - oho. Olen pahoillani. Muutamia hyödyllisiä PHP toimintoja. Joten meillä on - teknisiä ongelmia. Yhden sekunnin. Lähetin sen. PowerPoint ongelmia. Ja olemme takaisin PHP toimintoja. Ja olemme takaisin PHP toimintoja. Joten olemme vaativat toiminto, jossa jos ohitat tiedoston, tässä on vain esimerkki tiedoston, Voisin kulkea sisään Sitten, joka sisältää PHP-koodin Tuosta tiedostosta, että minä osoittavat. Ja se arvioi, että sisään Sitten meillä on myös kaiku, joka on yhdensuuntainen printf. Exit on yhdensuuntainen rikkoa, joka poistuu lohko koodi, joka olet tuumaa Ja sitten tyhjä tarkistaa, onko tietyn muuttuja on kuin nolla tai nolla tai mitä rinnastetaan ovat tyhjiä. Joo. Yleisö: For merkkijonoyhdistämistä dot toimija yksi, PHP, on se, että sama kuin JavaScript, jossa se käyttää dot varten ketjutus tarkoittaa plus? Joten koko nimi, sinulla voisi olla dollarin kirjaudu ensin + ja sitten + kestää? ZAMYLA CHAN: Joo. Joten kysymys oli, PHP me voivat käyttää samaa merkkijonoyhdistämistä kuten JavaScript kanssa plussia. Ja Joseph saa tuohon myöhemmin. Luulen, että hän on dia siitä. Oikeastaan ​​se on erilaista. Joten JavaScript, sinun täytyy käyttää plus ketjuttaa merkkijonoja. Ja PHP, joudut Käytä piste operaattori. He ovat siis erilaisia. OK. Joten nyt kun olemme kattaa kaikki Tämän PHP, mihin se todella on kätevää? No, se on kätevä, kun me voi yhdistää sen HTML. Joten meidän PHP antaa meille voimaa muuttaa sivun HTML-sisältöä ennen sen lastaus. Joten perustuu eri olosuhteissa, yleensä tietyn käyttäjän, joka on kirjautunut sisään, voimme näyttää erilaisia ​​tietoja. Linda Oliko sinulla kysymys? Yleisö: Voitko liität kokonaisluku myös? ZAMYLA Chan: Kyllä voit. Joten kysymys on, jos voit liität kokonaislukuja tai muita variable.s nyt siirrymme MVC, joka on paradigma, joka käytimme pset7 ja paljon web-suunnittelijat käyttävät varten järjestämällä koodi tiedostot niiden verkkosivuilla. M tarkoittaa Model. Ja periaatteessa, mallin tiedostot käsitellään kanssa menetellään tietokantaan. Näytä tiedostoja, ne liittyvät estetiikka verkkosivuilla. Ja ohjain käsittelee käyttäjien pyyntöihin, jäsentää tietoja, ei muuta logiikkaa. Vuonna pset7, yhdistimme malli ja ohjain. Ja me vain kutsui heidät ohjaimet ja laita ne julkisesta hakemistosta. Ja katsele tiedostoja käytämme niitä malleja malleja hakemistoon. Joten tämä kaavio täällä edustaa myös että samanlaista divisioonan kanssa malli ja ohjain violetti täällä vasemmalla ja näkymä oikealle. Joten tämä on kaavamainen, että jotkut teistä saattanut nähdä aukioloajoista tai kaavioita, jotka olimme piirtäminen kun olivat selvittämiseen PSET. Joten tässä tietyssä ohjain, malli ohjain, meillä on toimintoja jotka liittyvät kysely SQL tietokanta, täytäntöönpanosta PHP logiikkaa. Ehkä voisitte etsiä varastossa Yahoo! Finance. Tai ehkä voisitte vain tarkistaa onko käyttäjä oli esittänyt muodostavat jo ennen kuin käyneet sivuillasi. Ja sitten tekisivät muodostavat tänne. Sen jälkeen lomake oli toimitettu käyttäjä, toimia, joita oli määritelty lomakkeen HTML tag osoittaisi sivulle, että se palauttaa kyseiset tiedot. Joten kaikki nämä tiedot olisi lähetetään takaisin ohjaimen. Niin olet luultavasti tehdä hieman enemmän logiikka siitä ja ehkä suorittaa muutama lisää kyselyitä SQL-tietokannan ja sitten lopuksi keksiä mukavasti pakattu joukko tietoja, joiden se kulkea johonkin toiseen malliin että näytetään, että tiedot. Nyt, miten me oikeastaan ​​paketti tiedot ajan? No, meillä on toiminto nimeltään Render joka oli functions.php tiedosto pset7, jossa ohitat nimissä tiedoston nimi, malli. Ja sitten myös kulkea assosiatiivinen array. Ja niin, että assosiatiivisia array edustaa erilaisia ​​tietoja että haluat kulkea sisään Nyt, mitä tulee olla vakio Näissä esimerkeissä on se, että avaimet tai, Pikemminkin avaimet assosiatiivinen paneelit, nämä ovat mitä tulee olemaan odotetaan olevan vakio, jonka malli, koska se tietää se tarvitsee jotain kutsutaan viesti tai kutsutaan nimellä. Ja sitten asiat oikealla, todellisia arvoja, joten tässä tapauksessa, kuka hyvä poika ja Milo, nämä ovat menossa olla arvoja, jotka muuttuvat että ohjain muuttuu joka kerta tai perustuu tiettyyn kunnossa ja välitän, että sisään Joten täällä malleja, näemme, että me käytät HTML erikoismerkkejä, joka vain periaatteessa sitä, että haluamme saada peer merkkijonon käyttäjä laittaa sisään Ja haluamme korvata Viestin siellä. Joten sitten kun me todella tarkastella tiedosto, erityiset tieto välitetään sisään Huomaa, että avain miten tehdä teosten että avaimet assosiatiivinen paneelit, niitä tulee muuttuvia nimiä täällä. Ja niin arvot sitä avainta assosiatiivinen joukko tulee sitten Muuttujan arvo. Nyt, siirtyä SQL. Se on lyhenne sanoista Structured Kyselyn kieli. Ja niin tämä on vain ohjelmointi teksti, jonka tarkoituksena hallintaan tietokantoja. Ja se oli käyttöä meille meidän pset7 rahoitus verkkosivuilla. Pohjimmiltaan se on vain helppo tapa seurata ja hallita esineitä ja taulukot ja linkittää ne toisiinsa. Ajattele nyt SQL-tietokannan pohjimmiltaan Excel-tiedoston, ehkä, useita välilehtiä levyt. Joten voi olla useita taulukoita, ehkä, että sidoksissa toisiinsa. Ja aivan kuten Excel, meillä on paljon toimintoja, jotka haluamme. Esimerkiksi voimme valita tietyt rivit. Voimme lisätä tietoa. Voimme päivittää rivejä. Ja voimme myös poistaa asioita. SQL valitse teokset valitsemalla rivit tai rivi tietyn sarakkeita vastaavat tietokannan tietyt ehtojen mukaan osoittavat. Joten tänne kun näen select * from velhot tonttien = Ravenclaw sitten Olen valitsemalla *, mikä tarkoittaa olen Valitsemalla jokainen sarake, joka rivin velhot taulukko, mutta vain jos talon sarake vastaa Ravenclaw. Nyt tämä on puhdasta tai SQL. Joten jos menin PHPmyadmin, joka on tietyllä tavalla, että käytämme hallita meidän SQL-tietokantoihin, niin voisin lisätä että osaksi PHPmyadmin verkkosivuilla. Ja se suorittaa. Mutta me todella haluamme tehdä että PHP puolella. Joten miten me sen teemme? No, käytämme hakutoiminto, joka periaatteessa suorittaa, että SQL-kysely. Käyttäen? paikkamerkkinä, voimme välittää tietyissä arvoja myös merkkijono, että me haluat korvata. Joten ehkä olen tallentamista eri arvot curr_house, joka edustaa nykyinen talo että olen menossa läpi. Joten en voi kulkea, että paikkamerkkinä kanssa kysymysmerkki. Ja sitten minä periaatteessa toteuttaa sama asia kuin tein ennen, paitsi nyt olen PHP. Ja kysely palauttaa assosiatiivisia array. Ja aion tallentaa sen riveihin. Nyt kysely voi aina onnistu. Ehkä SQL-kyselyä ei voi suorittaa koska taulukko ei ollut olemassa. Tai ehkä, sarake ei ollut olemassa. Jokin meni pieleen. No, siinä tapauksessa sinun kannattaa tehdä Muista, että voit tarkistaa, onko kyselyn palautti vääriä. Ja se on käyttämällä kolminkertainen vastaa toiminta siellä. Ja sitten pyydän anteeksi, joka on toinen CS50 toiminto, ohimennen viestin. Ja jos katsot anteeksi, kaikki se todella on tehdä apology.php. Joo. Yleisö: Voisitko selittää mitä se tähti tekee välillä Valitse ja valitse? ZAMYLA Chan: Joo, ehdottomasti. Joten tähden välillä Valitse ja valitse tarkoittaa, että haluan valita koko Koko rivi minun taulukossa. Olisin voinut ilmoitettu valitse nimi, vuosi, talo. Ja haluaisin vain saada nämä kolme sarakkeet minun pöytäni. Mutta jos sanon valitse *, niin minä saada kaikki tähän sarakkeeseen. Sitten minä menen sinulle takana ensin. Yleisö: Tämä on siis edelleen SQL, eikö? Onko tämä kysely vai onko tämä PHP? ZAMYLA Chan: Olemme kyselyn. Joten tämä on PHP. Joten käyttämällä PHP funktio kyselyn, olemme täytäntöönpanosta SQL-kysely. Yleisö: Onko mitään SQL isot ja pienet kirjaimet, kuten valitsemalla tai ohjattuja tai talon? ZAMYLA Chan: Onko mitään SQL isot ja pienet kirjaimet? Uskon niin, kyllä. Uskon, että SELECT ja FROM Ja missä ovat isot ja pienet kirjaimet. Ei? ROB BOWDEN: Niin, se on päinvastainen. Sarake nimet ja pöytä keinoin, kaikki nämä ovat isot ja pienet kirjaimet. Mutta jokin MySQL avainsanoja, kuten SELECT, FROM ja WHERE, tämä ei ole isot ja pienet kirjaimet. OK. Joten vastakohta mitä sanoin. Joten kaikki MySQL avainsanoja - Valitse, alkaen, jos - nämä eivät ole isot ja pienet kirjaimet. Mutta kaikki muu on. OK. Olet edessä. Yleisö: Jos olen $ rivit kannalta enemmän kuin yhden rivin, tarkoittaako tämä sitä on tulee vain assosiatiivisia array? ZAMYLA Chan: Eli kysymys oli, jos rivit on enemmän kuin yksi rivi se, ei se tullut assosiatiivinen array? Joten se on joukko assosiatiivisia taulukot jo. Joten vaikka siellä on vain yksi rivi palautetaan, niin sinun täytyy mennä indeksi 0 tuon tuloksen. Ja sitten sinun on, että ensimmäinen rivi. Kyllä, Belinda? Yleisö: Kun käytät ===, on tämä ainoa tilanne? Vai onko muita? ZAMYLA Chan: Joten tässä tapauksessa === on vertailu eri puolilla tyyppejä. Anteeksi. === On vertailu joka vertaa tyyppejä. Ja sitten == vertailee kaikkien tyyppejä. Yleisö: Voitko selittää, mitä rivejä on tässä tilanteessa? Onko se tietoriviä? ZAMYLA Chan: Vuonna seuraavan dian, olen aio selittää, mitä rivejä on. Joten jos et mielessä tilalla pois siitä. Ja sitten sinua selkään? Yleisö: toiminnoissa kuten kysely, tehdä ja anteeksi [äänetön]? ZAMYLA Chan: kysymys oli siitä, Näiden toimintojen - kyselyn, anteeksi, ja tehdä - ovat yleistyneet PHP. Nämä ovat sellaisia, että CS50 kirjoitti pset7. Ja Jay? Yleisö: Kun haluat sanoa $ _SESSION, Että vain tunnukset? Tai olisit voinut sanoa, että täällä? ZAMYLA Chan: Eli kysymys oli, kun käytämme $ _SESSION, että oli erityinen globaali muuttuja, että käytämme. Täällä tämä muuttuja on menossa olla paikallista aikaa meidän tehtävämme. Joten me vain julistamalla uusi muuttuja. Yleisö: Miten anteeksi täytäntöön? ZAMYLA Chan: kysymys oli, miten anteeksi toteutetaan? Ja mielestäni tämä on oikeastaan ​​aika hyviä käytäntöjä te mennä functions.php jakso ja katsoa anteeksi ja nähdä miten voisi olla tehnyt sen itse. Joten en voi lähteä, että sinulle, mutta vain sanoa, että jos tarkastellaan anteeksi, niin se vie viestiä, että olet toimitettu anteeksi, ja sitten se tekee viestistä. Kysyttävää? Rakastan kysymyksiä. Joten pitää ne tulevat. Yleisö: [kuultavissa] echo tai tulostaa siellä? ZAMYLA Chan: kysymys oli, emmekö voisi vain laittanut echo tai tulostaa siellä. Niin että olisi tehnyt jotain hieman erilainen. Se olisi painettu kysely ei tuohon - No, juuri nyt, olemme todella meidän ohjain. Joten meillä ei oikeastaan ​​ole HTML perustettu täällä. Anteeksi antamalla apologize.php todella ohjaa sinut apology.php. OK. Joten nyt mennään edelleen käsitellä kysymykseen aiemmin siitä, mitä todella riviä. No, kysely palauttaa joukko rivejä. Ja jokainen rivi on edustettuna yhdistymismekanismin array. Joten jos olen toteutetaan joitakin SQL-kysely ja Olen tallennettu tulos riveihin, niin käyttäen foreach silmukka, sitten array nimi on ensimmäinen siellä - riviä. Ja sitten aion soittaa jokaisella rivillä siellä $ rivi. Niin iteroimalla yli, että voin sitten käyttää tietyn rivin nimi sarakkeessa vuosisarakkeeseen, ja talon sarakkeessa. Huomaa, että en olisi pystynyt tehdä tämän kanssa rivit, koska rivit indeksi nimeä ei ole. Rivit on vain joukko assosiatiiviset taulukot. Joten sinulla on kaksi tasoa siellä. Kun sinulla on joukko rivejä, sinun täytyy päästä tuohon. Ja sitten voit käyttää sarakkeita. Oliko jotka tekevät selväksi? Joo, edessä? Yleisö: [kuultavissa] Avaa kannattimet [kuultavissa]? ZAMYLA Chan: Anteeksi? Yleisö: avoin suluissa. ZAMYLA Chan: Nämä täällä? Se on antanut minun sisällyttää että muuttuja. Joo. Yleisö: Kun tulostat, oletko tulostamista HTML-koodi? ZAMYLA CHAN: Kyllä. Kun tulostan, tämä tässä on sisällä minun malli nyt niin Mielestäni MVC menetelmällä. Joten olen tulosteiden HTML. Yleisö: Jos siis meni kehittäjä työkaluja suorittamisen jälkeen, voisimme joka todella koodissa? ZAMYLA Chan: Se on suuri kysymys, joo. Joten jos meni kehitystyökalut Firefox käyttää Firebug tai Chrome, niin joo, voisit Katso tarkat HTML. Joten se ei näytä $ row ["nimi"]. Se osoittaisi, kumpi nimi on tuolla rivillä. Yleisö: Vain yleinen kysymys, mitä tr ja td määritellään? Miksi me [kuultavissa]? ZAMYLA Chan: Taulukko rivi tr, pöytä sitten td sarake. OK. Yleisö: Joo, se on taulukon tiedot. ZAMYLA Chan: Taulukko tiedot. Joo. Yleisö: Se on rivi, jossa rivi kohdellaan kuin sarake? ZAMYLA CHAN: Anteeksi. Voitko toistaa? Yleisö: miten sinä visualisoida rivit? ZAMYLA Chan: Miten visualisoida krs millaisia ​​tavalla? Puhutko näistä rivejä tässä tai tr rivit? Yleisö: rivit. ZAMYLA Chan: Nämä rivit täällä? Olin visualisoida tätä Olen suorittaa kysymykseni. Ja se sanoo, OK, minulla on joko 0-n määrä vastaavat rivit kriteerit että olit kysyi. Joten minulla on joitakin määrä rivejä. Joten rivit, $ rivit, tallentaa kunkin yksi niistä rivien array. Joten vaikka se on vain yksi niistä, se on vielä joukko rivejä, jotka vastaavat sitä. Niin sitten, esimerkiksi, tämä on samanlainen kun haetaan välimuisti käyttäjiltä. Ja kriteerit oli silloin Tunnus vastaa istunnon tunnus. On oikeastaan ​​vain yksi rivi joka voisi vastata siihen. Mutta silti rivejä juuri palannut yksi rivi. Joten sinun täytyy mennä rivit, indeksi 0, indeksi välimuistista itse saada välimuistin. Yleisö: Onko tulostuksesta ECHO sama asia? ZAMYLA CHAN: Kyllä. Kyllä. Tulosta kaiku sama. Yleisö: Onko foreach silmukka Ainoa tapa indeksoida riveihin? ZAMYLA Chan: Onko foreach silmukka ainoa tapa, jolla voit kerrata läpi rivit? Ei. Voit myös käyttää silmukka, edellyttäen että tiedät pituus rivin array. Yleisö: Voisitteko käyttää sitä käyttämällä peräkkäin kuin [kuultavissa]? ZAMYLA Chan: Joten et voi käyttää sitä vain käyttämällä rivi, jos sinulla ei ole foreach silmukka edellyttäen, että et ole julistettu rivi. Kyllä. Joo, on valkoinen. Yleisö: Joten mitä tr ja td tehdä? ZAMYLA Chan: So tr ja td ovat HTML-tunnisteita. tr osoittaa alussa taulukon rivin. Ja jokainen td ilmaisee uuden taulukon tiedot sarake. Yleisö: Jotta visuaalinen mitä rivi on kuin vain kuvitella SQL, miten ne ovat peräkkäin. [Äänetön]. ZAMYLA CHAN: Joo. Se on suuri piste. Voit visualisoida rivejä vain kuten Excel-taulukossa, vain luettelon rivejä. OK. Selvä. Joten nyt olemme ylittäneet valitse, jos ei ole muuta kysyttävää, näytämme mennä yli päälle insertin. Joten jos halusin lisätä johonkin pöytä ja lisätä tiettyjä sarake arvot, voisin lisätä itse osaksi Ravenclaw vuonna 7. Mutta joskus saattaa olla päällekkäisiä arvot, kuten näimme pset7 kun oli päivittää tuotevalikoimamme. Joten tässä tapauksessa, haluamme käyttää Päällekkäinen avain UPDATE, jotta emme tallentaa useita rivejä, joilla on sama Arvostamme vaan päivittää sitä. Sitten meillä on todellakin päivitys, joka ei ole insertti. Se on vain päivitys, jossa päivität tietyssä taulukon tietyn kriteerit ja sitten lopuksi poistaa, joka tekee hyvin samanlainen asia. Yleisö: Voisitko lyhyesti mennä yli päällekkäinen avain? ZAMYLA CHAN: Joo. Pohjimmiltaan tässä, minulla on INSERT INTO Gringotts, on, galleons, nämä arvot. Mutta tunnus, oletettavasti, on yksilöllinen avain arvo perustettu MySQL pöytä. Joten jos minulla on jo, että ID perustettu, niin en voi lisätä uuden rivin. Joten jos se ei ole jo, sitten minun täytyy päivittää sitä. Keskellä on valkoinen. Yleisö: Joten lisätä, päivittää, poistaa, ja valitse, ovat ne kaikki saatavilla paikallisesti [äänetön]? ZAMYLA Chan: So lisätä, päivittää, poistaa ja Valitse kaikki SQL-kyselyjä. Joten jos käytät SQL, sinulla on näitä saatavilla. Yleisö: Takaisin menneisyyteen tietokilpailuja - siellä oli kysymys, joka käsitteli jos sinulla on ollut pöytä ja halusi aseta testin tulokset yhteen ja lisäät nimesi niin se ei anna sinun [Äänetön] ystäväsi testi pisteet. Miten teet sen kanssa insertti? ZAMYLA Chan: Eli kysymys oli edellinen puolivälin kysymys. En ole tietoinen, joka yksi se on juuri nyt. Joten ehkä jälkeenpäin, jos haluat keksiä ja näyttää minulle, niin voin varmasti antaa vinkkejä. Mutta jos puhutaan lisäämällä asioita, kuten ottaen jonkun pisteet, kun ei pitäisi, puhutaanpa SQL-injektio hyökkäyksiä. Joten SQL-injektio hyökkäys on olennaisesti jos joku ottaa etuna alhainen turvallisuus tapa, että käytät tietojen. Joten täällä, aivan kuten CS50 rahoitus, kun me kirjautunut sisään, voimme syöttää käyttäjätunnus kirjautunut muodossa Ensimmäinen tekstikenttään ja sitten syöttää salasanan. Ehkä meidän PHP voisi näyttää jotain tällaista, jossa $ käyttäjätunnus on post-data käyttäjätunnus ja salasana on post-data salasanan. Ja sitten me vain suorittaa meidän kyselyn vaikkapa OK, no, meidän kysely on menossa Valitse meidän käyttäjät, jos käyttäjätunnus on joka ne toimitti. Ja salasana on salasana, mikä tarkoittaa, että salasanat täsmää. Nyt, mitä jos sen sijaan todella Lähettämällä varsinainen salasana, kuten 12345 ja arvailla, piikki, joka sanoo salasanan ja yrittää hakata heidän huomioon, mitä jos sen sijaan ne toimitti. He voivat kirjoittaa ehkä arvata salasanan. Ja sitten he olisivat loppuun quote kirjoita tai 1 = 1. Se vauhti suoraan SQL kysely näyttää tällaiselta. Valitse käyttäjiltä jossa käyttäjätunnus = Piikkiä ja salasana vastaa lilja tai 1 = 1. Joten joko salasana on oikeiksi tai 1 = 1, joka on aina totta. Joten tässä tapauksessa, periaatteessa, käyttäjä voi hyödyntää tätä ja kirjaudu itseään ja Hack jonkun tilille. Joten siksi haluamme välttää joku tarvitse tehdä tätä. Mutta onneksi, kyselyn toiminto ohimennen Paikkamerkkien vie huolta tämän sinulle. Myös, sinun yleensä halua koskaan todella toimittaa salasanat itse. Siksi me hashed tai salattu ne CS50 rahoitusta. Yleisö: menneisyys tietovisa puhui noin MySQL paeta jousille. Onko meidän tarvitse huolehtia siitä? ZAMYLA Chan: Tuo on hyvä kysymys. MySQL paeta jousille on ehdottomasti toiminto, jota käytettiin meidän kyselyn. Mutta ehdottomasti tutkia sitä. Sanoisin, että on reilua peliä tietää että sinun täytyy soittaa, että toimiakseen narussa. Joo, Belinda? Yleisö: Mistä tiedät, milloin on puolilainausmerkkejä tai lainausmerkkeihin? Ja myös, minusta tuntuu luento sinua mainitsi jotain, jolla ei ole [äänetön] tai jotain tai Toinen single quote lopussa. Luulen, että hän huomautti, luento, että sinun pitäisi olla apostrophe 1 ja sitten ei tarvitse heittomerkkejä tai jotain. Yleisö: [kuultavissa]. Yleisö: asia on viimeinen single lainaus tuossa toisessa ruudussa ei pitäisi olla siellä. [Äänetön] Koska kun otat että viime single lainata ulos ja ottelu näiden sisällön jos salasana on, jos sinulla on, että kysely, siellä on vain yksi tarjous osoitteessa loppuun jo. Haluat käyttää, että yksi tarjous kuin se, joka on kohti yhtä [Äänetön]. Joten mitä oikeastaan ​​tässä tekstissä laatikko ei pitäisi olla sitä. ZAMYLA Chan: Muutan että. OK. Jos ei ole kysyttävää, niin minä kulkevat sen yli Joseph puhua noin JavaScript, jne.. [APPLAUSE] JOSEPH ONG: Eli meillä on käynnissä hieman jäljessä. Joten jos sinun pitää lähteä, se on OK. Mutta pyydämme, että pidät päänne alas jos olet keskellä, joten älä peitä kameraa ja käytät Takaisin EXIT, jos sinulla on. Olen Joseph muuten. Hei. Testata, testata. Dan, on niin hyvä? Cool. Joten video julkaistaan ​​myös verkossa niille, jotka täytyy lähteä nyt. Kiusallinen. OK. Joten tietokilpailu tarkastelu. Tämä on kissa. Nyt, JavaScript, joka ei ehkä ole kuten aww joillekin teistä. OK. Niin, että ensimmäinen, muistamme Zamyla. Muista, että PHP on suoritetaan palvelimella. Ja paljon kertaa, kaverit kirjoitti silmukoita PHP tulostaa HTML, eikö? Joten kun että koodi suoritetaan, että HTML-tulostamaan saa lähettää käyttäjälle. Ja kun se tapahtuu, ei enempää PHP voi ajaa, ellet päivitä sivu, ja kurssi, joka reexecutes PHP. Mutta kun tulostaa, että HTML, et voi mennä minnekään. Niin että HTML lähetetään yli käyttäjälle, mikä on selain tänne, jos Milo käyttää tietokonetta. Ja niin hyvin, on useita asioita, kun lähetämme HTML käyttäjälle. Joskus haluamme tehdä jotain kun klikkaat jotain, haluamme hälytys laatikot pop up, tuollaiset vuorovaikutusta, kuten kun painat näppäintä, kun klikkaat jotain sivu, haluan jotain tapahtuu. No, et voi reexecute PHP koodin kerran, että HTML on asetettu. Joten miten teet tämän? Esittelemme uuden kielen nimeltä JavaScript, joka kulkee selaimessa jonka avulla voit tehdä asioita HTML jälkeen saat ne palvelimelta. Ja siksi me kutsumme sitä client-side ohjelmointikieli. Se toimii tietokoneessa - asiakas. Kysyttävää, että tähän mennessä? Paradigma järkevää ihmisiä? OK. Hyvä. Selvä. Joten ensimmäinen asia huomata on Javascript ei ole PHP. Heillä on joitakin erilaisia ​​syntaksin, jonka me mennä. Ja ne ovat hyvin erilaisia ​​käyttötarkoituksia. JavaScript, jälleen, sinun selaimen, asiakkaalle. Palvelin toimii jossain jonkun toisen tietokone, joka lähettää tiedot sinulle, korjata? Joten jos kysymme voit kirjoittaa PHP-koodin on tentti kysymys, älä kirjoita JavaScript ja päinvastoin. Sinun on vain menettää pisteitä, ja se ei ole oikea. Joten ajautua syntaksin erot - JavaScript vasemmalla ja PHP oikealla. Ensimmäinen asia, jonka huomaat kanssa JavaScript, me julistamme muuttujia var avainsanan - V-A-R. PHP käyttää dollarin merkki, kuten Zamyla keskusteltu aikaisemmin. Jos haluat ilmoittaa assosiatiivinen array, näemme tuttuja syntaksi oikealla puolella PHP. Vasemmalla puolella, sen sijaan käytät aaltosulkeita. Ja sitten avaimet ovat vasemmalla. Sitten on paksusuolen. Ja sitten on arvot että haluat. Joten tämä on, miten voit tehdä sen PHP oikealla puolella, että toinen linja, joka alkaa Milo. Ja näin voit tehdä sen vasemmalla puolella JavaScript, jos haluat mitä kutsumme esine. Ja esineitä JavaScript ovat vain assosiatiiviset taulukot. Joten jos haluat käyttää aloilla, PHP käytät tätä kiinnike syntaksin. Ja tällä tavalla, voit siirtää tähän omistajalle kenttä Lauren. No, JavaScript, jos haluttaisiin käyttää kentän ja muuttaa sitä, voit Käytä dot syntaksia. Voit myös käyttää kiinnike syntaksin. Mutta et voi käyttää dot syntaksin PHP. Se ei onnistu. Se toimii vain PHP. Ja lopuksi, tulostaa asioita konsoli, käytät console.log, joka te käytätte paljon pset8. Voit console.log että. Jos haluat tulostaa array PHP, sinun on käytettävä tulosta r. Ja oikealla puolella, näet i hash merkkijonoyhdistämistä tuolla. Joku kysyi aikaisemmin. Käytän plus JavaScript. Jos haluan liität jotain PHP, käytän piste. Nämä ovat erilaisia. Jos kirjoitat PHP-koodin, älä käytä plus. Jos kirjoitat JavaScript koodia, älä kirjoita piste. Se on väärin. Ja voit olla surullinen. Joten syntaksin eroja. Tunne syntaksin, koska jos sinulla on kirjoittaa kysymys ja käytät syntaksin alkaen väärän kielen, se ei toimi. Ja se on väärin. Joten Puhutaanpa hieman kontrolloida virtaus eroja, miten käytät silmukoita kukin niistä. Zamyla meni oikealle puolelle. Stuff oikealla puolella olisi tunnettava. Katsotaanpa vasemmalla puolella. Kun käytät n silmukka JavaScript, silmukkakokoelmaa muuttuja, var i tuolla, lenkki avaimet array. Niin näet nimen, talo, ja rooli. Jos minä console.log i, saan nimi, talo, ja rooli. Nämä ovat avaimet. JavaScript, foreach silmukka menee arvojen päälle tämän array. Niin huomaat he molemmat i. Mutta täällä PHP puolella, se tulostaa out Milo, CS50, ja Mascot. Nämä ovat arvoja PHP. Joten nämä ovat, miten nämä kaksi ovat eri eri kielillä. Joten jos käytät foreach silmukka, älä oleta, että se antaa sinulle avaimet. Ja jos käytät varten n silmukka, älä olettaa se antaa sinulle arvot. Onko tässä järkeä tähän mennessä? Seuraava dia on menossa näyttämään miten voit käyttää päinvastainen jokainen niistä. No, jos sinulla on avain JavaScript ja haluat arvo pois, juuri indeksinä array kanssa. Joten Milo ja minä sinut mitä haluat - arvot. On tämä erilainen syntaksi PHP. Jos todella haluat tietää sitä, en Taisimme osoitti sen sinulle vielä. Mutta jos olet kiinnostunut, voit käyttää tämä ylimääräinen syntaksin oikealla puoli, että todella voit saada avaimet PHP, kun käytät foreach silmukka. Joten vain hieman trivia jos olet kiinnostunut. Niin se vain osoittaa eroja näiden kahden silmukoita. Älä sekoita niitä, kun olet ohjelmointi kysymys. Kysyttävää siitä. Cool. Selvä. JavaScript esineitä. Puhuin niistä. Ne ovat kuin assosiatiivisia taulukoita. Yksi asia, jonka haluaisin sinun huomata tässä on, että arvo associative array voi olla mitä tahansa JavaScript. Se voi jopa olla funktio, kuten tuolla. Minulla on toiminto, joka on avaimen arvoa. Ja jos haluan soittaa, että toiminto, Minä vain käyttää kuori. Ja sitten laitoin suluissa sen jälkeen. Ja joka toimii. Joten kysyttävää? Ei? OK. Hyvä. JavaScript, kuten PHP, on väljästi kirjoitettu. Mitä se tarkoittaa? Se ei ole tyyppiä. Mutta kun julistaa JavaScript muuttuja, sanot var i. Et sano sitä. Se ei ole asia. Sinä vain sanoa, että se muuttuja. Ja sitten JavaScript hoitaa tyypit konepellin alla sinulle. Voimme vapaasti muuntaa tyypit tämän takia. Joten en alkaa out numero tässä tapauksessa. Ja sitten minulla on merkkijono. Ja lisään i sitä. Ja minä luovuttamaan sen takaisin i. Niin että ensimmäinen rivi, i on numero. Toisella rivillä, i tulee nyt string jälkeen en siirtämisellä. Ja tässä, olen vain ketjuttamalla että numero päälle merkkijono. Niin näet, että vaikka olinkin kokonaisluku ensimmäisessä osassa, se on eräänlainen samankaltaisten muunnetaan merkkijono ja sitten lisätään onto että hei merkkijono. Ja niin se on, mitä tarkoitan löysä kirjoittamalla. Se, että voit muuntaa välillä tyypit hyvin helposti. Ja se ei heitä varoituksia sinua kuin C tekee. Joten olen nyt sisältää hei 123 merkkijono. Seuraava. Voimme myös vapaasti vertailla tyyppien välillä. Joten jos vain käyttää ==, hyvin paljon kuten PHP, JavaScript ei samanlainen asia. Merkkijono 123 on sama kuin numero 123, kun käytät kaksinkertainen tasavertaisina. Kun käytetään kolminkertainen vastaa, se myös haluaa varmistaa, että tyyppi on sama. Niin, koska se on merkkijono, ja se on numero, vaikka he molemmat 123, kun käytät kolminkertainen vastaa, saat vääriä. Vuonna kaksinkertainen vastaa tapauksessa saat totta, koska kaksinkertainen tasavertaisina ei välitä tyyppi. Triple tasavertaisten ei välitä tyyppi. Kysymyksiä? OK. Ja toinen juttu JavaScript on soveltamisala on eräänlainen globaali ellet funktion. Ja se toimii samalla tapa PHP todellisuudessa. Joten mennään läpi tässä esimerkissä. Asetin i 999. Ja sitten menen tähän silmukka. Joten jos olen tulostus i tässä varten silmukka, odotan 0, 1, 2, 3, 4. Saan i = 4. Se kasvattaa i nyt 5 klo loppuun silmukan. Ja sitten se puhkeaa silmukan, koska se ei täytä kunnossa enää. Mitä luulet, että ensi console.log tulostaa? Niin, että mitä se tekisi C. C, koska jos sinulla on kuin var i ulkopuolella ja sinulla on var i sisällä silmukan, kuten silmukka, niin se tekee siitä niin, että se on scoped, että kaksi i: t ovat erilaisia. JavaScript, se vain pitää sitä samaa i. Saan 5, koska se oli arvo kun se poistui ulos silmukan. Joten ne i: t ovat samat i. Onko järkeä? No, se on järkevää JavaScript kannalta. Mutta sama paradigma ei siirtää C. Ne ovat eri rajaukseen sääntöjä. Kyllä. Yleisö: [kuultavissa] funktion ulkopuolella [kuultavissa]? JOSEPH ONG: So ulkopuolella toimivia? Niin minä päästä, että vain toisen. Joten me kutsumme foo (i). Tämä kulkee i osaksi foo askelin se, ja sitten kirjautuu sitä. Joten se oli 5. Niin se on 6. Mutta mitä puhun on että olen tähän toimintaan. Koska se on parametri, se on scoped tuon toiminnan. Joten kun olen itse päästä pois siitä funktio, se on nyt menossa takaisin vanhaan i. Että olen vain scoped koska se on tehtävä. Ja meillä on alaa ja tehtäviä. Mutta meillä ei ole soveltamisalan ulkopuolella Toimintojen JavaScript. Onko järkeä? Kyllä. Kysymykseen. Yleisö: Same [kuultavissa]? JOSEPH ONG: Niin joo. PHP, se on sama tyyppinen asia. On hieman hienovaraisuutta todella. Mutta voit kysyä minulta että tarkastelun jälkeen. Sinun ei todellakaan tarvitse tietää että hienovaraisuus varten tietokilpailu. Kaikki aikomukset ja tarkoituksiin, kuten muuttujia, maailmanlaajuinen ja PHP, ellei he ovat toiminto, sama asia JavaScript. Kyllä. Yleisö: Miksi tämä sallitaan JavaScript ja missä muualla? JOSEPH ONG: Miksi se sallitaan JavaScript ei C? Se on vain kuka keksi JavaScript päättänyt, että tämä oli OK JavaScript. Joten se on aivan kuin ohjelmointikieli Yleissopimus sellaisena kuin sanoisimme. Kyllä. Yleisö: Miksi sitten sen mennä 6-5? JOSEPH ONG: Niin se meni 6-5, koska kun ohitin i osaksi foo, että i sisällä foo on nyt scoped on foo, koska soveltamisala on olemassa toimintoja JavaScript. Mutta kun pääsen pois täältä, koska se oli scoped toiminnon, olen vain Tavallisen i, joka oli sisällä loput ohjausvuo. Järkeä? Voinko siirtyä eteenpäin? Selvä. Cool. Hyväksyessään tämän on esineiden välitetään viittaamalla. Tiedät kuinka kun siirtää array osaksi C voisit todella muuttaa array? Se on sama asia JavaScript. Jos kuljen esineen, tässä tapauksessa minä läpäissyt Milo tähän catify toiminto. Milo lähtee. Hänen nimensä on Milo Banana. Kuljen että objektin toiminto koska se on esine, assosiatiivinen array JavaScript. Kun esiinnyn toiminta tähän toimintaan, se todella muuttaa objektin. Joten tämä onnistuu vain esineiden JavaScript, aivan kuten se tapahtuu hyväksyy taulukot sisällä C. Joten Milo nimi tulee todellakin kissa nyt. Onko järkeä? Joten tämä toimii vain esineitä. Objekteja välitetään viitteenä. Kyllä. Yleisö: Väitätkö, että toisin kuin muuttujan i. JOSEPH ONG: Joo. Joka muuttujan i oli vain numero, eikö? Se on kuin C kun ohitat kokonaislukulaskutoimituksen, se tekee kopion. Ja kun ohitat array, se todella muuttaa todellinen array C. Sama tapahtuu JavaScript tässä tapauksessa. Selvä. Ja seuraava, Milo on surullinen, koska hän on nyt kissa. Se oli todella Milo jälkeen jotkut eläinlääkärillä käynti. Niin miten käytämme JavaScript Web-sivun? Näihin voidaan lukea se. Tämä on HTML-koodin nauhat tageja. Joten minulla on nauhat tageja siellä. Ja sitten laitoin JavaScript koodiin koodit. Ja sitten se suorittaa tämän. Kun minä vain tehdä se näin, se on kutsutaan Inline JavaScript. Se on tavallaan sotkuinen, koska JavaScript on todella HTML. Parempi tapa tehdä tämä, paljon mukavampi, on kirjoittaa Javascriptin ulkoisen tiedoston ja sitten antaa komentosarjatunnus kanssa lähde. Ja tämä menee, että JavaScript-tiedoston ja lukea JavaScript-koodin että tiedoston sijaan. Ja näin, sinulla ei ole paljon JavaScript alussa oman HTML-tiedoston, joka tekee se todella sotkuinen. Sinä vain laittaa sen jossain muualla. Ja sitten se käyttää sitä sieltä. Oliko se järkevää? Sijoittelu asioissa. Tässä nimenomaisessa tapauksessa, kirjoitus on ennen ruumiin. Joten kun suorittaa, että siellä on mikään elin vielä. Ehkä tämä tekee vähän enemmän aistivat kun näytän tämän seuraavan osan. Tässä tapauksessa skripti tulee sen jälkeen div. Joten div todella näyttää sivulla ensimmäisenä. Täällä tässä vähän punainen ympyrä, näet teksti näkyy. Ja sitten hälytys näkyy. Ensimmäisessä tapauksessa, koska käsikirjoitus oli ennen div, hälytys näkyy ensin. Ja sitten div ilmesty voit jättää ruutuun. Joten suorituksen merkitystä. Niin me pitää tämä mielessä. Tämä on tärkeää vuonna hieman. OK. Niin hyvin, miten odota koko sivu on ladattu sitten, ennen kuin suorittaa koodia? Pääsemme tähän hieman Vähän myöhemmin myös. Mutta vain pitää tätä sijoittelu asiat mielessä, kun me tulevat toiseen diaan. Joten saamme DOM nyt. Ja mikä on DOM? Joten jos tarkastellaan HTML-koodia, se on vain kasan tekstiä ruudulla. Joten miten JavaScript tietää, että Tämä on HTML-elementti? Joten meillä on oltava jonkin verran muistia edustuksen tämän rakenne, joka meillä on. Ja kun meillä on tämä muistiin edustus JavaScript, kutsumme että DOM. Ja se on vain niin, että ihmiset päättivät että meidän pitäisi edustaa tätä HTML rakenne. Ja mitä tämä DOM näyttää? No, muistiin edustus, otamme tämän tekstin. Ja me muuttaa sen muistiin edustus. Joten tämä on HTML. Joten me ensin selvittää, että jokainen DOM puu on asiakirja. Se näyttää kuin puu. Ja asiakirja sisältää HTML tag, oikeastaan ​​kaiken sisällä tämän nyt. HTML-koodi on kaksi lasta. Se on pää. Että pää, jos tarkastellaan sisennys tuolla, miten se rakentuu välillä lähellä tunnisteet, pää on lapsi. Lapsi on otsikko. Täsmälleen. Nyt meillä on body child. Ja sitten, että laitos on lapsi nimeltä perhe. Ja että perheellä on kolme lasta - vanhin, keskimmäinen ja nuorin. Joten sinun pitäisi osata piirtää kaavio kuten tämä, kun kysymme, miten piirtää kaavio kun annamme sinulla HTML vasemmalla. Tietää miten tuottaa DOM-puuhun. Ja sisältä näistä asioista, siellä on vain tekstiä, jonka olen edustettuina niin vähän laatikoita. Onko tämä DOM puun rakenne tekevät järkeä ja mikä DOM on? Joten mitä p seistä? Tänne, p tuolla Kyseisen koodin edustaa kohta tag HTML. Joten voit etsiä sen. Mutta se vain tarkoittaa että se on joissakin tilaa tekstiä. Ja sillä on noin oletus CSS-tyyleille, koska se on kohta tag. Mutta eivät todella huolissasi että osa liikaa. Vain tietää se paikkamerkkinä joillekin tekstiä. Kyllä. Kysymys? Kyllä. Yleisö: Sinä vain mainittu CSS. Hash perheen ja hash kaikki jutut on pohjimmiltaan edustavat tunnukset CSS? JOSEPH ONG: Joo, aivan. Haen siihen, mitä nämä hash tarkoittaa toisen. Kun Angela meni CSS, hän puhui CSS valitsimet. Nämä ovat CSS valitsimet, että hän puhui. Kyllä, Rob? ROB BOWDEN: Haluaisin myös kommentoida että DOM sisällä otsikkokoodi on myös teksti solmu. JOSEPH ONG: Oikea. Joten sisällä otsikkokoodi, Minulla on jonkin verran tekstiä DOM. Siis todella, tämä otsikko pitäisi olla kuin pieni laatikko tulossa pois sitä myös. Mutta se ei ole oikeastaan ​​väliä liikaa tässä asiassa. Emme oikeastaan ​​välitä tekstiä solmuja, kutsumme heitä, liikaa. OK, me teemme. Ilmeisesti me teemme. Ja minä korjata, että kun En lähetä se uudelleen. Onko järkeä? Miten siis työskennellä DOM? Aina kun käsitellä DOM JavaScript on kaksi vaihetta. Voit valita DOM elementti. Ja sitten teet asioita sen. Joten tässä tapauksessa, abstraktisti, olen valitaan keskimmäinen elementti. Ja sitten esimerkki tekemässä juttuja jotta se olisi tekstin muuttamista. Jotka ennen Bob. Nyt, mitä tein se oli vaihdoin Bob Milo tässä tapauksessa. Miten siis itse tehdä tämän? Miten teemme valinta? Ja miten me teemme juttuja asia, kun olemme ottaneet sen? No, miten kaverit ovat oppineet sen tässä luokassa on käyttää meidän nimeltään jQuery. Joten mikä on jQuery? jQuery on kirjasto, joka JavaScript helpompi kirjoittaa. Joten joku otti aikaa ja kirjoitti jQuery. jQuery on todella kirjoitettu JavaScript. Ja sitten, koska he tekivät tämän, meillä on nyt on koko joukko toimintoja, jotka voimme käyttää, jotka tekevät elää helppoa. Joten mitä ovat joitakin mitä se tekee? Se tekee valitsemalla elementtejä helpompaa. Se tekee muuttuvat HTML, lisäämällä luokat helpompaa. Se tekee Ajax helpompaa. Pääsemme että toisen. Ja se on analoginen C-kirjastoja. Joten lisäät string.h, saat strlen. Saat strcpy, kaikki nämä asiat. Kun lisäät jQuery, saat mukavia tapaa valita elementtejä muutos asioita, jne.. Saat lisää toiminnallisuutta JavaScript ei anna sinulle. Joten jQuery ei ole JavaScript. jQuery on kirjasto, joka on kirjoitettu JavaScript joka tekee JavaScript helpompi kirjoittaa. Joten jQuery ei ole ohjelmointikieli kieltä. Mutta JavaScript on. tehdä. Että saat terminologiaa oikeassa. Kaikki kysymykset? Kyllä. Onko tuo kysymys? Selvä. Joten miten käytät jQuery? No, kun olet kirjoittamassa joitakin JavaScript-koodin ja lisäät jQuery yläreunassa tiedostosi script tiedosto, käytät dollarin merkki nyt päästä käsiksi jQuery. Ja tämä eroaa dollarin merkki PHP. Se on sama merkki, kirjoita näppäimistöllä. Mutta ne tarkoittavat aivan eri asiaa. Dollari merkki PHP tarkoittaa tätä Näin minä julistaa muuttuja. JavaScript, kun olet sisälly jQuery, se edustaa jQuery. Niin pitää tämä mielessä. Joten miten me saatamme valita DOM elementtejä? No, kun teet sen ruma JavaScript Näin voit käyttää dokumentoida globaali muuttuja. Ja sitten saat elementin ID perhe. Tämä on todella pitkä ja monisanainen ja ei kovin mukava. Tai voit saada kaikki elementit jotka ovat p tag. Joka toimii liian JavaScript. Mutta emme koskaan oikeastaan ​​osoitti voit syntaksin liikaa. Mitä näytimme oli jQuery. Niin että koko valitsin sinne, että ilmaistiin JavaScript vain saa lauhtuu tämä erittäin mukava dollari allekirjoittaa hashtag perhe. Ja $ p, vain jos se on niin. Jos haluat valita kaikki p tagit sisällä perhe, laitamme tilaa näiden kahden välillä. Ja nyt, saamme kaikki p Tunnisteet sisällä perheen. Ja tutulta? No, Angela puhui CSS valitsimet. Anna minulle yksi sekunti. Ja niin, jotta voidaan valita elementin, käytät vain samaa kuin sinä tekisit CSS valitsin. Jos laitat hash edessä sitä, se valitsee ID. Dot valitsee määrät sarjoittain. Jos sinulla on vain kyselemättä hash tai pisteitä, se valitsee ne tageja. Kysymyksiä. Kyllä? Yleisö: Kun käytämme piste meidän HTML, on se, että ei jQuery? JOSEPH ONG: Dot meidän HTML on JavaScript asia. Se ei ole jQuery asia. Miten te oppinut sen jQuery on käyttää. html. Ja sitten siirtää sitä mitä HTML tulee olemaan. Joten saan siihen vain Toinen todella. Joten miten teemme juttuja elementti kun olemme valinnut sen? Niin, että esimerkki valitsemalla elementti. Joten nyt haluamme tehdä juttuja siihen. Joten tässä tapauksessa, anna minun mennä takaisin edelliseen diaan. Se oli Bob ennen. Ja haluan muuttaa, että sisällä HTML Milo. Joten kehotan HTML-toiminto elementistä. Että HTML-toiminto on Menetelmä elementin. Ja sitten minä annan sen, mitä Haluan HTML olla. Ja se vain korvaa mitä sisällä että tag mitä annan sen. Kyllä. Kysymys? Yleisö: hashtag käytetään vain jQuery. [Äänetön] emme käytä sitä. JOSEPH ONG: Joo, aivan. Mutta älä huoli liikaa noin puhdasta JavaScript. Haluan vain te keskittyä siihen, miten voit tekisin sen kanssa jQuery, koska että tulee olemaan tärkeä osittain tietokilpailu. Oikea. Täsmälleen. Niin näet, että hashtag, jotta vastaa valita elementti ID keskellä takia hashtag. Hashtag tarkoittaa ID. Ja tämä elementti on tunnus keski. Niin, että osa valitsemme. Yleisö: [kuultavissa]. dollarin merkki hashtag [kuultavissa]? JOSEPH ONG: Niin no. Kysymys on voit käyttää. Arvoa. Ja. Arvo toimii vain osia jotka ovat tuloa. JQuery, se olisi . Val, ei. Arvoa. Joten menen pieni esimerkki siitä, että osoittaa kaikki tämä yhdessä toisessa. Mutta mielestäni tämä palvelee pieni pätkä järkevää ihmistä toistaiseksi. Haluatko muuttaa HTML, soittaa HTML menetelmällä. Kyllä. Yleisö: Voitko selittää menetelmä uudelleen? JOSEPH ONG: Eli menetelmä on vain toiminto, joka kuuluu yhteen, tässä tapauksessa yksi näistä DOM elementtejä, koska näet I valittu elementti ensin. Oikeastaan, anna minun käyttää hiirtä. Olen valinnut elementti ensin. Ja sitten pyysin tämän HTML toimiakseen, että se oli. Ja koska tämä toiminto kuuluu tämä asia, me kutsumme sitä menetelmää. Se on vain hieno nimi. Sano se uudestaan. Joten muistakaa, valitsimme elementti nyt. Ja kokosimme sen sisällä elementti muuttuja. Korjaa? Joten kun haluamme muuttaa HTML sisällä, koska se oli Bob ennen, et haluavat muutoksen tekstin Milo. Joten me kutsumme HTML. Ja me kerromme sen, mitä HTML sisällä että elementti pitäisi olla nyt. Ja niin se muuttuu sen Milo, koska annoin sen Milo. Yleisö: Niin he työskentelevät yhdessä. [Äänetön] JOSEPH ONG: Joo, joo. He työskentelevät yhdessä. Joten yksi heistä valitsee elementti ensin. Ja toinen ei jotakin. Kyllä. Yleisö: [kuultavissa]. Jos tämä menetelmä on erilainen kuin HTML sinulla on menetelmä yhtä todellinen. JOSEPH ONG: Joo. Se on eri menetelmällä. Se on eri menetelmällä. Ja voimme kattaa että vain toinen kun saamme esimerkin. Haluan varmistaa, että meillä nopeuttaa koska meiltä loppuu aika. Mutta olemme ajaa aika myöten nyt. OK. Cool. Joten jos haluat lisätä luokan, siellä Myös Add Class menetelmällä. Tämä on vain esimerkki siitä, mitä voit tehdä jQuery. Se vain lisää luokassa. Jos haluat poistaa sen, voit soittaa eliminoida. Se on vain yksi asia mitä voi tehdä. Joten lisää esimerkkejä, mitä voi tehdä. Joten voin vain laittaa sen alkuun näin? Nuorin eliminoida. Jos vain toteuttaa että JavaScript on alkuun minun tiedoston, tahdon, että toimii? Oikea. Koska keskellä ei vielä ole. Joten tämä ei tule toimimaan. Suoritusjärjestys. Se menee alkuun ensin. Mitä? Yleisö: Nuorin ei ole vielä olemassa? JOSEPH ONG: Joo. Nuorin ei vielä ole. Täsmälleen. Yleisö: Sanoit keskellä. JOSEPH ONG: Anteeksi. Nuorin ei vielä ole. Ja toinen asia on, etten ole sisältyvät jQuery tiedostoon kysyä script src. Niin se ei tule toimimaan. Oikeastaan, en tehnyt, että seuraavan dian, joka on tarkoitus korjata sitäkään. Mutta miten teemme tämän on Javascript on tapahtuma ajetaan. Joten mitä teemme on käytämme tapahtuma Handler, jotta näin tapahtuu. Ja niin minä valitse asiakirjan asetettava ensin. Sanon, OK, kun asiakirja on valmis, anna minun ajaa toiminto. Niin, että kaikki, että syntaksin avulla. Olen valinnut asiakirja. Nyt, kun asiakirja on valmis, suorita toiminto. Ja niin tänne, kun asiakirja on valmis, mikä tarkoittaa kaikkia HTML on ladattu, niin juoksen toiminto joka poistaa kyseistä tekijää. Ja nyt, kun juoksen tämän toiminnon että olen siirtynyt valmis, olen taata, että kaikki HTML sivu on menossa olemassa ensin. Kyllä. Kysymys? Yleisö: Mikä on tapahtuma avainsana sisällä toiminto? JOSEPH ONG: Niin, että tapahtuma avainsanan toiminto on vain parametri, joka saa siirtää toiminnon erilaisiin tapahtumiin. Se on vain jotain, että saat ilmaiseksi. Kun käytät näppäintä käsittelijät pset8, että tapahtuma voisi kertoa teille, Esimerkiksi, mikä avain painetaan. Tässä tapauksessa on valmis tapahtuma, se ei todellisuudessa ole super hyödyllinen. Mutta avain alas tapahtuma, se on enemmän hyödyllistä, koska saat tietää, mitkä , jota painoit hakemalla avaimen koodi pois, että tapahtuma esine. Korjaa? Onko järkeä? OK. Kyllä. Kysymys? Yleisö: Joten voitte laittaa komentosarjatunnus alemmas? JOSEPH ONG: Niin joo. Voisit laittaa käsikirjoitus tag alempana. Mutta sitten se vain tulee todella sotkuinen. Ja haluamme keskittää kaikki meidän koodin yhteen paikkaan. Ja tämä antaa meille mahdollisuuden tehdä se. Muista aiemmin sanoin siellä mukavampaa tapa varmistaa, että tekijät ovat sivulla ennen kuin suorittaa koodia? Ja tämä on vain mukava tapa olisit siinä. Yleisö: [kuultavissa]. JOSEPH ONG: Joo. Sinun olisi vielä, eikö? Koska muistan, myös Sinulle myös tiedosto sivun yläreunassa. Joten se tulee suorittaa ennen saat sivun alareunaan. OK. Joten voit myös lisätä eri tyyppi tapahtuman käsittelijät. Tämä yksi juuri käsittelee napsautuksella. Kun klikkaan nuorin sitten se ponnahtaa kuulutuksen. Tämä on vain erilainen tapahtuman tyypin. Toisin kuin valmiina tapahtuman, voit nyt Käytä click tapahtuma, kun saat napsauttaa elementin. Ja niin tässä tapauksessa, muista, click käsittelijä on kiinnitetty nuorin. Niin se vain tapahtuu, kun Olen klikkaa nuorin. Ja toinen, valmis tapahtuma oli liitetty asiakirja. Joten se odottaa asiakirjaa olla valmis. Järkeä? Mielestäni voin siirtyä eteenpäin. Kyllä. Kysymys? Yleisö: [kuultavissa]. tässä tapauksessa käytät [kuultavissa]. JOSEPH ONG: Niin, koska tässä tapauksessa, minun on odotettava nuorimmille elementti ruudulle ensimmäisenä Ennen voin liittää klikkaa ohjaaja se, minkä vuoksi laitoin sen sisälle asiakirjan valmis. OK. Ja seuraavaksi, joten tämä on iso esimerkki miten voit yhdistää kaiken. Tämä on vain muodossa validointi esimerkki olet nähnyt luento. Niin ota se askel askeleelta kuin käytte läpi tätä. Ja se on täysin OK. Lukekaa se ylhäältä alas. Minulla lomakkeen alareunassa. Kun asiakirja on valmis, pidän toimitettava käsittelijä muodossa siten, että kun lähettää lomakkeen, saan arvot sisällä jokainen näistä tuloa. Ja voin tarkistaa, jos se on tyhjä. Jos se on tyhjä, palaan vääriä, koska En halua lähettää lomakkeen, koska muoto on väärä. Jos salasana on tyhjä tai se on vähemmän kuin kahdeksan merkkiä, en lähetä muoto, koska se on myös väärä. Ja paluu väärä vain estää lomakkeen esittämistä ja menossa uudelle sivulle. Ja toivottavasti tämä on järkevää. Mielestäni te pitäisi kulkea tämä koodi askel askeleelta itse. Ja kun ymmärrät mitä valitse elementit ja tehdä juttuja siihen todella merkitsee, tämä tekee paljon järkeä sinulle. Kyllä? Yleisö: Mitä name = käyttäjätunnus tarkoittaa? JOSEPH ONG: Niin name = käyttäjätunnus ja name = password tarkoittaa vain sitä, katsokaa määrite riippumatta olet valinnut. Ja sitten, että on vastaamaan. Joten menemme rekisteröintiä. Ja sitten katsomme kaikki tulot ja rekisteröinti. Ja sitten haemme sellainen, jossa nimi määrite on sama käyttäjätunnus. Siten, että ensin valitsin valitsee vain käyttäjätunnus tulo. Ja että toinen valitsin valitsee vain salasanan yksi, koska nämä ovat nimensä attribuutteja asettaa mitä he pitäisi olla. Kysymys? Yleisö: Esittäessään, miten alaosa ratkaista yläosa? JOSEPH ONG: Niin, että koska tapahtumakäsittelijän. Joten odotamme esittää tapahtuman että saa potkut muodossa. Ja siinä kaikki, että on esitettävä. Miksi soittaa toimittaa sinne? Siinä sanotaan, kun lomake lähetetään, Saan esittää tapahtuman. Joten haluan vain siepata, että sekä suorita sitten tämä koodin sijasta. Kyllä? Yleisö: Miksi teillä on on toiminto tapahtumaan? Mikset voi vain [kuultavissa]? JOSEPH ONG: Koska JavaScriptiä on julistaa toimintoja. Juuri näin se toimii JavaScript. Sinulla on sanottavaa se menee ajaa toimintoa. Joten kerrot sen, että olet odottaa funktio tässä sijasta vain aaltosulkeita. Yleisö: Ja toiminto on mitä seuraa? JOSEPH ONG: Joo. Toiminto on mitä on sisällä aaltosulkeiden jälkeen että toiminto avainsana. Kyllä? Yleisö: [kuultavissa]. JOSEPH ONG: For esittää? Yleisö: Ei, funktion ilman tapahtuma. JOSEPH ONG: Joo. Joten ilman tapahtuma, voi olla, että. Jos et tarvitse tapahtuma, Sitten voit vain jättää sen. Mutta jos et, niin olet vain laittaa sen sinne. Kyllä. Nopea kysymys? Yleisö: [kuultavissa]. JOSEPH ONG: Joo. Koska mitä sinun tarvitsee tehdä, document.ready sanoo vain odota, kunnes kaikki HTML sivu latautuu ensin. Ja yleensä, haluat elementtejä paikallaan ennen kuin suoritat mitään koodia. Selvä. Meidän täytyy päästä Ajax. Meillä ei ole paljon aikaa. Joten hyvät ja huonot puolensa. JavaScript on helpompaa yrittää kirjoittaa jQuery. Mutta jQuery on eräänlainen hidas. Se on kuin PHP on hitaampaa kuin C, koska se on tulkittu. Ja jQuery on hieman hitaampi kuin JavaScript, koska se ei paljon asioita konepellin alle. Joten jos käytät jQuery, se on vain hieman hitaammin kuin JavaScript, vaikka se antaa teille mukavaa eleganssia. Ja lopuksi, Ajax. Toistaiseksi Ajax, et ole nähnyt Ajax kannalta pset7 vielä, koska kun teet, annat lomake lainaus. Se lataa uuden sivun. Joten saat tämän iso valkoinen salama sivulla kun taas Toinen sivu latautuu, oikea? Olisi todella mukavaa, jos ei ollut tämän flash. Kuten Facebook, jos vain selaa pohja, se lisää uutta sisältöä ilman virkistävä koko sivun. Joten jotain tällaista olisi mukavaa. Tämä on JavaScript-koodi vasemmalla puolella. Saat mitä on sisällä, että panos. Saat osakekurssit Yahoo! Ja sitten teet ison merkkijono, joka sanoo, OK, tämä on viesti, jonka haluan näyttää ruudulla. Ja sitten laitat että viestin sisällä Joidenkin HTML-elementti, joka saa näytössä. Niin, että kaikki, mitä täällä tapahtuu. Joten periaatteessa, koska tämä on kaikki JavaScript ja sinun ei tarvitse juosta enää PHP, tämä varmistaa että sivu ei päivity. Joten tämä on vain abstrakti ajatus että sanon täällä nyt. Abstrakti ajatus on, että jos teet sen kaikki JavaScript, sinulla ei ole sivu päivittyy. Mutta miten voit itse tehdä tämän? No, itse asiassa, puhutaanpa Ongelmana tässä ensin. Ongelmana on JavaScript, toteutus on synkroninen. Joten joudut odottamaan yhden rivi loppuun ennen kuin suorittaa seuraavalle riville. Ja mitä jos aion yli Yahoo!, ja niiden palvelimet ovat todella hidas, ja se vie heidät kolmen sekunnin anna minulle takaisin, että osakekurssit? Kun osuin että hinnan mukaisesti, jos toteutus on synkroninen, koska se on tekijänä oletus, mitä se on vain aikoo tehdä, on selain on menossa pysähtyvän varten kolme sekuntia. Ja te ette voi tehdä mitään kun se saa tietoihin. Se tulee jäädytetään. Ja se on huono. Et halua käyttäjän on jäädytetty sivun. Korjaa? Se on vain huonoa. Kaikki ovat samaa mieltä? Jos selaat Facebook ja sen jäätyy ja et voi tehdä mitään, sinun saada todella turhautunut. Joten ratkaisu on teemme jotain asynkroninen sijaan. Joten kaikki tämä asynkroninen asia sanoo on, aion kysyä tätä URL joitakin tietoja. Ja sitten aion jatkaa. Olen juuri menossa pitämään täytäntöönpanosta mikä koodi, joka oli sen jälkeen. Ja sitten kun tämä data on valmis, niin minä käsitellä sitä. Siinä kaikki sanoo. Yleisö: Ajax vain tekee koodi asynkroninen? JOSEPH ONG: Se on asynkroninen tapa Haetaan tietoja. Joten ensimmäinen asia Ajax se antaa minulle saada tietoja ulkoisesta verkkosivuilla. Ja toinen asia on se varmistaa että minun sivu ei pysähdy, kun olen hakemalla tietoihin. Se on asynkroninen osa sitä. Koska se menee jonnekin muualle, koska sanon jatkan taas se hakemalla että tiedot, jotka tekee sen asynkroninen. Pidän täytäntöönpanosta. Niin pitää tämä asynkroninen ajatus mielessä. Ja minä näytän sinulle, mitä ero on. Synkroninen versio on vasemmalla puolella. Asynkroninen versio on oikealla puolella. Katsoa numeroita mitkä vaiheet vastaa sitä, mitä suorittaa kullakin rivillä. Tuolla, hälytys näkyy ensin. Koska saada osakekurssit Yahoo! kestää kolme sekuntia, se Torit kolmen sekunnin ajan. Ja sitten se hälyttää hinta jälkeen, kun kyseiset kolme sekuntia. Joten nyt, että hälytys osoittaa up tuolloin - kolmen sekunnin sisään Ja sitten se hälytykset jälkeen. Niin se vain menee askel askeleelta. Se on kuin mitä te hyväksyisi, oikea? Tahdistamattomien toteutus, hereillä ensin. Sitten menet pois tähän URL-osoitteeseen. Ja te sanotte, aion vain pyytää tietoja. Ja sitten aion käsitellä sitä myöhemmin. Joten se välittömästi suorittaa seuraavalle riville, kun olen tehdä, että asynkroninen pyynnöstä. Joten 0,001 sekunnin, näet hälytys hi. Suorita tämä tehtävä, hälytys bye. Ja koska tein lupauksen, että minä käsittelisi tietoja myöhemmin, mitä tapahtuu, on kun että tiedot tulee takaisin kolme sekuntia myöhemmin, niin juoksen, että toiminto, joka minulla on tuolla. Kyllä? Yleisö: Voisitko tarkentaa tai selventää, mitä Ajax tarkoittaa? JOSEPH ONG: Joten Ajax on niin, että jos minä tarvitsevat tietoa, kun olen verkkosivuilla ja minä eivät halua päivittää sivua, sitten Käytän tätä tekniikkaa kutsutaan Ajax. Että pohjimmiltaan tarkoittaa vain sitä, mene ja nouda tietoja toisesta verkkosivuilla. Ja tehdä se niin, että vain ei pysähdy minun web-sivulle. Yleisö: Niin on, että luontainen osa JavaScript tai jQuery? JOSEPH ONG: Eli joku kirjoitti tapa tehdä Tässä JavaScript kauan sitten. Yhdessä vaiheessa se ei ole. Ja niin joku keksi tätä tekniikkaa jotta ihmiset voisivat pyytää näitä tietoja tällä tavalla. Ja he kirjoittivat joitakin juttuja tehdä sen sinulle. Ja jQuery vain antaa sinulle tämän erittäin mukava tapa tehdä se Tämän $. saada toiminto. kysymyksiä? Voin vastata kysymyksiin Ajax jälkeenpäin liikaa. Olen täällä. Joten se nyt meitä hakemaan tietoja ilman päivittämällä sivun. Ja se nyt meitä tekemään tämän asynkronisesti, että ei jäädy sivulla. Liian pitkä, ei lukea, jos se selitys oli liian pitkä sinulle. Joten lopuksi, cross-site komentosarjahyökkäyksiin. Näimme tämän kanssa Zamyla. Jos minun tietokannassa joku on tämän nimen, mikä on tämä kirjoitus tag, ja minä on joitakin koodi minun tulostettu sivu pois ihmisten nimet peräkkäin, tai minulla on JavaScript-koodia, joka lisää Tämän nimen sivun, mitä HTML saa tuotetaan? No, minä tulostaa HTML-koodia. Olen tulostaa kaikki nämä koodit. Saan osaan, jossa olen tulostus ulos kavereiden kanssa. Tulostetaan Lauren ulos. Se tulostaa Milo ulos. Ja sitten minun nimeni tietokantaan on käsikirjoitus viesti unflattering Facebook status. Koska asetin tämän kyseisen sivun koska se näyttää JavaScript, kun Tämän sivun sisältö lähetetään käyttäjälle, se saa toteutettiin JavaScript. Ja niin tämä on mitä me kutsumme cross-site scripting hyökkäyksen. Joku laittaa ilkeä tiedot tietokanta, joka voisi vastata joitakin ylimääräisiä merkkijono tai JavaScript-merkkijono. Ja kun se menee painoon ulos sivu tällä tavalla, niin mitä tapahtuu on, että huono-koodi saa suorittaa että en aio se toteutettu. Ja siinä kaikki cross-site komentosarjahyökkäykseen on. Ja miten kiertää tämä on kuin Zamyla sanoi. Sinä vain kääri asioita HTML erityistä merkkiä. Ja tämä HTML erityistä merkkiä on PHP toiminto, joka estää tämmöinen asia tapahtumasta sinulle jos sinulla on ilkeä string tietokantaan. Se vain pakenee sitä niin, että se ei saada tulkita HTML. Se korvaa pikku suluissa mitä me kutsumme yhteisöjä. Ja menimme tänä luento liikaa. Joten mielestäni te pitäisi olla hyvä käsitys siitä. Kysymyksiä? Kyllä. Yleisö: Joten miten [äänetön]? JOSEPH ONG: Sano se uudestaan. Yleisö: Miten olisi monitori - JOSEPH ONG: Oikea. Joten sinulla on jotain, joka sanoo, kun Olen rekisteröityä, kirjoita nimeni. Olen vain kirjoittaa, että alalla, nimeni on riisuivat post unflattering Facebook aseman lähellä komentosarjatunnus. Ja että vain saa panna tietokantaan, koska en voi sanoa joku maailmassa ei ole nimeä jossa vasen nuoli sitä tai sana script siinä. Joka ei oikeastaan ​​mitään järkeä. Joten minun täytyy vain varmistaa, että voin puhdistaa juttuja ennen kuin tulostaa sen ulos sivulle. Yleisö: Niin HTML erityisluottokortteihin estää koodit? JOSEPH ONG: Joo. Joten se ei estä koodit. Se vain varmistaa, että koodit eivät saa tulkittava siten, että HTML-tai - joo. Se vain tulee esille, mitä se todellisuudessa on. Selvä. Joten se oli tietokilpailu tarkastelun. Cool. [APPLAUSE]