>> [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?
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.
>> 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]