DAVID MALAN: Selvä. Tämä on CS50, ja tämä on viikon lopussa yhdeksän. Se on ollut tornado yli viime päivinä. Ja ongelma asettaa seitsemän, jos olet polvi syvälle se, toteuttaa siellä melko vähän uutta, että on siellä. Mutta katsotaanpa, jos emme saa selville kaikki yhdessä täällä lyhyesti sitä ennen ajautuminen ulos vuonna vielä toiseen suuntaan ja näkeminen missä muualla voimme mennä. Joten toistaiseksi, olemme puhuneet HTML. Olemme puhuneet CSS. Olemme puhuneet PHP. Olet alkanut kokea SQL. Tänään me puhua vähän noin JavaScript. Mutta miten kaikki nämä erillisten kielet sopivat yhteen? Joten puhuimme viime viikolla käsite, jonka palvelin. Joten haluan vain tehdä tämän suorakulmion kuten web-palvelin täällä. Ja web-palvelin palvelee varmasti tiedostoja. Ja jotkut näistä tiedostoista voi olla HTML-tiedostoja. Joten yksi niistä asioista, jotka www-palvelin voi sylkemään voisi olla tiedosto, joka me vain vetää näin sisältää joitakin HTML. Joten maallikon termein, mitä ei HTML voit tehdä? Yleisö: Page hyvältä. DAVID MALAN: OK, tee sivun hyvältä, vaikka mielestäni olen osoittautunut että muuten. Joten HTML ei anna sinun asetella sivut rakenteellisesti, ja sen avulla voit tavallaan esteettisesti merkitä sivun, merkitse staattista sisältöä, niin että sinulla voi sitten katsella sitä selaimella. Mutta se on avain. Se on staattista sisältöä. Kirjoitat sen, voit tallentaa sen, ja sitten lähettää sen. Ja web-palvelin toimii sitten se jopa kävijöitä. Mutta me tyylitellä asioita käyttämällä eri kielen kokonaan. Aloimme käyttää tyyliattribuutti tietyistä tageja. Ja tyyliattribuutti Tehkäämme asioita, kuten fontin kokoa ja väriä. Ja olet todennäköisesti alkoivat löytää, tai voit pian lopulliseen hankkeisiin mahdollisesti vielä muita ominaisuuksia, joita voit käyttää CSS. Ja niin maallikon termein, mitä todella niin ei CSS tehdä? Nämä ovat vain esimerkkejä niistä. Mitä se antaa sinun tehdä sitä HTML ei näytä siitä, mitä olemme nähneet tähän mennessä? Yleisö: Määrittele tyylejä itse. DAVID MALAN: Määritä tyylit itse. Joten määritellä asioita, kuten luokkiin, kun ovat voineet kokea, tai yksinomaan tunnistaa solmut asiakirja niin että voit tyylitellä niitä. Mutta tarkemmin, sanoisin, että CSS todella voit ottaa asiat viimeisen mailin ja voit määritellä paljon tarkemmin estetiikka, kun taas HTML suurimmaksi osaksi avulla voit jäsentää sivuja. Ja vaikka jotkut oletusarvot, kuten näimme tag Nimikkeen tunniste, joka karkeasti ottaen tehnyt asioita iso ja rohkea. Se on aika yleinen määritelmä tag - iso ja rohkea. Mikä fonttikoko on? Minkä värinen se on? Kuinka rohkea on? Ja CSS voit enemmän hienoksi virittää tuollaista. Sekä ulkoasu, kuten jotkut teistä ovat nähneet. Ja suoraan sanottuna, CSS on vähän sotkuinen kieltä. Se on hyvin voimakas, että voit tehdä kirjaimellisesti minkä tahansa sivuston, että olet nähtävänä netissä tänään, mutta se on eräänlainen kipua niskassa. Ja jotkut teistä ovat takoi päätäsi vastaan ​​seinät jo vain tehdä jotain tyhmää kuten keskustan valikosta ongelma asettaa seitsemän, jos olet mennyt Siinä vaiheessa jo. Mutta ymmärtää, nuo asiat helpompaa ajan. Voit alkaa huomata kuvioita. Ja vielä, Google on ystäväsi eri tapoja, joilla voit ratkaisemaan tällaisia ​​ongelmia. Ja uskallan sanoa CSS ja HTML enemmän yleensä, voit ratkaista ongelmia paljon enemmän tapoja, jotka kaikki voisi hyvin hyvinkin olla oikea, kuin mitä voisi jokseenkin C, jopa nyt PHP tai JavaScript. On vain monia erilaisia tapoja antaa asioita. Mutta tämä alkoi saada sotkuinen, sanoimme. Juuri sellainen sekoittuminen HTML ja CSS kanssa tyyliattribuutti oli hieman huolimaton. Ja niin me sen sijaan sanoi, eräänlainen abstraktisti ottaen, että sinun pitäisi ainakin alkavat tekijä out your CSS todennäköisesti. Ei sinun tyyliattribuuttien mutta ainakin käyttää tyyliä tag sisällä mitä osa web-sivun? Yleisö: Head. DAVID MALAN: päähän. Tähän asti meillä oli vain otsikon ylös siellä, mutta voit myös lisätä tyyliä tag, ja voit laittaa CSS karkeasti ottaen kohti sivun yläreunassa. Mutta sitten otimme asioita askeleen pidemmälle ja me laskelmiin, että enemmän erilliseen tiedostoon. Ja niin nämä kaksi tiedostoa olivat jotenkin nyt liittyy. Ja se todellakin oli tunniste, joka teki sen. Ja mikä oli yksi kaikenkattava motiivit factoring tutustu CSS sitäkin? Yleisö: Uudelleenkäytettävyys. DAVID MALAN: Uudelleenkäytettävyys. Oikea? Olet ehkä nähnyt p-asettaa seitsemän jo että paljon sivuja, ostaminen sivu, myynti sivu, portfolio sivu, ovat luultavasti rakenteeltaan hieman samalla tavalla. On CS50 rahoitus-logoa ylhäällä jos olet päättänyt muuttaa sitä. Siellä footer sivujen alareunassa. Ja CSS voit sitten tekijä sitä se erilliseen tiedostoon niin, että jos haluat muuttaa jotain maailmanlaajuisesti poikki koko sivuston, voit todella vain muuttaa se yhteen paikkaan. Mutta on hinta, jonka maksat mahdollisesti laiminlyömällä pois laskusta CSS minun HTML-tiedosto erilliseen tiedostoon viitataan sen tag, joka näimme maanantaina. Mikä voisi haittapuoli olla tämän? Muistelen viikko sitten, kun olemme puhumme HTTP ja TCP / IP ja miten internet toimii. Jotain täällä? Yleisö: Se vie enemmän aikaa. DAVID MALAN: Se vie enemmän aikaa. Miksi? Yleisö: [kuultavissa]. DAVID MALAN: Joo. Joten se luultavasti vie vähän enemmän aikaa. Koska yksi, CSS on ilmeisesti ei samaan tiedostoon. Joten nyt sinun täytyy tehdä ei yksi, mutta kaksi pyyntöä. Ja jokainen näistä pyynnöistä kuten näimme Chrome ns tarkastaja, ja me katsoimme verkko-välilehti, kukin näistä tiedostoista vaatii yhden HTTP pyynnöstä, jonka näimme vie jonkin verran aikaa. Nyt, ehkä se ei ole paljon. Ehkä se on vain 20 millisekuntia. Ehkä se on 200 millisekuntia. Mutta ajattele sivulle, kuten Facebook, tai CNN tai Google, jotka ovat paljon suurempi kuin esimerkkien olemme Katsoin toistaiseksi. Nämä sivut voi olla kymmeniä tiedostoja, joista jokainen saattaa edellyttää lataaminen tiedoston. Joten asiat voivat mahdollisesti alkaa hidastua. Ja varsinkin näinä päivinä, kun me kaikki on matkapuhelimet taskussa ja Hidas internetyhteys, ottaa odota muutama millisekuntia, muutama enemmän millisekuntia ylimääräisiä tiedostoja voi todella olla hidasta. Latenssi on sana, joka kuvaa sellaista odottaa, että sinulla on, että sinä kokemus, kun odottaa joitakin tieto. Mutta on väärinpäin. Joten se ei ole kaikki tavallaan - se todellisuudessa on hieman kiikkua täällä. Pessimistinen nyt, mutta mitä selaimia voi tehdä jos he fiksu välttämiseksi niiden on pyydettävä sama styles.css tiedosto uudelleen voidaan tehdä mitä? Välimuistiin se. Joten välimuistia - C-A-C-H-E - yleensä tarkoittaa tässä vain säästää tiedosto pyysit ensimmäistä kertaa, ja tarkista välimuistin sitä. Tarkista olet tavallaan säiliöön, ja jos sinulla on jo kopio styles.css, vaikka jotkut muut sivun p-sarja, tai minkä tahansa sivuston, pyytää uudelleen, vain antaa Käyttäjä saman välimuistinsa. Älä vaivaudu sitä pyytää. Huonona puolena on, vaikka, kuten jotkut teistä ovat kompastua in p-set. Jos teet muutoksia palvelimelle ja menet takaisin selaimen ja olet lataa, joskus selain ei sinulle palveluksen ja ei häiritse uudelleen lataamista styles.css tiedosto koska nyt, mitkä ovat kertoimet että nämä tyylit, että Facebook käyttää tulevat muuttumaan tunnista tai päivittäin? Se on melko alhainen. He saattavat muuttua ajan myötä, mutta ei mennessä minuutti tai tunti. Joten temppu, vain FYI kun teet internetistä kehitys, on usein pidä Shift, esimerkiksi ja valitse lataa selaimessasi, ja se tyypillisesti kertoa selaimen reload kaiken, vaikka sinulla on jo sen välimuistiin. Joten jälleen, upsides ja haittoja, mutta ne kaikki lopulta suunnitteluun liittyviä päätöksiä. Joten nyt, emme vain Loppuun tarina. Jos minä nyt takaisin ja takaisin ja takaisin ja takaisin, aloimme esitellä ei vain HTML, mutta PHP. Joten maallikon termein, mitä ei PHP tehkäämme? Yleisö: [kuultavissa]. DAVID MALAN: Mikä tämä on? Yleisö: Esittele logiikka osaksi koodia. DAVID MALAN: Joo, käyttöön logiikkaa koodi. Joten se on totta ohjelmointikieli silmukat, ja muuttujat, ja toimintoihin, ja edellytykset, ja kaikki asioita olemme käyttäneet Paluumatkalla kun sillä tyhjästä. Ja PHP, olemme nähneet, voidaan käyttää joko komentoriviltä - se ei tarvitse olla mitään tekemistä kanssa web, vaikka se on todella sen alkuperä ja mitä se pyrkii olla hyvä ja edistä - mutta voit käyttää PHP pelkästään luonto siitä, että se on tulosta () toiminto, ja printf ()-funktiota, tai echo ()-funktiota. On rypäleterttuja tapoja voi tulostaa tekstiä PHP. Siksi voit käyttää tätä ohjelmointi kieli tulostaa täsmälleen mitä puhuimme ennen. Voit dynaamisesti HTML. Ehkä kaikki eivät sitä. Ehkä sinua kovasti koodin asioita, kuten header ja footer, ja logo, ja tyylisivut, ja kaikki tämä. Mutta jotain p-set seitsemän, jos olet manipuloimalla varastot ja osoittaa käyttäjän salkun, joka on menossa dynaamisesti muuttaa, voit varmasti käyttää PHP ja logiikka se antaa sinut ohjelmointikieli lähtö dynaamisesti Osajoukot sivun. Joten kun puhutaan dynaamisia verkkosivuja, tai Web-ohjelmointi, joka on mitä olet todella puhutaan. Käyttämällä kuten PHP tai asioita sanottu Python tai Ruby tai Java tai vielä muita kieliä, kyselyn tietokantaan usein, tai toiselle palvelimelle, ja sitten dynaamisesti sylkemään HTML. Nyt lopputulos, kuten syrjään, on että HTML useimmat sivustot, mukaan lukien p-set seitsemän, on luultavasti olemaan valtava sotku, jos sinä katsot lähde koodia selaimessa. Se ei ole iso juttu. Tässä vaiheessa, kun välitämme tyyli, välitämme tavaraa, että kirjoitat. Emme välitä juttuja että mitä koodia lähtöä. Joten älä ole huolissasi painuman , jos se on PHP, joka on todella syöttöä kamaa. Loppujen lopuksi selain ei välitä, ja ihmisen ei tule tarkastella alkulähteellä muutenkin. Meillä henkilökunta, esimerkiksi asioista Tarkastelemme PHP. Joten annan nopea esimerkki nyt miksi muuten tämä voi olla hyödyllistä. Joten suoraan sanottuna, en muista viimeksi kertaa käytin C ratkaista ongelma todellisessa maailmassa. Se oli luultavasti tutkijakoulun kun Tarvitsin käyttää kieltä, joka oli melko alhaisella tasolla ja antoi minulle tilaisuus tehdä jotakin erittäin korkea esittävien todella pelastaa mahdollisimman monta CPU jaksoa kuin pystyin, suurelta osin koska olin käyttäen valtavia tietomääriä, ja jokainen CPU sykli lasketa. Ja suoraan sanottuna, jopa asioita, kuten puhelimissa näinä päivinä ja muiden laitteiden jos sinulla ei aivan ole niin paljon muistia ja sinulla ei aivan ole niin paljon CPU, käyttäen nopeammin kielillä on edelleen houkutteleva. Mutta todellisessa maailmassa, kun vain halua heittää jotain ohjelmaa yhdessä analysoida joitakin tietoja, tai olet kerännyt koko joukko rekisteröinnit Joissakin opiskelijaryhmä ja haluat hyvin nopeasti automatisoida sähköpostiviestien lähettäminen yksi kerrallaan jokainen näistä Rekisteröijäksi aiot tavoitella korkeamman tason kielellä kuin C niin sanoakseni. Jotain PHP tai Python tai Ruby, tai puoli tusinaa muita, jotka ovat olemassa näinä päivinä. Mutta nämä kolme ovat luultavasti kaikkein trendikkäitä juuri nyt. Ja mitä tämä tarkoittaa, että voit avata ylös tekstieditorissa, kuten gedit tai Useimmissa mitään muuta ja sitten vain alkaa kirjoittaa koodia ilman huolta noin kokoamiseen, ilman todella murehtia muistin hallinta, pitäen mielessä kuitenkin, että hieman epäjärjestys tulee lopulta takaisin pure, jos tietokokonaisuus saa suurempi tai ongelma saa iso. Mutta mitä tämä merkitsee meille on seuraava. Anna minun mennä eteenpäin ja ajaa aapinen alkaen ongelma asetettu kuusi. Joten tämä on minun triestä-pohjainen toteuttamista että käytin iso lauta jossa Tein ei niin hyvin. Tulemme takaisin viikon kuluttua ja uudelleen ne, jotka eivät lopulta huipulla iso board meidän viimeinen luento. Mutta nyt haluan mennä eteenpäin ja vain ajaa minun ratkaisu tekstiä, ja teemme King James Bible, ja tässä sitä mennään. Joten ne ovat kaikki muka kirjoitusvirheet pois King James Bible. Ja minun Toteutus kesti puoli sekuntia yhteensä. Joten ei ole liian huono tässä tiettyyn tietokoneeseen. Mutta ajattele, kuinka paljon koodi Jouduin kirjoittamaan. Ajattele, kuinka paljon koodia sinun piti kirjoittaa. Ajattele kuinka monta tuntia olet viettänyt D-hallissa tai asuntolan tai missä todella koodaus jopa tätä ratkaisua. No, jos olen oikeastaan ​​korkeampi kuten PHP, huomioi mitä voin tehdä täällä. Ensinnäkin luulla, että tämä on sen sijaan jakeluasetuksesi koodi. Tämä on tiedosto nimeltä aapinen. Se on saatavilla osana nykypäivän jakelu-koodi. Ja aion heiluttaa kättäni eniten yksityiskohdista, mutta tämä on oikeastaan mielenkiintoinen esimerkki siitä, miten saatat portti kieli kuten C yli PHP. Olen kirjaimellisesti avasi kaksi tekstiä ikkunat, yksi minun C-version speller.c, ja olen juuri aloittanut kääntäminen se minun suunnata PHP ja kirjoittamalla sitä käyttäen lähinnä vastaavia tehtäviä. Joten jotkut näistä asioista ovat erilaisia. Näimme viime kerralla, että PHP ei käytä kuuluu aivan samalla tavalla. Se käyttää edellyttävät tyypillisesti, vaikka kuuluu käytännössä olemassa. Määrittele on hieman erilainen kuin # Define C, mutta se on miten teemme jatkuvasti. $ Argc käy ilmi olemassa PHP, joten olemme nähneet, että ennen. Nämä ovat vain muuttujia, jotka kaikki jotka alkavat dollarin merkkejä. Recall nämä ovat vain nippu kelluva pistettä. Niin pitkän tarinan lyhyesti, olet tervetullut selata tätä, jos utelias, tämä on lähes linja-for-line muuntaminen C-versio speller.c osaksi PHP. Ja voit tehdä tämän uudelleen puoli tusinaa muita kieliä. Mutta mikä on mielenkiintoista on tämä. Tai mitä rehellisesti masentavaa on tämä. Anna minun mennä eteenpäin ja kirjoita noin dictionary.php, ja väittävät, että olen menossa eteenpäin ja uudelleen toteuttaa Ongelma asetettu kuusi täällä. Joten ehdottaa, että tällä tiedosto, joka toteutetaan PHP, joten haluan avaan tageja niin. Annan itselleni maailmanlaajuisen muuttuja, $ koko saa nolla. Ja minä aion antaa itse tiiviste. Minä käytän hash table tämän asian. Miten voin julistaa hash taulukon PHP? Valmis. OK. Joten alkusulkumerkki loppusulkumerkki edustaa mitä PHP, kuten olemme nähneet? Array, mutta array, joka voisi olla tällainen taulukko. Assosiatiivisia array on tietorakenne, joka yhdistää avaimet arvoja. Nyt yksinkertaisin numeerisesti indeksoitu array, ne avaimet ovat mitä? Nolla, yksi, kaksi, kolme, eikö? Old school tavaraa takaisin C. Mutta se voi myös jouset kuten foo ja bar, tai Maxwell, eikä mitään muuta sellaista merkkijono. Joten en voi hyödyntää, että vain hetken. Anna minun mennä eteenpäin ja julistaa toimivat kuten - Tehdään kuormitus () ensin. Joten toiminto kuormitus (). Ja PHP on hieman erilainen, että kirjaimellisesti kirjoittaa toiminto, mutta et älä kirjoita palautuva. Aion mennä eteenpäin ja sanoa, että kuormitus ()-funktiota pitäisi ottaa argumentti $ sanakirja, vain kuten C-versio teki. Teen että muistista. Ja ehdotan, että olen aikoo tehdä tämän. En yksinkertaisesti aio tehdä foreach. Aion soittaa toiminto nimeltään tiedostoon (), kulkee nimissä, että tiedostoon, joka on muuttuja $ Sanakirjassa $ sana. Ja sitten sisällä minun silmukan täällä, olen menossa eteenpäin ja tallentaa minun $ Table että $ sana saa totta. Valmis. Hei, odota. Valmis. OK. Että on kuormaa ()-funktiota sanoa PHP. Nyt, miksi se toimii? Ja olen tavallaan huijausta täällä. Niin, yksi, foreach näimme lyhyesti viime kerralla. Se vain tarkoittaa, että voit kerrata yli array huolehtimatta kanssa i ja n ja plus plus, ja kaikki tämä. Sanakirja on tietysti tiedoston nimi, jotain iso tai pieni, kaksi sanakirjoja käytimme viime kerralla. Tiedosto on toiminto, joka avaa teksti tiedosto, lukee sen rivi riviltä, ​​ja ojentaa sinulle takaisin valtava, jokainen, jonka elementit on line Tuosta tiedostosta. Niin, että yhdistelmä fopen, ja fread, ja kun silmukka, ja fclose, ja kaikki tämä. Lopuksi, koska sana tarkoittaa vain sitä, että on muuttuja Aion saada jokaisen iteraation tässä silmukka. Joten lyhyt, tämä liner tarkoittaa tässä avata tiedoston, jonka nimi on sanakirja, muuttuja, kerrata yli se rivi riviltä, ​​ja joka kerta saat linja, myymälän muuttuja nimeltä sana, ja sitten tehdä jotain sanaa. Mitä haluan tehdä? Haluan laittaa sanan minun tiiviste. No, voin laittaa jotain minun hash table aivan kuten C hakasulkuja. Tämä on nimi minun tiiviste. Aion indeksinä että hash taulukko tässä paikassa. Joten ei haarukoida nolla, ei haarukoida yksi. Kannatin quote unquote jotain, mitä se sana on. Ja aivan kuten saatat olla omassa hash table työ triessä, juuri myymälä tehokkaasti totuusarvoarvoja epäsuorasti tai erikseen. Valmis. Olen tallentaa arvon true. Nyt on olemassa pari asiaa Olen tinkivät täällä. Teknisesti siellä tulee olemaan harmittaa uusi linja, / n, lopussa kukin näistä sanoista. Joten minun pitäisi varmaan soittaa PHP funktio kutsutaan chop (), joka aivan kirjaimellisesti hakata että pois. Ja minä itse tarvitse tehdä yhden asian. Pitäisi varmaan porrasväliksi kullakin iteraation, joten olen pitää seurata maailmanlaajuisesti, mitä se on. Ja suoraan sanottuna, ja tämä on yksi stupider näkökohtia PHP, jos olet käyttäen globaali muuttuja, tarvitset nimenomaan sanoa, että olet. Joten aion todella kirjoittaa maailmanlaajuisen $ Koko, globaali $ pöytä, ja nyt tehtäväni on valmis. Joten ole aivan niin yksinkertainen kuin ennen, mutta luultavasti kesti vähemmän aikaa kuin C versio, ehkä? OK. Joten nyt tehkäämme check ()-funktiota. Katsotaanpa, jos tämä ainakin otti tuntikausia, että se vei meidät C. So anna minun mennä eteenpäin ja julistaa tarkista funktiona. Vie väite sana, joka on oikein tulevat speller. Ja olen juuri menossa tarkistaa, jos muuttuja seuraavasti isset, taulukko kiinnike strtolower sanan - katsotaanpa tasapainoon kaikki minun suluissa - sitten palata totta. Else - se oli todella kova osa tätä ohjelmaa. Else, return false. Valmis. Se tarkistaa (). Nyt, miksi tämä toimii? No, yksi ohitin sanalla, joka on merkkijono. Kaksi, olen tarkkailun sisällä hash taulukko, joka kutsutaan $ taulukko. Olen pakottaa sen pieniksi soittamalla funktio melko samanlainen tolower () vuonna C, mutta tämä ei koko sana, ei yksittäinen merkki. Ja jos se on asetettu, toisin sanoen siellä on asetettu arvo, toisin sanoen, jos se on totta, niin kyllä, tämä on sana. Koska laitoin sen sinne kuorman kanssa (). Ja jos ei, aion palata vääriä. Nyt toiset ovat helppoa. Funktion koko (), miten voin tehdä tämän? Olen lähinnä palaavat $ kokoa. Mutta minä teknisesti täytyy tehdä tämän Harmillista. Ja oikeastaan ​​jopa kuulla, olin leikkaus yksi kulma liikaa. En todellakaan tarvitse tehdä maailmanlaajuisia $ taulukko. Mutta että on sanottu, purkaa). Purkaa () on hämmästyttävä. Toiminto purkaa (). Miten haluan toteuttaa purkaa ()? Valmis. OK. Joten purkaa (), muistin hallinta on täysin huolehtinut sinulle jotain PHP ja paljon korkeamman tason kielillä. Joten tämä on hämmästyttävä. Kuten miksi ihmeessä me viettänyt viimeiset kahdeksan plus viikkoa C kirjallisesti ilmeisesti todella hidas, todella aika vievää ongelmia kymmeniä tunteja Työn alla vyötä? No, yksi asia, tämä saattaa toimia hieno pieniä ohjelmia. Se varmasti nopeuttanut minun kehityksen aikaa. Mutta katsotaanpa, mitä tapahtuu todellisessa maailmassa. Anna minun mennä tähän hakemistoon pääteikkunaan. On aapinen. On hyvä huomioida syrjään, ja saatat ovat kohdanneet tämän ongelman asetettu kuusi tai ongelma asettaa seitsemän. Sinun ei ehdottomasti tarvitse end PHP tiedostoja. php. Jos laitat likoon ensin nopeudella hyvin alkuun, se on erityinen linja syntaksin, jolle on olennaista löytää ohjelma nimeltä PHP ja käyttää sitä tulkitsevat tämän tiedoston. Joten nyt kukaan ei oikein tiedä, että Olen käynnissä PHP-ohjelma. Voin käyttää sitä aivan kuin se oli jotain koottu C. Mutta tässä on asia. Oikeastaan, tehdään tämä uudestaan. Dropbox/pset6 /. On aapinen. OK, 0,44 sekuntia. Se sai nopeammin tällä kertaa. Nyt mennään osaksi PHP versio. Nice touch. Mutta ajatelkaa, kuinka paljon aikaa Säästin toimistossa tuntia. OK. Joten 3,59 sekuntia, mikä oikeastaan ei kuulosta tarkkoja myöskään. Mutta se johtuu pitkän tarinan lyhyesti, kun olet tulostaa valtava määrä tavaraa näyttö, että itse hidastaa asioita alas. Mitä se todella vei CPU Laite oli 3,59 sekuntia, vuonna Toisin kuin C, joka kesti 0.44 sekunnin viimeksi. Se on todella järjestyksessä suuruus eri. Joten missä on, että hinta tulee? Miksi se on niin paljon hitaampaa? Miksi PHP tehdä niin huonosti? Danielle? Yleisö: Sinun ei oikeastaan Käytä tiiviste. DAVID MALAN: En todellakaan Käytä tiiviste. Joten Olen sellainen teki. Joten se on assosiatiivinen array. Todennäköisesti jos ihmiset PHP ovat todella fiksu, ne käytetään alla huppu todellinen tiiviste täytäntöön moisesta C-tai C + +. Mutta. Joo. Yleisö: [kuultavissa]. DAVID MALAN: Joo. Joten jokainen toiminnot kirjoitin nyt - Oikeastaan ​​voi sanoa, että jälleen kerran vähän kovempaa? AUDIENCE: Jokainen toiminnot, jotka olet mukana on paljon enemmän täynnä kapasiteettia kuin - DAVID MALAN: Niin, että on hyvin totta. Siellä on paljon enemmän yläpuolella, että olemme ei todellakaan nähdä keskittymällä pelkästään dictionary.php, jonka minä vain kirjoitti. Sen sijaan siellä on koko tulkki menee taustalla. Todellakin, kun juoksin tätä ohjelmaa, se ei ollut käynnissä koottu nollia ja ykkösiä suunniteltu minun Intel CPU. Pikemminkin se oli käynnissä rivi riviltä PHP, joka näyttää täsmälleen like me kirjoittanut sen. Ja niin, kun käytät tulkita kielen, itse tehdä maksaa tämän hinnan. Se vie jonkin aikaa lukea tiedosto ylhäältä alas, vasemmalle oikealle, ja sitten suorittaa kunkin linja uudestaan ​​ja uudestaan. Nyt todellisuudessa, erityisesti verkossa, voit itse nopeuttaa tätä prosessia tallentamalla tulokset PHP tulkitaan. Ja että on järkevää Webissä, koska jos et ole yksi käyttäjä, kuten minut tänne, mutta 1000 tai 10000 käyttäjää, niin ehkä ensimmäistä kertaa tiedosto on näytetty se on hidas, mutta sen jälkeen se on paljon nopeampi. Mutta tämäkin taas on kaupan pois. Ja jotain tutkimustietoa set, tai edes jotain suurta, kuten Tämän käyttäjät lopulta alkaa tuntua, että hidastuminen. Joten lyhyt, tulkitaan kielet ovat hyvin muodissa, hyvin suosittu, ja rehellisesti ovat luultavasti kieliä pitäisi tavoitella, kun ongelmien ratkaisemiseen jälkeen CS50. Mutta ymmärtää, kuinka paljon olet todella itsestään selvänä alla huppu todella ohittaneet useita viikkoja hash taulukot, ja puita, ja yrittää, joita käytetään lopulta itse toteuttaa asioita, kuten alkusulkumerkki, hakasulkeen, jonka voimme nyt kiitollisena itsestäänselvyytenä. Joten katsomaan nyt Tämän internetsivuston yhteydessä. Ja mainitsin viime kerralla, että on olemassa nippu Superglobaalit PHP, joka eivät oikeastaan ​​merkitystä komentoriviltä. He enemmän merkityksellisiä käyttää PHP web yhteydessä. Joten käynnissä PHP web-palvelin, jotta tuottaa tavaraa kuten HTML. Ja me vilkaisi $ _GET ja $ _POST, ja siitähän automaattisesti käyttäjien input päätyy vain jos lähetät muodostavat tiedostoon päättyy. php web palvelimelle kuin laite. Mutta katsotaanpa lyhyesti $ _COOKIE Ja $ _SESSION. Maallikon termein, mikä on evästeen ymmärrät sen yhteydessä käyttämällä web? Yleisö: tiedosto tietokoneeseen. DAVID MALAN: Joo. Se on tiedoston käyttäjän tietokoneessa istutettu tahansa verkkosivuilla satut käymään. Joten kun menet Facebook, kun menet to bankofamerica.com, kun menet to google.com, kun menet lähes kaikki verkkosivuilla maailmassa näinä päivinä, lukien cs50.net, eväste on istutettu tietokoneeseen, joka on joko arvo tallennetaan RAM-muistia tietokoneeseen selaimen muistiin tai joskus todellakin tiedosto tallennetaan kiintolevylle. Ja mitä tallennetaan tyypillisesti, että tiedosto ei ole käyttäjätunnuksesi, ei sinun salasanan, tyypillisesti ole jotain herkkä ellei sivusto ei ole niin hyvä niiden turvallisuutta, vaan se on iso yksilöllinen tunniste keskuudessa muita asioita. Se on iso satunnaisluku istutettu teidän tietokoneeseen, mutta et voi ajatella niin eräänlainen virtuaalinen käsi leima kuin suoraan klubi tai jokin huvipuisto, että mahdollistaa henkilöstön, omistajien, jotka palvelu, muistaa, kuka olet. Joten jos iso satunnaisluku on kuin 12345678, vaikka se on tietysti ei liian satunnainen, ajatella, että käsi leima, että kun käyt facebook.com ensimmäistä kertaa, ne leima että numero käteen. Ja sitten, koska puhut HTTP, voit on selain, ja koska Facebook ilmeisesti puhuu samaa kuin web palvelin, HTTP sanoo, että milloin myöhemmin käy facebook.com, onko se toinen myöhemmin, tuntia myöhemmin, vaikka seuraavana päivänä, niin kauan kuin et ole nimenomaisesti kirjautunut ulos, joka tehokkaasti on kuin käsien pesu. HTTP sanoo sinun pitäisi esitellä käsi leima aina palata että verkkosivuilla. Mitä Facebook sitten ei on ne katsoa, ​​että käsi leima ja he sanovat, oh, 123456789. En tiedä ensi silmäyksellä, että tämä on David Malan Cambridge, Massachusetts, mutta ne voivat tarkistaa tietokanta ja sanoa, oh, henkilö jonka tietokone istutimme 123456789 on David Malan Cambridge, Massachusetts. Näytetään, että käyttäjän niin hänen profiilia sivu tai hänen News Feed. Mutta on ongelma, jos tämä Näin web todellakin toimii. Katsotaanpa katsomaan nopea esimerkki. Katsotaanpa itse mennä sanoa facebook.com. Mutta ennen kuin voimme mennä sinne, anna minun mennä eteenpäin ja avata Chromen Tarkastaja täällä. Anna kun katson verkon välilehti. Ja nyt mennään eteenpäin ja kirjoita vuonna https://facebook.com. Ja olen tekemässä, että niin, että emme näe kaikki nämä ohjaukset ja jätteiden aikaa etsimässä läpi nuo. Minäpä enteriä. Selvä. Näemme koko joukko pyyntöjä. Siellä tulee Facebook. On koko joukko tiedostoja. Ja tässä kohden minun mainita latenssi viimeisen kerran, se paljon HTTP-pyyntöjä. Mutta ensimmäinen on luultavasti mielenkiintoisin. Joten selaa täällä, ja Minä suurentaa toisessa. Tämä tulee olemaan eräänlainen sotku, mutta katsotaan. Facebook lähettää meille koko joukko tavaraa. Mutta hei, mielenkiintoista. He istutus ole yksi, vaan neljä käsi postimerkkejä päälle käteni täällä. Set-evästeen Set-evästeen, set-evästeen, set-cookie. Ja on muutamia ominaisuuksia täällä. Kaikki heistä mainita muutamia Tällainen päättymistä. Ja näyttää siltä, ​​Facebook toivoo muistaa minut vuoteen 2015 saakka. Niin, että oletettavasti aika, jonka Minun täytyy kirjautua ulos tai he vain automaattisesti olettaa, olen ole tulossa takaisin. Niin, että on todella kunnollinen aikaa. Ja joitakin muita asioita tapahtuu täällä. Tämä eväste näyttää väkisin Poistetaan sanomalla se päättyi vuonna 1970 ennen evästeet olemassa. Joten selain on juuri menossa olettaa OK, se on kuin käsien pesua leima. Mutta nyt kun minun selain tekee myöhempi pyyntö - anna minun mennä eteenpäin ja tehdä tämän uudelleen ja uudelleen. Nyt haluaisin siirtyä takaisin top pyynnöstä ja mene alas täällä, pyyntöotsikoihin. Huomata tämän. Joten nyt olen alla ole vastaus otsikot, mutta huomaa sanoo pyyntöotsikoihin. Ja huomaan että selain osana pyyntönsä syönnin jälkeen reload on lähetetään ainakin seuraavat tietoa. Ei set-evästeen, mutta evästeen. Joten tämä on linja, HTTP-otsikon niin puhua, jos selain on eräänlainen ja ilman minun tietämättä esittää käteni Facebookin tarkastusta. Joten nämä evästeet voivat olla käytössä niin mitä? Muistaa, kuka olet, tai muistaa miten monta kertaa olet ollut siellä, tai oikeastaan ​​mitään. Joten tässä on counter.php. Ja haluaisin suurentaa fonttia. Ja joka kerta kun päivittää tämän sivun, huomaat se muistaa kuinka monta kertaa Olen ollut siellä. No, se ei ole kaikki, että vaikuttava. Katsotaanpa vain sulkea kyseisen välilehden, ja nyt mennään takaisin http://localhost/counter.php. Sepä mielenkiintoista. Se vielä muistetaan, jopa vaikka olen suljettu välilehti. Ja suoraan sanottuna, jos suljen selaimen, jos ne toteutetaan oikealla tavalla, I voisi silti muistaa, että tämä käyttäjä on kuka hän oli ensimmäinen kerta, ja vain kerran menen Chromen valikon, joka tänne on täällä, ja siirry Historia ja valitse Poista selaustiedot, kuten jotkut teistä saattaa olla Aiemmin vain silloin tulevat evästeet tosiasiallisesti poistetaan aikana web kehitystä. Joten, jos menemme - Katsotaanpa läheltä gedit täällä. Ja jos menemme nyt tähän tiedostoon. Anna minun mennä meidän vhosts / localhost / julkinen, ja anna minun tehdä counter.php. Huomaa, että tämä on melko yksinkertainen ohjelma. Se on melko yksinkertainen sivusto. Joten tiedoston alkuun on vain kommentteja. Mutta tässä on uusi linja, että saatat nähneet jo p-set seitsemän, session_start (). Tämä on linja PHP koodia, joka lähinnä kertoo web-palvelin, jotta Muista leima kädet ja tehdä Muista tarkistaa käsin postimerkkejä. Siinä kaikki, että linja ei, ja se ei kaikki tämä prosessi meille. Sitten huomaa Olen juuri saanut kaksi haaraa täällä. Jos laskuri avaimensa tämän erityinen globaali muuttuja nimeltään $ _SESSION On asetettu - toisin sanoen, jos siellä on jotain arvoa siellä - Mennään sen ja tallentaa sen paikalliseen muuttuja nimeltä $ laskuri. Else, nyt antaa $ counter oletusarvo 0. Nyt tässä on yksi osa PHP, joka on sekä siunaus että kirous. PHP on hieman huolimaton. Joten taas C, mitä laajuus laskuri on joko tässä tai täällä? Se olisi rajoitettava niille aaltosulkeita. Arvaa mitä? PHP, se on olemassa jopa niiden ulkopuolella aaltosulkeita, täällä ja täällä, ja täällä, ja täällä, ja jopa alhaalla. Joten sanon tämä on siunaus siinä mielessä että sinun ei tarvitse ajatella niin kovaa kuin teimme viikkoa sitten. Mutta se on myös hieman kirous, joka missä käytät muuttujaa PHP, ainakin tällaisen ohjelman, se on maailmanlaajuisesti saatavilla parempaan tai huonompaan. Joten sinun täytyy pitää mielessä nyt, että teidän muuttujat voivat olla määrittelemätön. Olet ehkä määritellä niitä muualta. Mutta mitä aion tehdä lopulta? Aion säilyttää sisällä, että maailmanlaajuinen muuttujan arvo counter keskeinen tulos tekee laskuri plus 1. Joten tämä on vain aritmeettinen joka ei incrementation tuon laskurin. Ja se, että olen varastointia että arvo takaisin täällä on keino olennaisesti päivittää tietokanta Muista, että käyttäjä 123456789 on ollut täällä kaksi kertaa. Ja kun teen sen uudestaan ​​seuraavan kerran Lataa sivu, se tulee tarkistaa käteni leima ja sanoa, oh, Käyttäjä 123456789 on nyt ollut täällä kolme kertaa. Ja niin mitä PHP ja vastaavat kielillä tekevät meille on niitä mietitään miten ja missä ja kuinka kauan tallentaa arvot tähän erityiseen superglobal. Ja tämä superglobal seuraavan kerran käydä sivulla on tavallaan maagisesti Esitäytetyn veroilmoituksen, täynnä arvot olivat siellä viimeksi kävit, oliko se toinen sitten, viikko sitten, tai vuonna 2013 ja olemme nyt puhu noin 2015. PHP ja web-palvelin hoitaa kaikki tämä teille. Yleisö: [kuultavissa]. DAVID MALAN: muuttujat PHP ovat pohjimmiltaan aina maailmanlaajuinen ellet ilmoittaa ne sisällä toiminto, ja sitten he ovat paikallista aikaa toimintoa vain. Mutta koska en ole kirjoittanut toiminnot, ne ovat nyt tehokkaasti maailmanlaajuinen koko minun koko tiedosto tästä. Yleisö: Onko tapa jotta ne paikallisia? DAVID MALAN: Onko tapa saada ne paikallisia? Vain käärimällä ne toiminnot. Joka uusin versio PHP, voit tehdä tämän kanssa Nimetön toiminto. Mutta siitä lisää yhteydessä JavaScript. Mutta lyhyt vastaus on ei. Pidempi vastaus on kyllä. Nice. Hyvä tietokilpailu kysymys. Selvä. Joten lopuksi, sivu ei oikeastaan ​​aika yksinkertainen. Huomaa, että kun suljen PHP tilassa, muistuttaa että kaikki tätä kamaa alas Alla on vain menossa sylkeä ulos raaka selaimen. Joka on hieno, koska en halua lähettää Käyttäjä joitakin HTML, mutta haluan päivittää dynaamisesti, että HTML. Ja yksi tapa voin tehdä tämä on lajitella hyvin nopeasti pudota takaisin PHP tilassa, käytä alkusulkumerkki kysymysmerkki yhtäläisyysmerkki, ja sitten lähtö arvo counter. Tai jos tämä näyttää hieman arvoituksellisesti, tämä yhtäläisyysmerkki on oikeastaan ​​vain joitakin syntaktista sokeria tähän printf ($ laskuri). Mutta suoraan sanottuna, se on vain vähän ruma ja hieman harmittaa kirjoittaa. Joten PHP hienosti tarjoaa tätä ominaisuutta jossa voit vain sanoa sitä enemmän lyhyesti samalla tavalla. Joten mitä tapahtuu alla huppu? Katsotaanpa nopeasti katsomaan verkkoon välilehti täällä counter.php. Ja anna minun mennä eteenpäin ja ensimmäinen katsotaanpa poistaa evästeet. Katsotaanpa selkeä selailun tiedot vuodesta aikojen alusta. Nyt mennään takaisin tänne. Nyt lataa sivu. Ja olen takaisin nollaan. Että käteni leima on pesty, Olen nyt saada uuden evästeen. Tosin jos katson verkko-välilehti ja katso vastaus otsikot, huomaa että laite lähettää minulle evästeen, jonka nimi on hieman mielivaltaisesti, vaan eräänlainen kohtuullisesti, PHPSESSID. Ja se lähettää minulle todella iso satunnaisluku. Se ei ole aivan numero. Se ei ole aivan heksadesimaali. Se on jonkinlainen aakkosnumeerinen merkkijono, mutta oletettavasti se on satunnaista. Ja se on käsi leima niin puhun, olen viitaten. Samaan aikaan, jos valitsen uudelleen ja sitten katsokaa tämä toinen rivi toinen pyynnöstä, huomaa nyt, että pyyntöni otsikot ovat PHPSESSID vastaa tähän, ei set-evästeen, mutta vain evästeen. Ja se on minun selaimen esitys kädestäni leima. Joten nyt teaser, niin jutellaan lisää tästä viikon tai niin, mutta millä tavalla tämä tekee sinulle haavoittuvia, Facebook-tilin haavoittuva, ja muut tällaiset Tilit haavoittuva? Yleisö: Jos joku on evästeen. DAVID MALAN: Joo, jos joku on evästeen. Siis todella, aivan kuten jotkut teistä ehkä kokeillut kuten klubin tai huvipuisto, jos yrität jotain näin kopioida leima, vaikkakin taaksepäin toiseen henkilön käsi, ja sitten hän esittelee sitä omaa, jos se todella ei näytä identtisiä, 123456789, sitten web Palvelin on ilmeisesti juuri menossa luottaa siihen, että käyttäjä on sinun. Ja tämä on todellakin olennainen uhka tahansa käytät evästeet koska jos joku vain parodiat niin Kattava evästeen, lukuja, mitä se on joko todella kopioimalla katsomalla tietokoneen ja on kuin, OK. David eväste on JJ3JIK ja niin edelleen, ja sitten he fiksu tietää miten tavallaan lähettää manuaalisesti että evästeen selaimen tai Ohjelman he kirjoittavat, he voisivat täysin kirjautua verkkosivuilla kuin sinä. Se ei ole niin vaikea teeskennellä joku muu ellemme uudelleen p-sarja kaksi, joka esitteli mitä? Yleisö: Salaus. DAVID MALAN: pieni vähän salauksen. Yksinkertainen salaus, ainakin Standard Edition, mutta Crypto kuitenkin. vähemmän. Joten se kääntyy pois, jos salata kaikki nämä otsikot käyttämällä jotain, Nyt ehkä tietää enemmän tuttavallisesti kuin SSL, secure socket layer tai https:// URL, sitten kaikki nämä asiat olemme olleet vilkaisi ovat todella salattu, mikä tarkoittaa, että se on kuin sinä ei voi lukea käsi leima. Vain facebook.com voi tai google.com, tai tässä tapauksessa laite voi lukea, että käsi leima. Traagisesti vaikka, ja jälleen, tämä on liiankin tarkoituksenmukaisia ​​NSA juttuja myöhässä, vaikka SSL on särkyviä. Ja se on oikeastaan ​​ole niin vaikeaa jopa halki että salaus. Ei niinkään halkeilua salaus, mutta huijaamalla selaimesta salauksen tietojen ennenaikaisesti. Mutta jälleen kerran, me kiusaa sinua kanssa, että ennen pitkää. Nyt vain pelkää. Se traagisesti eräänlainen totta. Selvä. Joten, jos tämä nyt jättää meidät? No, tehdään tämä. Mennään eteenpäin ja ottaa nopeasti teaser ennen kuin taukoa. Ja mielestäni me viipyä hieman pidempään tänään, mutta aiomme sukeltaa jotain täysin uutta ja seksikäs, joka alkupaloiksi vieläkin. Niin, että teaser. Joten SQL, aloimme puhua koskaan niin lyhyesti viimeisen kerran. Tulet todella saada kädet likainen joidenkin sen p-set seitsemän. Ja maallikon termein, mitä SQL - S-Q-L - tehdä sinulle? Mikä se on? Joo. Yleisö: Katsotaanpa käytät tietoja. DAVID MALAN: Joo. Se katsotaanpa käytät tietoja tietokantaan. Structured Query Language. Ja tämä on lähinnä ohjelmointikieli. On piirteitä siitä, että emme edes käytä luokassa. Mutta voit tehokkaasti määritellä funktioita. Niitä kutsutaan tallennettu menettelyt SQL. Mutta me jatkamme sen melko yksinkertainen ja vain käyttää johonkin perustoiminnot kuten haluttu data, lisäämällä tietoa, päivittää tietoja ja poistaa tietoja. Ja voit todella ajatella tietokannan kuten SQL-tietokannan, kuten juuri on Microsoft Excel. Koska SQL viittaa ihmissuhteisiin tietokanta, jossa suhteessa vain tarkoittaa taulukoita. Rivejä ja sarakkeita. Joten mitä voit laittaa taulukkolaskenta näin tai Google Docs, voisit laittaa SQL-tietokannan julistamalla pöytä. Nyt, miten voit itse käyttää nämä tiedot? No, komentoja tai kyselyitä näin. SELECT, INSERT, päivittää ja poistaa. Ja suurin osa, ne ovat neljä vain ainesosia sinun tehdä jotain melko voimakkaasti ongelmatilanteissa asettaa seitsemän. Nyt takaisin seuraavana päivänä, te todella vuorovaikutuksessa tietokannan musta ja valkoinen terminaalin ikkunasta vilkkuu nopeasti kuin tämä. Ja tietokanta olemme käynnissä Laitetta kutsutaan MySQL, joka on vapaan ja avoimen lähdekoodin tietokanta moottori. Jos Google ja lukea Wikipedia artikkelin, tiedät, että nimi on vähän siirtyminen joidenkin Linux-versioita. Maria tietokanta on oikeastaan haarukka niin sanotusti MySQL. Pitkä tarina lyhyt, Oracle osti MySQL. Oracle on iso yritys. Ihmiset ovat huolissaan siitä, että se olisi ei enää ole aivan niin avoimen lähdekoodin, joten tämä on vain kopio MySQL, joka on vielä vapaana, vielä avoimen lähdekoodin, ja asennettu Fedora Linux oletuksena. Mutta tämä on sellainen kipu kaula tutustua tietokanta tällä tavalla. Joten liitämme CS50 laitteen ilmainen avoimen lähdekoodin työkalu nimeltään phpMyAdmin. Vain sattumaa, että se on kirjoitettu PHP. Ei ole perustavaa laatua tarvitset PHP täällä. Mutta tämä on vain web-pohjainen työkalu, joka me ladata ilmaiseksi, asennettu laite, jonka avulla voimme olla graafinen käyttöliittymä, joka tutkimaan p-set seitsemän tietokanta joka luo uusia tietokantoja, sanoa oman opinnäytetyön jos olisit kuten, ja lopulta luoda dynaamiset sivustot kuten CS50 Rahoitus joiden avulla voit kyselyn tiedot ja päivittää tietoja dynaamisesti. Et täytyy käyttää vain yksinkertainen tekstitiedosto tai CSV. Voit itse käyttää älykäs tietokanta ohjelma, jotta voit suorittaa enemmän edistyneitä hakuja vain käsittelyssä kaiken läpi lineaarisesti. Niin esimerkiksi tämä on mitä annamme voit kättelyssä p-set seitsemän. Tämä on taulukko, jossa ilmeisesti ainakin kolme saraketta, joista yksi on käyttäjätunnus, joista yksi on hash, ja toinen, joka on tunnus. Mutta mielenkiintoinen asia, ja vain kammata pois yksi ajatus täällä, käyttäjätunnus on oletettavasti jo ainutlaatuinen, eikö? Tarkoitan, useimmat tahansa sivuston, jos sinulla on tunnus, siellä ei voi olla kahta caesars. Ei voi olla kahta Malans. Ei voi olla kahta jharvards. Sen ainutlaatuinen. Muuten he eivät tiedä mikä jharvard se todellisuudessa on. Joten mikä voisi olla motivaatio myös ottaa kolmas sarake vasemmalla siellä kutsutaan tunnus, joka näyttää numero, joka on samalla ainutlaatuinen? Se tuntuu hieman tarpeeton minulle ensi silmäyksellä. Miksi se voisi olla vakuuttava saada paitsi ainutlaatuinen käyttäjätunnuksia, mutta myös ainutlaatuisia numeroita? Yleisö: Ne voisivat olla sama salasana. DAVID MALAN: Ihmiset saattavat olla sama salasana, varma. Se voisi aivan tapahtua. Mutta jos heillä on tämä ainutlaatuinen käyttäjätunnus, I Väittäisin, että ei oikeastaan asia, koska jos he kirjoittavat heidän käyttäjätunnuksen, minulla on vain tarkistaa niiden salasanan, niiden hash viipymättä. Miksi muuten? Yleisö: Nopeampi haku. DAVID MALAN: Nopeampi haku. Miksi? Yleisö: ID on vain yksi. DAVID MALAN: ID on vain yksi merkki, tai tarkemmin sanottuna, se on numero, joten se on luultavasti 32 bittiä tai jotain. Sekä katsoo käyttäjätunnuksen, ilmeisesti Jason Hirschhorn tuolla ylhäällä on eräänlainen naurettavan pitkä, ja se tulee ottaa minua paljon enemmän aikaa string vertaa H-I-R-S-C-H-H-O-R-N, ja ehkä / 0 tai jotain, jotta etsiä Jason, eikä vain sanoi anna minulle käyttäjän numero kaksi. Se on 32 bittiä. Se on yksi INT että sinun täytyy vertailla. Ja todellakin, juuri siksi tietokantoja yleensä yksilöllisten tunnukset rivit niitä. Nyt mitä muut tietotyypit ovat siellä lisäksi INT ja ilmeisesti jouset näin? No, olla oikea, SQL-tietokantoihin, kuten MySQL, on CHAR kentät. Ja nieriää hieman harhaanjohtavasti ei ole yksittäinen CHAR. CHAR kenttä MySQL-tietokanta on yksi tai useampia merkkejä, mutta se on kiinteän määrän merkkejä. Niin esimerkiksi jos menen yli phpMyAdmin kuten olet ehkä jo, tai pian ongelma asettaa seitsemän, ja menen minun tietokantaan, ja vain huvin vuoksi, Luodaan uusi taulukko nimeltään testata vain kaksi saraketta. Minä sitten Siirry. Ja tämä tulee varsin tuttuja, varsinkin kun korjailla noin itse. Tässä voisin kirjoittaa ID luoda Uuden taulukon tyyppiä int. Mutta tässä voisin kirjoittaa käyttäjätunnuksesi uudestaan, että aiemmin taulukossa. Ja huomaa Minulla on koko joukko tyyppejä, joista valita. Ja sekin siksi phpMyAdmin on tavallaan mukavaa. Se on tavallaan itsestään opetuksen että olet voi vain eräänlainen kohta ja napsauta, ja tarkastella avattavasta valikot, ja päättelevät että mitä valtuuksia SQL saat. Ja todellakin, jos päätän CHAR, minä sitten on täsmennettävä pituutta tai kuinka monet arvot, kuinka monta MERKEILLÄ. Joten hyvin yhteiset arvot ovat asioita, kuten 255, mutta se on hieman pitkä. Yleisesti on kahdeksan käyttäjätunnusta. Mutta se on vähän pieni näinä päivinä. Joten tämä on suunnittelu päätös. Onko enintään 8 kirjainta, 32, 255, 1000? Se on todella sinun. Mutta CHAR kenttä on kiinteä määrä. Joten valitse liian vähän ja olet aika ruuvattu jos haluat pidemmän käyttäjätunnuksen. Valitse liikaa ja mikä Huonona puolena? Yleisö: [kuultavissa]. DAVID MALAN: Se on tuhlausta. Aivan kuten C, jos sinulla on isompi murikka muistia kuin tarvitset, olet vain tuhlaa aikaa ja tuhlaa tilaa. Niin vaihtoehtona on olemassa VARCHAR, joka ratkaisee tämän ongelman hoitoon pituus ei ole niin kiinteä pituus, mutta enimmäispituus, ja käyttämällä vaihteleva määrä MERKEILLÄ, joka sitten taipumus käyttää vain niin monta MERKEILLÄ kuin todella tarvitsevat. Se kuulostaa täydellinen. Miksi emme päästä eroon Char data kirjoita sitten? Mikä voisi olla haittapuoli käyttämällä VARCHARs, joka kuulostaa kuin se on kiva voittaa? Joo? Yleisö: [kuultavissa]. DAVID MALAN: OK, hyvä. Joten jos kaikki tietosi on sama pituus, mikä huoli? Yleisö: Koska olet tuhlaa tietojen kertomalla ne kaikki. DAVID MALAN: Joten jos kaikki tiedot on samanpituiset, vaikka Väitän että täsmennetään maksimipituus on VARCHAR ei poikkea määrittämällä tietty pituus CHAR jos tiedät, että numero etukäteen. Mutta on todella, ja minä tavallaan ote tuo vastaus todellisuus että siellä on vielä max, joka voisi olla ärsyttävää, varsinkin jos kohtaat henkilön nimi, joka on epätavallisen kauan, että olet päässyt ennakoida. Ja se on myös hieman tehottomampi todella etsiä VARCHARs kuin Toisin kuin etsiä MERKEILLÄ, erityisesti pitkiä pöytiä, jotka ovat paljon ja paljon tietoa. Niin tässäkin temaattinen on jälleen ei itsestään selvä valinta. Joten vain antaa sinulle tunteen muiden tietotyypit, jotka saattavat olla kiinnostavia joko p-asettaa seitsemän tai Tulevaisuudessa siellä INT. On bigint, joka on kuin pitkä pitkä. Se on yleensä 64 bittiä. On DECIMAL, jonka näet vuonna Harjoitus, joka on paljon puhtaampia vastaus ongelmiin me kohdatut kellua ja kelluva kohta epätäsmällisyys. Ja sitten on DATETIME. On kirjaimellisesti tietotyyppi, joka on näyttää vuosi, kuukausi, päivä, ja tunti, minuutit ja sekunnit. Mutta SQL-tietokantoihin myös asioita me kutsumme indeksit. Ja indeksi on jotain, Määritä luotaessa taulukkoa tehdä hakuja ja muu toiminta tehokkaampaa. Erityisesti on jotain kutsutaan PRIMARY indeksi voisit julistaa seuraavasti. Teimme näin sinulle käyttäjätaulu annamme sinulle. Mutta huomaa, jos olisin manuaalisesti uudestaan käyttäjätaulu täällä antaa se nimi käyttäjille. Olen jo määritelty tunnus. Määritin INT. Olen määritellyt käyttäjätunnuksen kanssa enintään 32 merkkiä. Mutta jos pidämme rullata tässä melko leveä ikkuna, ilmoitus siellä joukko muita asioita, joita en voi määrittää. Yksi, voin määrittää ominaisuuksia kuten, tiedätkö mitä, tämä INT olisi UNSIGNED. En halua negatiivisia lukuja, joten tehkäämme se UNSIGNED. Null ei ole merkitystä tässä, koska En halua jokainen käyttäjä on yksilöllinen numero. En halua sen olevan nolla. Mutta tämä on mielenkiintoista. Voin täsmentää, että tunnus on joko perusavain tätä tietokantaa, tai se on ainutlaatuinen, tai se on indeksoitu, tai koko tekstistä. Joten nykypäivän tarkoituksiin, pitkä tarina lyhyt, ensisijainen keino, että tämä on olla sekä käsitteellisesti ja teknisesti kentän että käytämme yksilöllisesti tunnistaa käyttäjät. Joten kun katsomme ylös käyttäjille, tämä on eräänlainen lupausta etsiä niitä lähinnä että yksilöllinen tunniste. Ja tietokanta varmistaa, että jos on käyttäjän numero 3, et voi fyysisesti aseta toinen käyttäjä kanssa, että sama numero 3. Tietokanta vain kieltäytyä Tallenna muutokset. Mikä on hyvä asia, koska voit suojautua itse. itse Vaihtoehtoisesti käyttäjätunnus. Joten toinen rivi, muistaa, on käyttäjätunnus kenttään. Joten toinen rivi tässä käyttäjätunnuksen, kuten teimme äärimmäisenä vasemmalla siellä. Joten mitä muuta voisi haluan täsmentää? En saa mukaan SQL, määritellä kaksi ensisijaisia ​​avaimia. voit määrittää yhteinen avainta, kun katsomaan molemmat kentät, mutta he eivät voi yksilöllisesti olla ensisijainen avaimia. Niin, että kuuloonkaan. Joten mikä voisi haluan valita? No, Unique on hengeltään samanlainen perusavain, jossa voit määrittää tämän pellon on oltava yksilöllinen, mutta se on ei tule olemaan yksi Käytän koko ajan. Ja emme aio käyttää yhtä kaikki aika mistä syystä uudelleen? Se on hitaampi mahdollisesti jos se on pitkä käyttäjätunnus. Se on vain ajanhukkaa. INDEX puolestaan ​​täsmennetään, että se on ei tule olemaan ainutlaatuinen, mutta haluaisin voit työskennellä your magic alla huppu tehdä nopeammin minulle etsi tällä alalla. Joten tämä luultavasti ei ole merkitystä täällä. Saat käyttäjätunnuksen, olin sitä mieltä, että Unique on hyvä vastaus. Mutta oletetaan, että teimme käyttäjille enemmän mielenkiintoinen kuin vain käyttäjätunnukset, hash, ja ID-numerot. Mitä jos antaisimme ihmisten täydelliset nimet? Mitä jos antaisimme heille osoitteet ja muut tiedot niistä? No, jos määrittää, että sarakkeen tietokanta on indeksoitu, se tarkoittaa, että MySQL tai Oracle, tai mitä tahansa tietokantaan käytät, pitäisi toimia sen taika ja käyttää jonkinlaista fancy tietoja rakenne kuin puu tai triestä, tai hash table, tai jotain takaamaan että kun etsiä tietoja käyttäen Valitse tästä nimenomaisesta kenttä - kuten näyttää minulle kaikille, että elää Oxford Street. Kyselyn niin. Jos olet määrittänyt etukäteen, että Haluatko indeksi tällä alalla, haut on paljon, paljon nopeammin. Jos et määritä indeksi, paras mitä voi tehdä on lineaarista hakua, jos se ei ole lajiteltu. Mutta jos olet määrittänyt INDEX, älykäs ihmisiä, jotka tekivät tietokanta - sinun kaltaisiasi ihmisiä, jotka tietävät nyt puita ja yrittää ja hash taulukoita - automaattisesti rakentaa tällaisen tiedon rakenne RAM varmistaa, että nämä haut ovat paljon nopeammin. Fulltext välin on samanlainen henki, mutta voit tehdä wildcard hakuja, kuten näyttää minulle kaikille, että asuu kaduilla, jotka alkavat O-kirjain jostain syystä. Voit tehdä yleismerkkihakuja niin. Tai enemmän pakottavia asioita, kuten näyttelyssä me jokainen, jolla on sana - näytä minulle jokainen, jonka nimi alkaa tietyllä kirjaimella. Voit etsiä avainsanoja tällä tavalla. Selvä. Joten, suunnittelun mahdollisuuksia siellä mahdollisesti. On toisia, että minä aalto käsiäni. On käynyt ilmi, että voit olla erilaisia ​​varastointi moottoreita. Ja tämä on enemmän mystistä kuin me tarvitsemme varmasti ongelma asettaa seitsemän. Oletuksena te käytät jotain kutsutaan InnoDB. Näet mainitsee tämän jossain phpMyAdmin käyttöliittymä todennäköisimmin. Mutta tiedän, että on olemassa muita suunnittelun päätöksiä, jotka ovat mahdollisia kiinnostusta tulla lopullinen hankkeita, jos teet jotain web-pohjainen. Mutta tehdään tämä. Mennään eteenpäin ja asettaa tämän ruudulla teaser tarina johon olet, kämppäkaveri, ja lasi maitoa. Otetaanpa kahden minuutin tai niin tauko tässä. Ja jos voit jäämään, nyt tulevat takaisin, näyttää vähän enemmän SQL, ja Sitten vähän JavaScript kanssa p-asetettu kahdeksan mielessä. Selvä. Joten, lähdetään Ajattelitko corner tapaus, joka voi helposti syntyä yhteydessä käyttäen tietokantaa, tai rehellisesti, jopa käyttäen reaalimaailman asioita kuten pankkiautomaatit saada rahaa. Joten tässä on jääkaappi. Kai olet saanut yhden liian asuntolan tai talosi. Ja sinulla on yksi kämppäkaveri, ja molemmat pidät maitoa esimerkiksi. Joten tulet kotiin luokan yksi päivä. Hän ei ole vielä takaisin. Avaat jääkaappi. Haluatko todella iso lasi maitoa. Ei ole maitoa. Joten mitä teet? Suljet jääkaappi. Nappaat avaimet. Menet ulos aukiolle. Ja saat jonossa CVS noita itse kassalle asioita, jotka aina kestää kauemmin kuin itse ottaa kassat. Oli miten oli. Joten sitten puolestaan ​​dot dot dot, sinun kämppis tulee kotiin ja hän Samoin on haikailu joillekin maitoa. Joten hän avaa jääkaappi, näyttää sisältä, ja oh, hitto. Ei maitoa. Joten hän päänsä ulos, sattuu menemään Muihin CVS, joka oli vain korttelin päässä jostain syystä, ja hän tai hän saa rivi ostaa maitoa. Samaan aikaan tulet kotiin, hän tai hän tulee kotiin, ja mitä sinulla lopulta on? Kaksi kertaa niin paljon maitoa. Mutta et todellakaan pidä maitoa niin paljon. Joten nyt sinulla on niin paljon maitoa, että nyt yksi heistä on juuri menossa epäonnistua lopulta. Joten tämä on todella huono ongelma. Oikea? Joten mitä on tapahtunut? Niin perusteellisesti, tämä on tavallaan of naurettava esimerkki. Mutta alla huppu, mitä meillä on ollut tapahtua täällä on teille molemmille tarkistanut tila palan muisti, jääkaappi. Molemmat valitsit valtion Joidenkin muuttuja. Te molemmat teki päätelmän että olet sitten toiminut. Mutta valitettavasti, kun kämppis oli kaupassa, tilan vuoksi muuttuja muuttunut, hän tuli takaisin ja nyt haluaa muuttaa tilaan, mutta se on jo muutettu hänelle tai hänen. Ja tietenkin, hän ei olisi mennyt liikkeeseen, jos he tietäisivät että olit jo matkalla. Niin todellisessa maailmassa, kuinka saatoit Tämän ongelman välttämiseksi, olettaen olet jääkaappi, sinulla on kämppäkaveri, ja te oikeastaan ​​kuin maitoa? Yleisö: Viestintä. DAVID MALAN viestinnästä. OK. Mutta miten voi kommunikoida? Yleisö: Jätä huomata. DAVID MALAN: Jätä huomata, eikö? Aina jättää setelityypistä fanit osoittavat. Kunnossa, niin aina jättää huomautuksen tai laittaa todella kuin riippulukko tai jotain jääkaapin, joka pitää kämppäkaveri tarkastamatta tilasta että muuttuja. Nyt, miksi tämä voisi johtua germane ongelma asettaa seitsemän tai automaateista. No, kuvitella maailman ATM jossa saatat pystyä mennä jopa ATM kone täällä, ja toinen ATM täällä. Ja tämä tapahtuu melko usein. Ja kai oli kaksi ATM kortit, , joka on mahdollista saada aikaan. Ja kirjaudut molemmissa koneissa tehokkaasti samanaikaisesti, toivottavasti Vaikka kukaan etsii. Ja sitten kirjoitat PIN suunnilleen samanaikaisesti. Ja sitten teet saldokysely kuinka paljon rahaa sinulla on. Ja oletetaan, että sinulla on 100 dollaria jäljellä tililläsi. Niin olennaisesti samanaikaisesti, sanoa yhden, nolla, nolla, kirjoita. Ja et toivottavasti saada takaisin rahaa. Mutta kuinka paljon rahaa voisi saat takaisin? Nyt tietokoneet lopussa päivä, varsinkin jos he puhuvat palvelimet, ei välttämättä tee asioita siinä järjestyksessä, joka on odotettavissa. Joten kai mitä tapahtuu, koska riippumatta verkon nopeus kysymyksiä siellä ovat, tai CPU kysymyksiä on olemassa, tai mitään sellaista, olettaa, että Ensimmäinen ATM tarkistaa saldosi ja näkee, oh, tämä henkilö on 100 dollaria. Mutta sitten saa hajamielinen koska ehkä varmuuskopiointi tapahtuu ja niin se on hidastumassa. Tai ehkä katsomalla, verkon yhteyden sai hieman hitaammin, koska tämä vain tapahtuu. He ovat fyysiset laitteet. Joten välin toinen ATM on kysyä saman kysymyksen. Kuinka paljon David on? 100 dollaria on vastaus. Mutta koska ensimmäinen ATM ei ole vielä lähettänyt viestin vähennyslaskua 100 dollaria, sekä Pankkiautomaatit ovat tarkastaneet pankin holvissa, nähdä siellä 100 dollaria siellä, ja nyt molemmissa koneissa mahdollisesti ovat menossa sylkäistä vastaus. Nyt tämä on hyvä sinulle jossain mielessä jos se, mitä pankki tekee lopulta on muuttaa määrää miinus 100 vuoteen asettamalla muuttuja vastaa oman pankkitilille 0, toisin tekemään miinus 100. Nyt pahimmassa tapauksessa pankin - tai paras pankki puolestaan he antavat sinulle 200 dollaria, ja pankkitilisi näyttää nyt negatiivinen 100 dollaria, mikä ei todellakaan hyödyttää sinua ollenkaan. Mutta kohta on, että tämä rotu edellytys kaksi kämppäkaverini saada maitoa tai kahdelle pankkiautomaattien yrittää saada käteistä ja muuttaa tilan holvissa samaan aikaan olemassa mitään aikaa sinulla on tietokanta. Nyt ongelma asettaa seitsemän, tätä kysymystä syntyy siinä mielessä, että jos ostat osuus Facebook varastossa, ja sitten Esimerkiksi voit ostaa toisen osuuden Facebook hyllyssä, sinun täytyy tehdä Päätös sellaisena kuin ohjelmoija. Jotta voidaan päättää, miten päivittää tietokanta, kertoimet olet menossa on yksi rivi kyseisen kannan, ja tämä on yksi tapa toteuttaa se. Ja olet menossa on yksi osake FB, joka on heidän osaketunnus Tämän käyttäjätunnuksen, tai tämän käyttäjän ID, yksilöllinen tunniste. Mutta sama tarina voi tapahtua täällä. Jos et SELECT SQL, kuten näet ongelmatilanteissa asettaa seitsemän, kun näet, oh, David on yksi osakesarja Facebook varastossa. Anna minun nyt vaihtaa tämän olevan kaksi osaketta, koska hän haluaa ostaa Toinen osuus. Mutta oletetaan David todella oli kaksi selaimen ikkunat auki, tai olettaa, että se on yhteinen tili, jossa on kaksi puolisot, ja molemmat yrittävät suorittaa Sama toiminto, sielläkin, mahdollista että päätös on tehty perustuu edellisen maailman tilasta - tilillä on yksi osake - ja molemmat ihmiset, tai molemmat palvelimet, nyt yritä sanoa kasvattaa sen kaksi osaketta. Mutta tässä tapauksessa, olet ehkä ladattu minulle rahaa sekä osakkeisiin, mutta kasvatetaan vain sen yhden kerran. Joten lyhyt, perusongelma täällä, kuten vitsi lähdöstä Huomioithan, tai laittaa lukon se on jos kaksi ihmistä, tai kaksi kierteet - muistelen scratch - voi tarkastaa valtion joidenkin muuttujan ja sitten yrittää muuttaa muuttujan, mutta nämä kaksi asiaa eivät tapahdu samaan aikaan, mutta voi saada keskeyttää Muiden asioita tapahtuu, tietoja voidaan päästä hyvin outo tila. Ja voit hyötyä tai voit kärsiä siinä mielessä rahaa esimerkki. Joten ongelma asettaa seitsemän, annamme sinulle tämä yksi rivi koodia, joka pitkällä tarina lyhyt, ratkaisee tämän ongelma MySQL. Tämä erittäin pitkä ohje, että ei edes mahdu yhdelle riville näyttö tässä takaa, että toiminta on mitä kutsutaan atomi. Se kaikki tapahtuu kerralla, tai se ei tapahdu lainkaan. Tämä hyvin pitkä lause ei voi saada keskeyttää osittain. Ja mitä se tekee on kirjaimellisesti mitä se sanoo. Laita johonkin taulukossa seuraavat kolme kenttää näitä tiettyjä arvoja, mutta kahtena avain, älä tee insertti. Tehdä päivityksen. Joten tämä on kuin tekee SELECT ja INSERT niin sanotusti samaan aikaan. Ja mikä on avain, joka on luultavasti saatettiin täällä? On käynyt ilmi, ja näet tämän ongelma asettaa seitsemän spec, koska olemme julistettu siellä olla yksilöllinen avain etenkin tähän pöytään siten, että et voi olla useita rivejä samalle käyttäjälle kanssa sama penniäkään varastossa symboli - tässä esimerkissä täällä, DVN.V on typerä penniäkään varastossa, että me viittaan spec. Koska olemme ilmoittanut sen olevan ainutlaatuinen, mitä tämä tarkoittaa, että jos yrittää lisätä kahtena peräkkäin, olet sen sijaan menossa päivittää sitä ilman joku muu ottaa tilaisuuden kohentaa maailman tilasta joko. Joten lyhyt, tämä takaa asiat ovat atomi. Yleisemmin kuitenkin, tietokannat kuten MySQL - ja sinun ei tarvitse tätä toimintoa varten p-asettaa seitsemän, mutta pitää se mielessä tulevaisuudessa - tukea mitä kutsutaan liiketoimia, jossa voit sanoa START TOIMENPIDEMAKSUT kirjaimellisesti. Voit sitten suorittaa kaksi SQL. Ja SQL-lause, kuten näet p-asettaa seitsemän, näyttää vähän jotain tällaista. Päivitä taulukkoon nimeltä huomioon. Säädä tasapaino sarake vastaa mitä tahansa Saldo-sarakkeen hetkellä on miinus 1000, jos niiden määrä, tilinumero, kuten käyttäjätunnus, on 2, ja sitten päivittää huomioon dot dot dot. Joten maallikon termein, mitä nämä kaksi kyselyt näyttävät tekevän vuonna reaalimaailman tunnetta pankki? Yleisö: siirtäminen säästöjä. DAVID MALAN: Aivan. Siirtämällä varoja yhden tilin muille. Ja tämä on toinen esimerkki, jossa olet todella haluavat nämä kaksi asiaa tapahtuu tai ei tapahdu. Et halua jotain saada niiden keskelle ja mahdollisesti sotket matematiikka, tai sotkea kuinka paljon rahaa sinulla on, tai kuinka paljon rahaa pankkiin on. Joten mitä todella mukavaa noin liiketoimista MySQL on, että sekä tietokannat yleisemmin, on se, että ne ja fiksuja ihmisiä, jotka ovat toteutettu nämä ominaisuudet selvittää, miten tehdä Varmista, että nämä molemmat asiat tapahtuvat tai ei ollenkaan. Ja jos olet todella aikeissa tehdä verkkosivusto, joka käyttää ihmisiä kampuksella, ihmiset todellisessa maailmassa, tekee jotain käynnistyksen merkityksessä, nämä ovat erilaisia suunnittelun päätöksiä, että tullut koskaan niin tärkeä. Muuten, voit alkaa menettää tietoja, menettää käyttäjille, tai pahimmassa tapauksessa olemme nähneet täällä, mahdollisesti menettää rahaa. Joten jälleen, siitä lisää Harjoitus seitsemän, sekä kenties joidenkin sinua opinnäytetöissä. Joten muuttaa, että kuva meillä oli hetki sitten vain yksi tapa. Joten haluan itse nähdä, jos voin - Ehei, että on mennyt. Siinä se on. Joten tämä on kun jätimme viime kerralla. Ja käy ilmi, aiomme nakata yksi asia taikinaan täällä - kieltä kutsutaan JavaScript. Joten JavaScript todella sopii tähän pala - ja en oikein jätä tarpeeksi tilaa, joten tämä ei ole nyt mittakaavassa. OK, tämä on todella säälittävää. OK, niin se on JavaScript. Selvä. Olen todella tekemässä sitä karhunpalveluksen. Selvä. Joten JavaScript on toinen ohjelma kieltä, ja meidän viimeinen, jos se auttaa vakuuttaa, että siellä ei ole paljon ja palopostit täällä. Joten JavaScript on myös tulkittu kieliin, joten et kääntää sen osaksi nollia ja ykkösiä. Olet vain ajaa sitä. Mutta mitä pohjimmiltaan erilainen JavaScript yleensä on, että älä suorita sitä web-palvelimelle. Se ei saa ajaa Laite sinänsä. Pikemminkin se saa ladata käyttäjän HTTP selaimeen - Chrome, Safari, Internet Explorer, Firefox riippumatta - ja se on selain, joka suorittaa tämän erityisesti ohjelmointikieli. Joten on selvää, PHP on tähän mennessä ollut toteutetaan joko komentorivillä meidän musta ja valkoinen ikkuna, palvelimella kuten laite, tietokone pidä laitetta, tai se on ollut suorittaa www-palvelin käynnissä tietokoneessa. Mutta teema on, että PHP toistaiseksi on toteutettu server-side, joten käyttäjä ja käyttäjän selaimen ei näe rivi PHP. Itse asiassa, jos joskus avata selaimen sivuston tai toiseen ja olet itse nähdä PHP koodi in your ikkunassa joku on mokannut. Koska se ei ole tarkoitus olla lähetetään selaimeen suoraan. Sen pitäisi panna täytäntöön ja kääntyi jotain kuten HTML. Mutta JavaScript on olennaisesti päinvastainen. Se on tarkoitettu suoritettavaksi tyypillisesti sisällä käyttäjän selaimen ikkunassa. Ja millaisia ​​sivustot käyttävät JavaScript sitten näinä päivinä? Kuten kirjaimellisesti jokaisen suosittu verkkosivusto. Jokainen verkkosivuilla, että te luultavasti käyttää päivittäin käyttää Javascript Yksinkertaisin ja jopa seksikkäin ominaisuuksia. Joten jotain Facebook Chat, jos käytät sitä. Miten se käytännössä toimii? No tähän asti kaikki jutut olemme tehdään HTML ja PHP oletetaan, että vedät URL, ja osut Enter, ja näet joitakin HTML-sisältöä. Ja klikkaat linkkiä, joka muuttaa URL, muuttaa sivun ja lataa joitakin uutta sisältöä. Valitse toinen URL tai lähetä lomakkeen pyyhkäistiin toiselle sivulle ja näet joitakin uutta sisältöä. Mutta käyttämällä jotain Facebook Chat, tai Gchat tai Google Maps, harvoin ei koko sivun päivittää niin, että näet valkokangas hetkellisesti ja sitten uutta sisältöä. Pikemminkin verkkosivut ovat nykyään dynaamisesti saada päivitetään uudelleen ja uudelleen ja uudelleen kaikenlaisia kulissien takana. Ja käy ilmi, että kun et mene jotain Facebook tai Gchat, tai Gmail, ja sivun päivitykset automaattisesti ilman lastin purkua koko ruudun, mitä on tapahtunut on se, että selaimessasi on tehnyt tavallaan salaa HTTP-pyyntöjä - eikä kaikista web-sivuja, mutta vain pikku paloina tietoja, kuten pikaviestin, että ystäväsi vain lähetti sinulle tai tilapäivitystä että joku juuri lähettänyt sinulle tai jaa että joku juuri lähettänyt. Se vain tekee vähän pyyntöjä data, ja sitten JavaScriptin avulla, tämä ohjelmointikieli, muuttaa mitä Web-sivu näyttää ilman palvelin auttaa, ilman palvelimen tuottaa että HTML. Joten lyhyt, JavaScript voidaan käyttää sitten ei vain hakemaan uusia tietoja palvelin ilman lastin purkua koko sivun tai lähettämällä lomake. Sitä voidaan käyttää myös muutoksiin ns DOM - Document Object Model - joka on vain hieno tapa sanomalla puu HTML että näimme viime kerralla. Joten vakuuttamaan, JavaScript on rakenteeltaan niin samankaltaisia ​​C samoin. Ei ole päätehtävä. Sinä vain alkaa kirjoittaa koodia ja se saa suorittaa, tai tulkita oikein. Sääolot näyttävät tältä. Ei poikkea C tai PHP että asiassa. Boolen operaattoreilla tai-ed yhdessä näyttää tältä. Anded yhdessä näyttävät tältä. Kytkimet näyttää tältä. Silmukoita näyttää tältä. Vaikka silmukat näyttää tältä. Tehdä, kun silmukoita näyttää tältä. Tämä on uusi. Joten JavaScript ei ole foreach rakentaa sinänsä, mutta tämä konstrukti Muuttujan i array, ja olen tässä tapauksessa tulee indeksin arvo. Joten se on hieman erilainen kuin Foreach, vaikka uudet versiot JavaScript ovat tulossa ulos koko ajan, joten nämäkin kielen ominaisuuksista kehittyvät. Ja syrjään, JavaScript näinä päivinä voidaan käyttää myös palvelimella kuten PHP käyttäen puitteet nimeltään Node.js. Yksi CS50: n TF: ien, Kevin, on johtanut seminaari Node.js, joka on saatavilla osoitteessa cs50.net/seminars. Joten jos olet kiinnostunut, tietää, että olet voivat käyttää tätä palvelimen puolella hyvin, mutta se on melko uusi suuntaus, mutta tehokas sellainen. Tämä on hieman erilainen. Tämä on joukko JavaScript. Ja mitä lyö sinua niin erilaisia vs. C tai PHP? On olemassa muutamia nopeita tarinoita voimme kertoa täällä. Mitä puuttuu vs. PHP? Yleisö: [kuultavissa]. DAVID MALAN: Niin? Anteeksi, sano uudelleen? Yleisö: Ei julistamisesta Muuttujan tyyppi. DAVID MALAN: Emme julistamisesta Muuttujan tyyppi. Joten oikeastaan ​​aivan kuten PHP, emme ole määritellään minkälaisia ​​tämän muuttujan. Pikemminkin olemme enemmän yleisesti sanomalla var muuttujan. Meillä ei ole PHP: n harmia dollarin merkki, joka taas ikävä tyyppi, ei tehdä enemmän selväksi, että Jokin on vaihteleva. Kun taas täällä, olemme tavallaan takaisin C: n lähestymistapa vain soittamalla muuttujan nimen haluamme antaa sille, kuten numeroita. Ja myös PHP, meillä on neliön kiinnikkeet arvojen sisällä että jono. Joten muuttujat JavaScript myös voisi näyttää tältä. Huomata tässä tämä on merkkijono kutsutaan s, mutta samalla meillä ei ole määritelty että se on merkkijono. Tässä kuitenkin on ominaisuus, joka ei olemassa täsmälleen samalla tavalla PHP, mutta hieman samalla tavalla. Tämä on objekti JavaScript. Ja esineet ovat tavallaan Sveitsin armeijan Veitsi datarakenteesta että olet voivat käyttää niitä monia asioita. Täällä esimerkiksi olemme julistamisesta muuttuja nimeltä lainaus. Tyyppi, että muuttujan on esine. Voit ajatella tätä C struct että on avaimia ja arvoja. Symboli on keskeinen. FB on arvo, ilmeisesti osakesymbolille. Comma. Hinta on toinen keskeinen, ja sen arvo on ilmeisesti liukuluku, tai numero yleisemmin JavaScript, on 49,26 dollaria. Joten PHP ei ole - emme ole nähneet PHP esineitä varsin näin, mutta näimme analoginen, joka oli mitä? Yleisö: [kuultavissa]. DAVID MALAN: Assosiatiiviset taulukot. Joten taas PHP on assosiatiiviset taulukot Niiden syntaksi on koskaan verran, eri - näimme hakasuluissa. Näimme outoa nuolet symboleja. JavaScript on esineitä, mutta tämä on lähinnä semanttinen ero ja eri synonyymi nyt. Kuitenkin, kuten syrjään, PHP on myös esineitä siten, että Java-ja muut kielet ovat esineitä olio-ohjelmointi. Mutta käytämme näitä vain tietojen tyypit nyt. Esineitä ja assosiatiivisia taulukoita. Tämä voisi tehdä hieman selvempi. Tässä syy esine on hyödyllinen. Kun haluat julistaa opiskelija, kuten Zamyla, voimme itse kiteyttää niin sanoakseni sisällä että objektin kaarisulun aivan kuten ennen koko nippu avaimia ja arvot täällä. Meillä on tunnus, talo, ja nimi Zamyla, jonka jälkeen puolipistettä tavallista lopussa. Täällä alhaalla, tämä on hieman erilainen, mutta myös erittäin voimakas näinä päivinä. Tässä on jono, ja tiedän, että koska siellä hakasulkeen ylös ylä-ja hakasulkeen alareunassa. Ja tämä on joukko mitä tietoja kirjoita ilmeisesti JavaScript? Tämä on joukko näyttää kuten kolme esinettä. Ja tiedän, että se on esine vain koska aaltosulkeiden. Ja huomaa siellä auki kihara ahdin, joitakin juttuja, lähellä kihara ahdin, pilkku, sitten hieman lisää, pilkku, ja sitten hieman lisää. Niin, että kolme argumenttia erotettu kaksi pilkuilla. Joten tämä on joukko kolme esinettä. Ja jokainen näistä kohteista näyttää olevan opiskelija tai henkilökunnan jäsen joidenkin lajitella, joista jokaisella on tunnus, talon, ja nimi. Mutta olen kutsunut tätä jotain nimeltään JSON - JavaScript Object Notation. Ja tämä on tiedostotyyppi, joka todella on niin kovin suosittu ja muodissa näinä päivinä, että jos kirjoitat sovellus, joka käyttää Facebook API, Twitter API, oikeastaan ​​melkein kaikki API siellä näinä päivinä, kuten jotkut CS50 oma, tiedot saat takaisin ei ole old school CSV-muodossa. Koska muistaa, että CSV on erittäin yksinkertainen. Se on vain sarakkeet erotetaan pilkuilla. JSON tiedot antaa sinulle enemmän metatietoja. Se yhdistää avain jokaisen arvon niin ne eivät tarvitse vain olettaa, että zeroth sarake on yksi arvo, sarake yksi on toinen, sarake kaksi on toinen. Kaikki JSON esine tässä on tavallaan itse kuvaavat, koska jokainen yksi nimiä tiedosto on kirjaimellisesti nimen edessä se lainattu merkkijono. Joten katsomaan pari esimerkkiä tästä. Anna minun mennä laitteen. Ja anna minun mennä meidän vhost hakemiston yleisölle. Ja anna minun mennä JavaScript-hakemistossa. Ja mennään eteenpäin ja avata dom-0.html, jossa DOM tarkoittaa vain sitä, Document Object Model. Se puu tavaraa, johon Aiemmin viittasin. Ja haluaisin ehdottaa seuraavaa. Tässä web-sivun, jonka elin on melko yksinkertainen. Joten täällä alareunassa, huomaa Minulla muodossa. Olemme nähneet kuin ennen. Siinä on kaksi tuloa, joista yksi on ID nimi, joista yksi on eräänlainen esittää, ja ensimmäinen yhden tyyppi on teksti. Joten tämä todella kuulostaa melko yksinkertainen. Mennään tästä. Mennään takaisin tälle sivulle tästä. Mennään localhost, ja mennä JavaScript-hakemisto, ja siirry dom-0, ja tässä meillä on tässä muodossa. Niin, että ilmeisesti Kaikki tämä sivu ei. Se on nimi-kenttään Lähetä-painiketta. Mutta en aio käyttää PHP täällä. Aion tehdä kaiken asiakkaan puolella niin sanotusti JavaScript seuraavasti. Huomaa, että olen todellakin antanut nimen alalla tämä tulo ainutlaatuinen tunniste, joka tosiasiallisesti pelasta minut jonkin aikaa hetki. Ja huomaa Olen otettu toinen tag pää minun web-sivun,  tag. Joten se on tässä mielessä, että JavaScript on client-side ohjelmointikieli. Tässä tapauksessa, kuten CSS, olen koonnut se suoraan sisällä minun HTML. Mutta huomaa olen ilmoittanut toiminto joka näyttää vähän kuin PHP syntaktisesti, mutta tämä on oikeastaan JavaScript, koska uudelleen, se on client-side selaimessa. Ja ottaa arvata, mitä tämä tulee tehdä, vaikka osa syntaksin tässä on uusi. Yleisö: Tervehdi kuka. DAVID MALAN: Se tulee tervehtimään sille, joka vierailee tällä sivulla. Niin miten? Joten ilmoitusta, se kääntyy pois JavaScript siellä alert ()-funktiota. Tämä on hyvin murheelliset toiminto oikeastaan ​​vain taipumus ärsyttää käyttäjiä. Se ei ole yksi sinun pitäisi todella käyttää yleensä, mutta se on nopea ja likainen tapa tavallaan tulostaa jotain on graafinen käyttöliittymä, kuten selaimen. Huomatkaa, että minulla string puolilainausmerkeissä. On käynyt ilmi, että toisin kuin C, JavaScript voi todella olet käyttää yhden lainauksia, ja suoraan sanottuna se on vain eräänlainen ja tyylillinen yleissopimuksen keskuudessa JavaScript ohjelmoijat käyttää puolilainausmerkkejä. PHP, ne todella ovat hieman eri merkitys. Mutta nyt, juuri tietää, että se on ainoa syy. Yleissopimus JavaScript on usein Käytä puolilainausmerkkejä, mutta voisimme käyttää lainausmerkkeihin molemmissa paikoissa samoin. Joten tämä on mielenkiintoista. Pyydä viimeinen kerta, kun oli, että kuva ruudulla, joka veti puu jossa piti HTML solmu, ja pääsolmussa ja kehon solmu, ja sitten tekstiä. Mutta oli yksi erityinen solmu hyvin alkuun, että kutsuin asiakirja. No, se kääntyy pois JavaScript kaikki kun kirjoittaa ohjelman JavaScript selaimessa, voit käyttää erityinen globaali muuttuja. Hengeltään samanlainen PHP: n Superglobaalit, tämä kutsutaan kaikki pieniä asiakirja. Se on kuin struct, mutta tämä struct myös toimintoja sisälle. Joten C struct vain on tietoa tyypillisesti. Mutta JavaScript objektin tämä teknisesti on myös toimintoja, joka tunnetaan myös menetelmiä, sen sisälle. Ja voit soittaa toiminnon sisällä Tämä esine aivan kirjaimellisesti tekee nimi, piste, ja sitten nimi toiminto tai uudelleen menetelmällä. Se on vain synonyymi, todella. Ja mitä tämä toiminto tekee? Voit sellaista arvaus sen nimen. Hanki elementin ID. Joten tämä tulee etsiä web-sivun, etsiä, että puu, etsii mitä solmu, AKA elementti, on yksilöllinen tunnus lainaus lainaus nimi. Ja sitten mitä aion tehdä? Aion saada arvon sisällä että solmu puussa, ja aion jotenkin tervehtimään, että nimi. Joten ota arvata, vaikka olemme ei nähnyt tätä vielä, mitä plus symbolit tarkoittavat täällä ja täällä luultavasti? Yleisö: Concatenate. DAVID MALAN: Concatenate. Aivan, ja nämä ovat vain tavallaan suunnittelun päätöksiä ihmiset tekivät vuotta sitten. PHP, voit liität asioita pisteitä. C, voit hypätä läpi useita vanteet ja soittaa toimintoja, kuten strcopy () tai strcat () tai muita vastaavia toimintoja. Mutta JavaScript, käytät plussia. Joten tämä on vain liittämällä kolmea asiaa - Hei, nimi, ja sitten huutomerkki. Joten milloin ja miksi on tämä toiminto nimeltään vaikka? No, arvaa alkaen HTML alareunassa. Miksi tervehtiä () kutsutaan, tai kun? Ilmeisesti, koska paras voin kertoa, on esittää, kun tämä lomake lähetetään, Aion tehdä mitä on sisällä näitä lainauksia. Ja erityisesti, aion soittaa tervehtiä () ja sitten palauttaa false. No, katsotaanpa mitä net vaikutus tässä on ensimmäinen. Joten anna minun mennä eteenpäin ja kirjoita vaikkapa Loren, Lähetä. Hei Loren. Katsotaan ehkä tämä oli vain onnekas täytäntöönpanoa. Ehei. Joten se kirjoittamalla ulos riippumatta nimetä Olen itse laittaa sinne. Mutta huomaa, mitä ei ole muuttumassa. URL on edelleen dom-0.html. Ei ole register.php. Ei ole toista tiedostoa. Ei ole toiminnan ominaisuus. Joten mitä tämä paluu väärä oletettavasti tekee? Miksi olen soittamalla tervehtiä () ja sitten paluu false luultavasti? Mitä yleensä tapahtuu, kun klikkaat Jätä lomakkeella, että vaikka meillä on nähdään viime viikolla? Yleisö: [kuultavissa]. DAVID MALAN: Se menee jonnekin, eikö? Se menee joitakin kohde-URL. Mutta en halua että näin tapahtuu täällä. Haluan verkkosivustoa täysin dynaaminen, kuten Gmail, jossa kerran olet siellä, pysyt siellä. URL-osoite ei muutu niin, että osoittaa koko sivun uudelleen lataamista. Pikemminkin haluan vain muuttaa jotain kuin painaisi jotain tässä näytössä. No saanen puhdista jopa hieman. Saanen avata ei dom-0, mutta haluan avata dom-2. Just niin olet nähnyt joitakin syntaksin täällä. On käynyt ilmi, että mitä vain ei käyttää raaka JavaScript. Joten tämä on todella kieli JavaScript. Jotkut teistä ehkä tietävät kirjasto nimeltään jQuery. Joten jQuery ei ole sama asia kuin JavaScript. Se on vain kirjasto, joka todella fiksu kaveri kirjoitti ja suosituksi tällainen että lähes kaikki maailman nyt käyttää jQuery käytettäessä JavaScript. Ja ensi silmäyksellä, rehellisesti, se näyttää hieman arvoituksellinen. Mutta voit löytää, varsinkin jos menet siellä teidän opinnäytetyön web kehitys, huomaat, että tämä puhdistaa asioita ja säästää melko muutaman rivin koodia. Joten haluan vain vilkaista miten tämä lomake toimii. Huomaa, mitä minä poistaa ilmeisesti minun HTML? Ei ole lähetettäessä handler niin sanoakseni. Ei ole ominaisuus. Koska tiedät, mitä En todella? Tunsin olimme laskussa vanhoihin tapoihin siellä. Aivan kuten se oli alkanut tuntea huolimaton sekoittua sekä CSS HTML, koska olet sellainen heitto eri kielellä ympäri paikka, samoin ei tämä alkaa tuntua kuten huono tie mennä alas, jos Laitan JavaScript-koodin sisällä minun HTML sijaan factoring sitä. Niin, että opimme tästä. Dom-2.html, olen factoring sitä. Ja teen asioita hieman eri tavalla. Nyt aion heiluttaa käsiäni , mitä tämä todella alla huppu. Mutta juuri nyt olettaa, että ensimmäinen rivi koodia tässä kirjastossa sanotun jQuery tarkoittaa vain sitä, kun asiakirja on valmis, toimi seuraavasti. Koska web-sivuja voi kestää jonkin aikaa ladata. Saatat olla hidas internet yhteydessä, ja se saattaa pyöriä ja spinning, ja lopulta se on ladattu. Koodirivin sanoo vain odottaa koko sivu on valmis, asiakirja on valmis, ennen kuin se täyttää tämän koodin. Ja nyt ilmoitus, tämä on luultavasti hyödyllisin ensimmäinen ottaa pois jQuery. Tämä tässä on hyvin samanlainen henki Tämän paljon kauemmin linja täällä. Kun taas raaka JavaScript-koodia, on olemassa asiakirja globaali objekti on toiminto, jota kutsutaan getElementById (), ihmiset, jotka kirjoittivat jQuery yksinkertaistettu, että vain sanoa dollarin merkki, ja sitten sisällä Suluissa laittaa kaksi lainaa, ja sitten laittaa hash symboli ja sen jälkeen yksilöllinen tunnus haluat napata. Joten tämä vastaa document.getElementById. Samaan aikaan. Submit tarkoittaa vain sitä, on jättämisen tahansa muodossa olet viittaa vasemmalla, mene eteenpäin ja toteuttaa tämä. Mutta tämä on nyt uteliaisuus liikaa. Outoa, mitä Olen korostanut täällä? Ei vain se sellainen syntaktisesti uusi, siellä on myös jotain puuttuu. Yleisö: Se on vain kutsutaan funktio? Se ei ole kutsuttu hälytys? DAVID MALAN: Joo. No, niin hälytys () on alaspäin täällä, olla oikeudenmukainen. Mutta ei ole mainintaa nimi, kuten tiedätte, foo tai jotain täällä. Ja todellakin, tämä on yksi niistä ominaisuuksista, JavaScript-se on aivan tehokas, mutta myös aivan uutta. Ja PHP on itse asiassa tämän hyvin. Anna minun mennä eteenpäin ja tehdä jotain todella nopeasti. Anna minun mennä eteenpäin ja laittaa tämän tänne. Anna minun tehdä tämä. Toiminto. Kutsun tätä handler (). Käsittelyfunktio niin sanotusti. Jotain, joka käsittelee joitakin toimintaa. Saanen siivota minun sisennys. Ja laittaa tämän tänne. Ja esittää, että täällä. Jep. OK. Joten nyt minulla on toiminto nimeltään ohjaaja (), että en todellakaan tiedä mitä se tekee vielä. Se vain on edelleen, että tavaraa. Oho. Vei liikaa. Tehdään tämä. Selvä. Anteeksi. Selvä. Anna minun tehdä tämä. OK. Se näyttää hienolta ja suorat eteenpäin nyt. Anna minun tehdä tämä. Tee tämä. Ja OK. Joten nyt, nyt laittaa tämän tänne. Ei enää ohjelmointi lennossa. OK. Joten nyt mennään takaisin jossa tarina alkoi. Aiemmin sanoin, että tämä linja täällä tarkoittaa, kun asiakirja on valmis, mene eteenpäin ja tehdä tämän. Mitä haluat tehdä? No nimenomaan, haluan mennä eteenpäin ja tehdä seuraavasti. Suorita tämä rivi koodia, ja sitten mitä haluan sinun tekevän on kutsua tätä toimi, kun lomake lähetetään. Nyt tämä on mitä mielenkiintoista. Tämä ei sinällään ole toimintoa. Huomaa en ole laskemisesta suluissa Tässä tavalliseen tapaan. Olen kirjaimellisesti kulkee toiminto nimeltään ohjaaja () toisen toiminnon kutsutaan esittämään () kuin väitteen vaikka se on kuin muuttuja. Ja tämä on yksi ominaisuuksista JavaScript on toiminnot itse ovat oikeastaan ​​vain esineitä. Itse asiassa, ne ovat oikeastaan ​​vain muuttujat jonkinlaisia. Ja jos toiminnon nimi on ohjaaja (), ei ole mitään syytä en voi suorittaa sen argumentiksi täällä. Ja tämä tarkoittaa, kun lomake ID-demo on toimitettu, kutsuvat tätä toimintoa. Mutta jos nyt perua kaikki tämän, Miksi sitten olen ehkä tehdä tämä hetki sitten? No, tämä on anonyymi funktio. Koska rehellisesti, tajusin miksi olen kiusaa tuhlata aikaa julistamisesta toiminto nimeltään ohjaaja () vain soittaa se yksi ja vain yksi paikka? Jos en tarvitse nimeä, enkä täytyy kutsua sitä useampaan kuin yhteen paikkaan, Haluan vain toteuttaa toiminto juuri siellä missä sitä tarvitsen. Ja niin JavaScript ja PHP-tuki, mitä ovat nimeltään anonyymi toiminnot haluan tehdä juuri näin täällä. Mutta me vain esimakua. Katsotaanpa kiusaa vain pari lopullinen esimerkkejä tästä. Jos menen quote.php. Huomaa, että tämä on todella PHP toiminto, PHP-ohjelma, jonka kirjoitin että odottaa HTTP parametri nimeltään symboli, ja voin kulkea arvo kuin FB. Ja jos me todella katsoa lähde koodia, tämä kysely ilmainen sivusto nimeltään Yahoo Finance, kuten p-sarja seitsemän, ja se palaa minua jotain ilmeisesti muodossa eli on JSON - JavaScript Object Notation. Se on vain esine. Huomaa aaltosulkeiden, lainauksia, paksusuolen ja pilkkuja. Nyt puolestaan, tämä on aika siistiä. Koska en voi varmaan käyttää ohjelmointi kieli tuottaa URL tämän näköisiä dynaamisesti, eikö? Voin muuttaa Google ja saada takaisin Googlen osakekurssi $ 1,017.55. Katsotaanpa, jos emme voi käyttää tätä nyt. Anna minun mennä ajax-0 täällä, joka näyttää seuraavalta. Se on vain sivusto, joka on lomake-painiketta. Saanen tässä mennä eteenpäin ja kirjoittaa YHOO Yahoon osakesymbolille, klikkaa Get Lainaus, ja nyt huomaa olen saanut valppaana 32.86. Saanen itse mennä harrastaja versio Tämän sivun versio kaksi, ja kirjoita sanotaanko Microsoft, MSFT. Pyydä tarjous. Ja nyt huomaa, ei hälytys. Huomaa jossa sanotaan hinta määritellään? On yksinkertaisin esimerkkejä siitä, että vihjaa mitä Gchat ja Facebook Keskustella, ja Gmail ja muut tällaiset sivustot tekevät by tosiasiallisesti muuttamalla sivun. Huomata tämän. Saanen lataa sivu. Saanen avata Chromen Inspector. Anna minun mennä elementtejä välilehti tänne. Nyt huomaa, jos en zoomata tänne ja avaa tämä ylös, huomaa, että tämä on minun HTML DOM - minun Document Object Model. Tämä on minun HTML. Mutta nyt huomaa, vaikka se menee olla hieman vaikea nähdä sitä sekä paikassa samaan aikaan, jos kirjoitan FB täällä, katsella alhaalta on näytön vain. Se on todella muuttuu minun HTML lennossa. Ja se tekee tämän yksinkertaisesti tekemällä jotain tällaista. Jos Avaan ajax-2, huomaa täytäntöönpanosta jotain niin seksikäs kuin että vaikka se on melko ruma, mutta yhtä kehittyneitä kuin toiminnallisesti, se on jonkin verran HTML alareunassa. Mutta huomaa Käytin tag. Olemme ole käyttäneet tätä ennen, mutta tämä on kuten, mutta se ei pakota kaiken päälle uusi rivi. Se vain tekee suorakulmainen alue samalla linjalla olennaisesti. Huomaa, että annoin sen ID hinnan. Ja se kääntyy pois käyttämällä samaa JavaScript-kirjaston, minulla on tehtävä kutsutaan quote (), joka kutsutaan aina lomake lähetetään. Ja mitä olen tekemässä on tämä. Olen julistaa muuttuja JavaScript kutsutaan url, säästää arvo quote.php? symbol =. Toisin sanoen, minä olen alkanut valmistelemaan HTTP-pyynnön, ja sitten Olen liittämällä päälle, että plus mitä elementti tunnus symbolin on, mikä ilmoitus on ettei tekstikenttään oikea tänne. Joten aivan kuten meillä oli muodoissa menneisyydessä. Ja sitten käy ilmi, jQuery, jos soittaa. val (), joka kutsuu ja val toiminto, arvo-toiminto, joka saa mitä käyttäjä on kirjoittanut sisään Ja sitten kaikki verkkoliikenne että tapahtuu, on tämä. $. GetJSON. Ja syrjään, dollarin merkki on vain lyhennetty merkintätapa. Se on todella jQuery.getJSON. Vie minut JSON tähän URL, ja kun pyyntö tulee takaisin, kutsuvat tätä toiminto ja kulkea argumenttina mitä tuli takaisin palvelimelta. Eli toisin sanoen, jos menen takaisin selain, ja menen takaisin quote.php, mitä selain tekee on tulossa tämä kimpale tietoja. Ja kun menen tällä sivulla täällä, huomaa, jos me sen sijaan mennä verkkoon välilehti ja poista se, ja kirjoita jotain GOOG Google ja Get Lainaus, huomaa sivun ei muuttunut. Mutta HTTP pyyntö on tehty, ja mitä tuli takaisin tänne, jos katsomme vaste on koko joukko JSON että siirryimme lopuksi tämä yksinkertainen linja täällä. Data on mitä on mennyt palvelimelta. Hinta on nimi avain välitän. Joten data.price antaa minulle. Nyt puolestaan, ja tämä on viimeinen esimerkki. Voit tehdä vielä enemmän sivulle. Yksi todella hyvin kaksi. Voimme tuoda takaisin merkitä, jos muistat tämän. Se JavaScript. Me voimme tehdä sen. Erittäin jännittävä. Jätämme että jännitysnäytelmä. Mutta enemmän jännittävän, voit tehdä asioita, kuten tämä. Jos menen geolocation-1, se kääntyy pois että Chrome tietää, että olemme leveyttä pituusaste 42.37. -71,10. Joten on vielä enemmän siellä käytettävissänne. Mutta siitä lisää ensi viikolla. Nähdään maanantaina.