>> [MUZIKO Ludante]
>> DAVID Malan: Jen CS 50 kaj ĉi tiu estas la komenco de la semajno naŭ.
Kaj kion ni opiniis, ke ni faru hodiaŭ ne nur fermi la ĉapitro sur lasta semajno
materialo kie ni enfokusigis en servilo flanko ttt programado kun PHP kaj SQL,
iu datumbazo ajxoj.
Ni parolos pri iom da sekureco hodiaŭ kaj poste
transiro al kliento flanko programado lingvo konata kiel Javascript.
Sed unue, iom elacxeto.
>> Vi eble memoras, ke sur Merkredo, mi ekiris
skribi retejo kiu prenis en uzanto enigo
per HTML formo kiu tiam stokitaj ke uzanto enigo nomoj, telefono
nombroj kaj poŝtelefono portantoj en la datumbazo.
Kaj tiam mi devis iom komando linio skripto skribita en PHP
kiu supozis persisti super la vicoj en la datumbazo
kaj sendu mesaĝojn de teksto.
Malgraŭ pluraj, pluraj provoj, ni ne bonstata laborante por la fino.
>> Do mi pasigis tiun tutan semajnon laboras sur tiu kodo akiri ni preterpasis la punkton
kie ni cxesis, per ĉiuj Mi alvenis al la fino de la merkredo
estis jena teksto mesaĝon el Margo mi baraktis,
sekvata de teksto mesaĝo de alia samklasano, Vi havas tiu David.
Sekvita de ĉi tiu, mirinde kuraĝiga.
Plu iri, tre alentador.
Mi alvenis preskaŭ ĝis then-- kaj tio estas la noto ni finis merkrede.
Kaj tiam efektive eble mia favorito, post momento, tio venis.
Malbenita Live Stream.
>> Do hodiaŭ ni riparos tion per rapida rigardu kion mi faris tiam.
Do ĉio ĉi kodo disponeblas linio de la pasinta semajno, semajno ok,
fontkodo.
Kaj vi vidos, ke mi trapasis, kaj mi fakte purigis tion iom.
Mi prezentis paron aliaj trajtojn de SQL datumbazo.
Ekzemple, anstataŭ simple portanto de var char
mi kredas ke mi faris sur la muŝo pasintsemajne.
Mi anstataŭe difinis kiel kio nomiĝas Enum.
>> Kaj iu el vi eble vidis ĉi kiel ni esploris C. Enum estas reale
esprimilo de C kie vi povas numeri tutan faskon da konstantoj
kaj asigni ilin aŭtomata valoroj kiel unu, du, tri, kvar
sen devi hard kodo nombroj.
Do SQL subtenas la samajn, per se vi havas datumbazon kampo kiun vi nur
deziras alpreni unu el finia valoroj, vi povas laŭvorte specifi ĝin
kiel mi agis tie dum kvar populara usona celular portantoj.
>> Do mi faris tion.
Kaj mi faris plurajn ŝanĝojn nu, la plej grava el kiuj
estis akiri email laboras ĉar recall, ke tiu programo baziĝis sur kiu
ĝenerale nomita email al SMS enirejo, kiu estas ĝuste
ornama maniero diri ke Verizon, kaj AT & T, kaj aliajn ulojn apogi servilon,
per se ĝi ricevas retpoŝto, ĝi konvertas ĝin al SMS
kaj etendanta tekston mesaĝon al ies telefonon.
Do se mi faris ĉi ĝuste, tie estas nova kaj plibonigita formo
kiu tuj parolos al nova kaj plibonigita kodon, kiun
Vi povas ludi kun linio.
Kaj espereble faros Mian telefono pepi en nur momento.
>> Do unue, mi iros por tajpi en mia nomo.
Due, mi ne fari cxi tiun fojon.
Mi iras al vi Inspekti Elemento.
Kaj ĉi tio estas nur etulon tiel mi ne
Krei horoj de post produktado labori kiel mi faris lastan fojon.
Tie nun estas mia telefonnumero.
>> Mi elektas Verizon.
Kaj tie, ni ŝalti ĉi mikrofono tie, kaj celi tion ĉe mia telefono tie.
Mi tuj klaku Register, kiuj devus espereble
metu gxin en la datumbazo.
Nun mi tuj iros al la komandlinio programo, kiu
Memoru nomata skalara oblikvo teksto, kaj transiras la fingrojn.
Tie ni iras.
>> [PHONE DINGS]
>> [Aplaŭdo]
DAVID Malan: Do pli amuza ol this-- ĝi estas amuza, kompreneble, se mi eniros en gxin.
Sed ĝi estas pli amuza, mi pensis, ke ni kreis unu el tiuj filmoj momentoj
kie kiel io vere malbona okazis en la mondo,
kaj kiel ĉiuj NSA popola poŝtelefonoj komenci beeping
kun teksto mesaĝojn atentigante ilin ĉi fakto.
Do mi pensis, ni provus amuzi la saman tie,
per ne uzanta datumbazon, Mi anstataŭe anticipe
verkis programon kiu aspektas kiel ĉi.
>> Tiu estas index.php-- Mi metis tiun kodon en linio
kiel well-- kiu ŝajne nur bildigas form.php,
uzante MVC stilo paradigmo ke ni raporti en pli detalo en problemo aro
sep.
Tiu formo estas sufiĉe simpla.
Ĝi tuj submetiĝi al dosiero nomata here.php tra poŝto.
Kaj estas ŝajne tuj demandos Mia nomo, kaj telefonnumero,
kaj poste pere de la tn Elektu menuo, estas
tuj donos al vi almenaŭ kvar populara usona celular portantoj,
kaj do ebligas al vi efike preni asistencia alklakante ĉi tie.
>> Kaj tie, dume, tuj prunti iujn de la kodo de lasta horo.
Kaj se vi simple senkremigi ĉi, vi vidos ke ne estas
tutan faskon de eraro kontrolanta.
Sed la beleco fine estas ke ni ne skribas por datumbazo hodiaŭ.
Ni teni ĝin simpla kaj simple sendo espereble
teksta mesaĝo tra funkcion mi skribis dum la pasintaj kelkaj tagoj alvoko
Teksto, kiu estas en funkcioj. php, kiu estas denove havebla rete.
>> Do se vi volus partopreni en ĉi tio.
Ni ne tuj estos stokante nenion.
Iru al tiu URL tie en reala tempo.
Ne enigu ĝin nur ankoraŭ, sed ni vidu se ni povas havi unu el tiuj filmoj
momentoj kie ĉies poŝtelefono startas beeping, atendu nur
fojo ĉi tiu jaro kontraste en 2011 kie tiu iris terure malbone.
Kaj kiam vi iras al la adreso, Vi devus vidi súper simpla formo
ke se vi havas nomon, poŝtelefono nombro, kaj celular portanto ke
egalas la liston tie iri antaŭeniras kaj plenigu la formularon.
Sed ne kolizias submit nur ankoraŭ.
>> Formo tuj aspekti ĉi.
Bonvolu tajpi vian nomon, telefonnumeron.
OOP, iu tuj antaŭ la kurbo.
Estas bone.
OK, ĉies plenigis la formularon.
Tio devus labori sur telefono, tro, se vi volas.
Bone, en via markoj, get starigis, iru.
Hit tie.
Kio?
No.
Mi ĵuras al Dio, mi provas tio multnombraj fojoj hodiaŭ.
Vi havas ĝin?
>> [Intermetante voĉoj]
>> DAVID Malan: Bone, uzanto eraro eble.
Tio estas du.
Ĝi laboris por du el Kelkcent, tri, kvar.
OK, tio estas bona.
Kvar el kvin por korekteco kiom pri.
>> Do kio ĵus okazis?
Do supozeble, ne vidante vian ekranoj, kial povus esti ŝin errored?
Estas probable, ke ni simple provante fari tro multajn rilatojn
al Harvard mail server ĉiuj je fojon el la sama IP-adreso.
Mi nur diveni ĉar mi ne havas la lukson de testado
tiu kodo per kelkaj 300 homoj anticipe
sed nun rimarkas ke ke almenaŭ devus
ili atingis la laboron farita tiu tempo.
>> Bone, do kial estas tiu tuta pli germane al kio okazas?
Nu unue, rapida Paro de anoncoj.
Do oni, se vi ŝatus aliĝi Chang, kaj Nick kaj aliaj ĉe lunĉo ĉi Rosa
fari RSVP ĉe la kutima adreso tie.
Se vi pensas koncentrante aŭ faranta malĉefa en CS,
ĉu vi estas sophomore, aŭ freshman, aŭ eĉ junior aŭ altranga ĉe tiu punkto
kaj ankoraŭ povas elpremi en la kursoj, rimarkas ke la inĝenierio lernejo
kolektinto senpage Ben kaj Jerry glaciaĵo kaj konsiloj
tiu merkredo baldaŭ post klaso je 4:00 ptm en la CS konstruaĵo
ĉe Maxwell Dworkin.
Se tio estas tro rapida sur la ekrano, nur iri
al cs50.harvard.edu por ligilo al la Facebook evento
kie vi povas vidi pli da detaloj.
>> Dume, mi pensis, ke mi korektu unu alia afero mi goofed merkrede.
Rezultas ke Marko ID en Facebook ne tri.
Estis kvar.
Rezultas li havis pli testo kontoj ol mi respondas.
Sed kion tio sentis kiel ŝanco fari estas elsxiros URL kiel ĉi.
>> Do rezultas ke Facebook havas API, Application Programming Interface,
kiu estas mekanismo per kiu vi povas peti datumojn programmatically
ĉe Facebook kaj reiri maŝino legeblajn informojn, ne retpaĝoj
sed nur krudan teksto, io nomata Ĝavoskripto Objekto Skribmaniero.
Kaj fakte, se mi vizitas URL zomi, implicite,
tio estas Marco publike atingebla informo.
>> Kaj la interesa detalo tie estas nur, ke lia ID
Estas vere, la numero kvar, kion mi realigita tiel frue kiel mi faris tion.
Vi povas fari tion mem, se vi scias via Facebook salutnomo se vi havas unu.
Simple tajpu ĝin pinto.
Kaj neniu el ĉi estas privata.
Mi nur faras tion eĉ en la incógnito modo.
Do mi eĉ ne estas ensalutinta.
Kaj vi vidas, ke mi ŝajne estis uzanto nombro 6.454
Facebook, kiu estas ne Domaĝe tiujn tagojn.
Do ĉiuokaze, vi ankaux vidos aldonan informon tie.
>> Kaj la utila aspekto de tiu estas kiu vin
povus skribi vian propran programaron kiu iel integras datumoj ŝatas ĉi
en via propra apliko.
Vi povas kapabligi uzantoj ensalutu en vian retejon,
Ne uzante sian propran uzantnomon kaj Pasvorto sed eble iliaj Facebook ensaluto
kaj akiri informojn eĉ pri siaj amikoj,
se aprobi tian, aŭ simila.
Do rimarku ke CS50 ankaŭ havas iuj de liaj propraj APIs,
unu por la kurso katalogo datumoj iuj por la brakumojn menuoj en la manĝoĉambro
salonoj, ĉiuj konstruaĵoj kaj lokoj
surterene ni havas API por tiel ke vi povas konsulti simile kaj alveni
reen tekstajn datumojn kiuj povas integri en PHP, aŭ Ĝavoskripto, aŭ eĉ,
kvankam malpli ofte, oni C bazita projektas finon.
>> Ja antaŭ la fino projekto kelkaj limŝtonoj.
Vi akiris retpoŝton de ni la alia tago.
Rimarki, ke la propono Estas pro tiu venanta lundo.
Ĝi ne estas nepre deviga, sed vi do bezonas ricevi vian instruadon kamaradoj
aprobon antaŭ fari ajna ŝanĝojn poste.
Kaj tiam antaŭen estas numeron de aliaj limŝtonoj.
>> Do por turmentus vi ankaŭ kun iuj ebloj,
ni havas amason da tiuj nuancon ampoloj.
Kaj iujn el vi infanoj nun havas iom de tiuj en via dormejo ĉambron tiel.
Kaj ankaux ili havas API.
Do memoru tiujn duuma bulboj semajnoj antaŭ tiu Dan Bradley kaj Ansel
Duff kreis por ni.
Ili uzis programaro interfaco por tiu ampolo, kiuj nuntempe
estas konektita al elektra kaj tiam tra senkabla
estas konektita al malgranda afero nomata Ponto malsupren tie,
kiel eta enkursigilo proprieta al tiu aparta mekanismo.
>> Sed rezultu se mi scipovas sendu HTTP mesaĝojn, kiel ni ĉiuj nun fari,
Mi povas sendi mesaĝon ŝatas tion tiu ampolo igi ĝin aŭ malŝalti
aŭ fari ajnan numeron de aliaj operacioj sur ĝi.
Rimarki ke ĝi ne ricevas, ne estas post.
Ekzistas alia nomita posteno.
Estas fakte kelkaj aliaj tiaj verboj.
Sed rimarki tie estas vojo tie, slash API, slash nova programisto,
slash lumo slash unu, slash stato.
>> Tio ŝajne nur la irejo kiun la kompanio Philips,
decidis vi devas bati kun HTTP peto
Se vi volas ŝanĝi la staton de la bulbo uzante HTTP 1.1.
Tiam rimarkos la malplenan linion.
Kaj poste persiste kio aspektas kiel speco de tabelo de iu tipo,
tiu fojo tuj nomos JavaScript Objekto Skribmaniero, aŭ Jason.
Kaj kion vi vidas tie estas ke estas tri ŝlosilaj valoro paroj.
>> Unu ŝlosila tuŝas.
Kaj lia valoro ŝajne tuj estos vera.
Brilo estas 128, kiu Estas ia int.
Kaj tiam transiro tempo nulo, kiu ŝajne
kiom longe tuj preni turni tion plu.
>> Do nun tiu ampolo estas malŝaltita.
Sed se mi faras ĝuste this-- lasu mi iru al iom Gvidfolio
ke Dan starigis en advance-- kaj mi tuj
antaŭeniri kaj kopii la sekva komando.
Frizo, kiel kelkaj el vi eble kolektadis sur CS50
Diskuti estas ilo kiel Telnet tiaj ke vi povas simuli HTTP petojn,
specife metas.
Mi povas sendi tiun datumon, specife kion ni ĵus
vidis antaŭ momento specife al tiu URL super tie.
Kaj tiam Curl tuj manipuli ĉiujn necesajn headers
kaj sintaksanalizi ekzistas.
>> Do kion mi devas fari estas kopii la jeonon terminalo fenestro kaj tiam batis eniri.
Kaj la ampolo daŭras.
Kaj tiu estas ĉiu irante tra mia komputilo sendrate
iel malsupren al la ponto, kiu Estas tiam parolas al tiu ampolo.
Mi povas fari ion alian.
Mi povas fari tion iri ruĝa ekz.
Mi povas ekzemple fari tion iri verdan.
Mi povas trairigu blua.
>> Kaj rimarki en ĉiu el tiuj petskribojn, ĉiuj, ke mi ŝanĝas
estas la tn nuancon valoro efektive donu al ĝi iun koloron.
Do lasu min alglui ĉi tiu en tiel.
Nun estas blua.
>> Kaj vi povas fari eĉ amatoro aferojn where-- ni iru al verda.
Kaj mi povus tion faras Kompreneble, per mia propra kodo.
Sed eĉ la API mem Elportas funky operacioj
kiel tiu, kiu nun tedas ni por la proksima 30 sekundoj.
>> Do jen unu guston de tio, kion vi povus faru kun API, ĉi tiu engaĝante
ampoloj.
Notu ke CS50 havas paron paroj de Google Vitra se vi volas
ŝatus pritrakti ion kune tiuj linioj, Arduino Unos, kiu
Estas eta komputiloj, esence, sur malgranda cirkvito tabulo
ke vi povas konekti dratoj kaj aliaj aĵoj
al kaj reale kontrolo via reala mondo medio.
Kaj tiam estas paro de novaj ludiloj kiujn ni havas.
Ĉi tiu laŭvorte ĵus alvenis la alia tago per poŝto, Myo braceleto.
Kaj mi pensis, ke estas formo de Foriru ekscitita pri projektoj
ke vi povu uzi kun tiu aparataro farus
estu ludi ĉi mallonga klipo kiu uzas al turmentus ulojn
ke ni nun vivas en la estonteco.
>> [MUZIKO Ludante]
>> DAVID Malan: Do en nur kelkaj semajnoj, vi tro eblas ke malvarmeta en la CS50 foiro.
Alia mekanismo kiu ni havas faskon de kiu ni
feliĉaj prunti el por projektoj nomas mocio adaptilo.
Tiu estas malgranda mekanismo USB konekti al komputilo kiu
ebligas al vi interagas kun via portebla, Mac aŭ PC,
kvazaŭ vi havis kiel Xbox Kinect kaj reale fari fizikan moviĝoj multe
kiel ni vidas en ĉi vidado de la estonteco.
>> [MUZIKO Ludante]
>> DAVID Malan: Do eĉ se vi havas neniu ideo kiel io tia
eble povus esti elpensitaj aŭ verkon sur aparataro nivelo, ne gravas.
Eĉ post malmultaj monatoj de CS50, kaj komprenon de programado
pli ĝenerale, kaj ttt programado pli ĵus, kaj tiam ankaŭ APIs kaj HTTP,
vi havos aliron tra programaro APIs se vi
do volas pruntepreni unu el tiuj aparatoj por fakte parolas al ŝi
kaj ne devas maltrankviligi la suba efektivigo
detalojn, kiu estas tute konsekvenca kun tiu nocio de layering
abstraktaĵo ke ni vidita tra la semestro.
>> Tiel ankaŭ dum la semajnfino, ekvidis paron pecoj de novaĵoj.
Iri unue iru seminarioj se vi ŝatus lerni ion
pli sur iu ajn nombro de temoj.
Vidu la URL tie.
Kaj ĉi tiu estis sendita al mi de Chang, kiu vin konas,
Kiu estas videbligi nian armeon de elefantoj.
Kaj estis ĉeftitolo jene.
Mi timegas de mia nova TV.
Kial mi estas timigita por defali aferon ankoraux vi estus tro.
Do ni estas nun en la notas en la semestro,
tro, kie eĉ se vi havas la plej eta de kompreno
pri kiel la TTT funkcias, kaj HTTP, kaj sekureco, aĵoj kiel ĉi
devus komenci kapti viajn okulojn.
Sed ankaŭ, vi komprenos ĉu tio estas aŭ ne estas
realaj minacoj.
>> Do mi prenis kelkajn ekstraktojn de tiu artikolo ĉi tie.
Kaj la historio estas kiel sekvas.
Mi nun la posedanto de nova smart TV, kiu
promesas transdoni streaming plurmedia enhavo, ludojn, app,
sociaj rimedoj kaj interreto navigacio, aj kaj TV ankaŭ.
La sola problemo estas, ke mi estas nun timu uzi ĝin, diras la aŭtoro.
Vi estus, ankaŭ, se vi legas tra La 46 paĝoj privatecon politiko por via televido.
La kvanto de datumoj ĉi afero recolecta estas miriga.
Ĝi registras kie, kiam, kiel kaj por kiel longe vi uzas la televidon.
Ĝi elmontras sekvado kuketojn, kiel ni diskutis,
kaj lumturoj desegnita detekti kiam vi havas
vidita apartan enhavon aŭ apartan retpoŝtan mesaĝon
Se vi volas kontroli retpoŝton sur via televido.
Ĝi registras la apps vi uzi, la retejojn vi vizitas,
kaj kiel vi interagas kun la enhavo, fari cxiujn ke tra via inteligenta televido.
Ankaux gxin creepier yet-- tio estas mia addition--
estas enkonstruita en ĉambro kun rekono facial.
>> La celo estas provizi gesto kontrolo por la TV
kaj ebligas al vi ensaluti por personigita konton uzante vian vizaĝon.
Sur la upside, la bildoj estas savis la TV anstataŭ alŝutita
al kompania servilo.
Sur la malavantaĝo, interreto konektiĝi faras la tuta TV
vundeblaj al hackers kiu pruvis la kapablecon
preni kompletan kontrolon de la maŝino.
>> Pli tumulti, kvazaŭ tio ne estis inteligenta sufiĉa, estas la mikrofono.
La TV fanfaronas voĉo rekono trajto
kiu permesas spektantojn kontroli la ekrano per voĉo ordonas.
Sed la servo venas kun iom minaca averto.
Bonvolu atenti ke, se via parolitaj vortoj inkluzivi
personaj aŭ aliaj sentemaj informo, ke informoj
estos inter la datumoj kaptitaj kaj transdonitaj al tria.
Got tion?
Ne diru personaj aŭ sentemaj stuff antaŭ via televidilo.
>> Do tio estas vere por vera.
Kaj estas malfacile ne vidi se vi iri al Best Buy aŭ kiel televidiloj
tiuj tagoj.
Ili ĉiuj inteligentaj iel.
Kaj ili nun estas inteligenta kaj creepier.
Kaj ili estas simple kolekti datumoj en manieroj kiuj ni parolis
kaj poste alŝuti ĝin tra HTTP aŭ iu alia protokolo al iu servilo.
>> Do tio estis de amuza artikolo en ĉi interreta paĝaro
tie, kiuj parolis pri aparta cimon aŭ erara kodo
ke ni efektive povas ligi en lasta semajno diskuto.
Do tiu subtitolo estis kiel sekvas, la rakonto iras tien,
Josh Breckman laboris kompanio kiu surteriĝis kontrakto
disvolvi enhavo mastrumado sistemo, aŭ CMS kiam ili estas vokitaj,
por sufiĉe granda registaro retejo.
Multe de la projekto implikis disvolvante enhavo mastrumado sistemo
tial oficistoj estus povis konstrui kaj subteni
la ĉiam ŝanĝanta enhavo por ilia retejo.
Aĵoj iris sufiĉe bone por kelkajn tagojn post iri vivas.
Sed en tago ses, aĵoj ne iris tiel bone.
Ĉiuj enhavo sur la retejo estis tute malaperis.
Kaj ĉiujn paĝojn kondukis al la defaŭlta, bonvolu eniri enhavo retpaĝo.
Whoops.
Josh estis nomita por enketi kaj rimarkis
ke oni aparte ĝenaj ekstera IP adreso havis
aligxo kaj viŝis ĉiujn la enhavo sur la sistemo.
>> La IP-adreso ne apartenis al iu eksterlande hacker fleksita
sur detruante helpema registara informo.
Ĝi decidis googlebot.com, Google tre propra retejo rampanta araneo.
Whoops.
Post iom da esplorado kaj grimpadi ĉirkaŭ trovi noncorrupt apogilo,
Josh trovis la problemon.
>> Uzanto estis kopiitaj kaj batitaj iun enhavon de unu
paĝo al alia, inkludante redaktan hiperligilo
redakti la enhavon de la paĝo.
Normale tiu ne estus temo ekde ekstera uzanto
bezonas entajpi nomon kaj pasvorton, sed la CMS autenticación sistemo,
login sistemo, ne enkalkuli
malnaiva hacking teknikojn de Google Araneo.
Whoops.
>> Kiel ĝi rezultas, Google Araneo ne uzas
kuketoj, kio signifas ke ĝi povas facile preteriri ĉekon por
estas ensalutinta en kuketo aro al esti malvera.
Ĝi ankaŭ ne atentu Ĝavoskripto, kiu kutime
suflori kaj redirect uzantoj kiuj ne estas ensalutinta.
Ĝi tamen sekvi ĉiun hiperligilo pri ĉiu paĝo trovas,
inkludante tiuj kun Forigi Paĝo en la titolo.
Whoops.
>> Do kion signifas tio en pli teknika sed sufiĉe atingebla terminoj?
Tio simple signifas ke tra lia loko retejo,
Ili havis URLoj ne kontraste kun ĉi tiu, kiu vi eble vidos en problemo starigis sep.
Memoru en problemo starigis sep nek scios problemo starigis sep
ke vi defiita, interalie,
vendi akcioj nome de uzantoj.
Sed efektivigo tiu karakterizaĵo de vojo de akiri tra hiperligiloj en via uzanto
Interfaco, verŝajne ne la plej inteligenta ideo
ĉar se via retejo estas iel alirebla aŭ per homa
Kiu estas klakante ĉirkaŭe aŭ aĉeti bot kiel Google aŭ Spider
kiam ili estas nomitaj tio estas nur trenante la retejo provas indekso
la retejon kiel serĉilon, ili povis tre facile
batita tra ricevi ĉi tiun klason de URL.
Kaj tio estas funkcie samvaloras, tiukaze
vendante ĉiuj agoj de Google.
>> Nun sincere, estas tute asinine ke la CMS
uzita JavaScript kaj kuketojn implementar lia ensaluto sistemo
kaj ne faras tion servilo flanko, kiel vi uloj faras kaj faros en PSet 7--
tie estas login.php file-- ĉiam, ĉiam,
ĉiam sekureco devus esti farita sur la servilo flanko
ne sur la kliento flanko ĉar, kiel tiu artikolo sugestas kaj eble vi mem
vidi en iu punkto, ĝi estas bagatela por uzanto, bonaj aŭ malbonaj,
por simple malŝalti Ĝavoskripto Ne mencii kuketojn.
Do kiu estas via ĉiutaga WTF.
>> Ekzistas unu pli, kio estas ĝuste speco de timigas,
do mi dankinde se nur kiel vivo leciono.
Kiam ajn vi uzas apliko nomita kiel Snapchat aŭ simila
kiu diras tiujn fotojn nur daŭri kvin sekundoj, dek sekundoj, aŭ whatnot.
Ili estas efemeraj Tio estas absolute ne estas la kazo.
Kiel ne estas maniero, ciferece, implementar iu formo de vídeo,
aŭ bildo, aŭ teksta dividante tiajn ke ricevanto sur la alia fino
ne povas iel savi la datumojn.
>> En la plej naiva maniero, iu povis preni sian telefonon.
Kaj ili havas 10 dua fenestro dum rigardante kelkaj snap
por simple prenu alian telefonon kaj foti ĝin, evidente.
Do vi povas antaŭgardi io cifereca tiamaniere.
Kelkaj el vi scias kiel preni ekrankopioj de via telefono.
Fakte, se vi ne scias tion, rimarkas ke almenaŭ Snapchat,
kaj mi opinias, aliaj aplikoj tiuj tagoj,
almenaŭ al vi se la ricevonto havas reale
prenita ekrankopio de via bildo.
>> Sed malbona ankoraŭ, tiu estis la snappening, kiel iu stampis ŝin ĵus,
kie iuj 100.000 punto estis liberigitaj
en kio nomas torento dosieron sur diversaj retejoj finfine.
Kaj tiuj enhavis tutajn faskon de privataj mesaĝoj kaj afiŝojn.
Ĝi rezultas plejparte benigna, tial ne kion vi povus atendi.
Sed ĉar la homo havis uzata tria paĝo,
ensalutadon iliaj Snapchat salutnomon kaj pasvorton kaj tiam
ŝparante ĉiuj iliaj punto sur tiu tria paĝo.
Kaj okazis, ke la tria partio retejo kiu estis hackeado,
kio ĝuste signifis iu supozis, kiom akiri ĉiuj 100.000 pli de tiuj bildoj
en siajn proprajn malmola disko por posta interŝanĝo.
Sincere, tie ankaŭ, ĝi estas speco de asinine ke Snapchat
implementa en tia vojo ke tria okupiĝos de detranĉo
la datumoj kaj ke ĝi ne estas ligita al via propra apliko kuras sur la telefono.
Sed ĉi tie ankaŭ rimarkas, ke tiuj aferoj ne kaptos vin per surprizo,
aŭ almenaŭ ne devus esti vivo lecionon tie.
Se vi ŝatus la teknika detaloj, iru al tiu URL tie
tio estas en hodiaŭa diapozitivoj.
Bone, demandojn pri hodiaŭa vivo lecionoj en CS?
Turnu ke ekstere.
Io ajn?
Mi havas multe da homoj kontrolanta ilia Snapchat aŭ iu jam.
>> Bone, do SQL, Strukturita Query Language.
Ni envolver ĉi.
Kaj same, kvankam Ni nur skrapi
La surfaco de tiu lingvo, ni donos al vi
sufiĉe de la lingvo en formo de PSet 7
por ke vi povu pritrakti iujn sufiĉe komuna funcionalidad.
Sed realigi estas kelkaj tion ni ne postulos de vi,
sed tuj estos grava veni fino projektoj
kaj certe venas farante reala retejojn kun realaj uzantoj
Estas ĉi tiu dezajno decido.
>> Ĝi rezultas ke en MySQL datenbazo, vi
havas aroj da elektoj kiel la datumtipoj vian kolumnoj
kaj aliaj aferoj, sed vi ankaŭ havas la elekto de tiel nomataj stokado
motoro por ĉiuj viaj datumoj, la varo de dosiersistemo,
se vi estas familiara, por ĉiuj viaj datumoj.
Kio formato ĝi finfine stokitaj en?
Kaj la plej komuna, eble, estis MyiSAM kaj InnoDB, teknikaj terminoj
ke ni devos zorgi pri nur ĝis la punkto kiu havas
kaj oni ne devas La jenaj karakterizaĵo.
>> Supozu ke vi havas iom dormejo fridujo.
Kaj supozu ke vi kaj via kompano, kiuj dividas ĉi fridujo,
Estas vere ŝatis ekzemple lakto.
Kaj tio estas, fakte, kiel la rakonto estis rakontita al mi vojon reen
en la tago, kiam Mi prenis kurson nomata CS 161 Operating Systems, kiu
simile esploras ĉi temo.
Do vi havas ĉi fridujo.
Vi estas ekster la lakton.
Kaj vi venis hejmen, via kompano La ankoraŭ en klaso aŭ kio estu,
kaj vi decidas Mi tuj eliru kaj akiri lakton.
Do vi fermas la fridujo, lockup la dormejo ĉambro, iri trans la straton
al CVS aux kie ajn kaj ricevi en linio por aĉeti lakton.
>> Dume, via kompano ricevas hejmo de klaso, metas en la dormejo ĉambro,
malfermas la fridujon, ankaŭ rimarkas ooph, ni estas el lakto.
Do li aŭ ŝi fermas la fridujo kaj tiam okazas
iri al la alia CVS, kio okazas al esti
unu bloko for de la aliaj CVS en la placo, kaj metas en linio
tie por akiri lakton.
Nun, kompreneble, kelkajn minutojn poste, vi ambaŭ reiri,
kaj la plej malbona de ĉiuj eblaj rezultoj okazis.
Ambaŭ vi havas lakton.
Kaj vi ne vere kiel lakto kiu multe.
Do unu el ili estas ĝuste tuj Sour je iu punkto.
Do nun vi havas troan kvanton da lakto en la fridujo ĉiuj ĉar kial?
>> [Inaudible]
DAVID Malan: Jes, vi ne iel interkomuniki
ke vi akiri lakton.
Do, en la plej simpla de manierojn en la homa mondo,
kiom povus vin eviti ĉi stulta scenaro okazas tiaj
ke vi nur finos kun tiu.
Teksto ilin, jes bone.
Sed kiel alie?
Post-it notoj.
DAVID Malan: post-it noto.
Ajna formo de komunikado kiu rakontas via kompano
ne iru en la fridujo por lakto.
Mi tuj iros restock sur mia propra.
Do vi iel bezonas ŝlosi tiu rimedo.
Do ni povas fari this-- ni povas ia ruinigi la rakonto kaj igi CS rakonto
per pensi pri tio kiel ĝuste kiel variablo, kiu stoki iu valoro.
Kaj nun, la valoron de lakto estas nulo,
kion vi ne deziras ke viaj kompano inspekti ke variablo
kaj tiam preni decidon li aŭ ŝi bazita sur la stato de tiu variablo
Se vi estas en la procezo de ŝanĝi la staton de tiu variablo.
>> Do unu el la linioj de SQL ke ni doni vin en PSet 7 specifo
Estas ĉi tie.
Kaj ni ne elspezi grandegan kvanto de tempo paroli pri ĝi.
Sed rezultas, se vi provas aĉeti iun stoko en CS50 Financoj
ke vi jam havas iuj agoj de vi
deziras povi fari nombro aferoj tuj kune.
Vi volas povi efektive, sur alta nivelo,
kontrolu bone, se mi volas aĉeti pli agoj de Libera,
la penny stock ni raporti en la spec,
Mi volas unue ĉeko kiom agoj mi havas.
Kaj supozu estas kvin.
Kaj supozu mi volas aĉeti 10 pli, mi finfine
volas havi 15 agoj de stock.
Do mi devas demandi du demandojn.
Kio estas la stato de la variablo?
Kio estas la stato de la vico?
Kiom da agoj mi havas nuntempe?
Tiam vi volas iri antaŭen kaj ĝisdatigi ĝin.
Do tio estas la analoga al la lakto en kiu vi kontrolu la vico,
kaj tiam vi volas ĝisdatigi ĝin ĉar se vi volas aĉeti 10 kotizoj,
Vi ne volas ŝanĝi la vico 10, vi
volas ŝanĝi ĝin al 5 plus 10 aŭ, kompreneble, 15.
>> Ĉi tiu linio de kodo certigas ke tiuj du ideoj conceptuales
okazi kune aŭ ne.
Neniu, inkludante iuj aliaj uzanto Kiu estas ensalutita en la sama paĝo,
povas iel interrompi la kontrolado de la vico
kaj la ĝisdatigo de la vico, la elekti kaj la ĝisdatigo se vi volas.
Kaj la sintakso estas súper evidentaj, sed ĉi tiu linio, estas longe estas,
certigas ke tiuj du operacioj kontrolu la variablo aŭ kontroli la vico
kaj ĝisdatigi la vico okazi atomically.
>> Ho jen ni reiru.
Teksto mesaĝo sur mia telefono.
Do ni faru ĉi tion Iom pli konkreta.
Supozu ke vi ne efektivigo fridujo,
kaj vi ne implementar PSet 7 sed reala banko,
aŭ ATM, aŭtomata Teller Maŝino, per kiu vi iel
deziras povos plivigligi uzantoj transferir mono
de unu konto al alia.
OK, pendas sur.
Mi iras al enmudecer ĉi nun, dankon.
Do ni volas movi monon de unu konto nombro
en malsaman konton nombro, specife $ 100.
Do ĉi tiu estas speco de arbitran Ekzemple, per ĝi, la ATM,
eble volas ekzekuti du SQL pridemandojn, subtrahi de unu konto,
kaj aldoni al la alia konto.
Sed vi volas certigi ke tiuj du liniojn tiel okazi aŭ ne.
Vi ne volas ion akiranta interrompita.
Vi do ne iaj inteligentaj malbona ulo iel staras ĉe Banko de Ameriko
kun du ATMs antaŭ li kaj iel
ia tajpante en la komandas samtempe,
espereble provas dedukti $ 200 anstataŭe de $ 100 kaj nur havanta $ 100 akreditita.
Mallonge, vi volas ke ĉi tio kondutas precize kiel vi atendas.
>> Kaj la vojon vi faras tiu en SQL datumbazo
vi envolver ĝin en kio estas nomita transakcio.
Laŭvorte en SQL, vi povas nomi CS50 la informpeto funkcio kun citaĵo unquote komenco
transakcio.
Tiam vi povas ekzekuti ajnan numeron de posta SQL pridemandojn,
sed neniu el ili prenu efekto en la datumbazo
ĝis vi nomas informpeto citaĵo unquote commit, se denove uzante PHP.
Kaj en tiu maniero, vi povas certigi ke eĉ se vi havas 1,000 uzantoj ĉiuj
bati vian datumbazon samtempe, SQL
promesos ke tiuj du pridemandojn estos
implementado unu tuj post la alia.
Do vi ne finos kun troo de lakto aŭ malĝusta kvanto, finfine,
mono.
>> Tiel konservi ĉi tio en menso, Ne tiel por PSet 7
sed por fina projektoj Se vi reale
provante movi datumojn ĉirkaŭ trans tabloj kiel vi povus tie.
Sed eble eĉ pli simpla kaj pli evidenta kompreni kun ekzemplo
Estas ĉi tie.
Kaj iu retpoŝtis ni pri tio tute alia tago
kiam li vidis ion similan en linio.
>> Do laŭ mia scio, la pinglo sistemo ne estas vundebla al tiu atako.
Mi havas neniun ideon se ĝi eĉ uzoj la SQL datumbazo sub la kapuĉo.
Sed ni uzas ĝin por pro diskuto.
Jen la ekrano kiu Harvard ulojn inklinas
vidi kiam ensalutadon kun siaj Harvard ID nombro kaj iliaj pinglo.
Kaj supozu ke la pinglo sistemo estis implementado en PHP kaj MySQL
datenbazo, la kodo ke iu eble skribita jarojn
povus aspekti kiel ĉi.
Unue, deklari variablon nomis uzantnomon.
Kaj simple akiri tiun de la POST superglobal.
Tiam akiri alian variablon nomita pasvorton kaj fari same.
Kaj tiam simple ekzekuti tiu longa informpeto tie,
select stelo de uzantoj kie uzantonomo egalas tia kaj tia
kaj pasvorto egalas tian kaj tian.
>> Rimarku ke la frizita krampoj mi uzis ĉi tie
nur signifus PHP, iru antaŭen kaj anstataŭanto
la valoro de tiuj du variabloj pravas.
Ili ne estas strikte necesa, sed inklinas eviti subtila sintaksaj eraroj.
Do tiu aspektas tute korekta unuavide.
Kaj ĝi estas.
Vi povus apliki la pinglo sistemo tiamaniere.
>> Sed supozu, ke la super inteligenta kaj malica studento
enigo ĉi kiel lia aŭ ŝia pinglo.
Do mi forigis la kuglon signoj tie en la imita supren,
kaj mi fakte malkaŝis kion li aŭ ŝi povus esti tajpadon.
Kaj estas iom stranga.
Sed kion elsaltas ĉe vi en potenciale preocupante pri la uzanto enigo,
eĉ se vi havas neniun ideon kio SQL injekto atako signifas.
Kial tio aspektas iom suspektinda?
Kio estas tio?
[Inaudible]
DAVID Malan: La aŭ estas iom suspektema.
Fakte, tio estas ŝlosilvorto de SQL.
Por ke ne aŭguras bone.
La fakto ke ekzistas ĉiuj tiuj solan citaĵoj
there-- fakte, unu el la plej facilaj manierojn rompi iuj datumbazoj
Estas tajpante en nomo kiel O'Reilly kiu havas apostrofon en ĝi
ĉar se la homo kiu verkis la kodo malantaŭ la scenoj
ne enkalkuli ke eble sola citaĵoj en uzanto
enigo, kaj li aŭ ŝi uzas sola citaĵoj en sian kodon,
malbonaj aferoj povas okazi.
>> Fakte, plej malbona ankoraŭ, pripensu tion.
Se tio estis denove la kodo ke iu ĉe Harvard jaroj
antaŭ skribis por la pinglo sistemo, rimarki kio estas
al get anstataŭigita por salutnomon kaj pasvorton
se la uzanto tipoj denove skroob kiel ilia salutnomo
kaj tiam unu, du, tri, kvar, kvin, citaĵo aŭ citaĵo unquote unu egaluloj
citi unu.
Kaj rimarki kio estas ŝlosila jen la uzanto ne
Komencis lian pasvorton aŭ ilia pinglo kun kurzo.
Kaj ili ne finis gxin kun citaĵo ĉar li aŭ ŝi
estas supozante ke se la programisto ne estis tiel akra,
ili tuj havos tiujn sola citaĵoj en sia kodo.
>> Do jen la kodon.
Kaj la anstataŭo ke povus nun okazi estas tiu.
Kaj mi substrekis kion la uzanto tajpita en.
Do antaŭ, post.
Kaj rimarki kio estas milde preocupante nun pri la dekstran duonon de ĉi SQL kodo?
Ĝi estas iom pli kompleksa, rekoni, ol la pridemandojn ni vidis.
Sed tio ne povas eble estus bona afero se vi estas
dirante select stelo, kiu estas unuarangaj ĉion de la uzanto tablo
kie salutnomo egalas skroob kaj Pasvorto egalas unu, du, tri, kvar,
kvin aŭ unu egalas unu.
Kio estas la logika implico de tiu lasta klaŭzo supozeble?
Estas nur ĉiam vera.
>> Kaj ĉar ni ia divenis aŭ eltrovis per provo kaj eraro
ke la programador kiu skribis ĉi kodo ne
anticipi homa aŭ malbona persono tajpado per apostrofoj tiel,
ni povas sintakse kompletigi la SQL query
kun ion sensencan sed iu kiu
estas sintakse malĝusta kiu ĉiam taksas al vera.
Do se tiu kodo estas uzata por respondi la demando vera aŭ malvera devus
tiu uzanto estos permesita pasi, La respondo ĉiam ŝajne irante
esti vera ĉar tio estas ĉiam irante elekti ion el la datumbazo
ĉar unu kompreneble ĉiam egalas unu.
>> Do kio estas la solvo?
Nu en PSet 7, ni reale eviti ĉi ĉiuj kune.
Ni donas vin konsulto funkcio, kaj ni kuraĝigi vin uzi demandosignojn
kiel anstataŭaĵojn, simila spirite al printf estas% s
sed kio estas ŝlosilo pri la demando markoj jen se vi efektive tralegi
functions.php, kie nia informpeto funkcio estas implementado,
tiuj demandosignojn savitoj, per io potenciale danĝeraj
kiel sola citaĵo renversigxis enen eskapis sola citaĵo.
>> Do tio estas kio estas vere okazas se vi
uzi CS50 la informpeto funkcio aŭ ajna nombro de triaj libera bibliotekoj kiuj
fari same.
Ne gravas en tiu ĉi kazo, en verda, se la uzanto tajpita en simpla citaĵo
ĉar la informpeto funkcio kiun ni skribis estas
tuj aldonos deklivajn streketojn antaŭe tian danĝeran citaĵo.
Do tio ne estas, Fakte, tuj estos legit.
Ĉi tio estas kiel tajpado en freneza rigardante Pasvorto tio kompreneble ne tuj
esti skroob la reala pasvorton.
>> Do la takeaway por CS50 estas unu, absolute ĉiam uzi ion
kiel CS50 la informpeto funkcio aŭ la suba biblioteko,
kio okazas al nomi PDO.
Sed neniam, neniam, neniam faros kodo kiel ĉi
sen eskapi aŭ frotante kiel oni diras via enigoj.
Kaj vi iam verŝajne ektrovas iun retejon kiel ĉi.
Fakte, ŝajnas esti la kazo kiel en flughavenoj kaj hoteloj en lokoj
kie havas liberan Wi-Fi aliro kiu vi devas ensaluti,
tiuj retejoj estas ĉiam horore implementado.
Do ia amuza hejme ekzercon, ne pro malicaj intencoj aŭ pli
de amuza survoje ekzerco, estas simple tajpi
apostrofo, sola citaĵo, en formo de iu retpaĝaro
kaj vidu kio okazas.
Kaj se la servilo frakasas aŭ donas vi ian erarmesaĝo,
ĝi povas tre bone esti ke iu ne anticipis tion.
Kaj tiam vi devus alarmi la taŭga aŭtoritatoj kaj duan fojon.
>> Do nun vi uloj devus espereble kompreni iom pli geek humuro tie.
>> [Ridado]
DAVID Malan: Vi scias ke vi estas geek.
Por la sekvaj jaroj, vi rememoros
kiu iom Bobby Tabloj estas pro tiu karikaturo tie.
Observu do, ke en menso kiel ni kunteksto ŝaltilo lasta fojo
hodiaŭ Javascript.
Ni pasigis relative malgrandan tempo sur la sintakso de PHP
ĉar ĝi estas reale súper simila al C.
Kaj bonguste sufiĉe, Ĝavoskripto tro Estas súper simila al C sintakso
tiel kiel ni vidas en nur momento kaj kiel ni
vidu poste tiun semajnon en aparta.
Kion vi povas fari kun tiu ĉi lingvo, tamen, estas des pli potenca,
precipe kun APIs.
>> Sed unue rapida ĝiras.
Do, en JavaScript, ekzistas neniu ĉefa funkcio, kiu estas bela.
Kiel kun PHP, vi povas simple skribi kodon.
Kondiĉoj aspekti ĉi.
Kaj Bulea esprimoj multobligita aspektas kiel tiu aŭ kiel tiu.
Ŝaltiloj ekzistas, kaj ili povus aspekti kiel ĉi.
Kvar maŝojn aspekti ĉi.
Dum maŝojn aspekti ĉi.
Ĉu Momentoj aspekti ĉi.
Kaj tiam arrays aspekti tiu, tre simila al PHP.
Sed rimarki, ke en JavaScript vin deklari variablon ne kun dolaro
subskribi, ne kun datumtipo sed laŭvorte dirante var por variablo antaŭ ĝi.
Ankaux gxi malstrikte tajpita en tiu havas tipoj,
sed vi ne eksplicite deklaras ilin.
Kaj tiam ŝnuro, por Ekzemple, eble rigardu
tiel, ke kordoj vokite s en tiu kazo.
Kaj tiam objekto.
Kaj jen ni vidos pli antaŭ longe.
Kaj objekto estas eble unu el la plej komune vidataj datumstrukturoj
en JavaScript bazita programo ĉar ĝi permesas
vi asocii arbitra ŝlosila valoro paroj nur
kiel PHP la asociaj tabeloj kaj ĝuste kiel viaj propraj hash tablo
aŭ provu kiel ni implementado kelkaj semajnoj reen.
Do ni efektive vidas kion ni povas fari kun JavaScript.
Kaj precipe, tiu estas lavbutiko lerta de karakterizaĵoj
ke retumiloj havas tiun ni permesos conectarse Ĝavoskripto
en retejo de la sekva modo.
JavaScript estas ofte uzata kiel kliento flanko skripta lingvo.
Ĝi ne estas kompilitaj.
Ankaux gxi interpretita.
Sed kontraste PHP, kiu estis kuranta sur la servilo, en la ttt-servilo,
aŭ profunda ene de la klientoj, Ĝavoskripto
estas malsama ĉar ĝi kutime kuras en la navegador.
>> Do ajna kodo JavaScript vi komencas skribi por PSet 8, aŭ via fina projekto,
aŭ en la reala mondo estas ĝenerale irante esti savitaj en la servilo, absolute
en dot HTML aŭ punkto JS por JavaScript dosiero.
Sed la retumilo tuj elŝuti kiujn Ĝavoskripto
kodo por via propra petskribo de Chrome, aŭ ie, aŭ Firefox, aŭ kion ajn.
Kaj la kodo estas vere tuj akiri ekzekutitaj ene de via propra retumilo.
Nur por fari tion pli realaj, ni vidas ĉi tion en konkreta formo.
>> Ni havas neniun ideon kio tiu kodo faras sen vere legado tra ĝi.
Sed permesu al mi iri al Facebook.com sen ensalutadon.
Lasu min iri inspekti Elemento kaj iri al, diru, Reto kaj reŝarĝi la paĝon.
Kaj ni see-- lasu min movi Reŝarĝi la Paĝo akiri ĉiujn petojn por novaj.
Kaj la unua dosiero mi vidas estas CSS CSS.
Jen la unua JavaScript dosiero, kaj mi havas
neniun ideon kio tiu faras, sed ĉi tie Estas iuj de la JavaScript kodo
kiu pelas Facebook.
Estas eĉ ne vere ke malkaŝante zomi.
Ĝi estas ankoraŭ same absurda.
>> Sed vi vidos eĉ malsupre, ekzistas eĉ pli de tiuj JavaScript dosierojn.
Whoops.
Tio estas ping.
Mallevigxu iom plu, plu, plu.
Ekzistas unu.
>> Do kvankam Facebook, malantaŭ la scenoj, estas skribita parte en PHP
kaj Facebook propra versio gxiajn tie estas grandega kvanto de Ĝavoskripto.
Fakte, neniu el la babili vi faras en Facebook,
iu el la inline timeline ĝisdatigoj kiuj okazas en reala tempo, ĉiuj kiuj
estas pelita de Ĝavoskripto.
Yeah?
>> Publiko: Mi ne certas se tio estas Facebook,
sed mi pensas ke Facebook disvolvis ilia propra interna kodo lingvon?
DAVID Malan: ili faris.
Do tio estas kial mi diras varianco de PHP nomita Hip Hop ke ili reale
aldonis karakterizaĵojn al tia ke kiam Markon unua implementado Facebook
Ĝi estis skribita en PHP.
Kaj tiu speco de restis la varo de antaŭa fino lingvo
ke oni uzu por tre iliaj kodigon, sed
Ne estis, ke lingvo skvamojn aparte bone miliardoj
de personoj.
Kaj tiel ili aldonis siajn proprajn plibonigoj malantaŭ la scenoj.
Kaj ili uzos ajnan numeron de aliaj lingvoj
por diversaj pecoj de siajn infrastrukturon.
Do jes, ĝi estas varianco de kion ni nun scias kiel PHP.
>> Do ni rigardu en paro de ekzemploj
de kiel ni povus uzi JavaScript tie.
En hodiaŭa fontkodo, ni havas faskon de dosieroj, la unua el kiuj,
ni nomas DOM nulo.
Do DOM nulo aspektas jene.
Lasu min iri en tiun dosierujon kaj malfermu domzero.html,
la supro de kiuj havas doc tipo deklaron jene tie venas HTML 5.
Kaj nun jen la HTML-etikedo.
Jen la kapo etikedo.
Kaj jen kio novas hodiaŭ.
>> Ni nun havas skripton etikedo ene de la kapo de la paĝo.
Kaj tio ŝajne faras tre malmulte, sed avizo
ke mi difinis skripto, JavaScript.
Kaj kiel flanken, ĉar tiu Estas komuna eraro,
JavaScript devas absolute nenion fari kun Java, la lingvo
ke iuj el vi povus lernis en APCs.
Ĝi estis pli de marketing afero ol io,
rajdante la coattails Java jarojn.
Sed JavaScript, neniel rilatas al Java, ĝuste simile, kaj annoyingly,
konfuze nomita.
>> Do jen kiel vi rakontos funkcio en JavaScript, laŭvorte diras funkcio,
tiam la nomo de la funkcio, tiam ajna argumentoj eble prenos,
ĝuste kiel en PHP.
Rezultas en JavaScript, unu el la plej ĝena funkcioj kiuj ekzistas estas Alert.
Tiu estas malgranda fenestro kiu estos popo kaj alarmi vi
iu peco de informo.
Ĝi estas ĝenerale malaprobita.
Sed ni uzu ĝin kiel nia unua ekzerco tie.
>> Rimarki kelkajn trajtojn de Ĝavoskripto.
Sola citaĵoj kaj duoblaj citiloj Ne vere gravas anymore.
Sola citaĵoj kaj duobla citiloj povas esti interŝanĝita,
dum en C, oni devas uzi citiloj por kordoj,
kaj vi havas du solajn citas por signojn.
En la Ĝavoskripto mondo, multaj personoj, la plimulto de homoj
uzi solan citaĵoj ĉirkaŭ kordoj simple ĉar ĝi estas stila afero.
Sed kio estas la pli operatoro tie, kiun ni ne vidis antaŭe?
>> Publiko: kunmeto.
DAVID Malan: kunmeto.
Do C eĉ ne havas tiun.
PHP havas la skalara operatoro, kiu tion faras.
Ĝavoskripto havas la pli operatoro, kiu konfuze estas simple kiel Java.
Nun kio okazas ĉi tie?
>> Do tie estas kie baza kompreno de tiu bildo
ni ĵetis supren paro tagoj venas en ludon.
Rememoru kiam ni havis simplan versio de HTML page--
ĝi nur diris, saluton mondo.
Kaj tiam ni tiris arbo dekstren, kio
havis amaseton da ortanguloj kaj linioj konektante ilin kiel familio arbo.
Do tio estas la tn DOM aŭ Document Object Model.
Kaj ĝi rezultas ke vi povas aliri ortanguloj en tiu arbo kun sintakso
kiel sekva.
Vi laŭvorte diras dokumento, kiu estas speciala tutmonda variablo en Ĝavoskripto
programo kiu havas funkcion asociita kun ĝi, ke vi povas aliri
simila al struct, sed vi simple diru dot kaj tiam la funkcia nomo,
ricevas elementon de ID.
>> La elemento Mi volas ricevi estas ŝajne citi unquote nomo.
Kaj tiam mi volas trovi ĝian valoron.
Nun ni ricevas antaŭ ni.
Mi eĉ ne certas kion ĉiuj ĉi estas pri.
Ni rapide antaŭen al la HTML de la paĝo, kiu estas súper simpla.
>> Rimarki ke mi difinis Formo malsupren tie.
Notice Mi transdonas gxin unika ID, kvankam ni ne uzis
tiu atributo antaŭe.
Sed tio ekzistas en HTML.
Vi povas unike identigi iujn chunk de HTML kun identificador ŝatas ĉi.
>> Notice nun this-- rezultas HTML Elportas, po ke lavbutiko listo
antaŭ momento, tuta faskon da okazaĵo manipuladores.
Kaj tiu evento traktilo diras sur submetiĝi.
Sur la uzanto submetiĝo de tiu formo, alvoki la sekvan kodon.
Kaj la kodo kiu okazas esti nomita aŭ ekzekutitaj
Estas ĝuste tio, la greka funkcio sekvita reveno falsa.
Ĉio alia devus esti bela familiara.
>> Jen enigo de tipo teksto, kies ID, en tiu kazo, estas iranta esti nomo.
Ni ne havas la veran nomon atributo ĉi time-- kaj submeto-butonon.
Do la sekvonta pagxo aspektas kiel ĉi.
Kaj la rezultanta konduto, vi vidos, aspektas kiel ĉi.
La paĝo lokaj gastigantoj diras, saluton Davido, malfacile oni estetike agrablaj
maniero saluti uzanto.
Sed kio vere okazas?
>> Nu, konsideru kia estas.
Ĉi tiu estas teksto kampo.
Kaj laŭ la HTML, mi donis ĝin
identificador sola nomita citaĵo unquote nomo.
Dume, mi diris kiam la uzanto prezentas ĉi formon
batante Enter aŭ klakante la Submit butonon vokas la funkcion nomita Salutu
kaj tiam revenu Falsaj.
Ni konsideru tiujn inverse.
Rimarki kiam mi klakas Submetu, la URL de ĉi tiu paĝo ne ŝanĝas.
La retumilo icon ne komencis ŝpini.
Mi ne iras ie, kaj tio estas laŭvorte ĉar mi diris reveni falsaj.
Reiru Falsaj fuŝkontaktoj aŭ haltoj la defaŭlta konduto de formo.
Tial do lasas nin kun ĉi tiu lasta demando.
Kion Salutu fari?
Nu, Salutu ŝajne nomas funkcion nomita
Atentigo, pasas en unu longa argumento tio
la rezulto de concatenando kune faskon de Pitono, saluton komo spaco,
tiam ajn tiu revenas.
Do dokumento estas kiel tutmonda variablo tiun radikon de tiu arbo,
nomante speciala funkcio, alie nun konata kiel metodo.
Funkcio tio ene de variablo estas
nomita metodo anstataŭ funkcio.
>> Do nepre elementon de ID.
Kio elemento vi volas akiri por lia IRU?
Citi unquote nomon kaj tiam specife taksas.
Do alivorte, ke kodo simple Trovas la teksto kampo kies ID estas nomo
kaj do ricevas sian valoron.
Do se mi ŝanĝas ĉi kaj diru Davin anstataŭ David
kaj alklaku Submetu, nun ni havi saluto por Davin.
>> Bone, do ĉiuj fajnan kaj bonan.
Sed ni vidu se ni povas fari tio iom purigisto ekde simple
skribi kodon kiel tio Ĝenerale tuj estos malaprobita.
Tiu tuj serĉos timinda.
Sed kio estas la unua diferenco, ke vi rimarku tie
en tiu versio krom la enoficigos ŝanĝante al DOM unu?
Kio strukture aspektas malsama pri tiu kontre la aliaj?
Yeah?
Publiko: Ĉu la formo sur supro de la skripto nun?
DAVID Malan: Jes, la formo estas supre de la skripto por iu kurioza kialo.
Do tio estas la unua aĵo kiuj elsaltas ĉe mi, ankaŭ.
Kaj dankeme almenaŭ, tiu parto estas identaj.
Do la sola afero kiu ŝajnas esti malsama estas tiu.
>> Do jen kio estas neta pri Ĝavoskripto 2.
Kaj faras malfacile kompreni unuavide,
speciale por fina projektoj se Vi rigardata specimenon kodo linio,
sed bolas malsupren al kelkaj baza sintaksa karakterizaĵoj.
Jen denove estas ke tutmonda variablo dokumento.
Jen denove estas tiu metodo aŭ funkcio kiu diras akiri la elemento de ID.
Ĉi tiu fojo mi volas akiri la ID nomita demo.
Kie ĝi estas?
Tio ŝajne dekstra tie, la formo mem.
>> Kaj nun rimarkis ke ŝajne, se mi reiri ke nodo el la arbo
reprezentas la formo mem, ne teksta kampo
Ĝi rezultas ke formo, ke nodo aŭ rektangulo el la arbo,
havas, kion ni nomas propraĵo, tre, tre, tre simila
spirite al struct en C. Estas nur datuma membro ene de tiu rektangulo.
>> Do mi havas la formon ĉi tie, kaj mi kunigante,
aŭ mi asignanta, lia On Submit traktilo aŭ prefere On Proponu propraĵo
La jena funkcio.
Kaj tio estas, de for, la plej freneza afero tiel malproksime sintakse.
Rezultas en JavaScript kaj en PHP, kaj sincere, cetere en C,
eĉ se ni ne faros, vi povas aldonu sennoma, anonima, aŭ AKA lambda
funkcioj kiuj ne havas nomon sed povas nomi tamen.
>> Do kion mi faras ĉi tie estas mi asignanta ĉi On Proponu posedaĵo, kiun
estas ene de tiu nodo miaj DOM ligno; funkcio, Funkcio montrilo se vi volas.
Ke funkcio ne havas nomo, sed tio ne
gravas ĉar ni vidos en momento kiel nomi ĝin.
Kiam tiu funkcio estas vokita, tiu kodo prenas ekzekutitaj, tiam
falsa redonas ĝuste kiel antaŭe.
>> Sed rimarki kion mi faris.
Ĉe tiu punkto en la rakonton, mi havas formon.
Ĝi estas akiris unikan ID nomita demo.
Cxi tie, mi havas skripton etikedo kiu ekzekutas la sekva kodo.
Ĝi atribuas al tiu nodo en La arbo estas Sur Submit
propraĵo tiu funkcio ĉi tie.
Kaj ĝuste per naturo de kiel foliumiloj funkcias, Kiam mi nun klaku Proponu aŭ batis Enter,
domadministranto tuj get nomata.
Ĝi ne bezonas nomon pro kiu la heck zorgas kio ĝi estas nomata.
La nura tempo iam tuj akiri nomita estas kiam mi sendi la formularon.
Ne estas bezono por mi la homa programisto,
efektive nomas ĝin aliloke.
>> Nun kiel teaser, kvazaŭ ne gravas klinante sufiĉe,
ni povas eĉ fari tiun aspektas pli kamufla uzanta
súper populara biblioteko nomita jQuery.
Fakte jQuery kaj JavaScript Ofte conflated.
Kaj kion ni faros merkrede estas komenco uzante tiun lingvon kaj tiuj bibliotekoj
konstrui pli nesinkrona kaj dinamikaj aplikoj
kiel mapo atingi aplikaĵoj, aplikoj
ke ĝisdatigi la retpaĝon en reala tempo, multe kiel Facebook aŭ Gchat
faru, kaj ne plu nur pri batante Proponu per get aŭ nur post
sole.
Do mi vidos vin merkredon.
>> [MUZIKO Ludante]