1 00:00:00,000 --> 00:00:08,070 2 00:00:08,070 --> 00:00:10,430 >> R. J. Aquino: Laat ons net begin. 3 00:00:10,430 --> 00:00:12,310 So dit is Quiz 1. 4 00:00:12,310 --> 00:00:14,890 Hier is 'n paar hoë-vlak inligting. 5 00:00:14,890 --> 00:00:19,915 Die About page vir die toets is op hierdie URL, nie meer CS50.net, alhoewel dit 6 00:00:19,915 --> 00:00:21,080 sal nog steeds werk. 7 00:00:21,080 --> 00:00:26,920 Dit is CS50.harvard.edu/quizzes/2013/1. 8 00:00:26,920 --> 00:00:31,070 Dit is die groot About page, jy vertel waar en wanneer, naamlik volgende Woensdag 9 00:00:31,070 --> 00:00:32,100 in 'n klomp van die kamers. 10 00:00:32,100 --> 00:00:36,120 En teen volgende Woensdag, ek beteken twee dae van nou af. 11 00:00:36,120 --> 00:00:37,890 Al hierdie inligting is daar. 12 00:00:37,890 --> 00:00:39,110 Maar dit is kumulatiewe. 13 00:00:39,110 --> 00:00:43,790 >> So alles van die eerste helfte van die jaar is potensieel op die toets, 14 00:00:43,790 --> 00:00:50,780 want jy kan nie regtig gevorderde doen dinge in C sonder indien toestande en 15 00:00:50,780 --> 00:00:51,920 vir loops en dies meer. 16 00:00:51,920 --> 00:00:55,580 Maar daar sal 'n klem op die wees materiaal bedek sedert Quiz 0, 17 00:00:55,580 --> 00:00:59,570 begin met structs en File Ek / O. Dit is tipies meer 18 00:00:59,570 --> 00:01:01,620 uitdagend as Quiz 0. 19 00:01:01,620 --> 00:01:03,870 Die gemiddelde telling is gewoonlik laer. 20 00:01:03,870 --> 00:01:05,980 Studeer hard. 21 00:01:05,980 --> 00:01:09,340 >> Terwyl jy studeer, is seker te gebruik CS50/discuss jou vrae te plaas 22 00:01:09,340 --> 00:01:10,830 en lees ander mense se vrae. 23 00:01:10,830 --> 00:01:13,550 So as jy nie enige vrae het nie, teken in en lees 24 00:01:13,550 --> 00:01:14,580 jou vriende se vrae. 25 00:01:14,580 --> 00:01:16,560 Hulle is waarskynlik 'n goeie vrae. 26 00:01:16,560 --> 00:01:17,730 En neem aan die praktyk vasvrae. 27 00:01:17,730 --> 00:01:20,750 Ons het al gee vasvrae vir sewe of agt jaar. 28 00:01:20,750 --> 00:01:22,180 Hulle is almal online. 29 00:01:22,180 --> 00:01:25,540 Toekomstige vrae is soortgelyk om ou vrae. 30 00:01:25,540 --> 00:01:26,550 Dit is hoe ons dit maak. 31 00:01:26,550 --> 00:01:27,740 >> Die toets nog nie bestaan ​​nie. 32 00:01:27,740 --> 00:01:28,670 Nie een van ons het dit gesien. 33 00:01:28,670 --> 00:01:32,496 Maar dit sal lyk vorige vasvrae. 34 00:01:32,496 --> 00:01:36,500 Vir hierdie oorsig sessie, is dit nie 'n volledige lys van onderwerpe. 35 00:01:36,500 --> 00:01:40,740 Jy kan nie net bywoon en dan perfek gereed vir die toets. 36 00:01:40,740 --> 00:01:43,330 Anders, sou dit nie dat baie van 'n toets. 37 00:01:43,330 --> 00:01:46,270 En dit is ook nie noodwendig alles wat jy nodig het om te weet oor enige 38 00:01:46,270 --> 00:01:46,970 gegewe onderwerp. 39 00:01:46,970 --> 00:01:50,520 Dit is bedoel om jou bloot te stel aan die dinge Ons het gedek, herinner u wat ons 40 00:01:50,520 --> 00:01:53,070 gedek, en die wyse wat ons gedek nie. 41 00:01:53,070 --> 00:01:57,030 Maar jy sal verder gaan en dieper as jy te dubbel-check studeer 42 00:01:57,030 --> 00:02:00,230 dat jy alles oor enige gegewe weet onderwerp en dat jy in gevul het 43 00:02:00,230 --> 00:02:03,320 al die hoeke gedek in lesing. 44 00:02:03,320 --> 00:02:07,980 >> Die quiz notas vertel om te gaan na die skrywer notas, kyk lesing videos. 45 00:02:07,980 --> 00:02:10,155 Dit is 'n goeie manier om seker te maak jy het bedek al jou basisse. 46 00:02:10,155 --> 00:02:12,670 47 00:02:12,670 --> 00:02:17,340 So jy begin, toe ek hierdie skyfies, het ek probeer om te sit waar ek gevind 48 00:02:17,340 --> 00:02:18,350 inligting. 49 00:02:18,350 --> 00:02:22,890 So vir File I / O, byvoorbeeld, Week 7, Maandag se lesing, en die gepos 50 00:02:22,890 --> 00:02:27,960 Artikel 6 en Probleem Stel almal inligting oor File I / O. Ek het dit gedoen 51 00:02:27,960 --> 00:02:28,840 dit vir elke onderwerp. 52 00:02:28,840 --> 00:02:33,010 So kan die titel skyfies nuttig wees vir jou. 53 00:02:33,010 --> 00:02:38,950 >> So hier het ons File I / O. Onthou, in Probleem Stel 5, ons gebruik fopen, fclose, 54 00:02:38,950 --> 00:02:41,210 fwrite, fread, en fseek. 55 00:02:41,210 --> 00:02:48,090 Nadat verhaal 30ish JPEG en nadat verklein en deurmekaar met 56 00:02:48,090 --> 00:02:50,320 bitmaps, moet jy redelik vertroud met hierdie funksies 57 00:02:50,320 --> 00:02:51,830 en hoe hulle werk. 58 00:02:51,830 --> 00:02:54,420 As jy nie meer bekend is, beslis hulle weer hersien. 59 00:02:54,420 --> 00:02:56,860 En maak seker dat jy verstaan ​​wat die verskillende argumente is, 60 00:02:56,860 --> 00:02:58,260 wanneer dit gebruik word. 61 00:02:58,260 --> 00:03:03,620 >> Maar die algemene lêer-verwante foute jy kan gevra word oor - 62 00:03:03,620 --> 00:03:07,270 Wel, as jy vergeet het om te kyk of fopen eintlik gewerk het voor jy gaan 63 00:03:07,270 --> 00:03:08,350 verander 'n lêer. 64 00:03:08,350 --> 00:03:09,760 Dit kan sleg wees. 65 00:03:09,760 --> 00:03:13,560 As jy vergeet het n lêer te fclose wat jy fopened, dit is soortgelyk aan 66 00:03:13,560 --> 00:03:14,400 'n geheugenlek. 67 00:03:14,400 --> 00:03:15,980 Dit is baie sleg. 68 00:03:15,980 --> 00:03:18,670 En vergeet om te sien of jy bereik die einde van die lêer voordat jy 69 00:03:18,670 --> 00:03:19,790 begin skryf om dit te. 70 00:03:19,790 --> 00:03:22,320 >> So as jy sê, hey, ek is by die die einde van die lêer. 71 00:03:22,320 --> 00:03:23,750 Gee my 5 meer grepe. 72 00:03:23,750 --> 00:03:27,370 Wel, dit is waarskynlik nie gaan uitwerk soos jy verwag. 73 00:03:27,370 --> 00:03:30,930 Dit is regtig dit vir File I / O, omdat ons so baie van dit het 74 00:03:30,930 --> 00:03:32,300 met die probleem sit. 75 00:03:32,300 --> 00:03:36,000 So as jy verstaan ​​wat aan die gang was in Probleem Stel 5, onthou die bitmats 76 00:03:36,000 --> 00:03:40,090 en die JPEG, dan is jy waarskynlik al stel vir File I / O. As dit is 'n bietjie 77 00:03:40,090 --> 00:03:44,770 fuzzy, beslis hersien dat die probleem stel en die gepaardgaande materiaal. 78 00:03:44,770 --> 00:03:51,110 >> Structs was die onderwerp wat op die lyn tussen Quiz 0 en Quiz 1. 79 00:03:51,110 --> 00:03:53,090 Het nogal maak nie die sny vir Quiz 0. 80 00:03:53,090 --> 00:03:57,040 En hulle sal beslis wees op Quiz 1, Week 7, Maandag. 81 00:03:57,040 --> 00:03:58,150 Wat is 'n struct? 82 00:03:58,150 --> 00:04:00,250 Hier wys ons 'n struct. 83 00:04:00,250 --> 00:04:03,140 Dit is soos 'n nuwe soort. 84 00:04:03,140 --> 00:04:07,940 Dit is soos 'n houer vir verskeie velde. 85 00:04:07,940 --> 00:04:12,970 >> In hierdie geval, het ons 'n struct verklaar student wat twee velde - 86 00:04:12,970 --> 00:04:17,750 'n string wat ons noem die naam en 'n int dat ons 'n beroep ouderdom. 87 00:04:17,750 --> 00:04:21,450 So wanneer ek gaan om studente of ek studente te verander, sal ek in staat wees om te 88 00:04:21,450 --> 00:04:24,430 toegang tot hul naam en hul ouderdom. 89 00:04:24,430 --> 00:04:26,670 Kom ons kyk na 'n paar kode vir wat. 90 00:04:26,670 --> 00:04:29,090 Hier sien ons dat ek verklaar 'n student se, net soos 91 00:04:29,090 --> 00:04:30,300 Ek verklaar dat enige veranderlike - 92 00:04:30,300 --> 00:04:32,430 int x, int y, ensovoorts. 93 00:04:32,430 --> 00:04:34,180 >> Hier is die student se. 94 00:04:34,180 --> 00:04:37,370 Hy begin met niks in sy veld. 95 00:04:37,370 --> 00:04:38,240 So laat ons hulle weer. 96 00:04:38,240 --> 00:04:40,681 Jy stel velde van 'n struct met dot. 97 00:04:40,681 --> 00:04:43,780 So ek het hier gesê 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 Jy kan ook velde werk dieselfde manier wat jy wil werk 100 00:04:48,500 --> 00:04:49,550 die waarde van 'n veranderlike. 101 00:04:49,550 --> 00:04:53,270 So ek wil my naam te verander van RJ met geen tyd om te R. J. gespel die 102 00:04:53,270 --> 00:04:54,540 regte manier. 103 00:04:54,540 --> 00:04:58,890 Dit sou s.name word = RJ, dieselfde soos ons sê dit oorspronklik. 104 00:04:58,890 --> 00:05:00,030 En dan kan jy toegang tot hulle. 105 00:05:00,030 --> 00:05:00,930 >> Sodat ons hulle gestel het. 106 00:05:00,930 --> 00:05:01,840 Ons het hulle opgedateer. 107 00:05:01,840 --> 00:05:03,890 Jy kan ook toegang verkry tot hulle in die baie dieselfde manier. 108 00:05:03,890 --> 00:05:09,330 So hier, ek is uit te druk R. J. Is 21 jaar oud. 109 00:05:09,330 --> 00:05:14,700 En ek is die toegang tot die waardes met s.name en s.age. 110 00:05:14,700 --> 00:05:17,040 So dit is die toegang tot structs met die dot-notasie. 111 00:05:17,040 --> 00:05:17,850 Yep, bevraagteken? 112 00:05:17,850 --> 00:05:21,176 >> Publiek: Is daar 'n rede op die vorige skyfie wat jy nie het 113 00:05:21,176 --> 00:05:24,848 student op die boonste lyn, soos typedef struct student en dan 114 00:05:24,848 --> 00:05:25,840 student aan die einde? 115 00:05:25,840 --> 00:05:29,040 >> R. J. Aquino: So die vraag is, op hierdie skuif, het ons gewoonlik gesien 116 00:05:29,040 --> 00:05:32,400 typedef struct knoop en dan die velde van die struct en 117 00:05:32,400 --> 00:05:34,250 Toe het die woord knoop. 118 00:05:34,250 --> 00:05:37,790 En hoe hier kom ek nie sê, typedef struct student en dan die 119 00:05:37,790 --> 00:05:39,820 velde van die struct en dan student? 120 00:05:39,820 --> 00:05:44,310 Die rede is dat ek nie hoef te toegang tot dit binne-in die struct. 121 00:05:44,310 --> 00:05:46,270 Dus is dit OK om dit te verlaat sonder 'n naam. 122 00:05:46,270 --> 00:05:49,210 Ek kan net laat dit as 'n anonieme struct. 123 00:05:49,210 --> 00:05:53,130 >> Die rede waarom ons doen dit vir gekoppel lyste en dinge is omdat die binnekant jy nodig 124 00:05:53,130 --> 00:05:55,360 'n struct nodes ster te verwys. 125 00:05:55,360 --> 00:05:58,220 So het die struct het 'n naam te hê, sodat jy dit kan later toegang te verkry. 126 00:05:58,220 --> 00:05:59,540 Dit is 'n klein detail. 127 00:05:59,540 --> 00:06:04,750 Maar jy sal gewoonlik sien typedef struct krulhakies as jy hoef nie 128 00:06:04,750 --> 00:06:08,720 die naam en typedef struct paar naam gevolg deur krulhakies as jy wil 129 00:06:08,720 --> 00:06:09,520 moet die naam. 130 00:06:09,520 --> 00:06:12,070 So dit is 'n goeie vraag. 131 00:06:12,070 --> 00:06:17,000 >> En op daardie punt, is ons geneig om te verander structs en slaag om structs deur 132 00:06:17,000 --> 00:06:18,680 verwys, nie in waarde. 133 00:06:18,680 --> 00:06:21,940 So ons sal net slaag om verwysings na structs plaas van slaag om die 134 00:06:21,940 --> 00:06:23,150 structs hulself. 135 00:06:23,150 --> 00:06:28,050 So jy baie gereeld gaan wees gebruik, in hierdie geval, student of * 136 00:06:28,050 --> 00:06:34,150 struct knoop * of node * plaas uit studente of knope. 137 00:06:34,150 --> 00:06:39,350 So hier is, het ek gesê, OK, die veranderlike ptr gaan die adres van s te wees. 138 00:06:39,350 --> 00:06:45,570 Dit gaan om die ondeursigtigheid te wees aan die student R. J. 139 00:06:45,570 --> 00:06:48,965 >> So ons kan kry op die velde dieselfde as ons iets kry. 140 00:06:48,965 --> 00:06:51,460 Eerstens, ID verwys na die wyser die struct te kry. 141 00:06:51,460 --> 00:06:55,530 Dit is * ptr en dan 'n kol en dan ouderdom. 142 00:06:55,530 --> 00:06:58,790 So om toegang tot die terrein, en ek het opgedateer Nou tot 22, want, laat 143 00:06:58,790 --> 00:07:00,860 sê, dit was my verjaarsdag. 144 00:07:00,860 --> 00:07:03,990 Daar is 'n kortpad sintaksis die gebruik van die pyl hier. 145 00:07:03,990 --> 00:07:07,060 So ptr pyl ouderdom is net dieselfde as * ptr.age. 146 00:07:07,060 --> 00:07:10,150 147 00:07:10,150 --> 00:07:11,550 Nou, dit is iets wat jy het om te onthou en onthou. 148 00:07:11,550 --> 00:07:15,010 >> Jy gebruik dit 'n baie in pset6, die speller pset. 149 00:07:15,010 --> 00:07:18,350 Maar dit is eintlik wat aangaan op onder die kap. 150 00:07:18,350 --> 00:07:20,500 Dit is ontwysing die wyser en dan toegang tot dit. 151 00:07:20,500 --> 00:07:21,432 Vraag? 152 00:07:21,432 --> 00:07:22,682 >> Publiek: [onhoorbaar]. 153 00:07:22,682 --> 00:07:25,860 154 00:07:25,860 --> 00:07:28,060 >> R. J. Aquino: So hoekom gebruik ons wysers as structs in plaas van die 155 00:07:28,060 --> 00:07:29,500 structs hulself? 156 00:07:29,500 --> 00:07:33,740 Die rede sou wees as jy verby 'n struct om 'n funksie, het jy waarskynlik 157 00:07:33,740 --> 00:07:36,900 wil om te slaag om net die 4 of so grepe dat die wyser te stel, 158 00:07:36,900 --> 00:07:40,375 in teenstelling met die potensieel 30 of 40 grepe wat die struct. 159 00:07:40,375 --> 00:07:44,410 So verby iets aan 'n funksie is makliker as die ding 160 00:07:44,410 --> 00:07:48,230 is kleiner in kort. 161 00:07:48,230 --> 00:07:49,074 Vraag? 162 00:07:49,074 --> 00:07:53,026 >> Publiek: Jy kan dit genoem het in die begin, maar daar is 163 00:07:53,026 --> 00:07:56,000 ander skyfies op [onhoorbaar]? 164 00:07:56,000 --> 00:07:58,960 >> R. J. Aquino: Hierdie skyfies sal wees nadat die hersiening sessie. 165 00:07:58,960 --> 00:08:00,210 Ons plaas dit op die webwerf. 166 00:08:00,210 --> 00:08:02,450 167 00:08:02,450 --> 00:08:06,870 So beweeg op en beweeg effens vinniger, ons gaan om te praat oor data 168 00:08:06,870 --> 00:08:07,350 strukture. 169 00:08:07,350 --> 00:08:08,040 Daar is 'n baie. 170 00:08:08,040 --> 00:08:10,080 Ons dek 'n klomp van hulle. 171 00:08:10,080 --> 00:08:12,500 Hier is wat jy behoort te verstaan oor die data struktuur. 172 00:08:12,500 --> 00:08:15,590 >> Jy moet regtig verstaan ​​op 'n hoë vlak wat elke struktuur is. 173 00:08:15,590 --> 00:08:21,190 Kan jy in Engels verduidelik aan jou vriend wat nie geneem het nie CS50 hoe 174 00:08:21,190 --> 00:08:25,580 ons data is organisering en waarom ons wil word die gebruik van iets op hierdie manier? 175 00:08:25,580 --> 00:08:26,990 Dit is een ding. 176 00:08:26,990 --> 00:08:29,650 Ding twee, verstaan die implementering. 177 00:08:29,650 --> 00:08:34,270 So verstaan ​​hoe om hierdie dinge te gebruik in C. En ons sal gaan oor hierdie. 178 00:08:34,270 --> 00:08:39,030 >> En dan ding drie sal weet word die hardloop tye en die grense van die 179 00:08:39,030 --> 00:08:40,470 verskillende strukture wat jy gebruik. 180 00:08:40,470 --> 00:08:44,059 So verstaan ​​waarom jy sou gebruik om 'n Hutstabel in plaas van 'n skikking. 181 00:08:44,059 --> 00:08:49,570 Verstaan ​​hoe vinnig, gemiddeld, toegang tot 'n gemors tafel is. 182 00:08:49,570 --> 00:08:54,010 Verstaan ​​wat operasies is vinnig op gekoppel lys, maar stadig op skikkings en 183 00:08:54,010 --> 00:08:56,080 omgekeerd. 184 00:08:56,080 --> 00:08:59,780 So om te verstaan, sal jy het om te verstaan ​​Big-O notasie net weet 185 00:08:59,780 --> 00:09:01,310 hoe om te praat oor hierdie allerhande dinge. 186 00:09:01,310 --> 00:09:02,700 En ons sal praat oor dat. 187 00:09:02,700 --> 00:09:06,040 >> So die eerste ding, gekoppel lyste. 188 00:09:06,040 --> 00:09:07,770 Hier is 'n hoë-vlak prentjie van 'n geskakelde lys. 189 00:09:07,770 --> 00:09:08,830 Ons toon dit in die klas. 190 00:09:08,830 --> 00:09:11,670 Ons het gewoonlik 10 mense staan ​​op die verhoog. 191 00:09:11,670 --> 00:09:16,790 Maar ons het 'n reeks van nodes, waar elke node het 'n paar waarde en 'n wyser 192 00:09:16,790 --> 00:09:18,610 om sy volgende waarde. 193 00:09:18,610 --> 00:09:21,730 So om van die een knoop na die volgende, jy net sê, gee my die volgende knoop. 194 00:09:21,730 --> 00:09:22,530 Jy het dat knoop. 195 00:09:22,530 --> 00:09:23,770 Gee my die volgende knoop. 196 00:09:23,770 --> 00:09:24,400 Jy het dat knoop. 197 00:09:24,400 --> 00:09:28,790 Gee my die volgende knoop en so aan totdat daar is geen knoop linkerkant. 198 00:09:28,790 --> 00:09:31,850 >> So gaan voort om te praat oor dit op 'n hoë vlak. 199 00:09:31,850 --> 00:09:34,100 Dit is baie maklik om dinge te voeg in 'n geskakelde lys. 200 00:09:34,100 --> 00:09:36,010 As jy nie omgee vir die orde, jy kan net gooi dit 201 00:09:36,010 --> 00:09:36,840 reg aan die begin. 202 00:09:36,840 --> 00:09:38,520 Dit is konstante tyd. 203 00:09:38,520 --> 00:09:39,900 Maar dit is moeilik om 'n waarde te vind. 204 00:09:39,900 --> 00:09:43,060 As jy probeer om te vra, is sewe in my lys? 205 00:09:43,060 --> 00:09:44,740 Jy het om deur te gaan elke enkele waarde. 206 00:09:44,740 --> 00:09:45,680 Is dit sewe? 207 00:09:45,680 --> 00:09:46,610 Is dit sewe? 208 00:09:46,610 --> 00:09:47,770 Is dit sewe? 209 00:09:47,770 --> 00:09:48,690 Is dit sewe? 210 00:09:48,690 --> 00:09:49,830 Oor en oor weer. 211 00:09:49,830 --> 00:09:51,520 En dit is O (n). 212 00:09:51,520 --> 00:09:53,800 So wanneer jy studeer vir die toets, vergelyk dit met skikkings. 213 00:09:53,800 --> 00:09:57,010 214 00:09:57,010 --> 00:09:58,220 >> Is dit OK? 215 00:09:58,220 --> 00:09:59,220 Die ligte het dowwe. 216 00:09:59,220 --> 00:10:01,110 OK. 217 00:10:01,110 --> 00:10:02,400 Wanneer is 'n geskakelde lys beter? 218 00:10:02,400 --> 00:10:04,640 Wanneer is 'n skikking beter? 219 00:10:04,640 --> 00:10:06,670 So laat ons kyk na 'n paar kode. 220 00:10:06,670 --> 00:10:08,960 Hier is 'n potensiële knoop. 221 00:10:08,960 --> 00:10:09,770 Dit is 'n struct. 222 00:10:09,770 --> 00:10:12,220 Dit het 'n int n, wat sal ons waarde wees. 223 00:10:12,220 --> 00:10:17,780 En dit het 'n struct knoop * langs, wat is ons wyser na die volgende knoop. 224 00:10:17,780 --> 00:10:23,040 So hier is, kan ons sien dat ons gebeur het sit 'n int in ons node. 225 00:10:23,040 --> 00:10:27,850 Maar as dit was 'n gekoppelde lys van char sterre of 'n gekoppelde lys van dryf, het ons 226 00:10:27,850 --> 00:10:28,820 heeltemal kan dit ook doen. 227 00:10:28,820 --> 00:10:33,110 >> Onthou in pset6, jy het waarskynlik 'n gekoppel lys van kar sterre of net 228 00:10:33,110 --> 00:10:34,360 statiese kar skikkings. 229 00:10:34,360 --> 00:10:37,370 230 00:10:37,370 --> 00:10:39,040 Kom ons kyk hier by 'n operasie. 231 00:10:39,040 --> 00:10:43,570 So ons wil voeg 'n nuwe n in ons geskakelde lys. 232 00:10:43,570 --> 00:10:48,940 Ons begin met 'n kop wyser wat 'n verwysing na die knoop wat die 233 00:10:48,940 --> 00:10:53,460 waarde van N en 'n volgende van 'n muis wat punte na hierdie knoop is 'n waarde van 234 00:10:53,460 --> 00:10:57,760 N en 'n volgende van nul, want dit is die laaste knoop. 235 00:10:57,760 --> 00:11:00,440 So in die belang van die tyd, sal ek sit al die kode op die skerm. 236 00:11:00,440 --> 00:11:03,130 En ons sal deur dit loop 'n paar reëls op 'n tyd. 237 00:11:03,130 --> 00:11:05,790 >> So hier is die kode. 238 00:11:05,790 --> 00:11:07,560 Ek hoop dit is leesbaar. 239 00:11:07,560 --> 00:11:11,275 Die eerste ding wat ons doen, is om ons malloc 'n nuwe knoop. 240 00:11:11,275 --> 00:11:15,105 So maak dit 'n verwysing na 'n nuwe knoop wat nie heeltemal iets soos 241 00:11:15,105 --> 00:11:16,450 in dit nog nie. 242 00:11:16,450 --> 00:11:19,580 Ons gaan om seker te maak dat die nuwe knoop is nie null. 243 00:11:19,580 --> 00:11:22,220 Anders, ons het om op te gee. 244 00:11:22,220 --> 00:11:27,680 So het bewys dat ons nou stel die waardes in die knoop. 245 00:11:27,680 --> 00:11:31,520 So het ons die nuwe n in ons n veld. 246 00:11:31,520 --> 00:11:36,050 En ons het die volgende wyser om te wys op die oorspronklike kop, sodat ons kan 247 00:11:36,050 --> 00:11:38,900 nou het ingevoeg hierdie node in ons lys. 248 00:11:38,900 --> 00:11:44,600 >> Ten slotte, ons het die wêreldwye hoof punt aan ons nuwe knoop, sodat as ons 249 00:11:44,600 --> 00:11:50,300 begin by die hoof, sou ons op hierdie nuwe eerste knoop in plaas van 250 00:11:50,300 --> 00:11:51,560 die ou eerste knoop. 251 00:11:51,560 --> 00:11:55,320 En wanneer hierdie funksie uitgange, die veranderlike nuwe node bestaan ​​nie meer nie, 252 00:11:55,320 --> 00:11:57,130 want dit was die plaaslike na die funksie. 253 00:11:57,130 --> 00:11:59,770 So dit is die toestand van die wêreld. 254 00:11:59,770 --> 00:12:03,570 Ons globale hoof wys na ons nuwe eerste knoop, wat dui op ons 255 00:12:03,570 --> 00:12:06,346 oorspronklike eerste knoop, wat punte om die knoop daarna. 256 00:12:06,346 --> 00:12:09,790 >> Dit was te voeg. 257 00:12:09,790 --> 00:12:12,150 Ek hoop dit was relatief maklik om te volg. 258 00:12:12,150 --> 00:12:14,300 Wanneer jy twyfel, teken 'n prentjie. 259 00:12:14,300 --> 00:12:17,820 So vind ek dat dit oor geskakelde lyste en op soek na 260 00:12:17,820 --> 00:12:19,870 kode is baie nie nuttig. 261 00:12:19,870 --> 00:12:23,790 Terwyl op soek na 'n foto van 'n gekoppelde lys laat my dink, o, so 262 00:12:23,790 --> 00:12:24,970 Ek het hierdie knoop hier. 263 00:12:24,970 --> 00:12:28,980 Maar as ek werk wat wyser, dit eindig ontkoppel. 264 00:12:28,980 --> 00:12:34,340 En ek het vergeet waar die knoop gaan. 265 00:12:34,340 --> 00:12:35,390 En die kode verlaat. 266 00:12:35,390 --> 00:12:37,830 En jy het verskeie nodes wat opgeskort is. 267 00:12:37,830 --> 00:12:39,970 En jy nie eindig met die lys wat jy wil. 268 00:12:39,970 --> 00:12:43,320 >> So as jy trek die prentjie en dit doen stap vir stap, hopelik, sal jy sien 269 00:12:43,320 --> 00:12:46,840 die korrekte volgorde van die dinge wat in terme van opdatering van die wysers om seker te maak 270 00:12:46,840 --> 00:12:48,830 dat die lys kom saam. 271 00:12:48,830 --> 00:12:51,240 Insetsel is relatief eenvoudig. 272 00:12:51,240 --> 00:12:55,210 'N meer ingewikkelde een sou wees opname in 'n lys gesorteer. 273 00:12:55,210 --> 00:12:59,980 'N meer ingewikkelde funksie is verwyder en vind, so kyk deur 'n lys te 274 00:12:59,980 --> 00:13:03,030 kyk of daar iets is daar. 275 00:13:03,030 --> 00:13:07,220 Miskien het jy dit gedoen het in pset6 wanneer jy het in jou hash tafel en jy gesê het, 276 00:13:07,220 --> 00:13:10,460 Wel, is die woord appel in my geskakelde lys? 277 00:13:10,460 --> 00:13:11,440 >> Sodat jy kan reeds gedoen. 278 00:13:11,440 --> 00:13:15,530 Maar beslis, verfris u geheue en probeer vind om reimplement en 279 00:13:15,530 --> 00:13:19,150 reimplement verwyder vir 'n geskakelde lys. 280 00:13:19,150 --> 00:13:22,850 Fun kant nota, is daar ook dubbel-gekoppelde lyste, waar jy 281 00:13:22,850 --> 00:13:27,490 wenke wat wys beide vorentoe en agtertoe, sodat jy kan gaan na die 282 00:13:27,490 --> 00:13:29,270 volgende knoop en aan die vorige knoop. 283 00:13:29,270 --> 00:13:33,860 En daar was 'n vraag oor verlede jaar se quiz van die tipe, praat 284 00:13:33,860 --> 00:13:36,190 oor dubbel-geskakelde lyste. 285 00:13:36,190 --> 00:13:40,070 >> Nou, dit is 'n struktuur wat jy betreklik vertroud met, omdat die meeste 286 00:13:40,070 --> 00:13:42,520 van julle waarskynlik gebruik dit op pset6. 287 00:13:42,520 --> 00:13:45,680 Hier is een wat 'n bietjie minder bekende. 288 00:13:45,680 --> 00:13:51,020 As 'n kant nota, ek dink dat Quiz 1 is hoofsaaklik harder as Quiz 0, omdat 289 00:13:51,020 --> 00:13:54,600 die dinge wat jy doen, jy het nie soveel gedoen. 290 00:13:54,600 --> 00:13:58,100 Te sit dat 'n ander manier, vir Quiz 0, jy 'n baie C. geskryf het en ons 291 00:13:58,100 --> 00:13:58,880 vra jou oor C. 292 00:13:58,880 --> 00:14:02,310 >> Vir Quiz 1, ons gaan jou vra om oor PHP en JavaScript, wat jy 293 00:14:02,310 --> 00:14:03,490 het nie so veel van 'n skriftelike. 294 00:14:03,490 --> 00:14:07,590 Ons gaan om te vra oor die C-kode wat jy het nie so veel van 'n skriftelike, 295 00:14:07,590 --> 00:14:09,130 Hierdie gevorderde C dinge. 296 00:14:09,130 --> 00:14:11,520 So beslis, oefen die dinge wat ons gepraat oor in lesing wat jy 297 00:14:11,520 --> 00:14:15,260 het nie noodwendig te doen op die probleem gestel. 298 00:14:15,260 --> 00:14:17,870 >> Praat wat jy nie geskryf het 'n stapel op 'n probleem stel. 299 00:14:17,870 --> 00:14:19,610 Maar dit was in lesing. 300 00:14:19,610 --> 00:14:22,530 Hier is die hoë-vlak beeld van stapels dat ons wys elke jaar. 301 00:14:22,530 --> 00:14:26,180 Dit is die stapel bak in die Mather eetsaal. 302 00:14:26,180 --> 00:14:30,570 Op 'n hoë vlak, stapels is 'n laaste in, eerste uit data struktuur. 303 00:14:30,570 --> 00:14:32,040 Dit beteken dat jy gaan om dinge te sit in - 304 00:14:32,040 --> 00:14:36,400 1, 3, 7, 12, 14, negatiewe 0. 305 00:14:36,400 --> 00:14:39,180 Die een ding wat ek kon nie ' gesê - negatiewe 3, 0. 306 00:14:39,180 --> 00:14:40,250 Jy het al hierdie dinge in 307 00:14:40,250 --> 00:14:42,940 En die laaste een wat jy in die eerste een wat gaan om uit te kom. 308 00:14:42,940 --> 00:14:44,170 >> So jy het twee operasies - 309 00:14:44,170 --> 00:14:45,260 stoot en pop. 310 00:14:45,260 --> 00:14:49,180 Al die plaas in wat ek was beduie soos hierdie is stoot. 311 00:14:49,180 --> 00:14:52,020 En dan wanneer ek bereik in te gryp iets of bereik op die top te gryp 312 00:14:52,020 --> 00:14:53,940 iets wat pop. 313 00:14:53,940 --> 00:14:55,540 So ons gaan stapels te implementeer. 314 00:14:55,540 --> 00:14:57,870 En ons het hulle in lesing gebruik skikkings. 315 00:14:57,870 --> 00:14:59,550 Maar jy kan dit doen gebruik geskakelde lyste. 316 00:14:59,550 --> 00:15:01,770 'N stapel is 'n konseptuele data struktuur, nie soos 'n 317 00:15:01,770 --> 00:15:03,760 implementering-spesifieke een. 318 00:15:03,760 --> 00:15:06,420 >> So, wat sou dit lyk? 319 00:15:06,420 --> 00:15:07,970 Dit sou soort van soos hierdie kyk. 320 00:15:07,970 --> 00:15:10,840 Jy wil hê om 'n heelgetal grootte. 321 00:15:10,840 --> 00:15:16,000 En jy wil 'n verskeidenheid van waardes wat Ons noem bak, want dit is 322 00:15:16,000 --> 00:15:18,570 wat die foto is vir ons - int bak - 323 00:15:18,570 --> 00:15:21,740 en dan 'n paar maksimum kapasiteit. 324 00:15:21,740 --> 00:15:27,100 So, wat sou lyk soos druk? 325 00:15:27,100 --> 00:15:33,250 Wel, as ons 'n stapel s, dan stoot iets op s, sou ons 326 00:15:33,250 --> 00:15:34,620 die grootte van s. 327 00:15:34,620 --> 00:15:42,270 En dat die volgende sal wees oop plek van ons verskeidenheid. 328 00:15:42,270 --> 00:15:50,510 So as ons drie dinge in ons stapel, dan bak 3 die volgende sou wees 329 00:15:50,510 --> 00:15:54,290 oop kol, want 0, 1, en 2 is reeds gevul. 330 00:15:54,290 --> 00:16:01,790 >> So het ons die waarde in s.trays [s.size], die derde plek. 331 00:16:01,790 --> 00:16:06,290 En dan het ons inkrementeer s.size om te sê, hey, ons het drie dinge voor. 332 00:16:06,290 --> 00:16:07,400 Nou het ons vier. 333 00:16:07,400 --> 00:16:10,180 So die volgende keer wat jy druk, is jy gaan om iets te sit in 4. 334 00:16:10,180 --> 00:16:15,560 Of die volgende keer as jy pop, jy gaan om te kyk na 3 in plaas van 4 of wat ook al. 335 00:16:15,560 --> 00:16:18,000 En dan sal ons terug waar te sê, hey, ons het daarin geslaag. 336 00:16:18,000 --> 00:16:19,160 Dit het gewerk. 337 00:16:19,160 --> 00:16:22,060 As 'n reël van die duim, as 'n funksie wat veronderstel om terug te keer waar of 338 00:16:22,060 --> 00:16:26,370 valse terugkeer altyd waar jy kan iets verkeerd gedoen het. 339 00:16:26,370 --> 00:16:28,350 So werk dit? 340 00:16:28,350 --> 00:16:32,400 >> Wel, dit werk goed vir 1, en 2 en 3, en 4, en vyf. 341 00:16:32,400 --> 00:16:34,640 Maar laat ons sê ek my hoedanigheid bereik. 342 00:16:34,640 --> 00:16:38,750 Ek het dan loop in 'n probleem nie, want As grootte is dieselfde as kapasiteit, is ek 343 00:16:38,750 --> 00:16:43,340 nou probeer om iets te sit in 'n skikking waar ek nie plek nie. 344 00:16:43,340 --> 00:16:46,980 So 'n kort tjek dit op te los. 345 00:16:46,980 --> 00:16:51,630 As s.size == HOEDANIGHEID, terugkeer onwaar. 346 00:16:51,630 --> 00:16:54,130 Andersins, gaan en doen wat ons gedoen het. 347 00:16:54,130 --> 00:16:55,660 So wat anders kan ons vra oor vir stapels? 348 00:16:55,660 --> 00:16:56,460 Wat anders moet jy studeer? 349 00:16:56,460 --> 00:16:57,690 Wat anders moet jy oefen? 350 00:16:57,690 --> 00:17:01,030 >> Wel, die implementering van pop. 351 00:17:01,030 --> 00:17:02,370 Ons het reeds gedoen het te stoot. 352 00:17:02,370 --> 00:17:04,280 Ek sal dit regmaak. 353 00:17:04,280 --> 00:17:08,180 'N nie-skikking implementering, waar jy gebruik om 'n geskakelde lys, miskien. 354 00:17:08,180 --> 00:17:09,390 'N nie-int implementering. 355 00:17:09,390 --> 00:17:10,940 Ons het ints hier. 356 00:17:10,940 --> 00:17:11,880 Maar dit kan dryf gewees het. 357 00:17:11,880 --> 00:17:13,010 Ek kon snare gewees het. 358 00:17:13,010 --> 00:17:14,290 Dit kon gewees het kar sterre. 359 00:17:14,290 --> 00:17:17,960 Kyk na die verlede vasvrae vir die soorte vrae wat ons gevra het oor stapels. 360 00:17:17,960 --> 00:17:20,000 >> Ek sal sê dat ons gedek stapels rondom dieselfde as ons het hulle oordek het in 361 00:17:20,000 --> 00:17:20,540 die afgelope jaar. 362 00:17:20,540 --> 00:17:24,400 So het die quiz vrae behoort 'n goeie aanduiding. 363 00:17:24,400 --> 00:17:27,010 Vorentoe beweeg selfs vinniger, toue. 364 00:17:27,010 --> 00:17:28,200 Hulle is soos stapels. 365 00:17:28,200 --> 00:17:29,960 Maar hulle is die eerste in, eerste uit. 366 00:17:29,960 --> 00:17:33,530 As jy die Britse, die woord tou waarskynlik 'n baie sin vir jou. 367 00:17:33,530 --> 00:17:36,390 Anders, kan jy gehoor van dit as 'n lyn. 368 00:17:36,390 --> 00:17:38,120 Hulle werk soos die lyn by die Apple winkel. 369 00:17:38,120 --> 00:17:40,740 Die eerste persoon om te wys op 03:00 in die môre is die eerste 370 00:17:40,740 --> 00:17:42,880 persoon sy iPad te koop. 371 00:17:42,880 --> 00:17:44,260 >> So het ons twee operasies - 372 00:17:44,260 --> 00:17:45,720 enqueue en dequeue. 373 00:17:45,720 --> 00:17:47,560 Enqueue sit iemand in die lyn. 374 00:17:47,560 --> 00:17:50,070 Dequeue trek die eerste persoon van die lyn af. 375 00:17:50,070 --> 00:17:52,640 Weereens, kan ons implementeer dit met 'n skikking. 376 00:17:52,640 --> 00:17:54,880 So, wat is die struct ons getoon in lesing? 377 00:17:54,880 --> 00:17:57,660 Dit was hierdie een. 378 00:17:57,660 --> 00:17:59,300 Weereens, getalle. 379 00:17:59,300 --> 00:18:02,020 Weereens, die grootte en die nuwe ding voor. 380 00:18:02,020 --> 00:18:04,880 Hoekom is daar iets genoem front? 381 00:18:04,880 --> 00:18:07,050 Dit is die indeks van die volgende element te dequeue. 382 00:18:07,050 --> 00:18:12,210 Dit is net intern hou van die eerste man te wys, sodat ons 383 00:18:12,210 --> 00:18:15,005 kan trek dit uit wanneer ons nodig het om te. 384 00:18:15,005 --> 00:18:19,322 >> Beslis kyk na lesingnotas en probeer enqueue en dequeue te implementeer 385 00:18:19,322 --> 00:18:21,700 wanneer jy studeer vir die toets. 386 00:18:21,700 --> 00:18:23,190 Belangrike dinge om oor te dink. 387 00:18:23,190 --> 00:18:27,260 Wikkel om as die voorste plus die grootte eindig groter as kapasiteit. 388 00:18:27,260 --> 00:18:32,670 Weereens, as jou struktuur is vol, jy gaan 'n probleem te hê nie. 389 00:18:32,670 --> 00:18:34,780 Hash tabelle wat jy nog nooit gesien. 390 00:18:34,780 --> 00:18:39,820 Die meeste van julle het waarskynlik geïmplementeer hierdie op pset6. 391 00:18:39,820 --> 00:18:44,210 Dit is 'n struktuur wat daarop gemik is om O (1) konstante inplanting en O (1) 392 00:18:44,210 --> 00:18:46,430 konstante soek. 393 00:18:46,430 --> 00:18:49,760 >> In CS50, het ons geïmplementeer dit as 'n verskeidenheid van geskakelde lyste. 394 00:18:49,760 --> 00:18:53,690 Die belangrike komponent van 'n hash tafel is die hash funksie. 395 00:18:53,690 --> 00:18:58,350 So dit vat jou insette, kom ons sê, 'n woord uit die woordeboek, in 'n aantal, 396 00:18:58,350 --> 00:18:59,560 wat gaan ons indeks te wees. 397 00:18:59,560 --> 00:19:01,410 En ons sal die indeks gebruik in ons verskeidenheid. 398 00:19:01,410 --> 00:19:05,374 So hier is 'n oulike prentjie van study.50.net. 399 00:19:05,374 --> 00:19:08,060 Ons gooi al die woorde in ons hash funksie. 400 00:19:08,060 --> 00:19:10,950 En die hash funksie vertel ons waar hierdie woorde om te sit. 401 00:19:10,950 --> 00:19:15,650 >> Dit is al groot is in die land waar daar is net een woord vir elke slot. 402 00:19:15,650 --> 00:19:20,480 Maar as jy onthou van pset6, is daar is meer woorde as slots. 403 00:19:20,480 --> 00:19:23,080 So, wat gebeur wanneer jy 'n botsing? 404 00:19:23,080 --> 00:19:26,730 In plaas van die stoor van een waarde in, kom ons sê, hutstabel 3, jy 405 00:19:26,730 --> 00:19:27,990 slaan 'n geskakelde lys. 406 00:19:27,990 --> 00:19:32,900 En so in plaas van om spanspek Hier sal jy 'n geskakelde lys het, 407 00:19:32,900 --> 00:19:34,190 waar die eerste knoop is spanspek. 408 00:19:34,190 --> 00:19:35,260 En die volgende knoop is kat. 409 00:19:35,260 --> 00:19:38,970 En die derde knoop is die botsing, laat sê nie, want al hierdie woorde begin 410 00:19:38,970 --> 00:19:41,110 met C. 411 00:19:41,110 --> 00:19:42,700 >> So die meeste van julle het dit vir pset6. 412 00:19:42,700 --> 00:19:45,685 As jy dit nie doen nie 'n gemors tabel op pset6 en jy iets soos poging tot 413 00:19:45,685 --> 00:19:47,720 'n Trie, beslis hersien hash tabelle. 414 00:19:47,720 --> 00:19:50,650 As jy het dit op pset6, beslis hersien hash tabelle. 415 00:19:50,650 --> 00:19:53,610 En as jy dit gedoen het op pset6 en dit het nie werk heeltemal reg en jy 416 00:19:53,610 --> 00:19:56,150 het 'n baie probleme met dit, beslis hersien hash tabelle. 417 00:19:56,150 --> 00:20:01,610 So die les is regtig beslis hersien hash tabelle. 418 00:20:01,610 --> 00:20:07,130 >> Die oorgrote minderheid van julle probeer probeer uit op pset6. 419 00:20:07,130 --> 00:20:08,570 Hoë-vlak prentjie. 420 00:20:08,570 --> 00:20:15,150 Dit is iets soos hierdie, waar elke node het 'n stel van kinders, waar elke 421 00:20:15,150 --> 00:20:17,100 kind ooreenstem met 'n brief. 422 00:20:17,100 --> 00:20:20,520 En elke node ook sê, hey, ek is 'n woord. 423 00:20:20,520 --> 00:20:25,933 So in hierdie geval, die woord Maxwell, As jy volg die M aan die A tot die 424 00:20:25,933 --> 00:20:28,530 X-W-E-L-L en dan volg dit een meer. 425 00:20:28,530 --> 00:20:32,800 En jy hierdie simbool, delta, wat ons gewys dat dit beteken dit is 'n woord. 426 00:20:32,800 --> 00:20:34,780 So Maxwell is 'n woord. 427 00:20:34,780 --> 00:20:38,430 Hierdie delta is deurgaans duidelik maak watter dinge woorde en wat 428 00:20:38,430 --> 00:20:40,360 dinge is nie. 429 00:20:40,360 --> 00:20:46,400 >> So in pset6, die data wat ons gestoor saam met enige van ons knope was "Ek is 'n 430 00:20:46,400 --> 00:20:52,630 woord. "En die cool ding oor drieë is hulle demonstreer inplanting en 431 00:20:52,630 --> 00:20:55,080 konnekteer in O (lengte van 'n woord). 432 00:20:55,080 --> 00:20:59,450 So net om te kry deur middel van Maxwell, dit is M-A-X-W-E-L-L. So sewe of agt - 433 00:20:59,450 --> 00:21:00,360 Ek kan nie tel nie - 434 00:21:00,360 --> 00:21:03,920 stappe te kry aan die einde en kyk dinge uit. 435 00:21:03,920 --> 00:21:06,800 So vinnig implementering hier. 436 00:21:06,800 --> 00:21:10,230 Rob het deur 'n gekoppelde lys in sy nadoodse. 437 00:21:10,230 --> 00:21:11,600 So maak seker dat uit. 438 00:21:11,600 --> 00:21:11,720 Jammer. 439 00:21:11,720 --> 00:21:13,240 Het deur 'n Trie in sy nadoodse. 440 00:21:13,240 --> 00:21:14,260 So maak seker dat uit. 441 00:21:14,260 --> 00:21:24,410 >> Maar jy basies elke knoop het 27 verwysings na die volgende nodes en een 442 00:21:24,410 --> 00:21:27,050 Boolean is ek 'n woord. 443 00:21:27,050 --> 00:21:31,530 Check uit Rob se nadoodse hoe dit is eintlik geïmplementeer word. 444 00:21:31,530 --> 00:21:34,750 Ons finale struktuur, ons bome en binêre soek bome. 445 00:21:34,750 --> 00:21:41,530 So kyk na hierdie, is hierdie gedek mees onlangs Week 8, Maandag. 446 00:21:41,530 --> 00:21:46,960 'N boom is soortgelyk aan 'n Trie, behalwe as jy hoef nie noodwendig 27 knope op 447 00:21:46,960 --> 00:21:47,500 elke punt. 448 00:21:47,500 --> 00:21:52,820 En jy hoef nie hierdie data by elke stap wat dui op die vraag of die - 449 00:21:52,820 --> 00:21:54,030 die pad nie saak nie. 450 00:21:54,030 --> 00:22:00,870 Terwyl 'n tydstip waarop die pad van bo na onderkant, Maxwell, was vir ons belangrik. 451 00:22:00,870 --> 00:22:05,270 >> Maar elke knoop het verskeie kinders, miskien. 452 00:22:05,270 --> 00:22:07,290 Ons het 'n paar meer woordeskat. 453 00:22:07,290 --> 00:22:09,530 Die wortel van die boom is op die heel boonste. 454 00:22:09,530 --> 00:22:12,520 En ons sê dat die baie onderste nodes wat geen 455 00:22:12,520 --> 00:22:14,530 kinders is blare. 456 00:22:14,530 --> 00:22:18,040 Dus, net soos 'n Trie, 'n boom is 'n struktuur van knope. 457 00:22:18,040 --> 00:22:21,490 'N algemene tipe van die boom wat ons gaan om te praat oor 'n binêre boom, waar 458 00:22:21,490 --> 00:22:26,040 elke knoop het geen kinders of 'n kind of twee kinders. 459 00:22:26,040 --> 00:22:28,890 So hierdie foto hier is nie 'n binêre boom, want 460 00:22:28,890 --> 00:22:32,890 knoop 3 het drie kinders. 461 00:22:32,890 --> 00:22:38,140 >> Maar as ons diegene, die res te ignoreer dit is 'n binêre boom, want dit 462 00:22:38,140 --> 00:22:43,200 demonstreer die eiendom wat elke knoop nul, een of twee kinders. 463 00:22:43,200 --> 00:22:46,400 So hoe kan ons druk dit in kode? 464 00:22:46,400 --> 00:22:51,460 Ons kan 'n knoop waar elke node het 'n 'n heelgetal binnekant van dit, asook 465 00:22:51,460 --> 00:22:55,590 as 'n verwysing na die boom aan die linkerkant en 'n verwysing na die boom op die 466 00:22:55,590 --> 00:22:59,510 reg, sodat die twee kinders. 467 00:22:59,510 --> 00:23:00,880 Hoe is dit nuttig? 468 00:23:00,880 --> 00:23:05,740 Wel, as ons reëls oor maak waar ons sit nodes, kan ons soek vinniger. 469 00:23:05,740 --> 00:23:10,630 >> So is daar 'n konsep van 'n binêre soek boom, waar al die nodes op die 470 00:23:10,630 --> 00:23:14,420 links substructuur 'n kleiner waarde as die knoop ons is op soek na. 471 00:23:14,420 --> 00:23:17,880 En al die nodes op die regte substructuur het 'n groter waarde 472 00:23:17,880 --> 00:23:18,660 as die wortel node. 473 00:23:18,660 --> 00:23:20,670 Nou, dit lyk soos 'n baie woorde. 474 00:23:20,670 --> 00:23:23,770 Ek is van plan om dit te sit binnekant van dubbele aanhalings en wys jou 'n prentjie. 475 00:23:23,770 --> 00:23:27,010 So hier is 'n voorbeeld van 'n binêre soek boom. 476 00:23:27,010 --> 00:23:28,770 Sien dat ons begin met 10. 477 00:23:28,770 --> 00:23:31,780 Alles aan die linkerkant van 10 is kleiner as wat dit. 478 00:23:31,780 --> 00:23:33,130 En alles aan die regterkant is groter as wat dit. 479 00:23:33,130 --> 00:23:37,620 >> Maar meer as dit, elke knoop in die boom spreek hierdie eiendom. 480 00:23:37,620 --> 00:23:42,110 So die knoop 7 het 'n 3 tot die links en 'n 9 aan die regterkant. 481 00:23:42,110 --> 00:23:44,440 So almal is kleiner as 10. 482 00:23:44,440 --> 00:23:50,470 Maar kyk na net diegene, die 7 het 3 aan sy linker-en 9 tot sy reg. 483 00:23:50,470 --> 00:23:56,100 En net so op die regte, 15 het 14 aan sy linker-en 50 tot sy reg. 484 00:23:56,100 --> 00:24:03,770 So het die drie nodes daar, 15, 14, en 50, is ook 'n geldige binêre boom 485 00:24:03,770 --> 00:24:05,480 of 'n geldige binêre soek boom. 486 00:24:05,480 --> 00:24:07,250 En hulle is almal groter as 10. 487 00:24:07,250 --> 00:24:08,960 So het hulle toegelaat word om te wees op die reg daar. 488 00:24:08,960 --> 00:24:09,940 Is daar 'n vraag? 489 00:24:09,940 --> 00:24:12,580 >> Publiek: Hoe hanteer jy wanneer jy het twee sewes? 490 00:24:12,580 --> 00:24:12,850 >> R. J. Aquino: Ja. 491 00:24:12,850 --> 00:24:16,550 Hoe hanteer jy met twee waardes wat dieselfde is? 492 00:24:16,550 --> 00:24:21,465 Sommige binêre soek bome te sê dat jy ignoreer duplikate, want die doel is 493 00:24:21,465 --> 00:24:24,280 net om te sê, het ek gesien hierdie dinge so ver. 494 00:24:24,280 --> 00:24:28,120 Sommige binêre soek bome wat jy kan sê 'n telling binnekant van die knoop. 495 00:24:28,120 --> 00:24:32,000 Ander kan sê dat alles links minder as of gelyk aan. 496 00:24:32,000 --> 00:24:33,470 En alles aan die regterkant is groter as. 497 00:24:33,470 --> 00:24:36,520 >> Dit hang net af wat die probleem is jy die oplossing. 498 00:24:36,520 --> 00:24:40,840 So in 'n woordeboek, byvoorbeeld, het jy sou nie omgee duplikate. 499 00:24:40,840 --> 00:24:41,490 Jy sal hulle gooi. 500 00:24:41,490 --> 00:24:44,719 Maar 'n ander probleem wat jy kan gee. 501 00:24:44,719 --> 00:24:49,242 >> Publiek: Is dit moontlik om 'n 'n 1 aan die linkerkant van 15, wat 502 00:24:49,242 --> 00:24:50,590 minder as 10? 503 00:24:50,590 --> 00:24:51,885 >> R. J. Aquino: No 504 00:24:51,885 --> 00:24:56,570 As die 14 was hier 'n 1, sou dit nie 'n geldige binêre soekboom, 505 00:24:56,570 --> 00:25:00,840 want alles aan die regterkant van 10 moet groter wees as wat dit. 506 00:25:00,840 --> 00:25:02,300 En ons sal sien hoekom. 507 00:25:02,300 --> 00:25:07,960 As in die land van die soektog my doel is om 14 te vind, het ek begin by die wortel. 508 00:25:07,960 --> 00:25:08,500 So ek kyk. 509 00:25:08,500 --> 00:25:08,710 OK. 510 00:25:08,710 --> 00:25:10,670 Ons gaan om te begin by die wortel. 511 00:25:10,670 --> 00:25:12,500 Kyk na 10. 512 00:25:12,500 --> 00:25:16,050 >> Wel, 14, ons teiken, is groter as 10. 513 00:25:16,050 --> 00:25:17,370 So moet dit wees aan die regterkant. 514 00:25:17,370 --> 00:25:21,780 Dit is baie soortgelyk aan die hele telefoon boek ding wat ons gedoen het, die binêre 515 00:25:21,780 --> 00:25:23,720 soek daar. 516 00:25:23,720 --> 00:25:26,430 Maar in plaas van binêre soek in 'n skikking, ons is binêre 517 00:25:26,430 --> 00:25:28,490 soek in die boom. 518 00:25:28,490 --> 00:25:31,260 So ons is nog steeds op soek na 14. 519 00:25:31,260 --> 00:25:32,480 Wel, 14 is kleiner as 15. 520 00:25:32,480 --> 00:25:36,430 So as dit is in ons boom, moet dit wees in hierdie gebied hier. 521 00:25:36,430 --> 00:25:39,680 Dit moet aan die regterkant van wees 10 en aan die linkerkant van 15. 522 00:25:39,680 --> 00:25:42,250 >> En so gaan ons hierdie knoop. 523 00:25:42,250 --> 00:25:45,790 En yay, ons het gevind 14. 524 00:25:45,790 --> 00:25:46,760 Ek gaan nie om dit deur te loop. 525 00:25:46,760 --> 00:25:48,090 Maar hier is die kode. 526 00:25:48,090 --> 00:25:49,690 Dit is eintlik relatief eenvoudig, 527 00:25:49,690 --> 00:25:52,630 want dit is rekursiewe. 528 00:25:52,630 --> 00:25:55,420 Wat kan ons vra om te doen op 'n quiz? 529 00:25:55,420 --> 00:25:57,000 Ons kan vra om die kode te skryf. 530 00:25:57,000 --> 00:25:59,170 Ons kan vra om te kyk na die kode en verander die kode en verduidelik wat 531 00:25:59,170 --> 00:26:00,210 dit doen. 532 00:26:00,210 --> 00:26:00,390 Ja. 533 00:26:00,390 --> 00:26:00,770 Vraag? 534 00:26:00,770 --> 00:26:04,240 >> Publiek: Is hierdie skyfies gaan wees beskikbaar gestel as hulle was die laaste keer? 535 00:26:04,240 --> 00:26:04,740 >> R. J. Aquino: Ja. 536 00:26:04,740 --> 00:26:06,460 So het hierdie skyfies sal beslis gepos word. 537 00:26:06,460 --> 00:26:08,640 >> Publiek: Hulle is eintlik gepos nou op die webwerf. 538 00:26:08,640 --> 00:26:10,020 David net het dit gedoen. 539 00:26:10,020 --> 00:26:12,720 >> R. J. Aquino: Die skyfies nou op die webwerf. 540 00:26:12,720 --> 00:26:16,420 Ek sal waarskynlik lap van 'n paar die typos ek opgemerk en op te los. 541 00:26:16,420 --> 00:26:19,940 Maar daar is 'n huidige weergawe van die site. 542 00:26:19,940 --> 00:26:21,820 Ander dinge wat ons kan vra om te doen nie - 543 00:26:21,820 --> 00:26:23,790 skryf insetsel. 544 00:26:23,790 --> 00:26:27,490 Skryf 'n iteratiewe weergawe van die rekursiewe funksie wat ons net het jy 545 00:26:27,490 --> 00:26:32,520 of praat oor hierdie dinge, soos in paragrawe, in woorde, in sinne. 546 00:26:32,520 --> 00:26:35,760 Vergelyk die vlug tye en verduidelik wat jy graag wil 'n binêre te gebruik 547 00:26:35,760 --> 00:26:39,200 Soek boom in plaas van 'n hash tafel, byvoorbeeld. 548 00:26:39,200 --> 00:26:43,580 >> So verstaan ​​hierdie strukture op 'n mooi diep vlak. 549 00:26:43,580 --> 00:26:47,440 Verstaan ​​hoe om dit te skryf, hoe om te gebruik, hoe om te praat oor hulle. 550 00:26:47,440 --> 00:26:50,270 En jy sal al gestel word. 551 00:26:50,270 --> 00:26:50,630 Vraag? 552 00:26:50,630 --> 00:26:55,070 >> Publiek: Wanneer jy skryf die binêre soek boom, hoe kan jy 553 00:26:55,070 --> 00:27:01,460 bepaal watter waarde maak dit as die wortel? 554 00:27:01,460 --> 00:27:06,120 >> R. J. Aquino: So die vraag is, wat waarde maak jy as die wortel? 555 00:27:06,120 --> 00:27:08,760 Afhangende van jou kode, jy dalk 'n globale wortel. 556 00:27:08,760 --> 00:27:14,290 So kan jy waarskynlik in gehad pset6 'n globale hash tafel. 557 00:27:14,290 --> 00:27:18,640 Of jy kan die wortel slaag in as 'n argument. 558 00:27:18,640 --> 00:27:23,810 So hierdie soektog funksie hier neem 'n argument 'n knoop *. 559 00:27:23,810 --> 00:27:27,420 En so ook al knoop jy gebeur om te wees kyk, is die een wat jy die behandeling 560 00:27:27,420 --> 00:27:31,510 as jou wortel wanneer jy dit in 561 00:27:31,510 --> 00:27:32,320 En ek is al te stel. 562 00:27:32,320 --> 00:27:33,480 Dit is my skyfies. 563 00:27:33,480 --> 00:27:35,940 Die volgende persoon kan kom ruil in 'n skootrekenaar en mic. 564 00:27:35,940 --> 00:27:47,390 565 00:27:47,390 --> 00:27:49,760 >> ROB BOWDEN: Ek dink ek mag hê die vraag verskillend geïnterpreteer. 566 00:27:49,760 --> 00:27:53,826 Maar ek vertolk dit as, as jy ' die nommers 1, 2, en 3, hoe doen ons 567 00:27:53,826 --> 00:27:56,720 weet 2 die wortel te maak in teenstelling met 1 of 3? 568 00:27:56,720 --> 00:27:59,480 As ons 2 die wortel, dan is dit mooi 1 en 3 van die links en regs. 569 00:27:59,480 --> 00:28:04,610 Maar as 1 is die wortel, dan is dit 1 tot die top, 2 regs, 3 aan die regterkant. 570 00:28:04,610 --> 00:28:10,880 So by verstek, jy weet nie wat die wortel te maak. 571 00:28:10,880 --> 00:28:15,400 En vir enige algoritme ons verwag om gee jou net die eerste ding wat jy 572 00:28:15,400 --> 00:28:16,680 insetsel sou die wortel wees. 573 00:28:16,680 --> 00:28:19,890 Of ons wil gee jou 'n binêre boom wat bestaan ​​reeds dat 'n wortel. 574 00:28:19,890 --> 00:28:24,760 Maar ander algoritmes bestaan ​​sodanig dat die wortel sal werk, so dat as jy 575 00:28:24,760 --> 00:28:28,370 beland in die situasie waar dit is 1, 2, 3, dit sou outomaties by te werk te 576 00:28:28,370 --> 00:28:30,900 maak 2 die nuwe wortel, sodat dit is nog steeds mooi gebalanseer. 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 Haai, ouens. 580 00:28:36,170 --> 00:28:37,810 Ek is Angela. 581 00:28:37,810 --> 00:28:42,490 En ek gaan af ons C en dan in 'n paar van ons web 582 00:28:42,490 --> 00:28:43,120 tegnologie - 583 00:28:43,120 --> 00:28:46,570 HTTP, HTML, en CSS. 584 00:28:46,570 --> 00:28:49,610 So die eerste ding is buffer oorloop aanvalle. 585 00:28:49,610 --> 00:28:53,070 So kom ons neem 'n blik op die kode. 586 00:28:53,070 --> 00:28:54,260 Dit is redelik eenvoudig. 587 00:28:54,260 --> 00:28:55,460 Daar is 'n funksie cat. 588 00:28:55,460 --> 00:28:56,990 En is dit nie terugkom nie. 589 00:28:56,990 --> 00:29:00,950 Maar dit neem in 'n wyser 'n string genoem bar. 590 00:29:00,950 --> 00:29:04,920 >> En dit gaan om dit te verklaar buffer, wat is 'n karakter 591 00:29:04,920 --> 00:29:07,690 skikking wat het 12 slots. 592 00:29:07,690 --> 00:29:11,730 En dit gebruik memcpy, wat net 'n funksie wat kopieë van een adres 593 00:29:11,730 --> 00:29:12,910 in 'n ander. 594 00:29:12,910 --> 00:29:19,400 So dit is probeer om te kopieer in ons buffer van watter 595 00:29:19,400 --> 00:29:21,140 bar dui op. 596 00:29:21,140 --> 00:29:24,640 So 'n idee wat is verkeerd met hierdie kode? 597 00:29:24,640 --> 00:29:27,568 598 00:29:27,568 --> 00:29:30,830 >> Publiek: As bar is langer as C, sal hulle vervang. 599 00:29:30,830 --> 00:29:31,520 >> ANGELA LI: Ja, presies. 600 00:29:31,520 --> 00:29:34,200 Ons het geen waarborg dat bar gaan minder as 12 wees. 601 00:29:34,200 --> 00:29:36,080 Ons het net 'n paar arbitrêre getal 12. 602 00:29:36,080 --> 00:29:38,380 En ons was soos, laat ons hoop dat ons toevoer van die gebruiker is minder as 603 00:29:38,380 --> 00:29:40,440 12 karakters lank wees. 604 00:29:40,440 --> 00:29:46,320 So in n ideale wêreld, as ons insette is altyd as wat verwag is, dan sal ons kry 605 00:29:46,320 --> 00:29:47,550 iets soos, hallo. 606 00:29:47,550 --> 00:29:48,920 Dit is minder as 12 karakters. 607 00:29:48,920 --> 00:29:51,870 Dit word gelees in kar c. 608 00:29:51,870 --> 00:29:53,280 En dan moet ons iets doen met dit. 609 00:29:53,280 --> 00:29:54,800 Dit maak nie regtig saak nie. 610 00:29:54,800 --> 00:29:59,740 >> Maar n kwaadwillige persoon kan doen iets meer soos hierdie, waar hulle 611 00:29:59,740 --> 00:30:04,760 gee ons alles bar dui op, dit gaan om te wys op die groot verskeidenheid 612 00:30:04,760 --> 00:30:06,280 van net A's. 613 00:30:06,280 --> 00:30:10,680 En dit is manier langer as 12. 614 00:30:10,680 --> 00:30:13,830 So dit gaan al die pad om te gaan hier waar die opbrengs 615 00:30:13,830 --> 00:30:15,420 adres gebruik te word. 616 00:30:15,420 --> 00:30:17,860 So kom ons sê hierdie funksie is cat genoem. 617 00:30:17,860 --> 00:30:20,970 Cat is miskien deur 'n ander genoem funksie, wat deur hoof geroep is. 618 00:30:20,970 --> 00:30:24,890 So wanneer cat loop, is dit nodig om te weet waar om terug te keer. 619 00:30:24,890 --> 00:30:29,130 >> As cat deur 'n funksie genoem genoem roof, dit het om te weet dat dit 620 00:30:29,130 --> 00:30:30,250 het om terug te gaan roof. 621 00:30:30,250 --> 00:30:34,040 En dit is wat hierdie terugkeer adres hier is om ons te vertel. 622 00:30:34,040 --> 00:30:38,340 Maar as ons oor het dit met 'n paar ander adres, in hierdie geval, dit is 'n 623 00:30:38,340 --> 00:30:42,650 verteenwoordiging van die adres van die begin van hierdie buffer, dan 624 00:30:42,650 --> 00:30:45,240 wat eintlik gaan gebeur, is dat in plaas van die terugkeer na roof, 625 00:30:45,240 --> 00:30:48,470 wat genoem ons funksie, dit is net gaan om te gaan na die voorkant van die kode. 626 00:30:48,470 --> 00:30:53,930 >> En as dit was daar, want 'n kwaadwillige hacker dude gekom en 627 00:30:53,930 --> 00:30:56,820 ingespuit hierdie, dan miskien hierdie bedrag van A se is nie eintlik 'n se. 628 00:30:56,820 --> 00:31:02,030 En dit is eintlik net kode wat breek jou rekenaar of iets. 629 00:31:02,030 --> 00:31:05,930 So verdedigende oor hierdie soort van te wees ding, jy moet nooit aanvaar dat 630 00:31:05,930 --> 00:31:09,120 toevoer van die gebruiker is 'n sekere bedrag van die karakters. 631 00:31:09,120 --> 00:31:13,310 Byvoorbeeld, wanneer jy doen speller, is hy ingelig dat die woorde was 632 00:31:13,310 --> 00:31:15,580 net om te wees 40 karakters lang maksimum. 633 00:31:15,580 --> 00:31:16,570 En dit was goed. 634 00:31:16,570 --> 00:31:20,150 >> Maar indien nie, dan sal jy het om te maak seker om net in 45 lees 635 00:31:20,150 --> 00:31:21,520 karakters op 'n slag. 636 00:31:21,520 --> 00:31:24,430 Anders, kan jy oorskryf jou buffer. 637 00:31:24,430 --> 00:31:26,140 Enige vrae oor daardie. 638 00:31:26,140 --> 00:31:26,733 Ja. 639 00:31:26,733 --> 00:31:28,850 >> Publiek: Kan jy net praat 'n bietjie meer oor hierdie? 640 00:31:28,850 --> 00:31:29,790 >> ANGELA LI: Jammer. 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: Die mikrofoon is net vir die video. 644 00:31:35,870 --> 00:31:37,640 Ek sal probeer en projek. 645 00:31:37,640 --> 00:31:39,900 Hi, ouens. 646 00:31:39,900 --> 00:31:40,920 Sup? 647 00:31:40,920 --> 00:31:45,330 So laat ons gaan oor 'n paar dinge in die CS50 biblioteek, wat jy al met behulp 648 00:31:45,330 --> 00:31:49,072 al semester, meestal toevoer van die gebruiker te kry. 649 00:31:49,072 --> 00:31:53,140 Soos u weet, kan jy sluit die CS50 biblioteek net doen CS50.h, wat 650 00:31:53,140 --> 00:31:55,660 bevat al die voorlopers van die funksies wat jy kan gebruik, soos 651 00:31:55,660 --> 00:31:58,640 GetString en getint, en GetFloat, ensovoorts. 652 00:31:58,640 --> 00:32:02,870 En daar is hierdie een lyn in die CS50 biblioteek wat definieer 'n string, wat 653 00:32:02,870 --> 00:32:05,380 julle weet nou al teen is net 'n kar *. 654 00:32:05,380 --> 00:32:07,900 >> Maar laat ons neem 'n blik op hoe GetString werk. 655 00:32:07,900 --> 00:32:10,010 Dit is 'n baie verkorte weergawe. 656 00:32:10,010 --> 00:32:15,090 Jy kan trek die CS50 biblioteek lêers uit, dink ek, manuals.CS50.net. 657 00:32:15,090 --> 00:32:16,750 En jy kan deur middel van lees die werklike funksie. 658 00:32:16,750 --> 00:32:19,330 Maar dit dek van die belangrikste dele. 659 00:32:19,330 --> 00:32:23,870 Dus het ons geskep paar buffer met 'n kapasiteit. 660 00:32:23,870 --> 00:32:27,570 En wat ons doen, is ons een van die karakters op 'n tyd van Standard n. 661 00:32:27,570 --> 00:32:30,910 Dit is waar die gebruiker insette teks in die konsole. 662 00:32:30,910 --> 00:32:33,430 >> En so gaan ons lees in 'n karakter so lank as wat dit is nie 'n nuwe 663 00:32:33,430 --> 00:32:37,220 lyn en dit is nie die einde van die lêer, wat is die einde van standaard insette. 664 00:32:37,220 --> 00:32:45,690 En vir elke karakter wat ons lees in, As daardie karakter eindig te voeg 665 00:32:45,690 --> 00:32:50,120 die aantal karakters wat ons gelees in, en dit is meer as ons vermoë, 666 00:32:50,120 --> 00:32:53,490 dan wat ons doen is ons net die grootte van ons buffer sodat dit is twee keer so lank. 667 00:32:53,490 --> 00:32:56,950 So weer, dit beskerm teen buffer oorloop aanvalle, want jy lees in 668 00:32:56,950 --> 00:32:58,315 'n karakter in 'n tyd. 669 00:32:58,315 --> 00:33:02,290 En as op enige punt wat jy lees in te baie, jy moet net uit te brei jou buffer. 670 00:33:02,290 --> 00:33:03,330 Jy vermenigvuldig dit met twee. 671 00:33:03,330 --> 00:33:05,510 En dan het jy meer ruimte. 672 00:33:05,510 --> 00:33:09,120 >> Anders, kan jy voeg net 'n karakter te buffer. 673 00:33:09,120 --> 00:33:15,080 En nadat jy al die gelees het karakters, sal dit die buffer krimp 674 00:33:15,080 --> 00:33:18,510 terug na die normale grootte, voeg 'n nul terminator, en dan terug te keer. 675 00:33:18,510 --> 00:33:21,880 676 00:33:21,880 --> 00:33:24,960 Nou, laat ons kyk na getint. 677 00:33:24,960 --> 00:33:27,700 Kan julle dit lees? 678 00:33:27,700 --> 00:33:30,710 Ek kan zoom in 'n bietjie. 679 00:33:30,710 --> 00:33:33,410 680 00:33:33,410 --> 00:33:34,660 Ek weet nie hoe om rekenaars te werk. 681 00:33:34,660 --> 00:33:40,840 682 00:33:40,840 --> 00:33:41,270 Never mind. 683 00:33:41,270 --> 00:33:42,520 Ek kan nie zoom in goed. 684 00:33:42,520 --> 00:33:47,500 685 00:33:47,500 --> 00:33:48,770 >> Dit is werklik moeilik. 686 00:33:48,770 --> 00:33:49,180 Ek is jammer. 687 00:33:49,180 --> 00:33:51,490 Kom ons kyk net na hierdie. 688 00:33:51,490 --> 00:33:57,140 So, wat getint doen, is dit die eerste keer lees in 'n string van GetString, wat 689 00:33:57,140 --> 00:33:59,250 ons reeds geïmplementeer. 690 00:33:59,250 --> 00:34:02,945 En die belangrike rol om daarop te let is as dit deel dat dit eindig 691 00:34:02,945 --> 00:34:06,400 lees is soos nie eintlik 'n string, dan moet ons net terug te INT_MAX 692 00:34:06,400 --> 00:34:09,409 verteenwoordig mislukking. 693 00:34:09,409 --> 00:34:12,645 Hoekom moet ons terugkeer nie INT_MAX plaas negatiewe 1 of 1? 694 00:34:12,645 --> 00:34:13,895 Enige idees? 695 00:34:13,895 --> 00:34:16,853 696 00:34:16,853 --> 00:34:19,350 >> Publiek: [onhoorbaar] negatiewe 1 op die een. 697 00:34:19,350 --> 00:34:20,070 >> ANGELA LI: Ja, presies. 698 00:34:20,070 --> 00:34:24,560 So jy is manier om meer geneig om te wil net om insette 1 of negatief 1 wanneer dit gevra word 699 00:34:24,560 --> 00:34:27,469 vir 'n nde en wat de maxes. 700 00:34:27,469 --> 00:34:27,969 Dit is groot. 701 00:34:27,969 --> 00:34:29,690 Jy is waarskynlik nie van plan om dit te gebruik. 702 00:34:29,690 --> 00:34:32,690 So dit is soos 'n ontwerp besluit om te maak seker dat jy nie per ongeluk 703 00:34:32,690 --> 00:34:38,540 terug 'n fout of jy terugkeer nie 1, wat ontleed te kan word 704 00:34:38,540 --> 00:34:41,199 as 'n korrekte antwoord. 705 00:34:41,199 --> 00:34:45,110 So as 'n reël nie bestaan ​​nie, ons terugkeer INT-MAX. 706 00:34:45,110 --> 00:34:48,090 Andersins, gebruik ons ​​sscanf, Dit is soos scanf. 707 00:34:48,090 --> 00:34:49,449 Maar dit lees van 'n string. 708 00:34:49,449 --> 00:34:54,310 >> En ons het hierdie geformatteerde string, wat is% i% c. 709 00:34:54,310 --> 00:34:57,440 En ons probeer en ooreenstem met wat met wat die gebruiker aan ons gegee het. 710 00:34:57,440 --> 00:35:01,420 Ons wil die aantal ooreenstem dinge te wees 1, wat beteken dat ons slegs 711 00:35:01,420 --> 00:35:04,940 regtig 'n heelgetal te pas omring deur miskien wit 712 00:35:04,940 --> 00:35:06,840 ruimte, miskien nie. 713 00:35:06,840 --> 00:35:10,710 In hierdie geval, as jy in iets soos bar, maak bar nie ooreenstem nie, 714 00:35:10,710 --> 00:35:14,400 want daar moet wees 'n heelgetal aan die begin. 715 00:35:14,400 --> 00:35:17,060 So sscan nooit opgedaag 0. 716 00:35:17,060 --> 00:35:19,640 So jy terugkeer nie doen nie. 717 00:35:19,640 --> 00:35:23,850 >> Alternatiewelik, as jy in iets soos 1, 2, 3, A, B, C, wat wedstryde 718 00:35:23,850 --> 00:35:27,180 beide die heelgetal, maar ook die karakter nadat dit. 719 00:35:27,180 --> 00:35:29,990 So sscanf sal terugkeer 2, wat is ook nie ideaal nie. 720 00:35:29,990 --> 00:35:34,620 Jy wil nie 1, 2, 3, A, B, C 'n geldige int te wees. 721 00:35:34,620 --> 00:35:36,990 Sodat ook nie werk nie. 722 00:35:36,990 --> 00:35:38,530 Maar sê jy sit in iets soos 50. 723 00:35:38,530 --> 00:35:42,460 Dit sal die% wedstryd wat ek, wat beteken dit sal kry lees in n. 724 00:35:42,460 --> 00:35:44,790 En nou, sal n die nommer 50 bevat. 725 00:35:44,790 --> 00:35:46,110 En dan kan jy dit terug. 726 00:35:46,110 --> 00:35:49,270 >> Andersins, jy getref probeer weer. 727 00:35:49,270 --> 00:35:55,790 En dan is dit net gaan oor weer tot jy 'n behoorlike toevoer van die gebruiker. 728 00:35:55,790 --> 00:35:56,891 Enige vrae oor wat? 729 00:35:56,891 --> 00:36:02,182 >> Publiek: So as jy was om uit te druk die waarde van die getint op [onhoorbaar] 730 00:36:02,182 --> 00:36:06,250 sou dit net die integriteit en Max? 731 00:36:06,250 --> 00:36:07,440 >> ANGELA LI: Ja. 732 00:36:07,440 --> 00:36:11,780 So as jy gebruik getint, moet jy aanvaar dat jy nie wil hê dat de Max 733 00:36:11,780 --> 00:36:15,328 'n geldige toevoer, want jy gaan om te aanvaar dat dit was sleg. 734 00:36:15,328 --> 00:36:27,740 >> Publiek: As ons nie char c en iemand sit in 1, 2, 3, Sam, sou dit 735 00:36:27,740 --> 00:36:29,430 nog steeds werk vir 1, 2, 3? 736 00:36:29,430 --> 00:36:29,750 >> ANGELA LI: Ek dink dit sal werk. 737 00:36:29,750 --> 00:36:33,340 Maar jy wil nie 123Sam te 'n geldige toevoer deur 'n gebruiker. 738 00:36:33,340 --> 00:36:34,670 Dit is nie regtig 'n int. 739 00:36:34,670 --> 00:36:36,840 Daarom is dit nie regverdig lyk dit te ontleed as 'n 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 daardie geval, laat se skuif op die internet. 743 00:36:45,800 --> 00:36:49,120 So HTTP is nie 'n taal. 744 00:36:49,120 --> 00:36:56,060 HTTP is net die stel van standaarde vir hoe jy dinge van kliënte stuur, 745 00:36:56,060 --> 00:36:57,280 dis jy, te stuur. 746 00:36:57,280 --> 00:36:59,730 Dit is die ander mense op die web. 747 00:36:59,730 --> 00:37:02,900 >> So HTTP staan ​​vir HyperText Oordrag protokol. 748 00:37:02,900 --> 00:37:04,610 Dit is die hart en siel van die hele web. 749 00:37:04,610 --> 00:37:07,050 Die hiperteks deel het net verwys na HTML. 750 00:37:07,050 --> 00:37:10,690 Die oordrag is kliënte soos jy versoeke sal stuur na 751 00:37:10,690 --> 00:37:13,060 bedieners, wat gee antwoorde. 752 00:37:13,060 --> 00:37:16,380 En die protokol is net, hoe jy verwag 'n bediener op te tree? 753 00:37:16,380 --> 00:37:19,960 En hoe is jy veronderstel om op te tree sodanig dat jy kan vaartbelyn hierdie 754 00:37:19,960 --> 00:37:21,920 kommunikasie proses? 755 00:37:21,920 --> 00:37:26,650 >> So HTTP versoeke lyk baie soos hierdie. 756 00:37:26,650 --> 00:37:28,070 GET is die tipe versoek. 757 00:37:28,070 --> 00:37:31,220 Julle het gesien AOO versoeke en post versoeke. 758 00:37:31,220 --> 00:37:36,690 Die tweede ding is daar, / my, dis net die URI of die URL van waar jy 759 00:37:36,690 --> 00:37:38,140 wil gaan in die gasheer. 760 00:37:38,140 --> 00:37:44,140 So hierdie versoek vra vir die bladsy, soos www.facebook.com / me. 761 00:37:44,140 --> 00:37:45,300 En dit is 'n GET-versoek. 762 00:37:45,300 --> 00:37:51,020 En dan is dit HTTP/1.1, dit is net die weergawe van HTTP jy gebruik. 763 00:37:51,020 --> 00:37:55,020 Dit is byna altyd 1,1. 764 00:37:55,020 --> 00:37:56,880 >> En dan is daar 'n klomp van ander dinge ook. 765 00:37:56,880 --> 00:38:02,510 Jy kan eintlik sien hierdie as jy maak jou konsole wanneer jy 766 00:38:02,510 --> 00:38:03,770 op die web. 767 00:38:03,770 --> 00:38:07,290 Antwoorde kyk om iets meer soos hierdie. 768 00:38:07,290 --> 00:38:09,620 Die boonste deel is, weer, die tipe HTTP jy gebruik 769 00:38:09,620 --> 00:38:12,310 gevolg deur 'n status kode. 770 00:38:12,310 --> 00:38:14,700 So 200 OK is alles uitgewerk. 771 00:38:14,700 --> 00:38:16,200 Hier is jou inhoud. 772 00:38:16,200 --> 00:38:17,390 Jou inhoud gaan volg. 773 00:38:17,390 --> 00:38:21,730 En dan sal dit vir jou sê watter soort van die inhoud en ander dinge ook. 774 00:38:21,730 --> 00:38:24,620 >> Die status kode, daar is 'n paar belangrikste is dat jy moet weet. 775 00:38:24,620 --> 00:38:26,460 200 OK is soos alles se goue. 776 00:38:26,460 --> 00:38:28,490 Alles werk. 777 00:38:28,490 --> 00:38:29,710 403 verbode. 778 00:38:29,710 --> 00:38:32,910 Dit het jy waarskynlik gesien as jy vergeet iets om behoorlik chmod. 779 00:38:32,910 --> 00:38:34,510 Dit beteken dat jy nie het nie die nodige regte te 780 00:38:34,510 --> 00:38:36,210 toegang wat op die bediener. 781 00:38:36,210 --> 00:38:38,110 Dit is soos, nee, jy kan dit nie sien nie. 782 00:38:38,110 --> 00:38:39,780 404 beteken dat die ding bestaan ​​nie. 783 00:38:39,780 --> 00:38:40,400 Nie gevind nie. 784 00:38:40,400 --> 00:38:41,640 Jy het waarskynlik gesien dat 'n klomp. 785 00:38:41,640 --> 00:38:45,510 >> 500 Interne server fout is gewoonlik soos iets verkeerd geloop het op die kant 786 00:38:45,510 --> 00:38:46,460 van die bediener. 787 00:38:46,460 --> 00:38:50,830 So wanneer jy die uitvoering van pset7, As jy PHP foute gehad het, kon jy 788 00:38:50,830 --> 00:38:53,890 eintlik gaan na die bladsy en sien 'n n hele klomp van PHP fout dinge. 789 00:38:53,890 --> 00:38:56,900 Maar dit beteken gewoonlik nie gebeur nie, omdat webtuistes regtig nie wil 790 00:38:56,900 --> 00:38:58,830 vertel hoekom hulle site is gebreek. 791 00:38:58,830 --> 00:39:03,370 Hulle sal waarskynlik net terug n 500 Interne bediener probleem. 792 00:39:03,370 --> 00:39:06,120 >> En dan is daar 418 Ek is 'n teepot. 793 00:39:06,120 --> 00:39:07,910 Daar is 'n hele storie oor Hoekom is dit 'n ding. 794 00:39:07,910 --> 00:39:09,860 Maar jy kan daaroor lees op jou eie tyd. 795 00:39:09,860 --> 00:39:11,450 Daar is 'n hele klomp van die ander status kode ook. 796 00:39:11,450 --> 00:39:12,700 Maar dit is die kinders moet jy weet. 797 00:39:12,700 --> 00:39:15,660 798 00:39:15,660 --> 00:39:18,610 So laat ons praat oor HTML. 799 00:39:18,610 --> 00:39:22,180 HTML, onthou, is nie 'n programmeertaal. 800 00:39:22,180 --> 00:39:23,510 Dit is 'n opmaak taal. 801 00:39:23,510 --> 00:39:25,210 Dit beteken dat dit beskryf inhoud. 802 00:39:25,210 --> 00:39:30,440 Dit vertel jou wat 'n HTML-dokument lyk hou of nie, hoe dit lyk 803 00:39:30,440 --> 00:39:32,230 Maar hoe dit gestruktureer is. 804 00:39:32,230 --> 00:39:36,110 >> So is dit definieer 'n struktuur en semantiek van webblaaie. 805 00:39:36,110 --> 00:39:37,830 Dit is soos hierdie is n paragraaf. 806 00:39:37,830 --> 00:39:40,060 Dit is 'n geordende lys. 807 00:39:40,060 --> 00:39:42,360 Dit is soos 'n deel van my bladsy. 808 00:39:42,360 --> 00:39:43,260 Hier is die titel. 809 00:39:43,260 --> 00:39:44,310 Dit maak dinge soos dat. 810 00:39:44,310 --> 00:39:48,770 Dit maak nie stileer enige van dat, omdat dit is wat jy doen in CSS. 811 00:39:48,770 --> 00:39:50,270 En dit lyk soos 'n reeks van geneste etikette. 812 00:39:50,270 --> 00:39:54,720 So 'n voorbeeld van 'n baie basiese te gebruik HTML bladsy, jy het die DOCTYPE 813 00:39:54,720 --> 00:39:56,720 verklaring tot daar. 814 00:39:56,720 --> 00:40:00,940 >> Dit DOCTYPE verklaring sê, ons gebruik HTML5. 815 00:40:00,940 --> 00:40:03,370 Dan moet jy die groot HTML tag. 816 00:40:03,370 --> 00:40:05,230 Dit bevat 'n kop en 'n liggaam. 817 00:40:05,230 --> 00:40:06,970 Binne-in die kop, jy het die titel. 818 00:40:06,970 --> 00:40:12,950 Dit is wat gaan in die titel bar van jou browser. 819 00:40:12,950 --> 00:40:15,810 Ons het 'n skakel tag wat links in 'n eksterne stylblad. 820 00:40:15,810 --> 00:40:19,880 En dan het ons 'n script wat trek vanaf 'n eksterne JavaScript sowel. 821 00:40:19,880 --> 00:40:23,750 >> En dan in ons liggaam is eintlik wat kry wat op die bladsy. 822 00:40:23,750 --> 00:40:28,210 Ons het 'n paragraaf en 'n beeld binne-in daardie paragraaf. 823 00:40:28,210 --> 00:40:32,000 Hierdie een is 'n foto van katjies. 824 00:40:32,000 --> 00:40:35,840 Let daarop dat die beeld tag sluit self. 825 00:40:35,840 --> 00:40:41,760 So in plaas van die opening met 'n beeld en dan doen 'n ander / beeld, jy 826 00:40:41,760 --> 00:40:47,500 net hierdie klein streep hier, wat sluit dit. 827 00:40:47,500 --> 00:40:53,670 En die beeld tag het ook hierdie sleutel waarde eienskap genoem alt. 828 00:40:53,670 --> 00:40:56,970 Dit is die alternatiewe teks wat gebeur wanneer u muis oor dit. 829 00:40:56,970 --> 00:41:03,170 >> Die meeste HTML elemente het 'n paar belangrike waarde dinge wat jy kan gee, is verskeie 830 00:41:03,170 --> 00:41:04,420 aanpassing. 831 00:41:04,420 --> 00:41:06,230 832 00:41:06,230 --> 00:41:08,705 Ja. 833 00:41:08,705 --> 00:41:09,955 >> Publiek: [onhoorbaar]. 834 00:41:09,955 --> 00:41:17,510 835 00:41:17,510 --> 00:41:19,680 >> ANGELA LI: Wel, so dit is 'n kenmerk van die merk. 836 00:41:19,680 --> 00:41:25,320 So, as jy met behulp van jQuery, kan jy doen kies image.getAttribute. 837 00:41:25,320 --> 00:41:27,930 En dan kan jy soek vir kry die alt eienskap. 838 00:41:27,930 --> 00:41:31,040 En dit sal vir u katjies. 839 00:41:31,040 --> 00:41:37,400 As jy onthou vorms in HTML, insette elemente sal naam eienskappe. 840 00:41:37,400 --> 00:41:41,870 En dit is wat PHP gebruik te stuur versoeke wanneer 'n vorm ingedien word. 841 00:41:41,870 --> 00:41:44,762 842 00:41:44,762 --> 00:41:50,064 >> Publiek: Het jy iets in oor hoe as jy kittens.jpg gebruik of 843 00:41:50,064 --> 00:41:54,410 iets wat die vermiste lêer dopgehou of lêers? 844 00:41:54,410 --> 00:41:54,750 >> ANGELA LI: Ja. 845 00:41:54,750 --> 00:41:57,010 So dit is wat genoem word 'n relatiewe pad, want ek is nie gee 846 00:41:57,010 --> 00:41:58,740 jy die volle pad. 847 00:41:58,740 --> 00:42:05,160 Dit is soos wanneer in C as jy fopen sommige lêer, as jy fopen hi.txt, wat 848 00:42:05,160 --> 00:42:09,190 hi.txt sal na verwagting in dieselfde gids, tensy jy dit gee 'n meer 849 00:42:09,190 --> 00:42:11,530 ingewikkelde pad. 850 00:42:11,530 --> 00:42:14,900 >> Publiek: So jy kan spesifiseer wat die gids [onhoorbaar]? 851 00:42:14,900 --> 00:42:17,660 >> ANGELA LI: Ja. 852 00:42:17,660 --> 00:42:19,370 En jy kan kyk hoe om dit te doen. 853 00:42:19,370 --> 00:42:23,480 Maar as ek wou kittens.jpg uit te kry van die ouer gids, sou ek 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 Ja. 857 00:42:30,930 --> 00:42:32,960 858 00:42:32,960 --> 00:42:33,760 Jammer. 859 00:42:33,760 --> 00:42:34,045 Ja. 860 00:42:34,045 --> 00:42:35,700 Ag man, ek het vergeet om die vraag. 861 00:42:35,700 --> 00:42:36,460 Wat was die vraag? 862 00:42:36,460 --> 00:42:39,570 O ja, die vraag is, is, kittens.jpg sal na verwagting in dieselfde gids? 863 00:42:39,570 --> 00:42:40,630 En in hierdie geval, dit is nie. 864 00:42:40,630 --> 00:42:44,030 Maar jy kan ook gee dit 'n sekere pad sodanig dat dit nie hoef te wees nie. 865 00:42:44,030 --> 00:42:47,100 866 00:42:47,100 --> 00:42:48,350 Goeie? 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 So CSS, soos HTML, is nie 'n programmeertaal. 870 00:42:55,420 --> 00:42:58,250 CSS is net 'n reeks van stilering reëls. 871 00:42:58,250 --> 00:43:00,130 Dit staan ​​vir Cascading Style Sheets. 872 00:43:00,130 --> 00:43:03,910 En jy dit gebruik in samewerking met HTML styl bladsye. 873 00:43:03,910 --> 00:43:08,140 So is daar drie maniere jy kan dit sluit. 874 00:43:08,140 --> 00:43:11,950 Een manier waarop jy dit kan doen, is in die kop gedeelte van jou HTML, kan jy net 875 00:43:11,950 --> 00:43:15,410 open 'n styl tag en dan hou sommige CSS reëls daar. 876 00:43:15,410 --> 00:43:16,759 Dit is redelik OK. 877 00:43:16,759 --> 00:43:17,228 Ja. 878 00:43:17,228 --> 00:43:21,449 >> Publiek: Kan jy die styl tags in tussen, laat 879 00:43:21,449 --> 00:43:22,860 sê, liggaam en / liggaam. 880 00:43:22,860 --> 00:43:27,400 En dan sal jy stilering wees slegs in die liggaam. 881 00:43:27,400 --> 00:43:28,840 >> ANGELA LI: Jy kon. 882 00:43:28,840 --> 00:43:29,590 Dit sal werk. 883 00:43:29,590 --> 00:43:33,990 Maar jy moet nie, want stilering is soort van die metadata wat moet gaan in 884 00:43:33,990 --> 00:43:35,890 die hoof van die dokument. 885 00:43:35,890 --> 00:43:38,280 Liggaam moet regtig bevat slegs wat eintlik gaan 886 00:43:38,280 --> 00:43:39,420 wys op jou bladsy. 887 00:43:39,420 --> 00:43:42,155 >> Publiek: So jy wil sit styl in jou kop te styl van die 888 00:43:42,155 --> 00:43:43,930 hele web bladsy, reg? 889 00:43:43,930 --> 00:43:44,300 >> ANGELA LI: Ja. 890 00:43:44,300 --> 00:43:50,470 So om styl hier, hierdie CSS reëls toepassing sal wees op die hele bladsy wat gebaseer is op 891 00:43:50,470 --> 00:43:52,100 hul keurders. 892 00:43:52,100 --> 00:43:57,090 So het die beter manier om dit te doen, is in plaas van 'n styl tag in jou kop, 893 00:43:57,090 --> 00:44:00,430 jy het hierdie skakel na 'n eksterne styl vel soos ek jou gewys het in die 894 00:44:00,430 --> 00:44:01,980 vorige voorbeeld. 895 00:44:01,980 --> 00:44:05,920 Wat dit beteken is dit probeer en vind die lêer style.css en dan trek dit 896 00:44:05,920 --> 00:44:08,470 in en gebruik dit as die style vir die bladsy. 897 00:44:08,470 --> 00:44:10,500 En jou style.css sou net so lyk. 898 00:44:10,500 --> 00:44:13,330 Dit sou net 'n klomp van CSS. 899 00:44:13,330 --> 00:44:16,210 >> En uiteindelik, is daar 'n ander manier waarop jy kan insluit CSS, wat jy regtig 900 00:44:16,210 --> 00:44:17,480 moet nooit doen nie. 901 00:44:17,480 --> 00:44:18,950 Dit is oproep inline stilering. 902 00:44:18,950 --> 00:44:22,650 En so 'n HTML element kan ook neem 'n styl kenmerk. 903 00:44:22,650 --> 00:44:26,320 En dan in die styl kenmerk, jy kan dit gee CSS reëls. 904 00:44:26,320 --> 00:44:29,140 So in hierdie geval, ongeag div Ek is definieer reg hier, gaan dit 905 00:44:29,140 --> 00:44:32,580 het 'n swart agtergrond en 'n wit teks kleur. 906 00:44:32,580 --> 00:44:35,620 Maar jy moet dit nie doen nie, want wat Dit beteken dit sit jou stilering 907 00:44:35,620 --> 00:44:36,850 binne-in jou HTML. 908 00:44:36,850 --> 00:44:40,530 >> En ek weet ons het gepraat oor HTML is struktuur en CSS is styl. 909 00:44:40,530 --> 00:44:42,790 As jy dit doen, is dit meng hulle saam. 910 00:44:42,790 --> 00:44:44,550 En dit is nie baie skoon. 911 00:44:44,550 --> 00:44:45,800 So dit nie doen nie. 912 00:44:45,800 --> 00:44:47,690 913 00:44:47,690 --> 00:44:52,100 Met behulp van 'n voorbeeld van CSS, daar, het ons net kies die liggaam van die HTML 914 00:44:52,100 --> 00:44:52,380 dokumentêre. 915 00:44:52,380 --> 00:44:55,110 En ons is soos, alles gaan wees Comic Sans. 916 00:44:55,110 --> 00:44:57,290 Ek beveel ook nie doen nie. 917 00:44:57,290 --> 00:44:59,940 Maar jy kan dit doen. 918 00:44:59,940 --> 00:45:03,140 >> Die tweede reël reg hier, gaan dit die element op die te kies 919 00:45:03,140 --> 00:45:04,880 bladsy met ID hoof. 920 00:45:04,880 --> 00:45:11,690 Dus, wat HTML element, ek het gesê ID = Hoof, ek gaan dat 'n te gee 921 00:45:11,690 --> 00:45:16,020 20-pixel marge en alles bring, al die teks, na die sentrum. 922 00:45:16,020 --> 00:45:19,030 Die laaste ding wat kies deur CSS klas. 923 00:45:19,030 --> 00:45:24,450 So 'n element op die bladsy wat ek het 'n artikel klas, ek gaan om dit te maak 924 00:45:24,450 --> 00:45:26,602 'n agtergrond van ligblou. 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 Dit is al wat ek gekry het. 928 00:45:30,700 --> 00:45:30,890 Vraag? 929 00:45:30,890 --> 00:45:34,020 >> Publiek: Wat beteken die hashtag voordat hoof doen? 930 00:45:34,020 --> 00:45:36,310 >> ANGELA LI: Die vraag is, wat beteken die hashtag voor vernaamste doen? 931 00:45:36,310 --> 00:45:40,770 In hierdie geval, die hash in CSS beteken kies deur ID. 932 00:45:40,770 --> 00:45:47,490 So as ek 'n paar HTML element, soos divID = hoof, dit CSS reël kies 933 00:45:47,490 --> 00:45:49,260 die ding met ID hoof. 934 00:45:49,260 --> 00:45:53,940 En so het die tydperk voor artikel is kies deur CSS klas of 935 00:45:53,940 --> 00:45:56,558 kies deur HTML klas. 936 00:45:56,558 --> 00:46:00,940 >> Publiek: Hoekom is daar 'n het voordat 6 in die agtergrond? 937 00:46:00,940 --> 00:46:01,270 >> ANGELA LI: Ja. 938 00:46:01,270 --> 00:46:03,360 So die vraag is, hoekom is daar 'n gemors voor die 6? 939 00:46:03,360 --> 00:46:05,320 Dit is anders as dié gemors. 940 00:46:05,320 --> 00:46:09,500 Dit beteken dat jy gee 'n heksadesimale kleur. 941 00:46:09,500 --> 00:46:14,260 So blok kleure, dit net verteenwoordig 'n kleur. 942 00:46:14,260 --> 00:46:17,860 En jy onthou RGB drietalle wanneer jy het die forensiese pset? 943 00:46:17,860 --> 00:46:18,770 Dit is soortgelyk. 944 00:46:18,770 --> 00:46:21,590 Die eerste twee syfers verteenwoordig hoeveel rooi is in die kleur. 945 00:46:21,590 --> 00:46:23,260 Die ander twee verteenwoordig hoeveel groen. 946 00:46:23,260 --> 00:46:25,450 En die derde stel hoeveel blou. 947 00:46:25,450 --> 00:46:30,060 En die hash is dit gaan 'n kleur te verteenwoordig. 948 00:46:30,060 --> 00:46:35,660 >> So iets van 0, 0, 0, 0, 0, 0 tot F, F, F, F, F, F geldig is. 949 00:46:35,660 --> 00:46:39,550 Dit is 'n paar geldige kleur wat kan word vertoon deur die leser. 950 00:46:39,550 --> 00:46:39,790 Vraag? 951 00:46:39,790 --> 00:46:43,590 >> Publiek: Wat is die verskil tussen gebruik deur ID en deur die klas? 952 00:46:43,590 --> 00:46:46,470 >> ANGELA LI: Die vraag is wat is die verskil tussen 953 00:46:46,470 --> 00:46:48,950 gebruik deur ID en klas? 954 00:46:48,950 --> 00:46:54,390 Jy kan slegs een element in 'n HTML dokument wat 'n gegewe ID. 955 00:46:54,390 --> 00:46:58,660 So net een ding op my bladsy toegelaat ID hoof te hê. 956 00:46:58,660 --> 00:47:02,580 Sodat jy dit gebruik, want dit is die kop. 957 00:47:02,580 --> 00:47:03,850 Dit is die navigasie. 958 00:47:03,850 --> 00:47:05,230 Dit is die voet. 959 00:47:05,230 --> 00:47:09,070 Klasse is anders, want jy kan klasse van toepassing op soveel HTML elemente 960 00:47:09,070 --> 00:47:10,100 as jy wil. 961 00:47:10,100 --> 00:47:15,860 >> So byvoorbeeld, ek het die klas artikel, want daar is waarskynlik meer as een 962 00:47:15,860 --> 00:47:17,540 artikel op my bladsy. 963 00:47:17,540 --> 00:47:20,200 Jy is net toegelaat om soveel te hê elemente op die bladsy met dieselfde 964 00:47:20,200 --> 00:47:23,190 klas, maar slegs een met 'n sekere ID. 965 00:47:23,190 --> 00:47:25,600 >> Publiek: So het die dot verteenwoordig die klas? 966 00:47:25,600 --> 00:47:26,090 >> ANGELA LI: Ja. 967 00:47:26,090 --> 00:47:27,380 'N kol verteenwoordig 'n 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 Dit is al wat ek het, ouens. 971 00:47:32,370 --> 00:47:33,544 Dankie. 972 00:47:33,544 --> 00:48:13,380 >> [Applous] 973 00:48:13,380 --> 00:48:14,290 >> ZAMYLA CHAN: Hi, almal. 974 00:48:14,290 --> 00:48:14,880 Ek is Zamyla. 975 00:48:14,880 --> 00:48:18,830 Ek gaan om te word wat PHP, MVC, en SQL vandag. 976 00:48:18,830 --> 00:48:22,350 977 00:48:22,350 --> 00:48:26,110 Baie van die materiaal wat ek sal wees bedekking gaan wees pretty much 978 00:48:26,110 --> 00:48:29,100 reg uit pset7. 979 00:48:29,100 --> 00:48:29,700 Alle regte. 980 00:48:29,700 --> 00:48:31,180 So, wat is PHP? 981 00:48:31,180 --> 00:48:35,150 PHP staan ​​vir PHP Hypertext Preprocessor. 982 00:48:35,150 --> 00:48:38,740 Daarom is dit op sigself is 'n rekursiewe noem, wat is pretty cool. 983 00:48:38,740 --> 00:48:42,220 PHP is 'n bediener-kant skripte taal, en dit bied die agterkant 984 00:48:42,220 --> 00:48:44,610 en die logiese fondamente van ons webwerf. 985 00:48:44,610 --> 00:48:48,520 >> So Angela het baie gepraat oor die HTML en CSS wat die struktuur maak 986 00:48:48,520 --> 00:48:49,530 van die webwerf. 987 00:48:49,530 --> 00:48:53,210 Maar wat as jy wil om dit te verander inhoud dinamies en of dit wissel 988 00:48:53,210 --> 00:48:55,240 gebaseer op die gebruiker of sekere voorwaardes? 989 00:48:55,240 --> 00:48:57,060 Dit is waar PHP kom in 990 00:48:57,060 --> 00:49:02,610 Nou, tipies, kan PHP 'n paar minder lyne dieselfde ding om te implementeer 991 00:49:02,610 --> 00:49:07,380 in C. Dit is omdat PHP hanteer geheue bestuur vir die programmeerder, 992 00:49:07,380 --> 00:49:11,170 in teenstelling met ons om te malloc gratis, dinge soos dat. 993 00:49:11,170 --> 00:49:15,430 >> Maar omdat PHP is 'n interpretatiewe taal, tipies, kan dit uit te voer 994 00:49:15,430 --> 00:49:19,540 'n bietjie stadiger as C, wat is 'n saamgestel taal. 995 00:49:19,540 --> 00:49:23,150 Omdat ons beweeg programme tale, laat ons kyk na hoe die 996 00:49:23,150 --> 00:49:24,570 sintaksis sal verskil. 997 00:49:24,570 --> 00:49:28,770 Kom ons wees baie versigtig om nie te deurmekaar raak met hierdie. 998 00:49:28,770 --> 00:49:33,750 So met PHP sintaksis, of jy inbedding jou PHP binnekant van 'n HTML 999 00:49:33,750 --> 00:49:40,430 lêer of binne 'n. PHP lêer self, jy nodig om die kode te sluit in die oop 1000 00:49:40,430 --> 00:49:45,270 PHP en die geslote PHP etikette soos volg, soos op die skerm. 1001 00:49:45,270 --> 00:49:46,660 >> Veranderlikes in PHP. 1002 00:49:46,660 --> 00:49:51,490 Elke enkele veranderlike sal begin met die $ teken gevolg deur die naam van die 1003 00:49:51,490 --> 00:49:53,150 jou veranderlike. 1004 00:49:53,150 --> 00:49:56,530 Nou, veranderlikes in PHP is losweg getik, wat beteken dat jy nie nodig het 1005 00:49:56,530 --> 00:50:00,030 wat die data tipe aan te dui is wanneer jy dit is verklaar. 1006 00:50:00,030 --> 00:50:03,505 Dit beteken egter nie dat hulle het geen tipes nie. 1007 00:50:03,505 --> 00:50:09,370 So as ek verklaar 'n veranderlike en net soos dit gelyk is aan 1, en dan verklaar ek 1008 00:50:09,370 --> 00:50:15,140 'n ander veranderlike, stel dit gelyk aan "1" en dan nog een 1,0, goed, 1009 00:50:15,140 --> 00:50:19,410 afhangende van die tipe van gelykheid operateurs wat ek gebruik, as ek wil om te vergelyk 1010 00:50:19,410 --> 00:50:21,830 oor alle vorme, dan hulle sal gelyk wees. 1011 00:50:21,830 --> 00:50:25,570 Maar as ek wil om seker te maak dat die tipes is gelyk, PHP kan nog steeds doen 1012 00:50:25,570 --> 00:50:28,690 dat, selfs al het ons dui nie watter tipe dit is wanneer ons 1013 00:50:28,690 --> 00:50:31,170 eerste maak die lêer. 1014 00:50:31,170 --> 00:50:33,990 >> Nou, in PHP, selfs al is ons oorskakeling van ontwikkeling 1015 00:50:33,990 --> 00:50:39,360 tale van C, het ons nog ons betroubare Indien die toestand nie, net soos hierdie. 1016 00:50:39,360 --> 00:50:43,270 Ons het nog ons terwyl loops, net soos hierdie, waar jy sit in jou 1017 00:50:43,270 --> 00:50:47,300 toestand en dan die liggaam van die lus. 1018 00:50:47,300 --> 00:50:50,360 En dan het ons ook ons ​​lus, wat tipies lyk. 1019 00:50:50,360 --> 00:50:55,330 So as ek wou Itereer oor die hele nege psets en dien en noem dit 'n 1020 00:50:55,330 --> 00:50:58,960 funksie submitPset, dan kan ek dit doen hier, wat julle ouens het al 1021 00:50:58,960 --> 00:50:59,830 gedoen deur hierdie punt. 1022 00:50:59,830 --> 00:51:01,080 Baie geluk, deur die manier. 1023 00:51:01,080 --> 00:51:04,560 1024 00:51:04,560 --> 00:51:07,550 >> Vir die kamera, mense gesê, dankie. 1025 00:51:07,550 --> 00:51:11,220 Nou, as jy nie wil net gebruik om hierdie lus, dan PHP eintlik ook 1026 00:51:11,220 --> 00:51:13,580 het dinge genoem foreach loops. 1027 00:51:13,580 --> 00:51:22,210 So as ek het 'n skikking van heelgetalle, 0 deur 8, gestoor in die skikking psets, 1028 00:51:22,210 --> 00:51:27,290 dan kan ek 'n foreach lus het dat herhaal oor elke getal in psets. 1029 00:51:27,290 --> 00:51:30,640 En dan kan ek dieselfde bel funksioneer agt keer, 1030 00:51:30,640 --> 00:51:31,910 net soos ek tevore gedoen het. 1031 00:51:31,910 --> 00:51:36,480 So dit vir elke lus is lekker, want jy hoef nie te As jy nie weet nie 1032 00:51:36,480 --> 00:51:39,470 die presiese lengte van die skikking wat jy het, dan is die gebruik van hierdie foreach lus 1033 00:51:39,470 --> 00:51:42,800 sal sorg dit vir jou. 1034 00:51:42,800 --> 00:51:45,410 >> So ek gemaak psets as 'n skikking. 1035 00:51:45,410 --> 00:51:46,700 Kom ons kyk na dit. 1036 00:51:46,700 --> 00:51:51,290 Skikkings in PHP is tipies dieselfde as die mense wat ons in C, gehad het waar 1037 00:51:51,290 --> 00:51:52,960 jy kan 'n skikking verklaar. 1038 00:51:52,960 --> 00:51:59,200 En hier is, kan ek 'n leë skikking verklaar en dan bou dinamies deur die gebruik van 1039 00:51:59,200 --> 00:52:00,850 indekse as heelgetalle. 1040 00:52:00,850 --> 00:52:04,140 So indeks 0, ek gaan om te slaan 'n heelgetal vernoem 1. 1041 00:52:04,140 --> 00:52:09,210 Op indeks 1 van my lys, ek gaan die waarde 2 te stoor. 1042 00:52:09,210 --> 00:52:12,670 En op die derde indeks, maar die tweede getal is, gaan ek 1043 00:52:12,670 --> 00:52:14,870 slaan die nommer 12. 1044 00:52:14,870 --> 00:52:17,250 >> Nou, hierdie is 'n boete in daardie werk dit werk goed. 1045 00:52:17,250 --> 00:52:21,310 Maar sê dit vir my saak wat elke indeks hou. 1046 00:52:21,310 --> 00:52:24,500 Vir my is, indeks 0 beteken hoe baie katte wat ek het. 1047 00:52:24,500 --> 00:52:27,400 En die indeks 1 beteken hoe baie volstruise wat ek het. 1048 00:52:27,400 --> 00:52:29,450 En die volgende een beteken hoeveel honde. 1049 00:52:29,450 --> 00:52:34,140 Wel, dan is dit aan daardie spesifiseer, in plaas van om te onthou 0 betrekking tot 1050 00:52:34,140 --> 00:52:38,090 katte en 1 vir die volstruise, kan ek gebruik assosiatiewe skikkings, wat beteken dat 1051 00:52:38,090 --> 00:52:42,260 in plaas van heelgetalle as my indekse, Ek kan eintlik gebruik snare. 1052 00:52:42,260 --> 00:52:43,290 >> So, dit is baie handig. 1053 00:52:43,290 --> 00:52:47,130 En jy het basies net vervang die heelgetalle met snare. 1054 00:52:47,130 --> 00:52:50,074 En daar het jy 'n assosiatiewe skikking. 1055 00:52:50,074 --> 00:52:51,930 Ja. 1056 00:52:51,930 --> 00:52:55,800 >> Publiek: Is daar 'n rede waarom daar 'n onderstreping vir die tweede 1057 00:52:55,800 --> 00:52:58,750 deel, want my lys het die skikking. 1058 00:52:58,750 --> 00:53:01,330 >> ZAMYLA CHAN: Die vraag is, is daar 'n rede waarom daar 'n 1059 00:53:01,330 --> 00:53:03,320 beklemtoon tussen my en 'n lys? 1060 00:53:03,320 --> 00:53:03,610 No 1061 00:53:03,610 --> 00:53:06,878 Dit is net hoe ek die benaming my veranderlike. 1062 00:53:06,878 --> 00:53:11,670 >> Publiek: Op die eerste lyn, dit is een woord. 1063 00:53:11,670 --> 00:53:12,560 >> ZAMYLA CHAN: Ek vra om verskoning. 1064 00:53:12,560 --> 00:53:13,410 Ek sal dit regmaak. 1065 00:53:13,410 --> 00:53:13,620 Ja. 1066 00:53:13,620 --> 00:53:15,460 Hulle moet dieselfde veranderlike naam wees. 1067 00:53:15,460 --> 00:53:16,710 Goeie vangs. 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 So laat ons aanbeweeg na string aaneenskakellling. 1071 00:53:22,610 --> 00:53:27,500 As ek wou twee snare te neem, dan kan ek koppel hulle 1072 00:53:27,500 --> 00:53:28,550 met die dot operateur. 1073 00:53:28,550 --> 00:53:32,440 So as ek 'Milo as 'n eerste naam en Banana as 'n laaste naam, dan 1074 00:53:32,440 --> 00:53:35,430 concatenating met die dot operateur en dan om 'n ruimte in tussen 1075 00:53:35,430 --> 00:53:39,210 'n string wat Milo bevat maak Piesang, wat ek dan kan eggo, of 1076 00:53:39,210 --> 00:53:41,280 eerder, uit te druk. 1077 00:53:41,280 --> 00:53:44,465 >> Praat van eggo, laat ons praat oor 'n paar nuttige - 1078 00:53:44,465 --> 00:53:44,920 Oeps. 1079 00:53:44,920 --> 00:53:46,030 Ek is jammer. 1080 00:53:46,030 --> 00:53:52,920 'N Paar nuttige PHP funksies. 1081 00:53:52,920 --> 00:53:56,240 So het ons die - 1082 00:53:56,240 --> 00:53:57,444 tegniese probleme. 1083 00:53:57,444 --> 00:53:58,694 Een sekonde. 1084 00:53:58,694 --> 00:54:16,960 1085 00:54:16,960 --> 00:54:19,550 Ek dit stuur. 1086 00:54:19,550 --> 00:54:22,320 PowerPoint probleme. 1087 00:54:22,320 --> 00:54:29,200 En ons is terug met PHP funksies. 1088 00:54:29,200 --> 00:54:32,010 1089 00:54:32,010 --> 00:54:35,150 En ons is terug met PHP funksies. 1090 00:54:35,150 --> 00:54:39,890 >> So het ons die vereistes funksie, waar As jy in 'n lêer slaag, hier is net 1091 00:54:39,890 --> 00:54:43,300 'n voorbeeld van 'n lêer wat Ek kan slaag in 1092 00:54:43,300 --> 00:54:47,605 Dan sal die PHP-kode insluit van die lêer wat ek dui. 1093 00:54:47,605 --> 00:54:49,940 En dit sal evalueer wat in 1094 00:54:49,940 --> 00:54:54,450 Dan het ons ook 'n eggo, wat is 'n parallel te printf. 1095 00:54:54,450 --> 00:54:57,710 Uitgang is 'n parallel te breek, wat die blok uitgange 1096 00:54:57,710 --> 00:54:58,570 kode wat jy in 1097 00:54:58,570 --> 00:55:03,180 En dan leë tjeks of 'n gegewe veranderlike is soos nul of nul of 1098 00:55:03,180 --> 00:55:08,482 alles is gelyk met wat leeg. 1099 00:55:08,482 --> 00:55:09,438 Ja. 1100 00:55:09,438 --> 00:55:15,341 >> Publiek: Vir die string aaneenskakellling dot operateur een, in PHP, is dat die 1101 00:55:15,341 --> 00:55:20,158 dieselfde as in JavaScript waar dit gebruik die dot vir aaneenskakellling beteken plus? 1102 00:55:20,158 --> 00:55:27,440 So vir die volle naam, kan jy dollar het teken eerste + en dan + vir die laaste? 1103 00:55:27,440 --> 00:55:27,720 >> ZAMYLA CHAN: Ja. 1104 00:55:27,720 --> 00:55:32,150 So die vraag is of in PHP ons kan dieselfde string aaneenskakellling gebruik 1105 00:55:32,150 --> 00:55:33,890 as in JavaScript met die plus punte. 1106 00:55:33,890 --> 00:55:35,410 En Josef sal kry in wat later. 1107 00:55:35,410 --> 00:55:36,620 Ek dink hy het 'n skyfie op daardie. 1108 00:55:36,620 --> 00:55:37,570 Eintlik is dit anders. 1109 00:55:37,570 --> 00:55:41,310 So in JavaScript, jy moet gebruik die plus snare te koppel. 1110 00:55:41,310 --> 00:55:43,280 En in PHP, wat jy hoef te gebruik die dot operateur. 1111 00:55:43,280 --> 00:55:44,530 So hulle is 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 So nou dat ons alles gedek hierdie PHP, waar kom dit 1115 00:55:49,500 --> 00:55:50,490 regtig handig te pas kom? 1116 00:55:50,490 --> 00:55:54,470 Wel, dit kom handig te pas wanneer ons kan dit kombineer met ons HTML. 1117 00:55:54,470 --> 00:55:59,550 So ons PHP sal die krag gee om ons te 'n bladsy se HTML inhoud voor te verander 1118 00:55:59,550 --> 00:56:00,000 sy laai. 1119 00:56:00,000 --> 00:56:04,270 So gebaseer op verskillende toestande gewoonlik die spesifieke gebruiker wat 1120 00:56:04,270 --> 00:56:07,520 aangeteken het, kan ons mekaar verskillende inligting. 1121 00:56:07,520 --> 00:56:08,800 Linda, het jy 'n vraag? 1122 00:56:08,800 --> 00:56:15,510 >> Publiek: Kan jy koppel ook 'n heelgetal? 1123 00:56:15,510 --> 00:56:16,760 >> ZAMYLA CHAN: Ja, jy kan. 1124 00:56:16,760 --> 00:56:19,530 1125 00:56:19,530 --> 00:56:23,270 So die vraag is as jy kan koppel heelgetalle of ander 1126 00:56:23,270 --> 00:56:28,920 variable.s nou, ons beweeg aan na MVC, wat is 'n paradigma wat ons gebruik in 1127 00:56:28,920 --> 00:56:33,380 pset7 en 'n baie web ontwerpers gebruik vir organisering van die kode in die lêers 1128 00:56:33,380 --> 00:56:34,490 in hul webwerf. 1129 00:56:34,490 --> 00:56:35,870 M staan ​​vir Model. 1130 00:56:35,870 --> 00:56:41,450 En basies, sal model lêers hanteer met interaksie met die databasis. 1131 00:56:41,450 --> 00:56:44,640 Kyk lêers, hulle betrekking het op die estetika van die webwerf. 1132 00:56:44,640 --> 00:56:47,550 En die Kontroleur handvatsels gebruiker versoeke, ontledings 1133 00:56:47,550 --> 00:56:49,230 data, doen ander logika. 1134 00:56:49,230 --> 00:56:52,520 >> In pset7, ons saam die model en die kontroles. 1135 00:56:52,520 --> 00:56:55,880 En ons het net noem hulle leiers en sit hulle in die openbare gids. 1136 00:56:55,880 --> 00:57:01,730 En die oog lêers, ons gebruik dit as templates in die templates. 1137 00:57:01,730 --> 00:57:07,260 So hierdie diagram hier verteenwoordig ook wat dieselfde soort afdeling met die 1138 00:57:07,260 --> 00:57:10,510 model en die kontroles in die pers hier op die linker-en 1139 00:57:10,510 --> 00:57:12,770 die oog op die regterkant. 1140 00:57:12,770 --> 00:57:16,020 So dit is 'n skematiese dat sommige van julle kan gesien het by Kantoor ure of 1141 00:57:16,020 --> 00:57:19,130 gebruik te maak wat ons teken as jy is die uitzoeken jou pset. 1142 00:57:19,130 --> 00:57:25,030 >> So hier, in 'n gegewe kontroleerder, 'n model kontroleerder, het ons funksies 1143 00:57:25,030 --> 00:57:30,490 wat verband hou met die gebruik daarvan die SQL databasis, uitvoering PHP logika. 1144 00:57:30,490 --> 00:57:32,370 Miskien het jy sou opkyk 'n voorraad in Yahoo! 1145 00:57:32,370 --> 00:57:34,590 Finansies. 1146 00:57:34,590 --> 00:57:37,390 Of miskien, sal jy net kyk na sien of 'n gebruiker ingedien het 'n 1147 00:57:37,390 --> 00:57:40,250 vorm reeds voordat hy besoek jou bladsy. 1148 00:57:40,250 --> 00:57:43,390 En dan sal jy lewer 'n vorm hier. 1149 00:57:43,390 --> 00:57:48,210 Na daardie vorm is voorgelê deur die gebruiker, die aksie wat 1150 00:57:48,210 --> 00:57:53,470 wat in die vorm se HTML tag sou die bladsy aan te dui dat dit 1151 00:57:53,470 --> 00:57:55,620 terug dat die data te. 1152 00:57:55,620 --> 00:57:59,460 >> So al die inligting sal wees terug gestuur na jou kontroleerder. 1153 00:57:59,460 --> 00:58:02,620 Dan sou jy waarskynlik 'n bietjie meer te doen logika op daardie en miskien voer 'n paar 1154 00:58:02,620 --> 00:58:06,510 meer navrae in die SQL databasis en Dan, uiteindelik, kom met 'n mooi 1155 00:58:06,510 --> 00:58:11,930 verpak stel van die inligting wat jy wil slaag in in 'n ander sjabloon 1156 00:58:11,930 --> 00:58:13,950 wat vertoon die inligting. 1157 00:58:13,950 --> 00:58:17,030 Nou, hoe eintlik pakket wat ons nie dat die inligting up? 1158 00:58:17,030 --> 00:58:23,980 Wel, ons het 'n funksie genoem Betaal dit was in die functions.php lêer in 1159 00:58:23,980 --> 00:58:29,950 pset7, waar jy in die naam van slaag 'n lêer, die naam van 'n sjabloon. 1160 00:58:29,950 --> 00:58:32,160 >> En dan moet jy ook slaag in 'n assosiatiewe skikking. 1161 00:58:32,160 --> 00:58:37,150 En sodat assosiatiewe skikking verteenwoordig die verskillende inligting 1162 00:58:37,150 --> 00:58:39,040 wat jy wil om te slaag in 1163 00:58:39,040 --> 00:58:43,460 Nou, wat gaan konstante in wees hierdie voorbeelde is dat die sleutels of, 1164 00:58:43,460 --> 00:58:47,070 Inteendeel, die sleutels van die assosiatiewe skikkings, dit is wat gaan wees 1165 00:58:47,070 --> 00:58:51,050 sal na verwagting konstant deur die sjabloon te wees, omdat hy weet wat dit nodig 1166 00:58:51,050 --> 00:58:53,990 iets genoem boodskap of genoem naam. 1167 00:58:53,990 --> 00:58:56,940 En dan is die dinge wat op die regte, die werklike waardes, so in hierdie geval, wat is 1168 00:58:56,940 --> 00:59:00,750 'n goeie seun en Milo, is dié gaan die waardes wat die verandering te wees 1169 00:59:00,750 --> 00:59:05,610 dat die beheerder verander elke keer of op grond van 'n sekere toestand en 1170 00:59:05,610 --> 00:59:07,120 sal slaag wat in 1171 00:59:07,120 --> 00:59:12,790 >> So hier in templates, sien ons dat ons gebruik HTML spesiale karakters, 1172 00:59:12,790 --> 00:59:16,370 wat net basies beteken dat ons wil die peer string te kry dat die 1173 00:59:16,370 --> 00:59:17,580 gebruiker sit in 1174 00:59:17,580 --> 00:59:20,880 En ons wil vervang boodskap in daar. 1175 00:59:20,880 --> 00:59:26,110 So dan wanneer ons eintlik sien die lêer, die spesifieke 1176 00:59:26,110 --> 00:59:28,700 inligting oorgedra word in 1177 00:59:28,700 --> 00:59:33,850 Let daarop dat die sleutel hoe lewer werke dat die sleutels van die assosiatiewe 1178 00:59:33,850 --> 00:59:37,170 skikkings, diegene geword veranderlike name hier. 1179 00:59:37,170 --> 00:59:40,720 En so het die waardes van die sleutel in die assosiatiewe skikking word dan die 1180 00:59:40,720 --> 00:59:41,970 waarde van die veranderlike. 1181 00:59:41,970 --> 00:59:44,800 1182 00:59:44,800 --> 00:59:46,040 >> Nou, laat ons beweeg na SQL. 1183 00:59:46,040 --> 00:59:48,010 Dit staan ​​vir gestruktureerde Navraag taal. 1184 00:59:48,010 --> 00:59:50,460 En so is dit net 'n ontwikkeling taal wat ontwerp 1185 00:59:50,460 --> 00:59:51,880 vir die bestuur van databasisse. 1186 00:59:51,880 --> 00:59:56,860 En dit handig te pas gekom vir ons in ons pset7 finansies webwerf. 1187 00:59:56,860 --> 01:00:00,510 In wese is, is dit net 'n maklike manier om te spoor en te bestuur voorwerpe en tafels 1188 01:00:00,510 --> 01:00:02,070 en hulle verbind aan mekaar. 1189 01:00:02,070 --> 01:00:06,860 Nou, dink aan jou SQL databasis basies as 'n Excel lêer, miskien, 1190 01:00:06,860 --> 01:00:10,040 met verskeie blad velle. 1191 01:00:10,040 --> 01:00:13,820 >> Sodat jy verskeie tafels kan hê, miskien, wat gekoppel is aan mekaar. 1192 01:00:13,820 --> 01:00:19,420 En baie soos Excel, ons het 'n baie die funksies wat ons wil hê. 1193 01:00:19,420 --> 01:00:22,300 Byvoorbeeld, kan ons kies sekere rye. 1194 01:00:22,300 --> 01:00:24,110 Ons kan inligting plaas. 1195 01:00:24,110 --> 01:00:25,560 Ons kan werk rye. 1196 01:00:25,560 --> 01:00:27,440 En ons kan ook dinge verwyder. 1197 01:00:27,440 --> 01:00:30,920 1198 01:00:30,920 --> 01:00:36,560 >> Die SQL kies werke deur die kies van rye of 'n ry van die gespesifiseerde kolomme van 'n 1199 01:00:36,560 --> 01:00:39,640 databasis wat ooreenstem met 'n sekere kriteria wat jy aandui. 1200 01:00:39,640 --> 01:00:44,930 So hier toe ek sien select * uit wizards waar huis = Ravenclaw, dan 1201 01:00:44,930 --> 01:00:48,340 Ek kies *, wat beteken dat ek kies elke enkele kolom in daardie 1202 01:00:48,340 --> 01:00:56,340 ry van die tabel wizards, maar slegs indien die huis kolom gelyk Ravenclaw. 1203 01:00:56,340 --> 01:00:57,840 Nou, dit is suiwer of SQL. 1204 01:00:57,840 --> 01:01:02,680 So as ek het in phpMyAdmin, wat die spesifieke manier wat ons gebruik om te bestuur 1205 01:01:02,680 --> 01:01:07,040 ons SQL databasis, dan kan ek voeg wat in die phpMyAdmin webwerf. 1206 01:01:07,040 --> 01:01:08,290 En dit sou voer. 1207 01:01:08,290 --> 01:01:11,280 >> Maar ons eintlik wil doen wat op die PHP kant. 1208 01:01:11,280 --> 01:01:12,580 So, hoe kan ons dit doen? 1209 01:01:12,580 --> 01:01:20,180 Wel, ons gebruik die navraag funksie, wat basies voer dat SQL navraag. 1210 01:01:20,180 --> 01:01:21,830 Met behulp van? 1211 01:01:21,830 --> 01:01:25,850 as 'n plekhouer, kan ons in sekere slaag waardes aan ons string dat ons 1212 01:01:25,850 --> 01:01:26,920 wil vervang. 1213 01:01:26,920 --> 01:01:32,110 So dalk is ek die stoor verskillende waardes in die curr_house, wat 1214 01:01:32,110 --> 01:01:34,400 verteenwoordig die huidige huis dat ek gaan. 1215 01:01:34,400 --> 01:01:39,040 So ek kan gebeur dat in so 'n plekhouer met die vraagteken. 1216 01:01:39,040 --> 01:01:43,290 En dan sal ek basies voer die dieselfde as wat ek gedoen het voor, behalwe 1217 01:01:43,290 --> 01:01:45,550 nou, is ek in PHP. 1218 01:01:45,550 --> 01:01:51,300 >> En navraag sal terugkeer 'n assosiatiewe skikking. 1219 01:01:51,300 --> 01:01:53,470 En ek gaan dit in rye te stoor. 1220 01:01:53,470 --> 01:01:56,880 Nou, navraag kan altyd misluk. 1221 01:01:56,880 --> 01:02:02,870 Miskien is die SQL navraag kon nie uitgevoer want die tabel nie bestaan ​​het nie. 1222 01:02:02,870 --> 01:02:04,310 Of miskien het die kolom nie bestaan ​​nie. 1223 01:02:04,310 --> 01:02:05,400 Iets het verkeerd gegaan. 1224 01:02:05,400 --> 01:02:08,170 Wel, in daardie geval, sal jy wil maak seker dat jy kyk of die 1225 01:02:08,170 --> 01:02:09,700 navraag onwaar teruggekeer. 1226 01:02:09,700 --> 01:02:15,590 En dit is deur die gebruik van die drie gelyk operasie daar. 1227 01:02:15,590 --> 01:02:19,660 >> En dan het ek is jammer, dit is 'n ander CS50 funksie, verby in 'n boodskap. 1228 01:02:19,660 --> 01:02:23,435 En as jy kyk na verskoning vra, al is dit regtig is lewer apology.php. 1229 01:02:23,435 --> 01:02:26,100 1230 01:02:26,100 --> 01:02:26,410 Ja. 1231 01:02:26,410 --> 01:02:29,630 >> Publiek: Kan jy verduidelik wat dit star doen tussen te kies en te kom? 1232 01:02:29,630 --> 01:02:30,710 >> ZAMYLA CHAN: Ja, absoluut. 1233 01:02:30,710 --> 01:02:35,220 So het die ster in tussen te kies en uit beteken dat ek wil hê dat die hele te kies 1234 01:02:35,220 --> 01:02:37,440 hele ry van my tafel. 1235 01:02:37,440 --> 01:02:41,900 Ek kon kies aangedui het noem, jaar, huis. 1236 01:02:41,900 --> 01:02:46,160 En ek sou net die drie kolomme in my tafel. 1237 01:02:46,160 --> 01:02:51,560 Maar as ek kies *, dan sal ek kry alles wat in daardie kolom. 1238 01:02:51,560 --> 01:02:53,760 Toe ek gaan om te gaan in die rug eerste. 1239 01:02:53,760 --> 01:02:57,656 >> Publiek: So is dit steeds in SQL, reg? 1240 01:02:57,656 --> 01:02:59,610 Is hierdie navraag of is dit PHP? 1241 01:02:59,610 --> 01:03:00,550 >> ZAMYLA CHAN: Ons is in 'n navraag. 1242 01:03:00,550 --> 01:03:01,940 So is dit in PHP. 1243 01:03:01,940 --> 01:03:06,280 So met die PHP funksie navraag, ons uitvoering van 'n SQL navraag. 1244 01:03:06,280 --> 01:03:11,988 1245 01:03:11,988 --> 01:03:15,364 >> Publiek: Is iets in SQL geval-sensitiewe, soos kies 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 iets in SQL geval-sensitiewe? 1248 01:03:20,050 --> 01:03:21,760 Ek glo so, ja. 1249 01:03:21,760 --> 01:03:24,620 Ek glo dat kies en VANAF En waar is kas-sensitief. 1250 01:03:24,620 --> 01:03:25,535 Nee? 1251 01:03:25,535 --> 01:03:27,500 >> ROB BOWDEN: So, dit is die teenoorgestelde. 1252 01:03:27,500 --> 01:03:32,030 Die kolom name en die tafel middel, almal is kas-sensitief. 1253 01:03:32,030 --> 01:03:35,470 Maar enige van die MySQL sleutel woorde soos Kies uit is, en waar, dit is nie 1254 01:03:35,470 --> 01:03:36,140 geval-sensitiewe. 1255 01:03:36,140 --> 01:03:36,420 OK. 1256 01:03:36,420 --> 01:03:37,780 So het die teenoorgestelde van wat ek gesê het. 1257 01:03:37,780 --> 01:03:40,420 So al die MySQL sleutelwoorde - 1258 01:03:40,420 --> 01:03:42,670 kies, uit, waar - diegene is nie kas-sensitief. 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 Jy in die voorkant. 1262 01:03:46,500 --> 01:03:52,041 >> Publiek: As ek het $ rye in terme van meer as een ry, beteken dit is 1263 01:03:52,041 --> 01:03:53,640 net word 'n assosiatiewe skikking? 1264 01:03:53,640 --> 01:03:59,550 >> ZAMYLA CHAN: So die vraag is of rye het meer as een ry in dit, beteken 1265 01:03:59,550 --> 01:04:01,800 dit 'n assosiatiewe skikking? 1266 01:04:01,800 --> 01:04:05,680 So dit is 'n verskeidenheid van assosiatiewe skikkings reeds. 1267 01:04:05,680 --> 01:04:10,730 So selfs al is daar net een ry terug, dan sal jy het om te gaan na 1268 01:04:10,730 --> 01:04:12,690 indeks 0 van daardie gevolg. 1269 01:04:12,690 --> 01:04:15,316 En dan sal jy daardie eerste ry. 1270 01:04:15,316 --> 01:04:17,482 Ja, Belinda? 1271 01:04:17,482 --> 01:04:21,258 >> Publiek: Wanneer jy gebruik ===, is dit die enigste geval? 1272 01:04:21,258 --> 01:04:22,210 Of is daar ander? 1273 01:04:22,210 --> 01:04:26,815 >> ZAMYLA CHAN: So in hierdie geval, === is 'n vergelyking oor tipes. 1274 01:04:26,815 --> 01:04:29,870 1275 01:04:29,870 --> 01:04:34,050 Jammer. === Is 'n vergelyking wat vergelyk die tipes. 1276 01:04:34,050 --> 01:04:37,620 En dan == vergelyk oor alle vorme. 1277 01:04:37,620 --> 01:04:41,620 >> Publiek: Kan jy verduidelik wat rye is in hierdie situasie? 1278 01:04:41,620 --> 01:04:45,120 Is dit ry van data? 1279 01:04:45,120 --> 01:04:48,100 >> ZAMYLA CHAN: In die volgende skuif, ek is gaan om te verduidelik wat rye is. 1280 01:04:48,100 --> 01:04:49,890 So as jy nie omgee nie vashou af op daardie. 1281 01:04:49,890 --> 01:04:50,620 En dan moet jy in die rug? 1282 01:04:50,620 --> 01:04:54,699 >> Publiek: Vir funksies soos navraag, lewer en vra om verskoning [onhoorbaar]? 1283 01:04:54,699 --> 01:04:59,050 1284 01:04:59,050 --> 01:05:03,050 >> ZAMYLA CHAN: Die vraag was of hierdie funksies - navraag, vra om verskoning, 1285 01:05:03,050 --> 01:05:04,510 en lewer - 1286 01:05:04,510 --> 01:05:05,930 is algemeen in PHP. 1287 01:05:05,930 --> 01:05:09,460 Dit is mense wat CS50 geskryf het vir pset7. 1288 01:05:09,460 --> 01:05:09,910 En Jay? 1289 01:05:09,910 --> 01:05:15,333 >> Publiek: Wanneer jy nodig het om te sê $ _session, Is dat slegs vir ID's? 1290 01:05:15,333 --> 01:05:17,310 Of kan jy dit hier gesê het? 1291 01:05:17,310 --> 01:05:23,440 >> ZAMYLA CHAN: So die vraag is, wanneer Ons gebruik $ _session, dit was 'n spesifieke 1292 01:05:23,440 --> 01:05:25,290 globale veranderlike wat ons gebruik. 1293 01:05:25,290 --> 01:05:32,080 Hier hierdie veranderlike gaan wees plaaslike tot ons funksie. 1294 01:05:32,080 --> 01:05:36,588 So ons is maar net verklaar 'n nuwe veranderlike. 1295 01:05:36,588 --> 01:05:38,460 >> Publiek: Hoe is jammer geïmplementeer? 1296 01:05:38,460 --> 01:05:40,960 >> ZAMYLA CHAN: Die vraag is, hoe jammer geïmplementeer? 1297 01:05:40,960 --> 01:05:44,180 En ek dink dit is eintlik 'n redelik goeie praktyk vir julle ouens om te gaan in 1298 01:05:44,180 --> 01:05:49,260 die functions.php artikel en kyk na jammer om te sien hoe jy kan hê 1299 01:05:49,260 --> 01:05:50,670 dit self gedoen. 1300 01:05:50,670 --> 01:05:55,620 So ek kan laat dit aan jou nie, maar net sê dat as jy kyk na verskoning vra, 1301 01:05:55,620 --> 01:06:02,110 dan is dit die boodskap wat jy voorgelê om verskoning te vra, en dan is dit 1302 01:06:02,110 --> 01:06:06,570 lewer dat die boodskap. 1303 01:06:06,570 --> 01:06:08,240 Enige verdere vrae? 1304 01:06:08,240 --> 01:06:08,710 Ek hou van vrae. 1305 01:06:08,710 --> 01:06:09,555 So hou hulle kom. 1306 01:06:09,555 --> 01:06:11,888 >> Publiek: [onhoorbaar] 1307 01:06:11,888 --> 01:06:13,840 eggo of druk daar? 1308 01:06:13,840 --> 01:06:15,900 >> ZAMYLA CHAN: Die vraag is, kon ons nie net gesit 1309 01:06:15,900 --> 01:06:17,000 eggo of druk daar. 1310 01:06:17,000 --> 01:06:19,710 So wat sou iets gedoen het effens anders. 1311 01:06:19,710 --> 01:06:23,750 Dit sou gedruk het navraag misluk in daardie - 1312 01:06:23,750 --> 01:06:27,420 Wel, nou, ons is eintlik in ons kontroleerder. 1313 01:06:27,420 --> 01:06:30,350 So ons het nie eintlik ' HTML opgestel hier. 1314 01:06:30,350 --> 01:06:34,946 Verskoning deur die lewering van apologize.php eintlik aansture jy 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 >> So nou, laat ons gaan op aan te spreek die vraag van vroeër oor wat 1318 01:06:45,880 --> 01:06:47,330 regtig rye. 1319 01:06:47,330 --> 01:06:51,960 Wel, sal navraag terugkeer 'n verskeidenheid van rye. 1320 01:06:51,960 --> 01:06:55,020 En elke ry is verteenwoordig deur 'n assosiatiewe skikking. 1321 01:06:55,020 --> 01:07:02,840 So as ek 'n paar uitgevoer SQL navraag en Ek het gestoor en die resultaat in rye, dan 1322 01:07:02,840 --> 01:07:07,850 gebruik van 'n foreach lus, dan die skikking naam is die eerste een daar - rye. 1323 01:07:07,850 --> 01:07:13,170 En dan gaan ek om te bel elke ry daar $ ry. 1324 01:07:13,170 --> 01:07:20,060 >> So iterating oor wat, ek kan dan toegang tot die gegewe ry se naam kolom 1325 01:07:20,060 --> 01:07:22,340 jaar kolom, en die huis kolom. 1326 01:07:22,340 --> 01:07:28,010 Let daarop dat ek nie sou gewees het om te doen dit met rye, want rye indeks 1327 01:07:28,010 --> 01:07:29,290 naam bestaan ​​nie. 1328 01:07:29,290 --> 01:07:31,970 Rye is net 'n verskeidenheid van assosiatiewe skikkings. 1329 01:07:31,970 --> 01:07:34,870 So jy het twee vlakke is daar. 1330 01:07:34,870 --> 01:07:37,170 Sodra jy die verskeidenheid van rye, jy het om te kry in daardie. 1331 01:07:37,170 --> 01:07:39,110 En dan kan jy toegang tot die kolomme. 1332 01:07:39,110 --> 01:07:41,636 Het dit maak dit duidelik? 1333 01:07:41,636 --> 01:07:42,520 Ja, in die voorkant? 1334 01:07:42,520 --> 01:07:45,490 >> Publiek: [onhoorbaar] oop tussen hakies vir [onhoorbaar]? 1335 01:07:45,490 --> 01:07:46,220 >> ZAMYLA CHAN: Verskoon my? 1336 01:07:46,220 --> 01:07:49,740 >> Publiek: Die oop hakies. 1337 01:07:49,740 --> 01:07:52,420 >> ZAMYLA CHAN: Hierdie hier? 1338 01:07:52,420 --> 01:07:58,520 Dit is my toelaat om te sluit daardie veranderlike. 1339 01:07:58,520 --> 01:07:58,670 Ja. 1340 01:07:58,670 --> 01:08:01,900 >> Publiek: Wanneer jy druk, is jy druk op die HTML-kode? 1341 01:08:01,900 --> 01:08:03,110 >> ZAMYLA CHAN: Ja. 1342 01:08:03,110 --> 01:08:07,720 Toe ek druk dit hier is binne my sjabloon nou, so 1343 01:08:07,720 --> 01:08:10,310 my oog van MVC metode. 1344 01:08:10,310 --> 01:08:12,750 So ek druk in die HTML. 1345 01:08:12,750 --> 01:08:16,670 >> Publiek: So as ons na ontwikkelaar gereedskap na die uitvoer van hierdie, kan ons 1346 01:08:16,670 --> 01:08:17,160 wat eintlik in die kode? 1347 01:08:17,160 --> 01:08:18,410 >> ZAMYLA CHAN: Dit is 'n groot vraag, ja. 1348 01:08:18,410 --> 01:08:22,359 So as jy het in die ontwikkelaar gereedskap in Firefox gebruik Firebug of 1349 01:08:22,359 --> 01:08:26,109 Chrome, dan ja, kan jy sien die spesifieke HTML. 1350 01:08:26,109 --> 01:08:28,470 So sou dit nie wys $ ry ["Naam"]. 1351 01:08:28,470 --> 01:08:32,524 Dit sal ook al wys naam is in die ry. 1352 01:08:32,524 --> 01:08:36,268 >> Publiek: Net 'n algemene probleem, wat is tr en td gedefinieer as? 1353 01:08:36,268 --> 01:08:37,672 Hoekom sal ons [onhoorbaar]? 1354 01:08:37,672 --> 01:08:41,850 1355 01:08:41,850 --> 01:08:44,814 >> ZAMYLA CHAN: Table ry tr, tafel 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, dit is tabel data. 1360 01:08:56,835 --> 01:08:58,770 >> ZAMYLA CHAN: Table data. 1361 01:08:58,770 --> 01:08:59,894 Ja. 1362 01:08:59,894 --> 01:09:08,670 >> Publiek: Dit is 'n ry waarin die ry soos 'n kolom behandel? 1363 01:09:08,670 --> 01:09:08,910 >> ZAMYLA CHAN: Jammer. 1364 01:09:08,910 --> 01:09:10,570 Kan jy dit asseblief herhaal? 1365 01:09:10,570 --> 01:09:14,450 >> GEHOOR: Hoe sou jy visualiseer rye? 1366 01:09:14,450 --> 01:09:16,310 >> ZAMYLA CHAN: Hoe sou jy visualiseer rye in watter soort manier? 1367 01:09:16,310 --> 01:09:21,796 Is jy praat oor hierdie rye hier of die tr rye? 1368 01:09:21,796 --> 01:09:22,630 >> Publiek: Die rye. 1369 01:09:22,630 --> 01:09:25,229 >> ZAMYLA CHAN: Hierdie rye hier? 1370 01:09:25,229 --> 01:09:28,620 Ek wil visualiseer dit as Ek voer my navraag. 1371 01:09:28,620 --> 01:09:38,729 En dit sê, OK, ek het óf 0 tot n bedrag van rye wat ooreenstem met die kriteria 1372 01:09:38,729 --> 01:09:40,510 dat jy het bevraagteken. 1373 01:09:40,510 --> 01:09:43,740 So ek het 'n paar aantal rye. 1374 01:09:43,740 --> 01:09:51,450 So rye, die $ rye, winkels elke een van daardie rye in 'n skikking. 1375 01:09:51,450 --> 01:09:58,110 So selfs al is dit net een van hulle is, is dit nog steeds 'n verskeidenheid van rye wat ooreenstem met dit. 1376 01:09:58,110 --> 01:10:03,010 >> So dan, byvoorbeeld, is dit soortgelyk aan wanneer jy haal 1377 01:10:03,010 --> 01:10:05,390 die kas van die gebruikers. 1378 01:10:05,390 --> 01:10:10,810 En die kriteria daar was waar ID gelyk aan die sessie ID. 1379 01:10:10,810 --> 01:10:14,250 Daar is regtig net een ry wat kon ooreenstem nie. 1380 01:10:14,250 --> 01:10:18,960 Maar nog steeds rye net een ry terug. 1381 01:10:18,960 --> 01:10:22,620 So jy wil hê om te gaan na die rye, indeks 0, indeks kas te 1382 01:10:22,620 --> 01:10:26,195 eintlik kry om jou kas. 1383 01:10:26,195 --> 01:10:29,650 >> Publiek: Is die druk-funksie in eggo dieselfde ding? 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 Druk 'n eggo van dieselfde. 1387 01:10:33,304 --> 01:10:42,400 >> Publiek: Is die foreach lus om die enigste manier om na die indeks in rye? 1388 01:10:42,400 --> 01:10:46,110 >> ZAMYLA CHAN: Is daar 'n foreach lus die enigste manier waarop jy kan 1389 01:10:46,110 --> 01:10:47,030 Itereer deur rye? 1390 01:10:47,030 --> 01:10:47,180 No 1391 01:10:47,180 --> 01:10:51,000 Jy kan ook gebruik om 'n lus vir die, met dien verstande dat jy weet wat die lengte 1392 01:10:51,000 --> 01:10:53,024 van die ry se skikking. 1393 01:10:53,024 --> 01:10:58,500 >> Publiek: Kan jy toegang tot dit gebruik van 'n ry as [onhoorbaar]? 1394 01:10:58,500 --> 01:11:01,640 >> ZAMYLA CHAN: So jy kan nie toegang tot dit gebruik net ry as jy het nie 'n 1395 01:11:01,640 --> 01:11:05,160 foreach lus met dien verstande dat jy nie ry verklaar. 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 die wit. 1399 01:11:10,810 --> 01:11:13,990 >> Publiek: So, wat tr en td doen nie? 1400 01:11:13,990 --> 01:11:16,790 >> ZAMYLA CHAN: So tr en td is HTML tags. 1401 01:11:16,790 --> 01:11:19,590 tr dui die begin van 'n ry in die tabel. 1402 01:11:19,590 --> 01:11:26,625 En elke td dui op 'n nuwe tabel data kolom. 1403 01:11:26,625 --> 01:11:32,275 >> Publiek: Vir 'n visuele van wat 'n ry is soos, dink net die SQL, hoe 1404 01:11:32,275 --> 01:11:33,510 hulle het 'n ry. 1405 01:11:33,510 --> 01:11:35,980 [Onhoorbaar]. 1406 01:11:35,980 --> 01:11:36,390 >> ZAMYLA CHAN: Ja. 1407 01:11:36,390 --> 01:11:37,630 Dit is 'n groot punt. 1408 01:11:37,630 --> 01:11:41,510 Jy kan rye visualiseer as net soos in 'n Excel-tabel, net 1409 01:11:41,510 --> 01:11:44,540 die lys van die rye. 1410 01:11:44,540 --> 01:11:46,870 OK. 1411 01:11:46,870 --> 01:11:47,230 Alle regte. 1412 01:11:47,230 --> 01:11:50,740 So nou dat ons gegaan het oor kies, indien daar is nie meer vrae, ons sal 1413 01:11:50,740 --> 01:11:52,970 gaan oor na insetsel. 1414 01:11:52,970 --> 01:11:58,220 So as ek wou in te voeg in 'n paar tabel in en voeg sekere kolom 1415 01:11:58,220 --> 01:12:02,320 waardes, kon ek myself voeg in Ravenclaw in jaar 7. 1416 01:12:02,320 --> 01:12:07,245 Maar soms kan daar dubbele wees waardes, soos ons gesien het in pset7 wanneer ons 1417 01:12:07,245 --> 01:12:09,240 is besig om ons portefeulje. 1418 01:12:09,240 --> 01:12:15,610 >> So in hierdie geval, ons wil gebruik op Duplikaatsleutel werk, sodat ons dit nie doen nie 1419 01:12:15,610 --> 01:12:18,280 stoor verskeie rye met dieselfde waarde, maar eerder werk dit. 1420 01:12:18,280 --> 01:12:21,780 1421 01:12:21,780 --> 01:12:25,560 Toe ons eintlik werk, Dit is nie 'n insetsel. 1422 01:12:25,560 --> 01:12:30,100 Dit is net 'n update waar jy werk in 'n sekere tafel met 'n gegewe 1423 01:12:30,100 --> 01:12:34,403 kriteria en dan, uiteindelik, te verwyder, wat nie 'n baie soortgelyke ding. 1424 01:12:34,403 --> 01:12:40,200 >> Publiek: Kan jy kortliks gaan oor die duplikaatsleutel? 1425 01:12:40,200 --> 01:12:40,850 >> ZAMYLA CHAN: Ja. 1426 01:12:40,850 --> 01:12:48,340 In wese hier, ek het INSERT INTO gringotts, is, galjoene, hierdie waardes. 1427 01:12:48,340 --> 01:12:56,900 Maar ID, vermoedelik, is 'n unieke sleutel waarde wat in MySQL tabel. 1428 01:12:56,900 --> 01:13:06,750 So as ek reeds het dat ID opgestel, dan kan ek nie 'n nuwe ry plaas. 1429 01:13:06,750 --> 01:13:10,961 So as dit nie reeds bestaan, dan het ek dit by te werk. 1430 01:13:10,961 --> 01:13:16,040 1431 01:13:16,040 --> 01:13:17,722 In die middel van die wit. 1432 01:13:17,722 --> 01:13:21,570 >> Publiek: So voeg, te werk, te verwyder, en kies, is dié van alle beskikbare 1433 01:13:21,570 --> 01:13:22,875 plaaslik [onhoorbaar]? 1434 01:13:22,875 --> 01:13:27,320 1435 01:13:27,320 --> 01:13:29,630 >> ZAMYLA CHAN: So voeg, update, verwyder, en 1436 01:13:29,630 --> 01:13:31,120 kies is almal SQL navrae. 1437 01:13:31,120 --> 01:13:34,970 So wanneer jy met behulp van SQL, jy sal moet diegene beskikbaar. 1438 01:13:34,970 --> 01:13:38,226 1439 01:13:38,226 --> 01:13:40,706 >> Publiek: Terug na die verlede vasvrae - 1440 01:13:40,706 --> 01:13:44,178 daar was 'n vraag wat gehandel het oor As jy het 'n tafel en wou 1441 01:13:44,178 --> 01:13:52,610 voeg toets tellings in een en jy voeg jou naam so dit sal nie toelaat dat jy 1442 01:13:52,610 --> 01:13:54,594 [Onhoorbaar] Jou vriend se toets telling. 1443 01:13:54,594 --> 01:13:59,060 Hoe sal jy dit doen met die insetsel? 1444 01:13:59,060 --> 01:14:02,490 >> ZAMYLA CHAN: So die vraag was oor 'n vorige mid-term vraag. 1445 01:14:02,490 --> 01:14:04,320 Ek is nie bewus van wat een is dit nou. 1446 01:14:04,320 --> 01:14:06,790 So miskien daarna, as jy wil kom op en wys my, dan kan ek 1447 01:14:06,790 --> 01:14:08,155 beslis jou raad gee. 1448 01:14:08,155 --> 01:14:11,250 1449 01:14:11,250 --> 01:14:15,460 Maar praat van die inbring van dinge, soos neem van iemand se telling wanneer jy 1450 01:14:15,460 --> 01:14:18,800 behoort nie, laat ons praat oor SQL-inspuiting aanvalle. 1451 01:14:18,800 --> 01:14:22,050 So 'n SQL-inspuiting aanval is in wese waar iemand 1452 01:14:22,050 --> 01:14:27,680 voordeel van die lae sekuriteit van die manier wat jy neem in data. 1453 01:14:27,680 --> 01:14:35,660 >> So hier, net soos in CS50 finansies, toe ons aangemeld, kan ons ingaan in 'n 1454 01:14:35,660 --> 01:14:39,510 gebruikersnaam in die aanmelding vorm, die eerste teks boks, en 1455 01:14:39,510 --> 01:14:41,570 gee dan in 'n wagwoord. 1456 01:14:41,570 --> 01:14:45,610 Miskien ons PHP-kode kan kyk iets soos hierdie, waar $ username 1457 01:14:45,610 --> 01:14:51,410 is die post-data gebruikersnaam en wagwoord is post-data wagwoord. 1458 01:14:51,410 --> 01:14:55,110 En dan het ons net uit te voer ons navraag, sê, OK, goed, ons navraag gaan 1459 01:14:55,110 --> 01:14:57,990 kies uit ons gebruikers, waar die rekening is die 1460 01:14:57,990 --> 01:14:58,970 een wat hulle ingedien het. 1461 01:14:58,970 --> 01:15:06,870 En die wagwoord is die wagwoord, Dit beteken dat die wagwoorde. 1462 01:15:06,870 --> 01:15:12,670 >> Nou, wat as plaas van werklik die indiening van 'n werklike wagwoord, soos 1463 01:15:12,670 --> 01:15:16,850 12345 en aan die raai te gaffel wat sê wagwoord en probeer om te hack hul 1464 01:15:16,850 --> 01:15:21,460 rekening, wat as plaas hulle voorgelê nie. 1465 01:15:21,460 --> 01:15:24,380 Hulle kon dalk tik 'n raaiskoot op 'n wagwoord. 1466 01:15:24,380 --> 01:15:30,480 En dan sal hulle klaar is met die kwotasie tik in of 1 = 1. 1467 01:15:30,480 --> 01:15:35,160 Dit sou direk tempo in die SQL navraag iets om na te kyk. 1468 01:15:35,160 --> 01:15:38,200 Kies van die gebruikers waar gebruikersnaam = Penne en wagwoord 1469 01:15:38,200 --> 01:15:41,450 gelyk lelie of 1 = 1. 1470 01:15:41,450 --> 01:15:45,450 >> So óf die wagwoord korrek of 1 = 1 te wees, 1471 01:15:45,450 --> 01:15:47,870 wat altyd waar nie. 1472 01:15:47,870 --> 01:15:52,780 So in hierdie geval, basies, 'n gebruiker kan neem voordeel van hierdie en net aan te meld 1473 01:15:52,780 --> 01:15:55,240 hulself in en hack iemand se rekening. 1474 01:15:55,240 --> 01:15:58,950 So dit is hoekom ons wil vermy iemand wat dit te doen. 1475 01:15:58,950 --> 01:16:03,890 Maar gelukkig het die navraag funksie deur verby in die plekhouers sal neem 1476 01:16:03,890 --> 01:16:04,800 sorg van hierdie vir jou. 1477 01:16:04,800 --> 01:16:08,570 Ook, sal jy gewoonlik nooit wil om werklik te dien die wagwoorde 1478 01:16:08,570 --> 01:16:09,310 hulself. 1479 01:16:09,310 --> 01:16:14,115 Dit is hoekom ons hashed of geïnkripteer hulle in CS50 finansies. 1480 01:16:14,115 --> 01:16:17,553 >> Publiek: Die afgelope quiz gepraat oor MySQL ontsnapping snare. 1481 01:16:17,553 --> 01:16:21,800 Moet ons bekommerd wees oor wat? 1482 01:16:21,800 --> 01:16:22,670 >> ZAMYLA CHAN: Dit is 'n goeie vraag. 1483 01:16:22,670 --> 01:16:29,050 Die MySQL ontsnapping snare is beslis 'n funksie wat gebruik is in ons navraag. 1484 01:16:29,050 --> 01:16:30,420 Maar beslis kyk na dit. 1485 01:16:30,420 --> 01:16:32,950 Ek sou sê dit is fair game om te weet wat jy nodig het om dit te noem 1486 01:16:32,950 --> 01:16:34,370 funksioneer op 'n string. 1487 01:16:34,370 --> 01:16:35,245 Ja, Belinda? 1488 01:16:35,245 --> 01:16:38,606 >> Publiek: Hoe weet jy wanneer dit aanhalingstekens of dubbele aanhalingstekens? 1489 01:16:38,606 --> 01:16:43,516 En ook, ek voel soos in lesing wat jy iets oor nie met 1490 01:16:43,516 --> 01:16:48,426 die [onhoorbaar] of iets of die tweede single quote aan die einde. 1491 01:16:48,426 --> 01:16:56,407 1492 01:16:56,407 --> 01:17:00,825 Ek dink hy het daarop gewys in lesing wat jy veronderstel toespraak 1 te hê 1493 01:17:00,825 --> 01:17:04,290 en dan nie apostrofs of iets. 1494 01:17:04,290 --> 01:17:05,540 >> Publiek: [onhoorbaar]. 1495 01:17:05,540 --> 01:17:14,860 1496 01:17:14,860 --> 01:17:18,657 >> Publiek: Die ding is die laaste een aanhaling in daar in die tweede blokkie 1497 01:17:18,657 --> 01:17:19,391 moet nie daar wees. 1498 01:17:19,391 --> 01:17:21,840 [Onhoorbaar] 1499 01:17:21,840 --> 01:17:26,730 Want as jy daardie laaste een haal uit en pas dit aan vir inhoud 1500 01:17:26,730 --> 01:17:30,522 waar die wagwoord is, as jy daardie navraag, daar is 'n enkele aanhaling 1501 01:17:30,522 --> 01:17:31,340 die einde reeds. 1502 01:17:31,340 --> 01:17:36,580 Jy wil hê dat die enkele aanhaling te gebruik as die een wat die een in die gesig staar 1503 01:17:36,580 --> 01:17:37,574 [Onhoorbaar]. 1504 01:17:37,574 --> 01:17:42,820 So, wat is eintlik in die teks boks moet nie dat. 1505 01:17:42,820 --> 01:17:44,070 >> ZAMYLA CHAN: Ek sal dit verander nie. 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 As daar nie enige vrae het, dan sal ek slaag dit oor aan Josef te praat 1509 01:18:00,435 --> 01:18:04,332 oor JavaScript, ensovoorts. 1510 01:18:04,332 --> 01:18:09,540 >> [Applous] 1511 01:18:09,540 --> 01:18:11,660 >> JOSEPH ONG: So ons hardloop 'n bietjie agter. 1512 01:18:11,660 --> 01:18:13,280 So as jy het om te verlaat nie, dit is OK. 1513 01:18:13,280 --> 01:18:16,540 Maar ons vra dat jy jou kop af As jy in die middel, sodat jy 1514 01:18:16,540 --> 01:18:19,560 nie die kamera blok en jy gebruik die rug uitgang as jy moet. 1515 01:18:19,560 --> 01:18:25,010 1516 01:18:25,010 --> 01:18:26,306 Ek is Josef deur die pad. 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 Toets, toets. 1520 01:18:38,630 --> 01:18:39,630 Dan, is dat 'n goeie? 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 >> So het die video sal ook gepos word aanlyn vir diegene wat 1524 01:18:47,600 --> 01:18:48,850 het nou te verlaat. 1525 01:18:48,850 --> 01:18:51,350 1526 01:18:51,350 --> 01:18:52,600 Ongemaklik. 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 So quiz review. 1530 01:18:59,730 --> 01:19:00,980 Dit is 'n kat. 1531 01:19:00,980 --> 01:19:03,150 1532 01:19:03,150 --> 01:19:07,170 Nou, JavaScript, wat miskien nie as aww vir 'n paar van julle ouens. 1533 01:19:07,170 --> 01:19:07,370 OK. 1534 01:19:07,370 --> 01:19:09,280 So dit is die eerste, onthou van Zamyla. 1535 01:19:09,280 --> 01:19:11,270 Onthou dat PHP is hardloop op die bediener. 1536 01:19:11,270 --> 01:19:15,230 En baie van die tye, julle het sirkelroetes in PHP te druk HTML, reg? 1537 01:19:15,230 --> 01:19:19,170 So een keer dat kode voer, wat HTML uitvoer wat jy druk 1538 01:19:19,170 --> 01:19:20,500 kry gestuur na die gebruiker. 1539 01:19:20,500 --> 01:19:25,960 En wanneer dit gebeur, nie meer PHP kan word hardloop nie, tensy jy die blad herlaai van 1540 01:19:25,960 --> 01:19:27,660 Natuurlik, wat reexecutes die PHP. 1541 01:19:27,660 --> 01:19:30,080 Maar as jy druk wat HTML, jy kan nie iewers heen te gaan. 1542 01:19:30,080 --> 01:19:33,580 >> Sodat HTML word gestuur na die gebruiker, wat die leser hier, waar 1543 01:19:33,580 --> 01:19:35,470 Milo is die gebruik van die rekenaar. 1544 01:19:35,470 --> 01:19:40,340 En so goed, is daar verskeie dinge Sodra ons HTML stuur na die gebruiker. 1545 01:19:40,340 --> 01:19:43,350 Soms wil ons iets te doen wanneer jy op iets wat ons wil 1546 01:19:43,350 --> 01:19:47,350 waarskuwing bokse te pop-up, hierdie soort interaksies, soos wanneer jy druk op die 1547 01:19:47,350 --> 01:19:50,740 sleutel, wanneer jy iets op die kliek bladsy, ek wil iets om te gebeur. 1548 01:19:50,740 --> 01:19:54,550 Wel, kan jy nie reexecute PHP een maal dat HTML is ingestel. 1549 01:19:54,550 --> 01:19:55,900 So hoe doen jy dit? 1550 01:19:55,900 --> 01:19:59,930 >> Ons stel 'n nuwe taal, die sogenaamde JavaScript, wat loop in die leser 1551 01:19:59,930 --> 01:20:02,890 wat u toelaat om dinge te doen na HTML nadat jy ontvang 1552 01:20:02,890 --> 01:20:04,020 hulle van die bediener. 1553 01:20:04,020 --> 01:20:07,050 En dit is die rede waarom ons dit 'n kliënt-kant noem programmeertaal. 1554 01:20:07,050 --> 01:20:09,110 Dit werk op jou rekenaar - 1555 01:20:09,110 --> 01:20:11,400 die kliënt. 1556 01:20:11,400 --> 01:20:13,830 Enige vrae oor wat so ver? 1557 01:20:13,830 --> 01:20:15,650 Dit paradigma sin maak aan mense? 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 Alle regte. 1561 01:20:17,340 --> 01:20:20,850 Dus is die eerste ding om daarop te let is JavaScript is nie PHP. 1562 01:20:20,850 --> 01:20:23,010 >> Hulle het 'n paar verskillende sintaksis, wat ons gaan in. 1563 01:20:23,010 --> 01:20:24,530 En hulle het baie verskillende gebruike. 1564 01:20:24,530 --> 01:20:26,640 JavaScript, weer, vir jou leser, vir die kliënt. 1565 01:20:26,640 --> 01:20:30,640 Bediener loop iewers op iemand anders se rekenaar wat inligting stuur 1566 01:20:30,640 --> 01:20:31,720 vir jou, reg? 1567 01:20:31,720 --> 01:20:36,730 So as ons vra jou PHP-kode te skryf op 'n eksamenvraag, skryf nie 1568 01:20:36,730 --> 01:20:38,710 JavaScript en omgekeerd. 1569 01:20:38,710 --> 01:20:41,710 Jy sal net punte verloor nie, en dit sal nie reg wees nie. 1570 01:20:41,710 --> 01:20:43,690 >> So laat ons kry in 'n paar sintaksis verskille - 1571 01:20:43,690 --> 01:20:46,140 JavaScript aan die linkerkant en PHP op die regterkant. 1572 01:20:46,140 --> 01:20:48,670 Die eerste ding wat jy sal sien met JavaScript, ons verklaar veranderlikes met 1573 01:20:48,670 --> 01:20:49,440 die var navraag - 1574 01:20:49,440 --> 01:20:53,590 V-A-R. PHP gebruik om die dollar teken, as Zamyla vroeër bespreek. 1575 01:20:53,590 --> 01:20:57,570 As jy wil 'n assosiatiewe te verklaar skikking, sien ons die bekende sintaks op 1576 01:20:57,570 --> 01:20:59,030 die regterkant met PHP. 1577 01:20:59,030 --> 01:21:01,630 Aan die linkerkant, in plaas jy gebruik krullerige draadjies. 1578 01:21:01,630 --> 01:21:03,280 En dan is jou sleutels is aan die linkerkant. 1579 01:21:03,280 --> 01:21:04,670 Dan het jy 'n kolon. 1580 01:21:04,670 --> 01:21:06,560 En dan moet jy die waardes wat jy wil. 1581 01:21:06,560 --> 01:21:09,840 >> So dit is hoe jy dit sou doen in PHP aan die regterkant met die tweede 1582 01:21:09,840 --> 01:21:10,955 lyn wat op Milo begin. 1583 01:21:10,955 --> 01:21:14,540 En dit is hoe jy dit sou doen op die linkerkant in JavaScript as jy wil 1584 01:21:14,540 --> 01:21:16,110 wat ons noem 'n voorwerp. 1585 01:21:16,110 --> 01:21:19,340 En die voorwerpe in JavaScript is net assosiatiewe skikkings. 1586 01:21:19,340 --> 01:21:23,710 So as jy wil om toegang te verkry velde, in PHP jy hierdie bracket sintaksis. 1587 01:21:23,710 --> 01:21:27,170 En op hierdie manier, kan jy toewys hierdie eienaar veld Lauren. 1588 01:21:27,170 --> 01:21:30,150 >> Wel, in JavaScript, as 'n mens wil toegang tot 'n stuk grond en dit verander, kan jy 1589 01:21:30,150 --> 01:21:31,370 gebruik die dot sintaksis. 1590 01:21:31,370 --> 01:21:33,860 Jy kan ook gebruik om die bracket sintaksis. 1591 01:21:33,860 --> 01:21:35,550 Maar jy kan nie die dot sintaksis in PHP. 1592 01:21:35,550 --> 01:21:36,525 Dit sal nie werk nie. 1593 01:21:36,525 --> 01:21:38,910 Dit werk net in PHP. 1594 01:21:38,910 --> 01:21:42,060 En uiteindelik, om dinge te druk om die troos, jy console.log, gebruik wat 1595 01:21:42,060 --> 01:21:43,720 julle ouens gebruik om 'n lot in pset8. 1596 01:21:43,720 --> 01:21:45,260 Jy kan console.log dat. 1597 01:21:45,260 --> 01:21:50,030 >> As jy wil 'n skikking te druk in PHP, jy druk r te gebruik. 1598 01:21:50,030 --> 01:21:53,240 En op die regterkant, jy sien ek hash string aaneenskakellling daar. 1599 01:21:53,240 --> 01:21:54,070 Iemand het gevra vroeër. 1600 01:21:54,070 --> 01:21:55,850 Ek gebruik 'n plus in JavaScript. 1601 01:21:55,850 --> 01:21:59,800 As ek iets wil koppel in PHP, ek gebruik die dot. 1602 01:21:59,800 --> 01:22:00,800 Dit is anders. 1603 01:22:00,800 --> 01:22:03,420 As jy PHP-kode te skryf, gebruik nie 'n plus. 1604 01:22:03,420 --> 01:22:06,810 As jy wil skryf JavaScript kode, nie 'n dot skryf nie. 1605 01:22:06,810 --> 01:22:08,230 Dit sal verkeerd wees. 1606 01:22:08,230 --> 01:22:09,640 En jy sal hartseer wees. 1607 01:22:09,640 --> 01:22:11,000 >> So sintaksis verskille. 1608 01:22:11,000 --> 01:22:14,710 Ken jou sintaksis, want as jy het om te skryf 'n vraag en jy sintaksis gebruik 1609 01:22:14,710 --> 01:22:16,890 van die verkeerde taal, sal dit nie werk nie. 1610 01:22:16,890 --> 01:22:19,520 En dit sal verkeerd wees. 1611 01:22:19,520 --> 01:22:22,420 So laat ons praat oor 'n paar beheer vloei verskille, hoe jy gebruik 1612 01:22:22,420 --> 01:22:24,040 loops in elkeen van hulle. 1613 01:22:24,040 --> 01:22:26,610 Zamyla het oor die regterkant. 1614 01:22:26,610 --> 01:22:27,780 Dinge aan die regterkant moet vertroud wees. 1615 01:22:27,780 --> 01:22:29,670 Kom ons kyk na die linkerkant. 1616 01:22:29,670 --> 01:22:34,830 >> Wanneer jy vir n lus in JavaScript gebruik, jou lus veranderlike, var i daar, 1617 01:22:34,830 --> 01:22:37,210 lus oor die sleutels van die skikking. 1618 01:22:37,210 --> 01:22:39,150 So sien jy die naam, huis, en die rol. 1619 01:22:39,150 --> 01:22:42,440 As ek console.log i, ek kry naam, huis, en die rol. 1620 01:22:42,440 --> 01:22:44,720 Dit is die sleutels. 1621 01:22:44,720 --> 01:22:50,080 In JavaScript, 'n foreach lus gaan oor die waardes van hierdie reeks. 1622 01:22:50,080 --> 01:22:52,040 So jy sien hulle is albei i. 1623 01:22:52,040 --> 01:22:56,000 Maar hier op die PHP kant, is dit druk uit Milo, CS50, en Mascot. 1624 01:22:56,000 --> 01:22:57,390 Dit is die waardes in PHP. 1625 01:22:57,390 --> 01:23:00,180 >> So dit is hoe hierdie twee verskillende in die verskillende tale. 1626 01:23:00,180 --> 01:23:02,970 So as jy 'n foreach lus, aanvaar nie dat dit 1627 01:23:02,970 --> 01:23:03,760 gee jou die sleutels. 1628 01:23:03,760 --> 01:23:08,010 En as jy met behulp van 'n vir n lus, doen nie neem dit gee jou die waardes. 1629 01:23:08,010 --> 01:23:10,420 Is dit sin maak so ver? 1630 01:23:10,420 --> 01:23:13,630 Die volgende skyfie gaan om jou te wys hoe kan jy die teenoorgestelde toegang in 1631 01:23:13,630 --> 01:23:15,160 elkeen van hulle. 1632 01:23:15,160 --> 01:23:18,550 >> Wel, as jy die sleutel in JavaScript en jy wil hê dat die waarde nie, 1633 01:23:18,550 --> 01:23:20,440 jy net indeks in die skikking met dit. 1634 01:23:20,440 --> 01:23:23,640 So Milo van ek sal kry wat jy wil - die waardes. 1635 01:23:23,640 --> 01:23:25,260 Daar is hierdie verskillende sintaksis in PHP. 1636 01:23:25,260 --> 01:23:28,140 As jy regtig wil om dit te weet, ek doen nie dink ons ​​het het dit aan julle nie. 1637 01:23:28,140 --> 01:23:31,740 Maar as jy belangstel, kan jy gebruik Hierdie addisionele sintaksis op die regte 1638 01:23:31,740 --> 01:23:35,130 kant wat eintlik sal laat jy die sleutels in PHP wanneer jy met 'n 1639 01:23:35,130 --> 01:23:35,880 foreach lus. 1640 01:23:35,880 --> 01:23:39,640 Dus net 'n bietjie van trivia as jy belangstel. 1641 01:23:39,640 --> 01:23:42,630 >> So dit is net om te demonstreer verskille tussen hierdie twee sirkelroetes. 1642 01:23:42,630 --> 01:23:47,060 Moenie meng dit wanneer jy programmering van 'n vraag. 1643 01:23:47,060 --> 01:23:49,774 Enige vrae oor dat. 1644 01:23:49,774 --> 01:23:50,770 Cool. 1645 01:23:50,770 --> 01:23:51,310 Alle regte. 1646 01:23:51,310 --> 01:23:52,250 JavaScript voorwerpe. 1647 01:23:52,250 --> 01:23:53,040 Ek het gepraat oor hulle. 1648 01:23:53,040 --> 01:23:54,650 Hulle is soos assosiatiewe skikkings. 1649 01:23:54,650 --> 01:23:57,730 Die een ding wat ek wil u om daarop te let hier is dat 'n waarde in 'n assosiatiewe 1650 01:23:57,730 --> 01:23:59,540 skikking kan enigiets in JavaScript wees. 1651 01:23:59,540 --> 01:24:02,240 >> Daar kan selfs 'n funksie, soos daar. 1652 01:24:02,240 --> 01:24:04,600 Ek het 'n funksie wat is 'n waarde van 'n sleutel. 1653 01:24:04,600 --> 01:24:07,030 En as ek wil hê dat die funksie te roep, Ek het net toegang bas. 1654 01:24:07,030 --> 01:24:08,490 En dan het ek die hakies daarna. 1655 01:24:08,490 --> 01:24:09,790 En dit werk. 1656 01:24:09,790 --> 01:24:15,570 So enige vrae? 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, soos PHP, losweg getik. 1661 01:24:20,130 --> 01:24:20,970 Wat beteken dit? 1662 01:24:20,970 --> 01:24:22,380 >> Dit het wel tipes. 1663 01:24:22,380 --> 01:24:24,800 Maar wanneer jy 'n JavaScript verklaar veranderlike, sê jy var i. 1664 01:24:24,800 --> 01:24:25,850 Jy hoef nie te sê dit. 1665 01:24:25,850 --> 01:24:26,460 Dit is nie 'n ding. 1666 01:24:26,460 --> 01:24:28,000 Jy moet net sê dit is 'n veranderlike. 1667 01:24:28,000 --> 01:24:31,590 En dan JavaScript sal hanteer tipes onder die enjinkap vir jou. 1668 01:24:31,590 --> 01:24:34,390 Ons kan vrylik skakel tussen tipes as gevolg van hierdie. 1669 01:24:34,390 --> 01:24:37,360 So ek begin as 'n aantal in hierdie geval. 1670 01:24:37,360 --> 01:24:38,790 En dan het ek 'n string. 1671 01:24:38,790 --> 01:24:39,710 En ek voeg ek dit. 1672 01:24:39,710 --> 01:24:41,810 En ek toewys dit terug in i. 1673 01:24:41,810 --> 01:24:43,640 >> So op die eerste reël, Ek is die getal. 1674 01:24:43,640 --> 01:24:47,310 Op die tweede lyn, ek word nou 'n string na wat ek doen die bestemming. 1675 01:24:47,310 --> 01:24:52,820 En hier, is ek net concatenating dat die getal op die tou. 1676 01:24:52,820 --> 01:24:56,210 So jy sien dat selfs al was ek 'n heelgetal in die eerste deel, is dit 'n soort 1677 01:24:56,210 --> 01:24:58,500 van soos tans omskep in 'n string en dan word bygevoeg 1678 01:24:58,500 --> 01:25:00,510 op dat hallo string. 1679 01:25:00,510 --> 01:25:02,340 En dit is wat ek bedoel deur die los tik. 1680 01:25:02,340 --> 01:25:04,760 Dit is wat jy sit tussen tipes baie maklik. 1681 01:25:04,760 --> 01:25:08,840 En dit is nie waarskuwings gooi na wat jy wil C doen. 1682 01:25:08,840 --> 01:25:12,420 >> So ek nou bevat hallo 123 aan die tou. 1683 01:25:12,420 --> 01:25:13,270 Volgende. 1684 01:25:13,270 --> 01:25:15,610 Ons kan ook vrylik te vergelyk tussen tipes. 1685 01:25:15,610 --> 01:25:19,310 So as jy net gebruik ==, baie soos in PHP, JavaScript 1686 01:25:19,310 --> 01:25:20,480 doen 'n soortgelyke ding. 1687 01:25:20,480 --> 01:25:24,780 Die string 123 is dieselfde as die aantal 123 wanneer jy dubbel gelykes gebruik. 1688 01:25:24,780 --> 01:25:27,820 Wanneer dit gebruik word trippel gelykes, is dit ook wil om seker te maak dat 1689 01:25:27,820 --> 01:25:29,240 die tipe is dieselfde. 1690 01:25:29,240 --> 01:25:31,960 So, want dit is 'n string en dit is 'n nommer, selfs al is hulle albei 1691 01:25:31,960 --> 01:25:35,280 123, as jy gebruik driedubbele gelyk, jy vals. 1692 01:25:35,280 --> 01:25:39,330 In die dubbele gelyk geval, jy ware, omdat dubbel gelykes nie 1693 01:25:39,330 --> 01:25:40,020 omgee tipe. 1694 01:25:40,020 --> 01:25:42,500 Drie gelykes nie omgee tipe. 1695 01:25:42,500 --> 01:25:43,750 Vrae? 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 'n ander ding oor JavaScript is omvang is soort van globale tensy jy 1699 01:25:52,870 --> 01:25:53,460 in 'n funksie. 1700 01:25:53,460 --> 01:25:55,660 En dit werk op dieselfde manier in PHP eintlik. 1701 01:25:55,660 --> 01:25:57,500 So laat ons gaan deur hierdie voorbeeld. 1702 01:25:57,500 --> 01:25:59,110 Ek het i 999. 1703 01:25:59,110 --> 01:26:00,900 En dan gaan ek in hierdie lus. 1704 01:26:00,900 --> 01:26:06,110 So as ek druk ek in hierdie vir lus, ek verwag 0, 1, 2, 3, 4. 1705 01:26:06,110 --> 01:26:07,390 Ek kry om i = 4. 1706 01:26:07,390 --> 01:26:10,770 Dit inkremente Ek het nou tot 5 op die einde van die lus. 1707 01:26:10,770 --> 01:26:13,300 En dan is dit breek uit van die lus, omdat dit nie voldoen aan die 1708 01:26:13,300 --> 01:26:14,550 kondisioneer nie. 1709 01:26:14,550 --> 01:26:16,650 >> Wat dink jy dat die volgende console.log druk uit? 1710 01:26:16,650 --> 01:26:20,570 1711 01:26:20,570 --> 01:26:24,790 So dit is wat dit sou doen in C. In C, want as jy soos var i buite 1712 01:26:24,790 --> 01:26:28,855 en jy het var i binne 'n lus, soos 'n lus, dan is dit maak dit so dat 1713 01:26:28,855 --> 01:26:30,690 dit is scoped dat die twee Ek se verskil. 1714 01:26:30,690 --> 01:26:34,630 In JavaScript, dit sal net hanteer dit as dieselfde i. 1715 01:26:34,630 --> 01:26:37,870 Ek kry 5, want dit was die waarde nadat dit opgewonde uit van die lus. 1716 01:26:37,870 --> 01:26:39,120 So wat ek se is dieselfde i. 1717 01:26:39,120 --> 01:26:42,620 1718 01:26:42,620 --> 01:26:44,130 Is wat sin maak? 1719 01:26:44,130 --> 01:26:45,720 >> Wel, maak dit sin uit 'n JavaScript standpunt. 1720 01:26:45,720 --> 01:26:49,510 Maar dieselfde paradigma nie oor te dra aan C. Hulle het 1721 01:26:49,510 --> 01:26:50,310 verskillende bestekopname reëls. 1722 01:26:50,310 --> 01:26:50,630 Ja. 1723 01:26:50,630 --> 01:26:52,566 >> Publiek: [onhoorbaar] 1724 01:26:52,566 --> 01:26:54,990 buite die funksie [onhoorbaar]? 1725 01:26:54,990 --> 01:26:58,340 >> JOSEPH ONG: So buite wat funksie? 1726 01:26:58,340 --> 01:27:00,810 So ek kry dat net 'n sekonde. 1727 01:27:00,810 --> 01:27:02,580 So noem ons cat (i). 1728 01:27:02,580 --> 01:27:06,920 Dit gaan ek in cat, inkremente dit, en dan inteken nie. 1729 01:27:06,920 --> 01:27:07,750 So was dit 5. 1730 01:27:07,750 --> 01:27:09,210 So is dit 6. 1731 01:27:09,210 --> 01:27:11,670 Maar wat ek praat is dat ek in daardie funksie. 1732 01:27:11,670 --> 01:27:14,430 Want dit is 'n parameter, dit is scoped aan dié funksie. 1733 01:27:14,430 --> 01:27:17,800 So wanneer ek eintlik kry uit daardie funksie, dit is nou gaan om te gaan 1734 01:27:17,800 --> 01:27:19,860 Terug na die ou ek. 1735 01:27:19,860 --> 01:27:23,000 Dat ek net scoped omdat dit is in 'n funksie. 1736 01:27:23,000 --> 01:27:24,200 En ons het die omvang en funksies. 1737 01:27:24,200 --> 01:27:29,080 Maar ons het nie die omvang buite van funksies in JavaScript. 1738 01:27:29,080 --> 01:27:31,170 Is wat sin maak? 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: Dieselfde [onhoorbaar]? 1742 01:27:34,030 --> 01:27:34,500 >> JOSEPH ONG: So ja. 1743 01:27:34,500 --> 01:27:36,260 In PHP, dit is dieselfde tipe ding. 1744 01:27:36,260 --> 01:27:37,680 Daar is 'n effense subtiel eintlik. 1745 01:27:37,680 --> 01:27:40,130 Maar jy kan my vra oor dat na die hersiening. 1746 01:27:40,130 --> 01:27:43,930 Jy nie regtig nodig het om te weet wat subtiel vir die toets. 1747 01:27:43,930 --> 01:27:47,600 Vir alle praktiese doeleindes, soos veranderlikes, globale en PHP, tensy 1748 01:27:47,600 --> 01:27:49,150 hulle is in 'n funksie, dieselfde ding in JavaScript. 1749 01:27:49,150 --> 01:27:49,480 Ja. 1750 01:27:49,480 --> 01:27:52,890 >> Publiek: Hoekom is dit toegelaat in JavaScript en nêrens anders? 1751 01:27:52,890 --> 01:27:55,010 >> JOSEPH ONG: So hoekom is dit toegelaat in JavaScript en nie in C? 1752 01:27:55,010 --> 01:27:58,180 Dit is net wie het met JavaScript besluit dat dit OK in 1753 01:27:58,180 --> 01:27:59,510 JavaScript. 1754 01:27:59,510 --> 01:28:02,430 So dit is net soos 'n programmeertaal konvensie soos ons sou sê. 1755 01:28:02,430 --> 01:28:02,580 Ja. 1756 01:28:02,580 --> 01:28:04,480 >> Publiek: So hoekom het dit gaan 6-5? 1757 01:28:04,480 --> 01:28:08,280 >> JOSEPH ONG: So dit het 6-5, want as ek geslaag het Ek in cat, wat 1758 01:28:08,280 --> 01:28:13,420 Ek binnekant van cat nou scoped te cat, omdat omvang bestaan ​​in funksies in 1759 01:28:13,420 --> 01:28:15,050 JavaScript. 1760 01:28:15,050 --> 01:28:18,720 Maar wanneer ek hier uit, want dit is scoped aan die funksie, is ek net 1761 01:28:18,720 --> 01:28:24,300 gebruik van die gereelde i wat binne die res van die beheer vloei. 1762 01:28:24,300 --> 01:28:25,210 Sin maak? 1763 01:28:25,210 --> 01:28:26,910 Kan ek op? 1764 01:28:26,910 --> 01:28:27,320 Alle regte. 1765 01:28:27,320 --> 01:28:29,180 Cool. 1766 01:28:29,180 --> 01:28:31,890 >> Die aanvaarding van hierdie voorwerpe geslaag deur verwysing. 1767 01:28:31,890 --> 01:28:33,990 Jy weet hoe wanneer jy 'n skikking in C wat jy kan 1768 01:28:33,990 --> 01:28:35,810 eintlik die skikking te verander? 1769 01:28:35,810 --> 01:28:37,350 Dit is dieselfde ding in JavaScript. 1770 01:28:37,350 --> 01:28:42,960 As ek slaag 'n voorwerp, in hierdie geval, ek geslaag Milo in hierdie catify funksie. 1771 01:28:42,960 --> 01:28:44,490 Milo begin het. 1772 01:28:44,490 --> 01:28:46,310 Sy naam is Milo piesang. 1773 01:28:46,310 --> 01:28:51,670 Ek slaag die voorwerp in 'n funksie want dit is 'n voorwerp, 'n assosiatiewe 1774 01:28:51,670 --> 01:28:53,730 skikking in JavaScript. 1775 01:28:53,730 --> 01:28:57,110 >> Toe ek voer 'n operasie in daardie funksie, sal dit 1776 01:28:57,110 --> 01:28:58,560 eintlik die voorwerp verander. 1777 01:28:58,560 --> 01:29:01,720 So dit sal slegs gebeur vir voorwerpe in JavaScript, wil net dit gebeur 1778 01:29:01,720 --> 01:29:09,230 vir skikkings binnekant van C. So Milo se naam sal eintlik 'n kat nou. 1779 01:29:09,230 --> 01:29:10,090 Is wat sin maak? 1780 01:29:10,090 --> 01:29:11,840 So dit werk net vir voorwerpe. 1781 01:29:11,840 --> 01:29:13,090 Voorwerpe wat deur verwysing. 1782 01:29:13,090 --> 01:29:13,400 Ja. 1783 01:29:13,400 --> 01:29:16,850 >> Publiek: So jy sê dat in teenstelling met veranderlike i. 1784 01:29:16,850 --> 01:29:17,240 >> JOSEPH ONG: Ja. 1785 01:29:17,240 --> 01:29:20,330 Watter veranderlike ek was net 'n nommer, reg? 1786 01:29:20,330 --> 01:29:25,280 Dit is soos in C wanneer jy 'n heelgetal n, maak dit 'n kopie. 1787 01:29:25,280 --> 01:29:28,130 En wanneer jy 'n skikking slaag, is dit eintlik verander die werklike verskeidenheid in 1788 01:29:28,130 --> 01:29:32,870 C. Dieselfde gebeur met JavaScript in hierdie geval. 1789 01:29:32,870 --> 01:29:34,070 Alle regte. 1790 01:29:34,070 --> 01:29:38,134 En volgende jaar, Milo is hartseer omdat hy is nou 'n kat. 1791 01:29:38,134 --> 01:29:40,790 1792 01:29:40,790 --> 01:29:45,060 Dit was eintlik Milo na sommige reis na die veearts. 1793 01:29:45,060 --> 01:29:46,860 >> So, hoe gebruik ons ​​JavaScript in 'n web bladsy? 1794 01:29:46,860 --> 01:29:47,790 Ons kan dit sluit. 1795 01:29:47,790 --> 01:29:50,090 Dit is HTML-kode met die strook tags. 1796 01:29:50,090 --> 01:29:51,300 So ek het strook tags daar. 1797 01:29:51,300 --> 01:29:54,820 En dan het ek 'n paar JavaScript kode in die script tags. 1798 01:29:54,820 --> 01:29:56,390 En dan is dit voer dit. 1799 01:29:56,390 --> 01:29:58,830 Toe ek doen dit net soos hierdie, is dit genoem inline JavaScript. 1800 01:29:58,830 --> 01:30:02,400 Dit is soort van morsig, omdat die JavaScript is eintlik in die HTML. 1801 01:30:02,400 --> 01:30:07,010 >> 'N beter manier om dit te doen, baie lekkerder, is jou JavaScript in 'n te skryf 1802 01:30:07,010 --> 01:30:10,920 eksterne lêer en dan bied die script tag met 'n bron. 1803 01:30:10,920 --> 01:30:14,920 En dit gaan aan dat JavaScript lêer en lees die JavaScript-kode van 1804 01:30:14,920 --> 01:30:15,960 dat 'n lêer plaas. 1805 01:30:15,960 --> 01:30:18,820 En op hierdie manier, het jy nie 'n baie JavaScript aan die begin van jou 1806 01:30:18,820 --> 01:30:20,760 HTML-lêer, wat maak dit is regtig slordig. 1807 01:30:20,760 --> 01:30:21,860 Jy het dit net iewers anders. 1808 01:30:21,860 --> 01:30:24,310 En dan sal dit lees dit van daar af. 1809 01:30:24,310 --> 01:30:25,560 Het dit sin maak? 1810 01:30:25,560 --> 01:30:27,990 1811 01:30:27,990 --> 01:30:29,640 >> Plasing sake. 1812 01:30:29,640 --> 01:30:32,620 In hierdie spesifieke geval, die script is voor die liggaam. 1813 01:30:32,620 --> 01:30:36,090 So wanneer ek voer dat daar niks in die liggaam nie. 1814 01:30:36,090 --> 01:30:39,920 Miskien sal dit 'n bietjie meer te maak voel wanneer ek wys hierdie volgende deel. 1815 01:30:39,920 --> 01:30:43,210 In hierdie geval, die script kom nadat die DIV. 1816 01:30:43,210 --> 01:30:46,620 So het die div eintlik verskyn op die bladsy eerste. 1817 01:30:46,620 --> 01:30:49,470 Reg hier in hierdie klein rooi sirkel, sien jy die teks verskyn. 1818 01:30:49,470 --> 01:30:51,810 En dan is die waarskuwing vertoon. 1819 01:30:51,810 --> 01:30:54,890 >> In die eerste geval, omdat die script was voor die DIV, die 1820 01:30:54,890 --> 01:30:56,170 waarskuwing toon eerste. 1821 01:30:56,170 --> 01:30:59,250 En dan is die div toon nadat jy ignoreer die boks. 1822 01:30:59,250 --> 01:31:01,330 So die uitvoering saak maak. 1823 01:31:01,330 --> 01:31:02,290 So sal ons dit in gedagte hou. 1824 01:31:02,290 --> 01:31:03,640 Dit sal belangrik wees om in 'n bietjie. 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 So goed, hoe wag jy totdat die hele bladsy word dan gelaai, voordat jy 1828 01:31:12,750 --> 01:31:13,580 sommige kode uit te voer? 1829 01:31:13,580 --> 01:31:15,540 Ons kry in hierdie 'n bietjie bietjie later ook. 1830 01:31:15,540 --> 01:31:19,016 Maar net hierdie plasing hou sake in gedagte vir wanneer ons 1831 01:31:19,016 --> 01:31:20,570 kom na 'n ander skuif. 1832 01:31:20,570 --> 01:31:22,030 >> So kry ons DOM nou. 1833 01:31:22,030 --> 01:31:23,550 En wat is DOM? 1834 01:31:23,550 --> 01:31:26,830 So as jy kyk na HTML-kode, dit is net 'n klomp van die teks op die skerm. 1835 01:31:26,830 --> 01:31:30,560 So hoe JavaScript weet dat dit is 'n HTML element? 1836 01:31:30,560 --> 01:31:33,410 So ons het 'n paar geheue te hê voorstelling van hierdie 1837 01:31:33,410 --> 01:31:34,930 struktuur wat ons het. 1838 01:31:34,930 --> 01:31:40,240 En wanneer ons dit in die geheue verteenwoordiging in JavaScript, ons noem 1839 01:31:40,240 --> 01:31:41,750 dat die DOM. 1840 01:31:41,750 --> 01:31:45,130 En dit is net 'n manier dat mense besluit dat ons dit moet stel 1841 01:31:45,130 --> 01:31:46,400 HTML struktuur. 1842 01:31:46,400 --> 01:31:47,940 >> En wat beteken dit DOM lyk? 1843 01:31:47,940 --> 01:31:50,460 Wel, in die geheue verteenwoordiging, ons neem hierdie teks. 1844 01:31:50,460 --> 01:31:52,870 En ons draai dit in die geheue verteenwoordiging. 1845 01:31:52,870 --> 01:31:54,400 So dit is die HTML. 1846 01:31:54,400 --> 01:31:58,090 So het ons eerste vind uit dat elke DOM boom het 'n dokument. 1847 01:31:58,090 --> 01:31:59,400 Dit lyk soos 'n boom. 1848 01:31:59,400 --> 01:32:03,550 En die dokument bevat die HTML tag, eintlik alles 1849 01:32:03,550 --> 01:32:05,150 binnekant van dit nou. 1850 01:32:05,150 --> 01:32:06,970 Die HTML tag het twee kinders. 1851 01:32:06,970 --> 01:32:08,630 Dit het 'n kop. 1852 01:32:08,630 --> 01:32:12,380 Dit kop, as jy kyk na die inkeping daar by hoe dit gestruktureer 1853 01:32:12,380 --> 01:32:14,960 tussen die noue etikette, kop het 'n kind. 1854 01:32:14,960 --> 01:32:17,130 Die kind is die titel. 1855 01:32:17,130 --> 01:32:18,370 Presies. 1856 01:32:18,370 --> 01:32:21,000 >> Nou, ons het 'n liggaam kind. 1857 01:32:21,000 --> 01:32:24,870 En dan is die liggaam het 'n kind genoem familie. 1858 01:32:24,870 --> 01:32:27,950 En dat familie het drie kinders - 1859 01:32:27,950 --> 01:32:29,550 oudste, middel, en die jongste. 1860 01:32:29,550 --> 01:32:31,960 So jy moet weet hoe om 'n diagram te trek soos hierdie wanneer ons vra jou hoe 1861 01:32:31,960 --> 01:32:34,270 'n diagram te trek wanneer ons gee jy die HTML aan die linkerkant. 1862 01:32:34,270 --> 01:32:36,350 Weet hoe om die DOM boom te produseer. 1863 01:32:36,350 --> 01:32:38,930 En binnekant van hierdie dinge is, is daar net sommige teks, wat ek verteenwoordig 1864 01:32:38,930 --> 01:32:40,180 so min bokse. 1865 01:32:40,180 --> 01:32:42,750 1866 01:32:42,750 --> 01:32:47,980 >> Is dit DOM boom struktuur maak sin en wat die DOM is? 1867 01:32:47,980 --> 01:32:49,300 So wat beteken die p staan ​​vir? 1868 01:32:49,300 --> 01:32:51,850 Hier, die p daar in die kode verteenwoordig 'n 1869 01:32:51,850 --> 01:32:54,510 paragraaf tag in HTML. 1870 01:32:54,510 --> 01:32:57,080 Sodat jy kan kyk dit. 1871 01:32:57,080 --> 01:32:59,290 Maar dit beteken net dit is 'n paar ruimte vir 'n paar teks. 1872 01:32:59,290 --> 01:33:02,910 En dit het 'n standaard CSS styling, want dit is 'n lid tag. 1873 01:33:02,910 --> 01:33:05,130 Maar nie regtig nie bekommerd wees oor wat deel te veel. 1874 01:33:05,130 --> 01:33:07,510 Weet net dit is 'n plekhouer vir 'n paar teks. 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: Jy moet net genoem CSS. 1879 01:33:12,374 --> 01:33:15,492 Die hash familie en die hash alles wat goed is basies 1880 01:33:15,492 --> 01:33:17,400 verteenwoordig ID's in CSS? 1881 01:33:17,400 --> 01:33:18,440 >> JOSEPH ONG: Ja, presies. 1882 01:33:18,440 --> 01:33:20,380 Ek kry van wat hierdie twee velde beteken in 'n tweede. 1883 01:33:20,380 --> 01:33:23,480 Wanneer Angela het oor CSS, het sy gepraat oor CSS keurders. 1884 01:33:23,480 --> 01:33:26,770 Dit is die CSS keurders sy praat nie. 1885 01:33:26,770 --> 01:33:28,268 Ja, Rob? 1886 01:33:28,268 --> 01:33:32,060 >> ROB BOWDEN: Ek wil ook kommentaar dat DOM binnekant van die titel tag 1887 01:33:32,060 --> 01:33:35,385 is ook 'n teks knoop. 1888 01:33:35,385 --> 01:33:36,070 >> JOSEPH ONG: Right. 1889 01:33:36,070 --> 01:33:38,370 So in die titel tag, Ek het 'n paar teks DOM. 1890 01:33:38,370 --> 01:33:42,730 So regtig, moet hierdie titel het soos 'n kissie af van dit kom so goed. 1891 01:33:42,730 --> 01:33:45,740 Maar dit maak nie regtig saak nie te veel in hierdie geval. 1892 01:33:45,740 --> 01:33:49,620 Ons het nie regtig omgee oor die teks knope, soos ons dit noem, te veel. 1893 01:33:49,620 --> 01:33:50,270 OK, ons doen. 1894 01:33:50,270 --> 01:33:51,520 Blykbaar, ons doen. 1895 01:33:51,520 --> 01:33:54,260 1896 01:33:54,260 --> 01:33:57,100 En ek sal dit regmaak dat wanneer Ek is dit oplaai weer. 1897 01:33:57,100 --> 01:33:59,830 Is wat sin maak? 1898 01:33:59,830 --> 01:34:01,160 >> So hoe kan ons werk met die DOM? 1899 01:34:01,160 --> 01:34:03,790 Wanneer jy te doen het met die DOM in JavaScript, is daar twee stappe. 1900 01:34:03,790 --> 01:34:05,030 Jy kies 'n DOM element. 1901 01:34:05,030 --> 01:34:06,580 En dan moet jy dinge doen om dit te. 1902 01:34:06,580 --> 01:34:11,480 So in hierdie geval, abstrakte, ek het gekies om die middel element. 1903 01:34:11,480 --> 01:34:14,530 En dan 'n voorbeeld van doen dinge dit sal verander word om die teks. 1904 01:34:14,530 --> 01:34:16,020 Wat gebruik word Bob. 1905 01:34:16,020 --> 01:34:19,930 Nou, wat ek gedoen het om dit wat ek verander Bob te Milo in hierdie geval. 1906 01:34:19,930 --> 01:34:22,130 >> So hoe kan ons eintlik doen? 1907 01:34:22,130 --> 01:34:23,440 Hoe doen ons die kies? 1908 01:34:23,440 --> 01:34:26,560 En hoe doen ons die doen dinge te die ding wanneer ons het dit geneem? 1909 01:34:26,560 --> 01:34:30,470 Wel, die manier waarop jy ouens het dit geleer in hierdie klas is deur die gebruik van iets wat ons 1910 01:34:30,470 --> 01:34:32,420 genoem jQuery. 1911 01:34:32,420 --> 01:34:33,910 So, wat is jQuery? 1912 01:34:33,910 --> 01:34:37,220 jQuery is 'n biblioteek wat maak JavaScript makliker om te skryf. 1913 01:34:37,220 --> 01:34:39,500 So iemand het die tyd en geskryf jQuery. 1914 01:34:39,500 --> 01:34:41,530 >> jQuery is eintlik geskryf in JavaScript. 1915 01:34:41,530 --> 01:34:44,550 En dan, omdat hulle gedoen het, het ons nou het 'n hele klomp van die funksies wat 1916 01:34:44,550 --> 01:34:46,020 ons kan gebruik wat maak dat ons woon baie maklik. 1917 01:34:46,020 --> 01:34:48,580 1918 01:34:48,580 --> 01:34:50,030 So, wat is 'n paar van die dinge wat dit doen? 1919 01:34:50,030 --> 01:34:51,650 Dit maak die keuse van elemente makliker. 1920 01:34:51,650 --> 01:34:54,020 Dit maak dit verander HTML, toevoeging van klasse makliker. 1921 01:34:54,020 --> 01:34:55,360 Dit maak Ajax makliker. 1922 01:34:55,360 --> 01:34:58,230 Ons kry met wat in 'n tweede. 1923 01:34:58,230 --> 01:35:00,630 >> En dit is analoog aan C biblioteke. 1924 01:35:00,630 --> 01:35:03,090 So jy sluit string.h, jy strlen raak. 1925 01:35:03,090 --> 01:35:04,680 Jy kry strcpy, al hierdie dinge. 1926 01:35:04,680 --> 01:35:09,650 Wanneer jy sluit jQuery, jy mooi maniere elemente verandering te kies 1927 01:35:09,650 --> 01:35:10,390 dinge, ensovoorts. 1928 01:35:10,390 --> 01:35:12,990 Jy kry ekstra funksies wat JavaScript gee jou nie. 1929 01:35:12,990 --> 01:35:15,310 So jQuery is nie JavaScript. 1930 01:35:15,310 --> 01:35:18,660 jQuery is 'n biblioteek wat in geskryf is JavaScript dat JavaScript 1931 01:35:18,660 --> 01:35:20,440 makliker om te skryf. 1932 01:35:20,440 --> 01:35:23,170 >> So jQuery is nie 'n ontwikkeling 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 maak. 1936 01:35:27,590 --> 01:35:30,420 Seker dat jy jou terminologie reg. 1937 01:35:30,420 --> 01:35:32,490 Enige vrae? 1938 01:35:32,490 --> 01:35:33,882 Ja. 1939 01:35:33,882 --> 01:35:35,132 Is dit 'n vraag? 1940 01:35:35,132 --> 01:35:37,910 1941 01:35:37,910 --> 01:35:38,350 Alle regte. 1942 01:35:38,350 --> 01:35:40,080 So hoe kan jy jQuery gebruik? 1943 01:35:40,080 --> 01:35:42,390 Wel, as jy 'n paar skryf JavaScript-kode en jy sluit in 'n 1944 01:35:42,390 --> 01:35:45,570 jQuery aan die bokant van jou lêer as 'n script lêer, jy gebruik die dollar-teken 1945 01:35:45,570 --> 01:35:47,310 nou toegang tot jQuery te kry. 1946 01:35:47,310 --> 01:35:49,860 En dit is anders die dollar teken in PHP. 1947 01:35:49,860 --> 01:35:51,590 >> Dit is dieselfde simbool wat jy tik op die sleutelbord. 1948 01:35:51,590 --> 01:35:52,780 Maar dit beteken baie verskillende dinge. 1949 01:35:52,780 --> 01:35:56,090 Dollar-teken in PHP beteken hierdie is hoe ek verklaar 'n veranderlike. 1950 01:35:56,090 --> 01:35:59,120 In JavaScript, wanneer jy ingesluit jQuery, dit staan ​​vir jQuery. 1951 01:35:59,120 --> 01:36:01,280 So hou dit in gedagte. 1952 01:36:01,280 --> 01:36:03,420 So, hoe kan ons kies DOM elemente? 1953 01:36:03,420 --> 01:36:06,500 Wel, as jy dit doen die lelike JavaScript Terloops, jy toegang tot die 1954 01:36:06,500 --> 01:36:08,240 dokumenteer globale veranderlike. 1955 01:36:08,240 --> 01:36:11,170 En dan kry jy element deur ID-familie. 1956 01:36:11,170 --> 01:36:15,270 Dit is regtig lank en langdradig en nie baie mooi. 1957 01:36:15,270 --> 01:36:18,190 >> Of jy kan al die elemente kry wat 'n p-etiket. 1958 01:36:18,190 --> 01:36:20,080 Dit werk ook in JavaScript. 1959 01:36:20,080 --> 01:36:22,470 Maar ons het nooit regtig gewys jy die sintaksis te veel. 1960 01:36:22,470 --> 01:36:24,620 Wat ons gewys het was jQuery. 1961 01:36:24,620 --> 01:36:28,720 Sodat die hele selector daar wat is uitgespreek in JavaScript net kry 1962 01:36:28,720 --> 01:36:33,320 verkorte hierdie baie mooi dollar teken hashtag familie. 1963 01:36:33,320 --> 01:36:38,480 En $ p, net waar dit is soos dit. 1964 01:36:38,480 --> 01:36:41,690 As jy wil hê dat alle p tags te kies binne 'n gesin, het ons 'n ruimte 1965 01:36:41,690 --> 01:36:42,890 tussen die twee. 1966 01:36:42,890 --> 01:36:44,815 En nou, kry ons al die p tags binne 'n familie. 1967 01:36:44,815 --> 01:36:48,740 1968 01:36:48,740 --> 01:36:50,380 >> En kyk dit bekend? 1969 01:36:50,380 --> 01:36:52,880 Wel, Angela gepraat oor CSS keurders. 1970 01:36:52,880 --> 01:36:54,200 Gee my 'n sekonde. 1971 01:36:54,200 --> 01:36:57,230 En so ten einde 'n element te kies, jy net gebruik dieselfde ding as jy 1972 01:36:57,230 --> 01:36:58,530 sou doen met 'n CSS selector. 1973 01:36:58,530 --> 01:37:00,910 As jy 'n gemors in die voorkant dit, dit kies deur ID. 1974 01:37:00,910 --> 01:37:02,220 'N kol kies deur klasse. 1975 01:37:02,220 --> 01:37:06,230 As jy net die ding sonder allegaartjies of kolle, is dit kies diegene tags. 1976 01:37:06,230 --> 01:37:07,140 Vrae. 1977 01:37:07,140 --> 01:37:07,470 Ja? 1978 01:37:07,470 --> 01:37:11,510 >> Publiek: Wanneer ons dot in ons HTML, is dat nie jQuery? 1979 01:37:11,510 --> 01:37:13,520 >> JOSEPH ONG: Dot in ons HTML is 'n JavaScript ding. 1980 01:37:13,520 --> 01:37:14,750 Dit is nie 'n jQuery ding. 1981 01:37:14,750 --> 01:37:17,620 Die manier waarop jy ouens geleer om dit met jQuery is html. te gebruik. 1982 01:37:17,620 --> 01:37:21,510 En dan moet jy verby dit alles die HTML gaan wees. 1983 01:37:21,510 --> 01:37:23,480 So ek kry dat net 'n tweede eintlik. 1984 01:37:23,480 --> 01:37:27,800 So hoe doen ons dinge te element Sodra ons het dit gekies? 1985 01:37:27,800 --> 01:37:30,130 So dit is 'n voorbeeld van kies van 'n element. 1986 01:37:30,130 --> 01:37:32,280 So nou, ons wil dinge om te doen om dit te. 1987 01:37:32,280 --> 01:37:35,730 >> So in hierdie geval, laat my terug te gaan na die vorige skyfie. 1988 01:37:35,730 --> 01:37:37,360 Dit was Bob voor. 1989 01:37:37,360 --> 01:37:40,660 En ek wil om dit te verander binne HTML te Milo. 1990 01:37:40,660 --> 01:37:43,240 So bel ek die HTML-funksie van die element. 1991 01:37:43,240 --> 01:37:45,580 Dit HTML funksie is 'n metode van element. 1992 01:37:45,580 --> 01:37:47,430 En dan gee ek dit wat Ek wil die HTML te wees. 1993 01:37:47,430 --> 01:37:50,560 En dit is net vervang wat binne in daardie merker met alles wat ek gee dit. 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: Die hashtag gebruik slegs vir die jQuery. 1997 01:37:57,397 --> 01:37:59,313 [Onhoorbaar] 1998 01:37:59,313 --> 01:38:01,230 sou ons dit nie gebruik nie. 1999 01:38:01,230 --> 01:38:01,960 >> JOSEPH ONG: Ja, presies. 2000 01:38:01,960 --> 01:38:03,750 Maar nie te veel bekommerd wees nie oor suiwer JavaScript. 2001 01:38:03,750 --> 01:38:06,670 Ek wil net julle ouens om te fokus op hoe jy sou dit doen met jQuery, want 2002 01:38:06,670 --> 01:38:10,020 wat gaan die belangrik om te wees deel van die toets. 2003 01:38:10,020 --> 01:38:10,400 Right. 2004 01:38:10,400 --> 01:38:10,880 Presies. 2005 01:38:10,880 --> 01:38:16,025 So sien julle dat hashtag, sodat ooreenstem die element te kies met 2006 01:38:16,025 --> 01:38:18,310 die ID middel as gevolg van daardie hashtag. 2007 01:38:18,310 --> 01:38:19,670 Hashtag beteken ID. 2008 01:38:19,670 --> 01:38:22,870 En hierdie element het 'n ID van die middel. 2009 01:38:22,870 --> 01:38:24,366 So wat is die element wat ons kies. 2010 01:38:24,366 --> 01:38:27,160 >> Publiek: [onhoorbaar]. 2011 01:38:27,160 --> 01:38:31,090 dollar-teken hashtag [onhoorbaar]? 2012 01:38:31,090 --> 01:38:31,710 >> JOSEPH ONG: So nie. 2013 01:38:31,710 --> 01:38:33,280 Die vraag is, kan jy gebruik. Waarde. 2014 01:38:33,280 --> 01:38:36,445 En. Waarde werk net op elemente wat insette. 2015 01:38:36,445 --> 01:38:40,950 2016 01:38:40,950 --> 01:38:45,495 In jQuery, sou dit wees . Val, nie. Waarde. 2017 01:38:45,495 --> 01:38:49,080 So ek sal kry om 'n klein voorbeeld wat toon al hierdie in kombinasie 2018 01:38:49,080 --> 01:38:49,850 in 'n tweede. 2019 01:38:49,850 --> 01:38:53,130 Maar ek dink dit dien 'n bietjie brokkie sin maak om mense so ver. 2020 01:38:53,130 --> 01:38:55,450 Wil jy die HTML te verander, noem die HTML metode. 2021 01:38:55,450 --> 01:38:56,432 Ja. 2022 01:38:56,432 --> 01:38:58,200 >> Publiek: Kan jy verduidelik weer die metode? 2023 01:38:58,200 --> 01:39:01,900 >> JOSEPH ONG: So 'n metode is net 'n funksie wat behoort aan een, in hierdie 2024 01:39:01,900 --> 01:39:04,590 geval, een van die DOM elemente, want jy sien ek 2025 01:39:04,590 --> 01:39:05,940 die element gekies eerste. 2026 01:39:05,940 --> 01:39:07,320 Eintlik laat my gebruik van die muis. 2027 01:39:07,320 --> 01:39:09,330 Ek die eerste element gekies. 2028 01:39:09,330 --> 01:39:12,310 En dan het ek het hierdie HTML funksioneer wat dit gehad het. 2029 01:39:12,310 --> 01:39:15,710 En omdat hierdie funksie behoort te hierdie ding, ons noem dit 'n metode. 2030 01:39:15,710 --> 01:39:19,480 Dit is net 'n fancy naam vir dit. 2031 01:39:19,480 --> 01:39:20,730 Sê dit weer. 2032 01:39:20,730 --> 01:39:22,880 2033 01:39:22,880 --> 01:39:25,170 So onthou, het ons gekies die element nou. 2034 01:39:25,170 --> 01:39:27,810 En ons het dit binne-in die element veranderlike. 2035 01:39:27,810 --> 01:39:28,600 Korrek? 2036 01:39:28,600 --> 01:39:34,380 >> So wanneer ons wil die HTML te verander op binne, want dit was Bob voordat jy 2037 01:39:34,380 --> 01:39:36,420 wil hê dat die teks te verander na Milo. 2038 01:39:36,420 --> 01:39:37,920 So HTML noem ons. 2039 01:39:37,920 --> 01:39:41,610 En ons sê dit wat die HTML binnekant daardie element moet nou. 2040 01:39:41,610 --> 01:39:44,107 En so het dit verander om dit te Milo, want ek het dit Milo. 2041 01:39:44,107 --> 01:39:46,542 >> Publiek: So hulle saam te werk. 2042 01:39:46,542 --> 01:39:47,030 [Onhoorbaar] 2043 01:39:47,030 --> 01:39:47,390 >> JOSEPH ONG: Ja, ja. 2044 01:39:47,390 --> 01:39:48,180 Hulle is saam te werk. 2045 01:39:48,180 --> 01:39:50,210 So een van hulle kies die element eerste. 2046 01:39:50,210 --> 01:39:52,863 En die tweede een nie iets om dit te. 2047 01:39:52,863 --> 01:39:53,790 Ja. 2048 01:39:53,790 --> 01:39:56,168 >> Publiek: [onhoorbaar]. 2049 01:39:56,168 --> 01:40:01,280 Indien hierdie metode is anders as in HTML jy het die metode gelyk werklike. 2050 01:40:01,280 --> 01:40:01,560 >> JOSEPH ONG: Ja. 2051 01:40:01,560 --> 01:40:03,370 Dit is 'n ander metode. 2052 01:40:03,370 --> 01:40:04,670 Dit is 'n ander metode. 2053 01:40:04,670 --> 01:40:07,860 En ons kan dek wat in net 'n tweede wanneer ons 'n voorbeeld. 2054 01:40:07,860 --> 01:40:12,000 Ek wil om seker te maak dat ons bespoedig want ons is besig om van die tyd. 2055 01:40:12,000 --> 01:40:15,360 Maar ons het weg te hardloop met verloop van tyd nou. 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 So as jy wil 'n klas by te voeg, is daar ook 'n byvoeging klas metode. 2059 01:40:20,130 --> 01:40:24,300 Dit is net 'n voorbeeld van wat wat jy kan doen met jQuery. 2060 01:40:24,300 --> 01:40:25,950 Dit voeg net 'n klas. 2061 01:40:25,950 --> 01:40:28,660 >> As jy wil dit te verwyder, kan jy dit verwyder noem. 2062 01:40:28,660 --> 01:40:32,280 Dit is net nog 'n ding wat jy kan doen. 2063 01:40:32,280 --> 01:40:35,680 So meer voorbeelde van dinge wat jy kan doen. 2064 01:40:35,680 --> 01:40:37,510 So kan ek net sit dit op die top soos hierdie? 2065 01:40:37,510 --> 01:40:38,760 Jongste verwyder. 2066 01:40:38,760 --> 01:40:42,470 2067 01:40:42,470 --> 01:40:45,930 As ek maar net uit te voer dat JavaScript op die top van my lêer, sal dit werk? 2068 01:40:45,930 --> 01:40:48,540 2069 01:40:48,540 --> 01:40:48,920 Right. 2070 01:40:48,920 --> 01:40:50,530 Omdat middel nog nie bestaan ​​nie. 2071 01:40:50,530 --> 01:40:51,840 So dit is nie van plan om te werk. 2072 01:40:51,840 --> 01:40:52,800 Uitvoering orde. 2073 01:40:52,800 --> 01:40:55,040 Dit gaan na die top eerste. 2074 01:40:55,040 --> 01:40:55,540 Wat? 2075 01:40:55,540 --> 01:40:57,450 >> Publiek: Jongste nog nie bestaan ​​nie? 2076 01:40:57,450 --> 01:40:57,810 >> JOSEPH ONG: Ja. 2077 01:40:57,810 --> 01:40:58,710 Jongste nog nie bestaan ​​nie. 2078 01:40:58,710 --> 01:40:59,600 Presies. 2079 01:40:59,600 --> 01:41:01,320 >> Publiek: Jy het gesê middel. 2080 01:41:01,320 --> 01:41:01,510 >> JOSEPH ONG: Jammer. 2081 01:41:01,510 --> 01:41:02,720 Jongste nog nie bestaan ​​nie. 2082 01:41:02,720 --> 01:41:04,510 En die ander ding is ek het nie ingesluit die jQuery 2083 01:41:04,510 --> 01:41:06,580 lêer vra script src. 2084 01:41:06,580 --> 01:41:07,960 So dit is nie van plan om te werk. 2085 01:41:07,960 --> 01:41:09,580 Eintlik het ek dit nie doen nie in die volgende skuif, wat 2086 01:41:09,580 --> 01:41:10,700 veronderstel om dit te los nie. 2087 01:41:10,700 --> 01:41:14,120 Maar die manier waarop ons dit doen, is JavaScript is gebeurtenis gedrewe. 2088 01:41:14,120 --> 01:41:17,410 So wat ons doen is ons gebruik 'n gebeurtenis hanteerder te maak dit gebeur. 2089 01:41:17,410 --> 01:41:19,510 En so het ek kies om die dokument stel eerste. 2090 01:41:19,510 --> 01:41:23,810 Ek sê OK, wanneer die dokument is gereed, ek hardloop 'n funksie. 2091 01:41:23,810 --> 01:41:25,470 So dit is al wat sintaksis beteken. 2092 01:41:25,470 --> 01:41:27,100 >> Ek die dokument gekies. 2093 01:41:27,100 --> 01:41:29,530 Nou, wanneer die dokument is gereed is, loop die funksie. 2094 01:41:29,530 --> 01:41:32,970 En so hier wanneer die dokument is gereed is, wat beteken dat al die HTML het 2095 01:41:32,970 --> 01:41:36,140 gelaai, dan loop ek die funksie wat verwyder daardie element. 2096 01:41:36,140 --> 01:41:40,270 En so nou, toe ek loop hierdie funksie dat ek geslaag het in gereed, ek is 2097 01:41:40,270 --> 01:41:43,780 gewaarborg dat al die HTML op die bladsy gaan eerste bestaan ​​nie. 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 die geval navraag binne die funksie? 2101 01:41:48,200 --> 01:41:51,750 >> JOSEPH ONG: So daardie gebeurtenis navraag in die funksie is net 'n parameter wat 2102 01:41:51,750 --> 01:41:53,490 kry geslaag om die funksie vir enige gebeurtenis. 2103 01:41:53,490 --> 01:41:55,470 Dit is net iets wat jy kry vir gratis. 2104 01:41:55,470 --> 01:41:59,320 Wanneer jy met die sleutel hanteerders in pset8, kan so 'n geval vertel nie, want 2105 01:41:59,320 --> 01:42:01,350 Byvoorbeeld, wat die sleutel wat jy gedruk op. 2106 01:42:01,350 --> 01:42:05,540 In hierdie geval, vir 'n gereed geval, dit is eintlik nie super nuttig. 2107 01:42:05,540 --> 01:42:08,640 Maar vir 'n sleutel af geval, dit is meer nuttig, want jy weet wat 2108 01:42:08,640 --> 01:42:12,330 Sleutel jou gedruk deur toegang tot belangrike kode af daardie gebeurtenis voorwerp. 2109 01:42:12,330 --> 01:42:13,530 Korrek? 2110 01:42:13,530 --> 01:42:15,160 Is wat sin maak? 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: So kan jy die scripttag laer af? 2115 01:42:19,290 --> 01:42:19,940 >> JOSEPH ONG: So ja. 2116 01:42:19,940 --> 01:42:21,500 Jy kan die script sit merk laer af. 2117 01:42:21,500 --> 01:42:23,090 Maar dan word dit net regtig slordig. 2118 01:42:23,090 --> 01:42:26,590 En ons wil almal om te sentraliseer van ons kode in een plek. 2119 01:42:26,590 --> 01:42:28,290 En dit sal ons toelaat om dit te doen. 2120 01:42:28,290 --> 01:42:32,010 Onthou vroeër het ek gesê daar is 'n mooier manier om te verseker dat die elemente 2121 01:42:32,010 --> 01:42:33,880 op die bladsy voor jou kode uit te voer? 2122 01:42:33,880 --> 01:42:36,079 En dit is net 'n mooi manier jy sou bereik nie. 2123 01:42:36,079 --> 01:42:37,329 >> Publiek: [onhoorbaar]. 2124 01:42:37,329 --> 01:42:41,710 2125 01:42:41,710 --> 01:42:42,230 >> JOSEPH ONG: Ja. 2126 01:42:42,230 --> 01:42:43,460 Jy sal nog steeds om te, reg? 2127 01:42:43,460 --> 01:42:46,930 Want onthou, jy het die dien aan die bokant van die bladsy. 2128 01:42:46,930 --> 01:42:49,890 So dit gaan eerste uit te voer voor jy aan die onderkant van die bladsy. 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 So jy kan ook 'n ander tipe event handler. 2132 01:42:59,210 --> 01:43:00,640 Hierdie een prosesse net klik. 2133 01:43:00,640 --> 01:43:03,910 Wanneer ek op die jongste, dan dit sal pop-up met 'n waarskuwing. 2134 01:43:03,910 --> 01:43:05,440 Dit is net 'n ander tipe gebeurtenis. 2135 01:43:05,440 --> 01:43:08,840 In teenstelling met die gereed geval, het jy nou gebruik die klik geval wanneer jy 2136 01:43:08,840 --> 01:43:10,190 klik op 'n element. 2137 01:43:10,190 --> 01:43:13,860 >> En so in hierdie geval, onthou, die klik hanteerder is tot jongste aangeheg. 2138 01:43:13,860 --> 01:43:16,080 So gebeur dit slegs wanneer Ek kliek op die jongste. 2139 01:43:16,080 --> 01:43:19,510 En in die ander een, die reg gebeurtenis is om die dokument aangeheg. 2140 01:43:19,510 --> 01:43:23,750 So is dit wag vir die dokument om gereed te wees. 2141 01:43:23,750 --> 01:43:25,120 Sin maak? 2142 01:43:25,120 --> 01:43:26,190 Ek dink ek kan aanbeweeg. 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: [onhoorbaar]. 2146 01:43:28,230 --> 01:43:31,676 2147 01:43:31,676 --> 01:43:33,620 In hierdie geval is jy [onhoorbaar]. 2148 01:43:33,620 --> 01:43:36,650 >> JOSEPH ONG: O, ja, want in hierdie geval, ek het om te wag vir die jongste 2149 01:43:36,650 --> 01:43:40,740 element te die eerste keer verskyn op die skerm voordat ek kan 'n klik hanteerder heg aan 2150 01:43:40,740 --> 01:43:43,062 dit, dit is hoekom ek dit binne van 'n dokument gereed is. 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 volgende jaar, so dit is 'n groot voorbeeld van hoe jy alles sal kombineer. 2154 01:43:52,390 --> 01:43:55,930 Dit is net 'n vorm validering byvoorbeeld jy gesien het in die lesing. 2155 01:43:55,930 --> 01:43:58,410 So neem dit stap vir stap soos jy gaan deur middel van hierdie. 2156 01:43:58,410 --> 01:43:59,590 En dit sal heeltemal OK. 2157 01:43:59,590 --> 01:44:01,400 Lees dit net van bo tot onder. 2158 01:44:01,400 --> 01:44:03,030 >> Ek het 'n vorm aan die onderkant. 2159 01:44:03,030 --> 01:44:07,590 Wanneer die dokument gereed is, ek heg 'n dien hanteerder na die vorm, soos wat 2160 01:44:07,590 --> 01:44:12,910 toe ek stuur die vorm, ek kry die waardes binne elk van hierdie insette. 2161 01:44:12,910 --> 01:44:14,560 En ek kyk of dit leeg. 2162 01:44:14,560 --> 01:44:17,090 As dit leeg is, ek terugkeer valse, want Ek wil nie die vorm in te dien, 2163 01:44:17,090 --> 01:44:18,950 omdat die vorm is verkeerd. 2164 01:44:18,950 --> 01:44:22,040 As die wagwoord is leeg of dit is minder as agt karakters, ek stuur nie 2165 01:44:22,040 --> 01:44:24,470 die vorm, want dit is ook verkeerd. 2166 01:44:24,470 --> 01:44:28,150 En die terugkeer valse net verhoed die vorm van die voorlegging en 2167 01:44:28,150 --> 01:44:30,150 gaan na 'n nuwe bladsy. 2168 01:44:30,150 --> 01:44:31,310 >> En hopelik, dit maak sin. 2169 01:44:31,310 --> 01:44:34,650 Ek dink jy moet ouens loop deur hierdie kode stap vir stap op jou eie. 2170 01:44:34,650 --> 01:44:38,350 En as jy verstaan ​​wat die kies elemente en doen dinge om dit te 2171 01:44:38,350 --> 01:44:40,520 eintlik behels, sal dit maak 'n baie sin vir jou. 2172 01:44:40,520 --> 01:44:41,295 Ja? 2173 01:44:41,295 --> 01:44:44,150 >> Publiek: Wat beteken die name = gebruikersnaam beteken? 2174 01:44:44,150 --> 01:44:48,530 >> JOSEPH ONG: So het die naam = gebruikersnaam en name = wagwoord beteken net kyk na die 2175 01:44:48,530 --> 01:44:50,730 kenmerk van watter jy kies. 2176 01:44:50,730 --> 01:44:51,790 En dan het aan te pas. 2177 01:44:51,790 --> 01:44:53,870 So ons gaan in registrasie. 2178 01:44:53,870 --> 01:44:56,240 En dan moet ons kyk na alle insette en registrasie. 2179 01:44:56,240 --> 01:44:59,990 En dan haal ons die een waar die naam eienskap is gelyk aan gebruikersnaam. 2180 01:44:59,990 --> 01:45:04,040 So daardie eerste selector net kies die rekening insette. 2181 01:45:04,040 --> 01:45:08,220 En dat die tweede selector net kies die wagwoord een, want hulle het 2182 01:45:08,220 --> 01:45:12,240 hul naam eienskappe soos as wat hulle veronderstel is om te wees. 2183 01:45:12,240 --> 01:45:12,575 Vraag? 2184 01:45:12,575 --> 01:45:17,030 >> Publiek: By die indiening, hoe die onderste gedeelte los die boonste deel? 2185 01:45:17,030 --> 01:45:19,350 >> JOSEPH ONG: So dit is omdat van die gebeurtenis hanteerder. 2186 01:45:19,350 --> 01:45:23,000 So ons wag vir 'n geleentheid dien wat kry afgevuur uit die vorm. 2187 01:45:23,000 --> 01:45:24,730 En dit is alles wat voorlê. 2188 01:45:24,730 --> 01:45:26,080 Hoekom moet ek roep indien daar? 2189 01:45:26,080 --> 01:45:28,870 Dit sê, wanneer die vorm ingedien word, Ek kry 'n onderwerp gebeurtenis. 2190 01:45:28,870 --> 01:45:33,480 So laat my net onderskep wat en dan loop die kode in plaas. 2191 01:45:33,480 --> 01:45:33,823 Ja? 2192 01:45:33,823 --> 01:45:35,866 >> Publiek: Hoekom het jy funksie geval het? 2193 01:45:35,866 --> 01:45:38,580 Hoekom kan jy nie net [onhoorbaar]? 2194 01:45:38,580 --> 01:45:41,140 >> JOSEPH ONG: Omdat in JavaScript, jy het die funksies te verklaar. 2195 01:45:41,140 --> 01:45:42,910 Dit is net hoe dit werk in JavaScript. 2196 01:45:42,910 --> 01:45:44,800 Jy het om te sê dit gaan 'n funksie uit te voer. 2197 01:45:44,800 --> 01:45:47,290 So jy vertel dat jy verwag 'n funksie hier in plaas van 2198 01:45:47,290 --> 01:45:48,260 net krullerige draadjies. 2199 01:45:48,260 --> 01:45:50,460 >> Publiek: En die funksie is alles wat volg? 2200 01:45:50,460 --> 01:45:50,650 >> JOSEPH ONG: Ja. 2201 01:45:50,650 --> 01:45:52,790 Die funksie is alles wat binne-in die krulhakies na 2202 01:45:52,790 --> 01:45:53,630 daardie funksie navraag. 2203 01:45:53,630 --> 01:45:54,045 Ja? 2204 01:45:54,045 --> 01:45:55,295 >> Publiek: [onhoorbaar]. 2205 01:45:55,295 --> 01:46:00,180 2206 01:46:00,180 --> 01:46:00,660 >> JOSEPH ONG: dien vir? 2207 01:46:00,660 --> 01:46:03,520 >> Publiek: Nee, want funksie sonder die gebeurtenis. 2208 01:46:03,520 --> 01:46:03,770 >> JOSEPH ONG: Ja. 2209 01:46:03,770 --> 01:46:05,610 So sonder die geval, jy kan hê nie. 2210 01:46:05,610 --> 01:46:08,480 As jy nie die geval nie nodig, dan kan jy net laat dit. 2211 01:46:08,480 --> 01:46:12,220 Maar as jy dit doen, dan is jy het dit net daar. 2212 01:46:12,220 --> 01:46:12,520 Ja. 2213 01:46:12,520 --> 01:46:13,190 Vinnige vraag? 2214 01:46:13,190 --> 01:46:14,440 >> Publiek: [onhoorbaar]. 2215 01:46:14,440 --> 01:46:21,170 2216 01:46:21,170 --> 01:46:21,440 >> JOSEPH ONG: Ja. 2217 01:46:21,440 --> 01:46:24,550 Want wat jy hoef te doen, is die document.ready sê net wag vir almal 2218 01:46:24,550 --> 01:46:26,540 die HTML op die bladsy te laai eers. 2219 01:46:26,540 --> 01:46:30,510 En gewoonlik, wil jy jou elemente in plek voordat jy hardloop enige kode. 2220 01:46:30,510 --> 01:46:31,030 Alle regte. 2221 01:46:31,030 --> 01:46:32,180 Ons het om te kry om Ajax. 2222 01:46:32,180 --> 01:46:33,110 Ons het nie veel tyd nie. 2223 01:46:33,110 --> 01:46:35,170 So voor-en nadele. 2224 01:46:35,170 --> 01:46:37,450 JavaScript is makliker probeer skryf met jQuery. 2225 01:46:37,450 --> 01:46:38,930 Maar jQuery is 'n soort van stadig. 2226 01:46:38,930 --> 01:46:42,290 >> Dit is soos PHP is stadiger as C, want dit is vertolk. 2227 01:46:42,290 --> 01:46:45,690 En jQuery is 'n bietjie stadiger as JavaScript, omdat dit nie 'n baie 2228 01:46:45,690 --> 01:46:46,630 die wat onder die kap. 2229 01:46:46,630 --> 01:46:48,660 En so, as jy met behulp van jQuery, dit is net 'n bietjie stadiger as 2230 01:46:48,660 --> 01:46:51,630 JavaScript, selfs al is dit gee jou mooi elegansie. 2231 01:46:51,630 --> 01:46:53,970 En uiteindelik, Ajax. 2232 01:46:53,970 --> 01:46:59,170 Tot dusver met Ajax, het jy nie gesien Ajax in terme van pset7 nie, want 2233 01:46:59,170 --> 01:47:01,150 wanneer jy dit doen, jy stuur 'n vorm te quote. 2234 01:47:01,150 --> 01:47:02,350 Dit laai 'n nuwe bladsy. 2235 01:47:02,350 --> 01:47:04,440 So kry jy hierdie groot wit flits op die bladsy, terwyl dié 2236 01:47:04,440 --> 01:47:06,820 tweede bladsy laai, korrek? 2237 01:47:06,820 --> 01:47:08,780 >> Dit sal regtig lekker wees as jy het nie hierdie flits. 2238 01:47:08,780 --> 01:47:11,600 Soos Facebook, as jy net gaan na die onderkant, dit voeg nuwe inhoud 2239 01:47:11,600 --> 01:47:13,490 sonder verfrissend die hele bladsy. 2240 01:47:13,490 --> 01:47:15,420 So iets soos hierdie sal lekker wees. 2241 01:47:15,420 --> 01:47:17,370 Dit is JavaScript kode aan die linkerkant. 2242 01:47:17,370 --> 01:47:19,390 Jy kry wat binne daardie insette. 2243 01:47:19,390 --> 01:47:21,340 Jy kry die voorraad info van Yahoo! 2244 01:47:21,340 --> 01:47:27,440 En dan moet jy maak 'n groot string wat sê, OK, dit is die boodskap wat ek wil 2245 01:47:27,440 --> 01:47:28,400 om te wys op die skerm. 2246 01:47:28,400 --> 01:47:32,280 En dan moet jy sit dat die boodskap in van 'n paar HTML element wat kry 2247 01:47:32,280 --> 01:47:33,970 vertoon op die skerm. 2248 01:47:33,970 --> 01:47:35,540 >> So dit is al wat hier gebeur. 2249 01:47:35,540 --> 01:47:39,410 So basies, want dit is al JavaScript en jy hoef nie te loop 2250 01:47:39,410 --> 01:47:42,980 meer PHP, dit sal seker maak dat die bladsy nie verfris. 2251 01:47:42,980 --> 01:47:47,470 So dit is net 'n abstrakte idee dat ek hier sê vir nou. 2252 01:47:47,470 --> 01:47:50,630 Die abstrakte idee is dat as jy dit doen al in JavaScript, jy het nie 'n 2253 01:47:50,630 --> 01:47:52,330 bladsy verfris. 2254 01:47:52,330 --> 01:47:53,800 Maar hoe weet jy eintlik doen? 2255 01:47:53,800 --> 01:47:56,230 >> Wel, eintlik, laat ons praat oor 'n probleem met die eerste. 2256 01:47:56,230 --> 01:47:59,340 'N probleem is in JavaScript, uitvoering is sinchrone. 2257 01:47:59,340 --> 01:48:02,000 So jy hoef te wag vir 'n lyn te voltooi voordat jy 2258 01:48:02,000 --> 01:48:03,370 voer die volgende reël. 2259 01:48:03,370 --> 01:48:06,130 En wat as ek gaan na Yahoo!, en hulle bedieners is regtig stadig, en 2260 01:48:06,130 --> 01:48:08,790 dit neem om hulle drie sekondes Gee my weer dat voorraad info? 2261 01:48:08,790 --> 01:48:12,620 Toe ek getref dat die prys lyn, indien die uitvoering is sinchrone, want dit is deur 2262 01:48:12,620 --> 01:48:15,390 standaard, wat dit net gaan om te doen, is jou leser gaan stalletjie vir 2263 01:48:15,390 --> 01:48:15,930 drie sekondes. 2264 01:48:15,930 --> 01:48:18,900 En jy gaan nie in staat wees om te doen enigiets, terwyl dit kry wat data. 2265 01:48:18,900 --> 01:48:20,010 Dit gaan gevries word. 2266 01:48:20,010 --> 01:48:20,800 >> En dit is sleg nie. 2267 01:48:20,800 --> 01:48:23,390 Jy wil nie 'n gebruiker 'n bevrore webblad. 2268 01:48:23,390 --> 01:48:24,170 Korrek? 2269 01:48:24,170 --> 01:48:25,480 Dit is net sleg nie. 2270 01:48:25,480 --> 01:48:26,770 Almal is dit eens? 2271 01:48:26,770 --> 01:48:29,270 As jy op Facebook, en dit vries en jy kan niks doen nie, moet jy 2272 01:48:29,270 --> 01:48:31,920 kry regtig gefrustreerd. 2273 01:48:31,920 --> 01:48:34,960 So die oplossing is wat ons maak iets asynchrone plaas. 2274 01:48:34,960 --> 01:48:38,910 So al hierdie asynchrone ding sê is, ek gaan om dit te vra 2275 01:48:38,910 --> 01:48:40,280 URL vir 'n paar data. 2276 01:48:40,280 --> 01:48:41,610 En dan gaan ek die gang te hou. 2277 01:48:41,610 --> 01:48:45,330 Ek gaan net om te hou die uitvoering watter kode wat was daarna. 2278 01:48:45,330 --> 01:48:49,290 >> En dan wanneer die data is gereed, dan sal ek dit verwerk. 2279 01:48:49,290 --> 01:48:50,540 Dit is al wat dit sê. 2280 01:48:50,540 --> 01:48:52,795 2281 01:48:52,795 --> 01:48:56,710 >> Publiek: Ajax maak net kode asynchrone? 2282 01:48:56,710 --> 01:48:58,560 >> JOSEPH ONG: Dit is 'n asinchrone manier gaan haal data. 2283 01:48:58,560 --> 01:49:01,230 So die eerste ding wat oor Ajax is dit laat my sommer data 2284 01:49:01,230 --> 01:49:03,170 vanaf 'n eksterne webwerf. 2285 01:49:03,170 --> 01:49:07,045 En die tweede ding is dit maak seker dat my bladsy nie stalletjie terwyl ek 2286 01:49:07,045 --> 01:49:07,970 haal wat data. 2287 01:49:07,970 --> 01:49:09,600 Dit is die asynchrone deel daarvan. 2288 01:49:09,600 --> 01:49:13,040 Want dit gaan iewers anders, want ek sê ek hou op, terwyl 2289 01:49:13,040 --> 01:49:14,900 dit gaan haal wat data, wat maak dit asynchrone. 2290 01:49:14,900 --> 01:49:17,170 Ek hou uitvoering. 2291 01:49:17,170 --> 01:49:18,960 >> So hou dit asynchrone idee in gedagte. 2292 01:49:18,960 --> 01:49:22,010 En ek sal jou wys wat die verskil is. 2293 01:49:22,010 --> 01:49:23,920 Die sinchrone weergawe is aan die linkerkant. 2294 01:49:23,920 --> 01:49:26,240 Die asynchrone weergawe is op die regterkant. 2295 01:49:26,240 --> 01:49:29,170 Kyk na die nommers om te sien watter stappe ooreenstem met wat 2296 01:49:29,170 --> 01:49:30,610 voer op elke lyn. 2297 01:49:30,610 --> 01:49:32,730 Daar, die waarskuwing toon eerste. 2298 01:49:32,730 --> 01:49:34,590 Want om voorraad info van Yahoo! 2299 01:49:34,590 --> 01:49:37,250 neem drie sekondes, dit stalletjies vir drie sekondes. 2300 01:49:37,250 --> 01:49:39,880 En dan is dit waarskuwings van die prys ná dié drie sekondes. 2301 01:49:39,880 --> 01:49:43,690 >> So nou dat waarskuwing programme up op daardie tydstip - 2302 01:49:43,690 --> 01:49:44,610 drie sekondes in 2303 01:49:44,610 --> 01:49:47,670 En dan is dit waarskuwings deur na daardie. 2304 01:49:47,670 --> 01:49:48,930 So dit gaan net stap vir stap. 2305 01:49:48,930 --> 01:49:51,200 Dit is soos wat julle sou aanvaar, korrek? 2306 01:49:51,200 --> 01:49:54,170 Met asinkrone uitvoering, jy eers waarsku. 2307 01:49:54,170 --> 01:49:57,410 Dan gaan jy af na hierdie URL. 2308 01:49:57,410 --> 01:49:59,530 En jy sê, ek gaan vra net vir die data. 2309 01:49:59,530 --> 01:50:01,170 En dan gaan ek later verwerk. 2310 01:50:01,170 --> 01:50:04,230 So dit uitvoer onmiddellik die volgende lyn nadat ek maak dat 2311 01:50:04,230 --> 01:50:05,710 asynchrone versoek. 2312 01:50:05,710 --> 01:50:08,920 >> So 'n 0.001 sekondes, jy sien waarskuwing hi. 2313 01:50:08,920 --> 01:50:10,960 Voer daardie funksie, wakker bye. 2314 01:50:10,960 --> 01:50:14,240 En omdat ek 'n belofte gemaak dat ek sou die data later verwerk, wat 2315 01:50:14,240 --> 01:50:17,920 gebeur, is wanneer daardie data kom terug drie sekondes later, toe loop ek dat 2316 01:50:17,920 --> 01:50:21,380 funksie wat ek daar. 2317 01:50:21,380 --> 01:50:21,870 Ja? 2318 01:50:21,870 --> 01:50:25,750 >> Publiek: Kan jy spesifiseer of verduidelik wat Ajax beteken? 2319 01:50:25,750 --> 01:50:30,460 >> JOSEPH ONG: So Ajax is 'n manier dat as ek nodig data wanneer ek op 'n webwerf en ek 2320 01:50:30,460 --> 01:50:34,690 wil nie die bladsy te verfris, dan Ek gebruik hierdie tegnologie genoem Ajax. 2321 01:50:34,690 --> 01:50:40,630 Wat in wese net beteken, gaan haal data vanaf 'n ander webwerf. 2322 01:50:40,630 --> 01:50:43,724 En doen dit in 'n wyse dat net nie my webblad stalletjie. 2323 01:50:43,724 --> 01:50:46,650 >> Publiek: So, is dat 'n inherente deel van JavaScript of jQuery? 2324 01:50:46,650 --> 01:50:50,590 >> JOSEPH ONG: So iemand 'n wyse te doen het dit in JavaScript 'n lang tyd gelede. 2325 01:50:50,590 --> 01:50:52,050 Op 'n stadium het dit nie bestaan ​​nie. 2326 01:50:52,050 --> 01:50:56,630 En so iemand hierdie tegniek uitgevind mense toe te laat om hierdie inligting te versoek 2327 01:50:56,630 --> 01:50:57,680 in hierdie mode. 2328 01:50:57,680 --> 01:50:59,550 En hulle het 'n paar dinge om dit te doen vir jou. 2329 01:50:59,550 --> 01:51:01,605 En jQuery gee jou net hierdie baie mooi manier om dit te doen 2330 01:51:01,605 --> 01:51:03,112 met hierdie $. kry funksie. 2331 01:51:03,112 --> 01:51:07,200 2332 01:51:07,200 --> 01:51:09,480 vrae? 2333 01:51:09,480 --> 01:51:11,560 Ek vrae oor kan beantwoord Ajax daarna ook. 2334 01:51:11,560 --> 01:51:13,870 Ek sal hier wees. 2335 01:51:13,870 --> 01:51:16,390 >> So dit laat ons data haal sonder die bladsy te verfris. 2336 01:51:16,390 --> 01:51:18,200 En dit laat ons doen dit in 'n asinchrone manier wat 2337 01:51:18,200 --> 01:51:19,450 nie vries die bladsy. 2338 01:51:19,450 --> 01:51:22,680 2339 01:51:22,680 --> 01:51:27,310 Te lank, het nie lees as wat verduideliking was te lank vir jou. 2340 01:51:27,310 --> 01:51:29,430 So uiteindelik, kruis-site script aanvalle. 2341 01:51:29,430 --> 01:51:30,910 Ons het dit met Zamyla. 2342 01:51:30,910 --> 01:51:34,285 As in my databasis iemand het hierdie naam, wat is hierdie script tag, en ek 2343 01:51:34,285 --> 01:51:38,280 het 'n paar kode op my bladsy wat afdrukke uit mense se name in 'n ry, of ek 2344 01:51:38,280 --> 01:51:43,310 sommige JavaScript-kode wat voeg hierdie naam in die bladsy, 2345 01:51:43,310 --> 01:51:45,680 wat HTML kry geproduseer? 2346 01:51:45,680 --> 01:51:47,290 Wel, ek druk die HTML tag. 2347 01:51:47,290 --> 01:51:48,390 Ek druk al hierdie etikette. 2348 01:51:48,390 --> 01:51:50,740 >> Ek kry om die deel waar ek druk saam met my vriende. 2349 01:51:50,740 --> 01:51:52,980 Ek druk Lauren uit. 2350 01:51:52,980 --> 01:51:54,200 Dit druk Milo uit. 2351 01:51:54,200 --> 01:51:56,810 En dan my naam in die databasis is script post 2352 01:51:56,810 --> 01:51:58,060 onvleiende Facebook status. 2353 01:51:58,060 --> 01:52:00,740 2354 01:52:00,740 --> 01:52:04,330 Omdat ek plaas dit in die bladsy want dit lyk soos JavaScript, wanneer 2355 01:52:04,330 --> 01:52:07,930 hierdie bladsy kry gestuur na die gebruiker, dit sal uitgevoer word as JavaScript. 2356 01:52:07,930 --> 01:52:10,800 En so dit is wat ons noem 'n kruis-site scripting aanval. 2357 01:52:10,800 --> 01:52:14,570 Iemand sit kwaadwillige inligting in jou databasis wat kan stem ooreen met 2358 01:52:14,570 --> 01:52:17,080 'n paar ekstra tou of sommige JavaScript string. 2359 01:52:17,080 --> 01:52:20,130 >> En wanneer dit gedruk aan die bladsy op hierdie manier, wat dan 2360 01:52:20,130 --> 01:52:22,580 gebeur, is dat slegte-kode sal uitgevoer word dat ek nie van plan is om 2361 01:52:22,580 --> 01:52:25,110 om dit te kry uitgevoer. 2362 01:52:25,110 --> 01:52:28,230 En dit is al wat 'n kruis-webwerf script aanval is. 2363 01:52:28,230 --> 01:52:31,790 En die manier waarop jy rond dit is soos Zamyla gesê. 2364 01:52:31,790 --> 01:52:34,340 Jy moet net draai dinge in HTML spesiale karakters. 2365 01:52:34,340 --> 01:52:39,460 En hierdie HTML spesiale karakters is 'n PHP funksie wat sal verhoed dat hierdie soort 2366 01:52:39,460 --> 01:52:42,000 ding van jou gebeur as jy 'n kwaadwillige 2367 01:52:42,000 --> 01:52:43,830 string in jou databasis. 2368 01:52:43,830 --> 01:52:47,650 Dit ontsnap dit net sodat dit nie raak geïnterpreteer as HTML. 2369 01:52:47,650 --> 01:52:50,960 Dit vervang die klein hakies met wat ons noem entiteite. 2370 01:52:50,960 --> 01:52:52,250 Toe het ons oor hierdie in lesing ook. 2371 01:52:52,250 --> 01:52:55,800 So ek dink jy ouens moet 'n goeie greep op dit. 2372 01:52:55,800 --> 01:52:57,420 Vrae? 2373 01:52:57,420 --> 01:52:57,820 Ja. 2374 01:52:57,820 --> 01:53:00,860 >> Publiek: So hoe sou die [onhoorbaar]? 2375 01:53:00,860 --> 01:53:01,555 >> JOSEPH ONG: Sê dit weer. 2376 01:53:01,555 --> 01:53:02,500 >> Publiek: Hoe sal die monitor - 2377 01:53:02,500 --> 01:53:02,860 >> JOSEPH ONG: Right. 2378 01:53:02,860 --> 01:53:06,080 So jy het iets wat sê, wanneer Ek registreer, tik in my naam. 2379 01:53:06,080 --> 01:53:09,390 Ek tik net in daardie gebied, my naam is stript post onvleiende Facebook 2380 01:53:09,390 --> 01:53:11,570 status naby script tag. 2381 01:53:11,570 --> 01:53:15,690 En dit net kry dit in die databasis, want ek kan nie sê iemand 2382 01:53:15,690 --> 01:53:18,260 in die wêreld het nie 'n naam met 'n linker pyl in dit of die 2383 01:53:18,260 --> 01:53:19,036 woord script in. 2384 01:53:19,036 --> 01:53:21,330 Dit maak nie regtig sin maak nie. 2385 01:53:21,330 --> 01:53:24,560 So ek moet net om seker te maak dat ek ontsmet die dinge voor ek druk dit 2386 01:53:24,560 --> 01:53:25,420 uit na die bladsy. 2387 01:53:25,420 --> 01:53:27,140 >> Publiek: So het die HTML spesiale kaarte verhoed dat die script tags? 2388 01:53:27,140 --> 01:53:28,710 >> JOSEPH ONG: Ja. 2389 01:53:28,710 --> 01:53:29,960 Daarom is dit nie verhoed dat die script tags. 2390 01:53:29,960 --> 01:53:32,320 Dit maak net seker dat die script tags kry nie 2391 01:53:32,320 --> 01:53:35,120 geïnterpreteer as HTML of - 2392 01:53:35,120 --> 01:53:35,400 ja. 2393 01:53:35,400 --> 01:53:38,470 Dit kom net soos wat dit werklik is. 2394 01:53:38,470 --> 01:53:39,220 Alle regte. 2395 01:53:39,220 --> 01:53:40,930 So dit was die quiz review. 2396 01:53:40,930 --> 01:53:41,830 Cool. 2397 01:53:41,830 --> 01:53:45,088 >> [Applous]