HANNAH Blumbergs: Sveiki visiem. Mēs ejam, lai sāktu tikai pāris minūtes agrāk jo mums ir visai daudz Materiāla tikt cauri. Es esmu Hannah. Es esmu TF. Maria tiks savieno mums tikai pāris minūtes. Viņa māca sadaļu tieši pirms. Es mācīt sadaļu tiesības pēc, tāpēc mēs ejam lai saglabātu to pusotru stundu. Tātad, kā jūs redzēsiet šeit, mums ir diezgan dažas tēmas mums ir nepieciešams, lai saņemtu ar, tāpēc mēs iet mazliet ātri. Bet, ja kādā brīdī mēs kaut ko pateikt pārāk ātri vai jūs nesaprotat, justies brīvi pārtraukt ar jautājumiem. Mēs vēlamies, lai varētu veikt šo pārskatīt sesiju kā noderīga jums visiem pēc iespējas. Lielisks. Tātad pieņemsim lēkt tiesības ar dažas tēmas, kas mēs patiesībā ļoti, ļoti īsi jāietver par viktorīna 0 no viktorīna 0 pārskata sesiju. Tātad, sākot ar saistītiem sarakstiem. Tātad, tikai pārliecinieties, ka Jums ir dažas pamatzināšanas par saistītiem sarakstiem un ir ērti darīt daži no pamata darbību. Tik vienkārši, lai pārskatītu, kas saistīti saraksti ir labāk nekā masīvi jo tie var augt dinamiski. Tātad mums ir, ka milzīga priekšrocība. Mēs esam redzējuši tos izmanto in hash tabulu, kad mēs nezinu, cik tieši lietas, ko mēs esam gatavojas vēlaties ievietot mūsu datu struktūras. Diemžēl, mums ir gabalus piesaistītais saraksts visā atmiņu, tāpēc mēs ne vienmēr būs spēj darīt pastāvīgu piekļuvi laika jebkuram elementa saistīts sarakstā. Lai atrastu īpaši elements, mēs ir atkārtot visu ceļš no sākuma. Tāpēc paturiet prātā, ka lielākā daļa Pamatdarbības ir omega no 1. Tik ieliktnis ir tikai gatavojas veikt 1. Dzēst gatavojas veikt n kopš mēs ir iet atrast to no saraksta. Un meklēt varētu veikt, sliktākajā gadījumā, n. Mēs nevaram darīt kaut ko līdzīgu binārā meklēšanu saistītajā sarakstā jo mēs nevaram vienkārši nejauši pāriet uz vidu. Cool. Lielisks. Mazliet skursteņi. Tas atkal nāca klajā ar viktorīnu 0, lai jūs būtu super apmierināti ar to. Bet skursteņi, lūdzam Jūs atcerēties kaudze paplātes. Un tas būs pirmais, pēdējais out. Tāpēc mēs kaudze lietas uz augšu kaudze, un pēc tam ja mēs cenšamies, lai kaut ko off-- ko mēs saucam popping off stack-- mēs nonākam pie top. Un, ja mēs gribam, lai kaut ko kaudze, mēs saucam to stumšanu. Tātad, tas vienmēr būs aug No kā kaudze paplātes apakšā. Lielisks. Mēs esam redzējuši skursteņi īstenoti gan ar saistītiem sarakstiem un masīvi. Ja jūs īstenošanai ar masīviem, jūs vēlaties pārliecināties, lai sekotu gan lielums un kapacitāte. Tātad lielums būs pašreizējā vairākas lietas jūsu kaudze, tā jauda ir kopējais skaits lietas jūs varat uzglabāt jūsu kaudze. Cool. Ļoti līdzīgi, mums ir rindas. Šajā gadījumā, tā vietā, lai domātu par kaudze paplātes, domā par līniju. Šis būs pirmais iekšā, pirmais ārā. Tātad, ja jūs uzliku up kaut kas pie veikala, mēs ceram, ka persona vispirms līnija tiks palīdzēja vispirms. Tā vietā, lai sakot push un pop kā mēs darīt kaudze, mēs vienkārši sakām Enqueue un dequeue. Un atkal, ja jums ir Īstenojot šo ar masīvu, mums ir nepieciešams, lai sekotu no ne tikai izmērs un spējas, bet arī galva, kas būs priekšā mūsu rindā. Cool. Visus jautājumus par kādu no tā? Lielisks. Pārvietojas tiesības kopā. OK, hash tabulas. Lūk, kur tas sāk riktīgi interesanti. Tātad hash tabulu, ir viens īstenošana no asociatīvo masīvu. Tātad būtībā, kas noticis ir mums visu šo ieguldījumu, un mēs dodam to jaucējkoda funkcija, kas saka, OK, tas ir, ja In hash tabulu tā pieder. Tātad vienkāršākā jaucējfunkciju ka mēs esam redzējuši, ir tikai saprotams, Labi, pieņemsim, ka mēs vēlamies, lai virknes mūsu hash tabulu. Un patiešām vienkārša ideja varētu būt teikt, OK, pieņemsim tikai šķirot ar pirmais burts vārda. Tātad jūs varat redzēt šeit, mēs ņemam banānu, mēs ieliekam to caur hash funkciju, un tā saka, hey, ka vajadzētu iet pie indeksu 1. Tātad, mēs varam būtiski domāt par hash galds kā ķekars dažādu spaiņos. Un katrs no šiem spaiņi notiek turēt galvu saistītajā sarakstā. Un šajā saistīta sarakstā ir vieta, kur mēs varam faktiski likt dažādus gabalus datiem. Tātad diving mazliet vairāk par hash funkciju, šeit ir I piemērs tikko aprakstīts, kur mēs tikai teikt, OK, spert pirmo burtu vārda, un mēs esam gatavojas kārtot to spaiņiem. Tātad, iespējams, tur būs 26 kausi, viena katram alfabēta burtam. Kāpēc nav šo lieliska hash funkcija? Kas padara šo non-ideāli? Jā. Mērķauditorija: Jūs gatavojas ir sadursmes. HANNAH Blumbergs: Jā, tieši tā. Jūs esat nāksies sadursmes. Tāpēc, ka ir viena lieta. Un mēs runājam par to, kā mēs varam noteikt sadursmes tikai sekundē. Vēl viena problēma ar šo īpaši hash funkciju ir tas, ka mūsu atšķirīgs spaiņi gribam būt no diezgan krasi dažādi izmēri. Mēs zinām, ka tur ir visai daudz vārdi, kas sākas ar A nekā X, tāpēc mēs esam nāksies ļoti nelīdzsvarots spaiņi mūsu hash tabulu. Cool. Tātad yeah, pieņemsim nokļūt atpakaļ punkts sadursmes. Ko mums darīt, ja tur ir sadursme? Mums ir pāris dažādas iespējas. Tik viens, tāpēc domāju, ka mēs cenšamies likt ogu mūsu hash tabulu. Un mēs redzam, ak, mēs gribam likt to indeksu 1, bet banāns jau dzīvo tur. Ko mēs darīsim? Mums ir divas galvenās iespējas. Numur viens ir, mēs varam teikt, OK, tur nav vietas šajā indeksā 1, bet pieņemsim tikai glabāt meklē caur kamēr mēs varam atrast vēl vienu atklātu vietu. Tāpēc mēs sakām, OK, pieņemsim likt to uz vietas 3. Tas ir viens variants. Ka sauc lineārs zondēšana. Un otrais variants ir saprotams, OK, labi, pieņemsim tikai padara katru no šiem spaiņi būt vadītāji saistītas sarakstiem. Un tas ir OK, ja tur ir vairāk nekā viena lieta spainī. Mēs esam tikai gatavojas pievieno to uz priekšu. Tātad, šeit jūs varat redzēt, OK, kad mēs ievietota ogu, mēs vienkārši ņēma banānu, sava veida uzstāja, ka vairāk nekā mazliet un iemeta ogu tur. Un tas ir arī pilnīgi naudas sodu. To sauc par atsevišķu ķēžu rādītāju. Jūs varat domāt par to kā veida, piemēram, masīvs galvas saistītajiem sarakstiem. Visus jautājumus par hash galdi, hash funkcijas? Lielisks. Koki un valstīs. Tātad koks ir jebkāda veida Datu struktūras kurā tur ir kaut kāda hierarhijas vai kaut kāda no ranga jūsu dažādiem objektiem. Un tas kļūs super skaidrs, kad mēs redzam piemēru. Un mēs redzējām neveiksmīgiem mēģinājumiem kopā ar hash tabulas, kas pset5-- kas, atkal, pilnīgi godīga spēle šo quiz-- kā cits datiem struktūrām, ka mēs varam uzglabāt dažādas lietas. Gadījumā, ja vārdnīcā, mēs uzglabāt ķekars vārdiem. Tātad, pieņemsim to apskatīt dažiem kokiem. Tātad šis ir piemērs no koka. Tā ir sava veida struktūru, ka hierarhiskas struktūras, kur jūs varat redzēt, ka šis 1 mezgls augšpusē ir sava veida ranga veida virs 2 un 3, kas ir virs 4, 5, un 6 un 7, kas ir virs 8 un 9. Tātad tas ir viss, ko mēs saprotam ar koks, lai jūs varat vienkārši veida Attēla šo jūsu galvā. Tagad mums ir pāris vairāk specializētas koki. Tātad viens piemērs ir binārs koks. Un bināro koks, atkal, tikai būs datu struktūra ar kādu no veida hierarhija, bet katrs no mezgliem var būt ne vairāk kā divi bērni. Tas ir, ja vārds binārais nāk no. Tātad šis ir piemērs bināro koku. Tātad tas ir mazāks kategorija kokiem. Tagad pieņemsim nokļūt vēl konkrētāks un runāt par bināru trees-- bināro meklēšanu koki, drīzāk. Tātad, šeit ideja ir tas ne tikai katrs mezgls ir ne vairāk kā divi bērni, bet visi bērnus kreisi gribam būt mazāks un visi no bērniem, kā Tiesības gribam būt lielāks. Tik paziņojuma tikai mūsu binārā koks, tur ir nē attiecības starp numuriem. Bet mūsu bināro meklēšanu koks, mēs redzam, OK, šeit ir 44. Un katrs numurs pa kreisi no 44 ir mazākas un viss pa labi ir lielāks. Un kas tur ik līmenis koku. Tātad šeit, tas ir mazāks nekā 22 un tas ir lielāks nekā 22. Un tas ir bināro meklēšanas koku. Kāpēc mēs domājam, tā sauc bināro meklēšanas koku? Ko algoritms tas atgādinātu jums? Mērķauditorija: Binary meklēšanu. HANNAH Blumbergs: Binary meklēšanu. Jo, ja jūs meklējat īpaši skaits šajā kokā, katrā vietā, jūs varat vienkārši klauvēt off pusi no koka, kas ir lieliski. Un tā tas notiek, lai dotu mums kaut ko kas izskatās daudz, piemēram, bināro meklēšanu. Kādi jautājumi? Labi, atdzesē. Labi, mēģina. Ikvienam ir mīļākie. Tātad šis ir piemērs, ka mēs esam redzējuši ķekars klasē. Un atkal, tas ir tikai vēl viens veids, kā mēs varam glabāt datus. Gadījumā, ja vārdnīcā, atkal, tas tikai būs stīgas. Tātad, pieņemsim redzēt, ko tas patiesībā izskatās nedaudz zemākā līmenī. Tātad, pieņemsim to apskatīt vienā mezglu TRIE. Un mēs redzam, OK, tur notiek būt Būla un mezglā, rādītāju uz mezglu. Un mēs redzam, ka Boolean sauc is_word. Tātad būtībā, tas ir gatavojas sarakstīties uz šiem maz trīsstūra kas saka, ja tu būsi šeit, esat atradis pilnu vārdu. Mēs zinām, ka "Turing" vairāk Šeit ir pilns vārds, tā tikai T-U-R nav vārds jo mēs neredzam, ka maz deltu. Un ka maz delta, atkal, atbilst šo is_word, šis Būla is_word. Un tad mums ir masīvs bērniem. Tātad katrā līmenī, jums ir īpaša mezglu, un ka mezglu punkti uz masīvs visa alfabēta. Tātad jūs varat redzēt, atkal, Šajā picture-- es esmu gatavojas glabāt lekt atpakaļ un forth-- ka ka masīvs augšpusē ir ķekars atšķirīgs mezglus nāk nost no tā. Tas ir 26, vai 27, ja vēlaties lai iekļautu papildu raksturs. Un tas dod mums veids, kā saglabāt savu datu tādā veidā, ka var aplūkot uz ka jūs varat meklēt super ātri. Kāds ir uzmeklēšanas laiks TRIE? Mērķauditorija: [nedzirdama]. HANNAH Blumbergs: Jā. Teorētiski, tas ir nemainīgs laiks. Tas tikai būs lielums vārdu, ka jūs vēlaties meklēt. Pat tad, ja mēs pievienot zillion vairāk vārdi mūsu TRIE, tas nav gatavojas veikt mums vairs noteikt ja dots vārds atrodas TRIE. Tātad tas ir patiešām jauki. Mērķauditorija: Vai jums vienkārši inicializēt šo masīvu? Jūs neatbildējāt uz jautājumu, vai divas. Vai jūs vienkārši runāt par ka uz otru? HANNAH Blumbergs: Protams, absolūti. Labs jautājums. Jautājums bija, mēs ir masīvs, kas ir nāksies mezglu zvaigzne kā nevis tikai mezglu, vai ne? Cool. Tātad, šeit to, ko mēs esam sakot ir mūsu masīvs ir tikai būs norādes uz citiem blokiem. Tātad, tas ir essentially-- to veida jūtas kā saistīts sarakstā šādā veidā kur katrs no šiem bērniem tikai norāda uz nākamo mezglu. Un tā, ka mēs faktiski nosaka, hey, OK, mēs esam atkārtoja cauri visai vārds, tas ir vārds vārdnīcā, mēs vienkārši pārbaudīt šo is_word. Liels jautājums. Jā. Mērķauditorija: OK. Tātad, kas bija runtime par TRIE? HANNAH Blumbergs: Protams. Tātad Runtime par TRIE par Meklēt būs nemainīga laiks. Tātad tas ir tikai gatavojas būt skaits burtu vārda. Tas nav atkarīgs no izmērs no vārdnīcā vai lielums datu struktūru. Tātad, šeit ir nedaudz vienkāršāka piemērs. Šajā gadījumā, jūs varat redzēt, ka vārds nūja ir vārdnīcā un jums ir zoom, bet tu nav kaut kas līdzīgs zoodārzā. Kā mēs zoo? Kā mēs pievienot zoo uz mūsu vārdnīcu, mūsu TRIE? Jā. Mērķauditorija: Marka is_word taisnība par [nedzirdama]. HANNAH Blumbergs: Labi. Tātad mēs teiktu Z-O-O, un tad mēs gribētu vēlaties pārbaudīt off šo lodziņu, kā arī. Liels. Pieņemsim salīdzināt ļoti īsi mēģina pret hash tabulas. Mēģina ir tiešām liels jo, kā mēs teicām, tie nodrošina nemainīgu laika lookup. Bet milzīgs trūkums ir viņi humongous. Jūs varat iegūt sajūtu, pat skatoties uz to, ka tas notiek, lai milzīgs daudzums atmiņas. Tāpēc viņi būs daudz lielāks nekā hash tabulas, bet viņi gatavojas sniegt mums daudz ātrāk lookup reizes. Tātad tas ir sava veida jūsu Tradeoff, ko jums rūp, vai tas ir ātrums vai atmiņas. Visus jautājumus par jebkuru, kas, visi no C datu struktūras. Skaisti. LABI. Mēs ejam, lai pārietu uz nedaudz mazliet interneta attīstību ar Maria. MARIA ZLATKOVA: Lovely. LABI. HANNAH Blumbergs: Jūs varat izmantot savu klēpjdatoru. MARIA ZLATKOVA: Nice. OK, atdzesē. Kā mēs tagad pāriet uz web attīstība, mēs runājām maz par mainīgajām atļaujām failus un direktorijas tā, ka tie var būt pieejami uz citiem lietotājiem, pie pasaulē, un lai mēs varētu redzēt, kā Būtībā mēs varam nodot tos kad mēs attīstīt lietas, piemēram, tīmekļa vietnēm ka mēs esam galvenokārt darot. Tātad mēs redzējām chmod komandu, kas ir pārmaiņas režīmā, būtībā. Tas ir Linux komandu un tas maina piekļuves atļaujas failu sistēmas objektu. Un failu sistēma objekts tikai direktoriju, fails, kaut kas jūs varat mainīt atļaujas. Tātad, lai redzētu failu atļaujas, mēs ierakstiet komandu ls, saraksts, -L. Un, kad mēs rakstīt, ka mēs parasti redzēt dažas atļaujas kas izskatās veida, piemēram, šis priekšā direktorija nosaukumu. Tātad d attiecas uz direktoriju. Un tad mums ir trīs triādes ka būtībā attiecas uz atļauju, vai nu lietotājs, grupa, vai pasaule. Par atļauju veidi, ka mēs varam ir par šīm trim grupām ir vai nu R lasīt, W rakstīt, un X izpildīt. Un mēs varam būt tie, grupa un pasaulē, kā arī. Grūts ir tas, ka dažreiz kad mēs ierakstiet chmod komandu, mēs varētu rakstīt kādu numuru kas sastāvēja no trim bitiem. Tātad mēs varētu darīt, piemēram, 777 un kas būtībā atsaucās uz pievienoto vērtību katrs no šiem triads jo r norāda uz 4, w būtu attiecas uz 2, un x norāda uz 1, tad, kad saskaita, katrs no numuriem nāks uz leju, lai kumulatīvais skaits kumulatīvo vērtību no 0 līdz 7. Tāpēc mēs varētu arī būt 0 ne atļaujas vispār. Un tas būtībā dot mums atļaujas vai nu lietotāju, grupa, vai pasaule. Visus jautājumus par šo līdz šim? Mērķauditorija: Jūs teicāt, lasīt bija 4? MARIA ZLATKOVA: Jā. Mērķauditorija: [nedzirdama]. HANNAH Blumbergs: Yup. Mērķauditorija: Un tad, pievienojot visus tos citi varētu norādīt savu numuru. MARIA ZLATKOVA: Jā. Jā. Tie ir liels jautājumi. Lovely. Tālāk, mēs ielēca HTML un a mazliet vairāk par interneta attīstību. Tik HTML tikai nozīmē Hiperteksta iezīmēšanas valoda. Un tas ir atzīmes valoda, kas ir standarta ka tas ir izmantots, lai izveidotu interneta lapas. To sauc par iezīmēšanas valoda jo tas nav reāli apkopota. Tas nav teikt, kā daži kods būtu izpildīts vai kaut kas tamlīdzīgs. Tā vienkārši iezīmē un apraksta, kā tīmekļa lapa būtu jāizveido ar katru no tās elementiem un kā tie būtu jāizskatās lietotājam. Daži no HTML tagiem, ka mēs piegāja ir šādi. Visi mūsu HTML dokumentu sākās ar DOCTYPE html. Tad mums vienmēr ir html tag. Mums ir galvu un ķermeni. Un tas ir svarīgi, ka HTML ir šāda veida ligzdotu struktūras jo tas ir ļoti skaidrs. Un tad tas kļūst ļoti skaidrs, kad mēs nepieciešams atvērt un faktiski tuvu tagus. Un mēs vienmēr vajag, lai aizvērtu tags, ka mēs esam atvērti. Un šeit mums ir daži no veidiem lietas uz priekšu, ka mēs vēlamies būt. Tātad, mēs ir, piemēram, nosaukums CS50. Un tad mēs faktiski var saistīt ar stilu lapu kas nosaka to, kā mēs stils mūsu mājas lapā. Tas ir CSS. Mēs ejam, lai iet pa to Nākamais pāris slaidiem, kā arī. Organismā, mēs noteikti dažas nodarbības un ID. Un kā atgādinājums, atkal, ID ir unikāls un nodarbības var piešķirt vairākiem posteņiem. Un tas tikai nozīmē, ka mēs varam izmantot klasēm un ID citās structures-- jā, Piemēram, laikā CSS failu vai stils sheets-- atsaukties uz īpašiem elementiem un būtībā saka, ka mēs vēlamies, lai stils vai izstrādāt kādu elementu kādā noteiktā veidā. Un mēs atsaucamies uz tiem to ID un klasēs. Un mēs varam arī atsaukties uz dažādas lietas ar tagiem, kā arī, bet ID un klases tikai dod mums daži daudzpusība un ko konkrēti mēs vēlas atsaukties uz. Tātad tikai piemērs. Mēs varam, atkal, laikā CSS fails, kurā mēs vēlaties, lai noteiktu dažus style-- tik krāsas, fontus, un sīkumi, piemēram that-- mēs varam definēt stilu ķermeņa. Tā, ka varētu noteikt to par visa ķermeņa tag. Bet tad mēs varam arī definēt stils par #title. Un atkal, hashtag atsaucas uz mūsu ID un dot attiecas uz mūsu klasi. Un tad par info, mēs var arī noteikt dažus atribūtus. Un atkal, kad mēs ejam atpakaļ, mums bija mūsu klases sauc info un mūsu ID nosaukums. Un mēs redzam, ka mēs atsaucamies ko viņiem #title un Info. Mērķauditorija: Vai jūs teiktu, hashtag [? pieņem mani? ?] MARIA ZLATKOVA: Sorry? Mērķauditorija: Vai jūs teiktu, hashtag [? pieņem mani? ?] MARIA ZLATKOVA: hashtag nozīmē ID, tāpēc #title atsaucas uz kāda elementiem ir šo ID sauc virsraksts. Un pēc tam tā kā punkts attiecas uz klasi. Tātad Info attiecas uz šo elementu jo tā ir klases info. Jā. Mērķauditorija: Kāpēc jūs atšķirt tos HTML? Kāpēc jūs sakāt, dažas lietas ir ID un dažas lietas ir klase? MARIA ZLATKOVA: Tas ir tikai līdz you-- HANNAH Blumbergs: Atkārtojiet šo jautājumu. MARIA ZLATKOVA: Ak, piedodiet. Kāpēc mēs atšķirt atsevišķus elementus kā ID un citus elementus, klasēs? Tas ir tikai tāpēc, ka tas ir tiešām bieži dizaina izvēle. Tas dod jums daudz daudzpusība, jo ar to varētu teikt es vēlos šo konkrēto posteni lai šo ID, jo viņi vēlas darīt daudzas lietas ar to, un es tikai vēlaties, lai noteiktu stilu, skaidrs stils vai krāsu kāds šim postenim. Un veids, kā to darīt, ir tikai piešķirot tai ID. Un tad, ja es gribu būt pāris dažādu priekšmetu ņemot ka, tā vietā, lai iet un nosakot their-- tā vietā, darot to, ko tag jo tag būtu noteikt šūnu visai tag par katru reizi tiek izmantots ka tag, jūs varat iestatīt klasi vairākiem posteņiem. Un tad tikai piekļūt šo klasi un teikt Es gribu, lai stils šajā klasē, ka veidā. Un atkal, klases var būt vairāki dažādi priekšmeti un ID ir unikāls. Great jautājumi. Jebkuri citi jautājumi? OK, awesome. Atkal, tas ir, kā šie selektori ir atsauce CSS, ar hashtag, ar punktu, vai bez kaut par piešķirot stilu kādu frāzi, tāpat organismā. Un šeit mums ir vispārējā sintaksi, kā tas tiek darīts. Atkārtot daži labākais prakse HTML un CSS, mums ir nepieciešams, atkal, aizvērt visus HTML tagus, ka mēs atveram. Un ko mēs jūs ieteica darīt, lai jūsu gala projektiem, kā arī par CS50 Finanšu, ir veikt pārliecināts, ka visas jūsu HTML apstiprina. Un tas ir darīts ar W3 validators. Un tad mēs to izdarījām un tas, ko mēs iesakām darām tiek atdalot stils, tāpēc CSS no iezīmēšanas HTML. Tātad viss, kas attiecas uz to, kā jūsu lapa gatavojas vizuāli izskatās un kā tas notiek, lai jāpārveido vajadzētu iedziļināties CSS dokumentā. Un tad jūsu iezīmēšanas pasakot, kā lietas ir attiecībā viena pret otru ir HTML, un ka vajadzētu iet iekšā Jūsu HTML dokumentu. Kādi jautājumi? Mhm. Mērķauditorija: Kas tieši notiek par ar lapu validāciju kad mēs esam apstiprināšanu HTML, ka [dzirdams] izveidots? MARIA ZLATKOVA: Tātad what-- domāju jums. Tātad, kas īsti notiek par ar lapu validāciju un kāpēc mums vajag to darīt? Būtībā, mums ir nepieciešams, lai to izdarītu jo daudz reižu, jūsu pārlūkprogrammā, ja jums nav aizvērt tagu vai kaut kas tamlīdzīgs, Jūsu pārlūkā ir vēl gatavojas padarīt lapu un, iespējams, joprojām strādā, bet tas ir labākā prakse, lai pārliecinātos, ka jūs esat, atkal slēgtas visas atslēgvārdus, ka visi jūsu elementi ir tā, ka tie būtu, un būtībā, ka tas ir ar konvencijas, kas ir kopa. Tas ir, atkal, tikai lieta, ka jums vajadzētu var mācīties darīt, pretstatā ar sloppier kodu un sīkumi, piemēram, ka. Jā. Ak, piedod. Es domāju, ka tu paaugstināt savu roku. Mērķauditorija: Nē, es biju tikko [nedzirdama]. MARIA ZLATKOVA: OK. Mērķauditorija: Paldies. MARIA ZLATKOVA: Protams, paldies. Tātad vēlreiz, notiek par to, kā informācija tiek nodota un komunikācijas modeļi nodot informāciju. TCP / IP. TCP vienkārši nozīmē pārraides Control Protocol un IP atsaucas uz interneta protokolu. Un tas tikai norāda uz veids dati tiek piegādāts. Ja mums ir daži dati, kas ir piegādāti you-- tik jūs veicat pieprasījumu noteiktā serverī. Piemēram, kad mēs mēģināt piekļūt cs50.net, mēs iesniegt pieprasījumu CS50 serveri un mēs redz, ka mēs vēlamies, lai iegūtu šāda veida informāciju. Un pēc tam, pamatojoties uz šo protokolu par to, kā šī informācija tiek sniegts, serveris sniedz informāciju atpakaļ pie mums, klients. Un tad mēs esam spējīgi, lai skatītos informācija par lapas un tad to izmantot. Tātad Hiperteksta pārsūtīšanas protokols ir tikai vēl viens protokols vai iestatīt konvenciju, kas nosaka, kā interneta pārlūks un tīmekļa servera vajadzētu sazināties. Un liekot tas viss kopā, HTTP, atkal, tieši definē kā šī hiperteksta definēts ar HTML, ka mēs esam strādājuši tā, kā tas būtu piegādāts jums un cik, ka dati, kas tiek piegādāts jums izpaužas jums. Un tāpēc, ja jūs guys atcerēties no klases, mums bija daudz pieprasījumu un mums bija daudz sintakses Šo pieprasījumu, ka mēs esam kas iet pāri tieši tagad. Tātad atkal, kad mēs sūtīt lūgumu uz serveri, mums ir jādefinē pāris lietas. Tāpēc mums ir nepieciešams, lai atrastu veidu Lūguma ka mēs esam iestatījumu. Un atkal, mums ir, piemēram, GET ir viena veida metodi ka mums ir mūsu lūgumu. Un tad HTTP / 1.1 ir tikai protokols, kas mēs esam, izmantojot pašlaik. Lielāko daļu laika, kas notiek, ar protokolu, ko izmantojam. Tātad, ja jums ir jautājums piemēram, ka uz jūsu viktorīnā. Tas ir konvencijas ka mums ir tik tālu. Slīpsvītru norāda, kāda veida no lietām, ko mēs esam pieprasa. Pēc tam, mūsu mītnes ir, piemēram, jo ​​šī gadījumā, mēs cenšamies, lai dotos uz google.com. Tātad šis ir vērtība uzņēmēja. Tas ir veids pieprasījuma kas varētu tikt nosūtīts. Un tad veida reakciju, kas varētu jāsūta, atkal, pamatojoties uz šo protokolu, atkal, HTTP / 1.1. Tātad tas ir HTTP versija vēlreiz. 200 OK ir tikai statusa kodu. Un tas OK ir tikai frāze balstoties uz šo statusa kodu. Un tad Content-Type attiecas uz tipa kas tiek atgriezta jums, ka ir par šo mājas lapu, jūs saņemat un ka jūsu pārlūkprogrammā var padarīt pēc tam. Un tas ir text / html. Mērķauditorija: Ko 1.1 nozīmē? MARIA ZLATKOVA: Tas ir tikai versija of-- oh, ko tas nozīmē 1,1? Tas ir tikai versija, HTTP versija protokols, ko izmantojam. Liels jautājums. Citi jautājumi? Mērķauditorija: Vai jūs varētu Rezumējot Content-Type nekustamo ātri? MARIA ZLATKOVA: Tāpēc, ka ir kāds serveris. veids information-- to, kas ir Satura tips bija jautājumi. Tā, ka bija Tipa informācija, ka jūs saņemsiet atpakaļ no servera, tipa dati, ka pārlūks var tad padarīt ka ​​jūs izmantojat. Mērķauditorija: Vai tas, ko šis protokols ir stāsta jums to darīt? MARIA ZLATKOVA: Sorry? Mērķauditorija: Vai tas ko protokols teikt? MARIA ZLATKOVA: The protocol-- Mērķauditorija: --what Content-Type ir vai what-- MARIA ZLATKOVA: Protokola pamatā on-- kāds ir protokols stāsta jums? Tas ir tikai veids, kā ka šī informācija tika piegādāts jums, balstoties par kāda veida protokols Vai šī informācija bija ieguvuši piegādāts atpakaļ uz jums. Vai tas jēgas veida? HANNAH Blumbergs: You var domāt par protokola kā a-- es domāju, profesors Malan to raksturoja klasē, kā veids kā a-- tas ir tāpat kā ekvivalents cilvēka handshaking. Teiksim, piemēram, hey, es esmu pieprasījums un es zina, kā rīkoties HTTP par versiju 1.1. Un tad serveris saka: oh, OK, I-- un abi pastāv. Es arī zinu, kā rīkoties ar HTTP / 1.1. Un es esmu gatavojas sniegt jūs atpakaļ kādu saturu. Šajā gadījumā tas notiek būt tipa text / html. Tātad, tas ir sava veida tikai veids no tām communicating-- MARIA ZLATKOVA: Tas ir tikai apstiprinot, ka tu esi gan pēc to pašu protokols un ka gan klients un tā server-- Jūsu pārlūkprogramma un server-- kārtot zināt, ko tu esi runā, un ir Konvencija par iet datos. Mērķauditorija: Tātad Content-Type part-- Saturs-Type text / html-- tas atsevišķa daļa no tā paša ziņojuma? Vai tas ir daļa no, teiksim, 200? Vai 200 viņiem saku, ka vai is-- MARIA ZLATKOVA: 200 saka, ka tas viss gāja OK. Un tad satura tips ir sava veida atsevišķa daļa no tā paša ziņojuma, un sakot lieta, ka es Atgriezās ir šāda veida text / html. Tas ir tikai sniedzot vairāk informācijas. Vai kaut ko piebilst? LABI. Jebkuri citi jautājumi par šo? Lielisks. Tāpēc daži citi HTTP statusi, ka mēs varētu saņemt papildus 200 OK, tie, kas mēs esam redzējuši varbūt iespējams, daudz ir 403 un 404. Tātad 404, ja jūs mēģināt Pieeja kaut kas neeksistē. Tā, piemēram, ar savu CS50 Finance psets, ja jūs būtu padarīt quote.html un jums nav šo failu, bet tā vietā jums bija quote.php, ka novestu pie 404 Not Found jo fails, iespējams, nepastāv. Par 403 aizliegts, ka attiecas uz atļaujas. Tātad, ja kāds fails nav lasāms ar pasaule, jūs varētu saņemt 403 atgriezās. Daži citi, kas jums varētu get-- 301, pastāvīgi pārvietotajiem; 302, Atrasts; 304, modificēta; 400, Bad pieprasījums; un tad Internal Server kļūda 500 un 503, Pakalpojums nav pieejams. Jā. Mērķauditorija: mēs sagaidāms iegaumēt visus šos statusus? MARIA ZLATKOVA: man būtu tos uz jūsu apkrāptu lapas. [Smiekli] Mērķauditorija: Vai mēs sagaidāms zināt, ko izraisa katrs? MARIA ZLATKOVA: Vai tie ir? HANNAH Blumbergs: Par tiem, kas mēs esam palaist into-- Tātad jautājums was-- MARIA ZLATKOVA: Vai viņi sagaidāms zinu, ko katrs no šiem statusa kodi varētu izraisīja? Tātad tiem, kas mēs esam, ko izmanto un uzbrauca, es teiktu, jā. Tāpēc mēs esam noteikti redzējuši 200 OK un lekcijas to psets. Mēs esam redzējuši 403, 404. Attiecībā uz citiem uzņēmumiem? HANNAH Blumbergs: es būtu teikt 500 šķiet godīga spēle. MARIA ZLATKOVA: 500, jā. HANNAH Blumbergs: Jā. Vienkārši ir vispārēju sajūtu par to, kas izraisa tos. Un arī tikai ar tiem nosaukumi, jūs varat veida piemēram, veikt izglītoti minējums par uz ko faktiski izraisa tos. Piemēram, pārvietot pastāvīgi, iespējams, fails tika pārvietots pastāvīgi. Mērķauditorija: Bet par iepriekšējo eksāmens, tur bija tik kā jūs sagaida, lai mēs atbildētu, ka? HANNAH Blumbergs: Ka bija vērts nulles punkti. Jautājums par 418 uz tējkannu ir tehniski HTTP statusa, bet tas bija tā vērts nulle punkti. Protams, tu neesi Paredzams, ka viņiem zināt. Mērķauditorija: Vai tā ir reāla? HANNAH Blumbergs: Tā ir īsta viens, bet tas nenozīmē neko. Tas ir tikai joks. Interneta cilvēki ir smieklīgi. MARIA ZLATKOVA: Great jautājumi, puiši. Jebkuri citi jautājumi? Mērķauditorija: Kas ir iekšēja servera kļūda? MARIA ZLATKOVA: Iekšējais servera kļūda tikko nozīmē, ka jums ir bijis nespēj sazināties ar serveri kāda iemesla dēļ. Tātad, tas nav obligāti kaut kas ir jādara ar klientu vai kaut kas tamlīdzīgs. Es nezinu, par kādu konkrētu piemēru ka mēs esam pārgājuši paskaidrot, Bet jā. HANNAH Blumbergs: Protams. Tā, piemēram, piemēram, pieņemsim teikt jūs strādājāt pie mashup un Google serveris samazinājās par dažiem Iemesls, jauda nobirums, teiksim. Tas būtu iekšēja servera kļūda vai kāda veida of-- patīk jums nevarētu saņemt atbildi atpakaļ. MARIA ZLATKOVA: Jā. Tas ir tikai tad, kad jūs esat nespēj sazināties ar serveri kādu iemesls, jo no tā iet uz leju, vai kāda cita iemesla dēļ. Tātad lekt PHP. PHP, atšķirībā no HTML, ir programmēšanas valoda. Un mēs sākām to lietot, jo tas ir ļoti noderīgi interneta attīstību. Mēs pirmo reizi izmantots to CS50 Finance. Un tas būtībā palīdz mums celt kopā šis atzīmes, dizains, un kā mēs faktiski izmantot informāciju parādīt lietas uz mājas lapā. Tātad PHP pati nozīmē PHP Hypertext Preprocessor, tāpēc tas ir rekursīvs backnorym pats par sevi. Un atverot tagus PHP mēs kreisais un labo bultiņu ar jautājuma zīmes un php. Tāpēc mēs esam jau redzējuši ķekars tā. Tagad mēs esam tikai gatavojas iet pa daži no pamata lietas par to. Tātad ar PHP, mainīgo nosaukumi sākas ar dolāra zīmi. Mums nav precizēt, no jauna, mainīgs tips vairs. Tāpat kā mēs to darījām ar C, mums nevajag to darīt. Mēs varam darīt ķekars atšķirīgs sīkumi ar mainīgajiem. Mēs varam viņus kopā ar konkatenācijas tos ar dot apzīmējums, kas mēs nevarētu darīt C vēlreiz. Atkal, mums ir mazliet vairāk daudzpusība ar PHP ziņā mainīgajiem. Atkal, mums nav galvenā funkcija. Un PHP tiek interpretēts pretstatā apkopoti, Tik vienkārši, kā mēs to padarīt par C failus, mums nav jādara, ka PHP. Bet, tā, ka valodas vada sevi, tas tiek interpretēts. Un tad brīvi drukāti tikai nozīmē, ka mēs nav norādīt mainīgo tips un mainīgās veidi tiek saprasts runtime. Mērķauditorija: Bet ko jūs domāju ar dot konkatenācija? MARIA ZLATKOVA: Protams. Ja mēs gribam, lai lietas together-- Tātad, ja mums bija dažas mainīgo ka bija vērtību 3 un mums bija vēl viens mainīgais kas bija vērtību virknes, mēs varētu likt mainīgos kopā , liekot dot starp tiem un konkatenācijas tos. Vai mēs varētu izveidot mainīgā sauc vārds un nodot to kopā ar konkatenācijas divas stīgas. Tātad, ja mums bija virknes dubultā citātus un mēs nodot dot pēc tam, un tad mums bija vēl virkni, kas radītu virkni vispār. Mērķauditorija: OK. MARIA LATVIJA: Bija skaidrs, ka? Mērķauditorija: Jā. MARIA ZLATKOVA: OK. Jā. Mērķauditorija: Kad jūs sakāt interpretējusi nevis apkopoti, jūs runājat par jums nav jābūt tik īpašs, ja runa ir par PHP pret C? MARIA ZLATKOVA: Kad mēs sakām interpretēts pretstatā apkopoti, Ko mēs domājam? Tātad tas nozīmē, ka mums nav vajadzīga izpildāmos failus palaist PHP. Tas nozīmē, ka tā darbojas kā tā iet. Vai tas ir jēga? Nedaudz vairāk. HANNAH Blumbergs: Tātad jūs var domāt par tulka kā citu programmu, kas ir atbildīga lai dotos pozīcijai caur PHP un faktiski izpildot to, pretstatā to apkopojot to visu uz leju, lai bināro. Tas nav reāli nozīmē kaut ko par to, kā īpašs mums jābūt. Mums joprojām ir jābūt precīziem, un nav aizmirsis savu semikolu, un pārliecinieties, ka Jums ir jūsu dolāra zīmi, un lietām, piemēram, ka. Labs jautājums. MARIA ZLATKOVA: Jā. Tātad pozīcijai, kā pretstatā ar C failiem, mums ir padarīt visu finālā Pirms mēs faktiski var palaist to. Tas ir galvenā atšķirība. Bet atkal, mēs nevaram tiešām būt tik īpašs. Tātad masīvi PHP pārstāvēt faktiski lika karte. Tātad bloki asociēto vērtībām uz taustiņiem. Divi veidi, kā pasludināt masīvs, pamatojoties uz šo sintaksi, mēs varam būt skaidrāk , sakot, mums ir masīvs un mums ir šī taustiņš1 ka Maps Tas vērtība1, key2 ka kartes Vērtība2. Vai mēs varam vienkārši izveidot masīvu kas satur pati vērtības un pēc tam taustiņi ir jāsaprot tādā veidā. Visus jautājumus par šo? Mērķauditorija: Kādi būtu atslēgas būt otrajā piemērā? 0, 1, 2, 3? MARIA ZLATKOVA: Piemēram, tā ir tikai taustiņi šajā ne vienmēr kaut ko mainīt. Viņi vienkārši definēt kā jūs varat izmantot vērtības iekšpusē no tā. Tātad, ja mums bija foreach cilpa PHP, kas būtu ļauj mums iet cauri visiem vērtībām, mēs varam iet cauri visiem vērtībām, pat tad, ja mums bija vai nebija definēts īpaša atslēga ietvaros vietnes iepriekšējā sintakse. Tātad, pat ar šāda veida no masīva, mēs joprojām varētu ir foreach cilpu kas iet caur katru no vērtībām atslēgu masīvā. Tātad sintaksi ar foreach cilpa, mēs sākam ar masīvu. Šī $ arr mainīgais ir mūsu aktuālā masīvs ka mēs definēts iepriekšējās slide kā vērtību, kas burtiski iet caur katru no vērtībām, neatkarīgi no tā, vai mums bija atslēgu vai nav. Un tad mēs varam kaut ko darīt ar vērtība iekšpusē foreach cilpas. Tātad vēlreiz, ja mums bija masīvs piemēram, tas šeit created-- tāpēc mums ir galvenais, foo un vērtības bar, tad no Baz taustiņu un vērtība qux-- mēs varam būt foreach cilpa, kas iet cauri masīvu kā galveno vērtību un tad kaut ko darīt ar atslēgu un / vai vērtību. Bet mēs ne vienmēr jābūt ar foreach cilpas, kas iet cauri masīvu kā galveno karti ar vērtību. Mēs varam iet caur foreach cilpa masīvs kā vērtību. HANNAH Blumbergs: Un es domāju, ka kuri paredzēti, bija jūsu jautājums, ko ir netiešais indekss? Mērķauditorija: Kinda. MARIA ZLATKOVA: Ak. HANNAH Blumbergs: Jā, jā. Vārdu sakot, ja jums nav jānorāda galvenais, tas būs 01. MARIA ZLATKOVA: Jā. Tāpat kā ar C, tas ir nulle indeksētas ja jums nav jānorāda atslēgu. Mērķauditorija: Sorry. Vai jūs varētu mēģināt runājot mazliet skaļāk? Es esmu, kam mazliet nepatikšanas dzirdes viss. MARIA ZLATKOVA: Es esmu tik žēl. Jā, protams. Tātad jūs vēlaties, lai mani lai iet pa šo vēlreiz? Vai ir this-- Mērķauditorija: Tātad par iepriekšējo slide-- ja jūs varētu vienkārši doties atpakaļ uz vienu sekundi. MARIA ZLATKOVA: Protams, sorry. Mērķauditorija: Tātad otrais masīvs šeit nav šķiet, ir vērtība, lai ievadītu, veida [? cēloņsakarību. ?] MARIA ZLATKOVA: pa kreisi, pa labi. Mērķauditorija: Tātad, kā tas darbojas ja jūs sakāt tas viss ir vai nav. Man, kas izskatās [? foo?] jau. MARIA ZLATKOVA: Jā, jā. Tātad vēlreiz, tas ir pasūtīt karti šajā ziņā ka tur ir jāsaprot, Piemēram, indeksi šeit var tikt uztverta kā 0, 1, 2, 3. Atkal, tas ir ar tiem, indeksi ir mūsu līdzvērtīgi , kam atslēgas plānots uz vērtībām. Tātad, ja mūsu galvenais bija 0-- žēl. HANNAH Blumbergs: Nē, tur ir krīta šeit. Tas ir tiešām ļoti jauki. MARIA ZLATKOVA: Tas ir lieliski. LABI. Tātad vēlreiz, $ arr 0 būtu galvenais, lai vērtību 1. 0 būtu galvenais par vērtību 1. Mērķauditorija: Es atvainojos. Tas ir neredzams. HANNAH Blumbergs: Nu labi, nevermind. Krīts bija slikta ideja. Es to atpakaļ. Jūs varat iedomāties taustiņiem kā 0 kartēs vērtību 1. MARIA ZLATKOVA: Jā. Tāpēc tas ir 0, tas ir 1, 2, 3. Tie var būt jūsu atslēgas. Jūs varat domāt par tiem as-- yeah. Tāpēc tā vietā, skaidri atslēgas, viņi kārtot saprot indeksi, sākot ar 0. Krīts nepalīdzēja. Jā. Mērķauditorija: Par foreach cilpas, ja mēs vēlējāmies, lai apskatītu, kā vērtību, tas vienkārši automātiski indekss līdz 0? MARIA ZLATKOVA: Jā. Tas iet caur katru no vērtībām. Mērķauditorija: [dzirdams] kā 0 vai arī kas vienkārši darīt 0? MARIA ZLATKOVA: Jums būtu teikt, kā dolāra zīmi un tad daži mainīgā nosaukums, vērtība. Mērķauditorija: [nedzirdama]. MARIA ZLATKOVA: Sorry? Mērķauditorija: Atvainojiet, es esmu tikai mēģina atcerēties. Kā jums, ka, ja jūs varat darīt to automātiski indeksācija ir tikai 0 no? MARIA ZLATKOVA: Tātad, kā jūs to darīt ja jums nav konkrētas galvenās nosaukumus? Mērķauditorija: Jā. MARIA ZLATKOVA: jūs vienkārši define-- tikai teikt sevi kā sava vārda. Tātad jūsu psets, jūs puiši varētu atcerēties foreach $ rindu kā $ rindas, mēs izveidojām ourself šo $ rindu sakot mēs gribam iet cauri rindai, kā $ rindās. Pat ja mums nebija Tas skaidri $ rindas noteikts, mēs varētu tikai iet un saka, tas var būt mūsu galvenais, un tikai iet caur katru no vērtībām. Mērķauditorija: Tātad ir vērtība jauns mainīgais mēs esam radot glabāt [nedzirdama]? MARIA ZLATKOVA: Tātad, tas nav būtības jauns mainīgais. Tas ir mainīgs, kas attiecas uz iekšpusē masīva uz katru no tiem. HANNAH Blumbergs: Ir jauna mainīgā nosaukums. MARIA ZLATKOVA: Jā, tas ir jauns mainīgā nosaukums, bet tas nav inherently-- yeah. Tas ir tikai jauns mainīgais ka jūs varat darīt. Tik vienkārši, kā mēs to darīja $ rinda kā $ rindas, rindas bija jauna mainīgā nosaukums, kas mums varētu radīt mūsu foreach cilpa. Tas nav iepriekš pastāvēt pirms tam. Mērķauditorija: Vai jūs varētu iet cauri loģika katram, izmantojot piemēru tur? MARIA ZLATKOVA: mhm. Ak, piedod. Lūk, piemērs. Pārliecināts. Tātad katram array-- tik tas nozīmē, ka iet uz šo masīvs kā atslēgu value-- kas notiek iet caur šo masīvu un pirmās aizej foo, tad Galvenais foo un vērtība bar. Un tad uz otro atkārtojuma no cilpas, tas notiek, lai iet cauri, un veikt galvenais baz un vērtību qux. Un tad jūs varat darīt kaut ko ar vienu no tām, vai abi. Mērķauditorija: Tātad ideja kurai ir atslēgas punktu ar vērtību, ko jūs galu galā piekļūt? MARIA ZLATKOVA: Kāda ir ideja , kam galvenais norādot to vērtību? Tas ir tikai vēl viens konvencija, cits veids, kā iet caur masīva un to var piekļūt vai nu taustiņu vai vērtību, vai abus, un izmantot tos. Mērķauditorija: Kāda ir nozīme, lai nolemt, ka foreach darbojas? Tātad, ja mēs pievienot elementi masīva vēlāk, būtu tie būs pirmie sauc par foreach masīvs, vai tas būtu vēlāk? MARIA ZLATKOVA: Tātad, kas ir rīkojums, ka foreach cilpa iet cauri masīva? Tas iet cauri pirmais elements uz pēdējo elementu, uz pēdējo pievienoto elementu. Ja jūs pievienot elementus vēlāk, tie būtu tikt accessed-- pirmie elementi būtu piekļūt, jo pirmais elementi masīva, un tad jūs gribētu iet caur katru no elementi kā sava veida ar ordered-- nevis lika, bet tā, ka tie ir laisti masīva. Mērķauditorija: Tātad jauni elementi pievieno vēlāk? Tātad viņi added-- viņi būšu pēdējie, kas [? atkārtojuma. ?] MARIA ZLATKOVA: Jauni elementi can-- Būtībā, kad jauni elementi ir pievienoti, ir tie pievienoti beigām masīva? Mērķauditorija: Jā. MARIA ZLATKOVA: Es uzskatu, ka tā. Jā. Un tad ar savu foreach cilpu, pēc tam, kad esat pievienojis jaunus elementus un jums iet caur tiem, jaunie elementi būtu būt accessed-- jauno elementu, ja tas ir piebilda pēdējais, tas būtu pieejams pēdējais. Mērķauditorija: Vai jūs vienkārši sniegt piemēru par kaut ko, kas varētu [nedzirdama] ar kaut ko ar vērtību piemēram, [dzirdams] vai vērtībā, tāpat kā jūs vēlaties formatēt, ka? MARIA ZLATKOVA: Protams. Vai es varu sniegt piemēru par to, kas mēs varētu darīt ar vērtību? Tātad, ko jūs guys varētu būt pazīstami ar ir tas, ka mēs esam izgājuši cauri masīvu un būtībā iespiesti katrs no minētajiem elementiem, piemēram, kā daļu no pasūtīts saraksts vai kaut kas. Vai tas ir jēga, vai mēs gribam kuri paredzēti, Mērķauditorija: Vai mēs varam izdrukāt šīs vērtības ārā? MARIA ZLATKOVA: Jā, mēs varētu drukāt un tad būtībā $ vērtība, jo pie ka īpaša vērtība, mēs būtu drukāšanas vērtību iekšpusē no tā. Tātad, ja mēs bijām pie mūsu pirmā atkārtojuma par to, un mēs iespiesti $ vērtību, mēs būtu drukāšanas bar. Mērķauditorija: Vai tur ir arī cilpas PHP vai vienkārši foreach cilpas? MARIA ZLATKOVA: Ir arī cilpas PHP. Un viņu loģika ir galvenokārt tāds pats kā tas, ko jūs esat pieraduši. Mērķauditorija: Tātad tā vērtība ir nulle. MARIA ZLATKOVA: Tas ir tāpat kā pats. Jā. Mērķauditorija: Es esmu tikai gatavojas lūgt. Tātad, ja jūs pasludināt masīvs, jums nav nepieciešams pateikt kāda izmēra tas notiek, lai būt, kas nozīmē, ka jūs varat vienkārši pievienot un atņemt elementu [nedzirdama]. MARIA ZLATKOVA: Yup. Jā. Tieši tā. Kad mēs deklarēt masīvu, mēs nevajag teikt, kāda izmēra tas ir, lai mēs varētu vienkārši pievienot elementus uz tā vēlāk kā labi. Citi jautājumi? Tātad celt PHP un HTML kopā, tas, ko mēs esam seen-- labi, piemēram, šajā piemērā, mums ir HTML forma, kas ir ievades lauku. Un ievades lauks ir tikai vārds un pēc tam tā ir pogas Iesniegt. Un, kad jūs nospiežat Iesniegt poga, mūsu hello.php failā, jo metode veidā ir saņemt, mēs varam piekļūt kāds ir nosaukums ar šo saņemt globālo mainīgo ka is-- sintakse tas ir $ _GET. Un tad mēs varam piekļūt neatkarīgi lietotāja ievadi iekšpusē šo veidlapu nosaukuma norādot nosaukumu šajā jomā. Jebkuras citas jautājumi vai jebkurš jautājumi par šo konkrēto piemēru? Mērķauditorija: Kur ir PHP? MARIA ZLATKOVA: šeit. Tātad šis ir mūsu atklāšana tag par PHP. Mērķauditorija: Ak, labi. MARIA ZLATKOVA: Jā. HANNAH Blumbergs:? Tā = ir saīsinājums jo tas ir PHP un tikai atbalss. Mērķauditorija: Ak. MARIA ZLATKOVA: Jā, sorry. Es būtu jāparedz, ka skaidrs. HANNAH Blumbergs: Print. MARIA ZLATKOVA: Tas ir tikai funkcija kas ļauj drukāt kaut ko. Liels jautājums. Tātad going-- jā. Mērķauditorija: Vai tur būs diezgan mazliet roku kodēšanas PHP un HTML par viktorīnā 1? MARIA ZLATKOVA: Tur var būt godīgi summa interpretācijas PHP un HTML, ne vienmēr piemēram, milzīgu kodēšana, ja jūs varētu būt uzrakstīt foreach cilpa, lai gan, lai cilpas. Jebkurš no cilpas, kas mums segtu šeit ir godīga spēle. Un tas ir lielākoties tā. HANNAH Blumbergs: es būtu gatavs. Tādā pašā veidā, ka mēs jautājām jums uzrakstīt ķekars C funkciju uz viktorīnu 0, Es būtu gatavs darīt pats PHP un JavaScript. MARIA ZLATKOVA: Jā. HANNAH Blumbergs: es teiktu little-- kā mēs neesam notiek, lai jūs rakstīt milzīgs HTML lapa tikai tāpēc, ka ir mazliet garlaicīgs, bet jūs varētu būt daļas. Tas ir pilnīgi godīga spēle. Tāpat nelielu HTML lapas, pilnīgi godīgi. Mērķauditorija: OK. Kā par JavaScript, kā arī? HANNAH Blumbergs: Jā. JavaScript ir godīga spēle. MARIA ZLATKOVA: Jā. Tas ir pilnīgi godīga spēle. HANNAH Blumbergs: Mēs dabūsim lai, ka, piemēram, 10 minūtes. MARIA ZLATKOVA: SQL, atkal, Strukturēts Query Language. Pamatā tas ļauj mums vadīt datus relāciju datu bāzu pārvaldības sistēma. Ka tikai būtībā nozīmē ka mums ir kaut kur uzglabāt daži dati, ka mēs varētu vēlēties, lai izmantot mājas lapā vai kādā citā veidā. Un tad mums ir jautājumi, lai iegūtu informāciju no mūsu datubāzē, vai ievietot informāciju tiem. Vairāki kopējās ones-- UPDATE daudz, INSERT, SELECT, un DELETE. Tātad atjauninājumu, tas ir sintakse aktualizēšanai datiem datu bāzē. Atjauninot šo tabulu sauc galds, sakot SET, mēs varam noteikt dažas vērtības visiem rindas uz vienlīdzīgu kaut kas cits. Tātad, mēs varam arī norādīt kādu specifisku ieraksti, ka mēs vēlamies, lai mainītu un kas var būt, izmantojot KUR. Un mēs varam norādīt, ka mēs tikai vēlamies, lai modificēt dažas rindas, ja māja, ja mēs būtu tabulu studentu un visi studenti bija māja, lai mēs būtu tikai mainīt dažas vērtības ja māja ir vienāds CURRIER, piemēram. Par ievietot, mēs varam ievietot noteiktas vērtības uz galda. Tātad INSERT INTO galda, un pēc tam vērtības, un tad iekavās, mēs norādīt kuru vērtības vēlaties ievietot. Tātad INSERT INTO galda, col1 un col2, vērtība ir VAL1 un val2. Tātad tas ievieto būtībā jaunu rindu uz tabula, kurā vērtības 1 un 2 saskaņā ar kolonnām 1 un 2. Un tad mēs ejam, lai iet pa ātrs piemērs tam, kā tas izskatās tāpat mūsu datubāzē mazliet. Bet tas final vaicājums, ka es domāju, ka mēs esam gatavojas iet pāri, SELECT, tas vienkārši ļauj mums datu atlasei no tabulas to iespējams izmantot to vēlāk. Un, kā mēs to darām, ir mums tikai glabāt to kādā mainīga. Un tad mēs, iespējams, var izmantot atkārtoti. Tātad SELECT zvaigzne nozīmē izvēlēties visus. Tas ir tikai stenogrāfija Lai izvēlētos visus. No galda, kur mēs meklējam dažiem īpašiem nosacījumiem, Tātad, ja kolonna ir vienāds kaut kas, piemēram. Ja mēs vienkārši vēlējāmies izvēlēties visu no galda, tas tikai atlasa visas slejas un visas rindas no tabulas. Un tad izdzēst no tabulas KUR col vienāds kaut, tas tikai izdzēš dažus rinda no mūsu galda kur mums ir daži īpaši nosacījumi. Šajā gadījumā nosacījumi ir kolonna vienāds kaut ko. Tik vienkārši ātri piemērs. Ja mums ir šo tabulu tieši šeit, un mēs ievietojiet to galdu, šīs vērtības, kas varētu ievietot jaunu rindu. Un, ja mums bija auto-pieaugumu, tas tikko pieauguma mūsu ID no 0 līdz 1 līdz 2. Ja mēs izvēlējāmies visi no studentiem, to vienkārši atgriež visus laukus un visas rindas. Ja gads ir lielāks par vai vienāda ar 2016, ka vēlētos atgriezties Hannah un sevi. Un tad, ja mēs vienkārši izvēlēts gads id un gadu no studentiem ja māja ir Cabot House, ka varētu atkal atgriezties Hannah un sevi. Tad, ja mēs svītrots no studentiem kur vārds ir vienāds ar Rob, kas varētu izdzēst visu rindu. Un tad, ja mēs nosakām nosaukums, Update studentiem SET nosaukums ir vienāds ar Daven KUR māja ir vienāds Cabot House, kas notiek, lai dotos uz šie rindas un pēc tam atjaunina nosaukumu. Un tad daži SQL datu tipi ir CHAR, VARCHAR, INT, un peldēt. Tie ir godīga spēle. Es gribētu iet atkal un pārliecinieties, ka jūs zināt un tos uz jūsu apkrāptu lapas, ko katrs no šiem burtiem ir izmantoti, kas tu izmanto tos uz jūsu psets, un pārliecinieties, ka jūs esat iepazinušies un ērti ar kuru, lai izvēlētos no dažādiem datu veidiem jūsu PSET. Jā. Mērķauditorija: Kas bija tas, ka tabula uzglabāti? Jā, kur šī tabula uzglabāti? MARIA ZLATKOVA: Nu, tieši tagad, tas nav saglabāti. Anyway, kur šī tabula uzglabāti? Bet tas var uzglabāt SQL datu bāzē. Mērķauditorija: Un kur ir SQL datu bāzes? Datorā, online kaut kur, serveris? MARIA ZLATKOVA: Tas var būt vairākas atšķirīgas lietas. HANNAH Blumbergs: Mēs esam saskarnē ar SQL tabulas galvenokārt ar phpMyAdmin. Tātad mēs varētu lūgt serveri uzglabāt tos mums. Mēs varētu glabāt tos uz mūsu datorā. MARIA ZLATKOVA: Tas tikai atkarīgs kā jūs vēlaties darīt to pats. Bet mēs esam glabāšanai tos, kā Hannah minēts, uz phpMyAdmin, kas ir online. Un tad, kā mēs izmantojam PHP un SQL, mēs to uzglabā uz kādu mainīgo tas, ko mēs esam vaicāti. Tātad, ja mēs izvēlētos visi no vēstures kur user_id vienāds sesijas id, kas varētu atlasīt visas rindas par konkrētu personu, kas ir pieteicies no vēstures galds un sakārtot tos rindās. Cool lieta zināt ka CS50 vaicājumu funkcijas aizsargā pret SQL injekciju tagus. Tas nozīmē tikai to, ka tas padara pārliecināts ieejas, kas tiek ievadīti pareizi un ka persona, kas ienāk ievadi nav mēģina ievadi dažas ļaunprātīgu kods vai nu nomest mūsu galdiem vai izdzēst visu iekšpusē mūsu datu bāzē. Īss pārskats no Model View Controller modelis, tas ir tikai veids, kā organizēt un domāt par kodu. Tas atkal, dizaina paradigma. Ko tas nozīmē, ka mēs can-- un tā ir laba prakse lai atdalītu dažādas daļas Mūsu kodu un ko viņi kontrolēt šajos trīs paradigmas. Tātad mūsu viedoklis ir visbiežāk mūsu veidnes, mūsu izkārtojums, ceļš ka mēs, kas kā mūsu kods izskatās. Tas ir galvenokārt mūsu CSS failus un veids ka mēs definēts dizainu mūsu kodu, būtībā. Mūsu kontrolieris ir galvenokārt, ko mēs esam bijuši dara ar PHP failus. Tātad vēlreiz, strādājot ar informāciju, kas mums ir un nosakot, kā tas informācija tiek izmantota, un tad iet šo informāciju nu uz domām vai modeli. Un modelis, tā, ka mēs esam tika izmantojat ir mūsu datu bāzē, lai kur mūsu informācija uzglabāti tāpēc tas ir kaut kur dzīvot, un ir kāda no šīm kodu, kas ir saistīta ar to, kā ka mēs šo informāciju vai tā, ka mēs atjaunināt šo informāciju. Tātad MVC modelis, HTTP pieprasījumi tiek nosūtīti uz web serveri. Tad kontrolieris interpretē pieprasījumu no lietotāja un pēc tam apstiprina lietotāja ievadi. Tā ir iespēja, ka mums ir kontrolieris sazināties ar modeli, lai kaut ko tāpat kā mūsu datubāzei vai kādu citu funkcionalitāti kas retranslē informāciju. Un tad beidzot, kontrolieris nodod informāciju uz skatu tā, ka tas var būt taisīts un ka tā var kļūst redzamas jebkurai personai piekļūstot tīmekļa lapu. Kādi jautājumi? Lielisks. Tātad vēlreiz, modelis, tā funkcijas, atkal, ir noturīga informācijas glabāšana, pārvaldību un datu organizēšanu. Un tas, ko mēs esam redzējuši tik tālu ir MySQL datu bāze un datu failus, kas var izmantot. Skats, prezentācija informācijas Lietotājs, UI, vai lietotāja interfeisu. Un piemērs ir HTML. Un tad mēs varētu būt minimāla PHP. Tātad, lai cilpa, kas vairākkārt uzsvērts pār datiem, kas tiek izdrukāti ir daļa no domām, kā nevis kontrolieris. Un tad daudzi no mūsu PHP failus nonākt kontrolieris kategorijā. Tas tikai rokturi lietotāju pieprasījumus un saņem informāciju no modeļa. Lekt Dokumenta Object Model, tas tikai attiecas uz to, kā HTML tiek organizētas dokumenti. Un viņi organizē kokā struktūra, kas ir hierarhiju. Tātad, ja mums ir pieejami [nedzirdama] pārstāvība dokumenta, mēs varam strādāt ar dokumentu, piemēram, mēs manipulēt objektiem būtībā. Un, lai padarītu šo mazliet skaidrāks, kad mums ir daudz mūsu dažādas birkas atbildēt uz dažādiem maršrutiem mūsu koku. Un pēc tam šim piemēram, mēs ir sākuma dokumenta mezglā. Mums ir, tad, mūsu HTML mezgls kas sadalās galvu un ķermeni. Vadītājs ir nosaukums, un tad nosaukumā ir sveiki, pasauli. Un mūsu ķermenis vienkārši satur hello, pasaule, kā arī. Tātad kādi jautājumi par kādu no lietas, ko mēs līdz šim iekļauti? Un, ja ne, Hannah būs pārņemt ar JavaScript. Lielisks. HANNAH Blumbergs: OK, atdzesē. Ja kaut kas nāk klajā ar PHP vai HTML, vai kāds no sīkumi Maria apdrošināta, mēs vienmēr varam pauze. Mēs darām labāk atkal, tik awesome. Un tikai, lai dotos atpakaļ tiešām ātri tam, ja paskatās ik Pagājušais gads ir eksāmens, šis pārādās either-- šeit ir daži HTML, padara šo diagrammu. Vai šeit ir šis diagramma, veikt dažas HTML, tāpēc noteikti praktizēt to. Un tad tas ir viens garantēto Jautājums, ka jūs varat iegūt tiesības. Cool. Tātad parunāsim par JavaScript un cik tas ir mazliet atšķiras no valodas, piemēram, PHP un C, divas valodas, mēs redzējām iepriekš. Tātad numur viens, tas ir brīvi drukāti. Tas ir tāpat, PHP, bet atšķirībā no C. Tas ir interpretējama valoda. Atkal, tas ir tāpat kā PHP, atšķirībā no C un šī gatavojas ļauj mums use-- to darbojas patiešām labi ar interneta lapas. Tas notiek, lai ļautu mums manipulēt saturs un kā tas izskatās un ko tā dara. Mēs ejam, lai redzētu mazliet Ajax. Tas ļauj mums komunicēt asinhroni ar dažādiem serveriem un saņemt informāciju. Un šī ir lieta, kas patiešām atdala JavaScript no PHP un C ir tā, ka tas ir klienta puses. Gan PHP un C ir parasti servera puses. Par lielāko daļu, un gandrīz pilnībā, ko mēs esam redzējuši, vismaz šī klase, JavaScript iedarbojas uz klienta puses, kas nozīmē, ka pārlūks ir faktiski atbildīgā rādīt to. Un tas nozīmē, ka mums nav ir nepieciešams, lai mijiedarbotos ar serveri. Tātad tas nozīmē, ka var būt daudz ātrāk jo tas ir tiešām tikai tas Chrome, tas ir Safari, tas ir Firefox, neatkarīgi no jums izmantot faktiski darbojas jūsu JavaScript. Mērķauditorija: Ko asinhronā nozīmē? HANNAH Blumbergs: Ah, ko tas asinhroni nozīmē? Liels jautājums. Asinhroni means-- labi, saturu, kurā mēs izmantojam to, OK, mēs veidojat mājas lapu un mums ir nepieciešams iegūt kādu informāciju. Tātad ar piemēru mashup, daži informāciju, ka mēs varētu vēlēties, ir rakstu virsraksti. Tagad mēs could-- vienu iespēju ir darīt to sinhroni un tas nozīmē, ka pieņemsim apstāties, iet saņemt rakstu, iegūt rakstu atpakaļ, un pēc tam padarīt, bet tas būtu patiešām lēns. Tas būtu slikta lietotāja pieredzi jo jūs vienkārši sēžot tur gaida kaut ko atbildēt. Asinhroni nozīmē mēs turpināt iet par mūsu uzņēmumu, attēlot lapu, un mēs nosūtīsim off pieprasījumu kas ir sava veida gatavojas notikt fonā. Es domāju, ka mēs izmantojam piemērs lekcija par izsaucēja Rob un saka, hey, jūs varat meklēt šo augšu par mani un saņemt atpakaļ uz mani, pretstatā tikai man gaidīšana pa tālruni. Tātad asinhroni nozīmē, ka tas notiek fonā prom no mums paralēli. Liels jautājums. Jebkas cits? Liels. Mēs lēkt daudz vairāk par asinhroni pieprasījumi ar Ajax. Mērķauditorija: Vai JavaScript-- kur nav tas samazināsies ar MVC? HANNAH Blumbergs: Great jautājums. Kur JavaScript kritumu ar MVC? Hm. Es domāju, tas varētu fall-- tāpēc mums nav parasti patīk squish to, ka paradigma, bet es domāju, es teiktu, Labi, tāpēc JavaScript faktiski gatavojas ļaut mums apkopot datus, datu interpretēt, faktiski darīt nozīmīgas lietas ar datiem. Tādā veidā, tas ir ļoti kontrole līdzīgi. Bet tas arī notiek, lai ļautu mums parādīt lietas un drukas lietām. Tādā veidā, tas ir ļoti skats līdzīgi. Jā. Tātad, tas ir veids kā PHP kur tā var veida būt gan. Labs jautājums. Jebkas cits? Labi, awesome. Pārvietojas tiesības kopā. Tātad, pieņemsim redzēt piemēru par to, kā mēs varam izmantot JavaScript kādā no mūsu tīmekļa programmu. Tāpēc es ņemšu uzskatu, ka šis index.html ar ķekars HTML. Un lieta, ko es gribu tevi koncentrēties uz tas ir skripts tag. Un tas saka, OK, es gribu palaist kādu JavaScript un šeit ir tas, kur tā dzīvo. Tā dzīvo hello.js. Un ļoti daudz, piemēram, CSS, mēs varētu likts JavaScript ietvaros HTML. Kāpēc mēs varētu vēlēties, lai atdalītu to ārā? Jā. Mērķauditorija: Vieglāk pārrakstīt? HANNAH Blumbergs: Jā. Tas ir vieglāk izmantot pāri Dažādu Web lapas. Tas tur lietas tīrāku. Tas ir tikai laba prakse. Lielisks. Laba atbilde. Tik labi, tāpēc tas notiek būtu mūsu index.html. Un tad noteikti šeit ir mūsu tiny maz JavaScript failu. Un visi tā saka, ir brīdinājums Sveiki, pasaule. Tātad, kas notiek, ir, kad šīs lapas renders-- Tātad, ja jums iet uz kāda mājas lapā tas is-- viss, kas notiek varētu notikt tas notiek, lai teikt, OK, es esmu gatavojas palaist šo JavaScript kodu. Un šis JavaScript kodu vienkārši saka brīdinājumu Sveiki, pasaule. Tāpēc es esmu gatavojas saņemt šo draudzīgs maz pop-up. Cool? Tas ir veids, piemēram, mūsu pirmais JavaScript programma, mūsu Sveiki, pasaule. Apskatīsim mazliet vairāk par to, ko sintakse JavaScript izskatās. Un konkrēti, pieņemsim salīdzināt to C un PHP, ko mēs esam redzējuši iepriekš. JavaScript, mēs esam nāksies Var, nosaukums mainīgo, un pēc tam tā faktisko vērtību. Un mums nav norādīt veidu, tikai tāpat PHP, bet ļoti atšķirībā no C. Tā, piemēram, ja mēs vēlējāmies lai saglabātu vērtību 50, C, mums būtu jāsaka, hey, C, es gribu vesels skaitlis, Es esmu gatavojas to nosaukt i, un tā vērtība ir 50. PHP, tas ir mazliet vieglāk. Mēs sakām, hey, es gribu mainīgo sauc i un tā vērtība ir 50. Ļoti līdzīgi, JavaScript, mēs saka hey, es gribu mainīgs sauc i, tā vērtība ir 50. Katra nākamā reize, kad es izmantot i, man nav nepieciešams rakstīt var. Tas ir tikai man no tā brīža. Tādā pašā veidā, C, kur kad mēs sakām int i, mēs tikai izmantot i. Cool? Viss kārtībā. Pārcelšanās uz cilpas, Par laimi, tie gandrīz izskatīties exactly-- Es domāju, ka viņi tieši tāds pats kā tas, ko cilpas gatavojas izskatās kaut kas, piemēram, C, kur jūsu cilpas nāksies trīs parts-- inicializācijas, nosacījums, un atjaunināt. Kāda laika cilpa, tas izskatās tieši tā pati. Mēs vienkārši to stāvokli. Un darīt, kamēr cilpa, atkal, tieši tāds pats. Mēs arī tā stāvoklis. Teiksim es gribēju atkārtot over-- Es gribēju kaut ko darīt piecas reizes. In C, mēs varētu rakstīt init i ir vienāds ar 0. i ir mazāks nekā 5, i ++. Vienīgā atšķirība, JavaScript, tā vietā, lai sakot int i ir vienāds ar 0, mēs sakām VAR i ir vienāds ar 0. Skaisti. Tas ir vienīgā atšķirība. Visus jautājumus par kādu no tā? Jā. Mērķauditorija: Tātad PHP, tas ir tas pats lieta, izņemot bet kā mainīgo? Vai bija, ka ar VAR piemēram? HANNAH Blumbergs: Jā. Tātad PHP, tas notiek būt dolāra zīmi. Tātad tas būs $ i līdztiesīgu 0, $ i ir mazāks nekā 5, $ i ++. Liels jautājums. Tagad parunāsim par funkciju deklarācijas. In C, kad mēs izsludināja funkcija, mēs deva tai nosaukumu un mēs to dažus parametrus. Un sākumā, mēs rakstījām veidu. JavaScript, viss, ko mēs ir jādara, ir rakstīt atslēgvārds funkcija, kas saka, hey, JavaScript, Es esmu par to, lai definētu funkciju. Šajā gadījumā tas ir nosaukums summu. Un tas aizņem divus argumentus, x un y. Ievērojiet, ka mēs vienalga par veidiem x un y. Un tāpat kā C, mums ir Šis atslēgvārds atgriešanās, tāpēc mēs varam kaut ko darīt piemēram, atgriešanās x un y. Un tagad, kad mēs esam rakstīts šis pirmais funkciju, mēs varam izmantot summu jebkur. Un tas ir pilnīgi naudas sodu. Viena tiešām atdzist lieta par JavaScript ka ir ļoti atšķirībā no C ir tas, ka funkcijas var jāizturas tāpat vērtībām. Tātad, mēs varam darīt kaut ko līdzīgu šeit kur es domāju, ka es uz šo up-- Es uz augšu VAR summu part-- un mēs tikko teica funkcija xy vienāds atgriešanās x plus y. Tas ir tas, ko varētu saukt anonīms funkcija. Tā ir funkcija, bez nosaukuma. Tā kā šī saka funkcija summa, blah, blah, blah, tas tikai teikt funkciju. Bet tagad, lai gan man ir šī anonīma funkcija, ka funkcija ir tiešām tikai vērtība. Mēs varam uzskatīt to kā vērtību. Tātad, mēs varam saglabāt to mainīgo tas pats veids, kā mēs varētu uzglabāt 50 mainīgo. Tātad, mēs varam teikt, OK, es gribu mainīgs, to sauc summa, un tā ir šī funkcija. Tātad šīs divas lietas ir patiesībā gatavojas darīt tieši to pašu, bet sintakse ir nedaudz atšķirīgs un veida jautru piezīmi. Jā. Mērķauditorija: Tātad jūs varētu zvanīt funkcija, kas bija anonīma, sakot, summa kronšteini 2, 5? HANNAH Blumbergs: Jā. Jūs varat zvanīt tas anonīms funkcija tādā pašā veidā. Jūs varētu darīt summa (2, 5) ;. Tas būtu pilnīgi naudas sodu. Ja es to nedarīju VAR summa ir vienāda funkcija, ja es vienkārši izdzēsts this-- Es zinu, tas ir uz manas rokas, bet izlikties es svītrots this-- tad ka funkcija ir sava veida tikai aizgāja. Jūs nekad nevar izmantot atkārtoti, jo jums nav vārdu par to. Tas ir grūti, lai apzīmētu kaut ko jūs nezināt, ko zvanīt. Labs jautājums. Jā. Mērķauditorija: Vai jūs varat atsauces apmērā citas vietas ar vērtību x plus y? HANNAH Blumbergs: Vai jūs varat atsauces summa citās vietās ar vērtību x plus y? Es neesmu pilnīgi pārliecināts, ko tu domā. Mērķauditorija: Tātad savu pagātni daļēji anonīms funkcija ir summa ir vienāda ar šī anonīma funkcija, tā summa ir tagad mainīgais, kas jums can-- HANNAH Blumbergs: Right. Tātad summa ir mainīgs, bet tas ir actually-- tā summa ir mainīgs lielums, kuru vērtība ir funkcija. Tāpēc tas ir funkcija, kas ir veida dīvaini lieta wrap galvu ap jo mēs esam spēlē ar C un jūs nevarat darīt, ka C. Bet tagad mēs varam zvanīt summai Tāpat mēs varētu saukt summa šeit. Mērķauditorija: OK. HANNAH Blumbergs: Jā. Labs jautājums. Jā. Mērķauditorija: Tātad mums nav izmantot prototipi PHP vai JavaScript? HANNAH Blumbergs: Nē, mēs nav nepieciešams, lai izmantotu prototipus, īpaši JavaScript. Tātad viena slikta prakse lieta, ka es esmu teiksiet, ka jums nevajadzētu darīt ir jums nav rakstīt VAR I = 50. Jūs varētu vienkārši sākt darīt i = 50. Un tas tikai padara i globāls mainīgais. Tas ir ļoti slikta prakse, lai nekad nesaki explicity VAR i, bet tas ir kaut kas jūs varat darīt. Tulks nav gatavojas kliegt uz tevi. JavaScript ir diezgan līdzīgs, Jūs varat darīt to, ko jūs vēlaties. Ak, piedod. Tur ir divi. In apelsīnu bikses. Uz priekšu. Mērķauditorija: Nē, jums iet pirmais. Mērķauditorija: Nē, es tikai saku Man nebija mana roku uz augšu. LABI. Tātad, ja jums bija, lai izsauktu ka pirmo reizi, tagad Rezumējot, mēs to saucam tāpat, x, y, piemēram, katru reizi? HANNAH Blumbergs: Jā. Tātad šie divi būtībā darīt to pašu. Mērķauditorija: Un kāda ir priekšrocība no, izmantojot vienu vai otru? HANNAH Blumbergs: Nē priekšrocība no, izmantojot vienu vai otru. Es tikai gribēju jums parādīt divas dažādi gabaliņi sintaksi. Kur anonīms daudz reižu funkcijām, ir mērķis ir, ja arguments uz citu funkcija ir funkcija. Un mēs redzam, ka tikai otrais ar Ajax. Tātad, ja tas nav nekādas jēgas, uzglabāt to atpakaļ jūsu galvas. Tas ir, ja anonīms funkcija var būt noderīga jo tas nav īsti vērts dodot tai nosaukumu, jo mēs esam tikai gatavojas izmantot to vienu reizi. Jā. Mērķauditorija: Ja x un y izmaiņas vēlāk gada, apkopos mainīties, kā arī? HANNAH Blumbergs: Ja x un y izmaiņas vēlāk, apkopos mainīties, kā arī? Tātad tas ir faktiski I domāju, ka kaut kas ir, atkal, tas vienkārši jūtas ļoti atšķirīgs no C. Šis nav vērtība. Tas nav 5. Tas ir tikai funkcija pati. Tātad, tiklīdz jūs piešķirat tā parametri, tad jūs faktiski aprēķināt vērtību. MARIA ZLATKOVA: Un tad Jūs varat zvanīt funkciju un izmantot to, lai saņemtu kādu vērtību. HANNAH Blumbergs: Right. Tieši tā. Jā. Mērķauditorija: Tātad, ja jūs vienkārši uzglabāt to mainīgo, tāpat VAR X ir summa divu values-- HANNAH Blumbergs: Jā. Tātad, jūs varētu vienkārši darīt VAR summa vienāds summa divām vērtībām. Jā. Jebkuri citi jautājumi? Jā. Mērķauditorija: Bet tas, kas sajaukt summu un summu? Tāpat, ja jūs izsauktu mainīgo summu, Jūs zvanīt funkciju summu? HANNAH Blumbergs: Mm. Mm. Ja jūs kaut ko piemēram, summa ir vienāda summa 2, 5? Mērķauditorija: Jā. HANNAH Blumbergs: Es uzskatu, ka varētu pārrakstīt vērtību summas. Tātad vēl viens interesants lieta par JavaScript ir tā, ka viens mainīgais var pieņemt par ķekars dažādu veidu. Slikta prakse. Jums nevajadzētu darīt kaut ko patīk tas, ko jūs tikko teica. Bet C, ja man ir uzstādīts vienāds līdz veselam skaitlim, mēs zinām, ka tas nekad nav gatavojas kļūt par string. Šis nav tas gadījums JavaScript. Jā, labs jautājums. Jebkas cits? Viss kārtībā. Dara visu tiesības uz laiku. Turot iet. Viss kārtībā. Ja mēs skatāmies uz masīva JavaScript, šeit ir ātrs piemērs masīva stīgas. Un bloki var augt dinamiski. Viņiem nav fiksēts lielums tāpat ka viņi dara C. Mēs varam piekļūt elementi ar tikai kvadrātiekavās. Tas izskatās daudz, piemēram, PHP, un daudz piemēram, C, kur mēs varam teikt, šajā gadījumā, ja es gribēju vārdu JavaScript, es Vai Arr kvadrātiekavas ar 0, 1, 2. Un tad, ja jūs atceraties, C, kad mēs gribēja garums masīva, tas bija tiešām kaitinošas. Bet JavaScript, super viegli. Viss, kas mums jādara, .length. Dod to garumu. Tieši tā. Mērķauditorija: Tas ir vienkārši. HANNAH Blumbergs: Jā, padara Jūsu dzīvi daudz vieglāku. OK, object-- tur nav. Objekti JavaScript justies daudz, piemēram structs C un asociatīvas bloki PHP. Tātad, ko mēs esam redzējuši Partijas ir JSON, kas stendi JavaScript Object papildinājumiem. Un tas būtībā ir veids no strukturēt mūsu datiem. Tātad, pieņemsim redzēt piemēru, iespējams, ir vienkāršākais. Tātad, šeit ir piemērs objektu kas saglabā klasi, CS50. Un, kad es saku klasi, es domāju, protams, ne like-- yeah, kursu, CS50. Un jūs redzēsiet, ka viss objektā tiks iekļauti cirtaini lencēm. Un mēs sākam saistīt lauku nosaukumus vai taustiņi ar dažādām vērtībām. Tātad jūs varat sākt, lai redzētu, kā šī veida jūtas kā asociatīvo masīvu PHP. Tātad mēs ejam asociēt laukumā vai galvenais nosaukums, Protams, ar string, CS50. Mēs ejam, lai būtu instruktors. Mēs ejam, lai būtu TFS. Mēs ejam, lai būtu vairāki psets un mēs ejam, lai ir reģistrēti. Un viens atdzist lieta ir visiem šīs lietas ir dažādi veidi, un tas ir pilnīgi naudas sodu. Tas ir sods par objektu, patiesībā, tas ir iespējams, gaidāms objektu ir kombinācija virknes un numuri un Booleans un bloki un kāds cits jūs varētu gribu būt iekšpusē jūsu objektu. Un ņemiet vērā, ka tie būs nosaukumi vai atslēgas, un tad mēs vienkārši noteikti tas ir vienāds ar nelielu kolu. Mērķauditorija: Ko tieši JSON nozīmē? HANNAH Blumbergs: Kas tieši tas JSON nozīmē? JSON tikai stendi JavaScript Object Apzīmējumi. Tas ir tikai veids, formatējumu. Jā. Tas ir veids, formatējumu mūsu datiem. In C, tas ir structs. PHP, tas ir asociatīvās bloki. JavaScript, mums ir objekti. Mērķauditorija: Tātad CS50 ir objekts? HANNAH Blumbergs: CS50 ir objekts šajā gadījumā. Tagad, kā mēs patiesībā piekļuve šie lauki vai mainīt šos laukus. Piemēram, pieņemsim, mēs nolēmām, ka jūs vēlētos vienu mazāk PSET šajā semestrī. Tā vietā, lai deviņiem, mēs esam tikai nāksies astoņi. Kā mēs mainīt? Ak, nepareizs ceļš. Ir divi veidi, kā mēs varam darīt. Numur viens ir ar dot notācija un numur divi ir ar kvadrātiekava papildinājumiem. Tā, piemēram, ja I vēlējās mainīt vai piekļuves psets lauks mūsu CS50 objektā, ko es varētu darīt, ir CS50.psets, tā nosaukums objekta DOT nosaukums lauka vai atslēgu. Ļoti līdzīgi, tas ir tieši tas, ekvivalents darīt CS50, un pēc tam kvadrātiekavās bikšturi, psets. Cool? Jā. Mērķauditorija: Tātad ir JSON tehniski JavaScript joprojām, kaut arī ar psets mums nodalīt to ārā [dzirdams]? HANNAH Blumbergs: Protams. Tātad jautājums ir, ir JavaScript un JSON ekvivalents? Tātad JSON ir apzīmējums, būtībā tā, ka mēs rakstīt out objektu no JavaScript. Tātad viņi nav tieši tāds pats. Es teiktu JavaScript, tur Ir objekti JavaScript. JSON ņem šos objektus un izdrukā tos un parāda tos vai uzglabā tos jaukā veidā. Tātad JSON nav programmēšana Valoda tā, ka JavaScript ir. Tas ir tikai par notācija Mūsu objekti JavaScript. Jā. Mērķauditorija: Tātad, kas īsti [Dzirdams] pabeigt? HANNAH Blumbergs: Protams. Tātad tas patiesībā nav nekas. Tas ir tikai veids, kā piekļūt. Tātad pieņemsim, ka mēs vēlējāmies, lai mainītu skaits problemātisko komplekti no deviņiem līdz astoņiem. Ko mēs darām, ir kaut ko darīt tāpat CS50.psets = 8 ;. Jā, liels jautājums. Tas ir tikai, lai parādītu jums sintaksi. Vai tiešām nav darīt kaut ko noderīgu. Kādi jautājumi? Pārvietojas tiesības kopā. So aplūkosim ātrs piemērs, kā JavaScript darbojas, jo es jums teicu to dara visas šīs labas lietas un ļauj mums mainīt tīmekļa lapas. Pieņemsim faktiski redzēt to darbībā. Tātad ņemt, piemēram, šo HTML failu. Un lieta, ko es gribu, lai jūs pievērst uzmanību ir Tas īpaši tag, kas ir poga, ar id search_button. Tas ir tikai uz lapu. Tāpēc tagad pieņemsim redzēt, kas mēs faktiski var darīt. Nu, pieņemsim, kad Noklikšķinot uz šīs pogas, mēs vēlamies veikt alert-- Jūs uzklikšķināt uz pogas. Let 's redzēt, kā mēs varam darīt. Tātad window.onload-- tas nav kaut kas ka jūs esat redzējuši klasē, tāpēc nav nepieciešams zināt to viktorīnas. Bet tas būtībā saka, OK, zvanu Šī funkcija kad logs kravas. Tātad tas ir tikai sava veida iestatīšanas kodu. Neuztraucieties tik daudz par to. Ko es gribu, lai jūs pievērst uzmanību ir šeit. Mēs sakām VAR searchButton vienāds document.getElementById search_button. Tātad, kā jūs varētu uzminēt, Kas tas ir teikts, OK, iet atrast elementu ar ID search_button. Un tagad mums ir, ka faktiskais elements, un es esmu gatavojas uzglabāt to mainīgs searchButton. Un tagad mēs faktiski var izmantot šo elementu un mainīt to, vai piekļūt tās vērtības, lietas, piemēram, ka. Mēs faktiski var sākt nodarboties ar mājas lapā. Tātad, šeit es saku, OK, tagad, ka man ir ka poga, kad tas ir noklikšķinājuši, nosaukt šo anonīms funkciju. Tātad, tas ir, ja anonīms funkcijas kļūt noderīga. Un ko tas funkcija darīt? Nu, tā vienkārši aicina šo trauksmes funkcija un tā saka, noklikšķinājāt uz pogas Meklēt. Tātad, kas notiks, ja es eju, lai kur šis HTML dzīvo un es noklikšķiniet uz pogas, Es nopirkšu iedomātā nedaudz brīdinājumu ka saka, jūs uzklikšķināt uz pogas. Tātad lietas, lai koncentrētos uz here-- document.getElementById izpaužas īpaši HTML elements ar doto ID. Un tagad mēs varam noteikt ko vajadzētu notikt, ja kas īpaši elements ir uzklikšķināt. Mērķauditorija: Mums ir, lai visi, kas ir? HANNAH Blumbergs: Sorry? Mērķauditorija: Vai mums fiziski kodu visu, kas? HANNAH Blumbergs: Vai mums fiziski kodu visu, kas? Jā. Vai tas nav sava veida kaitinošas? Tas ir daudz kodu. Mērķauditorija: Jūs varētu importēt kaut ko. HANNAH Blumbergs: Right. Mēs varētu izmantot kaut ko. Un particular-- ak, tas ir man saki man mācīt sadaļā. Jo īpaši, pieņemsim izmantot bibliotēku jQuery, jo tas bija tiešām garš un tiešām kaitinošas un es vēlos, lai varētu vienkāršot to un padarīt to īsāku un vieglāk rakstīt. Tātad jQuery ir JavaScript bibliotēka. Tātad JavaScript ir programmēšana valoda; jQuery ir bibliotēka. Un tas padara ķekars lietas vieglāk. Tas padara mainās un iet pāri HTML dokuments daudz vieglāk. Tas padara apstrādes notikumi vieglāk. Tas padara vieglāku animācija un tas padara Ajax vieglāk. Tātad pieņemsim pāriet uz diviem šīs lietas jau tagad. Atvainojiet. Pirms mēs darām, dažas pamata sintakse. Tas ir tas, ko visvairāk zvani jQuery bibliotēka izskatās. Mēs izmantojam šo dolāru sign-- nav savienojuma zīme PHP, vienkārši inconvenient-- nosaukumu selektors, dot, un tad prasība. Tātad, pieņemsim redzēt dažus konkrēti piemēri par to. Tātad, šis faktiski ir tas pats kodu no notikuma slaida. Tātad šis ilgi, neglīts lieta kļūst tas ir daudz jaukāk, mazākas lieta. Tātad pieņemsim mēģināt lauzt šo leju. Šis saka, OK, jQuery-- šī dolārs sign-- jQuery, atrast man logu. Tā ka ir selektoru. Kad tas slodzes, zvaniet šo funkciju. Tātad tas ir viss iekšā. LABI. Līdz šim tik labi? Viss kārtībā. Tagad, jQuery, atrast mani ir lieta ar ID search_button. Un kas tas ir noklikšķinājuši, nosaukt šo funkciju. Un tad šī funkcija ir tieši tāds pats. Just do mazliet no brīdinājumu, noklikšķinājāt uz pogas Meklēt. Tātad, tas ir patiešām jauki. Tas tiešām kondensējas un vienkāršo mūsu kodu. Kā es zinu, ka tas ir ID search_button un nepatīk klases search_button? Mērķauditorija: hashtag? HANNAH Blumbergs: Jā. Tas hash simbols, tas ir tāpat kā CSS. Līdz ar to atcerēties, ar CSS, kad mēs gribēja, lai izvēlētos kaut ko ID, mēs izmantojām mārciņu zīmi. Un, kad mēs vēlējāmies, lai izvēlētos kaut ko klasē, mēs izmantojam dot. Liels. Jēga? Tātad jQuery ir paredzēts, lai vienkārši padara mūsu dzīvi vieglāku. Jā. Mērķauditorija: Tātad es esmu nedaudz mulsina, jo to, kā anonīma funkcija darbojas. Vai varat nosaukt šo anonymouse funkcija, darbojas? Kā to sauc? HANNAH Blumbergs: Protams. Tātad funkcija ir tikai atslēgvārds, kas saka, es esmu par to, lai definētu funkciju. Mērķauditorija: Ak, OK. HANNAH Blumbergs: OK? Un tad mēs nodot to kā arguments kuri paredzēti, pieņemsim šī iekšējā one-- ar klikšķi funkciju. Tātad yeah, tāpēc šīs funkcijas, šī anonīma funkcija, kļūst par faktisko arguments. Līdz ar to atcerēties JavaScript, mēs var ārstēt funkcijas, vērtībām. Mērķauditorija: Ak, OK. HANNAH Blumbergs: Jā. Man patīk, ka "oh." Nice. Citi jautājumi? Time? MARIA ZLATKOVA: Labi. Labs. HANNAH Blumbergs: satriecošs. Dažas ātri noderīga jQuery. Es neesmu gatavojas iet cauri visiem šiem. Šie slaidi būs up tiešsaistes mazliet vēlāk, lai jūs varētu pārbaudīt tā out mazliet vēlāk. Bet būtībā, vispārējā modelis tur, kur mēs sakām, OK, hey, jQuery, šeit ir mana selektors un tad šeit ir rīcība. Un jūs varat darīt lietas, piemēram, piekļuve ar vērtība formā, piekļūt kādu HTML, kontrole, kas notiek, kad lietotājs iesniedz formu, lietas, piemēram, ka. Jā. Mērķauditorija: Tātad eksāmenu, mēs ejam uz nepieciešamību zināt diezgan daudz no jQuery dokumentācija. Tāpēc, ka mēs copy / paste jQuery dokumentāciju, lai mūsu apkrāptu lapas, Kur ir robeža novilkta? Tāpat, cik daudz mums vajag zināt? HANNAH Blumbergs: Great jautājums. Jautājums ir būtības ņemot vērā, ka jums nevar piekļūt jQuery dokumentāciju testa laikā, cik daudz Jums vajadzētu zināt? Mēs nevarētu gaidīt, lai jūs nākt klajā ar kādu izlases funkciju ka mēs varētu sagaidīt jūs Google. Lietas, kas ir godīga spēle ir man būtu teikt tikko veida vispārējo sintaksi, spēt izvēlēties pēc ID un ar class-- tāpēc tāpat kā CSS. Un tad faktiskie funkcijas themself, mēs varētu pateikt. Jā. Mērķauditorija: Tātad, kad jūs izvēlaties ar klasi nozīmētu dot. HANNAH Blumbergs: Jā, tieši tā. Labs. Kad jūs izvēlaties ar klasi, tas notiek kas dot vietā restīte. Jā. Mērķauditorija: Vai jūs iet pa starpību starp atlasot pēc ID un klases? HANNAH Blumbergs: Protams. Atšķirība starp atlases ID un izvēloties ar klasi. Tātad, kā teica Maria a mazliet agrāk, tur var būt tikai viens HTML elements ar konkrētā ID, savukārt klasē, tas ļauj mums grupai ķekars atšķirīgi faktori kopā, lai lietas, kas ir saistītas, bet nav tieši tāds pats. Vai tas atbildēt uz jautājumu? Lielisks. Jā. Mērķauditorija: Ko darīt, ja jums ir vairāki lietas, kas ir tajā pašā klasē? HANNAH Blumbergs: Kas notiek Ja jums ir vairākas lietas, kas ir vienādi klase? Tā, piemēram, ja mēs tikai izmantojot tīru JavaScript, mēs varētu darīt kaut ko līdzīgu document.getElementsByClass. Un tad, kas tas patiesībā dara ir atgriežas masīvs elementiem. Un jums ir vai nu atkārtot vairāk viņiem vai atrast kuriem viens jūs vēlaties. Tas nav gatavojas sniegt Jūs esat viens elements. Tas notiek, lai dotu jums masīvs elementiem. Liels jautājums. Jebkas cits? Lielisks. Tāpēc es domāju, ka, ja jūs esat iepazinušies ar jebkurš jQuery redzējāt uz PSET, Jums vajadzētu būt labi iet. Jautājums? Ak, nē. Man tiešām ir mācīt. Atslābinieties. Tas būs labi. Es tur nokļūt. Parunāsim par Ajax. Tātad Ajax būs a-- labi, Sāksim ar to, ko tas nozīmē. Tas ir akronīms. Tas nozīmē asinhronā JavaScript un XML. Un XML pamatā būs [Dzirdams] ar tāda tipa mūsu datiem. Bet mēs neesam faktiski izmantota XML. Tā vietā, mēs tikai izmantot JSON. Vārdu sakot, tas ir daži data-- asinhrono, JavaScript, un dati, Šajā gadījumā, JSON. Un mūsu mērķis, kā mēs minēts mazliet agrāk, ir, lai varētu veikt pieprasījums, ir, ka lūgums darīt tā lieta fons, bet turpina darīt visu, mēs gatavojas darīt. Un tad, kad šī informācija ir gatava, tad mēs iekļaut to. Tātad, pieņemsim redzēt, ko tas tiešām izskatās. Un tas, jums vajadzētu būt mazliet pazīstami no pset8, vienu jūs vienkārši pagriezās. Tātad, šeit ir derīgs jQuery funkcija, kas mēs varētu gribu zināt about-- šo dolāra zīmi. Tātad tā saka jQuery funkcija, .getJson. Un ko šī funkcija dara tas ir aizņem URL un daži parameters-- tāpēc es domāju, ka šajā gadījumā no pset8, tas bija, piemēram, URL bija articles.php un parametri bija iet = dažas pasta kodu. Un tā saka, OK, iesniegt pieprasījumu šis URL ar dotajiem parametriem. Un tas vienkārši notiek. Kad tas beidzas, tas ir vai nu gatavojas veiksmīgi pabeigta vai tas notiek, lai izgāztos. Tātad šis ir ekvivalents zvanu Rob un lūgt viņam kaut ko darīt. Un tad, kad viņš prasa atpakaļ, viņš ir vai nu teiksiet es esmu darījis, vai man neizdevās. Tātad gadījumā, ja tu esi darīts, jūs sakāt, OK, es esmu darīts. Un tad jūs saucat šo funkciju. Šajā gadījumā, tas būs funkcija, kas prasa zināmu informāciju. Vienu mēs parasti rūp, ir dati, dati, kas mēs patiesībā atpakaļ kā rezultātā zvanot .getJSON. Un jūs varat kaut ko darīt ar to. Tātad, šajā gadījumā pset8, mēs parādīta to kā sarakstu. Fail būs funkcija kas ieslēdzas, ja pieprasījums neatbilst kāda iemesla dēļ. Un gadījumā, ja pset8, mēs vienkārši console.log to. Visus jautājumus par šo? Jā. Mērķauditorija: Vai mēs varam tikai izmantot funkciju teta tā vietā, lai funkcijas, textStatus, jqHXR. HANNAH Blumbergs: Protams. Tātad yeah, es domāju, ka PSET, mēs tikko redzējām funkciju datus. Tātad tas ir tikai the-- jā, OK. Tas, ko mēs redzējām PSET. Tas ir pilnīgi naudas sodu. Šie ir tikai, ja vēlaties izraut vairāk informācijas, tās ir lietas, kas jūs varētu saņemt no .getJSON. Labs jautājums. Jebkas cits? Jā. Mērķauditorija: Tātad .getJSON ir Ajax? HANNAH Blumbergs: OK. Tātad šis ir sava veida kutelīgs daļa. Tas ir jQuery funkcija, kas ļauj jūs darīt asinhrono zvanus. Un tie asinhrono zvanus, kas ir tas, ko mēs esam atsaucoties uz kā Ajax. Jā. Tas bija man ļoti ilgu laiku pull izņemot tad, kad es biju students. Mērķauditorija: Vai varat teikt, ka atkal? HANNAH Blumbergs: Jā. Vai es varu teikt, ka atkal? Šī .getJSON funkcija, tas ir jQuery funkcija. Un tas notiek, lai asinhrons zvanu. Un šie asinhrono zvani, mēs esam tika atsaucoties uz tiem, kā Ajax. Jebkuri citi jautājumi? Mums ir tikai pa kreisi pāris minūtes. Un Maria gatavojas satīt ar drošību un tad mēs ejam kas tikai par darīts. MARIA ZLATKOVA: satriecošs, OK. Tātad tas is-- vienkārši aizņemt pāris Sekunžu lai apskatīt šo. Un tas nav kaut kas tiešām liels. Un var kāds man pateikt, kāpēc? Kas notiek foo un var varētu potenciāli radīt kaut ko sliktu, un ko tas sauc? Jā. Mērķauditorija: Ja arguments, kas ir pagājis ir vairāk nekā 12 rakstzīmes, tas varētu pārplūst. MARIA ZLATKOVA: Right. Perfect. Kā to sauc? Jūs tikko minēja to. Mērķauditorija: Bufera pārpildes. MARIA ZLATKOVA: Yup, bufera pārpildes. Tātad tas ir kaut kas, mēs atsaukties kā bufera pārpildes. Un mēs redzam, ka iekšpusē foo, mēs esam definēta mūsu bufera, C, ar izmēru 12. Tomēr galvenais, mums nav pārbaudiet jebkādā veidā vispār vai tā, ka argv1-- bija otrais arguments. Mums nav pārbaudīt, vai izmērs no tā ir atbilstoša. Tātad, ja mums bija īpaši ļaunprātīgs lietotājs kas izvirzīti kādā argumentu, kas bija ilgāk nekā 12, un pēc tam, iespējams, aiz robežas, kas arguments, bija daži izpildāmu kodu ka viņš mēģina darīt kaut ko sliktu ar to; tad tas, kas notiktu, svarīgākas par atgriešanos adrese foo funkciju, izraisot funkciju, kad atgriežoties izpildīt šo kodu. Un tad sliktas lietas varētu notikt. Vai tas ir jēga, lai ikvienam? Un kā mēs varam aizsargāt pret to? Kādi ieteikumi? Būtībā, iekšpusē potenciāli foo, kā mēs varam pārbaudīt, lai pārliecinātos, ka tas nevar notikt? Mērķauditorija: Ja lielums 12 tiek pārsniegts, jūs varētu piešķirt papildu atmiņu? MARIA ZLATKOVA: ierosinājums ir, piešķirt papildu atmiņas lieluma pārsniegts. Patiesībā, mēs varam darīt kaut ko vienkāršāka nekā, ka labi daudz. Mēs varam tikai iegūt virknes garumu par argumentu, ka ir ievadīta, pārbaudīt, ja tas ir mazāks par vai vienāds ar 12-- kas ir tas, ko mēs gribam būt, jo mēs nevēlamies to pārsniegusi mūsu bufera. Un tad, ja tā nav, mēs var strādāt ar argumentu. Un tad, ja tas tā ir, mēs tiešām gribam līdz yello potenciāli pie lietotājam. Bet tas ir tas, kā mēs varētu darīt. Jā. Mērķauditorija: Vai jūs, izskaidrot memcpy nekustamo ātri? MARIA ZLATKOVA: Ak, piedodiet. Jā. Memcpy notiek neatkarīgi is-- sorry, OK. Memcpy notiek kāds ir bar, kāds ir pagājis uz foo kā komandrindas argumentu. Tātad, tas notiek, lai argv1. Argv1 sauc bāru šeit. Tātad, tas notiek, lai bāru un tas notiek, lai kopētu to c. Mērķauditorija: OK. MARIA ZLATKOVA: Un tas notiek, lai copy-- trešais arguments tikai atsaucas to, cik daudz tas notiek, lai iekopēt c. Mērķauditorija: Ah. Tātad šis viens spēlētājs kopēšana to visu pēc tam. MARIA ZLATKOVA: Jā, tas kopēšana visi no tā. Yep. Pirmkārt, mēs pārliecināmies, bārs nav vienāds null, jo tas ir rādītājs. Tad mēs iegūtu virknes garumu joslas. Mēs pārliecinieties, ka tā ir mazāks par vai vienāds ar 12. Un tad tāpēc, ka mēs esam pārliecinājās, mēs faktiski var memcpy un būt pārliecināti, ka tas ir OK. Kādi jautājumi? Liels. Man ir divi patiess vai nepatiess jautājumiem. Vai kāds man pateikt uzreiz ja tie ir patiess vai nepatiess? Jā, tā ir nepatiesa. Tieši tā. Abas no tām ir nepatiesa. Tātad izmantojot vienu paroli nekad nav īsti laba ideja jo, ja kāds zina, paroli, viņi var vienkārši piekļūt visiem jūsu citus kontus. Un tad ikonas nedarīt neko lai nodrošinātu drošību. Mēs parasti jāmeklē HTTPS nevis HTTP un URL. Un daži citi veidi uzbrukumi, ka mēs esam minēts, ka Deivids ir minēts lekciju, SQL injekcijas uzbrukumu. Mēs jau redzējām, ka, ja mēs don't-- CS50 query funkcija nodrošina, ka SQL injekcijas uzbrukumiem nevar notikt. Bet, ja mēs nebūtu izmantojot CS50, quote, likt pēdiņas beigās "in vaicājumu," mums būtu pārliecināties, ka lietotājs ievade nav faktiski dažas SQL vaicājums, kas radīs visu Mūsu tabulas samazinājies vai kaut kas slikts, lai notikt ar mūsu datu bāzē. Sesija nolaupīšana ir cita veida uzbrukums kas notiek, kad daži slikti persona izmanto dažas upura sesiju ID piekļūt pieteikšanās informāciju. Tik ļoti niecīgs piemērs, kas ir piemēram, ja mums ir publisku datoru, tad slikts cilvēks piesakās un pēc tam tie ir sīkdatnes, kas saglabāti. Un cookies nemaina par sesiju. Tad mēs esam cietušais iet un tad ieiet mājas lapā. Šie cepumi nemaina par noteiktu sesijas. Un tad cietušais piesakās mājas lapā un pēc tam atstāj. Un tad persona, kas iet atpakaļ pēc tam var vēl izmantot savas sesijas ID piekļūt savu informāciju. Tātad tas ir viens piemērs kā tas varētu notikt. Un tad es nebūtu jāuztraucas pārāk daudz par īpašu kodu vai kaut piemēram, ka tas varētu izraisīt to, bet kam kaut kādas idejas, ko veida iesaistīti šajā mainīgie ir. Un tad manipulējot galveni dati ir cita veida uzbrukums kas ir Deivids ir runāja par. Un tas tikai norāda uz kas var notikt, ja atbilde, HTTP atbilde iekšpusē mūsu header nav dezinficē pareizi. Un kāds no fields-- piemēram, ja kāds pārraksta viens no galvenes Vērtības, kas satur kaut ko vairāk nekā ko viņi būtu contain-- un faktiski satur, piemēram, 200 OK statusa kods, tad viņi iespējams, varētu darīt ļaunprātīgs lietas, kad viņi nav paredzēts. Bet es nebūtu jāuztraucas pārāk daudz par īpašo kodu kas var izraisīt to, vienkārši veida izpratnes augsta līmeņa lietas, piemēram, ka. Es domāju, ka tas ir viss ka mums ir segšanai. Amazing. Kāds ir kādi jautājumi par kādu no lietām, ko mēs uz? Jā. Mērķauditorija: Tātad viena veida vairāk loģistikas jautājums. Vai saturs galvenokārt koncentrējās par lietām pēc viktorīnā 1? MARIA ZLATKOVA: So Jautājums ir, ir saturs koncentrējas galvenokārt uz lietām pēc viktorīnā 1? Tātad uzsvars tiek likts uz pēc viktorīna 1, izņemot ka mums ir nepieciešams koncentrēties uz lietām pset5 un daudz datu struktūras ka mēs uz. Un mēs nevaram teikt, ka mēs var ignorēt kaut ko pirms , jo tas balstās uz to, kā labi. Tā koncentrēties uz to, plus pset5 materiāls tāpat arī saistītas sarakstiem, skursteņi, rindas, un viss ka Hannah piegāja. HANNAH Blumbergs: Right. Jā, mēs devāmies pa visu C sīkumi pašā sākumā ļoti ātri. Bet, pārliecinieties, lai pārskatītu to. Iet atpakaļ un skatīties viktorīna 0 pārskatīšanu. Pāris vairāk loģistikas piezīmes, vienkārši, bet mums ir jūsu uzmanību. Mums nāksies biroja stundas gan pirmdien un otrdien naktī. Viņi gatavojas būt MD 119. Tas viss ir mājas lapā, tāpēc ja jums nav dzirdēt to, neuztraucieties. MARIA ZLATKOVA: 8:30 līdz 11:00. HANNAH Blumbergs: Jā, 8:30 līdz 11:00. Mēs būsim tur. Mēs būsim tur, lai atbildētu uz jautājumiem. Tas ir diezgan chill un jautri. Jūs guys var uzdot jebkādus jautājumus kas jums ir uz viktorīnas 1. Un viktorīna 1 ir ieslēgts Trešdiena, lai jums veicas. Ja jums ir kādi jautājumi, varbūt nākt runāt ar mums šeit viens-on-one. Cool. Liels paldies. MARIA ZLATKOVA: Paldies tik daudz, puiši. Mērķauditorija: Yay. [Aplausi]