1 00:00:00,000 --> 00:00:02,964 2 00:00:02,964 --> 00:00:05,434 >> [Muziek] 3 00:00:05,434 --> 00:00:11,825 4 00:00:11,825 --> 00:00:12,700 HANNAH: Hallo, iedereen. 5 00:00:12,700 --> 00:00:15,866 Dank jullie wel voor het coming out in de walgelijke weer voor quiz één 6 00:00:15,866 --> 00:00:16,910 sessie te herzien. 7 00:00:16,910 --> 00:00:20,020 Zoals jullie weten, quiz een is deze woensdag. 8 00:00:20,020 --> 00:00:22,209 Dus we gaan om te gaan door een bos van onderwerpen. 9 00:00:22,209 --> 00:00:24,000 DAVIN: Hey, kan ik zeggen iets echt snel? 10 00:00:24,000 --> 00:00:25,215 HANNAH: Ja, Davin's gaan om iets echt snel zeggen. 11 00:00:25,215 --> 00:00:25,780 DAVIN: Sorry. 12 00:00:25,780 --> 00:00:29,490 Gewoon echt snel, als je vragen hebt over de quiz, kunt u online gaat. 13 00:00:29,490 --> 00:00:32,420 Ga naar 2014 quiz één, over de quiz. 14 00:00:32,420 --> 00:00:34,680 Het heeft de logistiek over waar te gaan, wanneer te gaan. 15 00:00:34,680 --> 00:00:38,100 Als u tegelijkertijd bent ingeschreven, we zijn gaan naar een make-up quiz hebben om 5:30. 16 00:00:38,100 --> 00:00:40,350 Of als je me een kwestie gezonden, je hebt een andere kwestie. 17 00:00:40,350 --> 00:00:42,640 Maar 05:30 is de make-up tijd op woensdag. 18 00:00:42,640 --> 00:00:44,540 Maar als u vragen hebt, algemene vragen, 19 00:00:44,540 --> 00:00:45,748 online heeft alle logistiek. 20 00:00:45,748 --> 00:00:47,690 Controleer dus eerst daar. 21 00:00:47,690 --> 00:00:49,070 >> HANNAH: Awesome. 22 00:00:49,070 --> 00:00:53,030 Dus hier is de grote lijst van onderwerpen dat we gaan om te gaan door vandaag. 23 00:00:53,030 --> 00:00:57,390 Ik ga naar alle van de C te dekken spul, dat is dat de eerste kolom. 24 00:00:57,390 --> 00:01:00,710 Dus de C spul dat we gedekt na quiz nul. 25 00:01:00,710 --> 00:01:05,459 Beginnend met een gelinkte lijst, waaronder pointers. 26 00:01:05,459 --> 00:01:07,668 >> Oké, dus we dit zagen in de laatste beoordeling sessie, 27 00:01:07,668 --> 00:01:10,000 dus ik ga om te gaan door dit is een beetje sneller. 28 00:01:10,000 --> 00:01:13,500 Gewoon je hand opsteken als je wilt dat ik vertragen of verder aan te pakken iets. 29 00:01:13,500 --> 00:01:17,150 Maar we gebruiken gelinkte lijsten, omdat We begonnen in C met arrays. 30 00:01:17,150 --> 00:01:20,920 En arrays zijn geweldig, maar de probleem is ze hebben een vaste grootte. 31 00:01:20,920 --> 00:01:24,925 Gelinkte lijsten kunnen we creëren dynamisch bemeten datastructuren. 32 00:01:24,925 --> 00:01:28,520 33 00:01:28,520 --> 00:01:32,320 >> En we hebben onze basishandelingen, invoegen, verwijderen en zoeken. 34 00:01:32,320 --> 00:01:36,780 En we kunnen insert doen in constante tijd ergste geval 35 00:01:36,780 --> 00:01:39,140 als we het enkel aan het begin. 36 00:01:39,140 --> 00:01:45,220 Wissen en te doorzoeken, het ergste Bij grote oh n tijd. 37 00:01:45,220 --> 00:01:47,140 Dus nogmaals, gewoon om te spiegelen door middel van deze foto's, 38 00:01:47,140 --> 00:01:50,860 Ik weet dat we zagen de laatste tijd, maar we willen houden van onze gelinkte lijst 39 00:01:50,860 --> 00:01:53,440 door het bijhouden van de hoofd van onze gelinkte lijst. 40 00:01:53,440 --> 00:01:55,580 Omdat we weten dat elk van onze knooppunten 41 00:01:55,580 --> 00:01:58,610 is gewoon te wijzen op de volgende knoop in onze gelinkte lijst. 42 00:01:58,610 --> 00:02:00,460 >> Dus dat is hoe we bijhouden. 43 00:02:00,460 --> 00:02:02,910 Hoewel deze niet continue stukken van het geheugen, 44 00:02:02,910 --> 00:02:07,410 we kunnen ze vinden door gewoon na de verschillende pijlen. 45 00:02:07,410 --> 00:02:09,800 Hier is onze structuur voor een gelinkte lijst knooppunt. 46 00:02:09,800 --> 00:02:11,440 We zagen deze laatste keer. 47 00:02:11,440 --> 00:02:13,080 Wij hebben onze struct knooppunt. 48 00:02:13,080 --> 00:02:14,340 En het heeft twee eigenschappen. 49 00:02:14,340 --> 00:02:17,020 Nummer een, de eigenlijke waarde die we willen bewaren. 50 00:02:17,020 --> 00:02:18,290 In dit geval is een geheel getal. 51 00:02:18,290 --> 00:02:21,100 Het kan een string zijn, het kon zijn een char, wat je wilt. 52 00:02:21,100 --> 00:02:24,710 En dan hebben we bij te houden van het volgende knooppunt in onze gelinkte lijst. 53 00:02:24,710 --> 00:02:29,797 Dus dat gaat om een ​​te zijn wijzer naar het volgende knooppunt. 54 00:02:29,797 --> 00:02:31,880 Als je gewoon doen zoeken, zoals ik al eerder zei, 55 00:02:31,880 --> 00:02:34,900 je zou moeten je pijlen naar beneden te volgen. 56 00:02:34,900 --> 00:02:40,720 Inbrengen, zou je bijhouden van waar de rest van de lijst is. 57 00:02:40,720 --> 00:02:44,150 En wilt u het hoofd te buigen wijzen onze nieuwe element, dat 58 00:02:44,150 --> 00:02:46,640 in dit geval één, en dan zal men wijzen 59 00:02:46,640 --> 00:02:49,480 de rest van de gekoppelde lijst. 60 00:02:49,480 --> 00:02:52,996 Dus nogmaals, ik weet dat dit een beetje beetje een herhaling van de quiz nul. 61 00:02:52,996 --> 00:02:55,370 Dus we moeten heel voorzichtig zijn de volgorde waarin we 62 00:02:55,370 --> 00:03:00,390 doe deze pointings dus doen we niet verliezen spoor van de achterkant van de lijst. 63 00:03:00,390 --> 00:03:04,122 OK, vragen met gewoon afzonderlijk gelinkte lijsten? 64 00:03:04,122 --> 00:03:06,060 Geweldig, OK, cool. 65 00:03:06,060 --> 00:03:09,410 >> Dus nu gaan we om te gaan op iets net iets ingewikkelder, 66 00:03:09,410 --> 00:03:10,920 dubbel gelinkte lijsten. 67 00:03:10,920 --> 00:03:13,680 Dus in aanvulling op het houden van spoor van het volgende knooppunt, 68 00:03:13,680 --> 00:03:16,220 we willen ook om bij te houden van het vorige knooppunt. 69 00:03:16,220 --> 00:03:19,580 En dit laat ons toe om, als we ergens in onze gelinkte lijst, 70 00:03:19,580 --> 00:03:23,110 niet alleen vooruit gaan, maar Ook achteruit herhalen. 71 00:03:23,110 --> 00:03:25,220 Want zoals we zagen in een enkelvoudig gelinkte lijst, 72 00:03:25,220 --> 00:03:27,980 als we waren op een bepaald knooppunt, en alle van een plotselinge, hebben we besloten, 73 00:03:27,980 --> 00:03:30,160 eigenlijk, ik wil naar het knooppunt vlak voor me, 74 00:03:30,160 --> 00:03:32,034 je zou moeten gaan allemaal de weg terug naar het hoofd 75 00:03:32,034 --> 00:03:35,710 en doorlopen tot je gevonden het knooppunt dat u zocht. 76 00:03:35,710 --> 00:03:37,680 >> Dus dit maakt de dingen iets makkelijker als we zijn 77 00:03:37,680 --> 00:03:39,670 proberen te herhalen via onze gelinkte lijst. 78 00:03:39,670 --> 00:03:47,870 Maar het vraagt ​​van ons om spoor van een te houden meer wijzer, dus nog een knooppunt ster. 79 00:03:47,870 --> 00:03:50,830 Oké, dus hier komt het leuke gedeelte. 80 00:03:50,830 --> 00:03:55,600 We gaan oefenen uitvoering verwijderen voor dubbel gelinkte lijsten. 81 00:03:55,600 --> 00:03:58,660 Dus dit is iets dat helemaal eerlijk spel voor de quiz. 82 00:03:58,660 --> 00:04:00,750 Het kwam op het verleden quizzen. 83 00:04:00,750 --> 00:04:04,220 Dus zeker worden voorbereid om een ​​beetje in C. coderen 84 00:04:04,220 --> 00:04:07,900 Niet vergeten dat met al denk deze leuke PHP en JavaScript, 85 00:04:07,900 --> 00:04:10,560 we hebben nog steeds te onthouden te doen C. Dus penseel op dat 86 00:04:10,560 --> 00:04:12,146 als je roestige voelt. 87 00:04:12,146 --> 00:04:14,580 >> Oké, laten we eens kijken of we dit kunnen doen. 88 00:04:14,580 --> 00:04:16,312 OK, cool. 89 00:04:16,312 --> 00:04:18,600 Dus we gaan proberen naar rechts bewerken in hier, 90 00:04:18,600 --> 00:04:20,707 en hopelijk dit gaat zoals gepland. 91 00:04:20,707 --> 00:04:23,915 Oké, is er iemand die mij wilt geven een suggestie over hoe ik moet beginnen? 92 00:04:23,915 --> 00:04:27,030 De enige veronderstelling Ik ben maken is dat ik al 93 00:04:27,030 --> 00:04:30,180 hebben een structuur gedefinieerd, één Ik liet op de laatste pagina, 94 00:04:30,180 --> 00:04:31,420 op de laatste dia. 95 00:04:31,420 --> 00:04:39,250 En ik ben het opslaan van het hoofd van mijn gekoppelde lijst in sommige pointer genaamd lijst. 96 00:04:39,250 --> 00:04:42,190 Wil iemand mij begon? 97 00:04:42,190 --> 00:04:45,410 >> Publiek: Kunt u een nieuwe maken knooppunt te roepen door de lijst? 98 00:04:45,410 --> 00:04:46,410 >> HANNAH: Awesome, dus we gaan creëren 99 00:04:46,410 --> 00:04:47,951 een nieuw knooppunt te kruipen door de lijst. 100 00:04:47,951 --> 00:04:48,570 Dat vind ik leuk. 101 00:04:48,570 --> 00:04:50,799 Ik noem het gewoon pointer als dat is OK. 102 00:04:50,799 --> 00:04:52,340 En waar moet het oorspronkelijk beginnen? 103 00:04:52,340 --> 00:04:57,280 104 00:04:57,280 --> 00:04:59,840 >> Publiek: Waarschijnlijk op de kop van de lijst. 105 00:04:59,840 --> 00:05:00,590 HANNAH: Beautiful. 106 00:05:00,590 --> 00:05:03,670 We willen beginnen aan het hoofd, die Ik zei dat zal worden opgeslagen in de lijst. 107 00:05:03,670 --> 00:05:04,170 Geweldig. 108 00:05:04,170 --> 00:05:05,220 Tot nu toe alles goed. 109 00:05:05,220 --> 00:05:08,260 En nu, ons doel is om doorlopen van de lijst 110 00:05:08,260 --> 00:05:12,870 totdat we de knoop met waarde n die we willen verwijderen. 111 00:05:12,870 --> 00:05:13,540 OK? 112 00:05:13,540 --> 00:05:15,910 >> Nu is dus het deel waar we willen door middel herhalen. 113 00:05:15,910 --> 00:05:19,488 Kan iemand suggereren een manier om door te herhalen? 114 00:05:19,488 --> 00:05:20,979 >> Publiek: Een lus. 115 00:05:20,979 --> 00:05:21,840 >> HANNAH: Een lus. 116 00:05:21,840 --> 00:05:22,620 Ik hou ervan. 117 00:05:22,620 --> 00:05:25,550 Concreet kunnen we proberen een tijdje lus. 118 00:05:25,550 --> 00:05:30,919 OK, en we weten dat we hebben bereikt het einde van onze lijst bij wat? 119 00:05:30,919 --> 00:05:32,210 Publiek: Zodra de wijzer is null. 120 00:05:32,210 --> 00:05:33,418 HANNAH: Zodra de wijzer is null. 121 00:05:33,418 --> 00:05:34,320 Mooi, ik hou ervan. 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 Dus sorry als mijn begrenzende brace is soort van vallen van het scherm. 125 00:05:43,190 --> 00:05:44,090 We brachten het terug. 126 00:05:44,090 --> 00:05:46,610 OK, cool. 127 00:05:46,610 --> 00:05:48,690 Wat is het volgende? 128 00:05:48,690 --> 00:05:51,950 >> Dus we weten dat we willen verwijderen het knooppunt n waarde heeft. 129 00:05:51,950 --> 00:05:56,340 Dus laten we het geval waar we eigenlijk vinden onze knooppunt. 130 00:05:56,340 --> 00:05:57,840 Dus hoe zou ik controleren dat? 131 00:05:57,840 --> 00:06:02,210 Ik zou gewoon zeggen als aanwijzer, en dan als ik de waarde wilt halen uit wijzer, 132 00:06:02,210 --> 00:06:08,940 Ik heb gewoon arrow n, gelijk aan n, de parameter 133 00:06:08,940 --> 00:06:14,490 dat we gaf aan deze functie, de knooppunt dat we willen eigenlijk verwijderen. 134 00:06:14,490 --> 00:06:17,090 Voor vragen tot hier? 135 00:06:17,090 --> 00:06:18,360 Prima. 136 00:06:18,360 --> 00:06:24,140 OK, dus laten we nu snel een beeld te schetsen op het bord om dit te visualiseren. 137 00:06:24,140 --> 00:06:30,710 >> Dus laten we zeggen er is onze mooie knoop. 138 00:06:30,710 --> 00:06:34,480 En het heeft een waarde, zal ik gewoon zeggen vier. 139 00:06:34,480 --> 00:06:40,340 En wijst naar de volgende knooppunt in onze gelinkte lijst. 140 00:06:40,340 --> 00:06:42,220 En er is niets voor het. 141 00:06:42,220 --> 00:06:45,800 Dus hebben we onze vorige wijst niets. 142 00:06:45,800 --> 00:06:48,110 In dit geval wijzen we achteruit. 143 00:06:48,110 --> 00:06:50,960 OK, maar het opzetten van mijn gelinkte lijst hier. 144 00:06:50,960 --> 00:06:53,630 En we hebben een lijst die verwijst om deze structuur te beginnen. 145 00:06:53,630 --> 00:06:57,220 146 00:06:57,220 --> 00:07:00,485 Ik zal nog één voor tekenen Volledigheidshalve. 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 Ik zal dit naar voren wijzen. 150 00:07:07,480 --> 00:07:09,550 En ik zal dat een terug wijzen. 151 00:07:09,550 --> 00:07:10,360 Oeps, sorry. 152 00:07:10,360 --> 00:07:12,710 Ja, heb deze naar achteren. 153 00:07:12,710 --> 00:07:15,548 154 00:07:15,548 --> 00:07:16,967 Doe het opnieuw. 155 00:07:16,967 --> 00:07:18,330 OK, daar gaan we. 156 00:07:18,330 --> 00:07:19,910 Oké, het kreeg. 157 00:07:19,910 --> 00:07:21,780 OK, hier is ons beeld. 158 00:07:21,780 --> 00:07:24,860 >> OK, dus willen we twee gevallen te overwegen. 159 00:07:24,860 --> 00:07:27,330 Het eerste geval is wanneer de knooppunt we willen verwijderen 160 00:07:27,330 --> 00:07:29,420 is aan het begin van onze lijst. 161 00:07:29,420 --> 00:07:34,070 En dan, het tweede geval dat we willen te overwegen is als het ergens anders. 162 00:07:34,070 --> 00:07:37,660 Ik begrijp dat dit een totaal rommelige tekening met al mijn wissen, 163 00:07:37,660 --> 00:07:40,400 maar hopelijk zullen we proberen om dit duidelijk maken met een code. 164 00:07:40,400 --> 00:07:45,450 >> OK, dus laten we bestrijken de zaak waar we vonden onze knooppunt, 165 00:07:45,450 --> 00:07:48,900 en het bij het start van onze gelinkte lijst. 166 00:07:48,900 --> 00:07:50,810 Iemand mij een suggestie hier wat 167 00:07:50,810 --> 00:07:54,684 Ik zou moeten doen om daadwerkelijk te verwijderen onze knooppunt? 168 00:07:54,684 --> 00:07:55,970 Het is een beetje lastig. 169 00:07:55,970 --> 00:07:56,470 OK? 170 00:07:56,470 --> 00:07:59,628 >> Publiek: Je moet de te nemen knooppunt voordat het zou 171 00:07:59,628 --> 00:08:01,794 en maken het wijzen op de die zou na, 172 00:08:01,794 --> 00:08:03,004 en neem het knooppunt dat zou na en maken 173 00:08:03,004 --> 00:08:04,554 zij wijzen op de node voor het. 174 00:08:04,554 --> 00:08:05,220 HANNAH: Precies. 175 00:08:05,220 --> 00:08:10,640 OK, dus is dit het geval is where-- hebben we twee gevallen. 176 00:08:10,640 --> 00:08:14,100 We hebben het geval waarin de knooppunt dat we op zoek naar 177 00:08:14,100 --> 00:08:18,270 is de voorzijde van de lijst. 178 00:08:18,270 --> 00:08:23,110 OK, en dan het geval dat u beschreven is anders, toch? 179 00:08:23,110 --> 00:08:24,500 Het is elders in de lijst. 180 00:08:24,500 --> 00:08:27,460 181 00:08:27,460 --> 00:08:32,840 Dus je zei, we moeten kijk naar het knooppunt vorige, 182 00:08:32,840 --> 00:08:36,500 en maak het vorige knooppunt verwijzen naar de volgende knoop. 183 00:08:36,500 --> 00:08:40,510 Dus laten we zeggen dat we proberen tot het afsluiten van de vijf 184 00:08:40,510 --> 00:08:43,059 in mijn zeer rommelig tekening over hier. 185 00:08:43,059 --> 00:08:47,530 Wij willen ervoor zorgen dat vier wijst nu naar zes. 186 00:08:47,530 --> 00:08:49,590 Vier's volgende punten tot zes. 187 00:08:49,590 --> 00:08:52,150 En zes van de vorige punten tot vier. 188 00:08:52,150 --> 00:08:53,960 Dat is ons doel hier, toch? 189 00:08:53,960 --> 00:08:56,150 Dit is wat ik denk dat je net zei daar. 190 00:08:56,150 --> 00:08:58,450 >> OK, dus laten we dat eerste stuk. 191 00:08:58,450 --> 00:09:02,300 Laten we het hebben de vorige pointer vorige. 192 00:09:02,300 --> 00:09:06,550 193 00:09:06,550 --> 00:09:09,690 Dus vier's volgende moet verwijzen naar wat? 194 00:09:09,690 --> 00:09:13,210 195 00:09:13,210 --> 00:09:14,900 Juist in dit geval zes. 196 00:09:14,900 --> 00:09:18,470 Dus moeten we wijzer zeggen, volgende. 197 00:09:18,470 --> 00:09:20,600 OK? 198 00:09:20,600 --> 00:09:21,150 Prima. 199 00:09:21,150 --> 00:09:24,870 Dus laten we ontdoen van deze lelijke foto en proberen om een ​​iets mooiere trekken. 200 00:09:24,870 --> 00:09:29,040 201 00:09:29,040 --> 00:09:31,172 We hebben hier onze lijst hoofd. 202 00:09:31,172 --> 00:09:36,440 203 00:09:36,440 --> 00:09:42,740 En die verwijst naar het eerste knooppunt in onze gelinkte lijst, wat we zeiden is vier. 204 00:09:42,740 --> 00:09:45,620 Hier is onze tweede knooppunt, vijf. 205 00:09:45,620 --> 00:09:47,307 En onze derde knooppunt, zes. 206 00:09:47,307 --> 00:09:50,265 Gewoon proberen om exact dezelfde trekken beeld, alleen een beetje schoner. 207 00:09:50,265 --> 00:09:52,780 208 00:09:52,780 --> 00:09:56,280 OK, dus vier van de volgende verwijst hier vijf. 209 00:09:56,280 --> 00:09:58,620 Vijf's volgende punten tot zes. 210 00:09:58,620 --> 00:10:00,170 Zes van de vorige punten tot vijf. 211 00:10:00,170 --> 00:10:02,470 En vijf van de vorige punten tot vier. 212 00:10:02,470 --> 00:10:03,360 Zo veel mooier! 213 00:10:03,360 --> 00:10:04,530 OK, cool. 214 00:10:04,530 --> 00:10:07,770 >> Dus nu, wat we deden gewoon Hier, deze regel code, 215 00:10:07,770 --> 00:10:12,680 die zegt wijzer vorige volgende, dus wat betekent dat? 216 00:10:12,680 --> 00:10:17,540 Dat betekent dat als we kijken naar vijf, gaat u naar de vorige knooppunt, 217 00:10:17,540 --> 00:10:21,970 en het is de volgende moet nu punt tot vijf van de volgende. 218 00:10:21,970 --> 00:10:27,840 Dus in wezen, wat dat is het doen is dat is het wissen van deze pijl 219 00:10:27,840 --> 00:10:29,640 en waardoor het overslaan rechts over vijf. 220 00:10:29,640 --> 00:10:31,360 Is dat duidelijk? 221 00:10:31,360 --> 00:10:33,200 Ik weet dat het kan een beetje vaag. 222 00:10:33,200 --> 00:10:34,480 Ik zie een aantal hoofd knikt. 223 00:10:34,480 --> 00:10:35,390 Dat is goed. 224 00:10:35,390 --> 00:10:36,670 OK, cool. 225 00:10:36,670 --> 00:10:39,590 Nu, wat is de volgende stap? 226 00:10:39,590 --> 00:10:42,060 >> Ik heb reset de volgende. 227 00:10:42,060 --> 00:10:45,297 Nu dat andere arrow moet ik veranderen? 228 00:10:45,297 --> 00:10:46,130 Deze hier. 229 00:10:46,130 --> 00:10:47,560 Zes van de vorige. 230 00:10:47,560 --> 00:10:50,620 We willen niet dat zes van de vorige meer te wijzen op vijf. 231 00:10:50,620 --> 00:10:54,580 We willen dat het wijzen op vier. 232 00:10:54,580 --> 00:10:56,190 Betekent dat beeld zinvol? 233 00:10:56,190 --> 00:10:58,370 Dus nu kunnen we daadwerkelijk vijf. 234 00:10:58,370 --> 00:10:59,370 Dus laten we dat stuk. 235 00:10:59,370 --> 00:11:03,390 236 00:11:03,390 --> 00:11:11,180 Wat moet ik doen voordat ik reset zes vorige vier? 237 00:11:11,180 --> 00:11:14,360 Het even welke ideeën er? 238 00:11:14,360 --> 00:11:17,369 >> Publiek: Bevrijd het knooppunt tussen ze door hem op nul? 239 00:11:17,369 --> 00:11:17,910 HANNAH: Cool. 240 00:11:17,910 --> 00:11:21,100 Zeker, ons einddoel is gaat worden naar het knooppunt bevrijden. 241 00:11:21,100 --> 00:11:22,490 Dus we kunnen dat hier doen. 242 00:11:22,490 --> 00:11:23,540 Gratis pointer. 243 00:11:23,540 --> 00:11:24,810 Absoluut. 244 00:11:24,810 --> 00:11:29,160 Maar zelfs daarvoor, laten we gewoon-- ons doel rechts 245 00:11:29,160 --> 00:11:38,730 hier is om wijzer volgende set vorige gelijk aan pointer vorige. 246 00:11:38,730 --> 00:11:40,760 Ik weet dat dit wordt steeds bedekt. 247 00:11:40,760 --> 00:11:45,440 OK, laten we take-- cool. 248 00:11:45,440 --> 00:11:46,990 Kan iedereen deze bottom line te zien? 249 00:11:46,990 --> 00:11:47,840 Of is het super klein? 250 00:11:47,840 --> 00:11:50,430 251 00:11:50,430 --> 00:11:54,300 >> Dus voordat we voeren deze lijn hier, we willen 252 00:11:54,300 --> 00:11:58,375 om ervoor te zorgen dat pointer volgende is niet nul. 253 00:11:58,375 --> 00:12:00,500 Want als aanwijzer volgende is null, wat voor soort fout 254 00:12:00,500 --> 00:12:02,727 krijg ik als ik probeer te verwijzen naar een null pointer? 255 00:12:02,727 --> 00:12:03,560 Publiek: Seg fout. 256 00:12:03,560 --> 00:12:05,660 HANNAH: Een seg fout, mooi. 257 00:12:05,660 --> 00:12:09,690 OK, dus als dat niet null, dan kunnen we opnieuw in te stellen. 258 00:12:09,690 --> 00:12:14,420 En we hebben zes punt weer naar vier. 259 00:12:14,420 --> 00:12:17,440 Vragen tot op dit punt? 260 00:12:17,440 --> 00:12:17,940 Ja? 261 00:12:17,940 --> 00:12:19,814 >> Publiek: In je eerste if-statement, heb je 262 00:12:19,814 --> 00:12:23,817 betekenen voor de pijl hebben volgende, of [onverstaanbaar]? 263 00:12:23,817 --> 00:12:25,150 HANNAH: Ik bedoelde aanwijzer n. 264 00:12:25,150 --> 00:12:30,270 Dus eigenlijk, wat ik probeer te doen is te zeggen, het huidige knooppunt dat ik ben 265 00:12:30,270 --> 00:12:34,100 itereren over, het huidige knooppunt Ik ben op zoek naar, ik ben het opslaan in pointer. 266 00:12:34,100 --> 00:12:37,630 En ik wil weten aanwijzer waarde, die in dit geval is n. 267 00:12:37,630 --> 00:12:39,500 En ik wil zien, is het knooppunt Ik ben op zoek 268 00:12:39,500 --> 00:12:42,790 voor het knooppunt Ik ben gericht om te verwijderen? 269 00:12:42,790 --> 00:12:47,657 Dus dat is de reden waarom wij hebben hier pointer n. 270 00:12:47,657 --> 00:12:49,857 >> Publiek: Dus de pijl gaan tot n, u de waarde in te stellen 271 00:12:49,857 --> 00:12:52,058 en bewaar het op een knooppunt genoemd n? 272 00:12:52,058 --> 00:12:55,410 273 00:12:55,410 --> 00:12:58,820 >> HANNAH: Dus het is net als ik ben gaan door deze gelinkte lijst 274 00:12:58,820 --> 00:13:00,310 en wijst naar vijf. 275 00:13:00,310 --> 00:13:03,600 Als ik wil dat de waarde te krijgen, indien Ik wil dat nummer, 5 te krijgen, 276 00:13:03,600 --> 00:13:06,400 Ik moet aanwijzer n doen. 277 00:13:06,400 --> 00:13:06,900 Cool? 278 00:13:06,900 --> 00:13:07,900 Yeah. 279 00:13:07,900 --> 00:13:11,200 >> Publiek: N is de naam van de variabele? 280 00:13:11,200 --> 00:13:11,700 HANNAH: Ja. 281 00:13:11,700 --> 00:13:14,870 Dus als we omdraaien terug één glijbaan, n naam 282 00:13:14,870 --> 00:13:18,660 van de waarde in van de knooppunt in onze gelinkte lijst. 283 00:13:18,660 --> 00:13:21,510 En ik weet dat het kan een beetje te krijgen beetje verwarrend omdat we ook 284 00:13:21,510 --> 00:13:24,680 belt het ding dat we willen n verwijderen. 285 00:13:24,680 --> 00:13:26,717 Dus dat is waar dat één lijn komt. 286 00:13:26,717 --> 00:13:27,671 Yeah? 287 00:13:27,671 --> 00:13:31,010 >> Publiek: Wat heb je [Onverstaanbaar] hoe ze werken? 288 00:13:31,010 --> 00:13:33,872 289 00:13:33,872 --> 00:13:35,780 Een wijzer [onverstaanbaar]? 290 00:13:35,780 --> 00:13:37,520 >> HANNAH: Tuurlijk. 291 00:13:37,520 --> 00:13:40,027 Heb je het about-- welke lijn? 292 00:13:40,027 --> 00:13:41,526 Doelgroep: De laatste regel [onverstaanbaar]. 293 00:13:41,526 --> 00:13:44,280 294 00:13:44,280 --> 00:13:45,250 >> HANNAH: Tuurlijk, OK. 295 00:13:45,250 --> 00:13:48,540 Dus laten we eens kijken naar de foto in Om te proberen dit te verklaren. 296 00:13:48,540 --> 00:13:51,030 Het spijt me, voor de camera, de vraag was 297 00:13:51,030 --> 00:13:54,580 kunnen we pointer verklaren arrow volgende pointer vorige. 298 00:13:54,580 --> 00:14:01,510 OK, dus laten we zeggen dat we op vijf en ons doel is om te verwijderen vijf. 299 00:14:01,510 --> 00:14:07,240 Dus pointer volgende, welke van deze drie knooppunten geeft dat ons? 300 00:14:07,240 --> 00:14:10,840 Dat brengt ons bij de zesde knooppunt, toch? 301 00:14:10,840 --> 00:14:16,490 >> OK, dus nu we vragen voor de zes vorige. 302 00:14:16,490 --> 00:14:17,060 OK? 303 00:14:17,060 --> 00:14:20,210 En we zijn het resetten van deze gelijk aan vier, 304 00:14:20,210 --> 00:14:23,214 die is er gebeurd met de vijf vorige zijn. 305 00:14:23,214 --> 00:14:25,180 Ik weet het, het is super moeilijk bij te houden. 306 00:14:25,180 --> 00:14:29,286 Ik raad u foto's trekken als je een vraag als deze. 307 00:14:29,286 --> 00:14:30,242 Ja? 308 00:14:30,242 --> 00:14:32,617 >> Publiek: Is de reden dat we hebben geen [onverstaanbaar]? 309 00:14:32,617 --> 00:14:37,430 310 00:14:37,430 --> 00:14:38,570 >> HANNAH: Precies. 311 00:14:38,570 --> 00:14:44,800 Dus de vraag is, waarom doen we niet nodig hebben om hier te controleren? 312 00:14:44,800 --> 00:14:48,160 Waarom gaan we niet nodig hebben om te controleren of pointer vorige is niet gelijk aan nul? 313 00:14:48,160 --> 00:14:50,070 En het is, want we hebben reeds afgescheiden 314 00:14:50,070 --> 00:14:52,490 het geval als de aanwijzer helemaal aan het begin. 315 00:14:52,490 --> 00:14:54,060 Zeer goede vraag. 316 00:14:54,060 --> 00:14:56,880 Iets anders op dit? 317 00:14:56,880 --> 00:14:57,380 OK, cool. 318 00:14:57,380 --> 00:14:58,360 Dus laten we eindigen het op. 319 00:14:58,360 --> 00:14:59,890 We zijn er bijna. 320 00:14:59,890 --> 00:15:01,310 >> Dus wat als het aan het hoofd? 321 00:15:01,310 --> 00:15:03,360 Wat als in plaats van probeert te verwijderen, vijf, 322 00:15:03,360 --> 00:15:06,240 we eigenlijk wilden verwijderen vier? 323 00:15:06,240 --> 00:15:07,270 Wat zou ik moeten doen? 324 00:15:07,270 --> 00:15:09,610 Nou, ik wil mijn hoofd terug te zetten naar wat? 325 00:15:09,610 --> 00:15:14,288 326 00:15:14,288 --> 00:15:15,585 Schreeuw het uit? 327 00:15:15,585 --> 00:15:16,710 Publiek: Het ene na het. 328 00:15:16,710 --> 00:15:17,460 HANNAH: Beautiful. 329 00:15:17,460 --> 00:15:26,430 OK, dus we willen een lijst te wijzen naar wat onze pointer volgende knooppunt is. 330 00:15:26,430 --> 00:15:29,040 Goed. 331 00:15:29,040 --> 00:15:30,810 En net voor de volledigheid's sake, zouden we 332 00:15:30,810 --> 00:15:35,590 wilt controleren dat zolang onze lijst is niet nul, zolang de lijst is niet 333 00:15:35,590 --> 00:15:42,730 leeg is, dan willen we stellen onze vorige gelijk aan nul. 334 00:15:42,730 --> 00:15:46,960 335 00:15:46,960 --> 00:15:50,230 Vraag nu toe? 336 00:15:50,230 --> 00:15:53,205 Één stap verwijderd van--? 337 00:15:53,205 --> 00:15:55,530 >> Publiek: Zou het zijn als lijst is niet gelijk aan nul? 338 00:15:55,530 --> 00:15:56,950 >> HANNAH: Ja, je hebt helemaal gelijk. 339 00:15:56,950 --> 00:15:58,130 Het spijt me zeer. 340 00:15:58,130 --> 00:16:00,040 Is lijst is niet gelijk aan null. 341 00:16:00,040 --> 00:16:01,915 Geweldig. 342 00:16:01,915 --> 00:16:04,245 Proberen om dit alles op het scherm te brengen. 343 00:16:04,245 --> 00:16:06,870 Het is een soort van af te vallen. 344 00:16:06,870 --> 00:16:07,730 Sorry, jongens. 345 00:16:07,730 --> 00:16:11,874 En last but not least, alle we moeten doen is de terugkeer. 346 00:16:11,874 --> 00:16:12,840 OK. 347 00:16:12,840 --> 00:16:15,400 Dat was een stuk gepropt in heel snel. 348 00:16:15,400 --> 00:16:16,800 Neem een ​​seconde om dit over te kijken. 349 00:16:16,800 --> 00:16:18,216 Vertel me als je vragen hebt. 350 00:16:18,216 --> 00:16:20,232 351 00:16:20,232 --> 00:16:20,732 Yeah? 352 00:16:20,732 --> 00:16:26,940 >> Publiek: Als de lijst is op de hoofd, then-- wachten, nevermind. 353 00:16:26,940 --> 00:16:27,700 >> HANNAH: OK, goed. 354 00:16:27,700 --> 00:16:30,987 Dus dit is als lijst staat aan het hoofd, verwijderen we het aan wat we geplaatst. 355 00:16:30,987 --> 00:16:31,486 Yeah? 356 00:16:31,486 --> 00:16:33,777 >> Publiek: Kunt u uitleggen de eerste als weer statement? 357 00:16:33,777 --> 00:16:36,149 De aanwijzer voor n gelijk aan n? 358 00:16:36,149 --> 00:16:36,690 HANNAH: Tuurlijk. 359 00:16:36,690 --> 00:16:42,780 Dus ons doel van deze hele functie is om het knooppunt waarde n is verwijderd. 360 00:16:42,780 --> 00:16:47,460 Dus als we, als we zijn itereren via onze lijst, 361 00:16:47,460 --> 00:16:51,770 het knooppunt met de waarde van n, dat is degene die we willen verwijderen. 362 00:16:51,770 --> 00:16:57,286 Zodat al het wissen gebeurt binnenkant van die grote als statement. 363 00:16:57,286 --> 00:16:58,593 Is dat zinvol? 364 00:16:58,593 --> 00:16:59,480 Cool. 365 00:16:59,480 --> 00:16:59,990 Yeah? 366 00:16:59,990 --> 00:17:02,864 >> Publiek: Misschien heb je gewoon niet kunt zien het, maar niet je moet ook een lijn 367 00:17:02,864 --> 00:17:06,024 voor het scrollen door de lijst? 368 00:17:06,024 --> 00:17:06,690 HANNAH: Awesome. 369 00:17:06,690 --> 00:17:10,896 Laten breng dit een beetje, en we zullen gooien, dat midden in de bodem. 370 00:17:10,896 --> 00:17:13,282 371 00:17:13,282 --> 00:17:15,490 Misschien is de raad van bestuur zou hebben Een licht beter idee. 372 00:17:15,490 --> 00:17:17,829 Dus hoe zou ik verhuizen verwijzing vooruit? 373 00:17:17,829 --> 00:17:20,184 >> Publiek: Pointer gelijk pointer plus één. 374 00:17:20,184 --> 00:17:21,599 >> HANNAH: Beautiful. 375 00:17:21,599 --> 00:17:25,050 Dus dat laat ons toe om blijven itereren door. 376 00:17:25,050 --> 00:17:26,251 OK. 377 00:17:26,251 --> 00:17:27,750 Publiek: Zou er niet een anders zijn? 378 00:17:27,750 --> 00:17:29,028 HANNAH: Nog een keer? 379 00:17:29,028 --> 00:17:32,444 Publiek: Zou er niet zijn een anders na de grote oude als 380 00:17:32,444 --> 00:17:35,519 verklaring [onverstaanbaar]? 381 00:17:35,519 --> 00:17:36,310 HANNAH: Welk deel? 382 00:17:36,310 --> 00:17:38,350 Het spijt me. 383 00:17:38,350 --> 00:17:41,800 >> Doelgroep: De traversal, niet er een anders? 384 00:17:41,800 --> 00:17:43,550 HANNAH: U absoluut kan een anders. 385 00:17:43,550 --> 00:17:46,930 Want ik heb een terugkeer naar rechts daar hoef je niet een anders nodig. 386 00:17:46,930 --> 00:17:48,760 Maar ja, goede vraag. 387 00:17:48,760 --> 00:17:50,170 OK, ja? 388 00:17:50,170 --> 00:17:52,878 Publiek: Kunnen we denken aan wijzer dat beweegt door de lijst 389 00:17:52,878 --> 00:17:56,610 het nemen van de waarde van elk knooppunt in de lijst? 390 00:17:56,610 --> 00:18:00,650 Of moeten we denken aan het als soort van buiten de lijst? 391 00:18:00,650 --> 00:18:02,350 >> HANNAH: Ofwel is prima, denk ik. 392 00:18:02,350 --> 00:18:05,880 De manier waarop ik me voorstellen dat het Ik zeg, OK, ik ben wijzer. 393 00:18:05,880 --> 00:18:06,520 En dit ben ik. 394 00:18:06,520 --> 00:18:07,150 Dit is mijn hand. 395 00:18:07,150 --> 00:18:09,960 Ik ga om te wijzen op de verschillende dingen die ik wil via herhalen. 396 00:18:09,960 --> 00:18:12,270 Ten eerste, ik ga naar punt aan het hoofd van de lijst. 397 00:18:12,270 --> 00:18:14,144 En dat vertelt me ​​dat ik ben zal wijzen op vier. 398 00:18:14,144 --> 00:18:18,060 En dus mij als extern aan de lijst, Ik kan wijzen op elk van deze elementen. 399 00:18:18,060 --> 00:18:19,520 Dus ik denk van mezelf als aanwijzer. 400 00:18:19,520 --> 00:18:21,645 Publiek: Dus als je verwijderen een van die elementen, 401 00:18:21,645 --> 00:18:23,404 u zelf te verwijderen, om zo te zeggen. 402 00:18:23,404 --> 00:18:24,070 HANNAH: Precies. 403 00:18:24,070 --> 00:18:25,920 Zodat je het ding verwijderen je wijst. 404 00:18:25,920 --> 00:18:28,340 Dus in het voorbeeld dat we zagen waar we zijn 405 00:18:28,340 --> 00:18:31,670 probeert te verwijderen, vijf, als ik wijzend naar vijf, 406 00:18:31,670 --> 00:18:34,200 Ik wil het verwijderen wat ik wijzend naar. 407 00:18:34,200 --> 00:18:35,870 Precies. 408 00:18:35,870 --> 00:18:36,577 Ja? 409 00:18:36,577 --> 00:18:39,410 Publiek: Hebben we verzorgd de wanneer n niet in de lijst? 410 00:18:39,410 --> 00:18:40,460 HANNAH: Als n niet in de lijst? 411 00:18:40,460 --> 00:18:43,501 Alles wat er gaat gebeuren is dat je bent gaan doorlopen en herhalen 412 00:18:43,501 --> 00:18:47,616 door, en dan, je gaat krijgen om zijn null pointer, 413 00:18:47,616 --> 00:18:48,990 en dan zul je worden gedaan. 414 00:18:48,990 --> 00:18:50,812 >> Publiek: Dus hebben we om iets terug te keren? 415 00:18:50,812 --> 00:18:51,520 HANNAH: We konden. 416 00:18:51,520 --> 00:18:54,500 De manier waarop dat als dit gedefinieerd functie, zeg ik gewoon dat het terugkeert 417 00:18:54,500 --> 00:18:55,770 ongeldig ongeacht. 418 00:18:55,770 --> 00:18:58,360 Maar je kon iets hebben alsof ik terug naar een geheel getal, 419 00:18:58,360 --> 00:19:00,920 en hebben het terug negatief 1 als het niet lukt. 420 00:19:00,920 --> 00:19:03,070 Zoiets. 421 00:19:03,070 --> 00:19:04,494 Vragen met-- ja? 422 00:19:04,494 --> 00:19:05,410 Publiek: [onverstaanbaar]? 423 00:19:05,410 --> 00:19:05,993 HANNAH: Sorry? 424 00:19:05,993 --> 00:19:07,419 Publiek: [onverstaanbaar]? 425 00:19:07,419 --> 00:19:07,960 HANNAH: Tuurlijk. 426 00:19:07,960 --> 00:19:11,730 Dus dat is de actual-- als we eenmaal hebt gedaan al dit werk van bewegende 427 00:19:11,730 --> 00:19:16,530 al deze pijlen rond, onze hele doel was om zich te ontdoen van het knooppunt 428 00:19:16,530 --> 00:19:18,230 dat we zoeken. 429 00:19:18,230 --> 00:19:21,610 Dus in dit geval, vrijmaken wijzer, als ik wijzend naar vijf, 430 00:19:21,610 --> 00:19:24,670 het is als het wissen van deze middelste node. 431 00:19:24,670 --> 00:19:27,250 Dat is de vrije aanwijzer deel. 432 00:19:27,250 --> 00:19:29,090 Dat zinvol? 433 00:19:29,090 --> 00:19:31,390 >> Publiek: Dus zelfs gedacht dat heb je niet [onverstaanbaar]? 434 00:19:31,390 --> 00:19:36,060 >> HANNAH: Dus we uitgegaan bij het begin we hadden wat lijst die was already-- 435 00:19:36,060 --> 00:19:37,220 ze hadden dit samen te stellen. 436 00:19:37,220 --> 00:19:39,761 Dus om deze te construeren lijst, moest hebben ze [onverstaanbaar]. 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 Iets anders met dit? 440 00:19:44,490 --> 00:19:46,386 Ja? 441 00:19:46,386 --> 00:19:49,204 >> Publiek: Wat als de lijst niet de nul lijn gelijk? 442 00:19:49,204 --> 00:19:49,704 [Onverstaanbaar]? 443 00:19:49,704 --> 00:19:52,289 444 00:19:52,289 --> 00:19:53,080 HANNAH: Recht hier? 445 00:19:53,080 --> 00:19:53,840 Publiek: Ja. 446 00:19:53,840 --> 00:19:57,370 HANNAH: OK, alles wat ik aan het doen ben is Ik ben gewoon om ervoor te zorgen 447 00:19:57,370 --> 00:20:03,250 dat voordat ik proberen om dereferentie lijst, voordat ik probeer om tot de vorige, 448 00:20:03,250 --> 00:20:07,210 Ik wil ervoor zorgen dat het niet null dus ik heb een seg schuld niet krijgen. 449 00:20:07,210 --> 00:20:08,400 Cool. 450 00:20:08,400 --> 00:20:10,820 >> OK, ik weet dat dit vrij was een stuk door te komen. 451 00:20:10,820 --> 00:20:14,950 Dus deze dia zal zijn aan u beschikbaar gesteld. 452 00:20:14,950 --> 00:20:17,341 Dus je kunt gaan door het in meer detail. 453 00:20:17,341 --> 00:20:17,841 Ja? 454 00:20:17,841 --> 00:20:19,749 >> Publiek: Waarom doet de lijst [onverstaanbaar]? 455 00:20:19,749 --> 00:20:24,129 456 00:20:24,129 --> 00:20:24,670 HANNAH: Tuurlijk. 457 00:20:24,670 --> 00:20:27,390 Dus lijst wijst echt op dit element hier, 458 00:20:27,390 --> 00:20:29,200 het eerste element in de lijst. 459 00:20:29,200 --> 00:20:30,748 Het kan dus geen eerdere. 460 00:20:30,748 --> 00:20:31,736 Ja? 461 00:20:31,736 --> 00:20:35,194 >> Publiek: Heeft de aanwijzer punt op hetzelfde adres in het geheugen? 462 00:20:35,194 --> 00:20:38,404 Is het naar dezelfde adres in het geheugen als het knooppunt 463 00:20:38,404 --> 00:20:40,640 dat wijst naar? 464 00:20:40,640 --> 00:20:43,865 >> HANNAH: Ja, het wijst dit knooppunt in het geheugen. 465 00:20:43,865 --> 00:20:47,190 >> PUBLIEK: Rechts, dus wanneer u [onverstaanbaar]? 466 00:20:47,190 --> 00:20:50,580 >> HANNAH: In zekere zin, ja. 467 00:20:50,580 --> 00:20:51,280 OK. 468 00:20:51,280 --> 00:20:52,997 Oké, laten we samen gaan met dit. 469 00:20:52,997 --> 00:20:55,330 En als je meer vragen, stok rond op het einde, 470 00:20:55,330 --> 00:20:57,130 en we kunnen gaan door het weer. 471 00:20:57,130 --> 00:20:58,120 OK, cool. 472 00:20:58,120 --> 00:21:00,490 Nu krijgen we om verder te gaan tabellen, probeert hash, 473 00:21:00,490 --> 00:21:04,940 en bomen, die je super kreeg vertrouwd zijn met in-p vijf, speller. 474 00:21:04,940 --> 00:21:11,020 >> Dus hash tabel is slechts een array met enkelvoudig gelinkte lijsten 475 00:21:11,020 --> 00:21:14,050 of dubbel gelinkte lijsten komt af van het. 476 00:21:14,050 --> 00:21:16,380 Dus we hebben een soort van associatieve array. 477 00:21:16,380 --> 00:21:21,280 En hoe weten we welke van deze arrays emmers te krijgen in, 478 00:21:21,280 --> 00:21:24,137 We maken gebruik van een hash-functie. 479 00:21:24,137 --> 00:21:26,470 Dus in dit geval, kan iemand wat denk je van de hash-functie 480 00:21:26,470 --> 00:21:28,636 zou alleen worden gebaseerd op een aantal van de input en output? 481 00:21:28,636 --> 00:21:31,392 482 00:21:31,392 --> 00:21:33,194 >> Publiek: Brief nummer van het alfabet. 483 00:21:33,194 --> 00:21:33,860 HANNAH: Precies. 484 00:21:33,860 --> 00:21:36,160 Het zet ze gewoon in alfabetische volgorde. 485 00:21:36,160 --> 00:21:39,280 Alles wat begint met een A wordt in de eerste emmer. 486 00:21:39,280 --> 00:21:43,340 Alles wat met een B is in het zetten tweede emmer, enzovoort, enzovoort. 487 00:21:43,340 --> 00:21:45,620 Geweldig, OK. 488 00:21:45,620 --> 00:21:48,980 En een hashfunctie geven functie die in een woord neemt 489 00:21:48,980 --> 00:21:51,910 en zal u vertellen wat emmer het behoort in. 490 00:21:51,910 --> 00:21:55,150 Dus welke vermelding in onze scala het behoort in. 491 00:21:55,150 --> 00:21:58,080 >> Dus elke keer als ik mijn hash-functie een woord, 492 00:21:58,080 --> 00:22:00,660 het zou mij hetzelfde vertellen Plaats elke keer weer. 493 00:22:00,660 --> 00:22:03,270 Dus als we gebruik maken van de hash-functie uit de vorige dia 494 00:22:03,270 --> 00:22:05,950 waar we het sorteren op de eerste letter van het alfabet, 495 00:22:05,950 --> 00:22:08,230 elke keer als ik mijn hash-functie "appel" 496 00:22:08,230 --> 00:22:10,180 het moet altijd geef me terug 0. 497 00:22:10,180 --> 00:22:12,890 Dus als ik een appel in mijn hash tafel te zetten, 498 00:22:12,890 --> 00:22:17,700 als ik "appel" aan mijn hash-functie, het moet zeggen, ga zet het in emmer 0. 499 00:22:17,700 --> 00:22:19,980 Als ik ben op zoek naar een appel in mijn hash table 500 00:22:19,980 --> 00:22:24,340 en ik zeg, waar macht appel levend, je hash-functie vragen. 501 00:22:24,340 --> 00:22:26,900 En het zegt, ga naar emmer 0. 502 00:22:26,900 --> 00:22:29,150 Oke? 503 00:22:29,150 --> 00:22:32,660 Vragen met hash functies? 504 00:22:32,660 --> 00:22:34,570 Geweldig. 505 00:22:34,570 --> 00:22:37,320 >> Hier is een iets meer gedetailleerde uitleg 506 00:22:37,320 --> 00:22:39,570 van wat een hash-functie eruit zou kunnen zien. 507 00:22:39,570 --> 00:22:42,230 508 00:22:42,230 --> 00:22:42,960 Prima. 509 00:22:42,960 --> 00:22:45,960 Nu, het probleem met hash functies is in een ideale wereld, 510 00:22:45,960 --> 00:22:48,870 we slechts één ding in elke emmer. 511 00:22:48,870 --> 00:22:50,900 Maar in werkelijkheid, is er niet alleen een woord 512 00:22:50,900 --> 00:22:54,280 dat begint met A. Er is geen slechts een woord dat begint met B. So 513 00:22:54,280 --> 00:22:56,960 In dit geval, als we opeens "berry" 514 00:22:56,960 --> 00:22:58,710 en we willen om het te zetten in onze hash tafel, 515 00:22:58,710 --> 00:23:03,640 en we zien, oh, nee, banaan is er al, wat gaan we doen? 516 00:23:03,640 --> 00:23:05,900 >> Nou, we hebben twee opties. 517 00:23:05,900 --> 00:23:07,990 De eerste optie is Linear probing, die 518 00:23:07,990 --> 00:23:11,100 betekent gewoon gaan vinden de volgende lege emmer. 519 00:23:11,100 --> 00:23:14,100 Ga de volgende lege array ingang vinden. 520 00:23:14,100 --> 00:23:15,750 En gewoon "berry" daar. 521 00:23:15,750 --> 00:23:18,880 Dus ik weet dat het hoort te gaan met de banaan in emmer één. 522 00:23:18,880 --> 00:23:22,155 Maar zet ze gewoon in 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 Een andere optie is waarschijnlijk wat je implementeren 525 00:23:26,680 --> 00:23:29,220 in uw p-set, waar u had aparte chaining. 526 00:23:29,220 --> 00:23:33,990 Dus elk van uw emmers, elk van uw array-elementen, 527 00:23:33,990 --> 00:23:38,410 Niet alleen houdt één woord, maar eigenlijk houdt een pointer naar een lijst van woorden. 528 00:23:38,410 --> 00:23:41,880 Zodat als je had banaan in je hash table 529 00:23:41,880 --> 00:23:44,740 en je opeens wilde naar bessen, geen probleem toe te voegen. 530 00:23:44,740 --> 00:23:51,110 Voeg gewoon berry op tot het einde, of aan het begin van uw gekoppelde lijst. 531 00:23:51,110 --> 00:23:54,040 OK, geweldig. 532 00:23:54,040 --> 00:23:58,490 Vragen met hash tafels voordat we verder gaan? 533 00:23:58,490 --> 00:23:59,850 >> Prima. 534 00:23:59,850 --> 00:24:01,070 Bomen en probeert. 535 00:24:01,070 --> 00:24:07,980 OK, dus dit was een andere optie voor de uitvoering woordenboek. 536 00:24:07,980 --> 00:24:09,100 Je zou een poging hebben gedaan. 537 00:24:09,100 --> 00:24:13,420 Dus het is een speciaal soort boom die gedraagt ​​zich als een multi-level hash table. 538 00:24:13,420 --> 00:24:16,862 Dus je zult de foto te zien waar heb je een array die 539 00:24:16,862 --> 00:24:19,320 wijst op een bos van arrays dat punt om een ​​bos van arrays 540 00:24:19,320 --> 00:24:20,390 dat punt om een ​​bos van arrays. 541 00:24:20,390 --> 00:24:23,140 En we zullen zien wat dat precies eruit zou zien op een toekomstige dia. 542 00:24:23,140 --> 00:24:26,070 En meer algemeen, een boom is zomaar een datastructuur 543 00:24:26,070 --> 00:24:29,710 waarin de gegevens georganiseerd bepaalde hiërarchie. 544 00:24:29,710 --> 00:24:32,610 Dus waar we zagen we een soort van begrip 545 00:24:32,610 --> 00:24:36,130 van een top-level, een hoger niveau, een hoger niveau, een hoger niveau. 546 00:24:36,130 --> 00:24:39,690 Dus dit is waarschijnlijk het meest duidelijk enkele voorbeelden. 547 00:24:39,690 --> 00:24:40,880 Dus hier is onze boom. 548 00:24:40,880 --> 00:24:42,970 Je kunt zien dat het heeft bijzondere levels 549 00:24:42,970 --> 00:24:45,480 dat we beginnen met dat root node, één. 550 00:24:45,480 --> 00:24:47,640 En we kunnen naar beneden gaan via onze boom. 551 00:24:47,640 --> 00:24:50,730 552 00:24:50,730 --> 00:24:53,910 >> Een binaire boom is een bepaald type boom. 553 00:24:53,910 --> 00:24:56,770 En het enige specificatie een binaire boom 554 00:24:56,770 --> 00:25:01,130 dat ieder knooppunt hooguit twee bladeren. 555 00:25:01,130 --> 00:25:03,960 Dus je bent niet van plan om geen te zien deze knooppunten drie of vier 556 00:25:03,960 --> 00:25:06,880 of een ander aantal bladeren. 557 00:25:06,880 --> 00:25:11,310 En dan nog specifieker is een binaire zoekboom 558 00:25:11,310 --> 00:25:18,010 waarbij elk knooppunt links van de knooppunt gaat een waarde kleiner hebben. 559 00:25:18,010 --> 00:25:21,180 En elke waarde aan de recht zal groter zijn. 560 00:25:21,180 --> 00:25:26,900 Dus als je ziet 44 is in ons wortel, naar links, 11, 22 en 33 561 00:25:26,900 --> 00:25:28,940 zijn allemaal minder dan onze wortel. 562 00:25:28,940 --> 00:25:33,890 En aan de rechterkant zijn allemaal getallen bigger-- 66, 55, en 77. 563 00:25:33,890 --> 00:25:37,380 En deze eigenschap geldt op elk niveau van de boom. 564 00:25:37,380 --> 00:25:42,690 >> Dus toen we naar beneden gaan naar 22, 11 en 33, nog 11 565 00:25:42,690 --> 00:25:46,950 is kleiner dan 22 en 33 is groter dan 22. 566 00:25:46,950 --> 00:25:50,160 En dit vergemakkelijkt het zoeken want als we op zoek naar een nummer, 567 00:25:50,160 --> 00:25:53,877 we precies weten welke tak naar beneden volgen. 568 00:25:53,877 --> 00:25:56,210 Dus dit moet je een herinnering beetje binair zoeken. 569 00:25:56,210 --> 00:25:56,967 Yeah? 570 00:25:56,967 --> 00:25:58,835 >> Publiek: Dus als je beschrijven binair, 571 00:25:58,835 --> 00:26:00,587 je zei dat het heeft hooguit twee bladeren? 572 00:26:00,587 --> 00:26:01,170 HANNAH: Mm-hm. 573 00:26:01,170 --> 00:26:02,580 PUBLIEK: Zou het minder? 574 00:26:02,580 --> 00:26:03,121 HANNAH: Ja. 575 00:26:03,121 --> 00:26:06,720 Dus laten we zeggen, bijvoorbeeld, u had niet een even aantal dingen 576 00:26:06,720 --> 00:26:11,791 en je kon niet vullen al uw bladeren, het is prima als men heeft er een. 577 00:26:11,791 --> 00:26:12,290 OK? 578 00:26:12,290 --> 00:26:12,789 Geweldig. 579 00:26:12,789 --> 00:26:15,930 Alle andere vragen over bomen? 580 00:26:15,930 --> 00:26:16,670 OK. 581 00:26:16,670 --> 00:26:20,110 >> Terug naar onze pogingen als ik aan het praten was over iets eerder, 582 00:26:20,110 --> 00:26:23,900 hoe we deze multi-level arrays. 583 00:26:23,900 --> 00:26:26,280 Dus in dit geval, beginnen we aan de top. 584 00:26:26,280 --> 00:26:29,030 En we kunnen elk willekeurig woord naar beneden te volgen. 585 00:26:29,030 --> 00:26:30,780 Dus laten we zeggen dat we wilden om te zoeken naar Turing. 586 00:26:30,780 --> 00:26:34,380 We beginnen bij de T, volg het naar beneden aan een array die U bevat, 587 00:26:34,380 --> 00:26:37,350 en volg het naar beneden tot we komen deze kleine delta die 588 00:26:37,350 --> 00:26:39,060 vertelt ons, ja, je een woord gevonden. 589 00:26:39,060 --> 00:26:43,200 590 00:26:43,200 --> 00:26:44,120 Duidelijk probeert? 591 00:26:44,120 --> 00:26:48,138 Alles om daar te gaan? 592 00:26:48,138 --> 00:26:48,908 Ja? 593 00:26:48,908 --> 00:26:51,866 Publiek: Is het symbool van de delta moeten de ruimte binnen de try bezetten? 594 00:26:51,866 --> 00:26:54,532 HANNAH: Ja, dus het maakt niet se zelfs nodig om een ​​delta zijn. 595 00:26:54,532 --> 00:26:57,760 Maar we een of andere manier nodig te hebben vertel ons computer-- sorry, 596 00:26:57,760 --> 00:27:01,130 zodat we weten dat TUR is geen woord. 597 00:27:01,130 --> 00:27:04,180 Want laten we zeggen dat we niet hebben Dit concept van een delta, dit concept 598 00:27:04,180 --> 00:27:09,850 van harte gefeliciteerd, je een woord gevonden, het zou gaan door en herhalen T-U-R, 599 00:27:09,850 --> 00:27:11,300 en dan zeggen, geweldig, ik vond het! 600 00:27:11,300 --> 00:27:12,670 Het moet een woord zijn. 601 00:27:12,670 --> 00:27:13,720 Maar het is echt niet. 602 00:27:13,720 --> 00:27:15,310 We willen heel Turing om een ​​woord te zijn. 603 00:27:15,310 --> 00:27:17,760 Dus moeten we iets aan het hebben end dat zegt, gefeliciteerd, 604 00:27:17,760 --> 00:27:19,051 u een legitieme woord hebt gevonden. 605 00:27:19,051 --> 00:27:21,680 Publiek: Dus als je had als 26 letters in het alfabet, 606 00:27:21,680 --> 00:27:24,560 zou je eigenlijk 27 sleutels in je proberen? 607 00:27:24,560 --> 00:27:26,010 >> HANNAH: Awesome, ja. 608 00:27:26,010 --> 00:27:28,210 Dus eigenlijk, ik denk dat zal zijn op de volgende dia. 609 00:27:28,210 --> 00:27:29,440 Ta-da! 610 00:27:29,440 --> 00:27:32,880 Waar als je een knoop in je proberen, je bent 611 00:27:32,880 --> 00:27:35,800 naar 27 kinderen in plaats van 26 hebben. 612 00:27:35,800 --> 00:27:39,010 613 00:27:39,010 --> 00:27:40,050 Voor vragen met dat? 614 00:27:40,050 --> 00:27:40,550 Yeah? 615 00:27:40,550 --> 00:27:44,569 Publiek: Waarom probeert nemen zo veel ruimte [onverstaanbaar] als je gaat? 616 00:27:44,569 --> 00:27:47,629 Waarom wordt het beschouwd als [onverstaanbaar]? 617 00:27:47,629 --> 00:27:48,170 HANNAH: Tuurlijk. 618 00:27:48,170 --> 00:27:48,790 Laten we terug gaan. 619 00:27:48,790 --> 00:27:52,350 De vraag is, waarom zijn pogingen zo veel groter 620 00:27:52,350 --> 00:27:54,620 dan iets als een hash tabel. 621 00:27:54,620 --> 00:27:57,790 Dus voor elk van deze niveaus, zelfs als ze hier niet getekend, 622 00:27:57,790 --> 00:28:01,250 moet je alle 26 karakters hebben. 623 00:28:01,250 --> 00:28:04,420 En de reden dat je niet kunt zeggen, oh, maar net als voor de Turing, I 624 00:28:04,420 --> 00:28:07,570 niet nodig om een ​​van deze hebben dezelfde dingen op het niveau van U. Nou, 625 00:28:07,570 --> 00:28:11,390 Als je plotseling wilde toevoegen iets dat was zoals T-H, 626 00:28:11,390 --> 00:28:14,800 je nodig hebt om het hebben mogelijkheid van het toevoegen van dat woord. 627 00:28:14,800 --> 00:28:17,330 Dus voor elke letter, je gaat te hebben 628 00:28:17,330 --> 00:28:19,730 om een ​​bos van hebben arrays komt af van het. 629 00:28:19,730 --> 00:28:24,060 Zodat u kunt zien hoe het zou krijgen heel groot, heel snel. 630 00:28:24,060 --> 00:28:26,560 Een andere vragen? 631 00:28:26,560 --> 00:28:28,980 Prima. 632 00:28:28,980 --> 00:28:29,832 Yeah? 633 00:28:29,832 --> 00:28:33,210 >> Publiek: Wanneer zijn pogingen sneller dan de hash tabellen? 634 00:28:33,210 --> 00:28:36,280 >> HANNAH: Wanneer zijn pogingen sneller dan de hash tabellen? 635 00:28:36,280 --> 00:28:39,120 Dus als je een echt gehad slechte hash-functie. 636 00:28:39,120 --> 00:28:41,840 Dus laten we zeggen dat ik was als, hier is je hash-functie. 637 00:28:41,840 --> 00:28:43,660 Het maakt niet uit welk woord geef je mij, ik ben altijd 638 00:28:43,660 --> 00:28:47,740 ga het in slagorde binnenkomst 0 gezet. 639 00:28:47,740 --> 00:28:52,000 En dus hebben we eindigen met zomaar alles in een grote lange gelinkte lijst. 640 00:28:52,000 --> 00:28:58,740 En dus een lookup tijd zou in het slechtste geval nemen n als het aan het einde van onze lijst. 641 00:28:58,740 --> 00:29:03,150 Met het proberen, we moeten gewoon herhalen door middel van de letters in het woord. 642 00:29:03,150 --> 00:29:07,080 Dus zelfs als we een stelletje toegevoegd meer woorden aan ons proberen, 643 00:29:07,080 --> 00:29:09,620 het zou ons niet langer duren om een ​​bepaald woord te vinden. 644 00:29:09,620 --> 00:29:11,750 >> Het enige wat we moeten doen is, voor Bijvoorbeeld, in dit geval, 645 00:29:11,750 --> 00:29:17,170 laten we zeggen dat we op zoek naar zoom, we zouden gewoon moeten dan herhalen 646 00:29:17,170 --> 00:29:19,840 Z-O-O-M, vier letters. 647 00:29:19,840 --> 00:29:22,250 Dus dat is nog maar het lengte van het woord zoom. 648 00:29:22,250 --> 00:29:25,400 Het maakt niet uit hoeveel meer woorden we in dit proberen. 649 00:29:25,400 --> 00:29:30,225 We kunnen altijd krijgen in deze vier stappen. 650 00:29:30,225 --> 00:29:31,215 Geweldig. 651 00:29:31,215 --> 00:29:32,205 Ja? 652 00:29:32,205 --> 00:29:34,185 >> Publiek: Dus [onverstaanbaar] is een array, toch? 653 00:29:34,185 --> 00:29:35,322 >> HANNAH: Mm-hm. 654 00:29:35,322 --> 00:29:37,155 Publiek: Als je zoekt [onhoorbaar], 655 00:29:37,155 --> 00:29:40,929 zou je moeten gaan door uw array om [onverstaanbaar] vinden? 656 00:29:40,929 --> 00:29:41,470 HANNAH: Tuurlijk. 657 00:29:41,470 --> 00:29:44,000 Publiek: Is dat niet meer tijd in beslag nemen? 658 00:29:44,000 --> 00:29:46,370 HANNAH: Als ik ga zeggen dat mijn array is altijd 659 00:29:46,370 --> 00:29:49,250 gaat worden A, B, C, D, E, F, G, blah blah blah, 660 00:29:49,250 --> 00:29:51,630 dus als ik weet altijd dat het in exact dezelfde volgorde, 661 00:29:51,630 --> 00:29:53,880 als ik weet altijd dat het in alfabetische volgorde, 662 00:29:53,880 --> 00:29:57,860 Ik kan alleen maar zeggen O is nummer zo en zo in het alfabet. 663 00:29:57,860 --> 00:29:59,620 Gewoon springen naar die plaats. 664 00:29:59,620 --> 00:30:01,860 Want vergeet niet, met arrays kunnen we toegang 665 00:30:01,860 --> 00:30:06,590 elk element van de matrix voortdurend tijd als we weten waar we naar op zoek. 666 00:30:06,590 --> 00:30:09,080 667 00:30:09,080 --> 00:30:09,580 Yeah? 668 00:30:09,580 --> 00:30:12,005 >> Publiek: Op de vorige schuif [onverstaanbaar] 27, 669 00:30:12,005 --> 00:30:14,430 maar 26 voor de eerste. 670 00:30:14,430 --> 00:30:15,400 >> HANNAH: Sorry? 671 00:30:15,400 --> 00:30:18,800 >> Publiek: Is niet de eerste een 0, dus zou het niet 26? 672 00:30:18,800 --> 00:30:24,900 >> HANNAH: Tuurlijk, dus als we zeggen 27, dat is ga geven ons indices 0 tot en met 26. 673 00:30:24,900 --> 00:30:28,220 Maar als je eigenlijk te tellen die welke zijn opgenomen, het gaat te zijn 27. 674 00:30:28,220 --> 00:30:30,007 Goede vraag. 675 00:30:30,007 --> 00:30:30,590 Nog iets anders? 676 00:30:30,590 --> 00:30:31,200 Yeah? 677 00:30:31,200 --> 00:30:34,420 >> Publiek: Dus zijn pogingen langzamer dan hashtabellen? 678 00:30:34,420 --> 00:30:37,920 >> HANNAH: Tries zullen zijn, in theorie, sneller dan hashtabellen 679 00:30:37,920 --> 00:30:39,760 maar ook meer geheugenruimte. 680 00:30:39,760 --> 00:30:40,534 Yeah? 681 00:30:40,534 --> 00:30:41,450 Publiek: [onverstaanbaar]? 682 00:30:41,450 --> 00:30:45,770 683 00:30:45,770 --> 00:30:47,484 >> HANNAH: Het spijt me, heb ik je niet horen. 684 00:30:47,484 --> 00:30:48,400 Publiek: [onverstaanbaar]. 685 00:30:48,400 --> 00:30:51,250 686 00:30:51,250 --> 00:30:54,100 0 tot 25 geeft je 26. 687 00:30:54,100 --> 00:30:56,958 >> HANNAH: 0 tot 25 zou geven je 26, rechts. 688 00:30:56,958 --> 00:30:58,457 >> Publiek: En dan [onverstaanbaar]. 689 00:30:58,457 --> 00:30:59,040 HANNAH: Recht. 690 00:30:59,040 --> 00:31:04,760 Dus het aantal dat we het opgeven is het aantal dingen in ons aanbod. 691 00:31:04,760 --> 00:31:07,260 Dus als we 27, het is gaat om ons 0 692 00:31:07,260 --> 00:31:10,620 tot 26, die geeft ons ruimte, in dit geval, 693 00:31:10,620 --> 00:31:12,770 Ik ben niet zoals een apostrof. 694 00:31:12,770 --> 00:31:17,040 Dus we krijgen van 0 tot en met 25 zijn de eerste 26 letters van het alfabet, 695 00:31:17,040 --> 00:31:18,990 of alle 26 letters van het alfabet. 696 00:31:18,990 --> 00:31:21,190 En dan dat laatste ding, bij binnenkomst 26, is 697 00:31:21,190 --> 00:31:24,598 gaat om de cheque te zijn merkteken, de delta. 698 00:31:24,598 --> 00:31:26,960 Nog iets anders? 699 00:31:26,960 --> 00:31:29,130 Geweldig. 700 00:31:29,130 --> 00:31:30,020 Verloor mijn ruimte. 701 00:31:30,020 --> 00:31:31,020 OK, cool. 702 00:31:31,020 --> 00:31:33,240 >> Dus we al aangeroerd dit. 703 00:31:33,240 --> 00:31:37,430 Maar de grote handel korting tussen pogingen en hash tabellen 704 00:31:37,430 --> 00:31:39,720 dat probeert voorzien met theorie, constante opzoeken 705 00:31:39,720 --> 00:31:42,890 tijden, maar gebruik een heleboel geheugen. 706 00:31:42,890 --> 00:31:46,495 Oké, nu hebben we iets minder ingewikkelde structuren, 707 00:31:46,495 --> 00:31:49,640 en we zullen worden gedaan met C, en we zullen direct mee te bewegen. 708 00:31:49,640 --> 00:31:51,930 >> Dus stacks, dit zagen we in het college waar u 709 00:31:51,930 --> 00:31:55,020 hebben iets als een stapel trays waar 710 00:31:55,020 --> 00:31:57,330 het laatste wat je op de stapel gaat 711 00:31:57,330 --> 00:31:59,500 naar het eerste wat je opstijgen zijn. 712 00:31:59,500 --> 00:32:02,880 Dus dat is wat echt definieert een stapel is dat het laatste wat je op 713 00:32:02,880 --> 00:32:06,080 gaat de eerste te zijn wat je opstijgen. 714 00:32:06,080 --> 00:32:09,279 En de terminologie die we gebruiken als we gaan om iets te zetten, 715 00:32:09,279 --> 00:32:12,070 als we gaan om iets toe te voegen onze stack, noemen we dat duwen. 716 00:32:12,070 --> 00:32:14,970 En als we iets nemen off, noemen we het knallen. 717 00:32:14,970 --> 00:32:17,080 En als we gaan implementeren van een stapel, we 718 00:32:17,080 --> 00:32:20,660 moet er zeker bij te houden van zowel de grootte en de capaciteit. 719 00:32:20,660 --> 00:32:24,940 Dus het totale aantal elementen kunnen we vast te houden en het huidige aantal elementen 720 00:32:24,940 --> 00:32:27,880 wij houden. 721 00:32:27,880 --> 00:32:29,885 >> En zeer gelijke, we wachtrijen. 722 00:32:29,885 --> 00:32:34,510 En het enige verschil is in plaats van met stapels, 723 00:32:34,510 --> 00:32:37,630 we zeiden het laatste wat we op is het eerste wat we opstijgen. 724 00:32:37,630 --> 00:32:40,940 Dus met wachtrijen, de eerste wat we in 725 00:32:40,940 --> 00:32:43,129 gaat het worden eerste wat we eruit te halen. 726 00:32:43,129 --> 00:32:45,420 Dus dit is net als je eigenlijk in de rij bij een winkel 727 00:32:45,420 --> 00:32:48,140 en je wordt geholpen, dan is de eerste persoon in de rij 728 00:32:48,140 --> 00:32:50,880 moet de eerste persoon om te worden geholpen zijn. 729 00:32:50,880 --> 00:32:52,220 Dus dat zou een wachtrij. 730 00:32:52,220 --> 00:32:55,880 >> Dus moeten we voor het bijhouden van de te houden grootte, capaciteit, en het hoofd omdat we 731 00:32:55,880 --> 00:33:01,130 gaan om iedereen te nemen uit de voorste van de lijst in plaats van de rug. 732 00:33:01,130 --> 00:33:03,480 Vragen over dat? 733 00:33:03,480 --> 00:33:06,330 Elke C vragen die je lastig vallen? 734 00:33:06,330 --> 00:33:09,590 Datastructuren, een van die leuke dingen? 735 00:33:09,590 --> 00:33:10,530 Oké, cool. 736 00:33:10,530 --> 00:33:14,120 Dus ik zal het overhandigen aan Alison aan spring in wat meer programmeren. 737 00:33:14,120 --> 00:33:15,965 >> ALISON: Oh, we zullen zien. 738 00:33:15,965 --> 00:33:17,370 We zullen zien hoe goed ik hier doe. 739 00:33:17,370 --> 00:33:21,410 OK, ik ga proberen en vliegen door middel van dit spul, jongens. 740 00:33:21,410 --> 00:33:24,540 Hannah ging erg in diepte op al haar spullen. 741 00:33:24,540 --> 00:33:26,900 Ik ga proberen te geven je snel een ontploffing overzicht 742 00:33:26,900 --> 00:33:31,290 zodat we naar Davin kunnen krijgen met alle het plezier JavaScript en veiligheid dingen 743 00:33:31,290 --> 00:33:33,380 dat je misschien eigenlijk meer wilt weten over horen. 744 00:33:33,380 --> 00:33:36,600 >> OK, als Hannah zei, als u nog vragen hebben, 745 00:33:36,600 --> 00:33:39,170 Ik ga te snel, alsjeblieft, laat het me weten. 746 00:33:39,170 --> 00:33:42,114 Ik zal vragen nodig beantwoorden. 747 00:33:42,114 --> 00:33:45,280 Dus om te beginnen, gaan we beginnen met waarschijnlijk een van de eerste dingen 748 00:33:45,280 --> 00:33:48,730 je hebt geleerd met web programmering, toestemmingen. 749 00:33:48,730 --> 00:33:52,720 Dus chmod, jullie moeten geweest meesters in dit met alle web 750 00:33:52,720 --> 00:33:54,870 programmering die je hebt gedaan de laatste tijd. 751 00:33:54,870 --> 00:33:57,320 Het is eigenlijk gewoon een opdracht dat verandert de permissies 752 00:33:57,320 --> 00:34:00,779 of de toegangsrechten van onze bestandssysteem objecten. 753 00:34:00,779 --> 00:34:02,570 Natuurlijk daadwerkelijk zien dat deze, als je 754 00:34:02,570 --> 00:34:04,910 met enige moeite met deze tijdens uw probleem sets, 755 00:34:04,910 --> 00:34:11,460 je kan hebben gebruikt ls-l, dat is lang, om de weergave soort te krijgen van als dit, 756 00:34:11,460 --> 00:34:14,209 waar je eigenlijk zien alle de machtigingen voor een bestand. 757 00:34:14,209 --> 00:34:16,850 758 00:34:16,850 --> 00:34:20,732 >> En echt, we gaan gewoon om te gaan door vrij snel gewoon vrij 759 00:34:20,732 --> 00:34:21,940 veel wat elk van deze betekenen. 760 00:34:21,940 --> 00:34:24,481 Dus we hebben hier D, die alleen staat voor de directory. 761 00:34:24,481 --> 00:34:26,790 762 00:34:26,790 --> 00:34:31,739 Uiteraard hier zien we rwx, die leesbaar, beschrijfbaar en uitvoerbaar. 763 00:34:31,739 --> 00:34:37,090 Deze kunnen ook worden weergegeven als bits, die we zullen krijgen in op de volgende pagina. 764 00:34:37,090 --> 00:34:40,699 Zodat elk drietal dat we zagen hier, dus het is drie triades. 765 00:34:40,699 --> 00:34:48,120 We hebben rwx, r niets x en r niets x voor deze eerste bestand. 766 00:34:48,120 --> 00:34:49,690 Het is deze algemene structuur. 767 00:34:49,690 --> 00:34:50,940 >> Dus we hebben een aantal directory. 768 00:34:50,940 --> 00:34:53,999 We hebben een aantal gebruikersgroep met deze machtigingen. 769 00:34:53,999 --> 00:34:57,040 Sommige groep die deze machtigingen heeft, en een wereld die een vergunning heeft. 770 00:34:57,040 --> 00:34:59,420 U kunt hierbij denken van deze als een triade. 771 00:34:59,420 --> 00:35:01,130 U kunt hierbij denken van deze drie bits. 772 00:35:01,130 --> 00:35:04,060 Zodat ze kunnen waarden houden overal van 0 tot 773 00:35:04,060 --> 00:35:07,350 7, daarom soms we hadden je doet chmod 774 00:35:07,350 --> 00:35:17,510 600 in plaats van chmod rw wat dan ook. 775 00:35:17,510 --> 00:35:19,170 We komen er wel in een voorbeeld. 776 00:35:19,170 --> 00:35:24,260 Maar in principe kan je denkt van deze als ofwel gewoon rwx, 777 00:35:24,260 --> 00:35:28,520 of u kunt ze zien als een aantal nummer waar deze eerste hier 778 00:35:28,520 --> 00:35:31,480 een getal tussen 0 en 7, de tweede 779 00:35:31,480 --> 00:35:33,970 een getal tussen 0 en 7, en de derde 780 00:35:33,970 --> 00:35:38,245 een getal tussen 0 en 7, OK? 781 00:35:38,245 --> 00:35:42,700 >> r heeft een waarde van 4 W een waarde van 2, en x 782 00:35:42,700 --> 00:35:49,230 een waarde van 1, dat is waarom deze toestemming hier zou worden chmod 700. 783 00:35:49,230 --> 00:35:53,520 Omdat in dit geval hier, het zegt dat we hebben de eerste bit er is omgedraaid op. 784 00:35:53,520 --> 00:35:55,380 Dus hebben we 4 voor te lezen. 785 00:35:55,380 --> 00:35:58,730 De tweede bit is omgedraaid op voor w, dat is 2, dus nu hebben we 6. 786 00:35:58,730 --> 00:36:02,070 En de derde bit is omgedraaid op voor x, dat is 1, dus krijgen we zeven. 787 00:36:02,070 --> 00:36:04,820 En natuurlijk, onze groep en onze wereld zijn elk 0. 788 00:36:04,820 --> 00:36:07,770 Dus dit is ook equivalent van chmod 700. 789 00:36:07,770 --> 00:36:12,081 En ik zou zeker proberen om begrijpen van de mapping tussen deze. 790 00:36:12,081 --> 00:36:14,080 Ik weet niet zeker of het heeft komen op een quiz voor, 791 00:36:14,080 --> 00:36:18,590 maar het zou een te zijn vraag die ik zou kunnen vragen. 792 00:36:18,590 --> 00:36:22,110 >> Gewoon een beetje gaan zelfs verder in chmod hier, hier 793 00:36:22,110 --> 00:36:27,730 is het algemene structuur van een chmod gesprek. 794 00:36:27,730 --> 00:36:29,500 Dus natuurlijk hebben wij hier chmod. 795 00:36:29,500 --> 00:36:34,410 Referenties, wat dit betreft is die geven we deze machtigingen om 796 00:36:34,410 --> 00:36:36,570 of wie zijn wij het nemen van deze toestemmingen weg van. 797 00:36:36,570 --> 00:36:44,330 Dus hebben we een hier in de toestemmingen, zoals we hebben gezien je een plus x chmod, 798 00:36:44,330 --> 00:36:45,440 zoals we zullen snel te zien. 799 00:36:45,440 --> 00:36:48,460 een rechtvaardige betekent geven deze specifieke machtigingen voor iedereen. 800 00:36:48,460 --> 00:36:49,600 Geef ze aan alles. 801 00:36:49,600 --> 00:36:55,370 Dus je zou heel goed hebben u plus x of g plus x of o plus x of meerdere 802 00:36:55,370 --> 00:36:55,870 daarvan. 803 00:36:55,870 --> 00:36:59,280 Dus dat eerste deel is altijd gaat referenties zijn. 804 00:36:59,280 --> 00:37:03,220 Wie geven we deze machtigingen om, of die we nemen ze weg van? 805 00:37:03,220 --> 00:37:04,850 >> De tweede is de operator. 806 00:37:04,850 --> 00:37:07,350 Dus jullie hebben meestal behandeld plus. 807 00:37:07,350 --> 00:37:12,140 Deze permissies geeft op wie je ze geeft, 808 00:37:12,140 --> 00:37:14,840 terwijl minus, logischerwijs, verwijdert ze. 809 00:37:14,840 --> 00:37:16,880 Dus niets te verschrikkelijk daar. 810 00:37:16,880 --> 00:37:23,060 En dan modi is wat we gesproken over met lezen, schrijven of uitvoeren. 811 00:37:23,060 --> 00:37:29,070 Dus een plus x betekent geven uitvoerbare machtigingen voor iedereen. 812 00:37:29,070 --> 00:37:33,430 En dan, natuurlijk, waarop specifieke bestand of map. 813 00:37:33,430 --> 00:37:33,980 OK? 814 00:37:33,980 --> 00:37:36,010 Iedereen goed met chmod? 815 00:37:36,010 --> 00:37:37,850 Niet slecht? 816 00:37:37,850 --> 00:37:42,417 >> OK, dus HTML, iemand van jullie oud genoeg to-- MySpace leeftijd? 817 00:37:42,417 --> 00:37:44,750 Ik stuurde dit naar mijn afdeling, en letterlijk de helft van de mensen 818 00:37:44,750 --> 00:37:45,790 keek me aan alsof ik gek was. 819 00:37:45,790 --> 00:37:47,498 En ik was als, jongens, we zijn niet zo oud. 820 00:37:47,498 --> 00:37:48,910 Kom op. 821 00:37:48,910 --> 00:37:53,360 Dus HyperText Markup Language, het is eerlijk gezegd gewoon een manier voor u 822 00:37:53,360 --> 00:37:57,990 om bepaalde dingen weer te geven op het web. 823 00:37:57,990 --> 00:37:59,210 Dus het is een opmaaktaal. 824 00:37:59,210 --> 00:38:00,640 Het is niet een scripttaal. 825 00:38:00,640 --> 00:38:02,160 Er zit geen logica in. 826 00:38:02,160 --> 00:38:05,710 Het is gewoon om het te veranderen manier waarop iets wordt getoond. 827 00:38:05,710 --> 00:38:07,670 OK, dus dat is een belangrijk onderscheid maken. 828 00:38:07,670 --> 00:38:12,030 Het wordt beschouwd als een opmaaktaal, niet een scripttaal. 829 00:38:12,030 --> 00:38:15,100 >> Dus hier hebben we onze HTML-tags. 830 00:38:15,100 --> 00:38:20,390 Op deze pen zijn waarschijnlijk de meeste degenen die je moet bekend zijn met 831 00:38:20,390 --> 00:38:22,390 en zijn echt comfortabel met. 832 00:38:22,390 --> 00:38:25,700 Zo duidelijk, we hebben onze HTML-tag, die 833 00:38:25,700 --> 00:38:29,930 duidt dat alles in tussen deze twee zal HTML zijn. 834 00:38:29,930 --> 00:38:33,070 We hebben een aantal link, die uiteraard zal u geven 835 00:38:33,070 --> 00:38:34,990 een link naar een externe webpagina. 836 00:38:34,990 --> 00:38:37,520 Sommige titel, binnen hier ons hoofd. 837 00:38:37,520 --> 00:38:40,020 En we hebben ons lichaam met h1, die een header, 838 00:38:40,020 --> 00:38:42,260 dus het zal het leuk te maken en vet en groter. 839 00:38:42,260 --> 00:38:46,040 En dan hebben we een aantal p, hetgeen een paragraaf. 840 00:38:46,040 --> 00:38:49,000 U moet waarschijnlijk weten en bekend zijn met de dingen 841 00:38:49,000 --> 00:38:54,030 zoals hoe u een afbeelding invoegt, zijn er een andere header klassen? 842 00:38:54,030 --> 00:38:57,240 Ik zou zeker zijn comfortabel met div. 843 00:38:57,240 --> 00:39:00,840 Dus deze de meeste labels dat je zou moeten kennen. 844 00:39:00,840 --> 00:39:04,370 Maar natuurlijk, zoals met alles in CS 50, de lijst is niet uitputtend. 845 00:39:04,370 --> 00:39:08,200 Dus zorg dat je penseel op dat. 846 00:39:08,200 --> 00:39:13,260 >> CSS, dus CSS, als iemand van jullie kijken mijn seminar van twee weken geleden, 847 00:39:13,260 --> 00:39:16,250 is eigenlijk gewoon een manier in uw eigen webpagina te stylen? 848 00:39:16,250 --> 00:39:18,950 OK, dus we hebben een aantal opmaaktaal. 849 00:39:18,950 --> 00:39:23,220 HTML, die zorg draagt ​​voor de tekst enkel en waar het zou kunnen zijn op de pagina. 850 00:39:23,220 --> 00:39:25,760 Maar CSS is echt wat maakt het mooi. 851 00:39:25,760 --> 00:39:30,690 Je kan deze in uw HTML hebben bestanden, maar zoals we later zullen praten over, 852 00:39:30,690 --> 00:39:32,660 Ik ben er vrij zeker van dat het zou kunnen zijn de volgende dia, het 853 00:39:32,660 --> 00:39:35,620 is een gangbare praktijk, en eigenlijk praktijk dat we echt aan te moedigen, 854 00:39:35,620 --> 00:39:40,670 voor u om ze uit elkaar toen we praten over MVC en dat hele paradigma. 855 00:39:40,670 --> 00:39:42,490 Dat is echt wat deze feeds in. 856 00:39:42,490 --> 00:39:46,110 >> Dus CSS is gewoon een manier om dingen te laten kijken mooi. 857 00:39:46,110 --> 00:39:50,500 De dingen die hier, net als lichaam en #title en .info, 858 00:39:50,500 --> 00:39:54,340 deze zijn selectoren en welke genoemd ze doen is dat ze specifieke dingen te selecteren 859 00:39:54,340 --> 00:39:59,260 binnen uw HTML-bestand en toe te passen welke stijl, 860 00:39:59,260 --> 00:40:04,090 wat voor soort dingen die je wilt, dat specifieke element van uw web- 861 00:40:04,090 --> 00:40:04,590 pagina. 862 00:40:04,590 --> 00:40:08,820 Dus hier hebben we een achtergrond kleur en een kleur 863 00:40:08,820 --> 00:40:12,450 en een lettertype dat wordt toegepast op wat in het lichaam. 864 00:40:12,450 --> 00:40:15,530 Dus als we keken hier terug, het zou niet voor de titel. 865 00:40:15,530 --> 00:40:22,340 Het zou alleen gelden voor wat in deze lichaamsdelen selectors, OK? 866 00:40:22,340 --> 00:40:25,250 >> Met titel hier, dit is zal hetzelfde zijn, 867 00:40:25,250 --> 00:40:28,410 de kleur van de tekst het zijn blauw is alleen maar 868 00:40:28,410 --> 00:40:33,870 te beïnvloeden wat er binnen de titel selectors. 869 00:40:33,870 --> 00:40:36,580 Evenals info hier, De tekst zal worden roze, 870 00:40:36,580 --> 00:40:38,600 wat de info, dat is hier. 871 00:40:38,600 --> 00:40:40,860 Dus het enige dat roze op deze pagina zou zijn 872 00:40:40,860 --> 00:40:44,100 is de datum, maandag 17 november, 2014. 873 00:40:44,100 --> 00:40:48,770 OK, dus CSS is gewoon een manier om meer controle over-- ja? 874 00:40:48,770 --> 00:40:51,850 >> Publiek: Waarom moet je om de hash met titel gebruiken? 875 00:40:51,850 --> 00:40:55,170 >> HANNAH: Volgende dia, beloofd! 876 00:40:55,170 --> 00:40:56,810 We komen er wel. 877 00:40:56,810 --> 00:40:59,830 Dus dit is de reden waarom we moeten hash gebruiken. 878 00:40:59,830 --> 00:41:03,429 Dus selectors nemen op drie belangrijke vormen die we praten met jullie over. 879 00:41:03,429 --> 00:41:05,595 Ik fyou meer wilt weten, er is genoeg die er zijn. 880 00:41:05,595 --> 00:41:07,540 Er is grote CSS documentatie. 881 00:41:07,540 --> 00:41:12,680 Er is een tag naam, die te maken heeft met alleen je normale-tags in HTML. 882 00:41:12,680 --> 00:41:17,210 Dus h1, p, div, h2, dat soort dingen. 883 00:41:17,210 --> 00:41:20,320 En we kunnen alleen de naam die zo is. 884 00:41:20,320 --> 00:41:22,650 Dus als we hier zien met lichaam, het is een normale tag. 885 00:41:22,650 --> 00:41:26,660 Dus we kunnen gewoon lichaam wanneer we hebben het hier in onze CSS-bestand. 886 00:41:26,660 --> 00:41:29,730 >> Met de titel, de hele reden dat we hebben deze hash is hebben we wat 887 00:41:29,730 --> 00:41:31,010 als een ID. 888 00:41:31,010 --> 00:41:35,400 Dus een ID moet altijd uniek binnen uw HTML-pagina 889 00:41:35,400 --> 00:41:37,930 zodat wanneer u bent verwijzend naar het, u 890 00:41:37,930 --> 00:41:41,990 weet dat je alleen verwijzen om één specifiek ding. 891 00:41:41,990 --> 00:41:46,270 Dus in dit geval hier, met onze h1 hier, CS 50 beoordeling sessie, 892 00:41:46,270 --> 00:41:47,810 we hebben een id van de titel. 893 00:41:47,810 --> 00:41:54,280 Dus om gewoon te verwijzen naar die stuk van onze HTML, doen we een hash titel. 894 00:41:54,280 --> 00:41:58,080 Gewoon door afspraak worden IDs aangewezen met een hekje in de voorkant van hen. 895 00:41:58,080 --> 00:42:01,650 Evenzo zien we info hier is een klasse. 896 00:42:01,650 --> 00:42:06,070 En zo klasse met CSS is aangewezen als een stip klasse 897 00:42:06,070 --> 00:42:08,895 of dot wat die klasse is. 898 00:42:08,895 --> 00:42:10,850 Dus in dit geval hier, het is info. 899 00:42:10,850 --> 00:42:13,090 >> Dus ik neem het terug. 900 00:42:13,090 --> 00:42:16,200 Beide zou roze voor onze CSS hier 901 00:42:16,200 --> 00:42:18,430 want ze hebben allebei een klasse van informatie. 902 00:42:18,430 --> 00:42:23,070 En in onze CSS-bestand, hebben wij aangewezen dat alles met een klasse van info 903 00:42:23,070 --> 00:42:24,120 is roze. 904 00:42:24,120 --> 00:42:25,968 Heeft dat zin? 905 00:42:25,968 --> 00:42:27,435 Ja? 906 00:42:27,435 --> 00:42:30,731 >> Publiek: Als je om te maken alles in het lichaam wit, 907 00:42:30,731 --> 00:42:32,814 en dan probeer je te maken iets in het blauw, 908 00:42:32,814 --> 00:42:34,770 zou dit problemen veroorzaken? 909 00:42:34,770 --> 00:42:37,310 >> HANNAH: Dus CSS is cascading style sheets. 910 00:42:37,310 --> 00:42:40,730 Dus wat is de richting van de bodem zal prevaleren. 911 00:42:40,730 --> 00:42:44,080 Dus als je iets doet met het lichaam, en je alles wit te maken, 912 00:42:44,080 --> 00:42:49,300 en dan later op de titel te wijzigen of u de tekst in het lichaam te veranderen, 913 00:42:49,300 --> 00:42:50,560 overschrijft dat. 914 00:42:50,560 --> 00:42:55,360 Dus alles in de richting van de bodem zal prevaleren. 915 00:42:55,360 --> 00:42:56,730 Ja? 916 00:42:56,730 --> 00:42:59,627 >> Publiek: En id's uniek zijn, maar klassen kunnen meer zijn? 917 00:42:59,627 --> 00:43:00,210 HANNAH: Recht. 918 00:43:00,210 --> 00:43:06,320 Dus id moet uniek zijn, en klassen kunnen verwijzen naar zo veel dingen als je wilt. 919 00:43:06,320 --> 00:43:07,580 Een andere vragen? 920 00:43:07,580 --> 00:43:09,800 Ja. 921 00:43:09,800 --> 00:43:11,210 >> Publiek: [onverstaanbaar]. 922 00:43:11,210 --> 00:43:13,509 Ik vraag me af of dat maakt een verschil. 923 00:43:13,509 --> 00:43:15,217 HANNAH: Het spijt me, wat was de vraag? 924 00:43:15,217 --> 00:43:18,960 Publiek: Er is klein "F" en kapitaal "F." 925 00:43:18,960 --> 00:43:21,440 HANNAH: Dus het verschil tussen kleine "f" en kapitaal "F" 926 00:43:21,440 --> 00:43:22,606 zou geen verschil maken. 927 00:43:22,606 --> 00:43:26,330 Dus "f" zal zijn 15 in beide richtingen. 928 00:43:26,330 --> 00:43:28,130 Cool, iets anders? 929 00:43:28,130 --> 00:43:29,930 Iedereen goed, CSS? 930 00:43:29,930 --> 00:43:30,850 Ja? 931 00:43:30,850 --> 00:43:31,790 >> Publiek: Sorry. 932 00:43:31,790 --> 00:43:35,550 Kunt u een klasse en een ID? 933 00:43:35,550 --> 00:43:38,030 >> HANNAH: Ja, dat kan. 934 00:43:38,030 --> 00:43:40,420 Dingen kunnen zowel een klasse en een ID hebben. 935 00:43:40,420 --> 00:43:44,670 En ik beveel het testen van deze op uw eigen. 936 00:43:44,670 --> 00:43:50,480 CSS je gewoon het beste leren door het maken van iets, zeer eenvoudig webpagina, 937 00:43:50,480 --> 00:43:53,440 het opstellen van een aantal CSS, en net zien hoe ze met elkaar omgaan. 938 00:43:53,440 --> 00:43:56,970 En je zult krijgen een zeer goede, intuïtief gevoel voor hoe het werkt. 939 00:43:56,970 --> 00:43:58,810 >> OK, iedereen goed met CSS? 940 00:43:58,810 --> 00:44:01,280 Je bent helemaal gaat maken mooie websites met CSS nu. 941 00:44:01,280 --> 00:44:05,460 OK, best practices, net dingen in gedachten te houden, dingen 942 00:44:05,460 --> 00:44:09,810 dat-- dit is waarom we aanmeren u voor de ontwerper en wat al niet. 943 00:44:09,810 --> 00:44:11,820 Dus sluit al uw HTML-tags. 944 00:44:11,820 --> 00:44:14,840 Dus als je een open lichaam, moet er een nauw lichaam. 945 00:44:14,840 --> 00:44:18,180 Als u een open paragraaf, moet er een nauw paragraaf zijn. 946 00:44:18,180 --> 00:44:19,555 Controleer uw pagina valideert. 947 00:44:19,555 --> 00:44:23,330 Jullie moeten zeer vertrouwd zijn deze uit-p zeven 948 00:44:23,330 --> 00:44:26,350 met CS 50 finance met de W3 validator. 949 00:44:26,350 --> 00:44:28,340 En zoals ik al eerder zei, één van onze grote paradigma's 950 00:44:28,340 --> 00:44:33,780 wordt het scheiden van uw stijl met CSS uit je markup, dat is HTML. 951 00:44:33,780 --> 00:44:36,900 En dan, natuurlijk, we hebben deze grote XKCD hier beneden. 952 00:44:36,900 --> 00:44:38,280 Yay, comic relief! 953 00:44:38,280 --> 00:44:41,340 >> OK, TCP / IP. 954 00:44:41,340 --> 00:44:44,650 Tussen deze en HTTP, in principe zijn ze beide protocollen. 955 00:44:44,650 --> 00:44:46,810 Dus je kon gewoon denken van hen als een set van regels 956 00:44:46,810 --> 00:44:50,110 dat de manier waarop de dingen regeren bewegen over het internet. 957 00:44:50,110 --> 00:44:53,410 Dus transmission control protocol, of internet protocol, 958 00:44:53,410 --> 00:44:57,280 is gewoon een manier om ervoor te zorgen die gegevens krijgt waar het heen gaat 959 00:44:57,280 --> 00:45:00,030 en dat we weten of we ooit zijn ontbrekende gegevens. 960 00:45:00,030 --> 00:45:03,520 Dus als jullie denken terug naar college een paar weken geleden met David 961 00:45:03,520 --> 00:45:06,980 waar we hadden vier enveloppen, ze werden alle geteld als een van de vier, 962 00:45:06,980 --> 00:45:11,300 twee van de vier, drie van de vier, vier van vier, dit is gewoon een set van regels. 963 00:45:11,300 --> 00:45:13,830 Wij zeiden, OK, wanneer we verzenden meerdere pakket, 964 00:45:13,830 --> 00:45:16,610 we gaan naar nummer het met welk nummer het is 965 00:45:16,610 --> 00:45:19,040 en hoeveel totaal dat de gebruiker moet krijgen. 966 00:45:19,040 --> 00:45:22,540 >> En dit is gewoon te vertellen wie ontvangt de gegevens of deze 967 00:45:22,540 --> 00:45:26,120 alles of hebben gekregen indien iets verdwaald langs de weg. 968 00:45:26,120 --> 00:45:28,840 En ze moeten weer om vragen. 969 00:45:28,840 --> 00:45:31,140 Dit is eigenlijk gewoon een set van regels. 970 00:45:31,140 --> 00:45:33,650 Dat is hoe je kunt denken, OK? 971 00:45:33,650 --> 00:45:37,700 En ook, het geeft de poort, die jullie can-- Ik weet tijdens hoorcollege, 972 00:45:37,700 --> 00:45:39,170 ze had een hele lijst van de havens. 973 00:45:39,170 --> 00:45:41,630 Maar we hebben niet ze hier nu hebben. 974 00:45:41,630 --> 00:45:45,290 >> Dus hypertext transfer protocol is, nogmaals, het is een ander protocol. 975 00:45:45,290 --> 00:45:48,630 Dus het is een andere set van regels die bepalen, in dit geval, 976 00:45:48,630 --> 00:45:51,130 hoe hypertext wordt overgedragen. 977 00:45:51,130 --> 00:45:54,340 Zodat het net laat browsers webservers te spreken. 978 00:45:54,340 --> 00:45:56,910 En zoals we hier al zei, het is als menselijke handshaking. 979 00:45:56,910 --> 00:46:00,480 Het is gewoon een manier om te regeren hoe de webserver is 980 00:46:00,480 --> 00:46:02,690 gaan om te communiceren met uw browser. 981 00:46:02,690 --> 00:46:05,660 En we hebben maar een paar voorbeelden. 982 00:46:05,660 --> 00:46:09,100 We hebben een aantal verzoeken hier waar GET is de methode. 983 00:46:09,100 --> 00:46:13,760 We hebben HTTP 1.1 die is protocol versie voor ons. 984 00:46:13,760 --> 00:46:17,230 En dan, de gastheer, dat is wat we eigenlijk probeert te openen. 985 00:46:17,230 --> 00:46:21,800 En dan, zoals je hier ziet, we nog wat respons met deze 200 986 00:46:21,800 --> 00:46:25,032 OK als onze HTTP response code. 987 00:46:25,032 --> 00:46:27,240 We hebben een grote lijst ga ik om omhoog te trekken in één seconde 988 00:46:27,240 --> 00:46:29,430 dat jullie zou moeten kennen. 989 00:46:29,430 --> 00:46:35,750 En we hebben dit soort inhoud tekst / HTML, die gewoon zegt wat voor soort data 990 00:46:35,750 --> 00:46:39,990 worden we ontvangen van de server, OK? 991 00:46:39,990 --> 00:46:44,230 Deze gastheer en dit soort inhoud deel van de HTTP-headers. 992 00:46:44,230 --> 00:46:49,610 U kunt zo weinig of zo weinig als hebben voor de context van wat 993 00:46:49,610 --> 00:46:50,580 je mee bezig bent. 994 00:46:50,580 --> 00:46:53,371 Soms heb je een heleboel hebben informatie afkomstig van uw server. 995 00:46:53,371 --> 00:46:56,040 Misschien zijn ze het aanvragen van een veel van informatie van de gebruiker. 996 00:46:56,040 --> 00:46:57,600 Het is afhankelijk van de context. 997 00:46:57,600 --> 00:47:01,144 Als je kijkt naar CS 50 Study, er is veel meer op dat. 998 00:47:01,144 --> 00:47:03,060 Maar we hebben veel te krijgen door, dus ik ga 999 00:47:03,060 --> 00:47:05,760 om recht vooruit als go dat is OK met jullie? 1000 00:47:05,760 --> 00:47:07,960 Cool. 1001 00:47:07,960 --> 00:47:08,460 Wacht even. 1002 00:47:08,460 --> 00:47:11,182 Ik heb beslist dat hele lijst van-- he! 1003 00:47:11,182 --> 00:47:13,140 Ik weet niet waarom dit is helemaal hierheen. 1004 00:47:13,140 --> 00:47:15,660 Ik dacht dat ik letterlijk verplaatst terwijl ik was sitting-- 1005 00:47:15,660 --> 00:47:16,540 >> DAVIN: Wilt u om het te leren? 1006 00:47:16,540 --> 00:47:17,420 Of wil je dat ik om het te leren? 1007 00:47:17,420 --> 00:47:20,010 >> Publiek: Ik dacht dat we konden gewoon laten zien om mee te beginnen. 1008 00:47:20,010 --> 00:47:22,210 Ik bedoel, je kunt gaan in deze verder, maar 1009 00:47:22,210 --> 00:47:26,030 dacht dat het maakte meer zin omdat ik was het net over HTTP-status. 1010 00:47:26,030 --> 00:47:28,200 Dus hier is de hele lijst. 1011 00:47:28,200 --> 00:47:31,730 Ik denk dat wat er gaat gebeuren is Davin gaat later naar hen gaan. 1012 00:47:31,730 --> 00:47:35,330 Maar er is een hele lijst, een voorvertoning van de smaak te komen. 1013 00:47:35,330 --> 00:47:41,640 OK, we gaan blow-- dit gaat naar een PHP spoedcursus als geen ander zijn. 1014 00:47:41,640 --> 00:47:44,874 >> Dus PHP, hypertext preprocessor, het is een recursieve backronym, 1015 00:47:44,874 --> 00:47:46,540 wat betekent dat het was iets anders genoemd. 1016 00:47:46,540 --> 00:47:49,050 En toen waren ze als, dit niet echt zinvol. 1017 00:47:49,050 --> 00:47:52,210 Zodat ze gewoon de naam het-- en het was een acroniem, 1018 00:47:52,210 --> 00:47:54,840 zodat ze gewoon maakte het PHP hypertext preprocessor, die 1019 00:47:54,840 --> 00:47:55,980 gewoon geen zin. 1020 00:47:55,980 --> 00:47:57,714 Leuk verhaal. 1021 00:47:57,714 --> 00:47:58,880 Het is een programmeertaal. 1022 00:47:58,880 --> 00:48:02,360 Zo veel als ik benadrukken dat HTML is geen programmeertaal, 1023 00:48:02,360 --> 00:48:05,350 het is een opmaaktaal, PHP is een programmeertaal. 1024 00:48:05,350 --> 00:48:07,422 Hoe weet je dit is omdat er logica. 1025 00:48:07,422 --> 00:48:08,380 Er zijn conditionals. 1026 00:48:08,380 --> 00:48:12,750 We hebben variabelen, terwijl we hebben geen van die dingen in HTML. 1027 00:48:12,750 --> 00:48:16,960 >> Oké, dan hebben we deze kleine beetje hier, dat is als een voorproefje van PHP. 1028 00:48:16,960 --> 00:48:20,510 Dus basics, namen van variabelen beginnen met een dollarteken. 1029 00:48:20,510 --> 00:48:21,500 Veel mensen het leuk vinden. 1030 00:48:21,500 --> 00:48:22,371 Herinnert van ons geld. 1031 00:48:22,371 --> 00:48:22,995 Het is allemaal geweldig. 1032 00:48:22,995 --> 00:48:25,280 We willen allemaal PHP. 1033 00:48:25,280 --> 00:48:28,020 Zodat we niet opgeven van een typevariabele's meer. 1034 00:48:28,020 --> 00:48:29,995 Het wordt bepaald tijdens runtime. 1035 00:48:29,995 --> 00:48:32,710 1036 00:48:32,710 --> 00:48:35,890 De tolk zal net als zijn, oh, we zullen gewoon doorlopen, 1037 00:48:35,890 --> 00:48:39,565 en volgens de context we zullen zien wat soorten types 1038 00:48:39,565 --> 00:48:41,560 deze variabelen moeten hebben. 1039 00:48:41,560 --> 00:48:42,815 Er is geen hoofdfunctie. 1040 00:48:42,815 --> 00:48:43,690 Dingen zullen gewoon draaien. 1041 00:48:43,690 --> 00:48:47,851 Jullie met je importeren in je last-p ingesteld, zult u dit merken. 1042 00:48:47,851 --> 00:48:49,350 Er was niet echt een belangrijke functie. 1043 00:48:49,350 --> 00:48:52,070 Je schreef net wat je wilde gebeuren. 1044 00:48:52,070 --> 00:48:53,280 En het gebeurde gewoon. 1045 00:48:53,280 --> 00:48:56,760 Dus dat is PHP voor u. 1046 00:48:56,760 --> 00:48:59,180 >> Arrays zijn zeer vergelijkbaar. 1047 00:48:59,180 --> 00:49:01,270 We hebben nog steeds deze beugel. 1048 00:49:01,270 --> 00:49:05,940 Hier hebben we een aantal variabele riep arr, en het is gelijk 1049 00:49:05,940 --> 00:49:08,540 to-- hebben we onze normale haakjesnotering. 1050 00:49:08,540 --> 00:49:10,630 En we hebben een aantal belangrijke waarde. 1051 00:49:10,630 --> 00:49:14,630 En het grote verschil tussen C en PHP arrays 1052 00:49:14,630 --> 00:49:19,330 is dat we dit associate-- kunnen hebben kunnen we waarden koppelen aan toetsen. 1053 00:49:19,330 --> 00:49:22,440 Dus in plaats van enkel het hebben van een array die wordt geïndexeerd 1054 00:49:22,440 --> 00:49:26,630 door het aantal of de positie van dat element in de array, 1055 00:49:26,630 --> 00:49:29,060 We kunnen nu associëren met een sleutel. 1056 00:49:29,060 --> 00:49:36,700 Waar we kunnen zeggen, OK, ik wil wat waarde wordt geassocieerd met fruit. 1057 00:49:36,700 --> 00:49:39,280 En misschien hebben we fruit ging naar banaan. 1058 00:49:39,280 --> 00:49:41,760 Dus het zou banaan aan ons te retourneren. 1059 00:49:41,760 --> 00:49:44,100 >> Maar in principe, de meest krachtig ding over dit 1060 00:49:44,100 --> 00:49:47,960 is dat als jullie denken aan de demo uit lezing waar we in principe 1061 00:49:47,960 --> 00:49:53,050 herschreef speller in PHP, en het was-- lookup was eigenlijk alleen maar wilt, 1062 00:49:53,050 --> 00:49:55,007 Deze toets bestaat? 1063 00:49:55,007 --> 00:49:56,590 Dat is echt een soort van de kracht ervan. 1064 00:49:56,590 --> 00:49:58,560 Je hoeft niet te herhalen door je array. 1065 00:49:58,560 --> 00:50:00,311 U hoeft niet te weten wat ruimte is in. 1066 00:50:00,311 --> 00:50:01,976 Het kan aan het begin of einde. 1067 00:50:01,976 --> 00:50:04,790 Zolang je de sleutel kennen dat is gekoppeld aan de waarde, 1068 00:50:04,790 --> 00:50:09,740 PHP kan gewoon spugen die waarde meteen weer uit op je, OK? 1069 00:50:09,740 --> 00:50:12,960 >> En dan ook gewoon hebben alleen maar omdat we 1070 00:50:12,960 --> 00:50:16,750 kunnen belangrijke waarde paren hebben betekent niet dat je hoeft te doen. 1071 00:50:16,750 --> 00:50:19,180 U kunt ook gewoon maken een normale serie zoals hier, 1072 00:50:19,180 --> 00:50:21,540 op de bodem, waar het één, twee, drie, vier. 1073 00:50:21,540 --> 00:50:22,510 Dat zijn onze waarden. 1074 00:50:22,510 --> 00:50:25,320 En inderdaad, de sleutels zijn de indices. 1075 00:50:25,320 --> 00:50:26,830 Dus de sleutel voor een nul zou zijn. 1076 00:50:26,830 --> 00:50:28,610 De sleutel voor twee zou één. 1077 00:50:28,610 --> 00:50:31,910 Enzovoort enzovoort, tenzij je een sleutel expliciet toe te wijzen, 1078 00:50:31,910 --> 00:50:34,630 je zou kunnen veronderstellen dat de waarde is gewoon hun index. 1079 00:50:34,630 --> 00:50:37,290 Is dat zinvol voor iedereen? 1080 00:50:37,290 --> 00:50:38,070 Geen vragen? 1081 00:50:38,070 --> 00:50:38,930 Geweldig. 1082 00:50:38,930 --> 00:50:44,420 >> OK, foreach is een manier om doorloopt uw ​​arrays. 1083 00:50:44,420 --> 00:50:47,490 Dus we iets hebben hier, alleen de algemene structuur. 1084 00:50:47,490 --> 00:50:51,020 Dus foreach, de naam van onze array, als wat 1085 00:50:51,020 --> 00:50:53,930 je wilt elk gesprek element in de array, 1086 00:50:53,930 --> 00:50:57,270 en we kunnen iets doen met dat element of die waarde. 1087 00:50:57,270 --> 00:50:58,680 Dus we hebben hier een voorbeeld. 1088 00:50:58,680 --> 00:51:05,770 We hebben een associatieve array met beide ingangen 1089 00:51:05,770 --> 00:51:10,080 met bar wordt geassocieerd met foo en QHx wordt geassocieerd met baz. 1090 00:51:10,080 --> 00:51:12,180 Dus toetsen zijn foo en baz. 1091 00:51:12,180 --> 00:51:13,650 Waarden zijn bar en qux. 1092 00:51:13,650 --> 00:51:18,560 Dus foreach, hebben wij ons aanbod Hier, als de sleutelwaarde paar. 1093 00:51:18,560 --> 00:51:21,560 Dit stelt ons in staat om toegang te krijgen zowel de sleutel en waarde. 1094 00:51:21,560 --> 00:51:23,680 Misschien wilt u gewoon de waarde, waarbij 1095 00:51:23,680 --> 00:51:27,640 je kon gewoon doen, zoals arr als $ waarde, en dan moet je 1096 00:51:27,640 --> 00:51:30,640 zijn gewoon de toegang tot de waarde zoals u doorlopen. 1097 00:51:30,640 --> 00:51:32,600 Maar misschien, voor sommige reden, je de sleutel wilt, 1098 00:51:32,600 --> 00:51:35,460 dat is waarom ik koos dit voorbeeld plaats. 1099 00:51:35,460 --> 00:51:40,240 Dus je kunt eigenlijk te manipuleren sleutel en waarde in dit 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 >> Publiek: Als je wilde gewoon manipuleren van de sleutel, zou 1103 00:51:44,279 --> 00:51:45,910 je hoeft te doen foreach-- 1104 00:51:45,910 --> 00:51:47,360 >> ALISON: Recht. 1105 00:51:47,360 --> 00:51:50,560 Dus als je wilde manipuleren gewoon de sleutel, 1106 00:51:50,560 --> 00:51:53,680 je zou dit nog moeten syntax, want als je gewoon 1107 00:51:53,680 --> 00:51:56,930 hebben arr als iets, als een ding, het is 1108 00:51:56,930 --> 00:52:00,070 ga ervan uit dat u wilt de waarde, niet de sleutel. 1109 00:52:00,070 --> 00:52:06,780 Dus als je ooit gewoon net als arr zo, misschien is dit element $, 1110 00:52:06,780 --> 00:52:11,670 het gaat om te veronderstellen dat je vraagt voor slechts de waarde op elk punt. 1111 00:52:11,670 --> 00:52:13,879 Als u expliciet wilt iets te doen met de sleutel, 1112 00:52:13,879 --> 00:52:16,170 zelfs als je niet van plan om iets te doen met de waarde, 1113 00:52:16,170 --> 00:52:18,430 u deze structuur nodig dat we hier hebben 1114 00:52:18,430 --> 00:52:22,330 waar je expliciet vraagt voor zowel de sleutel en de waarde. 1115 00:52:22,330 --> 00:52:24,170 Grote vraag. 1116 00:52:24,170 --> 00:52:25,940 Nog iets anders? 1117 00:52:25,940 --> 00:52:27,490 Cool. 1118 00:52:27,490 --> 00:52:29,911 >> Oké, PHP en HTML. 1119 00:52:29,911 --> 00:52:31,410 Oh, we zijn terug naar-p stelde zeven opnieuw. 1120 00:52:31,410 --> 00:52:35,380 Dus dit moet een beetje bekend voor. 1121 00:52:35,380 --> 00:52:41,760 Dus dit is een aantal eenvoudige HTML-formulier dat heeft wat input naam van hello. 1122 00:52:41,760 --> 00:52:43,820 En we zien hebben we onze methode van GET. 1123 00:52:43,820 --> 00:52:47,430 En als we ons herinneren uit onze p-set, wanneer dit formulier wordt ingediend, 1124 00:52:47,430 --> 00:52:58,130 stuurt een array genaamd $ _GET dat heeft al deze inputs of variabelen van 1125 00:52:58,130 --> 00:53:00,490 de vorm die moet worden gemanipuleerd in onze PHP. 1126 00:53:00,490 --> 00:53:03,320 Dus in dit geval, de gebruiker zouden in hun naam te zetten. 1127 00:53:03,320 --> 00:53:04,370 Ze leggen het. 1128 00:53:04,370 --> 00:53:07,810 En we zien dat we nog wat scala hier. 1129 00:53:07,810 --> 00:53:09,080 Wij hebben onze GET array. 1130 00:53:09,080 --> 00:53:11,510 En we zijn met de toegang tot naam. 1131 00:53:11,510 --> 00:53:15,070 >> Dus dat zegt, OK, geef me de waarde die wordt geassocieerd met de naam, 1132 00:53:15,070 --> 00:53:16,550 noem zijnde de sleutel hier. 1133 00:53:16,550 --> 00:53:21,400 En die kaarten direct naar wat zeiden we onze inbreng naam is. 1134 00:53:21,400 --> 00:53:28,960 Dus dit was het geven u de sleutel tot wat gaat worden in de array hier. 1135 00:53:28,960 --> 00:53:31,220 Is dat zinvol voor iedereen? 1136 00:53:31,220 --> 00:53:32,070 Ja? 1137 00:53:32,070 --> 00:53:36,240 >> Publiek: Zegt de naam in GET verwijzen de paarse lijn in [onverstaanbaar]? 1138 00:53:36,240 --> 00:53:37,740 >> ALISON: Het verwijst naar deze hier. 1139 00:53:37,740 --> 00:53:43,840 Dus dit gebied hier, het verwijst naar de naam in. 1140 00:53:43,840 --> 00:53:47,800 Dus dit had kunnen worden genoemd zoals telefoonnummer, of wat dan ook. 1141 00:53:47,800 --> 00:53:51,790 Deze naam zegt eigenlijk, wat belt u op dit gebied? 1142 00:53:51,790 --> 00:53:53,600 Hoe ga je om verwijzen naar dit gebied? 1143 00:53:53,600 --> 00:53:57,670 En deze naam is eigenlijk willen, we zijn zeggen dit gebied heet naam. 1144 00:53:57,670 --> 00:53:59,224 Dat is hoe we gaan om toegang te krijgen. 1145 00:53:59,224 --> 00:54:02,070 >> Publiek: Dus is het leuk, ingangsnaam gelijk Bob, en-- 1146 00:54:02,070 --> 00:54:04,380 >> ALISON: Rechts, dan moet je zou Bob daar beneden te krijgen. 1147 00:54:04,380 --> 00:54:06,090 Precies. 1148 00:54:06,090 --> 00:54:07,800 Iedereen cool? 1149 00:54:07,800 --> 00:54:10,990 Oké, dus GET versus POST, Dit zijn de twee belangrijkste manieren 1150 00:54:10,990 --> 00:54:14,880 dat wij geven de gegevens in een HTTP-verzoek. 1151 00:54:14,880 --> 00:54:17,370 Jullie moeten zien beide hopelijk. 1152 00:54:17,370 --> 00:54:20,940 Dus met GET, de informatie wordt door de URL. 1153 00:54:20,940 --> 00:54:23,490 Dus als je ooit doet Google zoekopdrachten, YouTube, zult u 1154 00:54:23,490 --> 00:54:25,130 waarschijnlijk opvallen dat sommige vraagteken. 1155 00:54:25,130 --> 00:54:28,230 En dan, alle woorden dat zet je gewoon in. 1156 00:54:28,230 --> 00:54:31,410 En POST geeft de gegevens door in het HTTP-bericht. 1157 00:54:31,410 --> 00:54:36,922 Dus in tegenstelling tot GET, je soort van overwegen dat de gegevens voor de gebruiker verborgen. 1158 00:54:36,922 --> 00:54:38,630 Maar wat echt belangrijk om te begrijpen 1159 00:54:38,630 --> 00:54:44,040 is dat nog net zo onzeker als GET. 1160 00:54:44,040 --> 00:54:48,780 De analogie ik graag gebruik is als je hebt je bankrekeningnummer 1161 00:54:48,780 --> 00:54:52,795 en je schrijft het op de buitenkant van een envelop, dat is vrij onveilig. 1162 00:54:52,795 --> 00:54:55,920 Als je om het te schrijven op een stuk papier en zet het in de envelop, 1163 00:54:55,920 --> 00:54:58,850 het is nog steeds echt onveilig, omdat alles wat je hoeft te doen is open die up 1164 00:54:58,850 --> 00:55:03,480 en kijken naar de werkelijke inhoud van het bericht te zien dat. 1165 00:55:03,480 --> 00:55:08,310 Dus dit is "verborgen", en mensen willen denk dat het veilig is, maar het is echt niet. 1166 00:55:08,310 --> 00:55:11,000 En ik ben er zeker van Davin zal krijgen in dat er meer, misschien. 1167 00:55:11,000 --> 00:55:12,850 Maar het is een belangrijk onderscheid te maken 1168 00:55:12,850 --> 00:55:15,820 en iets echt goed te begrijpen. 1169 00:55:15,820 --> 00:55:19,220 >> OK, SQL, Structured Query Language. 1170 00:55:19,220 --> 00:55:22,220 Alle dingen die we hebben zo kort geleden gezien! 1171 00:55:22,220 --> 00:55:25,400 Dus het is eigenlijk gewoon ontworpen, natuurlijk, voor het beheren van gegevens. 1172 00:55:25,400 --> 00:55:30,560 Jullie hadden veel ervaring met dit in uw tafels met PHP MyAdmin. 1173 00:55:30,560 --> 00:55:34,100 En er zijn vier gemeenschappelijke queries dat we willen dat jullie weten. 1174 00:55:34,100 --> 00:55:37,304 Dus er is-update, insert, selecteren en te verwijderen. 1175 00:55:37,304 --> 00:55:38,970 Dus zorg ervoor dat je weet dat die echt goed. 1176 00:55:38,970 --> 00:55:40,960 We gaan om te gaan door hen echt snel. 1177 00:55:40,960 --> 00:55:44,340 >> Dus werken, echt, als wat je zou denken dat het doet, 1178 00:55:44,340 --> 00:55:46,740 het gewoon updates gegevens in uw database. 1179 00:55:46,740 --> 00:55:48,750 Dus we hebben hier een aantal voorbeeld. 1180 00:55:48,750 --> 00:55:53,310 Dit is de algemene structuur van een update query. 1181 00:55:53,310 --> 00:55:56,150 Zodat we de tabel bijwerken dat we het over hebben. 1182 00:55:56,150 --> 00:56:00,520 En we willen zeker stellen waarden aantal kolommen 1183 00:56:00,520 --> 00:56:02,600 gelijk aan specifieke waarden. 1184 00:56:02,600 --> 00:56:07,500 Dus dit gewoon werkt de tafel, het veranderen waarden in alle rijen in dit geval. 1185 00:56:07,500 --> 00:56:13,690 Dus in dit ene naar beneden hier, een feitelijke Zo hebben we insert-- sorry. 1186 00:56:13,690 --> 00:56:17,630 Die dia geavanceerde zonder mij te beseffen. 1187 00:56:17,630 --> 00:56:22,230 >> Dus deze updates tabel col1 gelijk om val1 waar huis gelijk "Currier." 1188 00:56:22,230 --> 00:56:25,300 Wat dit doet is hij alleen, alleen 1189 00:56:25,300 --> 00:56:28,130 actualiseert deze waarden in specifieke plaatsen. 1190 00:56:28,130 --> 00:56:32,300 Dus in deze eerste, zij deze verandert waarden voor alles in uw tafel, 1191 00:56:32,300 --> 00:56:32,860 OK? 1192 00:56:32,860 --> 00:56:35,820 Het gaat om dit te veranderen kolom voor elke binnenkomst, 1193 00:56:35,820 --> 00:56:37,020 voor elke rij. 1194 00:56:37,020 --> 00:56:40,840 Maar dit waar, je kon denk aan het als een qualifier. 1195 00:56:40,840 --> 00:56:44,020 Dus het is alleen maar gaat veranderen het op zeer specifieke plaatsen. 1196 00:56:44,020 --> 00:56:47,840 Dus in-p zeven, wanneer u misschien is de hoeveelheid contant geld bijgewerkt 1197 00:56:47,840 --> 00:56:53,050 of uw gebruikersnaam had, waarschijnlijk had je wat waar ID gelijk sessie-ID, toch? 1198 00:56:53,050 --> 00:56:55,280 >> Omdat je niet wilt verander de hoeveelheid contant geld 1199 00:56:55,280 --> 00:56:57,630 voor elke persoon die werd met behulp van uw website. 1200 00:56:57,630 --> 00:57:00,480 Je wilde om het te veranderen voor één bepaalde persoon, die persoon zijn 1201 00:57:00,480 --> 00:57:02,410 wie was het gebruik ervan in die tijd. 1202 00:57:02,410 --> 00:57:04,320 Rechts? 1203 00:57:04,320 --> 00:57:07,510 OK, dus plaatst, insert bepaalde waarden in tabellen. 1204 00:57:07,510 --> 00:57:11,650 Dit is hetzelfde als wanneer je bent het creëren van een nieuwe gebruiker. 1205 00:57:11,650 --> 00:57:14,240 De algemene structuur hier is in te voegen in welke tafel 1206 00:57:14,240 --> 00:57:15,680 we hebben het hier over. 1207 00:57:15,680 --> 00:57:18,910 Waarden, zijnde de waarden die we eigenlijk wilt invoegen. 1208 00:57:18,910 --> 00:57:23,060 OK, dus als we hier zien, we hebben invoegen in tabel. 1209 00:57:23,060 --> 00:57:27,790 Dit is specifiek kolommen hun waarden overeen. 1210 00:57:27,790 --> 00:57:29,940 Dus dit zegt, insert een nieuwe rij met 1211 00:57:29,940 --> 00:57:33,660 waarden val1 en val2 onder deze specifieke kolommen. 1212 00:57:33,660 --> 00:57:39,240 >> Dus misschien heb je alleen wilt vullen uit de helft van de dingen in deze rij. 1213 00:57:39,240 --> 00:57:41,150 Dat is wat dit deel hier laat je doen. 1214 00:57:41,150 --> 00:57:43,280 Het laat je eigenlijk bepalen welk deel. 1215 00:57:43,280 --> 00:57:44,244 Ja? 1216 00:57:44,244 --> 00:57:52,150 >> Publiek: Kan u alleen [onverstaanbaar] cellen in de rij [onhoorbaar] 1217 00:57:52,150 --> 00:57:55,000 >> ALISON: Als u alleen in te vullen bepaalde delen van uw rij, 1218 00:57:55,000 --> 00:57:57,480 de rest van die cellen zijn gewoon leeg. 1219 00:57:57,480 --> 00:58:02,730 1220 00:58:02,730 --> 00:58:05,660 Zolang je hen in staat te stellen leeg zijn, het is niet een probleem. 1221 00:58:05,660 --> 00:58:09,570 Als u probeert om ze te openen, het is ga een aantal lege element terug. 1222 00:58:09,570 --> 00:58:13,850 Maar het is belangrijk om te weten dat in bepaalde tabellen, 1223 00:58:13,850 --> 00:58:16,690 zij hebben om te mogen null zijn. 1224 00:58:16,690 --> 00:58:18,890 Je hebt misschien lopen in een probleem tijdens uw p-set 1225 00:58:18,890 --> 00:58:21,320 omdat we geen lieten van je waarden null zijn. 1226 00:58:21,320 --> 00:58:26,110 Maar je kunt een opgeven optionele waarde in uw tafel. 1227 00:58:26,110 --> 00:58:29,640 >> OK, selecteren, dus dit is gewoon een manier om 1228 00:58:29,640 --> 00:58:33,790 gegevens uit een tafel bij sommige id die u wilt. 1229 00:58:33,790 --> 00:58:37,990 Dus selecteer ster van tafel waar col is gelijk aan iets betekent gewoon, 1230 00:58:37,990 --> 00:58:43,820 geef me alle gegevens in verband waar bepaalde kolom waar. 1231 00:58:43,820 --> 00:58:49,020 Dus de ster in dit geval zal keren de hele rij aan u, OK? 1232 00:58:49,020 --> 00:58:54,880 >> En dan, selecteert u in dit geval ster uit tabel geeft je gewoon de hele tabel. 1233 00:58:54,880 --> 00:58:58,940 En dan, verwijderen natuurlijk, het is gewoon verwijdert de rij van de tabel. 1234 00:58:58,940 --> 00:59:01,320 Dus verwijderen van tafel, welke tafel we zijn 1235 00:59:01,320 --> 00:59:06,830 verwijzingen, waar een aantal specifieke identifier of een voorwaarde waar is. 1236 00:59:06,830 --> 00:59:07,720 Ja? 1237 00:59:07,720 --> 00:59:08,700 >> Publiek: Vraag. 1238 00:59:08,700 --> 00:59:10,699 Waarom bent u met behulp van dubbele citaten, en of u 1239 00:59:10,699 --> 00:59:13,600 doen dubbele aanhalingstekens of single citaten, het maakt een verschil maken? 1240 00:59:13,600 --> 00:59:18,235 >> ALISON: Dubbele aanhalingstekens of enkele aanhalingstekens maakt geen verschil in SQL te maken. 1241 00:59:18,235 --> 00:59:19,610 Ik dacht dat ik een andere vraag zag. 1242 00:59:19,610 --> 00:59:20,814 Ja? 1243 00:59:20,814 --> 00:59:25,070 >> Publiek: Is het niet van invloed op wat krijgt ontsnapt uit de query? 1244 00:59:25,070 --> 00:59:27,945 >> ALISON: Rob? 1245 00:59:27,945 --> 00:59:31,410 >> ROB: Wat bedoel je met ontsnapt uit de query? 1246 00:59:31,410 --> 00:59:36,870 >> Publiek: Als iemand een enkele query in de vorm van-- 1247 00:59:36,870 --> 00:59:39,862 >> ROB: Als iemand zet een enkel aanhalingsteken in, 1248 00:59:39,862 --> 00:59:43,560 vervolgens zo lang als je schoonmaken uw inbreng, dan maakt het niet uit. 1249 00:59:43,560 --> 00:59:46,205 Maar als je met een enkele offerte en u bent verkeerd 1250 00:59:46,205 --> 00:59:47,914 ontsnappen uw input, dan ja, die ze nodig hebben 1251 00:59:47,914 --> 00:59:51,079 om een ​​enkele offerte in te breken zetten uw code. als u dubbele aanhalingstekens te gebruiken, 1252 00:59:51,079 --> 00:59:53,580 moeten ze een dubbele te zetten citeren om uw code te breken. 1253 00:59:53,580 --> 00:59:56,163 Maar zolang je dingen ontsnappen correct, het maakt niet uit. 1254 00:59:56,163 --> 00:59:59,220 Het gaat gewoon om te worden vertaald om de juiste symbool toch. 1255 00:59:59,220 --> 01:00:02,332 >> Publiek: Wat betekent ontsnapping betekenen? 1256 01:00:02,332 --> 01:00:04,040 ALISON: Nou, als sanering en ontsnappen. 1257 01:00:04,040 --> 01:00:06,810 1258 01:00:06,810 --> 01:00:13,820 Het examen dat we hebben, het grote XKCD komisch dat ze omhoog te trekken, waar je hebt, 1259 01:00:13,820 --> 01:00:15,629 oh-- 1260 01:00:15,629 --> 01:00:16,670 ROB: Het is de laatste dia. 1261 01:00:16,670 --> 01:00:18,500 ALISON: Het is de laatste dia, echt? 1262 01:00:18,500 --> 01:00:20,200 O mijn god. 1263 01:00:20,200 --> 01:00:21,780 Daar gaan we, perfect. 1264 01:00:21,780 --> 01:00:27,900 OK, dus in principe, kunt u injecteren iets in deze SQL-query 1265 01:00:27,900 --> 01:00:30,560 wanneer het breekt uw code, of als David toonde 1266 01:00:30,560 --> 01:00:38,460 in de klas, als we een aantal enkelvoudige citaat 1 is gelijk aan 1 en als in onze code, 1267 01:00:38,460 --> 01:00:41,230 we gewoon rechtstreeks te kopiëren dat in, en wij hebben een eindigende enkel aanhalingsteken, 1268 01:00:41,230 --> 01:00:44,740 wat er gebeurt is we krijgen enkele uitdrukking die 1269 01:00:44,740 --> 01:00:48,680 evalueert naar waar dat zal laat iemand voeren onze database 1270 01:00:48,680 --> 01:00:51,720 en krijg gegevens die we wil niet dat ze te krijgen. 1271 01:00:51,720 --> 01:00:54,240 Dus zuiveren de ingangen betekent gewoon om ervoor te zorgen 1272 01:00:54,240 --> 01:00:57,680 dat we zijn ontsnapt deze personages en ze toe te wijzen 1273 01:00:57,680 --> 01:01:01,720 als chars en niet dingen dat moet worden toegestaan 1274 01:01:01,720 --> 01:01:04,990 letterlijk te nemen als onze SQL-instructie. 1275 01:01:04,990 --> 01:01:09,980 >> Dus de grote ding dat we zeiden dat jullie moeten zijn met behulp van 1276 01:01:09,980 --> 01:01:13,650 waren HTML speciale tekens, dat is iets 1277 01:01:13,650 --> 01:01:15,730 dat je zou willen om een ​​kijkje te nemen. 1278 01:01:15,730 --> 01:01:17,240 OK, verwijderen. 1279 01:01:17,240 --> 01:01:19,450 Datatypes, zal dit allemaal online zijn. 1280 01:01:19,450 --> 01:01:23,510 Aangezien we 15 minuten hebben verlaten, ben ik gewoon om te gaan dwars door dit. 1281 01:01:23,510 --> 01:01:28,500 PHP en SQL, in principe is dit alleen hadden we een query functie die 1282 01:01:28,500 --> 01:01:31,520 bijgedragen tot de bescherming tegen deze kwaadaardige aanvallen. 1283 01:01:31,520 --> 01:01:33,970 Dus wanneer je gebruik maken van query, we waren om ervoor te zorgen 1284 01:01:33,970 --> 01:01:36,560 dat de dingen werden ontsmet en zo. 1285 01:01:36,560 --> 01:01:41,070 >> MVC is slechts een ontwerp paradigma, dus model, uitzicht, controller. 1286 01:01:41,070 --> 01:01:44,200 Het is gewoon een manier om dingen te houden mooi en splitsen op dezelfde manier 1287 01:01:44,200 --> 01:01:47,100 dat we de neiging om factor out code in functies. 1288 01:01:47,100 --> 01:01:53,390 Dit is slechts een webdesign kader die u toelaat om hetzelfde te doen. 1289 01:01:53,390 --> 01:01:54,760 Ik ga deze overslaan. 1290 01:01:54,760 --> 01:01:58,530 >> Dit is iets dat ik zou super comfortabel met zijn. 1291 01:01:58,530 --> 01:02:01,132 Het is een geweldige kleine tafel daar. 1292 01:02:01,132 --> 01:02:03,090 Het geeft je de functie voorbeeld van het model. 1293 01:02:03,090 --> 01:02:05,473 Ik ga gewoon doorheen, omdat ik echt willen Davin te kunnen praten. 1294 01:02:05,473 --> 01:02:07,140 Als u vragen heeft, aarzel dan niet. 1295 01:02:07,140 --> 01:02:07,931 Ik zal hier na te zijn. 1296 01:02:07,931 --> 01:02:10,360 Kom gewoon met me praten. 1297 01:02:10,360 --> 01:02:13,380 Met dat, we hebben HTTP-status. 1298 01:02:13,380 --> 01:02:16,270 En Davin's gaan blazen door deze in 15 minuten. 1299 01:02:16,270 --> 01:02:17,560 Dit gaat geweldig zijn. 1300 01:02:17,560 --> 01:02:18,893 >> DAVIN: OK. 1301 01:02:18,893 --> 01:02:20,312 Uh, je microfoon? 1302 01:02:20,312 --> 01:02:22,210 Yeah. 1303 01:02:22,210 --> 01:02:23,336 Sorry. 1304 01:02:23,336 --> 01:02:24,460 ALISON: Manier om voorbereid. 1305 01:02:24,460 --> 01:02:25,335 DAVIN: Nee, ik ben er klaar voor. 1306 01:02:25,335 --> 01:02:25,860 Ik ben klaar. 1307 01:02:25,860 --> 01:02:28,790 Laten we dit doen. 1308 01:02:28,790 --> 01:02:29,290 Het is klaar. 1309 01:02:29,290 --> 01:02:30,041 OK. 1310 01:02:30,041 --> 01:02:30,540 Sorry. 1311 01:02:30,540 --> 01:02:31,664 Ik gemorste koffie op mezelf. 1312 01:02:31,664 --> 01:02:36,037 1313 01:02:36,037 --> 01:02:38,210 Ik weet niet of ik ben meer overstuur dat ik dom kijken, 1314 01:02:38,210 --> 01:02:40,600 of dat ik geen koffie meer. 1315 01:02:40,600 --> 01:02:44,480 Hoe dan ook, gewoon een snelle aankondiging over het blad dat u jongens hebben. 1316 01:02:44,480 --> 01:02:47,994 Dus dit blad hebben jullie niet de officiële wat er op de quiz. 1317 01:02:47,994 --> 01:02:49,660 Dit is de officiële wat er op de quiz. 1318 01:02:49,660 --> 01:02:52,520 Ook op de website, we vertellen je, OK, dit zal zijn op de quiz. 1319 01:02:52,520 --> 01:02:55,020 Dus in de kleine spiekbriefje je hebt, niet officieel. 1320 01:02:55,020 --> 01:02:56,690 En er zijn fouten op. 1321 01:02:56,690 --> 01:03:01,490 Dus best niet alleen blindelings te gebruiken. 1322 01:03:01,490 --> 01:03:04,390 Dus ja, dat is dat. 1323 01:03:04,390 --> 01:03:05,980 Dus laten we in dit echt snel. 1324 01:03:05,980 --> 01:03:07,420 >> Dus HTTP-status. 1325 01:03:07,420 --> 01:03:10,430 Dus wat gebeurt er als de website, alles in orde is. 1326 01:03:10,430 --> 01:03:11,144 OK Everything's. 1327 01:03:11,144 --> 01:03:13,310 Alles komt terug naar u de manier waarop u dat wilt. 1328 01:03:13,310 --> 01:03:15,370 Je krijgt een 200 OK. 1329 01:03:15,370 --> 01:03:19,250 301, waar hebben we dat 301 eerder gezien? 1330 01:03:19,250 --> 01:03:20,890 Wacht, wat is er? 1331 01:03:20,890 --> 01:03:23,250 Sorry. 1332 01:03:23,250 --> 01:03:24,980 We zagen i tin lezing tijdens de beveiliging. 1333 01:03:24,980 --> 01:03:30,690 Dus tijdens de beveiliging, dus als David getypt in http en vervolgens probeerde te gaan naar cs50.net, 1334 01:03:30,690 --> 01:03:31,940 je gaat om te zien 301 verplaatst. 1335 01:03:31,940 --> 01:03:32,440 Waarom? 1336 01:03:32,440 --> 01:03:35,570 Omdat het gaat om te buigen u automatisch naar onze HTTPS. 1337 01:03:35,570 --> 01:03:38,649 >> Dus 301 verplaatst, gewoon het is eigenlijk een omleiding. 1338 01:03:38,649 --> 01:03:40,190 En je kunt denken als dit. 1339 01:03:40,190 --> 01:03:43,790 Elk van de statussen die beginnen met 2's, deze zijn als, OK, alles is OK. 1340 01:03:43,790 --> 01:03:46,530 Elk van de statussen die beginnen met 3, dat zijn omleiding. 1341 01:03:46,530 --> 01:03:49,571 Statussen die beginnen met 4, dat betekent er is een soort van client fout. 1342 01:03:49,571 --> 01:03:52,440 Statussen die beginnen met 5, dat is een soort van server error. 1343 01:03:52,440 --> 01:03:54,680 Dus je soort breken de statussen als dat. 1344 01:03:54,680 --> 01:03:59,120 Dus 304 niet gewijzigd, zodat in uw server.c p-sets, dus laten we zeggen dat je 1345 01:03:59,120 --> 01:04:00,600 geladen cat.html. 1346 01:04:00,600 --> 01:04:03,360 Alles komt terug, je krijgt 200s, OK, geweldig. 1347 01:04:03,360 --> 01:04:04,540 >> Laten we zeggen dat je het ververst. 1348 01:04:04,540 --> 01:04:07,310 Nou, in die cat.html, heb je een JPEG. 1349 01:04:07,310 --> 01:04:09,520 Nou, dat JPEG is niet gaat krijgen herladen. 1350 01:04:09,520 --> 01:04:12,140 Je gaat niet naar een andere plaatsen GET verzoek naar de server, 1351 01:04:12,140 --> 01:04:13,980 en dan al die informatie terug te krijgen. 1352 01:04:13,980 --> 01:04:17,560 Het gaat gewoon be-- dat imago is gaat worden in de cache op uw machine. 1353 01:04:17,560 --> 01:04:19,540 En zo dat het zal een 304. 1354 01:04:19,540 --> 01:04:20,720 Dus het is niet gewijzigd. 1355 01:04:20,720 --> 01:04:24,600 Als je dan sluiten uit, duidelijke koekjes, en vernieuw 1356 01:04:24,600 --> 01:04:27,490 en proberen om die pagina te laden nogmaals, je gaat naar 200s zien. 1357 01:04:27,490 --> 01:04:28,910 Je bent niet van plan om te zien dat 304. 1358 01:04:28,910 --> 01:04:32,340 >> 400, slechte verzoek, echte snel, net als u 1359 01:04:32,340 --> 01:04:34,880 gingen een stuur JSON object naar de server 1360 01:04:34,880 --> 01:04:38,090 en uw JSON object was onjuist, je zult zoiets zien. 1361 01:04:38,090 --> 01:04:39,000 403, verboden. 1362 01:04:39,000 --> 01:04:40,330 Wanneer zou u een verboden? 1363 01:04:40,330 --> 01:04:41,394 Waarschijnlijk Waarschijnlijk? 1364 01:04:41,394 --> 01:04:42,060 Publiek: Chmod. 1365 01:04:42,060 --> 01:04:42,950 DAVIN: Chmod, ja. 1366 01:04:42,950 --> 01:04:44,730 Dus je hebt niet ingesteld permissies correct. 1367 01:04:44,730 --> 01:04:45,577 404 niet gevonden. 1368 01:04:45,577 --> 01:04:46,410 Het is er gewoon niet. 1369 01:04:46,410 --> 01:04:48,670 Dus als je typt in de verkeerde URL. 1370 01:04:48,670 --> 01:04:53,500 500, internal server error, de server Waarschijnlijk werd niet correct geconfigureerd. 1371 01:04:53,500 --> 01:04:56,260 Iets wat niet op uw einde, maar iets op de server kant. 1372 01:04:56,260 --> 01:04:57,240 En 503? 1373 01:04:57,240 --> 01:04:59,502 Veel mensen zagen 503s in de laatste p-set. 1374 01:04:59,502 --> 01:05:00,460 Wanneer zou dat gebeuren? 1375 01:05:00,460 --> 01:05:04,180 1376 01:05:04,180 --> 01:05:05,660 Ik hoorde gefluister. 1377 01:05:05,660 --> 01:05:07,767 >> Publiek: Wanneer Google besluit je bent een robot. 1378 01:05:07,767 --> 01:05:10,350 DAVIN: Ja, wanneer Google beslist je bent een robot, je krijgt 503s. 1379 01:05:10,350 --> 01:05:11,560 Dus dat is een overbelasting. 1380 01:05:11,560 --> 01:05:14,620 Als je hebt aangevraagd bij de server te veel, het is meestal tijdelijk. 1381 01:05:14,620 --> 01:05:15,560 En de meesten van jullie opgevallen. 1382 01:05:15,560 --> 01:05:16,185 Dus je zag 503. 1383 01:05:16,185 --> 01:05:19,282 Je zou een beetje hebben genomen pauze, toen ging de 503s weg, 1384 01:05:19,282 --> 01:05:20,490 en alles was in orde. 1385 01:05:20,490 --> 01:05:26,640 >> GABE: Real snelle, wanneer doen jullie krijgen 500 in waarschijnlijk dit laatste probleem te stellen? 1386 01:05:26,640 --> 01:05:27,954 Ja? 1387 01:05:27,954 --> 01:05:30,906 >> Publiek: Meestal als de server een bestand misplaatst 1388 01:05:30,906 --> 01:05:34,650 of [onverstaanbaar] hun machine [onverstaanbaar]. 1389 01:05:34,650 --> 01:05:38,870 >> GABE: Dus is het misschien een configuratie probleem in je PHP op uw server. 1390 01:05:38,870 --> 01:05:42,250 Maar het zou wel eens iets zijn als een puntkomma die uw aanvragen. 1391 01:05:42,250 --> 01:05:44,130 Als u typt PHP, sommige onjuiste syntaxis 1392 01:05:44,130 --> 01:05:46,000 misschien krijg je zoiets. 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 je dat ik gewoon omhoog doen tot AJAX? 1396 01:05:51,180 --> 01:05:52,950 >> GABE: [onverstaanbaar]. 1397 01:05:52,950 --> 01:05:53,450 DAVIN: OK. 1398 01:05:53,450 --> 01:05:54,230 Dus wat is het DOM? 1399 01:05:54,230 --> 01:05:55,290 Wat betekent DOM voor staan? 1400 01:05:55,290 --> 01:05:56,990 >> Publiek: Document Object Model. 1401 01:05:56,990 --> 01:05:57,490 DAVIN: Nice. 1402 01:05:57,490 --> 01:06:00,775 En waarom hebben we het leuk? 1403 01:06:00,775 --> 01:06:02,670 Geweldig. 1404 01:06:02,670 --> 01:06:06,651 Rechts, zodat het net laat ons toe om de toegang de HTML, toegang tot onze pagina zeer snel. 1405 01:06:06,651 --> 01:06:07,150 Waarom? 1406 01:06:07,150 --> 01:06:09,980 Omdat we behandelen onze pagina, het behandelen van onze HTML-tags, 1407 01:06:09,980 --> 01:06:11,730 het behandelen van alles alsof ze objecten. 1408 01:06:11,730 --> 01:06:13,710 Als we ze nu te behandelen alsof ze objecten, wat kunnen we doen? 1409 01:06:13,710 --> 01:06:15,210 Nou, we kunnen functies een beroep op hen. 1410 01:06:15,210 --> 01:06:16,460 En dit is belangrijk waarom? 1411 01:06:16,460 --> 01:06:19,200 Nou, omdat we gaan gebruiken JavaScript om onze HTML te werken, 1412 01:06:19,200 --> 01:06:20,500 actualiseert deze objecten. 1413 01:06:20,500 --> 01:06:23,869 Dus als we ze behandelen als objecten, kunnen we dan bellen functies op hen. 1414 01:06:23,869 --> 01:06:26,660 Ik ben van plan om in deze een beetje meer wanneer ik in JavaScript, 1415 01:06:26,660 --> 01:06:30,510 maar je hebt al gezien als document.getElementById. 1416 01:06:30,510 --> 01:06:32,870 Dus document is uw element, krijg element door ID, 1417 01:06:32,870 --> 01:06:35,087 dus je gaat kijken voor sommige ID in een HTML-tag. 1418 01:06:35,087 --> 01:06:36,920 En dan kan je doen iets anders dat. 1419 01:06:36,920 --> 01:06:40,089 Bijvoorbeeld, als document.body, dan kunt u toevoegen kind. 1420 01:06:40,089 --> 01:06:41,630 Dus je gaat om het document te vinden. 1421 01:06:41,630 --> 01:06:42,340 U hebt het document. 1422 01:06:42,340 --> 01:06:43,629 Je gaat naar het lichaam te vinden. 1423 01:06:43,629 --> 01:06:44,420 Je vond het lichaam. 1424 01:06:44,420 --> 01:06:46,545 En dan, je gaat noemen een functie op. 1425 01:06:46,545 --> 01:06:50,312 Dus voeg kind, en je kunt toevoegen wat HTML op het uiteinde in je lichaam. 1426 01:06:50,312 --> 01:06:52,520 Dus eigenlijk, je bent gewoon behandelen het als een object. 1427 01:06:52,520 --> 01:06:54,515 Je bent het behandelen van HTML tags zoals een object. 1428 01:06:54,515 --> 01:06:57,071 En het maakt het zeer eenvoudig en snel te gaan via hen. 1429 01:06:57,071 --> 01:06:59,070 Maar het laat je ook om functies aan te roepen op hen 1430 01:06:59,070 --> 01:07:04,410 dus je kunt manipuleren en verander de elementen. 1431 01:07:04,410 --> 01:07:10,162 >> GABE: Gezien dit, waarom is JavaScript dergelijke een leuke taal om te communiceren met HTML? 1432 01:07:10,162 --> 01:07:12,870 Kansen zijn, wanneer mensen werden kiezen De taal van de browser, 1433 01:07:12,870 --> 01:07:14,990 voor client-side, Javascript is echt leuk, 1434 01:07:14,990 --> 01:07:16,765 het is echt goed in het omgaan met objecten. 1435 01:07:16,765 --> 01:07:20,620 En de objecten zijn soort graag de voorwerpen die in de HTML verschijnen 1436 01:07:20,620 --> 01:07:23,940 dus het is heel gemakkelijk voor JavaScript om dat soort behandeling doen. 1437 01:07:23,940 --> 01:07:24,440 DAVIN: Nice. 1438 01:07:24,440 --> 01:07:25,670 Dus hier is slechts een voorbeeld. 1439 01:07:25,670 --> 01:07:29,020 Dus ik denk dat op quiz van vorig jaar, of misschien twee jaar geleden, hebben we 1440 01:07:29,020 --> 01:07:30,840 vroeg je om een ​​boom te creëren. 1441 01:07:30,840 --> 01:07:32,660 Dus dit is precies wat je zou doen. 1442 01:07:32,660 --> 01:07:34,255 Dus je begint met een document. 1443 01:07:34,255 --> 01:07:36,130 En dan eigenlijk je kijk maar naar de labels. 1444 01:07:36,130 --> 01:07:38,100 Dus als je kijkt, we beginnen met een HTML-tag. 1445 01:07:38,100 --> 01:07:41,660 En dan, aanwijzingen over hoe je je doen dit op basis van de insprong. 1446 01:07:41,660 --> 01:07:43,870 Dus hoofd soort takken af. 1447 01:07:43,870 --> 01:07:46,242 In het hoofd, hebben we andere tag voor de titel. 1448 01:07:46,242 --> 01:07:47,450 Dus dan hebben we een titel tag. 1449 01:07:47,450 --> 01:07:49,760 En binnen dat hebben we enkele string. 1450 01:07:49,760 --> 01:07:52,210 En dus hebben we vertegenwoordigen een string in een cirkel. 1451 01:07:52,210 --> 01:07:54,010 En alle tags zijn in vierkantjes. 1452 01:07:54,010 --> 01:07:56,270 >> En als je kijkt, als we Denk aan dit als een boom, 1453 01:07:56,270 --> 01:07:58,730 en laten we zeggen dat HTML is een ouder, dan hoofd en lichaam 1454 01:07:58,730 --> 01:07:59,772 gaan om broers en zussen zijn. 1455 01:07:59,772 --> 01:08:01,813 Ze zijn beiden gaat worden kinderen van die ouder. 1456 01:08:01,813 --> 01:08:03,620 Dus omdat ze beide broers en zussen, ze zijn 1457 01:08:03,620 --> 01:08:06,590 naar soort naast zijn elkaar in onze boom model. 1458 01:08:06,590 --> 01:08:08,590 En dan, u in principe doen precies hetzelfde. 1459 01:08:08,590 --> 01:08:13,512 Dus niet moeilijk, maar we hebben gevraagd vragen als dit eerder op de quiz. 1460 01:08:13,512 --> 01:08:15,220 GABE: Heeft iemand hebben vragen tot nu toe? 1461 01:08:15,220 --> 01:08:16,357 Is het 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, de goede dingen. 1465 01:08:21,600 --> 01:08:24,069 Dus JavaScript, wat is JavaScript? 1466 01:08:24,069 --> 01:08:28,370 Nou, is-- JavaScript het is ingewikkeld, maar deze 1467 01:08:28,370 --> 01:08:30,727 zijn enkele van de hoogtepunten die je in gedachten moet houden. 1468 01:08:30,727 --> 01:08:31,810 Ten eerste, het is losjes getypt. 1469 01:08:31,810 --> 01:08:33,529 Wat betekent dat? 1470 01:08:33,529 --> 01:08:35,596 Dus PHP was-- ja, wat is er? 1471 01:08:35,596 --> 01:08:39,854 >> Publiek: Je hoeft niet expliciet te staat wat voor soort variabele het is. 1472 01:08:39,854 --> 01:08:40,479 DAVIN: Perfect. 1473 01:08:40,479 --> 01:08:43,270 Dus hij zei dat je niet hoeft te expliciet het type variabele. 1474 01:08:43,270 --> 01:08:44,160 Zo is het precies. 1475 01:08:44,160 --> 01:08:49,700 Dus in C, als ik had int i gelijk is aan 50, vervolgens in PHP, het is net als dit, $ i, 1476 01:08:49,700 --> 01:08:50,550 is gelijk aan 50. 1477 01:08:50,550 --> 01:08:54,319 Toen in JavaScript, wat zou het gesprek zijn? 1478 01:08:54,319 --> 01:08:55,260 Var, toch? 1479 01:08:55,260 --> 01:08:56,566 Het zou zijn var i is gelijk aan 50. 1480 01:08:56,566 --> 01:08:58,649 Maar je hoeft niet zo te zijn zoals, OK, is dit een int. 1481 01:08:58,649 --> 01:09:00,350 OK, dit is een tekenreeks. 1482 01:09:00,350 --> 01:09:01,731 Geen behoefte om dat te doen. 1483 01:09:01,731 --> 01:09:02,939 Het is een geïnterpreteerde taal. 1484 01:09:02,939 --> 01:09:04,904 Dus wat betekent dat? 1485 01:09:04,904 --> 01:09:06,340 >> Publiek: Niet samengesteld. 1486 01:09:06,340 --> 01:09:10,470 >> DAVIN: Wat niet gecompileerd betekenen? 1487 01:09:10,470 --> 01:09:11,392 Yeah? 1488 01:09:11,392 --> 01:09:15,336 >> Publiek: Je hoeft niet om de code te herstructureren 1489 01:09:15,336 --> 01:09:18,294 om het klaar te krijgen de computer te draaien. 1490 01:09:18,294 --> 01:09:23,144 Het zojuist bij de uitvoering en de computer [onverstaanbaar]. 1491 01:09:23,144 --> 01:09:25,560 DAVIN: Ja, dus het gaat om passeren via een tolk. 1492 01:09:25,560 --> 01:09:26,750 Maar je hebt helemaal gelijk. 1493 01:09:26,750 --> 01:09:28,319 Dus je zult nooit om het te compileren, toch? 1494 01:09:28,319 --> 01:09:30,399 Als je aan het doen waren uw PHP en JavaScript-code, 1495 01:09:30,399 --> 01:09:31,365 je nooit opgeroepen compileren. 1496 01:09:31,365 --> 01:09:33,779 Je hebt nooit iets als geroepen maken of iets dergelijks. 1497 01:09:33,779 --> 01:09:34,800 Dat komt omdat het wordt geïnterpreteerd. 1498 01:09:34,800 --> 01:09:37,319 Dus elke keer als het gaat via de browser, het gaat door een tolk. 1499 01:09:37,319 --> 01:09:40,370 En dat gaat om het interpreteren net in real time meteen voor u. 1500 01:09:40,370 --> 01:09:43,770 Dus wat zijn sommige positieven en negatieven het hebben van een geïnterpreteerde taal 1501 01:09:43,770 --> 01:09:45,258 en het hebben van een gecompileerde taal? 1502 01:09:45,258 --> 01:09:48,240 1503 01:09:48,240 --> 01:09:50,540 Dus compiling-- ja, wat is er? 1504 01:09:50,540 --> 01:09:52,444 >> PUBLIEK heeft: Uitgelegd is langzamer. 1505 01:09:52,444 --> 01:09:53,319 DAVIN: In welke zin? 1506 01:09:53,319 --> 01:09:57,167 1507 01:09:57,167 --> 01:09:59,091 >> Publiek: Nadat u compileren, hoeft u niet 1508 01:09:59,091 --> 01:10:04,400 geen extra stappen te doen om uit te voeren het, dat deze [onverstaanbaar]. 1509 01:10:04,400 --> 01:10:05,570 >> DAVIN: Rechts, perfect. 1510 01:10:05,570 --> 01:10:08,386 Dus wat je zegt is in feite dat compileren, 1511 01:10:08,386 --> 01:10:10,760 wanneer je compileren, heb je een veel kosten vooraf, toch? 1512 01:10:10,760 --> 01:10:11,760 Je gaat om het te compileren. 1513 01:10:11,760 --> 01:10:13,750 Maar nadat u het te compileren, de compiler gaat om het te optimaliseren. 1514 01:10:13,750 --> 01:10:14,840 Het gaat snel. 1515 01:10:14,840 --> 01:10:16,170 Het gaat in principe worden zo snel als het kan zijn. 1516 01:10:16,170 --> 01:10:18,830 Vertolking, je nooit hebben dat upfront kosten. 1517 01:10:18,830 --> 01:10:22,260 Integendeel, het gaat om iets langzamer te zijn elke keer dat je het interpreteren. 1518 01:10:22,260 --> 01:10:24,940 En je gaat te hebben om interpreteren elke keer weer. 1519 01:10:24,940 --> 01:10:27,114 Dus in plaats van deze eenmalige kosten, nu ben je 1520 01:10:27,114 --> 01:10:29,530 gaat te hebben om het te interpreteren elke keer dat de pagina. 1521 01:10:29,530 --> 01:10:31,890 >> Dus tolken zijn goed omdat je hoeft niet om het te compileren, 1522 01:10:31,890 --> 01:10:33,980 maar ze zijn slecht in dat iedere keer dat de pagina wordt geladen, het is 1523 01:10:33,980 --> 01:10:35,771 gaat te hebben om interpreteren JavaScript. 1524 01:10:35,771 --> 01:10:40,520 En het gaat om iets langzamer draaien dan als je om het te compileren. 1525 01:10:40,520 --> 01:10:43,044 Hiermee kunt u communicate-- oh, wacht. 1526 01:10:43,044 --> 01:10:44,960 Gebruikt om het manipuleren inhoud en het uiterlijk. 1527 01:10:44,960 --> 01:10:46,043 We hebben net gesproken over dat. 1528 01:10:46,043 --> 01:10:47,250 Het gebruikt de DOM. 1529 01:10:47,250 --> 01:10:49,930 AJAX, we krijgen in AJAX in een klein beetje. 1530 01:10:49,930 --> 01:10:51,520 En dan, het is client side. 1531 01:10:51,520 --> 01:10:53,110 Dus PHP is server side. 1532 01:10:53,110 --> 01:10:54,360 Javascript is client side. 1533 01:10:54,360 --> 01:10:57,780 Wat zijn positief dat? 1534 01:10:57,780 --> 01:10:58,280 Het zegt het. 1535 01:10:58,280 --> 01:11:01,480 1536 01:11:01,480 --> 01:11:02,780 Het is sneller, toch? 1537 01:11:02,780 --> 01:11:05,282 Omdat je niet hoeft to-- het is sneller. 1538 01:11:05,282 --> 01:11:07,490 Je hoeft niet te communiceren met een ander apparaat. 1539 01:11:07,490 --> 01:11:08,790 Als je gewoon op je client, je bent nooit 1540 01:11:08,790 --> 01:11:11,280 gaat te hebben om te gaan en zien wat er op de server 1541 01:11:11,280 --> 01:11:13,150 en dan verslag uit of iets dergelijks. 1542 01:11:13,150 --> 01:11:15,410 Dus client heeft de neiging om zijn een beetje sneller. 1543 01:11:15,410 --> 01:11:17,910 >> GABE: Ja, maar dit betekent niet dat PHP is 1544 01:11:17,910 --> 01:11:20,440 sneller dan JavaScript of iets dergelijks. 1545 01:11:20,440 --> 01:11:23,270 Ze lopen soort in dezelfde snelheid omdat ze beiden 1546 01:11:23,270 --> 01:11:24,490 geïnterpreteerde talen. 1547 01:11:24,490 --> 01:11:26,680 Het ding dat is langzaam hier is het verzoek. 1548 01:11:26,680 --> 01:11:28,870 Dus je bent eigenlijk aan de hand de hele weg naar Brazilië 1549 01:11:28,870 --> 01:11:31,460 om wat informatie te krijgen die daar woont. 1550 01:11:31,460 --> 01:11:34,590 Maar PHP en JavaScript, ze soort draaien in dezelfde snelheid. 1551 01:11:34,590 --> 01:11:37,930 Het is niet dat men sneller dan de andere. 1552 01:11:37,930 --> 01:11:40,600 Dit, ook, strikvraag hier. 1553 01:11:40,600 --> 01:11:47,338 Dus JavaScript wordt nooit machine code, waar of niet waar? 1554 01:11:47,338 --> 01:11:48,590 >> Publiek: Valse. 1555 01:11:48,590 --> 01:11:49,090 GABE: Valse. 1556 01:11:49,090 --> 01:11:51,298 Het moet de machine worden code omdat machine code is 1557 01:11:51,298 --> 01:11:53,210 het enige wat de machine begrijpt. 1558 01:11:53,210 --> 01:11:55,800 Ook al is het niet gecompileerd, het wordt nog steeds machinecode 1559 01:11:55,800 --> 01:11:59,120 omdat de tolk is gewoon een programma dat gaat regel voor regel 1560 01:11:59,120 --> 01:12:02,170 en transformeert die lijn in iets wat de computer begrijpt. 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 slechts een zeer fundamentele Hello World JavaScript-programma. 1565 01:12:12,890 --> 01:12:15,590 Dus ik weet niet if-- je dit hebt gezien. 1566 01:12:15,590 --> 01:12:17,630 Maar je hoeft alleen HTML hier. 1567 01:12:17,630 --> 01:12:21,020 En in plaats van het daadwerkelijk kunnen de JavaScript in het script-tags, 1568 01:12:21,020 --> 01:12:22,810 dus je zou normaal gesproken zet het in het hoofd. 1569 01:12:22,810 --> 01:12:24,030 Je hebt script-tags. 1570 01:12:24,030 --> 01:12:24,870 Je zet het daar neer. 1571 01:12:24,870 --> 01:12:28,350 Alles wat we hier hebben gedaan is dat we gekoppeld in-- dus we hebben verbonden in een JavaScript-bestand 1572 01:12:28,350 --> 01:12:29,137 zoals dit. 1573 01:12:29,137 --> 01:12:30,470 En je hebt alles gedaan, toch? 1574 01:12:30,470 --> 01:12:34,740 Dus als je met behulp van jQuery en underscore.js in de laatste p-set, 1575 01:12:34,740 --> 01:12:38,700 je geen tonnen code up hebben in je script-tags, in je hoofd. 1576 01:12:38,700 --> 01:12:41,415 Je kan dat doen, maar in plaats daarvan je bent gewoon te koppelen in. 1577 01:12:41,415 --> 01:12:43,540 En je bent te koppelen in net zoals je met CSS. 1578 01:12:43,540 --> 01:12:50,186 Zodat het net maakt het makkelijker om dit te lezen uw code is niet hetzelfde als 1000 regels lang 1579 01:12:50,186 --> 01:12:52,310 met tal van functies die je zou niet gaan gebruiken. 1580 01:12:52,310 --> 01:12:53,518 >> In plaats daarvan, je gewoon koppelen in. 1581 01:12:53,518 --> 01:12:55,050 Het compartmentalizes het. 1582 01:12:55,050 --> 01:13:00,110 Het is als het schrijven van een aantal header bestand, en Vervolgens waaronder die header file in C. 1583 01:13:00,110 --> 01:13:01,620 Denk aan het net als dit. 1584 01:13:01,620 --> 01:13:02,680 Dus wat heeft dit te doen? 1585 01:13:02,680 --> 01:13:04,560 Nou, dit gaat lopen. 1586 01:13:04,560 --> 01:13:05,410 Het gaat om te waarschuwen. 1587 01:13:05,410 --> 01:13:08,020 Dus je gaat een beetje te krijgen pop-up genoemd hallo wereld. 1588 01:13:08,020 --> 01:13:11,420 Snelle vraag, gewoon sanity check, zo zie je hier in het lichaam, 1589 01:13:11,420 --> 01:13:13,160 zeggen lichaam, HTML hier. 1590 01:13:13,160 --> 01:13:14,080 Wat komt eerst? 1591 01:13:14,080 --> 01:13:16,864 Zie ik het lichaam, HTML hier, of moet ik eerst zien de waarschuwing? 1592 01:13:16,864 --> 01:13:19,828 1593 01:13:19,828 --> 01:13:20,820 >> Publiek: Alert. 1594 01:13:20,820 --> 01:13:21,470 >> DAVIN: Recht. 1595 01:13:21,470 --> 01:13:22,110 Hij zegt alert. 1596 01:13:22,110 --> 01:13:22,610 Waarom? 1597 01:13:22,610 --> 01:13:24,470 >> Publiek: Omdat je gaan van boven naar beneden. 1598 01:13:24,470 --> 01:13:25,600 >> DAVIN: Ja. 1599 01:13:25,600 --> 01:13:26,100 Perfect. 1600 01:13:26,100 --> 01:13:29,207 Dus hij zegt, ga je van boven naar bodem, dat is absoluut correct. 1601 01:13:29,207 --> 01:13:30,790 Je gaat te gaan van boven naar beneden. 1602 01:13:30,790 --> 01:13:34,790 En in JavaScript, jQuery, heb je een functie die is net als onload, of bestellen, 1603 01:13:34,790 --> 01:13:38,030 en dat zegt, OK, wacht tot dit alles HTML is geladen. 1604 01:13:38,030 --> 01:13:39,580 En dan, bel de JavaScript. 1605 01:13:39,580 --> 01:13:42,190 Omdat we hier niet, het hebben dat allereerste ding dat gaat gebeuren 1606 01:13:42,190 --> 01:13:43,920 wordt dat het gaat om van boven naar beneden. 1607 01:13:43,920 --> 01:13:46,310 Het zal raken dat JS noemen, het gaat om te waarschuwen. 1608 01:13:46,310 --> 01:13:49,510 Na dat u op OK klikt, dat alarm gaat weg. 1609 01:13:49,510 --> 01:13:53,600 Dan het gaat om te laten zien u het lichaam HTML hier. 1610 01:13:53,600 --> 01:13:54,590 Nice. 1611 01:13:54,590 --> 01:14:00,880 >> OK, dus gewoon echt snel, het schrijven in JavaScript is super snel. 1612 01:14:00,880 --> 01:14:02,710 Om verklaren een variabele, var naam. 1613 01:14:02,710 --> 01:14:07,070 Dus in C, heb je int i, je hebt te verklaren wat voor soort het 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 We spraken over dit. 1617 01:14:09,630 --> 01:14:11,020 Oké, laten we gaan. 1618 01:14:11,020 --> 01:14:12,510 >> Loops, hetzelfde. 1619 01:14:12,510 --> 01:14:14,230 Hetzelfde. 1620 01:14:14,230 --> 01:14:18,165 Functie verklaringen, zodat net zoals je hebt gezien in C. 1621 01:14:18,165 --> 01:14:21,290 Het enige wat anders is dus als je krijgt om andere programmeertalen, 1622 01:14:21,290 --> 01:14:24,780 zoals wanneer je 51 volgend semester te nemen en je doet met OCaml, 1623 01:14:24,780 --> 01:14:26,690 je kunt omgaan met anonieme functies. 1624 01:14:26,690 --> 01:14:28,240 Dus dat is precies wat je hier hebt. 1625 01:14:28,240 --> 01:14:31,560 Dus je wilt in som te zetten, een soort van somwaarde. 1626 01:14:31,560 --> 01:14:33,870 Maar je zou het alleen moeten doen een keer. 1627 01:14:33,870 --> 01:14:37,310 Zodat u niet wilt functie aan te roepen Kortom, geef het een functie verklaring. 1628 01:14:37,310 --> 01:14:39,830 In plaats daarvan, je gewoon gebruiken als een anonieme functie. 1629 01:14:39,830 --> 01:14:42,469 En je hebt dit veel gezien. 1630 01:14:42,469 --> 01:14:44,510 U vindt een voorbeeld van te zien dit in een paar slides. 1631 01:14:44,510 --> 01:14:45,597 Ja, we zullen zien. 1632 01:14:45,597 --> 01:14:46,430 GABE: Goede vraag. 1633 01:14:46,430 --> 01:14:50,660 Wanneer zou u wilt gebruiken een anonieme functie hier? 1634 01:14:50,660 --> 01:14:54,111 Kortom, als je iets wilt, als een gebeurtenis, te gebeuren. 1635 01:14:54,111 --> 01:14:55,860 Dus wanneer de muis geklikt, bijvoorbeeld, 1636 01:14:55,860 --> 01:14:57,790 u wilt een functie genoemd te worden. 1637 01:14:57,790 --> 01:15:00,570 Dus u doorgeven aan het evenement handler, u doorgeven aan het evenement, 1638 01:15:00,570 --> 01:15:02,870 soort, de functie die u wilt worden genoemd. 1639 01:15:02,870 --> 01:15:04,710 En wat je voorbij is als eind 1640 01:15:04,710 --> 01:15:08,757 van de dag, maar een verwijzing naar die instructie, de functie. 1641 01:15:08,757 --> 01:15:11,090 Dus het is niet alsof je voorbij de volledige code, zoals 1642 01:15:11,090 --> 01:15:12,173 een pointer naar de functie. 1643 01:15:12,173 --> 01:15:17,871 En dan, als iemand klikt op de muis, dan is dat de functie wordt aangeroepen. 1644 01:15:17,871 --> 01:15:22,340 >> DAVIN: Arrays, zodat u hebben een scala verklaring. 1645 01:15:22,340 --> 01:15:23,990 Vervolgens een array om dingen zetten. 1646 01:15:23,990 --> 01:15:25,769 Echt snel, wat zal dit uitprinten? 1647 01:15:25,769 --> 01:15:27,060 Wat zal het derde element zijn? 1648 01:15:27,060 --> 01:15:31,470 1649 01:15:31,470 --> 01:15:32,450 >> Publiek: "JS". 1650 01:15:32,450 --> 01:15:33,940 >> DAVIN: Rechts, zou het "JS." 1651 01:15:33,940 --> 01:15:35,760 Wachten, ga terug. 1652 01:15:35,760 --> 01:15:37,100 Wat is de lengte? 1653 01:15:37,100 --> 01:15:38,117 >> Publiek: Drie. 1654 01:15:38,117 --> 01:15:38,950 DAVIN: Drie, toch? 1655 01:15:38,950 --> 01:15:40,210 Precies wat je denkt. 1656 01:15:40,210 --> 01:15:42,072 OK, nu gaan. 1657 01:15:42,072 --> 01:15:43,530 Arrays, kan je dingen aan toevoegen. 1658 01:15:43,530 --> 01:15:45,395 Dus je kunt verder gaan hun oorspronkelijke grenzen. 1659 01:15:45,395 --> 01:15:46,740 Gewoon iets om in gedachten te houden. 1660 01:15:46,740 --> 01:15:49,760 PHP, JavaScript, ze zijn een beetje beetje meer vergevingsgezind in termen van dingen 1661 01:15:49,760 --> 01:15:50,570 zoals dat. 1662 01:15:50,570 --> 01:15:54,260 Objecten, heel graag structs in C, heel veel 1663 01:15:54,260 --> 01:15:56,590 als associatieve arrays in PHP. 1664 01:15:56,590 --> 01:15:58,720 Je hebt al ervaring had met dit. 1665 01:15:58,720 --> 01:16:01,880 Dus JSON, wanneer je voorbij JSON heen en weer-p acht, 1666 01:16:01,880 --> 01:16:03,260 dat is uw object. 1667 01:16:03,260 --> 01:16:06,290 >> Dus ja, bijvoorbeeld, echt snel voorbeeld. 1668 01:16:06,290 --> 01:16:07,880 Hier is een object. 1669 01:16:07,880 --> 01:16:12,700 De manier waarop je deze referentie object, dus gewoon echt snel, 1670 01:16:12,700 --> 01:16:18,630 laten we zeggen dat ik wilde weten out, OK, wat is de cursus? 1671 01:16:18,630 --> 01:16:20,681 En zo het object naam hier is CS50. 1672 01:16:20,681 --> 01:16:23,180 En dan, als ik had een associatieve array, hoe zou ik dat doen? 1673 01:16:23,180 --> 01:16:24,580 Ik zal met behulp van een sleutel, toch? 1674 01:16:24,580 --> 01:16:26,030 Dus ik heb de naam van de array. 1675 01:16:26,030 --> 01:16:30,160 Ik heb beugel, citaten, sleutel, einde citaten, eind beugel, 1676 01:16:30,160 --> 01:16:33,610 en dat zal verwijzen dat element in mijn associatieve array. 1677 01:16:33,610 --> 01:16:37,646 Hoe kan ik verwezen Natuurlijk in mijn object? 1678 01:16:37,646 --> 01:16:39,170 Om het even wie weet? 1679 01:16:39,170 --> 01:16:40,622 >> Publiek: [onverstaanbaar]. 1680 01:16:40,622 --> 01:16:41,784 >> DAVIN: What's up? 1681 01:16:41,784 --> 01:16:42,700 Publiek: CS50.course. 1682 01:16:42,700 --> 01:16:43,510 DAVIN: Juist, ja. 1683 01:16:43,510 --> 01:16:45,320 Dus CS50.course. 1684 01:16:45,320 --> 01:16:48,770 Dus de manier waarop je dingen verwijzen in een JSON object is met een punt. 1685 01:16:48,770 --> 01:16:53,114 >> Publiek: U kunt ook scala syntax gebruiken. 1686 01:16:53,114 --> 01:16:54,050 >> DAVIN: OK, prima. 1687 01:16:54,050 --> 01:16:57,544 >> GABE: U kunt ook gebruik maken van CS50 beugel, touwtje, zoals aanhalingstekens. 1688 01:16:57,544 --> 01:16:59,210 Publiek: Ik denk dat het is identiek aan PHP. 1689 01:16:59,210 --> 01:17:00,293 GABE: Het is het zelfde ding. 1690 01:17:00,293 --> 01:17:02,487 DAVIN: Fijn! 1691 01:17:02,487 --> 01:17:03,945 Maar je zult zien dat andere plaatsen. 1692 01:17:03,945 --> 01:17:08,990 1693 01:17:08,990 --> 01:17:10,480 Ja, dus blijven gaan. 1694 01:17:10,480 --> 01:17:13,330 Dit is wat ik net zei. 1695 01:17:13,330 --> 01:17:17,840 Dus in een JavaScript jQuery voorbeeld. 1696 01:17:17,840 --> 01:17:19,440 Dus dit is mijn DOM, toch? 1697 01:17:19,440 --> 01:17:22,290 1698 01:17:22,290 --> 01:17:25,410 Echt snel, dus ik heb een hoofd, hello wereld, lichaam. 1699 01:17:25,410 --> 01:17:26,160 Ik heb een knop. 1700 01:17:26,160 --> 01:17:27,870 Het zegt "push me," dus ik wil duwen. 1701 01:17:27,870 --> 01:17:29,745 En ik wil iets doen wanneer het klikte. 1702 01:17:29,745 --> 01:17:31,220 Rechts naast. 1703 01:17:31,220 --> 01:17:34,630 >> Juist, dus dit is mijn JavaScript. 1704 01:17:34,630 --> 01:17:37,790 Dus jQuery is gewoon een eenvoudiger manier om JavaScript te schrijven. 1705 01:17:37,790 --> 01:17:40,920 Dus dit, en wat ik ga om te laten zien Tot volgend, gaat jQuery zijn, 1706 01:17:40,920 --> 01:17:41,930 identiek. 1707 01:17:41,930 --> 01:17:43,990 Dus zullen ze dezelfde dingen doen. 1708 01:17:43,990 --> 01:17:45,974 Gewoon jQuery heeft de neiging om een ​​beetje gemakkelijker. 1709 01:17:45,974 --> 01:17:47,140 Mensen hebben de neiging om het meer willen. 1710 01:17:47,140 --> 01:17:48,390 Het heeft veel functionaliteit. 1711 01:17:48,390 --> 01:17:49,830 Zodat mensen de neiging om jQuery te gebruiken. 1712 01:17:49,830 --> 01:17:53,270 U alle gebruikte jQuery in de laatste p-set. 1713 01:17:53,270 --> 01:17:54,270 Dus wat zal dit doen? 1714 01:17:54,270 --> 01:17:56,580 Wat zal dit JavaScript-- zo dit is gewoon JavaScript. 1715 01:17:56,580 --> 01:17:57,430 Wat zal dit doen? 1716 01:17:57,430 --> 01:18:00,600 1717 01:18:00,600 --> 01:18:03,450 Wat zal het doen? 1718 01:18:03,450 --> 01:18:04,890 >> Dus eerst, zie je raam onload. 1719 01:18:04,890 --> 01:18:05,390 Rechts? 1720 01:18:05,390 --> 01:18:06,640 Zodat we niet zien dat vóór. 1721 01:18:06,640 --> 01:18:09,380 Dus dit gaat te wachten totdat het gehele venster belastingen. 1722 01:18:09,380 --> 01:18:12,770 Dus het gaat om te wachten totdat de HTML, alle beelden load 1723 01:18:12,770 --> 01:18:13,770 voordat hij iets doet. 1724 01:18:13,770 --> 01:18:16,050 Dus laten we zeggen dat onze DOM geladen is. 1725 01:18:16,050 --> 01:18:17,270 Alles is er. 1726 01:18:17,270 --> 01:18:19,080 Dan wat er gaat gebeuren? 1727 01:18:19,080 --> 01:18:19,922 Yeah? 1728 01:18:19,922 --> 01:18:22,880 >> Publiek: Button verschijnt. 1729 01:18:22,880 --> 01:18:25,201 >> DAVIN: De knop is er al. 1730 01:18:25,201 --> 01:18:26,700 Ja, dus de knop al is. 1731 01:18:26,700 --> 01:18:31,190 Maar dit gaat zeggen, OK, als ik klik op de knop, 1732 01:18:31,190 --> 01:18:33,650 zodat de knop is al er, als dat HTML-tag. 1733 01:18:33,650 --> 01:18:35,980 Wachten, terug te gaan heel snel. 1734 01:18:35,980 --> 01:18:39,470 Deze tag recht hier is naar een knop reeds. 1735 01:18:39,470 --> 01:18:40,810 Er is al een knop. 1736 01:18:40,810 --> 01:18:44,120 Maar dan, de JavaScript- tag, exact hier, 1737 01:18:44,120 --> 01:18:46,160 het zegt, OK, ik wil naar element te krijgen door ID, 1738 01:18:46,160 --> 01:18:50,300 dus zoekknop gewoon zegt: OK, ik wil om deze variabele om die knop in kaart. 1739 01:18:50,300 --> 01:18:53,120 Zodat variabele is slechts een gemakkelijkere manier om toegang te krijgen tot die knop. 1740 01:18:53,120 --> 01:18:57,300 En ik zeg, OK, als ik dat klikt knop, dus als ik klik op dat element, 1741 01:18:57,300 --> 01:18:59,560 en dit element betreft op de knop, als ik erop klik, 1742 01:18:59,560 --> 01:19:00,875 dan wil ik een functie aan te roepen. 1743 01:19:00,875 --> 01:19:03,500 Hier is een van die anonieme functies hadden we het over. 1744 01:19:03,500 --> 01:19:04,840 >> Noem slechts enkele functie. 1745 01:19:04,840 --> 01:19:08,840 Binnen die functie, in principe iets wat we hebben veel, alert gezien. 1746 01:19:08,840 --> 01:19:10,477 U klikt op de knop zoeken. 1747 01:19:10,477 --> 01:19:12,060 Het gaat in principe een knop. 1748 01:19:12,060 --> 01:19:13,040 Je klikt het. 1749 01:19:13,040 --> 01:19:14,040 U krijgt dat alert. 1750 01:19:14,040 --> 01:19:14,850 X uit. 1751 01:19:14,850 --> 01:19:15,754 Dat is het. 1752 01:19:15,754 --> 01:19:16,254 Yeah? 1753 01:19:16,254 --> 01:19:21,980 >> Publiek: Dus als je het script [Onverstaanbaar], script-tag in je HTML? 1754 01:19:21,980 --> 01:19:24,300 >> DAVIN: U kunt het script zetten tag recht in het hoofd 1755 01:19:24,300 --> 01:19:30,667 want je hebt dit onload. 1756 01:19:30,667 --> 01:19:32,000 Het is ook dat u een klik. 1757 01:19:32,000 --> 01:19:34,166 Dus het gaat om te wachten totdat u klikt voor iets. 1758 01:19:34,166 --> 01:19:37,470 Maar onload is gewoon veilig te zijn, om ervoor te ervoor dat alles geladen in uw HTML 1759 01:19:37,470 --> 01:19:38,170 vooraf. 1760 01:19:38,170 --> 01:19:39,247 Yeah? 1761 01:19:39,247 --> 01:19:40,330 Je wilt iets zeggen? 1762 01:19:40,330 --> 01:19:41,080 >> GABE: [onverstaanbaar]. 1763 01:19:41,080 --> 01:19:42,485 DAVIN: Ja. 1764 01:19:42,485 --> 01:19:45,426 >> Publiek: Dus onload vermijdt definiëren van de knop variabele zoekopdracht 1765 01:19:45,426 --> 01:19:49,930 door gewoon te zeggen document.getElementById zoekknop dot [onverstaanbaar]. 1766 01:19:49,930 --> 01:19:52,320 >> DAVIN: Zeker, maar dan pees krijgt gewoon enorm. 1767 01:19:52,320 --> 01:19:55,553 Precies, dus dit is gewoon om maakt het makkelijker voor u, ja. 1768 01:19:55,553 --> 01:19:56,053 Ja? 1769 01:19:56,053 --> 01:19:57,886 >> Publiek: Waar hebben we creëren 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, er is. 1772 01:20:00,590 --> 01:20:02,094 Ja, er is, heb ik gecontroleerd. 1773 01:20:02,094 --> 01:20:03,710 >> GABE: Niet voor hen om de zorg over. 1774 01:20:03,710 --> 01:20:06,970 >> DAVIN: OK, dus ik ga om u toch te vertellen. 1775 01:20:06,970 --> 01:20:11,005 Dus eigenlijk, gewoon in het algemeen, dus window.onload wacht tot je DOM, alle 1776 01:20:11,005 --> 01:20:12,180 uw HTML, laadt. 1777 01:20:12,180 --> 01:20:13,513 Het wacht totdat uw beelden belasting. 1778 01:20:13,513 --> 01:20:14,930 Het wacht totdat alles ladingen. 1779 01:20:14,930 --> 01:20:18,410 document.ready, het is gewoon wacht tot je DOM ladingen. 1780 01:20:18,410 --> 01:20:22,190 Zodra de HTML is er allemaal, zodra uw DOM is er, begint te lopen. 1781 01:20:22,190 --> 01:20:23,400 Dat is het enige verschil. 1782 01:20:23,400 --> 01:20:24,700 >> GABE: Quick sanity check hier. 1783 01:20:24,700 --> 01:20:29,060 Dus dit kan soort te zien als een regel code, toch? 1784 01:20:29,060 --> 01:20:33,600 Want het is window.onload gelijk aan een heleboel dingen. 1785 01:20:33,600 --> 01:20:39,030 Als Javascript dit leest, waar of vals, wordt de functie uitgevoerd. 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 hier gebeurt, je bent gewoon passeren deze functie als een anonieme functies 1789 01:20:44,470 --> 01:20:45,300 naar window.onload. 1790 01:20:45,300 --> 01:20:48,480 En dan wanneer gaat het om daadwerkelijk te krijgen geëxecuteerd? 1791 01:20:48,480 --> 01:20:49,600 Wanneer het venster geladen. 1792 01:20:49,600 --> 01:20:50,420 Dat is een gebeurtenis. 1793 01:20:50,420 --> 01:20:52,460 Dus dat is jus t ding zijn we eerder over had, toch? 1794 01:20:52,460 --> 01:20:54,580 Dus wanneer het evenement gebeurt, de functie gebeurt. 1795 01:20:54,580 --> 01:20:55,746 Hetzelfde met de onclick. 1796 01:20:55,746 --> 01:20:59,510 1797 01:20:59,510 --> 01:21:03,130 >> DAVIN: OK, dus iemand nam weg de document.ready. 1798 01:21:03,130 --> 01:21:04,698 Maar dit zal de exacte same-- zijn 1799 01:21:04,698 --> 01:21:06,864 Publiek: Het dollarteken, dat is een document.ready. 1800 01:21:06,864 --> 01:21:07,710 Dat is een snelkoppeling. 1801 01:21:07,710 --> 01:21:08,501 >> DAVIN: Oh, dat is? 1802 01:21:08,501 --> 01:21:10,880 1803 01:21:10,880 --> 01:21:15,500 OK, dus dit middel document.ready, snelkoppeling. 1804 01:21:15,500 --> 01:21:19,660 Maar dit is hetzelfde als window.onload behalve dat weinig verschil 1805 01:21:19,660 --> 01:21:20,680 Ik vertelde u over. 1806 01:21:20,680 --> 01:21:21,870 En dit is jQuery. 1807 01:21:21,870 --> 01:21:25,190 Dus dit is exact dezelfde thing-- dit is JavaScript. 1808 01:21:25,190 --> 01:21:29,500 Dit is gewoon-- sommige mensen denken van het als een meer licht van gewicht, slank versie 1809 01:21:29,500 --> 01:21:32,370 dat heeft veel functionaliteit dat je waarschijnlijk zult gebruiken. 1810 01:21:32,370 --> 01:21:34,500 Dus dit doet precies hetzelfde. 1811 01:21:34,500 --> 01:21:37,110 >> Dus dingen naar soort wijzen. 1812 01:21:37,110 --> 01:21:40,364 Dus in het andere voorbeeld, we had document.getElementById, 1813 01:21:40,364 --> 01:21:42,280 dus moesten we deze lange snaar die gaat krijgen 1814 01:21:42,280 --> 01:21:44,290 het element door welke ID heeft. 1815 01:21:44,290 --> 01:21:46,470 Dat is vervangen door deze oproep hier. 1816 01:21:46,470 --> 01:21:50,860 Zo zie je het dollarteken, dan zie je citaat, hashtag. 1817 01:21:50,860 --> 01:21:52,370 Hashtag is altijd een selector. 1818 01:21:52,370 --> 01:21:54,730 Het zegt, OK, dit heeft te maken met een ID. 1819 01:21:54,730 --> 01:21:56,120 Wat is de selector voor een klasse? 1820 01:21:56,120 --> 01:21:57,190 >> Publiek: Dot. 1821 01:21:57,190 --> 01:21:57,960 >> DAVIN: Dot, rechts. 1822 01:21:57,960 --> 01:22:01,950 Als je gewoon gaat selecteer een tag, wat is het? 1823 01:22:01,950 --> 01:22:03,310 Het is gewoon de tag, precies. 1824 01:22:03,310 --> 01:22:05,560 En je zou kunnen gebruiken hier dat, als goed. 1825 01:22:05,560 --> 01:22:08,560 >> GABE: En op tag, bedoelen we als div, bijvoorbeeld, of het hoofd. 1826 01:22:08,560 --> 01:22:11,500 >> DAVIN: Of lichaam of p of iets dergelijks, ja. 1827 01:22:11,500 --> 01:22:14,390 Dus hier, OK, in plaats van te zeggen document.getElementById, 1828 01:22:14,390 --> 01:22:16,500 dit is gewoon precies hetzelfde. 1829 01:22:16,500 --> 01:22:17,990 Just in jQuery, het is korter. 1830 01:22:17,990 --> 01:22:19,860 Dus het is eenvoudiger. 1831 01:22:19,860 --> 01:22:23,420 Zo dan, niet meer onclick, klikt u op. 1832 01:22:23,420 --> 01:22:26,320 jQuery-functie, noemen deze functie. 1833 01:22:26,320 --> 01:22:27,580 Alert is exact dezelfde. 1834 01:22:27,580 --> 01:22:29,452 Dus het is een beetje kleinere, of iets 1835 01:22:29,452 --> 01:22:32,410 korter, een beetje bit-- mensen denken het is een beetje makkelijker om uit te schrijven, 1836 01:22:32,410 --> 01:22:34,600 een beetje makkelijker te begrijpen. 1837 01:22:34,600 --> 01:22:35,640 Maar dit is jQuery. 1838 01:22:35,640 --> 01:22:37,887 Veel mensen krijgen een beetje beetje in de war en ongerust 1839 01:22:37,887 --> 01:22:40,220 en ze denken, OK, jQuery is anders dan JavaScript. 1840 01:22:40,220 --> 01:22:42,136 Ik moet deze onthouden twee verschillende dingen. 1841 01:22:42,136 --> 01:22:42,740 Het is niet. 1842 01:22:42,740 --> 01:22:45,315 Ik bedoel, het is anders syntax. 1843 01:22:45,315 --> 01:22:46,970 Maar jQuery is JavaScript. 1844 01:22:46,970 --> 01:22:50,050 Het is gewoon een schijnbaar betere versie 1845 01:22:50,050 --> 01:22:51,967 kan gemakkelijker worden begrijpen dat mensen gebruiken. 1846 01:22:51,967 --> 01:22:53,716 GABE: Ja, te zijn eerlijk, dat dollarteken 1847 01:22:53,716 --> 01:22:57,240 die u ziet in jQuery, dat is gewoon de de naam van een functie die jQuery definieert. 1848 01:22:57,240 --> 01:22:58,614 Het hoeft niet iets speciaals hebben. 1849 01:22:58,614 --> 01:23:03,140 Is Het is gewoon de naam van een functie, net zoals je kon dollarteken definiëren. 1850 01:23:03,140 --> 01:23:05,670 >> DAVIN: Ja, dus sprak hierover. 1851 01:23:05,670 --> 01:23:06,680 Enkele nuttige dingen. 1852 01:23:06,680 --> 01:23:10,414 Ik was op zoek terug op het oude quizzen. 1853 01:23:10,414 --> 01:23:13,080 In de afgelopen paar quizzen, ze hebben moest dit soort dingen te gebruiken. 1854 01:23:13,080 --> 01:23:15,230 Dus document.ready, dus zorg ervoor dat alles is 1855 01:23:15,230 --> 01:23:17,410 voordat u geladen beginnen dingen te doen. 1856 01:23:17,410 --> 01:23:20,120 Selecteer een ID, of selecteer een klasse, het zou gewoon 1857 01:23:20,120 --> 01:23:24,020 zijn citaat dot wat klasse, einde citaat. 1858 01:23:24,020 --> 01:23:26,580 Indienen, dus als je het indienen van een formulier en oproep 1859 01:23:26,580 --> 01:23:28,830 deze functie nadat het formulier indient. 1860 01:23:28,830 --> 01:23:34,210 Waarde, dus laten we zeggen dat ik had een vorm indiening, zoals een gebruikersnaam, een e-mail, 1861 01:23:34,210 --> 01:23:34,950 boeiend. 1862 01:23:34,950 --> 01:23:36,010 Ik had een tekstvak. 1863 01:23:36,010 --> 01:23:37,670 Dus ik ben het typen in dat tekstvak. 1864 01:23:37,670 --> 01:23:42,170 Nou, als je de waarde wilt krijgen uit die tekstvak dot val je gebruikt. 1865 01:23:42,170 --> 01:23:44,050 En dan, hier beneden, dot HTML is hetzelfde 1866 01:23:44,050 --> 01:23:47,710 is als document dot getElementById dot innerHTML. 1867 01:23:47,710 --> 01:23:50,890 Dus dat gaat om terug te keren u de HTML van die ID. 1868 01:23:50,890 --> 01:23:55,080 Hier, je gewoon gebruik maken van een aantal ID of wat dan ook dot HTML. 1869 01:23:55,080 --> 01:23:56,930 Dat zal de HTML van dat element te krijgen. 1870 01:23:56,930 --> 01:24:00,130 Als je wilde dan veranderen dat HTML, kunt u deze doorgeven iets. 1871 01:24:00,130 --> 01:24:05,600 Dus je zou zijn als dot HTML, en dan binnen, citaten, nieuwe HTML of zoiets. 1872 01:24:05,600 --> 01:24:07,490 >> GABE: OK, dus AJAX. 1873 01:24:07,490 --> 01:24:10,347 Ik hou echt van te begrijpen AJAX echt goed. 1874 01:24:10,347 --> 01:24:12,430 Dus ik wil dat jullie begrijpen AJAX echt goed. 1875 01:24:12,430 --> 01:24:14,221 Want als je dat doet, je bent vrij veel gaan 1876 01:24:14,221 --> 01:24:16,810 om alles te begrijpen dat heeft te maken met HTTP, PHP, 1877 01:24:16,810 --> 01:24:21,080 Javascript omdat alles komt samen in AJAX. 1878 01:24:21,080 --> 01:24:25,130 AJAX is geen taal. 1879 01:24:25,130 --> 01:24:27,000 AJAX is een techniek. 1880 01:24:27,000 --> 01:24:31,690 En het maakt gebruik van veel verschillende instrumenten. 1881 01:24:31,690 --> 01:24:35,090 AJAX staat voor Asynchronous JavaScript XML. 1882 01:24:35,090 --> 01:24:36,730 Dus de werkwijze, de taal, de gegevens. 1883 01:24:36,730 --> 01:24:40,610 >> Dus de belangrijkste taal die wij gebruiken in AJAX om alles te triggeren 1884 01:24:40,610 --> 01:24:42,830 en om alles te verwerken later is JavaScript. 1885 01:24:42,830 --> 01:24:45,160 Dat is waarom het gaat zeer dicht bij JavaScript. 1886 01:24:45,160 --> 01:24:49,810 En dan asynchroon is want we doen het niet 1887 01:24:49,810 --> 01:24:51,980 allemaal in een keer als we het laden van de pagina. 1888 01:24:51,980 --> 01:24:57,190 Dit is het ding dat we kunnen dingen te doen soort parallel. 1889 01:24:57,190 --> 01:24:59,725 Het belangrijkste idee achter AJAX is dat je wilt 1890 01:24:59,725 --> 01:25:02,170 het aan een aantal specifieke informatie te krijgen. 1891 01:25:02,170 --> 01:25:06,450 Bijvoorbeeld, als je aan het typen bent nieuw gebruikersnaam wanneer je een gebruikersnaam te registreren, 1892 01:25:06,450 --> 01:25:08,520 Mijn gebruikersnaam is abc123. 1893 01:25:08,520 --> 01:25:11,671 En vervolgens, aan het einde van de formulier, moet je klikken op Verzenden. 1894 01:25:11,671 --> 01:25:14,420 En moest naar de server, en dan controleren of in de database, 1895 01:25:14,420 --> 01:25:15,594 abc123 er al is. 1896 01:25:15,594 --> 01:25:18,510 En als het er al is, het zegt, gebruikersnaam reeds in de database. 1897 01:25:18,510 --> 01:25:21,010 En zij, je moet vullen uit het hele formulier opnieuw. 1898 01:25:21,010 --> 01:25:23,110 En het was echt, echt slecht. 1899 01:25:23,110 --> 01:25:25,440 >> En dan zeggen mensen, OK, waarom we niet gewoon 1900 01:25:25,440 --> 01:25:29,560 doe een kleine HTTP-verzoek om gewoon te controleren om te zien of deze gebruiker is in de database 1901 01:25:29,560 --> 01:25:32,080 voordat de gebruiker moest dienen het gehele formulier? 1902 01:25:32,080 --> 01:25:36,350 Dus bijvoorbeeld wanneer de gebruiker klaar is met het typen van abc123, 1903 01:25:36,350 --> 01:25:39,660 laten we gewoon gaan naar de server een beetje bit en gewoon een waar of onwaar 1904 01:25:39,660 --> 01:25:43,080 van de server te zien of dat is een geldige gebruikersnaam of niet. 1905 01:25:43,080 --> 01:25:49,250 OK, dus dat is een van de belangrijkste maakt gebruik van AJAX tegenwoordig nog steeds. 1906 01:25:49,250 --> 01:25:52,130 >> DAVIN: Dus echt snel, in een Ajax oproep in jQuery, 1907 01:25:52,130 --> 01:25:54,770 je zou kunnen betekenen dat je wil dat het synchroon zijn. 1908 01:25:54,770 --> 01:25:56,330 U moet dit niet doen. 1909 01:25:56,330 --> 01:25:57,640 Maar je kan dat doen. 1910 01:25:57,640 --> 01:25:59,277 En als je dat deed wat er zou gebeuren? 1911 01:25:59,277 --> 01:26:01,610 Nou, bijvoorbeeld, als je het krijgen van nieuws of wat dan ook, 1912 01:26:01,610 --> 01:26:05,464 Uw browser is gewoon te wachten totdat die hele gesprek is voltooid 1913 01:26:05,464 --> 01:26:08,130 in plaats van u te laten andere doen dingen goed nadat u klikt het. 1914 01:26:08,130 --> 01:26:14,560 1915 01:26:14,560 --> 01:26:17,115 >> GABE: Het is niet meer passeren. 1916 01:26:17,115 --> 01:26:19,681 O mijn god. 1917 01:26:19,681 --> 01:26:20,180 Sorry! 1918 01:26:20,180 --> 01:26:22,810 1919 01:26:22,810 --> 01:26:23,601 Ja. 1920 01:26:23,601 --> 01:26:25,350 "In het verleden, de client nodig aanvraag 1921 01:26:25,350 --> 01:26:26,840 de gehele inhoud van een website. " 1922 01:26:26,840 --> 01:26:28,210 Dat is wat ik zei. 1923 01:26:28,210 --> 01:26:30,070 Het stelt ons in staat om te sturen extra GET of POST 1924 01:26:30,070 --> 01:26:32,140 aanvragen zonder om onze browser herladen. 1925 01:26:32,140 --> 01:26:34,806 Dus aan het eind van de dag, we zijn eigenlijk het maken van een HTTP-verzoeken 1926 01:26:34,806 --> 01:26:35,740 hier met behulp van JavaScript. 1927 01:26:35,740 --> 01:26:39,700 Want voordat we alleen gebruikt JavaScript aan de HTML die al kwamen veranderen. 1928 01:26:39,700 --> 01:26:43,110 En nu, kunnen we het gebruiken om te communiceren met de webservers ook. 1929 01:26:43,110 --> 01:26:46,140 De manier waarop dit gebeurt is dat we de klant. 1930 01:26:46,140 --> 01:26:47,340 Davin is een client. 1931 01:26:47,340 --> 01:26:50,797 En hij heeft alle JavaScript hardlopen 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 Dus Davin Davin heeft zijn slimme deel en zijn domme deel. 1934 01:26:54,690 --> 01:26:57,590 Hij gaat nu zijn slimme deel gebruiken. 1935 01:26:57,590 --> 01:27:00,860 Hij gaat JavaScript gebruiken verzoek, bijvoorbeeld, 1936 01:27:00,860 --> 01:27:04,340 of ABC123 is in de database of niet. 1937 01:27:04,340 --> 01:27:08,450 >> Dus Davin, alsjeblieft, je gewoon stuur me een HTTP-verzoek. 1938 01:27:08,450 --> 01:27:09,197 Dankjewel. 1939 01:27:09,197 --> 01:27:10,530 Dus hij net stuurde een HTTP-verzoek. 1940 01:27:10,530 --> 01:27:11,270 Zie je dat? 1941 01:27:11,270 --> 01:27:14,700 En dat is precies dezelfde manier dat HTTP verzoek toegezonden. 1942 01:27:14,700 --> 01:27:16,830 De browser, Google Chroom of zoiets, is 1943 01:27:16,830 --> 01:27:19,570 gaan om te zien dat Davin's proberen om een ​​HTTP-verzoek te sturen, 1944 01:27:19,570 --> 01:27:20,930 gaat helpen hm een ​​beetje. 1945 01:27:20,930 --> 01:27:23,950 En dat gaat om te gaan helemaal naar de server. 1946 01:27:23,950 --> 01:27:27,370 Nu de server zal hebben PHP hier, of een andere taal. 1947 01:27:27,370 --> 01:27:29,990 Net als in een normale HTTP-verzoek. 1948 01:27:29,990 --> 01:27:31,950 Het is vrij veel een normale HTTP-verzoek. 1949 01:27:31,950 --> 01:27:33,658 >> En dan, de server gaat zeggen, OK, 1950 01:27:33,658 --> 01:27:37,270 Davin wil dat ik om te controleren of Dit abc123 is in de database. 1951 01:27:37,270 --> 01:27:38,310 Gaan praten met het model. 1952 01:27:38,310 --> 01:27:41,310 Het model zegt dat het niet. abc123 is een goede gebruikersnaam. 1953 01:27:41,310 --> 01:27:47,940 En dan, de webserver gaat PHP gebruiken om een ​​bepaalde vorm van het bestand maken. 1954 01:27:47,940 --> 01:27:52,280 Het kan letterlijk een bestand dat bevat "ja" in het, of "nee, 1955 01:27:52,280 --> 01:27:53,315 of iets dergelijks. 1956 01:27:53,315 --> 01:27:54,190 Het kan een bestand zijn. 1957 01:27:54,190 --> 01:27:57,080 >> Het zou kunnen zijn dat ik ga stuur Davin een foto van een eend 1958 01:27:57,080 --> 01:28:01,200 als het in de database en stuur een foto van een hamster 1959 01:28:01,200 --> 01:28:02,420 als het niet in de database. 1960 01:28:02,420 --> 01:28:04,294 Dat zou soort zijn stom, maar het zal werken. 1961 01:28:04,294 --> 01:28:07,030 OK, dus ik stuur een eend naar Davin. 1962 01:28:07,030 --> 01:28:08,150 Davin kreeg een eend. 1963 01:28:08,150 --> 01:28:13,330 En nu, wie gaat om de eend te behandelen? 1964 01:28:13,330 --> 01:28:16,390 Davin slimme deel weer, zo JavaScript, toch? 1965 01:28:16,390 --> 01:28:18,620 JavaScript stuurde de verzoek, en JavaScript 1966 01:28:18,620 --> 01:28:22,300 gaat om het verzoek te ontvangen en interpreteren in een of andere vorm. 1967 01:28:22,300 --> 01:28:26,630 >> En in deze zin, het gaat om zeggen, OK, als eend dan ben ik goed. 1968 01:28:26,630 --> 01:28:30,770 Als hamster, dan ga ik te zeggen, nee, gebruikersnaam al 1969 01:28:30,770 --> 01:28:31,970 bestaat in de database. 1970 01:28:31,970 --> 01:28:33,845 Maar meestal, je bent niet gaat om een ​​eend te sturen. 1971 01:28:33,845 --> 01:28:36,740 Je gaat te sturen iets wat slimmer. 1972 01:28:36,740 --> 01:28:40,320 En wat we gebruiken is XML. 1973 01:28:40,320 --> 01:28:42,690 En meer recent, maken we gebruik van JSON. 1974 01:28:42,690 --> 01:28:45,629 JSON is gewoon JavaScript Object Notation, die 1975 01:28:45,629 --> 01:28:47,670 wordt in principe krijg je een gehele JavaScript-object. 1976 01:28:47,670 --> 01:28:50,820 En je zet het in een bestand, net als dat CS50 object dat jullie zagen. 1977 01:28:50,820 --> 01:28:53,090 Je zet het in een bestand, en u deze sturen naar Davin. 1978 01:28:53,090 --> 01:28:55,850 >> Dus in dit geval zou ik maak een JavaScript-object 1979 01:28:55,850 --> 01:28:59,570 en gewoon zeggen, gebruiker bestaat, ja. 1980 01:28:59,570 --> 01:29:01,630 Of gebruiker bestaat, nee. 1981 01:29:01,630 --> 01:29:02,810 En stuur het terug naar hem. 1982 01:29:02,810 --> 01:29:03,830 En waarom JSON? 1983 01:29:03,830 --> 01:29:07,330 Omdat de persoon wie ontvangt deze is 1984 01:29:07,330 --> 01:29:10,030 ga JavaScript gebruiken de respons behandelen. 1985 01:29:10,030 --> 01:29:14,970 En JavaScript werkt zo goed omdat het heet JavaScript Object Notation. 1986 01:29:14,970 --> 01:29:15,470 Rechts? 1987 01:29:15,470 --> 01:29:19,660 Dus hij kan gewoon bellen een functie en krijg Dit leuke object uit de respons. 1988 01:29:19,660 --> 01:29:22,890 En dan, hij gaat om te weten of die gebruiker in de database of niet. 1989 01:29:22,890 --> 01:29:25,230 >> Zo zie je maar, alles komt samen in de webserver, 1990 01:29:25,230 --> 01:29:28,450 en dan is er een HTTP-verzoek en een HTTP response en alles. 1991 01:29:28,450 --> 01:29:30,600 Dus zorg ervoor dat jullie Dit AJAX oproep begrijpen 1992 01:29:30,600 --> 01:29:37,260 omdat het helpt je allemaal begrijpen van de concepten waar we het over. 1993 01:29:37,260 --> 01:29:40,260 >> Dus hier is een voorbeeld van AJAX met jQuery. 1994 01:29:40,260 --> 01:29:42,130 En hier doen we met get JSON. 1995 01:29:42,130 --> 01:29:45,660 Dus we proberen niet om een ​​te krijgen afbeelding van een kat hier, of een eend. 1996 01:29:45,660 --> 01:29:48,110 We proberen een JSON-bestand te krijgen. 1997 01:29:48,110 --> 01:29:51,184 En dan wachten we totdat het heeft gedaan, dot gedaan. 1998 01:29:51,184 --> 01:29:52,850 Dat betekent dat ik wacht op de reactie. 1999 01:29:52,850 --> 01:29:54,180 Het kan een tijdje duren. 2000 01:29:54,180 --> 01:29:56,360 Dan zie je een kleine laden. 2001 01:29:56,360 --> 01:29:59,340 Als je dat wilt doen in uw website. 2002 01:29:59,340 --> 01:30:01,440 Dus dot gedaan, en wat dan gebeurt wanneer het klaar is? 2003 01:30:01,440 --> 01:30:04,040 U passeert in een anonieme functie, net zoals we eerder zagen. 2004 01:30:04,040 --> 01:30:07,800 Omdat gedaan is een evenement, net zoals het klikken op een muis of wat dan ook, 2005 01:30:07,800 --> 01:30:08,710 voor jQuery. 2006 01:30:08,710 --> 01:30:13,710 Dus je voorbij in deze functie met gegevens, tekst, status en jqXHR. 2007 01:30:13,710 --> 01:30:15,790 En principe, dat is slechts enkele variabelen 2008 01:30:15,790 --> 01:30:22,160 dat je later kunt gebruiken om te hebben de status van het HTTP verzoek, 2009 01:30:22,160 --> 01:30:24,470 de gegevens die het gaat terug te sturen naar je. 2010 01:30:24,470 --> 01:30:28,740 Dus dan kun je later interpreteren en iets zinvols mee doen. 2011 01:30:28,740 --> 01:30:30,240 En als het niet lukt, wanneer zou het falen? 2012 01:30:30,240 --> 01:30:33,780 Nou, als het HTTP-verzoek geeft u een 500 of iets dergelijks. 2013 01:30:33,780 --> 01:30:37,420 Dan gaat het om u de te vertellen -status, wat voor soort storing die was, 2014 01:30:37,420 --> 01:30:38,420 en allerlei dingen. 2015 01:30:38,420 --> 01:30:40,630 Je moet ervoor zorgen beide gevallen behandelen, 2016 01:30:40,630 --> 01:30:42,770 anders wordt het programma wordt gek. 2017 01:30:42,770 --> 01:30:45,820 >> DAVIN: Dus ja, dit is precies wat je zag op uw laatste p-set. 2018 01:30:45,820 --> 01:30:49,720 De werkelijke AJAX call is in de get JSON. 2019 01:30:49,720 --> 01:30:50,587 Dat is de oproep. 2020 01:30:50,587 --> 01:30:52,920 En dan, dot gedaan is als kijkt het of het is gelukt. 2021 01:30:52,920 --> 01:30:55,620 Als het succesvol is, je wilt iets met de data doen. 2022 01:30:55,620 --> 01:30:59,290 U krijgt terug van dat JSON verzoek gegevens. 2023 01:30:59,290 --> 01:31:00,600 Dat is wat je terug krijgt. 2024 01:31:00,600 --> 01:31:04,470 Dus als u zich van uw p-set, veel van jullie waren als data beugel i 2025 01:31:04,470 --> 01:31:06,302 of wat dan ook, dot link of titel. 2026 01:31:06,302 --> 01:31:08,260 Wat komt terug vanaf dat JSON, ongeacht 2027 01:31:08,260 --> 01:31:11,020 de velden zijn in die JSON object, dat is wat je krijgt terug. 2028 01:31:11,020 --> 01:31:12,394 Data is wat je krijgt terug. 2029 01:31:12,394 --> 01:31:15,510 Tekst-status, gewoon iets dat laat je weten wat er is gebeurd. 2030 01:31:15,510 --> 01:31:20,570 En dan, de jqXHR, dat is gewoon de jQuery XML HTTP request. 2031 01:31:20,570 --> 01:31:21,990 Dat is net als een object. 2032 01:31:21,990 --> 01:31:23,932 En vervolgens niet, net als Gabe zei. 2033 01:31:23,932 --> 01:31:27,140 GABE: In onze kleine voorbeeld van abc123 gewoon om te controleren of dat is in de database 2034 01:31:27,140 --> 01:31:32,260 of niet, de gegevens zou iets dat je zijn zou doen, als de gegevens dot gebruikersnaam bestaat, 2035 01:31:32,260 --> 01:31:37,720 dat is wat je PHP gegenereerd voor u, als naam gegevens dot gebruiker bestaat, dan 2036 01:31:37,720 --> 01:31:40,880 Ik ga om te waarschuwen, gebruiker naam al bestaat. 2037 01:31:40,880 --> 01:31:44,300 Anders ga ik gewoon naar de laat gebruiker ga invullen van het formulier. 2038 01:31:44,300 --> 01:31:47,860 2039 01:31:47,860 --> 01:31:50,820 OK, veiligheid, cool. 2040 01:31:50,820 --> 01:31:52,060 >> DAVIN: Wil je dat ik? 2041 01:31:52,060 --> 01:31:54,500 >> GABE: Ik hou van deze. 2042 01:31:54,500 --> 01:31:57,680 Dus iets dat ziet er bekend uit. 2043 01:31:57,680 --> 01:31:59,750 We zijn bijna klaar. 2044 01:31:59,750 --> 01:32:02,670 Dus dit is gewoon het voorbeeld jullie zagen in de klas. 2045 01:32:02,670 --> 01:32:04,860 Je met behulp van argv1 hier. 2046 01:32:04,860 --> 01:32:06,460 Dat is hetzelfde als een command line argument. 2047 01:32:06,460 --> 01:32:09,270 En we mem kopiëren dat in een buffer van grootte 12. 2048 01:32:09,270 --> 01:32:12,560 Wat is het probleem hier? 2049 01:32:12,560 --> 01:32:13,660 Buffer overflow! 2050 01:32:13,660 --> 01:32:15,400 Want we hebben een buffer van maat 12. 2051 01:32:15,400 --> 01:32:18,400 argv1 kan een grootte van twee miljard. 2052 01:32:18,400 --> 01:32:19,960 We hebben geen grens controle doen. 2053 01:32:19,960 --> 01:32:24,970 Zo kunnen we veel geheugen te kopiëren. 2054 01:32:24,970 --> 01:32:28,630 En we zullen in het bijzonder zijn slecht over dit. 2055 01:32:28,630 --> 01:32:32,600 Wat kunnen we doen dat is zeer, zeer betekenen in dit geval? 2056 01:32:32,600 --> 01:32:33,278 Ja? 2057 01:32:33,278 --> 01:32:36,528 Publiek: Een deel van de twee miljard dingen bevat uitvoerbare code die terugkeert 2058 01:32:36,528 --> 01:32:38,127 [Onverstaanbaar]. 2059 01:32:38,127 --> 01:32:38,710 GABE: Precies. 2060 01:32:38,710 --> 01:32:41,110 Dus dat is de aard van de ding dat mensen gebruiken 2061 01:32:41,110 --> 01:32:43,344 om een ​​iPhone jailbreaken, bijvoorbeeld. 2062 01:32:43,344 --> 01:32:44,260 Dus dat soort dingen. 2063 01:32:44,260 --> 01:32:48,610 Omdat je het toestel gewoon kan maken uitvoeren van een code die je leuk vindt. 2064 01:32:48,610 --> 01:32:50,247 De fix, dus de oplossing is eenvoudig. 2065 01:32:50,247 --> 01:32:51,330 Kijk maar naar de grenzen. 2066 01:32:51,330 --> 01:32:53,455 U vraagt ​​null omdat wij controleren altijd voor null 2067 01:32:53,455 --> 01:32:54,940 wanneer we te maken hebben met strijkers. 2068 01:32:54,940 --> 01:32:57,840 En dan neemt u de tekenreekslengte vóór. 2069 01:32:57,840 --> 01:33:00,150 En als de tekenreeks lengte geldige tekenreeks 2070 01:33:00,150 --> 01:33:03,700 lengte, die is binnen 0 en 12, dan zijn we goed. 2071 01:33:03,700 --> 01:33:07,144 >> DAVIN: Als u niet incheckt voor null, echt snel, wat zal er dan gebeuren? 2072 01:33:07,144 --> 01:33:07,810 Het zal de schuld SEG. 2073 01:33:07,810 --> 01:33:10,850 Daarom zal het Seg fout? 2074 01:33:10,850 --> 01:33:12,510 Omdat je belt strlen op null. 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 niet waar, met behulp van een wachtwoord is een goed idee. 2078 01:33:19,630 --> 01:33:20,430 >> Publiek: Valse. 2079 01:33:20,430 --> 01:33:21,150 >> GABE: Valse. 2080 01:33:21,150 --> 01:33:23,870 Gebruik maken van vele wachtwoorden, en grote, lange. 2081 01:33:23,870 --> 01:33:26,050 Hangslot pictogrammen zorgen voor de beveiliging. 2082 01:33:26,050 --> 01:33:27,080 >> Publiek: Valse. 2083 01:33:27,080 --> 01:33:27,749 >> GABE: Valse. 2084 01:33:27,749 --> 01:33:28,790 Het betekent niets. 2085 01:33:28,790 --> 01:33:30,480 Het is gewoon een icoon. 2086 01:33:30,480 --> 01:33:32,824 SSL beschermt tegen man in the middle-aanval. 2087 01:33:32,824 --> 01:33:33,490 Publiek: Valse. 2088 01:33:33,490 --> 01:33:34,110 GABE: Valse. 2089 01:33:34,110 --> 01:33:35,355 OK, dus al die vals zijn. 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 [Onverstaanbaar] 2093 01:33:40,220 --> 01:33:42,500 Willen praten over dit? 2094 01:33:42,500 --> 01:33:43,259 Jouw beurt. 2095 01:33:43,259 --> 01:33:45,050 DAVIN: Soorten aanvallen, man in het midden. 2096 01:33:45,050 --> 01:33:47,134 Wat is een man in the middle-aanval? 2097 01:33:47,134 --> 01:33:48,050 Publiek: [onverstaanbaar]. 2098 01:33:48,050 --> 01:33:51,437 2099 01:33:51,437 --> 01:33:54,020 DAVIN: Als je een stuur HTTP verzoek, konden ze dit doen, toch? 2100 01:33:54,020 --> 01:33:57,890 Maar als je het verzenden van HTTPS, ze zal waarschijnlijk niet in staat zijn om dit te doen. 2101 01:33:57,890 --> 01:33:59,952 Er zijn veel punten langs uw verbinding. 2102 01:33:59,952 --> 01:34:00,660 Je hebt routers. 2103 01:34:00,660 --> 01:34:01,746 Je hebt DNS-servers. 2104 01:34:01,746 --> 01:34:04,120 Als iemand in staat is om fysiek zien wat u verzendt, 2105 01:34:04,120 --> 01:34:06,140 dus iemand die in staat is om daadwerkelijk krijgen tussen u, 2106 01:34:06,140 --> 01:34:08,840 de cliënt en de server, en is kunnen zien wat u verzendt, 2107 01:34:08,840 --> 01:34:10,298 Dit is een man in the middle-aanval. 2108 01:34:10,298 --> 01:34:14,287 Dus om te zien wat je probeert te krijgen van de server, of is in staat om see-- erger, 2109 01:34:14,287 --> 01:34:16,620 je zou kunnen zien koekjes of iets dergelijks. 2110 01:34:16,620 --> 01:34:19,290 >> Dus bijvoorbeeld, indien die u niet gebruikt SSL, hij 2111 01:34:19,290 --> 01:34:21,900 zou in staat zijn om te zien uw sessie-ID cookies. 2112 01:34:21,900 --> 01:34:25,460 En dit is het kapen van sessies genoemd want hij ziet je ID cookies, 2113 01:34:25,460 --> 01:34:28,317 en dan is hij om te gaan die in staat website en doen alsof ze je. 2114 01:34:28,317 --> 01:34:31,150 Want net als in PHP, herinner toen we ingelogd, wat doen we dan? 2115 01:34:31,150 --> 01:34:33,340 We stellen sessie ID gelijk aan ID. 2116 01:34:33,340 --> 01:34:34,810 Zodat identificeert u. 2117 01:34:34,810 --> 01:34:38,300 Dat is waarom je je portfolio kunt zien en niet iedereen portfolio. 2118 01:34:38,300 --> 01:34:42,320 >> Nou, als ik ben in staat om die cookie te krijgen, dan kan ik inloggen op die pagina. 2119 01:34:42,320 --> 01:34:45,380 En dan kan ik gewoon zien je spullen en beginnen met het kopen en verkopen van spullen. 2120 01:34:45,380 --> 01:34:46,800 Dus dat is het kapen van sessies. 2121 01:34:46,800 --> 01:34:50,810 Maar je moet in staat zijn to-- zodat je niet kan de man te gebruiken in de middle-aanval 2122 01:34:50,810 --> 01:34:52,290 zelfs als ze met behulp van SSL. 2123 01:34:52,290 --> 01:34:53,520 Maar je moet niet kunnen. 2124 01:34:53,520 --> 01:34:56,580 Als ze met SSL, je kan niet te kapen. 2125 01:34:56,580 --> 01:34:58,927 Waarom? 2126 01:34:58,927 --> 01:35:01,135 Want het is allemaal gecodeerd, toch? als het versleuteld, 2127 01:35:01,135 --> 01:35:03,509 en ik ben nog steeds een man in de midden, krijg ik nog steeds uw gegevens. 2128 01:35:03,509 --> 01:35:04,279 Dat is goed. 2129 01:35:04,279 --> 01:35:05,070 Maar het is versleuteld. 2130 01:35:05,070 --> 01:35:07,750 Dus ik kan niet echt gebruiken. 2131 01:35:07,750 --> 01:35:09,840 Dus dat is twee. 2132 01:35:09,840 --> 01:35:11,544 >> Echt snel, cross site request vervalsing. 2133 01:35:11,544 --> 01:35:13,960 Dat is gewoon als er een link en die link doet iets 2134 01:35:13,960 --> 01:35:14,890 dat je niet denkt dat het zou moeten doen. 2135 01:35:14,890 --> 01:35:18,150 Dus bijvoorbeeld, als de koppeling was gaat om aandelen te kopen of te verkopen voorraden, 2136 01:35:18,150 --> 01:35:19,360 en dat je niet wist dat. 2137 01:35:19,360 --> 01:35:22,040 U klikte op de link, een verzoek ingediend, kocht 2138 01:35:22,040 --> 01:35:24,240 of verkocht iets dat je was niet mijn bedoeling om te doen. 2139 01:35:24,240 --> 01:35:25,120 Dat is dat. 2140 01:35:25,120 --> 01:35:30,720 >> Cross site scripting, dus even, je voorbij in via variabele q, 2141 01:35:30,720 --> 01:35:33,510 in plaats van passeren soort van waarde, misschien q is als een naam. 2142 01:35:33,510 --> 01:35:36,560 Dus in plaats van het passeren van q gelijken Davin of iets dergelijks, 2143 01:35:36,560 --> 01:35:38,740 als je geen gebruik maken van HTML speciale tekens, als je 2144 01:35:38,740 --> 01:35:43,100 hoeft dit niet ontsnappen om ervoor te zorgen dat het OK, dan kon ik in plaats daarvan pas in, 2145 01:35:43,100 --> 01:35:46,910 laten we zeggen dat hier wat ik zeg print of iets dergelijks, 2146 01:35:46,910 --> 01:35:51,070 dan kon ik hier passeren in een script oproep. 2147 01:35:51,070 --> 01:35:53,140 >> Zo dan, in plaats van net een variabele, 2148 01:35:53,140 --> 01:35:54,960 Ik zou dan dit script oproep uit te voeren. 2149 01:35:54,960 --> 01:35:57,065 Zodat binnen dat script noemen, wat doet het? 2150 01:35:57,065 --> 01:36:00,190 Document dot locatie, dat gaat De locatie van het document. 2151 01:36:00,190 --> 01:36:02,290 Dus ik ga om te buigen naar ergens anders. 2152 01:36:02,290 --> 01:36:08,170 Het heet bad guy in dit voorbeeld, zeer goed. 2153 01:36:08,170 --> 01:36:10,536 Kon niet denken aan het woord. 2154 01:36:10,536 --> 01:36:12,410 En dan, om het nog erger is dat ik ga 2155 01:36:12,410 --> 01:36:16,832 om vervolgens cookie dat sommige variabele Ik heb op deze website. 2156 01:36:16,832 --> 01:36:19,040 Ik ga het gelijk te stellen het document stip cookie. 2157 01:36:19,040 --> 01:36:20,660 Daarom ga ik om uw cookie te stelen. 2158 01:36:20,660 --> 01:36:22,951 En ik ga om te buigen wat informatie naar een website 2159 01:36:22,951 --> 01:36:25,120 dat je niet moet worden toegang. 2160 01:36:25,120 --> 01:36:29,250 En dit alles gebeurt omdat je bent niet ontsnappen aan wat je hebt gezien. 2161 01:36:29,250 --> 01:36:29,910 Yeah? 2162 01:36:29,910 --> 01:36:32,160 >> Publiek: Dus gewoon naar dat duidelijk maken, het is 2163 01:36:32,160 --> 01:36:37,550 vulnerable.com dat is kwetsbaar voor dit. 2164 01:36:37,550 --> 01:36:39,300 Dus die link kan verschijnen op een bepaalde pagina. 2165 01:36:39,300 --> 01:36:42,200 Iemand klikt op het, gaat vulnerable.com. 2166 01:36:42,200 --> 01:36:43,700 Je hebt een cookie om vulnerable.com. 2167 01:36:43,700 --> 01:36:46,670 Laten we zeggen dat Facebook is kwetsbaar, dus facebook.com. 2168 01:36:46,670 --> 01:36:48,310 U hebt uw Facebook-cookie. 2169 01:36:48,310 --> 01:36:50,925 Wat dit doet, je bent gaan naar facebook.com, 2170 01:36:50,925 --> 01:36:53,990 het is meteen omgeleid u badguy.com, 2171 01:36:53,990 --> 01:36:57,182 maar met inbegrip van uw cookie-informatie. 2172 01:36:57,182 --> 01:36:59,310 Dus het is een snelle redirect, maar uw Facebook-cookie- 2173 01:36:59,310 --> 01:37:02,572 is opgenomen met die redirect, en dat is hoe ze [onverstaanbaar]. 2174 01:37:02,572 --> 01:37:04,280 GABE: Ja, er is een aantal zeer gemene dingen 2175 01:37:04,280 --> 01:37:06,070 die mensen kunnen doen als er dit. 2176 01:37:06,070 --> 01:37:09,190 Als bijvoorbeeld Facebook toegelaten iedereen om je gebruikersnaam te wijzigen, 2177 01:37:09,190 --> 01:37:11,680 en ze had er geen doen sanity controles, zodat u 2178 01:37:11,680 --> 01:37:16,810 kon een JavaScript-ding te voegen dat verandert uw afbeelding naar een hamster. 2179 01:37:16,810 --> 01:37:22,590 En dat voegt dezelfde JavaScript naar iedereen die je pagina bekijkt. 2180 01:37:22,590 --> 01:37:26,400 Dus iedereen die jouw pagina bekijkt heeft hetzelfde in de gebruikersnaam. 2181 01:37:26,400 --> 01:37:30,104 En omdat het een virus, verspreidt het zich exponentieel. 2182 01:37:30,104 --> 01:37:32,270 DAVIN: We slaan de laatste één, en dan zijn we klaar. 2183 01:37:32,270 --> 01:37:34,120 Dus dit is slechts een voorbeeld. 2184 01:37:34,120 --> 01:37:36,120 Dus dit is ze niet ontsnappen aan hun SQL tafel. 2185 01:37:36,120 --> 01:37:37,090 Dus je kunt laten vallen. 2186 01:37:37,090 --> 01:37:38,805 Dus je dingen wilt ontsnappen. 2187 01:37:38,805 --> 01:37:44,010 Dat was het vorige voorbeeld met de cross site scripting. 2188 01:37:44,010 --> 01:37:45,430 Sorry liepen we een beetje laat. 2189 01:37:45,430 --> 01:37:46,870 Morgen, sorry! 2190 01:37:46,870 --> 01:37:48,560 Morgen hebben we de kantooruren. 2191 01:37:48,560 --> 01:37:50,870 Dus kantooruren in Cabbot 8:00-11:00. 2192 01:37:50,870 --> 01:37:55,240 De kantooruren zijn strikt voor quizvragen. 2193 01:37:55,240 --> 01:37:56,587