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