1 00:00:00,000 --> 00:00:02,964 2 00:00:02,964 --> 00:00:05,434 >> [MUZIKO Ludante] 3 00:00:05,434 --> 00:00:11,825 4 00:00:11,825 --> 00:00:12,700 Hannah: Saluton, ĉiuj. 5 00:00:12,700 --> 00:00:15,866 Dankon infanoj tiel por eliras en la naŭza vetero por kvizo unu 6 00:00:15,866 --> 00:00:16,910 revizii kunsido. 7 00:00:16,910 --> 00:00:20,020 Kiel vi uloj scias, kvizo unu estas tiu merkredo. 8 00:00:20,020 --> 00:00:22,209 Do ni tuj iru tra faskon da temoj. 9 00:00:22,209 --> 00:00:24,000 DAVIN: Hej, mi povas diri io reala rapide? 10 00:00:24,000 --> 00:00:25,215 Hannah: Yeah, Davin okazas ekparoli reala rapida. 11 00:00:25,215 --> 00:00:25,780 DAVIN: Pardonu. 12 00:00:25,780 --> 00:00:29,490 Nur reala rapidaj, se vi havas demandojn pri la kvizo, vi povas iri en linio. 13 00:00:29,490 --> 00:00:32,420 Iru al 2014 kvizon unu, pri la kvizo. 14 00:00:32,420 --> 00:00:34,680 Ĝi sukcese loĝistiko pri kien iri, kiam iri. 15 00:00:34,680 --> 00:00:38,100 Se vi samtempe enskribis, ni estas tuj havos ŝminkon kvizon je 5:30. 16 00:00:38,100 --> 00:00:40,350 Aŭ se vi sendas min elfluon, vi havas iun alian aferon. 17 00:00:40,350 --> 00:00:42,640 Sed 5:30 estas la konsiston tempo merkrede. 18 00:00:42,640 --> 00:00:44,540 Sed se vi havas demandojn, ĝeneralaj demandoj, 19 00:00:44,540 --> 00:00:45,748 Enreta havas ĉiujn loĝistiko. 20 00:00:45,748 --> 00:00:47,690 Do kontrolu tie unue. 21 00:00:47,690 --> 00:00:49,070 >> Hannah: Awesome. 22 00:00:49,070 --> 00:00:53,030 Do jen la granda lerta de topikoj ke ni tuj iru tra hodiaŭ. 23 00:00:53,030 --> 00:00:57,390 Mi iras al kovri ĉiuj de la C uzatajxojn, kiu estas tiu unua kolumno. 24 00:00:57,390 --> 00:01:00,710 Do la C stuff ke ni kovrita post kvizon nulo. 25 00:01:00,710 --> 00:01:05,459 Komencante kun ligillisto, kiu inkluzivas punteros. 26 00:01:05,459 --> 00:01:07,668 >> Bone, do ni vidis tiun en la lasta revizio kunsido, 27 00:01:07,668 --> 00:01:10,000 tial mi estas ironta tra tiu estas iomete pli rapida. 28 00:01:10,000 --> 00:01:13,500 Nur levi vian manon se vi deziras tion malrapidigi aŭ alparoli ion plu. 29 00:01:13,500 --> 00:01:17,150 Sed ni uzas ligitaj lertaj ĉar ni komencis en C kun arrays. 30 00:01:17,150 --> 00:01:20,920 Kaj arrays estas granda, sed la problemo estas ke ili havas fiksan grandecon. 31 00:01:20,920 --> 00:01:24,925 Ligitaj lertaj nin permesus krei dinamike grandeco datumstrukturoj. 32 00:01:24,925 --> 00:01:28,520 33 00:01:28,520 --> 00:01:32,320 >> Kaj ni havas nian bazaj operacioj, enigi, forigi, kaj sercxado. 34 00:01:32,320 --> 00:01:36,780 Kaj ni povas fari insert en plej malbona kazo konstanta tempo 35 00:01:36,780 --> 00:01:39,140 se ni nur metis ĝin tuj en la komenco. 36 00:01:39,140 --> 00:01:45,220 Forigi kaj esplori, plej malbona kazo big ho de n tempon. 37 00:01:45,220 --> 00:01:47,140 Do denove, nur por klaki tra tiuj bildoj, 38 00:01:47,140 --> 00:01:50,860 Mi scias nin vidis tiujn lasta fojo, sed ni volas konservi trako de nia ligillisto 39 00:01:50,860 --> 00:01:53,440 per konservanta trako de la kapo de nia ligillisto. 40 00:01:53,440 --> 00:01:55,580 Ĉar ni scias ke cxiu el niaj nodoj 41 00:01:55,580 --> 00:01:58,610 estas nur tuj indikas la proksima nodo en nia ligillisto. 42 00:01:58,610 --> 00:02:00,460 >> Do tiel estas kiel ni konservi trako. 43 00:02:00,460 --> 00:02:02,910 Eĉ kvankam ĉi tiuj estas ne kontinuaj pecoj de memoro, 44 00:02:02,910 --> 00:02:07,410 Ni povas trovi ilin per simple sekvante la malsamaj sagoj. 45 00:02:07,410 --> 00:02:09,800 Jen nia strukturo por ligillisto nodo. 46 00:02:09,800 --> 00:02:11,440 Ni vidis ĉi lasta tempo. 47 00:02:11,440 --> 00:02:13,080 Ni havas nian struct nodo. 48 00:02:13,080 --> 00:02:14,340 Kaj ĝi havas du propraĵoj. 49 00:02:14,340 --> 00:02:17,020 Numero unu, la efektiva valoron ni volas stoki. 50 00:02:17,020 --> 00:02:18,290 En tiu kazo, estas entjero. 51 00:02:18,290 --> 00:02:21,100 Ĝi eblus kordoj, povis esti char, kion vi volas. 52 00:02:21,100 --> 00:02:24,710 Kaj tiam, ni devas konservi trako de la venonta nodo en nia ligillisto. 53 00:02:24,710 --> 00:02:29,797 Por ke tuj estos sagon al la sekva nodo. 54 00:02:29,797 --> 00:02:31,880 Se vi nur faranta serĉo, kiel mi diris antaŭe, 55 00:02:31,880 --> 00:02:34,900 vi devus sekvi vian sagoj suben. 56 00:02:34,900 --> 00:02:40,720 Inserción, vi devus konservi trako de kie la resto de via listo estas. 57 00:02:40,720 --> 00:02:44,150 Kaj vi volas redirekti la kapo atentigi al nia nova elemento, kiun 58 00:02:44,150 --> 00:02:46,640 en tiu kazo estas unu, kaj tiam oni notos 59 00:02:46,640 --> 00:02:49,480 al la resto de la ligillisto. 60 00:02:49,480 --> 00:02:52,996 Do denove, mi konas ĉi estas iom bito de ripeto de kvizo nulo. 61 00:02:52,996 --> 00:02:55,370 Do ni devas esti tre zorgema pri la ordo en kiu ni 62 00:02:55,370 --> 00:03:00,390 faras cxi pointings do ni ne perdi spuron de la posta parto de la listo. 63 00:03:00,390 --> 00:03:04,122 OK, demandojn kun nur unuope ligitaj listoj? 64 00:03:04,122 --> 00:03:06,060 Imponega, OK, malvarmeta. 65 00:03:06,060 --> 00:03:09,410 >> Do nun, ni tuj iru sur io nur iomete pli komplika, 66 00:03:09,410 --> 00:03:10,920 duoble ligitaj listoj. 67 00:03:10,920 --> 00:03:13,680 Do krom konservante spuro de la sekva nodo, 68 00:03:13,680 --> 00:03:16,220 ni ankaŭ volas konservi trako de la antaŭa nodo. 69 00:03:16,220 --> 00:03:19,580 Kaj ĉi tio nin permesas, se ni estos iam dum nia ligillisto, 70 00:03:19,580 --> 00:03:23,110 Ne nur iri antaŭen, sed ankaŭ persisti malantaŭen. 71 00:03:23,110 --> 00:03:25,220 Ĉar kiel ni vidis en oni sole ligillisto, 72 00:03:25,220 --> 00:03:27,980 se ni en iu nodo, kaj subite, ni decidis, 73 00:03:27,980 --> 00:03:30,160 vere, mi volas iri al la nodon dekstren antaŭ mi, 74 00:03:30,160 --> 00:03:32,034 Vi devus iri ĉiuj la vojo reen al la kapo 75 00:03:32,034 --> 00:03:35,710 kaj persisti tra ĝis fondu la nodo vi serĉis. 76 00:03:35,710 --> 00:03:37,680 >> Do tio igas aferoj iomete pli facila kiel ni estas 77 00:03:37,680 --> 00:03:39,670 provante persisti tra nia ligillisto. 78 00:03:39,670 --> 00:03:47,870 Sed ĝi admonas nin al konservi trako de unu pli puntero, do unu pli nodo stelo. 79 00:03:47,870 --> 00:03:50,830 Bone, do jen venas la amuza parto. 80 00:03:50,830 --> 00:03:55,600 Ni intencas praktiki efektivigo forigi por duoble ligitaj listoj. 81 00:03:55,600 --> 00:03:58,660 Do ĉi tio estas iu kiu estas tute justa ludo por la kvizo. 82 00:03:58,660 --> 00:04:00,750 Ĝi aperis en pasinteco kvizojn. 83 00:04:00,750 --> 00:04:04,220 Do definitive esti preta kodigi iomete en C. 84 00:04:04,220 --> 00:04:07,900 Ne forgesu, ke per cxiuj tiu amuza PHP kaj Javascript, 85 00:04:07,900 --> 00:04:10,560 ni ankoraŭ devos memori fari C. Do refreŝigi sur tiu 86 00:04:10,560 --> 00:04:12,146 se ili sentas rusta. 87 00:04:12,146 --> 00:04:14,580 >> Bone, ni vidu se ni povas fari ĉi tion. 88 00:04:14,580 --> 00:04:16,312 OK, malvarmeta. 89 00:04:16,312 --> 00:04:18,600 Do ni provos redakti juste tie, 90 00:04:18,600 --> 00:04:20,707 kaj espereble tiu iras kiel planita. 91 00:04:20,707 --> 00:04:23,915 Bone, ĉu iu volas doni min sugesto pri kiel mi devus komenci? 92 00:04:23,915 --> 00:04:27,030 La nura supozo mi estas farado estas ke mi jam 93 00:04:27,030 --> 00:04:30,180 havas strukturon difinita, la unu mi montris en la lasta paĝo, 94 00:04:30,180 --> 00:04:31,420 sur la lasta slide. 95 00:04:31,420 --> 00:04:39,250 Kaj Mi stokante la kapo de mia ligitaj lerta en iuj puntero nomis lerta. 96 00:04:39,250 --> 00:04:42,190 Chu iu volas min komenciĝis? 97 00:04:42,190 --> 00:04:45,410 >> Publiko: Ĉu vi povas krei novan nodo nomi tra la listo? 98 00:04:45,410 --> 00:04:46,410 >> Hannah: Awesome, do ni iras al krei 99 00:04:46,410 --> 00:04:47,951 nova nodo rampi tra la listo. 100 00:04:47,951 --> 00:04:48,570 Mi ŝatas tion. 101 00:04:48,570 --> 00:04:50,799 Mi simple nomas ĝin puntero se tio estas OK. 102 00:04:50,799 --> 00:04:52,340 Kaj kie oni ĉe origine komencis? 103 00:04:52,340 --> 00:04:57,280 104 00:04:57,280 --> 00:04:59,840 >> Publiko: Probable ĉe la kapo de la listo. 105 00:04:59,840 --> 00:05:00,590 Hannah: Bela. 106 00:05:00,590 --> 00:05:03,670 Ni volas komenci je la kapo, kiu Mi diris tuj estos stokitaj en listo. 107 00:05:03,670 --> 00:05:04,170 Imponega. 108 00:05:04,170 --> 00:05:05,220 Ĝis nun, tiel bona. 109 00:05:05,220 --> 00:05:08,260 Kaj nun, nia celo estas persisti tra la elenco 110 00:05:08,260 --> 00:05:12,870 ĝis ni trovos la nodo kun valoro n, ke ni volas forigi. 111 00:05:12,870 --> 00:05:13,540 OK? 112 00:05:13,540 --> 00:05:15,910 >> Do nun estas la parto kie ni volas persisti tra. 113 00:05:15,910 --> 00:05:19,488 Cxu iu povas sugesti vojo persisti tra? 114 00:05:19,488 --> 00:05:20,979 >> Publiko: Ciklo. 115 00:05:20,979 --> 00:05:21,840 >> Hannah: Ciklo. 116 00:05:21,840 --> 00:05:22,620 Mi amas ĝin. 117 00:05:22,620 --> 00:05:25,550 Specife, ni povas provi dum buklo. 118 00:05:25,550 --> 00:05:30,919 OK, kaj ni scias ke ni atingis la fino de nia lerta kiam kio? 119 00:05:30,919 --> 00:05:32,210 Publiko: Kiam puntero estas nula. 120 00:05:32,210 --> 00:05:33,418 Hannah: Kiam puntero estas nula. 121 00:05:33,418 --> 00:05:34,320 Belega, mi amas gxin. 122 00:05:34,320 --> 00:05:35,110 OK, malvarmeta. 123 00:05:35,110 --> 00:05:39,300 124 00:05:39,300 --> 00:05:43,190 Do bedaŭras se miaj baranta krampoj estas ia falante la ekrano. 125 00:05:43,190 --> 00:05:44,090 Ni veturigis gxin returne. 126 00:05:44,090 --> 00:05:46,610 OK, malvarmeta. 127 00:05:46,610 --> 00:05:48,690 Kio sekvas? 128 00:05:48,690 --> 00:05:51,950 >> Do ni scias ke ni volas forigi la nodo kiu havas valoro n. 129 00:05:51,950 --> 00:05:56,340 Do ni trovu la kazo kie ni fakte trovi nian nodo. 130 00:05:56,340 --> 00:05:57,840 Do kiel mi kontroli ke? 131 00:05:57,840 --> 00:06:02,210 Mi volonte simple dirus se puntero, kaj tiam, se mi volas atingi la valoron ekster puntero, 132 00:06:02,210 --> 00:06:08,940 Mi simple arrow n, egalas n, la parametro 133 00:06:08,940 --> 00:06:14,490 ke ni donis al ĉi tiu funkcio, la nodo ke ni volas vere forigi. 134 00:06:14,490 --> 00:06:17,090 Demandojn ĝis tie? 135 00:06:17,090 --> 00:06:18,360 Bone. 136 00:06:18,360 --> 00:06:24,140 OK, do nun ni tiros rapidan foton sur la tabulo por visualizar ĉi. 137 00:06:24,140 --> 00:06:30,710 >> Do diru ke estas nia aminda nodo. 138 00:06:30,710 --> 00:06:34,480 Kaj ĝi havas valoron, mi simple diras kvar. 139 00:06:34,480 --> 00:06:40,340 Kaj ĝi notas al la sekvanta nodo en nia ligillisto. 140 00:06:40,340 --> 00:06:42,220 Kaj nenio estas antaŭ ĝi. 141 00:06:42,220 --> 00:06:45,800 Do ni havas nian antaŭa indikante nenion. 142 00:06:45,800 --> 00:06:48,110 En ĉi tiu kazo, ni notas al malantaŭen. 143 00:06:48,110 --> 00:06:50,960 OK, ĵus subiris miajn ligillisto super tie. 144 00:06:50,960 --> 00:06:53,630 Kaj ni havas liston kiu notas al tiu strukturo por komenci kun. 145 00:06:53,630 --> 00:06:57,220 146 00:06:57,220 --> 00:07:00,485 Mi tiros pli por pro kompleteco. 147 00:07:00,485 --> 00:07:04,209 148 00:07:04,209 --> 00:07:06,117 Akcepti. 149 00:07:06,117 --> 00:07:07,480 Mi notas ĉi antaŭen. 150 00:07:07,480 --> 00:07:09,550 Kaj mi notas ke unu reen. 151 00:07:09,550 --> 00:07:10,360 Oops, sorry. 152 00:07:10,360 --> 00:07:12,710 Yeah, atingis tiun malantaŭen. 153 00:07:12,710 --> 00:07:15,548 154 00:07:15,548 --> 00:07:16,967 Faru tion refoje. 155 00:07:16,967 --> 00:07:18,330 OK, tie ni iru. 156 00:07:18,330 --> 00:07:19,910 Bone, got it. 157 00:07:19,910 --> 00:07:21,780 OK, jen nia bildo. 158 00:07:21,780 --> 00:07:24,860 >> OK, do ni volas konsideri du kazoj. 159 00:07:24,860 --> 00:07:27,330 La unua kazo estas se la nodo ni volas forigi 160 00:07:27,330 --> 00:07:29,420 estas ĉe la tre komenco de nia listo. 161 00:07:29,420 --> 00:07:34,070 Kaj tiam, la dua kazo ke ni volas al konsideri estas se ĝi estas aliloke. 162 00:07:34,070 --> 00:07:37,660 Mi komprenas ke tio tute senorda desegnante per mia tuta viŝante, 163 00:07:37,660 --> 00:07:40,400 sed espereble ni penos fari ĉi klara kun iu kodo. 164 00:07:40,400 --> 00:07:45,450 >> OK, do ni kovri la kazo kie ni trovis nian nodo, 165 00:07:45,450 --> 00:07:48,900 kaj ĝi estas en la tre starti de nia ligillisto. 166 00:07:48,900 --> 00:07:50,810 Iu donu al mi sugesto tie kiel al kio 167 00:07:50,810 --> 00:07:54,684 Mi devus fari por reale forigi nian nodo? 168 00:07:54,684 --> 00:07:55,970 Estas iom malfacila. 169 00:07:55,970 --> 00:07:56,470 OK? 170 00:07:56,470 --> 00:07:59,628 >> Publiko: Vi devas preni la nodo kiu estus antaŭ ol ĝi 171 00:07:59,628 --> 00:08:01,794 kaj fari ĝin punkto por la kiu estus post tio, 172 00:08:01,794 --> 00:08:03,004 kaj prenu la nodo ke estus post ĝin kaj fari 173 00:08:03,004 --> 00:08:04,554 ĝi notas al la nodo antaŭ ĝi. 174 00:08:04,554 --> 00:08:05,220 Hannah: Ekzakte. 175 00:08:05,220 --> 00:08:10,640 OK, do ĉi tiu estas la kazo where-- ni havas du kazojn. 176 00:08:10,640 --> 00:08:14,100 Ni havas la kazon kie la nodo ke ni serĉas 177 00:08:14,100 --> 00:08:18,270 estas la fronto de la listo. 178 00:08:18,270 --> 00:08:23,110 OK, kaj tiam la kazo ke vi priskribita estas alie, ĉu ne? 179 00:08:23,110 --> 00:08:24,500 Estas ie aliloke en la listo. 180 00:08:24,500 --> 00:08:27,460 181 00:08:27,460 --> 00:08:32,840 Do vi diris, ni bezonas rigardi la nodo antaŭa, 182 00:08:32,840 --> 00:08:36,500 kaj fari la antaŭa nodo fingromontras la sekva nodo. 183 00:08:36,500 --> 00:08:40,510 Do diru ni estas klopodante preni el kvin 184 00:08:40,510 --> 00:08:43,059 Miaj tre senorda desegno super tie. 185 00:08:43,059 --> 00:08:47,530 Ni volas certigi ke kvar nun notas al ses. 186 00:08:47,530 --> 00:08:49,590 Kvar la proksimaj punktoj al ses. 187 00:08:49,590 --> 00:08:52,150 Kaj ses antaŭaj punktoj por kvar. 188 00:08:52,150 --> 00:08:53,960 Tio estas nia celo ĉi tie, ĉu ne? 189 00:08:53,960 --> 00:08:56,150 Jen kion mi pensas vi nur diris tie. 190 00:08:56,150 --> 00:08:58,450 >> OK, do ni bonstata unua peco. 191 00:08:58,450 --> 00:09:02,300 Ni faru la havi la antaŭa puntero antaŭa. 192 00:09:02,300 --> 00:09:06,550 193 00:09:06,550 --> 00:09:09,690 Do kvar la proksima devus celi kio? 194 00:09:09,690 --> 00:09:13,210 195 00:09:13,210 --> 00:09:14,900 Ĝuste, en ĉi tiu kazo, ses. 196 00:09:14,900 --> 00:09:18,470 Do ni devus diri montrilo, sekva. 197 00:09:18,470 --> 00:09:20,600 OK? 198 00:09:20,600 --> 00:09:21,150 Bone. 199 00:09:21,150 --> 00:09:24,870 Do ni forigi ĉi malbela bildo kaj provu desegni iomete pli agrabla unu. 200 00:09:24,870 --> 00:09:29,040 201 00:09:29,040 --> 00:09:31,172 Ni havas nian liston kapon tie. 202 00:09:31,172 --> 00:09:36,440 203 00:09:36,440 --> 00:09:42,740 Kaj kiu notas al la unua nodo en nia ligillisto, kiun ni diris estas kvar. 204 00:09:42,740 --> 00:09:45,620 Jen nia dua nodo, kvin. 205 00:09:45,620 --> 00:09:47,307 Kaj nia tria nodo, ses. 206 00:09:47,307 --> 00:09:50,265 Nur klopodis desegni la ĝusta sama bildo, nur iom pli pure. 207 00:09:50,265 --> 00:09:52,780 208 00:09:52,780 --> 00:09:56,280 OK, do kvar la proksima origine notas al kvin. 209 00:09:56,280 --> 00:09:58,620 Kvin la proksimaj punktoj al ses. 210 00:09:58,620 --> 00:10:00,170 Ses antaŭaj punktoj al kvin. 211 00:10:00,170 --> 00:10:02,470 Kaj kvin antaŭaj punktoj por kvar. 212 00:10:02,470 --> 00:10:03,360 Do multe pli agrable! 213 00:10:03,360 --> 00:10:04,530 OK, malvarmeta. 214 00:10:04,530 --> 00:10:07,770 >> Do nun, kion ni faris nur tie, ĉi tiu linio de kodo, 215 00:10:07,770 --> 00:10:12,680 kiu diras puntero antaŭa apud, do kion signifas tio? 216 00:10:12,680 --> 00:10:17,540 Tio signifas, se ni rigardas kvin, iru al la antaŭa nodo, 217 00:10:17,540 --> 00:10:21,970 kaj ĝi estas proksima devus nun punkto al kvin la sekva. 218 00:10:21,970 --> 00:10:27,840 Do esence, kio tio estas faranta estas ke la viŝante ĉi sagon 219 00:10:27,840 --> 00:10:29,640 kaj farante ĝin salti dekstra super kvin. 220 00:10:29,640 --> 00:10:31,360 Ĉu tio estas klara? 221 00:10:31,360 --> 00:10:33,200 Mi scias, ke povas esti iomete Sketchy. 222 00:10:33,200 --> 00:10:34,480 Mi vidas kelkajn kapo kapsignas. 223 00:10:34,480 --> 00:10:35,390 Tio estas bona. 224 00:10:35,390 --> 00:10:36,670 OK, malvarmeta. 225 00:10:36,670 --> 00:10:39,590 Nun, kio estas la sekva paŝo? 226 00:10:39,590 --> 00:10:42,060 >> Mi reagordi la sekva. 227 00:10:42,060 --> 00:10:45,297 Nun, kio alia sago do mi devas ŝanĝi? 228 00:10:45,297 --> 00:10:46,130 Ĉi tiu dekstra tie. 229 00:10:46,130 --> 00:10:47,560 Ses antaŭa. 230 00:10:47,560 --> 00:10:50,620 Ni ne volas ses antaŭa atentigi al kvin anymore. 231 00:10:50,620 --> 00:10:54,580 Ni volas ke ĝi indikas kvar. 232 00:10:54,580 --> 00:10:56,190 Ĉu tio bildo sencon? 233 00:10:56,190 --> 00:10:58,370 Do nun ni povas reale preni kvin eksteren. 234 00:10:58,370 --> 00:10:59,370 Do ni bonstata peco. 235 00:10:59,370 --> 00:11:03,390 236 00:11:03,390 --> 00:11:11,180 Kion mi faru antaŭ Mi reset ses antaŭaj kvar? 237 00:11:11,180 --> 00:11:14,360 Ajna ideojn tie? 238 00:11:14,360 --> 00:11:17,369 >> Publiko: Malligu la nodo inter ilin per opcio ĝin al NULL? 239 00:11:17,369 --> 00:11:17,910 Hannah: Cool. 240 00:11:17,910 --> 00:11:21,100 Definitive, nia fina celo estas tuj estos liberigi la nodo. 241 00:11:21,100 --> 00:11:22,490 Do ni povas fari tion ĉi tie. 242 00:11:22,490 --> 00:11:23,540 Liberaj puntero. 243 00:11:23,540 --> 00:11:24,810 Absolute. 244 00:11:24,810 --> 00:11:29,160 Sed eĉ antaŭ tio, ni just-- nia celo dekstra 245 00:11:29,160 --> 00:11:38,730 tie estas starigi puntero apud antaŭa egala al Pointer antaŭa. 246 00:11:38,730 --> 00:11:40,760 Mi scias ĉi estas akiranta kovrita. 247 00:11:40,760 --> 00:11:45,440 Bone, ni take-- malvarmeta. 248 00:11:45,440 --> 00:11:46,990 Povas ĉiuj vidi ĉi malsupra linio? 249 00:11:46,990 --> 00:11:47,840 Aŭ ĉu súper eta? 250 00:11:47,840 --> 00:11:50,430 251 00:11:50,430 --> 00:11:54,300 >> Do antaŭ ol ni ekzekuti tiu linio tie, ni volas 252 00:11:54,300 --> 00:11:58,375 por certigi ke montrilo proksima ne estas nula. 253 00:11:58,375 --> 00:12:00,500 Ĉar se puntero proksima estas nula, kia eraro 254 00:12:00,500 --> 00:12:02,727 Mi ricevas kiam mi provas referenci nula puntero? 255 00:12:02,727 --> 00:12:03,560 Publiko: Seg kulpo. 256 00:12:03,560 --> 00:12:05,660 Hannah: A seg kulpo, bela. 257 00:12:05,660 --> 00:12:09,690 OK, do se tio ne nula, tiam ni povas restarigi. 258 00:12:09,690 --> 00:12:14,420 Kaj ni havas ses punkto denove al kvar. 259 00:12:14,420 --> 00:12:17,440 Demandojn supren ĝis tiu punkto? 260 00:12:17,440 --> 00:12:17,940 Jes? 261 00:12:17,940 --> 00:12:19,814 >> Publiko: En via unua se aserto, ĉu vi 262 00:12:19,814 --> 00:12:23,817 signifas havi la sagon apud, aŭ [inaudible]? 263 00:12:23,817 --> 00:12:25,150 Hannah: Mi signifis puntero sago n. 264 00:12:25,150 --> 00:12:30,270 Do esence, kion mi provas fari estas diri, la nuna nodo ke mi estas 265 00:12:30,270 --> 00:12:34,100 ripetanta super, la nuna nodo ke Mi rigardas, mi stokante en puntero. 266 00:12:34,100 --> 00:12:37,630 Kaj mi volas scii puntero La valoro, kiu en tiu kazo estas n. 267 00:12:37,630 --> 00:12:39,500 Kaj mi volas vidi, estas la nodo Mi serĉas 268 00:12:39,500 --> 00:12:42,790 cxar la nodo Mi celas forigi? 269 00:12:42,790 --> 00:12:47,657 Do jen kial ni havas ĉi tie Pointer n. 270 00:12:47,657 --> 00:12:49,857 >> Publiko: Do ​​la sago iris al n, vi starigis la valoro 271 00:12:49,857 --> 00:12:52,058 kaj stoki ĝin en nodo nomita n? 272 00:12:52,058 --> 00:12:55,410 273 00:12:55,410 --> 00:12:58,820 >> Hannah: Tiel estas kiel se mi irante tra ĉi ligillisto 274 00:12:58,820 --> 00:13:00,310 kaj montrante kvin. 275 00:13:00,310 --> 00:13:03,600 Se mi volas atingi tiun valoron, se Mi volas ricevi tiun numeron, 5, 276 00:13:03,600 --> 00:13:06,400 Mi devas fari puntero sago n. 277 00:13:06,400 --> 00:13:06,900 Cool? 278 00:13:06,900 --> 00:13:07,900 Yeah. 279 00:13:07,900 --> 00:13:11,200 >> Publiko: estas n la nomon de la variablo? 280 00:13:11,200 --> 00:13:11,700 Hannah: Jes. 281 00:13:11,700 --> 00:13:14,870 Do se ni klaki reen unu slide, n estas la nomo 282 00:13:14,870 --> 00:13:18,660 de la valoro ene de la nodo en nia ligillisto. 283 00:13:18,660 --> 00:13:21,510 Kaj mi scias, ĝi povas alveni iom iom konfuza ĉar ni ankaŭ 284 00:13:21,510 --> 00:13:24,680 alvokas la afero ke ni volas forigi n. 285 00:13:24,680 --> 00:13:26,717 Do tie estas kie tiu unu linio devenas. 286 00:13:26,717 --> 00:13:27,671 Yeah? 287 00:13:27,671 --> 00:13:31,010 >> Publiko: Kion vi havas [Inaudible] kiel funkcias? 288 00:13:31,010 --> 00:13:33,872 289 00:13:33,872 --> 00:13:35,780 Al puntero [inaudible]? 290 00:13:35,780 --> 00:13:37,520 >> Hannah: Sure. 291 00:13:37,520 --> 00:13:40,027 Ĉu vi parolas about-- kiun linio? 292 00:13:40,027 --> 00:13:41,526 Publiko: La lasta linio [inaudible]. 293 00:13:41,526 --> 00:13:44,280 294 00:13:44,280 --> 00:13:45,250 >> Hannah: Certe, OK. 295 00:13:45,250 --> 00:13:48,540 Do ni rigardu la foton en Por provi klarigi ĉi. 296 00:13:48,540 --> 00:13:51,030 Mi bedaŭras, por la ĉambro, la demando estis 297 00:13:51,030 --> 00:13:54,580 ni povas klarigi montrilon arrow sekva puntero antaŭa. 298 00:13:54,580 --> 00:14:01,510 OK, do ni diru ni ĉe kvin kaj nia celo estas forviŝi kvin. 299 00:14:01,510 --> 00:14:07,240 Do puntero sekva: kiu el tiuj tri nodoj signifas tiu al ni? 300 00:14:07,240 --> 00:14:10,840 Tio alportas nin al la sesa nodo, dekstra? 301 00:14:10,840 --> 00:14:16,490 >> OK, do nun ni mendas por la ses antaŭaj. 302 00:14:16,490 --> 00:14:17,060 OK? 303 00:14:17,060 --> 00:14:20,210 Kaj ni recomposición ĉi esti egala al kvar, 304 00:14:20,210 --> 00:14:23,214 kiu pasis al esti kvin antaŭaj. 305 00:14:23,214 --> 00:14:25,180 Mi scias, estas súper malfacile konservi trako de. 306 00:14:25,180 --> 00:14:29,286 Mi vere rekomendas vin tiros bildoj se vi ricevas demandon kiel ĉi. 307 00:14:29,286 --> 00:14:30,242 Jes? 308 00:14:30,242 --> 00:14:32,617 >> Publiko: Ĉu la kialo ke ni ne havas [inaudible]? 309 00:14:32,617 --> 00:14:37,430 310 00:14:37,430 --> 00:14:38,570 >> Hannah: Ekzakte. 311 00:14:38,570 --> 00:14:44,800 Do la demando estis, kial ni ne bezonas kontroli tie? 312 00:14:44,800 --> 00:14:48,160 Kial ni ne bezonas kontroli ke montrilo antaŭa estas ne egala al nula? 313 00:14:48,160 --> 00:14:50,070 Kaj estas ĉar ni jam disigita el 314 00:14:50,070 --> 00:14:52,490 la kazo se la montrilo estas tuj en la komenco. 315 00:14:52,490 --> 00:14:54,060 Tre bona demando. 316 00:14:54,060 --> 00:14:56,880 Ion alian sur tio? 317 00:14:56,880 --> 00:14:57,380 OK, malvarmeta. 318 00:14:57,380 --> 00:14:58,360 Do ni finos gxin supren. 319 00:14:58,360 --> 00:14:59,890 Ni estas preskaŭ tie. 320 00:14:59,890 --> 00:15:01,310 >> Do kio se estas en la kapo? 321 00:15:01,310 --> 00:15:03,360 Kio se anstataŭ provas forigi kvin, 322 00:15:03,360 --> 00:15:06,240 ni fakte volis forigi kvar? 323 00:15:06,240 --> 00:15:07,270 Kion mi devas fari? 324 00:15:07,270 --> 00:15:09,610 Nu, mi volas restarigi mian kapon por kio? 325 00:15:09,610 --> 00:15:14,288 326 00:15:14,288 --> 00:15:15,585 Ekkriu gxin? 327 00:15:15,585 --> 00:15:16,710 Publiko: La unu post ĝi. 328 00:15:16,710 --> 00:15:17,460 Hannah: Bela. 329 00:15:17,460 --> 00:15:26,430 OK, do ni volas listo esti montrante al kiom nia puntero sekva nodo estas. 330 00:15:26,430 --> 00:15:29,040 Bona. 331 00:15:29,040 --> 00:15:30,810 Kaj nur por kompleteco la Mi agas, ni farus 332 00:15:30,810 --> 00:15:35,590 utile kontroli, ke tiel longe kiel nia listo ne estas nula, tiel longe kiel nia listo ne estas 333 00:15:35,590 --> 00:15:42,730 malplena, tiam ni volas agordi nia antaŭa egala al nula. 334 00:15:42,730 --> 00:15:46,960 335 00:15:46,960 --> 00:15:50,230 Demando ĝis nun? 336 00:15:50,230 --> 00:15:53,205 Unu paŝon for from--? 337 00:15:53,205 --> 00:15:55,530 >> Publiko: Ĉu estus se listo ne egala al nula? 338 00:15:55,530 --> 00:15:56,950 >> Hannah: Jes, vi estas tute prava. 339 00:15:56,950 --> 00:15:58,130 Mi tiom pardonpetas. 340 00:15:58,130 --> 00:16:00,040 Estas listo estas ne egala al nula. 341 00:16:00,040 --> 00:16:01,915 Imponega. 342 00:16:01,915 --> 00:16:04,245 Provante alporti ĉi cxiuj sur la ekrano. 343 00:16:04,245 --> 00:16:06,870 Estas speco de falante. 344 00:16:06,870 --> 00:16:07,730 Pardonu, knaboj. 345 00:16:07,730 --> 00:16:11,874 Kaj laste sed ne malpleje, la tuta ni devas fari estas reveno. 346 00:16:11,874 --> 00:16:12,840 Akcepti. 347 00:16:12,840 --> 00:16:15,400 Tio estis multe superplenigas en vere rapide. 348 00:16:15,400 --> 00:16:16,800 Prenu duan rigardi tion. 349 00:16:16,800 --> 00:16:18,216 Diru al mi se vi havas demandojn. 350 00:16:18,216 --> 00:16:20,232 351 00:16:20,232 --> 00:16:20,732 Yeah? 352 00:16:20,732 --> 00:16:26,940 >> Publiko: Se listo estas kapo, then-- atendi, Nevermind. 353 00:16:26,940 --> 00:16:27,700 >> Hannah: OK, bone. 354 00:16:27,700 --> 00:16:30,987 Do ĉi tiu estas se listo estas kapo, ni forigu gxin al kiom ni enmetita. 355 00:16:30,987 --> 00:16:31,486 Yeah? 356 00:16:31,486 --> 00:16:33,777 >> Publiko: Ĉu vi povas klarigi la unua se deklaro denove? 357 00:16:33,777 --> 00:16:36,149 Se la montrilon al n estas egala al n? 358 00:16:36,149 --> 00:16:36,690 Hannah: Sure. 359 00:16:36,690 --> 00:16:42,780 Do nia celo de tiu tuta funkcio estas forigi la nodon kiu havas valoro n. 360 00:16:42,780 --> 00:16:47,460 Do se ni trovos, kiel ni estas ripetanta tra nia listo, 361 00:16:47,460 --> 00:16:51,770 la nodo kun valoro n, tio estas la unu ni volas forigi. 362 00:16:51,770 --> 00:16:57,286 Do ĉiuj la forigo okazas ene de tiu granda se aserto. 363 00:16:57,286 --> 00:16:58,593 Ĉu tio havas sencon? 364 00:16:58,593 --> 00:16:59,480 Cool. 365 00:16:59,480 --> 00:16:59,990 Yeah? 366 00:16:59,990 --> 00:17:02,864 >> Publiko: Eble vi simple ne povas vidi ĝi, sed ne vi ankaŭ bezonas linion 367 00:17:02,864 --> 00:17:06,024 por rulado tra la listo? 368 00:17:06,024 --> 00:17:06,690 Hannah: Awesome. 369 00:17:06,690 --> 00:17:10,896 Ni konduku ĉi supren iomete kaj ni devos ĵeti ke ĝuste en la fundo. 370 00:17:10,896 --> 00:17:13,282 371 00:17:13,282 --> 00:17:15,490 Eble la estraro estus jam estis iomete pli bona ideo. 372 00:17:15,490 --> 00:17:17,829 Do kiel mi movi montrilon antaŭen? 373 00:17:17,829 --> 00:17:20,184 >> Publiko: Pointer egalas puntero plus unu. 374 00:17:20,184 --> 00:17:21,599 >> Hannah: Bela. 375 00:17:21,599 --> 00:17:25,050 Por ke permesas nin daŭrigi ripetanta tra. 376 00:17:25,050 --> 00:17:26,251 Akcepti. 377 00:17:26,251 --> 00:17:27,750 Publiko: Ĉu ne ekzistos la alia? 378 00:17:27,750 --> 00:17:29,028 Hannah: Unu pli da tempo? 379 00:17:29,028 --> 00:17:32,444 Publiko: Ĉu ne ekzistas al alia post la granda maljuna se 380 00:17:32,444 --> 00:17:35,519 deklaro [inaudible]? 381 00:17:35,519 --> 00:17:36,310 Hannah: Kiu parto? 382 00:17:36,310 --> 00:17:38,350 Mi bedaŭras. 383 00:17:38,350 --> 00:17:41,800 >> Publiko: La trairado, ne devus tie esti alie? 384 00:17:41,800 --> 00:17:43,550 Hannah: Vi absolute povus havi alian. 385 00:17:43,550 --> 00:17:46,930 Ĉar mi havas revenon dekstra tie, vi ne bezonas alian. 386 00:17:46,930 --> 00:17:48,760 Sed jes, bona demando. 387 00:17:48,760 --> 00:17:50,170 OK, jes? 388 00:17:50,170 --> 00:17:52,878 Publiko: Ĉu ni povas elpensi montrilon kiu movigxas tra la elenco 389 00:17:52,878 --> 00:17:56,610 prenado sur la valoro de ĉiu nodo en la listo? 390 00:17:56,610 --> 00:18:00,650 Aŭ ĉu ni pensu pri ĝi kiel ia ekstera al la listo? 391 00:18:00,650 --> 00:18:02,350 >> Hannah: ĉu unu estas bone, mi pensas. 392 00:18:02,350 --> 00:18:05,880 La maniero mi imagas estas Mi diras, OK, mi estas puntero. 393 00:18:05,880 --> 00:18:06,520 Kaj tiu estas mi. 394 00:18:06,520 --> 00:18:07,150 Jen mia mano. 395 00:18:07,150 --> 00:18:09,960 Mi iras al punkto al la malsamaj kion mi volas persisti tra. 396 00:18:09,960 --> 00:18:12,270 Unue mi tuj atentigi al la kapo de la listo. 397 00:18:12,270 --> 00:18:14,144 Kaj kiu rakontas min mi estas tuj atentigi al kvar. 398 00:18:14,144 --> 00:18:18,060 Kaj tiel mi, estante ekstera al la listo, Mi povas montri al ĉiu de ĉi tiuj elementoj. 399 00:18:18,060 --> 00:18:19,520 Do mi pensas pri mi mem kiel puntero. 400 00:18:19,520 --> 00:18:21,645 Publiko: Do ​​kiam vi forigas unu el tiuj elementoj, 401 00:18:21,645 --> 00:18:23,404 vi forigas vin mem, por tiel diri. 402 00:18:23,404 --> 00:18:24,070 Hannah: Ekzakte. 403 00:18:24,070 --> 00:18:25,920 Do vi forigas la afero vi indikante. 404 00:18:25,920 --> 00:18:28,340 Do en la ekzemplo ke ni vidis, kie ni estas 405 00:18:28,340 --> 00:18:31,670 provas forigi kvin, kiam mi montras al kvin, 406 00:18:31,670 --> 00:18:34,200 Mi volas forigi la aferon mi indikante. 407 00:18:34,200 --> 00:18:35,870 Ekzakte pravas. 408 00:18:35,870 --> 00:18:36,577 Jes? 409 00:18:36,577 --> 00:18:39,410 Publiko: Ĉu ni atentas al la kazo kie n estas ne en la listo? 410 00:18:39,410 --> 00:18:40,460 Hannah: Se n estas ne en la listo? 411 00:18:40,460 --> 00:18:43,501 Ĉio tio okazos estas vi iras ankaŭ persisti tra kaj ripeti 412 00:18:43,501 --> 00:18:47,616 tra, kaj tiam, vi tuj atingi puntero estante nula, 413 00:18:47,616 --> 00:18:48,990 kaj tiam vi tuj estos farata. 414 00:18:48,990 --> 00:18:50,812 >> Publiko: Faru tiel ni havas redoni ion? 415 00:18:50,812 --> 00:18:51,520 Hannah: Ni povus. 416 00:18:51,520 --> 00:18:54,500 La vojo ke se difinita ĉi funkcio, mi nur diru ke ĝi revenas 417 00:18:54,500 --> 00:18:55,770 vanigas sendistinge. 418 00:18:55,770 --> 00:18:58,360 Sed vi povus havi ion kiel reveni entjero, 419 00:18:58,360 --> 00:19:00,920 kaj ĝi revenos negativa 1 se ĝi malsukcesas. 420 00:19:00,920 --> 00:19:03,070 Iel simile. 421 00:19:03,070 --> 00:19:04,494 Demandojn with-- jes? 422 00:19:04,494 --> 00:19:05,410 Publiko: [inaudible]? 423 00:19:05,410 --> 00:19:05,993 Hannah: Pardonu? 424 00:19:05,993 --> 00:19:07,419 Publiko: [inaudible]? 425 00:19:07,419 --> 00:19:07,960 Hannah: Sure. 426 00:19:07,960 --> 00:19:11,730 Do tio estas la actual-- unufoje ni faris tiun tutan laboron de movi 427 00:19:11,730 --> 00:19:16,530 ĉiuj tiuj sagoj ĉirkaŭe, nia tuta celo estis forigi la nodo 428 00:19:16,530 --> 00:19:18,230 ke ni serĉas. 429 00:19:18,230 --> 00:19:21,610 Do en ĉi tiu kazo, liberigante puntero, se mi montrante kvin, 430 00:19:21,610 --> 00:19:24,670 estas kiel viŝi ĉi mezo nodo. 431 00:19:24,670 --> 00:19:27,250 Tio estas la libera puntero parto. 432 00:19:27,250 --> 00:19:29,090 Tio havas sencon? 433 00:19:29,090 --> 00:19:31,390 >> Publiko: Do ​​eĉ pensis vi faris ne [inaudible]? 434 00:19:31,390 --> 00:19:36,060 >> Hannah: Do ni supozis komence ni havis iujn liston kiu estis already-- 435 00:19:36,060 --> 00:19:37,220 oni jxetis ĉi kune. 436 00:19:37,220 --> 00:19:39,761 Do, por konstrui ĉi lerta, ili must've [inaudible]. 437 00:19:39,761 --> 00:19:42,190 438 00:19:42,190 --> 00:19:42,750 Cool. 439 00:19:42,750 --> 00:19:44,490 Ion alian kun tio? 440 00:19:44,490 --> 00:19:46,386 Jes? 441 00:19:46,386 --> 00:19:49,204 >> Publiko: Kio se la elenco ne egalas la nulan linion? 442 00:19:49,204 --> 00:19:49,704 [Inaudible]? 443 00:19:49,704 --> 00:19:52,289 444 00:19:52,289 --> 00:19:53,080 Hannah: Dekstra tie? 445 00:19:53,080 --> 00:19:53,840 Publiko: Yeah. 446 00:19:53,840 --> 00:19:57,370 Hannah: OK, ĉiuj mi faras Estas mi simple certigi 447 00:19:57,370 --> 00:20:03,250 ke antaŭ ol mi provos dereference lerta, antaŭ mi provas aliri la antaŭa, 448 00:20:03,250 --> 00:20:07,210 Mi volas certigi ke ne nula tuj kiam mi ne ricevos seg kulpo. 449 00:20:07,210 --> 00:20:08,400 Cool. 450 00:20:08,400 --> 00:20:10,820 >> OK, mi konas ĉi estis tute multon akiri tra. 451 00:20:10,820 --> 00:20:14,950 Do ĉi slide estos disponigis al vi. 452 00:20:14,950 --> 00:20:17,341 Do vi povas iri tra ĝi pli detale. 453 00:20:17,341 --> 00:20:17,841 Jes? 454 00:20:17,841 --> 00:20:19,749 >> Publiko: Kial la listo [inaudible]? 455 00:20:19,749 --> 00:20:24,129 456 00:20:24,129 --> 00:20:24,670 Hannah: Sure. 457 00:20:24,670 --> 00:20:27,390 Do lerta vere notas al tiu elemento ĉi tie, 458 00:20:27,390 --> 00:20:29,200 la unua elemento en la listo. 459 00:20:29,200 --> 00:20:30,748 Do ĝi ne povas havi antaŭan. 460 00:20:30,748 --> 00:20:31,736 Jes? 461 00:20:31,736 --> 00:20:35,194 >> Publiko: Ĉu la puntero punkto al la sama adreso en memoro? 462 00:20:35,194 --> 00:20:38,404 Ĉu ĝi notas al la sama adreso en memoro kiel la nodo 463 00:20:38,404 --> 00:20:40,640 ke ĝi estas indikante? 464 00:20:40,640 --> 00:20:43,865 >> Hannah: Jes, ĝi notas al tiu nodo en memoro. 465 00:20:43,865 --> 00:20:47,190 >> Publiko: Rajto, tiel kiam vi [inaudible]? 466 00:20:47,190 --> 00:20:50,580 >> Hannah: Iel, jes. 467 00:20:50,580 --> 00:20:51,280 Akcepti. 468 00:20:51,280 --> 00:20:52,997 Bone, ni movi kune kun tiu. 469 00:20:52,997 --> 00:20:55,330 Kaj se vi havas pli da demandoj, Stick Around fine, 470 00:20:55,330 --> 00:20:57,130 kaj ni povas iri tra ĝi denove. 471 00:20:57,130 --> 00:20:58,120 OK, malvarmeta. 472 00:20:58,120 --> 00:21:00,490 Nun, ni preni pluveturi por hash tabloj, provas, 473 00:21:00,490 --> 00:21:04,940 kaj arboj, kio vi ricevis la super konanta en p-aro kvin, Speller. 474 00:21:04,940 --> 00:21:11,020 >> Do hash tablo estas nur tabelo kun unuope ligitaj listoj 475 00:21:11,020 --> 00:21:14,050 aŭ duoble ligitaj listoj elspezi ĝin. 476 00:21:14,050 --> 00:21:16,380 Do ni havas ian de asocieca tabelo. 477 00:21:16,380 --> 00:21:21,280 Kaj kiom ni scias, kiu el tiuj arrays rubujoj por eniri, 478 00:21:21,280 --> 00:21:24,137 ni uzu hash funkcio. 479 00:21:24,137 --> 00:21:26,470 Do en ĉi tiu kazo, vi povas paroli divenu la hash funkcio 480 00:21:26,470 --> 00:21:28,636 estus simple bazitaj sur iuj de la enigo kaj eligo? 481 00:21:28,636 --> 00:21:31,392 482 00:21:31,392 --> 00:21:33,194 >> Publiko: Letero nombro de la alfabeto. 483 00:21:33,194 --> 00:21:33,860 Hannah: Ekzakte. 484 00:21:33,860 --> 00:21:36,160 Ĝi simple metas ilin en alfabeta ordo. 485 00:21:36,160 --> 00:21:39,280 Ĉio ke startas kun A estas metita en la unuan sitelon. 486 00:21:39,280 --> 00:21:43,340 Ĉiu kun B estas metita en la dua sitelo tiel plu, kaj tiel plu. 487 00:21:43,340 --> 00:21:45,620 Imponega, OK. 488 00:21:45,620 --> 00:21:48,980 Kaj hash funkcio estas ajna funkcio kiu prenas en vorto 489 00:21:48,980 --> 00:21:51,910 kaj mi diros al vi, kion Bucket ĝi apartenas en. 490 00:21:51,910 --> 00:21:55,150 Do kion eniron en nia tabelo ĝi apartenas en. 491 00:21:55,150 --> 00:21:58,080 >> Do ĉiufoje mi donos mian hash funkcii unuvorte 492 00:21:58,080 --> 00:22:00,660 ĝi devus diri al mi la saman meti cxiun solan fojon. 493 00:22:00,660 --> 00:22:03,270 Do se ni uzas la hash funkcio el la antaŭaj slide 494 00:22:03,270 --> 00:22:05,950 kien ni ordig de la unua litero de la alfabeto, 495 00:22:05,950 --> 00:22:08,230 ĉiu tempo mi donos mian hash funkcio "pomo" 496 00:22:08,230 --> 00:22:10,180 ĝi devus doni min reen 0. 497 00:22:10,180 --> 00:22:12,890 Do se mi havas pomon meti en mian hash tablo, 498 00:22:12,890 --> 00:22:17,700 se mi donos "pomo" en mian hash funkcio, ĝi devus diri, iru metis ĝin en rubujon 0. 499 00:22:17,700 --> 00:22:19,980 Se mi serĉas pomo en mia hash tablo 500 00:22:19,980 --> 00:22:24,340 kaj mi diras, kie potenco pomon vivas, vi demandu vian hash funkcio. 501 00:22:24,340 --> 00:22:26,900 Kaj ĝi diras, iru al sitelo 0. 502 00:22:26,900 --> 00:22:29,150 Bone? 503 00:22:29,150 --> 00:22:32,660 Demandoj kun kradaj funkcioj? 504 00:22:32,660 --> 00:22:34,570 Imponega. 505 00:22:34,570 --> 00:22:37,320 >> Ĉi tie estas iomete pli detala klarigo 506 00:22:37,320 --> 00:22:39,570 de kia hash funkcio povus aspekti. 507 00:22:39,570 --> 00:22:42,230 508 00:22:42,230 --> 00:22:42,960 Bone. 509 00:22:42,960 --> 00:22:45,960 Nun, la problemo kun hash funkcioj estas en ideala mondo, 510 00:22:45,960 --> 00:22:48,870 ni nur havus unu afero en ĉiu sitelo. 511 00:22:48,870 --> 00:22:50,900 Sed fakte, ekzistas ne nur unu vorton 512 00:22:50,900 --> 00:22:54,280 kiu komenciĝas per A. Jen ne nur unu vorto, kiu komenciĝas per B. Do 513 00:22:54,280 --> 00:22:56,960 en tiu kazo, se ni subite get "bero" 514 00:22:56,960 --> 00:22:58,710 kaj ni volas meti ĝin en nian hash tablo, 515 00:22:58,710 --> 00:23:03,640 kaj ni vidu, ho, ne, banano estas jam ekzistas, kio estas ni Gonna Do? 516 00:23:03,640 --> 00:23:05,900 >> Nu, ni havas du eblojn. 517 00:23:05,900 --> 00:23:07,990 La unua eblo estas lineara sondado, kiu 518 00:23:07,990 --> 00:23:11,100 nur signifas iras trovi la proksima malplena sitelo. 519 00:23:11,100 --> 00:23:14,100 Iru trovi la proksima malplena tabelo eniro. 520 00:23:14,100 --> 00:23:15,750 Kaj ĝuste meti "bero" tie. 521 00:23:15,750 --> 00:23:18,880 Do mi scias ke estas supozeble iru kun banano en sitelo unu. 522 00:23:18,880 --> 00:23:22,155 Sed ĝuste meti ĝin en rubujon tri, ĉar sitelo tri estas malplena. 523 00:23:22,155 --> 00:23:24,806 524 00:23:24,806 --> 00:23:26,680 Alia eblo estas probable kion vi implementar 525 00:23:26,680 --> 00:23:29,220 en via p-aro, kie vi havis apartan sinsekvon. 526 00:23:29,220 --> 00:23:33,990 Do ĉiu el viaj siteloj, ĉiu de via tabelo elementoj, 527 00:23:33,990 --> 00:23:38,410 ne nur tenas unu vortoj, sed reale tenas puntero al listo de vortoj. 528 00:23:38,410 --> 00:23:41,880 Tiel ke se vi havis banano en via hash tablo 529 00:23:41,880 --> 00:23:44,740 kaj vi subite volis aldoni bero, neniu problemo. 530 00:23:44,740 --> 00:23:51,110 Nur aldonu bero en la fino, aŭ al la komenco, de via ligitaj listo. 531 00:23:51,110 --> 00:23:54,040 OK, awesome. 532 00:23:54,040 --> 00:23:58,490 Demandoj kun hash tabloj antaux ni iru? 533 00:23:58,490 --> 00:23:59,850 >> Bone. 534 00:23:59,850 --> 00:24:01,070 Arboj kaj peras. 535 00:24:01,070 --> 00:24:07,980 OK, do tiu estis alia eblo por implementar vortaro. 536 00:24:07,980 --> 00:24:09,100 Vi povus esti farita provo. 537 00:24:09,100 --> 00:24:13,420 Do estas speciala speco de arbo ke kondutas kiel multi-nivelo hash tablo. 538 00:24:13,420 --> 00:24:16,862 Do, vi vidos la foton kie vi havas tabelo ke 539 00:24:16,862 --> 00:24:19,320 notas al faskon de arrays ke punkto al aro da matricoj 540 00:24:19,320 --> 00:24:20,390 ke punkto al aro da matricoj. 541 00:24:20,390 --> 00:24:23,140 Kaj ni vidos precize kion tio aspektus kiel sur futura diapozitivo. 542 00:24:23,140 --> 00:24:26,070 Kaj pli ĝenerale, arbo Estas simple neniu datumstrukturo 543 00:24:26,070 --> 00:24:29,710 en kiu la datumoj estas organizita en iu hierarkio. 544 00:24:29,710 --> 00:24:32,610 Do kie ni vidis ni havas ia kompreno 545 00:24:32,610 --> 00:24:36,130 de pinta nivelo, sekva nivelo, proksima nivelo, sekva nivelo. 546 00:24:36,130 --> 00:24:39,690 Do ĉi tiu estas probable la plej klara kun iuj specifaj ekzemploj. 547 00:24:39,690 --> 00:24:40,880 Do jen nia arbo. 548 00:24:40,880 --> 00:24:42,970 Vi povas vidi ke ĝi havas apartajn nivelojn 549 00:24:42,970 --> 00:24:45,480 ke ni komencu per tiu radiko nodo, unu. 550 00:24:45,480 --> 00:24:47,640 Kaj ni povas iri malsupren tra nia arbo. 551 00:24:47,640 --> 00:24:50,730 552 00:24:50,730 --> 00:24:53,910 >> A duuma arbo estas aparta tipo de arbo. 553 00:24:53,910 --> 00:24:56,770 Kaj la sola especificación por duuma arbo 554 00:24:56,770 --> 00:25:01,130 estas ke ĉiu nodo havas maksimume du folioj. 555 00:25:01,130 --> 00:25:03,960 Do vi ne tuj vidas ian de tiuj nodoj havas tri aŭ kvar 556 00:25:03,960 --> 00:25:06,880 aŭ iu alia nombro de folioj. 557 00:25:06,880 --> 00:25:11,310 Kaj tiam eĉ pli specifaj estas duuma serĉo arbo 558 00:25:11,310 --> 00:25:18,010 kie ĉiu nodo al la maldekstra de la nodo tuj havas valoron pli malgranda. 559 00:25:18,010 --> 00:25:21,180 Kaj cxiun valoron al la dekstra tuj estos granda. 560 00:25:21,180 --> 00:25:26,900 Do se vi vidas 44 estas ĉe nia radiko, maldekstren, 11, 22, kaj 33 561 00:25:26,900 --> 00:25:28,940 estas ĉiuj malpli ol nia radiko. 562 00:25:28,940 --> 00:25:33,890 Kaj dekstre estas ĉiuj nombroj bigger-- 66, 55, kaj 77. 563 00:25:33,890 --> 00:25:37,380 Kaj ĉi tiu propraĵo veras vera je ĉiu nivelo de la arbo. 564 00:25:37,380 --> 00:25:42,690 >> Do kiam ni iros al 22, 11, kaj 33, ankoraŭ 11 565 00:25:42,690 --> 00:25:46,950 estas pli malgranda ol 22 kaj 33 estas pli granda ol 22. 566 00:25:46,950 --> 00:25:50,160 Kaj ĉi faciligante serĉo ĉar se ni serĉas numeron, 567 00:25:50,160 --> 00:25:53,877 ni scias precize kion branĉo sekvi suben. 568 00:25:53,877 --> 00:25:56,210 Do tiu devus memorigi vin Iomete de duuma serĉo. 569 00:25:56,210 --> 00:25:56,967 Yeah? 570 00:25:56,967 --> 00:25:58,835 >> Publiko: Do ​​kiam vi estas priskribante duuma, 571 00:25:58,835 --> 00:26:00,587 vi diris havas maksimume du folioj? 572 00:26:00,587 --> 00:26:01,170 Hannah: Hmm. 573 00:26:01,170 --> 00:26:02,580 Publiko: Could ĝi havas malpli? 574 00:26:02,580 --> 00:26:03,121 Hannah: Yeah. 575 00:26:03,121 --> 00:26:06,720 Do ni diru, ekzemple, vi ne havas eĉ multaj aferoj 576 00:26:06,720 --> 00:26:11,791 kaj vi ne povis plenigi ĉiujn viajn folioj, estas delikata se oni havas unu. 577 00:26:11,791 --> 00:26:12,290 OK? 578 00:26:12,290 --> 00:26:12,789 Imponega. 579 00:26:12,789 --> 00:26:15,930 Ajna alia demandojn sur arboj? 580 00:26:15,930 --> 00:26:16,670 Akcepti. 581 00:26:16,670 --> 00:26:20,110 >> Reen al nia tries kiel Mi parolis pri iomete pli frue, 582 00:26:20,110 --> 00:26:23,900 kiel ni havas ĉi tiuj multi-nivelo arrays. 583 00:26:23,900 --> 00:26:26,280 Do en ĉi tiu kazo, ni komencu ĉe la supro. 584 00:26:26,280 --> 00:26:29,030 Kaj ni povas sekvi ajnan donita vorto suben. 585 00:26:29,030 --> 00:26:30,780 Do diru ni volis serĉi Turing. 586 00:26:30,780 --> 00:26:34,380 Ni starti je T, sekvu ĝin malsupren por tabelo kiu enhavas U, 587 00:26:34,380 --> 00:26:37,350 kaj sekvu ĝin malsupren ĝis ni atingi tiun malgrandan delto kiu 588 00:26:37,350 --> 00:26:39,060 diras al ni, jes, vi trovis unu vorton. 589 00:26:39,060 --> 00:26:43,200 590 00:26:43,200 --> 00:26:44,120 Klara sur tries? 591 00:26:44,120 --> 00:26:48,138 Io ajn iri tien? 592 00:26:48,138 --> 00:26:48,908 Jes? 593 00:26:48,908 --> 00:26:51,866 Publiko: Ĉu la simbolo de delto devas okupi spacon ene try? 594 00:26:51,866 --> 00:26:54,532 Hannah: Yeah, do tio ne eble eĉ bezonas esti delto. 595 00:26:54,532 --> 00:26:57,760 Sed ni bezonas iun manieron diru nia computer-- bedaŭras, 596 00:26:57,760 --> 00:27:01,130 por ke ni sciu ke Tur ne estas vorto. 597 00:27:01,130 --> 00:27:04,180 Ĉar ni diras, ke ni ne havis tiu koncepto de delta, tiu koncepto 598 00:27:04,180 --> 00:27:09,850 de gratuloj, vi trovis vorton, irus tra kaj persisti T-U-R, 599 00:27:09,850 --> 00:27:11,300 kaj tiam diri, awesome, mi trovis ĝin! 600 00:27:11,300 --> 00:27:12,670 Ĝi devas esti vorto. 601 00:27:12,670 --> 00:27:13,720 Sed estas vere ne. 602 00:27:13,720 --> 00:27:15,310 Ni volas tutaj Turing por esti vorto. 603 00:27:15,310 --> 00:27:17,760 Do ni devas ion ĉe la fino kiu diras, gratuloj, 604 00:27:17,760 --> 00:27:19,051 vi trovis tauxga vorto. 605 00:27:19,051 --> 00:27:21,680 Publiko: Do ​​se vi havis kiel 26 literoj en la alfabeto, 606 00:27:21,680 --> 00:27:24,560 ĉu vi efektive havas 27 klavoj en via provi? 607 00:27:24,560 --> 00:27:26,010 >> Hannah: Imponega, yeah. 608 00:27:26,010 --> 00:27:28,210 Do fakte, mi kredas ke estos sur la proksima glito. 609 00:27:28,210 --> 00:27:29,440 Ta-da! 610 00:27:29,440 --> 00:27:32,880 Kie se vi havas nodo en via provo, vi estas 611 00:27:32,880 --> 00:27:35,800 tuj havos 27 idoj anstataŭ 26. 612 00:27:35,800 --> 00:27:39,010 613 00:27:39,010 --> 00:27:40,050 Demandojn kun tiu? 614 00:27:40,050 --> 00:27:40,550 Yeah? 615 00:27:40,550 --> 00:27:44,569 Publiko: Kial tries prenu tiom multa spaco [inaudible] kiel vi iros? 616 00:27:44,569 --> 00:27:47,629 Kial konsiderata [inaudible]? 617 00:27:47,629 --> 00:27:48,170 Hannah: Sure. 618 00:27:48,170 --> 00:27:48,790 Ni iru reen. 619 00:27:48,790 --> 00:27:52,350 La demando estas, kial estas tries multe pli granda, 620 00:27:52,350 --> 00:27:54,620 ol iu kiel hash tablo. 621 00:27:54,620 --> 00:27:57,790 Do ĉiu el tiuj niveloj, eĉ se ili ne eltiris ĉi tie, 622 00:27:57,790 --> 00:28:01,250 vi devas havi ĉiuj 26 karakteroj. 623 00:28:01,250 --> 00:28:04,420 Kaj la kialo ke vi ne povas diras, ho, sed kiel por Turing, mi 624 00:28:04,420 --> 00:28:07,570 Ne necesas havi iun el tiuj samajn aferojn sur la nivelo de U. Nu, 625 00:28:07,570 --> 00:28:11,390 se subite vi volis aldoni iu kiu estis kiel T-H, 626 00:28:11,390 --> 00:28:14,800 vi bezonus havi la kapablo de aldoni tiun vorton. 627 00:28:14,800 --> 00:28:17,330 Do por ĉiu unuopa litero, vi tuj devos 628 00:28:17,330 --> 00:28:19,730 havi faskon da arrays elspezi ĝin. 629 00:28:19,730 --> 00:28:24,060 Do vi povas vidi kiel ĝi volas akiri vere granda, vere rapida. 630 00:28:24,060 --> 00:28:26,560 Ajna alia demandojn? 631 00:28:26,560 --> 00:28:28,980 Bone. 632 00:28:28,980 --> 00:28:29,832 Yeah? 633 00:28:29,832 --> 00:28:33,210 >> Publiko: Kiam estas tries rapida ol hash tabloj? 634 00:28:33,210 --> 00:28:36,280 >> Hannah: Kiam estas tries rapida ol hash tabloj? 635 00:28:36,280 --> 00:28:39,120 Do se vi havus vere malbona hash funkcio. 636 00:28:39,120 --> 00:28:41,840 Do diru min kiel, Jen via hash funkcio. 637 00:28:41,840 --> 00:28:43,660 Neniu afero kiu vorto vi donu al mi, mi estas ĉiam 638 00:28:43,660 --> 00:28:47,740 tuj metis ĝin en tabelo eniro 0. 639 00:28:47,740 --> 00:28:52,000 Kaj tiel ni finas kun nur metante ĉiu en unu granda longa ligillisto. 640 00:28:52,000 --> 00:28:58,740 Kaj tiel oni lookup tempo prenus ĉe plej malbona n se ĝi estas en la fino de nia listo. 641 00:28:58,740 --> 00:29:03,150 Kun try, ni nur devas persisti tra la literoj en la vorto. 642 00:29:03,150 --> 00:29:07,080 Do eĉ se ni aldonis faskon pli da vortoj al nia provo, 643 00:29:07,080 --> 00:29:09,620 ne lin portus al ni plu trovi apartan vorton. 644 00:29:09,620 --> 00:29:11,750 >> Ĉiuj ni devas fari estas, por Ekzemple, en tiu kazo, 645 00:29:11,750 --> 00:29:17,170 Supozu ke ni serĉas zoom, ni nur devas persisti super 646 00:29:17,170 --> 00:29:19,840 Z-ho-ho-M, kvar literoj. 647 00:29:19,840 --> 00:29:22,250 Do tio estas nur la longeco de la vorto zoom. 648 00:29:22,250 --> 00:29:25,400 Ne gravas kiom da pli da vortoj ni metis en ĉi provo. 649 00:29:25,400 --> 00:29:30,225 Ni povas ĉiam akiri ĝin en tiuj kvar ŝtupoj. 650 00:29:30,225 --> 00:29:31,215 Imponega. 651 00:29:31,215 --> 00:29:32,205 Jes? 652 00:29:32,205 --> 00:29:34,185 >> Publiko: Tiel [inaudible] estas tabelo, dekstra? 653 00:29:34,185 --> 00:29:35,322 >> Hannah: Hmm. 654 00:29:35,322 --> 00:29:37,155 Publiko: Se vi estas serĉi [inaudible], 655 00:29:37,155 --> 00:29:40,929 ĉu vi devas iri tra via tabelo trovi [inaudible]? 656 00:29:40,929 --> 00:29:41,470 Hannah: Sure. 657 00:29:41,470 --> 00:29:44,000 Publiko: Ĉu tio ne prenos pli da tempo? 658 00:29:44,000 --> 00:29:46,370 Hannah: Se Mi iras al diras ke mia tabelo estas ĉiam 659 00:29:46,370 --> 00:29:49,250 tuj estos A, B, C, D, E, F, G, bla bla bla, 660 00:29:49,250 --> 00:29:51,630 do se mi ĉiam scias, ke tio en la sama ĝusta ordo, 661 00:29:51,630 --> 00:29:53,880 se mi ĉiam scias, ke tio laŭalfabete, 662 00:29:53,880 --> 00:29:57,860 Mi povas nur diri O estas nombro tiel kaj tiel en la alfabeto. 663 00:29:57,860 --> 00:29:59,620 Nur salti al tiu loko. 664 00:29:59,620 --> 00:30:01,860 Ĉar rememoru, kun sensilo, ni povas konsenti 665 00:30:01,860 --> 00:30:06,590 ajna elemento de tiu tabelo en konstanta tempo se ni scias kie ni serĉas. 666 00:30:06,590 --> 00:30:09,080 667 00:30:09,080 --> 00:30:09,580 Yeah? 668 00:30:09,580 --> 00:30:12,005 >> Publiko: Sur la antaŭa gliti [inaudible] 27 669 00:30:12,005 --> 00:30:14,430 sed 26 por la unua unu. 670 00:30:14,430 --> 00:30:15,400 >> Hannah: Pardonu? 671 00:30:15,400 --> 00:30:18,800 >> Publiko: Ĉu ne la unua unu 0, do ĉu ne estus 26? 672 00:30:18,800 --> 00:30:24,900 >> Hannah: Certe, do kiam ni diras 27, tio estas tuj donos al ni indicoj 0 tra 26. 673 00:30:24,900 --> 00:30:28,220 Sed se vi reale kalkuli tiuj el, ĝi tuj estos 27. 674 00:30:28,220 --> 00:30:30,007 Bona demando. 675 00:30:30,007 --> 00:30:30,590 Ion alian? 676 00:30:30,590 --> 00:30:31,200 Yeah? 677 00:30:31,200 --> 00:30:34,420 >> Publiko: Tiaj estas tries malrapida ol hash tabloj? 678 00:30:34,420 --> 00:30:37,920 >> Hannah: Tries tuj estos, en teorio, pli rapida ol hash tabloj 679 00:30:37,920 --> 00:30:39,760 sed prenu pli da memoro. 680 00:30:39,760 --> 00:30:40,534 Yeah? 681 00:30:40,534 --> 00:30:41,450 Publiko: [inaudible]? 682 00:30:41,450 --> 00:30:45,770 683 00:30:45,770 --> 00:30:47,484 >> Hannah, Mi bedaŭras, mi ne aŭdis vin. 684 00:30:47,484 --> 00:30:48,400 Publiko: [inaudible]. 685 00:30:48,400 --> 00:30:51,250 686 00:30:51,250 --> 00:30:54,100 0 ĝis 25 donas vin 26. 687 00:30:54,100 --> 00:30:56,958 >> Hannah: 0 ĝis 25 farus doni al vi 26, dekstre. 688 00:30:56,958 --> 00:30:58,457 >> Publiko: Kaj poste [inaudible]. 689 00:30:58,457 --> 00:30:59,040 Hannah: Rajto. 690 00:30:59,040 --> 00:31:04,760 Do la nombro ni preciziganta estas la nombro de aĵoj en nia tabelo. 691 00:31:04,760 --> 00:31:07,260 Do se ni havas 27, estas tuj donos al ni 0 692 00:31:07,260 --> 00:31:10,620 tra 26, kiu donos ni salonon por, en tiu kazo, 693 00:31:10,620 --> 00:31:12,770 Mi ne inkludante apostrofo. 694 00:31:12,770 --> 00:31:17,040 Do ni nun estas 0 tra 25 estas la unuaj 26 literoj de la alfabeto, 695 00:31:17,040 --> 00:31:18,990 aŭ ĉiuj 26 literoj de la alfabeto. 696 00:31:18,990 --> 00:31:21,190 Kaj tiam tiu lasta afero, ĉe eniro 26, estas 697 00:31:21,190 --> 00:31:24,598 tuj estos la ĉeko markon, la delto. 698 00:31:24,598 --> 00:31:26,960 Ion alian? 699 00:31:26,960 --> 00:31:29,130 Imponega. 700 00:31:29,130 --> 00:31:30,020 Perdita mia spaco. 701 00:31:30,020 --> 00:31:31,020 OK, malvarmeta. 702 00:31:31,020 --> 00:31:33,240 >> Do ni jam tuŝis sur ĉi. 703 00:31:33,240 --> 00:31:37,430 Sed la granda komerco ekstere inter tries kaj hash tabloj 704 00:31:37,430 --> 00:31:39,720 Estas kiu provas havigi, en teorio, konstanta serĉi 705 00:31:39,720 --> 00:31:42,890 fojoj sed uzu tutajn multan memoron. 706 00:31:42,890 --> 00:31:46,495 Bone, nun ni havas iomete malpli komplikaj strukturoj, 707 00:31:46,495 --> 00:31:49,640 kaj ni povas fari per C, kaj ni iru dekstren kune. 708 00:31:49,640 --> 00:31:51,930 >> Do stakoj, ni vidis tion en lekcio kie vi 709 00:31:51,930 --> 00:31:55,020 havi iun kiel pilo de pletoj kie 710 00:31:55,020 --> 00:31:57,330 la lasta afero vi metis sur la stako tuj 711 00:31:57,330 --> 00:31:59,500 esti la unua kiu despegar. 712 00:31:59,500 --> 00:32:02,880 Do tio estas kio vere difinas pilo estas ke la lasta afero vi surmetis 713 00:32:02,880 --> 00:32:06,080 tuj estos la unua afero vi forflugos. 714 00:32:06,080 --> 00:32:09,279 Kaj la terminologion ke ni uzu se ni tuj metis ion, 715 00:32:09,279 --> 00:32:12,070 se ni iras aldoni ion nia stako, ni nomas tion premante. 716 00:32:12,070 --> 00:32:14,970 Kaj se ni akceptas ion malproksime, ni nomas ĝin popping. 717 00:32:14,970 --> 00:32:17,080 Se ni iras al praktikigi pilo, ni 718 00:32:17,080 --> 00:32:20,660 bezonas certi spuri ambaŭ la grandecon kaj la kapablo. 719 00:32:20,660 --> 00:32:24,940 Do la tuta numero de elementoj ni povas teni kaj la aktuala nombro de elementoj 720 00:32:24,940 --> 00:32:27,880 ke ni tenante. 721 00:32:27,880 --> 00:32:29,885 >> Kaj tre simile, ni havas vostoj. 722 00:32:29,885 --> 00:32:34,510 Kaj la sola diferenco Estas anstataŭ kun stakoj, 723 00:32:34,510 --> 00:32:37,630 ni diris la lastan aĵon ni surmetis Estas la unua horo ni demetu. 724 00:32:37,630 --> 00:32:40,940 Do kun vostoj, la ni unue metu en 725 00:32:40,940 --> 00:32:43,129 tuj estos la ni unue eltiri. 726 00:32:43,129 --> 00:32:45,420 Do ĉi tio estas kiel se vi estas efektive tegante ekloĝis en vendejo 727 00:32:45,420 --> 00:32:48,140 kaj vi estante helpita, tiam la unua persono en linio 728 00:32:48,140 --> 00:32:50,880 devus esti la unua persono esti helpita. 729 00:32:50,880 --> 00:32:52,220 Do tio estus vosto. 730 00:32:52,220 --> 00:32:55,880 >> Do ni bezonas konservi trako de la grandeco, kapablo, kaj estro kiam ni estas 731 00:32:55,880 --> 00:33:01,130 tuj prenos ĉiuj super la fronto de la diskutlisto anstataŭ la dorso. 732 00:33:01,130 --> 00:33:03,480 Demandojn sur tio? 733 00:33:03,480 --> 00:33:06,330 Ajna C demandojn tedante vi? 734 00:33:06,330 --> 00:33:09,590 Datumstrukturoj, ia de tiu amuza stuff? 735 00:33:09,590 --> 00:33:10,530 Bone, malvarmeta. 736 00:33:10,530 --> 00:33:14,120 Do mi devos transdoni ilin al Alison al salti en iuj pli programado. 737 00:33:14,120 --> 00:33:15,965 >> Alison: Ho, ni jam vidos. 738 00:33:15,965 --> 00:33:17,370 Ni vidos kiel bone mi faras tie ĉi. 739 00:33:17,370 --> 00:33:21,410 OK, mi tuj provos ekflugos tra ĉi stuff, knaboj. 740 00:33:21,410 --> 00:33:24,540 Hannah iris tre en profundo sur ĉiujn ŝiajn aferojn. 741 00:33:24,540 --> 00:33:26,900 Mi tuj provos doni vi rapidan ekblovo Superrigardo 742 00:33:26,900 --> 00:33:31,290 tiel ke ni povas atingi al Davin kun ĉiuj la amuza JavaScript kaj sekureco aferoj 743 00:33:31,290 --> 00:33:33,380 ke eble vi reale volas aŭdi pli pri. 744 00:33:33,380 --> 00:33:36,600 >> OK, kiel Hannah diris, se vi havas demandojn, 745 00:33:36,600 --> 00:33:39,170 Mi iras tro rapide, bonvolu, sciigu min. 746 00:33:39,170 --> 00:33:42,114 Mi respondos demandojn kiel necesa. 747 00:33:42,114 --> 00:33:45,280 Do por komenci, ni tuj komencu per Probable unu el la unuaj aferoj 748 00:33:45,280 --> 00:33:48,730 vi lernis kun retejo programado, permesojn. 749 00:33:48,730 --> 00:33:52,720 Do chmod, vi uloj devus vizitis majstroj en tiu kun ĉiuj retejo 750 00:33:52,720 --> 00:33:54,870 programado kiu vin fagoj estintaj farante últimamente. 751 00:33:54,870 --> 00:33:57,320 Estas esence nur komando kiu ŝanĝas la permesojn 752 00:33:57,320 --> 00:34:00,779 aŭ la aliro permesojn de nia dosiersistemo celoj. 753 00:34:00,779 --> 00:34:02,570 Kompreneble, por fakte vidi tiujn, se vi estas 754 00:34:02,570 --> 00:34:04,910 havante iun problemon kun tiuj dum via problemo aroj, 755 00:34:04,910 --> 00:34:11,460 Vi eble uzis ls -l, kiu estas longa, akiri la vido ia kiel tiu, 756 00:34:11,460 --> 00:34:14,209 kie vi reale vidi la tutan la permesojn por dosiero. 757 00:34:14,209 --> 00:34:16,850 758 00:34:16,850 --> 00:34:20,732 >> Kaj vere, ni nur tuj iros tra belaj rapide simple bela 759 00:34:20,732 --> 00:34:21,940 tre kio ĉiu el tiuj signifas. 760 00:34:21,940 --> 00:34:24,481 Do ni d dekstra tie, kiuj ĝuste staras por la dosierujo. 761 00:34:24,481 --> 00:34:26,790 762 00:34:26,790 --> 00:34:31,739 Evidente ĉi tie, ni vidas rwx, kiu estas legebla, konservebla, kaj plenumebla. 763 00:34:31,739 --> 00:34:37,090 Tiuj povus ankaŭ esti prezentita kiel bitoj, kiun ni ricevos en en la sekva paĝo. 764 00:34:37,090 --> 00:34:40,699 Do ĉiu triada ke ni vidis tie, tuj kiam estas tri triadoj. 765 00:34:40,699 --> 00:34:48,120 Ni rwx, r nenio x kaj r nenio x por tiu unua dosiero. 766 00:34:48,120 --> 00:34:49,690 Estas ĉi tiu ĝenerala strukturo. 767 00:34:49,690 --> 00:34:50,940 >> Do ni havas iujn dosierujo. 768 00:34:50,940 --> 00:34:53,999 Ni havas iujn uzanto grupo kun tiuj permesoj. 769 00:34:53,999 --> 00:34:57,040 Iuj grupo kiu havas tiujn permesojn, kaj mondo kiu havas permeson. 770 00:34:57,040 --> 00:34:59,420 Vi povas pensi pri tiuj kiel Triad. 771 00:34:59,420 --> 00:35:01,130 Vi povas pensi pri tiuj kiel tri bitoj. 772 00:35:01,130 --> 00:35:04,060 Do ili povas teni valoroj ie ajn de 0 ĝis 773 00:35:04,060 --> 00:35:07,350 7, kiu estas kial kelkfoje ni havis vi faras chmod 774 00:35:07,350 --> 00:35:17,510 600 anstataŭ chmod rw ajn. 775 00:35:17,510 --> 00:35:19,170 Ni ricevos en ekzemplo tie. 776 00:35:19,170 --> 00:35:24,260 Sed esence, vi povas pensi de tiuj kiel ĉu ĝuste rwx, 777 00:35:24,260 --> 00:35:28,520 aŭ vi povas pensi pri ili kiel iuj numeron kie tiu unua tien 778 00:35:28,520 --> 00:35:31,480 reprezentas nombron inter 0 kaj 7, tiu dua 779 00:35:31,480 --> 00:35:33,970 reprezentas nombron inter 0 kaj 7, kaj la tria unu 780 00:35:33,970 --> 00:35:38,245 reprezentas nombron inter 0 kaj 7, OK? 781 00:35:38,245 --> 00:35:42,700 >> r havas valoron de 4. w havas valoron de 2, kaj x 782 00:35:42,700 --> 00:35:49,230 havas valoron de 1, kiu estas kial ĉi permeson tie estus chmod 700. 783 00:35:49,230 --> 00:35:53,520 Ĉar en ĉi tiu kazo tie, ĝi diras nin esti la unua bito tie estas spegulita sur. 784 00:35:53,520 --> 00:35:55,380 Do ni havas 4 por legado. 785 00:35:55,380 --> 00:35:58,730 La dua bito estas spegulita en por w, kiu estas 2, do nun ni havas 6. 786 00:35:58,730 --> 00:36:02,070 Kaj la tria bito spegulita sur por x, kiu estas 1, do ni preni sep. 787 00:36:02,070 --> 00:36:04,820 Kaj kompreneble, nia grupo kaj nia mondo estas ĉiu 0. 788 00:36:04,820 --> 00:36:07,770 Do ĉi tiu estas ankaŭ la ekvivalento de chmod 700. 789 00:36:07,770 --> 00:36:12,081 Kaj Mi certe provos kompreni la surĵeto inter tiuj. 790 00:36:12,081 --> 00:36:14,080 Mi ne certas se ĝi havas supreniru sur kvizon antaŭe, 791 00:36:14,080 --> 00:36:18,590 sed estus demando kiun mi povus demandi. 792 00:36:18,590 --> 00:36:22,110 >> Malmulta iras eĉ plui enen chmod tie, tie 793 00:36:22,110 --> 00:36:27,730 estas la tre ĝenerala strukturo de chmod alvokon. 794 00:36:27,730 --> 00:36:29,500 Do kompreneble, ni chmod tie. 795 00:36:29,500 --> 00:36:34,410 Referencoj, kion ĉi referencas al estas Kiuj ni donas ĉi tiujn permesojn al 796 00:36:34,410 --> 00:36:36,570 aŭ kiuj ni preni tiujn permesojn for de. 797 00:36:36,570 --> 00:36:44,330 Do ni havas ĉi tie en la permesoj, kiel ni donis al vi chmod alpago x, 798 00:36:44,330 --> 00:36:45,440 kiel ni vidos poste. 799 00:36:45,440 --> 00:36:48,460 justa signifas doni tiujn specifajn permesojn al ĉiuj. 800 00:36:48,460 --> 00:36:49,600 Donu ilin al ĉiuj. 801 00:36:49,600 --> 00:36:55,370 Do vi povus tre bone havi u plus x aŭ g plus x aŭ o plus x aŭ multnombraj 802 00:36:55,370 --> 00:36:55,870 largxo. 803 00:36:55,870 --> 00:36:59,280 Do tiu unua parto estas ĉiam tuj estos referencojn. 804 00:36:59,280 --> 00:37:03,220 Kiuj ni donas ĉi tiujn permesojn al, aŭ kiuj ni preni ilin for de? 805 00:37:03,220 --> 00:37:04,850 >> La dua unu estas la operatoro. 806 00:37:04,850 --> 00:37:07,350 Do vi infanoj plejparte pritraktis pli. 807 00:37:07,350 --> 00:37:12,140 Tio donas permesojn al Kiu vi donante ilin, 808 00:37:12,140 --> 00:37:14,840 dum minus, logike, forigas ilin. 809 00:37:14,840 --> 00:37:16,880 Do nenio tro terura tie. 810 00:37:16,880 --> 00:37:23,060 Kaj tiam Modoj estas kion nin raportas kun legado, skribo, aŭ ekzekuti. 811 00:37:23,060 --> 00:37:29,070 Do alpago x signifas doni plenumebla permesojn al ĉiuj. 812 00:37:29,070 --> 00:37:33,430 Kaj tiam, kompreneble, sur kiu specifa dosiero aŭ dosierujo. 813 00:37:33,430 --> 00:37:33,980 OK? 814 00:37:33,980 --> 00:37:36,010 Cxiu bona kun chmod? 815 00:37:36,010 --> 00:37:37,850 Ne tro malbona? 816 00:37:37,850 --> 00:37:42,417 >> OK, do HTML, iu el vi estas plenaĝiĝos to-- MySpace aĝo? 817 00:37:42,417 --> 00:37:44,750 Mi sendis tion al mia sekcio, kaj laŭvorte duono la personoj 818 00:37:44,750 --> 00:37:45,790 rigardis min kiel mi estis freneza. 819 00:37:45,790 --> 00:37:47,498 Kaj mi estis kiel, knaboj, ni ne estas ke maljuna. 820 00:37:47,498 --> 00:37:48,910 Venu. 821 00:37:48,910 --> 00:37:53,360 Do hipertekstaj Markup Language, ĝi estas honeste simple maniero por vi 822 00:37:53,360 --> 00:37:57,990 por montri iuj aĵoj en la reto. 823 00:37:57,990 --> 00:37:59,210 Do ĝi estas markado lingvo. 824 00:37:59,210 --> 00:38:00,640 Tio ne estas scripting lingvo. 825 00:38:00,640 --> 00:38:02,160 Mankas logiko en ĝi. 826 00:38:02,160 --> 00:38:05,710 Ĝi estas simple ŝanĝi la vojo io montriĝas. 827 00:38:05,710 --> 00:38:07,670 OK, do tio estas grava distingo fari. 828 00:38:07,670 --> 00:38:12,030 Ĝi estas konsiderita markado lingvon, ne estas scripting lingvo. 829 00:38:12,030 --> 00:38:15,100 >> Do jen ni havas niajn HTML etikedoj. 830 00:38:15,100 --> 00:38:20,390 Sur tiu diapozitivo estas verŝajne la plimulto de la kiuj vi devus koni 831 00:38:20,390 --> 00:38:22,390 kaj vere komforta kun. 832 00:38:22,390 --> 00:38:25,700 Do evidente, ni havas nia HTML tag, kiun 833 00:38:25,700 --> 00:38:29,930 designa ke ĉio en inter tiuj du estos HTML. 834 00:38:29,930 --> 00:38:33,070 Ni havas kelkajn ligilo, kiu evidente donos vin 835 00:38:33,070 --> 00:38:34,990 ligilo al ekstera retpaĝo. 836 00:38:34,990 --> 00:38:37,520 Iuj titolo, ene ni estro ĉi tie. 837 00:38:37,520 --> 00:38:40,020 Kaj ni havas nian korpon kun h1, kiu estas kaplinio, 838 00:38:40,020 --> 00:38:42,260 do ĝi faros lin bela kaj aŭdaca kaj pli granda. 839 00:38:42,260 --> 00:38:46,040 Kaj tiam, ni havas kelkajn p, kiu estas alineo. 840 00:38:46,040 --> 00:38:49,000 Vi devus probable scias kaj estu familiarizados kun aĵoj 841 00:38:49,000 --> 00:38:54,030 kiel kiel vi enmetas bildon, estas ja ekzistas alia kaplinio klasoj? 842 00:38:54,030 --> 00:38:57,240 Mi certe estos komforta kun div. 843 00:38:57,240 --> 00:39:00,840 Tiuj havas la plimulton de etikedoj ke vi devus koni. 844 00:39:00,840 --> 00:39:04,370 Sed kompreneble, kiel kun ĉiu en CS 50, la lerta ne estas ĝisfunda. 845 00:39:04,370 --> 00:39:08,200 Do, certigu ke vi ekzercu sur tio. 846 00:39:08,200 --> 00:39:13,260 >> CSS, do CSS, se iu el vi spekti miaj seminario de du semajnoj, 847 00:39:13,260 --> 00:39:16,250 Estas vere simple maniero stiligi la retpaĝo? 848 00:39:16,250 --> 00:39:18,950 OK, do ni havos iom da markado lingvo. 849 00:39:18,950 --> 00:39:23,220 HTML, kiu atentas nur la teksto kaj kie li havu sur la paĝo. 850 00:39:23,220 --> 00:39:25,760 Sed CSS estas vere kion faras bela. 851 00:39:25,760 --> 00:39:30,690 Vi povus havi tiujn en via HTML dosierojn, sed kiel ni diskutos poste, 852 00:39:30,690 --> 00:39:32,660 Mi estas sufiĉe certa ke potenco esti la proksima glito, ĝi 853 00:39:32,660 --> 00:39:35,620 Estas komuna praktiko, kaj reale praktiko kiu ni vere instigas, 854 00:39:35,620 --> 00:39:40,670 por vin subteni ilin disigis kiam ni paroli pri MVC kaj ke tutaj paradigmo. 855 00:39:40,670 --> 00:39:42,490 Tio estas vere kion tiu manĝas en. 856 00:39:42,490 --> 00:39:46,110 >> Do CSS estas nur maniero fari aferojn aspekti bela. 857 00:39:46,110 --> 00:39:50,500 La vivo ĉi tie, kiel korpo kaj #title kaj .info, 858 00:39:50,500 --> 00:39:54,340 tiuj estas nomitaj selectores kaj kion ili faras estas ili selektas specifajn aferojn 859 00:39:54,340 --> 00:39:59,260 inter viaj HTML dosiero kaj apliku ajn stilo, 860 00:39:59,260 --> 00:40:04,090 ajn speco de aferoj vi volas, por ke specifa ero de via retejo 861 00:40:04,090 --> 00:40:04,590 paĝo. 862 00:40:04,590 --> 00:40:08,820 Do jen, ni havas fona koloro kaj koloro 863 00:40:08,820 --> 00:40:12,450 kaj tiparon familio kiu estas esti aplikita al kio ajn estas en la korpo. 864 00:40:12,450 --> 00:40:15,530 Do se ni rerigardis tie, ne aplikas al la titolo. 865 00:40:15,530 --> 00:40:22,340 Estus nur aplikas al kio estas en tiuj korpo selectores, OK? 866 00:40:22,340 --> 00:40:25,250 >> Kun titolo tie, ĉi tiu estas tuj estos la sama afero, 867 00:40:25,250 --> 00:40:28,410 la koloro de la teksto esti blua nur tuj 868 00:40:28,410 --> 00:40:33,870 tuŝi kio estas ene la titolo selectores. 869 00:40:33,870 --> 00:40:36,580 Krom informoj ĉi tie, la teksto estos rozkolora, 870 00:40:36,580 --> 00:40:38,600 ajn la info, kio estas gxusta cxi tie. 871 00:40:38,600 --> 00:40:40,860 Do la nura afero kiu estus rozo en tiu paĝo 872 00:40:40,860 --> 00:40:44,100 estas dato, lundo, novembro 17, 2014. 873 00:40:44,100 --> 00:40:48,770 OK, do CSS estas nur maniero havi pli kontrolo over-- jes? 874 00:40:48,770 --> 00:40:51,850 >> Publiko: Kial vi havas uzi la hash kun titolo? 875 00:40:51,850 --> 00:40:55,170 >> Hannah: Sekva diapozitivo, promesas! 876 00:40:55,170 --> 00:40:56,810 Ni alvenos tie. 877 00:40:56,810 --> 00:40:59,830 Do ĉi tiu estas kial ni devas uzi hash. 878 00:40:59,830 --> 00:41:03,429 Do selectores transpreni tri ĉefaj formoj ke ni parolas al vi uloj pri. 879 00:41:03,429 --> 00:41:05,595 Mi fyou volas lerni pli, tie estas multe tie. 880 00:41:05,595 --> 00:41:07,540 Ekzistas granda CSS dokumentado. 881 00:41:07,540 --> 00:41:12,680 Tie estas etikedo nomo, kiu rilatas al plenumado kun nur via normala etikedoj en HTML. 882 00:41:12,680 --> 00:41:17,210 Do h1, p, div, h2, tiujn varojn de aĵoj. 883 00:41:17,210 --> 00:41:20,320 Kaj ni povas nur citi tiujn kiel estas. 884 00:41:20,320 --> 00:41:22,650 Do kiel ni vidas tie kun korpo, ĝi estas normala etikedo. 885 00:41:22,650 --> 00:41:26,660 Do ni povas simple meti korpon kiam ni parolas en niaj CSS dosiero. 886 00:41:26,660 --> 00:41:29,730 >> Kun titolo, la tuta kialo ni havas ĉi hash estas ni havas kio estas 887 00:41:29,730 --> 00:41:31,010 konsiderita ID. 888 00:41:31,010 --> 00:41:35,400 Do IRU devus ĉiam esti unika inter viaj HTML-paĝo 889 00:41:35,400 --> 00:41:37,930 por ke kiam vi estas raportante al li, vi 890 00:41:37,930 --> 00:41:41,990 scias ke vi nur raportante al unu specifa afero. 891 00:41:41,990 --> 00:41:46,270 Do en ĉi tiu kazo tie, kun nia h1 tie, CS 50 revizio kunsido, 892 00:41:46,270 --> 00:41:47,810 ni havos identigilo de titolo. 893 00:41:47,810 --> 00:41:54,280 Do, por nur aludi al tiu peco de nia HTML, ni faru kradon titolo. 894 00:41:54,280 --> 00:41:58,080 Nur per konvencio, IDs estas designados kun hash antaŭ ili. 895 00:41:58,080 --> 00:42:01,650 En la sama maniero, ni vidas info tie estas klaso. 896 00:42:01,650 --> 00:42:06,070 Kaj tiel klaso kun CSS estas designado kiel skalara klaso 897 00:42:06,070 --> 00:42:08,895 aŭ ŝprucas ajn ke klaso estas. 898 00:42:08,895 --> 00:42:10,850 Do en ĉi tiu kazo tie, estas info. 899 00:42:10,850 --> 00:42:13,090 >> Do mi prenu ŝin reen. 900 00:42:13,090 --> 00:42:16,200 Ambaŭ estus rozkolora por niaj CSS tie 901 00:42:16,200 --> 00:42:18,430 ĉar ili ambaŭ havas klaso de informoj. 902 00:42:18,430 --> 00:42:23,070 Kaj en niaj CSS dosiero, ni designado ke io kun klaso de info 903 00:42:23,070 --> 00:42:24,120 estos rozkolora. 904 00:42:24,120 --> 00:42:25,968 Ĉu tio havas sencon? 905 00:42:25,968 --> 00:42:27,435 Jes? 906 00:42:27,435 --> 00:42:30,731 >> Publiko: Se vi volus fari ĉio en la korpon blankan, 907 00:42:30,731 --> 00:42:32,814 kaj tiam vi klopodas fari io en ĝi bluaj, 908 00:42:32,814 --> 00:42:34,770 estus kiuj kaŭzas problemojn? 909 00:42:34,770 --> 00:42:37,310 >> Hannah: Do CSS estas CSS. 910 00:42:37,310 --> 00:42:40,730 Do kiom estas turnita malsupro prenos prioritaton. 911 00:42:40,730 --> 00:42:44,080 Do se vi faros ion kun korpo, kaj vi faros ĉiun blankan, 912 00:42:44,080 --> 00:42:49,300 kaj tiam vi poste ŝanĝi la titolon aŭ vi ŝanĝos la tekston ene korpon, 913 00:42:49,300 --> 00:42:50,560 ĝi overwrites tio. 914 00:42:50,560 --> 00:42:55,360 Do, frazoj cele la malsupro prenos prioritaton. 915 00:42:55,360 --> 00:42:56,730 Jes? 916 00:42:56,730 --> 00:42:59,627 >> Publiko: Kaj IDs estas solaj, sed klasoj povas esti pli? 917 00:42:59,627 --> 00:43:00,210 Hannah: Rajto. 918 00:43:00,210 --> 00:43:06,320 Do IDs devas esti sola, kaj klasoj povas referi al kiel multaj aferoj kiel vi ŝatus. 919 00:43:06,320 --> 00:43:07,580 Ajna alia demandojn? 920 00:43:07,580 --> 00:43:09,800 Jes. 921 00:43:09,800 --> 00:43:11,210 >> Publiko: [inaudible]. 922 00:43:11,210 --> 00:43:13,509 Mi scivolas ĉu tio faras diferencon. 923 00:43:13,509 --> 00:43:15,217 Hannah, Mi bedaŭras, Kio estis la demando? 924 00:43:15,217 --> 00:43:18,960 Publiko: Estas malgranda "F" kaj kapitalo "F." 925 00:43:18,960 --> 00:43:21,440 Hannah: Do la diferenco inter malgrandaj "f" kaj kapitalo "F" 926 00:43:21,440 --> 00:43:22,606 ne devus fari diferencon. 927 00:43:22,606 --> 00:43:26,330 Do "f" estos 15 ĉu vojo. 928 00:43:26,330 --> 00:43:28,130 Cool, ion alian? 929 00:43:28,130 --> 00:43:29,930 Cxiu bona, CSS? 930 00:43:29,930 --> 00:43:30,850 Jes? 931 00:43:30,850 --> 00:43:31,790 >> Publiko: Pardonu. 932 00:43:31,790 --> 00:43:35,550 Ĉu vi havas klaso kaj IRU? 933 00:43:35,550 --> 00:43:38,030 >> Hannah: Jes, vi povas. 934 00:43:38,030 --> 00:43:40,420 Aĵoj povas havi ambaŭ klaso kaj IRU. 935 00:43:40,420 --> 00:43:44,670 Kaj mi forte rekomendas provante tiuj sur via propra. 936 00:43:44,670 --> 00:43:50,480 CSS vi lernos bona simple per fari io, tre simpla retpaĝon, 937 00:43:50,480 --> 00:43:53,440 streki iun CSS, kaj ĝuste vidante kiel ili interagas. 938 00:43:53,440 --> 00:43:56,970 Kaj vi gajnus tre bona, intuicia senco de kiel ĝi funkcias. 939 00:43:56,970 --> 00:43:58,810 >> OK, ĉiuj bone kun CSS? 940 00:43:58,810 --> 00:44:01,280 Vi ĉiuj volas fari bela retejojn kun CSS jam. 941 00:44:01,280 --> 00:44:05,460 OK, bonaj praktikoj, ĝuste aferoj teni en menso, aĵoj 942 00:44:05,460 --> 00:44:09,810 that-- ĉi estas kial ni albordiĝi vi por diseñador kaj whatnot. 943 00:44:09,810 --> 00:44:11,820 Do fermi ĉiujn viajn HTML etikedoj. 944 00:44:11,820 --> 00:44:14,840 Do se vi havas malfermitan korpon, tie devus esti proksime korpo. 945 00:44:14,840 --> 00:44:18,180 Se vi havas malfermitan alineo, tie devus esti proksima alineo. 946 00:44:18,180 --> 00:44:19,555 Kontrolu por vidi vian paĝon validigas. 947 00:44:19,555 --> 00:44:23,330 Vi ĉiuj devus esti tre familiara kun tiu de p-starigis sep 948 00:44:23,330 --> 00:44:26,350 kun CS 50 financoj kun la W3 Kontrolilo. 949 00:44:26,350 --> 00:44:28,340 Kaj kiel mi diris antaŭe, unu el niaj grandaj paradigmoj 950 00:44:28,340 --> 00:44:33,780 disigas vian stilon kun CSS de via markado, kiu estas HTML. 951 00:44:33,780 --> 00:44:36,900 Kaj tiam, kompreneble, ni havas tiu granda XKCD malsupren tie. 952 00:44:36,900 --> 00:44:38,280 Yay, komika! 953 00:44:38,280 --> 00:44:41,340 >> OK, TCP / IP. 954 00:44:41,340 --> 00:44:44,650 Inter tiuj kaj HTTP, esence ili estas ambaŭ protokoloj. 955 00:44:44,650 --> 00:44:46,810 Do vi povus simple opinias el ili kiel aro de reguloj 956 00:44:46,810 --> 00:44:50,110 kiuj regas kiel aferoj movi sur la Reto. 957 00:44:50,110 --> 00:44:53,410 Do transdono kontrolo protokolo, aŭ interreto protokolo, 958 00:44:53,410 --> 00:44:57,280 estas simple maniero certigi ke datumoj ricevas kie okazas 959 00:44:57,280 --> 00:45:00,030 kaj ke ni scias se ni iam mankas datumojn. 960 00:45:00,030 --> 00:45:03,520 Do se vi uloj pensas reen al prelego paro semajnoj kun Davido 961 00:45:03,520 --> 00:45:06,980 kie ni havis kvar kovertoj, ili estis cxiuj kalkulitaj kiel unu el kvar, 962 00:45:06,980 --> 00:45:11,300 du el kvar, tri el kvar, kvar el kvar, ĉi tiu estas nur aro de reguloj. 963 00:45:11,300 --> 00:45:13,830 Ni diris, OK, kiam ajn ni estas sendante pli ol unu paketon, 964 00:45:13,830 --> 00:45:16,610 ni tuj kalkuli kun kiu nombro estas 965 00:45:16,610 --> 00:45:19,040 kaj kiom da tutaj ke la uzanto devos akiri. 966 00:45:19,040 --> 00:45:22,540 >> Kaj tiu estas ĝuste diri kiu ajn ricevas la datumojn ĉu ili 967 00:45:22,540 --> 00:45:26,120 esti alveninta ĉiu aŭ se io perdiĝis survoje. 968 00:45:26,120 --> 00:45:28,840 Ili bezonas peti ĝin denove. 969 00:45:28,840 --> 00:45:31,140 Tio estas vere nur aro de reguloj. 970 00:45:31,140 --> 00:45:33,650 Tiel estas kiel vi povas pensi pri tio, OK? 971 00:45:33,650 --> 00:45:37,700 Kaj ankaŭ, precizigas la haveno, kiu vi uloj can-- Mi scias dum prelego, 972 00:45:37,700 --> 00:45:39,170 ili havis tutan liston de havenoj. 973 00:45:39,170 --> 00:45:41,630 Sed ni ne havas ilin ĉi tie en ĉi tiu momento. 974 00:45:41,630 --> 00:45:45,290 >> Do Hiperteksto-Transiga Protokolo estas, denove, estas alia protokolo. 975 00:45:45,290 --> 00:45:48,630 Do estas alia aro de reguloj kiuj regas, en tiu kazo, 976 00:45:48,630 --> 00:45:51,130 kiel hiperteksto estas trapasita. 977 00:45:51,130 --> 00:45:54,340 Do ĝi nur permesas retumiloj paroli al retserviloj. 978 00:45:54,340 --> 00:45:56,910 Kaj kiel ni diris ĉi tie, estas kiel homa handshaking. 979 00:45:56,910 --> 00:46:00,480 Estas nur maniero por regi kiel la TTT-servilo estas 980 00:46:00,480 --> 00:46:02,690 tuj interagi kun via retumilo. 981 00:46:02,690 --> 00:46:05,660 Kaj ni havas nur paro de ekzemploj. 982 00:46:05,660 --> 00:46:09,100 Ni havas kelkajn petojn tie kie Get estas la metodo. 983 00:46:09,100 --> 00:46:13,760 Ni havas HTTP 1.1, kiu estas protokolo versio por ni. 984 00:46:13,760 --> 00:46:17,230 Kaj tiam, la gastiganto, kiu estas kiu ni fakte provis aliri. 985 00:46:17,230 --> 00:46:21,800 Kaj tiam, kiel vi vidas tie, ni akiri iun respondon kun tiu 200 986 00:46:21,800 --> 00:46:25,032 OK kiel nia HTTP respondo kodo. 987 00:46:25,032 --> 00:46:27,240 Ni havas grandan liston Mi iras tiri supren en dua 988 00:46:27,240 --> 00:46:29,430 ke vi uloj devus koni. 989 00:46:29,430 --> 00:46:35,750 Kaj ni havas ĉi enhavo tipo text / html, kio ĝuste diras kion tipo de datumoj 990 00:46:35,750 --> 00:46:39,990 ni ricevas de la servilo, OK? 991 00:46:39,990 --> 00:46:44,230 Ĉi gastiganto kaj tiu enhavo tipo estas parto de la HTTP kaplinioj. 992 00:46:44,230 --> 00:46:49,610 Vi povas havi kiel malmultaj aŭ kiel malmulte kiel necesaj por la kunteksto de kio 993 00:46:49,610 --> 00:46:50,580 vi kontraktanta kun. 994 00:46:50,580 --> 00:46:53,371 Kelkfoje vi devos multan informo devenante vian servilon. 995 00:46:53,371 --> 00:46:56,040 Eble ili estas petante multe de informoj de la uzanto. 996 00:46:56,040 --> 00:46:57,600 Ĝi varias laŭ la kunteksto. 997 00:46:57,600 --> 00:47:01,144 Se vi rigardas al CS 50 Studo, restas multa pli sur tio. 998 00:47:01,144 --> 00:47:03,060 Sed ni havas multe por akiri tra, do mi iros 999 00:47:03,060 --> 00:47:05,760 ĝuste iros antaŭen se ke estas bone kun vi uloj? 1000 00:47:05,760 --> 00:47:07,960 Cool. 1001 00:47:07,960 --> 00:47:08,460 Atendu. 1002 00:47:08,460 --> 00:47:11,182 Mi certe havas ke tuta lerta of-- huh! 1003 00:47:11,182 --> 00:47:13,140 Mi ne scias, kial tiu estas tuta vojo super tie. 1004 00:47:13,140 --> 00:47:15,660 Mi pensis mi laŭvorte kopiis ĝi dum mi estis sitting-- 1005 00:47:15,660 --> 00:47:16,540 >> DAVIN: Ĉu vi volas instrui ĝin? 1006 00:47:16,540 --> 00:47:17,420 Aux cxu vi volas, ke mi instruu lin? 1007 00:47:17,420 --> 00:47:20,010 >> Publiko: Mi pensis ke ni povis nur montru al komenci kun. 1008 00:47:20,010 --> 00:47:22,210 Mi volas diri, vi povas iri en ilin pli detale, sed mi 1009 00:47:22,210 --> 00:47:26,030 opiniis faris pli sentita kiam mi ĵus parolis pri HTTP statuses. 1010 00:47:26,030 --> 00:47:28,200 Do jen la tuta listo. 1011 00:47:28,200 --> 00:47:31,730 Mi supozas kion okazos estas Davin tuj iros tra ili poste. 1012 00:47:31,730 --> 00:47:35,330 Sed estas tuta listo, oni antaŭrigardo de la gusto veni. 1013 00:47:35,330 --> 00:47:41,640 OK, ni tuj blow-- tiu tuj esti PHP kraŝo kurson kiel neniu alia. 1014 00:47:41,640 --> 00:47:44,874 >> Do PHP, hiperteksta antaŭtraktilo, ĝi estas rikura backronym, 1015 00:47:44,874 --> 00:47:46,540 kio signifas, ke ĝi estis enoficigita ion alian. 1016 00:47:46,540 --> 00:47:49,050 Kaj tiam ĝi iris kiel ĉi ne vere havas sencon. 1017 00:47:49,050 --> 00:47:52,210 Do ili ĵus enoficigita it-- kaj estis akronimo, 1018 00:47:52,210 --> 00:47:54,840 do ili simple faris PHP hiperteksto antaŭtraktilo, kiu 1019 00:47:54,840 --> 00:47:55,980 nur ne havas sentita. 1020 00:47:55,980 --> 00:47:57,714 Amuza rakonto. 1021 00:47:57,714 --> 00:47:58,880 Estas programlingvo. 1022 00:47:58,880 --> 00:48:02,360 Do, kiom mi elstari ke HTML ne estas programlingvo, 1023 00:48:02,360 --> 00:48:05,350 ĝi estas markado lingvo, PHP Estas lingvo de programado. 1024 00:48:05,350 --> 00:48:07,422 Kiel vi scias ĉi estas ĉar estas logiko. 1025 00:48:07,422 --> 00:48:08,380 Ekzistas conditionals. 1026 00:48:08,380 --> 00:48:12,750 Ni havas variablo, dum ni havi tion, en HTML. 1027 00:48:12,750 --> 00:48:16,960 >> Bone, do ni havas ĉi tiu malgranda iom tie ke estas kiel gusto de PHP. 1028 00:48:16,960 --> 00:48:20,510 Do baza, variablo nomoj starti kun dolaro signo. 1029 00:48:20,510 --> 00:48:21,500 Multaj homoj ŝatas ĝin. 1030 00:48:21,500 --> 00:48:22,371 Memorigas nin monon. 1031 00:48:22,371 --> 00:48:22,995 Ĉio granda. 1032 00:48:22,995 --> 00:48:25,280 Ni ĉiuj volas PHP. 1033 00:48:25,280 --> 00:48:28,020 Do ni ne specifi variablo estas tipo anymore. 1034 00:48:28,020 --> 00:48:29,995 Ĝi estas determinita je tempo de ekzekuto. 1035 00:48:29,995 --> 00:48:32,710 1036 00:48:32,710 --> 00:48:35,890 La interpretisto similos, ho, ni simple kuri tra, 1037 00:48:35,890 --> 00:48:39,565 kaj laŭ la kunteksto, Ni vidos kion tipoj de tipoj 1038 00:48:39,565 --> 00:48:41,560 tiuj variabloj devas havi. 1039 00:48:41,560 --> 00:48:42,815 Mankas ĉefa funkcio. 1040 00:48:42,815 --> 00:48:43,690 Aĵoj estos nur kuri. 1041 00:48:43,690 --> 00:48:47,851 Vi uloj kun via importado en via lasta p-aro, vi rimarkos tion. 1042 00:48:47,851 --> 00:48:49,350 Tie ne estis vere ĉefa funkcio. 1043 00:48:49,350 --> 00:48:52,070 Vi nur skribis kion vi volis okazi. 1044 00:48:52,070 --> 00:48:53,280 Kaj ĝuste speco de okazita. 1045 00:48:53,280 --> 00:48:56,760 Do tio estas PHP por vi. 1046 00:48:56,760 --> 00:48:59,180 >> Arrays estas tre similaj. 1047 00:48:59,180 --> 00:49:01,270 Ni ankoraŭ havas ĉi krampo. 1048 00:49:01,270 --> 00:49:05,940 Tie, ni havas iu variablo nomata arr, kaj estas egalaj 1049 00:49:05,940 --> 00:49:08,540 to-- ni havas nian normalan krampo skribmaniero. 1050 00:49:08,540 --> 00:49:10,630 Kaj ni havas kelkajn ŝlosilo valoro. 1051 00:49:10,630 --> 00:49:14,630 Kaj la granda diferenco inter C kaj PHP arrays 1052 00:49:14,630 --> 00:49:19,330 estas ke ni povas havi ĉi associate-- ni povas asocii valorojn al klavoj. 1053 00:49:19,330 --> 00:49:22,440 Do anstataŭ nur havi tabelo kiu indeksis 1054 00:49:22,440 --> 00:49:26,630 per la numero aŭ la pozicio de tiu elemento en la tabelo, 1055 00:49:26,630 --> 00:49:29,060 ni povas reale asocii ĝin kun ŝlosilo. 1056 00:49:29,060 --> 00:49:36,700 Kie ni povas diri, OK, mi volas ajn valoro estas asociita kun fruktoj. 1057 00:49:36,700 --> 00:49:39,280 Kaj eble ni havas frukton iris al bananon. 1058 00:49:39,280 --> 00:49:41,760 Do volonte revenos bananon al ni. 1059 00:49:41,760 --> 00:49:44,100 >> Sed esence, la plej potenca afero pri ĉi 1060 00:49:44,100 --> 00:49:47,960 estas ke se vi uloj memoras la demo de prelego kie ni esence 1061 00:49:47,960 --> 00:49:53,050 reverkis Speller en PHP, kaj tio was-- lookup estis vere ĵus volas, 1062 00:49:53,050 --> 00:49:55,007 Ĉu tio ŝlosilo ekzistas? 1063 00:49:55,007 --> 00:49:56,590 Tio estas vere afabla de la potenco de ĝi. 1064 00:49:56,590 --> 00:49:58,560 Vi ne bezonas persisti tra via tabelo. 1065 00:49:58,560 --> 00:50:00,311 Vi ne bezonas scii kion spaco estas en. 1066 00:50:00,311 --> 00:50:01,976 Povus esti en la fino aŭ la komenco. 1067 00:50:01,976 --> 00:50:04,790 Tiel longe kiel vi scias la ŝlosilo ke estas asociita kun la valoro, 1068 00:50:04,790 --> 00:50:09,740 PHP povas simple kracxos ke valoro Right Back ekstere ĉe vi, okej? 1069 00:50:09,740 --> 00:50:12,960 >> Kaj tiam, ni ankaŭ apenaŭ havi nur ĉar ni 1070 00:50:12,960 --> 00:50:16,750 povas havi ŝlosila valoro paroj ne signifas vi devas. 1071 00:50:16,750 --> 00:50:19,180 Vi povas ankaŭ simple kreu normala tabelo kiel ĉi tie, 1072 00:50:19,180 --> 00:50:21,540 ĉe la malsupro, kie ĝi estas nur unu, du, tri, kvar. 1073 00:50:21,540 --> 00:50:22,510 Tiuj estas niaj valoroj. 1074 00:50:22,510 --> 00:50:25,320 Kaj fakte, iliaj klavoj estas la indeksoj. 1075 00:50:25,320 --> 00:50:26,830 Do la ŝlosilon por tiu estus nulo. 1076 00:50:26,830 --> 00:50:28,610 La ŝlosilo por du estus unu. 1077 00:50:28,610 --> 00:50:31,910 Tiel plu kaj tiel antaŭen, krom se Vi eksplicite asignu ŝlosilo, 1078 00:50:31,910 --> 00:50:34,630 vi povus supozi, ke la valoro estas nur ilia indekso. 1079 00:50:34,630 --> 00:50:37,290 Ĉu tio havas sencon por ĉiuj? 1080 00:50:37,290 --> 00:50:38,070 Neniu demandojn? 1081 00:50:38,070 --> 00:50:38,930 Imponega. 1082 00:50:38,930 --> 00:50:44,420 >> OK, foreach estas maniero persisti tra via arrays. 1083 00:50:44,420 --> 00:50:47,490 Do ni havas ion ĉi tie, nur la ĝenerala strukturo. 1084 00:50:47,490 --> 00:50:51,020 Do foreach, la nomon de nia tabelo, kiel ajn 1085 00:50:51,020 --> 00:50:53,930 vi volas nomi ĉiun elemento en via tabelo, 1086 00:50:53,930 --> 00:50:57,270 kaj ni povas fari iun kun ke elemento aŭ kun tiu valoro. 1087 00:50:57,270 --> 00:50:58,680 Do ni havas ekzemplon tie. 1088 00:50:58,680 --> 00:51:05,770 Ni havas asocieca tabelo kun tiuj du enskriboj 1089 00:51:05,770 --> 00:51:10,080 kun trinkejo asociante kun foo kaj qux asociante kun Rabado. 1090 00:51:10,080 --> 00:51:12,180 Do klavoj estas foo kaj Baz. 1091 00:51:12,180 --> 00:51:13,650 Valoroj estas trinkejo kaj qux. 1092 00:51:13,650 --> 00:51:18,560 Do foreach, ni havas nia tabelo tie, kiel la ŝlosilo valoro paro. 1093 00:51:18,560 --> 00:51:21,560 Ĉi tio nin permesas aliri ambaŭ la ŝlosilon kaj valoro. 1094 00:51:21,560 --> 00:51:23,680 Eble vi volas nur la valoro, en kies kazo 1095 00:51:23,680 --> 00:51:27,640 vi povus simple imitu arr kiel $ valoro, kaj tiam vi 1096 00:51:27,640 --> 00:51:30,640 Ĝuste nun alirante la valoro kiel vi persisti tra. 1097 00:51:30,640 --> 00:51:32,600 Sed eble, por kelkaj Tial, vi volas ke la ŝlosilo, 1098 00:51:32,600 --> 00:51:35,460 tial mi elektis tiu ekzemplo anstataŭe. 1099 00:51:35,460 --> 00:51:40,240 Do vi efektive povas manipuli klavon kaj valoro en ĉi tiu kazo. 1100 00:51:40,240 --> 00:51:41,070 OK? 1101 00:51:41,070 --> 00:51:41,905 Demando? 1102 00:51:41,905 --> 00:51:44,279 >> Publiko: Se vi volis nur manipuli la ŝlosilon, estus 1103 00:51:44,279 --> 00:51:45,910 Vi nur devas foreach-- 1104 00:51:45,910 --> 00:51:47,360 >> Alison: Rajto. 1105 00:51:47,360 --> 00:51:50,560 Do se vi volas manipuli ĝuste la ŝlosilo, 1106 00:51:50,560 --> 00:51:53,680 vi devus ankoraŭ bezonas tiun sintakso ĉar se vi nur 1107 00:51:53,680 --> 00:51:56,930 havas arr kiel ion, kiel unu afero, estas 1108 00:51:56,930 --> 00:52:00,070 tuj supozos vi volas la valoro, ne la ŝlosilo. 1109 00:52:00,070 --> 00:52:06,780 Do se vi iam simple devas nur ŝatas arr kiel, eble tiu estas kiel $ ero, 1110 00:52:06,780 --> 00:52:11,670 ĝi tuj supozas ke vi demandas por nur la valoro je ĉiu punkto. 1111 00:52:11,670 --> 00:52:13,879 Se vi eksplicite volas fari iun kun la ŝlosilo, 1112 00:52:13,879 --> 00:52:16,170 eĉ se vi ne tuj fari ion kun la valoro, 1113 00:52:16,170 --> 00:52:18,430 vi bezonas tiun strukturo ke ni havas ĉi tie 1114 00:52:18,430 --> 00:52:22,330 kie vi eksplicite demandas tiel por la ŝlosilo kaj la valoro. 1115 00:52:22,330 --> 00:52:24,170 Granda demando. 1116 00:52:24,170 --> 00:52:25,940 Ion alian? 1117 00:52:25,940 --> 00:52:27,490 Cool. 1118 00:52:27,490 --> 00:52:29,911 >> Bone, PHP kaj HTML. 1119 00:52:29,911 --> 00:52:31,410 Ho, ni estas reen al p-starigis sep denove. 1120 00:52:31,410 --> 00:52:35,380 Do tiu devus rigardi iom familiara. 1121 00:52:35,380 --> 00:52:41,760 Do tiu estas iuj simplaj HTML formo kiu havas iujn enigo nomon saluton. 1122 00:52:41,760 --> 00:52:43,820 Kaj ni vidos ni havas nia metodo de akiri. 1123 00:52:43,820 --> 00:52:47,430 Kaj se ni memoras el nia p-aro, kiam tiu formo estas prezentita, 1124 00:52:47,430 --> 00:52:58,130 sendas tabelo nomita $ _GET kiu havas ĉiuj tiuj enigoj aŭ variabloj de 1125 00:52:58,130 --> 00:53:00,490 la formo kiu estu manipulita en nia PHP. 1126 00:53:00,490 --> 00:53:03,320 Do en ĉi tiu kazo, la uzanto metus en ilia nomo. 1127 00:53:03,320 --> 00:53:04,370 Ili enigu ĝin. 1128 00:53:04,370 --> 00:53:07,810 Kaj ni vidas, ke ni atingos iun tabelo tie. 1129 00:53:07,810 --> 00:53:09,080 Ni havas niajn Get tabelo. 1130 00:53:09,080 --> 00:53:11,510 Kaj ni aliru la nomo. 1131 00:53:11,510 --> 00:53:15,070 >> Do kiu diras, OK, donu al mi la valoro kiu estas asociita kun nomo, 1132 00:53:15,070 --> 00:53:16,550 enoficigos esti la ŝlosilo tie. 1133 00:53:16,550 --> 00:53:21,400 Kaj ke mapas rekte al kio ni diris nian input nomo estas. 1134 00:53:21,400 --> 00:53:28,960 Do tiu donis al vi la ŝlosilon al kio tuj estos en via tabelo tie. 1135 00:53:28,960 --> 00:53:31,220 Ĉu tio havas sencon por ĉiuj? 1136 00:53:31,220 --> 00:53:32,070 Jes? 1137 00:53:32,070 --> 00:53:36,240 >> Publiko: Ĉu la nomo en Get referi al la purpura linio en [inaudible]? 1138 00:53:36,240 --> 00:53:37,740 >> Alison: Ĝi nomas tiun ĉi tie. 1139 00:53:37,740 --> 00:53:43,840 Do tiu kampo ĉi tie, ĝi raportas al ĉi nomo tie. 1140 00:53:43,840 --> 00:53:47,800 Do ĉi tio povus esti estinta enoficigita kiel Telefonnumero, aŭ kion ajn. 1141 00:53:47,800 --> 00:53:51,790 Tiu nomo fakte diras, kion vi nomante tiu kampo? 1142 00:53:51,790 --> 00:53:53,600 Kiel vi iras al referi al ĉi tiu kampo? 1143 00:53:53,600 --> 00:53:57,670 Kaj tiu nomo estas vere ŝatas, ni estas dirante tiu kampo estas nomita nomo. 1144 00:53:57,670 --> 00:53:59,224 Tiel estas kiel ni tuj aliri gxin. 1145 00:53:59,224 --> 00:54:02,070 >> Publiko: tiom mi ŝatas, input nomo egalas Bob, kaj- 1146 00:54:02,070 --> 00:54:04,380 >> Alison: Dekstra, tiam vi akirus Bob tie malsupre. 1147 00:54:04,380 --> 00:54:06,090 Trafe. 1148 00:54:06,090 --> 00:54:07,800 Ĉiuj malvarmeta? 1149 00:54:07,800 --> 00:54:10,990 Bone, do GET kontre POST, tiuj estas la du ĉefaj manieroj 1150 00:54:10,990 --> 00:54:14,880 ke ni pasas datumojn en HTTP peto. 1151 00:54:14,880 --> 00:54:17,370 Vi ĉiuj devus esti vidita ambaŭ de tiuj espereble. 1152 00:54:17,370 --> 00:54:20,940 Do kun bonstato-informoj estas pasita tra la URL. 1153 00:54:20,940 --> 00:54:23,490 Do se vi iam faras Google serĉoj, Youtube, vi 1154 00:54:23,490 --> 00:54:25,130 verŝajne rimarkos demandosigno. 1155 00:54:25,130 --> 00:54:28,230 Kaj tiam, ĉiuj vortoj ke vi simple meti en tie. 1156 00:54:28,230 --> 00:54:31,410 Kaj POST pasas la datumojn en la HTTP cxefteksto. 1157 00:54:31,410 --> 00:54:36,922 Do kontraste GET, vi ia konsideri ke la datumoj estas kaŝita de la uzanto. 1158 00:54:36,922 --> 00:54:38,630 Sed kio estas vere Gravas kompreni 1159 00:54:38,630 --> 00:54:44,040 estas ke tiu estas ankoraŭ same necerta kiel akiri. 1160 00:54:44,040 --> 00:54:48,780 La analogio Mi ŝatas uzi estas se Vi havas vian bankokonton nombro 1161 00:54:48,780 --> 00:54:52,795 kaj vi skribas gxin ekster koverton, tamen tio estas tre necerta. 1162 00:54:52,795 --> 00:54:55,920 Se vi estus skribi ĝin sur pecon de paperon kaj metis gxin interne de la envolvaĵo, 1163 00:54:55,920 --> 00:54:58,850 ĝi estas ankoraŭ vere nesekura ĉar ĉiuj vi devas fari estas malfermi supre 1164 00:54:58,850 --> 00:55:03,480 kaj rigardu la realan enhavon de la mesaĝo por vidi tion. 1165 00:55:03,480 --> 00:55:08,310 Do tiu estas "kaŝitaj" kaj homoj kiel al kredas ke estas sekura, sed estas vere ne. 1166 00:55:08,310 --> 00:55:11,000 Kaj mi certas Davin volo eniras kiu pli, eble. 1167 00:55:11,000 --> 00:55:12,850 Sed estas grava distingo fari 1168 00:55:12,850 --> 00:55:15,820 kaj iu vere bona por kompreni. 1169 00:55:15,820 --> 00:55:19,220 >> OK, SQL, strukturita Query Language. 1170 00:55:19,220 --> 00:55:22,220 Ĉiuj taskoj ni estis vidintaj ĝis lastatempe! 1171 00:55:22,220 --> 00:55:25,400 Do ĝi estas esence nur desegnita, evidente, por la demarŝo de datumoj. 1172 00:55:25,400 --> 00:55:30,560 Vi ĉiuj havis multajn spertojn kun tio en viaj tabloj kun PHP MyAdmin. 1173 00:55:30,560 --> 00:55:34,100 Kaj estas kvar komunaj pridemandojn ke ni volas ke vi infanoj scii. 1174 00:55:34,100 --> 00:55:37,304 Do tie estas ĝisdatigo, insert, elekti, kaj forigi. 1175 00:55:37,304 --> 00:55:38,970 Do, certigu ke vi scias tiujn vere bone. 1176 00:55:38,970 --> 00:55:40,960 Ni intencas iri tra ili vere rapide. 1177 00:55:40,960 --> 00:55:44,340 >> Do ĝisdatigi, vere, kiel kion Vi povus pensi faras, 1178 00:55:44,340 --> 00:55:46,740 ĝi ĵus ĝisdatigas datumojn en via datumbazo. 1179 00:55:46,740 --> 00:55:48,750 Do ni havas iujn ekzemplo tie. 1180 00:55:48,750 --> 00:55:53,310 Tiu estas la ĝenerala strukturo de ĝisdatigo mendo. 1181 00:55:53,310 --> 00:55:56,150 Do ni ĝisdatigas la tablo ke ni parolas. 1182 00:55:56,150 --> 00:56:00,520 Kaj ni volas agordi iujn valoroj, certaj kolumnoj 1183 00:56:00,520 --> 00:56:02,600 egala al specifaj valoroj. 1184 00:56:02,600 --> 00:56:07,500 Do ĉi nur ĝisdatigas la tablo, ŝanĝante valoroj en ĉiuj vicoj en tiu kazo. 1185 00:56:07,500 --> 00:56:13,690 Do en ĉi tiu malsupren tie, reala Ekzemple, ni havas insert-- bedaŭras. 1186 00:56:13,690 --> 00:56:17,630 Tio slide antaŭis sen mi rimarki. 1187 00:56:17,630 --> 00:56:22,230 >> Do ĉi ĝisdatigoj tablon starigu col1 egalaj al val1 kie domo egalas "Currier." 1188 00:56:22,230 --> 00:56:25,300 Kio ĉi tiu faras estas ĝi nur ŝanĝiĝas, ĝi nur 1189 00:56:25,300 --> 00:56:28,130 Ĝisdatigas tiujn valorojn en specifaj lokoj. 1190 00:56:28,130 --> 00:56:32,300 Do en tiu unua unu, ĝi ŝanĝas tiujn valorojn por ĉiu en via tablo, 1191 00:56:32,300 --> 00:56:32,860 OK? 1192 00:56:32,860 --> 00:56:35,820 Ĝi estas tuj ŝanĝos ĉi kolumno por ĉiu ununura eniro, 1193 00:56:35,820 --> 00:56:37,020 por ĉiu unuopa vico. 1194 00:56:37,020 --> 00:56:40,840 Sed ĉi kie vi povus rigardante ĝin kiel eliminatorias. 1195 00:56:40,840 --> 00:56:44,020 Do ĝi estas nur tuj ŝanĝos ĝin en tre specifaj lokoj. 1196 00:56:44,020 --> 00:56:47,840 Do en p-starigis sep, kiam vi eble ĝisdatigis la kvanto de cash 1197 00:56:47,840 --> 00:56:53,050 ke via uzanto devis, vi probable havis iuj kie ID egalas kunsido ID, dekstra? 1198 00:56:53,050 --> 00:56:55,280 >> Ĉar vi ne volis ŝanĝi la kvanton de mono 1199 00:56:55,280 --> 00:56:57,630 por ĉiu persono kiu estis uzante vian retejon. 1200 00:56:57,630 --> 00:57:00,480 Ĉu vi volis ŝanĝi ĝin por unu specifa persono, tiu persono estas 1201 00:57:00,480 --> 00:57:02,410 kiu ajn estis uzante ĝin tiutempe. 1202 00:57:02,410 --> 00:57:04,320 Dekstra? 1203 00:57:04,320 --> 00:57:07,510 OK, do enmeti, insert certaj valoroj en tabuloj. 1204 00:57:07,510 --> 00:57:11,650 Ĉi tio estas kiel kiam vi estas kreante marko nova uzanto. 1205 00:57:11,650 --> 00:57:14,240 La ĝenerala strukturo tie estas enmeti en iu ajn tablo 1206 00:57:14,240 --> 00:57:15,680 ni parolas. 1207 00:57:15,680 --> 00:57:18,910 Valoroj, estante la valoroj kiujn ni fakte volas enigi. 1208 00:57:18,910 --> 00:57:23,060 OK, tiel kiel ni vidas ĉi tie, ni ili enmeti en tablo. 1209 00:57:23,060 --> 00:57:27,790 Tio estas specifa kolumnoj kun ilia respondis valoroj. 1210 00:57:27,790 --> 00:57:29,940 Do tiu diras, insert nova vico enhavanta 1211 00:57:29,940 --> 00:57:33,660 valoroj val1 kaj val2 sub tiujn specifajn kolumnoj. 1212 00:57:33,660 --> 00:57:39,240 >> Do eble vi nur deziras plenigi el duono la aĵojn en tiu vico. 1213 00:57:39,240 --> 00:57:41,150 Tion ĉi parto ĉi tie permesas fari. 1214 00:57:41,150 --> 00:57:43,280 Ĝi permesas reale determini kiu parto. 1215 00:57:43,280 --> 00:57:44,244 Jes? 1216 00:57:44,244 --> 00:57:52,150 >> Publiko: Can vi nur [inaudible] ĉeloj en la vico [inaudible]? 1217 00:57:52,150 --> 00:57:55,000 >> Alison: Se vi nur plenigi certaj partoj de via vico, 1218 00:57:55,000 --> 00:57:57,480 la resto de tiuj ĉeloj estas ĝuste malplena. 1219 00:57:57,480 --> 00:58:02,730 1220 00:58:02,730 --> 00:58:05,660 Tiel longe kiel vi permesas al ili estu malplena, ĝi ne estas problemo. 1221 00:58:05,660 --> 00:58:09,570 Se vi provas konsenti ili, estas tuj revenos iun malplena elemento. 1222 00:58:09,570 --> 00:58:13,850 Sed estas grave scii ke en certaj tabloj, 1223 00:58:13,850 --> 00:58:16,690 Ili devas rajti esti nula. 1224 00:58:16,690 --> 00:58:18,890 Vi eble kolizios kun problemon dum via p-aro 1225 00:58:18,890 --> 00:58:21,320 ĉar ni ne devas restigi iom de via valoroj esti nula. 1226 00:58:21,320 --> 00:58:26,110 Sed vi povas specifi laŭvola valoro en via tablo. 1227 00:58:26,110 --> 00:58:29,640 >> OK, unuaranga, tiel ĉi estas simple maniero de prenanta 1228 00:58:29,640 --> 00:58:33,790 specifajn datumojn de tablo en iuj ensalutilo ke vi deziras. 1229 00:58:33,790 --> 00:58:37,990 Do unuarangan stelo de tablo kie col egalas ion signifas nur, 1230 00:58:37,990 --> 00:58:43,820 donu al mi ĉiujn datumojn asociitaj kie tiu specifa kolumno estas vera. 1231 00:58:43,820 --> 00:58:49,020 Do la stelo en tiu kazo volas resendi la kompletan vicon al vi, okej? 1232 00:58:49,020 --> 00:58:54,880 >> Kaj tiam, en tiu kazo, elektu stelon de tablo ĝuste donas vin la tuta tabelo. 1233 00:58:54,880 --> 00:58:58,940 Kaj tiam, forviŝi evidente, ĝi nur forigas la vico de la tabelo. 1234 00:58:58,940 --> 00:59:01,320 Do forviŝi el tablo, ajn tablo ni estas 1235 00:59:01,320 --> 00:59:06,830 referenco, kie iuj specifaj ensalutilo aŭ iu kondiĉo estas vera. 1236 00:59:06,830 --> 00:59:07,720 Jes? 1237 00:59:07,720 --> 00:59:08,700 >> Publiko: Demando. 1238 00:59:08,700 --> 00:59:10,699 Kial vi uzas duobla citaĵoj, kaj ĉu vi 1239 00:59:10,699 --> 00:59:13,600 do citiloj aŭ sola citaĵoj, faras ĝi fari diferencon? 1240 00:59:13,600 --> 00:59:18,235 >> Alison: Duoblaj citiloj aŭ apostrofoj ne fari diferencon en SQL. 1241 00:59:18,235 --> 00:59:19,610 Mi pensis ke mi vidis alian demandon. 1242 00:59:19,610 --> 00:59:20,814 Jes? 1243 00:59:20,814 --> 00:59:25,070 >> Publiko: ĉu ne tuŝi kion ricevas eskapis el la informpeto? 1244 00:59:25,070 --> 00:59:27,945 >> Alison: Rob? 1245 00:59:27,945 --> 00:59:31,410 >> ROB: Kion vi aludas per forigxis el la informpeto? 1246 00:59:31,410 --> 00:59:36,870 >> Publiko: Se iu havas sola konsulto en la formo of-- 1247 00:59:36,870 --> 00:59:39,862 >> ROB: Se iu devis metis sola citaĵo en, 1248 00:59:39,862 --> 00:59:43,560 tiam tiel longe kiel vi sanitizing via enigo, do ne gravas. 1249 00:59:43,560 --> 00:59:46,205 Sed se vi uzas sola citaĵo kaj vi estas malĝuste 1250 00:59:46,205 --> 00:59:47,914 eskapi vian enigoj, tiam jes, ili bezonas 1251 00:59:47,914 --> 00:59:51,079 meti sola citaĵo por rompi via kodo. se vi uzas duoblan citaĵoj, 1252 00:59:51,079 --> 00:59:53,580 ili bezonas meti duoblan citi rompi vian kodon. 1253 00:59:53,580 --> 00:59:56,163 Sed tiel longe kiel vi eskapos tion korekte, ne gravas. 1254 00:59:56,163 --> 00:59:59,220 Ĝi simple tuj estos tradukita al la ĝusta simbolo ĉiuokaze. 1255 00:59:59,220 --> 01:00:02,332 >> Publiko: Kion eskapo signifus? 1256 01:00:02,332 --> 01:00:04,040 Alison: Nu, kiel sanitizing kaj eskapo. 1257 01:00:04,040 --> 01:00:06,810 1258 01:00:06,810 --> 01:00:13,820 La ekzameno, kiun ni havas, la granda XKCD komika, ke ili elsxiros kie vi havas, 1259 01:00:13,820 --> 01:00:15,629 oh-- 1260 01:00:15,629 --> 01:00:16,670 ROB: Estas la lasta slide. 1261 01:00:16,670 --> 01:00:18,500 Alison: Estas la lasta slide, vere? 1262 01:00:18,500 --> 01:00:20,200 Ho mia dio. 1263 01:00:20,200 --> 01:00:21,780 Tie ni iru, perfekta. 1264 01:00:21,780 --> 01:00:27,900 OK, do esence, vi povas injekti ion en tiun SQL query 1265 01:00:27,900 --> 01:00:30,560 kie rompas vian kodo, aŭ kiel David montris 1266 01:00:30,560 --> 01:00:38,460 en klaso, se ni havas iun sola citaĵo 1 estas 1 kaj se en nia kodo, 1267 01:00:38,460 --> 01:00:41,230 ni simple rekte kopii ke en kaj ni havos finaĵon sola citajxo, 1268 01:00:41,230 --> 01:00:44,740 kio okazas estas ni preni iuj esprimo kiu 1269 01:00:44,740 --> 01:00:48,680 taksas al vera ke volo lasu iun eniri nia datumbazo 1270 01:00:48,680 --> 01:00:51,720 kaj akiri datumojn kiuj ni ne volas ilin akiri. 1271 01:00:51,720 --> 01:00:54,240 Do sanitizing la eniroj nur signifas certigante 1272 01:00:54,240 --> 01:00:57,680 ke ni eskapas tiujn karakteroj kaj designar ilin 1273 01:00:57,680 --> 01:01:01,720 kiel signojn kaj ne tion kiuj devus esti permesita 1274 01:01:01,720 --> 01:01:04,990 esti prenita laŭvorte kiel nia SQL aserto. 1275 01:01:04,990 --> 01:01:09,980 >> Do la granda afero ke ni diris ke vi uloj devus esti uzanta 1276 01:01:09,980 --> 01:01:13,650 estis HTML specialajn signojn, kio estas io 1277 01:01:13,650 --> 01:01:15,730 ke vi eble volas preni rigardi. 1278 01:01:15,730 --> 01:01:17,240 OK, forviŝi. 1279 01:01:17,240 --> 01:01:19,450 Datumtipoj, tiu estos ĉiuj esti enreta. 1280 01:01:19,450 --> 01:01:23,510 Kiel ni 15 minutoj forlasis, mi estas nur tuj iros rekte tra ĉi. 1281 01:01:23,510 --> 01:01:28,500 PHP kaj SQL, esence ĉi estas nur ni havis konsulto funkcio kiu 1282 01:01:28,500 --> 01:01:31,520 helpis protekti kontraŭ tiujn malicajn atakojn. 1283 01:01:31,520 --> 01:01:33,970 Do kiam ajn vi uzas informpeto, ni estis certigi 1284 01:01:33,970 --> 01:01:36,560 ke tio estis sanitized kaj whatnot. 1285 01:01:36,560 --> 01:01:41,070 >> MVC estas nur dezajno paradigmo, tia modelo, vido, adaptilo. 1286 01:01:41,070 --> 01:01:44,200 Estas nur maniero por subteni la aĵojn bela kaj disigis en la sama vojo 1287 01:01:44,200 --> 01:01:47,100 ke ni inklinas faktora el kodon en funkcioj. 1288 01:01:47,100 --> 01:01:53,390 Tiu estas nur dezajno retejo kadro kiu permesas vin fari la samon. 1289 01:01:53,390 --> 01:01:54,760 Mi iras al preterlasas. 1290 01:01:54,760 --> 01:01:58,530 >> Tiu estas iu kiu mi estus súper comfy kun. 1291 01:01:58,530 --> 01:02:01,132 Estas granda tableto tie. 1292 01:02:01,132 --> 01:02:03,090 Ĝi donas al vi la funkcio Ekzemplo de la modelo. 1293 01:02:03,090 --> 01:02:05,473 Mi nur trairante tiun ĉar mi vere volas Davin por povi paroli. 1294 01:02:05,473 --> 01:02:07,140 Se vi havas demandojn, bonvolu bonvolu. 1295 01:02:07,140 --> 01:02:07,931 Mi estos ĉi tie post. 1296 01:02:07,931 --> 01:02:10,360 Ĵus venis paroli kun mi. 1297 01:02:10,360 --> 01:02:13,380 Kun tiu, ni havas HTTP statuses. 1298 01:02:13,380 --> 01:02:16,270 Kaj Davin okazas blovi tra ĉi en 15 minutoj. 1299 01:02:16,270 --> 01:02:17,560 Ĉi tuj estos granda. 1300 01:02:17,560 --> 01:02:18,893 >> DAVIN: OK. 1301 01:02:18,893 --> 01:02:20,312 Uh, via mic? 1302 01:02:20,312 --> 01:02:22,210 Yeah. 1303 01:02:22,210 --> 01:02:23,336 Pardonu. 1304 01:02:23,336 --> 01:02:24,460 Alison: Vojo esti preta. 1305 01:02:24,460 --> 01:02:25,335 DAVIN: Ne, mi estas preta. 1306 01:02:25,335 --> 01:02:25,860 Mi estas preta. 1307 01:02:25,860 --> 01:02:28,790 Ni faru ĉi. 1308 01:02:28,790 --> 01:02:29,290 Estas preta. 1309 01:02:29,290 --> 01:02:30,041 Akcepti. 1310 01:02:30,041 --> 01:02:30,540 Pardonu. 1311 01:02:30,540 --> 01:02:31,664 Mi verŝis kafon sur min mem. 1312 01:02:31,664 --> 01:02:36,037 1313 01:02:36,037 --> 01:02:38,210 Mi ne scias ĉu mi estas pli tedis ke mi aspektas stulta, 1314 01:02:38,210 --> 01:02:40,600 aŭ ke mi ne havas kafon anymore. 1315 01:02:40,600 --> 01:02:44,480 Kiel estas, simple rapidan anonco pri la folio vi uloj havas. 1316 01:02:44,480 --> 01:02:47,994 Do ĉi foja vi uloj havas estas ne la oficiala kio estas sur la kvizo. 1317 01:02:47,994 --> 01:02:49,660 Tiu estas la oficiala kio estas sur la kvizo. 1318 01:02:49,660 --> 01:02:52,520 Ankaŭ, en la retejo, ni diru vi, bone, tio estos la kvizo. 1319 01:02:52,520 --> 01:02:55,020 Do en la eta Gvidfolio vi havas, ne oficialaj. 1320 01:02:55,020 --> 01:02:56,690 Kaj ekzistas erarojn sur ĝi. 1321 01:02:56,690 --> 01:03:01,490 Do pli bone ne nur blinde uzi ĝin. 1322 01:03:01,490 --> 01:03:04,390 Do jes, jen tio. 1323 01:03:04,390 --> 01:03:05,980 Do ni eniras en ĉi tiu reala rapida. 1324 01:03:05,980 --> 01:03:07,420 >> Do HTTP statuses. 1325 01:03:07,420 --> 01:03:10,430 Do kio okazas kiam la retejo, ĉio estas en ordo. 1326 01:03:10,430 --> 01:03:11,144 Ĉio estas en ordo. 1327 01:03:11,144 --> 01:03:13,310 Ĉiu venas reen al vi la vojon vi deziras ĝin al. 1328 01:03:13,310 --> 01:03:15,370 Vi akiras 200 OK. 1329 01:03:15,370 --> 01:03:19,250 301, kie ni vidis ke 301 antaŭ? 1330 01:03:19,250 --> 01:03:20,890 Atendu, kio estas supre? 1331 01:03:20,890 --> 01:03:23,250 Pardonu. 1332 01:03:23,250 --> 01:03:24,980 Ni vidis i tin prelego dum sekureco. 1333 01:03:24,980 --> 01:03:30,690 Do dum sekureco, tiel se Davido tajpita en http kaj tiam provis iri al cs50.net, 1334 01:03:30,690 --> 01:03:31,940 vi tuj vidos 301 movis. 1335 01:03:31,940 --> 01:03:32,440 Kial? 1336 01:03:32,440 --> 01:03:35,570 Ĉar tuj redirect vi aŭtomate al nia HTTPS. 1337 01:03:35,570 --> 01:03:38,649 >> Do 301 movis, nur estas esence redirección. 1338 01:03:38,649 --> 01:03:40,190 Kaj vi povas pensi pri tio kiel ĉi. 1339 01:03:40,190 --> 01:03:43,790 Ajna el statuses kiuj komenciĝas je 2'S, tiuj estas kiel, bone, ĉio estas en ordo. 1340 01:03:43,790 --> 01:03:46,530 Ajna el statuses ke komenci kun 3, tiuj estas redirección. 1341 01:03:46,530 --> 01:03:49,571 Statuses kiuj komencas kun 4, kiu pere ekzistas ia kliento eraro. 1342 01:03:49,571 --> 01:03:52,440 Statuses kiuj komenciĝas je 5, tio estas ia servilo eraro. 1343 01:03:52,440 --> 01:03:54,680 Do vi ia disrompi la statuses tiel. 1344 01:03:54,680 --> 01:03:59,120 Do 304 ne ne modifita, do en via server.c p-arojn, tiel ni diru vi 1345 01:03:59,120 --> 01:04:00,600 ŝarĝita cat.html. 1346 01:04:00,600 --> 01:04:03,360 Ĉiu venas reen, vi ricevas 200s, OK, granda. 1347 01:04:03,360 --> 01:04:04,540 >> Imagu ke vi refreŝigis ŝin. 1348 01:04:04,540 --> 01:04:07,310 Nu, enen tiu cat.html, vi havas JPEG. 1349 01:04:07,310 --> 01:04:09,520 Nu, tio JPEG estas ne tuj get reloaded. 1350 01:04:09,520 --> 01:04:12,140 Vi ne tuj sendi alian GET peton al la servilo, 1351 01:04:12,140 --> 01:04:13,980 kaj tiam mi atingos tiun informon reen. 1352 01:04:13,980 --> 01:04:17,560 Iĝos nur be-- tiun bildon estas tuj estos kaŝmemoro en via maŝino. 1353 01:04:17,560 --> 01:04:19,540 Kaj por ke la bildo estos 304. 1354 01:04:19,540 --> 01:04:20,720 Tuj kiam ne estas modifita. 1355 01:04:20,720 --> 01:04:24,600 Se vi tiam fermi, klaraj kuketojn, kaj tiam refreŝigi 1356 01:04:24,600 --> 01:04:27,490 kaj provu ŝargi tiun paĝon denove, vi tuj vidos 200s. 1357 01:04:27,490 --> 01:04:28,910 Vi ne tuj vidos kiuj 304. 1358 01:04:28,910 --> 01:04:32,340 >> 400, malbona deziro, reala rapida, kiel se vi 1359 01:04:32,340 --> 01:04:34,880 tuj sendos JSON objekto al la servilo 1360 01:04:34,880 --> 01:04:38,090 kaj via JSON objekto estis malĝusta, vi vidos ion kiel tion. 1361 01:04:38,090 --> 01:04:39,000 403, malpermesita. 1362 01:04:39,000 --> 01:04:40,330 Kiam vi vidos malpermesita? 1363 01:04:40,330 --> 01:04:41,394 Probable Probable? 1364 01:04:41,394 --> 01:04:42,060 Publiko: chmod. 1365 01:04:42,060 --> 01:04:42,950 DAVIN: chmod, yeah. 1366 01:04:42,950 --> 01:04:44,730 Do vi ne havas permesojn korekte. 1367 01:04:44,730 --> 01:04:45,577 404, ne trovis. 1368 01:04:45,577 --> 01:04:46,410 Ĝi simple ne ekzistas. 1369 01:04:46,410 --> 01:04:48,670 Do se vi tajpas en la malĝusta URL. 1370 01:04:48,670 --> 01:04:53,500 500, interna servilo eraro, la servilo verŝajne ne estis agordita ĝuste. 1371 01:04:53,500 --> 01:04:56,260 Io ne sur via fino, sed ion sur la servilo flanko. 1372 01:04:56,260 --> 01:04:57,240 Kaj 503? 1373 01:04:57,240 --> 01:04:59,502 Multaj homoj vidis 503s en la lastaj p-aro. 1374 01:04:59,502 --> 01:05:00,460 Kiam estus tio okazis? 1375 01:05:00,460 --> 01:05:04,180 1376 01:05:04,180 --> 01:05:05,660 Mi aŭdis flustrojn. 1377 01:05:05,660 --> 01:05:07,767 >> Publiko: Kiam Google Decidas vi estas roboto. 1378 01:05:07,767 --> 01:05:10,350 DAVIN: Yeah, kiam Google decidas vi estas roboto, vi ricevas 503s. 1379 01:05:10,350 --> 01:05:11,560 Do estas ja superŝarĝas. 1380 01:05:11,560 --> 01:05:14,620 Se vi petis de la servilo tro da, ĝi estas kutime temporal. 1381 01:05:14,620 --> 01:05:15,560 Kaj plejparto de vi rimarkis. 1382 01:05:15,560 --> 01:05:16,185 Do vi vidis 503. 1383 01:05:16,185 --> 01:05:19,282 Vi verŝajne akceptus iom paŭzo, tiam la 503s foriris, 1384 01:05:19,282 --> 01:05:20,490 kaj ĉio estis en ordo. 1385 01:05:20,490 --> 01:05:26,640 >> Gabe: Reala rapida, kiam vi infanoj ricevas 500 en probable tiu lasta problemo starigis? 1386 01:05:26,640 --> 01:05:27,954 Jes? 1387 01:05:27,954 --> 01:05:30,906 >> Publiko: Kutime se la servilo havas dosieron misplaced 1388 01:05:30,906 --> 01:05:34,650 aŭ [inaudible] ilia maŝino [inaudible]. 1389 01:05:34,650 --> 01:05:38,870 >> Gabe: Do eble estos agordon afero en via PHP sur via servilo. 1390 01:05:38,870 --> 01:05:42,250 Sed ĝi mem justa ion kiel punktokomo ke via forgesis. 1391 01:05:42,250 --> 01:05:44,130 Se vi tajpas PHP, iuj neĝustaj sintakso 1392 01:05:44,130 --> 01:05:46,000 povus akiri vin io kiel tio. 1393 01:05:46,000 --> 01:05:46,960 OK? 1394 01:05:46,960 --> 01:05:48,610 >> DAVIN: Cool. 1395 01:05:48,610 --> 01:05:51,180 Ĉu vi volas ke mi faru ĝuste ĝis AJAX? 1396 01:05:51,180 --> 01:05:52,950 >> Gabe: [inaudible]. 1397 01:05:52,950 --> 01:05:53,450 DAVIN: OK. 1398 01:05:53,450 --> 01:05:54,230 Do kio estas la DOM? 1399 01:05:54,230 --> 01:05:55,290 Kion DOM signifas? 1400 01:05:55,290 --> 01:05:56,990 >> Publiko: Dokumento objekto modelo. 1401 01:05:56,990 --> 01:05:57,490 DAVIN: Nice. 1402 01:05:57,490 --> 01:06:00,775 Kaj kial ni ŝatas ĝin? 1403 01:06:00,775 --> 01:06:02,670 Imponega. 1404 01:06:02,670 --> 01:06:06,651 Ĝuste, do ĝi nur nin permesas aliri HTML, konsenti niajn paĝo tre rapide. 1405 01:06:06,651 --> 01:06:07,150 Kial? 1406 01:06:07,150 --> 01:06:09,980 Ĉar ni trakti niajn paĝo, traktante nia HTML etikedoj, 1407 01:06:09,980 --> 01:06:11,730 traktante ĉiun kvazaŭ ili estas objektoj. 1408 01:06:11,730 --> 01:06:13,710 Se ni traktante ilin kiel ili estas celoj, tiam kion ni povas fari? 1409 01:06:13,710 --> 01:06:15,210 Nu, ni povas nomi funkcioj sur ilin. 1410 01:06:15,210 --> 01:06:16,460 Kaj tiu estas grava kial? 1411 01:06:16,460 --> 01:06:19,200 Nu, ĉar ni iras al uzi Ĝavoskripto por ĝisdatigi niajn HTML, 1412 01:06:19,200 --> 01:06:20,500 ĝisdatigi tiujn celojn. 1413 01:06:20,500 --> 01:06:23,869 Do se ni traktos ilin kiel celoj, ni povas tiam nomita funkcioj sur ilin. 1414 01:06:23,869 --> 01:06:26,660 Mi iras al eniri en tiu iom pli kiam mi entreprenas Ĝavoskripto, 1415 01:06:26,660 --> 01:06:30,510 sed vi ĉiuj vidis kiel document.getElementByID. 1416 01:06:30,510 --> 01:06:32,870 Do dokumento estas via elemento, akiri elementon de IRU, 1417 01:06:32,870 --> 01:06:35,087 tial vi estas iranta rigardi por iuj ID en HTML etikedo. 1418 01:06:35,087 --> 01:06:36,920 Kaj tiam, vi povos fari ion alian por tio. 1419 01:06:36,920 --> 01:06:40,089 Ekzemple, kiel document.body, tiam vi povas alfiksus infano. 1420 01:06:40,089 --> 01:06:41,630 Do vi estas iranta trovi la dokumenton. 1421 01:06:41,630 --> 01:06:42,340 Vi havas la dokumenton. 1422 01:06:42,340 --> 01:06:43,629 Vi tuj trovos la korpo. 1423 01:06:43,629 --> 01:06:44,420 Vi trovis la korpon. 1424 01:06:44,420 --> 01:06:46,545 Kaj tiam, vi tuj voki iun funkcion sur ĝi. 1425 01:06:46,545 --> 01:06:50,312 Do alfiksus infanon, kaj vi povas alfiksus iuj HTML sur la fino ene via korpo. 1426 01:06:50,312 --> 01:06:52,520 Do esence, estas simple traktante ĝin kiel objekto. 1427 01:06:52,520 --> 01:06:54,515 Vi trakti HTML etikedoj kiel objekto. 1428 01:06:54,515 --> 01:06:57,071 Kaj ĝi faras lin tre facila kaj rapida iri tra ili. 1429 01:06:57,071 --> 01:06:59,070 Sed ĝi ankaŭ permesas vin nomi funkcioj sur ilin 1430 01:06:59,070 --> 01:07:04,410 tiel vi povas manipuli kaj ŝanĝi la elementoj. 1431 01:07:04,410 --> 01:07:10,162 >> Gabe: Donita ĉi, kial estas JavaScript tiaj belan lingvon por interagi kun HTML? 1432 01:07:10,162 --> 01:07:12,870 Odds estas, kiam homoj estis elektanta la lingvon por la navegador, 1433 01:07:12,870 --> 01:07:14,990 por kliento flanko, JavaScript estas vere bela, 1434 01:07:14,990 --> 01:07:16,765 estas vere spertas pri traktado celoj. 1435 01:07:16,765 --> 01:07:20,620 Kaj la objektoj estas speco de ŝatas la celoj kiuj aperas en la HTML, 1436 01:07:20,620 --> 01:07:23,940 tial ĝi estas tre facile por Ĝavoskripto fari tian uzadon. 1437 01:07:23,940 --> 01:07:24,440 DAVIN: Nice. 1438 01:07:24,440 --> 01:07:25,670 Do jen estas nur ekzemplo. 1439 01:07:25,670 --> 01:07:29,020 Do mi pensas pri pasintjara kvizo aŭ eble du jaroj, ni 1440 01:07:29,020 --> 01:07:30,840 demandis vin krei arbo. 1441 01:07:30,840 --> 01:07:32,660 Do ĉi tiu estas ekzakte kion vi volas fari. 1442 01:07:32,660 --> 01:07:34,255 Do vi komencos evi dokumenton. 1443 01:07:34,255 --> 01:07:36,130 Kaj tiam vi esence Nur rigardu etikedoj. 1444 01:07:36,130 --> 01:07:38,100 Do se vi rigardas, ni starti kun HTML etikedo. 1445 01:07:38,100 --> 01:07:41,660 Kaj tiam, vi ricevas aŭtoveturejojn sur kiel fari ĉi bazita sur la deŝovon. 1446 01:07:41,660 --> 01:07:43,870 Do kapo speco de branĉoj malproksime. 1447 01:07:43,870 --> 01:07:46,242 Ene kapo, ni havas alia etikedo por titolo. 1448 01:07:46,242 --> 01:07:47,450 Tial, ni havas titolon etikedo. 1449 01:07:47,450 --> 01:07:49,760 Kaj ene de tiu, ni havos kelkajn kordo. 1450 01:07:49,760 --> 01:07:52,210 Kaj tiel ni reprezentos ŝnureto en cirklo. 1451 01:07:52,210 --> 01:07:54,010 Kaj ĉiuj etikedoj estas en la stalo. 1452 01:07:54,010 --> 01:07:56,270 >> Kaj se vi rigardas, se ni pensu pri ĉi tion kiel arbo, 1453 01:07:56,270 --> 01:07:58,730 kaj ni diru, ke HTML estas gepatro, tiam kapo kaj korpo 1454 01:07:58,730 --> 01:07:59,772 tuj estos gefratoj. 1455 01:07:59,772 --> 01:08:01,813 Ili ambaŭ tuj estos infanoj de tiu gepatro. 1456 01:08:01,813 --> 01:08:03,620 Do ĉar ili estas ambaŭ gefratoj, ili estas 1457 01:08:03,620 --> 01:08:06,590 tuj estos speco de apud reciproke en nia arbo modelo. 1458 01:08:06,590 --> 01:08:08,590 Kaj tiam, vi esence fari la ĝustan saman aferon. 1459 01:08:08,590 --> 01:08:13,512 Do ne estas malfacila, sed ni petis demandojn kiel ĉi antaŭe sur la kvizo. 1460 01:08:13,512 --> 01:08:15,220 Gabe: Ĉu iu ajn havas demandojn ĝis nun? 1461 01:08:15,220 --> 01:08:16,357 Ĉu ĝi bona? 1462 01:08:16,357 --> 01:08:16,856 DAVIN: Cool. 1463 01:08:16,856 --> 01:08:19,630 1464 01:08:19,630 --> 01:08:21,600 Ĝavoskripto, OK, la bona stuff. 1465 01:08:21,600 --> 01:08:24,069 Do Ĝavoskripto, kio estas JavaScript? 1466 01:08:24,069 --> 01:08:28,370 Nu, Ĝavoskripto is-- estas komplika, sed tiuj 1467 01:08:28,370 --> 01:08:30,727 estas kelkaj el la brilaĵoj ke vi devus teni en menso. 1468 01:08:30,727 --> 01:08:31,810 Unue, ĝi estas loze tajpita. 1469 01:08:31,810 --> 01:08:33,529 Kion tio signifas? 1470 01:08:33,529 --> 01:08:35,596 Do PHP was-- yeah, kio estas supre? 1471 01:08:35,596 --> 01:08:39,854 >> Publiko: Vi ne devas eksplicite ŝtata kio tipo de variablo estas. 1472 01:08:39,854 --> 01:08:40,479 DAVIN: Perfekta. 1473 01:08:40,479 --> 01:08:43,270 Do li diris vin ne devas eksplicite deklari la tipo de variablo. 1474 01:08:43,270 --> 01:08:44,160 Ekzakte pravas. 1475 01:08:44,160 --> 01:08:49,700 Do en C, se mi havis int i egalas 50, tiam en PHP, estas nur kiel tiu, $ i, 1476 01:08:49,700 --> 01:08:50,550 egalas 50. 1477 01:08:50,550 --> 01:08:54,319 Tiam en JavaScript, kio estus la alvoko estos? 1478 01:08:54,319 --> 01:08:55,260 Var, dekstra? 1479 01:08:55,260 --> 01:08:56,566 Estus kiel var i egalas 50. 1480 01:08:56,566 --> 01:08:58,649 Sed vi ne devas esti kiel, nu bone, ĉi tiu estas int. 1481 01:08:58,649 --> 01:09:00,350 OK, ĉi estas ĉeno. 1482 01:09:00,350 --> 01:09:01,731 Neniu bezono fari tion. 1483 01:09:01,731 --> 01:09:02,939 Ĝi estas interpretita lingvo. 1484 01:09:02,939 --> 01:09:04,904 Do kion tio signifas? 1485 01:09:04,904 --> 01:09:06,340 >> Publiko: Ne kompilita. 1486 01:09:06,340 --> 01:09:10,470 >> DAVIN: Kio ne kompilis signifas? 1487 01:09:10,470 --> 01:09:11,392 Yeah? 1488 01:09:11,392 --> 01:09:15,336 >> Publiko: Vi ne restrukturi la kodo 1489 01:09:15,336 --> 01:09:18,294 pretigu por la komputilon por ruligi ĝin. 1490 01:09:18,294 --> 01:09:23,144 Estas nur prenita en la momento de ekzekuto kaj la komputilo [inaudible]. 1491 01:09:23,144 --> 01:09:25,560 DAVIN: Yeah, do ĝi tuj pasi tra interpretisto. 1492 01:09:25,560 --> 01:09:26,750 Sed vi estas ekzakte pravas. 1493 01:09:26,750 --> 01:09:28,319 Do vi neniam iras kompili ĝin, ĉu ne? 1494 01:09:28,319 --> 01:09:30,399 Kiam vi faris vian PHP kaj Javascript kodo, 1495 01:09:30,399 --> 01:09:31,365 vi neniam nomis compilación. 1496 01:09:31,365 --> 01:09:33,779 Vi neniam nomis iun kiel fari aŭ io kiel tio. 1497 01:09:33,779 --> 01:09:34,800 Tio estas ĉar ĝi estas interpretita. 1498 01:09:34,800 --> 01:09:37,319 Do ĉiufoje ĝi iras tra navegador, iras tra interpretisto. 1499 01:09:37,319 --> 01:09:40,370 Kaj ke tuj gxin klarigas ĝuste en reala tempo tuj por vi. 1500 01:09:40,370 --> 01:09:43,770 Do kio estas kelkaj pozitivaj kaj negativaj por havi interpretita lingvo 1501 01:09:43,770 --> 01:09:45,258 kaj havante kompilita lingvo? 1502 01:09:45,258 --> 01:09:48,240 1503 01:09:48,240 --> 01:09:50,540 Do compiling-- yeah, kio estas supre? 1504 01:09:50,540 --> 01:09:52,444 >> Publiko: Interpretita estas malrapida. 1505 01:09:52,444 --> 01:09:53,319 DAVIN: En kiu senco? 1506 01:09:53,319 --> 01:09:57,167 1507 01:09:57,167 --> 01:09:59,091 >> Publiko: Post kiam vi kompili, vi ne havas 1508 01:09:59,091 --> 01:10:04,400 fari ajnan ekstra paŝoj ekzekuti ĝin, dum tiu [inaudible]. 1509 01:10:04,400 --> 01:10:05,570 >> DAVIN: Dekstra, perfekta. 1510 01:10:05,570 --> 01:10:08,386 Do kion vi diris estas esence ke tiu kompilita, 1511 01:10:08,386 --> 01:10:10,760 kiam vi kompili, vi havas Multaj upfront kostoj, dekstra? 1512 01:10:10,760 --> 01:10:11,760 Vi tuj kompili ĝin. 1513 01:10:11,760 --> 01:10:13,750 Sed post vi kompili ĝin, la tradukilo tuj optimumigi ĝin. 1514 01:10:13,750 --> 01:10:14,840 Ĝi tuj estos rapida. 1515 01:10:14,840 --> 01:10:16,170 Iĝos esence esti tiel rapida kiel ĝi eblas. 1516 01:10:16,170 --> 01:10:18,830 Kun interpretante, vi neniam havas tiun upfront kosto. 1517 01:10:18,830 --> 01:10:22,260 Pli ĝuste, ĝi tuj estos iomete pli malrapida ĉiu ununura tempo vi gxin klarigas. 1518 01:10:22,260 --> 01:10:24,940 Kaj vi tuj devos interpreti ĝin ĉiu ununura tempo. 1519 01:10:24,940 --> 01:10:27,114 Do anstataŭ havanta ĉi unu tempo kosto, nun vi estas 1520 01:10:27,114 --> 01:10:29,530 tuj devos interpreti ĝin ĉiufoje la paĝo laude. 1521 01:10:29,530 --> 01:10:31,890 >> Do interpretistoj estas bona ĉar vi ne devas kompili ĝin, 1522 01:10:31,890 --> 01:10:33,980 sed ili estas malbonaj en kiuj ĉiu tempo la paĝo ŝarĝoj, estas 1523 01:10:33,980 --> 01:10:35,771 tuj devos interpreti ĉi Javascript. 1524 01:10:35,771 --> 01:10:40,520 Kaj tuj kuri iomete pli malrapida ol se vi estus kompili ĝin. 1525 01:10:40,520 --> 01:10:43,044 Permesas communicate-- Ho, atendu. 1526 01:10:43,044 --> 01:10:44,960 Uzita por manipuli la enhavo kaj aspekto. 1527 01:10:44,960 --> 01:10:46,043 Ni nur parolis pri tio. 1528 01:10:46,043 --> 01:10:47,250 Ĝi uzas la DOM. 1529 01:10:47,250 --> 01:10:49,930 AJAX, ni akiros en AJAX en iomete. 1530 01:10:49,930 --> 01:10:51,520 Kaj poste, ĝi estas kliento flanko. 1531 01:10:51,520 --> 01:10:53,110 Do PHP estas servilo flanko. 1532 01:10:53,110 --> 01:10:54,360 JavaScript estas kliento flanko. 1533 01:10:54,360 --> 01:10:57,780 Kio estas pozitivaj por ke? 1534 01:10:57,780 --> 01:10:58,280 Ĝi diras ĝin. 1535 01:10:58,280 --> 01:11:01,480 1536 01:11:01,480 --> 01:11:02,780 Estas rapida, dekstra? 1537 01:11:02,780 --> 01:11:05,282 Ĉar vi ne havas to-- estas rapida. 1538 01:11:05,282 --> 01:11:07,490 Vi ne devas komuniki kun iu alia mekanismo. 1539 01:11:07,490 --> 01:11:08,790 Se vi estas nur en via kliento, vi neniam 1540 01:11:08,790 --> 01:11:11,280 tuj devos iri kaj vidi kio estas sur la servilo 1541 01:11:11,280 --> 01:11:13,150 kaj tiam raporti reen aŭ iel simile. 1542 01:11:13,150 --> 01:11:15,410 Do kliento flanko inklinas esti iomete pli rapida. 1543 01:11:15,410 --> 01:11:17,910 >> Gabe: Yeah, sed ĉi ne signifas PHP estas 1544 01:11:17,910 --> 01:11:20,440 rapida ol Ĝavoskripto aŭ ion tian. 1545 01:11:20,440 --> 01:11:23,270 Ili kuras ia en la sama rapido ĉar ili estas ambaŭ 1546 01:11:23,270 --> 01:11:24,490 interpretitaj lingvoj. 1547 01:11:24,490 --> 01:11:26,680 Kio plej malrapida jen la peto. 1548 01:11:26,680 --> 01:11:28,870 Do vi fakte irante tutan vojon super al Brazilo 1549 01:11:28,870 --> 01:11:31,460 akiri informon kiu vivas tie. 1550 01:11:31,460 --> 01:11:34,590 Sed PHP kaj Javascript, ili speco de kuri en la sama rapido. 1551 01:11:34,590 --> 01:11:37,930 Ne ke oni estas rapide ol la aliaj. 1552 01:11:37,930 --> 01:11:40,600 Tiu, ankaŭ, lertaĵo demando ĉi tie. 1553 01:11:40,600 --> 01:11:47,338 Do Javascript neniam iĝas maŝino kodo, vera aŭ falsa? 1554 01:11:47,338 --> 01:11:48,590 >> Publiko: Falsa. 1555 01:11:48,590 --> 01:11:49,090 Gabe: Falsa. 1556 01:11:49,090 --> 01:11:51,298 Ĝi devas fariĝi maŝino kodo ĉar maŝino kodo 1557 01:11:51,298 --> 01:11:53,210 lin sola kiu la maŝino komprenas. 1558 01:11:53,210 --> 01:11:55,800 Eĉ kvankam ĝi ne estas kompilis, ĝi ankoraŭ igas maŝino kodo 1559 01:11:55,800 --> 01:11:59,120 ĉar la interpretisto estas nur programo kiu iras linio por linio 1560 01:11:59,120 --> 01:12:02,170 kaj transformas tiu linio en io la komputilo komprenas. 1561 01:12:02,170 --> 01:12:02,825 OK? 1562 01:12:02,825 --> 01:12:03,325 Cool. 1563 01:12:03,325 --> 01:12:08,530 1564 01:12:08,530 --> 01:12:12,890 >> DAVIN: Jen nur tre bazajn saluton mondo Javascript programo. 1565 01:12:12,890 --> 01:12:15,590 Do mi ne scias if-- vi vidis ĉi. 1566 01:12:15,590 --> 01:12:17,630 Sed vi simple devos HTML. 1567 01:12:17,630 --> 01:12:21,020 Kaj anstataŭ efektive metante la JavaScript en la skripto etikedoj, 1568 01:12:21,020 --> 01:12:22,810 tiel oni kredus kutime metis ĝin en kapo. 1569 01:12:22,810 --> 01:12:24,030 Vi havas skripton etikedoj. 1570 01:12:24,030 --> 01:12:24,870 Vi faligis ĝin tie. 1571 01:12:24,870 --> 01:12:28,350 Ĉio ni faris ĉi tie estas ni ligitaj in-- tial ni ligitaj en JavaScript dosiero 1572 01:12:28,350 --> 01:12:29,137 kiel tiu. 1573 01:12:29,137 --> 01:12:30,470 Kaj vi ĉiuj faris tion, ĉu ne? 1574 01:12:30,470 --> 01:12:34,740 Do kiam vi estis uzante jQuery kaj underscore.js en la lastaj p-aro, 1575 01:12:34,740 --> 01:12:38,700 vi ne havas tunojn de kodo en via skripto etikedoj, en via kapo. 1576 01:12:38,700 --> 01:12:41,415 Vi povus fari tion, sed anstataŭe vi nur ligas ĝin. 1577 01:12:41,415 --> 01:12:43,540 Kaj vi ligi ĝin samkiel vi faras kun CSS. 1578 01:12:43,540 --> 01:12:50,186 Do ĝi ĝuste faciligante legi tiom via kodo ne ŝatas 1.000 linioj longaj 1579 01:12:50,186 --> 01:12:52,310 kun tunoj de funkcioj kiuj vi eble ne uzos. 1580 01:12:52,310 --> 01:12:53,518 >> Anstataŭe, vi nur ligas ĝin. 1581 01:12:53,518 --> 01:12:55,050 Ĝi compartmentalizes ĝin. 1582 01:12:55,050 --> 01:13:00,110 Estas kiel skribi iujn kaplinio dosiero, kaj tiam inkludante ke kaplinio dosiero en C. 1583 01:13:00,110 --> 01:13:01,620 Pensu ĝin ĝuste kiel ĉi tiu. 1584 01:13:01,620 --> 01:13:02,680 Do kion signifas ĉi fari? 1585 01:13:02,680 --> 01:13:04,560 Nu, tiu tuj kuru. 1586 01:13:04,560 --> 01:13:05,410 Iĝos alarmi. 1587 01:13:05,410 --> 01:13:08,020 Do vi estas iranta akiri iom aperigi nomata saluton mondo. 1588 01:13:08,020 --> 01:13:11,420 Rapida demando, nur prudento ĉeko, do komprenu tie en la korpo, 1589 01:13:11,420 --> 01:13:13,160 diru korpo, HTML. 1590 01:13:13,160 --> 01:13:14,080 Kio venas unue? 1591 01:13:14,080 --> 01:13:16,864 Ĉu mi vidas korpon, HTML, aŭ ĉu mi vidas la garde unuan? 1592 01:13:16,864 --> 01:13:19,828 1593 01:13:19,828 --> 01:13:20,820 >> Publiko: Alert. 1594 01:13:20,820 --> 01:13:21,470 >> DAVIN: Rajto. 1595 01:13:21,470 --> 01:13:22,110 Li diras garde. 1596 01:13:22,110 --> 01:13:22,610 Kial? 1597 01:13:22,610 --> 01:13:24,470 >> Publikon: Pro vi iri de supre sube. 1598 01:13:24,470 --> 01:13:25,600 >> DAVIN: Jes. 1599 01:13:25,600 --> 01:13:26,100 Perfekta. 1600 01:13:26,100 --> 01:13:29,207 Do li diras, vi iri de supre fundo, kiu estas absolute korekta. 1601 01:13:29,207 --> 01:13:30,790 Vi tuj iru de supre sube. 1602 01:13:30,790 --> 01:13:34,790 Kaj en JavaScript, jQuery, vi havas funkcio kiu estas kvazaŭ onload, aŭ preta, 1603 01:13:34,790 --> 01:13:38,030 kaj kiu diras, OK, atendu ĉion ĉi HTML ŝarĝis. 1604 01:13:38,030 --> 01:13:39,580 Kaj tiam, invitu Javascript. 1605 01:13:39,580 --> 01:13:42,190 Ĉar ni ne havas tiun ĉi tien, la tre unua kiu okazos 1606 01:13:42,190 --> 01:13:43,920 Estas ĝi tuj iri de supre sube. 1607 01:13:43,920 --> 01:13:46,310 Iĝos hit kiu js voki, ĝi tuj alarmos. 1608 01:13:46,310 --> 01:13:49,510 Post ke vi klakas OK, ke garde iras. 1609 01:13:49,510 --> 01:13:53,600 Tiam ĝi tuj montras vi la korpon HTML. 1610 01:13:53,600 --> 01:13:54,590 Nice. 1611 01:13:54,590 --> 01:14:00,880 >> OK, do ĝuste reala rapida, skribo en JavaScript estas súper rapida. 1612 01:14:00,880 --> 01:14:02,710 Por deklari variablo, var nomo. 1613 01:14:02,710 --> 01:14:07,070 Do en C, vi havas int i, vi havas deklari kia tipo ĝi estas. 1614 01:14:07,070 --> 01:14:08,040 PHP, $. 1615 01:14:08,040 --> 01:14:08,755 Ĝavoskripto, var. 1616 01:14:08,755 --> 01:14:09,630 Ni parolis pri tiu. 1617 01:14:09,630 --> 01:14:11,020 Bone, ni iru. 1618 01:14:11,020 --> 01:14:12,510 >> Masxojn, samo. 1619 01:14:12,510 --> 01:14:14,230 Sama afero. 1620 01:14:14,230 --> 01:14:18,165 Funkcio deklaroj, do samkiel vi vidis en C. 1621 01:14:18,165 --> 01:14:21,290 Lin sola malsama estas tiel kiam vi alvenas al aliaj programlingvoj, 1622 01:14:21,290 --> 01:14:24,780 kiel kiam vi prenas 51 sekva semestro kaj vi faras kun OCaml, 1623 01:14:24,780 --> 01:14:26,690 vi povas trakti kun anonima funkcioj. 1624 01:14:26,690 --> 01:14:28,240 Do tio estas ĝuste kion vi havas tie. 1625 01:14:28,240 --> 01:14:31,560 Do vi volas meti en sumo, ia sumo valoro. 1626 01:14:31,560 --> 01:14:33,870 Sed vi povus nur esti farante ĝin unu tempo. 1627 01:14:33,870 --> 01:14:37,310 Do vi ne volas nomi ĝin funkcio sumo, donu gxin funkcio deklaro. 1628 01:14:37,310 --> 01:14:39,830 Anstataŭe, vi simple uzi ĝin kiel anonima funkcio. 1629 01:14:39,830 --> 01:14:42,469 Kaj vi vidis ĉi tre. 1630 01:14:42,469 --> 01:14:44,510 Vi vidos ekzemplon de tiu en paro diapozitivoj. 1631 01:14:44,510 --> 01:14:45,597 Yeah, ni jam vidos. 1632 01:14:45,597 --> 01:14:46,430 Gabe: Bona demando. 1633 01:14:46,430 --> 01:14:50,660 Kiam povus vi volas uzi anonima funkcio ĉi tie? 1634 01:14:50,660 --> 01:14:54,111 Esence, kiam vi volas ion, kiel okazaĵo, okazi. 1635 01:14:54,111 --> 01:14:55,860 Do kiam la muso estas clicked, ekzemple, 1636 01:14:55,860 --> 01:14:57,790 Vi volas iun funkcion esti vokita. 1637 01:14:57,790 --> 01:15:00,570 Do vi pasos al la okazaĵo traktilo, sekvinberoj al la evento, 1638 01:15:00,570 --> 01:15:02,870 ia, la funkcio kiu vi volas nomi. 1639 01:15:02,870 --> 01:15:04,710 Kaj kion vi pasi Estas kiel, fine 1640 01:15:04,710 --> 01:15:08,757 de la tago, nur montrilon al ke instrukcioj, al la funkcio. 1641 01:15:08,757 --> 01:15:11,090 Do ĝi ne estas kiel vi pasi la tutan kodon, same kiel 1642 01:15:11,090 --> 01:15:12,173 puntero al la funkcio. 1643 01:15:12,173 --> 01:15:17,871 Kaj tiam, kiam iu alklakas la muson, tiam tiu funkcio prenas nomata. 1644 01:15:17,871 --> 01:15:22,340 >> DAVIN: arrays, do vi havi tabelo deklaro. 1645 01:15:22,340 --> 01:15:23,990 Tiam, tabelo meti aĵojn en. 1646 01:15:23,990 --> 01:15:25,769 Reala rapida, kion faros ĉi elprinti? 1647 01:15:25,769 --> 01:15:27,060 Kion la tria ero estos? 1648 01:15:27,060 --> 01:15:31,470 1649 01:15:31,470 --> 01:15:32,450 >> Publiko: "JS". 1650 01:15:32,450 --> 01:15:33,940 >> DAVIN: Rajto, ke estus "js." 1651 01:15:33,940 --> 01:15:35,760 Atendu, reiri. 1652 01:15:35,760 --> 01:15:37,100 Kiel longa? 1653 01:15:37,100 --> 01:15:38,117 >> Publiko: Tri. 1654 01:15:38,117 --> 01:15:38,950 DAVIN: Tri, dekstra? 1655 01:15:38,950 --> 01:15:40,210 Precize kion vi pensas. 1656 01:15:40,210 --> 01:15:42,072 OK, nun iru. 1657 01:15:42,072 --> 01:15:43,530 Arrays, vi povas aldoni aĵojn por ili. 1658 01:15:43,530 --> 01:15:45,395 Do vi povas iri pli tie iliaj komencaj baroj. 1659 01:15:45,395 --> 01:15:46,740 Nur io teni en menso. 1660 01:15:46,740 --> 01:15:49,760 PHP, JavaScript, ili estas iom iom pli pardonanta en terminoj de aferoj 1661 01:15:49,760 --> 01:15:50,570 kiel tio. 1662 01:15:50,570 --> 01:15:54,260 Objektoj, tre multe kiel structs en C, tre multe 1663 01:15:54,260 --> 01:15:56,590 kiel asocia arrays en PHP. 1664 01:15:56,590 --> 01:15:58,720 Vi cxiuj havis sperton kun tiu. 1665 01:15:58,720 --> 01:16:01,880 Do JSON, kiam vi estas pasante JSON tien kaj reen en p-ara ok, 1666 01:16:01,880 --> 01:16:03,260 tio estas via objekto. 1667 01:16:03,260 --> 01:16:06,290 >> Do jes, ekzemple, realan rapidan ekzemplon. 1668 01:16:06,290 --> 01:16:07,880 Ĉi tie estas objekto. 1669 01:16:07,880 --> 01:16:12,700 La vojo vi referenci tiun objekto, do ĝuste reala rapida, 1670 01:16:12,700 --> 01:16:18,630 diru mi volis trovi el, OK, kio estas la kurso? 1671 01:16:18,630 --> 01:16:20,681 Do la objekto nomo tie estas CS50. 1672 01:16:20,681 --> 01:16:23,180 Kaj tiam se mi havus asocieca tabelo, kiom mi farus tion? 1673 01:16:23,180 --> 01:16:24,580 Mi uzos ŝlosilon, dekstra? 1674 01:16:24,580 --> 01:16:26,030 Do mi havas la nomon de la tabelo. 1675 01:16:26,030 --> 01:16:30,160 Mi havas krampo, citaĵoj, ŝlosilo, fino citaĵoj, fino krampo, 1676 01:16:30,160 --> 01:16:33,610 kaj kiu referencas ke elemento ene mia asocieca tabelo. 1677 01:16:33,610 --> 01:16:37,646 Kiel mi referencita Certe ene mian celon? 1678 01:16:37,646 --> 01:16:39,170 Iu scias? 1679 01:16:39,170 --> 01:16:40,622 >> Publiko: [inaudible]. 1680 01:16:40,622 --> 01:16:41,784 >> DAVIN: Kiel vi? 1681 01:16:41,784 --> 01:16:42,700 Publiko: CS50.course. 1682 01:16:42,700 --> 01:16:43,510 DAVIN: Dekstra, yeah. 1683 01:16:43,510 --> 01:16:45,320 Do CS50.course. 1684 01:16:45,320 --> 01:16:48,770 Do la vojo vi referenci tion ene JSON objekto estas per punkto. 1685 01:16:48,770 --> 01:16:53,114 >> Publiko: Vi povas ankaŭ uzi tabelo sintakso. 1686 01:16:53,114 --> 01:16:54,050 >> DAVIN: OK, bone. 1687 01:16:54,050 --> 01:16:57,544 >> Gabe: Vi povas ankaŭ uzi CS50 krampo, kordoj, kiel citiloj. 1688 01:16:57,544 --> 01:16:59,210 Publiko: Mi kredas ke estas identaj al PHP. 1689 01:16:59,210 --> 01:17:00,293 Gabe: Estas la sama afero. 1690 01:17:00,293 --> 01:17:02,487 DAVIN: Bone! 1691 01:17:02,487 --> 01:17:03,945 Sed vi vidos ĉi aliloke. 1692 01:17:03,945 --> 01:17:08,990 1693 01:17:08,990 --> 01:17:10,480 Yeah, do plu iri. 1694 01:17:10,480 --> 01:17:13,330 Jen kion mi ĵus diris. 1695 01:17:13,330 --> 01:17:17,840 Do en JavaScript jQuery ekzemplo. 1696 01:17:17,840 --> 01:17:19,440 Do tio estas mia DOM, dekstra? 1697 01:17:19,440 --> 01:17:22,290 1698 01:17:22,290 --> 01:17:25,410 Reala rapida, do mi havas kapo, saluton mondo, korpo. 1699 01:17:25,410 --> 01:17:26,160 Mi havas butonon. 1700 01:17:26,160 --> 01:17:27,870 Ĝi diras "puŝi min," do mi volas puŝi ĝin. 1701 01:17:27,870 --> 01:17:29,745 Kaj mi volas fari ion kiam ĝi estos klakis. 1702 01:17:29,745 --> 01:17:31,220 Ĝuste, sekva. 1703 01:17:31,220 --> 01:17:34,630 >> Ĝuste, do cxi tio estas mia Javascript. 1704 01:17:34,630 --> 01:17:37,790 Do jQuery estas nur facilan maniero skribi Javascript. 1705 01:17:37,790 --> 01:17:40,920 Do tiu, kaj kion mi montros al vi proksima, tuj estos jQuery, 1706 01:17:40,920 --> 01:17:41,930 estas identaj. 1707 01:17:41,930 --> 01:17:43,990 Do ili faros la samajn aferojn. 1708 01:17:43,990 --> 01:17:45,974 Nur jQuery inklinas esti iom pli facila. 1709 01:17:45,974 --> 01:17:47,140 Homoj emas ŝati ĝin pli. 1710 01:17:47,140 --> 01:17:48,390 Ĝi havas multajn funkciojn. 1711 01:17:48,390 --> 01:17:49,830 Do homoj inklinas uzi jQuery. 1712 01:17:49,830 --> 01:17:53,270 Vi ĉiuj uzis jQuery en la lastaj p-aro. 1713 01:17:53,270 --> 01:17:54,270 Do kio estos ĉi fari? 1714 01:17:54,270 --> 01:17:56,580 Kion ĉi JavaScript-- tiel tiu estas nur ordinaraj Javascript. 1715 01:17:56,580 --> 01:17:57,430 Kion ĉi fari? 1716 01:17:57,430 --> 01:18:00,600 1717 01:18:00,600 --> 01:18:03,450 Kion ĝi faras? 1718 01:18:03,450 --> 01:18:04,890 >> Do unue, vi vidos fenestro onload. 1719 01:18:04,890 --> 01:18:05,390 Dekstra? 1720 01:18:05,390 --> 01:18:06,640 Do ni tute ne vidis antaŭe. 1721 01:18:06,640 --> 01:18:09,380 Do tiu tuj atendos ĝis la tuta fenestro ŝarĝoj. 1722 01:18:09,380 --> 01:18:12,770 Do ĝi estas tuj atendos ĝis HTML, ĉiuj bildoj ŝarĝas 1723 01:18:12,770 --> 01:18:13,770 antaŭ ol ĝi faras nenion. 1724 01:18:13,770 --> 01:18:16,050 Do diru nia DOM ŝarĝis. 1725 01:18:16,050 --> 01:18:17,270 Ĉio estas tie. 1726 01:18:17,270 --> 01:18:19,080 Do kion okazos? 1727 01:18:19,080 --> 01:18:19,922 Yeah? 1728 01:18:19,922 --> 01:18:22,880 >> Publiko: Buton aperas. 1729 01:18:22,880 --> 01:18:25,201 >> DAVIN: La butono estas jam tie. 1730 01:18:25,201 --> 01:18:26,700 Yeah, do la butono la jam tie. 1731 01:18:26,700 --> 01:18:31,190 Sed tiu tuj diros, OK, se mi klakas la butonon, 1732 01:18:31,190 --> 01:18:33,650 tial la butono estas jam negrave, ke HTML etikedo. 1733 01:18:33,650 --> 01:18:35,980 Atendu, revenu vera rapida. 1734 01:18:35,980 --> 01:18:39,470 Ĉi etikedo dekstran dekstre jen tuj estos butonon jam. 1735 01:18:39,470 --> 01:18:40,810 Ekzistas jam butonon. 1736 01:18:40,810 --> 01:18:44,120 Sed tiam, la Ĝavoskripto etikedo, ĝuste ĉi tie, 1737 01:18:44,120 --> 01:18:46,160 ĝi diras, OK, Mi volas akiri elementon de IRU, 1738 01:18:46,160 --> 01:18:50,300 tia serĉo butonon nur diras, OK, Mi volas por mapi tiun variablon al tiu butono. 1739 01:18:50,300 --> 01:18:53,120 Por ke variablo estas nur facilan manieron por aliri tiun butonon. 1740 01:18:53,120 --> 01:18:57,300 Kaj mi diras, OK, se mi klakas ke butono, do se mi klakas tiun elementon, 1741 01:18:57,300 --> 01:18:59,560 kaj ĉi elemento referencas al la butonon, se mi klakas ĝin, 1742 01:18:59,560 --> 01:19:00,875 tiam mi volas nomi funkcio. 1743 01:19:00,875 --> 01:19:03,500 Ĉi tie estas unu el tiuj anonimaj funkcioj ni parolas. 1744 01:19:03,500 --> 01:19:04,840 >> Nur voki iu funkcio. 1745 01:19:04,840 --> 01:19:08,840 Ene tiu funkcio, esence io ni vidis multon, garde. 1746 01:19:08,840 --> 01:19:10,477 Vi klaku la serĉo butonon. 1747 01:19:10,477 --> 01:19:12,060 Iĝos esence havi butonon. 1748 01:19:12,060 --> 01:19:13,040 Vi klaku ĝin. 1749 01:19:13,040 --> 01:19:14,040 Vi bonstata garde. 1750 01:19:14,040 --> 01:19:14,850 X eksteren. 1751 01:19:14,850 --> 01:19:15,754 Estas tio. 1752 01:19:15,754 --> 01:19:16,254 Yeah? 1753 01:19:16,254 --> 01:19:21,980 >> Publiko: Do ​​se vi metis la skripto [Inaudible], skripto etikedo en via HTML? 1754 01:19:21,980 --> 01:19:24,300 >> DAVIN: Vi povas meti la skripto etikedo rekte en la kapo 1755 01:19:24,300 --> 01:19:30,667 ĉar vi havas ĉi onload. 1756 01:19:30,667 --> 01:19:32,000 Estas ankaŭ ke vi havas klako. 1757 01:19:32,000 --> 01:19:34,166 Do ĝi estas tuj atendos ĝis vi klaku por io. 1758 01:19:34,166 --> 01:19:37,470 Sed onload estas nur esti sekura, por fari certe ĉio ŝarĝoj en vian HTML 1759 01:19:37,470 --> 01:19:38,170 antemano. 1760 01:19:38,170 --> 01:19:39,247 Yeah? 1761 01:19:39,247 --> 01:19:40,330 Vi volas diri ion? 1762 01:19:40,330 --> 01:19:41,080 >> Gabe: [inaudible]. 1763 01:19:41,080 --> 01:19:42,485 DAVIN: Yeah. 1764 01:19:42,485 --> 01:19:45,426 >> Publiko: Do ​​onload Evitas difinante la variablo serĉo butono 1765 01:19:45,426 --> 01:19:49,930 per nur diras document.getElementByID serĉo butonon dot [inaudible]. 1766 01:19:49,930 --> 01:19:52,320 >> DAVIN: Definitive, sed tiam vian ĉenon nur ricevas grandegan. 1767 01:19:52,320 --> 01:19:55,553 Ekzakte, do ĉi estas nur por plifaciligi por vi, jes. 1768 01:19:55,553 --> 01:19:56,053 Jes? 1769 01:19:56,053 --> 01:19:57,886 >> Publiko: Kien ni Krei window.onload? 1770 01:19:57,886 --> 01:19:58,951 Aŭ document.ready? 1771 01:19:58,951 --> 01:20:00,590 >> DAVIN: Jes, ekzistas. 1772 01:20:00,590 --> 01:20:02,094 Jes, tie estas, mi kontrolis. 1773 01:20:02,094 --> 01:20:03,710 >> Gabe: Ne por ili zorgi pri. 1774 01:20:03,710 --> 01:20:06,970 >> DAVIN: OK, do mi iros informi vin ĉiukaze. 1775 01:20:06,970 --> 01:20:11,005 Do esence, ĝuste ĝenerale, tiel window.onload atendas ĝis via DOM, ĉiuj 1776 01:20:11,005 --> 01:20:12,180 via HTML, ŝarĝo. 1777 01:20:12,180 --> 01:20:13,513 Ĝi atendas ĝis via idolo ŝarĝo. 1778 01:20:13,513 --> 01:20:14,930 Ĝi atendas ĝis ĉiu ŝarĝoj. 1779 01:20:14,930 --> 01:20:18,410 document.ready, ĝi nur atendas ĝis via DOM ŝarĝoj. 1780 01:20:18,410 --> 01:20:22,190 Iam la HTML estas ĉiuj tie, fojo via DOM estas tie, komenciĝas kurante. 1781 01:20:22,190 --> 01:20:23,400 Tio estas la nura diferenco. 1782 01:20:23,400 --> 01:20:24,700 >> Gabe: Rapida prudento kontrolu tie. 1783 01:20:24,700 --> 01:20:29,060 Do ĉi tio povas vidi specon de kiel linio de kodo, dekstra? 1784 01:20:29,060 --> 01:20:33,600 Ĉar estas window.onload egalas faskon da aĵoj. 1785 01:20:33,600 --> 01:20:39,030 Kiam Javascript legas ĉi, veraj aŭ falsa, la funkcio prenas ekzekutita. 1786 01:20:39,030 --> 01:20:40,020 Falsa. 1787 01:20:40,020 --> 01:20:40,920 OK? 1788 01:20:40,920 --> 01:20:44,470 Kio okazas tie, vi nur pasas ĉi funkcio kiel anonima funkcioj 1789 01:20:44,470 --> 01:20:45,300 al window.onload. 1790 01:20:45,300 --> 01:20:48,480 Kaj tiam kiam ĝi iras por fakte get ekzekutita? 1791 01:20:48,480 --> 01:20:49,600 Kiam la fenestro ŝarĝoj. 1792 01:20:49,600 --> 01:20:50,420 Tio estas okazaĵo. 1793 01:20:50,420 --> 01:20:52,460 Do tio estas la jus t afero ni estas parolante pri antaŭe, dekstra? 1794 01:20:52,460 --> 01:20:54,580 Do kiam la okazaĵo okazas, la funkcio okazas. 1795 01:20:54,580 --> 01:20:55,746 Sama afero kun la onclick. 1796 01:20:55,746 --> 01:20:59,510 1797 01:20:59,510 --> 01:21:03,130 >> DAVIN: OK, do iu prenis for la document.ready. 1798 01:21:03,130 --> 01:21:04,698 Sed tiu estos la ĝusta same-- 1799 01:21:04,698 --> 01:21:06,864 Publiko: La dolaro signo, ke estas document.ready. 1800 01:21:06,864 --> 01:21:07,710 Tio estas simbola ligilo. 1801 01:21:07,710 --> 01:21:08,501 >> DAVIN: Ho, tio estas? 1802 01:21:08,501 --> 01:21:10,880 1803 01:21:10,880 --> 01:21:15,500 OK, do ĉi rimedoj document.ready, ŝparvojo. 1804 01:21:15,500 --> 01:21:19,660 Sed tio estas la sama kiel window.onload krom ke malmulta diferenco 1805 01:21:19,660 --> 01:21:20,680 Mi rakontis al vi. 1806 01:21:20,680 --> 01:21:21,870 Kaj jen estas jQuery. 1807 01:21:21,870 --> 01:21:25,190 Do tiu estas la ĝusta sama thing-- ĉi estas JavaScript. 1808 01:21:25,190 --> 01:21:29,500 Tiu estas just-- iuj homoj pensas pri gxi kiel pli malpeza pezo, glata versio 1809 01:21:29,500 --> 01:21:32,370 kiu havas multaj funcionalidades ke vi probable uzos. 1810 01:21:32,370 --> 01:21:34,500 Do ĉi tio faras la ĝustan samon. 1811 01:21:34,500 --> 01:21:37,110 >> Do tion al ia atentigi. 1812 01:21:37,110 --> 01:21:40,364 Do en la alia ekzemplo, ni havis document.getElementByID, 1813 01:21:40,364 --> 01:21:42,280 do ni havis ĉi longa ĉeno kiu tuj akiri 1814 01:21:42,280 --> 01:21:44,290 la elemento per nenial ID havas. 1815 01:21:44,290 --> 01:21:46,470 Tio anstataŭita de tiu alvoko ĝuste ĉi tie. 1816 01:21:46,470 --> 01:21:50,860 Do komprenu la dolaro signo, tiam vi vidos citaĵo, hashtag. 1817 01:21:50,860 --> 01:21:52,370 Hashtag estas ĉiam selector. 1818 01:21:52,370 --> 01:21:54,730 Ĝi diras, OK, ĉi tio devas vidi kun ID. 1819 01:21:54,730 --> 01:21:56,120 Kio estas la seleccionador por klaso? 1820 01:21:56,120 --> 01:21:57,190 >> Publiko: Dot. 1821 01:21:57,190 --> 01:21:57,960 >> DAVIN: Dot, dekstre. 1822 01:21:57,960 --> 01:22:01,950 Se vi simple intencas elekti etikedo, kio estas? 1823 01:22:01,950 --> 01:22:03,310 Estas nur la etikedon, precize. 1824 01:22:03,310 --> 01:22:05,560 Kaj vi povus uzi tiun ĉi tie, ankaŭ. 1825 01:22:05,560 --> 01:22:08,560 >> Gabe: Kaj laŭ etikedo, ni subkomprenas ŝatas div, ekzemple, aŭ kapo. 1826 01:22:08,560 --> 01:22:11,500 >> DAVIN: Aŭ korpo aŭ p aŭ ion tian, jes. 1827 01:22:11,500 --> 01:22:14,390 Do jen, OK, anstataŭ diri document.getElementByID, 1828 01:22:14,390 --> 01:22:16,500 ĉi tio estas nur la ĝusta sama afero. 1829 01:22:16,500 --> 01:22:17,990 Nur en jQuery, ĝi estas pli mallonga. 1830 01:22:17,990 --> 01:22:19,860 Do estas pli simpla. 1831 01:22:19,860 --> 01:22:23,420 Tial do, ne plu onclick, simple alklaku. 1832 01:22:23,420 --> 01:22:26,320 jQuery funkcio, nomas tiun funkcion. 1833 01:22:26,320 --> 01:22:27,580 Garde estas la ĝusta sama. 1834 01:22:27,580 --> 01:22:29,452 Do estas iom malgranda, aŭ iomete 1835 01:22:29,452 --> 01:22:32,410 malpli longa, iom bit-- homoj pensas ĝi estas iom pli facile skribi ekstere, 1836 01:22:32,410 --> 01:22:34,600 iomete pli facile kompreni. 1837 01:22:34,600 --> 01:22:35,640 Sed tio estas jQuery. 1838 01:22:35,640 --> 01:22:37,887 Multaj homoj akiras iom iom konfuzita kaj maltrankviligita 1839 01:22:37,887 --> 01:22:40,220 kaj ili opinias, OK, jQuery estas malsama ol Javascript. 1840 01:22:40,220 --> 01:22:42,136 Mi devas memori tiujn du malsamaj aferoj. 1841 01:22:42,136 --> 01:22:42,740 Ne. 1842 01:22:42,740 --> 01:22:45,315 Mi volas diri, estas malsama sintakso. 1843 01:22:45,315 --> 01:22:46,970 Sed jQuery estas JavaScript. 1844 01:22:46,970 --> 01:22:50,050 Estas nur kvazaŭe bona versio kiu 1845 01:22:50,050 --> 01:22:51,967 povus esti facile kompreni ke homoj uzas. 1846 01:22:51,967 --> 01:22:53,716 Gabe: Yeah, esti honesta, ke dolaro signo 1847 01:22:53,716 --> 01:22:57,240 ke vi vidas en jQuery, tio estas nur la nomo de funkcio kiu jQuery difinas. 1848 01:22:57,240 --> 01:22:58,614 Ĝi ne havas nenion speciala. 1849 01:22:58,614 --> 01:23:03,140 Estas Estas nur la nomo de funkcio, same kiel vi povus difini dolaro signo. 1850 01:23:03,140 --> 01:23:05,670 >> DAVIN: Yeah, do parolis pri tio. 1851 01:23:05,670 --> 01:23:06,680 Iuj utilaj aĵoj. 1852 01:23:06,680 --> 01:23:10,414 Mi rerigardas ĉe la malnova kvizojn. 1853 01:23:10,414 --> 01:23:13,080 En la pasintaj kelkaj kvizoj, ili jam devis uzi aĵojn kiel tiu. 1854 01:23:13,080 --> 01:23:15,230 Do document.ready, do certigi ĉio 1855 01:23:15,230 --> 01:23:17,410 ŝarĝita antaŭ vi komencas faranta aferojn. 1856 01:23:17,410 --> 01:23:20,120 Elekti ID, aŭ elektos klaso, ĝi estis ĵus 1857 01:23:20,120 --> 01:23:24,020 esti citaĵo pentras al iu klaso, fino citaĵo. 1858 01:23:24,020 --> 01:23:26,580 Proponu, do se vi estas Sendante formo kaj alvoko 1859 01:23:26,580 --> 01:23:28,830 tiu funkcio post la formo submetas. 1860 01:23:28,830 --> 01:23:34,210 Valoron, do ni diru mi havis formon submetiĝon, kiel uzanto nomo, email, 1861 01:23:34,210 --> 01:23:34,950 ajn. 1862 01:23:34,950 --> 01:23:36,010 Mi havis tekstujon. 1863 01:23:36,010 --> 01:23:37,670 Do mi tajpas en tiun tekstujon. 1864 01:23:37,670 --> 01:23:42,170 Nu, se vi volas ricevi la valoron el tiu teksto skatolo, vi uzas dot val. 1865 01:23:42,170 --> 01:23:44,050 Kaj tiam, malsupren tie, dot HTML estas la sama 1866 01:23:44,050 --> 01:23:47,710 estas kiel dokumento dot getElementByID dot innerHTML. 1867 01:23:47,710 --> 01:23:50,890 Por ke tuj revenos vi la HTML de tiu IRU. 1868 01:23:50,890 --> 01:23:55,080 Ĉi tie, vi ĵus uzas iun ID aŭ nenial dot HTML. 1869 01:23:55,080 --> 01:23:56,930 Tio ricevos la HTML de tiu elemento. 1870 01:23:56,930 --> 01:24:00,130 Se vi volas do ŝanĝu tion HTML, vi povas pasi ĝin ion. 1871 01:24:00,130 --> 01:24:05,600 Do vi estus kiel skalara HTML, kaj tiam ene, citaĵoj, nova HTML aŭ iu. 1872 01:24:05,600 --> 01:24:07,490 >> Gabe: OK, do AJAX. 1873 01:24:07,490 --> 01:24:10,347 Mi vere ŝatus kompreni AJAX vere bone. 1874 01:24:10,347 --> 01:24:12,430 Do mi volas vin infanoj al kompreni AJAX vere bone. 1875 01:24:12,430 --> 01:24:14,221 Ĉar se vi fari, vi preskaux irante 1876 01:24:14,221 --> 01:24:16,810 kompreni ĉion devas vidi kun HTTP, PHP, 1877 01:24:16,810 --> 01:24:21,080 Ĝavoskripto ĉar ĉiuj kunfluas en AJAX. 1878 01:24:21,080 --> 01:24:25,130 AJAX ne estas lingvo. 1879 01:24:25,130 --> 01:24:27,000 AJAX estas tekniko. 1880 01:24:27,000 --> 01:24:31,690 Kaj ĝi uzas multajn malsamajn ilojn. 1881 01:24:31,690 --> 01:24:35,090 AJAX staras por nesinkrona JavaScript XML. 1882 01:24:35,090 --> 01:24:36,730 Do la metodo, la lingvo, la datumoj. 1883 01:24:36,730 --> 01:24:40,610 >> Do la ĉefa lingvo kiu ni uzas en AJAX deĉenigi ĉio 1884 01:24:40,610 --> 01:24:42,830 kaj manipuli ĉiun poste estas JavaScript. 1885 01:24:42,830 --> 01:24:45,160 Tial ĝi rilatas tre proksima al JavaScript. 1886 01:24:45,160 --> 01:24:49,810 Kaj tiam nesinkrona estas ĉar ni ne faras ĝin 1887 01:24:49,810 --> 01:24:51,980 ĉiuj samtempe kiam ni ŝarĝas la paĝon. 1888 01:24:51,980 --> 01:24:57,190 Tio estas kion ni povas fari aferojn ia en paralela. 1889 01:24:57,190 --> 01:24:59,725 La ĉefa ideo malantaŭ AJAX estas ke vi volas 1890 01:24:59,725 --> 01:25:02,170 ĝi akiri iun specifan informon. 1891 01:25:02,170 --> 01:25:06,450 Ekzemple, kiam vi tajpas nova uzantonomo kiam vi registras uzanto nomo, 1892 01:25:06,450 --> 01:25:08,520 mia konto estas abc123. 1893 01:25:08,520 --> 01:25:11,671 Kaj poste, fine de la formo, vi devas alklaki Proponu. 1894 01:25:11,671 --> 01:25:14,420 Kaj ĝi devis iri al la servilo, kaj tiam kontroli ĉu en la datumbazo, 1895 01:25:14,420 --> 01:25:15,594 abc123 estas jam tie. 1896 01:25:15,594 --> 01:25:18,510 Kaj se ĝi estas jam tie, ĝi diras, uzantonomo jam en la datumbazo. 1897 01:25:18,510 --> 01:25:21,010 Kaj ili, vi devas plenigi el la tuta formo denove. 1898 01:25:21,010 --> 01:25:23,110 Sed estis vere, vere malbona. 1899 01:25:23,110 --> 01:25:25,440 >> Kaj tiam homoj diras, OK, kial povas ne ni ĵus 1900 01:25:25,440 --> 01:25:29,560 fari malgrandan HTTP peto ricevi justan kontroli al vidi se ĉi tiu uzanto estas en la datumbazo 1901 01:25:29,560 --> 01:25:32,080 antaŭ la uzanto devis submit la tuta formo? 1902 01:25:32,080 --> 01:25:36,350 Do ekzemple, kiam la uzanto finas tajpado abc123, 1903 01:25:36,350 --> 01:25:39,660 ni nur iri al la servilo iom brido kaj simple akiri veran aŭ falsan 1904 01:25:39,660 --> 01:25:43,080 de la servilo por vidi se tio validan salutnomon aŭ ne. 1905 01:25:43,080 --> 01:25:49,250 OK, do tio estas unu el la ĉefaj Uzas de AJAX nuntempe ankoraŭ. 1906 01:25:49,250 --> 01:25:52,130 >> DAVIN: Do reala rapida, en oni Ajax alvokon en jQuery, 1907 01:25:52,130 --> 01:25:54,770 vi povus signifi ke vi volas ke ĝi esti sinkronigita. 1908 01:25:54,770 --> 01:25:56,330 Vi ne devus fari tion. 1909 01:25:56,330 --> 01:25:57,640 Sed vi povas fari tion. 1910 01:25:57,640 --> 01:25:59,277 Kaj se vi faris tion, kio okazus? 1911 01:25:59,277 --> 01:26:01,610 Nu, ekzemple, kiam oni estas eksciinte aŭ kio ajn, 1912 01:26:01,610 --> 01:26:05,464 Via foliumilo estas simple perdos tempon ĝis tiu tuta alvoko estas kompleta 1913 01:26:05,464 --> 01:26:08,130 anstataŭ lasanta vin fari aliajn tion tuj post vi klakas ĝin. 1914 01:26:08,130 --> 01:26:14,560 1915 01:26:14,560 --> 01:26:17,115 >> Gabe: Ĝi estas ne pasi plu. 1916 01:26:17,115 --> 01:26:19,681 Ho mia dio. 1917 01:26:19,681 --> 01:26:20,180 Pardonu! 1918 01:26:20,180 --> 01:26:22,810 1919 01:26:22,810 --> 01:26:23,601 Yup. 1920 01:26:23,601 --> 01:26:25,350 "En la pasinteco, la kliento bezonis peto 1921 01:26:25,350 --> 01:26:26,840 la tutan enhavon de retejo. " 1922 01:26:26,840 --> 01:26:28,210 Tio estas kion mi diris. 1923 01:26:28,210 --> 01:26:30,070 Ĝi permesas nin sendi aldona Get aŭ POST 1924 01:26:30,070 --> 01:26:32,140 petoj sen devi por reŝarĝi nia retumilo. 1925 01:26:32,140 --> 01:26:34,806 Do je la fino de la tago, ni estas fakte farante HTTP petojn 1926 01:26:34,806 --> 01:26:35,740 tie uzante JavaScript. 1927 01:26:35,740 --> 01:26:39,700 Ĉar antaŭe, ni nur uzis Ĝavoskripto ŝanĝi la HTML kiu jam venis. 1928 01:26:39,700 --> 01:26:43,110 Kaj nun ni povas uzi ĝin por interfaco kun la servantoj retejo ankaŭ. 1929 01:26:43,110 --> 01:26:46,140 La vojo ĉi okazas Estas ni havas la kliento. 1930 01:26:46,140 --> 01:26:47,340 Davin estas kliento. 1931 01:26:47,340 --> 01:26:50,797 Kaj li havas ĉiujn Ĝavoskripto kurante ĉar HTML estas muta. 1932 01:26:50,797 --> 01:26:51,630 JavaScript estas inteligenta. 1933 01:26:51,630 --> 01:26:54,690 Do davin Davin havas sia inteligenta parto kaj sia muta parto. 1934 01:26:54,690 --> 01:26:57,590 Li tuj uzos lian inteligenta parto nun. 1935 01:26:57,590 --> 01:27:00,860 Li tuj uzos Ĝavoskripto al peto, ekzemple, 1936 01:27:00,860 --> 01:27:04,340 ĉu abc123 estas en la datumbazo aŭ ne. 1937 01:27:04,340 --> 01:27:08,450 >> Do Davin, bonvolu, vi nur Lasu min HTTP peto. 1938 01:27:08,450 --> 01:27:09,197 Dankon. 1939 01:27:09,197 --> 01:27:10,530 Do li simple sendis HTTP peto. 1940 01:27:10,530 --> 01:27:11,270 Vi vidos ke? 1941 01:27:11,270 --> 01:27:14,700 Kaj tio estas ĝuste la sama vojo ke iu HTTP peto estas sendita. 1942 01:27:14,700 --> 01:27:16,830 La navegador, Google Chrome aŭ ion, estas 1943 01:27:16,830 --> 01:27:19,570 tuj vidos ke Davin La provante sendi HTTP peto, 1944 01:27:19,570 --> 01:27:20,930 tuj helpos HM iomete. 1945 01:27:20,930 --> 01:27:23,950 Kaj tio estas ironta tutan vojon al la servilo. 1946 01:27:23,950 --> 01:27:27,370 Nun, la servilo tuj havos PHP tie, aŭ ajna alia lingvo. 1947 01:27:27,370 --> 01:27:29,990 Ĝuste kiel en normala HTTP peto. 1948 01:27:29,990 --> 01:27:31,950 Estas sufiĉe tre normala HTTP peto. 1949 01:27:31,950 --> 01:27:33,658 >> Kaj poste, la servilo tuj diros, nu bone, 1950 01:27:33,658 --> 01:27:37,270 Davin volas min por kontroli ĉu ĉi abc123 estas en la datumbazo. 1951 01:27:37,270 --> 01:27:38,310 Iru paroli al la modelo. 1952 01:27:38,310 --> 01:27:41,310 La modelo diras ke estas ne. abc123 estas bona salutnomon. 1953 01:27:41,310 --> 01:27:47,940 Kaj tiam, la TTT-servilo tuj uzi PHP por repagi iun formon de dosiero. 1954 01:27:47,940 --> 01:27:52,280 Ĝi povus esti laŭvorte ĝuste dosiero kiu enhavas "jes" en ĝi, aŭ "ne, 1955 01:27:52,280 --> 01:27:53,315 aŭ iel simile. 1956 01:27:53,315 --> 01:27:54,190 Ĝi eblus ajnan dosieron. 1957 01:27:54,190 --> 01:27:57,080 >> Ĝi povus esti kiel mi iros al sendu Davin bildon de anaso 1958 01:27:57,080 --> 01:28:01,200 se ĝi estas en la datumbazo kaj sendu foton de hamstro 1959 01:28:01,200 --> 01:28:02,420 se ĝi ne estas en la datumbazo. 1960 01:28:02,420 --> 01:28:04,294 Tio estus speco de muta, sed ĝi funkcios. 1961 01:28:04,294 --> 01:28:07,030 OK, do mi sendas anason al Davin. 1962 01:28:07,030 --> 01:28:08,150 Davin akiris anaso. 1963 01:28:08,150 --> 01:28:13,330 Kaj nun, kiu tuj manipuli la anaso? 1964 01:28:13,330 --> 01:28:16,390 Davin la inteligenta parto denove, tiel Ĝavoskripto, dekstra? 1965 01:28:16,390 --> 01:28:18,620 Ĝavoskripto sendis la peto, kaj JavaScript 1966 01:28:18,620 --> 01:28:22,300 tuj ricevos la peton kaj interpreti ĝin en iu formo. 1967 01:28:22,300 --> 01:28:26,630 >> Kaj en ĉi tiu senso, ĝi tuj diri, OK, se anaso tiam mi estas bona. 1968 01:28:26,630 --> 01:28:30,770 Se hamstro, tiam mi iros diri, ne, vikipediista nomo jam 1969 01:28:30,770 --> 01:28:31,970 ekzistas en la datumbazo. 1970 01:28:31,970 --> 01:28:33,845 Sed kutime, vi ne estas tuj sendos anaso. 1971 01:28:33,845 --> 01:28:36,740 Vi tuj sendu ion iomete inteligenta. 1972 01:28:36,740 --> 01:28:40,320 Kaj kion ni uzas estas XML. 1973 01:28:40,320 --> 01:28:42,690 Kaj pli ĵus, ni uzas JSON. 1974 01:28:42,690 --> 01:28:45,629 JSON estas ĝuste Ĝavoskripto Objekto Skribmaniero, kiu 1975 01:28:45,629 --> 01:28:47,670 esence vi ricevas tutaj JavaScript objekto. 1976 01:28:47,670 --> 01:28:50,820 Kaj vi metos ĝin en iu dosiero, nur ŝatas ke CS50 celo kiun vi uloj vidis. 1977 01:28:50,820 --> 01:28:53,090 Vi metis ĝin en iu dosiero, kaj vi sendu ĝin al Davin. 1978 01:28:53,090 --> 01:28:55,850 >> Do en ĉi tiu kazo, mi farus fari JavaScript objekto 1979 01:28:55,850 --> 01:28:59,570 kaj ĝuste diri, uzanto ekzistas, jes. 1980 01:28:59,570 --> 01:29:01,630 Aŭ uzanto ekzistas, ne. 1981 01:29:01,630 --> 01:29:02,810 Kaj sendi ĝin reen al li. 1982 01:29:02,810 --> 01:29:03,830 Kaj kial JSON? 1983 01:29:03,830 --> 01:29:07,330 Ĉar la persono Kiu estas ricevi ĉi estas 1984 01:29:07,330 --> 01:29:10,030 tuj uzos Ĝavoskripto manipuli la respondo. 1985 01:29:10,030 --> 01:29:14,970 Kaj JavaScript funkcias tiel bone ĉar ĝi nomiĝas JavaScript Objekto Skribmaniero. 1986 01:29:14,970 --> 01:29:15,470 Dekstra? 1987 01:29:15,470 --> 01:29:19,660 Do li povas nur voki funkcio kaj instigi tiu bela objekto de la respondo. 1988 01:29:19,660 --> 01:29:22,890 Kaj tiam, li tuj sciis, ĉu ke uzanto estas en la datumbazo aŭ ne. 1989 01:29:22,890 --> 01:29:25,230 >> Do vi vidas, ĉio venanta kune en la TTT-servilo, 1990 01:29:25,230 --> 01:29:28,450 kaj tiam ekzistas unu HTTP por peto kaj unu HTTP respondo kaj ĉion. 1991 01:29:28,450 --> 01:29:30,600 Do certigi vi uloj kompreni ĉi AJAX alvoko 1992 01:29:30,600 --> 01:29:37,260 ĉar ĝi helpas vin kompreni la tutan de la konceptoj ni parolas. 1993 01:29:37,260 --> 01:29:40,260 >> Do jen ekzemplo de AJAX kun jQuery. 1994 01:29:40,260 --> 01:29:42,130 Kaj tie, ni faru kun get JSON. 1995 01:29:42,130 --> 01:29:45,660 Do ni ne klopodas ricevi bildo de kato tie, aŭ anaso. 1996 01:29:45,660 --> 01:29:48,110 Ni provas akiri JSON dosiero. 1997 01:29:48,110 --> 01:29:51,184 Kaj tiam ni atendos ĝis ĝi estas farita, dot farita. 1998 01:29:51,184 --> 01:29:52,850 Tio signifas mi atendas la respondon. 1999 01:29:52,850 --> 01:29:54,180 Ĝi povus preni momenton. 2000 01:29:54,180 --> 01:29:56,360 Tiam, vi vidas iom de ŝarĝo. 2001 01:29:56,360 --> 01:29:59,340 Se vi volas fari tion en via paĝaro. 2002 01:29:59,340 --> 01:30:01,440 Do pentras farita, kaj poste kio okazas kiam ĝi estas farita? 2003 01:30:01,440 --> 01:30:04,040 Vi pasas en anonima funkcio, kiel ni vidis antaŭe. 2004 01:30:04,040 --> 01:30:07,800 Ĉar farita estas evento, ĵus kiel klakante muson aŭ kio ajn, 2005 01:30:07,800 --> 01:30:08,710 por jQuery. 2006 01:30:08,710 --> 01:30:13,710 Do vi pasos en ĉi tiu funkcio kun datumoj, tekstoj, statuso, kaj jqXHR. 2007 01:30:13,710 --> 01:30:15,790 Kaj esence, tio estas nur iuj variabloj 2008 01:30:15,790 --> 01:30:22,160 ke vi povas uzi poste havi la statuso de la HTTP-peto, 2009 01:30:22,160 --> 01:30:24,470 la datumoj kiujn ĝi okazas por sendi al vi. 2010 01:30:24,470 --> 01:30:28,740 Sekve vi povas poste interpreti ĝin kaj faru ion signfa kun ĝi. 2011 01:30:28,740 --> 01:30:30,240 Kaj se ĝi malsukcesas, kiam forto gxi malsukcesos? 2012 01:30:30,240 --> 01:30:33,780 Nu, kiam la HTTP peto donas vi 500 aŭ iel simile. 2013 01:30:33,780 --> 01:30:37,420 Tiam, ĝi tuj diros tion statuson, kia fiasko kiu estis, 2014 01:30:37,420 --> 01:30:38,420 kaj cxiajn ajxojn. 2015 01:30:38,420 --> 01:30:40,630 Vi devas certigi manipuli ambaŭ kazoj, 2016 01:30:40,630 --> 01:30:42,770 alie la programo iras freneza. 2017 01:30:42,770 --> 01:30:45,820 >> DAVIN: Tiel yeah, tiu estas ĝuste kion vi vidis en via lasta p-aro. 2018 01:30:45,820 --> 01:30:49,720 La efektiva AJAX alvoko estas en la Get JSON. 2019 01:30:49,720 --> 01:30:50,587 Tio estas la alvoko. 2020 01:30:50,587 --> 01:30:52,920 Kaj tiam, dot farita similas ĝi kontrolas se estas sukcesa. 2021 01:30:52,920 --> 01:30:55,620 Se ĝi estas sukcesa, vi volas fari iun kun la datumoj. 2022 01:30:55,620 --> 01:30:59,290 Vi reiri el tiu JSON peto datumoj. 2023 01:30:59,290 --> 01:31:00,600 Tio estas kion vi ricevas reen. 2024 01:31:00,600 --> 01:31:04,470 Do se vi memoras el via p-aro, multan vi estis kiel datumoj krampo i 2025 01:31:04,470 --> 01:31:06,302 aŭ kio ajn, dot ligilo aŭ titolo. 2026 01:31:06,302 --> 01:31:08,260 Kion ajn venas reen de tiu JSON, kio ajn 2027 01:31:08,260 --> 01:31:11,020 la kampoj estas en tiu JSON objekto, ke estas kion vi fariĝas reen. 2028 01:31:11,020 --> 01:31:12,394 Datumoj estas kion vi fariĝas reen. 2029 01:31:12,394 --> 01:31:15,510 Teksto statuson, nur iu kiu permesas koni kio okazis. 2030 01:31:15,510 --> 01:31:20,570 Kaj tiam, la jqXHR, tio estas nur la jQuery XML HTTP peto. 2031 01:31:20,570 --> 01:31:21,990 Tio estas nur kiel objekton. 2032 01:31:21,990 --> 01:31:23,932 Kaj poste malsukcesos, ĝuste kiel Gabe diris. 2033 01:31:23,932 --> 01:31:27,140 Gabe: En nia eta ekzemplo de abc123 ĝuste por kontroli se tio en la datumbazo 2034 01:31:27,140 --> 01:31:32,260 aŭ ne, la datumoj estus iu vin farus, se datumoj punkto uzantonomo ekzistas, 2035 01:31:32,260 --> 01:31:37,720 kiu estas kiu via PHP generita por vi, se datumoj punkto uzantonomo ekzistas, tiam 2036 01:31:37,720 --> 01:31:40,880 Mi iras al alarmi, uzanto nomo jam ekzistas. 2037 01:31:40,880 --> 01:31:44,300 Alie, mi simple lasos la uzanto procedi plenigante la Formularon. 2038 01:31:44,300 --> 01:31:47,860 2039 01:31:47,860 --> 01:31:50,820 OK, sekureco, malvarmeta. 2040 01:31:50,820 --> 01:31:52,060 >> DAVIN: Want min? 2041 01:31:52,060 --> 01:31:54,500 >> Gabe: Mi ŝatas tiun ĉi. 2042 01:31:54,500 --> 01:31:57,680 Do iu kiu similas familiara. 2043 01:31:57,680 --> 01:31:59,750 Ni preskaŭ farita. 2044 01:31:59,750 --> 01:32:02,670 Do ĉi tio estas nur la ekzemplo vi uloj vidis en klaso. 2045 01:32:02,670 --> 01:32:04,860 Vi uzis argv1 tie. 2046 01:32:04,860 --> 01:32:06,460 Tio estas kiel komandlinio argumento. 2047 01:32:06,460 --> 01:32:09,270 Kaj ni MEM kopiado ke en buffer de grandeco 12. 2048 01:32:09,270 --> 01:32:12,560 Kio estas la problemo ĉi tie? 2049 01:32:12,560 --> 01:32:13,660 Buffer overflow! 2050 01:32:13,660 --> 01:32:15,400 Ĉar ni havas buffer de grandeco 12. 2051 01:32:15,400 --> 01:32:18,400 argv1 havu grandecon de du miliardoj. 2052 01:32:18,400 --> 01:32:19,960 Ni ne faras neniun limon kontrolanta. 2053 01:32:19,960 --> 01:32:24,970 Do ni povus kopii multajn memoro. 2054 01:32:24,970 --> 01:32:28,630 Kaj ni estos aparte malbona pri tio. 2055 01:32:28,630 --> 01:32:32,600 Kio povus ni fari tio tre tre signifas en ĉi tiu kazo? 2056 01:32:32,600 --> 01:32:33,278 Jes? 2057 01:32:33,278 --> 01:32:36,528 Publiko: Parto de la du miliardoj aferoj enhavas plenumeblajn kodo kiu revenas 2058 01:32:36,528 --> 01:32:38,127 [Inaudible]. 2059 01:32:38,127 --> 01:32:38,710 Gabe: Ekzakte. 2060 01:32:38,710 --> 01:32:41,110 Do tio estas la speco de afero ke homo uzas 2061 01:32:41,110 --> 01:32:43,344 al Jailbreak iPhone, ekzemple. 2062 01:32:43,344 --> 01:32:44,260 Por ke speco de aĵo. 2063 01:32:44,260 --> 01:32:48,610 Ĉar vi povas nur fari la aparaton ekzekuti ajna kodo kiu vin ŝatas. 2064 01:32:48,610 --> 01:32:50,247 La solvon, do la riparas estas facila. 2065 01:32:50,247 --> 01:32:51,330 Nur kontroli la limojn. 2066 01:32:51,330 --> 01:32:53,455 Vi kontrolu por nulaj ĉar ni ĉiam kontroli por nula 2067 01:32:53,455 --> 01:32:54,940 kiam ni kontraktanta kun kordoj. 2068 01:32:54,940 --> 01:32:57,840 Kaj tiam, vi prenas la kordo longo antaŭe. 2069 01:32:57,840 --> 01:33:00,150 Kaj se la kordo longeco estas valida kordo 2070 01:33:00,150 --> 01:33:03,700 longo, kiu estas ene 0 kaj 12, tiam ni estas bonaj. 2071 01:33:03,700 --> 01:33:07,144 >> DAVIN: Se ci ne markas por nula, realaj rapidaj, kio okazos? 2072 01:33:07,144 --> 01:33:07,810 Ĝi devos seg kulpo. 2073 01:33:07,810 --> 01:33:10,850 Por kio ĝi seg kulpo? 2074 01:33:10,850 --> 01:33:12,510 Ĉar vi vokas strlen en nula. 2075 01:33:12,510 --> 01:33:13,010 Gabe: Yeah. 2076 01:33:13,010 --> 01:33:16,490 2077 01:33:16,490 --> 01:33:19,630 Vera aŭ malvera, uzante unu Pasvorto estas bona ideo. 2078 01:33:19,630 --> 01:33:20,430 >> Publiko: Falsa. 2079 01:33:20,430 --> 01:33:21,150 >> Gabe: Falsa. 2080 01:33:21,150 --> 01:33:23,870 Uzu multajn pasvortojn, kaj grandaj, longaj. 2081 01:33:23,870 --> 01:33:26,050 Pendseruro ikonoj certigi sekurecon. 2082 01:33:26,050 --> 01:33:27,080 >> Publiko: Falsa. 2083 01:33:27,080 --> 01:33:27,749 >> Gabe: Falsa. 2084 01:33:27,749 --> 01:33:28,790 Ĝi ne signifas ion ajn. 2085 01:33:28,790 --> 01:33:30,480 Estas nur ikonon. 2086 01:33:30,480 --> 01:33:32,824 SSL protektas kontraŭ viron en la mezo de atako. 2087 01:33:32,824 --> 01:33:33,490 Publiko: Falsa. 2088 01:33:33,490 --> 01:33:34,110 Gabe: Falsa. 2089 01:33:34,110 --> 01:33:35,355 OK, do ĉiuj tiuj estas falsaj. 2090 01:33:35,355 --> 01:33:38,324 2091 01:33:38,324 --> 01:33:39,490 Nice. 2092 01:33:39,490 --> 01:33:40,220 [Inaudible] 2093 01:33:40,220 --> 01:33:42,500 Volas paroli pri tio? 2094 01:33:42,500 --> 01:33:43,259 Via vico. 2095 01:33:43,259 --> 01:33:45,050 DAVIN: Tipoj de atakoj, viron en la mezo. 2096 01:33:45,050 --> 01:33:47,134 Kio estas homo en la mezo atako? 2097 01:33:47,134 --> 01:33:48,050 Publiko: [inaudible]. 2098 01:33:48,050 --> 01:33:51,437 2099 01:33:51,437 --> 01:33:54,020 DAVIN: Se vi sendas HTTP peto, ili povus fari tion, ĉu ne? 2100 01:33:54,020 --> 01:33:57,890 Sed se vi sendas HTTPS, ili probable ne povos fari tion. 2101 01:33:57,890 --> 01:33:59,952 Estas multaj punktoj kune vian rilaton. 2102 01:33:59,952 --> 01:34:00,660 Vi havas routers. 2103 01:34:00,660 --> 01:34:01,746 Vi havas DNS-serviloj. 2104 01:34:01,746 --> 01:34:04,120 Se iu povas fizike vidi kion vi sendas, 2105 01:34:04,120 --> 01:34:06,140 tial iu povas reale preni inter vi, 2106 01:34:06,140 --> 01:34:08,840 la kliento, kaj la servilo, kaj estas povis vidi kion vi sendas, 2107 01:34:08,840 --> 01:34:10,298 ĉi tio estas viro en la mezo atako. 2108 01:34:10,298 --> 01:34:14,287 Do por vidi kion vi provas preni de la servilo, aŭ povas see-- malbona, 2109 01:34:14,287 --> 01:34:16,620 vi eble povos vidi kuketojn aŭ iel simile. 2110 01:34:16,620 --> 01:34:19,290 >> Do ekzemple, se vi ne uzante SSL, li 2111 01:34:19,290 --> 01:34:21,900 eble povus vidi via kunsido ID kuketojn. 2112 01:34:21,900 --> 01:34:25,460 Kaj tio nomiĝas kunsido kidnapo cxar li vidas vian ID kuketojn, 2113 01:34:25,460 --> 01:34:28,317 kaj tiam li estas kapabla de iri al tiu retejo kaj ŝajnigi esti vi. 2114 01:34:28,317 --> 01:34:31,150 Ĉar ĝuste kiel en PHP, memoru kiam ni ensalutinta, kion ni faru? 2115 01:34:31,150 --> 01:34:33,340 Ni starigu kunsido ID egala al ID. 2116 01:34:33,340 --> 01:34:34,810 Do kiu identigas vin. 2117 01:34:34,810 --> 01:34:38,300 Tial vi povas vidi viajn biletujo kaj ne ĉiuj aliaj la biletujo. 2118 01:34:38,300 --> 01:34:42,320 >> Nu, se mi estas suficxe bonstata kuketo, tiam mi povas ensaluti en tiu paĝo. 2119 01:34:42,320 --> 01:34:45,380 Kaj tiam, mi povas simple vidi vian stuff kaj komenci aĉeti kaj vendi ajxoj. 2120 01:34:45,380 --> 01:34:46,800 Do tio estas kunsido kidnapo. 2121 01:34:46,800 --> 01:34:50,810 Sed vi ne devus esti kapabla to-- tiel vi povas uzi la viro en la mezo de atako 2122 01:34:50,810 --> 01:34:52,290 eĉ se ili estas uzanta SSL. 2123 01:34:52,290 --> 01:34:53,520 Sed vi ne devus esti kapabla. 2124 01:34:53,520 --> 01:34:56,580 Se ili uzas SSL, vi ne povas kunsido forrabi. 2125 01:34:56,580 --> 01:34:58,927 Kial? 2126 01:34:58,927 --> 01:35:01,135 Ĉar ĝi estas ĉiuj ĉifrita, dekstra? se ĝi estas ĉifrita, 2127 01:35:01,135 --> 01:35:03,509 kaj mi ankoraŭ estas homo en la mezo, mi ankoraŭ akiri vian datumon. 2128 01:35:03,509 --> 01:35:04,279 Tio estas bone. 2129 01:35:04,279 --> 01:35:05,070 Sed gxi ĉifrita. 2130 01:35:05,070 --> 01:35:07,750 Do mi ne povas vere uzi ĝin. 2131 01:35:07,750 --> 01:35:09,840 Do tio estas du. 2132 01:35:09,840 --> 01:35:11,544 >> Reala rapida, kruco ejo peto falsado. 2133 01:35:11,544 --> 01:35:13,960 Tio estas nur se ligilo kaj ke ligilo faras ion 2134 01:35:13,960 --> 01:35:14,890 ke vi ne kredas ke devus fari. 2135 01:35:14,890 --> 01:35:18,150 Do ekzemple, se la ligilo estis iri aĉeti stokoj aŭ vendi karcero; 2136 01:35:18,150 --> 01:35:19,360 kaj vi ne scias. 2137 01:35:19,360 --> 01:35:22,040 Vi alklakis la ligilon, sendis peton, aĉetis 2138 01:35:22,040 --> 01:35:24,240 aŭ vendis iun kiu vi ne intencis fari. 2139 01:35:24,240 --> 01:35:25,120 Tio estas tio. 2140 01:35:25,120 --> 01:35:30,720 >> Kruco ejo scripting, do ĉi tie, vi pasante en tra variablo q, 2141 01:35:30,720 --> 01:35:33,510 anstataŭ pasante en ia de valoro, eble q similas al nomo. 2142 01:35:33,510 --> 01:35:36,560 Do anstataŭ pasante q egaluloj Davin aŭ iel simile, 2143 01:35:36,560 --> 01:35:38,740 se vi ne uzas HTML speciala signojn, se vi 2144 01:35:38,740 --> 01:35:43,100 ne eskapas ĉi certigi ĝi estas OK, tiam mi povis eniri anstataŭe 2145 01:35:43,100 --> 01:35:46,910 diru tien mi estas diranta print aŭ iel simile, 2146 01:35:46,910 --> 01:35:51,070 tiam mi povis eniri tien ĉi skripton alvokon. 2147 01:35:51,070 --> 01:35:53,140 >> Tial, anstataŭ nur nun ŝanĝiĝema, 2148 01:35:53,140 --> 01:35:54,960 Mi devus tiam ekzekuti ĉi skripton alvokon. 2149 01:35:54,960 --> 01:35:57,065 Do ene ol skripton voki, kion faras ĝi fari? 2150 01:35:57,065 --> 01:36:00,190 Dokumento dot situon, ke tuj ŝanĝi la lokon de la dokumento. 2151 01:36:00,190 --> 01:36:02,290 Do Mi tuj redirect al aliloken. 2152 01:36:02,290 --> 01:36:08,170 Ĝi nomas malbona ulo en tiu ekzemplo, tre bona. 2153 01:36:08,170 --> 01:36:10,536 Ne povis pensi la vorto. 2154 01:36:10,536 --> 01:36:12,410 Kaj tiam, kio estas eĉ malbona estas ke mi iros 2155 01:36:12,410 --> 01:36:16,832 tiam starigu kuketo, kiuj estas iuj variablo mi havas en ĉi tiu retejo. 2156 01:36:16,832 --> 01:36:19,040 Mi tuj metos gxin egalaj la dokumenton dot kuketo. 2157 01:36:19,040 --> 01:36:20,660 Sekve, mi iros ŝteli vian kuketo. 2158 01:36:20,660 --> 01:36:22,951 Kaj mi tuj redirect iuj informoj al retejo 2159 01:36:22,951 --> 01:36:25,120 ke vi ne devu aliri. 2160 01:36:25,120 --> 01:36:29,250 Kaj ĉi ĉiuj okazas ĉar vi estas ne eskapi kion vi vidis. 2161 01:36:29,250 --> 01:36:29,910 Yeah? 2162 01:36:29,910 --> 01:36:32,160 >> Publiko: Do ​​apenaŭ al fari ke klara, estas 2163 01:36:32,160 --> 01:36:37,550 vulnerable.com ke estas vundeblaj al ĉi. 2164 01:36:37,550 --> 01:36:39,300 Tiel ke ligilo povas aperi sur ajna donita paĝo. 2165 01:36:39,300 --> 01:36:42,200 Iu klakas sur ĝi, iras al vulnerable.com. 2166 01:36:42,200 --> 01:36:43,700 Vi havas kuketo al vulnerable.com. 2167 01:36:43,700 --> 01:36:46,670 Diru Facebook vundebla, tiel facebook.com. 2168 01:36:46,670 --> 01:36:48,310 Vi havas vian Facebook kuketo. 2169 01:36:48,310 --> 01:36:50,925 Kion ĉi tiu farante, vi estas tuj facebook.com, 2170 01:36:50,925 --> 01:36:53,990 ĝi estas tuj redireccionando vi badguy.com, 2171 01:36:53,990 --> 01:36:57,182 sed inkludante vian kuketon informo. 2172 01:36:57,182 --> 01:36:59,310 Do estas rapida alidirektado, sed via Facebook kuketo 2173 01:36:59,310 --> 01:37:02,572 ĝi inkludas kun tiu alidirektilo, kaj tiel estis kiel ili [inaudible]. 2174 01:37:02,572 --> 01:37:04,280 Gabe: Yeah, estas iuj tre meznombro aferoj 2175 01:37:04,280 --> 01:37:06,070 ke homoj povas fari, se tie estas tio. 2176 01:37:06,070 --> 01:37:09,190 Ekzemple, se Facebook permesita ĉiuj ŝanĝi vian salutnomon, 2177 01:37:09,190 --> 01:37:11,680 kaj ili ne faris ajnan prudento ĉekoj, tiel vi 2178 01:37:11,680 --> 01:37:16,810 povus insertar Javascript afero ke ŝanĝas vian bildon al hamstro. 2179 01:37:16,810 --> 01:37:22,590 Kaj kiu inserta la saman Ĝavoskripto en ĉiuj kiu vidas vian paĝon. 2180 01:37:22,590 --> 01:37:26,400 Do ĉiuj kiuj vidas vian paĝon havas la saman aferon en la salutnomon. 2181 01:37:26,400 --> 01:37:30,104 Kaj ĉar ĝi estas viruso, ĝi propagas eksponente. 2182 01:37:30,104 --> 01:37:32,270 DAVIN: Ni transsaltu la lasta unu, kaj tiam ni faris. 2183 01:37:32,270 --> 01:37:34,120 Do ĉi tiu estas nur alia ekzemplo. 2184 01:37:34,120 --> 01:37:36,120 Tial tiele ili ne estas eskapi siajn SQL tablo. 2185 01:37:36,120 --> 01:37:37,090 Do vi povas lasi ĝin. 2186 01:37:37,090 --> 01:37:38,805 Do vi volas eskapi tion. 2187 01:37:38,805 --> 01:37:44,010 Tio estis la antaŭa ekzemplo kun la kruco ejo scripting. 2188 01:37:44,010 --> 01:37:45,430 Pardonu ni kuris iom malfrue. 2189 01:37:45,430 --> 01:37:46,870 Morgaŭ, pardonon! 2190 01:37:46,870 --> 01:37:48,560 Morgaŭ, ni havos oficejon horoj. 2191 01:37:48,560 --> 01:37:50,870 Do oficejo horoj en Cabbot 8:00 al 11:00. 2192 01:37:50,870 --> 01:37:55,240 La oficejo horoj estas strikte por kvizo demandoj. 2193 01:37:55,240 --> 01:37:56,587