1 00:00:00,000 --> 00:00:05,616 2 00:00:05,616 --> 00:00:07,030 >> HANNAH BLUMBERG: Hallo iedereen. 3 00:00:07,030 --> 00:00:09,530 We gaan aan de slag slechts een paar minuten te vroeg 4 00:00:09,530 --> 00:00:11,738 want we hebben een heleboel van het materiaal door te komen. 5 00:00:11,738 --> 00:00:12,790 Ik ben Hannah. 6 00:00:12,790 --> 00:00:13,865 Ik ben een TF. 7 00:00:13,865 --> 00:00:16,239 Maria zal toetreden ons in slechts een paar minuten. 8 00:00:16,239 --> 00:00:17,560 Zij doceert sectie net voor. 9 00:00:17,560 --> 00:00:19,351 Ik geef les sectie rechts na, dus we gaan 10 00:00:19,351 --> 00:00:21,200 om deze naar de anderhalf uur houden. 11 00:00:21,200 --> 00:00:25,490 >> Dus als je hier ziet, we hebben nogal een paar onderwerpen die we nodig hebben om door te komen, 12 00:00:25,490 --> 00:00:27,200 dus we gaan een beetje snel. 13 00:00:27,200 --> 00:00:31,140 Maar als we op enig moment iets te zeggen te snel of je het niet begrijpt, 14 00:00:31,140 --> 00:00:33,170 voel je vrij om te onderbreken met vragen. 15 00:00:33,170 --> 00:00:36,610 We willen in staat zijn om dit een te maken herzien sessie nuttig voor jullie allemaal 16 00:00:36,610 --> 00:00:37,973 als mogelijk. 17 00:00:37,973 --> 00:00:38,920 Geweldig. 18 00:00:38,920 --> 00:00:41,650 >> Dus laten we springen in met sommige onderwerpen die we eigenlijk 19 00:00:41,650 --> 00:00:46,980 heel, heel kort gedekt voor de quiz 0 in de quiz 0 beoordeling sessie. 20 00:00:46,980 --> 00:00:48,840 Dus beginnen met gelinkte lijsten. 21 00:00:48,840 --> 00:00:52,090 Dus zorg ervoor dat je wat basiskennis over gelinkte lijsten 22 00:00:52,090 --> 00:00:55,110 en zijn comfortabel doen sommige van de basisfuncties. 23 00:00:55,110 --> 00:00:58,560 >> Dus gewoon te herzien, gekoppeld lijsten zijn beter dan arrays 24 00:00:58,560 --> 00:01:01,020 omdat ze dynamisch kunnen groeien. 25 00:01:01,020 --> 00:01:03,300 Dus we hebben die enorm voordeel. 26 00:01:03,300 --> 00:01:06,031 We hebben gezien dat ze gebruikt in hash tafels toen we 27 00:01:06,031 --> 00:01:08,280 weet niet precies hoeveel dingen die we gaan te willen 28 00:01:08,280 --> 00:01:10,900 invoegen in onze gegevensstructuur. 29 00:01:10,900 --> 00:01:15,700 Helaas, we hebben stukken de gelinkte lijst over het geheugen, 30 00:01:15,700 --> 00:01:20,820 dus we zullen niet noodzakelijkerwijs in staat om een ​​constante toegang doen 31 00:01:20,820 --> 00:01:22,502 op elk element in de gekoppelde lijst. 32 00:01:22,502 --> 00:01:24,210 Om een ​​vondst bepaald element, we 33 00:01:24,210 --> 00:01:26,510 moet herhalen alle weg van het begin. 34 00:01:26,510 --> 00:01:30,610 Dus in gedachten houden dat de meeste basishandelingen zijn omega van 1. 35 00:01:30,610 --> 00:01:32,130 Dus insert is gewoon te nemen 1. 36 00:01:32,130 --> 00:01:37,520 Delete gaat nemen n omdat we moeten gaan vinden in de lijst. 37 00:01:37,520 --> 00:01:39,260 En zoek zou kunnen nemen, in het slechtste geval, n. 38 00:01:39,260 --> 00:01:42,330 We kunnen niet iets doen, zoals binaire zoekopdracht op een gekoppelde lijst 39 00:01:42,330 --> 00:01:45,101 want we kunnen niet zomaar willekeurig springen naar het midden. 40 00:01:45,101 --> 00:01:45,600 Koel. 41 00:01:45,600 --> 00:01:48,160 42 00:01:48,160 --> 00:01:48,960 Geweldig. 43 00:01:48,960 --> 00:01:50,270 >> Een beetje van stacks. 44 00:01:50,270 --> 00:01:53,980 Dit, opnieuw, kwam op quiz 0, zodat u moet super comfortabel mee. 45 00:01:53,980 --> 00:01:57,210 Maar voor stacks, vragen wij u een stapel trays herinneren. 46 00:01:57,210 --> 00:01:59,940 En het gaat voor het eerst in zijn, last out. 47 00:01:59,940 --> 00:02:02,272 Dus we stapelen dingen in de stapel, en dan 48 00:02:02,272 --> 00:02:04,980 Als we proberen om iets te nemen off-- die noemen we knallen 49 00:02:04,980 --> 00:02:06,581 de stack-- komen we uit de top. 50 00:02:06,581 --> 00:02:09,289 En als we iets willen zetten in de stapel, noemen we het duwen. 51 00:02:09,289 --> 00:02:13,170 Dus het is altijd zal worden opgroeien van de bodem als een stapel trays. 52 00:02:13,170 --> 00:02:14,540 Geweldig. 53 00:02:14,540 --> 00:02:17,607 >> We hebben gezien stapels geïmplementeerd met zowel gelinkte lijsten en arrays. 54 00:02:17,607 --> 00:02:19,440 Als je de uitvoering met arrays, je wilt 55 00:02:19,440 --> 00:02:22,350 om er zeker van te houden van zowel de grootte en de capaciteit. 56 00:02:22,350 --> 00:02:27,540 Dus de grootte zal de huidige te zijn aantal dingen in je stack, 57 00:02:27,540 --> 00:02:32,900 terwijl de capaciteit is het totaal aantal dingen die je kunt opslaan in je stack. 58 00:02:32,900 --> 00:02:34,220 Koel. 59 00:02:34,220 --> 00:02:35,767 >> Zeer gelijke, we wachtrijen. 60 00:02:35,767 --> 00:02:38,850 In dit geval, in plaats van het denken over een stapel trays, denk aan een lijn. 61 00:02:38,850 --> 00:02:40,697 Dit zal worden first in, first out. 62 00:02:40,697 --> 00:02:42,780 Dus als je in de rij voor iets wat in de winkel, 63 00:02:42,780 --> 00:02:46,920 We hopen dat de persoon voor het eerst in lijn zal eerst worden geholpen. 64 00:02:46,920 --> 00:02:49,350 >> In plaats van te zeggen push en pop zoals wij doen voor stack, 65 00:02:49,350 --> 00:02:52,000 we gewoon enqueue en dequeue zeggen. 66 00:02:52,000 --> 00:02:54,970 En nogmaals, als je de uitvoering van deze met een array, 67 00:02:54,970 --> 00:02:56,720 we nodig hebben om bij te houden van niet alleen de grootte 68 00:02:56,720 --> 00:03:02,390 en capaciteit, maar ook het hoofd, die gaat de voorzijde van onze wachtrij. 69 00:03:02,390 --> 00:03:03,010 Koel. 70 00:03:03,010 --> 00:03:05,770 Heeft u vragen over een van die? 71 00:03:05,770 --> 00:03:06,320 Geweldig. 72 00:03:06,320 --> 00:03:07,640 Bewegende rechts langs. 73 00:03:07,640 --> 00:03:08,564 >> OK, hash tabellen. 74 00:03:08,564 --> 00:03:10,605 Hier is waar het begint te pas echt interessant. 75 00:03:10,605 --> 00:03:14,150 Dus een hash-tabel is een implementatie van een associatieve array. 76 00:03:14,150 --> 00:03:16,700 Dus eigenlijk wat er gebeurd is hebben we al deze input, 77 00:03:16,700 --> 00:03:18,750 en wij geven een hash functie, die zegt: 78 00:03:18,750 --> 00:03:21,840 OK, dit is waar de hash table het behoort. 79 00:03:21,840 --> 00:03:24,860 >> Dus de eenvoudigste hash-functie dat we hebben gezien is gewoon te zeggen, 80 00:03:24,860 --> 00:03:28,170 OK, stel dat we willen zetten strings in onze hash tafel. 81 00:03:28,170 --> 00:03:30,870 En een heel simpel idee zou zijn om te zeggen, OK, 82 00:03:30,870 --> 00:03:34,350 laten we gewoon te sorteren op de eerste letter van het woord. 83 00:03:34,350 --> 00:03:37,570 Zodat je hier kunt zien, nemen we banaan, we zetten door middel van een hash-functie, 84 00:03:37,570 --> 00:03:40,190 en het zegt, hey, dat moet gaan bij index 1. 85 00:03:40,190 --> 00:03:45,120 >> Dus we kunnen wezen denken aan een hash tabel als een heleboel andere emmers. 86 00:03:45,120 --> 00:03:49,880 En elk van die bakken gaat aan het hoofd van een gekoppelde lijst te houden. 87 00:03:49,880 --> 00:03:55,030 En in die gekoppelde lijst is waar we kunnen voerden verschillende stukken data. 88 00:03:55,030 --> 00:03:57,820 >> Dus duiken een beetje meer in een hash-functie, hier is 89 00:03:57,820 --> 00:03:59,870 het voorbeeld dat ik net beschreven waar we gewoon zeggen, 90 00:03:59,870 --> 00:04:02,460 OK, neem de eerste letter van het woord en we zijn 91 00:04:02,460 --> 00:04:03,990 gaat om het sorteren in de emmers. 92 00:04:03,990 --> 00:04:08,490 Dus vermoedelijk, zal er zijn 26 emmers, één voor elke letter van het alfabet. 93 00:04:08,490 --> 00:04:10,090 Waarom is dit niet een grote hash-functie? 94 00:04:10,090 --> 00:04:13,461 Wat maakt deze niet-ideale? 95 00:04:13,461 --> 00:04:13,960 Ja. 96 00:04:13,960 --> 00:04:15,790 >> PUBLIEK: Je gaat botsingen hebben. 97 00:04:15,790 --> 00:04:16,390 >> HANNAH BLUMBERG: Ja, precies. 98 00:04:16,390 --> 00:04:18,000 Je gaat om botsingen te hebben. 99 00:04:18,000 --> 00:04:18,954 Dus dat is een ding. 100 00:04:18,954 --> 00:04:21,620 En we praten over hoe we kunnen fix botsingen in slechts een seconde. 101 00:04:21,620 --> 00:04:23,980 Een ander probleem met deze bijzondere hash-functie 102 00:04:23,980 --> 00:04:25,980 is dat onze verschillende emmers zullen worden 103 00:04:25,980 --> 00:04:28,960 van vrij drastisch verschillende maten. 104 00:04:28,960 --> 00:04:33,840 >> We weten dat er een heleboel meer woorden die beginnen met A dan X, 105 00:04:33,840 --> 00:04:38,980 dus we gaan zeer hebben onevenwichtige emmers in onze hash tafel. 106 00:04:38,980 --> 00:04:40,050 Koel. 107 00:04:40,050 --> 00:04:41,340 Dus ja, laten we terug naar het punt van botsingen. 108 00:04:41,340 --> 00:04:42,900 Wat doen we als er een botsing? 109 00:04:42,900 --> 00:04:44,490 >> We hebben een paar verschillende opties. 110 00:04:44,490 --> 00:04:47,600 Zo een, dus denk dat we proberen Berry zetten in onze hash tafel. 111 00:04:47,600 --> 00:04:50,370 En wij zien, oh, we willen om het in-index 1 te zetten, 112 00:04:50,370 --> 00:04:52,070 maar banaan woont er al. 113 00:04:52,070 --> 00:04:53,110 Wat gaan we doen? 114 00:04:53,110 --> 00:04:54,560 We hebben twee opties. 115 00:04:54,560 --> 00:04:58,050 >> Nummer een is dat we kunnen zeggen, OK, is er geen ruimte in de index 1, 116 00:04:58,050 --> 00:05:03,210 maar laten we gewoon blijven kijken door totdat we kunnen nog een open plek te vinden. 117 00:05:03,210 --> 00:05:08,490 Dus we zullen zeggen, OK, laten we het in plaats 3. 118 00:05:08,490 --> 00:05:09,240 Dat is een optie. 119 00:05:09,240 --> 00:05:11,470 Dat heet lineaire sonderen. 120 00:05:11,470 --> 00:05:15,500 >> En een tweede optie is te zeggen, OK, goed, laten we gewoon elk van deze emmers 121 00:05:15,500 --> 00:05:17,470 zijn de hoofden van gekoppelde lijsten. 122 00:05:17,470 --> 00:05:21,910 En het is OK als er meer dan één ding in een emmer. 123 00:05:21,910 --> 00:05:23,820 We gaan gewoon voeg deze toe op de voorkant. 124 00:05:23,820 --> 00:05:26,032 Dus hier zie je, OK, toen we geplaatst berry, we 125 00:05:26,032 --> 00:05:28,240 net nam banaan, soort duwde het over een klein beetje 126 00:05:28,240 --> 00:05:29,842 en gooide een bes daar. 127 00:05:29,842 --> 00:05:31,050 En dat is ook helemaal prima. 128 00:05:31,050 --> 00:05:32,830 Dit heet een aparte chaining. 129 00:05:32,830 --> 00:05:38,100 U kunt denken aan dit als een soort van een reeks van hoofden gekoppelde lijsten. 130 00:05:38,100 --> 00:05:41,950 Heeft u vragen over hash tafels, hash functies? 131 00:05:41,950 --> 00:05:44,290 Geweldig. 132 00:05:44,290 --> 00:05:45,470 >> Bomen en probeert. 133 00:05:45,470 --> 00:05:47,287 Dus een boom is een soort van de gegevensstructuur 134 00:05:47,287 --> 00:05:49,453 waarbij er een soort hiërarchie of een soort 135 00:05:49,453 --> 00:05:51,247 ranking van uw verschillende objecten. 136 00:05:51,247 --> 00:05:53,580 En dit zal super geworden duidelijk als we zien een voorbeeld. 137 00:05:53,580 --> 00:05:56,960 En we zagen probeert, samen met hash tabellen, in pset5-- 138 00:05:56,960 --> 00:06:00,700 die, nogmaals, volstrekt eerlijk spel voor deze quiz-- als een andere data 139 00:06:00,700 --> 00:06:03,110 structuren die we kunnen slaan verschillende dingen. 140 00:06:03,110 --> 00:06:06,782 Bij woordenboek, we opgeslagen een heleboel woorden. 141 00:06:06,782 --> 00:06:08,240 Dus laten we eens een kijkje bij enkele bomen. 142 00:06:08,240 --> 00:06:10,190 Dit is dus een voorbeeld van een boom. 143 00:06:10,190 --> 00:06:13,105 Het heeft een soort structuur, dat hiërarchische structuur, 144 00:06:13,105 --> 00:06:15,920 waar je dat kunt zien 1 dit knooppunt aan de top 145 00:06:15,920 --> 00:06:20,750 heeft een soort van rang boven de 2 en 3, dat boven 4, 5 en 6 en 7 zijn, 146 00:06:20,750 --> 00:06:22,860 die boven 8 en 9. 147 00:06:22,860 --> 00:06:25,210 Dus dat is alles wat we bedoelen met een boom, dus je kunt gewoon een soort 148 00:06:25,210 --> 00:06:26,660 van dit beeld in je hoofd. 149 00:06:26,660 --> 00:06:29,050 >> Nu hebben we een paar meer gespecialiseerde bomen. 150 00:06:29,050 --> 00:06:31,070 Dus een voorbeeld is een binaire boom. 151 00:06:31,070 --> 00:06:33,290 En een binaire boom, weer gewoon gaat worden 152 00:06:33,290 --> 00:06:37,040 een gegevensstructuur met een soort van hiërarchie, maar elk van de knooppunten 153 00:06:37,040 --> 00:06:38,650 kan hooguit twee kinderen. 154 00:06:38,650 --> 00:06:41,530 Dat is waar het woord binary vandaan komt. 155 00:06:41,530 --> 00:06:43,410 Dit is dus een voorbeeld van een binaire boom. 156 00:06:43,410 --> 00:06:45,720 Dus dat is een kleinere categorie van bomen. 157 00:06:45,720 --> 00:06:48,960 >> Laten we nu nog meer specifieke en praten over binaire trees-- binaire zoekopdracht 158 00:06:48,960 --> 00:06:51,310 bomen, in plaats van. 159 00:06:51,310 --> 00:06:56,430 Dus hier het idee is niet alleen doet elke knoop hooguit twee kinderen, 160 00:06:56,430 --> 00:07:00,300 maar alle van de kinderen naar de links zullen worden kleiner 161 00:07:00,300 --> 00:07:03,450 en alle kinderen de recht zullen groter zijn. 162 00:07:03,450 --> 00:07:05,890 Dus het bericht in slechts onze binaire boom, er is 163 00:07:05,890 --> 00:07:08,650 geen relatie tussen de nummers. 164 00:07:08,650 --> 00:07:12,990 Maar in onze binaire zoekopdracht boom, we zien, OK, hier is 44. 165 00:07:12,990 --> 00:07:17,080 En elk nummer links van 44 is kleiner en alles rechts 166 00:07:17,080 --> 00:07:17,920 is groter. 167 00:07:17,920 --> 00:07:20,130 >> En dat geldt bij elke het niveau van de boom. 168 00:07:20,130 --> 00:07:24,810 Dus hier is dit kleiner dan 22 en deze groter is dan 22. 169 00:07:24,810 --> 00:07:26,390 En dat is binaire zoekboom. 170 00:07:26,390 --> 00:07:28,900 Waarom hebben we denk dat het zogenaamde een binaire zoekboom? 171 00:07:28,900 --> 00:07:30,651 Wat algoritme doet het je denken? 172 00:07:30,651 --> 00:07:31,650 Publiek: Binary zoeken. 173 00:07:31,650 --> 00:07:32,480 HANNAH BLUMBERG: Binary zoeken. 174 00:07:32,480 --> 00:07:35,150 Want als je op zoek bent naar een bepaald aantal in deze boom, 175 00:07:35,150 --> 00:07:38,800 op elk punt, kun je gewoon kloppen off helft van de boom, dat is geweldig. 176 00:07:38,800 --> 00:07:43,800 En dat gaat ons iets te geven dat lijkt veel op binaire zoeken. 177 00:07:43,800 --> 00:07:45,870 Nog vragen? 178 00:07:45,870 --> 00:07:47,570 Oké, cool. 179 00:07:47,570 --> 00:07:48,560 >> Oké, probeert. 180 00:07:48,560 --> 00:07:49,657 Favoriet iedereen. 181 00:07:49,657 --> 00:07:51,990 Dus dit is het voorbeeld dat we hebben een heleboel in de klas gezien. 182 00:07:51,990 --> 00:07:54,710 En nogmaals, dit is gewoon een andere dat we data kunnen opslaan. 183 00:07:54,710 --> 00:07:57,530 Bij woordenboek, weer, dit is gewoon gaan strings zijn. 184 00:07:57,530 --> 00:08:00,870 Dus laten we eens kijken wat dit eigenlijk ziet eruit als op een iets lager niveau. 185 00:08:00,870 --> 00:08:03,690 >> Dus laten we eens een kijkje nemen op een knooppunt in een trie. 186 00:08:03,690 --> 00:08:07,532 En wij zien, OK, er zal een Boolean en een node, 187 00:08:07,532 --> 00:08:09,170 een pointer naar een knooppunt. 188 00:08:09,170 --> 00:08:11,400 En we zien dat de Boolean wordt genoemd is_word. 189 00:08:11,400 --> 00:08:13,490 Dus in wezen, dat is zal corresponderen 190 00:08:13,490 --> 00:08:16,750 om deze kleine driehoekjes die zegt, als je hier hebt gekregen, 191 00:08:16,750 --> 00:08:19,100 u een compleet woord hebt gevonden. 192 00:08:19,100 --> 00:08:23,670 >> We weten dat "Turing" over Hier is een complete woord, 193 00:08:23,670 --> 00:08:28,030 terwijl slechts T-U-R is niet een woord omdat we niet zien dat er weinig delta. 194 00:08:28,030 --> 00:08:31,440 En dat kleine delta, opnieuw, correspondeert met is_word, 195 00:08:31,440 --> 00:08:34,480 Deze Boolean is_word. 196 00:08:34,480 --> 00:08:36,320 En dan hebben we een scala van kinderen. 197 00:08:36,320 --> 00:08:39,860 Dus op elk niveau, u een bepaald knooppunt, 198 00:08:39,860 --> 00:08:42,470 en dat knooppunten een matrix van de gehele alfabet. 199 00:08:42,470 --> 00:08:44,346 >> Zodat u kunt zien, nogmaals, in dit picture-- ik ben 200 00:08:44,346 --> 00:08:48,170 gaande te houden en terug te springen forth-- dat die array aan de top 201 00:08:48,170 --> 00:08:51,640 heeft een heleboel verschillende knooppunten komende uit van het. 202 00:08:51,640 --> 00:08:57,140 Het heeft 26 of 27 als je wilt een extra teken omvatten. 203 00:08:57,140 --> 00:09:01,320 En dit geeft ons een manier om onze gegevens op te slaan 204 00:09:01,320 --> 00:09:04,450 op een manier die kan worden bekeken op dat je kunt opzoeken super snel. 205 00:09:04,450 --> 00:09:06,650 Wat is de lookup tijd voor een trie? 206 00:09:06,650 --> 00:09:07,970 >> PUBLIEK: [onverstaanbaar]. 207 00:09:07,970 --> 00:09:08,300 >> HANNAH BLUMBERG: Ja. 208 00:09:08,300 --> 00:09:09,550 In theorie is het constante tijd. 209 00:09:09,550 --> 00:09:13,230 Het wordt alleen maar de grootte zijn van het woord dat u wilt opzoeken. 210 00:09:13,230 --> 00:09:15,950 Zelfs als we voegen een ontelbaar Meer woorden om onze trie, 211 00:09:15,950 --> 00:09:18,160 het gaat niet om ons langer te bepalen 212 00:09:18,160 --> 00:09:19,690 Als een bepaald woord in de Trie. 213 00:09:19,690 --> 00:09:21,412 Dus dat is echt leuk. 214 00:09:21,412 --> 00:09:23,697 >> Publiek: Heb je gewoon initialiseren die array? 215 00:09:23,697 --> 00:09:24,780 Je miste een punt of twee. 216 00:09:24,780 --> 00:09:26,130 Kun je gewoon praten over dat voor een tweede? 217 00:09:26,130 --> 00:09:26,680 >> HANNAH BLUMBERG: Tuurlijk, absoluut. 218 00:09:26,680 --> 00:09:27,590 Goede vraag. 219 00:09:27,590 --> 00:09:31,140 De vraag was, we een matrix die 220 00:09:31,140 --> 00:09:34,180 gaat knooppunt ster hebben als in tegenstelling tot enkel het knooppunt, toch? 221 00:09:34,180 --> 00:09:35,180 Koel. 222 00:09:35,180 --> 00:09:37,990 Dus hier wat we zeggen is ons aanbod is gewoon 223 00:09:37,990 --> 00:09:40,035 pointers naar andere arrays. 224 00:09:40,035 --> 00:09:42,910 Dus het is essentially-- deze soort voelt als een gelinkte lijst op deze manier 225 00:09:42,910 --> 00:09:46,620 waarbij elk van deze kinderen enkel punt aan het volgende knooppunt. 226 00:09:46,620 --> 00:09:49,030 >> En de manier waarop we eigenlijk bepalen, hey, OK, 227 00:09:49,030 --> 00:09:52,320 we hebben herhaald door middel van een hele woord, is dit woord in het woordenboek, 228 00:09:52,320 --> 00:09:54,476 Wij controleren alleen deze is_word. 229 00:09:54,476 --> 00:09:55,100 Grote vraag. 230 00:09:55,100 --> 00:09:55,675 Ja. 231 00:09:55,675 --> 00:09:56,216 Publiek: OK. 232 00:09:56,216 --> 00:09:57,470 Dus wat was de runtime voor de trie? 233 00:09:57,470 --> 00:09:58,386 >> HANNAH BLUMBERG: Zeker. 234 00:09:58,386 --> 00:10:01,852 Zodat de runtime voor een trie voor lookup gaat constant tijd. 235 00:10:01,852 --> 00:10:04,310 Dus het is gewoon naar de zijn aantal letters in het woord. 236 00:10:04,310 --> 00:10:06,310 Het is niet afhankelijk van de grootte van het woordenboek 237 00:10:06,310 --> 00:10:09,510 of de omvang van de datastructuur. 238 00:10:09,510 --> 00:10:12,170 Dus hier is een iets eenvoudiger voorbeeld. 239 00:10:12,170 --> 00:10:15,430 >> In dat geval kunt u dat zien het woord vleermuis is in het woordenboek 240 00:10:15,430 --> 00:10:18,900 en je hebt zoom, maar u heb iets als dierentuin niet. 241 00:10:18,900 --> 00:10:20,050 Hoe zouden we dierentuin? 242 00:10:20,050 --> 00:10:24,276 Hoe kunnen we de dierentuin aan onze woordenboek, onze trie? 243 00:10:24,276 --> 00:10:24,776 Ja. 244 00:10:24,776 --> 00:10:27,014 >> PUBLIEK: Maak is_word geldt voor de [onverstaanbaar]. 245 00:10:27,014 --> 00:10:27,930 HANNAH BLUMBERG: Goed. 246 00:10:27,930 --> 00:10:31,731 Dus we zouden zeggen dat Z-O-O, en dan zouden we wilt afvinken die doos ook. 247 00:10:31,731 --> 00:10:32,230 Grote. 248 00:10:32,230 --> 00:10:35,160 249 00:10:35,160 --> 00:10:37,930 Laten we het vergelijken heel kort probeert versus hash tabellen. 250 00:10:37,930 --> 00:10:39,770 Probeert zijn echt geweldig omdat, zoals we al zeiden, 251 00:10:39,770 --> 00:10:41,610 ze zorgen voor een constante tijd opzoeken. 252 00:10:41,610 --> 00:10:44,285 Maar de enorme nadeel is ze gigantische. 253 00:10:44,285 --> 00:10:46,160 U kunt het gevoel krijgen, zelfs door te kijken naar het, 254 00:10:46,160 --> 00:10:48,454 dat het gaat te nemen een enorme hoeveelheid geheugen. 255 00:10:48,454 --> 00:10:50,620 Dus ze gaan veel te zijn groter dan hash tabellen, 256 00:10:50,620 --> 00:10:52,270 maar ze gaan geven ons veel sneller lookup tijden. 257 00:10:52,270 --> 00:10:54,478 Dus dat is een soort van uw afweging, wat je zorg over, 258 00:10:54,478 --> 00:10:57,350 of het nu snelheid of het geheugen. 259 00:10:57,350 --> 00:11:02,251 Heeft u vragen over een van die, alle C gegevensstructuren. 260 00:11:02,251 --> 00:11:02,750 Mooi. 261 00:11:02,750 --> 00:11:03,250 OK. 262 00:11:03,250 --> 00:11:07,322 We gaan om verder te gaan om een ​​beetje beetje web development met Maria. 263 00:11:07,322 --> 00:11:08,280 MARIA ZLATKOVA: Lovely. 264 00:11:08,280 --> 00:11:09,036 OK. 265 00:11:09,036 --> 00:11:10,380 >> HANNAH BLUMBERG: U kunt mijn laptop gebruiken. 266 00:11:10,380 --> 00:11:11,255 >> MARIA ZLATKOVA: Nice. 267 00:11:11,255 --> 00:11:13,320 268 00:11:13,320 --> 00:11:14,912 OK, cool. 269 00:11:14,912 --> 00:11:17,120 Zoals we nu verhuizen naar web ontwikkeling, we praatten een beetje 270 00:11:17,120 --> 00:11:20,680 over het veranderen van permissies van bestanden en mappen 271 00:11:20,680 --> 00:11:24,190 zodat ze toegankelijker kan andere gebruikers, de wereld, 272 00:11:24,190 --> 00:11:28,640 en zodat we kunnen zien hoe in principe kunnen we ze overbrengen 273 00:11:28,640 --> 00:11:32,600 als we dingen zoals websites ontwikkelen dat we meestal gedaan. 274 00:11:32,600 --> 00:11:36,400 >> Zo zagen we de chmod commando, die verandering staat, in principe. 275 00:11:36,400 --> 00:11:39,300 Dat is een Linux-commando en het verandert toegangsrechten 276 00:11:39,300 --> 00:11:40,410 bestandssysteem objecten. 277 00:11:40,410 --> 00:11:43,370 En een bestandssysteem object gewoon een map, een bestand, 278 00:11:43,370 --> 00:11:46,810 iets dat je kunt veranderen de permissies van. 279 00:11:46,810 --> 00:11:53,750 >> Dus om de permissies te zien, we typt u de opdracht ls, lijst, l. 280 00:11:53,750 --> 00:11:56,500 En als we het type dat we meestal zie een aantal toestemmingen 281 00:11:56,500 --> 00:11:59,660 die kijken een beetje zoals deze in de voorkant van een directory naam. 282 00:11:59,660 --> 00:12:01,260 Dus d verwijst naar de directory. 283 00:12:01,260 --> 00:12:05,930 En dan hebben we drie drieklanken die in principe 284 00:12:05,930 --> 00:12:11,675 verwijzen naar de machtigingen van hetzij een gebruiker, een groep of de hele wereld. 285 00:12:11,675 --> 00:12:16,490 >> De aard van de machtigingen die we kunnen hebben voor deze drie groepen mensen 286 00:12:16,490 --> 00:12:20,830 ofwel r voor lezen, w schrijven en x te voeren. 287 00:12:20,830 --> 00:12:23,650 En we kunnen die voor hebben de groep en de wereld ook. 288 00:12:23,650 --> 00:12:26,940 Het lastige is dat soms wanneer we typ het chmod commando, 289 00:12:26,940 --> 00:12:32,960 we zouden sommige aantal typen dat bestond uit drie bits. 290 00:12:32,960 --> 00:12:36,990 Zodat we konden doen, zoals 777 en die in principe 291 00:12:36,990 --> 00:12:40,450 verwees naar de toegevoegde waarde elke van deze triaden 292 00:12:40,450 --> 00:12:45,060 omdat r zou verwijzen naar 4, w zou Zie 2 en x verwijst naar 1, 293 00:12:45,060 --> 00:12:50,020 dus bij elkaar opgeteld, elk van de nummers zou tot een cumulatieve aantal komen 294 00:12:50,020 --> 00:12:52,750 een cumulatieve waarde tussen 0 en 7. 295 00:12:52,750 --> 00:12:55,150 Dus we konden ook 0 voor geen enkele rechten op alle. 296 00:12:55,150 --> 00:12:58,200 En dat zou eigenlijk ons de rechten voor zowel de gebruiker, 297 00:12:58,200 --> 00:13:00,450 de groep, of de wereld. 298 00:13:00,450 --> 00:13:02,620 Heeft u vragen over dit tot nu toe? 299 00:13:02,620 --> 00:13:05,331 >> Publiek: Je zei gelezen was 4? 300 00:13:05,331 --> 00:13:06,164 MARIA ZLATKOVA: Ja. 301 00:13:06,164 --> 00:13:07,568 PUBLIEK: [onverstaanbaar]. 302 00:13:07,568 --> 00:13:08,504 HANNAH BLUMBERG: Yup. 303 00:13:08,504 --> 00:13:11,790 PUBLIEK: En dan door het toevoegen van al die anderen zou je nummer te geven. 304 00:13:11,790 --> 00:13:12,665 MARIA ZLATKOVA: Ja. 305 00:13:12,665 --> 00:13:14,970 Ja. 306 00:13:14,970 --> 00:13:17,810 Dit zijn grote vragen. 307 00:13:17,810 --> 00:13:20,490 Heerlijk. 308 00:13:20,490 --> 00:13:25,340 Vervolgens hebben we sprong in HTML en een iets meer over web development. 309 00:13:25,340 --> 00:13:27,990 Dus HTML betekent alleen HyperText Markup Language. 310 00:13:27,990 --> 00:13:30,460 En dat is de markup taal die standaard 311 00:13:30,460 --> 00:13:32,720 dat het wordt gebruikt om webpagina's te maken. 312 00:13:32,720 --> 00:13:35,750 >> Het is een opmaaktaal genaamd want het is eigenlijk niet gecompileerd. 313 00:13:35,750 --> 00:13:40,310 Het zegt niet hoe sommige code moet worden uitgevoerd of iets dergelijks. 314 00:13:40,310 --> 00:13:44,800 Het schetst rechtvaardige en beschrijft een baan 315 00:13:44,800 --> 00:13:46,840 pagina moet worden opgezet met elk van de elementen 316 00:13:46,840 --> 00:13:48,460 en hoe ze moeten kijken naar de gebruiker. 317 00:13:48,460 --> 00:13:53,090 318 00:13:53,090 --> 00:13:57,110 >> Enkele HTML tags die we ging zijn de volgende. 319 00:13:57,110 --> 00:14:00,500 Al onze HTML-documenten begonnen met de DOCTYPE html. 320 00:14:00,500 --> 00:14:02,550 Dan hebben we altijd de html-tag. 321 00:14:02,550 --> 00:14:03,930 We hebben een kop en een lichaam. 322 00:14:03,930 --> 00:14:07,890 En het is belangrijk dat HTML heeft dit soort geneste structuur 323 00:14:07,890 --> 00:14:09,280 want het is heel duidelijk. 324 00:14:09,280 --> 00:14:13,200 En dan wordt het heel duidelijk als we moeten nauwe tags te openen en eigenlijk. 325 00:14:13,200 --> 00:14:18,400 En we moeten altijd aan te sluiten tags die we hebben geopend. 326 00:14:18,400 --> 00:14:23,170 >> En hier hebben we een aantal van de types van de dingen vooruit die we willen hebben. 327 00:14:23,170 --> 00:14:26,580 Dus we hebben, bijvoorbeeld, de titel van de CS50. 328 00:14:26,580 --> 00:14:31,980 En dan we eigenlijk kan een stylesheet koppelen 329 00:14:31,980 --> 00:14:34,030 die bepaalt hoe wij stylen onze website. 330 00:14:34,030 --> 00:14:35,650 Dat CSS. 331 00:14:35,650 --> 00:14:39,320 We gaan gaan over het in de volgende paar dia's ook. 332 00:14:39,320 --> 00:14:42,580 >> Binnen het lichaam, zetten we sommige klassen en ID's. 333 00:14:42,580 --> 00:14:45,860 En als een herinnering, opnieuw, ID's zijn uniek en klassen 334 00:14:45,860 --> 00:14:47,390 kan worden toegewezen aan meerdere items. 335 00:14:47,390 --> 00:14:52,110 En dat betekent dat kunnen we klassen en id's te gebruiken 336 00:14:52,110 --> 00:14:55,860 binnen andere structures-- dus, voor Bijvoorbeeld, in CSS-bestanden of stijl 337 00:14:55,860 --> 00:15:00,940 sheets-- te verwijzen naar specifieke elementen en eigenlijk zeggen dat we willen stylen 338 00:15:00,940 --> 00:15:03,280 of ontwerp een element in een bepaalde manier. 339 00:15:03,280 --> 00:15:06,440 En we verwijzen naar hen door hun ID's en klassen. 340 00:15:06,440 --> 00:15:09,870 En we kunnen ook verwijzen naar verschillende dingen door labels als goed, 341 00:15:09,870 --> 00:15:13,830 maar id's en klassen alleen wij sommige geven veelzijdigheid en welke specifiek we 342 00:15:13,830 --> 00:15:15,850 wilt verwijzen. 343 00:15:15,850 --> 00:15:19,620 >> Dus slechts een voorbeeld. 344 00:15:19,620 --> 00:15:22,730 We kunnen, opnieuw, binnen een CSS-bestand, waar we 345 00:15:22,730 --> 00:15:25,770 wil een aantal te definiëren style-- zo kleuren, lettertypen, 346 00:15:25,770 --> 00:15:30,340 en dat soort dingen dat-- we kunnen bepalen de stijl voor een lichaam. 347 00:15:30,340 --> 00:15:32,640 Zodat definiëren voor het hele lichaam tag. 348 00:15:32,640 --> 00:15:36,160 Maar dan kunnen we ook definiëren een stijl voor een #title. 349 00:15:36,160 --> 00:15:40,390 En nogmaals, de hashtag verwijst naar onze ID en de stip verwijst naar onze klasse. 350 00:15:40,390 --> 00:15:44,760 >> En vervolgens het .info, we kunt ook een aantal attributen. 351 00:15:44,760 --> 00:15:49,750 En nogmaals, als we terug te gaan, hadden we onze klasse met de naam info en onze ID titel. 352 00:15:49,750 --> 00:15:53,422 En we kunnen zien dat we verwijzen aan hen door #title en .info. 353 00:15:53,422 --> 00:15:55,380 Publiek: Zou je zeggen hashtag [? Adopteer me? ?] 354 00:15:55,380 --> 00:15:55,725 MARIA ZLATKOVA: Sorry? 355 00:15:55,725 --> 00:15:58,120 Publiek: Zou je zeggen hashtag [? Adopteer me? ?] 356 00:15:58,120 --> 00:16:01,400 MARIA ZLATKOVA: Hashtag betekent ID, dus #title 357 00:16:01,400 --> 00:16:07,890 verwijst naar welke elementen hebben deze ID genaamd titel. 358 00:16:07,890 --> 00:16:10,735 En dan de punt verwijst naar een klasse. 359 00:16:10,735 --> 00:16:14,590 Dus .info noemt dit element omdat het de klasse info. 360 00:16:14,590 --> 00:16:15,090 Ja. 361 00:16:15,090 --> 00:16:17,905 >> Publiek: Waarom heb je ze onderscheiden in de HTML? 362 00:16:17,905 --> 00:16:20,985 Waarom zeg je bepaalde dingen zijn ID's en bepaalde dingen zijn klasse? 363 00:16:20,985 --> 00:16:22,610 MARIA ZLATKOVA: Dat is gewoon tot u-- 364 00:16:22,610 --> 00:16:24,151 HANNAH BLUMBERG: Herhaal de vraag. 365 00:16:24,151 --> 00:16:25,370 MARIA ZLATKOVA: Oh, sorry. 366 00:16:25,370 --> 00:16:29,480 Waarom hebben we bepaalde elementen onderscheiden als id's en andere elementen als klassen? 367 00:16:29,480 --> 00:16:34,760 Dat is gewoon omdat het echt vaak een ontwerp keuze. 368 00:16:34,760 --> 00:16:38,520 Het geeft je een heleboel veelzijdigheid in zijn 369 00:16:38,520 --> 00:16:43,250 kunnen zeggen dat ik wil dit specifiek item deze ID hebben, omdat ze willen 370 00:16:43,250 --> 00:16:45,300 om een ​​heleboel dingen te doen met het, en ik alleen maar 371 00:16:45,300 --> 00:16:50,010 willen een stijl te definiëren, bepaalde stijl of kleur wat voor dat item. 372 00:16:50,010 --> 00:16:52,630 En de manier om dat te doen is gewoon waardoor het een ID. 373 00:16:52,630 --> 00:16:55,060 >> En dan als ik willen hebben een paar verschillende items 374 00:16:55,060 --> 00:16:58,940 hebben dat in plaats van gaan en het instellen their-- 375 00:16:58,940 --> 00:17:03,840 in plaats van doen door tag omdat de tag zou 376 00:17:03,840 --> 00:17:07,369 zet de cel voor de hele tag voor elke keer dat tag wordt gebruikt, 377 00:17:07,369 --> 00:17:09,740 U kunt een klasse ingesteld op meerdere items. 378 00:17:09,740 --> 00:17:15,109 En dan gewoon toegang tot die klasse en zeggen: Ik wil deze klasse stijl op die manier. 379 00:17:15,109 --> 00:17:17,579 >> En nogmaals, de klasse kan zijn meerdere verschillende items 380 00:17:17,579 --> 00:17:21,150 En de ID moet uniek zijn. 381 00:17:21,150 --> 00:17:21,849 Grote vragen. 382 00:17:21,849 --> 00:17:25,339 Een andere vragen? 383 00:17:25,339 --> 00:17:26,220 OK, geweldig. 384 00:17:26,220 --> 00:17:30,680 385 00:17:30,680 --> 00:17:35,330 Nogmaals, dit is hoe deze selectors wordt verwezen in CSS, met hashtag, 386 00:17:35,330 --> 00:17:40,031 met stip, of zonder iets voor toewijzen van de stijl van sommige tag, 387 00:17:40,031 --> 00:17:40,530 zoals lichaam. 388 00:17:40,530 --> 00:17:43,500 389 00:17:43,500 --> 00:17:47,860 En hier hebben we de algemene syntax van hoe dit gebeurt. 390 00:17:47,860 --> 00:17:52,830 391 00:17:52,830 --> 00:17:55,680 >> Wat best herhalen practices voor HTML en CSS, 392 00:17:55,680 --> 00:17:59,170 moeten we, opnieuw, sluit alle de HTML-tags die we openen. 393 00:17:59,170 --> 00:18:03,950 En wat wij u aanbevolen doen voor uw laatste projecten, 394 00:18:03,950 --> 00:18:10,560 evenals voor CS50 Finance, is om zeker van zijn dat al uw HTML valideert. 395 00:18:10,560 --> 00:18:12,920 En dat is gedaan met de W3 Validator. 396 00:18:12,920 --> 00:18:16,940 >> En dan wat we deden en wat we raden het doen 397 00:18:16,940 --> 00:18:19,790 scheidt stijl, dus CSS van markup HTML. 398 00:18:19,790 --> 00:18:24,210 Dus alles wat aan hoe uw pagina gaat visueel zoeken 399 00:18:24,210 --> 00:18:27,330 en hoe het zal worden gewijzigd moet gaan in een CSS-document. 400 00:18:27,330 --> 00:18:33,880 En dan je markup zeggen hoe de dingen zijn ten opzichte van elkaar HTML, 401 00:18:33,880 --> 00:18:37,550 en dat moet binnen gaan van uw HTML-documenten. 402 00:18:37,550 --> 00:18:38,590 Nog vragen? 403 00:18:38,590 --> 00:18:39,226 Mhm. 404 00:18:39,226 --> 00:18:42,628 >> Publiek: Wat er precies gaat Op de pagina validatie 405 00:18:42,628 --> 00:18:47,945 als we het valideren van de HTML dat [onverstaanbaar] geschapen? 406 00:18:47,945 --> 00:18:49,850 >> MARIA ZLATKOVA: Dus what-- denkt. 407 00:18:49,850 --> 00:18:53,020 Dus wat er precies aan de hand op met pagina validatie 408 00:18:53,020 --> 00:18:55,570 en waarom moeten we dat doen? 409 00:18:55,570 --> 00:18:59,180 Kortom, we moeten dat doen omdat een heleboel keer, uw browser 410 00:18:59,180 --> 00:19:01,390 als je niet een tag te sluiten of zoiets, 411 00:19:01,390 --> 00:19:05,680 Uw browser is nog steeds te maken van een pagina en kan nog steeds werken, 412 00:19:05,680 --> 00:19:10,840 maar het is de beste praktijken om ervoor te zorgen dat u hebt, opnieuw, gesloten alle labels, 413 00:19:10,840 --> 00:19:13,190 dat alle elementen de manier waarop ze zouden moeten zijn, 414 00:19:13,190 --> 00:19:18,470 en in feite dat het door de conventies die vooraf zijn ingesteld. 415 00:19:18,470 --> 00:19:21,970 >> Het is, nogmaals, slechts een ding dat je moet 416 00:19:21,970 --> 00:19:24,040 te leren om te doen, in tegenstelling tot het hebben 417 00:19:24,040 --> 00:19:25,696 slordiger code en dat soort dingen. 418 00:19:25,696 --> 00:19:26,688 Ja. 419 00:19:26,688 --> 00:19:27,680 Oh, sorry. 420 00:19:27,680 --> 00:19:29,221 Ik dacht dat je het verhogen van uw hand. 421 00:19:29,221 --> 00:19:31,240 PUBLIEK: Nee, ik was gewoon [onverstaanbaar]. 422 00:19:31,240 --> 00:19:33,800 >> MARIA ZLATKOVA: OK. 423 00:19:33,800 --> 00:19:34,640 >> Publiek: Dank je wel. 424 00:19:34,640 --> 00:19:36,181 >> MARIA ZLATKOVA: Natuurlijk, dank je. 425 00:19:36,181 --> 00:19:41,680 Dus nogmaals, er aan de hand in hoe Informatie wordt overgedragen 426 00:19:41,680 --> 00:19:44,630 en communicatie modellen om informatie. 427 00:19:44,630 --> 00:19:45,730 TCP / IP. 428 00:19:45,730 --> 00:19:48,600 TCP betekent gewoon Transmission Control Protocol en IP- 429 00:19:48,600 --> 00:19:51,260 verwijst naar Internet Protocol. 430 00:19:51,260 --> 00:19:54,275 En dat alleen maar verwijst naar de manier waarop data wordt geleverd. 431 00:19:54,275 --> 00:19:59,470 432 00:19:59,470 --> 00:20:02,710 >> Als we een aantal gegevens die moet geleverd aan zo u-- 433 00:20:02,710 --> 00:20:06,770 u een verzoek voor een bepaalde server. 434 00:20:06,770 --> 00:20:09,800 Bijvoorbeeld, als we probeert te openen cs50.net, 435 00:20:09,800 --> 00:20:12,420 we een verzoek om de CS50 server en we 436 00:20:12,420 --> 00:20:14,720 zien dat we willen krijgen dit soort informatie. 437 00:20:14,720 --> 00:20:19,294 En vervolgens op basis van dit protocol voor hoe deze informatie wordt geleverd, 438 00:20:19,294 --> 00:20:21,460 de server geeft informatie terug naar ons, de klant. 439 00:20:21,460 --> 00:20:25,590 En dan zijn we in staat om te bekijken de informatie voor de pagina 440 00:20:25,590 --> 00:20:26,390 en gebruik het dan. 441 00:20:26,390 --> 00:20:29,300 442 00:20:29,300 --> 00:20:33,050 >> Dus dan Hypertext Transfer Protocol is gewoon een ander protocol of set 443 00:20:33,050 --> 00:20:37,470 van de conventies die bepaalt hoe de webbrowser en de webserver 444 00:20:37,470 --> 00:20:38,890 moeten communiceren. 445 00:20:38,890 --> 00:20:43,730 En het zetten van dit alles samen, HTTP, weer, 446 00:20:43,730 --> 00:20:50,960 alleen bepaalt hoe deze hypertext gedefinieerd door de HTML die we hebben gewerkt het, 447 00:20:50,960 --> 00:20:59,500 hoe het aan u moeten worden geleverd en hoe dat gegevens die aan u geleverd 448 00:20:59,500 --> 00:21:00,540 krijgt u. 449 00:21:00,540 --> 00:21:05,990 >> En dat is waarom, als jullie herinneren van een klasse, hadden we veel verzoeken 450 00:21:05,990 --> 00:21:08,970 en we hadden veel van de syntaxis voor deze verzoeken dat we 451 00:21:08,970 --> 00:21:10,250 ga dan nu. 452 00:21:10,250 --> 00:21:13,270 Dus nogmaals, als we sturen een verzoek naar een server, 453 00:21:13,270 --> 00:21:15,920 moeten we een paar dingen te definiëren. 454 00:21:15,920 --> 00:21:18,520 Dus moeten we de soort te vinden van het verzoek dat we instellen. 455 00:21:18,520 --> 00:21:22,180 En nogmaals, we hebben, bijvoorbeeld, GET is een type methode 456 00:21:22,180 --> 00:21:25,290 dat we in ons verzoek. 457 00:21:25,290 --> 00:21:31,710 >> En dan is HTTP / 1.1 alleen de protocol dat we gebruiken momenteel. 458 00:21:31,710 --> 00:21:34,224 459 00:21:34,224 --> 00:21:36,890 De meeste van de tijd, dat gaat aan het protocol dat we gebruiken. 460 00:21:36,890 --> 00:21:40,290 Dus als je een vraag als dat op uw quiz. 461 00:21:40,290 --> 00:21:43,120 Dat is de conventies dat we tot nu toe. 462 00:21:43,120 --> 00:21:46,580 >> Backslash verwijst naar wat voor soort van dingen die we aanvragen. 463 00:21:46,580 --> 00:21:52,810 Dan onze gastheer, bijvoorbeeld, in dit geval, we proberen te gaan naar google.com. 464 00:21:52,810 --> 00:21:57,070 Dus dit is de waarde voor een host. 465 00:21:57,070 --> 00:21:59,330 Dit is een type aanvraag die kunnen worden verzonden. 466 00:21:59,330 --> 00:22:02,890 >> En dan een soort van antwoord dat kon verzonden, opnieuw op basis van dit protocol, 467 00:22:02,890 --> 00:22:05,190 weer, HTTP / 1.1. 468 00:22:05,190 --> 00:22:07,150 Dus dat is de HTTP-versie weer. 469 00:22:07,150 --> 00:22:09,730 200 OK is slechts de status code. 470 00:22:09,730 --> 00:22:12,860 En dat OK is gewoon een uitdrukking op basis van die status code. 471 00:22:12,860 --> 00:22:15,520 >> En dan is de Content-Type verwijst naar het type 472 00:22:15,520 --> 00:22:20,295 dat wordt teruggegeven aan u, dat is voor die webpagina die u ontvangt 473 00:22:20,295 --> 00:22:22,570 en dat uw browser kan daarna maken. 474 00:22:22,570 --> 00:22:24,401 En dat is text / html. 475 00:22:24,401 --> 00:22:26,660 >> Publiek: Wat betekent 1,1 betekenen? 476 00:22:26,660 --> 00:22:29,910 >> MARIA ZLATKOVA: Dat is gewoon de versie van-- oh, wat betekent 1,1 betekenen? 477 00:22:29,910 --> 00:22:37,075 Dat is gewoon de versie, de HTTP- versie van een protocol dat we gebruiken. 478 00:22:37,075 --> 00:22:37,700 Grote vraag. 479 00:22:37,700 --> 00:22:38,366 Andere vragen? 480 00:22:38,366 --> 00:22:41,222 481 00:22:41,222 --> 00:22:45,080 >> Publiek: Kunt u samenvatten Content-Type echt snel? 482 00:22:45,080 --> 00:22:48,150 >> MARIA ZLATKOVA: Zodat is wat de server. 483 00:22:48,150 --> 00:22:51,020 het type information-- wat content type was de vragen. 484 00:22:51,020 --> 00:22:53,400 Dat was het type informatie die je terug te krijgen 485 00:22:53,400 --> 00:22:58,200 van de server, het type gegevens die de browser kan dan 486 00:22:58,200 --> 00:23:00,604 maken die u gebruikt. 487 00:23:00,604 --> 00:23:03,020 PUBLIEK: Is dat wat dit protocol vertelt u te doen? 488 00:23:03,020 --> 00:23:03,390 MARIA ZLATKOVA: Sorry? 489 00:23:03,390 --> 00:23:05,380 PUBLIEK: Is dat wat het protocol zeggen? 490 00:23:05,380 --> 00:23:05,915 MARIA ZLATKOVA: De protocol-- 491 00:23:05,915 --> 00:23:07,940 Publiek: --wat de Content-Type is of what-- 492 00:23:07,940 --> 00:23:12,040 MARIA ZLATKOVA: Het protocol is gebaseerd on-- wat is het protocol dat u vertellen? 493 00:23:12,040 --> 00:23:16,070 Dat is gewoon de manier waarop dat deze informatie 494 00:23:16,070 --> 00:23:18,610 werd geleverd aan u op basis Op wat voor soort protocol 495 00:23:18,610 --> 00:23:21,830 werd deze informatie gekregen afgeleverd naar u terug. 496 00:23:21,830 --> 00:23:23,500 Is dat zinvol soort? 497 00:23:23,500 --> 00:23:28,320 498 00:23:28,320 --> 00:23:30,070 HANNAH BLUMBERG: U kan bedenken protocol 499 00:23:30,070 --> 00:23:33,300 als a-- Ik denk Professor Malan beschreef 500 00:23:33,300 --> 00:23:36,910 in de klas als een soort van a-- het is het equivalent van het menselijk handenschudden. 501 00:23:36,910 --> 00:23:44,930 Zeg, als, hey, ik ben een verzoek en ik weten hoe HTTP van versie 1.1 afhandelen. 502 00:23:44,930 --> 00:23:48,770 En dan is de server zegt, oh, OK, ik-- en beide bestaan. 503 00:23:48,770 --> 00:23:51,337 Ik weet ook hoe om te gaan met HTTP / 1.1. 504 00:23:51,337 --> 00:23:53,170 En ik ga geven je bepaalde inhoud terug. 505 00:23:53,170 --> 00:23:56,230 In dit geval gaat het te zijn van het type text / html. 506 00:23:56,230 --> 00:23:58,480 Dus het is een soort van gewoon een manier van hen communicating-- 507 00:23:58,480 --> 00:24:00,480 >> MARIA ZLATKOVA: Het is gewoon bevestigen dat u bent 508 00:24:00,480 --> 00:24:03,290 zowel volgens dezelfde protocol en dat beide 509 00:24:03,290 --> 00:24:06,620 de opdrachtgever en de server-- zo uw browser en de server-- 510 00:24:06,620 --> 00:24:09,280 soort weet wat je bent het over en hebben 511 00:24:09,280 --> 00:24:12,557 de conventie voor het doorgeven van data. 512 00:24:12,557 --> 00:24:17,022 >> Publiek: Dus de Content-Type part-- de Content-Type text / html-- dat is 513 00:24:17,022 --> 00:24:18,521 een apart deel van het zelfde bericht? 514 00:24:18,521 --> 00:24:20,509 Of is het een deel van laten we zeggen, 200? 515 00:24:20,509 --> 00:24:22,010 Heeft 200 vertel ze dat of is-- 516 00:24:22,010 --> 00:24:23,770 >> MARIA ZLATKOVA: 200 zegt dat het ging allemaal OK. 517 00:24:23,770 --> 00:24:27,900 En dan type inhoud is een soort van afzonderlijk deel van hetzelfde bericht, 518 00:24:27,900 --> 00:24:34,274 en zeggen het ding dat ik Teruggekeerde heeft dit type text / html. 519 00:24:34,274 --> 00:24:35,690 Het is gewoon het geven van meer informatie. 520 00:24:35,690 --> 00:24:38,700 521 00:24:38,700 --> 00:24:39,995 Hebben iets toe te voegen? 522 00:24:39,995 --> 00:24:40,495 OK. 523 00:24:40,495 --> 00:24:43,590 524 00:24:43,590 --> 00:24:46,530 >> Andere vragen over dit? 525 00:24:46,530 --> 00:24:48,370 Geweldig. 526 00:24:48,370 --> 00:24:54,070 Dus sommige andere HTTP-statussen die we naast konden krijgen tot 200 OK, 527 00:24:54,070 --> 00:24:59,500 degenen die we misschien hebben gezien misschien veel zijn 403 en 404. 528 00:24:59,500 --> 00:25:05,190 Dus 404, als je probeert te toegang tot iets dat niet bestaat. 529 00:25:05,190 --> 00:25:10,460 Dus bijvoorbeeld, in CS50 Finance psets, 530 00:25:10,460 --> 00:25:15,640 als je had renderen quote.html en je hebt dat bestand hebben, 531 00:25:15,640 --> 00:25:19,740 maar je had quote.php, dat zou resulteren in een 404 Not Found 532 00:25:19,740 --> 00:25:21,600 omdat het bestand mogelijk niet bestaan. 533 00:25:21,600 --> 00:25:25,690 >> Voor een 403 verboden, dat verwijst naar de rechten. 534 00:25:25,690 --> 00:25:31,150 Dus als een bestand is niet leesbaar door de wereld, zou u een 403 krijgt terug. 535 00:25:31,150 --> 00:25:34,510 536 00:25:34,510 --> 00:25:37,810 Sommige anderen die je misschien get-- 301, definitief verhuisd; 537 00:25:37,810 --> 00:25:41,300 302, Gevonden; 304, gewijzigd; 400, Bad Request; 538 00:25:41,300 --> 00:25:47,330 en dan Internal Server Error voor 500 en 503, Service niet beschikbaar. 539 00:25:47,330 --> 00:25:48,140 Ja. 540 00:25:48,140 --> 00:25:51,490 >> Publiek: Zullen we verwacht onthouden al die statussen? 541 00:25:51,490 --> 00:25:53,739 MARIA ZLATKOVA: ik zou hebben ze op je cheat sheet. 542 00:25:53,739 --> 00:25:55,146 [GELACH] 543 00:25:55,146 --> 00:25:59,954 Publiek: Zijn we verwacht weet wat triggers elke? 544 00:25:59,954 --> 00:26:00,995 MARIA ZLATKOVA: Zijn ze? 545 00:26:00,995 --> 00:26:03,870 HANNAH BLUMBERG: Voor degenen die we hebben lopen into-- dus de vraag was-- 546 00:26:03,870 --> 00:26:08,010 MARIA ZLATKOVA: Zijn ze verwacht weten wat elk van deze toestand 547 00:26:08,010 --> 00:26:09,330 codes kunnen worden veroorzaakt door? 548 00:26:09,330 --> 00:26:13,240 Dus voor degenen die we hebben gebruikt en liep in, zou ik zeggen, ja. 549 00:26:13,240 --> 00:26:16,610 Dus we hebben zeker gezien 200 OK en doceerde in psets. 550 00:26:16,610 --> 00:26:19,071 We hebben gezien 403, 404. 551 00:26:19,071 --> 00:26:20,550 Voor anderen? 552 00:26:20,550 --> 00:26:22,690 >> HANNAH BLUMBERG: ik zou zeggen 500 lijkt eerlijk spel. 553 00:26:22,690 --> 00:26:23,330 >> MARIA ZLATKOVA: 500, ja. 554 00:26:23,330 --> 00:26:24,246 >> HANNAH BLUMBERG: Ja. 555 00:26:24,246 --> 00:26:27,006 Gewoon eens een algemeen gevoel wat hen veroorzaakt. 556 00:26:27,006 --> 00:26:28,880 En ook alleen door deze namen, kunt u soort 557 00:26:28,880 --> 00:26:32,890 zoals maken een educated guess als wat eigenlijk veroorzaakt hen. 558 00:26:32,890 --> 00:26:36,919 Verplaats bijvoorbeeld permanent, waarschijnlijk het bestand is definitief verhuisd. 559 00:26:36,919 --> 00:26:39,328 >> Publiek: Maar op een eerdere examen, er was een zo 560 00:26:39,328 --> 00:26:41,050 hoe ga je ons verwachten beantwoorden? 561 00:26:41,050 --> 00:26:42,883 >> HANNAH BLUMBERG: Dat nul punten waard. 562 00:26:42,883 --> 00:26:45,870 De vraag op 418 op de theepot is technisch gezien een HTTP-status, 563 00:26:45,870 --> 00:26:47,090 maar het was nul punten waard. 564 00:26:47,090 --> 00:26:48,320 Uiteraard, je bent niet verwacht dat ze weten. 565 00:26:48,320 --> 00:26:49,670 >> Publiek: Is het een echte? 566 00:26:49,670 --> 00:26:51,970 >> HANNAH BLUMBERG: Het is een echte één, maar het betekent niets. 567 00:26:51,970 --> 00:26:52,700 Het is maar een grapje. 568 00:26:52,700 --> 00:26:55,480 569 00:26:55,480 --> 00:26:57,010 Internet mensen zijn grappig. 570 00:26:57,010 --> 00:26:59,680 >> MARIA ZLATKOVA: Great vragen, jongens. 571 00:26:59,680 --> 00:27:01,452 Een andere vragen? 572 00:27:01,452 --> 00:27:04,891 >> Publiek: Wat is Internal Server Error? 573 00:27:04,891 --> 00:27:06,640 MARIA ZLATKOVA: Intern server error gewoon 574 00:27:06,640 --> 00:27:10,050 betekent dat u bent geweest niet in staat om te communiceren 575 00:27:10,050 --> 00:27:13,400 met de server om wat voor reden. 576 00:27:13,400 --> 00:27:15,400 Dus het is niet per se iets dat te maken heeft 577 00:27:15,400 --> 00:27:19,170 met de klant of iets dergelijks. 578 00:27:19,170 --> 00:27:22,170 Ik weet niet van specifieke voorbeeld dat we gegaan dan om uit te leggen, 579 00:27:22,170 --> 00:27:23,000 maar ja. 580 00:27:23,000 --> 00:27:23,250 >> HANNAH BLUMBERG: Zeker. 581 00:27:23,250 --> 00:27:25,625 Dus bijvoorbeeld, zoals laten zeggen dat je werkt aan mashup 582 00:27:25,625 --> 00:27:30,440 en een server van Google ging voor sommige Daarom is een stroomstoring, laten we zeggen. 583 00:27:30,440 --> 00:27:33,400 Dat zou een interne server fout of een soort van-- zoals jij 584 00:27:33,400 --> 00:27:34,630 zou geen antwoord terug te krijgen. 585 00:27:34,630 --> 00:27:35,260 >> MARIA ZLATKOVA: Ja. 586 00:27:35,260 --> 00:27:37,050 Het is net als je niet in staat om te communiceren 587 00:27:37,050 --> 00:27:40,299 met de server om wat voor reden, omdat ervan naar beneden of een andere reden. 588 00:27:40,299 --> 00:27:44,430 589 00:27:44,430 --> 00:27:47,690 Dus springen in PHP. 590 00:27:47,690 --> 00:27:49,930 PHP tegenstelling tot HTML, is een programmeertaal. 591 00:27:49,930 --> 00:27:54,820 En we begonnen te gebruiken, want het is zeer nuttig voor web ontwikkeling. 592 00:27:54,820 --> 00:27:56,940 >> We voor het eerst gebruikt in CS50 Finance. 593 00:27:56,940 --> 00:28:02,240 En het helpt eigenlijk brengen ons samen deze markup, het ontwerp, 594 00:28:02,240 --> 00:28:07,460 en hoe we eigenlijk informatie gebruiken om dingen weer te geven op een webpagina. 595 00:28:07,460 --> 00:28:11,870 Dus PHP zelf betekent PHP Hypertext Preprocessor, 596 00:28:11,870 --> 00:28:15,360 dus het is een recursieve backnorym zelf. 597 00:28:15,360 --> 00:28:22,330 En labels te openen voor PHP we links en rechts pijlen met de vraagtekens 598 00:28:22,330 --> 00:28:23,060 en php. 599 00:28:23,060 --> 00:28:25,890 >> Dus we hebben al een hoop gezien. 600 00:28:25,890 --> 00:28:29,150 Nu, we gaan gewoon over te gaan enkele van de fundamentele dingen over. 601 00:28:29,150 --> 00:28:32,280 Dus met PHP, de variabele namen beginnen met een dollarteken. 602 00:28:32,280 --> 00:28:35,660 We niet opgeven, nogmaals, een variabele typt meer. 603 00:28:35,660 --> 00:28:38,450 Net zoals we hebben gedaan met C, we niet nodig om dat te doen. 604 00:28:38,450 --> 00:28:41,670 605 00:28:41,670 --> 00:28:44,490 >> Wij kunnen een heleboel verschillende doen dingen met variabelen. 606 00:28:44,490 --> 00:28:47,750 We kunnen ze samen te stellen door het aaneenschakelen van hen 607 00:28:47,750 --> 00:28:52,900 de puntnotatie die konden we niet opnieuw doen in C. 608 00:28:52,900 --> 00:28:57,490 Nogmaals, we hebben iets meer veelzijdigheid met PHP in termen van variabelen. 609 00:28:57,490 --> 00:29:00,080 Nogmaals, we hebben niet een van de belangrijkste functie. 610 00:29:00,080 --> 00:29:03,370 >> En PHP wordt geïnterpreteerd in tegenstelling tot gecompileerd 611 00:29:03,370 --> 00:29:09,970 Dus hoe hebben we te maken voor C-bestanden, we hebben niet om dat te doen voor PHP. 612 00:29:09,970 --> 00:29:15,440 Maar, zoals de taal wordt gerund door zelf, wordt het geïnterpreteerd. 613 00:29:15,440 --> 00:29:18,550 En dan losjes getypt betekent gewoon dat we 614 00:29:18,550 --> 00:29:22,490 hoeft niet aan een variabele specificeren type en de variabele types 615 00:29:22,490 --> 00:29:25,415 begrepen tijdens de uitvoering. 616 00:29:25,415 --> 00:29:29,185 >> Publiek: Maar wat heb je bedoel dot aaneenschakeling? 617 00:29:29,185 --> 00:29:30,060 MARIA ZLATKOVA: Zeker. 618 00:29:30,060 --> 00:29:37,660 Wanneer we willen dingen together-- zetten dus als we hadden enkele variabele die 619 00:29:37,660 --> 00:29:41,500 had de waarde van 3 en we hadden een variabele die de waarde van de string had, 620 00:29:41,500 --> 00:29:45,920 we konden de variabelen samen te stellen door er een punt ertussen 621 00:29:45,920 --> 00:29:46,970 en aaneenschakelen van hen. 622 00:29:46,970 --> 00:29:52,670 Of we kunnen een creëren variabele genaamd naam 623 00:29:52,670 --> 00:29:56,900 en zet het samen door aaneenschakelen twee snaren. 624 00:29:56,900 --> 00:30:00,680 >> Dus als we hadden een koord in dubbel quotes en we zetten een punt achter het, 625 00:30:00,680 --> 00:30:03,660 en dan hadden we nog een koord, dat zou een koord geheel te maken. 626 00:30:03,660 --> 00:30:05,242 >> Publiek: OK. 627 00:30:05,242 --> 00:30:06,450 MARIA Letland: Was dat duidelijk? 628 00:30:06,450 --> 00:30:07,099 Publiek: Ja. 629 00:30:07,099 --> 00:30:07,890 MARIA ZLATKOVA: OK. 630 00:30:07,890 --> 00:30:08,766 Ja. 631 00:30:08,766 --> 00:30:11,146 >> Publiek: Als je zegt plaats uitgelegd gecompileerd 632 00:30:11,146 --> 00:30:14,160 heb je het over je niet moet zo specifiek bij te 633 00:30:14,160 --> 00:30:15,906 het gaat om PHP versus C? 634 00:30:15,906 --> 00:30:18,085 635 00:30:18,085 --> 00:30:20,710 MARIA ZLATKOVA: Als we zeggen uitgelegd in tegenstelling tot gecompileerd 636 00:30:20,710 --> 00:30:21,850 wat bedoelen we? 637 00:30:21,850 --> 00:30:26,220 Dus dat betekent dat we niet nodig hebben uitvoerbare bestanden naar PHP draaien. 638 00:30:26,220 --> 00:30:29,870 Het betekent dat het draait als het gaat. 639 00:30:29,870 --> 00:30:31,650 Slaat dat ergens op? 640 00:30:31,650 --> 00:30:32,495 Een beetje meer. 641 00:30:32,495 --> 00:30:34,620 HANNAH BLUMBERG: Dus u maar kunt bedenken van een tolk 642 00:30:34,620 --> 00:30:38,980 als een ander programma dat verantwoordelijk voor de lijn die door de lijn door PHP 643 00:30:38,980 --> 00:30:42,745 en eigenlijk uitvoeren hiervan, in tegenstelling om het opstellen van het allemaal neer op binaire. 644 00:30:42,745 --> 00:30:46,050 Het doet er niet echt iets betekenen over hoe specifieke we moeten zijn. 645 00:30:46,050 --> 00:30:49,470 We moeten nog steeds om precies te zijn, en niet Vergeet uw puntkomma, en zorg ervoor dat 646 00:30:49,470 --> 00:30:51,470 je hebt je dollarteken, en dat soort dingen. 647 00:30:51,470 --> 00:30:52,240 Goede vraag. 648 00:30:52,240 --> 00:30:53,115 >> MARIA ZLATKOVA: Ja. 649 00:30:53,115 --> 00:30:55,590 Dus regel voor regel, als tegen met C bestanden, 650 00:30:55,590 --> 00:30:59,100 we moeten de hele finale maken voordat we daadwerkelijk kunnen draaien. 651 00:30:59,100 --> 00:31:00,360 Dat is het belangrijkste verschil. 652 00:31:00,360 --> 00:31:02,655 Maar nogmaals, we kunnen niet echt minder specifiek. 653 00:31:02,655 --> 00:31:08,760 654 00:31:08,760 --> 00:31:13,950 Dus arrays in PHP vertegenwoordigen eigenlijk een geordende kaart. 655 00:31:13,950 --> 00:31:17,550 >> Dus arrays associate waarden te toetsen. 656 00:31:17,550 --> 00:31:23,350 De twee manieren om een ​​te verklaren array, op basis van deze syntax, 657 00:31:23,350 --> 00:31:26,380 we kunnen meer expliciet zijn zeggen we hebben een scala 658 00:31:26,380 --> 00:31:31,010 en we hebben dit key1 die is toegewezen aan Dit waarde1, key2 dat value2 kaarten. 659 00:31:31,010 --> 00:31:34,660 Of we kunnen gewoon een array dat de waarden zelf bevat 660 00:31:34,660 --> 00:31:38,360 en vervolgens de toetsen opgevat op een manier. 661 00:31:38,360 --> 00:31:40,000 Heeft u vragen over dit? 662 00:31:40,000 --> 00:31:42,500 >> Publiek: Wat zou de sleutels in het tweede voorbeeld? 663 00:31:42,500 --> 00:31:47,100 664 00:31:47,100 --> 00:31:47,920 0, 1, 2, 3? 665 00:31:47,920 --> 00:31:50,650 666 00:31:50,650 --> 00:31:55,780 >> MARIA ZLATKOVA: Bijvoorbeeld, het is gewoon sleutels in deze niet noodzakelijkerwijs 667 00:31:55,780 --> 00:31:56,550 een verschil maken. 668 00:31:56,550 --> 00:32:01,720 Ze bepalen hoe je kunt Gebruik de waarden erin. 669 00:32:01,720 --> 00:32:08,660 Dus als we een foreach lus in PHP, dat zou 670 00:32:08,660 --> 00:32:14,760 ons in staat stellen om te gaan door alle waarden, we kunnen gaan door alle waarden, 671 00:32:14,760 --> 00:32:19,570 zelfs als we hadden of hadden niet gedefinieerd een specifieke toets op de site 672 00:32:19,570 --> 00:32:20,820 previous syntax. 673 00:32:20,820 --> 00:32:23,460 >> Dus zelfs met dit soort array, konden we nog steeds 674 00:32:23,460 --> 00:32:26,260 hebben een foreach lus die gaat door elk 675 00:32:26,260 --> 00:32:31,240 van de waarden in de sleutel in de array. 676 00:32:31,240 --> 00:32:36,180 Zodat de syntaxis van een foreach lus, beginnen we met een matrix. 677 00:32:36,180 --> 00:32:38,720 678 00:32:38,720 --> 00:32:43,900 Dit $ arr variabele is onze werkelijke scala wij gedefinieerd in de vorige dia 679 00:32:43,900 --> 00:32:47,550 als waarde die letterlijk gaat door elk van de waarden, 680 00:32:47,550 --> 00:32:50,122 ongeacht we hadden een sleutel of niet. 681 00:32:50,122 --> 00:32:53,080 En dan kunnen we iets doen met de waarde binnenkant van de foreach lus. 682 00:32:53,080 --> 00:32:57,730 Dus nogmaals, als we hadden een array als dit hier created-- 683 00:32:57,730 --> 00:33:03,270 dus we hebben de sleutel van foo en de waarde van bar, de sleutel van baz en de waarde van qux-- 684 00:33:03,270 --> 00:33:09,730 kunnen we een foreach lus die gaat door reeks als belangrijke waarde 685 00:33:09,730 --> 00:33:11,900 en dan iets doen de sleutel en / of waarde. 686 00:33:11,900 --> 00:33:15,980 Maar we doen niet altijd moet een foreach lussen die 687 00:33:15,980 --> 00:33:19,410 gaat door array key kaart om waarde. 688 00:33:19,410 --> 00:33:26,060 We kunnen gaan door de foreach lus array waarde. 689 00:33:26,060 --> 00:33:28,990 >> HANNAH BLUMBERG: En ik denk dat to-- was je vraag, wat 690 00:33:28,990 --> 00:33:31,229 is de impliciete index? 691 00:33:31,229 --> 00:33:31,895 Publiek: Kinda. 692 00:33:31,895 --> 00:33:32,240 MARIA ZLATKOVA: Oh. 693 00:33:32,240 --> 00:33:33,406 HANNAH BLUMBERG: Ja, ja. 694 00:33:33,406 --> 00:33:36,150 Dus eigenlijk, als je niet opgeeft een sleutel, het gaat om 01. 695 00:33:36,150 --> 00:33:37,140 >> MARIA ZLATKOVA: Ja. 696 00:33:37,140 --> 00:33:41,718 Net als bij C, het is nul geïndexeerd als je geen sleutel op te geven. 697 00:33:41,718 --> 00:33:42,384 Publiek: Sorry. 698 00:33:42,384 --> 00:33:43,827 Zou je kunnen proberen te spreken een beetje harder? 699 00:33:43,827 --> 00:33:45,270 Ik heb een beetje problemen met horen alles. 700 00:33:45,270 --> 00:33:46,478 >> MARIA ZLATKOVA: Het spijt me zo. 701 00:33:46,478 --> 00:33:48,439 Ja natuurlijk. 702 00:33:48,439 --> 00:33:50,230 Dus wil je me om weer te gaan over dit? 703 00:33:50,230 --> 00:33:51,680 Of is dit-- 704 00:33:51,680 --> 00:33:54,930 Publiek: Dus op de vorige slide-- als je kon gewoon terug voor een seconde. 705 00:33:54,930 --> 00:33:57,313 MARIA ZLATKOVA: Natuurlijk, sorry. 706 00:33:57,313 --> 00:33:59,237 Publiek: Dus de tweede matrix hier niet 707 00:33:59,237 --> 00:34:04,135 lijken een waarde in te toetsen, soort van [? causaliteit. ?] 708 00:34:04,135 --> 00:34:05,343 MARIA ZLATKOVA: Recht, recht. 709 00:34:05,343 --> 00:34:07,608 Publiek: Dus hoe werkt dat als je zegt het is alles of niets. 710 00:34:07,608 --> 00:34:08,969 Voor mij, dat lijkt een [? foo?] al. 711 00:34:08,969 --> 00:34:10,093 >> MARIA ZLATKOVA: Ja, ja. 712 00:34:10,093 --> 00:34:12,969 Dus nogmaals, dit is een bestelde de kaart in deze zin 713 00:34:12,969 --> 00:34:15,639 dat begrepen, bijvoorbeeld, de indexen 714 00:34:15,639 --> 00:34:20,159 Hier kan worden opgevat als 0, 1, 2, 3. 715 00:34:20,159 --> 00:34:25,929 Ook dit is met de indexen is ons gelijk 716 00:34:25,929 --> 00:34:28,980 van het hebben sleutels afgebeeld op waarden. 717 00:34:28,980 --> 00:34:34,710 Dus als onze sleutel was 0-- sorry. 718 00:34:34,710 --> 00:34:36,524 >> HANNAH BLUMBERG: Nee, er is hier krijt. 719 00:34:36,524 --> 00:34:36,929 Het is eigenlijk heel leuk. 720 00:34:36,929 --> 00:34:37,460 >> MARIA ZLATKOVA: Dat is geweldig. 721 00:34:37,460 --> 00:34:38,260 OK. 722 00:34:38,260 --> 00:34:49,489 Dus nogmaals, zou $ arr 0 zijn de toets voor de waarde 1. 723 00:34:49,489 --> 00:34:51,138 0 zou de sleutel voor de waarde 1 zijn. 724 00:34:51,138 --> 00:34:51,971 Publiek: Het spijt me. 725 00:34:51,971 --> 00:34:53,190 Het is onzichtbaar. 726 00:34:53,190 --> 00:34:53,659 >> HANNAH BLUMBERG: Oké, nevermind. 727 00:34:53,659 --> 00:34:54,980 Krijt was een slecht idee. 728 00:34:54,980 --> 00:34:58,030 Ik neem het terug. 729 00:34:58,030 --> 00:35:01,425 U kunt denken aan de toetsen als 0 kaarten om de waarde 1. 730 00:35:01,425 --> 00:35:02,300 MARIA ZLATKOVA: Ja. 731 00:35:02,300 --> 00:35:04,630 Dus dit is 0, is 1, 2, 3. 732 00:35:04,630 --> 00:35:05,760 Dit kunnen uw sleutels. 733 00:35:05,760 --> 00:35:10,020 U kunt as-- van hen denken ja. 734 00:35:10,020 --> 00:35:12,740 Dus in plaats van expliciete sleutels, ze zijn 735 00:35:12,740 --> 00:35:17,180 soort opgevat als de indices beginnend bij 0. 736 00:35:17,180 --> 00:35:21,630 737 00:35:21,630 --> 00:35:24,820 De krijt hielp niet. 738 00:35:24,820 --> 00:35:25,722 Ja. 739 00:35:25,722 --> 00:35:30,914 >> Publiek: voor de foreach lus als we wilden het zien als waarde, 740 00:35:30,914 --> 00:35:33,245 het zou gewoon automatisch index op 0? 741 00:35:33,245 --> 00:35:34,120 MARIA ZLATKOVA: Ja. 742 00:35:34,120 --> 00:35:35,745 Het zou door elk van de waarden. 743 00:35:35,745 --> 00:35:39,130 PUBLIEK: [onverstaanbaar] als 0 of zou dat gewoon doen 0? 744 00:35:39,130 --> 00:35:43,710 >> MARIA ZLATKOVA: U zou hebben te zeggen als dollarteken en vervolgens 745 00:35:43,710 --> 00:35:46,266 enkele naam van de variabele, waarde. 746 00:35:46,266 --> 00:35:47,182 PUBLIEK: [onverstaanbaar]. 747 00:35:47,182 --> 00:35:50,048 748 00:35:50,048 --> 00:35:50,964 MARIA ZLATKOVA: Sorry? 749 00:35:50,964 --> 00:35:52,839 PUBLIEK: Sorry, ik ben gewoon proberen te herinneren. 750 00:35:52,839 --> 00:35:57,190 Hoe zou je dat als je het kan doen automatische indexering is slechts 0 van? 751 00:35:57,190 --> 00:36:00,780 >> MARIA ZLATKOVA: Dus hoe zou je dat doen als je niet specifieke sleutel namen? 752 00:36:00,780 --> 00:36:01,710 >> Publiek: Ja. 753 00:36:01,710 --> 00:36:07,820 >> MARIA ZLATKOVA: Je zou gewoon define-- je gewoon zeggen als een naam. 754 00:36:07,820 --> 00:36:17,950 Dus in uw psets, jullie misschien herinner foreach $ row als $ rijen, 755 00:36:17,950 --> 00:36:24,610 hebben we onszelf dit $ rij zeggen we willen gaan door rij als $ rijen. 756 00:36:24,610 --> 00:36:28,360 Hoewel we niet hebben Deze expliciete $ rijen gedefinieerd, 757 00:36:28,360 --> 00:36:31,990 we konden gewoon gaan en zeggen dat dit kan onze sleutel, 758 00:36:31,990 --> 00:36:33,615 en gewoon gaan door elk van de waarden. 759 00:36:33,615 --> 00:36:37,295 760 00:36:37,295 --> 00:36:41,660 >> Publiek: Dus is de waarde van een nieuwe variabele we creëren op te slaan [onverstaanbaar]? 761 00:36:41,660 --> 00:36:46,820 762 00:36:46,820 --> 00:36:49,990 >> MARIA ZLATKOVA: Dus het is niet inherent een nieuwe variabele. 763 00:36:49,990 --> 00:37:00,310 Het is een variabele die verwijst naar de binnenzijde van de array om elk van hen. 764 00:37:00,310 --> 00:37:02,060 HANNAH BLUMBERG: Het is een nieuwe variabele naam. 765 00:37:02,060 --> 00:37:04,018 MARIA ZLATKOVA: Ja, het is een nieuwe variabele naam, 766 00:37:04,018 --> 00:37:06,680 maar het is niet inherently-- ja. 767 00:37:06,680 --> 00:37:08,950 Het is gewoon een nieuwe variabele dat je dat kunt doen. 768 00:37:08,950 --> 00:37:12,680 Dus hoe doen we deden $ rij als $ rijen, rijen 769 00:37:12,680 --> 00:37:17,980 een nieuwe variabele die we kon scheppen in onze foreach lus. 770 00:37:17,980 --> 00:37:22,065 Het hoeft niet te preexist daarvoor. 771 00:37:22,065 --> 00:37:25,777 >> Publiek: Kan je door de logica voor elke, het voorbeeld daar? 772 00:37:25,777 --> 00:37:26,610 MARIA ZLATKOVA: Mhm. 773 00:37:26,610 --> 00:37:31,240 774 00:37:31,240 --> 00:37:32,080 Oh, sorry. 775 00:37:32,080 --> 00:37:33,780 Hier is het voorbeeld. 776 00:37:33,780 --> 00:37:34,280 Tuurlijk. 777 00:37:34,280 --> 00:37:38,950 Dus voor elke array-- zo dat betekent naar deze array 778 00:37:38,950 --> 00:37:43,930 als de belangrijkste value-- dat gaat om te gaan door deze array 779 00:37:43,930 --> 00:37:49,480 en de eerste gaan en foo, de key foo en de waarde bar. 780 00:37:49,480 --> 00:37:51,570 En vervolgens op de tweede iteratie van de lus, 781 00:37:51,570 --> 00:37:55,090 het gaat om door te gaan en de sleutel baz en de waarde qux. 782 00:37:55,090 --> 00:38:00,512 En dan kun je iets doen met een van hen of beide. 783 00:38:00,512 --> 00:38:03,488 >> Publiek: Dus het idee achter met een belangrijk punt om de waarde, 784 00:38:03,488 --> 00:38:07,470 wat doe je uiteindelijk toegang? 785 00:38:07,470 --> 00:38:10,680 >> MARIA ZLATKOVA: Wat is het idee van het hebben van een sleutel die wijst naar de waarde? 786 00:38:10,680 --> 00:38:16,400 Het is gewoon een conventie, een ander weg van het gaan door de array 787 00:38:16,400 --> 00:38:22,600 en in staat zijn om toegang te krijgen ofwel de sleutel of de waarde of beide en gebruik ze. 788 00:38:22,600 --> 00:38:27,100 >> Publiek: Wat is de rol van de gelasten dat de foreach loopt in? 789 00:38:27,100 --> 00:38:29,250 Dus als we waren om toe te voegen elementen aan de array later 790 00:38:29,250 --> 00:38:32,140 zouden die de eersten zijn genoemd in de foreach array, 791 00:38:32,140 --> 00:38:33,750 of zou het later? 792 00:38:33,750 --> 00:38:37,770 >> MARIA ZLATKOVA: Dus wat is de volgorde waarin de foreach 793 00:38:37,770 --> 00:38:39,210 lus gaat door middel van een array in? 794 00:38:39,210 --> 00:38:42,220 Het gaat door het eerste element het laatste element, 795 00:38:42,220 --> 00:38:43,400 het laatst toegevoegde element. 796 00:38:43,400 --> 00:38:48,020 Als u later op de elementen toe te voegen, zouden ze worden accessed-- de eerste elementen zou 797 00:38:48,020 --> 00:38:51,410 worden benaderd als de eerste elementen van de array, 798 00:38:51,410 --> 00:38:57,620 en dan zou je gaan door elk van de elementen als een soort van een ordered-- 799 00:38:57,620 --> 00:39:02,930 geen besteld, maar de manier waarop zij zijn in de matrix gebracht. 800 00:39:02,930 --> 00:39:06,855 >> Publiek: Dus nieuwe elementen worden later toegevoegd? 801 00:39:06,855 --> 00:39:10,680 Dus ze added-- zullen ze de laatste die in de [? iteratie. ?] 802 00:39:10,680 --> 00:39:14,280 >> MARIA ZLATKOVA: Nieuwe elementen can-- in principe, wanneer er nieuwe elementen zijn toegevoegd, 803 00:39:14,280 --> 00:39:16,520 worden deze toegevoegd aan het einde van de array? 804 00:39:16,520 --> 00:39:17,632 >> Publiek: Ja. 805 00:39:17,632 --> 00:39:18,840 MARIA ZLATKOVA: Ik geloof het wel. 806 00:39:18,840 --> 00:39:20,850 Ja. 807 00:39:20,850 --> 00:39:24,330 En vervolgens met uw foreach loop, nadat je nieuwe elementen heeft toegevoegd 808 00:39:24,330 --> 00:39:26,790 en je gaat via hen, de nieuwe elementen zou 809 00:39:26,790 --> 00:39:30,930 zijn accessed-- het nieuwe element, als het laatste toegevoegd, zou het laatste toegankelijk. 810 00:39:30,930 --> 00:39:34,416 >> Publiek: Kun je een voorbeeld geven van iets dat zou [onverstaanbaar] 811 00:39:34,416 --> 00:39:37,404 met iets met een waarde zoals [onverstaanbaar] of de waarde, 812 00:39:37,404 --> 00:39:38,910 Net als hoe je zou opmaken dat? 813 00:39:38,910 --> 00:39:39,785 >> MARIA ZLATKOVA: Zeker. 814 00:39:39,785 --> 00:39:42,340 815 00:39:42,340 --> 00:39:46,410 Kan ik een voorbeeld geven van wat we zouden doen met de waarde? 816 00:39:46,410 --> 00:39:52,440 Dus wat jullie misschien vertrouwd zijn met is dat we gegaan door een reeks 817 00:39:52,440 --> 00:39:55,380 en eigenlijk bedrukt elk van de elementen, 818 00:39:55,380 --> 00:40:00,910 bijvoorbeeld als onderdeel van een geordende lijst of iets dat. 819 00:40:00,910 --> 00:40:02,674 Heeft dat zin te maken of willen we to-- 820 00:40:02,674 --> 00:40:04,340 Publiek: Kunnen we het afdrukken van deze waarden? 821 00:40:04,340 --> 00:40:13,220 MARIA ZLATKOVA: Ja, we kunnen printen en dan $ principe waarde omdat op 822 00:40:13,220 --> 00:40:16,570 dat specifieke waarde, zouden we afdrukken van de waarde erin. 823 00:40:16,570 --> 00:40:20,150 Dus als we waren op onze eerste iteratie van het en we gedrukt $ value, 824 00:40:20,150 --> 00:40:23,775 we zouden worden afgedrukt bar. 825 00:40:23,775 --> 00:40:27,020 >> PUBLIEK: Zijn er ook voor loops in PHP of gewoon foreach loops? 826 00:40:27,020 --> 00:40:30,430 >> MARIA ZLATKOVA: Er is ook voor de loops in PHP. 827 00:40:30,430 --> 00:40:33,399 En hun logica is meestal de hetzelfde als wat je hebt gebruikt. 828 00:40:33,399 --> 00:40:34,690 Publiek: Dus de waarde is nul. 829 00:40:34,690 --> 00:40:35,090 MARIA ZLATKOVA: Het is net hetzelfde. 830 00:40:35,090 --> 00:40:35,590 Ja. 831 00:40:35,590 --> 00:40:37,747 Publiek: Ik ben gewoon gaan om te vragen. 832 00:40:37,747 --> 00:40:39,695 Dus als je verklaart een array, heb je niet nodig 833 00:40:39,695 --> 00:40:42,617 om te vertellen wat de grootte het gaat zijn, wat betekent dat je gewoon 834 00:40:42,617 --> 00:40:44,417 toe te voegen en weg te nemen elementen [onverstaanbaar]. 835 00:40:44,417 --> 00:40:45,250 MARIA ZLATKOVA: Yup. 836 00:40:45,250 --> 00:40:45,750 Ja. 837 00:40:45,750 --> 00:40:46,251 Precies. 838 00:40:46,251 --> 00:40:48,875 Toen we verklaren een array, we hoeft niet te zeggen hoe groot het is, 839 00:40:48,875 --> 00:40:51,022 dus we kunnen alleen maar elementen toe te voegen op het later ook. 840 00:40:51,022 --> 00:40:55,075 841 00:40:55,075 --> 00:40:55,700 Meer vragen? 842 00:40:55,700 --> 00:40:59,870 843 00:40:59,870 --> 00:41:05,950 Dus PHP en HTML samen te brengen, wat we hebben goed seen--, 844 00:41:05,950 --> 00:41:15,130 bijvoorbeeld, in dit voorbeeld hebben we een HTML-formulier dat een invoerveld heeft. 845 00:41:15,130 --> 00:41:18,830 >> En het invoerveld is gewoon naam en dan heeft het een Submit knop. 846 00:41:18,830 --> 00:41:26,040 En als u op de Submit knop, in onze hello.php bestand, 847 00:41:26,040 --> 00:41:32,130 omdat de werkwijze voor de vorm krijgen, kunnen we toegang krijgen tot wat er op naam 848 00:41:32,130 --> 00:41:40,360 door dit te krijgen globale variabele dat is-- de syntaxis voor het $ _GET. 849 00:41:40,360 --> 00:41:44,520 En dan kunnen we toegang, ongeacht de input van de gebruiker binnen in die vorm voor de naam 850 00:41:44,520 --> 00:41:47,410 onder vermelding van de naam van dat veld. 851 00:41:47,410 --> 00:41:51,480 852 00:41:51,480 --> 00:41:55,060 >> Een andere vragen of vragen over dit specifieke voorbeeld? 853 00:41:55,060 --> 00:41:58,275 >> Publiek: Waar is de PHP? 854 00:41:58,275 --> 00:41:59,150 MARIA ZLATKOVA: Hier. 855 00:41:59,150 --> 00:42:01,150 Dus dit is onze opening tag voor de PHP. 856 00:42:01,150 --> 00:42:01,530 >> PUBLIEK: Oh, rechts. 857 00:42:01,530 --> 00:42:02,363 >> MARIA ZLATKOVA: Ja. 858 00:42:02,363 --> 00:42:05,320 859 00:42:05,320 --> 00:42:09,609 >> HANNAH BLUMBERG: De = is steno want dit is PHP en gewoon echo. 860 00:42:09,609 --> 00:42:10,150 Publiek: Oh. 861 00:42:10,150 --> 00:42:10,720 MARIA ZLATKOVA: Ja, sorry. 862 00:42:10,720 --> 00:42:12,040 Ik moet dat duidelijk gemaakt. 863 00:42:12,040 --> 00:42:13,759 >> HANNAH BLUMBERG: Print. 864 00:42:13,759 --> 00:42:16,800 MARIA ZLATKOVA: Het is gewoon de functie die ons in staat stelt om iets af te drukken. 865 00:42:16,800 --> 00:42:19,795 866 00:42:19,795 --> 00:42:20,420 Grote vraag. 867 00:42:20,420 --> 00:42:24,140 868 00:42:24,140 --> 00:42:25,495 Dus going-- ja. 869 00:42:25,495 --> 00:42:31,940 >> PUBLIEK: Komt er vrij zijn een beetje van de hand coderen van PHP en HTML 870 00:42:31,940 --> 00:42:33,450 quiz op 1? 871 00:42:33,450 --> 00:42:36,310 872 00:42:36,310 --> 00:42:38,810 MARIA ZLATKOVA: Er kan een eerlijk bedrag van interpretatie 873 00:42:38,810 --> 00:42:43,330 van PHP en HTML, niet per se als een enorme hoeveelheid codering, 874 00:42:43,330 --> 00:42:46,960 hoewel je zou kunnen hebben om een ​​schrijven foreach loop, hoewel, een lus. 875 00:42:46,960 --> 00:42:49,790 Elk van de lussen die we bedekken hier is eerlijk spel. 876 00:42:49,790 --> 00:42:51,889 En dat is meestal het. 877 00:42:51,889 --> 00:42:53,430 HANNAH BLUMBERG: Ik zou bereid. 878 00:42:53,430 --> 00:42:57,010 Op dezelfde manier dat je vroegen we om schrijf een bos van C functies op quiz 0, 879 00:42:57,010 --> 00:42:59,766 Ik zou bereid zijn om het te doen hetzelfde in PHP en Javascript. 880 00:42:59,766 --> 00:43:00,640 MARIA ZLATKOVA: Ja. 881 00:43:00,640 --> 00:43:03,210 HANNAH BLUMBERG: Ik zou zeggen een little-- alsof we niet 882 00:43:03,210 --> 00:43:06,251 gaat om je te schrijven een enorme HTML pagina, alleen maar omdat dat is een beetje 883 00:43:06,251 --> 00:43:08,240 vervelend, maar je zou onderdelen hebben. 884 00:43:08,240 --> 00:43:09,310 Dat is volkomen eerlijk spel. 885 00:43:09,310 --> 00:43:11,082 Zoals kleine HTML-pagina, helemaal eerlijk. 886 00:43:11,082 --> 00:43:11,623 Publiek: OK. 887 00:43:11,623 --> 00:43:13,814 Hoe zit het in JavaScript ook? 888 00:43:13,814 --> 00:43:14,730 HANNAH BLUMBERG: Ja. 889 00:43:14,730 --> 00:43:15,250 Javascript is eerlijk spel. 890 00:43:15,250 --> 00:43:15,635 >> MARIA ZLATKOVA: Ja. 891 00:43:15,635 --> 00:43:16,801 Dat is volkomen eerlijk spel. 892 00:43:16,801 --> 00:43:19,280 HANNAH BLUMBERG: We krijgen die op gelijke 10 minuten. 893 00:43:19,280 --> 00:43:23,750 >> MARIA ZLATKOVA: SQL, nogmaals, Structured Query Language. 894 00:43:23,750 --> 00:43:28,651 Het stelt ons in principe om data te beheren in een relationeel databasebeheersysteem 895 00:43:28,651 --> 00:43:29,150 systeem. 896 00:43:29,150 --> 00:43:31,149 Dat betekent gewoon in principe dat we ergens 897 00:43:31,149 --> 00:43:37,980 om enkele gegevens die wij zouden willen opslaan gebruiken in een website of een andere vorm. 898 00:43:37,980 --> 00:43:42,190 En dan hebben we vragen te krijgen informatie uit onze database, 899 00:43:42,190 --> 00:43:44,320 of gegevens daarin te. 900 00:43:44,320 --> 00:43:47,560 Een groot deel van de gemeenschappelijke ones-- UPDATE, INSERT, SELECT, en DELETE. 901 00:43:47,560 --> 00:43:50,790 >> Dus voor UPDATE, dit is de syntax voor het bijwerken van gegevens in een database. 902 00:43:50,790 --> 00:43:53,330 903 00:43:53,330 --> 00:43:57,340 Deze tabel genoemd updaten tafel door te zeggen SET, 904 00:43:57,340 --> 00:44:04,170 kunnen we een aantal waarden in alle ingesteld rijen op gelijke iets anders. 905 00:44:04,170 --> 00:44:09,410 Dus we kunnen ook aangeven een aantal specifieke inzendingen die we willen wijzigen 906 00:44:09,410 --> 00:44:11,240 en dat kan worden met behulp van WAAR. 907 00:44:11,240 --> 00:44:16,380 En we kunnen aangeven dat we alleen maar willen enkele rijen te wijzigen waar het huis voor, 908 00:44:16,380 --> 00:44:19,830 als we hadden een tafel van studenten en alle studenten moesten huis, 909 00:44:19,830 --> 00:44:24,890 dus we zouden alleen maar sommige waarden te wijzigen waarbij een huis gelijk Currier, 910 00:44:24,890 --> 00:44:25,430 bijvoorbeeld. 911 00:44:25,430 --> 00:44:29,120 912 00:44:29,120 --> 00:44:31,800 >> Voor INSERT, kunnen we voegen bepaalde waarden in een tabel. 913 00:44:31,800 --> 00:44:35,150 Dus INSERT INTO tabel, en dan de waarden, 914 00:44:35,150 --> 00:44:39,080 en daarna tussen haakjes, we opgeven welke waarden u wilt invoegen. 915 00:44:39,080 --> 00:44:43,220 Dus INSERT INTO tabel col1 en col2, de waarde is val1 en val2. 916 00:44:43,220 --> 00:44:48,930 Dus dit voegt eigenlijk een nieuwe rij in een tabel met de waarden 1 en 2 917 00:44:48,930 --> 00:44:50,850 onder de kolommen 1 en 2. 918 00:44:50,850 --> 00:44:54,760 >> En dan gaan we voorbij gaan een snelle voorbeeld van hoe dit eruit ziet 919 00:44:54,760 --> 00:44:56,310 zoals in onze database een beetje. 920 00:44:56,310 --> 00:44:58,685 Maar deze laatste vraag die ik denk dat we over te gaan, 921 00:44:58,685 --> 00:45:01,450 SELECT, het gewoon ons toelaat om gegevens uit een tabel selecteren 922 00:45:01,450 --> 00:45:03,080 om eventueel gebruik achteraf. 923 00:45:03,080 --> 00:45:05,830 En de manier waarop we dit doen is dat we gewoon opslaan in een aantal variabele. 924 00:45:05,830 --> 00:45:07,780 En dan kunnen we misschien weer gebruiken. 925 00:45:07,780 --> 00:45:10,260 >> Dus SELECT ster betekent alles selecteren. 926 00:45:10,260 --> 00:45:13,280 Dat is gewoon een verkorte alle selecteren. 927 00:45:13,280 --> 00:45:19,760 FROM tafel waar, zijn wij op zoek voor een aantal specifieke voorwaarden, 928 00:45:19,760 --> 00:45:22,290 dus waar de kolom gelijk iets, bijvoorbeeld. 929 00:45:22,290 --> 00:45:24,410 Als we wilden gewoon Alles selecteren van tafel, 930 00:45:24,410 --> 00:45:28,400 dit gewoon selecteert alle kolommen en alle rijen uit een tabel. 931 00:45:28,400 --> 00:45:32,040 >> En dan DELETE FROM tabel WAAR col is gelijk aan iets, 932 00:45:32,040 --> 00:45:36,440 Dit verwijdert slechts enkele rij van onze tafel 933 00:45:36,440 --> 00:45:38,860 waar we hebben een aantal specifieke voorwaarden. 934 00:45:38,860 --> 00:45:41,870 In dit geval zijn de voorwaarden zijn kolom is gelijk aan iets. 935 00:45:41,870 --> 00:45:43,460 Dus gewoon een snelle voorbeeld van. 936 00:45:43,460 --> 00:45:49,100 Als we deze tabel hier en we invoegen in een tabel, deze waarden, 937 00:45:49,100 --> 00:45:50,400 dat er een nieuwe rij zou voegen. 938 00:45:50,400 --> 00:45:56,380 En als we de auto-increment, zou dit slechts increment onze ID 0-1 om 2. 939 00:45:56,380 --> 00:46:00,010 >> Als we allemaal geselecteerd uit studenten, is het gewoon geeft alle velden en alle rijen. 940 00:46:00,010 --> 00:46:02,430 Wanneer jaar groter dan of gelijk aan 2016, 941 00:46:02,430 --> 00:46:04,390 dat zou gewoon terug Hannah en ikzelf. 942 00:46:04,390 --> 00:46:08,360 En dan als we gewoon geselecteerd id jaar en het jaar FROM studenten 943 00:46:08,360 --> 00:46:11,710 waar het huis is Cabot House, dat zou weer terug Hannah en ikzelf. 944 00:46:11,710 --> 00:46:14,430 >> Dan, als we van studenten verwijderd waar de naam is gelijk aan Rob, 945 00:46:14,430 --> 00:46:16,760 dat zou de hele rij te verwijderen. 946 00:46:16,760 --> 00:46:19,696 En dan, als we de naam, UPDATE studenten 947 00:46:19,696 --> 00:46:21,570 SET naam gelijk aan Daven WAAR huis is gelijk 948 00:46:21,570 --> 00:46:27,010 Cabot House, dat gaat naar die rijen en werk vervolgens de naam. 949 00:46:27,010 --> 00:46:31,470 >> En dan een paar soorten SQL-gegevens CHAR, VARCHAR, INT, en zweven. 950 00:46:31,470 --> 00:46:32,760 Dit zijn eerlijk spel. 951 00:46:32,760 --> 00:46:36,740 Ik zou opnieuw gaan en zorg ervoor dat je weet 952 00:46:36,740 --> 00:46:40,930 en hebben ze op je cheat sheet, wat elk van deze karakters 953 00:46:40,930 --> 00:46:44,140 werden gebruikt, wat je ze gebruikt op uw psets, 954 00:46:44,140 --> 00:46:48,050 en zorg ervoor dat u bekend bent en comfortabel met het hebben om uit te kiezen 955 00:46:48,050 --> 00:46:51,450 van verschillende soorten gegevens in uw PSET. 956 00:46:51,450 --> 00:46:51,950 Ja. 957 00:46:51,950 --> 00:46:54,300 >> Publiek: Wat is die tafel opgeslagen? 958 00:46:54,300 --> 00:46:57,119 Ja, waar is deze tabel opgeslagen? 959 00:46:57,119 --> 00:46:59,160 MARIA ZLATKOVA: Nou, nu, is het niet opgeslagen. 960 00:46:59,160 --> 00:47:00,700 Hoe dan ook, waar is deze tabel opgeslagen? 961 00:47:00,700 --> 00:47:04,503 Maar het kan worden opgeslagen in een SQL-database. 962 00:47:04,503 --> 00:47:07,330 >> Publiek: En waar is de SQL-database? 963 00:47:07,330 --> 00:47:11,200 In de computer, online ergens, de server? 964 00:47:11,200 --> 00:47:15,000 >> MARIA ZLATKOVA: Het kan een aantal verschillende dingen. 965 00:47:15,000 --> 00:47:19,690 >> HANNAH BLUMBERG: We hebben gekoppeld aan SQL-tabellen meestal met phpMyAdmin. 966 00:47:19,690 --> 00:47:22,060 Dus konden we een server vragen op te slaan voor ons. 967 00:47:22,060 --> 00:47:23,830 We konden ze op te slaan op onze eigen computer. 968 00:47:23,830 --> 00:47:27,950 >> MARIA ZLATKOVA: Het is maar net hoe je wilt het zelf te doen. 969 00:47:27,950 --> 00:47:30,075 Maar we zijn het opslaan hen Hannah gezegd, 970 00:47:30,075 --> 00:47:31,755 op phpMyAdmin, dat is online. 971 00:47:31,755 --> 00:47:36,550 972 00:47:36,550 --> 00:47:39,280 En dan de manier waarop we gebruiken PHP en SQL, slaan we 973 00:47:39,280 --> 00:47:43,450 in een aantal variabele wat we hebben opgevraagd. 974 00:47:43,450 --> 00:47:48,370 >> Dus als we alle selecteren uit de geschiedenis waarbij user_id gelijk is aan de sessie-ID, 975 00:47:48,370 --> 00:47:53,900 dat zou alle rijen te selecteren voor de specifieke persoon die 976 00:47:53,900 --> 00:47:58,327 wordt aangemeld uit de geschiedenis tafel en sorteer ze in rijen. 977 00:47:58,327 --> 00:48:00,410 Een koele ding om te weten is dat CS50's vraag functie 978 00:48:00,410 --> 00:48:02,180 beschermt tegen SQL-injectie-tags. 979 00:48:02,180 --> 00:48:07,420 Dat betekent gewoon dat het zorgt ervoor dat de ingang die is ingevoerd juist is 980 00:48:07,420 --> 00:48:09,920 en dat de persoon die is het invoeren van de input 981 00:48:09,920 --> 00:48:15,100 probeert niet om input sommige kwaadaardige code om ofwel laten vallen onze tafels 982 00:48:15,100 --> 00:48:17,305 of verwijderen alles binnenkant van onze database. 983 00:48:17,305 --> 00:48:20,060 984 00:48:20,060 --> 00:48:23,400 >> Een snel overzicht van de Model View Controller model, 985 00:48:23,400 --> 00:48:27,360 het is gewoon een manier van organiseren en na te denken over de code. 986 00:48:27,360 --> 00:48:29,100 Het is opnieuw een ontwerp paradigma. 987 00:48:29,100 --> 00:48:33,380 Wat dat betekent is dat we can-- en het is goede praktijken 988 00:48:33,380 --> 00:48:37,790 naar verschillende delen te scheiden van onze code en wat ze 989 00:48:37,790 --> 00:48:40,530 controle in deze drie paradigma. 990 00:48:40,530 --> 00:48:46,700 >> Zodat onze mening is meestal onze templates, onze layout, zoals 991 00:48:46,700 --> 00:48:48,260 dat we in te stellen hoe de code eruit ziet. 992 00:48:48,260 --> 00:48:55,190 Dat is vooral onze CSS-bestanden en de manier waarop dat we het ontwerp van onze code gedefinieerd, 993 00:48:55,190 --> 00:48:55,710 principe. 994 00:48:55,710 --> 00:48:59,280 Onze controller is meestal wat we hebben gedaan met PHP-bestanden. 995 00:48:59,280 --> 00:49:03,030 Dus nogmaals, het werken met de informatie die we 996 00:49:03,030 --> 00:49:06,700 en bepalen hoe dat informatie wordt gebruikt, 997 00:49:06,700 --> 00:49:10,660 en dan passeren die informatie hetzij op het uitzicht of het model. 998 00:49:10,660 --> 00:49:13,880 En het model, de manier waarop we hebben gebruikt wil is onze database geweest, 999 00:49:13,880 --> 00:49:17,510 dus waar onze informatie opgeslagen, dus het heeft ergens 1000 00:49:17,510 --> 00:49:21,490 om in te wonen, en een van de code die betrekking heeft op de manier 1001 00:49:21,490 --> 00:49:25,410 dat we die informatie of de manier waarop we werken die informatie. 1002 00:49:25,410 --> 00:49:28,940 1003 00:49:28,940 --> 00:49:33,200 >> Dus in de MVC-model, HTTP aanvragen worden verzonden naar een webserver. 1004 00:49:33,200 --> 00:49:36,220 Vervolgens wordt de controller interpreteert het verzoek van de gebruiker 1005 00:49:36,220 --> 00:49:38,260 en valideert vervolgens het gebruikersinvoer. 1006 00:49:38,260 --> 00:49:41,580 Het is optioneel dat we de controller te communiceren 1007 00:49:41,580 --> 00:49:44,000 met een model, dus iets zoals onze databank 1008 00:49:44,000 --> 00:49:47,500 of een andere functionaliteiten dat relais informatie. 1009 00:49:47,500 --> 00:49:50,340 En tenslotte, de controller passeert informatie op het uitzicht 1010 00:49:50,340 --> 00:49:52,090 zodat het kan worden gesmolten en dat het kan 1011 00:49:52,090 --> 00:49:55,860 zichtbaar voor een persoon te worden de toegang tot de webpagina. 1012 00:49:55,860 --> 00:49:58,440 1013 00:49:58,440 --> 00:50:01,340 >> Nog vragen? 1014 00:50:01,340 --> 00:50:01,840 Geweldig. 1015 00:50:01,840 --> 00:50:04,530 1016 00:50:04,530 --> 00:50:08,469 Dus nogmaals, het model, zijn functie, weer, 1017 00:50:08,469 --> 00:50:11,260 is permanente opslag van informatie, beheren en organiseren van data. 1018 00:50:11,260 --> 00:50:13,890 En wat we tot nu gezien Wat is de MySQL database 1019 00:50:13,890 --> 00:50:16,200 en gegevensbestanden die kunnen gebruiken. 1020 00:50:16,200 --> 00:50:20,580 >> View, presentatie van informatie aan de gebruiker, de UI of gebruikersinterface. 1021 00:50:20,580 --> 00:50:22,350 En het voorbeeld is HTML. 1022 00:50:22,350 --> 00:50:23,950 En dan kunnen we een minimale PHP hebben. 1023 00:50:23,950 --> 00:50:28,360 Dus een lus die herhaalt meer dan de gegevens die worden afgedrukt 1024 00:50:28,360 --> 00:50:30,720 bevindt zich in de weergave, zoals tegen de controller. 1025 00:50:30,720 --> 00:50:35,660 En dan veel van onze PHP-bestanden vallen in de categorie controller. 1026 00:50:35,660 --> 00:50:38,410 Het behandelt alleen verzoeken van gebruikers en krijgt informatie uit het model. 1027 00:50:38,410 --> 00:50:42,880 1028 00:50:42,880 --> 00:50:45,590 >> Springen in de Document Object Model, dit enkel 1029 00:50:45,590 --> 00:50:47,700 verwijst naar de manier waarop HTML documenten worden georganiseerd. 1030 00:50:47,700 --> 00:50:51,600 En ze zijn georganiseerd in een boom structuur die een hiërarchie. 1031 00:50:51,600 --> 00:50:56,720 Dus als we toegang hebben tot [onverstaanbaar] weergave van het document, 1032 00:50:56,720 --> 00:51:02,750 we kunnen werken met het document, zoals We manipuleren voorwerpen principe. 1033 00:51:02,750 --> 00:51:06,630 >> En om dit een te maken beetje duidelijker, wanneer 1034 00:51:06,630 --> 00:51:10,540 we hebben veel van onze verschillende labels reageren 1035 00:51:10,540 --> 00:51:12,590 verschillende routes in onze structuur. 1036 00:51:12,590 --> 00:51:17,070 En dan voor dit voorbeeld, we hebben de beginnende document node. 1037 00:51:17,070 --> 00:51:20,010 We hebben dus onze HTML knooppunt dat splitst in hoofd en lichaam. 1038 00:51:20,010 --> 00:51:22,810 Head heeft titel en vervolgens titel bevat hello, wereld. 1039 00:51:22,810 --> 00:51:24,860 En ons lichaam bevat slechts hello, wereld ook. 1040 00:51:24,860 --> 00:51:28,700 1041 00:51:28,700 --> 00:51:31,900 >> Zodat eventuele vragen over een van de dingen die we tot nu toe gedekt? 1042 00:51:31,900 --> 00:51:35,891 En zo niet, Hannah zal over te nemen met JavaScript. 1043 00:51:35,891 --> 00:51:36,390 Geweldig. 1044 00:51:36,390 --> 00:51:37,473 >> HANNAH BLUMBERG: OK, cool. 1045 00:51:37,473 --> 00:51:40,980 Als er iets komt met PHP of HTML, of een van de dingen die Maria bedekt, 1046 00:51:40,980 --> 00:51:42,700 kunnen we altijd pauzeren. 1047 00:51:42,700 --> 00:51:46,430 We doen het beter op op keer, zo geweldig. 1048 00:51:46,430 --> 00:51:48,770 En gewoon om terug te gaan heel snel hierop 1049 00:51:48,770 --> 00:51:51,010 als je kijkt naar elke examen afgelopen jaar, dit 1050 00:51:51,010 --> 00:51:54,120 komt either-- hier wat HTML, maken dit diagram. 1051 00:51:54,120 --> 00:51:58,380 Of hier is dit schema, maak wat HTML, dus zeker de praktijk dat. 1052 00:51:58,380 --> 00:52:01,500 En dan is dat een gegarandeerd vraag die je gelijk kunt krijgen. 1053 00:52:01,500 --> 00:52:02,000 Koel. 1054 00:52:02,000 --> 00:52:04,510 Dus laten we praten over JavaScript en hoe het is een beetje 1055 00:52:04,510 --> 00:52:09,130 verschillend van talen zoals PHP en C, de twee talen die we van tevoren zagen. 1056 00:52:09,130 --> 00:52:10,780 Dus nummer één, het is losjes getypt. 1057 00:52:10,780 --> 00:52:14,630 Dat is zoals PHP, maar in tegenstelling tot C. 1058 00:52:14,630 --> 00:52:15,890 >> Het is een geïnterpreteerde taal. 1059 00:52:15,890 --> 00:52:19,870 Nogmaals, dat is net als PHP, anders dan C. En 1060 00:52:19,870 --> 00:52:24,630 zal ons in staat stellen om het use-- werkt echt mooi met webpagina's. 1061 00:52:24,630 --> 00:52:28,350 Het gaat om ons te manipuleren de inhoud en hoe het eruit ziet 1062 00:52:28,350 --> 00:52:30,300 en wat het doet. 1063 00:52:30,300 --> 00:52:32,330 >> We gaan een beetje van Ajax te zien. 1064 00:52:32,330 --> 00:52:36,140 Het stelt ons in staat om te communiceren asynchroon met verschillende servers 1065 00:52:36,140 --> 00:52:37,950 en informatie krijgen. 1066 00:52:37,950 --> 00:52:42,820 En dit is het ding dat echt scheidt JavaScript van PHP en C 1067 00:52:42,820 --> 00:52:45,590 is dat het client-side. 1068 00:52:45,590 --> 00:52:49,860 Zowel PHP en C zijn typisch server-side. 1069 00:52:49,860 --> 00:52:51,960 >> Voor het grootste deel en bijna geheel wat 1070 00:52:51,960 --> 00:52:53,900 we hebben gezien, althans in deze klasse, JavaScript 1071 00:52:53,900 --> 00:52:57,040 inwerkt op client-side, wat betekent dat dat de browser is eigenlijk 1072 00:52:57,040 --> 00:52:58,597 voor de exploitatie van het. 1073 00:52:58,597 --> 00:53:01,180 En dat betekent dat we niet moeten communiceren met de server. 1074 00:53:01,180 --> 00:53:04,380 Dus het betekent dat het kan een stuk sneller zijn want het is eigenlijk alleen maar het is Chrome, 1075 00:53:04,380 --> 00:53:10,420 het is Safari, het is Firefox, wat je Gebruik eigenlijk het runnen van uw JavaScript. 1076 00:53:10,420 --> 00:53:12,290 >> Publiek: Wat betekent asynchrone betekenen? 1077 00:53:12,290 --> 00:53:13,620 >> HANNAH BLUMBERG: Ah, wat betekent asynchroon betekenen? 1078 00:53:13,620 --> 00:53:14,250 Grote vraag. 1079 00:53:14,250 --> 00:53:17,890 Asynchroon means-- goed, de inhoud van die 1080 00:53:17,890 --> 00:53:22,140 we gebruiken is, OK, we zijn het creëren van een webpagina 1081 00:53:22,140 --> 00:53:23,860 en we moeten wat informatie te krijgen. 1082 00:53:23,860 --> 00:53:28,250 Dus met het voorbeeld van de mashup, wat informatie die we zouden willen 1083 00:53:28,250 --> 00:53:30,580 is artikel titels. 1084 00:53:30,580 --> 00:53:33,330 Nu hebben we een optie could-- is het synchroon te doen 1085 00:53:33,330 --> 00:53:37,940 en dat betekent laten we stop, haal het artikel, 1086 00:53:37,940 --> 00:53:41,275 krijgt het artikel terug, en dan maken, maar dat erg traag zou worden. 1087 00:53:41,275 --> 00:53:44,150 Dat zou een slechte gebruikerservaring te zijn want je zou gewoon zitten 1088 00:53:44,150 --> 00:53:46,630 er wachten op iets te reageren. 1089 00:53:46,630 --> 00:53:50,020 >> Betekent dat we zullen asynchroon blijven gaan over ons bedrijf, 1090 00:53:50,020 --> 00:53:52,529 waardoor de pagina en we zullen sturen uit een verzoek 1091 00:53:52,529 --> 00:53:54,570 Dat is een soort van naar gebeuren in de achtergrond. 1092 00:53:54,570 --> 00:53:57,610 Ik denk dat we het voorbeeld in lezing van Rob bellen en te zeggen, 1093 00:53:57,610 --> 00:53:59,980 hey, kunt u dit opzoeken voor mij en weer terug naar mij, 1094 00:53:59,980 --> 00:54:02,870 in tegenstelling tot enkel me wachten aan de telefoon. 1095 00:54:02,870 --> 00:54:07,020 Dus asynchroon middelen gebeurt op de achtergrond van ons 1096 00:54:07,020 --> 00:54:08,676 parallel. 1097 00:54:08,676 --> 00:54:10,400 >> Grote vraag. 1098 00:54:10,400 --> 00:54:11,830 Nog iets? 1099 00:54:11,830 --> 00:54:12,330 Grote. 1100 00:54:12,330 --> 00:54:15,020 We zullen nog veel meer in te springen asynchrone verzoeken met Ajax. 1101 00:54:15,020 --> 00:54:18,287 >> PUBLIEK: Doet JavaScript-- waar komt vallen met de model-view-controller? 1102 00:54:18,287 --> 00:54:19,620 HANNAH BLUMBERG: Grote vraag. 1103 00:54:19,620 --> 00:54:23,320 Waar komt JavaScript val met model-view-controller? 1104 00:54:23,320 --> 00:54:23,930 Hm. 1105 00:54:23,930 --> 00:54:28,350 Ik denk dat het kan fall-- dus doen we meestal niet 1106 00:54:28,350 --> 00:54:31,340 willen squish in die paradigma, maar ik denk dat ik zou zeggen, 1107 00:54:31,340 --> 00:54:34,280 OK, dus JavaScript in feite gaat om 1108 00:54:34,280 --> 00:54:37,587 ons om gegevens te verzamelen, interpreteren van data, eigenlijk doen 1109 00:54:37,587 --> 00:54:38,920 zinvolle dingen met de gegevens. 1110 00:54:38,920 --> 00:54:41,100 Op die manier is het erg controle-achtig. 1111 00:54:41,100 --> 00:54:43,900 >> Maar het is ook van plan om ons in staat te stellen dingen en af ​​te drukken dingen weer te geven. 1112 00:54:43,900 --> 00:54:47,021 Op die manier is het zeer view-achtige. 1113 00:54:47,021 --> 00:54:47,520 Ja. 1114 00:54:47,520 --> 00:54:51,710 Dus het is net zoiets als PHP in waar deze soort kan zowel. 1115 00:54:51,710 --> 00:54:53,330 Goede vraag. 1116 00:54:53,330 --> 00:54:55,209 Nog iets? 1117 00:54:55,209 --> 00:54:56,000 Oké, geweldig. 1118 00:54:56,000 --> 00:54:57,120 Bewegende rechts langs. 1119 00:54:57,120 --> 00:54:59,110 >> Dus laten we zien een voorbeeld hoe we kunnen gebruiken 1120 00:54:59,110 --> 00:55:02,250 JavaScript in een van onze web-programma's. 1121 00:55:02,250 --> 00:55:05,680 Dus ik zal dit te overwegen index.html met een bos van HTML. 1122 00:55:05,680 --> 00:55:08,800 En het ding ik wil dat je concentreren op dit script tag. 1123 00:55:08,800 --> 00:55:13,280 En dit zegt, OK, ik wil wat lopen JavaScript en hier is waar het leeft. 1124 00:55:13,280 --> 00:55:15,400 Het leeft in hello.js. 1125 00:55:15,400 --> 00:55:21,120 >> En heel erg als CSS, konden we zet JavaScript in de HTML. 1126 00:55:21,120 --> 00:55:24,000 Waarom zouden we willen scheiden? 1127 00:55:24,000 --> 00:55:24,500 Ja. 1128 00:55:24,500 --> 00:55:25,486 >> PUBLIEK: Makkelijker te herschrijven? 1129 00:55:25,486 --> 00:55:26,402 >> HANNAH BLUMBERG: Ja. 1130 00:55:26,402 --> 00:55:28,450 Het is makkelijker om over te gebruiken verschillende webpagina's. 1131 00:55:28,450 --> 00:55:29,980 Het houdt dingen schoner. 1132 00:55:29,980 --> 00:55:32,090 Het is gewoon goede praktijken. 1133 00:55:32,090 --> 00:55:32,590 Geweldig. 1134 00:55:32,590 --> 00:55:33,930 Goed antwoord. 1135 00:55:33,930 --> 00:55:36,690 Zo goed, dus dit gaat onze index.html zijn. 1136 00:55:36,690 --> 00:55:39,430 En dan hier beneden is onze klein JavaScript-bestand. 1137 00:55:39,430 --> 00:55:42,410 >> En alles wat het zegt, is alert Hallo, wereld. 1138 00:55:42,410 --> 00:55:46,040 Dus wat er gebeurt is wanneer Deze pagina renders-- 1139 00:55:46,040 --> 00:55:49,680 dus als je naar welke website dit is-- alles wat er gaat gebeuren 1140 00:55:49,680 --> 00:55:53,330 wordt het gaat zeggen, OK, ik ben ga deze JavaScript-code uit te voeren. 1141 00:55:53,330 --> 00:55:56,370 En deze JavaScript-code gewoon zegt alert Hallo, wereld. 1142 00:55:56,370 --> 00:55:59,090 Dus ik ga om dit te krijgen vriendelijke kleine pop-up. 1143 00:55:59,090 --> 00:56:00,360 >> Koel? 1144 00:56:00,360 --> 00:56:04,746 Dat is net zoiets als onze allereerste JavaScript-programma, onze Hallo, wereld. 1145 00:56:04,746 --> 00:56:07,690 1146 00:56:07,690 --> 00:56:12,190 Laten we eens kijken een beetje meer over wat de syntaxis van JavaScript eruit ziet. 1147 00:56:12,190 --> 00:56:16,330 En in het bijzonder, laten we het vergelijken met C en PHP, die we eerder hebben gezien. 1148 00:56:16,330 --> 00:56:20,610 >> In JavaScript, we gaan te hebben var, de naam van de variabele, en 1149 00:56:20,610 --> 00:56:21,690 de werkelijke waarde. 1150 00:56:21,690 --> 00:56:26,170 En we hebben niet een soort opgeven, net zoals in PHP, maar heel anders dan in C. 1151 00:56:26,170 --> 00:56:28,850 Dus bijvoorbeeld, als we wilden de waarde 50 op te slaan, 1152 00:56:28,850 --> 00:56:32,490 in C, zouden we moeten zeggen, hey, C, wil ik een integer, 1153 00:56:32,490 --> 00:56:35,076 Ik ga noemen i, en bedraagt ​​50. 1154 00:56:35,076 --> 00:56:36,450 In PHP, het is een beetje makkelijker. 1155 00:56:36,450 --> 00:56:41,880 Wij zeggen, hey, ik wil een variabele riep ik en de waarde is 50. 1156 00:56:41,880 --> 00:56:45,890 Zeer evenzo in JavaScript, we zeggen hey, ik wil een variabele i genoemd, 1157 00:56:45,890 --> 00:56:47,080 de waarde is 50. 1158 00:56:47,080 --> 00:56:52,140 Elke volgende keer dat ik gebruik ik, ik hoef niet te var te schrijven. 1159 00:56:52,140 --> 00:56:53,810 Het is gewoon ik vanaf dat moment. 1160 00:56:53,810 --> 00:56:58,660 Op dezelfde wijze, in C, waarbij zodra we int ik zeggen, dat we gewoon gebruik maken van i. 1161 00:56:58,660 --> 00:57:00,340 Koel? 1162 00:57:00,340 --> 00:57:01,800 Prima. 1163 00:57:01,800 --> 00:57:03,710 >> Verhuizen naar loops, Gelukkig zijn deze bijna 1164 00:57:03,710 --> 00:57:06,720 kijk exactly-- Ik denk dat ze precies hetzelfde als wat 1165 00:57:06,720 --> 00:57:09,799 lussen gaan uitzien in iets als C waar uw lus 1166 00:57:09,799 --> 00:57:11,840 zal drie hebben parts-- een initialisatie, 1167 00:57:11,840 --> 00:57:13,640 een voorwaarde, en een update. 1168 00:57:13,640 --> 00:57:15,340 Een tijdje loop, het ziet er exact hetzelfde. 1169 00:57:15,340 --> 00:57:16,390 We geven het gewoon een voorwaarde. 1170 00:57:16,390 --> 00:57:18,264 >> En een do while lus, weer precies hetzelfde. 1171 00:57:18,264 --> 00:57:20,190 We geven het een voorwaarde. 1172 00:57:20,190 --> 00:57:24,510 Laten we zeggen dat ik wilde over-- herhalen Ik wilde iets doen vijf keer. 1173 00:57:24,510 --> 00:57:27,840 In C, kunnen we schrijven voor init i gelijk is aan 0. 1174 00:57:27,840 --> 00:57:30,480 i kleiner is dan 5, i ++. 1175 00:57:30,480 --> 00:57:34,240 Enige verschil, in JavaScript, in plaats van te zeggen int i gelijk is aan 0, 1176 00:57:34,240 --> 00:57:36,820 we zeggen var i gelijk is aan 0. 1177 00:57:36,820 --> 00:57:38,370 Mooi. 1178 00:57:38,370 --> 00:57:41,320 Dat is het enige verschil. 1179 00:57:41,320 --> 00:57:43,200 Heeft u vragen over een van die? 1180 00:57:43,200 --> 00:57:44,160 Ja. 1181 00:57:44,160 --> 00:57:48,480 >> Publiek: Dus in PHP, het is hetzelfde ding, behalve maar als een variabele? 1182 00:57:48,480 --> 00:57:49,564 Of was dat een var voorbeeld? 1183 00:57:49,564 --> 00:57:50,480 HANNAH BLUMBERG: Ja. 1184 00:57:50,480 --> 00:57:52,310 Dus in PHP, het gaat een dollarteken zijn. 1185 00:57:52,310 --> 00:57:59,450 Dus het gaat om $ i gelijken 0, $ i kleiner is dan 5, $ i ++. 1186 00:57:59,450 --> 00:58:02,490 Grote vraag. 1187 00:58:02,490 --> 00:58:04,570 >> Laten we nu praten over functie declaraties. 1188 00:58:04,570 --> 00:58:07,010 In C, als we verklaard functie, gaven we het een naam 1189 00:58:07,010 --> 00:58:08,490 en we gaven het een aantal parameters. 1190 00:58:08,490 --> 00:58:10,670 En aan het begin, schreven we het type. 1191 00:58:10,670 --> 00:58:12,440 In JavaScript, alles wat we hoeft te doen is schrijven 1192 00:58:12,440 --> 00:58:15,080 het trefwoord functie die zegt, hey, JavaScript, 1193 00:58:15,080 --> 00:58:16,570 Ik sta op het punt om een ​​functie te definiëren. 1194 00:58:16,570 --> 00:58:18,520 >> In casu heeft de naam sum. 1195 00:58:18,520 --> 00:58:20,820 En twee argumenten, x en y. 1196 00:58:20,820 --> 00:58:23,280 Merk op dat we niet de zorg de soorten x en y. 1197 00:58:23,280 --> 00:58:26,280 En net als C, hebben we dit zoekwoord terugkeer, 1198 00:58:26,280 --> 00:58:29,140 dus we kunnen iets doen zoals return x en y. 1199 00:58:29,140 --> 00:58:32,540 >> En nu als we eenmaal heb geschreven deze eerste functie, kunnen we som overal gebruiken. 1200 00:58:32,540 --> 00:58:34,740 En dat is helemaal prima. 1201 00:58:34,740 --> 00:58:37,530 Een echt cool ding over JavaScript dat is heel anders C 1202 00:58:37,530 --> 00:58:40,770 is dat functies worden behandeld als waarden. 1203 00:58:40,770 --> 00:58:43,895 Dus we kunnen iets doen hier waar ik denk dat ik de dekking van deze up-- 1204 00:58:43,895 --> 00:58:46,400 Ik bedekte de var sum part-- en we zeiden 1205 00:58:46,400 --> 00:58:49,850 functie xy gelijk rendement x plus y. 1206 00:58:49,850 --> 00:58:52,140 >> Dat zou noemen een anonieme functie. 1207 00:58:52,140 --> 00:58:53,920 Het is een functie zonder naam. 1208 00:58:53,920 --> 00:58:56,290 Overwegende dat deze zegt functie som, blah, blah, blah, 1209 00:58:56,290 --> 00:58:59,340 Dit zou alleen maar de functie te zeggen. 1210 00:58:59,340 --> 00:59:02,020 Maar nu ook al heb ik Deze anonieme functie, 1211 00:59:02,020 --> 00:59:03,630 die functie is eigenlijk gewoon een waarde. 1212 00:59:03,630 --> 00:59:05,160 We kunnen het behandelen als een waarde. 1213 00:59:05,160 --> 00:59:10,180 >> Dus we kunnen het op te slaan in een variabele hetzelfde manier waarop we konden opslaan 50 in een variabele. 1214 00:59:10,180 --> 00:59:13,870 Dus we kunnen zeggen, OK, ik wil een variabele, het heet som, 1215 00:59:13,870 --> 00:59:16,011 en het is deze functie. 1216 00:59:16,011 --> 00:59:18,760 Dus deze twee dingen zijn eigenlijk zal precies hetzelfde doen, 1217 00:59:18,760 --> 00:59:21,576 maar de syntax is een beetje verschillend en soort van een leuke noot. 1218 00:59:21,576 --> 00:59:22,076 Ja. 1219 00:59:22,076 --> 00:59:25,548 >> Publiek: Dus je zou kunnen noemen een functie die anoniem was door te zeggen: 1220 00:59:25,548 --> 00:59:28,244 som beugels 2, 5? 1221 00:59:28,244 --> 00:59:29,160 HANNAH BLUMBERG: Ja. 1222 00:59:29,160 --> 00:59:32,280 Je kunt dit anoniem bellen werken op dezelfde wijze. 1223 00:59:32,280 --> 00:59:33,350 Je zou som doen (2, 5) ;. 1224 00:59:33,350 --> 00:59:36,180 1225 00:59:36,180 --> 00:59:38,200 Dat zou heel fijn zijn. 1226 00:59:38,200 --> 00:59:41,575 >> Als ik niet doen var som gelijk functie, als ik gewoon verwijderd 1227 00:59:41,575 --> 00:59:45,480 dit-- Ik weet dat het op mijn hand, maar doen alsof ik verwijderde dit-- dan 1228 00:59:45,480 --> 00:59:46,964 die functie is een soort van gewoon weg. 1229 00:59:46,964 --> 00:59:49,630 Je kunt nooit opnieuw gebruiken, omdat je hoeft niet een naam voor. 1230 00:59:49,630 --> 00:59:53,497 Het is moeilijk om te verwijzen naar iets je weet niet wat te noemen. 1231 00:59:53,497 --> 00:59:54,080 Goede vraag. 1232 00:59:54,080 --> 00:59:54,580 Ja. 1233 00:59:54,580 --> 00:59:59,580 >> PUBLIEK: Kunt u sum verwijzen in andere plaatsen met de waarde van x plus y? 1234 00:59:59,580 --> 01:00:01,940 >> HANNAH BLUMBERG: Kunt u referentie bedrag op andere plaatsen 1235 01:00:01,940 --> 01:00:03,360 met de waarde x plus y? 1236 01:00:03,360 --> 01:00:05,130 Ik ben niet helemaal zeker wat je bedoelt. 1237 01:00:05,130 --> 01:00:10,582 >> Publiek: Dus je verleden semi-anonieme functie som gelijk aan deze 1238 01:00:10,582 --> 01:00:14,452 anonieme functie, dus som nu een variabele die je can-- 1239 01:00:14,452 --> 01:00:15,410 HANNAH BLUMBERG: Recht. 1240 01:00:15,410 --> 01:00:18,980 Dus som variabele, maar het is actually-- 1241 01:00:18,980 --> 01:00:23,770 dus som is een variabele waarvan waarde van de functie. 1242 01:00:23,770 --> 01:00:27,030 Dus het is een functie, die is een soort van een raar ding om je hoofd wikkelen rond 1243 01:00:27,030 --> 01:00:29,880 want we hebben het spelen met C en je kunt dat niet doen in C. 1244 01:00:29,880 --> 01:00:32,679 Maar nu kunnen we noemen het samenvatten dezelfde manier konden we som hier noemen. 1245 01:00:32,679 --> 01:00:33,220 Publiek: OK. 1246 01:00:33,220 --> 01:00:33,970 HANNAH BLUMBERG: Ja. 1247 01:00:33,970 --> 01:00:34,553 Goede vraag. 1248 01:00:34,553 --> 01:00:35,438 Ja. 1249 01:00:35,438 --> 01:00:39,862 >> Publiek: Dus we geen gebruik maken van de prototypes in PHP of JavaScript? 1250 01:00:39,862 --> 01:00:42,070 HANNAH BLUMBERG: Nee, we hoeft prototypes gebruiken, 1251 01:00:42,070 --> 01:00:43,880 vooral in JavaScript. 1252 01:00:43,880 --> 01:00:49,380 Dus een slechte praktijken ding dat ik ben gaan om te zeggen dat je niet moet doen 1253 01:00:49,380 --> 01:00:52,620 is dat je niet hoeft te var i = 50 schrijven. 1254 01:00:52,620 --> 01:00:54,840 Je kon gewoon beginnen met het doen i = 50. 1255 01:00:54,840 --> 01:00:57,490 En zou ik gewoon een globale variabele. 1256 01:00:57,490 --> 01:01:00,550 >> Het is zeer slechte gewoonte om zeg nooit expliciet var i, 1257 01:01:00,550 --> 01:01:01,800 maar het is iets wat je kunt doen. 1258 01:01:01,800 --> 01:01:03,591 De tolk is niet gaan schreeuwen naar je. 1259 01:01:03,591 --> 01:01:05,920 JavaScript is mooi als, je mag doen wat je wilt. 1260 01:01:05,920 --> 01:01:09,301 1261 01:01:09,301 --> 01:01:09,800 Oh, sorry. 1262 01:01:09,800 --> 01:01:10,300 Er zijn twee. 1263 01:01:10,300 --> 01:01:12,150 In het oranje broek. 1264 01:01:12,150 --> 01:01:13,190 Doe Maar. 1265 01:01:13,190 --> 01:01:14,390 >> PUBLIEK: Nee, eerst ga je. 1266 01:01:14,390 --> 01:01:16,765 >> Publiek: Nee, ik was gewoon te zeggen Ik heb niet mijn hand. 1267 01:01:16,765 --> 01:01:20,248 1268 01:01:20,248 --> 01:01:20,748 OK. 1269 01:01:20,748 --> 01:01:26,604 Dus als je om te bellen die eerste keer, nu Kortom, 1270 01:01:26,604 --> 01:01:29,864 We noemen het de zelfde manier, x, y, net als elke keer? 1271 01:01:29,864 --> 01:01:30,780 HANNAH BLUMBERG: Ja. 1272 01:01:30,780 --> 01:01:32,572 Dus deze twee in hoofdzaak hetzelfde doen. 1273 01:01:32,572 --> 01:01:35,113 Publiek: En wat is het voordeel het gebruik van een of andere? 1274 01:01:35,113 --> 01:01:37,500 HANNAH BLUMBERG: Geen voordeel het gebruik van een of de ander. 1275 01:01:37,500 --> 01:01:40,080 Ik wilde alleen maar om te laten zien twee verschillende stukken van de syntaxis. 1276 01:01:40,080 --> 01:01:42,770 Een heleboel keer, waar anonieme functies hebben een doel 1277 01:01:42,770 --> 01:01:48,220 is als het argument naar een andere functie moet worden verricht. 1278 01:01:48,220 --> 01:01:50,600 En we zullen zien dat er in gewoon een tweede bij Ajax. 1279 01:01:50,600 --> 01:01:53,577 >> Dus als dat heeft geen zin, opslaan in de achterkant van je hoofd. 1280 01:01:53,577 --> 01:01:55,660 Dat is waar een anonieme functie nuttig zou kunnen zijn 1281 01:01:55,660 --> 01:01:58,284 want het is niet echt de moeite waard het geven van een naam omdat we gewoon 1282 01:01:58,284 --> 01:01:59,443 gaat gebruiken een keer. 1283 01:01:59,443 --> 01:02:00,370 Ja. 1284 01:02:00,370 --> 01:02:03,635 >> Doelgroep: Als x en y verandering later , zal vatten eveneens veranderen? 1285 01:02:03,635 --> 01:02:06,510 HANNAH BLUMBERG: Als x en y wijzigen later zullen samenvatten veranderen ook? 1286 01:02:06,510 --> 01:02:08,840 Dus dit is eigenlijk I denk dat er iets is dat, 1287 01:02:08,840 --> 01:02:12,260 nogmaals, het voelt gewoon heel anders van C. Dit is niet een waarde. 1288 01:02:12,260 --> 01:02:13,620 Het is geen 5. 1289 01:02:13,620 --> 01:02:15,550 Het is gewoon de functie zelf. 1290 01:02:15,550 --> 01:02:19,110 Dus zodra je geef het parameters, dan zul je eigenlijk berekenen een waarde. 1291 01:02:19,110 --> 01:02:21,193 >> MARIA ZLATKOVA: En dan kunt u de functie bellen 1292 01:02:21,193 --> 01:02:23,272 en gebruik deze om een ​​bepaalde waarde te krijgen. 1293 01:02:23,272 --> 01:02:24,230 HANNAH BLUMBERG: Recht. 1294 01:02:24,230 --> 01:02:25,250 Precies. 1295 01:02:25,250 --> 01:02:25,863 Ja. 1296 01:02:25,863 --> 01:02:27,946 >> Publiek: Dus als je gewoon opslaan in de variabele, 1297 01:02:27,946 --> 01:02:31,430 zoals var x gelijk is aan som van twee values-- 1298 01:02:31,430 --> 01:02:32,420 >> HANNAH BLUMBERG: Ja. 1299 01:02:32,420 --> 01:02:35,320 Dus je kon gewoon doen var sum is gelijk aan som van twee waarden. 1300 01:02:35,320 --> 01:02:37,670 Ja. 1301 01:02:37,670 --> 01:02:38,680 Een andere vragen? 1302 01:02:38,680 --> 01:02:39,642 Ja. 1303 01:02:39,642 --> 01:02:42,047 >> Publiek: Maar zou dat verwarren som en de som? 1304 01:02:42,047 --> 01:02:45,062 Net als u uw variabel bedrag noemen, zou u de functie som noemen? 1305 01:02:45,062 --> 01:02:45,895 HANNAH BLUMBERG: Mm. 1306 01:02:45,895 --> 01:02:46,395 Mm. 1307 01:02:46,395 --> 01:02:51,253 Als je iets deed zoals, een bedrag gelijk aan som 2, 5? 1308 01:02:51,253 --> 01:02:53,170 >> Publiek: Ja. 1309 01:02:53,170 --> 01:02:56,465 >> HANNAH BLUMBERG: Ik geloof dat zou de waarde van het bedrag overschrijven. 1310 01:02:56,465 --> 01:02:59,290 Dus andere interessante ding over JavaScript 1311 01:02:59,290 --> 01:03:02,950 is dat een enkele variabele kan aannemen op een heleboel verschillende soorten. 1312 01:03:02,950 --> 01:03:03,790 Slechte praktijken. 1313 01:03:03,790 --> 01:03:06,280 Je moet niet iets doen als wat je net zei. 1314 01:03:06,280 --> 01:03:10,240 >> Maar in C, als ik is ingesteld gelijk is aan een geheel getal, 1315 01:03:10,240 --> 01:03:13,570 we weten dat het nooit gaan naar een string te worden. 1316 01:03:13,570 --> 01:03:15,670 Dit is niet het geval in JavaScript. 1317 01:03:15,670 --> 01:03:17,770 Ja, goede vraag. 1318 01:03:17,770 --> 01:03:20,151 Nog iets? 1319 01:03:20,151 --> 01:03:20,650 Prima. 1320 01:03:20,650 --> 01:03:21,850 Doet al precies op tijd. 1321 01:03:21,850 --> 01:03:23,050 Houden gaan. 1322 01:03:23,050 --> 01:03:25,200 Prima. 1323 01:03:25,200 --> 01:03:27,780 >> Als we kijken naar een array in JavaScript, hier is 1324 01:03:27,780 --> 01:03:30,250 snel een voorbeeld van een array van strings. 1325 01:03:30,250 --> 01:03:31,967 En arrays kunnen dynamisch groeien. 1326 01:03:31,967 --> 01:03:33,675 Ze hebben geen hebben vaste grootte op dezelfde manier 1327 01:03:33,675 --> 01:03:37,990 dat ze in C. We kunnen toegang krijgen tot de elementen met alleen de vierkante haken. 1328 01:03:37,990 --> 01:03:41,720 >> Dat lijkt veel op PHP en een heleboel zoals C, waarbij we kunnen zeggen, in casu 1329 01:03:41,720 --> 01:03:48,360 als ik wilde het woord JavaScript, zou ik do arr vierkante haken met een 0, 1, 2. 1330 01:03:48,360 --> 01:03:51,450 1331 01:03:51,450 --> 01:03:55,390 En dan als je nog in C als we wilde de lengte van een array te krijgen, 1332 01:03:55,390 --> 01:03:56,820 het was echt vervelend. 1333 01:03:56,820 --> 01:03:58,460 Maar in JavaScript, super eenvoudig. 1334 01:03:58,460 --> 01:03:59,910 Alles wat we doen, .length. 1335 01:03:59,910 --> 01:04:01,120 Geeft het de lengtes. 1336 01:04:01,120 --> 01:04:01,892 Dat is het. 1337 01:04:01,892 --> 01:04:03,140 >> PUBLIEK: Dat is simpel. 1338 01:04:03,140 --> 01:04:05,306 >> HANNAH BLUMBERG: Ja, maakt uw leven een stuk eenvoudiger. 1339 01:04:05,306 --> 01:04:08,950 1340 01:04:08,950 --> 01:04:11,560 OK, object-- er niet. 1341 01:04:11,560 --> 01:04:15,480 Objecten in JavaScript gevoel een partij als structs in C 1342 01:04:15,480 --> 01:04:18,280 en associatieve arrays in PHP. 1343 01:04:18,280 --> 01:04:20,270 Dus wat we hebben gezien een Veel is JSON, die 1344 01:04:20,270 --> 01:04:23,150 staat voor JavaScript Object Notation. 1345 01:04:23,150 --> 01:04:25,550 En het is eigenlijk een manier structureren van onze data. 1346 01:04:25,550 --> 01:04:27,880 >> Dus laten we zien een voorbeeld, waarschijnlijk de eenvoudigste. 1347 01:04:27,880 --> 01:04:32,540 Dus hier is een voorbeeld van een object dat slaat de klasse, CS50. 1348 01:04:32,540 --> 01:04:37,790 En als ik de klas zeggen, ik bedoel natuurlijk, niet like-- ja, de cursus, CS50. 1349 01:04:37,790 --> 01:04:40,730 En je zult zien dat alles in het object 1350 01:04:40,730 --> 01:04:43,526 zal worden opgenomen accolades. 1351 01:04:43,526 --> 01:04:48,260 >> En we beginnen met veldnamen associëren toetsen met verschillende waarden. 1352 01:04:48,260 --> 01:04:52,920 Dus je kunt beginnen om te zien hoe dit soort voelt als een associatieve array in PHP. 1353 01:04:52,920 --> 01:04:57,450 Dus we gaan naar het veld te associëren of de sleutel naam, uiteraard, met de string, 1354 01:04:57,450 --> 01:04:58,510 CS50. 1355 01:04:58,510 --> 01:04:59,940 >> We gaan een instructeur te hebben. 1356 01:04:59,940 --> 01:05:00,940 We gaan TFs hebben. 1357 01:05:00,940 --> 01:05:05,240 We gaan het aantal psets hebben en we gaan te hebben opgenomen. 1358 01:05:05,240 --> 01:05:10,720 En een cool ding om op te merken is al deze dingen hebben verschillende soorten, 1359 01:05:10,720 --> 01:05:12,020 en dat is helemaal prima. 1360 01:05:12,020 --> 01:05:15,330 >> Het is goed voor een object, in feite, het is waarschijnlijk verwacht voor een object 1361 01:05:15,330 --> 01:05:19,620 een combinatie van snaren en cijfers en Booleans en arrays 1362 01:05:19,620 --> 01:05:23,420 en alles wat je zou kunnen wilt in uw object te hebben. 1363 01:05:23,420 --> 01:05:28,570 En er rekening mee dat deze zullen worden de namen of de toetsen, en dan gaan we gewoon 1364 01:05:28,570 --> 01:05:30,300 zet het gelijk met een beetje dikke darm. 1365 01:05:30,300 --> 01:05:32,015 >> Publiek: Wat betekent JSON betekenen? 1366 01:05:32,015 --> 01:05:33,890 HANNAH BLUMBERG: Wat precies doet JSON betekenen? 1367 01:05:33,890 --> 01:05:36,470 JSON staat voor JavaScript Object Notation. 1368 01:05:36,470 --> 01:05:38,430 Het is gewoon een manier van opmaak. 1369 01:05:38,430 --> 01:05:40,040 Ja. 1370 01:05:40,040 --> 01:05:41,800 Het is een manier van het formatteren van onze data. 1371 01:05:41,800 --> 01:05:43,620 >> In C, het is structuren. 1372 01:05:43,620 --> 01:05:45,800 In PHP is het associatieve arrays. 1373 01:05:45,800 --> 01:05:47,120 In JavaScript, hebben we objecten. 1374 01:05:47,120 --> 01:05:48,969 >> Publiek: Dus CS50 is een object? 1375 01:05:48,969 --> 01:05:51,010 HANNAH BLUMBERG: CS50 is het doel in dit geval. 1376 01:05:51,010 --> 01:05:54,830 1377 01:05:54,830 --> 01:05:57,880 Nu, hoe doen we eigenlijk toegang die gebieden of wijzigen deze gebieden. 1378 01:05:57,880 --> 01:06:03,920 Stel bijvoorbeeld dat we besloten je wilde een minder PSET dit semester. 1379 01:06:03,920 --> 01:06:06,300 In plaats van negen, we zijn gewoon te hebben acht. 1380 01:06:06,300 --> 01:06:08,240 Hoe zouden we dat veranderen? 1381 01:06:08,240 --> 01:06:09,436 >> Oh, verkeerde manier. 1382 01:06:09,436 --> 01:06:11,060 Er zijn twee manieren waarop we dat kunnen doen. 1383 01:06:11,060 --> 01:06:13,490 Nummer één is met de stip notatie en nummer twee 1384 01:06:13,490 --> 01:06:15,750 is met het kwadraat haakjesnotering. 1385 01:06:15,750 --> 01:06:19,720 Dus, bijvoorbeeld, als ik wilde veranderen of de toegang 1386 01:06:19,720 --> 01:06:26,820 het veld psets in onze CS50 object, wat ik zou doen is CS50.psets, 1387 01:06:26,820 --> 01:06:30,770 zodat de naam van het object dot de naam van het veld of de sleutel. 1388 01:06:30,770 --> 01:06:37,120 >> Zeer evenzo, het is precies gelijkwaardig te doen CS50, en dan 1389 01:06:37,120 --> 01:06:42,050 in rechte haken, psets. 1390 01:06:42,050 --> 01:06:42,837 Koel? 1391 01:06:42,837 --> 01:06:44,298 Ja. 1392 01:06:44,298 --> 01:06:47,707 >> Publiek: Dus is JSON technisch JavaScript nog steeds, 1393 01:06:47,707 --> 01:06:51,814 ook al in de psets we scheiden het uit [onverstaanbaar]? 1394 01:06:51,814 --> 01:06:52,730 HANNAH BLUMBERG: Zeker. 1395 01:06:52,730 --> 01:06:56,290 Dus de vraag is, zijn JavaScript en JSON gelijk? 1396 01:06:56,290 --> 01:07:00,750 Dus JSON notatie is, in principe de manier waarop we uit te schrijven 1397 01:07:00,750 --> 01:07:02,700 een object uit JavaScript. 1398 01:07:02,700 --> 01:07:05,190 Zodat ze niet precies hetzelfde. 1399 01:07:05,190 --> 01:07:08,950 >> Ik zou zeggen JavaScript, er zijn objecten in JavaScript. 1400 01:07:08,950 --> 01:07:12,590 JSON neemt die objecten en drukt ze en geeft ze 1401 01:07:12,590 --> 01:07:15,160 of slaat ze op een leuke manier. 1402 01:07:15,160 --> 01:07:18,110 Dus JSON is geen programmering taal de manier waarop JavaScript is. 1403 01:07:18,110 --> 01:07:20,900 Het is gewoon de notatie voor onze objecten in JavaScript. 1404 01:07:20,900 --> 01:07:21,400 Ja. 1405 01:07:21,400 --> 01:07:24,144 >> Publiek: Dus wat precies [Onverstaanbaar] af te ronden? 1406 01:07:24,144 --> 01:07:25,060 HANNAH BLUMBERG: Zeker. 1407 01:07:25,060 --> 01:07:27,727 Dus dit doet eigenlijk niets. 1408 01:07:27,727 --> 01:07:28,935 Dit is gewoon een manier om toegang te krijgen. 1409 01:07:28,935 --> 01:07:31,393 Dus laten we zeggen dat we wilden veranderen het aantal problematische sets 1410 01:07:31,393 --> 01:07:32,450 9-8. 1411 01:07:32,450 --> 01:07:34,383 Wat wij doen is iets doen zoals CS50.psets = 8 ;. 1412 01:07:34,383 --> 01:07:38,500 1413 01:07:38,500 --> 01:07:39,400 >> Ja, grote vraag. 1414 01:07:39,400 --> 01:07:40,733 Dit is gewoon om je te laten zien syntax. 1415 01:07:40,733 --> 01:07:43,620 Niet echt iets nuttigs te doen. 1416 01:07:43,620 --> 01:07:46,085 Nog vragen? 1417 01:07:46,085 --> 01:07:48,210 Bewegende rechts langs. 1418 01:07:48,210 --> 01:07:51,960 >> Dus laten we eens kijken naar een snelle voorbeeld van hoe JavaScript werkt omdat ik zei toch dat het 1419 01:07:51,960 --> 01:07:55,170 doet al deze coole dingen en stelt ons in staat om webpagina's aan te passen. 1420 01:07:55,170 --> 01:07:56,970 Laten we eens echt zien in actie. 1421 01:07:56,970 --> 01:07:59,850 Dus neem, bijvoorbeeld, dit HTML-bestand. 1422 01:07:59,850 --> 01:08:04,350 >> En het ding ik wil dat je te concentreren op is dit specifieke tag, dat is een knop, 1423 01:08:04,350 --> 01:08:06,182 met id search_button. 1424 01:08:06,182 --> 01:08:08,670 Het is gewoon op de pagina. 1425 01:08:08,670 --> 01:08:10,690 Dus laten we nu zien wat kunnen we eigenlijk doen. 1426 01:08:10,690 --> 01:08:12,560 >> Nou, stel dat bij u klikt op die knop, 1427 01:08:12,560 --> 01:08:16,010 we willen een alert-- maken u hebt geklikt op de knop. 1428 01:08:16,010 --> 01:08:17,840 Laten we eens kijken hoe we dat kunnen doen. 1429 01:08:17,840 --> 01:08:23,869 Dus window.onload-- dit is niet iets dat je hebt gezien in de klas, dus 1430 01:08:23,869 --> 01:08:26,180 hoeft niet te weten voor de quiz. 1431 01:08:26,180 --> 01:08:33,660 Maar dit zegt eigenlijk, OK, oproep deze functie wanneer het venster geladen. 1432 01:08:33,660 --> 01:08:35,080 >> Dus dat is gewoon een soort van setup code. 1433 01:08:35,080 --> 01:08:36,390 Niet zo veel over dat zorgen. 1434 01:08:36,390 --> 01:08:39,170 Wat ik wil dat je te concentreren op is hier. 1435 01:08:39,170 --> 01:08:44,020 We zeggen var searchButton gelijk document.getElementById search_button. 1436 01:08:44,020 --> 01:08:46,450 >> Dus zoals je wel kan raden, Wat dit doet is het zegt, 1437 01:08:46,450 --> 01:08:50,920 OK, ga vinden het element met ID search_button. 1438 01:08:50,920 --> 01:08:52,790 En nu hebben we dat feitelijke element en ik ben 1439 01:08:52,790 --> 01:08:56,279 gaan om het op te slaan in een variabele searchButton. 1440 01:08:56,279 --> 01:09:00,651 En nu kunnen we daadwerkelijk gebruik maken van dat element en verander het, of toegang tot haar waarden, 1441 01:09:00,651 --> 01:09:01,359 dat soort dingen. 1442 01:09:01,359 --> 01:09:04,649 We kunnen eigenlijk beginnen bezighouden met de webpagina. 1443 01:09:04,649 --> 01:09:10,330 >> Dus hier zeg ik, OK, nu dat ik heb die knop, als erop wordt geklikt, 1444 01:09:10,330 --> 01:09:12,859 Dit noemen anonieme functie. 1445 01:09:12,859 --> 01:09:16,811 Dus dit is waar anoniem functies geworden nuttig. 1446 01:09:16,811 --> 01:09:18,060 En wat doet de functie doen? 1447 01:09:18,060 --> 01:09:20,529 Nou, het roept alleen deze alert-functie en het zegt, 1448 01:09:20,529 --> 01:09:22,910 u hebt geklikt op de knop Zoeken. 1449 01:09:22,910 --> 01:09:29,670 >> Dus wat gebeurt er als ik naar waar deze HTML leeft en ik klik op de knop, 1450 01:09:29,670 --> 01:09:33,729 Ik zal een mooie kleine waarschuwing krijgen die zegt dat je klikte op de knop. 1451 01:09:33,729 --> 01:09:40,710 Dus de dingen te concentreren op hier-- document.getElementById 1452 01:09:40,710 --> 01:09:44,960 krijgt een bepaalde HTML element met de gegeven ID. 1453 01:09:44,960 --> 01:09:48,529 En nu kunnen we stellen wat er moet gebeuren wanneer 1454 01:09:48,529 --> 01:09:50,702 dat bijzondere element wordt geklikt. 1455 01:09:50,702 --> 01:09:52,670 >> PUBLIEK: We moeten dat allemaal in te zetten? 1456 01:09:52,670 --> 01:09:53,162 >> HANNAH BLUMBERG: Sorry? 1457 01:09:53,162 --> 01:09:55,130 >> Publiek: Moeten we fysiek al die code? 1458 01:09:55,130 --> 01:09:56,340 >> HANNAH BLUMBERG: Moeten we fysiek al die code? 1459 01:09:56,340 --> 01:09:56,839 Ja. 1460 01:09:56,839 --> 01:09:58,120 Is dit niet een beetje vervelend? 1461 01:09:58,120 --> 01:10:00,032 Dit is een veel code. 1462 01:10:00,032 --> 01:10:01,574 >> Publiek: Je kan iets te importeren. 1463 01:10:01,574 --> 01:10:02,532 HANNAH BLUMBERG: Recht. 1464 01:10:02,532 --> 01:10:03,610 We kunnen iets te gebruiken. 1465 01:10:03,610 --> 01:10:08,140 En in particular-- oh, het is me te vertellen Ik moet sectie onderwijzen. 1466 01:10:08,140 --> 01:10:11,061 In het bijzonder, laten we gebruik maken van de bibliotheek jQuery, 1467 01:10:11,061 --> 01:10:13,060 want dat was echt lang en echt vervelend 1468 01:10:13,060 --> 01:10:16,860 en ik wil in staat zijn om het te vereenvoudigen en maakt het korter en eenvoudiger te schrijven. 1469 01:10:16,860 --> 01:10:19,810 >> Dus jQuery is een JavaScript-bibliotheek. 1470 01:10:19,810 --> 01:10:24,930 Javascript is zo programmeren taal; jQuery is een bibliotheek. 1471 01:10:24,930 --> 01:10:27,190 En het maakt een heleboel dingen makkelijker. 1472 01:10:27,190 --> 01:10:33,230 Het maakt het veranderen en over te gaan een HTML-document veel gemakkelijker. 1473 01:10:33,230 --> 01:10:35,030 >> Het maakt handling gebeurtenissen gemakkelijker. 1474 01:10:35,030 --> 01:10:37,580 Het maakt animatie makkelijker en het maakt Ajax eenvoudiger. 1475 01:10:37,580 --> 01:10:40,140 Dus laten we springen in twee van die dingen nu. 1476 01:10:40,140 --> 01:10:40,900 Excuseer mij. 1477 01:10:40,900 --> 01:10:42,620 Voordat we dat doen, een aantal fundamentele syntax. 1478 01:10:42,620 --> 01:10:46,870 >> Dit is wat de meeste oproepen naar de jQuery bibliotheek eruit. 1479 01:10:46,870 --> 01:10:50,520 Wij gebruiken dit dollar sign-- geen verbinding teken om PHP, 1480 01:10:50,520 --> 01:10:56,030 gewoon inconvenient-- de naam van een selector, punt, en vervolgens een actie. 1481 01:10:56,030 --> 01:10:58,860 Dus laten we zien een aantal concrete voorbeelden van. 1482 01:10:58,860 --> 01:11:02,980 >> Dus dit is eigenlijk hetzelfde code van het evenement dia. 1483 01:11:02,980 --> 01:11:08,740 Dus dit lang, lelijk ding wordt dit veel mooier, kleinere zaak. 1484 01:11:08,740 --> 01:11:10,370 Dus laten we proberen om dit af te breken. 1485 01:11:10,370 --> 01:11:17,090 Dit zegt, OK, jQuery-- dit dollar sign-- jQuery, vind ik het raam. 1486 01:11:17,090 --> 01:11:18,480 Dus dat is de selector. 1487 01:11:18,480 --> 01:11:21,800 >> Wanneer het laadt, noemen deze functie. 1488 01:11:21,800 --> 01:11:23,880 Dus dat is alles binnen. 1489 01:11:23,880 --> 01:11:24,380 OK. 1490 01:11:24,380 --> 01:11:25,740 Tot dusver, zo goed? 1491 01:11:25,740 --> 01:11:26,750 Prima. 1492 01:11:26,750 --> 01:11:32,970 >> Nu, jQuery, vind ik het ding met ID search_button. 1493 01:11:32,970 --> 01:11:36,090 En wat het wordt geklikt, noemen deze functie. 1494 01:11:36,090 --> 01:11:37,900 En dan is deze functie's precies dezelfde. 1495 01:11:37,900 --> 01:11:41,052 Gewoon een beetje alert, u hebt geklikt op de knop Zoeken. 1496 01:11:41,052 --> 01:11:42,650 >> Dus het is echt leuk. 1497 01:11:42,650 --> 01:11:46,260 Condenseert echt en vereenvoudigt onze code. 1498 01:11:46,260 --> 01:11:49,030 Hoe wist ik dat het is ID search_button 1499 01:11:49,030 --> 01:11:50,960 en niet zoals de klas search_button? 1500 01:11:50,960 --> 01:11:52,024 >> PUBLIEK: Hashtag? 1501 01:11:52,024 --> 01:11:52,940 HANNAH BLUMBERG: Ja. 1502 01:11:52,940 --> 01:11:56,450 Dit hekje, het is net als CSS. 1503 01:11:56,450 --> 01:12:00,080 Dus onthoud, met CSS, wanneer we wilde iets van ID te selecteren, 1504 01:12:00,080 --> 01:12:01,590 gebruikten we het hekje. 1505 01:12:01,590 --> 01:12:05,400 En toen we wilden selecteren iets per klasse, gebruiken we de stip. 1506 01:12:05,400 --> 01:12:06,870 Grote. 1507 01:12:06,870 --> 01:12:08,230 Zin? 1508 01:12:08,230 --> 01:12:11,500 Dus jQuery wordt verondersteld gewoon maken ons leven makkelijker. 1509 01:12:11,500 --> 01:12:12,000 Ja. 1510 01:12:12,000 --> 01:12:15,660 >> Publiek: Dus ik ben een beetje in de war als hoe de anonieme functie werkt. 1511 01:12:15,660 --> 01:12:19,027 Heeft u noemt dit anonymouse functie, functioneren? 1512 01:12:19,027 --> 01:12:20,594 Hoe heet het? 1513 01:12:20,594 --> 01:12:21,510 HANNAH BLUMBERG: Zeker. 1514 01:12:21,510 --> 01:12:25,812 Dus functie is slechts een sleutelwoord dat zegt, ik sta op het punt om een ​​functie te definiëren. 1515 01:12:25,812 --> 01:12:26,520 PUBLIEK: Oh, OK. 1516 01:12:26,520 --> 01:12:27,353 HANNAH BLUMBERG: OK? 1517 01:12:27,353 --> 01:12:32,120 En dan passeren we het als een argument to-- laten we 1518 01:12:32,120 --> 01:12:37,040 deze innerlijke een-- aan de klik-functie. 1519 01:12:37,040 --> 01:12:39,420 Dus ja, zodat die functie, Deze anonieme functie, 1520 01:12:39,420 --> 01:12:40,910 wordt een echte argument. 1521 01:12:40,910 --> 01:12:43,632 Dus onthoud in JavaScript, we kunt functies behandelen als waarden. 1522 01:12:43,632 --> 01:12:44,340 PUBLIEK: Oh, OK. 1523 01:12:44,340 --> 01:12:45,256 HANNAH BLUMBERG: Ja. 1524 01:12:45,256 --> 01:12:46,035 Ik vind dat "oh." 1525 01:12:46,035 --> 01:12:47,490 Nice. 1526 01:12:47,490 --> 01:12:49,915 Andere vragen? 1527 01:12:49,915 --> 01:12:50,505 Tijd? 1528 01:12:50,505 --> 01:12:51,380 MARIA ZLATKOVA: Goed. 1529 01:12:51,380 --> 01:12:52,760 Goed. 1530 01:12:52,760 --> 01:12:54,210 >> HANNAH BLUMBERG: Awesome. 1531 01:12:54,210 --> 01:12:55,720 Een aantal snelle nuttige jQuery. 1532 01:12:55,720 --> 01:12:57,559 Ik ben niet van plan om te gaan door al deze. 1533 01:12:57,559 --> 01:12:59,350 Deze dia's zullen zijn up online een beetje 1534 01:12:59,350 --> 01:13:02,040 later, zodat u kunt controleren het uit een beetje later. 1535 01:13:02,040 --> 01:13:07,120 Maar in principe, de algemene patroon houdt waar we zeggen, 1536 01:13:07,120 --> 01:13:11,510 OK, hey, jQuery, hier is mijn selector en dan is hier een actie. 1537 01:13:11,510 --> 01:13:15,940 En je kunt dingen doen, zoals toegang tot de waarde van een formulier, toegang tot een aantal HTML, 1538 01:13:15,940 --> 01:13:19,195 controle wat er gebeurt als de gebruiker dient een formulier, dat soort dingen. 1539 01:13:19,195 --> 01:13:20,106 Ja. 1540 01:13:20,106 --> 01:13:22,090 >> Publiek: Dus in het examen, gaan we nodig hebben 1541 01:13:22,090 --> 01:13:25,066 heel veel weten van de jQuery documentatie. 1542 01:13:25,066 --> 01:13:31,018 Dus gezien het feit dat we te kopiëren / plakken van de jQuery documentatie om onze cheat sheet, 1543 01:13:31,018 --> 01:13:32,506 Waar is de lijn? 1544 01:13:32,506 --> 01:13:33,957 Zoals hoeveel hebben we nodig om te weten? 1545 01:13:33,957 --> 01:13:35,290 HANNAH BLUMBERG: Grote vraag. 1546 01:13:35,290 --> 01:13:37,765 De vraag is wezen gezien het feit dat je 1547 01:13:37,765 --> 01:13:41,330 geen toegang tot de jQuery documentatie tijdens de test, hoeveel moet je 1548 01:13:41,330 --> 01:13:41,830 weten? 1549 01:13:41,830 --> 01:13:45,540 We zouden niet verwachten dat je om te komen met een aantal willekeurige functie 1550 01:13:45,540 --> 01:13:47,240 dat wij u zou verwachten van Google. 1551 01:13:47,240 --> 01:13:52,930 >> Dingen die eerlijk spel zijn zijn zou ik Zeg gewoon een soort van de algemene syntax, 1552 01:13:52,930 --> 01:13:58,310 het kunnen selecteren op ID en door class-- dus net als CSS. 1553 01:13:58,310 --> 01:14:01,876 En dan de eigenlijke functies zichzelf, we zullen je waarschijnlijk vertellen. 1554 01:14:01,876 --> 01:14:02,376 Ja. 1555 01:14:02,376 --> 01:14:05,591 >> Publiek: Dus als je kiest per klasse punt zou betekenen. 1556 01:14:05,591 --> 01:14:06,840 HANNAH BLUMBERG: Ja, precies. 1557 01:14:06,840 --> 01:14:07,340 Goed. 1558 01:14:07,340 --> 01:14:10,461 Wanneer u door de klas te selecteren, gaat het te stippelen in plaats van het hekje. 1559 01:14:10,461 --> 01:14:10,960 Ja. 1560 01:14:10,960 --> 01:14:12,710 >> Publiek: Wilt u gaan over het verschil 1561 01:14:12,710 --> 01:14:14,310 tussen het selecteren van ID en per klasse? 1562 01:14:14,310 --> 01:14:14,560 >> HANNAH BLUMBERG: Zeker. 1563 01:14:14,560 --> 01:14:17,510 Het verschil tussen het selecteren ID en selecteren per klasse. 1564 01:14:17,510 --> 01:14:20,685 Dus als Maria zei een beetje eerder, er 1565 01:14:20,685 --> 01:14:26,280 kan slechts een HTML-element met een bepaalde ID, terwijl klasse, 1566 01:14:26,280 --> 01:14:29,740 Het laat ons toe om de groep een bos verschillende elementen samen, 1567 01:14:29,740 --> 01:14:34,300 dus dingen die te maken hebben, maar niet precies hetzelfde. 1568 01:14:34,300 --> 01:14:35,685 Is dat een antwoord op de vraag? 1569 01:14:35,685 --> 01:14:36,200 Geweldig. 1570 01:14:36,200 --> 01:14:37,194 Ja. 1571 01:14:37,194 --> 01:14:40,680 >> Publiek: Wat als je meerdere hebt dingen die in dezelfde klasse? 1572 01:14:40,680 --> 01:14:42,150 >> HANNAH BLUMBERG: Wat gebeurt er als je meerdere dingen die 1573 01:14:42,150 --> 01:14:43,280 zijn dezelfde klasse? 1574 01:14:43,280 --> 01:14:45,829 Dus, bijvoorbeeld, als we alleen met behulp van pure JavaScript, 1575 01:14:45,829 --> 01:14:48,120 zouden we iets doen, zoals document.getElementsByClass. 1576 01:14:48,120 --> 01:14:52,280 1577 01:14:52,280 --> 01:14:56,320 En wat dat eigenlijk doet is terug een array van elementen. 1578 01:14:56,320 --> 01:14:59,517 >> En je moet ofwel itereren over hen of vinden welke je wilt. 1579 01:14:59,517 --> 01:15:01,350 Het is niet van plan op te geven u een enkel element. 1580 01:15:01,350 --> 01:15:03,450 Het gaat om u Een reeks elementen. 1581 01:15:03,450 --> 01:15:05,280 Grote vraag. 1582 01:15:05,280 --> 01:15:07,700 Nog iets? 1583 01:15:07,700 --> 01:15:09,520 Geweldig. 1584 01:15:09,520 --> 01:15:12,860 >> Dus ik denk dat als je bekend bent met elke jQuery je zag in de PSET, 1585 01:15:12,860 --> 01:15:15,600 je moet goed om te gaan. 1586 01:15:15,600 --> 01:15:16,325 Vraag? 1587 01:15:16,325 --> 01:15:17,610 O nee. 1588 01:15:17,610 --> 01:15:18,859 Ik moet echt leren. 1589 01:15:18,859 --> 01:15:19,358 Ontspannen. 1590 01:15:19,358 --> 01:15:20,035 Het komt wel goed. 1591 01:15:20,035 --> 01:15:20,660 Ik zal er komen. 1592 01:15:20,660 --> 01:15:24,670 1593 01:15:24,670 --> 01:15:26,870 >> Laten we praten over Ajax. 1594 01:15:26,870 --> 01:15:31,350 Dus Ajax gaat a-- goed, laten we beginnen met waar het voor staat. 1595 01:15:31,350 --> 01:15:32,350 Het is een acroniem. 1596 01:15:32,350 --> 01:15:35,855 Het staat voor Asynchronous JavaScript en XML. 1597 01:15:35,855 --> 01:15:39,800 En XML is in principe gaat worden [Onverstaanbaar] met een soort van onze data. 1598 01:15:39,800 --> 01:15:42,100 Maar we hebben niet echt gebruikt XML. 1599 01:15:42,100 --> 01:15:43,430 In plaats daarvan hebben we gewoon gebruik maken van JSON. 1600 01:15:43,430 --> 01:15:48,350 >> Dus eigenlijk is het aantal data-- asynchrone, JavaScript, en data, 1601 01:15:48,350 --> 01:15:50,040 in dit geval, JSON. 1602 01:15:50,040 --> 01:15:52,820 En ons doel, zoals we al een beetje eerder, 1603 01:15:52,820 --> 01:15:56,880 is in staat zijn om een ​​te maken verzoek hebben dat verzoek te doen 1604 01:15:56,880 --> 01:16:00,700 zijn ding in de achtergrond, maar blijven 1605 01:16:00,700 --> 01:16:02,550 doen wat we van plan waren te doen. 1606 01:16:02,550 --> 01:16:06,650 En toen die informatie klaar is, dan zullen we het op te nemen. 1607 01:16:06,650 --> 01:16:08,470 >> Dus laten we zien wat dit daadwerkelijk uitziet. 1608 01:16:08,470 --> 01:16:11,210 En dit, moet je een beetje bekend 1609 01:16:11,210 --> 01:16:13,680 uit pset8, degene die je net draaide in. 1610 01:16:13,680 --> 01:16:16,200 Dus hier is een geldig jQuery functie die we misschien 1611 01:16:16,200 --> 01:16:18,250 willen weten about-- dit dollarteken. 1612 01:16:18,250 --> 01:16:21,500 Dus het jQuery functie .getJSON zegt. 1613 01:16:21,500 --> 01:16:25,020 >> En wat deze functie doet is het neemt een URL en wat parameters-- 1614 01:16:25,020 --> 01:16:28,000 dus ik denk dat in het geval van pset8, het was, 1615 01:16:28,000 --> 01:16:33,520 de URL was articles.php en de parameters was go = enkele postcode. 1616 01:16:33,520 --> 01:16:41,580 En het zegt, OK, een verzoek om Deze URL met de gegeven parameters. 1617 01:16:41,580 --> 01:16:43,480 En dat gebeurt gewoon. 1618 01:16:43,480 --> 01:16:47,730 >> Als het klaar is, het is ofwel ga met succes te voltooien 1619 01:16:47,730 --> 01:16:49,370 of het zal mislukken. 1620 01:16:49,370 --> 01:16:53,480 Dus dit is het equivalent van de oproep Rob en vraag hem om iets te doen. 1621 01:16:53,480 --> 01:17:00,260 En toen hij terugbelt, hij is ofwel gaan zeggen dat ik klaar ben, of ik gefaald. 1622 01:17:00,260 --> 01:17:04,030 >> Dus in het geval dat je bent gedaan, zeg je, OK, ik ben klaar. 1623 01:17:04,030 --> 01:17:05,980 En dan deze functie bel je. 1624 01:17:05,980 --> 01:17:08,915 In dit geval gaat het om een ​​te zijn functie dat bepaalde informatie neemt. 1625 01:17:08,915 --> 01:17:12,890 De ene we meestal de zorg over zijn gegevens, de gegevens die we eigenlijk waren teruggekeerd 1626 01:17:12,890 --> 01:17:15,900 als resultaat van het opvragen .getJSON. 1627 01:17:15,900 --> 01:17:17,470 >> En je kunt er iets mee doen. 1628 01:17:17,470 --> 01:17:23,670 Dus in het geval van pset8, we getoond als een lijst. 1629 01:17:23,670 --> 01:17:29,050 Fail gaat om een ​​functie te zijn die wordt genoemd als de aanvraag mislukt 1630 01:17:29,050 --> 01:17:30,450 voor welke reden dan ook. 1631 01:17:30,450 --> 01:17:35,104 En in het geval van pset8, we console.log het gewoon. 1632 01:17:35,104 --> 01:17:36,020 Heeft u vragen over dat? 1633 01:17:36,020 --> 01:17:36,300 Ja. 1634 01:17:36,300 --> 01:17:39,633 >> Publiek: Kunnen we gewoon gebruik maken van de functie theta in plaats van de functie, textStatus, jqHXR. 1635 01:17:39,633 --> 01:17:43,464 1636 01:17:43,464 --> 01:17:44,380 HANNAH BLUMBERG: Zeker. 1637 01:17:44,380 --> 01:17:46,713 Dus ja, ik denk dat in de PSET, we net zagen functie data. 1638 01:17:46,713 --> 01:17:48,700 Dus het is the-- gewoon ja, OK. 1639 01:17:48,700 --> 01:17:50,510 Dat is wat we zagen in de PSET. 1640 01:17:50,510 --> 01:17:51,480 Dat is helemaal prima. 1641 01:17:51,480 --> 01:17:54,210 >> Dit zijn slechts als je wilde te trekken uit meer informatie 1642 01:17:54,210 --> 01:17:57,190 dit zijn de dingen die je zou kunnen krijgen van .getJSON. 1643 01:17:57,190 --> 01:17:59,040 Goede vraag. 1644 01:17:59,040 --> 01:17:59,706 Nog iets? 1645 01:17:59,706 --> 01:18:00,206 Ja. 1646 01:18:00,206 --> 01:18:01,787 >> Publiek: Dus .getJSON is Ajax? 1647 01:18:01,787 --> 01:18:02,620 HANNAH BLUMBERG: OK. 1648 01:18:02,620 --> 01:18:05,700 Dus dit is het soort lastige deel. 1649 01:18:05,700 --> 01:18:12,390 Het is een jQuery functie die het mogelijk maakt u asynchrone oproepen te doen. 1650 01:18:12,390 --> 01:18:16,080 En die asynchrone gesprekken, dat is wat we hebben te verwijzen naar als Ajax. 1651 01:18:16,080 --> 01:18:16,850 Ja. 1652 01:18:16,850 --> 01:18:20,185 Dat kostte me een heel lange tijd uit elkaar te trekken toen ik een student. 1653 01:18:20,185 --> 01:18:21,560 Publiek: Kun je zeggen dat weer? 1654 01:18:21,560 --> 01:18:22,476 HANNAH BLUMBERG: Ja. 1655 01:18:22,476 --> 01:18:23,630 Kan ik dat nog eens zeggen? 1656 01:18:23,630 --> 01:18:29,010 Deze .getJSON functie, Het is een jQuery functie. 1657 01:18:29,010 --> 01:18:31,970 En het gaat om een asynchrone oproep. 1658 01:18:31,970 --> 01:18:35,700 En deze asynchrone oproepen, we hebben werd verwezen naar die zoals Ajax. 1659 01:18:35,700 --> 01:18:39,610 1660 01:18:39,610 --> 01:18:41,872 >> Een andere vragen? 1661 01:18:41,872 --> 01:18:43,330 We hebben maar een paar minuten over. 1662 01:18:43,330 --> 01:18:45,080 En Maria gaat naar wrap up met beveiliging 1663 01:18:45,080 --> 01:18:47,464 en dan gaan we zowat worden gedaan. 1664 01:18:47,464 --> 01:18:48,630 MARIA ZLATKOVA: Awesome, OK. 1665 01:18:48,630 --> 01:18:54,030 Dus dit is-- gewoon een paar seconden om te kijken over dit. 1666 01:18:54,030 --> 01:18:56,750 En dit is niet iets wat echt geweldig. 1667 01:18:56,750 --> 01:18:59,430 En kan iemand mij vertellen waarom? 1668 01:18:59,430 --> 01:19:05,650 Wat er gaande is in foo en moge kon mogelijk resulteren in iets slecht, 1669 01:19:05,650 --> 01:19:06,770 en wat dat heet? 1670 01:19:06,770 --> 01:19:07,270 Ja. 1671 01:19:07,270 --> 01:19:10,391 Publiek: Als het argument dat doorgegeven meer dan 12 tekens, 1672 01:19:10,391 --> 01:19:11,454 het kan overstromen. 1673 01:19:11,454 --> 01:19:12,370 MARIA ZLATKOVA: Recht. 1674 01:19:12,370 --> 01:19:14,180 Perfect. 1675 01:19:14,180 --> 01:19:15,384 Hoe heet het? 1676 01:19:15,384 --> 01:19:16,300 U noemde het gewoon. 1677 01:19:16,300 --> 01:19:16,840 >> Publiek: Buffer overflow. 1678 01:19:16,840 --> 01:19:18,381 >> MARIA ZLATKOVA: Yup, buffer overflow. 1679 01:19:18,381 --> 01:19:21,230 Dus dit is iets dat we verwijzen als buffer overflow. 1680 01:19:21,230 --> 01:19:25,500 En we zien dat de binnenkant van foo, we hebben onze buffer, c gedefinieerd, 1681 01:19:25,500 --> 01:19:27,240 met een grootte van 12. 1682 01:19:27,240 --> 01:19:32,680 Echter, in de belangrijkste, we doen niet Controleer op welke manier bij allen 1683 01:19:32,680 --> 01:19:36,480 of de argv1-- zodat was het tweede argument. 1684 01:19:36,480 --> 01:19:39,630 Wij controleren niet of de grootte ervan geschikt. 1685 01:19:39,630 --> 01:19:43,380 >> Dus als we hadden een vooral kwaadwillende gebruiker 1686 01:19:43,380 --> 01:19:47,170 die in sommige argument dat was gezet langer dan 12, en eventueel 1687 01:19:47,170 --> 01:19:50,850 buiten de grenzen van die argument, had een aantal uitvoerbare code 1688 01:19:50,850 --> 01:19:55,570 dat hij probeerde om iets te doen slecht ermee; dan is dit, wat er zou gebeuren, 1689 01:19:55,570 --> 01:19:59,310 zou de terugkeer overschrijven adres van de foo-functie, 1690 01:19:59,310 --> 01:20:04,370 waardoor de functie bij terug te keren naar die code uit te voeren. 1691 01:20:04,370 --> 01:20:07,540 En dan slechte dingen kunnen gebeuren. 1692 01:20:07,540 --> 01:20:09,850 Betekent dit zinvol voor iedereen? 1693 01:20:09,850 --> 01:20:12,424 >> En hoe kunnen we tegen dit? 1694 01:20:12,424 --> 01:20:13,090 Suggesties? 1695 01:20:13,090 --> 01:20:16,480 1696 01:20:16,480 --> 01:20:21,890 Kortom, binnenin potentieel foo, hoe 1697 01:20:21,890 --> 01:20:28,294 kunnen we controleren om ervoor te zorgen dat dat niet kan gebeuren? 1698 01:20:28,294 --> 01:20:33,879 >> Publiek: Als de grootte 12 wordt overschreden, zou je extra geheugen toe te wijzen? 1699 01:20:33,879 --> 01:20:37,170 MARIA ZLATKOVA: Suggestie is, wijzen extra geheugen van de grootte overschreden. 1700 01:20:37,170 --> 01:20:39,800 Eigenlijk, kunnen we iets doen een veel eenvoudiger dan dat ook. 1701 01:20:39,800 --> 01:20:44,870 We kunnen gewoon de lengte van de string van het argument dat wordt ingevoerd, 1702 01:20:44,870 --> 01:20:48,590 controleren of die minder hoogste 12-- 1703 01:20:48,590 --> 01:20:50,790 dat is wat we willen te zijn, omdat we niet willen 1704 01:20:50,790 --> 01:20:52,373 aan de grenzen van onze buffer overschrijden. 1705 01:20:52,373 --> 01:20:55,690 En als dat niet het geval, we kan werken met het argument. 1706 01:20:55,690 --> 01:21:00,296 En als dat zo is, we eigenlijk willen potentieel Yello op gebruikersniveau. 1707 01:21:00,296 --> 01:21:01,670 Maar dit is hoe we dat zouden doen. 1708 01:21:01,670 --> 01:21:02,443 Ja. 1709 01:21:02,443 --> 01:21:04,360 >> Publiek: Kunt u uitleggen memcpy echt snel? 1710 01:21:04,360 --> 01:21:05,443 MARIA ZLATKOVA: Oh, sorry. 1711 01:21:05,443 --> 01:21:06,040 Ja. 1712 01:21:06,040 --> 01:21:11,290 Memcpy neemt wat is-- sorry, OK. 1713 01:21:11,290 --> 01:21:15,850 Memcpy neemt wat is in de bar, wat ook wordt doorgegeven 1714 01:21:15,850 --> 01:21:18,050 foo op de command line argument. 1715 01:21:18,050 --> 01:21:19,440 Dus het gaat om argv1 nemen. 1716 01:21:19,440 --> 01:21:21,420 Argv1 bar wordt hier genoemd. 1717 01:21:21,420 --> 01:21:24,453 Dus het gaat om de bar te nemen en het gaat om het te kopiëren naar c. 1718 01:21:24,453 --> 01:21:25,402 >> Publiek: OK. 1719 01:21:25,402 --> 01:21:28,360 MARIA ZLATKOVA: En het gaat om copy-- het derde argument verwijst net 1720 01:21:28,360 --> 01:21:30,601 om hoeveel het gaat om kopiëren naar c. 1721 01:21:30,601 --> 01:21:31,142 Publiek: Ah. 1722 01:21:31,142 --> 01:21:33,030 Dus deze is het kopiëren al het dan. 1723 01:21:33,030 --> 01:21:34,310 >> MARIA ZLATKOVA: Ja, dat het kopiëren alles. 1724 01:21:34,310 --> 01:21:34,810 Yep. 1725 01:21:34,810 --> 01:21:38,400 1726 01:21:38,400 --> 01:21:41,910 Ten eerste, zorgen we ervoor dat de bar is niet null is omdat het een pointer. 1727 01:21:41,910 --> 01:21:44,680 Dan krijgen we de string lengte van de bar. 1728 01:21:44,680 --> 01:21:47,530 Wij zorgen ervoor dat het minder dan of gelijk aan 12. 1729 01:21:47,530 --> 01:21:50,070 En dan, omdat we hebben zorgde ervoor dat, kunnen we eigenlijk 1730 01:21:50,070 --> 01:21:53,122 memcpy en zorg ervoor dat dat OK. 1731 01:21:53,122 --> 01:21:53,705 Nog vragen? 1732 01:21:53,705 --> 01:21:56,280 1733 01:21:56,280 --> 01:21:58,690 Grote. 1734 01:21:58,690 --> 01:22:00,400 Ik heb twee waar of onwaar vragen. 1735 01:22:00,400 --> 01:22:05,470 Kan iemand mij vertellen meteen als deze waar of onwaar? 1736 01:22:05,470 --> 01:22:07,460 Ja, het is vals. 1737 01:22:07,460 --> 01:22:07,960 Precies. 1738 01:22:07,960 --> 01:22:09,330 Beiden zijn vals. 1739 01:22:09,330 --> 01:22:12,682 Dus met een enkel wachtwoord is nooit echt een goed idee 1740 01:22:12,682 --> 01:22:14,890 want als iemand weet je wachtwoord, kunnen ze gewoon 1741 01:22:14,890 --> 01:22:16,260 toegang tot al uw andere accounts. 1742 01:22:16,260 --> 01:22:19,260 En dan iconen niets doen om de veiligheid te garanderen. 1743 01:22:19,260 --> 01:22:24,900 We moeten kijken meestal naar HTTPS in plaats van HTTP en de URL. 1744 01:22:24,900 --> 01:22:28,560 >> En een aantal andere soorten aanvallen die we hebben gezegd, 1745 01:22:28,560 --> 01:22:31,390 dat David in heeft genoemd lezing, SQL injectie aanvallen. 1746 01:22:31,390 --> 01:22:37,310 We hebben al gezien dat als we de don't-- CS50-query-functie zorgt ervoor dat SQL 1747 01:22:37,310 --> 01:22:39,530 injectie aanvallen kunnen optreden. 1748 01:22:39,530 --> 01:22:42,640 Maar als we niet met behulp van CS50, citaat, unquote "in vraag," 1749 01:22:42,640 --> 01:22:46,830 we zouden moeten ervoor zorgen dat de input van de gebruiker is niet eigenlijk een aantal SQL 1750 01:22:46,830 --> 01:22:49,670 query die alle zullen leiden onze tafels te laten vallen 1751 01:22:49,670 --> 01:22:54,070 of iets ergs aan gebeuren met onze database. 1752 01:22:54,070 --> 01:22:56,790 >> Session hijacking is een ander type aanval 1753 01:22:56,790 --> 01:23:05,940 dat gebeurt bij sommige slecht persoon gebruikt sessie enkele slachtoffer 1754 01:23:05,940 --> 01:23:08,740 ID voor toegang tot de aanmeldingsgegevens. 1755 01:23:08,740 --> 01:23:13,620 Dus een heel triviaal voorbeeld daarvan is alsof we een openbare computer, 1756 01:23:13,620 --> 01:23:21,120 dan is het slecht persoon logt in en dan ze hebben cookies die worden opgeslagen. 1757 01:23:21,120 --> 01:23:23,380 En koekjes veranderen niet voor de sessie. 1758 01:23:23,380 --> 01:23:27,620 >> Dan hebben we het slachtoffer gaan en dan inloggen op de website. 1759 01:23:27,620 --> 01:23:30,290 De cookies niet veranderen voor een bepaalde sessie. 1760 01:23:30,290 --> 01:23:33,060 En dan het slachtoffer logt in de website en dan laat. 1761 01:23:33,060 --> 01:23:36,190 En dan is de persoon die teruggaat kan dan nog steeds gebruik maken van hun sessie-ID 1762 01:23:36,190 --> 01:23:37,430 om hun informatie. 1763 01:23:37,430 --> 01:23:40,050 Dus dat is een voorbeeld van hoe dat kon gebeuren. 1764 01:23:40,050 --> 01:23:45,570 >> En dan zou ik niet te veel zorgen over specifieke code of iets 1765 01:23:45,570 --> 01:23:49,270 zo dat dit kan veroorzaken maar met een soort van idee wat 1766 01:23:49,270 --> 01:23:51,400 variabelen betrokken bij dit zijn. 1767 01:23:51,400 --> 01:23:53,897 En dan het manipuleren header data is een ander type aanval 1768 01:23:53,897 --> 01:23:55,230 dat heeft David heeft gesproken over. 1769 01:23:55,230 --> 01:23:59,730 En het enkel verwezen naar wat er kan gebeuren wanneer 1770 01:23:59,730 --> 01:24:04,300 de reactie, de HTTP reactie binnen van onze header 1771 01:24:04,300 --> 01:24:05,720 is niet goed opgeschoond. 1772 01:24:05,720 --> 01:24:14,340 >> En een van de fields-- bijvoorbeeld als iemand overschrijft een van de header 1773 01:24:14,340 --> 01:24:18,860 waarden iets meer dan bevat wat ze moeten contain-- en eigenlijk 1774 01:24:18,860 --> 01:24:22,720 bevatten, bijvoorbeeld een 200 OK-status code, dan zijn ze 1775 01:24:22,720 --> 01:24:26,890 kan mogelijk schadelijke doen dingen als ze niet verondersteld. 1776 01:24:26,890 --> 01:24:30,815 Maar ik zou niet te maken veel over de specifieke code 1777 01:24:30,815 --> 01:24:34,110 dat dit kan veroorzaken gewoon soort van begrip 1778 01:24:34,110 --> 01:24:37,290 hoog niveau dat soort dingen. 1779 01:24:37,290 --> 01:24:39,570 >> Ik denk dat dit alles dat we moeten dekken. 1780 01:24:39,570 --> 01:24:40,090 Geweldig. 1781 01:24:40,090 --> 01:24:43,310 Iedereen die vragen heeft over elke van de dingen die we gedekt? 1782 01:24:43,310 --> 01:24:44,213 Ja. 1783 01:24:44,213 --> 01:24:48,077 >> Publiek: Dus een soort van meer logistieke vraag. 1784 01:24:48,077 --> 01:24:53,400 Wordt de inhoud vooral gericht over dingen na quiz 1? 1785 01:24:53,400 --> 01:24:55,730 >> MARIA ZLATKOVA: So vraag is, is de inhoud 1786 01:24:55,730 --> 01:24:59,720 vooral gericht op de dingen na quiz 1? 1787 01:24:59,720 --> 01:25:06,070 Zodat de focus op na quiz 1, uitgezonderd 1788 01:25:06,070 --> 01:25:10,914 die we nodig hebben om zich te concentreren op de dingen in pset5 en een groot deel van de datastructuren 1789 01:25:10,914 --> 01:25:11,580 we bedekt. 1790 01:25:11,580 --> 01:25:14,300 En we kunnen niet zeggen dat we kan alles negeren voordat 1791 01:25:14,300 --> 01:25:17,120 omdat het bouwt daarop ook. 1792 01:25:17,120 --> 01:25:21,845 >> Dus richten op dat, plus pset5 materiaal net zoals gelinkte lijsten, stapels, 1793 01:25:21,845 --> 01:25:23,720 wachtrijen, en alles dat Hannah ging. 1794 01:25:23,720 --> 01:25:24,050 >> HANNAH BLUMBERG: Recht. 1795 01:25:24,050 --> 01:25:27,450 Ja, gingen we over alle C spullen bij het begin zeer snel. 1796 01:25:27,450 --> 01:25:29,090 Maar zorg ervoor dat dat aan. 1797 01:25:29,090 --> 01:25:32,700 Ga terug en kijk naar de quiz 0 beoordeling. 1798 01:25:32,700 --> 01:25:36,110 >> Een paar logistieke notities, net terwijl we uw aandacht. 1799 01:25:36,110 --> 01:25:39,100 We gaan kantooruren zowel op maandag en dinsdagavond. 1800 01:25:39,100 --> 01:25:41,540 Ze gaan in MD 119. 1801 01:25:41,540 --> 01:25:44,220 Dit is allemaal op de website, zodat als je het niet horen, geen zorgen. 1802 01:25:44,220 --> 01:25:45,266 >> MARIA ZLATKOVA: 8:30 tot 11:00 uur. 1803 01:25:45,266 --> 01:25:46,260 >> HANNAH BLUMBERG: Ja, 8:30-11:00. 1804 01:25:46,260 --> 01:25:46,910 We zullen er zijn. 1805 01:25:46,910 --> 01:25:48,368 We zullen er zijn om vragen te beantwoorden. 1806 01:25:48,368 --> 01:25:49,480 Het is vrij chill en leuk. 1807 01:25:49,480 --> 01:25:53,240 Jullie kunnen vragen stellen dat u op quiz 1. 1808 01:25:53,240 --> 01:25:55,740 En quiz 1 is op Woensdag, zo goed geluk. 1809 01:25:55,740 --> 01:25:59,770 Als u vragen heeft, misschien komen praten ons hier één-op-één. 1810 01:25:59,770 --> 01:26:00,880 Koel. 1811 01:26:00,880 --> 01:26:01,630 Dank je wel. 1812 01:26:01,630 --> 01:26:02,880 >> MARIA ZLATKOVA: Bedankt, jongens. 1813 01:26:02,880 --> 01:26:03,480 >> Publiek: Yay. 1814 01:26:03,480 --> 01:26:05,930 >> [APPLAUS] 1815 01:26:05,930 --> 01:26:07,530