[MUSIC Playing] DAVID Malan: Kjo është CS 50, dhe ky është fillimi i javës nëntë. Dhe ajo që ne menduam se do të bëjmë sot nuk është vetëm të mbyllë kapitullin e javës së kaluar material, ku ne u përqendruam në server Ana web programimit me PHP dhe SQL, disa sende bazës së të dhënave. Ne do të flasim për një grimë sigurisë sot dhe pastaj Tranzicioni në një programimit anën e klientit Gjuha njohur si JavaScript. Por së pari, disa shpengim. Ju mund të kujtojnë se më E mërkurë, u nisa për të shkruar një faqe interneti që mori në input të përdoruesit nga një HTML formë që ruhet që emrat e inputeve përdorues, telefon numrat, dhe Cellphone transportuesit në bazën e të dhënave. Dhe pastaj kam pasur një komandë të vogël Linja script shkruar në PHP që ishte menduar për të iterate mbi rreshtave në bazën e të dhënave dhe për të dërguar mesazhe me tekst. Përkundër disa, disa përpjekjeve, ne nuk e kam marrë atë të punës deri në fund. Kështu që unë kaloi këtë javë të tërë të punës në këtë kod për të na marrë të fundit në pikën ku ne u ndërpre, ku të gjithë I marrë deri në fund të mërkurës Ishte ky mesazh tekst nga Margo si kam luftuar, pasuar nga një mesazh me tekst nga një tjetër klase, Ju keni marrë këtë Davidin. Ndjekur nga ky, mrekullisht inkurajuese. Mbajtur në vazhdim e sipër, shumë inkurajuese. Unë gati e kam atë deri then-- dhe kjo është shënimi që përfundoi të mërkurën. Dhe pastaj në fakt ndoshta my favorite, një moment më vonë, kjo erdhi. Damn Jetojnë Stream. Pra sot, ne të rregullojmë këtë me një të shpejtë shikoni se çfarë kam bërë që nga viti. Pra, të gjithë i këtij kodi është në dispozicion online nga javën e kaluar, javën e tetë, kodin burim. Dhe ju do të shihni se unë shkova me, dhe unë në fakt pastruar gjërat pak. I futur një çift tjetër Tiparet e një bazë të dhënash SQL. Për shembull, në vend se vetëm të bëjë bartës i var char si unë mendoj se kam bërë të fluturojnë javën e kaluar. Unë në vend të definuar atë si atë që quhet një enum. Dhe disa prej jush mund të keni parë këtë si ne hulumtohen C. ENUM është në të vërtetë një tipar i C, ku ju mund të numëroj një bandë e tërë e konstanteve dhe të caktojë ata vlerat automatike, si një, dy, tre, katër pa pasur nevojë për numra të kodit vështirë. Pra SQL mbështet njëjtë, ku në qoftë se ju keni një fushë bazës së të dhënave që ju të vetëm duan të marrin në një nga fundme Vlerat, ju mund të vërtetë të specifikoni atë siç kam bërë aty për katër popullore transportuesit Cellphone SHBA. Kështu që unë e bëri atë. Dhe kam bërë një numër ndryshimesh si mirë, më e rëndësishme e të cilave ishte për të marrë email të punuar, sepse kujtojnë, që ky program të mbështetur në të cilën përgjithësisht quhet një email tek Portë SMS, i cili është i drejtë një mënyrë e sofistikuar për të thënë se Verizon, dhe AT & T, dhe folks të tjera të mbështesin një server, ku nëse ajo pranon email, ajo konverton atë në SMS dhe i dërgon një tekst Mesazhi në telefonin e dikujt. Pra, nëse unë e bëri këtë të saktë, këtu është një formë e re dhe të përmirësuara që do të flasim për Kodi i ri dhe të përmirësuara, të cilat ju mund të luajnë me të online. Dhe shpresojmë se do të bëjë tim beep telefon në vetëm një moment. Pra, së pari, unë jam duke shkuar për të shkruani emrin tim. Së dyti, unë nuk jam duke shkuar për të bërë këtë këtë kohë. Unë jam duke shkuar për të bërë inspektimin e Elementit. Dhe kjo është vetëm një pak gjë kështu që unë nuk e bëj krijuar orë postin e prodhimit punojnë si unë e bëri për herë të fundit. Ka tani është numri im i telefonit. Unë do të zgjidhni Verizon. Dhe këtu, le të kthehet në këtë mikrofon këtu, dhe synojnë këtë në telefonin tim këtu. Unë jam duke shkuar për të klikoni Regjistrin, e cila duhet të shpresojmë se e vënë atë në bazën e të dhënave. Tani unë jam duke shkuar për të shkuar në Programi command line, e cila kujtojnë quhej dot slash tekst, dhe ndër gishtat tuaj. Këtu ne do të shkojmë. [Dings Phone] [Duartrokitje] DAVID Malan: Pra, më fun se this-- kjo është argëtim, natyrisht, në qoftë se unë të marrë në të. Por kjo është më shumë argëtim, mendova, nëse ne krijoi një nga ato momente film ku si diçka të vërtetë e keqe ka ndodhur në botë, dhe si të gjitha NSA Popullit, cellphones fillojë beeping me tekstin e mesazheve njoftimit të tyre për këtë fakt. Kështu që mendova që ne do të përpiqemi për të rikrijuar njëjtën gjë këtu, ku jo duke përdorur një bazë të dhënash, Unë në vend të parë shkroi një program që duket si kjo. Kjo është një index.php-- dhe kam vënë në internet këtë kod si well-- që me sa duket vetëm bën form.php, duke përdorur një stil paradigmë MVC se ne flasim për më shumë detaje në grup e problemeve shtatë. Kjo formë është shumë e thjeshtë. Ajo do të dorëzojë një file i quajtur here.php me postë. Dhe kjo është me sa duket do të kërkojë për një emër dhe një numër telefoni, dhe pastaj me anë të të ashtuquajturit Zgjidhni menu, kjo është do të ju jap të paktën katër popullore transportuesit SHBA Cellphone, dhe pastaj të lejojë që në mënyrë efektive marrë pjesëmarrjen duke klikuar këtu. Dhe këtu, ndërkohë, do të hua disa të kodit nga koha e kaluar. Dhe në qoftë se ju vetëm të cek këtë, ju do të shihni se ka një bandë e tërë e error checking. Por bukuria në fund është se ne nuk jemi me shkrim në një bazë të dhënash sot. Ne jemi duke e mbajtur atë të thjeshtë dhe të vetëm duke dërguar shpresë një mesazh tekst me anë të funksionit I shkroi mbi të kaluarën disa ditë thirrjes Tekst, e cila është në Ushtrimin e Funksioneve. php, i cili është sërish në dispozicion online. Pra, nëse ju do të donte për të marrë pjesë në këtë. Ne nuk do të jetë ruajtjen asgjë. Shkoni në këtë URL këtu në kohë reale. A nuk e dorëzon atë vetëm ende, por të le të të shohim nëse ne mund të kemi një nga këto filmit momente ku Cellphone gjithëve fillon beeping, shpresojmë vetëm një herë këtë vit ndryshe nga 2011 kur ky shkoi tmerrësisht shtrembër. Dhe një herë ju shkoni në atë adresë, ju duhet të shihni një formë super të thjeshtë se në qoftë se ju keni një emër, një telefon celular Numri, dhe një bartës Cellphone që përputhet me listën atje, shkoj përpara dhe plotësoni formularin. Por nuk e goditi të paraqesë vetëm ende. Formulari do të duket si ky. Shkoni përpara dhe të shkruani në emrin tuaj, numrin e telefonit. OOP, dikush po ndodh përpara kurbë. Kjo është OK. OK, të gjithë është plotësuar formularin. Kjo duhet të punojnë në një telefon, gjithashtu, në qoftë se ju dëshironi. Të gjitha të drejtat, në shënon tuaj, merrni vendosur, të shkojnë. Hit Këtu. Çfarë? Jo. Unë betohem për Zotin, unë testuar këtë herë të shumta sot. Keni marrë atë? [Bashkëvendosur Zërat] DAVID Malan: OK, ndoshta gabim përdorues. Kjo është dy. Ajo ka punuar për dy nga a disa qindra, tre, katër. OK, kjo është e mirë. Katër nga pesë për korrektesën si në lidhje. Pra, çfarë ndodhi? Pra me sa duket, pa e parë tuaj ekranet, pse mund të ketë errored? Kjo është ndoshta se ne ishim vetëm duke u përpjekur për të bërë shumë lidhje të mail server Harvardit të gjitha në herë nga e njëjta vendndodhjes IP. Unë jam vetëm guessing që unë nuk e kam kanë luksin e testimit ky kod me disa 300 njerëz paraprakisht por tani për tani të kuptojë se që të paktën duhet të e kanë marrë punën e bërë në këtë kohë. Në rregull, kështu që pse është kjo e gjithë më i përshtatshëm për çfarë po ndodh? Well parë, një të shpejtë disa njoftimeve. Pra një, në qoftë se ju dëshironi të bashkohet Chang, dhe Nick, dhe të tjerët në drekë këtë e premte, bëni RSVP në URL e zakonshme atje. Nëse jeni duke menduar të përqëndruar ose duke bërë një të mesme në CS, nëse ju jeni një i paedukuar mjaft, apo fillestar, apo edhe të vogël ose të lartë në këtë pikë dhe ende mund të shtrydh në kurset, kuptojnë se shkolla inxhinieri është mbledhur për Ben lirë dhe Krem Jerry akull dhe këshilla këtë të mërkurë menjëherë pas klasës së në 04:00 në ndërtesën CS në Maxwell Dworkin. Nëse kjo është shumë e shpejtë në ekran, thjesht shkoni të cs50.harvard.edu për një Lidhje të ngjarjes Facebook ku ju mund të shihni më shumë detaje. Ndërkohë, unë mendova se do të korrigjuar një gjë tjetër që unë goofed të mërkurën. Rezulton se ID Markut në Facebook nuk ishte tre. Ajo ishte katër. Rezulton se ai kishte më shumë provë Llogaritë se unë kujtoj. Por ajo që kjo ndjehet si një mundësi të bëni është që të tërheqë një URL si kjo. Pra, del se Facebook ka një API, Application Programming Interface, cila është një mekanizëm ku ju mund të kërkojë të dhëna të programuar në Facebook dhe për të marrë mbrapa makinë Informacioni i lexueshëm, jo ​​faqet web por teksti vetëm para, diçka quajtur JavaScript Object simbol. Dhe në fakt, në qoftë se unë të vizitoni këtë URL, dhe zoom in, by default, kjo është e Mark publikisht informacion të arritshme. Dhe detaje interesante këtu është vetëm se ID tij është me të vërtetë, numri katër, që unë realizuar sa më shpejt që kam bërë këtë. Ju mund ta bëni këtë vetë, nëse ju e dini Facebook emrin tuaj nëse ju keni një të tillë. Vetëm shkruani atë të lartë atje. Dhe kjo nuk është private. Unë jam vetëm duke bërë këtë edhe në mënyrë inkonjito. Kështu që unë nuk jam edhe në Anglisht. Dhe ju jeni duke parë që unë me sa duket ishte numri i përdoruesit 6454 për tu, e cila nuk eshte shumë keq këto ditë. Pra Gjithsesi, ju do të shihni informata shtesë atje. Dhe aspekti i dobishëm e kjo është që ju mund të shkruaj vetë software tuaj që disi integron të dhënat si kjo në aplikimin tuaj. Ju mund të fuqizojë përdoruesit për hyni në faqen tuaj te internetit, jo duke përdorur emrin e tyre doganore dhe Fjalëkalimi por ndoshta login tyre Facebook dhe të marrin informacion edhe për miqtë e tyre, në qoftë se ata miratojnë tillë, ose të ngjashme. Pra, vini re se CS50, gjithashtu, ka disa prej TV e veta, një për të dhënat e katalogut Sigurisht, disa për menutë përqafime në ngrënie salla, të gjithë ndërtesa dhe vende në kampus kemi një API për të mirë që ju mund të query ngjashme dhe për të marrë Të dhënat mbrapa tekstuale që ju mund të integrohen në një PHP, JavaScript, ose, apo edhe, edhe pse më pak zakonisht, një C bazuar projektin përfundimtar. Në të vërtetë përpara për finale Projekti janë piketa disa. Ju mori një email nga ne ditë të tjera. Kuptojnë se propozimi është për shkak këtë të hënë vjen. Kjo nuk është domosdoshmërisht të detyrueshme, por ju keni nevojë për të marrë shokët e tu të mësimdhënies miratim para se të bërë ndonjë ndryshim pas kësaj. Dhe pastaj përpara janë një Numri i piketa të tjera. Pra, për të vë në lojë ju, gjithashtu, me disa mundësi, ne kemi një bandë e këto poqat ngjyrimi. Dhe disa nga ju djema tani kanë disa prej tyre në dhomën tuaj fjetore si. Dhe ata gjithashtu kanë një API. Pra, të kujtojnë ato javë binare bulbs më parë se Dan Bradley dhe Ansel Duff ka krijuar për ne. Ata kanë përdorur një ndërfaqe software për kjo llambë të lehta, të cilat në këtë moment është e mbyllën në energji elektrike dhe pastaj me anë të wireless është e lidhur me një gjë të vogël quajtur Ura këtu poshtë, si një Patentuar pak router në këtë pajisje të veçantë. Por kjo rezulton në qoftë se unë e di se si për të të dërgoni mesazhe HTTP, ndërsa ne të gjithë tani bëjmë, Unë mund të dërgoni një mesazh si ky për kjo llambë të lehta për ta kthyer atë në ose off ose të bëjë ndonjë numër të operacione të tjera mbi të. Vini re se kjo nuk është marrë, nuk është postoni. Ka një tjetër të quajtur put. Ka në fakt disa folje të tjera të tilla. Por vini re ka një rrugë atje, slash API, çaj zhvilluesi i ri, plagë të lehta, çaj një, çaj shtetit. Kjo është me sa duket vetëm rruga se kompania, Philips, vendosi që ju keni për të goditur me një kërkesë HTTP në qoftë se ju doni për të ndryshuar gjendjen e llambë duke përdorur HTTP 1.1. Pastaj njoftim rresht bosh. Dhe pastaj në fund atë që duket si lloj i një grup të disa lloj, kjo përsëri do të quhet JavaScript Object simbol, apo Jason. Dhe ajo që ju shihni këtu është se ka tre palë kryesore me vlerë. Një kyç është quajtur në. Dhe vlera e tij duket do të jetë e vërtetë. Ndriçimi është 128, i cili është një lloj int. Dhe pastaj kohë tranzicioni është zero, e cila është në dukje sa kohë do të marrë për ta kthyer këtë gjë në. Deri tani kjo llambë është off. Por në qoftë se unë bëj pikërisht this-- le të shkoj në një mashtrojnë pak fletë se Dan ngritur në advance-- dhe unë jam duke shkuar për të shkuar përpara dhe kopje komandës në vijim. Curl, si disa prej jush mund të nxirren në CS50 Diskutoni është një dobi si Telnet tillë që ju mund të simulojnë HTTP kërkesa, posaçërisht vë. Unë mund të dërgoni këto të dhëna, në mënyrë specifike atë që ne vetëm pa një moment më parë në mënyrë specifike në këtë URL mbi këtu. Dhe pastaj Curl do të trajtojë të gjitha headers nevojshme dhe atje analizë gramatikore të. Kështu që të gjitha unë duhet të bëni është të kopjoni këtë në një dritare terminali dhe pastaj goditi Enter. Dhe llambë drita vazhdon. Dhe kjo është e gjitha po kalon kompjuterin tim pa tel disi deri tek ura, e cila pastaj duke folur me këtë llambë të lehta. Unë mund të bëjë diçka tjetër. Unë mund të bëjë këtë gjë shkoni të kuqe për shembull. Unë mund të për shembull të bëni kjo gjë të shkojnë gjelbër. Unë mund të bëjë atë të shkojë blu. Dhe njoftim në secilën nga këto raste, të gjitha që unë jam duke ndryshuar është e ashtuquajtura vlera e thirrur për në fakt t'i jepte disa ngjyra. Pra më lejoni të ngjisni këtë në si. Tani është blu. Dhe ju mund të bëni edhe njohës gjëra where-- le të shkojë në të gjelbër. Dhe unë mund të bëjë këtë të Sigurisht me kodin time. Por edhe vetë API mbështet operacionet shokuar si kjo, e cila tani do të shqetësojë Na kontaktoni për 30 sekondave të ardhshëm. Pra, kjo është një shije të asaj që ju mund të të bëjë me një API, kjo përfshin poqat. Vini re se CS50 ka një çift palë Google Glass Nëse ju dëshironi të doja të trajtuar diçka së bashku këto linja, Arduino Unos, e cila kompjutera vogël pak, në thelb, në një bord qark të vogël që ju mund të lidheni telat dhe gjëra të tjera për dhe në fakt kontrollin e Ambienti juaj i vërtetë botëror. Dhe pastaj ka disa lodra të reja që ne kemi. Kjo fjalë për fjalë vetëm arriti ditë të tjera me anë të postës, një Armband Myo. Dhe unë mendova se është një mënyrë për të merrni ju ngacmuar në lidhje me projektet e që ju mund të përdorni me kjo pajisje do të të jetë për të luajtur këtë clip shkurtër që ata përdorin për të ngas folks se ne jemi tani duke jetuar në të ardhmen. [MUSIC Playing] DAVID Malan: Pra, në vetëm disa javë, ju gjithashtu mund të jetë që ftohtë në panair CS50. Një pajisje që kanë një bandë e që ne jemi lumtur për hua për projekte quhet një kontrollues lëvizje. Kjo është një pajisje e vogël USB ju lidheni me një kompjuter që ju lejon për të bashkëvepruar me laptop tuaj, Mac apo PC, sikur keni pasur si një Xbox Kinect dhe të bëjë në fakt mocionet fizike shumë si ne e shohim në këtë Vizioni për të ardhmen. [MUSIC Playing] DAVID Malan: Pra, edhe në qoftë se ju keni nuk ka ide se si diçka si kjo ndoshta mund të jetë shpikur apo punë në një nivel hardware, pa marrë parasysh. Edhe pas vetëm disa muaj të CS50, dhe një kuptim i programimit më në përgjithësi, dhe programim web më shumë kohët e fundit, dhe pastaj edhe TV, dhe HTTP, ju do të keni qasje nëpërmjet TV software në qoftë se ju nuk duan të marrë hua një nga këto pajisje të vërtetë flasin për atë dhe nuk duhet të shqetësohen për zbatimi themelor detajet, e cila është plotësisht në përputhje me këtë nocion të layering një abstraksion që ne kemi parë gjatë gjithë semestrit. Ashtu edhe gjatë fundjavës, pa një copë çift të lajmeve. Shko pari, të shkojnë në seminare, nëse ju do të donte për të mësuar diçka më shumë në çdo numër të temave. Shih URL atje. Dhe kjo u dërgua në me nga Chang, i cili ju e dini, kush është shtypjen ushtrinë tonë të elefantëve. Dhe kjo ishte një titull si më poshtë. Unë jam i tmerruar nga TV tim të ri. Pse unë jam i frikësuar për ta kthyer këtë gjë mbi dhe ju do të jetë shumë. Pra, ne jemi tani në pikë në semestrin, gjithashtu, ku edhe në qoftë se ju keni vogël e të kuptuarit se si punon web, dhe HTTP, dhe sigurisë, gjëra të tilla si kjo duhet të fillojë për të kapur syrin tuaj. Por gjithashtu, ju do të kuptoni nëse këto gjëra janë ose jo Kërcënimet aktuale. Kështu që unë mori disa fragmente nga ky nen këtu. Dhe historia është si vijon. Unë jam tani pronar i një TV të re zgjuar, i cili premton për të ofruar streaming multimedia përmbajtjen, lojra, app, media sociale, dhe internet browsing, oh dhe TV too. Problemi i vetëm është se unë jam tani frikë të përdorin atë, thotë autori. Ju do të jetë, gjithashtu, në qoftë se ju lexoni me anë të 46 Privacy Policy për TV tuaj. Shuma e të dhënave të këtij gjë mbledh është tronditëse. Ajo shkrimet ku, kur, si, dhe për sa kohë që ju përdorni TV. Ajo vendos ndjekja cookies, siç e kemi diskutuar, dhe beacons projektuar për të zbuluar, kur ju keni Përmbajtja shikohet veçantë ose një mesazh të veçantë email në qoftë se ju doni të kontrolloni email në TV tuaj. Ajo regjistron Apps që ju përdorin, faqet e internetit që ju vizitoni, dhe se si ndërveprojnë me përmbajtjen, duke bërë të gjithë që me anë të TV tuaj zgjuar. Ai gjithashtu, yet-- creepier kjo është addition-- im ka një ndërtuar në kamera me njohjen e fytyrës. Qëllimi është që të ofrojë kontrolli gjest për TV dhe të mundësojë që të hyni brënda për personalizuar llogarinë përdorur fytyrën tuaj. Në përmbysur, imazhet janë të ruhen në TV në vend të ngarkuar në një server të korporatave. Në dobësitë, internet Lidhja e bën tërë TV prekshme për hakerat që kanë demonstruar aftësi të marrë kontrollin e plotë të makinës. Më tepër shqetësuese, pasi në qoftë se nuk ishte e mjaft i zgjuar, është mikrofon. TV krenohet me një zë Njohja tipar që lejon shikuesit për të kontrolluar ekran me komandat zë. Por shërbimi vjen me një paralajmërim mjaft ogurzi. Ju lutemi të jenë të vetëdijshëm se në qoftë se fjalët e tua folur përfshijnë personale apo të tjera të ndjeshme Informacioni, që informacioni do të jetë midis të dhënave të kapur dhe transmetohet një pale të tretë. Got kjo? A nuk thonë personale ose sensitive gjëra në frontin e TV tuaj. Pra, kjo është në të vërtetë për të vërtetë. Dhe kjo nuk është e vështirë për të parë nëse ju shkoni në Best Buy apo si për TV këto ditë. Ata janë të gjithë të zgjuar në një farë mënyre. Dhe ata janë duke marrë zgjuar dhe creepier. Dhe ata janë thjesht mbledhjen e të dhënave në mënyra që ne kemi biseduar në lidhje me dhe pastaj ngarkoni atë nëpërmjet HTTP, ose disa protokoll tjetër për disa server. Pra, kjo ishte një artikull fun në këtë website në internet këtu, e cila foli për një bug të veçantë ose kod i gabuar se ne fakt mund të lidhin në diskutim javës së kaluar. Pra, ky titull ishte aq ndjek, historia shkon këtu, Josh Breckman punuar për një Kompania që fitoi një kontratë për të zhvilluar një të menaxhimit të përmbajtjes sistem, ose CMS si ata janë quajtur, për një faqe interneti mjaft të madhe të qeverisë. Pjesa më e madhe e projektit përfshirë zhvillimin e një sistemi të menaxhimit të përmbajtjes në mënyrë që punonjësit do të jetë në gjendje për të ndërtuar dhe për të ruajtur gjithnjë e në ndryshim përmbajtje për faqen e tyre. Gjërat shkuan mjaft mirë për të disa ditë pas do të jetojnë. Por ditën e gjashtë, gjërat nuk shkuan aq mirë. Të gjitha të përmbajtjes në website ishin zhdukur tërësisht. Dhe të gjitha faqet e çoi në default, ju lutem shkruani përmbajtje web faqe. Uh. Josh u thirr për të hetuar dhe vënë re se një veçanërisht i mundimshëm Adresa IP e jashtme kishte shkuar në dhe të fshihen të gjitha përmbajtje të sistemit. Adresa IP nuk i përkasin në një farë prirje hacker jashtë në shkatërrimin e të dobishme Informacioni qeverisë. Ajo zgjidhet për googlebot.com, Shumë vetë web zvarritje merimangë Google. Uh. Pas një grimë e hulumtimit dhe të përpiqen rreth për të gjetur një backup noncorrupt, Josh gjetur problemin. Një përdorues ka kopjuar dhe ngjit disa përmbajtje nga një faqe në një tjetër, duke përfshirë një Edit Hyperlink për të redaktuar përmbajtjen në faqe. Normalisht kjo nuk do të jetë një çështje që një përdorues të jashtëm do të duhet të futni një emër dhe fjalëkalim, por tek sistemi CMS, sistemi login, nuk ka marrë parasysh thatë sofistikuar teknikat e Google Spider. Uh. Siç rezulton, Google Spider nuk përdor cookies, që do të thotë se ajo mund të lehtë të anashkalojë një kontroll për është e regjistruar në grup cookie të jetë e rreme. Ajo gjithashtu nuk i kushtoj vëmendje të JavaScript, e cila do të normalisht të shpejtë dhe përcjellëse përdoruesit të cilët nuk janë të regjistruar në. It does megjithatë ndiqni çdo hyperlink në çdo faqe të gjen, duke përfshirë edhe ato me Fshij Faqe në titull. Uh. Pra, çfarë do të thotë kjo në më shumë kushtet teknike por mjaft të qasshme? Kjo thjesht do të thotë se të gjithë faqen e internetit e tyre, ata kishin URL jo ndryshe nga ky që ju mund të shihni në problemin vendosur shtatë. Recall në problemin vendosur shtatë ose e di në problemin vendosur shtatë se ju jeni të sfiduar, ndër të tjera, për të shitur rezervat në emër të përdoruesit. Por zbatimin e atë funksion nga rruga i merrni nëpërmjet hyperlinks në përdoruesit tuaj interface, ndoshta jo ide e zgjuar sepse nëse faqja e juaj është disi arritshme ose nga një njeri kush është klikuar rreth, ose ta blejë një bot si Google apo një Spider pasi ata janë quajtur kjo është vetëm zvarritje web duke u përpjekur për të indeksit web si një motor kërkimi, ata mund shumë lehtë goditur me anë të merrni këtë lloj URL. Dhe kjo është funksionalisht ekuivalente me, në këtë rast, shitjen e të gjitha aksioneve të Google. Tani sinqerisht, kjo është krejtësisht e si gomar se CMS përdorur JavaScript dhe Cookies për të zbatuar sistemin e saj login dhe nuk ka bërë atë anë server, si ju djema bëni dhe do të në PSet 7-- ka një login.php file-- gjithmonë, gjithmonë, gjithmonë të sigurisë duhet të jenë të bërë në anën e serverit, jo në anën e klientit, sepse, pasi kjo neni sugjeron dhe ju mund të veten të shihni në një pikë, ajo është e parëndësishëm për një përdorues, i mirë apo i keq, të vetëm të kthehet off JavaScript për të mos përmendur cookies. Pra, kjo është WTF tuaj të përditshme. Nuk është një shumë, e cila është vetëm lloj i frikshme, kështu që unë do të përmend atë nëse vetëm si një mësim të jetës. Kurdo që ju përdorni një aplikim quajtur si Snapchat apo si që thotë se këto foto të zgjasë vetëm për pesë sekonda, dhjetë sekonda, apo gjësend. Ata janë jetëshkurtër Kjo është absolutisht nuk është rasti. Ashtu si nuk ka asnjë mënyrë, digjitale, për të zbatuar një formë të videos, ose imazh apo tekstuale ndarjen e tillë se nje marresi në anën tjetër nuk mund të shpëtojë disi të dhënat. Në mënyrën më naiv, dikush mund të marrë telefonin e tyre. Dhe ata kanë një dritare 10 dytë ndërsa në kërkim në një punë e lehtë për të marrë vetëm një telefon tjetër dhe fotografuar atë, natyrisht. Kështu që ju mund të ruajë diçka digjitale në këtë mënyrë. Disa prej jush e dini se si për të marrë screenshots në telefonin tuaj. Në fakt, në qoftë se ju nuk e dini këtë, e kuptojnë se të paktën Snapchat, dhe unë mendoj se të tjera aplikacione këto ditë, të paktën ju nëse them marrësi ka të vërtetë marrë një pamje të imazhit tuaj. Por më keq akoma, kjo ishte snappening, si dikush e solli atë kohët e fundit, ku disa 100,000 snaps ishin liruar në atë që quhet një skedar torrent në faqet e internetit të ndryshme në fund të fundit. Dhe këto përmbante një bandë e tërë e mesazheve private dhe postet. Ajo rezulton nga shumica e tyre dashamirës, kështu që nuk është ajo që ju mund të presin. Por për shkak se njerëzit kishin përdorur një faqe interneti të palës së tretë, prerjet me Snapchat tyre emrin e përdoruesit dhe fjalëkalimin dhe pastaj kursimit të gjithë snaps tyre në këtë website palës së tretë. Dhe kjo ishte se pala e tretë faqe interneti që ishte hacked, i cili vetëm do të thoshte dikush artistikisht se si për të marrë të gjitha 100,000 plus e këtyre imazheve në drive e tyre të vështirë për ndarjen e mëvonshme. Sinqerisht, edhe këtu, kjo është lloj e si gomar që Snapchat është zbatuar në mënyrë të tillë që një palë e tretë mund të lloj nga ndërprerje të dhënat dhe se nuk është e lidhur me tuaj Aplikimi vetë drejtimin në telefon. Por edhe këtu, të kuptojë se këto gjërat nuk do të kapur ju në befasi, ose të paktën nuk duhet të jetë një mësim të jetës këtu. Nëse ju dëshironi teknike Detajet, të shkojnë në atë URL atje kjo është në slides sotme. Të gjitha të drejtat, ndonjë pyetje në sotme mësimet e jetës në CS? Kthejeni atë off. Çdo gjë në të gjitha? Çdo gjë në të gjitha? Unë kam marrë një shumë të njerëzve të kontrolluar Snapchat tyre apo diçka tani. Në rregull, kështu SQL, Strukturuar Query Language. Le të përfundojë këtë. Dhe gjithashtu, edhe pse ne jemi vetëm kruarje sipërfaqja e kësaj gjuha, ne do të ju jap mjaft i gjuhës në formën e PSet 7 kështu që ju mund të trajtojë disa functionality mjaft të zakonshme. Por e kuptojnë se janë një çift gjëra që nuk kërkojnë prej jush, por ata do të jenë të rëndësishme vijnë projektet përfundimtare dhe sigurisht të vijë duke e bërë aktuale faqet e internetit me përdoruesit aktual Është ky vendim dizajn. Ajo rezulton se në një bazë të dhënash MySQL, ju kanë bunches zgjedhje si llojet e të dhënave për kolona tuaj dhe gjëra të tjera, por edhe ju keni zgjedhja e një të ashtu-quajtur magazinimit motor për të gjitha të dhënat tuaja, lloj i file të sistemit, në qoftë se ju jeni të njohur, për të gjitha të dhënat tuaja. Çfarë format është ajo në fund të fundit ruajtur në? Dhe më të zakonshme, ndoshta, ka qenë MyiSAM dhe InnoDB, kushtet teknike se ne do të kujdeset për vetëm në atë masë që një ka dhe nuk ka funksion në vijim. Supozoni se ju keni një frigorifer të vogël konvikti. Dhe mendoj se ju dhe tuaj shokun, që ndajnë këtë frigorifer, janë me të vërtetë dua të qumështit të themi. Dhe kjo është, në fakt, se si histori u tha për mua rrugën prapa në ditën kur mora një kurs quajtur CS 161 Sisteme Operative, e cila në mënyrë të ngjashme shqyrton këtë temë. Pra, ju keni marrë këtë frigorifer. Ju jeni nga qumështi. Dhe ju vijnë në shtëpi, shokun tënd ende në klasë apo çfarëdo, dhe ju vendosni që unë jam duke shkuar për të dalë dhe për të marrë disa qumësht. Pra, ju mbyllni frigorifer, garazh dhomë fjetore, shkoni nëpër rrugë për CVS apo kudo, dhe të merrni në linjë për të blerë qumësht. Ndërkohë, shokun juaj merr në shtëpi nga klasa, merr në dhomën e konvikt, hap frigoriferin, gjithashtu realizon ooph, ne jemi nga qumështi. Kështu që ai ose ajo mbyllet frigorifer dhe pastaj ndodh për të shkuar në CVS tjetër, e cila ndodh të jetë një bllok larg nga CVS e tjera në shesh, dhe merr në linjë atje për të marrë disa qumësht. Tani, sigurisht, disa minuta më vonë, ju të dy të kthehet, dhe më e keqja e të gjitha të jetë e mundur Rezultatet ka ndodhur. Dy prej jush kanë qumësht. Dhe ju nuk e bëni me të vërtetë si qumësht se shumë. Pra, njëri prej tyre është vetëm do të përkeqësohen në një pikë. Kështu që tani ju keni një sasi të tepërt i qumështit në frigorifer të gjitha, sepse pse? [Padëgjueshme] DAVID Malan: Yeah, ju nuk e keni disi të komunikojnë me njëri-tjetrin që ju të ishin marrë qumësht. Pra, në të thjeshtë e mënyra në botën e njeriut, si mund të ju shmangur këtë kuptim skenar të ndodhin të tilla që vetëm ju të përfundojnë me një. Tekst tyre, po të mirë. Por si tjetër? Post-it vëren. DAVID Malan: Një shënim Post-it. Çdo formë e komunikimit që tregon shokun tuaj Mos shkoni në frigorifer për qumësht. Unë jam duke shkuar për të shkuar përmbaj të mi. Pra, ju disi duhet të bllokoj këtë burim. Pra, ne mund të bëjë this-- ne mund të lloj prish historinë dhe të kthehet në një histori CS ku të mendojnë për këtë si vetëm si një variable, e cila është e ruajtjen disa vlera. Dhe tani, Vlera e qumështit është zero, të cilat ju nuk doni tuaj shokun për të inspektuar këtë variabël dhe pastaj të bëjë një vendim atë ose veten bazuar në gjendjen e kësaj variable në qoftë se ju jeni në procesin e ndryshuar gjendjen e kësaj variable. Pra, një nga linjat e SQL që ne ju jap në PSet 7 specifikim është kjo këtu. Dhe ne nuk do të kalojnë një i madh Shuma e kohës duke folur në lidhje me të. Por kjo rezulton, në qoftë se jeni duke u përpjekur për të blerë disa aksione në sektorin e financës CS50 se ju tashmë keni disa aksione të, ju duan të jenë në gjendje për të bërë një numër i gjërave menjëherë së bashku. Ju dëshironi që të jetë në gjendje për të në mënyrë efektive, në një nivel të lartë, kontrolloni të gjithë të drejtë, në qoftë se unë dua për të blerë më shumë aksione të Lirë, aksioneve peni ne flasim për në spekulim, Unë dua të kontrolloni të parë sa aksione kam. Dhe mendoj se është pesë. Dhe mendoj unë dua të blej 10 më shumë, unë në fund të fundit duan të kenë 15 aksione. Kështu që unë duhet të pyes dy pyetje. Cila është gjendja e variablit? Cila është gjendja e rresht? Sa aksione mund të aktualisht kanë? Pastaj ju doni të shkoni përpara dhe update it. Pra, kjo është analog me qumësht në se ju kontrolloni rresht, dhe pastaj ju doni për të rinovuar atë sepse në qoftë se ju dëshironi të blini 10 aksione, ju nuk doni të ndryshojë rresht në 10, ju duan për të ndryshuar atë për 5 plus 10 apo, natyrisht, 15. Kjo linjë e kodit siguron se këto dy ide konceptuale ndodh së bashku ose aspak. Askush, përfshirë edhe disa përdorues të tjerë që është hyrë në të njëjtën faqen e internetit, disi mund të ndërpresë Kontrolli i rresht dhe përditësimin e rresht, zgjidhni dhe përditësimi nëse ju do. Por sintaksa nuk është e super e qartë, por kjo linjë njeri, e gjatë është kjo është, siguron që këto dy operacione kontrolloni variablin ose kontrolloni rresht dhe përditësimin rresht të ndodhë atomically. Oh këtu ne do të shkojmë përsëri. Mesazh tekst në telefonin tim. Pra, le të bëjnë këtë një pak më konkret. Supozoni se ju nuk jeni zbatimin e një frigorifer, dhe ju nuk jeni zbatimin PSet 7 por një bankë aktuale, ose një ATM, një Automated Teller Machine, ku ju disi duan të jenë në gjendje për të fuqizuar përdoruesit të transferimit të parave nga një llogari në një tjetër. OK, varet. Unë jam duke shkuar për të heshtur këtë tani, faleminderit. Pra, ne duam të lëvizin të holla nga një numër i llogarisë në një llogari tjetër numrin, konkretisht 100 $. Pra, kjo është lloj i një arbitrare shembull, ku ju, ATM, mund të dëshironi për të ekzekutuar dy SQL pyetje, zbres nga një llogari, dhe të shtoni në llogarinë tjetër. Por ju doni të siguruar që këto Dy linja të dyja të ndodhë ose jo në të gjitha. Ju nuk dëshironi diçka duke ndërprerë. Ju nuk bëni disa djalë i zgjuar i keq disi qëndron në Bankën e Amerikës me dy ATM para e tij dhe disi lloj shtypni komandat në të njëjtën kohë, shpresojmë se duke u përpjekur për të zbritur 200 $ në vend prej $ 100 dhe të kesh vetëm 100 $ kredituar. Me pak fjalë, ju dëshironi që kjo të sillen pikërisht si ju presin. Dhe mënyrë që ju bëni këtë në SQL databazë është ju përfundojë atë në atë që është quajtur një transaksion. Fjalë për fjalë në SQL, ju mund të telefononi CS50-së Funksioni query me kuotë fillimin mbyll thonjëzat transaksion. Pastaj ju mund të ekzekutojë ndonjë numër e SQL queries mëvonshme, por asnjëri prej tyre marrin efekt mbi bazën e të dhënave deri sa ju e quani query quote mbyll thonjëzat kryer, nëse përsëri duke përdorur PHP. Dhe në këtë mënyrë, ju mund të sigurojë që edhe në qoftë se ju keni 1000 përdoruesit të gjithë goditur bazën e të dhënave tuaja në të njëjtën kohë, SQL do të premtojmë se këto dy pyetje do të jetë zbatuar një të drejtë pas tjetrit. Pra, ju nuk do të përfundojnë me të madhe se qumësht ose shuma e gabuar, në fund të fundit, e parave. Kështu që të mbajë këtë në mendje, jo aq shumë për PSet 7 por për projekte finale në qoftë se ju jeni në të vërtetë duke u përpjekur për të lëvizur të dhënat rreth nëpër tavolina si ju mund të këtu. Por ndoshta edhe më të thjeshta dhe më shumë qartë për të kuptuar me një shembull është kjo këtu. Dhe dikush na dërguar me email në lidhje me kjo vetëm ditë të tjera Kur ai e pa online diçka të ngjashme. Pra, për njohuritë e mia, sistemi pin nuk është e ndjeshme ndaj këtij sulmi. Dhe unë nuk kam asnjë ide nëse ajo edhe përdorime bazës së të dhënave SQL nën kapuç. Por le të përdorin atë për të hir të diskutimit. Këtu është ekran që Folks Harvardit kanë tendencë për të parë kur prerjet me tyre Numri i Harvard ID e pin e tyre. Dhe mendoj se sistemi i pin ishin zbatuar në PHP dhe MySQL me një bazës së të dhënave, kodin që dikush vjet mund të ketë shkruar më parë mund të duket si kjo. Së pari, të deklarojë a quajtur emrin e ndryshueshme. Dhe vetëm për të marrë atë nga superglobal POST. Pastaj merrni një variabël quajtur fjalëkalimin dhe të bëjë të njëjtën gjë. Dhe vetëm pastaj të ekzekutojë këtë pyetje të gjatë këtu, zgjidhni yll nga përdoruesit ku Emrin e barabartë tilla dhe të tilla dhe fjalëkalimi barabartë të tilla dhe të tilla. Vini re se kaçurrel formatimin e teksteve Unë e kam përdorur këtu vetëm thotë për të PHP, shkoni përpara dhe zëvendësim vlera e këtyre dy Variablat e drejtë atje. Ata nuk janë të domosdoshme, por ata kanë tendencë për të shmangur gabimet delikate sintaksë. Pra, kjo duket plotësisht saktë në shikim të parë. Dhe kjo është. Ju mund të zbatojë Sistemi pin në këtë mënyrë. Por mendoj se një super Studenti i zgjuar dhe me qëllim të keq input këtë si pin e tij ose të saj. Kështu që unë kam hequr plumbin Shenjat këtu në tallen deri, dhe unë kam zbuluar në fakt atë që ai ose ajo mund të jetë typing. Dhe kjo është pak e çuditshme. Por ajo që në hedhje nga ju në potencialisht shqetësuese në lidhje me input të përdoruesit, edhe në qoftë se ju nuk kanë idenë se çfarë një sulm SQL injeksion të thotë. Pse e bën këtë të duket një peshk të vogël? Çfarë është kjo? [Padëgjueshme] DAVID Malan: ose është a pak të dyshimtë. Në fakt, kjo është një fjalen nga SQL. Kështu që nuk ka shenjë e mirë. Fakti që ka të gjitha këto citate të vetme there-- në fakt, një nga më e lehtë mënyra për të thyer disa bazave të të dhënave është nga shtypja në një emër si O'Reilly që ka një apostrof në atë sepse në qoftë se njeriu i cili ka shkruar Kodi prapa skenave nuk merr parasysh se ka mund të jenë kuotat e vetme në një përdorues të input, dhe ai ose ajo është duke përdorur Kuotat e vetme në kodin e tyre, gjëra të këqija mund të ndodhë. Në fakt, më keq akoma, e konsiderojnë këtë. Nëse kjo ishte përsëri kodin se dikush në vitet e Harvardit më parë shkroi për pin Sistemi, vini re çfarë është gati për të marrë zëvendësua për emrin e përdoruesit dhe fjalë-kalimin nëse llojet e përdoruesve përsëri skroob si emrin e tyre dhe pastaj një, dy, tre, kater, pese, quote ose quote mbyll thonjëzat një barabartëve cituar një. Dhe vini re çfarë është çelësi këtu është përdorues nuk ka filloi fjalëkalimin tyre apo pin e tyre me një kuotë. Dhe ata nuk e kanë përfunduar atë me një kuotë, sepse ai ose ajo është supozuar se në qoftë se programues nuk ishte aq e mprehtë, ata do të kenë ato Kuotat e vetme në kodin e tyre. Kështu që këtu është kodi. Dhe zevendesimi se tani mund të ndodhë është kjo. Dhe unë kam theksuar se çfarë përdoruesi ka shtypur në. Pra, para, pas. Dhe vini re çfarë është paksa shqetësuese tani për gjysmën e djathtë të këtij kodi SQL? Kjo është pak më komplekse, pa dyshim, se pyetjet që kemi parë. Por kjo nuk mund të të jetë një gjë e mirë nëse ju jeni duke thënë zgjidhni yll, i cili është të zgjidhni çdo gjë nga tryeza e përdoruesit ku emri i përdoruesit barabartë skroob dhe fjalëkalimin e barabartë me një, dy, tre, katër, pesë ose një është e barabartë me një të tillë. Çfarë është implikimi logjik të kësaj pike të fundit me sa duket? Është vetëm gjithmonë e vërtetë. Dhe për shkak se ne kemi mendoi lloj ose motive nga gjykimi dhe gabim se programues i cili shkroi ky kod nuk ka parashikojnë një person njerëzor apo e keqe shtypja në thonjëza të vetme, si edhe, ne mund të sintaksore përfunduar SQL query me diçka absurd por diçka që është sintaksore pasaktë që gjithmonë vlerëson të vërtetë. Pra, nëse ky kod është duke u përdorur për t'iu përgjigjur Pyetja e vërtetë apo e rreme duhet ky përdorues të lejohet të kalojë, Përgjigja është gjithmonë duket do të jetë e vërtetë, sepse kjo gjithmonë do për të zgjedhur diçka nga baza e të dhënave sepse një natyrisht gjithmonë është e barabartë me një të tillë. Pra, çfarë është zgjidhja? Edhe në PSet 7, ne fakt shmangur këtë të gjithë së bashku. Ne ju japim një funksion pyetje, dhe ne ju inkurajojmë të përdorni pikëpyetje si placeholders, të ngjashme në frymën me printf është% s, por ajo që është shumë e rëndësishme në lidhje me pikëpyetje këtu është në qoftë se ju lexoni në të vërtetë përmes functions.php, ku tona Funksioni pyetje është zbatuar, këto pikëpyetje janë të shpëtuar, ku çdo gjë potencialisht të rrezikshme si një kuotë të vetme është kthyer në një kuotë të shpëtuar të vetme. Pra, kjo është ajo që është me të vërtetë po ndodh në qoftë se ju përdorni funksionin CS50 për pyetje ose ndonjë numër e bibliotekave të lirë të palës së tretë që bëjnë të njëjtën gjë. Nuk ka rëndësi në këtë rast, në të gjelbër, në qoftë se përdoruesi ka shtypur në një kuotë të vetme sepse query funksion që kemi shkruar është shkuar për të shtuar pjerrta parë çdo kuotë të tillë të rrezikshme. Pra, kjo nuk është, në fakt, do të jetë legit. Kjo është si të shtypni një i çmendur në kërkim Fjalëkalimi kjo është, sigurisht, nuk do të jetë fjalëkalimin aktuale skroob s. Pra, takeaway për CS50 është një, absolutisht të përdorni përherë diçka si funksion CS50 të query ose bibliotekë themelor, i cili ndodh që të quhet PDO. Por kurrë, kurrë, kurrë nuk bëjnë kodin si kjo pa ikin ose të ashpër siç thonë ata inputet tuaja. Dhe ju do të në një moment ndoshta vijnë të gjithë një faqe interneti si kjo. Në fakt, kjo duket të jetë rasti si në aeroporte dhe hotele në vende ku ata kanë të lirë Wi-Fi qasje që ju duhet të identifikoheni për të, këto faqet e internetit janë gjithmonë të zbatuar tmerrshëm. Dhe kështu një lloj i argëtim në shtëpi ushtrojnë, jo për qëllime dashakeqe ose më shumë e një fun në rrugë ushtrim, është që vetëm lloji një apostrof, një kuotë të vetme, në një formë në disa faqe interneti dhe shikoni se çfarë ndodh. Dhe në qoftë se serveri punon ose jep ju disa lloj i mesazhit të gabimit, ajo mund të jetë shumë mirë që dikush nuk e ka parashikuar këtë. Dhe pastaj ju duhet të lajmërojnë duhur Autoritetet dhe të vazhdojë më tej. Kështu që tani ju djema duhet të shpresojmë se kuptuar pak më shumë humor geek këtu. [Qeshura] DAVID Malan: Ti e di që ju jeni një geek. Për të ardhshëm disa vjet, ju do të mbani mend i cili pak Tabelat Bobi është për shkak të këtij kartonave këtu. Pra, mbani në mend se si ne kaloni Konteksti një herë të fundit sot në JavaScript. Ne kemi shpenzuar relativisht pak Koha në sintaksë e PHP sepse kjo është në të vërtetë super të ngjashme me C. Dhe mirë të mjaftueshme, JavaScript too është super i ngjashëm me sintaksë C si dhe ne do të shohim në vetëm një moment dhe si ne do të shih më vonë këtë javë në veçanti. Çfarë ju mund të bëni me këtë gjuhë, megjithatë, është e gjitha më e fuqishme, sidomos me TV. Por së pari një turne të shpejtë. Pra një, në JavaScript, ka nuk ka funksion kryesor, e cila është e bukur. Si me PHP, ju thjesht mund të shkruani kodin. Kushtet duken si kjo. Dhe shprehjet Boolean mund duket si ky apo si kjo. Switches ekzistojnë, dhe ata mund të duket si kjo. Katër sythe të duket si ky. Ndërsa sythe të duket si ky. A nganjëherë duken si kjo. Dhe pastaj të vargjeve të duken si kjo, shumë e ngjashme me PHP. Por vini re, se në JavaScript ju të deklarojë një ndryshore jo me një dollar nënshkruajë, jo me një lloj të të dhënave, por fjalë për fjalë duke thënë se var per variable para tij. Ajo gjithashtu është e shtypur lirshëm në atë që ajo ka lloje, por ju nuk i deklarojnë ato në mënyrë eksplicite. Dhe pastaj një varg, për shkallës, mund të duket si kjo, kjo string duke u thirrur s në këtë rast. Dhe pastaj një objekt. Dhe këto do të shohim më shumë para se të gjatë. Dhe një objekt është ndoshta një nga më së shpeshti shihet struktura e të dhënave në JavaScript të bazuar program, sepse ai ua mundëson ju shok arbitrare palë kyçe vlerë të drejtë si associative vargjeve PHP dhe ashtu si vetë tryezën tuaj hash ose provoni si ne zbatuar disa javë prapa. Pra, le të shohim se çfarë në të vërtetë ne mund të bëjë me JavaScript. Dhe në veçanti, kjo është një listë e karakteristika se shfletues kanë që të na lejojë të lidh JavaScript në një faqe interneti në mënyrën e mëposhtme. JavaScript është përdorur shpesh si një klienti side gjuhë e shkruar. Kjo nuk është hartuar. Ajo gjithashtu është interpretuar. Por ndryshe nga PHP, i cili ka qenë duke në server, në faqen e serverit, ose brenda thellë të klientët, JavaScript është i ndryshëm në atë të zakonisht shkon në shfletuesin. Pra, çdo kodi JavaScript që të filloni me shkrim për PSet 8, apo projektin tuaj përfundimtar, ose në botën e vërtetë në përgjithësi është duke shkuar për të ruajtur në server, absolutisht në një dot HTML ose dot JS për JavaScript skedar. Por shfletuesi po shkon për ta shkarkuar atë JavaScript Kodi për shembull tuaj të Chrome, ose IE apo Firefox, ose çfarëdo. Dhe kodi është në të vërtetë do të merrni ekzekutuar brenda vetë shfletuesit tuaj. Vetëm për të bërë këtë më të vërtetë, le të shohim këtë në formë konkrete. Ne nuk kemi asnjë ide se çfarë e bën këtë kod pa të vërtetë lexuar nëpërmjet saj. Por më lejoni të shkoj në Facebook.com pa logging in. Më lejoni të shkoj për inspektimin e Elementit dhe të shkojnë në, le të themi, Rrjetit dhe ringarkoni faqe. Dhe ne do të see-- lejoni ndryshim Rifresko këtë Page për të marrë të gjitha kërkesat për të reja. Dhe e parë file I shoh është CSS, CSS. Ja parë JavaScript fotografi, dhe unë kam asnjë ide se çfarë kjo e bën, por këtu është një i kodit JavaScript që drejton Facebook. Kjo nuk është edhe e vërtetë se zbuluar për të zmadhuar. Është ende po aq absurd. Por ju do të shihni edhe më poshtë më poshtë, nuk ka edhe më shumë nga këto fotografi JavaScript. Uh. Kjo është një ping. Le të zbresim pak më tej, më tej, më tej. Ka një. Ka një. Ka një. Pra, edhe pse Facebook, prapa skena, është shkruar në pjesën në PHP dhe versionin e saj Facebook, ka një sasi të madhe të JavaScript. Në të vërtetë, ndonjë prej biseduar ju bëni në Facebook, ndonjë nga të rejat inline Timeline që ndodh në kohë reale, të gjithë që është nxitur nga JavaScript. Vërtet? AUDIENCA: Unë nuk jam i sigurt nëse kjo është e Facebook, por kam menduar se Facebook zhvilluar vet në shtëpi gjuhën e tyre code? DAVID Malan: ata vepruan. Pra, kjo është arsyeja pse unë them një grindje të PHP quajtur Hip Hop se ata në fakt të shtuara të tillë që kur Mark parë zbatuar Facebook, ajo është shkruar në PHP. Dhe kjo lloj i ka mbetur lloj i gjuhës fund para që ata përdorin për shumë e kodimit të tyre, por ajo nuk ka qenë një gjuhë që është e peshore veçanërisht mirë në miliarda e njerëzve. Dhe kështu ata kanë shtuar tyre Përmirësimet prapa skenave. Dhe ata përdorin çdo numër e gjuhëve të tjera për pjesë të ndryshme të infrastruktura e tyre. Pra, po, kjo është një grindje e atë që ne tani e di si PHP. Pra, le të marrin një vështrim në një çift të shembujve se si ne mund të përdorim JavaScript këtu. Në kodin e sotme burim, ne kemi një bandë e dosjeve, i pari i cili, le të quajtur DOM zero. Pra DOM zero duket si në vijim. Më lejoni të shkoj në këtë directory dhe e hapur deri domzero.html, top i cili ka një lloj doc Deklarata, duke thënë se këtu vjen HTML 5. Dhe tani këtu është një tag HTML. Këtu është tag kokë. Dhe këtu është ajo që është e re sot. Ne tani kemi një tag script brenda kokës të faqes. Dhe kjo me sa duket nuk shumë pak, por njoftim që unë e kam përkufizuar a script, a JavaScript. Dhe, si një mënjanë, pasi kjo është një keqkuptim të përbashkët, JavaScript ka absolutisht asgjë të bëjë me Java, gjuhën se disa prej jush mund kanë mësuar në autoblindave. Kjo ishte më shumë një marketing Gjë shumë se çdo gjë, hipur coattails e viteve Java më parë. Por JavaScript, nuk ka të bëjë me Java, vetëm në mënyrë të ngjashme, dhe annoyingly, quajtur çudi. Pra, këtu është se si ju të deklarojë një funksion në JavaScript, thonë fjalë për fjalë funksion, atëherë emri i funksionit, atëherë çdo Argumentet që mund të marrë, ashtu si në PHP. Rezulton se në JavaScript, një nga më të Funksionet bezdisshëm që ekzistojnë është Alert. Kjo është një dritare e vogël që do të hapet dhe të paralajmërojë ju në disa pjesë të informacionit. Kjo është frowned zakonisht pas. Por ne do të përdorin atë si tonë ushtrim të parë këtu. Vini re disa karakteristika të JavaScript. Kuotat e vetme dhe citate të dyfishtë në të vërtetë nuk ka rëndësi më. Kuotat e vetme dhe të dyfishtë Kuotat mund të jetë interchanged, ndërsa në C, ju duhet të përdorni Kuotat e dyfishtë për vargjet, dhe ju keni dy të vetme kuotat për gërma. Në botën e JavaScript, shumë njerëz, shumica e njerëzve përdorni thonjëza të vetme rreth strings vetëm për shkak se ajo është një gjë e stilistik. Por ajo që është operatori plus këtu, të cilat ne nuk e kemi parë më parë? AUDIENCA: varg. DAVID Malan: varg. Pra, C nuk ka as këtë. PHP ka dot operatori, i cili e bën këtë. JavaScript është e operatorit plus, e cila për çudi është vetëm si Java. Tani çfarë po ndodh këtu? Kështu që këtu është ku një bazë të kuptuarit e asaj foto ne hodhi një çift ditë më parë vjen në lojë. Mos harroni, kur kemi pasur një të thjeshtë version i një HTML page-- ajo vetëm tha, hello world. Dhe pastaj ne tërhoqi një pemë në të djathtë, e cila kishte një bandë e rectangles dhe të linjave lidhjen e tyre si një pemë familjare. Pra, kjo është ashtu-quajtur DOM ose Model Document Object. Dhe kjo rezulton se ju mund të hyni rectangles në këtë pemë me sintaksë si në vijim. Ju fjalë për fjalë thoni dokument, i cili është një variabël të veçantë globale në JavaScript program që ka një funksion lidhur me atë që ju mund të hyni të ngjashme me një struct, por ju thjesht thonë dot dhe pastaj emrin e funksionit të, merrni element me ID. Elementi unë dua të merrni është duket citoj emrin siç janë quajtur. Dhe atëherë unë dua të të marrë vlerën e saj. Tani ne jemi duke marrë përpara veten. Unë nuk jam edhe i sigurt se çfarë e gjithë kjo është rreth. Përpara të shpejtë Le të HTML për faqja, e cila është super e thjeshtë. Vini re se unë e kam përkufizuar një formë këtu poshtë. Njoftim i kam dhënë atë një të veçantë ID, edhe pse ne nuk e kemi përdorur ky atribut para. Por kjo ekziston në HTML. Ju mund të identifikojë në mënyrë unike një copë i HTML me një identifikues si kjo. Njoftim tani this-- del HTML mbështet, per atë listë lavanderi një moment më parë, një i tërë bandë e handlers ngjarje. Dhe kjo mbajtës ngjarje thotë të paraqesë. Në dorëzimin e përdoruesit të kësaj formë, telefononi kodin e mëposhtëm. Dhe kodi që do që do të quhet ose të ekzekutohet është pikërisht kjo, greke Funksioni i ndjekur nga FALSE kthimit. Çdo gjë tjetër duhet të jetë goxha i njohur. Këtu është një input i tekstit tipit, të cilit ID, në këtë rast, do të jetë emri. Ne nuk kemi një atribut aktuale e emrit kjo time-- dhe një buton të paraqesë. Pra faqja rezulton duket si kjo. Dhe sjellja rezulton, ju do të shihni, duket si kjo. Faqja Ajo pret lokale thotë, përshëndetje David, vështirë se një aesthetically i kënaqshëm mënyrë për të përshëndetur një përdorues. Por çfarë është në të vërtetë ndodh? E pra, e konsiderojnë se çfarë është kjo. Kjo është një fushë teksti. Dhe sipas HTML këtu, unë kam dhënë atë një identifikues unik quajtur quote emrin mbyll thonjëzat. Ndërkohë, unë e kam thënë kur përdoruesi paraqet këtë formular duke goditur Enter ose duke klikuar Paraqes button, telefononi funksion të quajtur fala dhe pastaj të kthehen False. Le të konsiderojmë ato në të kundërt. Njoftim kur unë klikoni Submit, URL e kësaj faqeje nuk ndryshon. Icon e shfletuesit nuk fillojnë tjerrje. Unë nuk shkoj kudo, dhe kjo është fjalë për fjalë, sepse kam thënë kthehen False. Kthimi qarqeve False shkurtra ose ndalesa sjellja e parazgjedhur e një forme. Kështu që atëherë na lë me kjo pyetje e fundit. Çfarë do të bëni të fala? E pra, me sa duket fala e quan një funksion të quajtur Alert, kalon në një Argumenti gjatë që është rezultat i concatenating bashku a bandë e nënvargjet, përshëndetje hapësirë ​​presje, atëherë çdo gjë që kjo të kthehet. Pra, dokumenti është si një globale ndryshueshme për këtë rrënjën e kësaj peme, duke e quajtur një funksion të veçantë, përndryshe i njohur tani si një metodë. Një funksion që është brenda një variabël është quajtur një metodë në vend të një funksion. Pra merrni element me ID. Çfarë element bëni ju doni të merrni me ID i saj? Citoj emrin siç janë quajtur dhe pastaj në mënyrë të veçantë vlerësojmë. Pra, me fjalë të tjera, se kodi i thjesht gjen fushën e tekstit ID cilit është emri dhe pastaj të merr vlerën e saj. Pra, nëse unë do ta ndryshojë këtë dhe thonë se Davin në vend të Davidit, dhe kliko Submit, tani ne kanë një përshëndetje për Davin. Të gjithë të drejtë, kështu që të gjithë mirë dhe të mirë. Por le të shohim nëse ne mund të bëjë kjo pak të pastër që vetëm shkruar kodin si kjo është e në përgjithësi do të jetë frowned. Kjo do të duket e frikshme. Por ajo që është parë Dallimi që ju të vini re këtu në këtë version përveç emrin ndryshuar për DOM një? Çfarë strukturore duket ndryshe në lidhje me këtë kundrejt tjetrit? Vërtet? AUDIENCA: A është forma më krye të shkrimit tani? DAVID Malan: Yeah, forma është në krye i shkrimit për disa arsye të çuditshme. Pra, kjo është gjëja e parë që hedhje jashtë në mua, too. Dhe fatmirësisht së paku, kjo pjesë është identike. Pra, e vetmja gjë që duket të jetë i ndryshëm është kjo. Kështu që këtu është ajo që është i zoti rreth JavaScript 2. Dhe kjo e bën të vështirë për të kuptuar në shikim të parë, sidomos për projektet përfundimtare nëse ju jeni duke kërkuar në kodin mostër online, por ai vlon poshtë për disa Karakteristika themelore sintaksore. Këtu përsëri është se Dokumenti globale variabel. Këtu përsëri është se metoda ose funksioni që thotë se të merrni element me ID. Këtë herë unë dua të merrni ID quajtur demo. Ku është ajo? Kjo është me sa duket e drejtë Këtu, forma vetë. Dhe tani vini re se në qoftë se unë me sa duket marrë përsëri atë nyjë nga pema që përfaqëson formën në vetvete, nuk është një fushë teksti, Ajo rezulton se formë, që nyje ose drejtkëndësh nga pema, ka atë që ne do të thërrasë një pronë, shumë, shumë, shumë të ngjashme në shpirt në një strukturë në C. Kjo është vetëm një anëtar të dhënave brenda këtij drejtkëndësh. Kështu që unë kam marrë formën këtu, dhe unë jam bashkëngjitur, ose unë jam caktuar, për On saj Submit mbajtës ose më On Paraqes pronën funksioni vijim. Dhe kjo është, deri tani, craziest gjë deri tani sintaksore. Ajo rezulton se në JavaScript dhe në PHP, dhe sinqerisht për këtë çështje në C, edhe pse ne nuk e bëjmë atë, ju mund të shtoni paemër, anonim, apo aka lambda funksione që nuk kanë një emër por mund të quhet ende. Pra, ajo që unë jam duke bërë këtu unë jam caktuar ky Më Submit pronën, e cila është brenda kësaj nyje të pemës sime DOM, një Funksioni, akrep funksioni nëse ju do. Ky funksion nuk ka emrin, por që nuk ka rëndësi, sepse ne do të shohim në një moment se si ta quaj atë. Kur ky funksion quhet, ky kod merr ekzekutuar, atëherë rreme është kthyer ashtu si më parë. Por vini re atë që unë kam bërë. Në këtë pikë, në histori, unë kam një formë. Ajo mori një ID unike të quajtur demo. Këtu poshtë, unë kam një tag script që ekzekuton kodin e mëposhtëm. Ajo i jep atij nyje në pema për të është On Paraqes prona ky funksion këtu. Dhe vetëm nga natyra se si punojnë shfletues, kur unë tani kliko Submit ose hit Enter, se funksioni do të marrë quajtur. Ajo nuk ka nevojë për një emër, sepse kush dreq kujdeset se çfarë është quajtur. E vetmja kohë ajo ndonjëherë do të merrni quajtur është kur unë të paraqesë formularin. Nuk ka nevojë për mua, zhvilluesi i njeriut, që në fakt e quajnë atë kudo tjetër. Tani vetëm si një ngacmues, sikur që nuk ishin mendje bending të mjaftueshme, ne mund edhe të bëjë këtë duken më të fshehtë duke përdorur një bibliotekë super popullore quhet jQuery. Në fakt jQuery dhe JavaScript po ngatërrohet shpesh. Dhe ajo që ne do të bëjmë të mërkurën është fillimi duke përdorur këtë gjuhë dhe këto biblioteka për të ndërtuar gjithnjë asinkrone dhe aplikacionet dinamike si hartë marrë aplikimet, aplikimet që update faqen në të vërtetë kohë, ashtu si Facebook apo Gchat bëni, dhe të kufizojë nuk veten për Goditur Submit nga get ose vetëm posti vetëm. Kështu që unë do t'ju shoh të mërkurën. [MUSIC Playing]