[Mūzikas atskaņošanai] DAVID Malan: Tas ir CS 50, un šis ir sākums nedēļas deviņi. Un tas, ko mēs domājam, ka mēs gribētu darīt šodien nav tikai slēgt nodaļu par pagājušajā nedēļā materiāls, kur mēs vērsta uz servera side web programmēšana ar PHP un SQL, daži datu bāzē sīkumi. Mēs runājam par mazliet drošība šodien un pēc tam Pāreja uz klienta puses programmēšanas valoda pazīstams kā JavaScript. Bet vispirms, daži izpirkšana. Jūs varat atgādināt, ka Trešdiena, es noteikti rakstīt tīmekļa vietni, kas uzņēma lietotāja ievadi ar HTML formā, pēc tam uzglabā ka lietotāja ievadierīces nosaukumi, tālrunis numurus, un izmērs pārvadātājiem datu bāzē. Un tad man bija mazliet komandu line skripts uzrakstīts PHP kas bija paredzēts atkārtot pāri rindām datu bāzē un izsūtīt īsziņas. Neskatoties uz vairākām, vairākiem mēģinājumiem, mēs nesaņēma šo darbu līdz galam. Tāpēc es pavadīju visu šonedēļ strādā par šo kodu, lai mūs iepriekšējo punktu kur mēs left off, kur visi Man beigās trešdien bija šī īsziņa no Margo kā es cīnījos, seko īsziņu no cita klasesbiedrene, Jūs esat ieguvuši šo Dāvidu. Seko šo vienu, lieliski iepriecinoši. Tur par notiekošo, ir ļoti iepriecinoši. Es gandrīz got to līdz then-- un tas ir piezīme mēs beidzās trešdien. Un tad tiešām varbūt mans favorīts, Brīdi vēlāk, tas nāca. Damn tiešraides. Tātad šodien, mēs varam noteikt to ar ātri apskatīt to, ko es esmu darījusi kopš. Lai visi šo kodu ir pieejama tiešsaistē no pagājušās nedēļas, nedēļas astoņi, pirmkodu. Un jūs redzēsiet, ka es gāju cauri, un es tiešām sakopta lietas mazliet. Es iepazīstināja pāris citu iezīmes SQL datu bāzi. Piemēram, nevis tikai veikt pārvadātāju VAR palijas kā es domāju, ka es darīju lidot pagājušajā nedēļā. Es tā vietā definēja kā ko sauc enum. Un daži no jums varētu būt redzējis šo kā mēs izpētīt C. ​​Enum ir faktiski C iezīme, kur jūs varat uzskaitīt visu ķekars konstantes un piešķirt tos automātiskās vērtības, piemēram, viens, divi, trīs, četri bez cieto koda numurus. Tāpēc SQL atbalsta pats, ar kuru tad, ja Jums ir datu bāzes lauks, kas jums tikai vēlaties veikt par vienu no bezgalīgi vērtības, jūs varat burtiski norādīt to kā es esmu darījis tur četriem populāri ASV Mobilais pārvadātājiem. Tāpēc es to izdarīju. Un es veica vairākas izmaiņas, kā labi, no kuriem svarīgākā bija, lai saņemtu e-pasta darbu, jo atsaukšanu, ka šī programma balstījās uz kuras parasti sauc par e-pastu SMS vārteju, kas ir tikai iedomātā veids, kā pateikt, ka Verizon, un AT & T, un citi ļaudis atbalstīt serveri, saskaņā ar kuru, ja tā saņem e-pastu, tas pārveido to SMS un raida tekstu ziņa kāda tālruni. Tātad, ja es to izdarīja pareizi, šeit ir jauna un uzlabota forma kas gatavojas runāt ar jauni un uzlaboti kods, kas Jūs varat spēlēt ar online. Un tas, cerams, padara manu tālrunis pīkstiens tikai brīdi. Tātad, pirmkārt, es esmu gatavojas rakstīt manā vārdā. Otrkārt, es neesmu gatavojas lai to paveiktu šoreiz. Es esmu gatavojas darīt Pārbaudīt elementu. Un tas ir tikai maz lieta tāpēc man nav izveidot stundas pēc ražošanas strādā kā es pēdējo reizi. Tagad ir mans telefona numurs. Es izvēlētos Verizon. Un šeit, pieņemsim ieslēgtu šo mikrofonu šeit, un to mērķis šo pie mana tālruņa šeit. Es esmu gatavojas klikšķi reģistru, kas būtu cerams ielieciet to datu bāzē. Tagad es iešu uz komandrindas programma, kas atgādināt sauca dot slash tekstu, un pāri pirkstiem. Šeit mēs iet. [PHONE DINGS] [Aplausi] DAVID Malan: Tātad vairāk jautrības nekā this-- tas ir jautri, protams, ja man tajā. Bet tas ir vairāk jautri, es domāju, ja mēs izveidots viens no šiem filmu momentiem kur, piemēram, kaut ko patiešām kas slikts ir noticis pasaulē, un tāpat kā visi VDI Tautas mobilo telefonu sāk pīkstēt ar īsziņas brīdinot tos šo faktu. Tāpēc es domāju, ka mēs varētu mēģināt atjaunot pats šeit, kad ne, izmantojot datu bāzi, Es tā vietā iepriekš uzrakstīja programmu, kas izskatās šādi. Tas ir index.php-- un es šo kodu tiešsaistē kā well-- ka acīmredzot tikai padara form.php, izmantojot MVC stila paradigma, kas mums runāt sīkāk problēmu kopumu septiņi. Ka forma ir diezgan vienkāršs. Tā gatavojas iesniegt failu sauc here.php pa pastu. Un tas acīmredzot gatavojas lūgt par nosaukumu, un tālruņa numuru, un pēc tam, izmantojot tā saukto Izvēlieties izvēlni, tas ir gatavojas sniegt jums vismaz četri populāri ASV Mobilais pārvadātājiem, un pēc tam ļauj jums, lai efektīvi veikt apmeklējumu, klikšķinot šeit. Un šeit, tikmēr gatavojas aizņemties daži kodu no pēdējo reizi. Un, ja jūs vienkārši nosmelt to, Jūs redzēsiet, ka tur ir viss ķekars kļūdu labošanas. Bet skaistums beigās ir tas, ka mēs neesam rakstiski datubāzē šodien. Mēs saglabāt to vienkārši un vienkārši izsūtot cerams īsziņu, izmantojot funkciju I rakstīja pēdējo pāris dienu zvanu Teksts, kas ir funkcijas. php, kas atkal ir pieejama tiešsaistē. Tātad, ja jūs vēlaties piedalīties šajā darbā. Mēs nebrauksim, lai uzglabātu neko. Iet uz šo URL šeit reālajā laikā. Neiesniedz to tikai vēl, bet pieņemsim redzēt, ja mēs varam būt viens no šiem filmas brīži, kad ikviena izmērs sāk pīkstēt, cerams tikai reizi šajā gadā atšķirībā no 2011. gadā ja tas gāja briesmīgi greizi. Un, kad jūs iet uz šo adresi, Jums vajadzētu redzēt super vienkāršu formu ka, ja jums ir vārds, mobilo telefonu numurs, un Mobilais pārvadātājs, kas atbilst sarakstu tur, dodieties priekšu un aizpildīt formu. Bet nav hit iesniegt tikai pagaidām. Forma ir gatavojas izskatās šādi. Iet uz priekšu un ierakstiet savu vārdu, tālruņa numuru. OOP, kāds notiek pirms līknes. Tas ir OK. Labi, visi ir aizpilda veidlapu. Tam vajadzētu strādāt tālrunis, arī, ja vēlaties. Labi, jūsu zīmēm, saņemt noteiktas, iet. Rezultāts šeit. Kas? Nē. Es zvēru pie Dieva, es testē Tas vairākas reizes šodien. Jums to? [Interposing Voices] DAVID Malan: Labi, lietotāja kļūda varbūt. Tas ir divi. Tā strādāja divos no dažiem simtiem, trīs, četri. Labi, tas ir labi. Četri no pieciem uz pareizību, kā par. Tātad, kas tikko notika? Tātad, iespējams, neredzot jūsu ekrāni, kāpēc tas varētu būt errored? Tas ir iespējams, ka mēs bijām tikko cenšoties izdarīt pārāk daudz savienojumus Harvard pasta serverī visus pēc tam, kad no vienas IP adreses. Es esmu tikai guessing, jo man nav ir luksusa testēšanas šo kodu ar dažiem 300 cilvēki iepriekš bet tagad saprotu, ka ka vismaz šādi gotten darbu veic šo laiku. Viss ir labi, tad kāpēc tas viss vairāk piederīgs, kas notiek? Nu, pirmkārt, ātri pāris paziņojumiem. Tik viens, ja vēlaties pievienoties Chang, un Nika, un citi pusdienās šo piektdien, do RSVP parastajā URL tur. Ja tu domā, lai koncentrētos vai darot sekundārā CS, vai jūs esat otrā kursa students, vai pirmkursnieks, vai pat junioru vai vecākais šajā brīdī un vēl var izspiest kursos, saprotam, ka inženierzinātņu skolā ir vākšana par brīvu Ben un Jerry s saldējums un konsultācijas šo trešdien neilgi pēc klases 4:00 PM CS ēkā pie Maxwell Dworkin. Ja tas ir pārāk ātri uz ekrāna, dodieties lai cs50.harvard.edu par saite uz Facebook notikumu kur jūs varat redzēt vairāk informāciju. Tajā pašā laikā, es domāju, ka es varētu labot viena cita lieta, ko es goofed trešdien. Izrādās, ka Marka ID Facebook nebija trīs. Tas bija četri. Izrādās, viņš bija vairāk tests konti, nekā es atceros. Bet ko tas jutos kā iespēju kas jādara, ir pull up URL kā šis. Tātad izrādās, ka Facebook ir API, Application Programming Interface, kas ir mehānisms, ar kuru jums var pieprasīt datus programmatiski pie Facebook un saņemt atpakaļ mašīna lasāma informācija, nevis interneta lapas bet tikai izejvielas tekstu, kaut sauc JavaScript Object nošu. Un patiesībā, ja es apmeklēju šo URL, un tuvinātu, pēc noklusējuma, tas ir Marka publiski pieejama informācija. Un interesanti detail šeit ir tikai, ka viņa ID patiešām, numurs četri, kas es sapratu, tiklīdz es to izdarīja. Jūs varat izdarīt pats, ja jūs zināt Jūsu Facebook lietotājvārds ja jums tāds ir. Vienkārši ierakstiet to top tur. Un neviens no tā ir privāta. Es esmu tikai darot pat ar inkognito režīmā. Tāpēc es neesmu pat ienācis. Un jūs redzēt, ka es acīmredzot bija lietotāja numurs 6454 Facebook, kas nav pārāk slikti šajās dienās. Tātad jebkurā gadījumā, jūs redzēsiet arī papildu informācija tur. Un noderīga aspekts no tā ir, ka jums varētu uzrakstīt savu programmatūru, kas kaut kā apvieno datus, piemēram, tas uz savu pieteikumu. Jūs varat pilnvarot lietotājiem ieiet savā mājas lapā, nav, izmantojot savu pielāgoto lietotājvārdu un parole bet varbūt to Facebook login un iegūt informāciju pat par saviem draugiem, ja viņi apstiprina, piemēram, vai līdzīgi. Tātad, ņemiet vērā, ka CS50, too, ir dažas no tās pašas API, viens Kursa katalogu datiem, daži no Hugs izvēlnes dining zāles, visi ēkas un vietas Campus mums ir API, kā arī ka jūs varat vaicājumu līdzīgi un saņemt atpakaļ tekstuālā informācija, ka jūs varat integrēt uz PHP vai JavaScript, vai pat, lai gan retāk, C balstīta galīgo projektu. Patiešām priekšu galīgais Projekts ir daži stūrakmeņi. Jūs saņēmu e-pastu no mums citu dienu. Saprast, ka priekšlikumu ir saistīts šo nāk pirmdiena. Tas nav obligāti saistošs, bet jūs ir nepieciešams, lai saņemtu jūsu mācību stipendiātiem apstiprinājums pirms jebkuras pēc tam izmaiņas. Un tad uz priekšu, ir vairākiem citiem atskaites punktiem. Tātad, lai ķircināt jums, too, ar dažām iespējām, mums ir ķekars šie nokrāsu spuldzes. Un daži no jums, puiši tagad ir dažas no tiem savā kopmītnes istabā, kā arī. Un tie arī ir API. Tik atceros šos binārā spuldzes nedēļas atpakaļ, ka Dan Bradley un Ansel Duff radīta mums. Viņi izmantoja programmatūras interfeisu šī spuldze, kas šobrīd iesprausts elektrības un pēc tam, izmantojot bezvadu ir savienots ar maz lieta sauc par tiltu uz leju šeit, kā mazs maršrutētāju patentētu ar šo konkrēto ierīci. Bet izrādās, ja es zinu, kā sūtīt HTTP ziņojumus, kā mēs visi tagad darīt, Es varu nosūtīt ziņu, piemēram, tas, lai šī spuldze, lai to ieslēgtu vai izslēgtu vai arī jebkuru skaits citas darbības par to. Ievērojiet, ka tas nav get, tas nav post. Ir vēl viena sauc izvirzīti. Tur tiešām daži citi šādi vārdi. Bet paziņojums tur ir ceļš tur, slash API, slash jaunu attīstītājs, slash gaismu, slash vienu, slīpsvītra stāvokli. Tas ir acīmredzot tikai ceļš, ka sabiedrība, Philips, nolēma jums ir hit ar HTTP pieprasījumu ja jūs vēlaties, lai mainītu valsts spuldzes, izmantojot HTTP 1.1. Tad ievērosiet tukšu līniju. Un tad visbeidzot, kāda izskatās veida masīva dažu šķirot, tas atkal tiks saukts JavaScript Object Apzīmējumi, vai Jason. Un tas, ko jūs redzat šeit ir tas, ka ir trīs galvenās vērtības pārus. Viens no galvenajiem ir aicināta. Un tās vērtība acīmredzot būs taisnība. Spilgtums ir 128, kas ir sava veida int. Un tad pārejas laiks nulle, kas ir acīmredzot cik ilgi tas notiek, lai veikt, lai ieslēgtu šo lietu tālāk. Tātad tagad tas spuldze ir izslēgta. Bet ja es daru tieši this-- let man iet mazliet apkrāptu lapas ka Dan izveidota advance-- un es eju iet uz priekšu un kopēt šādu komandu. Curl, kā daži no jums varētu spriest par CS50 Apspriest ir noderīgas, piemēram, Telnet šāda ka jūs varat simulēt HTTP pieprasījumus, īpaši liek. Es varu nosūtīt šos datus, tieši tas, ko mēs tikko redzēja pirms brīža īpaši uz šo URL nekā šeit. Un tad Curl gatavojas rīkoties visas nepieciešamās galvenes un analizējot tur ir. Tātad viss, kas man ir jādara, ir kopēt to vērā termināla logu un pēc tam hit Enter. Un spuldze iet tālāk. Un tas viss iet cauri mans dators vadiem kaut kā uz leju, lai tiltu, kas tad runā ar šo spuldze. Es varu darīt kaut ko citu. Es varu darīt šo lietu iet sarkanā piemēram. Es, piemēram, var izdarīt šī lieta iet zaļš. Es varu darīt to iet zils. Un paziņojuma katram no šiem gadījumi, visi, kas es esmu, mainās ir tā sauktā nokrāsu vērtība faktiski tā kādu krāsu. Tāpēc ļaujiet man ielīmēt šo vienu tik labi. Tagad tas ir zilā krāsā. Un jūs varat darīt pat mīļotājs lietas where-- iesim uz zaļu. Un es varētu darīt no Protams, ar savu kodu. Bet pat API pati atbalsta bailīgs operācijas piemēram, tas, kas tagad būs apnikt mums nākamajiem 30 sekundes. Tā ka ir viena garša, ko jūs varētu darīt ar API, tas viens iesaistot spuldzes. Ņemiet vērā, ka CS50 ir pāris pāru Google Glass Ja vēlaties patīk risināt kaut ko kopā šīs līnijas, Arduino UNOS, kas ir niecīga maz datori, būtībā, par maz plates ka jūs varat savienot vadi un citas lietas lai un faktiski kontrole Jūsu reālās pasaules vidē. Un tad tur ir pāris par jaunas rotaļlietas, kas mums ir. Tas viens burtiski tikko ieradies Kādu dienu pa pastu, Myo apsēju. Un es domāju, ka tas ir veids, kā saņemt jūs satraukti par projektiem lai jūs varētu izmantot ar šī aparatūra būtu būt spēlēt šo īso klipu ka viņi izmanto, lai ķircināt folks ka mēs tagad dzīvojam nākotnē. [Mūzikas atskaņošanai] DAVID Malan: Tātad tikai dažas nedēļas, jums Arī var būt, ka forši pie CS50 izstādē. Vēl viena ierīce, kas mums ir ķekars, kas mēs esam laimīgs aizdevuma, kas paredzēti projektiem sauc kustības kontrolieris. Tas ir maz USB ierīce veidojat savienojumu ar datoru, ļauj jums mijiedarboties ar jūsu klēpjdators, Mac vai PC, it kā jums bija, piemēram, Xbox Kinect un faktiski veikt fiziskās kustības daudz tāpat kā mēs redzam šajā nākotnes redzējums. [Mūzikas atskaņošanai] DAVID Malan: Tātad, pat tad, ja jums ir nav ideju, kā kaut kas tamlīdzīgs iespējams, varētu tikt izgudrots vai darba uz aparatūras līmenī, nav svarīgi. Pat pēc tam, kad tikai dažus mēnešus pēc CS50, un izpratne par plānošanas vispārīgāk, un web programmēšana vairāk nesen, un pēc tam arī API, un HTTP, jums ir piekļuve caur programmatūras API ja jums gribam aizņemties kādu no šiem ierīces faktiski runāt ar to un nav jāuztraucas par pamatā īstenošana informācija, kas ir pilnīgi saskaņā ar šo jēdzienu layering abstrakcija, ka mēs esam redzējis visā semestrī. Tāpēc arī nedēļas nogalē, redzēju pāris gabalus ziņas. Iet pirmais, dodieties uz semināriem, ja jums vēlētos, lai uzzinātu kaut ko vairāk par jebkuru tēmu skaitu. Skatiet URL tur. Un tas viens tika nosūtīts man ar Chang, kas jūs zināt, kurš drukāšanas mūsu armiju ziloņi. Un tas bija virsraksts šādi. Es esmu pārbijusies par savu jauno TV. Kāpēc es esmu nobijies, lai ieslēgtu šo lieta, un jūs gribētu būt pārāk. Tāpēc tagad mēs esam pie norāda šajā semestrī, Arī, kur pat tad, ja jums ir mazākās izpratnes par to, kā mājas darbiem, un HTTP, un drošības, lietas, kā šis vajadzētu sākt, lai nozvejas acī. Bet arī, jūs saprotat vai šīs lietas ir, vai nav faktiskie draudi. Tāpēc es ņēma dažus fragmentus No šo rakstu šeit. Un stāsts ir šāds. Es tagad īpašnieks New Smart TV, kas sola sniegt straumēšanas multivides saturu, spēles, app, sociālo mediju un interneta pārlūkošanu, oh un TV too. Vienīgā problēma ir tā, ka es esmu tagad baidās to izmantot, saka autors. Jums būtu arī, ja jūs lasīt, izmantojot 46 lapa privātuma politika jūsu TV. Datu šīs summas lieta vāc ir satriecoša. Tas logs kur, kad, kā un cik ilgi jūs izmantojat televizoru. Tā nosaka uzskaites sīkdatnes, kā mēs esam apspriests, un bākas izstrādātas lai noteiktu, kad esat apskatīt īpaši saturu vai īpaši e-pasta ziņojumu Ja jūs vēlaties, lai pārbaudītu e-pastu uz Jūsu TV. Tā ieraksti lietotnes izmantot, mājas lapas jūs apmeklējat, un kā jūs mijiedarboties ar saturu, Mēs darām visu, kas, izmantojot savu smart TV. Tā arī, creepier yet-- tas ir mans addition-- ir iebūvēto kameru ar sejas atzīšanu. Mērķis ir sniegt žests kontrole TV un ļauj jums, lai pieteiktos personalizēta kontu, izmantojot savu seju. Par otrādi, attēli tiek saglabāti TV nevis augšupielādēta uz uzņēmuma servera. Par negatīvie, internets savienojums padara visu TV neaizsargāti pret hakeriem, kas viņi ir pierādījuši spēju veikt pilnīgu kontroli pār mašīnu. Vairāk nepatīkamas, it kā tas nebija pietiekami gudrs, ir mikrofons. TV lepojas ar balsi atpazīšanas funkcija kas ļauj skatītājiem kontrolēt ekrāns ar balss komandām. Bet pakalpojumu nāk ar diezgan draudošs brīdinājums. Lūdzu, ņemiet vērā, ka, ja Jūsu runā vārdi ietver personiskās vai citas jutīgas Informācija, ka informācijas būs starp datiem notverti un tos nodod trešai personai. Sanāca, ka? Nesaku, personiskās vai slepenu sīkumi pie Jūsu TV. Tātad tas faktiski ir reālā. Un tas ir grūti nav, lai redzētu, vai jums iet uz Best Buy vai tamlīdzīgi televizoriem šajās dienās. Viņi visi gudri kaut kādā veidā. Un viņi kļūst gudrāku un creepier. Un viņi vienkārši apkopojot datus tādā veidā, ka mēs esam runājuši par un pēc tam augšupielādējot to, izmantojot HTTP vai kādu citu protokols kādu serveri. Tātad tas bija jautru rakstu šajā tiešsaistes vietnē šeit, kas runāja par īpaši bug vai sajaukt kodu ka mēs faktiski var sasiet uz pagājušās nedēļas diskusijā. Tātad tas virsraksts bija izriet, stāsts iet šeit, Josh Breckman strādāja Uzņēmums, kas izkrauti līgumu izstrādāt satura pārvaldību sistēmu, vai CMS kā viņi sauc, par diezgan lielu valdības mājas lapā. Liela daļa projekta iesaistīto attīstīt satura vadības sistēma lai darbinieki būtu spēj veidot un uzturēt arvien mainās saturu viņu vietā. Viss gāja diezgan labi dažas dienas pēc tam, kad iet dzīvot. Bet uz sešām dienā, viss negāja tik labi. Visi saturam mājas lapa bija pilnīgi izzudis. Un visas lapas noveda pie noklusējuma, ievadiet satura mājas lapā. Whoops. Josh tika aicināti, lai izmeklēt un pamanīju ka viens īpaši traucējošs ārējā IP adrese bija aizgājuši un dzēsts visu saturs uz sistēmu. IP adrese nepiederēja uz kādu ārzemju hakeru smilga iznīcināt noderīgi valdības informācijas. Tā nolēma googlebot.com, Google pašu web indeksēšanu zirneklis. Whoops. Pēc mazliet pētniecības un kodēšanas apkārt, lai atrastu noncorrupt backup, Josh atrasts problēmu. Lietotājs bija kopēt un ielīmēts kādu saturu no vienas lapas uz citu, ieskaitot Edit Hipersaite rediģēt saturu lapā. Parasti tas nebūtu jautājums, jo ārēja lietotājs nepieciešams ievadīt vārdu un paroli, bet CMS autentifikācijas sistēma, pieteikšanās sistēmu, neņēma vērā izsmalcināts Datorurķēšana paņēmieni Google Spider. Whoops. Kā izrādās, Google Zirnekļa neizmanto cepumi, kas nozīmē, ka tas ir iespējams viegli apiet čeks ir pieteicies cookie kopumu nepatiess. Tā arī nav pievērst uzmanību JavaScript, kas parasti ātri un novirzīt lietotājus kuri nav pieteicies. Tomēr tas seko ik hipersaiti uz katru lapu tā konstatē, tostarp ar Dzēst lapu nosaukumā. Whoops. Tātad, ko tas nozīmē vairāk tehniskie bet diezgan pieejamas termini? Tas tikai nozīmē, ka visā savā mājas lapā, viņi bija URL nav atšķirībā šo vienu, ka jūs varētu redzēt problēma noteikti septiņi. Atgādināt problēma noteikti septiņi vai zināt, problēma noteikti septiņi ka jūs apstrīdēt, cita starpā, pārdot krājumus vārdā lietotājiem. Bet īstenojot šo funkciju veidā no get caur saitēm jūsu lietotāja interfeiss, iespējams nevis gudrākais ideja jo, ja jūsu vietnē ir kaut pieejams vai nu ar cilvēka kurš noklikšķinot apkārt, vai pirkt bot piemēram Google vai Spider kā viņi sauc, ka ir tikai indeksēšanu internetā mēģina indeksēt web kā meklētājprogrammu, viņi varētu ļoti viegli hit via saņemt šāda veida URL. Un tas ir funkcionāli ekvivalents, šajā gadījumā, pārdodot visu Google akcijas. Tagad godīgi sakot, tas ir pilnīgi muļķīgs, ka CMS Lietota JavaScript un sīkdatnes īstenot savu pieteikšanās sistēmu un nedara ka servera pusē, kā jūs guys darīt un būs spēkā PSET 7-- tur login.php file-- vienmēr, vienmēr, Vienmēr nodrošinājums ir darīts uz servera pusē, nevis uz klienta pusē, jo, kā tas raksts liecina, un tu varētu sevi skatīt kādā brīdī, tas ir niecīgs, lai lietotājs, labi vai slikti, lai tikai izslēgtu JavaScript nemaz nerunājot sīkdatnes. Tātad tas ir jūsu ikdienas WTF. Tur ir vēl viens, kas ir tikai sava veida biedējošu, tāpēc es ņemšu pieminēt to, ja tikai kā dzīves mācība. Ikreiz, kad jūs izmantojat lietojumprogrammu sauc tāpat Snapchat vai tamlīdzīgi ka saka šīs fotogrāfijas tikai ilgs piecas sekundes, desmit sekundes, vai plauktiņš. Viņi īslaicīgi Tas ir absolūti nav tas gadījums. Tāpat kā nav iespējams, digitāli, īstenot sava veida video, vai attēlu, vai arī tekstuāls daloties šāda ka saņēmējs uz otru galu nevar kaut kā saglabātu datus. Visvairāk naivs veidā, kāds varētu veikt savu tālruni. Un tie ir 10 sekunžu logu skatoties kādu acumirklī tikai veikt kādu citu telefonu un fotografēt to, protams. Tātad jūs varat saglabāt kaut digitāli, ka veidā. Daži no jums zināt, kā veikt ekrānšāviņi savā tālrunī. Faktiski, ja jūs nezināt to, saprotu, ka vismaz Snapchat, un es domāju, ka citi pieteikumi šajās dienās, vismaz pateiks, ja saņēmējam ir faktiski pieņēmusi screenshot jūsu attēlu. Bet vēl sliktāk, tas bija snappening, kā kāds izdomāts to nesen, kur daži 100,000 snaps tika atbrīvots , ko sauc torrent fails par dažādām mājas lapām galu galā. Un tie ietvēra visu ķekars Privāto ziņas un amatu. Izrādās, lielākā daļa no tiem labdabīgi, tāpēc nav tas, ko jūs varētu sagaidīt. Bet tāpēc, ka cilvēki bija izmanto trešās puses tīmekļa vietni, piesakoties ar savu Snapchat lietotājvārdu un paroli un pēc tam ietaupot visu to snaps par šo trešo personu mājas lapā. Un tas bija tas, ka trešā persona Mājas lapu, kas bija hacked, kas tikai domāts kāds izpētījuši, kā iegūt visu 100,000 plus šo attēlu uz savu cieto disku turpmākai koplietošanu. Atklāti sakot, arī šeit, tas ir sava veida no muļķīgs ka Snapchat tiek realizēta tādā veidā, ka trešā persona var kārtot no krustošanās dati, un ka tas nav saistīts ar jūsu pašu lietojumprogrammu, kas darbojas uz tālruni. Bet šeit arī saprotam, ka tie lietas, nevajadzētu nozvejas jums pārsteigums, vai vismaz tur vajadzētu būt dzīves mācība šeit. Ja vēlaties tehniskā detaļas, iet uz šo URL tur tas ir šodienas slaidiem. Viss ir labi, kādi jautājumi par šodienas dzīves nodarbības CS? Turn ka off. Kaut ko vispār? Kaut ko vispār? Man daudz cilvēku pārbaudi viņu Snapchat vai kaut tagad. Viss ir labi, tāpēc SQL, Strukturēta vaicājumu valoda. Pieņemsim wrap to. Un arī, lai gan mēs esam tikai kasīšanās virsma šī valoda, mēs jums pietiekami valodas formā PSET 7 lai jūs varētu risināt dažus diezgan bieži funkcionalitāti. Bet saprotu, ka ir pāris lietas, kas mums neprasa no jums, bet viņi būs svarīgi nākt gala projektus un, protams, nāk padarot aktuālā mājas lapas ar faktiskajiem lietotājiem tas ir dizaina lēmums. Izrādās, ka MySQL datu bāzi, jūs ir ķekarus izvēli, piemēram, datu tipi Jūsu kolonnām un citas lietas, bet jums ir arī izvēle no tā saukto uzglabāšanai dzinējs visiem jūsu datiem, veida failu sistēma, ja jūs esat iepazinušies, visiem jūsu datiem. Kādā formātā tas galu galā glabājas? Un visbiežāk, iespējams, ir bijis MyISAM un InnoDB, tehniskie termini ka mēs rūp tikai tādā mērā, ka viens ir un viens nav šāda funkcija. Pieņemsim, ka jums ir mazliet kopmītnes ledusskapis. Un pieņemsim, ka jūs un jūsu kaimiņiem, kuri dalīties ar šo ledusskapi, ir patiešām patīk teiksim piena. Un tas ir, faktiski, kā stāsts bija teicis man ceļu atpakaļ dienā, kad es paņēmu kursu sauc CS 161 Operētājsistēmas, kas tāpat pēta šo tēmu. Tātad jūs esat ieguvuši šo ledusskapi. Jūs esat no piena. Un tu nāc mājās, jūsu kaimiņiem s joprojām klasē vai kāds, un jūs izlemjat es esmu gatavojas iet un dabūt pienu. Tātad jūs aizverat ledusskapis, nedzīvais kapitāls kopmītnes istabā, iet pāri ielai uz CVS vai kur, un nokļūt rindā, lai nopirktu pienu. Tikmēr jūsu kaimiņiem kļūst mājās no klases, nonāk kopmītnes istabā, atver ledusskapi, arī saprot ooph, mēs esam no piena. Lai viņš vai viņa aizver ledusskapis un tad notiek iet uz otru CVS, kas notiek, ir viena kvartāla attālumā no citām CVS laukumā, un izpaužas rindā tur, lai saņemtu kādu pienu. Tagad, protams, dažas minūtes vēlāk, jūs abi saņemt atpakaļ, un sliktākajā visu ir iespējams rezultāti ir noticis. Jums abiem ir piens. Un jums nav īsti piemēram, piens, ka daudz. Tātad viens no tiem ir tikai gatavojas skābu kādā brīdī. Tātad, tagad jums ir pārāk daudz no piena ledusskapja visiem, jo ​​kāpēc? [Dzirdams] DAVID Malan: Jā, jums nav kaut kā komunicēt ar otru ka jums bija iegūt pienu. Tātad vienkāršāko veidi, cilvēku pasaulē, kā jūs varētu izvairīties no tā muļķīgi scenārijs no notiek, piemēram ka jūs tikai galu galā ar vienu. Teksts tos, jā laba. Bet kā gan citādi? Līmlapiņas. DAVID Malan: Post-it piezīmi. Jebkāda veida paziņojums kas stāsta jūsu kaimiņiem nav iedziļināties ledusskapī pienu. Es iešu atjaunotu par savu. Tātad jūs kaut kā vajag lai bloķētu šo resursu. Tātad, mēs varam padarīt this-- mēs varam veida pazudināt stāstu un pārvēršas par CS stāsts ar ko domā par to kā, tāpat kā mainīgo, kas ir uzglabāt dažas vērtības. Un tieši tagad, piena vērtība ir nulle, ko jūs nevēlaties, lai jūsu kaimiņiem pārbaudīt šo mainīgo un tad pieņemt lēmumu viņam sevi pamatojoties uz stāvokli minētā mainīgā ja tu esi procesā mainot stāvokli mainīgajam lielumam. Tātad viena no līnijām SQL, ka mēs dos jums PSET 7 specifikācijā ir šeit, tas viens. Un mums nav tērēt milzīgs daudz laika par to runāt. Bet izrādās, ja jūs cenšaties nopirkt kādu krājumu CS50 finansēs ka jums jau ir daži no jums, akcijas vēlas, lai varētu veikt virkni lietas uzreiz kopā. Jūs vēlaties, lai varētu efektīvi, augstā līmenī, pārbaudīt visas tiesības, ja es gribu iegādāties vairāk akcijas brīvu, Penny Stock mēs runāt par spec, Es gribu, lai pirmo pārbaudi cik daudz akcijas man ir. Un domāju, ka tas ir pieci. Un domāju, ka es gribu pirkt vēl 10, es galu galā vēlas, lai ir 15 akcijas akciju. Tāpēc man ir uzdot divus jautājumus. Kāds ir stāvoklis mainīgā? Kāds ir stāvoklis rindas? Cik akcijas man šobrīd ir? Tad jūs vēlaties, lai iet uz priekšu un atjaunot to. Tā ka ir analogās uz pienu, ka jūs pārbaudīt rindu, un tad jūs vēlaties to atjaunināt jo, ja jūs vēlaties iegādāties 10 akcijas, jūs nevēlaties mainīt rinda līdz 10, jūs vēlaties mainīt to uz 5 plus 10 vai, protams, 15. Šī līnija koda nodrošina, ka šīs divas konceptuālas idejas notiks kopā vai nemaz. Neviens, arī kādu citu lietotāju kurš ir pieteicies tajā pašā tīmekļa vietnē, kaut kādā veidā var pārtraukt pārbaude rindas un atjaunināšanu rindas, izvēlieties un atjauninājumu, ja Jums gribas. Un sintakse nav super skaidrs, bet šī līnija, ilgi tas ir, nodrošina, ka šīs divas operācijas pārbaudiet mainīgo vai pārbaudīt rindu un atjaunināt rindas notikt atomically. Ak šeit mēs aiziet vēlreiz. Īsziņu uz manu tālruni. Tā ļauj padarīt to par nedaudz vairāk betona. Pieņemsim, ka jūs neesat Īstenojot ledusskapi, un jūs ne ar ko īsteno PSET 7 bet faktiski banka, vai ATM, Automated Teller Mašīna, ar kuru jums kaut vēlas, lai varētu pilnvarot lietotājiem pārsūtīt naudu no viena konta uz citu. OK, karājas. Es esmu gatavojas, lai izslēgtu šo tagad, paldies. Tāpēc mēs vēlamies virzīties uz naudu no viena konta numura uz citu kontu numurs, konkrēti 100 $. Tātad šis ir sava veida patvaļīga Piemēram, saskaņā ar kuru jūs, ATM, varētu vēlēties izpildīt divu SQL vaicājumus, atņemt no viena konta, un pievienot pie otra konta. Bet jūs vēlaties, lai nodrošinātu, ka šie divas līnijas abi notikt vai nemaz. Jūs nevēlaties kaut ko kļūst pārtraukta. Jums nav kādu gudrs slikts puisis kaut kā stāvot pie Bank of America ar diviem bankomātiem priekšā par viņu un kaut veida rakstīt komandas, tajā pašā laikā, cerams, mēģinot ieturēt 200 $ vietā $ 100 un tikai ar 100 $ kredītā. Īsāk sakot, jūs vēlaties, lai tas uzvedas tieši tā, kā jūs sagaida. Un kā jūs darāt tas SQL datu bāze jūs wrap to, kas ir sauc darījums. Burtiski SQL, jūs varat zvanīt CS50 s vaicājums funkcija ar citēšanu likt pēdiņas beigās sākumu darījums. Tad jūs varat izpildīt jebkuru numuru Turpmāko SQL vaicājumu, bet neviens no viņiem ņemt Ietekme uz datu bāzē līdz brīdim, kad jūs zvanu vaicājumu quote likt pēdiņas beigās izdarīt, ja vēlreiz, izmantojot PHP. Un šādā veidā, jūs varat nodrošināt, ka pat ja jums ir 1000 lietotāju visu trāpot savu datu bāzi tajā pašā laikā, SQL sola, ka šie divi vaicājumi būs īsteno vienu tieši pēc otra. Tātad jums nav galu galā ar vairāk nekā piens vai nepareiza summa, galu galā, naudas. Lai saglabātu to prātā, ne tik daudz par PSET 7 bet gala projektiem ja jūs patiešām mēģinot pārvietot datus apkārt pāri tabulas kā jūs varētu šeit. Bet varbūt pat vienkāršāka un skaidrs, lai saprastu, ar piemēru ir šeit, tas viens. Un kāds pa e-pastu mums par tas tikai otro dienu kad viņš ieraudzīja kaut ko līdzīgi tiešsaistē. Tātad, lai manas zināšanas, ķegļu sistēmas nav neaizsargāti pret šo uzbrukumu. Un man nav ne jausmas, ja tas pat lietojumi SQL datu bāzi zem motora pārsega. Bet pieņemsim izmantot to labad diskusijas. Lūk ekrāns, kas Harvard folks mēdz redzēt, kad piesakoties ar to Hārvardas ID numuru un pin. Un pieņemsim, ka pin sistēma bija īsteno PHP un ar MySQL datubāzi, koda, ka kāds Pirms varētu būt rakstīti gadi varētu izskatīties šādi. Pirmkārt, pasludināt mainīgais sauc lietotājvārds. Un tikai iegūt, ka no POST superglobālajiem. Tad iegūt citu mainīgo sauc paroli un darīt to pašu. Un tad tikai izpildīt šis ilgi vaicājumu šeit izvēlieties zvaigzne no lietotājiem, ja lietotājvārds ir vienāds ar tāda un tāda un paroli vienāds tāda un tāda. Ievērojiet, ka cirtaini bikšturi Esmu izmantojis šeit vienkārši nozīmē PHP, iet priekšu un aizstāt vērtība šiem diviem mainīgie tiesības tur. Viņi nav absolūti nepieciešams, bet viņi mēdz izvairīties smalks sintakses kļūdas. Tāpēc tas izskatās pilnīgi pareiza pēc pirmā acu uzmetiena. Un tas ir. Jūs varētu īstenot pin sistēma šādā veidā. Bet pieņemsim, ka super gudrs un ļaunprātīga studentu ievadi to kā viņa vai viņas pin. Tāpēc es esmu izņēmusi lodi zīmes šeit izspēles augšu, un es esmu faktiski atklāja to, ko viņš vai viņa varētu būt rakstīt. Un tas ir mazliet dīvaini. Bet to, kas lec ārā pie jums ar iespējamiem satraucoša par lietotāja ievadi, pat ja jums nav ne jausmas, ko SQL injekcijas uzbrukumu nozīmē. Kāpēc tas izskatās mazliet neticams? Kas tas ir? [Dzirdams] DAVID Malan: vai nedaudz aizdomīgs. Faktiski, tas ir atslēgvārds no SQL. Tā, ka nav bode labi. Tas, ka tur ir visi šie vienu pēdiņām there-- patiesībā, viens no vienkāršākajiem veidus, lai izjauktu dažas datubāzes ir ierakstot nosaukumu, piemēram, O'Reilly ka ir apostrofu tajā jo, ja cilvēks, kurš uzrakstīja koda aiz kulisēm nav ņemts vērā, ka varētu būt vienu pēdiņām jo lietotāja ievadi, un viņš vai viņa izmanto vienu pēdiņām savā kodu, sliktas lietas var notikt. Patiesībā, vēl sliktāk, tas jāņem vērā. Ja tas atkal bija kods ka kāds Hārvardas gadiem Pirms rakstīja par pin sistēma, paziņojums, kas ir par to, lai saņemtu aizstāt lietotājvārdu un paroli Ja lietotājs veidiem vēlreiz skroob kā savu lietotājvārdu un pēc tam viens, divi, trīs, četru, piecu, quote vai citātu likt pēdiņas beigās vienu līdztiesīgu citēt vienu. Un paziņojums, kas ir galvenais šeit ir lietotājs nav sāka savu paroli vai to pin ar citātu. Un viņi nav beidzies to ar citātu, jo viņš vai viņa ir, pieņemot, ka tad, ja programmētājs nebija tik straujš, viņi nāksies tiem vienu pēdiņām savā kodu. Tātad, šeit ir kods. Un aizstāšana, ka Tagad varētu notikt tas. Un es esmu uzsvērusi to, ko lietotājs ir ievadījis. Tātad, pirms, pēc. Un paziņojums, kas ir nedaudz satraucoša tagad par labajā pusē, šajā SQL kodu? Tas ir nedaudz sarežģītāka, protams, nekā jautājumiem, mēs esam redzējuši. Bet tas nav iespējams būtu laba lieta, ja jūs esat sakot, izvēlieties zvaigzne, kas ir izvēlieties viss no lietotāja galda kur lietotājvārds vienāds skroob un parole ir vienāds ar vienu, diviem, trim, četriem, pieci vai viens vienāds vienu. Kas ir loģiska saistība šī pēdējā teikuma Jādomā? Tas ir tikai vienmēr ir taisnība. Un tāpēc, ka mēs esam sava veida nojauta vai sapratu, ar izmēģinājumu un kļūdu ka programmētājs, kurš rakstīja šo kodu nebija paredzēt cilvēku vai slikts cilvēks ierakstot vienu pēdiņām, kā arī, mēs varam sintaktiski pabeigtu SQL vaicājumu ar kaut ko muļķīgi bet kaut kas ir sintaktiski nepareizs kas vienmēr novērtē taisnība. Tātad, ja šis kods tiek izmantots, lai atbildētu jautājums patiess vai nepatiess, būtu atļauts šis lietotājs nodot, Atbilde vienmēr acīmredzot notiek lai būtu patiesība, jo tas vienmēr notiek izvēlēties kaut ko no datu bāzes jo viens, protams, vienmēr ir vienāds ar vienu. Tātad, kas ir risinājums? Nu PSET 7, mēs faktiski izvairīties no šo visu kopā. Mēs dodam jums vaicājumu funkciju, un mēs iesakām izmantot jautājuma zīmes kā vietturi, līdzīgi garā uz printf s% s, bet to, kas ir galvenais par jautājuma zīmes šeit ir, ja jūs tiešām izlasīt functions.php, kur mūsu vaicājums funkcija tiek īstenota, šie jautājuma zīmes ir aizbēguši, kurā kaut kas potenciāli bīstams piemēram, viena cena ir ieslēgts stājas izbēguši vienu citātu. Tātad, tas ir tas, kas ir īsti notiek, ja jums izmantot CS50 vaicājumu funkciju vai jebkuru numuru Trešo personu brīvu bibliotēkām, ka darīt to pašu. Nav nozīmes šajā gadījumā, zaļā krāsā, ja lietotājs ir ievadījis ar vienu citātu jo vaicājumu funkcija, kas mēs rakstījām ir gatavojas pievienot backslashes pirms jebkura šāda bīstama citātu. Tātad, tas nav, jo Fakts, būs legit. Tas ir tāpat kā rakstīt traks meklē parole, kas ir, protams, nenāks būt skroob faktisko paroli. Tātad takeaway par CS50 ir viens, absolūti vienmēr izmantot kaut ko tāpat CS50 s vaicājumu funkcijas vai pamatā bibliotēka, kas notiek, lai varētu saukt ACVN. Bet nekad, nekad, nekad to kodu kā šis bez izbēgt vai ass kā saka jūsu izejvielas. Un jūs kādā brīdī, iespējams, nākas sastapties ar kādu mājas lapu, kā šis. Patiesībā, tas, šķiet, ir lieta piemēram, lidostās un viesnīcās vietās ja tām ir bezmaksas Wi-Fi Pieeja, kas jums ir, lai pieteiktos, šīs mājas lapas ir vienmēr briesmīgi īstenoti. Un tā veida jautrības mājās izmantot, nav ļaunprātīgos nolūkos vai vairāk no jautrības uz ceļa vingrinājums, ir vienkārši ierakstiet apostrofs, viena citātu, tādā formā par kādu mājas lapu un redzēt, kas notiek. Un, ja servera atteici vai sniedz Jums dažas veida kļūdas ziņojumu, tas var ļoti labi būt, ka kāds nav paredzama to. Un tad jums vajadzētu brīdināt pareiza iestādes un doties ne tālāk. Tātad tagad jūs guys vajadzētu cerams saprastu mazliet vairāk geek humors šeit. [Smiekli] DAVID Malan: Jūs zināt, jūs esat geek. Par tuvāko gadiem, jūs atceraties kurš maz Bobby Galdi ir jo šī karikatūra šeit. Lai saglabātu, ka prātā, kā mēs konteksts pēdējo reizi slēdzis šodien JavaScript. Mēs esam pavadījuši salīdzinoši maz laiks sintaksi PHP tāpēc, ka tas ir faktiski super līdzīgi C. Un labi pietiekami, JavaScript too ir super līdzīgs C sintaksei kā arī mēs redzēsim tikai mirklis, un, kā mēs redzēt šonedēļ īpaši. Ko jūs varat darīt ar šo valodu, lai gan, ir vēl spēcīgāks, jo īpaši ar API. Bet vispirms ātri tūre. Tik viens, JavaScript, tur ir nē galvenā funkcija, kas ir jauki. Tāpat kā ar PHP, jūs varat rakstīt kodu. Apstākļi izskatās šādi. Un Būla izteiksmes varētu izskatās šādi vai kā šis. Slēdži pastāv, un viņi varētu izskatīties šādi. Četri cilpas izskatās šādi. Kaut cilpas izskatās šādi. Vai whiles izskatās šādi. Un tad bloki izskatās tas, kas ir ļoti līdzīgs PHP. Bet paziņo, ka JavaScript jums deklarēt mainīgo nevis ar dolāru paraksta, nevis ar datu tipu, bet burtiski sakot VAR lai mainīgo pirms tā. Tas arī ir brīvi drukāti ar to, ka tas ir veidi, bet jums nav skaidri deklarēt tos. Un tad virkne, lai Piemēram, varētu izskatīties piemēram, tas, ka virkne to sauc s šajā gadījumā. Un tad objekts. Un šie mēs redzēsim vēl pirms ilgi. Un objekts, iespējams, ir viens no visbiežāk novēroja datu struktūras ar JavaScript balstīta programmu, jo tas ļauj jums saistīt patvaļīgi atslēgas vērtību pārus tikko piemēram, PHP asociatīvo masīvu un tāpat kā savu hash tabulas vai mēģināt kā mēs īstenoti pāris nedēļas atpakaļ. Tātad, pieņemsim faktiski redzēt, kas mēs varam darīt ar JavaScript. Un it īpaši, tas ir veļas saraksts iezīmes ka pārlūkiem ir, ka ļauj mums āķis JavaScript uz mājas lapā šādā veidā. JavaScript ir bieži izmanto kā klienta puses skriptu valoda. Tas nav apkopota. Tas arī tiek interpretēts. Bet atšķirībā no PHP, kas ir darboties uz serveri, web serveri, vai dziļi iekšpusē klienti, JavaScript ir atšķirīga, jo: parasti darbojas pārlūkprogrammā. Tāpēc jebkura JavaScript kodu sākat rakstīt par PSET 8, vai jūsu galīgo projektu, vai reālajā pasaulē parasti notiek tiks saglabāti uz servera, absolūti ar dot HTML vai dot JS JavaScript failu. Bet pārlūks notiek lai lejupielādētu, ka JavaScript kodu uz savu gadījumu Chrome, vai IE vai Firefox, vai neatkarīgi. Un kods ir faktiski gatavojas iegūt izpildīts iekšpusē savā pārlūkprogrammā. Tikai, lai padarītu šo reālāka, pieņemsim redzēt šo konkrēto formu. Mums nav ne jausmas, ko tas kods dara bez tiešām iepazīšanās ar to. Bet ļaujiet man iet uz Facebook.com bez piesakoties. Ļaujiet man iet uz Pārbaudīt elementu un doties uz, teiksim, tīkla un pārlādēt lapu. Un mēs see-- ļaujiet man novirzīt pārlādēt Lapa, lai saņemtu visus pieprasījumus jauns. Un pats pirmais fails es redzu ir CSS, CSS. Lūk pirmais JavaScript failu, un man ir ne jausmas, ko tas dara, bet šeit ir daži JavaScript kodu kas vada Facebook. Tas nav pat īsti, ka atklājot, lai tuvinātu. Tas joprojām ir tikpat muļķīgi. Bet jūs redzēsiet pat zemāk, tur ir pat vairāk no šiem JavaScript faili. Whoops. Tas ir ping. Iesim uz leju nedaudz vēl, vēl, vēl. Tur ir viens. Tur ir viens. Tur ir viens. Tātad, pat ja Facebook, aiz ainas, ir rakstīts daļēji PHP un Facebook pašu variantu, tur ir milzīgs daudzums JavaScript. Faktiski, jebkuru no čatā jūs uz Facebook, kāds no inline Timeline atjauninājumiem kas notiek reālajā laikā, tas viss virza JavaScript. Yeah? Mērķauditorija: Es neesmu pārliecināts ja tas ir Facebook, bet es domāju, ka Facebook attīstīta savu in-house kods valoda? DAVID Malan: Viņi izdarīja. Tātad, tas ir iemesls, kāpēc es saku dispersiju PHP sauc par Hip Hop, ka tās faktiski pievienotajām funkcijām, piemēram, ja Mark Pirmo reizi ieviešot Facebook, tas bija rakstīts PHP. Un ka veida palicis veida priekšējā gala valodas ka viņi izmanto daudz to kodēšanu, bet tas nav valoda, kas ir svari īpaši labi miljardiem cilvēku. Un tāpēc tie ir pievienoti savu uzlabojumi aizkulisēs. Un viņi izmanto jebkuru numuru Citu valodu dažādu gabalu to infrastruktūra. Tātad, jā, tas ir dispersija tas, ko mēs tagad pazīstam kā PHP. Tātad, pieņemsim to apskatīt pie pāris piemēri par to, kā mēs varētu izmantot JavaScript šeit. Mūsdienu pirmkodu, mums ir ķekars failus, no kuriem pirmais, pieņemsim sauc DOM nulles. Tātad DOM nulles izskatās šādi. Ļaujiet man iedziļināties šajā direktorijā un atvērt domzero.html, top, kas ir doc tipa deklarācija, sakot, šeit nāk HTML 5. Un tagad šeit ir HTML tagu. Lūk galvu tag. Un šeit ir kas jauns šodien. Mums tagad ir skriptu tag iekšpusē galvas lapā. Un tas acīmredzot nav ļoti maz, bet paziņojums ka es esmu definēti skripts, JavaScript. Un kā malā, jo tas ir kopīgs nepareizs, JavaScript ir absolūti nekas darīt ar Java, valodu ka daži no jums varētu ir iemācījušies APCS. Tas bija vairāk par mārketingu lieta nekā jebkas, izjādes coattails par Java gadus atpakaļ. Bet JavaScript, nekāda sakara ar Java, vienkārši tāpat, un kaitinoši, sajaucami nosaukts. Tātad, šeit ir, kā jūs pasludināt funkciju JavaScript, burtiski saka funkciju, tad nosaukums funkciju, tad jebkurš argumenti tas varētu veikt, tāpat kā PHP. Izrādās, JavaScript, kas ir viens no visvairāk kaitinošas funkcijas, kas pastāv, ir brīdinājums. Tas ir nedaudz logs, kas būs pop up un jūs brīdināt uz kādu informācijas vienību. Tas parasti sarauca pieri. Bet mēs to izmantot, jo mūsu Pirmais vingrinājums šeit. Ievērosiet dažas iezīmes JavaScript. Vienu pēdiņām un pēdiņas faktiski nav nozīmes vairs. Vienu pēdiņām un dubultā citātus var nomainīt, savukārt C, jums ir izmantot pēdiņas uz stīgām, un jums ir divas viena pēdiņām chars. Jo JavaScript pasaulē, daudzi cilvēki, lielākā daļa cilvēku Izmantojiet vienu pēdiņām ap stīgām tikai tāpēc, ka tas ir stilistiski lieta. Bet kas ir plus operators šeit, ko mēs neesam redzējuši? AUDITORIJA: Konkatenācija. DAVID Malan: Konkatenācija. Tātad C nav pat to. PHP ir dot operatoram, kas tas. JavaScript ir plus operatoru, kas maldinoši ir tāpat kā Java. Tagad to, kas notiek šeit? Tātad, šeit ir, ja pamata izpratne par šo attēlu mēs iemeta pāris dienas pirms sāk spēlēt. Atceros, kad mums bija vienkāršs versija HTML page-- tas tikai teica, sveiki pasaule. Un tad mēs vērsa koks pa labi, kas bija ķekars taisnstūru un līniju savienojot tos, piemēram, ģimenes koku. Tā ka ir tā sauktā DOM vai dokumenta objekta modelis. Un izrādās, ka jūs varat piekļūt taisnstūri šajā koks ar sintaksi tāpat kā turpmāk. Tu burtiski saka dokumentu, kas ir īpaša pasaules mainīgais Javascript programma, kas ir funkcija saistīta ar to, ka jūs varat piekļūt līdzīgi struktūrai, bet jūs vienkārši saku dot un tad funkcija vārdu, nokļūt elementu pēc ID. Elements, es vēlos saņemt, ir acīmredzot citēt likt pēdiņas beigās vārdu. Un tad es gribu, lai saņemtu savu vērtību. Tagad mēs esam iegūt priekšā sevi. Es neesmu pat pārliecināts, ko tas viss ir par. Pieņemsim ātri uz priekšu, lai HTML uz lapa, kas ir super vienkārši. Paziņojums, ka es esmu definēts veidot uz leju šeit. Paziņojums Es esmu devis unikālu ID, lai gan mēs esam nav izmantoti šis raksturlielums agrāk. Bet tas pastāv HTML. Jūs varat identificētu kādu rieciens HTML ar identifikatoru, kā šis. Paziņojums tagad this-- izrādās HTML atbalsta, par šo veļas sarakstu pirms brīža, viss ķekars notikumu apstrādes. Un šis notikums apdarinātājs saka apstiprināšanas. Par lietotāja iesniegšanas šis forma, zvaniet šādu kodu. Un kods, kas notiek saukt vai to izpildīt ir tieši tas, grieķu funkcija seko atgriezties viltus. Viss pārējais būtu būt diezgan pazīstams. Te ir ieejas tipa teksta, kura ID, šajā gadījumā būs vārds. Mums nav faktisko nosaukums atribūtu tas LAIKU_ un iesniegt pogu. Tātad rezultātā lapa izskatās šādi. Un rezultātā uzvedība, jūs redzēsiet, izskatās šādi. Lapu tas vietējiem saimniekiem saka, sveiki David, diez estētiski veids, kā sveicināt lietotājam. Bet to, kas patiesībā notiek? Nu, uzskata, kas tas ir. Tas ir teksta lauks. Un saskaņā ar HTML šeit, es esmu devis to unikāls identifikators sauc quote likt pēdiņas beigās vārdu. Tajā pašā laikā, es esmu teicis, kad lietotājs iesniedz šo veidlapu ar hitting Enter vai noklikšķinot Iesniegt pogu, zvaniet funkciju sauc Greet un pēc tam atgriezties False. Apskatīsim tos atpakaļgaitā. Ievērosiet, kad es noklikšķiniet uz Iesniegt, URL Šīs lapas nemainās. Pārlūkprogramma ikona nesākās vērpšanai. Man nav iet visur, un tas ir burtiski, jo es teicu atgriezties False. Atgriezties viltus īssavienojumus vai apstājas noklusējuma uzvedība formā. Tāpēc, ka pēc tam atstāj mūs ar tas viens pēdējais jautājums. Kāda Greet darīt? Nu, acīmredzot Sveiciniet aicina funkciju sauc Brīdinājumu, iet vienā sen arguments, ka tas rezultāts concatenating kopā ķekars apakšvirknes, hello komats telpa, tad kāds tas atgriežas. Tātad dokuments ir kā globāla mainīgais šai saknēm šo koku, aicinot īpašu funkciju, citādi tagad pazīstams kā metodi. Funkcija, kas ir iekšā mainīgais sauc metode, nevis funkcija. Tātad iegūt elementu pēc ID. Kas elements do you vēlaties saņemt tās ID? Citējot likt pēdiņas beigās vārdu un tad īpaši augstu. Tātad citiem vārdiem sakot, šis kods vienkārši atrod teksta lauku, kura ID ir vārds un pēc tam iegūst savu vērtību. Tātad, ja es būtu to mainīt un teikt Davin vietā Dāvidu, un noklikšķiniet uz Iesniegt, tagad mēs ir sveicienu Davin. Viss ir labi, tāpēc viss, naudas sodu un labi. Bet pieņemsim redzēt, ja mēs varam darīt tas nedaudz tīrāku, jo tikai rakstot kodu, piemēram, tas ir parasti būs sarauca pieri. Tas ir gatavojas meklēt scarier. Bet kas ir pirmais atšķirība, ka jūs atzīmēt šeit šajā versijā Bez nosaukums mainās uz DOM vienu? Kas strukturāli izskatās citādi par šo pret otru? Yeah? Mērķauditorija: Vai veidlapa top scenārija tagad? DAVID Malan: Jā, forma ir uz augšu skripts kādu dīvainu iemeslu dēļ. Tā ka ir pirmā lieta ka lec uz mani, too. Un par laimi vismaz šī daļa ir identisks. Tātad vienīgā lieta, kas, šķiet, būt atšķirīgs tas ir. Tātad, šeit ir tas, ko ir veikls par JavaScript 2. Un tas padara to grūti saprotu pēc pirmā acu uzmetiena, īpaši gala projektus, ja jūs meklējat pie parauga kodu tiešsaistē, bet tā vārīties uz leju, lai dažus pamata sintaktiskie funkcijas. Te atkal ir tas, ka globālo mainīgo dokuments. Te atkal ir tas, ka veids vai funkcija ka saka iegūt elementu pēc ID. Šoreiz es gribu saņemt ID sauc demo. Kur tas ir? Tas ir acīmredzami taisnība šeit, forma pati. Un tagad ievēroju, ka acīmredzot, ja es saņemt atpakaļ šo mezglu no koka, kas apzīmē formu pati par sevi, nevis teksta lauks, izrādās, ka formu, kas mezgla vai taisnstūra no koka, ir tas, ko mēs saucam par īpašumu, ļoti, ļoti, ļoti līdzīgi garā uz struktūrai C. Tas ir tikai Dati loceklis iekšā šajā taisnstūrī. Tāpēc es esam ieguvuši formu šeit, un es esmu pievienojot, vai es esmu piešķirot, lai tā apstiprināšanas apdarinātājs vai drīzāk apstiprināšanas īpašumu šāda funkcija. Un tas ir, neapšaubāmi, craziest lieta līdz šim sintaktiski. Izrādās, JavaScript un PHP, un, atklāti sakot, par šo jautājumu C, pat ja mēs nedarām to, jūs varat pievienot nezināms, anonīmi, vai AKA lambda funkcijas, kurām nav vārdu bet to var saukt tomēr. Tātad, ko es daru šeit es esmu piešķirot šo šeit Iesniegt īpašumu, kas ir iekšā šī mezgla mana DOM koku, funkcija, funkcija rādītājs ja Jums gribas. Šī funkcija ir ne nosaukt, bet tas nav nozīmes, jo mēs redzēsim ar brīdi, kā to nosaukt. Kad šī funkcija sauc, šis kods tiek izpildīts, tad nepatiesa tiek atgriezta, tāpat kā pirms tam. Bet pamanīt to, ko es esmu darījusi. Šajā brīdī stāsts, man ir forma. Tas ir ieguvuši unikālu ID sauc demo. Leju šeit, man ir skriptu tag kas izpilda šādu kodu. Tas piešķir šim mezglu koks, kas tas ir uz Iesniegt īpašums šī funkcija šeit. Un tikai pēc būtības, kā pārlūkiem strādā, kad es tagad noklikšķiniet uz Iesniegt vai hit Enter, ka funkcija ir gatavojas saņemt sauc. Tas nav nepieciešams nosaukumu jo, kas heck rūpējas, ko tā sauc. Vienīgā reize, kad tas kādreiz gatavojas saņemt sauc ir, kad es iesniegt veidlapu. Nav nepieciešams par mani, cilvēka attīstītājs, faktiski to nosaukt jebkur citur. Tagad tikai kā teaser, it kā tas nebija prātā saliekuma pietiekami, mēs pat varam padarīt izskatās vairāk mistisks izmantojot super populāra bibliotēka sauc jQuery. Faktiski jQuery un JavaScript bieži nesaista. Un ko mēs darīsim trešdien, ir sākums Izmantojot šo valodu un šīs bibliotēkas veidot arvien asinhronā un dinamisku pieteikumi tāpat karti iegūt pieteikumi, pieteikumi kas atjaunināt tīmekļa lapu reālā laiks, daudz, piemēram, Facebook vai Gchat darīt, un vairs aprobežoties hitting Iesniegt ko get vai vienkārši pastu vien. Tāpēc es jūs redzēšu trešdien. [Mūzikas atskaņošanai]