[Predvajanje glasbe] 

DAVID Malan: To je CS 50, in to je začetek devetih tednu. In tisto, kar smo menili, da bi naredil danes ni samo zapreti poglavje o prejšnji teden je Material, kjer smo se osredotočili na strežniku stran web programiranje z PHP in SQL, nekatere podatkovne baze stvari. Bomo govorili o nekaj varnost danes in nato Prehod na odjemalsko programiranje jezik znan kot JavaScript. Najprej pa nekaj odkupa. 

Morda se boste spomnili, da je na Sreda, I določeno napisati spletno stran, ki je na vhodu uporabnikov ga HTML tvorita ki nato shrani da vhodni uporabnik imena, telefon številke, in mobilni telefon prevozniki v bazi. In potem sem imel malo ukaz linija scenarij napisan v PHP da naj bi Ponovil čez vrstice v podatkovni bazi in poslati besedilna sporočila. Kljub več, nekaj poskusih smo niso dobili, da je delo do konca. 

Zato sem to ves teden preživel delovno na to oznako, da nas priti mimo točke kjer smo končali, pri čemer vse Dobil sem do konca v sredo To besedilo je bilo sporočilo od Margo, kot sem si, sledi sporočilu SMS od drugega sošolec, imaš to Davida. Sledila je ta, nadvse spodbudni. Hrani na tekoč, zelo spodbuden. Skoraj sem ga dobil, dokler then-- in da je opomba smo končali v sredo. In potem dejansko morda moja najljubša, Trenutek kasneje, to je prišel v. Prekleto živo. 

Torej, danes smo to popraviti s hitro poglej, kaj sem naredil, ker. Torej, vse te kode je na voljo online od prejšnjega tedna, osem tednom izvorna koda. In videli boste, da sem šel skozi, in sem pravzaprav očistiti stvari bit. Predstavil sem nekaj drugega lastnosti podatkovne zbirke SQL. Na primer, namesto samo da nosilec var char saj mislim, da sem na letenje prejšnji teden. Namesto da sem ga opredelimo kot kar se imenuje enum. 

In nekateri od vas morda so to videli kot smo raziskali C. Enum je pravzaprav značilnost C, kjer si lahko našteti cel kup konstant in jim dodeliti avtomatske vrednosti, kot ena, dva, tri, štiri ne da bi trde kodnih številkah. Torej SQL podpira isti, pri čemer, če imate polje zbirke podatkov, ki jih le želim, da bi na eni od končnih vrednosti, lahko dobesedno določite kot sem pa naredil za štiri priljubljeni mobilni telefon prevozniki ZDA. 

Zato sem to storil. In sem naredila nekaj sprememb, ki so dobro, od katerih je najbolj pomembna je bil, da se email delovati zaradi odpoklica, da je ta program na katere se sklicuje, ki običajno imenujemo email SMS gateway, ki je pravkar fancy način rekel, da je Verizon, in AT & T, in drugi ljudje podpirajo strežnik, pri čemer če prejme email, ga pretvori v SMS in pošilja besedila Sporočilo za nekoga telefon. Torej, če sem to storil pravilno, Tukaj je nova in izboljšana oblika da se dogaja, da se pogovorite s novo in izboljšano kodo, ki lahko igrate s spleta. In bo, upajmo, da moj Telefon piska vsak trenutek. 

Torej, najprej, jaz grem, da tip v mojem imenu. Drugič, ne bom to tokrat narediti. Bom pa Preglej element. In to je samo malo stvar, tako da jaz ne ustvariti ur postprodukcije delo, kot sem storil zadnjič. Tam zdaj je moja telefonska številka. 

Bom izberite Verizon. In tukaj, dajmo vklopiti ta mikrofon tukaj in si to na mojem telefonu tukaj. Bom kliknite Registracija, ki naj bi, upajmo, ga dal v bazo podatkov. Zdaj bom šel na Program linija poveljevanja, ki Odpoklic je bil imenovan dot slash besedilo, in čez prste. Gremo. 

[TELEFONA Dings] 

[Ploskanje] DAVID Malan: So bolj zabavno kot this-- je zabavno, seveda, če bom v to. Ampak to je bolj zabavno, sem mislil, če bi ustvarjena eden tistih filmskih trenutkov kjer je kot nekaj, kar v resnici slabega se je zgodilo v svetu, in tako kot vsi NSA ljudske s cellphones začnejo piskati s pomočjo besedilnih sporočil jih opozori na to dejstvo. Zato sem mislil, da bi poskušali poustvariti isto tukaj, pri čemer se ne uporabljajo bazo podatkov, Sem namesto vnaprej napisal program, ki izgleda takole. 

To je index.php-- in sem dal to kodo na spletu kot well-- ki očitno Samo ometi form.php, uporabo MVC slog paradigmo, ki smo govoriti podrobneje problematičnega niz sedem. Ta oblika je zelo preprosta. To se dogaja, da predloži datoteka z imenom here.php po pošti. In to je očitno bom prosil za ime in telefonsko številko, in nato preko dne takoimenovane Izberite Meni, da je dogaja, da vam vsaj štiri priljubljeni mobilni telefon prevozniki v ZDA, in potem vam omogočajo, da učinkovito sprejmejo udeležbo s klikom tukaj. 

In tukaj, medtem, se dogaja, da sposoditi nekaj kode iz zadnjega časa. In če ste le prelistati to, boste videli, da obstaja cel kup preverjanje napak. Vendar je lepota na koncu je, da nismo pisanju v zbirko podatkov danes. Mi držimo preprosta in Samo pošiljanje upajmo besedilno sporočilo s funkcijsko I je napisal v zadnjih nekaj dneh razpisa Besedilo, ki je v funkciji. php, kar je spet na voljo na spletu. 

Torej, če bi želeli, da sodelujejo pri tem. Ne bomo se shranjevanje ničesar. Pojdite na ta URL tukaj v realnem času. Ga ne predloži samo še, vendar Dovolite videli, če lahko imamo eno od teh film trenutki, ko mobilni telefon vsakogar začne piskati, upajmo samo enkrat letos za razliko od 2011 kjer je to šlo hudo narobe. In ko greš na ta naslov, bi morali videti super preprost obrazec da če imaš ime, mobilni telefon številko in mobilni telefon prevoznik, ki ujema seznam obstaja, pojdite naprej in izpolnite obrazec. Vendar ne hit predložiti samo še. 

Obrazec se bo izgledala takole. Pojdi naprej in vnesite vaše ime, telefonska številka. OOP, nekdo se dogaja pred krivulje. To je OK. OK, vsi se izpolnijo obrazec. To bi moralo delati na telefon, preveč, če hočeš. Vse je v redu, na vaših znamk, se določi, pojdi. Hit tukaj. Kaj je? No. Prisežem pri Bogu, da sem testiral to večkrat danes. Razumeš? 

[Interposing GLAS] 

DAVID Malan: OK, si morda napaka. To je dva. Je delal za dve od nekaj sto, tri, štiri. OK, to je dobro. Štirje od petih za pravilnost in kako približno. 

Torej, kaj se je pravkar zgodilo? Torej, verjetno, ne da bi videl vaše zasloni, zakaj bi to bili errored? Verjetno je, da smo bili le trudijo, da bi preveč povezav s poštnim strežnikom Harvard vse na enkrat iz istega IP naslova. Jaz sem samo ugibati, saj nisem razkošje testiranja to kodo z nekaterimi 300 ljudi v vnaprej vendar za zdaj spoznali, da da vsaj naj gotten delo opravljeno tokrat. 

Vse je v redu, zakaj je to vse bolj soroden, kaj se dogaja? Kot prvo, hitro Nekaj ​​objav. Torej, ena, če želite, da se pridružijo Chang, in Nick, in drugi na kosilo v petek, storiti RSVP ob običajnem URL tam. Če razmišljate, koncentracija ali delaš sekundarna v CS, ali ste letniku ali novinec, ali celo junior ali senior na tej točki in še vedno lahko stisnite v predmetih, zavedati, da šole inženiring se zbirajo za prosti Ben in Jerry sladoled in nasveti To sredo je kmalu po razredu ob 4:00 uri v stavbi CS na Maxwell Dworkin. Če je to prehitro na zaslonu, pojdite da cs50.harvard.edu za povezava na Facebook dogodek kjer si lahko ogledate več podrobnosti. 

Medtem, sem mislil, da bi popravili še ena stvar, ki sem goofed sredo. Izkazalo se je, da Marka ID na Facebooku ni bila tri. Bilo je štiri. Izkazalo se je, da je imela več preizkus Računi, kot se spomnim. Toda kaj je ta počutil kot priložnost storiti je, da dvigni URL, kot je ta. 

Tako se izkaže, da ima Facebook API, Application Programming Interface, ki je mehanizem, s katerim vas lahko zahteva podatke programsko na Facebooku in se vrnem stroj berljive informacije, ne pa spletne strani ampak samo surovo besedilo, nekaj imenovano JavaScript Object Notation. In v resnici, če obiščete to URL in povečate privzeto to je Mark je javno dostopne informacije. 

In zanimiv detajl Tukaj je le, da je njegov ID je res, številka štiri, ki sem ga takoj, ko sem to naredil spoznal. To lahko storite sami, če veš vaš Facebook uporabniško ime, če ga imate. Samo tip do vrha tam. In nič od tega je zasebni. Jaz sem to počel le še v načinu brez beleženja zgodovine. Torej, nisem še prijavljeni. In ste videli, da sem očitno je uporabnik številka 6454 na Facebooku, ki ni Škoda, da v teh dneh. Torej, v vsakem primeru, boste videli tudi dodatne informacije tam. 

In koristen vidik za to je, da vas Lahko bi napisali svojo lastno programsko opremo, ki nekako združuje podatke, kot je ta v svojo lastno uporabo. Lahko spodbujajo potrošnike k prijavite v vašo spletno stran, ne uporabljajo svoje ime po meri in Geslo vendar morda njihov Facebook prijava in dobili informacije tudi o svojih prijateljih, če odobri tak ali podoben. Tako ugotavljajo, da CS50, preveč, ima nekaj svojih API-jev, eno za podatke kataloga Seveda, nekaj za objeme menije v jedilnico dvorane, vse stavbe in lokacije na kampusu imamo API, kot tudi da lahko poizvedbo podobno in se podatki za nazaj tekstualni, ki jih lahko vključijo v PHP ali JavaScript, ali celo, čeprav manj pogosto, C na osnovi končnega projekta. 

Dejansko luč za končno Projekt je nekaj mejnikov. Si dobil email od nas drugi dan. Zavedam se, da je predlog je zaradi tega prihaja ponedeljek. To ni nujno zavezujoč, vendar pa ne potrebujejo, da prejmemo vaše učnih štipendistov odobritev, preden nato vse spremembe. In potem naprej, so število drugih mejnikov. 

Tako zafrkavali, preveč, z nekaterimi možnostmi, imamo kup ta odtenek žarnice. In ste nekateri fantje zdaj nekateri od teh v študentski sobi, kot tudi. In tudi oni imajo API. Tako da umakne binarne žarnice tedna nazaj, da je Dan Bradley in Ansel Duff ustvarjen za nas. Se uporabljajo programski vmesnik za ta žarnica, ki je v tem trenutku je priključen v električno energijo in nato preko brezžične je povezan z majhno stvar imenovan Bridge tukaj, kot majhen usmerjevalnik lastniške s tem posamezne naprave. 

Vendar se izkaže, če vem, kako pošiljanje HTTP sporočil, kot smo vsi storiti zdaj, Ne morem poslati sporočilo, kot je ta, da ta žarnica, da ga vklopite ali izklopite ali pa poljubno število druge operacije na njem. Obvestilo, da je ne bi dobili, da je ne bi objavili. Tukaj je še ena imenovana put. Tam je pravzaprav nekaj drugih takih glagolov. Ampak obvestilo, tam je pot tam, poševnica API, poševnica nov razvijalec, poševnica svetlobo, poševnica eno, poševnica stanje. 

To je očitno samo Pot, ki je podjetje Philips, odločili, morate zadeti z zahtevo HTTP Če želite spremeniti stanje žarnice z uporabo HTTP 1.1. Potem je opazil prazno vrstico. In potem končno Izgleda vrsta paleto neke vrste, to znova se dogaja, da se imenuje JavaScript Object Notation ali Jason. In tisto, kar vidite tukaj, je, da obstajajo tri ključne pari vrednosti. 

Eden ključnih je pozval. Njena vrednost pa očitno se dogaja, da bi bilo res. Svetlost je 128, ki je neke vrste int. In potem, ko gre za prehod nič, kar je očitno kako dolgo se dogaja, da trajalo, da vklopite to stvar naprej. 

Torej, zdaj je ta žarnica ne sveti. Ampak, če jaz prav this-- pustiti grem na malo goljufija stanja Dan, ki je določeno v advance-- in bom da gredo naprej in kopiranje Naslednji ukaz. Curl, kot nekateri od vas morda naberejo na CS50 Pogovorite se je uporabnost kot Telnet takšne da lahko simulirajo zahteve HTTP, posebej postavlja. Ne morem poslati te podatke, posebej, kar smo pravkar videli malo prej, posebej na ta URL več tukaj. In potem Curl bo ročaj vsemi potrebnimi glave in tam razčlenjevanja. 

Torej, vse kar morate storiti je, kopirati to v terminalsko okno in nato pritisnite tipko Enter. In žarnica gre naprej. In to je vse skozi moj računalnik brezžično nekako navzdol do mostu, ki je nato govoril s to žarnico. Jaz lahko naredim nekaj drugega. Jaz lahko to stvar pojdi red na primer. Lahko, na primer, ta stvar gredo zelene. Lahko, da bo šel modro. 

In obvestilo iz vsakega od teh primerki, vsi, ki sem spreminjajo je tako imenovana odtenek vrednost pravzaprav ji dati nekaj barve. Zato mi dovolite, prilepite tole v kot dobro. Zdaj je modra. 

In lahko naredi še Ljubitelj Stvari where-- pojdimo v zeleno. In jaz bi to naredil za Seveda s svojo lastno kodo. Toda tudi sama API podpira funky poslovanja kot je ta, ki se bo zdaj moti nam za naslednjih 30 sekund. 

Tako da je eden okus, kaj bi lahko storiti z API, ta vključuje žarnice. Upoštevajte, da ima CS50 par pari Google Glass, če bi želeli rešiti nekaj skupaj te vrstice, Arduino unos, ki so mali računalniki, v bistvu, na malo vezja da se lahko povežete žice in druge stvari nuditi in nadzor vaš realni svet okolje. In potem so tu še par nove igrače, ki jih imamo. Ta je dobesedno pravkar prispel drugi dan po pošti, Myo Armband. In sem mislil, da je to način, da se dobili ste navdušeni nad projektom ki jo lahko uporabljate z Ta strojna bi je, da igrajo ta kratek posnetek da se zafrkavajo ljudje da smo zdaj živi v prihodnje. 

[Predvajanje glasbe] 

DAVID Malan: Torej, v nekaj tednih, vam Tudi mogoče, da se ohladi na sejmu CS50. Druga priprava, da smo imajo kup, da smo vesel, da posojilo za projekte, se imenuje krmilnik gibanja. To je malo USB naprave povežete z računalnikom, ki vam omogoča interakcijo z prenosni računalnik, Mac ali PC, kot da ste imeli kot Xbox Kinect in dejansko fizičnega predloge mnogo kot smo videli v tem vizija prihodnosti. 

[Predvajanje glasbe] 

DAVID Malan: Torej, tudi če imate ne vem, kako se kaj takega mogoče bi bilo izmišljeno ali delo na ravni strojne opreme, ne glede na to. Tudi po nekaj mesecih CS50, in razumevanje programiranja bolj na splošno, in spletno programiranje več v zadnjem času, in nato tudi API, in HTTP, boste imeli dostop preko programske opreme API če vas bi želeli, da se zadolži enega od teh Naprave za dejansko govoriti z njo in ni treba skrbeti za osnovni izvajanje podrobnosti, ki je popolnoma v skladu s tem pojmom plastenjem abstrakcija, ki smo jih gledati skozi semester. 

Torej, tudi čez vikend, Videl par kosov novice. Pojdi najprej pojdite na seminarjih, če vas bi se radi naučili nekaj več na poljubno število tem. Glej URL tam. In je bila ta poslana me ga Chang, ki jo poznate, kdo tiskanje našo vojsko slonov. In to je bil naslov, kot sledi. Jaz sem prestrašen mojega novega TV. Zato me je strah, da vklopite to stvar na vas in bi bilo preveč. Tako da smo zdaj na točka v semestru, Tudi, kjer tudi če imate najmanjšega razumevanja kako web deluje, in HTTP, in varnosti, stvari, kot je ta bi se morala začeti ulov oko. Ampak tudi, da boste razumeli ali so te stvari ali niso dejanske grožnje. 

Zato sem vzel nekaj odlomkov iz tega članka tukaj. In zgodba je, kot sledi. Zdaj sem lastnik novi pametni TV, ki obljublja, da poda streaming multimedijske vsebine, igre, app, družbeni mediji in internet brskanje, oh in TV preveč. Edini problem je, da sem zdaj strah, da ga uporabljate, pravi avtor. Saj bi bilo tudi, če ste prebrali 46 stran Pravilnik o zasebnosti za vaš TV. Količina podatkov tega stvar zbira, je časovno razporeditvijo. To dnevniki kje, kdaj, kako in kako dolgo uporabljate televizor. Ki jih daje, sledilne piškotke, kot smo že omenili, in svetilniki zasnovan za odkrivanje, ko imate ogledov zlasti vsebino ali zlasti e-poštno sporočilo če želite, da preverite e-pošto na vašem televizorju. Beleži apps si uporabo, na spletnih straneh, ki jih obiščete, in kako ste interakcijo z vsebino, počne vse, da prek svojega pametnega televizorja. Prav tako, creepier yet-- to je moja addition-- ima vgrajeno kamero z prepoznavanja obrazov. 

Namen je posredovati Nadzor gesta za TV in vam omogočajo, da se prijavite na prilagojene račun z obraza. Na pozitivni strani, slike so shranjene na TV, namesto naložili do podjetij strežnikom. Na negativni strani, internet povezava naredi celotno TV ranljiva za hekerje, ki so pokazale zmožnost sprejeti popoln nadzor nad strojem. 

Bolj zaskrbljujoče, kot da to ni bilo dovolj pameten, je mikrofon. TV ponaša glas Funkcija priznanje ki omogoča gledalcem, da nadzor zaslon z glasovnimi ukazi. Vendar storitev prihaja z precej zlovešče opozorilo. Prosimo, da se zavedajo, da če izgovorjene besede vključujejo osebne ali druge občutljive informacije, da se informacije bodo med podatki ujetih in posredovati tretji osebi. Razumeš? Ne pravim, osebne ali občutljive stvari pred televizorjem. 

Torej, to je pravzaprav zares. In to je težko, da ne vidim, če vas pojdite na Best Buy ali podobno za televizorje v teh dneh. Oni so vsi pametni na nek način. In oni so dobili pametnejši in creepier. In oni so preprosto zbiranje podatkov na način, da smo govorili o in ga nato nalagate prek HTTP ali nekatere druge protokol k neki strežnik. 

Torej, to je bilo za zabavo članek v tej spletni spletni strani tu, ki je govoril o Zlasti bug ali zamenjali kodo da bomo lahko dejansko tie v razpravi prejšnji teden. Torej, ta naslov je bil kot sledi, zgodba tukaj, Josh Breckman delal podjetje, ki je pristal pogodbo za razvoj upravljanja z vsebinami sistem ali CMS kot oni imenujejo, za dokaj velike vladne spletne strani. Velik del projekta, vključenega razvija sistem za upravljanje vsebin tako, da bi zaposleni sposobni zgraditi in vzdrževati spreminjajočim vsebine za svoje spletne strani. Je šlo precej dobro nekaj dni po dogaja v živo. Ampak na šesti dan, stvari niso šli tako dobro. Vse vsebine na Spletna stran je popolnoma izginila. In vse strani pripeljala do neizpolnitve obveznosti, vnesite vsebino spletne strani. Ops. Josh je pozval k preiskovanje in opazil, da eno posebno moteč Zunanji IP naslov imeli šel v in črta vse Vsebnost o sistemu. 

IP naslov ne pripada do neke tujini hacker ukrivljen uničiti pomoč Vlada informacije. Je odločil, da googlebot.com, Googlov zelo lasten web lezenjem pajek. Ops. Po nekaj raziskav in kodiranja okrog, da bi našli noncorrupt backup, Josh našel problem. 

Uporabnik je kopirati in prilepili nekaj vsebine iz enega Stran v drugo, vključno Urejanje hiperpovezave Za urejanje vsebine na strani. Običajno to ne bi bilo vprašanje, saj zunanjega uporabnika bi vnesti ime in geslo, vendar sistem za preverjanje pristnosti CMS, sistem za prijavo, ne upošteva prefinjen taksist tehnike Google Spider. Ops. 

Kot se je izkazalo, Google Spider ne uporablja piškotki, kar pomeni, da lahko enostavno bypass ček za je prijavljen na piškotek sklop za lažnega. Prav tako ne posveča pozornosti JavaScript, ki ponavadi hitre in preusmerijo uporabnike ki niso prijavljeni. To pa ne sledijo vsak povezavo na vsaki strani, če ugotovi, vključno s tistimi z Izbriši stran v naslovu. Ops. 

Torej, kaj to pomeni v več Tehnične vendar dokaj dostopne pogoji? To samo pomeni, da vsej svoji spletni strani, so imeli URL ni v nasprotju s tem, da je ena lahko vidite na problem nastaviti sedem. Spomnimo se na problem določiti sedem ali ve, problem določiti sedem da ste izpodbijala, med drugim, prodati zaloge v imenu uporabnikov. Vendar je izvajanje te funkcije z od dobili prek hiperpovezav v vaši uporabnika vmesnik, verjetno ni najpametnejša ideja ker če je vaša stran je nekako dostopni bodisi človeku kdo klikom na okoli ali kupiti bot, kot so Google ali Spider kot oni imenujejo, da je samo plazil po spletu poskuša indeks web kot iskalnik, so lahko zelo enostavno zadeti preko dobil takšno URL. In to je funkcionalno enakovredna, v tem primeru, prodajo vseh delnic družbe Google. 

Zdaj odkrito povedano, to je popolnoma Nor, da je CMS Rabljeni JavaScript in piškotki za izvajanje svoje prijavne sistem in ne delaš, da na strani strežnika, kot je vi naredite in bo v PSet 7-- tam je login.php file-- vedno, vedno, Vedno naj bi varščina storiti na strani strežnika, ne na strani odjemalca, ker, kot je to Članek predlaga in morda sami glej na neki točki, je nepomembno za uporabnika, dobra ali slaba, samo izklopite JavaScript da ne omenjam piškotkov. Tako da je vaš dnevni WTF. 

Še ena, ki je le nekako strašljivo, zato ga bom omenil, če samo kot življenjsko lekcijo. Vsakič, ko uporabljate aplikacijo imenovana kot Snapchat ali podobno ki pravi, da te fotografije trajalo samo pet sekund, deset sekund, ali malenkosti. Oni so minljiva To je absolutno ne drži. Tako kot ne obstaja način, digitalno, izvajati neko obliko video, ali slike, ali tekstualni delitev, kot da prejemnik na drugem koncu ne more nekako shraniti podatke. 

V najbolj naivno, nekdo bi lahko svoj telefon. In dobili še eno okno 10 medtem ko je videti na neki snap samo traja nekaj drugega telefona in ga fotografira, seveda. Tako lahko ohranite Nekaj ​​digitalno ta način. Nekateri od vas ve, kako naj sprejmejo screenshots na vašem telefonu. V bistvu, če ne veste, to, zavedajo, da je vsaj Snapchat, in mislim, da druga aplikacije v teh dneh, vsaj če vam povem, prejemnik mora dejansko sprejeti screenshot vaše slike. 

Ampak še huje je bilo to snappening, kot je nekdo zapisal v zadnjem času, kjer je nekaj 100.000 snap bila sproščena V kaj se ti torrent datotek na različnih spletnih straneh na koncu. In to je vsebovala cel kup zasebnih sporočil in objav. Izkazalo se je, večina od njih benigen, to ni tisto, kar bi lahko pričakovali. Ampak zato, ker so imeli uporabljajo spletne strani tretje osebe, se prijavite s svojim Snapchat uporabniško ime in geslo, nato pa varčevanje vseh njihovih posnetkov Na tej spletni strani tretje osebe. In to je bilo, da je tretja oseba Spletna stran, ki je bila hacked, ki le mišljen nekdo pogruntal, kako da bi dobili vse 100,000 plus teh slik na svojem trdem disku za nadaljnjo rabo. Odkrito povedano, tudi tukaj, to je neke vrste od Nor da Snapchat se izvaja na tak način, da Tretja oseba lahko razvrstite po prestrezanje podatki in da to ni vezano na vaš lastna aplikacija, ki teče na telefonu. Vendar tudi tu zavedati, da so ti Stvari, ki jih ne bi ujeli presenetilo, ali vsaj ne bi smelo je življenjska lekcija tukaj. Če želite tehnično podrobnosti, pojdite na ta URL tam da je v današnjih diapozitive. Vse je v redu, kakršna koli vprašanja o Današnje življenjske lekcije v CS? Obrnite da off. Sploh kaj? Sploh kaj? Imam veliko ljudi preverjanje njihova Snapchat ali kaj zdaj. 

Vse je v redu, tako da SQL, Structured Query Language. Oglejmo zaviti to. In tudi, čeprav smo le praskanje Površina tega jezik, vam bomo Dovolj jeziku v obliki PSet 7 tako da lahko reševanje nekaterih dokaj pogost funkcionalnost. Vendar zavedaš, obstaja nekaj Stvari, ki jih ne zahtevajo od tebe, ampak oni bo Pomembno pridejo zaključne projekte in prav gotovo prišli kar dejansko spletne strani z dejanskim uporabnikom je ta odločitev dizajn. 

Izkaže se, da v MySQL baze podatkov, ki jih imajo šopke izbire kot podatkovni tipi za vaše stolpce in druge stvari, ampak imate tudi izbira tako imenovano shranjevanje motor za vse vaše podatke, vrsta datotečnega sistema, če ste seznanjeni, za vse vaše podatke. Kakšni obliki je na koncu shrani v? In najpogostejši, morda, je bil MyISAM in InnoDB, tehnični pogoji da bomo skrbi le kolikor je, da ena in eden nima Naslednja funkcija. 

Recimo, da imate malo domu hladilnik. In domnevam, da vi in ​​vaša cimra, ki si delijo ta hladilnik, so res všeč recimo mleka. In to je, v resnici, kako Zgodba je povedal, da mi je pot nazaj v dan, ko sem vzel tečaj imenovani CS 161 Operacijski sistemi, ki prav tako raziskuje to temo. Torej imaš ta hladilnik. Ste iz mleka. In prideš domov, tvoj sostanovalec je še vedno v razredu ali karkoli, in ste se odločili, da bom iti ven in dobili nekaj mleka. Torej zapreš hladilnik, blokiranje študentski sobi, šel čez cesto na CVS ali kjerkoli, in dobili v vrsti za nakup nekaj mleka. 

Medtem, tvoja cimra pride domov iz razreda, pride v študentski sobi, Odpre hladilnik, se tudi zaveda, ooph, smo iz mleka. Torej on ali ona zapre hladilnik, nato pa se zgodi, da gredo v drugo CVS ki se zgodi, da se en blok stran od drugih CVS na trgu, in dobi v skladu tam, da bi dobili nekaj mleka. Zdaj, seveda, nekaj minut kasneje, boste tako dobili nazaj, in najslabši od vseh možnih rezultati se je zgodilo. Tako boste imeli mleko. In ne boste res kot so mleko, da je veliko. Torej, eden izmed njih je pravkar bo kislo na neki točki. Torej, sedaj imate preveliko količino mleka v hladilniku zato, ker zakaj? 

[Neslišno] DAVID Malan: Ja, nisi nekako komunicirajo med seboj ki ste ga dobili mleko. Torej, v najpreprostejši načine v človeškem svetu, kako bi se lahko izognete to neumno Scenarij zgodilo kot da si samo na koncu z eno. Njihovo besedilo, da dobro. Ampak kako drugače? Post-it. DAVID Malan: Post-it note. Vsaka oblika sporočila, da pove svojo sostanovalko ne gremo v hladilnik za mleko. Bom šel obnovo sam. Tako da boste nekako morali zakleniti tega vira. Tako da lahko naredimo this-- bomo lahko nekako uniči zgodbo in spremenil v CS zgodbo pri čemer mislim na to, kot je prav tako kot spremenljivka, ki se shrani določeno vrednost. In zdaj, Vrednost mleka je nič, ki jih ne želite, da vaše sostanovalec vpogleda to spremenljivko in nato sprejeti odločitev, ali ga sama temeljijo na položaj te spremenljivke če ste v procesu spreminjanje stanja te spremenljivke. 

Tako je eden izmed vrstic SQL, ki smo daš v PSet 7 specifikacije je to ena tukaj. In ne bomo porabili veliko koliko časa govorimo o tem. Vendar se je izkazalo, če se potrudiš kupiti nekaj zaloge v financah CS50 da že imate nekatere delnice, vas želim, da bi lahko storili več stvari takoj skupaj. Hočeš, da bi lahko učinkovito, na visoki ravni, preveri vse v redu, če želim kupiti več delnic brezplačno, penny stock smo govoriti v spec, Rad bi prvo preverjanje koliko delnic imam. In domnevam, da je pet. In domnevam želim nakup 10 več, sem na koncu želijo imeti 15 delnic zalog. Tako da sem moral vprašati dve vprašanji. Kaj je stanje spremenljivke? Kaj je stanje na vrsti? Koliko delnic ne Trenutno imam? Potem boste želeli iti naprej in ga posodobi. Tako da je analogno mleka, da preverite vrstico, in potem si želim, da jo posodobite ker če želite kupiti 10 delnic, ne želite spremeniti vrstica do 10, ki jih jo želite spremeniti do 5 plus 10 ali, seveda, 15. 

Ta vrstica kode zagotavlja, da ti konceptualne ideje zgodilo skupaj ali pa sploh ne. Nihče, vključno z nekaterimi drugimi uporabnika Kdo je prijavljen na istem spletnem mestu, lahko nekako prekiniti preverjanje vrstice in posodabljanje vrstice, izbrati in posodobitev, če bo. In sintaksa ni zelo očitna, vendar je to ena vrstica, dolgo se je, zagotavlja, da se ti dve dejavnosti preverite spremenljivko ali preverite vrstico in posodobiti vrstica zgodi atomically. 

Oh, tukaj smo spet tam. Besedilno sporočilo na mojem telefonu. Torej, kaj je, da to malo bolj konkreten. Predvidevam, da niste izvajanje hladilnik, in si ne izvaja PSet 7, vendar dejansko banka, ali ATM, Automated Teller Stroj, s katerim vas nekako želim, da bi lahko pooblasti uporabniki za prenos denarja iz enega računa na drugega. OK, počakaj. Bom izklopiti to zdaj, hvala. Zato želimo, da se premaknete denar z eno številko računa v drug račun Številka, posebej 100 $. Torej, to je neke vrste samovoljno Na primer, s katerim si, ATM, morda želeli izvesti dva SQL poizvedbe, odšteje od enega računa, in dodamo na drugem računu. Vendar boste želeli zagotoviti, da so ti dve liniji, tako se zgodi, ali pa sploh ne. Vi ne želite, da nekaj pridobivanje prekinjen. Ne boste nekateri pametni bad guy nekako stoji na Bank of America z dvema bankomatov v sprednjem od njega in nekako nekako vtipkate ukazov hkrati, upajmo, da poskuša do odbitka namesto 200 $ $ 100 in samo s $ 100 v dobro. Skratka, želite, da je to obnašajo natanko tako, kot ste pričakovali. 

In način, kako narediti to SQL baza podatkov ga zaviti v kaj imenuje transakcija. Dobesedno v SQL, lahko pokličete CS50 je Funkcija poizvedba s citatom citata začetku transakcija. Potem lahko izvajate poljubno število kasnejših SQL poizvedb, vendar nobeden od njih bo vpliva na podatkovne zbirke dokler pokličete poizvedbo quote citata zavežejo, če ponovno uporabo PHP. In na ta način lahko zagotovite, da tudi če imate 1000 uporabniki vse hitting svoje baze podatkov istočasno, SQL bo obljubim, da ti dve poizvedbe bo uveljavili eno pravico po drugi. Tako da ne boste na koncu z več kot mleko ali napačnega zneska, končno, denarja. 

Zato imejte to v mislih, ne toliko za PSet 7 ampak za končne projekte če ste dejansko poskuša premakniti podatke po po mizah, kot si morda tukaj. Toda morda še enostavnejše in bolj Očitno razumeti s primerom je to ena tukaj. In nas nekdo po e-pošti o to šele drugi dan ko je videl nekaj podobno spletu. 

Tako da mi je znano, je pin sistem ni občutljiva na ta napad. In nimam pojma, če je celo uporabe Podatkovna baza SQL pod pokrovom. Vendar pa ga uporabljajo za sake razprave. Tukaj je zaslon, ki Harvard ljudje nagibajo da vidim, če se prijavite z njihovimi Harvard ID številko in njihovo pin. In domnevam, da so pin sistem izvaja v PHP in MySQL z baza podatkov, oznaka, da je nekdo Pred morda pisna let lahko videti takole. Prvič, razglasi spremenljivka imenuje ime. In šele zaslužiti, da se od POST superglobal. Nato pa dobil še eno spremenljivko imenovano geslom in storijo enako. In potem samo izvedbo tako dolgo vprašanje tukaj izberite zvezda uporabnikov kjer uporabniško ime je enako tak in tak in geslo enak tak in tak. 

Obvestilo, da kodrasti naramnice sem tukaj uporablja pomeni samo, da PHP, pojdite naprej in nadomestek Vrednost teh dveh spremenljivke tam. Oni niso nujno potrebne, vendar se izogibajo subtilne skladenjske napake. Torej, to je popolnoma izgleda pravi na prvi pogled. In to je. Lahko bi izvajala trn sistem na ta način. 

Recimo, da je super pameten in zlonamerne študent input, da je to njegovo pin. Tako sem odstranil kroglo znaki tukaj v simuliranem up, in sem pravzaprav pokazala, kaj bi on ali ona je tipkanje. In to je malo čudno. Toda kaj skoči ven na vas na potencialno Zaskrbljujoči o vhodnih uporabnikov, tudi če nimate pojma, kaj SQL injection napad pomeni. Zakaj se to poglej malo ribica? Kaj je to? [Neslišno] DAVID Malan: ali je malo sumljivo. Dejstvo je, da je ključna beseda iz SQL. Da ne bi nič dobrega. Dejstvo, da obstaja vsi ti single quotes there-- v resnici, ki je eden od najlažjih načinov za prekinitev nekaj podatkovnih baz je z vpisom imena, kot so O'Reilly da ima opuščaj v njej ker če človek, ki je napisal koda za kulisami ne upošteva, da je lahko posamezni citati v uporabnikov input, in on ali ona uporablja posamezni citati v svojem kodeksu, slabe stvari se lahko zgodi. 

V resnici, še huje, da je to. Če je to spet koda da je nekdo na Harvardu leta nazaj napisal za pin Sistem, opazite, kaj je pa se nadomesti, za uporabniško ime in geslo če uporabnik vnese v ponovno skroob kot njihovo ime in nato en, dva, tri, štiri, pet, quote ali quote citata enega enakopravnimi citiram enega. In opazili, kaj je ključ Tukaj je uporabnik še ni začela svoje geslo ali njihova pin s citatom. In niso ga končal s ponudbo, ker on ali ona se ob predpostavki, da če programer ni bil tako oster, da se dogaja, da imajo tisti, posamezni citati v svoji kodi. 

Torej, tukaj je koda. In zamenjava da Morda je sedaj zgodilo, je to. In sem poudaril, kaj uporabnik vtipka. Torej, pred, po. In opazili, kaj se je rahlo zaskrbljujoče zdaj približno desni polovici tega SQL kode? To je malo bolj zapletena, seveda, od vprašanj smo videli. Toda to nikakor ne more bilo dobro, če ste pravijo, da izberete zvezdo, ki je izberite vse od uporabnika mizo kjer username enaka skroob in Geslo enaka ena, dva, tri, štiri, pet ali ena enaka ena. Kaj je logično posledice te zadnje klavzule predvidoma? To je samo drži vedno. 

In ker smo nekako uganili ali pogruntal s poskusi in napakami da programer, ki napisal ta oznaka ni Pričakujem ljudi ali slab človek vnesete v enojnih narekovajih, kot tudi, lahko skladenjsko dokončanje SQL poizvedbo z nečim nesmiselno ampak nekaj, je sintaktično nepravilna ki vedno ocenjuje, da res. Torej, če je ta oznaka se uporablja za odgovor Vprašanje resnična ali lažna morala ta uporabnik dovoli, da prenese, Odgovor je vedno očitno dogaja da bi bilo res, ker je to vedno dogaja izbrati nekaj iz baze ker je ena od seveda vedno enaka ena. 

Torej, kaj je rešitev? No, v PSet 7, smo dejansko izognili vse to skupaj. Ponujamo vam funkcijo poizvedbo, in smo vam, da uporabljate vprałaje kot ograde, podobno v duhu printf je% s, toda kaj je ključnega pomena o vprašaji tukaj je, če ste dejansko prebrali functions.php, kjer naši Funkcija poizvedba se izvaja, ti vpraĹĄajev so pobegnili, pri čemer vse potencialno nevarne kot je single quote obrnil v pobegli enotno ponudbo. 

Torej, to je tisto, kar je v resnici dogaja, če vas uporabite poizvedbo funkcijo CS50 ali kakršen koli številko od tretjih strank brezplačno knjižnic, ki storijo enako. Ni važno, v tem primeru, v zeleni barvi, če je uporabnik vnesli v enem citatom ker poizvedbo Funkcija, ki jih je napisal bom dodal poševnice nazaj, preden vsak tak nevaren quote. Torej to ni, v Dejstvo, ki bo zakonit. To je tako, kot da vnesete nora išče geslo, ki je, seveda, ne bo da je dejanska geslo skroob 's. 

Torej takeaway za CS50 je ena, Popolnoma vedno uporabite nekaj podobno funkcijo poizvedbe CS50 je ali osnovni knjižnica, ki se zgodi, da se imenuje ZOP. Ampak nikoli, nikoli, nikoli ne kode, kot je ta ne uhaja ali drgnjenja kot pravijo vaši prispevki. In vam bo v nekem trenutku verjetno naleteli na neki spletni strani, kot je ta. Dejansko se zdi, da je tako kot so na letališčih in v hotelih v krajih kjer imajo brezplačen brezžični internet dostop, da imate za prijavo, Te spletne strani so vedno strašno izvajajo. In tako nekako zabave na domu izvaja, ni za zlonamerne namene ali več za zabavo na cesti vaja, je samo tip opuščaj, enojni narekovaj, v obliko, na neki spletni strani in glej kaj se zgodi. In če strežnik zruši ali daje ste neke vrste sporočilo o napaki, lahko zelo dobro je, da nekdo ni pričakovati tega. In potem bi morali opozoriti pravilno organi in nadaljujte pravšnji. 

Torej, zdaj vidva naj upajmo razumeti malo več geek humor tukaj. 

[Smeh] DAVID Malan: Veste, da ste geek. Za naslednjih nekaj let, se boste spomnili ki mali Bobby Tables je ker te risanke tukaj. Tako da se vodijo v mislih, ko smo kontekst stikalo še zadnjič danes JavaScript. Smo preživel razmeroma malo Čas na sintakso PHP ker je to dejansko zelo podobna C. In dovolj lepo, JavaScript preveč je super podobno sintakso C je kot bomo videli v samo trenutek, in kot bomo videli kasneje ta teden še posebej. Kaj lahko narediš s tem jeziku čeprav je vse močnejši, predvsem z API-ji. 

Ampak najprej quick tour. Torej, ena, v JavaScriptu, tam je no glavna funkcija, ki je lepo. Kot pri PHP, lahko samo napisati kodo. Pogoji videti takole. In logične izraze morda izgledal tako ali tako. Stikala obstajajo, in jih lahko videti takole. Štiri zanke videti takole. While zanke videti takole. Storiti whiles videti takole. In potem nizi izgledal To, zelo podobna PHP. Ampak obvestilo, da v JavaScript vas razglasi spremenljivka ne z dolarjem podpisati, ne z vrsto podatkov, ampak dobesedno z besedami var za spremenljivko pred njim. To je preveč ohlapno tipkal s tem, da vrste, vendar ne boste izrecno navajati. Nato pa niz, za instance, morda videti kot je ta, da niz bila postavljena na tem primeru. In potem objekt. In bomo to vidimo več kmalu. In objekt je morda ena od Najpogosteje opaženi podatkovne strukture v JavaScriptu, ki temelji Program saj omogoča si povezati samovoljno Ključne pari vrednosti samo kot asociativne nize PHP in tako kot vaši hash tabele ali pa poskusite kot smo izvajali nekaj tednov nazaj. Torej, kaj je dejansko videli, kaj lahko storimo z JavaScript. In zlasti, da je to perilo seznam funkcij da imajo brskalniki, ki nam omogočajo, da priključite JavaScript na spletni strani na naslednji način. JavaScript je pogosto uporabljena kot strani odjemalca skriptni jezik. To se ne pripravljajo. To tudi razlaga. Toda za razliko od PHP, ki poteka že na strežniku, v spletni strežnik, ali globoko znotraj stranke, JavaScript se razlikuje v tem da običajno poteka v brskalniku. 

Torej vsaka koda JavaScript začnete pisati za PSet 8, ali vaš končni projekt, ali v resničnem svetu je običajno dogaja se shrani na strežniku, absolutno v HTML ali dot dot JS za datoteke JavaScript. Vendar brskalnik se dogaja prenesti, da JavaScript Koda za svoj primer Chroma ali IE ali Firefox, ali karkoli. In koda se dejansko dogaja, da bi dobili izvajajo znotraj vašega lastnega brskalnika. Samo, da je to bolj realna, poglejmo to v konkretni obliki. 

Nimamo pojma, kaj ta koda počne ne da bi zares branje skozi to. Ampak naj gredo na Facebook.com brez prijave. Naj grem k Preglej element in pojdite, recimo, Network in ponovno naložite stran. In bomo see-- Naj premik Reload je Stran, da bi dobili vse zahteve za novo. In prva Datoteka vidim CSS, CSS. Tukaj je prvi JavaScript datoteke, in imam ne vem, kaj to počne, ampak tukaj je nekaj kode JavaScript ki poganja Facebook. To sploh ni res, da je razkrivajo, da jo povečate. To je še vedno prav tako nesmiseln. 

Vendar pa boste videli še doli, tam je še več teh datotek JavaScript. Ops. To je ping. Pojdimo malo nadalje, nadalje, nadalje. Obstaja ena. Obstaja ena. Obstaja ena. 

Torej, čeprav je Facebook, zadaj Prizori, ki je napisana v delu v PHP in Facebook je lastna njihovi različici, tam je ogromno JavaScript. Dejansko je lahko vsak izmed klepetali počnete na Facebooku, katero koli posodobitvami inline Timeline da se to zgodi v realnem času, vse to poganja JavaScript. Ja? 

OBČINSTVO: Nisem prepričan, če je to Facebook, vendar sem mislil, da je Facebook razvil lastne in-house koda jezika? DAVID Malan: So naredili. Torej, to je, zakaj sem rekel varianca PHP imenovan Hip Hop, da so dejansko dodatne funkcije za primer, da kadar Mark izvaja prvič Facebook, je bilo napisano v PHP. In da je nekako ostala nekako sprednjega jeziku ki jih uporabljajo za veliko njihovo kodiranje, vendar ni bil jezik, ki je tehtnice posebej dobro milijardam ljudi. In tako so jim dodali svoje izboljšave v ozadju. In jih uporabite poljubno število drugih jezikov za različne dele njihova infrastruktura. Torej, ja, to je varianca kar zdaj vemo, kot je PHP. 

Torej, kaj si oglejte na nekaj primerov kako smo lahko uporabljajo JavaScript tukaj. V današnjem izvorne kode, imamo kup datotek, od katerih je prvi, pa imenujemo DOM nič. Torej DOM nič izgleda takole. Dovolite mi, da gredo v ta imenik in odprli domzero.html, na vrh, ki ima vrsto dok Izjava, ki pravijo, tukaj prihaja HTML 5. In sedaj tukaj je HTML tag. Tukaj tag glava. In tukaj je, kaj je novega danes. 

Zdaj imamo script tag notranjosti glave strani. In to očitno ne zelo malo, ampak obvestilo da sem definirana skript JavaScript. In kot prahi, saj je to je skupna napačno prepričanje, JavaScript je absolutno nič storiti z Java, jezik da nekateri od vas morda so se naučili v APC. Bilo je bolj marketing stvar kot karkoli, jahanje coattails Java leti. Ampak JavaScript, nič opraviti z Java, samo podobno, in zoprno, zamenjati z imenom. 

Torej, tukaj je, kako se razglasi funkcijo v JavaScriptu, dobesedno pravijo funkcijo, nato ime funkcije, nato vsaka argumenti pa lahko traja, tako kot v PHP. Izkazalo se je, v JavaScriptu, ki je eno od najbolj siten funkcije, ki obstajajo, je Alert. To je malo okno, bo pop up in vas opozori do neke podatek. To je splošno namrščil. Ampak ga bomo uporabili kot naš Prvi poskus tukaj. 

Opazili nekaj funkcij JavaScript. Enojni narekovaji in dvojni narekovaji pa dejansko ni več važno. Enojni narekovaji in dvojna quotes mogoče zamenjati, ker je v C, boste morali uporabiti dvojni narekovaji za godala, in imate dva enotnega citira za znakov. V svetu JavaScript, veliko ljudi, večina ljudi Uporabite enojne narekovaje godala samo zato, ker je slogovna stvar. Toda kaj je operator plus tukaj ki jih nismo videli že prej? 

OBČINSTVO: Spoj. DAVID Malan: Spoj. Torej, C nima niti tega. PHP ima operaterja dot, ki to stori. JavaScript mora operaterju plus, ki ga je mogoče zamenjati, je tako kot Java. Zdaj, kaj se tukaj dogaja? 

Torej, tukaj je, kjer osnovna razumevanje te slike smo bruhal par dnevi prihaja v igro. Se spomniš, ko smo imeli preprosto Različica HTML page-- je pravkar rekel, zdravo svet. In potem smo narisal drevo na desno, ki imela kup pravokotnikov in črt jih povezuje kot družinsko drevo. Torej, to je tako imenovani DOM ali Document Object Model. In se izkaže, da lahko dostopate do pravokotniki v drevesu s sintakso kot naslednje. Dobesedno pravijo dokument, ki je posebna globalna spremenljivka v JavaScriptu Program, ki ima funkcijo povezane z njo, da lahko dostopate do podobno kot struct, ampak si preprosto pravijo piko in nato ime funkcija je, dobili element z ID. 

Element želim, da bi dobili, je očitno citiram konec citata ime. In potem hočem, da bi dobili svojo vrednost. Zdaj smo dobili pred sebe. Nisem še prepričan, kaj vse to gre. Oglejmo hitro naprej v HTML na stran, ki je zelo preprost. 

Obvestilo, da sem definirana tvorijo tukaj. Obvestilo sem ji dal edinstven ID, čeprav smo ne uporablja Ta atribut prej. Toda to obstaja v HTML. Lahko enolično identifikacijo nekaj kos HTML z identifikacijsko oznako, kot je ta. 

Obvestilo zdaj this-- izkaže HTML podpira, na tem seznamu perila pred nekaj trenutki, celotna Kup viličarji dogodkov. In ta dogodek trener piše na oddajte. Na uporabniškem predložitvi tega oblika, pokličite naslednjo kodo. In kodo, ki se dogaja da se imenuje ali usmrčen je točno to, grški Funkcija sledi return false. Vse ostalo naj precej pozna. 

Tukaj je vhod tipa besedila, katerih ID, v tem primeru, se bo ime. Nimamo dejansko ime atributa to time-- in predložiti gumb. Tako izhaja stran izgleda takole. In posledično obnašanje, boste videli, izgleda takole. Stran krajevni gostitelji pravi, zdravo David, komaj estetsko način, da se pozdravi uporabnika. Ampak, kaj se dejansko dogaja? 

No, razmisli, kaj to je. To je polje besedila. In v skladu s HTML tukaj, sem ga dal enolični identifikator imenovano quote citata ime. Medtem, sem dejal, ko uporabnik predloži obrazec s pritiskom Enter ali kliknite Submit gumb, pokličite funkcijo imenovano Greet in se nato vrne False. Oglejmo si tiste, v obratnem vrstnem redu. Opazili, ko sem kliknite Submit URL te strani ne spremeni. Icon brskalnika ni začela vrti. Nisem šel nikamor, in to je dobesedno, ker sem rekel vrne False. Return false kratkega stika ali ustavi Privzeto vedenje obrazca. Tako da nam potem ostane tale zadnje vprašanje. Kaj Greet storiti? No, očitno Pozdravite poziva funkcijo imenovano Alert, prehaja v enem dolgo argument, da je Rezultat concatenating skupaj kup podnizov, zdravo vejico prostor, potem pa karkoli že to vrne. Torej dokument je kot globalna spremenljivka za ta koren tega drevesa, sklical posebno funkcijo, drugače sedaj znana kot metoda. Funkcija, ki je Notranjost je spremenljivka imenovana metoda namesto funkcije. 

Torej dobil element z ID. Kaj element kajne želeli dobiti njegov ID? Quote citata ime in nato pa še posebej cenijo. Torej, z drugimi besedami, da je koda preprosto ugotovi besedilno polje, katere ID je ime in potem dobi svojo vrednost. Torej, če bi bil jaz to spremeniti in reči Davin namesto Davida, in kliknite Submit, zdaj smo ima pozdrav za Davin. 

Vse je v redu, tako da je vse lepo in prav. Ampak poglejmo, če lahko naredimo to malo čistejši od pravkar pisanje kode, kot je to običajno dogaja, da se namrščil. To se dogaja, da si strašnejši. Toda kaj je prva razliko, da si zabeležite tukaj v tej različici poleg ime spremeni v DOM enega? Kaj strukturno videti drugače O tem proti drugemu? Ja? OBČINSTVO: Je oblika na top scenarija zdaj? DAVID Malan: Ja, oblika je na vrhu skripta za nekaj radoveden razloga. Tako, da je prva stvar, da skoči ven na mene, preveč. In na srečo je vsaj, Ta del je enak. Tako da je edina stvar, ki se zdi različen je to. 

Torej, tukaj je tisto, kar je lepo O JavaScript 2. In je zato težko razumeti na prvi pogled, zlasti za končne projekte, če iščete na primer kode na spletu, vendar pa izvira na nekaterih osnovne skladenjske funkcije. Tudi tu je, da Globalna spremenljivka dokument. Tudi tu je, da je metoda ali funkcija ki pravi, da bi dobili element z ID. Tokrat želim dobili ID imenovano demo. Kje je to? To je očitno prav tukaj, oblika sama. 

In zdaj opazil, da očitno, če sem dobili nazaj, da je vozlišče drevesa, ki predstavlja obliko sama po sebi, ne polje besedilo, Izkazalo se je, da je oblika, ki vozlišče ali pravokotnik z drevesa, Ima kar pokličem nepremičnino, Zelo, zelo, zelo podobna v duhu na struct v C. To je samo Član podatkov znotraj tega pravokotnika. 

Torej, imam obrazec tukaj, in sem pritrditev, ali sem dodelitev, za njegovo On Pošlji Vodnik oziroma On Pošlji nepremičnine naslednje funkcije. In to je daleč najbolj nora stvar tako daleč skladenjsko. Izkazalo se je, v JavaScript in PHP, in odkrito povedano, za to zadevo v C, čeprav ne bomo storili, lahko dodaj brezimna, anonimne ali AKA lambda Funkcije, ki nimajo imena vendar pa se lahko imenuje vseeno. 

Torej, kaj delam tukaj se bom dodeljevanje Na ta Pošlji premoženje, ki je znotraj tega vozlišča mojega DOM drevesu funkcija, kazalec, če bo. Da funkcija nima ime, ampak da ne pomembno, ker bomo videli v trenutku, kako ga imenujemo. Ko je ta funkcija imenuje, Ta oznaka postane izvršen, potem lažno se vrne tako kot prej. 

Ampak obvestilo, kaj sem naredil. Na tej točki Zgodba, imam obrazec. Ima edinstven ID imenovano demo. Dol, imam script tag da izvaja naslednje kode. Veže se ta vozlišča v drevo, ki mu je On Pošlji lastnost ta funkcija tukaj. In samo z naravo, kako delujejo brskalniki, ko sem zdaj kliknite Pošlji ali pritisnite tipko Enter, da funkcija se dogaja, da se imenuje. Ne potrebuje imena ker kdo vraga briga, kako se imenuje. Samo čas, ki ga je kdaj bo dobil pozval je, ko sem se predloži obrazec. Nobene potrebe ni za mene, človeški razvijalec, da ga dejansko pokličete kjerkoli drugje. 

Zdaj pa samo kot teaser, kot da niso bile dovolj moti upogibanje, bomo lahko celo to videti bolj Grobni uporabo super priljubljena knjižnica imenuje jQuery. V resnici jQuery in JavaScript so pogosto združevali. In kaj bomo naredili v sredo, je začetek uporabo tega jezika in te knjižnice graditi bolj asinhrona in dinamične aplikacije kot zemljevid pridobivanje aplikacije, aplikacije da posodobi spletno stran v realnem čas, podobno kot Facebook ali Gchat storiti, in ne več sami omejiti na streljanje na Oddati ga get ali samo delovno mesto sam. Zato vas bodo videli v sredo. 

[Predvajanje glasbe]