1 00:00:00,000 --> 00:00:08,070 2 00:00:08,070 --> 00:00:10,430 >> R.J. AQUINO: Laten we gewoon aan de slag. 3 00:00:10,430 --> 00:00:12,310 Dus dit is Quiz 1. 4 00:00:12,310 --> 00:00:14,890 Hier is een aantal high-level informatie. 5 00:00:14,890 --> 00:00:19,915 De Over-pagina voor de quiz is op dit URL niet meer CS50.net, maar dat 6 00:00:19,915 --> 00:00:21,080 werkt nog steeds. 7 00:00:21,080 --> 00:00:26,920 Het is CS50.harvard.edu/quizzes/2013/1. 8 00:00:26,920 --> 00:00:31,070 Het is de grote Over pagina, u vertellen waar en wanneer, namelijk aanstaande woensdag 9 00:00:31,070 --> 00:00:32,100 in een heleboel kamers. 10 00:00:32,100 --> 00:00:36,120 En volgende week woensdag, ik : twee dagen vanaf nu. 11 00:00:36,120 --> 00:00:37,890 Al deze informatie is er. 12 00:00:37,890 --> 00:00:39,110 Maar het is cumulatief. 13 00:00:39,110 --> 00:00:43,790 >> Dus alles uit de eerste helft van de jaar is mogelijk op de quiz, 14 00:00:43,790 --> 00:00:50,780 want je kunt niet echt geavanceerde doen dingen in C zonder als de omstandigheden en 15 00:00:50,780 --> 00:00:51,920 voor loops en dergelijke. 16 00:00:51,920 --> 00:00:55,580 Maar er zal een nadruk op de te materiaal dat sinds Quiz 0, 17 00:00:55,580 --> 00:00:59,570 te beginnen met structs en File I / O. Het is meestal meer 18 00:00:59,570 --> 00:01:01,620 uitdagender dan Quiz 0. 19 00:01:01,620 --> 00:01:03,870 De gemiddelde score is meestal lager. 20 00:01:03,870 --> 00:01:05,980 Hard studeren. 21 00:01:05,980 --> 00:01:09,340 >> Terwijl je studeert, moet u gebruiken CS50/discuss om uw vragen te posten 22 00:01:09,340 --> 00:01:10,830 en lees de vragen van andere mensen. 23 00:01:10,830 --> 00:01:13,550 Dus als je geen vragen hebt, log in en lees 24 00:01:13,550 --> 00:01:14,580 vragen je vrienden '. 25 00:01:14,580 --> 00:01:16,560 Ze zijn waarschijnlijk goede vragen. 26 00:01:16,560 --> 00:01:17,730 En neem de praktijk quizzen. 27 00:01:17,730 --> 00:01:20,750 We zijn het geven van quizzen voor nu zeven of acht jaar. 28 00:01:20,750 --> 00:01:22,180 Ze zijn allemaal online. 29 00:01:22,180 --> 00:01:25,540 Verdere problemen zijn vergelijkbaar om oude vragen. 30 00:01:25,540 --> 00:01:26,550 Dat is hoe we ze maken. 31 00:01:26,550 --> 00:01:27,740 >> De quiz bestaat nog niet. 32 00:01:27,740 --> 00:01:28,670 Niemand van ons hebben het gezien. 33 00:01:28,670 --> 00:01:32,496 Maar het eruit zal zien vorige quizzen. 34 00:01:32,496 --> 00:01:36,500 Voor deze beoordeling sessie, is dit niet een uitputtende lijst van onderwerpen. 35 00:01:36,500 --> 00:01:40,740 Je kunt niet zomaar deze bijwonen en daarna zijn perfect klaar voor de quiz. 36 00:01:40,740 --> 00:01:43,330 Anders zou het niet dat veel van een quiz. 37 00:01:43,330 --> 00:01:46,270 En dit is niet noodzakelijkerwijs alles wat u moet weten over een 38 00:01:46,270 --> 00:01:46,970 bepaald onderwerp. 39 00:01:46,970 --> 00:01:50,520 Het is bedoeld om je bloot te stellen aan de dingen we hebben afgedekt, u eraan herinneren wat we 40 00:01:50,520 --> 00:01:53,070 bedekt, en de wijze die wij bedekt. 41 00:01:53,070 --> 00:01:57,030 Maar je moet verder gaan en dieper wanneer je studeert aan double-check 42 00:01:57,030 --> 00:02:00,230 dat je alles weet over een bepaald onderwerp en dat je hebt ingevuld 43 00:02:00,230 --> 00:02:03,320 alle hoeken die waren bedekt met lezing. 44 00:02:03,320 --> 00:02:07,980 >> De quiz notities vertellen dat je naar de schrijver notities, horloge lezing video's. 45 00:02:07,980 --> 00:02:10,155 Dat is een goede manier om ervoor te zorgen dat je hebt bedekt al uw basissen. 46 00:02:10,155 --> 00:02:12,670 47 00:02:12,670 --> 00:02:17,340 Dus aan de slag, toen ik deze dia's, heb ik geprobeerd om te zetten waar ik vond 48 00:02:17,340 --> 00:02:18,350 gegevens. 49 00:02:18,350 --> 00:02:22,890 Dus voor File I / O, bijvoorbeeld, Week 7, Maandag's lezing, en de gedetacheerde 50 00:02:22,890 --> 00:02:27,960 Sectie 6 en Probleemverzameling hebben allemaal informatie over File I / O. Ik heb gedaan 51 00:02:27,960 --> 00:02:28,840 dit voor elk onderwerp. 52 00:02:28,840 --> 00:02:33,010 Dus die titel dia's kunnen nuttig zijn voor jou. 53 00:02:33,010 --> 00:02:38,950 >> Dus hier hebben we File I / O. Vergeet niet, in Probleem Set 5, gebruikten we fopen, fclose, 54 00:02:38,950 --> 00:02:41,210 fwrite, fread en fseek. 55 00:02:41,210 --> 00:02:48,090 Na hersteld 30 ish JPEG's en hebben aangepast en geknoeid met 56 00:02:48,090 --> 00:02:50,320 bitmaps, moet je redelijk bekend zijn met deze functies 57 00:02:50,320 --> 00:02:51,830 en hoe ze werken. 58 00:02:51,830 --> 00:02:54,420 Als u niet meer vertrouwd, zeker deze te herzien. 59 00:02:54,420 --> 00:02:56,860 En zorg ervoor dat je begrijpt wat de verschillende argumenten zijn, 60 00:02:56,860 --> 00:02:58,260 wanneer ze worden gebruikt. 61 00:02:58,260 --> 00:03:03,620 >> Maar de gemeenschappelijke-bestand gerelateerde bugs kan u gevraagd worden over - 62 00:03:03,620 --> 00:03:07,270 Nou, als je bent vergeten om te controleren of fopen werkte eigenlijk voordat je naar 63 00:03:07,270 --> 00:03:08,350 Een bestand wijzigen. 64 00:03:08,350 --> 00:03:09,760 Dat kan slecht. 65 00:03:09,760 --> 00:03:13,560 Als u bent vergeten om een ​​bestand FSluit dat u fopened, die vergelijkbaar is met 66 00:03:13,560 --> 00:03:14,400 een geheugenlek. 67 00:03:14,400 --> 00:03:15,980 Dat is vrij slecht. 68 00:03:15,980 --> 00:03:18,670 En vergeten om te controleren of je hebt aan het einde van het bestand voordat je 69 00:03:18,670 --> 00:03:19,790 beginnen met het schrijven aan. 70 00:03:19,790 --> 00:03:22,320 >> Dus als je zegt: he, ik ben bij het einde van het bestand. 71 00:03:22,320 --> 00:03:23,750 Geef me 5 meer bytes. 72 00:03:23,750 --> 00:03:27,370 Nou, dat is waarschijnlijk niet gaat werken zoals u verwacht. 73 00:03:27,370 --> 00:03:30,930 Dat is echt het voor File I / O, omdat we zo veel van het 74 00:03:30,930 --> 00:03:32,300 het probleem vastgesteld. 75 00:03:32,300 --> 00:03:36,000 Dus als je begreep wat er gaande was in Probleemverzameling 5, herinner me de bitmats 76 00:03:36,000 --> 00:03:40,090 en JPEG's, dan ben je waarschijnlijk al ingesteld voor File I / O. Als dat een beetje 77 00:03:40,090 --> 00:03:44,770 fuzzy, zeker dat probleem beoordelen ingesteld en de bijbehorende materiaal. 78 00:03:44,770 --> 00:03:51,110 >> Structs waren het onderwerp dat op de waren lijn tussen 0 en Quiz Quiz 1. 79 00:03:51,110 --> 00:03:53,090 Niet helemaal de cut voor Quiz 0. 80 00:03:53,090 --> 00:03:57,040 Dus ze zullen zeker op zijn Quiz 1, Week 7, maandag. 81 00:03:57,040 --> 00:03:58,150 Wat is een structuur? 82 00:03:58,150 --> 00:04:00,250 Hier laten we een structuur. 83 00:04:00,250 --> 00:04:03,140 Het is als een nieuw type. 84 00:04:03,140 --> 00:04:07,940 Het is als een container voor meerdere velden. 85 00:04:07,940 --> 00:04:12,970 >> In dit geval hebben we een structuur verklaard student die twee velden heeft - 86 00:04:12,970 --> 00:04:17,750 een tekenreeks die we bellen naam en een int die we bellen leeftijd. 87 00:04:17,750 --> 00:04:21,450 Dus toen ik pas rond studenten of ik studenten te wijzigen, zal ik in staat zijn om 88 00:04:21,450 --> 00:04:24,430 toegang tot hun naam en hun leeftijd. 89 00:04:24,430 --> 00:04:26,670 Laten we eens kijken naar enkele code voor. 90 00:04:26,670 --> 00:04:29,090 Hier zien we dat ik heb verklaard een student s, net als 91 00:04:29,090 --> 00:04:30,300 Ik verklaar een variabele - 92 00:04:30,300 --> 00:04:32,430 int x, int y, et cetera. 93 00:04:32,430 --> 00:04:34,180 >> Hier is student s. 94 00:04:34,180 --> 00:04:37,370 Hij begint met niets in zijn velden. 95 00:04:37,370 --> 00:04:38,240 Dus laten we stellen hen. 96 00:04:38,240 --> 00:04:40,681 U stelt velden van een struct met stip. 97 00:04:40,681 --> 00:04:43,780 Dus heb ik hier gezegd dat s.name = RJ. 98 00:04:43,780 --> 00:04:46,470 En s.age = 21. 99 00:04:46,470 --> 00:04:48,500 U kunt ook velden updaten Op dezelfde manier zou je updaten 100 00:04:48,500 --> 00:04:49,550 de waarde van een variabele. 101 00:04:49,550 --> 00:04:53,270 Dus ik wil mijn naam van RJ veranderen geen perioden R.J. spelt de 102 00:04:53,270 --> 00:04:54,540 correcte manier. 103 00:04:54,540 --> 00:04:58,890 Het zou s.name = RJ, dezelfde zoals we al zeiden het oorspronkelijk. 104 00:04:58,890 --> 00:05:00,030 En dan kunt u ze opent. 105 00:05:00,030 --> 00:05:00,930 >> Dus we hebben ze in te stellen. 106 00:05:00,930 --> 00:05:01,840 We hebben ze bijgewerkt. 107 00:05:01,840 --> 00:05:03,890 U kunt ze ook openen in dezelfde manier. 108 00:05:03,890 --> 00:05:09,330 Dus hier ben ik het afdrukken van R.J. Is 21 jaar oud. 109 00:05:09,330 --> 00:05:14,700 En ik ben het met de toegang die waarden met s.name en s.age. 110 00:05:14,700 --> 00:05:17,040 Dus dat is de toegang structs met de dot-notatie. 111 00:05:17,040 --> 00:05:17,850 Yep, vraag? 112 00:05:17,850 --> 00:05:21,176 >> PUBLIEK: Is er een reden voor de vorige dia die u niet zet 113 00:05:21,176 --> 00:05:24,848 student op de bovenste regel, zoals typedef struct student en vervolgens 114 00:05:24,848 --> 00:05:25,840 student aan het einde? 115 00:05:25,840 --> 00:05:29,040 >> R.J. AQUINO: Dus de vraag was, op deze dia, hebben we meestal gezien 116 00:05:29,040 --> 00:05:32,400 typedef struct knooppunt en vervolgens de velden van de structuur en 117 00:05:32,400 --> 00:05:34,250 dan is het woord node. 118 00:05:34,250 --> 00:05:37,790 En hoe hier te komen heb ik niet gezegd, typedef struct student en vervolgens de 119 00:05:37,790 --> 00:05:39,820 velden van de structuur en dan student? 120 00:05:39,820 --> 00:05:44,310 De reden is dat ik niet hoeft te toegang tot het binnenste van de structuur. 121 00:05:44,310 --> 00:05:46,270 Dus het is OK om het te verlaten zonder een naam. 122 00:05:46,270 --> 00:05:49,210 Ik kan het gewoon laten zoals een anonieme struct. 123 00:05:49,210 --> 00:05:53,130 >> De reden waarom we doen het voor gelinkte lijsten en dingen is want binnen je nodig hebt 124 00:05:53,130 --> 00:05:55,360 te verwijzen naar een struct knooppunten ster. 125 00:05:55,360 --> 00:05:58,220 Dus de structuur moet een naam hebben, dus je kunt het later openen. 126 00:05:58,220 --> 00:05:59,540 Het is een klein detail. 127 00:05:59,540 --> 00:06:04,750 Maar je meestal zien typedef struct accolades als je niet nodig hebt 128 00:06:04,750 --> 00:06:08,720 de naam en typedef struct een naam gevolgd door accolades als je wil 129 00:06:08,720 --> 00:06:09,520 moeten de naam. 130 00:06:09,520 --> 00:06:12,070 Dus dat is een goede vraag. 131 00:06:12,070 --> 00:06:17,000 >> En op dat punt, we de neiging om te wijzigen structs en pas rond structs door 132 00:06:17,000 --> 00:06:18,680 verwijzen, niet naar waarde. 133 00:06:18,680 --> 00:06:21,940 Dus zullen we gewoon pas rond verwijzingen naar structs in plaats van het passeren van rond de 134 00:06:21,940 --> 00:06:23,150 Structs zelf. 135 00:06:23,150 --> 00:06:28,050 Dus je heel vaak gaat worden gebruikt, in dit geval, student * of 136 00:06:28,050 --> 00:06:34,150 struct knoop * of knooppunt * in plaats uit studenten of knooppunten. 137 00:06:34,150 --> 00:06:39,350 Dus hier, ik heb gezegd, OK, de variabele ptr gaat naar het adres van s zijn. 138 00:06:39,350 --> 00:06:45,570 Het gaat om de pointer aan de student R.J. 139 00:06:45,570 --> 00:06:48,965 >> Dus we kunnen krijgen op die gebieden hetzelfde als we iets krijgen. 140 00:06:48,965 --> 00:06:51,460 Eerste, ID verwijzen naar de aanwijzer om de structuur te krijgen. 141 00:06:51,460 --> 00:06:55,530 Dat is * ptr en vervolgens een punt en dan leeftijd. 142 00:06:55,530 --> 00:06:58,790 Dus om toegang te krijgen tot het veld, en ik heb bijgewerkt Nu tot 22, want laten we 143 00:06:58,790 --> 00:07:00,860 zeg, het was mijn verjaardag. 144 00:07:00,860 --> 00:07:03,990 Er is een snelkoppeling syntax gebruik hier de pijl. 145 00:07:03,990 --> 00:07:07,060 Dus ptr pijl leeftijd is maar hetzelfde als * ptr.age. 146 00:07:07,060 --> 00:07:10,150 147 00:07:10,150 --> 00:07:11,550 Nu, dat is iets wat je moet te onthouden en herinneren. 148 00:07:11,550 --> 00:07:15,010 >> U gebruikte het veel in pset6, de speller PSET. 149 00:07:15,010 --> 00:07:18,350 Maar dit is eigenlijk wat er gaande op onder de motorkap. 150 00:07:18,350 --> 00:07:20,500 Het is dereferentie de aanwijzer en vervolgens toegang tot het. 151 00:07:20,500 --> 00:07:21,432 Vraag? 152 00:07:21,432 --> 00:07:22,682 >> PUBLIEK: [onverstaanbaar]. 153 00:07:22,682 --> 00:07:25,860 154 00:07:25,860 --> 00:07:28,060 >> R.J. AQUINO: Waarom gebruiken we pointers als structs in plaats van de 155 00:07:28,060 --> 00:07:29,500 zelf Structs? 156 00:07:29,500 --> 00:07:33,740 De reden zou zijn als je voorbij een structuur om een ​​functie, je waarschijnlijk 157 00:07:33,740 --> 00:07:36,900 willen rond passeren net de 4 of zo bytes dat de aanwijzer vertegenwoordigen als 158 00:07:36,900 --> 00:07:40,375 tegen de potentieel 30 of 40 bytes die de structuur. 159 00:07:40,375 --> 00:07:44,410 Zo iets voorbij een functie gaat makkelijker wanneer de zaak 160 00:07:44,410 --> 00:07:48,230 kleiner kortom. 161 00:07:48,230 --> 00:07:49,074 Vraag? 162 00:07:49,074 --> 00:07:53,026 >> PUBLIEK: Je zou kunnen hebben dit vermeld in het begin, maar er 163 00:07:53,026 --> 00:07:56,000 andere dia's dat op [onverstaanbaar]? 164 00:07:56,000 --> 00:07:58,960 >> R.J. AQUINO: Deze dia's zal zijn na de herziening sessie. 165 00:07:58,960 --> 00:08:00,210 We zullen ze te posten op de website. 166 00:08:00,210 --> 00:08:02,450 167 00:08:02,450 --> 00:08:06,870 Dus bewegen op en bewegen op licht sneller, gaan we praten over data 168 00:08:06,870 --> 00:08:07,350 structuren. 169 00:08:07,350 --> 00:08:08,040 Er zijn een heleboel. 170 00:08:08,040 --> 00:08:10,080 Wij vallen een aantal van hen. 171 00:08:10,080 --> 00:08:12,500 Hier is wat je moet begrijpen over datastructuur. 172 00:08:12,500 --> 00:08:15,590 >> Je moet echt begrijpen op een hoog niveau wat elke structuur. 173 00:08:15,590 --> 00:08:21,190 Kunt u uitleggen in het Engels aan uw vriend die niet heeft CS50 hoe 174 00:08:21,190 --> 00:08:25,580 organiseren wij onze data en waarom we zouden worden met behulp van iets op deze manier? 175 00:08:25,580 --> 00:08:26,990 Dat is wat men. 176 00:08:26,990 --> 00:08:29,650 Ding twee, begrijpen de uitvoering. 177 00:08:29,650 --> 00:08:34,270 Dus begrijpen hoe deze dingen te gebruiken in C. En we gaan over dit. 178 00:08:34,270 --> 00:08:39,030 >> En dan wat drie zouden worden weten de looptijden en de beperkingen van de 179 00:08:39,030 --> 00:08:40,470 verschillende structuren die u gebruikt. 180 00:08:40,470 --> 00:08:44,059 Dus waarom zou je gebruik maken van een hash tabel in plaats van een array. 181 00:08:44,059 --> 00:08:49,570 Begrijpen hoe snel, gemiddeld, het benaderen van een hash-tabel is. 182 00:08:49,570 --> 00:08:54,010 Begrijpen wat bewerkingen zijn snel op gelinkte lijst maar traag op arrays en 183 00:08:54,010 --> 00:08:56,080 vice versa. 184 00:08:56,080 --> 00:08:59,780 Dus om te begrijpen dat, dan moet je begrijpen Big-O notatie gewoon weten 185 00:08:59,780 --> 00:09:01,310 hoe om te praten over deze allerlei dingen. 186 00:09:01,310 --> 00:09:02,700 En we praten over dat. 187 00:09:02,700 --> 00:09:06,040 >> Dus eerst ding, gelinkte lijsten. 188 00:09:06,040 --> 00:09:07,770 Hier is een hoog niveau picture van een gekoppelde lijst. 189 00:09:07,770 --> 00:09:08,830 We tonen dit in de klas. 190 00:09:08,830 --> 00:09:11,670 We hebben meestal 10 personen staan ​​op het podium. 191 00:09:11,670 --> 00:09:16,790 Maar wij hebben een reeks knooppunten waar elke knooppunt heeft enkele waarde en een pointer 192 00:09:16,790 --> 00:09:18,610 zijn volgende waarde. 193 00:09:18,610 --> 00:09:21,730 Dus om van het ene knooppunt naar het volgende, je gewoon zeggen, geef me de volgende knoop. 194 00:09:21,730 --> 00:09:22,530 Je hebt dat knooppunt. 195 00:09:22,530 --> 00:09:23,770 Geef me de volgende knoop. 196 00:09:23,770 --> 00:09:24,400 Je hebt dat knooppunt. 197 00:09:24,400 --> 00:09:28,790 Geef me de volgende knoop en ga zo maar door totdat er geen knooppunt links. 198 00:09:28,790 --> 00:09:31,850 >> Dus blijven om te praten over het op een hoog niveau. 199 00:09:31,850 --> 00:09:34,100 Het is heel gemakkelijk om dingen te voegen in een gelinkte lijst. 200 00:09:34,100 --> 00:09:36,010 Als je niet de zorg over de bestelling, kun je gewoon laten vallen 201 00:09:36,010 --> 00:09:36,840 meteen aan het begin. 202 00:09:36,840 --> 00:09:38,520 Dat is constante tijd. 203 00:09:38,520 --> 00:09:39,900 Maar het is moeilijk om een ​​waarde te vinden. 204 00:09:39,900 --> 00:09:43,060 Als je probeert om te vragen, is zeven in mijn lijst? 205 00:09:43,060 --> 00:09:44,740 Je moet doorlopen elke waarde. 206 00:09:44,740 --> 00:09:45,680 Is dit zeven? 207 00:09:45,680 --> 00:09:46,610 Is dit zeven? 208 00:09:46,610 --> 00:09:47,770 Is dit zeven? 209 00:09:47,770 --> 00:09:48,690 Is dit zeven? 210 00:09:48,690 --> 00:09:49,830 Over en weer. 211 00:09:49,830 --> 00:09:51,520 En dat is O (n). 212 00:09:51,520 --> 00:09:53,800 Dus bij het bestuderen van de quiz, vergelijk dit met arrays. 213 00:09:53,800 --> 00:09:57,010 214 00:09:57,010 --> 00:09:58,220 >> Is dat goed? 215 00:09:58,220 --> 00:09:59,220 De lichten gingen afm. 216 00:09:59,220 --> 00:10:01,110 OK. 217 00:10:01,110 --> 00:10:02,400 Wanneer is een gelinkte lijst beter? 218 00:10:02,400 --> 00:10:04,640 Wanneer is een array beter? 219 00:10:04,640 --> 00:10:06,670 Dus laten we eens kijken naar enkele code. 220 00:10:06,670 --> 00:10:08,960 Hier is een potentieel knooppunt. 221 00:10:08,960 --> 00:10:09,770 Het is een structuur. 222 00:10:09,770 --> 00:10:12,220 Het heeft een int n, die zal onze waarde. 223 00:10:12,220 --> 00:10:17,780 En het heeft een struct knoop * volgende, die onze pointer naar het volgende knooppunt. 224 00:10:17,780 --> 00:10:23,040 Dus hier kunnen we zien dat we er gebeurd een int te hebben gezet in onze knooppunt. 225 00:10:23,040 --> 00:10:27,850 Maar als dit een gelinkte lijst van char sterren of een gelinkte lijst van praalwagens, we 226 00:10:27,850 --> 00:10:28,820 volledig kon dat ook doen. 227 00:10:28,820 --> 00:10:33,110 >> Vergeet niet in pset6, je had waarschijnlijk een gelinkte lijst van char sterren of gewoon 228 00:10:33,110 --> 00:10:34,360 static char arrays. 229 00:10:34,360 --> 00:10:37,370 230 00:10:37,370 --> 00:10:39,040 Laten we eens kijken hier bij een operatie. 231 00:10:39,040 --> 00:10:43,570 Dus we willen een nieuwe in te voegen n in onze gelinkte lijst. 232 00:10:43,570 --> 00:10:48,940 We beginnen met een kop pointer die is een pointer naar dit knooppunt dat is de 233 00:10:48,940 --> 00:10:53,460 waarde van n en een volgend van een pointer die wijst op dit knooppunt is een waarde heeft van 234 00:10:53,460 --> 00:10:57,760 n en een volgende van nul, omdat het is de laatste knoop. 235 00:10:57,760 --> 00:11:00,440 Dus in het belang van de tijd, zal ik zet alle code op het scherm. 236 00:11:00,440 --> 00:11:03,130 En we zullen er doorheen lopen een paar regels tegelijk. 237 00:11:03,130 --> 00:11:05,790 >> Dus hier is de code. 238 00:11:05,790 --> 00:11:07,560 Ik hoop dat het leesbaar. 239 00:11:07,560 --> 00:11:11,275 Het eerste wat we doen is we malloc een nieuw knooppunt. 240 00:11:11,275 --> 00:11:15,105 Dus het is een pointer naar een nieuw knooppunt dat niet helemaal iets ingesteld 241 00:11:15,105 --> 00:11:16,450 in het nog niet. 242 00:11:16,450 --> 00:11:19,580 We controleren om ervoor te zorgen dat het nieuwe knooppunt is niet nul. 243 00:11:19,580 --> 00:11:22,220 Anders, we moeten opgeven. 244 00:11:22,220 --> 00:11:27,680 Dus hij is nagegaan of, nu we de waarden in de knoop. 245 00:11:27,680 --> 00:11:31,520 Dus hebben we de nieuwe n in onze n veld. 246 00:11:31,520 --> 00:11:36,050 En we stellen de volgende pointer te wijzen op de oorspronkelijke kop, zodat we kunnen 247 00:11:36,050 --> 00:11:38,900 Nu hebben deze geplaatst knooppunt aan onze lijst. 248 00:11:38,900 --> 00:11:44,600 >> Tot slot hebben we de wereldwijde hoofd punt onze nieuwe knooppunt, zodat als we 249 00:11:44,600 --> 00:11:50,300 beginnen bij het hoofd, zouden we op dit zijn nieuwe eerste knooppunt in plaats van 250 00:11:50,300 --> 00:11:51,560 de oude eerste knooppunt. 251 00:11:51,560 --> 00:11:55,320 En wanneer deze functie verlaat, de variabele nieuw knooppunt niet meer bestaat, 252 00:11:55,320 --> 00:11:57,130 omdat het lokaal voor de functie. 253 00:11:57,130 --> 00:11:59,770 Dus dit is de toestand van de wereld. 254 00:11:59,770 --> 00:12:03,570 Onze wereldwijde hoofd wijst naar onze nieuwe eerste knooppunt, wat wijst op onze 255 00:12:03,570 --> 00:12:06,346 originele eerste knooppunt, welke punten het knooppunt daarna. 256 00:12:06,346 --> 00:12:09,790 >> Dat was inbrengen. 257 00:12:09,790 --> 00:12:12,150 Ik hoop dat was relatief eenvoudig te volgen. 258 00:12:12,150 --> 00:12:14,300 Bij twijfel, een tekening. 259 00:12:14,300 --> 00:12:17,820 Dus ik vind dat het praten over gelinkte lijsten en kijken naar 260 00:12:17,820 --> 00:12:19,870 code is erg niet nuttig. 261 00:12:19,870 --> 00:12:23,790 Terwijl op zoek naar een foto van een gekoppelde lijst kan ik denken, oh, zo 262 00:12:23,790 --> 00:12:24,970 Ik heb dit knooppunt hier. 263 00:12:24,970 --> 00:12:28,980 Maar als ik dat wijzer te werken, het eindigt verbroken. 264 00:12:28,980 --> 00:12:34,340 En ik ben vergeten waar het knooppunt gaat. 265 00:12:34,340 --> 00:12:35,390 En de code verlaat. 266 00:12:35,390 --> 00:12:37,830 En u hebt meerdere nodes die zijn losgekoppeld. 267 00:12:37,830 --> 00:12:39,970 En je hoeft niet eindigen met de lijst die u wilt. 268 00:12:39,970 --> 00:12:43,320 >> Dus als je de foto te tekenen en doe het stap voor stap, hopelijk zie je 269 00:12:43,320 --> 00:12:46,840 de juiste volgorde der dingen in termen van bijwerken van de pointers om ervoor te zorgen 270 00:12:46,840 --> 00:12:48,830 dat de lijst bij elkaar komt. 271 00:12:48,830 --> 00:12:51,240 Insert is relatief eenvoudig. 272 00:12:51,240 --> 00:12:55,210 Een ingewikkelder zou zijn inbrengen in een gesorteerde lijst. 273 00:12:55,210 --> 00:12:59,980 Een ingewikkelder functie verwijderen en vinden, dus kijken door een lijst te 274 00:12:59,980 --> 00:13:03,030 zien of er iets is er. 275 00:13:03,030 --> 00:13:07,220 Misschien heb je dit deed in pset6 wanneer u ik heb in uw hash table en je zei, 276 00:13:07,220 --> 00:13:10,460 goed, is het woord appel in mijn gelinkte lijst? 277 00:13:10,460 --> 00:13:11,440 >> Dus misschien heb je al gedaan. 278 00:13:11,440 --> 00:13:15,530 Maar zeker, je geheugen opfrissen en probeer te ontdekken herimplementeren en 279 00:13:15,530 --> 00:13:19,150 herimplementeren verwijderen voor een gelinkte lijst. 280 00:13:19,150 --> 00:13:22,850 Leuke kant nota, er ook dubbel-linked lijsten, waar je 281 00:13:22,850 --> 00:13:27,490 aanwijzingen dat zowel vooruit en richt achteruit, zodat je zou kunnen gaan om de 282 00:13:27,490 --> 00:13:29,270 volgende knoop en naar het vorige knooppunt. 283 00:13:29,270 --> 00:13:33,860 En er was een vraag over de vorig jaar quiz van dat type, praten 284 00:13:33,860 --> 00:13:36,190 over dubbel-gelinkte lijsten. 285 00:13:36,190 --> 00:13:40,070 >> Nu, dat is een structuur die je bent relatief vertrouwd met, omdat de meeste 286 00:13:40,070 --> 00:13:42,520 van u waarschijnlijk gebruikt ze op pset6. 287 00:13:42,520 --> 00:13:45,680 Hier is er een die een beetje minder bekend. 288 00:13:45,680 --> 00:13:51,020 Als een kanttekening, ik denk dat Quiz 1 is vooral harder dan Quiz 0, omdat 289 00:13:51,020 --> 00:13:54,600 de dingen die je doet, je niet zoveel gedaan. 290 00:13:54,600 --> 00:13:58,100 Om dat op een andere manier, voor Quiz 0, je had een hoop C. schriftelijke En we 291 00:13:58,100 --> 00:13:58,880 vroeg je over C. 292 00:13:58,880 --> 00:14:02,310 >> Voor Quiz 1, gaan we je vragen over PHP en JavaScript, die u 293 00:14:02,310 --> 00:14:03,490 niet geschreven als veel. 294 00:14:03,490 --> 00:14:07,590 We gaan je vragen over C-code die je hebt niet zo veel van geschreven, 295 00:14:07,590 --> 00:14:09,130 deze geavanceerde C spul. 296 00:14:09,130 --> 00:14:11,520 Dus zeker, de praktijk van de spullen die we gesproken over in lezing die u 297 00:14:11,520 --> 00:14:15,260 niet per se te doen het probleem stellen. 298 00:14:15,260 --> 00:14:17,870 >> Spreken van die, heb je niet geschreven een stapel op een probleem stellen. 299 00:14:17,870 --> 00:14:19,610 Maar het was in collegezaal. 300 00:14:19,610 --> 00:14:22,530 Hier is de high-level beeld van opperen dat we elk jaar laten zien. 301 00:14:22,530 --> 00:14:26,180 Het is de stapel trays de Mather eetzaal. 302 00:14:26,180 --> 00:14:30,570 Op een hoog niveau, stapels zijn een last in, first out datastructuur. 303 00:14:30,570 --> 00:14:32,040 Dat betekent dat je gaat om dingen in te zetten - 304 00:14:32,040 --> 00:14:36,400 1, 3, 7, 12, 14, 0 negatief. 305 00:14:36,400 --> 00:14:39,180 Het enige wat ik kon niet zei - negatief 3, 0. 306 00:14:39,180 --> 00:14:40,250 Je zet al deze dingen in 307 00:14:40,250 --> 00:14:42,940 En het laatste wat gebruikt is in de eerste een die gaat naar buiten te komen. 308 00:14:42,940 --> 00:14:44,170 >> Dus heb je twee operaties - 309 00:14:44,170 --> 00:14:45,260 push en pop. 310 00:14:45,260 --> 00:14:49,180 Alle van de invoering van dat ik was gebaren als deze zijn push. 311 00:14:49,180 --> 00:14:52,020 En toen ik bereiken in te grijpen iets of bereiken op de top te grijpen 312 00:14:52,020 --> 00:14:53,940 iets, dat is pop. 313 00:14:53,940 --> 00:14:55,540 Dus we gaan naar stapels implementeren. 314 00:14:55,540 --> 00:14:57,870 En we ze toonden in collegezaal met arrays. 315 00:14:57,870 --> 00:14:59,550 Maar je kon ze doen met behulp van gelinkte lijsten. 316 00:14:59,550 --> 00:15:01,770 Een stapel is een conceptueel data structuur, niet als een 317 00:15:01,770 --> 00:15:03,760 implementatie-specifieke. 318 00:15:03,760 --> 00:15:06,420 >> Dus wat zou dat eruit zien? 319 00:15:06,420 --> 00:15:07,970 Het eruit zou zien dit net zoiets als. 320 00:15:07,970 --> 00:15:10,840 Je zou een integer grootte. 321 00:15:10,840 --> 00:15:16,000 En je zou een array van waarden die bellen we bakken, want dat is 322 00:15:16,000 --> 00:15:18,570 wat de foto is voor ons - int trays - 323 00:15:18,570 --> 00:15:21,740 en vervolgens een aantal maximale capaciteit. 324 00:15:21,740 --> 00:15:27,100 Dus wat zou eruit duwen? 325 00:15:27,100 --> 00:15:33,250 Nou, als we een stapel s, vervolgens te duwen iets op s, zouden we 326 00:15:33,250 --> 00:15:34,620 de grootte van s. 327 00:15:34,620 --> 00:15:42,270 En dat zou de volgende kunnen zijn open plek van ons aanbod. 328 00:15:42,270 --> 00:15:50,510 Dus als we drie dingen in onze stack, dan trays 3 zou de volgende kunnen zijn 329 00:15:50,510 --> 00:15:54,290 open plek, omdat 0, 1, en 2 zijn al opgevuld. 330 00:15:54,290 --> 00:16:01,790 >> Dus hebben we de waarde in s.trays [s.size], de derde plek. 331 00:16:01,790 --> 00:16:06,290 En dan verhogen we s.size te zeggen, hey, hadden we drie dingen voor. 332 00:16:06,290 --> 00:16:07,400 Nu hebben we vier. 333 00:16:07,400 --> 00:16:10,180 Dus de volgende keer dat je duwt, je bent ga iets in 4 zetten. 334 00:16:10,180 --> 00:16:15,560 Of de volgende keer als je pop, je gaat om te kijken naar 3 in plaats van 4 of wat dan ook. 335 00:16:15,560 --> 00:16:18,000 En dan gaan we echt terug zeg, hey, dat is gelukt. 336 00:16:18,000 --> 00:16:19,160 Dit werkte. 337 00:16:19,160 --> 00:16:22,060 Als vuistregel geldt, indien een functie die is verondersteld om waar te keren of 338 00:16:22,060 --> 00:16:26,370 valse geeft altijd waar, je kan iets verkeerd hebben gedaan. 339 00:16:26,370 --> 00:16:28,350 Zo werkt dit? 340 00:16:28,350 --> 00:16:32,400 >> Nou, het werkt prima voor 1, en 2, en 3, en 4, en vijf. 341 00:16:32,400 --> 00:16:34,640 Maar laten we zeggen dat ik mijn capaciteit te bereiken. 342 00:16:34,640 --> 00:16:38,750 Ik heb dan een probleem tegenkomt, want indien formaat is hetzelfde als capaciteit ik 343 00:16:38,750 --> 00:16:43,340 nu proberen om iets in een zetten serie waar ik geen ruimte hebben. 344 00:16:43,340 --> 00:16:46,980 Dus een korte check dit op te lossen. 345 00:16:46,980 --> 00:16:51,630 Als s.size == CAPACITEIT, return false. 346 00:16:51,630 --> 00:16:54,130 Anders gaan en doen wat we deden. 347 00:16:54,130 --> 00:16:55,660 Dus wat kunnen we nog meer vragen over voor stacks? 348 00:16:55,660 --> 00:16:56,460 Wat moet je studeren? 349 00:16:56,460 --> 00:16:57,690 Wat moet je oefenen? 350 00:16:57,690 --> 00:17:01,030 >> Nou, implementeren pop. 351 00:17:01,030 --> 00:17:02,370 We deden al push. 352 00:17:02,370 --> 00:17:04,280 Ik zal dat bevestigen. 353 00:17:04,280 --> 00:17:08,180 Een implementatie niet-array, waarbij u een gekoppelde lijst te gebruiken, misschien. 354 00:17:08,180 --> 00:17:09,390 Een niet-int uitvoering. 355 00:17:09,390 --> 00:17:10,940 We deden hier ints. 356 00:17:10,940 --> 00:17:11,880 Maar het zou drijvers zijn. 357 00:17:11,880 --> 00:17:13,010 Ik kon strings zijn geweest. 358 00:17:13,010 --> 00:17:14,290 Het kon char sterren zijn geweest. 359 00:17:14,290 --> 00:17:17,960 Kijk naar het verleden quizzen voor de soorten vragen die we hebben gesteld over stacks. 360 00:17:17,960 --> 00:17:20,000 >> Ik zal zeggen dat we bedekt stacks rond hetzelfde als we ze hebben behandeld in 361 00:17:20,000 --> 00:17:20,540 de afgelopen jaren. 362 00:17:20,540 --> 00:17:24,400 Dus de quizvragen moet wel een goede indicatie. 363 00:17:24,400 --> 00:17:27,010 Moving forward nog sneller, wachtrijen. 364 00:17:27,010 --> 00:17:28,200 Ze zijn als stacks. 365 00:17:28,200 --> 00:17:29,960 Maar ze zijn first in, first out. 366 00:17:29,960 --> 00:17:33,530 Als je Britse bent, het woord wachtrij Waarschijnlijk maakte veel zin om jou. 367 00:17:33,530 --> 00:17:36,390 Anders kan je gehoord als een lijn. 368 00:17:36,390 --> 00:17:38,120 Ze werken als de lijn bij de Apple Store. 369 00:17:38,120 --> 00:17:40,740 De eerste persoon die opdagen op 03:00 in de ochtend is de eerste 370 00:17:40,740 --> 00:17:42,880 persoon om zijn iPad te kopen. 371 00:17:42,880 --> 00:17:44,260 >> Dus we hebben twee operaties - 372 00:17:44,260 --> 00:17:45,720 enqueue en dequeue. 373 00:17:45,720 --> 00:17:47,560 Enqueue zet iemand in de lijn. 374 00:17:47,560 --> 00:17:50,070 Dequeue trekt de eerste persoon van de lijn. 375 00:17:50,070 --> 00:17:52,640 Nogmaals, we kunnen implementeren dit met een array. 376 00:17:52,640 --> 00:17:54,880 Dus wat is de structuur die we toonde in college? 377 00:17:54,880 --> 00:17:57,660 Het was deze. 378 00:17:57,660 --> 00:17:59,300 Nogmaals, cijfers. 379 00:17:59,300 --> 00:18:02,020 Nogmaals, de grootte en dit nieuwe ding front. 380 00:18:02,020 --> 00:18:04,880 Waarom is er zoiets als de voorkant? 381 00:18:04,880 --> 00:18:07,050 Het is de index van de volgende element dequeue. 382 00:18:07,050 --> 00:18:12,210 Het is alleen intern bijhouden van de eerste man te laten zien, zodat we 383 00:18:12,210 --> 00:18:15,005 kan trekken wanneer we moeten. 384 00:18:15,005 --> 00:18:19,322 >> Zeker kijken naar dictaten en proberen te implementeren enqueue en dequeue 385 00:18:19,322 --> 00:18:21,700 bij het bestuderen van de quiz. 386 00:18:21,700 --> 00:18:23,190 Belangrijke dingen te denken. 387 00:18:23,190 --> 00:18:27,260 Wikkelen rond als de voorkant plus de grootte eindigt groter dan de capaciteit. 388 00:18:27,260 --> 00:18:32,670 Nogmaals, als je structuur is vol, zul je een probleem hebt. 389 00:18:32,670 --> 00:18:34,780 Hash tabellen die u eerder hebt gezien. 390 00:18:34,780 --> 00:18:39,820 De meesten van jullie waarschijnlijk geïmplementeerd deze op pset6. 391 00:18:39,820 --> 00:18:44,210 Het is een structuur die streeft naar O (1) constante tijd inbrengen en O (1) 392 00:18:44,210 --> 00:18:46,430 constante tijd opzoeken. 393 00:18:46,430 --> 00:18:49,760 >> In CS50, implementeerden we dit als een array van gelinkte lijsten. 394 00:18:49,760 --> 00:18:53,690 Het belangrijkste onderdeel van een hash table is de hash-functie. 395 00:18:53,690 --> 00:18:58,350 Dus: het zet je input, laten we zeggen, een woord uit het woordenboek, in een aantal, 396 00:18:58,350 --> 00:18:59,560 die gaat aan onze index zijn. 397 00:18:59,560 --> 00:19:01,410 En we zullen die index te gebruiken in ons aanbod. 398 00:19:01,410 --> 00:19:05,374 Dus hier is een schattig klein beeld van study.50.net. 399 00:19:05,374 --> 00:19:08,060 We gooien alle woorden in onze hash-functie. 400 00:19:08,060 --> 00:19:10,950 En de hash-functie vertelt ons waar deze woorden om te zetten. 401 00:19:10,950 --> 00:19:15,650 >> Dit is allemaal geweldig in het land waar er is maar een woord voor elke sleuf. 402 00:19:15,650 --> 00:19:20,480 Maar als je nog uit pset6, daar zijn meer woorden dan slots. 403 00:19:20,480 --> 00:19:23,080 Dus wat gebeurt er als je krijgen een botsing? 404 00:19:23,080 --> 00:19:26,730 In plaats van het opslaan van een waarde, laten we zeggen, hash tabel 3, u 405 00:19:26,730 --> 00:19:27,990 slaan een gelinkte lijst. 406 00:19:27,990 --> 00:19:32,900 En dus in plaats van het hebben van meloen hier, zou je een gelinkte lijst hebben, 407 00:19:32,900 --> 00:19:34,190 waar het eerste knooppunt is meloen. 408 00:19:34,190 --> 00:19:35,260 En de volgende knooppunt is cat. 409 00:19:35,260 --> 00:19:38,970 En het derde knooppunt botsing, laten we zeggen, want al deze woorden beginnen 410 00:19:38,970 --> 00:19:41,110 met C. 411 00:19:41,110 --> 00:19:42,700 >> Dus de meeste van jullie deed dit voor pset6. 412 00:19:42,700 --> 00:19:45,685 Als je een hash table niet te doen op pset6 en je zoiets geprobeerd 413 00:19:45,685 --> 00:19:47,720 een Trie, zeker herzien hash tables. 414 00:19:47,720 --> 00:19:50,650 Als je deed het op pset6, zeker beoordelen hash tabellen. 415 00:19:50,650 --> 00:19:53,610 En als je het deed op pset6 en het deed niet werken helemaal goed en je 416 00:19:53,610 --> 00:19:56,150 had veel moeite met het, zeker beoordelen hash tabellen. 417 00:19:56,150 --> 00:20:01,610 Dus de les is echt zeker beoordelen hash tabellen. 418 00:20:01,610 --> 00:20:07,130 >> Het overgrote minderheid van je geprobeerd out probeert op pset6. 419 00:20:07,130 --> 00:20:08,570 Hoog niveau beeld. 420 00:20:08,570 --> 00:20:15,150 Het is iets als dit, waarbij elke knooppunt heeft een set van kinderen, waarbij elke 421 00:20:15,150 --> 00:20:17,100 kind komt overeen met een letter. 422 00:20:17,100 --> 00:20:20,520 En elke knoop zegt ook, hey, ik ben een woord. 423 00:20:20,520 --> 00:20:25,933 Dus in dit geval het woord Maxwell, als je de M naar de A naar de 424 00:20:25,933 --> 00:20:28,530 X-W-E-L-L en volg het nog een. 425 00:20:28,530 --> 00:20:32,800 En je krijgt dit symbool, delta, die wij betekenen om bedoel dit is een woord. 426 00:20:32,800 --> 00:20:34,780 Dus Maxwell is een woord. 427 00:20:34,780 --> 00:20:38,430 Deze delta's zijn de hele betekenende die dingen zijn woorden en die 428 00:20:38,430 --> 00:20:40,360 dingen niet. 429 00:20:40,360 --> 00:20:46,400 >> Dus in pset6, de gegevens die we opgeslagen samen met een van onze knooppunten was: "Ik ben een 430 00:20:46,400 --> 00:20:52,630 woord. "En de koele ding over pogingen wordt zij aantonen inbrengen en 431 00:20:52,630 --> 00:20:55,080 opzoeken in O (lengte van een woord). 432 00:20:55,080 --> 00:20:59,450 Dus gewoon om door Maxwell krijgen, is het M-A-X-W-E-L-L. Dus zeven of acht - 433 00:20:59,450 --> 00:21:00,360 Ik kan niet tellen - 434 00:21:00,360 --> 00:21:03,920 stappen naar het einde en check dingen uit. 435 00:21:03,920 --> 00:21:06,800 Dus snelle implementatie hier. 436 00:21:06,800 --> 00:21:10,230 Rob ging door een gekoppelde lijst in zijn post-mortem. 437 00:21:10,230 --> 00:21:11,600 Dus check dat uit. 438 00:21:11,600 --> 00:21:11,720 Sorry. 439 00:21:11,720 --> 00:21:13,240 Ging door een Trie in zijn post-mortem. 440 00:21:13,240 --> 00:21:14,260 Dus check dat uit. 441 00:21:14,260 --> 00:21:24,410 >> Maar je in principe ieder knooppunt 27 verwijzingen naar de volgende knooppunten en een 442 00:21:24,410 --> 00:21:27,050 Boolean voor ben ik een woord. 443 00:21:27,050 --> 00:21:31,530 Check out Rob's postmortem hoe dit ook daadwerkelijk wordt uitgevoerd. 444 00:21:31,530 --> 00:21:34,750 Onze uiteindelijke structuur, onze bomen en binaire zoekbomen. 445 00:21:34,750 --> 00:21:41,530 Dus kijken naar deze, deze waren bedekt meest recent Week 8, maandag. 446 00:21:41,530 --> 00:21:46,960 Een boom is vergelijkbaar met een Trie, behalve jij hoeft niet per se 27 knooppunten op 447 00:21:46,960 --> 00:21:47,500 elk punt. 448 00:21:47,500 --> 00:21:52,820 En je hoeft niet deze gegevens bij elke stap die betekent of de - 449 00:21:52,820 --> 00:21:54,030 het pad is niet van belang. 450 00:21:54,030 --> 00:22:00,870 Overwegende dat een trie, de weg van boven naar bodem, Maxwell, was belangrijk voor ons. 451 00:22:00,870 --> 00:22:05,270 >> Maar ieder knooppunt meerdere kinderen, misschien. 452 00:22:05,270 --> 00:22:07,290 We hebben wat meer woordenschat. 453 00:22:07,290 --> 00:22:09,530 De wortel van de boom is aan de top. 454 00:22:09,530 --> 00:22:12,520 En we zeggen dat het zeer onderste knooppunten die niet hebben 455 00:22:12,520 --> 00:22:14,530 kinderen zijn bladeren. 456 00:22:14,530 --> 00:22:18,040 Dus als een Trie, een boom is een structuur van knopen. 457 00:22:18,040 --> 00:22:21,490 Een veel voorkomend type boom dat we gaan om te praten over een binaire boom, waar 458 00:22:21,490 --> 00:22:26,040 elk knooppunt heeft geen kinderen of een kind of twee kinderen. 459 00:22:26,040 --> 00:22:28,890 Dus deze foto is hier niet een binaire boom, omdat 460 00:22:28,890 --> 00:22:32,890 knooppunt 3 heeft drie kinderen. 461 00:22:32,890 --> 00:22:38,140 >> Maar als we deze, de rest negeren ervan een binaire boom, omdat het 462 00:22:38,140 --> 00:22:43,200 toont de eigenschap dat elk knooppunt nul, een of twee kinderen. 463 00:22:43,200 --> 00:22:46,400 Dus hoe kunnen we drukken dit in de code? 464 00:22:46,400 --> 00:22:51,460 We konden een knooppunt waar elk knooppunt heeft zijn een geheel getal erin, ook 465 00:22:51,460 --> 00:22:55,590 als een verwijzing naar de boom aan de linkerkant en een verwijzing naar de boom op de 466 00:22:55,590 --> 00:22:59,510 rechts, zodat de twee kinderen. 467 00:22:59,510 --> 00:23:00,880 Hoe is dit nuttig? 468 00:23:00,880 --> 00:23:05,740 Nou, als we regels over maken waar we zet nodes, kunnen we zoeken sneller. 469 00:23:05,740 --> 00:23:10,630 >> Dus er is een concept van een binary search boom, waar alle knooppunten in het 470 00:23:10,630 --> 00:23:14,420 links substructuur hebben een kleinere waarde dan het knooppunt waar we naar kijken. 471 00:23:14,420 --> 00:23:17,880 En alle knooppunten op de rechter deelboom een grotere waarde 472 00:23:17,880 --> 00:23:18,660 dan de root node. 473 00:23:18,660 --> 00:23:20,670 Nu, dat lijkt op een heleboel woorden. 474 00:23:20,670 --> 00:23:23,770 Ik ga het de binnenkant van dubbele zetten citaten en tonen u een foto. 475 00:23:23,770 --> 00:23:27,010 Hier is een voorbeeld van een binaire zoekboom. 476 00:23:27,010 --> 00:23:28,770 Zien dat we beginnen met 10. 477 00:23:28,770 --> 00:23:31,780 Alles wat links van 10 is kleiner dan. 478 00:23:31,780 --> 00:23:33,130 En alles naar rechts is groter dan het. 479 00:23:33,130 --> 00:23:37,620 >> Maar meer dan dat elk knooppunt in de boom drukt dit pand. 480 00:23:37,620 --> 00:23:42,110 Dus het knooppunt 7 een 3 bij de links en 9 naar rechts. 481 00:23:42,110 --> 00:23:44,440 Dus al die kleiner zijn dan 10. 482 00:23:44,440 --> 00:23:50,470 Maar kijkend naar alleen die, de 7 heeft 3 links daarvan en 9 tot zijn recht. 483 00:23:50,470 --> 00:23:56,100 En zo ook aan de rechterkant, 15 heeft 14 naar links en 50 rechts ervan. 484 00:23:56,100 --> 00:24:03,770 Dus de drie knooppunten daar, 15, 14, en 50, zijn ook geldig binaire boom 485 00:24:03,770 --> 00:24:05,480 of een geldige binaire zoekboom. 486 00:24:05,480 --> 00:24:07,250 En ze zijn allemaal groter dan 10. 487 00:24:07,250 --> 00:24:08,960 Dus ze mogen worden aan de rechterkant is er. 488 00:24:08,960 --> 00:24:09,940 Is er een vraag? 489 00:24:09,940 --> 00:24:12,580 >> Publiek: Hoe ga je om als heb je twee zevens? 490 00:24:12,580 --> 00:24:12,850 >> R.J. AQUINO: Ja. 491 00:24:12,850 --> 00:24:16,550 Hoe ga je om met twee waarden die hetzelfde zijn? 492 00:24:16,550 --> 00:24:21,465 Sommige binaire zoekbomen zeggen dat je negeren duplicaten, omdat het doel is 493 00:24:21,465 --> 00:24:24,280 alleen maar zeggen, ik heb gezien deze dingen tot nu toe. 494 00:24:24,280 --> 00:24:28,120 Sommige binary search bomen zou je kunnen zeggen een aantal in de knoop. 495 00:24:28,120 --> 00:24:32,000 Anderen kunnen zeggen dat alles naar Links is dan of gelijk aan. 496 00:24:32,000 --> 00:24:33,470 En alles naar rechts is groter dan. 497 00:24:33,470 --> 00:24:36,520 >> Het is maar net wat de probleem is dat je het oplossen bent. 498 00:24:36,520 --> 00:24:40,840 Dus in een woordenboek, bijvoorbeeld, u zou niet om duplicaten. 499 00:24:40,840 --> 00:24:41,490 Je zou ze weggooien. 500 00:24:41,490 --> 00:24:44,719 Maar een ander probleem dat u zou schelen. 501 00:24:44,719 --> 00:24:49,242 >> PUBLIEK: Is het mogelijk om een 1 links van 15, waarvan 502 00:24:49,242 --> 00:24:50,590 minder dan 10? 503 00:24:50,590 --> 00:24:51,885 >> R.J. AQUINO: Nee. 504 00:24:51,885 --> 00:24:56,570 Als de 14 hier waren 1, zou dit een geldige binaire zoekboom niet, 505 00:24:56,570 --> 00:25:00,840 omdat alles aan de rechterkant van 10 moet groter dan het is. 506 00:25:00,840 --> 00:25:02,300 En we zullen zien waarom. 507 00:25:02,300 --> 00:25:07,960 Indien in het land van search mijn doel is te vinden 14, begin ik aan de wortel. 508 00:25:07,960 --> 00:25:08,500 Dus ik kijk. 509 00:25:08,500 --> 00:25:08,710 OK. 510 00:25:08,710 --> 00:25:10,670 We gaan beginnen bij de wortel. 511 00:25:10,670 --> 00:25:12,500 Kijk naar 10. 512 00:25:12,500 --> 00:25:16,050 >> Nou, 14, onze doelstelling, is groter dan 10. 513 00:25:16,050 --> 00:25:17,370 Dus het moet aan de rechterkant. 514 00:25:17,370 --> 00:25:21,780 Dit is zeer vergelijkbaar met de gehele telefoon boek wat we deden, de binaire 515 00:25:21,780 --> 00:25:23,720 zoeken daar. 516 00:25:23,720 --> 00:25:26,430 Maar in plaats van binair zoeken in een array, we zijn binaire 517 00:25:26,430 --> 00:25:28,490 voor in deze boom. 518 00:25:28,490 --> 00:25:31,260 Dus we zijn nog op zoek naar 14. 519 00:25:31,260 --> 00:25:32,480 Nou, 14 is kleiner dan 15. 520 00:25:32,480 --> 00:25:36,430 Dus als het in onze boom, het moet in dit gebied hier. 521 00:25:36,430 --> 00:25:39,680 Het moet rechts van 10 en links van 15. 522 00:25:39,680 --> 00:25:42,250 >> En dus controleren we dit knooppunt. 523 00:25:42,250 --> 00:25:45,790 En yay, we hebben gevonden 14. 524 00:25:45,790 --> 00:25:46,760 Ik ben niet van plan om er doorheen lopen. 525 00:25:46,760 --> 00:25:48,090 Maar hier is de code. 526 00:25:48,090 --> 00:25:49,690 Het is eigenlijk relatief ongecompliceerd, 527 00:25:49,690 --> 00:25:52,630 omdat dit recursief. 528 00:25:52,630 --> 00:25:55,420 Wat kunnen wij u vragen te doen op een quiz? 529 00:25:55,420 --> 00:25:57,000 We kunnen u vragen om deze code te schrijven. 530 00:25:57,000 --> 00:25:59,170 We kunnen u vragen om te kijken naar deze code en wijzigen van deze code en uitleggen wat 531 00:25:59,170 --> 00:26:00,210 het doet. 532 00:26:00,210 --> 00:26:00,390 Yeah. 533 00:26:00,390 --> 00:26:00,770 Vraag? 534 00:26:00,770 --> 00:26:04,240 >> Publiek: Zijn deze dia gaat worden ter beschikking gesteld als ze waren de vorige keer? 535 00:26:04,240 --> 00:26:04,740 >> R.J. AQUINO: Ja. 536 00:26:04,740 --> 00:26:06,460 Dus deze dia's zal zeker worden geplaatst. 537 00:26:06,460 --> 00:26:08,640 >> PUBLIEK: Ze zijn eigenlijk geplaatst nu op de website. 538 00:26:08,640 --> 00:26:10,020 David deed precies dat. 539 00:26:10,020 --> 00:26:12,720 >> R.J. AQUINO: De glijbanen zijn nu op de website. 540 00:26:12,720 --> 00:26:16,420 Ik zal waarschijnlijk lappen een paar de typefouten merkte ik en ze op te lossen. 541 00:26:16,420 --> 00:26:19,940 Maar er is een stroom versie op de site. 542 00:26:19,940 --> 00:26:21,820 Andere dingen die we kunnen u vragen om te doen - 543 00:26:21,820 --> 00:26:23,790 schrijven insert. 544 00:26:23,790 --> 00:26:27,490 Schrijf een iteratieve versie van de recursieve functie die we net liet zien 545 00:26:27,490 --> 00:26:32,520 of praten over deze dingen, zoals in paragrafen, in woorden, in zinnen. 546 00:26:32,520 --> 00:26:35,760 Het vergelijken van de looptijden en uitleggen wat je zou willen om een ​​binaire gebruiken 547 00:26:35,760 --> 00:26:39,200 zoekboom voor in plaats van een hash table, bijvoorbeeld. 548 00:26:39,200 --> 00:26:43,580 >> Dus begrijpen deze structuren op een vrij diep niveau. 549 00:26:43,580 --> 00:26:47,440 Begrijpen hoe ze te schrijven, hoe te ze gebruiken, hoe om te praten over hen. 550 00:26:47,440 --> 00:26:50,270 En u zult allen worden ingesteld. 551 00:26:50,270 --> 00:26:50,630 Vraag? 552 00:26:50,630 --> 00:26:55,070 >> PUBLIEK: Als je het schrijven van de binaire zoekboom, hoe doe je 553 00:26:55,070 --> 00:27:01,460 bepalen welke waarde maken als de wortel? 554 00:27:01,460 --> 00:27:06,120 >> R.J. AQUINO: Dus de vraag is, wat waarde maak je als root? 555 00:27:06,120 --> 00:27:08,760 Afhankelijk van uw code, u kan een globale wortel hebben. 556 00:27:08,760 --> 00:27:14,290 Dus je kan waarschijnlijk hebben gehad in pset6 een wereldwijde hash table. 557 00:27:14,290 --> 00:27:18,640 Of je zou de wortel passeren in als argument. 558 00:27:18,640 --> 00:27:23,810 Dus deze zoekfunctie hier neemt een argument een knooppunt *. 559 00:27:23,810 --> 00:27:27,420 En dus wat knooppunt u zich ook bevindt kijken naar is degene die je behandelen 560 00:27:27,420 --> 00:27:31,510 als je root als je het passeren inch 561 00:27:31,510 --> 00:27:32,320 En ik ben helemaal klaar. 562 00:27:32,320 --> 00:27:33,480 Dat zijn mijn slides. 563 00:27:33,480 --> 00:27:35,940 De volgende persoon kan swap komen in een laptop en microfoon. 564 00:27:35,940 --> 00:27:47,390 565 00:27:47,390 --> 00:27:49,760 >> ROB BOWDEN: Ik denk dat ik zou kunnen hebben geïnterpreteerd die vraag anders. 566 00:27:49,760 --> 00:27:53,826 Maar ik geïnterpreteerd als, als je de nummers 1, 2, en 3, hoe doen we 567 00:27:53,826 --> 00:27:56,720 weten om 2 de wortel maken tegenover 1 of 3? 568 00:27:56,720 --> 00:27:59,480 Als we 2 de wortel, dan is het mooi 1 en 3 naar links en rechts. 569 00:27:59,480 --> 00:28:04,610 Maar als 1 is de wortel, dan is 1 de bovenzijde, 2 rechts 3 naar rechts. 570 00:28:04,610 --> 00:28:10,880 Dus standaard, weet je niet wat aan de wortel te maken. 571 00:28:10,880 --> 00:28:15,400 En voor elk algoritme we verwachten te geven u, gewoon het eerste wat je 572 00:28:15,400 --> 00:28:16,680 insert zou de wortel zijn. 573 00:28:16,680 --> 00:28:19,890 Of we zouden u een binaire boom te geven dat bestaat dat een wortel heeft. 574 00:28:19,890 --> 00:28:24,760 Maar andere algoritmen bestaat zodat de wortel wordt bijgewerkt, zodat als je 575 00:28:24,760 --> 00:28:28,370 komen in de situatie waar het 1, 2, 3, zou het automatisch updaten om 576 00:28:28,370 --> 00:28:30,900 maken 2 het nieuwe root, zodat het is nog steeds mooi in balans. 577 00:28:30,900 --> 00:28:33,750 578 00:28:33,750 --> 00:28:34,833 >> ANGELA LI: Cool. 579 00:28:34,833 --> 00:28:36,170 He, jongens. 580 00:28:36,170 --> 00:28:37,810 Ik ben Angela. 581 00:28:37,810 --> 00:28:42,490 En ik ga afsluiten onze C en ga dan naar een aantal van onze web 582 00:28:42,490 --> 00:28:43,120 technologieën - 583 00:28:43,120 --> 00:28:46,570 HTTP, HTML en CSS. 584 00:28:46,570 --> 00:28:49,610 Dus het eerste wat is buffer overflow aanvallen. 585 00:28:49,610 --> 00:28:53,070 Dus laten we eens een kijkje op deze code. 586 00:28:53,070 --> 00:28:54,260 Het is vrij eenvoudig. 587 00:28:54,260 --> 00:28:55,460 Er is een functie foo. 588 00:28:55,460 --> 00:28:56,990 En het geeft niets. 589 00:28:56,990 --> 00:29:00,950 Maar het duurt in een pointer om een ​​string genaamd bar. 590 00:29:00,950 --> 00:29:04,920 >> En het gaat om dit te verklaren buffer, wat een teken 591 00:29:04,920 --> 00:29:07,690 array die 12 slots heeft. 592 00:29:07,690 --> 00:29:11,730 En het maakt gebruik memcpy, dat is gewoon een functie die kopieën van een adres 593 00:29:11,730 --> 00:29:12,910 in een andere. 594 00:29:12,910 --> 00:29:19,400 Dus dit probeert te kopiëren naar onze buffer van welke 595 00:29:19,400 --> 00:29:21,140 bar wijst. 596 00:29:21,140 --> 00:29:24,640 Dus enig idee wat er mis is met deze code? 597 00:29:24,640 --> 00:29:27,568 598 00:29:27,568 --> 00:29:30,830 >> PUBLIEK: Als bar is langer dan C, zullen ze overschrijven. 599 00:29:30,830 --> 00:29:31,520 >> ANGELA LI: Ja, precies. 600 00:29:31,520 --> 00:29:34,200 We hebben geen garantie dat bar zal minder zijn dan 12. 601 00:29:34,200 --> 00:29:36,080 We maakte een willekeurig nummer 12. 602 00:29:36,080 --> 00:29:38,380 En wij hadden zoiets van laten we hopen dat onze input van de gebruiker is minder dan 603 00:29:38,380 --> 00:29:40,440 12 tekens lang. 604 00:29:40,440 --> 00:29:46,320 Dus in een ideale wereld, als onze inbreng is altijd zoals verwacht, dan zullen we 605 00:29:46,320 --> 00:29:47,550 zoiets als: hallo. 606 00:29:47,550 --> 00:29:48,920 Dat is minder dan 12 tekens. 607 00:29:48,920 --> 00:29:51,870 Het wordt ingelezen in char c. 608 00:29:51,870 --> 00:29:53,280 En dan doen we iets mee. 609 00:29:53,280 --> 00:29:54,800 Het maakt eigenlijk niet uit. 610 00:29:54,800 --> 00:29:59,740 >> Maar een kwaadwillend persoon zou kunnen doen iets meer als dit, waar ze 611 00:29:59,740 --> 00:30:04,760 geef ons wat bar naar wijst, het gaat om te wijzen op dit enorme scala 612 00:30:04,760 --> 00:30:06,280 van alleen A's. 613 00:30:06,280 --> 00:30:10,680 En dit is veel langer dan 12. 614 00:30:10,680 --> 00:30:13,830 Dus het gaat om de hele weg te gaan hier beneden naar waar het rendement 615 00:30:13,830 --> 00:30:15,420 adres gebruikt te worden. 616 00:30:15,420 --> 00:30:17,860 Dus laten we zeggen deze functie heet foo. 617 00:30:17,860 --> 00:30:20,970 Misschien foo werd door een andere functie, die werd genoemd door de belangrijkste. 618 00:30:20,970 --> 00:30:24,890 Dus als foo loopt, moet om te weten waar om terug te keren naar. 619 00:30:24,890 --> 00:30:29,130 >> Als foo werd gebeld door een functie met de naam baz, moet weten dat het 620 00:30:29,130 --> 00:30:30,250 moet terug naar baz gaan. 621 00:30:30,250 --> 00:30:34,040 En dat is wat deze retouradres hier beneden is ons te vertellen. 622 00:30:34,040 --> 00:30:38,340 Maar als we overschrijven met een aantal andere adres, in dit geval, is een 623 00:30:38,340 --> 00:30:42,650 vertegenwoordiging van het adres op de begin van deze buffer, dan 624 00:30:42,650 --> 00:30:45,240 wat er daadwerkelijk gaat gebeuren, is dat in plaats van terug te keren naar baz, 625 00:30:45,240 --> 00:30:48,470 die onze functie genaamd, het is gewoon ga naar de voorkant van deze code. 626 00:30:48,470 --> 00:30:53,930 >> Als dit was omdat kwaadwillende hacker kerel kwam en 627 00:30:53,930 --> 00:30:56,820 geïnjecteerd dit, dan misschien dit bedrag van de A's is niet echt A's. 628 00:30:56,820 --> 00:31:02,030 En het is eigenlijk gewoon code die breekt uw computer of iets. 629 00:31:02,030 --> 00:31:05,930 Dus om defensief over dit soort zijn ding, moet je nooit aannemen dat 630 00:31:05,930 --> 00:31:09,120 gebruikersinvoer is een zekere aantal karakters. 631 00:31:09,120 --> 00:31:13,310 Bijvoorbeeld, als je gebruik maakte speller, werd je verteld dat woorden waren 632 00:31:13,310 --> 00:31:15,580 alleen maar 40 tekens lang maximum. 633 00:31:15,580 --> 00:31:16,570 En dat was goed. 634 00:31:16,570 --> 00:31:20,150 >> Maar zo niet, dan zou je zorg ervoor om alleen te lezen in 45 635 00:31:20,150 --> 00:31:21,520 tekens per keer. 636 00:31:21,520 --> 00:31:24,430 Anders kan je overschrijven uw buffer. 637 00:31:24,430 --> 00:31:26,140 Eventuele vragen over dat. 638 00:31:26,140 --> 00:31:26,733 Yeah. 639 00:31:26,733 --> 00:31:28,850 >> PUBLIEK: Kun je praten een beetje meer over deze? 640 00:31:28,850 --> 00:31:29,790 >> ANGELA LI: Sorry. 641 00:31:29,790 --> 00:31:31,040 Ja. 642 00:31:31,040 --> 00:31:32,813 643 00:31:32,813 --> 00:31:35,870 >> Publiek: De microfoon is alleen voor video. 644 00:31:35,870 --> 00:31:37,640 Ik zal proberen en projectmanagement. 645 00:31:37,640 --> 00:31:39,900 Hoi, jongens. 646 00:31:39,900 --> 00:31:40,920 Sup? 647 00:31:40,920 --> 00:31:45,330 Dus laten we gaan over een paar dingen in de CS50 bibliotheek, die je hebt gebruikt 648 00:31:45,330 --> 00:31:49,072 hele semester, meestal om invoer van de gebruiker te krijgen. 649 00:31:49,072 --> 00:31:53,140 Zoals u weet, vind je oa CS50 bibliotheek door gewoon CS50.h, doen die 650 00:31:53,140 --> 00:31:55,660 bevat alle prototypes van de functies die u kunt gebruiken, zoals 651 00:31:55,660 --> 00:31:58,640 GetString en getint, en GetFloat, et cetera. 652 00:31:58,640 --> 00:32:02,870 En er is dit een regel in de CS50 bibliotheek die een reeks definieert, waarbij 653 00:32:02,870 --> 00:32:05,380 jullie inmiddels allemaal weten is gewoon een char *. 654 00:32:05,380 --> 00:32:07,900 >> Maar laten we eens een kijkje op hoe GetString werkt. 655 00:32:07,900 --> 00:32:10,010 Dit is een zeer verkorte versie. 656 00:32:10,010 --> 00:32:15,090 U kunt trek de CS50 bibliotheek bestanden uit, denk ik, manuals.CS50.net. 657 00:32:15,090 --> 00:32:16,750 En u kunt door te lezen de eigenlijke functie. 658 00:32:16,750 --> 00:32:19,330 Maar dit dekt een deel van de belangrijke onderdelen. 659 00:32:19,330 --> 00:32:23,870 Dus hebben we een aantal buffer gecreëerd met enige capaciteit. 660 00:32:23,870 --> 00:32:27,570 En wat we doen is krijgen we een teken in een tijd van standaard n. 661 00:32:27,570 --> 00:32:30,910 Dat is waar de gebruiker ingangen tekst in de console. 662 00:32:30,910 --> 00:32:33,430 >> En dus gaan we lezen in een karakter, zolang het niet een nieuw 663 00:32:33,430 --> 00:32:37,220 lijn en het is niet het einde van het bestand, dat het einde van standaard invoer. 664 00:32:37,220 --> 00:32:45,690 En voor ieder karakter dat lezen we in, als dat karakter eindigt het toevoegen 665 00:32:45,690 --> 00:32:50,120 om het aantal tekens hebben we gelezen en in dat meer dan ons vermogen, 666 00:32:50,120 --> 00:32:53,490 dan wat we doen is dat we gewoon formaat onze buffer zodat het twee keer zo lang. 667 00:32:53,490 --> 00:32:56,950 Dus nogmaals, deze beschermen tegen buffer overflow aanvallen, want je leest in 668 00:32:56,950 --> 00:32:58,315 een karakter per keer. 669 00:32:58,315 --> 00:33:02,290 En als u op enig moment ook te lezen in veel, je gewoon uitbreiden van uw buffer. 670 00:33:02,290 --> 00:33:03,330 Je vermenigvuldigen met twee. 671 00:33:03,330 --> 00:33:05,510 En dan heb je meer ruimte. 672 00:33:05,510 --> 00:33:09,120 >> Anders moet je gewoon toevoegen een teken buffer. 673 00:33:09,120 --> 00:33:15,080 En nadat je hebt gelezen in alle karakters, zal de buffer verkleinen 674 00:33:15,080 --> 00:33:18,510 terug naar de normale grootte, voeg een null terminator, en dan terug. 675 00:33:18,510 --> 00:33:21,880 676 00:33:21,880 --> 00:33:24,960 Laten we nu eens kijken naar getint. 677 00:33:24,960 --> 00:33:27,700 Kunnen jullie dit lezen? 678 00:33:27,700 --> 00:33:30,710 Ik kan in een beetje te zoomen. 679 00:33:30,710 --> 00:33:33,410 680 00:33:33,410 --> 00:33:34,660 Ik weet niet hoe computers werken. 681 00:33:34,660 --> 00:33:40,840 682 00:33:40,840 --> 00:33:41,270 Maakt niet uit. 683 00:33:41,270 --> 00:33:42,520 Ik kan niet goed zoomen. 684 00:33:42,520 --> 00:33:47,500 685 00:33:47,500 --> 00:33:48,770 >> Dit is echt moeilijk. 686 00:33:48,770 --> 00:33:49,180 Het spijt me. 687 00:33:49,180 --> 00:33:51,490 Laten we gewoon kijken naar dit. 688 00:33:51,490 --> 00:33:57,140 Dus wat getInt doet is het voor het eerst leest in een string van GetString, die 689 00:33:57,140 --> 00:33:59,250 we eerder hebben geïmplementeerd. 690 00:33:59,250 --> 00:34:02,945 En het belangrijkste onderdeel om hier op te merken is als dit delen dat het eindigt 691 00:34:02,945 --> 00:34:06,400 lezen is als het niet echt een string, dan we gewoon terug INT_MAX naar 692 00:34:06,400 --> 00:34:09,409 vertegenwoordigen mislukking. 693 00:34:09,409 --> 00:34:12,645 Waarom hebben we terugkeren INT_MAX plaats van negatieve 1 of 1? 694 00:34:12,645 --> 00:34:13,895 Het even welke ideeën? 695 00:34:13,895 --> 00:34:16,853 696 00:34:16,853 --> 00:34:19,350 >> PUBLIEK: [onverstaanbaar] negatieve 1 op een. 697 00:34:19,350 --> 00:34:20,070 >> ANGELA LI: Ja, precies. 698 00:34:20,070 --> 00:34:24,560 Dus je bent veel meer kans om gewoon wilt ingang 1 of negatieve 1 als daarom wordt gevraagd 699 00:34:24,560 --> 00:34:27,469 voor een n en wat n maxes. 700 00:34:27,469 --> 00:34:27,969 Het is enorm. 701 00:34:27,969 --> 00:34:29,690 Je bent waarschijnlijk niet van plan om het te gebruiken. 702 00:34:29,690 --> 00:34:32,690 Dus dit is als een ontwerp besluit tot zorg ervoor dat u niet per ongeluk 703 00:34:32,690 --> 00:34:38,540 een foutmelding of je niet terug 1, die kan worden geparseerd 704 00:34:38,540 --> 00:34:41,199 als een juist antwoord. 705 00:34:41,199 --> 00:34:45,110 Dus als een regel niet bestaat, we terug RC-MAX. 706 00:34:45,110 --> 00:34:48,090 Anders gebruiken we sscanf, die is als scanf. 707 00:34:48,090 --> 00:34:49,449 Maar het leest uit een string. 708 00:34:49,449 --> 00:34:54,310 >> En we hebben dit opgemaakte koord, dat is% i% c. 709 00:34:54,310 --> 00:34:57,440 En we proberen en match dat met wat de gebruiker gaf ons. 710 00:34:57,440 --> 00:35:01,420 We willen het aantal passende dingen zijn 1, hetgeen betekent dat we alleen 711 00:35:01,420 --> 00:35:04,940 echt willen een integer passen omgeven door misschien wit 712 00:35:04,940 --> 00:35:06,840 ruimte, misschien ook niet. 713 00:35:06,840 --> 00:35:10,710 In dit geval, als je in iets zoals bar, is bar niet overeen helemaal niet, 714 00:35:10,710 --> 00:35:14,400 want er moet worden een geheel getal in het begin. 715 00:35:14,400 --> 00:35:17,060 Dus sscan nooit gedraaid 0. 716 00:35:17,060 --> 00:35:19,640 Dus je hoeft niet terug dat. 717 00:35:19,640 --> 00:35:23,850 >> Als alternatief, als je in iets zoals 1, 2, 3, A, B, C, die gelijken 718 00:35:23,850 --> 00:35:27,180 zowel de integer maar ook het teken na het. 719 00:35:27,180 --> 00:35:29,990 Dus sscanf zal terugkeren 2, die is niet ideaal. 720 00:35:29,990 --> 00:35:34,620 Je wilt niet 1, 2, 3, A, B, C een geldige int. 721 00:35:34,620 --> 00:35:36,990 Dus dat werkt ook niet. 722 00:35:36,990 --> 00:35:38,530 Maar zeggen dat je in iets als 50. 723 00:35:38,530 --> 00:35:42,460 Die overeenkomen met de% i, waardoor het zal krijgen te lezen in n. 724 00:35:42,460 --> 00:35:44,790 En nu, n zal het nummer 50 bevatten. 725 00:35:44,790 --> 00:35:46,110 En dan kun je het terug. 726 00:35:46,110 --> 00:35:49,270 >> Anders, je raakt Opnieuw. 727 00:35:49,270 --> 00:35:55,790 En dan gaat het gewoon weer totdat krijg je een goede input van de gebruiker. 728 00:35:55,790 --> 00:35:56,891 Heeft u vragen over zeggen? 729 00:35:56,891 --> 00:36:02,182 >> PUBLIEK: Dus als je om uit te printen de waarde van de getInt op [onverstaanbaar] 730 00:36:02,182 --> 00:36:06,250 zou het gewoon de integer en max? 731 00:36:06,250 --> 00:36:07,440 >> ANGELA LI: Yeah. 732 00:36:07,440 --> 00:36:11,780 Dus als je getint gebruiken, moet u ervan uitgaan dat je niet wilt nde max 733 00:36:11,780 --> 00:36:15,328 een geldige ingang, want je gaat te veronderstellen dat was slecht. 734 00:36:15,328 --> 00:36:27,740 >> PUBLIEK: Als we niet hebben char c en iemand zet in 1, 2, 3, Sam, zou het 735 00:36:27,740 --> 00:36:29,430 nog werken voor 1, 2, 3? 736 00:36:29,430 --> 00:36:29,750 >> ANGELA LI: Ik denk dat het zou werken. 737 00:36:29,750 --> 00:36:33,340 Maar je wilt niet 123Sam aan een geldige invoer door een gebruiker. 738 00:36:33,340 --> 00:36:34,670 Dat is niet echt een int. 739 00:36:34,670 --> 00:36:36,840 Dus het lijkt niet eerlijk om het te ontleden als een int. 740 00:36:36,840 --> 00:36:40,910 741 00:36:40,910 --> 00:36:42,160 OK. 742 00:36:42,160 --> 00:36:45,800 In dat geval, vooruit op het internet. 743 00:36:45,800 --> 00:36:49,120 Dus HTTP is geen taal. 744 00:36:49,120 --> 00:36:56,060 HTTP is gewoon de set van normen voor hoe je dingen van klanten te sturen, 745 00:36:56,060 --> 00:36:57,280 dat ben jij, om servers. 746 00:36:57,280 --> 00:36:59,730 Dat is andere mensen op het web. 747 00:36:59,730 --> 00:37:02,900 >> Dus HTTP staat voor Hypertext Transfer Protocol. 748 00:37:02,900 --> 00:37:04,610 Het is het hart en ziel van het hele web. 749 00:37:04,610 --> 00:37:07,050 De hypertext deel net verwijst naar HTML. 750 00:37:07,050 --> 00:37:10,690 De overdracht is klanten zoals u aanvragen naar 751 00:37:10,690 --> 00:37:13,060 servers, die antwoorden geven. 752 00:37:13,060 --> 00:37:16,380 En het protocol is slechts, hoe je verwacht een server te gedragen? 753 00:37:16,380 --> 00:37:19,960 En hoe moet je dan te gedragen zodat u dit kunt stroomlijnen 754 00:37:19,960 --> 00:37:21,920 communicatieproces? 755 00:37:21,920 --> 00:37:26,650 >> Dus HTTP-verzoeken lijken erg op deze. 756 00:37:26,650 --> 00:37:28,070 GET is het type aanvraag. 757 00:37:28,070 --> 00:37:31,220 Jullie zijn GET verzoeken gezien en POST-aanvragen. 758 00:37:31,220 --> 00:37:36,690 Dat tweede ding daar, / me, dat is gewoon de URI of de URL waar u 759 00:37:36,690 --> 00:37:38,140 willen gaan binnen de gastheer. 760 00:37:38,140 --> 00:37:44,140 Dus dit verzoek vraagt ​​om de pagina, zoals www.facebook.com / me. 761 00:37:44,140 --> 00:37:45,300 En het is een GET-aanvraag. 762 00:37:45,300 --> 00:37:51,020 En dan is dit HTTP/1.1, dat is gewoon de versie van HTTP u gebruikt. 763 00:37:51,020 --> 00:37:55,020 Het is bijna altijd 1.1. 764 00:37:55,020 --> 00:37:56,880 >> En dan is er nog een heleboel andere dingen ook. 765 00:37:56,880 --> 00:38:02,510 Je kunt eigenlijk zien deze als u open je console als je 766 00:38:02,510 --> 00:38:03,770 surfen op het web. 767 00:38:03,770 --> 00:38:07,290 Reacties kijken iets meer als dit. 768 00:38:07,290 --> 00:38:09,620 Het bovenste deel is, opnieuw, de type HTTP u gebruikt 769 00:38:09,620 --> 00:38:12,310 gevolgd door een status-code. 770 00:38:12,310 --> 00:38:14,700 Dus 200 OK is alles werkte. 771 00:38:14,700 --> 00:38:16,200 Hier is uw inhoud. 772 00:38:16,200 --> 00:38:17,390 Uw content gaat volgen. 773 00:38:17,390 --> 00:38:21,730 En dan zal het u vertellen wat voor soort van inhoud en andere dingen ook. 774 00:38:21,730 --> 00:38:24,620 >> De status codes, zijn er een paar belangrijkste zijn dat je moet weten. 775 00:38:24,620 --> 00:38:26,460 200 OK is als gouden alles is. 776 00:38:26,460 --> 00:38:28,490 Alles werkt. 777 00:38:28,490 --> 00:38:29,710 403 Forbidden. 778 00:38:29,710 --> 00:38:32,910 Dit heb je waarschijnlijk gezien als u vergeten iets goed chmod. 779 00:38:32,910 --> 00:38:34,510 Het betekent dat je niet hoeft de juiste rechten om 780 00:38:34,510 --> 00:38:36,210 toegang tot die op de server. 781 00:38:36,210 --> 00:38:38,110 Het is net, nee, je kan het niet zien. 782 00:38:38,110 --> 00:38:39,780 404 betekent dat ding niet bestaat. 783 00:38:39,780 --> 00:38:40,400 Niet gevonden. 784 00:38:40,400 --> 00:38:41,640 U heeft waarschijnlijk gezien dat veel. 785 00:38:41,640 --> 00:38:45,510 >> 500 Internal Server Error is meestal als er iets fout aan de kant ging 786 00:38:45,510 --> 00:38:46,460 van de server. 787 00:38:46,460 --> 00:38:50,830 Dus toen je uitvoering pset7, als je PHP fouten had, kon je 788 00:38:50,830 --> 00:38:53,890 eigenlijk naar de pagina en je ziet een hele hoop PHP fout spul. 789 00:38:53,890 --> 00:38:56,900 Maar dat betekent niet normaal het geval is, omdat websites niet echt willen 790 00:38:56,900 --> 00:38:58,830 u vertellen waarom hun site is gebroken. 791 00:38:58,830 --> 00:39:03,370 Ze zullen waarschijnlijk gewoon weer een 500 Internal Server Error. 792 00:39:03,370 --> 00:39:06,120 >> En dan is er nog 418 Ik ben een theepot. 793 00:39:06,120 --> 00:39:07,910 Er zit een heel verhaal over waarom dat is een ding. 794 00:39:07,910 --> 00:39:09,860 Maar je kunt lezen over dat in je eigen tijd. 795 00:39:09,860 --> 00:39:11,450 Er is een hele hoop andere status codes ook. 796 00:39:11,450 --> 00:39:12,700 Maar dit zijn degenen je moet weten. 797 00:39:12,700 --> 00:39:15,660 798 00:39:15,660 --> 00:39:18,610 Dus laten we praten over HTML. 799 00:39:18,610 --> 00:39:22,180 HTML, herinner, is geen programmeertaal. 800 00:39:22,180 --> 00:39:23,510 Het is een opmaaktaal. 801 00:39:23,510 --> 00:39:25,210 Dat betekent dat het beschreven inhoud. 802 00:39:25,210 --> 00:39:30,440 Het vertelt u wat een HTML document ziet er achtige of niet wat het lijkt 803 00:39:30,440 --> 00:39:32,230 maar hoe het is opgebouwd. 804 00:39:32,230 --> 00:39:36,110 >> Dus definieert een structuur en semantiek van webpagina's. 805 00:39:36,110 --> 00:39:37,830 Het is net, dit is een paragraaf. 806 00:39:37,830 --> 00:39:40,060 Dit is een geordende lijst. 807 00:39:40,060 --> 00:39:42,360 Dit is als een deel van mijn pagina. 808 00:39:42,360 --> 00:39:43,260 Hier is de titel. 809 00:39:43,260 --> 00:39:44,310 Het doet dat soort dingen. 810 00:39:44,310 --> 00:39:48,770 Het doet er niet stijl van een van die, omdat dat is wat je doet in CSS. 811 00:39:48,770 --> 00:39:50,270 En het lijkt op een reeks van geneste tags. 812 00:39:50,270 --> 00:39:54,720 Dus om een ​​voorbeeld van een heel basic te gebruiken HTML-pagina, je hebt de DOCTYPE 813 00:39:54,720 --> 00:39:56,720 verklaring daarboven. 814 00:39:56,720 --> 00:40:00,940 >> Dit DOCTYPE-declaratie is zeggen, dat we met behulp van HTML5. 815 00:40:00,940 --> 00:40:03,370 Dan heb je de grote HTML-tag. 816 00:40:03,370 --> 00:40:05,230 Het bevat een kop en lichaam. 817 00:40:05,230 --> 00:40:06,970 In het hoofd, je hebt de titel. 818 00:40:06,970 --> 00:40:12,950 Dat is wat er in de titel balk van uw browser. 819 00:40:12,950 --> 00:40:15,810 We hebben een link-tag die links in een externe style sheet. 820 00:40:15,810 --> 00:40:19,880 En dan hebben we een script dat trekt van een extern JavaScript ook. 821 00:40:19,880 --> 00:40:23,750 >> En dan in ons lichaam is eigenlijk wat er wordt getoond op de pagina. 822 00:40:23,750 --> 00:40:28,210 We hebben een paragraaf kreeg en vervolgens een afbeelding in die paragraaf. 823 00:40:28,210 --> 00:40:32,000 Dit is een foto van kittens. 824 00:40:32,000 --> 00:40:35,840 Merk op dat het beeld tag sluit zelf. 825 00:40:35,840 --> 00:40:41,760 Dus in plaats van het openen met een afbeelding en dan doet een ander / image, je 826 00:40:41,760 --> 00:40:47,500 gewoon deze kleine slash hier, waar het sluit. 827 00:40:47,500 --> 00:40:53,670 En het beeld tag heeft ook deze toets attribuut waarde genoemd alt. 828 00:40:53,670 --> 00:40:56,970 Dat is de alternatieve tekst die gebeurt wanneer u de muisaanwijzer over. 829 00:40:56,970 --> 00:41:03,170 >> De meeste HTML-elementen hebben een aantal belangrijke waarde dingen die je kan geven, diverse 830 00:41:03,170 --> 00:41:04,420 maatwerk. 831 00:41:04,420 --> 00:41:06,230 832 00:41:06,230 --> 00:41:08,705 Yeah. 833 00:41:08,705 --> 00:41:09,955 >> PUBLIEK: [onverstaanbaar]. 834 00:41:09,955 --> 00:41:17,510 835 00:41:17,510 --> 00:41:19,680 >> ANGELA LI: Nou, dus het is een attribuut van de tag. 836 00:41:19,680 --> 00:41:25,320 Dus als je met behulp van jQuery, je kon doen select image.getAttribute. 837 00:41:25,320 --> 00:41:27,930 En dan kunt u zoeken naar krijgen het alt attribuut. 838 00:41:27,930 --> 00:41:31,040 En het zal u kittens geven. 839 00:41:31,040 --> 00:41:37,400 Als je nog formulieren in HTML, ingang elementen zullen moeten naam attributen. 840 00:41:37,400 --> 00:41:41,870 En dat is wat PHP gebruikt voor het verzenden verzoeken wanneer een formulier wordt ingediend. 841 00:41:41,870 --> 00:41:44,762 842 00:41:44,762 --> 00:41:50,064 >> PUBLIEK: Heb je iets te noemen over hoe als je kittens.jpg gebruiken of 843 00:41:50,064 --> 00:41:54,410 iets dat de ontbrekende heeft bestandsmappen of andere bestanden? 844 00:41:54,410 --> 00:41:54,750 >> ANGELA LI: Ja. 845 00:41:54,750 --> 00:41:57,010 Dus dit is wat heet een relatieve pad, want ik geef niet 846 00:41:57,010 --> 00:41:58,740 u het volledige pad. 847 00:41:58,740 --> 00:42:05,160 Dit is net als in C als je fopen doen een bestand, als je fopen hi.txt, dat 848 00:42:05,160 --> 00:42:09,190 hi.txt verwachting in dezelfde directory, tenzij je het een meer 849 00:42:09,190 --> 00:42:11,530 complex pad. 850 00:42:11,530 --> 00:42:14,900 >> PUBLIEK: Dus je zou kunnen aangeven welke map [onverstaanbaar]? 851 00:42:14,900 --> 00:42:17,660 >> ANGELA LI: Yeah. 852 00:42:17,660 --> 00:42:19,370 En je kunt opzoeken hoe dat te doen. 853 00:42:19,370 --> 00:42:23,480 Maar als ik wilde kittens.jpg eruit te komen van de bovenliggende map, zou ik doen 854 00:42:23,480 --> 00:42:24,730 .. / Kittens.jpg. 855 00:42:24,730 --> 00:42:29,680 856 00:42:29,680 --> 00:42:30,930 Yeah. 857 00:42:30,930 --> 00:42:32,960 858 00:42:32,960 --> 00:42:33,760 Sorry. 859 00:42:33,760 --> 00:42:34,045 Yeah. 860 00:42:34,045 --> 00:42:35,700 Oh man, ik vergat de vraag. 861 00:42:35,700 --> 00:42:36,460 Wat was de vraag? 862 00:42:36,460 --> 00:42:39,570 Oh, was de vraag is, kittens.jpg naar verwachting in dezelfde map? 863 00:42:39,570 --> 00:42:40,630 En in dit geval is. 864 00:42:40,630 --> 00:42:44,030 Maar je kunt ook geven een bepaald pad zodanig dat het niet zo te zijn. 865 00:42:44,030 --> 00:42:47,100 866 00:42:47,100 --> 00:42:48,350 Goed? 867 00:42:48,350 --> 00:42:50,190 868 00:42:50,190 --> 00:42:51,350 >> CSS. 869 00:42:51,350 --> 00:42:55,420 Dus CSS, zoals HTML, niet een programmeertaal. 870 00:42:55,420 --> 00:42:58,250 CSS is gewoon een serie styling regels. 871 00:42:58,250 --> 00:43:00,130 Het staat voor Cascading Style Sheets. 872 00:43:00,130 --> 00:43:03,910 En je het gebruikt in combinatie met HTML-stijl pagina's. 873 00:43:03,910 --> 00:43:08,140 Zo zijn er drie manieren u kunt opnemen. 874 00:43:08,140 --> 00:43:11,950 Een manier kunt u het doen is in het hoofd gedeelte van uw HTML, kunt u gewoon 875 00:43:11,950 --> 00:43:15,410 open een stijl tag en dan vasthouden sommige CSS-regels in. 876 00:43:15,410 --> 00:43:16,759 Het is vrij OK. 877 00:43:16,759 --> 00:43:17,228 Yeah. 878 00:43:17,228 --> 00:43:21,449 >> Publiek: Kunt u zet die stijl tags in tussen, laten we 879 00:43:21,449 --> 00:43:22,860 zeg, lichaam en / lichaam. 880 00:43:22,860 --> 00:43:27,400 En dan zou je styling Slechts lichaam. 881 00:43:27,400 --> 00:43:28,840 >> ANGELA LI: U kon. 882 00:43:28,840 --> 00:43:29,590 Het zal werken. 883 00:43:29,590 --> 00:43:33,990 Maar je moet niet, want styling is soort van de metadata die moet gaan in 884 00:43:33,990 --> 00:43:35,890 het hoofd van uw document. 885 00:43:35,890 --> 00:43:38,280 Lichaam moet echt alleen bevatten wat er daadwerkelijk gaat 886 00:43:38,280 --> 00:43:39,420 weergegeven op uw pagina. 887 00:43:39,420 --> 00:43:42,155 >> PUBLIEK: Dus je zou stijl zetten in je hoofd om te stylen 888 00:43:42,155 --> 00:43:43,930 hele webpagina, toch? 889 00:43:43,930 --> 00:43:44,300 >> ANGELA LI: Yeah. 890 00:43:44,300 --> 00:43:50,470 Dus zetten stijl hier, deze CSS-regels geldt voor de gehele pagina op basis van 891 00:43:50,470 --> 00:43:52,100 hun selectors. 892 00:43:52,100 --> 00:43:57,090 Dus de betere manier om het te doen is in plaats daarvan van het hebben van een stijl-tag in je hoofd, 893 00:43:57,090 --> 00:44:00,430 u op deze link naar een externe stijl hebben sheet zoals ik liet zien in de 894 00:44:00,430 --> 00:44:01,980 vorige voorbeeld. 895 00:44:01,980 --> 00:44:05,920 Wat dit doet is het probeert en vindt de bestand style.css en dan trekt het 896 00:44:05,920 --> 00:44:08,470 in en gebruikt die als stijlen voor de pagina. 897 00:44:08,470 --> 00:44:10,500 En je style.css zou net zo uitzien. 898 00:44:10,500 --> 00:44:13,330 Het zou gewoon een stelletje CSS zijn. 899 00:44:13,330 --> 00:44:16,210 >> En dan is er nog een andere manier waarop je kan omvatten CSS, die u echt 900 00:44:16,210 --> 00:44:17,480 mag nooit doen. 901 00:44:17,480 --> 00:44:18,950 Het is oproep inline styling. 902 00:44:18,950 --> 00:44:22,650 En dus elke HTML-element kan ook neem een ​​attribuut stijl. 903 00:44:22,650 --> 00:44:26,320 En dan in die stijl attribuut, je kunt het CSS-regels geven. 904 00:44:26,320 --> 00:44:29,140 Dus in dit geval, wat div ik ben het definiëren van hier, het gaat om 905 00:44:29,140 --> 00:44:32,580 hebben een zwarte achtergrond en een witte tekstkleur. 906 00:44:32,580 --> 00:44:35,620 Maar je moet dit niet doen, want wat dit doet is het zet je styling 907 00:44:35,620 --> 00:44:36,850 in uw HTML. 908 00:44:36,850 --> 00:44:40,530 >> En ik weet dat we hebben gepraat over HTML is structuur en CSS is stijl. 909 00:44:40,530 --> 00:44:42,790 Als u dit doet, het mengt ze samen. 910 00:44:42,790 --> 00:44:44,550 En het is niet erg schoon. 911 00:44:44,550 --> 00:44:45,800 Dus doe dat niet. 912 00:44:45,800 --> 00:44:47,690 913 00:44:47,690 --> 00:44:52,100 Met behulp van een voorbeeld van CSS, daarboven, we selecteer enkel het lichaam van de HTML 914 00:44:52,100 --> 00:44:52,380 documentaire. 915 00:44:52,380 --> 00:44:55,110 En we zijn net, alles is gaat worden Comic Sans. 916 00:44:55,110 --> 00:44:57,290 Ik heb ook niet aan te raden dat. 917 00:44:57,290 --> 00:44:59,940 Maar je kon doen. 918 00:44:59,940 --> 00:45:03,140 >> De tweede regel hier, het gaat om het element op het selecteren 919 00:45:03,140 --> 00:45:04,880 pagina met ID belangrijkste. 920 00:45:04,880 --> 00:45:11,690 Dus wat HTML-element, zei ik ID = Belangrijkste, ik ga dat een te geven 921 00:45:11,690 --> 00:45:16,020 20-pixel marge en uitlijnen alles, alle tekst, naar het centrum. 922 00:45:16,020 --> 00:45:19,030 Het laatste wat selecteert door CSS-klasse. 923 00:45:19,030 --> 00:45:24,450 Dus elk element op de pagina die ik gaf een sectie-klasse, ik ga om het te maken 924 00:45:24,450 --> 00:45:26,602 een achtergrond kleur van het licht blauw. 925 00:45:26,602 --> 00:45:29,380 926 00:45:29,380 --> 00:45:30,040 Yep. 927 00:45:30,040 --> 00:45:30,700 Dat is alles wat ik heb. 928 00:45:30,700 --> 00:45:30,890 Vraag? 929 00:45:30,890 --> 00:45:34,020 >> Publiek: Wat doet de hashtag voordat belangrijkste doen? 930 00:45:34,020 --> 00:45:36,310 >> ANGELA LI: De vraag is, wat doet de hashtag voor belangrijkste do? 931 00:45:36,310 --> 00:45:40,770 In dit geval, de hash CSS betekent selecteer op ID. 932 00:45:40,770 --> 00:45:47,490 Dus als ik had wat HTML-element, zoals divid = belangrijkste, deze CSS-regel selecteert 933 00:45:47,490 --> 00:45:49,260 het ding met ID belangrijkste. 934 00:45:49,260 --> 00:45:53,940 En evenzo, de periode voor sectie is geselecteerd door CSS klasse of 935 00:45:53,940 --> 00:45:56,558 selecteren door HTML-klasse. 936 00:45:56,558 --> 00:46:00,940 >> PUBLIEK: Waarom is er een heeft vóór 6 op de achtergrond kleur? 937 00:46:00,940 --> 00:46:01,270 >> ANGELA LI: Yeah. 938 00:46:01,270 --> 00:46:03,360 Dus de vraag is, waarom is er een hash voor de 6? 939 00:46:03,360 --> 00:46:05,320 Dit is anders dan die hash. 940 00:46:05,320 --> 00:46:09,500 Dit betekent dat je geeft een hexadecimale kleur. 941 00:46:09,500 --> 00:46:14,260 Dus hex kleuren, dit enkel stelt een kleur. 942 00:46:14,260 --> 00:46:17,860 En vergeet niet je RGB triples als u het forensisch PSET deed? 943 00:46:17,860 --> 00:46:18,770 Dit is vergelijkbaar. 944 00:46:18,770 --> 00:46:21,590 De eerste twee cijfers geven hoeveel rode is in de kleur. 945 00:46:21,590 --> 00:46:23,260 De tweede twee vertegenwoordigen hoeveel groen. 946 00:46:23,260 --> 00:46:25,450 En de derde vertegenwoordigt hoeveel blauw. 947 00:46:25,450 --> 00:46:30,060 En de hash is dit gaat een kleur vertegenwoordigen. 948 00:46:30,060 --> 00:46:35,660 >> Dus alles uit 0, 0, 0, 0, 0, 0 tot F, F, F, F, F, F geldig is. 949 00:46:35,660 --> 00:46:39,550 Het is een aantal geldige kleur die kan worden weergegeven door uw browser. 950 00:46:39,550 --> 00:46:39,790 Vraag? 951 00:46:39,790 --> 00:46:43,590 >> Publiek: Wat is het verschil tussen met behulp van ID en per klasse? 952 00:46:43,590 --> 00:46:46,470 >> ANGELA LI: De vraag is wat er het verschil tussen 953 00:46:46,470 --> 00:46:48,950 met behulp van ID en klasse? 954 00:46:48,950 --> 00:46:54,390 U kunt slechts een element in een HTML-document dat een bepaalde ID heeft. 955 00:46:54,390 --> 00:46:58,660 Dus maar een ding op mijn pagina mag ID main hebben. 956 00:46:58,660 --> 00:47:02,580 Zodat u het voor dit is de header. 957 00:47:02,580 --> 00:47:03,850 Dit is de navigatie. 958 00:47:03,850 --> 00:47:05,230 Dit is de voettekst. 959 00:47:05,230 --> 00:47:09,070 Klassen zijn anders, want je kunt klassen toepassen om zo veel HTML-elementen 960 00:47:09,070 --> 00:47:10,100 als je wilt. 961 00:47:10,100 --> 00:47:15,860 >> Dus bijvoorbeeld, ik heb klasse sectie, want er is waarschijnlijk meer dan een 962 00:47:15,860 --> 00:47:17,540 sectie op mijn pagina. 963 00:47:17,540 --> 00:47:20,200 Je bent gewoon toegestaan ​​om zo velen hebben elementen op de pagina met dezelfde 964 00:47:20,200 --> 00:47:23,190 klasse, maar slechts een met een bepaalde ID. 965 00:47:23,190 --> 00:47:25,600 >> PUBLIEK: Dus de stip staat de klas? 966 00:47:25,600 --> 00:47:26,090 >> ANGELA LI: Yeah. 967 00:47:26,090 --> 00:47:27,380 Een punt staat voor een klas. 968 00:47:27,380 --> 00:47:29,990 969 00:47:29,990 --> 00:47:31,540 Cool. 970 00:47:31,540 --> 00:47:32,370 Dat is alles wat ik heb, jongens. 971 00:47:32,370 --> 00:47:33,544 Dank u. 972 00:47:33,544 --> 00:48:13,380 >> [Applaus] 973 00:48:13,380 --> 00:48:14,290 >> ZAMYLA CHAN: Hallo, iedereen. 974 00:48:14,290 --> 00:48:14,880 Ik ben Zamyla. 975 00:48:14,880 --> 00:48:18,830 Ik ga worden met betrekking tot PHP, MVC, en SQL vandaag. 976 00:48:18,830 --> 00:48:22,350 977 00:48:22,350 --> 00:48:26,110 Een groot deel van het materiaal dat ik zal bedekking gaat vrij veel te zijn 978 00:48:26,110 --> 00:48:29,100 recht uit pset7. 979 00:48:29,100 --> 00:48:29,700 Oke. 980 00:48:29,700 --> 00:48:31,180 Dus wat is PHP? 981 00:48:31,180 --> 00:48:35,150 PHP staat voor PHP Hypertext Preprocessor. 982 00:48:35,150 --> 00:48:38,740 Dus, is op zich een recursief te noemen, dat is pretty cool. 983 00:48:38,740 --> 00:48:42,220 PHP is een server-side scripting taal, en het biedt de backend 984 00:48:42,220 --> 00:48:44,610 en de logische onderbouwing van onze website. 985 00:48:44,610 --> 00:48:48,520 >> Dus Angela sprak veel over de HTML en CSS die de structuur maken 986 00:48:48,520 --> 00:48:49,530 van de website. 987 00:48:49,530 --> 00:48:53,210 Maar wat als u wilt wijzigen dat inhoud dynamisch of als het afwijkt 988 00:48:53,210 --> 00:48:55,240 basis van de gebruiker of bepaalde voorwaarden? 989 00:48:55,240 --> 00:48:57,060 Dat is waar PHP komt binnen 990 00:48:57,060 --> 00:49:02,610 Nu, meestal, PHP neemt mogelijk minder regels voor de uitvoering van hetzelfde 991 00:49:02,610 --> 00:49:07,380 in C. Dat komt omdat PHP omgaat geheugen management voor de programmeur, 992 00:49:07,380 --> 00:49:11,170 in tegenstelling tot ons hoeven malloc vrij, dat soort dingen. 993 00:49:11,170 --> 00:49:15,430 >> Maar omdat PHP is een interpretatieve taal, typisch, kan het uitvoeren 994 00:49:15,430 --> 00:49:19,540 een beetje langzamer dan C, die is een gecompileerde taal. 995 00:49:19,540 --> 00:49:23,150 Omdat we bewegen programmering talen, laten we eens kijken naar hoe de 996 00:49:23,150 --> 00:49:24,570 syntaxis zullen verschillen. 997 00:49:24,570 --> 00:49:28,770 Laten we heel voorzichtig zijn niet te raken in de war met dit. 998 00:49:28,770 --> 00:49:33,750 Dus met PHP syntax, of u nu inbedden van uw PHP binnenkant van een HTML 999 00:49:33,750 --> 00:49:40,430 bestand of binnen een. php bestand zelf, je moet de code insluiten in de open 1000 00:49:40,430 --> 00:49:45,270 PHP en de gesloten PHP tags zoals volgt, zoals op het scherm. 1001 00:49:45,270 --> 00:49:46,660 >> Variabelen in PHP. 1002 00:49:46,660 --> 00:49:51,490 Elke variabele begint met het $-teken gevolgd door de naam van 1003 00:49:51,490 --> 00:49:53,150 de variabele. 1004 00:49:53,150 --> 00:49:56,530 Nu zijn variabelen in PHP losjes getypt, wat betekent dat je niet nodig hebt 1005 00:49:56,530 --> 00:50:00,030 aan te geven wat het datatype is als je aangifte te doen. 1006 00:50:00,030 --> 00:50:03,505 Echter, dit betekent niet dat ze hebben geen types helemaal. 1007 00:50:03,505 --> 00:50:09,370 Dus als ik een variabele declareert en stel gewoon het gelijk aan 1, en dan verklaar ik 1008 00:50:09,370 --> 00:50:15,140 een andere variabele, stel deze gelijk aan "1" en dan nog een 1.0, goed, 1009 00:50:15,140 --> 00:50:19,410 afhankelijk van het soort gelijkheid operatoren die ik gebruik, als ik wil vergelijken 1010 00:50:19,410 --> 00:50:21,830 in alle, dan ze zullen gelijk zijn. 1011 00:50:21,830 --> 00:50:25,570 Maar als ik wil ervoor zorgen dat de types gelijk zijn, kan PHP nog steeds doen 1012 00:50:25,570 --> 00:50:28,690 dat, hoewel we niet aan te geven wat voor soort het is wanneer we 1013 00:50:28,690 --> 00:50:31,170 eerst het bestand te maken. 1014 00:50:31,170 --> 00:50:33,990 >> Nu, in PHP, ook al zijn we omschakelen van de programmering 1015 00:50:33,990 --> 00:50:39,360 talen van C, we hebben nog steeds onze betrouwbaar als voorwaarde, net als dit. 1016 00:50:39,360 --> 00:50:43,270 We hebben nog steeds onze while loops, net als dit, waar je in je 1017 00:50:43,270 --> 00:50:47,300 staat en vervolgens de lichaam van de lus. 1018 00:50:47,300 --> 00:50:50,360 En dan hebben we ook onze lus, die meestal ziet er zo uit. 1019 00:50:50,360 --> 00:50:55,330 Dus als ik wilde itereren over alle negen psets en legt en bel een 1020 00:50:55,330 --> 00:50:58,960 functie submitPset, dan kan ik dat doen hier, die jullie hebben allemaal 1021 00:50:58,960 --> 00:50:59,830 gedaan door dit punt. 1022 00:50:59,830 --> 00:51:01,080 Gefeliciteerd, trouwens. 1023 00:51:01,080 --> 00:51:04,560 1024 00:51:04,560 --> 00:51:07,550 >> Voor de camera, mensen zei, dank je. 1025 00:51:07,550 --> 00:51:11,220 Nu, als je niet wilt deze gewoon gebruiken lus, dan PHP eigenlijk ook 1026 00:51:11,220 --> 00:51:13,580 heeft dingen geroepen foreach loops. 1027 00:51:13,580 --> 00:51:22,210 Dus als ik een array van integers, 0 tot en met 8, die zijn opgeslagen in de array psets, 1028 00:51:22,210 --> 00:51:27,290 dan kon ik een foreach lus hebben dat doorloopt elk nummer in psets. 1029 00:51:27,290 --> 00:51:30,640 En toen kon ik het zelfde noemen functioneren acht keer, 1030 00:51:30,640 --> 00:51:31,910 net zoals ik deed voorheen. 1031 00:51:31,910 --> 00:51:36,480 Dus dit voor elke lus is leuk, want je hoeft niet als je niet weet 1032 00:51:36,480 --> 00:51:39,470 de exacte lengte van de array die u hebt, dan met behulp van deze foreach lus 1033 00:51:39,470 --> 00:51:42,800 zal zorgen dat voor je doen. 1034 00:51:42,800 --> 00:51:45,410 >> Dus maakte ik psets als een array. 1035 00:51:45,410 --> 00:51:46,700 Laten we eens kijken naar dat. 1036 00:51:46,700 --> 00:51:51,290 Arrays in PHP zijn grotendeels hetzelfde als degenen die we in C, heb gehad waar 1037 00:51:51,290 --> 00:51:52,960 kunt u een array declareren. 1038 00:51:52,960 --> 00:51:59,200 En hier, kan ik verklaren een lege array en dan bouwen dynamisch met behulp van 1039 00:51:59,200 --> 00:52:00,850 indices als gehele getallen. 1040 00:52:00,850 --> 00:52:04,140 Dus index 0, ik ga slaan een geheel getal genaamd 1. 1041 00:52:04,140 --> 00:52:09,210 Bij index 1 van mijn lijst, ik ga de waarde 2 slaan. 1042 00:52:09,210 --> 00:52:12,670 En op de derde index, maar de tweede nummer, ik ga 1043 00:52:12,670 --> 00:52:14,870 sla het nummer 12. 1044 00:52:14,870 --> 00:52:17,250 >> Nu, dit is prima in dat werkt het werkt goed. 1045 00:52:17,250 --> 00:52:21,310 Maar zeggen het is belangrijk voor mij wat elke index houdt. 1046 00:52:21,310 --> 00:52:24,500 Voor mij, index 0 betekent dat hoe veel katten ik heb. 1047 00:52:24,500 --> 00:52:27,400 En de index 1 betekent hoe veel uilen die ik heb. 1048 00:52:27,400 --> 00:52:29,450 En de volgende betekent hoeveel honden. 1049 00:52:29,450 --> 00:52:34,140 Nou, dan is het aan te geven dat, in plaats van het hebben van te onthouden 0 heeft betrekking op 1050 00:52:34,140 --> 00:52:38,090 katten en 1 tot uilen, kan ik gebruiken associatieve arrays, waardoor 1051 00:52:38,090 --> 00:52:42,260 in plaats van gehele getallen als mijn indices, Ik kan eigenlijk gebruiken snaren. 1052 00:52:42,260 --> 00:52:43,290 >> Dus dit is zeer handig. 1053 00:52:43,290 --> 00:52:47,130 En je hebt eigenlijk gewoon vervangen de gehele getallen met strijkers. 1054 00:52:47,130 --> 00:52:50,074 En daar heb je een associatieve array. 1055 00:52:50,074 --> 00:52:51,930 Yeah. 1056 00:52:51,930 --> 00:52:55,800 >> PUBLIEK: Is er een reden waarom er een underscore voor de tweede 1057 00:52:55,800 --> 00:52:58,750 deel, omdat mijn lijst heeft de array. 1058 00:52:58,750 --> 00:53:01,330 >> ZAMYLA CHAN: De vraag was, is er een reden waarom er een 1059 00:53:01,330 --> 00:53:03,320 underscore tussen mijn en overzicht? 1060 00:53:03,320 --> 00:53:03,610 Nee. 1061 00:53:03,610 --> 00:53:06,878 Dat is gewoon hoe ik het benoemen mijn variabele. 1062 00:53:06,878 --> 00:53:11,670 >> PUBLIEK: Op de eerste lijn, het is een woord. 1063 00:53:11,670 --> 00:53:12,560 >> ZAMYLA CHAN: Mijn excuses. 1064 00:53:12,560 --> 00:53:13,410 Ik zal dat bevestigen. 1065 00:53:13,410 --> 00:53:13,620 Yeah. 1066 00:53:13,620 --> 00:53:15,460 Zij moeten dezelfde variabele naam zijn. 1067 00:53:15,460 --> 00:53:16,710 Goede vangst. 1068 00:53:16,710 --> 00:53:19,640 1069 00:53:19,640 --> 00:53:19,950 OK. 1070 00:53:19,950 --> 00:53:22,610 Dus laten we verder gaan naar een string aaneenschakeling. 1071 00:53:22,610 --> 00:53:27,500 Als ik wilde twee snaren te nemen, dan kan ik ze samenvoegen 1072 00:53:27,500 --> 00:53:28,550 de puntoperator. 1073 00:53:28,550 --> 00:53:32,440 Dus als ik Milo als een voornaam en Banana als een achternaam, dan 1074 00:53:32,440 --> 00:53:35,430 aaneenschakelen met de stip operator en dan beginnen met een spatie tussen 1075 00:53:35,430 --> 00:53:39,210 zal een string dat Milo bevat maken Banaan, die ik dan kan echo of, 1076 00:53:39,210 --> 00:53:41,280 eerder, uit te printen. 1077 00:53:41,280 --> 00:53:44,465 >> Spreken van echo, laten we praten over een paar nuttige - 1078 00:53:44,465 --> 00:53:44,920 oops. 1079 00:53:44,920 --> 00:53:46,030 Het spijt me. 1080 00:53:46,030 --> 00:53:52,920 Een paar handige PHP-functies. 1081 00:53:52,920 --> 00:53:56,240 Dus hebben we het - 1082 00:53:56,240 --> 00:53:57,444 technische problemen. 1083 00:53:57,444 --> 00:53:58,694 Een seconde. 1084 00:53:58,694 --> 00:54:16,960 1085 00:54:16,960 --> 00:54:19,550 Ik stuurde het. 1086 00:54:19,550 --> 00:54:22,320 PowerPoint problemen. 1087 00:54:22,320 --> 00:54:29,200 En we zijn terug met PHP functies. 1088 00:54:29,200 --> 00:54:32,010 1089 00:54:32,010 --> 00:54:35,150 En we zijn terug met PHP functies. 1090 00:54:35,150 --> 00:54:39,890 >> Dus we hebben het nodig functie, waarbij als je pas in een bestand, hier is is gewoon 1091 00:54:39,890 --> 00:54:43,300 een voorbeeld van een bestand Ik zou pas in 1092 00:54:43,300 --> 00:54:47,605 Dan zal dat ook de PHP-code uit dat bestand dat ik aangeven. 1093 00:54:47,605 --> 00:54:49,940 En het zal evalueren dat in 1094 00:54:49,940 --> 00:54:54,450 Dan hebben we ook echo, die is een parallel te printf. 1095 00:54:54,450 --> 00:54:57,710 Exit is een parallel te breken, die het blok van verlaat 1096 00:54:57,710 --> 00:54:58,570 code die je bent binnen 1097 00:54:58,570 --> 00:55:03,180 En dan leeg controleert of een bepaalde variabele is als nietig of nul of 1098 00:55:03,180 --> 00:55:08,482 wat wordt gelijkgesteld met het zijn leeg. 1099 00:55:08,482 --> 00:55:09,438 Yeah. 1100 00:55:09,438 --> 00:55:15,341 >> PUBLIEK: Voor de tekenreekssamenvoegingsoperator operator punt een, in PHP, is dat de 1101 00:55:15,341 --> 00:55:20,158 dezelfde als in JavaScript waar het gebruik de stip voor aaneenschakeling betekent plus? 1102 00:55:20,158 --> 00:55:27,440 Dus voor volledige naam, je kon dollar hebben ondertekenen eerst + en dan + mee? 1103 00:55:27,440 --> 00:55:27,720 >> ZAMYLA CHAN: Yeah. 1104 00:55:27,720 --> 00:55:32,150 Dus de vraag was of in PHP we kan dezelfde tekenreekssamenvoegingsoperator gebruiken 1105 00:55:32,150 --> 00:55:33,890 zoals in JavaScript met de pluspunten. 1106 00:55:33,890 --> 00:55:35,410 En Jozef zal later op ingaan. 1107 00:55:35,410 --> 00:55:36,620 Ik denk dat hij een dia op dat. 1108 00:55:36,620 --> 00:55:37,570 Eigenlijk, is het anders. 1109 00:55:37,570 --> 00:55:41,310 Dus in JavaScript, moet u gebruiken de plus om tekenreeksen samen te voegen. 1110 00:55:41,310 --> 00:55:43,280 En in PHP, moet je Gebruik de operator punt. 1111 00:55:43,280 --> 00:55:44,530 Dus ze zijn anders. 1112 00:55:44,530 --> 00:55:46,680 1113 00:55:46,680 --> 00:55:46,910 >> OK. 1114 00:55:46,910 --> 00:55:49,500 Dus nu dat we allemaal hebben behandeld dit PHP, waar doet het 1115 00:55:49,500 --> 00:55:50,490 echt van pas komen? 1116 00:55:50,490 --> 00:55:54,470 Nou, het is altijd handig als we het kan combineren met onze HTML. 1117 00:55:54,470 --> 00:55:59,550 Dus onze PHP zal ons de kracht geven om HTML-inhoud van een pagina voorafgaand aan veranderen 1118 00:55:59,550 --> 00:56:00,000 het laden. 1119 00:56:00,000 --> 00:56:04,270 Dus op basis van verschillende omstandigheden, meestal de specifieke gebruiker die 1120 00:56:04,270 --> 00:56:07,520 ingelogd, kunnen we weer verschillende informatie. 1121 00:56:07,520 --> 00:56:08,800 Linda, heb je een vraag? 1122 00:56:08,800 --> 00:56:15,510 >> Publiek: Kunt u aaneenschakelen een geheel getal ook? 1123 00:56:15,510 --> 00:56:16,760 >> ZAMYLA CHAN: Ja, dat kan. 1124 00:56:16,760 --> 00:56:19,530 1125 00:56:19,530 --> 00:56:23,270 De vraag was dus als je kunt aaneenschakelen integers of andere 1126 00:56:23,270 --> 00:56:28,920 variable.s nu, gaan we over naar MVC, die is een paradigma dat we in 1127 00:56:28,920 --> 00:56:33,380 pset7 en veel webdesigners gebruiken voor het organiseren van de code in de bestanden 1128 00:56:33,380 --> 00:56:34,490 in hun website. 1129 00:56:34,490 --> 00:56:35,870 M staat voor Model. 1130 00:56:35,870 --> 00:56:41,450 En eigenlijk, model bestanden zal behandelen met interactie met de database. 1131 00:56:41,450 --> 00:56:44,640 Bekijk bestanden, deze betrekking hebben op de esthetiek van de website. 1132 00:56:44,640 --> 00:56:47,550 En de controller handgrepen verzoeken van gebruikers, parseert 1133 00:56:47,550 --> 00:56:49,230 gegevens, doet andere logica. 1134 00:56:49,230 --> 00:56:52,520 >> In pset7, combineerden we het model en de controller. 1135 00:56:52,520 --> 00:56:55,880 En we noemden ze controllers en zet ze in de publieke map. 1136 00:56:55,880 --> 00:57:01,730 En de bestanden bekijken, gebruiken we ze als sjablonen in de templates directory. 1137 00:57:01,730 --> 00:57:07,260 Dus dit diagram vertegenwoordigt hier ook dat dezelfde soort divisie met de 1138 00:57:07,260 --> 00:57:10,510 model en de controller in paars hier op de linker-en 1139 00:57:10,510 --> 00:57:12,770 het uitzicht aan de rechterkant. 1140 00:57:12,770 --> 00:57:16,020 Dus dit is een schema dat sommigen van jullie misschien hebt gezien op Office Hours of 1141 00:57:16,020 --> 00:57:19,130 diagrammen dat we tekenen zoals u werden het uitzoeken van uw PSET. 1142 00:57:19,130 --> 00:57:25,030 >> Hier, in een bepaalde controller, een model controller, hebben wij functies 1143 00:57:25,030 --> 00:57:30,490 die betrekking hebben bevragen SQL database uitvoeren PHP logica. 1144 00:57:30,490 --> 00:57:32,370 Misschien zou je kijkt omhoog een voorraad in Yahoo! 1145 00:57:32,370 --> 00:57:34,590 Financiën. 1146 00:57:34,590 --> 00:57:37,390 Of misschien wil je gewoon controleren om zien of een gebruiker had ingediend een 1147 00:57:37,390 --> 00:57:40,250 vormen al voordat bezocht uw pagina. 1148 00:57:40,250 --> 00:57:43,390 En dan zou je maken een formulier hier. 1149 00:57:43,390 --> 00:57:48,210 Na die vorm was ingediend door de gebruiker, de actie die was 1150 00:57:48,210 --> 00:57:53,470 gespecificeerd in HTML-tag van het formulier zou de pagina geven dat het 1151 00:57:53,470 --> 00:57:55,620 retourneert deze gegevens aan. 1152 00:57:55,620 --> 00:57:59,460 >> Dus al die informatie zou zijn teruggestuurd naar de controller. 1153 00:57:59,460 --> 00:58:02,620 Dan zou je waarschijnlijk een beetje meer te doen logica die uitgevoerd en misschien een paar 1154 00:58:02,620 --> 00:58:06,510 meer query's in de SQL-database en En dan, eindelijk, komen met een mooi 1155 00:58:06,510 --> 00:58:11,930 verpakt set van informatie die u zou passeren in een andere template 1156 00:58:11,930 --> 00:58:13,950 dat weergegeven die informatie. 1157 00:58:13,950 --> 00:58:17,030 Nu, hoe kunnen we eigenlijk verpakken die informatie up? 1158 00:58:17,030 --> 00:58:23,980 Nou, we hebben een functie genaamd Render dat was in de functions.php bestand in 1159 00:58:23,980 --> 00:58:29,950 pset7, waar je pas in de naam van een bestand, de naam van een sjabloon. 1160 00:58:29,950 --> 00:58:32,160 >> En dan heb je ook langs in een associatieve array. 1161 00:58:32,160 --> 00:58:37,150 En zodat associatieve array vertegenwoordigt de verschillende informatiebronnen 1162 00:58:37,150 --> 00:58:39,040 dat u langs wilt komen inch 1163 00:58:39,040 --> 00:58:43,460 Nu, wat is er constant in zijn deze voorbeelden is dat de sleutels of, 1164 00:58:43,460 --> 00:58:47,070 veeleer de sleutels van de associatieve arrays, die zijn wat gaat worden 1165 00:58:47,070 --> 00:58:51,050 wordt constant gehouden door het sjabloon is, omdat het weet het moet 1166 00:58:51,050 --> 00:58:53,990 iets geroepen bericht of opgeroepen naam. 1167 00:58:53,990 --> 00:58:56,940 En dan de dingen op de juiste, de werkelijke waarden, dus in dit geval, wie 1168 00:58:56,940 --> 00:59:00,750 een goede jongen en Milo, die gaan de waarden veranderen zijn 1169 00:59:00,750 --> 00:59:05,610 dat de controller verandert elke keer of gebaseerd op een bepaalde toestand en 1170 00:59:05,610 --> 00:59:07,120 zal passeren dat binnen 1171 00:59:07,120 --> 00:59:12,790 >> Dus hier in sjablonen, zien we dat we worden met behulp van HTML speciale tekens, 1172 00:59:12,790 --> 00:59:16,370 die net in feite betekent dat we willen de peer-snaar te krijgen dat de 1173 00:59:16,370 --> 00:59:17,580 gebruiker zet inch 1174 00:59:17,580 --> 00:59:20,880 En we willen vervangen bericht daar. 1175 00:59:20,880 --> 00:59:26,110 Dus toen we daadwerkelijk bekijken het bestand, de specifieke 1176 00:59:26,110 --> 00:59:28,700 informatie wordt doorgegeven inch 1177 00:59:28,700 --> 00:59:33,850 Merk op dat de sleutel hoe maken de werken dat de sleutels van de associatieve 1178 00:59:33,850 --> 00:59:37,170 arrays, die worden variabel namen hier. 1179 00:59:37,170 --> 00:59:40,720 En zo de waarden van die toets in de associatieve array wordt dan de 1180 00:59:40,720 --> 00:59:41,970 waarde van de variabele. 1181 00:59:41,970 --> 00:59:44,800 1182 00:59:44,800 --> 00:59:46,040 >> Nu, laten we overgaan tot SQL. 1183 00:59:46,040 --> 00:59:48,010 Het staat voor Structured Query Language. 1184 00:59:48,010 --> 00:59:50,460 En dus dit is gewoon een programmeertaal taal ontworpen 1185 00:59:50,460 --> 00:59:51,880 voor het beheren van databases. 1186 00:59:51,880 --> 00:59:56,860 En het kwam goed van pas voor ons in onze pset7 finance website. 1187 00:59:56,860 --> 01:00:00,510 In wezen, het is gewoon een makkelijke manier om bijhouden en beheren van objecten en tabellen 1188 01:00:00,510 --> 01:00:02,070 en koppelen aan elkaar. 1189 01:00:02,070 --> 01:00:06,860 Nu, denk aan uw SQL-database in principe als een Excel-bestand, misschien, 1190 01:00:06,860 --> 01:00:10,040 met meerdere tabbladen vellen. 1191 01:00:10,040 --> 01:00:13,820 >> Dus je zou kunnen meerdere tafels hebben, misschien dat elkaar verbonden. 1192 01:00:13,820 --> 01:00:19,420 En net als Excel, hebben we veel van de functionaliteit die we willen. 1193 01:00:19,420 --> 01:00:22,300 Zo kunnen geselecteerde bepaalde rijen. 1194 01:00:22,300 --> 01:00:24,110 We kunnen informatie invoegen. 1195 01:00:24,110 --> 01:00:25,560 We kunnen rijen updaten. 1196 01:00:25,560 --> 01:00:27,440 En we kunnen ook dingen verwijderen. 1197 01:00:27,440 --> 01:00:30,920 1198 01:00:30,920 --> 01:00:36,560 >> De SQL select werken door het selecteren van rijen of een rij van bepaalde kolommen uit een 1199 01:00:36,560 --> 01:00:39,640 database die aan een bepaalde criteria die u aangeeft. 1200 01:00:39,640 --> 01:00:44,930 Dus hier als ik zie select * from wizards waar huis = Ravenklauw, dan 1201 01:00:44,930 --> 01:00:48,340 Ik selecteren *, wat betekent dat ik ben het selecteren van elke kolom in dat 1202 01:00:48,340 --> 01:00:56,340 rij van de tabel wizards maar alleen als de kolom huis gelijk Ravenklauw. 1203 01:00:56,340 --> 01:00:57,840 Nu, dit is pure of SQL. 1204 01:00:57,840 --> 01:01:02,680 Dus als ik ging in PHPmyadmin, dat is de specifieke manier die we gebruiken om te beheren 1205 01:01:02,680 --> 01:01:07,040 onze SQL-databases, dan kon ik steek dat in de PHPmyadmin website. 1206 01:01:07,040 --> 01:01:08,290 En dat zou uitvoeren. 1207 01:01:08,290 --> 01:01:11,280 >> Maar we eigenlijk willen doen dat op de PHP kant. 1208 01:01:11,280 --> 01:01:12,580 Dus hoe kunnen we dat doen? 1209 01:01:12,580 --> 01:01:20,180 Nou, maken we gebruik van de query-functie, die voert in feite dat SQL-query. 1210 01:01:20,180 --> 01:01:21,830 Met behulp van? 1211 01:01:21,830 --> 01:01:25,850 als plaatsaanduiding, kunnen we overgaan in bepaalde waarden onze tekenreeks die we 1212 01:01:25,850 --> 01:01:26,920 wilt vervangen. 1213 01:01:26,920 --> 01:01:32,110 Dus misschien ben ik het opslaan van verschillende waarden in de curr_house die 1214 01:01:32,110 --> 01:01:34,400 vertegenwoordigt de huidige woning dat ik ga door. 1215 01:01:34,400 --> 01:01:39,040 Dus ik kan doorgeven dat in als een tijdelijke aanduiding met het vraagteken. 1216 01:01:39,040 --> 01:01:43,290 En dan zal ik in principe voeren de hetzelfde als ik eerder deed, behalve 1217 01:01:43,290 --> 01:01:45,550 nu ben ik in PHP. 1218 01:01:45,550 --> 01:01:51,300 >> En vraag zal terugkeren een associatieve array. 1219 01:01:51,300 --> 01:01:53,470 En ik ga het op te slaan in rijen. 1220 01:01:53,470 --> 01:01:56,880 Nu kan vraag altijd mislukken. 1221 01:01:56,880 --> 01:02:02,870 Misschien is de SQL-query kan niet worden uitgevoerd omdat de tabel niet bestond. 1222 01:02:02,870 --> 01:02:04,310 Of misschien, de kolom niet bestond. 1223 01:02:04,310 --> 01:02:05,400 Er ging iets mis. 1224 01:02:05,400 --> 01:02:08,170 Nou, in dat geval zult u wilt maken ervoor dat u controleren of de 1225 01:02:08,170 --> 01:02:09,700 vraag false is. 1226 01:02:09,700 --> 01:02:15,590 En dat is met behulp van de drievoudige is gelijk aan de werking daar. 1227 01:02:15,590 --> 01:02:19,660 >> En dan verontschuldig ik, dat is een andere CS50 functie, passeren in een bericht. 1228 01:02:19,660 --> 01:02:23,435 En als je kijkt naar excuses, al werkelijk doet is de render apology.php. 1229 01:02:23,435 --> 01:02:26,100 1230 01:02:26,100 --> 01:02:26,410 Yeah. 1231 01:02:26,410 --> 01:02:29,630 >> Publiek: Kunt u wat dat uitleggen ster doet tussen selecteren en uit? 1232 01:02:29,630 --> 01:02:30,710 >> ZAMYLA CHAN: Ja, absoluut. 1233 01:02:30,710 --> 01:02:35,220 Dus de ster in tussen selecteren en uit betekent dat ik wil de hele selecteren 1234 01:02:35,220 --> 01:02:37,440 hele rij van mijn tafel. 1235 01:02:37,440 --> 01:02:41,900 Ik kon select heb aangegeven naam, jaar, huis. 1236 01:02:41,900 --> 01:02:46,160 En ik zou alleen maar die drie kolommen in mijn tabel. 1237 01:02:46,160 --> 01:02:51,560 Maar als ik zeg select *, dan zal ik krijg alles in die kolom. 1238 01:02:51,560 --> 01:02:53,760 Dan ga ik je gaan in de eerste de rug. 1239 01:02:53,760 --> 01:02:57,656 >> PUBLIEK: Dus dit is nog steeds in SQL, toch? 1240 01:02:57,656 --> 01:02:59,610 Is deze query of is dit PHP? 1241 01:02:59,610 --> 01:03:00,550 >> ZAMYLA CHAN: We zijn in een query. 1242 01:03:00,550 --> 01:03:01,940 Dus dit is in PHP. 1243 01:03:01,940 --> 01:03:06,280 Dus met behulp van de PHP functie query, we zijn het uitvoeren van een SQL-query. 1244 01:03:06,280 --> 01:03:11,988 1245 01:03:11,988 --> 01:03:15,364 >> PUBLIEK: Is er iets in SQL hoofdlettergevoelig, zoals selecteren 1246 01:03:15,364 --> 01:03:17,834 of wizards of huis? 1247 01:03:17,834 --> 01:03:20,050 >> ZAMYLA CHAN: Is er iets in SQL hoofdlettergevoelig? 1248 01:03:20,050 --> 01:03:21,760 Ik geloof het wel, ja. 1249 01:03:21,760 --> 01:03:24,620 Ik geloof dat SELECT en FROM En waar zijn hoofdlettergevoelig. 1250 01:03:24,620 --> 01:03:25,535 Nee? 1251 01:03:25,535 --> 01:03:27,500 >> ROB BOWDEN: Dus, het is het tegenovergestelde. 1252 01:03:27,500 --> 01:03:32,030 De kolom namen en de tafel middelen, al deze zijn hoofdlettergevoelig. 1253 01:03:32,030 --> 01:03:35,470 Maar een van de MySQL sleutelwoorden, zoals SELECT, FROM en WHERE, die zijn niet 1254 01:03:35,470 --> 01:03:36,140 hoofdlettergevoelig. 1255 01:03:36,140 --> 01:03:36,420 OK. 1256 01:03:36,420 --> 01:03:37,780 Dus het tegenovergestelde van wat ik zei. 1257 01:03:37,780 --> 01:03:40,420 Dus al de MySQL zoekwoorden - 1258 01:03:40,420 --> 01:03:42,670 kiezen, uit, waar - die zijn niet hoofdlettergevoelig. 1259 01:03:42,670 --> 01:03:44,630 Maar alles is. 1260 01:03:44,630 --> 01:03:45,210 OK. 1261 01:03:45,210 --> 01:03:46,500 Je aan de voorkant. 1262 01:03:46,500 --> 01:03:52,041 >> PUBLIEK: Als ik rijen zijn $ in termen van meer dan een rij, betekent dat dan is 1263 01:03:52,041 --> 01:03:53,640 net wordt een associatieve array? 1264 01:03:53,640 --> 01:03:59,550 >> ZAMYLA CHAN: Dus de vraag was of rijen heeft meer dan een rij in, doet 1265 01:03:59,550 --> 01:04:01,800 het uitgegroeid tot een associatieve array? 1266 01:04:01,800 --> 01:04:05,680 Het is dus een reeks associatieve arrays reeds. 1267 01:04:05,680 --> 01:04:10,730 Dus zelfs als er maar een rij geretourneerd, dan zou je moeten gaan naar 1268 01:04:10,730 --> 01:04:12,690 index 0 van dat resultaat. 1269 01:04:12,690 --> 01:04:15,316 En dan zou je die eerste rij. 1270 01:04:15,316 --> 01:04:17,482 Ja, Belinda? 1271 01:04:17,482 --> 01:04:21,258 >> PUBLIEK: Wanneer u === gebruiken, is dit de enige keer? 1272 01:04:21,258 --> 01:04:22,210 Of zijn er nog anderen? 1273 01:04:22,210 --> 01:04:26,815 >> ZAMYLA CHAN: Dus in dit geval, === is een vergelijking tussen soorten. 1274 01:04:26,815 --> 01:04:29,870 1275 01:04:29,870 --> 01:04:34,050 Sorry. === Is een vergelijking dat vergelijkt het typen. 1276 01:04:34,050 --> 01:04:37,620 En dan == vergelijkt in alle soorten. 1277 01:04:37,620 --> 01:04:41,620 >> Publiek: Kunt u uitleggen wat rijen in deze situatie? 1278 01:04:41,620 --> 01:04:45,120 Is het rij gegevens? 1279 01:04:45,120 --> 01:04:48,100 >> ZAMYLA CHAN: In de volgende dia, ik ben ga uitleggen wat rijen is. 1280 01:04:48,100 --> 01:04:49,890 Dus als je het niet erg houden korting op dat. 1281 01:04:49,890 --> 01:04:50,620 En dan moet je in de rug? 1282 01:04:50,620 --> 01:04:54,699 >> Publiek: Voor functies zoals query, maken en zich verontschuldigen [onverstaanbaar]? 1283 01:04:54,699 --> 01:04:59,050 1284 01:04:59,050 --> 01:05:03,050 >> ZAMYLA CHAN: De vraag was of deze functies - query, verontschuldigen, 1285 01:05:03,050 --> 01:05:04,510 en maken - 1286 01:05:04,510 --> 01:05:05,930 zijn gebruikelijk in PHP. 1287 01:05:05,930 --> 01:05:09,460 Dit zijn degenen die CS50 schreef voor pset7. 1288 01:05:09,460 --> 01:05:09,910 En Jay? 1289 01:05:09,910 --> 01:05:15,333 >> PUBLIEK: Als u nodig hebt om te zeggen $ _SESSION, Is dat alleen voor ID? 1290 01:05:15,333 --> 01:05:17,310 Of zou je dat hier gezegd? 1291 01:05:17,310 --> 01:05:23,440 >> ZAMYLA CHAN: Dus de vraag is, wanneer we $ _SESSION gebruiken, dat was een specifieke 1292 01:05:23,440 --> 01:05:25,290 globale variabele die we gebruiken. 1293 01:05:25,290 --> 01:05:32,080 Hier deze variabele gaat zijn lokaal tot onze functie. 1294 01:05:32,080 --> 01:05:36,588 Dus we zijn gewoon te verklaren een nieuwe variabele. 1295 01:05:36,588 --> 01:05:38,460 >> PUBLIEK: Hoe wordt verontschuldigen geïmplementeerd? 1296 01:05:38,460 --> 01:05:40,960 >> ZAMYLA CHAN: De vraag was, hoe wordt apologize geïmplementeerd? 1297 01:05:40,960 --> 01:05:44,180 En ik denk dat dit is eigenlijk een vrij goede praktijken voor jullie om te gaan 1298 01:05:44,180 --> 01:05:49,260 de sectie functions.php en kijk naar verontschuldigen en zie hoe je zou kunnen hebben 1299 01:05:49,260 --> 01:05:50,670 gedaan het zelf. 1300 01:05:50,670 --> 01:05:55,620 Dus ik kan laat ik aan u, maar gewoon zeggen dat als je kijkt naar excuses, 1301 01:05:55,620 --> 01:06:02,110 dan is de boodschap die u meeneemt ingediend om zich te verontschuldigen, en dan is het 1302 01:06:02,110 --> 01:06:06,570 maakt dat bericht. 1303 01:06:06,570 --> 01:06:08,240 Nog meer vragen? 1304 01:06:08,240 --> 01:06:08,710 Ik hou van vragen. 1305 01:06:08,710 --> 01:06:09,555 Dus houd ze komen. 1306 01:06:09,555 --> 01:06:11,888 >> PUBLIEK: [onverstaanbaar] 1307 01:06:11,888 --> 01:06:13,840 echo of afdrukken er? 1308 01:06:13,840 --> 01:06:15,900 >> ZAMYLA CHAN: De vraag was, konden we niet alleen hebben gezet 1309 01:06:15,900 --> 01:06:17,000 echo of druk daar. 1310 01:06:17,000 --> 01:06:19,710 Dus dat zou iets gedaan hebben iets anders. 1311 01:06:19,710 --> 01:06:23,750 Dat zou vraag zijn afgedrukt niet in die - 1312 01:06:23,750 --> 01:06:27,420 goed, op dit moment, we zijn eigenlijk onze controller. 1313 01:06:27,420 --> 01:06:30,350 Dus we eigenlijk niet hebben HTML set hier boven. 1314 01:06:30,350 --> 01:06:34,946 Apologize door rendering apologize.php eigenlijk je wordt omgeleid naar apology.php. 1315 01:06:34,946 --> 01:06:39,560 1316 01:06:39,560 --> 01:06:42,200 OK. 1317 01:06:42,200 --> 01:06:45,880 >> Dus nu, laten we gaan op naar het adres van de vraag van eerder over wat 1318 01:06:45,880 --> 01:06:47,330 echt rijen. 1319 01:06:47,330 --> 01:06:51,960 Nou, vraag terug een array van rijen. 1320 01:06:51,960 --> 01:06:55,020 En elke rij wordt vertegenwoordigd door een associatieve array. 1321 01:06:55,020 --> 01:07:02,840 Dus als ik enkele SQL query en heeft uitgevoerd Ik heb het resultaat opgeslagen in rijen, dan 1322 01:07:02,840 --> 01:07:07,850 met behulp van een foreach lus, dan de array naam is de eerste die daar - rijen. 1323 01:07:07,850 --> 01:07:13,170 En dan ga ik bellen elke rij in daar $ rij. 1324 01:07:13,170 --> 01:07:20,060 >> Dus itereren over dat, ik kan dan toegang kolomnaam de gegeven rij's, 1325 01:07:20,060 --> 01:07:22,340 jaar kolom en huis kolom. 1326 01:07:22,340 --> 01:07:28,010 Merk op dat ik niet in staat zou zijn geweest Dit doen met rijen, omdat rijen index 1327 01:07:28,010 --> 01:07:29,290 naam bestaat niet. 1328 01:07:29,290 --> 01:07:31,970 Rijen is gewoon een array van associatieve arrays. 1329 01:07:31,970 --> 01:07:34,870 Dus heb je twee niveaus daar. 1330 01:07:34,870 --> 01:07:37,170 Zodra u de array van rijen, je moet krijgen in dat. 1331 01:07:37,170 --> 01:07:39,110 En dan hebt u toegang tot de kolommen. 1332 01:07:39,110 --> 01:07:41,636 Wist dat duidelijk maken? 1333 01:07:41,636 --> 01:07:42,520 Ja, aan de voorkant? 1334 01:07:42,520 --> 01:07:45,490 >> PUBLIEK: [onverstaanbaar] openen beugels voor [onverstaanbaar]? 1335 01:07:45,490 --> 01:07:46,220 >> ZAMYLA CHAN: Pardon? 1336 01:07:46,220 --> 01:07:49,740 >> Publiek: De open haakjes. 1337 01:07:49,740 --> 01:07:52,420 >> ZAMYLA CHAN: Deze hier? 1338 01:07:52,420 --> 01:07:58,520 Dat is waardoor ik onder andere die variabele. 1339 01:07:58,520 --> 01:07:58,670 Yeah. 1340 01:07:58,670 --> 01:08:01,900 >> PUBLIEK: Wanneer u afdrukt, bent u afdrukken naar de HTML-code? 1341 01:08:01,900 --> 01:08:03,110 >> ZAMYLA CHAN: Ja. 1342 01:08:03,110 --> 01:08:07,720 Wanneer ik, dit is hier binnen mijn sjabloon, zodat 1343 01:08:07,720 --> 01:08:10,310 mijn mening van MVC methode. 1344 01:08:10,310 --> 01:08:12,750 Dus ik ben van afdrukken in de HTML. 1345 01:08:12,750 --> 01:08:16,670 >> Publiek: Dus als we gingen naar ontwikkelaar gereedschap na het uitvoeren van deze, konden we 1346 01:08:16,670 --> 01:08:17,160 die daadwerkelijk in de code? 1347 01:08:17,160 --> 01:08:18,410 >> ZAMYLA CHAN: Dat is een geweldig vraag, ja. 1348 01:08:18,410 --> 01:08:22,359 Dus als je ging naar de developer tools in Firefox het gebruik van Firebug of 1349 01:08:22,359 --> 01:08:26,109 Chroom, dan ja, je kon zie de specifieke HTML. 1350 01:08:26,109 --> 01:08:28,470 Dus het zou $ row ["Naam"] niet te laten zien. 1351 01:08:28,470 --> 01:08:32,524 Het zou tonen welke naam is in die rij. 1352 01:08:32,524 --> 01:08:36,268 >> PUBLIEK: Gewoon een algemeen probleem, wat zijn tr en td gedefinieerd als? 1353 01:08:36,268 --> 01:08:37,672 Waarom zouden we [onverstaanbaar]? 1354 01:08:37,672 --> 01:08:41,850 1355 01:08:41,850 --> 01:08:44,814 >> ZAMYLA CHAN: Tabel rij tr, tabel dan td kolom. 1356 01:08:44,814 --> 01:08:48,060 1357 01:08:48,060 --> 01:08:49,310 OK. 1358 01:08:49,310 --> 01:08:55,771 1359 01:08:55,771 --> 01:08:56,835 >> Publiek: Ja, het is tabelgegevens. 1360 01:08:56,835 --> 01:08:58,770 >> ZAMYLA CHAN: Tabel gegevens. 1361 01:08:58,770 --> 01:08:59,894 Yeah. 1362 01:08:59,894 --> 01:09:08,670 >> Publiek: Het is een rij waarin de rij beschouwd als een column? 1363 01:09:08,670 --> 01:09:08,910 >> ZAMYLA CHAN: Sorry. 1364 01:09:08,910 --> 01:09:10,570 Kunt u dat herhalen? 1365 01:09:10,570 --> 01:09:14,450 >> Publiek: Hoe zou u rijen te visualiseren? 1366 01:09:14,450 --> 01:09:16,310 >> ZAMYLA CHAN: Hoe zou je visualiseren rijen in wat voor manier? 1367 01:09:16,310 --> 01:09:21,796 Heb je het over deze rijen hier of de tr rijen? 1368 01:09:21,796 --> 01:09:22,630 >> Publiek: De rijen. 1369 01:09:22,630 --> 01:09:25,229 >> ZAMYLA CHAN: Deze rijen hier? 1370 01:09:25,229 --> 01:09:28,620 Ik zou dit te visualiseren als Ik mijn query uit te voeren. 1371 01:09:28,620 --> 01:09:38,729 En het zegt, OK, ik ofwel 0 tot n bedrag van de rijen die aan de criteria 1372 01:09:38,729 --> 01:09:40,510 dat je had opgevraagd. 1373 01:09:40,510 --> 01:09:43,740 Dus ik heb een aantal aantal rijen. 1374 01:09:43,740 --> 01:09:51,450 Dus rijen, de $ rijen, slaat elk een van die rijen in een array. 1375 01:09:51,450 --> 01:09:58,110 Dus zelfs als het is gewoon een van hen, het is nog een reeks rijen die overeenkomen met het. 1376 01:09:58,110 --> 01:10:03,010 >> Dus, bijvoorbeeld, is net als toen u opgehaald 1377 01:10:03,010 --> 01:10:05,390 de cache van de gebruikers. 1378 01:10:05,390 --> 01:10:10,810 En de criteria die er was waar ID is gelijk aan de sessie-ID. 1379 01:10:10,810 --> 01:10:14,250 Er is echt maar een rij die zou kunnen overeenkomen dat. 1380 01:10:14,250 --> 01:10:18,960 Maar nog steeds rijen net terug een rij. 1381 01:10:18,960 --> 01:10:22,620 Dus je zou moeten gaan naar rijen, index 0, index cache 1382 01:10:22,620 --> 01:10:26,195 daadwerkelijk naar uw cache. 1383 01:10:26,195 --> 01:10:29,650 >> PUBLIEK: Is de printfunctie in echo hetzelfde? 1384 01:10:29,650 --> 01:10:30,670 >> ZAMYLA CHAN: Ja. 1385 01:10:30,670 --> 01:10:31,190 Ja. 1386 01:10:31,190 --> 01:10:33,304 Print een echo van hetzelfde. 1387 01:10:33,304 --> 01:10:42,400 >> PUBLIEK: Is de foreach lus de enige manier om de index in rijen? 1388 01:10:42,400 --> 01:10:46,110 >> ZAMYLA CHAN: Is een foreach lus de enige manier waarop je kunt 1389 01:10:46,110 --> 01:10:47,030 doorloopt rijen? 1390 01:10:47,030 --> 01:10:47,180 Nee. 1391 01:10:47,180 --> 01:10:51,000 U kunt ook gebruik maken van een lus, mits dat jij de lengte 1392 01:10:51,000 --> 01:10:53,024 van de array van de rij. 1393 01:10:53,024 --> 01:10:58,500 >> Publiek: Kunt u er toegang toe met behulp van een rij als [onverstaanbaar]? 1394 01:10:58,500 --> 01:11:01,640 >> ZAMYLA CHAN: Dus je hebt geen toegang tot het alleen met behulp van rij als je niet beschikt over een 1395 01:11:01,640 --> 01:11:05,160 foreach lus mits u niet hebt gedeclareerd rij. 1396 01:11:05,160 --> 01:11:08,150 1397 01:11:08,150 --> 01:11:09,660 Ja. 1398 01:11:09,660 --> 01:11:10,810 Ja, in het wit. 1399 01:11:10,810 --> 01:11:13,990 >> PUBLIEK: Dus wat doe tr en td doen? 1400 01:11:13,990 --> 01:11:16,790 >> ZAMYLA CHAN: So tr en td zijn HTML-tags. 1401 01:11:16,790 --> 01:11:19,590 tr geeft het begin van een tabel rij. 1402 01:11:19,590 --> 01:11:26,625 En elke td geeft een nieuwe tabel kolom gegevens. 1403 01:11:26,625 --> 01:11:32,275 >> PUBLIEK: Voor een visuele weergave van wat een rij is net als, stel je de SQL, hoe 1404 01:11:32,275 --> 01:11:33,510 ze een rij. 1405 01:11:33,510 --> 01:11:35,980 [Onverstaanbaar]. 1406 01:11:35,980 --> 01:11:36,390 >> ZAMYLA CHAN: Yeah. 1407 01:11:36,390 --> 01:11:37,630 Dat is een goed punt. 1408 01:11:37,630 --> 01:11:41,510 U kunt rijen visualiseren als gewoon zoals in een Excel-tabel, maar 1409 01:11:41,510 --> 01:11:44,540 de lijst van de rijen. 1410 01:11:44,540 --> 01:11:46,870 OK. 1411 01:11:46,870 --> 01:11:47,230 Oke. 1412 01:11:47,230 --> 01:11:50,740 Dus nu dat we weg zijn dan selecteer, indien er zijn niet meer vragen, we zullen 1413 01:11:50,740 --> 01:11:52,970 gaan over naar insert. 1414 01:11:52,970 --> 01:11:58,220 Dus als ik wilde invoegen in een aantal tafel en steek bepaalde kolom 1415 01:11:58,220 --> 01:12:02,320 waarden, kon ik mezelf te voegen in Ravenclaw in jaar 7. 1416 01:12:02,320 --> 01:12:07,245 Maar soms zijn er misschien duplicaat waarden, zoals we zagen in pset7 toen we 1417 01:12:07,245 --> 01:12:09,240 waren bezig onze portfolio. 1418 01:12:09,240 --> 01:12:15,610 >> Dus in dit geval, we willen ON gebruiken Dubbele sleutel UPDATE, zodat we niet 1419 01:12:15,610 --> 01:12:18,280 slaan meerdere rijen met dezelfde waarde, maar veeleer bijwerken. 1420 01:12:18,280 --> 01:12:21,780 1421 01:12:21,780 --> 01:12:25,560 Dan hebben we eigenlijk update dat is niet een insert. 1422 01:12:25,560 --> 01:12:30,100 Het is gewoon een update waar je update in een bepaalde tabel met een bepaalde 1423 01:12:30,100 --> 01:12:34,403 criteria en dan, ten slotte, verwijderen, die wel een zeer vergelijkbare zaak. 1424 01:12:34,403 --> 01:12:40,200 >> Publiek: Kunt u in het kort gaan over de dubbele sleutel? 1425 01:12:40,200 --> 01:12:40,850 >> ZAMYLA CHAN: Yeah. 1426 01:12:40,850 --> 01:12:48,340 Wezen hier, ik heb INSERT INTO gringotts, is, galjoenen, deze waarden. 1427 01:12:48,340 --> 01:12:56,900 Maar ID, vermoedelijk, is een unieke sleutel waarde opgericht in MySQL tabel. 1428 01:12:56,900 --> 01:13:06,750 Dus als ik al die ID ingesteld, dan kan ik niet een land toevoegen. 1429 01:13:06,750 --> 01:13:10,961 Dus als het nog niet bestaat, dan heb ik bij te werken. 1430 01:13:10,961 --> 01:13:16,040 1431 01:13:16,040 --> 01:13:17,722 In het midden in het wit. 1432 01:13:17,722 --> 01:13:21,570 >> PUBLIEK: Dus invoegen, bijwerken, verwijderen, en selecteer, zijn die allemaal beschikbaar 1433 01:13:21,570 --> 01:13:22,875 lokaal [onverstaanbaar]? 1434 01:13:22,875 --> 01:13:27,320 1435 01:13:27,320 --> 01:13:29,630 >> ZAMYLA CHAN: Dus wilt invoegen, update, delete, en 1436 01:13:29,630 --> 01:13:31,120 selecteren, zijn alle SQL queries. 1437 01:13:31,120 --> 01:13:34,970 Dus wanneer u gebruik maakt van SQL, je moet die beschikbaar zijn. 1438 01:13:34,970 --> 01:13:38,226 1439 01:13:38,226 --> 01:13:40,706 >> PUBLIEK: Terug naar het verleden quizzen - 1440 01:13:40,706 --> 01:13:44,178 er was een vraag die behandeld als je een tafel had en wilde 1441 01:13:44,178 --> 01:13:52,610 Steek testscores in een en je plaatst uw naam dus het zal je niet teleurstellen 1442 01:13:52,610 --> 01:13:54,594 [Onverstaanbaar] van je vriend testscore. 1443 01:13:54,594 --> 01:13:59,060 Hoe zou je dat doen met insert? 1444 01:13:59,060 --> 01:14:02,490 >> ZAMYLA CHAN: Dus de vraag ging over een eerdere middellange termijn vraag. 1445 01:14:02,490 --> 01:14:04,320 Ik ben niet op de hoogte van welke men het nu is. 1446 01:14:04,320 --> 01:14:06,790 Dus misschien later, als je wilt komen en laat me, dan kan ik 1447 01:14:06,790 --> 01:14:08,155 zeker geven u tips. 1448 01:14:08,155 --> 01:14:11,250 1449 01:14:11,250 --> 01:14:15,460 Maar het spreken van het plaatsen van dingen, zoals het nemen van iemands score wanneer u 1450 01:14:15,460 --> 01:14:18,800 mag niet, laten we praten over SQL injectie aanvallen. 1451 01:14:18,800 --> 01:14:22,050 Dus een SQL-injectie aanval is in wezen waar iemand neemt 1452 01:14:22,050 --> 01:14:27,680 voordeel van het lage beveiligingsniveau van de manier die u neemt in data. 1453 01:14:27,680 --> 01:14:35,660 >> Dus hier, net als in CS50 financiën, toen we ingelogd, kunnen we invoeren in een 1454 01:14:35,660 --> 01:14:39,510 gebruikersnaam in het login formulier, het eerste tekstvak en 1455 01:14:39,510 --> 01:14:41,570 voer dan een wachtwoord. 1456 01:14:41,570 --> 01:14:45,610 Misschien is onze PHP-code kan zien zoiets als dit, waar $ username 1457 01:14:45,610 --> 01:14:51,410 is het post-gegevens gebruikersnaam en wachtwoord is post-gegevens vergeten. 1458 01:14:51,410 --> 01:14:55,110 En dan hebben we gewoon uitvoeren onze vraag, zeg, OK, goed, onze vraag gaat 1459 01:14:55,110 --> 01:14:57,990 kiezen uit onze gebruikers, waar de gebruikersnaam is het 1460 01:14:57,990 --> 01:14:58,970 degene die ze ingediend. 1461 01:14:58,970 --> 01:15:06,870 En het wachtwoord is het wachtwoord, betekent dat de wachtwoorden overeenkomen. 1462 01:15:06,870 --> 01:15:12,670 >> Nu, wat als plaats van daadwerkelijk het indienen van een werkelijke wachtwoord, zoals 1463 01:15:12,670 --> 01:15:16,850 12345 en gissen naar riek die zegt wachtwoord en proberen te hacken hun 1464 01:15:16,850 --> 01:15:21,460 rekening, wat als plaats ze dit voorgelegd. 1465 01:15:21,460 --> 01:15:24,380 Ze kan misschien intypen een gok op een wachtwoord. 1466 01:15:24,380 --> 01:15:30,480 En dan zouden ze klaar zijn de citaat typ of 1 = 1. 1467 01:15:30,480 --> 01:15:35,160 Dat zou rechtstreeks in de SQL-tempo Vragen aan ongeveer zo uitzien. 1468 01:15:35,160 --> 01:15:38,200 Selecteer van gebruikers waarbij gebruikersnaam = Tanden en wachtwoord 1469 01:15:38,200 --> 01:15:41,450 gelijk lelie of 1 = 1. 1470 01:15:41,450 --> 01:15:45,450 >> Dus of het wachtwoord heeft corrigeren of 1 = 1 is, 1471 01:15:45,450 --> 01:15:47,870 dat is altijd waar. 1472 01:15:47,870 --> 01:15:52,780 Dus in dit geval, in principe, een gebruiker kan profiteren van deze en gewoon inloggen 1473 01:15:52,780 --> 01:15:55,240 zichzelf in en hack iemands account. 1474 01:15:55,240 --> 01:15:58,950 Dus dat is de reden waarom we willen vermijden iemand hebben om dit te doen. 1475 01:15:58,950 --> 01:16:03,890 Maar gelukkig, de query functie van passeren in de tijdelijke aanduidingen zal nemen 1476 01:16:03,890 --> 01:16:04,800 verzorgen dit voor u. 1477 01:16:04,800 --> 01:16:08,570 Ook zul je meestal nooit meer wilt om de wachtwoorden daadwerkelijk indienen 1478 01:16:08,570 --> 01:16:09,310 zelf. 1479 01:16:09,310 --> 01:16:14,115 Daarom hebben we hash of gecodeerd ze in CS50 financiën. 1480 01:16:14,115 --> 01:16:17,553 >> Publiek: Het verleden quiz gesproken over MySQL ontsnapping snaren. 1481 01:16:17,553 --> 01:16:21,800 Moeten we zorgen over te maken? 1482 01:16:21,800 --> 01:16:22,670 >> ZAMYLA CHAN: Dat is een goede vraag. 1483 01:16:22,670 --> 01:16:29,050 De MySQL ontsnapping snaren is zeker een functie die is gebruikt in onze zoekopdracht. 1484 01:16:29,050 --> 01:16:30,420 Maar zeker kijken naar dat. 1485 01:16:30,420 --> 01:16:32,950 Ik zou zeggen dat is eerlijk spel om te weten dat je zou moeten noemen 1486 01:16:32,950 --> 01:16:34,370 functioneren op een koord. 1487 01:16:34,370 --> 01:16:35,245 Ja, Belinda? 1488 01:16:35,245 --> 01:16:38,606 >> Publiek: Hoe weet je wanneer het enkele aanhalingstekens of dubbele aanhalingstekens? 1489 01:16:38,606 --> 01:16:43,516 En ook, ik voel me als in collegezaal u zei iets over het niet hebben 1490 01:16:43,516 --> 01:16:48,426 de [onverstaanbaar] of iets of de tweede single citaat aan het eind. 1491 01:16:48,426 --> 01:16:56,407 1492 01:16:56,407 --> 01:17:00,825 Ik denk dat hij opgemerkt in lezing die je hoort te apostrof 1 hebben 1493 01:17:00,825 --> 01:17:04,290 en dan niet apostrof hebben of zoiets. 1494 01:17:04,290 --> 01:17:05,540 >> PUBLIEK: [onverstaanbaar]. 1495 01:17:05,540 --> 01:17:14,860 1496 01:17:14,860 --> 01:17:18,657 >> Publiek: Het ding is de laatste single citaat in er in die tweede doos 1497 01:17:18,657 --> 01:17:19,391 mag er niet zijn. 1498 01:17:19,391 --> 01:17:21,840 [Onverstaanbaar] 1499 01:17:21,840 --> 01:17:26,730 Want als je dat laatste single nemen citeer uit en match deze voor de inhoud 1500 01:17:26,730 --> 01:17:30,522 waar het wachtwoord is, als je dat query, er is een enkele quote op 1501 01:17:30,522 --> 01:17:31,340 het einde reeds. 1502 01:17:31,340 --> 01:17:36,580 U wilt dat enkele quote te gebruiken als degene die het een gezicht 1503 01:17:36,580 --> 01:17:37,574 [Onverstaanbaar]. 1504 01:17:37,574 --> 01:17:42,820 Dus wat is eigenlijk in die tekst doos moet niet hebben dat. 1505 01:17:42,820 --> 01:17:44,070 >> ZAMYLA CHAN: Ik zal dat veranderen. 1506 01:17:44,070 --> 01:17:56,490 1507 01:17:56,490 --> 01:17:56,880 OK. 1508 01:17:56,880 --> 01:18:00,435 Als er geen vragen, dan zal ik geef het dan aan Jozef te praten 1509 01:18:00,435 --> 01:18:04,332 over JavaScript, et cetera. 1510 01:18:04,332 --> 01:18:09,540 >> [Applaus] 1511 01:18:09,540 --> 01:18:11,660 >> JOSEPH ONG: Dus we draaien een beetje achter. 1512 01:18:11,660 --> 01:18:13,280 Dus als je moet vertrekken, dat is OK. 1513 01:18:13,280 --> 01:18:16,540 Maar we vragen dat je naar beneden houd uw hoofd als je in het midden, zodat je 1514 01:18:16,540 --> 01:18:19,560 hoeft de camera niet te blokkeren en u gebruikt de achteruitgang als je moet. 1515 01:18:19,560 --> 01:18:25,010 1516 01:18:25,010 --> 01:18:26,306 Ik ben Joseph trouwens. 1517 01:18:26,306 --> 01:18:27,556 Hi. 1518 01:18:27,556 --> 01:18:37,910 1519 01:18:37,910 --> 01:18:38,630 Test, test. 1520 01:18:38,630 --> 01:18:39,630 Dan, is dat goed? 1521 01:18:39,630 --> 01:18:40,880 Cool. 1522 01:18:40,880 --> 01:18:44,460 1523 01:18:44,460 --> 01:18:47,600 >> Dus de video zal ook worden geplaatst online voor degenen die 1524 01:18:47,600 --> 01:18:48,850 moeten nu vertrekken. 1525 01:18:48,850 --> 01:18:51,350 1526 01:18:51,350 --> 01:18:52,600 Awkward. 1527 01:18:52,600 --> 01:18:56,300 1528 01:18:56,300 --> 01:18:57,510 OK. 1529 01:18:57,510 --> 01:18:59,730 Dus quiz beoordeling. 1530 01:18:59,730 --> 01:19:00,980 Dit is een kat. 1531 01:19:00,980 --> 01:19:03,150 1532 01:19:03,150 --> 01:19:07,170 Nu, JavaScript, dat is misschien niet als AWW voor sommigen van jullie. 1533 01:19:07,170 --> 01:19:07,370 OK. 1534 01:19:07,370 --> 01:19:09,280 Dus dat is de eerste, herinnert uit Zamyla. 1535 01:19:09,280 --> 01:19:11,270 Vergeet niet dat PHP is draaien op de server. 1536 01:19:11,270 --> 01:19:15,230 En heel vaak, schreef jullie loops in PHP te drukken HTML, toch? 1537 01:19:15,230 --> 01:19:19,170 Dus zodra dat code wordt uitgevoerd, dat HTML-uitvoer die u uitprinten 1538 01:19:19,170 --> 01:19:20,500 wordt verzonden naar de gebruiker. 1539 01:19:20,500 --> 01:19:25,960 En zodra dat gebeurt, geen PHP meer kan worden uitgevoerd, tenzij u de pagina opnieuw te laden, van 1540 01:19:25,960 --> 01:19:27,660 cursus, die de PHP reexecutes. 1541 01:19:27,660 --> 01:19:30,080 Maar als je eenmaal uitprinten die HTML, je kan nergens heen. 1542 01:19:30,080 --> 01:19:33,580 >> Zodat HTML wordt via naar de gebruiker, die de browser hier, waar 1543 01:19:33,580 --> 01:19:35,470 Milo is met behulp van de computer. 1544 01:19:35,470 --> 01:19:40,340 En zo goed, er zijn verschillende dingen zodra we HTML naar de gebruiker. 1545 01:19:40,340 --> 01:19:43,350 Soms willen we iets doen als wanneer u klikt op iets, we willen 1546 01:19:43,350 --> 01:19:47,350 alert dozen om pop-up, dat soort interacties, zoals wanneer u op de 1547 01:19:47,350 --> 01:19:50,740 sleutel, als je iets op de klik pagina, Ik wil dat er iets gebeurt. 1548 01:19:50,740 --> 01:19:54,550 Nou, je kunt niet reexecute PHP code eens dat HTML is ingesteld. 1549 01:19:54,550 --> 01:19:55,900 Dus hoe doe je dit? 1550 01:19:55,900 --> 01:19:59,930 >> We introduceren een nieuwe taal genaamd JavaScript die in de browser draait 1551 01:19:59,930 --> 01:20:02,890 die u toelaat om dingen te doen naar HTML nadat u ontvangt 1552 01:20:02,890 --> 01:20:04,020 ze van de server. 1553 01:20:04,020 --> 01:20:07,050 En dit is waarom we noemen het een client-side programmeertaal. 1554 01:20:07,050 --> 01:20:09,110 Het werkt op de computer - 1555 01:20:09,110 --> 01:20:11,400 de klant. 1556 01:20:11,400 --> 01:20:13,830 Heeft u vragen over dat tot nu toe? 1557 01:20:13,830 --> 01:20:15,650 Dat paradigma zinvol om mensen? 1558 01:20:15,650 --> 01:20:16,010 OK. 1559 01:20:16,010 --> 01:20:16,790 Goed. 1560 01:20:16,790 --> 01:20:17,340 Oke. 1561 01:20:17,340 --> 01:20:20,850 Dus het eerste wat op te merken is JavaScript is niet PHP. 1562 01:20:20,850 --> 01:20:23,010 >> Ze hebben een aantal verschillende syntax, die we zullen ingaan. 1563 01:20:23,010 --> 01:20:24,530 En ze hebben zeer verschillende toepassingen. 1564 01:20:24,530 --> 01:20:26,640 JavaScript, opnieuw, voor uw browser, voor de klant. 1565 01:20:26,640 --> 01:20:30,640 Server draait ergens op iemand anders computer die informatie stuurt 1566 01:20:30,640 --> 01:20:31,720 aan u, te corrigeren? 1567 01:20:31,720 --> 01:20:36,730 Dus als wij u vragen om PHP code te schrijven examen op een vraag, niet schrijven 1568 01:20:36,730 --> 01:20:38,710 JavaScript en vice versa. 1569 01:20:38,710 --> 01:20:41,710 Je zult gewoon verliest punten, en het zal niet juist zijn. 1570 01:20:41,710 --> 01:20:43,690 >> Dus laten we krijgen in een aantal syntax verschillen - 1571 01:20:43,690 --> 01:20:46,140 JavaScript op de linker en PHP aan de rechterkant. 1572 01:20:46,140 --> 01:20:48,670 Het eerste wat je opvalt met JavaScript, verklaren wij variabelen met 1573 01:20:48,670 --> 01:20:49,440 de var trefwoord - 1574 01:20:49,440 --> 01:20:53,590 V-A-R. PHP gebruikt de dollar-teken, als Zamyla eerder besproken. 1575 01:20:53,590 --> 01:20:57,570 Wilt u een associatieve verklaren array, zien we de bekende syntax op 1576 01:20:57,570 --> 01:20:59,030 de rechterkant met PHP. 1577 01:20:59,030 --> 01:21:01,630 Aan de linkerkant, in plaats je accolades gebruiken. 1578 01:21:01,630 --> 01:21:03,280 En dan is uw sleutels aan de linkerkant. 1579 01:21:03,280 --> 01:21:04,670 Dan heb je een dubbele punt. 1580 01:21:04,670 --> 01:21:06,560 En dan heb je de waarden die je wilt. 1581 01:21:06,560 --> 01:21:09,840 >> Dus dit is hoe je het zou doen in PHP rechts met die tweede 1582 01:21:09,840 --> 01:21:10,955 lijn die begint bij Milo. 1583 01:21:10,955 --> 01:21:14,540 En dat is hoe je het zou doen op de linkerkant in JavaScript als je wilt 1584 01:21:14,540 --> 01:21:16,110 wat we een object noemen. 1585 01:21:16,110 --> 01:21:19,340 En objecten in JavaScript zijn net associatieve arrays. 1586 01:21:19,340 --> 01:21:23,710 Dus als je wilt benaderen velden, in PHP u deze syntaxis beugel gebruiken. 1587 01:21:23,710 --> 01:21:27,170 En op deze manier, kunt u opnieuw toewijzen deze eigenaar veld Lauren. 1588 01:21:27,170 --> 01:21:30,150 >> Nou, in JavaScript, als men wil toegang tot een veld en verander het, kunt u 1589 01:21:30,150 --> 01:21:31,370 gebruik maken van de dot syntax. 1590 01:21:31,370 --> 01:21:33,860 U kunt ook gebruik maken van de syntax beugel. 1591 01:21:33,860 --> 01:21:35,550 Maar je kunt niet gebruik maken van de dot syntax in PHP. 1592 01:21:35,550 --> 01:21:36,525 Dat zal niet werken. 1593 01:21:36,525 --> 01:21:38,910 Het werkt alleen in PHP. 1594 01:21:38,910 --> 01:21:42,060 En tot slot, om dingen af ​​te drukken op de console, console.log, gebruikt u die 1595 01:21:42,060 --> 01:21:43,720 jullie gebruiken veel in pset8. 1596 01:21:43,720 --> 01:21:45,260 U kunt console.log dat. 1597 01:21:45,260 --> 01:21:50,030 >> Als u een array wilt afdrukken in PHP, moet je afdrukken r gebruiken. 1598 01:21:50,030 --> 01:21:53,240 En aan de rechterkant zie je i hash tekenreekssamenvoegingsoperator daar. 1599 01:21:53,240 --> 01:21:54,070 Iemand eerder gevraagd. 1600 01:21:54,070 --> 01:21:55,850 Ik gebruik een plus in JavaScript. 1601 01:21:55,850 --> 01:21:59,800 Als ik iets wil samenvoegen in PHP, gebruik ik de stip. 1602 01:21:59,800 --> 01:22:00,800 Deze verschillen. 1603 01:22:00,800 --> 01:22:03,420 Als je het schrijven van PHP-code, geen gebruik maken van een plus. 1604 01:22:03,420 --> 01:22:06,810 Als je het schrijven JavaScript code, niet een punt te schrijven. 1605 01:22:06,810 --> 01:22:08,230 Het zal verkeerd zijn. 1606 01:22:08,230 --> 01:22:09,640 En je zult verdrietig zijn. 1607 01:22:09,640 --> 01:22:11,000 >> Dus syntax verschillen. 1608 01:22:11,000 --> 01:22:14,710 Ken je syntax, want als je moet schrijf een vraag en je syntaxis 1609 01:22:14,710 --> 01:22:16,890 uit de verkeerde taal, het zal niet werken. 1610 01:22:16,890 --> 01:22:19,520 En het zal verkeerd zijn. 1611 01:22:19,520 --> 01:22:22,420 Dus laten we praten over wat controle stromen verschillen, hoe je het gebruikt 1612 01:22:22,420 --> 01:22:24,040 lussen in elk van hen. 1613 01:22:24,040 --> 01:22:26,610 Zamyla ging over de rechterkant. 1614 01:22:26,610 --> 01:22:27,780 Spullen op de rechterkant moeten kennen. 1615 01:22:27,780 --> 01:22:29,670 Laten we eens kijken aan de linkerkant. 1616 01:22:29,670 --> 01:22:34,830 >> Wanneer u gebruikt voor n lus in JavaScript, uw lus variabele, var i daar, 1617 01:22:34,830 --> 01:22:37,210 lus over de sleutels van de array. 1618 01:22:37,210 --> 01:22:39,150 Zo zie je naam, huis, en de rol. 1619 01:22:39,150 --> 01:22:42,440 Als ik console.log ik, krijg ik naam, huis, en de rol. 1620 01:22:42,440 --> 01:22:44,720 Dat zijn de sleutels. 1621 01:22:44,720 --> 01:22:50,080 In JavaScript, een foreach lus gaat over de waarden van deze array. 1622 01:22:50,080 --> 01:22:52,040 Dus je merkt ze allebei i. 1623 01:22:52,040 --> 01:22:56,000 Maar hier op de PHP kant, drukt het uit Milo, CS50, en Mascot. 1624 01:22:56,000 --> 01:22:57,390 Dat zijn de waarden in PHP. 1625 01:22:57,390 --> 01:23:00,180 >> Dit zijn hoe deze twee verschillende in de verschillende talen. 1626 01:23:00,180 --> 01:23:02,970 Dus als u een foreach lus, niet van uit dat het 1627 01:23:02,970 --> 01:23:03,760 geeft u de sleutels. 1628 01:23:03,760 --> 01:23:08,010 En als je met behulp van een voor n lus, niet neem aan dat het geeft je de waarden. 1629 01:23:08,010 --> 01:23:10,420 Is dit zinvol tot nu toe? 1630 01:23:10,420 --> 01:23:13,630 De volgende dia is ga je laten zien hoe heeft u toegang tot het tegenovergestelde in 1631 01:23:13,630 --> 01:23:15,160 elk van hen. 1632 01:23:15,160 --> 01:23:18,550 >> Nou, als je de sleutel in JavaScript en u wilt dat de waarde uit, 1633 01:23:18,550 --> 01:23:20,440 je gewoon index in de array met dat. 1634 01:23:20,440 --> 01:23:23,640 Dus Milo van ik zal je krijgen wat je wilt - de waarden. 1635 01:23:23,640 --> 01:23:25,260 Er is een andere syntax in PHP. 1636 01:23:25,260 --> 01:23:28,140 Als je echt wilt weten, ik niet denk dat we het toonde aan u nog. 1637 01:23:28,140 --> 01:23:31,740 Maar als je geïnteresseerd bent, kunt u gebruik maken deze extra syntax rechts 1638 01:23:31,740 --> 01:23:35,130 kant die eigenlijk laat je de sleutels in PHP als u een 1639 01:23:35,130 --> 01:23:35,880 foreach lus. 1640 01:23:35,880 --> 01:23:39,640 Dus gewoon een beetje trivia als je geïnteresseerd bent. 1641 01:23:39,640 --> 01:23:42,630 >> Dus dat is gewoon om aan te tonen de verschillen tussen deze twee lussen. 1642 01:23:42,630 --> 01:23:47,060 Heeft ze niet door elkaar als je programmeren van een vraag. 1643 01:23:47,060 --> 01:23:49,774 Heeft u vragen over. 1644 01:23:49,774 --> 01:23:50,770 Cool. 1645 01:23:50,770 --> 01:23:51,310 Oke. 1646 01:23:51,310 --> 01:23:52,250 JavaScript-objecten. 1647 01:23:52,250 --> 01:23:53,040 Ik sprak over hen. 1648 01:23:53,040 --> 01:23:54,650 Ze zijn als associatieve arrays. 1649 01:23:54,650 --> 01:23:57,730 Het enige wat ik zou willen dat u er rekening mee Hier is dat een waarde in een associatieve 1650 01:23:57,730 --> 01:23:59,540 array kan van alles zijn in JavaScript. 1651 01:23:59,540 --> 01:24:02,240 >> Het kan zelfs een functie zijn, als daar. 1652 01:24:02,240 --> 01:24:04,600 Ik heb een functie die is een waarde van een sleutel. 1653 01:24:04,600 --> 01:24:07,030 En als ik wil dat de functie aan te roepen, Ik toegang schors. 1654 01:24:07,030 --> 01:24:08,490 En dan heb ik de haakjes daarna. 1655 01:24:08,490 --> 01:24:09,790 En dat werkt. 1656 01:24:09,790 --> 01:24:15,570 Dus vragen? 1657 01:24:15,570 --> 01:24:16,370 Nee? 1658 01:24:16,370 --> 01:24:16,650 OK. 1659 01:24:16,650 --> 01:24:18,190 Goed. 1660 01:24:18,190 --> 01:24:20,130 JavaScript, zoals PHP, is losjes getypt. 1661 01:24:20,130 --> 01:24:20,970 Wat betekent dat? 1662 01:24:20,970 --> 01:24:22,380 >> Het heeft soorten. 1663 01:24:22,380 --> 01:24:24,800 Maar als je verklaren een JavaScript variabele, zeg je var i. 1664 01:24:24,800 --> 01:24:25,850 Je hoeft het niet zeggen. 1665 01:24:25,850 --> 01:24:26,460 Dat is niet een ding. 1666 01:24:26,460 --> 01:24:28,000 Je moet gewoon zeggen dat het een variabele. 1667 01:24:28,000 --> 01:24:31,590 En dan zal JavaScript omgaan met de soorten onder de motorkap voor je. 1668 01:24:31,590 --> 01:24:34,390 We kunnen vrij zetten tussen soorten hierdoor. 1669 01:24:34,390 --> 01:24:37,360 Dus ik begint als een nummer in dit geval. 1670 01:24:37,360 --> 01:24:38,790 En dan heb ik een string. 1671 01:24:38,790 --> 01:24:39,710 En ik voeg ik aan. 1672 01:24:39,710 --> 01:24:41,810 En ik opnieuw toewijzen het terug in i. 1673 01:24:41,810 --> 01:24:43,640 >> Dus op die eerste lijn, i het nummer. 1674 01:24:43,640 --> 01:24:47,310 Op de tweede regel, ik wordt nu een koord nadat ik doe het herschikken. 1675 01:24:47,310 --> 01:24:52,820 En hier, ik ben gewoon aaneenschakelen dat nummer op de string. 1676 01:24:52,820 --> 01:24:56,210 Zo zie je dat ook al was ik een integer in het eerste deel, het is een soort 1677 01:24:56,210 --> 01:24:58,500 of zoals wordt omgezet in een string en vervolgens worden toegevoegd 1678 01:24:58,500 --> 01:25:00,510 op dat hello string. 1679 01:25:00,510 --> 01:25:02,340 En dus dat is wat ik bedoel door de losse typen. 1680 01:25:02,340 --> 01:25:04,760 Dat is dat je converteren tussen types heel gemakkelijk. 1681 01:25:04,760 --> 01:25:08,840 En het maakt niet waarschuwingen gooien bij je C doet. 1682 01:25:08,840 --> 01:25:12,420 >> Dus ik bevat nu hello 123 aan de string. 1683 01:25:12,420 --> 01:25:13,270 Volgende. 1684 01:25:13,270 --> 01:25:15,610 We kunnen ook vrij vergelijken tussen soorten. 1685 01:25:15,610 --> 01:25:19,310 Dus als je gewoon gebruik ==, heel veel zoals in PHP, JavaScript 1686 01:25:19,310 --> 01:25:20,480 doet een soortgelijke zaak. 1687 01:25:20,480 --> 01:25:24,780 Het koord 123 is gelijk aan het aantal 123 wanneer u dubbelklikt gelijken gebruiken. 1688 01:25:24,780 --> 01:25:27,820 Wanneer gebruikt triple gelijken, maar ook wil ervoor zorgen dat 1689 01:25:27,820 --> 01:25:29,240 het type is hetzelfde. 1690 01:25:29,240 --> 01:25:31,960 Omdat dat een string en dat een aantal, ook al zijn ze allebei 1691 01:25:31,960 --> 01:25:35,280 123, als je triple gebruiken gelijk, je valse krijgen. 1692 01:25:35,280 --> 01:25:39,330 In gelijk aan de dubbele geval krijg je waar, want dubbel is niet 1693 01:25:39,330 --> 01:25:40,020 zorg over type. 1694 01:25:40,020 --> 01:25:42,500 Triple gelijken geeft om type. 1695 01:25:42,500 --> 01:25:43,750 Vragen? 1696 01:25:43,750 --> 01:25:45,790 1697 01:25:45,790 --> 01:25:48,390 OK. 1698 01:25:48,390 --> 01:25:52,870 >> En een ander ding over JavaScript is scope is een soort van wereldwijde tenzij je 1699 01:25:52,870 --> 01:25:53,460 in een functie. 1700 01:25:53,460 --> 01:25:55,660 En het werkt op dezelfde manier in PHP eigenlijk. 1701 01:25:55,660 --> 01:25:57,500 Dus laten we gaan door dit voorbeeld. 1702 01:25:57,500 --> 01:25:59,110 Ik i 999. 1703 01:25:59,110 --> 01:26:00,900 En dan ga ik in deze for-lus. 1704 01:26:00,900 --> 01:26:06,110 Dus als ik het printen ik in deze voor lus, Ik verwacht 0, 1, 2, 3, 4. 1705 01:26:06,110 --> 01:26:07,390 Ik krijg om i = 4. 1706 01:26:07,390 --> 01:26:10,770 Het stappen ik nu 5 op het einde van de lus. 1707 01:26:10,770 --> 01:26:13,300 En dan breekt uit de lus, omdat het niet voldoet aan de 1708 01:26:13,300 --> 01:26:14,550 conditie meer. 1709 01:26:14,550 --> 01:26:16,650 >> Wat denk je dat de volgende console.log afgedrukt? 1710 01:26:16,650 --> 01:26:20,570 1711 01:26:20,570 --> 01:26:24,790 Dus dat is wat het zou doen in C. In C, want als je als var i buiten 1712 01:26:24,790 --> 01:26:28,855 en je hebt var i in een lus, als een lus, dan maakt het zo dat 1713 01:26:28,855 --> 01:26:30,690 het is scoped dat de twee i's zijn verschillend. 1714 01:26:30,690 --> 01:26:34,630 In JavaScript, zal het net behandelen als hetzelfde i. 1715 01:26:34,630 --> 01:26:37,870 Ik krijg 5, want dat was de waarde na het verlaten van de lus. 1716 01:26:37,870 --> 01:26:39,120 Dus die i's zijn hetzelfde i. 1717 01:26:39,120 --> 01:26:42,620 1718 01:26:42,620 --> 01:26:44,130 Is dat logisch? 1719 01:26:44,130 --> 01:26:45,720 >> Nou, is het zinvol uit een JavaScript-standpunt. 1720 01:26:45,720 --> 01:26:49,510 Maar hetzelfde paradigma niet overdracht aan C. Ze hebben 1721 01:26:49,510 --> 01:26:50,310 verschillende scoping regels. 1722 01:26:50,310 --> 01:26:50,630 Ja. 1723 01:26:50,630 --> 01:26:52,566 >> PUBLIEK: [onverstaanbaar] 1724 01:26:52,566 --> 01:26:54,990 buiten de functie [onverstaanbaar]? 1725 01:26:54,990 --> 01:26:58,340 >> JOSEPH ONG: Dus buiten die functie? 1726 01:26:58,340 --> 01:27:00,810 Dus ik zal dat in slechts een seconde. 1727 01:27:00,810 --> 01:27:02,580 Dus foo noemen we (i). 1728 01:27:02,580 --> 01:27:06,920 Dit gaat i in foo, stappen , en dan registreert het. 1729 01:27:06,920 --> 01:27:07,750 Dus het was 5. 1730 01:27:07,750 --> 01:27:09,210 Dus wordt het 6. 1731 01:27:09,210 --> 01:27:11,670 Maar wat ik het over heb is dat ik in die functie. 1732 01:27:11,670 --> 01:27:14,430 Omdat het een parameter, het binnen het bereik van die functie. 1733 01:27:14,430 --> 01:27:17,800 Dus zodra ik eigenlijk uit dat functie, is het nu gaat om te gaan 1734 01:27:17,800 --> 01:27:19,860 terug naar de oude i. 1735 01:27:19,860 --> 01:27:23,000 Dat ik alleen scoped omdat het is in een functie. 1736 01:27:23,000 --> 01:27:24,200 En we hebben ruimte en functies. 1737 01:27:24,200 --> 01:27:29,080 Maar we hebben geen ruimte buiten hebben van functies in JavaScript. 1738 01:27:29,080 --> 01:27:31,170 Is dat logisch? 1739 01:27:31,170 --> 01:27:31,320 Ja. 1740 01:27:31,320 --> 01:27:31,660 Vraag. 1741 01:27:31,660 --> 01:27:34,030 >> PUBLIEK: Zelfde [onverstaanbaar]? 1742 01:27:34,030 --> 01:27:34,500 >> JOSEPH ONG: Dus ja. 1743 01:27:34,500 --> 01:27:36,260 In PHP, het is hetzelfde soort dingen. 1744 01:27:36,260 --> 01:27:37,680 Er is een lichte subtiliteit eigenlijk. 1745 01:27:37,680 --> 01:27:40,130 Maar je kunt me vragen over dat na de beoordeling. 1746 01:27:40,130 --> 01:27:43,930 Je hoeft niet echt nodig om te weten dat subtiliteit voor de quiz. 1747 01:27:43,930 --> 01:27:47,600 Voor alle doeleinden, zoals variabelen, globale en PHP, tenzij 1748 01:27:47,600 --> 01:27:49,150 ze in een functie, hetzelfde ding in JavaScript. 1749 01:27:49,150 --> 01:27:49,480 Ja. 1750 01:27:49,480 --> 01:27:52,890 >> PUBLIEK: Waarom is dit toegestaan ​​in JavaScript en nergens anders? 1751 01:27:52,890 --> 01:27:55,010 >> JOSEPH ONG: Dus waarom is het toegestaan in JavaScript en niet in C? 1752 01:27:55,010 --> 01:27:58,180 Het is gewoon wie kwam met JavaScript besloten dat dit was OK in 1753 01:27:58,180 --> 01:27:59,510 JavaScript. 1754 01:27:59,510 --> 01:28:02,430 Dus het is net als een programmeertaal conventie zoals wij zouden zeggen. 1755 01:28:02,430 --> 01:28:02,580 Ja. 1756 01:28:02,580 --> 01:28:04,480 >> PUBLIEK: Dus waarom deed het gaan 6-5? 1757 01:28:04,480 --> 01:28:08,280 >> JOSEPH ONG: Dus het ging 6-5, want toen ik passeerde ik in foo, dat 1758 01:28:08,280 --> 01:28:13,420 i binnenkant van foo is nu binnen het bereik van foo, omdat ruimte bestaat in functies 1759 01:28:13,420 --> 01:28:15,050 JavaScript. 1760 01:28:15,050 --> 01:28:18,720 Maar zodra ik hier weg, want het werd binnen het bereik van de functie, ik ben gewoon 1761 01:28:18,720 --> 01:28:24,300 met behulp van de reguliere ik dat binnen was de rest van het bedieningssysteem stroom. 1762 01:28:24,300 --> 01:28:25,210 Zinvol? 1763 01:28:25,210 --> 01:28:26,910 Kan ik verder gaan? 1764 01:28:26,910 --> 01:28:27,320 Oke. 1765 01:28:27,320 --> 01:28:29,180 Cool. 1766 01:28:29,180 --> 01:28:31,890 >> De aanvaarding van deze objecten is worden doorgegeven door middel van verwijzing. 1767 01:28:31,890 --> 01:28:33,990 Je weet hoe wanneer je langs een array in C kon je 1768 01:28:33,990 --> 01:28:35,810 de array eigenlijk aanpassen? 1769 01:28:35,810 --> 01:28:37,350 Het is hetzelfde in JavaScript. 1770 01:28:37,350 --> 01:28:42,960 Als ik langs een object, in dit geval, ik Milo overgegaan naar deze catify functie. 1771 01:28:42,960 --> 01:28:44,490 Milo begint. 1772 01:28:44,490 --> 01:28:46,310 Zijn naam is Milo Banana. 1773 01:28:46,310 --> 01:28:51,670 Ik dat object overgaan in een functie want het is een object, een associatieve 1774 01:28:51,670 --> 01:28:53,730 array in JavaScript. 1775 01:28:53,730 --> 01:28:57,110 >> Toen ik een handeling uitvoert in die functie, zal 1776 01:28:57,110 --> 01:28:58,560 eigenlijk het object wijzigen. 1777 01:28:58,560 --> 01:29:01,720 Dus dit zal alleen gebeuren voor objecten in JavaScript, net als het gebeurt 1778 01:29:01,720 --> 01:29:09,230 voor arrays binnenkant van de naam C. Dus Milo's zal nu eigenlijk kat geworden. 1779 01:29:09,230 --> 01:29:10,090 Is dat logisch? 1780 01:29:10,090 --> 01:29:11,840 Dus dit werkt alleen voor objecten. 1781 01:29:11,840 --> 01:29:13,090 Objecten worden doorgegeven door middel van verwijzing. 1782 01:29:13,090 --> 01:29:13,400 Ja. 1783 01:29:13,400 --> 01:29:16,850 >> PUBLIEK: Dus je zegt dat in tegenstelling tot variabele i. 1784 01:29:16,850 --> 01:29:17,240 >> JOSEPH ONG: Yeah. 1785 01:29:17,240 --> 01:29:20,330 Welke variabele i was gewoon een nummer, toch? 1786 01:29:20,330 --> 01:29:25,280 Het is net als in C als u een pas integer een, het maakt een kopie. 1787 01:29:25,280 --> 01:29:28,130 En als je een array doorgeven, het eigenlijk verandert de feitelijke array 1788 01:29:28,130 --> 01:29:32,870 C. Hetzelfde gebeurt met JavaScript in dit geval. 1789 01:29:32,870 --> 01:29:34,070 Oke. 1790 01:29:34,070 --> 01:29:38,134 En volgende, Milo is verdrietig omdat hij is nu een kat. 1791 01:29:38,134 --> 01:29:40,790 1792 01:29:40,790 --> 01:29:45,060 Dat was eigenlijk Milo na enkele reis naar de dierenarts. 1793 01:29:45,060 --> 01:29:46,860 >> Dus hoe kunnen we gebruik maken van JavaScript in een webpagina? 1794 01:29:46,860 --> 01:29:47,790 Wij kunnen opnemen. 1795 01:29:47,790 --> 01:29:50,090 Dit is HTML-code met de strip tags. 1796 01:29:50,090 --> 01:29:51,300 Dus ik heb strip labels daar. 1797 01:29:51,300 --> 01:29:54,820 En dan heb ik een aantal JavaScript code in het script-tags. 1798 01:29:54,820 --> 01:29:56,390 En dan voert dit. 1799 01:29:56,390 --> 01:29:58,830 Toen ik doe het net als deze, is het genoemd inline JavaScript. 1800 01:29:58,830 --> 01:30:02,400 Het is een beetje rommelig, omdat de JavaScript is eigenlijk in de HTML. 1801 01:30:02,400 --> 01:30:07,010 >> Een betere manier om dit te doen, veel mooier, is om je JavaScript in een schrijven 1802 01:30:07,010 --> 01:30:10,920 extern bestand en vervolgens voorzien de script-tag met een bron. 1803 01:30:10,920 --> 01:30:14,920 En dit zal gaan naar dat JavaScript bestand en lees de JavaScript-code van 1804 01:30:14,920 --> 01:30:15,960 dat bestand in plaats daarvan. 1805 01:30:15,960 --> 01:30:18,820 En op deze manier, heb je niet veel JavaScript aan het begin van uw 1806 01:30:18,820 --> 01:30:20,760 HTML-bestand, waardoor het echt rommelig. 1807 01:30:20,760 --> 01:30:21,860 Je zet ze gewoon ergens anders. 1808 01:30:21,860 --> 01:30:24,310 En dan zal het lezen van daar. 1809 01:30:24,310 --> 01:30:25,560 Deed dat zinvol? 1810 01:30:25,560 --> 01:30:27,990 1811 01:30:27,990 --> 01:30:29,640 >> Plaatsing zaken. 1812 01:30:29,640 --> 01:30:32,620 In dit geval, de script is voor het lichaam. 1813 01:30:32,620 --> 01:30:36,090 Dus toen ik dat uit te voeren, is er nog niets in het lichaam. 1814 01:30:36,090 --> 01:30:39,920 Misschien zal dit een beetje meer maken voelen wanneer ik laten zien dit volgende deel. 1815 01:30:39,920 --> 01:30:43,210 In dit geval, het script komt na de div. 1816 01:30:43,210 --> 01:30:46,620 Dus de div daadwerkelijk verschijnt op de pagina eerst. 1817 01:30:46,620 --> 01:30:49,470 Hier in dit kleine rode cirkel, zie je de tekst wordt weergegeven. 1818 01:30:49,470 --> 01:30:51,810 En dan de waarschuwing verschijnt. 1819 01:30:51,810 --> 01:30:54,890 >> In het eerste geval, omdat het script was voor de div, de 1820 01:30:54,890 --> 01:30:56,170 waarschuwing verschijnt als eerste. 1821 01:30:56,170 --> 01:30:59,250 En dan de div verschijnt na je de doos ontslaan. 1822 01:30:59,250 --> 01:31:01,330 Dus de uitvoering van belang. 1823 01:31:01,330 --> 01:31:02,290 Dus we zullen dit in gedachten te houden. 1824 01:31:02,290 --> 01:31:03,640 Dit is van belang in een klein beetje. 1825 01:31:03,640 --> 01:31:08,730 1826 01:31:08,730 --> 01:31:09,540 OK. 1827 01:31:09,540 --> 01:31:12,750 Zo goed, hoe kan je wachten tot de hele pagina wordt dan geladen voordat u 1828 01:31:12,750 --> 01:31:13,580 enkele code uit te voeren? 1829 01:31:13,580 --> 01:31:15,540 We zullen krijgen in deze een beetje even later ook. 1830 01:31:15,540 --> 01:31:19,016 Maar gewoon blijven deze plaatsing zaken in het achterhoofd voor als we 1831 01:31:19,016 --> 01:31:20,570 komen naar een andere dia. 1832 01:31:20,570 --> 01:31:22,030 >> Dus krijgen we nu DOM. 1833 01:31:22,030 --> 01:31:23,550 En wat is DOM? 1834 01:31:23,550 --> 01:31:26,830 Dus als je kijkt naar HTML-code, het is gewoon een bos van tekst op het scherm. 1835 01:31:26,830 --> 01:31:30,560 Dus hoe JavaScript weten dat Dit is een HTML-element? 1836 01:31:30,560 --> 01:31:33,410 Dus moeten we wat geheugen hebben weergave van deze 1837 01:31:33,410 --> 01:31:34,930 structuur die we hebben. 1838 01:31:34,930 --> 01:31:40,240 En wanneer we dit in het geheugen vertegenwoordiging in JavaScript, noemen we 1839 01:31:40,240 --> 01:31:41,750 dat de DOM. 1840 01:31:41,750 --> 01:31:45,130 En het is gewoon een manier dat mensen besloten dat wij deze moeten vertegenwoordigen 1841 01:31:45,130 --> 01:31:46,400 HTML structuur. 1842 01:31:46,400 --> 01:31:47,940 >> En wat betekent dit DOM eruit? 1843 01:31:47,940 --> 01:31:50,460 Nou, in het geheugen vertegenwoordiging, wij nemen deze tekst. 1844 01:31:50,460 --> 01:31:52,870 En we zetten het in het geheugen representatie. 1845 01:31:52,870 --> 01:31:54,400 Dus dit is de HTML. 1846 01:31:54,400 --> 01:31:58,090 Dus we eerst uit dat elke DOM boom heeft een document. 1847 01:31:58,090 --> 01:31:59,400 Het ziet eruit als een boom. 1848 01:31:59,400 --> 01:32:03,550 En het document bevat de HTML tag, eigenlijk alles 1849 01:32:03,550 --> 01:32:05,150 binnenkant van deze nu. 1850 01:32:05,150 --> 01:32:06,970 De HTML-tag heeft twee kinderen. 1851 01:32:06,970 --> 01:32:08,630 Het heeft een hoofd. 1852 01:32:08,630 --> 01:32:12,380 Dat hoofd, als je kijkt naar inspringen daar op hoe het gestructureerd 1853 01:32:12,380 --> 01:32:14,960 tussen de dicht-tags, hoofd heeft een kind. 1854 01:32:14,960 --> 01:32:17,130 Het kind is titel. 1855 01:32:17,130 --> 01:32:18,370 Precies. 1856 01:32:18,370 --> 01:32:21,000 >> Nu hebben we een lichaam kind. 1857 01:32:21,000 --> 01:32:24,870 En dan dat lichaam een kind genaamd familie. 1858 01:32:24,870 --> 01:32:27,950 En dat gezin heeft drie kinderen - 1859 01:32:27,950 --> 01:32:29,550 oudste, middelste en jongste. 1860 01:32:29,550 --> 01:32:31,960 Dus je moet weten hoe je een diagram te tekenen als deze wanneer we je vragen hoe 1861 01:32:31,960 --> 01:32:34,270 een diagram te tekenen wanneer we geven u de HTML-links. 1862 01:32:34,270 --> 01:32:36,350 Weet u hoe u de DOM-structuur te produceren. 1863 01:32:36,350 --> 01:32:38,930 En de binnenkant van deze dingen, er is gewoon wat tekst, die ik heb voorgesteld 1864 01:32:38,930 --> 01:32:40,180 als kleine doosjes. 1865 01:32:40,180 --> 01:32:42,750 1866 01:32:42,750 --> 01:32:47,980 >> Betekent dit DOM-boomstructuur maken zin en wat de DOM is? 1867 01:32:47,980 --> 01:32:49,300 Dus wat doet de p voor? 1868 01:32:49,300 --> 01:32:51,850 Hier, de p daar in die tag vertegenwoordigt een 1869 01:32:51,850 --> 01:32:54,510 paragraaf-tag in HTML. 1870 01:32:54,510 --> 01:32:57,080 Dus je kunt opzoeken. 1871 01:32:57,080 --> 01:32:59,290 Maar het betekent gewoon dat het een ruimte voor wat tekst. 1872 01:32:59,290 --> 01:33:02,910 En het heeft een aantal standaard CSS styling, want het is een paragraaf tag. 1873 01:33:02,910 --> 01:33:05,130 Maar niet echt zorgen te maken over dat deel te veel. 1874 01:33:05,130 --> 01:33:07,510 Weet gewoon dat het een tijdelijke aanduiding voor wat tekst. 1875 01:33:07,510 --> 01:33:08,480 Ja. 1876 01:33:08,480 --> 01:33:10,200 Vraag? 1877 01:33:10,200 --> 01:33:11,021 Ja. 1878 01:33:11,021 --> 01:33:12,374 >> PUBLIEK: U zojuist genoemde CSS. 1879 01:33:12,374 --> 01:33:15,492 De hash familie en de hash al dat spul is in principe 1880 01:33:15,492 --> 01:33:17,400 vertegenwoordigen id's in CSS? 1881 01:33:17,400 --> 01:33:18,440 >> JOSEPH ONG: Ja, precies. 1882 01:33:18,440 --> 01:33:20,380 Ik zal met wat deze hashes krijgen betekenen in een tweede. 1883 01:33:20,380 --> 01:33:23,480 Toen Angela ging over CSS, ze sprak over CSS selectors. 1884 01:33:23,480 --> 01:33:26,770 Dit zijn de CSS selectors dat ze het over had. 1885 01:33:26,770 --> 01:33:28,268 Ja, Rob? 1886 01:33:28,268 --> 01:33:32,060 >> ROB BOWDEN: Ik zou ook commentaar dat DOM binnenkant van title tag 1887 01:33:32,060 --> 01:33:35,385 is ook een tekst knooppunt. 1888 01:33:35,385 --> 01:33:36,070 >> JOSEPH ONG: Juist. 1889 01:33:36,070 --> 01:33:38,370 Dus in de title-tag, Ik heb wat tekst DOM. 1890 01:33:38,370 --> 01:33:42,730 Dus eigenlijk zou deze titel als een doosje komt ook van af. 1891 01:33:42,730 --> 01:33:45,740 Maar het maakt eigenlijk niet uit teveel in dit geval. 1892 01:33:45,740 --> 01:33:49,620 We hebben niet echt zorgen over tekstnodes, zoals wij ze noemen, te veel. 1893 01:33:49,620 --> 01:33:50,270 OK, we doen. 1894 01:33:50,270 --> 01:33:51,520 Blijkbaar, we doen. 1895 01:33:51,520 --> 01:33:54,260 1896 01:33:54,260 --> 01:33:57,100 En ik zal vast dat wanneer Ik opnieuw uploaden. 1897 01:33:57,100 --> 01:33:59,830 Is dat logisch? 1898 01:33:59,830 --> 01:34:01,160 >> Dus hoe kunnen we werken met de DOM? 1899 01:34:01,160 --> 01:34:03,790 Wanneer u te maken met de DOM in JavaScript, zijn er twee stappen. 1900 01:34:03,790 --> 01:34:05,030 U selecteert een DOM-element. 1901 01:34:05,030 --> 01:34:06,580 En dan dingen doen om het te. 1902 01:34:06,580 --> 01:34:11,480 Dus in dit geval, abstract, ik heb gekozen voor de middelste element. 1903 01:34:11,480 --> 01:34:14,530 En dan is een voorbeeld van het doen van dingen haar de tekst zou veranderen. 1904 01:34:14,530 --> 01:34:16,020 Dat wordt gebruikt om Bob te zijn. 1905 01:34:16,020 --> 01:34:19,930 Nu, wat ik deed was ik veranderd Bob om Milo in dit geval. 1906 01:34:19,930 --> 01:34:22,130 >> Dus hoe kunnen we eigenlijk doen? 1907 01:34:22,130 --> 01:34:23,440 Hoe doen we het selecteren? 1908 01:34:23,440 --> 01:34:26,560 En hoe doen we de dingen doen om het ding zodra we hebben het gemaakt? 1909 01:34:26,560 --> 01:34:30,470 Nou, de manier waarop jullie hebben het geleerd in deze klasse is met behulp van iets wat we 1910 01:34:30,470 --> 01:34:32,420 genaamd jQuery. 1911 01:34:32,420 --> 01:34:33,910 Dus wat is jQuery? 1912 01:34:33,910 --> 01:34:37,220 jQuery is een bibliotheek die maakt JavaScript makkelijker om te schrijven. 1913 01:34:37,220 --> 01:34:39,500 Dus iemand nam de tijd en schreef jQuery. 1914 01:34:39,500 --> 01:34:41,530 >> jQuery is eigenlijk geschreven in JavaScript. 1915 01:34:41,530 --> 01:34:44,550 En dan, omdat ze nu deden dit, wij hebben een heleboel functies die 1916 01:34:44,550 --> 01:34:46,020 we kunnen gebruiken die onze leeft echt makkelijk. 1917 01:34:46,020 --> 01:34:48,580 1918 01:34:48,580 --> 01:34:50,030 Dus wat zijn enkele van de dingen die het doet? 1919 01:34:50,030 --> 01:34:51,650 Het maakt het selecteren van elementen makkelijker. 1920 01:34:51,650 --> 01:34:54,020 Het maakt het veranderen van HTML, toevoegen klassen gemakkelijker. 1921 01:34:54,020 --> 01:34:55,360 Het maakt Ajax makkelijker. 1922 01:34:55,360 --> 01:34:58,230 We zullen om dat te krijgen in een tweede. 1923 01:34:58,230 --> 01:35:00,630 >> En het is vergelijkbaar met C libraries. 1924 01:35:00,630 --> 01:35:03,090 Zodat je ook string.h, krijg je strlen. 1925 01:35:03,090 --> 01:35:04,680 U krijgt strcpy, al deze dingen. 1926 01:35:04,680 --> 01:35:09,650 Wanneer u onder andere jQuery, krijg je aardig manieren om elementen te veranderen selecteren 1927 01:35:09,650 --> 01:35:10,390 dingen, et cetera. 1928 01:35:10,390 --> 01:35:12,990 Je krijgt extra functionaliteit dat JavaScript geeft je niet. 1929 01:35:12,990 --> 01:35:15,310 Dus jQuery is geen JavaScript. 1930 01:35:15,310 --> 01:35:18,660 jQuery is een bibliotheek die is geschreven in JavaScript dat JavaScript maakt 1931 01:35:18,660 --> 01:35:20,440 gemakkelijker te schrijven. 1932 01:35:20,440 --> 01:35:23,170 >> Dus jQuery is geen programmeertaal taal. 1933 01:35:23,170 --> 01:35:24,540 Maar JavaScript is. 1934 01:35:24,540 --> 01:35:27,420 1935 01:35:27,420 --> 01:35:27,590 maken. 1936 01:35:27,590 --> 01:35:30,420 Ervoor dat u uw terminologie te krijgen. 1937 01:35:30,420 --> 01:35:32,490 Heeft u nog vragen? 1938 01:35:32,490 --> 01:35:33,882 Ja. 1939 01:35:33,882 --> 01:35:35,132 Is dat een vraag? 1940 01:35:35,132 --> 01:35:37,910 1941 01:35:37,910 --> 01:35:38,350 Oke. 1942 01:35:38,350 --> 01:35:40,080 Dus hoe kan je jQuery gebruiken? 1943 01:35:40,080 --> 01:35:42,390 Nou, als je het schrijven van een aantal JavaScript-code en u voorzien van een 1944 01:35:42,390 --> 01:35:45,570 jQuery aan de bovenkant van uw bestand als een script, het dollar teken gebruikt u 1945 01:35:45,570 --> 01:35:47,310 nu om toegang te krijgen jQuery. 1946 01:35:47,310 --> 01:35:49,860 En dit is iets anders dan het dollar teken in PHP. 1947 01:35:49,860 --> 01:35:51,590 >> Het is hetzelfde symbool dat u typen op je toetsenbord. 1948 01:35:51,590 --> 01:35:52,780 Maar ze betekenen heel verschillende dingen. 1949 01:35:52,780 --> 01:35:56,090 Dollar teken in PHP betekent dit is hoe ik een variabele declareert. 1950 01:35:56,090 --> 01:35:59,120 In JavaScript, als je hebt opgenomen jQuery, het staat voor jQuery. 1951 01:35:59,120 --> 01:36:01,280 Dus hou dat in gedachten. 1952 01:36:01,280 --> 01:36:03,420 Dus hoe kunnen we DOM-elementen te selecteren? 1953 01:36:03,420 --> 01:36:06,500 Nou, als je het op de lelijke JavaScript Zo heeft u toegang tot de 1954 01:36:06,500 --> 01:36:08,240 documenteren globale variabele. 1955 01:36:08,240 --> 01:36:11,170 En dan krijg je element met ID familie. 1956 01:36:11,170 --> 01:36:15,270 Dit is echt lang en langdradig en niet erg aardig. 1957 01:36:15,270 --> 01:36:18,190 >> Of u kunt alle elementen krijgen die een p-tag. 1958 01:36:18,190 --> 01:36:20,080 Dat werkt ook in JavaScript. 1959 01:36:20,080 --> 01:36:22,470 Maar we hebben nooit echt toonde je de syntaxis te veel. 1960 01:36:22,470 --> 01:36:24,620 Wat wij manifesteerden jullie was jQuery. 1961 01:36:24,620 --> 01:36:28,720 Dus dat hele selector omhoog daar dat werd uitgedrukt in JavaScript wordt alleen maar 1962 01:36:28,720 --> 01:36:33,320 gecondenseerd tot deze zeer mooie dollar ondertekenen hashtag familie. 1963 01:36:33,320 --> 01:36:38,480 En $ p, precies waar het is als dat. 1964 01:36:38,480 --> 01:36:41,690 Als u alle tags p selecteren binnen een familie, we een ruimte 1965 01:36:41,690 --> 01:36:42,890 tussen de twee. 1966 01:36:42,890 --> 01:36:44,815 En nu krijgen we al de p -tags in een gezin. 1967 01:36:44,815 --> 01:36:48,740 1968 01:36:48,740 --> 01:36:50,380 >> En er bekend uit? 1969 01:36:50,380 --> 01:36:52,880 Nou, Angela gesproken over CSS selectors. 1970 01:36:52,880 --> 01:36:54,200 Geef me een seconde. 1971 01:36:54,200 --> 01:36:57,230 En dus om een ​​element te selecteren, u gewoon gebruik maken van het hetzelfde als jij 1972 01:36:57,230 --> 01:36:58,530 zou doen met een CSS selector. 1973 01:36:58,530 --> 01:37:00,910 Als je een hash voor ervan, kiest hij door ID. 1974 01:37:00,910 --> 01:37:02,220 Een punt selecteert door klassen. 1975 01:37:02,220 --> 01:37:06,230 Als je gewoon het ding zonder hashes of stippen, kiest hij die tags. 1976 01:37:06,230 --> 01:37:07,140 Vragen. 1977 01:37:07,140 --> 01:37:07,470 Ja? 1978 01:37:07,470 --> 01:37:11,510 >> PUBLIEK: Wanneer we stip in onze HTML, is dat niet jQuery? 1979 01:37:11,510 --> 01:37:13,520 >> JOSEPH ONG: Dot in onze HTML is een JavaScript-ding. 1980 01:37:13,520 --> 01:37:14,750 Het is niet een jQuery ding. 1981 01:37:14,750 --> 01:37:17,620 De manier waarop jullie geleerd met jQuery is. html gebruiken. 1982 01:37:17,620 --> 01:37:21,510 En dan heb je het doorgegeven wat de HTML gaat worden. 1983 01:37:21,510 --> 01:37:23,480 Dus ik zal dat in slechts een tweede eigenlijk. 1984 01:37:23,480 --> 01:37:27,800 Dus hoe kunnen we dingen doen om element keer hebben we gekozen? 1985 01:37:27,800 --> 01:37:30,130 Dus dat is een voorbeeld van selecteren van een element. 1986 01:37:30,130 --> 01:37:32,280 Dus nu willen we dingen doen om het. 1987 01:37:32,280 --> 01:37:35,730 >> Dus in dit geval, laat me terug te gaan naar de vorige dia. 1988 01:37:35,730 --> 01:37:37,360 Het was Bob voorheen. 1989 01:37:37,360 --> 01:37:40,660 En ik wil dat veranderen binnen HTML naar Milo. 1990 01:37:40,660 --> 01:37:43,240 Dus ik bel de HTML functie van het element. 1991 01:37:43,240 --> 01:37:45,580 Dat HTML functie is een werkwijze element. 1992 01:37:45,580 --> 01:37:47,430 En dan geef ik het wat Ik wil de HTML te zijn. 1993 01:37:47,430 --> 01:37:50,560 En het gewoon vervangt wat er in die tag met wat ik geef het. 1994 01:37:50,560 --> 01:37:50,830 Ja. 1995 01:37:50,830 --> 01:37:51,170 Vraag? 1996 01:37:51,170 --> 01:37:57,397 >> PUBLIEK: De hashtag wordt gebruikt alleen voor de jQuery. 1997 01:37:57,397 --> 01:37:59,313 [Onverstaanbaar] 1998 01:37:59,313 --> 01:38:01,230 zouden we dat niet gebruiken. 1999 01:38:01,230 --> 01:38:01,960 >> JOSEPH ONG: Ja, precies. 2000 01:38:01,960 --> 01:38:03,750 Maar maak je niet te veel zorgen over pure webbrowser. 2001 01:38:03,750 --> 01:38:06,670 Ik wil gewoon dat jullie focussen op hoe je zou het doen met jQuery, omdat 2002 01:38:06,670 --> 01:38:10,020 dat gaat het belangrijk deel aan de quiz. 2003 01:38:10,020 --> 01:38:10,400 Rechts. 2004 01:38:10,400 --> 01:38:10,880 Precies. 2005 01:38:10,880 --> 01:38:16,025 Zo zie je maar dat hashtag, zodat komt overeen met het element te selecteren met 2006 01:38:16,025 --> 01:38:18,310 de ID midden vanwege dat hashtag. 2007 01:38:18,310 --> 01:38:19,670 Hashtag betekent ID. 2008 01:38:19,670 --> 01:38:22,870 En dit element heeft een ID van het midden. 2009 01:38:22,870 --> 01:38:24,366 Dus dat is het element dat we kiezen. 2010 01:38:24,366 --> 01:38:27,160 >> PUBLIEK: [onverstaanbaar]. 2011 01:38:27,160 --> 01:38:31,090 dollarteken hashtag [onverstaanbaar]? 2012 01:38:31,090 --> 01:38:31,710 >> JOSEPH ONG: Dus geen. 2013 01:38:31,710 --> 01:38:33,280 De vraag is kan u. Waarde gebruiken. 2014 01:38:33,280 --> 01:38:36,445 En. Waarde werkt alleen op onderdelen die ingangen. 2015 01:38:36,445 --> 01:38:40,950 2016 01:38:40,950 --> 01:38:45,495 In jQuery, zou het . Val, niet. Waarde. 2017 01:38:45,495 --> 01:38:49,080 Dus ik zal een klein voorbeeld te krijgen dat toont dit alles in combinatie 2018 01:38:49,080 --> 01:38:49,850 in een tweede. 2019 01:38:49,850 --> 01:38:53,130 Maar ik denk dat dit wordt een kleine snippet zinvol om mensen zo ver. 2020 01:38:53,130 --> 01:38:55,450 Wil je de HTML te veranderen, bellen met de HTML-methode. 2021 01:38:55,450 --> 01:38:56,432 Ja. 2022 01:38:56,432 --> 01:38:58,200 >> Publiek: Kunt u uitleggen weer de methode? 2023 01:38:58,200 --> 01:39:01,900 >> JOSEPH ONG: een methode is dus gewoon een functie die behoort tot een in deze 2024 01:39:01,900 --> 01:39:04,590 Bij een van deze elementen DOM, want ik zie je 2025 01:39:04,590 --> 01:39:05,940 eerste geselecteerde het element. 2026 01:39:05,940 --> 01:39:07,320 Eigenlijk wil ik gebruik maken van de muis. 2027 01:39:07,320 --> 01:39:09,330 Ik voor het eerst het element geselecteerd. 2028 01:39:09,330 --> 01:39:12,310 En toen riep ik deze HTML functie die het had. 2029 01:39:12,310 --> 01:39:15,710 En omdat deze functie behoort tot dit ding, we noemen het een methode. 2030 01:39:15,710 --> 01:39:19,480 Dat is gewoon een mooie naam voor. 2031 01:39:19,480 --> 01:39:20,730 Zeg dat nog eens. 2032 01:39:20,730 --> 01:39:22,880 2033 01:39:22,880 --> 01:39:25,170 Dus vergeet niet dat we geselecteerd het element nu. 2034 01:39:25,170 --> 01:39:27,810 En we hebben het te zetten binnenkant van het variabele element. 2035 01:39:27,810 --> 01:39:28,600 Correct? 2036 01:39:28,600 --> 01:39:34,380 >> Dus als we willen de HTML op te veranderen binnen, want het was Bob voordat u 2037 01:39:34,380 --> 01:39:36,420 wil die tekst te veranderen om Milo. 2038 01:39:36,420 --> 01:39:37,920 Dus we HTML noemen. 2039 01:39:37,920 --> 01:39:41,610 En we vertellen wat de HTML binnenkant dat element moet nu. 2040 01:39:41,610 --> 01:39:44,107 En zo verandert het aan Milo, want ik gaf het Milo. 2041 01:39:44,107 --> 01:39:46,542 >> PUBLIEK: Dus ze werken samen. 2042 01:39:46,542 --> 01:39:47,030 [Onverstaanbaar] 2043 01:39:47,030 --> 01:39:47,390 >> JOSEPH ONG: Ja, ja. 2044 01:39:47,390 --> 01:39:48,180 Ze werken samen. 2045 01:39:48,180 --> 01:39:50,210 Dus een van hen kiest het element eerste. 2046 01:39:50,210 --> 01:39:52,863 En de tweede doet iets aan. 2047 01:39:52,863 --> 01:39:53,790 Ja. 2048 01:39:53,790 --> 01:39:56,168 >> PUBLIEK: [onverstaanbaar]. 2049 01:39:56,168 --> 01:40:01,280 Als deze methode verschilt van HTML je hebt de methode gelijke werkelijke. 2050 01:40:01,280 --> 01:40:01,560 >> JOSEPH ONG: Yeah. 2051 01:40:01,560 --> 01:40:03,370 Dit is een andere methode. 2052 01:40:03,370 --> 01:40:04,670 Dit is een andere methode. 2053 01:40:04,670 --> 01:40:07,860 En we kunnen dekken dat in slechts een seconde als we in een voorbeeld. 2054 01:40:07,860 --> 01:40:12,000 Ik wil ervoor zorgen dat we versnellen want we hebben niet veel tijd. 2055 01:40:12,000 --> 01:40:15,360 Maar we hebben te laten rijden in de tijd nu. 2056 01:40:15,360 --> 01:40:15,490 OK. 2057 01:40:15,490 --> 01:40:16,430 Cool. 2058 01:40:16,430 --> 01:40:20,130 Dus als je wilt om een ​​klasse toe te voegen, is er ook een add-klasse methode. 2059 01:40:20,130 --> 01:40:24,300 Dit is slechts een voorbeeld van wat je kunt doen met jQuery. 2060 01:40:24,300 --> 01:40:25,950 Dat voegt alleen maar een klasse. 2061 01:40:25,950 --> 01:40:28,660 >> Als u wilt om het te verwijderen, u kunt verwijderen bellen. 2062 01:40:28,660 --> 01:40:32,280 Dat is gewoon een ander ding dat je kunt doen. 2063 01:40:32,280 --> 01:40:35,680 Dus meer voorbeelden van dingen die je kunt doen. 2064 01:40:35,680 --> 01:40:37,510 Dus ik zet ze gewoon op de top als deze? 2065 01:40:37,510 --> 01:40:38,760 Jongste verwijderen. 2066 01:40:38,760 --> 01:40:42,470 2067 01:40:42,470 --> 01:40:45,930 Als ik voer gewoon dat JavaScript op de top van mijn dossier, zal dat werken? 2068 01:40:45,930 --> 01:40:48,540 2069 01:40:48,540 --> 01:40:48,920 Rechts. 2070 01:40:48,920 --> 01:40:50,530 Omdat midden nog niet bestaat. 2071 01:40:50,530 --> 01:40:51,840 Dus dit gaat niet werken. 2072 01:40:51,840 --> 01:40:52,800 Orderuitvoering. 2073 01:40:52,800 --> 01:40:55,040 Het gaat naar de bovenkant eerst. 2074 01:40:55,040 --> 01:40:55,540 Wat? 2075 01:40:55,540 --> 01:40:57,450 >> PUBLIEK: Jongste nog niet bestaat? 2076 01:40:57,450 --> 01:40:57,810 >> JOSEPH ONG: Yeah. 2077 01:40:57,810 --> 01:40:58,710 Jongste bestaat nog niet. 2078 01:40:58,710 --> 01:40:59,600 Precies. 2079 01:40:59,600 --> 01:41:01,320 >> PUBLIEK: Je zei midden. 2080 01:41:01,320 --> 01:41:01,510 >> JOSEPH ONG: Sorry. 2081 01:41:01,510 --> 01:41:02,720 Jongste bestaat nog niet. 2082 01:41:02,720 --> 01:41:04,510 En de andere is heb ik niet Inclusief de jQuery 2083 01:41:04,510 --> 01:41:06,580 file vragen script src. 2084 01:41:06,580 --> 01:41:07,960 Dus dat gaat niet werken. 2085 01:41:07,960 --> 01:41:09,580 Eigenlijk heb ik dat niet in de volgende dia, dat is 2086 01:41:09,580 --> 01:41:10,700 verondersteld om dat te bevestigen, hetzij. 2087 01:41:10,700 --> 01:41:14,120 Maar de manier waarop we dit doen is JavaScript is event driven. 2088 01:41:14,120 --> 01:41:17,410 Dus wat we doen is dat we gebruik maken van een evenement handler om dit te realiseren. 2089 01:41:17,410 --> 01:41:19,510 En zo ik het document te selecteren ingesteld als eerste. 2090 01:41:19,510 --> 01:41:23,810 Ik zeg, OK, wanneer het document klaar, laat me een functie uit te voeren. 2091 01:41:23,810 --> 01:41:25,470 Dus dat is alles wat syntax middelen. 2092 01:41:25,470 --> 01:41:27,100 >> Ik het document geselecteerd. 2093 01:41:27,100 --> 01:41:29,530 Nu, wanneer het document klaar, draaien de functie. 2094 01:41:29,530 --> 01:41:32,970 En dus hier wanneer het document klaar, wat betekent dat alle HTML heeft 2095 01:41:32,970 --> 01:41:36,140 geladen, dan is de functie uit te voeren I dat verwijdert dat element. 2096 01:41:36,140 --> 01:41:40,270 En nu, wanneer ik deze functie uit te voeren dat ik overging in klaar, ik ben 2097 01:41:40,270 --> 01:41:43,780 gegarandeerd dat alle HTML op pagina gaat eerst bestaan. 2098 01:41:43,780 --> 01:41:44,100 Ja. 2099 01:41:44,100 --> 01:41:44,425 Vraag? 2100 01:41:44,425 --> 01:41:48,200 >> Publiek: Wat is het evenement trefwoord binnen de functie? 2101 01:41:48,200 --> 01:41:51,750 >> JOSEPH ONG: Dus dat evenement zoekwoord in de functie is slechts een parameter die 2102 01:41:51,750 --> 01:41:53,490 wordt doorgegeven aan de functie voor elk evenement. 2103 01:41:53,490 --> 01:41:55,470 Het is gewoon iets dat je gratis krijgt. 2104 01:41:55,470 --> 01:41:59,320 Wanneer u gebruik maakt van de belangrijkste handlers in pset8, dat geval zou je zeggen, voor 2105 01:41:59,320 --> 01:42:01,350 Bijvoorbeeld, welke toets u ingedrukt op. 2106 01:42:01,350 --> 01:42:05,540 In dat geval wordt voor een gebeurtenis ready, het is eigenlijk niet super handig. 2107 01:42:05,540 --> 01:42:08,640 Maar voor een toets ingedrukt evenement, het is meer handig, omdat je te weten welke 2108 01:42:08,640 --> 01:42:12,330 ingedrukte toets door de toegang tot de belangrijkste code uit die gebeurtenis object. 2109 01:42:12,330 --> 01:42:13,530 Correct? 2110 01:42:13,530 --> 01:42:15,160 Is dat logisch? 2111 01:42:15,160 --> 01:42:16,280 OK. 2112 01:42:16,280 --> 01:42:16,580 Ja. 2113 01:42:16,580 --> 01:42:17,150 Vraag? 2114 01:42:17,150 --> 01:42:19,290 >> PUBLIEK: Dus kunt u de script-tag lager? 2115 01:42:19,290 --> 01:42:19,940 >> JOSEPH ONG: Dus ja. 2116 01:42:19,940 --> 01:42:21,500 Je kon het script zetten taggen lager. 2117 01:42:21,500 --> 01:42:23,090 Maar dan wordt het gewoon heel rommelig. 2118 01:42:23,090 --> 01:42:26,590 En we willen allemaal centraliseren van onze code op een plaats. 2119 01:42:26,590 --> 01:42:28,290 En dit zal ons toelaten om het te doen. 2120 01:42:28,290 --> 01:42:32,010 Vergeet niet eerder ik zei dat er een mooiere manier zullen elementen 2121 01:42:32,010 --> 01:42:33,880 op de pagina voordat je code uit te voeren? 2122 01:42:33,880 --> 01:42:36,079 En dit is gewoon een leuke manier je zou dat te bereiken. 2123 01:42:36,079 --> 01:42:37,329 >> PUBLIEK: [onverstaanbaar]. 2124 01:42:37,329 --> 01:42:41,710 2125 01:42:41,710 --> 01:42:42,230 >> JOSEPH ONG: Yeah. 2126 01:42:42,230 --> 01:42:43,460 Je zou nog steeds, toch? 2127 01:42:43,460 --> 01:42:46,930 Want vergeet, inbegrepen de bestand aan de bovenkant van de pagina. 2128 01:42:46,930 --> 01:42:49,890 Dus het gaat om eerst uit te voeren voordat je naar de onderkant van de pagina. 2129 01:42:49,890 --> 01:42:54,600 2130 01:42:54,600 --> 01:42:55,180 OK. 2131 01:42:55,180 --> 01:42:59,210 Dus u kunt ook een andere type event handler. 2132 01:42:59,210 --> 01:43:00,640 Dit een gewoon verwerkt klikken. 2133 01:43:00,640 --> 01:43:03,910 Wanneer ik op de jongste, dan het zal verschijnen met een waarschuwing. 2134 01:43:03,910 --> 01:43:05,440 Dit is gewoon een ander soort evenement. 2135 01:43:05,440 --> 01:43:08,840 In tegenstelling tot de gebeurtenis ready, nu u gebruik maken van de gebeurtenis click wanneer u 2136 01:43:08,840 --> 01:43:10,190 klikt op een element. 2137 01:43:10,190 --> 01:43:13,860 >> En dus in dit geval, vergeet niet, de klik handler is om jongste bevestigd. 2138 01:43:13,860 --> 01:43:16,080 Dus het gebeurt alleen wanneer Ik klik op de jongste. 2139 01:43:16,080 --> 01:43:19,510 En in de andere, de gebeurtenis ready werd het document gevoegd. 2140 01:43:19,510 --> 01:43:23,750 Zo wacht op het document klaar te zijn. 2141 01:43:23,750 --> 01:43:25,120 Zinvol? 2142 01:43:25,120 --> 01:43:26,190 Ik denk dat ik kan gaan. 2143 01:43:26,190 --> 01:43:26,610 Ja. 2144 01:43:26,610 --> 01:43:26,980 Vraag? 2145 01:43:26,980 --> 01:43:28,230 >> PUBLIEK: [onverstaanbaar]. 2146 01:43:28,230 --> 01:43:31,676 2147 01:43:31,676 --> 01:43:33,620 in dit geval kunt gebruiken [onverstaanbaar]. 2148 01:43:33,620 --> 01:43:36,650 >> JOSEPH ONG: Oh, ja, want in deze geval, ik moet wachten op de jongste 2149 01:43:36,650 --> 01:43:40,740 element om eerst op het scherm verschijnen voordat ik een klik handler kan hechten aan 2150 01:43:40,740 --> 01:43:43,062 het, dat is waarom ik zet het in van een document klaar. 2151 01:43:43,062 --> 01:43:45,780 2152 01:43:45,780 --> 01:43:46,840 OK. 2153 01:43:46,840 --> 01:43:52,390 En de volgende, dus dit is een groot voorbeeld van hoe je alles zou combineren. 2154 01:43:52,390 --> 01:43:55,930 Dit is gewoon een vorm validatie voorbeeld je hebt gezien in collegezaal. 2155 01:43:55,930 --> 01:43:58,410 Dus neem het stap voor stap als je door deze. 2156 01:43:58,410 --> 01:43:59,590 En het wordt helemaal OK. 2157 01:43:59,590 --> 01:44:01,400 Lees het gewoon van boven naar beneden. 2158 01:44:01,400 --> 01:44:03,030 >> Ik heb een formulier aan de onderkant. 2159 01:44:03,030 --> 01:44:07,590 Wanneer het document klaar is, hecht ik een submit handler aan de vorm, zodat 2160 01:44:07,590 --> 01:44:12,910 toen ik te weten, krijg ik de waarden binnen elk van die middelen. 2161 01:44:12,910 --> 01:44:14,560 En ik controleren of het leeg. 2162 01:44:14,560 --> 01:44:17,090 Als het leeg is, ik return false, omdat Ik wil niet naar het formulier, 2163 01:44:17,090 --> 01:44:18,950 omdat de vorm is verkeerd. 2164 01:44:18,950 --> 01:44:22,040 Als het wachtwoord leeg is of het minder dan acht tekens, weet ik niet indienen 2165 01:44:22,040 --> 01:44:24,470 de vorm, want dat is ook verkeerd. 2166 01:44:24,470 --> 01:44:28,150 En de terugkeer valse gewoon voorkomt de vorm van het indienen en 2167 01:44:28,150 --> 01:44:30,150 gaan naar een nieuwe pagina. 2168 01:44:30,150 --> 01:44:31,310 >> En hopelijk, dit is logisch. 2169 01:44:31,310 --> 01:44:34,650 Ik denk dat jullie moeten lopen via deze code stap voor stap op uw eigen. 2170 01:44:34,650 --> 01:44:38,350 En als je eenmaal begrijpt wat de selecte elementen en dingen doen om het 2171 01:44:38,350 --> 01:44:40,520 precies inhoudt, dit zal veel zin om jou. 2172 01:44:40,520 --> 01:44:41,295 Ja? 2173 01:44:41,295 --> 01:44:44,150 >> Publiek: Wat doet de name = gebruikersnaam betekenen? 2174 01:44:44,150 --> 01:44:48,530 >> JOSEPH ONG: Dus de naam = gebruikersnaam en name = wachtwoord betekent alleen kijken naar de 2175 01:44:48,530 --> 01:44:50,730 attribuut ongeacht u selecteren. 2176 01:44:50,730 --> 01:44:51,790 En dan dat moet passen. 2177 01:44:51,790 --> 01:44:53,870 Dus we gaan in de registratie. 2178 01:44:53,870 --> 01:44:56,240 En dan kijken we naar alle ingangen en registratie. 2179 01:44:56,240 --> 01:44:59,990 En dan halen we die waar de naam attribuut is gelijk aan de gebruikersnaam. 2180 01:44:59,990 --> 01:45:04,040 Dus alleen die eerste selector selecteert de gebruikersnaam invoeren. 2181 01:45:04,040 --> 01:45:08,220 En die tweede selector selecteert alleen het wachtwoord, want die hebben 2182 01:45:08,220 --> 01:45:12,240 hun naam kenmerken in te stellen als wat ze hoort te zijn. 2183 01:45:12,240 --> 01:45:12,575 Vraag? 2184 01:45:12,575 --> 01:45:17,030 >> PUBLIEK: Op indienen, hoe werkt het onderste deel op te lossen het bovenste deel? 2185 01:45:17,030 --> 01:45:19,350 >> JOSEPH ONG: Dus dat is omdat van de event handler. 2186 01:45:19,350 --> 01:45:23,000 Dus we wachten op een evenement in te dienen die wordt ontslagen uit het formulier. 2187 01:45:23,000 --> 01:45:24,730 En dat is alles wat te maken. 2188 01:45:24,730 --> 01:45:26,080 Waarom noem ik indienen daarboven? 2189 01:45:26,080 --> 01:45:28,870 Het zegt, wanneer het formulier wordt ingediend, Ik krijg een indienen evenement. 2190 01:45:28,870 --> 01:45:33,480 Dus laat me onderscheppen precies dat en voer deze code plaats. 2191 01:45:33,480 --> 01:45:33,823 Ja? 2192 01:45:33,823 --> 01:45:35,866 >> PUBLIEK: Waarom heb je om de functie evenement? 2193 01:45:35,866 --> 01:45:38,580 Waarom kan je niet gewoon [onverstaanbaar]? 2194 01:45:38,580 --> 01:45:41,140 >> JOSEPH ONG: Omdat in JavaScript, u moeten de functies verklaren. 2195 01:45:41,140 --> 01:45:42,910 Dat is gewoon hoe het werkt in JavaScript. 2196 01:45:42,910 --> 01:45:44,800 Je moet zeggen dat het gaat een functie uit te voeren. 2197 01:45:44,800 --> 01:45:47,290 Dus je zegt dat je bent verwacht hier een functie in plaats van 2198 01:45:47,290 --> 01:45:48,260 net accolades. 2199 01:45:48,260 --> 01:45:50,460 >> PUBLIEK: En de functie is wat volgt? 2200 01:45:50,460 --> 01:45:50,650 >> JOSEPH ONG: Yeah. 2201 01:45:50,650 --> 01:45:52,790 De functie is wat er in zit de accolades na 2202 01:45:52,790 --> 01:45:53,630 die functie zoekwoord. 2203 01:45:53,630 --> 01:45:54,045 Ja? 2204 01:45:54,045 --> 01:45:55,295 >> PUBLIEK: [onverstaanbaar]. 2205 01:45:55,295 --> 01:46:00,180 2206 01:46:00,180 --> 01:46:00,660 >> JOSEPH ONG: Voor indienen? 2207 01:46:00,660 --> 01:46:03,520 >> PUBLIEK: Nee, voor de functie zonder de gebeurtenis. 2208 01:46:03,520 --> 01:46:03,770 >> JOSEPH ONG: Yeah. 2209 01:46:03,770 --> 01:46:05,610 Dus zonder de gebeurtenis, kunt u dat. 2210 01:46:05,610 --> 01:46:08,480 Als u de gebeurtenis niet nodig, dan kun je gewoon weglaten. 2211 01:46:08,480 --> 01:46:12,220 Maar als je dat doet, dan ben je zet ze gewoon daar. 2212 01:46:12,220 --> 01:46:12,520 Ja. 2213 01:46:12,520 --> 01:46:13,190 Snelle vraag? 2214 01:46:13,190 --> 01:46:14,440 >> PUBLIEK: [onverstaanbaar]. 2215 01:46:14,440 --> 01:46:21,170 2216 01:46:21,170 --> 01:46:21,440 >> JOSEPH ONG: Yeah. 2217 01:46:21,440 --> 01:46:24,550 Want wat je hoeft te doen, de document.ready zegt gewoon wachten tot alle 2218 01:46:24,550 --> 01:46:26,540 de HTML op de pagina om eerst te laden. 2219 01:46:26,540 --> 01:46:30,510 En meestal, je wilt dat je elementen in plaats voordat u een code uitvoert. 2220 01:46:30,510 --> 01:46:31,030 Oke. 2221 01:46:31,030 --> 01:46:32,180 We moeten naar Ajax te komen. 2222 01:46:32,180 --> 01:46:33,110 We hebben niet veel tijd. 2223 01:46:33,110 --> 01:46:35,170 Dus voor-en nadelen. 2224 01:46:35,170 --> 01:46:37,450 JavaScript is makkelijker te proberen schrijven met jQuery. 2225 01:46:37,450 --> 01:46:38,930 Maar jQuery is een beetje traag. 2226 01:46:38,930 --> 01:46:42,290 >> Het is net als PHP is trager dan C, want het is geïnterpreteerd. 2227 01:46:42,290 --> 01:46:45,690 En jQuery is een beetje trager dan JavaScript, want het doet veel 2228 01:46:45,690 --> 01:46:46,630 dingen onder de motorkap. 2229 01:46:46,630 --> 01:46:48,660 En dus als je met behulp van jQuery, het is net een klein beetje langzamer dan 2230 01:46:48,660 --> 01:46:51,630 JavaScript, hoewel geeft je mooie elegantie. 2231 01:46:51,630 --> 01:46:53,970 En tenslotte, Ajax. 2232 01:46:53,970 --> 01:46:59,170 Tot nu toe met Ajax, heb je niet gezien Ajax in weer termen van pset7, omdat 2233 01:46:59,170 --> 01:47:01,150 als je dat doet, je legt een formulier om offerte. 2234 01:47:01,150 --> 01:47:02,350 Het laadt een nieuwe pagina. 2235 01:47:02,350 --> 01:47:04,440 Zodat u deze grote witte flits te krijgen op de pagina, terwijl dat 2236 01:47:04,440 --> 01:47:06,820 tweede pagina wordt geladen, correct? 2237 01:47:06,820 --> 01:47:08,780 >> Het zou wel heel leuk zijn als je niet over deze flash. 2238 01:47:08,780 --> 01:47:11,600 Zoals Facebook, als je gewoon gaat u naar de bodem, worden nieuwe inhoud 2239 01:47:11,600 --> 01:47:13,490 zonder het vernieuwen van de gehele pagina. 2240 01:47:13,490 --> 01:47:15,420 Dus zoiets als dit zou mooi zijn. 2241 01:47:15,420 --> 01:47:17,370 Dit is JavaScript-code aan de linkerkant. 2242 01:47:17,370 --> 01:47:19,390 Je krijgt wat is de binnenkant van die input. 2243 01:47:19,390 --> 01:47:21,340 U krijgt de voorraad info van Yahoo! 2244 01:47:21,340 --> 01:47:27,440 En dan een grote reeks maak je dat zegt: OK, dit is de boodschap die ik wil 2245 01:47:27,440 --> 01:47:28,400 om te laten zien op het scherm. 2246 01:47:28,400 --> 01:47:32,280 En dan zet je dat bericht binnen van sommige HTML-element dat wordt 2247 01:47:32,280 --> 01:47:33,970 op het scherm. 2248 01:47:33,970 --> 01:47:35,540 >> Dus dat is alles wat hier gebeurt. 2249 01:47:35,540 --> 01:47:39,410 Dus eigenlijk, want dit is alles JavaScript en je hoeft niet te lopen 2250 01:47:39,410 --> 01:47:42,980 meer PHP, dit zal ervoor zorgen dat de pagina niet te vernieuwen. 2251 01:47:42,980 --> 01:47:47,470 Dus dit is gewoon een abstract idee dat ik hier zeg voor nu. 2252 01:47:47,470 --> 01:47:50,630 Het abstracte idee is dat als je het doet alle in JavaScript, hoeft u niet een 2253 01:47:50,630 --> 01:47:52,330 pagina te vernieuwen. 2254 01:47:52,330 --> 01:47:53,800 Maar hoe doe je dat eigenlijk doen? 2255 01:47:53,800 --> 01:47:56,230 >> Nou, laten we praten over Een probleem betreffende deze eerste. 2256 01:47:56,230 --> 01:47:59,340 Een probleem in JavaScript, uitvoering synchroon. 2257 01:47:59,340 --> 01:48:02,000 Dus je moet wachten voor een lijn is voltooid voordat u 2258 01:48:02,000 --> 01:48:03,370 voer de volgende regel. 2259 01:48:03,370 --> 01:48:06,130 En wat als ik ga naar Yahoo!, en hun servers zijn echt traag, en 2260 01:48:06,130 --> 01:48:08,790 het kost ze drie seconden geef me dat bestand info? 2261 01:48:08,790 --> 01:48:12,620 Toen raakte ik die prijs lijn, als de uitvoering synchroon, omdat het door 2262 01:48:12,620 --> 01:48:15,390 standaard, wat het alleen maar te doen is uw browser gaat kraam voor 2263 01:48:15,390 --> 01:48:15,930 drie seconden. 2264 01:48:15,930 --> 01:48:18,900 En je bent niet van plan om te kunnen doen alles terwijl het wordt dat gegevens. 2265 01:48:18,900 --> 01:48:20,010 Het zal worden bevroren. 2266 01:48:20,010 --> 01:48:20,800 >> En dat is slecht. 2267 01:48:20,800 --> 01:48:23,390 Je wilt niet dat een gebruiker hebben een bevroren webpagina. 2268 01:48:23,390 --> 01:48:24,170 Correct? 2269 01:48:24,170 --> 01:48:25,480 Dat is gewoon slecht. 2270 01:48:25,480 --> 01:48:26,770 Iedereen is het eens? 2271 01:48:26,770 --> 01:48:29,270 Als je door Facebook en het bevriest en je kunt niets doen, je 2272 01:48:29,270 --> 01:48:31,920 je echt gefrustreerd. 2273 01:48:31,920 --> 01:48:34,960 Dus de oplossing is dat we iets maken asynchrone plaats. 2274 01:48:34,960 --> 01:48:38,910 Dus al deze asynchrone ding zegt is, ga ik deze vragen 2275 01:48:38,910 --> 01:48:40,280 URL voor sommige gegevens. 2276 01:48:40,280 --> 01:48:41,610 En dan ga ik om door te gaan. 2277 01:48:41,610 --> 01:48:45,330 Ik ga gewoon blijven uitvoeren welke code dat was na dat. 2278 01:48:45,330 --> 01:48:49,290 >> En dan wanneer die gegevens klaar is, dan zal ik het te verwerken. 2279 01:48:49,290 --> 01:48:50,540 Dat is alles wat hij zegt. 2280 01:48:50,540 --> 01:48:52,795 2281 01:48:52,795 --> 01:48:56,710 >> PUBLIEK: Ajax maakt net code asynchrone? 2282 01:48:56,710 --> 01:48:58,560 >> JOSEPH ONG: Het is een asynchrone manier van het ophalen van gegevens. 2283 01:48:58,560 --> 01:49:01,230 Dus het eerste wat over Ajax is het laat me gegevens op te halen 2284 01:49:01,230 --> 01:49:03,170 vanuit een externe site. 2285 01:49:03,170 --> 01:49:07,045 En het tweede punt is het zorgt ervoor dat mijn pagina niet blokkeert terwijl ik 2286 01:49:07,045 --> 01:49:07,970 het ophalen van die gegevens. 2287 01:49:07,970 --> 01:49:09,600 Dat is het asynchrone deel ervan. 2288 01:49:09,600 --> 01:49:13,040 Omdat het gaat ergens anders, omdat ik het zeg ik blijven gaan terwijl 2289 01:49:13,040 --> 01:49:14,900 is het ophalen van die gegevens, die maakt het asynchrone. 2290 01:49:14,900 --> 01:49:17,170 Ik blijf uitvoeren. 2291 01:49:17,170 --> 01:49:18,960 >> Dus hou dat asynchrone idee in het achterhoofd. 2292 01:49:18,960 --> 01:49:22,010 En ik zal je laten zien wat het verschil is. 2293 01:49:22,010 --> 01:49:23,920 De synchrone versie is aan de linkerkant. 2294 01:49:23,920 --> 01:49:26,240 De asynchrone versie is aan de rechterkant. 2295 01:49:26,240 --> 01:49:29,170 Kijk naar de cijfers te zien welke stappen komen overeen met wat 2296 01:49:29,170 --> 01:49:30,610 voert bij elke regel. 2297 01:49:30,610 --> 01:49:32,730 Daar, de waarschuwing verschijnt als eerste. 2298 01:49:32,730 --> 01:49:34,590 Omdat het krijgen van voorraad info van Yahoo! 2299 01:49:34,590 --> 01:49:37,250 duurt drie seconden, stopt drie seconden. 2300 01:49:37,250 --> 01:49:39,880 En dan waarschuwt de prijs na die drie seconden. 2301 01:49:39,880 --> 01:49:43,690 >> Dus nu, dat alert shows up destijds - 2302 01:49:43,690 --> 01:49:44,610 drie seconden in 2303 01:49:44,610 --> 01:49:47,670 En dan waarschuwt door na dat. 2304 01:49:47,670 --> 01:49:48,930 Dus het gaat gewoon stap voor stap. 2305 01:49:48,930 --> 01:49:51,200 Het is net wat jullie zou aanvaarden, correct? 2306 01:49:51,200 --> 01:49:54,170 Bij asynchrone uitvoering, u eerst waarschuwen. 2307 01:49:54,170 --> 01:49:57,410 Dan ga je uit om deze URL. 2308 01:49:57,410 --> 01:49:59,530 En je zegt, ik ga gewoon vragen voor de gegevens. 2309 01:49:59,530 --> 01:50:01,170 En dan ga ik verwerken later. 2310 01:50:01,170 --> 01:50:04,230 Dus het voert onmiddellijk de volgende regel nadat ik dat 2311 01:50:04,230 --> 01:50:05,710 asynchrone aanvraag. 2312 01:50:05,710 --> 01:50:08,920 >> Dus een 0,001 seconden, zie je alert hi. 2313 01:50:08,920 --> 01:50:10,960 Uitvoeren die functie, alert bye. 2314 01:50:10,960 --> 01:50:14,240 En omdat ik een belofte gedaan dat ik de gegevens later verwerken, wat 2315 01:50:14,240 --> 01:50:17,920 gebeurt is wanneer die gegevens komt terug drie seconden later, voer ik dat 2316 01:50:17,920 --> 01:50:21,380 functie die ik daar. 2317 01:50:21,380 --> 01:50:21,870 Ja? 2318 01:50:21,870 --> 01:50:25,750 >> Publiek: Kunt u aangeven of verduidelijken wat Ajax betekent? 2319 01:50:25,750 --> 01:50:30,460 >> JOSEPH ONG: Dus Ajax is een manier dat als ik gegevens nodig hebben als ik op een website en ik 2320 01:50:30,460 --> 01:50:34,690 willen niet de pagina te vernieuwen, dan Ik gebruik deze technologie genaamd Ajax. 2321 01:50:34,690 --> 01:50:40,630 Die in wezen betekent gewoon, ga, haal gegevens van een andere website. 2322 01:50:40,630 --> 01:50:43,724 En doe het op een manier die net niet blokkeert mijn webpagina. 2323 01:50:43,724 --> 01:50:46,650 >> PUBLIEK: Dus is dat een inherent deel van JavaScript of jQuery? 2324 01:50:46,650 --> 01:50:50,590 >> JOSEPH ONG: Zo schreef iemand een manier om te doen dit in JavaScript een lange tijd geleden. 2325 01:50:50,590 --> 01:50:52,050 Op een gegeven moment, het niet bestaan. 2326 01:50:52,050 --> 01:50:56,630 En zo iemand uitgevonden deze techniek zodat mensen deze gegevens op te vragen 2327 01:50:56,630 --> 01:50:57,680 op deze manier. 2328 01:50:57,680 --> 01:50:59,550 En zij schreven wat spullen om het voor je doen. 2329 01:50:59,550 --> 01:51:01,605 En jQuery alleen dit geeft je zeer leuke manier om het te doen 2330 01:51:01,605 --> 01:51:03,112 met deze $. krijgen functie. 2331 01:51:03,112 --> 01:51:07,200 2332 01:51:07,200 --> 01:51:09,480 vragen? 2333 01:51:09,480 --> 01:51:11,560 Ik kan beantwoorden vragen over Ajax daarna ook. 2334 01:51:11,560 --> 01:51:13,870 Ik zal er zijn. 2335 01:51:13,870 --> 01:51:16,390 >> Dus het laten we ons data te halen zonder de pagina te vernieuwen. 2336 01:51:16,390 --> 01:51:18,200 En laten we ons daarbij in een asynchrone manier dat 2337 01:51:18,200 --> 01:51:19,450 niet de pagina te bevriezen. 2338 01:51:19,450 --> 01:51:22,680 2339 01:51:22,680 --> 01:51:27,310 Te lang, niet gelezen of dat verklaring was te lang voor u. 2340 01:51:27,310 --> 01:51:29,430 Dus eindelijk, cross-site scripting aanvallen. 2341 01:51:29,430 --> 01:51:30,910 We zagen dit met Zamyla. 2342 01:51:30,910 --> 01:51:34,285 Als in mijn gegevensbestand iemand heeft deze naam, dat is dit script-tag, en ik 2343 01:51:34,285 --> 01:51:38,280 heb wat code op mijn pagina die wordt afgedrukt uit de namen van mensen in een rij, of ik heb 2344 01:51:38,280 --> 01:51:43,310 JavaScript-code die inserts deze naam in de pagina, 2345 01:51:43,310 --> 01:51:45,680 wat HTML wordt geproduceerd? 2346 01:51:45,680 --> 01:51:47,290 Nou, print ik de HTML-tag. 2347 01:51:47,290 --> 01:51:48,390 Print ik al deze tags. 2348 01:51:48,390 --> 01:51:50,740 >> Ik bij het deel waar ik afdrukken met mijn vrienden. 2349 01:51:50,740 --> 01:51:52,980 Print ik Lauren uit. 2350 01:51:52,980 --> 01:51:54,200 Het afdrukken Milo uit. 2351 01:51:54,200 --> 01:51:56,810 En dan mijn naam in de database is script bericht 2352 01:51:56,810 --> 01:51:58,060 onflatteuze Facebook-status. 2353 01:51:58,060 --> 01:52:00,740 2354 01:52:00,740 --> 01:52:04,330 Omdat ik geplaatst deze in de pagina want het lijkt erop dat JavaScript, wanneer 2355 01:52:04,330 --> 01:52:07,930 Deze pagina wordt verzonden naar de gebruiker, het wordt uitgevoerd als webbrowser. 2356 01:52:07,930 --> 01:52:10,800 En dus dit is wat wij noemen een cross-site scripting-aanval. 2357 01:52:10,800 --> 01:52:14,570 Iemand zet schadelijke informatie in database die overeenkomen met 2358 01:52:14,570 --> 01:52:17,080 wat extra touw of JavaScript-string. 2359 01:52:17,080 --> 01:52:20,130 >> En wanneer het wordt afgedrukt op de pagina op deze manier, wat dan 2360 01:52:20,130 --> 01:52:22,580 gebeurt, is dat slechte code wordt uitgevoerd dat ik niet van plan was 2361 01:52:22,580 --> 01:52:25,110 voor te krijgen uitgevoerd. 2362 01:52:25,110 --> 01:52:28,230 En dat is alles wat een cross-site scripting-aanval is. 2363 01:52:28,230 --> 01:52:31,790 En de manier waarop je rond dit is als Zamyla gezegd. 2364 01:52:31,790 --> 01:52:34,340 Je gewoon dingen verpakken in HTML speciale tekens. 2365 01:52:34,340 --> 01:52:39,460 En deze HTML speciale tekens is een PHP functie die zal voorkomen dat dit soort 2366 01:52:39,460 --> 01:52:42,000 van wat er met je gebeurt als je een kwaadwillende 2367 01:52:42,000 --> 01:52:43,830 snaar in uw database. 2368 01:52:43,830 --> 01:52:47,650 Het ontsnapt het gewoon, zodat het niet krijgen geïnterpreteerd als HTML. 2369 01:52:47,650 --> 01:52:50,960 Het vervangt de kleine haakjes met wat we entiteiten noemen. 2370 01:52:50,960 --> 01:52:52,250 En we gingen dan deze in collegezaal ook. 2371 01:52:52,250 --> 01:52:55,800 Dus ik denk dat jullie moeten hebben een goede greep op dat. 2372 01:52:55,800 --> 01:52:57,420 Vragen? 2373 01:52:57,420 --> 01:52:57,820 Ja. 2374 01:52:57,820 --> 01:53:00,860 >> PUBLIEK: Dus hoe zou de [onverstaanbaar]? 2375 01:53:00,860 --> 01:53:01,555 >> JOSEPH ONG: Zeg dat nog eens. 2376 01:53:01,555 --> 01:53:02,500 >> Publiek: Hoe zou de monitor - 2377 01:53:02,500 --> 01:53:02,860 >> JOSEPH ONG: Juist. 2378 01:53:02,860 --> 01:53:06,080 Zodat je iets dat zegt, wanneer Ik schrijf me in, typ mijn naam. 2379 01:53:06,080 --> 01:53:09,390 Ik typ je gewoon op dat gebied, mijn naam is stript bericht unflattering Facebook 2380 01:53:09,390 --> 01:53:11,570 staat dicht script-tag. 2381 01:53:11,570 --> 01:53:15,690 En dat alleen maar in het gets zetten gegevensbestand, want ik kan niet zeggen dat iemand 2382 01:53:15,690 --> 01:53:18,260 in de wereld heeft geen naam hebben met een pijl naar links in het of de 2383 01:53:18,260 --> 01:53:19,036 woord script in. 2384 01:53:19,036 --> 01:53:21,330 Dat is niet echt zinvol. 2385 01:53:21,330 --> 01:53:24,560 Dus ik moet gewoon zorgen dat ik ontsmetten van de dingen voordat ik print het 2386 01:53:24,560 --> 01:53:25,420 naar de pagina. 2387 01:53:25,420 --> 01:53:27,140 >> PUBLIEK: Dus de HTML speciale kaarten voorkomt dat de script-tags? 2388 01:53:27,140 --> 01:53:28,710 >> JOSEPH ONG: Yeah. 2389 01:53:28,710 --> 01:53:29,960 Het maakt dus niet voorkomen dat de script-tags. 2390 01:53:29,960 --> 01:53:32,320 Het maakt zeker dat de script-tags niet krijgen 2391 01:53:32,320 --> 01:53:35,120 geïnterpreteerd als HTML of - 2392 01:53:35,120 --> 01:53:35,400 ja. 2393 01:53:35,400 --> 01:53:38,470 Het komt gewoon als wat het eigenlijk is. 2394 01:53:38,470 --> 01:53:39,220 Oke. 2395 01:53:39,220 --> 01:53:40,930 Dus dat was de quiz beoordeling. 2396 01:53:40,930 --> 01:53:41,830 Cool. 2397 01:53:41,830 --> 01:53:45,088 >> [Applaus]