1 00:00:00,000 --> 00:00:02,964 2 00:00:02,964 --> 00:00:05,434 >> [Speel van musiek] 3 00:00:05,434 --> 00:00:11,825 4 00:00:11,825 --> 00:00:12,700 HANNAH: Hi, almal. 5 00:00:12,700 --> 00:00:15,866 Dankie ouens so baie vir uit te kom in die walglike weer vir quiz een 6 00:00:15,866 --> 00:00:16,910 hersien sessie. 7 00:00:16,910 --> 00:00:20,020 As julle weet, quiz een is hierdie Woensdag. 8 00:00:20,020 --> 00:00:22,209 So ons gaan om te gaan deur 'n klomp van die onderwerpe. 9 00:00:22,209 --> 00:00:24,000 Davin: Hey, kan ek sê iets ware vinnig? 10 00:00:24,000 --> 00:00:25,215 HANNAH: Ja, Davin se gaan iets regtig vinnig om te sê. 11 00:00:25,215 --> 00:00:25,780 Davin: Jammer. 12 00:00:25,780 --> 00:00:29,490 Net ware vinnig, as jy vrae het oor die quiz, kan jy aanlyn gaan. 13 00:00:29,490 --> 00:00:32,420 Gaan na 2014 quiz een, oor die quiz. 14 00:00:32,420 --> 00:00:34,680 Dit het die logistiek oor waar om te gaan, wanneer om te gaan. 15 00:00:34,680 --> 00:00:38,100 As jy gelyktydig ingeskryf, ons is gaan 'n make-up quiz te hê om 5:30. 16 00:00:38,100 --> 00:00:40,350 Of as jy my gestuur het 'n probleem, jy het 'n paar ander kwessie. 17 00:00:40,350 --> 00:00:42,640 Maar 5:30 is die make-up tyd op Woensdag. 18 00:00:42,640 --> 00:00:44,540 Maar as jy vrae het, algemene vrae, 19 00:00:44,540 --> 00:00:45,748 Online het al die logistiek. 20 00:00:45,748 --> 00:00:47,690 So gaan daar eers. 21 00:00:47,690 --> 00:00:49,070 >> HANNAH: Awesome. 22 00:00:49,070 --> 00:00:53,030 So hier is die groot lys van onderwerpe dat ons gaan om te gaan deur middel van vandag. 23 00:00:53,030 --> 00:00:57,390 Ek gaan al die C te dek dinge, en dit is dat die eerste kolom. 24 00:00:57,390 --> 00:01:00,710 So het die C dinge wat ons gedek na quiz nul. 25 00:01:00,710 --> 00:01:05,459 Begin met 'n geskakelde lys, wat insluit wenke. 26 00:01:05,459 --> 00:01:07,668 >> Alle reg, sodat ons dit sien in die laaste hersiening sessie, 27 00:01:07,668 --> 00:01:10,000 so ek gaan om te gaan deur dit is 'n bietjie vinniger. 28 00:01:10,000 --> 00:01:13,500 Net verhoog jou hand as jy wil hê ek moet vertraag of iets verder te spreek. 29 00:01:13,500 --> 00:01:17,150 Maar ons gebruik geskakelde lyste, omdat Ons het begin in C met skikkings. 30 00:01:17,150 --> 00:01:20,920 En skikkings is groot, maar die probleem is hulle het 'n vaste grootte. 31 00:01:20,920 --> 00:01:24,925 Geskakelde lyste toelaat om ons te skep dinamiese grootte data strukture. 32 00:01:24,925 --> 00:01:28,520 33 00:01:28,520 --> 00:01:32,320 >> En ons het ons basiese operasies, voeg, te verwyder, en soek. 34 00:01:32,320 --> 00:01:36,780 En ons kan insetsel doen in ergste geval konstante 35 00:01:36,780 --> 00:01:39,140 as ons net sit dit aan die begin. 36 00:01:39,140 --> 00:01:45,220 Verwyder en soek, ergste geval groot O van n tyd. 37 00:01:45,220 --> 00:01:47,140 So weer, net om te draai deur middel van hierdie foto's, 38 00:01:47,140 --> 00:01:50,860 Ek weet ons het hierdie laaste tyd, maar ons wil om tred te hou van ons geskakelde lys 39 00:01:50,860 --> 00:01:53,440 deur die dop van die hoof van ons geskakelde lys. 40 00:01:53,440 --> 00:01:55,580 Omdat ons weet dat elkeen van ons nodes 41 00:01:55,580 --> 00:01:58,610 is net gaan om te wys op die volgende node in ons geskakelde lys. 42 00:01:58,610 --> 00:02:00,460 >> So dit is hoe ons hou. 43 00:02:00,460 --> 00:02:02,910 Selfs al is dit nie deurlopende stukke van die geheue, 44 00:02:02,910 --> 00:02:07,410 ons hulle kan vind deur net na aanleiding van die verskillende pyle. 45 00:02:07,410 --> 00:02:09,800 Hier is ons struktuur vir 'n geskakelde lys node. 46 00:02:09,800 --> 00:02:11,440 Ons het dit die laaste keer. 47 00:02:11,440 --> 00:02:13,080 Ons het ons struct node. 48 00:02:13,080 --> 00:02:14,340 En dit het twee eiendomme. 49 00:02:14,340 --> 00:02:17,020 Nommer een, die werklike waarde wat ons wil stoor. 50 00:02:17,020 --> 00:02:18,290 In hierdie geval, dit is 'n heelgetal. 51 00:02:18,290 --> 00:02:21,100 Dit kan 'n string wees, kan dit 'n kar, wat jy wil. 52 00:02:21,100 --> 00:02:24,710 En dan, ons het om tred te hou van die volgende node in ons geskakelde lys. 53 00:02:24,710 --> 00:02:29,797 So wat gaan 'n te wees wyser na die volgende node. 54 00:02:29,797 --> 00:02:31,880 As jy net doen soek, soos ek gesê het, 55 00:02:31,880 --> 00:02:34,900 jy wil hê jou pyle te volg af. 56 00:02:34,900 --> 00:02:40,720 Plasing, sou jy track hou van waar die res van jou lys is. 57 00:02:40,720 --> 00:02:44,150 En jy wil die kop te lei om te wys op ons nuwe element, wat 58 00:02:44,150 --> 00:02:46,640 in hierdie geval is een, en dan sal 'n punt 59 00:02:46,640 --> 00:02:49,480 aan die res van die geskakelde lys. 60 00:02:49,480 --> 00:02:52,996 So weer, ek weet dit is 'n bietjie bietjie van 'n herhaling van quiz nul. 61 00:02:52,996 --> 00:02:55,370 So ons het baie versigtig te wees oor die volgorde waarin ons 62 00:02:55,370 --> 00:03:00,390 doen hierdie pointings sodat ons dit nie doen nie spoor van die agterkant van die lys verloor. 63 00:03:00,390 --> 00:03:04,122 OK, om enige vrae net alleen geskakelde lyste? 64 00:03:04,122 --> 00:03:06,060 Awesome, OK, cool. 65 00:03:06,060 --> 00:03:09,410 >> So nou gaan ons om te gaan op iets net 'n bietjie meer ingewikkeld, 66 00:03:09,410 --> 00:03:10,920 dubbel geskakelde lyste. 67 00:03:10,920 --> 00:03:13,680 So in bykomend tot die behoud van spoor van die volgende node, 68 00:03:13,680 --> 00:03:16,220 ons wil ook om tred te hou van die vorige node. 69 00:03:16,220 --> 00:03:19,580 En dit stel ons in staat om, as ons op 'n sekere punt in ons geskakelde lys, 70 00:03:19,580 --> 00:03:23,110 nie net vorentoe gaan, maar ook agteruit Itereer. 71 00:03:23,110 --> 00:03:25,220 Want soos ons gesien het in 'n enkel geskakelde lys, 72 00:03:25,220 --> 00:03:27,980 as ons op 'n sekere knoop, en almal van 'n skielike, het ons besluit, 73 00:03:27,980 --> 00:03:30,160 eintlik, ek wil om te gaan na die knoop reg voor my, 74 00:03:30,160 --> 00:03:32,034 jy wil hê om al gaan die pad terug na die hoof 75 00:03:32,034 --> 00:03:35,710 en Itereer deur totdat jy gevind die knoop jy soek. 76 00:03:35,710 --> 00:03:37,680 >> So dit maak dinge effens makliker as wat ons 77 00:03:37,680 --> 00:03:39,670 probeer om te Itereer deur ons geskakelde lys. 78 00:03:39,670 --> 00:03:47,870 Maar dit vereis dat ons die spoor van een te hou meer wyser, so een node ster. 79 00:03:47,870 --> 00:03:50,830 Alle reg, so hier kom die pret deel. 80 00:03:50,830 --> 00:03:55,600 Ons gaan om te oefen implementering verwyder vir dubbel geskakelde lyste. 81 00:03:55,600 --> 00:03:58,660 So, dit is iets wat heeltemal fair game vir die quiz. 82 00:03:58,660 --> 00:04:00,750 Dit het gewys op die verlede vasvrae. 83 00:04:00,750 --> 00:04:04,220 So beslis bereid wees 'n bietjie in C. te kodeer 84 00:04:04,220 --> 00:04:07,900 Moet nie vergeet dat met al hierdie pret PHP en JavaScript, 85 00:04:07,900 --> 00:04:10,560 het ons nog om te onthou C. Om dit te doen borsel op dat 86 00:04:10,560 --> 00:04:12,146 As jy voel verroes. 87 00:04:12,146 --> 00:04:14,580 >> Alle reg, laat ons sien of ons dit kan doen. 88 00:04:14,580 --> 00:04:16,312 OK, cool. 89 00:04:16,312 --> 00:04:18,600 So ons gaan om te probeer reg hier te wysig, 90 00:04:18,600 --> 00:04:20,707 en hopelik dit gaan soos beplan. 91 00:04:20,707 --> 00:04:23,915 Alle reg, nie almal wil om te gee my 'n voorstel hoe ek moet begin? 92 00:04:23,915 --> 00:04:27,030 Die enigste aanname Ek is maak, is dat ek reeds 93 00:04:27,030 --> 00:04:30,180 het 'n struktuur gedefinieer, die een wat ek het op die laaste bladsy, 94 00:04:30,180 --> 00:04:31,420 op die laaste skyfie. 95 00:04:31,420 --> 00:04:39,250 En ek is die stoor van die hoof van my gekoppel lys in sommige wyser genoem lys. 96 00:04:39,250 --> 00:04:42,190 Is daar iemand wat wil my begin? 97 00:04:42,190 --> 00:04:45,410 >> GEHOOR: Kan jy 'n nuwe node te roep deur die lys? 98 00:04:45,410 --> 00:04:46,410 >> HANNAH: Awesome, so ons gaan skep 99 00:04:46,410 --> 00:04:47,951 'n nuwe node te kruip deur die lys. 100 00:04:47,951 --> 00:04:48,570 Ek hou van dit. 101 00:04:48,570 --> 00:04:50,799 Ek sal net noem dit wyser as dit is OK. 102 00:04:50,799 --> 00:04:52,340 En waar moet dit oorspronklik begin? 103 00:04:52,340 --> 00:04:57,280 104 00:04:57,280 --> 00:04:59,840 >> GEHOOR: Waarskynlik op die hoof van die lys. 105 00:04:59,840 --> 00:05:00,590 HANNAH: Beautiful. 106 00:05:00,590 --> 00:05:03,670 Ons wil om te begin by die kop, wat Ek het gesê gaan in lys gestoor word. 107 00:05:03,670 --> 00:05:04,170 Awesome. 108 00:05:04,170 --> 00:05:05,220 So ver, so goed. 109 00:05:05,220 --> 00:05:08,260 En nou, ons doel is om Itereer deur die lys 110 00:05:08,260 --> 00:05:12,870 totdat ons die knoop met waarde N wat ons wil verwyder. 111 00:05:12,870 --> 00:05:13,540 OK? 112 00:05:13,540 --> 00:05:15,910 >> So nou is die deel waar ons wil Itereer deur. 113 00:05:15,910 --> 00:05:19,488 Kan iemand raai 'n manier om te Itereer deur? 114 00:05:19,488 --> 00:05:20,979 >> GEHOOR: 'n lus. 115 00:05:20,979 --> 00:05:21,840 >> HANNAH: 'n lus. 116 00:05:21,840 --> 00:05:22,620 Ek is mal daaroor. 117 00:05:22,620 --> 00:05:25,550 Spesifiek, kan ons probeer om 'n while lus. 118 00:05:25,550 --> 00:05:30,919 OK, en ons weet dat ons bereik het die einde van die lys wanneer wat? 119 00:05:30,919 --> 00:05:32,210 GEHOOR: Wanneer wyser is nul. 120 00:05:32,210 --> 00:05:33,418 HANNAH: Wanneer wyser is nul. 121 00:05:33,418 --> 00:05:34,320 Mooi, ek is mal daaroor. 122 00:05:34,320 --> 00:05:35,110 OK, cool. 123 00:05:35,110 --> 00:05:39,300 124 00:05:39,300 --> 00:05:43,190 So jammer as my jaag stut is soort van val uit die skerm. 125 00:05:43,190 --> 00:05:44,090 Ons het dit terug. 126 00:05:44,090 --> 00:05:46,610 OK, cool. 127 00:05:46,610 --> 00:05:48,690 Wat is volgende? 128 00:05:48,690 --> 00:05:51,950 >> So weet ons dat ons wil verwyder die knoop wat waarde n. 129 00:05:51,950 --> 00:05:56,340 So laat vind die geval waar ons eintlik vind ons node. 130 00:05:56,340 --> 00:05:57,840 So hoe sou ek seker dat? 131 00:05:57,840 --> 00:06:02,210 Ek wil net sê as wyser, en dan as ek wil die waarde van wyser te kry, 132 00:06:02,210 --> 00:06:08,940 Ek het net nie arrow n, gelyk N, die parameter 133 00:06:08,940 --> 00:06:14,490 dat ons hierdie funksie het, die node wat ons wil eintlik verwyder. 134 00:06:14,490 --> 00:06:17,090 Enige vrae tot hier? 135 00:06:17,090 --> 00:06:18,360 Alle regte. 136 00:06:18,360 --> 00:06:24,140 OK, so nou laat ons trek 'n vinnige foto op die bord om dit te visualiseer. 137 00:06:24,140 --> 00:06:30,710 >> So kom ons sê daar is ons pragtige node. 138 00:06:30,710 --> 00:06:34,480 En dit het 'n waarde, ek sal net sê vier. 139 00:06:34,480 --> 00:06:40,340 En dit dui op die volgende node in ons geskakelde lys. 140 00:06:40,340 --> 00:06:42,220 En daar is niks voordat dit. 141 00:06:42,220 --> 00:06:45,800 So het ons ons vorige verwys na niks. 142 00:06:45,800 --> 00:06:48,110 In hierdie geval, wys ons agteruit. 143 00:06:48,110 --> 00:06:50,960 OK, net die opstel van my geskakelde lys hier. 144 00:06:50,960 --> 00:06:53,630 En ons het 'n lys wat wys aan hierdie struktuur te begin. 145 00:06:53,630 --> 00:06:57,220 146 00:06:57,220 --> 00:07:00,485 Ek sal een vir teken Ter wille van volledigheid. 147 00:07:00,485 --> 00:07:04,209 148 00:07:04,209 --> 00:07:06,117 OK. 149 00:07:06,117 --> 00:07:07,480 Ek sal hierdie vorentoe wys. 150 00:07:07,480 --> 00:07:09,550 En ek sal die een terug wys. 151 00:07:09,550 --> 00:07:10,360 Oeps, jammer. 152 00:07:10,360 --> 00:07:12,710 Ja, agtertoe het hierdie. 153 00:07:12,710 --> 00:07:15,548 154 00:07:15,548 --> 00:07:16,967 Doen dit weer. 155 00:07:16,967 --> 00:07:18,330 OK, daar gaan ons. 156 00:07:18,330 --> 00:07:19,910 Alle reg, het dit. 157 00:07:19,910 --> 00:07:21,780 OK, hier is ons prentjie. 158 00:07:21,780 --> 00:07:24,860 >> OK, so wil ons twee gevalle te oorweeg. 159 00:07:24,860 --> 00:07:27,330 Die eerste geval is indien die node ons wil verwyder 160 00:07:27,330 --> 00:07:29,420 is by die begin van ons lys. 161 00:07:29,420 --> 00:07:34,070 En dan, die tweede geval wat ons wil om te oorweeg is as dit nêrens anders. 162 00:07:34,070 --> 00:07:37,660 Ek verstaan ​​dat dit 'n heeltemal morsig teken met al my skoonmaak, 163 00:07:37,660 --> 00:07:40,400 maar hopelik sal ons probeer om te dit duidelik maak met 'n paar kode. 164 00:07:40,400 --> 00:07:45,450 >> OK, so laat dek die geval waar ons ons node, 165 00:07:45,450 --> 00:07:48,900 en dit is op die heel begin van ons geskakelde lys. 166 00:07:48,900 --> 00:07:50,810 Enigiemand gee my 'n voorstel hier as wat 167 00:07:50,810 --> 00:07:54,684 Ek moet doen om werklik ons ​​node verwyder? 168 00:07:54,684 --> 00:07:55,970 Dit is 'n bietjie lastig. 169 00:07:55,970 --> 00:07:56,470 OK? 170 00:07:56,470 --> 00:07:59,628 >> GEHOOR: Jy het die te neem node dit sou wees voordat dit 171 00:07:59,628 --> 00:08:01,794 en maak dit verwys na die een wat sou wees nadat dit, 172 00:08:01,794 --> 00:08:03,004 en neem die node wat sou wees na dit en maak 173 00:08:03,004 --> 00:08:04,554 dit verwys na die knoop voordat dit. 174 00:08:04,554 --> 00:08:05,220 HANNAH: Presies. 175 00:08:05,220 --> 00:08:10,640 OK, so dit is die geval where-- ons twee gevalle. 176 00:08:10,640 --> 00:08:14,100 Ons het die geval waar die node wat ons soek 177 00:08:14,100 --> 00:08:18,270 is aan die voorkant van die lys. 178 00:08:18,270 --> 00:08:23,110 OK, en dan die geval dat jy beskryf is anders, reg? 179 00:08:23,110 --> 00:08:24,500 Dit is iewers anders in die lys. 180 00:08:24,500 --> 00:08:27,460 181 00:08:27,460 --> 00:08:32,840 So jy sê, moet ons kyk na die knoop vorige, 182 00:08:32,840 --> 00:08:36,500 en maak die vorige node verwys na die volgende node. 183 00:08:36,500 --> 00:08:40,510 So kom ons sê ons is probeer om uit te neem vyf 184 00:08:40,510 --> 00:08:43,059 in my baie slordig tekening hier. 185 00:08:43,059 --> 00:08:47,530 Ons wil seker maak dat maak vier punte nou tot ses. 186 00:08:47,530 --> 00:08:49,590 Vier se volgende punte tot ses. 187 00:08:49,590 --> 00:08:52,150 En ses se vorige punte te vier. 188 00:08:52,150 --> 00:08:53,960 Dit is ons doel hier, reg? 189 00:08:53,960 --> 00:08:56,150 Dit is wat ek dink jy net gesê daar. 190 00:08:56,150 --> 00:08:58,450 >> OK, so kom ons kry daardie eerste stuk. 191 00:08:58,450 --> 00:09:02,300 Kom ons doen die die vorige wyser vorige. 192 00:09:02,300 --> 00:09:06,550 193 00:09:06,550 --> 00:09:09,690 So vier se volgende behoort te wys wat? 194 00:09:09,690 --> 00:09:13,210 195 00:09:13,210 --> 00:09:14,900 Presies, in hierdie geval, ses. 196 00:09:14,900 --> 00:09:18,470 So moet ons sê wyser, die volgende. 197 00:09:18,470 --> 00:09:20,600 OK? 198 00:09:20,600 --> 00:09:21,150 Alle regte. 199 00:09:21,150 --> 00:09:24,870 So laat ons ontslae te raak van hierdie lelike prentjie en probeer om 'n effens mooier een te trek. 200 00:09:24,870 --> 00:09:29,040 201 00:09:29,040 --> 00:09:31,172 Ons het ons lys kop hier. 202 00:09:31,172 --> 00:09:36,440 203 00:09:36,440 --> 00:09:42,740 En wat verwys na die eerste node in ons geskakelde lys, wat ons gesê het, is vier. 204 00:09:42,740 --> 00:09:45,620 Hier is ons tweede node, vyf. 205 00:09:45,620 --> 00:09:47,307 En ons derde knoop, ses. 206 00:09:47,307 --> 00:09:50,265 Net probeer om die presiese dieselfde te trek prentjie, net 'n bietjie meer skoon. 207 00:09:50,265 --> 00:09:52,780 208 00:09:52,780 --> 00:09:56,280 OK, so vier se volgende wys oorspronklik tot vyf. 209 00:09:56,280 --> 00:09:58,620 Vyf se volgende punte tot ses. 210 00:09:58,620 --> 00:10:00,170 Ses se vorige punte tot vyf. 211 00:10:00,170 --> 00:10:02,470 En vyf se vorige punte te vier. 212 00:10:02,470 --> 00:10:03,360 So baie lekkerder! 213 00:10:03,360 --> 00:10:04,530 OK, cool. 214 00:10:04,530 --> 00:10:07,770 >> So nou, wat ons gedoen het net hier, hierdie lyn van die kode, 215 00:10:07,770 --> 00:10:12,680 wat sê wyser vorige volgende, so wat beteken dit? 216 00:10:12,680 --> 00:10:17,540 Dit beteken dat as ons kyk na vyf, gaan na die vorige node, 217 00:10:17,540 --> 00:10:21,970 en dit is die volgende moet nou punt tot vyf se volgende. 218 00:10:21,970 --> 00:10:27,840 So in wese, wat dit is om is dit is die skoonmaak van die pyl 219 00:10:27,840 --> 00:10:29,640 en maak dit oorslaan reg oor vyf. 220 00:10:29,640 --> 00:10:31,360 Is dit duidelik? 221 00:10:31,360 --> 00:10:33,200 Ek weet wat kan wees 'n bietjie oppervlakkig. 222 00:10:33,200 --> 00:10:34,480 Ek sien 'n paar hoof knik. 223 00:10:34,480 --> 00:10:35,390 Dit is goed. 224 00:10:35,390 --> 00:10:36,670 OK, cool. 225 00:10:36,670 --> 00:10:39,590 Nou, wat is die volgende stap? 226 00:10:39,590 --> 00:10:42,060 >> Ek het weer die volgende. 227 00:10:42,060 --> 00:10:45,297 Nou, wat ander pyl moet ek verander? 228 00:10:45,297 --> 00:10:46,130 Hierdie een hier. 229 00:10:46,130 --> 00:10:47,560 Ses se vorige. 230 00:10:47,560 --> 00:10:50,620 Ons wil nie ses se vorige om te wys op vyf nie. 231 00:10:50,620 --> 00:10:54,580 Ons wil dit om te wys op vier. 232 00:10:54,580 --> 00:10:56,190 Maak die foto sin maak? 233 00:10:56,190 --> 00:10:58,370 So nou kan ons eintlik neem vyf uit. 234 00:10:58,370 --> 00:10:59,370 So laat ons kry dat die stuk. 235 00:10:59,370 --> 00:11:03,390 236 00:11:03,390 --> 00:11:11,180 Wat moet ek doen voordat ek herstel ses se vorige vier? 237 00:11:11,180 --> 00:11:14,360 Enige idees daar? 238 00:11:14,360 --> 00:11:17,369 >> GEHOOR: Vrye die knoop tussen hulle deur dit te nul? 239 00:11:17,369 --> 00:11:17,910 HANNAH: Cool. 240 00:11:17,910 --> 00:11:21,100 Beslis, ons einddoel is gaan wees om die node te bevry. 241 00:11:21,100 --> 00:11:22,490 Sodat ons dit kan doen reg hier. 242 00:11:22,490 --> 00:11:23,540 Gratis wyser. 243 00:11:23,540 --> 00:11:24,810 Absoluut. 244 00:11:24,810 --> 00:11:29,160 Maar selfs voor dit, laat se just-- ons doel reg 245 00:11:29,160 --> 00:11:38,730 hier is wyser na die volgende stel vorige gelyk aan te meld vorige. 246 00:11:38,730 --> 00:11:40,760 Ek weet dit is om gedek. 247 00:11:40,760 --> 00:11:45,440 OK, laat ons take-- cool. 248 00:11:45,440 --> 00:11:46,990 Kan almal sien dit bottom line? 249 00:11:46,990 --> 00:11:47,840 Of is dit super klein? 250 00:11:47,840 --> 00:11:50,430 251 00:11:50,430 --> 00:11:54,300 >> So voordat ons voer hierdie lyn hier, ons wil 252 00:11:54,300 --> 00:11:58,375 om seker te maak dat die maak wyser volgende is nie null. 253 00:11:58,375 --> 00:12:00,500 Want as wyser volgende is null, watter soort van fout 254 00:12:00,500 --> 00:12:02,727 kry ek as ek probeer om te verwysing 'n null pointer? 255 00:12:02,727 --> 00:12:03,560 GEHOOR: ma skuld. 256 00:12:03,560 --> 00:12:05,660 HANNAH: 'n seg skuld, mooi. 257 00:12:05,660 --> 00:12:09,690 OK, so as dit is nie null, dan kan ons herstel. 258 00:12:09,690 --> 00:12:14,420 En ons het ses punt weer te vier. 259 00:12:14,420 --> 00:12:17,440 Vrae tot hierdie punt? 260 00:12:17,440 --> 00:12:17,940 Ja? 261 00:12:17,940 --> 00:12:19,814 >> GEHOOR: In jou eerste As verklaring, het jy 262 00:12:19,814 --> 00:12:23,817 beteken dat die pyl te hê volgende, of [onhoorbaar]? 263 00:12:23,817 --> 00:12:25,150 HANNAH: ek bedoel wyser pyl n. 264 00:12:25,150 --> 00:12:30,270 So basies, wat ek probeer om te doen is te sê, die huidige node dat ek 265 00:12:30,270 --> 00:12:34,100 iterating oor die huidige node wat Ek is op soek na, ek stoor in wyser. 266 00:12:34,100 --> 00:12:37,630 En ek wil wyser se om te weet waarde, wat in hierdie geval is n. 267 00:12:37,630 --> 00:12:39,500 En ek wil om te sien, is die knoop ek soek 268 00:12:39,500 --> 00:12:42,790 vir die node ek mik te verwyder? 269 00:12:42,790 --> 00:12:47,657 So dit is waarom ons hier aanwijzer n. 270 00:12:47,657 --> 00:12:49,857 >> GEHOOR: So het die pyl gaan tot n, jy die waarde 271 00:12:49,857 --> 00:12:52,058 en bêre dit in 'n knoop genoem n? 272 00:12:52,058 --> 00:12:55,410 273 00:12:55,410 --> 00:12:58,820 >> HANNAH: So dit is soos as ek gaan deur middel van hierdie geskakelde lys 274 00:12:58,820 --> 00:13:00,310 en verwys na vyf. 275 00:13:00,310 --> 00:13:03,600 As ek wil hê dat die waarde te kry, as Ek wil dat die getal, 5 te kry, 276 00:13:03,600 --> 00:13:06,400 Ek het wyser pyl N te doen. 277 00:13:06,400 --> 00:13:06,900 Cool? 278 00:13:06,900 --> 00:13:07,900 Ja. 279 00:13:07,900 --> 00:13:11,200 >> GEHOOR: N is die naam van die veranderlike? 280 00:13:11,200 --> 00:13:11,700 HANNAH: Ja. 281 00:13:11,700 --> 00:13:14,870 So as ons flip terug een slide, n is die naam 282 00:13:14,870 --> 00:13:18,660 van die waarde binnekant van die node in ons geskakelde lys. 283 00:13:18,660 --> 00:13:21,510 En ek weet dit kan 'n bietjie kry bietjie verwarrend omdat ons ook 284 00:13:21,510 --> 00:13:24,680 vra die ding wat ons wil n te verwyder. 285 00:13:24,680 --> 00:13:26,717 So dit is waar dat een lyn vandaan kom. 286 00:13:26,717 --> 00:13:27,671 Ja? 287 00:13:27,671 --> 00:13:31,010 >> GEHOOR: Wat het jy [Onhoorbaar] hoe hulle werk? 288 00:13:31,010 --> 00:13:33,872 289 00:13:33,872 --> 00:13:35,780 A wyser [onhoorbaar]? 290 00:13:35,780 --> 00:13:37,520 >> HANNAH: Natuurlik. 291 00:13:37,520 --> 00:13:40,027 Praat jy about-- watter lyn? 292 00:13:40,027 --> 00:13:41,526 GEHOOR: Die laaste reël [onhoorbaar]. 293 00:13:41,526 --> 00:13:44,280 294 00:13:44,280 --> 00:13:45,250 >> HANNAH: Seker, OK. 295 00:13:45,250 --> 00:13:48,540 So laat ons kyk na die prentjie in Om te probeer om dit te verduidelik. 296 00:13:48,540 --> 00:13:51,030 Ek is jammer vir die kamera, die vraag was 297 00:13:51,030 --> 00:13:54,580 kan ons wyser verduidelik arrow volgende wyser vorige. 298 00:13:54,580 --> 00:14:01,510 OK, so kom ons sê ons is op vyf en ons doel is vyf te verwyder. 299 00:14:01,510 --> 00:14:07,240 So aanwijzer volgende, wat van hierdie drie nodes beteken dit gee ons? 300 00:14:07,240 --> 00:14:10,840 Dit bring ons by die sesde node, reg? 301 00:14:10,840 --> 00:14:16,490 >> OK, so nou is ons vra vir die ses se vorige. 302 00:14:16,490 --> 00:14:17,060 OK? 303 00:14:17,060 --> 00:14:20,210 En ons is die Herstel hierdie gelyk te wees tot vier, 304 00:14:20,210 --> 00:14:23,214 wat gebeur het vyf se vorige wees. 305 00:14:23,214 --> 00:14:25,180 Ek weet, dit is super hard om tred te hou. 306 00:14:25,180 --> 00:14:29,286 Ek het regtig aanbeveel jy prentjies teken As jy 'n vraag soos hierdie. 307 00:14:29,286 --> 00:14:30,242 Ja? 308 00:14:30,242 --> 00:14:32,617 >> GEHOOR: Is die rede dat ons het nie 'n [onhoorbaar]? 309 00:14:32,617 --> 00:14:37,430 310 00:14:37,430 --> 00:14:38,570 >> HANNAH: Presies. 311 00:14:38,570 --> 00:14:44,800 So die vraag is, hoekom doen ons nie nodig om hier te gaan? 312 00:14:44,800 --> 00:14:48,160 Hoekom het ons nie nodig het om seker te maak dat wyser vorige is nie gelyk aan nul? 313 00:14:48,160 --> 00:14:50,070 En dit is omdat ons reeds geskei word 314 00:14:50,070 --> 00:14:52,490 die geval indien die wyser se aan die begin. 315 00:14:52,490 --> 00:14:54,060 Baie goeie vraag. 316 00:14:54,060 --> 00:14:56,880 Enigiets anders op hierdie? 317 00:14:56,880 --> 00:14:57,380 OK, cool. 318 00:14:57,380 --> 00:14:58,360 So laat dit voltooi het. 319 00:14:58,360 --> 00:14:59,890 Ons is amper daar. 320 00:14:59,890 --> 00:15:01,310 >> So, wat as dit by die kop? 321 00:15:01,310 --> 00:15:03,360 Wat as in plaas van probeer vyf te verwyder, 322 00:15:03,360 --> 00:15:06,240 ons wou eintlik vier skrap? 323 00:15:06,240 --> 00:15:07,270 Wat sou ek doen? 324 00:15:07,270 --> 00:15:09,610 Wel, ek wil my kop oor wat om te herstel? 325 00:15:09,610 --> 00:15:14,288 326 00:15:14,288 --> 00:15:15,585 Skree dit uit? 327 00:15:15,585 --> 00:15:16,710 GEHOOR: Die een na dit. 328 00:15:16,710 --> 00:15:17,460 HANNAH: Beautiful. 329 00:15:17,460 --> 00:15:26,430 OK, so ons wil lys te word wys aan alles wat ons wyser volgende node is. 330 00:15:26,430 --> 00:15:29,040 Goed. 331 00:15:29,040 --> 00:15:30,810 En net vir volledigheid se ontwil, sou ons 332 00:15:30,810 --> 00:15:35,590 wil dit gaan so lank as ons lys is nie null, solank ons ​​lys is nie 333 00:15:35,590 --> 00:15:42,730 leeg, dan wil ons te stel ons vorige gelyk aan nul. 334 00:15:42,730 --> 00:15:46,960 335 00:15:46,960 --> 00:15:50,230 Vraag so ver? 336 00:15:50,230 --> 00:15:53,205 'N stap weg from--? 337 00:15:53,205 --> 00:15:55,530 >> GEHOOR: dit sou wees as lys is nie gelyk aan nul? 338 00:15:55,530 --> 00:15:56,950 >> HANNAH: Ja, jy is heeltemal reg. 339 00:15:56,950 --> 00:15:58,130 Ek is so jammer. 340 00:15:58,130 --> 00:16:00,040 Is lys is nie gelyk aan nul. 341 00:16:00,040 --> 00:16:01,915 Awesome. 342 00:16:01,915 --> 00:16:04,245 Probeer om dit te bring al op die skerm. 343 00:16:04,245 --> 00:16:06,870 Dit is soort van val af. 344 00:16:06,870 --> 00:16:07,730 Jammer, ouens. 345 00:16:07,730 --> 00:16:11,874 En laaste maar nie die minste nie, al ons het om te doen, is om terug. 346 00:16:11,874 --> 00:16:12,840 OK. 347 00:16:12,840 --> 00:16:15,400 Dit was 'n baie vol in baie vinnig. 348 00:16:15,400 --> 00:16:16,800 Neem 'n tweede dit oor te kyk. 349 00:16:16,800 --> 00:16:18,216 Vertel my as jy enige vrae het. 350 00:16:18,216 --> 00:16:20,232 351 00:16:20,232 --> 00:16:20,732 Ja? 352 00:16:20,732 --> 00:16:26,940 >> GEHOOR: As lys is by die kop, then-- wag, Nevermind. 353 00:16:26,940 --> 00:16:27,700 >> HANNAH: OK, goed. 354 00:16:27,700 --> 00:16:30,987 So, dit is as lys is aan die hoof, ons verwyder dit wat ons plaas. 355 00:16:30,987 --> 00:16:31,486 Ja? 356 00:16:31,486 --> 00:16:33,777 >> GEHOOR: Kan jy verduidelik die eerste as verklaring weer? 357 00:16:33,777 --> 00:16:36,149 As die wyser na N is gelyk aan n? 358 00:16:36,149 --> 00:16:36,690 HANNAH: Natuurlik. 359 00:16:36,690 --> 00:16:42,780 So ons doel van hierdie hele funksie is die knoop wat waarde N te verwyder. 360 00:16:42,780 --> 00:16:47,460 So as ons vind, as ons iterating deur ons lys, 361 00:16:47,460 --> 00:16:51,770 die knoop met 'n waarde N, dit is die een wat ons wil verwyder. 362 00:16:51,770 --> 00:16:57,286 So al die verwydering gebeur binnekant van die groot as verklaring. 363 00:16:57,286 --> 00:16:58,593 Doen wat sin maak? 364 00:16:58,593 --> 00:16:59,480 Cool. 365 00:16:59,480 --> 00:16:59,990 Ja? 366 00:16:59,990 --> 00:17:02,864 >> GEHOOR: Miskien het jy net nie kan sien , maar nie jy moet ook 'n lyn 367 00:17:02,864 --> 00:17:06,024 vir blaai deur die lys? 368 00:17:06,024 --> 00:17:06,690 HANNAH: Awesome. 369 00:17:06,690 --> 00:17:10,896 Kom ons bring dit op 'n bietjie, en ons sal dit reg in die onderste gooi. 370 00:17:10,896 --> 00:17:13,282 371 00:17:13,282 --> 00:17:15,490 Dalk is dit die bord sou het 'n effens beter idee. 372 00:17:15,490 --> 00:17:17,829 So hoe sou ek Muis vorentoe? 373 00:17:17,829 --> 00:17:20,184 >> GEHOOR: Pointer gelyk wyser plus een. 374 00:17:20,184 --> 00:17:21,599 >> HANNAH: Beautiful. 375 00:17:21,599 --> 00:17:25,050 So wat ons toelaat om te voortgaan iterating deur. 376 00:17:25,050 --> 00:17:26,251 OK. 377 00:17:26,251 --> 00:17:27,750 GEHOOR: Sou dit nie daar wees om 'n ander een verwag? 378 00:17:27,750 --> 00:17:29,028 HANNAH: Een meer tyd? 379 00:17:29,028 --> 00:17:32,444 GEHOOR: Sou daar nie wees nie 'n ander na die groot ou as 380 00:17:32,444 --> 00:17:35,519 stelling [onhoorbaar]? 381 00:17:35,519 --> 00:17:36,310 HANNAH: Watter deel? 382 00:17:36,310 --> 00:17:38,350 Ek is jammer. 383 00:17:38,350 --> 00:17:41,800 >> GEHOOR: Die traversal, moet nie daar wees 'n ander een verwag? 384 00:17:41,800 --> 00:17:43,550 HANNAH: Jy absoluut kan 'n ander het. 385 00:17:43,550 --> 00:17:46,930 Want ek het 'n opbrengs reg daar, hoef jy nie 'n ander nie. 386 00:17:46,930 --> 00:17:48,760 Maar ja, goeie vraag. 387 00:17:48,760 --> 00:17:50,170 OK, ja? 388 00:17:50,170 --> 00:17:52,878 GEHOOR: Kan ons dink wyser wat beweeg deur die lys 389 00:17:52,878 --> 00:17:56,610 as om op die waarde van elke knoop in die lys? 390 00:17:56,610 --> 00:18:00,650 Of moet ons dink aan dit as soort van buite die lys? 391 00:18:00,650 --> 00:18:02,350 >> HANNAH: Óf die een is goed, dink ek. 392 00:18:02,350 --> 00:18:05,880 Die manier waarop ek dink dit is Ek sê, OK, ek is wyser. 393 00:18:05,880 --> 00:18:06,520 En dit is vir my. 394 00:18:06,520 --> 00:18:07,150 Dit is my hand. 395 00:18:07,150 --> 00:18:09,960 Ek gaan om te wys op die verskillende dinge wat ek wil Itereer deur. 396 00:18:09,960 --> 00:18:12,270 Eerstens, ek gaan wys aan die hoof van die lys. 397 00:18:12,270 --> 00:18:14,144 En dit vertel vir my ek is gaan om te wys op vier. 398 00:18:14,144 --> 00:18:18,060 En so My, buite die lys, Ek kan wys elk van hierdie elemente. 399 00:18:18,060 --> 00:18:19,520 So ek dink aan myself as wyser. 400 00:18:19,520 --> 00:18:21,645 GEHOOR: So wanneer jy verwyder een van daardie elemente, 401 00:18:21,645 --> 00:18:23,404 jy jouself verwyder, om so te praat. 402 00:18:23,404 --> 00:18:24,070 HANNAH: Presies. 403 00:18:24,070 --> 00:18:25,920 So jy die ding verwyder jy verwys na. 404 00:18:25,920 --> 00:18:28,340 So in die voorbeeld wat ons gesien waar ons 405 00:18:28,340 --> 00:18:31,670 probeer vyf te verwyder, wanneer ek verwys na vyf, 406 00:18:31,670 --> 00:18:34,200 Ek wil die te verwyder ding wat ek verwys na. 407 00:18:34,200 --> 00:18:35,870 Presies reg. 408 00:18:35,870 --> 00:18:36,577 Ja? 409 00:18:36,577 --> 00:18:39,410 GEHOOR: Het ons geneem sorg van die geval waar n is nie in die lys? 410 00:18:39,410 --> 00:18:40,460 HANNAH: As N is nie in die lys? 411 00:18:40,460 --> 00:18:43,501 Al wat gaan gebeur is dat jy gaan Itereer deur en itereer 412 00:18:43,501 --> 00:18:47,616 deur, en dan, jy gaan te kry om null aan te meld, 413 00:18:47,616 --> 00:18:48,990 en dan is jy gedoen gaan word. 414 00:18:48,990 --> 00:18:50,812 >> GEHOOR: So doen ons enigiets om terug te keer? 415 00:18:50,812 --> 00:18:51,520 HANNAH: Ons kan. 416 00:18:51,520 --> 00:18:54,500 Die manier dat as dit gedefinieer funksie, sê ek net dat dit terug 417 00:18:54,500 --> 00:18:55,770 niet, ongeag. 418 00:18:55,770 --> 00:18:58,360 Maar jy kan iets het soos die terugkeer van 'n heelgetal, 419 00:18:58,360 --> 00:19:00,920 en het dit terug negatiewe 1 as dit nie. 420 00:19:00,920 --> 00:19:03,070 Iets soos dit. 421 00:19:03,070 --> 00:19:04,494 Vrae with-- ja? 422 00:19:04,494 --> 00:19:05,410 GEHOOR: [onhoorbaar]? 423 00:19:05,410 --> 00:19:05,993 HANNAH: Jammer? 424 00:19:05,993 --> 00:19:07,419 GEHOOR: [onhoorbaar]? 425 00:19:07,419 --> 00:19:07,960 HANNAH: Natuurlik. 426 00:19:07,960 --> 00:19:11,730 So wat is die actual-- Sodra ons gedoen al hierdie werk van die beweging 427 00:19:11,730 --> 00:19:16,530 al hierdie pyle rond, ons hele doel was om ontslae te raak van die node 428 00:19:16,530 --> 00:19:18,230 dat ons is op soek na. 429 00:19:18,230 --> 00:19:21,610 So in hierdie geval, bevry wyser, as ek verwys na vyf, 430 00:19:21,610 --> 00:19:24,670 dit is soos die skoonmaak van hierdie middel node. 431 00:19:24,670 --> 00:19:27,250 Dit is die gratis wyser deel. 432 00:19:27,250 --> 00:19:29,090 Dit maak sin? 433 00:19:29,090 --> 00:19:31,390 >> GEHOOR: So selfs gedink jy het nie [onhoorbaar]? 434 00:19:31,390 --> 00:19:36,060 >> HANNAH: So het ons aanvaar aan die begin ons het 'n paar lys wat was already-- 435 00:19:36,060 --> 00:19:37,220 hulle het saam te stel nie. 436 00:19:37,220 --> 00:19:39,761 So om dit te bou lys, het seker hulle [onhoorbaar]. 437 00:19:39,761 --> 00:19:42,190 438 00:19:42,190 --> 00:19:42,750 Cool. 439 00:19:42,750 --> 00:19:44,490 Enigiets anders met hierdie? 440 00:19:44,490 --> 00:19:46,386 Ja? 441 00:19:46,386 --> 00:19:49,204 >> GEHOOR: Wat as die lys nie die nul lyn gelyk? 442 00:19:49,204 --> 00:19:49,704 [Onhoorbaar]? 443 00:19:49,704 --> 00:19:52,289 444 00:19:52,289 --> 00:19:53,080 HANNAH: Right hier? 445 00:19:53,080 --> 00:19:53,840 GEHOOR: Ja. 446 00:19:53,840 --> 00:19:57,370 HANNAH: OK, al wat ek doen is ek net om seker 447 00:19:57,370 --> 00:20:03,250 wat voor ek probeer om dereference lys voordat ek probeer om toegang tot die vorige, 448 00:20:03,250 --> 00:20:07,210 Ek wil om seker te maak dat dit nie null so ek kry nie 'n seg skuld. 449 00:20:07,210 --> 00:20:08,400 Cool. 450 00:20:08,400 --> 00:20:10,820 >> OK, ek weet dit was nogal 'n baie om deur te kom. 451 00:20:10,820 --> 00:20:14,950 So hierdie skyfie sal wees aan u beskikbaar gestel. 452 00:20:14,950 --> 00:20:17,341 Sodat jy kan gaan deur dit in meer detail. 453 00:20:17,341 --> 00:20:17,841 Ja? 454 00:20:17,841 --> 00:20:19,749 >> GEHOOR: Hoekom doen die lys [onhoorbaar]? 455 00:20:19,749 --> 00:20:24,129 456 00:20:24,129 --> 00:20:24,670 HANNAH: Natuurlik. 457 00:20:24,670 --> 00:20:27,390 So lys wys werklik hierdie element reg hier, 458 00:20:27,390 --> 00:20:29,200 die eerste element in die lys. 459 00:20:29,200 --> 00:20:30,748 So kan dit nie 'n vorige. 460 00:20:30,748 --> 00:20:31,736 Ja? 461 00:20:31,736 --> 00:20:35,194 >> GEHOOR: Is die wyser punt by dieselfde adres in die geheue? 462 00:20:35,194 --> 00:20:38,404 Is dit wys na dieselfde adres in die geheue as die node 463 00:20:38,404 --> 00:20:40,640 dat dit verwys na? 464 00:20:40,640 --> 00:20:43,865 >> HANNAH: Ja, dit wys hierdie node in die geheue. 465 00:20:43,865 --> 00:20:47,190 >> GEHOOR: Right, so wanneer jy [onhoorbaar]? 466 00:20:47,190 --> 00:20:50,580 >> HANNAH: In 'n sekere sin, ja. 467 00:20:50,580 --> 00:20:51,280 OK. 468 00:20:51,280 --> 00:20:52,997 Alle reg, laat ons beweeg saam met hierdie. 469 00:20:52,997 --> 00:20:55,330 En as jy nog vrae het, hou om aan die einde, 470 00:20:55,330 --> 00:20:57,130 en ons kan gaan weer deur dit. 471 00:20:57,130 --> 00:20:58,120 OK, cool. 472 00:20:58,120 --> 00:21:00,490 Nou, ons kry om aan te beweeg tafels, drieë te hash, 473 00:21:00,490 --> 00:21:04,940 en bome wat jy het super vertroud is met in p-stel vyf speller. 474 00:21:04,940 --> 00:21:11,020 >> So hash tafel is net 'n skikking enkel geskakelde lyste 475 00:21:11,020 --> 00:21:14,050 of dubbel geskakelde lyste te kom van dit af. 476 00:21:14,050 --> 00:21:16,380 So ons het 'n soort assosiatiewe skikking. 477 00:21:16,380 --> 00:21:21,280 En hoe weet ons watter van hierdie skikkings emmers te kry in, 478 00:21:21,280 --> 00:21:24,137 gebruik ons ​​'n hash funksie. 479 00:21:24,137 --> 00:21:26,470 So in hierdie geval, kan enigiemand raai wat die hash funksie 480 00:21:26,470 --> 00:21:28,636 wil net gebaseer wees op 'n paar van die toevoer en afvoer? 481 00:21:28,636 --> 00:21:31,392 482 00:21:31,392 --> 00:21:33,194 >> GEHOOR: Brief aantal van die alfabet. 483 00:21:33,194 --> 00:21:33,860 HANNAH: Presies. 484 00:21:33,860 --> 00:21:36,160 Dit sit hulle net in alfabetiese volgorde. 485 00:21:36,160 --> 00:21:39,280 Alles wat met 'n begin A is dit in die eerste emmer. 486 00:21:39,280 --> 00:21:43,340 Alles met 'n B is in die maak tweede emmer, so aan, en so meer. 487 00:21:43,340 --> 00:21:45,620 Awesome, OK. 488 00:21:45,620 --> 00:21:48,980 En 'n hash funksie is om enige funksie wat in 'n woord vind 489 00:21:48,980 --> 00:21:51,910 en sal jou vertel wat emmer dit hoort in. 490 00:21:51,910 --> 00:21:55,150 So wat inskrywing in ons array dit hoort in. 491 00:21:55,150 --> 00:21:58,080 >> So elke keer as ek gee my hash funksie 'n woord, 492 00:21:58,080 --> 00:22:00,660 dit moet vir my sê dieselfde plaas elke keer. 493 00:22:00,660 --> 00:22:03,270 So as ons gebruik maak van die hash funksie van die vorige skyfie 494 00:22:03,270 --> 00:22:05,950 waar ons sorteer deur die eerste letter van die alfabet, 495 00:22:05,950 --> 00:22:08,230 elke keer as ek gee my hash funksie "appel" 496 00:22:08,230 --> 00:22:10,180 dit moet altyd vir my terug 0. 497 00:22:10,180 --> 00:22:12,890 So as ek 'n appel te sit in my hash tafel, 498 00:22:12,890 --> 00:22:17,700 as ek "appel" aan my hash funksie, dit moet sê, gaan sit dit in die emmer 0. 499 00:22:17,700 --> 00:22:19,980 As ek op soek na 'n appel in my hash tafel 500 00:22:19,980 --> 00:22:24,340 en Ek sê, waar krag appel live, vra jy jou hash funksie. 501 00:22:24,340 --> 00:22:26,900 En dit sê, gaan na emmer 0. 502 00:22:26,900 --> 00:22:29,150 Alle reg? 503 00:22:29,150 --> 00:22:32,660 Vrae met hash funksies? 504 00:22:32,660 --> 00:22:34,570 Awesome. 505 00:22:34,570 --> 00:22:37,320 >> Hier is 'n bietjie meer gedetailleerde verduideliking 506 00:22:37,320 --> 00:22:39,570 van wat 'n hash funksie kan lyk. 507 00:22:39,570 --> 00:22:42,230 508 00:22:42,230 --> 00:22:42,960 Alle regte. 509 00:22:42,960 --> 00:22:45,960 Nou, die probleem met hash funksies in 'n ideale wêreld, 510 00:22:45,960 --> 00:22:48,870 ons sou net een het ding in elke emmer. 511 00:22:48,870 --> 00:22:50,900 Maar in werklikheid is, is daar nie net een woord 512 00:22:50,900 --> 00:22:54,280 wat begin met A. Daar is nie slegs een woord wat met B. So begin 513 00:22:54,280 --> 00:22:56,960 in hierdie geval, as ons skielik "berry" 514 00:22:56,960 --> 00:22:58,710 en ons wil om dit te sit in ons hash tafel, 515 00:22:58,710 --> 00:23:03,640 en ons sien, o, nee, piesang is reeds daar, wat gaan ons doen? 516 00:23:03,640 --> 00:23:05,900 >> Wel, ons het twee opsies. 517 00:23:05,900 --> 00:23:07,990 Die eerste opsie is lineêre indringende, wat 518 00:23:07,990 --> 00:23:11,100 beteken net gaan vind die volgende leë emmer. 519 00:23:11,100 --> 00:23:14,100 Gaan vind die volgende leë verskeidenheid inskrywing. 520 00:23:14,100 --> 00:23:15,750 En net sit "berry" daar. 521 00:23:15,750 --> 00:23:18,880 So ek weet dit is veronderstel om te gaan met piesang in emmer een. 522 00:23:18,880 --> 00:23:22,155 Maar net sit dit in die emmer drie, omdat emmer drie is leeg. 523 00:23:22,155 --> 00:23:24,806 524 00:23:24,806 --> 00:23:26,680 Nog 'n opsie is waarskynlik wat jy implementeer 525 00:23:26,680 --> 00:23:29,220 in jou p-stel, waar jy moes aparte aaneenskakeling. 526 00:23:29,220 --> 00:23:33,990 So elkeen van jou emmers, elk van jou verskeidenheid elemente, 527 00:23:33,990 --> 00:23:38,410 nie net hou een woorde, maar eintlik hou 'n wyser na 'n lys van woorde. 528 00:23:38,410 --> 00:23:41,880 So dat as jy ' piesang in jou hash tafel 529 00:23:41,880 --> 00:23:44,740 en jy skielik wou Berry, geen probleem te voeg. 530 00:23:44,740 --> 00:23:51,110 Net voeg berry op die einde, of te die begin van jou geskakelde lys. 531 00:23:51,110 --> 00:23:54,040 OK, awesome. 532 00:23:54,040 --> 00:23:58,490 Vrae met hash tafels voor ons gaan aan? 533 00:23:58,490 --> 00:23:59,850 >> Alle regte. 534 00:23:59,850 --> 00:24:01,070 Bome en drieë gedruk. 535 00:24:01,070 --> 00:24:07,980 OK, so dit was 'n ander opsie vir die implementering van woordeboek. 536 00:24:07,980 --> 00:24:09,100 Jy kon gemaak het 'n drie gedruk. 537 00:24:09,100 --> 00:24:13,420 So dit is 'n spesiale soort boom wat optree soos 'n multi-vlak hash tafel. 538 00:24:13,420 --> 00:24:16,862 So jy kry die prentjie sien waar jy 'n skikking wat 539 00:24:16,862 --> 00:24:19,320 dui op 'n klomp van die skikkings wat dui op 'n klomp van die skikkings 540 00:24:19,320 --> 00:24:20,390 wat dui op 'n klomp van die skikkings. 541 00:24:20,390 --> 00:24:23,140 En ons sal sien presies wat dit sou lyk soos op 'n toekomstige skyfie. 542 00:24:23,140 --> 00:24:26,070 En meer in die algemeen, 'n boom is net 'n datastruktuur 543 00:24:26,070 --> 00:24:29,710 waarin die data is georganiseer in sommige hiërargie. 544 00:24:29,710 --> 00:24:32,610 So, waar ons sien ons 'n soort van begrip 545 00:24:32,610 --> 00:24:36,130 van 'n boonste vlak, 'n volgende vlak, 'n volgende vlak, 'n volgende vlak. 546 00:24:36,130 --> 00:24:39,690 So hierdie is waarskynlik die mees duidelike met 'n paar spesifieke voorbeelde. 547 00:24:39,690 --> 00:24:40,880 So hier is ons boom. 548 00:24:40,880 --> 00:24:42,970 Jy kan sien dat dit het bepaalde vlakke 549 00:24:42,970 --> 00:24:45,480 dat ons begin met die wortel node, een. 550 00:24:45,480 --> 00:24:47,640 En ons kan gaan af deur ons boom. 551 00:24:47,640 --> 00:24:50,730 552 00:24:50,730 --> 00:24:53,910 >> A binêre boom is 'n spesifieke tipe van die boom. 553 00:24:53,910 --> 00:24:56,770 En die enigste spesifikasie vir 'n binêre boom 554 00:24:56,770 --> 00:25:01,130 is dat elke node het hoogstens twee blare. 555 00:25:01,130 --> 00:25:03,960 So jy is nie van plan om enige te sien van hierdie nodes het drie of vier 556 00:25:03,960 --> 00:25:06,880 of 'n ander aantal blare. 557 00:25:06,880 --> 00:25:11,310 En dan nog meer spesifieke is 'n binêre soekboom 558 00:25:11,310 --> 00:25:18,010 waar elke node aan die linkerkant van die node gaan 'n waarde kleiner te hê. 559 00:25:18,010 --> 00:25:21,180 En elke waarde aan die reg gaan wees groter. 560 00:25:21,180 --> 00:25:26,900 So as jy sien 44 is op ons wortel, aan die linkerkant, 11, 22, en 33 561 00:25:26,900 --> 00:25:28,940 is almal minder as ons wortel. 562 00:25:28,940 --> 00:25:33,890 En op die regte is almal getalle bigger-- 66, 55, en 77. 563 00:25:33,890 --> 00:25:37,380 En hierdie eiendom geld op elke vlak van die boom. 564 00:25:37,380 --> 00:25:42,690 >> So wanneer ons gaan af na 22, 11, en 33, nog steeds 11 565 00:25:42,690 --> 00:25:46,950 is kleiner as 22 en 33 is groter as 22. 566 00:25:46,950 --> 00:25:50,160 En dit maak dit makliker om te soek want as ons is op soek na 'n nommer, 567 00:25:50,160 --> 00:25:53,877 ons weet presies wat tak te volg af. 568 00:25:53,877 --> 00:25:56,210 So dit moet jy 'n herinner bietjie van binêre soek. 569 00:25:56,210 --> 00:25:56,967 Ja? 570 00:25:56,967 --> 00:25:58,835 >> GEHOOR: So wanneer jy beskryf binêre, 571 00:25:58,835 --> 00:26:00,587 jy het gesê dit het op die meeste twee blare? 572 00:26:00,587 --> 00:26:01,170 HANNAH: MM-hm. 573 00:26:01,170 --> 00:26:02,580 GEHOOR: Kan dit minder? 574 00:26:02,580 --> 00:26:03,121 HANNAH: Ja. 575 00:26:03,121 --> 00:26:06,720 So kom ons sê, byvoorbeeld, jy het nie 'n ewe getal van die dinge 576 00:26:06,720 --> 00:26:11,791 en jy kan nie vul al jou blare, dit is goed as 'n mens het 'n. 577 00:26:11,791 --> 00:26:12,290 OK? 578 00:26:12,290 --> 00:26:12,789 Awesome. 579 00:26:12,789 --> 00:26:15,930 Enige ander vrae oor bome? 580 00:26:15,930 --> 00:26:16,670 OK. 581 00:26:16,670 --> 00:26:20,110 >> Terug na ons drieë as ek praat oor 'n bietjie vroeër, 582 00:26:20,110 --> 00:26:23,900 hoe ons hierdie multi-vlak skikkings. 583 00:26:23,900 --> 00:26:26,280 So in hierdie geval, ons begin by die top. 584 00:26:26,280 --> 00:26:29,030 En ons kan enige gegewe woord volg af. 585 00:26:29,030 --> 00:26:30,780 So kom ons sê ons wou om te kyk vir Turing. 586 00:26:30,780 --> 00:26:34,380 Ons begin by T, volg dit af 'n skikking wat U bevat, 587 00:26:34,380 --> 00:26:37,350 en volg dit af totdat ons bereik hierdie klein delta wat 588 00:26:37,350 --> 00:26:39,060 vertel ons, ja, jy 'n woord gevind. 589 00:26:39,060 --> 00:26:43,200 590 00:26:43,200 --> 00:26:44,120 Duidelik op drieë? 591 00:26:44,120 --> 00:26:48,138 Iets te daar te gaan? 592 00:26:48,138 --> 00:26:48,908 Ja? 593 00:26:48,908 --> 00:26:51,866 GEHOOR: Is die simbool van delta ruimte binne die drie te beset? 594 00:26:51,866 --> 00:26:54,532 HANNAH: Ja, so is dit nie noodwendig eens 'n delta te wees. 595 00:26:54,532 --> 00:26:57,760 Maar ons moet een of ander manier te vertel ons computer-- jammer, 596 00:26:57,760 --> 00:27:01,130 sodat ons weet dat TUR is nie 'n woord nie. 597 00:27:01,130 --> 00:27:04,180 Want laat ons sê ons het nie hierdie konsep van 'n delta, hierdie konsep 598 00:27:04,180 --> 00:27:09,850 van geluk, jy 'n woord gevind, dit sou deurgaan en Itereer T-U-R, 599 00:27:09,850 --> 00:27:11,300 en dan sê, awesome, ek het dit! 600 00:27:11,300 --> 00:27:12,670 Dit moet 'n woord te wees. 601 00:27:12,670 --> 00:27:13,720 Maar dit is regtig nie. 602 00:27:13,720 --> 00:27:15,310 Ons wil die hele Turing 'n woord te wees. 603 00:27:15,310 --> 00:27:17,760 So moet ons iets aan die het einde wat sê, baie geluk, 604 00:27:17,760 --> 00:27:19,051 jy het 'n wettige woord. 605 00:27:19,051 --> 00:27:21,680 GEHOOR: So as jy het soos 26 letters in die alfabet, 606 00:27:21,680 --> 00:27:24,560 sou jy eintlik 27 sleutels in jou probeer? 607 00:27:24,560 --> 00:27:26,010 >> HANNAH: Awesome, ja. 608 00:27:26,010 --> 00:27:28,210 So eintlik, ek dink dat sal wees op die volgende skuif. 609 00:27:28,210 --> 00:27:29,440 Ta-da! 610 00:27:29,440 --> 00:27:32,880 Waar as jy 'n node in jou probeer, jy 611 00:27:32,880 --> 00:27:35,800 gaan 27 kinders in plaas van 26 te hê. 612 00:27:35,800 --> 00:27:39,010 613 00:27:39,010 --> 00:27:40,050 Enige vrae met wat? 614 00:27:40,050 --> 00:27:40,550 Ja? 615 00:27:40,550 --> 00:27:44,569 GEHOOR: Waarom drieë neem sodat veel ruimte [onhoorbaar] as jy gaan? 616 00:27:44,569 --> 00:27:47,629 Hoekom is dit beskou as [onhoorbaar]? 617 00:27:47,629 --> 00:27:48,170 HANNAH: Natuurlik. 618 00:27:48,170 --> 00:27:48,790 Kom ons gaan terug. 619 00:27:48,790 --> 00:27:52,350 Die vraag is, waarom is drieë soveel groter 620 00:27:52,350 --> 00:27:54,620 as iets soos 'n hash tafel. 621 00:27:54,620 --> 00:27:57,790 So vir elk van hierdie vlakke, selfs as hulle nie hier getrek, 622 00:27:57,790 --> 00:28:01,250 jy het al 26 karakters te hê. 623 00:28:01,250 --> 00:28:04,420 En die rede dat jy nie kan sê, O, maar soos vir Turing, ek 624 00:28:04,420 --> 00:28:07,570 nie nodig het om enige van daardie te hê dieselfde dinge op die vlak van U. Wel, 625 00:28:07,570 --> 00:28:11,390 As jy skielik wou voeg iets wat was soos T-H, 626 00:28:11,390 --> 00:28:14,800 jy nodig het om die te hê vermoë van die toevoeging van die woord. 627 00:28:14,800 --> 00:28:17,330 So vir elke enkele brief, jy gaan te hê 628 00:28:17,330 --> 00:28:19,730 'n klomp van te hê skikkings kom af van dit. 629 00:28:19,730 --> 00:28:24,060 Sodat jy kan sien hoe dit sou kry baie groot, baie vinnig. 630 00:28:24,060 --> 00:28:26,560 Enige ander vrae? 631 00:28:26,560 --> 00:28:28,980 Alle regte. 632 00:28:28,980 --> 00:28:29,832 Ja? 633 00:28:29,832 --> 00:28:33,210 >> GEHOOR: Wanneer is drieë vinniger as hash tabelle? 634 00:28:33,210 --> 00:28:36,280 >> HANNAH: Wanneer is drieë vinniger as hash tabelle? 635 00:28:36,280 --> 00:28:39,120 So as jy het 'n baie slegte hash funksie. 636 00:28:39,120 --> 00:28:41,840 So kom ons sê ek was soos, hier is jou hash funksie. 637 00:28:41,840 --> 00:28:43,660 Maak nie saak wat die woord jy my gee, dat ek altyd 638 00:28:43,660 --> 00:28:47,740 gaan om dit te sit in die rigting inskrywing 0. 639 00:28:47,740 --> 00:28:52,000 En so het ons uiteindelik met net om alles in een groot lang geskakelde lys. 640 00:28:52,000 --> 00:28:58,740 En so 'n lookup tyd sal op die ergste neem N is dit heel aan die einde van die lys. 641 00:28:58,740 --> 00:29:03,150 Met die drie, ons moet net Itereer deur die letters in die woord. 642 00:29:03,150 --> 00:29:07,080 So selfs as ons 'n klomp meer woorde aan ons probeer, 643 00:29:07,080 --> 00:29:09,620 dit sou ons nie langer neem 'n bepaalde woord te vind. 644 00:29:09,620 --> 00:29:11,750 >> Al wat ons moet doen, is om vir Byvoorbeeld, in hierdie geval, 645 00:29:11,750 --> 00:29:17,170 Kom ons sê ons is op soek na zoom, ons sou net moet Itereer oor 646 00:29:17,170 --> 00:29:19,840 Z-O-O-M, vier letters. 647 00:29:19,840 --> 00:29:22,250 So dit is net die lengte van die woord zoom. 648 00:29:22,250 --> 00:29:25,400 Dit maak nie saak hoeveel meer woorde ons in hierdie drie. 649 00:29:25,400 --> 00:29:30,225 Ons kan altyd kry dit in die vier stappe. 650 00:29:30,225 --> 00:29:31,215 Awesome. 651 00:29:31,215 --> 00:29:32,205 Ja? 652 00:29:32,205 --> 00:29:34,185 >> GEHOOR: So [onhoorbaar] is 'n skikking, reg? 653 00:29:34,185 --> 00:29:35,322 >> HANNAH: MM-hm. 654 00:29:35,322 --> 00:29:37,155 GEHOOR: As jy soek [onhoorbaar], 655 00:29:37,155 --> 00:29:40,929 sou jy het om te gaan deur middel van jou skikking te vind [onhoorbaar]? 656 00:29:40,929 --> 00:29:41,470 HANNAH: Natuurlik. 657 00:29:41,470 --> 00:29:44,000 GEHOOR: Is dit nie meer tyd in beslag neem? 658 00:29:44,000 --> 00:29:46,370 HANNAH: As ek gaan sê dat my skikking is altyd 659 00:29:46,370 --> 00:29:49,250 gaan wees A, B, C, D, E, F, G, blah blah blah, 660 00:29:49,250 --> 00:29:51,630 so as ek altyd weet dit is in presies dieselfde volgorde, 661 00:29:51,630 --> 00:29:53,880 as ek altyd weet dit is in alfabetiese volgorde, 662 00:29:53,880 --> 00:29:57,860 Ek kan net sê O is nommer so en so in die alfabet. 663 00:29:57,860 --> 00:29:59,620 Net spring op daardie plek. 664 00:29:59,620 --> 00:30:01,860 Want onthou, met skikkings, kan ons toegang 665 00:30:01,860 --> 00:30:06,590 enige element van daardie verskeidenheid in konstante tyd as ons weet waar ons is op soek. 666 00:30:06,590 --> 00:30:09,080 667 00:30:09,080 --> 00:30:09,580 Ja? 668 00:30:09,580 --> 00:30:12,005 >> GEHOOR: Op die vorige skuif [onhoorbaar] 27, 669 00:30:12,005 --> 00:30:14,430 maar 26 vir die eerste een. 670 00:30:14,430 --> 00:30:15,400 >> HANNAH: Jammer? 671 00:30:15,400 --> 00:30:18,800 >> GEHOOR: Is dit nie die eerste een 0, so sou dit nie wees 26? 672 00:30:18,800 --> 00:30:24,900 >> HANNAH: Seker, so wanneer ons sê 27, dit is gaan gee ons indekse 0 deur 26. 673 00:30:24,900 --> 00:30:28,220 Maar as jy eintlik tel diegene wat nie, is dit gaan wees 27. 674 00:30:28,220 --> 00:30:30,007 Goeie vraag. 675 00:30:30,007 --> 00:30:30,590 Enigiets anders? 676 00:30:30,590 --> 00:30:31,200 Ja? 677 00:30:31,200 --> 00:30:34,420 >> GEHOOR: So is drieë stadiger as hash tabelle? 678 00:30:34,420 --> 00:30:37,920 >> HANNAH: Drieë gaan wees, in teorie, vinniger as hash tabelle 679 00:30:37,920 --> 00:30:39,760 maar neem meer geheue. 680 00:30:39,760 --> 00:30:40,534 Ja? 681 00:30:40,534 --> 00:30:41,450 GEHOOR: [onhoorbaar]? 682 00:30:41,450 --> 00:30:45,770 683 00:30:45,770 --> 00:30:47,484 >> HANNAH: Ek is jammer, ek het julle nie geluister nie. 684 00:30:47,484 --> 00:30:48,400 GEHOOR: [onhoorbaar]. 685 00:30:48,400 --> 00:30:51,250 686 00:30:51,250 --> 00:30:54,100 0-25 gee jou 26. 687 00:30:54,100 --> 00:30:56,958 >> HANNAH: 0-25 sou gee jou 26, regs. 688 00:30:56,958 --> 00:30:58,457 >> GEHOOR: En dan [onhoorbaar]. 689 00:30:58,457 --> 00:30:59,040 HANNAH: Right. 690 00:30:59,040 --> 00:31:04,760 So het die getal wat ons spesifiseer is die aantal van die dinge in ons verskeidenheid. 691 00:31:04,760 --> 00:31:07,260 So as ons 27, dit is gaan ons te gee 0 692 00:31:07,260 --> 00:31:10,620 deur 26, wat sal gee ons kamer vir, in hierdie geval, 693 00:31:10,620 --> 00:31:12,770 Ek is nie, insluitend 'n toespraak. 694 00:31:12,770 --> 00:31:17,040 So kry ons '0 deur middel van 25 is die eerste 26 letters van die alfabet, 695 00:31:17,040 --> 00:31:18,990 of al 26 letters van die alfabet. 696 00:31:18,990 --> 00:31:21,190 En dan is dit die laaste ding, by inskrywing 26, is 697 00:31:21,190 --> 00:31:24,598 gaan om die tjek te wees merk of die delta. 698 00:31:24,598 --> 00:31:26,960 Enigiets anders? 699 00:31:26,960 --> 00:31:29,130 Awesome. 700 00:31:29,130 --> 00:31:30,020 Het my ruimte. 701 00:31:30,020 --> 00:31:31,020 OK, cool. 702 00:31:31,020 --> 00:31:33,240 >> So het ons reeds aangeraak nie. 703 00:31:33,240 --> 00:31:37,430 Maar die groot handel af tussen drieë en hash tabelle 704 00:31:37,430 --> 00:31:39,720 is dat drieë voorsien, in teorie, konstante opkyk 705 00:31:39,720 --> 00:31:42,890 tye, maar gebruik 'n hele klomp van die geheue. 706 00:31:42,890 --> 00:31:46,495 Alle reg, nou het ons 'n bietjie minder ingewikkelde strukture, 707 00:31:46,495 --> 00:31:49,640 en ons sal gedoen word met C, en ons sal reg langs beweeg. 708 00:31:49,640 --> 00:31:51,930 >> So stapels, ons het dit gesien in lesing waar jy 709 00:31:51,930 --> 00:31:55,020 iets soos 'n stapel bak waar 710 00:31:55,020 --> 00:31:57,330 die laaste ding wat jy sit op die stapel gaan 711 00:31:57,330 --> 00:31:59,500 die eerste ding wat jy neem af wees. 712 00:31:59,500 --> 00:32:02,880 So dit is wat regtig definieer 'n stapel is dat die laaste ding wat jy op 713 00:32:02,880 --> 00:32:06,080 gaan die eerste wees ding wat jy neem af. 714 00:32:06,080 --> 00:32:09,279 En die terminologie wat ons gebruik as ons gaan om iets te sit, 715 00:32:09,279 --> 00:32:12,070 as ons gaan iets toe te voeg tot ons stapel, ons noem dat stoot. 716 00:32:12,070 --> 00:32:14,970 En as ons iets doen af, noem ons dit knal. 717 00:32:14,970 --> 00:32:17,080 En as ons gaan implementering van 'n stapel, ons 718 00:32:17,080 --> 00:32:20,660 nodig om seker te maak om tred te hou van wees beide die grootte en die kapasiteit. 719 00:32:20,660 --> 00:32:24,940 So het die totale aantal elemente wat ons kan hou en die huidige aantal elemente 720 00:32:24,940 --> 00:32:27,880 dat ons '. 721 00:32:27,880 --> 00:32:29,885 >> En baie soortgelyke, ons het toue. 722 00:32:29,885 --> 00:32:34,510 En die enigste verskil is in plaas van met stapels, 723 00:32:34,510 --> 00:32:37,630 ons het gesê die laaste ding wat ons op is die eerste ding wat ons opstyg. 724 00:32:37,630 --> 00:32:40,940 So met toue, die eerste ding wat ons in 725 00:32:40,940 --> 00:32:43,129 gaan die wees eerste ding neem ons uit. 726 00:32:43,129 --> 00:32:45,420 So dit is soos as jy eintlik voering by 'n winkel 727 00:32:45,420 --> 00:32:48,140 en jy word gehelp, dan is die eerste persoon in die lyn 728 00:32:48,140 --> 00:32:50,880 moet die eerste persoon om gehelp te word nie. 729 00:32:50,880 --> 00:32:52,220 So wat sou 'n tou te wees. 730 00:32:52,220 --> 00:32:55,880 >> Dus moet ons die spoor van die te hou grootte, kapasiteit, en die hoof aangesien ons 731 00:32:55,880 --> 00:33:01,130 gaan almal voor af te neem van die lys plaas van die rug. 732 00:33:01,130 --> 00:33:03,480 Vrae oor dit? 733 00:33:03,480 --> 00:33:06,330 Enige C vrae wat jou pla? 734 00:33:06,330 --> 00:33:09,590 Data strukture, enige van die wat pret dinge? 735 00:33:09,590 --> 00:33:10,530 Alle reg, cool. 736 00:33:10,530 --> 00:33:14,120 So ek sal dit aan Alison te spring in 'n paar meer programmering. 737 00:33:14,120 --> 00:33:15,965 >> ALISON: Ag, ons sal sien. 738 00:33:15,965 --> 00:33:17,370 Ons sal sien hoe goed ek hier doen. 739 00:33:17,370 --> 00:33:21,410 OK, ek gaan om te probeer en vlieg deur middel van hierdie dinge, ouens. 740 00:33:21,410 --> 00:33:24,540 Hannah het baie in diepte op al haar dinge. 741 00:33:24,540 --> 00:33:26,900 Ek gaan om te probeer om te gee jou 'n vinnige oorsig ontploffing 742 00:33:26,900 --> 00:33:31,290 sodat ons kan kry om Davin met al die pret JavaScript en sekuriteit dinge 743 00:33:31,290 --> 00:33:33,380 wat miskien het jy eintlik meer wil hoor. 744 00:33:33,380 --> 00:33:36,600 >> OK, as Hannah gesê het, as jy enige vrae het, 745 00:33:36,600 --> 00:33:39,170 Ek is te vinnig gaan, asseblief, laat my weet. 746 00:33:39,170 --> 00:33:42,114 Ek sal vrae soos nodig beantwoord. 747 00:33:42,114 --> 00:33:45,280 So om te begin, gaan ons begin met waarskynlik een van die heel eerste dinge 748 00:33:45,280 --> 00:33:48,730 jy met die web geleer programmering, regte. 749 00:33:48,730 --> 00:33:52,720 So chmod, julle ouens moes gewees het meesters op hierdie met al die web 750 00:33:52,720 --> 00:33:54,870 programme wat jy het die afgelope tyd besig is. 751 00:33:54,870 --> 00:33:57,320 Dit is basies net 'n opdrag wat verander die regte 752 00:33:57,320 --> 00:34:00,779 of die toegang regte van ons lêerstelsel voorwerpe. 753 00:34:00,779 --> 00:34:02,570 Natuurlik, om werklik sien hierdie, as jy 754 00:34:02,570 --> 00:34:04,910 om enige probleme met hierdie tydens jou probleem stelle, 755 00:34:04,910 --> 00:34:11,460 jy mag gebruik het ls-l, wat is 'n lang, die oog soort te kry van soos hierdie, 756 00:34:11,460 --> 00:34:14,209 waar jy eintlik sien al die regte vir 'n lêer. 757 00:34:14,209 --> 00:34:16,850 758 00:34:16,850 --> 00:34:20,732 >> En regtig, ons is net gaan om te gaan redelik vinnig deur net mooi 759 00:34:20,732 --> 00:34:21,940 veel wat elkeen van hierdie beteken. 760 00:34:21,940 --> 00:34:24,481 So het ons hier D, wat staan ​​net vir die gids. 761 00:34:24,481 --> 00:34:26,790 762 00:34:26,790 --> 00:34:31,739 Dit is duidelik dat hier, sien ons rwx, wat leesbaar, skryfbaar, en uitvoerbare. 763 00:34:31,739 --> 00:34:37,090 Dit kan ook voorgestel word as stukkies, wat ons sal kry in op die volgende bladsy. 764 00:34:37,090 --> 00:34:40,699 So elke drietal wat ons gesien het hier, so dit is drie drieklanke. 765 00:34:40,699 --> 00:34:48,120 Ons het rwx, r niks x en r niks x vir hierdie eerste lêer. 766 00:34:48,120 --> 00:34:49,690 Dit is hierdie algemene struktuur. 767 00:34:49,690 --> 00:34:50,940 >> So ons het 'n paar gids. 768 00:34:50,940 --> 00:34:53,999 Ons het 'n paar gebruikers groep met hierdie regte. 769 00:34:53,999 --> 00:34:57,040 Sommige groep wat hierdie regte, en 'n wêreld wat 'n toestemming. 770 00:34:57,040 --> 00:34:59,420 Jy kan dink van hierdie as 'n drietal. 771 00:34:59,420 --> 00:35:01,130 Jy kan dink van hierdie as drie stukkies. 772 00:35:01,130 --> 00:35:04,060 Sodat hulle waardes kan hou oral uit 0 tot 773 00:35:04,060 --> 00:35:07,350 tot 7, wat is die rede waarom soms ons moes jy doen chmod 774 00:35:07,350 --> 00:35:17,510 600 in plaas van chmod rw wat ook al. 775 00:35:17,510 --> 00:35:19,170 Ons kry in 'n voorbeeld is daar. 776 00:35:19,170 --> 00:35:24,260 Maar basies, kan jy dink van hierdie as óf net rwx, 777 00:35:24,260 --> 00:35:28,520 of jy kan dink van hulle as 'n paar aantal waar hierdie eerste een hier 778 00:35:28,520 --> 00:35:31,480 verteenwoordig 'n getal tussen 0 en 7, die tweede een 779 00:35:31,480 --> 00:35:33,970 verteenwoordig 'n getal tussen 0 en 7, en die derde een 780 00:35:33,970 --> 00:35:38,245 verteenwoordig 'n getal tussen 0 en 7, OK? 781 00:35:38,245 --> 00:35:42,700 >> r het 'n waarde van 4. w het 'n waarde van 2, en x 782 00:35:42,700 --> 00:35:49,230 het 'n waarde van 1, wat is die rede waarom hierdie toestemming hier sou chmod 700. 783 00:35:49,230 --> 00:35:53,520 Want in hierdie geval hier, dit sê ons het die eerste bietjie daar omgekeer op. 784 00:35:53,520 --> 00:35:55,380 So het ons 4 vir lees. 785 00:35:55,380 --> 00:35:58,730 Die tweede bietjie is omgekeer vir w, wat is 2, so nou het ons 6. 786 00:35:58,730 --> 00:36:02,070 En die derde bietjie is omgekeer op vir x, wat is 1, so ons kry sewe. 787 00:36:02,070 --> 00:36:04,820 En natuurlik, ons groep en ons wêreld is elk 0. 788 00:36:04,820 --> 00:36:07,770 So is dit ook die ekwivalent van chmod 700. 789 00:36:07,770 --> 00:36:12,081 En Ek sal beslis probeer om verstaan ​​die kartering tussen diegene. 790 00:36:12,081 --> 00:36:14,080 Ek is nie seker of dit ' kom op 'n quiz voor, 791 00:36:14,080 --> 00:36:18,590 maar dit sou 'n wees vraag wat ek kan vra. 792 00:36:18,590 --> 00:36:22,110 >> Net 'n bietjie gaan selfs verder in chmod hier, hier 793 00:36:22,110 --> 00:36:27,730 is die heel algemene struktuur van 'n chmod oproep. 794 00:36:27,730 --> 00:36:29,500 So natuurlik, het ons hier chmod. 795 00:36:29,500 --> 00:36:34,410 Verwysings, wat dit verwys na is wie is ons om hierdie regte te 796 00:36:34,410 --> 00:36:36,570 of wat ons neem hierdie regte weg van. 797 00:36:36,570 --> 00:36:44,330 So het ons 'n hier in die regte, soos ons aan julle gegee chmod 'n plus x, 798 00:36:44,330 --> 00:36:45,440 soos ons sal binnekort te sien. 799 00:36:45,440 --> 00:36:48,460 'n beteken net gee hierdie spesifieke regte vir almal. 800 00:36:48,460 --> 00:36:49,600 Gee hulle vir almal. 801 00:36:49,600 --> 00:36:55,370 So jy kan baie goed het u plus x of g plus x of o plus x of veelvuldige 802 00:36:55,370 --> 00:36:55,870 daarvan. 803 00:36:55,870 --> 00:36:59,280 Sodat die eerste deel is altyd gaan verwysings te wees. 804 00:36:59,280 --> 00:37:03,220 Wie gee ons hierdie regte te, of wat ons neem hulle weg van? 805 00:37:03,220 --> 00:37:04,850 >> Die tweede een is die operateur. 806 00:37:04,850 --> 00:37:07,350 So julle ouens het meestal gehandel oor plus. 807 00:37:07,350 --> 00:37:12,140 Dit gee regte aan wie jy gee hulle 808 00:37:12,140 --> 00:37:14,840 terwyl minus, logies, verwyder hulle. 809 00:37:14,840 --> 00:37:16,880 So niks te verskriklik daar. 810 00:37:16,880 --> 00:37:23,060 En dan modi is wat ons het gepraat oor met lees, skryf, of die uitvoering. 811 00:37:23,060 --> 00:37:29,070 So 'n plus x beteken gee uitvoerbare regte vir almal. 812 00:37:29,070 --> 00:37:33,430 En dan, natuurlik, waarop spesifieke lêer of gids. 813 00:37:33,430 --> 00:37:33,980 OK? 814 00:37:33,980 --> 00:37:36,010 Almal goed met chmod? 815 00:37:36,010 --> 00:37:37,850 Nie te sleg nie? 816 00:37:37,850 --> 00:37:42,417 >> OK, so HTML, enige van julle is oud genoeg aan- MySpace ouderdom? 817 00:37:42,417 --> 00:37:44,750 Ek het hierdie vir my artikel, en letterlik die helfte van die mense 818 00:37:44,750 --> 00:37:45,790 kyk na my soos ek is mal. 819 00:37:45,790 --> 00:37:47,498 Maar ek was soos, ouens, ons is nie so oud nie. 820 00:37:47,498 --> 00:37:48,910 Kom op. 821 00:37:48,910 --> 00:37:53,360 So HyperText Markup Language, dit is eerlik net 'n manier om vir jou 822 00:37:53,360 --> 00:37:57,990 sekere dinge te vertoon op die web. 823 00:37:57,990 --> 00:37:59,210 So dit is 'n opmaak taal. 824 00:37:59,210 --> 00:38:00,640 Dit is nie 'n script taal. 825 00:38:00,640 --> 00:38:02,160 Daar is geen logika in dit. 826 00:38:02,160 --> 00:38:05,710 Dit is bloot die te verander manier iets vertoon word. 827 00:38:05,710 --> 00:38:07,670 OK, so dit is 'n belangrike onderskeid te maak. 828 00:38:07,670 --> 00:38:12,030 Dit is beskou as 'n opmaak taal, nie 'n script taal. 829 00:38:12,030 --> 00:38:15,100 >> So hier het ons ons HTML tags. 830 00:38:15,100 --> 00:38:20,390 Op hierdie skyfie is waarskynlik die meeste van die een wat jy vertroud is met moet wees 831 00:38:20,390 --> 00:38:22,390 en regtig gemaklik met. 832 00:38:22,390 --> 00:38:25,700 So natuurlik, ons het ons HTML tag, wat 833 00:38:25,700 --> 00:38:29,930 wys dat alles in tussen hierdie twee sal HTML wees. 834 00:38:29,930 --> 00:38:33,070 Ons het 'n paar skakel, wat natuurlik sal jy gee 835 00:38:33,070 --> 00:38:34,990 'n skakel na 'n eksterne web bladsy. 836 00:38:34,990 --> 00:38:37,520 Sommige titel, binne ons kop hier. 837 00:38:37,520 --> 00:38:40,020 En ons het ons liggaam met h1, wat is 'n kop, 838 00:38:40,020 --> 00:38:42,260 so dit sal lekker maak en vet en groter. 839 00:38:42,260 --> 00:38:46,040 En dan, ons het 'n paar p, wat is 'n paragraaf. 840 00:38:46,040 --> 00:38:49,000 Jy moet weet waarskynlik en vertroud wees met die dinge 841 00:38:49,000 --> 00:38:54,030 soos hoe jy voeg 'n beeld, is daar enige ander kop klasse? 842 00:38:54,030 --> 00:38:57,240 Ek sou beslis gemaklik met div. 843 00:38:57,240 --> 00:39:00,840 So hulle het die meerderheid van die tags dat jy vertroud is met moet wees. 844 00:39:00,840 --> 00:39:04,370 Maar natuurlik, soos met alles in CS 50, die lys is nie volledig nie. 845 00:39:04,370 --> 00:39:08,200 So maak seker dat jy borsel op daardie. 846 00:39:08,200 --> 00:39:13,260 >> CSS, so CSS, indien enige van julle kyk my seminaar van twee weke gelede, 847 00:39:13,260 --> 00:39:16,250 is eintlik net 'n manier om jou webblad te styl? 848 00:39:16,250 --> 00:39:18,950 OK, so ons het 'n paar opmaak taal. 849 00:39:18,950 --> 00:39:23,220 HTML, wat sorg vir net die teks en waar dit kan wees op die bladsy. 850 00:39:23,220 --> 00:39:25,760 Maar CSS is regtig wat maak dit mooi. 851 00:39:25,760 --> 00:39:30,690 Jy kan hierdie in jou HTML lêers, maar soos ons later sal praat oor, 852 00:39:30,690 --> 00:39:32,660 Ek is redelik seker dat dit dalk die volgende skuif, is dit 853 00:39:32,660 --> 00:39:35,620 is 'n algemene praktyk, en eintlik praktyk wat ons regtig moedig, 854 00:39:35,620 --> 00:39:40,670 vir jou om te hou hulle geskei toe ons praat oor MVC en dat die hele paradigma. 855 00:39:40,670 --> 00:39:42,490 Dit is regtig wat hierdie voed in. 856 00:39:42,490 --> 00:39:46,110 >> So CSS is net 'n manier om dinge lyk mooi. 857 00:39:46,110 --> 00:39:50,500 Die dinge wat hier, soos liggaam en #title en info, 858 00:39:50,500 --> 00:39:54,340 hierdie is keurders en wat genoem hulle doen, is hulle spesifieke dinge kies 859 00:39:54,340 --> 00:39:59,260 binne jou HTML-lêer en toe te pas wat styl, 860 00:39:59,260 --> 00:40:04,090 wat soort van dinge wat jy wil, aan daardie spesifieke element van jou web 861 00:40:04,090 --> 00:40:04,590 bladsy. 862 00:40:04,590 --> 00:40:08,820 So hier het ons 'n agtergrond en 'n kleur 863 00:40:08,820 --> 00:40:12,450 en 'n font familie wat die wese toegepas op alles wat in die liggaam. 864 00:40:12,450 --> 00:40:15,530 So as ons kyk terug hier, is dit sou nie van toepassing op die titel. 865 00:40:15,530 --> 00:40:22,340 Dit sou slegs van toepassing op wat in hierdie liggaam keurders, OK? 866 00:40:22,340 --> 00:40:25,250 >> Met die titel hier, dit is gaan dieselfde ding wees, 867 00:40:25,250 --> 00:40:28,410 die kleur van die teks synde blou is slegs gaan 868 00:40:28,410 --> 00:40:33,870 te beïnvloed wat binne die titel keurders. 869 00:40:33,870 --> 00:40:36,580 Sowel as inligting hier, die teks sal pienk wees, 870 00:40:36,580 --> 00:40:38,600 wat se inligting, wat is reg hier. 871 00:40:38,600 --> 00:40:40,860 Dus is die enigste ding wat pienk op hierdie bladsy sal wees 872 00:40:40,860 --> 00:40:44,100 is op datum, Maandag, November 17, 2014. 873 00:40:44,100 --> 00:40:48,770 OK, so CSS is net 'n manier om meer beheer over-- ja? 874 00:40:48,770 --> 00:40:51,850 >> GEHOOR: Hoekom het jy die hash met titel te gebruik? 875 00:40:51,850 --> 00:40:55,170 >> HANNAH: Volgende skuif, belowe! 876 00:40:55,170 --> 00:40:56,810 Ons sal daar kom. 877 00:40:56,810 --> 00:40:59,830 So dit is hoekom ons het hash te gebruik. 878 00:40:59,830 --> 00:41:03,429 So keurders neem op drie belangrikste vorms wat ons praat julle ouens oor. 879 00:41:03,429 --> 00:41:05,595 Ek fyou meer wil leer, daar is baie daar buite. 880 00:41:05,595 --> 00:41:07,540 Daar is 'n groot CSS dokumentasie. 881 00:41:07,540 --> 00:41:12,680 Daar is 'n tag naam, wat te doen het met net jou normale tags in HTML. 882 00:41:12,680 --> 00:41:17,210 So h1, p, div, h2, hierdie soort dinge. 883 00:41:17,210 --> 00:41:20,320 En ons kan net noem diegene soos dit is. 884 00:41:20,320 --> 00:41:22,650 So as ons hier met sien liggaam, dit is 'n normale tag. 885 00:41:22,650 --> 00:41:26,660 So kan ons net sit liggaam wanneer ons praat in ons CSS-lêer. 886 00:41:26,660 --> 00:41:29,730 >> Met die titel, die hele rede waarom ons hierdie hash is ons wat is 887 00:41:29,730 --> 00:41:31,010 beskou as 'n ID. 888 00:41:31,010 --> 00:41:35,400 So 'n ID moet altyd wees uniek binne jou HTML bladsy 889 00:41:35,400 --> 00:41:37,930 sodat wanneer jy verwys na dit, het jy 890 00:41:37,930 --> 00:41:41,990 weet dat jy net is verwys een spesifieke ding. 891 00:41:41,990 --> 00:41:46,270 So in hierdie geval hier, met ons h1 hier, CS 50 resensie sessie, 892 00:41:46,270 --> 00:41:47,810 ons het 'n ID van die titel. 893 00:41:47,810 --> 00:41:54,280 So om net te verwys na wat stukkie van ons HTML, doen ons 'n hash titel. 894 00:41:54,280 --> 00:41:58,080 Net deur konvensie word IDs aangewese met 'n hash in die voorkant van hulle. 895 00:41:58,080 --> 00:42:01,650 In dieselfde manier, ons sien info hier is 'n klas. 896 00:42:01,650 --> 00:42:06,070 En so klas met CSS is aangewys as 'n dot-klas 897 00:42:06,070 --> 00:42:08,895 of dot wat daardie klas is. 898 00:42:08,895 --> 00:42:10,850 So in hierdie geval hier, dit is inligting. 899 00:42:10,850 --> 00:42:13,090 >> So ek neem dit terug. 900 00:42:13,090 --> 00:42:16,200 Beide van hierdie sou wees pienk vir ons CSS hier 901 00:42:16,200 --> 00:42:18,430 want hulle het albei 'n klas van inligting. 902 00:42:18,430 --> 00:42:23,070 En in ons CSS-lêer, het ons aangewese dat enigiets met 'n klas van inligting 903 00:42:23,070 --> 00:42:24,120 sal pienk wees. 904 00:42:24,120 --> 00:42:25,968 Maak dit sin maak? 905 00:42:25,968 --> 00:42:27,435 Ja? 906 00:42:27,435 --> 00:42:30,731 >> GEHOOR: As jy was om te maak alles in die liggaam wit, 907 00:42:30,731 --> 00:42:32,814 en dan moet jy probeer om te maak iets binne dit blou, 908 00:42:32,814 --> 00:42:34,770 sou dit probleme veroorsaak? 909 00:42:34,770 --> 00:42:37,310 >> HANNAH: So CSS is cascading style sheets. 910 00:42:37,310 --> 00:42:40,730 Dus, wat is in die rigting van die onderkant sal voorrang geniet. 911 00:42:40,730 --> 00:42:44,080 So as jy iets doen met die liggaam, en jy maak alles wit, 912 00:42:44,080 --> 00:42:49,300 en dan later op u om die titel te verander of jy die teks verander binne die liggaam, 913 00:42:49,300 --> 00:42:50,560 dit oor skryf nie. 914 00:42:50,560 --> 00:42:55,360 So iets na die onderkant sal voorrang geniet. 915 00:42:55,360 --> 00:42:56,730 Ja? 916 00:42:56,730 --> 00:42:59,627 >> GEHOOR: En ID's is uniek, maar klasse kan meer wees? 917 00:42:59,627 --> 00:43:00,210 HANNAH: Right. 918 00:43:00,210 --> 00:43:06,320 So ID's moet uniek wees, en klasse kan verwys na soveel dinge as wat jy wil. 919 00:43:06,320 --> 00:43:07,580 Enige ander vrae? 920 00:43:07,580 --> 00:43:09,800 Ja. 921 00:43:09,800 --> 00:43:11,210 >> GEHOOR: [onhoorbaar]. 922 00:43:11,210 --> 00:43:13,509 Ek wonder of wat maak 'n verskil. 923 00:43:13,509 --> 00:43:15,217 HANNAH: Ek is jammer, wat was die vraag? 924 00:43:15,217 --> 00:43:18,960 GEHOOR: Daar is klein "F" en kapitaal "F." 925 00:43:18,960 --> 00:43:21,440 HANNAH: So die verskil tussen klein "f" en kapitaal "F" 926 00:43:21,440 --> 00:43:22,606 moet nie 'n verskil maak. 927 00:43:22,606 --> 00:43:26,330 So "f" sal wees 15 óf manier. 928 00:43:26,330 --> 00:43:28,130 Cool, enigiets anders? 929 00:43:28,130 --> 00:43:29,930 Almal goeie, CSS? 930 00:43:29,930 --> 00:43:30,850 Ja? 931 00:43:30,850 --> 00:43:31,790 >> GEHOOR: Jammer. 932 00:43:31,790 --> 00:43:35,550 Kan jy 'n klas en 'n ID? 933 00:43:35,550 --> 00:43:38,030 >> HANNAH: Ja, jy kan. 934 00:43:38,030 --> 00:43:40,420 Dinge kan beide 'n klas en 'n ID. 935 00:43:40,420 --> 00:43:44,670 En ek raai toets dit op jou eie. 936 00:43:44,670 --> 00:43:50,480 CSS sal jy net leer die beste deur ' iets baie eenvoudig webblad, 937 00:43:50,480 --> 00:43:53,440 opstel sommige CSS, en net sien hoe hulle omgaan. 938 00:43:53,440 --> 00:43:56,970 En jy sal kry 'n baie goeie, intuïtief sin vir hoe dit werk. 939 00:43:56,970 --> 00:43:58,810 >> OK, almal goed met CSS? 940 00:43:58,810 --> 00:44:01,280 Jy gaan almal te maak pragtige webwerwe met CSS nou. 941 00:44:01,280 --> 00:44:05,460 OK, beste praktyke, net dinge in gedagte te hou, dinge 942 00:44:05,460 --> 00:44:09,810 that-- dit is hoekom ons dok jy vir die ontwerper en noem maar op. 943 00:44:09,810 --> 00:44:11,820 So maak al jou HTML tags. 944 00:44:11,820 --> 00:44:14,840 So as jy 'n oop liggaam, daar moet 'n beslote liggaam. 945 00:44:14,840 --> 00:44:18,180 As jy het 'n oop paragraaf, daar moet 'n beslote paragraaf. 946 00:44:18,180 --> 00:44:19,555 Kyk jou bladsy bekragtig. 947 00:44:19,555 --> 00:44:23,330 Julle moet baie vertroud wees met hierdie van p-die sewe 948 00:44:23,330 --> 00:44:26,350 met CS 50 finansies met die W3 validator. 949 00:44:26,350 --> 00:44:28,340 En soos ek gesê het, een van ons groot paradigmas 950 00:44:28,340 --> 00:44:33,780 is die skeiding van jou styl met CSS uit jou opmaak, wat HTML. 951 00:44:33,780 --> 00:44:36,900 En dan, natuurlik, ons het hierdie groot Kletskerk hier. 952 00:44:36,900 --> 00:44:38,280 Yay, komiese verligting! 953 00:44:38,280 --> 00:44:41,340 >> OK, TCP / IP. 954 00:44:41,340 --> 00:44:44,650 Tussen hierdie en HTTP, basies hulle is albei protokolle. 955 00:44:44,650 --> 00:44:46,810 So jy kan net dink van hulle as 'n stel reëls 956 00:44:46,810 --> 00:44:50,110 wat bepaal hoe dinge beweeg oor die internet. 957 00:44:50,110 --> 00:44:53,410 So oordrag beheer protokol, of internet-protokol, 958 00:44:53,410 --> 00:44:57,280 is net 'n manier om seker te maak dat data kry waar dit gaan 959 00:44:57,280 --> 00:45:00,030 en dat ons weet as ons ooit ontbreek data. 960 00:45:00,030 --> 00:45:03,520 So as julle dink terug na lesing 'n paar weke gelede met Dawid 961 00:45:03,520 --> 00:45:06,980 waar ons het vier koeverte, hulle is almal getel soos een van vier, 962 00:45:06,980 --> 00:45:11,300 twee van vier, drie of vier, vier van vier, is dit net 'n stel reëls. 963 00:45:11,300 --> 00:45:13,830 Ons het gesê, OK, wanneer ons die stuur van meer as een pakkie, 964 00:45:13,830 --> 00:45:16,610 ons gaan na die nommer met watter getal is 965 00:45:16,610 --> 00:45:19,040 en hoeveel totale dat die gebruiker moet kry. 966 00:45:19,040 --> 00:45:22,540 >> En dit is net vertel wie ontvang die data of hulle 967 00:45:22,540 --> 00:45:26,120 het alles of gekry as iets verloor het langs die pad. 968 00:45:26,120 --> 00:45:28,840 En wat hulle nodig het om weer te vra. 969 00:45:28,840 --> 00:45:31,140 Dit is regtig net 'n stel reëls. 970 00:45:31,140 --> 00:45:33,650 Dit is hoe jy kan dink, OK? 971 00:45:33,650 --> 00:45:37,700 En ook, dit bepaal die hawe, wat julle ouens can-- ek weet tydens lesing, 972 00:45:37,700 --> 00:45:39,170 hulle het 'n hele lys van hawens. 973 00:45:39,170 --> 00:45:41,630 Maar ons het dit nie nou hier. 974 00:45:41,630 --> 00:45:45,290 >> So HyperText Transfer Protocol is, weer, dit is 'n ander protokol. 975 00:45:45,290 --> 00:45:48,630 So dit is 'n ander stel reëls wat regeer, in hierdie geval, 976 00:45:48,630 --> 00:45:51,130 hoe hiperteks oorgedra word. 977 00:45:51,130 --> 00:45:54,340 So is dit net laat blaaier te praat web bedieners. 978 00:45:54,340 --> 00:45:56,910 En soos ons hier sê, dit is soos menslike handshaking. 979 00:45:56,910 --> 00:46:00,480 Dit is net 'n manier om te regeer hoe die web bediener is 980 00:46:00,480 --> 00:46:02,690 gaan om te kommunikeer met die leser. 981 00:46:02,690 --> 00:46:05,660 En ons het net 'n paar voorbeelde. 982 00:46:05,660 --> 00:46:09,100 Ons het 'n paar versoeke hier waar AOO is die metode. 983 00:46:09,100 --> 00:46:13,760 Ons het HTTP 1.1, wat protokol weergawe vir ons. 984 00:46:13,760 --> 00:46:17,230 En dan, die gasheer, en dit is wat ons is eintlik probeer om toegang te verkry. 985 00:46:17,230 --> 00:46:21,800 En dan, as jy hier sien, het ons kry 'n paar reaksie met hierdie 200 986 00:46:21,800 --> 00:46:25,032 OK as ons HTTP reaksie kode. 987 00:46:25,032 --> 00:46:27,240 Ons het 'n groot lys gaan ek te trek in een sekonde 988 00:46:27,240 --> 00:46:29,430 dat jy ouens bekend moet wees. 989 00:46:29,430 --> 00:46:35,750 En ons het hierdie tipe inhoud teks / HTML, wat net sê watter tipe data 990 00:46:35,750 --> 00:46:39,990 ons ontvang van die bediener, OK? 991 00:46:39,990 --> 00:46:44,230 Dit gasheer en die inhoud tipe is deel van die HTTP-hoofde. 992 00:46:44,230 --> 00:46:49,610 Jy kan so min of so min as 'n nodig is vir die konteks van wat 993 00:46:49,610 --> 00:46:50,580 jy met. 994 00:46:50,580 --> 00:46:53,371 Soms sal jy 'n baie het inligting uit jou bediener. 995 00:46:53,371 --> 00:46:56,040 Miskien het hulle is versoek om 'n baie inligting van die gebruiker. 996 00:46:56,040 --> 00:46:57,600 Dit is afhanklik van die konteks. 997 00:46:57,600 --> 00:47:01,144 As jy kyk na CS 50 Studie, daar is 'n baie meer op daardie. 998 00:47:01,144 --> 00:47:03,060 Maar ons het 'n baie om te kry deur, so ek gaan 999 00:47:03,060 --> 00:47:05,760 na regs voor as gaan dit is OK met julle ouens? 1000 00:47:05,760 --> 00:47:07,960 Cool. 1001 00:47:07,960 --> 00:47:08,460 Hou op. 1002 00:47:08,460 --> 00:47:11,182 Ek het beslis dat hele lys of-- huh! 1003 00:47:11,182 --> 00:47:13,140 Ek weet nie hoekom dit al die pad hier. 1004 00:47:13,140 --> 00:47:15,660 Ek het gedink ek het letterlik geskuif dit terwyl ek besig was sitting-- 1005 00:47:15,660 --> 00:47:16,540 >> Davin: wil jy doen om dit te leer? 1006 00:47:16,540 --> 00:47:17,420 Of wil jy my om dit te leer? 1007 00:47:17,420 --> 00:47:20,010 >> GEHOOR: Ek het gedink ons ​​kan net wys hulle om te begin met. 1008 00:47:20,010 --> 00:47:22,210 Ek bedoel, jy kan gaan in hulle verder nie, maar ek 1009 00:47:22,210 --> 00:47:26,030 gedink dit maak meer sin, want ek is net te praat oor HTTP status. 1010 00:47:26,030 --> 00:47:28,200 So hier is die hele lys. 1011 00:47:28,200 --> 00:47:31,730 Ek dink wat gaan gebeur is Davin gaan om te gaan later in hulle. 1012 00:47:31,730 --> 00:47:35,330 Maar daar is 'n hele lys, 'n voorskou van die smaak te kom. 1013 00:47:35,330 --> 00:47:41,640 OK, ons gaan blow-- dit gaan 'n PHP crash kursus soos geen ander nie. 1014 00:47:41,640 --> 00:47:44,874 >> So PHP, hiperteks voorverwerker, dit is 'n rekursiewe backronym, 1015 00:47:44,874 --> 00:47:46,540 wat beteken dat dit is anders iets genoem. 1016 00:47:46,540 --> 00:47:49,050 En dan was hulle soos hierdie nie regtig sin maak nie. 1017 00:47:49,050 --> 00:47:52,210 So het hulle net die naam it-- en dit was 'n akroniem, 1018 00:47:52,210 --> 00:47:54,840 sodat hulle net het dit PHP hiperteks voorverwerker, wat 1019 00:47:54,840 --> 00:47:55,980 maak net nie sin nie. 1020 00:47:55,980 --> 00:47:57,714 Fun storie. 1021 00:47:57,714 --> 00:47:58,880 Dit is 'n programmeertaal. 1022 00:47:58,880 --> 00:48:02,360 So soveel as wat ek beklemtoon dat HTML is nie 'n programmeertaal, 1023 00:48:02,360 --> 00:48:05,350 dit is 'n opmaak taal, PHP is 'n programmeertaal. 1024 00:48:05,350 --> 00:48:07,422 Hoe weet jy dit is want daar is logika. 1025 00:48:07,422 --> 00:48:08,380 Daar is conditionals. 1026 00:48:08,380 --> 00:48:12,750 Ons het veranderlikes, terwyl ons het nie een van daardie dinge in HTML. 1027 00:48:12,750 --> 00:48:16,960 >> Alle reg, dan het ons hierdie klein bietjie hier wat soos 'n voorsmakie van PHP. 1028 00:48:16,960 --> 00:48:20,510 So basiese beginsels, veranderlike name begin met 'n dollar teken. 1029 00:48:20,510 --> 00:48:21,500 Baie van die mense soos dit. 1030 00:48:21,500 --> 00:48:22,371 Herinner ons geld. 1031 00:48:22,371 --> 00:48:22,995 Dit is alles baie goed. 1032 00:48:22,995 --> 00:48:25,280 Ons wil almal PHP. 1033 00:48:25,280 --> 00:48:28,020 Sodat ons nie spesifiseer nie 'n veranderlike se tipe nie. 1034 00:48:28,020 --> 00:48:29,995 Dit word bepaal te hardloop tyd. 1035 00:48:29,995 --> 00:48:32,710 1036 00:48:32,710 --> 00:48:35,890 Die tolk sal wees soos, O, ons sal net loop deur, 1037 00:48:35,890 --> 00:48:39,565 en volgens die konteks, ons sal sien watter tipe tipes 1038 00:48:39,565 --> 00:48:41,560 hierdie veranderlikes moet hê. 1039 00:48:41,560 --> 00:48:42,815 Daar is geen hooffunksie. 1040 00:48:42,815 --> 00:48:43,690 Dinge sal net hardloop. 1041 00:48:43,690 --> 00:48:47,851 Julle ouens met jou invoer in jou laaste p-stel, sal jy sien hierdie. 1042 00:48:47,851 --> 00:48:49,350 Daar was nie regtig 'n hooffunksie. 1043 00:48:49,350 --> 00:48:52,070 Jy het net geskryf wat jy wou om te gebeur. 1044 00:48:52,070 --> 00:48:53,280 En dit is net soort van gebeur het. 1045 00:48:53,280 --> 00:48:56,760 So dit is PHP vir jou. 1046 00:48:56,760 --> 00:48:59,180 >> Skikkings is baie soortgelyk. 1047 00:48:59,180 --> 00:49:01,270 Ons het nog steeds hierdie bracket. 1048 00:49:01,270 --> 00:49:05,940 Hier het ons het 'n paar veranderlike genoem arr, en dit is gelyk 1049 00:49:05,940 --> 00:49:08,540 aan- ons ons normale bracket notasie. 1050 00:49:08,540 --> 00:49:10,630 En ons het 'n paar belangrike waarde. 1051 00:49:10,630 --> 00:49:14,630 En die groot verskil tussen C en PHP skikkings 1052 00:49:14,630 --> 00:49:19,330 is dat ons hierdie associate-- het ons waardes kan assosieer sleutels. 1053 00:49:19,330 --> 00:49:22,440 So in plaas van net ' 'n skikking wat geïndekseer is 1054 00:49:22,440 --> 00:49:26,630 deur die aantal of die posisie van daardie element in die skikking, 1055 00:49:26,630 --> 00:49:29,060 ons eintlik kan assosieer dit met 'n sleutel. 1056 00:49:29,060 --> 00:49:36,700 Waar ons kan sê, OK, ek wil alles waarde is wat verband hou met vrugte. 1057 00:49:36,700 --> 00:49:39,280 En dalk het ons vrugte na piesang. 1058 00:49:39,280 --> 00:49:41,760 So dit sou terugkeer piesang aan ons. 1059 00:49:41,760 --> 00:49:44,100 >> Maar basies, die mees kragtige ding oor hierdie 1060 00:49:44,100 --> 00:49:47,960 is dat as jy ouens onthou die demo van lesing waar ons basies 1061 00:49:47,960 --> 00:49:53,050 herskryf speller in PHP, en dit was-- lookup was regtig net wil, 1062 00:49:53,050 --> 00:49:55,007 nie hierdie sleutel bestaan? 1063 00:49:55,007 --> 00:49:56,590 Dit is regtig soort van die krag van dit. 1064 00:49:56,590 --> 00:49:58,560 Jy hoef nie te Itereer deur jou skikking. 1065 00:49:58,560 --> 00:50:00,311 Jy hoef nie te weet wat ruimte is dit in. 1066 00:50:00,311 --> 00:50:01,976 Dit kan wees aan die einde of die begin. 1067 00:50:01,976 --> 00:50:04,790 Solank as wat jy weet die sleutel dit is wat verband hou met die waarde, 1068 00:50:04,790 --> 00:50:09,740 PHP kan net spoeg wat waarde gou terug na jou, OK? 1069 00:50:09,740 --> 00:50:12,960 >> En dan het ons ook net het net omdat ons 1070 00:50:12,960 --> 00:50:16,750 kan sleutel waarde pare beteken nie jy hoef te. 1071 00:50:16,750 --> 00:50:19,180 Jy kan ook net ' 'n normale, gewapend soos hier, 1072 00:50:19,180 --> 00:50:21,540 aan die onderkant, waar dit is net een, twee, drie, vier. 1073 00:50:21,540 --> 00:50:22,510 Dit is ons waardes. 1074 00:50:22,510 --> 00:50:25,320 En in die feit, hul sleutels is die indekse. 1075 00:50:25,320 --> 00:50:26,830 So het die sleutel vir 'n nul sou wees. 1076 00:50:26,830 --> 00:50:28,610 Die sleutel vir twee sal een. 1077 00:50:28,610 --> 00:50:31,910 So aan en so voort, tensy jy uitdruklik wys 'n sleutel, 1078 00:50:31,910 --> 00:50:34,630 jy kan aanvaar dat die waarde is net die indeks. 1079 00:50:34,630 --> 00:50:37,290 Maak dit sin maak vir almal? 1080 00:50:37,290 --> 00:50:38,070 Geen vrae? 1081 00:50:38,070 --> 00:50:38,930 Awesome. 1082 00:50:38,930 --> 00:50:44,420 >> OK, foreach is 'n manier om Itereer deur jou skikkings. 1083 00:50:44,420 --> 00:50:47,490 So het ons iets hier, net die algemene struktuur. 1084 00:50:47,490 --> 00:50:51,020 So foreach, die naam van Ons verskeidenheid, soos wat 1085 00:50:51,020 --> 00:50:53,930 jy wil elke te roep element in jou skikking, 1086 00:50:53,930 --> 00:50:57,270 en ons kan iets doen met daardie element of met daardie waarde. 1087 00:50:57,270 --> 00:50:58,680 Dus het ons 'n voorbeeld hier. 1088 00:50:58,680 --> 00:51:05,770 Ons het 'n assosiatiewe array met hierdie twee inskrywings 1089 00:51:05,770 --> 00:51:10,080 met kroeg wat verband hou met cat en qux word wat verband hou met roof. 1090 00:51:10,080 --> 00:51:12,180 So sleutels is cat en roof. 1091 00:51:12,180 --> 00:51:13,650 Waardes is bar en qux. 1092 00:51:13,650 --> 00:51:18,560 So foreach, ons het ons verskeidenheid hier, as die sleutel waarde paar. 1093 00:51:18,560 --> 00:51:21,560 Dit stel ons in staat om toegang te verkry beide die sleutel en waarde. 1094 00:51:21,560 --> 00:51:23,680 Miskien het jy wil net die waarde, in welke geval 1095 00:51:23,680 --> 00:51:27,640 jy kan net doen soos arr as $ waarde, en dan moet jy 1096 00:51:27,640 --> 00:51:30,640 net toegang tot die waarde as jy Itereer deur. 1097 00:51:30,640 --> 00:51:32,600 Maar miskien, vir 'n paar rede, wil jy die sleutel, 1098 00:51:32,600 --> 00:51:35,460 wat is die rede waarom ek gekies het hierdie voorbeeld plaas. 1099 00:51:35,460 --> 00:51:40,240 Sodat jy kan eintlik manipuleer sleutel en waarde in hierdie geval. 1100 00:51:40,240 --> 00:51:41,070 OK? 1101 00:51:41,070 --> 00:51:41,905 Vraag? 1102 00:51:41,905 --> 00:51:44,279 >> GEHOOR: As jy wil net manipuleer die sleutel, sal 1103 00:51:44,279 --> 00:51:45,910 jy hoef te doen foreach-- 1104 00:51:45,910 --> 00:51:47,360 >> ALISON: Right. 1105 00:51:47,360 --> 00:51:50,560 So as jy wil manipuleer net die sleutel, 1106 00:51:50,560 --> 00:51:53,680 sou jy nog steeds nodig om hierdie sintaksis, want as jy net 1107 00:51:53,680 --> 00:51:56,930 het arr as iets, as een ding, dit is 1108 00:51:56,930 --> 00:52:00,070 gaan om te aanvaar wat jy wil die waarde, nie die sleutel. 1109 00:52:00,070 --> 00:52:06,780 So as jy ooit net net soos arr as, miskien is dit soos $ element, 1110 00:52:06,780 --> 00:52:11,670 dit gaan om te aanvaar dat jy vra vir net die waarde by elke punt. 1111 00:52:11,670 --> 00:52:13,879 As jy uitdruklik wil iets te doen met die sleutel, 1112 00:52:13,879 --> 00:52:16,170 selfs as jy nie van plan om enigiets doen met die waarde, 1113 00:52:16,170 --> 00:52:18,430 wat jy nodig het om hierdie struktuur dat ons hier 1114 00:52:18,430 --> 00:52:22,330 waar jy uitdruklik vra vir beide die sleutel en die waarde daarvan. 1115 00:52:22,330 --> 00:52:24,170 N groot vraag. 1116 00:52:24,170 --> 00:52:25,940 Enigiets anders? 1117 00:52:25,940 --> 00:52:27,490 Cool. 1118 00:52:27,490 --> 00:52:29,911 >> Alle reg, PHP en HTML. 1119 00:52:29,911 --> 00:52:31,410 O, ons is terug na p-die sewe weer. 1120 00:52:31,410 --> 00:52:35,380 So dit moet kyk 'n bietjie bekend. 1121 00:52:35,380 --> 00:52:41,760 So, dit is 'n paar eenvoudige HTML-vorm wat 'n paar insette naam van hallo. 1122 00:52:41,760 --> 00:52:43,820 En ons sien ons het ons metode van AOO. 1123 00:52:43,820 --> 00:52:47,430 En as ons onthou van ons p-stel, wanneer hierdie vorm ingedien word, 1124 00:52:47,430 --> 00:52:58,130 dit stuur 'n skikking met die naam $ _GET wat al hierdie insette of veranderlikes 1125 00:52:58,130 --> 00:53:00,490 die vorm wat moet wees gemanipuleer in ons PHP. 1126 00:53:00,490 --> 00:53:03,320 So in hierdie geval, die gebruiker sou sit in hul naam. 1127 00:53:03,320 --> 00:53:04,370 Hulle stuur dit. 1128 00:53:04,370 --> 00:53:07,810 En ons sien dat ons 'n paar verskeidenheid hier. 1129 00:53:07,810 --> 00:53:09,080 Ons het ons AOO skikking. 1130 00:53:09,080 --> 00:53:11,510 En ons is die toegang tot die naam. 1131 00:53:11,510 --> 00:53:15,070 >> So wat sê, OK, gee my die waarde wat verband hou is met naam, 1132 00:53:15,070 --> 00:53:16,550 noem dat die sleutel hier. 1133 00:53:16,550 --> 00:53:21,400 En dat kaarte direk aan wat ons gesê ons insette naam is. 1134 00:53:21,400 --> 00:53:28,960 So hierdie is dit gee jou die sleutel tot wat gaan wees in jou array hier. 1135 00:53:28,960 --> 00:53:31,220 Maak dit sin maak vir almal? 1136 00:53:31,220 --> 00:53:32,070 Ja? 1137 00:53:32,070 --> 00:53:36,240 >> GEHOOR: Maak die naam kry in verwys aan die pers lyn in [onhoorbaar]? 1138 00:53:36,240 --> 00:53:37,740 >> ALISON: Dit verwys na dit hier. 1139 00:53:37,740 --> 00:53:43,840 So hierdie gebied reg hier, dit verwys na hierdie naam hier. 1140 00:53:43,840 --> 00:53:47,800 So hierdie kon gewees het met die naam soos telefoonnommer, of wat ook al. 1141 00:53:47,800 --> 00:53:51,790 Hierdie naam sê eintlik, wat jy noem hierdie gebied? 1142 00:53:51,790 --> 00:53:53,600 Hoe gaan jy te verwys na hierdie gebied? 1143 00:53:53,600 --> 00:53:57,670 En hierdie naam is eintlik wil, ons is sê hierdie veld is sy naam geroep. 1144 00:53:57,670 --> 00:53:59,224 Dit is hoe ons gaan dit om toegang te verkry. 1145 00:53:59,224 --> 00:54:02,070 >> GEHOOR: So is dit wil, toevoer naam is gelyk aan Bob, and-- 1146 00:54:02,070 --> 00:54:04,380 >> ALISON: Right, dan is jy sou Bob kry daar. 1147 00:54:04,380 --> 00:54:06,090 Presies. 1148 00:54:06,090 --> 00:54:07,800 Almal koel? 1149 00:54:07,800 --> 00:54:10,990 Alle reg, so kry versus POST, dit is die twee hoof maniere 1150 00:54:10,990 --> 00:54:14,880 dat ons slaag data in 'n HTTP-versoek. 1151 00:54:14,880 --> 00:54:17,370 Julle moet gesien het beide van hierdie hopelik. 1152 00:54:17,370 --> 00:54:20,940 So met AOO, die inligting oorgedra word deur middel van die URL. 1153 00:54:20,940 --> 00:54:23,490 So as jy ooit Google soektogte, YouTube, sal jy 1154 00:54:23,490 --> 00:54:25,130 waarskynlik in sommige vraagteken. 1155 00:54:25,130 --> 00:54:28,230 En dan, al die woorde dat jy net sit daar. 1156 00:54:28,230 --> 00:54:31,410 En post verby die data in die HTTP boodskap liggaam. 1157 00:54:31,410 --> 00:54:36,922 So anders kry, moet jy soort van oorweeg dat die data is verborge vir die gebruiker. 1158 00:54:36,922 --> 00:54:38,630 Maar wat is regtig belangrik om te verstaan 1159 00:54:38,630 --> 00:54:44,040 is dat dit nog steeds net soos onseker as AOO. 1160 00:54:44,040 --> 00:54:48,780 Die analogie wat ek wil gebruik, is as moet jy jou bank rekening nommer 1161 00:54:48,780 --> 00:54:52,795 en jy skryf dit aan die buitekant van 'n koevert, dis nogal onveilig. 1162 00:54:52,795 --> 00:54:55,920 As jy dit op 'n stuk te skryf papier en sit dit binne-in die koevert, 1163 00:54:55,920 --> 00:54:58,850 dit is nog steeds baie onveilig, want al wat jy hoef te doen, is om oop te maak dat tot 1164 00:54:58,850 --> 00:55:03,480 en kyk na die werklike inhoud van die boodskap wat om te sien. 1165 00:55:03,480 --> 00:55:08,310 So dit is "verborge", en mense soos om dink dit is veilig, maar dit is regtig nie. 1166 00:55:08,310 --> 00:55:11,000 En ek is seker Davin sal kry in dat meer, miskien. 1167 00:55:11,000 --> 00:55:12,850 Maar dit is 'n belangrike onderskeid te maak 1168 00:55:12,850 --> 00:55:15,820 en iets wat regtig goed om te verstaan. 1169 00:55:15,820 --> 00:55:19,220 >> OK, SQL, Structured Query Language. 1170 00:55:19,220 --> 00:55:22,220 Al die dinge wat ons het so onlangs gesien! 1171 00:55:22,220 --> 00:55:25,400 So dit is basies net ontwerp, natuurlik, vir die bestuur van data. 1172 00:55:25,400 --> 00:55:30,560 Julle het 'n baie ondervinding met dit in jou tafels met PHP MyAdmin. 1173 00:55:30,560 --> 00:55:34,100 En daar is vier algemene navrae wat ons wil julle ouens te leer ken. 1174 00:55:34,100 --> 00:55:37,304 So is daar werk, plaas, kies, en verwyder. 1175 00:55:37,304 --> 00:55:38,970 So maak seker dat jy weet wat regtig goed. 1176 00:55:38,970 --> 00:55:40,960 Ons gaan om te gaan deur hulle baie vinnig. 1177 00:55:40,960 --> 00:55:44,340 >> So werk, regtig, as wat jy dalk dink dit doen nie, 1178 00:55:44,340 --> 00:55:46,740 dit is net updates data in die databasis. 1179 00:55:46,740 --> 00:55:48,750 So ons het 'n paar voorbeeld hier. 1180 00:55:48,750 --> 00:55:53,310 Dit is die algemene struktuur van 'n update navraag. 1181 00:55:53,310 --> 00:55:56,150 So ons werk om die tafel dat ons praat. 1182 00:55:56,150 --> 00:56:00,520 En ons wil seker te stel waardes, sekere kolomme 1183 00:56:00,520 --> 00:56:02,600 gelyk aan spesifieke waardes. 1184 00:56:02,600 --> 00:56:07,500 So dit net updates die tafel, die verandering waardes in al die rye in hierdie geval. 1185 00:56:07,500 --> 00:56:13,690 So in hierdie een hier, 'n werklike Byvoorbeeld, ons het insert-- jammer. 1186 00:56:13,690 --> 00:56:17,630 Wat skuif gevorderde sonder my om dit te besef. 1187 00:56:17,630 --> 00:56:22,230 >> So hierdie updates tabel col1 gelyk te VAL1 waar huis gelyk "Currier." 1188 00:56:22,230 --> 00:56:25,300 Wat hierdie een doen, is dit verander net, is dit net 1189 00:56:25,300 --> 00:56:28,130 updates hierdie waardes in spesifieke plekke. 1190 00:56:28,130 --> 00:56:32,300 So in hierdie eerste een, dit verander hierdie waardes vir alles wat in jou tafel 1191 00:56:32,300 --> 00:56:32,860 OK? 1192 00:56:32,860 --> 00:56:35,820 Dit gaan om dit te verander kolom vir elke enkele inskrywing, 1193 00:56:35,820 --> 00:56:37,020 vir elke enkele ry. 1194 00:56:37,020 --> 00:56:40,840 Maar dit waar, kan jy dink aan dit as 'n kwalifiseerder. 1195 00:56:40,840 --> 00:56:44,020 So dit is net gaan om te verander dit in 'n baie spesifieke plekke. 1196 00:56:44,020 --> 00:56:47,840 So in p-die sewe, wanneer jy Miskien opgedateer om die bedrag kontant 1197 00:56:47,840 --> 00:56:53,050 dat jou gebruikers gehad, jy het waarskynlik sommige waar ID gelyk sessie ID, reg? 1198 00:56:53,050 --> 00:56:55,280 >> Omdat jy nie wil hê nie verander die bedrag van die kontant 1199 00:56:55,280 --> 00:56:57,630 vir elke persoon wat is die gebruik van jou webwerf. 1200 00:56:57,630 --> 00:57:00,480 Jy wou dit te verander vir een spesifieke persoon, dat daardie persoon ' 1201 00:57:00,480 --> 00:57:02,410 wie was dit gebruik op daardie tydstip. 1202 00:57:02,410 --> 00:57:04,320 Reg? 1203 00:57:04,320 --> 00:57:07,510 OK, so voeg, voeg sekere waardes in tabelle. 1204 00:57:07,510 --> 00:57:11,650 Dit is soos wanneer jy skep van 'n splinternuwe gebruiker. 1205 00:57:11,650 --> 00:57:14,240 Die algemene struktuur hier is voeg in watter tafel 1206 00:57:14,240 --> 00:57:15,680 ons praat oor. 1207 00:57:15,680 --> 00:57:18,910 Waardes, synde die waardes wat ons eintlik wil voeg. 1208 00:57:18,910 --> 00:57:23,060 OK, so as ons hier sien, is ons het in tabel voeg. 1209 00:57:23,060 --> 00:57:27,790 Dit is spesifieke kolomme met hul ooreengestem waardes. 1210 00:57:27,790 --> 00:57:29,940 So hierdie sê insetsel 'n nuwe ry met 1211 00:57:29,940 --> 00:57:33,660 waardes VAL1 en VAL2 onder hierdie spesifieke kolomme. 1212 00:57:33,660 --> 00:57:39,240 >> So miskien het jy wil net om te vul uit die helfte van die dinge in die ry. 1213 00:57:39,240 --> 00:57:41,150 Dit is wat hierdie deel hier kan jy doen. 1214 00:57:41,150 --> 00:57:43,280 Dit kan jy eintlik bepaal watter deel. 1215 00:57:43,280 --> 00:57:44,244 Ja? 1216 00:57:44,244 --> 00:57:52,150 >> GEHOOR: jy kan net [onhoorbaar] selle in die ry [onhoorbaar]? 1217 00:57:52,150 --> 00:57:55,000 >> ALISON: As jy net in te vul sekere dele van jou ry, 1218 00:57:55,000 --> 00:57:57,480 die res van die selle is net leeg. 1219 00:57:57,480 --> 00:58:02,730 1220 00:58:02,730 --> 00:58:05,660 Solank as wat jy hulle toelaat om te wees leeg, dit is nie 'n probleem. 1221 00:58:05,660 --> 00:58:09,570 As jy probeer om dit te bekom, is dit gaan 'n paar leë element om terug te keer. 1222 00:58:09,570 --> 00:58:13,850 Maar dit is belangrik om te weet wat in sekere tafels, 1223 00:58:13,850 --> 00:58:16,690 hulle het om toegelaat te word om te nul. 1224 00:58:16,690 --> 00:58:18,890 Jy kan hardloop in 'n probleem tydens jou p-stel 1225 00:58:18,890 --> 00:58:21,320 want ons het nie toelaat dat enige van jou waardes null. 1226 00:58:21,320 --> 00:58:26,110 Maar jy kan spesifiseer 'n opsionele waarde in jou tafel. 1227 00:58:26,110 --> 00:58:29,640 >> OK, kies, so dit is net 'n manier om 1228 00:58:29,640 --> 00:58:33,790 spesifieke data vanaf 'n tabel op sommige identifiseerder wat jy wil. 1229 00:58:33,790 --> 00:58:37,990 So kies ster uit tabel waar Kol gelyk iets beteken net, 1230 00:58:37,990 --> 00:58:43,820 gee my al die inligting wat verband hou waar hierdie spesifieke kolom is waar. 1231 00:58:43,820 --> 00:58:49,020 So die ster in hierdie geval sal terugkeer om die hele ry na jou, OK? 1232 00:58:49,020 --> 00:58:54,880 >> En dan, in hierdie geval, kies ster van tabel gee jy net die hele tafel. 1233 00:58:54,880 --> 00:58:58,940 En dan, verwyder natuurlik, is dit net verwyder die ry van die tabel. 1234 00:58:58,940 --> 00:59:01,320 So verwyder uit tabel, ongeag tafel is ons 1235 00:59:01,320 --> 00:59:06,830 verwysing, waar 'n paar spesifieke identifiseerder of 'n toestand is waar. 1236 00:59:06,830 --> 00:59:07,720 Ja? 1237 00:59:07,720 --> 00:59:08,700 >> GEHOOR: Vraag. 1238 00:59:08,700 --> 00:59:10,699 Hoekom gebruik jy dubbel aanhalings, en of jy 1239 00:59:10,699 --> 00:59:13,600 doen dubbele aanhalingstekens of enkel aanhalings, maak dit 'n verskil? 1240 00:59:13,600 --> 00:59:18,235 >> ALISON: Double aanhalings of enkele aanhalings maak nie 'n verskil in SQL. 1241 00:59:18,235 --> 00:59:19,610 Ek het gedink ek het 'n ander vraag. 1242 00:59:19,610 --> 00:59:20,814 Ja? 1243 00:59:20,814 --> 00:59:25,070 >> GEHOOR: Is dit nie raak wat kry ontsnap uit die navraag? 1244 00:59:25,070 --> 00:59:27,945 >> ALISON: Rob? 1245 00:59:27,945 --> 00:59:31,410 >> ROB: Wat bedoel jy deur ontsnap uit die navraag? 1246 00:59:31,410 --> 00:59:36,870 >> GEHOOR: As iemand 'n enkele navraag in die vorm of-- 1247 00:59:36,870 --> 00:59:39,862 >> ROB: As iemand was om sit 'n enkele aanhaling in, 1248 00:59:39,862 --> 00:59:43,560 dan so lank as wat jy reinig jou insette, dan is dit maak nie saak nie. 1249 00:59:43,560 --> 00:59:46,205 Maar as jy die gebruik van 'n enkele quote en jy is verkeerd 1250 00:59:46,205 --> 00:59:47,914 ontsnap jou insette, dan ja, wat hulle nodig het 1251 00:59:47,914 --> 00:59:51,079 'n enkele aanhaling in orde te bring om te breek jou kode. as jy dubbele aanhalingstekens gebruik, 1252 00:59:51,079 --> 00:59:53,580 wat hulle nodig het 'n dubbele te sit haal jou kode te breek. 1253 00:59:53,580 --> 00:59:56,163 Maar so lank as wat jy dinge ontsnap korrek is, beteken dit nie saak nie. 1254 00:59:56,163 --> 00:59:59,220 Dit is net gaan om te vertaal word die korrekte simbool in elk geval. 1255 00:59:59,220 --> 01:00:02,332 >> GEHOOR: Wat beteken ontsnapping beteken? 1256 01:00:02,332 --> 01:00:04,040 ALISON: Wel, soos reinig en ontsnap nie. 1257 01:00:04,040 --> 01:00:06,810 1258 01:00:06,810 --> 01:00:13,820 Die eksamen wat ons het, die groot Kletskerk komiese dat hulle trek waar jy hê, 1259 01:00:13,820 --> 01:00:15,629 oh-- 1260 01:00:15,629 --> 01:00:16,670 ROB: Dit is die laaste skyfie. 1261 01:00:16,670 --> 01:00:18,500 ALISON: Dit is die laaste skyfie, regtig? 1262 01:00:18,500 --> 01:00:20,200 Oh my god. 1263 01:00:20,200 --> 01:00:21,780 Daar gaan ons, volmaak. 1264 01:00:21,780 --> 01:00:27,900 OK, so basies, kan jy spuit iets in hierdie SQL navraag 1265 01:00:27,900 --> 01:00:30,560 waar dit breek jou kode, of soos Dawid het 1266 01:00:30,560 --> 01:00:38,460 in die klas, as ons 'n paar enkele quote 1 gelyk 1 en as ons kode, 1267 01:00:38,460 --> 01:00:41,230 Ons het net direk kopieer wat in, en ons het 'n eindig enkele aanhaling, 1268 01:00:41,230 --> 01:00:44,740 wat gebeur is dat ons sommige uitdrukking wat 1269 01:00:44,740 --> 01:00:48,680 evalueer aan waar dat sal laat iemand voer ons databasis 1270 01:00:48,680 --> 01:00:51,720 en kry data wat ons wil nie hulle te kry. 1271 01:00:51,720 --> 01:00:54,240 So reinig die insette beteken net om seker te maak 1272 01:00:54,240 --> 01:00:57,680 dat ons ontsnapping hierdie karakters en die aanwysing van hulle 1273 01:00:57,680 --> 01:01:01,720 as karakters en nie dinge wat toegelaat moet word 1274 01:01:01,720 --> 01:01:04,990 om letterlik geneem as ons SQL-stelling. 1275 01:01:04,990 --> 01:01:09,980 >> So het die groot ding wat ons gesê dat julle ouens moet gebruik word om 1276 01:01:09,980 --> 01:01:13,650 was HTML spesiale karakters, dit is iets wat 1277 01:01:13,650 --> 01:01:15,730 wat jy dalk wil 'n blik op te neem. 1278 01:01:15,730 --> 01:01:17,240 OK, verwyder. 1279 01:01:17,240 --> 01:01:19,450 Datatipes, sal dit al wees aanlyn. 1280 01:01:19,450 --> 01:01:23,510 Aangesien ons 15 minute oor, ek is net gaan om te gaan reg deur hierdie. 1281 01:01:23,510 --> 01:01:28,500 PHP en SQL, basies is dit net ons het 'n navraag funksie wat 1282 01:01:28,500 --> 01:01:31,520 gehelp beskerm teen hierdie kwaadwillige aanvalle. 1283 01:01:31,520 --> 01:01:33,970 So wanneer jy gebruik navraag het, is ons seker maak 1284 01:01:33,970 --> 01:01:36,560 dat dinge ontsmet en noem maar op. 1285 01:01:36,560 --> 01:01:41,070 >> MVC is net 'n ontwerp paradigma, so model, sien, kontroleerder. 1286 01:01:41,070 --> 01:01:44,200 Dit is net 'n manier om dinge te hou mooi en verdeel in die dieselfde manier 1287 01:01:44,200 --> 01:01:47,100 dat ons geneig is om faktor uit kode in funksies. 1288 01:01:47,100 --> 01:01:53,390 Dit is net 'n web ontwerp raamwerk wat jou toelaat om dieselfde ding te doen. 1289 01:01:53,390 --> 01:01:54,760 Ek gaan om dit te slaan. 1290 01:01:54,760 --> 01:01:58,530 >> Dit is iets wat ek sou wees super gemaklike met. 1291 01:01:58,530 --> 01:02:01,132 Dit is 'n groot bietjie tafel daar. 1292 01:02:01,132 --> 01:02:03,090 Dit gee jou die funksie voorbeeld van die model. 1293 01:02:03,090 --> 01:02:05,473 Ek gaan net deur dit omdat ek regtig wil Davin in staat wees om te praat. 1294 01:02:05,473 --> 01:02:07,140 As jy enige vrae het, voel asseblief vry. 1295 01:02:07,140 --> 01:02:07,931 Ek sal na hier te wees. 1296 01:02:07,931 --> 01:02:10,360 Net kom praat met my. 1297 01:02:10,360 --> 01:02:13,380 Met dit, het ons HTTP status. 1298 01:02:13,380 --> 01:02:16,270 En Davin se gaan blaas deur middel van hierdie in 15 minute. 1299 01:02:16,270 --> 01:02:17,560 Dit gaan groot wees. 1300 01:02:17,560 --> 01:02:18,893 >> Davin: OK. 1301 01:02:18,893 --> 01:02:20,312 Uh, jou mic? 1302 01:02:20,312 --> 01:02:22,210 Ja. 1303 01:02:22,210 --> 01:02:23,336 Jammer. 1304 01:02:23,336 --> 01:02:24,460 ALISON: manier om voorbereid te wees. 1305 01:02:24,460 --> 01:02:25,335 Davin: Nee, ek is gereed. 1306 01:02:25,335 --> 01:02:25,860 Ek is gereed. 1307 01:02:25,860 --> 01:02:28,790 Kom ons doen dit. 1308 01:02:28,790 --> 01:02:29,290 Dit is gereed. 1309 01:02:29,290 --> 01:02:30,041 OK. 1310 01:02:30,041 --> 01:02:30,540 Jammer. 1311 01:02:30,540 --> 01:02:31,664 Ek gemors koffie op myself. 1312 01:02:31,664 --> 01:02:36,037 1313 01:02:36,037 --> 01:02:38,210 Ek weet nie of ek meer ontstel dat ek lyk dom, 1314 01:02:38,210 --> 01:02:40,600 of dat ek nie koffie nie. 1315 01:02:40,600 --> 01:02:44,480 In elk geval, net 'n vinnige aankondiging oor die vel julle ouens het. 1316 01:02:44,480 --> 01:02:47,994 So hierdie blad julle ouens het nie die amptelike wat op die quiz. 1317 01:02:47,994 --> 01:02:49,660 Dit is die amptelike wat op die quiz. 1318 01:02:49,660 --> 01:02:52,520 Ook op die webwerf, ons vertel jy, OK, dit sal wees op die quiz. 1319 01:02:52,520 --> 01:02:55,020 So in die klein cheat sheet jy het, nie amptelik nie. 1320 01:02:55,020 --> 01:02:56,690 En daar is foute op dit. 1321 01:02:56,690 --> 01:03:01,490 So die beste om nie net blindelings dit gebruik. 1322 01:03:01,490 --> 01:03:04,390 So ja, dit is dit. 1323 01:03:04,390 --> 01:03:05,980 So laat ons kry in hierdie ware vinnig. 1324 01:03:05,980 --> 01:03:07,420 >> So HTTP status. 1325 01:03:07,420 --> 01:03:10,430 So wat gebeur wanneer die webwerf, is alles reg. 1326 01:03:10,430 --> 01:03:11,144 Alles is OK. 1327 01:03:11,144 --> 01:03:13,310 Alles kom terug na jy die manier waarop jy dit wil. 1328 01:03:13,310 --> 01:03:15,370 Jy kry 'n 200 OK. 1329 01:03:15,370 --> 01:03:19,250 301, waar het ons gesien dat 301 voor? 1330 01:03:19,250 --> 01:03:20,890 Wag, wat gaan aan? 1331 01:03:20,890 --> 01:03:23,250 Jammer. 1332 01:03:23,250 --> 01:03:24,980 Ons het gesien i tin lesing tydens sekuriteit. 1333 01:03:24,980 --> 01:03:30,690 So tydens sekuriteit, so as David getik in http en dan probeer om te gaan na cs50.net, 1334 01:03:30,690 --> 01:03:31,940 jy gaan om te sien 301 verskuif. 1335 01:03:31,940 --> 01:03:32,440 Hoekom? 1336 01:03:32,440 --> 01:03:35,570 Omdat dit gaan om te lei jy outomaties aan ons HTTPS. 1337 01:03:35,570 --> 01:03:38,649 >> So 301 verskuif, net dit is basies 'n aanstuuring. 1338 01:03:38,649 --> 01:03:40,190 En jy kan dink oor dit soos hierdie. 1339 01:03:40,190 --> 01:03:43,790 Enige van die statusse wat begin met 2's, dit is soos, OK, alles is OK. 1340 01:03:43,790 --> 01:03:46,530 Enige van die statusse wat begin met 3, dit is aanstuuring. 1341 01:03:46,530 --> 01:03:49,571 Statusse wat begin met 4, wat beteken dat daar is 'n soort van 'n kliënt fout. 1342 01:03:49,571 --> 01:03:52,440 Statusse wat begin met 5, dit is 'n soort van bediener fout. 1343 01:03:52,440 --> 01:03:54,680 So jy soort van breek die status soos dit. 1344 01:03:54,680 --> 01:03:59,120 So 304 nie nie verander, so in jou server.c p-stelle, so kom ons sê jy 1345 01:03:59,120 --> 01:04:00,600 gelaai cat.html. 1346 01:04:00,600 --> 01:04:03,360 Alles kom terug, jy 200's, OK, groot. 1347 01:04:03,360 --> 01:04:04,540 >> Kom ons sê jy dit verkwik. 1348 01:04:04,540 --> 01:04:07,310 Wel, in daardie cat.html, jy het 'n JPEG. 1349 01:04:07,310 --> 01:04:09,520 Wel, wat JPEG is nie gaan herlaai kry. 1350 01:04:09,520 --> 01:04:12,140 Jy gaan nie 'n ander te plaas KRY versoek aan die bediener, 1351 01:04:12,140 --> 01:04:13,980 en dan kry al die inligting terug. 1352 01:04:13,980 --> 01:04:17,560 Dit gaan net be-- dat die beeld is gaan in die kas word op jou rekenaar. 1353 01:04:17,560 --> 01:04:19,540 En so dat die beeld sal wees om 'n 304. 1354 01:04:19,540 --> 01:04:20,720 So dit is nie, is aangepas. 1355 01:04:20,720 --> 01:04:24,600 As jy dan sluit uit, duidelik koekies, en dan verfris 1356 01:04:24,600 --> 01:04:27,490 en probeer om die bladsy te laai weer, jy gaan 200's te sien. 1357 01:04:27,490 --> 01:04:28,910 Jy gaan nie om te sien dat 304. 1358 01:04:28,910 --> 01:04:32,340 >> 400, slegte versoek real vinnige, soos as jy 1359 01:04:32,340 --> 01:04:34,880 gaan 'n te stuur Into voorwerp na die bediener 1360 01:04:34,880 --> 01:04:38,090 en jou into voorwerp was verkeerd, jy sal sien iets soos dit. 1361 01:04:38,090 --> 01:04:39,000 403, verbied. 1362 01:04:39,000 --> 01:04:40,330 Wanneer sal jy sien 'n verbode? 1363 01:04:40,330 --> 01:04:41,394 Waarskynlik Waarskynlik? 1364 01:04:41,394 --> 01:04:42,060 GEHOOR: CHMOD. 1365 01:04:42,060 --> 01:04:42,950 Davin: CHMOD, ja. 1366 01:04:42,950 --> 01:04:44,730 So jy het nie ingestel regte korrek. 1367 01:04:44,730 --> 01:04:45,577 404, nie gevind nie. 1368 01:04:45,577 --> 01:04:46,410 Dit is net nie daar nie. 1369 01:04:46,410 --> 01:04:48,670 So as jy tik in die verkeerde adres. 1370 01:04:48,670 --> 01:04:53,500 500, interne bediener fout, die bediener waarskynlik nie korrek opgestel nie. 1371 01:04:53,500 --> 01:04:56,260 Iets wat nie op jou einde, maar iets op die bediener kant. 1372 01:04:56,260 --> 01:04:57,240 En 503? 1373 01:04:57,240 --> 01:04:59,502 Baie van die mense het gesien 503s in die laaste p-stel. 1374 01:04:59,502 --> 01:05:00,460 Wanneer sal dit gebeur? 1375 01:05:00,460 --> 01:05:04,180 1376 01:05:04,180 --> 01:05:05,660 Ek het gehoor fluister. 1377 01:05:05,660 --> 01:05:07,767 >> GEHOOR: Wanneer Google besluit jy is 'n robot. 1378 01:05:07,767 --> 01:05:10,350 Davin: Ja, wanneer Google besluit jy is 'n robot, jy 503s. 1379 01:05:10,350 --> 01:05:11,560 So dit is 'n oorlading. 1380 01:05:11,560 --> 01:05:14,620 As jy versoek het van die bediener te veel, dit is gewoonlik tydelik. 1381 01:05:14,620 --> 01:05:15,560 En die meeste van julle het opgemerk dat dit. 1382 01:05:15,560 --> 01:05:16,185 So jy sien 503. 1383 01:05:16,185 --> 01:05:19,282 Jy kan 'n bietjie geneem breek, dan is die 503s gegaan, 1384 01:05:19,282 --> 01:05:20,490 en alles was reg. 1385 01:05:20,490 --> 01:05:26,640 >> GABE: Real vinnig, wanneer jy ouens kry 500 in waarskynlik die laaste probleem stel? 1386 01:05:26,640 --> 01:05:27,954 Ja? 1387 01:05:27,954 --> 01:05:30,906 >> GEHOOR: Gewoonlik as die bediener het 'n lêer misplaas 1388 01:05:30,906 --> 01:05:34,650 of [onhoorbaar] hul masjien [onhoorbaar]. 1389 01:05:34,650 --> 01:05:38,870 >> GABE: So is dit dalk 'n opset wees kwessie in jou PHP op jou bediener. 1390 01:05:38,870 --> 01:05:42,250 Maar dit mag dalk net iets wees soos 'n kommapunt dat jou vergeet. 1391 01:05:42,250 --> 01:05:44,130 As jy tik PHP, sommige verkeerde sintaksis 1392 01:05:44,130 --> 01:05:46,000 kan kry jy iets soos dit. 1393 01:05:46,000 --> 01:05:46,960 OK? 1394 01:05:46,960 --> 01:05:48,610 >> Davin: Cool. 1395 01:05:48,610 --> 01:05:51,180 Wil jy my om te doen net tot AJAX? 1396 01:05:51,180 --> 01:05:52,950 >> GABE: [onhoorbaar]. 1397 01:05:52,950 --> 01:05:53,450 Davin: OK. 1398 01:05:53,450 --> 01:05:54,230 So, wat is die DOM? 1399 01:05:54,230 --> 01:05:55,290 Wat beteken DOM staan ​​vir? 1400 01:05:55,290 --> 01:05:56,990 >> GEHOOR: Document voorwerp model. 1401 01:05:56,990 --> 01:05:57,490 Davin: Nice. 1402 01:05:57,490 --> 01:06:00,775 En hoekom wil ons dit nie? 1403 01:06:00,775 --> 01:06:02,670 Awesome. 1404 01:06:02,670 --> 01:06:06,651 Right, so dit laat ons net toegang die HTML, toegang tot ons bladsy baie vinnig. 1405 01:06:06,651 --> 01:06:07,150 Hoekom? 1406 01:06:07,150 --> 01:06:09,980 Omdat ons die behandeling van ons bladsy, die behandeling van ons HTML tags, 1407 01:06:09,980 --> 01:06:11,730 behandeling alles asof hulle voorwerpe. 1408 01:06:11,730 --> 01:06:13,710 As ons die behandeling van hulle soos hulle is voorwerpe, wat dan kan ons doen? 1409 01:06:13,710 --> 01:06:15,210 Wel, kan ons funksies 'n beroep op hulle. 1410 01:06:15,210 --> 01:06:16,460 En dit is belangrik hoekom? 1411 01:06:16,460 --> 01:06:19,200 Wel, omdat ons gaan gebruik JavaScript ons HTML te werk, 1412 01:06:19,200 --> 01:06:20,500 werk hierdie voorwerpe. 1413 01:06:20,500 --> 01:06:23,869 So as ons behandel hulle soos voorwerpe, ons kan dan bel funksies op hulle. 1414 01:06:23,869 --> 01:06:26,660 Ek gaan om te kry in dit 'n bietjie meer as Ek gaan in JavaScript, 1415 01:06:26,660 --> 01:06:30,510 maar jy het al gesien soos document.getElementByID. 1416 01:06:30,510 --> 01:06:32,870 So dokument is jou element, kry element deur ID, 1417 01:06:32,870 --> 01:06:35,087 so jy gaan om te kyk vir 'n paar ID in 'n HTML tag. 1418 01:06:35,087 --> 01:06:36,920 En dan, kan jy doen iets anders aan daardie. 1419 01:06:36,920 --> 01:06:40,089 Byvoorbeeld, soos document.body, dan kan jy voeg kind. 1420 01:06:40,089 --> 01:06:41,630 So jy gaan om die dokument te vind. 1421 01:06:41,630 --> 01:06:42,340 Jy het die dokument. 1422 01:06:42,340 --> 01:06:43,629 Jy gaan die liggaam te vind. 1423 01:06:43,629 --> 01:06:44,420 Jy het die liggaam. 1424 01:06:44,420 --> 01:06:46,545 En dan, gaan jy noem 'n funksie op dit. 1425 01:06:46,545 --> 01:06:50,312 So voeg kind, en jy kan voeg sommige HTML op die einde in jou liggaam. 1426 01:06:50,312 --> 01:06:52,520 So basies, jy is net die behandeling van dit soos 'n voorwerp. 1427 01:06:52,520 --> 01:06:54,515 Jy behandel HTML tags soos 'n voorwerp. 1428 01:06:54,515 --> 01:06:57,071 En dit maak dit baie maklik en vinnig om te gaan deur hulle. 1429 01:06:57,071 --> 01:06:59,070 Maar dit laat jou ook funksies op hulle te bel 1430 01:06:59,070 --> 01:07:04,410 sodat jy kan manipuleer en verander die elemente. 1431 01:07:04,410 --> 01:07:10,162 >> GABE: Gegewe hierdie, hoekom is JavaScript sulke 'n mooi taal om te kommunikeer met HTML? 1432 01:07:10,162 --> 01:07:12,870 Kans is, wanneer mense is die keuse die taal vir die leser, 1433 01:07:12,870 --> 01:07:14,990 vir die kliënt kant, JavaScript is regtig mooi, 1434 01:07:14,990 --> 01:07:16,765 dit is regtig goed in die hantering voorwerpe. 1435 01:07:16,765 --> 01:07:20,620 En die voorwerpe is soort van soos die voorwerpe wat in die HTML verskyn, 1436 01:07:20,620 --> 01:07:23,940 so dit is baie maklik vir JavaScript dat die soort van hantering te doen. 1437 01:07:23,940 --> 01:07:24,440 Davin: Nice. 1438 01:07:24,440 --> 01:07:25,670 So hier is net 'n voorbeeld. 1439 01:07:25,670 --> 01:07:29,020 So ek dink op die vorige jaar se quiz, of miskien twee jaar gelede, het ons 1440 01:07:29,020 --> 01:07:30,840 gevra om 'n boom te skep. 1441 01:07:30,840 --> 01:07:32,660 So, dit is presies wat jy wil doen. 1442 01:07:32,660 --> 01:07:34,255 So jy begin met dokument. 1443 01:07:34,255 --> 01:07:36,130 En dan moet jy basies net kyk na die etikette. 1444 01:07:36,130 --> 01:07:38,100 So as jy kyk, ons begin met 'n HTML tag. 1445 01:07:38,100 --> 01:07:41,660 En dan, jy leidrade oor hoe om te doen dit, gebaseer op die inkeping. 1446 01:07:41,660 --> 01:07:43,870 So kop soort takke af. 1447 01:07:43,870 --> 01:07:46,242 Binne kop, ons het 'n ander etiket vir titel. 1448 01:07:46,242 --> 01:07:47,450 So dan, ons het 'n titel tag. 1449 01:07:47,450 --> 01:07:49,760 En binne-in dat ons het 'n paar string. 1450 01:07:49,760 --> 01:07:52,210 En so het ons verteenwoordig 'n string in 'n sirkel. 1451 01:07:52,210 --> 01:07:54,010 En al die tags in blokkies. 1452 01:07:54,010 --> 01:07:56,270 >> En as jy kyk, as ons dink van hierdie as 'n boom, 1453 01:07:56,270 --> 01:07:58,730 en laat ons sê dat HTML is 'n ouer, dan kop en liggaam 1454 01:07:58,730 --> 01:07:59,772 gaan broers en susters te wees. 1455 01:07:59,772 --> 01:08:01,813 Hulle is albei gaan wees kinders van daardie ouer. 1456 01:08:01,813 --> 01:08:03,620 So, want hulle is beide broers en susters, is hulle 1457 01:08:03,620 --> 01:08:06,590 gaan soort van volgende te wees mekaar in ons boom model. 1458 01:08:06,590 --> 01:08:08,590 En dan, jy basies doen presies dieselfde ding. 1459 01:08:08,590 --> 01:08:13,512 So nie moeilik nie, maar ons het gevra vrae soos hierdie voor op die quiz. 1460 01:08:13,512 --> 01:08:15,220 GABE: Het enige iemand vrae so ver? 1461 01:08:15,220 --> 01:08:16,357 Is dit goed? 1462 01:08:16,357 --> 01:08:16,856 Davin: Cool. 1463 01:08:16,856 --> 01:08:19,630 1464 01:08:19,630 --> 01:08:21,600 JavaScript, OK, die goeie dinge. 1465 01:08:21,600 --> 01:08:24,069 So JavaScript, wat is JavaScript? 1466 01:08:24,069 --> 01:08:28,370 Wel, JavaScript is-- dit ingewikkeld, maar hierdie 1467 01:08:28,370 --> 01:08:30,727 is 'n paar van die hoogtepunte wat jy in gedagte moet hou. 1468 01:08:30,727 --> 01:08:31,810 Eerstens, dit is losweg getik. 1469 01:08:31,810 --> 01:08:33,529 Wat beteken dit? 1470 01:08:33,529 --> 01:08:35,596 So PHP was-- ja, wat gaan aan? 1471 01:08:35,596 --> 01:08:39,854 >> GEHOOR: Jy nie uitdruklik hoef te Noem watter tipe veranderlike dit is. 1472 01:08:39,854 --> 01:08:40,479 Davin: Perfect. 1473 01:08:40,479 --> 01:08:43,270 So het hy gesê jy hoef nie te uitdruklik die tipe veranderlike. 1474 01:08:43,270 --> 01:08:44,160 Dit is presies reg. 1475 01:08:44,160 --> 01:08:49,700 So in C, as ek int i gelyk 50, dan in PHP, dit is net soos hierdie, $ i, 1476 01:08:49,700 --> 01:08:50,550 gelyk 50. 1477 01:08:50,550 --> 01:08:54,319 Toe ek in JavaScript, wat sou die oproep? 1478 01:08:54,319 --> 01:08:55,260 Var, reg? 1479 01:08:55,260 --> 01:08:56,566 Dit sou wees soos var i gelyk 50. 1480 01:08:56,566 --> 01:08:58,649 Maar jy hoef nie te wees soos, OK, dit is 'n int. 1481 01:08:58,649 --> 01:09:00,350 OK, dit is 'n string. 1482 01:09:00,350 --> 01:09:01,731 Geen behoefte om dit te doen. 1483 01:09:01,731 --> 01:09:02,939 Dit is 'n geïnterpreteer taal. 1484 01:09:02,939 --> 01:09:04,904 So wat beteken dit? 1485 01:09:04,904 --> 01:09:06,340 >> GEHOOR: Nie saamgestel. 1486 01:09:06,340 --> 01:09:10,470 >> Davin: Wat nie saamgestel beteken? 1487 01:09:10,470 --> 01:09:11,392 Ja? 1488 01:09:11,392 --> 01:09:15,336 >> GEHOOR: Jy hoef nie die kode te herstruktureer 1489 01:09:15,336 --> 01:09:18,294 dit gereed te kry vir die rekenaar om dit te doen. 1490 01:09:18,294 --> 01:09:23,144 Dit is net geneem by die tyd van die uitvoering en die rekenaar [onhoorbaar]. 1491 01:09:23,144 --> 01:09:25,560 Davin: Ja, so dit gaan deur 'n tolk. 1492 01:09:25,560 --> 01:09:26,750 Maar jy is presies reg. 1493 01:09:26,750 --> 01:09:28,319 So jy gaan nooit om dit te stel, reg? 1494 01:09:28,319 --> 01:09:30,399 Wanneer jy doen jou PHP en JavaScript-kode, 1495 01:09:30,399 --> 01:09:31,365 jy nooit saamstel genoem. 1496 01:09:31,365 --> 01:09:33,779 Jy het nog nooit iets genoem soos maak of iets soos dit. 1497 01:09:33,779 --> 01:09:34,800 Dit is omdat dit geïnterpreteer. 1498 01:09:34,800 --> 01:09:37,319 So elke keer as dit gaan deur die leser, dit gaan deur 'n tolk. 1499 01:09:37,319 --> 01:09:40,370 En wat gaan om dit te interpreteer net in reële tyd dadelik vir jou. 1500 01:09:40,370 --> 01:09:43,770 So, wat is 'n paar positiewe en negatiewe om met 'n geïnterpreteer taal 1501 01:09:43,770 --> 01:09:45,258 en met 'n saamgestel taal? 1502 01:09:45,258 --> 01:09:48,240 1503 01:09:48,240 --> 01:09:50,540 So compiling-- ja, wat gaan aan? 1504 01:09:50,540 --> 01:09:52,444 >> GEHOOR: Getolk is stadiger. 1505 01:09:52,444 --> 01:09:53,319 Davin: In watter sin? 1506 01:09:53,319 --> 01:09:57,167 1507 01:09:57,167 --> 01:09:59,091 >> GEHOOR: Nadat jy stel, het jy nie ' 1508 01:09:59,091 --> 01:10:04,400 enige ekstra stappe te doen om uit te voer dit, terwyl hierdie [onhoorbaar]. 1509 01:10:04,400 --> 01:10:05,570 >> Davin: Right, volmaak. 1510 01:10:05,570 --> 01:10:08,386 So wat jy sê is basies dat opstel, 1511 01:10:08,386 --> 01:10:10,760 wanneer jy stel, jy het 'n baie koste vooraf, reg? 1512 01:10:10,760 --> 01:10:11,760 Jy gaan om dit te stel. 1513 01:10:11,760 --> 01:10:13,750 Maar nadat jy dit stel, die samesteller gaan om dit te optimaliseer. 1514 01:10:13,750 --> 01:10:14,840 Dit gaan vinnig. 1515 01:10:14,840 --> 01:10:16,170 Dit gaan basies so vinnig as wat dit kan wees. 1516 01:10:16,170 --> 01:10:18,830 Met interpreteer, moet jy nooit het dat vooraf koste. 1517 01:10:18,830 --> 01:10:22,260 Inteendeel, dit gaan effens stadiger elke keer wat jy dit interpreteer. 1518 01:10:22,260 --> 01:10:24,940 En jy gaan te hê elke keer interpreteer dit. 1519 01:10:24,940 --> 01:10:27,114 So in plaas van om hierdie 'n tyd koste, nou is jy 1520 01:10:27,114 --> 01:10:29,530 gaan om dit te interpreteer elke keer as die webblad lewer. 1521 01:10:29,530 --> 01:10:31,890 >> So tolke is goed, want jy hoef nie om dit te stel, 1522 01:10:31,890 --> 01:10:33,980 maar hulle is sleg in dat elke Tyd om die bladsy laai, is dit 1523 01:10:33,980 --> 01:10:35,771 gaan te hê hierdie JavaScript interpreteer. 1524 01:10:35,771 --> 01:10:40,520 En dit gaan effens stadiger te hardloop as wanneer jy dit op te stel. 1525 01:10:40,520 --> 01:10:43,044 Kan jy om te communicate-- O, wag. 1526 01:10:43,044 --> 01:10:44,960 Gebruik om die te manipuleer inhoud en voorkoms. 1527 01:10:44,960 --> 01:10:46,043 Ons het net gepraat oor dat. 1528 01:10:46,043 --> 01:10:47,250 Dit maak gebruik van die DOM. 1529 01:10:47,250 --> 01:10:49,930 AJAX, sal ons in AJAX in 'n bietjie. 1530 01:10:49,930 --> 01:10:51,520 En dan, dit is kliënt kant. 1531 01:10:51,520 --> 01:10:53,110 So PHP is die bediener kant. 1532 01:10:53,110 --> 01:10:54,360 JavaScript is kliënt kant. 1533 01:10:54,360 --> 01:10:57,780 Wat is positief dat? 1534 01:10:57,780 --> 01:10:58,280 Dit sê dit. 1535 01:10:58,280 --> 01:11:01,480 1536 01:11:01,480 --> 01:11:02,780 Dit is vinniger, reg? 1537 01:11:02,780 --> 01:11:05,282 Omdat jy nie aan- dit is vinniger. 1538 01:11:05,282 --> 01:11:07,490 Jy hoef nie te kommunikeer met 'n paar ander toestel. 1539 01:11:07,490 --> 01:11:08,790 As jy net op jou kliënt, jy is nooit 1540 01:11:08,790 --> 01:11:11,280 gaan hê om te gaan en sien wat op die bediener 1541 01:11:11,280 --> 01:11:13,150 en dan terug te rapporteer of iets soos dit. 1542 01:11:13,150 --> 01:11:15,410 So kliënt kant is geneig om te 'n bietjie vinniger. 1543 01:11:15,410 --> 01:11:17,910 >> GABE: Ja, maar dit beteken nie PHP is 1544 01:11:17,910 --> 01:11:20,440 vinniger as JavaScript of enigiets van die wil. 1545 01:11:20,440 --> 01:11:23,270 Hulle hardloop soort in dieselfde spoed, want hulle is beide 1546 01:11:23,270 --> 01:11:24,490 geïnterpreteer tale. 1547 01:11:24,490 --> 01:11:26,680 Die ding wat stadig hier is die versoek. 1548 01:11:26,680 --> 01:11:28,870 So jy eintlik gaan al die pad oor te Brasilië 1549 01:11:28,870 --> 01:11:31,460 inligting te kry wat daar woon. 1550 01:11:31,460 --> 01:11:34,590 Maar PHP en JavaScript, hulle soort van loop in dieselfde spoed. 1551 01:11:34,590 --> 01:11:37,930 Dit is nie dat 'n mens is vinniger as die ander. 1552 01:11:37,930 --> 01:11:40,600 Dit, ook, truuk vraag hier. 1553 01:11:40,600 --> 01:11:47,338 So JavaScript word nooit masjien kode, waar of vals? 1554 01:11:47,338 --> 01:11:48,590 >> GEHOOR: Vals. 1555 01:11:48,590 --> 01:11:49,090 GABE: Vals. 1556 01:11:49,090 --> 01:11:51,298 Dit het aan die masjien raak kode, omdat masjien kode is 1557 01:11:51,298 --> 01:11:53,210 die enigste ding wat die masjien verstaan. 1558 01:11:53,210 --> 01:11:55,800 Selfs al is dit nie saamgestel is, dit nog steeds masjien kode 1559 01:11:55,800 --> 01:11:59,120 omdat die tolk is net 'n program wat gaan reël vir reël 1560 01:11:59,120 --> 01:12:02,170 en verander dat die lyn in iets wat die rekenaar verstaan. 1561 01:12:02,170 --> 01:12:02,825 OK? 1562 01:12:02,825 --> 01:12:03,325 Cool. 1563 01:12:03,325 --> 01:12:08,530 1564 01:12:08,530 --> 01:12:12,890 >> Davin: Hier is net 'n baie basiese hello world JavaScript program. 1565 01:12:12,890 --> 01:12:15,590 So ek weet nie if-- jy dit gesien. 1566 01:12:15,590 --> 01:12:17,630 Maar jy net HTML hier. 1567 01:12:17,630 --> 01:12:21,020 En in plaas van werklik om die JavaScript in die script tags, 1568 01:12:21,020 --> 01:12:22,810 So jy wil gewoonlik sit dit in die kop. 1569 01:12:22,810 --> 01:12:24,030 Jy het script tags. 1570 01:12:24,030 --> 01:12:24,870 Jy gooi dit daar. 1571 01:12:24,870 --> 01:12:28,350 Al wat ons het hier gedoen word ons verbind in-- sodat ons in 'n JavaScript-lêer gekoppel het 1572 01:12:28,350 --> 01:12:29,137 soos hierdie. 1573 01:12:29,137 --> 01:12:30,470 En jy het alles gedoen het, reg? 1574 01:12:30,470 --> 01:12:34,740 So wanneer jy die gebruik van jQuery en underscore.js in die laaste p-stel, 1575 01:12:34,740 --> 01:12:38,700 jy nie ton van die kode in jou script tags, in jou kop. 1576 01:12:38,700 --> 01:12:41,415 Jy kan dit doen, maar in plaas daarvan jy net 'n skakel in. 1577 01:12:41,415 --> 01:12:43,540 En jy dit te koppel in Net soos wat jy doen met CSS. 1578 01:12:43,540 --> 01:12:50,186 So dit maak dit net makliker om dit te lees jou kode is nie 1000 lyne lank hou 1579 01:12:50,186 --> 01:12:52,310 met ton van die funksies wat jy dalk nie gebruik. 1580 01:12:52,310 --> 01:12:53,518 >> In plaas daarvan, het jy net 'n skakel in. 1581 01:12:53,518 --> 01:12:55,050 Dit compartmentalizes dit. 1582 01:12:55,050 --> 01:13:00,110 Dit is soos die skryf van sommige kop lêer, en dan insluitend kop lêer in C. 1583 01:13:00,110 --> 01:13:01,620 Dink aan dit net soos hierdie. 1584 01:13:01,620 --> 01:13:02,680 So wat beteken dit doen? 1585 01:13:02,680 --> 01:13:04,560 Wel, dit gaan om te hardloop. 1586 01:13:04,560 --> 01:13:05,410 Dit gaan te waarsku. 1587 01:13:05,410 --> 01:13:08,020 So jy gaan 'n bietjie te kry pop-up genoem hello world. 1588 01:13:08,020 --> 01:13:11,420 Vinnige vraag, net gesonde verstand tjek, so jy sien hier in die liggaam, 1589 01:13:11,420 --> 01:13:13,160 sê liggaam, HTML hier. 1590 01:13:13,160 --> 01:13:14,080 Wat kom eerste? 1591 01:13:14,080 --> 01:13:16,864 Sien ek die liggaam, HTML hier, of sien ek die waarskuwing eerste? 1592 01:13:16,864 --> 01:13:19,828 1593 01:13:19,828 --> 01:13:20,820 >> GEHOOR: Alert. 1594 01:13:20,820 --> 01:13:21,470 >> Davin: Right. 1595 01:13:21,470 --> 01:13:22,110 Hy sê waarskuwing. 1596 01:13:22,110 --> 01:13:22,610 Hoekom? 1597 01:13:22,610 --> 01:13:24,470 >> GEHOOR: Omdat jy gaan van bo tot onder. 1598 01:13:24,470 --> 01:13:25,600 >> Davin: Ja. 1599 01:13:25,600 --> 01:13:26,100 Volmaak. 1600 01:13:26,100 --> 01:13:29,207 So sê hy, gaan jy van bo na bodem, wat is absoluut korrek is. 1601 01:13:29,207 --> 01:13:30,790 Jy gaan om te gaan van bo tot onder. 1602 01:13:30,790 --> 01:13:34,790 En in JavaScript, jQuery, jy het 'n funksie wat is soos onload, of gereed is, 1603 01:13:34,790 --> 01:13:38,030 en wat sê, OK, wag totdat al hierdie HTML gelaai. 1604 01:13:38,030 --> 01:13:39,580 En dan, bel die JavaScript. 1605 01:13:39,580 --> 01:13:42,190 Want ons het nie dat hier, die heel eerste ding wat gaan gebeur 1606 01:13:42,190 --> 01:13:43,920 is dit gaan om te gaan van bo tot onder. 1607 01:13:43,920 --> 01:13:46,310 Dit gaan om te tref dat JS noem, dit gaan te waarsku. 1608 01:13:46,310 --> 01:13:49,510 Na wat jy kliek OK, dat waarskuwing gaan weg. 1609 01:13:49,510 --> 01:13:53,600 Dan is dit gaan om te wys jy die liggaam HTML hier. 1610 01:13:53,600 --> 01:13:54,590 Nice. 1611 01:13:54,590 --> 01:14:00,880 >> OK, so net ware vinnig, skryf in JavaScript is super vinnig. 1612 01:14:00,880 --> 01:14:02,710 Ten einde te verklaar 'n veranderlike, var naam. 1613 01:14:02,710 --> 01:14:07,070 So in C, jy het int i, het jy te verklaar watter soort soort dit is. 1614 01:14:07,070 --> 01:14:08,040 PHP, $. 1615 01:14:08,040 --> 01:14:08,755 JavaScript, var. 1616 01:14:08,755 --> 01:14:09,630 Ons het gepraat oor hierdie. 1617 01:14:09,630 --> 01:14:11,020 Alle reg, laat ons gaan. 1618 01:14:11,020 --> 01:14:12,510 >> Loops, dieselfde ding. 1619 01:14:12,510 --> 01:14:14,230 Dieselfde ding. 1620 01:14:14,230 --> 01:14:18,165 Funksie verklarings, so net soos jy gesien het in C. 1621 01:14:18,165 --> 01:14:21,290 Die enigste ding wat anders is so toe jy na ander programmeertale, 1622 01:14:21,290 --> 01:14:24,780 soos wanneer jy 51 volgende semester en jy doen met OCAML, 1623 01:14:24,780 --> 01:14:26,690 jy kan gaan met anonieme funksies. 1624 01:14:26,690 --> 01:14:28,240 So dit is presies wat jy hier het. 1625 01:14:28,240 --> 01:14:31,560 So jy wil om te sit in som, 'n soort van som waarde. 1626 01:14:31,560 --> 01:14:33,870 Maar jy kan net doen dit een keer. 1627 01:14:33,870 --> 01:14:37,310 So jy wil nie om dit te noem funksie som, gee dit 'n funksie verklaring. 1628 01:14:37,310 --> 01:14:39,830 In plaas daarvan, het jy net gebruik dit as 'n anonieme funksie. 1629 01:14:39,830 --> 01:14:42,469 En jy het gesien dat dit 'n baie. 1630 01:14:42,469 --> 01:14:44,510 Jy sal 'n voorbeeld van sien dit in 'n paar skyfies. 1631 01:14:44,510 --> 01:14:45,597 Ja, ons sal sien. 1632 01:14:45,597 --> 01:14:46,430 GABE: Goeie vraag. 1633 01:14:46,430 --> 01:14:50,660 Wanneer wil jy dalk om te gebruik 'n anonieme funksie hier? 1634 01:14:50,660 --> 01:14:54,111 Basies, as jy iets wil hê, soos 'n gebeurtenis, gebeur. 1635 01:14:54,111 --> 01:14:55,860 So wanneer die muis is gekliek, byvoorbeeld, 1636 01:14:55,860 --> 01:14:57,790 jy wil 'n funksie genoem te word. 1637 01:14:57,790 --> 01:15:00,570 So jy slaag om die gebeurtenis hanteerder, jy slaag om die geleentheid, 1638 01:15:00,570 --> 01:15:02,870 soort, die funksie wat jy wil genoem word. 1639 01:15:02,870 --> 01:15:04,710 En wat jy verby is soos aan die einde 1640 01:15:04,710 --> 01:15:08,757 van die dag, net 'n wyser na wat onderrig, aan die funksie. 1641 01:15:08,757 --> 01:15:11,090 So dit is nie soos jy verby die hele kode, net soos 1642 01:15:11,090 --> 01:15:12,173 'n verwysing na die funksie. 1643 01:15:12,173 --> 01:15:17,871 En dan, wanneer iemand druk die muis, dan daardie funksie kry genoem. 1644 01:15:17,871 --> 01:15:22,340 >> Davin: Arrays, sodat jy het 'n verskeidenheid verklaring. 1645 01:15:22,340 --> 01:15:23,990 Dan, 'n verskeidenheid dinge te sit in. 1646 01:15:23,990 --> 01:15:25,769 Real vinnig, wat sal hierdie druk? 1647 01:15:25,769 --> 01:15:27,060 Wat sal die derde element wees? 1648 01:15:27,060 --> 01:15:31,470 1649 01:15:31,470 --> 01:15:32,450 >> GEHOOR: "JS". 1650 01:15:32,450 --> 01:15:33,940 >> Davin: Right, sou dit "JS." 1651 01:15:33,940 --> 01:15:35,760 Wag, gaan terug. 1652 01:15:35,760 --> 01:15:37,100 Wat is die lengte? 1653 01:15:37,100 --> 01:15:38,117 >> GEHOOR: Drie. 1654 01:15:38,117 --> 01:15:38,950 Davin: Drie, reg? 1655 01:15:38,950 --> 01:15:40,210 Presies wat jy dink. 1656 01:15:40,210 --> 01:15:42,072 OK, nou gaan. 1657 01:15:42,072 --> 01:15:43,530 Skikkings, kan jy dit aan hulle voeg. 1658 01:15:43,530 --> 01:15:45,395 So kan jy buite gaan hul aanvanklike grense. 1659 01:15:45,395 --> 01:15:46,740 Net iets om in gedagte te hou. 1660 01:15:46,740 --> 01:15:49,760 PHP, JavaScript, hulle is 'n bietjie bietjie meer vergewensgesind in terme van dinge 1661 01:15:49,760 --> 01:15:50,570 soos dit. 1662 01:15:50,570 --> 01:15:54,260 Voorwerpe, baie soos structs in C, baie 1663 01:15:54,260 --> 01:15:56,590 soos assosiatiewe skikkings in PHP. 1664 01:15:56,590 --> 01:15:58,720 Jy het al ervaring gehad het met hierdie. 1665 01:15:58,720 --> 01:16:01,880 So into wanneer jy verby into heen en weer in p-stel agt, 1666 01:16:01,880 --> 01:16:03,260 dit is jou doel. 1667 01:16:03,260 --> 01:16:06,290 >> So ja, byvoorbeeld, ware vinnige voorbeeld. 1668 01:16:06,290 --> 01:16:07,880 Hier is 'n voorwerp. 1669 01:16:07,880 --> 01:16:12,700 Die manier waarop jy verwysing hierdie voorwerp, sodat net ware vinnige, 1670 01:16:12,700 --> 01:16:18,630 Kom ons sê ek wou om uit te vind uit, OK, wat is die kursus? 1671 01:16:18,630 --> 01:16:20,681 En so het die voorwerp naam hier is CS50. 1672 01:16:20,681 --> 01:16:23,180 En dan as ek het 'n assosiatiewe skikking, hoe sou ek dit doen? 1673 01:16:23,180 --> 01:16:24,580 Ek sal gebruik word om 'n sleutel, reg? 1674 01:16:24,580 --> 01:16:26,030 So ek het die naam van die skikking. 1675 01:16:26,030 --> 01:16:30,160 Ek het bracket, aanhalings, sleutel, einde aanhalings, einde bracket, 1676 01:16:30,160 --> 01:16:33,610 en dit sal verwys wat element in my assosiatiewe skikking. 1677 01:16:33,610 --> 01:16:37,646 Hoe doen ek gekla Natuurlik in my voorwerp? 1678 01:16:37,646 --> 01:16:39,170 Enigiemand wat weet? 1679 01:16:39,170 --> 01:16:40,622 >> GEHOOR: [onhoorbaar]. 1680 01:16:40,622 --> 01:16:41,784 >> Davin: Wat gaan aan? 1681 01:16:41,784 --> 01:16:42,700 GEHOOR: CS50.course. 1682 01:16:42,700 --> 01:16:43,510 Davin: Right, ja. 1683 01:16:43,510 --> 01:16:45,320 So CS50.course. 1684 01:16:45,320 --> 01:16:48,770 So die manier waarop jy verwys dinge binne 'n into voorwerp is met 'n dot. 1685 01:16:48,770 --> 01:16:53,114 >> GEHOOR: Jy kan ook gebruik array sintaksis. 1686 01:16:53,114 --> 01:16:54,050 >> Davin: OK, fine. 1687 01:16:54,050 --> 01:16:57,544 >> GABE: Jy kan ook gebruik CS50 bracket, string, soos aanhalingstekens. 1688 01:16:57,544 --> 01:16:59,210 GEHOOR: Ek dink dit is identies aan PHP. 1689 01:16:59,210 --> 01:17:00,293 GABE: Dit is dieselfde ding. 1690 01:17:00,293 --> 01:17:02,487 Davin: Fine! 1691 01:17:02,487 --> 01:17:03,945 Maar jy sal dit sien op ander plekke. 1692 01:17:03,945 --> 01:17:08,990 1693 01:17:08,990 --> 01:17:10,480 Ja, so gaan hou. 1694 01:17:10,480 --> 01:17:13,330 Dit is wat ek nou net gesê. 1695 01:17:13,330 --> 01:17:17,840 So in 'n JavaScript jQuery voorbeeld. 1696 01:17:17,840 --> 01:17:19,440 So dit is my DOM, reg? 1697 01:17:19,440 --> 01:17:22,290 1698 01:17:22,290 --> 01:17:25,410 Real vinnig, so ek het 'n kop, hello world, liggaam. 1699 01:17:25,410 --> 01:17:26,160 Ek het 'n knoppie. 1700 01:17:26,160 --> 01:17:27,870 Dit sê: "stoot my," sodat ek wil om dit te druk. 1701 01:17:27,870 --> 01:17:29,745 En ek wil om iets te doen wanneer dit gekliek. 1702 01:17:29,745 --> 01:17:31,220 Reg langs. 1703 01:17:31,220 --> 01:17:34,630 >> Right, so dit is my JavaScript. 1704 01:17:34,630 --> 01:17:37,790 So jQuery is net 'n makliker manier JavaScript te skryf. 1705 01:17:37,790 --> 01:17:40,920 So hierdie, en wat ek gaan om te wys jy volgende, gaan wees jQuery, 1706 01:17:40,920 --> 01:17:41,930 identies is. 1707 01:17:41,930 --> 01:17:43,990 So het hulle dieselfde dinge sal doen. 1708 01:17:43,990 --> 01:17:45,974 Net jQuery is geneig om te wees 'n bietjie makliker te maak. 1709 01:17:45,974 --> 01:17:47,140 Mense is geneig om dit meer te hou. 1710 01:17:47,140 --> 01:17:48,390 Dit het 'n baie van die funksies. 1711 01:17:48,390 --> 01:17:49,830 So mense is geneig om jQuery te gebruik. 1712 01:17:49,830 --> 01:17:53,270 Jy al gebruik jQuery in die laaste p-stel. 1713 01:17:53,270 --> 01:17:54,270 So, wat sal dit doen? 1714 01:17:54,270 --> 01:17:56,580 Wat sal hierdie JavaScript-- so dit is net plain JavaScript. 1715 01:17:56,580 --> 01:17:57,430 Wat sal dit doen? 1716 01:17:57,430 --> 01:18:00,600 1717 01:18:00,600 --> 01:18:03,450 Wat sal dit doen? 1718 01:18:03,450 --> 01:18:04,890 >> So die eerste, sien jy venster onload. 1719 01:18:04,890 --> 01:18:05,390 Reg? 1720 01:18:05,390 --> 01:18:06,640 So ons het nie gesien dat voor. 1721 01:18:06,640 --> 01:18:09,380 So dit gaan om te wag totdat die hele venster vragte. 1722 01:18:09,380 --> 01:18:12,770 So dit gaan om te wag totdat die HTML, al die beelde vrag 1723 01:18:12,770 --> 01:18:13,770 voordat dit doen iets nie. 1724 01:18:13,770 --> 01:18:16,050 So kom ons sê ons DOM gelaai. 1725 01:18:16,050 --> 01:18:17,270 Alles is daar. 1726 01:18:17,270 --> 01:18:19,080 Dan wat gaan gebeur? 1727 01:18:19,080 --> 01:18:19,922 Ja? 1728 01:18:19,922 --> 01:18:22,880 >> GEHOOR: Button verskyn. 1729 01:18:22,880 --> 01:18:25,201 >> Davin: Die knoppie is reeds daar. 1730 01:18:25,201 --> 01:18:26,700 Ja, so die knoppie se reeds daar. 1731 01:18:26,700 --> 01:18:31,190 Maar dit gaan om te sê, OK, as ek op die knoppie, 1732 01:18:31,190 --> 01:18:33,650 so op die knoppie is reeds daar, soos wat HTML tag. 1733 01:18:33,650 --> 01:18:35,980 Wag, gaan terug ware vinnig. 1734 01:18:35,980 --> 01:18:39,470 Hierdie merker reg hier is gaan 'n knoppie om reeds. 1735 01:18:39,470 --> 01:18:40,810 Daar is reeds 'n knoppie. 1736 01:18:40,810 --> 01:18:44,120 Maar dan, die JavaScript tag, reg hier, 1737 01:18:44,120 --> 01:18:46,160 dit sê, OK, ek wil element te kry deur die ID, 1738 01:18:46,160 --> 01:18:50,300 so soek knoppie sê net, OK, ek wil hierdie veranderlike te dat die knoppie te karteer. 1739 01:18:50,300 --> 01:18:53,120 Sodat veranderlike is net 'n makliker manier om toegang te verkry dat die knoppie. 1740 01:18:53,120 --> 01:18:57,300 En ek sê, OK, as ek op dat knoppie, so as ek op daardie element, 1741 01:18:57,300 --> 01:18:59,560 en hierdie element verwys na die knoppie, indien ek op dit, 1742 01:18:59,560 --> 01:19:00,875 dan wil ek 'n funksie te roep. 1743 01:19:00,875 --> 01:19:03,500 Hier is een van daardie anonieme funksies wat ons praat. 1744 01:19:03,500 --> 01:19:04,840 >> Net noem 'n funksie. 1745 01:19:04,840 --> 01:19:08,840 Binne daardie funksie, basies iets wat ons gesien het 'n baie, waarskuwing. 1746 01:19:08,840 --> 01:19:10,477 Jy kliek op die soek knoppie. 1747 01:19:10,477 --> 01:19:12,060 Dit gaan basies 'n knoppie. 1748 01:19:12,060 --> 01:19:13,040 Jy kliek. 1749 01:19:13,040 --> 01:19:14,040 Jy wat wakker. 1750 01:19:14,040 --> 01:19:14,850 X uit. 1751 01:19:14,850 --> 01:19:15,754 Dit is dit. 1752 01:19:15,754 --> 01:19:16,254 Ja? 1753 01:19:16,254 --> 01:19:21,980 >> GEHOOR: So as jy die script [Onhoorbaar], script tag in jou HTML? 1754 01:19:21,980 --> 01:19:24,300 >> Davin: Jy kan die script sit tag reguit in die kop 1755 01:19:24,300 --> 01:19:30,667 Omdat jy dit onload. 1756 01:19:30,667 --> 01:19:32,000 Dit is ook dat jy 'n klik. 1757 01:19:32,000 --> 01:19:34,166 So dit gaan om te wag totdat jy kliek vir iets. 1758 01:19:34,166 --> 01:19:37,470 Maar onload is net om veilig te wees, te maak seker te maak alles baie in jou HTML 1759 01:19:37,470 --> 01:19:38,170 vooraf. 1760 01:19:38,170 --> 01:19:39,247 Ja? 1761 01:19:39,247 --> 01:19:40,330 Jy wil iets om te sê? 1762 01:19:40,330 --> 01:19:41,080 >> GABE: [onhoorbaar]. 1763 01:19:41,080 --> 01:19:42,485 Davin: Ja. 1764 01:19:42,485 --> 01:19:45,426 >> GEHOOR: So onload vermy die definisie van die veranderlike soek knoppie 1765 01:19:45,426 --> 01:19:49,930 deur net te sê document.getElementByID soek knoppie dot [onhoorbaar]. 1766 01:19:49,930 --> 01:19:52,320 >> Davin: Beslis, maar dan jou string kry net groot. 1767 01:19:52,320 --> 01:19:55,553 Presies, so dit is net te maak dit vir jou makliker te maak, ja. 1768 01:19:55,553 --> 01:19:56,053 Ja? 1769 01:19:56,053 --> 01:19:57,886 >> GEHOOR: Waar het ons skep window.onload? 1770 01:19:57,886 --> 01:19:58,951 Of document.ready? 1771 01:19:58,951 --> 01:20:00,590 >> Davin: Ja, daar is. 1772 01:20:00,590 --> 01:20:02,094 Ja, daar is, het ek nagegaan. 1773 01:20:02,094 --> 01:20:03,710 >> GABE: Nie vir hulle om te gee oor. 1774 01:20:03,710 --> 01:20:06,970 >> Davin: OK, so ek gaan jy in elk geval te vertel. 1775 01:20:06,970 --> 01:20:11,005 So basies, net in die algemeen, so window.onload wag totdat jou DOM, al 1776 01:20:11,005 --> 01:20:12,180 jou HTML, vragte. 1777 01:20:12,180 --> 01:20:13,513 Dit wag totdat jou beelde las. 1778 01:20:13,513 --> 01:20:14,930 Dit wag totdat alles baie. 1779 01:20:14,930 --> 01:20:18,410 document.ready, is dit net wag totdat jou DOM vragte. 1780 01:20:18,410 --> 01:20:22,190 Sodra die HTML is almal daar, een keer jou DOM is daar begin hardloop. 1781 01:20:22,190 --> 01:20:23,400 Dit is die enigste verskil. 1782 01:20:23,400 --> 01:20:24,700 >> GABE: Vinnige gesonde verstand gaan hier. 1783 01:20:24,700 --> 01:20:29,060 So kan dit soort van gesien word soos 'n reël van die kode, reg? 1784 01:20:29,060 --> 01:20:33,600 Want dit is window.onload gelyk aan 'n klomp van die dinge. 1785 01:20:33,600 --> 01:20:39,030 Wanneer JavaScript lees hierdie, waar of valse, die funksie sal uitgevoer word. 1786 01:20:39,030 --> 01:20:40,020 Vals. 1787 01:20:40,020 --> 01:20:40,920 OK? 1788 01:20:40,920 --> 01:20:44,470 Wat gebeur hier, is jy net verby hierdie funksie as 'n anonieme funksies 1789 01:20:44,470 --> 01:20:45,300 te window.onload. 1790 01:20:45,300 --> 01:20:48,480 En dan wanneer dit gaan om werklik uitgevoer raak? 1791 01:20:48,480 --> 01:20:49,600 Wanneer die venster vragte. 1792 01:20:49,600 --> 01:20:50,420 Dit is 'n gebeurtenis. 1793 01:20:50,420 --> 01:20:52,460 So dit is jus t ding wat ons is praat oor vroeër, reg? 1794 01:20:52,460 --> 01:20:54,580 So wanneer die gebeurtenis, die funksie gebeur. 1795 01:20:54,580 --> 01:20:55,746 Dieselfde ding met die onclick. 1796 01:20:55,746 --> 01:20:59,510 1797 01:20:59,510 --> 01:21:03,130 >> Davin: OK, so iemand het weg die document.ready. 1798 01:21:03,130 --> 01:21:04,698 Maar dit sal die presiese same-- wees 1799 01:21:04,698 --> 01:21:06,864 GEHOOR: Die dollar teken, dit is 'n document.ready. 1800 01:21:06,864 --> 01:21:07,710 Dit is 'n kortpad. 1801 01:21:07,710 --> 01:21:08,501 >> Davin: O, dit is? 1802 01:21:08,501 --> 01:21:10,880 1803 01:21:10,880 --> 01:21:15,500 OK, so hierdie manier document.ready, kortpad. 1804 01:21:15,500 --> 01:21:19,660 Maar dit is dieselfde as window.onload behalwe vir daardie klein verskil 1805 01:21:19,660 --> 01:21:20,680 Ek jou vertel het. 1806 01:21:20,680 --> 01:21:21,870 En dit is jQuery. 1807 01:21:21,870 --> 01:21:25,190 So, dit is presies dieselfde thing-- dit is JavaScript. 1808 01:21:25,190 --> 01:21:29,500 Dit is just-- sommige mense dink dit as 'n meer ligte gewig, slanke weergawe 1809 01:21:29,500 --> 01:21:32,370 wat baie van die funksies dat jy waarskynlik sal gebruik word. 1810 01:21:32,370 --> 01:21:34,500 So dit beteken presies dieselfde ding. 1811 01:21:34,500 --> 01:21:37,110 >> So dinge soort uitwys. 1812 01:21:37,110 --> 01:21:40,364 So in die ander voorbeeld, ons het document.getElementByID, 1813 01:21:40,364 --> 01:21:42,280 so ons het hierdie lang string wat gaan kry 1814 01:21:42,280 --> 01:21:44,290 die element wat ookal ID wat dit het. 1815 01:21:44,290 --> 01:21:46,470 Dit is vervang deur hierdie oproep reg hier. 1816 01:21:46,470 --> 01:21:50,860 So jy sien die dollar teken, dan sien jy quote, hashtag. 1817 01:21:50,860 --> 01:21:52,370 Hashtag is altyd 'n keurder. 1818 01:21:52,370 --> 01:21:54,730 Dit sê, OK, dit het te doen met 'n ID. 1819 01:21:54,730 --> 01:21:56,120 Wat is die selector vir 'n klas? 1820 01:21:56,120 --> 01:21:57,190 >> GEHOOR: Dot. 1821 01:21:57,190 --> 01:21:57,960 >> Davin: Dot, reg. 1822 01:21:57,960 --> 01:22:01,950 As jy net gaan kies 'n tag, wat is dit? 1823 01:22:01,950 --> 01:22:03,310 Dis net die tag, presies. 1824 01:22:03,310 --> 01:22:05,560 En jy kan gebruik wat hier, as well. 1825 01:22:05,560 --> 01:22:08,560 >> GABE: En deur tag, bedoel ons soos div, byvoorbeeld, of die hoof. 1826 01:22:08,560 --> 01:22:11,500 >> Davin: of liggaam of p of iets soos dit, ja. 1827 01:22:11,500 --> 01:22:14,390 So hier, OK, in plaas daarvan om te sê document.getElementByID, 1828 01:22:14,390 --> 01:22:16,500 dit is net die presiese dieselfde ding. 1829 01:22:16,500 --> 01:22:17,990 Net in jQuery, dit is korter. 1830 01:22:17,990 --> 01:22:19,860 So dit is makliker. 1831 01:22:19,860 --> 01:22:23,420 So dan, nie meer onclick, kliek net. 1832 01:22:23,420 --> 01:22:26,320 jQuery funksie, bel hierdie funksie. 1833 01:22:26,320 --> 01:22:27,580 Alert is presies dieselfde. 1834 01:22:27,580 --> 01:22:29,452 So dit is 'n bietjie kleiner, of bietjie 1835 01:22:29,452 --> 01:22:32,410 korter, 'n bietjie bit-- mense dink dit is 'n bietjie makliker om te skryf uit, 1836 01:22:32,410 --> 01:22:34,600 'n bietjie makliker om te verstaan. 1837 01:22:34,600 --> 01:22:35,640 Maar dit is jQuery. 1838 01:22:35,640 --> 01:22:37,887 Baie mense kry 'n bietjie bietjie verward en bekommerd 1839 01:22:37,887 --> 01:22:40,220 en hulle dink, OK, jQuery is anders as JavaScript. 1840 01:22:40,220 --> 01:22:42,136 Ek het hierdie te onthou twee verskillende dinge. 1841 01:22:42,136 --> 01:22:42,740 Dit is nie. 1842 01:22:42,740 --> 01:22:45,315 Ek bedoel, dit is verskillende sintaksis. 1843 01:22:45,315 --> 01:22:46,970 Maar jQuery is JavaScript. 1844 01:22:46,970 --> 01:22:50,050 Dit is net 'n skynbaar beter weergawe wat 1845 01:22:50,050 --> 01:22:51,967 dalk makliker om te wees verstaan ​​dat mense gebruik. 1846 01:22:51,967 --> 01:22:53,716 GABE: Ja, om te wees eerlike, wat dollar teken 1847 01:22:53,716 --> 01:22:57,240 wat jy sien in jQuery, dit is net die naam van 'n funksie wat jQuery definieer. 1848 01:22:57,240 --> 01:22:58,614 Dit hoef nie iets spesiaal. 1849 01:22:58,614 --> 01:23:03,140 Is Dis net die naam van 'n funksie, net soos jy kan dollar teken definieer. 1850 01:23:03,140 --> 01:23:05,670 >> Davin: Ja, so gepraat oor hierdie. 1851 01:23:05,670 --> 01:23:06,680 'N paar nuttige dinge. 1852 01:23:06,680 --> 01:23:10,414 Ek is terug by die ou vasvrae soek. 1853 01:23:10,414 --> 01:23:13,080 In die afgelope paar vasvrae, hulle het het dinge soos hierdie te gebruik. 1854 01:23:13,080 --> 01:23:15,230 So document.ready, so maak seker alles is 1855 01:23:15,230 --> 01:23:17,410 gelaai, voordat jy begin om dinge te doen. 1856 01:23:17,410 --> 01:23:20,120 Kies 'n ID, of kies 'n klas, sou dit net 1857 01:23:20,120 --> 01:23:24,020 wees quote dot paar klas, end quote. 1858 01:23:24,020 --> 01:23:26,580 Stuur, so as jy is stuur 'n vorm en oproep 1859 01:23:26,580 --> 01:23:28,830 hierdie funksie na afloop van die vorm instuur. 1860 01:23:28,830 --> 01:23:34,210 Waarde, so kom ons sê ek het 'n vorm voorlegging, soos 'n gebruiker naam, e-pos, 1861 01:23:34,210 --> 01:23:34,950 wat ook al. 1862 01:23:34,950 --> 01:23:36,010 Ek het 'n teks boks. 1863 01:23:36,010 --> 01:23:37,670 So ek tik in die teks boks. 1864 01:23:37,670 --> 01:23:42,170 Wel, as jy wil hê dat die waarde te kry uit daardie teks boks, jy gebruik dot val. 1865 01:23:42,170 --> 01:23:44,050 En dan, hier, dot HTML is dieselfde 1866 01:23:44,050 --> 01:23:47,710 is soos dokument dot getElementByID dot innerHTML. 1867 01:23:47,710 --> 01:23:50,890 So wat gaan om terug te keer jy die HTML van daardie ID. 1868 01:23:50,890 --> 01:23:55,080 Hier, jy moet net gebruik om 'n ID of wat ook al dot HTML. 1869 01:23:55,080 --> 01:23:56,930 Dit sal die HTML van daardie element kry. 1870 01:23:56,930 --> 01:24:00,130 As jy wil verander dan dat HTML, kan jy dit slaag iets. 1871 01:24:00,130 --> 01:24:05,600 So jy wil wees soos dot HTML, en dan binne, aanhalings, nuwe HTML of iets. 1872 01:24:05,600 --> 01:24:07,490 >> GABE: OK, so AJAX. 1873 01:24:07,490 --> 01:24:10,347 Ek het regtig soos om te verstaan AJAX baie goed. 1874 01:24:10,347 --> 01:24:12,430 So ek wil julle ouens te verstaan ​​AJAX baie goed. 1875 01:24:12,430 --> 01:24:14,221 Want as jy dit doen, jy pretty much gaan 1876 01:24:14,221 --> 01:24:16,810 om alles te verstaan ​​wat het te doen met HTTP, PHP, 1877 01:24:16,810 --> 01:24:21,080 JavaScript omdat dit alles kom saam in AJAX. 1878 01:24:21,080 --> 01:24:25,130 AJAX is nie 'n taal. 1879 01:24:25,130 --> 01:24:27,000 AJAX is 'n tegniek. 1880 01:24:27,000 --> 01:24:31,690 En dit gebruik baie van die verskillende instrumente. 1881 01:24:31,690 --> 01:24:35,090 AJAX staan ​​vir asynchrone JavaScript XML. 1882 01:24:35,090 --> 01:24:36,730 So het die metode, die taal, die data. 1883 01:24:36,730 --> 01:24:40,610 >> Dus is die belangrikste taal wat ons gebruik in AJAX alles te aktiveer 1884 01:24:40,610 --> 01:24:42,830 en om alles te hanteer later is JavaScript. 1885 01:24:42,830 --> 01:24:45,160 Dit is waarom dit betrekking baie naby aan JavaScript. 1886 01:24:45,160 --> 01:24:49,810 En dan asynchrone is omdat ons dit nie doen nie 1887 01:24:49,810 --> 01:24:51,980 alles op een slag wanneer ons nie die bladsy laai. 1888 01:24:51,980 --> 01:24:57,190 Dit is die ding wat ons kan dinge doen soort in parallel. 1889 01:24:57,190 --> 01:24:59,725 Die idee agter AJAX is wat jy wil 1890 01:24:59,725 --> 01:25:02,170 dit 'n paar spesifieke inligting te kry. 1891 01:25:02,170 --> 01:25:06,450 Byvoorbeeld, wanneer jy tik nuwe gebruikersnaam wanneer jy 'n gebruiker naam te registreer, 1892 01:25:06,450 --> 01:25:08,520 my gebruiker naam is ABC123. 1893 01:25:08,520 --> 01:25:11,671 En dan, aan die einde van die vorm, moet jy kliek Stuur. 1894 01:25:11,671 --> 01:25:14,420 En dit het om te gaan na die bediener, en dan kyk of in die databasis, 1895 01:25:14,420 --> 01:25:15,594 ABC123 is reeds daar. 1896 01:25:15,594 --> 01:25:18,510 En as dit is reeds daar, dit sê, gebruikersnaam reeds in die databasis. 1897 01:25:18,510 --> 01:25:21,010 En hulle, jy het om te vul uit die hele vorm weer. 1898 01:25:21,010 --> 01:25:23,110 En dit was baie, baie sleg. 1899 01:25:23,110 --> 01:25:25,440 >> En dan sê mense, OK, hoekom kan ons nie net 1900 01:25:25,440 --> 01:25:29,560 doen 'n klein HTTP-versoek om net check om te sien of hierdie gebruiker is in die databasis 1901 01:25:29,560 --> 01:25:32,080 voordat die gebruiker moes dien die hele vorm? 1902 01:25:32,080 --> 01:25:36,350 So byvoorbeeld, wanneer die gebruiker afwerkings tik ABC123, 1903 01:25:36,350 --> 01:25:39,660 laat ons net gaan na die bediener 'n bietjie bietjie en net 'n ware of valse 1904 01:25:39,660 --> 01:25:43,080 van die bediener om te sien of dit is 'n geldige gebruikersnaam of nie. 1905 01:25:43,080 --> 01:25:49,250 OK, so dit is een van die belangrikste gebruik van AJAX deesdae nog steeds. 1906 01:25:49,250 --> 01:25:52,130 >> Davin: So ware vinnig, in 'n Ajax oproep in jQuery, 1907 01:25:52,130 --> 01:25:54,770 jy kan te kenne gee dat jy dit wil sinchrone wees. 1908 01:25:54,770 --> 01:25:56,330 Jy moet dit nie doen nie. 1909 01:25:56,330 --> 01:25:57,640 Maar jy kan dit doen. 1910 01:25:57,640 --> 01:25:59,277 En as jy dit gedoen het, wat sou gebeur? 1911 01:25:59,277 --> 01:26:01,610 Wel, byvoorbeeld, wanneer jy om nuus of wat ook al, 1912 01:26:01,610 --> 01:26:05,464 jou leser is net gaan om te wag tot op daardie hele oproep is voltooi 1913 01:26:05,464 --> 01:26:08,130 in plaas van om jou te laat ander doen dinge reg nadat jy op dit. 1914 01:26:08,130 --> 01:26:14,560 1915 01:26:14,560 --> 01:26:17,115 >> GABE: Dit is nie meer verbygaan. 1916 01:26:17,115 --> 01:26:19,681 Oh my god. 1917 01:26:19,681 --> 01:26:20,180 Jammer! 1918 01:26:20,180 --> 01:26:22,810 1919 01:26:22,810 --> 01:26:23,601 Yup. 1920 01:26:23,601 --> 01:26:25,350 "In die verlede, die kliënt nodig het om te versoek 1921 01:26:25,350 --> 01:26:26,840 die hele inhoud van 'n webwerf. " 1922 01:26:26,840 --> 01:26:28,210 Dit is wat ek gesê het. 1923 01:26:28,210 --> 01:26:30,070 Dit stel ons in staat om te stuur addisionele AOO- of POST 1924 01:26:30,070 --> 01:26:32,140 versoeke sonder ons leser te laai. 1925 01:26:32,140 --> 01:26:34,806 So aan die einde van die dag, ons is eintlik maak 'n HTTP-versoek 1926 01:26:34,806 --> 01:26:35,740 hier in met JavaScript. 1927 01:26:35,740 --> 01:26:39,700 Want voor, ons het net JavaScript gebruik die HTML wat reeds gekom het om te verander. 1928 01:26:39,700 --> 01:26:43,110 En nou, ons kan dit gebruik om te koppel met die web bedieners so goed. 1929 01:26:43,110 --> 01:26:46,140 Die manier waarop dit gebeur is ons die kliënt. 1930 01:26:46,140 --> 01:26:47,340 Davin is 'n kliënt. 1931 01:26:47,340 --> 01:26:50,797 En hy het al die JavaScript hardloop omdat HTML is stom. 1932 01:26:50,797 --> 01:26:51,630 JavaScript is slim. 1933 01:26:51,630 --> 01:26:54,690 So Davin Davin het sy smart deel en sy stom deel. 1934 01:26:54,690 --> 01:26:57,590 Hy gaan sy smart deel nou gebruik. 1935 01:26:57,590 --> 01:27:00,860 Hy gaan JavaScript om te gebruik te versoek, byvoorbeeld, 1936 01:27:00,860 --> 01:27:04,340 of ABC123 is in die databasis of nie. 1937 01:27:04,340 --> 01:27:08,450 >> So Davin, asseblief, jy net stuur vir my 'n HTTP-versoek. 1938 01:27:08,450 --> 01:27:09,197 Dankie. 1939 01:27:09,197 --> 01:27:10,530 So het hy net stuur 'n HTTP-versoek. 1940 01:27:10,530 --> 01:27:11,270 Jy sien dit? 1941 01:27:11,270 --> 01:27:14,700 En dit is net die dieselfde manier dat enige HTTP-versoek is gestuur. 1942 01:27:14,700 --> 01:27:16,830 Die leser, Google Chrome of iets, is 1943 01:27:16,830 --> 01:27:19,570 gaan om te sien dat Davin se probeer om 'n HTTP-versoek te stuur, 1944 01:27:19,570 --> 01:27:20,930 gaan help HM 'n bietjie. 1945 01:27:20,930 --> 01:27:23,950 En wat gaan om te gaan al die pad na die bediener. 1946 01:27:23,950 --> 01:27:27,370 Nou, is die bediener gaan hê PHP hier, of enige ander taal. 1947 01:27:27,370 --> 01:27:29,990 Net soos in 'n normale HTTP-versoek. 1948 01:27:29,990 --> 01:27:31,950 Dit is nogal baie 'n normale HTTP-versoek. 1949 01:27:31,950 --> 01:27:33,658 >> En dan, die bediener gaan om te sê, OK, 1950 01:27:33,658 --> 01:27:37,270 Davin wil my om te kyk of hierdie ABC123 is in die databasis. 1951 01:27:37,270 --> 01:27:38,310 Gaan praat met die model. 1952 01:27:38,310 --> 01:27:41,310 Die model, sê dit is nie. ABC123 is 'n goeie gebruikers naam. 1953 01:27:41,310 --> 01:27:47,940 En dan, is die web bediener gaan gebruik PHP 'n vorm van lêer te lewer. 1954 01:27:47,940 --> 01:27:52,280 Dit kan letterlik net 'n lêer wat bevat "ja" in dit, of "nee, 1955 01:27:52,280 --> 01:27:53,315 of iets soos dit. 1956 01:27:53,315 --> 01:27:54,190 Dit kan enige lêer wees. 1957 01:27:54,190 --> 01:27:57,080 >> Dit kan wees soos ek gaan stuur Davin 'n foto van 'n eend 1958 01:27:57,080 --> 01:28:01,200 as dit in die databasis en Stuur 'n foto van 'n hamster 1959 01:28:01,200 --> 01:28:02,420 As dit is nie in die databasis. 1960 01:28:02,420 --> 01:28:04,294 Dit sou soort wees stom, maar dit sal werk. 1961 01:28:04,294 --> 01:28:07,030 OK, so ek stuur 'n eend te Davin. 1962 01:28:07,030 --> 01:28:08,150 Davin 'n eend. 1963 01:28:08,150 --> 01:28:13,330 En nou, is wat gaan die eend te hanteer? 1964 01:28:13,330 --> 01:28:16,390 Davin se smart deel weer, so JavaScript, reg? 1965 01:28:16,390 --> 01:28:18,620 JavaScript gestuur versoek, en JavaScript 1966 01:28:18,620 --> 01:28:22,300 gaan die versoek te ontvang en interpreteer dit in een of ander vorm. 1967 01:28:22,300 --> 01:28:26,630 >> En in hierdie sin, gaan dit sê, OK, as eend dan is ek goed. 1968 01:28:26,630 --> 01:28:30,770 As hamster, dan gaan ek om te sê, nee, gebruiker naam reeds 1969 01:28:30,770 --> 01:28:31,970 bestaan ​​in die databasis. 1970 01:28:31,970 --> 01:28:33,845 Maar gewoonlik, jy is nie gaan 'n eend te stuur. 1971 01:28:33,845 --> 01:28:36,740 Jy gaan te stuur iets effens slimmer. 1972 01:28:36,740 --> 01:28:40,320 En wat ons gebruik, is XML. 1973 01:28:40,320 --> 01:28:42,690 En meer onlangs, ons gebruik into. 1974 01:28:42,690 --> 01:28:45,629 Into is net JavaScript Voorwerp notasie, wat 1975 01:28:45,629 --> 01:28:47,670 is basies jy 'n hele JavaScript voorwerp. 1976 01:28:47,670 --> 01:28:50,820 En jy sit dit in 'n lêer, net soos dat CS50 voorwerp wat julle ouens gesien. 1977 01:28:50,820 --> 01:28:53,090 Jy het dit in 'n lêer, en jy stuur dit aan Davin. 1978 01:28:53,090 --> 01:28:55,850 >> So in hierdie geval, sou ek 'n JavaScript voorwerp 1979 01:28:55,850 --> 01:28:59,570 en net sê, gebruiker bestaan ​​nie, ja. 1980 01:28:59,570 --> 01:29:01,630 Of gebruiker bestaan ​​nie, nee. 1981 01:29:01,630 --> 01:29:02,810 En stuur dit terug na hom. 1982 01:29:02,810 --> 01:29:03,830 En hoekom into? 1983 01:29:03,830 --> 01:29:07,330 Omdat die persoon wie se ontvangs van hierdie is 1984 01:29:07,330 --> 01:29:10,030 gaan JavaScript om te gebruik die reaksie te hanteer. 1985 01:29:10,030 --> 01:29:14,970 En JavaScript werk so goed, want dit genoem JavaScript Object notasie. 1986 01:29:14,970 --> 01:29:15,470 Reg? 1987 01:29:15,470 --> 01:29:19,660 So kan hy net noem 'n funksie en kry hierdie mooi voorwerp van die reaksie. 1988 01:29:19,660 --> 01:29:22,890 En dan, hy gaan om te weet of dat die gebruiker is in die databasis of nie. 1989 01:29:22,890 --> 01:29:25,230 >> So jy sien, dit alles kom saam in die web-bediener, 1990 01:29:25,230 --> 01:29:28,450 en dan is daar 'n HTTP-versoek te en een HTTP reaksie en alles. 1991 01:29:28,450 --> 01:29:30,600 So maak seker dat jy ouens hierdie AJAX oproep verstaan 1992 01:29:30,600 --> 01:29:37,260 want dit help jou verstaan ​​almal van die konsepte wat ons praat. 1993 01:29:37,260 --> 01:29:40,260 >> So hier is 'n voorbeeld van AJAX met jQuery. 1994 01:29:40,260 --> 01:29:42,130 En hier, ons doen met get into. 1995 01:29:42,130 --> 01:29:45,660 So ons is nie probeer om 'n te kry beeld van 'n kat hier, of 'n eend. 1996 01:29:45,660 --> 01:29:48,110 Ons probeer om 'n into lêer te kry. 1997 01:29:48,110 --> 01:29:51,184 En dan is ons wag totdat dit gedoen is, dot gedoen. 1998 01:29:51,184 --> 01:29:52,850 Dit beteken ek wag vir die reaksie. 1999 01:29:52,850 --> 01:29:54,180 Dit mag dalk 'n rukkie neem. 2000 01:29:54,180 --> 01:29:56,360 Dan, sien jy 'n bietjie laai. 2001 01:29:56,360 --> 01:29:59,340 As jy wil om dit te doen in jou webwerf. 2002 01:29:59,340 --> 01:30:01,440 So dot gedoen, en dan wat gebeur wanneer dit gedoen? 2003 01:30:01,440 --> 01:30:04,040 Jy slaag in 'n anonieme funksie, net soos ons gesien het voordat. 2004 01:30:04,040 --> 01:30:07,800 Omdat gedoen is 'n gebeurtenis, net soos klik van 'n muis of wat ook al, 2005 01:30:07,800 --> 01:30:08,710 vir jQuery. 2006 01:30:08,710 --> 01:30:13,710 So jy in hierdie funksie met slaag data, teks, status, en jqXHR. 2007 01:30:13,710 --> 01:30:15,790 En basies, dit is net 'n paar veranderlikes 2008 01:30:15,790 --> 01:30:22,160 dat jy later op kan gebruik om 'n die status van die HTTP-versoek, 2009 01:30:22,160 --> 01:30:24,470 die data wat dit gaan terug te stuur na jou. 2010 01:30:24,470 --> 01:30:28,740 So dan kan jy later op interpreteer en doen iets sinvol met dit. 2011 01:30:28,740 --> 01:30:30,240 En as dit nie werk nie, toe is dit dalk misluk? 2012 01:30:30,240 --> 01:30:33,780 Wel, as die HTTP-versoek gee jy 'n 500 of iets soos dit. 2013 01:30:33,780 --> 01:30:37,420 Dan gaan dit om jou te vertel die status, watter soort van mislukking wat was, 2014 01:30:37,420 --> 01:30:38,420 en allerhande dinge. 2015 01:30:38,420 --> 01:30:40,630 Jy het om seker te maak beide gevalle te hanteer, 2016 01:30:40,630 --> 01:30:42,770 anders sal die program gaan mal. 2017 01:30:42,770 --> 01:30:45,820 >> Davin: So ja, dit is presies wat jy sien op jou laaste p-stel. 2018 01:30:45,820 --> 01:30:49,720 Die werklike AJAX oproep is in die get into. 2019 01:30:49,720 --> 01:30:50,587 Dit is die oproep. 2020 01:30:50,587 --> 01:30:52,920 En dan, dot gedoen is soos dit kontroleer of dit suksesvol. 2021 01:30:52,920 --> 01:30:55,620 Indien dit suksesvol is, wat jy wil iets met die data om te doen. 2022 01:30:55,620 --> 01:30:59,290 Jy terug van wat Into versoek data. 2023 01:30:59,290 --> 01:31:00,600 Dit is wat jy kry terug. 2024 01:31:00,600 --> 01:31:04,470 So as jy onthou van jou p-stel, baie van julle was soos data bracket i 2025 01:31:04,470 --> 01:31:06,302 of wat ook al, dot skakel of titel. 2026 01:31:06,302 --> 01:31:08,260 Wat ook al kom terug uit daardie into, ongeag 2027 01:31:08,260 --> 01:31:11,020 die velde is in daardie into voorwerp, dit is wat jy terug kry. 2028 01:31:11,020 --> 01:31:12,394 Data is wat jy terug kry. 2029 01:31:12,394 --> 01:31:15,510 Teks status, net iets wat kan jy weet wat gebeur het. 2030 01:31:15,510 --> 01:31:20,570 En dan, die jqXHR, dit is net die jQuery XML HTTP-versoek. 2031 01:31:20,570 --> 01:31:21,990 Dit is net soos 'n voorwerp. 2032 01:31:21,990 --> 01:31:23,932 En dan misluk, net soos Gabe gesê. 2033 01:31:23,932 --> 01:31:27,140 GABE: In ons klein voorbeeld van ABC123 net om te kyk of dit is in die databasis 2034 01:31:27,140 --> 01:31:32,260 of nie, die data sal iets wat jy nie sou doen, indien data dot gebruiker naam bestaan, 2035 01:31:32,260 --> 01:31:37,720 en dit is wat jou PHP gegenereer vir jy, as data dot gebruiker naam bestaan, dan 2036 01:31:37,720 --> 01:31:40,880 Ek gaan waarsku, gebruikers naam bestaan ​​reeds. 2037 01:31:40,880 --> 01:31:44,300 Anders, gaan ek net die te laat gebruiker voort te vul die vorm. 2038 01:31:44,300 --> 01:31:47,860 2039 01:31:47,860 --> 01:31:50,820 OK, sekuriteit, cool. 2040 01:31:50,820 --> 01:31:52,060 >> Davin: Wil jy my? 2041 01:31:52,060 --> 01:31:54,500 >> GABE: Ek hou van hierdie een. 2042 01:31:54,500 --> 01:31:57,680 So iets wat lyk bekend. 2043 01:31:57,680 --> 01:31:59,750 Ons is amper klaar. 2044 01:31:59,750 --> 01:32:02,670 So dit is net die voorbeeld julle ouens het in die klas. 2045 01:32:02,670 --> 01:32:04,860 Jy is met behulp van argv1 hier. 2046 01:32:04,860 --> 01:32:06,460 Dit is soos 'n command line argument. 2047 01:32:06,460 --> 01:32:09,270 En ons is MEM kopiëring dat in 'n buffer grootte 12. 2048 01:32:09,270 --> 01:32:12,560 Wat is die probleem hier? 2049 01:32:12,560 --> 01:32:13,660 Buffer oorloop! 2050 01:32:13,660 --> 01:32:15,400 Want ons het 'n buffer grootte 12. 2051 01:32:15,400 --> 01:32:18,400 argv1 dalk 'n grootte van twee biljoen. 2052 01:32:18,400 --> 01:32:19,960 Ons doen nie enige grens nagaan. 2053 01:32:19,960 --> 01:32:24,970 Sodat ons kan 'n baie van die geheue kopieer. 2054 01:32:24,970 --> 01:32:28,630 En ons sal veral wees sleg oor hierdie. 2055 01:32:28,630 --> 01:32:32,600 Wat kan ons doen dit is baie, baie beteken in hierdie geval? 2056 01:32:32,600 --> 01:32:33,278 Ja? 2057 01:32:33,278 --> 01:32:36,528 GEHOOR: Deel van die twee biljoen dinge bevat uitvoerbare kode wat terug 2058 01:32:36,528 --> 01:32:38,127 [Onhoorbaar]. 2059 01:32:38,127 --> 01:32:38,710 GABE: Presies. 2060 01:32:38,710 --> 01:32:41,110 So wat is die aard van die ding wat mense gebruik 2061 01:32:41,110 --> 01:32:43,344 'n iPhone jailbreak, byvoorbeeld. 2062 01:32:43,344 --> 01:32:44,260 So dat die soort van ding. 2063 01:32:44,260 --> 01:32:48,610 Omdat jy kan net maak die toestel enige kode wat jy wil uit te voer. 2064 01:32:48,610 --> 01:32:50,247 Die fix, so die fix is ​​maklik. 2065 01:32:50,247 --> 01:32:51,330 Net kyk vir die grense. 2066 01:32:51,330 --> 01:32:53,455 Jy gaan vir nul omdat ons altyd kyk vir null 2067 01:32:53,455 --> 01:32:54,940 wanneer ons te doen het met snare. 2068 01:32:54,940 --> 01:32:57,840 En dan, jy neem die string lengte voor. 2069 01:32:57,840 --> 01:33:00,150 En as die string lengte is 'n geldige string 2070 01:33:00,150 --> 01:33:03,700 lengte, wat binne 0 en 12, dan is ons die goeie. 2071 01:33:03,700 --> 01:33:07,144 >> Davin: As jy nie dit wil bevestig nie vir null, ware vinnige, wat sal gebeur? 2072 01:33:07,144 --> 01:33:07,810 Dit sal seg skuld. 2073 01:33:07,810 --> 01:33:10,850 Hoekom sal dit seg skuld? 2074 01:33:10,850 --> 01:33:12,510 Omdat jy 'n beroep strlen op nul. 2075 01:33:12,510 --> 01:33:13,010 GABE: Ja. 2076 01:33:13,010 --> 01:33:16,490 2077 01:33:16,490 --> 01:33:19,630 Waar of vals, met behulp van 'n wagwoord is 'n goeie idee. 2078 01:33:19,630 --> 01:33:20,430 >> GEHOOR: Vals. 2079 01:33:20,430 --> 01:33:21,150 >> GABE: Vals. 2080 01:33:21,150 --> 01:33:23,870 Gebruik baie wagwoorde, en 'n groot, lang mense. 2081 01:33:23,870 --> 01:33:26,050 Hangslot ikone verseker sekuriteit. 2082 01:33:26,050 --> 01:33:27,080 >> GEHOOR: Vals. 2083 01:33:27,080 --> 01:33:27,749 >> GABE: Vals. 2084 01:33:27,749 --> 01:33:28,790 Dit beteken niks. 2085 01:33:28,790 --> 01:33:30,480 Dit is net 'n ikoon. 2086 01:33:30,480 --> 01:33:32,824 SSL beskerm teen 'n man in die middel aanval. 2087 01:33:32,824 --> 01:33:33,490 GEHOOR: Vals. 2088 01:33:33,490 --> 01:33:34,110 GABE: Vals. 2089 01:33:34,110 --> 01:33:35,355 OK, so almal is vals. 2090 01:33:35,355 --> 01:33:38,324 2091 01:33:38,324 --> 01:33:39,490 Nice. 2092 01:33:39,490 --> 01:33:40,220 [Onhoorbaar] 2093 01:33:40,220 --> 01:33:42,500 Wil praat oor dit? 2094 01:33:42,500 --> 01:33:43,259 Jou beurt. 2095 01:33:43,259 --> 01:33:45,050 Davin: soorte aanvalle, man in die middel. 2096 01:33:45,050 --> 01:33:47,134 Wat is 'n man in die middel aanval? 2097 01:33:47,134 --> 01:33:48,050 GEHOOR: [onhoorbaar]. 2098 01:33:48,050 --> 01:33:51,437 2099 01:33:51,437 --> 01:33:54,020 Davin: As jy stuur 'n HTTP versoek het, kon hulle dit doen nie, reg? 2100 01:33:54,020 --> 01:33:57,890 Maar as jy die stuur HTTPS, hulle sal waarskynlik nie in staat wees om dit te doen. 2101 01:33:57,890 --> 01:33:59,952 Daar is baie van die punte saam jou verbinding. 2102 01:33:59,952 --> 01:34:00,660 Jy het routers. 2103 01:34:00,660 --> 01:34:01,746 Jy het DNS-bedieners. 2104 01:34:01,746 --> 01:34:04,120 As iemand kan om fisies sien wat jy stuur, 2105 01:34:04,120 --> 01:34:06,140 so iemand is in staat om eintlik kry tussen jou, 2106 01:34:06,140 --> 01:34:08,840 die kliënt, en die bediener, en is staat om te sien wat jy stuur, 2107 01:34:08,840 --> 01:34:10,298 dit is 'n man in die middel aanval. 2108 01:34:10,298 --> 01:34:14,287 So om te sien wat jy probeer om te kry uit die bediener, of in staat is om erger te see--, 2109 01:34:14,287 --> 01:34:16,620 jy dalk in staat wees om te sien koekies of iets soos dit. 2110 01:34:16,620 --> 01:34:19,290 >> So byvoorbeeld, as wat jy nie gebruik SSL, het hy 2111 01:34:19,290 --> 01:34:21,900 dalk in staat wees om te sien jou sessie ID koekies. 2112 01:34:21,900 --> 01:34:25,460 En dit is sessie kaping genoem want hy sien jou ID koekies, 2113 01:34:25,460 --> 01:34:28,317 en dan is hy in staat om te gaan na wat webwerf en voorgee om te wees. 2114 01:34:28,317 --> 01:34:31,150 Want net soos in PHP, onthou wanneer ons aangemeld, wat doen ons? 2115 01:34:31,150 --> 01:34:33,340 Ons stel sessie ID gelyk aan ID. 2116 01:34:33,340 --> 01:34:34,810 Sodat u identifiseer. 2117 01:34:34,810 --> 01:34:38,300 Dit is hoekom jy kan jou portefeulje sien en nie almal anders se portefeulje. 2118 01:34:38,300 --> 01:34:42,320 >> Wel, as ek kan dit koekie te kry, dan kan ek inteken op daardie bladsy. 2119 01:34:42,320 --> 01:34:45,380 En dan, kan ek net sien jou goed en begin koop en verkoop van dinge. 2120 01:34:45,380 --> 01:34:46,800 So dit is sessie kaping. 2121 01:34:46,800 --> 01:34:50,810 Maar jy moet nie in staat om aan- sodat jy wees kan die man gebruik in die middel aanval 2122 01:34:50,810 --> 01:34:52,290 selfs as hulle gebruik SSL. 2123 01:34:52,290 --> 01:34:53,520 Maar jy moet nie in staat wees om te. 2124 01:34:53,520 --> 01:34:56,580 As hulle gebruik SSL, jy kan nie die sessie kaping. 2125 01:34:56,580 --> 01:34:58,927 Hoekom? 2126 01:34:58,927 --> 01:35:01,135 Want dit is al geïnkripteer, reg? As dit is geïnkripteer, 2127 01:35:01,135 --> 01:35:03,509 en ek is nog steeds 'n man in die middel, ek kry nog steeds jou data. 2128 01:35:03,509 --> 01:35:04,279 Dit is fyn. 2129 01:35:04,279 --> 01:35:05,070 Maar dit is geïnkripteer. 2130 01:35:05,070 --> 01:35:07,750 So kan ek nie regtig gebruik dit. 2131 01:35:07,750 --> 01:35:09,840 So dit is twee. 2132 01:35:09,840 --> 01:35:11,544 >> Real vinnige, kruis webwerf versoek vervalsing. 2133 01:35:11,544 --> 01:35:13,960 Dit is net as daar is 'n skakel en dat skakel iets 2134 01:35:13,960 --> 01:35:14,890 dat jy nie dink dit behoort te doen. 2135 01:35:14,890 --> 01:35:18,150 So byvoorbeeld, as die skakel was gaan aandele te koop of verkoop aandele, 2136 01:35:18,150 --> 01:35:19,360 en jy het nie geweet dat. 2137 01:35:19,360 --> 01:35:22,040 Jy het op die skakel, het 'n versoek, gekoop 2138 01:35:22,040 --> 01:35:24,240 of verkoop iets wat jy het nie bedoel om te doen. 2139 01:35:24,240 --> 01:35:25,120 Dit is dit. 2140 01:35:25,120 --> 01:35:30,720 >> Cross site scripting, so hier, jy verby in via veranderlike Q, 2141 01:35:30,720 --> 01:35:33,510 in plaas van verby in 'n soort van waarde, miskien q is soos 'n naam. 2142 01:35:33,510 --> 01:35:36,560 So in plaas van verby q gelykes Davin of iets soos dit, 2143 01:35:36,560 --> 01:35:38,740 as jy nie HTML gebruik nie spesiale karakters, as jy 2144 01:35:38,740 --> 01:35:43,100 nie ontsnap dit seker dit is maak OK, dan kan ek slaag in plaas daarvan, 2145 01:35:43,100 --> 01:35:46,910 Kom ons sê hier ek sê druk of iets soos dit, 2146 01:35:46,910 --> 01:35:51,070 dan kan ek slaag in hier om 'n script oproep. 2147 01:35:51,070 --> 01:35:53,140 >> So dan, in plaas van net om 'n veranderlike, 2148 01:35:53,140 --> 01:35:54,960 Ek sou dan voer hierdie script oproep. 2149 01:35:54,960 --> 01:35:57,065 So in daardie script noem, wat doen dit? 2150 01:35:57,065 --> 01:36:00,190 Dokument dot plek, wat gaan verander die ligging van die dokument. 2151 01:36:00,190 --> 01:36:02,290 So ek gaan om te lei iewers anders. 2152 01:36:02,290 --> 01:36:08,170 Dit is bekend slegte man in hierdie voorbeeld, baie goed. 2153 01:36:08,170 --> 01:36:10,536 Kon nie dink van die woord. 2154 01:36:10,536 --> 01:36:12,410 En dan, wat is selfs erger is dat ek gaan 2155 01:36:12,410 --> 01:36:16,832 dan stel koekie, wat is 'n paar veranderlike Ek het in hierdie webwerf. 2156 01:36:16,832 --> 01:36:19,040 Ek gaan dit gelyk te stel die dokument dot koekie. 2157 01:36:19,040 --> 01:36:20,660 Daarom, gaan ek jou koekie te steel. 2158 01:36:20,660 --> 01:36:22,951 En ek gaan om te lei inligting na 'n webwerf 2159 01:36:22,951 --> 01:36:25,120 dat jy nie moet toegang word. 2160 01:36:25,120 --> 01:36:29,250 En dit alles gebeur omdat jy nie ontsnap wat jy gesien het. 2161 01:36:29,250 --> 01:36:29,910 Ja? 2162 01:36:29,910 --> 01:36:32,160 >> GEHOOR: So net om te duidelik maak, is dit 2163 01:36:32,160 --> 01:36:37,550 vulnerable.com dat is kwesbaar vir hierdie. 2164 01:36:37,550 --> 01:36:39,300 Sodat skakel kan verskyn op enige gegewe bladsy. 2165 01:36:39,300 --> 01:36:42,200 Iemand druk op dit, gaan na vulnerable.com. 2166 01:36:42,200 --> 01:36:43,700 Jy het 'n koekie te vulnerable.com. 2167 01:36:43,700 --> 01:36:46,670 Kom ons sê Facebook is kwesbaar, so facebook.com. 2168 01:36:46,670 --> 01:36:48,310 Jy het Facebook koekie. 2169 01:36:48,310 --> 01:36:50,925 Wat dit doen, is jy gaan facebook.com, 2170 01:36:50,925 --> 01:36:53,990 dit onmiddellik redirecting om jou te badguy.com, 2171 01:36:53,990 --> 01:36:57,182 maar ook jou koekie inligting. 2172 01:36:57,182 --> 01:36:59,310 So dit is 'n vinnige aanstuur, maar jou Facebook koekie 2173 01:36:59,310 --> 01:37:02,572 is ingesluit met die aanstuur, en dit is hoe hulle [onhoorbaar]. 2174 01:37:02,572 --> 01:37:04,280 GABE: Ja, daar is 'n paar baie gemiddelde dinge 2175 01:37:04,280 --> 01:37:06,070 wat mense kan doen as daar is hierdie. 2176 01:37:06,070 --> 01:37:09,190 Byvoorbeeld, as Facebook toegelaat almal jou gebruiker naam te verander, 2177 01:37:09,190 --> 01:37:11,680 en hulle het nie enige doen gesonde verstand tjeks, sodat jy 2178 01:37:11,680 --> 01:37:16,810 kan 'n JavaScript ding voeg dat verander jou beeld na 'n hamster. 2179 01:37:16,810 --> 01:37:22,590 En dat voeg dieselfde JavaScript in almal wat jou page views. 2180 01:37:22,590 --> 01:37:26,400 So almal wat jou page views het dieselfde ding in die gebruiker se naam. 2181 01:37:26,400 --> 01:37:30,104 En omdat dit 'n virus, dit versprei eksponensieel. 2182 01:37:30,104 --> 01:37:32,270 Davin: Ons sal die laaste skip een, en dan het ons klaar is. 2183 01:37:32,270 --> 01:37:34,120 So dit is net nog 'n voorbeeld. 2184 01:37:34,120 --> 01:37:36,120 So, dit is wat hulle is nie ontsnap hul SQL tafel. 2185 01:37:36,120 --> 01:37:37,090 Sodat jy dit kan daal. 2186 01:37:37,090 --> 01:37:38,805 So jy wil dinge om te ontsnap. 2187 01:37:38,805 --> 01:37:44,010 Dit was die vorige voorbeeld met die kruis site scripting. 2188 01:37:44,010 --> 01:37:45,430 Jammer ons het 'n bietjie laat. 2189 01:37:45,430 --> 01:37:46,870 Môre, jammer! 2190 01:37:46,870 --> 01:37:48,560 Môre, ons het kantoorure. 2191 01:37:48,560 --> 01:37:50,870 So kantoorure in Cabbot 8:00-11:00. 2192 01:37:50,870 --> 01:37:55,240 Die kantoorure is streng vir quiz vrae. 2193 01:37:55,240 --> 01:37:56,587