1 00:00:00,000 --> 00:00:05,616 2 00:00:05,616 --> 00:00:07,030 >> HANNAH Blumberg: Saluton ĉiuj. 3 00:00:07,030 --> 00:00:09,530 Ni tuj starti nur kelkaj minutoj frue 4 00:00:09,530 --> 00:00:11,738 ĉar ni havas tutan multon de materialo por atingi tra. 5 00:00:11,738 --> 00:00:12,790 Mi estas Hannah. 6 00:00:12,790 --> 00:00:13,865 Mi estas TF. 7 00:00:13,865 --> 00:00:16,239 Maria tuj estos aliĝanta nin en nur kelkaj minutoj. 8 00:00:16,239 --> 00:00:17,560 Ŝi instruas sekcio dekstra antaŭe. 9 00:00:17,560 --> 00:00:19,351 Mi instruos sekcio dekstra post, do ni tuj 10 00:00:19,351 --> 00:00:21,200 teni ĝin al la horo kaj duono. 11 00:00:21,200 --> 00:00:25,490 >> Do kiel vi vidos tie, ni havas tre kelkaj temoj ni bezonos akiri tra, 12 00:00:25,490 --> 00:00:27,200 tiel ni estos iranta iomete rapida. 13 00:00:27,200 --> 00:00:31,140 Sed se ĉe ajna punkto ni diras ion tro rapide aŭ vi ne komprenos, 14 00:00:31,140 --> 00:00:33,170 bonvolu interrompi kun demandoj. 15 00:00:33,170 --> 00:00:36,610 Ni volas povi fari ĉi revizii kunsido kiel utilaj al ĉiuj el vi 16 00:00:36,610 --> 00:00:37,973 kiel eble. 17 00:00:37,973 --> 00:00:38,920 Imponega. 18 00:00:38,920 --> 00:00:41,650 >> Do ni saltas bone kun iuj temoj kiujn ni efektive 19 00:00:41,650 --> 00:00:46,980 tre tre mallonge kovrita por la kvizo 0 en la kvizo 0 revizio kunsido. 20 00:00:46,980 --> 00:00:48,840 Do startanta kun ligitaj listoj. 21 00:00:48,840 --> 00:00:52,090 Do nur certigi vi havas iujn bazajn konojn pri ligitaj listoj 22 00:00:52,090 --> 00:00:55,110 kaj estas komforta faranta iuj de la bazaj operacioj. 23 00:00:55,110 --> 00:00:58,560 >> Do simple revizii, ligita listoj estas bonaj ol tabeloj 24 00:00:58,560 --> 00:01:01,020 ĉar ili povas kreski dinamike. 25 00:01:01,020 --> 00:01:03,300 Do ni havas tiun grandegan avantaĝon. 26 00:01:03,300 --> 00:01:06,031 Ni vidis ilin uzataj en hash tabloj kiam ni 27 00:01:06,031 --> 00:01:08,280 ne scias precize kiom da aferojn ni tuj volas 28 00:01:08,280 --> 00:01:10,900 enmeti en nia datumstrukturo. 29 00:01:10,900 --> 00:01:15,700 Bedaŭrinde, ni ne havas pecojn de la ligillisto ĉie memoro, 30 00:01:15,700 --> 00:01:20,820 do ni ne nepre estos kapabla fari konstanta tempo aliro 31 00:01:20,820 --> 00:01:22,502 al ajna elemento en la ligitaj listo. 32 00:01:22,502 --> 00:01:24,210 Por trovi aparta elemento, ni 33 00:01:24,210 --> 00:01:26,510 devas persisti ĉiuj vojo de la komenco. 34 00:01:26,510 --> 00:01:30,610 Do memoru, ke la plejparto de la bazaj operacioj estas omega de 1. 35 00:01:30,610 --> 00:01:32,130 Do enigaĵo estas ĝuste tuj prenu 1. 36 00:01:32,130 --> 00:01:37,520 Forviŝu tuj prenos n ekde ni devos iri trovi ĝin el la listo. 37 00:01:37,520 --> 00:01:39,260 Kaj serĉo povis preni, ĉe plej malbone, n. 38 00:01:39,260 --> 00:01:42,330 Ni ne povas fari ion kiel binaran serĉon sur ligillisto 39 00:01:42,330 --> 00:01:45,101 cxar ne eblas simple hazarde salti al la mezo. 40 00:01:45,101 --> 00:01:45,600 Malvarmeta. 41 00:01:45,600 --> 00:01:48,160 42 00:01:48,160 --> 00:01:48,960 Imponega. 43 00:01:48,960 --> 00:01:50,270 >> Iomete de stakoj. 44 00:01:50,270 --> 00:01:53,980 Tio, denove, elkreskigis kvizo 0, do vi devus esti super komforta kun ĝi. 45 00:01:53,980 --> 00:01:57,210 Sed por stakoj, ni petas vin memori pilo de pletoj. 46 00:01:57,210 --> 00:01:59,940 Kaj ĝi estas iranta esti unua en, daŭri eksteren. 47 00:01:59,940 --> 00:02:02,272 Do ni stakigas aĵojn en la pilo, kaj tiam 48 00:02:02,272 --> 00:02:04,980 se ni provas preni ion off-- kiun ni nomas krevanta for 49 00:02:04,980 --> 00:02:06,581 la stack-- ni elspezas la supro. 50 00:02:06,581 --> 00:02:09,289 Kaj se ni volas meti ion en la pilo, ni nomas ĝin puŝante. 51 00:02:09,289 --> 00:02:13,170 Do ĝi estas ĉiam iranta esti kreskante el la fundo kiel stako de pletoj. 52 00:02:13,170 --> 00:02:14,540 Imponega. 53 00:02:14,540 --> 00:02:17,607 >> Ni vidis stakoj implementado kun ambaŭ ligitaj listoj kaj tabeloj. 54 00:02:17,607 --> 00:02:19,440 Se vi efektivigado kun sensilo, vi volas 55 00:02:19,440 --> 00:02:22,350 por certiĝi sekvigi ambaŭ la grandecon kaj la kapablo. 56 00:02:22,350 --> 00:02:27,540 Do grandeco tuj estos la nunan nombro de aferoj en via pilo, 57 00:02:27,540 --> 00:02:32,900 dum kapablo estas la totala nombro de aĵoj vi povas stoki en via pilo. 58 00:02:32,900 --> 00:02:34,220 Malvarmeta. 59 00:02:34,220 --> 00:02:35,767 >> Tre simile, ni havas atendovicoj. 60 00:02:35,767 --> 00:02:38,850 En tiu kazo, anstataŭ pensi pri pilo de pletoj, Pensi de linio. 61 00:02:38,850 --> 00:02:40,697 Ĉi tiu tuj estos la unua en, unua el. 62 00:02:40,697 --> 00:02:42,780 Do se vi viciganta por io ĉe la vendejo, 63 00:02:42,780 --> 00:02:46,920 Ni esperas ke la persono unue en linio tuj helpindaj unue. 64 00:02:46,920 --> 00:02:49,350 >> Anstataŭ diri puŝo kaj pop kiel ni faru por pilo, 65 00:02:49,350 --> 00:02:52,000 ni nur diru enqueue kaj dequeue. 66 00:02:52,000 --> 00:02:54,970 Kaj denove, se vi estas implementando ĉi kun tabelo, 67 00:02:54,970 --> 00:02:56,720 ni bezonas konservi trako de ne nur la grandeco 68 00:02:56,720 --> 00:03:02,390 kaj kapablo, sed ankaŭ la kapon, kiu tuj estos la fronto de niaj atendovico. 69 00:03:02,390 --> 00:03:03,010 Malvarmeta. 70 00:03:03,010 --> 00:03:05,770 Demandojn pri ajna el tio? 71 00:03:05,770 --> 00:03:06,320 Imponega. 72 00:03:06,320 --> 00:03:07,640 Moviĝante dekstren kune. 73 00:03:07,640 --> 00:03:08,564 >> OK, hash tabloj. 74 00:03:08,564 --> 00:03:10,605 Jen kie komencas ricevas vere interesa. 75 00:03:10,605 --> 00:03:14,150 Do hash tablo estas unu efektivigo de asocieca tabelo. 76 00:03:14,150 --> 00:03:16,700 Do esence kio okazis Estas ni cxiuj havas tiun enigo, 77 00:03:16,700 --> 00:03:18,750 kaj ni donas lin al hash funkcio, kiu diras: 78 00:03:18,750 --> 00:03:21,840 Okej, tio estas kie en la hash tablo apartenas. 79 00:03:21,840 --> 00:03:24,860 >> Do la plej simpla hash funkcio ke ni vidis estas ĝuste diri: 80 00:03:24,860 --> 00:03:28,170 OK, supozi ni volas meti kordoj en nia hash tablo. 81 00:03:28,170 --> 00:03:30,870 Kaj vere simplan ideon eblus diri, OK, 82 00:03:30,870 --> 00:03:34,350 ni simple ordigi laŭ la unua litero de la vorto. 83 00:03:34,350 --> 00:03:37,570 Do vi povas vidi ĉi tie, ni preni bananon, ni metas ĝin tra hash funkcio, 84 00:03:37,570 --> 00:03:40,190 kaj ĝi diras, hey, ke iru ĉe indekso 1. 85 00:03:40,190 --> 00:03:45,120 >> Do ni povas esence pensas pri hash tablo kiel faskon da malsamaj siteloj. 86 00:03:45,120 --> 00:03:49,880 Kaj ĉiu el tiuj siteloj tuj teni la kapon de ligitaj listo. 87 00:03:49,880 --> 00:03:55,030 Kaj en tiu ligillisto estas kie ni povas efektive metis malsamaj pecoj de datumoj. 88 00:03:55,030 --> 00:03:57,820 >> Do plonĝado iomete pli en hash funkcio, jen 89 00:03:57,820 --> 00:03:59,870 la ekzemplon mi ĵus priskribis, kie ni nur diru, 90 00:03:59,870 --> 00:04:02,460 OK, preni la unuan literon de la vorto kaj ni 91 00:04:02,460 --> 00:04:03,990 tuj ordigi ĝin en la siteloj. 92 00:04:03,990 --> 00:04:08,490 Do supozeble, ni havas 26 siteloj, unu por ĉiu litero de la alfabeto. 93 00:04:08,490 --> 00:04:10,090 Kial estas ne tiu granda hash funkcio? 94 00:04:10,090 --> 00:04:13,461 Kion faras ĉi ne-ideala? 95 00:04:13,461 --> 00:04:13,960 Yeah. 96 00:04:13,960 --> 00:04:15,790 >> Spektantaro: Vi tuj havi kolizioj. 97 00:04:15,790 --> 00:04:16,390 >> HANNAH Blumberg: Jes, ĝuste. 98 00:04:16,390 --> 00:04:18,000 Vi tuj devas kolizioj. 99 00:04:18,000 --> 00:04:18,954 Do tio estas unu afero. 100 00:04:18,954 --> 00:04:21,620 Kaj ni parolos pri kiel ni povas ripari kolizioj en nur dua. 101 00:04:21,620 --> 00:04:23,980 Alia problemo kun ĉi aparta krada funkcio 102 00:04:23,980 --> 00:04:25,980 estas ke nia malsamajn siteloj tuj estos 103 00:04:25,980 --> 00:04:28,960 de bela draste malsamaj grandecoj. 104 00:04:28,960 --> 00:04:33,840 >> Ni scias ke ekzistas tuta amaso pli da vortoj kiuj komencas kun A ol ikso, 105 00:04:33,840 --> 00:04:38,980 do ni tuj devas tre neobjektiva siteloj en nia hash tablo. 106 00:04:38,980 --> 00:04:40,050 Malvarmeta. 107 00:04:40,050 --> 00:04:41,340 Do jes, ni reiros al la punkto de kolizioj. 108 00:04:41,340 --> 00:04:42,900 Kion ni faru se ekzistas kolizio? 109 00:04:42,900 --> 00:04:44,490 >> Ni havas paron malsamaj ebloj. 110 00:04:44,490 --> 00:04:47,600 Do unu, do eble ni provas meti bero en nian hash tablo. 111 00:04:47,600 --> 00:04:50,370 Kaj ni vidas, ho, ni volas meti ĝin en indekso 1, 112 00:04:50,370 --> 00:04:52,070 sed banano jam vivas tie. 113 00:04:52,070 --> 00:04:53,110 Kion ni faru? 114 00:04:53,110 --> 00:04:54,560 Ni havas du ĉefaj ebloj. 115 00:04:54,560 --> 00:04:58,050 >> Numero unu estas ni povas diri, OK, ne estas loko en indekso 1, 116 00:04:58,050 --> 00:05:03,210 sed ni simple observu rigardante tra ĝis ni trovos alian malfermita loko. 117 00:05:03,210 --> 00:05:08,490 Do ni diru, bone, ni metu ĝin en loko 3. 118 00:05:08,490 --> 00:05:09,240 Tio estas unu eblo. 119 00:05:09,240 --> 00:05:11,470 Tio nomiĝas lineara tuŝoprobado. 120 00:05:11,470 --> 00:05:15,500 >> Kaj dua eblo estas diri, OK, nu, ni nur faras ĉiu el tiuj siteloj 121 00:05:15,500 --> 00:05:17,470 esti kapoj de ligitaj listoj. 122 00:05:17,470 --> 00:05:21,910 Kaj estas bone se ekzistas pli ol unu afero en sitelo. 123 00:05:21,910 --> 00:05:23,820 Ni nur tuj append ĝin sur la fronto. 124 00:05:23,820 --> 00:05:26,032 Do jen vi povas vidi, okej, kiam ni insertita bero, ni 125 00:05:26,032 --> 00:05:28,240 nur prenis bananon, ia puŝis ĝin iomete 126 00:05:28,240 --> 00:05:29,842 kaj ĵetis bero en tie. 127 00:05:29,842 --> 00:05:31,050 Kaj tio estas ankaŭ tute bone. 128 00:05:31,050 --> 00:05:32,830 Tio nomiĝas apartan sinsekvon. 129 00:05:32,830 --> 00:05:38,100 Vi povas pensi pri tio kiel speco de kiel tabelo de kapoj al ligitaj listoj. 130 00:05:38,100 --> 00:05:41,950 Demandojn pri hash tabloj, kradaj funkcioj? 131 00:05:41,950 --> 00:05:44,290 Imponega. 132 00:05:44,290 --> 00:05:45,470 >> Arboj kaj provojn. 133 00:05:45,470 --> 00:05:47,287 Do arbo estas omnaspeca de la datumstrukturo 134 00:05:47,287 --> 00:05:49,453 en kiu ekzistas ia de hierarkio aŭ ian 135 00:05:49,453 --> 00:05:51,247 de rango al via malsamajn celojn. 136 00:05:51,247 --> 00:05:53,580 Kaj tiu fariĝos súper klara kiam ni vidas ekzemplon. 137 00:05:53,580 --> 00:05:56,960 Kaj ni vidis provojn, kune kun hash tabloj, en pset5-- 138 00:05:56,960 --> 00:06:00,700 kiu, denove, tute justa ludo por ĉi quiz-- kiel alia datumo 139 00:06:00,700 --> 00:06:03,110 strukturoj kiuj ni povas stoki malsamaj aferoj. 140 00:06:03,110 --> 00:06:06,782 En la kazo de vortaro, ni stokis faskon da vortoj. 141 00:06:06,782 --> 00:06:08,240 Do ni rigardu iuj arboj. 142 00:06:08,240 --> 00:06:10,190 Do tiu estas ekzemplo de arbo. 143 00:06:10,190 --> 00:06:13,105 Ĝi havas ian strukturon, ke hierarkia strukturo, 144 00:06:13,105 --> 00:06:15,920 kie vi povas vidi ke ĉi 1 nodo ĉe la supro 145 00:06:15,920 --> 00:06:20,750 havas ian rangon super 2 kaj 3, kio estas supre 4, 5, kaj 6 kaj 7, 146 00:06:20,750 --> 00:06:22,860 kio estas supre 8 kaj 9. 147 00:06:22,860 --> 00:06:25,210 Do jen ĉio ni signifi per arbo, tiel vi povas nur ia 148 00:06:25,210 --> 00:06:26,660 de bildigi tion en via kapo. 149 00:06:26,660 --> 00:06:29,050 >> Nun, ni havas paron de pli specialigitaj arboj. 150 00:06:29,050 --> 00:06:31,070 Do unu ekzemplo estas duuma arbo. 151 00:06:31,070 --> 00:06:33,290 Kaj duuma arbo estas, denove, nur tuj estos 152 00:06:33,290 --> 00:06:37,040 datumstrukturo kun ia hierarkio, sed ĉiu el la nodoj 153 00:06:37,040 --> 00:06:38,650 povas havi maksimume du infanojn. 154 00:06:38,650 --> 00:06:41,530 Tie estas kie la vorto duuma devenas. 155 00:06:41,530 --> 00:06:43,410 Do tiu estas ekzemplo de binara arbo. 156 00:06:43,410 --> 00:06:45,720 Do tio estas pli malgranda kategorio da arboj. 157 00:06:45,720 --> 00:06:48,960 >> Nun ni akiras eĉ pli specifaj kaj paroli pri duuma trees-- duuma serĉo 158 00:06:48,960 --> 00:06:51,310 arboj, prefere. 159 00:06:51,310 --> 00:06:56,430 Do jen la ideo ne nur faras ĉiu nodo havas maksimume du infanojn, 160 00:06:56,430 --> 00:07:00,300 sed ĉiuj infanoj al la maldekstra tuj estos pli malgranda 161 00:07:00,300 --> 00:07:03,450 kaj ĉiuj la infanoj al la dekstra tuj estos granda. 162 00:07:03,450 --> 00:07:05,890 Do rimarki en nur nia duuma arbo, ekzistas 163 00:07:05,890 --> 00:07:08,650 neniu rilato inter la nombroj. 164 00:07:08,650 --> 00:07:12,990 Sed en nia duuma serĉo arbo, ni vidas, bone, jen 44. 165 00:07:12,990 --> 00:07:17,080 Kaj ĉiu nombro al la maldekstra de 44 estas malgranda kaj ĉiu al la dekstra 166 00:07:17,080 --> 00:07:17,920 estas pli granda. 167 00:07:17,920 --> 00:07:20,130 >> Kaj kiu tenas en ĉiu nivelo de la arbo. 168 00:07:20,130 --> 00:07:24,810 Do jen, tiu estas pli malgranda ol 22 kaj jen granda ol 22. 169 00:07:24,810 --> 00:07:26,390 Kaj tio estas duuma serĉo arbo. 170 00:07:26,390 --> 00:07:28,900 Kial ni pensas ĝi nomiĝas duuma serĉo arbo? 171 00:07:28,900 --> 00:07:30,651 Kio algoritmo faras ĝi memorigas vin pri? 172 00:07:30,651 --> 00:07:31,650 Publiko: Duuma serĉo. 173 00:07:31,650 --> 00:07:32,480 HANNAH Blumberg: Duuma serĉo. 174 00:07:32,480 --> 00:07:35,150 Ĉar se vi serĉas aparta nombro en tiu arbo, 175 00:07:35,150 --> 00:07:38,800 je ĉiu punkto, vi povas simple frapi for duono de la arbo, kiu estas granda. 176 00:07:38,800 --> 00:07:43,800 Kaj por ke tuj doni al ni ion kiu aspektas tre kiel duuma serĉo. 177 00:07:43,800 --> 00:07:45,870 Demandojn? 178 00:07:45,870 --> 00:07:47,570 Bone, malvarmeta. 179 00:07:47,570 --> 00:07:48,560 >> Bone, provas. 180 00:07:48,560 --> 00:07:49,657 Ĉies preferataj. 181 00:07:49,657 --> 00:07:51,990 Do tiu estas la ekzemplo kiu ni vidis aron en klaso. 182 00:07:51,990 --> 00:07:54,710 Kaj denove, ĉi tiu estas nur alia modo kiun povas stoki datumojn. 183 00:07:54,710 --> 00:07:57,530 En la kazo de vortaro, denove, tiu estas nur tuj estos kordoj. 184 00:07:57,530 --> 00:08:00,870 Do ni vidu kion tiu reale aspektas kiel ĉe iomete pli malalta nivelo. 185 00:08:00,870 --> 00:08:03,690 >> Do ni rigardu ĉe unu nodo en trie. 186 00:08:03,690 --> 00:08:07,532 Kaj ni vidas, bone, ekzistas iranta esti Bulea kaj nodo, 187 00:08:07,532 --> 00:08:09,170 puntero al nodo. 188 00:08:09,170 --> 00:08:11,400 Kaj ni vidas ke la Buleaj nomiĝas is_word. 189 00:08:11,400 --> 00:08:13,490 Do esence, jen tuj respondas 190 00:08:13,490 --> 00:08:16,750 al tiuj malgranduloj trianguloj kiuj diras, se vi akiris ĉi tie, 191 00:08:16,750 --> 00:08:19,100 vi trovis kompletan vorto. 192 00:08:19,100 --> 00:08:23,670 >> Ni scias ke "Turing" super tie estas kompleta vorto, 193 00:08:23,670 --> 00:08:28,030 dum nur T-U-R ne unu vorton ĉar ni ne vidas ke iom delto. 194 00:08:28,030 --> 00:08:31,440 Kaj kiu iom delto, denove, respondas al tiu is_word, 195 00:08:31,440 --> 00:08:34,480 ĉi Buleaj is_word. 196 00:08:34,480 --> 00:08:36,320 Kaj tiam ni havas aron de infanoj. 197 00:08:36,320 --> 00:08:39,860 Do je ĉiu nivelo, vi havas apartan nodon, 198 00:08:39,860 --> 00:08:42,470 kaj ke nodo punktoj al tabelo de la tuta alfabeto. 199 00:08:42,470 --> 00:08:44,346 >> Do vi povas vidi, denove, en ĉi picture-- mi 200 00:08:44,346 --> 00:08:48,170 tuj subteni saltante tien kaj forth-- ke tiu tabelo supre 201 00:08:48,170 --> 00:08:51,640 havas aron da malsamaj nodoj elspezi ĝin. 202 00:08:51,640 --> 00:08:57,140 Ĝi havas 26 aŭ 27 se vi volas inkludi ekstran karakteron. 203 00:08:57,140 --> 00:09:01,320 Kaj tio donas al ni maniero por stoki niaj datumoj 204 00:09:01,320 --> 00:09:04,450 en maniero kiu povas rigardis ke vi povas rigardi supre super rapida. 205 00:09:04,450 --> 00:09:06,650 Kio estas la lookup tempo por trie? 206 00:09:06,650 --> 00:09:07,970 >> Spektantaro: [inaudible]. 207 00:09:07,970 --> 00:09:08,300 >> HANNAH Blumberg: Yeah. 208 00:09:08,300 --> 00:09:09,550 En teorio, ĝi estas konstanta tempo. 209 00:09:09,550 --> 00:09:13,230 Ĝi estas nur tuj estos la grandeco de la vorto, kiun vi volas serĉi. 210 00:09:13,230 --> 00:09:15,950 Eĉ se ni aldonas Zillion pli da vortoj al nia trie, 211 00:09:15,950 --> 00:09:18,160 ĝi ne iras por preni nin plu al determini 212 00:09:18,160 --> 00:09:19,690 se donita vorto estas en la trie. 213 00:09:19,690 --> 00:09:21,412 Do jen vere bela. 214 00:09:21,412 --> 00:09:23,697 >> Spektantaro: Ĉu vi ĵus pravalorizi tiu tabelo? 215 00:09:23,697 --> 00:09:24,780 Vi maltrafis punkto aŭ du. 216 00:09:24,780 --> 00:09:26,130 Ĉu vi povas simple paroli pri ke por dua? 217 00:09:26,130 --> 00:09:26,680 >> HANNAH Blumberg: Certe, absolute. 218 00:09:26,680 --> 00:09:27,590 Bona demando. 219 00:09:27,590 --> 00:09:31,140 La demando estis, ni havas tabelo tio 220 00:09:31,140 --> 00:09:34,180 tuj devas nodo stelo kiel kontraste al nura nodo, ĉu ne? 221 00:09:34,180 --> 00:09:35,180 Malvarmeta. 222 00:09:35,180 --> 00:09:37,990 Do jen kion ni dirante estas nia tabelo estas nur 223 00:09:37,990 --> 00:09:40,035 tuj estos punteros al aliaj tabeloj. 224 00:09:40,035 --> 00:09:42,910 Do ĝi estas essentially-- ĝi ia sentas ligillisto tiamaniere 225 00:09:42,910 --> 00:09:46,620 kie ĉiu de tiuj infanoj nur indiki al la sekva nodo. 226 00:09:46,620 --> 00:09:49,030 >> Kaj la vojon, kiun ni fakte determini, hej, nu bone, 227 00:09:49,030 --> 00:09:52,320 ni ripetis tra tuta vorto, estas tiu vorto en la vortaro, 228 00:09:52,320 --> 00:09:54,476 ni nur kontroli ĉi is_word. 229 00:09:54,476 --> 00:09:55,100 Granda demando. 230 00:09:55,100 --> 00:09:55,675 Yeah. 231 00:09:55,675 --> 00:09:56,216 Publiko: OK. 232 00:09:56,216 --> 00:09:57,470 Do kio estis la ekzekuto por la trie? 233 00:09:57,470 --> 00:09:58,386 >> HANNAH Blumberg: Sure. 234 00:09:58,386 --> 00:10:01,852 Do la ekzekuto por trie por lookup tuj estos konstanta tempo. 235 00:10:01,852 --> 00:10:04,310 Do ĝi estas nur tuj estos la nombro de literoj en la vorto. 236 00:10:04,310 --> 00:10:06,310 Tio ne dependas de la grandeco de la vortaro 237 00:10:06,310 --> 00:10:09,510 aŭ la grandeco de la datumstrukturo. 238 00:10:09,510 --> 00:10:12,170 Do jen iomete pli simpla ekzemplo. 239 00:10:12,170 --> 00:10:15,430 >> En tiu kazo, vi povas vidi ke la vorto vesperto estas en la vortaro 240 00:10:15,430 --> 00:10:18,900 kaj vi havas zoom, sed vi ne havas ion kiel zoo. 241 00:10:18,900 --> 00:10:20,050 Kiel ni fari zoon? 242 00:10:20,050 --> 00:10:24,276 Kiel ni aldonu al nia bestoĝardeno vortaro, al nia trie? 243 00:10:24,276 --> 00:10:24,776 Yeah. 244 00:10:24,776 --> 00:10:27,014 >> Publiko: Faru is_word vera por la [inaudible]. 245 00:10:27,014 --> 00:10:27,930 HANNAH Blumberg: Bonan. 246 00:10:27,930 --> 00:10:31,731 Do ni dirus Z-ho-ho, kaj tiam ni estus volas kontroli ekstere ke skatolo tiel. 247 00:10:31,731 --> 00:10:32,230 Granda. 248 00:10:32,230 --> 00:10:35,160 249 00:10:35,160 --> 00:10:37,930 Ni komparu tre mallonge provas kontre hash tabloj. 250 00:10:37,930 --> 00:10:39,770 Tries estas vere granda ĉar, kiel ni diris, 251 00:10:39,770 --> 00:10:41,610 ili provizas konstantan tempo lookup. 252 00:10:41,610 --> 00:10:44,285 Sed la grandega malavantaĝo Estas ili estas humongous. 253 00:10:44,285 --> 00:10:46,160 Vi povas akiri la senton, eĉ rigardante ŝin, 254 00:10:46,160 --> 00:10:48,454 ke ĝi tuj prenos grandegan kvanton da memoro. 255 00:10:48,454 --> 00:10:50,620 Do ili tuj estos multe granda ol hash tabloj, 256 00:10:50,620 --> 00:10:52,270 sed ili tuj donu ni multe pli rapide lookup fojojn. 257 00:10:52,270 --> 00:10:54,478 Do jen speco de via tradeoff, kion vi zorgas pri, 258 00:10:54,478 --> 00:10:57,350 ĉu ĝi estas rapido aŭ memoro. 259 00:10:57,350 --> 00:11:02,251 Demandojn pri ajna el tio, ĉiuj de la C datumstrukturoj. 260 00:11:02,251 --> 00:11:02,750 Bela. 261 00:11:02,750 --> 00:11:03,250 BONE. 262 00:11:03,250 --> 00:11:07,322 Ni tuj pluiri al iom bita de ttt disvolviĝo kun Maria. 263 00:11:07,322 --> 00:11:08,280 MARIA ZLATKOVA: Lovely. 264 00:11:08,280 --> 00:11:09,036 BONE. 265 00:11:09,036 --> 00:11:10,380 >> HANNAH Blumberg: Vi povas uzi mian tekkomputilon. 266 00:11:10,380 --> 00:11:11,255 >> MARIA ZLATKOVA: Nice. 267 00:11:11,255 --> 00:11:13,320 268 00:11:13,320 --> 00:11:14,912 Bone, mojose. 269 00:11:14,912 --> 00:11:17,120 Kiel ni movos nun al ttt disvolviĝo, ni parolis iom 270 00:11:17,120 --> 00:11:20,680 pri ŝanĝanta permesojn de dosieroj kaj dosierujoj 271 00:11:20,680 --> 00:11:24,190 por ke ili povu esti alirebla al aliaj uzantoj, al la mondo, 272 00:11:24,190 --> 00:11:28,640 kaj por ke ni povas vidi kiom resume ni povas transdoni ilin 273 00:11:28,640 --> 00:11:32,600 kiam ni evoluigi aĵoj kiel retejoj ke ni plejparte estis farante. 274 00:11:32,600 --> 00:11:36,400 >> Do ni vidis la chmod komando, kio estas ŝanĝo moduso, esence. 275 00:11:36,400 --> 00:11:39,300 Tio estas Linuksa komando kaj ŝanĝas aliro permesojn 276 00:11:39,300 --> 00:11:40,410 de dosiersistemo objektoj. 277 00:11:40,410 --> 00:11:43,370 Kaj dosiersistemon objekto estas nur dosierujo, dosiero, 278 00:11:43,370 --> 00:11:46,810 io ke vi povas ŝanĝi la permesojn de. 279 00:11:46,810 --> 00:11:53,750 >> Do por vidi la dosierajn permesojn, ni tajpu la komandon ls, listo, -l. 280 00:11:53,750 --> 00:11:56,500 Kaj kiam ni tajpas ke ni kutime vidi iujn permesojn 281 00:11:56,500 --> 00:11:59,660 aspektantaj ia kiel tiu antaŭ dosierujo nomon. 282 00:11:59,660 --> 00:12:01,260 Do d rilatas al dosierujo. 283 00:12:01,260 --> 00:12:05,930 Kaj tiam ni havas tri triadoj kiu esence 284 00:12:05,930 --> 00:12:11,675 rilati al la permesojn de ĉu uzanto, grupo, aŭ la mondo. 285 00:12:11,675 --> 00:12:16,490 >> La tipoj de permesoj kiujn ni povas havas tiujn tri homgrupoj 286 00:12:16,490 --> 00:12:20,830 estas ĉu r por legado, w por skribi, kaj x por ekzekuti. 287 00:12:20,830 --> 00:12:23,650 Kaj ni povas havi tiujn por la grupo kaj mondo ankaŭ. 288 00:12:23,650 --> 00:12:26,940 La malfacila afero estas ke foje kiam ni tajpi la chmod komando, 289 00:12:26,940 --> 00:12:32,960 ni devus tajpi iun numeron kiu konsistis el tri bitoj. 290 00:12:32,960 --> 00:12:36,990 Do ni povus fari kiel 777 kaj kiu esence 291 00:12:36,990 --> 00:12:40,450 rilatis al la valoro aldonita de ĉiu el tiuj triadoj 292 00:12:40,450 --> 00:12:45,060 ĉar r devus referi al 4, w volus referi al 2, kaj x devus referi al 1, 293 00:12:45,060 --> 00:12:50,020 do kiam aldonis supren, ĉiu el la nombroj malsupreniri al tuteca nombro 294 00:12:50,020 --> 00:12:52,750 al akumulan valoron inter 0 kaj 7. 295 00:12:52,750 --> 00:12:55,150 Do ni povus ankaŭ havi 0 cxar neniu permesojn ajn. 296 00:12:55,150 --> 00:12:58,200 Kaj kiu esence doni nin la permesojn por ĉu la uzanto, 297 00:12:58,200 --> 00:13:00,450 la grupo, aŭ la mondo. 298 00:13:00,450 --> 00:13:02,620 Demandojn sur tio ĝis nun? 299 00:13:02,620 --> 00:13:05,331 >> Spektantaro: Vi diris legis estis 4? 300 00:13:05,331 --> 00:13:06,164 MARIA ZLATKOVA: Jes. 301 00:13:06,164 --> 00:13:07,568 Spektantaro: [inaudible]. 302 00:13:07,568 --> 00:13:08,504 HANNAH Blumberg: Yup. 303 00:13:08,504 --> 00:13:11,790 Publiko: Kaj poste aldonante ĉiuj tiuj aliaj indikus vian numeron. 304 00:13:11,790 --> 00:13:12,665 MARIA ZLATKOVA: Yeah. 305 00:13:12,665 --> 00:13:14,970 Yeah. 306 00:13:14,970 --> 00:13:17,810 Tiuj estas grandaj demandoj. 307 00:13:17,810 --> 00:13:20,490 Lovely. 308 00:13:20,490 --> 00:13:25,340 Tuj, ni ensaltis en HTML kaj iom pli pri ttt disvolviĝo. 309 00:13:25,340 --> 00:13:27,990 Do HTML nur signifas Hipertextual Markup Language. 310 00:13:27,990 --> 00:13:30,460 Kaj kiu estas la markado lingvo kiu estas normo 311 00:13:30,460 --> 00:13:32,720 ke ĝi estas uzata por krei retpaĝojn. 312 00:13:32,720 --> 00:13:35,750 >> Ĝi nomiĝas markaĵojn ĉar ĝi ne vere kompilis. 313 00:13:35,750 --> 00:13:40,310 Ĝi ne diras kiel iu kodo devus lanĉiĝos aŭ io simila. 314 00:13:40,310 --> 00:13:44,800 Ĝi nur konturas kaj priskribas kiel ttt 315 00:13:44,800 --> 00:13:46,840 paĝo devus esti starigita kun ĉiu el ĝiaj eroj 316 00:13:46,840 --> 00:13:48,460 kaj kiel ili devus rigardi al la uzanto. 317 00:13:48,460 --> 00:13:53,090 318 00:13:53,090 --> 00:13:57,110 >> Iuj de la HTML etikedoj kiuj ni transiris estas la sekvaj. 319 00:13:57,110 --> 00:14:00,500 Ĉiuj niaj HTML dokumentoj komenciĝis kun la DOCTYPE html. 320 00:14:00,500 --> 00:14:02,550 Tiam ni havas ĉiam la html etikedo. 321 00:14:02,550 --> 00:14:03,930 Ni havas kapon kaj korpon. 322 00:14:03,930 --> 00:14:07,890 Kaj gravas ke HTML havas tiu speco de nestitaj strukturo 323 00:14:07,890 --> 00:14:09,280 ĉar ĝi estas tre klara. 324 00:14:09,280 --> 00:14:13,200 Kaj tiam ĝi fariĝas tre klara kiam ni bezonas malfermi kaj efektive proksime etikedoj. 325 00:14:13,200 --> 00:14:18,400 Kaj ni ĉiam bezonas fermi etikedoj kiuj ni jam malfermiĝis. 326 00:14:18,400 --> 00:14:23,170 >> Kaj tie ni havas iom de la tipoj de aferoj antaŭ ke ni volas havi. 327 00:14:23,170 --> 00:14:26,580 Do ni havas, ekzemple, la titolo de CS50. 328 00:14:26,580 --> 00:14:31,980 Kaj tiam ni efektive povas ligi stilo folio 329 00:14:31,980 --> 00:14:34,030 kiu difinas kiel ni stiligi nia retejo. 330 00:14:34,030 --> 00:14:35,650 Ke estas CSS. 331 00:14:35,650 --> 00:14:39,320 Ni tuj iru supren en la sekvanta paro de diapozitivoj tiel. 332 00:14:39,320 --> 00:14:42,580 >> Ene de la korpo, ni starigis kelkaj klasoj kaj IDs. 333 00:14:42,580 --> 00:14:45,860 Kaj kiel memorigilo, denove, IDs estas unikaj kaj klasoj 334 00:14:45,860 --> 00:14:47,390 povas esti atribuitaj al plurajn erojn. 335 00:14:47,390 --> 00:14:52,110 Kaj tio nur signifas ke ni povas uzi klasoj kaj IDs 336 00:14:52,110 --> 00:14:55,860 ene aliajn structures-- tiel, por Ekzemple, ene CSS dosierojn aŭ stilo 337 00:14:55,860 --> 00:15:00,940 sheets-- rilati al specifa elementoj kaj esence diri ke ni volas stiligi 338 00:15:00,940 --> 00:15:03,280 aŭ desegni iun elementon en iu aparta maniero. 339 00:15:03,280 --> 00:15:06,440 Kaj ni priparolas ilin per ilia IDs kaj klasoj. 340 00:15:06,440 --> 00:15:09,870 Kaj ni ankaŭ povas rilati al malsamajn aferojn per etikedoj tiel, 341 00:15:09,870 --> 00:15:13,830 sed IDs kaj klasoj simple doni nin iuj versatilidad kaj kion specife ni 342 00:15:13,830 --> 00:15:15,850 volas raporti al. 343 00:15:15,850 --> 00:15:19,620 >> Do nur ekzemplo. 344 00:15:19,620 --> 00:15:22,730 Ni povas, denove, ene CSS dosiero kie ni 345 00:15:22,730 --> 00:15:25,770 volas difini iun style-- tiel koloroj, tiparoj, 346 00:15:25,770 --> 00:15:30,340 kaj da that-- eblan difini la stilo por korpo. 347 00:15:30,340 --> 00:15:32,640 Do kiu difinus lin por la tuta korpo etikedo. 348 00:15:32,640 --> 00:15:36,160 Sed tiam ni povas ankaŭ difini stilo por #title. 349 00:15:36,160 --> 00:15:40,390 Kaj denove, la hashtag rilatas al nia ID kaj la skalara rilatas al nia klaso. 350 00:15:40,390 --> 00:15:44,760 >> Kaj tiam por la .info, ni povas ankaŭ agordi iuj atributoj. 351 00:15:44,760 --> 00:15:49,750 Kaj ankoraux, kiam ni iros reen, ni havis nian klaso nomita info kaj niaj ID titolo. 352 00:15:49,750 --> 00:15:53,422 Kaj ni povas vidi ke ni priparolas al ili per #title kaj .info. 353 00:15:53,422 --> 00:15:55,380 Spektantaro: Ĉu vi diras hashtag [? adopti mi? ?] 354 00:15:55,380 --> 00:15:55,725 MARIA ZLATKOVA: Pardonu? 355 00:15:55,725 --> 00:15:58,120 Spektantaro: Ĉu vi diras hashtag [? adopti mi? ?] 356 00:15:58,120 --> 00:16:01,400 MARIA ZLATKOVA: hashtag signifas ID, tiel #title 357 00:16:01,400 --> 00:16:07,890 referencas al kiom elementoj havas ĉi ID nomita titolo. 358 00:16:07,890 --> 00:16:10,735 Kaj tiam la skalara rilatas al klaso. 359 00:16:10,735 --> 00:16:14,590 Do .info referencas al tiu elemento ĉar ĝi havas la klaso info. 360 00:16:14,590 --> 00:16:15,090 Jes. 361 00:16:15,090 --> 00:16:17,905 >> Publiko: Kial vi distingi ilin en la HTML? 362 00:16:17,905 --> 00:16:20,985 Kial vi diras kelkaj aferoj estas IDs kaj certaj aferoj estas klaso? 363 00:16:20,985 --> 00:16:22,610 MARIA ZLATKOVA: Tio estas nur ĝis you-- 364 00:16:22,610 --> 00:16:24,151 HANNAH Blumberg: Ripetu la demandon. 365 00:16:24,151 --> 00:16:25,370 MARIA ZLATKOVA: Ho, pardonon. 366 00:16:25,370 --> 00:16:29,480 Kial ni distingas certaj elementoj kiel IDs kaj aliaj elementoj kiel klasoj? 367 00:16:29,480 --> 00:16:34,760 Tio estas nur ĉar ĝi estas vere ofte dezajnon elekto. 368 00:16:34,760 --> 00:16:38,520 Ĝi donas vin multa versatilidad en estanta 369 00:16:38,520 --> 00:16:43,250 kapabla diri mi volas ĉi specifa ero havi ĉi ID ĉar ili volas 370 00:16:43,250 --> 00:16:45,300 fari multon kun ĝi, kaj mi nur 371 00:16:45,300 --> 00:16:50,010 volas difini stilon, certaj stilo aŭ koloro ajn por tiu ero. 372 00:16:50,010 --> 00:16:52,630 Kaj la maniero por fari tion estas nur donanta ĝin ID. 373 00:16:52,630 --> 00:16:55,060 >> Kaj poste se mi volas havi paro de malsamaj eroj 374 00:16:55,060 --> 00:16:58,940 havante ke, anstataŭ irante kaj fiksanta their-- 375 00:16:58,940 --> 00:17:03,840 anstataŭ fari ĝin etikedo ĉar la etikedo volis 376 00:17:03,840 --> 00:17:07,369 starigis la ĉelo por la tuta etikedo por ĉiu tempo ke etikedo estas uzata, 377 00:17:07,369 --> 00:17:09,740 Vi povas agordi klaso al plurajn erojn. 378 00:17:09,740 --> 00:17:15,109 Kaj tiam simple aliri tiun klason kaj diri Mi volas stiligi tiu klaso tiel. 379 00:17:15,109 --> 00:17:17,579 >> Kaj denove, la klaso povas esti multoblaj malsamaj eroj 380 00:17:17,579 --> 00:17:21,150 kaj la ID devas esti unika. 381 00:17:21,150 --> 00:17:21,849 Grandaj demandoj. 382 00:17:21,849 --> 00:17:25,339 Aliajn demandojn? 383 00:17:25,339 --> 00:17:26,220 OK, awesome. 384 00:17:26,220 --> 00:17:30,680 385 00:17:30,680 --> 00:17:35,330 Denove, tio estas kiom tiuj selectores estas referencita en CSS, kun etiketo, 386 00:17:35,330 --> 00:17:40,031 kun streketo aŭ sen io por asignanta la stilo de iuj etikedo, 387 00:17:40,031 --> 00:17:40,530 kiel korpo. 388 00:17:40,530 --> 00:17:43,500 389 00:17:43,500 --> 00:17:47,860 Kaj ĉi tie ni havas la ĝeneralajn sintakso de kiel ĉi estas farita. 390 00:17:47,860 --> 00:17:52,830 391 00:17:52,830 --> 00:17:55,680 >> Ripeti iun bonan praktikojn por HTML kaj CSS, 392 00:17:55,680 --> 00:17:59,170 ni bezonas, denove, proksime ĉiuj HTML etikedoj ke ni malfermas. 393 00:17:59,170 --> 00:18:03,950 Kaj kion ni rekomendas vin fari por via fina projektoj, 394 00:18:03,950 --> 00:18:10,560 tiel kiel por CS50 Financoj, estas fari certas ke ĉiuj viaj HTML validigas. 395 00:18:10,560 --> 00:18:12,920 Kaj tio estas farita kun la W3 Kontrolilo. 396 00:18:12,920 --> 00:18:16,940 >> Kaj tiam kion ni faris kaj kion ni rekomendas fari 397 00:18:16,940 --> 00:18:19,790 disigas stilo, do CSS de markado HTML. 398 00:18:19,790 --> 00:18:24,210 Do io ajn kiu rilatas al kiel via paĝo tuj vide aspektas 399 00:18:24,210 --> 00:18:27,330 kaj kiel ĝi estas iranta esti modifitaj iru en CSS dokumento. 400 00:18:27,330 --> 00:18:33,880 Kaj tiam via markado dirante kiel aferoj estas en rilato al ĉiu alia estas HTML, 401 00:18:33,880 --> 00:18:37,550 kaj kiu devus iri interne de via HTML dokumentojn. 402 00:18:37,550 --> 00:18:38,590 Demandojn? 403 00:18:38,590 --> 00:18:39,226 MHM. 404 00:18:39,226 --> 00:18:42,628 >> Publiko: Kio precize tuj sur la paĝo kontrolada 405 00:18:42,628 --> 00:18:47,945 kiam ni validigi la HTML kiu [inaudible] kreis? 406 00:18:47,945 --> 00:18:49,850 >> MARIA ZLATKOVA: Do what-- pensas vi. 407 00:18:49,850 --> 00:18:53,020 Do kio precize estas iranta sur kun paĝo kontrolada 408 00:18:53,020 --> 00:18:55,570 kaj kial ni bezonas fari tion? 409 00:18:55,570 --> 00:18:59,180 Esence, ni bezonas fari tion ĉar multajn fojojn, via retumilo, 410 00:18:59,180 --> 00:19:01,390 se vi ne fermos etikedo aŭ io simila, 411 00:19:01,390 --> 00:19:05,680 via retumilo estas ankoraŭ iranta Redonu la paĝo kaj eble ankoraŭ funkcias, 412 00:19:05,680 --> 00:19:10,840 sed ĝi estas bona praktiko por certigi ke vi, denove, fermis ĉiujn viajn etikedoj, 413 00:19:10,840 --> 00:19:13,190 ke ĉiuj viaj elementoj estas la vojo ke ili devus esti, 414 00:19:13,190 --> 00:19:18,470 kaj esence ke ĝi estas de la konvenciojn kiuj antaŭdifinita. 415 00:19:18,470 --> 00:19:21,970 >> Estas, denove, nur afero ke vi devus 416 00:19:21,970 --> 00:19:24,040 lernante esti farante, kontraste al havado 417 00:19:24,040 --> 00:19:25,696 sloppier kodo kaj da tio. 418 00:19:25,696 --> 00:19:26,688 Yeah. 419 00:19:26,688 --> 00:19:27,680 Ho, pardonon. 420 00:19:27,680 --> 00:19:29,221 Mi kredis ke vi levante via mano. 421 00:19:29,221 --> 00:19:31,240 Spektantaro: Ne, mi estis ĵus [inaudible]. 422 00:19:31,240 --> 00:19:33,800 >> MARIA ZLATKOVA: OK. 423 00:19:33,800 --> 00:19:34,640 >> Publiko: Dankon. 424 00:19:34,640 --> 00:19:36,181 >> MARIA ZLATKOVA: Kompreneble, dankon. 425 00:19:36,181 --> 00:19:41,680 Do denove, okazas en kiom informo estas kopiita 426 00:19:41,680 --> 00:19:44,630 kaj komunikadaj modeloj translokigi informo. 427 00:19:44,630 --> 00:19:45,730 TCP / IP. 428 00:19:45,730 --> 00:19:48,600 TCP nur signifas Transmission Kontrolo Protocol kaj IP 429 00:19:48,600 --> 00:19:51,260 rilatas al Interreto Protocol. 430 00:19:51,260 --> 00:19:54,275 Kaj tio nur rilatas al la vojo datumoj estas transdonita. 431 00:19:54,275 --> 00:19:59,470 432 00:19:59,470 --> 00:20:02,710 >> Se ni havas iujn datumojn kiuj bezonoj liverita al you-- tiel 433 00:20:02,710 --> 00:20:06,770 vi fari peton por certa servilo. 434 00:20:06,770 --> 00:20:09,800 Ekzemple, kiam ni provu aliri cs50.net, 435 00:20:09,800 --> 00:20:12,420 ni petegas la CS50 servilo kaj ni 436 00:20:12,420 --> 00:20:14,720 vidu ke ni volas atingi tiu speco de informoj. 437 00:20:14,720 --> 00:20:19,294 Kaj tiam estas bazitaj sur tiu protokolo por kiel tiu informo estas transdonita, 438 00:20:19,294 --> 00:20:21,460 la servilo donas informojn revenis al ni, la kliento. 439 00:20:21,460 --> 00:20:25,590 Kaj tiam ni povas vidi la informo pri la paĝo 440 00:20:25,590 --> 00:20:26,390 kaj tiam uzi ĝin. 441 00:20:26,390 --> 00:20:29,300 442 00:20:29,300 --> 00:20:33,050 >> Tial Hipertextual Transfer Protocol Estas nur alia protokolo aŭ aro 443 00:20:33,050 --> 00:20:37,470 de konvencioj kiuj difinas kiel la foliumilon kaj la retservilo 444 00:20:37,470 --> 00:20:38,890 devus komuniki. 445 00:20:38,890 --> 00:20:43,730 Kaj metanta ĉi ĉiuj kune, HTTP, denove, 446 00:20:43,730 --> 00:20:50,960 nur difinas kiel tiu hiperteksta difinita per la HTML kiu ni estis laborante ŝin, 447 00:20:50,960 --> 00:20:59,500 kiel ĝi devus esti transdonita al vi kaj ke datumoj kiu estas transdonita al vi 448 00:20:59,500 --> 00:21:00,540 alvenas al vi. 449 00:21:00,540 --> 00:21:05,990 >> Kaj tial, se vi infanoj memoras de klaso, ni havis multajn petojn 450 00:21:05,990 --> 00:21:08,970 kaj ni havis multajn sintakso por tiuj petoj ke ni estas 451 00:21:08,970 --> 00:21:10,250 tuj transiru nun. 452 00:21:10,250 --> 00:21:13,270 Do denove, kiam ni sendu peto al servanto, 453 00:21:13,270 --> 00:21:15,920 ni devas difini kelkajn aferojn. 454 00:21:15,920 --> 00:21:18,520 Do ni devas trovi la tipo de peto ke ni opcio. 455 00:21:18,520 --> 00:21:22,180 Kaj cetere, ni havas, ekzemple, GET estas unu tipo de metodo 456 00:21:22,180 --> 00:21:25,290 ke ni havas en nia peto. 457 00:21:25,290 --> 00:21:31,710 >> Kaj tiam HTTP / 1.1 estas nur la protokolo kiun ni uzas nuntempe. 458 00:21:31,710 --> 00:21:34,224 459 00:21:34,224 --> 00:21:36,890 Plej ofte, tio okazas al la protokolo kiun ni uzas. 460 00:21:36,890 --> 00:21:40,290 Do se vi havas demandon kiel tiu en via kvizo. 461 00:21:40,290 --> 00:21:43,120 Jen la konvencioj ke ni havas ĝis nun. 462 00:21:43,120 --> 00:21:46,580 >> Backslash rilatas al kia de aferoj ni petas. 463 00:21:46,580 --> 00:21:52,810 Tiam, nia gastiganto estas, ekzemple, en tiu kazo, ni provas iri al google.com. 464 00:21:52,810 --> 00:21:57,070 Do tiu estas la valoro por gastiganto. 465 00:21:57,070 --> 00:21:59,330 Tiu estas tipo de peto kiu povus esti sendita. 466 00:21:59,330 --> 00:22:02,890 >> Kaj tiam tipo de respondo kiu povis estos senditaj, denove, surbaze de tiu protokolo, 467 00:22:02,890 --> 00:22:05,190 Estas denove, HTTP / 1.1. 468 00:22:05,190 --> 00:22:07,150 Do jen la HTTP versio denove. 469 00:22:07,150 --> 00:22:09,730 200 OK estas nur la statuso kodon. 470 00:22:09,730 --> 00:22:12,860 Kaj ke OK estas nur frazon surbaze de tiu statuso kodon. 471 00:22:12,860 --> 00:22:15,520 >> Kaj tiam la Content-Type rilatas al la tipo 472 00:22:15,520 --> 00:22:20,295 ke vi rericevos ke estas por ke retpaĝo ke vi akceptu 473 00:22:20,295 --> 00:22:22,570 kaj ke via retumilo povas repagi poste. 474 00:22:22,570 --> 00:22:24,401 Kaj tiu estas teksto / html. 475 00:22:24,401 --> 00:22:26,660 >> Publiko: Kion 1.1 signifas? 476 00:22:26,660 --> 00:22:29,910 >> MARIA ZLATKOVA: Tio estas nur la versio of-- ho, kion signifas 1,1 signifas? 477 00:22:29,910 --> 00:22:37,075 Tio estas ĝuste la versio, la HTTP versio de protokolo kiu ni uzas. 478 00:22:37,075 --> 00:22:37,700 Granda demando. 479 00:22:37,700 --> 00:22:38,366 Aliaj demandoj? 480 00:22:38,366 --> 00:22:41,222 481 00:22:41,222 --> 00:22:45,080 >> Spektantaro: Ĉu vi povas resumi Content-Type reala rapida? 482 00:22:45,080 --> 00:22:48,150 >> MARIA ZLATKOVA: Por ke Estas kion la servilo. 483 00:22:48,150 --> 00:22:51,020 la tipo de information-- kio estas enhavo tipo estis la demandoj. 484 00:22:51,020 --> 00:22:53,400 Do kiu estis la tipo de informo ke vi revenas 485 00:22:53,400 --> 00:22:58,200 de la servilo, la tipo de datumoj kiuj la retumilo povas tiam 486 00:22:58,200 --> 00:23:00,604 redonu ke vi uzas. 487 00:23:00,604 --> 00:23:03,020 Spektantaro: Ĉu pri tio ĉi protokolo estas diranta vin fari? 488 00:23:03,020 --> 00:23:03,390 MARIA ZLATKOVA: Pardonu? 489 00:23:03,390 --> 00:23:05,380 Publiko: Estas ke kion la protokolo diri? 490 00:23:05,380 --> 00:23:05,915 MARIA ZLATKOVA: La protocol-- 491 00:23:05,915 --> 00:23:07,940 Publiko: --what la Content-Type estas aŭ what-- 492 00:23:07,940 --> 00:23:12,040 MARIA ZLATKOVA: La protokolo estas bazita on-- kio estas la protokolo diranta vin? 493 00:23:12,040 --> 00:23:16,070 Tio estas nur la vojo ke tiu informo 494 00:23:16,070 --> 00:23:18,610 estis liverita al vi bazita sur kia protokolo 495 00:23:18,610 --> 00:23:21,830 estis tiu informo atingis transdonita al vi. 496 00:23:21,830 --> 00:23:23,500 Ĉu tio sencon ia? 497 00:23:23,500 --> 00:23:28,320 498 00:23:28,320 --> 00:23:30,070 HANNAH Blumberg: Vi povas pensi protokolo 499 00:23:30,070 --> 00:23:33,300 kiel a-- Mi pensas profesoro Malan priskribis 500 00:23:33,300 --> 00:23:36,910 en klaso kiel ia kiel a-- estas kvazaŭ la ekvivalento de homaj handshaking. 501 00:23:36,910 --> 00:23:44,930 Diru, kiel, hej, mi peton kaj mi scipovas manipuli HTTP- de versio 1.1. 502 00:23:44,930 --> 00:23:48,770 Kaj tiam la servilo diras, ho, okej, I-- kaj ambaŭ ekzistas. 503 00:23:48,770 --> 00:23:51,337 Mi ankaŭ scias kiel trakti HTTP / 1.1. 504 00:23:51,337 --> 00:23:53,170 Kaj mi tuj donu You Back iun enhavon. 505 00:23:53,170 --> 00:23:56,230 En tiu kazo, ĝi tuj esti de tipo text / html. 506 00:23:56,230 --> 00:23:58,480 Do ĝi estas speco de nur maniero ilian communicating-- 507 00:23:58,480 --> 00:24:00,480 >> MARIA ZLATKOVA: Estas nur konfirmante ke vi estas 508 00:24:00,480 --> 00:24:03,290 ambaŭ sekvante la sama protokolo kaj ke ambaŭ 509 00:24:03,290 --> 00:24:06,620 la kliento kaj la server-- tiel via legilo kaj la server-- 510 00:24:06,620 --> 00:24:09,280 ia scias kion vi estas parolas kaj havas 511 00:24:09,280 --> 00:24:12,557 la konvencio por pasanta en datumoj. 512 00:24:12,557 --> 00:24:17,022 >> Publiko: Do ​​la Content-Type part-- la Content-Type teksto / html-- tio 513 00:24:17,022 --> 00:24:18,521 aparta parto de la sama mesaĝo? 514 00:24:18,521 --> 00:24:20,509 Aŭ ĉu parto de ni diru, 200? 515 00:24:20,509 --> 00:24:22,010 Ĉu 200 informi ilin ke aŭ is-- 516 00:24:22,010 --> 00:24:23,770 >> MARIA ZLATKOVA: 200 diras ĉion iris OK. 517 00:24:23,770 --> 00:24:27,900 Kaj tiam enhavo tipo estas speco de aparta parto de la sama mesaĝo, 518 00:24:27,900 --> 00:24:34,274 kaj dirante tion, kion mi Revenita havas tiun tipon de teksto / html. 519 00:24:34,274 --> 00:24:35,690 Ĝi simple donante pli informo. 520 00:24:35,690 --> 00:24:38,700 521 00:24:38,700 --> 00:24:39,995 Havas ion por aldoni? 522 00:24:39,995 --> 00:24:40,495 BONE. 523 00:24:40,495 --> 00:24:43,590 524 00:24:43,590 --> 00:24:46,530 >> Ajna alia demandojn sur tio? 525 00:24:46,530 --> 00:24:48,370 Imponega. 526 00:24:48,370 --> 00:24:54,070 Do iuj aliaj HTTP statusoj ke ni povus akiri krom 200 OK, 527 00:24:54,070 --> 00:24:59,500 kiuj ni vidis eble eble amaso estas 403 kaj 404. 528 00:24:59,500 --> 00:25:05,190 Do 404, se vi volis aliro ion kiu ne ekzistas. 529 00:25:05,190 --> 00:25:10,460 Do ekzemple, en via CS50 Financoj psets, 530 00:25:10,460 --> 00:25:15,640 se vi estis faranta quote.html kaj vi ne havas tiun dosieron, 531 00:25:15,640 --> 00:25:19,740 sed anstataŭe vi havus quote.php, ke rezultigus 404 Not Found 532 00:25:19,740 --> 00:25:21,600 ĉar la dosiero povus ne ekzisti. 533 00:25:21,600 --> 00:25:25,690 >> Por 403 malpermesita, ke referencas al la permesojn. 534 00:25:25,690 --> 00:25:31,150 Do se iu dosiero ne estas legebla per la mondo, vi ekhavos 403 revenis. 535 00:25:31,150 --> 00:25:34,510 536 00:25:34,510 --> 00:25:37,810 Aliajn kiujn vi eble get-- 301, Movitaj konstante; 537 00:25:37,810 --> 00:25:41,300 302, Trovita; 304, Modifita; 400 Bad Request; 538 00:25:41,300 --> 00:25:47,330 kaj tiam Interna Servilo Eraro dum 500 kaj 503, Servo USD. 539 00:25:47,330 --> 00:25:48,140 Jes. 540 00:25:48,140 --> 00:25:51,490 >> Publiko: ni atendas enmemorigi ĉiujn tiujn statusojn? 541 00:25:51,490 --> 00:25:53,739 MARIA ZLATKOVA: Mi havus ilin sur vian cheat folio. 542 00:25:53,739 --> 00:25:55,146 [Ridado] 543 00:25:55,146 --> 00:25:59,954 Spektantaro: Ĉu ni atendas scias kion deĉenigas ĉiun? 544 00:25:59,954 --> 00:26:00,995 MARIA ZLATKOVA: Cxu ili? 545 00:26:00,995 --> 00:26:03,870 HANNAH Blumberg: Por tiuj kiuj ni havas kuri into-- do la demando was-- 546 00:26:03,870 --> 00:26:08,010 MARIA ZLATKOVA: Ĉu ili atendis scias kio ĉiu de tiuj statuso 547 00:26:08,010 --> 00:26:09,330 kodoj povus esti ekkaŭzita de? 548 00:26:09,330 --> 00:26:13,240 Do por tiuj kiuj ni uzis kuris al mi dirus, jes. 549 00:26:13,240 --> 00:26:16,610 Do ni sendube vidis 200 OK kaj prelegis en psets. 550 00:26:16,610 --> 00:26:19,071 Ni vidis 403, 404. 551 00:26:19,071 --> 00:26:20,550 Por aliaj aĵoj? 552 00:26:20,550 --> 00:26:22,690 >> HANNAH Blumberg: mi volus diru 500 ŝajnas justa ludo. 553 00:26:22,690 --> 00:26:23,330 >> MARIA ZLATKOVA: 500, yeah. 554 00:26:23,330 --> 00:26:24,246 >> HANNAH Blumberg: Yeah. 555 00:26:24,246 --> 00:26:27,006 Nur havas ĝeneralan senton de kio kaŭzas ilin. 556 00:26:27,006 --> 00:26:28,880 Kaj ankaŭ nur tiuj nomojn, vi povas ia 557 00:26:28,880 --> 00:26:32,890 kiel fari edukita konjekton kiel al kio fakte kaŭzis ilin. 558 00:26:32,890 --> 00:26:36,919 Ekzemple movi konstante, verŝajne la dosiero estis movita permanente. 559 00:26:36,919 --> 00:26:39,328 >> Publiko: Sed en antaŭa ekzameno, estis tiel 560 00:26:39,328 --> 00:26:41,050 kial vi supozas ke ni respondu ke? 561 00:26:41,050 --> 00:26:42,883 >> HANNAH Blumberg: Ke valoris nulo punktoj. 562 00:26:42,883 --> 00:26:45,870 La demando sur 418 sur la tekruĉo estas teknike HTTP status, 563 00:26:45,870 --> 00:26:47,090 sed valoris nulo punktoj. 564 00:26:47,090 --> 00:26:48,320 Evidente, vi ne estas atendita scii ilin. 565 00:26:48,320 --> 00:26:49,670 >> Spektantaro: Ĉu reala? 566 00:26:49,670 --> 00:26:51,970 >> HANNAH Blumberg: Estas reala unu, sed ĝi signifas nenion. 567 00:26:51,970 --> 00:26:52,700 Estas nur ŝerco. 568 00:26:52,700 --> 00:26:55,480 569 00:26:55,480 --> 00:26:57,010 Interreto homoj estas amuza. 570 00:26:57,010 --> 00:26:59,680 >> MARIA ZLATKOVA: Granda demandoj, knaboj. 571 00:26:59,680 --> 00:27:01,452 Aliajn demandojn? 572 00:27:01,452 --> 00:27:04,891 >> Publiko: Kio estas Interna Servilo Eraro? 573 00:27:04,891 --> 00:27:06,640 MARIA ZLATKOVA: Interna servilo eraro nur 574 00:27:06,640 --> 00:27:10,050 signifas ke vi estis nekapabla komuniki 575 00:27:10,050 --> 00:27:13,400 kun la servilo ial. 576 00:27:13,400 --> 00:27:15,400 Do tio ne nepre iu kiu devas vidi 577 00:27:15,400 --> 00:27:19,170 kun la kliento aŭ io simila. 578 00:27:19,170 --> 00:27:22,170 Mi ne scias pri iu specifa ekzemplo ke ni trapasis klarigi, 579 00:27:22,170 --> 00:27:23,000 sed jes. 580 00:27:23,000 --> 00:27:23,250 >> HANNAH Blumberg: Sure. 581 00:27:23,250 --> 00:27:25,625 Do ekzemple, kiel ni diris ke vi laboras pri mashup 582 00:27:25,625 --> 00:27:30,440 kaj Google servilo malsupreniris por iuj kialo, potenco outage, ni diru. 583 00:27:30,440 --> 00:27:33,400 Tio estus interna servilo eraro aŭ ian of-- ŝatas vin 584 00:27:33,400 --> 00:27:34,630 ne ricevas respondon reen. 585 00:27:34,630 --> 00:27:35,260 >> MARIA ZLATKOVA: Yeah. 586 00:27:35,260 --> 00:27:37,050 Estas nur kiam vi estas nekapabla komuniki 587 00:27:37,050 --> 00:27:40,299 kun la servilo ial ĉar ĝin subiro aŭ alian kialon. 588 00:27:40,299 --> 00:27:44,430 589 00:27:44,430 --> 00:27:47,690 Do salto en PHP. 590 00:27:47,690 --> 00:27:49,930 PHP, kontraste HTML, estas programlingvo. 591 00:27:49,930 --> 00:27:54,820 Kaj ni komencis uzi ĝin ĉar ĝi estas tre utila por ttt disvolviĝo. 592 00:27:54,820 --> 00:27:56,940 >> Ni unue uzis ĝin en CS50 Financoj. 593 00:27:56,940 --> 00:28:02,240 Kaj esence helpas nin konduku kune ĉi markado, la dezajno, 594 00:28:02,240 --> 00:28:07,460 kaj kiel ni efektive utiligas informon por montri aferojn en retpaĝo. 595 00:28:07,460 --> 00:28:11,870 Do PHP mem signifas PHP Hipertextual antaŭtraktilo, 596 00:28:11,870 --> 00:28:15,360 do ĝi estas rekursia backnorym per sin. 597 00:28:15,360 --> 00:28:22,330 Kaj malfermante etikedoj por PHP ni maldekstren kaj ĝuste sagoj kun la demandosignojn 598 00:28:22,330 --> 00:28:23,060 kaj php. 599 00:28:23,060 --> 00:28:25,890 >> Do ni jam vidis aron da gxi. 600 00:28:25,890 --> 00:28:29,150 Nun, ni nur tuj iros super kelkaj el la bazaj aferoj pri ĝi. 601 00:28:29,150 --> 00:28:32,280 Do kun PHP, variablo nomoj starti kun dolaro signo. 602 00:28:32,280 --> 00:28:35,660 Ni ne specifas, denove, ŝanĝiĝema tajpi plu. 603 00:28:35,660 --> 00:28:38,450 Samkiel ni faris kun C, ni ne bezonas fari tion. 604 00:28:38,450 --> 00:28:41,670 605 00:28:41,670 --> 00:28:44,490 >> Ni povas fari multajn malsamajn stuff kun variabloj. 606 00:28:44,490 --> 00:28:47,750 Ni povas meti ilin kune per concatenando ilin 607 00:28:47,750 --> 00:28:52,900 kun la skalara skribmaniero, kiu ni ne povis fari en C denove. 608 00:28:52,900 --> 00:28:57,490 Denove, ni havas iom pli versatilidad kun PHP en terminoj de variabloj. 609 00:28:57,490 --> 00:29:00,080 Denove, ni ne havas ĉefan funkcion. 610 00:29:00,080 --> 00:29:03,370 >> Kaj PHP estas interpretita kontraste al kompilis, 611 00:29:03,370 --> 00:29:09,970 Do ĝuste kiel ni faras por C dosieroj, ni ne devas fari tion por PHP. 612 00:29:09,970 --> 00:29:15,440 Sed prefere, la maniero ke la lingvo funkciigas mem, ĝi estas interpretita. 613 00:29:15,440 --> 00:29:18,550 Kaj tiam loze tajpita nur signifas ke ni 614 00:29:18,550 --> 00:29:22,490 ne devas specifi ŝanĝiĝema tipo kaj la variablo tipoj 615 00:29:22,490 --> 00:29:25,415 komprenas je ekzekuto. 616 00:29:25,415 --> 00:29:29,185 >> Publiko: Sed kion vi celas per skalara kunmeto? 617 00:29:29,185 --> 00:29:30,060 MARIA ZLATKOVA: Sure. 618 00:29:30,060 --> 00:29:37,660 Kiam ni volas meti aferojn together-- do se ni havis iun variablon kiu 619 00:29:37,660 --> 00:29:41,500 havis la valoron de 3 kaj ni havis alian variablo kiu havis la valoron de kordoj, 620 00:29:41,500 --> 00:29:45,920 Ni povus meti la variabloj kune metante punkto intere ilin 621 00:29:45,920 --> 00:29:46,970 kaj concatenando ilin. 622 00:29:46,970 --> 00:29:52,670 Aŭ ni povus krei ŝanĝiĝema nomita nomon 623 00:29:52,670 --> 00:29:56,900 kaj metis gxin kune per concatenando du kordoj. 624 00:29:56,900 --> 00:30:00,680 >> Do se ni havis ĉenon en duobla citaĵoj kaj ni metos punkton post ĝi, 625 00:30:00,680 --> 00:30:03,660 kaj tiam ni plian tendeno, kreus ĉenon entute. 626 00:30:03,660 --> 00:30:05,242 >> Publiko: OK. 627 00:30:05,242 --> 00:30:06,450 MARIA LATVIO: Was ke klara? 628 00:30:06,450 --> 00:30:07,099 Publiko: Yeah. 629 00:30:07,099 --> 00:30:07,890 MARIA ZLATKOVA: OK. 630 00:30:07,890 --> 00:30:08,766 Jes. 631 00:30:08,766 --> 00:30:11,146 >> Spektantaro: Kiam vi diras interpretita anstataŭ kompilita, 632 00:30:11,146 --> 00:30:14,160 vi parolas vi ne bezonas esti kiel specifa kiam 633 00:30:14,160 --> 00:30:15,906 temas PHP kontre C? 634 00:30:15,906 --> 00:30:18,085 635 00:30:18,085 --> 00:30:20,710 MARIA ZLATKOVA: Kiam ni diras interpretitaj kiel kontraŭ kompilita, 636 00:30:20,710 --> 00:30:21,850 Kion ni celas? 637 00:30:21,850 --> 00:30:26,220 Do tio signifas ke ni ne bezonas ruleblan dosierojn kuri PHP. 638 00:30:26,220 --> 00:30:29,870 Ĝi signifas ke ĝi kuras kiel ĝi iras. 639 00:30:29,870 --> 00:30:31,650 Ĉu tio havas sencon? 640 00:30:31,650 --> 00:30:32,495 Iom pli. 641 00:30:32,495 --> 00:30:34,620 HANNAH Blumberg: Do vi povas pensi interpretisto 642 00:30:34,620 --> 00:30:38,980 kiel alia programo kiu komisias cxar irante linion post linio tra PHP 643 00:30:38,980 --> 00:30:42,745 kaj reale ekzekuti ĝin, kontraste por kompilanta ĉion malsupren al duuma. 644 00:30:42,745 --> 00:30:46,050 Ĝi ne vere signifas ion pri kiel specifa ni bezonas esti. 645 00:30:46,050 --> 00:30:49,470 Ni ankoraŭ bezonas esti precizaj, kaj ne faras forgesu vian punktokomo, kaj certigi 646 00:30:49,470 --> 00:30:51,470 vi havos vian dolaro signo, kaj aĵoj tiel. 647 00:30:51,470 --> 00:30:52,240 Bona demando. 648 00:30:52,240 --> 00:30:53,115 >> MARIA ZLATKOVA: Yeah. 649 00:30:53,115 --> 00:30:55,590 Do linio por linio, kiel kontraste al per C dosieroj, 650 00:30:55,590 --> 00:30:59,100 Ni devas fari la tutan finan antaŭ ni povas reale ruli ĝin. 651 00:30:59,100 --> 00:31:00,360 Tio estas la ĉefa diferenco. 652 00:31:00,360 --> 00:31:02,655 Sed denove, ni ne povas vere esti malpli specifa. 653 00:31:02,655 --> 00:31:08,760 654 00:31:08,760 --> 00:31:13,950 Do arrays en PHP reprezenti fakte ordigita mapo. 655 00:31:13,950 --> 00:31:17,550 >> Do arrays asociita valorojn al klavoj. 656 00:31:17,550 --> 00:31:23,350 La du manieroj deklari tabelo, bazita sur tiu sintakso, 657 00:31:23,350 --> 00:31:26,380 ni povas esti pli eksplicita eldirante ni havas tabelo 658 00:31:26,380 --> 00:31:31,010 kaj ni havas ĉi key1 kiu mapas al ĉi value1, key2 kiu mapas value2. 659 00:31:31,010 --> 00:31:34,660 Aŭ ni povas simple krei tabelo kiu enhavas la valorojn mem 660 00:31:34,660 --> 00:31:38,360 kaj tiam la ŝlosiloj estas komprenita en maniero. 661 00:31:38,360 --> 00:31:40,000 Demandojn sur tio? 662 00:31:40,000 --> 00:31:42,500 >> Publiko: Kio estus la klavoj esti en la dua ekzemplo? 663 00:31:42,500 --> 00:31:47,100 664 00:31:47,100 --> 00:31:47,920 0, 1, 2, 3? 665 00:31:47,920 --> 00:31:50,650 666 00:31:50,650 --> 00:31:55,780 >> MARIA ZLATKOVA: Ekzemple, estas nur la klavoj en ĉi fari ne nepre 667 00:31:55,780 --> 00:31:56,550 fari diferencon. 668 00:31:56,550 --> 00:32:01,720 Ili simple difini kiel vi povas uzi la valoroj ene de ĝi. 669 00:32:01,720 --> 00:32:08,660 Do se ni havis foreach buklo en PHP kiu farus 670 00:32:08,660 --> 00:32:14,760 nin permesas iri tra ĉiuj la valoroj, ni povas iri tra ĉiuj la valoroj, 671 00:32:14,760 --> 00:32:19,570 eĉ se ni havis aŭ ne difinita specifan ŝlosilon ene la paĝaro 672 00:32:19,570 --> 00:32:20,820 antaŭa sintakso. 673 00:32:20,820 --> 00:32:23,460 >> Do eĉ kun tiu speco de tabelo, ni povus ankoraŭ 674 00:32:23,460 --> 00:32:26,260 havas foreach buklo kiu iras tra ĉiu 675 00:32:26,260 --> 00:32:31,240 de la valoroj en la ŝlosilo en la tabelo. 676 00:32:31,240 --> 00:32:36,180 Do la sintakso de foreach buklo, ni starti kun tabelo. 677 00:32:36,180 --> 00:32:38,720 678 00:32:38,720 --> 00:32:43,900 Ĉi $ arr variablo estas nia reala tabelo ke ni difinis en la antaŭa glitejo 679 00:32:43,900 --> 00:32:47,550 kiel valoro kiu laŭvorte iras tra ĉiu de la valoroj, 680 00:32:47,550 --> 00:32:50,122 sendistinge de ĉu ni havis ŝlosilan aŭ ne. 681 00:32:50,122 --> 00:32:53,080 Kaj tiam ni povas fari ion kun la valoron ene de la foreach buklo. 682 00:32:53,080 --> 00:32:57,730 Do denove, se ni havis tabelo kiel ĉi tie created-- 683 00:32:57,730 --> 00:33:03,270 tial ni havas la ŝlosilon de foo kaj valoro de trinkejo, la ŝlosilo de rabado kaj valoro de qux-- 684 00:33:03,270 --> 00:33:09,730 ni povas havi foreach buklo ke iras tra tabelo kiel ŝlosilo valoro 685 00:33:09,730 --> 00:33:11,900 kaj tiam fari ion kun la ŝlosilo kaj / aŭ valoro. 686 00:33:11,900 --> 00:33:15,980 Sed ni ja ne nepre ĉiam devas havi foreach maŝojn ke 687 00:33:15,980 --> 00:33:19,410 iras tra tabelo kiel ŝlosilo mapo al valoro. 688 00:33:19,410 --> 00:33:26,060 Ni povas iri tra la foreach buklo tabelo kiel valoro. 689 00:33:26,060 --> 00:33:28,990 >> HANNAH Blumberg: Kaj mi kredas to-- estis via demando, kio 690 00:33:28,990 --> 00:33:31,229 estas la implicita indekso? 691 00:33:31,229 --> 00:33:31,895 Publiko: Kinda. 692 00:33:31,895 --> 00:33:32,240 MARIA ZLATKOVA: Ho. 693 00:33:32,240 --> 00:33:33,406 HANNAH Blumberg: Yeah, yeah. 694 00:33:33,406 --> 00:33:36,150 Do resume, se vi ne specifas ŝlosila, ĝi tuj estos 01. 695 00:33:36,150 --> 00:33:37,140 >> MARIA ZLATKOVA: Yeah. 696 00:33:37,140 --> 00:33:41,718 Ĝuste kiel kun C, ĝi estas nulo indeksita se vi ne specifi ŝlosilo. 697 00:33:41,718 --> 00:33:42,384 Publiko: Pardonu. 698 00:33:42,384 --> 00:33:43,827 Ĉu vi povas provi paroli iomete pli laŭte? 699 00:33:43,827 --> 00:33:45,270 Mi havas iom da problemon aŭdi ĉion. 700 00:33:45,270 --> 00:33:46,478 >> MARIA ZLATKOVA: Mi tiom pardonpetas. 701 00:33:46,478 --> 00:33:48,439 Jes, kompreneble. 702 00:33:48,439 --> 00:33:50,230 Do ĉu vi volas min iri super ĉi tien? 703 00:33:50,230 --> 00:33:51,680 Aŭ estas this-- 704 00:33:51,680 --> 00:33:54,930 Publiko: Tial en la antaŭa slide-- se vi povus nur iri reen por unu sekundo. 705 00:33:54,930 --> 00:33:57,313 MARIA ZLATKOVA: Kompreneble, pardonon. 706 00:33:57,313 --> 00:33:59,237 Publiko: Do ​​la dua tabelo tie ne 707 00:33:59,237 --> 00:34:04,135 ŝajnas havi valoron tajpi, ia [? causalidad. ?] 708 00:34:04,135 --> 00:34:05,343 MARIA ZLATKOVA: Dekstra, dekstra. 709 00:34:05,343 --> 00:34:07,608 Publiko: Do ​​kiel faras tiun laboron kiam vi diras ke estas ĉiuj aŭ neniu. 710 00:34:07,608 --> 00:34:08,969 Al mi, kiu aspektas kiel A [? umo?] jam. 711 00:34:08,969 --> 00:34:10,093 >> MARIA ZLATKOVA: Yeah, yeah. 712 00:34:10,093 --> 00:34:12,969 Do denove, ĉi estas ordigita mapo en tiu senco 713 00:34:12,969 --> 00:34:15,639 ke estas komprenitaj, ekzemple, la indeksoj 714 00:34:15,639 --> 00:34:20,159 tie eblas komprenita kiel 0, 1, 2, 3. 715 00:34:20,159 --> 00:34:25,929 Denove, tio estas havi tiujn indeksoj estas nia ekvivalento 716 00:34:25,929 --> 00:34:28,980 havi ŝlosilojn mapita sur valoroj. 717 00:34:28,980 --> 00:34:34,710 Do se nia ŝlosilo estis 0-- bedaŭras. 718 00:34:34,710 --> 00:34:36,524 >> HANNAH Blumberg: Ne, tie estas kreto tien. 719 00:34:36,524 --> 00:34:36,929 Ĝi estas fakte vere bela. 720 00:34:36,929 --> 00:34:37,460 >> MARIA ZLATKOVA: Tio estas granda. 721 00:34:37,460 --> 00:34:38,260 BONE. 722 00:34:38,260 --> 00:34:49,489 Do denove, $ arr 0 estus la ŝlosilo por la valoro 1. 723 00:34:49,489 --> 00:34:51,138 0 estus la ŝlosilo por la valoro 1. 724 00:34:51,138 --> 00:34:51,971 Publiko: Mi bedaŭras. 725 00:34:51,971 --> 00:34:53,190 Ĝi estas nevidebla. 726 00:34:53,190 --> 00:34:53,659 >> HANNAH Blumberg: Bone, Nevermind. 727 00:34:53,659 --> 00:34:54,980 Kreto estis malbona ideo. 728 00:34:54,980 --> 00:34:58,030 Mi prenas ĝin reen. 729 00:34:58,030 --> 00:35:01,425 Vi povas pensi de la ŝlosiloj kiel 0 mapoj al la valoro 1. 730 00:35:01,425 --> 00:35:02,300 MARIA ZLATKOVA: Yeah. 731 00:35:02,300 --> 00:35:04,630 Do tiu estas 0, ĉi tiu estas 1, 2, 3. 732 00:35:04,630 --> 00:35:05,760 Tiuj povas esti via klavoj. 733 00:35:05,760 --> 00:35:10,020 Vi povas pensi de ilin as-- yeah. 734 00:35:10,020 --> 00:35:12,740 Do anstataŭ havanta eksplicita ŝlosilojn, ili estas 735 00:35:12,740 --> 00:35:17,180 ia komprenita kiel estante la indeksoj ekde 0. 736 00:35:17,180 --> 00:35:21,630 737 00:35:21,630 --> 00:35:24,820 La kreto ne helpis. 738 00:35:24,820 --> 00:35:25,722 Yeah. 739 00:35:25,722 --> 00:35:30,914 >> Publiko: Por la foreach buklo, se ni volis vidi la kiel valoro, 740 00:35:30,914 --> 00:35:33,245 ĝi estus ĵus aŭtomate indekso al 0? 741 00:35:33,245 --> 00:35:34,120 MARIA ZLATKOVA: Yeah. 742 00:35:34,120 --> 00:35:35,745 Ĝi irus tra ĉiu de la valoroj. 743 00:35:35,745 --> 00:35:39,130 Spektantaro: [inaudible] kiel 0 aŭ estus ke simple fari 0? 744 00:35:39,130 --> 00:35:43,710 >> MARIA ZLATKOVA: Vi havus diri kiel dolaro signo kaj tiam 745 00:35:43,710 --> 00:35:46,266 iu variablo nomo, valoro. 746 00:35:46,266 --> 00:35:47,182 Spektantaro: [inaudible]. 747 00:35:47,182 --> 00:35:50,048 748 00:35:50,048 --> 00:35:50,964 MARIA ZLATKOVA: Pardonu? 749 00:35:50,964 --> 00:35:52,839 Publiko: Pardonon, mi estas nur provas memori. 750 00:35:52,839 --> 00:35:57,190 Kiel vi farus tion se vi povas fari ĝin aŭtomate indeksado estas ĝuste 0 de? 751 00:35:57,190 --> 00:36:00,780 >> MARIA ZLATKOVA: Do kiel vi farus tion se vi ne havas specifan ŝlosilon nomoj? 752 00:36:00,780 --> 00:36:01,710 >> Publiko: Yeah. 753 00:36:01,710 --> 00:36:07,820 >> MARIA ZLATKOVA: vi simple define-- nur diru mem kiel iu nomo. 754 00:36:07,820 --> 00:36:17,950 Do en via psets, vi infanoj eble memoru foreach $ vico kiel $ vicoj, 755 00:36:17,950 --> 00:36:24,610 ni kreis samaj ĉi $ vico dirante ni volas iri tra vico kiel $ vicoj. 756 00:36:24,610 --> 00:36:28,360 Kvankam ni ne havis tiu eksplicita $ vicoj difinita, 757 00:36:28,360 --> 00:36:31,990 ni povus simple iri kaj diru ĉi povas esti nia ŝlosilo, 758 00:36:31,990 --> 00:36:33,615 kaj ĝuste iri tra ĉiu de la valoroj. 759 00:36:33,615 --> 00:36:37,295 760 00:36:37,295 --> 00:36:41,660 >> Publiko: Do ​​estas valoro nova variablo ni kreas stoki [inaudible]? 761 00:36:41,660 --> 00:36:46,820 762 00:36:46,820 --> 00:36:49,990 >> MARIA ZLATKOVA: Do estas ne imanente nova variablo. 763 00:36:49,990 --> 00:37:00,310 Ĝi estas variablo kiu rilatas al la interne de la tabelo por ĉiu el ili. 764 00:37:00,310 --> 00:37:02,060 HANNAH Blumberg: Estas nova variablo nomo. 765 00:37:02,060 --> 00:37:04,018 MARIA ZLATKOVA: Yeah, ĝi estas nova variablo nomo, 766 00:37:04,018 --> 00:37:06,680 sed ĝi ne inherently-- yeah. 767 00:37:06,680 --> 00:37:08,950 Estas nur nova variablo ke vi povas fari tion. 768 00:37:08,950 --> 00:37:12,680 Do ĝuste kiel ni faris $ remi kiel $ vicoj, vicojn 769 00:37:12,680 --> 00:37:17,980 estis nova variablo nomo kiun ni povus krei en nia foreach buklo. 770 00:37:17,980 --> 00:37:22,065 Ĝi ne devas preexist antaŭ tio. 771 00:37:22,065 --> 00:37:25,777 >> Spektantaro: Ĉu vi povas iri tra la logikon por ĉiu, uzante la ekzemplon tie? 772 00:37:25,777 --> 00:37:26,610 MARIA ZLATKOVA: MHM. 773 00:37:26,610 --> 00:37:31,240 774 00:37:31,240 --> 00:37:32,080 Ho, pardonon. 775 00:37:32,080 --> 00:37:33,780 Jen la ekzemplo. 776 00:37:33,780 --> 00:37:34,280 Certe. 777 00:37:34,280 --> 00:37:38,950 Do por ĉiu tabelo tiel tio signifas iri al ĉi tabelo 778 00:37:38,950 --> 00:37:43,930 kiel ŝlosilo value-- ke tuj iri tra tiu tabelo 779 00:37:43,930 --> 00:37:49,480 kaj unue iri kaj akiri umo, La ŝlosilo umo kaj la valoro trinkejo. 780 00:37:49,480 --> 00:37:51,570 Kaj poste sur la dua ripeto de la por buklo, 781 00:37:51,570 --> 00:37:55,090 ĝi tuj iri tra kaj prenas la ŝlosilo Rabado kaj la valoro qux. 782 00:37:55,090 --> 00:38:00,512 Kaj tiam vi povas fari ion kun iu el ili aŭ ambaŭ de ili. 783 00:38:00,512 --> 00:38:03,488 >> Publiko: Do ​​la ideo malantaŭ havi ŝlosilan punkton por la valoro, 784 00:38:03,488 --> 00:38:07,470 Kion vi finos alirante? 785 00:38:07,470 --> 00:38:10,680 >> MARIA ZLATKOVA: Kio estas la ideo havi ŝlosilan montradon taksi? 786 00:38:10,680 --> 00:38:16,400 Estas nur alia konvencio, alia vojo iri tra la tabelo 787 00:38:16,400 --> 00:38:22,600 kaj povante aliri ĉu la klavo aŭ la valoro aŭ ambaŭ kaj uzi ilin. 788 00:38:22,600 --> 00:38:27,100 >> Publiko: Kio estas la rolo por la ordigi ke la foreach kuras en? 789 00:38:27,100 --> 00:38:29,250 Do se ni devis aldoni elementoj al la tabelo poste, 790 00:38:29,250 --> 00:38:32,140 estus tiuj estu la unuaj nomita en la foreach tabelo, 791 00:38:32,140 --> 00:38:33,750 aŭ estus, pli poste? 792 00:38:33,750 --> 00:38:37,770 >> MARIA ZLATKOVA: Do kio estas la ordon ke la foreach 793 00:38:37,770 --> 00:38:39,210 buklo iras tra tabelo en? 794 00:38:39,210 --> 00:38:42,220 Ĝi iras tra la unua elemento al la lasta elemento, 795 00:38:42,220 --> 00:38:43,400 al la lasta aldonita elemento. 796 00:38:43,400 --> 00:38:48,020 Se vi aldonas elementojn pli poste, ili farus esti accessed-- la unuaj elementoj 797 00:38:48,020 --> 00:38:51,410 esti alirita kiel la unua elementoj de la tabelo, 798 00:38:51,410 --> 00:38:57,620 kaj tiam vi volus iri tra ĉiu de la elementoj kiel ian ordered-- 799 00:38:57,620 --> 00:39:02,930 ne ordigita, sed la maniero kiu ili estis metitaj en la tabelo. 800 00:39:02,930 --> 00:39:06,855 >> Publiko: Do ​​novaj elementoj estas aldonitaj pli poste? 801 00:39:06,855 --> 00:39:10,680 Do ili estas added-- ili estos la lastaj en la [? ripeto. ?] 802 00:39:10,680 --> 00:39:14,280 >> MARIA ZLATKOVA: Novaj elementoj can-- esence, kiam novaj elementoj estas aldonitaj, 803 00:39:14,280 --> 00:39:16,520 ili aldonis al la fino de la tabelo? 804 00:39:16,520 --> 00:39:17,632 >> Publiko: Yeah. 805 00:39:17,632 --> 00:39:18,840 MARIA ZLATKOVA: Mi kredas tiel. 806 00:39:18,840 --> 00:39:20,850 Jes. 807 00:39:20,850 --> 00:39:24,330 Kaj tiam kun via foreach buklo, post vi aldonis novajn elementojn 808 00:39:24,330 --> 00:39:26,790 kaj vi iros tra ili, la novaj elementoj 809 00:39:26,790 --> 00:39:30,930 esti accessed-- la nova elemento, se ĝi estas aldonita lasta, estus aliritaj lasta. 810 00:39:30,930 --> 00:39:34,416 >> Publiko: Cxu vi povas nur doni ekzemplon de iu kiu farus [inaudible] 811 00:39:34,416 --> 00:39:37,404 kun ion kun valoro kiel [inaudible] aŭ valoro, 812 00:39:37,404 --> 00:39:38,910 Ŝatas kiel oni kredus formato kiu? 813 00:39:38,910 --> 00:39:39,785 >> MARIA ZLATKOVA: Sure. 814 00:39:39,785 --> 00:39:42,340 815 00:39:42,340 --> 00:39:46,410 Ĉu mi povas doni ekzemplon de kio ni farus kun la valoro? 816 00:39:46,410 --> 00:39:52,440 Do kion vi uloj povus esti familiara kun estas ke ni trapasis tabelo 817 00:39:52,440 --> 00:39:55,380 kaj esence presita ĉiu de la elementoj, 818 00:39:55,380 --> 00:40:00,910 ekzemple, kiel parto de ordigita listo aŭ io tiel. 819 00:40:00,910 --> 00:40:02,674 Ĉu tio havas sencon aŭ ĉu ni volas to-- 820 00:40:02,674 --> 00:40:04,340 Spektantaro: Ĉu ni povas presi tiujn valorojn ekstere? 821 00:40:04,340 --> 00:40:13,220 MARIA ZLATKOVA: Jes, ni povus presi kaj tiam esence $ valoro ĉar ĉe 822 00:40:13,220 --> 00:40:16,570 ke specifa valoro, ni estus presi la valoro ene de ĝi. 823 00:40:16,570 --> 00:40:20,150 Do se ni estis en nia unua ripeto de ĝi kaj ni presis $ valoro, 824 00:40:20,150 --> 00:40:23,775 ni estus videbligi trinkejo. 825 00:40:23,775 --> 00:40:27,020 >> Spektantaro: Ĉu ekzistas ankaŭ por masxojn en PHP aŭ nur foreach maŝojn? 826 00:40:27,020 --> 00:40:30,430 >> MARIA ZLATKOVA: Ekzistas ankaŭ por bukloj en PHP. 827 00:40:30,430 --> 00:40:33,399 Kaj ilia logiko estas plejparte la sama kiel kio vi estis uzita. 828 00:40:33,399 --> 00:40:34,690 Publiko: Do ​​ĝia valoro estas nula. 829 00:40:34,690 --> 00:40:35,090 MARIA ZLATKOVA: Estas kiel la sama. 830 00:40:35,090 --> 00:40:35,590 Yeah. 831 00:40:35,590 --> 00:40:37,747 Publiko: Mi simple tuj demandi. 832 00:40:37,747 --> 00:40:39,695 Do kiam vi deklaru tabelo, vi ne bezonas 833 00:40:39,695 --> 00:40:42,617 diri kion grandeco ĝi tuj esti, kio signifas ke vi povas nur 834 00:40:42,617 --> 00:40:44,417 aldoni kaj forpreni elementojn [inaudible]. 835 00:40:44,417 --> 00:40:45,250 MARIA ZLATKOVA: Yup. 836 00:40:45,250 --> 00:40:45,750 Jes. 837 00:40:45,750 --> 00:40:46,251 Ekzakte. 838 00:40:46,251 --> 00:40:48,875 Kiam ni deklaras tabelo, ni ne bezonas diri kion grandeco estas, 839 00:40:48,875 --> 00:40:51,022 tial ni povas simple aldoni elementojn sur ĝin poste ankaŭ. 840 00:40:51,022 --> 00:40:55,075 841 00:40:55,075 --> 00:40:55,700 Pli demandoj? 842 00:40:55,700 --> 00:40:59,870 843 00:40:59,870 --> 00:41:05,950 Do alportante PHP kaj HTML kune, kion ni seen-- bone, 844 00:41:05,950 --> 00:41:15,130 ekzemple, en tiu ekzemplo, ni havas HTML formo kiu havas eniga kampo. 845 00:41:15,130 --> 00:41:18,830 >> Kaj la enmetkampo estas nur nomo kaj tiam ĝi havas Submetu butonon. 846 00:41:18,830 --> 00:41:26,040 Kaj kiam vi premas Submit butono, en nia hello.php dosiero, 847 00:41:26,040 --> 00:41:32,130 ĉar la metodo por la formo estas atingi, ni povas aliri kiom estas ĉe nomon 848 00:41:32,130 --> 00:41:40,360 per tiu ricevos tutmonda variablo kiu is-- la sintakson por ĝi estas $ _GET. 849 00:41:40,360 --> 00:41:44,520 Kaj tiam ni povas aliri ajn la Uzanta enigo ene de tiu formo por nomo 850 00:41:44,520 --> 00:41:47,410 specifante la nomon de tiu kampo. 851 00:41:47,410 --> 00:41:51,480 852 00:41:51,480 --> 00:41:55,060 >> Aliajn demandojn aŭ ajna demandoj sur tiu specifa ekzemplo? 853 00:41:55,060 --> 00:41:58,275 >> Spektantaro: Kie estas la PHP? 854 00:41:58,275 --> 00:41:59,150 MARIA ZLATKOVA: tie. 855 00:41:59,150 --> 00:42:01,150 Do tiu estas nia malfermo etikedo por PHP. 856 00:42:01,150 --> 00:42:01,530 >> Publiko: Ho, dekstre. 857 00:42:01,530 --> 00:42:02,363 >> MARIA ZLATKOVA: Jes. 858 00:42:02,363 --> 00:42:05,320 859 00:42:05,320 --> 00:42:09,609 >> HANNAH Blumberg: La? = Estas stenografio cxar tio PHP kaj nur eĥo. 860 00:42:09,609 --> 00:42:10,150 Publiko: Ho. 861 00:42:10,150 --> 00:42:10,720 MARIA ZLATKOVA: Yeah, pardonon. 862 00:42:10,720 --> 00:42:12,040 Mi devus farinta ke klara. 863 00:42:12,040 --> 00:42:13,759 >> HANNAH Blumberg: Print. 864 00:42:13,759 --> 00:42:16,800 MARIA ZLATKOVA: Estas nur la funkcio kiu permesas presi iun. 865 00:42:16,800 --> 00:42:19,795 866 00:42:19,795 --> 00:42:20,420 Granda demando. 867 00:42:20,420 --> 00:42:24,140 868 00:42:24,140 --> 00:42:25,495 Do going-- jes. 869 00:42:25,495 --> 00:42:31,940 >> Spektantaro: Ĉu ne tuj estos tute iom de mano kodigo de PHP kaj HTML 870 00:42:31,940 --> 00:42:33,450 sur kvizo 1? 871 00:42:33,450 --> 00:42:36,310 872 00:42:36,310 --> 00:42:38,810 MARIA ZLATKOVA: Povas esti justan kvanton de interpretado 873 00:42:38,810 --> 00:42:43,330 de PHP kaj HTML, ne nepre kiel grandega kvanto de kodita, 874 00:42:43,330 --> 00:42:46,960 Kvankam vi eble devus skribi foreach buklo, kvankam, por buklo. 875 00:42:46,960 --> 00:42:49,790 Ajna de la bantoj kiuj nin kovri tie estas justa ludo. 876 00:42:49,790 --> 00:42:51,889 Kaj tio estas plejparte ĝin. 877 00:42:51,889 --> 00:42:53,430 HANNAH Blumberg: mi pretus. 878 00:42:53,430 --> 00:42:57,010 En la sama maniero ke ni petis vin skribi faskon de C funkcioj sur kvizo 0, 879 00:42:57,010 --> 00:42:59,766 Mi estus preta fari la sama en PHP kaj Javascript. 880 00:42:59,766 --> 00:43:00,640 MARIA ZLATKOVA: Yeah. 881 00:43:00,640 --> 00:43:03,210 HANNAH Blumberg: mi dirus a little-- kiel ni ne estas 882 00:43:03,210 --> 00:43:06,251 iranta fari vin skribi grandegan HTML paĝo nur ĉar tio estas iomete 883 00:43:06,251 --> 00:43:08,240 teda, sed vi povus havi partojn. 884 00:43:08,240 --> 00:43:09,310 Tio estas tute justa ludo. 885 00:43:09,310 --> 00:43:11,082 Kiel malgrandaj HTML paĝo, tute justa. 886 00:43:11,082 --> 00:43:11,623 Publiko: OK. 887 00:43:11,623 --> 00:43:13,814 Kiom proksimume en JavaScript tiel? 888 00:43:13,814 --> 00:43:14,730 HANNAH Blumberg: Yeah. 889 00:43:14,730 --> 00:43:15,250 JavaScript estas justa ludo. 890 00:43:15,250 --> 00:43:15,635 >> MARIA ZLATKOVA: Yeah. 891 00:43:15,635 --> 00:43:16,801 Tio tute justa ludo. 892 00:43:16,801 --> 00:43:19,280 HANNAH Blumberg: Ni ricevos por ke tiel same 10 minutojn. 893 00:43:19,280 --> 00:43:23,750 >> MARIA ZLATKOVA: SQL, denove, Strukturita Query Language. 894 00:43:23,750 --> 00:43:28,651 Ĝi esence nin permesas administri datumoj en rilata datumbazo demarŝo 895 00:43:28,651 --> 00:43:29,150 sistemo. 896 00:43:29,150 --> 00:43:31,149 Tio simple signifas esence ke ni havas ie 897 00:43:31,149 --> 00:43:37,980 stoki iujn datumojn kiuj ni povus voli uzi en retejo aŭ en iu alia formo. 898 00:43:37,980 --> 00:43:42,190 Kaj tiam ni havas pridemandojn akiri informoj el nia datumbazo, 899 00:43:42,190 --> 00:43:44,320 aŭ enmeti informojn en ili. 900 00:43:44,320 --> 00:43:47,560 Multa la komuna ones-- UPDATE, INSERT, ELEKTU kaj DELETE. 901 00:43:47,560 --> 00:43:50,790 >> Do por UPDATE, tiu estas la sintakso por ĝisdatigi datumojn en datumbazo. 902 00:43:50,790 --> 00:43:53,330 903 00:43:53,330 --> 00:43:57,340 Ĝisdatigante ĉi tablo vokis tablon dirante SET, 904 00:43:57,340 --> 00:44:04,170 ni povas agordi iuj valoroj en ĉiuj vicoj egalan io alia. 905 00:44:04,170 --> 00:44:09,410 Do ni povas ankaŭ specifi iuj specifaj Aktualaĵoj ke ni volas modifi 906 00:44:09,410 --> 00:44:11,240 kaj kiu povas esti uzanta KIE. 907 00:44:11,240 --> 00:44:16,380 Kaj ni povas specifi ke ni nur volas modifi iuj vicoj kie la domo por, 908 00:44:16,380 --> 00:44:19,830 se ni havis tabelo de studentoj kaj ĉiuj studentoj havis domon, 909 00:44:19,830 --> 00:44:24,890 tiel ni nur modifi iujn valorojn kie domon egalas Currier, 910 00:44:24,890 --> 00:44:25,430 ekzemple. 911 00:44:25,430 --> 00:44:29,120 912 00:44:29,120 --> 00:44:31,800 >> Por INSERT, ni povas enmeti certaj valoroj en tablo. 913 00:44:31,800 --> 00:44:35,150 Do enmeti en tabelo, kaj tiam la valoroj, 914 00:44:35,150 --> 00:44:39,080 kaj tiam en krampoj, ni specifi kiuj taksos vi volas enigi. 915 00:44:39,080 --> 00:44:43,220 Do enmeti en tablo, col1 kaj col2, la valoro estas val1 kaj val2. 916 00:44:43,220 --> 00:44:48,930 Do tiu enmetas esence nova vico en tablo enhavanta la valoroj 1 kaj 2 917 00:44:48,930 --> 00:44:50,850 sub la kolumnoj 1 kaj 2. 918 00:44:50,850 --> 00:44:54,760 >> Kaj tiam ni tuj iru super rapida ekzemplo de kiel tio aspektas 919 00:44:54,760 --> 00:44:56,310 kiel en nia datumbazo iomete. 920 00:44:56,310 --> 00:44:58,685 Sed tiu fina query ke mi pensu ni tuj transiros 921 00:44:58,685 --> 00:45:01,450 ELEKTU, ĝi nur permesas nin elekti datumojn de tablo 922 00:45:01,450 --> 00:45:03,080 eble uzi ĝin poste. 923 00:45:03,080 --> 00:45:05,830 Kaj la vojo ni fari tion ĉi estas ni nur stoki ĝin en iu variablo. 924 00:45:05,830 --> 00:45:07,780 Kaj tiam ni povas eble uzi ĝin denove. 925 00:45:07,780 --> 00:45:10,260 >> Do ELEKTU stelo signifas elektu ĉiuj. 926 00:45:10,260 --> 00:45:13,280 Tio estas nur stenografio Por elekti tutajn. 927 00:45:13,280 --> 00:45:19,760 EL tablo kie, ni serĉas por iuj specifaj kondiĉoj, 928 00:45:19,760 --> 00:45:22,290 Do kie kolumno egalas io, ekzemple. 929 00:45:22,290 --> 00:45:24,410 Se ni nur volis Elekti ĉiuj el tablo, 930 00:45:24,410 --> 00:45:28,400 ĉi nur selektas ĉiuj kolumnoj kaj ĉiuj vicoj de tabelo. 931 00:45:28,400 --> 00:45:32,040 >> Kaj tiam DELETE FROM tablo KIE col egalas io, 932 00:45:32,040 --> 00:45:36,440 ĉi nur forigas iun remi de nia tablo 933 00:45:36,440 --> 00:45:38,860 kie ni havas kelkajn specifajn kondiĉojn. 934 00:45:38,860 --> 00:45:41,870 En tiu kazo, la kondiĉoj estas kolumno egalas ion. 935 00:45:41,870 --> 00:45:43,460 Do nur rapidan ekzemplo de tiu. 936 00:45:43,460 --> 00:45:49,100 Se ni havas tiun rajton tablo tie kaj ni enmeti ĝin en tablo, tiuj valoroj, 937 00:45:49,100 --> 00:45:50,400 kiu enmeti novan vicon. 938 00:45:50,400 --> 00:45:56,380 Kaj se ni havis auto-pliigo, tiu estus nur pliigo nia IRU de 0 al 1 al 2. 939 00:45:56,380 --> 00:46:00,010 >> Se ni selektas ĉiu de studentoj, ĝi nur revenas ĉiuj kampoj kaj ĉiuj vicoj. 940 00:46:00,010 --> 00:46:02,430 Kie jaro estas pli granda ol aŭ egala al 2016, 941 00:46:02,430 --> 00:46:04,390 kiu ĵus revenas Hannah kaj mi mem. 942 00:46:04,390 --> 00:46:08,360 Kaj tiam se ni nur selektitaj jaro identigilo kaj jaron de studentoj 943 00:46:08,360 --> 00:46:11,710 kie la domo estas Cabot House, ke estus, denove, revenas Hannah kaj mi mem. 944 00:46:11,710 --> 00:46:14,430 >> Tiam se ni forviŝita el studentoj kie nomo estas egala al Rob, 945 00:46:14,430 --> 00:46:16,760 ke estus forigi la tutan vicon. 946 00:46:16,760 --> 00:46:19,696 Kaj tiam se ni starigos la nomo, UPDATE studentoj 947 00:46:19,696 --> 00:46:21,570 SET nomo egalas al Daven KIE domo estas egalaj 948 00:46:21,570 --> 00:46:27,010 Cabot House, tiu tuj iri al tiuj vicoj kaj tiam ĝisdatigi la nomo. 949 00:46:27,010 --> 00:46:31,470 >> Kaj tiam kelkaj SQLa datumtipoj estas Char, VARCHAR, INT, kaj flosas. 950 00:46:31,470 --> 00:46:32,760 Tiuj estas justa ludo. 951 00:46:32,760 --> 00:46:36,740 Mi irus denove kaj certigi vin scias 952 00:46:36,740 --> 00:46:40,930 kaj havi ilin sur via cheat folio, kion ĉiu el tiuj karakteroj 953 00:46:40,930 --> 00:46:44,140 uziĝis por, kio vi uzis ilin sur vian psets, 954 00:46:44,140 --> 00:46:48,050 kaj certigi vi konas kaj komforta kun havado elekti 955 00:46:48,050 --> 00:46:51,450 de malsamaj datumtipoj en via pset. 956 00:46:51,450 --> 00:46:51,950 Jes. 957 00:46:51,950 --> 00:46:54,300 >> Publiko: Kio estis tiu tablo stokitaj? 958 00:46:54,300 --> 00:46:57,119 Jes, kie estas tiu tablo stokitaj? 959 00:46:57,119 --> 00:46:59,160 MARIA ZLATKOVA: Nu, nun, ĝi ne estas stokitaj. 960 00:46:59,160 --> 00:47:00,700 Ĉiuokaze, kie estas tiu tablo stokitaj? 961 00:47:00,700 --> 00:47:04,503 Sed ĝi povas esti stokita en SQL datumbazo. 962 00:47:04,503 --> 00:47:07,330 >> Spektantaro: Kie estas la SQL datumbazo? 963 00:47:07,330 --> 00:47:11,200 En la komputilo, rete ie, la servilo? 964 00:47:11,200 --> 00:47:15,000 >> MARIA ZLATKOVA: Ĝi povas esti nombro de malsamaj aferoj. 965 00:47:15,000 --> 00:47:19,690 >> HANNAH Blumberg: Ni interfaced kun SQLa tabloj plejparte kun phpMyAdmin. 966 00:47:19,690 --> 00:47:22,060 Do ni povus demandi servilo enteni ilin por ni. 967 00:47:22,060 --> 00:47:23,830 Ni povus stoki ilin en nia propra komputilo. 968 00:47:23,830 --> 00:47:27,950 >> MARIA ZLATKOVA: Ĝi nur dependas kiamaniere vi volas fari tion por vi mem. 969 00:47:27,950 --> 00:47:30,075 Sed ni estis stokante ilin, kiel Hannah menciita, 970 00:47:30,075 --> 00:47:31,755 sur phpMyAdmin, kiuj estas ensalutintaj. 971 00:47:31,755 --> 00:47:36,550 972 00:47:36,550 --> 00:47:39,280 Kaj tiam la maniero kiun uzas PHP kaj SQL, ni stoki ĝin 973 00:47:39,280 --> 00:47:43,450 en iu variablo kion ni konsulti por. 974 00:47:43,450 --> 00:47:48,370 >> Do se ni SELECT ĉiuj EL historio kie user_id egalas la SESIO identigilo, 975 00:47:48,370 --> 00:47:53,900 ke selektus ĉiuj vicoj por la specifa persono kiu 976 00:47:53,900 --> 00:47:58,327 estas ensalutinta el la historio tablo kaj ordigi ilin en vicoj. 977 00:47:58,327 --> 00:48:00,410 A cool afero scii estas ke CS50 query funkcio 978 00:48:00,410 --> 00:48:02,180 protektas kontraŭ SQL injekto etikedoj. 979 00:48:02,180 --> 00:48:07,420 Tio simple signifas ke ĝi certigas la enigo, kiu venis estas korekta 980 00:48:07,420 --> 00:48:09,920 kaj ke la persono kiu eniras la enigo 981 00:48:09,920 --> 00:48:15,100 ne provas enigo iu malica kodon al ĉu faligi niaj tabloj 982 00:48:15,100 --> 00:48:17,305 aŭ forviŝi ĉiun ene de nia datumbazo. 983 00:48:17,305 --> 00:48:20,060 984 00:48:20,060 --> 00:48:23,400 >> Rapida trarigardo de la Modelo Montri Controller modelon, 985 00:48:23,400 --> 00:48:27,360 ĝi estas nur maniero de organizado kaj pensante pri kodo. 986 00:48:27,360 --> 00:48:29,100 Estas denove, dezajno paradigmo. 987 00:48:29,100 --> 00:48:33,380 Kion tio signifas estas ke ni can-- kaj ĝi estas bona praktiko 988 00:48:33,380 --> 00:48:37,790 apartigi malsamajn partojn de nia kodo kaj kion ili 989 00:48:37,790 --> 00:48:40,530 kontroli en tiuj tri paradigmoj. 990 00:48:40,530 --> 00:48:46,700 >> Do nia vidpunkto estas plej ofte niaj ŝablonoj, nia aranĝo, la vojo 991 00:48:46,700 --> 00:48:48,260 ke ni starigu kiel nia kodo aspektas. 992 00:48:48,260 --> 00:48:55,190 Tio plejparte niaj CSS dosierojn kaj la vojo ke ni difinas la dezajno de nia kodo, 993 00:48:55,190 --> 00:48:55,710 esence. 994 00:48:55,710 --> 00:48:59,280 Nia regilo estas plejparte kion ni estis farante kun PHP dosierojn. 995 00:48:59,280 --> 00:49:03,030 Do denove, laborante kun la informo kiun ni havas 996 00:49:03,030 --> 00:49:06,700 kaj difinante ke informo estas uzata, 997 00:49:06,700 --> 00:49:10,660 kaj tiam pasante tiu informo ĉu sur la vido aŭ la modelo. 998 00:49:10,660 --> 00:49:13,880 Kaj la modelo, la vojo kiu ni estis uzante IS estis nia datumbazo, 999 00:49:13,880 --> 00:49:17,510 Do kie nia informo stokitaj tiel ĝi havas ie 1000 00:49:17,510 --> 00:49:21,490 vivi en, kaj iu el la kodo kiu rilatas al la maniero 1001 00:49:21,490 --> 00:49:25,410 ke ni akiras ke informo aŭ la maniero ke ni ĝisdatigi tiun informon. 1002 00:49:25,410 --> 00:49:28,940 1003 00:49:28,940 --> 00:49:33,200 >> Do en la MVC modelo, HTTP petoj estas sendita al reta servilo. 1004 00:49:33,200 --> 00:49:36,220 Tiam, la regilo interpretas peto de la uzanto 1005 00:49:36,220 --> 00:49:38,260 kaj tiam validigas la uzanto enigo. 1006 00:49:38,260 --> 00:49:41,580 Ĝi estas laŭvola, ke ni havas la regilo komuniki 1007 00:49:41,580 --> 00:49:44,000 kun modelo, do io kiel nia datumbazo 1008 00:49:44,000 --> 00:49:47,500 aŭ alian funcionalidad ke elsendas informon. 1009 00:49:47,500 --> 00:49:50,340 Kaj poste fine, la controlador pasas informon sur la vido 1010 00:49:50,340 --> 00:49:52,090 tiel ke ĝi povas esti pruntitaj kaj ke ĝi povas 1011 00:49:52,090 --> 00:49:55,860 vidigxi al ajna persono aliranta la retpaĝo. 1012 00:49:55,860 --> 00:49:58,440 1013 00:49:58,440 --> 00:50:01,340 >> Demandojn? 1014 00:50:01,340 --> 00:50:01,840 Imponega. 1015 00:50:01,840 --> 00:50:04,530 1016 00:50:04,530 --> 00:50:08,469 Do denove, la modelo, lia funkcio, denove, 1017 00:50:08,469 --> 00:50:11,260 estas persista stokado de informo, administri kaj organizi datumojn. 1018 00:50:11,260 --> 00:50:13,890 Kaj kion ni vidis ĝis for estas la MySQL datumbazo 1019 00:50:13,890 --> 00:50:16,200 kaj neniu datumo dosieroj povas uzi. 1020 00:50:16,200 --> 00:50:20,580 >> Vidi, prezento de informo al la uzanto, la UI aŭ uzantinterfaco. 1021 00:50:20,580 --> 00:50:22,350 Kaj la ekzemplo de tiu estas HTML. 1022 00:50:22,350 --> 00:50:23,950 Kaj tiam ni povus havi minimuma PHP. 1023 00:50:23,950 --> 00:50:28,360 Do por buklo ke ripetas super datumoj kiuj estas eligataj el 1024 00:50:28,360 --> 00:50:30,720 estas parto de la vido, kiel kontraste al la regilo. 1025 00:50:30,720 --> 00:50:35,660 Kaj tiam multajn niajn PHP dosierojn fali en la regilo kategorio. 1026 00:50:35,660 --> 00:50:38,410 Ĝi nur manipulas uzanto petojn kaj ricevas informojn de la modelo. 1027 00:50:38,410 --> 00:50:42,880 1028 00:50:42,880 --> 00:50:45,590 >> Saltante en la Dokumento Objekto Modelo, ĉi nur 1029 00:50:45,590 --> 00:50:47,700 rilatas al la maniero HTML dokumentoj estas organizitaj. 1030 00:50:47,700 --> 00:50:51,600 Kaj ili estas organizitaj en arbon strukturo kiu havas hierarkion. 1031 00:50:51,600 --> 00:50:56,720 Do se ni havas aliron al [inaudible] reprezento de la dokumento, 1032 00:50:56,720 --> 00:51:02,750 Ni povas labori kun la dokumentoj, kiel Ni manipuli celojn esence. 1033 00:51:02,750 --> 00:51:06,630 >> Kaj por fari ĉi iomete pli klara, kiam 1034 00:51:06,630 --> 00:51:10,540 Ni havas multe de niaj malsamaj etikedoj respondi 1035 00:51:10,540 --> 00:51:12,590 al malsamaj itineroj en nia arbo. 1036 00:51:12,590 --> 00:51:17,070 Kaj tiam por tiu ekzemplo, ni havas la startanta dokumenton nodo. 1037 00:51:17,070 --> 00:51:20,010 Ni havas, tiam, nia HTML nodo ke fendetiĝas en kapo kaj korpo. 1038 00:51:20,010 --> 00:51:22,810 Kapo havas titolon kaj poste titolo enhavas saluton, mondo. 1039 00:51:22,810 --> 00:51:24,860 Kaj nia korpo nur enhavas saluton, mondo ankaŭ. 1040 00:51:24,860 --> 00:51:28,700 1041 00:51:28,700 --> 00:51:31,900 >> Do demandojn je ajna de la kion ni kovrita ĝis nun? 1042 00:51:31,900 --> 00:51:35,891 Kaj se ne, Hannah volo transpreni kun JavaScript. 1043 00:51:35,891 --> 00:51:36,390 Imponega. 1044 00:51:36,390 --> 00:51:37,473 >> HANNAH Blumberg: OK, malvarmeta. 1045 00:51:37,473 --> 00:51:40,980 Se io venas supre kun PHP aŭ HTML, aŭ iu el la aĵoj Maria kovrita, 1046 00:51:40,980 --> 00:51:42,700 ni povas ĉiam paŭzi. 1047 00:51:42,700 --> 00:51:46,430 Ni faras bonan sur fojo, tiel timinda. 1048 00:51:46,430 --> 00:51:48,770 Kaj ĝuste iri reen vere rapide al tiu, 1049 00:51:48,770 --> 00:51:51,010 se vi rigardas ĉiun pasinteco ĉijara ekzameno, tiu 1050 00:51:51,010 --> 00:51:54,120 suprenvenas either-- tie estas iuj HTML, klarigu diagramo. 1051 00:51:54,120 --> 00:51:58,380 Aŭ tie estas tio diagramo, fari iun HTML, tiel definitive praktiki tion. 1052 00:51:58,380 --> 00:52:01,500 Kaj tiam tio estas unu garantiita demando kiun vi povas akiri rajton. 1053 00:52:01,500 --> 00:52:02,000 Malvarmeta. 1054 00:52:02,000 --> 00:52:04,510 Do ni parolu pri Ĝavoskripto kaj kiel ĝi estas iomete 1055 00:52:04,510 --> 00:52:09,130 malsama de lingvoj kiel PHP kaj C, la du lingvoj ni vidis antaŭe. 1056 00:52:09,130 --> 00:52:10,780 Do numero oni, ĝi estas loze tajpita. 1057 00:52:10,780 --> 00:52:14,630 Tio estas kiel PHP, sed kontraste C. 1058 00:52:14,630 --> 00:52:15,890 >> Estas interpretita lingvo. 1059 00:52:15,890 --> 00:52:19,870 Denove, tio estas kiel PHP, kontraste C Kaj ĉi 1060 00:52:19,870 --> 00:52:24,630 tuj permesos nin use-- ĝi funkcias vere bele kun retpaĝoj. 1061 00:52:24,630 --> 00:52:28,350 Ĝi tuj permesos nin manipuli la enhavo kaj kiel aspektas 1062 00:52:28,350 --> 00:52:30,300 kaj kion ĝi faras. 1063 00:52:30,300 --> 00:52:32,330 >> Ni tuj vidos iom de Ajax. 1064 00:52:32,330 --> 00:52:36,140 Ĝi permesas nin komuniki nesamtempe kun malsamaj serviloj 1065 00:52:36,140 --> 00:52:37,950 kaj ricevu informon. 1066 00:52:37,950 --> 00:52:42,820 Kaj jen estas tio, ke vere disigas Ĝavoskripto de PHP kaj C 1067 00:52:42,820 --> 00:52:45,590 estas ke estas kliento-flanko. 1068 00:52:45,590 --> 00:52:49,860 Ambaŭ PHP kaj C estas tipe servilo-flanko. 1069 00:52:49,860 --> 00:52:51,960 >> Plejparte kaj preskaŭ tute kion 1070 00:52:51,960 --> 00:52:53,900 ni vidis, almenaŭ en tiu klaso, Ĝavoskripto 1071 00:52:53,900 --> 00:52:57,040 agas sur kliento-flanko, kiu signifas ke la navegador estas reale 1072 00:52:57,040 --> 00:52:58,597 respondeca kurante ĝin. 1073 00:52:58,597 --> 00:53:01,180 Kaj tio signifas ke ni ne bezonas interagi kun la servilo. 1074 00:53:01,180 --> 00:53:04,380 Do ĝi signifas ke ĝi povas esti multe pli rapida ĉar ĝi estas fakte nur estas Chrome, 1075 00:53:04,380 --> 00:53:10,420 ĝi estas Safaro, ĝi estas Firefox, kion ajn vi uzu reale kurante via Javascript. 1076 00:53:10,420 --> 00:53:12,290 >> Publiko: Kion nesinkrona signifas? 1077 00:53:12,290 --> 00:53:13,620 >> HANNAH Blumberg: Ha, kia does nesamtempe signifas? 1078 00:53:13,620 --> 00:53:14,250 Granda demando. 1079 00:53:14,250 --> 00:53:17,890 Nesamtempe means-- nu, la enhavo en kiu 1080 00:53:17,890 --> 00:53:22,140 ni uzas estas, okej, ni kreas retpaĝon 1081 00:53:22,140 --> 00:53:23,860 kaj ni devas akiri informojn. 1082 00:53:23,860 --> 00:53:28,250 Do kun la ekzemplo de la mashup, iuj informoj kiujn ni povus voli 1083 00:53:28,250 --> 00:53:30,580 Estas artikolo titoloj. 1084 00:53:30,580 --> 00:53:33,330 Nun, ni could-- unu opcion estas fari ĝin sinkrone 1085 00:53:33,330 --> 00:53:37,940 kaj tio signifas let estas halti, Iri akiri la artikolo, 1086 00:53:37,940 --> 00:53:41,275 akiri la artikolo reen, kaj tiam repagi, sed ke estus vere malrapida. 1087 00:53:41,275 --> 00:53:44,150 Tio estus malbona uzanto sperto ĉar vi simple sidas 1088 00:53:44,150 --> 00:53:46,630 tie atendis ion respondi. 1089 00:53:46,630 --> 00:53:50,020 >> Nesamtempe signifas ni daŭrigi rondirante nia afero, 1090 00:53:50,020 --> 00:53:52,529 pruntante la paĝo, kaj ni sendos ekstere peton 1091 00:53:52,529 --> 00:53:54,570 Tio estas speco de iranta okazas en la fono. 1092 00:53:54,570 --> 00:53:57,610 Mi pensas ke ni uzu la ekzemplon en prelego de vokanta Rob kaj dirante: 1093 00:53:57,610 --> 00:53:59,980 hej, ĉu vi povas rigardi ĉi supre por mi kaj reiri al mi, 1094 00:53:59,980 --> 00:54:02,870 kontraste al nur mi atendantaj sur la telefono. 1095 00:54:02,870 --> 00:54:07,020 Do nesamtempe signifas okazas fone eskapis nin 1096 00:54:07,020 --> 00:54:08,676 en paralela. 1097 00:54:08,676 --> 00:54:10,400 >> Granda demando. 1098 00:54:10,400 --> 00:54:11,830 Ion alian? 1099 00:54:11,830 --> 00:54:12,330 Granda. 1100 00:54:12,330 --> 00:54:15,020 Ni salti multe pli en nesinkrona petoj kun Ajaco. 1101 00:54:15,020 --> 00:54:18,287 >> Spektantaro: Ĉu JavaScript-- kie faras ĝi falas kun modelo-vido-regilo? 1102 00:54:18,287 --> 00:54:19,620 HANNAH Blumberg: Granda demando. 1103 00:54:19,620 --> 00:54:23,320 Kie faras Javascript falo kun modelo-vido-regilo? 1104 00:54:23,320 --> 00:54:23,930 Hm. 1105 00:54:23,930 --> 00:54:28,350 Mi supozas ke povas fall-- Do ni ne kutime 1106 00:54:28,350 --> 00:54:31,340 ŝatas squish ĝin ke paradigma, sed mi supozas ke mi dirus, 1107 00:54:31,340 --> 00:54:34,280 Bone, do Ĝavoskripto fakte tuj permesos 1108 00:54:34,280 --> 00:54:37,587 nin kolekti datumojn, interpreti datumojn, efektive plenumi 1109 00:54:37,587 --> 00:54:38,920 signifoplena aĵoj kun la datumoj. 1110 00:54:38,920 --> 00:54:41,100 En tiu maniero, ĝi estas tre kontrolo-simila. 1111 00:54:41,100 --> 00:54:43,900 >> Sed ĝi estas ankaŭ tuj permesos nin montri aferojn kaj presaĵo aferojn. 1112 00:54:43,900 --> 00:54:47,021 En tiu maniero, ĝi estas tre vido-simila. 1113 00:54:47,021 --> 00:54:47,520 Yeah. 1114 00:54:47,520 --> 00:54:51,710 Do ĝi estas speco de kiel PHP en kie povas ia esti ambaŭ. 1115 00:54:51,710 --> 00:54:53,330 Bona demando. 1116 00:54:53,330 --> 00:54:55,209 Ion alian? 1117 00:54:55,209 --> 00:54:56,000 Bone, awesome. 1118 00:54:56,000 --> 00:54:57,120 Moviĝante dekstren kune. 1119 00:54:57,120 --> 00:54:59,110 >> Do ni vidas ekzemplon de kiel ni povas uzi 1120 00:54:59,110 --> 00:55:02,250 JavaScript en unu el niaj ttt programoj. 1121 00:55:02,250 --> 00:55:05,680 Do mi pripensu index.html kun fasko de HTML. 1122 00:55:05,680 --> 00:55:08,800 Kaj la afero mi volas vin temigi estas tiu skripto etikedo. 1123 00:55:08,800 --> 00:55:13,280 Kaj tiu diras, OK, mi volas kuri iuj JavaScript kaj tie estas kie vivas. 1124 00:55:13,280 --> 00:55:15,400 Ĝi vivas en hello.js. 1125 00:55:15,400 --> 00:55:21,120 >> Kaj tre tre kiel CSS, ni povis metis JavaScript ene la HTML. 1126 00:55:21,120 --> 00:55:24,000 Kial povus ni volas disigi gxin? 1127 00:55:24,000 --> 00:55:24,500 Yeah. 1128 00:55:24,500 --> 00:55:25,486 >> Publiko: Easier reskribi? 1129 00:55:25,486 --> 00:55:26,402 >> HANNAH Blumberg: Yeah. 1130 00:55:26,402 --> 00:55:28,450 Ĝi facilas uzi trans malsamaj retpaĝoj. 1131 00:55:28,450 --> 00:55:29,980 Ĝi tenas aferojn purigilon. 1132 00:55:29,980 --> 00:55:32,090 Estas nur bona praktiko. 1133 00:55:32,090 --> 00:55:32,590 Imponega. 1134 00:55:32,590 --> 00:55:33,930 Bona respondo. 1135 00:55:33,930 --> 00:55:36,690 Tiel bona, Do tiu tuj esti nia index.html. 1136 00:55:36,690 --> 00:55:39,430 Kaj poste malsupren tie estas nia malgrandaĵeto JavaScript dosiero. 1137 00:55:39,430 --> 00:55:42,410 >> Kaj ĉiuj diras estas atentigo Saluton, mondo. 1138 00:55:42,410 --> 00:55:46,040 Do kio okazas estas kiam ĉi paĝon renders-- 1139 00:55:46,040 --> 00:55:49,680 do se vi iros al kiom paĝaro ĉi is-- ĉiuj kiuj okazos 1140 00:55:49,680 --> 00:55:53,330 Estas ĝi tuj diri, OK, mi estas tuj ekkuros tiu kodo JavaScript. 1141 00:55:53,330 --> 00:55:56,370 Kaj tiu kodo JavaScript nur diras atentigo Saluton, mondo. 1142 00:55:56,370 --> 00:55:59,090 Do mi tuj ricevas tiun amika iom popo-up. 1143 00:55:59,090 --> 00:56:00,360 >> Cool? 1144 00:56:00,360 --> 00:56:04,746 Tio estas speco de kiel nia tre unua Ĝavoskripto programo, nia Saluton, mondo. 1145 00:56:04,746 --> 00:56:07,690 1146 00:56:07,690 --> 00:56:12,190 Ni rigardu iomete pli da pri kio la sintakso de JavaScript aspektas. 1147 00:56:12,190 --> 00:56:16,330 Kaj specife, ni komparu ĝin al C kaj PHP, kiun ni vidis antaŭe. 1148 00:56:16,330 --> 00:56:20,610 >> En JavaScript, ni tuj devas var, la nomo de la variablo, kaj tiam 1149 00:56:20,610 --> 00:56:21,690 lia reala valoro. 1150 00:56:21,690 --> 00:56:26,170 Kaj ni ne specifi tipo, nur kiel en PHP, sed tre malsimilaj en C. 1151 00:56:26,170 --> 00:56:28,850 Do ekzemple, se ni volus stoki la valoron 50, 1152 00:56:28,850 --> 00:56:32,490 en C, ni devus diri, hej, C, mi volas entjero, 1153 00:56:32,490 --> 00:56:35,076 Mi tuj vokos ŝin I, kaj ĝia valoro estas 50. 1154 00:56:35,076 --> 00:56:36,450 En PHP, estas iomete pli facila. 1155 00:56:36,450 --> 00:56:41,880 Ni diras, hey, mi volas variablon nomis i kaj ĝia valoro estas 50. 1156 00:56:41,880 --> 00:56:45,890 Tre simile, en JavaScript, ni diru hey, mi volas variablo nomis i, 1157 00:56:45,890 --> 00:56:47,080 ĝia valoro estas 50. 1158 00:56:47,080 --> 00:56:52,140 Ĉiu posta tempo ke mi uzas Mi, mi ne bezonas skribi var. 1159 00:56:52,140 --> 00:56:53,810 Estas nur mi de tiu punkto sur. 1160 00:56:53,810 --> 00:56:58,660 En la sama maniero, en C, kie iam ni diru int i, ni simple uzu i. 1161 00:56:58,660 --> 00:57:00,340 Cool? 1162 00:57:00,340 --> 00:57:01,800 Bone. 1163 00:57:01,800 --> 00:57:03,710 >> Pasante al bukloj, feliĉe, tiuj preskaŭ 1164 00:57:03,710 --> 00:57:06,720 rigardas exactly-- Mi opinias ilin ĝuste la sama kiel kio 1165 00:57:06,720 --> 00:57:09,799 masxojn tuj similos en io kiel C kie via por buklo 1166 00:57:09,799 --> 00:57:11,840 tuj havos tri parts-- inicialización, 1167 00:57:11,840 --> 00:57:13,640 kondiĉo, kaj ĝisdatigon. 1168 00:57:13,640 --> 00:57:15,340 Dum ciklo, ĝi aspektas precize sama. 1169 00:57:15,340 --> 00:57:16,390 Ni nur doni kondiĉon. 1170 00:57:16,390 --> 00:57:18,264 >> Kaj do dum buklo, denove, precize la sama. 1171 00:57:18,264 --> 00:57:20,190 Ni donas ĝin kondiĉo. 1172 00:57:20,190 --> 00:57:24,510 Diru mi volis persisti over-- Mi volis fari ion kvinfoje. 1173 00:57:24,510 --> 00:57:27,840 En C, ni povus skribi por prepar i egalas 0. 1174 00:57:27,840 --> 00:57:30,480 i estas malpli ol 5, i ++. 1175 00:57:30,480 --> 00:57:34,240 Nur diferenco, en JavaScript, anstataŭ diri int i egalas 0, 1176 00:57:34,240 --> 00:57:36,820 ni diras var i egalas 0. 1177 00:57:36,820 --> 00:57:38,370 Bela. 1178 00:57:38,370 --> 00:57:41,320 Tio estas la sola diferenco. 1179 00:57:41,320 --> 00:57:43,200 Demandojn pri ajna el tio? 1180 00:57:43,200 --> 00:57:44,160 Jes. 1181 00:57:44,160 --> 00:57:48,480 >> Publiko: Do ​​en PHP, ĝi estas la sama afero, escepte sed kiel variablo? 1182 00:57:48,480 --> 00:57:49,564 Aŭ estis ke var ekzemplo? 1183 00:57:49,564 --> 00:57:50,480 HANNAH Blumberg: Yeah. 1184 00:57:50,480 --> 00:57:52,310 Do en PHP, ĝi tuj esti dolaro signo. 1185 00:57:52,310 --> 00:57:59,450 Do ĝi estas tuj $ i egalas 0, $ i estas malpli ol 5, $ i ++. 1186 00:57:59,450 --> 00:58:02,490 Granda demando. 1187 00:58:02,490 --> 00:58:04,570 >> Nun ni parolu pri funkcio deklaroj. 1188 00:58:04,570 --> 00:58:07,010 En C, kiam ni deklaris funkcio, ni donis al ĝi nomon 1189 00:58:07,010 --> 00:58:08,490 kaj ni donis gxin iuj parametroj. 1190 00:58:08,490 --> 00:58:10,670 Kaj komence, ni skribis la tipo. 1191 00:58:10,670 --> 00:58:12,440 En JavaScript, ĉiuj ni devas fari estas skribi 1192 00:58:12,440 --> 00:58:15,080 la ŝlosilvorto funkcio kiu diras, hej, Ĝavoskripto, 1193 00:58:15,080 --> 00:58:16,570 Mi pri difini funkcion. 1194 00:58:16,570 --> 00:58:18,520 >> En tiu kazo, ĝi havas nomon sumo. 1195 00:58:18,520 --> 00:58:20,820 Kaj ĝi prenas du argumentojn, x kaj y. 1196 00:58:20,820 --> 00:58:23,280 Rimarku ke ni ne zorgas pri la tipoj de x kaj y. 1197 00:58:23,280 --> 00:58:26,280 Kaj ĝuste kiel C, ni havi tiu ŝlosilvorto reveno, 1198 00:58:26,280 --> 00:58:29,140 do ni povas fari ion kiel reveno x kaj y. 1199 00:58:29,140 --> 00:58:32,540 >> Kaj nun unufoje ni skribis tiun unuan funkcio, ni povas uzi sumon anywhere. 1200 00:58:32,540 --> 00:58:34,740 Kaj tio estas tute bone. 1201 00:58:34,740 --> 00:58:37,530 Unu vere malvarmeta aĵo ĉirkaŭ JavaScript kiu estas tre kontraste C 1202 00:58:37,530 --> 00:58:40,770 estas ke funkcioj povas esti traktata kiel valoroj. 1203 00:58:40,770 --> 00:58:43,895 Do ni povas fari ion kiel ĉi tie kie supozeble mi kovri ĉi up-- 1204 00:58:43,895 --> 00:58:46,400 Mi kovris supre la var sum part-- kaj ni ĵus diris 1205 00:58:46,400 --> 00:58:49,850 funkcio xy egalas reveno x plus y. 1206 00:58:49,850 --> 00:58:52,140 >> Tion estus nomita anonima funkcio. 1207 00:58:52,140 --> 00:58:53,920 Estas funkcio sen nomo. 1208 00:58:53,920 --> 00:58:56,290 Dum tiu diras funkcio sumo, bla, bla, bla, 1209 00:58:56,290 --> 00:58:59,340 tiu estus nur diru funkcio. 1210 00:58:59,340 --> 00:59:02,020 Sed nun eĉ se mi havas tiu anonima funkcio, 1211 00:59:02,020 --> 00:59:03,630 ke funkcio estas vere nur valoro. 1212 00:59:03,630 --> 00:59:05,160 Ni povas trakti ĝin kiel valoro. 1213 00:59:05,160 --> 00:59:10,180 >> Do ni povas konservi ĝin en variablo la sama Tiel ni povis stoki 50 en variablo. 1214 00:59:10,180 --> 00:59:13,870 Do ni povas diri, OK, Mi volas variablo, ĝi nomiĝas sumo, 1215 00:59:13,870 --> 00:59:16,011 kaj estas tiu funkcio. 1216 00:59:16,011 --> 00:59:18,760 Tiuj du aferoj estas reale tuj fari la ĝustan samon, 1217 00:59:18,760 --> 00:59:21,576 sed la sintakso estas iom malsamaj kaj speco de amuza noto. 1218 00:59:21,576 --> 00:59:22,076 Yeah. 1219 00:59:22,076 --> 00:59:25,548 >> Publiko: Do ​​vi povus voki funkcio kiu estis anonima dirante, 1220 00:59:25,548 --> 00:59:28,244 sumo krampoj 2, 5? 1221 00:59:28,244 --> 00:59:29,160 HANNAH Blumberg: Yeah. 1222 00:59:29,160 --> 00:59:32,280 Vi povas voki ĉi anonima funkcio en la sama maniero. 1223 00:59:32,280 --> 00:59:33,350 Vi farus sum (2, 5) ;. 1224 00:59:33,350 --> 00:59:36,180 1225 00:59:36,180 --> 00:59:38,200 Tio estus tute bone. 1226 00:59:38,200 --> 00:59:41,575 >> Se mi ne faras var sumo egalas funkcio, se mi nur forviŝita 1227 00:59:41,575 --> 00:59:45,480 this-- Mi scias ke estas sur mia mano, sed ŝajnigi mi forviŝita this-- tiam 1228 00:59:45,480 --> 00:59:46,964 ke funkcio estas speco de simple malaperis. 1229 00:59:46,964 --> 00:59:49,630 Vi neniam povas uzi ĝin denove ĉar vi ne havas nomon por ĝi. 1230 00:59:49,630 --> 00:59:53,497 Estas malfacile rilati al io vi ne scias kiel nomi. 1231 00:59:53,497 --> 00:59:54,080 Bona demando. 1232 00:59:54,080 --> 00:59:54,580 Yeah. 1233 00:59:54,580 --> 00:59:59,580 >> Spektantaro: Ĉu vi povas referenci sumon en aliaj lokoj kun la valoro de x plus y? 1234 00:59:59,580 --> 01:00:01,940 >> HANNAH Blumberg: Ĉu vi povas referenco sum en aliaj lokoj 1235 01:00:01,940 --> 01:00:03,360 kun la valoro x plus y? 1236 01:00:03,360 --> 01:00:05,130 Mi ne estas tute certa kio vi signifas. 1237 01:00:05,130 --> 01:00:10,582 >> Publiko: Do ​​via pasinta duon-anonima funkcio estas sumo egalas al tiu 1238 01:00:10,582 --> 01:00:14,452 anonima funkcio, do sumo estas nun variablo kiu vi can-- 1239 01:00:14,452 --> 01:00:15,410 HANNAH Blumberg: Dekstra. 1240 01:00:15,410 --> 01:00:18,980 Do sumo estas la variablo, sed estas actually-- 1241 01:00:18,980 --> 01:00:23,770 do sumo estas variablo kies valoro estas la funkcio. 1242 01:00:23,770 --> 01:00:27,030 Do ĝi estas funkcio, kiu estas speco de stranga afero envolvi vian kapon ĉirkaŭe 1243 01:00:27,030 --> 01:00:29,880 ekde ni estis ludante kun C kaj vi povas fari tion en C. 1244 01:00:29,880 --> 01:00:32,679 Sed nun ni povas nomi elprenu la sammaniere ni povus nomi sumo tie. 1245 01:00:32,679 --> 01:00:33,220 Publiko: OK. 1246 01:00:33,220 --> 01:00:33,970 HANNAH Blumberg: Yeah. 1247 01:00:33,970 --> 01:00:34,553 Bona demando. 1248 01:00:34,553 --> 01:00:35,438 Yeah. 1249 01:00:35,438 --> 01:00:39,862 >> Publiko: Do ​​ni ne uzu la prototipoj en PHP aŭ JavaScript? 1250 01:00:39,862 --> 01:00:42,070 HANNAH Blumberg: Ne, ni ne bezonas uzi prototipoj, 1251 01:00:42,070 --> 01:00:43,880 speciale en JavaScript. 1252 01:00:43,880 --> 01:00:49,380 Do unu malbona praktiko, kio mi estas dironta ke vi ne devus fari 1253 01:00:49,380 --> 01:00:52,620 estas vi ne devas skribi var i = 50. 1254 01:00:52,620 --> 01:00:54,840 Vi povus simple komenci fari i = 50. 1255 01:00:54,840 --> 01:00:57,490 Kaj simple fari i tutmonda variablo. 1256 01:00:57,490 --> 01:01:00,550 >> Ĝi estas tre malbona praktiko Neniam diru eksplicite var i, 1257 01:01:00,550 --> 01:01:01,800 sed ĝi estas io vi povas fari. 1258 01:01:01,800 --> 01:01:03,591 La interpretisto ne tuj krias al vi. 1259 01:01:03,591 --> 01:01:05,920 JavaScript estas sufiĉe similaj, vi povas fari kion vi volas. 1260 01:01:05,920 --> 01:01:09,301 1261 01:01:09,301 --> 01:01:09,800 Ho, pardonon. 1262 01:01:09,800 --> 01:01:10,300 Ekzistas du. 1263 01:01:10,300 --> 01:01:12,150 En la oranĝa pantalono. 1264 01:01:12,150 --> 01:01:13,190 Antaŭen. 1265 01:01:13,190 --> 01:01:14,390 >> Spektantaro: Ne, vi iru unue. 1266 01:01:14,390 --> 01:01:16,765 >> Spektantaro: Ne, mi nur diras Mi ne havas mian manon supren. 1267 01:01:16,765 --> 01:01:20,248 1268 01:01:20,248 --> 01:01:20,748 BONE. 1269 01:01:20,748 --> 01:01:26,604 Do se vi estus nomi ke unua fojo, nun resumi, 1270 01:01:26,604 --> 01:01:29,864 Ni nomas ĝin la sama vojo, x, y, kiel ĉiu ununura tempo? 1271 01:01:29,864 --> 01:01:30,780 HANNAH Blumberg: Yeah. 1272 01:01:30,780 --> 01:01:32,572 Do tiuj du esence fari la samon. 1273 01:01:32,572 --> 01:01:35,113 Publiko: Kaj kio estas la avantaĝo uzi unu aŭ la alia? 1274 01:01:35,113 --> 01:01:37,500 HANNAH Blumberg No avantaĝon uzi unu aŭ la alia. 1275 01:01:37,500 --> 01:01:40,080 Mi nur volis montri al vi du malsamajn pecojn de sintakso. 1276 01:01:40,080 --> 01:01:42,770 Multaj tempoj kie anonima funkcioj fari havi celon 1277 01:01:42,770 --> 01:01:48,220 estas se la argumento al alia funkcio devus esti funkcio. 1278 01:01:48,220 --> 01:01:50,600 Kaj ni vidos ke en nur dua kun Ajaco. 1279 01:01:50,600 --> 01:01:53,577 >> Do se tio ne faras ajnan senton, stoki ĝin en la malantaŭo de via kapo. 1280 01:01:53,577 --> 01:01:55,660 Jen kie anonima funkcio povas esti utila 1281 01:01:55,660 --> 01:01:58,284 ĉar ĝi ne estas vere valoras donante al ĝi nomon ekde ni ĵus 1282 01:01:58,284 --> 01:01:59,443 tuj uzi ĝin unufoje. 1283 01:01:59,443 --> 01:02:00,370 Yeah. 1284 01:02:00,370 --> 01:02:03,635 >> Publiko: Se x kaj y ŝanĝo poste sur, estos Resume ŝanĝi tiel? 1285 01:02:03,635 --> 01:02:06,510 HANNAH Blumberg: Se x kaj y ŝanĝo poste, estos Resume ŝanĝi tiel? 1286 01:02:06,510 --> 01:02:08,840 Do tiu estas fakte mi opinias ion jen, 1287 01:02:08,840 --> 01:02:12,260 denove, gxi nur sentas tre malsama de C. Tio ne estas valoro. 1288 01:02:12,260 --> 01:02:13,620 Ĝi ne estas 5. 1289 01:02:13,620 --> 01:02:15,550 Estas nur la funkcio mem. 1290 01:02:15,550 --> 01:02:19,110 Tuj, kiam vi donos ĝin parametroj, tiam vi reale kalkuli valoron. 1291 01:02:19,110 --> 01:02:21,193 >> MARIA ZLATKOVA: Kaj poste vi povas nomi la funkcion 1292 01:02:21,193 --> 01:02:23,272 kaj uzi ĝin por akiri iun valoron. 1293 01:02:23,272 --> 01:02:24,230 HANNAH Blumberg: Dekstra. 1294 01:02:24,230 --> 01:02:25,250 Ekzakte. 1295 01:02:25,250 --> 01:02:25,863 Yeah. 1296 01:02:25,863 --> 01:02:27,946 >> Publiko: Do ​​se vi nur stoki ĝin en la variablo, 1297 01:02:27,946 --> 01:02:31,430 kiel var x egalas sumo de du values-- 1298 01:02:31,430 --> 01:02:32,420 >> HANNAH Blumberg: Yeah. 1299 01:02:32,420 --> 01:02:35,320 Do vi povus simple fari var sum egalas sumo de du valoroj. 1300 01:02:35,320 --> 01:02:37,670 Yeah. 1301 01:02:37,670 --> 01:02:38,680 Aliajn demandojn? 1302 01:02:38,680 --> 01:02:39,642 Yeah. 1303 01:02:39,642 --> 01:02:42,047 >> Publiko: Sed se tiel konfuzi sumo kaj sumo? 1304 01:02:42,047 --> 01:02:45,062 Kiel se vi nomas vian variablo sumo, ĉu vi nomas la funkcio sumo? 1305 01:02:45,062 --> 01:02:45,895 HANNAH Blumberg: Mm. 1306 01:02:45,895 --> 01:02:46,395 Mm. 1307 01:02:46,395 --> 01:02:51,253 Se vi faris ion kiel, sumo egalas sumo 2, 5? 1308 01:02:51,253 --> 01:02:53,170 >> Publiko: Yeah. 1309 01:02:53,170 --> 01:02:56,465 >> HANNAH Blumberg: mi kredas ke estus anstataŭigi la valoro de sumo. 1310 01:02:56,465 --> 01:02:59,290 Do alia interesa afero pri Ĝavoskripto 1311 01:02:59,290 --> 01:03:02,950 estas ke ununura variablo povas preni sur faskon de malsamaj tipoj. 1312 01:03:02,950 --> 01:03:03,790 Malbona praktiko. 1313 01:03:03,790 --> 01:03:06,280 Vi devus ne fari ion kiel kion vi ĵus diris. 1314 01:03:06,280 --> 01:03:10,240 >> Sed en C, se i estas fiksita egala al entjero, 1315 01:03:10,240 --> 01:03:13,570 Ni scias ke ĝi estas neniam okazos al ŝnuro. 1316 01:03:13,570 --> 01:03:15,670 Tiu ne estas la kazo en JavaScript. 1317 01:03:15,670 --> 01:03:17,770 Jes, bona demando. 1318 01:03:17,770 --> 01:03:20,151 Ion alian? 1319 01:03:20,151 --> 01:03:20,650 Bone. 1320 01:03:20,650 --> 01:03:21,850 Farante bone ĝustatempe. 1321 01:03:21,850 --> 01:03:23,050 Subtenante iras. 1322 01:03:23,050 --> 01:03:25,200 Bone. 1323 01:03:25,200 --> 01:03:27,780 >> Se ni rigardas tabelo en JavaScript, jen 1324 01:03:27,780 --> 01:03:30,250 rapida ekzemplo de tabelo de kordoj. 1325 01:03:30,250 --> 01:03:31,967 Kaj tabeloj povas kreski dinamike. 1326 01:03:31,967 --> 01:03:33,675 Ili ne havas fiksa grandeco same 1327 01:03:33,675 --> 01:03:37,990 ke ili faras en C. Ni povas aliri la elementoj kun nur la rektaj krampoj. 1328 01:03:37,990 --> 01:03:41,720 >> Tio aspektas tre kiel PHP kaj multon kiel C, kie ni povas diri, en tiu kazo, 1329 01:03:41,720 --> 01:03:48,360 se mi volus la vorton Ĝavoskripto, mi volus ĉu arr kvadrataj krampoj kun 0, 1, 2. 1330 01:03:48,360 --> 01:03:51,450 1331 01:03:51,450 --> 01:03:55,390 Kaj tiam se vi memoras en C kiam ni volis akiri la longo de tabelo, 1332 01:03:55,390 --> 01:03:56,820 ĝi estis vere ĝena. 1333 01:03:56,820 --> 01:03:58,460 Sed en JavaScript, súper facila. 1334 01:03:58,460 --> 01:03:59,910 Ĉiuj ni, .length. 1335 01:03:59,910 --> 01:04:01,120 Donas la longoj. 1336 01:04:01,120 --> 01:04:01,892 Jen ĝi. 1337 01:04:01,892 --> 01:04:03,140 >> Publiko: Jen simpla. 1338 01:04:03,140 --> 01:04:05,306 >> HANNAH Blumberg: Yeah, faras vian vivon tre pli facila. 1339 01:04:05,306 --> 01:04:08,950 1340 01:04:08,950 --> 01:04:11,560 OK, object-- ne ekzistas. 1341 01:04:11,560 --> 01:04:15,480 Objektoj en JavaScript sento tre kiel structs en C 1342 01:04:15,480 --> 01:04:18,280 kaj asocia arrays en PHP. 1343 01:04:18,280 --> 01:04:20,270 Do kion ni vidis Multaj estas JSON, kio 1344 01:04:20,270 --> 01:04:23,150 starejoj por JavaScript Objekto Skribmaniero. 1345 01:04:23,150 --> 01:04:25,550 Kaj ĝi estas resume vojo de strukturi niajn datumojn. 1346 01:04:25,550 --> 01:04:27,880 >> Do ni vidas ekzemplon, probable la plej facila. 1347 01:04:27,880 --> 01:04:32,540 Do jen ekzemplo de objekto kiu stokas la klaso, CS50. 1348 01:04:32,540 --> 01:04:37,790 Kaj kiam mi diras klaso, mi signifas kompreneble Ne like-- yeah, la kurso, CS50. 1349 01:04:37,790 --> 01:04:40,730 Kaj vi vidos ke ĉio en la objekto 1350 01:04:40,730 --> 01:04:43,526 tuj esti haltigataj en buklaj krampoj. 1351 01:04:43,526 --> 01:04:48,260 >> Kaj ni komencas asocii kampo nomoj aŭ klavoj kun la malsamaj valoroj. 1352 01:04:48,260 --> 01:04:52,920 Do vi povas komenci al vidi kiel ĉi tiu speco de sentas kiel asocieca tabelo en PHP. 1353 01:04:52,920 --> 01:04:57,450 Do ni tuj asocias la kampo aŭ la ŝlosila nomo, kompreneble, kun la ŝnuro, 1354 01:04:57,450 --> 01:04:58,510 CS50. 1355 01:04:58,510 --> 01:04:59,940 >> Ni tuj devas instrukciisto. 1356 01:04:59,940 --> 01:05:00,940 Ni tuj devas TFS. 1357 01:05:00,940 --> 01:05:05,240 Ni tuj devas nombro de psets kaj ni tuj registris. 1358 01:05:05,240 --> 01:05:10,720 Kaj unu malvarmeta afero noti estas ĉiuj tio havas malsamajn tipojn, 1359 01:05:10,720 --> 01:05:12,020 kaj tio estas tute bone. 1360 01:05:12,020 --> 01:05:15,330 >> Ĝi estas bone por objekto, fakte, ĝi estas probable atendis por objekto 1361 01:05:15,330 --> 01:05:19,620 havi kombinaĵon de kordoj kaj nombrojn kaj Booleans kaj tabeloj 1362 01:05:19,620 --> 01:05:23,420 kaj kion ajn alian vi povus volas havi en vian celon. 1363 01:05:23,420 --> 01:05:28,570 Kaj rimarku ke ĉi tiuj tuj estos la nomoj aŭ la ŝlosilojn, kaj tiam ni ĵus 1364 01:05:28,570 --> 01:05:30,300 starigis ĝin egala kun iom dupunkto. 1365 01:05:30,300 --> 01:05:32,015 >> Publiko: Kio ĝuste faras JSON signifas? 1366 01:05:32,015 --> 01:05:33,890 HANNAH Blumberg: Kio ĝuste does JSON signifas? 1367 01:05:33,890 --> 01:05:36,470 JSON ĝuste staras por JavaScript Objekto Skribmaniero. 1368 01:05:36,470 --> 01:05:38,430 Estas nur maniero de formatado. 1369 01:05:38,430 --> 01:05:40,040 Yeah. 1370 01:05:40,040 --> 01:05:41,800 Estas maniero de formatado niaj datumoj. 1371 01:05:41,800 --> 01:05:43,620 >> En C, estas structs. 1372 01:05:43,620 --> 01:05:45,800 En PHP, estas asociaj tabeloj. 1373 01:05:45,800 --> 01:05:47,120 En JavaScript, ni havas celojn. 1374 01:05:47,120 --> 01:05:48,969 >> Publiko: Do ​​CS50 estas objekto? 1375 01:05:48,969 --> 01:05:51,010 HANNAH Blumberg: CS50 estas la celo en ĉi tiu kazo. 1376 01:05:51,010 --> 01:05:54,830 1377 01:05:54,830 --> 01:05:57,880 Nun, kiel do ni efektive aliro tiuj kampoj aŭ ŝanĝi tiujn kampojn. 1378 01:05:57,880 --> 01:06:03,920 Ekzemple, supozi ni decidis ke vi deziris unu malpli pset ĉi semestro. 1379 01:06:03,920 --> 01:06:06,300 Anstataŭ naŭ, ni estas simple tuj havi ok. 1380 01:06:06,300 --> 01:06:08,240 Kiel ni ŝanĝu tion? 1381 01:06:08,240 --> 01:06:09,436 >> Ho, misfunkcias. 1382 01:06:09,436 --> 01:06:11,060 Ekzistas du manieroj kiuj ni povas fari tion. 1383 01:06:11,060 --> 01:06:13,490 Numero oni estas kun la skalara skribmaniero kaj numero du 1384 01:06:13,490 --> 01:06:15,750 estas kun la kvadrata krampo skribmaniero. 1385 01:06:15,750 --> 01:06:19,720 Do, ekzemple, se mi volis ŝanĝi aŭ aliro 1386 01:06:19,720 --> 01:06:26,820 la psets kampo en nia CS50 objekto, kion mi farus estas CS50.psets, 1387 01:06:26,820 --> 01:06:30,770 tial la nomo de la objekto skalara la nomo de la kampo aŭ la klavo. 1388 01:06:30,770 --> 01:06:37,120 >> Tre simile, ĝi estas precize ekvivalenta fari CS50, kaj tiam 1389 01:06:37,120 --> 01:06:42,050 en kvadrataj krampoj, psets. 1390 01:06:42,050 --> 01:06:42,837 Cool? 1391 01:06:42,837 --> 01:06:44,298 Yeah. 1392 01:06:44,298 --> 01:06:47,707 >> Publiko: Do ​​estas JSON teknike JavaScript ankoraŭ, 1393 01:06:47,707 --> 01:06:51,814 kvankam en la psets ni apartigi ĝin [inaudible]? 1394 01:06:51,814 --> 01:06:52,730 HANNAH Blumberg: Sure. 1395 01:06:52,730 --> 01:06:56,290 Do la demando estas, estas JavaScript kaj JSON ekvivalentaj? 1396 01:06:56,290 --> 01:07:00,750 Do JSON estas skribmaniero, esence la vojo ni admonu eksteren 1397 01:07:00,750 --> 01:07:02,700 objekto de Ĝavoskripto. 1398 01:07:02,700 --> 01:07:05,190 Do ili ne estas precize la sama. 1399 01:07:05,190 --> 01:07:08,950 >> Mi dirus Ĝavoskripto, tie estas celoj en JavaScript. 1400 01:07:08,950 --> 01:07:12,590 JSON prenas tiuj celoj kaj presas ilin kaj videbligas ilin 1401 01:07:12,590 --> 01:07:15,160 aŭ stokas ilin en bela maniero. 1402 01:07:15,160 --> 01:07:18,110 Do JSON estas ne programlingvo lingvo la maniero ke JavaScript estas. 1403 01:07:18,110 --> 01:07:20,900 Estas nur la skribmaniero por niajn celojn en JavaScript. 1404 01:07:20,900 --> 01:07:21,400 Yeah. 1405 01:07:21,400 --> 01:07:24,144 >> Publiko: Do ​​kio precize [Inaudible] kompletigi? 1406 01:07:24,144 --> 01:07:25,060 HANNAH Blumberg: Sure. 1407 01:07:25,060 --> 01:07:27,727 Do tiu fakte nenion faras. 1408 01:07:27,727 --> 01:07:28,935 Tiu estas nur vojo por aliri. 1409 01:07:28,935 --> 01:07:31,393 Do diru ni volis ŝanĝi la nombro de problemo aroj 1410 01:07:31,393 --> 01:07:32,450 de naŭ al ok. 1411 01:07:32,450 --> 01:07:34,383 Kion ni faras estas fari ion kiel CS50.psets = 8 ;. 1412 01:07:34,383 --> 01:07:38,500 1413 01:07:38,500 --> 01:07:39,400 >> Jes, granda demando. 1414 01:07:39,400 --> 01:07:40,733 Tiu estas nur por montri al vi sintakso. 1415 01:07:40,733 --> 01:07:43,620 Ne vere fari ion utilan. 1416 01:07:43,620 --> 01:07:46,085 Demandojn? 1417 01:07:46,085 --> 01:07:48,210 Moviĝante dekstren kune. 1418 01:07:48,210 --> 01:07:51,960 >> Do ni rigardu rapidan ekzemplon de kiel Ĝavoskripto funkcias ĉar mi diris al vi ke 1419 01:07:51,960 --> 01:07:55,170 faras cxiujn tiujn aferojn kaj malvarmeta nin permesas modifi retpaĝoj. 1420 01:07:55,170 --> 01:07:56,970 Ni fakte vidi ĝin en ago. 1421 01:07:56,970 --> 01:07:59,850 Do prenu, ekzemple, ĉi HTML dosiero. 1422 01:07:59,850 --> 01:08:04,350 >> Kaj la afero mi volas vin por fokusigi estas tiu aparta etikedo, kiu estas butono, 1423 01:08:04,350 --> 01:08:06,182 kun identigilo search_button. 1424 01:08:06,182 --> 01:08:08,670 Estas nur sur la paĝo. 1425 01:08:08,670 --> 01:08:10,690 Do nun ni vidu kion ni efektive povas fari. 1426 01:08:10,690 --> 01:08:12,560 >> Nu, supozu kiam vi alklakas tiun butonon, 1427 01:08:12,560 --> 01:08:16,010 ni volas fari alert-- vi klakis la butonon. 1428 01:08:16,010 --> 01:08:17,840 Ni vidu kiel ni povas fari tion. 1429 01:08:17,840 --> 01:08:23,869 Do window.onload-- ĉi ne estas io ke vi vidis en klaso, do 1430 01:08:23,869 --> 01:08:26,180 ne bezonos scii ĝin por la kvizo. 1431 01:08:26,180 --> 01:08:33,660 Sed ĉi esence diras, OK, alvoko tiun funkcion kiam la fenestro ŝarĝoj. 1432 01:08:33,660 --> 01:08:35,080 >> Do jen nur speco de instalinstrukciojn kodo. 1433 01:08:35,080 --> 01:08:36,390 Ne multe maltrankvilas pri tio. 1434 01:08:36,390 --> 01:08:39,170 Kion mi volas vin por fokusigi estas en tie. 1435 01:08:39,170 --> 01:08:44,020 Ni diru var Searchbutton egalas document.getElementByID search_button. 1436 01:08:44,020 --> 01:08:46,450 >> Do kiel vi povus diveni, kion tiu faras estas ĝi diras, 1437 01:08:46,450 --> 01:08:50,920 OK, iru trovi la elemento kun ID search_button. 1438 01:08:50,920 --> 01:08:52,790 Kaj nun ni havas tion fakta ero kaj mi estas 1439 01:08:52,790 --> 01:08:56,279 tuj stoki ĝin en ŝanĝiĝema Searchbutton. 1440 01:08:56,279 --> 01:09:00,651 Nun ni povas efektive uzi tiun elementon kaj ŝanĝi ĝin, aŭ aliri ĝiajn valorojn, 1441 01:09:00,651 --> 01:09:01,359 tiaĵojn. 1442 01:09:01,359 --> 01:09:04,649 Ni povas vere komenci okupi kun la retpaĝo. 1443 01:09:04,649 --> 01:09:10,330 >> Do jen mi diras, OK, nun ke mi havas tiun butonon, kiam klakis, 1444 01:09:10,330 --> 01:09:12,859 nomas tiun anoniman funkcion. 1445 01:09:12,859 --> 01:09:16,811 Do tiu estas kie anonima funkcioj fariĝi utila. 1446 01:09:16,811 --> 01:09:18,060 Kaj kion faras la funkcion fari? 1447 01:09:18,060 --> 01:09:20,529 Nu, ĝi nur nomas ĉi atentigo funkcio kaj ĝi diras, 1448 01:09:20,529 --> 01:09:22,910 vi klakis la Serĉu butonon. 1449 01:09:22,910 --> 01:09:29,670 >> Do kio okazos, se mi iros al kie ajn ĉi HTML vivas kaj mi klakas la butonon, 1450 01:09:29,670 --> 01:09:33,729 Mi havos imago iom atentigo kiu diras vi klakis la butonon. 1451 01:09:33,729 --> 01:09:40,710 Do la aferoj temigi here-- document.getElementByID 1452 01:09:40,710 --> 01:09:44,960 ricevas apartan HTML elemento kun la donita ID. 1453 01:09:44,960 --> 01:09:48,529 Kaj nun ni povas fiksi Kio devus okazi kiam 1454 01:09:48,529 --> 01:09:50,702 tiu aparta elemento estas klakis. 1455 01:09:50,702 --> 01:09:52,670 >> Publiko: Ni devas meti ĉiuj ke en? 1456 01:09:52,670 --> 01:09:53,162 >> HANNAH Blumberg: Pardonu? 1457 01:09:53,162 --> 01:09:55,130 >> Spektantaro: Ĉu ni devas fizike kodigi ĉiujn ke? 1458 01:09:55,130 --> 01:09:56,340 >> HANNAH Blumberg: Ĉu ni devas fizike kodigi ĉiujn ke? 1459 01:09:56,340 --> 01:09:56,839 Jes. 1460 01:09:56,839 --> 01:09:58,120 Tio estas ja speco de ĝenaj? 1461 01:09:58,120 --> 01:10:00,032 Jen multan kodon. 1462 01:10:00,032 --> 01:10:01,574 >> Spektantaro: Vi povus importi ion. 1463 01:10:01,574 --> 01:10:02,532 HANNAH Blumberg: Dekstra. 1464 01:10:02,532 --> 01:10:03,610 Ni povus uzi ion. 1465 01:10:03,610 --> 01:10:08,140 Kaj en particular-- Ho, estas rakontanta min mi devas instrui sekcio. 1466 01:10:08,140 --> 01:10:11,061 En aparta, ni uzi la bibliotekon jQuery, 1467 01:10:11,061 --> 01:10:13,060 ĉar tio estis vere longaj kaj vere ĝena 1468 01:10:13,060 --> 01:10:16,860 kaj mi volas povi simpligi gxin kaj fari ĝin pli mallongaj kaj pli facile skribi. 1469 01:10:16,860 --> 01:10:19,810 >> Do jQuery estas JavaScript biblioteko. 1470 01:10:19,810 --> 01:10:24,930 Do JavaScript estas programado lingvo; jQuery estas biblioteko. 1471 01:10:24,930 --> 01:10:27,190 Kaj ĝi faras faskon da aĵoj pli facile. 1472 01:10:27,190 --> 01:10:33,230 Ĝi faras ŝanĝanta kaj iras trans HTML dokumenton multe pli facila. 1473 01:10:33,230 --> 01:10:35,030 >> Ĝi faras uzado okazaĵoj facila. 1474 01:10:35,030 --> 01:10:37,580 Ĝi faras kuraĝigo facila kaj faras Ajax facila. 1475 01:10:37,580 --> 01:10:40,140 Do ni saltas en du el tion ĝuste nun. 1476 01:10:40,140 --> 01:10:40,900 Pardonu min. 1477 01:10:40,900 --> 01:10:42,620 Antaŭ ni, iuj bazaj sintakso. 1478 01:10:42,620 --> 01:10:46,870 >> Tiu estas kio plej nomas la jQuery biblioteko aspekti. 1479 01:10:46,870 --> 01:10:50,520 Ni uzas ĉi dolaro sign-- neniu rilato signalo al PHP, 1480 01:10:50,520 --> 01:10:56,030 nur inconvenient-- la nomo de seleccionador, streketo kaj tiam agon. 1481 01:10:56,030 --> 01:10:58,860 Do ni vidas iun konkretaj ekzemploj de tio. 1482 01:10:58,860 --> 01:11:02,980 >> Do tiu fakte estas la sama kodo de la okazaĵo glito. 1483 01:11:02,980 --> 01:11:08,740 Do tiu longa, malbela afero iĝas tiu multe pli agrabla, pli malgranda afero. 1484 01:11:08,740 --> 01:11:10,370 Do ni provu rompi ĉi malsupren. 1485 01:11:10,370 --> 01:11:17,090 Ĉi tio diras, OK, jQuery-- ĉi dolaro sign-- jQuery, trovi min la fenestro. 1486 01:11:17,090 --> 01:11:18,480 Do jen la seleccionador. 1487 01:11:18,480 --> 01:11:21,800 >> Kiam ĝi ŝarĝas, nomas tiun funkcion. 1488 01:11:21,800 --> 01:11:23,880 Do jen ĉio ene. 1489 01:11:23,880 --> 01:11:24,380 BONE. 1490 01:11:24,380 --> 01:11:25,740 Ĝis nun, tiel bona? 1491 01:11:25,740 --> 01:11:26,750 Bone. 1492 01:11:26,750 --> 01:11:32,970 >> Nun, jQuery, trovi min la afero kun ID search_button. 1493 01:11:32,970 --> 01:11:36,090 Kaj kio ĝi estas klakita, nomas tiun funkcion. 1494 01:11:36,090 --> 01:11:37,900 Kaj tiam tiu funkcia precize samaj. 1495 01:11:37,900 --> 01:11:41,052 Ĝuste fari iomete de garde, vi klakis la Serĉu butonon. 1496 01:11:41,052 --> 01:11:42,650 >> Do estas vere bela. 1497 01:11:42,650 --> 01:11:46,260 Ĝi vere densigas kaj simpligas nian kodon. 1498 01:11:46,260 --> 01:11:49,030 Kiel mi scias, ke ĝi estas ID search_button 1499 01:11:49,030 --> 01:11:50,960 kaj ne kiel klaso search_button? 1500 01:11:50,960 --> 01:11:52,024 >> Publiko: hashtag? 1501 01:11:52,024 --> 01:11:52,940 HANNAH Blumberg: Yeah. 1502 01:11:52,940 --> 01:11:56,450 Ĉi hash simbolo, estas nur kiel CSS. 1503 01:11:56,450 --> 01:12:00,080 Do memoru, kun CSS, kiam ni volis elekti iun por ID, 1504 01:12:00,080 --> 01:12:01,590 ni uzis la funton signo. 1505 01:12:01,590 --> 01:12:05,400 Kiam ni volis elekti iun por klaso, ni uzas la skalara. 1506 01:12:05,400 --> 01:12:06,870 Granda. 1507 01:12:06,870 --> 01:12:08,230 Sencon? 1508 01:12:08,230 --> 01:12:11,500 Do jQuery laŭsupoze nur fari nian vivon pli facila. 1509 01:12:11,500 --> 01:12:12,000 Yeah. 1510 01:12:12,000 --> 01:12:15,660 >> Publiko: Do ​​mi estas iomete konfuzita kiel al kiel la anonima funkcio laboras. 1511 01:12:15,660 --> 01:12:19,027 Ĉu vi nomu ĉi anonymouse funkcio, funkcio? 1512 01:12:19,027 --> 01:12:20,594 Kial nomi? 1513 01:12:20,594 --> 01:12:21,510 HANNAH Blumberg: Sure. 1514 01:12:21,510 --> 01:12:25,812 Do funkcio estas nur ŝlosilvorto ke diras, mi estas ronde difini funkcion. 1515 01:12:25,812 --> 01:12:26,520 Publiko: Oh, OK. 1516 01:12:26,520 --> 01:12:27,353 HANNAH Blumberg: OK? 1517 01:12:27,353 --> 01:12:32,120 Kaj tiam ni pasas lin kiel argumento to-- ni prenu 1518 01:12:32,120 --> 01:12:37,040 tiun internan one-- al la klako funkcio. 1519 01:12:37,040 --> 01:12:39,420 Do jes, tiel ke la funkcio, tiu anonima funkcio, 1520 01:12:39,420 --> 01:12:40,910 iĝas fakta argumento. 1521 01:12:40,910 --> 01:12:43,632 Do memoru en JavaScript, ni povas trakti funkcioj kiel valoroj. 1522 01:12:43,632 --> 01:12:44,340 Publiko: Oh, OK. 1523 01:12:44,340 --> 01:12:45,256 HANNAH Blumberg: Yeah. 1524 01:12:45,256 --> 01:12:46,035 Mi ŝatas ke "io." 1525 01:12:46,035 --> 01:12:47,490 Nice. 1526 01:12:47,490 --> 01:12:49,915 Aliaj demandoj? 1527 01:12:49,915 --> 01:12:50,505 Tempo? 1528 01:12:50,505 --> 01:12:51,380 MARIA ZLATKOVA: Bonan. 1529 01:12:51,380 --> 01:12:52,760 Bona. 1530 01:12:52,760 --> 01:12:54,210 >> HANNAH Blumberg: Imponega. 1531 01:12:54,210 --> 01:12:55,720 Kelkaj rapidaj utila jQuery. 1532 01:12:55,720 --> 01:12:57,559 Mi ne tuj iri tra ĉiuj el tiuj. 1533 01:12:57,559 --> 01:12:59,350 Tiuj diapozitivoj estos supren rete iomete 1534 01:12:59,350 --> 01:13:02,040 poste, tiel vi povas kontroli ĝin iomete poste. 1535 01:13:02,040 --> 01:13:07,120 Sed esence, la ĝenerala mastro tenas kie ni diras, 1536 01:13:07,120 --> 01:13:11,510 OK, hej, jQuery, jen mia seleccionador kaj tiam jen agon. 1537 01:13:11,510 --> 01:13:15,940 Kaj vi povas fari tion kiel aliro la valoro de formo, aliri iun HTML, 1538 01:13:15,940 --> 01:13:19,195 kontrolo kio okazas kiam la uzanto submetas formo, aĵoj tiel. 1539 01:13:19,195 --> 01:13:20,106 Jes. 1540 01:13:20,106 --> 01:13:22,090 >> Publiko: Do ​​en la ekzameno, ni tuj bezonos 1541 01:13:22,090 --> 01:13:25,066 scii sufiĉe multe de la jQuery dokumentado. 1542 01:13:25,066 --> 01:13:31,018 Do donita ke ni kopiu / algluu la jQuery dokumentado al nia cheat folio, 1543 01:13:31,018 --> 01:13:32,506 Kie estas la linio desegnita? 1544 01:13:32,506 --> 01:13:33,957 Kiel kiom ni bezonas scii? 1545 01:13:33,957 --> 01:13:35,290 HANNAH Blumberg: Granda demando. 1546 01:13:35,290 --> 01:13:37,765 La demando estas esence donita ke vi 1547 01:13:37,765 --> 01:13:41,330 ne povas aliri la jQuery dokumentado dum la testo, kiom devus vi 1548 01:13:41,330 --> 01:13:41,830 scias? 1549 01:13:41,830 --> 01:13:45,540 Ni ne atendas, ke vi venu kun iu hazarda funkcio 1550 01:13:45,540 --> 01:13:47,240 ke ni atendus vin al Google. 1551 01:13:47,240 --> 01:13:52,930 >> Aĵoj kiuj estas justa ludo estas mi volus diri nur speco de la ĝenerala sintakso, 1552 01:13:52,930 --> 01:13:58,310 povante elekti de ID kaj per class-- tiel simple kiel CSS. 1553 01:13:58,310 --> 01:14:01,876 Kaj tiam la fakta funkcioj themself, ni probable diras. 1554 01:14:01,876 --> 01:14:02,376 Yeah. 1555 01:14:02,376 --> 01:14:05,591 >> Publiko: Do ​​kiam vi elektas per klaso signifus punkto. 1556 01:14:05,591 --> 01:14:06,840 HANNAH Blumberg: Jes, ĝuste. 1557 01:14:06,840 --> 01:14:07,340 Bona. 1558 01:14:07,340 --> 01:14:10,461 Kiam vi elektis por la klaso, ĝi tuj esti dot anstataŭ la funto signo. 1559 01:14:10,461 --> 01:14:10,960 Jes. 1560 01:14:10,960 --> 01:14:12,710 >> Spektantaro: Ĉu vi transiru la diferenco 1561 01:14:12,710 --> 01:14:14,310 inter elektanta de ID kaj de klaso? 1562 01:14:14,310 --> 01:14:14,560 >> HANNAH Blumberg: Sure. 1563 01:14:14,560 --> 01:14:17,510 La diferenco inter selektado ID kaj elekto de klaso. 1564 01:14:17,510 --> 01:14:20,685 Do kiel Maria diris iomete pli frue, tie 1565 01:14:20,685 --> 01:14:26,280 povas esti nur unu HTML elemento kun donita ID, dum klaso, 1566 01:14:26,280 --> 01:14:29,740 ĝi permesas nin kolekti faskon de malsamaj elementoj kune, 1567 01:14:29,740 --> 01:14:34,300 tiel aferojn kiuj estas rilatigitaj, sed ne ekzakte la sama. 1568 01:14:34,300 --> 01:14:35,685 Ĉu tio respondas la demandon? 1569 01:14:35,685 --> 01:14:36,200 Imponega. 1570 01:14:36,200 --> 01:14:37,194 Jes. 1571 01:14:37,194 --> 01:14:40,680 >> Publiko: Kio se vi havas plurajn kio estas en la sama klaso? 1572 01:14:40,680 --> 01:14:42,150 >> HANNAH Blumberg: Kio okazas se vi havas plurajn aferojn 1573 01:14:42,150 --> 01:14:43,280 estas la sama klaso? 1574 01:14:43,280 --> 01:14:45,829 Do, ekzemple, se ni estas nur uzante puran Ĝavoskripto, 1575 01:14:45,829 --> 01:14:48,120 ni devus fari ion kiel document.getElementsByClass. 1576 01:14:48,120 --> 01:14:52,280 1577 01:14:52,280 --> 01:14:56,320 Kaj tiam kion tio vere faras estas revenas tabelo de elementoj. 1578 01:14:56,320 --> 01:14:59,517 >> Kaj vi devas aŭ iteracii ilin aŭ trovi kion vi volas. 1579 01:14:59,517 --> 01:15:01,350 Oni ne tuj doni vi sola ero. 1580 01:15:01,350 --> 01:15:03,450 Ĝi tuj donu vin tabelo de elementoj. 1581 01:15:03,450 --> 01:15:05,280 Granda demando. 1582 01:15:05,280 --> 01:15:07,700 Ion alian? 1583 01:15:07,700 --> 01:15:09,520 Imponega. 1584 01:15:09,520 --> 01:15:12,860 >> Do mi pensas se vi konas ajna jQuery vi vidis en la pset, 1585 01:15:12,860 --> 01:15:15,600 vi devus esti bona iri. 1586 01:15:15,600 --> 01:15:16,325 Demando? 1587 01:15:16,325 --> 01:15:17,610 Ho ne. 1588 01:15:17,610 --> 01:15:18,859 Mi vere devas instrui. 1589 01:15:18,859 --> 01:15:19,358 Relax. 1590 01:15:19,358 --> 01:15:20,035 Glatos. 1591 01:15:20,035 --> 01:15:20,660 Mi ricevos tie. 1592 01:15:20,660 --> 01:15:24,670 1593 01:15:24,670 --> 01:15:26,870 >> Ni parolu pri Ajax. 1594 01:15:26,870 --> 01:15:31,350 Do Ajax tuj estos a-- bone, ni komencu per kio ĝi signifas. 1595 01:15:31,350 --> 01:15:32,350 Ĝi estas akronimo. 1596 01:15:32,350 --> 01:15:35,855 Ĝi staras por Asynchronous JavaScript kaj XML. 1597 01:15:35,855 --> 01:15:39,800 Kaj XML estas esence tuj estos [Inaudible] kun tipo de niaj datumoj. 1598 01:15:39,800 --> 01:15:42,100 Tamen ni ne vere uzis XML. 1599 01:15:42,100 --> 01:15:43,430 Anstataŭe, ni simple uzu JSON. 1600 01:15:43,430 --> 01:15:48,350 >> Do resume, estas iuj data-- nesinkrona, JavaScript, kaj datumoj, 1601 01:15:48,350 --> 01:15:50,040 tiukaze, JSON. 1602 01:15:50,040 --> 01:15:52,820 Kaj nia celo, kiel ni menciis iomete pli frue, 1603 01:15:52,820 --> 01:15:56,880 estas povi fari peto, havi tiun peton fari 1604 01:15:56,880 --> 01:16:00,700 lia afero en la fonon, sed daŭrigi 1605 01:16:00,700 --> 01:16:02,550 Kion ajn ni intencante fari. 1606 01:16:02,550 --> 01:16:06,650 Kaj tiam kiam tiu informo preta, tiam ni korpigi ĝin. 1607 01:16:06,650 --> 01:16:08,470 >> Do ni vidu kion tiu reale aspektas. 1608 01:16:08,470 --> 01:16:11,210 Kaj tiun, vi devas esti iomete familiara 1609 01:16:11,210 --> 01:16:13,680 el pset8, tiu kiun ĵus iradis. 1610 01:16:13,680 --> 01:16:16,200 Do jen validan jQuery funkcio kiu ni eble 1611 01:16:16,200 --> 01:16:18,250 volas scii about-- ĉi dolaro signo. 1612 01:16:18,250 --> 01:16:21,500 Do ĝi diras jQuery funkcio, .getJson. 1613 01:16:21,500 --> 01:16:25,020 >> Kaj kion tiu funkcio faras estas ĝi prenas URL kaj iuj parameters-- 1614 01:16:25,020 --> 01:16:28,000 do mi kredas en la kazo de pset8, ĝi estis kvazaŭ, 1615 01:16:28,000 --> 01:16:33,520 la URL estis articles.php kaj la parametroj estis iri = iuj poŝtkodo. 1616 01:16:33,520 --> 01:16:41,580 Kaj ĝi diras, OK, petegas tiu URL kun la donita parametroj. 1617 01:16:41,580 --> 01:16:43,480 Kaj tio nur okazas. 1618 01:16:43,480 --> 01:16:47,730 >> Ĝi kiam finas, ĝi estas ĉu tuj sukcese kompleta 1619 01:16:47,730 --> 01:16:49,370 aŭ ĝi estas tuj malsukcesos. 1620 01:16:49,370 --> 01:16:53,480 Do tiu estas la ekvivalento de alvoko Rob kaj petu lin fari ion. 1621 01:16:53,480 --> 01:17:00,260 Kaj poste kiam li vokas reen, li estas aŭ dironta mi faris aŭ mi malsukcesis. 1622 01:17:00,260 --> 01:17:04,030 >> Do en la kazo kie vi estas fari, Vi diras, OK, mi estas farita. 1623 01:17:04,030 --> 01:17:05,980 Kaj poste vi nomas tiun funkcion. 1624 01:17:05,980 --> 01:17:08,915 En tiu kazo, ĝi tuj estu funkcio kiu prenas kelkajn informojn. 1625 01:17:08,915 --> 01:17:12,890 La ni kutime zorgas pri estas datumoj, la datumoj kiujn ni fakte revenis 1626 01:17:12,890 --> 01:17:15,900 kiel rezulto de vokanta .getJSON. 1627 01:17:15,900 --> 01:17:17,470 >> Kaj vi povas fari ion kun ĝi. 1628 01:17:17,470 --> 01:17:23,670 Do en la kazo de pset8, ni montris ĝin kiel listo. 1629 01:17:23,670 --> 01:17:29,050 Fail tuj esti funkcio nomata se la peto ne sukcesas 1630 01:17:29,050 --> 01:17:30,450 ial ajn. 1631 01:17:30,450 --> 01:17:35,104 Kaj en la kazo de pset8, ni nur console.log ĝin. 1632 01:17:35,104 --> 01:17:36,020 Demandojn sur tio? 1633 01:17:36,020 --> 01:17:36,300 Yeah. 1634 01:17:36,300 --> 01:17:39,633 >> Spektantaro: Ĉu ni povas simple uzi funkcio theta anstataŭ funkcio, textStatus, jqHXR. 1635 01:17:39,633 --> 01:17:43,464 1636 01:17:43,464 --> 01:17:44,380 HANNAH Blumberg: Sure. 1637 01:17:44,380 --> 01:17:46,713 Do jes, mi kredas en la pset, ni nur vidis funkcio datumoj. 1638 01:17:46,713 --> 01:17:48,700 Do estas nur the-- jes, OK. 1639 01:17:48,700 --> 01:17:50,510 Tion ni vidis en la pset. 1640 01:17:50,510 --> 01:17:51,480 Tio estas tute bone. 1641 01:17:51,480 --> 01:17:54,210 >> Tiuj estas nur se vi volis eltiri pli informo, 1642 01:17:54,210 --> 01:17:57,190 jen tio ke vi povus ricevi de .getJSON. 1643 01:17:57,190 --> 01:17:59,040 Bona demando. 1644 01:17:59,040 --> 01:17:59,706 Ion alian? 1645 01:17:59,706 --> 01:18:00,206 Yeah. 1646 01:18:00,206 --> 01:18:01,787 >> Publiko: Do ​​.getJSON estas Ajax? 1647 01:18:01,787 --> 01:18:02,620 HANNAH Blumberg: OK. 1648 01:18:02,620 --> 01:18:05,700 Do tiu estas la speco de malfacila parto. 1649 01:18:05,700 --> 01:18:12,390 Ĝi estas jQuery funkcio kiu permesas vi faru nesinkrona alvokoj. 1650 01:18:12,390 --> 01:18:16,080 Kaj tiuj nesinkrona alvokoj, jen kio ni estis raportante al kiel Ajaco. 1651 01:18:16,080 --> 01:18:16,850 Yeah. 1652 01:18:16,850 --> 01:18:20,185 Tio portis min vere longa tempo por tiri dise kiam mi estis studento. 1653 01:18:20,185 --> 01:18:21,560 Publiko: Cxu vi povas rediri tion? 1654 01:18:21,560 --> 01:18:22,476 HANNAH Blumberg: Yeah. 1655 01:18:22,476 --> 01:18:23,630 Ĉu mi povas diri tion denove? 1656 01:18:23,630 --> 01:18:29,010 Ĉi .getJSON funkcio, ĝi estas jQuery funkcio. 1657 01:18:29,010 --> 01:18:31,970 Kaj ĝi tuj fari asíncrona alvokon. 1658 01:18:31,970 --> 01:18:35,700 Kaj tiuj nesinkrona alvokoj, ni aludanta al tiuj kiel Ajaco. 1659 01:18:35,700 --> 01:18:39,610 1660 01:18:39,610 --> 01:18:41,872 >> Aliajn demandojn? 1661 01:18:41,872 --> 01:18:43,330 Ni havas nur kelkaj minutoj. 1662 01:18:43,330 --> 01:18:45,080 Kaj Maria tuj envolver supren kun sekureco 1663 01:18:45,080 --> 01:18:47,464 kaj tiam ni tuj esti preskaŭ farita. 1664 01:18:47,464 --> 01:18:48,630 MARIA ZLATKOVA: Imponega, OK. 1665 01:18:48,630 --> 01:18:54,030 Do tiu is-- nur prenu paro de sekundoj por transrigardi ĉi. 1666 01:18:54,030 --> 01:18:56,750 Kaj tiu ne estas io vere granda. 1667 01:18:56,750 --> 01:18:59,430 Kaj povas iu diri al mi kial? 1668 01:18:59,430 --> 01:19:05,650 Kio okazas en foo kaj eble povis potenciale rezultigi ion fian, 1669 01:19:05,650 --> 01:19:06,770 kaj kion tio nomiĝas? 1670 01:19:06,770 --> 01:19:07,270 Yeah. 1671 01:19:07,270 --> 01:19:10,391 Publiko: Se la argumento tio pasis en pli ol 12 karakteroj, 1672 01:19:10,391 --> 01:19:11,454 ĝi povis superflui. 1673 01:19:11,454 --> 01:19:12,370 MARIA ZLATKOVA: Dekstra. 1674 01:19:12,370 --> 01:19:14,180 Perfekta. 1675 01:19:14,180 --> 01:19:15,384 Kio estas ĝi vokis? 1676 01:19:15,384 --> 01:19:16,300 Vi nur menciis ĝin. 1677 01:19:16,300 --> 01:19:16,840 >> Publiko: Buffer overflow. 1678 01:19:16,840 --> 01:19:18,381 >> MARIA ZLATKOVA: Yup, buffer overflow. 1679 01:19:18,381 --> 01:19:21,230 Do tiu estas iu kiun ni referi al kiel buffer overflow. 1680 01:19:21,230 --> 01:19:25,500 Kaj ni vidas ke interne de umo, ni difinis niajn bufron, c, 1681 01:19:25,500 --> 01:19:27,240 kun grandeco de 12. 1682 01:19:27,240 --> 01:19:32,680 Tamen, en ĉefa, tamen ni ne kontroli iamaniere ajn 1683 01:19:32,680 --> 01:19:36,480 ĉu la argv1-- por ke Estis la dua argumento. 1684 01:19:36,480 --> 01:19:39,630 Ni ne kontrolu ĉu la grandeco de ĝi estas taŭga. 1685 01:19:39,630 --> 01:19:43,380 >> Do se ni havis speciale malica uzanto 1686 01:19:43,380 --> 01:19:47,170 Kiu metis en iuj argumento kiu estis longa ol 12, kaj tiam potenciale 1687 01:19:47,170 --> 01:19:50,850 preter la saltegoj de tiu argumento, havis iun plenumeblan kodon 1688 01:19:50,850 --> 01:19:55,570 ke li provis fari ion malbonan kun ĝi; tiam tiu, kio okazus, 1689 01:19:55,570 --> 01:19:59,310 estus nuligi la reveno Adreso de la foo funkcio, 1690 01:19:59,310 --> 01:20:04,370 kaŭzante la funkcio kiam reveninte ekzekuti tiu kodo. 1691 01:20:04,370 --> 01:20:07,540 Kaj tiam malbonaj aferoj povus okazi. 1692 01:20:07,540 --> 01:20:09,850 Ĉu tio havas sencon por ĉiuj? 1693 01:20:09,850 --> 01:20:12,424 >> Kaj kiel ni povas protekti kontraŭ tio? 1694 01:20:12,424 --> 01:20:13,090 Ajna sugestojn? 1695 01:20:13,090 --> 01:20:16,480 1696 01:20:16,480 --> 01:20:21,890 Esence, interne de potenciale umo, kiom 1697 01:20:21,890 --> 01:20:28,294 ni povas kontroli por certiĝi ke tio ne povas okazi? 1698 01:20:28,294 --> 01:20:33,879 >> Publiko: Se la grandeco 12 estas preterpasita, vi rezervu aldonan memoron? 1699 01:20:33,879 --> 01:20:37,170 MARIA ZLATKOVA: Sugesto estas, destini aldona memoro de la grandeco superis. 1700 01:20:37,170 --> 01:20:39,800 Fakte, ni povas fari ion multe pli simpla ol tiu tiel. 1701 01:20:39,800 --> 01:20:44,870 Ni povas nur ricevi la kordo longo de la argumento kiu eniris, 1702 01:20:44,870 --> 01:20:48,590 kontroli se tio estas malpli ol aŭ egala al 12-- 1703 01:20:48,590 --> 01:20:50,790 kiu estas kion ni volas ĝin esti ĉar ni ne volas 1704 01:20:50,790 --> 01:20:52,373 ĝi superi la limojn de nia buffer. 1705 01:20:52,373 --> 01:20:55,690 Kaj tiam se ne, ni povas labori kun la argumento. 1706 01:20:55,690 --> 01:21:00,296 Kaj tiam se ĝi faras, ni fakte volas al Yello potenciale ĉe la uzanto. 1707 01:21:00,296 --> 01:21:01,670 Sed jen kiel ni farus tion. 1708 01:21:01,670 --> 01:21:02,443 Jes. 1709 01:21:02,443 --> 01:21:04,360 >> Publiko: Could You klarigi memcpy reala rapida? 1710 01:21:04,360 --> 01:21:05,443 MARIA ZLATKOVA: Ho, pardonon. 1711 01:21:05,443 --> 01:21:06,040 Jes. 1712 01:21:06,040 --> 01:21:11,290 Memcpy prenas ajn is-- bedaŭras, OK. 1713 01:21:11,290 --> 01:21:15,850 Memcpy prenas kion ajn estas en trinkejo, kio ajn estas pasita 1714 01:21:15,850 --> 01:21:18,050 sur foo kiel la komandlinio argumento. 1715 01:21:18,050 --> 01:21:19,440 Do ĝi estas tuj prenos argv1. 1716 01:21:19,440 --> 01:21:21,420 Argv1 nomiĝas trinkejo tie. 1717 01:21:21,420 --> 01:21:24,453 Do ĝi estas tuj prenos trinkejo kaj ĝi tuj kopii ĝin ĉ. 1718 01:21:24,453 --> 01:21:25,402 >> Publiko: OK. 1719 01:21:25,402 --> 01:21:28,360 MARIA ZLATKOVA: Kaj ĝi tuj copy-- la tria argumento simple raportas 1720 01:21:28,360 --> 01:21:30,601 al kiom ĝi tuj kopii en c. 1721 01:21:30,601 --> 01:21:31,142 Publiko: Ha. 1722 01:21:31,142 --> 01:21:33,030 Do tiu onies kopiado cxio tiam. 1723 01:21:33,030 --> 01:21:34,310 >> MARIA ZLATKOVA: Yeah, ĝi estas kopiado tuto. 1724 01:21:34,310 --> 01:21:34,810 Yep. 1725 01:21:34,810 --> 01:21:38,400 1726 01:21:38,400 --> 01:21:41,910 Unue, ni certigu la trinkejo estas ne egala al nula ĉar ĝi estas puntero. 1727 01:21:41,910 --> 01:21:44,680 Tiam ni atingos la kordo longo de trinkejo. 1728 01:21:44,680 --> 01:21:47,530 Ni certiĝu ke ĝi estas malpli ol aŭ egala al 12. 1729 01:21:47,530 --> 01:21:50,070 Kaj tiam ĉar ni certigis, ni povas reale 1730 01:21:50,070 --> 01:21:53,122 memcpy kaj certi ke tio estas bone. 1731 01:21:53,122 --> 01:21:53,705 Demandojn? 1732 01:21:53,705 --> 01:21:56,280 1733 01:21:56,280 --> 01:21:58,690 Granda. 1734 01:21:58,690 --> 01:22:00,400 Mi havas du veraj aŭ falsaj demandoj. 1735 01:22:00,400 --> 01:22:05,470 Povas iun ajn diras min tuj se tiuj estas veraj aŭ falsaj? 1736 01:22:05,470 --> 01:22:07,460 Jes, estas malvera. 1737 01:22:07,460 --> 01:22:07,960 Ekzakte. 1738 01:22:07,960 --> 01:22:09,330 Ambaux estas falsaj. 1739 01:22:09,330 --> 01:22:12,682 Do uzanta sola pasvorton estas neniam vere bona ideo 1740 01:22:12,682 --> 01:22:14,890 ĉar se iu scias vian pasvorton, ili povas nur 1741 01:22:14,890 --> 01:22:16,260 aliri ĉiujn viajn aliajn kontojn. 1742 01:22:16,260 --> 01:22:19,260 Kaj tiam ikonoj faras nenion certigi sekurecon. 1743 01:22:19,260 --> 01:22:24,900 Ni devus kutime serĉas HTTPS anstataŭ HTTP kaj la URL. 1744 01:22:24,900 --> 01:22:28,560 >> Kaj iuj aliaj tipoj de atakoj kiuj ni jam menciis, 1745 01:22:28,560 --> 01:22:31,390 ke David menciis en prelegi, SQL injekto atakoj. 1746 01:22:31,390 --> 01:22:37,310 Ni jam vidis, ke se ni don't-- la CS50 query funkcio certigas ke SQLa 1747 01:22:37,310 --> 01:22:39,530 injekto atakoj ne povas okazi. 1748 01:22:39,530 --> 01:22:42,640 Sed se ni ne estis uzante CS50, citaĵo, unquote "en konsulto," 1749 01:22:42,640 --> 01:22:46,830 ni devus certigi ke la uzanto enigo estas ne fakte iuj SQL 1750 01:22:46,830 --> 01:22:49,670 query kiuj kaŭzos ĉiuj niaj tabloj al esti gutita 1751 01:22:49,670 --> 01:22:54,070 aŭ io malbona al okazi kun nia datumbazo. 1752 01:22:54,070 --> 01:22:56,790 >> Sesio kidnapo estas alia tipo de atako 1753 01:22:56,790 --> 01:23:05,940 tio okazas kiam iu malbona persono uzas iu viktimo sesio 1754 01:23:05,940 --> 01:23:08,740 ID aliri la salutinformon. 1755 01:23:08,740 --> 01:23:13,620 Do tre bagatela ekzemplo de tio estas kiel se ni havas publikan komputilon, 1756 01:23:13,620 --> 01:23:21,120 tiam la malbona persono ensalutas kaj tiam ili kuketojn kiuj estas konservitaj. 1757 01:23:21,120 --> 01:23:23,380 Kaj kuketoj ne ŝanĝas por kunsido. 1758 01:23:23,380 --> 01:23:27,620 >> Tiam ni la viktimo iras en kaj tiam ensaluti en la retejo. 1759 01:23:27,620 --> 01:23:30,290 La kuketoj ne ŝanĝas por certa kunsido. 1760 01:23:30,290 --> 01:23:33,060 Kaj tiam la viktimo registras en la retejon kaj tiam forlasas. 1761 01:23:33,060 --> 01:23:36,190 Kaj tiam la persono kiu superas tiam povas ankoraŭ uzi iliajn kunsido ID 1762 01:23:36,190 --> 01:23:37,430 aliri siajn informojn. 1763 01:23:37,430 --> 01:23:40,050 Do jen unu ekzemplo de ke povis okazi. 1764 01:23:40,050 --> 01:23:45,570 >> Kaj poste mi ne tro maltrankviliĝu pri specifa kodo aŭ io 1765 01:23:45,570 --> 01:23:49,270 kiel tiu kiu povus kaŭzi ĉi, sed havante ian ideon kio 1766 01:23:49,270 --> 01:23:51,400 la variabloj implikitaj en tiu estas. 1767 01:23:51,400 --> 01:23:53,897 Kaj tiam manipulanta kaplinio datumoj estas alia tipo de atako 1768 01:23:53,897 --> 01:23:55,230 kiu havas David raportis. 1769 01:23:55,230 --> 01:23:59,730 Kaj ĝi nur rilatas al Kio povas okazi kiam 1770 01:23:59,730 --> 01:24:04,300 la respondo, la HTTP respondo ene de nia kaplinio 1771 01:24:04,300 --> 01:24:05,720 ne sanitized konvene. 1772 01:24:05,720 --> 01:24:14,340 >> Kaj iu el la fields-- ekzemple, se iu overwrites unu el la kaplinio 1773 01:24:14,340 --> 01:24:18,860 valorojn por enhavi ion pli ol kion nun contain-- kaj reale 1774 01:24:18,860 --> 01:24:22,720 enhavas, ekzemple, 200 OK statuso kodon, tiam ili 1775 01:24:22,720 --> 01:24:26,890 povus potenciale fari malican aĵoj kiam ili ne laŭsupoze. 1776 01:24:26,890 --> 01:24:30,815 Sed mi ne maltrankviligas tro multe pri la specifa kodo 1777 01:24:30,815 --> 01:24:34,110 kiu povus kaŭzi ĉi, nur ia kompreno 1778 01:24:34,110 --> 01:24:37,290 altnivelajn aferojn tiel. 1779 01:24:37,290 --> 01:24:39,570 >> Mi pensas, ke estas ĉiuj ke ni devas kovri. 1780 01:24:39,570 --> 01:24:40,090 Amazing. 1781 01:24:40,090 --> 01:24:43,310 Iu havas demandojn je ajna el la aĵoj kiujn ni kovris? 1782 01:24:43,310 --> 01:24:44,213 Jes. 1783 01:24:44,213 --> 01:24:48,077 >> Publiko: Do ​​unu ia pli loĝistikaj demando. 1784 01:24:48,077 --> 01:24:53,400 Estas la enhavo plejparte koncentrita sur aĵoj post kvizo 1? 1785 01:24:53,400 --> 01:24:55,730 >> MARIA ZLATKOVA: Do demando estas, estas la enhavo 1786 01:24:55,730 --> 01:24:59,720 centris ĉefe sur aĵoj post kvizo 1? 1787 01:24:59,720 --> 01:25:06,070 Do la fokuso estas sur post kvizo 1, kun la escepto 1788 01:25:06,070 --> 01:25:10,914 ke ni bezonas enfokusigi aferoj pset5 kaj multa la datumstrukturoj 1789 01:25:10,914 --> 01:25:11,580 ke ni kovris. 1790 01:25:11,580 --> 01:25:14,300 Kaj ni ne povas diri ke ni povas ignori ion antaŭ 1791 01:25:14,300 --> 01:25:17,120 ke ĉar surkonstruas tiel. 1792 01:25:17,120 --> 01:25:21,845 >> Do temigi ke, plus pset5 materialo kiel inkludante ligitaj listoj, stakoj, 1793 01:25:21,845 --> 01:25:23,720 atendovicoj, kaj ĉio ke Hannah trapasis. 1794 01:25:23,720 --> 01:25:24,050 >> HANNAH Blumberg: Dekstra. 1795 01:25:24,050 --> 01:25:27,450 Jes, ni travivis tutan C havajxoj tuj en la komenco tre rapide. 1796 01:25:27,450 --> 01:25:29,090 Sed certigi revizii tion. 1797 01:25:29,090 --> 01:25:32,700 Reiru kaj spekti la kvizon 0 recenzo. 1798 01:25:32,700 --> 01:25:36,110 >> Paro pli loĝistikaj notoj, nur dum ni havas vian atenton. 1799 01:25:36,110 --> 01:25:39,100 Ni estas irantaj havi oficejon horoj ambaŭ lundon kaj mardon nokto. 1800 01:25:39,100 --> 01:25:41,540 Ili tuj estos en MD 119. 1801 01:25:41,540 --> 01:25:44,220 Tio estas ĉio sur la paĝaro, do se vi ne auxskultos, sen ĉagrenoj. 1802 01:25:44,220 --> 01:25:45,266 >> MARIA ZLATKOVA: 8:30 al 11:00. 1803 01:25:45,266 --> 01:25:46,260 >> HANNAH Blumberg: Yeah, 8:30 al 11:00. 1804 01:25:46,260 --> 01:25:46,910 Ni estos tie. 1805 01:25:46,910 --> 01:25:48,368 Ni estos tie por respondi demandojn. 1806 01:25:48,368 --> 01:25:49,480 Estas bela malvarmon kaj amuza. 1807 01:25:49,480 --> 01:25:53,240 Vi uloj povas demandi demandojn ke vi havas sur kvizo 1. 1808 01:25:53,240 --> 01:25:55,740 Kaj kvizo 1 estas sur Merkredo, tiel bona sorto. 1809 01:25:55,740 --> 01:25:59,770 Se vi havas demandojn, eble veni babilado al ni supren tie unu-sur-unu. 1810 01:25:59,770 --> 01:26:00,880 Malvarmeta. 1811 01:26:00,880 --> 01:26:01,630 Danke tiel. 1812 01:26:01,630 --> 01:26:02,880 >> MARIA ZLATKOVA: Danke tiel, knaboj. 1813 01:26:02,880 --> 01:26:03,480 >> Publiko: Yay. 1814 01:26:03,480 --> 01:26:05,930 >> [Aplaŭdo] 1815 01:26:05,930 --> 01:26:07,530