[00:00:02] [Mūzikas atskaņošanai] HANNAH: Hi, visiem. Paldies jums puiši tik daudz, lai nāk ārā ir pretīgi laika Quiz vienu pārskatīt sesiju. Kā jūs guys zināt, viktorīnas viens ir šo trešdien. Tātad, mēs esam gatavojas iet caur ķekars tēmām. Davin: Hei, es varu teikt kaut kas ļoti ātri? HANNAH: Jā, Davin notiek pateikt kaut ko reālu ātri. Davin: Sorry. Tikai ļoti ātri, ja jums ir jautājumi par viktorīnu, jūs varat doties tiešsaistē. Iet 2014. viktorīna vienu, par viktorīnas. Tas ir ieguvuši loģistiku aptuveni kur iet, kad iet. Ja jūs vienlaikus uzņemti, mēs esam nāksies grima viktorīna 5:30. Vai, ja jūs man atsūtīja jautājumu, Jums ir kāda cita jautājuma. Bet 05:30 ir make-up laiks trešdien. Bet, ja jums ir jautājumi, vispārīgi jautājumi, online ir visas loģistiku. Lai pārbaudītu tur pirmais. [00:00:47] HANNAH: Awesome. Tātad, šeit ir liels saraksts ar tēmām ka mēs ejam, lai iet līdz šodienai. Es esmu gatavojas, lai segtu visas ar C sīkumi, kas ir tas, ka pirmais kolonna. Tātad C sīkumi, ka mēs uz kurām pēc viktorīnas nulles. Sākot ar saistītajā sarakstā kas ietver norādes. [00:01:05] Labi, tāpēc mēs redzējām šo pēdējā pārskatīšanas sesijā tāpēc es esmu gatavojas iet cauri tas ir mazliet ātrāk. Vienkārši paceliet roku, ja jūs vēlaties, lai es palēnināt vai vērsties kaut ko tālāk. Bet mēs izmantojam saistītas sarakstus, jo mēs sākām C ar masīviem. Un masīvi ir liels, bet Problēma ir tā, tie ir fiksēts izmērs. Saistītās sarakstus ļauj mums, lai radītu dinamiski izmēra datu struktūras. [00:01:28] Un mums ir mūsu galvenās darbības, ievietot, dzēst, un meklēt. Un mēs varam darīt ieliktni sliktākajā gadījumā nemainīgs laiks ja mēs vienkārši ielieciet to pašā sākumā. Dzēst un meklēt, sliktākajā gadījums liels oh n laika. Tātad vēlreiz, tikai uzsist caur šiem attēliem, Es zinu, ka mēs redzējām šos pēdējo reizi, bet mēs vēlas sekot mūsu saistīts saraksts ar sekotu vadītājs mūsu saistīts saraksts. Jo mēs zinām, ka katrs no mūsu mezgliem ir tikai gatavojas, lai norādītu uz Nākamais mezgls mūsu saistīts sarakstā. [00:01:58] Tātad, tas ir, kā mēs izsekot. Pat ja tie nav nepārtraukti gabali atmiņu, mēs varam atrast tos, tikai pēc dažādu bultiņām. Te ir mūsu struktūra par saistīts saraksts mezglā. Mēs redzējām šo pēdējo reizi. Mums ir mūsu struct mezglā. Un tam ir divas īpašības. Numur viens, faktisko vērtību mēs gribam saglabāt. Šajā gadījumā, tas ir skaitlis. Tas varētu būt virkne, tas varētu būt char, ko jūs vēlaties. Un tad mums ir sekot nākamais mezglu mūsu saistīts sarakstā. Tāpēc, ka ir būs kursoru uz nākamo mezglu. Ja tu būtu tikai darot meklēšanu, kā es teicu iepriekš, jūs ir sekot jūsu bultiņām uz leju. Ievietošanas, jūs varētu sekot līdzi no tā, kur pārējā jūsu saraksts ir. Un jūs vēlaties, lai novirzīt galvu norādīt uz mūsu jauno elementu, kas šajā gadījumā, ir viens, un tad viens būs punkts atlikušajam saistītajā sarakstā. Tātad vēlreiz, es zinu, tas ir maz mazliet atkārtot no viktorīnas nulles. Tāpēc mums ir jābūt ļoti uzmanīgiem par kārtību, kādā mēs darīt šo pointings tāpēc mums nav pazaudēt aizmugurē saraksta. OK, kādi jautājumi ar tikai atsevišķi saistīts sarakstus? Awesome, OK, atdzesē. [00:03:06] Tāpēc tagad, mēs gatavojamies iet uz kaut ko tikai nedaudz sarežģītāka, divkārt saistītas sarakstus. Tātad papildus saglabājot izsekot nākamo mezglu, Mēs arī vēlamies, lai sekotu iepriekšējā mezglā. Un tas ļauj mums, ja mēs esam kādā brīdī mūsu saistīts sarakstā, ne tikai iet uz priekšu, bet arī atkārtot atpakaļ. Jo, kā mēs redzējām atsevišķi saistīts saraksts, ja mēs būtu kādā mezglā, un visi pēkšņi, mēs nolēmām, patiesībā, es gribu iet uz mezglu tieši pirms manis, jūs ir iet visiem ceļu atpakaļ uz galvas un atkārtot, izmantojot līdz brīdim, kad atrasts mezgla jūs meklējat. [00:03:35] Tāpēc tas padara lietas nedaudz vieglāk, jo mēs esam mēģinot atkārtot caur mūsu saistīts saraksts. Bet tas liek mums sekot viens vairāk rādītājs, tāpēc vēl viens mezgls zvaigzne. Labi, tāpēc šeit nāk fun daļa. Mēs ejam, lai praksē īstenotu noņemt, lai divkārt saistītas sarakstiem. Tātad tas ir kaut kas ir pilnīgi godīga spēle viktorīnas. Tā atnāca uz pagātnes viktorīnas. Tāpēc noteikti jāsagatavo kodēt mazliet C Neaizmirstiet, ka ar visiem Šis jautri PHP un JavaScript, mums vēl ir jāatceras darīt C. ​​Tātad atsvaidzināt ka Ja jūs sajūta sarūsējis. [00:04:12] Labi, pieņemsim redzēt, ja mēs varam izdarīt. OK, atdzesē. Tātad mēs ejam izmēģināt rediģēt tiesības šeit, un cerams, ka tas notiek, kā plānots. Visas tiesības, vai kāds grib man dot ieteikums par to, kā man vajadzētu sākt? Tikai pieņēmums es esmu pieņemšanas ir tas, ka man jau ir struktūra noteikta, man parādīja pēdējā lappusē, uz pēdējā slaida. Un es esmu uzglabājot galvu mana saistīta saraksts kādā rādītājs sauc sarakstu. Vai kāds vēlas saņemt mani sākās? [00:04:42] Mērķauditorija: Vai jūs varat izveidot jaunu mezgla zvanīt pa sarakstu? [00:04:45] HANNAH: satriecošs, tāpēc mēs ejam, lai radītu jaunu mezglu rāpot cauri sarakstam. Man patīk, ka. Es ņemšu tikai aicinu to rādītājs, ja tas ir OK. Un kur tas sākotnēji sākt? [00:04:57] AUDITORIJA: Iespējams at galva no saraksta. HANNAH: Beautiful. Mēs vēlamies, lai sāktu pie galvas, kas Es teicu tiks saglabāti sarakstā. Awesome. Līdz šim tik labi. Un tagad, mūsu mērķis ir atkārtot cauri sarakstam kamēr mēs atrodam mezglu ar vērtība, n, ka mēs vēlamies, lai izdzēstu. OK? [00:05:13] Tāpēc tagad ir daļa, kur mēs vēlamies atkārtot, izmantojot. Var kāds ieteikt veids, kā atkārtot, izmantojot? [00:05:19] Mērķauditorija: cilpa. [00:05:20] HANNAH: cilpa. Es mīlu to. Konkrēti, mēs varam mēģināt, kamēr cilpa. OK, un mēs zinām, ka mēs esam sasnieguši beigas mūsu saraksta, ja ko? Mērķauditorija: Kad rādītājs ir nulle. HANNAH: Kad rādītājs ir nulle. Skaisti, es mīlu to. OK, atdzesē. Tik žēl, ja mans iesiešana brace ir veida kritiena ārpus ekrāna. Mēs atnesa atpakaļ. OK, atdzesē. Kas tālāk? [00:05:48] Tātad mēs zinām, mēs vēlamies, lai izdzēstu mezglu, kas ir vērtība n. Tātad, pieņemsim atrast lietas kur mēs faktiski atrast mūsu mezglā. Tātad, kā es varētu pārbaudīt, vai? Es gribētu tikai teikt, ja rādītājs, un tad, ja es vēlas iegūt vērtību no rādītāja, Man vienkārši arrow n, vienāds n, parametru ka mums deva šo funkciju, mezgls, ka mēs gribam, lai faktiski dzēst. Visus jautājumus, līdz šeit? Labi. Labi, tāpēc tagad pieņemsim izdarīt ātri attēlu uz kuģa, lai vizualizēt to. [00:06:24] So teiksim tur ir mūsu skaisto mezglā. Un tas ir vērtība, es ņemšu tikai teikt četri. Un tas norāda uz nākamo mezglu mūsu saistīts sarakstā. Un tur nekas pirms tā. Tāpēc mums ir mūsu iepriekšējā norādot uz neko. Šajā gadījumā, mēs norādām atpakaļ. OK, tikai izveidojot manu saistīts saraksts nekā šeit. Un mums ir saraksts, kas norāda savu struktūru, lai sāktu ar. Es izdarīt viens vairāk pabeigtības labad. OK. Es norādīt šo jautājumu. Un es atzīmēt, ka viens atpakaļ. Ups, sorry. Jā, dabūju šo atpakaļ. Darīt to vēlreiz. OK, tur mēs ejam. Labi, got to. Labi, šeit ir mūsu attēlu. [00:07:21] Labi, tāpēc mēs vēlamies izskatīt divas lietas. Pirmais gadījums ir, ja mezglu mēs vēlamies izdzēst ir pašā sākumā mūsu sarakstā. Un tad, otrais gadījums, ka mēs gribam apsvērt, ir, ja tas ir citur. Es saprotu, ka tas pilnīgi netīrs zīmējums ar visu manu dzēšanu, bet, cerams, mēs cenšamies darīt zināmu ar kādu kodu. [00:07:40] Labi, tāpēc pieņemsim uz gadījumiem kur mēs atradām mūsu mezglā, un tas ir pie ļoti sākumu mūsu saistīts saraksts. Kāds man ieteikums šeit par to, kas Man vajadzētu darīt, lai faktiski likvidētu mūsu mezglu? Tas ir nedaudz grūts. OK? [00:07:56] Mērķauditorija: Jums ir jāņem mezgls, kas varētu būt pirms tā un dara to norāda uz viens, kas varētu būt pēc tam, un veikt mezglu, ka būtu pēc tam, un padarīt tas norāda uz mezglu pirms tā. HANNAH: Tieši tā. Labi, tāpēc šis ir gadījums where-- mums ir divas lietas. Mums ir gadījumu, kad to mezgls, ka mēs meklējam ir priekšējā no saraksta. OK, un tad lieta, kas jums aprakstīts citādi, vai ne? Tas ir kaut kur citur sarakstā. Tātad jūs teicāt, mums ir nepieciešams, lai apskatīt mezglā iepriekšējā, un padarīt iepriekšējo mezglu norāda uz nākamo mezglu. So teiksim, mēs esam mēģina izņemt piecus manā ļoti netīrs zīmējumu nekā šeit. Mēs vēlamies, lai pārliecinātos, ka četrām tagad norāda uz sešiem. Četri Nākamās punkti līdz sešiem. Un sešas iepriekšējie norāda uz četriem. Tas ir mūsu mērķis šeit, vai ne? Tas ir tas, ko es domāju, ka jūs tikko teica tur. [00:08:56] Labi, tāpēc pieņemsim iegūt šo pirmo gabalu. Darīsim ir iepriekšējais rādītājs iepriekšējā. Tātad četri s blakus vajadzētu norādīt uz ko? Tieši tā, šajā gadījumā, seši. Tātad mums vajadzētu teikt rādītāju, nākamo. OK? Labi. Tātad pieņemsim atbrīvoties no šīs neglīts attēlu un mēģināt izdarīt nedaudz nicer vienu. Mums ir mūsu saraksta galva šeit. Un tas norāda uz pirmo mezglu mūsu saistīts saraksts, kas mēs teicām, ir četri. Lūk, mūsu otrais mezglā, pieci. Un mūsu trešais mezglā, seši. Tikai mēģina izdarīt tieši tādu pašu attēlu, tikai nedaudz vairāk tīri. Labi, tāpēc četri nākamais sākotnēji norāda uz pieciem. Pieci Nākamās punkti līdz sešiem. Seši iepriekšējie punkti līdz pieciem. Un piecas iepriekšējie norāda uz četriem. Tik daudz patīkamāku! OK, atdzesē. [00:10:04] Tāpēc tagad, ko mēs darījām tikko šeit, šī līnija kods, kas saka rādītājs iepriekšējā Nākamais, lai ko tas nozīmē? Tas nozīmē, ja mēs meklējam pieci, dodieties uz iepriekšējo mezglu, un tas ir nākamais tagad norāda uz pieciem nākamo. Tātad būtībā, ko tas dara ir tas, ka ir dzēšot šīs bultiņas un padarot to izlaist tiesības pār pieci. Vai tas ir skaidrs? Es zinu, ka var būt mazliet paviršs. Es redzu kādu galvu pamāj. Tas ir labi. OK, atdzesē. Tagad, kas ir nākamais solis? [00:10:39] Esmu reset nākamo. Tagad, kas cita arrow man ir nepieciešams, lai mainītu? Tas viens tepat. Seši iepriekšējo. Mēs nevēlamies sešas iepriekšējos norādīt uz pieciem vairs. Mēs vēlamies, lai tā norāda uz četrām. Vai tas picture jēga? Tāpēc tagad mēs varam faktiski veikt piecas out. Tātad, pieņemsim iegūt šo gabalu. Ko man vajadzētu darīt pirms I reset seši iepriekšējām līdz četriem? Jebkuras idejas tur? [00:11:14] Mērķauditorija: Atbrīvojiet mezglu starp tos nosakot to null? HANNAH: Cool. Noteikti, mūsu gala mērķis ir būs, lai atbrīvotu mezglu. Tātad, mēs varam darīt, ka tieši šeit. Bezmaksas rādītājs. Absolūti. Bet vēl pirms tam, pieņemsim just-- Mūsu mērķis tiesības šeit ir noteikt rādītāju nākamo iepriekšējā vienāds ar rādītāju iepriekšējā. Es zinu, tas kļūst uz augšu. Labi, pieņemsim take-- atdzist. Var ikviens redzēt šo apakšējā līnija? Vai tas ir super niecīga? [00:11:50] Tātad, pirms mēs izpildīt šī līnija šeit, mēs gribam lai pārliecinātos, ka rādītājs nākamais nav null. Jo, ja rādītājs nākamais null, kāda veida kļūda es saņemšu, kad es cenšos atsauce null rādītājs? Mērķauditorija: Seg vaina. HANNAH: seg vaina, skaisti. Labi, tāpēc, ja tas nav null, tad mēs varam reset. Un mums ir sešu punktu atkal četri. Jautājumi Līdz šim punktam? Jā? [00:12:17] Mērķauditorija: savā pirmajā ja paziņojumu, did you nozīmē ir uz bultiņas Nākamais, vai [dzirdams]? HANNAH: Es gribēju rādītājs bultiņas n. Vārdu sakot, tas, ko es cenšos darīt ir teikt, pašreizējo mezglu, ka es esmu atkārtojot vairāk, pašreizējais mezgls, ka Es skatos, es esmu glabājot rādītājs. Un es gribu zināt rādītājs s vērtība, kas šajā gadījumā ir n. Un es gribu redzēt, ir mezglu Es meklēju mezglā es esmu ar mērķi dzēst? Tātad, tas ir iemesls, kāpēc mēs esam šeit Pointer n. [00:12:47] Mērķauditorija: Tātad arrow iet līdz n, jūs nosakāt vērtību un uzglabāt to mezglu sauc n? [00:12:55] HANNAH: Tātad, tas ir tāpat, ja es esmu iet caur šo saistīts saraksts un norāda uz pieciem. Ja es gribu, lai iegūtu šo vērtību, ja Es vēlos saņemt šo numuru, 5, Man ir jādara rādītāju bultiņas n. Cool? Yeah. [00:13:07] Mērķauditorija: ir n nosaukumu mainīgo? HANNAH: Jā. Tātad, ja mēs uzsist pa vienam slide, n ir nosaukums no vērtības iekšpusē mezglu mūsu saistīts sarakstā. Un es zinu, tā var iegūt mazliet mazliet mulsinoši, jo mēs arī aicinām lieta ka mēs vēlamies, lai izdzēstu n. Tātad, tas ir, ja tas viena rinda nāk no. Yeah? [00:13:27] Mērķauditorija: Kas jums ir [Dzirdams], kā viņi strādā? Rādītājs [dzirdams]? [00:13:35] HANNAH: Protams. Vai jūs runājat about-- kura līnija? Mērķauditorija: Pēdējā rindā [nedzirdama]. [00:13:44] HANNAH: Protams, OK. Tātad, pieņemsim apskatīt attēlu Lai mēģinātu izskaidrot šo. Es atvainojos, par kamera, jautājums bija mēs varam izskaidrot rādītājs arrow nākamais rādītājs iepriekšējā. Labi, tāpēc pieņemsim, ka mēs esam pie pieciem un mūsu mērķis ir izdzēst pieci. Tātad Pointer nākamais, kurš no šiem trīs mezgliem tas, kas mums dod? Tas mūs noved pie sesto mezglu, vai ne? [00:14:10] Labi, tāpēc tagad mēs esam jautā par sešu iepriekšējo. OK? Un mēs esam atiestatīšanas šo ir vienāds ar četri, kas gadījās būt pieci iepriekšējo. Es zinu, tas ir super grūti izsekot. Es tiešām ieteiktu jums zīmēt attēlus Ja jums ir jautājums, kā šis. Jā? [00:14:30] Mērķauditorija: Vai iemesls tam, ka mums nav [dzirdams]? [00:14:37] HANNAH: Tieši tā. Tātad jautājums bija, kāpēc mums nav nepieciešams pārbaudīt šeit? Kāpēc nav mums ir nepieciešams, lai pārbaudītu, rādītājs iepriekšējais nav vienāds null? Un tas ir tāpēc, ka mēs esam jau nodalīt gadījumā, ja rādītājs s pašā sākumā. Ļoti labs jautājums. Kaut kas cits par šo? OK, atdzesē. Tātad, pieņemsim pabeigt to uz augšu. Mēs esam gandrīz tur. [00:14:59] Tātad, ko tad, ja tas ir pie galvas? Ko darīt, ja tā vietā, mēģinot dzēst pieci, mēs faktiski gribēja svītrot četras? Kas man būtu jādara? Nu, es gribu, lai atjaunotu manu galvu uz ko? Bļāviens to ārā? Mērķauditorija: viens pēc tā. HANNAH: Beautiful. Labi, tāpēc mēs vēlamies saraksts tiks norādot lai kāds mūsu rādītājs nākamais mezglu. Labs. Un tikai pilnīguma gados sake, mēs to darītu vēlaties, lai pārbaudītu, ka tik ilgi, kamēr mūsu sarakstā nav nulle, tik ilgi, kamēr mūsu saraksts nav tukšs, tad mēs gribam, lai uzstādītu Mūsu iepriekšējā vienāds ar null. Jautājums tik tālu? Viens solis prom from--? [00:15:53] Mērķauditorija: Vai tas būtu, ja saraksts nav vienāds null? [00:15:55] HANNAH: Jā, jūs esat pilnīgi taisnība. Es esmu tik žēl. Ir saraksts nav vienāds null. Awesome. Cenšas panākt to visu uz ekrāna. Tas ir sava veida nokrist. Atvainojiet, puiši. Un pēdējais, bet ne mazāk, visi mums ir jādara, ir atgriešanās. OK. Tas bija daudz pieblīvēts patiešām ātri. Veikt otru meklēt šo pārvērtībām. Pasakiet man, ja jums ir kādi jautājumi. Yeah? [00:16:20] Mērķauditorija: Ja saraksts ir galva, then-- pagaidiet, nevermind. [00:16:26] HANNAH: Labi, labi. Tātad, tas ir, ja saraksts ir pie galvas, mēs noņemam to visu, mēs ievietota. Yeah? [00:16:31] Mērķauditorija: Vai jūs varat paskaidrot Pirmais, ja paziņojums vēlreiz? Ja rādītājs uz n ir vienāds ar n? HANNAH: Protams. Tātad mūsu mērķis visa šī funkcija ir izdzēst mezglu, kas ir vērtība n. Tātad, ja mēs atrast, jo mēs esam atkārtojot caur mūsu sarakstā, mezglu ar vērtību n, kas ir viens mēs vēlamies izdzēst. Tātad visi dzēšanu notiek iekšpusē, ka liels, ja paziņojumā. Vai tas ir jēga? Cool. Yeah? [00:16:59] Mērķauditorija: Varbūt jūs vienkārši nevarat redzēt tas, bet nav nepieciešams arī līnija par ritinot sarakstu? HANNAH: Awesome. Pieņemsim celt šo up mazliet, un mēs mest šīs tiesības apakšā. Varbūt valde būtu esam bijusi nedaudz labāka ideja. Tātad, kā es varētu pārcelties rādītāju uz priekšu? [00:17:17] AUDITORIJA: Pointer vienāds rādītāju plus viens. [00:17:20] HANNAH: Beautiful. Tāpēc, ka ļauj mums turpināt atkārtojot cauri. OK. Mērķauditorija: Vai nav tur būt cits? HANNAH: Vēl vienu reizi? Mērķauditorija: Vai nav tur būt cits pēc liels veco, ja paziņojums [dzirdams]? HANNAH: Kura daļa? Es atvainojos. [00:17:38] Mērķauditorija: šķērsošana, nedrīkst pastāvēt par cits? HANNAH: Jūs absolūti varētu būt cits. Jo man ir atgriešanās tiesības tur, jums nav nepieciešams cits. Bet jā, labs jautājums. OK, jā? Mērķauditorija: Vai mēs domājam par rādītāju kas virzās cauri sarakstam kā ņemot par vērtību par katru mezglu sarakstā? Vai mums vajadzētu domāt par to, kā veida ārēja saraksta? [00:18:00] HANNAH: Vai nu viens ir labi, es domāju. Veids, kā es iedomāties, tā ir Es saku, OK, es esmu rādītājs. Un tas ir man. Šī ir mana roka. Es esmu gatavojas, lai norādītu uz atšķirīgu lietas, ko es gribu atkārtot, izmantojot. Pirmkārt, es esmu gatavojas uzsvērt pie galvas sarakstā. Un tas man es esmu stāsta gatavojas norāda uz četrām. Un tā man, kas ir ārējs sarakstam, Es varu norādīt uz katru no šiem elementiem. Tāpēc es domāju par sevi kā rādītājs. Mērķauditorija: Tātad, kad jūs izdzēst viens no šiem elementiem, izdzēst sevi, lai runāt. HANNAH: Tieši tā. Tātad jūs dzēst lieta jūs norādot uz. Tātad, šajā piemērā, ka mēs redzējām, kur mēs esam mēģinot dzēst pieci, kad es esmu norādot uz pieciem, Es gribu, lai izdzēstu lieta, ko es esmu liecinot. Tieši labi. Jā? Mērķauditorija: Vai esam rūpēsies gadījums, kur n nav sarakstā? HANNAH: ja n nav sarakstā? Viss, kas notiks, ir jūs esat gatavojas atkārtot, izmantojot un atkārtot cauri, un tad, jūs gatavojas lai nokļūtu rādītāju nav uzskatāmi null, un tad jūs gatavojas darīt. [00:18:48] Mērķauditorija: Tātad mums ir lai atgrieztos kaut ko? HANNAH: Mēs varētu. Tā, ka ja tā ir definēta šī funkcija, es tikai saku, ka tas atgriež anulēta neatkarīgi. Bet jūs varētu būt kaut kas piemēram, atgriežoties vesels skaitlis, un ir atdeve negatīvs 1, ja tas neizdodas. Kaut kā tā. Jautājumi with-- jā? Mērķauditorija: [dzirdams]? HANNAH: Sorry? Mērķauditorija: [dzirdams]? HANNAH: Protams. Tā ka ir actual-- reiz mēs esam darīts viss šis darbs pārvietojas visas šīs bultas apkārt, mūsu visa mērķis bija atbrīvoties no mezgla ka mēs meklējam. Tātad šajā gadījumā, atbrīvojot rādītājs, ja es esmu norādot uz pieciem, tas ir tāpat kā dzēšot šo vidū mezglā. Tas ir bezmaksas rādītājs daļa. Ka jēga? [00:19:29] Mērķauditorija: Tātad, pat doma jums nav [dzirdams]? [00:19:31] HANNAH: Tātad mēs pieņēmām, ka sākumā mums bija daži saraksts, kas bija already-- viņi bija likts kopā. Tātad, lai veidotu šo sarakstu, viņi must've [nedzirdama]. Cool. Kaut kas cits ar šo? Jā? [00:19:46] Mērķauditorija: Ko darīt, ja saraksts nav vienāds nulles līniju? [Dzirdams]? HANNAH: Tepat? AUDITORIJA: Jā. HANNAH: Labi, viss, ko es daru ir Es esmu tikai pārliecinoties ka pirms es cenšos dereference sarakstam, pirms mēģinu piekļūt iepriekšējā, Es gribu, lai pārliecinātos, ka tas nav null tāpēc man nav saņemt SEG vaina. Cool. [00:20:08] Labi, es zinu, tas bija diezgan daudz tikt cauri. Tātad šī slaidu būs jums pieejama. Tātad jūs varat iet caur to sīkāk. Jā? [00:20:17] Mērķauditorija: Kāpēc sarakstā [dzirdams]? HANNAH: Protams. Tik saraksts tiešām norāda uz šis elements tieši šeit, pirmais elements sarakstā. Tātad tas nevar būt iepriekšējais. Jā? [00:20:31] Mērķauditorija: Vai rādītāja punktu uz to pašu adresi atmiņas? Vai tas norāda uz pašu adrese atmiņā kā mezglā ka tas norāda uz? [00:20:40] HANNAH: Jā, tas norāda šim mezglu atmiņā. [00:20:43] Mērķauditorija: Pareizi, tāpēc kad jūs [dzirdams]? [00:20:47] HANNAH: Savā ziņā, jā. OK. Labi, pieņemsim pārvietoties kopā ar to. Un, ja jums ir vairāk jautājumi, stick ap beigās, un mēs varam iet caur to vēlreiz. OK, atdzesē. Tagad, mēs pāriet hash galdi, neveiksmīgiem mēģinājumiem un koki, kas jums super pazīstami ne p-komplekts pieci, Speller. [00:21:04] Tātad hash tabula ir tikai masīvs ar atsevišķi saistītas sarakstiem vai divkārt saistītas sarakstus, kas nāk nost no tā. Tātad mums ir sava veida asociatīvas masīvs. Un kā mēs zinām, kurš no šiem bloki spaiņi nokļūt, mēs izmantojam jaucējfunkciju. Tātad šajā gadījumā, var ikviens uzmini jaucējfunkciju būtu tikai pamatojoties uz kādu no ieejas un izejas? [00:21:31] Mērķauditorija: vēstule numurs alfabēta. HANNAH: Tieši tā. Tas tikai liek tos alfabētiskā secībā. Viss, kas sākas ar Tiek likts uz pirmo spaini. Viss ar B nodošanas otrkārt spainis, tā tālāk, un tā tālāk. Awesome, OK. Un hash funkcija ir jebkura funkcija, kas notiek ar vārdu un jums pateiks, ko spainis tas pieder. Tātad, kas ierakstu mūsu masīvs tā pieder. [00:21:55] Tātad, katru reizi, kad es dodu manu hash funkcija vārdu, tas būtu man pateikt pats vieta katru reizi. Tātad, ja mēs izmantojam jaucējfunkciju No iepriekšējo slaidu kur mēs esam šķirošana pēc pirmais burts no alfabēta, katru reizi, kad es dodu manu hash funkcija "ābols" tas vienmēr būtu jāsniedz mani atpakaļ 0. Tātad, ja man ir ābols likt manā hash tabulu, ja man dotu "ābols" manai hash funkciju, būtu teikt, jāiet ielieciet to spainī 0. Ja es esmu meklē ābolu manā hash tabulas un es saku, kur varenība ābolu dzīvot, jūs lūgt jūsu hash funkciju. Un tā saka, dodieties uz spainis 0. Labi? Jautājumi ar hash funkcijām? Awesome. [00:22:34] Te ir nedaudz detalizētu paskaidrojumu par to hash funkcija varētu izskatīties. Labi. Tagad, problēma ar hash funkcijas ir ideālā pasaulē, mums būtu tikai viens lieta katrā spainī. Bet patiesībā, tur ir ne tikai viens vārds kas sākas ar A. Tur nav tikai viens vārds, kas sākas ar B. So Šajā gadījumā, ja mēs pēkšņi saņemt "ogu" un mēs vēlamies, lai to mūsu hash tabulu, un mēs redzam, ak, nē, banānu ir jau tur, ko mēs gonna darīt? [00:23:03] Nu, mums ir divas iespējas. Pirmais variants ir lineāra zondēšana, kas tikai nozīmē iet atrast nākamais tukšs spainis. Iet atrast nākamo tukšo masīvs ierakstu. Un tikai nodot "ogu" tur. Tāpēc es zinu, tas ir paredzēts, lai iet ar banānu spainis vienā. Bet tikai likt to spainī trīs, jo spainis trīs ir tukšs. Vēl viena iespēja ir iespējams ko jūs īstenot Jūsu p-kopumu, kur jums bija atsevišķa Ķēžu rādītāju. Tātad katra jūsu spaiņi, katru no jūsu masīva elementiem, ne tikai tur vienu vārdu, bet patiesībā tur rādītāju uz vārdu saraksts. Tā ka, ja jums bija banānu savā hash tabulas un tu pēkšņi gribēja pievienot ogu, nekādu problēmu. Vienkārši pievienot ogu uz līdz galam, vai uz sākums, jūsu saistīts saraksts. OK, awesome. Jautājumi ar hash galdi, pirms mēs ejam tālāk? [00:23:58] Labi. Koki un mēģina. Labi, tā tas bija vēl viena iespēja īstenošanai vārdnīcu. Jūs varētu būt veicis izmēģināt. Tātad, tas ir īpaša veida koku, kas uzvedas kā daudzlīmeņu hash tabulu. Tātad jūs redzēsiet attēlu kur jums ir masīvs, ka norāda uz ķekars bloki kas norāda uz ķekars bloki kas norāda uz ķekars masīvi. Un mēs redzēsim, ko tieši tas izskatās par turpmāko slaidu. Un vispār, koks ir tikai jebkuru datu struktūra kurā dati ir organizēts kādā hierarhijā. Tātad, ja mēs redzējām mums daži no izpratnes veida no augstākā līmeņa, nākamais līmenis, nākamais līmenis, nākamais līmenis. Tātad tas, iespējams, ir skaidrs, ar dažiem konkrētiem piemēriem. Tātad, šeit ir mūsu koks. Jūs varat redzēt, ka tas ir īpašas līmeņi ka mēs sākam ar šo saknes mezgla, viens. Un mēs varam iet uz leju, caur mūsu koku. [00:24:50] Binārs koks ir īpaša veida koka. Un vienīgais specifikācija par bināro koku ir tas, ka katrs mezgls ir ne vairāk kā divām lapām. Tātad jūs neesat gatavojas redzēt kādu no šiem mezgliem ir trīs vai četras vai kādu citu skaitu lapām. Un tad vēl konkrētāks ir bināro meklēšanas koku kur katrs mezgls pa kreisi mezglu nāksies vērtība mazāka. Un katru vērtība tiesības būs lielāks. Tātad, ja jūs redzat 44. ir mūsu saknes, pa kreisi, 11, 22, un 33 atrodas mazāk nekā mūsu saknes. Un labajā pusē, ir visi numuri bigger-- 66, 55, un 77. Un šis īpašums sakāms visos līmeņos no koka. [00:25:37] Tātad, kad mēs ejam uz leju, lai 22, 11, un 33, vēl 11 ir mazāks par 22 un 33 ir lielāks nekā 22. Un tas padara to vieglāk meklēt jo, ja mēs meklējam numuru, mēs zinām, tieši kuri filiāle sekot leju. Tātad tas būtu jums atgādināt par mazliet bināro meklēšanu. Yeah? [00:25:56] Mērķauditorija: Tātad, ja jūs esat aprakstot bināro, jūs teicāt, tas ir ne vairāk kā divas lapām? HANNAH: Mm-hm. Mērķauditorija: Vai tas ir mazāk? HANNAH: Jā. So teiksim, piemēram, jūs nebija pat vairākas lietas un jūs nevar aizbērt visas jūsu lapas, tas ir labi, ja viens ir viens. OK? Awesome. Jebkādi citi jautājumi, par kokiem? OK. [00:26:16] Atpakaļ uz mūsu mēģinājumiem, kā es runāju par mazliet agrāk, cik mums ir šie daudzlīmeņu bloki. Tātad, šajā gadījumā, mēs sākas augšpusē. Un mēs varam sekot kādu konkrētu vārdu leju. So teiksim, mēs vēlējāmies meklēt Turing. Sākam T, sekojiet to uz leju masīvs, kas satur U, un sekot to uz leju, līdz mēs sasniegtu šo mazo deltu, kas stāsta mums, jā, jums atrast vārdu. Skaidrs mēģina? Kaut kas iet tur? Jā? Mērķauditorija: Vai simbols delta ir aizņem vietu robežās mēģināt? HANNAH: Jā, tā tas nav obligāti pat jābūt delta. Bet mums ir nepieciešams zināms ceļu pastāstīt mūsu computer-- sorry, tā, ka mēs zinām, ka TUR nav vārds. Jo teiksim mums nebija šis jēdziens delta, šis jēdziens par apsveikumiem, jūs atrast vārdu, tas iet cauri, un atkārtot, T-U-R, un tad saka, awesome, es to atradu! Tai jābūt vārds. Bet tas tiešām nav. Mēs vēlamies visa Turing būt vārdu. Tātad mums ir jābūt kaut ko galā, kas saka, apsveicu, esat atradis likumīgu vārdu. Mērķauditorija: Tātad, ja jums bija, piemēram, 26 burti alfabēta, tu tiešām ir 27 taustiņi jūsu mēģināt? [00:27:24] HANNAH: Awesome, jā. Tik tiešām, es domāju, ka tiks uz nākamo slaidu. Ta-da! Kur, ja Jums ir mezglu jūsu izmēģināt, tu esi nāksies 27 bērni, nevis 26. Visus jautājumus ar šo? Yeah? Mērķauditorija: Kāpēc mēģina aizņem tik daudz vietas [dzirdams], kā jums iet? Kāpēc tas ir uzskatāms par [nedzirdama]? HANNAH: Protams. Iesim atpakaļ. Jautājums ir, kāpēc ir mēģina tik daudz lielāks kā kaut ko līdzīgu hash tabulu. Tātad, katrs no šiem līmeņiem, pat tad, ja viņi nav sagatavoti šeit, jums ir visas 26 rakstzīmes. Un iemesls, ka jūs nevarat saka, oh, bet, piemēram, par Turing, es nav nepieciešams, lai ir kāds no tiem, pašas lietas, par līmeni U. Well, ja pēkšņi jūs vēlētos pievienot kaut kas bija, piemēram, T-H, jūs nepieciešams, lai būtu spēja piebilstot, ka vārdu. Tātad, par katru burtu, Jums nāksies lai ir ķekars bloki, kas nāk nost no tā. Tātad jūs varat redzēt, kā tas gribētu saņemt tiešām liels, ļoti ātri. Jebkādi citi jautājumi? Labi. Yeah? [00:28:29] Mērķauditorija: Kad ir mēģina ātrāk nekā hash tabulas? [00:28:33] HANNAH: Kad ir mēģina ātrāk nekā hash tabulas? Tātad, ja jums bija patiešām slikti hash funkciju. Tāpēc pieņemsim, ka man bija, piemēram, šeit ir jūsu hash funkciju. Nav svarīgi, ko vārds tu dod man, es esmu vienmēr gatavojas nodot to masīvā ierakstu 0. Un tā mēs galu galā ar tikai liekot viss vienā lielā ilgi saistīts sarakstā. Un tā lookup laiks būtu nepieciešams, bet sliktākajā n ja tas ir pašās beigās mūsu sarakstā. Ar izmēģināt, mums vienkārši ir atkārtot pa burtiem vārdu. Tātad, pat tad, ja mēs pievienot ķekars vairāk vārdi mūsu mēģināt, tas nebūtu mūs vairs atrast konkrētu vārdu. [00:29:09] Viss, kas mums jādara, ir, lai piemērs, šajā gadījumā, pieņemsim, ka mēs meklējam zoom, mums vienkārši ir atkārtot pār Z-O-O-M, četri burti. Tātad tas ir tikai garums vārdu tālummaiņu. Tas nav svarīgi, cik daudz Vairāk vārdus mēs ieliekam šajā mēģināt. Mēs vienmēr varam iegūt šajos četros posmos. Awesome. Jā? [00:29:32] Mērķauditorija: Tātad [nedzirdama] ir masīvs, labi? [00:29:34] HANNAH: Mm-hm. Mērķauditorija: Ja tu esi meklē [nedzirdama] tu būtu jāiet cauri Jūsu masīvs atrast [nedzirdama]? HANNAH: Protams. Mērķauditorija: Vai nav, ka nepieciešams vairāk laika? HANNAH: Ja es esmu gatavojas teikt, ka mana masīvs vienmēr būs A, B, C, D, E, F, G, blah blah blah, tāpēc, ja es vienmēr zinu, tas ir tādā pašā precīzu secībā, ja es vienmēr zinu, tas ir alfabētiskā secībā, Es varu tikai teikt O ir numur tik un tā ar alfabētu. Vienkārši lēkt uz šo vietu. Jo atceros, ar bloki, mēs varam piekļūt kāds no šī masīva konstante elements laiku, ja mēs zinām, kur mēs meklējam. Yeah? [00:30:09] Mērķauditorija: On iepriekšējais slide [nedzirdama] 27, bet 26 par pirmo. [00:30:14] HANNAH: Sorry? [00:30:15] Mērķauditorija: Vai nav pirmais viens 0, tāpēc tas nebūtu 26? [00:30:18] HANNAH: Protams, tad, kad mēs sakām, 27, kas ir gatavojas sniegt mums indeksiem no 0 līdz 26. Bet, ja jūs tiešām rēķināties tiem ārā, tas būs 27. Labs jautājums. Kaut kas cits? Yeah? [00:30:31] Mērķauditorija: Tātad ir mēģina lēnāk, nekā hash tabulas? [00:30:34] HANNAH: Mēģina ir būs, jo teorija, ātrāk nekā hash tabulas bet aizņem vairāk atmiņas. Yeah? Mērķauditorija: [dzirdams]? [00:30:45] HANNAH: Es atvainojos, es nedzirdēju tevi. Mērķauditorija: [dzirdams]. No 0 līdz 25 dod jums 26. [00:30:54] HANNAH: no 0 līdz 25 varētu sniegt jums 26, labi. [00:30:56] Mērķauditorija: Un tad [nedzirdama]. HANNAH: Right. Tātad skaitlis mēs norādot ir vairākas lietas mūsu masīvā. Tātad, ja mums ir 27, tas ir gatavojas sniegt mums 0 ar 26, kas dos mūs telpa, šajā gadījumā, Es neesmu tajā skaitā apostrofu. Tātad mēs esam nonākuši no 0 līdz 25 gadiem ir pirmie 26 alfabēta burti, vai visas 26 alfabēta burti. Un tad, ka pagājušajā lieta, pie iebraukšanas 26, ir būs pārbaude zīmi, vai delta. Kaut kas cits? Awesome. Pazaudēju savu telpu. OK, atdzesē. [00:31:31] Tātad mēs jau pieskārās to. Bet liels tirdzniecības off starp mēģinājumiem un hash tabulas ir tas, ka mēģina nodrošināt, jo teorija, pastāvīga uzmeklēt reizes, bet izmanto visai daudz atmiņas. Labi, tagad mums ir nedaudz mazāk sarežģītas konstrukcijas, un mēs būsim darījuši ar C, un mēs pa labi pa. [00:31:49] Tātad skursteņi, mēs redzējām šo lekciju, kur jūs ir kaut kas līdzīgs kaudze paplātes kur Pēdējā lieta, ko jūs likts uz skursteņa notiek būt pirmā lieta, jūs pacelšanās. Tātad tas, kas patiešām definē kaudze ir tas, ka pēdējā lieta, ko jūs likts uz būs pirmais lieta jūs pacelšanās. Un terminoloģija, ka mēs izmantojam ja mēs ejam, lai kaut ko, ja mēs ejam pievienot kaut ko mūsu kaudze, mēs to saucam par stumšanas. Un, ja mēs kaut ko off, mēs to saucam par popping. Un, ja mēs spēsim īstenot kaudze, mēs jābūt pārliecinātiem, lai sekotu gan lielums un kapacitāte. Tātad kopējais elementu skaits, mēs varam turēt un pašreizējais elementu skaits ka mēs tur. [00:32:27] Un ļoti līdzīgi, mums ir rindas. Un vienīgā atšķirība ir nevis ar skursteņi, mēs teicām pēdējā lieta, mēs liekam uz ir pirmā lieta, mums pacelties. Tātad ar rindām, Pirmā lieta, ko mēs ieliekam būs Pirmā lieta, ko mēs ņemam ārā. Tātad tas ir, piemēram, ja jūs esat faktiski stāv rindās pie veikala un jūs to palīdzēja, tad pirmais cilvēks rindā vajadzētu būt pirmā persona, kas palīdzēja. Tā, ka būs rinda. [00:32:52] Tāpēc mums ir nepieciešams, lai sekotu izmēru, jaudu, un galva tā kā mēs esam gatavojas veikt ikvienam off priekšā no saraksta vietā uz muguras. Jautājumi par šo? Visus C jautājumi, kas tevi nomāc? Datu struktūras, kaut ko no šīs fun stuff? Visas tiesības, atdzesē. Tāpēc es ņemšu to nodot Alison uz lēkt vērā daži vairāk plānošanu. [00:33:14] ALISON: Ak, mēs redzēsim. Redzēsim, cik labi man darīt šeit. Labi, es esmu gatavojas izmēģināt un lidot izmantojot šo sīkumi, puiši. Hannah gāja ļoti in dziļums visiem viņas lietām. Es esmu gatavojas izmēģināt, lai sniegtu Jūs ātri sprādziens pārskats lai mēs varētu nokļūt Davin ar visiem arī jautri JavaScript un drošības lietas ka varbūt jūs faktiski gribu dzirdēt vairāk par. [00:33:33] OK, kā teica Hannah, ja Jums ir kādi jautājumi, Es esmu pārāk ātri, lūdzu, ļaujiet man zināt. Es atbildēšu uz jautājumiem, kā nepieciešams. Tātad, lai sāktu, mēs ejam, lai sāktu ar iespējams, viena no pirmajām lietām jūs esat iemācījušies ar web programmēšana, atļaujas. Tātad chmod, jūs puiši būtu esam bijis meistari, tas ar visu tīmeklī programmēšana, ka jūs esat darījis pēdējā laikā. Tas ir būtībā tikai komandu kas maina atļaujas vai piekļuves atļaujas Mūsu failu sistēmas objektiem. Protams, faktiski redzētu šiem, ja jūs esat kam ir problēmas ar šīm laikā jūsu problēmu kopas, Jums var būt izmantoti ls-l, kas ir garš, lai iegūtu skatu veida kā šis, kur jūs faktiski redzēt visas atļaujas par failu. [00:34:16] Un tiešām, mēs esam tikai gatavojas iet cauri diezgan ātri tikai diezgan daudz, ko katrs no tiem nozīmē. Tātad mēs esam d tieši šeit, kas tikai apzīmē direktorijā. Acīmredzot tieši šeit, mēs redzam rwx, kas ir lasāms, rakstāms, un izpildāmā. Tie varētu arī tikt attēlots kā biti, ko mēs iekļuvuši nākamajā lapā. Tātad katrs, ka mēs redzējām triāde šeit, tāpēc tas ir trīs triādes. Mēs esam rwx, r nekas x un r nekas x par šo pirmo failu. Tas ir tas vispārējā struktūra. [00:34:49] Tātad mums ir dažas direktorijā. Mums ir daži lietotāju grupai ar šīm atļaujām. Daži grupa, kurai ir šīs atļaujas, un pasaule, kas ir atļauja. Jūs varat domāt par šiem, kā triāde. Jūs varat domāt par šiem, kā trīs bitiem. Tāpēc viņi var turēt vērtības jebkur no 0 līdz līdz 7., tāpēc dažreiz mums bija jūs chmod 600 vietā chmod rw neatkarīgi. Mēs nokļūt piemēru tur. Bet būtībā, jūs varat domāt no šiem, kā nu tikko rwx, vai arī jūs varat domāt par to, kā daži numurs, ja šī pirmā šeit apzīmē skaitli starp 0 un 7, šis otrais viens apzīmē skaitli starp 0 un 7, un trešais viens ir skaitlis starp 0 un 7, labi? [00:35:38] r vērtība ir 4. w vērtība ir 2, un x vērtība ir 1, kas ir iemesls, kāpēc šis atļauja šeit būtu chmod 700. Jo šajā gadījumā šeit, tā saka mēs ir pirmais mazliet tur ir spoguļattēls on. Tāpēc mums ir 4 lasīšanas. Otrais bit ir spoguļattēls ieslēgts w, kas ir par 2, tāpēc tagad mums ir 6. Un trešais bits ir Pagriezts par X, kas ir 1, lai mēs iegūtu septiņi. Un, protams, mūsu grupa un mūsu pasaule ir katram 0. Tāpēc tas ir arī ekvivalents chmod 700. Un es noteikti mēģinātu izprast kartēšanu starp tiem. Es neesmu pārliecināts, vai tas ir nākt klajā uz viktorīnu pirms, bet tas būtu jautājums, ko es varētu jautāt. [00:36:18] Tikai mazliet iet pat dziļāk chmod šeit, šeit ir ļoti vispārīgi struktūra chmod zvanu. Tātad, protams, mēs esam chmod šeit. Atsauces, ko tas attiecas, ir Kas mēs esam dod šādu atļauju vai kuri ejam šos atļaujas prom no. Tāpēc mums ir šeit atļaujām, piemēram, mēs esam dota jums chmod plus x, kā mēs redzēsim drīz. tikai nozīmē, dot tiem specifisku atļaujas ikvienam. Dodiet viņiem visiem. Tātad, jūs varētu ļoti labi būt u plus x vai g plus x vai o plus x vai vairāku to. Tā, ka pirmā daļa ir vienmēr būs norādes. Kas mēs esam Minot šos atļaujas, vai kuri ejam viņus prom no? [00:37:03] Otrais ir operators. Tātad jums puiši ir pārsvarā nodarbojas ar plus. Tas dod atļaujas, lai kurš jūs dodot viņiem, tā mīnusa, loģiski, novērš tos. Tātad nekas pārāk briesmīgs tur. Un tad režīmi ir tas, ko mēs runājām ar lasīšanas, rakstīšanas, vai izpildes. Tātad plus x nozīmē dot izpildāmo atļaujas ikvienam. Un tad, protams, uz kura īpašu datni vai direktoriju. OK? Ikvienam labi ar chmod? Ne pārāk slikti? [00:37:37] Labi, lai HTML, kāds no jums ir pietiekami vecs, kuri paredzēti, MySpace vecumu? Es nosūtīju to uz manu sadaļu, un burtiski puse cilvēki paskatījās uz mani kā es biju traks. Un man bija, piemēram, puiši, mēs neesam, ka vecs. Come on. Tātad hiperteksta iezīmēšanas valoda, tas ir godīgi tikai veids, lai jūs lai parādītu dažas lietas tīmeklī. Tātad, tas ir iezīmēšanas valoda. Tas nav skriptu valoda. Tur nav loģikas tajā. Tas ir vienkārši, lai mainītu Tiek parādīts veidā kaut ko. Labi, tā ka ir svarīgi atšķirība padarīt. Tā uzskatāma iezīmēšanas valoda, nav skriptu valoda. [00:38:12] Tātad šeit mums ir HTML tagus. Uz šo slaidu, iespējams, lielākā daļa tie, kas jums jāzina un būt patiesi apmierināti ar. Tātad acīmredzot, mums ir Mūsu HTML tag, kas apzīmē, ka viss Starp šiem diviem būs HTML. Mums ir kaut kāda saistība, kas acīmredzot dos jums saite uz ārēju tīmekļa lapā. Daži nosaukums, mūsu galvas šeit. Un mums ir mūsu organismu ar H1, kas ir header, tā tas būs padara jauki un drosmīgs un lielāka. Un tad mums ir dažas p, kas ir punkts. Jums vajadzētu droši vien zināt un jāzina ar lietām tāpat kā jūs ievietot attēlu, ir ir kādi citi galvenes klases? Es noteikti būtu apmierināti ar div. Tātad šie ir vairākums tagus kas jums jāzina. Bet, protams, kā ar visu, kas CS 50, uzskaitījums nav izsmeļošs. Tāpēc pārliecinieties, ka jūs atsvaidzināt to. [00:39:08] CSS, tāpēc, CSS, ja kāds no jums skatīties mans seminārs no pirms divām nedēļām, patiešām ir tikai veids, kā ieveidot mājas lapu? Labi, tāpēc mums ir dažas iezīmēšanas valodu. HTML, ka rūpējas tikai teksta un kur tas varētu būt lapā. Bet CSS ir tiešām tas, kas padara to diezgan. Jūs varētu būt šiem jūsu HTML failus, bet kā mēs runājam par vēlāk, Es esmu diezgan pārliecināts, ka tas varētu būt nākamo slaidu, tas ir ierasta prakse, un faktiski prakse, ka mēs patiešām veicināt, jums, lai saglabātu tos atdalīt, kad mēs runāt par MVC un visu šo paradigmu. Tas ir patiešām to, ko tas iekļaujas. [00:39:42] Tik CSS ir tikai veids, kā darīt lietas izskatās diezgan. Par lietas šeit, piemēram, ķermeņa un #title un info, tos sauc selektori un kādi tie ir viņi izvēlas konkrētas lietas jūsu HTML failu un piemērot neatkarīgi stilu, Jebkāda veida lietas, ko vēlaties, uz šo konkrēto elementu jūsu tīmekļa lpp. Tātad šeit, mēs esam fona krāsu un krāsu un fontu ģimene, kas ir to piemērots kāds ir organismā. Tātad, ja mēs atskatījās šeit, to neattiektos uz titulu. Tas attiektos tikai uz to, kas ir šajos ķermeņa pārslēdzējiem, OK? [00:40:22] Ar nosaukumu šeit, tas ir būs tas pats, krāsa teksta ir zils ir tikai gatavojas ietekmēt to, kas atrodas Virsrakstu selektori. Kā arī info šeit, teksts būs rozā, kāds info, kas ir tepat. Tātad vienīgā lieta, kas būtu rozā šajā lapā ir diena, pirmdiena, 17. novembris, 2014. Labi, tāpēc CSS ir tikai veids, kā ir lielāka kontrole over-- jā? [00:40:48] Mērķauditorija: Kāpēc jums ir izmantot hash ar nosaukumu? [00:40:51] HANNAH: Nākamais slaids, apsolu! Mēs tur nokļūt. Tātad, tas ir iemesls, kāpēc mums ir jāizmanto hash. Tātad selektori uzņemties trim galvenajiem formas, ka mēs runājam ar jums, puiši apmēram. Es fyou vēlaties uzzināt vairāk, tur ir daudz kas tur. Tur ir liels CSS dokumentācija. Tur taga nosaukums, kas ir jādara tikai ar jūsu parasto tagus HTML. Tātad, H1, p, div, H 2, šie veidu lietas. Un mēs varam tikai nosaukt tos, kā ir. Tā kā mēs redzam šeit ar ķermenis, tas ir normāli tag. Tātad, mēs varam tikai nodot ķermeņa, kad mēs runājam mūsu CSS failu. [00:41:26] Ar nosaukumu, visu iemesla dēļ mēs ir šī hash ir mums, kas ir uzskatīts ID. Tātad ID vienmēr jābūt unikāls jūsu HTML lapas tā, ka tad, kad jūs esat atsaucoties uz to, jūs zinu, ka jūs esat tikai atsaucoties uz vienu konkrētu lietu. Tātad šajā gadījumā šeit, ar mūsu h1 šeit, CS 50 pārskatīšana sesija, mums ir id titulu. Tātad, lai tikai atsaukties uz ka gabals mūsu HTML, mēs hash titulu. Tikai pēc vienošanās, ID ir izraudzītas ar hash priekšā no tiem. Tādā pašā veidā, mēs redzēt informācijas šeit ir klase. Un tā klase ar CSS izraudzīta kā dot klasi vai dot neatkarīgi, ka klase ir. Tātad šajā gadījumā šeit, tas ir info. [00:42:10] Tāpēc es ņemt to atpakaļ. Abi tie būtu rozā mūsu CSS šeit jo tie abi ir klasi info. Un mūsu CSS failu, mums ir noteikušas ka kaut kas ar klasi info ir rozā. Vai tas ir jēga? Jā? [00:42:27] Mērķauditorija: Ja tu būtu, lai padarītu viss ķermeņa balta, un tad jūs mēģināt veikt kaut tā iekšpusē zila, tas var radīt problēmas? [00:42:34] HANNAH: Tātad CSS ir kaskādes stila lapas. Tātad, kāds ir pret apakšā būs priekšroka. Tātad, ja jūs kaut ko darīt ar ķermeni, un tu darīsi visu balts, un tad vēlāk jūs mainīt nosaukumu vai jūs mainīt tekstu laikā organismā, tas pārraksta to. Tātad kaut kas pret apakšā būs priekšroka. Jā? [00:42:56] Mērķauditorija: Un ID ir unikāli, bet nodarbības var būt? HANNAH: Right. Tātad ID ir unikāls, un klases var atsaukties uz tik daudz lietas, kā jūs vēlaties. Jebkādi citi jautājumi? Jā. [00:43:09] Mērķauditorija: [dzirdams]. Es esmu jautājums, vai kas padara starpību. HANNAH: Es atvainojos, kāds bija jautājums? Mērķauditorija: Tur ir mazs "F" un kapitāls "F." HANNAH: Tātad starpība starp mazo "f" un kapitāls "F" nevajadzētu kaut ko mainīt. So "f" būs 15, vai nu veidā. Atdzesē, kaut kas cits? Ikvienam labs, CSS? Jā? [00:43:30] AUDITORIJA: Sorry. Var jums ir klasi un ID? [00:43:35] HANNAH: Jā, tas ir iespējams. Lietas var būt gan klases un ID. Un es ļoti ieteiktu testēšana tie par savu. CSS jūs uzzināsiet vislabāk vienkārši izdarot kaut kas, ļoti vienkāršs mājas lapa, Sastādot dažas CSS, un tikai redzēt, kā tie mijiedarbojas. Un jūs iegūsiet ļoti labs, intuitīva sajūta par to, kā tā darbojas. [00:43:56] OK, visi labi ar CSS? Jūs visi gatavojas darīt skaistas mājas lapas ar CSS tagad. OK, labākā prakse, tāpat lietas, kas jāpatur prātā, lietas, that-- tas ir iemesls, kāpēc mēs doks jūs par dizaineru un plauktiņš. Tātad, aizveriet visus HTML tagus. Tātad, ja jums ir atvērta ķermeni, ir jābūt tuvu ķermeņa. Ja jums ir atvērta punktu, ir jābūt tuvu punktu. Pārbaudiet, lai redzētu jūsu lapas apstiprina. Jūs puiši ir ļoti pazīstams ar šo no p-set septiņas ar CS 50 finansēm ar W3 validators. Un, kā jau teicu iepriekš, viens no mūsu lielajiem paradigmu tiek atdalot savu stilu ar CSS no atzīmes, kas ir HTML. Un tad, protams, mums ir šis lielais xkcd leju šeit. Yay, komikss atvieglojums! [00:44:38] OK, TCP / IP. Starp šiem un HTTP, būtībā viņi abi protokolus. Tātad, jūs varētu vienkārši domāju no tiem kā noteikumu kopumu kas nosaka to, kā lietas pārvietoties visā internetā. Tātad pārraides vadības protokols, vai interneta protokols, ir tikai veids, kā pārliecināties ka dati izpaužas, ja tas notiek, un, ka mēs zinām, ja mēs esam kādreiz trūkstošos datus. Tātad, ja jūs guys domāju, ka atpakaļ uz lekciju pāris nedēļas atpakaļ ar Dāvidu kur mums bija četri aploksnes, viņi visi bija numurēti kā viens no četriem, divi no četriem, trīs no četriem, četri no četri, tas ir tikai noteikumu kopums. Mēs teicām, OK, kad mēs esam nosūtot vairāk nekā vienu paketi, mēs gatavojamies uz numuru tas ar to skaits ir un cik daudz kopā, ka lietotājs vajadzētu saņemt. [00:45:19] Un tas ir tikai stāsta kurš saņem datus, vai tie gotten visu vai ja kaut kas pazuda pa ceļam. Un viņiem ir nepieciešams lūgt to vēlreiz. Tas ir tiešām tikai noteikumu kopums. Tas ir, kā jūs varat domāt par to, OK? Un arī tajā ir norādīts, ostu, kas Jūs guys can-- es zinu lekciju laikā, viņi bija visu ostu sarakstu. Bet mums nav viņiem šeit tieši tagad. [00:45:41] Tātad hiperteksta pārsūtīšanas protokols ir, atkal, tā ir cita protokols. Tātad, tas ir vēl viens noteikumu kopums kas reglamentē, šajā gadījumā, kā hiperteksta tiek nodota. Tātad, tas vienkārši ļauj pārlūkiem runāt ar tīmekļa serveriem. Un kā mēs šeit teica, tas ir tāpat kā cilvēka handshaking. Tas ir tikai veids, kā regulēt kā web serveris ir dodas uz mijiedarboties ar savu pārlūkprogrammu. Un mums ir tikai pāris piemēri. Mums ir daži lūgumi šeit kur GET ir metode. Mums ir HTTP 1.1, kas ir protokola versija mums. Un tad, uzņēmēja, kas ir tas, ko mēs faktiski cenšas piekļūt. Un tad, kā jūs redzēt šeit, mēs dabūt atbildi ar šo 200 OK, kā mūsu HTTP atbildes kodu. Mums ir liels saraksts es esmu, uzvilkt vienā sekundē ka jūs guys ir jāpārzina. Un mums ir šī satura tipa tekstu / HTML, kas vienkārši saka, kāda veida dati mēs saņem no servera, OK? Šī uzņēmēja un šī satura tipa ir daļa no HTTP galvenes. Jums var būt tik maz vai tik maz, kā nepieciešamas saistībā ar to, ko jums ir darīšana ar. Dažreiz jums ir daudz informāciju, kas nāk no jūsu servera. Varbūt viņi pieprasa daudz informāciju no lietotāja. Tā mainās atkarībā no konteksta. Ja paskatās CS 50 studiju, tur ir daudz vairāk par to. Bet mums ir daudz, lai saņemtu cauri, tāpēc es esmu gatavojas iet pa labi uz priekšu, ja tas ir OK ar jums, puiši? Cool. Turiet par. Man noteikti ir, ka viss saraksts of-- huh! Es nezinu, kāpēc tas ir visu ceļu pār šeit. Es domāju, ka es burtiski pārvietots to, bet es biju sitting-- [00:47:15] Davin: Vai jūs vēlaties, lai mācītu to? Vai tu gribi mācīt? [00:47:17] Mērķauditorija: Es domāju, ka mēs varētu vienkārši parādīt viņiem, lai sāktu ar. Es domāju, jūs varat doties uz tos tālāk, bet es domāju, ka tā ir veikusi daudz nozīmē, jo I bija tikai runā par HTTP statusiem. Tātad, šeit ir viss saraksts. Es domāju, kas notiek varētu notikt, ir Davin gatavojas iedziļināties tiem vēlāk. Bet tur ir viss saraksts, preview garšas nākt. Labi, mēs ejam, lai blow-- tas notiek būt PHP crash protams, kā neviens cits. [00:47:41] Tātad PHP, hiperteksta apstrādātāju, tas ir rekursīvs backronym, kas nozīmē, ka tas tika nosaukts kaut kas cits. Un tad tie ir līdzīgi, šis nav īsti jēgas. Tāpēc viņi vienkārši nosaukts it-- un tas bija akronīms, tāpēc viņi vienkārši padarīja PHP hiperteksta apstrādātāju, kas vienkārši nav jēgas. Fun stāsts. Tas ir programmēšanas valoda. Tik cik es uzsveru, ka HTML nav programmēšanas valoda, tā ir iezīmēšanas valoda, PHP ir programmēšanas valoda. Kā jūs zināt, tas ir jo tur ir loģika. Ir conditionals. Mums ir mainīgie, bet mēs ir neviens no tām lietām, HTML. [00:48:12] Labi, tad mums ir šis mazais mazliet šeit, ka ir kā garšu PHP. Tātad pamati, mainīgo nosaukumi sākas ar dolāra zīmi. Daudz cilvēku patīk. Atgādina mums naudu. Tas viss ir lieliski. Mēs visi vēlamies PHP. Tātad mums nav norādīt mainīgā tips vairs. To nosaka pie palaist laikā. Tulks būs tāpat, ak, mēs vienkārši palaist cauri, un atbilstoši kontekstam, Redzēsim, ko veidu veidu šie rādītāji ir nepieciešama. Nav galvenā funkcija. Lietas vienkārši palaist. Jūs guys ar savu importa jūsu pēdējā p-komplekts, jūs pamanīsiet šo. Tur nebija īsti galvenā funkcija. Jūs tikko rakstīja, ko jūs vēlētos, lai notikt. Un tas tikai veida noticis. Tātad tas ir PHP jums. [00:48:56] Bloki ir ļoti līdzīgi. Mums joprojām ir šī kronšteinu. Šeit mums ir dažas mainīgais sauc arr, un tas ir vienāds kuri paredzēti, lai mums ir mūsu normāls kronšteins notācija. Un mums ir dažas atslēgas vērtību. Un liela atšķirība starp C un PHP bloki ir tā, ka mēs varam būt šo associate-- mēs varam saistīt vērtības taustiņiem. Tātad, nevis tikai ar masīvs, kas tiek indeksēti skaitu vai stāvokli, šā elementa masīvā, mēs faktiski var saistīt to ar atslēgu. Kur mēs varam teikt, OK, es gribu neatkarīgi vērtība ir saistīta ar augļiem. Un varbūt mums ir augļi devāmies uz banānu. Tātad tas lūdzu atgriezties banānu pie mums. [00:49:41] Bet būtībā, visvairāk spēcīgs lieta par šo ir tā, ka, ja jūs guys atcerēties demo no lekciju, kur mēs būtībā pārrakstīja Pareizrakstības PHP, un tas was-- lookup bija tiešām tikai patīk, tas galvenais pastāv? Tas ir tiešām veida spēku tā. Jums nav nepieciešams atkārtot caur jūsu masīvs. Jums nav nepieciešams zināt kāda telpa tas ir. Tā varētu būt beigās vai sākumā. Tik ilgi, kamēr jūs zināt atslēgu kas ir saistīta ar vērtību, PHP var tikai spļaut šo vērtību labi atpakaļ, pie jums, OK? [00:50:09] Un tad mēs arī tikko ir tikai tāpēc, ka mēs var būt atslēgas vērtību pārus nenozīmē, ka jums ir. Jūs varat arī vienkārši izveidot normāls masīvs, piemēram, šeit, apakšā, kur tas ir tikai viens, divi, trīs, četri. Tie ir mūsu vērtības. Un patiesībā, to atslēgas ir indeksi. Tātad galvenais vienam būtu nulle. Divatā Galvenais būtu viens. Tā tālāk un tā tālāk, ja vien tu skaidri piešķirt atslēgu, jūs varētu pieņemt, ka vērtība ir tikai viņu indekss. Vai tas ir jēga visiem? Nav jautājumi? Awesome. [00:50:38] OK, foreach ir veids, kā atkārtot, izmantojot jūsu bloki. Tāpēc mums ir kaut ko šeit, tikai vispārējā struktūra. Tātad foreach, nosaukums mūsu masīvs, kā neatkarīgi vēlaties zvanīt viens elements jūsu masīvs, un mēs varam kaut ko darīt ar šis elements vai ar šo vērtību. Tāpēc mums ir piemērs šeit. Mums ir asociatīvās masīvs ar šiem diviem ierakstiem ar bāra kas ir saistītas ar foo un qux ir saistīti ar Baz. Tātad taustiņi ir foo un baz. Vērtības ir bārs un qux. Tātad foreach, mums ir mūsu masīvs Šeit, kā galveno vērtību pāri. Tas ļauj mums piekļūt gan atslēgas un cenas. Varbūt jūs vienkārši vēlaties vērtība, un šajā gadījumā jūs varētu vienkārši patīk arr kā $ vērtību, un tad jūs ir tikai piekļūt vērtību kā jūs atkārtot, izmantojot. Bet varbūt, daži Iemesls, jūs vēlaties, atslēgu, kas ir iemesls, kāpēc es izvēlējos šis piemērs vietā. Tātad jūs faktiski var manipulēt atslēga un vērtība šajā gadījumā. OK? Jautājums? [00:51:41] Mērķauditorija: Ja jūs vēlētos, lai vienkārši manipulēt atslēgu, būtu Jums ir jādara foreach-- [00:51:45] ALISON: Right. Tātad, ja jūs vēlētos manipulēt tikai atslēgu, Jums joprojām būs nepieciešama šī sintakse jo, ja jūs vienkārši ir arr kā kaut ko, kā viena lieta, tas ir gatavojas pieņemt vēlaties vērtība, nav galvenais. Tātad, ja jums kādreiz vienkārši ir, tāpat kā arr kā, varbūt tas ir kā $ elements, tas gatavojas pieņemt, ka jūs esat jautā lai tikai to vērtību katru punktu. Ja jūs skaidri vēlaties kaut ko darīt ar atslēgu, pat ja jūs neesat gatavojas darīt kaut ko ar vērtību, jums ir nepieciešams šo struktūru ka mēs esam šeit kur jūs skaidri jautā gan atslēgu un vērtību. Liels jautājums. Kaut kas cits? Cool. [00:52:27] Visas tiesības, PHP un HTML. Ak, mēs esam atpakaļ pie p iestatīt septiņi no jauna. Tāpēc šim vajadzētu izskatīties mazliet pazīstami. Tātad šis ir daži vienkārši HTML forma ka ir dažas ieejas vārdu Sveiki. Un mēs redzam, mums ir mūsu metodi GET. Un, ja mēs atceramies no mūsu p-kopumu, ja ir iesniegts šo veidlapu, tā nosūta masīvu sauc $ _GET, kas ir visi no šiem resursiem vai mainīgajiem no forma, kas būtu manipulēt mūsu PHP. Tātad šajā gadījumā, lietotājs liktu uz viņu vārda. Viņi iesniedz to. Un mēs redzam, ka mēs kādu masīvs šeit. Mums ir mūsu GET masīvs. Un mēs piekļūstam nosaukumu. [00:53:11] Tātad, kas saka, OK, dod man vērtība, kas ir saistīts ar vārdu, nosaukt ir galvenais šeit. Un tas kartes tieši to, ko mēs teicām mūsu ieguldījums vārds ir. Tātad tas bija, kas jums ir atslēga uz to, kas būs jūsu masīvs šeit. Vai tas ir jēga visiem? Jā? [00:53:32] Mērķauditorija: Vai nosaukums GET atsaukties ar violetu līniju [dzirdams]? [00:53:36] ALISON: Tas attiecas uz šo šeit. Tātad šis lauks tieši šeit, tas attiecas uz šo vārdu šeit. Tā tas varētu būt nosaukts piemēram, tālruņa numuru, vai neatkarīgi. Šis nosaukums patiesībā saka, ko Jūs zvanāt šajā jomā? Kā jūs plānojat atsaukties uz šajā jomā? Un šis vārds ir patiešām patīk, mēs esam sakot, šo lauku sauc vārdu. Tas, kā mēs ejam, lai piekļūtu. [00:53:59] Mērķauditorija: Tātad tas patīk, ieejas vārds vienāds Bob, and-- [00:54:02] ALISON: labi, tad jūs dabūs Bobs tur lejā. Tieši tā. Ikvienam cool? Labi, tāpēc GET pret POST, šie ir divi galvenie veidi ka mums iet datus HTTP pieprasījumu. Jums puiši būtu redzējis abi šie cerams. Tātad ar GET, informāciju tiek nodots caur URL. Tātad, ja jūs kādreiz darīt Google meklēšanu, YouTube, jūs Iespējams pamani kādu jautājuma zīmi. Un tad, visi vārdi ka jūs vienkārši ielieciet tur. Un POST nodod datus HTTP ziņojuma pamattekstā. Tātad atšķirībā GET, jūs veida apsvērt ka dati tiek slēpts no lietotāja. Bet to, kas ir patiešām svarīgi saprast ir tā, ka tas joprojām ir tikpat nedrošs kā GET. Analoģija Man patīk izmantot, ir, ja Jums ir jūsu bankas konta numuru un jūs rakstīt to uz ārpusi aploksnē, tas ir diezgan nedroša. Ja tu būtu rakstīt par kādu papīrs un ielieciet to iekšpusē aploksnē, tas joprojām ir ļoti nedrošs, jo viss, kas jums jādara, ir atvērt, ka līdz un apskatīt patieso saturu par ziņu, lai redzētu, kas. Tātad šis ir "apslēpti", un cilvēkiem patīk, lai domāju, ka tas ir droši, bet tas tiešām nav. Un es esmu pārliecināts, ka Davin būs nokļūt, ka vairāk, varbūt. Bet tas ir svarīgi atšķirība padarīt un kaut kas patiešām labs, lai saprastu. [00:55:15] OK, SQL, Structured Query Language. Visi sīkumi, kas mēs esam redzējuši tik nesen! Tātad, tas ir būtībā tikai paredzēts, protams, lai pārvaldītu datus. Jūs puiši bija daudz pieredzes ar šo jūsu tabulas ar PHP MyAdmin. Un tur ir četras kopīgas vaicājumi ka mēs vēlamies, lai jūs guys zināt. Tātad tur ir update, ievietot, atlasīt un dzēst. Tāpēc pārliecinieties, ka jūs zināt, tie patiešām labi. Mēs ejam, lai dotos caur tiem ļoti ātri. [00:55:40] Tātad atjaunināt, patiešām, kā to, ko Jūs varētu domāt, ka tas, tas tikai aktualizē datus savā datu bāzē. Tāpēc mums ir kādu piemēru šeit. Tas ir vispārējā struktūra atjaunināšanas vaicājumu. Tātad mēs atjauninātu tabulu ka mēs runājam par. Un mēs gribam noteikt konkrētus vērtības, dažas kolonnas vienāds ar konkrētām vērtībām. Tātad tas tikai atjaunina galda, mainot vērtībām visās rindās šajā lietā. Tātad šo vienu šeit lejā, faktiskais Piemēram, mums ir insert-- sorry. Ka slide uzlabotas bez manis neapzinoties to. [00:56:17] Tātad tas atjauninājumi Tabulu col1 vienāds līdz VAL1 kur māju vienāds "CURRIER." Ko tas viens tas ir tas tikai maina, tā tikai atjaunina šīs vērtības konkrētās vietās. Tātad šajā pirmā, tā izmaiņas, tās vērtības viss jūsu galda, OK? Tas notiek, lai mainītu šo kolonna par katru ierakstu, par katru vienā rindā. Bet tas, kur, jūs varētu domā par to kā kvalifikatoru. Tātad tas ir tikai gatavojas mainīt tas ļoti īpašos vietās. Tātad p-noteikti septiņi, kad jums varbūt aktualizēja naudas summu ka jūsu lietotāja bija, jūs, iespējams, bija daži, kur ID vienāds sesijas ID, vai ne? [00:56:53] Tāpēc, ka jūs nevēlaties, lai izmainīt naudas summu par katru personu, kas bija, izmantojot jūsu mājas lapā. Tu gribēji, lai mainītu to uz vienu konkrētā persona, šī persona ir kurš bija izmantojot to tajā laikā. Taisnība? Labi, lai ievietotu, ievietot noteiktas vērtības uz galdiem. Tas ir tāpat kā tad, kad tu esi radot jaunu lietotāju. Vispārējā struktūra šeit ir ievietot jebkurā tabulā mēs runājam par. Vērtības, kas ir vērtības, kas mēs tiešām gribam, lai ievietotu. Labi, tā kā mēs redzam šeit, mēs ir ievietot tabulā. Tas ir īpašas kolonnas ar to atbilda vērtības. Tātad šis saka, ievietot jauna rinda, kas satur vērtības VAL1 un val2 saskaņā šie īpašie kolonnas. [00:57:33] Tātad, varbūt jūs tikai vēlaties aizpildīt ārā puse no lietām šajā rindā. Tas ir tas, ko šī daļa šeit ļauj jums darīt. Tas ļauj jums tiešām noteikt, kura daļa. Jā? [00:57:44] Mērķauditorija: Vai jums ir tikai [nedzirdama] šūnas rindā [dzirdams]? [00:57:52] ALISON: Ja Jums ir tikai jāaizpilda atsevišķas daļas jūsu rindas, pārējā šīm šūnām ir tikai tukšas. Tik ilgi, kamēr jūs ļautu viņiem būt tukša, tā nav problēma. Ja jūs mēģināt tiem piekļūt, tas ir gatavojas atgriezties dažas tukšas elements. Bet tas ir svarīgi zināt ka atsevišķās tabulās, viņi ir jāļauj būt nulle. Jums var būt uzskriet Problēma laikā jūsu p-komplektu jo mēs neļāva kādu no jūsu vērtības ir spēkā. Bet jūs varat norādīt izvēles vērtība jūsu galda. [00:58:26] OK, izvēlieties, tāpēc tas ir tikai veids, kā iegūt konkrēti dati no galda daži identifikators, ka jūs vēlaties. Tātad izvēlieties zvaigzne no galda, kur col vienāds kaut tikai nozīmē, iedodiet man visus datus, kas saistīti ja tas īpašais kolonna ir taisnība. Tātad zvaigzne šajā gadījumā būs atgriezt visu rindu, lai jūs, OK? [00:58:49] Un tad, šajā gadījumā, izvēlieties zvaigzni no tabula tikai dod jums visu tabulu. Un tad, dzēst acīmredzot, tas tikai izdzēš rindu no galda. Tātad izdzēst no galda, neatkarīgi galda mēs esam norādes, kur daži specifiski identifikators vai kādu nosacījums ir patiess. Jā? [00:59:07] AUDITORIJA: Jautājums. Kāpēc jūs izmantojat dubultā citātus, un vai jums do pēdiņās vai viena citātus, tas kaut ko mainīt? [00:59:13] ALISON: pēdiņās vai vienu pēdiņām nesniedz atšķirība SQL. Es domāju, ka es redzēju citu jautājumu. Jā? [00:59:20] Mērķauditorija: Vai nav tā neietekmē to, ko izpaužas izbēguši no vaicājumu? [00:59:25] ALISON: Rob? [00:59:27] ROB: Ko jūs saprotat ar izbēguši no vaicājumu? [00:59:31] Mērķauditorija: Ja kāds ir vienu vaicājumu formā of-- [00:59:36] ROB: Ja kāds būtu likt vienu citātu, tad tik ilgi, cik jūs esat dezinficēšana jūsu ieguldījums, tad tas nav svarīgi. Bet, ja jūs izmantojat vienu quote un jums ir nepareizi izvairījusies ievades, tad jā, tie ir likt vienu citātu, lai pārtrauktu Jūsu kods. ja jūs izmantojat pēdiņas, viņiem ir nepieciešams, lai dubultā citēt lauzt savu kodu. Taču, kamēr jūs izvairīties lietas pareizi, tas nav svarīgi. Tas ir tikai gatavojas tulkot uz pareizo simbolu vienalga. [00:59:59] Mērķauditorija: Ko aizbēgt nozīmē? ALISON: Nu, piemēram, dezinficēšana un aizbēgt. Eksāmens, kas mums ir, liels xkcd komikss, ka viņi uzvilkt, kur jums ir, oh-- ROB: Tas ir pēdējais slaids. ALISON: Tas ir pēdējais slaids, tiešām? Ak mans dievs. Tur mēs ejam, perfekta. Labi, tāpēc būtībā, jūs varat injicēt kaut kas šajā SQL vaicājumu kur tas saplīst Jūsu kods, vai kā David parādīja klasē, ja mums ir daži vienots quote 1 vienāds 1, un, ja mūsu kodu, mēs tikai tieši kopēt, ka, un mums ir beigu vienu citātu, kas notiek, ir mēs iegūstam daži izteiksme novērtē to taisnība, ka būs ļaut kādam ienākt mūsu datu bāzē un saņemt datus, kas mums nevēlaties tos saņemt. Tātad dezinficēšana izejvielas nozīmē tikai pārliecinoties ka mums ir izkļūt šos rakstzīmes un apzīmē tos kā simboliem un ne lietas ka būtu jāatļauj jāuztver burtiski kā mūsu SQL. [01:01:04] Tik liela lieta, ka mēs teicām ka jūs guys vajadzētu izmantot bija HTML speciālie simboli, kas ir kaut kas ka jūs varētu vēlēties, lai to apskatīt. OK, dzēst. Datu tipi, tas viss būs tiešsaistē. Tā kā mēs esam atstājuši 15 minūtes, es esmu tikai gatavojas iet tieši caur to. PHP un SQL, būtībā tas ir tikko mums bija vaicājumu funkciju, kas palīdzēja aizsargāt pret šie ļaunprātīgiem uzbrukumiem. Tātad, ja jūs izmantojat vaicājumu, mēs pārliecinoties ka lietas dezinficē un plauktiņš. [01:01:36] MVC ir tikai dizains paradigmas, tā modelis, skats, kontrolieris. Tas ir tikai veids, lai saglabātu lietas jauka un sadalīt vienādi ka mums ir tendence faktors ārā kods uz funkcijām. Tas ir tikai web dizains sistēma kas ļauj jums darīt to pašu. Es esmu gatavojas izlaist šo. [01:01:54] Tas ir kaut kas es Būtu super comfy ar. Tas ir ļoti maz galda tur. Tas dod jums funkciju piemērs modeļa. Es esmu tikai gatavojas cauri tāpēc, ka I patiešām vēlaties Davin, lai varētu runāt. Ja jums ir kādi jautājumi, nekautrējieties. Es būšu šeit pēc. Tikai nāk runāt ar mani. Ar to, ka mums ir HTTP statusi. Un Davin s gatavojas pūst caur to 15 minūtes. Tas būs liels. [01:02:17] Davin: OK. Uh, jūsu mic? Yeah. Piedodiet. ALISON: Way jāsagatavo. Davin: Nē, es esmu gatavs. Es esmu gatavs. Darīsim to. Tas ir gatavs. OK. Piedodiet. Es izlēja kafiju uz sevi. Es nezinu, vai es esmu vairāk sajukums, ka es izskatos muļķīgi, vai arī, ka man nav kafiju vairs. Anyway, tikai ātri paziņojums par lapas jums puiši ir. Tātad šī lapa jums puiši ir, nav amatpersona, kas ir uz viktorīnas. Šis ir oficiālais kas ir uz viktorīnas. Tāpat, mājas lapā, mēs pateikt tu, OK, tas būs uz viktorīnas. Tātad maz apkrāptu lapas Jums ir, ne amatpersona. Un tur ir kļūdas par to. Tāpēc labākais, nevis tikai akli izmantot. Tātad yeah, tas, ka. Tātad, pieņemsim nokļūt šajā nekustamo ātri. [01:03:05] Tātad HTTP statusi. Tātad, kas notiek, kad mājas lapa, viss ir kārtībā. Viss ir OK. Viss nāk atpakaļ jums, kā jūs to vēlaties. Jūs saņemsiet 200 OK. 301, kur mēs esam redzējuši, ka 301 pirms? Pagaidiet, kas notiek? Piedodiet. Mēs redzējām i alvas lekciju nodrošinājumam. Tātad drošību laikā, tāpēc, ja David ierakstījāt http un tad mēģināja doties uz cs50.net, jūs gatavojas redzēt 301 pārvietots. Kāpēc? Jo tas notiek, lai novirzīt Jūs automātiski mūsu HTTPS. [01:03:35] Tātad 301 pārvietot, tikai tas ir būtībā novirzīšana. Un jūs varat domāt par to, kā šis. Jebkurš no statusiem, kas sākas ar 2 gados, tie ir līdzīgi, OK, viss ir OK. Jebkurš no statusiem, kas sākas ar 3, tie ir pāradresācija. Statusi, kas sākas ar 4, tas nozīmē tur ir sava veida klientu kļūdu. Statusi, kas sākas ar 5, tas ir sava veida servera kļūda. Tātad jūs veida plīsumi tamlīdzīgi ka statusi. Tātad 304 nav ne pārveidotas, tāpēc jūsu server.c p-komplekti, tāpēc pieņemsim, ka jums piekrauts cat.html. Viss nāk atpakaļ, jums 200S, OK, lieliski. [01:04:03] Pieņemsim, ka jūs atsvaidzināt to. Nu, iekšā, ka cat.html, jums ir JPEG. Labi, ka JPEG nav gatavojas saņemt reloaded. Jūs neesat gatavojas post citu GET lūgumu uz serveri, un pēc tam iegūt visu šo informāciju atpakaļ. Tas notiek, lai tikai be--, ka attēls ir būs kešatmiņā uz jūsu datora. Un tā, ka attēls būs 304. Tātad tas nav mainīta. Ja pēc tam noslēguma, skaidrs cepumi, un tad atsvaidzināt un mēģināt ielādēt šo lapu atkal, jūs gatavojas redzēt 200S. Jūs neesat gatavojas redzēt, ka 304. [01:04:28] 400, slikti pieprasījumu, nekustamā ātri, piemēram, ja jūs gatavojas sūtīt JSON objekts ar serveri un jūsu JSON objekts bija kļūdaina, jūs redzēsiet kaut kas tamlīdzīgs. 403, aizliegta. Kad Jūs redzēt aizliegts? Iespējams Iespējams? AUDITORIJA: Chmod. Davin: Chmod, jā. Tātad jums nav iestatīta atļaujas pareizi. 404, nav atrasts. Tas vienkārši nav tur. Tātad, ja jūs tipa nepareizā URL. 500, iekšēja servera kļūda, serveris iespējams, nav pareizi konfigurēts. Kaut kas nav jūsu galā, bet kaut uz servera pusē. Un 503? Daudzi cilvēki redzēja 503s pagājušajā p-komplektu. Kad tas tā notiek? Es dzirdēju čukstus. [01:05:05] AUDITORIJA: Kad Google izlemj tu esi robots. Davin: Jā, kad Google nolemj tu esi robots, jums 503s. Tā ka ir pārslodze. Ja jūs esat pieprasījis no servera pārāk daudz, tas parasti ir īslaicīga. Un lielākā daļa no jums pamanījušas. Tātad jūs redzēja 503. Jūs, iespējams, ir veikušas nedaudz pauze, tad 503s aizgāja, un viss bija labi. [01:05:20] Gabe: Real ātri, ja jūs guys get 500, iespējams, šī pēdējā problēma, kas? Jā? [01:05:27] Mērķauditorija: Parasti, ja serveris ir failu nevietā vai [nedzirdama] to mašīna [nedzirdama]. [01:05:34] Gabe: Tātad tas varētu būt konfigurācija jautājums jūsu PHP uz jūsu serveri. Bet tas varētu būt tikai kaut kas kā semikolu, ka jūsu aizmirsa. Ja jūs rakstāt PHP, daži nepareiza sintakse varētu saņemt jums kaut kas tamlīdzīgs. OK? [01:05:46] Davin: Cool. Vai jūs vēlaties man darīt tikai līdz AJAX? [01:05:51] Gabe: [nedzirdama]. Davin: OK. Tātad, kas ir DOM? Kāda DOM kandidēt? [01:05:55] Mērķauditorija: Dokumenta objektu modelis. Davin: Nice. Un kāpēc mums tas patīk? Awesome. Labi, tāpēc tas vienkārši ļauj mums piekļūt HTML, piekļūt mūsu lapā ļoti ātri. Kāpēc? Tāpēc, ka mēs esam ārstē mūsu lapa, apstrādājot mūsu HTML tagus, apstrādājot viss kā tad, ja viņi objektus. Ja mēs viņus kā viņi objekti, tad ko mēs varam darīt? Nu, mēs varam zvanīt funkcijas uz tiem. Un tas ir svarīgi, kāpēc? Nu, tāpēc, ka mēs ejam, lai izmantotu JavaScript lai atjauninātu savu HTML, atjaunināt šos objektus. Tātad, ja mēs pret viņiem kā pret objektu, tad mēs varam zvanīt funkcijas uz tiem. Es esmu gatavojas nokļūt šo maz vairāk, kad es iet uz JavaScript, bet jūs visi esat redzējuši, piemēram, document.getElementById. Tātad dokuments ir jūsu elements, iegūt elementa ID, tāpēc jūs gatavojas meklēt kādu ID HTML tagu. Un tad, jūs varat darīt kaut kas cits, kas. Piemēram, tāpat document.body, tad jūs varat pievienot bērnu. Tātad jūs gatavojas atrast dokumentu. Jums ir dokumentu. Jūs gatavojas, lai atrastu ķermeni. Jūs atradāt ķermeni. Un tad, jūs gatavojas aicināt kādu funkciju par to. Tātad pievienot bērnu, un jūs varat pievienot daži HTML uz beigām iekšpusē jūsu organismā. Vārdu sakot, tu esi vienkārši apstrādājot to kā objektu. Jūs esat apstrādājot HTML tags kā objekts. Un tas padara to ļoti viegli un ātri iet caur tiem. Bet tas arī ļauj jums aicināt funkcijas tām lai jūs varētu manipulēt un mainīt elementus. [01:07:04] Gabe: Ņemot vērā to, kāpēc ir JavaScript šāda jauka valoda, lai mijiedarbotos ar HTML? Izredzes ir, kad cilvēki tika izvēloties valoda pārlūku, par klienta puses, JavaScript ir tiešām jauks, tas ir patiešām labs pie apstrādes objektiem. Un objekti ir veida, piemēram objekti, kas parādās HTML, tāpēc tas ir ļoti viegli JavaScript darīt šāda veida apstrādi. Davin: Nice. Tātad, šeit ir tikai piemērs. Tāpēc es domāju, ka pēc pagājušā gada viktorīnu, vai varbūt pirms diviem gadiem, mēs lūdza jums izveidot koku. Tātad, tas ir tieši tas, ko jūs darāt. Tātad jums sākt ar dokumentu. Un tad jūs būtībā paskatieties tagiem. Tātad, ja paskatās, mēs sākt ar HTML tagu. Un tad, jums clues par to, kā darīt, pamatojoties uz ieloka. Tātad vadītājs veida filiāles off. Iekšā galvā, mums ir citu tagu titulu. Tātad, mums ir nosaukums tag. Un iekšā, ka mums ir dažas virkni. Un tā mēs pārstāvam string aplī. Un visi tagi ir kvadrātu. [01:07:54] Un, ja paskatās, ja mēs domā par to kā koks, un pieņemsim, ka HTML ir vecāks, tad galvas un ķermeņa gribam būt brāļi un māsas. Viņi abi būs bērni šo vecāku. Tāpēc, ka viņi abi brāļi un māsas, viņi būs sava veida blakus viens otru mūsu koku modeli. Un tad, jūs būtībā darīt tieši to pašu. Tātad nav grūti, bet mēs esam lūguši jautājumi, piemēram, tas, pirms uz viktorīnas. Gabe: Vai kāds ir jautājumi līdz šim? Vai tas ir labi? Davin: Cool. JavaScript, OK, labu sīkumi. Tātad JavaScript, kas ir JavaScript? Nu, JavaScript is-- tas ir sarežģīti, bet tie ir daži no izceļ ka jums vajadzētu paturēt prātā. Pirmkārt, tas ir brīvi drukāti. Ko tas nozīmē? Tātad PHP was-- yeah, kas notiek? [01:08:35] Mērķauditorija: Jums nav skaidri stāvoklis, kāda veida mainīgo tā ir. Davin: Perfect. Tad viņš teica, ka jums nav skaidri jānorāda mainīgo tipu. Tas ir tieši labi. Tātad C, ja man bija int i vienāds 50, tad PHP, tas ir tāpat kā tas, $ i, ir vienāds ar 50. Tad JavaScript, kāda būtu zvans būt? Var, vai ne? Tā gribētu būt, piemēram vars i ir vienāds ar 50. Bet jums nav jābūt piemēram, OK, tas ir int. OK, tas ir virkne. Nav nepieciešams, lai to izdarītu. Tas ir interpretējama valoda. Tātad, ko tas nozīmē? [01:09:04] Mērķauditorija: Nav apkopoti. [01:09:06] Davin: Kas nav apkopota nozīmē? Yeah? [01:09:11] Mērķauditorija: Jums nav pārstrukturēt kodu lai saņemtu to gatavs datoru, lai palaistu to. Tas ir tikai pieņemts brīdī izpilde un datoru [nedzirdama]. Davin: Jā, tā tas notiek, lai caur tulka. Bet tu esi tieši labi. Tātad jūs nekad apkopot to, labi? Kad jūs darījāt savu PHP un JavaScript kods, jūs nekad sauc sastādīt. Jūs nekad sauc kaut ko līdzīgu veikt vai kaut kā tā. Tas ir tāpēc, ka tas ir interpretējams. Tātad, katru reizi, kad tā iet caur pārlūku, tā iet caur tulka. Un kas notiek, lai interpretēt tikai reālā laikā uzreiz jums. Tātad, kādi ir daži pozitīvi un negatīvi lai kam interpretēts valodu un kam ir apkopota valodu? Tātad compiling-- yeah, kas notiek? [01:09:50] Mērķauditorija: Tulkojis ir lēnāks. Davin: Kādā nozīmē? [01:09:57] AUDITORIJA: Pēc tam, kad apkopo, jums nav darīt visus papildu pasākumus, lai izpildītu tā, tā kā šī [nedzirdama]. [01:10:04] Davin: Pareizi, perfekta. Tātad, ko jūs teicāt, ir būtībā, ka apkopojot, kad jūs sastādīt, jums ir no sākotnējās izmaksas daudz, vai ne? Jūs gatavojas sastādīt to. Bet pēc tam jūs sastādīt tā, kompilators gatavojas optimizēt to. Tas būs ātri. Tas notiek, lai būtībā tik strauji, kā tas var būt. Mutiski, jūs nekad ir, ka sākotnējās izmaksas. Drīzāk, tas būs nedaudz lēnāks katru reizi, kad jūs interpretēt. Un jūs nāksies interpretēt to katru reizi. Tā vietā, lai, ņemot vērā šo vienu reizi izmaksas, tagad tu esi nāksies interpretēt Katru reizi, kad lapa padara. [01:10:29] Tik tulki ir labi, jo Jums nav, lai apkopotu to, bet viņi slikti, ka katrs reizi, kad lapa slodzes, tas ir nāksies interpretēt šo JavaScript. Un tas notiek, lai palaistu nedaudz lēnāk nekā tad, ja tu būtu, lai apkopotu to. Ļauj communicate-- oh, pagaidiet. Izmantot, lai manipulētu saturu un izskatu. Mēs tikko runājām par to. Tas izmanto DOM. AJAX, mēs nokļūt AJAX ar mazliet. Un tad, tas ir klienta pusē. Tātad PHP ir servera pusē. JavaScript ir klienta pusē. Kas ir pozitīvi, ka? Tā saka, ka tā. Tas ir ātrāk, vai ne? Tāpēc, ka jums nav, kuri paredzēti, lai tas ir ātrāk. Jums nav, lai sazinātos ar kādu citu ierīci. Ja jūs tikai par savu klients, jūs nekad nāksies iet un redzēt, kas ir uz servera un tad ziņot vai kaut kas tamlīdzīgs. Tātad klienta pusē ir tendence būt mazliet ātrāk. [01:11:15] Gabe: Jā, bet tas nenozīmē, PHP ir ātrāk nekā JavaScript vai kaut kas līdzīgs. Viņi darbojas veida tajā pašā ātrums, jo viņi abi interpretējamas valodas. Lieta, kas ir lēns šeit ir pieprasījums. Tātad jūs faktiski iet visu ceļu pār Brazīliju iegūt kādu informāciju ka tur dzīvo. Bet PHP un JavaScript, viņi veida darbināt ar tādu pašu ātrumu. Tas nav, ka viens ir ātrāk nekā otru. Tas arī, āķīgs jautājums šeit. Tātad JavaScript nekļūst mašīnu kodu, patiess vai nepatiess? [01:11:47] AUDITORIJA: False. Gabe: False. Tai ir jākļūst mašīna kods jo mašīna kods ir Vienīgais mašīna saprot. Pat ja tas nav apkopota, tas joprojām kļūst mašīnu kodu jo tulks ir tikai programma, kas iet pozīcijai un pārveido šo līniju vērā kaut dators saprot. OK? Cool. [01:12:08] Davin: Te ir tikai ļoti vienkāršas sveiki pasaules JavaScript programmu. Tāpēc es nezinu if-- esat redzējis šo. Bet jūs vienkārši ir HTML šeit. Un nevis faktiski liekot JavaScript skriptu tagiem, tāpēc jūs parasti likt to galvā. Jums ir skriptu tagus. Jūs piliens to tur. Viss, ko mēs esam darījuši šeit mēs esam saistīti in-- tāpēc mēs esam saistīti ar JavaScript failā kā šis. Un jūs visi esat izdarījis, vai ne? Tātad, ja jūs, izmantojot jQuery un underscore.js pagājušajā p-kopumu, Jums nav tonnas kodu up in savu skriptu tagus, līdz jūsu galvā. Jūs varētu darīt, bet tā vietā jūs vienkārši saistot to. Un jūs esat saistot to tāpat kā jūs darīt ar CSS. Tātad, tas tikai padara to vieglāk lasīt tik Jūsu kods nav kā 1000 līnijas ilgi ar t funkcijas, kas jūs nevarēsiet būt, izmantojot. [01:12:52] Tā vietā, jūs vienkārši saistīt to. Tas compartmentalizes to. Tas ir tāpat kā rakstot kādu header failu, un tad arī šo header failu C. Domājiet par to tāpat kā šis. Tātad, ko tas dara? Nu, tas ir gatavojas palaist. Tas notiek, lai brīdinātu. Tātad jūs esat gatavojas iegūt mazliet pop up sauc Hello pasaulē. Ātrs jautājums, tikai veselība pārbaudītu, lai jūs redzēt šeit organismā, saka ķermeņa, HTML šeit. Kas nāk pirmais? Vai es redzu ķermeņa, HTML šeit, vai man redzēt brīdinājumu vispirms? [01:13:19] AUDITORIJA: Alert. [01:13:20] Davin: Right. Viņš saka brīdinājumu. Kāpēc? [01:13:22] AUDITORIJA: Jo jums iet no augšas uz leju. [01:13:24] Davin: Jā. Perfekta. Tātad viņš saka, jums iet no augšas uz dibens, kas ir pilnīgi pareiza. Jūs gatavojas iet no augšas uz leju. Un JavaScript, jQuery, jums ir funkcija, kas ir tāpat kā onload, vai gatavs, un kas saka, OK, pagaidiet, līdz visu šo HTML ir piekrauts. Un tad, zvaniet JavaScript. Tāpēc, ka mums nav, ka šeit, Pati pirmā lieta, kas notiek varētu notikt tas notiek, lai iet no augšas uz leju. Tas notiek, lai hit, ka JS zvanīt, tas notiek, lai brīdinātu. Pēc tam jūs noklikšķiniet OK, ka brīdinājumu iet prom. Tad tas notiek, lai parādītu Jums ķermeņa HTML šeit. Nice. [01:13:54] Labi, lai tikai nekustamo ātri, rakstīšana JavaScript ir super ātri. Lai deklarētu mainīga, VAR nosaukums. Tātad C, Jums ir int i, jums ir atzīt kāda veida veida tas ir. PHP, $. JavaScript, var. Mēs runājām par to. Labi, iesim. [01:14:11] Cilpas, pats. Tas pats. Funkciju deklarācijas, tāpēc tāpat kā jūs esat redzējuši C. Vienīgais, atšķirīgs ir tad, kad jums citām programmēšanas valodām, kā tad, kad esat lietojis 51 nākamajā pusgadā un jūs darāt ar OCAML, jūs varat rīkoties ar anonīmu funkciju. Tātad, tas ir tieši tas, kas jums ir šeit. Tātad jūs vēlaties, lai nodrošinātu summu, kaut kādu summu vērtības. Bet jūs varētu tikai darīt to vienu reizi. Tātad jūs nevēlaties, lai izsauktu to funkciju summu, arī tā funkciju deklarāciju. Tā vietā, jūs vienkārši izmantot to kā anonīmu funkciju. Un jūs esat redzējuši šo partiju. Jūs redzēsiet piemēru tas pēc pāris slaidiem. Jā, mēs redzēsim. Gabe: Labs jautājums. Ja iespējams, jūs vēlaties izmantot anonīma funkcija šeit? Būtībā, ja jūs vēlaties kaut ko, tāpat pasākumā, kas notiks. Tātad, ja pele ir uzklikšķināt, piemēram, Jūs vēlaties kādu funkciju, lai varētu saukt. Tātad jūs iet uz pasākumu apdarinātājs, jums iet uz pasākumu, veida, funkcija, kas Jūs vēlaties, lai varētu saukt. Un ko jūs iet ir, piemēram, beigās no dienas, tikai rādītājs ka norādījums, funkcijai. Tātad, tas nav kā jūs iet viss kods, tāpat kā rādītāju uz funkciju. Un tad, kad kāds noklikšķina pele, tad šī funkcija izpaužas sauc. [01:15:17] Davin: masīvi, lai jūs ir masīva deklarāciju. Tad, masīvs likt lietām. Real ātri, kāds būs šis izdrukāt? Kāda būs trešais elements būt? [01:15:31] Mērķauditorija: "JS". [01:15:32] Davin: Pareizi, tas būtu "JS." Pagaidiet, iet atpakaļ. Kas ir garums? [01:15:37] AUDITORIJA: Trīs. Davin: Trīs, vai ne? Tieši tas, ko tu domā. Labi, tagad iet. Bloki, jūs varat pievienot lietas uz tiem. Tātad jūs varat iet tālāk to sākotnējās robežas. Tikai kaut kas jāpatur prātā. PHP, JavaScript, viņi maz nedaudz vairāk piedodošs ziņā lietas tāpat. Objekti, ļoti daudz, piemēram, structs C, ir ļoti daudz tāpat asociatīvas masīvi PHP. Jūs visi esat bijusi pieredze ar šo. Tātad, JSON, kad jūs iet JSON un atpakaļ p-noteikti astoņi, tas ir jūsu mērķis. [01:16:03] Tātad yeah, piemērs, nekustamo ātri piemērs. Te ir objekts. Kā jūs atsauces šo objekts, lai tikai nekustamo ātri, pieņemsim, ka es gribēju, lai atrastu ārā, OK, kāda ir kurss? Un tā objekta nosaukums šeit ir CS50. Un tad, ja man bija asociatīvās masīvs, kā es varētu darīt? Es būšu, izmantojot atslēgu, vai ne? Tāpēc man ir nosaukumu masīva. Man ir stiprinājuma, citātus, atslēgu, end citātus, gala kronšteins, un kas būs atsauces, ka elements iekšā manā asociatīvā masīva. Kā es varu atsauce Protams iekšā manu objektu? Kāds zina? [01:16:39] Mērķauditorija: [dzirdams]. [01:16:40] Davin: Kas notiek? AUDITORIJA: CS50.course. Davin: labi, jā. Tik CS50.course. Tātad, kā jūs atsauces lietas iekšā JSON objekts ir ar punktu. [01:16:48] Mērķauditorija: Jūs varat izmantot arī masīvu sintaksi. [01:16:53] Davin: Labi, labi. [01:16:54] Gabe: Jūs varat izmantot arī CS50 kronšteinu, stīgu, tāpat pēdiņās. Mērķauditorija: Es domāju, ka tas ir identisks PHP. Gabe: Tas ir tas pats. Davin: Fine! Bet jūs redzēsiet šo citas vietas. Jā, lai saglabātu turpinās. Tas ir tas, ko es tikko teicu. Tātad uz JavaScript jQuery piemērs. Tātad šis ir mans DOM, vai ne? Real ātri, tāpēc man ir galva, hello world, ķermeņa. Man ir poga. Tajā teikts, "push mani," tāpēc es gribu, lai push to. Un es gribu darīt kaut ko kad tas ir uzklikšķināt. Labi, nākamais. [01:17:31] Labi, tāpēc tas ir mans JavaScript. Tik jQuery ir tikai vieglāk veids, kā rakstīt JavaScript. Tātad tas, un tas, ko es esmu gatavojas parādīs nākamreiz, būs jQuery, ir identiski. Lai viņi darīs to pašu lietas. Tikai jQuery mēdz būt mazliet vieglāk. Cilvēki mēdz patīk vairāk. Tā ir daudz funkcionalitāti. Tātad, cilvēki mēdz izmantot jQuery. Jūs visi izmanto jQuery pēdējā p-komplektu. Tātad, ko tas dara? Kāda būs šī JavaScript-- tik tas ir tikai plain JavaScript. Ko šis darīt? Ko tas dara? [01:18:03] Tātad, pirmkārt, jūs redzat logu onload. Taisnība? Tātad mēs neredzējām, ka pirms. Tātad tas būs jāgaida kamēr visu logu slodzēm. Tātad, tas notiek, lai gaidīt, kamēr HTML, visi attēli slodze pirms tā neko nedara. So teiksim mūsu DOM ir piekrauts. Viss ir tur. Tad to, kas notiks? Yeah? [01:18:19] Mērķauditorija: parādās poga. [01:18:22] Davin: poga ir jau tur. Jā, tāpēc poga s jau ir tur. Bet tas ir gatavojas teikt, Labi, ja es noklikšķiniet uz pogas, tāpēc poga ir jau tur, piemēram, ka HTML tagu. Pagaidiet, iet atpakaļ nekustamo ātri. Šis tags tiesības tiesības šeit ir būs poga jau. Tur jau ir poga. Bet tad, JavaScript tag, tieši šeit, tā saka, OK, es gribu nokļūt elementu pēc ID, tāpēc meklēšana poga vienkārši saka, OK, es gribu kartēt šo mainīgo uz šo pogu. Tā, ka mainīgais ir tikai vieglāk veids, kā piekļūt šai pogai. Un es saku, OK, ja es noklikšķiniet, ka poga, tāpēc, ja es noklikšķiniet šo elementu, un šis elements attiecas uz pogu, ja es noklikšķiniet uz to, tad es gribu, lai izsauktu funkciju. Te ir viens no tiem, anonīms funkcijas mēs runājam. [01:19:03] Tikai zvanu dažas funkcijas. Inside šo funkciju, galvenokārt ko mēs esam redzējuši daudz, brīdinājumu. Noklikšķinot uz meklēšanas pogas. Tas notiek, lai būtībā ir poga. Jūs noklikšķiniet uz tā. Jums, ka brīdinājumu. X out. Viss. Yeah? [01:19:16] Mērķauditorija: Tātad, ja jūs nodot skriptu [Nedzirdama], skriptu tag jūsu HTML? [01:19:21] Davin: Jūs varat ievietot skriptu tag taisni galvā jo jums ir šī onload. Tas ir arī, ka jums ir klikšķis. Tātad, tas notiek, lai gaidīt, kamēr Noklikšķinot uz kaut ko. Bet onload ir tikai, lai būtu droši, lai padarītu ka viss slodzes uz jūsu HTML iepriekš. Yeah? Jūs vēlaties kaut ko pateikt? [01:19:40] Gabe: [nedzirdama]. Davin: Jā. [01:19:42] Mērķauditorija: Tātad onload izvairās definējot mainīgo meklēšanas poga , tikai sakot document.getElementById meklēšanas poga dot [nedzirdama]. [01:19:49] Davin: Noteikti, bet tad Jūsu string tikai kļūst milzīgs. Tieši tā, tāpēc tas ir tikai, lai padara vieglāk jums, jā. Jā? [01:19:56] Mērķauditorija: Kur mēs esam izveidot window.onload? Vai document.ready? [01:19:58] Davin: Jā, tur ir. Jā, tur ir, es pārbaudīju. [01:20:02] Gabe: Nav viņiem rūp. [01:20:03] Davin: Labi, tāpēc es esmu gatavojas pastāstīt jums vienalga. Vārdu sakot, tikai kopumā, tāpēc window.onload gaida, kamēr jūsu DOM, visi jūsu HTML, sūtījumus. Tā gaida, kamēr jūsu attēliem slodze. Tā gaida, kamēr viss slodzēm. document.ready, tas tikai gaida, kamēr jūsu DOM slodzēm. Tiklīdz HTML ir viss tur, reiz Jūsu DOM ir tur, sāk darboties. Tas ir vienīgā atšķirība. [01:20:23] Gabe: Quick vesels saprāts pārbaudīt šeit. Tātad to var redzēt sava veida kā koda rindu, vai ne? Jo tas ir window.onload vienāds ķekars sīkumi. Kad JavaScript lasa šo, patiess vai nepatiesa, funkcija izpaužas izpildīts. Nepatiesa. OK? Kas notiek šeit, jūs vienkārši iet šī funkcija kā anonīmu funkciju līdz window.onload. Un tad, kad tas notiek faktiski saņemt izpildīts? Kad logu slodzes. Tas ir notikums. Tā ka ir jus t lieta, mēs esam runājot par agrāk, vai ne? Tātad, kad notikums notiek, funkcija notiek. Pats ar onclick. [01:20:59] Davin: OK, lai kāds ņēma prom document.ready. Bet tas būs precīzs same-- Mērķauditorija: dolāra zīmi, ka ir document.ready. Tas ir īsceļu. [01:21:07] Davin: Ak, tas ir? Labi, tā tas nozīmē document.ready, īsceļu. Bet tas ir tāds pats kā window.onload izņemot, ka maz atšķirību Es jums stāstīju. Un tas ir jQuery. Tātad šī ir tieši tā pati thing-- tas ir JavaScript. Tas ir just-- daži cilvēki domā par to kā vēl neliels svars, spīdīgs versija ka ir daudz funkcionalitāti ka jūs, iespējams, izmantojot. Tātad tas nav tieši tas pats. [01:21:34] Tātad, lietas veida norādīt. Tā otrā, piemēram, mēs bija document.getElementById, tāpēc mums bija tik ilgi virkne, kas notiek, lai saņemtu elements ar jebkādiem ID tā ir. Tas ir jāaizstāj ar šo aicinājumu tieši šeit. Tātad jūs redzat, ka dolāra zīmi, tad jūs redzat citātu, hashtag. Hashtag vienmēr selektoru. Tajā teikts, OK, tas ir saistīts ar ID. Kas selektors klasi? [01:21:56] AUDITORIJA: Dot. [01:21:57] Davin: Dot, labi. Ja jūs tikai gatavojas izvēlētos tagu, kas tas ir? Tas ir tikai tag, tieši. Un jūs varētu izmantot, ka šeit, kā labi. [01:22:05] Gabe: Un pēc birkas, mēs domājam līdzīgi div, piemēram, vai galvas. [01:22:08] Davin: Vai institūcija vai p vai kaut kā tā, jā. Tātad šeit, OK, tā vietā, lai teiktu document.getElementById, tas ir tikai tieši tas pats. Tikai jQuery, tas ir īsāks. Tātad, tas ir vienkāršāk. Tātad, ne vairāk onclick, vienkārši noklikšķiniet. jQuery funkcija, nosaukt šo funkciju. Alert ir tieši tā pati. Tātad, tas ir mazliet mazāks, vai mazliet īsāks, nedaudz bit-- cilvēki domā tas ir mazliet vieglāk rakstīt, mazliet vieglāk saprast. Bet tas ir jQuery. Daudzi cilvēki saņemt nedaudz mazliet apmulsis un noraizējies un viņi domā, OK, jQuery ir savādāka nekā JavaScript. Man ir jāatceras šīs divas dažādas lietas. Tas nav. Es domāju, tas ir atšķirīgs sintakse. Bet jQuery ir JavaScript. Tas ir tikai šķietami labāka versija, ka varētu būt vieglāk saprotu, ka cilvēki izmanto. Gabe: Jā, lai būtu godīgs, ka dolāra zīmi ka jūs redzēt jQuery, tas ir tikai nosaukt par funkciju jQuery nosaka. Tas nav kaut kas īpašs. Vai tas ir tikai nosaukums funkciju, tāpat kā jūs varētu definēt dolāra zīmi. [01:23:03] Davin: Jā, tāpēc par to runāja. Dažas noderīgas lietas. Es skatījos atpakaļ pie vecās viktorīnas. Jo pēdējo pāris viktorīnas, tie esam nācās izmantot lietas, kā šis. Tātad document.ready, tāpēc pārliecinieties, ka viss ir piekrauts pirms jums sākt darīt lietas. Izvēlieties ID, vai izvēlieties klase, tas lūdzu tikai būt quote dot kādu klasi, gala cenas. Iesniegt, tādēļ, ja jūs esat iesniedzot formu un zvanu šī funkcija pēc veidlapas norāda. Vērtība, tāpēc pieņemsim, ka man bija sava veida iesniegšana, piemēram, lietotāja vārdu, e-pastu, neatkarīgi. Man bija tekstlodziņu. Tāpēc es esmu ierakstot šo teksta lodziņā. Nu, ja jūs vēlaties, lai iegūtu vērtību no šī teksta lodziņā, jūs izmantojat dot val. Un tad, uz leju šeit, dot HTML ir tas pats ir kā dokumentu dot getElementByID dot innerHTML. Tāpēc, ka notiek, lai atgrieztos Jums HTML no šo ID. Lūk, jūs vienkārši izmantot kādu ID vai kāds dot HTML. Ka saņemsiet HTML no šo elementu. Ja jūs vēlētos, lai pēc tam to mainīt HTML, jūs varat nodot to kaut ko. Tātad jūs gribētu būt, piemēram dot HTML, un pēc tam iekšā, citātus, jaunu HTML vai kaut ko. [01:24:05] Gabe: Labi, tā AJAX. Man tiešām patīk, lai saprastu AJAX tiešām labi. Tāpēc es gribu jūs guys saprotu AJAX tiešām labi. Jo, ja jūs darāt, jūs diezgan daudz kas notiek lai saprastu visu, kas ir saistīts ar HTTP, PHP, JavaScript jo to visu nāk kopā AJAX. AJAX nav valoda. AJAX ir paņēmiens. Un tā izmanto daudz dažādu rīku. AJAX stendi asinhrono JavaScript XML. Tātad metode, valodas, dati. [01:24:36] Tātad galvenā valoda, ko mēs izmantojam AJAX, lai iedarbinātu visu un rīkoties visu vēlāk ir JavaScript. Tieši tāpēc tas attiecas ļoti tuvu JavaScript. Un tad asinhronā ir jo mēs nedarām to visu uzreiz, kad mēs esam ielādējot lapu. Šī ir lieta, ko mēs varam darīt lietas veida paralēli. Galvenā ideja AJAX ir tas, ka jūs vēlaties tā iegūt kādu specifisku informāciju. Piemēram, ja jūs rakstāt jaunu lietotāja vārdu, kad jūs reģistrēt lietotāja vārdu, mans lietotāja vārds ir ABC123. Un pēc tam, beigās formā, jums ir noklikšķiniet uz Iesniegt. Un tas bija jāiet uz serveri, un pēc tam pārbaudīt, vai datu bāzē, ABC123 jau tur. Un, ja tas ir jau tur, tā saka, lietotāja vārds jau datubāzē. Un tie, jums ir jāaizpilda ārā visu formu vēlreiz. Un tas bija ļoti, ļoti slikti. [01:25:23] Un tad cilvēki saka, OK, kāpēc mēs nevaram vienkārši do nelielu HTTP pieprasījumu tikai pārbaudīt lai noskaidrotu, vai šis lietotājs ir datu bāzē Pirms lietotājs nācās iesniedz visu formu? Tā, piemēram, kad lietotājs nav beidzis rakstīt ABC123, pieņemsim tikai aiziet uz serveri maz bit un tikai iegūt patiess vai nepatiess no servera, lai noskaidrotu, vai tas ir derīgs lietotāja vārdu vai ne. Labi, tāpēc tas ir viens no galvenajiem izmanto AJAX mūsdienās joprojām. [01:25:49] Davin: Tātad nekustamo ātri, it Ajax zvans jQuery, jūs varētu liecināt, ka jums gribu, lai to sinhrono. Jums nevajadzētu darīt. Bet jūs varat darīt. Un, ja jūs, ka, kas notiktu? Nu, piemēram, kad tu esi iegūt ziņas vai kāds, Jūsu pārlūkā ir tikai gatavojas gaidīt kamēr tas viss zvans ir pabeigta tā vietā, ļaujot jums darīt citas lietas labi pēc tam, kad noklikšķiniet uz tā. [01:26:14] Gabe: Tas nav iet vairs. Ak mans dievs. Atvaino! Yup. "Agrāk, klientam nepieciešams pieprasīt viss saturs mājas lapā. " Tas ir tas, ko es teicu. Tas ļauj mums nosūtīt papildu GET vai POST pieprasījumi, neradot pārlādēt mūsu pārlūku. Tātad beigās, dienā, mēs faktiski padarot HTTP pieprasījumus šeit, izmantojot JavaScript. Jo pirms, mēs tikai izmanto JavaScript mainīt HTML, kas jau nāca. Un tagad, mēs varam izmantot, lai saskarnes ar tīmekļa serveriem, kā arī. Kā tas notiek ir mums ir klients. Davin ir klients. Un viņam ir visas JavaScript darboties, jo HTML ir mēms. JavaScript ir gudrs. Tātad Davin Davin ir viņa smart daļa un viņa mēms daļa. Viņš gatavojas izmantot savu smart daļu tagad. Viņš gatavojas izmantot JavaScript uz pieprasījumu, piemēram, vai ABC123 ir datu bāzē vai nav. [01:27:04] Tātad Davin, lūdzu, jūs vienkārši sūtiet man HTTP pieprasījumu. Paldies. Tad viņš vienkārši nosūtīja HTTP pieprasījumu. Tu redzi, ka? Un tas ir tikai tāpat ka jebkura HTTP pieprasījums ir nosūtīts. Pārlūku, Google Chrome vai kaut ko, ir gatavojas redzēt, ka Davin s mēģinot nosūtīt HTTP pieprasījumu, notiek, lai palīdzētu HM mazliet. Un kas notiek, lai iet visu ceļu uz serveri. Tagad serveris ir nāksies PHP šeit, vai jebkurā citā valodā. Tāpat kā parastā HTTP pieprasījumu. Tas ir diezgan daudz normāli HTTP pieprasījums. [01:27:31] Un pēc tam, serveris gatavojas teikt, OK, Davin grib, lai pārbaudītu, vai šis ABC123 ir datu bāzē. Iet runāt modelim. Modelis saka, ka tā nav. ABC123 ir labs lietotāja vārds. Un tad, web serveris gatavojas izmantot PHP, lai padarītu kāda veida failu. Tā varētu būt burtiski tikai fails kas satur "jā", tajā, vai "nē, vai kaut kas tamlīdzīgs. Tas varētu būt jebkurš fails. [01:27:54] Tas varētu būt, piemēram, es esmu gatavojas nosūtīt Davin attēlu pīle ja tas ir datu bāzē un nosūtīt attēlu kāmja ja tas nav datu bāzē. Tas būtu sava veida mēms, bet tas strādā. Labi, tāpēc es sūtu pīle uz Davin. Davin got pīle. Un tagad, kas notiek, rīkoties pīle? Davin viedās daļa atkal, tik JavaScript, vai ne? JavaScript nosūtīts pieprasījums, un JavaScript notiek, lai saņemtu pieprasījumu un interpretēt to tādā vai citādā veidā. [01:28:22] Un šajā ziņā, tas būs saka, OK, ja pīles tad es esmu labs. Ja kāmis, tad es eju teikt, jau nē, lietotāja vārds pastāv datu bāzē. Bet parasti, jūs neesat gatavojas nosūtīt pīle. Jūs esat gatavojas sūtīt kaut nedaudz gudrāk. Un tas, ko mēs izmantojam, ir XML. Un vēl nesen, mēs izmantojam JSON. JSON ir tikai JavaScript Objekts Apzīmējumi, kas būtībā jums Visa JavaScript objekts. Un jūs nodot to failu, tāpat kā ka CS50 objekts, kas jūs guys redzēja. Jūs nodot to failu, un jums nosūtīt to pa Davin. [01:28:53] Tātad šajā gadījumā, es būtu padarīt JavaScript objektu un tikai teikt, lietotājam pastāv, jā. Vai lietotāja pastāv, nē. Un nosūtīt to atpakaļ uz viņu. Un kāpēc JSON? Jo personai kurš saņem tas ir gatavojas izmantot JavaScript rīkoties atbildi. Un JavaScript darbojas tik labi, jo to sauc JavaScript Object nošu. Taisnība? Tātad, viņš var vienkārši zvanīt funkciju un saņemt Šis jaukais objektu no atbildes. Un tad, viņš gatavojas zināt, vai ka lietotājs ir datu bāzē vai nav. [01:29:22] Tātad jūs redzat, tas viss nāk kopā ar tīmekļa serveri, un tad tur ir viens HTTP pieprasījumu un viens HTTP atbilde un viss. Tātad, pārliecinieties, ka jūs guys saprast šo AJAX aicinājumu tāpēc, ka tas palīdz jums saprast visu jēdzienus mēs runājam. [01:29:37] Tātad, šeit ir piemērs AJAX ar jQuery. Un šeit, mēs darīt ar get JSON. Tātad mēs neesam mēģina nokļūt tēls kaķis šeit, vai pīle. Mēs cenšamies iegūt JSON failu. Un tad mēs gaidām līdz tas ir darīts, dot darīts. Tas nozīmē, ka es gaidu atbildi. Tas var aizņemt nedaudz, bet. Tad jūs redzat nedaudz iekraušanas. Ja jūs vēlaties darīt, ka jūsu mājas lapā. Tātad DOT darīts, un tad kāda notiek, kad tas ir izdarīts? Jūs apliecību anonīms funkcija, tāpat kā mēs redzējām iepriekš. Tāpēc, ka izdarīts ir notikums, tikko piemēram, noklikšķinot peli vai kāds, jQuery. Tātad jūs iet šo funkciju ar Datu, teksta, statuss, un jqXHR. Un būtībā, tas ir tikai daži mainīgie ka jūs varat izmantot vēlāk, lai būtu statuss HTTP pieprasījumu, dati, ka tas notiek sūtīt atpakaļ uz jums. Tātad jūs varat vēlāk interpretēt un darīt kaut ko nozīmīgu ar to. Un, ja tas neizdodas, tad, kad tas varētu neizdoties? Nu, ja HTTP pieprasījuma sniedz tu 500 vai kaut kas tamlīdzīgs. Tad, tas notiek, lai jums pastāstīt statuss, kāda veida neveiksmes, kas bija, un visādas lietas. Jums ir pārliecināties, rīkoties abos gadījumos pretējā gadījumā programma iet crazy. [01:30:42] Davin: Tātad yeah, tas ir tieši tas, ko tu redzēji savā pēdējā p-komplektu. Faktiskais AJAX zvana get JSON. Tas ir aicinājums. Un tad, dot darīts, ir, piemēram, tā pārbauda, ​​vai tas ir veiksmīgs. Ja tas ir veiksmīgs, jūs vēlaties kaut ko darīt ar datiem. Jums atpakaļ no tā JSON pieprasījums dati. Tas ir tas, ko jūs saņemsiet atpakaļ. Tātad, ja jūs atceraties no savas p-kopumu, daudzi no jums bija, piemēram, datu grupā i vai kāds, dot saiti vai nosaukumu. Neatkarīgi nāk atpakaļ No šī JSON, neatkarīgi lauki ir šajā JSON objektu, ka tas, ko jūs saņemat atpakaļ. Dati ir tas, ko jūs saņemat atpakaļ. Teksta statuss, tikai kaut kas ļauj jums zināt, kas noticis. Un tad, jqXHR, tas ir tikai jQuery XML HTTP pieprasījums. Tas ir tāpat kā objektu. Un tad neizdodas, tāpat kā Gabe teica. Gabe: Mūsu maz piemēru ABC123 tikai, lai pārbaudītu, vai tas ir datu bāzē vai ne, dati būtu kaut kas jums darītu, ja dati dot lietotāja vārds pastāv, kas ir tas, ko jūsu PHP ģenerēts tu, ja dati dot lietotāja vārds pastāv, tad Es esmu gatavojas, lai brīdinātu, lietotāja nosaukumu jau eksistē. Else, es esmu tikai gatavojas let lietotājs turpināt aizpildot veidlapu. OK, drošība, atdzesē. [01:31:50] Davin: Vēlaties man? [01:31:52] Gabe: Man patīk šo vienu. Tātad kaut kas izskatās pazīstami. Mēs esam gandrīz pabeigts. Tātad tas ir tikai piemērs jūs puiši redzēja klasē. Jūs izmantojāt argv1 šeit. Tas ir tāpat kā komandrindas argumentu. Un mēs esam mem kopēšanu, ka uz bufera izmēru 12. Kāda ir problēma šeit? Bufera pārpildes! Tāpēc, ka mums ir buferis izmēru 12. argv1 varētu būt izmērs diviem miljardiem. Mums nav darīt jebkuru robežu pārbaude. Tātad mēs varētu kopēt daudz atmiņas. Un mēs būsim īpaši slikti par to. Ko mēs varētu darīt, kas ir ļoti, ļoti nozīmē šajā gadījumā? Jā? Mērķauditorija: Daļa no diviem miljardiem lietām satur izpildāmu kodu, kas atgriež [Nedzirdama]. Gabe: Tieši tā. Tā ka ir sava veida lieta, ka cilvēki izmanto jailbreak iPhone, piemēram. Tātad šāda veida lieta. Tāpēc, ka jūs varat darīt, lai ierīce izpildīt jebkuru kodu, kas jums patīk. Noteikt, tāpēc noteikt ir viegli. Just pārbaudīt robežas. Jums pārbaudīt null tāpēc, ka mēs vienmēr pārbaudiet null kad mums ir darīšana ar stīgām. Un tad, jūs lietojat stīgu garums pirms. Un, ja virknes garums ir derīgs virkne garums, kas ir robežās 0 un 12, tad mēs esam labi. [01:33:03] Davin: Ja jums nav pārbaudīt null, nekustamo ātri, kas notiks? Tas būs SEG vaina. Kāpēc tas SEG vaina? Tāpēc, ka jūs aicināt strlen uz null. Gabe: Jā. Patiess vai nepatiess, izmantojot vienu parole ir laba ideja. [01:33:19] AUDITORIJA: False. [01:33:20] Gabe: False. Izmantot daudzas paroles, un lieli, gari. Padlock ikonas nodrošinātu drošību. [01:33:26] AUDITORIJA: False. [01:33:27] Gabe: False. Tas nenozīmē neko. Tas ir tikai ikona. SSL aizsargā pret cilvēks vidū uzbrukumu. AUDITORIJA: False. Gabe: False. Labi, tāpēc visiem tiem, ir nepatiesa. Nice. [Nedzirdama] Vēlaties, lai runātu par šo? Jūsu kārta. Davin: veidi uzbrukumiem, vīrietis vidū. Kas ir cilvēks vidū uzbrukumu? Mērķauditorija: [dzirdams]. Davin: Ja jūs sūtīt HTTP pieprasījums, viņi varētu darīt, vai ne? Bet, ja jūs sūtāt HTTPS, viņi iespējams, nevarēs to izdarīt. Tur ir daudz punktu gar jūsu savienojumu. Tev ir maršrutētāji. Jums ir DNS serverus. Ja kāds ir spējīgs fiziski redzēt, ko jūs sūtāt, tā kāds ir spējīgs faktiski saņemt starp jums, klients un serveris, un ir iespēja redzēt, ko jūs sūtāt, tas ir cilvēks vidū uzbrukumu. Tātad, lai redzētu, ko jūs mēģināt iegūt no serveri, vai ir spējīgs see-- pasliktinās, jūs varētu redzēt cepumi vai kaut kas tamlīdzīgs. [01:34:16] Tā, piemēram, ja jūs neesat izmantojot SSL, viņš varētu redzēt Jūsu sesija ID sīkdatnes. Un to sauc par sesiju nolaupīšana jo viņš redz jūsu ID sīkdatnes, un tad viņš ir spējīgs doties uz, ka mājas lapā un izlikties, ka jums. Jo tāpat kā PHP, atcerieties kad mēs pieteicies, ko mēs darām? Mēs, kas sesijas ID ir vienāds ar ID. Tāpēc, ka jūs identificē. Tas ir iemesls, kāpēc jūs varat redzēt savu portfeli un ne visiem citam portfeli. [01:34:38] Nu, ja es esmu spējīgs, lai iegūtu, ka cookie, tad es varu pieteikties uz šo lapu. Un tad, es varu tikai redzēt savu stuff un sākt pirkt un pārdot sīkumi. Tā ka ir sesija nolaupīšana. Bet jums nevajadzētu būt iespējai kuri paredzēti, lai jūs var izmantot cilvēks vidū uzbrukuma pat tad, ja viņi izmanto SSL. Bet jums nevajadzētu būt iespējai. Ja tie izmanto SSL, Jūs nevarat sesija nolaupīt. Kāpēc? Jo tas viss ir šifrēta, labi? ja tas ir šifrēts, un es esmu joprojām cilvēks vidū, es joprojām iegūtu datus. Tas ir jauki. Bet tas ir šifrēti. Tāpēc es nevaru īsti izmantot. Tā ka ir divi. [01:35:09] Nekustamo ātri, cross site pieprasījumu viltošana. Tas ir tikai tad, ja tur ir saite un šī saikne kaut ko dara ka jūs nedomāju, ka tas būtu jādara. Tā, piemēram, ja saite ir gatavojas iegādāties krājumus vai pārdot krājumus, un jūs nezināt, ka. Noklikšķinājāt uz saites, nosūtīja lūgumu, nopirka vai pārdot kaut ko, kas tu nedomāja darīt. Tas, ka. [01:35:25] Cross vietas skriptu, tāpēc šeit, jūs iet in via mainīgo q, tā vietā, lai iet sava veida vērtības, varbūt q ir kā vārds. Tā vietā, lai iet Q ir vienāds Davin vai kaut kas tamlīdzīgs, Ja jūs neizmantojat HTML speciālie simboli, ja jums neizvairītos to pārliecinātos, ka tas ir Labi, tad es varētu iet ar vietā, teiksim šeit es saku drukāt vai kaut kas tamlīdzīgs, tad es varētu iet šeit skripta zvanu. [01:35:51] Tātad, tā vietā, lai vienkārši kļūst mainīgo, Es tad izpildīt šo skriptu zvanu. Tik iekšā, ka skriptu zvanu, ko tas dara? Dokumentu dot atrašanās vieta, kas notiek, lai mainīt atrašanās vietu dokumenta. Tāpēc es esmu gatavojas novirzīt kaut kur citur. To sauc slikts puisis šis piemērs, ļoti labs. Nevarēju iedomāties vārdu. Un tad, kas ir vēl sliktāk ir tas, ka es esmu gatavojas lai pēc tam noteiktajā cookie, kas ir dažas mainīgais Man ir šajā mājas lapā. Es esmu gatavojas noteikt, ka vienāds uz dokumentu dot cookie. Tāpēc es esmu gatavojas nozagt jūsu cookie. Un es esmu gatavojas novirzīt kādu informāciju mājas lapā ka jums nevajadzētu piekļūt. Un tas viss notiek tāpēc, ka tu esi nav izvairījusies, ko jūs esat redzējuši. Yeah? [01:36:29] Mērķauditorija: Tik vienkārši to skaidri, tas ir vulnerable.com ka ir neaizsargāti pret šo. Tā, ka saikne var parādīties jebkurā konkrētā lapā. Kāds noklikšķina uz to, iet uz vulnerable.com. Jums ir sīkfailu vulnerable.com. Teiksim Facebook ir neaizsargāti, tāpēc facebook.com. Jums ir jūsu Facebook cookie. Ko tas dara, tu esi dodas uz facebook.com, tas ir uzreiz novirzot Jūs badguy.com, bet ieskaitot jūsu cookie informāciju. Tātad, tas ir ātrs novirzīšana, bet jūsu Facebook cookie ir iekļauts ar šo pārorientēt, un tas, kā viņi [nedzirdama]. Gabe: Jā, tur ir daži ļoti vidējais lietas ka cilvēki var darīt, ja tur ir šis. Piemēram, ja Facebook atļauts ikviens, lai mainītu savu lietotāja vārdu, un viņi nedarīja kādu vesels saprāts pārbaudes, lai jūs varētu ievietot JavaScript lieta, ka maina savu attēlu kāmja. Un tas ievieto to pašu JavaScript uz visiem, kas apskata jūsu lapu. Tātad visiem, kas skatās savu lapu ir vienu un to pašu lietotāja vārdu. Un tāpēc, ka tas ir vīruss, tas izplatās eksponenciāli. Davin: Mēs izlaist pēdējo viens, un tad mēs esam darījuši. Tātad tas ir tikai vēl viens piemērs. Tātad tas, ka viņi nav izvairījusies savu SQL tabulu. Tātad jūs varat piliens to. Tātad jūs vēlaties, lai izvairītos lietas. Tas bija iepriekšējais piemērs ar pārrobežu vietas skriptu. Sorry mums bija mazliet par vēlu. Rīt, sorry! Rīt, mums ir darba laiku. Tātad biroja stundas Cabbot 8:00-11:00. Par darba laiks ir stingri viktorīnas jautājumiem.