1 00:00:00,000 --> 00:00:08,070 2 00:00:08,070 --> 00:00:10,430 >> R.J. Aquino: Ni simple komencu. 3 00:00:10,430 --> 00:00:12,310 Do tiu estas Kvizo 1. 4 00:00:12,310 --> 00:00:14,890 Jen estas kelkaj altnivelaj informo. 5 00:00:14,890 --> 00:00:19,915 La Pri paĝo por la kvizo estas en ĉi tiu URL ne plu CS50.net, kvankam tio 6 00:00:19,915 --> 00:00:21,080 Mi ankoraŭ laboras. 7 00:00:21,080 --> 00:00:26,920 Estas CS50.harvard.edu/quizzes/2013/1. 8 00:00:26,920 --> 00:00:31,070 Ĝi estas la granda Pri paĝo, dirante al vi kie kaj kiam, nome apud merkredo 9 00:00:31,070 --> 00:00:32,100 en faskon da ĉambroj. 10 00:00:32,100 --> 00:00:36,120 Kaj por la proksimaj merkredo, mi signifi du tagoj. 11 00:00:36,120 --> 00:00:37,890 Ĉiuj ĉi informoj estas tie. 12 00:00:37,890 --> 00:00:39,110 Sed ĝi estas tuteca. 13 00:00:39,110 --> 00:00:43,790 >> Do ĉio ekde la unua duono de la jaro estas potenciale en la kvizo, 14 00:00:43,790 --> 00:00:50,780 ĉar vi ne povas vere plenumi progresinta aferojn en C sen se kondiĉoj kaj 15 00:00:50,780 --> 00:00:51,920 por maŝojn kaj similaj. 16 00:00:51,920 --> 00:00:55,580 Sed estos emfazo je la materialo kovritaj ekde Kvizo 0, 17 00:00:55,580 --> 00:00:59,570 komencante per structs kaj Arkivo Mi / O. Ĝi estas tipe pli 18 00:00:59,570 --> 00:01:01,620 defia ol Kvizo 0. 19 00:01:01,620 --> 00:01:03,870 La averaĝa poentaro estas tipe pli malalte. 20 00:01:03,870 --> 00:01:05,980 Studu malmola. 21 00:01:05,980 --> 00:01:09,340 >> Dum vi studas, nepre uzu CS50/discuss sendi viajn demandoj 22 00:01:09,340 --> 00:01:10,830 kaj legi fremdajn demandoj. 23 00:01:10,830 --> 00:01:13,550 Do se vi ne havas ajnajn demandojn, ensalutu kaj legi 24 00:01:13,550 --> 00:01:14,580 via geamikoj 'demandoj. 25 00:01:14,580 --> 00:01:16,560 Ili estas probable bona demandoj. 26 00:01:16,560 --> 00:01:17,730 Kaj prenu la praktiko kvizojn. 27 00:01:17,730 --> 00:01:20,750 Ni estis donante kvizojn por sep aŭ ok jaroj nun. 28 00:01:20,750 --> 00:01:22,180 Ili ĉiuj estas en linio. 29 00:01:22,180 --> 00:01:25,540 Estonteco demandoj estas similaj malnovaj demandoj. 30 00:01:25,540 --> 00:01:26,550 Tiel estas kiel ni faras ilin. 31 00:01:26,550 --> 00:01:27,740 >> La kvizo ne ekzistanta. 32 00:01:27,740 --> 00:01:28,670 Neniu el ni vidis gxin. 33 00:01:28,670 --> 00:01:32,496 Sed ĝi similos antaŭa kvizojn. 34 00:01:32,496 --> 00:01:36,500 Por ĉi tiu recenzo sesio, ĉi tio ne estas ĝisfunda listo de temoj. 35 00:01:36,500 --> 00:01:40,740 Vi povas ne nur ĉeesti ĉi kaj tiam estu perfekte pretas por la kvizo. 36 00:01:40,740 --> 00:01:43,330 Alie, ĝi ne estus ke multe de kvizon. 37 00:01:43,330 --> 00:01:46,270 Kaj tio estas ankaŭ ne nepre ĉio kion vi bezonas scii pri neniu 38 00:01:46,270 --> 00:01:46,970 donita temo. 39 00:01:46,970 --> 00:01:50,520 Ĝi signifis elmontri vin al la aferoj ni kovris, rememorigi al vi, kion ni 40 00:01:50,520 --> 00:01:53,070 kovrita, kaj la maniero kiuj ni kovris ĝin. 41 00:01:53,070 --> 00:01:57,030 Sed vi devos iri pli for kaj profunda kiam vi studas por rekontroli 42 00:01:57,030 --> 00:02:00,230 ke vi ĉion scias pri ajna donita temon kaj ke vi jam plenigis 43 00:02:00,230 --> 00:02:03,320 ĉiuj anguloj, kovrita per prelego. 44 00:02:03,320 --> 00:02:07,980 >> La kvizo notoj diri al vi iri al la skribisto notoj, gardoparto prelego filmetoj. 45 00:02:07,980 --> 00:02:10,155 Tio estas bona vojo por certigi vi havas kovris cxiujn viajn bazojn. 46 00:02:10,155 --> 00:02:12,670 47 00:02:12,670 --> 00:02:17,340 Do ekuzi, kiam mi faris ĉi tiujn diapozitivoj, mi klopodis meti kie mi trovis 48 00:02:17,340 --> 00:02:18,350 informoj. 49 00:02:18,350 --> 00:02:22,890 Do por Dosiera / Aŭ, ekzemple, Semajno 7, Lundo la lekcio, kaj la afiŝis 50 00:02:22,890 --> 00:02:27,960 Sekcio 6 kaj Problemo Ara ĉiuj havas informon pri dosiera mi / O. Mi jam faris 51 00:02:27,960 --> 00:02:28,840 ĉi por ĉiu temo. 52 00:02:28,840 --> 00:02:33,010 Do tiuj titolo diapozitivoj may esti utila al vi. 53 00:02:33,010 --> 00:02:38,950 >> Do ĉi tie ni havas Dosieraj mi / O. Memoru, en Problemo Ŝanĝu 5, ni uzis fopen, fclose, 54 00:02:38,950 --> 00:02:41,210 fwrite, fread kaj fseek. 55 00:02:41,210 --> 00:02:48,090 Esti rekuperita 30ish JPEG-oj kaj esti malpligrandigeblaj kaj paneas kun 56 00:02:48,090 --> 00:02:50,320 bitmaps, vi devus esti bela familiara per tiuj funkcioj 57 00:02:50,320 --> 00:02:51,830 kaj kiel ili funkcias. 58 00:02:51,830 --> 00:02:54,420 Se vi estas jam konataj, definitive revizii ilin. 59 00:02:54,420 --> 00:02:56,860 Kaj certigi vin kompreni kion la malsamaj argumentoj estas, 60 00:02:56,860 --> 00:02:58,260 kiam ili estas uzataj. 61 00:02:58,260 --> 00:03:03,620 >> Sed la komuna dosiero-rilataj cimojn vi rajtas demandi pri - 62 00:03:03,620 --> 00:03:07,270 bone, se vi jam forgesis kontroli ĉu fopen efektive laboris antaŭ vi iru al 63 00:03:07,270 --> 00:03:08,350 modifi dosiero. 64 00:03:08,350 --> 00:03:09,760 Tio povus esti malbona. 65 00:03:09,760 --> 00:03:13,560 Se vi forgesis fclose dosieron ke vi jam fopened, tio estas simila al 66 00:03:13,560 --> 00:03:14,400 memoro liko. 67 00:03:14,400 --> 00:03:15,980 Tio estas sufiĉe malbona. 68 00:03:15,980 --> 00:03:18,670 Kaj forgesante por kontroli se vi havas atingis la finon de la dosiero al vi 69 00:03:18,670 --> 00:03:19,790 komenci skribi al ĝi. 70 00:03:19,790 --> 00:03:22,320 >> Do se vi diras, bona, mi estas je la finon de la dosiero. 71 00:03:22,320 --> 00:03:23,750 Donu al mi ankoraŭ 5 bajtoj. 72 00:03:23,750 --> 00:03:27,370 Nu, tio verŝajne ne tuj labori ekster la vojo vi atendas. 73 00:03:27,370 --> 00:03:30,930 Tio estas vere por Dosieraj I / O, ĉar ni faris tiom multe de ĝi 74 00:03:30,930 --> 00:03:32,300 kun la problemo metita. 75 00:03:32,300 --> 00:03:36,000 Do se vi komprenis, kion estis okazi en Problemo Ara 5, memoru la bitmats 76 00:03:36,000 --> 00:03:40,090 kaj la JPEG-oj, tiam vi estas probable ĉiuj metita por Dosieraj mi / O. Se tio estas iom 77 00:03:40,090 --> 00:03:44,770 fuzzy, definitive revizii tiun problemon aro kaj de la asociita materialo. 78 00:03:44,770 --> 00:03:51,110 >> Structs estis la temo, kiuj estis sur la linio inter Kvizo 0 kaj Kvizo 1. 79 00:03:51,110 --> 00:03:53,090 Ne tute fari la kortego por Kvizo 0. 80 00:03:53,090 --> 00:03:57,040 Do ili povos definitive esti sur Kvizo 1, Semajno 7, lundo. 81 00:03:57,040 --> 00:03:58,150 Kio estas struct? 82 00:03:58,150 --> 00:04:00,250 Ĉi tie ni montras struct. 83 00:04:00,250 --> 00:04:03,140 Ĝi estas kvazaŭ nova tipo. 84 00:04:03,140 --> 00:04:07,940 Estas kiel ujo por multnombraj kampoj. 85 00:04:07,940 --> 00:04:12,970 >> En ĉi tiu kazo, ni jam deklarita struct studento kiu havas du kampoj - 86 00:04:12,970 --> 00:04:17,750 ĉeno kiu ni vokis nomon kaj an int ke ni vokas aĝo. 87 00:04:17,750 --> 00:04:21,450 Do kiam mi pasas ĉirkaŭ lernantoj aŭ mi redakti lernantoj, mi povos 88 00:04:21,450 --> 00:04:24,430 konsenti liajn nomon kaj lian aĝon. 89 00:04:24,430 --> 00:04:26,670 Ni rigardu kelkajn kodo por tio. 90 00:04:26,670 --> 00:04:29,090 Ĉi tie ni vidas, ke mi deklaris studento s, samkiel 91 00:04:29,090 --> 00:04:30,300 Mi deklaras iu variablo - 92 00:04:30,300 --> 00:04:32,430 int x, int y, ktp. 93 00:04:32,430 --> 00:04:34,180 >> Jen studento s. 94 00:04:34,180 --> 00:04:37,370 Ĝi komenciĝas per nenio en liaj kampoj. 95 00:04:37,370 --> 00:04:38,240 Do ni starigu ilin. 96 00:04:38,240 --> 00:04:40,681 Vi starigis kampoj de struct kun skalara. 97 00:04:40,681 --> 00:04:43,780 Do mi diris ĉi tie ke s.name = RJ. 98 00:04:43,780 --> 00:04:46,470 Kaj s.age = 21. 99 00:04:46,470 --> 00:04:48,500 Vi povas ankaŭ ĝisdatigi kampoj sammaniere oni kredus ĝisdatigi 100 00:04:48,500 --> 00:04:49,550 la valoro de variablo. 101 00:04:49,550 --> 00:04:53,270 Do mi volas ŝanĝi mian nomon el RJ kun neniu periodoj por R.J. literumis la 102 00:04:53,270 --> 00:04:54,540 korekta vojo. 103 00:04:54,540 --> 00:04:58,890 Estus s.name = RJ, la sama kiel ni diris, ke origine. 104 00:04:58,890 --> 00:05:00,030 Kaj tiam vi povas aliri ilin. 105 00:05:00,030 --> 00:05:00,930 >> Do ni starigu ilin. 106 00:05:00,930 --> 00:05:01,840 Ni ĝisdatigis ilin. 107 00:05:01,840 --> 00:05:03,890 Vi povas ankaŭ aliri ilin en la sama maniero. 108 00:05:03,890 --> 00:05:09,330 Do jen, mi presado ekstere R.J. Estas 21 jara. 109 00:05:09,330 --> 00:05:14,700 Kaj mi aliru tiujn valorojn kun s.name kaj s.age. 110 00:05:14,700 --> 00:05:17,040 Do jen alirante structs kun la skalara skribmaniero. 111 00:05:17,040 --> 00:05:17,850 Yep, pridubas? 112 00:05:17,850 --> 00:05:21,176 >> Spektantaro: Ĉu ekzistas kialo pri la antaŭa slide ke vi ne metis 113 00:05:21,176 --> 00:05:24,848 studento sur supro linio, kiel typedef struct lernanto kaj poste 114 00:05:24,848 --> 00:05:25,840 lernantino ĉe la fino? 115 00:05:25,840 --> 00:05:29,040 >> R.J. Aquino: Do ​​la demando estis, je ĉi glito, ni kutime vidita 116 00:05:29,040 --> 00:05:32,400 typedef struct nodo kaj tiam la kampoj de la struct kaj 117 00:05:32,400 --> 00:05:34,250 tiam la vorto nodo. 118 00:05:34,250 --> 00:05:37,790 Kaj kiel veni tien Mi ne diris, typedef struct studento kaj tiam la 119 00:05:37,790 --> 00:05:39,820 kampoj de la struct kaj tiam studento? 120 00:05:39,820 --> 00:05:44,310 La kialo estas ke mi ne bezonas aliri gxin interne de la struct. 121 00:05:44,310 --> 00:05:46,270 Do estas OK lasi ĝin sen nomo. 122 00:05:46,270 --> 00:05:49,210 Mi povas simple lasi ĝin kiel anonima struct. 123 00:05:49,210 --> 00:05:53,130 >> La kialo, ni faros, pro ligita lertaj kaj tion estas ĉar interne vi bezonas 124 00:05:53,130 --> 00:05:55,360 por referenci al struct nodoj stelo. 125 00:05:55,360 --> 00:05:58,220 Do la struct devas havi nomon, tial vi povas aliri gxin poste. 126 00:05:58,220 --> 00:05:59,540 Ĝi estas malgranda detalo. 127 00:05:59,540 --> 00:06:04,750 Sed vi tipe vidi typedef struct krispa krampoj, se vi ne bezonas 128 00:06:04,750 --> 00:06:08,720 la nomo kaj typedef struct iu nomo sekvata de krispa krampoj, se vi volas, 129 00:06:08,720 --> 00:06:09,520 bezonas la nomon. 130 00:06:09,520 --> 00:06:12,070 Do, tio estas bona demando. 131 00:06:12,070 --> 00:06:17,000 >> Kaj je tiu punkto, ni emas modifi structs migru ĉirkaŭ structs per 132 00:06:17,000 --> 00:06:18,680 referenci, ne per valoro. 133 00:06:18,680 --> 00:06:21,940 Do ni simple preterpasas ĉirkaŭe montriloj al structs anstataŭ pasante tra la 134 00:06:21,940 --> 00:06:23,150 structs sin. 135 00:06:23,150 --> 00:06:28,050 Do vi estas tre ofte tuj estos uzante, en ĉi tiu kazo, lernanto * aŭ 136 00:06:28,050 --> 00:06:34,150 struct nodo * aŭ nodo * anstataŭ el studentoj aŭ nodoj. 137 00:06:34,150 --> 00:06:39,350 Do jen, mi jam diris, OK, la variablo ptr tuj estos la adreso de s. 138 00:06:39,350 --> 00:06:45,570 Ĝi tuj estos la montrilo al la studento R.J. 139 00:06:45,570 --> 00:06:48,965 >> Do ni povas ricevi en tiuj kampoj la samaj kiel ni atingos ion. 140 00:06:48,965 --> 00:06:51,460 Unue, ID referenci la montrilo por ricevi la struct. 141 00:06:51,460 --> 00:06:55,530 Tio estas * ptr kaj poste skalara kaj tiam aĝon. 142 00:06:55,530 --> 00:06:58,790 Do por aliri la kampon, kaj mi ĝisdatigita ĝin nun al 22, ĉar, ni 143 00:06:58,790 --> 00:07:00,860 diru, ĝi estis mia naskiĝtago. 144 00:07:00,860 --> 00:07:03,990 Ekzistas ŝparvojo sintakso uzante la sago ĉi tie. 145 00:07:03,990 --> 00:07:07,060 Do ptr sago aĝo estas apenaŭ la sama kiel * ptr.age. 146 00:07:07,060 --> 00:07:10,150 147 00:07:10,150 --> 00:07:11,550 Nun, ke io, kion vi devos por enmemorigi kaj memori. 148 00:07:11,550 --> 00:07:15,010 >> Vi uzis ĝin multe en pset6, la Speller pset. 149 00:07:15,010 --> 00:07:18,350 Sed tio estas vere, kio okazas sur sub la kapuĉo. 150 00:07:18,350 --> 00:07:20,500 Ĝi estas dereferencing la montrilo kaj poste aliri ĝin. 151 00:07:20,500 --> 00:07:21,432 Demandon? 152 00:07:21,432 --> 00:07:22,682 >> Spektantaro: [inaudibles]. 153 00:07:22,682 --> 00:07:25,860 154 00:07:25,860 --> 00:07:28,060 >> R.J. Aquino: Do ​​kial ni uzas pointers kiel structs anstataŭ la 155 00:07:28,060 --> 00:07:29,500 structs mem? 156 00:07:29,500 --> 00:07:33,740 La kialo estus se vi pasante a struct al funkcio, vi probable 157 00:07:33,740 --> 00:07:36,900 volas pasi ĉirkaŭe nur la 4 aŭ tiom bitokoj kiuj reprezentas la montrilon, kiel 158 00:07:36,900 --> 00:07:40,375 kontraste al la potenciale 30 aŭ 40 bitokoj, kiuj estas la struct. 159 00:07:40,375 --> 00:07:44,410 Do pasas ion al funkcio Estas pli facile kiam la afero 160 00:07:44,410 --> 00:07:48,230 estas pli malgranda en mallonga. 161 00:07:48,230 --> 00:07:49,074 Demandon? 162 00:07:49,074 --> 00:07:53,026 >> Spektantaro: Vi eble menciis ĉi en la komenco, sed estas tie 163 00:07:53,026 --> 00:07:56,000 aliaj diapozitivoj supren sur [inaudibles]? 164 00:07:56,000 --> 00:07:58,960 >> R.J. Aquino: tiuj diapozitivoj estos Sekvu la recenzo kunsido. 165 00:07:58,960 --> 00:08:00,210 Ni devos sendi ilin en la retejo. 166 00:08:00,210 --> 00:08:02,450 167 00:08:02,450 --> 00:08:06,870 Do movante en kaj movante en iomete pli rapida, ni iras por paroli pri datumoj 168 00:08:06,870 --> 00:08:07,350 strukturoj. 169 00:08:07,350 --> 00:08:08,040 Ekzistas multe. 170 00:08:08,040 --> 00:08:10,080 Ni kovris faskon da ili. 171 00:08:10,080 --> 00:08:12,500 Jen kion vi devus kompreni pri datumstrukturo. 172 00:08:12,500 --> 00:08:15,590 >> Vi devas vere kompreni je alta ras, kion ĉiu strukturo estas. 173 00:08:15,590 --> 00:08:21,190 Ĉu vi povas klarigi en la angla al via amiko kiu ne prenis CS50 kiom 174 00:08:21,190 --> 00:08:25,580 ni organizas nian datumoj kaj kial ni volas uzos ion en tiu maniero? 175 00:08:25,580 --> 00:08:26,990 Tio estas afero tiu. 176 00:08:26,990 --> 00:08:29,650 Aĵo du, kompreni la efektivigo. 177 00:08:29,650 --> 00:08:34,270 Do komprenu kiel uzi tiujn aferojn en C. Kaj ni iros trans ĉi. 178 00:08:34,270 --> 00:08:39,030 >> Kaj tiam tion tri estus scii la kuri tempoj kaj la limigoj de la 179 00:08:39,030 --> 00:08:40,470 diversaj strukturoj vi uzas. 180 00:08:40,470 --> 00:08:44,059 Do komprenas kial vi uzus hash tablon anstataŭ tabelo. 181 00:08:44,059 --> 00:08:49,570 Kompreni kiel rapida, mezume, aliro kradon tablo estas. 182 00:08:49,570 --> 00:08:54,010 Komprenas kion operacioj estas vigle ligillisto sed malrapida sur arrays kaj 183 00:08:54,010 --> 00:08:56,080 inverse. 184 00:08:56,080 --> 00:08:59,780 Do por kompreni tion, vi devos kompreni Big-a skribmaniero nur scias 185 00:08:59,780 --> 00:09:01,310 kiel paroli pri tiuj klason de aĵoj. 186 00:09:01,310 --> 00:09:02,700 Kaj ni reparolos pri tio. 187 00:09:02,700 --> 00:09:06,040 >> Do unua afero, ligita listoj. 188 00:09:06,040 --> 00:09:07,770 Ĉi tie estas altnivela bildo de ligillisto. 189 00:09:07,770 --> 00:09:08,830 Ni montros al tio en la klaso. 190 00:09:08,830 --> 00:09:11,670 Ni kutime havas 10 personoj starante sur la scenejo. 191 00:09:11,670 --> 00:09:16,790 Sed ni havas serion de nodoj kie ĉiu nodo havas iun valoron kaj puntero 192 00:09:16,790 --> 00:09:18,610 al lia proksima valoro. 193 00:09:18,610 --> 00:09:21,730 Do, por ricevi de unu vertico al la sekva, vi nur diru, donu al mi la sekva nodo. 194 00:09:21,730 --> 00:09:22,530 Vi havas tiu nodo. 195 00:09:22,530 --> 00:09:23,770 Donu al mi la sekva nodo. 196 00:09:23,770 --> 00:09:24,400 Vi havas tiu nodo. 197 00:09:24,400 --> 00:09:28,790 Donu al mi la sekva nodo kaj tiel plu ĝis tie ne estas nodo maldekstren. 198 00:09:28,790 --> 00:09:31,850 >> Do daŭrigi paroli pri lin je alta nivelo. 199 00:09:31,850 --> 00:09:34,100 Ĝi estas tre facila por enmeti tion en ligillisto. 200 00:09:34,100 --> 00:09:36,010 Se vi ne zorgas pri la ordo, vi povas simple lasi ĝin 201 00:09:36,010 --> 00:09:36,840 ĝuste en la komenco. 202 00:09:36,840 --> 00:09:38,520 Tio estas konstanta tempo. 203 00:09:38,520 --> 00:09:39,900 Sed estas malfacile trovi valoron. 204 00:09:39,900 --> 00:09:43,060 Se vi provas demandi, estas sep en mia listo? 205 00:09:43,060 --> 00:09:44,740 Vi devas iri tra ĉiu unuopa valoro. 206 00:09:44,740 --> 00:09:45,680 Ĉu ĉi tiu estas sep? 207 00:09:45,680 --> 00:09:46,610 Ĉu ĉi tiu estas sep? 208 00:09:46,610 --> 00:09:47,770 Ĉu ĉi tiu estas sep? 209 00:09:47,770 --> 00:09:48,690 Ĉu ĉi tiu estas sep? 210 00:09:48,690 --> 00:09:49,830 Denove kaj denove. 211 00:09:49,830 --> 00:09:51,520 Kaj tio estas O (n). 212 00:09:51,520 --> 00:09:53,800 Do studinte por la kvizo, kompari ĉi tion kun arrays. 213 00:09:53,800 --> 00:09:57,010 214 00:09:57,010 --> 00:09:58,220 >> Ĉu tio estas OK? 215 00:09:58,220 --> 00:09:59,220 La lumoj dim. 216 00:09:59,220 --> 00:10:01,110 OK. 217 00:10:01,110 --> 00:10:02,400 Kiam estas ligillisto pliboniĝu? 218 00:10:02,400 --> 00:10:04,640 Kiam estas tabelo pli bone? 219 00:10:04,640 --> 00:10:06,670 Do ni rigardu iujn kodo. 220 00:10:06,670 --> 00:10:08,960 Ĉi tie estas potenciala nodo. 221 00:10:08,960 --> 00:10:09,770 Estas struct. 222 00:10:09,770 --> 00:10:12,220 Ĝi havas int n, kiu estos nia valoro. 223 00:10:12,220 --> 00:10:17,780 Kaj ĝi havas struct nodo * proksima, kio Estas nia montrilon al la sekva nodo. 224 00:10:17,780 --> 00:10:23,040 Do jen, ni povas vidi ke ni okazis esti enmetu int en nia nodo. 225 00:10:23,040 --> 00:10:27,850 Sed se tiu estis ligillisto char steloj aŭ ligita listo de flosoj, ni 226 00:10:27,850 --> 00:10:28,820 tute povus ankaŭ fari tion. 227 00:10:28,820 --> 00:10:33,110 >> Memoru en pset6, vi probable havis ligillisto char steloj aŭ ĝuste 228 00:10:33,110 --> 00:10:34,360 static char arrays. 229 00:10:34,360 --> 00:10:37,370 230 00:10:37,370 --> 00:10:39,040 Ni rigardu tien ĉi ĉe operacio. 231 00:10:39,040 --> 00:10:43,570 Do ni volas enmeti novan n en nian ligillisto. 232 00:10:43,570 --> 00:10:48,940 Ni komencu per kapo montrilon, kiu estas puntero al tiu nodo, kiu havas la 233 00:10:48,940 --> 00:10:53,460 valoro de n kaj proksima de puntero ke punktoj por tiu nodo estas valoro de 234 00:10:53,460 --> 00:10:57,760 n kaj proksima de nula, ĉar ĝi estas la lasta nodo. 235 00:10:57,760 --> 00:11:00,440 Do, en la intereso de tempo, mi volas meti ĉiuj la kodon sur la ekrano. 236 00:11:00,440 --> 00:11:03,130 Kaj ni vidos marŝi tra ĝi kelkaj linioj samtempe. 237 00:11:03,130 --> 00:11:05,790 >> Do jen la kodon. 238 00:11:05,790 --> 00:11:07,560 Mi esperas, ĝi estas legebla. 239 00:11:07,560 --> 00:11:11,275 La unua afero, kiun ni faras estas ni malloc nova nodo. 240 00:11:11,275 --> 00:11:15,105 Do ĝi faras montrilo al nova nodo ke ne tute havas nenion starigis 241 00:11:15,105 --> 00:11:16,450 supren en ĝi ankoraŭ. 242 00:11:16,450 --> 00:11:19,580 Ni kontrolu certigi ke la nova vertico estas ne nulaj. 243 00:11:19,580 --> 00:11:22,220 Alie, ni devas rezigni. 244 00:11:22,220 --> 00:11:27,680 Do li kontrolis ke ni nun starigis la valorojn en la nodo. 245 00:11:27,680 --> 00:11:31,520 Do ni metas la nova n en nian n kampo. 246 00:11:31,520 --> 00:11:36,050 Kaj ni starigis la sekvanta montrilon por montri al la originala kapo, tiel ke ni povos 247 00:11:36,050 --> 00:11:38,900 nun enmetis ĉi nodo en nian liston. 248 00:11:38,900 --> 00:11:44,600 >> Fine, ni havas la tutmonda kapo punkto al nia nova nodo, tial ke se ni devis 249 00:11:44,600 --> 00:11:50,300 komenci ĉe kapo, ni estus en ĉi tiu nova unua nodo anstataŭ 250 00:11:50,300 --> 00:11:51,560 la malnova unua nodo. 251 00:11:51,560 --> 00:11:55,320 Kaj kiam cxi tiu funkcio eliroj, la variablo novan nodon jam ne ekzistas, 252 00:11:55,320 --> 00:11:57,130 ĉar estis loka al la funkcio. 253 00:11:57,130 --> 00:11:59,770 Do tiu estas la stato de la mondo. 254 00:11:59,770 --> 00:12:03,570 Nia tutmonda kapon antaŭ nia nova unua nodo, kiu notas al nia 255 00:12:03,570 --> 00:12:06,346 originalaj unua nodo, kiuj punktoj al la nodo post tio. 256 00:12:06,346 --> 00:12:09,790 >> Tio estis inserción. 257 00:12:09,790 --> 00:12:12,150 Mi esperas ke estis relative simpla al sekvi. 258 00:12:12,150 --> 00:12:14,300 Kiam en dubo, desegni bildon. 259 00:12:14,300 --> 00:12:17,820 Do mi trovas ke parolante pri ligita lertaj kaj rigardante 260 00:12:17,820 --> 00:12:19,870 kodo estas tre helpema. 261 00:12:19,870 --> 00:12:23,790 Dum rigardanta bildon de ligita listo permesas al mi pensi, ho, tiel 262 00:12:23,790 --> 00:12:24,970 Mi havas ĉi tiu nodo tie. 263 00:12:24,970 --> 00:12:28,980 Sed se mi ĝisdatigos ke montrilon, finu malkonektita. 264 00:12:28,980 --> 00:12:34,340 Kaj mi forgesis kie la nodo iras. 265 00:12:34,340 --> 00:12:35,390 Kaj la kodo elirojn. 266 00:12:35,390 --> 00:12:37,830 Kaj vi havas plurajn nodoj ke estas malkonektita. 267 00:12:37,830 --> 00:12:39,970 Kaj vi ne finas kun la listo vi deziras. 268 00:12:39,970 --> 00:12:43,320 >> Do se vi tiros la pentraĵo kaj faru ĝin paŝon post paŝo, espereble, vi vidos 269 00:12:43,320 --> 00:12:46,840 la ĝusta ordo de aferoj rilate ĝisdatigi la montriloj certigi 270 00:12:46,840 --> 00:12:48,830 ke la listo kunfluas. 271 00:12:48,830 --> 00:12:51,240 Enmeti estas relative simpla. 272 00:12:51,240 --> 00:12:55,210 Pli komplika estus inserción en ordo listo. 273 00:12:55,210 --> 00:12:59,980 Pli komplika funkcio estas forviŝi kaj trovi, do rigardante tra lerta por 274 00:12:59,980 --> 00:13:03,030 vidi, ĉu io estas tie. 275 00:13:03,030 --> 00:13:07,220 Eble vi faris tion en pset6 kiam vi eniris vian hash tablo kaj vi diris: 276 00:13:07,220 --> 00:13:10,460 Nu, estas la vorto apple en mia ligillisto? 277 00:13:10,460 --> 00:13:11,440 >> Do eble vi jam faris tion. 278 00:13:11,440 --> 00:13:15,530 Sed certe, refreŝigi vian memoron kaj provi reimplement trovaĵo kaj 279 00:13:15,530 --> 00:13:19,150 reimplement forviŝi por ligillisto. 280 00:13:19,150 --> 00:13:22,850 Fun flanko noto, tie ankaux duoble-ligita listoj, kie vi havas 281 00:13:22,850 --> 00:13:27,490 pointers kiuj notas ambaŭ antaŭen kaj malantauxen, tiel ke vi povus iri al la 282 00:13:27,490 --> 00:13:29,270 sekvanta nodo kaj al la antaŭa nodo. 283 00:13:29,270 --> 00:13:33,860 Kaj tie estis demando pri pasintjara kvizo de tiu tipo, parolante 284 00:13:33,860 --> 00:13:36,190 pri duoble-ligita listoj. 285 00:13:36,190 --> 00:13:40,070 >> Nu, tio estas strukturo kiu vi estas relative konanta, ĉar plej 286 00:13:40,070 --> 00:13:42,520 vi verŝajne uzas ilin sur pset6. 287 00:13:42,520 --> 00:13:45,680 Jen unu, kiu estas iomete malpli konata. 288 00:13:45,680 --> 00:13:51,020 Kiel flanka noto, mi pensas ke Kvizo 1 estas unuavice malfacila ol Kvizo 0, ĉar 289 00:13:51,020 --> 00:13:54,600 la vazaro vi faras, vi ne faris tiel. 290 00:13:54,600 --> 00:13:58,100 Meti tiun alian vojon, por Kvizo 0, vi estis skribinta multajn C. Kaj ni 291 00:13:58,100 --> 00:13:58,880 demandis vin pri C. 292 00:13:58,880 --> 00:14:02,310 >> Por Kvizo 1, ni iras, por demandi vin pri PHP kaj Javascript, kion vi 293 00:14:02,310 --> 00:14:03,490 ne skribis tiel de. 294 00:14:03,490 --> 00:14:07,590 Ni iras al vi demandon pri la C-kodo kiu Vi ne skribas tiel de, 295 00:14:07,590 --> 00:14:09,130 tiu progresinta C vazaro. 296 00:14:09,130 --> 00:14:11,520 Do certe, praktiki la vazaro ni raportis en prelego, ke vi 297 00:14:11,520 --> 00:14:15,260 ne nepre faru sur la problemo metita. 298 00:14:15,260 --> 00:14:17,870 >> Parolante pri kio, vi ankoraŭ ne skribita stako sur problemo metita. 299 00:14:17,870 --> 00:14:19,610 Sed estis en prelego. 300 00:14:19,610 --> 00:14:22,530 Jen la alta nivelo bildon de stakoj, ke ni montras ĉiun jaron. 301 00:14:22,530 --> 00:14:26,180 Ĝi estas la stako de pletoj en la Mather manĝejo. 302 00:14:26,180 --> 00:14:30,570 Ĉe alta nivelo, stakoj estas lasta en, unua el datumstrukturo. 303 00:14:30,570 --> 00:14:32,040 Tio signifas ke vi iras meti aĵojn en - 304 00:14:32,040 --> 00:14:36,400 1, 3, 7, 12, 14, negativa 0. 305 00:14:36,400 --> 00:14:39,180 La unu aferon mi ne povis havi diris - negativa 3, 0. 306 00:14:39,180 --> 00:14:40,250 Vi metis cxion cxi tion, in 307 00:14:40,250 --> 00:14:42,940 Kaj la lasta vi metis en la unua kiu tuj eliru. 308 00:14:42,940 --> 00:14:44,170 >> Do vi havas du operacioj - 309 00:14:44,170 --> 00:14:45,260 puŝi kaj pop. 310 00:14:45,260 --> 00:14:49,180 Ĉiuj el la meto en kiuj mi estis gestante ŝatas ĉi estas puŝo. 311 00:14:49,180 --> 00:14:52,020 Kaj poste, kiam mi atingas en ekpreni iun aŭ atingos sur supro ekpreni 312 00:14:52,020 --> 00:14:53,940 io, tio estas popo. 313 00:14:53,940 --> 00:14:55,540 Do ni tuj apliki stakoj. 314 00:14:55,540 --> 00:14:57,870 Kaj ni montris al ili en lekcio uzante arrays. 315 00:14:57,870 --> 00:14:59,550 Sed vi povus fari ilin uzante ligita listoj. 316 00:14:59,550 --> 00:15:01,770 A stako estas koncepta datumoj strukturo, ne kiel 317 00:15:01,770 --> 00:15:03,760 efektivigo-specifa. 318 00:15:03,760 --> 00:15:06,420 >> Do kion devus kiuj aspektas kiel? 319 00:15:06,420 --> 00:15:07,970 Ĝi devus aspekti ia kiel ĉi tio. 320 00:15:07,970 --> 00:15:10,840 Vi ŝatus havi entjero grandeco. 321 00:15:10,840 --> 00:15:16,000 Kaj vi havus tabelo de valoroj kiuj Ni nomas pletoj, ĉar tio 322 00:15:16,000 --> 00:15:18,570 kia la bildo estis por ni - int pletoj - 323 00:15:18,570 --> 00:15:21,740 kaj tiam iuj maksimuma kapacito. 324 00:15:21,740 --> 00:15:27,100 Do kion devus peli rigardon kiel? 325 00:15:27,100 --> 00:15:33,250 Nu, se ni havas stako s, tiam puŝi io sur s, ni akirus 326 00:15:33,250 --> 00:15:34,620 la grandeco de s. 327 00:15:34,620 --> 00:15:42,270 Kaj kiu estus la sekva malfermita loko de nia tabelo. 328 00:15:42,270 --> 00:15:50,510 Do, se ni havas tri aferojn en nia stako, tiam pletoj 3 estus la sekva 329 00:15:50,510 --> 00:15:54,290 malfermita loko, ĉar 0, 1, kaj 2 estas jam plenigis. 330 00:15:54,290 --> 00:16:01,790 >> Do ni petu al s.trays [s.size], la tria loko. 331 00:16:01,790 --> 00:16:06,290 Kaj tiam ni pliigo s.size diri, hey, ni havis tri aferoj antaŭe. 332 00:16:06,290 --> 00:16:07,400 Nun, ni havas kvar. 333 00:16:07,400 --> 00:16:10,180 Do la venontan fojon vi kornobatos, vi estas tuj metis ion en 4. 334 00:16:10,180 --> 00:16:15,560 Aŭ la venontan fojon vi pop, vi tuj rigardi 3 anstataŭ 4 aŭ kio ajn. 335 00:16:15,560 --> 00:16:18,000 Kaj poste ni revenos vera por diru, hey, ni sukcesis. 336 00:16:18,000 --> 00:16:19,160 Ĉi laboris. 337 00:16:19,160 --> 00:16:22,060 Kiel regulo de thumb, se funkcio tio supozis redoni vera aŭ 338 00:16:22,060 --> 00:16:26,370 malvera ĉiam revenas vera, vi rajtas faris ion malbonan. 339 00:16:26,370 --> 00:16:28,350 Do tio funkcias? 340 00:16:28,350 --> 00:16:32,400 >> Nu, tio funkcias bone por 1 kaj 2, kaj 3, kaj 4, kaj kvin. 341 00:16:32,400 --> 00:16:34,640 Sed diru mi atingos mian kapablon. 342 00:16:34,640 --> 00:16:38,750 Mi tiam kolizii problemo, ĉar se grandeco estas la sama kiel kapablo, mi estas 343 00:16:38,750 --> 00:16:43,340 nun provas meti ion enen tabelo, kie mi ne havas spacon. 344 00:16:43,340 --> 00:16:46,980 Do mallonga ĉekon ripari tion. 345 00:16:46,980 --> 00:16:51,630 Se s.size == KAPACITO, revenu falsaj. 346 00:16:51,630 --> 00:16:54,130 Alie, iru kaj faru kion ni faris. 347 00:16:54,130 --> 00:16:55,660 Do, kion alian ni povus demandi pri por piloj? 348 00:16:55,660 --> 00:16:56,460 Kio alie vi studas? 349 00:16:56,460 --> 00:16:57,690 Kio alie vi praktikas? 350 00:16:57,690 --> 00:17:01,030 >> Nu, efektivigo de la popo. 351 00:17:01,030 --> 00:17:02,370 Ni jam faris puŝo. 352 00:17:02,370 --> 00:17:04,280 Mi riparos tion. 353 00:17:04,280 --> 00:17:08,180 Ne-tabelo efektivigo, kie vi uzas ligillisto, eble. 354 00:17:08,180 --> 00:17:09,390 Ne-entjeraj efektivigo. 355 00:17:09,390 --> 00:17:10,940 Ni faris ints tie. 356 00:17:10,940 --> 00:17:11,880 Sed povus esti estinta flosoj. 357 00:17:11,880 --> 00:17:13,010 Mi povus esti kordoj. 358 00:17:13,010 --> 00:17:14,290 Ĝi povus esti char steloj. 359 00:17:14,290 --> 00:17:17,960 Rigardu pasinteco kvizojn por la specoj de demandojn ni demandis pri stakoj. 360 00:17:17,960 --> 00:17:20,000 >> Mi diras, ke ni kovris stakoj ĉirkaŭe la samaj, kiel ni jam kovris ilin en 361 00:17:20,000 --> 00:17:20,540 jaroj pasintaj. 362 00:17:20,540 --> 00:17:24,400 Do la kvizo demandoj devus estus bona indiko. 363 00:17:24,400 --> 00:17:27,010 Movante antaŭen eĉ pli rapide, vostoj. 364 00:17:27,010 --> 00:17:28,200 Ili estas kiel piloj. 365 00:17:28,200 --> 00:17:29,960 Sed ili estas unue en, unua el. 366 00:17:29,960 --> 00:17:33,530 Se vi estas brita, la vorto vosto probable faris multe da senco por vi. 367 00:17:33,530 --> 00:17:36,390 Alikaze, vi povas havi aŭdis de ĝi kiel linio. 368 00:17:36,390 --> 00:17:38,120 Ili funkcias same kiel la linio en la Apple vendejo. 369 00:17:38,120 --> 00:17:40,740 La unua persono al manifestacio je 3:00 en la mateno estas la unua 370 00:17:40,740 --> 00:17:42,880 persono por aĉeti liajn iPad. 371 00:17:42,880 --> 00:17:44,260 >> Do ni havas du operacioj - 372 00:17:44,260 --> 00:17:45,720 enqueue kaj dequeue. 373 00:17:45,720 --> 00:17:47,560 Enqueue metas iun en la linio. 374 00:17:47,560 --> 00:17:50,070 Dequeue tiras la unua persono super la linio. 375 00:17:50,070 --> 00:17:52,640 Denove, ni povas apliki tiu kun tabelo. 376 00:17:52,640 --> 00:17:54,880 Do kio estas la struct ni montris en prelego? 377 00:17:54,880 --> 00:17:57,660 Estis ĉi tiu. 378 00:17:57,660 --> 00:17:59,300 Denove, nombroj. 379 00:17:59,300 --> 00:18:02,020 Denove, grandeco kaj tio ion novan fronton. 380 00:18:02,020 --> 00:18:04,880 Kial ekzistas io nomata antaŭa? 381 00:18:04,880 --> 00:18:07,050 Ĝi estas la indekso de la venonta elemento al dequeue. 382 00:18:07,050 --> 00:18:12,210 Ĝi estas nur interne konservanta trako de La unua ulo por montri, ke jam ni 383 00:18:12,210 --> 00:18:15,005 povas tiri ĝin kiam ni bezonas. 384 00:18:15,005 --> 00:18:19,322 >> Definitive rigardi prelego notoj kaj provi apliki enqueue kaj dequeue 385 00:18:19,322 --> 00:18:21,700 studinte por la kvizo. 386 00:18:21,700 --> 00:18:23,190 Gravaj aferoj por pripensi. 387 00:18:23,190 --> 00:18:27,260 Fluigi ĉirkaŭ se la antaŭa plus la grandeco finu pli granda ol havita. 388 00:18:27,260 --> 00:18:32,670 Denove, se via strukturo estas plena, vi tuj havas problemon. 389 00:18:32,670 --> 00:18:34,780 Hash tabloj vi vidis antaŭe. 390 00:18:34,780 --> 00:18:39,820 La plejparto de vi probable implementado tiuj sur pset6. 391 00:18:39,820 --> 00:18:44,210 Ĝi estas strukturo kiu celas por O (1) konstanta tempo inserción kaj O (1) 392 00:18:44,210 --> 00:18:46,430 konstanta tempo lookup. 393 00:18:46,430 --> 00:18:49,760 >> En CS50, ni implementado tion kiel tabelo de lertaj kunligitaj. 394 00:18:49,760 --> 00:18:53,690 La ŝlosilaj komponantoj al hash tablo Estas la krada funkcio. 395 00:18:53,690 --> 00:18:58,350 Do ĝi konvertas via enigo, ni diru, vortaro vorton, en numeron, 396 00:18:58,350 --> 00:18:59,560 kiu iras al nia indekso. 397 00:18:59,560 --> 00:19:01,410 Kaj ni vidos uzi tiun indekso en nia tabelo. 398 00:19:01,410 --> 00:19:05,374 Do jen plaĉan bildon el study.50.net. 399 00:19:05,374 --> 00:19:08,060 Ni ĵeti ĉiujn vortojn en nia hash funkcio. 400 00:19:08,060 --> 00:19:10,950 Kaj la krada funkcio diras al ni kie meti tiujn vortojn. 401 00:19:10,950 --> 00:19:15,650 >> Ĉi tio estas la tuta granda en la lando kie ekzistas nur unu vorto por ĉiu fendo. 402 00:19:15,650 --> 00:19:20,480 Sed kiel vi memoras el pset6, tie Estas pli da vortoj ol fendoj. 403 00:19:20,480 --> 00:19:23,080 Do kio okazas kiam vi get kolizio? 404 00:19:23,080 --> 00:19:26,730 Anstataŭ stokante unu valoron, diru, hash tablo 3, vi 405 00:19:26,730 --> 00:19:27,990 butika ligillisto. 406 00:19:27,990 --> 00:19:32,900 Kaj tial anstataŭ havi melono ĉi tie, vi havus ligillisto, 407 00:19:32,900 --> 00:19:34,190 kie la unua nodo estas melono. 408 00:19:34,190 --> 00:19:35,260 Kaj la sekvantan nodo estas kato. 409 00:19:35,260 --> 00:19:38,970 Kaj la tria vertico estas kolizio, ni diri, ĉar ĉiuj tiuj vortoj komenci 410 00:19:38,970 --> 00:19:41,110 kun C. 411 00:19:41,110 --> 00:19:42,700 >> Do plejparto de vi faris ĉi tion por pset6. 412 00:19:42,700 --> 00:19:45,685 Se vi ne faras hash tablo sur pset6 kaj vi provis ion kiel 413 00:19:45,685 --> 00:19:47,720 a trie, definitive revizii hash tabloj. 414 00:19:47,720 --> 00:19:50,650 Se vi ne faras tion sur pset6, definitive revizii hash tabloj. 415 00:19:50,650 --> 00:19:53,610 Kaj se vi faris ĝin sur pset6 kaj ĝi ja ne labori el tute pravas kaj vi 416 00:19:53,610 --> 00:19:56,150 havis multajn problemojn kun ĝi, definitive revizii hash tabloj. 417 00:19:56,150 --> 00:20:01,610 Do la lecionon vere estas definitive revizii hash tabloj. 418 00:20:01,610 --> 00:20:07,130 >> La granda minoritato de vi provis el traktas sur pset6. 419 00:20:07,130 --> 00:20:08,570 Alta nivelo portreto. 420 00:20:08,570 --> 00:20:15,150 Estas io tiamaniere, kie ĉiu nodo havas aron da infanoj, kie ĉiu 421 00:20:15,150 --> 00:20:17,100 infano respondas al letero. 422 00:20:17,100 --> 00:20:20,520 Kaj cxiu nodo ankaŭ diras, bona, mi estas vorto. 423 00:20:20,520 --> 00:20:25,933 Do, en tiu ekzemplo, la vorto de Maxwell, se vi sekvos la M al la A al la 424 00:20:25,933 --> 00:20:28,530 X-W-E-L-L kaj tiam sekvas ĝin unu pli. 425 00:20:28,530 --> 00:20:32,800 Kaj vi ricevas tiun simbolon, delto, kiu Ni instigu signifi tiu estas vorto. 426 00:20:32,800 --> 00:20:34,780 Do Maxwell estas vorto. 427 00:20:34,780 --> 00:20:38,430 Tiuj deltas estas laŭlonge montras kio ajn estas vortoj kaj kion 428 00:20:38,430 --> 00:20:40,360 aĵoj ne estas. 429 00:20:40,360 --> 00:20:46,400 >> Do en pset6, la datumoj stokitaj apud iu el niaj nodoj estis "I am a 430 00:20:46,400 --> 00:20:52,630 vorto. "Kaj la malvarmeta afero pri tries Estas ili pruvas inserción kaj 431 00:20:52,630 --> 00:20:55,080 lookup en O (longo de vorto). 432 00:20:55,080 --> 00:20:59,450 Do simple akiri pere de Maxwell, ĝi estas M-A-X-W-E-L-L. Do sep aŭ ok - 433 00:20:59,450 --> 00:21:00,360 Mi ne povas rakonti - 434 00:21:00,360 --> 00:21:03,920 ŝtupoj por atingi la finon kaj kontrolu tion eksteren. 435 00:21:03,920 --> 00:21:06,800 Do rapida efektivigo tie. 436 00:21:06,800 --> 00:21:10,230 Rob iris tra ligita listo en sia postmortem. 437 00:21:10,230 --> 00:21:11,600 Do kontrolu ke ekstere. 438 00:21:11,600 --> 00:21:11,720 Pardonon. 439 00:21:11,720 --> 00:21:13,240 Iris tra trie en sia postmortem. 440 00:21:13,240 --> 00:21:14,260 Do kontrolu ke ekstere. 441 00:21:14,260 --> 00:21:24,410 >> Sed vi esence havi ĉiu vertico havas 27 montriloj al la sekvanta nodoj kaj unu 442 00:21:24,410 --> 00:21:27,050 Bulea cxar cxu mi vorton. 443 00:21:27,050 --> 00:21:31,530 Check out Rob la postmortem dum kiom tiu fakte estas efektivigita. 444 00:21:31,530 --> 00:21:34,750 Nia fina strukturo, niaj arboj kaj duumaj arboj de serĉo. 445 00:21:34,750 --> 00:21:41,530 Do rigardante tiujn, tiuj estis kovritaj plej laste Semajno 8, lundo. 446 00:21:41,530 --> 00:21:46,960 Arbo estas simila al trie, krom vi ne nepre havas 27 nodoj ĉe 447 00:21:46,960 --> 00:21:47,500 ĉiu punkto. 448 00:21:47,500 --> 00:21:52,820 Kaj vi ne havas ĉi tiun datumojn al ĉiu paŝo kiu signifas ĉu la - 449 00:21:52,820 --> 00:21:54,030 la vojo ne gravas. 450 00:21:54,030 --> 00:22:00,870 Pro trie, la vojo de supre fundo, Maxwell, estis grava por ni. 451 00:22:00,870 --> 00:22:05,270 >> Sed ĉiu vertico havas plurajn infanoj, eble. 452 00:22:05,270 --> 00:22:07,290 Ni havas iom pli da vortprovizo. 453 00:22:07,290 --> 00:22:09,530 La radiko de la arbo Estas ĉe la plejsupro. 454 00:22:09,530 --> 00:22:12,520 Kaj ni diras, ke la tre ĉefundan nodoj, kiuj ne havas 455 00:22:12,520 --> 00:22:14,530 infanoj estas folioj. 456 00:22:14,530 --> 00:22:18,040 Do kiel trie, arbo estas strukturo de nodoj. 457 00:22:18,040 --> 00:22:21,490 Komuna tipo de arbo, kiun ni iras paroli estas duuma arbo, kie 458 00:22:21,490 --> 00:22:26,040 ĉiu nodo havas filojn aŭ unu infano aŭ du infanoj. 459 00:22:26,040 --> 00:22:28,890 Do tiu bildo ĉi tie ne estas duuma arbo, ĉar 460 00:22:28,890 --> 00:22:32,890 nodo 3 havas tri infanojn. 461 00:22:32,890 --> 00:22:38,140 >> Sed se ni estis ignori tiujn, la reston de ĝi estas duuma arbo pro tio 462 00:22:38,140 --> 00:22:43,200 pruvas la propraĵo ke ĉiu vertico havas nulo, unu, aŭ du infanoj. 463 00:22:43,200 --> 00:22:46,400 Do kiel ni povus esprimi tion en la kodo? 464 00:22:46,400 --> 00:22:51,460 Ni povus havi nodo kie ĉiu vertico havas entjero interne de gxi, tiel 465 00:22:51,460 --> 00:22:55,590 kiel montrilo al la arbo sur la maldekstra kaj montrilon al la arbo sur la 466 00:22:55,590 --> 00:22:59,510 Bone, do la du infanoj. 467 00:22:59,510 --> 00:23:00,880 Kio tio estas utila? 468 00:23:00,880 --> 00:23:05,740 Nu, se ni faras reguloj pri, kie ni meti nodojn, oni povas fari serĉon rapida. 469 00:23:05,740 --> 00:23:10,630 >> Do tie estas koncepto de duuma serĉo arbo, kie ĉiuj verticoj en la 470 00:23:10,630 --> 00:23:14,420 maldekstra subarbo havas pli malgrandan valoron ol la nodo ni rigardas. 471 00:23:14,420 --> 00:23:17,880 Kaj ĉiuj nodoj ĉe la dekstra subarbo havas grandan valoron 472 00:23:17,880 --> 00:23:18,660 ol la radika vertico. 473 00:23:18,660 --> 00:23:20,670 Nun, kiu aspektas kiel multe da vortoj. 474 00:23:20,670 --> 00:23:23,770 Mi tuj metos gxin ene de duobla citaĵoj kaj montros al vi bildon. 475 00:23:23,770 --> 00:23:27,010 Do jen estas ekzemplo de duuma serĉarbo. 476 00:23:27,010 --> 00:23:28,770 Zorgu, ke ni komencu per 10. 477 00:23:28,770 --> 00:23:31,780 Ĉion al la maldekstro de 10 estas pli malgranda ol ĝi. 478 00:23:31,780 --> 00:23:33,130 Kaj ĉio dekstren estas pli granda ol ĝi. 479 00:23:33,130 --> 00:23:37,620 >> Sed pli ol tio, ĉiu nodo en la arbo esprimas tiun proprieton. 480 00:23:37,620 --> 00:23:42,110 Do la nodo 7 havas 3 al la forlasis kaj 9 dekstre. 481 00:23:42,110 --> 00:23:44,440 Do ĉiuj el tiuj estas pli malgrandaj ol 10. 482 00:23:44,440 --> 00:23:50,470 Sed rigardante nur tiuj, la 7 havas 3 al lia maldekstra kaj 9 al lia rajto. 483 00:23:50,470 --> 00:23:56,100 Kaj simile pri la rajto, 15 havas 14 lia maldekstra kaj 50 al lia rajto. 484 00:23:56,100 --> 00:24:03,770 Do la tri nodoj tien, 15, 14, kaj 50, estas ankaŭ valida duuma arbo 485 00:24:03,770 --> 00:24:05,480 aŭ validan duuma serĉarbo. 486 00:24:05,480 --> 00:24:07,250 Kaj ili ĉiuj estas pli granda ol 10. 487 00:24:07,250 --> 00:24:08,960 Do ili rajtas esti sur la dekstra tie. 488 00:24:08,960 --> 00:24:09,940 Cxu ekzistas demando? 489 00:24:09,940 --> 00:24:12,580 >> Spektantaro: Kiel vi agos kiam vi havas du po sep paroj? 490 00:24:12,580 --> 00:24:12,850 >> R.J. Aquino: Jes. 491 00:24:12,850 --> 00:24:16,550 Kiel vi agos kun du valoroj kiu estas la samaj? 492 00:24:16,550 --> 00:24:21,465 Kelkaj duuma serĉo arboj diri ke vi ignori duobligitaj, ĉar la celo estas 493 00:24:21,465 --> 00:24:24,280 nur diri, mi vidis ĉi tiuj aferoj estas tiel malproksima. 494 00:24:24,280 --> 00:24:28,120 Kelkaj duuma serĉo arbojn vi povus diri havi grafo ene de la nodo. 495 00:24:28,120 --> 00:24:32,000 Aliaj povus diri, ke ĉion la maldekstro estas malpli ol aŭ egala al. 496 00:24:32,000 --> 00:24:33,470 Kaj ĉio dekstren estas pli granda ol. 497 00:24:33,470 --> 00:24:36,520 >> Ĝi nur dependas, kion la problemo estas ke vi solvi. 498 00:24:36,520 --> 00:24:40,840 Do en vortaro, ekzemple, vi ne zorgas pri duobligitaj. 499 00:24:40,840 --> 00:24:41,490 Vi devus forĵeti ilin. 500 00:24:41,490 --> 00:24:44,719 Sed iuj aliaj problemo vi eble zorgas. 501 00:24:44,719 --> 00:24:49,242 >> Spektantaro: Ĉu eblas havi 1 maldekstren de 15, kiun 502 00:24:49,242 --> 00:24:50,590 estas malpli ol 10? 503 00:24:50,590 --> 00:24:51,885 >> R.J. Aquino: N-ro 504 00:24:51,885 --> 00:24:56,570 Se la 14an tie estis a 1, ĉi tio ne estos valida duuma serĉarbo, 505 00:24:56,570 --> 00:25:00,840 ĉar ĉion al la rajto de 10 devas esti pli granda ol ĝi. 506 00:25:00,840 --> 00:25:02,300 Kaj ni vidos kial. 507 00:25:02,300 --> 00:25:07,960 Se en la lando de serĉado mia celo estas trovi 14, mi komencas ĉe la radiko. 508 00:25:07,960 --> 00:25:08,500 Do mi rigardu. 509 00:25:08,500 --> 00:25:08,710 OK. 510 00:25:08,710 --> 00:25:10,670 Ni tuj komencu ĉe la radiko. 511 00:25:10,670 --> 00:25:12,500 Rigardu 10. 512 00:25:12,500 --> 00:25:16,050 >> Nu, 14, nia celo, estas pli granda ol 10. 513 00:25:16,050 --> 00:25:17,370 Do ĝi devas esti sur la dekstra. 514 00:25:17,370 --> 00:25:21,780 Ĉi tio estas tre simila al la tuta telefono libro afero ni faris, la duuma 515 00:25:21,780 --> 00:25:23,720 serĉu tie. 516 00:25:23,720 --> 00:25:26,430 Sed anstataŭ duumaj serĉado en tabelo, ni estas duargumenta 517 00:25:26,430 --> 00:25:28,490 serĉado en ĉi tiu arbo. 518 00:25:28,490 --> 00:25:31,260 Do ni daŭre serĉas 14. 519 00:25:31,260 --> 00:25:32,480 Nu, 14 estas pli malgranda ol 15. 520 00:25:32,480 --> 00:25:36,430 Do, se ĝi estas en niaj arbo, ĝi devas esti en tiu areo tie. 521 00:25:36,430 --> 00:25:39,680 Ĝi devas esti al la rajto de 10 kaj al la maldekstra de 15. 522 00:25:39,680 --> 00:25:42,250 >> Kaj tial ni kontrolu ĉi tiu nodo. 523 00:25:42,250 --> 00:25:45,790 Kaj yay, ni trovis 14. 524 00:25:45,790 --> 00:25:46,760 Mi ne tuj marŝi tra ĝi. 525 00:25:46,760 --> 00:25:48,090 Sed jen la kodon. 526 00:25:48,090 --> 00:25:49,690 Tie fakte relative simpla, 527 00:25:49,690 --> 00:25:52,630 ĉar ĉi tio estas rekursie. 528 00:25:52,630 --> 00:25:55,420 Kion ni povus peti de vi sur kvizo? 529 00:25:55,420 --> 00:25:57,000 Ni povus peti vin skribi tiun kodon. 530 00:25:57,000 --> 00:25:59,170 Ni povus demandi vin rigardi ĉi kodo kaj modifi ĉi kodo kaj klarigi kio 531 00:25:59,170 --> 00:26:00,210 ĝi estas faranta. 532 00:26:00,210 --> 00:26:00,390 Jes. 533 00:26:00,390 --> 00:26:00,770 Demandon? 534 00:26:00,770 --> 00:26:04,240 >> Spektantaro: Cxu tiuj diapozitivoj tuj estos disponebla kiel ili estis en la pasinta tempo? 535 00:26:04,240 --> 00:26:04,740 >> R.J. Aquino: Jes. 536 00:26:04,740 --> 00:26:06,460 Do tiuj diapozitivoj volas definitive esti eldonitaj. 537 00:26:06,460 --> 00:26:08,640 >> Spektantaro: Ili estas efektive afiŝis ĝuste nun sur la paĝo. 538 00:26:08,640 --> 00:26:10,020 David ĵus faris tion. 539 00:26:10,020 --> 00:26:12,720 >> R.J. Aquino: La diapozitivoj estas ĝuste nun sur la paĝo. 540 00:26:12,720 --> 00:26:16,420 Mi verŝajne fliki kelkaj la tajperaroj mi rimarkis kaj ripari ilin. 541 00:26:16,420 --> 00:26:19,940 Sed estas kurento versio de la paĝaro. 542 00:26:19,940 --> 00:26:21,820 Aliaj aferoj ni povus peti de vi - 543 00:26:21,820 --> 00:26:23,790 skribi insert. 544 00:26:23,790 --> 00:26:27,490 Skribu ripeta versio de la rekursia funkcio ni simple montris vin 545 00:26:27,490 --> 00:26:32,520 aŭ paroli pri tiuj aferoj, kiel en alineoj, en vortoj, en frazoj. 546 00:26:32,520 --> 00:26:35,760 Komparante la tempoj de ekzekuto kaj eksplikante kion vi volus uzi duuma 547 00:26:35,760 --> 00:26:39,200 serĉarbo por anstataŭ hash tabelo, ekz. 548 00:26:39,200 --> 00:26:43,580 >> Do komprenu tiujn strukturojn ĉe belan profunda nivelo. 549 00:26:43,580 --> 00:26:47,440 Kompreni kiel skribi ilin, kiel uzi ilin, kiel paroli pri ili. 550 00:26:47,440 --> 00:26:50,270 Kaj vi estos la tuta aro. 551 00:26:50,270 --> 00:26:50,630 Demandon? 552 00:26:50,630 --> 00:26:55,070 >> Spektantaro: Kiam vi skribas la duuma serĉarbo, kiel do vi 553 00:26:55,070 --> 00:27:01,460 determini kion valoron al fari ĝin kiel la radika? 554 00:27:01,460 --> 00:27:06,120 >> R.J. Aquino: Do ​​la demando estas, kion valoron vi faru kiel la radiko? 555 00:27:06,120 --> 00:27:08,760 Depende de via kodo, vi povas havi ĝeneralan radikon. 556 00:27:08,760 --> 00:27:14,290 Do eble vi verŝajne havis en pset6 tutmonda hash tablo. 557 00:27:14,290 --> 00:27:18,640 Aŭ vi povus pasi al la radiko en kiel argumento. 558 00:27:18,640 --> 00:27:23,810 Do tiu serĉo funkcio ĉi tie prenas argumenton nodo *. 559 00:27:23,810 --> 00:27:27,420 Kaj tial ajn nodo vi hazarde estos rigardante estas tiu kiun vi traktis 560 00:27:27,420 --> 00:27:31,510 kiel vian radikon, kiam vi transiros it in 561 00:27:31,510 --> 00:27:32,320 Kaj mi certas tutan aron. 562 00:27:32,320 --> 00:27:33,480 Tiuj estas miaj diapozitivoj. 563 00:27:33,480 --> 00:27:35,940 La sekva persono povas veni interŝanĝo en tekkomputilo kaj mic. 564 00:27:35,940 --> 00:27:47,390 565 00:27:47,390 --> 00:27:49,760 >> ROB Bowden: Mi pensas ke mi povus havi interpretis ke demandon malsame. 566 00:27:49,760 --> 00:27:53,826 Sed mi interpretis kiel, se vi havas la nombroj 1, 2, kaj 3, kiel do ni 567 00:27:53,826 --> 00:27:56,720 scias fari 2 radiko kontraste al 1 aŭ 3? 568 00:27:56,720 --> 00:27:59,480 Se ni faras 2 la radiko, tiam ĝi estas bele 1 kaj 3 al la maldekstra kaj dekstra. 569 00:27:59,480 --> 00:28:04,610 Sed se 1 estas la radiko, tiam ĝi estas 1 al la supro, 2 dekstre, 3 al la dekstra. 570 00:28:04,610 --> 00:28:10,880 Do defaŭlte, vi ne scias, kion faras la radiko. 571 00:28:10,880 --> 00:28:15,400 Kaj por ĉiu algoritmo ni atendante doni al vi, nur la unua afero, vi 572 00:28:15,400 --> 00:28:16,680 insert estus la radiko. 573 00:28:16,680 --> 00:28:19,890 Aux ni deziras al vi duuma arbo jam ekzistas, ke ĝi havas radikon. 574 00:28:19,890 --> 00:28:24,760 Sed aliaj algoritmoj ekzistas tiaj ke la radiko ĝisdatigos, tiel ke se vi 575 00:28:24,760 --> 00:28:28,370 ili finas en la situacio kie ĝi estas 1, 2, 3, estus aŭtomate aktualigi al 576 00:28:28,370 --> 00:28:30,900 fari 2 la nova radiko, por ke ĝi estas ankoraŭ bele balancita. 577 00:28:30,900 --> 00:28:33,750 578 00:28:33,750 --> 00:28:34,833 >> Angela LI: Cool. 579 00:28:34,833 --> 00:28:36,170 Hej, knaboj. 580 00:28:36,170 --> 00:28:37,810 Mi estas Angela. 581 00:28:37,810 --> 00:28:42,490 Kaj mi tuj ellaborus niaj C kaj poste iru al iu el niaj ttt 582 00:28:42,490 --> 00:28:43,120 teknologiojn - 583 00:28:43,120 --> 00:28:46,570 HTTP, HTML kaj CSS. 584 00:28:46,570 --> 00:28:49,610 Do la unua afero estas bufro overflow atakoj. 585 00:28:49,610 --> 00:28:53,070 Do ni rigardu tiun kodon. 586 00:28:53,070 --> 00:28:54,260 Ĝi estas sufiĉe simpla. 587 00:28:54,260 --> 00:28:55,460 Ekzistas funkcio foo. 588 00:28:55,460 --> 00:28:56,990 Kaj tio ne revenas nenion. 589 00:28:56,990 --> 00:29:00,950 Sed ĝi portas en montrilo al ĉeno nomata trinkejo. 590 00:29:00,950 --> 00:29:04,920 >> Kaj ĝi tuj rakontos ĉi bufro, kiu estas gravulo 591 00:29:04,920 --> 00:29:07,690 tabelo kiu havas 12 fendoj. 592 00:29:07,690 --> 00:29:11,730 Kaj ĝi uzas memcpy, kiu estas nur funkcio kiu kopiojn de unu adreso 593 00:29:11,730 --> 00:29:12,910 en alian. 594 00:29:12,910 --> 00:29:19,400 Do tio estas provi kopii en nia buffer el kio ajn 595 00:29:19,400 --> 00:29:21,140 stango indikante. 596 00:29:21,140 --> 00:29:24,640 Do iun ideon kio estas erara kun tiu kodo? 597 00:29:24,640 --> 00:29:27,568 598 00:29:27,568 --> 00:29:30,830 >> Spektantaro: Se trinkejo estas pli longa ol C, oni reskribi. 599 00:29:30,830 --> 00:29:31,520 >> Angela LI: Jes, ĝuste. 600 00:29:31,520 --> 00:29:34,200 Ni ne havas garantion ke trinkejo tuj estos malpli ol 12. 601 00:29:34,200 --> 00:29:36,080 Ni ĵus faris kelkajn arbitran numeron 12. 602 00:29:36,080 --> 00:29:38,380 Kaj ni estis kiel, ni esperas, ke nia uzanto enigo estas malpli ol 603 00:29:38,380 --> 00:29:40,440 12 signojn longa. 604 00:29:40,440 --> 00:29:46,320 Do en ideala mondo, se nia enigo estas ĉiam kiel atendita, tiam ni ricevos 605 00:29:46,320 --> 00:29:47,550 io kiel, saluton. 606 00:29:47,550 --> 00:29:48,920 Tio estas malpli ol 12 signoj. 607 00:29:48,920 --> 00:29:51,870 Ĝi gets legis en char c. 608 00:29:51,870 --> 00:29:53,280 Kaj tiam ni faru ion kun tio. 609 00:29:53,280 --> 00:29:54,800 Ĝi vere ne gravas. 610 00:29:54,800 --> 00:29:59,740 >> Sed malica persono povus fari ion pli ŝatas ĉi tion, kie ili 611 00:29:59,740 --> 00:30:04,760 donu al ni kion ajn stango indikante, ĝi tuj atentigi al tiu grandega tabelo 612 00:30:04,760 --> 00:30:06,280 de ĵus A-aj jaroj. 613 00:30:06,280 --> 00:30:10,680 Kaj tio estas vojo pli longa ol 12. 614 00:30:10,680 --> 00:30:13,830 Do ĝi estas tuj iros tuta vojo cxi tie, kie la reveno 615 00:30:13,830 --> 00:30:15,420 adreso kutimis esti. 616 00:30:15,420 --> 00:30:17,860 Do diru ĉi funkcio nomas foo. 617 00:30:17,860 --> 00:30:20,970 Eble foo estis nomita de iu alia funkcio, kiu estis nomita de main. 618 00:30:20,970 --> 00:30:24,890 Do kiam foo kuras, gxi bezonas scii kie reveni al. 619 00:30:24,890 --> 00:30:29,130 >> Se foo estis nomata per iu funkcio nomata Rabado, ĝi devas scii, ke ĝi estas 620 00:30:29,130 --> 00:30:30,250 devas iri reen al Rabado. 621 00:30:30,250 --> 00:30:34,040 Kaj tio kion tiu reveno adreso cxi tie estas diranta al ni. 622 00:30:34,040 --> 00:30:38,340 Sed se ni anstataŭigi ĝin per iu alia adreso, en ĉi tiu kazo, tio estas 623 00:30:38,340 --> 00:30:42,650 prezento de la adreson ĉe la tre komencante de tiu buffer, tiam 624 00:30:42,650 --> 00:30:45,240 kio reale okazos trovas ke anstataŭ reveni reen al Rabado, 625 00:30:45,240 --> 00:30:48,470 kiu vokis nia funkcio, ĝi estas nur tuj iri al la fronto de tiu kodo. 626 00:30:48,470 --> 00:30:53,930 >> Kaj se ĉi tie ĉar malica hacker dude venis kaj 627 00:30:53,930 --> 00:30:56,820 injektita ĉi, tiam eble tiu sumo de A estas ne reale A-aj jaroj. 628 00:30:56,820 --> 00:31:02,030 Kaj ĝi estas fakte ĝuste kodo kiu rompas via komputilo aŭ io. 629 00:31:02,030 --> 00:31:05,930 Do por esti defenda pri tiu speco de afero, oni devas neniam supozas ke 630 00:31:05,930 --> 00:31:09,120 uzanto enigo estas certa kvanto da karakteroj. 631 00:31:09,120 --> 00:31:13,310 Ekzemple, kiam vi estis farantaj Speller, vi diris, ke parolo 632 00:31:13,310 --> 00:31:15,580 nur tuj estos 40 signoj longa maksimumo. 633 00:31:15,580 --> 00:31:16,570 Kaj tio estis bona. 634 00:31:16,570 --> 00:31:20,150 >> Sed se ne, tiam vi devus certigi nur legis en 45 635 00:31:20,150 --> 00:31:21,520 karakteroj samtempe. 636 00:31:21,520 --> 00:31:24,430 Alie, vi povus anstataŭigi via bufro. 637 00:31:24,430 --> 00:31:26,140 Demandojn pri tio. 638 00:31:26,140 --> 00:31:26,733 Jes. 639 00:31:26,733 --> 00:31:28,850 >> Spektantaro: Ĉu vi povas simple paroli iom pli pri tiuj? 640 00:31:28,850 --> 00:31:29,790 >> Angela LI: Pardonu. 641 00:31:29,790 --> 00:31:31,040 Jes. 642 00:31:31,040 --> 00:31:32,813 643 00:31:32,813 --> 00:31:35,870 >> Spektantaro: La mic estas nur por tiu video. 644 00:31:35,870 --> 00:31:37,640 Mi provos kaj projekto. 645 00:31:37,640 --> 00:31:39,900 Saluton, knaboj. 646 00:31:39,900 --> 00:31:40,920 Sup? 647 00:31:40,920 --> 00:31:45,330 Do ni iru pri malmultaj aferoj en la CS50 biblioteko, kiun vi jam estis uzanta 648 00:31:45,330 --> 00:31:49,072 ĉiuj semestro, plejparte akiri uzanto enigon. 649 00:31:49,072 --> 00:31:53,140 Kiel vi scias, vi inkludas la CS50 bibliotekon por nur faras CS50.h, kiuj 650 00:31:53,140 --> 00:31:55,660 enhavas ĉiujn prototipoj de la funkcioj kiujn vi povas uzi, kiel 651 00:31:55,660 --> 00:31:58,640 GetString kaj GetInt, kaj GetFloat, ktp. 652 00:31:58,640 --> 00:32:02,870 Kaj tie estas tio unu linio en la CS50 biblioteko kiu difinas ĉenon, kiun 653 00:32:02,870 --> 00:32:05,380 you guys ĉiuj scias nun estas nur char *. 654 00:32:05,380 --> 00:32:07,900 >> Sed ni prenu peek ĉe kiom GetString funkcias. 655 00:32:07,900 --> 00:32:10,010 Tio estas tre mallongigita versio. 656 00:32:10,010 --> 00:32:15,090 Vi povas tiri supren la CS50 biblioteko dosierojn de, mi pensas, manuals.CS50.net. 657 00:32:15,090 --> 00:32:16,750 Kaj vi povas legi pere la efektiva funkcio. 658 00:32:16,750 --> 00:32:19,330 Sed ĉi kovras iujn el la gravaj partoj. 659 00:32:19,330 --> 00:32:23,870 Do ni jam kreis iun bufron kun iom da kapablo. 660 00:32:23,870 --> 00:32:27,570 Kaj kion ni faros estas ni preni unu signo en momento de norma n. 661 00:32:27,570 --> 00:32:30,910 Tie estas kie la uzulo enigas teksto en la konzolo. 662 00:32:30,910 --> 00:32:33,430 >> Kaj do ni legos en karaktero tiom longe kiom ĝi ne estas nova 663 00:32:33,430 --> 00:32:37,220 linio kaj ĝi ne estas fino de la dosiero, kiun estas la fino de norma enigo. 664 00:32:37,220 --> 00:32:45,690 Kaj por ĉiu signo ke ni legu en: se tiu karaktero finu aldono 665 00:32:45,690 --> 00:32:50,120 la nombro de signoj ni legis in kaj kiu estas pli ol nia kapablo, 666 00:32:50,120 --> 00:32:53,490 do kion ni faras estas ni nur regrandigi nia bufro tiel ke ĝi estas duoble pli longa. 667 00:32:53,490 --> 00:32:56,950 Do denove, ĉi protekti kontraŭ buffer overflow atakojn, cxar vi legis en 668 00:32:56,950 --> 00:32:58,315 karaktero samtempe. 669 00:32:58,315 --> 00:33:02,290 Kaj se en ajna punkto vi legis tro multaj, vi nur pligrandigas viajn bufro. 670 00:33:02,290 --> 00:33:03,330 Vi multigos gxin per du. 671 00:33:03,330 --> 00:33:05,510 Kaj tiam vi havos pli da spaco. 672 00:33:05,510 --> 00:33:09,120 >> Alie, vi simple aldonu karaktero al buffer. 673 00:33:09,120 --> 00:33:15,080 Kaj post kiam vi legis en la tuta karakterojn, estos shrink la bufro 674 00:33:15,080 --> 00:33:18,510 reen malsupren al la normalan grandecon, aldoni nula finilo, kaj tiam revenu. 675 00:33:18,510 --> 00:33:21,880 676 00:33:21,880 --> 00:33:24,960 Nun, ni rigardu GetInt. 677 00:33:24,960 --> 00:33:27,700 Ĉu vi uloj legi tiun? 678 00:33:27,700 --> 00:33:30,710 Mi povas zomi iom. 679 00:33:30,710 --> 00:33:33,410 680 00:33:33,410 --> 00:33:34,660 Mi ne scias kiel komputiloj funkcios. 681 00:33:34,660 --> 00:33:40,840 682 00:33:40,840 --> 00:33:41,270 Neniam menso. 683 00:33:41,270 --> 00:33:42,520 Mi ne povas zomi konvene. 684 00:33:42,520 --> 00:33:47,500 685 00:33:47,500 --> 00:33:48,770 >> Tio estas vere malfacila. 686 00:33:48,770 --> 00:33:49,180 Mi bedaŭras. 687 00:33:49,180 --> 00:33:51,490 Ni simple rigardi ĉi. 688 00:33:51,490 --> 00:33:57,140 Do kio GetInt faras estas unue ĝin legas en ĉeno de GetString, kiuj 689 00:33:57,140 --> 00:33:59,250 ni implementado antaŭe. 690 00:33:59,250 --> 00:34:02,945 Kaj la grava parto noti ĉi tie estas se tiu dividado kiu finu 691 00:34:02,945 --> 00:34:06,400 legado estas kiel ne reale kordo, do ni ĵus revenas INT_MAX al 692 00:34:06,400 --> 00:34:09,409 reprezenti malsukceso. 693 00:34:09,409 --> 00:34:12,645 Kial ni revenos INT_MAX anstataŭ de negativa 1 aŭ 1? 694 00:34:12,645 --> 00:34:13,895 Ajna ideoj? 695 00:34:13,895 --> 00:34:16,853 696 00:34:16,853 --> 00:34:19,350 >> Spektantaro: [inaudibles] negativa 1 sur unu. 697 00:34:19,350 --> 00:34:20,070 >> Angela LI: Jes, ĝuste. 698 00:34:20,070 --> 00:34:24,560 Do vi estas vojo pli versxajne nur volas enigi 1 aŭ negativa 1 kiam instigis 699 00:34:24,560 --> 00:34:27,469 por n-a kaj kio ajn n-a maxes. 700 00:34:27,469 --> 00:34:27,969 Ĝi estas grandega. 701 00:34:27,969 --> 00:34:29,690 Vi probable ne tuj uzu ĝin. 702 00:34:29,690 --> 00:34:32,690 Do tiu estas kiel dezajno decido certigi ke vi ne faru hazarde 703 00:34:32,690 --> 00:34:38,540 revenu eraro aux vi ne revenos 1, kiuj povus esti analizitaj 704 00:34:38,540 --> 00:34:41,199 kiel korekta respondo. 705 00:34:41,199 --> 00:34:45,110 Do se linio ne ekzistas, ni revenos INT-MAX. 706 00:34:45,110 --> 00:34:48,090 Alie, ni uzas sscanf, kio estas kiel scanf. 707 00:34:48,090 --> 00:34:49,449 Sed ĝi legas per ŝnureto. 708 00:34:49,449 --> 00:34:54,310 >> Kaj ni havas ĉi formatita kordo, kiu estas% i% c. 709 00:34:54,310 --> 00:34:57,440 Kaj ni klopodos kaj kongruas ke kun kion ajn la uzanto donis al ni. 710 00:34:57,440 --> 00:35:01,420 Ni volas ke la nombro de parigitaj aferoj al esti 1, kio signifas, ke ni nur 711 00:35:01,420 --> 00:35:04,940 vere volas parigi entjero ĉirkaŭata de eble blanka 712 00:35:04,940 --> 00:35:06,840 spaco, eble ne. 713 00:35:06,840 --> 00:35:10,710 En ĉi tiu kazo, se vi metas en io kiel stango, trinkejo ne kongruas tute ne, 714 00:35:10,710 --> 00:35:14,400 ĉar ne bezonas esti entjera, je la komenco. 715 00:35:14,400 --> 00:35:17,060 Do sscan neniam turnis 0. 716 00:35:17,060 --> 00:35:19,640 Do vi ne redonos tion. 717 00:35:19,640 --> 00:35:23,850 >> Alternative, se vi metas en io kiel 1, 2, 3, A, B, C, kiu alumetoj 718 00:35:23,850 --> 00:35:27,180 ambaŭ la entjero sed ankaŭ la karaktero post tio. 719 00:35:27,180 --> 00:35:29,990 Do sscanf revenos 2, kiu Estas ankaŭ ne estas ideala. 720 00:35:29,990 --> 00:35:34,620 Vi ne volas la 1, 2, 3, A, B, C al esti valida int. 721 00:35:34,620 --> 00:35:36,990 Por ke ankaŭ tio ne funkciis. 722 00:35:36,990 --> 00:35:38,530 Sed diru vi metas en iun kiel 50. 723 00:35:38,530 --> 00:35:42,460 Tio kongruas kun la% i, kiu signifas alvenos legi en la n. 724 00:35:42,460 --> 00:35:44,790 Kaj nun, n enhavos la numeron 50. 725 00:35:44,790 --> 00:35:46,110 Kaj tiam vi povas reveni al ĝi. 726 00:35:46,110 --> 00:35:49,270 >> Alie, vi batis Retry. 727 00:35:49,270 --> 00:35:55,790 Kaj tiam ĝi simple iras denove ĝis vi ricevas taŭgan enigon el la uzanto. 728 00:35:55,790 --> 00:35:56,891 Demandojn pri tio? 729 00:35:56,891 --> 00:36:02,182 >> Spektantaro: Do ​​se vi estus al presi La valoro de la GetInt sur [inaudibles] 730 00:36:02,182 --> 00:36:06,250 ĉu estos nur la entjeran kaj max? 731 00:36:06,250 --> 00:36:07,440 >> Angela LI: Jes. 732 00:36:07,440 --> 00:36:11,780 Do, se vi uzas GetInt, vi devus supozi ke vi ne volas ke n-a maks al 733 00:36:11,780 --> 00:36:15,328 esti valida enigo, ĉar vi iras supozi, ke tio estis malbona. 734 00:36:15,328 --> 00:36:27,740 >> Spektantaro: Se ni ne havas char c kaj iu metas en 1, 2, 3, Sam, ĉu ĝi 735 00:36:27,740 --> 00:36:29,430 ankoraŭ labori por 1, 2, 3? 736 00:36:29,430 --> 00:36:29,750 >> Angela LI: Mi pensas ke funkcius. 737 00:36:29,750 --> 00:36:33,340 Sed vi ne deziras 123Sam al esti valida enigo de uzanto. 738 00:36:33,340 --> 00:36:34,670 Tio ne vere int. 739 00:36:34,670 --> 00:36:36,840 Do tio ne ŝajnas bela por analizi ĝin kiel int. 740 00:36:36,840 --> 00:36:40,910 741 00:36:40,910 --> 00:36:42,160 OK. 742 00:36:42,160 --> 00:36:45,800 En tiu kazo, ni movas sur la interreto. 743 00:36:45,800 --> 00:36:49,120 Do HTTP ne estas lingvo. 744 00:36:49,120 --> 00:36:56,060 HTTP estas ĝuste la aro de normoj por kiom vi sendu tion for klientoj, 745 00:36:56,060 --> 00:36:57,280 tio estas vi, por serviloj. 746 00:36:57,280 --> 00:36:59,730 Tio estas alia homoj en la TTT. 747 00:36:59,730 --> 00:37:02,900 >> Do HTTP staras por Hypertext Transfer Protocol. 748 00:37:02,900 --> 00:37:04,610 Ĝi estas la koro kaj animo de la tuta retejo. 749 00:37:04,610 --> 00:37:07,050 La hipertekstaj parto nur rilatas al HTML. 750 00:37:07,050 --> 00:37:10,690 La transporto estas klientoj kiel vi sendos petojn al 751 00:37:10,690 --> 00:37:13,060 serviloj, kiuj donas respondojn. 752 00:37:13,060 --> 00:37:16,380 Kaj la protokolo estas justa, kiom fari vi atendas servilon konduti? 753 00:37:16,380 --> 00:37:19,960 Kaj kiel vi supozis konduti tia, ke oni povas agilizar ĉi 754 00:37:19,960 --> 00:37:21,920 komunikado procezo? 755 00:37:21,920 --> 00:37:26,650 >> Do HTTP petojn aspektas multe kiel ĉi tio. 756 00:37:26,650 --> 00:37:28,070 GET estas la tipo de peto. 757 00:37:28,070 --> 00:37:31,220 Vi infanoj vidis GET petoj kaj POST petoj. 758 00:37:31,220 --> 00:37:36,690 Tiu dua afero tie, / mi, tio estas nur la URI aŭ la URL de kie vi 759 00:37:36,690 --> 00:37:38,140 deziras iri en la tendaron. 760 00:37:38,140 --> 00:37:44,140 Do tiu peto estas petante la paĝo, kiel www.facebook.com / mi. 761 00:37:44,140 --> 00:37:45,300 Kaj ĝi estas GET peton. 762 00:37:45,300 --> 00:37:51,020 Kaj tiam tiu HTTP/1.1, tio estas nur la versio de HTTP vi uzas. 763 00:37:51,020 --> 00:37:55,020 Ĝi estas preskaŭ ĉiam 1.1. 764 00:37:55,020 --> 00:37:56,880 >> Kaj tiam tie estas faskon de aliaj aferoj ankaŭ. 765 00:37:56,880 --> 00:38:02,510 Vi povas vere vidi tiujn se vi malfermu vian konzolo kiam vi estas 766 00:38:02,510 --> 00:38:03,770 foliumi la retejo. 767 00:38:03,770 --> 00:38:07,290 Responses rigardi ion pli kiel ĉi tio. 768 00:38:07,290 --> 00:38:09,620 La supra parto estas, denove, la tipo de HTTP vi uzas 769 00:38:09,620 --> 00:38:12,310 sekvate de statuso kodo. 770 00:38:12,310 --> 00:38:14,700 Do 200 OK estas ĉiu laboris ekstere. 771 00:38:14,700 --> 00:38:16,200 Jen via enhavo. 772 00:38:16,200 --> 00:38:17,390 Vian enhavon tuj sekvos. 773 00:38:17,390 --> 00:38:21,730 Kaj tiam ĝi rakontos al vi kian de enhavo kaj aliajn aferojn tro. 774 00:38:21,730 --> 00:38:24,620 >> La statuso kodoj, tie estas kelkaj gravaj, ke vi devus scii. 775 00:38:24,620 --> 00:38:26,460 200 OK estas kiel ĉio ora. 776 00:38:26,460 --> 00:38:28,490 Ĉio funkcias. 777 00:38:28,490 --> 00:38:29,710 403 Forbidden. 778 00:38:29,710 --> 00:38:32,910 Ĉi vi probable vidi se vi forgesis al chmod ion konvene. 779 00:38:32,910 --> 00:38:34,510 Tio signifas ke vi ne havas dekstre permesojn al 780 00:38:34,510 --> 00:38:36,210 aliri, ke sur la servilo. 781 00:38:36,210 --> 00:38:38,110 Estas kiel, ne, vi ne povas vidi ĝin. 782 00:38:38,110 --> 00:38:39,780 404 signifas, ke afero ne ekzistas. 783 00:38:39,780 --> 00:38:40,400 Ne trovita. 784 00:38:40,400 --> 00:38:41,640 Vi verŝajne vidis ke multa. 785 00:38:41,640 --> 00:38:45,510 >> 500 Interna Servilo Eraro estas kutime kiel iu misfunkciis sur la flanko 786 00:38:45,510 --> 00:38:46,460 de la servilo. 787 00:38:46,460 --> 00:38:50,830 Do, kiam vi estis efektivigo pset7, se vi havus PHP eraroj, vi povus fari 788 00:38:50,830 --> 00:38:53,890 efektive iru al la paĝo kaj vidas tutan faskon da PHP eraro vazaro. 789 00:38:53,890 --> 00:38:56,900 Sed tio ne normale okazus, ĉar retejoj ne vere volas 790 00:38:56,900 --> 00:38:58,830 diru al vi, kial ilia loko estas rompita. 791 00:38:58,830 --> 00:39:03,370 Ili verŝajne simple resendas 500 Interna Servilo Eraro. 792 00:39:03,370 --> 00:39:06,120 >> Kaj tiam tie estas 418 Mi estas tekruĉo. 793 00:39:06,120 --> 00:39:07,910 Tie estas tuta historio pri kial tio estas io. 794 00:39:07,910 --> 00:39:09,860 Sed vi povas legi pri tio sur via propra epoko. 795 00:39:09,860 --> 00:39:11,450 Ekzistas tuta fasko da alia stato kodoj tro. 796 00:39:11,450 --> 00:39:12,700 Sed tiuj estas tiuj, Vi devus scii. 797 00:39:12,700 --> 00:39:15,660 798 00:39:15,660 --> 00:39:18,610 Do ni parolu pri HTML. 799 00:39:18,610 --> 00:39:22,180 HTML, memoru, estas ne programlingvo. 800 00:39:22,180 --> 00:39:23,510 Ĝi estas markado lingvo. 801 00:39:23,510 --> 00:39:25,210 Tio signifas, priskribas enhavo. 802 00:39:25,210 --> 00:39:30,440 Ĝi diros al vi kion HTML dokumento aspektas kiel aŭ ne kio ĝi aspektas kiel 803 00:39:30,440 --> 00:39:32,230 sed kiel ĝi estas strukturita. 804 00:39:32,230 --> 00:39:36,110 >> Do ĝi difinas strukturon kaj semantiko de retpaĝoj. 805 00:39:36,110 --> 00:39:37,830 Estas kiel, ĉi tiu estas alineo. 806 00:39:37,830 --> 00:39:40,060 Ĉi tio estas ordigita listo. 807 00:39:40,060 --> 00:39:42,360 Ĉi tio estas kiel sekcio de mia paĝo. 808 00:39:42,360 --> 00:39:43,260 Jen la titolo. 809 00:39:43,260 --> 00:39:44,310 Ĝi faras aferojn tiel. 810 00:39:44,310 --> 00:39:48,770 Ĝi ne stiligi ajn pri tio, ĉar ke estas kion vi faros en CSS. 811 00:39:48,770 --> 00:39:50,270 Kaj ĝi aspektas kiel serio de nestitaj etikedojn. 812 00:39:50,270 --> 00:39:54,720 Do uzi ekzemplo de vere bazaj HTML-paĝo, vi havos la DOCTYPE 813 00:39:54,720 --> 00:39:56,720 deklaro tie supre. 814 00:39:56,720 --> 00:40:00,940 >> Ĉi DOCTYPE deklaro estas dirante, ni uzas HTML5. 815 00:40:00,940 --> 00:40:03,370 Tiam vi havos la grandan HTML-etikedo. 816 00:40:03,370 --> 00:40:05,230 Ĝi enhavas kapo kaj korpo. 817 00:40:05,230 --> 00:40:06,970 Interne de la kapo, vi havas la titolon. 818 00:40:06,970 --> 00:40:12,950 Tio estas tio, kio eniras en la titolo trinkejo de via retumilo. 819 00:40:12,950 --> 00:40:15,810 Ni havas ligon etikedo kiu ligiloj en ekstera stilo folio. 820 00:40:15,810 --> 00:40:19,880 Kaj tiam ni havas skripton kiu tiras de ekstera JavaScript tiel. 821 00:40:19,880 --> 00:40:23,750 >> Kaj poste ene de nia korpo estas reale kio gets montrita en la paĝo. 822 00:40:23,750 --> 00:40:28,210 Ni havas novan alineon kaj poste bildo interne de la alineo. 823 00:40:28,210 --> 00:40:32,000 Ĉi tiu estas portreto de katidoj. 824 00:40:32,000 --> 00:40:35,840 Rimarku ke la bildo tag fermas sin. 825 00:40:35,840 --> 00:40:41,760 Do anstataŭ malfermo kun bildo kaj tiam fari alian / bildon, vi 826 00:40:41,760 --> 00:40:47,500 ĝuste havas ĉi iom oblikvo ĉi tie, kiuj fermas ĝin. 827 00:40:47,500 --> 00:40:53,670 Kaj la bildon tag ankaŭ havas ĉi tiun ŝlosilon valoro atributo nomata alt. 828 00:40:53,670 --> 00:40:56,970 Tio estas la alternativa teksto kiu okazas kiam vi ŝvebi super ĝi. 829 00:40:56,970 --> 00:41:03,170 >> Plej HTML elementoj havas iun klavon valoro aferoj kiujn vi povas doni ĝin, diversaj 830 00:41:03,170 --> 00:41:04,420 personigo. 831 00:41:04,420 --> 00:41:06,230 832 00:41:06,230 --> 00:41:08,705 Jes. 833 00:41:08,705 --> 00:41:09,955 >> Spektantaro: [inaudibles]. 834 00:41:09,955 --> 00:41:17,510 835 00:41:17,510 --> 00:41:19,680 >> Angela LI: Nu, do ĝi estas atributo de la etikedo. 836 00:41:19,680 --> 00:41:25,320 Do se vi estas uzanta jQuery, vi povus fari fari unuaranga image.getAttribute. 837 00:41:25,320 --> 00:41:27,930 Kaj tiam vi povas serĉi akiri la alt atributo. 838 00:41:27,930 --> 00:41:31,040 Kaj gxi donos al vi katidoj. 839 00:41:31,040 --> 00:41:37,400 Se vi memoras formoj en HTML, enigo elementoj havos nomon atributoj. 840 00:41:37,400 --> 00:41:41,870 Kaj tio estas kia PHP uzas por sendi petoj kiam formo estas donita. 841 00:41:41,870 --> 00:41:44,762 842 00:41:44,762 --> 00:41:50,064 >> Spektantaro: Ĉu vi mencias ion pri kiel se vi uzas kittens.jpg aŭ 843 00:41:50,064 --> 00:41:54,410 iu kiu havas la mankanta dosiero dosierujoj aux aliajn dosierojn? 844 00:41:54,410 --> 00:41:54,750 >> Angela LI: Jes. 845 00:41:54,750 --> 00:41:57,010 Do ĉi tiu estas kion oni nomas parenco vojon, ĉar mi ne donante 846 00:41:57,010 --> 00:41:58,740 vi la tutan vojon. 847 00:41:58,740 --> 00:42:05,160 Ĉi tio estas kiel kiam en C, se vi faros fopen iu dosiero, se vi fopen hi.txt, ke 848 00:42:05,160 --> 00:42:09,190 hi.txt atendas esti en la sama dosierujo, krom se vi donas ĝin pli 849 00:42:09,190 --> 00:42:11,530 kompleksa vojo. 850 00:42:11,530 --> 00:42:14,900 >> Spektantaro: Tiel vi povus precizigi kiu dosierujo [inaudibles]? 851 00:42:14,900 --> 00:42:17,660 >> Angela LI: Jes. 852 00:42:17,660 --> 00:42:19,370 Kaj vi povas rigardi supren kiel fari tion. 853 00:42:19,370 --> 00:42:23,480 Sed se mi volis akiri kittens.jpg ekstere de la patro dosierujo, mi farus 854 00:42:23,480 --> 00:42:24,730 .. / Kittens.jpg. 855 00:42:24,730 --> 00:42:29,680 856 00:42:29,680 --> 00:42:30,930 Jes. 857 00:42:30,930 --> 00:42:32,960 858 00:42:32,960 --> 00:42:33,760 Pardonon. 859 00:42:33,760 --> 00:42:34,045 Jes. 860 00:42:34,045 --> 00:42:35,700 Ho viro, mi forgesis pri la demando. 861 00:42:35,700 --> 00:42:36,460 Kio estis la demando? 862 00:42:36,460 --> 00:42:39,570 Ho, la demando estis estas, kittens.jpg antaŭvideble estos en la sama dosierujo? 863 00:42:39,570 --> 00:42:40,630 Kaj en ĉi tiu kazo, ĝi estas. 864 00:42:40,630 --> 00:42:44,030 Sed vi ankaŭ povas doni iun vojon tia, ke ĝi ne devas esti. 865 00:42:44,030 --> 00:42:47,100 866 00:42:47,100 --> 00:42:48,350 Bonan? 867 00:42:48,350 --> 00:42:50,190 868 00:42:50,190 --> 00:42:51,350 >> CSS. 869 00:42:51,350 --> 00:42:55,420 Do CSS, kiel HTML, estas ne programlingvo. 870 00:42:55,420 --> 00:42:58,250 CSS estas nur serio de stilo regulojn. 871 00:42:58,250 --> 00:43:00,130 Ĝi staras por Laŭtemaj Style Sheets. 872 00:43:00,130 --> 00:43:03,910 Kaj vi uzas ĝin en konjunkcio kun HTML al stilo paĝoj. 873 00:43:03,910 --> 00:43:08,140 Do estas tri manieroj vi povas inkluzivi ĝin. 874 00:43:08,140 --> 00:43:11,950 Unu maniero vi povas fari tion en la kapo parto de via HTML, vi povas simple 875 00:43:11,950 --> 00:43:15,410 malfermi stilo etikedon kaj poste algluita iuj CSS regas en tie. 876 00:43:15,410 --> 00:43:16,759 Ĝi estas sufiĉe bone. 877 00:43:16,759 --> 00:43:17,228 Jes. 878 00:43:17,228 --> 00:43:21,449 >> Spektantaro: Ĉu vi povus meti tiujn stilo-etikedoj en inter, ni 879 00:43:21,449 --> 00:43:22,860 diru, korpon kaj / korpo. 880 00:43:22,860 --> 00:43:27,400 Kaj tiam vi estus stilo nur en korpo. 881 00:43:27,400 --> 00:43:28,840 >> Angela LI: Vi povus. 882 00:43:28,840 --> 00:43:29,590 Ĝi devos labori. 883 00:43:29,590 --> 00:43:33,990 Sed vi ne devus, ĉar stilo estas speco de la metadatumojn kiuj devis iri en 884 00:43:33,990 --> 00:43:35,890 la kapo de via dokumento. 885 00:43:35,890 --> 00:43:38,280 Korpo devus vere nur enhavi kio efektive tuj 886 00:43:38,280 --> 00:43:39,420 aperos sur via paĝo. 887 00:43:39,420 --> 00:43:42,155 >> Spektantaro: Do ​​vi volas meti stilo en via kapo stiligi la 888 00:43:42,155 --> 00:43:43,930 tuta retpaĝo, ĉu ne? 889 00:43:43,930 --> 00:43:44,300 >> Angela LI: Jes. 890 00:43:44,300 --> 00:43:50,470 Do metante stilo tie ĉi, tiujn CSS reguloj aplikos al la tuta paĝo bazita sur 891 00:43:50,470 --> 00:43:52,100 ilia selectores. 892 00:43:52,100 --> 00:43:57,090 Do la bona maniero fari ĝin estas anstataŭ havi stilo etikedon en via kapo, 893 00:43:57,090 --> 00:44:00,430 vi havas ĉi ligilo al ekstera stilo tukon kiel mi montris al vi en la 894 00:44:00,430 --> 00:44:01,980 antaŭa ekzemplo. 895 00:44:01,980 --> 00:44:05,920 Kion tio faras estas pretendu kaj trovas la dosiero style.css kaj poste tiras gxin 896 00:44:05,920 --> 00:44:08,470 in kaj uzas tiun kiel la stiloj de la paĝo. 897 00:44:08,470 --> 00:44:10,500 Kaj via style.css farus nur aspektas kiel ĉi tio. 898 00:44:10,500 --> 00:44:13,330 Ĝi estus nur faskon de CSS. 899 00:44:13,330 --> 00:44:16,210 >> Kaj fine, estas alia vojo vi povas inkluzivi CSS, kiun vi vere 900 00:44:16,210 --> 00:44:17,480 ne devus iam fari. 901 00:44:17,480 --> 00:44:18,950 Estas alvoko inline stilo. 902 00:44:18,950 --> 00:44:22,650 Kaj tiel ajnan HTML elemento povas ankaŭ preni stilo atributo. 903 00:44:22,650 --> 00:44:26,320 Kaj tiam en tiu stilo atributo, vi povas doni ĝin CSS regulojn. 904 00:44:26,320 --> 00:44:29,140 Do, en tiu kazo, sendepende div mi estas difinanta ĝuste ĉi tie, tio okazas al 905 00:44:29,140 --> 00:44:32,580 havas nigran fonon kaj blanka teksto koloro. 906 00:44:32,580 --> 00:44:35,620 Sed vi ne devus fari tion, ĉar kio ĉi tio estas ĝi metas vian stilo 907 00:44:35,620 --> 00:44:36,850 en via HTML. 908 00:44:36,850 --> 00:44:40,530 >> Kaj mi scias, ni jam parolis pri HTML estas strukturo kaj CSS estas stilo. 909 00:44:40,530 --> 00:44:42,790 Se vi faros tion, ĝi miksas ilin kune. 910 00:44:42,790 --> 00:44:44,550 Kaj ĝi estas ne tre pura. 911 00:44:44,550 --> 00:44:45,800 Do ne fari tion. 912 00:44:45,800 --> 00:44:47,690 913 00:44:47,690 --> 00:44:52,100 Uzanta ekzemplo de CSS, tie supre, ni nur elektu la korpon de la HTML 914 00:44:52,100 --> 00:44:52,380 dokumenta filmo. 915 00:44:52,380 --> 00:44:55,110 Kaj ni estas kiel, ĉio tuj estos Comic Sans. 916 00:44:55,110 --> 00:44:57,290 Mi ankaŭ ne rekomendas tion. 917 00:44:57,290 --> 00:44:59,940 Sed vi povus fari tion. 918 00:44:59,940 --> 00:45:03,140 >> La dua regulo ĝuste ĉi tie, tio okazas elekti la elementon en la 919 00:45:03,140 --> 00:45:04,880 paĝo kun ID ĉefa. 920 00:45:04,880 --> 00:45:11,690 Do kion ajn HTML elemento, mi diris ID = Ĉefa, mi tuj donos ke 921 00:45:11,690 --> 00:45:16,020 20-rastrumero rando kaj vicigi ĉio, la tutan tekston, al la centro. 922 00:45:16,020 --> 00:45:19,030 La lasta afero selektas per CSS-klaso. 923 00:45:19,030 --> 00:45:24,450 Do ĉiu elemento en la paĝo, kiun mi donis sekcio klaso, mi tuj faros gxin 924 00:45:24,450 --> 00:45:26,602 fona koloro de lumo blua. 925 00:45:26,602 --> 00:45:29,380 926 00:45:29,380 --> 00:45:30,040 Yep. 927 00:45:30,040 --> 00:45:30,700 Jen ĉio mi atingis. 928 00:45:30,700 --> 00:45:30,890 Demandon? 929 00:45:30,890 --> 00:45:34,020 >> Spektantaro: Kion faras la etiketo antaŭ la ĉefaj fari? 930 00:45:34,020 --> 00:45:36,310 >> Angela LI: La demando estas, kion faras la etiketo antaux ĉefa do? 931 00:45:36,310 --> 00:45:40,770 En ĉi tiu kazo, la hash en CSS signifas unuaranga de ID. 932 00:45:40,770 --> 00:45:47,490 Do, se mi havis iom da HTML-elemento, kiel divID = ĉefa, ĉi CSS regulo selektu 933 00:45:47,490 --> 00:45:49,260 la afero kun ID ĉefa. 934 00:45:49,260 --> 00:45:53,940 Kaj simile, la periodo antaŭ la sekcio estas unuaranga per CSS-klaso aŭ 935 00:45:53,940 --> 00:45:56,558 selektu per HTML-klaso. 936 00:45:56,558 --> 00:46:00,940 >> Spektantaro: Kial estas tie havas antaŭ 6 en fonkoloro? 937 00:46:00,940 --> 00:46:01,270 >> Angela LI: Jes. 938 00:46:01,270 --> 00:46:03,360 Do la demando estas, kial estas tie kradon antaŭ la 6? 939 00:46:03,360 --> 00:46:05,320 Tiu estas malsama ol tiu hash. 940 00:46:05,320 --> 00:46:09,500 Tio signifas, ke vi donas deksesuma koloro. 941 00:46:09,500 --> 00:46:14,260 Do deksesumajn koloroj, tiu simple reprezentas koloron. 942 00:46:14,260 --> 00:46:17,860 Kaj vi rememoros RVB triopoj kiam vi faris la jura pset? 943 00:46:17,860 --> 00:46:18,770 Tio estas simila. 944 00:46:18,770 --> 00:46:21,590 La unuaj du ciferoj reprezentas kiom ruĝa estas en la koloro. 945 00:46:21,590 --> 00:46:23,260 La dua du reprezenti kiom verda. 946 00:46:23,260 --> 00:46:25,450 Kaj la tria reprezentas kiom blua. 947 00:46:25,450 --> 00:46:30,060 Kaj la hash estas ĉi tuj por reprezenti koloran. 948 00:46:30,060 --> 00:46:35,660 >> Do, frazoj de 0, 0, 0, 0, 0, 0 supren al F, F, F, F, F, F estas valida. 949 00:46:35,660 --> 00:46:39,550 Estas iuj valida koloro kiu povas esti montrata per via foliumilo. 950 00:46:39,550 --> 00:46:39,790 Demandon? 951 00:46:39,790 --> 00:46:43,590 >> Spektantaro: Kio estas la diferenco inter uzante de ID kaj per klaso? 952 00:46:43,590 --> 00:46:46,470 >> Angela LI: La demando estas kio estas la diferenco inter 953 00:46:46,470 --> 00:46:48,950 uzante de ID kaj klaso? 954 00:46:48,950 --> 00:46:54,390 Vi povas havi nur unu elemento en HTML-dokumenton, kiu havas donita ID. 955 00:46:54,390 --> 00:46:58,660 Do nur unu afero en mia paĝo rajtas havi ID ĉefa. 956 00:46:58,660 --> 00:47:02,580 Do vi uzu gxin por cxi tiu estas la ĉapon. 957 00:47:02,580 --> 00:47:03,850 Tiu estas la navigacio. 958 00:47:03,850 --> 00:47:05,230 Tiu estas la piedlinio. 959 00:47:05,230 --> 00:47:09,070 Klasoj estas malsamaj, ĉar vi povas apliki klasoj por tiom da HTML-elementoj 960 00:47:09,070 --> 00:47:10,100 kiel vi volas. 961 00:47:10,100 --> 00:47:15,860 >> Do ekzemple, mi faris klaso sekcio, ĉar tie estas verŝajne pli ol unu 962 00:47:15,860 --> 00:47:17,540 alineo sur mia paĝo. 963 00:47:17,540 --> 00:47:20,200 Vi simple permesis havi tiom da elementoj sur la paĝo kun la sama 964 00:47:20,200 --> 00:47:23,190 klaso sed nur kun certa identigilo. 965 00:47:23,190 --> 00:47:25,600 >> Spektantaro: Do ​​la skalara reprezentas la klaso? 966 00:47:25,600 --> 00:47:26,090 >> Angela LI: Jes. 967 00:47:26,090 --> 00:47:27,380 A dot reprezentas klaso. 968 00:47:27,380 --> 00:47:29,990 969 00:47:29,990 --> 00:47:31,540 Cool. 970 00:47:31,540 --> 00:47:32,370 Jen ĉio mi havas, knaboj. 971 00:47:32,370 --> 00:47:33,544 Dankon. 972 00:47:33,544 --> 00:48:13,380 >> [Aplaŭdo] 973 00:48:13,380 --> 00:48:14,290 >> ZAMYLA CHAN: Saluton, ĉiuj. 974 00:48:14,290 --> 00:48:14,880 Mi Zamyla. 975 00:48:14,880 --> 00:48:18,830 Mi tuj iros kovrante PHP, MVC, kaj SQL hodiaŭ. 976 00:48:18,830 --> 00:48:22,350 977 00:48:22,350 --> 00:48:26,110 Multaj de la materialo, kiun mi estos kovron tuj estos sufiĉe tre 978 00:48:26,110 --> 00:48:29,100 dekstra el pset7. 979 00:48:29,100 --> 00:48:29,700 Ĉiuj pravas. 980 00:48:29,700 --> 00:48:31,180 Do kio estas PHP? 981 00:48:31,180 --> 00:48:35,150 PHP staras por PHP Hypertext Antaŭtraktilo. 982 00:48:35,150 --> 00:48:38,740 Do, en si mem, estas rekursia nomo, kiu estas sufiĉe freŝa. 983 00:48:38,740 --> 00:48:42,220 PHP estas servilo-flanka skriptado lingvon, kaj ĝi provizas la backend 984 00:48:42,220 --> 00:48:44,610 kaj la logikan fundamenton de nia retejo. 985 00:48:44,610 --> 00:48:48,520 >> Do Angela parolis multe pri la HTML kaj CSS kiuj faros la strukturon 986 00:48:48,520 --> 00:48:49,530 de la retejo. 987 00:48:49,530 --> 00:48:53,210 Sed kion se vi volas ŝanĝi tion enhavon dinamike aŭ se ĝi varias 988 00:48:53,210 --> 00:48:55,240 surbaze de la uzanto aŭ certaj kondiĉoj? 989 00:48:55,240 --> 00:48:57,060 Tie estas kie PHP eniros 990 00:48:57,060 --> 00:49:02,610 Nun, tipe, PHP povas preni kelkajn malpli linioj por apliki la saman aferon 991 00:49:02,610 --> 00:49:07,380 en C. Tio estas ĉar PHP manipulas memoro demarŝo por la programisto, 992 00:49:07,380 --> 00:49:11,170 kontraste al ni devi malloc libera, aĵoj kiel tio. 993 00:49:11,170 --> 00:49:15,430 >> Sed ĉar PHP estas lego lingvo, tipe, ĝi povus plenumi 994 00:49:15,430 --> 00:49:19,540 iom pli malrapide ol C, kiu estas kompilitaj lingvo. 995 00:49:19,540 --> 00:49:23,150 Ĉar ni movanta programado lingvoj, ni rigardu kiamaniere la 996 00:49:23,150 --> 00:49:24,570 sintakso diferencos. 997 00:49:24,570 --> 00:49:28,770 Ni estu tre atenti ne get konfuzita kun tio. 998 00:49:28,770 --> 00:49:33,750 Do per PHP sintakso, ĉu vi estas enigo via PHP-ene de HTML 999 00:49:33,750 --> 00:49:40,430 dosiero aŭ ene. php-dosiero mem, vi bezonas cxirkauxu tiun kodon en la malfermita 1000 00:49:40,430 --> 00:49:45,270 PHP kaj la fermita PHP etikedoj kiel sekvas, same kiel sur la ekrano. 1001 00:49:45,270 --> 00:49:46,660 >> Variabloj en PHP. 1002 00:49:46,660 --> 00:49:51,490 Ĉiu unuopa variablo komencos kun la $ signo sekvata de la nomo de 1003 00:49:51,490 --> 00:49:53,150 via variablo. 1004 00:49:53,150 --> 00:49:56,530 Nun, variabloj en PHP estas lakse tajpita, kio signifas ke vi ne bezonas 1005 00:49:56,530 --> 00:50:00,030 por indiki kion la datumtipo Estas kiam vi deklaras ĝin. 1006 00:50:00,030 --> 00:50:03,505 Tamen, tio ne signifas, ke ili ne havas ajnan tipoj ajn. 1007 00:50:03,505 --> 00:50:09,370 Do, se mi deklaras variablon kaj ĝuste starigis gxi egalas al 1, kaj poste mi rakontos 1008 00:50:09,370 --> 00:50:15,140 alia variablo, starigis ĝin egala al "1", kaj tiam alia 1.0, bone, 1009 00:50:15,140 --> 00:50:19,410 depende de la tipo de egaleco operatoroj mi uzas, se mi volas kompari 1010 00:50:19,410 --> 00:50:21,830 tra ĉiuj tipoj, tiam ili devos esti egala. 1011 00:50:21,830 --> 00:50:25,570 Sed se mi volas certigi, ke la tipoj estas egalaj, PHP povas ankoraŭ fari 1012 00:50:25,570 --> 00:50:28,690 ke, eĉ se ni ne indikas kio tipo estas kiam ni 1013 00:50:28,690 --> 00:50:31,170 unue fari la dosieron. 1014 00:50:31,170 --> 00:50:33,990 >> Nun, en PHP, kvankam ni estas switching transprenis de programado 1015 00:50:33,990 --> 00:50:39,360 lingvoj de C, ni ankoraŭ havas nian fidela se kondiĉo, ĝuste kiel ĉi tio. 1016 00:50:39,360 --> 00:50:43,270 Ni ankoraux havas niajn dum masxojn, simple kiel tiu, kie vi metis en vian 1017 00:50:43,270 --> 00:50:47,300 kondiĉo kaj tiam la korpo de la ciklo. 1018 00:50:47,300 --> 00:50:50,360 Kaj tiam ni ankaŭ havos nian buklo, kiuj tipe aspektas kiel ĉi tio. 1019 00:50:50,360 --> 00:50:55,330 Do se mi volas persisti super ĉiuj naŭ psets kaj submeti kaj proklamu 1020 00:50:55,330 --> 00:50:58,960 funkcio submitPset, tiam mi povos fari tion ĉi tie, kion vi infanoj ĉiuj 1021 00:50:58,960 --> 00:50:59,830 farita de tiu punkto. 1022 00:50:59,830 --> 00:51:01,080 Gratulon, apud la vojo. 1023 00:51:01,080 --> 00:51:04,560 1024 00:51:04,560 --> 00:51:07,550 >> Por la ĉambro, personoj diris, mi dankas vin. 1025 00:51:07,550 --> 00:51:11,220 Nun, se vi ne volas simple uzi ĉi buklo, tiam PHP reale ankaŭ 1026 00:51:11,220 --> 00:51:13,580 estas aferoj alvokis foreach maŝojn. 1027 00:51:13,580 --> 00:51:22,210 Do, se mi havis aron da entjeroj, 0 tra 8, konservataj en la tabelo psets, 1028 00:51:22,210 --> 00:51:27,290 tiam mi povus havi foreach buklo ke ripetas super ĉiu nombro en psets. 1029 00:51:27,290 --> 00:51:30,640 Kaj tiam mi povis nomi la saman funkcii ok fojojn, 1030 00:51:30,640 --> 00:51:31,910 ĝuste kiel mi faris antaŭe. 1031 00:51:31,910 --> 00:51:36,480 Do ĉi por ĉiu iteracio estas agrabla, ĉar Vi ne devas, se vi ne scias, 1032 00:51:36,480 --> 00:51:39,470 la ĝusta longeco de la tabelo, ke vi ili, tiam uzanta ĉi foreach buklo 1033 00:51:39,470 --> 00:51:42,800 prizorgos, ke por vi. 1034 00:51:42,800 --> 00:51:45,410 >> Do mi faris psets kiel tabelo. 1035 00:51:45,410 --> 00:51:46,700 Ni rigardu tion. 1036 00:51:46,700 --> 00:51:51,290 Arrays en PHP estas tipe la saman kiel tiuj, kiujn ni havis en C, kie 1037 00:51:51,290 --> 00:51:52,960 vi povas deklari tabelon. 1038 00:51:52,960 --> 00:51:59,200 Kaj tie, mi povas deklari malplenan tabelo kaj do konstruu dinamike uzante 1039 00:51:59,200 --> 00:52:00,850 indeksoj kiel entjeroj. 1040 00:52:00,850 --> 00:52:04,140 Do indekso 0, mi iros por stoki entjero nomata 1. 1041 00:52:04,140 --> 00:52:09,210 Je indekso 1 el mia listo, mi tuj stoki la valoro 2. 1042 00:52:09,210 --> 00:52:12,670 Kaj je la tria indekso sed la dua numero, mi tuj 1043 00:52:12,670 --> 00:52:14,870 stoki la numeron 12. 1044 00:52:14,870 --> 00:52:17,250 >> Nun, ĉi tio estas tre bone en tiu laboras ĝi funkcias bone. 1045 00:52:17,250 --> 00:52:21,310 Sed diru tio gravas al mi, kion ĉiu indekso tenas. 1046 00:52:21,310 --> 00:52:24,500 Por mi, indekso 0 signifas kiom multaj katoj mi havas. 1047 00:52:24,500 --> 00:52:27,400 Kaj la indekso 1 signifas kiom multaj strigoj mi havas. 1048 00:52:27,400 --> 00:52:29,450 Kaj la sekvantan unu signifas kiom da hundoj. 1049 00:52:29,450 --> 00:52:34,140 Nu, tiam ĝi precizigi ke, anstataŭ devi memori 0 rilatas al 1050 00:52:34,140 --> 00:52:38,090 katojn kaj 1 por strigoj, mi povas uzi asocieca sensilo, kiu signifas, ke 1051 00:52:38,090 --> 00:52:42,260 anstataŭe de entjeroj kiel mia indeksoj, Mi povas reale uzi kordoj. 1052 00:52:42,260 --> 00:52:43,290 >> Do tio estas sufiĉe utila. 1053 00:52:43,290 --> 00:52:47,130 Kaj vi jam esence nur anstataŭis La entjeroj kun kordoj. 1054 00:52:47,130 --> 00:52:50,074 Kaj tie vi havas asocieca tabelo. 1055 00:52:50,074 --> 00:52:51,930 Jes. 1056 00:52:51,930 --> 00:52:55,800 >> Spektantaro: Ĉu ekzistas tial ekzistas an substreko por la dua 1057 00:52:55,800 --> 00:52:58,750 parton, ĉar mia listo havas la tabelo. 1058 00:52:58,750 --> 00:53:01,330 >> ZAMYLA CHAN: La demando estis, estas tie oni tial tie estas 1059 00:53:01,330 --> 00:53:03,320 substreko inter mia kaj listo? 1060 00:53:03,320 --> 00:53:03,610 N-ro 1061 00:53:03,610 --> 00:53:06,878 Tio estas ĝuste kiel mi enoficigante mia variablo. 1062 00:53:06,878 --> 00:53:11,670 >> Spektantaro: Okaze de la unua linio, ĝi estas unu vorto. 1063 00:53:11,670 --> 00:53:12,560 >> ZAMYLA CHAN: Mia pardonpeton. 1064 00:53:12,560 --> 00:53:13,410 Mi riparos tion. 1065 00:53:13,410 --> 00:53:13,620 Jes. 1066 00:53:13,620 --> 00:53:15,460 Ili devus esti la sama nomo de la variablo. 1067 00:53:15,460 --> 00:53:16,710 Bonan kaptu. 1068 00:53:16,710 --> 00:53:19,640 1069 00:53:19,640 --> 00:53:19,950 OK. 1070 00:53:19,950 --> 00:53:22,610 Do ni pluiru al ŝnuro kunmeto. 1071 00:53:22,610 --> 00:53:27,500 Se mi volis preni du kordojn, tiam mi povas concatenate ilin 1072 00:53:27,500 --> 00:53:28,550 kun la skalara operatoro. 1073 00:53:28,550 --> 00:53:32,440 Do, se mi havas Milo kiel unua nomo kaj Banano kiel familinomo, do 1074 00:53:32,440 --> 00:53:35,430 concatenando kun la skalara operatoro kaj tiam meti spacon inter 1075 00:53:35,430 --> 00:53:39,210 faros ĉeno kiu enhavas Milo Banano, kion mi povas tiam eĥo aŭ, 1076 00:53:39,210 --> 00:53:41,280 prefere, presi. 1077 00:53:41,280 --> 00:53:44,465 >> Parolante pri eĥo, ni parolu pri kelkaj utilaj - 1078 00:53:44,465 --> 00:53:44,920 oops. 1079 00:53:44,920 --> 00:53:46,030 Mi bedaŭras. 1080 00:53:46,030 --> 00:53:52,920 Kelkaj utilaj PHP funkcioj. 1081 00:53:52,920 --> 00:53:56,240 Do ni havas la - 1082 00:53:56,240 --> 00:53:57,444 teknikajn malfacilaĵojn. 1083 00:53:57,444 --> 00:53:58,694 Unu sekundo. 1084 00:53:58,694 --> 00:54:16,960 1085 00:54:16,960 --> 00:54:19,550 Mi gxin sendis. 1086 00:54:19,550 --> 00:54:22,320 PowerPoint problemojn. 1087 00:54:22,320 --> 00:54:29,200 Kaj ni estas reen kun PHP funkcioj. 1088 00:54:29,200 --> 00:54:32,010 1089 00:54:32,010 --> 00:54:35,150 Kaj ni estas reen kun PHP funkcioj. 1090 00:54:35,150 --> 00:54:39,890 >> Do ni havas la postulus funkcio, kie se vi pasas en dosiero, jen estas nur 1091 00:54:39,890 --> 00:54:43,300 ekzemplo de dosiero Mi pasu in 1092 00:54:43,300 --> 00:54:47,605 Tiam kiu komprenos la PHP-kodo de tiu dosiero, kiun mi indikos. 1093 00:54:47,605 --> 00:54:49,940 Kaj taksos ke in 1094 00:54:49,940 --> 00:54:54,450 Tiam ni havas ankaŭ eĥo, kiun estas paralela al printf. 1095 00:54:54,450 --> 00:54:57,710 Eliro estas paralela al rompi, kiu eliras la bloko de 1096 00:54:57,710 --> 00:54:58,570 kodo kiun vi in 1097 00:54:58,570 --> 00:55:03,180 Kaj poste malplenan ĉekojn ĉu donita variablo estas kiel nula aŭ nulo aŭ 1098 00:55:03,180 --> 00:55:08,482 kion ajn oni egaligas kun esti malplena. 1099 00:55:08,482 --> 00:55:09,438 Jes. 1100 00:55:09,438 --> 00:55:15,341 >> Spektantaro: Por la kordo kunmeto skalara operatoro, en PHP, estas ke la 1101 00:55:15,341 --> 00:55:20,158 sama kiel en JavaScript kie ĝi estas uzanta la skalara por kunmeto signifas pli? 1102 00:55:20,158 --> 00:55:27,440 Do por plena nomo, vi povus havi dolaro subskribi unua + kaj tiam + daŭri? 1103 00:55:27,440 --> 00:55:27,720 >> ZAMYLA CHAN: Jes. 1104 00:55:27,720 --> 00:55:32,150 Do la demando estis, cxu en PHP-ni povas uzi la saman kordo kunmeto 1105 00:55:32,150 --> 00:55:33,890 kiel en JavaScript kun la pluses. 1106 00:55:33,890 --> 00:55:35,410 Kaj Jozef estos eniras kiu poste. 1107 00:55:35,410 --> 00:55:36,620 Mi kredas li havas glito sur tio. 1108 00:55:36,620 --> 00:55:37,570 Efektive, ĝi estas malsama. 1109 00:55:37,570 --> 00:55:41,310 Do en JavaScript, vi bezonos uzi la alpago por concatenate kordoj. 1110 00:55:41,310 --> 00:55:43,280 Kaj en PHP, vi devas uzi la skalara operatoro. 1111 00:55:43,280 --> 00:55:44,530 Do ili estas malsamaj. 1112 00:55:44,530 --> 00:55:46,680 1113 00:55:46,680 --> 00:55:46,910 >> OK. 1114 00:55:46,910 --> 00:55:49,500 Do nun, ke ni jam kovris la tutan ĉi PHP, kie gxin faras 1115 00:55:49,500 --> 00:55:50,490 vere veni en oportuna? 1116 00:55:50,490 --> 00:55:54,470 Nu, temas en oportuna kiam ni povas kombini ĝin kun niaj HTML. 1117 00:55:54,470 --> 00:55:59,550 Do nia PHP donos al ni la povon por ŝanĝi paĝon la HTML enhavo antaŭ 1118 00:55:59,550 --> 00:56:00,000 lia ŝarĝo. 1119 00:56:00,000 --> 00:56:04,270 Do surbaze de malsamaj kondiĉoj, kutime la specifa uzanto tio 1120 00:56:04,270 --> 00:56:07,520 ensalutita, ni povas montri diversaj informoj. 1121 00:56:07,520 --> 00:56:08,800 Bela, ĉu vi havas demandon? 1122 00:56:08,800 --> 00:56:15,510 >> Spektantaro: Can you concatenate entjero ankaŭ? 1123 00:56:15,510 --> 00:56:16,760 >> ZAMYLA CHAN: Jes, vi povas. 1124 00:56:16,760 --> 00:56:19,530 1125 00:56:19,530 --> 00:56:23,270 Do la demando estis, se vi povas concatenate entjeroj aŭ aliaj 1126 00:56:23,270 --> 00:56:28,920 variable.s nun, ni pluiru al MVC, kiuj estas paradigma ke ni uzas en 1127 00:56:28,920 --> 00:56:33,380 pset7 kaj multajn ttt diseñadores uzas por organizi la kodon en la dosierojn 1128 00:56:33,380 --> 00:56:34,490 en sia retejo. 1129 00:56:34,490 --> 00:56:35,870 M staras por Modelo. 1130 00:56:35,870 --> 00:56:41,450 Kaj esence, modelo dosierojn temos per interagoj kun la datumbazo. 1131 00:56:41,450 --> 00:56:44,640 Rigardu dosierojn, ili rilatas al la estetiko de la retejo. 1132 00:56:44,640 --> 00:56:47,550 Kaj la Controller ansoj uzanto petoj, parses 1133 00:56:47,550 --> 00:56:49,230 datumoj, faras alian logikon. 1134 00:56:49,230 --> 00:56:52,520 >> En pset7, ni kombinis la modelon kaj la regilo. 1135 00:56:52,520 --> 00:56:55,880 Kaj ni simple nomas ilin regiloj kaj meti ilin en la publikan dosierujo. 1136 00:56:55,880 --> 00:57:01,730 Kaj la vido dosierojn, ni uzas ilin kiel ŝablonoj en la ŝablonoj dosierujo. 1137 00:57:01,730 --> 00:57:07,260 Do tiu diagramo tie reprezentas ankaŭ tiu sama speco de divido kun la 1138 00:57:07,260 --> 00:57:10,510 modelo kaj la regilo purpura ĉi tie en la maldekstra kaj 1139 00:57:10,510 --> 00:57:12,770 la vido sur la dekstra. 1140 00:57:12,770 --> 00:57:16,020 Do tiu estas grafika dokumento, ke kelkaj el vi eble vidis cxe Oficejo Horoj aŭ 1141 00:57:16,020 --> 00:57:19,130 diagramojn, ke ni estis desegno kiel vi estis elŝeligi via pset. 1142 00:57:19,130 --> 00:57:25,030 >> Do jen, en donita adaptilo, modelo adaptilo, ni havas funkcioj 1143 00:57:25,030 --> 00:57:30,490 kiuj rilatas al informpeti la SQL datumaron, ekzekutante PHP logiko. 1144 00:57:30,490 --> 00:57:32,370 Eble vi devus serĉi sako en Yahoo! 1145 00:57:32,370 --> 00:57:34,590 Financo. 1146 00:57:34,590 --> 00:57:37,390 Aŭ eble, vi estus simple kontroli por vidi ĉu la uzanto estis donita a 1147 00:57:37,390 --> 00:57:40,250 formi jam antaŭ havi vizitis vian paĝon. 1148 00:57:40,250 --> 00:57:43,390 Kaj tiam vi farus Formo super tie. 1149 00:57:43,390 --> 00:57:48,210 Post tiu formo estis donita de la uzanto, la agado kiun estis 1150 00:57:48,210 --> 00:57:53,470 specifita en la formo de HTML-etikedo indikus la artikolo, kiun ĝi 1151 00:57:53,470 --> 00:57:55,620 Revenas ke datumojn. 1152 00:57:55,620 --> 00:57:59,460 >> Do ĉiu el tiu informo estus sendita reen al via regilo. 1153 00:57:59,460 --> 00:58:02,620 Tiam vi verŝajne faras iom pli logiko en tio kaj eble faros kelkajn 1154 00:58:02,620 --> 00:58:06,510 pli pridemandojn en SQL datumbazo kaj poste, fine, venis kun bele 1155 00:58:06,510 --> 00:58:11,930 pakis aro de informo kiun vi farus Iam en en iu alia ŝablono 1156 00:58:11,930 --> 00:58:13,950 ke montriĝas, ke la informo. 1157 00:58:13,950 --> 00:58:17,030 Nu, kiel do ni efektive paki ke informo supren? 1158 00:58:17,030 --> 00:58:23,980 Nu, ni havas funkcion nomata Redonu kiu estis en la functions.php dosiero en 1159 00:58:23,980 --> 00:58:29,950 pset7, kie vi pasas en la nomo de dosiero: la nomo de ŝablono. 1160 00:58:29,950 --> 00:58:32,160 >> Kaj tiam vi ankaŭ iam en asocieca tabelo. 1161 00:58:32,160 --> 00:58:37,150 Kaj tial ke asocieca tabelo reprezentas la malsamaj informoj 1162 00:58:37,150 --> 00:58:39,040 ke vi volas pasi in 1163 00:58:39,040 --> 00:58:43,460 Nun, kio okazas al esti konstantaj en tiuj ekzemploj estas ke la klavoj aŭ, 1164 00:58:43,460 --> 00:58:47,070 pli ĝuste, la ŝlosilojn de la asocia arrays, tiuj estas kio okazas al esti 1165 00:58:47,070 --> 00:58:51,050 antaŭvideble estos konstanta per la ŝablono, ĉar scias bezonu 1166 00:58:51,050 --> 00:58:53,990 iu nomita mesaĝon aŭ nomis nomon. 1167 00:58:53,990 --> 00:58:56,940 Kaj tiam tion, je la dekstra, la realaj valoroj, do en tiu kazo, kiu estas 1168 00:58:56,940 --> 00:59:00,750 bona knabo kaj Milo, tiuj iras esti la valoroj kiuj ŝanĝiĝas 1169 00:59:00,750 --> 00:59:05,610 ke la regilo ŝanĝas ĉiufoje aŭ bazita sur certaj kondiĉoj kaj 1170 00:59:05,610 --> 00:59:07,120 pasos ke in 1171 00:59:07,120 --> 00:59:12,790 >> Do ĉi tie en ŝablonoj, ni vidas, ke ni uzas HTML-supersignoj, 1172 00:59:12,790 --> 00:59:16,370 kio ĝuste esence signifas ke ni volas por ricevi la peer kordoj, ke la 1173 00:59:16,370 --> 00:59:17,580 uzanto enmetita tien 1174 00:59:17,580 --> 00:59:20,880 Kaj ni volas anstataŭigi mesaĝon en tie. 1175 00:59:20,880 --> 00:59:26,110 Do tiam, kiam ni efektive rigardi la dosiero, la specifa 1176 00:59:26,110 --> 00:59:28,700 informoj trapasas in 1177 00:59:28,700 --> 00:59:33,850 Notu ke la ŝlosilo kiom redonu verkoj estas ke la sxlosilojn de la asocia 1178 00:59:33,850 --> 00:59:37,170 arrays, tiuj fariĝis variablo nomoj tie. 1179 00:59:37,170 --> 00:59:40,720 Kaj tial la valorojn de tiu klavo en la asocieca tabelo tiam fariĝas la 1180 00:59:40,720 --> 00:59:41,970 valoro de la variablo. 1181 00:59:41,970 --> 00:59:44,800 1182 00:59:44,800 --> 00:59:46,040 >> Nun, ni pluiru al la SQL. 1183 00:59:46,040 --> 00:59:48,010 Ĝi staras por Strukturita Query Language. 1184 00:59:48,010 --> 00:59:50,460 Kaj tiel tio estas nur programado lingvo desegnita 1185 00:59:50,460 --> 00:59:51,880 por mastrumi datumbazoj. 1186 00:59:51,880 --> 00:59:56,860 Kaj gxi eliris en oportuna por ni en nia pset7 financoj retejo. 1187 00:59:56,860 --> 01:00:00,510 Esence, ĝi estas nur facilan vojon al spuri kaj mastrumi celoj kaj tabloj 1188 01:00:00,510 --> 01:00:02,070 kaj ligi ilin al unu la alian. 1189 01:00:02,070 --> 01:00:06,860 Nun, pensu pri via SQL datumbazo esence kiel Excel dosiero, eble, 1190 01:00:06,860 --> 01:00:10,040 kun multnombraj pestañas littukojn. 1191 01:00:10,040 --> 01:00:13,820 >> Do vi povus havi plurajn tabloj, eble, ke ligita al unu la alian. 1192 01:00:13,820 --> 01:00:19,420 Kaj multe kiel Excel, ni havas multe da la funcionalidad ke ni volas. 1193 01:00:19,420 --> 01:00:22,300 Ekzemple, ni povas elekti iujn vicojn. 1194 01:00:22,300 --> 01:00:24,110 Ni povas enmeti informon. 1195 01:00:24,110 --> 01:00:25,560 Ni povas ĝisdatigi vicoj. 1196 01:00:25,560 --> 01:00:27,440 Kaj ni ankaŭ povas viŝi aferojn. 1197 01:00:27,440 --> 01:00:30,920 1198 01:00:30,920 --> 01:00:36,560 >> La SQL elektu verkoj elektante vicoj aŭ vico da specifita kolumnoj de 1199 01:00:36,560 --> 01:00:39,640 datumbaza kiuj kongruas certan kriterioj kiujn vi indikas. 1200 01:00:39,640 --> 01:00:44,930 Do ĉi tie kiam mi vidas select * de sorcxistojn kie domo = Ravenclaw, tiam 1201 01:00:44,930 --> 01:00:48,340 Mi elektanta *, kio signifas ke mi estas elektado ĉiu unuopa kolono en tiu 1202 01:00:48,340 --> 01:00:56,340 remi el la sorcxistojn tablo sed nur se la domo kolumno egalas Ravenclaw. 1203 01:00:56,340 --> 01:00:57,840 Nun, ĉi tiu estas puraj aŭ SQL. 1204 01:00:57,840 --> 01:01:02,680 Do, se mi tuj foriris en phpMyAdmin, kiu estas la specifan vojon, kiun ni uzas por mastrumi 1205 01:01:02,680 --> 01:01:07,040 nia SQL-datumbazoj, tiam mi povus enmeti ke en la phpMyAdmin retejo. 1206 01:01:07,040 --> 01:01:08,290 Kaj tio estus ekzekuti. 1207 01:01:08,290 --> 01:01:11,280 >> Sed ni vere volas fari ke sur la PHP flanko. 1208 01:01:11,280 --> 01:01:12,580 Do kiel ni faros tion? 1209 01:01:12,580 --> 01:01:20,180 Nu, ni uzas la informpeto funkcio, kiu esence ekzekutas ke SQL query. 1210 01:01:20,180 --> 01:01:21,830 Uzanta? 1211 01:01:21,830 --> 01:01:25,850 kiel lokokupilo, ni povas pasi en iun valorojn al nia kordoj, ke ni 1212 01:01:25,850 --> 01:01:26,920 volas anstataŭigi. 1213 01:01:26,920 --> 01:01:32,110 Do eble mi stokante malsamajn valorojn en la curr_house, kiuj 1214 01:01:32,110 --> 01:01:34,400 reprezentas la aktuala domo ke mi iros tra. 1215 01:01:34,400 --> 01:01:39,040 Do mi povas pasi, ke en kiel lokokupilo kun la demandosigno. 1216 01:01:39,040 --> 01:01:43,290 Kaj poste mi esence ekzekuti la samon kiel mi faris antaŭe, krom 1217 01:01:43,290 --> 01:01:45,550 nun, mi estas en PHP. 1218 01:01:45,550 --> 01:01:51,300 >> Kaj konsulto revenos an asocieca tabelo. 1219 01:01:51,300 --> 01:01:53,470 Kaj mi tuj konservas ĝin en vicoj. 1220 01:01:53,470 --> 01:01:56,880 Nun, konsulto povas ĉiam malsukcesas. 1221 01:01:56,880 --> 01:02:02,870 Eble la SQL query ne povis plenumi cxar la tabelo ne ekzistis. 1222 01:02:02,870 --> 01:02:04,310 Aŭ eble, la kolumno ne ekzistas. 1223 01:02:04,310 --> 01:02:05,400 Io misokazis. 1224 01:02:05,400 --> 01:02:08,170 Nu, en tiu kazo, vi volas fari certa, ke vi kontrolu, cxu la 1225 01:02:08,170 --> 01:02:09,700 informpeto revenis falsaj. 1226 01:02:09,700 --> 01:02:15,590 Kaj tio estas per uzo de la triobla egalas operacio tie. 1227 01:02:15,590 --> 01:02:19,660 >> Kaj poste mi pardonpetas, kio apartenas al alia CS50 funkcion, pasante en mesaĝo. 1228 01:02:19,660 --> 01:02:23,435 Kaj se vi rigardas en pardonpetas, ĉio tio vere faras estas redonu apology.php. 1229 01:02:23,435 --> 01:02:26,100 1230 01:02:26,100 --> 01:02:26,410 Jes. 1231 01:02:26,410 --> 01:02:29,630 >> Spektantaro: Ĉu vi povas klarigi kion tio stelo faras inter unuaranga kaj el? 1232 01:02:29,630 --> 01:02:30,710 >> ZAMYLA CHAN: Jes, absolute. 1233 01:02:30,710 --> 01:02:35,220 Do la stelo en inter unuaranga kaj el signifas ke mi volas elekti la tutan 1234 01:02:35,220 --> 01:02:37,440 tutan vicon de mia tablo. 1235 01:02:37,440 --> 01:02:41,900 Mi povus jam indikis unuaranga nomumi, jaro, domo. 1236 01:02:41,900 --> 01:02:46,160 Kaj mi nur ricevas tiujn tri kolumnoj en mia tablo. 1237 01:02:46,160 --> 01:02:51,560 Sed se mi diras select *, tiam Mi timige akiri ĉion en tiu kolumno. 1238 01:02:51,560 --> 01:02:53,760 Tiam mi tuj iros al vi en la dorso. 1239 01:02:53,760 --> 01:02:57,656 >> Spektantaro: Do ​​tiu estas ankoraŭ en SQL, ĉu ne? 1240 01:02:57,656 --> 01:02:59,610 Ĉu ĉi tiu konsulto aŭ trovas ĉi PHP? 1241 01:02:59,610 --> 01:03:00,550 >> ZAMYLA CHAN: Ni estas en konsulto. 1242 01:03:00,550 --> 01:03:01,940 Do tiu estas en PHP. 1243 01:03:01,940 --> 01:03:06,280 Do per la PHP-a funkcio konsulto, ni ekzekutante SQL query. 1244 01:03:06,280 --> 01:03:11,988 1245 01:03:11,988 --> 01:03:15,364 >> Spektantaro: Ĉu io en SQL uskladon, kiel elekti 1246 01:03:15,364 --> 01:03:17,834 aŭ sorĉistoj aŭ domo? 1247 01:03:17,834 --> 01:03:20,050 >> ZAMYLA CHAN: Ĉu io en SQL uskladon? 1248 01:03:20,050 --> 01:03:21,760 Mi kredas jes, jes. 1249 01:03:21,760 --> 01:03:24,620 Mi kredas, ke SELECT kaj EL Kaj kie estas uskladon. 1250 01:03:24,620 --> 01:03:25,535 Neniu? 1251 01:03:25,535 --> 01:03:27,500 >> ROB Bowden: Do, ĝi estas la malo. 1252 01:03:27,500 --> 01:03:32,030 La kolumno nomoj kaj la tablon per: ĉiuj el tiuj estas uskladon. 1253 01:03:32,030 --> 01:03:35,470 Sed neniu el la MySQL ŝlosilaj vortoj, kiel SELECT, EL, kaj KIE, tiuj ne estas 1254 01:03:35,470 --> 01:03:36,140 uskladon. 1255 01:03:36,140 --> 01:03:36,420 OK. 1256 01:03:36,420 --> 01:03:37,780 Do la malo de tio kion mi diris. 1257 01:03:37,780 --> 01:03:40,420 Do ĉiu el la MySQL ŝlosilvortoj - 1258 01:03:40,420 --> 01:03:42,670 elektu, de kie - tiuj ne inkluzivas uskladon. 1259 01:03:42,670 --> 01:03:44,630 Sed ĉio alia estas. 1260 01:03:44,630 --> 01:03:45,210 OK. 1261 01:03:45,210 --> 01:03:46,500 Vi en la fronto. 1262 01:03:46,500 --> 01:03:52,041 >> Spektantaro: Se mi $ vicoj en terminoj de pli ol unu vico, tio signifas estas 1263 01:03:52,041 --> 01:03:53,640 nur iĝas asocieca tabelo? 1264 01:03:53,640 --> 01:03:59,550 >> ZAMYLA CHAN: Do la demando estis se vicoj havas pli ol unu vico en ĝi, ne 1265 01:03:59,550 --> 01:04:01,800 ĝi fariĝis asocieca tabelo? 1266 01:04:01,800 --> 01:04:05,680 Do ĝi estas tabelo de asocia arrays jam. 1267 01:04:05,680 --> 01:04:10,730 Do eĉ se estas nur unu vico revenis, tiam vi devus iri al 1268 01:04:10,730 --> 01:04:12,690 indekso 0 de tiu rezulto. 1269 01:04:12,690 --> 01:04:15,316 Kaj tiam vi volas havi tiun unuan vicon. 1270 01:04:15,316 --> 01:04:17,482 Jes, Belinda? 1271 01:04:17,482 --> 01:04:21,258 >> Spektantaro: Kiam vi uzas ===, Estas ĉi tio la sola kazo? 1272 01:04:21,258 --> 01:04:22,210 Aŭ ĉu ekzistas aliaj? 1273 01:04:22,210 --> 01:04:26,815 >> ZAMYLA CHAN: Do, en tiu kazo, === Estas kompare trans tipoj. 1274 01:04:26,815 --> 01:04:29,870 1275 01:04:29,870 --> 01:04:34,050 Pardonon. === Estas komparo kiu komparas la tipoj. 1276 01:04:34,050 --> 01:04:37,620 Kaj poste == komparas tra ĉiuj tipoj. 1277 01:04:37,620 --> 01:04:41,620 >> Spektantaro: Cxu vi povas klarigi, kio vicoj estas en ĉi tiu situacio? 1278 01:04:41,620 --> 01:04:45,120 Ĉu remi de datuma? 1279 01:04:45,120 --> 01:04:48,100 >> ZAMYLA CHAN: En la sekvanta glito, mi estas tuj klarigos kia vicoj estas. 1280 01:04:48,100 --> 01:04:49,890 Do se vi ne gravas tenante ekstere sur tio. 1281 01:04:49,890 --> 01:04:50,620 Kaj tiam vi en la dorso? 1282 01:04:50,620 --> 01:04:54,699 >> Spektantaro: Por funkciojn kiel konsulto, redonu kaj pardonpetas [inaudibles]? 1283 01:04:54,699 --> 01:04:59,050 1284 01:04:59,050 --> 01:05:03,050 >> ZAMYLA CHAN: La demando estis ĉu tiuj funkcioj - query, senkulpigi, 1285 01:05:03,050 --> 01:05:04,510 kaj redonu - 1286 01:05:04,510 --> 01:05:05,930 estas komuna tra PHP. 1287 01:05:05,930 --> 01:05:09,460 Ĉi tiuj estas tiuj pri kiuj CS50 skribis por pset7. 1288 01:05:09,460 --> 01:05:09,910 Kaj Jay? 1289 01:05:09,910 --> 01:05:15,333 >> Spektantaro: Kiam vi bezonas diri $ _session, Estas, ke nur por IDs? 1290 01:05:15,333 --> 01:05:17,310 Aŭ vi povus esti dirinta ke ĉi tie? 1291 01:05:17,310 --> 01:05:23,440 >> ZAMYLA CHAN: Do la demando estis, kiam ni uzu $ _session, kiu estis specifa 1292 01:05:23,440 --> 01:05:25,290 malloka variablo ke ni uzas. 1293 01:05:25,290 --> 01:05:32,080 Tie ĉi tiu variablo estas tuj esti lokaj al nia funkcio. 1294 01:05:32,080 --> 01:05:36,588 Do ni simple deklarante nova variablo. 1295 01:05:36,588 --> 01:05:38,460 >> Spektantaro: Kiamaniere senkulpigi implementado? 1296 01:05:38,460 --> 01:05:40,960 >> ZAMYLA CHAN: La demando estis, kiele pardonpetas implementado? 1297 01:05:40,960 --> 01:05:44,180 Kaj mi kredas ke tiu estas vere bela bona praktiko por vi uloj por iri en 1298 01:05:44,180 --> 01:05:49,260 la functions.php sekcio kaj rigardi pardonpeti kaj vidi kiel vi povus havi 1299 01:05:49,260 --> 01:05:50,670 faris ĝin mem. 1300 01:05:50,670 --> 01:05:55,620 Do mi povas lasi tiun al vi sed nur diri ke se vi rigardas pardonpetas, 1301 01:05:55,620 --> 01:06:02,110 tiam ĝi prenas la mesaĝon, ke vi donita senkulpigi, kaj poste ĝi 1302 01:06:02,110 --> 01:06:06,570 laude tiu mesaĝo. 1303 01:06:06,570 --> 01:06:08,240 Plu demandoj? 1304 01:06:08,240 --> 01:06:08,710 Mi amas demandoj. 1305 01:06:08,710 --> 01:06:09,555 Observu do ili venas. 1306 01:06:09,555 --> 01:06:11,888 >> Spektantaro: [inaudibles] 1307 01:06:11,888 --> 01:06:13,840 echo aŭ presita tie? 1308 01:06:13,840 --> 01:06:15,900 >> ZAMYLA CHAN: La demando estis, ni ne povis ĝuste enmetis 1309 01:06:15,900 --> 01:06:17,000 echo aŭ presita tie. 1310 01:06:17,000 --> 01:06:19,710 Do kiu estus farinta ion iomete malsamaj. 1311 01:06:19,710 --> 01:06:23,750 Tio estus presita informpeto malsukcesis en tio - 1312 01:06:23,750 --> 01:06:27,420 nu, nun, ni estas vere en nia regilo. 1313 01:06:27,420 --> 01:06:30,350 Do ni ne vere havas HTML starigis tie. 1314 01:06:30,350 --> 01:06:34,946 Senkulpigi por prunti apologize.php reale alidirektilojn vin apology.php. 1315 01:06:34,946 --> 01:06:39,560 1316 01:06:39,560 --> 01:06:42,200 OK. 1317 01:06:42,200 --> 01:06:45,880 >> Do nun, ni iru al adreso la demando de antaŭaj pri kio 1318 01:06:45,880 --> 01:06:47,330 vere estas vicoj. 1319 01:06:47,330 --> 01:06:51,960 Nu, demando revenos tabelo de vicoj. 1320 01:06:51,960 --> 01:06:55,020 Kaj cxiu vico estas reprezentita per asocieca tabelo. 1321 01:06:55,020 --> 01:07:02,840 Do se mi ekzekutita iuj SQL query kaj Mi jam stokis la rezulton en vicoj, tiam 1322 01:07:02,840 --> 01:07:07,850 uzante foreach buklo, tiam la tabelo nomo estas la unua tie - vicoj. 1323 01:07:07,850 --> 01:07:13,170 Kaj poste mi iros alvoki ĉiun vicon tien $ vico. 1324 01:07:13,170 --> 01:07:20,060 >> Do ripetanta super tio, mi povas tiam aliri la donita vico nomo kolumno, 1325 01:07:20,060 --> 01:07:22,340 jaro kolumno kaj domo kolumno. 1326 01:07:22,340 --> 01:07:28,010 Notu ke mi ne povis fari tion kun vicoj, ĉar vicoj indekso 1327 01:07:28,010 --> 01:07:29,290 nomo ne ekzistas. 1328 01:07:29,290 --> 01:07:31,970 Vicoj estas nur tabelo de asocieca arrays. 1329 01:07:31,970 --> 01:07:34,870 Do vi havas du nivelojn tie. 1330 01:07:34,870 --> 01:07:37,170 Kiam vi havas la tabelo de vicoj, vi devos eniri en tio. 1331 01:07:37,170 --> 01:07:39,110 Kaj tiam vi povas aliri la kolumnoj. 1332 01:07:39,110 --> 01:07:41,636 Ĉu tio klarigi? 1333 01:07:41,636 --> 01:07:42,520 Yeah, fronte? 1334 01:07:42,520 --> 01:07:45,490 >> Spektantaro: [inaudibles] malfermi krampoj por [inaudibles]? 1335 01:07:45,490 --> 01:07:46,220 >> ZAMYLA CHAN: Pardonu? 1336 01:07:46,220 --> 01:07:49,740 >> Spektantaro: La malferma krampoj. 1337 01:07:49,740 --> 01:07:52,420 >> ZAMYLA CHAN: Tiuj ĉi tien? 1338 01:07:52,420 --> 01:07:58,520 Tio permesas al mi por inkluzivi ke variablo. 1339 01:07:58,520 --> 01:07:58,670 Jes. 1340 01:07:58,670 --> 01:08:01,900 >> Spektantaro: Kiam vi presi, estas vi videbligi al la HTML kodo? 1341 01:08:01,900 --> 01:08:03,110 >> ZAMYLA CHAN: Jes. 1342 01:08:03,110 --> 01:08:07,720 Kiam mi presas, ĉi tie estas interne mia ŝablono nun, do 1343 01:08:07,720 --> 01:08:10,310 mia vido de MVC metodo. 1344 01:08:10,310 --> 01:08:12,750 Do mi presado en la HTML. 1345 01:08:12,750 --> 01:08:16,670 >> Spektantaro: Do, se ni iris en developer iloj post kuri ĉi, ni povis 1346 01:08:16,670 --> 01:08:17,160 ke efektive en kodo? 1347 01:08:17,160 --> 01:08:18,410 >> ZAMYLA CHAN: Tio estas granda demando, jes. 1348 01:08:18,410 --> 01:08:22,359 Do se vi venis en la developer iloj en Firefox uzante Firebug aŭ 1349 01:08:22,359 --> 01:08:26,109 Chrome, tiam jes, vi povus fari vidu la specifa HTML. 1350 01:08:26,109 --> 01:08:28,470 Do tio ne pruvas $ vico ["Nomo"]. 1351 01:08:28,470 --> 01:08:32,524 Ĝi montrus ajn nomo estas en tiu vico. 1352 01:08:32,524 --> 01:08:36,268 >> Spektantaro: Just a ĝenerala temo, kio estas tr kaj td difinita kiel? 1353 01:08:36,268 --> 01:08:37,672 Kial ni [inaudibles]? 1354 01:08:37,672 --> 01:08:41,850 1355 01:08:41,850 --> 01:08:44,814 >> ZAMYLA CHAN: Tabelo vico tr, tablo tiam td kolumno. 1356 01:08:44,814 --> 01:08:48,060 1357 01:08:48,060 --> 01:08:49,310 OK. 1358 01:08:49,310 --> 01:08:55,771 1359 01:08:55,771 --> 01:08:56,835 >> Spektantaro: Jes, estas tablo datumojn. 1360 01:08:56,835 --> 01:08:58,770 >> ZAMYLA CHAN: Tabelo datumojn. 1361 01:08:58,770 --> 01:08:59,894 Jes. 1362 01:08:59,894 --> 01:09:08,670 >> Spektantaro: Ĝi estas vico en kiu la vico estas traktata kiel kolono? 1363 01:09:08,670 --> 01:09:08,910 >> ZAMYLA CHAN: Pardonu. 1364 01:09:08,910 --> 01:09:10,570 Ĉu vi povas ripeti tion? 1365 01:09:10,570 --> 01:09:14,450 >> Spektantaro: Kiel vi bildigi vicojn? 1366 01:09:14,450 --> 01:09:16,310 >> ZAMYLA CHAN: Kiel vi visualizar vicojn en kia maniero? 1367 01:09:16,310 --> 01:09:21,796 Ĉu vi parolas pri tiuj vicojn tien aŭ al la tr vicojn? 1368 01:09:21,796 --> 01:09:22,630 >> Spektantaro: La vicoj. 1369 01:09:22,630 --> 01:09:25,229 >> ZAMYLA CHAN: tiuj vicoj tie? 1370 01:09:25,229 --> 01:09:28,620 Mi volus bildigi tion kiel Mi faros mian konsulto. 1371 01:09:28,620 --> 01:09:38,729 Kaj diras, OK, mi havas ĉu 0 al n kvanto de vicoj kiuj kongruas al la kriterioj 1372 01:09:38,729 --> 01:09:40,510 ke vi estis konsulti. 1373 01:09:40,510 --> 01:09:43,740 Do mi havas kelkaj nombro de vicoj. 1374 01:09:43,740 --> 01:09:51,450 Do vicoj, la $ vicoj, butikoj ĉiu unu el tiuj vicoj en tabelo. 1375 01:09:51,450 --> 01:09:58,110 Do eĉ se estas nur unu el ili, ĝi estas ankoraŭ tabelo de vicoj kiuj kongruas ĝin. 1376 01:09:58,110 --> 01:10:03,010 >> Tial, ekzemple, ĉi tiu estas simila al kiam vi fetched 1377 01:10:03,010 --> 01:10:05,390 la kaŝmemoron de uzantoj. 1378 01:10:05,390 --> 01:10:10,810 Kaj la kriterioj ne trovis kie ID egalas la kunsido ID. 1379 01:10:10,810 --> 01:10:14,250 Tie vere nur estas unu vico kiu povus kongruas tio. 1380 01:10:14,250 --> 01:10:18,960 Sed ankoraŭ vicoj ĵus revenis unu vico. 1381 01:10:18,960 --> 01:10:22,620 Do vi devus iri al vicoj, indekso 0, indekso kaŝmemoron por 1382 01:10:22,620 --> 01:10:26,195 reale preni vian kaŝmemoron. 1383 01:10:26,195 --> 01:10:29,650 >> Spektantaro: Ĉu la presita funkcio en echo la saman aferon? 1384 01:10:29,650 --> 01:10:30,670 >> ZAMYLA CHAN: Jes. 1385 01:10:30,670 --> 01:10:31,190 Jes. 1386 01:10:31,190 --> 01:10:33,304 Presi eĥo de la sama. 1387 01:10:33,304 --> 01:10:42,400 >> Spektantaro: Ĉu la foreach buklo la sola maniero indekson en vicoj? 1388 01:10:42,400 --> 01:10:46,110 >> ZAMYLA CHAN: Estas foreach buklo la nura maniero kiun vi povas 1389 01:10:46,110 --> 01:10:47,030 persisti tra vicojn? 1390 01:10:47,030 --> 01:10:47,180 N-ro 1391 01:10:47,180 --> 01:10:51,000 Vi povas ankaŭ uzi por buklo, provizita ke vi scias la longo 1392 01:10:51,000 --> 01:10:53,024 de la vico de la tabelo. 1393 01:10:53,024 --> 01:10:58,500 >> Spektantaro: Ĉu vi povas aliri gxin uzante vico kiel [inaudibles]? 1394 01:10:58,500 --> 01:11:01,640 >> ZAMYLA CHAN: Do vi ne povas aliri gxin nur uzante vico, se vi ne havas 1395 01:11:01,640 --> 01:11:05,160 foreach buklo kondicxe ke vi ne deklaris vico. 1396 01:11:05,160 --> 01:11:08,150 1397 01:11:08,150 --> 01:11:09,660 Jes. 1398 01:11:09,660 --> 01:11:10,810 Jes, en la blanka. 1399 01:11:10,810 --> 01:11:13,990 >> Spektantaro: Do ​​kion tr kaj td fari? 1400 01:11:13,990 --> 01:11:16,790 >> ZAMYLA CHAN: Do tr kaj td estas HTML-etikedojn. 1401 01:11:16,790 --> 01:11:19,590 tr indikas la komencon de tabulo vico. 1402 01:11:19,590 --> 01:11:26,625 Kaj ĉiu td indikas nova tabelo datumoj kolumno. 1403 01:11:26,625 --> 01:11:32,275 >> Spektantaro: Por vida de kia vico Estas kiel, apenaŭ imagi la SQL, kiom 1404 01:11:32,275 --> 01:11:33,510 Ili havas unu vicon. 1405 01:11:33,510 --> 01:11:35,980 [Inaudibles]. 1406 01:11:35,980 --> 01:11:36,390 >> ZAMYLA CHAN: Jes. 1407 01:11:36,390 --> 01:11:37,630 Tio estas granda punkto. 1408 01:11:37,630 --> 01:11:41,510 Vi povas bildigi vicoj kiel justa kiel en Excel tablo, nur 1409 01:11:41,510 --> 01:11:44,540 la listo de la vicoj. 1410 01:11:44,540 --> 01:11:46,870 OK. 1411 01:11:46,870 --> 01:11:47,230 Ĉiuj pravas. 1412 01:11:47,230 --> 01:11:50,740 Do nun, ke ni jam trapasis unuaranga, se ekzistas ne plu demandoj, ni 1413 01:11:50,740 --> 01:11:52,970 transiru sur insert. 1414 01:11:52,970 --> 01:11:58,220 Do, se mi volis enmeti en iun tablo kaj enmeti iujn kolumno 1415 01:11:58,220 --> 01:12:02,320 valoroj, mi povis enmeti mem en Ravenclaw en jaro 7. 1416 01:12:02,320 --> 01:12:07,245 Sed kelkfoje povus esti duobligita valoroj, kiel ni vidis en pset7 kiam ni 1417 01:12:07,245 --> 01:12:09,240 estis ĝisdatigi nian biletujo. 1418 01:12:09,240 --> 01:12:15,610 >> Do, en tiu kazo, ni deziras uzi ON Duobligi KEY UPDATE, tiel ke ni ne 1419 01:12:15,610 --> 01:12:18,280 stoki multnombraj vicoj kun la sama taksas sed prefere ĝisdatigi ĝin. 1420 01:12:18,280 --> 01:12:21,780 1421 01:12:21,780 --> 01:12:25,560 Tiam ni efektive havis ĝisdatigo: kiu ne estas ia insert. 1422 01:12:25,560 --> 01:12:30,100 Estas nur ĝisdatigon kie vi ĝisdatigos en iu tabelo kun donita 1423 01:12:30,100 --> 01:12:34,403 kriteriojn kaj poste, fine, forigi, kio faras tre simila afero. 1424 01:12:34,403 --> 01:12:40,200 >> Spektantaro: Ĉu vi povas mallonge transiru la duobligita klavo? 1425 01:12:40,200 --> 01:12:40,850 >> ZAMYLA CHAN: Jes. 1426 01:12:40,850 --> 01:12:48,340 Esence cxi tie, mi havas INSERT INTO Gringotts, estas, galeones, tiuj valoroj. 1427 01:12:48,340 --> 01:12:56,900 Sed ID, supozeble, estas unika ŝlosilo valoro starigis en MySQL tablo. 1428 01:12:56,900 --> 01:13:06,750 Do, se mi jam estus ke ID starigis, tiam mi ne povas enmeti novan vicon. 1429 01:13:06,750 --> 01:13:10,961 Do, se ĝi ne ekzistas jam, tiam mi devas ĝisdatigi ĝin. 1430 01:13:10,961 --> 01:13:16,040 1431 01:13:16,040 --> 01:13:17,722 Meze en la blanka. 1432 01:13:17,722 --> 01:13:21,570 >> Spektantaro: Do ​​enigi, update, forigi, kaj unuaranga, estas tiuj ĉiuj haveblaj 1433 01:13:21,570 --> 01:13:22,875 loke [inaudibles]? 1434 01:13:22,875 --> 01:13:27,320 1435 01:13:27,320 --> 01:13:29,630 >> ZAMYLA CHAN: Do enigi, ĝisdatigo, forigi, kaj 1436 01:13:29,630 --> 01:13:31,120 selektu estas ĉiuj SQL mendoj. 1437 01:13:31,120 --> 01:13:34,970 Do kiam ajn vi uzas SQL, vi devos tiuj haveblas. 1438 01:13:34,970 --> 01:13:38,226 1439 01:13:38,226 --> 01:13:40,706 >> Spektantaro: Reen al la pasinteco kvizojn - 1440 01:13:40,706 --> 01:13:44,178 Estis demando kiu pritraktis se vi havus tablon kaj volis 1441 01:13:44,178 --> 01:13:52,610 enŝovu testo partituroj en unu kaj vi enmetas via nomo do ĝi ne lasos al vi 1442 01:13:52,610 --> 01:13:54,594 [Inaudibles] via amiko testo partituro. 1443 01:13:54,594 --> 01:13:59,060 Kiel vi faras tion kun insert? 1444 01:13:59,060 --> 01:14:02,490 >> ZAMYLA CHAN: Do la demando estis pri antaŭa meza termino demando. 1445 01:14:02,490 --> 01:14:04,320 Mi ne konscias pri kion unu estas nun. 1446 01:14:04,320 --> 01:14:06,790 Do eble poste, se vi volas venu, kaj montras al mi, tiam mi povos 1447 01:14:06,790 --> 01:14:08,155 certe transdonos vin bekojn. 1448 01:14:08,155 --> 01:14:11,250 1449 01:14:11,250 --> 01:14:15,460 Sed parolante de enmeto de aĵoj, kiel preni ies partituro kiam vi 1450 01:14:15,460 --> 01:14:18,800 ne, tuj parolos pri SQL injekto atakoj. 1451 01:14:18,800 --> 01:14:22,050 Do SQL injekto atako estas esence kie iu prenas 1452 01:14:22,050 --> 01:14:27,680 avantaĝo de la malalta sekureco de la maniero, ke vi prenas en datumojn. 1453 01:14:27,680 --> 01:14:35,660 >> Do ĉi tie, samkiel en CS50 financo, kiam ni ensalutinta, ni povas eniri en 1454 01:14:35,660 --> 01:14:39,510 username en la saluta formon, la unua teksta kadro, kaj 1455 01:14:39,510 --> 01:14:41,570 tiam eniras en pasvorton. 1456 01:14:41,570 --> 01:14:45,610 Eble niaj PHP kodo povus rigardi io tiamaniere, kie $ salutnomo 1457 01:14:45,610 --> 01:14:51,410 estas la post-datumoj salutnomo kaj pasvorto estas post-datumoj pasvorton. 1458 01:14:51,410 --> 01:14:55,110 Kaj tiam ni ĵus ekzekuti nia demando, ni diru, Okej, bone, nia informpeto tuj 1459 01:14:55,110 --> 01:14:57,990 elektu el niaj uzantoj, kie la uzantonomo estas la 1460 01:14:57,990 --> 01:14:58,970 kiu oni prezentis. 1461 01:14:58,970 --> 01:15:06,870 Kaj la pasvorto estas la pasvorto, signifanta, ke la pasvortoj egalas. 1462 01:15:06,870 --> 01:15:12,670 >> Nun, kio se anstataŭ reale Sendante reala pasvorton, kiel 1463 01:15:12,670 --> 01:15:16,850 12345 kaj diveni ĉe dento kiu diras pasvorto kaj klopodante pirati iliaj 1464 01:15:16,850 --> 01:15:21,460 konton, kio se anstataŭ Ili prezentis ĉi. 1465 01:15:21,460 --> 01:15:24,380 Ili povis tajpi en eble a diveno ĉe pasvorton. 1466 01:15:24,380 --> 01:15:30,480 Kaj tiam ili finus la citaĵo tiam entajpu aŭ 1 = 1. 1467 01:15:30,480 --> 01:15:35,160 Tio estus pasxadi rekte en la SQL demandi rigardi ion kiel ĉi tio. 1468 01:15:35,160 --> 01:15:38,200 Elektu el la uzantoj kie salutnomo = Puas kaj pasvorto 1469 01:15:38,200 --> 01:15:41,450 egalas lilio aŭ 1 = 1. 1470 01:15:41,450 --> 01:15:45,450 >> Do ĉu la pasvorto devas esti ĝusta aŭ 1 = 1, 1471 01:15:45,450 --> 01:15:47,870 kiu estas ĉiam vera. 1472 01:15:47,870 --> 01:15:52,780 Do, en tiu kazo, esence, uzanto povas utiligi ĉi tion kaj simple ensaluti 1473 01:15:52,780 --> 01:15:55,240 sin kaj hack ies konton. 1474 01:15:55,240 --> 01:15:58,950 Do jen kial ni volas eviti iu devi fari tion. 1475 01:15:58,950 --> 01:16:03,890 Sed bonŝance la informpeto funkcio per pasante en la anstataŭiloj prenos 1476 01:16:03,890 --> 01:16:04,800 prizorgi tion por vi. 1477 01:16:04,800 --> 01:16:08,570 Ankaŭ, vi tipe neniam volas por fakte submeti la pasvortojn 1478 01:16:08,570 --> 01:16:09,310 sin. 1479 01:16:09,310 --> 01:16:14,115 Pro tio ni hashed aŭ ĉifrita ilin en CS50 financo. 1480 01:16:14,115 --> 01:16:17,553 >> Spektantaro: La pasinteco kvizo parolis pri MySQL eskapo kordoj. 1481 01:16:17,553 --> 01:16:21,800 Ĉu ni devas zorgi pri tio? 1482 01:16:21,800 --> 01:16:22,670 >> ZAMYLA CHAN: Tio estas bona demando. 1483 01:16:22,670 --> 01:16:29,050 La MySQL-eskapo kordoj estas definitive Funkcio kiu estis uzita en nia demando. 1484 01:16:29,050 --> 01:16:30,420 Sed definitive rigardi en tio. 1485 01:16:30,420 --> 01:16:32,950 Mi dirus ke tio estas justa ludo scii ke vi bezonus voki ke 1486 01:16:32,950 --> 01:16:34,370 funkcii sur ŝnuro. 1487 01:16:34,370 --> 01:16:35,245 Yeah, Belinda? 1488 01:16:35,245 --> 01:16:38,606 >> Spektantaro: Kiel vi scias, kiam ĝi estas citiloj aux citiloj? 1489 01:16:38,606 --> 01:16:43,516 Kaj ankaŭ mi sentas min kiel en lekcio vi menciita io pri ne havi 1490 01:16:43,516 --> 01:16:48,426 la [inaudibles] aŭ iu aŭ la dua simpla citaĵo ĉe la fino. 1491 01:16:48,426 --> 01:16:56,407 1492 01:16:56,407 --> 01:17:00,825 Mi kredas ke li atentigis en prelego, ke vi supozis havi apostrofo 1 1493 01:17:00,825 --> 01:17:04,290 kaj tiam ne havas apostrofojn aŭ io. 1494 01:17:04,290 --> 01:17:05,540 >> Spektantaro: [inaudibles]. 1495 01:17:05,540 --> 01:17:14,860 1496 01:17:14,860 --> 01:17:18,657 >> Spektantaro: La afero estas la lasta sola citaĵo en tie en tiu dua skatolo 1497 01:17:18,657 --> 01:17:19,391 ne devus esti tie. 1498 01:17:19,391 --> 01:17:21,840 [Inaudibles] 1499 01:17:21,840 --> 01:17:26,730 Ĉar, kiam vi prenas tiun lastan sola citi el kaj kongruas tiujn por enhavo 1500 01:17:26,730 --> 01:17:30,522 kie la pasvorto estas, se vi havas tiun informpeto, estas sola citaĵo at 1501 01:17:30,522 --> 01:17:31,340 Fine jam. 1502 01:17:31,340 --> 01:17:36,580 Vi volas uzi tiun solan citaĵo kiel tiu kiu alfrontas la 1503 01:17:36,580 --> 01:17:37,574 [Inaudibles]. 1504 01:17:37,574 --> 01:17:42,820 Do kio estas fakte en tiu teksto skatolo ne devus havi tio. 1505 01:17:42,820 --> 01:17:44,070 >> ZAMYLA CHAN: Mi ŝanĝos tion. 1506 01:17:44,070 --> 01:17:56,490 1507 01:17:56,490 --> 01:17:56,880 OK. 1508 01:17:56,880 --> 01:18:00,435 Se tie ne estas ia demandoj, tiam Mi timige fordoni transiru al Jozef, por paroli 1509 01:18:00,435 --> 01:18:04,332 Pri Javascript, ktp. 1510 01:18:04,332 --> 01:18:09,540 >> [Aplaŭdo] 1511 01:18:09,540 --> 01:18:11,660 >> JOSEPH ONG: Do ni estas kurante iom malantaŭe. 1512 01:18:11,660 --> 01:18:13,280 Do, se vi devas lasi, ke estas OK. 1513 01:18:13,280 --> 01:18:16,540 Sed ni petas, ke vi plenumu viajn kapojn malsupren se vi estas en la mezo, do vi 1514 01:18:16,540 --> 01:18:19,560 ne blokas la ĉambron kaj vi uzos la dorso eliron, se vi devas. 1515 01:18:19,560 --> 01:18:25,010 1516 01:18:25,010 --> 01:18:26,306 Mi estas Jozef laux la vojo. 1517 01:18:26,306 --> 01:18:27,556 Saluton. 1518 01:18:27,556 --> 01:18:37,910 1519 01:18:37,910 --> 01:18:38,630 Provo, provo. 1520 01:18:38,630 --> 01:18:39,630 Dan estas la bona? 1521 01:18:39,630 --> 01:18:40,880 Cool. 1522 01:18:40,880 --> 01:18:44,460 1523 01:18:44,460 --> 01:18:47,600 >> Do la video ankaŭ estos afiŝis linio por tiuj kiuj 1524 01:18:47,600 --> 01:18:48,850 devas foriri nun. 1525 01:18:48,850 --> 01:18:51,350 1526 01:18:51,350 --> 01:18:52,600 Malgracia. 1527 01:18:52,600 --> 01:18:56,300 1528 01:18:56,300 --> 01:18:57,510 OK. 1529 01:18:57,510 --> 01:18:59,730 Do kvizo revizio. 1530 01:18:59,730 --> 01:19:00,980 Ĉi tio estas kato. 1531 01:19:00,980 --> 01:19:03,150 1532 01:19:03,150 --> 01:19:07,170 Nun, JavaScript, kiu estas eble ne kiel aww por iu el vi guys. 1533 01:19:07,170 --> 01:19:07,370 OK. 1534 01:19:07,370 --> 01:19:09,280 Do jen unue, memoras el Zamyla. 1535 01:19:09,280 --> 01:19:11,270 Memoru ke PHP estas kuri sur la servilo. 1536 01:19:11,270 --> 01:19:15,230 Kaj multajn fojojn, vi infanoj skribis masxojn en PHP presi HTML, ĉu ne? 1537 01:19:15,230 --> 01:19:19,170 Do iam tio kodo ekzekutas, ke HTML-eligo ke vi presi 1538 01:19:19,170 --> 01:19:20,500 gets sendita al la uzanto. 1539 01:19:20,500 --> 01:19:25,960 Kaj foje tio okazos, ne pli PHP povas oni kuras, krom se vi reŝarĝi la paĝon, de 1540 01:19:25,960 --> 01:19:27,660 Certe, kio reexecutes la PHP. 1541 01:19:27,660 --> 01:19:30,080 Sed iam vi presi ke HTML, vi ne povas iri ien ajn. 1542 01:19:30,080 --> 01:19:33,580 >> Por ke HTML estas transigis al la uzanto, kiu estas la retumilo super tie, kie 1543 01:19:33,580 --> 01:19:35,470 Milo estas uzanta la komputilo. 1544 01:19:35,470 --> 01:19:40,340 Kaj tiel bone, ekzistas pluraj aferoj iam ni sendu HTML por la uzanto. 1545 01:19:40,340 --> 01:19:43,350 Kelkfoje ni volas fari ion kiel kiam vi klakos sur io, ni volas 1546 01:19:43,350 --> 01:19:47,350 garde skatoloj pop up, tiuj specoj de interagoj, kiel kiam vi alklakos la 1547 01:19:47,350 --> 01:19:50,740 klavo, kiam vi klakos io en la paĝo, mi volas ion okazi. 1548 01:19:50,740 --> 01:19:54,550 Nu, vi ne povas reexecute PHP kodo fojo ke HTML estas fiksita. 1549 01:19:54,550 --> 01:19:55,900 Do kiel vi faras tion? 1550 01:19:55,900 --> 01:19:59,930 >> Ni enkondukos novan lingvon nomata Javascript, kiuj kuras en la foliumilo 1551 01:19:59,930 --> 01:20:02,890 kiu permesas vin fari tion, al HTML post vi ricevos 1552 01:20:02,890 --> 01:20:04,020 ilin de la servilo. 1553 01:20:04,020 --> 01:20:07,050 Kaj tio estas kial ni nomas ĝin kliento-flanko programlingvo. 1554 01:20:07,050 --> 01:20:09,110 Ĝi funkcias en via komputilo - 1555 01:20:09,110 --> 01:20:11,400 la kliento. 1556 01:20:11,400 --> 01:20:13,830 Demandojn pri kiuj ĝis nun? 1557 01:20:13,830 --> 01:20:15,650 Tio paradigmo sencoplena popolo? 1558 01:20:15,650 --> 01:20:16,010 OK. 1559 01:20:16,010 --> 01:20:16,790 Bona. 1560 01:20:16,790 --> 01:20:17,340 Ĉiuj pravas. 1561 01:20:17,340 --> 01:20:20,850 Do la unua afero Observi estas JavaScript estas ne PHP. 1562 01:20:20,850 --> 01:20:23,010 >> Ili havas iom malsamajn sintakso, kiuj ni iros en. 1563 01:20:23,010 --> 01:20:24,530 Kaj ili havas tre malsamajn uzojn. 1564 01:20:24,530 --> 01:20:26,640 Javascript, denove, pro via retumilo, por la kliento. 1565 01:20:26,640 --> 01:20:30,640 Servilo funkcias ie en aliulaj komputilo kiu sendas informojn 1566 01:20:30,640 --> 01:20:31,720 al vi, korekti? 1567 01:20:31,720 --> 01:20:36,730 Do, se ni petas vin skribi PHP kodo je iu ekzameno demando, ne skribu 1568 01:20:36,730 --> 01:20:38,710 JavaScript kaj inverse. 1569 01:20:38,710 --> 01:20:41,710 Vi nur perdos punktoj, kaj gxi ne estos prava. 1570 01:20:41,710 --> 01:20:43,690 >> Do ni ricevas en iun sintakso diferencoj - 1571 01:20:43,690 --> 01:20:46,140 Ĝavaskripton en la maldekstra kaj PHP dekstre. 1572 01:20:46,140 --> 01:20:48,670 La unua afero, vi rimarkos kun Javascript, ni deklaras variablojn kun 1573 01:20:48,670 --> 01:20:49,440 la var ŝlosilvorto - 1574 01:20:49,440 --> 01:20:53,590 V-A-R. PHP uzis la dolaro-signo, kiel Zamyla diskutita antaŭe. 1575 01:20:53,590 --> 01:20:57,570 Se vi volas deklari asocieca tabelo, ni vidas la familiara sintakso sur 1576 01:20:57,570 --> 01:20:59,030 la dekstra flanko kun PHP. 1577 01:20:59,030 --> 01:21:01,630 Sur la maldekstra flanko, anstataŭ vi uzas krispa krampoj. 1578 01:21:01,630 --> 01:21:03,280 Kaj tiam via ŝlosiloj estas en la maldekstra. 1579 01:21:03,280 --> 01:21:04,670 Tiam vi havas dupunkto. 1580 01:21:04,670 --> 01:21:06,560 Kaj tiam vi havas la valorojn ke vi deziras. 1581 01:21:06,560 --> 01:21:09,840 >> Do jen kiel vi devus fari ĝin en PHP sur la dekstra flanko kun tiu dua 1582 01:21:09,840 --> 01:21:10,955 Linio, kiu komenciĝas ĉe Milo. 1583 01:21:10,955 --> 01:21:14,540 Kaj tio estas kiel vi farus tion sur la maldekstra flanko en JavaScript se vi volas 1584 01:21:14,540 --> 01:21:16,110 kion ni nomas objekton. 1585 01:21:16,110 --> 01:21:19,340 Kaj objektoj en JavaScript estas nur asociaj tabeloj. 1586 01:21:19,340 --> 01:21:23,710 Do se vi volas aliri kampoj, en PHP vi uzas ĉi krampo sintakso. 1587 01:21:23,710 --> 01:21:27,170 Kaj tiamaniere, vi povos religi ĉi mastro kampo al Lauren. 1588 01:21:27,170 --> 01:21:30,150 >> Nu, en JavaScript, se oni volas konsenti kampo kaj anstatauxigi gxin, vi povas 1589 01:21:30,150 --> 01:21:31,370 uzi la skalara sintakso. 1590 01:21:31,370 --> 01:21:33,860 Vi povas ankaŭ uzi la krampo sintakso. 1591 01:21:33,860 --> 01:21:35,550 Sed vi ne povas uzi la dot sintakso en PHP. 1592 01:21:35,550 --> 01:21:36,525 Tio ne funkcios. 1593 01:21:36,525 --> 01:21:38,910 Ĝi funkcias nur en PHP. 1594 01:21:38,910 --> 01:21:42,060 Kaj fine, presi aĵojn al la konzolo, vi uzu console.log, kiuj 1595 01:21:42,060 --> 01:21:43,720 you guys uzi multon en pset8. 1596 01:21:43,720 --> 01:21:45,260 Vi povas console.log tio. 1597 01:21:45,260 --> 01:21:50,030 >> Se vi volas presi tabelo en PHP, vi devas uzi print r. 1598 01:21:50,030 --> 01:21:53,240 Kaj sur la dekstra flanko, vi vidos i hash kordo kunmeto tie. 1599 01:21:53,240 --> 01:21:54,070 Iu demandis pli frue. 1600 01:21:54,070 --> 01:21:55,850 Mi uzu pli en JavaScript. 1601 01:21:55,850 --> 01:21:59,800 Se mi volas concatenate ion en PHP, mi uzas la punkton. 1602 01:21:59,800 --> 01:22:00,800 Ĉi tiuj estas aliaj. 1603 01:22:00,800 --> 01:22:03,420 Se vi skribas PHP-kodo, ne uzu alpago. 1604 01:22:03,420 --> 01:22:06,810 Se vi skribas JavaScript kodo, ne skribu punkto. 1605 01:22:06,810 --> 01:22:08,230 Estos malbone. 1606 01:22:08,230 --> 01:22:09,640 Kaj vi estos malgaja. 1607 01:22:09,640 --> 01:22:11,000 >> Do sintakso diferencoj. 1608 01:22:11,000 --> 01:22:14,710 Sciu vian sintakso, ĉar se oni devas skribi demandon kaj vi uzas sintakson 1609 01:22:14,710 --> 01:22:16,890 el la malĝusta lingvon, ĝi ne funkcios. 1610 01:22:16,890 --> 01:22:19,520 Kaj tio estos malĝusta. 1611 01:22:19,520 --> 01:22:22,420 Do ni parolu pri iuj kontrolo flui diferencoj, kiel vi uzos 1612 01:22:22,420 --> 01:22:24,040 loops en ĉiu el ili. 1613 01:22:24,040 --> 01:22:26,610 Zamyla foriris trans la dekstra flanko. 1614 01:22:26,610 --> 01:22:27,780 Stuff sur la dekstra flanko devus esti konata. 1615 01:22:27,780 --> 01:22:29,670 Ni rigardu sur la maldekstra flanko. 1616 01:22:29,670 --> 01:22:34,830 >> Kiam vi uzas por n buklo en JavaScript, via buklo variablo, var i tien, 1617 01:22:34,830 --> 01:22:37,210 buklo super la sxlosilojn de la tabelo. 1618 01:22:37,210 --> 01:22:39,150 Do vi vidas nomon, domon, kaj rolo. 1619 01:22:39,150 --> 01:22:42,440 Se mi console.log i, I get nomo, domon, kaj rolo. 1620 01:22:42,440 --> 01:22:44,720 Tiuj estas la ŝlosilojn. 1621 01:22:44,720 --> 01:22:50,080 En JavaScript, a foreach buklo iras super la valoroj de tiu tabelo. 1622 01:22:50,080 --> 01:22:52,040 Do vi rimarkos ke ili estas ambaŭ i. 1623 01:22:52,040 --> 01:22:56,000 Sed ĉi tie sur la PHP-flanko, presas el Milo, CS50 kaj Maskoto. 1624 01:22:56,000 --> 01:22:57,390 Tiuj estas la valoroj en PHP. 1625 01:22:57,390 --> 01:23:00,180 >> Do jen estas kiel tiuj du estas malsamaj en la diversaj lingvoj. 1626 01:23:00,180 --> 01:23:02,970 Do se vi estas uzanta foreach buklo, ne supozu, ke tio 1627 01:23:02,970 --> 01:23:03,760 donas al vi la ŝlosilojn. 1628 01:23:03,760 --> 01:23:08,010 Kaj se vi uzas por n buklo, ne faru supozi donas al vi la valoroj. 1629 01:23:08,010 --> 01:23:10,420 Ĉu tio havas sencon ĝis nun? 1630 01:23:10,420 --> 01:23:13,630 La sekva slide tuj montros al vi kiel vi povas aliri la malon en 1631 01:23:13,630 --> 01:23:15,160 ĉiu el ili. 1632 01:23:15,160 --> 01:23:18,550 >> Nu, se vi havas la ŝlosilon en JavaScript kaj vi volas ke la valoro eksteren, 1633 01:23:18,550 --> 01:23:20,440 vi simple indekson en la tabelo kun tio. 1634 01:23:20,440 --> 01:23:23,640 Do Milo de i akiros al vi, kion vi volas - la valoroj. 1635 01:23:23,640 --> 01:23:25,260 Tie estas tio malsamaj sintakso en PHP. 1636 01:23:25,260 --> 01:23:28,140 Se vi vere volas scii ĝin, mi ne faras kredas ke ni jam montris ĝin al vi ankoraŭ. 1637 01:23:28,140 --> 01:23:31,740 Sed se vi estas interesita, vi povas uzi tiu plia sintakso sur la dekstra 1638 01:23:31,740 --> 01:23:35,130 flanko kiu efektive lasu vin akiri la klavoj en PHP, kiam vi uzas a 1639 01:23:35,130 --> 01:23:35,880 foreach buklo. 1640 01:23:35,880 --> 01:23:39,640 Do nur iom da vidindaĵoj se vi interesiĝas. 1641 01:23:39,640 --> 01:23:42,630 >> Do tio estas nur por pruvi la diferencoj inter tiuj du maŝojn. 1642 01:23:42,630 --> 01:23:47,060 Ne miksi ilin supren, kiam vi estas programado demandon. 1643 01:23:47,060 --> 01:23:49,774 Demandojn pri tio. 1644 01:23:49,774 --> 01:23:50,770 Cool. 1645 01:23:50,770 --> 01:23:51,310 Ĉiuj pravas. 1646 01:23:51,310 --> 01:23:52,250 Javascript celoj. 1647 01:23:52,250 --> 01:23:53,040 Mi parolis pri ili. 1648 01:23:53,040 --> 01:23:54,650 Ili estas kiel asociaj tabeloj. 1649 01:23:54,650 --> 01:23:57,730 La unu aferon mi ŝatus ke vi rimarku ĉi tie estas ke valoro en asocia 1650 01:23:57,730 --> 01:23:59,540 tabelo povas esti nenio en JavaScript. 1651 01:23:59,540 --> 01:24:02,240 >> Ĝi eĉ povas esti funkcio, kiel tie. 1652 01:24:02,240 --> 01:24:04,600 Mi havas funkcion kiu estas valoro de klavo. 1653 01:24:04,600 --> 01:24:07,030 Kaj se mi volas nomi tiun funkcion, Mi nur aliri ŝelon. 1654 01:24:07,030 --> 01:24:08,490 Kaj poste mi metis la krampoj post tio. 1655 01:24:08,490 --> 01:24:09,790 Kaj tio funkcias. 1656 01:24:09,790 --> 01:24:15,570 Do demandojn? 1657 01:24:15,570 --> 01:24:16,370 Neniu? 1658 01:24:16,370 --> 01:24:16,650 OK. 1659 01:24:16,650 --> 01:24:18,190 Bona. 1660 01:24:18,190 --> 01:24:20,130 Javascript, kiel PHP, estas pigre tajpita. 1661 01:24:20,130 --> 01:24:20,970 Kion tio signifas? 1662 01:24:20,970 --> 01:24:22,380 >> Ĝi ja havas tipoj. 1663 01:24:22,380 --> 01:24:24,800 Sed kiam vi deklaras JavaScript variablo, vi diras var i. 1664 01:24:24,800 --> 01:24:25,850 Vi ne parolu. 1665 01:24:25,850 --> 01:24:26,460 Tio ne estas afero. 1666 01:24:26,460 --> 01:24:28,000 Vi nur diras ke estas variablo. 1667 01:24:28,000 --> 01:24:31,590 Kaj tiam JavaScript manipulos la tipoj sub la kapuĉo por vi. 1668 01:24:31,590 --> 01:24:34,390 Ni povas libere konverti inter tipoj pro tio. 1669 01:24:34,390 --> 01:24:37,360 Do mi komencas kiel nombro en ĉi tiu kazo. 1670 01:24:37,360 --> 01:24:38,790 Kaj tiam mi havas ĉenon. 1671 01:24:38,790 --> 01:24:39,710 Kaj mi aldonu i al tio. 1672 01:24:39,710 --> 01:24:41,810 Kaj mi religi ĝin denove en i. 1673 01:24:41,810 --> 01:24:43,640 >> Do en tiu unua linio, i estas la nombro. 1674 01:24:43,640 --> 01:24:47,310 Sur la dua linio, i nun iĝas kordo post mi faras la reasignación. 1675 01:24:47,310 --> 01:24:52,820 Kaj tie, mi simple concatenando tiun ciferon sur la kordo. 1676 01:24:52,820 --> 01:24:56,210 Do vi vidas, ke kvankam i estis entjero en la unua parto, ĝi estas speco 1677 01:24:56,210 --> 01:24:58,500 de kiel esti konvertita al ŝnuro kaj tiam esti aldonitaj 1678 01:24:58,500 --> 01:25:00,510 sur tiu saluton kordo. 1679 01:25:00,510 --> 01:25:02,340 Kaj do, tio estas kion mi volas diri per la nefiksitaj tajpadon. 1680 01:25:02,340 --> 01:25:04,760 Tio estas, ke vi konverti inter tipoj tre facile. 1681 01:25:04,760 --> 01:25:08,840 Kaj ne ĵetas avertoj ĉe vi ŝatas C faras. 1682 01:25:08,840 --> 01:25:12,420 >> Do mi nun entenas saluton 123 al la kordo. 1683 01:25:12,420 --> 01:25:13,270 Sekva. 1684 01:25:13,270 --> 01:25:15,610 Ni povas ankaux libere kompari inter tipoj. 1685 01:25:15,610 --> 01:25:19,310 Do, se vi simple uzu ==, tre multe kiel en PHP, JavaScript 1686 01:25:19,310 --> 01:25:20,480 faras similan aferon. 1687 01:25:20,480 --> 01:25:24,780 La kordoj 123 estas la sama kiel la nombro 123 kiam vi uzas duoblan egaluloj. 1688 01:25:24,780 --> 01:25:27,820 Kiam uzata triobla egaluloj, ĝi ankaŭ volas certigi ke 1689 01:25:27,820 --> 01:25:29,240 la tipo estas la sama. 1690 01:25:29,240 --> 01:25:31,960 Do pro tio ke estas ĉeno kaj tio estas nombro, eĉ kvankam ili ambaŭ estas 1691 01:25:31,960 --> 01:25:35,280 123, kiam vi uzas triobla egalas, vi ricevas falsaj. 1692 01:25:35,280 --> 01:25:39,330 En la duobla egalas kazo, vi ricevas vera, ĉar duoblan egaluloj ne 1693 01:25:39,330 --> 01:25:40,020 zorgas pri tipo. 1694 01:25:40,020 --> 01:25:42,500 Triobla egaluloj ne zorgas pri tipo. 1695 01:25:42,500 --> 01:25:43,750 Demandojn? 1696 01:25:43,750 --> 01:25:45,790 1697 01:25:45,790 --> 01:25:48,390 OK. 1698 01:25:48,390 --> 01:25:52,870 >> Kaj alia afero pri JavaScript estas medio estas speco de tutmonda, krom se vi estas 1699 01:25:52,870 --> 01:25:53,460 en funkcio. 1700 01:25:53,460 --> 01:25:55,660 Kaj ĝi funkcias same vojon en PHP reale. 1701 01:25:55,660 --> 01:25:57,500 Do ni iru tra tiu ekzemplo. 1702 01:25:57,500 --> 01:25:59,110 Mi starigis inter mi kaj 999. 1703 01:25:59,110 --> 01:26:00,900 Kaj poste mi iros al tiu por buklo. 1704 01:26:00,900 --> 01:26:06,110 Do se mi presado i eliris en tiu por buklo, mi atendas 0, 1, 2, 3, 4. 1705 01:26:06,110 --> 01:26:07,390 Mi alvenas al mi = 4. 1706 01:26:07,390 --> 01:26:10,770 Ĝi pliigas i nun al 5 at la finon de la buklo. 1707 01:26:10,770 --> 01:26:13,300 Kaj tiam ĝi rompas el la maŝo, ĉar ne plenumas la 1708 01:26:13,300 --> 01:26:14,550 kondiĉi plu. 1709 01:26:14,550 --> 01:26:16,650 >> Kion vi opinias, ke apud console.log presas ekstere? 1710 01:26:16,650 --> 01:26:20,570 1711 01:26:20,570 --> 01:26:24,790 Do, tio estas kion li farus en C. En C, ĉar se vi havas kiel var i ekstere 1712 01:26:24,790 --> 01:26:28,855 kaj vi devas var i ene de buklo, kiel buklo, tiam ĝi faras tiaj ke 1713 01:26:28,855 --> 01:26:30,690 ĝi estas scoped ke la du i informoj estas malsamaj. 1714 01:26:30,690 --> 01:26:34,630 En JavaScript, gxi simple trakti ĝin kiel la samaj i. 1715 01:26:34,630 --> 01:26:37,870 Mi ricevas 5, ĉar tiu estis la valoro post kiam ĝi eliris el la iteracio. 1716 01:26:37,870 --> 01:26:39,120 Do tiuj i informoj estas la sama i. 1717 01:26:39,120 --> 01:26:42,620 1718 01:26:42,620 --> 01:26:44,130 Ĉu tio havas sencon? 1719 01:26:44,130 --> 01:26:45,720 >> Nu, tio havas sencon de JavaScript starpunkto. 1720 01:26:45,720 --> 01:26:49,510 Sed la sama paradigmo ne porti super al C. Ili havas 1721 01:26:49,510 --> 01:26:50,310 malsamaj scoping regulojn. 1722 01:26:50,310 --> 01:26:50,630 Jes. 1723 01:26:50,630 --> 01:26:52,566 >> Spektantaro: [inaudibles] 1724 01:26:52,566 --> 01:26:54,990 ekster la funkcio [inaudibles]? 1725 01:26:54,990 --> 01:26:58,340 >> JOSEPH ONG: Do ekster kiu funkcio? 1726 01:26:58,340 --> 01:27:00,810 Do mi devos akiri al tio en nur la duan. 1727 01:27:00,810 --> 01:27:02,580 Do ni nomas foo (i). 1728 01:27:02,580 --> 01:27:06,920 Ĉi pasas i en foo, pliigoj ĝin, kaj poste registras gxin. 1729 01:27:06,920 --> 01:27:07,750 Tiel okazis, 5. 1730 01:27:07,750 --> 01:27:09,210 Do ĝi iĝas 6. 1731 01:27:09,210 --> 01:27:11,670 Sed kio mi parolas estas ke i en tiu funkcio. 1732 01:27:11,670 --> 01:27:14,430 Ĉar ĝi estas parametro, ĝi estas scoped por tiu funkcio. 1733 01:27:14,430 --> 01:27:17,800 Do iam mi reale preni el tiu funkcio, ĝi estas nun tuj iros 1734 01:27:17,800 --> 01:27:19,860 reen al la malnova i. 1735 01:27:19,860 --> 01:27:23,000 Tio i estas nur scoped ĉar ĝi estas en funkcio. 1736 01:27:23,000 --> 01:27:24,200 Kaj ni havas atingon kaj funkcioj. 1737 01:27:24,200 --> 01:27:29,080 Sed ni ne havas atingon ekstere de funkcioj en JavaScript. 1738 01:27:29,080 --> 01:27:31,170 Ĉu tio havas sencon? 1739 01:27:31,170 --> 01:27:31,320 Jes. 1740 01:27:31,320 --> 01:27:31,660 Demando. 1741 01:27:31,660 --> 01:27:34,030 >> Spektantaro: Sama [inaudibles]? 1742 01:27:34,030 --> 01:27:34,500 >> JOSEPH ONG: Do jes. 1743 01:27:34,500 --> 01:27:36,260 En PHP, ĝi estas la sama tipo de afero. 1744 01:27:36,260 --> 01:27:37,680 Tie estas malpeza subtileco en la praktiko. 1745 01:27:37,680 --> 01:27:40,130 Sed vi povas demandi min pri ke post la revizio. 1746 01:27:40,130 --> 01:27:43,930 Vi ne vere necesas scii ke subtileco por la kvizo. 1747 01:27:43,930 --> 01:27:47,600 Por iuj celoj, kiel variabloj, tutmondaj kaj PHP, krom se 1748 01:27:47,600 --> 01:27:49,150 Ili estas en funkcio, sama afero en JavaScript. 1749 01:27:49,150 --> 01:27:49,480 Jes. 1750 01:27:49,480 --> 01:27:52,890 >> Spektantaro: Kial ĉi tio permesis en JavaScript kaj neniu kie alie? 1751 01:27:52,890 --> 01:27:55,010 >> JOSEPH ONG: Do kial ĝi permesis en JavaScript kaj ne en C? 1752 01:27:55,010 --> 01:27:58,180 Ĝi estas nur iu, kiu venis kun Javascript decidis ke tio OK en 1753 01:27:58,180 --> 01:27:59,510 Javascript. 1754 01:27:59,510 --> 01:28:02,430 Do ĝi estas ĵus kiel programlingvo konvencio kiel ni dirus. 1755 01:28:02,430 --> 01:28:02,580 Jes. 1756 01:28:02,580 --> 01:28:04,480 >> Spektantaro: Do ​​kial faris lin foriri de 6 al 5? 1757 01:28:04,480 --> 01:28:08,280 >> JOSEPH ONG: Tiel iris de 6 al 5, ĉar kiam mi preterpasis i en foo, ke 1758 01:28:08,280 --> 01:28:13,420 i interne de foo nun scoped al foo, ĉar medion ekzistas en funkcioj en 1759 01:28:13,420 --> 01:28:15,050 Javascript. 1760 01:28:15,050 --> 01:28:18,720 Sed iam mi eliros el ĉi tie, ĉar ĝi Estis scoped al la funkcio, mi estas nur 1761 01:28:18,720 --> 01:28:24,300 uzante la regula i tiu estis ene la resto de la kontrolo de fluo. 1762 01:28:24,300 --> 01:28:25,210 Havas sencon? 1763 01:28:25,210 --> 01:28:26,910 Ĉu mi povas pluiri? 1764 01:28:26,910 --> 01:28:27,320 Ĉiuj pravas. 1765 01:28:27,320 --> 01:28:29,180 Cool. 1766 01:28:29,180 --> 01:28:31,890 >> La akcepto de tio estas objektoj ili preteriris referenco. 1767 01:28:31,890 --> 01:28:33,990 Vi scias, kiel kiam vi transiros tabelo en C vi povis 1768 01:28:33,990 --> 01:28:35,810 efektive modifas la tabelo? 1769 01:28:35,810 --> 01:28:37,350 Ĝi estas la sama afero en JavaScript. 1770 01:28:37,350 --> 01:28:42,960 Se mi pasos objekto, en tiu kazo, mi pasis Milo en tiun catify funkcio. 1771 01:28:42,960 --> 01:28:44,490 Milo komencu. 1772 01:28:44,490 --> 01:28:46,310 Lia nomo estas Milo Banano. 1773 01:28:46,310 --> 01:28:51,670 Mi preterpasonta objekto enen funkcio ĉar ĝi estas objekto, asocieca 1774 01:28:51,670 --> 01:28:53,730 tabelo en JavaScript. 1775 01:28:53,730 --> 01:28:57,110 >> Kiam mi plenumos operacio en tiu funkcio, ĝi volas 1776 01:28:57,110 --> 01:28:58,560 efektive ŝanĝas la objekton. 1777 01:28:58,560 --> 01:29:01,720 Do ĉi tio nur okazos por objektoj en JavaScript, simple plaĉas okazas 1778 01:29:01,720 --> 01:29:09,230 por arrays ene de C. Do Milo nomo efektive fariĝis kato nun. 1779 01:29:09,230 --> 01:29:10,090 Ĉu tio havas sencon? 1780 01:29:10,090 --> 01:29:11,840 Do tio nur funkcias por objektoj. 1781 01:29:11,840 --> 01:29:13,090 Celoj estas pasitaj per referenco. 1782 01:29:13,090 --> 01:29:13,400 Jes. 1783 01:29:13,400 --> 01:29:16,850 >> Spektantaro: Do ​​vi diras, ke en kontrasto al variablo i. 1784 01:29:16,850 --> 01:29:17,240 >> JOSEPH ONG: Jes. 1785 01:29:17,240 --> 01:29:20,330 Kiu variablo i estis nur nombro, ĉu ne? 1786 01:29:20,330 --> 01:29:25,280 Estas kiel en C, kiam vi transiros an entjero a, ĝi faras kopion. 1787 01:29:25,280 --> 01:29:28,130 Kaj kiam vi transiros tabelo, ĝi reale ŝanĝas la efektiva tabelo en 1788 01:29:28,130 --> 01:29:32,870 C. La sama afero okazas kun Javascript en tiu kazo. 1789 01:29:32,870 --> 01:29:34,070 Ĉiuj pravas. 1790 01:29:34,070 --> 01:29:38,134 Kaj apud, Milo estas malĝoja pro Li estas nun kato. 1791 01:29:38,134 --> 01:29:40,790 1792 01:29:40,790 --> 01:29:45,060 Tio estis efektive Milo post iuj vojaĝo al la veterinaro. 1793 01:29:45,060 --> 01:29:46,860 >> Do kiel ni uzas JavaScript en TTT-paĝo? 1794 01:29:46,860 --> 01:29:47,790 Ni povas inkluzivi ĝin. 1795 01:29:47,790 --> 01:29:50,090 Tiu estas la HTML kodo kun la strio etikedojn. 1796 01:29:50,090 --> 01:29:51,300 Do mi havas strion etikedoj tie. 1797 01:29:51,300 --> 01:29:54,820 Kaj tiam mi metos kelkajn JavaScript kodo ene de la skripto etikedojn. 1798 01:29:54,820 --> 01:29:56,390 Kaj tiam ĝi ekzekutas ĉi. 1799 01:29:56,390 --> 01:29:58,830 Kiam mi nur faros gxin kiel tiu, ĝi estas vokis inline JavaScript. 1800 01:29:58,830 --> 01:30:02,400 Ĝi estas speco de senorda, ĉar la Javascript estas vere en la HTML. 1801 01:30:02,400 --> 01:30:07,010 >> Al bona maniero por fari tion, des pli afabla, estas skribi vian JavaScript en 1802 01:30:07,010 --> 01:30:10,920 eksteran dosieron kaj poste provizi la skripto etikedon kun fonto. 1803 01:30:10,920 --> 01:30:14,920 Kaj tiu iros al tiu JavaScript dosieron kaj legu la kodo JavaScript el 1804 01:30:14,920 --> 01:30:15,960 ke dosieron anstataŭe. 1805 01:30:15,960 --> 01:30:18,820 Kaj tiamaniere, vi ne havas multe da Javascript komence de viaj 1806 01:30:18,820 --> 01:30:20,760 HTML-dosiero, kion faras gxi vere senorda. 1807 01:30:20,760 --> 01:30:21,860 Vi nur metis ĝin ie ajn. 1808 01:30:21,860 --> 01:30:24,310 Kaj tiam ĝi legos ĝin de tie. 1809 01:30:24,310 --> 01:30:25,560 Ĉu tio sencas? 1810 01:30:25,560 --> 01:30:27,990 1811 01:30:27,990 --> 01:30:29,640 >> Lokigo aferoj. 1812 01:30:29,640 --> 01:30:32,620 En tiu aparta kazo, la skripto estas antaŭ la korpo. 1813 01:30:32,620 --> 01:30:36,090 Do kiam mi faros tion, ne estas nenio en la korpo ankoraŭ. 1814 01:30:36,090 --> 01:30:39,920 Eble ĉi tio faros iom pli sentas kiam mi montras ĉi sekva parto. 1815 01:30:39,920 --> 01:30:43,210 En ĉi tiu kazo, la skripto venas post la div. 1816 01:30:43,210 --> 01:30:46,620 Do la div efektive aperas sur la paĝo unue. 1817 01:30:46,620 --> 01:30:49,470 Ĝuste ĉi tie en ĉi tiu malgranda ruĝa rondo, vi vidas la teksto aperas. 1818 01:30:49,470 --> 01:30:51,810 Kaj tiam la garde montras supren. 1819 01:30:51,810 --> 01:30:54,890 >> En la unua kazo, ĉar la skripto Antaux la div, la 1820 01:30:54,890 --> 01:30:56,170 garde montras supren unue. 1821 01:30:56,170 --> 01:30:59,250 Kaj tiam la div montras supren post vi adiaŭas la skatolo. 1822 01:30:59,250 --> 01:31:01,330 Do la ekzekuto gravas. 1823 01:31:01,330 --> 01:31:02,290 Do ni observu ĉi tion en menso. 1824 01:31:02,290 --> 01:31:03,640 Tiu estos grava en iomete. 1825 01:31:03,640 --> 01:31:08,730 1826 01:31:08,730 --> 01:31:09,540 OK. 1827 01:31:09,540 --> 01:31:12,750 Do bone, kiel vi atendos ĝis la tuta paĝo estas ŝarĝita tiam antaux vi 1828 01:31:12,750 --> 01:31:13,580 ekzekuti iu kodo? 1829 01:31:13,580 --> 01:31:15,540 Ni ricevos en ĉi tiu iom iom poste ankaŭ. 1830 01:31:15,540 --> 01:31:19,016 Sed ĝuste teni ĉi investo aferoj en menso por kiam ni 1831 01:31:19,016 --> 01:31:20,570 veni al alia glito. 1832 01:31:20,570 --> 01:31:22,030 >> Do ni atingos DOM nun. 1833 01:31:22,030 --> 01:31:23,550 Kaj kio estas DOM? 1834 01:31:23,550 --> 01:31:26,830 Do, se vi rigardas la HTML kodo, estas nur faskon da teksto sur la ekrano. 1835 01:31:26,830 --> 01:31:30,560 Do kiel JavaScript scii ke tio estas HTML elemento? 1836 01:31:30,560 --> 01:31:33,410 Do ni devas havi iun memoron reprezento de tiu 1837 01:31:33,410 --> 01:31:34,930 strukturo kiun ni havas. 1838 01:31:34,930 --> 01:31:40,240 Kaj kiam ni havas ĉi tion en la memoro reprezenton en JavaScript, ni nomas 1839 01:31:40,240 --> 01:31:41,750 ke la DOM. 1840 01:31:41,750 --> 01:31:45,130 Kaj tio estas nur maniero ke homoj decidis ke ni devus reprezenti ĉi 1841 01:31:45,130 --> 01:31:46,400 HTML-strukturon kiel. 1842 01:31:46,400 --> 01:31:47,940 >> Kaj kion signifas ĉi DOM aspekti? 1843 01:31:47,940 --> 01:31:50,460 Nu, en memoro reprezento, ni prenu tiun tekston. 1844 01:31:50,460 --> 01:31:52,870 Kaj ni igi ĝin memoro reprezento. 1845 01:31:52,870 --> 01:31:54,400 Do tiu estas la HTML. 1846 01:31:54,400 --> 01:31:58,090 Do ni unue eltrovi, ke ĉiu DOM arbo havas dokumenton. 1847 01:31:58,090 --> 01:31:59,400 Ĝi aspektas kiel arbo. 1848 01:31:59,400 --> 01:32:03,550 Kaj la dokumento entenas la HTML etikedo, efektive ĉio 1849 01:32:03,550 --> 01:32:05,150 ene de ĉi nun. 1850 01:32:05,150 --> 01:32:06,970 La HTML-etikedo havas du infanoj. 1851 01:32:06,970 --> 01:32:08,630 Ĝi havas kapon. 1852 01:32:08,630 --> 01:32:12,380 Tio kapo, se vi rigardas deŝovon tie ĉe kiel ĝi estas strukturita 1853 01:32:12,380 --> 01:32:14,960 inter la proksimaj etikedoj, kapo havas infanon. 1854 01:32:14,960 --> 01:32:17,130 La infano estas titolo. 1855 01:32:17,130 --> 01:32:18,370 Ekzakte. 1856 01:32:18,370 --> 01:32:21,000 >> Nun, ni havas korpon infano. 1857 01:32:21,000 --> 01:32:24,870 Kaj tiam tiu korpo havas infano nomata familio. 1858 01:32:24,870 --> 01:32:27,950 Kaj tiu familio havas tri filojn - 1859 01:32:27,950 --> 01:32:29,550 malnova, meza, kaj la plej juna. 1860 01:32:29,550 --> 01:32:31,960 Do vi devus scii kiel desegni diagramon kiel tiu, kiam ni demandas vin kiom 1861 01:32:31,960 --> 01:32:34,270 desegni diagramon kiam ni donu vi la HTML maldekstre. 1862 01:32:34,270 --> 01:32:36,350 Scias kiel produkti la DOM arbo. 1863 01:32:36,350 --> 01:32:38,930 Kaj ene de tiuj aferoj, ne nur iu teksto, kiun mi reprezentis 1864 01:32:38,930 --> 01:32:40,180 kiel iom skatoloj. 1865 01:32:40,180 --> 01:32:42,750 1866 01:32:42,750 --> 01:32:47,980 >> Ĉu tio DOM arbo strukturo fari senco kaj kion la DOM estas? 1867 01:32:47,980 --> 01:32:49,300 Do kion signifas la p stand for? 1868 01:32:49,300 --> 01:32:51,850 Ĉi tie, la p tien en tiu etikedo reprezentas 1869 01:32:51,850 --> 01:32:54,510 alineo etikedon en HTML. 1870 01:32:54,510 --> 01:32:57,080 Do vi povas rigardi ĝin. 1871 01:32:57,080 --> 01:32:59,290 Sed tio nur signifas ke ĝi estas iom spaco por iu teksto. 1872 01:32:59,290 --> 01:33:02,910 Kaj ĝi havas iujn defaŭlta CSS stilo, ĉar ĝi estas paragrafo etikedo. 1873 01:33:02,910 --> 01:33:05,130 Sed ne vere maltrankviligi tiu parto tro multe. 1874 01:33:05,130 --> 01:33:07,510 Nur scias ke estas lokokupilo por iu teksto. 1875 01:33:07,510 --> 01:33:08,480 Jes. 1876 01:33:08,480 --> 01:33:10,200 Demandon? 1877 01:33:10,200 --> 01:33:11,021 Jes. 1878 01:33:11,021 --> 01:33:12,374 >> Spektantaro: Vi ĵus menciita CSS. 1879 01:33:12,374 --> 01:33:15,492 La hash familio kaj la hash cxiuj, kiuj aĵoj estas esence 1880 01:33:15,492 --> 01:33:17,400 reprezenti IDs en CSS-? 1881 01:33:17,400 --> 01:33:18,440 >> JOSEPH ONG: Jes, ĝuste. 1882 01:33:18,440 --> 01:33:20,380 Mi ricevos por kio tiuj hashes signifas en sekundo. 1883 01:33:20,380 --> 01:33:23,480 Kiam Angela transiris CSS, ŝi parolis pri CSS selectores. 1884 01:33:23,480 --> 01:33:26,770 Tiuj estas la CSS selectores ke ŝi parolas. 1885 01:33:26,770 --> 01:33:28,268 Jes, Rob? 1886 01:33:28,268 --> 01:33:32,060 >> ROB Bowden: Volonte ankaux mi komentu ke DOM ene de titolo etikedon 1887 01:33:32,060 --> 01:33:35,385 Estas ankaŭ teksto nodo. 1888 01:33:35,385 --> 01:33:36,070 >> JOSEPH ONG: Ĝuste. 1889 01:33:36,070 --> 01:33:38,370 Do ene de la titolo etikedo, Mi havas iom da teksto DOM. 1890 01:33:38,370 --> 01:33:42,730 Do vere, tiu titolo devus havi kiel iom skatolo elspezi gxin tiel. 1891 01:33:42,730 --> 01:33:45,740 Sed tio ne vere gravas tro multa en ĉi tiu kazo. 1892 01:33:45,740 --> 01:33:49,620 Ni ne vere zorgas pri teksto nodoj, kiel ni nomas ilin, tro multe. 1893 01:33:49,620 --> 01:33:50,270 OK, ni faros. 1894 01:33:50,270 --> 01:33:51,520 Ŝajne, ni faros. 1895 01:33:51,520 --> 01:33:54,260 1896 01:33:54,260 --> 01:33:57,100 Kaj mi fiksos ke kiam Mi alŝutu ĝin denove. 1897 01:33:57,100 --> 01:33:59,830 Ĉu tio havas sencon? 1898 01:33:59,830 --> 01:34:01,160 >> Do kiel ni laboros kun la DOM? 1899 01:34:01,160 --> 01:34:03,790 Kiam ajn vi agos kun la DOM en Javascript, estas du paŝojn. 1900 01:34:03,790 --> 01:34:05,030 Vi elektu DOM elemento. 1901 01:34:05,030 --> 01:34:06,580 Kaj tiam vi faras tion al ĝi. 1902 01:34:06,580 --> 01:34:11,480 Do, en tiu kazo, abstrakte, mi havas selektis la meza elemento. 1903 01:34:11,480 --> 01:34:14,530 Kaj poste ekzemplon de faranta stuff al ĝi estus ŝanĝi la tekston. 1904 01:34:14,530 --> 01:34:16,020 Tio kutimis esti Bob. 1905 01:34:16,020 --> 01:34:19,930 Nun, kion Mi faris al gxi iris mi ŝanĝis Bob por Milo en ĉi tiu okazo. 1906 01:34:19,930 --> 01:34:22,130 >> Do kiel ni vere faras tion? 1907 01:34:22,130 --> 01:34:23,440 Kiel ni faru la elektu? 1908 01:34:23,440 --> 01:34:26,560 Kiel do ni ja la faradon uzatajxojn, por la aferon unufoje ni prenis ĝin? 1909 01:34:26,560 --> 01:34:30,470 Nu, la maniero vi infanoj lernis ĝin en ĉi tiu kategorio estas per uzo de io 1910 01:34:30,470 --> 01:34:32,420 vokis jQuery. 1911 01:34:32,420 --> 01:34:33,910 Do kio estas jQuery? 1912 01:34:33,910 --> 01:34:37,220 jQuery estas biblioteko kiu faras Javascript facile verki. 1913 01:34:37,220 --> 01:34:39,500 Do iu prenis la tempon kaj skribis jQuery. 1914 01:34:39,500 --> 01:34:41,530 >> jQuery vere skribita en JavaScript. 1915 01:34:41,530 --> 01:34:44,550 Kaj tiam, ĉar ili faris tion, ni nun havi tutan aron de funkcioj kiuj 1916 01:34:44,550 --> 01:34:46,020 ni povas uzi tiun fari nian vivas vere facila. 1917 01:34:46,020 --> 01:34:48,580 1918 01:34:48,580 --> 01:34:50,030 Do kio estas kelkaj el la tion ĝi faras? 1919 01:34:50,030 --> 01:34:51,650 Ĝi faras elektante elementojn pli facila. 1920 01:34:51,650 --> 01:34:54,020 It makes ŝanĝi HTML, aldonante klasoj facila. 1921 01:34:54,020 --> 01:34:55,360 It makes Ajax facila. 1922 01:34:55,360 --> 01:34:58,230 Ni ricevos por ke en sekundo. 1923 01:34:58,230 --> 01:35:00,630 >> Kaj ĝi estas analoga al C bibliotekojn. 1924 01:35:00,630 --> 01:35:03,090 Do vi inkluzivi string.h, vi get strlen. 1925 01:35:03,090 --> 01:35:04,680 Vi ricevas strcpy, ĉiuj ĉi tiuj aferoj. 1926 01:35:04,680 --> 01:35:09,650 Kiam vi inkluzivi jQuery, vi ricevas belan manierojn elekti elementojn por ŝanĝo 1927 01:35:09,650 --> 01:35:10,390 aferoj, kaj tiel plu. 1928 01:35:10,390 --> 01:35:12,990 Vi akiras ekstran funcionalidad ke Javascript ne donas al vi. 1929 01:35:12,990 --> 01:35:15,310 Do jQuery ne estas JavaScript. 1930 01:35:15,310 --> 01:35:18,660 jQuery estas biblioteko ke estas skribite en Javascript kiu faras JavaScript 1931 01:35:18,660 --> 01:35:20,440 pli facile verki. 1932 01:35:20,440 --> 01:35:23,170 >> Do jQuery ne estas programado lingvo. 1933 01:35:23,170 --> 01:35:24,540 Sed JavaScript estas. 1934 01:35:24,540 --> 01:35:27,420 1935 01:35:27,420 --> 01:35:27,590 fari. 1936 01:35:27,590 --> 01:35:30,420 Certe vi ricevos vian terminaro pravas. 1937 01:35:30,420 --> 01:35:32,490 Demandojn? 1938 01:35:32,490 --> 01:35:33,882 Jes. 1939 01:35:33,882 --> 01:35:35,132 Ĉu tio estas demando? 1940 01:35:35,132 --> 01:35:37,910 1941 01:35:37,910 --> 01:35:38,350 Ĉiuj pravas. 1942 01:35:38,350 --> 01:35:40,080 Do kiel vi uzas jQuery? 1943 01:35:40,080 --> 01:35:42,390 Nu, kiam vi skribas iun Javascript kodon kaj vi inkludus 1944 01:35:42,390 --> 01:35:45,570 jQuery ĉe la supro de via dosiero kiel La skripton, oni uzas la dolaro signo 1945 01:35:45,570 --> 01:35:47,310 nun akiri aliron al jQuery. 1946 01:35:47,310 --> 01:35:49,860 Kaj ĉi tiu estas malsama de la dolaro signo en PHP. 1947 01:35:49,860 --> 01:35:51,590 >> Ĝi estas la sama simbolo vin tajpi sur via klavaro. 1948 01:35:51,590 --> 01:35:52,780 Sed ili signifas tre malsamaj aferoj. 1949 01:35:52,780 --> 01:35:56,090 Dolaro signo en PHP signifas ĉi Tiel mi deklari variablon. 1950 01:35:56,090 --> 01:35:59,120 En JavaScript, kiam vi jam inkludis jQuery, ĝi staras por jQuery. 1951 01:35:59,120 --> 01:36:01,280 Observu do, ke en la menso. 1952 01:36:01,280 --> 01:36:03,420 Do kiom eble ni elektu DOM elementoj? 1953 01:36:03,420 --> 01:36:06,500 Nu, kiam vi faras ĝin la malbela JavaScript Tiel vi aliri la 1954 01:36:06,500 --> 01:36:08,240 dokumenti malloka variablo. 1955 01:36:08,240 --> 01:36:11,170 Kaj tiam vi ricevas elementon per ID familio. 1956 01:36:11,170 --> 01:36:15,270 Tiu estas vere longa kaj wordy kaj ne tre bela. 1957 01:36:15,270 --> 01:36:18,190 >> Aux vi povas akiri tutan elementoj ke estas p-etikedo. 1958 01:36:18,190 --> 01:36:20,080 Tio funkcias ankaux en JavaScript. 1959 01:36:20,080 --> 01:36:22,470 Sed ni neniam vere montris vi la sintakso tro multe. 1960 01:36:22,470 --> 01:36:24,620 Kion ni montris al vi iris jQuery. 1961 01:36:24,620 --> 01:36:28,720 Por ke tutaj selector tie supre, ke estis esprimita en JavaScript nur gets 1962 01:36:28,720 --> 01:36:33,320 kondensita al ĉi tiu tre bela dolaro subskribi etiketon familio. 1963 01:36:33,320 --> 01:36:38,480 Kaj $ p, precize kie ĝi estas tiel. 1964 01:36:38,480 --> 01:36:41,690 Se vi volas elekti ĉiuj p-etikedoj ene de familio, ni metis spacon 1965 01:36:41,690 --> 01:36:42,890 inter la du. 1966 01:36:42,890 --> 01:36:44,815 Kaj nun, ni preni la tutan p tags ene de familio. 1967 01:36:44,815 --> 01:36:48,740 1968 01:36:48,740 --> 01:36:50,380 >> Kaj rigardu familiara? 1969 01:36:50,380 --> 01:36:52,880 Nu, Angela parolis pri CSS selectores. 1970 01:36:52,880 --> 01:36:54,200 Donu al mi unu sekundo. 1971 01:36:54,200 --> 01:36:57,230 Kaj tial la celo elekti elementon, vi simple uzu la samon kiel vi 1972 01:36:57,230 --> 01:36:58,530 farus kun CSS selector. 1973 01:36:58,530 --> 01:37:00,910 Se vi metas kradon en fronto de ĝi, ĝi selektas per identigilo. 1974 01:37:00,910 --> 01:37:02,220 A dot selektas per klasoj. 1975 01:37:02,220 --> 01:37:06,230 Se vi nur havas la aferon sen hashes aŭ dots, selektas tiujn etikedojn. 1976 01:37:06,230 --> 01:37:07,140 Demandoj. 1977 01:37:07,140 --> 01:37:07,470 Jes? 1978 01:37:07,470 --> 01:37:11,510 >> Spektantaro: Kiam ni uzas punkton en nia HTML, estas ke ne jQuery? 1979 01:37:11,510 --> 01:37:13,520 >> JOSEPH ONG: Dot en nia HTML estas JavaScript afero. 1980 01:37:13,520 --> 01:37:14,750 Tio ne estas jQuery afero. 1981 01:37:14,750 --> 01:37:17,620 La vojo vi uloj lernis ĝin per jQuery estas uzi. html. 1982 01:37:17,620 --> 01:37:21,510 Kaj tiam vi preterpasis ŝin ajn la HTML tuj estos. 1983 01:37:21,510 --> 01:37:23,480 Do mi devos atingi ke en nur dua praktiko. 1984 01:37:23,480 --> 01:37:27,800 Do kiel ni faros uzatajxojn, por elemento iam ni selektis? 1985 01:37:27,800 --> 01:37:30,130 Do tio estas ekzemplo de elektado ero. 1986 01:37:30,130 --> 01:37:32,280 Do nun, ni volas fari aferojn al ĝi. 1987 01:37:32,280 --> 01:37:35,730 >> Do, en tiu kazo, permesu al mi iri reen al la antaŭa glito. 1988 01:37:35,730 --> 01:37:37,360 Estis Bob antaŭe. 1989 01:37:37,360 --> 01:37:40,660 Kaj mi volas ŝanĝi tiun ene de HTML al Milo. 1990 01:37:40,660 --> 01:37:43,240 Do mi nomas la HTML-funkcio de la elemento. 1991 01:37:43,240 --> 01:37:45,580 Tio HTML funkcio estas metodo de elemento. 1992 01:37:45,580 --> 01:37:47,430 Kaj poste mi donos, kion Mi volas ke la HTML-esti. 1993 01:37:47,430 --> 01:37:50,560 Kaj tio nur anstataŭas kio estas interne de ke etikedon kun kiom mi gxin donas. 1994 01:37:50,560 --> 01:37:50,830 Jes. 1995 01:37:50,830 --> 01:37:51,170 Demandon? 1996 01:37:51,170 --> 01:37:57,397 >> Spektantaro: La etiketo estas uzata cxar nur la jQuery. 1997 01:37:57,397 --> 01:37:59,313 [Inaudibles] 1998 01:37:59,313 --> 01:38:01,230 ni ne uzus tion. 1999 01:38:01,230 --> 01:38:01,960 >> JOSEPH ONG: Jes, ĝuste. 2000 01:38:01,960 --> 01:38:03,750 Sed ne tro maltrankviliĝu pri pura JavaScript. 2001 01:38:03,750 --> 01:38:06,670 Mi nur volas you guys koncentriĝi pri kio vi farus kun jQuery, ĉar 2002 01:38:06,670 --> 01:38:10,020 ke tuj estos la grava parto de la kvizo. 2003 01:38:10,020 --> 01:38:10,400 Ĝuste. 2004 01:38:10,400 --> 01:38:10,880 Ekzakte. 2005 01:38:10,880 --> 01:38:16,025 Do vi vidas, ke etiketo, por ke respondas elekti la elemento kun 2006 01:38:16,025 --> 01:38:18,310 la ID mezo pro tiu etiketo. 2007 01:38:18,310 --> 01:38:19,670 Etiketon signifas ID. 2008 01:38:19,670 --> 01:38:22,870 Kaj ĉi elemento havas ID de mezo. 2009 01:38:22,870 --> 01:38:24,366 Do tio estas la elemento ni elektu. 2010 01:38:24,366 --> 01:38:27,160 >> Spektantaro: [inaudibles]. 2011 01:38:27,160 --> 01:38:31,090 dolaro signo etiketon [inaudibles]? 2012 01:38:31,090 --> 01:38:31,710 >> JOSEPH ONG: Do ne. 2013 01:38:31,710 --> 01:38:33,280 La demando estas ĉu vi povas uzi. Valoro. 2014 01:38:33,280 --> 01:38:36,445 Kaj. Valoron nur funkcias sur elementoj ke estas enigoj. 2015 01:38:36,445 --> 01:38:40,950 2016 01:38:40,950 --> 01:38:45,495 En jQuery, estus . Val, ne. Valoro. 2017 01:38:45,495 --> 01:38:49,080 Do mi devos akiri al malgranda ekzemplo kiu pruvas ĉion tion en kombino 2018 01:38:49,080 --> 01:38:49,850 en dua. 2019 01:38:49,850 --> 01:38:53,130 Sed mi pensas tio utilas malgranda fragmento sencoplena homoj ĝis nun. 2020 01:38:53,130 --> 01:38:55,450 Deziras ŝanĝi la HTML, vokas la HTML metodon. 2021 01:38:55,450 --> 01:38:56,432 Jes. 2022 01:38:56,432 --> 01:38:58,200 >> Spektantaro: Cxu vi povas ekspliki la metodo denove? 2023 01:38:58,200 --> 01:39:01,900 >> JOSEPH ONG: Do metodo estas nur Funkcio kiu apartenas al unu, en ĉi tiu 2024 01:39:01,900 --> 01:39:04,590 kazo, unu el tiuj DOM elementoj, ĉar vi vidas, Mi 2025 01:39:04,590 --> 01:39:05,940 selektis la elementon unue. 2026 01:39:05,940 --> 01:39:07,320 Fakte, mi uzas la muson. 2027 01:39:07,320 --> 01:39:09,330 Mi selektis la elementon unue. 2028 01:39:09,330 --> 01:39:12,310 Kaj poste mi nomis ĉi HTML Funkcio kiu havis. 2029 01:39:12,310 --> 01:39:15,710 Kaj ĉar ĉi funkcio apartenas al tion ni nomas gxin metodo. 2030 01:39:15,710 --> 01:39:19,480 Tio estas nur fantazio nomo por ĝi. 2031 01:39:19,480 --> 01:39:20,730 Diru tion denove. 2032 01:39:20,730 --> 01:39:22,880 2033 01:39:22,880 --> 01:39:25,170 Do memoru, ni selektis la elemento nun. 2034 01:39:25,170 --> 01:39:27,810 Kaj ni metis gxin interne de la elemento variablo. 2035 01:39:27,810 --> 01:39:28,600 Korekti? 2036 01:39:28,600 --> 01:39:34,380 >> Do kiam ni volas ŝanĝi la HTML de interne, ĉar ĝi estis Bob antaŭe, vi 2037 01:39:34,380 --> 01:39:36,420 volas ŝanĝi tiun tekston al Milo. 2038 01:39:36,420 --> 01:39:37,920 Do ni nomas HTML. 2039 01:39:37,920 --> 01:39:41,610 Kaj ni rakontu kion la HTML ene tiu elemento devas esti nun. 2040 01:39:41,610 --> 01:39:44,107 Kaj tial ĝi ŝanĝas ĝin al Milo, ĉar mi donis ĝin Milo. 2041 01:39:44,107 --> 01:39:46,542 >> Spektantaro: Do ​​ili laboras kune. 2042 01:39:46,542 --> 01:39:47,030 [Inaudibles] 2043 01:39:47,030 --> 01:39:47,390 >> JOSEPH ONG: Jes, jes. 2044 01:39:47,390 --> 01:39:48,180 Ili laboras kune. 2045 01:39:48,180 --> 01:39:50,210 Do unu el ili selektas la elementon unue. 2046 01:39:50,210 --> 01:39:52,863 Kaj la duan oni faras ion al ŝi. 2047 01:39:52,863 --> 01:39:53,790 Jes. 2048 01:39:53,790 --> 01:39:56,168 >> Spektantaro: [inaudibles]. 2049 01:39:56,168 --> 01:40:01,280 Se ĉi tiu metodo estas malsama en HTML vi havas la metodo egalaj reala. 2050 01:40:01,280 --> 01:40:01,560 >> JOSEPH ONG: Jes. 2051 01:40:01,560 --> 01:40:03,370 Tio estas alia metodo. 2052 01:40:03,370 --> 01:40:04,670 Tio estas alia metodo. 2053 01:40:04,670 --> 01:40:07,860 Kaj ni povas kovri ke en nur unu duan kiam ni atingos ekzemplo. 2054 01:40:07,860 --> 01:40:12,000 Mi volas certigi ke ni plirapidigi ĉar ni elĉerpiĝas de tempo. 2055 01:40:12,000 --> 01:40:15,360 Sed ni kuros vojon tra la tempo nun. 2056 01:40:15,360 --> 01:40:15,490 OK. 2057 01:40:15,490 --> 01:40:16,430 Cool. 2058 01:40:16,430 --> 01:40:20,130 Do se vi volas aldoni al klaso, estas Ankaŭ add klaso metodo. 2059 01:40:20,130 --> 01:40:24,300 Tiu estas nur ekzemplo de kio vi povas fari kun jQuery. 2060 01:40:24,300 --> 01:40:25,950 Tio nur aldonas klaso. 2061 01:40:25,950 --> 01:40:28,660 >> Se vi volas forigi ĝin, vi povas voki forigi. 2062 01:40:28,660 --> 01:40:32,280 Tio estas nur alia afero vi povas fari. 2063 01:40:32,280 --> 01:40:35,680 Do pli ekzemplojn de aferoj kiujn vi povas fari. 2064 01:40:35,680 --> 01:40:37,510 Do ĉu mi povas nur meti ĝin ĉe la supro kiel tiu? 2065 01:40:37,510 --> 01:40:38,760 Plej juna forigi. 2066 01:40:38,760 --> 01:40:42,470 2067 01:40:42,470 --> 01:40:45,930 Se mi ĝuste ekzekuti ke JavaScript ĉe la supro de mia dosiero, faros, ke labori? 2068 01:40:45,930 --> 01:40:48,540 2069 01:40:48,540 --> 01:40:48,920 Ĝuste. 2070 01:40:48,920 --> 01:40:50,530 Ĉar mezo ne ekzistanta. 2071 01:40:50,530 --> 01:40:51,840 Do tio ne tuj funkcias. 2072 01:40:51,840 --> 01:40:52,800 Ekzekuto ordo. 2073 01:40:52,800 --> 01:40:55,040 Ĝi iras al la supro unue. 2074 01:40:55,040 --> 01:40:55,540 Kio? 2075 01:40:55,540 --> 01:40:57,450 >> Spektantaro: Benjamin ne ekzistanta? 2076 01:40:57,450 --> 01:40:57,810 >> JOSEPH ONG: Jes. 2077 01:40:57,810 --> 01:40:58,710 Benjamín ne ekzistanta. 2078 01:40:58,710 --> 01:40:59,600 Ekzakte. 2079 01:40:59,600 --> 01:41:01,320 >> Spektantaro: Vi diris mezo. 2080 01:41:01,320 --> 01:41:01,510 >> JOSEPH ONG: Pardonu. 2081 01:41:01,510 --> 01:41:02,720 Benjamín ne ekzistanta. 2082 01:41:02,720 --> 01:41:04,510 Kaj la alia afero estas mi ne havas inkludis la jQuery 2083 01:41:04,510 --> 01:41:06,580 dosiero petas skripton src. 2084 01:41:06,580 --> 01:41:07,960 Do tio ne tuj funkcias. 2085 01:41:07,960 --> 01:41:09,580 Fakte, mi ne faros tion en la sekva glito, kio estas 2086 01:41:09,580 --> 01:41:10,700 supozis ripari ke ĉu. 2087 01:41:10,700 --> 01:41:14,120 Sed la maniero ni faras ĉi estas JavaScript estas okazaĵo pelataj. 2088 01:41:14,120 --> 01:41:17,410 Do, kion ni faras estas ni uzas evento Traktilo por fari ĉi tiu okazi. 2089 01:41:17,410 --> 01:41:19,510 Kaj do mi elektu la dokumenton starigis unue. 2090 01:41:19,510 --> 01:41:23,810 Mi diras, OK, kiam la dokumento estas preta, mi kuros funkcio. 2091 01:41:23,810 --> 01:41:25,470 Do tio estas ĉio, kion sintakso rimedoj. 2092 01:41:25,470 --> 01:41:27,100 >> Mi selektis la dokumento. 2093 01:41:27,100 --> 01:41:29,530 Nun, kiam la dokumento estas preta, ruli la funkcio. 2094 01:41:29,530 --> 01:41:32,970 Kaj do ĉi tie kiam la dokumento estas preta, kion signifas la tutan HTML havas 2095 01:41:32,970 --> 01:41:36,140 ŝarĝitaj, kaj mi kuros al la funkcio kiuj forigas tiun elementon. 2096 01:41:36,140 --> 01:41:40,270 Kaj tiel nun, kiam mi kuros ĉi funkcio kiun mi pasis en preta, mi estas 2097 01:41:40,270 --> 01:41:43,780 garantiis ke la tutan HTML je la paĝo tuj ekzistas unue. 2098 01:41:43,780 --> 01:41:44,100 Jes. 2099 01:41:44,100 --> 01:41:44,425 Demandon? 2100 01:41:44,425 --> 01:41:48,200 >> Spektantaro: Kio estas la evento ŝlosilvorto ene de la funkcio? 2101 01:41:48,200 --> 01:41:51,750 >> JOSEPH ONG: Por ke okazaĵo ŝlosilvorto en la funkcio estas nur parametro kiu 2102 01:41:51,750 --> 01:41:53,490 gets pasita al la funkcio por ajna okazaĵo. 2103 01:41:53,490 --> 01:41:55,470 Estas nur ion ke vi ricevas senpage. 2104 01:41:55,470 --> 01:41:59,320 Kiam vi uzas klavon kodogrupo except en pset8, tiu evento povis diri al vi, ĉar 2105 01:41:59,320 --> 01:42:01,350 Ekzemple, kiu klavo vi premis plu. 2106 01:42:01,350 --> 01:42:05,540 En ĉi tiu kazo, oni pretas evento, fakte ne estas super utila. 2107 01:42:05,540 --> 01:42:08,640 Sed por kerna malsupren eventon, ĝi estas pli utila, ĉar vi ekkoni kiujn 2108 01:42:08,640 --> 01:42:12,330 Ŝlosilo vi premis alirante ŝlosilon kodo for ke okazaĵo objekto. 2109 01:42:12,330 --> 01:42:13,530 Korekti? 2110 01:42:13,530 --> 01:42:15,160 Ĉu tio havas sencon? 2111 01:42:15,160 --> 01:42:16,280 OK. 2112 01:42:16,280 --> 01:42:16,580 Jes. 2113 01:42:16,580 --> 01:42:17,150 Demandon? 2114 01:42:17,150 --> 01:42:19,290 >> Spektantaro: Do ​​vi povas meti la skripto tag suba malsupren? 2115 01:42:19,290 --> 01:42:19,940 >> JOSEPH ONG: Do jes. 2116 01:42:19,940 --> 01:42:21,500 Vi povus meti la skripto marki suba malsupren. 2117 01:42:21,500 --> 01:42:23,090 Sed tiam ĝi simple iĝas vere senorda. 2118 01:42:23,090 --> 01:42:26,590 Kaj ni ŝatas centralizi ĉiuj de nia kodo en unu loko. 2119 01:42:26,590 --> 01:42:28,290 Kaj tion permesos al ni plenumi gxin. 2120 01:42:28,290 --> 01:42:32,010 Memoru fruaj mi diris ke estas pli agrabla maniero por certigi, ke elementoj estas 2121 01:42:32,010 --> 01:42:33,880 sur la paĝo antaux vi ekzekuti kodon? 2122 01:42:33,880 --> 01:42:36,079 Kaj tiu estas nur bela vojo vi finigxi tio. 2123 01:42:36,079 --> 01:42:37,329 >> Spektantaro: [inaudibles]. 2124 01:42:37,329 --> 01:42:41,710 2125 01:42:41,710 --> 01:42:42,230 >> JOSEPH ONG: Jes. 2126 01:42:42,230 --> 01:42:43,460 Vi ankoraŭ devos, ĉu ne? 2127 01:42:43,460 --> 01:42:46,930 Ĉar rememoru, vi inkludis la dosiero ĉe la supro de la paĝo. 2128 01:42:46,930 --> 01:42:49,890 Do ĝi estas tuj ekzekuti unue antaux vi atingis la fundon de la paĝo. 2129 01:42:49,890 --> 01:42:54,600 2130 01:42:54,600 --> 01:42:55,180 OK. 2131 01:42:55,180 --> 01:42:59,210 Do vi povas aldoni ankaŭ alian tipo de okazaĵo traktilo. 2132 01:42:59,210 --> 01:43:00,640 Ĉi tiu nur procesas klakoj. 2133 01:43:00,640 --> 01:43:03,910 Kiam mi klakas sur plej junan, tiam tio estos pop supren kun garde. 2134 01:43:03,910 --> 01:43:05,440 Ĉi tio estas nur malsama tipo de okazaĵo. 2135 01:43:05,440 --> 01:43:08,840 Fronte al la preta evento, vi nun uzi la klako okazaĵo kiam vi ricevas 2136 01:43:08,840 --> 01:43:10,190 Alklako sur elementon. 2137 01:43:10,190 --> 01:43:13,860 >> Kaj tiel en tiu kazo, memoru, la klako traktilo estas alfiksita al la plej juna. 2138 01:43:13,860 --> 01:43:16,080 Do tio nur okazas kiam Mi alklaku juna. 2139 01:43:16,080 --> 01:43:19,510 Kaj en la alia, la preta okazaĵo estis fiksitaj al la dokumento. 2140 01:43:19,510 --> 01:43:23,750 Do ĝi atendas la dokumenton esti preta. 2141 01:43:23,750 --> 01:43:25,120 Havas sencon? 2142 01:43:25,120 --> 01:43:26,190 Mi pensas ke mi povas pluiri. 2143 01:43:26,190 --> 01:43:26,610 Jes. 2144 01:43:26,610 --> 01:43:26,980 Demandon? 2145 01:43:26,980 --> 01:43:28,230 >> Spektantaro: [inaudibles]. 2146 01:43:28,230 --> 01:43:31,676 2147 01:43:31,676 --> 01:43:33,620 en tiu kazo oni uzas [inaudibles]. 2148 01:43:33,620 --> 01:43:36,650 >> JOSEPH ONG: Ho, jes, ĉar en tiu kazo, mi devas atendi ke la plej juna 2149 01:43:36,650 --> 01:43:40,740 ero por aperi sur la ekrano unue antaŭ ol mi povas alfiksi klako traktilo por 2150 01:43:40,740 --> 01:43:43,062 tio, kio estas kial mi metis gxin interne de de dokumento preta. 2151 01:43:43,062 --> 01:43:45,780 2152 01:43:45,780 --> 01:43:46,840 OK. 2153 01:43:46,840 --> 01:43:52,390 Kaj baldaŭ, do ĉi tiu estas granda ekzemplo de kiel vi devus kombini ĉion. 2154 01:43:52,390 --> 01:43:55,930 Tiu estas nur formo validigo ekzemplo vi jam vidis en prelego. 2155 01:43:55,930 --> 01:43:58,410 Do prenu ĝin paŝon post paŝo, kiel vi iri tra ĉi. 2156 01:43:58,410 --> 01:43:59,590 Kaj gxi estos plene okej. 2157 01:43:59,590 --> 01:44:01,400 Nur legi gxin de supro al malsupro. 2158 01:44:01,400 --> 01:44:03,030 >> Mi havas formularon ĉe la malsupro. 2159 01:44:03,030 --> 01:44:07,590 Kiam la dokumento estas preta, mi alfiksi submit traktilo al la formo, tia ke 2160 01:44:07,590 --> 01:44:12,910 kiam mi la formularon, mi alvenas al la valoroj ene de ĉiu el tiuj enigoj. 2161 01:44:12,910 --> 01:44:14,560 Kaj mi kontrolu, se ĝi estas malplena. 2162 01:44:14,560 --> 01:44:17,090 Se ĝi estas blanka, mi revenos falsa, ĉar Mi ne volas submetiĝi al la formo, 2163 01:44:17,090 --> 01:44:18,950 ĉar la formo estas malĝusta. 2164 01:44:18,950 --> 01:44:22,040 Se la pasvorto estas malplena aŭ ĝi estas malpli ol ok karakteroj, mi ne submetiĝi 2165 01:44:22,040 --> 01:44:24,470 la formo, ĉar tio estas ankaŭ malbone. 2166 01:44:24,470 --> 01:44:28,150 Kaj la reveno malvera nur antaŭvidas la formo de sendado kaj 2167 01:44:28,150 --> 01:44:30,150 irante al nova paĝo. 2168 01:44:30,150 --> 01:44:31,310 >> Kaj espereble, tio faras sencon. 2169 01:44:31,310 --> 01:44:34,650 Mi kredas vi uloj devus iradi tra tiun kodon paŝo post paŝo sur via propra. 2170 01:44:34,650 --> 01:44:38,350 Kaj iam vi komprenas kio estas la unuaranga elementoj kaj fari aferojn al ĝi 2171 01:44:38,350 --> 01:44:40,520 reale kunportas, tiu faros multe da senco por vi. 2172 01:44:40,520 --> 01:44:41,295 Jes? 2173 01:44:41,295 --> 01:44:44,150 >> Spektantaro: Kion faras la nomo = salutnomo signifi? 2174 01:44:44,150 --> 01:44:48,530 >> JOSEPH ONG: Do la nomo = salutnomo kaj nomo = pasvorton simple signifas rigardi la 2175 01:44:48,530 --> 01:44:50,730 atributo de kio ajn vi estas elektanta. 2176 01:44:50,730 --> 01:44:51,790 Kaj tiam kiu havas por kongrui. 2177 01:44:51,790 --> 01:44:53,870 Do ni iru en la registro. 2178 01:44:53,870 --> 01:44:56,240 Kaj poste ni rigardas ĉiuj enigoj kaj registriĝo. 2179 01:44:56,240 --> 01:44:59,990 Kaj tiam ni elektu unu kie la nomo atributo estas egala al uzantnomon. 2180 01:44:59,990 --> 01:45:04,040 Por ke unue selector nur selektu la uzantonomo enigo. 2181 01:45:04,040 --> 01:45:08,220 Kaj tiu dua selector nur selektas la pasvorto, ĉar tiuj havas 2182 01:45:08,220 --> 01:45:12,240 ilia nomo atributoj starigis kiel kio ili estas supozataj esti. 2183 01:45:12,240 --> 01:45:12,575 Demandon? 2184 01:45:12,575 --> 01:45:17,030 >> Spektantaro: Sur submetiĝo, kiel faras la malsupran parton solvi la supro parto? 2185 01:45:17,030 --> 01:45:19,350 >> JOSEPH ONG: Do tio estas ĉar de la eventa traktilo. 2186 01:45:19,350 --> 01:45:23,000 Do ni atendas por submeti okazaĵo ke gets pafitaj de la formularo. 2187 01:45:23,000 --> 01:45:24,730 Kaj tio estas ĉio, kio estas submetiĝi. 2188 01:45:24,730 --> 01:45:26,080 Kial mi vokas submit tie supre? 2189 01:45:26,080 --> 01:45:28,870 Ĝi diras, kiam la formo estas donita, Mi ricevas submit okazaĵo. 2190 01:45:28,870 --> 01:45:33,480 Do mi simple interkapti tio kaj tiam kuras tiun kodon anstataŭe. 2191 01:45:33,480 --> 01:45:33,823 Jes? 2192 01:45:33,823 --> 01:45:35,866 >> Spektantaro: Kial vi havas havi funkcion evento? 2193 01:45:35,866 --> 01:45:38,580 Kial vi ne povas simple [inaudibles]? 2194 01:45:38,580 --> 01:45:41,140 >> JOSEPH ONG: Ĉar en JavaScript, vi devas deklari la funkcioj. 2195 01:45:41,140 --> 01:45:42,910 Tio estas ĝuste kiel ĝi funkcias en JavaScript. 2196 01:45:42,910 --> 01:45:44,800 Vi devus diri ĝi okazas kuri funkcio. 2197 01:45:44,800 --> 01:45:47,290 Do vi diras, ke vi estas atendante funkcio ĉi tie anstataŭ 2198 01:45:47,290 --> 01:45:48,260 nur krispa krampoj. 2199 01:45:48,260 --> 01:45:50,460 >> Spektantaro: Kaj la funkcio Estas ajn sekvas? 2200 01:45:50,460 --> 01:45:50,650 >> JOSEPH ONG: Jes. 2201 01:45:50,650 --> 01:45:52,790 La funkcio estas chio ajn ene la krispa krampoj post 2202 01:45:52,790 --> 01:45:53,630 ke funkcio ŝlosilvorton. 2203 01:45:53,630 --> 01:45:54,045 Jes? 2204 01:45:54,045 --> 01:45:55,295 >> Spektantaro: [inaudibles]. 2205 01:45:55,295 --> 01:46:00,180 2206 01:46:00,180 --> 01:46:00,660 >> JOSEPH ONG: Por submeti? 2207 01:46:00,660 --> 01:46:03,520 >> Spektantaro: Ne, cxar funkcio sen la evento. 2208 01:46:03,520 --> 01:46:03,770 >> JOSEPH ONG: Jes. 2209 01:46:03,770 --> 01:46:05,610 Do sen la evento, vi povas havi tiun. 2210 01:46:05,610 --> 01:46:08,480 Se vi ne bezonas la evento, tiam vi povas simple ellasi ĝin. 2211 01:46:08,480 --> 01:46:12,220 Sed se vi faras, ĉar vi nur metis ĝin tie. 2212 01:46:12,220 --> 01:46:12,520 Jes. 2213 01:46:12,520 --> 01:46:13,190 Rapida demando? 2214 01:46:13,190 --> 01:46:14,440 >> Spektantaro: [inaudibles]. 2215 01:46:14,440 --> 01:46:21,170 2216 01:46:21,170 --> 01:46:21,440 >> JOSEPH ONG: Jes. 2217 01:46:21,440 --> 01:46:24,550 Pro kio vi bezonas fari, la document.ready nur diras atendu por ĉiuj 2218 01:46:24,550 --> 01:46:26,540 la HTML de la paĝo, por ŝarĝi unue. 2219 01:46:26,540 --> 01:46:30,510 Kaj kutime, vi volas, ke via elementoj en loko antaux vi kuras ĉiu kodo. 2220 01:46:30,510 --> 01:46:31,030 Ĉiuj pravas. 2221 01:46:31,030 --> 01:46:32,180 Ni devas atingi Ajax. 2222 01:46:32,180 --> 01:46:33,110 Ni ne havas multan tempon. 2223 01:46:33,110 --> 01:46:35,170 Do avantaĝojn kaj malavantaĝojn. 2224 01:46:35,170 --> 01:46:37,450 Javascript estas facile try skribi kun jQuery. 2225 01:46:37,450 --> 01:46:38,930 Sed jQuery estas speco de malrapida. 2226 01:46:38,930 --> 01:46:42,290 >> Estas kiel PHP estas pli malrapida ol C, ĉar ĝi estas interpretita. 2227 01:46:42,290 --> 01:46:45,690 Kaj jQuery estas iom pli malrapida ol Javascript, ĉar ĝi faras multajn 2228 01:46:45,690 --> 01:46:46,630 aferoj sub la kapuĉo. 2229 01:46:46,630 --> 01:46:48,660 Kaj do, se vi uzas jQuery, ĝi estas nur iom pli malrapida ol 2230 01:46:48,660 --> 01:46:51,630 Javascript, eĉ kvankam ĝi donas al vi belan eleganteco. 2231 01:46:51,630 --> 01:46:53,970 Kaj fine, Ajax. 2232 01:46:53,970 --> 01:46:59,170 Ĝis nun kun Ajax, vi ne vidis Ajax en terminoj de pset7 tamen, ĉar 2233 01:46:59,170 --> 01:47:01,150 kiam vi faros, vi submetas formo citaĵo. 2234 01:47:01,150 --> 01:47:02,350 Ĝi ŝarĝas novan paĝon. 2235 01:47:02,350 --> 01:47:04,440 Do vi ricevas tiun grandan blankan fulmilo sur la paĝo dum ke 2236 01:47:04,440 --> 01:47:06,820 dua paĝo ŝarĝojn, korekta? 2237 01:47:06,820 --> 01:47:08,780 >> Estus vere bela, se vi ne havas tiun Flash. 2238 01:47:08,780 --> 01:47:11,600 Kiel Facebook, se vi nur rulumu al malsupre, ĝi aldonas novan enhavon 2239 01:47:11,600 --> 01:47:13,490 sen refreŝigan la tuton de la paĝo. 2240 01:47:13,490 --> 01:47:15,420 Do io simila estus agrabla. 2241 01:47:15,420 --> 01:47:17,370 Ĉi tio estas JavaScript kodo sur la maldekstra flanko. 2242 01:47:17,370 --> 01:47:19,390 Vi akiras kio estas ene de tiu enigo. 2243 01:47:19,390 --> 01:47:21,340 Vi ricevas la stoko info de Yahoo! 2244 01:47:21,340 --> 01:47:27,440 Kaj tiam vi faras grandan ĉenon ke diras, OK, ĉi tiu estas la mesaĝo mi volas 2245 01:47:27,440 --> 01:47:28,400 por montri en la ekranon. 2246 01:47:28,400 --> 01:47:32,280 Kaj tiam vi metis tiun mesaĝon interne de iu HTML elemento kiu alvenas 2247 01:47:32,280 --> 01:47:33,970 montratan ĉe la ekrano. 2248 01:47:33,970 --> 01:47:35,540 >> Do tio estas ĉio tio, kio okazas tie. 2249 01:47:35,540 --> 01:47:39,410 Do esence, ĉar tiu estas la tuta JavaScript kaj vi ne bezonas kuri 2250 01:47:39,410 --> 01:47:42,980 plu PHP, tiu estos certigi ke la paĝo ne fortigu. 2251 01:47:42,980 --> 01:47:47,470 Do tiu estas nur abstrakta ideo ke mi diras ĉi tie ĝis nun. 2252 01:47:47,470 --> 01:47:50,630 La abstrakta ideo estas, ke se vi faros tion ĉiuj en JavaScript, vi ne havas 2253 01:47:50,630 --> 01:47:52,330 paĝo rekalkuli. 2254 01:47:52,330 --> 01:47:53,800 Sed kiel vi efektive fari tion? 2255 01:47:53,800 --> 01:47:56,230 >> Nu, fakte, ni parolu pri problemo kun ĉi tiu unua. 2256 01:47:56,230 --> 01:47:59,340 Problemo estas en JavaScript, ekzekuto estas síncronas. 2257 01:47:59,340 --> 01:48:02,000 Do vi devos atendi unu linio fini antaux vi 2258 01:48:02,000 --> 01:48:03,370 ekzekuti la sekva linio. 2259 01:48:03,370 --> 01:48:06,130 Kaj kio, se mi iros super al Yahoo!, kaj iliaj serviloj estas vere malrapida, kaj 2260 01:48:06,130 --> 01:48:08,790 ilin portas tri sekundoj por redonu al mi ke stock info? 2261 01:48:08,790 --> 01:48:12,620 Kiam mi trafis tiun prezon linio, se la ekzekuto estas sinkronigita, kiel ĝi estas per 2262 01:48:12,620 --> 01:48:15,390 Defaŭlte, kio ĝi estas ĝuste tuj fari estas Via retumilo tuj en perdo por 2263 01:48:15,390 --> 01:48:15,930 tri sekundoj. 2264 01:48:15,930 --> 01:48:18,900 Kaj vi ne tuj povos fari ion dum ĝi akiras tiun datumon. 2265 01:48:18,900 --> 01:48:20,010 Ĝi tuj glaciiĝas. 2266 01:48:20,010 --> 01:48:20,800 >> Kaj tio estas malbona. 2267 01:48:20,800 --> 01:48:23,390 Vi ne volas la uzanto havi glaciiĝinta retpaĝo. 2268 01:48:23,390 --> 01:48:24,170 Korekti? 2269 01:48:24,170 --> 01:48:25,480 Tio estas simple malbona. 2270 01:48:25,480 --> 01:48:26,770 Ĉiuj konsentas? 2271 01:48:26,770 --> 01:48:29,270 Se vi foliumas Facebook kaj ĝi frostas kaj oni povas fari nenion, vi 2272 01:48:29,270 --> 01:48:31,920 get vere frustrita. 2273 01:48:31,920 --> 01:48:34,960 Do la solvo estas ke ni faru ion asincrónico anstataŭe. 2274 01:48:34,960 --> 01:48:38,910 Do ĉio ĉi asincrónico aferon diras estas, mi tuj demandas ĉi 2275 01:48:38,910 --> 01:48:40,280 URL por iuj datumoj. 2276 01:48:40,280 --> 01:48:41,610 Kaj poste mi iros plu iri. 2277 01:48:41,610 --> 01:48:45,330 Mi simple tuj teni ekzekuti kion ajn kodo, kiu estis post tio. 2278 01:48:45,330 --> 01:48:49,290 >> Kaj tiam krom se tiu datumo estas preta, tiam Mi donos procesi ĝin. 2279 01:48:49,290 --> 01:48:50,540 Jen ĉio estas jene. 2280 01:48:50,540 --> 01:48:52,795 2281 01:48:52,795 --> 01:48:56,710 >> Spektantaro: Ajax nur faras kodo asincrónico? 2282 01:48:56,710 --> 01:48:58,560 >> JOSEPH ONG: Ĝi estas asincrónico vojo de kolektadon de datumoj. 2283 01:48:58,560 --> 01:49:01,230 Do la unua afero, pri Ajax Estas ĝi lasas min forpreni datumoj 2284 01:49:01,230 --> 01:49:03,170 de ekstera retejo. 2285 01:49:03,170 --> 01:49:07,045 Kaj la dua afero estas tio certigas ke mia paĝo ne en perdo dum mi estas 2286 01:49:07,045 --> 01:49:07,970 ricevado ke datumojn. 2287 01:49:07,970 --> 01:49:09,600 Tio estas la asincrónico parto de ĝi. 2288 01:49:09,600 --> 01:49:13,040 Ĉar ĝi pafas aliloken, ĉar mi diras, ke mi gardu okazas dum 2289 01:49:13,040 --> 01:49:14,900 ĝi estas ricevado ke datumojn, kiuj faras asincrónico. 2290 01:49:14,900 --> 01:49:17,170 Mi gardas la ekzekuti. 2291 01:49:17,170 --> 01:49:18,960 >> Observu do, ke asincrónico ideo en la menso. 2292 01:49:18,960 --> 01:49:22,010 Kaj mi montros al vi kion la diferenco estas. 2293 01:49:22,010 --> 01:49:23,920 La síncronas versio Estas sur la maldekstra flanko. 2294 01:49:23,920 --> 01:49:26,240 La asincrónico versio Estas sur la dekstra flanko. 2295 01:49:26,240 --> 01:49:29,170 Rigardu la numerojn por vidi kio paŝoj respondas al kio 2296 01:49:29,170 --> 01:49:30,610 ekzekutas je ĉiu linio. 2297 01:49:30,610 --> 01:49:32,730 Tie, la garde montras supren unue. 2298 01:49:32,730 --> 01:49:34,590 Ĉar atingi stock info de Yahoo! 2299 01:49:34,590 --> 01:49:37,250 portas tri sekundoj, ĝi stalojn dum tri sekundoj. 2300 01:49:37,250 --> 01:49:39,880 Kaj tiam garde la prezo post tiuj tri sekundoj. 2301 01:49:39,880 --> 01:49:43,690 >> Do nun, ke garde shows supren al tiu tempo - 2302 01:49:43,690 --> 01:49:44,610 tri sekundoj in 2303 01:49:44,610 --> 01:49:47,670 Kaj tiam ĝi avertas by post tio. 2304 01:49:47,670 --> 01:49:48,930 Do ĝuste iras paŝon post paŝo. 2305 01:49:48,930 --> 01:49:51,200 Estas kiel kion vi infanoj akceptus, korekta? 2306 01:49:51,200 --> 01:49:54,170 Kun asincrónico ekzekuto, vi alarmi unue. 2307 01:49:54,170 --> 01:49:57,410 Tiam vi iros for al tiu retadreso. 2308 01:49:57,410 --> 01:49:59,530 Kaj vi diras: Mi tuj nur peti la datumojn. 2309 01:49:59,530 --> 01:50:01,170 Kaj poste mi iros procesi ĝin poste. 2310 01:50:01,170 --> 01:50:04,230 Do ĝi tuj ekzekutu la sekvanta linio post kiam mi faras tiun 2311 01:50:04,230 --> 01:50:05,710 asincrónico peton. 2312 01:50:05,710 --> 01:50:08,920 >> Do oni 0,001 sekundoj, vi vidos garde hi. 2313 01:50:08,920 --> 01:50:10,960 Plenumu tiu funkcio, garde revido. 2314 01:50:10,960 --> 01:50:14,240 Kaj ĉar mi faris promeson, ke mi devus prilabori la datumojn poste, kion 2315 01:50:14,240 --> 01:50:17,920 okazas estas kiam tiu datumo venas reen tri sekundoj poste, tiam mi kuris ke 2316 01:50:17,920 --> 01:50:21,380 funkcio, kiun mi havas tie. 2317 01:50:21,380 --> 01:50:21,870 Jes? 2318 01:50:21,870 --> 01:50:25,750 >> Spektantaro: Ĉu vi povas specifi aŭ klarigi kion Ajax signifas? 2319 01:50:25,750 --> 01:50:30,460 >> JOSEPH ONG: Do Ajax estas maniero ke, se mi bezonas datumoj kiam mi estas sur retpaĝo kaj mi 2320 01:50:30,460 --> 01:50:34,690 ne deziras refreŝigi la paĝon, tiam Mi uzas tiun teknologion nomata Ajax. 2321 01:50:34,690 --> 01:50:40,630 Tio esence nur signifas, iru, alportu al datumoj de alia retejo. 2322 01:50:40,630 --> 01:50:43,724 Kaj faru tion en maniero kiu nur ne en perdo de mia retpaĝo. 2323 01:50:43,724 --> 01:50:46,650 >> Spektantaro: Tiel estas, ke imanenta parton de JavaScript aŭ jQuery? 2324 01:50:46,650 --> 01:50:50,590 >> JOSEPH ONG: Do iu skribis manieron fari tiu en JavaScript longe. 2325 01:50:50,590 --> 01:50:52,050 En momento, ĝi ne ekzistas. 2326 01:50:52,050 --> 01:50:56,630 Kaj tial iu elpensis tiun teknikon por permesi homoj por peti ĉi datumoj 2327 01:50:56,630 --> 01:50:57,680 en ĉi tiu maniero. 2328 01:50:57,680 --> 01:50:59,550 Kaj ili skribis iujn stuff kaj faros al vi. 2329 01:50:59,550 --> 01:51:01,605 Kaj jQuery simple donas al vi tiun tre bela maniero por fari tion 2330 01:51:01,605 --> 01:51:03,112 kun tiu $. get funkcio. 2331 01:51:03,112 --> 01:51:07,200 2332 01:51:07,200 --> 01:51:09,480 demandojn? 2333 01:51:09,480 --> 01:51:11,560 Mi povas respondi demandojn pri Ajax poste ankaŭ. 2334 01:51:11,560 --> 01:51:13,870 Mi estos tie. 2335 01:51:13,870 --> 01:51:16,390 >> Do ni ni elirigu por datumoj sen refreŝigan la paĝo. 2336 01:51:16,390 --> 01:51:18,200 Kaj ni ni faru tion en an asincrónico maniero kiu 2337 01:51:18,200 --> 01:51:19,450 ne glaciiĝas la paĝo. 2338 01:51:19,450 --> 01:51:22,680 2339 01:51:22,680 --> 01:51:27,310 Tro longa, ne legu se tiu ekspliko estis tro longa por vi. 2340 01:51:27,310 --> 01:51:29,430 Do fine, kruco-ejo skripta atakoj. 2341 01:51:29,430 --> 01:51:30,910 Ni vidis tion kun Zamyla. 2342 01:51:30,910 --> 01:51:34,285 Se en mia datumbazo iu havas tiun nomon, kio estas ĉi tiu skripto etikedon, kaj mi 2343 01:51:34,285 --> 01:51:38,280 havi iom da kodo sur mia paĝo ke printaĵoj el popola nomoj en vico, aŭ mi havas 2344 01:51:38,280 --> 01:51:43,310 iuj JavaScript kodo kiu enmetas tiu nomo en la pagxo, 2345 01:51:43,310 --> 01:51:45,680 kio HTML gets produktitaj? 2346 01:51:45,680 --> 01:51:47,290 Nu, mi presi la HTML-etikedo. 2347 01:51:47,290 --> 01:51:48,390 Mi presi cxiujn tiujn etikedojn. 2348 01:51:48,390 --> 01:51:50,740 >> Mi alvenas al la parto kie mi estas pres ekstere kun miaj amikoj. 2349 01:51:50,740 --> 01:51:52,980 Mi presi Lauren eksteren. 2350 01:51:52,980 --> 01:51:54,200 Ĝi presas Milo eksteren. 2351 01:51:54,200 --> 01:51:56,810 Kaj tiam mia nomo en la datumbazo estas skripto posteno 2352 01:51:56,810 --> 01:51:58,060 unflattering Facebook statuso. 2353 01:51:58,060 --> 01:52:00,740 2354 01:52:00,740 --> 01:52:04,330 Ĉar mi enmetitaj tiu enen la paĝon ĉar ĝi aspektas kiel JavaScript, kiam 2355 01:52:04,330 --> 01:52:07,930 ĉi paĝo gets sendita al la uzanto, ĝi gets ekzekutita kiel JavaScript. 2356 01:52:07,930 --> 01:52:10,800 Kaj tiel tio estas, kion ni nomas kruco-ejo skripta atako. 2357 01:52:10,800 --> 01:52:14,570 Iu metas malican informoj en via datumbazo kiu povus respondi al 2358 01:52:14,570 --> 01:52:17,080 kelkaj aldonaj kordoj aŭ iuj JavaScript kordo. 2359 01:52:17,080 --> 01:52:20,130 >> Kaj kiam gets presita ekster la paĝo en ĉi tiu maniero, do kio 2360 01:52:20,130 --> 01:52:22,580 okazas estas ke malbona kodo gets ekzekutita ke mi ne intencis 2361 01:52:22,580 --> 01:52:25,110 por ĝi get ekzekutita. 2362 01:52:25,110 --> 01:52:28,230 Kaj jen ĉio kruco-ejo skripta atako estas. 2363 01:52:28,230 --> 01:52:31,790 Kaj la vojon vi ricevas ĉirkaŭ ĉi tio estas kiel Zamyla diris. 2364 01:52:31,790 --> 01:52:34,340 Vi nur enpaki aĵojn en HTML specialaj signoj. 2365 01:52:34,340 --> 01:52:39,460 Kaj ĉi HTML specialaj signoj estas PHP- funkcio kiu evitos koncerna varo 2366 01:52:39,460 --> 01:52:42,000 aferoj okazas al vi se vi havas malican 2367 01:52:42,000 --> 01:52:43,830 kordo en via datumbazo. 2368 01:52:43,830 --> 01:52:47,650 Ĝi simple eskapas ĝin, tiel ke ĝi ne get interpretita kiel HTML. 2369 01:52:47,650 --> 01:52:50,960 Ĝi anstataŭas la eta krampoj kun kio ni nomas entoj. 2370 01:52:50,960 --> 01:52:52,250 Kaj ni transiris ĉi en prelego tro. 2371 01:52:52,250 --> 01:52:55,800 Do mi opinias ke vi knaboj devus havi bonan komprenon pri tio. 2372 01:52:55,800 --> 01:52:57,420 Demandojn? 2373 01:52:57,420 --> 01:52:57,820 Jes. 2374 01:52:57,820 --> 01:53:00,860 >> Spektantaro: Do ​​kiel farus la [inaudibles]? 2375 01:53:00,860 --> 01:53:01,555 >> JOSEPH ONG: Diru tion denove. 2376 01:53:01,555 --> 01:53:02,500 >> Spektantaro: Kiel la monitoro - 2377 01:53:02,500 --> 01:53:02,860 >> JOSEPH ONG: Ĝuste. 2378 01:53:02,860 --> 01:53:06,080 Do vi havas iun kiu diras, kiam Mi enskribis, tajpu en mia nomo. 2379 01:53:06,080 --> 01:53:09,390 Mi simple tajpi en tiu kampo, mia nomo estas deprenis post unflattering Facebook 2380 01:53:09,390 --> 01:53:11,570 statuso proksime skripto etikedo. 2381 01:53:11,570 --> 01:53:15,690 Kaj tio nur gets meti en la datenbazo, ĉar mi ne povas diri ke iu 2382 01:53:15,690 --> 01:53:18,260 en la mondo ne havas nomon per maldekstra sagon en ĝin aŭ la 2383 01:53:18,260 --> 01:53:19,036 vorto skripton en ĝi. 2384 01:53:19,036 --> 01:53:21,330 Tio vere ne havas sencon. 2385 01:53:21,330 --> 01:53:24,560 Do mi simple devas certigi, ke mi sanitize la vazaro antaux Mi presi gxin 2386 01:53:24,560 --> 01:53:25,420 eliru al la paĝo. 2387 01:53:25,420 --> 01:53:27,140 >> Spektantaro: Do ​​la HTML specialaj kartoj malhelpas la skripto etikedoj? 2388 01:53:27,140 --> 01:53:28,710 >> JOSEPH ONG: Jes. 2389 01:53:28,710 --> 01:53:29,960 Do tio ne malhelpas la skripto etikedojn. 2390 01:53:29,960 --> 01:53:32,320 Ĝi nur certigas ke la skripto etikedoj ne ricevas 2391 01:53:32,320 --> 01:53:35,120 interpretita kiel HTML aŭ - 2392 01:53:35,120 --> 01:53:35,400 yeah. 2393 01:53:35,400 --> 01:53:38,470 Tio simple venas supren kiel kio gxi vere estas. 2394 01:53:38,470 --> 01:53:39,220 Ĉiuj pravas. 2395 01:53:39,220 --> 01:53:40,930 Tiel estis la kvizo revizio. 2396 01:53:40,930 --> 01:53:41,830 Cool. 2397 01:53:41,830 --> 01:53:45,088 >> [Aplaŭdo]