DAVID Malan: Nu labi. Tas ir CS50, un tas ir nedēļas beigās deviņi. Tas ir bijis viesulis vairāk pēdējo dienu laikā. Un problēmu noteikti septiņi, ja jūs esat celis dziļi tajā, saprast, ka ir diezgan bit kas jauns, kas ir tur. Bet pieņemsim redzēt, ja mēs nevaram gabals viss kopā šeit īsumā Pirms tam pagrieziens off vēl citā virzienā un redzēt Kur vēl mēs varam aiziet. Tātad līdz šim, mēs esam runājuši par HTML. Mēs esam runājuši par CSS. Mēs esam runājuši par PHP. Jūs esat sākuši izjust SQL. Šodien mēs runājam mazliet par JavaScript. Bet kā visus šos atšķirīgi valodas fit kopā? Tāpēc mēs runājām pagājušajā nedēļā par jēdziens ar serveri. Tāpēc pieņemsim tikai zīmēt šo taisnstūri kā tīmekļa serveris šeit. Un web serveri kalpo protams failus. Un daži no šiem failiem var būt HTML failus. Tātad viena no lietām, ka tīmekļa serveris var izspļaut varētu būt failu, kas mēs vienkārši izdarīt, piemēram, šis satur kādu HTML. Tāpēc lajs izteiksmē, ko tas HTML ļauj jums darīt? Mērķauditorija: Page izskatās jauki. DAVID Malan: OK, padara lapas izskatās jauki, lai gan es domāju, ka es esmu pierādījis kas citādi. Tāpēc HTML tas ļauj noteikt lapas out strukturāli, un tas ļauj veida estētiski uzcenojums lapu, uzcenojums statisku saturu, lai jūs tad var apskatīt to ar interneta pārlūku. Bet tas ir galvenais. Tas ir statisks saturu. Jūs rakstāt, jūs to saglabāt, un tad kuģis to. Un web serveri, tad kalpo to uz augšu, lai jūsu apmeklētājiem. Bet mēs Stylize lietas, izmantojot atšķirīgas valodu vispār. Mēs sākām izmantot stila atribūtu par dažiem tagiem. Un stila atribūts ļaujiet mums noteikt lietas, piemēram, fonta lielumu un krāsu. Un jūs, iespējams, sāka atklāt, vai arī jums drīz par galīgo projekti potenciāli, vēl citi īpašības, ka jūs varat izmantot CSS. Un tā lajs izteiksmē, ko tiešām tad tas CSS darīt? Tie ir to tikai piemēri. Kas tas ļauj jums darīt, ka HTML Nešķiet, ka no tā, ko mēs esam redzējuši līdz šim? Mērķauditorija: Definēt stilus pats. DAVID Malan: Definēt stilus pats. Tāpēc noteikt lietas, piemēram, klasēs, kā jums var būt radušās, vai unikāli identificē mezglu dokumentā tā ka jūs varat Stylize viņiem. Bet precīzāk, es teiktu, ka CSS tiešām ļauj veikt lietas pēdējās jūdzes un ļauj norādīt daudz precīzāk estētika, tā kā HTML lielākā daļa ļauj jūs struktūra jūsu lapas. Un, lai gan ir daži nepildīšanu, kā mēs redzējām frāzi pozīcijā tag, kas rupji runājot guvusi lietas liels un drosmīgs. Tas ir diezgan vispārēju definīciju no tag - plašs un vērienīgs. Kas fonta izmērs ir tas, ka? Kādā krāsā tas ir? Cik drosmīgs ir tas, ka? Un CSS ļauj jums vairāk smalki melodija lietas, piemēram, ka. Kā arī izkārtojumu, kā daži no jums ir redzējis. Un godīgi sakot, CSS ir nedaudz no netīrs valodā. Tas ir ļoti spēcīgs, ka jūs varat veikt burtiski jebkuru mājas lapu, kas jūs esat tīmeklī redzams šodien ar to, bet tas ir sava veida sāpes kaklā. Un daži no jums sasitu galvu pret sienu jau tikai darīt kaut ko stulbu, piemēram, centra izvēlni Problēma noteikti septiņi, ja esat iepazinuši šis punkts jau ir. Bet saprast, šīs lietas saņemt vieglāk laikā. Jūs sākat pamanīt modeļiem. Un atkal, Google būs jūsu draugs par dažādiem veidiem, kā jūs varat atrisināt šīs problēmas veida. Un es uzdrošinos teikt ar CSS un HTML vairāk vispār, jūs varat atrisināt problēmas daudz vairāk veidi, kas visi varētu ļoti labi būt pareizs, nekā jūs varētu kaut kā C, pat Tagad PHP vai JavaScript. Tur ir tikai daudz dažādu veidi, kā noteikt lietas. Bet tas sāka iegūt netīrs, mēs teicām. Tikko veida sajaukšanos savu HTML un jūsu CSS ar stila atribūtu bija nedaudz apliets. Un tā mēs tā vietā teica veida abstrakti runājot, ka jums vajadzētu vismaz sākt faktors kādas ir jūsu CSS iespējams. Nav jūsu stils atribūti, bet vismaz izmantot stilu tagu iekšā to, ko daļa no mājas lapā? Mērķauditorija: Head. DAVID Malan: galvā. Līdz šim mums bija tikai titulu augšu tur, bet jūs varat arī pievienot stilu tag, un jūs varat nodot savu CSS rupji runājot pret lapas augšpusē. Bet tad mēs ņēmām lietas vienu soli tālāk un mēs ņemt, ka vairāk atsevišķā failā. Un tāpēc šie divi faili bija kaut kā tagad ir saistīti. Un tas patiešām bija tagu, kas to izdarīja. Un kāda bija viens no ilgtspējīgas attīstības mērķa motivācija faktoringa mūsu CSS viss vairāk? Mērķauditorija: otrreizēja izmantošana. DAVID Malan: otrreizēja izmantošana. Tiesības? Jums varētu būt redzējis p-set septiņas jau ka daudz lapām, pērk lapas, pārdošanas lapas, portfolio lapa, iespējams, ir strukturēta nedaudz līdzīgi. Tur CS50 finanšu logo augšpusē ja esat nolēmis mainīt. Tur kājenes pie apakšā lapas. Un CSS ļauj tam faktors to ārā to atsevišķā failā tā, ka tad, ja Jūs vēlaties kaut ko mainīt pasaulē pāri jūsu visu vietā, jūs tiešām var vienkārši mainīt to vienā vietā. Bet ir cena, ko maksāt, iespējams, pēc tam ņemt ārā CSS no mana HTML faila atsevišķu failu atsauču to ar tag, ko mēs redzējām pirmdien. Kas varētu negatīvie ir tas? Atceroties pirms nedēļas, kad mēs esam runājot par HTTP un TCP / IP, un, kā internets darbojas. Kaut kas vairāk nekā šeit? Mērķauditorija: Tas aizņem vairāk laika. DAVID Malan: Tas aizņem vairāk laika. Kāpēc? Mērķauditorija: [nedzirdama]. DAVID Malan: Jā. Tāpēc tas varbūt aizņem mazliet vairāk laika. Jo viens, CSS ir acīmredzami neatrodas vienā failā. Tātad, tagad jums ir, lai ne viens, bet divi lūgumi. Un katrs no šiem lūgumiem, kā mēs redzējām Chrome tā saukto inspektors, un mēs paskatījās tab tīklu, katrs no šiem failiem ir nepieciešama viena HTTP Pieprasījumu, ko mēs redzējām notiek daži daudz laika. Tagad, varbūt tas nav daudz. Varbūt tas ir tikai 20 milisekundes. Varbūt tas ir 200 milisekundes. Bet domāju par lapu, piemēram, Facebook, vai CNN vai Google, kas ir daudz lielāks nekā piemēriem mēs esam paskatījās līdz šim. Šīs lapas varētu būt desmitiem failu, no kuriem katrs var būt nepieciešama lejupielādēt no failu. Tātad lietas var potenciāli sāk palēnināties. Un jo īpaši šajās dienās, kad mēs visi ir mobilie tālruņi mūsu kabatās un lēnāku interneta pieslēgumu, ņemot pagaidiet vēl pāris milisekundes, maz vairāk milisekundes par papildu failus faktiski var būt lēna. Latentuma ir vārds, kas apraksta veida gaida, ka jums ir, ka jūs pieredzi, kad gaida daži gabals informāciju. Bet ir otrādi. Tāpēc tas vēl nav viss veida - tas tiešām ir mazliet rampa šeit. Negatīviem tagad, bet to, kas pārlūki var darīt ja tie ir smart, lai izvairītos no kam lūgt to pašu styles.css failu atkal var darīt? Cache to. Tā caching - C-A-C-H-E - parasti ir šeit tikai, lai saglabātu failu jums lūdza pirmo reizi, un Pēc tam pārbaudiet savu kešatmiņu par to. Pārbaudiet, vai esat veida uzglabāšanas konteiners, un, ja jums jau ir kopiju styles.css, pat tad, ja kāds cits lapa p-komplekts, vai jebkurā mājas lapā, pieprasa to vēlreiz, tikai, lai dotu lietotājs, kas pats saglabātā kopija. Nelietojiet apnikt, kas to pieprasa. Negatīviem tur, lai gan, kā daži no jums ir paklupu pār p-komplektu. Ja jūs veicat izmaiņas uz servera, un doties atpakaļ uz pārlūku, un jūs pārlādēt, dažreiz pārlūks jums labu, un nav apnikt atkārtoti lejupielādējot savu styles.css fails tāpēc, come on, kādas ir izredzes ka šie stili, Facebook izmanto gatavojas mainīt katru stundu vai dienas līdz dienai? Tas ir diezgan zems. Tie laika gaitā var mainīties, bet ne ar minūtē vai stundu. Tātad triks, tikai FYI, veicot mājas attīstība, bieži turiet taustiņu Shift piemēram, un pēc tam noklikšķiniet pārlādēt jūsu pārlūkprogrammā, un tas būs parasti pateikt pārlūka pārlādēt viss, pat ja jums jau ir tas kešatmiņā. Tātad vēlreiz, upsides un downsides, bet visi no tiem galu galā dizains lēmumus. Tāpēc tagad, mēs neesam tikai beigtu stāsts šeit. Ja es tagad iet atpakaļ un atpakaļ un atpakaļ un atpakaļ, mēs sākām ieviest ne tikai HTML, bet PHP. Tāpēc lajs izteiksmē, ko tas PHP darīsim? Mērķauditorija: [nedzirdama]. DAVID Malan: Kas tas ir? Mērķauditorija: Ieviest loģiku uz kodu. DAVID Malan: Jā, iepazīstināt loģika jūsu kodu. Tātad, tas ir taisnība, programmēšanas valodu ar cilpas, un mainīgie, un funkcijas, un nosacījumus, kā arī visus lietas, ko mēs esam, izmantojot ceļu atpakaļ ja kopš nulles. Un PHP, mēs esam redzējuši, var izmantot nu komandrindas - tas nav nekāda sakara ar internetu, pat ja tas ir tiešām tās izcelsmi un to, ko tā ir tendence būt labi un veicina - bet jūs varat izmantot PHP vienkārši pēc būtības par to, ka tā ir print () funkcija, un printf () funkciju, vai echo () funkciju. Ir ķekarus no veidiem, kā jūs var drukāt tekstu ar PHP. Tāpēc, jūs varat izmantot šo programmu, valoda, lai produkciju tieši ko mēs runājām par agrāk. Jūs varat dinamiski ģenerēt jūsu HTML. Varbūt ne visi no tā. Varbūt jums grūti kods lietām, piemēram, galvenes un kājenes, un logotipu, un jūsu stilu lapas, un tas viss. Bet kaut kā p-noteikti septiņi, kur jūs manipulējot krājumus un parādot lietotāja portfeli, kas ir būs dinamiski mainīt, jūs varētu droši izmantot PHP un loģiku tas dod jūs kā programmēšanas valodas izeja dinamiski apakšgrupās lapas. Tātad, ja jūs runājat par dinamisku tīmekļa vietnes, vai web programmēšana, kas ir ko jūs īsti runājam. Izmantojot valodu, piemēram, PHP, vai lietas sauc par Python vai Ruby, vai Java, vai vēl citas valodas, lai vaicājumu datu bāzi bieži vai citu serveri, un Tad dinamiski izspļaut HTML. Tagad gala rezultāts, jo malā, ir ka HTML lielākā daļa tīmekļa vietņu, ieskaitot jūsu p iestatīt septiņus, ir iespējams būs milzīgs haoss, ja paskatās avota kods pārlūkprogrammā. Tas nav liels darījumu. Šajā brīdī, kad mēs rūpējamies par stils, mēs rūpējamies par stuff, ka jums rakstīt. Mums nebūs rūp sīkumi ka tas, ko jūsu kods izejas. Tāpēc nav jāuztraucas par to ieloka šeit, ja tas ir PHP, kas ir faktiski outputting sīkumi. Galu galā, pārlūkprogramma vienalga, un cilvēku nebūs meklē pie avota anyway. Mēs darbinieki, piemēram, būtu meklē jūsu PHP. Tātad, ļaujiet man sniegt īsu piemēru tagad kāpēc cits tas varētu būt noderīgi. Tāpēc godīgi sakot, es nevaru atcerēties pēdējo reizi reizi, kad es izmantoti C, lai atrisinātu problēmu reālo pasauli. Tas bija iespējams, absolvents skolā, kad Man vajadzēja izmantot valodu, kas bija diezgan zemā līmenī, un deva man iespēja darīt kaut ko ļoti augstu veic, lai patiešām ietaupīt tik daudz CPU cikli, kā es varētu, lielā mērā jo man bija, izmantojot milzīgs datu kopas, un katru CPU ciklu skaitītas. Un godīgi sakot, pat lietas, piemēram, telefoniem šajās dienās, un citas ierīces ja jums nav gluži tik daudz atmiņu un jums nav gluži tik daudz CPU, izmantojot ātrāku valodas joprojām ir pievilcīgi. Bet reālajā pasaulē, ja jūs vienkārši gribu mest kādu programmu kopā analizēt dažus datus, vai arī jūs esat savākti viss ķekars reģistrāciju par dažas studentu grupas, un jūs vēlaties, lai ļoti ātri automatizēt sūtīt e-pastus pa vienam ar katru no tiem reģistrētājiem, jūs gatavojas sasniegt augstāka līmeņa valoda nekā C tā runāt. Kaut kas līdzīgs PHP vai Python vai Ruby, vai puse duci citi, kas pastāv šajās dienās. Bet tie trīs ir iespējams visvairāk moderns tieši tagad. Un ko tas nozīmē, ka jūs varat atvērt up teksta redaktoru, piemēram, gedit vai vairums kaut kas cits, un tad sāciet rakstot kodu, neraizējoties par apkopojot, bez tiešām jāuztraucas par atmiņas vadību, paturot prātā arī, ka nedaudz sloppiness galu galā nāk atpakaļ kodums jums, ja datu kopa izpaužas lielāki vai problēma kļūst liels. Bet ko tas nozīmē mums ir šāds. Ļaujiet man iet uz priekšu un palaist Speller No problēma noteikti seši. Tātad šis ir mans trie bāzes ieviešana ka es izmantoti lielā board kur es veikts ne tik labi. Mēs būsim atpakaļ nedēļas laikā un pārskatīt tiem, kuri galu galā atop Liels board mūsu pēdējā lekcijā. Bet tagad, ļaujiet man iet uz priekšu un vienkārši palaist savu risinājumu tekstu, un mēs darīsim King James Bible, un šeit mēs iet. Tātad tie ir visi it nepareizi uzrakstītus vārdus no King James Bible. Un mans īstenošana notika pussekundi kopumā. Tāpēc ne pārāk slikti par šo īpaši datoru. Bet domā par to, cik daudz kods man bija rakstīt. Domāju, cik daudz kodu, jums bija rakstīt. Domāju, cik stundas jūs pavadīts D-zālē vai jūsu kopmītnes vai kur faktiski kodēšanas up šo risinājumu. Nu, ja man tiešām ir augstāks valodas, piemēram, PHP, ņem vērā ko es varu darīt šeit. Pirmkārt, pieņemsim, ka tas ir vietā Jūsu izplatīšanas kodu. Šis ir fails ar nosaukumu Pareizrakstības. Tā ir pieejama kā daļa no šodienas sadales kodu. Un es esmu gatavojas vilnis savu roku pie visvairāk detaļas, bet tas ir faktiski Interesants piemērs tam, kā Jūs varētu port valodu piemēram, C salīdzinājumā ar PHP. Es burtiski atvēra divas teksta logus, viens ar manu C versiju speller.c, un es tikko sāku tulkojot to my dodies uz PHP, un ierakstot to, izmantojot vislīdzvērtīgākajām funkcijas. Tātad, daži no šiem lietām ir atšķirīgi. Mēs redzējām pēdējo reizi, ka PHP neizmanto ietver diezgan pašā veidā. Tas izmanto prasa parasti, lai gan ietver eksistē. Definēt ir nedaudz atšķiras no # Define C, bet tas ir kā mēs ar konstanti. $ Argc izrādās pastāv PHP, tāpēc mēs esam redzējuši, ka pirms tam. Šie ir tikai mainīgie, visi kas sākas ar dolāra zīmes. Atgādināt tie ir tikai ķekars ar peldošo punktu. Tik garš stāsts īss, jūs esat laipni aicināti uzsist pa šo, ja interese, tas ir gandrīz line-for-line pārveidošana C versija speller.c uz PHP. Un jūs varētu darīt to vēlreiz pusducis citās valodās. Bet kas ir interesanti tas ir. Vai to, kas ir atklāti neizcēlās tas ir. Ļaujiet man iet uz priekšu un rakstīt par dictionary.php, un apgalvo, ka es esmu gatavojas iet uz priekšu, un atkārtoti ieviest Problēma noteikti seši šeit. Tāpēc pieņemsim iesaku vispirms šajā fails, kas tiks īstenoti PHP, tāpēc ļaujiet man atvērt savus tagus, piemēram, ka. Ļaujiet man sniegt sevi globālā mainīgais, $ size kļūst nulle. Un es esmu gatavojas sniegt pats hash tabulu. Es izmantot hash tabulu šī lieta. Kā es varu paziņot, hash tabulu PHP? Darīts. OK. Tik atvērta kronšteins tuvu konsole ir ko PHP, kā mēs esam redzējuši? Masīvs, bet masīvs, kas varētu ir asociatīvā masīva. Asociatīvā masīva ir datu struktūra, kas saista atslēgas ar vērtībām. Tagad vienkāršākais skaitliski indeksētas masīvs, šie taustiņi ir tas, ko? Nulle, viens, divi, trīs, labi? Old school sīkumi atpakaļ no C, bet to var arī virknes, piemēram, foo un bāru, vai Maxwell, vai jebkura šāda virkne. Lai es varētu piesaistīt, ka tikai brīdi. Ļaujiet man iet uz priekšu un atzīt funkcija, piemēram, - Darīsim slodzi () pirmās. Tā funkcija slodze (). Un PHP ir nedaudz atšķiras ar to, ka Jūs burtiski tipa funkciju, bet nerakstiet atgriešanās veidu. Es iešu uz priekšu un saka, ka slodze () funkcija ir veikt argumentu $ vārdnīca, tikai tāpat kā C versijā darīja. Es esmu darot to no atmiņas. Un es ierosinu, ka es esmu gatavojas to darīt. Es esmu tikai gatavojas darīt foreach. Es esmu gatavojas, lai izsauktu funkciju sauc failu (), kas iet ar nosaukumu, kas fails, kas ir mainīgs $ Vārdnīca kā $ vārdu. Un tad iekšā manā cilpa šeit, es esmu gatavojas iet uz priekšu un uzglabāt manā $ Tabula, $ vārds izpaužas taisnība. Darīts. Ak, pagaidiet. Darīts. Labi. Tas ir slodze () funkcija saka PHP. Tagad, kāpēc šo darbu? Un es esmu veida krāpšanos šeit. Tātad, viens, foreach mēs redzējām īsi pēdējo reizi. Tas tikai nozīmē, ka jūs varat atkārtot vairāk masīvs bez apgrūtinošas ar i un n un plus plus, un visi no ka. Vārdnīca ir, protams, faila nosaukumu, kaut kas līdzīgs liels vai mazs, divas vārdnīcas mēs izmantojām pēdējo reizi. Fails ir funkcija, kas paver tekstu failu, nolasa to pozīcijai, un rokas jums atpakaļ milzīgs masīvs, katrs no kuras elementi ir līnija no šī faila. Tātad tas ir kombinācija fopen, un fread, un kamēr cilpa, un fclose, un tas viss. Visbeidzot, kā vārds nozīmē tikai to, ka tas mainīgo Es esmu nāksies piekļūt par katru atkārtojuma šīs cilpas. Tātad, īsi sakot, šis viens laineris šeit nozīmē atvērt failu, kura nosaukums ir vārdnīca, mainīgs, atkārtot vairāk tā pozīcijai, un katru reizi, kad jūs saņemsiet līnija, veikalā mainīgo sauc vārdu, un tad kaut ko darīt ar vārdu. Ko es gribu darīt? Es gribu, lai vārdu manā hash tabulu. Nu, es varu kaut ko manā hash tabulu tāpat kā C Izmantojot kvadrātiekavas. Tas ir nosaukums mana hash tabulu. Es esmu gatavojas indekss par ka hash tabula šajā vietā. Tātad nav kronšteins nulle, nevis kronšteins vienu. Bracket quote likt pēdiņas beigās kaut ko, kāds tas vārds ir. Un, tāpat kā jūs varētu būt jūsu hash tabulu darbu Trie, jūs vienkārši glabāt efektīvi Būla, netieši vai skaidri. Darīts. Es esmu uzglabātu vērtību taisnība. Tagad tur ir pāris lietas Es esmu griešana stūriem šeit. Tehniski, tur būs kaitinošas jauns līnija, / n, beigās katrs no šiem vārdiem. Tāpēc es būtu iespējams zvanīt PHP funkciju sauc karbonāde (), kas gluži burtiski karbonāde, ka off. Un man tiešām ir nepieciešams, lai darīt vienu citu lietu. Es būtu iespējams pieauguma lielums par katru atkārtojuma, tāpēc es esmu, lai sekotu visā pasaulē par to, kas tas ir. Un atklāti, un tas ir viens no stulbākai aspektiem PHP, ja jūs esat izmantojot globālo mainīgo, jums ir nepieciešams skaidri teikt, ka jūs esat. Tāpēc es esmu gatavojas, lai faktiski rakstīt pasaules $ Size, pasaules $ galda, un tagad mana funkcija ir pabeigta. Tā nav tik vienkārši, kā iepriekš, bet , iespējams, bija mazāk laika nekā C versija, varbūt? Labi. Tātad tagad darīsim pārbaudi () funkciju. Let 's redzēt, ja tas vismaz bija stundas beigās, ka tā ir ņēmusi mūs C. Tātad ļaujiet man iet uz priekšu un paziņot pārbaudīt, kā funkcija. Stājas argumetnu vārdu, kas ir nāks no Speller. Un es esmu tikai gatavojas, lai pārbaudītu, vai pēc mainīgu isset, galda kronšteins strtolower no vārda - pieņemsim līdzsvaru visiem maniem iekavās - tad atgriezties true. Pārējais - tas bija tiešām grūti daļa no šīs programmas. Else, atgriezties viltus. Darīts. Tas ir pārbaude (). Tagad, kāpēc šo darbu? Nu, es pieņemts vārdu, kas ir virkne. Divi, es esmu pārbaudīt iekšpusē hash galds, kurš sauc $ tabulu. Es esmu liekot to uz mazajiem burtiem, zvanot funkcija diezgan līdzīgs tolower () in C, bet tas visu vārdu, ne vienu rakstzīmi. Un, ja tas ir noteikts, citiem vārdiem sakot, ir vērtība, kas, citiem vārdiem sakot, ja tā ir taisnība, tad jā, tas ir vārds. Jo man likt to tur ar slodzi (). Un, ja ne, es esmu gatavojas atgriezties viltus. Tagad citi ir viegli. Funkcija izmērs (), kā es varu darīt? Es būtībā darīt atgriezties $ lielumu. Bet man ir tehniski nepieciešams darīt šo kaitinošas lieta. Un faktiski up dzirdēt, man bija griešana vienā stūrī pārāk daudz. Es tiešām ir nepieciešams darīt globālo $ tabulu. Bet ka to teica, izkraut). Izkraut () ir pārsteidzošs. Funkcija izkraut (). Kā es gribu, lai īstenotu izkraut ()? Darīts. Labi. Tātad izkraut (), atmiņas vadība ir pilnīgi rūpēsies par jums piemēram, PHP kaut ko, un daudz uz augstāka līmeņa valodām. Tātad, tas ir pārsteidzošs. Tāpat kā, kāpēc ellē mēs pavadījām pagātnē astoņas plus nedēļas C rakstiski acīmredzot ļoti lēni, tiešām laiks patērē problēmas ar desmitiem stundu no darba saskaņā ar mūsu drošības jostas? Nu, viena lieta, tas var strādāt sods par mazām programmām. Tas, protams, paātrinājusies manu izstrādes laiku. Bet pieņemsim redzēt, kas notiek reālajā pasaulē. Ļaujiet man iedziļināties šajā direktorijā termināļa logā. Tur Pareizrakstības. Un paziņojums, kā malā, un jūs varētu ir saskārušās ar šo problemātisko komplektu sešiem vai problēma noteikti septiņi. Jums nav obligāti jābūt uz galu PHP failus. php. Ja jūs nodot līniju, piemēram, ka pirmā vietā pašā augšā, kas ir īpaša līnija sintakses, kas būtībā nozīmē atrast programmu, ko sauc PHP, un izmantot to, lai interpretēt šo failu. Tāpēc tagad neviens īsti nezina, kas Es skrienu PHP programmu. Es varu palaist to tāpat, it kā tas bija kaut kas apkopoti C. Bet šeit ir lieta. Patiesībā, pieņemsim darīt atkal. Dropbox/pset6 /. Tur Pareizrakstības. Labi, 0.44 sekundes. Tas ieguva ātrāk šo laiku. Tagad iesim uz PHP versiju. Nice touch. Bet tikai domāju, cik daudz laika Es saglabāts darba laika. Labi. Tātad 3.59 sekundēm, kas faktiski neizklausās precīzs, vai nu. Bet tas ir tāpēc, ka garš stāsts īss, kad jūs izdrukāt milzīgu stuff uz ekrāna, ka pati palēnina lietas leju. Ko tas īsti ieņēma CPU Ierīce bija 3.59 sekundes, kas pretstatā C, kas notika 0.44 sekundes pavisam nesen. Tas ir patiesi kārtība lielumu atšķirīgs. Tātad, ja ir tā, ka cena, kas nāk no? Kāpēc tas ir tik daudz lēnāk? Kāpēc PHP veikt tik slikti? Danielle? Mērķauditorija: Tu īsti izmantot hash tabulu. DAVID Malan: man nav īsti izmantot hash tabulu. Tāpēc es veida darīju. Tātad, tas ir asociatīvā masīva. Visticamāk, ja cilvēki PHP ir tiešām gudri, viņi izmanto zem hood faktiskais hash tabulu īstenoti kaut kā C vai C + +. Bet. Jā. Mērķauditorija: [nedzirdama]. DAVID Malan: Jā. Tāpēc katra no funkcijām es uzrakstīju tagad - patiesībā, jūs varat teikt, ka vēlreiz mazliet skaļāk? Mērķauditorija: Katrs no funkcijām, kas Jums iekļauts ir daudz vairāk pilnīgu jauda nekā - DAVID Malan: Tātad, tas ir ļoti patiess. Tur ir daudz vairāk virs galvas, ka mēs esam nav īsti redzēt, koncentrējoties tikai uz dictionary.php, ko es tikko rakstīja. Turpretī, tur ir vesela tulks iet fonā. Patiesi, kad es ilga šo programmu, Tika nedarbojas apkopoti nullēm un tiem paredzēti manu Intel CPU. Drīzāk, tas darbojas pozīcijai PHP kodu, kas izskatās tieši kā mēs drukāti tā. Un tā, ja jūs izmantojat interpretē valodas, jūs tiešām maksāt šo cenu. Tas ir gatavojas veikt kādu laiku, lai lasītu Jūsu fails augšas uz leju, pa kreisi, lai pa labi, un pēc tam izpildīt katru līnijas atkal un atkal. Tagad patiesībā, jo īpaši internetā, Jūs faktiski var paātrināt šo procesu ar caching ar rezultātiem PHP kods tiek interpretēts. Un tas ir jēga tīmeklī, jo Ja jums nav viens lietotājs, piemēram, man šeit, bet 1000 vai 10000 lietotāju, tad varbūt pirmo reizi fails apskatīta tas ir lēns, bet pēc tam tas ir daudz ātrāks. Bet tas arī, atkal, ir tirdzniecības off. Un kaut ko līdzīgu pētījumu datiem noteikt, vai pat kaut ko lielu, piemēram, Tas, lietotāji tiks galā sāk justies, ka palēnināšanos. Tātad īsumā, interpretē valodas ļoti modē, ir ļoti populāri, un godīgi sakot, iespējams, valodas, vajadzētu sasniegt, risinot problēmas pēc CS50. Bet saprast, cik daudz jūs tiešām ņemot par pašsaprotamu zem pārsega tiešām šie pēdējo vairākas nedēļas hash tabulas, kā arī koki, un cenšas, , kas tiek izmantoti, galu galā, lai faktiski īstenot lietas, piemēram, atklātā grupā, kvadrātiekavas, ko mēs varam tagad pateicību par pašsaprotamu. Tātad, pieņemsim to apskatīt tagad šajā tīmekļa kontekstā. Un es teicu pēdējo reizi, ka tur ir ķekars superglobālajiem masīviem PHP, kas nav īsti būtiski pie komandrindas. Viņi vairāk attiecas kontekstā Izmantot PHP web kontekstā. Tā darbojas PHP web serveri, lai lai radītu lietas, piemēram, HTML. Un mēs paskatījās $ _GET un $ _POST, un tas ir, ja automātiski lietotāju ievades nonāks vienkārši, ja jūs iesniedzat veido uz failu beidzas. php uz web servera, piemēram, iekārtas. Bet pieņemsim skatīties īsumā $ _COOKIE Un $ _SESSION. Lajs izteiksmē, kas ir cookie, jo jūs saprotat to kontekstā izmantojot interneta? Mērķauditorija: failu datorā. DAVID Malan: Jā. Tā ir failu uz lietotāja datora apstādīta ar kādu citu vietni jūs notikt apmeklēt. Tātad, kad jūs iet uz Facebook, ja jūs iet līdz bankofamerica.com, kad jūs iet uz google.com, kad jūs iet uz gandrīz jebkuru mājas pasaulē šajās dienās, ieskaitot cs50.net, cookie tiek stādīti datorā, kas ir nu vērtību uzglabā RAM jūsu dators jūsu pārlūka atmiņā vai dažreiz tiešām fails glabājas uz jūsu cietā diska. Un to, kas parasti glabājas šajā failā nav jūsu lietotāja vārds, kas nav jūsu parole, parasti nav kaut kas jutīga, ja mājas lapā nav tik labi ar savu drošību, bet gan tas ir liels unikāls identifikators vidū citas lietas. Tas ir liels izlases numuru stādīti uz jūsu datoru, bet jūs varat iedomāties, kā veida virtuālo roku zīmogs, kā no klubu vai kādu atrakciju parks, kas pieļauj darbinieki, īpašnieki, kas serviss, atcerēties, kas jūs esat. Tātad, ja liels izlases skaits ir līdzīgs 12345678, lai gan tas, protams, ne pārāk nejauši, domāju, ka rokas zīmogu, ka tad, kad jūs apmeklējat facebook.com pirmo reizi, tie zīmogs šo numuru no jūsu puses. Un tad tāpēc, ka tu runā HTTP, jūs ir pārlūku, un tāpēc, ka Facebook protams, runā pats par web serveris, protokols HTTP saka, ka jebkurā laikā pēc tam apmeklēt facebook.com, vai tas ir otrais vēlāk, stundu vēlāk, pat nākamajā dienā, tik ilgi, kamēr jums nav skaidri atteicies, kas efektīvi ir, piemēram, mazgājot rokas. HTTP saka, jums vajadzētu iesniegt savu rokas zīmogs katru reizi, kad atgriezties šajā mājas lapā. Kas Facebook, tad tas ir viņi apskatīt šo rokas zīmogu un viņi saka, oh, 123456789. Es nezinu, no pirmā acu uzmetiena, ka šis ir David Malan Cambridge, Massachusetts, bet viņi var pārbaudīt savu datu bāzes un teikt, ak, persona kuras datora mēs apstādīta 123456789 ir David Malan no Cambridge, Massachusetts. Parādīsim, ka lietotājs, tad viņa profilu lapa vai viņa News Feed. Bet tur ir problēma, ja tas ir kā web patiešām darbojas. Pieņemsim apskatīt ātri piemērs. Let 's tiešām iet teikt facebook.com. Taču, pirms mēs varētu iet tur, lai man iet uz priekšu un atvērt Chrome Inspektors leju šeit. Ļaujiet man apskatīt tab tīkla. Un tagad iesim uz priekšu un ierakstiet in https://facebook.com. Un es daru, ka tā, ka mēs neredzam visus šos redirects un atkritumu laiku meklē caur tiem. Ļaujiet man hit ienākt. Labi. Mēs redzam visu ķekars pieprasījumu. Tur nāk Facebook. Tur viss ķekars failus. Un šeit, uz manu pieminēt latentuma pēdējo reizi, tas ir, daudz HTTP pieprasījumus. Bet pirmais ir iespējams Visbiežāk interesanti. Tāpēc pieņemsim ritiniet uz leju šeit, un Es tuvinātu sekundē. Tas būs sava veida haoss, bet paskatīsimies. Facebook sūta mums Visa ķekars stuff. Bet paga, interesanti. Viņi stādīšanas nevis vienu, bet četras rokas zīmogi uz manu roku šeit. Set-cookie, Set-cookie, set-cookie, set-cookie. Un tur ir dažas iezīmes šeit. Visi no tiem minēt dažus veida termiņa beigām. Un izskatās, ka Facebook cer atcerēties mani līdz 2015. Tātad, tas ir iespējams, laiku, līdz kuram Man ir iziet vai tie būs vienkārši automātiski pieņemt, es esmu nav nāk atpakaļ. Tātad, tas ir tiešām pienācīgas laika sprīdī. Un tur ir daži citi lietas notiek šeit. Šis cookie, šķiet, ir piespiedu kārtā svītrots, sakot, tas beidzās 1970 Pirms cookies pastāvēja. Tāpēc pārlūks ir tikai gatavojas pieņemt OK, tas ir tāpat kā Mazgājot rokas zīmogu. Bet tagad, kad mana pārlūkprogramma veic turpmākais pieprasījums - ļaujiet man iet uz priekšu un darīt to atkal un pārlādētu. Tagad ļaujiet man ritināt atpakaļ top pieprasījumu un iet uz leju Šeit var pieprasīt galvenes. Paziņojums šo. Tāpēc tagad es esmu ar ne atbildes galvenes, bet paziņojums tā saka pieprasījuma galvenes. Un paziņojums, ka mana pārlūkprogramma ir daļa no tā lūgums pēc hitting pārlādēt ir nosūta vismaz šādu informāciju. Nav noteikts, cookie, bet cookie. Tāpēc tas ir līnija, HTTP galvenes, lai runāt, kur mans pārlūks ir sava un bez manas nezinot to iesniedzot mana roka Facebook pārbaudi. Tāpēc šie cepumi var būt izmantots, tad par ko? Atcerēties, kas jūs esat, un atceros, kā daudzas reizes esat bijis tur, vai tiešām kaut kas. Tātad, šeit ir counter.php. Un ļaujiet man tuvinātu fontu. Un katru reizi, kad es pārlādēt šo lapu, paziņojumu tas ir atcerēties, cik reizes Es esmu bijis tur. Nu, tas nav tik iespaidīgs. Pieņemsim tikai aizvērt šo cilni, un tagad iesim atpakaļ uz http://localhost/counter.php. Ak, tas ir interesanti. Tas joprojām atceras, pat lai gan es slēgts cilni. Un, godīgi sakot, ja es aizvērtu pārlūku, ja īsteno pareizi, es varētu vēl atceras, ka šim lietotājam kas viņš vai viņa bija pirmā reize, un tikai tad, kad es iet uz Chrome izvēlnē, kas nekā šeit ir šeit, un dodieties uz Vēsturi, un noklikšķiniet uz Notīrīt pārlūkošanas datus, kā daži no jums var būt pagātnes, tikai tad jūsu cookies faktiski svītro tīmeklī laikā attīstība. Tātad, ja mēs ejam - pieņemsim slēgt gedit šeit. Un, ja mēs tagad iet uz šo failu. Ļaujiet man iet uz mūsu vhosts / localhost / valsts, un ļaujiet man darīt counter.php. Ievērojiet, ka tas ir diezgan vienkāršu programmu. Tas ir diezgan vienkārša mājas lapa. Tāpēc top faila ir tikai komentāri. Bet šeit ir jauna līnija, ko var esmu redzējis jau p-komplekts septiņi, session_start (). Tas ir līnija PHP kodu, būtībā stāsta web serveri, padara Noteikti zīmogs rokas un padarīt Pārliecinieties, lai pārbaudītu roku zīmogiem. Tas ir viss, ka līnijas nav, un tas dara visu šo procesu mums. Tad ievērosiet, es tikko saņēmu divas filiāles šeit. Ja skaitītājs galvenais iekšpusē šo īpašu globālo mainīgo sauc $ _SESSION Ir noteikts - citiem vārdiem sakot, ja tur ir dažas vērtība, kas tur - pieņemsim iegūt un uzglabāt to vietējās mainīgais sauc $ skaitītājs. Else, pieņemsim piešķirt $ skaitītājs noklusējuma vērtība ir 0. Tagad šeit ir viens aspekts, PHP, kas ir gan svētība un lāsts. PHP ir nedaudz apliets. Tādējādi, kaut arī C, kāda būtu joma letes ir nu šeit vai šeit? Tas būtu bijis tikai šiem cirtaini lencēm. Guess what? PHP, tā pastāv arī ārpus tiem, cirtaini bikšturi, šeit un šeit, un šeit, un šeit, un pat zemāk. Tāpēc es saku, tas ir svētība nozīmē ka jums nav jādomā par grūti, kā mēs to darījām pirms nedēļas. Bet tas ir arī mazliet par lāstu, kas vienalga, kur jūs izmantojat mainīgais PHP, vismaz programmā, piemēram, tas, tas ir pasaulē pieejamu labāk vai sliktāk. Tātad jums ir jāpatur prātā, ka šobrīd Jūsu mainīgie nedrīkst undefined. Jūs, iespējams, ir definējušas tos citur. Bet to, ko es esmu gatavojas darīt, galu galā? Es esmu gatavojas glabāt iekšpusē, ka globālā mainīgais kā vērtību counter ievadīt rezultātu darot skaitītāju plus 1. Tāpēc tas ir tikai aritmētisks kas dara incrementation šīs letes. Un fakts, ka es esmu uzglabājot, ka vērtība atpakaļ šeit ir nozīmē būtiski atjaunināt datu bāzi, lai atcerieties, ka lietotājs 123456789 ir šeit divas reizes. Un, kad es to darīt atkal, kad nākamreiz es pārlādēt lapu, tas notiek, lai pārbaudītu mana roka zīmogu un teikt, ak, lietotājs 123456789 tagad ir Šeit ir trīs reizes. Un tā kādus PHP un tamlīdzīgi valodā dara, lai mums ir, tie ir doti , kā un kur un cik ilgi uzglabāt vērtības šo īpašo superglobal. Un tas superglobal nākamreiz es apmeklējiet lapa ir sava veida maģiski pirms apdzīvota, piepildīta ar vērtībām, kas tur bija pēdējo reizi esat apmeklējis, vai kas bija otrais atpakaļ, nedēļa pirms, vai 2013.gadā, un mēs tagad runājam par 2015. PHP un web serveri rūpēties par visu, kas jums. Mērķauditorija: [nedzirdama]. DAVID Malan: Mainīgie PHP ir būtībā vienmēr ir globāla, ja vien jūs deklarēt tos iekšpusē funkciju, un tad viņi ir vietējā funkcija tikai. Bet tāpēc, ka es esmu nav rakstīts kādu funkcijas, tagad tie ir efektīvi Pasaules visā manā visiem lietas materiāliem šeit. Mērķauditorija: Vai ir veids, kā lai padarītu tos vietējiem? DAVID Malan: Vai ir kāds veids, kā padarīt tos vietējiem? Tikai ietīšana tos funkcijām. Kas jaunāko versiju PHP, jūs varat darīt to ar anonīma funkcija. Bet vairāk par ka konteksts JavaScript. Bet īsā atbilde ir nē. Ilgāk atbilde ir jā. Nice. Laba viktorīna jautājums. Labi. Tātad visbeidzot, lapa pati par sevi ir faktiski ir diezgan vienkārši. Ievērojiet, ka tad, kad es izeju PHP režīma, atgādināt ka visu šo stuff leju Turpmāk ir tikai gatavojas saņemt iespļaut veic izejvielas uz pārlūku. Kas ir labi, jo es vēlos, lai nosūtītu lietotājs dažas HTML, bet es vēlos lai dinamiski atjauninātu šo HTML. Un viens veids, kā es varu darīt, ir, lai sakārtotu ļoti ātri piliens atpakaļ uz PHP režīmā, izmanto atvērtā Bracket jautājuma zīme vienādības zīme, un pēc tam izejas vērtība no letes. Vai, ja tas izskatās mazliet noslēpumains, tas vienādības zīmi faktiski ir tikai daži sintaktisko cukura šim printf ($ skaitītājs). Bet atklāti sakot, tas ir tikai nedaudz neglīts un mazliet kaitinošas rakstīt. Tātad PHP ļoti labi piedāvā šo funkciju kur jūs varat vienkārši pateikt to vairāk īsi tādā pašā veidā. Tātad, kas notiek zem kapuci? Pieņemsim ātri apskatīt tīkla tab šeit counter.php. Un ļaujiet man iet uz priekšu, un pirmais pieņemsim, izdzēsiet savas sīkdatnes. Let 's skaidrs pārlūkošanas datus kopš sākuma laiku. Tagad iesim atpakaļ vairāk nekā šeit. Tagad pārlādēt lapu. Un es esmu atpakaļ pie nulles. Tāpēc, ka mana roka zīmogs ir mazgāti, Man tagad saņemt jaunu cookie. Patiešām, ja es paskatos uz cilnes Tīkli un apskatīt atbildes galvenes, paziņojums ka ierīce sūta mani cookie, kura vārds ir nedaudz patvaļīgi, bet gan sava veida saprātīgi, PHPSESSID. Un tas ir nosūtījis man tas ir patiešām liels izlases numuru. Tas nav gluži numuru. Tas nav gluži heksadecimālo. Tas ir sava veida burtu un ciparu virknes, bet, iespējams, tas ir nejauši. Un tas ir roku zīmogu tā, lai runā, ka es esmu, kas attiecas uz. Tajā pašā laikā, ja es noklikšķiniet uz papildināšanas un pēc tam apskatīt šajā otrajā rindā, lai mans otrais lūgums, paziņojums, tagad, ka mans lūgums galvenes ietver PHPSESSID vienāds ar to, nav set-cookie, bet tikai cookie. Un tas ir mana pārlūkprogrammas prezentācija no manas rokas zīmogu. Tātad tagad kā teaser, un mēs runājam vairāk par šo nedēļu, vai arī tā, bet kādā veidā tas padara tevi neaizsargāti, jūsu Facebook kontā neaizsargāti, un citas šādas konti neaizsargāti? Mērķauditorija: Ja kāds ir jūsu cookie. DAVID Malan: Jā, ja kāds ir jūsu cookie. Es domāju tiešām, daudz, piemēram, daži no jums iespējams, ir mēģinājuši pie kā klubā vai atrakciju parks, ja jūs mēģināt kaut ko piemēram, tas, lai kopētu zīmogu, lai gan atpakaļ uz citas personas puses, un tad viņš vai viņa pasniedz kā to pašu, ja tie patiešām izskatās identisks, 123456789, tad web serveris acīmredzot tikai gatavojas ticu, ka lietotājs ir jums. Un tas ir patiesi būtisks draudi jebkurā laikā jūs izmantojat sīkdatnes jo, ja kāds vienkārši Spoofs tāpēc, lai runā savu cookie, skaitļus, ko tā ir vai nu patiesi kopējot skatoties pie datora un ir, piemēram, OK. Dāvida cookie ir JJ3JIK un tā tālāk, un tad viņi pietiekami gudrs, lai zināt kā kārtot manuāli sūtīt kas cookie no pārlūka vai no Programma viņi raksta, tie varētu pilnībā ieiet mājas lapā, kā jūs. Tas nav tik grūti izlikties par kāds cits, ja mēs pārskatīt p-komplekts divi, kas ieviesa to, ko? Mērķauditorija: Kriptogrāfija. DAVID Malan: maz mazliet kriptogrāfiju. Vienkāršs kriptogrāfijas, vismaz standarta izdevums, bet Kripto tomēr. mazāk. Tātad izrādās, ja jūs šifrēt visus šīs galvenes, izmantojot kaut ko, kas jums šobrīd varētu zināt vairāk familiarly, SSL, Secure Socket Layer vai https:// URL, tad visas šīs lietas, mēs esam bijuši glancing patiesībā ir šifrēta, kas nozīmē, ka tas ir tāpat kā jūs nevar nolasīt rokas zīmogu. Tikai facebook.com var, vai google.com, vai šajā gadījumā, ierīce var izlasīju, ka rokas zīmogu. Traģiski, lai gan, un atkal, tas ir pārāk piemērots ar VDI sīkumi par vēlu, pat SSL ir trausli. Un tas tiešām nav tik grūti pat kreka šo šifrēšanu. Ne tik daudz plaisas šifrēšanu, bet tricking pārlūku uz atkodēšanu dati priekšlaicīgi. Bet atkal, mēs ķircināt jums ar to pirms ilgi. Tagad, vienkārši bail. Tas ir traģiski sava veida taisnība. Labi. Tātad, ja tas tagad atstāj mūs? Nu, pieņemsim to izdarītu. Iesim uz priekšu un veikt ātri teaser pirms mēs ņemt pārtraukumu. Un es domāju, ka mēs uzkavēties nedaudz ilgāk šodien, bet mēs ejam, lai nodoties kaut ko pavisam jaunu un seksīga, kas būs apetītes rosināšanai, lai vēl vairāk. Tātad, tas ir teaser. Tātad SQL, mēs sākām runāt par kādreiz tik īsi pēdējo reizi. Jūs tiešām saņemt rokas netīras ar dažiem to septiņu p-komplektu. Un lajs izteiksmē, ko tas SQL - S-Q-L - darīt jūsu labā? Kas tas ir? Jā. Mērķauditorija: Pieņemsim jūs varat piekļūt datiem. DAVID Malan: Jā. Tā pieņemsim jūs piekļūt datiem datu bāzē. Strukturēts Query Language. Un tas ir būtībā programmēšanas valodu. Ir pazīmes tam, ka mums nebūs pat izmantot klasē. Bet jūs varat efektīvi definētu funkciju. Viņi aicināja glabāt procedūras SQL. Bet mēs turpinām to diezgan vienkāršs un vienkārši izmantot dažas pamatdarbības piemēram, izvēloties datus, ievietojot datus, atjauninot datus un dzēst datus. Un jūs tiešām domājat, ka datu bāzes, piemēram, SQL datu bāzi, kā tikko ir Microsoft Excel. Tāpēc, ka SQL attiecas uz relāciju datu bāze, kur saistība nozīmē tikai tabulas. Rindas un kolonnas. Lai kaut ko jūs varat īstenot izklājlapu piemēram, tas, vai Google Docs, jūs varētu ievietot SQL datu bāzē atzīstot tabulu. Tagad, kā jūs faktiski var piekļūt šī informācija? Nu, ar komandu vai vaicājumi, kā šis. SELECT, INSERT, UPDATE un DELETE. Un lielākā daļa, tie ir četras vienīgās sastāvdaļas jums ir nepieciešams, lai darīt kaut ko diezgan spēcīgi jo problēma noteikti septiņi. Tagad atpakaļ dienā, jūs faktiski mijiedarbojas ar datu bāzes melnā un baltā termināla logu uz mirgo ātri, kā šis. Un datu bāzē, mēs esam darbojas Ierīce sauc par MySQL, kas ir bezmaksas un atvērtā koda datu bāzes dzinēju. Ja jūs Google un lasīt Wikipedia rakstu, jūs zināt, ka nosaukums ir mazliet pāreju uz dažām Linux versijas. Maria datu bāze ir faktiski dakša tāpēc runāt par MySQL. Long stāsts īss, Oracle nopirka MySQL. Oracle ir liels uzņēmums. Cilvēki ir noraizējies, ka tas būtu vairs paliek gluži kā atvērtā pirmkoda, tāpēc tas ir tikai kopija, MySQL, kas ir joprojām ir bezmaksas, tomēr open source, un uzstādītas Ubuntu Linux pēc noklusējuma. Bet tas ir sava veida sāpes kakla, lai iepazītos ar datubāzē šādā veidā. Tāpēc mēs iekļaut CS50 ierīces bezmaksas atvērtā koda rīku, ko sauc phpMyAdmin. Tikai sagadīšanās, ka tas ir uzrakstīts PHP. Nav būtiski nepieciešams PHP šeit. Bet tas ir tikai tīmekļa rīks, kas mēs lejupielādēt par brīvu, uzstādīti ierīce, kas ļauj mums būt grafiskā lietotāja saskarne, ar kuru izpētīt p uzstādīto septiņi datu bāzi, ar kas, lai izveidotu jaunas datu bāzes, teikt savu galīgo projektu, ja jūs gribētu patīk, un galu galā radītu dinamiskas mājas lapas, piemēram CS50 Finance kas ļauj jums vaicāt datus un atjaunināt datus dinamiski. Jūs neesat nāksies izmantot tikai vienkāršu teksta failu vai CSV. Jūs faktiski var izmantot gudru datu bāzi programma, lai jūs varētu izpildīt vairāk sarežģītas vaicājumus nekā tikai lasījumā caur visu lineāri. Tātad, piemēram, tas ir tas, ko mēs dodam jūs no kastē par septiņu p-komplektu. Tas ir galds ar acīmredzot vismaz trīs kolonnas, viens no kuriem ir Lietotājs, viens no kuriem ir hash, un no kurām otra ir ID. Bet interesanta lieta, un tikai ķircināt, viena doma šeit, lietotājvārds droši vien jau ir unikāls, labi? Es domāju, lielākā daļa jebkuru mājas lapā, ja jums ir lietotājvārds, tur nevar būt divi Caesars. Tur nevar būt divas Malans. Tur nevar būt divas jharvards. Tās unikāls. Pretējā gadījumā viņi nezina, kas jharvard tas patiesībā ir. Tātad, kādi varētu būt motivācija arī ar trešo kolonnu pa kreisi tur sauc ID, kas izskatās numurs, kas ir līdzīgi unikāls? Tā jūtas mazliet lieks man pēc pirmā acu uzmetiena. Kāpēc tas varētu būt pārliecinoši, lai būtu ne tikai unikālās lietotājvārdi, bet arī unikāls numurs? Mērķauditorija: Tie varētu būt pašu paroli. DAVID Malan: Cilvēki varētu būt pati parole, protams. Tas varētu absolūti notikt. Bet, ja tie ir šo unikālo lietotājvārdu, es gribētu apgalvot, ka tas nav īsti jautājums, jo, ja tie ierakstiet to lietotājvārdu, man ir nepieciešama tikai, lai pārbaudītu to paroli, to hash to. Kāpēc vēl? Mērķauditorija: Ātrāka meklēšana. DAVID Malan: Ātrāka meklēšana. Kāpēc? Mērķauditorija: ID ir tikai viens. DAVID Malan: ID ir tikai viens raksturu, vai precīzāk, tas ir skaitlis, tāpēc tas ir iespējams, 32 bitu vai kaut kas tamlīdzīgs. Tā kā lietotājvārdu, acīmredzot Jason Hirschhorn tur augšā ir sava veida smieklīgi garš, un tas notiek ņem mani daudz vairāk laika, lai string salīdzināt H-I-R-S-C-H-H-O-R-N, un varbūt / 0 vai kaut kā tā, lai meklēt Džeisonu, nevis tikai sakot, man lietotāja numuru divi. Tas ir 32 biti. Tas ir viens INT, ka jums ir salīdzināt. Un tiešām, tas ir tieši tāpēc datu bāzes mēdz piešķirt unikālu ID, lai rindas tiem. Tagad Kādas citas datu tipi ir tur turklāt INT un acīmredzot stīgas, kā šis? Nu, ir vairāk pareizi, SQL datu bāzēm, piemēram, MySQL, ir Char laukus. Un char nedaudz maldinoši nav viens char. CHAR lauks MySQL datu bāzē vienu vai vairākas rakstzīmes, bet tas ir fiksēta rakstzīmju skaitu. Tātad, piemēram, ja es iet pār phpMyAdmin, jo jums var būt jau, vai drīz būs problēma noteikti septiņi, un es iet manu datu bāzi, un tikai jautri, pieņemsim izveidot jaunu tabulu, ko sauc par pārbaudīt tikai ar diviem kolonnām. Es pēc tam noklikšķiniet uz Aiziet. Un tas kļūs diezgan pazīstami, jo, kā jūs lāpīt ap savu. Šeit es varētu rakstīt ID, lai radītu jauna tabula tipa INT. Bet šeit es varētu ierakstīt lietotājvārdu atjaunotu minēto agrāko tabulu. Un paziņojums man ir visai ķekars veidu, no kuriem izvēlēties. Un tas arī ir iemesls, kāpēc phpMyAdmin ir sava veida jauki. Tas ir sava veida sevis mācīšanas, ka jūs var vienkārši sava veida punkts un noklikšķiniet, un apskatīt nolaižamās izvēlnes, un secināt no ka tas, ko pilnvaras SQL dod jums. Un tiešām, ja es izvēlos CHAR, es pēc tam ir jānorāda garumu, vai kā daudz vērtības, cik daudzi simboli. Tāpēc ļoti bieži vērtības ir lietas, piemēram, 255, bet tas ir diezgan garš. Parasti ir astoņām lietotājvārdu. Bet tas ir pārāk mazs šajās dienās. Tātad šis ir dizaina lēmums. Vai tas ir 8 rakstzīmes max, 32, 255, 1000? Tas tiešām atkarīgs no jums. Bet CHAR lauks ir noteikts skaits. Tāpēc izvēlēties pārāk maz, un jūs esat veida ieskrūvē, ja jūs vēlaties garāku lietotājvārdu. Izvēlēties pārāk daudz, un to, kas ir negatīvie? Mērķauditorija: [nedzirdama]. DAVID Malan: tas ir izšķērdīgs. Tāpat kā C, ja jums ir lielāks rieciens atmiņas, nekā jums nepieciešams, jūs esat tikai izšķērdēt laiku un izšķērdēt telpā. Tā kā alternatīvu, pastāv VARCHAR, kas atrisina šo problēmu, apstrādājot garumu nevis kā fiksētu garumu, bet kā maksimālo garumu un izmantojot maināmu skaitu simboliem, kas pēc tam mēdz izmantot tikai tik daudz simboli, kā jūs tiešām ir nepieciešams. Tas izklausās perfekta. Kāpēc nav mēs atbrīvoties no CHAR datu tipu, tad? Kas varētu būt negatīvie izmantojot VARCHARs, kas izklausās kā tas ir jauki win? Yeah? Mērķauditorija: [nedzirdama]. DAVID Malan: Labi, labi. Tātad, ja visi dati ir tāds pats garumu, kas ir problēma? Mērķauditorija: Tāpēc, ka jūs izšķērdēt dati pēc darot tos visus. DAVID Malan: Tātad, ja visi jūsu dati ir vienāda garuma, lai gan, es teiktu , kas norāda maksimālo garumu gada VARCHAR neatšķiras no nosakot fiksētu garumu par CHAR ja Jūs zināt, ka vairāki iepriekš. Bet tur ir tiešām, un es ņemšu veida izraksts no šo atbildi realitāti ka tur ir vēl max, kas varētu kaitinošas, jo īpaši, ja jūs sastopas personas vārdu, kas ir neparasti ilgi, ka jums nav paredzēt. Un tas ir arī nedaudz mazāk efektīva faktiski meklēt VARCHARs kā nevis meklē simboli, it īpaši gariem galdiem, kas ir daudz, un daudz datu. Tātad arī šeit, tematiskā atkal nav acīmredzama izvēle. Tik vienkārši, lai dotu jums sajūtu citi datu tipi, kas varētu interesēt nu p-noteikti septiņi vai nākotne, tur ir INT. Ir BIGINT, kas ir kā ilgi ilgi. Tas mēdz būt 64 bitiem. Ir Decimal, ko jūs redzēsiet problēma komplekts, kas ir daudz tīrītājs atbilde uz problēmām, kas mums saskārās ar pludiņu un peldošo punktu neprecizitātes. Un tad tur ir DATETIME. Tur ir burtiski datu tips, kas ir izskatās gadu, mēnesi, dienu, un stunda, minūte un sekunde. Bet SQL datu bāzēm ir arī lietas, ko mēs sauksim indeksu. Un indekss ir kaut kas jums norādiet veidojot tabulu veikt meklēšanu un citas darbības efektīvāku. Proti, tur ir kaut kas ko sauc PRIMARY indeksu, kas jums varētu deklarē šādi. Mēs to darījām, lai jūs ar lietotāju tabula mēs dodam jums. Bet paziņojums, ja es būtu manuāli atjaunošanās lietotāju tabula šeit sniedzot tā nosaukums lietotājiem. Es jau norādīts ID. Esmu norādījis INT. Esmu norādījis lietotājvārdu ar maksimāli 32 rakstzīmes. Bet, ja mēs pastāvīgi ritināšanu šajā samērā plats logs, paziņojums tur ķekars citas lietas, es varu paredzēt. Viens, es varu norādīt atribūtus piemēram, jūs zināt, ko tas INT būtu parakstīts. Es negribu negatīvi skaitļi, tāpēc pieņemsim, būtu parakstīts. Null nav nozīmes šeit, jo Es vēlos ikvienam lietotājam ir unikāls numurs. Es nevēlos, lai to null. Bet tas ir interesanti. Es varu norādīt, ka ID ir vai nu primārā atslēga Šīs datu bāzes, vai arī tas ir unikālu, vai arī tas ir indeksēti vai pilnu tekstu. Tātad šodienas vajadzībām, garš stāsts Īsi sakot, galvenais veids, ka tas būt gan konceptuāli un tehniski lauks, ko mēs izmantojam, lai unikāli identificētu lietotājus. Tātad, kad mēs skatāmies uz augšu lietotājiem, tas ir sava veida ar solījumu meklēt tos galvenokārt kas unikāls identifikators. Un datu bāze nodrošina to, ka, ja jums ir lietotāja numuru 3, jūs nevarat fiziski ievietot citu lietotāju ar to pašu numuru 3. Datubāzē būs tikai atkritumu , lai saglabātu izmaiņas. Kas ir laba lieta, jo jūs varat pasargāt sevi no sevis. pats Alternatīvi, lietotājvārdu. Tātad otrajā rindā, atgādināt, ir lietotājvārds jomā. Tātad otrajā rindā šeit ir lietotājvārds, kā mēs to darījām uz tālu pa kreisi tur. Tātad, ko vēl varētu es vēlos norādīt? Es neesmu atļauts, saskaņā ar SQL, norādīt divas primārās atslēgas. Jūs varat norādīt kopīgu atslēgu, kur jūs apskatīt gan laukos, bet tās nevar individuāli ir primārās atslēgas. Tātad tas ir ārpus jautājuma. Tātad, ko es varētu vēlēties, lai izvēlētos? Nu, UNIQUE ir līdzīgs garā primārā atslēga, ja jūs norādāt šo lauks ir unikāls, bet tas ir nebūs viens Es izmantoju visu laiku. Un mēs neesam gatavojas izmantot šo vienu visu laiks kāda iemesla dēļ atkal? Tas ir lēnāks, iespējams, ja tas ir garš lietotājvārds. Tas ir tikai laika izšķiešana. INDEX, tikmēr, ir precizēts, ka tā ir nebūs unikāls, bet es gribētu strādāt savu burvju zem kapuce, lai padarītu to ātrāku man meklēt šajā jomā. Tāpēc tas, iespējams, nav būtisks. Lietotājvārdu, es gribētu apgalvot, ka UNIQUE ir laba atbilde. Bet pieņemsim, ka mēs, kas lietotājiem vairāk interesanti nekā tikai lietotājvārdus, hashes, un identifikācijas numuri. Ko darīt, ja mēs deva cilvēkiem pilnu vārdu? Ko darīt, ja mēs viņiem deva adreses un citi dati par viņiem? Nu, ja jūs norādāt, ka kolonna datu bāze ir indeksēti, tas nozīmē, ka MySQL vai Oracle, vai kāds datu bāzes jūs izmantojat, vajadzētu strādāt tās burvju un izmantot kādu no iedomātā datu struktūra, piemēram, koka, vai Trie, vai arī hash tabulu, vai kaut ko, lai garantētu ka tad, kad jūs meklēt informāciju, izmantojot izvēlēties šajā konkrētajā jomā - tāpat kā man parādīt visiem, ka dzīvo uz Oxford Street. Vaicājumu, piemēram, ka. Ja esat norādījis iepriekš, ka Jūs vēlaties indeksu šajā jomā, meklējumi būs daudz, daudz ātrāk. Ja jums nav jānorāda indeksu, labākais jūs varat darīt, ir lineāra meklēšanu, ja tas nav sakārtots. Bet, ja jūs norādāt indeksu, smart cilvēki, kuri izgatavoti datubāzi - cilvēki kā jūs, kas tagad zina kokus un cenšas un hash galdi - automātiski izveidot šādu datu struktūra RAM, lai pārliecinātos, ka šie meklējumi ir daudz ātrāk. Fulltext tikmēr ir līdzīga pēc būtības, bet ļauj jums darīt zvaigznīti meklējumi, piemēram, parādiet man visiem, ka dzīvo uz ielas, kas sākas ar burtu O kāda iemesla dēļ. Jūs varat darīt aizstājējzīmes meklēšanu piemēram, ka. Vai vairāk pārliecinoši lietām, piemēram, liecina, man visi, kas ir vārds - parādiet man ikvienu, kura vārds sākas ar konkrētu burtu. Jūs varat meklēt atslēgvārdus šādā veidā. Labi. Tātad, dizaina iespējas tur iespējams. Ir citi, kas es ņemšu vilnis savu roku pie. Izrādās, ka jūs varat būt dažādi glabāšanas dzinējiem. Un tas ir vairāk mistisks, nekā mums vajag protams, par problēmu noteikti septiņi. Pēc noklusējuma, jūs guys izmantojat kaut ko sauc InnoDB. Jūs redzēsiet nepieminēja šo kaut kur phpMyAdmin saskarne visticamāk. Bet zinu, ka ir arī citi dizains lēmumi, kas ir potenciāls procenti nāk galīgo projektu, ja jūs kaut ko darīt tīmekļa. Bet pieņemsim to izdarītu. Iesim uz priekšu un nodot to tālāk ekrāns kā teaser par stāstu iesaistot jums, kaimiņiem, un glāzi piena. Paņemsim divas minūti vai arī tā pauze šeit. Un, ja jūs varat stick apkārt, pieņemsim nāk atpakaļ, izskatās nedaudz vairāk par SQL, un tad mazliet JavaScript ar p-noteikti astoņi prātā. Labi. Tātad, pieņemsim nokļūt jūs domājat par stūra gadījums, kas var ļoti viegli rasties kontekstā, izmantojot datu bāzi, vai godīgi sakot, pat izmantojot reālās pasaules lietas piemēram, bankomātu, lai saņemtu naudu. Tātad, šeit ir ledusskapis. Pieņemsim, ka jūs esat ieguvuši vienu pārāk Jūsu kopmītnes vai jūsu māja. Un tev viens kaimiņiem, un abi Jums tiešām patīk pienu piemēram. Tātad jūs nākt mājās no klases vienu dienu. Viņš vai viņa vēl nav atpakaļ. Atverot ledusskapi. Jūs tiešām vēlaties lielu glāzi piena. Nav pienu. Tātad, ko jūs darīt? Aizverot ledusskapis. Jūs greifers atslēgas. Jūs iet laukumā. Un jums rindā pie CVS tiem, pašapkalpošanās kases lietas, kas vienmēr nepieciešams ilgāks laiks, nekā patiesībā ar kasieri. Tik un tā. Tātad, tikmēr, dot dot dot, savu kaimiņiem nāk mājās, un viņš vai viņa līdzīgi ir ilgas kādu pienu. Lai viņš vai viņa atver ledusskapi, izskatās iekšā, un oh, damn. Nē pienu. Lai viņš vai viņa galvu, kas, notiek, lai iet pārējām CVS, kas ir tikai bloķēt prom kādu iemeslu dēļ, un viņš vai viņa izpaužas rindā, lai nopirktu pienu. Tajā pašā laikā, jūs nākt mājās, viņš vai viņa nāk mājās, un kādi darīt Jūs galu galā ir? Divreiz tik daudz piena. Bet jums nav patiešām patīk pienu, ka daudz. Tātad, tagad jums ir tik daudz piena, ka tagad viens no tiem ir tikai gatavojas iet skābs galu galā. Tāpēc tas ir ļoti slikti problēma. Tiesības? Tātad, kas ir noticis? Tātad būtībā, tas ir sava veida par smieklīgu piemēru. Bet zem motora pārsega, ko mēs esam bija notiek šeit ir jums abiem pārbaudīts stāvokli kādu gabals atmiņa, ledusskapis. Jums abiem pārbauda valsts dažu mainīgo. Jūs abi izdarīja secinājumu ka jūs pēc tam darbojās. Bet, diemžēl, kamēr jūsu kaimiņiem bija veikalā, valsts, kas mainīgais mainījies, viņš atgriezās un tagad grib, lai mainītu valsts, bet tas jau ir mainīts par viņa vai viņas. Un, protams, viņš vai viņa nebūtu devusies uz veikalu, ja viņi zināja ka jums jau bija ceļā. Tātad reālajā pasaulē, kā jūs varētu izvairītos no šīs problēmas, pieņemot, ka jums ir ledusskapis, jums ir kaimiņiem, un jūs tiešām vēlaties pienu? Mērķauditorija: Komunikācija. DAVID Malan: Komunikācija. Labi. Bet kā jūs varētu sazināties? Mērķauditorija: Atstājiet piezīmi. DAVID Malan: Atstājiet piezīmi, labi? Vienmēr atstājiet piezīmi, lai faniem parādīt. Labi, tāpēc vienmēr atstāt piezīmi, vai likts patiešām patīk piekaramo atslēgu vai kaut ko uz ledusskapja, kas saglabā jūsu kaimiņiem no pārbaudīt stāvokli ka mainīgais. Tagad, kāpēc, iespējams, tas ir piederīgs Problēma noteikti septiņi, vai uz bankomātiem. Nu, iedomājieties pasauli bankomāta, kur Jūs varētu aiziet līdz ATM mašīna šeit, un vēl ATM šeit. Un tas notiek diezgan bieži. Un pieņemsim, ka jums bija divas ATM kartes, kas ir iespējams iegūt. Un jūs piesakāties gan mašīnas efektīvi vienlaicīgi, cerams bet neviens meklē. Un tad jūs ierakstiet PIN aptuveni vienlaicīgi. Un tad jūs līdzsvaru vaicājumu redzēt, cik daudz naudas jums ir. Un pieņemsim, ka jums ir 100 $ palicis jūsu kontā. Tātad būtībā vienlaicīgi, jūs saka viens, nulle, nulle, ievadiet. Un jūs, cerams, saņemt atpakaļ naudu. Bet cik daudz naudas jūs varētu saņemt atpakaļ? Tagad datori beigās dienā, it īpaši, ja viņi runā ar serveri, ne vienmēr darīt lietas tādā kārtībā, kas ir sagaidāms. Tātad, pieņemsim, ka tas, kas notiek, jo neatkarīgi no tīkla ātruma jautājumiem tur ir vai CPU jautājumiem ir, vai kaut kas līdzīgs, ka, pieņemsim, ka Pirmais ATM pārbauda līdzsvaru un redz, ak, šī persona ir $ 100. Bet tad kļūst apjucis, jo varbūt backup notiek, un tāpēc ir palēninot. Vai varbūt vienlaikus pārbaudot, tīklu savienojums ieguva nedaudz lēnāk, jo tas vienkārši notiek. Viņi fiziskās ierīces. Tātad tikmēr, otrais ATM ir lūdzot to pašu jautājumu. Cik daudz naudas tas Dāvids ir? 100 $ ir atbilde. Bet tāpēc, ka pirmais bankomāts vēl nav nosūtīts ziņojums atņemt 100 $, gan Bankomāti ir pārbaudīti bankas glabātuves redzot tur ir $ 100 tur, un tagad abas mašīnas potenciāli ir būs izspļaut atbildi. Tagad tas ir liels jums kaut kādā ziņā ja tas, ko bankas dara, galu galā ir mainīt summu līdz mīnus 100 līdz Nosakot mainīgais ir vienāds ar savu bankas konts, kas vienāds ar 0, pretstatā darīt mīnus 100. Tagad sliktākajā gadījumā par banku - vai labāko banku, tikmēr, viņi jums $ 200, un jūsu bankas kontā tagad rāda negatīvu $ 100, kas patiešām nav labumu jums vispār. Bet ir tas, ka šis skrējiens nosacījums divas roommates kļūst piens vai diviem bankomātiem cenšas iegūt naudu un mainīt stāvokli velvēt vienlaicīgi pastāv jebkuru reizi, jums ir datu bāze. Tagad problēma noteikti septiņi, šis jautājums rodas tādā nozīmē, ka, ja jūs pērkat daļa Facebook krājumu, un tad Piemēram, jūs iegādāties otru daļu Facebook akciju, jums ir nepieciešams veikt lēmums, kā programmētājs. Lai izlemtu, kā atjaunināt datu bāzes, izredzes ir jūs gatavojas ir viena rinda šo krājumu, un tas ir viens veids, kā to īstenot. Un jūs gatavojas, lai būtu viena daļa FB, kas ir to akciju biržas simbols Šim lietotājvārdu vai lietotāju ID, unikāls identifikators. Bet pats stāsts var notikt šeit. Ja jūs izvēlaties SQL, kā jūs redzēsiet jo problēma noteikti septiņi, kad jūs redzat, ak, Deivids ir viena daļa no Facebook noliktavā. Ļaujiet man tagad mainīt, ir divas daļas, jo viņš vēlas pirkt Otrā daļa. Bet pieņemsim, ka Dāvids faktiski bija divi pārlūkprogrammas logus atvērt, vai pieņemsim, ka tas ir kopīgs konts ar abu laulāto, un viņi abi mēģina veikt pati darbība, tur, too, pastāv potenciāls lēmumam būtu veic, pamatojoties uz iepriekšējā valsts pasaulē - kontā ir viena daļa - un abi cilvēki, vai abiem serveriem, tagad mēģināt teikt pieauguma to divās daļās. Bet šajā gadījumā, iespējams, ir jāmaksā man nauda gan akcijām, bet pieaudzis tikai šo vienu reizi. Tātad īsumā, pamatproblēma Šeit, tāpat kā joks par aizbraukšanu ņemiet vērā, vai liekot atslēga uz to, ir ja divi cilvēki, vai divas tēmas - domāju, ka atpakaļ uz nulles - var pārbaudīt stāvokli dažu mainīgo un tad mēģināt mainīt šo mainīgo, bet šīs divas lietas nav notikt Tajā pašā laikā, bet var iegūt pārtraukta citas lietas notiek, dati var nokļūt ļoti dīvaini stāvoklī. Un jūs varat izmantot, vai jūs varat ciest izpratnē naudas piemērs. Tātad problēma noteikti septiņi, mēs jums šo vienu rindiņu kodu, kas ilgs stāsts īss, atrisina šo problēma MySQL. Tas ir ļoti garš norādījums, ka nav pat ietilptu vienā rindā uz screen šeit nodrošina, ka jūsu darbība ir tas, ko sauc par atomu. Tas viss notiek uzreiz, vai tā nenotiek vispār. Šis ļoti ilgi frāze nevar get pārtraukta daļēji. Un ko tā dara, ir burtiski ko tā saka. Ievietot kādu tabulā pēc trīs lauki šīs īpašās vērtības, bet dublikātu atslēgas, nedariet ieliktni. Do atjauninājumu. Tātad tas ir, piemēram, darot SELECT un INSERT tā sakot, tajā pašā laikā. Un kas ir galvenais, tas ir iespējams, tiek minēts šeit? Izrādās, un jūs redzēsiet to Problēma noteikti SEVEN ir spec, jo mēs esam deklarēti, lai būtu unikāla atslēga par šo konkrēto galda tā, ka Jūs nevarat būt vairākas rindas tajā pašā lietotājs ar pats penss krājumu simbols - šajā piemērā šeit, DVN.V ir dumjš penss krājumu, ka mēs attiecas uz spec. Jo mēs esam atzinusi, ka tā ir unikāls, ko tas nozīmē, ka, ja jūs mēģināt ievietot dublikātu rindu, tu esi vietā, gatavojas atjaunināt bez kāds cits, kam ir iespēja mainīt valsts pasaulē, vai nu. Tātad īsi sakot, tas nodrošina lietas ir atomu. Plašākā nozīmē, lai gan, datu bāzes piemēram, MySQL - un jums nav nepieciešams šo funkciju p-noteikti septiņi, bet paturēt to prātā nākotne - atbalstīt to, ko sauc par darījumiem, kur jūs varat teikt START DARĪJUMS burtiski. Tad jūs varat izpildīt divas SQL. Un SQL, kā jūs redzēsiet P-komplekts septiņi, izskatās nedaudz kaut kas līdzīgs šim. Atjaunināt tabulas sauc kontu. Uzstādīt līdzsvaru kolonnu vienāds neatkarīgi bilance kolonna pašlaik ir mīnus 1000, ja skaitlis, konta numurs, piemēram, lietotāja ID, ir vienāds ar 2, un pēc tam atjaunināt konts dot dot dot. Tāpēc lajs izteiksmē, ko darīt, šie divi jautājumus, šķiet, ir dara reālās pasaules izjūta banku? Mērķauditorija: Došanās ietaupījumus. DAVID Malan: Tieši tā. Pārceļot līdzekļus no viena konta uz otru. Un tas ir vēl viens piemērs, kur jūs patiešām vēlamies šīs divas lietas, kas notiek vai nenotiek. Jūs nevēlaties kaut ko saņemt no tām vidū un, iespējams, izjaukt math, vai izjaukt, cik daudz naudas jums ir, vai cik daudz nauda banka. Tātad, kas ir patiešām jauka par darījumiem MySQL ir tas, ka, un datubāzes plašākā nozīmē, ka viņi un gudri cilvēki, kas esmu īstenoti šie līdzekļi izdomāt, kā padarīt pārliecinieties, ka abas šīs lietas notiek vai nav vispār. Un, ja jūs patiešām cenšas darīt mājas lapu, kas ir izmantots, ko cilvēki par Campus, cilvēki reālajā pasaulē, darot kaut starta nozīmē, šīs ir veidi dizains lēmumus, kas kļuvis kādreiz tik svarīgi. Pretējā gadījumā jūs sākat zaudēt datus, zaudē lietotājiem, vai sliktākajā gadījumā, kā mēs esam redzējuši šeit, iespējams, zaudēt naudu. Tātad vēlreiz, vairāk par to problēmu noteikts seven, kā arī, iespējams, dažiem no jums gala projektu. Tā ļauj mainīt šo priekšstatu, mums bija pirms brīža tikai vēl viens veids. Tāpēc ļaujiet man patiešām redzēt, ja es varu - Nē, tas ir pagājis. Tur tas ir. Tātad, tas ir, ja mēs atstājām pēdējo reizi. Un izrādās, mēs ejam mētāt vēl viena lieta, uz sajauc šeit - valoda sauc JavaScript. Tāpēc JavaScript faktiski der šajā gabalā - un man nebija gluži atstāt pietiekami daudz vietas, tāpēc tas nav tagad mērogā. OK, tas ir patiešām nožēlojami. Labi, tā ka ir JavaScript. Labi. Es esmu patiešām dara to lāča. Labi. Tāpēc JavaScript ir cita programmēšanas valodu, un mūsu pēdējā, ja tas palīdz pārliecināt, ka tur nav daudz vairāk no ugunsdzēsības hidrantu šeit. Tāpēc JavaScript ir interpretējams valoda, kas nozīmē, jums nav sastādīt to nuļļu un vieninieku. Jūs vienkārši palaist to. Bet kas ir būtiski atšķiras ar JavaScript parasti ir tā, ka jums nav palaist to uz jūsu tīmekļa servera. Tā nesaņem palaist ierīce per se. Drīzāk, tas izpaužas lejupielādēt lietotājs izmantojot HTTP savā pārlūkprogrammā - Chrome, Safari, Internet Explorer, Firefox, vienalga - un tas ir pārlūks, kas izpilda šo īpaši programmēšanas valodu. Tātad, lai būtu skaidrs, PHP līdz šim ir bijis izpildīts vai nu komandrindas Mūsu melnā un baltā krāsā logu, uz servera piemēram, iekārtas, datoru patīk ierīci, vai tas ir bijis izpildīts ar tīmekļa serveri darbojas uz datora. Bet tēma ir tāda, ka PHP līdz šim ir izpildīts servera pusē, tāpēc lietotāja un lietotāja pārlūks nekad redz līnijas PHP kodu. Patiesībā, ja jūs kādreiz atvērt pārlūkprogrammu jūsu mājas lapā vai citu, un jūs faktiski redzēt PHP kodu savā logā, kāds ir ieskrūvē augšu. Tāpēc, ka tas nav domāts, lai būtu nosūtīts uz pārlūku tieši. Tas ir jāpilda, un pagriezās par kaut ko, piemēram, HTML. Bet JavaScript būtībā pretējo. Tas ir domāts, lai būtu palaist parasti iekšpusē no lietotāja pārlūka logā. Un kāda veida tīmekļa vietnes izmanto JavaScript tad šajās dienās? Tāpat kā burtiski katras tautas mājas lapā. Katru mājas lapā, ka jūs guys, iespējams, izmantot ikdienā izmantot JavaScript Vienkāršākais un pat sexiest funkcijas. Tātad, kaut kas līdzīgs Facebook Chat, ja jūs izmantojat to. Kā tas, kas faktiski strādā? Nu līdz šim, visi sīkumi mēs esam darīts ar HTML un PHP pieņem, ka Jūs uzvilkt URL, un jūs hit Enter, un jūs redzat kādu HTML saturu. Un jūs noklikšķiniet uz saites, kas maina URL, maina lapu un pildījumiem kādu jaunu saturu. Noklikšķiniet uz citu URL, vai iesniegt veidlapu, get whisked uz citu lapu un jūs redzat kādu jaunu saturu. Bet, izmantojot kaut ko līdzīgu Facebook Chat, vai Gchat, vai Google Maps, reti tas visu lapu atsvaidzināt tāds, ka redzat balts ekrāns uz brīdi un Pēc tam jaunu saturu. Drīzāk, mājas lapas šodien ir dinamiski kļūst atjaunināts atkal un atkal un atkal visu veida no aizkulisēs. Un izrādās, ka tad, kad jūs iet uz kaut ko, piemēram, Facebook, vai Gchat, vai Gmail, un lapas atjauninājumus automātiski, bez pārkraušanas viss ekrāns, kas ir noticis, ir tas, ka Jūsu pārlūkprogrammā ir izgatavots veida slepeni papildu HTTP pieprasījumus - nevis uz visām mājas lapas, bet tikai maz gabalos datu, piemēram, tērzēšanas ziņu, ka jūsu draugs tikko Tevi, vai statusa atjauninājumu, kas kāds tikko nosūtīju jums, vai čivināt ka kāds tikko nosūtīju. Tas ir tikai padarot maz pieprasījumus dati, un tad, izmantojot JavaScript, šis programmēšanas valodu, lai mainītu to, ko mājas lapa izskatās bez serveris palīdzot, bez servera radot šo HTML. Tātad īsumā, JavaScript var tikt izmantotas, tad ne tikai ielādēt jaunus datus no servera bez pārkraušanas visu lapā vai iesniedzot veidlapu. To var arī izmantot, lai mainītu ts DOM - dokumenta objekta modelis - kas ir tikai iedomātā veids sakot koku HTML ka mēs redzējām pēdējo reizi. Tātad, lai nomierinātu JavaScript ir sintaktiski tik līdzīgs C, kā arī. Nav galvenā funkcija. Jūs vienkārši sākt rakstīt kodu un tas saņems izpildīts, vai interpretē pareizi. Nosacījumi izskatīsies šādi. Nav atšķirīga no C vai PHP par šo jautājumu. Būla izteiksmes vai-ed kopā izskatās šādi. Anded kopā izskatās šādi. Slēdži izskatīsies šādi. Par cilpas izskatīsies šādi. Kaut arī cilpas izskatīsies šādi. Darīt, kamēr cilpas izskatīsies šādi. Tas ir jauns. Tātad JavaScript ir nevis foreach būvēt per se, bet būvēt par mainīgo i ar masīva, un es šajā lieta kļūst indeksa vērtība. Tātad, tas ir nedaudz atšķiras no foreach, gan jaunas versijas JavaScript nāk no visu laiku, tāpēc pat tie valoda funkcijas attīstās. Un kā malā, JavaScript šajās dienās var izmantot arī uz serveri, tāpat kā PHP, izmantojot sistēmu, ko sauc Node.js. Viens no CS50 ir TFS, Kevin, ir izraisījusi seminārs par Node.js, kas ir pieejami cs50.net/seminars. Tātad, ja jūs esat ieinteresēti, zinu, ka tu var izmantot šo uz servera pusē, kā labi, bet tas ir diezgan nesena tendence, bet jaudīgu tajā. Tas ir nedaudz atšķirīgs. Tas ir masīvs JavaScript. Un ko streiki jūs kā atšķiras pret C vai PHP? Ir daži ātri stāsti mēs varam pateikt šeit. Kas trūkst pret PHP? Mērķauditorija: [nedzirdama]. DAVID Malan: Jā? Atvainojiet, vēlreiz saku? Mērķauditorija: Nav deklarējot tipa mainīgais. DAVID Malan: Mēs nedeklarējot tipa mainīgais. Tātad faktiski ir diezgan piemēram, PHP, mēs neesam norādot veidus šim mainīgajam. Drīzāk, mēs esam vairāk vispārīgi sakot VaR mainīgo. Mums nav PHP radītos traucējumus dolāra zīmi, kas savukārt nogurdinošs veids, tas padara vairāk skaidrs, ka kaut kas ir mainīgs. Tā kā šeit, mēs esam sava veida atpakaļ C pieeju, tikai zvanot mainīgo ar nosaukumu mēs vēlamies uz to, tāpat numuriem. Un arī, piemēram, PHP, mēs esam kvadrātveida kronšteini vērtībām iekšā šajā masīvā. Tātad mainīgie JavaScript arī varētu izskatīties šādi. Paziņojums te ir virkne sauc s, bet tāpat mēs esam nav norādīts ka tas ir virkne. Te gan ir līdzeklis, kas nav pastāv tieši tādā pašā veidā, PHP, bet mazliet līdzīgi. Tas ir objekts JavaScript. Un objekti ir sava veida Šveices armijas Nazis datu struktūras, kas jums tos var izmantot, lai jebkādu skaitu lietas. Lūk, piemēram, mēs esam paziņojot mainīgo sauc cenas. Veids šim mainīgajam ir objekts. Jūs varat domāt par to kā C struct kas ir atslēgas un vērtības. Simbols ir galvenais. FB ir vērtība, acīmredzot akciju simbolu. Komats. Cena ir vēl viens svarīgs, un tā vērtība ir acīmredzot peldošā punktu, vai numurs, plašāk JavaScript, no 49.26 $. Tātad, PHP nav - mēs neesam redzējuši PHP objektos diezgan kā šis, bet mēs redzam analogo, , kas bija kas? Mērķauditorija: [nedzirdama]. DAVID Malan: Asociatīvās bloki. Tātad, tā kā PHP ir asociatīvas bloki kura sintakse ir kādreiz nedaudz, lai dažādi - mēs redzējām kvadrātiekavas. Mēs redzējām dīvaini bultiņām simboliem. JavaScript ir objektus, bet tas ir galvenokārt semantiskā atšķirība, un atšķirīgs sinonīms tagad. Tomēr, kā malā, PHP arī ir objektu tādā veidā, ka Java un citu valodām ir objekti objektorientētā programmēšana. Bet mēs izmantosim šos vienkārši datu tipu, lai tagad. Objekti un asociatīvas bloki. Tas varētu darīt to nedaudz vairāk skaidrs. Lūk, kāpēc objekts ir noderīga. Ja vēlaties, lai paziņot students, piemēram Zamyla, mēs faktiski var rezumēju tāpēc runāt iekšpusi, ka objektu, izmantojot cirtaini iekavās tāpat kā Pirms visu ķekars atslēgu un vērtības šeit. Mums ir ID, māja, un nosaukumu, lai Zamyla, kam seko semikolu kā parasti beigās. Down šeit, tas ir nedaudz atšķirīgs, bet arī ļoti spēcīga šajās dienās. Šeit ir masīvs, un es zinu, ka, jo tur kvadrātiekavas augšu top un kvadrātiekavas apakšā. Un tas ir masīvs, kādi dati ierakstiet acīmredzot JavaScript? Tas ir masīvs izskatās piemēram, trīs objekti. Un es zinu, tas ir tikai objekts jo cirtaini lencēm. Un paziņojums tur ir atvērts cirtaini lencēm, daži sīkumi, netālu cirtaini lencēm, komats, tad dažas vairāk, komats, un tad dažas vairāk. Tātad tas ir trīs argumenti atdalīti ar divām komatiem. Tātad tas ir masīvs no trim objektiem. Un katrs no tiem objektiem šķiet students vai darbinieks dažu veida, katra ar ID, māju, un nosaukumu. Bet es esmu sauc šo kaut sauc JSON - JavaScript Object notāciju. Un tas ir datu formāts, kas faktiski ir tik ļoti populārs, un modē šajās dienās, ka, ja jūs rakstīt programma, kas izmanto Facebook API, Twitter API, tiešām gandrīz kāds API tur šajās dienās, tostarp dažas CS50 pašas, Datu jūs saņemsiet atpakaļ nav vecās skolas CSV formātā. Jo atsaukšanu ka CSV ir super vienkārši. Tas ir tikai kolonnas atdalītas ar komatiem. JSON datus sniedz jums vairāk metadatus. Tā saista atslēgu ar katru vērtību, lai tie nav tikai pieņemt, ka 0. kolonna ir viena vērtība, kolonna viens ir vēl viena, divu kolonnu ir cits. Viss ir JSON objekts šeit ir sava self-apraksta, jo katrs viens no nosaukumiem, šajā failā ir burtiski nosaukt tā priekšā, kā citēts virkne. Tātad, pieņemsim to apskatīt Pāris piemēru šeit. Ļaujiet man iet uz ierīces. Un ļaujiet man iedziļināties mūsu vhost direktoriju uz sabiedrību. Un ļaujiet man iedziļināties JavaScript katalogs. Un iesim uz priekšu un atvērt dom-0.html, kur DOM tikai nozīmē, dokumenta objekta modelis. Tas ir koks sīkumi, uz kuru Es minēju iepriekš. Un ļaujiet man piedāvāt sekojošo. Šeit ir mājas lapa, kura ķermenis ir diezgan vienkāršs. Tātad, noteikti šeit apakšā, paziņojums Man ir forma. Mēs esam redzējuši, kas pirms tam. Tas ir divas ieejas, no kuriem viens ir ID nosaukuma, no kuriem viens ir veida pakļauties, un pirmais viens ir veids ir teksts. Tāpēc tas patiesībā izklausās diezgan vienkārši. Iesim šeit. Iesim atpakaļ uz šo lapu šeit. Iesim uz localhost, un iedziļināties Mūsu JavaScript direktoriju, un doties uz dom-0, un šeit mēs esam šo veidlapu. Tātad, tas ir acīmredzami visas šīs lapas nav. Tā ir nosaukuma lauku ar Iesniegt pogu. Bet es neesmu gatavojas izmantot PHP šeit. Es darīšu visu klienta pusē tā sakot JavaScript šādi. Ievērojiet, ka es patiešām esmu devis nosaukumu jomā, šo ieguldījumu unikāla identifikatoru, kas faktiski ietaupīt man kādu laiku pēc brīža. Un paziņojums, es esmu ieviesta vēl tag galvā manu mājas lapā,  tag. Tāpēc tas ir šajā ziņā, ka JavaScript ir klienta puses programmēšanas valoda. Šajā gadījumā, tāpat kā CSS, es esmu likts tas taisni iekšā mana HTML. Bet paziņojums es esmu pasludinājis funkciju kas izskatās mazliet kā PHP sintaktiski, bet tas ir faktiski JavaScript, jo atkal, tas ir klienta puses pārlūkprogrammā. Un veikt uzminēt, ko tas gatavojas darīt, lai gan daži no sintakses šeit ir jauns. Mērķauditorija: Say hello to kādam citam. DAVID Malan: Tas būs teikt sveiki lai kurš apmeklē šo lapu. Tad kā? Tātad paziņojums, izrādās JavaScript tur ir alert () funkciju. Tas ir ļoti veida skumji funkcija, kas tiešām tikai mēdz traucēt lietotājiem. Tas nav viens no jums patiešām vajadzētu izmantot parasti, bet tas ir ātri un netīrās veids veida poligrāfijas kaut uz grafisko lietotāja saskarne, kā pārlūkprogrammā. Ievērojiet, ka es esam ieguvuši string vienu pēdiņām. Izrādās, ka atšķirībā no C, JavaScript patiesībā var būt jums izmantot vienotā citātus, un godīgi sakot tas ir tikai veids no stilistiskās konvencijas starp JavaScript programmētāji izmantot vienu pēdiņām. PHP, viņi patiesībā ir nedaudz dažādas nozīmes. Bet tagad, tikai zinu, ka tas ir vienīgais iemesls. JavaScript konvencija ir bieži apostrofus, bet mēs varētu izmantot pēdiņas abās vietās, kā arī. Tāpēc tas ir interesanti. Atgādināt, pēdējo reizi, ka mums bija, ka attēlu uz ekrāna, kas vērsa koku kur bija HTML mezglā, un galvas mezglā, un ķermeņa mezglā, un pēc tam daži tekstu. Bet tur bija viens īpašs mezgls pie pašā augšā, ka es sauc par dokumentu. Nu, izrādās JavaScript, jebkura reizi, kad jūs uzrakstīt programmu JavaScript pārlūkprogrammā, jums ir piekļuve īpašu globālo mainīgo. Līdzīgs garā PHP ir superglobālajiem masīviem, tas viens sauc visi mazie dokuments. Tas ir kā struktūrai, bet tas struktūrai ir arī funkcijas iekšpusē no tā. Tāpēc C struktūrai vienkārši ir dati parasti. Bet JavaScript objekts, jo tas tehniski ir arī funkcijas, citādi zināma kā metodes, iekšpusē no tā. Un jūs varat zvanīt funkciju iekšpusē šis objekts burtiski dara savu nosaukums, punkts, un tad nosaukumu funkciju, vai atkal metodi. Tas ir tikai sinonīms, tiešām. Un ko šī funkcija dara? Jūs varat veida uzminēt no tās nosaukuma. Get elementu pēc ID. Tāpēc tas ir gatavojas meklēt mājas lapā, meklēt šo koku, meklējot neatkarīgi mezglā, AKA elements ir unikālais ID citējot likt pēdiņas beigās vārda. Un tad ko es darīšu? Es esmu gatavojas, lai iegūtu vērtību iekšpusē ka mezglu koka, un es esmu gatavojas kaut kā sasveicināties ar šo nosaukumu. Lai ņemtu uzminēt, pat ja mēs esam nav redzējuši šo vēl, ko darīt, kā arī simboli nozīmē, šeit un šeit iespējams? Mērķauditorija: Saķēdēt. DAVID Malan: Saķēdēt. Labi, un tie ir tikai veida dizains lēmumus cilvēki, kas gadiem. PHP, jums saķēdēt lietas ar punktiem. C, jūs lēkt caur vairākām stīpām un zvanu funkcijas, piemēram, strcopy () vai strcat () vai citas šādas funkcijas. Bet JavaScript, jūs izmantojat plusi. Tāpēc tas ir tikai konkatenācijas trīs stīgas - sveiki, vārdu, un pēc tam izsaukuma zīme. Tātad, kad un kāpēc tas ir funkcija sauc, lai gan? Nu, ņem uzminēt no HTML apakšā. Kāpēc sveicināt () sauc, vai kad? Acīmredzot, cik labi es varu pateikt, uz iesniedz, kad tiek iesniegta šī veidlapa, Es esmu gatavojas darīt visu, iekšpusē šīm pēdiņām. Un konkrēti, es esmu dodas uz zvanu sveicināt () un pēc tam atgriezties viltus. Nu, pieņemsim redzēt, kas neto ietekme šeit ir pirmajā vietā. Tātad, ļaujiet man iet uz priekšu un ierakstiet , teiksim, Lorēna, Iesniegt. Sveiki Loren. Redzēsim, vai varbūt tas bija tikai laimīgs īstenošanu. Nē. Tāpēc tas ir rakstīt veic neatkarīgi nosaukt es tiešām likts tur. Bet paziņojums par to, kas nemainās. URL joprojām dom-0.html. Nav register.php. Nav otro failu. Nav rīcības atribūts. Tātad, kas ir šī atgriešanās nepatiesa iespējams, dara? Kāpēc man zvana sveicu () un pēc tam atgriezties viltus iespējams? Kas parasti notiek, kad jūs noklikšķiniet Iesniedz uz veidlapas, ka pat mēs esam redzams pagājušajā nedēļā? Mērķauditorija: [nedzirdama]. DAVID Malan: Pats kaut kur, vai ne? Tā iet uz kādu galamērķa URL. Bet es negribu, ka varētu notikt šeit. Es vēlos, lai mana mājas lapa ir pilnīgi dinamiskā piemēram, Gmail, kur reiz tu esi tur, jums palikt tur. URL nemaina tādā veidā, ka norāda visa lapa ir pārkraušanu. Drīzāk, es tikai vēlos, lai kaut ko mainīt piemēram, izdrukāšana kaut šeit uz ekrāna. Nu ļaujiet man tīrīt to uz augšu mazliet. Ļaujiet man atvērt ne Dom-0, bet ļaujiet man atvērt Dom-2. Vienkārši, lai jūs esat redzējuši kādu sintaksi šeit. Izrādās, ka tas, ko mēs tikko tomēr izmanto izejvielas JavaScript. Tāpēc tas ir patiesi valoda JavaScript. Daži no jums varētu zināt bibliotēka sauc jQuery. Tātad jQuery nav tāds pats lieta, JavaScript. Tas ir tikai bibliotēka, kas patiešām gudrs puisis rakstīja un popularizēts, piemēram ka gandrīz ikviens visā pasaulē tagad izmanto jQuery, izmantojot JavaScript. Un pēc pirmā acu uzmetiena, godīgi, tas izskatās nedaudz vairāk mistisks. Bet jūs atradīsiet, it īpaši, ja jums iet tur jūsu gala projektu ar web attīstība, jūs atradīsiet, ka šī attīra lietas uz augšu un ļaus ietaupīt diezgan dažas rindiņas kodu. Tāpēc pieņemsim tikai skatienu, kā šī veidlapa strādā. Paziņojums Ko es noņemt acīmredzot no mana HTML? Nav apstiprināšanas apdarinātājs tā runāt. Nav atribūts. Jo jūs zināt, ko Man nav tiešām patīk? Es jutos kā mēs, kas uz vecajiem paradumiem tur. Tāpat kā tas bija sāk justies apliets to sajaukt gan CSS ar HTML, jo jūs esat veida throwing dažādās valodās visā vietu, tāpat tas varēja sākt justies kā slikts ceļa, lai iet uz leju, ja Es esmu liekot JavaScript kodu iekšpusē manu HTML nevis faktoringa to ārā. Tā ka ir mācība šeit. DOM-2.html, es esmu faktoringa to ārā. Un es daru lietas nedaudz savādāk. Tagad es esmu gatavojas vilnis manas rokas par ko tas īsti dara zem motora pārsega. Bet tikai tagad pieņemt, ka šis pirmais līnija koda šajā bibliotēkā sauc jQuery nozīmē tikai tad, kad Dokuments ir sagatavots, rīkojieties šādi. Jo mājas lapas var veikt kādu laiku, lai slodze. Jums varētu būt par lēnu internetu savienojumu, un tas varētu būt vērpšanai un vērpšanas un beidzot tas ir piekrauts. Ka koda rindu vienkārši saka gaidīt, kamēr visa lapa ir gatava, dokuments ir gatava, pirms izpildes šo kodu. Un tagad paziņojums, tas ir iespējams, visnoderīgākā pirmais atņemt jQuery. Šī līnija šeit ir ļoti līdzīgs garā šim daudz ilgāku līnijā šeit. Tā kā neapstrādātu JavaScript kodu, tur pastāv dokumentu globālu objektu, ir funkciju sauc getElementById () cilvēki, kuri rakstīja jQuery vienkāršota, ka tikai pateikt dolāra zīmi, un tad iekšpusē iekavas izvirzīti divi citātus, un pēc tam likts hash simbolu, kam seko unikāls ID, jūs vēlaties, lai greifers. Tāpēc tas ir ekvivalents document.getElementById. Tikmēr. Iesniegt tikai nozīmē par iesniegšana jebkādā formā tu esi atsaucoties uz pa kreisi, dodieties priekšu un izpildīt to. Bet tagad tas ir zinātkāre too. Kas ir dīvaini par to, Esmu izcelti šeit? Tas ir ne tikai sava veida sintaktiski jauna, tur ir arī kaut kas trūkst. Mērķauditorija: Tas ir tikai sauc funkciju? Tas nav sauc brīdinājumu? DAVID Malan: Jā. Nu, tāpēc alert () ir uz leju šeit, lai būtu godīgi. Bet nav pieminēts nosaukums, tāpat kā jūs zināt, foo vai kaut ko šeit. Un tiešām, tas ir viens no iezīmēm JavaScript, kas ir diezgan spēcīgs, bet arī pavisam jauni. Un PHP patiesībā ir tas, kā labi. Ļaujiet man iet uz priekšu un darīt kaut kas ļoti ātri. Ļaujiet man iet uz priekšu un nodot to šeit. Ļaujiet man izdarīt. Funkcija. Sauksim šo apdarinātājs (). Kopējs funkciju, lai runāt. Kaut kas apstrādā kādu darbību. Ļaujiet man sakopt manu atkāpi. Un nodot šo šeit. Un nodot, ka šeit. Yep. Labi. Tāpēc tagad man ir tā saucamā funkcija apdarinātājs (), ka man nav tiešām zināt ko tā dara vēl. Tas tikai vēl, ka stuff. Whoops. Aizņēma pārāk daudz. Darīsim to. Labi. Žēl. Labi. Ļaujiet man darīt. Labi. Tas izskatās jauki un taisni uz priekšu tagad. Ļaujiet man darīt. Dariet to. Un Labi. Tāpēc tagad, pieņemsim nodot šo vairāk nekā šeit. Ne vairāk programmēšanas par lidot. Labi. Tāpēc tagad, iesim atpakaļ uz kur stāsts sākās. Iepriekš man teica, ka šī līnija šeit nozīmē, ja dokuments ir gatavs, iet uz priekšu un darīt to. Ko es gribu darīt? Nu konkrēti, es gribu iet uz priekšu un darīt šādi. Izpildīt šo līniju kodu, un pēc tam to, ko es gribu, lai jūs darīt, ir zvanīt tas darboties, kad veidlapa tiek iesniegta. Tagad tas ir tas, kas ir interesanti. Tas pats par sevi nav funkcija. Paziņojums Es neesmu liekot iekavas šeit normālā veidā. Es esmu burtiski iet, ko sauc par funkciju kopējs () uz citu funkciju sauc iesniedz () kā argumentu kā lai gan tas ir kā mainīgs. Un šī ir viena no iezīmēm JavaScript ir funkcijas paši Ir tiešām tikai objekti. Patiesībā, viņi tiešām vienkārši mainīgie dažu šķirot. Un, ja pie funkcijas nosaukums ir apdarinātājs (), nav iemesla es nevaru nodot to kā argumentu šeit. Un tas nozīmē, kad veidlapa ar no demo ID ir iesniegts, nosaukt šo funkciju. Bet tagad, ja es atsaukt to visu, kāpēc tad gan es, iespējams darīt tas pirms brīža? Nu, tas ir anonīma funkcija. Jo godīgi sakot, es sapratu, kāpēc es esmu apgrūtinošas tērēt laiku atzīta funkciju sauc kopējs () tikai zvanīt tā vienā un tikai vienā vietā? Ja man nevajag vārdu, un es nedomāju, ir nepieciešams, lai izsauktu to vairāk nekā viena vieta, pieņemsim tikai īstenot funkciju labi, ja man to vajag. Un tā JavaScript un PHP atbalsts, ko sauc anonīms funkcijas, kas ļaujiet man darīt tieši to šeit. Bet mēs esam tikai nesaskrāpē virsmas. Let 's ķircināt tikai ar pāris gala piemēri šeit. Ja es iedziļināties quote.php. Ievērojiet, ka tas ir faktiski PHP funkcija, PHP programmas, ka es uzrakstīju kas sagaida HTTP sauc parametrs simbols, un es varu pāriet vērtību, piemēram, FB. Un, ja mēs faktiski apskatīt avota kodu, tas ir vaicājumiem bezmaksas tīmekļa vietni sauc par Yahoo Finance, tāpat kā p-komplekts septiņi, un tas ir atgriešanās pie manis kaut kas acīmredzot pazīstams formāts ir JSON - JavaScript Object notāciju. Tas ir tikai objekts. Paziņojums par cirtaini bikšturi, pēdiņām, resnās zarnas, un komatus. Tagad tikmēr, tas ir diezgan atdzist. Jo es varu droši izmantot programmēšana valoda, lai radītu URL ka izskatās šis dinamiski, labi? Es varu mainīt, lai Google un saņemt atpakaļ Google akciju cena 1,017.55 $. Tātad, pieņemsim redzēt, ja mēs nevaram izmantot šo tagad. Ļaujiet man iet uz Ajax 0 šeit, kas izskatās šādi. Tas ir tikai mājas lapu, kas ir veidlapa ar pogu. Ļaujiet man šeit iet uz priekšu un ierakstiet YHOO par Yahoo akciju simbolu, noklikšķiniet uz Saņemt Citēju, un tagad paziņojums es esmu gotten brīdinājumu ar 32.86. Ļaujiet man tiešām iet uz mīļotājs versiju Šīs lapas, versiju divi, un tipa teiksim Microsoft, MSFT. Get Citēt. Un tagad paziņojums, nekādu brīdinājumu. Paziņojums kur ir teikts cena ir jānosaka? Ir piemēri, ka vienkāršākais norāda uz to, kas Gchat, un Facebook Tērzēt, un Gmail, un citas šādas mājas lapas darām, ko faktiski mainot mājas lapā. Paziņojums to. Ļaujiet man pārlādēt lapu. Ļaujiet man atvērt Chrome inspektors. Ļaujiet man iet uz elementiem tab uz leju šeit. Tagad paziņojums, ja man ir uz leju šeit tālummaiņa un atvērt šo up, ievērosiet, ka tas ir mans HTML DOM - mana dokumenta objekta modelis. Šis ir mans HTML. Bet tagad paziņojums, pat ja tas notiek būt nedaudz grūti, lai redzētu to gan vietas uzreiz, ja es rakstīt FB šeit, skatīties dibenu no ekrāna tikai. Tas ir patiešām notiek, mans HTML par lidot. Un tas dara to gluži vienkārši darot kaut kas līdzīgs šim. Ja es atvērtu ajax-2, ievērosiet, īstenojot kaut ko tik seksīgs kā ka, lai gan tas ir diezgan neglīts, bet tik sarežģīta, kā tas funkcionāli, tas ir daži HTML apakšā. , Bet paziņojums, es izmantoti, lai atzīmēt. Mēs esam neizmanto šo pirms, bet tas ir piemēram, bet tas nav spēkā viss uz jaunu līniju. Tas tikai padara taisnstūra reģionu uz vienas līnijas būtībā. Ievērojiet, ka es deva tai ID cenu. Un izrādās, izmantojot pašu JavaScript bibliotēka, man ir funkcija sauc citātu (), kas sauc, kad veidlapas iesniegšanas. Un ko es daru tas ir. Es esmu atzīst mainīgais Javascript sauc url, saglabājot vērtību quote.php simbols =?. Citiem vārdiem sakot, es pats esmu sāk lai sagatavotu HTTP pieprasījumu, un pēc tam Es esmu concatenating uz, ka ar plus kāds elements ar ID gada simbols ir, kas paziņojums ir tāds, ka Teksta lauks tiesības uz leju šeit. Tātad, tāpat kā mums bija formas pagātnē. Un tad izrādās jQuery, ja jūs zvanu. val (), kas aicina par val funkciju, vērtību, funkcija, kas izpaužas kāds lietotājs ir drukāti collas Un pēc tam visi no tīkla satiksmes kas notiek, ir tas. $. GetJSON. Un kā malā, dolāra zīmi ir tikai saīsināts apzīmējums. Tas ir patiešām jQuery.getJSON. Nokļūt mani JSON šo URL, un, kad lūgums nāk atpakaļ, to sauc par funkciju un iet tik argumentu kāds atgriezās no servera. Tātad, citiem vārdiem sakot, ja es dodos atpakaļ pārlūku, un es dodos atpakaļ uz quote.php, kāds ir mans pārlūks dara, ir panākt, šis gabals datus. Un, kad es iet uz šo mājas lapā šeit, paziņojums, ja mēs tā vietā doties uz tīklu tab un skaidri to, un tad ierakstiet kaut kas līdzīgs GOOG par Google un saņemt Citāts, ievērosiet lapa nemainījās. Bet HTTP pieprasījums tika iesniegts, un kādi atgriezos šeit, ja mēs skatāmies atbilde ir visai ķekars JSON ka mēs piekļūt beidzot ar Šī vienkāršā līnija šeit. Dati, kas bija gotten no servera. Cena ir nosaukums Galvenais man rūp. Tāpēc data.price dod man to. Tagad tikmēr, un tas ir pēdējais piemērs. Jūs varat darīt vēl vairāk ar lapu. Viens faktiski, labi divi. Mēs varam atvest tag, ja jūs atceraties to. Tas ir JavaScript. Mēs varam darīt. Ļoti aizraujoša. Mēs ņemšu atvaļinājumu, ka cliffhanger. Bet vairāk aizraujoši, jūs varat darīt lietas, kā šis. Ja es eju uz ģeogrāfiskās vietas-1, izrādās ka Chrome zina, ka mēs esam platuma 42.37. -71,10. Tātad tur ir vēl tur Jūsu rīcībā. Bet vairāk par šo nākamnedēļ. See you pirmdien.