1 00:00:00,000 --> 00:00:12,610 2 00:00:12,610 --> 00:00:12,900 >> DAVID J. Malan: Allt í lagi. 3 00:00:12,900 --> 00:00:16,790 Svo velkomið að alltaf fyrst CS50 postmortem hafa próf. 4 00:00:16,790 --> 00:00:18,340 Við héldum að við myndum inaugurate þessi hefð á þessu ári. 5 00:00:18,340 --> 00:00:20,960 Og þetta mun vera tækifæri að ganga í gegnum 6 00:00:20,960 --> 00:00:22,220 lausnir á spurningakeppni. 7 00:00:22,220 --> 00:00:26,160 Og við munum flýta eða hægja undirstaða um vexti þeirra hér. 8 00:00:26,160 --> 00:00:29,730 >> Svo þú ert líklega hér vegna þess að þú ert áhuga á því hvernig þú gætir hafa eða 9 00:00:29,730 --> 00:00:31,170 ætti að hafa svarað nokkrum þessara vandamála. 10 00:00:31,170 --> 00:00:33,300 Svo hvers vegna eigum við ekki að líta á þessum kafla fyrst? 11 00:00:33,300 --> 00:00:34,450 Svo að fá strengi. 12 00:00:34,450 --> 00:00:37,600 Þetta gaf þér þrjár mismunandi útgáfur um forrit sem var að lokum, 13 00:00:37,600 --> 00:00:39,650 ætlaði að fá a band frá notanda. 14 00:00:39,650 --> 00:00:42,530 Hvort sem það gerði það var vinstri að þér að ákveða. 15 00:00:42,530 --> 00:00:45,150 >> Og við spurði í svari við spurningu 0, gera ráð fyrir að útgáfa 1 er 16 00:00:45,150 --> 00:00:46,400 safna saman og framkvæma. 17 00:00:46,400 --> 00:00:48,860 Hvers vegna kann forritið segfault? 18 00:00:48,860 --> 00:00:51,150 Við fyrstu sýn, einhverjar uppástungur á því hvers vegna? 19 00:00:51,150 --> 00:00:54,012 20 00:00:54,012 --> 00:00:54,489 Já. 21 00:00:54,489 --> 00:00:59,260 >> Áhorfendur: Ég man að sjá þetta í fyrri dæmi um að horfa á 22 00:00:59,260 --> 00:01:05,506 char * s og sjá grannskoða af s og sjá því það er bendillinn, hvernig 23 00:01:05,506 --> 00:01:07,971 hafði áhrif á það sem þú skannaðar í? 24 00:01:07,971 --> 00:01:10,940 Er það er eða heimilisfang hans s? 25 00:01:10,940 --> 00:01:11,180 >> DAVID J. Malan: OK. 26 00:01:11,180 --> 00:01:11,480 Gott. 27 00:01:11,480 --> 00:01:14,830 Svo að lokum, the uppspretta af hvaða vandamál er væntanlega að fara að draga úr 28 00:01:14,830 --> 00:01:16,210 að þeirri breytu s. 29 00:01:16,210 --> 00:01:17,280 Og það er örugglega breytilegt. 30 00:01:17,280 --> 00:01:19,900 Gögnin gerð breytunni er char *, sem þýðir að það er að fara að 31 00:01:19,900 --> 00:01:22,570 innihalda veffang staf. 32 00:01:22,570 --> 00:01:23,850 Og þar liggur innsýn. 33 00:01:23,850 --> 00:01:28,330 Það er að fara að innihalda veffang eðli eða oftast á, að 34 00:01:28,330 --> 00:01:32,110 heimilisfang fyrsta staf í allt blokk stafi. 35 00:01:32,110 --> 00:01:36,680 >> En afla er að skanna s, tilgangur líf, er gefið upp netfang og gefið 36 00:01:36,680 --> 00:01:40,960 snið-, eins og% s, lesa streng í klumpur af 37 00:01:40,960 --> 00:01:42,330 minni á þetta netfang. 38 00:01:42,330 --> 00:01:46,040 Heldur vegna þess að það er engin jafnaðarmerki áður sem semíkommu á fyrsta 39 00:01:46,040 --> 00:01:49,310 lína af kóða, því við höfum ekki í raun úthluta allir minni með 40 00:01:49,310 --> 00:01:53,020 malloc, því það gerði í raun ekki úthluta fjölda einhverju stærð, allt 41 00:01:53,020 --> 00:01:57,620 þú ert að gera er að lesa notanda hljómborð inntak inn í sumir heill 42 00:01:57,620 --> 00:02:00,490 sorp gildi, sem er í s sjálfgefið. 43 00:02:00,490 --> 00:02:04,480 Svo líkurnar eru þú ert að fara að segfault ef að heimilisfang er ekki bara svo gerst 44 00:02:04,480 --> 00:02:08,009 að vera gildi sem þú getur, í raun, skrifaðu. 45 00:02:08,009 --> 00:02:10,889 Svo slæmt ekki að úthluta minni þar. 46 00:02:10,889 --> 00:02:13,150 >> Svo í spurningu 1, spurði við, gera ráð fyrir að útgáfa 2 er 47 00:02:13,150 --> 00:02:14,230 safna saman og framkvæma. 48 00:02:14,230 --> 00:02:15,900 Hvers vegna kann þetta forrit segfault? 49 00:02:15,900 --> 00:02:17,990 Svo er þetta eitt minna gallaðir. 50 00:02:17,990 --> 00:02:21,470 Og það er í raun aðeins eitt augljós leið þar sem þú getur 51 00:02:21,470 --> 00:02:22,810 kveikjan að segfault hér. 52 00:02:22,810 --> 00:02:23,730 Og þetta er þema. 53 00:02:23,730 --> 00:02:28,180 Hvenær við erum að nota c í minni, hvað gætir þú gert til að vekja segfault 54 00:02:28,180 --> 00:02:30,718 með útgáfu 2? 55 00:02:30,718 --> 00:02:35,560 >> Áhorfendur: Ef þú notar þessi inntak í streng sem er lengri en 49 56 00:02:35,560 --> 00:02:35,975 stafir. 57 00:02:35,975 --> 00:02:37,260 >> DAVID J. Malan: Einmitt. 58 00:02:37,260 --> 00:02:41,420 Hvenær sem þú sérð eitthvað fastur lengd þegar það kemur að fjölda, þinn 59 00:02:41,420 --> 00:02:44,650 ratsjá ætti að fara burt að þetta gæti verið erfið ef þú ert ekki að haka við 60 00:02:44,650 --> 00:02:45,810 Mörk fylki. 61 00:02:45,810 --> 00:02:46,650 Og það er vandamálið hér. 62 00:02:46,650 --> 00:02:47,910 Við erum enn að nota scanf. 63 00:02:47,910 --> 00:02:52,200 Við erum enn að nota% s, sem þýðir að reyna að lesa streng frá notandanum. 64 00:02:52,200 --> 00:02:56,300 Það er að fara að lesa í s, sem, á þessum tímapunkti, er í raun að 65 00:02:56,300 --> 00:02:58,570 heimilisfang klumpur af minni eða það er jafngild. 66 00:02:58,570 --> 00:03:02,080 Það er nafnið fylki stafa af minni. 67 00:03:02,080 --> 00:03:07,610 >> En einmitt þessi, ef þú lest streng sem er lengri en 49 stafir, 49 68 00:03:07,610 --> 00:03:10,440 vegna þess að þú þarft pláss fyrir sviga 0, þú ert að fara að flæða yfir 69 00:03:10,440 --> 00:03:11,390 sem Buffer. 70 00:03:11,390 --> 00:03:16,410 Og þú might fá heppinn og vera fær um að skrifa 51 staf, 52, 53. 71 00:03:16,410 --> 00:03:18,560 En á einhverjum tímapunkti OS er að fara að segja, nei. 72 00:03:18,560 --> 00:03:21,270 Þetta er örugglega ekki minni þú ert að fá að snerta. 73 00:03:21,270 --> 00:03:23,380 Og the program er að fara að segfault. 74 00:03:23,380 --> 00:03:26,650 >> Þannig að það er leitandi ætti að vera einhver þegar þú hefur fengið fasta lengd, hefur þú 75 00:03:26,650 --> 00:03:30,150 að ganga úr skugga um að þú ert að skoða lengd af hvað það er sem þú ert að reyna 76 00:03:30,150 --> 00:03:31,090 til að lesa inn í það. 77 00:03:31,090 --> 00:03:35,110 >> Áhorfendur: Svo til að leysa það, þú gætir hafa haft yfirlýsingu stöðva raun 78 00:03:35,110 --> 00:03:37,140 er lengd Greater eða minni en? 79 00:03:37,140 --> 00:03:37,730 >> DAVID J. Malan: Algjörlega. 80 00:03:37,730 --> 00:03:41,706 Þú verður bara með sjúkdóm sem segir, ef - 81 00:03:41,706 --> 00:03:46,080 eða öllu heldur þú þarf ekki endilega að vita fyrirfram hversu margir stafir sem 82 00:03:46,080 --> 00:03:49,060 notandinn er að fara að slá, því þú hefur kjúklingur og egg. 83 00:03:49,060 --> 00:03:51,860 Ekki fyrr en þú hefur lesið það með Scanf getur þú reikna út hversu lengi það er. 84 00:03:51,860 --> 00:03:54,500 En á þeim tímapunkti, það er of seint, vegna þess að þú hefur nú þegar lesið það í 85 00:03:54,500 --> 00:03:55,710 sumir blokk af minni. 86 00:03:55,710 --> 00:03:59,590 Svo sem innskot, the CS50 bókasafn forðast þetta mál að öllu leyti, muna 87 00:03:59,590 --> 00:04:01,060 með því að nota fgetc. 88 00:04:01,060 --> 00:04:05,390 Og það les einn staf í einu, ábending-toeing eftir, vitandi að þú 89 00:04:05,390 --> 00:04:08,060 getur ekki flæða yfir staf ef þú lesa eitt í einu. 90 00:04:08,060 --> 00:04:11,580 >> Aflann er með getstring muna er að við verðum að stöðugt aftur stærð 91 00:04:11,580 --> 00:04:13,590 að bútur af minni, sem er bara sársauki. 92 00:04:13,590 --> 00:04:15,310 Það er a einhver fjöldi af línum kóða til að gera það. 93 00:04:15,310 --> 00:04:18,779 Þannig aðra nálgun væri að raunverulega nota frænda, svo 94 00:04:18,779 --> 00:04:19,790 að tala, af Scanf. 95 00:04:19,790 --> 00:04:22,820 Það eru afbrigði af a einhver fjöldi af þessir aðgerðir sem raunverulega athuga 96 00:04:22,820 --> 00:04:25,870 lengd hversu margir stafir þú gætir lesið hámarks. 97 00:04:25,870 --> 00:04:29,430 Og þú gætir tilgreint, gera ekki lesið meira en 50 stafir. 98 00:04:29,430 --> 00:04:34,110 Svo sem myndi vera annar nálgun en minna greiðvikinn stærri aðföngum. 99 00:04:34,110 --> 00:04:37,040 >> Svo spurningu 2 spyr, gera ráð fyrir að útgáfa 3 er unnin og framkvæmd. 100 00:04:37,040 --> 00:04:39,960 Hvers vegna kann að program segfault? 101 00:04:39,960 --> 00:04:42,650 Svo er þetta eitt í raun það sama svara, jafnvel þó að það 102 00:04:42,650 --> 00:04:43,590 lítur svolítið áhugamaður. 103 00:04:43,590 --> 00:04:46,440 Við erum með malloc sem líður eins við erum að gefa okkur fleiri valkosti. 104 00:04:46,440 --> 00:04:48,030 Og þá erum við frjáls að minni í lokin. 105 00:04:48,030 --> 00:04:49,580 Það er samt bara 50 bæti af minni. 106 00:04:49,580 --> 00:04:53,620 Þannig að við gætum enn reyna að lesa í 51, 52, 1000 bæti. 107 00:04:53,620 --> 00:04:55,830 Það er að fara að segfault fyrir nákvæmlega sömu ástæðu. 108 00:04:55,830 --> 00:04:57,530 >> En það er önnur ástæða líka. 109 00:04:57,530 --> 00:05:03,890 Hvað annað gæti malloc aftur auki veffang klumpur af minni? 110 00:05:03,890 --> 00:05:04,920 Það gæti aftur null. 111 00:05:04,920 --> 00:05:07,560 Og vegna þess að við erum ekki að haka við að við gætum verið að gera eitthvað 112 00:05:07,560 --> 00:05:11,350 heimskur fyrir aðra ástæðu, sem er að við gætum verið að segja scanf, lesa 113 00:05:11,350 --> 00:05:16,050 inntak notandans af lyklaborði í 0 staðsetning, AKA null. 114 00:05:16,050 --> 00:05:18,890 Og það líka, verður örugglega kveikjan að segfault. 115 00:05:18,890 --> 00:05:21,590 Svo fyrir tilgangi spurningakeppni er, við myndum hafa samþykkt annaðhvort á þeim sem 116 00:05:21,590 --> 00:05:22,740 gild ástæða. 117 00:05:22,740 --> 00:05:23,420 Eitt er eins. 118 00:05:23,420 --> 00:05:25,720 Eitt er svolítið meira nuanced. 119 00:05:25,720 --> 00:05:28,975 >> Loksins, með tilliti til áætlunarinnar notkun minni, hvernig útgáfu 2 og 120 00:05:28,975 --> 00:05:30,350 útgáfa 3 mismunandi? 121 00:05:30,350 --> 00:05:35,070 Svo fyrir hvað það er þess virði, sáum við virðist endalaus framboð af mögulegt 122 00:05:35,070 --> 00:05:35,770 svör við þessu. 123 00:05:35,770 --> 00:05:39,300 Og meðal svörum fólks, það sem við vorum vonast eftir, en við samþykkt aðrar 124 00:05:39,300 --> 00:05:42,250 hlutir, var einhver minnst á staðreynd að útgáfa 2 er að nota 125 00:05:42,250 --> 00:05:44,560 svokallaða stafla. 126 00:05:44,560 --> 00:05:46,710 Útgáfa 3 er að nota hrúga. 127 00:05:46,710 --> 00:05:50,060 Og virkni, þetta er í raun ekki gera allt sem mikið af a mismunur. 128 00:05:50,060 --> 00:05:54,040 Í lok dagsins, erum við enn bara að fá 50 bæti af minni. 129 00:05:54,040 --> 00:05:56,640 >> En það var einn af mögulegum svörum að við vorum að horfa á. 130 00:05:56,640 --> 00:05:59,730 En þú munt sjá, eins og þú fá Skyndipróf baka frá TFS, sem við gerðum 131 00:05:59,730 --> 00:06:04,330 samþykkja aðrar umræður um þeirra ólíkum not af minni eins og heilbrigður. 132 00:06:04,330 --> 00:06:08,600 En stafla og hrúga hefði verið auðvelt svar við fara með. 133 00:06:08,600 --> 00:06:11,150 Einhverjar spurningar? 134 00:06:11,150 --> 00:06:12,400 Ég gef þér Rob. 135 00:06:12,400 --> 00:06:18,360 136 00:06:18,360 --> 00:06:20,210 >> ROB BOWDEN: Svo vandamálið 4. 137 00:06:20,210 --> 00:06:21,985 Þetta er eitt þar sem þú þurfti að fylla í fjölda bæti út af öllum 138 00:06:21,985 --> 00:06:23,460 þessar mismunandi tegundir notaðar. 139 00:06:23,460 --> 00:06:24,830 Svo fyrsta sem við sjáum. 140 00:06:24,830 --> 00:06:27,930 Gera ráð fyrir 32-bita arkitektúr, svona CS50 tæki. 141 00:06:27,930 --> 00:06:33,530 Svo eitt af grundvallar hluti um 32-bita arkitektúr, sem segir okkur 142 00:06:33,530 --> 00:06:37,490 nákvæmlega hversu stór bendillinn er að fara að vera í arkitektúr. 143 00:06:37,490 --> 00:06:43,020 >> Það strax, við vitum að einhver bendi tegund er 32-bita eða 4 bæti. 144 00:06:43,020 --> 00:06:46,010 Svo að horfa á þetta borð, node * er bendi tegund. 145 00:06:46,010 --> 00:06:47,250 Það er að fara að vera 4 bæti. 146 00:06:47,250 --> 00:06:51,640 Struct node *, það er bókstaflega eins hnút stjörnu. 147 00:06:51,640 --> 00:06:53,590 Og svo það er að fara að vera 4 bæti. 148 00:06:53,590 --> 00:06:58,270 Band, svo það lítur ekki út eins og bendillinn enn, en typedef, A 149 00:06:58,270 --> 00:07:01,590 band er bara char * sem er bendillinn tegund. 150 00:07:01,590 --> 00:07:03,550 Svo það er að fara að vera 4 bæti. 151 00:07:03,550 --> 00:07:06,150 >> Svo þessir þrír eru allir 4 bæti. 152 00:07:06,150 --> 00:07:09,350 Nú, hnút og nemandi eru aðeins flóknara. 153 00:07:09,350 --> 00:07:15,160 Svo að horfa á hnút og nemandi, sjáum við hnút sem heiltala og músina. 154 00:07:15,160 --> 00:07:18,050 Og nemandi er tvær ábendingum inni af því. 155 00:07:18,050 --> 00:07:23,340 Svo að minnsta kosti fyrir okkar tilviki hér, hvernig að við á endanum að reikna stærð 156 00:07:23,340 --> 00:07:27,020 þetta struct er bara að bæta upp allt sem er inni í strúktúr. 157 00:07:27,020 --> 00:07:30,690 >> Svo fyrir hnút, höfum við heiltölu, sem er 4 bæti. 158 00:07:30,690 --> 00:07:32,830 Við höfum bendi, sem er 4 bæti. 159 00:07:32,830 --> 00:07:35,820 Og svo einn hnút er að fara að taka upp 8 bæti. 160 00:07:35,820 --> 00:07:39,490 Og tilsvarandi fyrir nemanda, þá erum við með bendillinn sem er 4 bæti og annað 161 00:07:39,490 --> 00:07:40,770 bendillinn sem er 4 bæti. 162 00:07:40,770 --> 00:07:43,180 Svo það er að fara að enda upp tilvera 8 bæti. 163 00:07:43,180 --> 00:07:45,480 Svo hnút og nemandi eru 8 bæti. 164 00:07:45,480 --> 00:07:48,950 Og þessir þrír eru allir 4 bæti. 165 00:07:48,950 --> 00:07:50,240 Spurningar um það? 166 00:07:50,240 --> 00:07:54,640 167 00:07:54,640 --> 00:07:54,990 Já. 168 00:07:54,990 --> 00:07:58,413 >> Áhorfendur: Er það var 64-bita arkitektúr, vildi að 169 00:07:58,413 --> 00:07:59,880 tvöfaldur þá alla? 170 00:07:59,880 --> 00:08:01,790 >> ROB BOWDEN: Það væri ekki tvöfaldur þeim öllum. 171 00:08:01,790 --> 00:08:05,830 Svo 64-bita arkitektúr, það, aftur, breytingar sem grundvallaratriði hlutur að 172 00:08:05,830 --> 00:08:08,910 bendillinn er nú 64 bita. 173 00:08:08,910 --> 00:08:09,290 Já. 174 00:08:09,290 --> 00:08:10,930 Svo er bendillinn 8 bæti. 175 00:08:10,930 --> 00:08:15,420 Svo þessar sem voru 4 bæti eru að fara að vera 8 bæti. 176 00:08:15,420 --> 00:08:18,617 Nemandi, sem var tveggja ábendingum, Jæja, nú er það að fara að 177 00:08:18,617 --> 00:08:19,800 vera 8 bytes, 8 bæti. 178 00:08:19,800 --> 00:08:21,980 Það er að fara að gera 16 bæti. 179 00:08:21,980 --> 00:08:25,710 >> En hnúturinn er enn 4 bæti. 180 00:08:25,710 --> 00:08:27,800 Svo þetta bendi er að fara að vera 8 bæti. 181 00:08:27,800 --> 00:08:28,930 Þetta er 4 bæti. 182 00:08:28,930 --> 00:08:30,870 Svo hnút er bara að fara að vera 12 bæti. 183 00:08:30,870 --> 00:08:36,309 184 00:08:36,309 --> 00:08:39,280 Aðrar spurningar í þetta? 185 00:08:39,280 --> 00:08:44,500 Þannig að næsta einn, þetta eru the HTTP kóða. 186 00:08:44,500 --> 00:08:48,000 Og þú þurftir að lýsa aðstæðum þar sem þessi gæti 187 00:08:48,000 --> 00:08:49,810 aftur til þín. 188 00:08:49,810 --> 00:08:56,730 Eitt vandamál sem ég heyrði sumir nemendur hafa er að þeir reyndu að gera 189 00:08:56,730 --> 00:08:58,950 villur vera á enda viðskiptavinarins. 190 00:08:58,950 --> 00:09:02,320 Svo þegar við reynum að gera beiðni til miðlara, eitthvað fer 191 00:09:02,320 --> 00:09:03,820 rangt á enda okkar. 192 00:09:03,820 --> 00:09:07,660 En yfirleitt eru þessir kóðar að koma aftur af þjóninum. 193 00:09:07,660 --> 00:09:11,720 Þannig að við viljum að reikna út hvað er að gerast rangt eða rétt á þjóninum sem 194 00:09:11,720 --> 00:09:14,280 veldur þetta að koma aftur. 195 00:09:14,280 --> 00:09:18,670 Svo hvers vegna gæti netþjóni skilar stöðukóði 200? 196 00:09:18,670 --> 00:09:19,920 Allir hugsun? 197 00:09:19,920 --> 00:09:23,360 198 00:09:23,360 --> 00:09:23,730 >> Já. 199 00:09:23,730 --> 00:09:27,850 Svo eitthvað um með góðum árangri beiðnin fór í gegnum. 200 00:09:27,850 --> 00:09:30,260 Og þeir eru færir um að skila hvað sem þú baðst um. 201 00:09:30,260 --> 00:09:32,240 Þannig að allt var í lagi. 202 00:09:32,240 --> 00:09:35,662 Hvað um 302 fundust? 203 00:09:35,662 --> 00:09:36,618 Já. 204 00:09:36,618 --> 00:09:39,008 >> Áhorfendur: Miðlarinn var að leita fyrir það sem þú baðst um. 205 00:09:39,008 --> 00:09:40,442 En það gat ekki fundið hann. 206 00:09:40,442 --> 00:09:42,850 Þannig að það er villa. 207 00:09:42,850 --> 00:09:47,720 >> ROB BOWDEN: Svo þjóninum var leita að því sem þú vildir. 208 00:09:47,720 --> 00:09:51,682 Svo bara að leita hér, 302 fundust, það var fær til finna það. 209 00:09:51,682 --> 00:09:53,035 >> Áhorfendur: Fyrirgefðu. 210 00:09:53,035 --> 00:09:54,388 Fann þýðir að þeir gerðu finna það. 211 00:09:54,388 --> 00:09:55,638 Sorry. 212 00:09:55,638 --> 00:09:58,120 213 00:09:58,120 --> 00:10:00,160 >> ROB BOWDEN: Svo 302 fundust. 214 00:10:00,160 --> 00:10:02,350 The framreiðslumaður er fær um að finna það sem þú vildir. 215 00:10:02,350 --> 00:10:04,640 >> Áhorfendur: En það er ekki að sýna það? 216 00:10:04,640 --> 00:10:08,180 >> ROB BOWDEN: Munurinn á milli þetta 302 og 200 er að það 217 00:10:08,180 --> 00:10:09,280 veit hvað þú vilt. 218 00:10:09,280 --> 00:10:12,000 En það er ekki nákvæmlega hvar þú vildi spyrja. 219 00:10:12,000 --> 00:10:14,580 Svo er 302 dæmigerður endurvísa. 220 00:10:14,580 --> 00:10:16,510 Svo þú beðið síðu. 221 00:10:16,510 --> 00:10:19,590 Það veit, ó, ég vil að skila þér þessu. 222 00:10:19,590 --> 00:10:21,070 En þetta er á aðra vefslóð. 223 00:10:21,070 --> 00:10:23,534 Svo hey, þú vilt í raun og veru þetta. 224 00:10:23,534 --> 00:10:26,950 >> DAVID J. Malan: Það er stykki sem sagði að við gáfum ykkur áframsenda 225 00:10:26,950 --> 00:10:30,830 fall sem notað haus virka sem aftur á móti, prentað út staðsetningu, 226 00:10:30,830 --> 00:10:34,110 ristill, og þá slóðin sem þú vilt hafna notanda. 227 00:10:34,110 --> 00:10:37,480 Jafnvel þó að þú hafir ekki séð 302 sérstaklega þar, það er það sem PHP 228 00:10:37,480 --> 00:10:41,550 myndi dularfullur setja sem haus segja nákvæmlega hvað Rob sagði það - 229 00:10:41,550 --> 00:10:41,930 fundust. 230 00:10:41,930 --> 00:10:43,180 En fara hér í staðinn. 231 00:10:43,180 --> 00:10:45,960 232 00:10:45,960 --> 00:10:46,160 >> ROB BOWDEN: OK. 233 00:10:46,160 --> 00:10:47,630 Og hvað um 403 bannað? 234 00:10:47,630 --> 00:10:52,240 235 00:10:52,240 --> 00:10:57,120 >> Áhorfendur: Ég held að það er þessi the framreiðslumaður er í rauninni að segja að viðskiptavinurinn 236 00:10:57,120 --> 00:10:59,970 getur ekki opnað heimasíðuna. 237 00:10:59,970 --> 00:11:03,260 >> ROB BOWDEN: Svo já. 238 00:11:03,260 --> 00:11:07,670 Jæja, dæmigerð svarið við vorum von er eitthvað eins og skrár 239 00:11:07,670 --> 00:11:08,920 eru ekki chmodded viðeigandi hátt. 240 00:11:08,920 --> 00:11:11,590 Það er líklega undir hvaða kringumstæðum þú sást þá. 241 00:11:11,590 --> 00:11:18,920 En það er ástæða þess að viðskiptavinurinn gæti verið að kenna hér. 242 00:11:18,920 --> 00:11:20,440 Það er reyndar annar stöðukóði - 243 00:11:20,440 --> 00:11:21,210 401. 244 00:11:21,210 --> 00:11:22,820 Svo að þetta eru mjög svipuð. 245 00:11:22,820 --> 00:11:24,590 >> 401 er óheimil. 246 00:11:24,590 --> 00:11:26,130 Og 403 er bannað. 247 00:11:26,130 --> 00:11:31,890 Og svo óviðkomandi að eingöngu fá ef þú ert ekki skráður inn 248 00:11:31,890 --> 00:11:34,520 En að skrá þig inn gæti þýtt að þú hefur heimild. 249 00:11:34,520 --> 00:11:37,930 En ef þú ert nú þegar skráður inn og þú enn hefur ekki leyfi, þá 250 00:11:37,930 --> 00:11:40,140 þú getur líka fengið bannað. 251 00:11:40,140 --> 00:11:45,320 Þannig að ef þú ert skráður inn og hafa ekki leyfi, bannað er einnig 252 00:11:45,320 --> 00:11:47,164 eitthvað sem þú getur fengið. 253 00:11:47,164 --> 00:11:48,900 >> DAVID J. Malan: Og Orsakir sem þessi vandamál eru oftast 254 00:11:48,900 --> 00:11:53,100 leyst á þjóninum er um hvaða stjórn? 255 00:11:53,100 --> 00:11:57,700 Chmod, ef það er, Reyndar leyfi gefa á skrá eða möppu. 256 00:11:57,700 --> 00:11:59,220 >> ROB BOWDEN: Þá 404 fannst ekki. 257 00:11:59,220 --> 00:12:03,100 258 00:12:03,100 --> 00:12:03,470 Já. 259 00:12:03,470 --> 00:12:10,150 Svo ólíkt 302 þar sem það var ekki nákvæmlega þar sem þú ert að spyrja, en það veit hvað 260 00:12:10,150 --> 00:12:12,710 þú vilt, þetta, það hefur bara ekki hugmynd um hvað þú vilt. 261 00:12:12,710 --> 00:12:15,648 Og þú ert ekki að biðja eitthvað gildi. 262 00:12:15,648 --> 00:12:18,580 263 00:12:18,580 --> 00:12:22,310 418 Ég er katli og þá 500 innri miðlara. 264 00:12:22,310 --> 00:12:24,870 Svo hvers vegna gætir þú fengið það? 265 00:12:24,870 --> 00:12:26,120 >> Svo segfault - 266 00:12:26,120 --> 00:12:28,760 267 00:12:28,760 --> 00:12:30,640 Ég reyndar veit ekki flokkunina staðall fyrir þetta. 268 00:12:30,640 --> 00:12:34,850 En ef PHP kóðann þinn hefði eitthvað rangt í það, í orði, gæti það 269 00:12:34,850 --> 00:12:39,650 reyndar segfault, í því tilviki, þetta 500 innri miðlara villa, eitthvað 270 00:12:39,650 --> 00:12:41,400 er athugavert við miðlara þíns stillingar. 271 00:12:41,400 --> 00:12:44,320 Eða það er Stílvilla í PHP kóðann þinn. 272 00:12:44,320 --> 00:12:46,095 Eða eitthvað slæmt er að gerast. 273 00:12:46,095 --> 00:12:48,320 >> DAVID J. Malan: Við vildum sjá segfault meðal svörum nokkurra fólks. 274 00:12:48,320 --> 00:12:49,490 Og tæknilega, gæti það gerst. 275 00:12:49,490 --> 00:12:53,820 En það væri PHP, the program skrifað af öðru fólki, í raun 276 00:12:53,820 --> 00:12:57,790 segfaulted, sem aðeins ef þessir menn ruglaður upp og skrifaði gallaðir kóða í 277 00:12:57,790 --> 00:13:00,680 túlkur þeirra myndi PHP sjálft segfault. 278 00:13:00,680 --> 00:13:06,460 Svo jafnvel þó 500 er eins og segfault í anda, það er næstum alltaf 279 00:13:06,460 --> 00:13:10,490 afleiðing af a skrá stillingar tölublað með vefþjóninum þínum eða, eins og Rob sagði, 280 00:13:10,490 --> 00:13:13,200 A Stílvilla, eins og þú ekki loka tilboð. 281 00:13:13,200 --> 00:13:16,180 Eða þú tapað semíkommu einhvers staðar. 282 00:13:16,180 --> 00:13:23,677 >> Áhorfendur: Svo fyrir Shuttle pset, ég hugsa þegar ég gerði það þegar ég smellti á 283 00:13:23,677 --> 00:13:26,300 vafra, en ekkert kom upp, hvað þeir kallast hvítt síðu. 284 00:13:26,300 --> 00:13:28,056 En það var vegna þess að kóða. 285 00:13:28,056 --> 00:13:29,440 Ég held það hafi JavaScript, ekki satt? 286 00:13:29,440 --> 00:13:29,770 >> ROB BOWDEN: Já. 287 00:13:29,770 --> 00:13:31,180 >> Áhorfendur: Vildi að villa enn koma upp? 288 00:13:31,180 --> 00:13:34,290 >> ROB BOWDEN: Svo þú myndi ekki hafa fengið þessi villa vegna þess að allt 289 00:13:34,290 --> 00:13:36,930 frá sjónarhóli Vefþjónninn er var alveg fínn. 290 00:13:36,930 --> 00:13:39,090 En þú baðst um index.html. 291 00:13:39,090 --> 00:13:42,000 Þú baðst shuttle.js og service.js. 292 00:13:42,000 --> 00:13:44,580 Og það var fær til giftusamlega aftur þér alla þá hluti - 293 00:13:44,580 --> 00:13:44,980 200. 294 00:13:44,980 --> 00:13:45,680 OK. 295 00:13:45,680 --> 00:13:49,330 Það er aðeins þegar vafrinn þinn reyndi að túlka JavaScript kóða sem 296 00:13:49,330 --> 00:13:51,370 það er eins og, bíddu, þetta er ekki Gildir JavaScript villa. 297 00:13:51,370 --> 00:13:55,720 298 00:13:55,720 --> 00:13:58,210 Aðrar spurningar? 299 00:13:58,210 --> 00:14:00,750 Allt í lagi. 300 00:14:00,750 --> 00:14:04,120 >> DAVID J. Malan: Svo næst upp var númer 11. 301 00:14:04,120 --> 00:14:07,610 Og 11 mest ógnvekjandi fyrir fullt af fólki. 302 00:14:07,610 --> 00:14:14,620 303 00:14:14,620 --> 00:14:18,570 Svo er mikilvægast að hafa í huga hér var að þetta var reyndar um 304 00:14:18,570 --> 00:14:19,840 A tvöfalt tengda listanum. 305 00:14:19,840 --> 00:14:23,160 En þetta var ekki það sama og á síðasta ári tvöfalt tengda listanum vandamál, 306 00:14:23,160 --> 00:14:27,170 sem ekki gefa þér hellir sem listinn gæti í raun að vera óflokkað. 307 00:14:27,170 --> 00:14:29,640 >> Svo sú staðreynd að listinn var óflokkað og sú staðreynd að þessi orð voru 308 00:14:29,640 --> 00:14:32,930 undirstrikað að það var ætlað að flytja að þetta er í raun einföldun 309 00:14:32,930 --> 00:14:35,430 hvað sem annars hefði verið meira krefjandi vandamál 310 00:14:35,430 --> 00:14:36,600 og með lengri einn. 311 00:14:36,600 --> 00:14:40,760 Svo algeng mistök hér var að hafa sett lausn á síðasta ári á einn þinni 312 00:14:40,760 --> 00:14:45,580 Friðþjófur og þá bara í blindni afrita að niður sem svar, sem er rétt 313 00:14:45,580 --> 00:14:48,520 svara til mismunandi spurningu svipuð í anda. 314 00:14:48,520 --> 00:14:51,340 En næmi hér voru sem hér segir. 315 00:14:51,340 --> 00:14:55,200 >> Svo einn, við höfum hnút lýst og og skilgreint er í venjulegum hætti hér. 316 00:14:55,200 --> 00:14:59,230 Þá erum við skilgreint lista af að vera alþjóðlegt bendillinn frumstilla að null. 317 00:14:59,230 --> 00:15:02,150 Þá virðist, það er tvær aðgerðir við höfum fyrirmynd að hér, settu 318 00:15:02,150 --> 00:15:03,240 og fjarlægja. 319 00:15:03,240 --> 00:15:06,600 Og þá höfum við nokkur dæmi um kóða hér að gera fullt af innsetning. 320 00:15:06,600 --> 00:15:09,930 Og þá biðjum við þig um að ljúka framkvæmd insert neðan í svo 321 00:15:09,930 --> 00:15:14,380 hátt að það setur n inn á listann í föstu tíma, einnig undirstrikað, 322 00:15:14,380 --> 00:15:15,730 jafnvel þegar til staðar. 323 00:15:15,730 --> 00:15:20,600 >> Svo fegurð að vera fær um að setja í föstu tíma er að það felur í sér 324 00:15:20,600 --> 00:15:23,060 að þú þarft að setja nýja hnút þar? 325 00:15:23,060 --> 00:15:23,690 Í framan. 326 00:15:23,690 --> 00:15:27,760 Svo eyðir það, sem betur fer, að minnsta kosti einn af þeim tilvikum sem notuð eru til að krefjast 327 00:15:27,760 --> 00:15:30,520 jafnvel fleiri línur af kóða, eins og það gerði á síðasta ári og jafnvel í bekknum þegar við 328 00:15:30,520 --> 00:15:34,040 talaði í gegnum þessa tegund af hlutur með mönnum og með nokkrum 329 00:15:34,040 --> 00:15:35,250 munnleg gervi kóða. 330 00:15:35,250 --> 00:15:39,190 Svo í lausn hér, við skulum sleppa yfir til að bara að hafa Visual á 331 00:15:39,190 --> 00:15:40,480 á skjánum. 332 00:15:40,480 --> 00:15:42,230 >> Takið eftir að við erum að gera eftirfarandi. 333 00:15:42,230 --> 00:15:45,140 Og einnig taka aðra einföldun var að jafnvel ef það er 334 00:15:45,140 --> 00:15:48,280 þegar til staðar, þannig að þetta þýðir jafnvel þótt fjöldi er þar nú þegar, þú getur 335 00:15:48,280 --> 00:15:50,280 bara í blindni að setja annan afrit af því. 336 00:15:50,280 --> 00:15:52,560 Og það var líka ætlað að vera einföldun, svo að þú gætir 337 00:15:52,560 --> 00:15:54,940 leggja áherslu á, í raun, sumir af the fleiri intellectually áhugaverður hluti og 338 00:15:54,940 --> 00:15:58,090 ekki bara sumir viðbótar villuprófun Í ljósi þess takmarkaða tíma. 339 00:15:58,090 --> 00:16:02,880 >> Svo í þessu úrtaki lausn, úthluta við bendill á the vinstri-hönd 340 00:16:02,880 --> 00:16:04,510 hlið hér til hnút. 341 00:16:04,510 --> 00:16:07,190 Nú, átta sig á að músina, eins og Rob sagði, er aðeins 32 bita. 342 00:16:07,190 --> 00:16:09,060 Og það er í raun ekki innihalda veffang þar til þú 343 00:16:09,060 --> 00:16:09,970 tengja það á netfangið. 344 00:16:09,970 --> 00:16:13,220 Og það gerum við á hægri hönd hlið í gegnum malloc. 345 00:16:13,220 --> 00:16:16,550 Eins gott borgara, athugaðu að við að malloc er ekki, í raun, null, svo að 346 00:16:16,550 --> 00:16:18,690 við gerum ekki tilviljun búa A segfault hér. 347 00:16:18,690 --> 00:16:22,840 Og hvenær þú notar malloc í lífinu, þú skal stöðva fyrir engu, svo 348 00:16:22,840 --> 00:16:24,090 þú hafa a lúmskur galla. 349 00:16:24,090 --> 00:16:28,460 >> Þá erum frumstilla þessi null með framselja n og fyrri og næsta. 350 00:16:28,460 --> 00:16:32,450 Og í þessu tilfelli hér, ég frumstilla fyrri til engu, vegna þess að þetta nýja 351 00:16:32,450 --> 00:16:34,780 hnútur er að fara að vera nýr farin af listanum mínum. 352 00:16:34,780 --> 00:16:37,050 Þannig að það er að fara að vera ekkert fyrir það. 353 00:16:37,050 --> 00:16:42,010 Og ég vil í raun bæta við núverandi lista til nýjan hnút með 354 00:16:42,010 --> 00:16:44,700 setja næst jafnt lista sig. 355 00:16:44,700 --> 00:16:47,120 En ég er ekki búinn strax. 356 00:16:47,120 --> 00:16:51,780 Þannig að ef listinn sig þegar fyrir hendi, og það var að minnsta kosti einn hnút 357 00:16:51,780 --> 00:16:57,070 þegar í stað, ef þetta er listi hér og ég set inn nýjan hnút hér, ég 358 00:16:57,070 --> 00:17:01,840 þarf að ganga úr skugga um að fyrrverandi hnút mín bendir aftur til nýjan hnút minn, 359 00:17:01,840 --> 00:17:04,260 því þetta er, aftur, A tvöfalt tengda listanum. 360 00:17:04,260 --> 00:17:05,460 >> Svo við gerum geðheilsu stöðva. 361 00:17:05,460 --> 00:17:10,109 Ef listinn er ekki núll, ef það er þegar eitt eða fleiri hnútar þar, þá 362 00:17:10,109 --> 00:17:12,470 bæta við að baka tilvísun svo að segja. 363 00:17:12,470 --> 00:17:15,420 Og þá mjög síðasta sem við þurfum að gera er í raun að endurnýja á heimsvísu 364 00:17:15,420 --> 00:17:20,329 breytu lista sjálft að benda að þessi nýja hnút. 365 00:17:20,329 --> 00:17:21,790 Já. 366 00:17:21,790 --> 00:17:26,579 >> Áhorfendur: Í músina ör [Inaudible] jafngildir null, er sem 367 00:17:26,579 --> 00:17:30,420 takast á við listann vegna listinn er null? 368 00:17:30,420 --> 00:17:30,596 >> DAVID J. Malan: Nope. 369 00:17:30,596 --> 00:17:34,500 Það er einfaldlega mér að vera stanslaust varlega, þannig að ef það er mín 370 00:17:34,500 --> 00:17:38,730 upprunalega lista með kannski sumir fleiri hnútar hérna og ég er að setja minn 371 00:17:38,730 --> 00:17:42,380 nýr hnútur hérna, það er að fara að vera ekkert hérna. 372 00:17:42,380 --> 00:17:44,720 Og ég vil taka þessi hugmynd með því að setja fyrri til 373 00:17:44,720 --> 00:17:47,740 null á nýjan hnút. 374 00:17:47,740 --> 00:17:51,410 Og væntanlega, ef númerið mitt er rétt og það er engin önnur leið til að setja inn 375 00:17:51,410 --> 00:17:54,970 hnúður aðrar en þessa aðgerð, væntanlega, jafnvel þótt listinn hefur nú þegar 376 00:17:54,970 --> 00:18:00,090 eitt eða fleiri hnútar í henni, væntanlega Listi, fyrsta hnút, myndi hafa 377 00:18:00,090 --> 00:18:02,750 Fyrri bendi af engu sig. 378 00:18:02,750 --> 00:18:03,550 >> Áhorfendur: Og bara fylgt eftir. 379 00:18:03,550 --> 00:18:08,139 Ástæðan þú setur músina næstu Jafnt listi er að þú ert að gera bendilinn 380 00:18:08,139 --> 00:18:13,579 áður lista í að það er að benda til annars, held ég - 381 00:18:13,579 --> 00:18:14,980 Ég áttina - 382 00:18:14,980 --> 00:18:15,450 bara listum? 383 00:18:15,450 --> 00:18:16,400 >> DAVID J. Malan: Einmitt. 384 00:18:16,400 --> 00:18:19,400 Og svo skulum við íhuga í raun tvö mál hér í raun, jafnvel þótt 385 00:18:19,400 --> 00:18:22,070 röð við munum íhuga þá er ekki alveg það sama og númerið. 386 00:18:22,070 --> 00:18:26,250 En á háu stigi, ef þetta táknar lista og þetta er 32-bita 387 00:18:26,250 --> 00:18:29,560 músina, einfaldasta atburðarás er að þetta er núll sjálfgefið. 388 00:18:29,560 --> 00:18:33,010 Og hygg ég vil setja á númer 50 var fyrsta númerið. 389 00:18:33,010 --> 00:18:37,640 Þannig að ég ætla að fara á undan og úthluta hnút, sem er að fara að vera 390 00:18:37,640 --> 00:18:38,770 þremur sviðum - 391 00:18:38,770 --> 00:18:42,070 n, fyrri, og næsta. 392 00:18:42,070 --> 00:18:44,580 >> Ég ætla að setja númerið 50 hér, vegna þess að þetta mun vera n. 393 00:18:44,580 --> 00:18:46,130 Þetta verður næst. 394 00:18:46,130 --> 00:18:48,530 Og þetta mun vera síðasta. 395 00:18:48,530 --> 00:18:50,910 Og svo hvað á ég að gera í þessu tilfelli? 396 00:18:50,910 --> 00:18:53,900 Jæja, ég hef bara gert línu 1 hér. 397 00:18:53,900 --> 00:18:55,400 Pointer n fær n. 398 00:18:55,400 --> 00:18:57,740 Ég er þá að segja, fyrri ætti að fá null. 399 00:18:57,740 --> 00:18:59,470 Þannig að þetta er að fara að vera núll. 400 00:18:59,470 --> 00:19:01,365 Þá er ég að fara að segja næst er að fara að fá lista. 401 00:19:01,365 --> 00:19:05,150 >> Og þetta virkar bara vel. 402 00:19:05,150 --> 00:19:06,500 This er núll. 403 00:19:06,500 --> 00:19:10,620 Og svo ég er að segja, nýja hnút er næst sviði ætti að fá hvað sem þetta er. 404 00:19:10,620 --> 00:19:12,570 Svo setur að öðru null þar. 405 00:19:12,570 --> 00:19:14,510 Og þá the síðastur hlutur Ég er að athuga hér. 406 00:19:14,510 --> 00:19:17,870 Ef listinn er ekki jafnt og núll, en það er jafnt og núll, þannig að við sleppt því að 407 00:19:17,870 --> 00:19:18,470 að öllu leyti. 408 00:19:18,470 --> 00:19:23,520 Og svo allt sem ég gera næst er listi fær músina, sem pictorially leiðir 409 00:19:23,520 --> 00:19:25,570 mynd eins og þessi. 410 00:19:25,570 --> 00:19:26,620 Svo er það eitt dæmi. 411 00:19:26,620 --> 00:19:30,490 >> Og sá sem þú varst að biðja um sérstaklega er ástand eins og þetta, 412 00:19:30,490 --> 00:19:33,190 þar sem við höfum nú þegar einn hnút lista. 413 00:19:33,190 --> 00:19:36,240 Og ef ég fer aftur upp í upprunalega vandamál yfirlýsingu, næsta sem við munum 414 00:19:36,240 --> 00:19:39,320 setja segja er 34, bara til sakir umræðu. 415 00:19:39,320 --> 00:19:46,210 Þannig að ég ætla að bara þægilegur teiknað það hérna. 416 00:19:46,210 --> 00:19:47,540 Ég hef bara malloced. 417 00:19:47,540 --> 00:19:49,310 Skulum gera ráð ég að haka við null. 418 00:19:49,310 --> 00:19:51,870 >> Nú, ég ætla að frumstilla n til að vera 34. 419 00:19:51,870 --> 00:19:53,040 Og þetta mun vera n. 420 00:19:53,040 --> 00:19:54,670 Þetta verður næst. 421 00:19:54,670 --> 00:19:57,100 Og þetta mun vera síðasta. 422 00:19:57,100 --> 00:19:59,370 Við skulum vera viss um að ég gerði ekki fá þetta aftur á bak. 423 00:19:59,370 --> 00:20:01,110 Fyrri kemur fyrst í skilgreiningunni. 424 00:20:01,110 --> 00:20:03,070 Leyfðu mér að laga þetta. 425 00:20:03,070 --> 00:20:04,410 Þetta er fyrri. 426 00:20:04,410 --> 00:20:05,780 Þetta er næst. 427 00:20:05,780 --> 00:20:08,620 Jafnvel þó þessir sömu, skulum halda það stöðug. 428 00:20:08,620 --> 00:20:09,450 >> Fyrri. 429 00:20:09,450 --> 00:20:11,030 Þetta er næst. 430 00:20:11,030 --> 00:20:16,310 Svo ég hef bara malloced huga minn, merkt for null, úthlutað 34 í hnút. 431 00:20:16,310 --> 00:20:17,570 Fyrri fær null. 432 00:20:17,570 --> 00:20:19,480 Svo gefur það mér að. 433 00:20:19,480 --> 00:20:21,010 Næst fær lista. 434 00:20:21,010 --> 00:20:22,370 Svo listi er þetta. 435 00:20:22,370 --> 00:20:26,520 Svo er þetta sama núna og teikna þetta arrow, þannig að þeir benda til einn 436 00:20:26,520 --> 00:20:27,940 í sama. 437 00:20:27,940 --> 00:20:30,400 Og þá er ég að athuga hvort listinn er ekki jafnt null. 438 00:20:30,400 --> 00:20:31,740 Og það er ekki í þetta sinn. 439 00:20:31,740 --> 00:20:35,580 Þá er ég að fara að gera lista Fyrri fær músina. 440 00:20:35,580 --> 00:20:39,700 >> Svo baka einn fær PTR. 441 00:20:39,700 --> 00:20:44,300 Á sama tíma hefur það áhrif á að setja myndrænt ör hér. 442 00:20:44,300 --> 00:20:46,930 Og það er að fá smá bylgjaður, línurnar. 443 00:20:46,930 --> 00:20:50,780 Og þá loks, endurnýja ég lista til að benda á músina. 444 00:20:50,780 --> 00:20:55,560 Svo nú bendir þetta til þessa strákur. 445 00:20:55,560 --> 00:20:57,170 Og nú, við skulum gera a fljótur geðheilbrigði stöðva. 446 00:20:57,170 --> 00:20:59,470 >> Hér er listi, sem er alþjóðlegt breytu. 447 00:20:59,470 --> 00:21:02,850 Fyrsti hnúturinn er reyndar 34, því Ég er eftirfarandi þessi ör. 448 00:21:02,850 --> 00:21:05,210 Og það er rétt af því að ég vil að setja inn í upphafi listanum 449 00:21:05,210 --> 00:21:06,070 Allar nýjar hnúður. 450 00:21:06,070 --> 00:21:08,860 Næsta reit hans leiðir mig að þennan gaur. 451 00:21:08,860 --> 00:21:10,710 Ef ég halda áfram, högg ég næst er núll. 452 00:21:10,710 --> 00:21:11,760 Þannig að það er ekki meira lista. 453 00:21:11,760 --> 00:21:14,460 Ef ég högg fyrri, fæ ég aftur þar sem ég býst við. 454 00:21:14,460 --> 00:21:16,435 >> Þannig að það eru enn nokkrar ábendingar, augljóslega, að vinna. 455 00:21:16,435 --> 00:21:19,870 Heldur sú staðreynd að þú varst að segja að gera þetta í föstu tíma þýðir að þú aðeins 456 00:21:19,870 --> 00:21:22,910 hafa endanlegt ýmislegt þú ert að fá að gera. 457 00:21:22,910 --> 00:21:24,290 Og hvað er að tala? 458 00:21:24,290 --> 00:21:25,185 Það gæti verið eitt skref. 459 00:21:25,185 --> 00:21:25,700 Það gæti verið tvær. 460 00:21:25,700 --> 00:21:26,820 Það gæti verið 1000 skref. 461 00:21:26,820 --> 00:21:30,500 En það er tímabundið, sem þýðir að þú getur ekki hafa hvers konar lykkja gerast 462 00:21:30,500 --> 00:21:32,010 hér, engin endurkvæmni, engar lykkjur. 463 00:21:32,010 --> 00:21:37,390 Það er bara að vera harður-dulmáli línur af kóða sem við höfum í þessu úrtaki. 464 00:21:37,390 --> 00:21:42,330 >> Svo næsta vandamálið 12 bað okkur um að ljúka framkvæmd Fjarlægja 465 00:21:42,330 --> 00:21:46,740 hér að neðan á þann hátt að það fjarlægir n af lista í línulegum tíma. 466 00:21:46,740 --> 00:21:48,740 Svo þú hafa a lítill fleiri wiggle pláss núna. 467 00:21:48,740 --> 00:21:52,380 Þú getur gert ráð fyrir n, ef til staðar á listanum, verður að vera til staðar 468 00:21:52,380 --> 00:21:53,340 ekki meira en einu sinni. 469 00:21:53,340 --> 00:21:56,770 Og það líka er ætlað að vera quiz byggir einfalda forsendu, svo 470 00:21:56,770 --> 00:21:59,780 að ef þú finnur númer 50 einhvers staðar á listanum, þú ert ekki líka 471 00:21:59,780 --> 00:22:02,890 að hafa áhyggjur af að halda áfram að iterate, leita hvert mögulegt 472 00:22:02,890 --> 00:22:06,990 Afrit af 50, sem myndi bara flytjast í sumum minutia í takmarkaðan tíma. 473 00:22:06,990 --> 00:22:10,460 >> Svo með Fjarlægja, þetta var ákveðið meira krefjandi og meira 474 00:22:10,460 --> 00:22:11,640 kóða til að skrifa. 475 00:22:11,640 --> 00:22:14,990 En við fyrstu sýn, hreinskilnislega, gæti það líta yfirþyrmandi og eins og eitthvað 476 00:22:14,990 --> 00:22:17,060 það er engin leið að þú gætir hafa koma upp með á spurningakeppni. 477 00:22:17,060 --> 00:22:22,450 En ef við leggja áherslu á einstaka skrefum, vonandi mun það allt í einu 478 00:22:22,450 --> 00:22:26,060 slá þig um að hver þessara einstaklinga skref gerir augljóslega vit 479 00:22:26,060 --> 00:22:27,080 í hyggja. 480 00:22:27,080 --> 00:22:28,200 Þannig að við skulum taka a útlit. 481 00:22:28,200 --> 00:22:32,570 >> Svo fyrst, frumstilla við músina að vera listi sig. 482 00:22:32,570 --> 00:22:36,040 Vegna þess að ég vil línulegum tíma, sem þýðir að Ég ætla að hafa smá lykkju. 483 00:22:36,040 --> 00:22:39,730 Og algeng leið til iterate yfir hnúður á lista byggingu eða hvers konar 484 00:22:39,730 --> 00:22:43,860 af uppbyggingu iteratively er að taka bendi á the andlit af the gögn 485 00:22:43,860 --> 00:22:46,990 uppbyggingu og þá bara byrja að uppfæra það og ganga leið 486 00:22:46,990 --> 00:22:48,650 í gegnum þau gögn uppbygging. 487 00:22:48,650 --> 00:22:50,040 Þannig að ég ætla að gera nákvæmlega það. 488 00:22:50,040 --> 00:22:54,260 >> Þó músina, tímabundin breytu minn, er ekki jafn null, við skulum 489 00:22:54,260 --> 00:22:55,660 fara á undan og athuga. 490 00:22:55,660 --> 00:22:56,910 Gerði ég fá heppinn? 491 00:22:56,910 --> 00:23:01,740 Er n sviði í hnút Ég er nú horfa á jafnt við 492 00:23:01,740 --> 00:23:03,380 númer ég er að leita að? 493 00:23:03,380 --> 00:23:05,410 Og ef svo er, við skulum gera eitthvað. 494 00:23:05,410 --> 00:23:10,020 Nú, eftir því ef ástand umlykur öllu 495 00:23:10,020 --> 00:23:11,520 Eftirfarandi línur af kóða. 496 00:23:11,520 --> 00:23:14,610 Þetta er það eina sem mér þykir vænt um - finna fjölda sem um ræðir. 497 00:23:14,610 --> 00:23:18,010 Þannig að það er engin annar, sem einfaldar hlutirnir í eðli svolítið. 498 00:23:18,010 --> 00:23:22,040 >> En nú, áttaði ég, og þú gætir hafa Aðeins áttaði sig á þessu eftir að hugsa 499 00:23:22,040 --> 00:23:24,720 það í gegnum hluti, það er reyndar tvö mál hér. 500 00:23:24,720 --> 00:23:28,060 Einn er þar sem hnúturinn er á að upphafið af listanum, sem er 501 00:23:28,060 --> 00:23:31,040 smá pirrandi, því það er sérstakt tilfelli, vegna þess að þú þarft að takast á 502 00:23:31,040 --> 00:23:33,340 með þetta, sem er eina frávik. 503 00:23:33,340 --> 00:23:35,720 Annars staðar á listanum, það er sama. 504 00:23:35,720 --> 00:23:38,050 Það er fyrri hnút og næstu hnút, fyrri hnút, næsta hnút. 505 00:23:38,050 --> 00:23:40,940 En þessi strákur er svolítið sérstakt ef hann er í upphafi. 506 00:23:40,940 --> 00:23:48,710 >> Þannig að ef bendillinn jafngildir lista sjálft, þannig að ef ég er í upphafi 507 00:23:48,710 --> 00:23:53,960 listi og ég hef fundið n, ég þarf að gera nokkra hluti. 508 00:23:53,960 --> 00:23:59,230 Eitt þarf ég að breyta lista til benda í næsta svið, 50. 509 00:23:59,230 --> 00:24:01,270 Svo ætla að ég er að reyna að fjarlægja 34. 510 00:24:01,270 --> 00:24:03,560 Svo þessi strákur fékk að fara burtu í aðeins augnablik. 511 00:24:03,560 --> 00:24:07,210 >> Þannig að ég ætla að segja, listi fær músina næst. 512 00:24:07,210 --> 00:24:08,570 Jæja, þetta er bendillinn. 513 00:24:08,570 --> 00:24:10,360 Næst er að benda á hér. 514 00:24:10,360 --> 00:24:17,470 Þannig að þetta er að breytast þessa ör rétt nú til að benda á þennan gaur hérna. 515 00:24:17,470 --> 00:24:19,580 Nú, muna, höfum við tímabundið breytu. 516 00:24:19,580 --> 00:24:23,520 Svo við höfum ekki munaðarlaus nein hnúta, því ég hef líka þessa dagana að mínu 517 00:24:23,520 --> 00:24:25,010 framkvæmd fjarlægja. 518 00:24:25,010 --> 00:24:29,600 Svo nú, ef listi sjálft er ekki núll, Ég þarf að festa a lítill eitthvað. 519 00:24:29,600 --> 00:24:32,690 >> Ég þarf að gera nú viss um að þetta ör, sem er áður benda 520 00:24:32,690 --> 00:24:36,830 50-34, þetta hefur fengið að fara í burtu, því ef ég er að reyna að losna 521 00:24:36,830 --> 00:24:41,910 af 34, 50 höfðu betur ekki halda einhverju konar aftur tilvísun í það sem 522 00:24:41,910 --> 00:24:42,820 arrow leiðbeinandi. 523 00:24:42,820 --> 00:24:44,820 Svo ég gerði bara þessa línu. 524 00:24:44,820 --> 00:24:46,520 Svo þá er ég búinn. 525 00:24:46,520 --> 00:24:48,040 Að málið er í raun frekar auðvelt. 526 00:24:48,040 --> 00:24:51,010 Chopping burt höfuð listanum er tiltölulega einfalt. 527 00:24:51,010 --> 00:24:52,980 >> Því miður, það er þetta pirrandi annars blokk. 528 00:24:52,980 --> 00:24:56,170 Svo nú verð ég að taka málið fyrir þar er eitthvað í miðjunni. 529 00:24:56,170 --> 00:24:59,880 En það er ekki of hræðilegur, nema fyrir setningafræði eins og this. 530 00:24:59,880 --> 00:25:03,080 Þannig að ef ég er ekki í upphafi að lista, ég er einhvers staðar í miðjunni. 531 00:25:03,080 --> 00:25:08,160 Og þessi lína hér er að segja, byrja á hvað hnút sem þú ert á. 532 00:25:08,160 --> 00:25:11,210 533 00:25:11,210 --> 00:25:18,550 Fara á næsta reit fyrri hnúturinn er og benda að á músina. 534 00:25:18,550 --> 00:25:20,390 >> Skulum gera þetta pictorially. 535 00:25:20,390 --> 00:25:21,640 Það var að fá flókinn. 536 00:25:21,640 --> 00:25:30,480 537 00:25:30,480 --> 00:25:37,990 Svo ef ég hef fyrri reiti hér - skulum gera þetta - næsta svæði hér. 538 00:25:37,990 --> 00:25:41,200 Ég ætla að einfalda ábendingum mínum fremur en draga a heild búnt af 539 00:25:41,200 --> 00:25:45,710 hlutir og til baka crisscrossing hvert annað. 540 00:25:45,710 --> 00:25:50,870 Og nú, við skulum bara segja að þetta er 1, 2, 3 fyrir sakir umræðu, jafnvel 541 00:25:50,870 --> 00:25:53,410 þó að ekki stilla upp með vandamálið sem um ræðir. 542 00:25:53,410 --> 00:25:55,900 >> Svo er hér tengdur minn listi. 543 00:25:55,900 --> 00:25:59,300 Ég er að reyna að fjarlægja tvö í þessu einkum útgáfa af sögunni. 544 00:25:59,300 --> 00:26:01,960 Svo ég hef uppfært bendi til vera að benda þessum gaur. 545 00:26:01,960 --> 00:26:03,315 Svo er þetta PTR. 546 00:26:03,315 --> 00:26:04,530 Hann er að benda hér. 547 00:26:04,530 --> 00:26:07,170 Þetta er listi, sem er til staðar heimsvísu eins og áður. 548 00:26:07,170 --> 00:26:09,200 Og hann er að benda hér, sama hvað. 549 00:26:09,200 --> 00:26:10,800 Og nú ætla ég að reyna að fjarlægja tvö. 550 00:26:10,800 --> 00:26:13,850 >> Þannig að ef bendillinn er að benda hér, ég er fara að fylgja, virðist, 551 00:26:13,850 --> 00:26:17,110 Fyrri músina, sem setur mig í 1. 552 00:26:17,110 --> 00:26:22,290 Ég ætla þá að fara að segja að næsta sviði, sem færir mig yfir til þessa 553 00:26:22,290 --> 00:26:25,410 kassi hér, er að fara að jafn músina næst. 554 00:26:25,410 --> 00:26:28,400 Þannig að ef þetta bendi, er þetta næst. 555 00:26:28,400 --> 00:26:31,840 Það þýðir að þetta arrow þörfum til að benda á þennan gaur. 556 00:26:31,840 --> 00:26:35,140 >> Svo hvað þessi lína af kóða er bara gert er a lítill hluti af þessu. 557 00:26:35,140 --> 00:26:37,500 Og nú, þetta er að leita eins og a skref í rétta átt. 558 00:26:37,500 --> 00:26:41,390 Við viljum fyrst og fremst að snip 2 út á miðju 1 og 3. 559 00:26:41,390 --> 00:26:44,400 Svo gerir það á tilfinninguna að við viljum Leiðin þetta bendi í kringum hana. 560 00:26:44,400 --> 00:26:50,400 Þannig að þetta næsta lína er að haka ef bendillinn næsta er ekki null, það er 561 00:26:50,400 --> 00:26:54,200 örugglega einhver til hægri á 2, það þýðir að við verðum einnig að gera 562 00:26:54,200 --> 00:26:55,850 smá snip hér. 563 00:26:55,850 --> 00:27:00,590 >> Þannig að ég þarf nú að fylgja þessari músina og uppfæra fyrri bendilinn 564 00:27:00,590 --> 00:27:05,410 þessi strákur að gera a lítill hluti af a Lausn hér haga hér. 565 00:27:05,410 --> 00:27:07,100 Og nú, sjónrænt er þetta ágætur. 566 00:27:07,100 --> 00:27:11,930 Það er svolítið sóðalegur á að það er enginn bendir á 2 lengur. 567 00:27:11,930 --> 00:27:13,600 2 er bendir til vinstri. 568 00:27:13,600 --> 00:27:14,980 Og 2 er bendir til hægri. 569 00:27:14,980 --> 00:27:17,480 En hann getur gert hvað sem hann vill, því hann er að fara að fá frelsi. 570 00:27:17,480 --> 00:27:19,480 Og það skiptir ekki máli hvað sem gildin eru lengur. 571 00:27:19,480 --> 00:27:23,040 >> Hvað er mikilvægt er að eftir krakkar eru að venja ofan 572 00:27:23,040 --> 00:27:24,280 og fyrir neðan hann núna. 573 00:27:24,280 --> 00:27:25,810 Og reyndar, það er það sem við gerum næst. 574 00:27:25,810 --> 00:27:29,360 Við frjáls músina, sem þýðir að við segja að stýrikerfi, þú ert velkominn 575 00:27:29,360 --> 00:27:30,906 að endurheimta þetta. 576 00:27:30,906 --> 00:27:34,900 Og þá loks aftur við. 577 00:27:34,900 --> 00:27:37,220 Else óbeint, ef við hafa ekki skilað enn, 578 00:27:37,220 --> 00:27:38,290 við verðum að halda að leita. 579 00:27:38,290 --> 00:27:41,485 Svo bendi jafngildir músina næst bara þýðir færa þennan gaur hérna. 580 00:27:41,485 --> 00:27:42,600 Færa þennan gaur hérna. 581 00:27:42,600 --> 00:27:45,400 Færa þennan gaur hér ef í raun, við höfum ekki fundið númerið 582 00:27:45,400 --> 00:27:46,960 við erum að leita að enn. 583 00:27:46,960 --> 00:27:49,630 >> Svo satt, það lítur alveg yfirþyrmandi, held ég, í fyrstu 584 00:27:49,630 --> 00:27:52,180 litið, sérstaklega ef þú barátta með þetta á spurningakeppni þá sjá 585 00:27:52,180 --> 00:27:52,850 eitthvað eins og this. 586 00:27:52,850 --> 00:27:55,050 Og þú klappa þér á bakinu. 587 00:27:55,050 --> 00:27:57,080 Jæja, það er engin leið að ég gæti haft koma upp með það á prófinu. 588 00:27:57,080 --> 00:28:00,470 En ég myndi halda því fram, þú getur ef þú brýtur það niður í þessum einstaka 589 00:28:00,470 --> 00:28:04,400 tilvikum og bara ganga í gegnum það vandlega, að vísu, að vísu, undir 590 00:28:04,400 --> 00:28:06,300 streituvaldandi aðstæður. 591 00:28:06,300 --> 00:28:09,470 >> Sem betur fer, myndin gerð allt hamingjusamari. 592 00:28:09,470 --> 00:28:11,050 Þú gætir teiknað þetta í allir tala af lifnaðarhættir. 593 00:28:11,050 --> 00:28:12,760 Þú þarft ekki að gera crisscrossing hlutur hér. 594 00:28:12,760 --> 00:28:14,520 Þú getur gert það með beinum línur líkar þetta. 595 00:28:14,520 --> 00:28:18,790 En GIST af þessu vandamáli, í Almennt var að átta sig á því 596 00:28:18,790 --> 00:28:22,060 mynd í lokin ætti að líta svolítið eitthvað eins og þetta, vegna þess að 597 00:28:22,060 --> 00:28:25,030 föstu tíma í skyn að þú haldir jamming og jamming og jamming 598 00:28:25,030 --> 00:28:29,900 nýja hnúta í upphafi af listanum. 599 00:28:29,900 --> 00:28:31,960 Einhverjar spurningar? 600 00:28:31,960 --> 00:28:34,565 Sennilega mest krefjandi vissulega erfðaskrá spurningar. 601 00:28:34,565 --> 00:28:37,690 >> Áhorfendur: Svo er listi svipað höfuð í fyrri dæmum. 602 00:28:37,690 --> 00:28:39,640 >> DAVID J. Malan: Einmitt, einmitt. 603 00:28:39,640 --> 00:28:43,130 Bara annað nafn fyrir alþjóðlegt breytu. 604 00:28:43,130 --> 00:28:44,380 Heimsvísu hvað? 605 00:28:44,380 --> 00:28:48,880 606 00:28:48,880 --> 00:28:49,730 >> ROB BOWDEN: OK. 607 00:28:49,730 --> 00:28:52,020 Þannig að þetta er eitt þar sem þú þurfti að skrifa málsgreinina. 608 00:28:52,020 --> 00:28:56,060 Sumir skrifaði ritgerðir fyrir þessa spurningu. 609 00:28:56,060 --> 00:29:00,230 En þú þarft bara að nota þessa sex hugtök til að lýsa því hvað gerist þegar 610 00:29:00,230 --> 00:29:02,440 þú reynir að hafa samband facebook.com. 611 00:29:02,440 --> 00:29:07,930 Svo ég verð bara að tala í gegnum ferlið nota alla þessa skilmála. 612 00:29:07,930 --> 00:29:11,290 Svo í vafranum okkar, slá við facebook.com og ýttu á Enter. 613 00:29:11,290 --> 00:29:17,280 Svo vafra okkar er að fara að reisa HTTP óskað eftir því að það er að fara að senda 614 00:29:17,280 --> 00:29:22,220 gegnum nokkur ferli til Facebook fyrir Facebook að svara okkur með 615 00:29:22,220 --> 00:29:24,450 HTML á síðu hennar. 616 00:29:24,450 --> 00:29:28,800 >> Svo er það ferli sem HTTP beiðni 617 00:29:28,800 --> 00:29:30,730 í raun fær til Facebook? 618 00:29:30,730 --> 00:29:32,790 Svo fyrst þurfum við að þýða Facebook.com. 619 00:29:32,790 --> 00:29:38,780 Svo bara gefið nafnið Facebook.com, þar raunverulega hjartarskinn HTTP beiðni 620 00:29:38,780 --> 00:29:39,940 þurfa að fara? 621 00:29:39,940 --> 00:29:44,120 Þannig að við þurfum að þýða Facebook.com til IP heimilisfang, sem einstaklega 622 00:29:44,120 --> 00:29:47,620 bent hvað vél við raunverulega langar að senda þessa beiðni til. 623 00:29:47,620 --> 00:29:49,310 Fartölvuna hefur IP tölu. 624 00:29:49,310 --> 00:29:52,240 Nokkuð tengd við internetið hefur IP tölu. 625 00:29:52,240 --> 00:29:59,030 >> Svo DNS, Domain Name System, sem er hvað er að fara að takast á við þýðingu 626 00:29:59,030 --> 00:30:03,750 frá facebook.com til IP heimilisfang sem þú vilt í raun að hafa samband. 627 00:30:03,750 --> 00:30:08,075 Þannig að við að hafa samband við DNS framreiðslumaður og segja, hvað er facebook.com? 628 00:30:08,075 --> 00:30:16,560 Það segir, ó, það er IP tölu 190,212 eitthvað, eitthvað, eitthvað. 629 00:30:16,560 --> 00:30:16,900 Allt í lagi. 630 00:30:16,900 --> 00:30:18,850 Nú, ég veit hvað vél Ég vil hafa samband. 631 00:30:18,850 --> 00:30:22,360 >> Svo þá senda HTTP beiðni þína yfir þessi vél. 632 00:30:22,360 --> 00:30:24,140 Svo hvernig hjartarskinn það fá að þessi vél? 633 00:30:24,140 --> 00:30:27,200 Jæja, beiðni fer frá leið til leið skoppar. 634 00:30:27,200 --> 00:30:32,630 Mundu dæmi í bekknum, þar sem við sáum í raun leiðina að 635 00:30:32,630 --> 00:30:35,340 pakka tók þegar við reyndum til samskipta. 636 00:30:35,340 --> 00:30:38,460 Við sáum það hoppa yfir Atlantshafið Haf á einum stað eða hvað. 637 00:30:38,460 --> 00:30:42,820 >> Svo síðasta tíma höfn. 638 00:30:42,820 --> 00:30:46,520 Svo er þetta nú á tölvunni þinni. 639 00:30:46,520 --> 00:30:49,970 Hægt er að hafa marga hluti eins samskiptum við internetið. 640 00:30:49,970 --> 00:30:53,730 Svo ég geti verið í gangi, td Skype. 641 00:30:53,730 --> 00:30:55,670 Ég gæti hafa a vefur flettitæki opinn. 642 00:30:55,670 --> 00:30:59,010 Ég gæti hafa eitthvað sem torrenting skrár. 643 00:30:59,010 --> 00:31:00,880 Svo öll þessi atriði eru samskiptum við 644 00:31:00,880 --> 00:31:02,600 internetið á einhvern hátt. 645 00:31:02,600 --> 00:31:08,070 >> Svo þegar tölvan þín fær nokkur gögn af internetinu, hvernig virkar það 646 00:31:08,070 --> 00:31:10,130 vita hvaða forrit í raun vill gögnin? 647 00:31:10,130 --> 00:31:12,610 Hvernig virkar það vita hvort þetta tiltekna gögn er ætlað fyrir 648 00:31:12,610 --> 00:31:16,070 torrenting umsókn öfugt til the vefur flettitæki? 649 00:31:16,070 --> 00:31:20,980 Þannig að þetta er tilgangur höfnum sem öll þessi forrit hafa 650 00:31:20,980 --> 00:31:22,720 krafa tengið á tölvunni þinni. 651 00:31:22,720 --> 00:31:27,580 Svo segir vefur flettitæki, hey, Ég er að hlusta á höfn 1000. 652 00:31:27,580 --> 00:31:32,240 Og torrenting program þinn er að segja, Ég er að hlusta á höfn 3000. 653 00:31:32,240 --> 00:31:34,770 Og Skype segir, ég er að nota port 4000. 654 00:31:34,770 --> 00:31:41,950 >> Svo þegar þú fá sumir gögn sem tilheyrir að einn af þessum forritum, gögn 655 00:31:41,950 --> 00:31:45,510 er merkt við hvaða höfn það í raun skal senda eftir á. 656 00:31:45,510 --> 00:31:47,950 Svo segir þetta, ó, tilheyra ég til höfn 1000. 657 00:31:47,950 --> 00:31:50,950 Ég veit þá þarf ég að senda þetta eftir að vafranum mínum. 658 00:31:50,950 --> 00:31:56,440 Svo það er ástæðan viðeigandi hér er þessi vefur framreiðslumaður tilhneigingu til 659 00:31:56,440 --> 00:31:58,240 hlusta á höfn 80. 660 00:31:58,240 --> 00:32:02,420 Svo þegar ég samband við Facebook.com, ég er samskipti með einhverjum vél. 661 00:32:02,420 --> 00:32:06,390 En ég þarf að segja hver tengi sem vél Mig langar að eiga samskipti við. 662 00:32:06,390 --> 00:32:09,160 Og vefur framreiðslumaður tilhneigingu til að vera hlusta á höfn 80. 663 00:32:09,160 --> 00:32:14,010 >> Ef þeir vildu, gætu þeir sett það upp svo lista það sem á höfn 7000. 664 00:32:14,010 --> 00:32:19,090 Og síðan í a vefur flettitæki, ég gat höndunum tegund Facebook.com: 7000 til 665 00:32:19,090 --> 00:32:24,600 senda beiðni til höfn 7000 af Facebook vefþjóni. 666 00:32:24,600 --> 00:32:26,820 >> DAVID J. Malan: Og í þessu tilfelli, jafnvel þó við höfum ekki krefjast þess að fólk 667 00:32:26,820 --> 00:32:30,000 nefna þessu, í þessu tilfelli, hvað tengi myndi beiðni raunverulega fara að? 668 00:32:30,000 --> 00:32:36,630 669 00:32:36,630 --> 00:32:37,880 Reyndu aftur. 670 00:32:37,880 --> 00:32:42,810 671 00:32:42,810 --> 00:32:44,300 Nákvæmlega. 672 00:32:44,300 --> 00:32:47,960 Ekki útlit fyrir það, en lipurðar það er það engu að síðustu. 673 00:32:47,960 --> 00:32:51,770 >> ROB BOWDEN: Svo HTTPS, þar sem það er hlusta sérstaklega fyrir 674 00:32:51,770 --> 00:32:55,180 dulkóðuð, það er á höfn 4430. 675 00:32:55,180 --> 00:32:57,680 >> Áhorfendur: Og póstur er 25, ekki satt? 676 00:32:57,680 --> 00:33:00,670 >> DAVID J. Malan: Outbound emails, 25, Já. 677 00:33:00,670 --> 00:33:03,760 >> ROB BOWDEN: Ég veit ekki einu sinni af the - öll neðri sjálfur tilhneigingu til að vera 678 00:33:03,760 --> 00:33:06,310 frátekið fyrir hlutum. 679 00:33:06,310 --> 00:33:09,260 Ég held að allt undir 1024 er frátekið. 680 00:33:09,260 --> 00:33:13,450 >> Áhorfendur: Hvers vegna sagðirðu 3 var rangt númer? 681 00:33:13,450 --> 00:33:18,820 >> ROB BOWDEN: Vegna þess að í IP heimilisfang, það er fjórum söfn tölustöfum. 682 00:33:18,820 --> 00:33:21,090 Og þeir eru 0-255. 683 00:33:21,090 --> 00:33:28,060 Svo er 192.168.2.1 algeng staðbundin net IP tölu. 684 00:33:28,060 --> 00:33:30,840 Taka eftir öllum af þeim eru minna en 255. 685 00:33:30,840 --> 00:33:33,570 Svo þegar ég byrjaði með 300, sem gæti ekki hugsanlega hafa 686 00:33:33,570 --> 00:33:35,210 verið einn af þeim tölum. 687 00:33:35,210 --> 00:33:38,170 >> DAVID J. Malan: En það kjánalegt myndband frá - var það CSI, þar sem þeir höfðu 688 00:33:38,170 --> 00:33:39,970 númer sem var of stór fyrir IP tölu. 689 00:33:39,970 --> 00:33:42,940 690 00:33:42,940 --> 00:33:46,110 >> ROB BOWDEN: Einhverjar spurningar um þetta? 691 00:33:46,110 --> 00:33:51,710 Næsta einn, svo gjörbreyst atriði, en við höfum þetta PHP array fyrir 692 00:33:51,710 --> 00:33:53,270 hús í quad. 693 00:33:53,270 --> 00:33:56,360 Og við höfum óraðaðan lista. 694 00:33:56,360 --> 00:33:59,550 Og við viljum að prenta út hvert atriði á listanum bara innihalda nafn húsið. 695 00:33:59,550 --> 00:34:09,090 696 00:34:09,090 --> 00:34:11,870 Þannig að við höfum framhandleggur lykkja. 697 00:34:11,870 --> 00:34:17,540 Svo man, setningafræði er framhandleggur array sem lið í array. 698 00:34:17,540 --> 00:34:22,360 Svo í gegnum hverja ítrun lykkju, Húsið er að fara að taka á einu af 699 00:34:22,360 --> 00:34:24,060 gildi innan fylkisins. 700 00:34:24,060 --> 00:34:26,530 >> Á fyrsta endurtekning, hús verður Cabot House. 701 00:34:26,530 --> 00:34:30,370 Á annarri endurtekning, hús mun vera Courier House og svo framvegis. 702 00:34:30,370 --> 00:34:34,370 Svo fyrir hvern quad heimilishundar, erum við bara að fara að prenta - 703 00:34:34,370 --> 00:34:37,250 þú einnig gætu hafa bergmálað - 704 00:34:37,250 --> 00:34:42,199 að atriði á listanum og síðan nafn hússins og svo loka atriðinu. 705 00:34:42,199 --> 00:34:45,210 The hrokkið axlabönd eru valfrjáls hér. 706 00:34:45,210 --> 00:34:49,480 >> Og þá ég sagði líka í spurningunni sjálft, muna að loka 707 00:34:49,480 --> 00:34:50,770 óraðaðan lista tag. 708 00:34:50,770 --> 00:34:53,949 Þannig að við þurfum að hætta PHP háttur í því skyni að gera þetta. 709 00:34:53,949 --> 00:35:00,280 Eða við gætum hafa bergmálað í loka upptalningu merkinu. 710 00:35:00,280 --> 00:35:02,380 >> DAVID J. Malan: Einnig fínn hér myndi hafa verið að nota gamla skóla fyrir 711 00:35:02,380 --> 00:35:07,340 lykkja með $ i = 0 0 og nota talningu til reikna út lengd geislans. 712 00:35:07,340 --> 00:35:09,240 Algerlega fínn líka, bara smá wordier. 713 00:35:09,240 --> 00:35:12,170 714 00:35:12,170 --> 00:35:14,742 >> Áhorfendur: Svo ef þú ætlaðir að [Inaudible], myndir þú gera - 715 00:35:14,742 --> 00:35:16,734 Ég gleymi því, að lykkja [inaudible] er. 716 00:35:16,734 --> 00:35:21,380 Vilt þú $ quad krappi ég? 717 00:35:21,380 --> 00:35:21,850 >> DAVID J. Malan: Einmitt. 718 00:35:21,850 --> 00:35:23,100 Já, einmitt. 719 00:35:23,100 --> 00:35:26,650 720 00:35:26,650 --> 00:35:27,900 >> ROB BOWDEN: Nokkuð fleira? 721 00:35:27,900 --> 00:35:31,350 722 00:35:31,350 --> 00:35:32,010 >> DAVID J. Malan: Allt í lagi. 723 00:35:32,010 --> 00:35:32,300 Málamiðlanir. 724 00:35:32,300 --> 00:35:38,290 Þannig að það voru bunches af svörum mögulegt er fyrir hvert þessara. 725 00:35:38,290 --> 00:35:40,510 Við vorum í raun bara að leita að eitthvað sannfærandi fyrir tímann og 726 00:35:40,510 --> 00:35:41,100 hæðir. 727 00:35:41,100 --> 00:35:44,830 Og númer 16 spurði, sannprófa notendur ' inntak viðskiptavinur-hlið, eins og með JavaScript, 728 00:35:44,830 --> 00:35:47,280 í stað þess að framreiðslumaður-hlið, eins og með PHP. 729 00:35:47,280 --> 00:35:49,450 Svo er það sem kosti um gera client-megin? 730 00:35:49,450 --> 00:35:53,780 >> Jæja, einn af þeim hlutum sem við fyrirhuguð er að þú draga leynd, vegna þess að þú 731 00:35:53,780 --> 00:35:56,750 ekki að nenna að hafa samband við miðlara, sem gæti tekið nokkrar 732 00:35:56,750 --> 00:36:00,390 millisekúndur eða jafnvel í nokkrar sekúndur með því að forðast það og bara 733 00:36:00,390 --> 00:36:04,670 staðfesta notenda inntak viðskiptavinur hlið með kveiki á-leggja stjórnandinn og 734 00:36:04,670 --> 00:36:06,650 bara að skoða, gerðu þeir slá eitthvað í fyrir nafni? 735 00:36:06,650 --> 00:36:08,080 Gerðu þeir slá eitthvað í fyrir netfang? 736 00:36:08,080 --> 00:36:10,950 Did þeir velja dorm frá falla-dúnn matseðill? 737 00:36:10,950 --> 00:36:14,360 >> Þú getur gefið þeim tafarlaus viðbrögð nota gigahertz tölvuna 738 00:36:14,360 --> 00:36:16,770 eða hvað þeir hafa sem er raunverulega á borðinu sínu. 739 00:36:16,770 --> 00:36:19,310 Svo það er bara betra notandi upplifa yfirleitt. 740 00:36:19,310 --> 00:36:24,460 En hæðir af aðgerð client-megin löggilding, ef þú gerir það án þess að einnig 741 00:36:24,460 --> 00:36:29,860 gera framreiðslumaður-hlið löggilding er að mest einhver kemur út úr CS50 veit 742 00:36:29,860 --> 00:36:33,980 að þú getur bara senda gögn sem þú vilt að netþjóni allir tala af lifnaðarhættir. 743 00:36:33,980 --> 00:36:37,030 Frankly, í flestum hvaða vafra, getur þú smelltu kring í stillingum og bara 744 00:36:37,030 --> 00:36:40,110 slökkva á JavaScript, sem myndi, því, gera hvers konar 745 00:36:40,110 --> 00:36:41,080 löggilding. 746 00:36:41,080 --> 00:36:44,460 >> En einnig gæti muna að jafnvel ég gerði nokkrar Bogagöng hluti í flokki með 747 00:36:44,460 --> 00:36:47,790 Telnet og í raun að þykjast vera vafra með því að senda fá 748 00:36:47,790 --> 00:36:49,240 beiðnir til miðlara. 749 00:36:49,240 --> 00:36:51,030 Og það er vissulega ekki nota hvaða JavaScript. 750 00:36:51,030 --> 00:36:53,290 Það er bara ég að slá skipanir á lyklaborðinu. 751 00:36:53,290 --> 00:36:57,410 Svo í raun, allir forritari innan nóg þægindi með vefnum og HTTP 752 00:36:57,410 --> 00:37:01,690 gæti sent hvað gögn sem hann eða hún vill til a framreiðslumaður án löggilding. 753 00:37:01,690 --> 00:37:05,470 Og ef netþjóninn er ekki líka stöðva, gerðu þeir gefa mér nafn, er 754 00:37:05,470 --> 00:37:08,930 þetta í raun gilt netfang, gerði þeir velja dorm, þú might endir 755 00:37:08,930 --> 00:37:12,800 upp innsetning svikinn eða bara eyða gögnum inn í gagnagrunninn þinn, sem líklega 756 00:37:12,800 --> 00:37:15,450 er ekki að fara að vera gott ef þú varst miðað við það var þar. 757 00:37:15,450 --> 00:37:16,770 >> Þannig að þetta er pirrandi veruleika. 758 00:37:16,770 --> 00:37:19,890 En almennt, client-megin löggilding er mikill. 759 00:37:19,890 --> 00:37:21,810 En það þýðir tvöfalt eins mikið vinna. 760 00:37:21,810 --> 00:37:25,970 Þó að það eru í reynd ýmsir bókasöfn, JavaScript bókasöfnum fyrir 761 00:37:25,970 --> 00:37:28,830 dæmi, sem gerir þetta mikið, miklu minna af höfuðverk. 762 00:37:28,830 --> 00:37:31,940 Og þú getur endurnýtt sumir af the merkjamál framreiðslumaður-hlið, client-megin. 763 00:37:31,940 --> 00:37:35,980 En átta sig að það er yfirleitt frekari vinnu. 764 00:37:35,980 --> 00:37:36,415 Já. 765 00:37:36,415 --> 00:37:37,792 >> Áhorfendur: Svo ef við bara sagði ótryggari - 766 00:37:37,792 --> 00:37:39,205 >> DAVID J. Malan: [Hlær] 767 00:37:39,205 --> 00:37:39,680 Ugh. 768 00:37:39,680 --> 00:37:43,105 Þeir eru alltaf erfiðara sjálfur að dæma. 769 00:37:43,105 --> 00:37:44,480 >> ROB BOWDEN: sem myndi hefur verið tekið. 770 00:37:44,480 --> 00:37:44,810 >> DAVID J. Malan: Hvað? 771 00:37:44,810 --> 00:37:45,810 >> ROB BOWDEN: Ég bjó til þetta vandamál. 772 00:37:45,810 --> 00:37:46,735 Sem hefði verið samþykkt. 773 00:37:46,735 --> 00:37:47,220 >> DAVID J. Malan: Já. 774 00:37:47,220 --> 00:37:47,830 >> Áhorfendur: Cool. 775 00:37:47,830 --> 00:37:51,770 >> ROB BOWDEN: En við vildum ekki samþykkja í fyrsta sem - 776 00:37:51,770 --> 00:37:53,630 Jæja, það sem við vorum að leita að er eitthvað eins og þú þarft ekki að 777 00:37:53,630 --> 00:37:55,270 samskipti við þjóninn. 778 00:37:55,270 --> 00:37:58,355 Við vildum ekki taka bara hraðar. 779 00:37:58,355 --> 00:38:00,080 >> Áhorfendur: Hvað um ekki endurhlaða síðuna? 780 00:38:00,080 --> 00:38:00,430 >> ROB BOWDEN: Já. 781 00:38:00,430 --> 00:38:03,000 Sem var samþykkt svar. 782 00:38:03,000 --> 00:38:06,300 >> DAVID J. Malan: Nokkuð þar við fannst það var líklegra en ekki líklegt 783 00:38:06,300 --> 00:38:09,780 sem þú vissir hvað þú værir segja, sem er sterkur 784 00:38:09,780 --> 00:38:13,500 lína að draga stundum. 785 00:38:13,500 --> 00:38:16,000 Using a tengda listanum í staðinn af fjölda til að viðhalda 786 00:38:16,000 --> 00:38:17,590 raðað lista yfir heiltölur. 787 00:38:17,590 --> 00:38:21,000 Svo að kosti við vitnað oft með stiklum listum sem áhugasamir heild sinni 788 00:38:21,000 --> 00:38:22,370 kynning var þú færð kraft. 789 00:38:22,370 --> 00:38:23,030 Þeir geta vaxið. 790 00:38:23,030 --> 00:38:23,950 Þeir geta skreppa. 791 00:38:23,950 --> 00:38:27,370 Svo þú þarft ekki að hoppa í gegnum hindranir að í raun búa við meira minni 792 00:38:27,370 --> 00:38:28,140 með fjölda. 793 00:38:28,140 --> 00:38:30,310 Eða þú þarft ekki að bara segja, því miður, notandi. 794 00:38:30,310 --> 00:38:31,410 The array er fyllt. 795 00:38:31,410 --> 00:38:35,850 Svo dynamic vöxt á listanum. 796 00:38:35,850 --> 00:38:37,210 A hæðir þó tengdir listum? 797 00:38:37,210 --> 00:38:40,916 798 00:38:40,916 --> 00:38:43,356 >> Áhorfendur: Það er línulegt. 799 00:38:43,356 --> 00:38:45,800 Leita á tengda listanum er línuleg í staðinn fyrir það sem þú skráir þig inn 800 00:38:45,800 --> 00:38:46,360 >> DAVID J. Malan: Einmitt. 801 00:38:46,360 --> 00:38:50,160 Leita á tengda listanum er línuleg, jafnvel ef það er raðað, vegna þess að þú getur 802 00:38:50,160 --> 00:38:53,170 aðeins fylgst með þessum mola brauð, þessir ábendingum, frá upphafi listanum 803 00:38:53,170 --> 00:38:53,570 til enda. 804 00:38:53,570 --> 00:38:57,970 Þú getur ekki skiptimynt handahófi aðgangur og, svona, Tvíundarleit, jafnvel ef það er 805 00:38:57,970 --> 00:39:00,740 raðað, að þú gætir gera með fylki. 806 00:39:00,740 --> 00:39:02,390 Og það er einnig annar kostnaður. 807 00:39:02,390 --> 00:39:02,966 Já. 808 00:39:02,966 --> 00:39:03,800 >> Áhorfendur: Minni óhagkvæmt? 809 00:39:03,800 --> 00:39:04,130 >> DAVID J. Malan: Já. 810 00:39:04,130 --> 00:39:06,940 Jæja, ég myndi ekki endilega segja óhagkvæmt. 811 00:39:06,940 --> 00:39:10,110 En það er kostnaður þú fleiri minni, vegna þess að þú þarft 32 bita fyrir hvert 812 00:39:10,110 --> 00:39:13,400 hnút fyrir frekari músina, að minnsta kosti fyrir stakar tengda listanum. 813 00:39:13,400 --> 00:39:16,660 Nú, ef þú ert aðeins að geyma heiltölur og þú ert að bæta á músina, það er 814 00:39:16,660 --> 00:39:17,830 í raun eins konar non-léttvæg. 815 00:39:17,830 --> 00:39:19,340 Það er tvöföldun the magn af minni. 816 00:39:19,340 --> 00:39:22,330 En í raun og veru, ef þú ætlar að geyma á tengdur listi yfir structs sem kunna að hafa 817 00:39:22,330 --> 00:39:25,540 8 bytes, 16 bytes, jafnvel meira en það, kannski er það minna 818 00:39:25,540 --> 00:39:26,500 af jaðarkostnaður. 819 00:39:26,500 --> 00:39:28,320 En það er kostnaður engu að síður. 820 00:39:28,320 --> 00:39:31,880 Svo annað hvort þeirra myndi hef verið fínn eins og downsides. 821 00:39:31,880 --> 00:39:32,110 >> 18. 822 00:39:32,110 --> 00:39:36,100 Using PHP í stað C til að skrifa stjórn-lína forrit. 823 00:39:36,100 --> 00:39:41,890 Svo hér, það er oft hraðari til að nota A tungumál eins og PHP eða Ruby eða Python. 824 00:39:41,890 --> 00:39:43,700 Þú bara fljótt að opna upp texta ritil. 825 00:39:43,700 --> 00:39:45,900 Þú átt marga fleiri aðgerðir í boði fyrir þig. 826 00:39:45,900 --> 00:39:49,325 PHP hefur eldhúsvaskinn af störfum, en í C, þú 827 00:39:49,325 --> 00:39:50,420 hafa mjög, mjög lítið. 828 00:39:50,420 --> 00:39:53,820 Í staðreynd, krakkar sem vita erfiðu leiðina að þú þarft ekki kjötkássa matskeið. 829 00:39:53,820 --> 00:39:55,000 Þú þarft ekki hafa tengt listum. 830 00:39:55,000 --> 00:39:57,470 Ef þú vilt þá þarftu að innleiða þá sjálfur. 831 00:39:57,470 --> 00:40:00,950 >> Svo einn kosti af PHP eða bara einhverju túlkað tungumál er rapidity 832 00:40:00,950 --> 00:40:02,920 sem hægt að skrifa kóðann. 833 00:40:02,920 --> 00:40:06,660 En ókostur, sáum við þetta þegar ég fljótt þeyttum upp misspeller 834 00:40:06,660 --> 00:40:11,780 framkvæmd í fyrirlestri með PHP, er að nota túlkað tungumál 835 00:40:11,780 --> 00:40:13,570 er yfirleitt hægari. 836 00:40:13,570 --> 00:40:18,420 Og við sáum að sannanlega með að aukning í tíma úr 0,3 sekúndum í 3 837 00:40:18,420 --> 00:40:24,440 sekúndur, vegna túlkunar sem raunverulega gerist. 838 00:40:24,440 --> 00:40:27,060 >> Önnur kosti var að þú þarf ekki að safna saman. 839 00:40:27,060 --> 00:40:30,130 Svo flýtir það einnig upp þróun tilviljun, því að þú hefur ekki 840 00:40:30,130 --> 00:40:31,360 tvö skref til að keyra forrit. 841 00:40:31,360 --> 00:40:32,140 Þú ert bara einn. 842 00:40:32,140 --> 00:40:35,260 Og svo er það nokkuð áhrifaríkar og vel. 843 00:40:35,260 --> 00:40:38,450 Using a SQL gagnagrunn í stað þess að CSV skrá til að geyma gögn. 844 00:40:38,450 --> 00:40:40,230 Svo SQL gagnagrunnur er notað til pset7. 845 00:40:40,230 --> 00:40:42,060 CSV skrár sem þú did ekki nota mikið. 846 00:40:42,060 --> 00:40:45,960 En þú notaðir það óbeint í pset7 sem vel með því að tala við Yahoo Finance. 847 00:40:45,960 --> 00:40:49,330 >> En CSV er bara eins og Excel skrá en frábær einfalt, þar sem dálkarnir eru 848 00:40:49,330 --> 00:40:54,010 bara demarked með kommum inni sem að öðru leyti textaskrá. 849 00:40:54,010 --> 00:40:56,740 Og nota SQL gagnagrunn er aðeins meira sannfærandi. 850 00:40:56,740 --> 00:41:00,060 Það er kosti, vegna þess að þú færð hlutina eins að velja og setja inn og eyða. 851 00:41:00,060 --> 00:41:03,790 Og þú færð væntanlega vísitölur sem MySQL og aðra gagnagrunna, eins og 852 00:41:03,790 --> 00:41:07,510 Oracle, byggja fyrir þig í minni, sem þýðir velja þinn er sennilega ekki 853 00:41:07,510 --> 00:41:09,000 að fara að vera línuleg toppur til botn. 854 00:41:09,000 --> 00:41:11,300 Það er í raun að fara að vera eitthvað eins tvöfaldur leit eða eitthvað 855 00:41:11,300 --> 00:41:12,520 svipuð í anda. 856 00:41:12,520 --> 00:41:13,930 Svo þeir eru yfirleitt hraðar. 857 00:41:13,930 --> 00:41:16,040 >> En ókostur er að það er bara meiri vinna. 858 00:41:16,040 --> 00:41:16,730 Það er meira átak. 859 00:41:16,730 --> 00:41:18,140 Þú verður að skilja gagnagrunna. 860 00:41:18,140 --> 00:41:18,940 Þú þarft að setja það upp. 861 00:41:18,940 --> 00:41:20,840 Þú þarft miðlara til að keyra þessi gagnagrunnur á. 862 00:41:20,840 --> 00:41:22,750 Þú þarft að skilja hvernig á að stilla það. 863 00:41:22,750 --> 00:41:24,930 Svo að þetta eru bara þessir konar málamiðlanir. 864 00:41:24,930 --> 00:41:27,860 En a CSV skrá, þú getur búa hana með gedit. 865 00:41:27,860 --> 00:41:28,770 Og þú ert góður til fara. 866 00:41:28,770 --> 00:41:31,550 Það er engin flókið lengra. 867 00:41:31,550 --> 00:41:34,870 >> Using a trie í stað kjötkássa borð með sérstakri chaining að geyma 868 00:41:34,870 --> 00:41:37,490 orðabók yfir orð minnir af pset5. 869 00:41:37,490 --> 00:41:42,480 Svo reynir kosti, í orði að minnsta kosti, er það? 870 00:41:42,480 --> 00:41:46,380 Föstu tíma, að minnsta kosti ef þú ert hass á hverjum einstaklingsins 871 00:41:46,380 --> 00:41:48,990 bréf í orði, eins og þú gæti hafa fyrir pset5. 872 00:41:48,990 --> 00:41:52,720 Það gæti verið fimm kjötkássa, sex kjötkássa ef það er fimm eða sex 873 00:41:52,720 --> 00:41:53,900 bréf í orðinu. 874 00:41:53,900 --> 00:41:54,580 Og það er nokkuð gott. 875 00:41:54,580 --> 00:41:56,910 Og ef það er efri bundið um hvernig langur orð þín gæti verið, það er 876 00:41:56,910 --> 00:41:59,320 örugglega aðfellu föstu tíma. 877 00:41:59,320 --> 00:42:05,180 >> En a kjötkássa borð með aðskildum chaining, vandamálið þar með að 878 00:42:05,180 --> 00:42:09,070 konar gögn uppbygging er að árangur reiknirit þinn venjulega 879 00:42:09,070 --> 00:42:12,700 veltur á ýmislegt þegar í gögn uppbygging. 880 00:42:12,700 --> 00:42:15,660 Og það er örugglega raunin með keðjur, þar sem meira efni sem þú setur 881 00:42:15,660 --> 00:42:18,800 í kjötkássa töflunni lengur sem þeir keðjur fara, sem þýðir í versta 882 00:42:18,800 --> 00:42:21,960 tilfelli, að hlutur sem þú gætir verið að leita að er alla leið í enda annars 883 00:42:21,960 --> 00:42:26,000 af þeim keðjur, sem í raun devolves í eitthvað línuleg. 884 00:42:26,000 --> 00:42:29,450 >> Nú, í raun, gæti það alveg vera raunin að kjötkássa borð við 885 00:42:29,450 --> 00:42:32,820 keðjur er hraðari en samsvarandi trie framkvæmd. 886 00:42:32,820 --> 00:42:35,570 En það er af ýmsum ástæðum, meðal sem eru reynir að nota allt fullt af 887 00:42:35,570 --> 00:42:39,240 minni sem getur, í raun, hægur hlutur niður, vegna þess að þú færð ekki gott 888 00:42:39,240 --> 00:42:42,410 kostir eitthvað sem kallast flýtiminni, þar sem hlutirnir sem eru þétt saman 889 00:42:42,410 --> 00:42:45,420 í minni sem hægt er að nálgast oft hraðar. 890 00:42:45,420 --> 00:42:48,180 Og stundum er hægt að koma upp með mjög gott kjötkássa virka. 891 00:42:48,180 --> 00:42:51,060 Jafnvel ef þú verða að sóa smá minni, þú gætir reyndar að geta 892 00:42:51,060 --> 00:42:54,430 finna hluti hratt og ekki eins slæmt eins og línulega. 893 00:42:54,430 --> 00:42:58,410 >> Svo í stuttu máli, það var ekki endilega með einhverjum af þessum einum eða jafnvel tveimur 894 00:42:58,410 --> 00:43:00,050 ákveðin atriði sem við vorum að leita að. 895 00:43:00,050 --> 00:43:03,080 Raun nokkuð sannfærandi sem efri og hæðir 896 00:43:03,080 --> 00:43:04,800 almennt caught auga okkar. 897 00:43:04,800 --> 00:43:11,840 >> ROB BOWDEN: Svo fyrir tímann, við gerðum ekki taka á eigin spýtur "hraðar." Þú 898 00:43:11,840 --> 00:43:14,540 þurfti að segja eitthvað um það. 899 00:43:14,540 --> 00:43:17,910 Jafnvel ef þú sagt fræðilega hraðar, við vissum að þú konar skilið 900 00:43:17,910 --> 00:43:19,470 að það er 0 af 1. 901 00:43:19,470 --> 00:43:22,820 Og kjötkássa borð, í orði, er ekki 0 af 1. 902 00:43:22,820 --> 00:43:26,550 Minnast neitt um afturkreistingur almennt got þú stig. 903 00:43:26,550 --> 00:43:32,640 En "hraðar," mest af þeim lausnum á stór borð sem voru voru reynir 904 00:43:32,640 --> 00:43:34,990 hlutlægt hægari en lausnir sem voru kjötkássa matskeið. 905 00:43:34,990 --> 00:43:37,250 Svo hraðar í sjálfu sér er í raun ekki satt. 906 00:43:37,250 --> 00:43:41,550 907 00:43:41,550 --> 00:43:44,380 >> DAVID J. Malan: Dom de Dom Dom. 908 00:43:44,380 --> 00:43:46,686 Ég er sennilega sá eini sem gerir sér grein fyrir það er hvernig það er ætlast til 909 00:43:46,686 --> 00:43:47,500 vera áberandi, ekki satt? 910 00:43:47,500 --> 00:43:50,400 >> ROB BOWDEN: Ég hafði reyndar ekki hugmynd. 911 00:43:50,400 --> 00:43:51,650 >> DAVID J. Malan: Það gerði vit í höfðinu á mér. 912 00:43:51,650 --> 00:43:53,830 913 00:43:53,830 --> 00:43:57,580 >> ROB BOWDEN: ég er að gera þetta einn. 914 00:43:57,580 --> 00:43:58,020 OK. 915 00:43:58,020 --> 00:44:04,243 Svo er þetta það eina sem þú þurftir að draga Teikningin svipað og þú might 916 00:44:04,243 --> 00:44:06,040 hafa séð á undanförnum prófum. 917 00:44:06,040 --> 00:44:12,200 Svo skulum líta bara á þetta. 918 00:44:12,200 --> 00:44:18,170 Svo frá HTML hnút, höfum við tvær börn, höfuð og líkama. 919 00:44:18,170 --> 00:44:20,570 Svo við útibú - höfuð og líkama. 920 00:44:20,570 --> 00:44:22,280 Höfuðið hefur titil tag. 921 00:44:22,280 --> 00:44:23,710 Þannig að við höfum titil. 922 00:44:23,710 --> 00:44:28,450 >> Nú er einn hlutur a einhver fjöldi af fólki gleymdi er að þessi texti hnútar eru 923 00:44:28,450 --> 00:44:30,430 þætti innan þessa tré. 924 00:44:30,430 --> 00:44:36,260 Svo hér við skyldir til að draga þá sem ovals til að aðgreina það frá þessum 925 00:44:36,260 --> 00:44:37,380 tegundir tengipunkta. 926 00:44:37,380 --> 00:44:41,450 En tilkynning einnig hér höfum við toppinn, miðju og botn mun endir upp tilvera 927 00:44:41,450 --> 00:44:42,560 texti hnúður. 928 00:44:42,560 --> 00:44:46,250 Svo gleyma þeim var nokkuð af algeng mistök. 929 00:44:46,250 --> 00:44:48,770 >> Líkaminn hefur þrjú börn - þessir þrír divs. 930 00:44:48,770 --> 00:44:53,340 Svo div, div, div og þá texta hnút börn þeirra divs. 931 00:44:53,340 --> 00:44:55,900 Það er ansi mikið það fyrir að spurningum. 932 00:44:55,900 --> 00:44:57,860 >> DAVID J. Malan: Og það er athyglisvert, jafnvel þó við búa ekki á þessu 933 00:44:57,860 --> 00:45:01,040 upplýsingar í þeim tíma sem við eyða á JavaScript, að þess er, í 934 00:45:01,040 --> 00:45:02,290 staðreynd, sama tæknilega. 935 00:45:02,290 --> 00:45:06,330 Þannig að ef höfuðið kemur fyrir líkama í HTML, þá ætti það að birtast til 936 00:45:06,330 --> 00:45:08,860 vinstri á líkamanum í raun DOM. 937 00:45:08,860 --> 00:45:12,265 Að hans er, almennt, bara FYI, eitthvað sem kallast skjal röð, þar 938 00:45:12,265 --> 00:45:13,260 það skiptir máli. 939 00:45:13,260 --> 00:45:17,470 Og ef þú varst að innleiða flokka, forrit sem les HTML í byggingu 940 00:45:17,470 --> 00:45:20,960 upp tré í minni, að vera heiðarlegur, það er innsæi líklega það sem þú 941 00:45:20,960 --> 00:45:24,720 gera samt - toppur til botn, vinstri til hægri. 942 00:45:24,720 --> 00:45:26,116 >> ROB BOWDEN: Spurningar um það? 943 00:45:26,116 --> 00:45:29,080 944 00:45:29,080 --> 00:45:30,000 Ætti ég að gera næsta einn? 945 00:45:30,000 --> 00:45:32,380 >> DAVID J. Malan: Jú. 946 00:45:32,380 --> 00:45:33,810 >> ROB BOWDEN: OK. 947 00:45:33,810 --> 00:45:39,320 Þannig að þetta er biðminni umframmagn árás spurning. 948 00:45:39,320 --> 00:45:43,740 The aðalæð hlutur að viðurkenna hér er, Jæja, hvernig gæti mótstöðumaður bragð 949 00:45:43,740 --> 00:45:46,170 þetta forrit í framkvæmd handahófskennt kóðann? 950 00:45:46,170 --> 00:45:51,860 Svo argv1, fyrsta stjórn lína rök til þessarar áætlunar, sem getur verið 951 00:45:51,860 --> 00:45:53,920 geðþótta lengi. 952 00:45:53,920 --> 00:45:59,160 En hér erum við að nota memcpy að afrita argv1, sem hér er bar. 953 00:45:59,160 --> 00:46:00,165 Við erum liggur það sem rök. 954 00:46:00,165 --> 00:46:02,050 Og svo það tekur á nafn bar. 955 00:46:02,050 --> 00:46:08,040 >> Þannig að við erum memcpying bar inn í þennan biðminni c. 956 00:46:08,040 --> 00:46:09,400 Hversu margir bæti erum við að afrita? 957 00:46:09,400 --> 00:46:14,040 Jæja þó margir bæti barnum gerist að vera með, lengd þeirrar röksemdar. 958 00:46:14,040 --> 00:46:17,930 En c er aðeins 12 bæti á breidd. 959 00:46:17,930 --> 00:46:22,280 Þannig að ef við slá a stjórn lína rifrildi sem er lengri en 12 bæti, erum við 960 00:46:22,280 --> 00:46:25,470 að fara að flæða yfir þetta Einkum Buffer. 961 00:46:25,470 --> 00:46:31,000 Nú, hvernig gæti mótstöðumaður bragð forrita inn framkvæmd handahófi kóða? 962 00:46:31,000 --> 00:46:34,910 >> Svo muna að hér Helsta er að kalla foo. 963 00:46:34,910 --> 00:46:37,340 Og svo þá helstu símtöl foo. 964 00:46:37,340 --> 00:46:40,408 Skulum draga þetta. 965 00:46:40,408 --> 00:46:44,720 966 00:46:44,720 --> 00:46:46,990 Þannig að við höfum stafla okkar. 967 00:46:46,990 --> 00:46:49,090 Og helstu hefur stafla ramma neðst. 968 00:46:49,090 --> 00:46:51,860 969 00:46:51,860 --> 00:46:53,250 Á einhverjum tímapunkti, foo helstu símtöl. 970 00:46:53,250 --> 00:46:55,390 Jæja, strax, foo helstu símtöl. 971 00:46:55,390 --> 00:46:57,130 Og svo foo fær eigin stakkur ramma þess. 972 00:46:57,130 --> 00:46:59,650 973 00:46:59,650 --> 00:47:02,220 >> Nú, á einhverjum tímapunkti, foo er að fara að fara aftur. 974 00:47:02,220 --> 00:47:06,810 Og fór Sigur skilar, þurfum við að vita á hvaða línu af kóða inni helstu vér 975 00:47:06,810 --> 00:47:10,610 voru til þess að vita hvar við ættum að halda áfram í helstu. 976 00:47:10,610 --> 00:47:13,100 Við getum kallað foo frá heild fullt af mismunandi stöðum. 977 00:47:13,100 --> 00:47:14,620 Hvernig vitum við hvar á að snúa aftur? 978 00:47:14,620 --> 00:47:16,460 Jæja, við þurfum að geyma að einhvers staðar. 979 00:47:16,460 --> 00:47:23,010 >> Svo einhvers staðar ekki satt um hér geymum við þar sem við ættum að fara aftur til einu sinni 980 00:47:23,010 --> 00:47:24,070 Sigur skilar. 981 00:47:24,070 --> 00:47:26,350 Og þetta er aftur heimilisfang. 982 00:47:26,350 --> 00:47:30,490 Svo hvernig mótstöðumaður gæti nýta þetta er sú staðreynd að 983 00:47:30,490 --> 00:47:37,550 þetta biðminni c er geymd, við skulum segja, hér er c. 984 00:47:37,550 --> 00:47:39,690 Þannig að við höfum fengið 12 bytes fyrir c. 985 00:47:39,690 --> 00:47:40,540 Þetta er c. 986 00:47:40,540 --> 00:47:43,030 Og þetta er stafla hringur Foo er. 987 00:47:43,030 --> 00:47:49,970 Svo ef illgjarn notandi slær meira bæti en 12 eða þeir slá inn skipunina 988 00:47:49,970 --> 00:47:54,570 lína rifrildi sem er lengri en 12 stafir, þá erum við að fara að 989 00:47:54,570 --> 00:47:57,540 flæða þessa biðminni. 990 00:47:57,540 --> 00:47:59,910 >> Við getum haldið áfram. 991 00:47:59,910 --> 00:48:02,220 Og á einhverjum tímapunkti, förum við langt nóg að við byrjum 992 00:48:02,220 --> 00:48:05,120 að skrifa yfir þessa aftur heimilisfang. 993 00:48:05,120 --> 00:48:08,310 Svo þegar við skrifa yfir aftur heimilisfang, þetta þýðir að þegar foo 994 00:48:08,310 --> 00:48:14,220 skilar, erum við aftur að hvert sem illgjarn notandi er að segja það að eftir 995 00:48:14,220 --> 00:48:19,490 hvað virði það inn, með hvaða stafir sem notandinn slegið inn. 996 00:48:19,490 --> 00:48:24,320 Og svo ef illgjarn notandi er að vera sérstaklega snjall, getur hann hafa þetta 997 00:48:24,320 --> 00:48:29,255 aftur til einhvers staðar í printDef virka eða einhvers staðar í malloc 998 00:48:29,255 --> 00:48:31,830 virka, bara hvar handahófskennt. 999 00:48:31,830 --> 00:48:38,420 >> En jafnvel meira snjall er það ef hann hefur notandinn aftur að hérna. 1000 00:48:38,420 --> 00:48:41,920 Og þá byrja framkvæmd þessar sem línur af kóða. 1001 00:48:41,920 --> 00:48:46,610 Svo á þeim tímapunkti, sem notandinn getur slegið inn hvað sem hann vill í þessum heimshluta. 1002 00:48:46,610 --> 00:48:52,210 Og hann hefur fulla stjórn yfir áætlun þína. 1003 00:48:52,210 --> 00:48:53,460 Spurningar um það? 1004 00:48:53,460 --> 00:48:56,380 1005 00:48:56,380 --> 00:49:00,970 Svo er næsta spurning lokið reimplementation af foo á þann hátt 1006 00:49:00,970 --> 00:49:02,620 að það er ekki lengur viðkvæm. 1007 00:49:02,620 --> 00:49:03,870 >> Svo there 'a par af leiðir þú gætir hafa gert þetta. 1008 00:49:03,870 --> 00:49:10,900 1009 00:49:10,900 --> 00:49:13,330 Við höfum enn c aðeins vera af lengd 12. 1010 00:49:13,330 --> 00:49:16,480 Þú gætir hafa breytt þessu sem hluti af lausn þína. 1011 00:49:16,480 --> 00:49:18,930 Við bættum einnig Athugaðu að ganga viss barnum var ekki null. 1012 00:49:18,930 --> 00:49:24,460 Þó að þú hafir ekki þörf að fyrir fullt kredit. 1013 00:49:24,460 --> 00:49:27,690 Þannig að við erum að athuga fyrst band lengd bar. 1014 00:49:27,690 --> 00:49:31,650 Ef það er stærra en 12, þá gera í raun ekki að gera afrit. 1015 00:49:31,650 --> 00:49:33,010 Svo er það ein leið til að ákveða það. 1016 00:49:33,010 --> 00:49:36,750 >> Önnur leið til að ákveða það er í stað þess að hafa c aðeins vera af lengd 12, hafa það 1017 00:49:36,750 --> 00:49:39,310 vera af lengd strlen (bar). 1018 00:49:39,310 --> 00:49:43,370 Önnur leið til að ákveða það er að í raun bara aftur. 1019 00:49:43,370 --> 00:49:46,690 Þannig að ef þú hefðir bara fengið losa af öllum þetta, ef þú hefðir bara eytt öllu 1020 00:49:46,690 --> 00:49:51,830 línur af kóða, myndir þú hafa fengið fullur trúnaður, þar sem þetta fall 1021 00:49:51,830 --> 00:49:54,150 er í raun ekki náð neitt. 1022 00:49:54,150 --> 00:49:57,650 Það er að afrita stjórn lína rök í einhvers array í 1023 00:49:57,650 --> 00:49:59,960 sveitarfélaga stafla ramma þess. 1024 00:49:59,960 --> 00:50:01,310 Og þá málið er aftur. 1025 00:50:01,310 --> 00:50:04,020 Og hvað sem það leikinn er farinn. 1026 00:50:04,020 --> 00:50:09,740 Svo aftur var einnig nægjanleg vegur af getting fullur trúnaður. 1027 00:50:09,740 --> 00:50:13,425 >> DAVID J. Malan: Ekki alveg anda spurningin en ásættanlegt á að 1028 00:50:13,425 --> 00:50:15,580 sérstakur engu að síður. 1029 00:50:15,580 --> 00:50:18,260 >> ROB BOWDEN: Spurningar um eitthvað af því? 1030 00:50:18,260 --> 00:50:22,270 The einn hlutur sem þú að minnsta kosti þarf að hafa söfnun kóðann. 1031 00:50:22,270 --> 00:50:24,810 Svo jafnvel þótt tæknilega þú ert ekki viðkvæm ef númerið þitt er ekki 1032 00:50:24,810 --> 00:50:29,130 safna saman, höfum vér ekki samþykkja það. 1033 00:50:29,130 --> 00:50:31,350 Engin spurning? 1034 00:50:31,350 --> 00:50:33,320 OK. 1035 00:50:33,320 --> 00:50:34,580 >> DAVID J. Malan: Viltu að segja þennan titil? 1036 00:50:34,580 --> 00:50:37,230 >> ROB BOWDEN: Nei 1037 00:50:37,230 --> 00:50:40,470 >> DAVID J. Malan: Svo í þessu einn, þetta var annaðhvort góðar fréttir eða slæmar fréttir. 1038 00:50:40,470 --> 00:50:43,870 Þetta er bókstaflega sama vandamál sem í fyrsta prófið. 1039 00:50:43,870 --> 00:50:46,140 Og það er nánast sama vandamál sem pset1. 1040 00:50:46,140 --> 00:50:49,980 En það var vísvitandi einfaldað til að vera einfaldari pýramída, eitt sem getur verið 1041 00:50:49,980 --> 00:50:52,330 leyst með örlítið einfaldari endurtekning. 1042 00:50:52,330 --> 00:50:55,680 Og í raun, það sem við vorum að fá á hér var ekki svo mikið rökfræði, 1043 00:50:55,680 --> 00:50:58,100 því sennilega með þessum tímapunkti, þú ert öruggari en þú varst 1044 00:50:58,100 --> 00:51:01,850 í viku einn með fyrir lykkjur eða hvers vegna lykkjur, en virkilega að stríða í sundur að 1045 00:51:01,850 --> 00:51:04,790 þú ert a lítill ánægð með hugmynd að PHP er ekki bara um hvað 1046 00:51:04,790 --> 00:51:05,290 forritun. 1047 00:51:05,290 --> 00:51:07,820 Það geta raunverulega vera notaður eins og tungumál að skrifa á skipanalínu forrit. 1048 00:51:07,820 --> 00:51:10,060 >> Og reyndar, það er það sem við vorum að reyna að vekja athygli þína. 1049 00:51:10,060 --> 00:51:12,060 Þetta er a stjórn lína PHP forrit. 1050 00:51:12,060 --> 00:51:16,690 Svo C kóða hér, en rétt í C, ekki leiðrétta fyrir PHP. 1051 00:51:16,690 --> 00:51:17,940 En númerið er í raun sama. 1052 00:51:17,940 --> 00:51:21,720 Ef þú bera saman lausnir fyrir Quiz 0 á móti Quiz 1, munt þú finna að 1053 00:51:21,720 --> 00:51:25,630 það er nánast eins, nema fyrir sumir dollara merki og fyrir 1054 00:51:25,630 --> 00:51:27,250 Án þess að gögn tegund. 1055 00:51:27,250 --> 00:51:31,720 Einkum ef við lítum hér, þú munt sjá að við iterate, í þessu 1056 00:51:31,720 --> 00:51:33,730 tilfelli, frá 1 upp í gegnum 7. 1057 00:51:33,730 --> 00:51:34,910 >> Við hefðum getað gert það 0 vísitölunni. 1058 00:51:34,910 --> 00:51:37,320 En stundum held ég að það er bara andlega auðveldara að hugsa um hluti 1059 00:51:37,320 --> 00:51:38,200 1-7. 1060 00:51:38,200 --> 00:51:40,300 Ef þú vilt eina blokk, þá tvo blokkir, þá var þremur, þá 1061 00:51:40,300 --> 00:51:41,770 punktur, punktur, punktur sjö. 1062 00:51:41,770 --> 00:51:45,960 Við höfum J verið frumstilla að 1 og þá telja á allt að i. 1063 00:51:45,960 --> 00:51:48,150 Og allt hérna er öðru leyti eins. 1064 00:51:48,150 --> 00:51:49,790 En verður í huga eru a par af hlutur. 1065 00:51:49,790 --> 00:51:53,230 Við gefa þér þessar tvær línur, þetta fyrsta einn, goofily nefndur sem klabbið 1066 00:51:53,230 --> 00:51:54,560 fyrir beittum Bang. 1067 00:51:54,560 --> 00:51:58,770 Og það bara skilgreinir leið, möppu, þar sem forrit getur verið 1068 00:51:58,770 --> 00:52:02,160 komist að því að þú vilt nota að túlka þessa skrá. 1069 00:52:02,160 --> 00:52:04,710 >> Og þá línu eftir það, af Auðvitað þýðir sláðu PHP háttur. 1070 00:52:04,710 --> 00:52:07,740 Og línan á mjög botn þýðir hætta PHP háttur. 1071 00:52:07,740 --> 00:52:09,740 Og þetta virkar, almennt, með túlka tungumál. 1072 00:52:09,740 --> 00:52:14,370 Það er eins konar pirrandi ef þú skrifa program í skrá sem kallast foo.php. 1073 00:52:14,370 --> 00:52:17,320 Og þá notendur hafa að bara muna, OK, til að keyra þetta forrit, ég 1074 00:52:17,320 --> 00:52:22,320 að slá "PHP pláss foo.php." Góður pirrandi ef ekkert annað. 1075 00:52:22,320 --> 00:52:25,270 Og það kemur einnig fram að kerfið þitt er skrifað í PHP, sem er ekki allur 1076 00:52:25,270 --> 00:52:27,060 að lýsa upp fyrir notandann. 1077 00:52:27,060 --> 00:52:30,100 >> Svo er hægt að fjarlægja. PHP öllu muna úr fyrirlestri. 1078 00:52:30,100 --> 00:52:35,690 Og þú getur raunverulega gert. / Foo ef þú hefur chmodded það með því að gera það 1079 00:52:35,690 --> 00:52:36,500 executable. 1080 00:52:36,500 --> 00:52:39,630 Svo chmod A + x foo hefði gert það. 1081 00:52:39,630 --> 00:52:41,460 Og ef þú bætir einnig klabbið hér. 1082 00:52:41,460 --> 00:52:45,320 En í raun, var vandamálið að komast á prenta út eitthvað eins og this. 1083 00:52:45,320 --> 00:52:51,100 No HTML, engin C-kóða vissulega, bara sumir PHP. 1084 00:52:51,100 --> 00:52:54,100 Svo Milo þá aftur í vanda 25.. 1085 00:52:54,100 --> 00:52:58,050 Og í 25, þú varst gefið eftirfarandi beinagrind númer, sem var 1086 00:52:58,050 --> 00:52:59,730 laglegur einfaldur vefur blaðsíða. 1087 00:52:59,730 --> 00:53:04,230 Og safaríkur hluti HTML-vitur var niður hér, þar sem við höfum inni í líkamanum 1088 00:53:04,230 --> 00:53:09,160 form sem hefur einkvæmt kenni af aðföngum inni sem var tveggja inntak, einn 1089 00:53:09,160 --> 00:53:11,950 með hugmynd um nafn, einn með hugmynd um hnappinn. 1090 00:53:11,950 --> 00:53:14,240 >> Sú fyrsta var gerð texta, sem Annað af gerðinni leggja. 1091 00:53:14,240 --> 00:53:16,930 Og svo við gáfum þér, reyndar, fleiri innihaldsefni en þú þörf, bara svo 1092 00:53:16,930 --> 00:53:19,230 þú krakkar höfðu valkosti sem til að leysa þetta vandamál. 1093 00:53:19,230 --> 00:53:21,130 Þú ert ekki aðeins þurft öll þessi auðkenni. 1094 00:53:21,130 --> 00:53:23,580 En það er hægt að leysa það á mismunandi vegu. 1095 00:53:23,580 --> 00:53:27,050 Og upp á toppinn, eftir því að markmiðið var að kveikja 1096 00:53:27,050 --> 00:53:27,960 glugga eins og þetta - 1097 00:53:27,960 --> 00:53:28,780 Halló, Milo! - 1098 00:53:28,780 --> 00:53:31,270 að skjóta upp kollinum í vafranum með frábær einfalt, ef 1099 00:53:31,270 --> 00:53:33,190 ekki ljótur, vakandi virka. 1100 00:53:33,190 --> 00:53:37,480 Og svo, að lokum, þetta snýst um eðli að einhvern veginn að hlusta á 1101 00:53:37,480 --> 00:53:41,290 greinargerðir formi client-megin , Ekki framreiðslumaður-hlið, einhvern veginn 1102 00:53:41,290 --> 00:53:45,640 bregðast við þeirri uppgjöf grabbing gildi sem notandinn slegið 1103 00:53:45,640 --> 00:53:50,120 í að nafninu sviði, og þá sýna það í meginmál viðvörun. 1104 00:53:50,120 --> 00:53:53,460 >> Svo ein leið sem þú getur gert þetta er með jQuery, sem lítur svolítið 1105 00:53:53,460 --> 00:53:56,880 setningafræðilega perplexing í fyrstu. 1106 00:53:56,880 --> 00:54:00,760 Þú getur gert þetta með hreinu DOM kóða - document.getelement eftir ID. 1107 00:54:00,760 --> 00:54:02,530 En við skulum kíkja á þessa útgáfu. 1108 00:54:02,530 --> 00:54:05,110 ÉG hafa a par af mikilvæg línur fyrst. 1109 00:54:05,110 --> 00:54:09,460 Svo einn, höfum við þessa línu, sem er eins og hvaða þú might hafa séð 1110 00:54:09,460 --> 00:54:13,830 í, ég trúi, form2.html frá bekknum í viku 9. 1111 00:54:13,830 --> 00:54:16,960 Og þetta er bara að segja, framkvæma Eftirfarandi númer þegar 1112 00:54:16,960 --> 00:54:18,430 skjalið er tilbúið. 1113 00:54:18,430 --> 00:54:21,770 Þetta vera mikilvægt einungis vegna HTML síður eru lesnar toppur til 1114 00:54:21,770 --> 00:54:23,280 botn, vinstri til hægri. 1115 00:54:23,280 --> 00:54:27,910 >> Og þess vegna, ef þú reynir að gera eitthvað í númerið upp hér að einhverju DOM 1116 00:54:27,910 --> 00:54:31,560 þáttur, sumir HTML tag, sem er niður hér, þú ert að gera það of fljótt, 1117 00:54:31,560 --> 00:54:34,220 vegna þess að þetta hefur ekki einu sinni verið lesin inn í minni. 1118 00:54:34,220 --> 00:54:37,740 Svo með því að segja þetta document.ready lína, við erum að segja, 1119 00:54:37,740 --> 00:54:39,040 hér er sumir númer, vafrinn. 1120 00:54:39,040 --> 00:54:42,440 En ekki framkvæma þetta fyrr en í heild skjalið er tilbúið, það er DOM 1121 00:54:42,440 --> 00:54:44,320 tré til í minni. 1122 00:54:44,320 --> 00:54:47,110 Þetta er svolítið meira einfalt, ef setningafræðilega A 1123 00:54:47,110 --> 00:54:51,890 svolítið öðruvísi, þar sem ég er að segja, grípa HTML þáttur sem einstakt 1124 00:54:51,890 --> 00:54:53,560 kennimerki er inntak. 1125 00:54:53,560 --> 00:54:56,220 Það er það sem kjötkássa tag táknar, einstaka ID. 1126 00:54:56,220 --> 00:54:58,070 Og þá er ég að hringja. Senda. 1127 00:54:58,070 --> 00:55:01,660 >> Svo. Leggja hér er fall, annars þekktur sem aðferð, sem er 1128 00:55:01,660 --> 00:55:05,850 inni á hlut á vinstri hönd hlið þar sem ég vissi ekki hápunktur. 1129 00:55:05,850 --> 00:55:08,990 Svo ef þú heldur af aðföngum sem andlag í minni - og raunar er það. 1130 00:55:08,990 --> 00:55:10,440 Það er hnút í tré - 1131 00:55:10,440 --> 00:55:16,580 . Leggja leið þegar þetta eyðublað með þetta auðkenni er lögð fram, framkvæma 1132 00:55:16,580 --> 00:55:17,700 Eftirfarandi númer. 1133 00:55:17,700 --> 00:55:20,290 Mér er alveg sama hvað nafnið á virka er ég að framkvæma. 1134 00:55:20,290 --> 00:55:23,760 Svo hér er ég að nota, eins og áður, hvað er kallað lambda virka eða 1135 00:55:23,760 --> 00:55:24,720 nafnlaus virka. 1136 00:55:24,720 --> 00:55:27,640 Það er alls ekki intellectually áhugavert annað en það hefur ekkert nafn, 1137 00:55:27,640 --> 00:55:30,220 sem er fínt ef þú ert aðeins alltaf að fara að kalla það einu sinni. 1138 00:55:30,220 --> 00:55:34,490 Og þarna inni ég höndla í raun skil á forminu. 1139 00:55:34,490 --> 00:55:36,810 Ég lýsi fyrst breytu kallað gildi. 1140 00:55:36,810 --> 00:55:40,610 Og þá er hvaða áhrif þetta hápunktur hluti hérna núna? 1141 00:55:40,610 --> 00:55:44,755 Hvað þýðir að gera á mikil fyrir mig? 1142 00:55:44,755 --> 00:55:48,539 >> Áhorfendur: Það fær gildi sem notandi ekki í HTML neðan. 1143 00:55:48,539 --> 00:55:50,920 Það fær að ID og þá finnur verðmæti þess. 1144 00:55:50,920 --> 00:55:51,590 >> DAVID J. Malan: Einmitt. 1145 00:55:51,590 --> 00:55:54,300 Það grípur hnút, sem einstakt heiti er nafn. 1146 00:55:54,300 --> 00:55:56,900 Það fær gildi þar sem er væntanlega það sem notandinn 1147 00:55:56,900 --> 00:55:58,190 slegið hann eða hún sjálf. 1148 00:55:58,190 --> 00:56:01,020 Og þá geymir það að í breytu sem heitir gildi. 1149 00:56:01,020 --> 00:56:03,720 Sem innskot, þú gætir hafa einnig gert þetta aðeins öðruvísi. 1150 00:56:03,720 --> 00:56:09,250 Algerlega ásættanlegt með því að gera eitthvað lygi var gildi fær 1151 00:56:09,250 --> 00:56:10,500 document.getElementById. 1152 00:56:10,500 --> 00:56:12,860 1153 00:56:12,860 --> 00:56:15,460 Og þetta er hvers vegna það er lítið leiðinlegur að ekki nota jQuery. 1154 00:56:15,460 --> 00:56:16,710 "Nafn". Gildi. 1155 00:56:16,710 --> 00:56:18,330 1156 00:56:18,330 --> 00:56:19,620 Svo algerlega ásættanlegt. 1157 00:56:19,620 --> 00:56:22,770 Mismunandi leiðir til að gera þetta. jQuery bara tilhneigingu til að vera svolítið meira gagnorðar og 1158 00:56:22,770 --> 00:56:25,230 örugglega fleiri vinsæll meðal forritara. 1159 00:56:25,230 --> 00:56:27,590 >> Nú, ég er að gera a hluti af a Sanity stöðva, vegna þess að í því vandamáli 1160 00:56:27,590 --> 00:56:30,820 yfirlýsingu við sögðum skýrt, ef notandi hefur ekki enn slegið hans eða hennar 1161 00:56:30,820 --> 00:56:32,580 nafn, ekki sýna áminningar. 1162 00:56:32,580 --> 00:56:35,390 En þú geta stöðva fyrir það, bara með stöðva fyrir the tómur strengur fyrir a 1163 00:56:35,390 --> 00:56:37,850 vitna-unquote ef það er ekkert í raun þar. 1164 00:56:37,850 --> 00:56:40,880 En ef það er ekki jafn tilvísun-unquote, Ég vil kalla áminningar. 1165 00:56:40,880 --> 00:56:45,610 Og áhugaverður hluti hér er að við erum að nota plús rekstraraðila, sem 1166 00:56:45,610 --> 00:56:48,130 gerir hvað í JavaScript? 1167 00:56:48,130 --> 00:56:48,740 Concatenate. 1168 00:56:48,740 --> 00:56:50,690 Svo er það eins og phps punktur símafyrirtækinu. 1169 00:56:50,690 --> 00:56:52,820 Sama hugmynd, örlítið mismunandi setningafræði. 1170 00:56:52,820 --> 00:56:55,280 Og ég ætla bara að búa til band sem þú sást á skjánum skot - 1171 00:56:55,280 --> 00:56:57,750 Halló, svo og svo. 1172 00:56:57,750 --> 00:56:59,200 >> Og þá er síðasta smáatriðum þetta. 1173 00:56:59,200 --> 00:57:04,970 Hví ég return false inni þessarar nafnlaus virka? 1174 00:57:04,970 --> 00:57:07,420 >> Áhorfendur: Það er engin gildi. 1175 00:57:07,420 --> 00:57:09,380 Þú setur það í formi. 1176 00:57:09,380 --> 00:57:12,320 1177 00:57:12,320 --> 00:57:16,730 Það segir bara, ef gildið er ekki jafn autt, þá gera það. 1178 00:57:16,730 --> 00:57:20,040 1179 00:57:20,040 --> 00:57:20,940 Það var autt í þeirri uppgjöf. 1180 00:57:20,940 --> 00:57:21,170 >> DAVID J. Malan: OK. 1181 00:57:21,170 --> 00:57:21,640 Varlega þó. 1182 00:57:21,640 --> 00:57:22,830 Það er enginn annar hér. 1183 00:57:22,830 --> 00:57:25,510 Og það aftur ósatt er utan af ef aðstæður. 1184 00:57:25,510 --> 00:57:29,470 Þannig að þetta hápunktur línu, return false, keyrir sama hvað þegar 1185 00:57:29,470 --> 00:57:32,310 mynd er lögð. 1186 00:57:32,310 --> 00:57:36,810 Hvað þýðir aftur rangar inni í þessu atburður dýraþjálfari, eins og það er kallað, 1187 00:57:36,810 --> 00:57:38,450 Atburðurinn sem um ræðir vera uppgjöf? 1188 00:57:38,450 --> 00:57:42,350 1189 00:57:42,350 --> 00:57:44,470 >> Áhorfendur: Vegna þess að það gerist aðeins einu sinni. 1190 00:57:44,470 --> 00:57:45,320 >> DAVID J. Malan: gerist aðeins einu sinni. 1191 00:57:45,320 --> 00:57:46,821 Ekki alveg. 1192 00:57:46,821 --> 00:57:47,292 Já? 1193 00:57:47,292 --> 00:57:50,589 >> Áhorfendur: Það kemur í veg formið frá leggja fyrir sjálfgefna hegðun, 1194 00:57:50,589 --> 00:57:52,480 sem myndi gera síðu Reload. 1195 00:57:52,480 --> 00:57:53,110 >> DAVID J. Malan: Einmitt. 1196 00:57:53,110 --> 00:57:56,490 Þannig að ég ætla villu hugtakið leggja hér, vegna þess að ég er að segja, formið er 1197 00:57:56,490 --> 00:57:57,670 var lögð. 1198 00:57:57,670 --> 00:58:02,240 En eins og þú stinga upp á, það er í raun ekki verið lögð í the sannur HTTP hátt. 1199 00:58:02,240 --> 00:58:06,870 Þegar þú smellir á Senda, vegna okkar onSubmit dýraþjálfari, erum við hlerun 1200 00:58:06,870 --> 00:58:09,040 að útfylling svo að segja. 1201 00:58:09,040 --> 00:58:11,290 Við erum þá að gera hlutur okkar með JavaScript kóða. 1202 00:58:11,290 --> 00:58:14,070 En ég er vísvitandi aftur rangar, því það sem ég vil ekki að gerast á 1203 00:58:14,070 --> 00:58:18,430 sekúndubroti síðar er fyrir allt formi sér að vera lögð á netið 1204 00:58:18,430 --> 00:58:22,800 framreiðslumaður með helstu gildi pör með því að breyta slóðin að vera eitthvað eins og 1205 00:58:22,800 --> 00:58:26,180 Q = ketti eða hvað sem við gerðum, til dæmis, í tímum. 1206 00:58:26,180 --> 00:58:29,640 Ég vil ekki að gerast, vegna þess að það er engin miðlara hlusta fyrir þessu 1207 00:58:29,640 --> 00:58:30,690 útfylling. 1208 00:58:30,690 --> 00:58:32,320 Það er eingöngu gert í JavaScript kóða. 1209 00:58:32,320 --> 00:58:35,760 Og þess vegna er ég ekki einu sinni hafa aðgerð eigindi á mynd mína, því ég 1210 00:58:35,760 --> 00:58:38,870 ekki ætla að þetta geti alltaf að fara til the framreiðslumaður. 1211 00:58:38,870 --> 00:58:40,780 >> Svo það er verið lögð. 1212 00:58:40,780 --> 00:58:44,340 En við erum að stöðvun þessi mynd uppgjöf og koma í veg fyrir sjálfgefið 1213 00:58:44,340 --> 00:58:47,477 hegðun, sem er að í raun og veru fara alla leið til the framreiðslumaður. 1214 00:58:47,477 --> 00:58:48,730 >> Áhorfendur: Svo halda það client-megin. 1215 00:58:48,730 --> 00:58:49,780 >> DAVID J. Malan: Gæsla það client-megin. 1216 00:58:49,780 --> 00:58:51,030 Nákvæmlega rétt. 1217 00:58:51,030 --> 00:58:53,240 1218 00:58:53,240 --> 00:58:55,757 Næst upp var minn ó MySQL. 1219 00:58:55,757 --> 00:59:00,000 1220 00:59:00,000 --> 00:59:00,430 >> ROB BOWDEN: OK. 1221 00:59:00,430 --> 00:59:04,990 Þannig að þetta fyrsta spurningin var almennt gróft fyrir fólk. 1222 00:59:04,990 --> 00:59:07,270 Þótt síðar sjálfur fór betur. 1223 00:59:07,270 --> 00:59:12,260 Þannig að þú þurftir að velja rétt gögn gerðir fyrir báðum þessum dálkum. 1224 00:59:12,260 --> 00:59:17,750 Og báðir þessir hafa sumir atriði um þá sem 1225 00:59:17,750 --> 00:59:20,620 gera val erfitt. 1226 00:59:20,620 --> 00:59:24,430 Svo Int var ekki gild slá fyrir fjölda. 1227 00:59:24,430 --> 00:59:29,410 Ástæðan vera 12 stafa reikningur númer, int er ekki nógu stór til að 1228 00:59:29,410 --> 00:59:31,070 geyma samtals tölustafir. 1229 00:59:31,070 --> 00:59:36,570 Svo gilt val hefði verið stór int ef þú skyldir vita það. 1230 00:59:36,570 --> 00:59:42,090 Annar kostur gæti verið char sviði lengd 12. 1231 00:59:42,090 --> 00:59:44,560 Svo annað hvort þeirra hefði unnið. 1232 00:59:44,560 --> 00:59:46,100 Int væri ekki. 1233 00:59:46,100 --> 00:59:50,170 >> Nú, jafnvægi, hugsa til baka til pset7. 1234 00:59:50,170 --> 00:59:59,540 Þannig að við sem nota sérstaklega aukastaf til geyma verðmæti hlutabréfa eða - 1235 00:59:59,540 --> 01:00:00,550 >> DAVID J. Malan: Cash. 1236 01:00:00,550 --> 01:00:01,060 >> ROB BOWDEN: Cash. 1237 01:00:01,060 --> 01:00:05,710 Við notuðum við aukastaf til að geyma magn af reiðufé sem notandinn hefur nú. 1238 01:00:05,710 --> 01:00:10,950 Svo ástæðan að við að gera sem er því, muna, fljóta. 1239 01:00:10,950 --> 01:00:12,480 Það er fljótandi lið í nákvæmni. 1240 01:00:12,480 --> 01:00:18,200 Það getur ekki nákvæmlega geyma reiðufé gildi eins og við viljum hér. 1241 01:00:18,200 --> 01:00:23,630 Svo er hægt að nákvæmlega geyma aukastaf eitthvað til að segja, með tveimur aukastöfum. 1242 01:00:23,630 --> 01:00:27,630 Þessi 'hvers vegna jafnvægi, viljum við það að vera aukastaf og ekki fljóta. 1243 01:00:27,630 --> 01:00:30,230 >> DAVID J. Malan: Og einnig, líka, þó það gæti hafa verið snjall í öðrum 1244 01:00:30,230 --> 01:00:32,760 aðstæður til að hugsa, kannski þetta er tækifæri fyrir int. 1245 01:00:32,760 --> 01:00:34,420 Ég ætla bara að halda utan um hlutir í smáaurarnir. 1246 01:00:34,420 --> 01:00:38,670 Þar sem við sýndi skýrt sjálfgefið gildi að vera 100,00, að 1247 01:00:38,670 --> 01:00:40,380 þýðir það gæti bara verið int. 1248 01:00:40,380 --> 01:00:45,310 Og annar lipurðar of með fjölda var að það var ekki ætlað 1249 01:00:45,310 --> 01:00:46,180 að vera bragð spurning. 1250 01:00:46,180 --> 01:00:49,860 En muna að int í MySQL, eins og í C, að minnsta kosti í því 1251 01:00:49,860 --> 01:00:51,440 tæki, er 32-bita. 1252 01:00:51,440 --> 01:00:53,960 Og jafnvel þótt við býstu ekki við vita nákvæmlega hversu margir tölustafir sem 1253 01:00:53,960 --> 01:00:56,910 þýðir, man að mesti fjöldi þú getur táknað hugsanlega 1254 01:00:56,910 --> 01:01:00,710 með 32-bita tala er u.þ.b. hvað? 1255 01:01:00,710 --> 01:01:02,760 >> Hvað númer eigum við að segja alltaf? 1256 01:01:02,760 --> 01:01:04,530 2 til 32, sem er það u.þ.b.? 1257 01:01:04,530 --> 01:01:07,492 1258 01:01:07,492 --> 01:01:08,780 Þú þarft ekki að vita nákvæmlega. 1259 01:01:08,780 --> 01:01:10,580 En u.þ.b. er gagnlegt í lífinu. 1260 01:01:10,580 --> 01:01:12,200 Það er um það bil 4 milljörðum. 1261 01:01:12,200 --> 01:01:14,430 Þannig að við höfum sagt að nokkrum sinnum. 1262 01:01:14,430 --> 01:01:16,360 Ég veit að ég hef sagt að nokkrum sinnum. 1263 01:01:16,360 --> 01:01:17,670 Og það er um það bil 4 milljörðum. 1264 01:01:17,670 --> 01:01:19,710 Og það er góð regla þumalfingur að vita. 1265 01:01:19,710 --> 01:01:21,880 Ef þú ert með 8 bitar, 256 er galdur númer. 1266 01:01:21,880 --> 01:01:24,160 Ef þú ert með 32 bita, 4 milljarðar gefa eða taka. 1267 01:01:24,160 --> 01:01:27,140 Þannig að ef þú skrifar bara niður 4 milljarða, þú munt sjá að það er færri tölustafir en 1268 01:01:27,140 --> 01:01:30,970 12, sem þýðir að það er greinilega ekki nóg tjáningarkrafturinn að handtaka 1269 01:01:30,970 --> 01:01:34,220 12-stafa númer reiknings. 1270 01:01:34,220 --> 01:01:34,940 >> ROB BOWDEN: OK. 1271 01:01:34,940 --> 01:01:38,520 Svo hinar fór betur. 1272 01:01:38,520 --> 01:01:40,900 Svo ætla að bankinn leggur $ 20 mánaðarlega 1273 01:01:40,900 --> 01:01:42,400 viðhald gjald á alla reikninga. 1274 01:01:42,400 --> 01:01:45,506 Með hvaða SQL fyrirspurn gat bankinn draga $ 20 frá hverjum telja, jafnvel þótt 1275 01:01:45,506 --> 01:01:47,520 það afleiðing í sumum neikvæðum? 1276 01:01:47,520 --> 01:01:50,380 Svo í grundvallaratriðum, það eru fjórir Helstu tegundir fyrirspurna - 1277 01:01:50,380 --> 01:01:52,840 setja, velja, uppfæra og eyða. 1278 01:01:52,840 --> 01:01:56,080 Svo hvað við höldum að við erum fara að nota hér? 1279 01:01:56,080 --> 01:01:57,000 Uppfæra. 1280 01:01:57,000 --> 01:01:58,260 >> Þannig að við skulum taka a útlit. 1281 01:01:58,260 --> 01:02:04,290 1282 01:02:04,290 --> 01:02:05,870 Svo hér erum við að uppfæra. 1283 01:02:05,870 --> 01:02:09,900 Hvaða borð erum við að uppfæra reikninga? 1284 01:02:09,900 --> 01:02:11,670 Svo uppfæra reikninga. 1285 01:02:11,670 --> 01:02:15,390 Og þá segir setningafræði, hvað í reikningum erum við að uppfæra? 1286 01:02:15,390 --> 01:02:19,520 Jæja, erum við að setja jafnvægi sem svarar til þess Núvirði jafnvægi mínus 20. 1287 01:02:19,520 --> 01:02:22,860 Þannig að þetta mun uppfæra allar raðir reikninga, draga 1288 01:02:22,860 --> 01:02:26,250 $ 20 úr jafnvægi. 1289 01:02:26,250 --> 01:02:29,260 >> DAVID J. Malan: Algeng mistök hér, jafnvel þótt við fyrirgaf stundum það, 1290 01:02:29,260 --> 01:02:32,990 var að í raun hafa PHP kóðann hér hringja í fyrirspurn virka eða setja 1291 01:02:32,990 --> 01:02:35,460 tilvitnanir í kringum allt sem þarf ekki að vera þar. 1292 01:02:35,460 --> 01:02:39,780 >> ROB BOWDEN: Mundu að MySQL er sérstakt tungumál frá PHP. 1293 01:02:39,780 --> 01:02:42,410 Við verður að vera að skrifa MySQL í PHP. 1294 01:02:42,410 --> 01:02:46,180 Og PHP er síðan að senda það yfir á MySQL þjóninum. 1295 01:02:46,180 --> 01:02:51,120 En þú þarft ekki PHP til að samskipti við MySQL þjóninum. 1296 01:02:51,120 --> 01:02:51,730 >> DAVID J. Malan: Einmitt. 1297 01:02:51,730 --> 01:02:54,240 Svo enginn breytur með dollara merki ætti að vera í þessu sambandi. 1298 01:02:54,240 --> 01:02:59,550 Það getur bara gert allt í stærðfræði innan gagnagrunninum sig. 1299 01:02:59,550 --> 01:03:00,080 >> ROB BOWDEN: OK. 1300 01:03:00,080 --> 01:03:01,300 Þannig að næsta einn. 1301 01:03:01,300 --> 01:03:02,731 Er þetta næsta einn? 1302 01:03:02,731 --> 01:03:03,210 Já. 1303 01:03:03,210 --> 01:03:06,570 Svo með hvaða SQL fyrirspurn gat bankinn sækja reikningsnúmer í sínum 1304 01:03:06,570 --> 01:03:09,300 ríkustu viðskiptavinum, sem eru með innstæður meiri en 1000? 1305 01:03:09,300 --> 01:03:13,280 Svo hver af fjórum helstu tegundir erum við að fara að vilja hér? 1306 01:03:13,280 --> 01:03:14,430 Velja. 1307 01:03:14,430 --> 01:03:16,650 Svo viljum við að velja. 1308 01:03:16,650 --> 01:03:17,610 Hvað viljum við að velja? 1309 01:03:17,610 --> 01:03:19,380 Hvað dálki viljum við velja? 1310 01:03:19,380 --> 01:03:20,970 Við munum sérstaklega viljum til að velja númer. 1311 01:03:20,970 --> 01:03:23,910 En ef þú segir stjörnu, við einnig viðurkennt að. 1312 01:03:23,910 --> 01:03:25,820 >> Svo velja númer úr hvaða töflu? 1313 01:03:25,820 --> 01:03:26,640 Reikninga. 1314 01:03:26,640 --> 01:03:28,370 Og þá ástand sem við viljum? 1315 01:03:28,370 --> 01:03:30,140 Hvar jafnvægi meiri en 1000. 1316 01:03:30,140 --> 01:03:31,720 Við samþykkt einnig meiri en eða jafnt. 1317 01:03:31,720 --> 01:03:35,230 1318 01:03:35,230 --> 01:03:36,190 Síðasta. 1319 01:03:36,190 --> 01:03:42,940 Með hvaða SQL fyrirspurn gat bankinn loka, þ.e.a.s. eyða öllum reikning sem 1320 01:03:42,940 --> 01:03:44,480 hefur jafnvægi af $ 0? 1321 01:03:44,480 --> 01:03:47,620 Svo hver af fjórum erum við fara til að vilja nota? 1322 01:03:47,620 --> 01:03:48,320 Eyða. 1323 01:03:48,320 --> 01:03:50,180 Svo setningafræði fyrir það? 1324 01:03:50,180 --> 01:03:51,890 Eyða úr hvaða töflu? 1325 01:03:51,890 --> 01:03:53,550 Reikninga. 1326 01:03:53,550 --> 01:03:55,790 Og þá ástand sem við viljum eyða - 1327 01:03:55,790 --> 01:03:57,280 þar jafnvægi er jafn núlli. 1328 01:03:57,280 --> 01:04:03,050 Svo eyða öllum raðir af reikningum þar sem jafnvægi er núll. 1329 01:04:03,050 --> 01:04:04,300 Spurningar um eitthvað af þessu? 1330 01:04:04,300 --> 01:04:08,840 1331 01:04:08,840 --> 01:04:10,260 Viltu að biðröð? 1332 01:04:10,260 --> 01:04:11,200 >> DAVID J. Malan: Biðröð fylgja. 1333 01:04:11,200 --> 01:04:17,110 Svo í þessu einn, við gáfum þér nokkuð þekki uppbyggingu sem við kannað 1334 01:04:17,110 --> 01:04:20,450 hluti í bekknum við hlið structs, sem var gögn 1335 01:04:20,450 --> 01:04:21,910 uppbyggingu sem í anda. 1336 01:04:21,910 --> 01:04:24,670 Munurinn þó með biðröð er sem við þurftum að einhvern veginn að muna hver 1337 01:04:24,670 --> 01:04:27,900 var á the andlit af the biðröð, í stórum hluti svo að við gætum gert meira 1338 01:04:27,900 --> 01:04:30,530 skilvirka notkun minni, að minnsta kosti ef við værum að nota array. 1339 01:04:30,530 --> 01:04:35,460 >> Vegna muna, ef við höfum fylki, ef, til dæmis, þetta er að framan 1340 01:04:35,460 --> 01:04:38,470 biðröð, ef ég kem inn í biðröð hér, og þá fær einhver í línu 1341 01:04:38,470 --> 01:04:42,710 aftan mig, á bak við mig, á bak við mig, og einn maður stíga út af lína, þú 1342 01:04:42,710 --> 01:04:45,930 gat, eins og við sáum nokkrar af mönnum okkar sjálfboðaliða í bekknum, hafa allir 1343 01:04:45,930 --> 01:04:47,100 vakt með þessum hætti. 1344 01:04:47,100 --> 01:04:50,880 En almennt, hafa allir gert eitthvað er ekki best að nota tíma 1345 01:04:50,880 --> 01:04:54,600 í forriti, því það þýðir þitt reiknirit er í gangi í hvaða 1346 01:04:54,600 --> 01:04:56,520 asymptotic hlaupandi tíma? 1347 01:04:56,520 --> 01:04:57,420 Það er línulegt. 1348 01:04:57,420 --> 01:04:59,600 >> Og mér finnst eins og þessi er góður af heimskur. 1349 01:04:59,600 --> 01:05:02,890 Ef næsti maður á línu er næstur Sá sem er ætlast til að fara inn í 1350 01:05:02,890 --> 01:05:04,660 geyma, þeir gera ekki hafa allir til að færa saman. 1351 01:05:04,660 --> 01:05:08,200 Bara láta þessi manneskja er að reyta burt þegar tíminn kemur, til dæmis. 1352 01:05:08,200 --> 01:05:09,870 Svo við getum sparað smá tíma þar. 1353 01:05:09,870 --> 01:05:14,840 Og svo til að gera það þó, sem þýðir að yfirmaður biðröð eða 1354 01:05:14,840 --> 01:05:18,060 framan biðröð er að fara að smám færa dýpra og dýpra 1355 01:05:18,060 --> 01:05:23,340 í fylkinu og að lokum gæti reyndar settir ef við erum að nota er 1356 01:05:23,340 --> 01:05:25,790 array til að geyma fólk í þessari biðröð. 1357 01:05:25,790 --> 01:05:28,390 Svo þú getur nánast hugsa um array sem hringlaga gögn 1358 01:05:28,390 --> 01:05:29,880 uppbyggingu í þeim skilningi. 1359 01:05:29,880 --> 01:05:33,970 >> Svo þú ert einhvern veginn að halda utan um stærð hennar eða raunverulega the endir af það 1360 01:05:33,970 --> 01:05:36,250 og þá upphaf þess er þar. 1361 01:05:36,250 --> 01:05:39,490 Þannig að við leggjum til að þú lýsa einn slíkur biðröð, starf 1362 01:05:39,490 --> 01:05:41,330 það q, bara einn stafur. 1363 01:05:41,330 --> 01:05:44,570 Þá erum við að leggja til að framan vera frumstilla að núlli og að stærð 1364 01:05:44,570 --> 01:05:45,470 að frumstilla á núll. 1365 01:05:45,470 --> 01:05:47,770 >> Svo núna, það er ekkert inni af því biðröð. 1366 01:05:47,770 --> 01:05:50,910 Og við biðjum þig um að ljúka framkvæmd Velja slembið skinn neðan á 1367 01:05:50,910 --> 01:05:55,250 svo hátt að fallið bætir n til lok q og þá skilar satt. 1368 01:05:55,250 --> 01:05:58,690 En ef q er fullt eða neikvæð, sem fall ætti staðinn return false. 1369 01:05:58,690 --> 01:06:01,060 Og gáfum þér nokkrar forsendur. 1370 01:06:01,060 --> 01:06:04,320 En þeir eru ekki í raun virkni máli, bara að bool til, 1371 01:06:04,320 --> 01:06:06,690 vegna þess, tæknilega, bool ekki hendi í C nema þú látir 1372 01:06:06,690 --> 01:06:07,310 viss hausaskrár. 1373 01:06:07,310 --> 01:06:09,350 Svo sem var bara viss um að það voru ekki er þetta bragð 1374 01:06:09,350 --> 01:06:10,940 spurning tegund af hlutur. 1375 01:06:10,940 --> 01:06:16,280 >> Svo Velja slembið skinn, lagt við í sýninu Lausnir til þess að framkvæma á eftirfarandi hátt. 1376 01:06:16,280 --> 01:06:20,420 Einn, athuga við fyrst vellíðan, lágmark-hangandi ávextir. 1377 01:06:20,420 --> 01:06:23,820 Ef biðröð er fullt eða það sem þú ert að reyna að setja inn er minna 1378 01:06:23,820 --> 01:06:26,380 en núll, sem við sögðum í skilgreining á vandamálinu ætti 1379 01:06:26,380 --> 01:06:30,320 ekki leyft, vegna þess að við viljum bara ekki neikvæð gildi, þá ættir þú að 1380 01:06:30,320 --> 01:06:31,640 bara return false strax. 1381 01:06:31,640 --> 01:06:33,820 Svo sumir tiltölulega auðvelt villuprófun. 1382 01:06:33,820 --> 01:06:38,720 Ef þó þú vilt bæta við að raunverulegt númer, sem þú þurfti að gera smá 1383 01:06:38,720 --> 01:06:39,440 hugsa hér. 1384 01:06:39,440 --> 01:06:41,330 Og þetta er þar sem það er smá pirrandi andlega, vegna þess að þú þarft að 1385 01:06:41,330 --> 01:06:43,000 reikna út hvernig á að höndla wraparound. 1386 01:06:43,000 --> 01:06:46,870 >> En sýkill af þeirri hugmynd hér er að á áhugi fyrir okkur er að wraparound 1387 01:06:46,870 --> 01:06:51,480 oft felur mát stærðfræði og unga fólkið Rekstraraðili, prósent hlið, 1388 01:06:51,480 --> 01:06:55,140 þar sem þú getur farið úr stærri gildi aftur í núll og síðan einn og tveir og 1389 01:06:55,140 --> 01:06:58,650 þrjú og svo aftur í kringum núll, einn og tveir og þrír og svo framvegis 1390 01:06:58,650 --> 01:06:59,380 aftur og aftur. 1391 01:06:59,380 --> 01:07:02,880 Svo er leiðin sem við leggja til að gera þetta að við viljum að kemba inn í 1392 01:07:02,880 --> 01:07:05,850 array kallað tölur þar heiltölur okkar liggja. 1393 01:07:05,850 --> 01:07:10,740 En til að komast þangað, viljum við fyrst að gera Hvað sem stærð biðröð er en 1394 01:07:10,740 --> 01:07:14,080 þá bæta við að hvað sem framan á listanum er. 1395 01:07:14,080 --> 01:07:17,880 Og áhrif sem er að setja okkur á rétta stöðu í biðröð og 1396 01:07:17,880 --> 01:07:20,970 ekki gera ráð fyrir að fyrsti einstaklingurinn í línu er í upphafi, sem hann eða 1397 01:07:20,970 --> 01:07:24,130 hún algerlega gæti verið ef við voru einnig færast alla. 1398 01:07:24,130 --> 01:07:26,710 En við erum bara að búa vinnu fyrir okkur ef við tókum 1399 01:07:26,710 --> 01:07:27,800 sem einkum slóð. 1400 01:07:27,800 --> 01:07:29,330 >> Svo við getum haldið það tiltölulega einfalt. 1401 01:07:29,330 --> 01:07:32,180 Við þurfum að muna að við bara bætt við int við biðröð. 1402 01:07:32,180 --> 01:07:35,850 Og þá erum við aftur bara satt. 1403 01:07:35,850 --> 01:07:38,560 Á sama tíma í dequeue, spurði við þú að gera eftirfarandi. 1404 01:07:38,560 --> 01:07:42,260 Framkvæma það á þann hátt að það dequeues, sem er fjarlægir og skilar, 1405 01:07:42,260 --> 01:07:44,190 int framan á biðröð. 1406 01:07:44,190 --> 01:07:46,410 Til að fjarlægja int, nægir það að gleyma því. 1407 01:07:46,410 --> 01:07:47,650 Þú þarft ekki að hunsa hluti þess. 1408 01:07:47,650 --> 01:07:48,820 Svo það er enn raun þar. 1409 01:07:48,820 --> 01:07:51,930 Rétt eins og gögn á disknum, við erum bara að hunsa þá staðreynd 1410 01:07:51,930 --> 01:07:52,970 að það er nú það. 1411 01:07:52,970 --> 01:07:55,520 Og ef q er tóm, við ættum stað aftur neikvæð 1. 1412 01:07:55,520 --> 01:07:56,750 Svo finnst þetta handahófskennt. 1413 01:07:56,750 --> 01:08:01,640 Hvers vegna skila Neikvæð 1 í stað þess að rangar? 1414 01:08:01,640 --> 01:08:02,620 Já. 1415 01:08:02,620 --> 01:08:05,070 >> Áhorfendur: Q er sögufrægur jákvæð gildi. 1416 01:08:05,070 --> 01:08:10,950 Þar sem þú geyma aðeins jákvæð gildi í Q, neikvæð er villa. 1417 01:08:10,950 --> 01:08:11,510 >> DAVID J. Malan: OK, satt. 1418 01:08:11,510 --> 01:08:14,850 Svo vegna þess að við erum aðeins að geyma jákvæð gildi eða núll, þá er það í lagi að 1419 01:08:14,850 --> 01:08:18,050 aftur neikvætt gildi sem Sentinel gildi, sérstakt tákn. 1420 01:08:18,050 --> 01:08:21,630 En þú ert að endurskrifa sögu þar, því ástæðan að við erum aðeins 1421 01:08:21,630 --> 01:08:25,890 aftur ekki neikvæð gildi er vegna þess að við viljum að 1422 01:08:25,890 --> 01:08:27,670 hafa Sentinel gildi. 1423 01:08:27,670 --> 01:08:32,617 Svo nánar tiltekið, hvers vegna ekki bara return false þegar um villur? 1424 01:08:32,617 --> 01:08:33,099 Já. 1425 01:08:33,099 --> 01:08:35,510 >> Áhorfendur: Þú hefur ekki að skila heiltölu. 1426 01:08:35,510 --> 01:08:36,630 >> DAVID J. Malan: Einmitt. 1427 01:08:36,630 --> 01:08:38,569 Og þetta er þar sem C fær laglegur şess. 1428 01:08:38,569 --> 01:08:40,590 Ef þú ert að segja að þú ert að fara að skila int, hefur þú fengið 1429 01:08:40,590 --> 01:08:41,279 að skila int. 1430 01:08:41,279 --> 01:08:43,689 Þú getur ekki fá ímynda og byrja aftur A bool eða fljóta eða 1431 01:08:43,689 --> 01:08:45,040 band eða eitthvað svoleiðis. 1432 01:08:45,040 --> 01:08:49,370 Nú, á meðan, JavaScript og PHP og sum önnur tungumál getur í raun, 1433 01:08:49,370 --> 01:08:51,310 hefur þú aftur öðruvísi gerðir af gildum. 1434 01:08:51,310 --> 01:08:54,819 Og það getur raunverulega vera gagnlegur, þar þú gætir aftur jákvæð ints, núll, 1435 01:08:54,819 --> 01:08:59,439 neikvæð ints eða rangar eða null jafnvel að signify villa. 1436 01:08:59,439 --> 01:09:01,890 En við höfum ekki fjölhæfni í C. 1437 01:09:01,890 --> 01:09:04,569 >> Svo með dequeue, hvað við leggja til að gera er - 1438 01:09:04,569 --> 01:09:07,350 1439 01:09:07,350 --> 01:09:09,830 >> ROB BOWDEN: Hægt return false. 1440 01:09:09,830 --> 01:09:13,189 Það er bara falskt er kjötkássa skilgreina ósatt á núll. 1441 01:09:13,189 --> 01:09:16,000 Þannig að ef þú return false, þú ert aftur núll. 1442 01:09:16,000 --> 01:09:25,470 Og núll er gild hlutur í biðröð okkar, en neikvæð 1 er ekki hvort 1443 01:09:25,470 --> 01:09:27,000 falskur gerðist að vera neikvæð 1. 1444 01:09:27,000 --> 01:09:29,972 En þú ættir ekki einu sinni þarf að vita það. 1445 01:09:29,972 --> 01:09:32,399 >> DAVID J. Malan: Það er hvers vegna ég gerði ekki segja það. 1446 01:09:32,399 --> 01:09:36,450 >> ROB BOWDEN: En það var ekki satt að þú getur ekki return false. 1447 01:09:36,450 --> 01:09:37,700 >> DAVID J. Malan: Jú. 1448 01:09:37,700 --> 01:09:40,920 1449 01:09:40,920 --> 01:09:44,240 Svo dequeue, taka við tökum ógilt sem röksemdafærslu sína. 1450 01:09:44,240 --> 01:09:45,479 Og það er vegna þess að við erum ekki brottför neitt inn 1451 01:09:45,479 --> 01:09:48,359 Við viljum bara að fjarlægja þáttur á the andlit af the biðröð. 1452 01:09:48,359 --> 01:09:49,819 Svo hvernig gætum við farið að gera þetta? 1453 01:09:49,819 --> 01:09:51,290 Jæja, fyrst skulum við gera þetta fljótur geðheilbrigði stöðva. 1454 01:09:51,290 --> 01:09:53,350 Ef biðröð stærð er 0, þá er engin vinna til að gera. 1455 01:09:53,350 --> 01:09:54,210 Aftur neikvæð 1. 1456 01:09:54,210 --> 01:09:54,800 Lokið. 1457 01:09:54,800 --> 01:09:56,340 Svo er það nokkrar línur af áætlun minni. 1458 01:09:56,340 --> 01:09:58,180 Svo aðeins fjórum línum enn. 1459 01:09:58,180 --> 01:10:01,310 >> Svo hér er ég að ákveða að lækka stærð. 1460 01:10:01,310 --> 01:10:04,620 Og decrementing stærð raun þýðir að ég er að gleyma 1461 01:10:04,620 --> 01:10:06,010 eitthvað er þar. 1462 01:10:06,010 --> 01:10:09,910 En ég verð líka að uppfæra þar The andlit af the tölur eru. 1463 01:10:09,910 --> 01:10:11,620 Svo til að gera það, ég þarf að gera tvennt. 1464 01:10:11,620 --> 01:10:16,390 Ég þarf fyrst að muna hvað númerið er á the andlit af the biðröð, 1465 01:10:16,390 --> 01:10:17,860 vegna þess að ég þarf að skila þeim neitt. 1466 01:10:17,860 --> 01:10:20,910 Svo ég vil ekki að óvart gleyma um það og þá skrifa það. 1467 01:10:20,910 --> 01:10:22,840 Ég ætla bara að fara að muna í int. 1468 01:10:22,840 --> 01:10:27,310 >> Og nú vil ég að uppfæra q.front að q.front 1. 1469 01:10:27,310 --> 01:10:30,070 Þannig að ef þetta væri fyrsta manneskjan í lína, nú, ég vil gera plús 1 til 1470 01:10:30,070 --> 01:10:31,930 benda á næsta mann í línu. 1471 01:10:31,930 --> 01:10:33,420 En ég verð að fara með það wraparound. 1472 01:10:33,420 --> 01:10:37,270 Og ef rúmtak er alþjóðlegt fasti, það er að fara að leyfa mér að ganga úr skugga um 1473 01:10:37,270 --> 01:10:41,140 eins og ég benda á mjög síðasta manneskja í lína, modulo aðgerð mun koma 1474 01:10:41,140 --> 01:10:43,840 mig aftur í núll í framan biðröð. 1475 01:10:43,840 --> 01:10:46,050 Og sem annast wraparound hér. 1476 01:10:46,050 --> 01:10:48,950 Og þá er ég að halda áfram að koma aftur n. 1477 01:10:48,950 --> 01:10:51,530 >> Nú, strangt, ég gerði ekki að lýsa n. 1478 01:10:51,530 --> 01:10:53,880 Ég þurfti ekki að grípa það og geyma það tímabundið, vegna þess að gildi er 1479 01:10:53,880 --> 01:10:54,740 enn þar. 1480 01:10:54,740 --> 01:10:57,490 Svo ég gæti bara gert rétt tölur að skila fyrrum yfirmaður 1481 01:10:57,490 --> 01:10:58,450 í biðröð. 1482 01:10:58,450 --> 01:11:01,850 En ég fann bara að þetta væri skýrari til raunverulega grípa int, setja það 1483 01:11:01,850 --> 01:11:04,320 í N, og síðan aftur að fyrir sakir skýrleika, en 1484 01:11:04,320 --> 01:11:05,735 ekki bráðnauðsynlegar. 1485 01:11:05,735 --> 01:11:09,313 1486 01:11:09,313 --> 01:11:12,130 Psst. 1487 01:11:12,130 --> 01:11:13,410 Þeir eru allir pronounceable í höfðinu á mér. 1488 01:11:13,410 --> 01:11:15,940 1489 01:11:15,940 --> 01:11:19,110 >> ROB BOWDEN: Svo fyrsta spurningin er tvöfaldur tré vandamál. 1490 01:11:19,110 --> 01:11:22,140 Svo fyrsta spurningin er, við erum Miðað við þessar tölur. 1491 01:11:22,140 --> 01:11:27,160 Og við viljum einhvern veginn setja þá inn þessir hnútar með þeim hætti að það er 1492 01:11:27,160 --> 01:11:30,110 Gildir Tvíundarleit tré. 1493 01:11:30,110 --> 01:11:36,260 Svo eitt að muna um tvíleitartré er að það er ekki 1494 01:11:36,260 --> 01:11:39,800 bara að hlutur til vinstri er minna og hlutur til 1495 01:11:39,800 --> 01:11:41,120 rétt er meiri. 1496 01:11:41,120 --> 01:11:44,580 Það þarf að vera að allt tré til vinstri er minna, og allt tréð 1497 01:11:44,580 --> 01:11:45,740 til hægri er meiri. 1498 01:11:45,740 --> 01:11:55,260 >> Þannig að ef ég setti 34 hér að ofan, og þá Ég setti 20 hér, svo það er í gildi svo 1499 01:11:55,260 --> 01:11:56,970 langt, því 34. upp hér. 1500 01:11:56,970 --> 01:11:57,920 20 er að fara til vinstri. 1501 01:11:57,920 --> 01:11:58,950 Svo er það minna. 1502 01:11:58,950 --> 01:12:03,640 En ég get ekki þá sett 59 hér, því jafnvel þó 59 er á hægri af 20, 1503 01:12:03,640 --> 01:12:06,140 það er samt til vinstri á 34.. 1504 01:12:06,140 --> 01:12:10,760 Svo með því að þvingun í huga, að Auðveldasta leiðin líklega að leysa þetta 1505 01:12:10,760 --> 01:12:14,330 Vandamálið er bara að raða þessi númer - 1506 01:12:14,330 --> 01:12:18,720 svo 20, 34, 36, 52, 59, 106. 1507 01:12:18,720 --> 01:12:21,640 Og þá setja þær frá vinstri til hægri. 1508 01:12:21,640 --> 01:12:23,390 >> Svo 20 fer hér. 1509 01:12:23,390 --> 01:12:24,630 34 fer hér. 1510 01:12:24,630 --> 01:12:25,830 36 fer hér. 1511 01:12:25,830 --> 01:12:29,360 52, 59, 106. 1512 01:12:29,360 --> 01:12:34,730 Og þú líka gæti hafa mynstrağur út með sumir tengja í og ​​átta sig, 1513 01:12:34,730 --> 01:12:38,830 ó, bíddu, ég hef ekki nóg tölur að fylla þetta í hérna. 1514 01:12:38,830 --> 01:12:42,170 Þannig að ég þarf að reshift hvað minn leið ATH er að fara til vera. 1515 01:12:42,170 --> 01:12:47,490 En eftir því að í síðustu þremur, ef þú lesa frá vinstri til hægri, það er í 1516 01:12:47,490 --> 01:12:48,740 vaxandi röð. 1517 01:12:48,740 --> 01:12:52,150 1518 01:12:52,150 --> 01:12:56,540 >> Svo nú viljum við að lýsa hvað strúktúr er að fara að vera fyrir 1519 01:12:56,540 --> 01:12:58,300 hnúður í þessu tré. 1520 01:12:58,300 --> 01:13:02,720 Svo hvað við þurfum í a tvöfaldur tré? 1521 01:13:02,720 --> 01:13:05,830 Þannig að við höfum verðmæti tegund INT, svo nokkur INT gildi. 1522 01:13:05,830 --> 01:13:07,220 Ég veit ekki hvað við kallað það er í lausn - 1523 01:13:07,220 --> 01:13:08,500 int n. 1524 01:13:08,500 --> 01:13:13,570 Við þurfum bendi á vinstri barnið og bendi á hægri barn. 1525 01:13:13,570 --> 01:13:17,540 Svo það er að fara að líta svona út. 1526 01:13:17,540 --> 01:13:20,510 Og það verður í raun að líta áður þegar gerði tvöfalt linked 1527 01:13:20,510 --> 01:13:25,090 listi efni, svo tilkynning - 1528 01:13:25,090 --> 01:13:27,860 Ég ætla að hafa til að fletta alla leiðin aftur niður á vanda 11.. 1529 01:13:27,860 --> 01:13:30,980 1530 01:13:30,980 --> 01:13:36,390 >> Svo eftir það lítur út eins og þetta, nema við verður bara að kalla þetta 1531 01:13:36,390 --> 01:13:38,590 mismunandi nöfn. 1532 01:13:38,590 --> 01:13:41,440 Við höfum enn heiltölu gildi og tveir ábendingum. 1533 01:13:41,440 --> 01:13:44,850 Það er bara að í stað þess að meðhöndla Ábendingum og benda á næsta hlutur 1534 01:13:44,850 --> 01:13:47,955 og fyrri hlutur, við erum að meðhöndla ábendingum til að benda á vinstri barn 1535 01:13:47,955 --> 01:13:49,205 og rétt barns. 1536 01:13:49,205 --> 01:13:57,372 1537 01:13:57,372 --> 01:13:57,860 OK. 1538 01:13:57,860 --> 01:13:59,650 Svo er það strúktúr hnút okkar. 1539 01:13:59,650 --> 01:14:03,920 Og nú, eina hlutverk sem við þurfum að framkvæma fyrir þessu er Traverse, sem 1540 01:14:03,920 --> 01:14:08,320 við viljum fara yfir tré, prentun út gildum trénu í röð. 1541 01:14:08,320 --> 01:14:15,241 >> Svo að leita hér, myndum við vilja til að prenta út 20, 34, 36, 52, 59, og 106. 1542 01:14:15,241 --> 01:14:17,970 Hvernig eigum við að ná því? 1543 01:14:17,970 --> 01:14:18,890 Svo er það nokkuð svipað. 1544 01:14:18,890 --> 01:14:22,910 Ef þú sást í síðasta prófið vandamálið að þú vildir að prenta út 1545 01:14:22,910 --> 01:14:25,940 allt tré með kommum á milli allt, það var reyndar einu sinni 1546 01:14:25,940 --> 01:14:27,320 auðveldara en það. 1547 01:14:27,320 --> 01:14:30,950 Svo er hér lausnin. 1548 01:14:30,950 --> 01:14:33,110 Þetta var verulega auðveldari ef þú gerðir það í undirmöppum. 1549 01:14:33,110 --> 01:14:36,650 Ég veit ekki hvort einhver reyndi að gera það iteratively. 1550 01:14:36,650 --> 01:14:38,340 >> En fyrst, höfum við grunntilvikið okkar. 1551 01:14:38,340 --> 01:14:39,660 Hvað ef rótin er núll? 1552 01:14:39,660 --> 01:14:40,610 Þá erum við bara að fara að fara aftur. 1553 01:14:40,610 --> 01:14:42,300 Við viljum ekki að prenta neitt. 1554 01:14:42,300 --> 01:14:45,940 Annað sem við erum að fara að fara yfir endurkvæmt niður. 1555 01:14:45,940 --> 01:14:48,140 Prenta alla vinstri hluttré. 1556 01:14:48,140 --> 01:14:51,440 Svo prenta allt minna en núverandi gildi mitt. 1557 01:14:51,440 --> 01:14:53,930 Og þá ætla ég að prenta sjálfur. 1558 01:14:53,930 --> 01:14:57,310 Og þá ætla ég að Kafa niður minn allt rétt subtree, svo allt 1559 01:14:57,310 --> 01:14:58,810 meiri en gildi mitt. 1560 01:14:58,810 --> 01:15:03,870 Og þetta er að fara að prenta út allt í röð. 1561 01:15:03,870 --> 01:15:05,860 Spurningar um hvernig þetta í raun nær það? 1562 01:15:05,860 --> 01:15:09,892 1563 01:15:09,892 --> 01:15:12,545 >> Áhorfendur: Ég er með spurningu á [inaudible]. 1564 01:15:12,545 --> 01:15:15,090 1565 01:15:15,090 --> 01:15:23,550 >> ROB BOWDEN: Svo ein leið til að nálgast allir endurkvæma vandamál er bara að hugsa 1566 01:15:23,550 --> 01:15:26,275 um það eins og þú ert að hugsa um alla horn tilvikum. 1567 01:15:26,275 --> 01:15:32,150 1568 01:15:32,150 --> 01:15:38,110 Svo íhuga að við viljum prenta þetta allt tréð. 1569 01:15:38,110 --> 01:15:42,030 Svo allt sem við erum að fara að einblína á er þetta tiltekna hnút - 1570 01:15:42,030 --> 01:15:43,740 36.. 1571 01:15:43,740 --> 01:15:47,420 Endurkvæma símtöl, þykjast við þá bara vinna. 1572 01:15:47,420 --> 01:15:54,000 Svo hér, þetta endurkvæma hringja til að Traverse, við án þess jafnvel að hugsa 1573 01:15:54,000 --> 01:15:58,640 um það, bara fara yfir á vinstri þrír, ímynda sér að þegar prentar 20 1574 01:15:58,640 --> 01:16:00,730 og 34 fyrir okkur. 1575 01:16:00,730 --> 01:16:03,350 Og svo þegar við endurkvæmt lokum kalla Traverse á 1576 01:16:03,350 --> 01:16:07,890 rétt, sem mun rétt prenta 52, 59, og 106 fyrir okkur. 1577 01:16:07,890 --> 01:16:13,620 >> Svo í ljósi þess að þetta er að prenta 20, 34, og hitt er hægt að prenta 52, 59, 108, 1578 01:16:13,620 --> 01:16:17,180 allt sem við þurfum til að vera fær um að gera er að prenta okkur sjálf í miðju þess. 1579 01:16:17,180 --> 01:16:21,250 Svo prenta út allt fyrir okkur. 1580 01:16:21,250 --> 01:16:27,710 Prenta okkur sjálf, þannig að núverandi hnút Prenta 36, venjulegur printf, og þá 1581 01:16:27,710 --> 01:16:31,170 prenta allt eftir okkur. 1582 01:16:31,170 --> 01:16:32,730 >> DAVID J. Malan: Þetta er þar sem endurkvæmni fær virkilega fallegur. 1583 01:16:32,730 --> 01:16:36,270 Það er þetta ótrúlega áræðni þar þú gerir tiniest hluti af vinnu. 1584 01:16:36,270 --> 01:16:38,460 Og þá þú láta einhvern annars gera the hvíla. 1585 01:16:38,460 --> 01:16:40,180 Og að einhver annar er, kaldhæðnislega, þú. 1586 01:16:40,180 --> 01:16:44,260 1587 01:16:44,260 --> 01:16:48,360 Svo fyrir alvarlegum súkkulaðikökum stig, ef þú flettir upp á spurningum - 1588 01:16:48,360 --> 01:16:50,530 >> ROB BOWDEN: Á spurningunum? 1589 01:16:50,530 --> 01:16:53,490 >> DAVID J. Malan: Og niður smá til tölurnar, hjartarskinn einhver vita hvar 1590 01:16:53,490 --> 01:16:55,190 þessar tölur koma frá? 1591 01:16:55,190 --> 01:16:56,610 >> ROB BOWDEN: Ég hef bókstaflega ekki hugmynd. 1592 01:16:56,610 --> 01:16:59,794 >> DAVID J. Malan: Þeir virðast um quiz. 1593 01:16:59,794 --> 01:17:01,150 >> Áhorfendur: Eru þeir sömu tölur? 1594 01:17:01,150 --> 01:17:01,910 >> DAVID J. Malan: Þær tölur. 1595 01:17:01,910 --> 01:17:03,260 Smá páska egg. 1596 01:17:03,260 --> 01:17:08,100 Svo fyrir þá að horfa á á netinu á heimili, ef þú getur sagt okkur með tölvupósti til 1597 01:17:08,100 --> 01:17:12,680 heads@CS50.net hvað þýðingu Af þessum endurteknar sex tölur eru 1598 01:17:12,680 --> 01:17:18,560 Allan Quiz 1, munum við fara í sturtu þig með ótrúlega athygli á það sem kemur síðas 1599 01:17:18,560 --> 01:17:21,610 fyrirlestur og streitu boltanum. 1600 01:17:21,610 --> 01:17:25,460 1601 01:17:25,460 --> 01:17:27,790 Nice, lúmskur. 1602 01:17:27,790 --> 01:17:29,570 >> ROB Bowden: Allur Síðustu spurningarnar um neitt á spurningakeppni? 1603 01:17:29,570 --> 01:17:32,608