1 00:00:00,000 --> 00:00:05,616 2 00:00:05,616 --> 00:00:07,030 >> HANNAH Blumberg: Hi almal. 3 00:00:07,030 --> 00:00:09,530 Ons gaan om te begin net 'n paar minute vroeg 4 00:00:09,530 --> 00:00:11,738 want ons het 'n hele klomp materiaal om deur te kom. 5 00:00:11,738 --> 00:00:12,790 Ek is Hannah. 6 00:00:12,790 --> 00:00:13,865 Ek is 'n TF. 7 00:00:13,865 --> 00:00:16,239 Maria gaan word by ons net 'n paar minute. 8 00:00:16,239 --> 00:00:17,560 Sy leer artikel reg voor. 9 00:00:17,560 --> 00:00:19,351 Ek leer artikel reg na, so ons gaan 10 00:00:19,351 --> 00:00:21,200 om dit aan die uur en 'n half te hou. 11 00:00:21,200 --> 00:00:25,490 >> So as jy hier sien het, ons het nogal 'n paar onderwerpe wat ons nodig het om deur te kom, 12 00:00:25,490 --> 00:00:27,200 so ons sal gaan 'n bietjie vinnig. 13 00:00:27,200 --> 00:00:31,140 Maar as by enige punt wat ons iets te sê te vinnig of jy nie verstaan ​​nie, 14 00:00:31,140 --> 00:00:33,170 voel vry om te onderbreek met vrae. 15 00:00:33,170 --> 00:00:36,610 Ons wil in staat wees om dit 'n maak hersien sessie as nuttig vir almal van julle 16 00:00:36,610 --> 00:00:37,973 as moontlik. 17 00:00:37,973 --> 00:00:38,920 Awesome. 18 00:00:38,920 --> 00:00:41,650 >> So laat spring reg in met sommige onderwerpe wat ons eintlik 19 00:00:41,650 --> 00:00:46,980 baie, baie kortliks gedek vir die quiz 0 in die quiz 0 review sessie. 20 00:00:46,980 --> 00:00:48,840 So begin met geskakelde lyste. 21 00:00:48,840 --> 00:00:52,090 So maak net seker jy het 'n paar basiese kennis oor geskakelde lyste 22 00:00:52,090 --> 00:00:55,110 en is gemaklik doen sommige van die basiese bewerkings. 23 00:00:55,110 --> 00:00:58,560 >> So net om te hersien, gekoppel lyste is beter as skikkings 24 00:00:58,560 --> 00:01:01,020 omdat hulle kan dinamiese groei. 25 00:01:01,020 --> 00:01:03,300 So ons het dit groot voordeel. 26 00:01:03,300 --> 00:01:06,031 Ons het gesien dat hulle gebruik in hash tabelle wanneer ons 27 00:01:06,031 --> 00:01:08,280 weet nie presies hoeveel dinge wat ons gaan om te wil 28 00:01:08,280 --> 00:01:10,900 om in te voeg in ons data struktuur. 29 00:01:10,900 --> 00:01:15,700 Ongelukkig het ons stukke die geskakelde lys regoor geheue, 30 00:01:15,700 --> 00:01:20,820 so ons sal nie noodwendig in staat wees om konstante toegang te doen 31 00:01:20,820 --> 00:01:22,502 om enige element in die geskakelde lys. 32 00:01:22,502 --> 00:01:24,210 Ten einde 'n te vind bepaalde element, ons 33 00:01:24,210 --> 00:01:26,510 moet Itereer al die manier van die begin af. 34 00:01:26,510 --> 00:01:30,610 So in gedagte hou dat die meeste van die basiese operasies is omega van 1. 35 00:01:30,610 --> 00:01:32,130 So insetsel is net gaan om te neem 1. 36 00:01:32,130 --> 00:01:37,520 Verwyder gaan neem N aangesien ons het om te gaan vind dit uit die lys. 37 00:01:37,520 --> 00:01:39,260 En soek kan neem, op die ergste, n. 38 00:01:39,260 --> 00:01:42,330 Ons kan nie iets te doen soos binêre soek op 'n geskakelde lys 39 00:01:42,330 --> 00:01:45,101 aangesien ons kan nie net lukraak spring na die middel. 40 00:01:45,101 --> 00:01:45,600 Koel. 41 00:01:45,600 --> 00:01:48,160 42 00:01:48,160 --> 00:01:48,960 Awesome. 43 00:01:48,960 --> 00:01:50,270 >> 'N bietjie van stapels. 44 00:01:50,270 --> 00:01:53,980 Dit, weer, het op quiz 0, sodat jy moet wees super gemaklik met dit. 45 00:01:53,980 --> 00:01:57,210 Maar vir stapels, ons vra julle om 'n stapel van bak onthou. 46 00:01:57,210 --> 00:01:59,940 En dit gaan eerste in te wees, laaste uit. 47 00:01:59,940 --> 00:02:02,272 Sodat ons stapel dinge in die stapel, en dan 48 00:02:02,272 --> 00:02:04,980 As ons probeer om iets te neem off-- wat ons noem knal af 49 00:02:04,980 --> 00:02:06,581 die stack-- ons kom uit die top. 50 00:02:06,581 --> 00:02:09,289 En as ons iets wil sit in die stapel, noem ons dit stoot. 51 00:02:09,289 --> 00:02:13,170 So dit is altyd gaan wees grootword van die onderkant soos 'n stapel van bak. 52 00:02:13,170 --> 00:02:14,540 Awesome. 53 00:02:14,540 --> 00:02:17,607 >> Ons het gesien stapels geïmplementeer met beide gekoppel lyste en skikkings. 54 00:02:17,607 --> 00:02:19,440 As jy die uitvoering van met skikkings, jy wil 55 00:02:19,440 --> 00:02:22,350 om seker te maak om tred te hou van beide die grootte en die kapasiteit. 56 00:02:22,350 --> 00:02:27,540 So grootte gaan die huidige wees aantal van die dinge in jou stapel, 57 00:02:27,540 --> 00:02:32,900 terwyl kapasiteit is die totale aantal van die dinge wat jy kan stoor in jou stapel. 58 00:02:32,900 --> 00:02:34,220 Koel. 59 00:02:34,220 --> 00:02:35,767 >> Baie soortgelyke, ons het toue. 60 00:02:35,767 --> 00:02:38,850 In hierdie geval, in plaas van dink oor 'n stapel van bak, dink aan 'n lyn. 61 00:02:38,850 --> 00:02:40,697 Dit gaan wees eerste in, eerste uit. 62 00:02:40,697 --> 00:02:42,780 So as jy voering vir iets by die winkel, 63 00:02:42,780 --> 00:02:46,920 ons hoop dat die persoon in die eerste lyn gaan eerste gehelp word. 64 00:02:46,920 --> 00:02:49,350 >> In plaas van sê druk en pop soos ons doen vir stapel, 65 00:02:49,350 --> 00:02:52,000 ons het net enqueue en dequeue sê. 66 00:02:52,000 --> 00:02:54,970 En weer, as jy die implementering van hierdie met 'n skikking, 67 00:02:54,970 --> 00:02:56,720 ons nodig het om tred te hou nie net die grootte 68 00:02:56,720 --> 00:03:02,390 en kapasiteit, maar ook die hoof, wat gaan na die voorkant van ons ry wees. 69 00:03:02,390 --> 00:03:03,010 Koel. 70 00:03:03,010 --> 00:03:05,770 Enige vrae oor enige van daardie? 71 00:03:05,770 --> 00:03:06,320 Awesome. 72 00:03:06,320 --> 00:03:07,640 Beweeg reg langs. 73 00:03:07,640 --> 00:03:08,564 >> OK, hash tabelle. 74 00:03:08,564 --> 00:03:10,605 Hier is waar dit begin kry regtig interessant. 75 00:03:10,605 --> 00:03:14,150 So 'n gemors tafel is een implementering van 'n assosiatiewe skikking. 76 00:03:14,150 --> 00:03:16,700 So basies wat gebeur is ons al hierdie insette, 77 00:03:16,700 --> 00:03:18,750 en ons gee dit aan 'n gemors funksie wat sê 78 00:03:18,750 --> 00:03:21,840 OK, dit is waar in die hash tafel dit hoort. 79 00:03:21,840 --> 00:03:24,860 >> So die eenvoudigste hash funksie wat ons gesien het is net sê, 80 00:03:24,860 --> 00:03:28,170 OK, veronderstel ons wil om te sit snare in ons hash tafel. 81 00:03:28,170 --> 00:03:30,870 En 'n baie eenvoudige idee kan wees om te sê, OK, 82 00:03:30,870 --> 00:03:34,350 laat ons net sorteer deur die eerste letter van die woord. 83 00:03:34,350 --> 00:03:37,570 So jy hier kan sien, ons neem piesang, ons sit dit deur 'n hash funksie, 84 00:03:37,570 --> 00:03:40,190 en dit sê, hey, wat moet gaan by indeks 1. 85 00:03:40,190 --> 00:03:45,120 >> So kan ons in wese dink aan 'n hash tabel as 'n klomp van verskillende emmers. 86 00:03:45,120 --> 00:03:49,880 En elkeen van daardie emmers gaan aan die hoof van 'n geskakelde lys te hou. 87 00:03:49,880 --> 00:03:55,030 En in dié verband lys is waar ons kan eintlik sit verskillende stukke van die data. 88 00:03:55,030 --> 00:03:57,820 >> So duik 'n bietjie meer in 'n hash funksie, hier is 89 00:03:57,820 --> 00:03:59,870 die voorbeeld het ek net beskryf waar ons net sê, 90 00:03:59,870 --> 00:04:02,460 OK, neem die eerste letter van die woord en ons is 91 00:04:02,460 --> 00:04:03,990 gaan om dit te sorteer in die emmers. 92 00:04:03,990 --> 00:04:08,490 So vermoedelik, sal daar wees 26 emmers, een vir elke letter van die alfabet. 93 00:04:08,490 --> 00:04:10,090 Hoekom is dit nie 'n groot hash funksie? 94 00:04:10,090 --> 00:04:13,461 Wat maak hierdie nie-ideale? 95 00:04:13,461 --> 00:04:13,960 Ja. 96 00:04:13,960 --> 00:04:15,790 >> GEHOOR: Jy gaan om botsings te hê. 97 00:04:15,790 --> 00:04:16,390 >> HANNAH Blumberg: Ja, presies. 98 00:04:16,390 --> 00:04:18,000 Jy gaan om botsings te hê. 99 00:04:18,000 --> 00:04:18,954 So dit is een ding. 100 00:04:18,954 --> 00:04:21,620 En ons sal praat oor hoe ons kan los botsings in net 'n sekonde. 101 00:04:21,620 --> 00:04:23,980 Nog 'n probleem met hierdie veral hash funksie 102 00:04:23,980 --> 00:04:25,980 is dat ons verskillende emmers gaan wees 103 00:04:25,980 --> 00:04:28,960 van die mooi drasties verskillende groottes. 104 00:04:28,960 --> 00:04:33,840 >> Ons weet dat daar is 'n hele klomp meer woorde wat begin met 'n as X, 105 00:04:33,840 --> 00:04:38,980 so ons gaan baie het ongebalanseerde emmers in ons hash tafel. 106 00:04:38,980 --> 00:04:40,050 Koel. 107 00:04:40,050 --> 00:04:41,340 So ja, laat ons terug te kry om die punt van die botsings. 108 00:04:41,340 --> 00:04:42,900 Wat doen ons as daar 'n botsing? 109 00:04:42,900 --> 00:04:44,490 >> Ons het 'n paar verskillende opsies. 110 00:04:44,490 --> 00:04:47,600 So een, so dink ons ​​probeer Berry het in ons hash tafel. 111 00:04:47,600 --> 00:04:50,370 En ons sien, o, ons wil om dit in indeks 1 sit, 112 00:04:50,370 --> 00:04:52,070 maar piesang woon reeds daar. 113 00:04:52,070 --> 00:04:53,110 Wat gaan ons doen? 114 00:04:53,110 --> 00:04:54,560 Ons het twee hoof opsies. 115 00:04:54,560 --> 00:04:58,050 >> Nommer een is wat ons kan sê, OK, daar is geen ruimte in indeks 1, 116 00:04:58,050 --> 00:05:03,210 maar laat ons net aanhou kyk deur totdat ons kan nog oop kol vind. 117 00:05:03,210 --> 00:05:08,490 So ons sal sê, OK, laat dit in plek 3. 118 00:05:08,490 --> 00:05:09,240 Dit is een opsie. 119 00:05:09,240 --> 00:05:11,470 Dit is genoem lineêre indringende. 120 00:05:11,470 --> 00:05:15,500 >> En 'n tweede opsie sê, OK, goed, laat ons net elkeen van hierdie emmers 121 00:05:15,500 --> 00:05:17,470 wees hoofde van geskakelde lyste. 122 00:05:17,470 --> 00:05:21,910 En dit is OK as daar meer as een ding in 'n emmer. 123 00:05:21,910 --> 00:05:23,820 Ons is net gaan om te voeg dit op die voorkant. 124 00:05:23,820 --> 00:05:26,032 So hier kan jy sien, OK, wanneer ons plaas berry, ons 125 00:05:26,032 --> 00:05:28,240 net het piesang, soort stoot dit oor 'n bietjie 126 00:05:28,240 --> 00:05:29,842 en gooi 'n bessie daar. 127 00:05:29,842 --> 00:05:31,050 En dit is ook heeltemal fyn. 128 00:05:31,050 --> 00:05:32,830 Dit is die sogenaamde aparte aaneenskakeling. 129 00:05:32,830 --> 00:05:38,100 Jy kan dink van hierdie as soort van soos 'n verskeidenheid van koppe geskakelde lyste. 130 00:05:38,100 --> 00:05:41,950 Enige vrae oor hash tafels, hash funksies? 131 00:05:41,950 --> 00:05:44,290 Awesome. 132 00:05:44,290 --> 00:05:45,470 >> Bome en drieë gedruk. 133 00:05:45,470 --> 00:05:47,287 So 'n boom is 'n soort van die data struktuur 134 00:05:47,287 --> 00:05:49,453 waarin daar is 'n soort van hiërargie of 'n soort 135 00:05:49,453 --> 00:05:51,247 van die posisie om jou verskillende voorwerpe. 136 00:05:51,247 --> 00:05:53,580 En dit sal super geword duidelik wanneer ons sien 'n voorbeeld. 137 00:05:53,580 --> 00:05:56,960 En ons het drieë, saam met hash tabelle, in pset5-- 138 00:05:56,960 --> 00:06:00,700 wat, weer, heeltemal fair game vir hierdie quiz-- as 'n ander data 139 00:06:00,700 --> 00:06:03,110 strukture wat ons kan stoor verskillende dinge. 140 00:06:03,110 --> 00:06:06,782 In die geval van 'n woordeboek, Ons gestoor 'n klomp van woorde. 141 00:06:06,782 --> 00:06:08,240 So laat ons neem 'n blik op sommige bome. 142 00:06:08,240 --> 00:06:10,190 So, dit is 'n voorbeeld van 'n boom. 143 00:06:10,190 --> 00:06:13,105 Dit het 'n soort struktuur, dat hiërargiese struktuur, 144 00:06:13,105 --> 00:06:15,920 waar jy dit kan sien hierdie 1 node by die top 145 00:06:15,920 --> 00:06:20,750 het 'n soort van rang bokant 2 en 3, wat bo 4, 5 en 6 en 7 is, 146 00:06:20,750 --> 00:06:22,860 wat is bo 8 en 9. 147 00:06:22,860 --> 00:06:25,210 So dit is al wat ons bedoel met 'n boom, so jy kan net soort 148 00:06:25,210 --> 00:06:26,660 van die foto dit in jou kop. 149 00:06:26,660 --> 00:06:29,050 >> Nou, ons het 'n paar van meer gespesialiseerde bome. 150 00:06:29,050 --> 00:06:31,070 So 'n voorbeeld is 'n binêre boom. 151 00:06:31,070 --> 00:06:33,290 En 'n binêre boom is, weer, net gaan wees 152 00:06:33,290 --> 00:06:37,040 'n data struktuur met 'n soort van hiërargie, maar elkeen van die nodes 153 00:06:37,040 --> 00:06:38,650 kan hoogstens twee kinders. 154 00:06:38,650 --> 00:06:41,530 Dit is waar die woord binêre vandaan kom. 155 00:06:41,530 --> 00:06:43,410 So, dit is 'n voorbeeld van 'n binêre boom. 156 00:06:43,410 --> 00:06:45,720 So dit is 'n kleiner kategorie van bome. 157 00:06:45,720 --> 00:06:48,960 >> Nou laat kry, selfs meer spesifiek en praat oor binêre trees-- binêre soek 158 00:06:48,960 --> 00:06:51,310 bome, eerder. 159 00:06:51,310 --> 00:06:56,430 So hier is die idee is nie net elke node het by die meeste twee kinders, 160 00:06:56,430 --> 00:07:00,300 maar al die kinders na die links gaan kleiner wees 161 00:07:00,300 --> 00:07:03,450 en al die kinders na die reg gaan groter wees. 162 00:07:03,450 --> 00:07:05,890 So in kennis net ons binêre boom, daar is 163 00:07:05,890 --> 00:07:08,650 geen verhouding tussen die getalle. 164 00:07:08,650 --> 00:07:12,990 Maar in ons binêre soek boom sien ons, OK, hier is 44. 165 00:07:12,990 --> 00:07:17,080 En elke getal aan die linkerkant van 44 is kleiner en alles aan die reg 166 00:07:17,080 --> 00:07:17,920 is groter. 167 00:07:17,920 --> 00:07:20,130 >> En dat hou by elke vlak van die boom. 168 00:07:20,130 --> 00:07:24,810 So hier is dit kleiner as 22 en dit is groter as 22. 169 00:07:24,810 --> 00:07:26,390 En dit is binêre soek boom. 170 00:07:26,390 --> 00:07:28,900 Hoekom dink ons ​​dit genoem 'n binêre soekboom? 171 00:07:28,900 --> 00:07:30,651 Wat algoritme beteken dit herinner u van? 172 00:07:30,651 --> 00:07:31,650 GEHOOR: Binary search. 173 00:07:31,650 --> 00:07:32,480 HANNAH Blumberg: Binary search. 174 00:07:32,480 --> 00:07:35,150 Want as jy soek vir 'n bepaalde aantal in hierdie boom, 175 00:07:35,150 --> 00:07:38,800 op elke punt, kan jy net klop af die helfte van die boom, wat is groot. 176 00:07:38,800 --> 00:07:43,800 En so wat gaan ons iets om te gee wat lyk 'n baie soos binêre soek. 177 00:07:43,800 --> 00:07:45,870 Enige vrae? 178 00:07:45,870 --> 00:07:47,570 Alle reg, cool. 179 00:07:47,570 --> 00:07:48,560 >> Alle reg, probeer. 180 00:07:48,560 --> 00:07:49,657 Gunsteling almal se. 181 00:07:49,657 --> 00:07:51,990 So dit is die voorbeeld wat ons het 'n klomp in die klas gesien. 182 00:07:51,990 --> 00:07:54,710 En weer, dit is net nog 'n manier wat ons data kan stoor. 183 00:07:54,710 --> 00:07:57,530 In die geval van 'n woordeboek, weer, dit is net gaan om te snare wees. 184 00:07:57,530 --> 00:08:00,870 So laat ons sien wat dit werklik lyk op 'n effens laer vlak. 185 00:08:00,870 --> 00:08:03,690 >> So laat ons 'n blik by een node in 'n Trie. 186 00:08:03,690 --> 00:08:07,532 En ons sien, OK, daar gaan 'n Boolese en 'n knoop wees, 187 00:08:07,532 --> 00:08:09,170 'n verwysing na 'n knoop. 188 00:08:09,170 --> 00:08:11,400 En ons sien dat die Boole genoem is_word. 189 00:08:11,400 --> 00:08:13,490 So in wese, dit is gaan ooreenstem 190 00:08:13,490 --> 00:08:16,750 om hierdie klein driehoeke wat sê, as jy hier gekry het, 191 00:08:16,750 --> 00:08:19,100 jy 'n volledige woord gevind het. 192 00:08:19,100 --> 00:08:23,670 >> Ons weet dat "siene" oor hier is 'n volledige woord 193 00:08:23,670 --> 00:08:28,030 terwyl net T-U-R is nie 'n woord omdat ons nie sien dat min delta. 194 00:08:28,030 --> 00:08:31,440 En dat daar min delta, weer, ooreenstem met die is_word, 195 00:08:31,440 --> 00:08:34,480 hierdie Boole is_word. 196 00:08:34,480 --> 00:08:36,320 En dan het ons 'n verskeidenheid van kinders. 197 00:08:36,320 --> 00:08:39,860 So op elke vlak, kan jy het 'n besondere knoop, 198 00:08:39,860 --> 00:08:42,470 en dat node punte om 'n verskeidenheid van die hele alfabet. 199 00:08:42,470 --> 00:08:44,346 >> Sodat jy kan sien, weer, in hierdie picture-- Ek is 200 00:08:44,346 --> 00:08:48,170 gaan hou spring terug en forth-- dat opgestel by die top 201 00:08:48,170 --> 00:08:51,640 het 'n klomp van die verskillende nodes kom af van dit. 202 00:08:51,640 --> 00:08:57,140 Dit het 26 of 27 as jy wil om 'n ekstra karakter te sluit. 203 00:08:57,140 --> 00:09:01,320 En dit gee ons 'n manier om ons data te stoor 204 00:09:01,320 --> 00:09:04,450 op 'n manier wat jy kan kyk op dat jy kan kyk op super vinnig. 205 00:09:04,450 --> 00:09:06,650 Wat is die tyd vir 'n lookup Trie? 206 00:09:06,650 --> 00:09:07,970 >> GEHOOR: [onhoorbaar]. 207 00:09:07,970 --> 00:09:08,300 >> HANNAH Blumberg: Ja. 208 00:09:08,300 --> 00:09:09,550 In teorie, dit is konstante tyd. 209 00:09:09,550 --> 00:09:13,230 Dit gaan slegs om die grootte van wees die woord wat jy wil om op te kyk. 210 00:09:13,230 --> 00:09:15,950 Selfs as ons voeg 'n zillion meer woorde om ons Trie, 211 00:09:15,950 --> 00:09:18,160 dit gaan nie om ons te neem langer te bepaal 212 00:09:18,160 --> 00:09:19,690 As 'n gegewe woord in die Trie. 213 00:09:19,690 --> 00:09:21,412 So dit is baie mooi. 214 00:09:21,412 --> 00:09:23,697 >> GEHOOR: Het jy net inisialiseer dat array? 215 00:09:23,697 --> 00:09:24,780 Jy gemis het 'n punt of twee. 216 00:09:24,780 --> 00:09:26,130 Kan jy net praat oor wat vir 'n tweede? 217 00:09:26,130 --> 00:09:26,680 >> HANNAH Blumberg: Sure, absoluut. 218 00:09:26,680 --> 00:09:27,590 Goeie vraag. 219 00:09:27,590 --> 00:09:31,140 Die vraag was, het ons het 'n verskeidenheid wat 220 00:09:31,140 --> 00:09:34,180 gaan node ster het as in teenstelling met net node, reg? 221 00:09:34,180 --> 00:09:35,180 Koel. 222 00:09:35,180 --> 00:09:37,990 So hier wat ons sê is ons verskeidenheid is net 223 00:09:37,990 --> 00:09:40,035 gaan verwysings na ander skikkings wees. 224 00:09:40,035 --> 00:09:42,910 So dit is essentially-- dit soort van voel soos 'n geskakelde lys op hierdie manier 225 00:09:42,910 --> 00:09:46,620 waar elkeen van hierdie kinders net wys na die volgende knoop. 226 00:09:46,620 --> 00:09:49,030 >> En die manier waarop ons eintlik bepaal, hey, OK, 227 00:09:49,030 --> 00:09:52,320 ons het herhaal deur 'n hele woord is die woord in die woordeboek, 228 00:09:52,320 --> 00:09:54,476 Ons kyk net hierdie is_word. 229 00:09:54,476 --> 00:09:55,100 N groot vraag. 230 00:09:55,100 --> 00:09:55,675 Ja. 231 00:09:55,675 --> 00:09:56,216 GEHOOR: OK. 232 00:09:56,216 --> 00:09:57,470 So wat was die runtime vir die Trie? 233 00:09:57,470 --> 00:09:58,386 >> HANNAH Blumberg: Natuurlik. 234 00:09:58,386 --> 00:10:01,852 So die runtime vir 'n Trie vir lookup gaan konstante tyd. 235 00:10:01,852 --> 00:10:04,310 So dit is net gaan die wees aantal letters in die woord. 236 00:10:04,310 --> 00:10:06,310 Dit is nie afhanklik van die grootte van die woordeboek 237 00:10:06,310 --> 00:10:09,510 of die grootte van die data-struktuur. 238 00:10:09,510 --> 00:10:12,170 So hier is 'n effens makliker voorbeeld. 239 00:10:12,170 --> 00:10:15,430 >> In hierdie geval, kan jy dit sien die woord kolf is in die woordeboek 240 00:10:15,430 --> 00:10:18,900 en jy het zoom, maar jy nie iets soos dieretuin nie. 241 00:10:18,900 --> 00:10:20,050 Hoe sou ons dieretuin? 242 00:10:20,050 --> 00:10:24,276 Hoe weet ons dieretuin toe te voeg tot ons woordeboek, ons Trie? 243 00:10:24,276 --> 00:10:24,776 Ja. 244 00:10:24,776 --> 00:10:27,014 >> GEHOOR: Maak is_word waar vir die [onhoorbaar]. 245 00:10:27,014 --> 00:10:27,930 HANNAH Blumberg: Goed. 246 00:10:27,930 --> 00:10:31,731 So ons wil sê Z-O-O, en dan wil ons wil om te kyk af dat box as well. 247 00:10:31,731 --> 00:10:32,230 Groot. 248 00:10:32,230 --> 00:10:35,160 249 00:10:35,160 --> 00:10:37,930 Kom ons vergelyk baie kortliks probeer versus hash tabelle. 250 00:10:37,930 --> 00:10:39,770 Drieë is werklik 'n groot want, soos ons sê, 251 00:10:39,770 --> 00:10:41,610 hulle verskaf konstante-time lookup. 252 00:10:41,610 --> 00:10:44,285 Maar die groot nadeel is hulle is humongous. 253 00:10:44,285 --> 00:10:46,160 Jy kan die sin te kry, selfs deur te kyk na dit, 254 00:10:46,160 --> 00:10:48,454 dat dit gaan neem 'n groot hoeveelheid van die geheue. 255 00:10:48,454 --> 00:10:50,620 So hulle gaan veel om te wees groter as hash tabelle, 256 00:10:50,620 --> 00:10:52,270 maar hulle gaan om te gee ons baie vinniger lookup tye. 257 00:10:52,270 --> 00:10:54,478 So dit is soort van jou nadeel, wat jy omgee, 258 00:10:54,478 --> 00:10:57,350 of dit nou spoed of geheue. 259 00:10:57,350 --> 00:11:02,251 Enige vrae oor enige van daardie, al die C data strukture. 260 00:11:02,251 --> 00:11:02,750 Mooi. 261 00:11:02,750 --> 00:11:03,250 OK. 262 00:11:03,250 --> 00:11:07,322 Ons gaan aan te beweeg na 'n bietjie bietjie van web ontwikkeling met Maria. 263 00:11:07,322 --> 00:11:08,280 MARIA ZLATKOVA: Lovely. 264 00:11:08,280 --> 00:11:09,036 OK. 265 00:11:09,036 --> 00:11:10,380 >> HANNAH Blumberg: Jy kan my laptop gebruik. 266 00:11:10,380 --> 00:11:11,255 >> MARIA ZLATKOVA: Nice. 267 00:11:11,255 --> 00:11:13,320 268 00:11:13,320 --> 00:11:14,912 OK, cool. 269 00:11:14,912 --> 00:11:17,120 Soos ons nou beweeg na web ontwikkeling, het ons gepraat 'n bietjie 270 00:11:17,120 --> 00:11:20,680 oor die verandering van regte van lêers en gidse 271 00:11:20,680 --> 00:11:24,190 sodat hulle toeganklik wees aan ander gebruikers, na die wêreld, 272 00:11:24,190 --> 00:11:28,640 en sodat ons kan sien hoe basies kan ons hulle oor te dra 273 00:11:28,640 --> 00:11:32,600 wanneer ons dinge soos webwerwe te ontwikkel wat ons het meestal te doen. 274 00:11:32,600 --> 00:11:36,400 >> So het ons die chmod opdrag, wat is verandering af, basies. 275 00:11:36,400 --> 00:11:39,300 Dit is 'n Linux command en dit verander regte toegang 276 00:11:39,300 --> 00:11:40,410 lêer stelsel voorwerpe. 277 00:11:40,410 --> 00:11:43,370 En 'n lêer stelsel voorwerp is net 'n gids, 'n lêer, 278 00:11:43,370 --> 00:11:46,810 enigiets wat jy kan verander die regte van. 279 00:11:46,810 --> 00:11:53,750 >> So na die permissies sien, ons tik die opdrag ls, lys, -l. 280 00:11:53,750 --> 00:11:56,500 En toe ons tik dat ons gewoonlik sien 'n paar regte 281 00:11:56,500 --> 00:11:59,660 wat lyk soort van soos hierdie in die voorkant van 'n gids naam. 282 00:11:59,660 --> 00:12:01,260 So d verwys na gids. 283 00:12:01,260 --> 00:12:05,930 En dan het ons drie drieklanke wat basies 284 00:12:05,930 --> 00:12:11,675 verwys na die regte van óf 'n gebruiker, 'n groep, of die wêreld. 285 00:12:11,675 --> 00:12:16,490 >> Die tipes regte wat ons kan het vir die drie groepe mense 286 00:12:16,490 --> 00:12:20,830 is óf r vir lees, w vir skryf, en x te voer. 287 00:12:20,830 --> 00:12:23,650 En ons kan dié vir het die groep en die wêreld as well. 288 00:12:23,650 --> 00:12:26,940 Die moeilike ding is dat soms wanneer ons tik die chmod opdrag, 289 00:12:26,940 --> 00:12:32,960 Ons sou 'n paar nommer intik wat bestaan ​​uit drie stukkies. 290 00:12:32,960 --> 00:12:36,990 So kan ons doen soos 777 en wat basies 291 00:12:36,990 --> 00:12:40,450 verwys na die toegevoegde waarde van elk van hierdie drieklanke 292 00:12:40,450 --> 00:12:45,060 omdat r sou verwys na 4, w sou verwys na 2 en x sal verwys na 1, 293 00:12:45,060 --> 00:12:50,020 sodat wanneer opgetel, elkeen van die getalle sou tot 'n kumulatiewe aantal kom 294 00:12:50,020 --> 00:12:52,750 om 'n kumulatiewe waarde tussen 0 en 7. 295 00:12:52,750 --> 00:12:55,150 Sodat ons kan ook '0 want geen regte nie. 296 00:12:55,150 --> 00:12:58,200 En dit sou basies gee ons die regte vir óf die gebruiker, 297 00:12:58,200 --> 00:13:00,450 die groep, of die wêreld. 298 00:13:00,450 --> 00:13:02,620 Enige vrae oor hierdie so ver? 299 00:13:02,620 --> 00:13:05,331 >> GEHOOR: Jy het gesê gelees was 4? 300 00:13:05,331 --> 00:13:06,164 MARIA ZLATKOVA: Ja. 301 00:13:06,164 --> 00:13:07,568 GEHOOR: [onhoorbaar]. 302 00:13:07,568 --> 00:13:08,504 HANNAH Blumberg: Yup. 303 00:13:08,504 --> 00:13:11,790 GEHOOR: En dan deur die toevoeging van al die ander sou jou nommer aan te dui. 304 00:13:11,790 --> 00:13:12,665 MARIA ZLATKOVA: Ja. 305 00:13:12,665 --> 00:13:14,970 Ja. 306 00:13:14,970 --> 00:13:17,810 Dit is 'n groot vrae. 307 00:13:17,810 --> 00:13:20,490 Mooi. 308 00:13:20,490 --> 00:13:25,340 Volgende, ons gespring in HTML en 'n bietjie meer oor web-ontwikkeling. 309 00:13:25,340 --> 00:13:27,990 So HTML beteken net HyperText Markup Language. 310 00:13:27,990 --> 00:13:30,460 En dit is die opmaak taal wat 'n standaard 311 00:13:30,460 --> 00:13:32,720 dat dit gebruik word om webblaaie te skep. 312 00:13:32,720 --> 00:13:35,750 >> Dit is 'n opmaak taal genoem want dit is nie eintlik saamgestel. 313 00:13:35,750 --> 00:13:40,310 Dit sê nie hoe sommige kode moet uitgevoer word of iets soos dit. 314 00:13:40,310 --> 00:13:44,800 Dit afbakening regverdige en beskryf hoe 'n web 315 00:13:44,800 --> 00:13:46,840 bladsy moet opgestel met elkeen van die elemente 316 00:13:46,840 --> 00:13:48,460 en hoe hulle moet kyk na die gebruiker. 317 00:13:48,460 --> 00:13:53,090 318 00:13:53,090 --> 00:13:57,110 >> Sommige van die HTML tags dat ons gegaan oor die volgende. 319 00:13:57,110 --> 00:14:00,500 Al ons HTML dokumente begin met die DOCTYPE HTML. 320 00:14:00,500 --> 00:14:02,550 Dan het ons altyd die html tag. 321 00:14:02,550 --> 00:14:03,930 Ons het 'n kop en 'n liggaam. 322 00:14:03,930 --> 00:14:07,890 En dit is belangrik dat HTML het hierdie soort van geneste strukture 323 00:14:07,890 --> 00:14:09,280 want dit is baie duidelik. 324 00:14:09,280 --> 00:14:13,200 En dan word dit baie duidelik wanneer ons nodig om naby tags oop te maak en eintlik. 325 00:14:13,200 --> 00:14:18,400 En ons moet altyd te sluit tags dat ons oopgemaak het. 326 00:14:18,400 --> 00:14:23,170 >> En hier het ons 'n paar van die tipes van die dinge wat voorlê wat ons wil hê. 327 00:14:23,170 --> 00:14:26,580 So het ons byvoorbeeld die titel van CS50. 328 00:14:26,580 --> 00:14:31,980 En dan eintlik ons kan 'n stylblad skakel 329 00:14:31,980 --> 00:14:34,030 wat bepaal hoe ons die styl van ons webwerf. 330 00:14:34,030 --> 00:14:35,650 Dit is CSS. 331 00:14:35,650 --> 00:14:39,320 Ons gaan om te gaan oor dit in die volgende paar skyfies as well. 332 00:14:39,320 --> 00:14:42,580 >> In die liggaam, het ons sommige klasse en ID's. 333 00:14:42,580 --> 00:14:45,860 En as 'n herinnering, weer, ID's is uniek en klasse 334 00:14:45,860 --> 00:14:47,390 kan toegeskryf word aan verskeie items. 335 00:14:47,390 --> 00:14:52,110 En wat net beteken dat kan ons klasse en ID's gebruik 336 00:14:52,110 --> 00:14:55,860 binne ander structures-- so, want Byvoorbeeld, binne CSS lêers of styl 337 00:14:55,860 --> 00:15:00,940 sheets-- om te verwys na spesifieke elemente en basies sê dat ons wil styl 338 00:15:00,940 --> 00:15:03,280 of ontwerp 'n element in sommige besondere manier. 339 00:15:03,280 --> 00:15:06,440 En ons verwys na hulle deur hulle ID's en klasse. 340 00:15:06,440 --> 00:15:09,870 En ons kan ook verwys na verskillende dinge deur tags so goed, 341 00:15:09,870 --> 00:15:13,830 maar ID's en klasse net 'n paar te gee ons veelsydigheid en wat spesifiek ons 342 00:15:13,830 --> 00:15:15,850 wil om te verwys na. 343 00:15:15,850 --> 00:15:19,620 >> Dus net 'n voorbeeld. 344 00:15:19,620 --> 00:15:22,730 Ons kan, weer, binne 'n CSS-lêer waar ons 345 00:15:22,730 --> 00:15:25,770 wil 'n paar te definieer style-- so kleure, fonts, 346 00:15:25,770 --> 00:15:30,340 en dinge soos that-- ons kan definieer die styl vir 'n liggaam. 347 00:15:30,340 --> 00:15:32,640 Sodat dit sou definieer vir die hele liggaam tag. 348 00:15:32,640 --> 00:15:36,160 Maar dan kan ons ook te definieer 'n styl vir 'n #title. 349 00:15:36,160 --> 00:15:40,390 En weer, die hashtag verwys na ons ID en die dot verwys na ons klas. 350 00:15:40,390 --> 00:15:44,760 >> En dan vir die info, ons kan ook 'n paar eienskappe. 351 00:15:44,760 --> 00:15:49,750 En wanneer ons terug te gaan, het ons ons klas genoem inligting en ons ID titel. 352 00:15:49,750 --> 00:15:53,422 En ons kan sien dat ons verwys aan hulle deur #title en info. 353 00:15:53,422 --> 00:15:55,380 GEHOOR: Sou jy sê hashtag [? my neem? ?] 354 00:15:55,380 --> 00:15:55,725 MARIA ZLATKOVA: Jammer? 355 00:15:55,725 --> 00:15:58,120 GEHOOR: Sou jy sê hashtag [? my neem? ?] 356 00:15:58,120 --> 00:16:01,400 MARIA ZLATKOVA: hashtag beteken ID, so #title 357 00:16:01,400 --> 00:16:07,890 verwys na wat ookal elemente hierdie ID genoem titel. 358 00:16:07,890 --> 00:16:10,735 En dan is die dot verwys na 'n klas. 359 00:16:10,735 --> 00:16:14,590 So info verwys na hierdie element want dit het die klas inligting. 360 00:16:14,590 --> 00:16:15,090 Yup. 361 00:16:15,090 --> 00:16:17,905 >> GEHOOR: Hoekom dink jy onderskei hulle in die HTML? 362 00:16:17,905 --> 00:16:20,985 Waarom sê jy sekere dinge ID's en sekere dinge klas? 363 00:16:20,985 --> 00:16:22,610 MARIA ZLATKOVA: Dit is net tot you-- 364 00:16:22,610 --> 00:16:24,151 HANNAH Blumberg: Herhaal die vraag. 365 00:16:24,151 --> 00:16:25,370 MARIA ZLATKOVA: Ag, jammer. 366 00:16:25,370 --> 00:16:29,480 Hoekom het ons sekere elemente onderskei as ID's en ander elemente as klasse? 367 00:16:29,480 --> 00:16:34,760 Dit is net omdat dit regtig dikwels 'n ontwerp keuse. 368 00:16:34,760 --> 00:16:38,520 Dit gee jou 'n baie veelsydigheid in om 369 00:16:38,520 --> 00:16:43,250 staat om te sê ek wil hê dat hierdie spesifieke item om hierdie ID te hê, want hulle wil 370 00:16:43,250 --> 00:16:45,300 om 'n baie van die dinge te doen met dit, en ek het net 371 00:16:45,300 --> 00:16:50,010 wil 'n styl te definieer, sekere styl of kleur wat ookal vir daardie item. 372 00:16:50,010 --> 00:16:52,630 En die manier om dit te doen is net gee dit 'n ID. 373 00:16:52,630 --> 00:16:55,060 >> En dan as ek wil hê 'n paar van die verskillende items 374 00:16:55,060 --> 00:16:58,940 gesien dat, in plaas van gaan en die opstel van their-- 375 00:16:58,940 --> 00:17:03,840 in plaas van om dit te doen deur tag omdat die tag sou 376 00:17:03,840 --> 00:17:07,369 stel die sel vir die hele tag vir elke keer dat tag gebruik word, 377 00:17:07,369 --> 00:17:09,740 jy kan 'n klas stel om verskeie items. 378 00:17:09,740 --> 00:17:15,109 En dan net toegang daardie klas en sê Ek wil hierdie klas styl wat manier. 379 00:17:15,109 --> 00:17:17,579 >> En weer, die klas kan wees verskeie verskillende items 380 00:17:17,579 --> 00:17:21,150 en die ID het om uniek te wees. 381 00:17:21,150 --> 00:17:21,849 Groot vrae. 382 00:17:21,849 --> 00:17:25,339 Enige ander vrae? 383 00:17:25,339 --> 00:17:26,220 OK, awesome. 384 00:17:26,220 --> 00:17:30,680 385 00:17:30,680 --> 00:17:35,330 Weereens, dit is hoe hierdie keurders is waarna verwys word in CSS, met hashtag, 386 00:17:35,330 --> 00:17:40,031 met dot, of sonder om iets vir toeken die styl van 'n paar tag, 387 00:17:40,031 --> 00:17:40,530 soos die liggaam. 388 00:17:40,530 --> 00:17:43,500 389 00:17:43,500 --> 00:17:47,860 En hier het ons die algemene sintaksis van hoe dit gedoen word. 390 00:17:47,860 --> 00:17:52,830 391 00:17:52,830 --> 00:17:55,680 >> Om 'n paar beste herhaal praktyke vir HTML en CSS, 392 00:17:55,680 --> 00:17:59,170 ons moet, weer, sluit alle die HTML tags dat ons oop. 393 00:17:59,170 --> 00:18:03,950 En wat ons aanbeveel te doen vir jou finale projekte, 394 00:18:03,950 --> 00:18:10,560 sowel as vir die CS50 Finansies, is om te maak seker dat al jou HTML bekragtig. 395 00:18:10,560 --> 00:18:12,920 En dit is gedoen met die W3 Validator. 396 00:18:12,920 --> 00:18:16,940 >> En dan wat ons gedoen het en wat ons beveel doen 397 00:18:16,940 --> 00:18:19,790 skei styl, so CSS van opmaak HTML. 398 00:18:19,790 --> 00:18:24,210 So enigiets wat verband hou met hoe jou bladsy gaan kyk visueel 399 00:18:24,210 --> 00:18:27,330 en hoe dit gaan verander moet gaan in 'n CSS-dokument. 400 00:18:27,330 --> 00:18:33,880 En dan jou opmaak sê hoe dinge in verhouding tot mekaar is HTML, 401 00:18:33,880 --> 00:18:37,550 en dat moet binne te gaan jou HTML dokumente. 402 00:18:37,550 --> 00:18:38,590 Enige vrae? 403 00:18:38,590 --> 00:18:39,226 Mhm. 404 00:18:39,226 --> 00:18:42,628 >> GEHOOR: Wat presies gaan met die page validation 405 00:18:42,628 --> 00:18:47,945 wanneer ons validering van die HTML wat [onhoorbaar] geskep? 406 00:18:47,945 --> 00:18:49,850 >> MARIA ZLATKOVA: So what-- dink jy. 407 00:18:49,850 --> 00:18:53,020 So wat presies gaan met page validation 408 00:18:53,020 --> 00:18:55,570 en waarom moet ons dit doen? 409 00:18:55,570 --> 00:18:59,180 Basies, moet ons dit doen want baie van die tye, die leser, 410 00:18:59,180 --> 00:19:01,390 As jy nie 'n tag sluit of iets soos dit, 411 00:19:01,390 --> 00:19:05,680 die leser gaan nog lewer 'n bladsy en dalk nog werk, 412 00:19:05,680 --> 00:19:10,840 maar dit is die beste praktyk om seker te maak dat die jy, weer, gesluit al jou tags, 413 00:19:10,840 --> 00:19:13,190 dat al jou elemente die manier waarop dit behoort te wees, 414 00:19:13,190 --> 00:19:18,470 en basies dat dit deur die konvensies wat vooraf. 415 00:19:18,470 --> 00:19:21,970 >> Dit is, weer, net 'n ding wat jy moet 416 00:19:21,970 --> 00:19:24,040 leer om te doen, in teenstelling met wat 417 00:19:24,040 --> 00:19:25,696 sloppier kode en dinge soos dat. 418 00:19:25,696 --> 00:19:26,688 Ja. 419 00:19:26,688 --> 00:19:27,680 Jammer. 420 00:19:27,680 --> 00:19:29,221 Ek het gedink jy is die verhoging van jou hand. 421 00:19:29,221 --> 00:19:31,240 GEHOOR: Nee, ek was net [onhoorbaar]. 422 00:19:31,240 --> 00:19:33,800 >> MARIA ZLATKOVA: OK. 423 00:19:33,800 --> 00:19:34,640 >> GEHOOR: Dankie. 424 00:19:34,640 --> 00:19:36,181 >> MARIA ZLATKOVA: Natuurlik, baie dankie. 425 00:19:36,181 --> 00:19:41,680 So weer, gaan op in hoe inligting oorgedra 426 00:19:41,680 --> 00:19:44,630 en kommunikasie-modelle om inligting oor te dra. 427 00:19:44,630 --> 00:19:45,730 TCP / IP. 428 00:19:45,730 --> 00:19:48,600 TCP beteken net Transmissie Control Protocol en IP 429 00:19:48,600 --> 00:19:51,260 verwys na Internet Protocol. 430 00:19:51,260 --> 00:19:54,275 En dat net verwys na die manier waarop data afgelewer word. 431 00:19:54,275 --> 00:19:59,470 432 00:19:59,470 --> 00:20:02,710 >> As ons 'n paar data wat moet afgelewer word by so you-- 433 00:20:02,710 --> 00:20:06,770 jy 'n versoek vir 'n sekere bediener te maak. 434 00:20:06,770 --> 00:20:09,800 Byvoorbeeld, wanneer ons probeer om toegang tot cs50.net, 435 00:20:09,800 --> 00:20:12,420 ons het 'n versoek aan die CS50 bediener en ons 436 00:20:12,420 --> 00:20:14,720 sien dat ons wil te kry hierdie soort van inligting. 437 00:20:14,720 --> 00:20:19,294 En dan is gebaseer op die protokol hoe hierdie inligting word gelewer, 438 00:20:19,294 --> 00:20:21,460 die bediener gee inligting terug na ons, die kliënt. 439 00:20:21,460 --> 00:20:25,590 En dan is ons in staat om te sien die inligting vir die bladsy 440 00:20:25,590 --> 00:20:26,390 en dan is dit gebruik. 441 00:20:26,390 --> 00:20:29,300 442 00:20:29,300 --> 00:20:33,050 >> So dan Hypertext Transfer Protocol is net nog 'n protokol of stel 443 00:20:33,050 --> 00:20:37,470 konvensies wat bepaal hoe die webblaaier en die web bediener 444 00:20:37,470 --> 00:20:38,890 moet kommunikeer. 445 00:20:38,890 --> 00:20:43,730 En om dit alles saam, HTTP, weer, 446 00:20:43,730 --> 00:20:50,960 net bepaal hoe hierdie hiperteks gedefinieer deur die HTML dat ons het gewerk nie, 447 00:20:50,960 --> 00:20:59,500 hoe dit aan jou gelewer moet word en hoe die data wat gelewer word aan jou 448 00:20:59,500 --> 00:21:00,540 kry vir jou. 449 00:21:00,540 --> 00:21:05,990 >> En dit is hoekom, as jy ouens onthou uit 'n klas, het ons 'n baie versoeke 450 00:21:05,990 --> 00:21:08,970 en ons het 'n baie sintaksis vir hierdie versoeke dat ons 451 00:21:08,970 --> 00:21:10,250 gaan om te gaan oor nou. 452 00:21:10,250 --> 00:21:13,270 So weer, wanneer ons stuur 'n versoek om 'n bediener, 453 00:21:13,270 --> 00:21:15,920 ons het 'n paar van die dinge wat definieer. 454 00:21:15,920 --> 00:21:18,520 Dus moet ons die tipe vind versoek dat ons die opstel van. 455 00:21:18,520 --> 00:21:22,180 En weer, ons het, byvoorbeeld, GET is een tipe metode 456 00:21:22,180 --> 00:21:25,290 dat ons in ons versoek. 457 00:21:25,290 --> 00:21:31,710 >> En dan is HTTP / 1.1 net die protokol wat ons gebruik tans. 458 00:21:31,710 --> 00:21:34,224 459 00:21:34,224 --> 00:21:36,890 Die meeste van die tyd, wat gaan die protokol wat ons gebruik. 460 00:21:36,890 --> 00:21:40,290 So as jy 'n vraag soos dit op jou quiz. 461 00:21:40,290 --> 00:21:43,120 Dit is die konvensies dat ons so ver. 462 00:21:43,120 --> 00:21:46,580 >> Agteroorskuinsstreep verwys na watter soort van die dinge wat ons vra. 463 00:21:46,580 --> 00:21:52,810 Dan, ons gasheer is, byvoorbeeld, in hierdie geval, ons probeer om te gaan na google.com. 464 00:21:52,810 --> 00:21:57,070 So, dit is die waarde vir 'n leër. 465 00:21:57,070 --> 00:21:59,330 Dit is 'n tipe versoek wat kan gestuur word. 466 00:21:59,330 --> 00:22:02,890 >> En dan 'n tipe reaksie wat kan gestuur word, weer, op grond van hierdie protokol, 467 00:22:02,890 --> 00:22:05,190 weer, HTTP / 1.1. 468 00:22:05,190 --> 00:22:07,150 So wat is die HTTP weergawe weer. 469 00:22:07,150 --> 00:22:09,730 200 OK is net die status kode. 470 00:22:09,730 --> 00:22:12,860 En dat OK is net 'n frase gebaseer op die status kode. 471 00:22:12,860 --> 00:22:15,520 >> En dan is die Content-Type verwys na die tipe 472 00:22:15,520 --> 00:22:20,295 wat aan u teruggestuur wat vir daardie webblad wat jy ontvang 473 00:22:20,295 --> 00:22:22,570 en dat jou browser kan daarna te lewer. 474 00:22:22,570 --> 00:22:24,401 En dit is die teks / html. 475 00:22:24,401 --> 00:22:26,660 >> GEHOOR: Wat beteken 1,1 beteken? 476 00:22:26,660 --> 00:22:29,910 >> MARIA ZLATKOVA: Dit is net die weergawe of-- oh, wat beteken 1,1 beteken? 477 00:22:29,910 --> 00:22:37,075 Dit is net die weergawe, die HTTP weergawe van 'n protokol wat ons gebruik. 478 00:22:37,075 --> 00:22:37,700 N groot vraag. 479 00:22:37,700 --> 00:22:38,366 Ander vrae? 480 00:22:38,366 --> 00:22:41,222 481 00:22:41,222 --> 00:22:45,080 >> GEHOOR: Kan jy som Content-Type ware vinnig? 482 00:22:45,080 --> 00:22:48,150 >> MARIA ZLATKOVA: Sodat is wat die bediener. 483 00:22:48,150 --> 00:22:51,020 die tipe information-- wat inhoud type was die vrae. 484 00:22:51,020 --> 00:22:53,400 So dit was die tipe inligting wat jy terug te kry 485 00:22:53,400 --> 00:22:58,200 van die bediener, tipe data wat die leser kan dan 486 00:22:58,200 --> 00:23:00,604 lewer wat jy gebruik. 487 00:23:00,604 --> 00:23:03,020 GEHOOR: Is dit wat hierdie protokol is wat jy vertel om te doen? 488 00:23:03,020 --> 00:23:03,390 MARIA ZLATKOVA: Jammer? 489 00:23:03,390 --> 00:23:05,380 GEHOOR: Is dit wat die protokol sê? 490 00:23:05,380 --> 00:23:05,915 MARIA ZLATKOVA: Die protocol-- 491 00:23:05,915 --> 00:23:07,940 GEHOOR: --what die Content-Type is of what-- 492 00:23:07,940 --> 00:23:12,040 MARIA ZLATKOVA: Die protokol is gebaseer on-- wat is die protokol wat jy vertel? 493 00:23:12,040 --> 00:23:16,070 Dit is net die manier dat hierdie inligting 494 00:23:16,070 --> 00:23:18,610 is aan u gelewer gebaseer oor watter soort protokol 495 00:23:18,610 --> 00:23:21,830 is hierdie inligting het afgelewer terug na jou. 496 00:23:21,830 --> 00:23:23,500 Maak dit sin soort? 497 00:23:23,500 --> 00:23:28,320 498 00:23:28,320 --> 00:23:30,070 HANNAH Blumberg: Jy kan dink protokol 499 00:23:30,070 --> 00:23:33,300 as a-- Ek dink Professor Malan het dit beskryf 500 00:23:33,300 --> 00:23:36,910 in die klas as soort van soos a-- dit is soos die ekwivalent van menslike handshaking. 501 00:23:36,910 --> 00:23:44,930 Sê, soos, hey, ek is 'n versoek en ek weet hoe om HTTP van weergawe 1.1 hanteer. 502 00:23:44,930 --> 00:23:48,770 En dan is die bediener sê, oh, OK, I-- en albei bestaan ​​nie. 503 00:23:48,770 --> 00:23:51,337 Ek weet ook hoe om met HTTP / 1.1. 504 00:23:51,337 --> 00:23:53,170 En ek gaan om te gee jy 'n paar inhoud back. 505 00:23:53,170 --> 00:23:56,230 In hierdie geval, dit gaan te wees van die tipe teks / html. 506 00:23:56,230 --> 00:23:58,480 So dit is soort van net 'n manier van hulle vir communicating-- 507 00:23:58,480 --> 00:24:00,480 >> MARIA ZLATKOVA: Dis net bevestig dat jy 508 00:24:00,480 --> 00:24:03,290 beide deur dieselfde protokol en dat beide 509 00:24:03,290 --> 00:24:06,620 die kliënt en die server-- so die leser en die server-- 510 00:24:06,620 --> 00:24:09,280 soort van weet wat jy praat en het 511 00:24:09,280 --> 00:24:12,557 die konvensie vir die verbygaan in die data. 512 00:24:12,557 --> 00:24:17,022 >> GEHOOR: So het die Content-Type part-- die Content-Type teks / html-- dis 513 00:24:17,022 --> 00:24:18,521 'n aparte deel van die dieselfde boodskap? 514 00:24:18,521 --> 00:24:20,509 Of is dit deel van kom ons sê, 200? 515 00:24:20,509 --> 00:24:22,010 Maak 200 vertel hulle dat of is-- 516 00:24:22,010 --> 00:24:23,770 >> MARIA ZLATKOVA: 200 sê dit alles het OK. 517 00:24:23,770 --> 00:24:27,900 En dan die inhoud tipe is soort van 'n aparte deel van die dieselfde boodskap, 518 00:24:27,900 --> 00:24:34,274 en sê die ding wat ek Returned het hierdie tipe van teks / html. 519 00:24:34,274 --> 00:24:35,690 Dit is net om meer inligting. 520 00:24:35,690 --> 00:24:38,700 521 00:24:38,700 --> 00:24:39,995 Iets om by te voeg? 522 00:24:39,995 --> 00:24:40,495 OK. 523 00:24:40,495 --> 00:24:43,590 524 00:24:43,590 --> 00:24:46,530 >> Enige ander vrae oor hierdie? 525 00:24:46,530 --> 00:24:48,370 Awesome. 526 00:24:48,370 --> 00:24:54,070 So 'n paar ander HTTP status wat ons benewens kon kry om 200 OK, 527 00:24:54,070 --> 00:24:59,500 dié wat ons dalk gesien het moontlik 'n baie is 403 en 404. 528 00:24:59,500 --> 00:25:05,190 So 404, as jy probeer om toegang iets wat nie bestaan ​​nie. 529 00:25:05,190 --> 00:25:10,460 So byvoorbeeld, in jou CS50 Finansies psets, 530 00:25:10,460 --> 00:25:15,640 as jy het die lewering van quote.html en julle het die lêer nie, 531 00:25:15,640 --> 00:25:19,740 maar in plaas daarvan het jy quote.php dat sou lei tot 'n 404 nie gevind 532 00:25:19,740 --> 00:25:21,600 omdat die lêer kan nie bestaan ​​nie. 533 00:25:21,600 --> 00:25:25,690 >> Vir 'n 403 verbode, wat verwys na die regte. 534 00:25:25,690 --> 00:25:31,150 So as sommige lêer is nie leesbaar deur die wêreld, kan jy 'n 403 kry teruggekeer. 535 00:25:31,150 --> 00:25:34,510 536 00:25:34,510 --> 00:25:37,810 N paar ander wat jy dalk get-- 301, permanent verskuif; 537 00:25:37,810 --> 00:25:41,300 302, gevind; 304, Gewysig; 400, Bad Versoek; 538 00:25:41,300 --> 00:25:47,330 en dan Interne server fout vir 500 en 503, Diens nie beskikbaar nie. 539 00:25:47,330 --> 00:25:48,140 Ja. 540 00:25:48,140 --> 00:25:51,490 >> GEHOOR: Sal ons verwag om memoriseer al die status? 541 00:25:51,490 --> 00:25:53,739 MARIA ZLATKOVA: ek wil hê hulle op jou cheat sheet. 542 00:25:53,739 --> 00:25:55,146 [Gelag] 543 00:25:55,146 --> 00:25:59,954 GEHOOR: Is ons verwag om weet wat snellers elkeen? 544 00:25:59,954 --> 00:26:00,995 MARIA ZLATKOVA: Is hulle? 545 00:26:00,995 --> 00:26:03,870 HANNAH Blumberg: Vir dié wat ons het hardloop into-- so die vraag was-- 546 00:26:03,870 --> 00:26:08,010 MARIA ZLATKOVA: Is hulle verwag om weet wat elkeen van hierdie status 547 00:26:08,010 --> 00:26:09,330 kodes kan veroorsaak word deur? 548 00:26:09,330 --> 00:26:13,240 So vir die mense wat ons gebruik het en hy hardloop na, sou ek sê, ja. 549 00:26:13,240 --> 00:26:16,610 Dus het ons beslis gesien 200 OK en lesings in psets. 550 00:26:16,610 --> 00:26:19,071 Ons het gesien 403, 404. 551 00:26:19,071 --> 00:26:20,550 Vir ander kinders? 552 00:26:20,550 --> 00:26:22,690 >> HANNAH Blumberg: Ek sou sê 500 lyk fair game. 553 00:26:22,690 --> 00:26:23,330 >> MARIA ZLATKOVA: 500, ja. 554 00:26:23,330 --> 00:26:24,246 >> HANNAH Blumberg: Ja. 555 00:26:24,246 --> 00:26:27,006 Net 'n algemene gevoel van wat hulle veroorsaak. 556 00:26:27,006 --> 00:26:28,880 En ook net deur hierdie name, jy kan soort van 557 00:26:28,880 --> 00:26:32,890 soos maak 'n opgevoede raaiskoot as na wat eintlik veroorsaak het. 558 00:26:32,890 --> 00:26:36,919 Byvoorbeeld, beweeg permanent, waarskynlik die lêer is permanent verskuif. 559 00:26:36,919 --> 00:26:39,328 >> GEHOOR: Maar op 'n vorige eksamen, daar was 'n so 560 00:26:39,328 --> 00:26:41,050 hoe kan jy van ons verwag om te antwoord nie? 561 00:26:41,050 --> 00:26:42,883 >> HANNAH Blumberg: Dit was nul punte werd. 562 00:26:42,883 --> 00:26:45,870 Die vraag op 418 op die teepot is tegnies 'n HTTP status, 563 00:26:45,870 --> 00:26:47,090 maar dit was nul punte werd. 564 00:26:47,090 --> 00:26:48,320 Natuurlik, jy is nie verwag om hulle te leer ken. 565 00:26:48,320 --> 00:26:49,670 >> GEHOOR: Is dit 'n regte een? 566 00:26:49,670 --> 00:26:51,970 >> HANNAH Blumberg: Dit is 'n ware een, maar dit beteken niks. 567 00:26:51,970 --> 00:26:52,700 Dit is net 'n grap. 568 00:26:52,700 --> 00:26:55,480 569 00:26:55,480 --> 00:26:57,010 Internet mense is snaaks. 570 00:26:57,010 --> 00:26:59,680 >> MARIA ZLATKOVA: Groot vrae, ouens. 571 00:26:59,680 --> 00:27:01,452 Enige ander vrae? 572 00:27:01,452 --> 00:27:04,891 >> GEHOOR: Wat is fout interne bediener? 573 00:27:04,891 --> 00:27:06,640 MARIA ZLATKOVA: Interne bediener fout net 574 00:27:06,640 --> 00:27:10,050 beteken dat jy gewees nie in staat om te kommunikeer 575 00:27:10,050 --> 00:27:13,400 met die bediener vir een of ander rede. 576 00:27:13,400 --> 00:27:15,400 So dit is nie noodwendig iets wat te doen het 577 00:27:15,400 --> 00:27:19,170 met die kliënt of iets soos dit. 578 00:27:19,170 --> 00:27:22,170 Ek weet nie van enige spesifieke voorbeeld wat ons het gegaan oor om te verduidelik, 579 00:27:22,170 --> 00:27:23,000 maar ja. 580 00:27:23,000 --> 00:27:23,250 >> HANNAH Blumberg: Natuurlik. 581 00:27:23,250 --> 00:27:25,625 So byvoorbeeld, soos laat sê jy is besig om op mashup 582 00:27:25,625 --> 00:27:30,440 en 'n Google-bediener afgegaan vir 'n paar Daarom, 'n kragonderbreking, kom ons sê. 583 00:27:30,440 --> 00:27:33,400 Dit sou 'n interne bediener fout of 'n soort of-- soos jy 584 00:27:33,400 --> 00:27:34,630 sou nie 'n antwoord terug te kry. 585 00:27:34,630 --> 00:27:35,260 >> MARIA ZLATKOVA: Ja. 586 00:27:35,260 --> 00:27:37,050 Dis net wanneer jy nie in staat om te kommunikeer 587 00:27:37,050 --> 00:27:40,299 met die bediener vir een of ander rede, omdat dit gaan af of 'n ander rede. 588 00:27:40,299 --> 00:27:44,430 589 00:27:44,430 --> 00:27:47,690 So spring in PHP. 590 00:27:47,690 --> 00:27:49,930 PHP, in teenstelling met HTML, is 'n programmeertaal. 591 00:27:49,930 --> 00:27:54,820 En ons begin om dit te gebruik, want dit is baie nuttig vir die web-ontwikkeling. 592 00:27:54,820 --> 00:27:56,940 >> Ons eerste gebruik dit in CS50 Finansies. 593 00:27:56,940 --> 00:28:02,240 En dit help basies bring ons saam hierdie opmaak, die ontwerp, 594 00:28:02,240 --> 00:28:07,460 en hoe ons eintlik inligting gebruik om dinge te vertoon op 'n webblad. 595 00:28:07,460 --> 00:28:11,870 So PHP self beteken PHP Hypertext Preprocessor, 596 00:28:11,870 --> 00:28:15,360 so dit is 'n rekursiewe backnorym deur self. 597 00:28:15,360 --> 00:28:22,330 En etikette opening vir PHP ons links en regs-pyltjies met die vraagtekens 598 00:28:22,330 --> 00:28:23,060 en PHP. 599 00:28:23,060 --> 00:28:25,890 >> So ons het reeds 'n klomp van dit gesien het. 600 00:28:25,890 --> 00:28:29,150 Nou, ons is maar net gaan om te gaan oor sommige van die basiese dinge oor dit. 601 00:28:29,150 --> 00:28:32,280 So met PHP, die veranderlike name begin met dollar-teken. 602 00:28:32,280 --> 00:28:35,660 Ons het nie spesifiseer, weer, 'n veranderlike tik nie. 603 00:28:35,660 --> 00:28:38,450 Net soos ons gedoen het met C, Ons het nie nodig om dit te doen. 604 00:28:38,450 --> 00:28:41,670 605 00:28:41,670 --> 00:28:44,490 >> Ons kan nie 'n klomp van die verskillende doen dinge met veranderlikes. 606 00:28:44,490 --> 00:28:47,750 Ons kan hulle saam deur concatenating hulle 607 00:28:47,750 --> 00:28:52,900 met die dot-notasie, wat ons kon nie weer doen in C. 608 00:28:52,900 --> 00:28:57,490 Weereens, ons het 'n bietjie meer veelsydigheid met PHP in terme van veranderlikes. 609 00:28:57,490 --> 00:29:00,080 Weereens, ons het nie 'n hooffunksie. 610 00:29:00,080 --> 00:29:03,370 >> En PHP geïnterpreteer in teenstelling met saamgestel, 611 00:29:03,370 --> 00:29:09,970 Dus net hoe ons het vir C lêers, ons het nie om dit te doen vir PHP. 612 00:29:09,970 --> 00:29:15,440 Maar eerder die manier waarop die taal word gelei deur die self, is dit geïnterpreteer. 613 00:29:15,440 --> 00:29:18,550 En dan losweg getik net beteken dat ons 614 00:29:18,550 --> 00:29:22,490 nie aan 'n veranderlike spesifiseer tipe en die veranderlike tipes 615 00:29:22,490 --> 00:29:25,415 verstaan ​​tydens looptyd. 616 00:29:25,415 --> 00:29:29,185 >> GEHOOR: Maar wat het jy bedoel met dot aaneenskakellling? 617 00:29:29,185 --> 00:29:30,060 MARIA ZLATKOVA: Natuurlik. 618 00:29:30,060 --> 00:29:37,660 Wanneer ons wil dinge saam op te sit so as ons het 'n paar veranderlike wat 619 00:29:37,660 --> 00:29:41,500 het die waarde van 3 en 'n ander het ons veranderlike wat die waarde van string gehad het, 620 00:29:41,500 --> 00:29:45,920 ons kon die veranderlikes saam deur 'n dot in tussen hulle 621 00:29:45,920 --> 00:29:46,970 en concatenating hulle. 622 00:29:46,970 --> 00:29:52,670 Of ons kan 'n te skep veranderlike genoem naam 623 00:29:52,670 --> 00:29:56,900 en sit dit saam met concatenating twee stringe. 624 00:29:56,900 --> 00:30:00,680 >> So as ons het 'n string in dubbel aanhalings en ons het 'n dot nadat dit, 625 00:30:00,680 --> 00:30:03,660 en dan het ons nog 'n string, wat sou 'n string heeltemal te skep. 626 00:30:03,660 --> 00:30:05,242 >> GEHOOR: OK. 627 00:30:05,242 --> 00:30:06,450 MARIA Letland: Was dit duidelik? 628 00:30:06,450 --> 00:30:07,099 GEHOOR: Ja. 629 00:30:07,099 --> 00:30:07,890 MARIA ZLATKOVA: OK. 630 00:30:07,890 --> 00:30:08,766 Ja. 631 00:30:08,766 --> 00:30:11,146 >> GEHOOR: Wanneer jy sê eerder as geïnterpreteer saamgestel, 632 00:30:11,146 --> 00:30:14,160 praat jy jy nie moet so spesifiek wanneer om te wees 633 00:30:14,160 --> 00:30:15,906 dit kom PHP versus C? 634 00:30:15,906 --> 00:30:18,085 635 00:30:18,085 --> 00:30:20,710 MARIA ZLATKOVA: Wanneer ons sê geïnterpreteer teenoor saamgestel, 636 00:30:20,710 --> 00:30:21,850 wat bedoel ons? 637 00:30:21,850 --> 00:30:26,220 So dit beteken dat ons nie nodig uitvoerbare lêers PHP hardloop. 638 00:30:26,220 --> 00:30:29,870 Dit beteken dat dit loop soos dit gaan. 639 00:30:29,870 --> 00:30:31,650 Maak dit sin? 640 00:30:31,650 --> 00:30:32,495 'N bietjie meer. 641 00:30:32,495 --> 00:30:34,620 HANNAH Blumberg: So jy kan dink van 'n tolk 642 00:30:34,620 --> 00:30:38,980 as 'n ander program wat verantwoordelik is vir lyn gaan deur lyn deur PHP 643 00:30:38,980 --> 00:30:42,745 en eintlik die uitvoering van dit, in teenstelling die samestelling van dit alles neer te binêre. 644 00:30:42,745 --> 00:30:46,050 Dit maak nie eintlik iets beteken oor hoe spesifieke ons nodig het om te wees. 645 00:30:46,050 --> 00:30:49,470 Ons moet nog steeds om presies te wees, en dit nie doen nie vergeet om jou kommapunt, en maak seker 646 00:30:49,470 --> 00:30:51,470 jy jou dollar teken en dinge soos dat. 647 00:30:51,470 --> 00:30:52,240 Goeie vraag. 648 00:30:52,240 --> 00:30:53,115 >> MARIA ZLATKOVA: Ja. 649 00:30:53,115 --> 00:30:55,590 So reël vir reël, soos teenstelling met met C lêers, 650 00:30:55,590 --> 00:30:59,100 ons moet die hele finale maak voordat ons werklik kan hardloop nie. 651 00:30:59,100 --> 00:31:00,360 Dit is die grootste verskil. 652 00:31:00,360 --> 00:31:02,655 Maar weereens, kan ons nie regtig minder spesifiek. 653 00:31:02,655 --> 00:31:08,760 654 00:31:08,760 --> 00:31:13,950 So skikkings in PHP verteenwoordig eintlik 'n geordende kaart. 655 00:31:13,950 --> 00:31:17,550 >> So skikkings assosieer waardes sleutels. 656 00:31:17,550 --> 00:31:23,350 Die twee maniere om 'n verklaar skikking, gebaseer op die sintaksis, 657 00:31:23,350 --> 00:31:26,380 ons kan meer eksplisiete wees in sê ons het 'n verskeidenheid 658 00:31:26,380 --> 00:31:31,010 en ons het hierdie key1 dat kaarte te hierdie waarde1, key2 dat value2 kaarte. 659 00:31:31,010 --> 00:31:34,660 Of ons kan net 'n skikking dat die waardes self bevat 660 00:31:34,660 --> 00:31:38,360 en dan die sleutels is verstaan ​​op 'n manier. 661 00:31:38,360 --> 00:31:40,000 Enige vrae oor hierdie? 662 00:31:40,000 --> 00:31:42,500 >> GEHOOR: Wat sou die sleutels in die tweede voorbeeld? 663 00:31:42,500 --> 00:31:47,100 664 00:31:47,100 --> 00:31:47,920 0, 1, 2, 3? 665 00:31:47,920 --> 00:31:50,650 666 00:31:50,650 --> 00:31:55,780 >> MARIA ZLATKOVA: Byvoorbeeld, dit is net die sleutels in hierdie nie noodwendig 667 00:31:55,780 --> 00:31:56,550 maak 'n verskil. 668 00:31:56,550 --> 00:32:01,720 Hulle definieer hoe jy kan Gebruik die waardes binnekant van dit. 669 00:32:01,720 --> 00:32:08,660 So as ons het 'n foreach lus in PHP wat sou 670 00:32:08,660 --> 00:32:14,760 ons toelaat om te gaan deur al die waardes, ons kan gaan deur al die waardes, 671 00:32:14,760 --> 00:32:19,570 selfs as ons gehad het of het nie gedefinieer 'n spesifieke sleutel in die werf se 672 00:32:19,570 --> 00:32:20,820 vorige sintaksis. 673 00:32:20,820 --> 00:32:23,460 >> So selfs met hierdie soort van skikking, kon ons nog 674 00:32:23,460 --> 00:32:26,260 'n foreach lus wat gaan deur elke 675 00:32:26,260 --> 00:32:31,240 van die waardes in die sleutel in die skikking. 676 00:32:31,240 --> 00:32:36,180 So het die sintaksis van 'n foreach lus, begin ons met 'n skikking. 677 00:32:36,180 --> 00:32:38,720 678 00:32:38,720 --> 00:32:43,900 Dit $ arr veranderlike is ons werklike verskeidenheid dat ons omskryf in die vorige skyfie 679 00:32:43,900 --> 00:32:47,550 as waarde wat letterlik gaan deur elk van die waardes, 680 00:32:47,550 --> 00:32:50,122 ongeag of ons het 'n sleutel of nie. 681 00:32:50,122 --> 00:32:53,080 En dan kan ons iets doen met die waarde binnekant van die foreach lus. 682 00:32:53,080 --> 00:32:57,730 So weer, as ons het 'n skikking soos hierdie hier created-- 683 00:32:57,730 --> 00:33:03,270 so ons het die sleutel van cat en waarde van bar, die sleutel van roof en waarde van qux-- 684 00:33:03,270 --> 00:33:09,730 kan ons 'n foreach lus het dat gaan deur skikking as sleutel waarde 685 00:33:09,730 --> 00:33:11,900 en dan iets te doen met die sleutel en / of waarde. 686 00:33:11,900 --> 00:33:15,980 Maar ons hoef nie noodwendig moet 'n foreach sirkelroetes 687 00:33:15,980 --> 00:33:19,410 gaan deur skikking as die sleutel kaart om waarde. 688 00:33:19,410 --> 00:33:26,060 Ons kan gaan deur middel van die foreach lus skikking as waarde. 689 00:33:26,060 --> 00:33:28,990 >> HANNAH Blumberg: En ek dink aan- was jou vraag, wat 690 00:33:28,990 --> 00:33:31,229 is die implisiete indeks? 691 00:33:31,229 --> 00:33:31,895 GEHOOR: Kinda. 692 00:33:31,895 --> 00:33:32,240 MARIA ZLATKOVA: Oh. 693 00:33:32,240 --> 00:33:33,406 HANNAH Blumberg: Ja, ja. 694 00:33:33,406 --> 00:33:36,150 So basies, as jy nie spesifiseer 'n sleutel, is dit gaan wees 01. 695 00:33:36,150 --> 00:33:37,140 >> MARIA ZLATKOVA: Ja. 696 00:33:37,140 --> 00:33:41,718 Net soos met C, dit is zero geïndekseer as jy nie 'n sleutel spesifiseer. 697 00:33:41,718 --> 00:33:42,384 GEHOOR: Jammer. 698 00:33:42,384 --> 00:33:43,827 Kan jy probeer praat 'n bietjie harder? 699 00:33:43,827 --> 00:33:45,270 Ek het 'n bietjie van moeilikheid hoor alles. 700 00:33:45,270 --> 00:33:46,478 >> MARIA ZLATKOVA: Ek is so jammer. 701 00:33:46,478 --> 00:33:48,439 Ja natuurlik. 702 00:33:48,439 --> 00:33:50,230 So wil jy my om weer te gaan oor dit? 703 00:33:50,230 --> 00:33:51,680 Of is this-- 704 00:33:51,680 --> 00:33:54,930 GEHOOR: So op die vorige slide-- as jy kan net terug te gaan vir 'n sekonde. 705 00:33:54,930 --> 00:33:57,313 MARIA ZLATKOVA: Natuurlik, jammer. 706 00:33:57,313 --> 00:33:59,237 GEHOOR: So die tweede array hier nie 707 00:33:59,237 --> 00:34:04,135 lyk na 'n waarde te sleutel, soortvan [? kousaliteit. ?] 708 00:34:04,135 --> 00:34:05,343 MARIA ZLATKOVA: Right, regs. 709 00:34:05,343 --> 00:34:07,608 GEHOOR: So hoe werk dit wanneer jy sê dit is alles of niks. 710 00:34:07,608 --> 00:34:08,969 Vir my, wat lyk soos 'n [? cat?] reeds. 711 00:34:08,969 --> 00:34:10,093 >> MARIA ZLATKOVA: Ja, ja. 712 00:34:10,093 --> 00:34:12,969 So weer, dit is 'n bestel kaart in hierdie sin 713 00:34:12,969 --> 00:34:15,639 dat daar verstaan ​​word, byvoorbeeld, die indekse 714 00:34:15,639 --> 00:34:20,159 kan hier verstaan ​​word as 0, 1, 2, 3. 715 00:34:20,159 --> 00:34:25,929 Weereens, dit is met dié indekse is ons ekwivalent 716 00:34:25,929 --> 00:34:28,980 van 'sleutels gekarteer op waardes. 717 00:34:28,980 --> 00:34:34,710 So as ons belangrikste was 0-- jammer. 718 00:34:34,710 --> 00:34:36,524 >> HANNAH Blumberg: Nee, daar hier kalk. 719 00:34:36,524 --> 00:34:36,929 Dit is eintlik baie mooi. 720 00:34:36,929 --> 00:34:37,460 >> MARIA ZLATKOVA: Dit is 'n groot. 721 00:34:37,460 --> 00:34:38,260 OK. 722 00:34:38,260 --> 00:34:49,489 So weer, sou $ arr 0 wees die sleutel vir die waarde 1. 723 00:34:49,489 --> 00:34:51,138 0 sal die sleutel vir die waarde 1 wees. 724 00:34:51,138 --> 00:34:51,971 GEHOOR: Ek is jammer. 725 00:34:51,971 --> 00:34:53,190 Dit is onsigbaar. 726 00:34:53,190 --> 00:34:53,659 >> HANNAH Blumberg: Alle reg, Nevermind. 727 00:34:53,659 --> 00:34:54,980 Kryt was 'n slegte idee nie. 728 00:34:54,980 --> 00:34:58,030 Ek neem dit terug. 729 00:34:58,030 --> 00:35:01,425 Jy kan dink van die sleutels as 0 kaarte om die waarde 1. 730 00:35:01,425 --> 00:35:02,300 MARIA ZLATKOVA: Ja. 731 00:35:02,300 --> 00:35:04,630 So dit is 0, dit is 1, 2, 3. 732 00:35:04,630 --> 00:35:05,760 Dit kan jou sleutels. 733 00:35:05,760 --> 00:35:10,020 Jy kan as-- van hulle dink ja. 734 00:35:10,020 --> 00:35:12,740 So in plaas van om eksplisiete sleutels, hulle is 735 00:35:12,740 --> 00:35:17,180 soort van verstaan ​​as die indekse begin by 0. 736 00:35:17,180 --> 00:35:21,630 737 00:35:21,630 --> 00:35:24,820 Die kryt het nie gehelp nie. 738 00:35:24,820 --> 00:35:25,722 Ja. 739 00:35:25,722 --> 00:35:30,914 >> GEHOOR: Vir die foreach lus, as ons wou sien as die waarde, 740 00:35:30,914 --> 00:35:33,245 Dit sou net outomaties indeks 0? 741 00:35:33,245 --> 00:35:34,120 MARIA ZLATKOVA: Ja. 742 00:35:34,120 --> 00:35:35,745 Dit sou gaan deur elk van die waardes. 743 00:35:35,745 --> 00:35:39,130 GEHOOR: [onhoorbaar] as 0 of sou dit net nie 0? 744 00:35:39,130 --> 00:35:43,710 >> MARIA ZLATKOVA: Jy wil hê om te sê as dollar teken en dan 745 00:35:43,710 --> 00:35:46,266 sommige veranderlike naam, waarde. 746 00:35:46,266 --> 00:35:47,182 GEHOOR: [onhoorbaar]. 747 00:35:47,182 --> 00:35:50,048 748 00:35:50,048 --> 00:35:50,964 MARIA ZLATKOVA: Jammer? 749 00:35:50,964 --> 00:35:52,839 GEHOOR: Jammer, ek is net probeer om te onthou. 750 00:35:52,839 --> 00:35:57,190 Hoe sou jy doen as jy dit kan doen outomaties kruip is net 0 van? 751 00:35:57,190 --> 00:36:00,780 >> MARIA ZLATKOVA: So hoe sou jy dit doen as jy het nie spesifieke sleutel name? 752 00:36:00,780 --> 00:36:01,710 >> GEHOOR: Ja. 753 00:36:01,710 --> 00:36:07,820 >> MARIA ZLATKOVA: Jy wil net define-- jouself net sê as 'n paar naam. 754 00:36:07,820 --> 00:36:17,950 So in jou psets, julle mag onthou foreach $ ry as $ rye, 755 00:36:17,950 --> 00:36:24,610 ons geskep onsself hierdie $ ry sê ons wil om te gaan deur ry as $ rye. 756 00:36:24,610 --> 00:36:28,360 Selfs al het ons nie hierdie eksplisiete $ rye gedefinieer, 757 00:36:28,360 --> 00:36:31,990 ons kon net gaan sê dit kan ons sleutel wees, 758 00:36:31,990 --> 00:36:33,615 en net gaan deur elk van die waardes. 759 00:36:33,615 --> 00:36:37,295 760 00:36:37,295 --> 00:36:41,660 >> GEHOOR: So is waarde 'n nuwe veranderlike ons skep om te slaan [onhoorbaar]? 761 00:36:41,660 --> 00:36:46,820 762 00:36:46,820 --> 00:36:49,990 >> MARIA ZLATKOVA: So dit is nie inherent 'n nuwe veranderlike. 763 00:36:49,990 --> 00:37:00,310 Dit is 'n veranderlike wat verwys na die binnekant van die skikking aan elkeen van hulle. 764 00:37:00,310 --> 00:37:02,060 HANNAH Blumberg: Dis 'n nuwe veranderlike naam. 765 00:37:02,060 --> 00:37:04,018 MARIA ZLATKOVA: Ja, dit is 'n nuwe veranderlike naam, 766 00:37:04,018 --> 00:37:06,680 maar dit is nie inherently-- ja. 767 00:37:06,680 --> 00:37:08,950 Dit is net 'n nuwe veranderlike dat jy dit kan doen. 768 00:37:08,950 --> 00:37:12,680 So hoe doen ons gedoen het $ ry as $ rye, rye 769 00:37:12,680 --> 00:37:17,980 was 'n nuwe veranderlike naam wat ons kon skep in ons foreach lus. 770 00:37:17,980 --> 00:37:22,065 Dit hoef nie te preexist voor dit. 771 00:37:22,065 --> 00:37:25,777 >> GEHOOR: Kan jy gaan deur die logika vir elk, met behulp van die voorbeeld is daar? 772 00:37:25,777 --> 00:37:26,610 MARIA ZLATKOVA: mhm. 773 00:37:26,610 --> 00:37:31,240 774 00:37:31,240 --> 00:37:32,080 Jammer. 775 00:37:32,080 --> 00:37:33,780 Hier is die voorbeeld. 776 00:37:33,780 --> 00:37:34,280 Seker nie. 777 00:37:34,280 --> 00:37:38,950 So vir elke array-- so dit beteken dat gaan na hierdie reeks 778 00:37:38,950 --> 00:37:43,930 as sleutel value-- wat gaan om te gaan deur middel van hierdie verskeidenheid 779 00:37:43,930 --> 00:37:49,480 en die eerste gaan en kry cat, die sleutel cat en die waarde bar. 780 00:37:49,480 --> 00:37:51,570 En dan op die tweede iterasie van die lus, 781 00:37:51,570 --> 00:37:55,090 dit gaan om deur te gaan en te neem die sleutel roof en die waarde qux. 782 00:37:55,090 --> 00:38:00,512 En dan kan jy iets doen met een van hulle of beide van hulle. 783 00:38:00,512 --> 00:38:03,488 >> GEHOOR: So het die idee agter 'n belangrike punt om die waarde, 784 00:38:03,488 --> 00:38:07,470 wat doen jy uiteindelik toegang tot? 785 00:38:07,470 --> 00:38:10,680 >> MARIA ZLATKOVA: Wat is die idee van 'n sleutel wat verwys na die waarde van? 786 00:38:10,680 --> 00:38:16,400 Dit is net nog 'n konvensie, 'n ander manier om deur die skikking 787 00:38:16,400 --> 00:38:22,600 en in staat is om toegang tot óf die sleutel of die waarde of beide en gebruik hulle. 788 00:38:22,600 --> 00:38:27,100 >> GEHOOR: Wat is die rol van die gelas dat die foreach loop in? 789 00:38:27,100 --> 00:38:29,250 So as ons by te voeg elemente in die skikking later, 790 00:38:29,250 --> 00:38:32,140 sou diegene wees die eerste mense genoem word in die foreach skikking, 791 00:38:32,140 --> 00:38:33,750 of sou dit wees later? 792 00:38:33,750 --> 00:38:37,770 >> MARIA ZLATKOVA: So, wat is die bevel dat die foreach 793 00:38:37,770 --> 00:38:39,210 lus gaan deur 'n verskeidenheid in? 794 00:38:39,210 --> 00:38:42,220 Dit gaan deur die eerste element tot die laaste element, 795 00:38:42,220 --> 00:38:43,400 om die laaste bygevoeg element. 796 00:38:43,400 --> 00:38:48,020 As jy later elemente by te voeg, sou hulle word accessed-- die eerste elemente sou 797 00:38:48,020 --> 00:38:51,410 verkry as die eerste elemente van die skikking, 798 00:38:51,410 --> 00:38:57,620 en dan is jy gaan deur elk van die elemente as soort van 'n ordered-- 799 00:38:57,620 --> 00:39:02,930 nie 'n geordende, maar die manier waarop hulle is in die skikking te plaas. 800 00:39:02,930 --> 00:39:06,855 >> GEHOOR: So nuwe elemente is later op toegevoegde? 801 00:39:06,855 --> 00:39:10,680 So hulle is added-- hulle sal wees om die laaste wat in die [? iterasie. ?] 802 00:39:10,680 --> 00:39:14,280 >> MARIA ZLATKOVA: Nuwe elemente can-- basies, wanneer nuwe elemente bygevoeg word, 803 00:39:14,280 --> 00:39:16,520 hulle by die einde van die skikking? 804 00:39:16,520 --> 00:39:17,632 >> GEHOOR: Ja. 805 00:39:17,632 --> 00:39:18,840 MARIA ZLATKOVA: Ek glo so. 806 00:39:18,840 --> 00:39:20,850 Ja. 807 00:39:20,850 --> 00:39:24,330 En dan met jou foreach lus, nadat jy nuwe elemente het bygevoeg 808 00:39:24,330 --> 00:39:26,790 en jy gaan deur hulle die nuwe elemente sou 809 00:39:26,790 --> 00:39:30,930 wees accessed-- die nuwe element, as dit laaste bygevoeg word, sou dit die laaste verkry. 810 00:39:30,930 --> 00:39:34,416 >> GEHOOR: Kan jy net 'n voorbeeld te gee van iets wat sou [onhoorbaar] 811 00:39:34,416 --> 00:39:37,404 met iets met waarde soos [onhoorbaar] of waarde, 812 00:39:37,404 --> 00:39:38,910 soos hoe jy wil formaat wat? 813 00:39:38,910 --> 00:39:39,785 >> MARIA ZLATKOVA: Natuurlik. 814 00:39:39,785 --> 00:39:42,340 815 00:39:42,340 --> 00:39:46,410 Kan ek 'n voorbeeld gee van wat ons sou doen met die waarde? 816 00:39:46,410 --> 00:39:52,440 So wat jy ouens kan vertroud wees met is dat ons het gegaan deur 'n verskeidenheid 817 00:39:52,440 --> 00:39:55,380 en basies gedruk elk van die elemente, 818 00:39:55,380 --> 00:40:00,910 byvoorbeeld, as deel van 'n geordende lys of iets wat. 819 00:40:00,910 --> 00:40:02,674 Beteken dit sin maak of wil ons aan- 820 00:40:02,674 --> 00:40:04,340 GEHOOR: Kan ons druk hierdie waardes uit? 821 00:40:04,340 --> 00:40:13,220 MARIA ZLATKOVA: Ja, ons kan druk en toe $ basies waarde, want by 822 00:40:13,220 --> 00:40:16,570 daardie spesifieke waarde het, sou ons wees druk die waarde binnekant van dit. 823 00:40:16,570 --> 00:40:20,150 So as ons by ons eerste iterasie dit en ons gedruk $ waarde 824 00:40:20,150 --> 00:40:23,775 ons sou druk bar. 825 00:40:23,775 --> 00:40:27,020 >> GEHOOR: Is daar ook vir loops in PHP of net foreach loops? 826 00:40:27,020 --> 00:40:30,430 >> MARIA ZLATKOVA: Daar is ook vir lusse in PHP. 827 00:40:30,430 --> 00:40:33,399 En hulle logika is meestal die dieselfde as wat jy is wat gebruik word om. 828 00:40:33,399 --> 00:40:34,690 GEHOOR: So sy waarde is null. 829 00:40:34,690 --> 00:40:35,090 MARIA ZLATKOVA: Dit is soos die dieselfde. 830 00:40:35,090 --> 00:40:35,590 Ja. 831 00:40:35,590 --> 00:40:37,747 GEHOOR: Ek gaan net om te vra. 832 00:40:37,747 --> 00:40:39,695 So wanneer jy 'n verklaar skikking, het jy nie nodig 833 00:40:39,695 --> 00:40:42,617 om te vertel wat die grootte dit gaan wees, wat beteken dat jy kan net 834 00:40:42,617 --> 00:40:44,417 voeg en weg te neem elemente [onhoorbaar]. 835 00:40:44,417 --> 00:40:45,250 MARIA ZLATKOVA: Yup. 836 00:40:45,250 --> 00:40:45,750 Yup. 837 00:40:45,750 --> 00:40:46,251 Presies. 838 00:40:46,251 --> 00:40:48,875 Wanneer ons verklaar 'n skikking, ons hoef nie te sê wat die grootte is dit, 839 00:40:48,875 --> 00:40:51,022 sodat ons kan net elemente voeg op dit later as well. 840 00:40:51,022 --> 00:40:55,075 841 00:40:55,075 --> 00:40:55,700 Meer vrae? 842 00:40:55,700 --> 00:40:59,870 843 00:40:59,870 --> 00:41:05,950 So PHP en HTML saam te bring, wat ons het goed seen--, 844 00:41:05,950 --> 00:41:15,130 Byvoorbeeld, in hierdie voorbeeld, het ons 'n HTML-vorm dat 'n invoer veld het. 845 00:41:15,130 --> 00:41:18,830 >> En die invoer veld is net die naam en dan is dit 'n stuur knoppie. 846 00:41:18,830 --> 00:41:26,040 En wanneer jy druk op die Submit knoppie, in ons hello.php lêer, 847 00:41:26,040 --> 00:41:32,130 omdat die metode vir die vorm is te kry, kan ons toegang ookal is op naam 848 00:41:32,130 --> 00:41:40,360 hierdie kry globale veranderlike wat is-- die sintaksis, want dit is $ _GET. 849 00:41:40,360 --> 00:41:44,520 En dan kan ons toegang ongeag die toevoer van die gebruiker binnekant van daardie vorm vir naam 850 00:41:44,520 --> 00:41:47,410 deur die spesifiseer die naam van die gebied. 851 00:41:47,410 --> 00:41:51,480 852 00:41:51,480 --> 00:41:55,060 >> Enige ander vrae of enige vrae oor hierdie spesifieke voorbeeld? 853 00:41:55,060 --> 00:41:58,275 >> GEHOOR: Waar is die PHP? 854 00:41:58,275 --> 00:41:59,150 MARIA ZLATKOVA: Hier. 855 00:41:59,150 --> 00:42:01,150 So dit is ons opening tag vir die PHP. 856 00:42:01,150 --> 00:42:01,530 >> GEHOOR: Ag, reg. 857 00:42:01,530 --> 00:42:02,363 >> MARIA ZLATKOVA: Ja. 858 00:42:02,363 --> 00:42:05,320 859 00:42:05,320 --> 00:42:09,609 >> HANNAH Blumberg: Die = is snelskrif want dit is PHP en net eggo. 860 00:42:09,609 --> 00:42:10,150 GEHOOR: Oh. 861 00:42:10,150 --> 00:42:10,720 MARIA ZLATKOVA: Ja, jammer. 862 00:42:10,720 --> 00:42:12,040 Ek moet dit duidelik gemaak het. 863 00:42:12,040 --> 00:42:13,759 >> HANNAH Blumberg: Druk. 864 00:42:13,759 --> 00:42:16,800 MARIA ZLATKOVA: Dis net die funksie wat ons toelaat om iets te druk. 865 00:42:16,800 --> 00:42:19,795 866 00:42:19,795 --> 00:42:20,420 N groot vraag. 867 00:42:20,420 --> 00:42:24,140 868 00:42:24,140 --> 00:42:25,495 So going-- ja. 869 00:42:25,495 --> 00:42:31,940 >> GEHOOR: Is daar gaan baie wees 'n bietjie van die hand kodering van PHP en HTML 870 00:42:31,940 --> 00:42:33,450 op quiz 1? 871 00:42:33,450 --> 00:42:36,310 872 00:42:36,310 --> 00:42:38,810 MARIA ZLATKOVA: Daar kan 'n billike bedrag van interpretasie 873 00:42:38,810 --> 00:42:43,330 van PHP en HTML, nie noodwendig soos 'n groot hoeveelheid van die kodering, 874 00:42:43,330 --> 00:42:46,960 al is jy dalk 'n skryf foreach lus, al is, 'n lus. 875 00:42:46,960 --> 00:42:49,790 Enige van die lusse dat ons dek hier is fair game. 876 00:42:49,790 --> 00:42:51,889 En dit is meestal nie. 877 00:42:51,889 --> 00:42:53,430 HANNAH Blumberg: Ek sou bereid wees. 878 00:42:53,430 --> 00:42:57,010 In dieselfde manier wat jy gevra het ons skryf 'n klomp van die C funksies op quiz 0, 879 00:42:57,010 --> 00:42:59,766 Ek sou bereid is om die te doen dieselfde in PHP en JavaScript. 880 00:42:59,766 --> 00:43:00,640 MARIA ZLATKOVA: Ja. 881 00:43:00,640 --> 00:43:03,210 HANNAH Blumberg: Ek sou sê 'n little-- soos ons is nie 882 00:43:03,210 --> 00:43:06,251 gaan maak jy skryf 'n groot HTML bladsy, net omdat dit is 'n bietjie 883 00:43:06,251 --> 00:43:08,240 vervelige, maar jy kan dele hê. 884 00:43:08,240 --> 00:43:09,310 Dit is heeltemal fair game. 885 00:43:09,310 --> 00:43:11,082 Soos klein HTML bladsy, heeltemal regverdig. 886 00:43:11,082 --> 00:43:11,623 GEHOOR: OK. 887 00:43:11,623 --> 00:43:13,814 Hoe gaan in JavaScript sowel? 888 00:43:13,814 --> 00:43:14,730 HANNAH Blumberg: Ja. 889 00:43:14,730 --> 00:43:15,250 JavaScript se fair game. 890 00:43:15,250 --> 00:43:15,635 >> MARIA ZLATKOVA: Ja. 891 00:43:15,635 --> 00:43:16,801 Dit is heeltemal fair game. 892 00:43:16,801 --> 00:43:19,280 HANNAH Blumberg: Ons kry aan dié in soos 10 minute. 893 00:43:19,280 --> 00:43:23,750 >> MARIA ZLATKOVA: SQL, weer, Structured Query Language. 894 00:43:23,750 --> 00:43:28,651 Dit laat basies ons data te bestuur in 'n relasionele databasis management 895 00:43:28,651 --> 00:43:29,150 stelsel. 896 00:43:29,150 --> 00:43:31,149 Dit beteken basies net dat ons iewers 897 00:43:31,149 --> 00:43:37,980 sommige data wat ons dalk wil om te stoor gebruik in 'n webwerf of in 'n ander vorm. 898 00:43:37,980 --> 00:43:42,190 En dan het ons navrae te kry inligting van ons databasis, 899 00:43:42,190 --> 00:43:44,320 of om inligting in te voeg in hulle nie. 900 00:43:44,320 --> 00:43:47,560 Daar is baie van die gemeenskaplike ones-- UPDATE, INSERT, kies, en verwyder. 901 00:43:47,560 --> 00:43:50,790 >> So vir UPDATE, dit is die sintaksis vir die opdatering van data in 'n databasis. 902 00:43:50,790 --> 00:43:53,330 903 00:43:53,330 --> 00:43:57,340 Hierdie tabel genoem opdatering tabel deur te sê SET, 904 00:43:57,340 --> 00:44:04,170 kan ons 'n paar waardes in alle stel rye gelyk iets anders. 905 00:44:04,170 --> 00:44:09,410 So kan ons ook spesifiseer 'n spesifieke inskrywings wat ons wil verander 906 00:44:09,410 --> 00:44:11,240 en dit kan gebruik word om WAAR. 907 00:44:11,240 --> 00:44:16,380 En ons kan spesifiseer dat ons net wil sommige rye verander waar die huis, 908 00:44:16,380 --> 00:44:19,830 as ons het 'n tafel van studente en al die studente moes huis, 909 00:44:19,830 --> 00:44:24,890 sodat ons sou slegs 'n paar waardes verander waar 'n huis gelyk Currier, 910 00:44:24,890 --> 00:44:25,430 byvoorbeeld. 911 00:44:25,430 --> 00:44:29,120 912 00:44:29,120 --> 00:44:31,800 >> Vir INSERT, kan ons voeg sekere waardes in 'n tabel. 913 00:44:31,800 --> 00:44:35,150 So voeg in tafel, en dan sal die waardes, 914 00:44:35,150 --> 00:44:39,080 en dan in hakies, ons spesifiseer watter waardes jy wil voeg. 915 00:44:39,080 --> 00:44:43,220 So voeg in tafel, col1 en col2, die waarde VAL1 en VAL2. 916 00:44:43,220 --> 00:44:48,930 So hierdie plaas basies 'n nuwe ry in 'n tafel met die waardes 1 en 2 917 00:44:48,930 --> 00:44:50,850 onder die kolomme 1 en 2. 918 00:44:50,850 --> 00:44:54,760 >> En dan gaan ons oor te gaan 'n vinnige voorbeeld van hoe dit lyk 919 00:44:54,760 --> 00:44:56,310 soos in ons databasis 'n bietjie. 920 00:44:56,310 --> 00:44:58,685 Maar hierdie laaste navraag wat ek dink ons ​​gaan om te gaan oor, 921 00:44:58,685 --> 00:45:01,450 SELECT, is dit net ons toelaat om data in 'n tabel kies 922 00:45:01,450 --> 00:45:03,080 om moontlik gebruik dit daarna. 923 00:45:03,080 --> 00:45:05,830 En die manier waarop ons dit doen is ons net stoor dit in sommige veranderlike. 924 00:45:05,830 --> 00:45:07,780 En dan kan ons moontlik weer gebruik nie. 925 00:45:07,780 --> 00:45:10,260 >> So SELECT ster beteken kies nie. 926 00:45:10,260 --> 00:45:13,280 Dit is net 'n snelskrif vir alle kies. 927 00:45:13,280 --> 00:45:19,760 Uit Tabel WAAR, is ons op soek vir 'n paar spesifieke omstandighede, 928 00:45:19,760 --> 00:45:22,290 So waar kolom gelyk iets, byvoorbeeld. 929 00:45:22,290 --> 00:45:24,410 As ons wou net kies al van die tafel, 930 00:45:24,410 --> 00:45:28,400 dit net kies al die kolomme en al die rye van 'n tafel. 931 00:45:28,400 --> 00:45:32,040 >> En dan verwyder uit tabel WAAR Kol gelyk iets 932 00:45:32,040 --> 00:45:36,440 Dit skrap net 'n paar ry van ons tafel 933 00:45:36,440 --> 00:45:38,860 waar ons het 'n paar spesifieke voorwaardes. 934 00:45:38,860 --> 00:45:41,870 In hierdie geval, die voorwaardes is gelyk aan kolom iets. 935 00:45:41,870 --> 00:45:43,460 So net 'n vinnige voorbeeld hiervan. 936 00:45:43,460 --> 00:45:49,100 As ons hierdie tabel hier en ons plaas dit in 'n tafel, hierdie waardes, 937 00:45:49,100 --> 00:45:50,400 dat 'n nuwe ry sou plaas. 938 00:45:50,400 --> 00:45:56,380 En as ons motor-inkrement, sou dit net inkrementeer ons ID 0-1 het 2. 939 00:45:56,380 --> 00:46:00,010 >> As ons almal uit studente, is dit net terug al die velde en al die rye. 940 00:46:00,010 --> 00:46:02,430 Waar jaar is groter as of gelyk aan 2.016, 941 00:46:02,430 --> 00:46:04,390 dit sou net terug Hannah en myself. 942 00:46:04,390 --> 00:46:08,360 En dan as ons net gekies jaar id en jaar uit die studente 943 00:46:08,360 --> 00:46:11,710 waar die huis is Cabot House, wat sou weer, terug Hannah en myself. 944 00:46:11,710 --> 00:46:14,430 >> Dan as ons van studente verwyder waar die naam is gelyk aan Rob, 945 00:46:14,430 --> 00:46:16,760 dit sal die hele ry verwyder. 946 00:46:16,760 --> 00:46:19,696 En dan as ons het die naam, UPDATE studente 947 00:46:19,696 --> 00:46:21,570 SET naam gelyk aan Daven Waar die huis is gelyk 948 00:46:21,570 --> 00:46:27,010 Cabot House, wat gaan om te gaan na diegene rye en dan werk die naam. 949 00:46:27,010 --> 00:46:31,470 >> En dan 'n paar tipes SQL data is CHAR, VARCHAR, INT, en dryf. 950 00:46:31,470 --> 00:46:32,760 Dit is fair game. 951 00:46:32,760 --> 00:46:36,740 Ek sou weer gaan en maak seker dat jy weet 952 00:46:36,740 --> 00:46:40,930 en het hulle op jou cheat sheet, wat elkeen van die karakters 953 00:46:40,930 --> 00:46:44,140 is gebruik vir wat jy hulle gebruik op jou psets, 954 00:46:44,140 --> 00:46:48,050 en maak seker dat jy vertroud is en gemaklik met wat om te kies 955 00:46:48,050 --> 00:46:51,450 uit verskillende tipes data in jou pset. 956 00:46:51,450 --> 00:46:51,950 Ja. 957 00:46:51,950 --> 00:46:54,300 >> GEHOOR: Wat is die tafel gestoor? 958 00:46:54,300 --> 00:46:57,119 Ja, waar is hierdie tabel gestoor? 959 00:46:57,119 --> 00:46:59,160 MARIA ZLATKOVA: Wel, nou, is dit nie gestoor word. 960 00:46:59,160 --> 00:47:00,700 In elk geval, waar is hierdie tabel gestoor? 961 00:47:00,700 --> 00:47:04,503 Maar dit kan gestoor word in 'n SQL databasis. 962 00:47:04,503 --> 00:47:07,330 >> GEHOOR: En waar is die SQL databasis? 963 00:47:07,330 --> 00:47:11,200 In die rekenaar, online iewers, die bediener? 964 00:47:11,200 --> 00:47:15,000 >> MARIA ZLATKOVA: Dit kan 'n aantal verskillende dinge. 965 00:47:15,000 --> 00:47:19,690 >> HANNAH Blumberg: Ons het koppel met SQL tafels meestal met phpMyAdmin. 966 00:47:19,690 --> 00:47:22,060 So kan ons 'n bediener te vra om hulle te stoor vir ons. 967 00:47:22,060 --> 00:47:23,830 Ons kon dit stoor op ons eie rekenaar. 968 00:47:23,830 --> 00:47:27,950 >> MARIA ZLATKOVA: Dit hang net hoe jy wil om dit te doen vir jouself. 969 00:47:27,950 --> 00:47:30,075 Maar ons is die stoor hulle, soos Hannah genoem, 970 00:47:30,075 --> 00:47:31,755 op phpMyAdmin, wat is aanlyn. 971 00:47:31,755 --> 00:47:36,550 972 00:47:36,550 --> 00:47:39,280 En dan is die manier wat ons gebruik PHP en SQL, slaan ons 973 00:47:39,280 --> 00:47:43,450 in 'n paar veranderlike wat ons bevraagteken word. 974 00:47:43,450 --> 00:47:48,370 >> So as ons kies al uit die geskiedenis waar USER_ID gelyk aan die sessie-ID, 975 00:47:48,370 --> 00:47:53,900 dit sou al die rye kies vir die spesifieke persoon wat 976 00:47:53,900 --> 00:47:58,327 is aangeteken in die geskiedenis van tafel en sorteer hulle in rye. 977 00:47:58,327 --> 00:48:00,410 'N koel ding om te weet, is dat CS50 se navraag funksie 978 00:48:00,410 --> 00:48:02,180 beskerm teen SQL-inspuiting tags. 979 00:48:02,180 --> 00:48:07,420 Dit beteken net dat dit maak seker die insette wat ingeskryf is korrek 980 00:48:07,420 --> 00:48:09,920 en dat die persoon wat betree die insette 981 00:48:09,920 --> 00:48:15,100 probeer nie om insette sommige kwaadwillige kode om óf daal ons tafels 982 00:48:15,100 --> 00:48:17,305 of verwyder alles binnekant van ons databasis. 983 00:48:17,305 --> 00:48:20,060 984 00:48:20,060 --> 00:48:23,400 >> 'N vinnige oorsig van die Model View Controller model, 985 00:48:23,400 --> 00:48:27,360 dit is net 'n manier van organisering en dink oor die kode. 986 00:48:27,360 --> 00:48:29,100 Dit is weer 'n ontwerp paradigma. 987 00:48:29,100 --> 00:48:33,380 Wat dit beteken, is dat ons can-- en dit is goeie praktyk 988 00:48:33,380 --> 00:48:37,790 om verskillende dele skei van ons kode en wat hulle 989 00:48:37,790 --> 00:48:40,530 beheer in hierdie drie paradigmas. 990 00:48:40,530 --> 00:48:46,700 >> So ons mening is die meeste van ons templates, ons uitleg, die manier 991 00:48:46,700 --> 00:48:48,260 dat ons stel hoe ons kode lyk. 992 00:48:48,260 --> 00:48:55,190 Dit is meestal ons CSS lêers en die manier dat ons die ontwerp van ons kode gedefinieer, 993 00:48:55,190 --> 00:48:55,710 basies. 994 00:48:55,710 --> 00:48:59,280 Ons kontroles is meestal wat ons het al te doen met PHP lêers. 995 00:48:59,280 --> 00:49:03,030 So weer, in samewerking met die inligting wat ons het 996 00:49:03,030 --> 00:49:06,700 en die grens van hoe dit inligting gebruik word, 997 00:49:06,700 --> 00:49:10,660 en dan verby daardie inligting óf op die oog of die model. 998 00:49:10,660 --> 00:49:13,880 En die model, die manier waarop ons het gebruik IS het ons databasis is, 999 00:49:13,880 --> 00:49:17,510 so waar ons inligting is gestoor word sodat dit iewers 1000 00:49:17,510 --> 00:49:21,490 om in te woon, en enige van die kode wat verband hou met die manier 1001 00:49:21,490 --> 00:49:25,410 dat ons daardie inligting of die manier wat ons werk daardie inligting. 1002 00:49:25,410 --> 00:49:28,940 1003 00:49:28,940 --> 00:49:33,200 >> So in die MVC model, HTTP versoeke gestuur om 'n web bediener. 1004 00:49:33,200 --> 00:49:36,220 Dan, die beheerder interpreteer die versoek van die gebruiker 1005 00:49:36,220 --> 00:49:38,260 en bekragtig sal die toevoer van die gebruiker. 1006 00:49:38,260 --> 00:49:41,580 Dit is opsioneel dat ons die kontroles kommunikeer 1007 00:49:41,580 --> 00:49:44,000 met 'n model, so iets soos ons databasis 1008 00:49:44,000 --> 00:49:47,500 of 'n ander funksie dat relais inligting. 1009 00:49:47,500 --> 00:49:50,340 En dan uiteindelik, die beheerder verby inligting op die oog 1010 00:49:50,340 --> 00:49:52,090 sodat dit kan wees gelewer is en dat dit kan 1011 00:49:52,090 --> 00:49:55,860 sigbaar vir enige persoon geword toegang tot die webblad. 1012 00:49:55,860 --> 00:49:58,440 1013 00:49:58,440 --> 00:50:01,340 >> Enige vrae? 1014 00:50:01,340 --> 00:50:01,840 Awesome. 1015 00:50:01,840 --> 00:50:04,530 1016 00:50:04,530 --> 00:50:08,469 So weer, die model, sy funksie, weer, 1017 00:50:08,469 --> 00:50:11,260 is 'n aanhoudende stoor van inligting, bestuur en organisering van data. 1018 00:50:11,260 --> 00:50:13,890 En wat ons het so gesien ver is die MySQL databasis 1019 00:50:13,890 --> 00:50:16,200 en enige data lêers kan gebruik. 1020 00:50:16,200 --> 00:50:20,580 >> Kyk, aanbieding van inligting aan die gebruiker, die UI, of gebruikerskoppelvlak. 1021 00:50:20,580 --> 00:50:22,350 En die voorbeeld van hierdie is HTML. 1022 00:50:22,350 --> 00:50:23,950 En dan het ons dalk 'n minimale PHP het. 1023 00:50:23,950 --> 00:50:28,360 So 'n lus wat iterate oor data wat gedruk 1024 00:50:28,360 --> 00:50:30,720 is deel van die oog, soos teenstelling met die beheerder. 1025 00:50:30,720 --> 00:50:35,660 En dan 'n klomp van ons PHP lêers val in die kategorie kontroleerder. 1026 00:50:35,660 --> 00:50:38,410 Dit hanteer net versoeke gebruiker en kry inligting van die model. 1027 00:50:38,410 --> 00:50:42,880 1028 00:50:42,880 --> 00:50:45,590 >> Spring in die Document Object Model, dit net 1029 00:50:45,590 --> 00:50:47,700 verwys na die manier HTML dokumente georganiseer is. 1030 00:50:47,700 --> 00:50:51,600 En hulle is georganiseer in 'n boom struktuur wat 'n hiërargie het. 1031 00:50:51,600 --> 00:50:56,720 So as ons toegang tot [onhoorbaar] voorstelling van die dokument, 1032 00:50:56,720 --> 00:51:02,750 ons kan werk met die dokument, soos Ons manipuleer voorwerpe basies. 1033 00:51:02,750 --> 00:51:06,630 >> En om dit 'n maak bietjie duideliker wanneer 1034 00:51:06,630 --> 00:51:10,540 ons het 'n groot deel van ons verskillende tags reageer 1035 00:51:10,540 --> 00:51:12,590 verskillende roetes in ons boom. 1036 00:51:12,590 --> 00:51:17,070 En dan vir hierdie voorbeeld, die begin dokument knoop. 1037 00:51:17,070 --> 00:51:20,010 Ons het, dan is ons HTML node wat split in die kop en liggaam. 1038 00:51:20,010 --> 00:51:22,810 Kop het titel en dan titel bevat hello, wêreld. 1039 00:51:22,810 --> 00:51:24,860 En ons liggaam bevat net hello, wêreld so goed. 1040 00:51:24,860 --> 00:51:28,700 1041 00:51:28,700 --> 00:51:31,900 >> So enige vrae oor enige van die dinge wat ons tot dusver gedek? 1042 00:51:31,900 --> 00:51:35,891 En indien nie, sal Hannah oor te neem met JavaScript. 1043 00:51:35,891 --> 00:51:36,390 Awesome. 1044 00:51:36,390 --> 00:51:37,473 >> HANNAH Blumberg: OK, cool. 1045 00:51:37,473 --> 00:51:40,980 As daar iets kom met PHP of HTML, of enige van die dinge Maria gedek, 1046 00:51:40,980 --> 00:51:42,700 ons kan altyd breek. 1047 00:51:42,700 --> 00:51:46,430 Ons doen 'n beter op keer, so awesome. 1048 00:51:46,430 --> 00:51:48,770 En net om terug te gaan regtig vinnig om hierdie, 1049 00:51:48,770 --> 00:51:51,010 as jy kyk na elke eksamen verlede jaar se dit 1050 00:51:51,010 --> 00:51:54,120 kom either-- hier is sommige HTML, maak hierdie diagram. 1051 00:51:54,120 --> 00:51:58,380 Of hier is hierdie diagram maak 'n paar HTML, so beslis oefen nie. 1052 00:51:58,380 --> 00:52:01,500 En dan is dit een gewaarborgde vraag wat jy kan regkry. 1053 00:52:01,500 --> 00:52:02,000 Koel. 1054 00:52:02,000 --> 00:52:04,510 So laat ons praat oor JavaScript en hoe dit 'n bietjie 1055 00:52:04,510 --> 00:52:09,130 anders tale soos PHP en C, die twee tale wat ons vooraf gesien het. 1056 00:52:09,130 --> 00:52:10,780 So nommer een, dit is losweg getik. 1057 00:52:10,780 --> 00:52:14,630 Dit is soos PHP, maar in teenstelling met C. 1058 00:52:14,630 --> 00:52:15,890 >> Dit is 'n geïnterpreteer taal. 1059 00:52:15,890 --> 00:52:19,870 Weereens, dit is soos PHP, in teenstelling met C. En dit 1060 00:52:19,870 --> 00:52:24,630 gaan ons toelaat om dit use-- werk regtig mooi met webblaaie. 1061 00:52:24,630 --> 00:52:28,350 Dit gaan ons toelaat om te manipuleer die inhoud en hoe dit lyk 1062 00:52:28,350 --> 00:52:30,300 en wat dit doen. 1063 00:52:30,300 --> 00:52:32,330 >> Ons gaan 'n bietjie van Ajax sien. 1064 00:52:32,330 --> 00:52:36,140 Dit stel ons in staat om te kommunikeer asynchroon met verskillende bedieners 1065 00:52:36,140 --> 00:52:37,950 en kry inligting. 1066 00:52:37,950 --> 00:52:42,820 En dit is die ding wat werklik skei JavaScript uit PHP en C 1067 00:52:42,820 --> 00:52:45,590 is dat dit kliënt-kant. 1068 00:52:45,590 --> 00:52:49,860 Beide PHP en C is tipies bediener-kant. 1069 00:52:49,860 --> 00:52:51,960 >> Vir die grootste deel en byna geheel wat 1070 00:52:51,960 --> 00:52:53,900 ons gesien het, ten minste in hierdie klas, JavaScript 1071 00:52:53,900 --> 00:52:57,040 tree op kliënt-kant, wat beteken dat die leser eintlik 1072 00:52:57,040 --> 00:52:58,597 verantwoordelik vir die bestuur van dit. 1073 00:52:58,597 --> 00:53:01,180 En dit beteken dat ons nie nodig om met die bediener. 1074 00:53:01,180 --> 00:53:04,380 So dit beteken dat dit kan 'n baie vinniger want dit is eintlik net dit is Chrome, 1075 00:53:04,380 --> 00:53:10,420 dit is Safari, dit is Firefox, alles wat jy gebruik eintlik die bestuur van jou JavaScript. 1076 00:53:10,420 --> 00:53:12,290 >> GEHOOR: Wat beteken asynchrone beteken? 1077 00:53:12,290 --> 00:53:13,620 >> HANNAH Blumberg: Ag, wat nie asynchroon beteken? 1078 00:53:13,620 --> 00:53:14,250 N groot vraag. 1079 00:53:14,250 --> 00:53:17,890 Asynchroon means-- Wel, die inhoud wat in 1080 00:53:17,890 --> 00:53:22,140 ons gebruik dit, OK, ons skep 'n webblad 1081 00:53:22,140 --> 00:53:23,860 en ons moet 'n paar inligting te kry. 1082 00:53:23,860 --> 00:53:28,250 So met die voorbeeld van mashup, enige inligting wat ons dalk wil 1083 00:53:28,250 --> 00:53:30,580 is artikel titels. 1084 00:53:30,580 --> 00:53:33,330 Nou, ons een opsie could-- is om dit te doen sinkronies 1085 00:53:33,330 --> 00:53:37,940 en dit beteken dat laat se stop, gaan kry die artikel, 1086 00:53:37,940 --> 00:53:41,275 kry die artikel terug, en dan lewer nie, maar dat regtig stadig sou wees. 1087 00:53:41,275 --> 00:53:44,150 Dit sou 'n slegte gebruikers ervaring wees omdat jy wil net sit 1088 00:53:44,150 --> 00:53:46,630 daar wag vir iets om te reageer. 1089 00:53:46,630 --> 00:53:50,020 >> Beteken dat ons sal asynchroon voortgaan gaan oor ons besigheid, 1090 00:53:50,020 --> 00:53:52,529 die lewering van die bladsy, en ons sal af stuur 'n versoek 1091 00:53:52,529 --> 00:53:54,570 Dit is soos 'gaan gebeur in die agtergrond. 1092 00:53:54,570 --> 00:53:57,610 Ek dink ons ​​gebruik die voorbeeld in lesing van die roeping van Rob en gesê: 1093 00:53:57,610 --> 00:53:59,980 hey, kan jy dit op te soek vir my en kom terug na my 1094 00:53:59,980 --> 00:54:02,870 eerder as om net my wag op die telefoon. 1095 00:54:02,870 --> 00:54:07,020 So asynchroon beteken dit gebeur in die agtergrond van ons af weg 1096 00:54:07,020 --> 00:54:08,676 in parallel. 1097 00:54:08,676 --> 00:54:10,400 >> N groot vraag. 1098 00:54:10,400 --> 00:54:11,830 Enigiets anders? 1099 00:54:11,830 --> 00:54:12,330 Groot. 1100 00:54:12,330 --> 00:54:15,020 Ons sal 'n baie meer in te spring asynchrone versoeke Ajax. 1101 00:54:15,020 --> 00:54:18,287 >> GEHOOR: Is JavaScript-- waar kom dit val saam met model-view-kontroleerder? 1102 00:54:18,287 --> 00:54:19,620 HANNAH Blumberg: Groot vraag. 1103 00:54:19,620 --> 00:54:23,320 Waar kom JavaScript val met model-view-kontroleerder? 1104 00:54:23,320 --> 00:54:23,930 Hm. 1105 00:54:23,930 --> 00:54:28,350 Ek dink dit kan fall-- sodat ons nie gewoonlik 1106 00:54:28,350 --> 00:54:31,340 dit graag suig in daardie paradigma, maar ek dink ek sou sê, 1107 00:54:31,340 --> 00:54:34,280 OK, so JavaScript eintlik gaan toelaat 1108 00:54:34,280 --> 00:54:37,587 ons data in te samel, interpreteer data, eintlik 1109 00:54:37,587 --> 00:54:38,920 betekenisvolle dinge met die data. 1110 00:54:38,920 --> 00:54:41,100 Op dié manier, dit is baie beheer-like. 1111 00:54:41,100 --> 00:54:43,900 >> Maar dit is ook van plan om ons toe te laat om dinge en druk dinge te vertoon. 1112 00:54:43,900 --> 00:54:47,021 Op dié manier, dit is baie oog-like. 1113 00:54:47,021 --> 00:54:47,520 Ja. 1114 00:54:47,520 --> 00:54:51,710 So dit is soort van soos PHP in waar dit soort van kan wees beide. 1115 00:54:51,710 --> 00:54:53,330 Goeie vraag. 1116 00:54:53,330 --> 00:54:55,209 Enigiets anders? 1117 00:54:55,209 --> 00:54:56,000 Alle reg, awesome. 1118 00:54:56,000 --> 00:54:57,120 Beweeg reg langs. 1119 00:54:57,120 --> 00:54:59,110 >> So laat ons sien 'n voorbeeld hoe ons kan gebruik 1120 00:54:59,110 --> 00:55:02,250 JavaScript in een van ons web-programme. 1121 00:55:02,250 --> 00:55:05,680 So ek sal oorweeg om index.html met 'n klomp van die HTML. 1122 00:55:05,680 --> 00:55:08,800 En die ding wat ek wil hê jy fokus op is dit script tag. 1123 00:55:08,800 --> 00:55:13,280 En dit sê, OK, ek wil 'n paar loop JavaScript en hier is waar hy woon. 1124 00:55:13,280 --> 00:55:15,400 Hulle leef in hello.js. 1125 00:55:15,400 --> 00:55:21,120 >> En baie soos CSS, kan ons sit JavaScript binne die HTML. 1126 00:55:21,120 --> 00:55:24,000 Hoekom kan ons wil om dit uit te skei? 1127 00:55:24,000 --> 00:55:24,500 Ja. 1128 00:55:24,500 --> 00:55:25,486 >> GEHOOR: Makliker om te herskryf? 1129 00:55:25,486 --> 00:55:26,402 >> HANNAH Blumberg: Ja. 1130 00:55:26,402 --> 00:55:28,450 Dit is makliker om te gebruik oor verskillende webblaaie. 1131 00:55:28,450 --> 00:55:29,980 Dit hou dinge skoner. 1132 00:55:29,980 --> 00:55:32,090 Dis net goeie praktyk. 1133 00:55:32,090 --> 00:55:32,590 Awesome. 1134 00:55:32,590 --> 00:55:33,930 Goeie antwoord. 1135 00:55:33,930 --> 00:55:36,690 So goed, so dit gaan ons index.html wees. 1136 00:55:36,690 --> 00:55:39,430 En dan hier af is ons klein bietjie JavaScript-lêer. 1137 00:55:39,430 --> 00:55:42,410 >> En al wat dit sê is waarskuwing Hallo, wêreld. 1138 00:55:42,410 --> 00:55:46,040 So wat gebeur, is wanneer hierdie bladsy renders-- 1139 00:55:46,040 --> 00:55:49,680 so as jy gaan na watter webwerf hierdie is-- alles wat gaan gebeur 1140 00:55:49,680 --> 00:55:53,330 is dit gaan om te sê, OK, ek is gaan hierdie JavaScript-kode uit te voer. 1141 00:55:53,330 --> 00:55:56,370 En dit JavaScript-kode sê net waarskuwing Hallo, wêreld. 1142 00:55:56,370 --> 00:55:59,090 So ek gaan om dit te kry vriendelike bietjie pop-up. 1143 00:55:59,090 --> 00:56:00,360 >> Koel? 1144 00:56:00,360 --> 00:56:04,746 Dit is soort van soos ons heel eerste JavaScript program, ons Hallo, wêreld. 1145 00:56:04,746 --> 00:56:07,690 1146 00:56:07,690 --> 00:56:12,190 Kom ons kyk 'n bietjie meer oor wat Die sintaksis van JavaScript lyk. 1147 00:56:12,190 --> 00:56:16,330 En spesifiek, laat ons dit vergelyk met C en PHP, wat ons voorheen gesien het. 1148 00:56:16,330 --> 00:56:20,610 >> In JavaScript, ons gaan hê var, die naam van die veranderlike, en dan 1149 00:56:20,610 --> 00:56:21,690 die werklike waarde. 1150 00:56:21,690 --> 00:56:26,170 En ons het nie 'n tipe spesifiseer, net soos in PHP, maar baie anders as in C. 1151 00:56:26,170 --> 00:56:28,850 So byvoorbeeld, as ons wou om die waarde 50 te slaan, 1152 00:56:28,850 --> 00:56:32,490 in C, sou ons om te sê, hey, C, ek wil 'n heelgetal, 1153 00:56:32,490 --> 00:56:35,076 Ek gaan om dit te noem i, en die waarde daarvan is 50. 1154 00:56:35,076 --> 00:56:36,450 In PHP, dit is 'n bietjie makliker te maak. 1155 00:56:36,450 --> 00:56:41,880 Ons sê, hey, ek wil 'n veranderlike genoem i en die waarde daarvan is 50. 1156 00:56:41,880 --> 00:56:45,890 Baie soortgelyk, in JavaScript, ons sê hey, ek wil 'n veranderlike i genoem, 1157 00:56:45,890 --> 00:56:47,080 die waarde is 50. 1158 00:56:47,080 --> 00:56:52,140 Elke daaropvolgende tyd wat ek gebruik i, weet ek nie nodig het om te skryf var. 1159 00:56:52,140 --> 00:56:53,810 Dis net ek van daardie punt af. 1160 00:56:53,810 --> 00:56:58,660 In dieselfde manier, in C, waar sodra ons int ek sê, ons gebruik net i. 1161 00:56:58,660 --> 00:57:00,340 Koel? 1162 00:57:00,340 --> 00:57:01,800 Alles reg. 1163 00:57:01,800 --> 00:57:03,710 >> Beweeg op loops, Gelukkig is hierdie byna 1164 00:57:03,710 --> 00:57:06,720 kyk exactly-- Ek dink hulle is presies dieselfde as wat 1165 00:57:06,720 --> 00:57:09,799 loops gaan kyk soos in iets soos C waar jou lus 1166 00:57:09,799 --> 00:57:11,840 gaan drie het parts-- n inisialisering, 1167 00:57:11,840 --> 00:57:13,640 'n toestand, en 'n update. 1168 00:57:13,640 --> 00:57:15,340 A while lus, dit lyk presies dieselfde. 1169 00:57:15,340 --> 00:57:16,390 Ons gee dit net 'n toestand. 1170 00:57:16,390 --> 00:57:18,264 >> En 'n doen terwyl loop, weer presies dieselfde. 1171 00:57:18,264 --> 00:57:20,190 Ons gee dit 'n toestand. 1172 00:57:20,190 --> 00:57:24,510 Kom ons sê ek wou over-- Itereer Ek wou iets te doen vyf keer. 1173 00:57:24,510 --> 00:57:27,840 In C, kan ons skryf vir init i gelyk 0. 1174 00:57:27,840 --> 00:57:30,480 i is minder as 5, I ++. 1175 00:57:30,480 --> 00:57:34,240 Enigste verskil in JavaScript, in plaas van sê int i gelyk 0, 1176 00:57:34,240 --> 00:57:36,820 ons sê var i gelyk 0. 1177 00:57:36,820 --> 00:57:38,370 Mooi. 1178 00:57:38,370 --> 00:57:41,320 Dit is die enigste verskil. 1179 00:57:41,320 --> 00:57:43,200 Enige vrae oor enige van daardie? 1180 00:57:43,200 --> 00:57:44,160 Ja. 1181 00:57:44,160 --> 00:57:48,480 >> GEHOOR: So in PHP, dit is dieselfde ding, behalwe maar soos 'n veranderlike? 1182 00:57:48,480 --> 00:57:49,564 Of was dit 'n var voorbeeld? 1183 00:57:49,564 --> 00:57:50,480 HANNAH Blumberg: Ja. 1184 00:57:50,480 --> 00:57:52,310 So in PHP, gaan dit om 'n dollar teken. 1185 00:57:52,310 --> 00:57:59,450 So dit gaan tot $ i gelykes 0, $ i is minder as 5, $ i ++. 1186 00:57:59,450 --> 00:58:02,490 N groot vraag. 1187 00:58:02,490 --> 00:58:04,570 >> Kom ons praat nou oor funksie verklarings. 1188 00:58:04,570 --> 00:58:07,010 In C, wanneer ons verklaar funksie, ons het hom 'n naam 1189 00:58:07,010 --> 00:58:08,490 en ons het dit 'n paar parameters. 1190 00:58:08,490 --> 00:58:10,670 En aan die begin, het ons die soort. 1191 00:58:10,670 --> 00:58:12,440 In JavaScript, al wat ons hoef te doen is skryf 1192 00:58:12,440 --> 00:58:15,080 die navraag funksie wat sê, hey, JavaScript, 1193 00:58:15,080 --> 00:58:16,570 Ek is op die punt om 'n funksie te definieer. 1194 00:58:16,570 --> 00:58:18,520 >> In hierdie geval, dit het die naam som. 1195 00:58:18,520 --> 00:58:20,820 En dit neem twee argumente, x en y. 1196 00:58:20,820 --> 00:58:23,280 Let daarop dat ons nie omgee oor die tipes van x en y. 1197 00:58:23,280 --> 00:58:26,280 En net soos C, ons het hierdie navraag terugkeer, 1198 00:58:26,280 --> 00:58:29,140 sodat ons kan iets doen soos terugkeer x en y. 1199 00:58:29,140 --> 00:58:32,540 >> En nou wanneer ons geskryf het hierdie eerste funksie, kan ons som op enige plek gebruik. 1200 00:58:32,540 --> 00:58:34,740 En dit is heeltemal fyn. 1201 00:58:34,740 --> 00:58:37,530 Een regtig cool ding oor JavaScript is wat baie anders as C 1202 00:58:37,530 --> 00:58:40,770 is dat funksies kan behandel word soos waardes. 1203 00:58:40,770 --> 00:58:43,895 So kan ons iets soos hier doen waar ek dink ek dek hierdie up-- 1204 00:58:43,895 --> 00:58:46,400 Ek bedek die var som part-- en ons het net gesê 1205 00:58:46,400 --> 00:58:49,850 funksie xy gelyk terugkeer x plus y. 1206 00:58:49,850 --> 00:58:52,140 >> Dit is wat genoem sou word 'n anonieme funksie. 1207 00:58:52,140 --> 00:58:53,920 Dit is 'n funksie sonder 'n naam. 1208 00:58:53,920 --> 00:58:56,290 AANGESIEN dit sê funksie som, blah, blah, blah, 1209 00:58:56,290 --> 00:58:59,340 dit sou net funksie te sê. 1210 00:58:59,340 --> 00:59:02,020 Maar nou selfs al het ek hierdie anonieme funksie, 1211 00:59:02,020 --> 00:59:03,630 daardie funksie is regtig net 'n waarde. 1212 00:59:03,630 --> 00:59:05,160 Ons kan dit behandel soos 'n waarde. 1213 00:59:05,160 --> 00:59:10,180 >> So kan ons dit red in 'n veranderlike dieselfde manier waarop ons kan stoor 50 in 'n veranderlike. 1214 00:59:10,180 --> 00:59:13,870 So kan ons sê, OK, ek wil 'n veranderlike, is dit genoem som, 1215 00:59:13,870 --> 00:59:16,011 en dit is hierdie funksie. 1216 00:59:16,011 --> 00:59:18,760 So het hierdie twee dinge is eintlik gaan om die presiese dieselfde ding doen, 1217 00:59:18,760 --> 00:59:21,576 maar die sintaksis is 'n bietjie verskillende en soort van 'n prettige noot. 1218 00:59:21,576 --> 00:59:22,076 Ja. 1219 00:59:22,076 --> 00:59:25,548 >> GEHOOR: So jy kan noem 'n funksie wat anoniem was deur te sê, 1220 00:59:25,548 --> 00:59:28,244 som hakies 2, 5? 1221 00:59:28,244 --> 00:59:29,160 HANNAH Blumberg: Ja. 1222 00:59:29,160 --> 00:59:32,280 Jy kan hierdie anonieme oproep funksie in die dieselfde manier. 1223 00:59:32,280 --> 00:59:33,350 Jy sal som doen (2, 5) ;. 1224 00:59:33,350 --> 00:59:36,180 1225 00:59:36,180 --> 00:59:38,200 Dit sou heeltemal fyn wees. 1226 00:59:38,200 --> 00:59:41,575 >> As ek nie gedoen het nie var som gelyk aan funksie, as ek net geskrap 1227 00:59:41,575 --> 00:59:45,480 this-- Ek weet dit is op my hand, maar voorgee ek verwyder this-- dan 1228 00:59:45,480 --> 00:59:46,964 daardie funksie is 'n soort van net weg. 1229 00:59:46,964 --> 00:59:49,630 Jy kan nooit gebruik dit weer as gevolg jy hoef nie 'n naam vir dit. 1230 00:59:49,630 --> 00:59:53,497 Dit is moeilik om te verwys na iets jy weet nie wat om te bel. 1231 00:59:53,497 --> 00:59:54,080 Goeie vraag. 1232 00:59:54,080 --> 00:59:54,580 Ja. 1233 00:59:54,580 --> 00:59:59,580 >> GEHOOR: Kan jy som verwysing in ander plekke met die waarde van x plus y? 1234 00:59:59,580 --> 01:00:01,940 >> HANNAH Blumberg: Kan jy verwysing som op ander plekke 1235 01:00:01,940 --> 01:00:03,360 met die waarde x plus y? 1236 01:00:03,360 --> 01:00:05,130 Ek is nie heeltemal seker wat jy bedoel. 1237 01:00:05,130 --> 01:00:10,582 >> GEHOOR: So jou verlede semi-anonieme funksie is som is gelyk aan dié 1238 01:00:10,582 --> 01:00:14,452 anonieme funksie, so som nou 'n veranderlike wat jy can-- 1239 01:00:14,452 --> 01:00:15,410 HANNAH Blumberg: Right. 1240 01:00:15,410 --> 01:00:18,980 So som is die veranderlike, maar dit is actually-- 1241 01:00:18,980 --> 01:00:23,770 so som is 'n veranderlike wie waarde is die funksie. 1242 01:00:23,770 --> 01:00:27,030 Dit is so 'n funksie, wat is 'n soort van 'n vreemde ding om jou kop draai om 1243 01:00:27,030 --> 01:00:29,880 sedert ons het al speel met C en jy kan dit nie doen nie in C. 1244 01:00:29,880 --> 01:00:32,679 Maar nou kan ons noem die som op dieselfde manier wat ons kon som hier noem. 1245 01:00:32,679 --> 01:00:33,220 GEHOOR: OK. 1246 01:00:33,220 --> 01:00:33,970 HANNAH Blumberg: Ja. 1247 01:00:33,970 --> 01:00:34,553 Goeie vraag. 1248 01:00:34,553 --> 01:00:35,438 Ja. 1249 01:00:35,438 --> 01:00:39,862 >> GEHOOR: So ons gebruik nie die prototipes in PHP of JavaScript? 1250 01:00:39,862 --> 01:00:42,070 HANNAH Blumberg: Nee, ons hoef nie te prototipes te gebruik, 1251 01:00:42,070 --> 01:00:43,880 veral in JavaScript. 1252 01:00:43,880 --> 01:00:49,380 So 'n slegte praktyk ding wat ek is gaan om te sê dat jy nie moet doen 1253 01:00:49,380 --> 01:00:52,620 is jy hoef nie te var i = 50 skryf. 1254 01:00:52,620 --> 01:00:54,840 Jy kon net begin doen i = 50. 1255 01:00:54,840 --> 01:00:57,490 En wil net maak ek 'n globale veranderlike. 1256 01:00:57,490 --> 01:01:00,550 >> Dit is 'n baie slegte praktyk nooit sê uitdruklik var i, 1257 01:01:00,550 --> 01:01:01,800 maar dit is iets wat jy kan doen. 1258 01:01:01,800 --> 01:01:03,591 Die tolk is nie gaan gil op jou. 1259 01:01:03,591 --> 01:01:05,920 JavaScript is redelik soos, wat jy kan doen wat jy wil. 1260 01:01:05,920 --> 01:01:09,301 1261 01:01:09,301 --> 01:01:09,800 Jammer. 1262 01:01:09,800 --> 01:01:10,300 Daar is twee. 1263 01:01:10,300 --> 01:01:12,150 In die oranje broek. 1264 01:01:12,150 --> 01:01:13,190 Gaan voort. 1265 01:01:13,190 --> 01:01:14,390 >> GEHOOR: Nee, eers gaan ons. 1266 01:01:14,390 --> 01:01:16,765 >> GEHOOR: Nee, ek was net te sê Ek het nie my hand. 1267 01:01:16,765 --> 01:01:20,248 1268 01:01:20,248 --> 01:01:20,748 OK. 1269 01:01:20,748 --> 01:01:26,604 So as jy was om te bel dat die eerste keer nou opsom, 1270 01:01:26,604 --> 01:01:29,864 Ons noem dit die dieselfde manier, x, y, soos elke keer? 1271 01:01:29,864 --> 01:01:30,780 HANNAH Blumberg: Ja. 1272 01:01:30,780 --> 01:01:32,572 So hierdie twee wese doen dieselfde ding. 1273 01:01:32,572 --> 01:01:35,113 GEHOOR: En wat is die voordeel van die gebruik van die een of ander? 1274 01:01:35,113 --> 01:01:37,500 HANNAH Blumberg: Geen voordeel van die gebruik van een of die ander. 1275 01:01:37,500 --> 01:01:40,080 Ek wou net om jou te wys twee verskillende stukke van die sintaksis. 1276 01:01:40,080 --> 01:01:42,770 Daar is baie keer waar anonieme funksies te doen het met 'n doel 1277 01:01:42,770 --> 01:01:48,220 is as die argument na die ander funksie moet 'n funksie wees. 1278 01:01:48,220 --> 01:01:50,600 En ons sal sien wat in net 'n tweede plek met Ajax. 1279 01:01:50,600 --> 01:01:53,577 >> So as dit het nie sin maak nie, stoor dit in die agterkant van jou kop. 1280 01:01:53,577 --> 01:01:55,660 Dit is waar 'n anonieme funksie kan nuttig wees 1281 01:01:55,660 --> 01:01:58,284 want dit is nie regtig die moeite werd gee dit 'n naam sedert ons is net 1282 01:01:58,284 --> 01:01:59,443 gaan om dit te gebruik 'n keer. 1283 01:01:59,443 --> 01:02:00,370 Ja. 1284 01:02:00,370 --> 01:02:03,635 >> GEHOOR: As x en y verandering later af sal verander som sowel? 1285 01:02:03,635 --> 01:02:06,510 HANNAH Blumberg: As x en y verandering later, sal opsom verander as goed? 1286 01:02:06,510 --> 01:02:08,840 So dit is eintlik ek dink iets wat, 1287 01:02:08,840 --> 01:02:12,260 weer, dit voel net baie anders van C. Dit is nie 'n waarde. 1288 01:02:12,260 --> 01:02:13,620 Dit is nie 5. 1289 01:02:13,620 --> 01:02:15,550 Dis net die funksie self. 1290 01:02:15,550 --> 01:02:19,110 So sodra jy gee dit parameters, dan sal jy eintlik bereken 'n waarde. 1291 01:02:19,110 --> 01:02:21,193 >> MARIA ZLATKOVA: En dan kan jy die funksie noem 1292 01:02:21,193 --> 01:02:23,272 en gebruik dit om 'n bietjie waarde te kry. 1293 01:02:23,272 --> 01:02:24,230 HANNAH Blumberg: Right. 1294 01:02:24,230 --> 01:02:25,250 Presies. 1295 01:02:25,250 --> 01:02:25,863 Ja. 1296 01:02:25,863 --> 01:02:27,946 >> GEHOOR: So as jy net stoor dit in die veranderlike, 1297 01:02:27,946 --> 01:02:31,430 soos var x gelyk som van twee values-- 1298 01:02:31,430 --> 01:02:32,420 >> HANNAH Blumberg: Ja. 1299 01:02:32,420 --> 01:02:35,320 So jy kan net nie var som gelyk som van twee waardes. 1300 01:02:35,320 --> 01:02:37,670 Ja. 1301 01:02:37,670 --> 01:02:38,680 Enige ander vrae? 1302 01:02:38,680 --> 01:02:39,642 Ja. 1303 01:02:39,642 --> 01:02:42,047 >> GEHOOR: Maar sou dit verwar som en som? 1304 01:02:42,047 --> 01:02:45,062 Soos as jy veranderlike som noem, sou jy die funksie som noem? 1305 01:02:45,062 --> 01:02:45,895 HANNAH Blumberg: Mm. 1306 01:02:45,895 --> 01:02:46,395 Mm. 1307 01:02:46,395 --> 01:02:51,253 As jy iets gedoen het soos, som gelyk som 2, 5? 1308 01:02:51,253 --> 01:02:53,170 >> GEHOOR: Ja. 1309 01:02:53,170 --> 01:02:56,465 >> HANNAH Blumberg: Ek glo dat sou die waarde van som oorskryf. 1310 01:02:56,465 --> 01:02:59,290 So nog 'n interessante ding oor JavaScript 1311 01:02:59,290 --> 01:03:02,950 is dat 'n enkele veranderlike kan neem op 'n klomp van die verskillende tipes. 1312 01:03:02,950 --> 01:03:03,790 Slegte praktyk. 1313 01:03:03,790 --> 01:03:06,280 Jy moet nie iets te doen soos wat jy nou net gesê. 1314 01:03:06,280 --> 01:03:10,240 >> Maar in C, as ek is ingestel gelyk aan 'n heelgetal is, 1315 01:03:10,240 --> 01:03:13,570 ons weet dat dit nooit gaan 'n string word. 1316 01:03:13,570 --> 01:03:15,670 Dit is nie die geval in JavaScript. 1317 01:03:15,670 --> 01:03:17,770 Ja, goeie vraag. 1318 01:03:17,770 --> 01:03:20,151 Enigiets anders? 1319 01:03:20,151 --> 01:03:20,650 Alles reg. 1320 01:03:20,650 --> 01:03:21,850 Doen alles reg op tyd. 1321 01:03:21,850 --> 01:03:23,050 Hou gaan. 1322 01:03:23,050 --> 01:03:25,200 Alles reg. 1323 01:03:25,200 --> 01:03:27,780 >> As ons kyk na 'n verskeidenheid in JavaScript, hier is 1324 01:03:27,780 --> 01:03:30,250 'n vinnige voorbeeld van 'n verskeidenheid van snare. 1325 01:03:30,250 --> 01:03:31,967 En skikkings kan dinamiese groei. 1326 01:03:31,967 --> 01:03:33,675 Hulle het nie 'n het vaste grootte dieselfde manier 1327 01:03:33,675 --> 01:03:37,990 wat hulle doen in C. Ons kan toegang tot die elemente met net die vierkante hakies. 1328 01:03:37,990 --> 01:03:41,720 >> Dit lyk baie soos PHP en 'n baie soos C, waar ons kan sê, in hierdie geval, 1329 01:03:41,720 --> 01:03:48,360 as ek wou die woord JavaScript, sou ek nie skik vierkantige hakies met 'n 0, 1, 2. 1330 01:03:48,360 --> 01:03:51,450 1331 01:03:51,450 --> 01:03:55,390 En dan as jy onthou in C wanneer ons wou die lengte van 'n skikking te kry, 1332 01:03:55,390 --> 01:03:56,820 dit was regtig irriterende. 1333 01:03:56,820 --> 01:03:58,460 Maar in JavaScript, super maklik. 1334 01:03:58,460 --> 01:03:59,910 Al wat ons doen, .length. 1335 01:03:59,910 --> 01:04:01,120 Gee dit die lengtes. 1336 01:04:01,120 --> 01:04:01,892 Dis dit. 1337 01:04:01,892 --> 01:04:03,140 >> GEHOOR: Dit is eenvoudig. 1338 01:04:03,140 --> 01:04:05,306 >> HANNAH Blumberg: Ja, maak jou lewe 'n baie makliker. 1339 01:04:05,306 --> 01:04:08,950 1340 01:04:08,950 --> 01:04:11,560 OK, object-- nie daar nie. 1341 01:04:11,560 --> 01:04:15,480 Voorwerpe in JavaScript gevoel 'n baie soos structs in C 1342 01:04:15,480 --> 01:04:18,280 en assosiatiewe skikkings in PHP. 1343 01:04:18,280 --> 01:04:20,270 So wat ons gesien het 'n baie is into, wat 1344 01:04:20,270 --> 01:04:23,150 staan ​​vir JavaScript Object notasie. 1345 01:04:23,150 --> 01:04:25,550 En dit is basies 'n manier strukturering ons data. 1346 01:04:25,550 --> 01:04:27,880 >> So laat ons sien 'n voorbeeld, waarskynlik die maklikste. 1347 01:04:27,880 --> 01:04:32,540 So hier is 'n voorbeeld van 'n voorwerp wat slaan die klas, CS50. 1348 01:04:32,540 --> 01:04:37,790 En toe ek die klas sê, ek bedoel natuurlik nie like-- ja, die kursus, CS50. 1349 01:04:37,790 --> 01:04:40,730 En jy sal sien dat alles in die voorwerp 1350 01:04:40,730 --> 01:04:43,526 gaan word vervat in krullerige draadjies. 1351 01:04:43,526 --> 01:04:48,260 >> En ons begin om veldname assosieer of sleutels met die verskillende waardes. 1352 01:04:48,260 --> 01:04:52,920 Sodat jy kan begin om te sien hoe hierdie soort voel soos 'n assosiatiewe skikking in PHP. 1353 01:04:52,920 --> 01:04:57,450 So ons gaan die veld assosieer of die sleutel naam, natuurlik, met die string, 1354 01:04:57,450 --> 01:04:58,510 CS50. 1355 01:04:58,510 --> 01:04:59,940 >> Ons gaan 'n instrukteur het. 1356 01:04:59,940 --> 01:05:00,940 Ons gaan TFS het. 1357 01:05:00,940 --> 01:05:05,240 Ons gaan aantal psets het en ons gaan aangeteken. 1358 01:05:05,240 --> 01:05:10,720 En een cool ding om daarop te let is al hierdie dinge het verskillende tipes, 1359 01:05:10,720 --> 01:05:12,020 en dit is heeltemal fyn. 1360 01:05:12,020 --> 01:05:15,330 >> Dit is goed vir 'n voorwerp, in werklikheid, dit is waarskynlik verwag vir 'n voorwerp 1361 01:05:15,330 --> 01:05:19,620 om 'n kombinasie van snare het en nommers en Booleans en skikkings 1362 01:05:19,620 --> 01:05:23,420 en alles anders wat jy dalk wil in jou voorwerp. 1363 01:05:23,420 --> 01:05:28,570 En let dat hierdie gaan wees die name of die sleutels, en dan het ons net 1364 01:05:28,570 --> 01:05:30,300 stel dit gelyk met 'n bietjie kolon. 1365 01:05:30,300 --> 01:05:32,015 >> GEHOOR: Wat presies beteken into beteken? 1366 01:05:32,015 --> 01:05:33,890 HANNAH Blumberg: Wat presies beteken into beteken? 1367 01:05:33,890 --> 01:05:36,470 Into staan ​​net vir die JavaScript Object notasie. 1368 01:05:36,470 --> 01:05:38,430 Dit is net 'n manier van uitleg. 1369 01:05:38,430 --> 01:05:40,040 Ja. 1370 01:05:40,040 --> 01:05:41,800 Dit is 'n manier om die formatering ons data. 1371 01:05:41,800 --> 01:05:43,620 >> In C, dit is structs. 1372 01:05:43,620 --> 01:05:45,800 In PHP, dit is assosiatiewe skikkings. 1373 01:05:45,800 --> 01:05:47,120 In JavaScript, ons het voorwerpe. 1374 01:05:47,120 --> 01:05:48,969 >> GEHOOR: So CS50 is 'n voorwerp? 1375 01:05:48,969 --> 01:05:51,010 HANNAH Blumberg: CS50 is die voorwerp in hierdie geval. 1376 01:05:51,010 --> 01:05:54,830 1377 01:05:54,830 --> 01:05:57,880 Nou, hoe weet ons eintlik toegang diegene velde of verander die velde. 1378 01:05:57,880 --> 01:06:03,920 Byvoorbeeld, veronderstel ons dat besluit jy wou een minder pset hierdie semester. 1379 01:06:03,920 --> 01:06:06,300 In plaas van nege, ons is net gaan om agt. 1380 01:06:06,300 --> 01:06:08,240 Hoe sou ons dat verander? 1381 01:06:08,240 --> 01:06:09,436 >> O, verkeerde manier. 1382 01:06:09,436 --> 01:06:11,060 Daar is twee maniere waarop ons dit kan doen. 1383 01:06:11,060 --> 01:06:13,490 Nommer een is met die dot notasie en nommer twee 1384 01:06:13,490 --> 01:06:15,750 is met die vierkante hakienotasie. 1385 01:06:15,750 --> 01:06:19,720 So, byvoorbeeld, as ek wou verander of toegang 1386 01:06:19,720 --> 01:06:26,820 die veld psets in ons CS50 voorwerp, wat ek sou doen is CS50.psets, 1387 01:06:26,820 --> 01:06:30,770 sodat die naam van die voorwerp dot die naam van die land of die sleutel. 1388 01:06:30,770 --> 01:06:37,120 >> Baie soortgelyk, dit is presies ekwivalent te doen CS50, en dan 1389 01:06:37,120 --> 01:06:42,050 vierkantige draadjies, psets. 1390 01:06:42,050 --> 01:06:42,837 Koel? 1391 01:06:42,837 --> 01:06:44,298 Ja. 1392 01:06:44,298 --> 01:06:47,707 >> GEHOOR: So is into tegnies JavaScript steeds, 1393 01:06:47,707 --> 01:06:51,814 selfs al in die psets ons skei dit uit [onhoorbaar]? 1394 01:06:51,814 --> 01:06:52,730 HANNAH Blumberg: Natuurlik. 1395 01:06:52,730 --> 01:06:56,290 So die vraag is, is JavaScript en into ekwivalent? 1396 01:06:56,290 --> 01:07:00,750 So into is notasie, basies die manier waarop ons uit te skryf 1397 01:07:00,750 --> 01:07:02,700 'n voorwerp van JavaScript. 1398 01:07:02,700 --> 01:07:05,190 So hulle is nie presies dieselfde. 1399 01:07:05,190 --> 01:07:08,950 >> Ek sou sê JavaScript, is daar is voorwerpe in JavaScript. 1400 01:07:08,950 --> 01:07:12,590 Into neem die voorwerpe en druk hulle en gee dit 1401 01:07:12,590 --> 01:07:15,160 of stoor dit in 'n mooi manier. 1402 01:07:15,160 --> 01:07:18,110 So into is nie 'n programmeertaal taal die manier waarop JavaScript is. 1403 01:07:18,110 --> 01:07:20,900 Dis net die notasie vir ons voorwerpe in JavaScript. 1404 01:07:20,900 --> 01:07:21,400 Ja. 1405 01:07:21,400 --> 01:07:24,144 >> GEHOOR: So wat presies [Onhoorbaar] te voltooi? 1406 01:07:24,144 --> 01:07:25,060 HANNAH Blumberg: Natuurlik. 1407 01:07:25,060 --> 01:07:27,727 So dit is eintlik niks. 1408 01:07:27,727 --> 01:07:28,935 Dit is net 'n manier om toegang te verkry. 1409 01:07:28,935 --> 01:07:31,393 So kom ons sê ons wil verander die aantal van die probleem stelle 1410 01:07:31,393 --> 01:07:32,450 9-8. 1411 01:07:32,450 --> 01:07:34,383 Wat ons doen is om iets te doen soos CS50.psets = 8 ;. 1412 01:07:34,383 --> 01:07:38,500 1413 01:07:38,500 --> 01:07:39,400 >> Ja, n groot vraag. 1414 01:07:39,400 --> 01:07:40,733 Dit is net om jou sintaksis te toon. 1415 01:07:40,733 --> 01:07:43,620 Maak nie eintlik enigiets nuttigs doen. 1416 01:07:43,620 --> 01:07:46,085 Enige vrae? 1417 01:07:46,085 --> 01:07:48,210 Beweeg reg langs. 1418 01:07:48,210 --> 01:07:51,960 >> So laat ons kyk na 'n vinnige voorbeeld van hoe JavaScript werk omdat ek jou vertel dit 1419 01:07:51,960 --> 01:07:55,170 doen al hierdie dinge en koel ons toelaat om webblaaie te verander. 1420 01:07:55,170 --> 01:07:56,970 Kom ons eintlik sien dit in aksie. 1421 01:07:56,970 --> 01:07:59,850 So neem, byvoorbeeld, hierdie HTML lêer. 1422 01:07:59,850 --> 01:08:04,350 >> En die ding wat ek wil om te fokus op is hierdie spesifieke tag, wat is 'n knoppie, 1423 01:08:04,350 --> 01:08:06,182 met id search_button. 1424 01:08:06,182 --> 01:08:08,670 Dis net op die bladsy. 1425 01:08:08,670 --> 01:08:10,690 So nou, laat ons sien wat kan ons werklik doen. 1426 01:08:10,690 --> 01:08:12,560 >> Wel, dink wanneer jy kliek die knoppie, 1427 01:08:12,560 --> 01:08:16,010 ons wil 'n alert-- maak jy gekliek op die knoppie. 1428 01:08:16,010 --> 01:08:17,840 Kom ons kyk hoe ons dit kan doen. 1429 01:08:17,840 --> 01:08:23,869 So window.onload-- dit is nie iets wat jy gesien het in die klas, dus 1430 01:08:23,869 --> 01:08:26,180 sal nie nodig om dit te weet vir die quiz. 1431 01:08:26,180 --> 01:08:33,660 Maar dit sê basies, OK, call hierdie funksie wanneer die venster vragte. 1432 01:08:33,660 --> 01:08:35,080 >> So dit is net soort van die opstel van die kode. 1433 01:08:35,080 --> 01:08:36,390 Moenie so baie oor wat bekommerd wees nie. 1434 01:08:36,390 --> 01:08:39,170 Wat ek wil hê jy om te fokus op is hier. 1435 01:08:39,170 --> 01:08:44,020 Ons sê var Search gelyk document.getElementByID search_button. 1436 01:08:44,020 --> 01:08:46,450 >> So as jy kan raai, wat dit doen, is dit sê, 1437 01:08:46,450 --> 01:08:50,920 OK, gaan soek die element met ID search_button. 1438 01:08:50,920 --> 01:08:52,790 En nou het ons dat werklike element en ek is 1439 01:08:52,790 --> 01:08:56,279 gaan om dit te slaan in 'n veranderlike Search. 1440 01:08:56,279 --> 01:09:00,651 En nou kan ons eintlik gebruik daardie element en verander dit, of toegang tot sy waardes, 1441 01:09:00,651 --> 01:09:01,359 dinge soos dat. 1442 01:09:01,359 --> 01:09:04,649 Ons kan eintlik begin betrokke te raak met die webblad. 1443 01:09:04,649 --> 01:09:10,330 >> So hier is ek sê, OK, nou dat ek dat die knoppie, wanneer dit gekliek word, 1444 01:09:10,330 --> 01:09:12,859 noem hierdie anonieme funksie. 1445 01:09:12,859 --> 01:09:16,811 So dit is waar anonieme funksies word nuttig. 1446 01:09:16,811 --> 01:09:18,060 En wat beteken die funksie te doen? 1447 01:09:18,060 --> 01:09:20,529 Wel, dit noem net hierdie waarskuwing funksie en dit sê, 1448 01:09:20,529 --> 01:09:22,910 jy gekliek op die knoppie Soek. 1449 01:09:22,910 --> 01:09:29,670 >> So, wat sal gebeur as ek gaan na waar hierdie HTML leef en ek kliek op die knoppie, 1450 01:09:29,670 --> 01:09:33,729 Ek sal 'n fancy bietjie wakker te kry wat sê jy gekliek op die knoppie. 1451 01:09:33,729 --> 01:09:40,710 So die dinge om te fokus op here-- document.getElementByID 1452 01:09:40,710 --> 01:09:44,960 kry 'n bepaalde HTML element met die gegewe ID. 1453 01:09:44,960 --> 01:09:48,529 En nou kan ons ' wat moet gebeur wanneer 1454 01:09:48,529 --> 01:09:50,702 daardie spesifieke element word gebruik. 1455 01:09:50,702 --> 01:09:52,670 >> GEHOOR: Ons moet alles in te sit? 1456 01:09:52,670 --> 01:09:53,162 >> HANNAH Blumberg: Jammer? 1457 01:09:53,162 --> 01:09:55,130 >> GEHOOR: Moet ons fisies al daardie kode? 1458 01:09:55,130 --> 01:09:56,340 >> HANNAH Blumberg: Moet ons fisies al daardie kode? 1459 01:09:56,340 --> 01:09:56,839 Ja. 1460 01:09:56,839 --> 01:09:58,120 Is dit nie hierdie soort van irriterende? 1461 01:09:58,120 --> 01:10:00,032 Dit is 'n baie van die kode. 1462 01:10:00,032 --> 01:10:01,574 >> GEHOOR: Jy kan iets invoer. 1463 01:10:01,574 --> 01:10:02,532 HANNAH Blumberg: Right. 1464 01:10:02,532 --> 01:10:03,610 Ons kan iets te gebruik. 1465 01:10:03,610 --> 01:10:08,140 En in particular-- oh, dit is vertel my ek moet artikel te leer. 1466 01:10:08,140 --> 01:10:11,061 In die besonder, laat gebruik van die biblioteek jQuery, 1467 01:10:11,061 --> 01:10:13,060 want dit was regtig lang en baie irriterende 1468 01:10:13,060 --> 01:10:16,860 en ek wil in staat wees om dit te vereenvoudig en maak dit korter en makliker om te skryf. 1469 01:10:16,860 --> 01:10:19,810 >> So jQuery is 'n JavaScript-biblioteek. 1470 01:10:19,810 --> 01:10:24,930 JavaScript is so programmering taal; jQuery is 'n biblioteek. 1471 01:10:24,930 --> 01:10:27,190 En dit maak 'n klomp van die dinge makliker. 1472 01:10:27,190 --> 01:10:33,230 Dit maak dit verander en oor gaan 'n HTML-dokument baie makliker. 1473 01:10:33,230 --> 01:10:35,030 >> Dit maak hantering gebeure makliker. 1474 01:10:35,030 --> 01:10:37,580 Dit maak animasie makliker en dit maak Ajax makliker. 1475 01:10:37,580 --> 01:10:40,140 So laat spring in twee van daardie dinge nou. 1476 01:10:40,140 --> 01:10:40,900 Verskoon my. 1477 01:10:40,900 --> 01:10:42,620 Voordat ons dit doen, 'n paar basiese sintaks. 1478 01:10:42,620 --> 01:10:46,870 >> Dit is wat die meeste oproepe na die jQuery biblioteek lyk. 1479 01:10:46,870 --> 01:10:50,520 Ons gebruik hierdie dollar sign-- geen verband teken PHP, 1480 01:10:50,520 --> 01:10:56,030 net inconvenient-- die naam van 'n selector, dot, en dan 'n aksie. 1481 01:10:56,030 --> 01:10:58,860 So laat ons sien n paar konkrete voorbeelde van daardie. 1482 01:10:58,860 --> 01:11:02,980 >> So dit is eintlik dieselfde kode van die geval skuif. 1483 01:11:02,980 --> 01:11:08,740 So hierdie lang, lelike ding word hierdie baie lekkerder, kleiner ding. 1484 01:11:08,740 --> 01:11:10,370 So kom ons probeer om hierdie af te breek. 1485 01:11:10,370 --> 01:11:17,090 Dit sê, OK, jQuery-- hierdie dollar sign-- jQuery, vind my die venster. 1486 01:11:17,090 --> 01:11:18,480 So wat is die selector. 1487 01:11:18,480 --> 01:11:21,800 >> Wanneer dit vragte, skakel hierdie funksie. 1488 01:11:21,800 --> 01:11:23,880 So dit is alles binne. 1489 01:11:23,880 --> 01:11:24,380 OK. 1490 01:11:24,380 --> 01:11:25,740 So ver so goed? 1491 01:11:25,740 --> 01:11:26,750 Alles reg. 1492 01:11:26,750 --> 01:11:32,970 >> Nou, jQuery, vind my ding met ID search_button. 1493 01:11:32,970 --> 01:11:36,090 En wat dit word gebruik, noem hierdie funksie. 1494 01:11:36,090 --> 01:11:37,900 En dan hierdie funksie se presies dieselfde. 1495 01:11:37,900 --> 01:11:41,052 Net nie 'n bietjie van waarskuwing, jy gekliek op die knoppie Soek. 1496 01:11:41,052 --> 01:11:42,650 >> So dit is regtig lekker. 1497 01:11:42,650 --> 01:11:46,260 Dit kondenseer regtig en vereenvoudig ons kode. 1498 01:11:46,260 --> 01:11:49,030 Hoe het ek geweet dat dit is ID search_button 1499 01:11:49,030 --> 01:11:50,960 en nie soos die klas search_button? 1500 01:11:50,960 --> 01:11:52,024 >> GEHOOR: hashtag? 1501 01:11:52,024 --> 01:11:52,940 HANNAH Blumberg: Ja. 1502 01:11:52,940 --> 01:11:56,450 Dit hash simbool, dit is net soos CSS. 1503 01:11:56,450 --> 01:12:00,080 So onthou, met CSS, wanneer ons wou iets deur ID kies, 1504 01:12:00,080 --> 01:12:01,590 ons gebruik die pond teken. 1505 01:12:01,590 --> 01:12:05,400 En toe ons wou kies iets wat deur die klas, gebruik ons ​​die dot. 1506 01:12:05,400 --> 01:12:06,870 Groot. 1507 01:12:06,870 --> 01:12:08,230 Maak sin? 1508 01:12:08,230 --> 01:12:11,500 So jQuery is veronderstel om maak net ons lewe makliker te maak. 1509 01:12:11,500 --> 01:12:12,000 Ja. 1510 01:12:12,000 --> 01:12:15,660 >> GEHOOR: So ek is 'n bietjie verward hoe die anonieme funksie werk. 1511 01:12:15,660 --> 01:12:19,027 Het jy noem hierdie anonymouse funksie, funksioneer? 1512 01:12:19,027 --> 01:12:20,594 Hoe word dit genoem? 1513 01:12:20,594 --> 01:12:21,510 HANNAH Blumberg: Natuurlik. 1514 01:12:21,510 --> 01:12:25,812 So funksie is net 'n term wat sê, ek is op die punt om 'n funksie te definieer. 1515 01:12:25,812 --> 01:12:26,520 GEHOOR: O, OK. 1516 01:12:26,520 --> 01:12:27,353 HANNAH Blumberg: OK? 1517 01:12:27,353 --> 01:12:32,120 En dan slaag ons dit as 'n argument aan- Kom ons neem 1518 01:12:32,120 --> 01:12:37,040 hierdie innerlike one-- om die klik-funksie. 1519 01:12:37,040 --> 01:12:39,420 So ja, so daardie funksie, hierdie anonieme funksie, 1520 01:12:39,420 --> 01:12:40,910 word 'n werklike argument. 1521 01:12:40,910 --> 01:12:43,632 So onthou in JavaScript, ons kan funksies te hanteer as waardes. 1522 01:12:43,632 --> 01:12:44,340 GEHOOR: O, OK. 1523 01:12:44,340 --> 01:12:45,256 HANNAH Blumberg: Ja. 1524 01:12:45,256 --> 01:12:46,035 Ek hou van wat "O". 1525 01:12:46,035 --> 01:12:47,490 Lekker. 1526 01:12:47,490 --> 01:12:49,915 Ander vrae? 1527 01:12:49,915 --> 01:12:50,505 Tyd? 1528 01:12:50,505 --> 01:12:51,380 MARIA ZLATKOVA: Goed. 1529 01:12:51,380 --> 01:12:52,760 Goed. 1530 01:12:52,760 --> 01:12:54,210 >> HANNAH Blumberg: Awesome. 1531 01:12:54,210 --> 01:12:55,720 'N paar vinnige nuttige jQuery. 1532 01:12:55,720 --> 01:12:57,559 Ek gaan nie om te gaan deur al hierdie. 1533 01:12:57,559 --> 01:12:59,350 Hierdie skyfies sal wees up aanlyn 'n bietjie 1534 01:12:59,350 --> 01:13:02,040 later, so kan jy check dit uit 'n bietjie later. 1535 01:13:02,040 --> 01:13:07,120 Maar basies, die algemene patroon hou waar ons sê: 1536 01:13:07,120 --> 01:13:11,510 OK, hey, jQuery, hier is my selector en dan hier is 'n aksie. 1537 01:13:11,510 --> 01:13:15,940 En jy kan dinge doen soos die toegang waarde van 'n vorm, toegang tot sekere HTML, 1538 01:13:15,940 --> 01:13:19,195 beheer wat gebeur wanneer die gebruiker lê 'n vorm, dinge soos dat. 1539 01:13:19,195 --> 01:13:20,106 Ja. 1540 01:13:20,106 --> 01:13:22,090 >> GEHOOR: So in die eksamen, gaan ons nodig 1541 01:13:22,090 --> 01:13:25,066 nogal 'n baie weet van die jQuery dokumentasie. 1542 01:13:25,066 --> 01:13:31,018 So gegee dat ons kopieer / plak die jQuery dokumentasie aan ons oneerlik vel, 1543 01:13:31,018 --> 01:13:32,506 Waar is die lyn getrek? 1544 01:13:32,506 --> 01:13:33,957 Soos hoeveel het ons nodig om te weet? 1545 01:13:33,957 --> 01:13:35,290 HANNAH Blumberg: Groot vraag. 1546 01:13:35,290 --> 01:13:37,765 Die vraag is wese gegee dat jy 1547 01:13:37,765 --> 01:13:41,330 kan nie toegang tot die jQuery dokumentasie tydens die toets, hoeveel moet jy 1548 01:13:41,330 --> 01:13:41,830 ken? 1549 01:13:41,830 --> 01:13:45,540 Ons sal nie van jou verwag om te kom met 'n paar random funksie 1550 01:13:45,540 --> 01:13:47,240 dat ons wat jy sou verwag om Google. 1551 01:13:47,240 --> 01:13:52,930 >> Dinge wat fair game is, is ek wil sê net soort van die algemene sintaksis, 1552 01:13:52,930 --> 01:13:58,310 in staat is om te kies deur ID en deur class-- so net soos CSS. 1553 01:13:58,310 --> 01:14:01,876 En dan is die werklike funksies vrywilligers, ons sal jou waarskynlik vertel. 1554 01:14:01,876 --> 01:14:02,376 Ja. 1555 01:14:02,376 --> 01:14:05,591 >> GEHOOR: So wanneer jy kies deur die klas dot sou beteken. 1556 01:14:05,591 --> 01:14:06,840 HANNAH Blumberg: Ja, presies. 1557 01:14:06,840 --> 01:14:07,340 Goed. 1558 01:14:07,340 --> 01:14:10,461 Wanneer jy by die klas te kies, gaan dit word dot in plaas van die pond teken. 1559 01:14:10,461 --> 01:14:10,960 Ja. 1560 01:14:10,960 --> 01:14:12,710 >> GEHOOR: Sou jy gaan oor die verskil 1561 01:14:12,710 --> 01:14:14,310 tussen die kies deur ID en klas? 1562 01:14:14,310 --> 01:14:14,560 >> HANNAH Blumberg: Natuurlik. 1563 01:14:14,560 --> 01:14:17,510 Die verskil tussen die kies ID en kies deur die klas. 1564 01:14:17,510 --> 01:14:20,685 So as Maria het gesê 'n bietjie vroeër, is daar 1565 01:14:20,685 --> 01:14:26,280 kan slegs een HTML element wees met 'n gegewe ID, terwyl die klas, 1566 01:14:26,280 --> 01:14:29,740 dit ons toelaat om die groep 'n klomp van verskillende elemente saam, 1567 01:14:29,740 --> 01:14:34,300 so dinge wat verband hou, maar nie presies dieselfde. 1568 01:14:34,300 --> 01:14:35,685 Is dit die vraag beantwoord? 1569 01:14:35,685 --> 01:14:36,200 Awesome. 1570 01:14:36,200 --> 01:14:37,194 Ja. 1571 01:14:37,194 --> 01:14:40,680 >> GEHOOR: Wat gebeur as jy verskeie het dinge wat in dieselfde klas? 1572 01:14:40,680 --> 01:14:42,150 >> HANNAH Blumberg: Wat gebeur as jy het verskeie dinge wat 1573 01:14:42,150 --> 01:14:43,280 is dieselfde klas? 1574 01:14:43,280 --> 01:14:45,829 So, byvoorbeeld, as ons net die gebruik van suiwer JavaScript, 1575 01:14:45,829 --> 01:14:48,120 sou ons iets te doen soos document.getElementsByClass. 1576 01:14:48,120 --> 01:14:52,280 1577 01:14:52,280 --> 01:14:56,320 En dan wat dit eintlik nie is opbrengste 'n verskeidenheid van elemente. 1578 01:14:56,320 --> 01:14:59,517 >> En jy het om óf Itereer oor hulle of vind watter een jy wil. 1579 01:14:59,517 --> 01:15:01,350 Dit gaan nie om te gee jy 'n enkele element. 1580 01:15:01,350 --> 01:15:03,450 Dit gaan om jou te gee 'n verskeidenheid van elemente. 1581 01:15:03,450 --> 01:15:05,280 N groot vraag. 1582 01:15:05,280 --> 01:15:07,700 Enigiets anders? 1583 01:15:07,700 --> 01:15:09,520 Awesome. 1584 01:15:09,520 --> 01:15:12,860 >> So ek dink as wat jy ken enige jQuery jy gesien het in die pset, 1585 01:15:12,860 --> 01:15:15,600 jy moet goed om te gaan. 1586 01:15:15,600 --> 01:15:16,325 Vraag? 1587 01:15:16,325 --> 01:15:17,610 Ag nee. 1588 01:15:17,610 --> 01:15:18,859 Ek het regtig te leer. 1589 01:15:18,859 --> 01:15:19,358 Ontspan. 1590 01:15:19,358 --> 01:15:20,035 Dit sal goed wees. 1591 01:15:20,035 --> 01:15:20,660 Ek sal daar te kom. 1592 01:15:20,660 --> 01:15:24,670 1593 01:15:24,670 --> 01:15:26,870 >> Kom ons praat oor Ajax. 1594 01:15:26,870 --> 01:15:31,350 So Ajax gaan a-- goed, laat ons begin met dit waarvoor dit staan. 1595 01:15:31,350 --> 01:15:32,350 Dit is 'n akroniem. 1596 01:15:32,350 --> 01:15:35,855 Dit staan ​​vir Asynchronous JavaScript en XML. 1597 01:15:35,855 --> 01:15:39,800 En XML is basies gaan wees [Onhoorbaar] met 'n tipe van ons data. 1598 01:15:39,800 --> 01:15:42,100 Maar ons het nie eintlik gebruik XML. 1599 01:15:42,100 --> 01:15:43,430 In plaas daarvan, het ons net gebruik into. 1600 01:15:43,430 --> 01:15:48,350 >> So basies, dit is 'n paar data-- asynchrone, JavaScript, en data, 1601 01:15:48,350 --> 01:15:50,040 in hierdie geval, into. 1602 01:15:50,040 --> 01:15:52,820 En ons doel, soos ons genoem 'n bietjie vroeër, 1603 01:15:52,820 --> 01:15:56,880 is om in staat wees om 'n maak versoek het daardie versoek doen 1604 01:15:56,880 --> 01:16:00,700 sy ding in die agtergrond, maar voortgaan 1605 01:16:00,700 --> 01:16:02,550 doen wat ons van voorneme is om te doen. 1606 01:16:02,550 --> 01:16:06,650 En dan wanneer daardie inligting gereed is, dan sal ons dit inkorporeer. 1607 01:16:06,650 --> 01:16:08,470 >> So laat ons sien wat hierdie eintlik lyk. 1608 01:16:08,470 --> 01:16:11,210 En dit, moet jy wees 'n bietjie bekend 1609 01:16:11,210 --> 01:16:13,680 van pset8, die een wat jy net omgedraai in. 1610 01:16:13,680 --> 01:16:16,200 So hier is 'n geldige jQuery funksie wat ons mag 1611 01:16:16,200 --> 01:16:18,250 wil weet about-- hierdie dollar teken. 1612 01:16:18,250 --> 01:16:21,500 So dit jQuery funksie .getJson sê. 1613 01:16:21,500 --> 01:16:25,020 >> En wat dit doen, is dit funksie neem 'n URL en 'n paar parameters-- 1614 01:16:25,020 --> 01:16:28,000 so ek dink in die geval van pset8, dit was soos, 1615 01:16:28,000 --> 01:16:33,520 die URL was articles.php en die parameters was go = sommige poskode. 1616 01:16:33,520 --> 01:16:41,580 En dit sê, OK, maak 'n versoek aan hierdie URL met die gegewe parameters. 1617 01:16:41,580 --> 01:16:43,480 En wat net gebeur. 1618 01:16:43,480 --> 01:16:47,730 >> Wanneer dit voltooi is, is dit óf gaan om suksesvol te voltooi 1619 01:16:47,730 --> 01:16:49,370 of dit gaan om te misluk. 1620 01:16:49,370 --> 01:16:53,480 So, dit is die ekwivalent van die oproep Rob en hom vra om iets te doen. 1621 01:16:53,480 --> 01:17:00,260 En dan wanneer hy noem terug, hy is óf gaan om te sê ek gedoen of ek misluk. 1622 01:17:00,260 --> 01:17:04,030 >> So in die geval waar jy gedoen het, sê jy, OK, ek is gedaan. 1623 01:17:04,030 --> 01:17:05,980 En dan hierdie funksie noem jou. 1624 01:17:05,980 --> 01:17:08,915 In hierdie geval, dit gaan om 'n wees funksie wat 'n paar inligting neem. 1625 01:17:08,915 --> 01:17:12,890 Die een wat ons gewoonlik omgee is data, die data wat ons eintlik is teruggestuur 1626 01:17:12,890 --> 01:17:15,900 as 'n gevolg van die roeping .getJSON. 1627 01:17:15,900 --> 01:17:17,470 >> En jy kan iets doen met dit. 1628 01:17:17,470 --> 01:17:23,670 So in die geval van pset8, Ons vertoon dit as 'n lys. 1629 01:17:23,670 --> 01:17:29,050 Fail gaan 'n funksie wees wat genoem word indien die versoek versuim 1630 01:17:29,050 --> 01:17:30,450 vir watter rede ookal. 1631 01:17:30,450 --> 01:17:35,104 En in die geval van pset8, ons console.log dit net. 1632 01:17:35,104 --> 01:17:36,020 Enige vrae oor dit? 1633 01:17:36,020 --> 01:17:36,300 Ja. 1634 01:17:36,300 --> 01:17:39,633 >> GEHOOR: Kan ons gebruik net funksie theta in plaas van funksie, textStatus, jqHXR. 1635 01:17:39,633 --> 01:17:43,464 1636 01:17:43,464 --> 01:17:44,380 HANNAH Blumberg: Natuurlik. 1637 01:17:44,380 --> 01:17:46,713 So ja, ek dink in die pset, sien ons net funksie data. 1638 01:17:46,713 --> 01:17:48,700 So dit is net the-- ja, OK. 1639 01:17:48,700 --> 01:17:50,510 Dit is wat ons gesien het in die pset. 1640 01:17:50,510 --> 01:17:51,480 Dit is heeltemal fyn. 1641 01:17:51,480 --> 01:17:54,210 >> Dit is net as jy wil om te trek uit meer inligting, 1642 01:17:54,210 --> 01:17:57,190 dit is die dinge wat jy kan kry van .getJSON. 1643 01:17:57,190 --> 01:17:59,040 Goeie vraag. 1644 01:17:59,040 --> 01:17:59,706 Enigiets anders? 1645 01:17:59,706 --> 01:18:00,206 Ja. 1646 01:18:00,206 --> 01:18:01,787 >> GEHOOR: So .getJSON is Ajax? 1647 01:18:01,787 --> 01:18:02,620 HANNAH Blumberg: OK. 1648 01:18:02,620 --> 01:18:05,700 So, dit is die aard van die moeilike deel. 1649 01:18:05,700 --> 01:18:12,390 Dit is 'n jQuery funksie wat toelaat jy asynchrone oproepe te doen. 1650 01:18:12,390 --> 01:18:16,080 En diegene asynchrone oproepe, dit is wat ons het verwys na as Ajax. 1651 01:18:16,080 --> 01:18:16,850 Ja. 1652 01:18:16,850 --> 01:18:20,185 Dit het my 'n baie lang tyd om te uitmekaar trek toe ek 'n student. 1653 01:18:20,185 --> 01:18:21,560 GEHOOR: Kan jy weer sê? 1654 01:18:21,560 --> 01:18:22,476 HANNAH Blumberg: Ja. 1655 01:18:22,476 --> 01:18:23,630 Kan ek dit weer sê? 1656 01:18:23,630 --> 01:18:29,010 Dit .getJSON funksie, dit is 'n jQuery funksie. 1657 01:18:29,010 --> 01:18:31,970 En dit gaan om 'n asinchrone oproep. 1658 01:18:31,970 --> 01:18:35,700 En dit asynchrone oproepe, het ons is verwys na diegene soos Ajax. 1659 01:18:35,700 --> 01:18:39,610 1660 01:18:39,610 --> 01:18:41,872 >> Enige ander vrae? 1661 01:18:41,872 --> 01:18:43,330 Ons het net 'n paar minute oor. 1662 01:18:43,330 --> 01:18:45,080 En Maria se gaan draai met sekuriteit 1663 01:18:45,080 --> 01:18:47,464 en dan gaan ons om net oor gedoen word. 1664 01:18:47,464 --> 01:18:48,630 MARIA ZLATKOVA: Awesome, OK. 1665 01:18:48,630 --> 01:18:54,030 So hierdie is-- neem net 'n paar sekondes te kyk oor hierdie. 1666 01:18:54,030 --> 01:18:56,750 En dit is nie iets wat regtig baie goed. 1667 01:18:56,750 --> 01:18:59,430 En kan iemand my vertel hoekom? 1668 01:18:59,430 --> 01:19:05,650 Wat gaan aan in cat en mag kon potensieel lei tot iets wat sleg is, 1669 01:19:05,650 --> 01:19:06,770 en wat dit genoem? 1670 01:19:06,770 --> 01:19:07,270 Ja. 1671 01:19:07,270 --> 01:19:10,391 GEHOOR: As die argument wat geslaag is meer as 12 karakters, 1672 01:19:10,391 --> 01:19:11,454 dit kan oorloop. 1673 01:19:11,454 --> 01:19:12,370 MARIA ZLATKOVA: Right. 1674 01:19:12,370 --> 01:19:14,180 Volmaak. 1675 01:19:14,180 --> 01:19:15,384 Wat word dit genoem? 1676 01:19:15,384 --> 01:19:16,300 Jy genoem is dit net. 1677 01:19:16,300 --> 01:19:16,840 >> GEHOOR: Buffer oorloop. 1678 01:19:16,840 --> 01:19:18,381 >> MARIA ZLATKOVA: Yup, buffer oorloop. 1679 01:19:18,381 --> 01:19:21,230 So, dit is iets wat ons verwys na as buffer oorloop. 1680 01:19:21,230 --> 01:19:25,500 En ons sien dat die binnekant van cat, ons het ons buffer, c gedefinieer, 1681 01:19:25,500 --> 01:19:27,240 met 'n grootte van 12. 1682 01:19:27,240 --> 01:19:32,680 Maar in die belangrikste, ons doen nie kyk op enige manier op alle 1683 01:19:32,680 --> 01:19:36,480 of die argv1-- sodat was die tweede argument. 1684 01:19:36,480 --> 01:19:39,630 Ons kyk nie of die grootte van dit is gepas. 1685 01:19:39,630 --> 01:19:43,380 >> So as ons het 'n veral kwaadwillige gebruiker 1686 01:19:43,380 --> 01:19:47,170 wat in sommige argument wat sit langer as 12, en dan potensieel 1687 01:19:47,170 --> 01:19:50,850 buite die grense van daardie argument, het 'n paar uitvoerbare kode 1688 01:19:50,850 --> 01:19:55,570 dat hy probeer om iets te doen slegte met dit; dan is dit, wat sou gebeur, 1689 01:19:55,570 --> 01:19:59,310 sou die terugkeer ignoreer adres van die cat funksie, 1690 01:19:59,310 --> 01:20:04,370 veroorsaak dat die funksie om toe terug te keer na daardie kode uit te voer. 1691 01:20:04,370 --> 01:20:07,540 En dan slegte dinge kan gebeur. 1692 01:20:07,540 --> 01:20:09,850 Maak dit sin om almal? 1693 01:20:09,850 --> 01:20:12,424 >> En hoe kan ons beskerm teen dit? 1694 01:20:12,424 --> 01:20:13,090 Enige voorstelle? 1695 01:20:13,090 --> 01:20:16,480 1696 01:20:16,480 --> 01:20:21,890 Basies, binnekant van potensieel cat, hoe 1697 01:20:21,890 --> 01:20:28,294 kan ons kyk om seker te maak dat dit nie kan gebeur? 1698 01:20:28,294 --> 01:20:33,879 >> GEHOOR: As die grootte 12 oorskry, sou jy ekstra geheue toeken? 1699 01:20:33,879 --> 01:20:37,170 MARIA ZLATKOVA: Voorstelle is, toe te ken addisionele geheue van die grootte oorskry. 1700 01:20:37,170 --> 01:20:39,800 Eintlik kan ons iets wat 'n doen baie eenvoudiger as wat as goed. 1701 01:20:39,800 --> 01:20:44,870 Ons kan net die string lengte van die argument wat aangegaan, 1702 01:20:44,870 --> 01:20:48,590 kyk of wat minder as of gelyk aan 12-- 1703 01:20:48,590 --> 01:20:50,790 en dit is wat ons wil hê dit te wees, want ons wil nie 1704 01:20:50,790 --> 01:20:52,373 dit aan die grense van ons buffer oorskry. 1705 01:20:52,373 --> 01:20:55,690 En dan as dit nie gebeur nie, ons kan werk met die argument. 1706 01:20:55,690 --> 01:21:00,296 En dan as dit nie, ons eintlik wil potensieel Yello by die gebruiker. 1707 01:21:00,296 --> 01:21:01,670 Maar dit is hoe ons dit sou doen. 1708 01:21:01,670 --> 01:21:02,443 Ja. 1709 01:21:02,443 --> 01:21:04,360 >> GEHOOR: Kan jy verduidelik memcpy ware vinnig? 1710 01:21:04,360 --> 01:21:05,443 MARIA ZLATKOVA: Ag, jammer. 1711 01:21:05,443 --> 01:21:06,040 Ja. 1712 01:21:06,040 --> 01:21:11,290 Memcpy neem alles is-- jammer, OK. 1713 01:21:11,290 --> 01:21:15,850 Memcpy neem alles wat in bar, wat ook al verby 1714 01:21:15,850 --> 01:21:18,050 op cat as die command line argument. 1715 01:21:18,050 --> 01:21:19,440 So dit gaan argv1 neem. 1716 01:21:19,440 --> 01:21:21,420 Argv1 is bar hier genoem. 1717 01:21:21,420 --> 01:21:24,453 So dit gaan bar te neem en dit gaan om dit te kopieer na c. 1718 01:21:24,453 --> 01:21:25,402 >> GEHOOR: OK. 1719 01:21:25,402 --> 01:21:28,360 MARIA ZLATKOVA: En dit gaan copy-- die derde argument verwys net 1720 01:21:28,360 --> 01:21:30,601 hoeveel dit gaan kopieer na c. 1721 01:21:30,601 --> 01:21:31,142 GEHOOR: Ag. 1722 01:21:31,142 --> 01:21:33,030 So hierdie een kopiëring al dan. 1723 01:21:33,030 --> 01:21:34,310 >> MARIA ZLATKOVA: Ja, dit is die kopiëring alles. 1724 01:21:34,310 --> 01:21:34,810 Yep. 1725 01:21:34,810 --> 01:21:38,400 1726 01:21:38,400 --> 01:21:41,910 Eerste, maak ons ​​seker dat die bar is nie gelyk aan NULL, want dit is 'n wyser. 1727 01:21:41,910 --> 01:21:44,680 Dan kry ons die string lengte van bar. 1728 01:21:44,680 --> 01:21:47,530 Ons maak seker dat dit minder as of gelyk aan 12. 1729 01:21:47,530 --> 01:21:50,070 En dan, want ons het seker gemaak, kan ons eintlik 1730 01:21:50,070 --> 01:21:53,122 memcpy en seker wees dat dit is OK. 1731 01:21:53,122 --> 01:21:53,705 Enige vrae? 1732 01:21:53,705 --> 01:21:56,280 1733 01:21:56,280 --> 01:21:58,690 Groot. 1734 01:21:58,690 --> 01:22:00,400 Ek het twee waar of vals vrae. 1735 01:22:00,400 --> 01:22:05,470 Kan iemand my vertel dadelik As dit is waar of vals? 1736 01:22:05,470 --> 01:22:07,460 Ja, dit is onwaar. 1737 01:22:07,460 --> 01:22:07,960 Presies. 1738 01:22:07,960 --> 01:22:09,330 Beide van hulle is vals. 1739 01:22:09,330 --> 01:22:12,682 Sodat die gebruik van 'n enkele wagwoord is nooit regtig 'n goeie idee 1740 01:22:12,682 --> 01:22:14,890 want as iemand weet jou wagwoord, kan hulle net 1741 01:22:14,890 --> 01:22:16,260 toegang tot al jou ander rekeninge. 1742 01:22:16,260 --> 01:22:19,260 En dan ikone niks doen nie om veiligheid te verseker. 1743 01:22:19,260 --> 01:22:24,900 Ons moet gewoonlik kyk vir HTTPS in plaas van HTTP en die URL. 1744 01:22:24,900 --> 01:22:28,560 >> En 'n paar ander vorme van aanvalle wat ons genoem het, 1745 01:22:28,560 --> 01:22:31,390 Dawid in genoem lesings, SQL-inspuiting aanvalle. 1746 01:22:31,390 --> 01:22:37,310 Ons het reeds gesien dat as ons die don't-- CS50 navraag funksie maak seker dat SQL 1747 01:22:37,310 --> 01:22:39,530 inspuiting aanvalle kan nie plaasvind nie. 1748 01:22:39,530 --> 01:22:42,640 Maar as ons nie die gebruik van CS50, quote, unquote "in die soektog," 1749 01:22:42,640 --> 01:22:46,830 ons sou hê om seker te maak dat die toevoer van die gebruiker is nie eintlik 'n paar SQL 1750 01:22:46,830 --> 01:22:49,670 navraag wat al sal veroorsaak ons tafels te laat val 1751 01:22:49,670 --> 01:22:54,070 of iets sleg gebeur met ons databasis. 1752 01:22:54,070 --> 01:22:56,790 >> Sessie kaping is 'n ander tipe van aanval 1753 01:22:56,790 --> 01:23:05,940 wat gebeur wanneer 'n paar slegte persoon gebruik sessie paar slagoffer se 1754 01:23:05,940 --> 01:23:08,740 ID om toegang tot die login inligting. 1755 01:23:08,740 --> 01:23:13,620 So 'n baie triviale voorbeeld van wat asof ons 'n openbare rekenaar, 1756 01:23:13,620 --> 01:23:21,120 dan is die slegte mens inteken en dan hulle het die koekies wat gered. 1757 01:23:21,120 --> 01:23:23,380 En koekies nie verander nie vir sessie. 1758 01:23:23,380 --> 01:23:27,620 >> Toe het ons die slagoffer gaan en dan teken in die webwerf. 1759 01:23:27,620 --> 01:23:30,290 Die koekies nie verander nie vir 'n sekere tydperk. 1760 01:23:30,290 --> 01:23:33,060 En dan die slagoffer logs in die webwerf en dan laat. 1761 01:23:33,060 --> 01:23:36,190 En dan is die persoon wat terug gaan kan dan nog steeds gebruik om hul sessie ID 1762 01:23:36,190 --> 01:23:37,430 toegang tot hul inligting. 1763 01:23:37,430 --> 01:23:40,050 So dit is een voorbeeld van hoe dit kan gebeur. 1764 01:23:40,050 --> 01:23:45,570 >> En dan sou ek nie te veel bekommerd wees oor spesifieke kode of iets 1765 01:23:45,570 --> 01:23:49,270 soos dat dit kan veroorsaak, maar met 'n soort van idee wat 1766 01:23:49,270 --> 01:23:51,400 die veranderlikes wat betrokke is in hierdie is. 1767 01:23:51,400 --> 01:23:53,897 En dan manipuleer kop data is 'n ander tipe van aanval 1768 01:23:53,897 --> 01:23:55,230 wat Dawid het gepraat oor. 1769 01:23:55,230 --> 01:23:59,730 En dit net verwys na wat kan gebeur wanneer 1770 01:23:59,730 --> 01:24:04,300 die reaksie, die HTTP reaksie binnekant van ons kop 1771 01:24:04,300 --> 01:24:05,720 is nie behoorlik ontsmet. 1772 01:24:05,720 --> 01:24:14,340 >> En enige van die fields-- byvoorbeeld as iemand oor skryf een van die kop 1773 01:24:14,340 --> 01:24:18,860 waardes om enigiets meer as bevat wat hulle moet contain-- en eintlik 1774 01:24:18,860 --> 01:24:22,720 bevat, byvoorbeeld, 'n 200 OK status kode, dan is hulle 1775 01:24:22,720 --> 01:24:26,890 kon potensieel skadelike doen dinge wanneer hulle is nie veronderstel om. 1776 01:24:26,890 --> 01:24:30,815 Maar ek sou nie te bekommerd wees veel oor die spesifieke kode 1777 01:24:30,815 --> 01:24:34,110 dat dit kan veroorsaak, net soort van begrip 1778 01:24:34,110 --> 01:24:37,290 hoë-vlak dinge soos dat. 1779 01:24:37,290 --> 01:24:39,570 >> Ek dink dit is al dat ons moet dek. 1780 01:24:39,570 --> 01:24:40,090 Amazing. 1781 01:24:40,090 --> 01:24:43,310 Iemand enige vrae oor enige van die dinge wat ons gedek? 1782 01:24:43,310 --> 01:24:44,213 Ja. 1783 01:24:44,213 --> 01:24:48,077 >> GEHOOR: So 'n soort meer logistieke vraag. 1784 01:24:48,077 --> 01:24:53,400 Word die inhoud hoofsaaklik gefokus op die dinge na quiz 1? 1785 01:24:53,400 --> 01:24:55,730 >> MARIA ZLATKOVA: So vraag is, is die inhoud 1786 01:24:55,730 --> 01:24:59,720 hoofsaaklik gefokus op die dinge na quiz 1? 1787 01:24:59,720 --> 01:25:06,070 So is die fokus op na quiz 1, met die uitsondering 1788 01:25:06,070 --> 01:25:10,914 wat ons nodig het om te fokus op die dinge wat in pset5 en 'n baie van die data strukture 1789 01:25:10,914 --> 01:25:11,580 dat ons gedek. 1790 01:25:11,580 --> 01:25:14,300 En ons kan nie sê dat ons kan enigiets ignoreer voor 1791 01:25:14,300 --> 01:25:17,120 dat omdat dit voortbou op dit so goed. 1792 01:25:17,120 --> 01:25:21,845 >> So fokus op dit, plus pset5 materiaal soos insluitend geskakelde lyste, stapels, 1793 01:25:21,845 --> 01:25:23,720 toue, en alles dat Hannah het deurgegaan. 1794 01:25:23,720 --> 01:25:24,050 >> HANNAH Blumberg: Right. 1795 01:25:24,050 --> 01:25:27,450 Ja, ons het oor al die dinge C Aan die begin baie vinnig. 1796 01:25:27,450 --> 01:25:29,090 Maar maak seker om te hersien nie. 1797 01:25:29,090 --> 01:25:32,700 Gaan terug en kyk hoe die quiz 0 review. 1798 01:25:32,700 --> 01:25:36,110 >> 'N paar logistieke notas, net terwyl ons jou aandag. 1799 01:25:36,110 --> 01:25:39,100 Ons gaan kantoorure het beide op Maandag en Dinsdag nag. 1800 01:25:39,100 --> 01:25:41,540 Hulle gaan in MD 119. 1801 01:25:41,540 --> 01:25:44,220 Dit is alles op die webwerf, so as jy nie luister nie, geen bekommernisse. 1802 01:25:44,220 --> 01:25:45,266 >> MARIA ZLATKOVA: 8:30-11:00. 1803 01:25:45,266 --> 01:25:46,260 >> HANNAH Blumberg: Ja, 8:30-11:00. 1804 01:25:46,260 --> 01:25:46,910 Ons sal daar wees. 1805 01:25:46,910 --> 01:25:48,368 Ons sal daar wees om vrae te beantwoord. 1806 01:25:48,368 --> 01:25:49,480 Dit is redelik koue en pret. 1807 01:25:49,480 --> 01:25:53,240 Julle kan enige vrae te vra wat jy op quiz 1. 1808 01:25:53,240 --> 01:25:55,740 En quiz 1 is op Woensdag, so baie geluk. 1809 01:25:55,740 --> 01:25:59,770 As jy enige vrae het, miskien kom praat hier een-tot-een. 1810 01:25:59,770 --> 01:26:00,880 Koel. 1811 01:26:00,880 --> 01:26:01,630 Baie dankie. 1812 01:26:01,630 --> 01:26:02,880 >> MARIA ZLATKOVA: Baie dankie, ouens. 1813 01:26:02,880 --> 01:26:03,480 >> GEHOOR: Yay. 1814 01:26:03,480 --> 01:26:05,930 >> [Applous] 1815 01:26:05,930 --> 01:26:07,530