[Glazbom] DAVID Malan: Ovo je CS 50, a ovo je početak tjedna devet. A ono što smo mislili da ćemo to danas nije samo zatvoriti poglavlje o prošlotjednom Materijal gdje smo usredotočeni na poslužitelju strana web programiranje s PHP i SQL, neke stvari baze podataka. Razgovarat ćemo o malo Sigurnost danas i onda prijelaz na strani klijenta programiranje jezik poznat kao JavaScript. Ali prvo, neki otkupljenje. Možda se sjećate da je Srijeda, sam krenuo napisati web stranicu koja uzeo je u korisnikov ulaz pomoću HTML obrazac koji se zatim pohranjuju da korisnik ulazni imena, telefon Brojevi i mobitel nositelji u bazi podataka. A onda sam imao malo naredbu Linija scenarij napisan u PHP koji je trebao ponoviti više redaka u bazi podataka i slati SMS poruke. Unatoč nekoliko, nekoliko pokušaja, mi nisu dobili taj rad do kraja. Tako sam proveo cijeli ovaj tjedan raditi na taj broj kako bi dobili nas prošlosti točke tamo gdje smo stali, pri čemu svi Dobio sam do kraja u srijedu je ovaj tekst poruke od Margo kao što sam se borio, nakon čega slijedi SMS poruke iz drugoga kolega, Imate ovu Davida. Slijedi ove, predivno ohrabrujući. Zadržao na ide, vrlo ohrabrujuće. Skoro sam ga dobio do then-- i to je napomena da je završila u srijedu. A onda je zapravo možda i moj favorit, Trenutak kasnije, taj je došao u. Prokletstvo live stream. Tako je danas, možemo popraviti ovo s brzim pogled na ono što sam učinio tada. Dakle, sve ove kôd je dostupan online od prošlotjednog, tjedan osam, izvorni kod. I vidjet ćete da sam prošao, a ja zapravo očistio stvari malo. Upoznao sam par drugoga značajke SQL baze podataka. Na primjer, umjesto samo bi nositelj var char kao što mislim da sam učinio u letu prošlog tjedna. Umjesto da sam ga definira kao ono što se naziva nabrajanja. A neki od vas možda vidio ovo kao što smo istražiti C nabrajanja je zapravo značajka C gdje možete nabrojiti hrpu konstanti i dodijeliti ih automatske vrijednosti, kao jedna, dvije, tri, četiri bez tvrdih kod brojeva. Dakle, SQL podržava isti, pri čemu ako se imate polje baze podataka koju je samo žele da se na jednoj od konačnih Vrijednosti, možete doslovno ga navesti kao što sam učinio bilo za četiri Popularni američki mobitel nositelji. Tako sam to učinio. I ja sam napravio niz promjena što i od kojih je najvažnija je da se e-mail raditi jer opoziva, da je ovaj program oslonio na kojem obično naziva e-mail na SMS gateway, što je samo fancy način govoreći da je Verizon, i AT & T, a drugi ljudi podržavaju poslužitelj, pri čemu ako primi e, to ga pretvara u SMS i šalje tekst Poruka na nečiju telefon. Dakle, ako sam to učinio ispravno, Ovdje je novi i poboljšani oblik koja će se razgovarati novi i poboljšani broj, koji možete igrati online. I nadamo se da će napraviti moj Telefon piskutavi u samo trenutak. Tako je prvi, ja ću upisati u moje ime. Drugo, ja ne idem to ovaj put učiniti. Ja ću učiniti Pregledajte element. A to je samo mala stvar tako da ne znam stvaraju sati postprodukciji raditi kao što sam prošli put. Sada je moj broj telefona. Odabrat ću Verizon. I ovdje, idemo okrenuti na ovoj mikrofon ovdje, a cilj to na moj telefon ovdje. Idem kliknite registar, koji je trebao nadamo stavite ga u bazu podataka. Sada ću ići u naredbenog retka program, koji Opoziv se zove dot slash tekst i fige. Ovdje ćemo ići. [PHONE tragova] [PLJESAK] DAVID Malan: Pa zabavnije od this-- to je zabavno, naravno, ako se u nju. No, to je zabavnije, mislio sam, ako mi stvorio jedan od onih filmskih trenutaka gdje se kao nešto stvarno loše se dogodilo u svijetu, i kao i svi NSA Narodne mobiteli početi bip s tekstualnim porukama upozorite ih na ovu činjenicu. Pa sam mislio da će pokušati da ponovno isto ovdje, pri čemu se ne koriste bazu podataka, I umjesto da se unaprijed je napisao program koji izgleda ovako. To je index.php-- i ja staviti ovaj kod on-line kao well-- koji očito Samo čini form.php, pomoću MVC stil paradigmu koja smo govoriti o detaljnije u problemu setu sedam. Taj oblik je prilično jednostavan. To će dostaviti Datoteka naziva here.php poštom. I to očito ide pitati za ime i broj telefona, a zatim preko takozvane Odaberite izbornik, to je će vam dati najmanje četiri Popularni američki mobitel prijevoznici, a onda vam omogućiti da učinkovito uzeti pohađanje klikom ovdje. I ovdje, u međuvremenu će se posuditi neki od koda od prošlog puta. A ako ste samo dotaknuti to, vidjet ćete da postoji cijela hrpa provjere pogreške. No, ljepota na kraju je da mi ne pišete u bazu podataka i danas. Mi smo imajući to jednostavno i Samo slanje nadam SMS poruka putem funkcije I. napisao je u proteklih nekoliko dana poziva Tekst, koji je u funkcijama. php, što je opet dostupan online. Dakle, ako želite sudjelovati u tome. Nećemo biti spremanje ništa. Idi na ovom URL ovdje u realnom vremenu. Nemojte ga podnijeti samo još, ali neka je vidjeti ako možemo imati jednu od ovih film trenuci u kojima svačija mobitel počne oglašavati zvučnim signalom, nadamo se samo Jednom ove godine za razliku od 2011. godine gdje je ovaj otišao užasno krivim putem. I jednom kada ići na tu adresu, trebali biste vidjeti super jednostavan oblik da, ako imate ime, mobitel broj i mobitel prijevoznik koji odgovara popis tamo, idite naprijed i ispunite obrazac. Ali ne pogoditi podnijeti samo još. Obrazac će izgledati ovako. Idi naprijed i upišite Vaše ime i prezime, broj telefona. Oop, netko ide ispred krivulje. To je u redu. U redu, svatko je ispunjen obrazac. To bi trebalo raditi na telefona, također, ako želite. U redu, na svojim oznakama, pozor, ići. Hit ovdje. Što je? Ne. Kunem se Bogom, sam testirao to više puta danas. Možete ga dobio? [Ubacivanjem GLAS] DAVID Malan: OK, korisnik pogreške možda. To je dva. On je radio za dvije od Nekoliko stotina, tri, četiri. U redu, to je dobro. Četiri od pet za ispravnost o tome. Dakle, što se upravo dogodilo? Dakle, vjerojatno, ne vidim svoje ekrani, zašto bi moglo da se errored? To je vjerojatno da smo bili samo pokušava napraviti previše veze na Harvardu mail server sve na Jednom od iste IP adrese. Ja sam samo nagađanje, jer nisam imati luksuz testiranja ovaj kod s nekim 300 ljudi unaprijed ali za sada shvatiti da da bi barem trebala dobivši posao učinio ovaj put. U redu, pa zašto je to sve više povezan s onim što se događa? Pa prvo, brzo Nekoliko najave. Dakle, jedan, ako želite da se pridruže Chang, i Nick, a drugi na ručku ovaj petak, to RSVP na uobičajenom URL tamo. Ako ste mislili koncentriraju ili radi sekundarna u CS, da li ste student, ili brucoš, ili čak mlađi ili stariji u ovom trenutku i još uvijek može stisnuti u tečajevima, shvatili da inženjerske škole je okupljanje za besplatno Ben i Jerry sladoled i savjeti u srijedu nedugo nakon klasa u 4:00 sati u CS zgradi na Maxwell Dworkinu. Ako je ovo prebrzo na zaslonu, samo idi da cs50.harvard.edu za link na Facebook događaj gdje možete vidjeti detalje. U međuvremenu, mislila sam da ću ispraviti još jedna stvar koju sam goofed srijedu. Ispada da je Marka ID Facebook nije bio tri. Bilo je četiri. Ispostavilo se da je imao više testa računi nego se sjećam. No, što to osjećao kao na priliku učiniti je podići URL kao što je ovaj. Tako ispada da Facebook ima API, Application Programming Interface, što je mehanizam kojim vas može zatražiti podatke programatski na Facebooku i vratiti stroj čitljive informacije, a ne web stranice nego samo sirovi tekst, nešto zove JavaScript objekta oznake. A u stvari, ako posjetite ovaj URL-i povećavanje, po defaultu, ovo je Marka javno dostupne informacije. A zanimljiva pojedinost ovdje je samo da njegov ID uistinu, broj četiri, koji sam shvatila čim sam to učinio. To možete učiniti sami ako znate vaša Facebook korisničko ime, ako ga imate. Samo upišite ga do vrha tamo. I ništa od toga nije privatna. Ja samo to, čak u anonimnom načinu rada. Pa nisam ni prijavljeni. A ti vidim da sam očito je korisnički broj 6454 na Facebooku, što nije Šteta ovih dana. Dakle, u svakom slučaju, vidjet ćete dodatne informacije tamo. I korisni aspekt to je da vas mogao napisati vlastiti softver koji nekako integrira podatke kao što je ovaj u vlastitoj aplikaciji. Možete osnažiti korisnicima na prijavite se na svoj web stranici, Ne koristeći svoje korisničko ime i prilagođenu Lozinka ali možda njihov Facebook login i dobiti informacije, čak i o svojim prijateljima, ako oni odobre takav, ili slično. Dakle, imajte na umu da je CS50, također, ima neke od svojih API-ja, jedan za podatke kataloga, naravno, neki za zagrljaje izbornika u blagovaonici dvorane, svi građevine i mjesta na kampusu imamo API za te koje možete upita slično i dobiti natrag tekstualni podaci koje možete integrirati u PHP ili Javascript, ili čak, iako rjeđe, C temelji završnog rada. Doista naprijed za konačni Projekt nekoliko prekretnice. Imaš e-mail od nas neki dan. Shvatite da je prijedlog je zbog toga dolazi u ponedjeljak. To nije nužno i obvezujuće, ali trebate primati nastavnih bližnjima odobrenje prije nego što sve nakon toga mijenja. A onda su ispred niz drugih događaja. Tako da vas zafrkavati, također, s nekim mogućnostima, imamo hrpu ove nijanse žarulje. A neki od vas sada imaju neke od njih u svom domu sobi kao dobro. I oni imaju API. Dakle sjetim tih binarnih žarulje tjedna Prije da je Dan Bradley i Ansel Duff je stvorio za nas. Oni su koristili softver sučelje ovo žarulja, koje u ovom trenutku priključen u električnu energiju a zatim putem bežične povezan na malo stvar zove most ovdje, kao malo usmjerivač vlasnički na ovom uređaju. No, ispostavlja se, ako znam kako slanje HTTP poruke, kao što svi sada učiniti, Mogu poslati poruku kao što je to ovo žarulja da ga uključivanje ili isključivanje ili učiniti bilo koji broj ostali poslovi na njemu. Uočite da to nije mogao, to ne postavljati. Tu je još jednom pozvao staviti. Tu je zapravo još nekoliko takvih glagola. Ali primijetite postoji put tamo, slash API, slash novi developer, slash svjetlo, slash jedan, slash stanje. To je očito samo Put koji tvrtka Philips, odlučio morate pogoditi s HTTP zahtjev ako želite promijeniti stanje od žarulja pomoću HTTP 1.1. Zatim primijetiti praznu crtu. I onda na kraju ono što izgleda kao vrsta niz neke vrste, to opet će se zvati JavaScript Objekt oznake, ili Jason. A ono što vidite ovdje je da postoje tri ključna para vrijednosti. Jedan ključ je pozvao. I njegova vrijednost očito će biti istina. Svjetlina je 128, što je neka vrsta int. A onda prijelaz vrijeme nula, što je očito koliko dugo će poduzeti kako biste ovu stvar dalje. Tako sada ovaj žarulja isključena. Ali ako činim upravo this-- neka da odem na malo varati list da je Dan postaviti u advance-- i ja ću ići naprijed i kopirati sljedeću naredbu. Curl, kao što neki od vas možda sakupljen na CS50 Raspravite je alat kao što je Telnet takvog da može simulirati HTTP zahtjeva, posebno stavlja. Ja mogu poslati te podatke, posebno što smo upravo vidjela trenutak prije specifično na ovom URL više ovdje. A onda Curl će nositi sve potrebne zaglavlja raščlanjivanja i tamo je. Dakle, sve što morate učiniti je kopirati ovo u terminala prozor, a zatim pritisnite Enter. A žarulja ide dalje. I to sve ide preko moje računalo bežično nekako do mosta, koji je je tada u razgovoru s ovom žarulja. Ja mogu učiniti nešto drugo. Ja mogu napraviti ovu stvar pocrveni na primjer. Mogu primjerice napraviti ova stvar ići zelena. Ja mogu učiniti ići plava. A primjetiti u svakoj od tih instance, sve da sam mijenja je tzv nijansa vrijednost zapravo da je to malo boje. Pa neka mi zalijepite ovaj kao dobro. Sada je plava. A vi možete učiniti čak i ljubitelj stvari where-- idemo u zeleno. A ja mogu to učiniti od Naravno, s mojim vlastitim kodom. Ali čak i sama API podržava funky operacije kao što je ovaj, što će se sada zamarati nas za sljedećih 30 sekundi. Dakle, to je jedan djelić onoga što bi moglo učiniti s API, ovo uključuje žarulje. Imajte na umu da CS50 ima par para Google Glass ako želite Željeli bi se borila nešto zajedno one linije, Arduino UNOS, koji su maleni malo računalima, uglavnom, na maloj pločici da se možete povezati žice i druge stvari da se i zapravo kontrola Vaš stvarni svijet okoliš. A onda tu su par od nove igračke koje imamo. Ovo je jedna doslovno samo stigao Neki dan putem pošte, Myo vrpcu. A ja mislio da je način dobili ste uzbuđeni o projektima da biste mogli koristiti s takav hardver bi se igrati ovaj kratki isječak da oni koriste zafrkavati ljude da sada živimo u budućnosti. [Glazbom] DAVID Malan: Tako je u samo nekoliko tjedana, što također može biti da je super na CS50 sajmu. Još jedan uređaj koji smo ima hrpa koji smo rado posuditi za projekte naziva kontroler pokreta. To je malo USB uređaj povežete na računalo koje omogućuje interakciju s vaš laptop, Mac ili računalo, kao da ste imali kao Xbox Kinect i zapravo čine fizičke pokrete mnogo kao što vidimo u tome vizija budućnosti. [Glazbom] DAVID Malan: Dakle, čak i ako imate nemam pojma kako nešto slično eventualno mogao biti izmišljen ili rad na razini hardvera, bez obzira. Čak i nakon samo nekoliko mjeseci CS50, i razumijevanje programiranja općenitije, i web programiranja više Nedavno, a potom i API-ja, i HTTP, ćete imati pristup putem softvera API-ji, ako vas želim posuditi jedan od njih Uređaji zapravo razgovarati s njim i ne morate brinuti o Provedba temeljne pojedinosti, što je potpuno u skladu s ovim pojmom raslojavanje apstrakcija koje smo vidjela tijekom semestra. Tako je također tijekom vikenda, Vidio par komada vijesti. Idi prvi, ići na seminare, ako vas želite saznati nešto više na bilo koji broj tema. Pogledajte URL tamo. I ovaj je bio poslan ja Chang, koji znate, tko ispisuje našu vojsku slonova. I to je bio naslov na sljedeći način. Ja sam prestrašena moj novi TV. Zašto se bojim okrenuti ovo stvar na i vama bi bilo previše. Tako smo sada na točka u semestru, također, u kojoj čak i ako imate najmanji razumijevanja o tome kako web radi, i HTTP, i sigurnosti, stvari kao što je ovaj trebao početi uhvatiti vaše oči. Ali isto tako, da ćete shvatiti da li su te stvari ili ne stvarne prijetnje. Zato sam uzeo nekoliko izvadaka iz ovog članka ovdje. A priča je sljedeća. Ja sam sada vlasnik Novi pametni TV, koji je obećava streaming multimedijalnih sadržaja, igara, aplikacija, društveni mediji i internet pregledavanja, oh i TV previše. Jedini problem je u tome što sam sada bojao da ga koristiti, kaže autor. Ti bi se, također, ako ste pročitali kroz 46 stranica pravila o privatnosti vašem televizoru. Količina podataka ovog prikuplja stvar je zapanjujući. To logove gdje, kada, kako i koliko dugo ćete koristiti TV. Ona postavlja praćenje kolačiće, kao što smo razgovarali, i farovi osmišljen otkriti kada imate pregledan posebno sadržaja ili Posebno e-mail poruka Ako želite provjeriti e-pošte na vašem televizoru. On bilježi aplikacije koje koristiti, web stranice koje posjećujete, i kako komunicirati sa sadržajem, radiš sve to preko svog pametnog televizora. Također, creepier yet-- to je moj addition-- je izgrađen u kameru prepoznavanje lica. Cilj je pružiti gesta upravljač za TV i omogućiti vam da se prijavite na personalizirane račun pomoću svoje lice. Na naglavce, slike su Spremaju se na TV-u, umjesto ustupio za korporativne poslužitelju. S druge strane, internet Priključak čini cijelu TV osjetljiva na hakere koji su pokazali sposobnost preuzeti potpunu kontrolu nad strojem. Više zabrinjava, kao da to nije bilo dovoljno pametan, je mikrofon. TV ima glas Prepoznavanje značajka koji omogućuje gledateljima da kontrolu Zaslon s glasovnim naredbama. No usluga dolazi s a zloslutna upozorenja. Imajte na umu da, ako Vaši izgovorena riječ su osobne ili druge osjetljive Informacije, da informacije će biti među podacima zarobljenih i prenosi na treću osobu. Imaš to? Nemojte reći osobne ili osjetljive stvari ispred TV-a. Dakle, ovo je zapravo za real. I teško je ne vidjeti ako vas ići na Best Buy ili slično za televizore ovih dana. Oni su svi pametni na neki način. I oni su uzimajući pametniji i jezivije. I oni su jednostavno prikupljanje podataka na način da smo razgovarali o tome a zatim ga upload preko HTTP ili neki drugi protokol na neki poslužitelj. Tako je to bilo od zabavan članak U ovoj online web stranice Ovdje, koji je govorio o Posebno bug ili pogriješili kod koje zapravo možemo povezati u prošlotjednom raspravu. Dakle, ovaj naslov je bio slijedi, priča ide ovdje, Josh Breckman radio Tvrtka koja je sletio ugovor razviti upravljanje sadržajem Sustav ili CMS nakon što se zove, za prilično velike vladine web stranice. Velik dio projekta uključeni razvoj sustava za upravljanje sadržajem tako da zaposlenici bi se mogućnosti za izgradnju i održavanje sve mijenja sadržaja za njihovim stranicama. Stvari otišao prilično dobro nekoliko dana nakon ide uživo. No, u šest dana, stvari nisu otišli tako dobro. Sve sadržaja na Web stranica je u potpunosti nestao. A sve stranice dovelo do zadane, unesite sadržaj web stranice. Ups. Josh je bio pozvan u istražiti i primijetio da je jedan posebno uznemiruje Vanjska IP adresa je imao otišao i brišu sve sadržaja na sustavu. IP adresa ne pripada na neki inozemstvo hakerske savijena na uništavanje pomoći Informacije vlada. To odlučio googlebot.com, Googleov vrlo vlastiti web puzeći pauk. Ups. Nakon malo istraživanja i remećenje okolo pronaći noncorrupt backup, Josh pronašao problem. Korisnik je kopirao i zalijepiti neki sadržaj iz jednog Stranica na drugo, uključujući Uredi Hyperlink urediti sadržaj na stranici. Obično to ne bi bilo Pitanje budući vanjskog korisnika bi potrebno unijeti ime i lozinku, ali CMS sustav autentifikacije, sustav za prijavu, ne uzeti u obzir sofisticiran sjeckanje tehnike Google Spider. Ups. Kao što se ispostavilo, Google Pauk ne koristi kolačići, što znači da može jednostavno zaobići ček za prijavljen na skupu kolačića biti lažno. Također ne obratite pozornost na JavaScript, koja bi normalno brz i preusmjeriti korisnike koji nisu prijavljeni. To međutim ne slijedi svaki link na svakoj stranici se nalazi, uključujući i one s Brisanje stranice u naslovu. Ups. Dakle, što to znači u više tehnički, ali prilično dostupne pojmovi? To samo znači da je tijekom svoje web stranice, imali su URL-a ne za razliku ovog koji možete vidjeti u Problem postaviti sedam. Podsjetimo u problemu postaviti sedam ili znate u problemu postaviti sedam da ste izazvali, između ostalog, prodati dionice na ime korisnika. No provedbi tu značajku način od dobiti putem linkova u vašem korisnika sučelje, vjerojatno Ne najpametniji ideja jer ako vaš site je nekako dostupni bilo čovjeka tko klika oko ili kupiti bot poput Google-a, ili pauka nakon što se zove to je samo indeksiranja weba pokušava indeksa Web kao tražilicu, su mogli vrlo lako hit putem dobili ovakvu URL. I to je funkcionalno ekvivalent, u ovom slučaju, prodaju svih dionica Googlea. Sad iskreno, to je potpuno glup da CMS korišteni JavaScript i kolačići implementirati svoj sustav za prijavu a ne radi tu stranu poslužitelja, kao što je vi učiniti i da će se u PSet 7-- postoji login.php file-- uvijek, uvijek, Uvijek sigurnost bi trebao biti učinjeno na strani poslužitelja, nije na strani klijenta, jer, kao što je to članak sugerira i možda sami vidim u nekom trenutku, to je trivijalno za korisnika, dobro ili loše, samo isključite JavaScript da ne spominjem kolačiće. Tako da je vaš dnevni WTF. Postoji još jedan, koji je samo vrsta zastrašujuće, pa ću ga spomenuti, ako samo kao lekciju života. Svaki put kada koristite aplikaciju zove se kao Snapchat ili slično koji kaže ove fotografije trajati samo pet sekundi, deset sekundi ili sitnica. Oni su prolazna To je apsolutno nije slučaj. Kao da ne postoji način, digitalno, provesti neki oblik videa, ili slike ili tekstualni dijeljenje kao da je primatelj na drugom kraju Ne mogu nekako spasiti podatke. U većini naivan način, netko mogao uzeti svoj telefon. I oni imaju drugi prozor 10 dok gleda u nekom trenu samo uzeti neki drugi mobitel i fotografirati ga, očito. Na taj način možete sačuvati nešto digitalno na taj način. Neki od vas zna kako se screenshot na vašem telefonu. U stvari, ako ne znaš, shvatite da barem Snapchat, i mislim da drugi Prijave ovih dana, barem ako vam kažem primatelj ima zapravo uzeti screenshot vaše slike. No, još gore, to je bio snappening, kao što je netko skovao je nedavno, gdje su neki 100.000 sjedne bio pušten u ono što se zove torrent datoteka na raznim web stranicama u konačnici. I to je sadržavala hrpu privatnih poruka i postova. Ispada većina njih benigno, tako da nije ono što bi mogli očekivati. No, budući da su ljudi imali koristiti treće strane web stranice, prijave sa svojim Snapchat korisničko ime i lozinku, a zatim Ušteda sve svoje snaps na ovoj web stranici treće strane. I to je to treća strana website koji je sjeckan, koja je upravo značilo je netko shvatio kako dobiti sve 100.000 plus tih slika u svom tvrdom disku za daljnje dijeljenje. Iskreno, ovdje, to je vrsta od glup da Snapchat se provodi na takav način da se treća strana može sortirati od križanju podatke i da nije vezan za svoj vlastita aplikacija trčanje na telefon. Ali ovdje, također, shvatiti da to stvari koje ne bi trebali uhvatiti po iznenađenje, ili barem tamo trebao biti života lekciju ovdje. Ako želite tehničku Pojedinosti potražite na tom URL-ima to je u današnjem slajdovima. U redu, bilo kakva pitanja o današnja lekcija života u CS? Turn off to. Bilo što? Bilo što? Imam puno ljudi provjeru njihova Snapchat ili nešto sada. U redu, SQL, Structured Query Language. Idemo završiti ovo. I također, iako mi smo samo grebanje Površina ovog jezik, mi ćemo vam dati dosta jezika u obliku PSet 7 tako da možete uhvatiti u koštac neke prilično česta funkcionalnost. No, shvatili su par stvari koje ne zahtijevaju od vas, ali oni će biti važno doći završne projekte a sigurno dolaze izradu stvarna web stranice sa stvarnim korisnicima je ovaj dizajn odluka. Ispada da je u MySQL baza podataka, te imaju grozdove izbora kao vrste podataka za svoje stupce i druge stvari, ali ćete također imati Izbor tzv skladištenja motor za sve vaše podatke, vrsta datotečnog sustava, ako ste upoznati, za sve vaše podatke. Koji format je to u konačnici pohranjena u? A najčešći, možda, bio MyISAM i InnoDB, tehnički uvjeti da ćemo stalo samo do te mjere da se mora a jedan nema Sljedeća značajka. Pretpostavimo da imate Malo spavaonica hladnjak. I pretpostavljam da vi i vaš cimer, koji dijele ovaj hladnjak, stvarno vole recimo mlijeka. A to je, u stvari, koliko je Priča je rekao da mi je put natrag u dan kad sam uzeo tečaj zove CS 161 Operacijski sustavi, koji Slično istražuje ovu temu. Dakle imaš taj hladnjak. Ti si iz mlijeka. I dođete kući, tvoja cimerica je još uvijek u razredu ili bilo što drugo, a vi odlučite da ću izaći i dobiti malo mlijeka. Tako da zatvorite frižider, zatvor spavaonica soba, ide preko ulice na CVS ili gdje god, i dobiti u redu kupiti mlijeko. U međuvremenu, vaš cimer dođe kući iz razreda, dobiva u sobi u studentskom domu, otvara hladnjak, također shvaća ooph, mi smo iz mlijeka. Dakle, on ili ona zatvara hladnjak i onda se događa ići na drugu CVS, koji se dogoditi da bude jedan blok daleko od drugih CVS na trgu, i dobiva u redu tamo dobiti malo mlijeka. Sada, naravno, nekoliko minuta kasnije, obojica vratiti, a najgore od svega je moguće ishodi se dogodilo. Obje od vas ima mlijeka. A ti stvarno ne kao mlijeko toliko. Dakle, jedan od njih je samo ide kiselo u nekom trenutku. Tako sada imate pretjeranu količinu mlijeka u hladnjaku sve zbog čega? [Nečujan] DAVID Malan: Da, nisi nekako komuniciraju jedni s drugima koje su sve mlijeko. Tako je u najjednostavnijim putovi u ljudskom svijetu, kako možda bi to izbjegli glup Scenarij iz događa, kao da ste samo završiti s jednim. Tekst ih, da dobro. No, kako drukčije? Post-it papiriće. DAVID Malan: post-it note. Bilo koji oblik komunikacije koji govori svoj cimera ne ide u frižider za mlijeko. Ja ću ići obnoviti zalihu na svoje. Dakle, nekako je potrebno zaključati taj resurs. Dakle, možemo napraviti this-- možemo vrsta upropastiti priču i pretvaraju se u priču CS pri čemu mislim da to što je baš kao i varijabla, koja je pohranjivanje neku vrijednost. I upravo sada, Vrijednost mlijeka je nula, koje ne želite da vaše cimer pregledati tu varijablu a onda donijeti odluku njega ili sebe na temelju stanja te varijable Ako ste u procesu mijenja stanje te varijable. Dakle, jedan od linije SQL koje smo dati u PSet 7 specifikaciji je ovaj ovdje. I ne trošimo ogromne Iznos od vrijeme govori o tome. Ali ispada, ako pokušavate kupiti neke dionice u CS50 financija koje već imate neke dionice, vama želite biti u mogućnosti to učiniti niz stvari odmah zajedno. Želite li biti u mogućnosti učinkovito, na visokoj razini, provjeriti sve u redu, ako želim kupiti više dionica besplatno, penny stock smo govoriti o u spec, Želim prvo provjeri koliko dionica imam. I pretpostavljam da je pet. I pretpostavimo želim kupi 10 više, sam u konačnici Želite imati 15 dionica dionica. Dakle, moram postaviti dva pitanja. Što je stanje varijable? Što je stanje u redu? Koliko dionica ja trenutno imaju? Onda želite ići naprijed i ažurirati. Dakle, to je analog mlijeko u koje ste provjeriti red, a zatim želite ga ažurirati jer ako želite kupiti 10 dionica, ne želite mijenjati red do 10, što želite promijeniti 5 10 plus ili, naravno, 15. Ova linija koda osigurava da te dvije konceptualne ideje dogoditi zajedno ili uopće ne. Nitko, uključujući i neki drugi korisnika tko je prijavljen na istoj internetskoj stranici, može se nekako prekinuti provjera redu i ažuriranje reda, odabir i ažuriranje ako hoćete. I sintaksa je ne super očito, ali ovaj jedan redak, davno je to, osigurava da se te dvije operacije provjerite varijablu ili provjeriti red i ažurirati red dogoditi atomically. Oh, ovdje mi ići opet. Tekst poruke na moj telefon. Tako ćemo napraviti ovaj malo konkretniji. Pretpostavimo da niste provedbi hladnjak, a niste provedbi PSet 7, ali stvarna banka, ili bankomat, automatizirani Teller Stroj, pri čemu ti nekako želite biti u mogućnosti osnažiti korisnicima za prijenos novca s jednog računa na drugi. U redu, objesiti na. Idem za isključenje ovo sada, hvala. Dakle, želimo premjestiti novac iz jednog broja računa u drugi račun broj, posebno 100 dolara. Dakle, to je vrsta proizvoljna Primjerice, pri čemu si, bankomat, možda želite izvršiti dva SQL upiti, oduzmite od jednog računa, i dodati na drugi račun. No, želite kako bi se osiguralo da su ti dvije linije i dogoditi, ili uopće ne. Vi ne želite nešto uzimajući prekinut. Vi ne neke pametne negativac nekako stoji na Bank of America s dva bankomata ispred od njega i nekako vrsta upisivati ​​u naredbe istovremeno, nadamo se pokušava oduzeti 200 dolara, umjesto od $ 100 i imaju samo 100 dolara zaslužan. Ukratko, vi to želite ponašaju točno onako kako ste očekivali. A način na koji radite to SQL baza podataka što ga zamotajte u ono što je nazvao transakcije. Doslovno u SQL, možete nazvati CS50-a Funkcija upita sa citatom citat početak transakcije. Tada možete izvršiti bilo koji broj naknadnih SQL upita, ali nitko od njih uzeti utjecati na bazi podataka dok vi zovete upita citat citat počiniti, ako se ponovno koristiti PHP. I na ovaj način, možete osigurati da čak i ako imate 1.000 korisnika sve udarajući baze podataka istovremeno, SQL će obećati da je to Dva upiti će biti provode jedan neposredno nakon drugog. Tako da ne završiti s viškom mlijeko ili pogrešna količina, u konačnici, novca. Dakle, imajte to na umu, Ne toliko za PSet 7 ali za konačne projekte Ako ste zapravo pokušavate premjestiti podatke oko po stolovima kao možda ovdje. No, možda čak i jednostavniji i Očito razumjeti s primjerom je ovaj ovdje. A nas netko e-poštom o to samo drugi dan kad je vidio nešto slično na internetu. Dakle, prema mojim saznanjima, pin sustava nije ranjiv na takav napad. A ja nemam pojma je li to čak i namjene SQL baza podataka ispod haube. Ali neka ga koristiti za radi rasprave. Evo zaslon koji Harvardski ljudi imaju tendenciju vidjeti kada se prijavite sa svojim Harvard ID broj i PIN-a. I pretpostavimo da je pin sustav su provodi u PHP i MySQL s baze podataka, koda da je netko Prije možda pisane godina može izgledati ovako. Prvo, proglasiti varijabla zove korisničko ime. I samo se to od POST superglobal. Zatim dobiti još jednu varijablu zove lozinkom i učiniti isto. I onda samo izvršiti ovo dugo upit ovdje, odaberite zvijezda od korisnika gdje korisničko ime jednako kao i takva i lozinku jednako takav i takav. Obavijest da je kovrčava aparatić sam ovdje koristi Samo znači da PHP, idite naprijed i zamjena vrijednost tih dvoje varijable tamo. Oni nisu strogo potrebno, ali oni imaju tendenciju da se izbjegne suptilne pogreške u sintaksi. Dakle, ovo izgleda potpuno točne prvi pogled. I to je. Ti bi mogao provesti pin sustav na ovaj način. Ali pretpostavimo da je super pametan i zlonamjerni studenta ulazna to kao njegov ili njezin pin. Tako sam ukloniti metak Znakovi ovdje u maketa, a ja sam zapravo otkrila ono što on ili ona može biti tipkati. I to je malo čudno. No, ono što skače se na vas na potencijalno zabrinjavajuće o korisnikovom ulaz, čak i ako nemate pojma što SQL injection napad znači. Zašto to izgleda malo sumnjivo? Što je to? [Nečujan] DAVID Malan: ili je malo sumnjivo. U stvari, to je ključna riječ iz SQL. Dakle, to ne sluti na dobro. Činjenica da postoji svi ti pojedinačni citati there-- u stvari, jedan od najlakši načine kako razbiti neke baze podataka je upisivanjem u ime poput O'Reilly da ima apostrof u njemu jer ako ljudska koji je napisao Kod iza kulisa ne uzeti u obzir da postoji Možda jednostruke navodnike u korisnikova ulaz, a on ili ona koristi jednostruke navodnike u svom kodu, loše stvari mogu dogoditi. U stvari, još gore, razmislite o ovom. Ako je to opet kod da je netko na Harvardu godina Prije pisao za pin Sustav, primijetiti ono što je o tome da se supstituirani za korisničko ime i lozinku ako korisnik upiše u jednom skroob što svojim korisničkim imenom i jedan, dva, tri, četiri, pet, citat ili citat citat jedne jednakima citiram jednu. A primijetiti ono što je ključno Ovdje se korisnik ne započeo njihove lozinke ili njihov polni sa citat. I nisu to završilo uz citat jer on ili ona je uz pretpostavku da ako programer nije bio tako oštar, oni će imati one jednostruke navodnike u svom kodu. Dakle, ovdje je kod. I da supstitucija Sada bi se moglo dogoditi je to. I sam je naglasio ono što korisnik upisali u. Dakle, prije, poslije. A primijetiti ono što je blago zabrinjavajuća sada o desnoj polovici ove SQL koda? To je malo složenije, doduše, od upita što smo vidjeli. No, to nikako ne može biti dobra stvar ako ste govoreći odaberite zvijezdu, koja je odaberite sve od korisnika stolu gdje korisničko ime jednako skroob i lozinka jednak jedan, dva, tri, četiri, pet ili jedan jednako jedan. Što je logično implicira tog posljednjeg klauzule valjda? To je samo uvijek istina. I zato smo nekako pogodili ili shvatio metodom pokušaja i pogreške da je programer koji je je napisao ovaj kod nije predviđaju ljudsko ili lošu osobu upisivati ​​u jednostrukim navodnicima, kao i, možemo sintaktički dovršiti SQL upit s nešto besmislen ali nešto što sintaktički je netočna koja uvijek true. Dakle, ako ovaj broj se koristi za odgovor Pitanje istina ili laž treba ovaj korisnik biti dopušteno da prođe, Odgovor je uvijek očito ide da bi bilo istinito, jer to uvijek ide odaberite nešto iz baze podataka jer je jedan, naravno, uvijek jednaka jedan. Dakle, ono što je rješenje? Pa u PSet 7, mi zapravo to izbjegli svi zajedno. Mi vam dati funkciju upita, a mi potičemo vas da koristite upitnike kao rezervirana mjesta, slično U duhu printf-a% s, ali ono što je ključno o upitnike Ovdje je, ako ste zapravo pročitali functions.php, gdje je naš Funkcija upita se provodi, ti upitnici su pobjegli, pri čemu sve potencijalno opasne kao jedan citat je uključen u jednom pobjegao citat. Dakle, to je ono što je stvarno događa, ako vas koristiti CS50 je upita funkciju ili bilo koji broj od trećih strana slobodnih knjižnica koje učiniti isto. Nije bitno u ovom slučaju, u zelenom, Ako korisnik upisali u jednom citat jer upit Funkcija koju je napisao je će dodati obrnute kose crte prije svaka takva opasna citat. Dakle, to nije u Činjenica, će biti čitljiv. To je kao da upišete luda potrazi Lozinka to je, naravno, ne ide biti skroob stvarnog lozinku. Tako takeaway za CS50 je jedan, Apsolutno uvijek koristiti nešto kao CS50 upit funkcije odnosno temeljni knjižnica, što će se dogoditi da se zove PDO. Ali nikad, nikad, Nikad ne kod ovako bez bijega ili ribanje kako kažu vaši inputi. A što će se u nekom trenutku, vjerojatno naići na neke web stranice kao što je ovaj. Zapravo, čini se da je slučaj kao u zračnim lukama i hotelima u mjestima gdje imaju besplatni bežični pristup internetu Pristup da morate prijaviti na, Ove web stranice su uvijek užasno provodi. I tako neka vrsta zabave kod kuće vježbe, ne za zlonamjerne svrhe ili više od zabave na cesti vježbe, je samo upišite apostrof, jedan citat, u obliku na nekom web stranice i vidjeti što se događa. A ako poslužitelj ruši ili daje li neka vrsta poruke o pogrešci, to može vrlo dobro biti da netko nije predvidio. I onda biste trebali upozoriti odgovarajuće vlasti i nastavite dalje. Pa sad vi trebali nadam razumjeti malo više monstrum humor ovdje. [Smijeh] DAVID Malan: Znaš da si monstrum. Za sljedećih nekoliko godine, sjetit ćete se koji je malo Bobby Tablice je zbog ovog crtića ovdje. Dakle, imajte to na umu kao i mi Prekidač kontekst jedan posljednji put danas JavaScript. Mi smo proveli relativno malo Vrijeme na sintaksu PHP jer to je zapravo super sličan C I dovoljno lijepo, JavaScript previše je super sličan kasiopejske sintakse kao što ćete vidjeti u Samo trenutak, a kao što ćemo vidi kasnije ovog tjedna posebno. Što možete učiniti s tom jeziku, iako je sve moćniji, posebno s API-ja. Ali prvo brzo turneju. Tako je jedan, u JavaScriptu, postoji nije glavna funkcija, što je lijepo. Kao i kod PHP, možete samo napisati kod. Uvjeti izgledati ovako. I Boolean izraza možda izgledati ovako ili ovako. Sklopke postoje, a oni može izgledati ovako. Četiri petlje izgledati ovako. Dok petlje izgledati ovako. Da li dokle izgledati ovako. A onda polja izgledati to, vrlo slično PHP. Ali primijetiti, da je u JavaScriptu vas proglasiti varijablu ne s dolar potpisati, a ne s tipom podataka, ali doslovno rekavši var za varijablu prije njega. To je previše labavo upisali time, da je vrsta, ali nemojte ih izričito izjaviti. A onda niz, za primjer, može izgledati ovako, da je niz se zove a u ovom slučaju. A onda objekt. A to ćemo vidjeti još prije dugo. A objekt je možda jedan od najčešće vidi struktura podataka u JavaScriptu temelji Program jer omogućuje li povezati proizvoljna Ključni parova vrijednost samo kao što su PHP-a asocijativnih nizova i baš kao i svoje vlastite hash tablicu ili pokušati što smo provoditi prije nekoliko tjedana. Tako ćemo zapravo vidjeti što možemo učiniti s JavaScript. I posebno, to jest Popis pranja značajki da preglednici su da omogućuju nam da kuka JavaScript na web stranici na sljedeći način. JavaScript se često koristi kao strani klijenta skriptni jezik. To nije sastavljen. To je previše tumačiti. No, za razliku od PHP, koji je pokrenut na poslužitelju, na web poslužitelju, ili duboko unutar klijenti, JavaScript razlikuje po tome što obično traje u pregledniku. Dakle, bilo JavaScript kôd počnete pisati PSet za 8, odnosno konačnog projekta, ili u stvarnom svijetu općenito ide da se spremaju na poslužitelju, apsolutno u dot HTML ili dot JS za JavaScript datoteke. No preglednik ide za preuzimanje da JavaScript Kod za svoj primjerak Chrome, ili IE ili Firefox, ili što god. I kod zapravo će dobiti izvršiti unutar vlastitog pregledniku. Samo da bi se to više stvaran, da vidimo to u konkretnom obliku. Nemamo pojma što je to kod radi bez stvarno čitanja kroz nju. No, dopustite mi ići na Facebook.com bez prijave. Pusti me da Pregledajte element i otići, recimo, mreže i ponovno učitati stranicu. A mi ćemo see-- neka mi pomak ponovno učitavanje Stranica dobiti sve zahtjeve za nove. I prvi file vidim je CSS, CSS. Evo prvi JavaScript datoteke, a ja imam nema pojma što to radi, ali ovdje neki od JavaScript kôd koji vozi Facebook. Nije ni stvarno tako otkriva za povećavanje. To je još uvijek jednako besmisleno. Ali vidjet ćete čak i dolje, postoji čak i više od ovih JavaScript datoteke. Ups. To je ping. Idemo dolje malo Nadalje, dodatno, dalje. Postoji jedan. Postoji jedan. Postoji jedan. Dakle, iako je Facebook, iza scene, piše u dijelu u PHP Facebook i vlastiti njegove verzije, postoji ogromna količina JavaScript. Zapravo, bilo koji od razgovor radite na Facebooku, bilo koji od inline Timeline ažuriranja da se to dogodi u stvarnom vremenu, sve to pokreće JavaScript. Da? PUBLIKA: Nisam siguran ako je to Facebook, ali mislio sam da je Facebook razvio sami u kući kod jezika? DAVID Malan: Oni su učinili. Dakle, to je razlog zašto sam reći varijance PHP zove Hip Hop da su oni zapravo dodano značajke na takva da kada Mark Prvi provodi Facebook, što je napisano u PHP. I to vrsta ostao vrsta prednjeg kraja jeziku da oni koriste mnogo njihovog kodiranja, ali to nije bio jezik koji je vage posebno dobro se milijardama ljudi. I tako su dodali svoje vlastite Poboljšanja iza kulisa. I oni koriste bilo koji broj drugim jezicima za razne komada njihova infrastruktura. Pa da, to je varijanca ono što mi sada znamo kao PHP. Tako ćemo pogledati na nekoliko primjera kako bismo mogli iskoristiti JavaScript ovdje. U današnjem izvornog koda, imamo hrpa datoteka, od kojih je prvi, neka se zove DOM nula. Dakle DOM nula izgleda ovako. Pusti me u ovaj imenik i otvoriti domzero.html, vrhu koji ima doc tip Deklaracija, rekavši ovdje dolazi HTML 5. I sad evo HTML oznaka. Evo glava oznaka. A evo što je novo i danas. Sada imaju oznaku skriptu unutar glave stranice. I to očito radi vrlo malo, ali obavijest da sam definira skripta, JavaScript. I kao stranu, jer to je česta zabluda, JavaScript mora apsolutno ništa raditi s Javom, jezik da su neki od vas možda naučili u APC. Bilo je to više od marketinga stvar od svega, jahanje coattails Java godina. Ali JavaScript, nema nikakve veze s Java, samo slično, i dosadno, zbunjujuće ime. Dakle, ovdje je, kako se proglasiti funkciju u JavaScriptu, doslovce kažu funkciju, onda naziv funkcije, tada bilo argumenata da bi moglo potrajati, baš kao u PHP. Ispada u JavaScriptu, jedan od najviše dosadnih funkcija koje postoje na oprezu. To je mali prozor koji će se pojaviti i vas upozoriti na neki komad informacija. To je općenito namršti. No, mi ćemo ga koristiti kao naš Prva vježba ovdje. Obavijest nekoliko obilježja JavaScript. Pojedinačne citati i dvostruki navodnici to zapravo nije bitno više. Pojedinačne citati i dvostruka citati mogu se zamijeniti, dok je u C, morate koristiti dvostruki navodnici za gudače, i imate dva jedan citati za znakova. U JavaScript svijetu, mnogi ljudi, većina ljudi koristiti jednostruke navodnike oko žice Samo zato što je stilska stvar. No, ono što je plus operatera ovdje, koje nismo vidjeli prije? PUBLIKA: Concatenation. DAVID Malan: Concatenation. Dakle C nema ni to. PHP ima operator točkica, što to čini. JavaScript ima plus operatora, koji je zbunjujuće je baš kao i Java. Sada što se ovdje događa? Dakle, evo gdje osnovni razumijevanje toj slici smo povratio par dana dolazi u igru. Sjećaš li se kad smo imali jednostavan verzija HTML page-- to samo rekao, pozdravio svijet. A onda smo nacrtali stablo desno, što imao hrpu pravokutnika i linija povezujući ih poput obiteljskog stabla. Dakle, to je tzv DOM ili Document Object Model. I ispada da možete pristupiti pravokutnici u tom stablu s sintakse kao što je sljedeće. Vi doslovno kažu dokument, koji je Poseban globalna varijabla u JavaScriptu program koji ima funkciju povezana s njom da možete pristupiti sličan STRUCT, ali jednostavno kažu točku, a zatim funkciju ime, dobili elementa po ID. Element želim dobiti je očito citat citat ime. A onda želim dobiti svoju vrijednost. Sada smo sve ispred sebe. Nisam ni siguran što sve to je oko. Idemo brzo naprijed u HTML na stranica, što je super jednostavna. Obavijest da sam definira formirati ovdje. Obavijest sam joj dao jedinstven ID, iako nismo koristi ovaj atribut prije. No, to postoji u HTML. Možete jedinstveno prepoznati neki komad HTML s identifikator kao što je ovaj. Obavijest sada this-- ispada HTML podržava, po tom popisu pranja Trenutak prije, cijeli hrpa rukovatelje događajima. I ovaj događaj rukovatelj govori o dostavi. Na korisničkom podnošenja ove oblik, nazovite sljedeći kod. I kod koji se događa da se zove ili pogubljeni je upravo to, grčki Funkcija slijedi povratak false. Sve ostalo bi trebalo biti prilično upoznati. Ovdje je ulaz tipa teksta, čiji je ID, u ovom slučaju, će biti ime. Nemamo stvarni naziv atribut ovo time-- i tipku podnijeti. Dakle, što je rezultiralo stranica izgleda ovako. I što je rezultiralo ponašanja, vidjet ćete, izgleda ovako. Stranica to lokalni domaćini, kaže, Pozdrav David jedva estetski ugodan način pozdraviti korisnika. Ali što se zapravo događa? Pa, razmislite što je to. Ovaj je tekst polje. A prema HTML ovdje, što sam ga dao jedinstveni identifikator zove citat citat ime. U međuvremenu, ja sam rekao, kada korisnik pošalje ovaj obrazac skom Enter, ili kliknuti Pošalji gumb, nazovite funkciju nazvanu Pozdravite a zatim se vratiti False. Razmotrimo one u rikverc. Obavijest kada sam kliknite na Pošalji, URL ove stranice se ne mijenja. Ikona preglednika nije početi vrti. Nisam nigdje ići, a to je doslovno jer sam rekao povratak False. Return false kratkog spoja ili zaustavlja zadani ponašanje obliku. Tako da nas onda ostavlja ovo posljednje pitanje. Što Pozdravite učiniti? Pa, očito Pozdravite poziva funkciju nazvanu Uzbuna, prolazi u jednom dugo argument da je Rezultat nadovezivanjem zajedno hrpa podnizova, pozdravi zarezom prostor, onda god to vraća. Dakle, dokument je kao globalni varijabla na taj korijen tog stabla, nazivajući posebnu funkciju, drugdje, poznat kao postupak. Funkcija koja je unutar varijabla zove metoda umjesto funkcija. Dakle, dobili elementa po ID. Ono što je element vi želite dobiti po ID? Citat citat ime i zatim posebno cijeniti. Dakle, drugim riječima, da se kod jednostavno pronalazi polje teksta čiji ID je ime a zatim dobiva svoju vrijednost. Dakle, ako bih da se to promijeni i reći Davin umjesto Davida, i kliknite Pošalji, sada smo imaju pozdrav za Davin. U redu, tako da sve u redu i dobro. No, da vidimo možemo li napraviti ovo malo čišći, jer jednostavno pisanje koda kao što je to općenito će se namršti. To će izgledati strašnije. No, ono što je prvi Razlika koju umu ovdje U ovoj verziji osim ime mijenja u DOM jedan? Što strukturno izgleda drugačije o tome u odnosu na druge? Da? PUBLIKA: Je obrazac na vrhu pisma sada? DAVID Malan: Da, forma je na vrhu skripte za neki neobjašnjiv razloga. Dakle, to je prva stvar da skače u mene, previše. I hvala bogu barem, ovaj dio je identičan. Dakle, jedino što se čini biti drugačiji je to. Evo što je uredan o JavaScript 2. I to ga čini teško razumjeti na prvi pogled, pogotovo za konačnih projekata ukoliko gledaš uzorak koda na internetu, ali to se svodi na neki osnovna sintaktička obilježja. Ovdje ponovno je da globalna varijabla dokument. Ovdje ponovno je da metoda ili funkcija koji kaže dobili element po ID. Ovaj put želim dobiti ID zove demo. Gdje je to? To je očito u pravu Ovdje, sama forma. A sada primijetiti da je očito da sam vratiti taj čvor iz drveta koje predstavlja oblik sama, a ne riječi, Ispada da je obrazac, koji čvor ili pravokutnika s drveta, ima ono što ćemo nazvati nekretninu, vrlo, vrlo, vrlo sličan U duhu na STRUCT u C. To je samo Član podataka unutar tog pravokutnika. Tako sam dobio obrazac ovdje, a ja sam pridaje, ili ću ustupanje, da njegova Na Pošaljite rukovatelj odnosno Dana Pošaljite nekretninu Sljedeća funkcija. A to je, daleko, najluđi što do sada sintaktički. Ispada u JavaScriptu i PHP, i iskreno se toga tiče u C, iako mi to ne učinite, možete dodaj bezimeni, anonimni ili AKA lambda Funkcije koje nemaju ime ali može biti pozvan svejedno. Dakle, ono što ja radim ovdje sam dodjeljivanje Na ovaj Pošaljite imovinu, koji je unutar tog čvora mog DOM stabla, funkcija, funkcija pokazivača ako hoćete. Ta funkcija nema ime, ali to ne stvar, jer vidjet ćemo u trenutku kako ga zovu. Kada je ova funkcija se zove, ovaj kod dobiva pogubljeni, a zatim lažno se vratio baš kao i prije. Ali primijetiti ono što sam učinio. U ovom trenutku u Priča, imam oblik. To je dobio jedinstveni ID zove demo. Ovdje dolje, imam oznaku skriptu da izvršava sljedeći kod. Ona pridaje taj čvor u Stablo se da je na Dostaviti Objekt ova funkcija ovdje. I samo po prirodi kako preglednici rade, kad sam sada kliknite Pošalji ili pritisnite tipku Enter, da je funkcija će se zove. To ne treba ime jer tko kritički brine ono što se zove. Jedini put je ikada idući u dobiti nazvao je kad sam dostaviti obrazac. Nema potrebe za mene, ljudski programer, zapravo ga nazvati bilo gdje drugdje. Sada samo kao teaser, kao da ne smeta dovoljno savijanje, mi čak može napraviti ovo izgledaju više zagonetan pomoću super popularna knjižnica zove jQuery. U stvari jQuery i JavaScript često spajaju. A što ćemo učiniti u srijedu je početak Korištenjem ove jezika i ove knjižnice graditi sve asinkroni i dinamičke aplikacije kao što su karte za dobivanje aplikacije, aplikacije da ažuriranje web stranicu u realnom Vrijeme, slično kao Facebook ili Gchat učiniti, i više ne se ograničiti na Udaranje Pošaljite strane get ili samo poštom sama. Dakle, ja ću vas vidjeti u srijedu. [Glazbom]