1 00:00:00,000 --> 00:00:12,610 2 00:00:12,610 --> 00:00:12,900 >> DAVID J. Malan: Pob hawl. 3 00:00:12,900 --> 00:00:16,790 Felly, croeso i'r cyntaf erioed Post-mortem CS50 ar gyfer cwis. 4 00:00:16,790 --> 00:00:18,340 Rydym yn meddwl y bydden ni'n inaugurate traddodiad hwn eleni. 5 00:00:18,340 --> 00:00:20,960 A bydd hyn yn gyfle i gerdded trwy'r 6 00:00:20,960 --> 00:00:22,220 atebion i'r cwis. 7 00:00:22,220 --> 00:00:26,160 A byddwn yn gyflymu neu arafu i lawr yn seiliedig ar ar log o'r rhai yma. 8 00:00:26,160 --> 00:00:29,730 >> Felly, mae'n debyg eich bod yma am eich bod yn diddordeb mewn sut y gallech gael neu 9 00:00:29,730 --> 00:00:31,170 Dylai wedi ateb rhai o'r problemau hyn. 10 00:00:31,170 --> 00:00:33,300 Felly, pam nad ydym yn edrych yn yr adran hon yn gyntaf? 11 00:00:33,300 --> 00:00:34,450 Felly mae cael llinynnau. 12 00:00:34,450 --> 00:00:37,600 Rhoddodd hyn yn eich tri fersiwn gwahanol o raglen a oedd, yn y pen draw, 13 00:00:37,600 --> 00:00:39,650 i fod i gael llinyn gan ddefnyddiwr. 14 00:00:39,650 --> 00:00:42,530 P'un ai peidio i wneud hyn oedd chwith i chi benderfynu. 15 00:00:42,530 --> 00:00:45,150 >> Ac rydym yn gofyn yng Nghwestiwn 0, debyg bod fersiwn 1 yn 16 00:00:45,150 --> 00:00:46,400 llunio a'i ddienyddio. 17 00:00:46,400 --> 00:00:48,860 Pam y gallai'r rhaglen segfault? 18 00:00:48,860 --> 00:00:51,150 Ar yr olwg gyntaf, unrhyw awgrymiadau ynghylch pam? 19 00:00:51,150 --> 00:00:54,012 20 00:00:54,012 --> 00:00:54,489 Yeah. 21 00:00:54,489 --> 00:00:59,260 >> GYNULLEIDFA: Felly, yr wyf yn cofio gweld hyn mewn enghraifft blaenorol o edrych ar y 22 00:00:59,260 --> 00:01:05,506 torgoch * s a gweld y sgan y s a gweld oherwydd ei fod yn pwyntydd, sut 23 00:01:05,506 --> 00:01:07,971 oedd yn effeithio ar yr hyn yr ydych sganio i mewn? 24 00:01:07,971 --> 00:01:10,940 A yw'n s neu gyfeiriad s? 25 00:01:10,940 --> 00:01:11,180 >> DAVID J. Malan: OK. 26 00:01:11,180 --> 00:01:11,480 Da. 27 00:01:11,480 --> 00:01:14,830 Felly yn y pen draw, ffynhonnell unrhyw broblem yn ôl pob tebyg yn mynd i leihau 28 00:01:14,830 --> 00:01:16,210 i'r newidyn s. 29 00:01:16,210 --> 00:01:17,280 Ac mae'n wir yn amrywiol. 30 00:01:17,280 --> 00:01:19,900 Y math data y newidyn cols *, sy'n golygu ei fod yn mynd i 31 00:01:19,900 --> 00:01:22,570 yn cynnwys cyfeiriad cymeriad. 32 00:01:22,570 --> 00:01:23,850 Ac yno yn gorwedd y mewnwelediad. 33 00:01:23,850 --> 00:01:28,330 Mae'n mynd i gynnwys cyfeiriad cymeriad neu, yn fwy cyffredinol, mae'r 34 00:01:28,330 --> 00:01:32,110 cyfeiriad y cymeriad cyntaf yn bloc cyfan o gymeriadau. 35 00:01:32,110 --> 00:01:36,680 >> Ond mae'r dal yw bod sgan s, pwrpas yn bywyd, yn cael ei rhoi cyfeiriad a roddir 36 00:01:36,680 --> 00:01:40,960 cod fformat, fel% s, darllen llinyn i mewn i'r darn o 37 00:01:40,960 --> 00:01:42,330 cof yn y cyfeiriad hwnnw. 38 00:01:42,330 --> 00:01:46,040 Ond oherwydd does dim arwydd gyfartal gerbron y colon ar y cyntaf 39 00:01:46,040 --> 00:01:49,310 llinell o god, oherwydd nid ydym yn ei wneud mewn gwirionedd yn dyrannu unrhyw cof gyda 40 00:01:49,310 --> 00:01:53,020 malloc, oherwydd nad oedd mewn gwirionedd yn dyrannu amrywiaeth o rai maint, pob 41 00:01:53,020 --> 00:01:57,620 rydych chi'n ei wneud yn darllen y defnyddiwr mewnbwn bysellfwrdd i rai cyflawn 42 00:01:57,620 --> 00:02:00,490 gwerth garbage, a oedd yn yn s yn ddiofyn. 43 00:02:00,490 --> 00:02:04,480 Felly groes yr ydych yn mynd i segfault os nad yw cyfeiriad yn jyst mor digwydd 44 00:02:04,480 --> 00:02:08,009 i fod yn werth eich bod yn gallu, mewn gwirionedd, ysgrifennwch at. 45 00:02:08,009 --> 00:02:10,889 Mor wael fel na i ddyrannu eich cof yno. 46 00:02:10,889 --> 00:02:13,150 >> Felly, yng nghwestiwn 1, rydym yn gofyn, debyg bod fersiwn 2 yn 47 00:02:13,150 --> 00:02:14,230 llunio a'i ddienyddio. 48 00:02:14,230 --> 00:02:15,900 Pam y gallai rhaglen hon segfault? 49 00:02:15,900 --> 00:02:17,990 Felly, mae hyn mae un yn llai buggy. 50 00:02:17,990 --> 00:02:21,470 Ac mae mewn gwirionedd dim ond un ffordd amlwg lle y gallwch 51 00:02:21,470 --> 00:02:22,810 sbarduno segfault yma. 52 00:02:22,810 --> 00:02:23,730 Ac mae hyn yn thematig. 53 00:02:23,730 --> 00:02:28,180 Unrhyw amser rydym yn defnyddio c mewn cof, yr hyn gallech ei wneud i gymell segfault 54 00:02:28,180 --> 00:02:30,718 gyda fersiwn 2? 55 00:02:30,718 --> 00:02:35,560 >> GYNULLEIDFA: Os ydych yn defnyddio y mewnbwn yn llinyn sy'n hirach na 49 56 00:02:35,560 --> 00:02:35,975 cymeriadau. 57 00:02:35,975 --> 00:02:37,260 >> DAVID J. Malan: Yn union. 58 00:02:37,260 --> 00:02:41,420 Unrhyw bryd y byddwch yn gweld rhywbeth sefydlog hyd pan ddaw i amrywiaeth, bydd eich 59 00:02:41,420 --> 00:02:44,650 Dylai radar yn mynd i ffwrdd y gallai hyn fod yn problemau os nad ydych yn edrych ar y 60 00:02:44,650 --> 00:02:45,810 ffiniau arae. 61 00:02:45,810 --> 00:02:46,650 A dyna yw'r broblem yma. 62 00:02:46,650 --> 00:02:47,910 Rydym yn dal i ddefnyddio scanf. 63 00:02:47,910 --> 00:02:52,200 Rydym yn dal i ddefnyddio% s, sy'n golygu ceisio i ddarllen llinyn gan y defnyddiwr. 64 00:02:52,200 --> 00:02:56,300 Mae hynny'n mynd i gael ei ddarllen i mewn s, sydd, yn y fan hon, yn effeithiol y 65 00:02:56,300 --> 00:02:58,570 cyfeiriad darn o gof neu ei gyfwerth. 66 00:02:58,570 --> 00:03:02,080 Mae'n enw o fyrdd o gymeriadau o gof. 67 00:03:02,080 --> 00:03:07,610 >> Ond yn union hynny, os ydych yn darllen llinyn sy'n hirach na 49 cymeriadau, 49 68 00:03:07,610 --> 00:03:10,440 oherwydd eich bod angen lle i'r slaes 0, rydych yn mynd i orlifo 69 00:03:10,440 --> 00:03:11,390 y byffer. 70 00:03:11,390 --> 00:03:16,410 Ac efallai y byddwch yn cael lwcus a gallu ysgrifennu gymeriad 51fed, 52ain, 53ain. 71 00:03:16,410 --> 00:03:18,560 Ond ar ryw bwynt, yr AO yn mynd i ddweud, dim. 72 00:03:18,560 --> 00:03:21,270 Mae hyn yn bendant nid yw'n cof yn caniatáu i chi i gyffwrdd. 73 00:03:21,270 --> 00:03:23,380 Ac mae'r rhaglen yn mynd i segfault. 74 00:03:23,380 --> 00:03:26,650 >> Felly mae, dylai'r heuristics fod yn unrhyw tro y byddwch wedi cael hyd penodol, mae gennych 75 00:03:26,650 --> 00:03:30,150 i wneud yn siŵr eich bod yn gwirio hyd o ba bynnag yr ydych yn ceisio 76 00:03:30,150 --> 00:03:31,090 i ddarllen i mewn iddo. 77 00:03:31,090 --> 00:03:35,110 >> GYNULLEIDFA: Felly, i ddatrys hynny, gallech wedi cael datganiad gwirio mewn gwirionedd 78 00:03:35,110 --> 00:03:37,140 yw'r mwyaf hyd na neu'n lai na? 79 00:03:37,140 --> 00:03:37,730 >> DAVID J. Malan: Yn hollol. 80 00:03:37,730 --> 00:03:41,706 Rydych yn unig gennych gyflwr sy'n dweud, os yw'r - 81 00:03:41,706 --> 00:03:46,080 neu yn hytrach nad ydych o reidrwydd yn gwybod ymlaen llaw faint o gymeriadau y 82 00:03:46,080 --> 00:03:49,060 defnyddiwr yn mynd i deipio, oherwydd gennych cyw iâr a'r wy. 83 00:03:49,060 --> 00:03:51,860 Nid tan eich bod wedi ei ddarllen yn â scanf gallwch chyfrif i maes pa mor hir ydyw. 84 00:03:51,860 --> 00:03:54,500 Ond ar y pwynt hwnnw, mae'n rhy hwyr, oherwydd eich bod eisoes wedi ei ddarllen i mewn i 85 00:03:54,500 --> 00:03:55,710 rhai bloc o cof. 86 00:03:55,710 --> 00:03:59,590 Felly, wrth fynd heibio, mae'r llyfrgell yn osgoi CS50 y mater hwn yn gyfan gwbl, galw i gof 87 00:03:59,590 --> 00:04:01,060 drwy ddefnyddio fgetc. 88 00:04:01,060 --> 00:04:05,390 Ac mae'n darllen un cymeriad ar y tro, tip-bysedd traed ar hyd, gan wybod eich bod yn 89 00:04:05,390 --> 00:04:08,060 Ni all gorlifo cymeriad os eich bod yn darllen un ar y tro. 90 00:04:08,060 --> 00:04:11,580 >> Mae'r dal yw gyda adalw getstring yn bod yn rhaid i ail-faint yn gyson 91 00:04:11,580 --> 00:04:13,590 bod darn o gof, a oedd yn yn unig yn boen. 92 00:04:13,590 --> 00:04:15,310 Mae'n llawer o linellau o cod i wneud hynny. 93 00:04:15,310 --> 00:04:18,779 Felly, byddai'r dull arall fyddai mewn gwirionedd yn defnyddio gefnder, felly 94 00:04:18,779 --> 00:04:19,790 i siarad, o scanf. 95 00:04:19,790 --> 00:04:22,820 Mae amrywiadau o lawer o'r rhain swyddogaethau bod yn edrych mewn gwirionedd yn y 96 00:04:22,820 --> 00:04:25,870 hyd faint o gymeriadau efallai y byddwch yn darllen maximally. 97 00:04:25,870 --> 00:04:29,430 A gallech nodi, nid ydynt yn darllen mwy na 50 nod. 98 00:04:29,430 --> 00:04:34,110 Felly byddai hynny'n ffordd arall, ond llai hyblyg o fewnbynnau mwy. 99 00:04:34,110 --> 00:04:37,040 >> Felly, cwestiwn 2 yn gofyn, mae'n debyg y fersiwn 3 yn cael ei llunio a'i ddienyddio. 100 00:04:37,040 --> 00:04:39,960 Pam y gallai fod rhaglen segfault? 101 00:04:39,960 --> 00:04:42,650 Felly, mae hyn yn un mewn gwirionedd yr un fath ateb, er ei fod yn 102 00:04:42,650 --> 00:04:43,590 yn edrych ychydig yn ffansi. 103 00:04:43,590 --> 00:04:46,440 Rydym yn defnyddio malloc, sy'n teimlo fel rydym yn rhoi mwy o opsiynau ein hunain. 104 00:04:46,440 --> 00:04:48,030 Ac yna rydym yn rhyddhau bod cof ar y diwedd. 105 00:04:48,030 --> 00:04:49,580 Mae'n dal i fod dim ond 50 bytes o gof. 106 00:04:49,580 --> 00:04:53,620 Felly, efallai y byddwn yn dal i geisio i ddarllen mewn 51, 52, 1,000 bytes. 107 00:04:53,620 --> 00:04:55,830 Mae'n mynd i segfault am yn union yr un rheswm. 108 00:04:55,830 --> 00:04:57,530 >> Ond mae rheswm arall hefyd. 109 00:04:57,530 --> 00:05:03,890 Beth arall allai malloc dychwelyd ar wahân cyfeiriad darn o gof? 110 00:05:03,890 --> 00:05:04,920 Gallai ddychwelyd null. 111 00:05:04,920 --> 00:05:07,560 Ac oherwydd nad ydym yn gwirio am hynny, efallai y byddwn yn gwneud rhywbeth 112 00:05:07,560 --> 00:05:11,350 dwp am reswm arall, sef bod efallai y byddwn yn dweud wrth scanf, darllen 113 00:05:11,350 --> 00:05:16,050 cyfraniad y defnyddiwr o'r bysellfwrdd i 0 lleoliad, AKA null. 114 00:05:16,050 --> 00:05:18,890 A dyna, hefyd, bydd yn bendant sbarduno segfault. 115 00:05:18,890 --> 00:05:21,590 Felly, ar gyfer y diben y cwis, a byddem yn wedi derbyn naill neu'r llall o'r rheini fel 116 00:05:21,590 --> 00:05:22,740 reswm dilys. 117 00:05:22,740 --> 00:05:23,420 Mae un yn union yr un fath. 118 00:05:23,420 --> 00:05:25,720 Mae un yn ychydig yn fwy cynnil. 119 00:05:25,720 --> 00:05:28,975 >> Yn olaf, o ran y rhaglen defnydd o gof, sut fersiwn 2 a 120 00:05:28,975 --> 00:05:30,350 fersiwn 3 yn wahanol? 121 00:05:30,350 --> 00:05:35,070 Felly, ar gyfer beth mae'n werth, gwelsom cyflenwad ymddangos yn ddiddiwedd o bosibl 122 00:05:35,070 --> 00:05:35,770 atebion i hyn. 123 00:05:35,770 --> 00:05:39,300 Ac ymhlith atebion pobl, yr hyn yr ydym yn gobeithio amdano, ond yr ydym yn derbyn eraill 124 00:05:39,300 --> 00:05:42,250 pethau, roedd rhywfaint o sôn am y ffaith bod fersiwn 2 yn defnyddio 125 00:05:42,250 --> 00:05:44,560 y pentwr fel y'u gelwir. 126 00:05:44,560 --> 00:05:46,710 Fersiwn 3 yn defnyddio'r domen. 127 00:05:46,710 --> 00:05:50,060 Ac yn swyddogaethol, nid yw hyn yn wir yn gwneud pob llawer y o wahaniaeth. 128 00:05:50,060 --> 00:05:54,040 Ar ddiwedd y dydd, rydym yn dal i dim ond yn cael 50 bytes o gof. 129 00:05:54,040 --> 00:05:56,640 >> Ond dyna oedd un o'r atebion posibl ein bod yn edrych ar. 130 00:05:56,640 --> 00:05:59,730 Ond byddwch yn gweld, wrth i chi gael eich cwisiau yn ôl o'r TFS, ein bod yn gwneud 131 00:05:59,730 --> 00:06:04,330 dderbyn trafodaethau eraill ar eu defnydd amrywiol o gof yn ogystal. 132 00:06:04,330 --> 00:06:08,600 Ond stacio a byddai domen wedi bod yn ateb hawdd i fynd gyda. 133 00:06:08,600 --> 00:06:11,150 Unrhyw gwestiynau? 134 00:06:11,150 --> 00:06:12,400 Yr wyf yn rhoi i chi Rob. 135 00:06:12,400 --> 00:06:18,360 136 00:06:18,360 --> 00:06:20,210 >> ROB BOWDEN: Felly broblem 4. 137 00:06:20,210 --> 00:06:21,985 Mae hwn yn un lle bu'n rhaid i chi lenwi yn y nifer o bytes o'r holl 138 00:06:21,985 --> 00:06:23,460 y gwahanol fathau a ddefnyddiwyd. 139 00:06:23,460 --> 00:06:24,830 Peth Felly cyntaf i ni ei weld. 140 00:06:24,830 --> 00:06:27,930 Tybiwch 32-bit pensaernïaeth, fel hyn peiriant CS50. 141 00:06:27,930 --> 00:06:33,530 Felly, un o'r pethau sylfaenol ynghylch Saernïaeth 32-bit, sy'n dweud wrthym 142 00:06:33,530 --> 00:06:37,490 sut yn union fawr pwyntydd yn mynd i fod yn y pensaernïaeth. 143 00:06:37,490 --> 00:06:43,020 >> Hynny ar unwaith, rydym yn gwybod bod unrhyw pwyntydd fath yw 32-darnau neu 4 bytes. 144 00:06:43,020 --> 00:06:46,010 Felly, yn edrych ar y tabl hwn, mae nod * yn fath pwyntydd. 145 00:06:46,010 --> 00:06:47,250 Mae hynny'n mynd i fod yn 4 bytes. 146 00:06:47,250 --> 00:06:51,640 Nod strwythur *, dyna llythrennol union yr un fath i seren nod. 147 00:06:51,640 --> 00:06:53,590 Ac felly mae hynny'n mynd i fod yn 4 bytes. 148 00:06:53,590 --> 00:06:58,270 Llinynnol, felly nid yw'n edrych fel Pointer eto, ond mae'r typedef, a 149 00:06:58,270 --> 00:07:01,590 llinyn yn unig yw golosg *, sy'n yn fath pwyntydd. 150 00:07:01,590 --> 00:07:03,550 Felly mae hynny'n mynd i fod yn 4 bytes. 151 00:07:03,550 --> 00:07:06,150 >> Felly, y tri hyn i gyd yn 4 bytes. 152 00:07:06,150 --> 00:07:09,350 Nawr, nod a myfyrwyr yn ychydig yn fwy cymhleth. 153 00:07:09,350 --> 00:07:15,160 Felly, yn edrych ar nod a myfyrwyr, gwelwn nod fel cyfanrif a pwyntydd. 154 00:07:15,160 --> 00:07:18,050 Ac myfyriwr dau awgrymiadau tu mewn iddo. 155 00:07:18,050 --> 00:07:23,340 Felly, o leiaf ar gyfer ein hachos yma, y ​​ffordd ein bod yn y pen draw yn cyfrifo maint y 156 00:07:23,340 --> 00:07:27,020 strwythur hwn yn cael ei ychwanegu i fyny bopeth dyna y tu mewn i'r strwythur. 157 00:07:27,020 --> 00:07:30,690 >> Felly, ar gyfer nod, mae gennym cyfanrif, sydd 4 bytes. 158 00:07:30,690 --> 00:07:32,830 Mae gennym pwyntydd, sydd 4 bytes. 159 00:07:32,830 --> 00:07:35,820 Ac felly un nod yn mynd i fanteisio ar 8 bytes. 160 00:07:35,820 --> 00:07:39,490 Ac yn yr un modd i'r myfyriwr, mae gennym pwyntydd sy'n 4 bytes ac un arall 161 00:07:39,490 --> 00:07:40,770 pwyntydd sy'n 4 bytes. 162 00:07:40,770 --> 00:07:43,180 Felly, mae hynny'n mynd i ben fyny yn cael ei 8 bytes. 163 00:07:43,180 --> 00:07:45,480 Felly, nod a myfyrwyr 8 bytes. 164 00:07:45,480 --> 00:07:48,950 A thair mae'r rhain i gyd 4 bytes. 165 00:07:48,950 --> 00:07:50,240 Cwestiynau ar hynny? 166 00:07:50,240 --> 00:07:54,640 167 00:07:54,640 --> 00:07:54,990 Ie. 168 00:07:54,990 --> 00:07:58,413 >> GYNULLEIDFA: A yw ei fod yn 64-bit pensaernïaeth, byddai hynny'n 169 00:07:58,413 --> 00:07:59,880 dyblu pob un ohonynt? 170 00:07:59,880 --> 00:08:01,790 >> ROB BOWDEN: Ni fyddai'n dyblu pob un ohonynt. 171 00:08:01,790 --> 00:08:05,830 Felly, pensaernïaeth 64-bit, mae'n, unwaith eto, newidiadau y peth sylfaenol y byddai 172 00:08:05,830 --> 00:08:08,910 pwyntydd yw 64 darnau nawr. 173 00:08:08,910 --> 00:08:09,290 Yeah. 174 00:08:09,290 --> 00:08:10,930 Felly pwyntydd yw 8 bytes. 175 00:08:10,930 --> 00:08:15,420 Felly hyn a oedd yn 4 bytes yn mynd i fod yn 8 bytes. 176 00:08:15,420 --> 00:08:18,617 Mae myfyriwr, a oedd dau awgrymiadau, yn dda, erbyn hyn mae'n mynd i 177 00:08:18,617 --> 00:08:19,800 fod yn 8 bytes, 8 bytes. 178 00:08:19,800 --> 00:08:21,980 Mae'n mynd i wneud 16 bytes. 179 00:08:21,980 --> 00:08:25,710 >> , Ond yn nod yn dal i fod 4 bytes. 180 00:08:25,710 --> 00:08:27,800 Felly pwyntydd hyn yn mynd i fod yn 8 bytes. 181 00:08:27,800 --> 00:08:28,930 Mae hyn yn 4 bytes. 182 00:08:28,930 --> 00:08:30,870 Felly nod yn mynd yn unig i fod yn 12 bytes. 183 00:08:30,870 --> 00:08:36,309 184 00:08:36,309 --> 00:08:39,280 Unrhyw gwestiynau eraill ar hynny un? 185 00:08:39,280 --> 00:08:44,500 Felly, yr un nesaf, mae'r rhain yn codau statws HTTP. 186 00:08:44,500 --> 00:08:48,000 Ac bu'n rhaid i chi yn disgrifio amgylchiadau lle y gallai 187 00:08:48,000 --> 00:08:49,810 cael eu dychwelyd atoch. 188 00:08:49,810 --> 00:08:56,730 un broblem a glywais rhai myfyrwyr rhaid yw eu bod yn ceisio gwneud y 189 00:08:56,730 --> 00:08:58,950 camgymeriadau fod ar ben y cleient. 190 00:08:58,950 --> 00:09:02,320 Felly, pan fyddwn yn ceisio gwneud y cais at 'r gweinyddwr, bydd rhywbeth yn mynd 191 00:09:02,320 --> 00:09:03,820 anghywir ar ein diwedd. 192 00:09:03,820 --> 00:09:07,660 Ond yn gyffredinol, mae'r codau hyn yn cael eu dychwelyd gan y gweinydd. 193 00:09:07,660 --> 00:09:11,720 Felly, rydym am i chyfrif i maes beth sy'n mynd anghywir neu hawl ar y gweinydd sy'n 194 00:09:11,720 --> 00:09:14,280 achosi pethau hyn gael eu dychwelyd. 195 00:09:14,280 --> 00:09:18,670 Felly pam y gallai gweinydd ffurflenni Statws cod 200? 196 00:09:18,670 --> 00:09:19,920 Unrhyw syniadau? 197 00:09:19,920 --> 00:09:23,360 198 00:09:23,360 --> 00:09:23,730 >> Yeah. 199 00:09:23,730 --> 00:09:27,850 Felly, rhywbeth am llwyddiannus y cais yn mynd trwy. 200 00:09:27,850 --> 00:09:30,260 Ac maent yn gallu dychwelyd beth bynnag yr ydych yn gofyn am. 201 00:09:30,260 --> 00:09:32,240 Felly, popeth yn iawn. 202 00:09:32,240 --> 00:09:35,662 Beth am 302 o hyd? 203 00:09:35,662 --> 00:09:36,618 Yeah. 204 00:09:36,618 --> 00:09:39,008 >> GYNULLEIDFA: Mae'r gweinydd yn edrych am yr hyn roeddech yn chwilio amdani. 205 00:09:39,008 --> 00:09:40,442 , Ond ni allai ddod o hyd iddo. 206 00:09:40,442 --> 00:09:42,850 Felly mae 'na gwall. 207 00:09:42,850 --> 00:09:47,720 >> ROB BOWDEN: Felly mae'r gweinydd yn chwilio am yr hyn yr ydych ei eisiau. 208 00:09:47,720 --> 00:09:51,682 Felly, dim ond edrych yma, 302 o hyd, roedd yn gallu ddod o hyd iddo. 209 00:09:51,682 --> 00:09:53,035 >> GYNULLEIDFA: Mae'n ddrwg gen i. 210 00:09:53,035 --> 00:09:54,388 Wedi dod o hyd yn golygu eu bod yn ei chael yn. 211 00:09:54,388 --> 00:09:55,638 Mae'n ddrwg gennym. 212 00:09:55,638 --> 00:09:58,120 213 00:09:58,120 --> 00:10:00,160 >> ROB BOWDEN: Felly 302 a ganfuwyd. 214 00:10:00,160 --> 00:10:02,350 Mae'r gweinydd yn gallu dod o hyd i yr hyn yr ydych ei eisiau. 215 00:10:02,350 --> 00:10:04,640 >> GYNULLEIDFA: Ond nid yw'n ei arddangos? 216 00:10:04,640 --> 00:10:08,180 >> ROB BOWDEN: Y gwahaniaeth rhwng hwn 302 a 200 yw ei fod yn 217 00:10:08,180 --> 00:10:09,280 yn gwybod beth rydych ei eisiau. 218 00:10:09,280 --> 00:10:12,000 Ond nid yw'n union lle chi am ei ofyn. 219 00:10:12,000 --> 00:10:14,580 Felly, 302 yn ailgyfeirio nodweddiadol. 220 00:10:14,580 --> 00:10:16,510 Felly yr ydych yn gofyn am dudalen. 221 00:10:16,510 --> 00:10:19,590 Mae'n gwybod, oh, yr wyf am i ddychwelyd i chi yma. 222 00:10:19,590 --> 00:10:21,070 Ond mae hyn yn ar URL gwahanol. 223 00:10:21,070 --> 00:10:23,534 Felly hey, chi mewn gwirionedd yn dymuno hyn. 224 00:10:23,534 --> 00:10:26,950 >> DAVID J. Malan: Mae'n ddarn a ddywedodd ein bod yn rhoi i chi guys yn ailgyfeirio 225 00:10:26,950 --> 00:10:30,830 swyddogaeth sy'n defnyddio'r swyddogaeth pennawd hynny, yn ei dro, argraffu leoliad, 226 00:10:30,830 --> 00:10:34,110 colon, ac yna'r URL y ydych am wrthod y defnyddiwr. 227 00:10:34,110 --> 00:10:37,480 Hyd yn oed er nad oeddech yn gweld 302 benodol yno, dyna beth PHP 228 00:10:37,480 --> 00:10:41,550 Byddai hudol mewnosoder fel pennawd yn dweud yn union yr hyn a ddywedodd Rob yno - 229 00:10:41,550 --> 00:10:41,930 dod o hyd. 230 00:10:41,930 --> 00:10:43,180 Ond ewch yma yn lle hynny. 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 Felly, beth am 403 gwahardd? 234 00:10:47,630 --> 00:10:52,240 235 00:10:52,240 --> 00:10:57,120 >> GYNULLEIDFA: Yr wyf yn meddwl ei fod yn bod y gweinydd yn ei ddweud yn y bôn bod y cleient 236 00:10:57,120 --> 00:10:59,970 Ni all gael mynediad i'r dudalen gartref. 237 00:10:59,970 --> 00:11:03,260 >> ROB BOWDEN: Felly ie. 238 00:11:03,260 --> 00:11:07,670 Wel, yr ateb nodweddiadol roeddem yn disgwyl yn rhywbeth fel, y ffeiliau 239 00:11:07,670 --> 00:11:08,920 yn cael eu chmodded briodol. 240 00:11:08,920 --> 00:11:11,590 Dyna mae'n debyg o dan ba amgylchiadau i chi eu gweld. 241 00:11:11,590 --> 00:11:18,920 Ond mae rheswm bod y cleient Gallai fod ar fai yma. 242 00:11:18,920 --> 00:11:20,440 Mae mewn gwirionedd cod statws arall - 243 00:11:20,440 --> 00:11:21,210 401. 244 00:11:21,210 --> 00:11:22,820 Felly mae'r rhain yn debyg iawn. 245 00:11:22,820 --> 00:11:24,590 >> 401 yn anawdurdodedig. 246 00:11:24,590 --> 00:11:26,130 A 403 yn cael ei wahardd. 247 00:11:26,130 --> 00:11:31,890 Ac felly heb awdurdod i chi yn unig gael os nad ydych yn mewngofnodi 248 00:11:31,890 --> 00:11:34,520 Ond efallai logio i mewn yn golygu eich bod yn cael eu hawdurdodi. 249 00:11:34,520 --> 00:11:37,930 Ond os ydych chi eisoes yn logio i mewn ac rydych yn dal heb gael caniatâd, yna 250 00:11:37,930 --> 00:11:40,140 gallwch hefyd gael wahardd. 251 00:11:40,140 --> 00:11:45,320 Felly, os ydych wedi logio i mewn ac nid oes caniatâd, gwahardd hefyd yn 252 00:11:45,320 --> 00:11:47,164 rhywbeth y gallwch ei gael. 253 00:11:47,164 --> 00:11:48,900 >> DAVID J. Malan: A mecanwaith pa broblemau mae'r rhain fel arfer yn 254 00:11:48,900 --> 00:11:53,100 datrys ar y gweinydd yn trwy yr hyn y gorchymyn? 255 00:11:53,100 --> 00:11:57,700 Chmod, os yw'n, yn wir, mae caniatâd cyhoeddi ar y ffeil neu cyfeiriadur. 256 00:11:57,700 --> 00:11:59,220 >> ROB BOWDEN: Yna 404 heb ei ganfod. 257 00:11:59,220 --> 00:12:03,100 258 00:12:03,100 --> 00:12:03,470 Yeah. 259 00:12:03,470 --> 00:12:10,150 Felly, yn wahanol i 302 lle nad oedd yn union lle rydych yn gofyn, ond mae'n gwybod beth 260 00:12:10,150 --> 00:12:12,710 ydych chi eisiau, mae hyn yn, 'i jyst wedi ddim syniad beth rydych ei eisiau. 261 00:12:12,710 --> 00:12:15,648 Ac nad ydych yn gofyn am rhywbeth dilys. 262 00:12:15,648 --> 00:12:18,580 263 00:12:18,580 --> 00:12:22,310 418 Rwy'n tebot ac yna 500 gweinydd mewnol. 264 00:12:22,310 --> 00:12:24,870 Felly pam y gallech gael hynny? 265 00:12:24,870 --> 00:12:26,120 >> Felly segfault - 266 00:12:26,120 --> 00:12:28,760 267 00:12:28,760 --> 00:12:30,640 Fi 'n weithredol yn gwybod y graddio safon ar gyfer hyn. 268 00:12:30,640 --> 00:12:34,850 Ond os yw eich cod PHP wedi cael rhywbeth anghywir ynddo, mewn theori, gallai 269 00:12:34,850 --> 00:12:39,650 mewn gwirionedd segfault, ac os felly, mae hyn yn 500 gwall gweinydd mewnol, rhywbeth 270 00:12:39,650 --> 00:12:41,400 sydd o'i le ar eich gweinydd cyfluniad. 271 00:12:41,400 --> 00:12:44,320 Neu mae 'na gwall cystrawen yn eich cod PHP. 272 00:12:44,320 --> 00:12:46,095 Neu rhywbeth gwael yn mynd ymlaen. 273 00:12:46,095 --> 00:12:48,320 >> DAVID J. Malan: Yr ydym yn gweld segfault ymhlith atebion ychydig o bobl. 274 00:12:48,320 --> 00:12:49,490 Ac yn dechnegol, gallai ddigwydd. 275 00:12:49,490 --> 00:12:53,820 Ond byddai hynny'n PHP, mae'r rhaglen ysgrifennwyd gan bobl eraill, mewn gwirionedd 276 00:12:53,820 --> 00:12:57,790 segfaulted, a dim ond os yw pobl hynny sgriwio i fyny ac ysgrifennodd cod bygi mewn 277 00:12:57,790 --> 00:13:00,680 eu cyfieithydd byddai PHP ei hun segfault. 278 00:13:00,680 --> 00:13:06,460 Felly, er bod 500 yn debyg i segfault yn yr ysbryd, mae bron yn bob amser yn 279 00:13:06,460 --> 00:13:10,490 ganlyniad i fater ffeil ffurfweddu gyda eich gweinydd gwe neu, fel y dywedodd Rob, 280 00:13:10,490 --> 00:13:13,200 gwall cystrawen, fel chi Nid oedd cau dyfynbris. 281 00:13:13,200 --> 00:13:16,180 Neu os ydych yn colli hanner colon yn rhywle. 282 00:13:16,180 --> 00:13:23,677 >> GYNULLEIDFA: Felly, ar gyfer y pset Shuttle, yr wyf yn meddwl pan fyddaf yn gwneud hynny ar ôl i mi glicio y 283 00:13:23,677 --> 00:13:26,300 porwr, ond dim byd yn dod i fyny, yr hyn y maent yn galw dudalen gwyn. 284 00:13:26,300 --> 00:13:28,056 Ond yr oedd oherwydd y cod. 285 00:13:28,056 --> 00:13:29,440 Credaf fod yn JavaScript, dde? 286 00:13:29,440 --> 00:13:29,770 >> ROB BOWDEN: Yeah. 287 00:13:29,770 --> 00:13:31,180 >> GYNULLEIDFA: A fyddai'r fod gwall yn dal i ddod i fyny? 288 00:13:31,180 --> 00:13:34,290 >> ROB BOWDEN: Felly fyddech chi ddim wedi gotten gwall hwn gan fod popeth 289 00:13:34,290 --> 00:13:36,930 o safbwynt y gweinydd gwe yn gwbl iawn. 290 00:13:36,930 --> 00:13:39,090 Ond byddwch yn gofyn am index.html. 291 00:13:39,090 --> 00:13:42,000 Eich cais shuttle.js a service.js. 292 00:13:42,000 --> 00:13:44,580 Ac yr oedd gallu dychwelyd yn llwyddiannus i chi i gyd o'r pethau hynny - 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 Dim ond pan fydd eich porwr yn ceisio dehongli y cod JavaScript sy'n 296 00:13:49,330 --> 00:13:51,370 mae'n debyg, aros, nid yw hyn yn Gwall JavaScript dilys. 297 00:13:51,370 --> 00:13:55,720 298 00:13:55,720 --> 00:13:58,210 Unrhyw gwestiynau eraill? 299 00:13:58,210 --> 00:14:00,750 Mae pob hawl. 300 00:14:00,750 --> 00:14:04,120 >> DAVID J. Malan: Felly nesaf i fyny yn rhif 11. 301 00:14:04,120 --> 00:14:07,610 A 11 oedd y mwyaf dychrynllyd i lawer o bobl. 302 00:14:07,610 --> 00:14:14,620 303 00:14:14,620 --> 00:14:18,570 Felly, y peth pwysicaf i'w nodi yma oedd bod hyn yn, yn wir, am 304 00:14:18,570 --> 00:14:19,840 rhestr cysylltiedig ddwbl. 305 00:14:19,840 --> 00:14:23,160 Ond nid yw hyn yr un fath â'r llynedd problem rhestr gysylltiedig ddwbl, 306 00:14:23,160 --> 00:14:27,170 nad oedd yn rhoi cafeat eich bod yn gallai'r rhestr, mewn gwirionedd, fod heb eu didoli. 307 00:14:27,170 --> 00:14:29,640 >> Felly, y ffaith bod y rhestr yn heb eu didoli a'r ffaith bod y gair hwnnw yn 308 00:14:29,640 --> 00:14:32,930 thanlinellu yno oedd i fod i gyfleu bod hyn mewn gwirionedd yn symleiddio 309 00:14:32,930 --> 00:14:35,430 o'r hyn a fyddai fel arall wedi bod yn yn broblem fwy heriol 310 00:14:35,430 --> 00:14:36,600 a hwy un. 311 00:14:36,600 --> 00:14:40,760 Felly, yn gamgymeriad cyffredin yma oedd wedi rhoi ateb y llynedd ar eich un 312 00:14:40,760 --> 00:14:45,580 peiriant galw ac yna dim ond blindly copi y i lawr fel yr ateb, sef yr hawl 313 00:14:45,580 --> 00:14:48,520 ateb i gwestiwn gwahanol debyg o ran ysbryd. 314 00:14:48,520 --> 00:14:51,340 Ond mae'r cynnil yma fel a ganlyn. 315 00:14:51,340 --> 00:14:55,200 >> Felly un, yr ydym wedi datgan yn nod a a ddiffinnir yn y ffordd arferol yma. 316 00:14:55,200 --> 00:14:59,230 Yna rydym yn diffinio rhestr o fod yn fyd-eang pwyntydd ymgychwyn i null. 317 00:14:59,230 --> 00:15:02,150 Yna, mae'n debyg, mae ddwy swyddogaeth rydym wedi prototeipiau ar gyfer yma, mewnosoder 318 00:15:02,150 --> 00:15:03,240 a chael gwared. 319 00:15:03,240 --> 00:15:06,600 Ac yna rydym yn cael rhywfaint o cod sampl yma o wneud criw o ychwanegiadau. 320 00:15:06,600 --> 00:15:09,930 Ac yna rydym yn gofyn i chi gwblhau'r gweithredu y mewnosodiad yn is yn y fath 321 00:15:09,930 --> 00:15:14,380 ffordd y mae'n mewnosod n i mewn i'r rhestr mewn amser cyson, tanlinellu hefyd, 322 00:15:14,380 --> 00:15:15,730 hyd yn oed os eisoes yn bresennol. 323 00:15:15,730 --> 00:15:20,600 >> Felly, y harddwch o fod yn gallu mewnosod mewn amser cyson yw ei fod yn awgrymu 324 00:15:20,600 --> 00:15:23,060 bod yn rhaid i chi osod y nod newydd lle? 325 00:15:23,060 --> 00:15:23,690 I mewn i'r tu blaen. 326 00:15:23,690 --> 00:15:27,760 Felly mae'n cael gwared ar, diolch byth, o leiaf un o'r achosion a oedd yn arfer gwneud yn ofynnol i 327 00:15:27,760 --> 00:15:30,520 hyd yn oed mwy o god linellau, fel y gwnaeth y flwyddyn ddiwethaf a hyd yn oed yn y dosbarth pan fyddwn yn 328 00:15:30,520 --> 00:15:34,040 siarad trwy y math hwn o beth gyda phobl a gyda rhai 329 00:15:34,040 --> 00:15:35,250 cod ffug llafar. 330 00:15:35,250 --> 00:15:39,190 Felly, yn yr ateb yma, gadewch i hepgor i mai dim ond i gael ar gweledol 331 00:15:39,190 --> 00:15:40,480 y sgrin. 332 00:15:40,480 --> 00:15:42,230 >> Sylwch ein bod yn gwneud y canlynol. 333 00:15:42,230 --> 00:15:45,140 A hefyd yn sylwi ar y symleiddio arall Roedd hyd yn oed os yw'n 334 00:15:45,140 --> 00:15:48,280 eisoes yn bresennol, felly mae hyn yn golygu hyd yn oed os y nifer eisoes yno, gallwch 335 00:15:48,280 --> 00:15:50,280 dim ond blindly mewnosod un arall copi ohono. 336 00:15:50,280 --> 00:15:52,560 A dyna, hefyd, oedd i fod i fod yn symleiddio, er mwyn i chi gallai 337 00:15:52,560 --> 00:15:54,940 canolbwyntio ar, mewn gwirionedd, mae rhai o'r mwy rhan ddeallusol ddiddorol ac 338 00:15:54,940 --> 00:15:58,090 nid dim ond rhyw wall ychwanegol yn gwirio o ystyried yr amser cyfyngedig. 339 00:15:58,090 --> 00:16:02,880 >> Felly, mewn hydoddiant sampl hon, rydym yn dyrannu pwyntydd ar y llaw chwith- 340 00:16:02,880 --> 00:16:04,510 ochr yma i nod. 341 00:16:04,510 --> 00:16:07,190 Nawr, yn sylweddoli bod pwyntydd, fel Dywedodd Rob, dim ond 32 o ddarnau. 342 00:16:07,190 --> 00:16:09,060 Ac nid yw'n cynnwys mewn gwirionedd yn cyfeiriad nes i chi 343 00:16:09,060 --> 00:16:09,970 aseinio y cyfeiriad. 344 00:16:09,970 --> 00:16:13,220 Ac rydym yn gwneud hynny ar y dde-law ochr trwy malloc. 345 00:16:13,220 --> 00:16:16,550 Fel yn ddinesydd da, rydym yn gwirio bod Nid malloc yw, mewn gwirionedd, null, fel bod 346 00:16:16,550 --> 00:16:18,690 nid ydym yn ddamweiniol yn creu yn segfault yma. 347 00:16:18,690 --> 00:16:22,840 Ac unrhyw tro y byddwch yn defnyddio malloc mewn bywyd, yr ydych yn Dylid gwirio ar gyfer null, rhag 348 00:16:22,840 --> 00:16:24,090 gennych nam cynnil. 349 00:16:24,090 --> 00:16:28,460 >> Yna, rydym yn ymgychwyn y null gan pennu n a blaenorol ac nesaf. 350 00:16:28,460 --> 00:16:32,450 Ac yn yr achos hwn yma, yr wyf yn ymgychwyn blaenorol i null, gan fod hyn yn newydd 351 00:16:32,450 --> 00:16:34,780 nod yn mynd i fod yn newydd ddechrau fy rhestr. 352 00:16:34,780 --> 00:16:37,050 Felly, mae mynd i fod yn dim ger ei fron. 353 00:16:37,050 --> 00:16:42,010 Ac yr wyf yn awyddus i atodi yn y bôn rhestr bresennol at y nod newydd trwy 354 00:16:42,010 --> 00:16:44,700 gosod nesaf cyfartal i restru ei hun. 355 00:16:44,700 --> 00:16:47,120 Ond dydw i ddim yn ei wneud eto. 356 00:16:47,120 --> 00:16:51,780 Felly, os y rhestr ei hun eisoes yn bodoli, ac roedd o leiaf un nod 357 00:16:51,780 --> 00:16:57,070 eisoes yn eu lle, os yw hyn yn y rhestr yma ac yr wyf yn mewnosod nod yn newydd yma, yr wyf yn 358 00:16:57,070 --> 00:17:01,840 angen i ni wneud yn siŵr bod fy nghyn nod yn cyfeirio yn ôl at fy nod newydd, 359 00:17:01,840 --> 00:17:04,260 oherwydd mae hyn yn, unwaith eto, rhestr cysylltiedig ddwbl. 360 00:17:04,260 --> 00:17:05,460 >> Felly, rydym yn gwneud gwiriad bwyll. 361 00:17:05,460 --> 00:17:10,109 Os nad yw'r rhestr yn null, os oes eisoes un neu fwy o nodau yno, yna 362 00:17:10,109 --> 00:17:12,470 ychwanegu bod yn ôl cyfeiriad fel petai. 363 00:17:12,470 --> 00:17:15,420 Ac yna y peth olaf un, mae angen ei wneud yw mewn gwirionedd yn diweddaru'r byd-eang 364 00:17:15,420 --> 00:17:20,329 rhestr amrywiol ei hun i dynnu sylw i'r nod newydd. 365 00:17:20,329 --> 00:17:21,790 Yeah. 366 00:17:21,790 --> 00:17:26,579 >> GYNULLEIDFA: Yn y saeth pwyntydd [Anghlywadwy] hafal null, a yw hynny'n 367 00:17:26,579 --> 00:17:30,420 ymdrin â'r rhestr oherwydd mae'r rhestr yn null? 368 00:17:30,420 --> 00:17:30,596 >> DAVID J. Malan: Na. 369 00:17:30,596 --> 00:17:34,500 Mae hynny'n syml i mi fod yn rhagweithiol yn ofalus, gan fod os yw hyn yn fy 370 00:17:34,500 --> 00:17:38,730 rhestr gwreiddiol gyda efallai mwy o nodau dros yma ac rwy'n gosod fy 371 00:17:38,730 --> 00:17:42,380 nod newydd dros yma, mae mynd i fod yn unrhyw beth dros yma. 372 00:17:42,380 --> 00:17:44,720 Ac yr wyf yn awyddus i ddal y syniad hwnnw drwy osod blaenorol i 373 00:17:44,720 --> 00:17:47,740 null ar y nod newydd. 374 00:17:47,740 --> 00:17:51,410 Ac yn ôl pob tebyg, os bydd fy cod yn gywir ac nid oes ffordd arall i fewnosod 375 00:17:51,410 --> 00:17:54,970 nodau ar wahân i swyddogaeth hon, yn ôl pob tebyg, hyd yn oed os y rhestr eisoes wedi 376 00:17:54,970 --> 00:18:00,090 un neu fwy o nodau ynddo, yn ôl pob tebyg y rhestr, y nod cyntaf, byddai'n rhaid i 377 00:18:00,090 --> 00:18:02,750 pwyntydd blaenorol null hun. 378 00:18:02,750 --> 00:18:03,550 >> GYNULLEIDFA: A dim ond dilyniant. 379 00:18:03,550 --> 00:18:08,139 Y rheswm i chi roi pwyntydd hafal nesaf rhestr yn cael ei ydych yn gwneud y pwyntydd 380 00:18:08,139 --> 00:18:13,579 cyn y rhestr gan ei fod yn ei pwyntio i'r nesaf, yr wyf yn dyfalu - 381 00:18:13,579 --> 00:18:14,980 Yr wyf Peidio â - 382 00:18:14,980 --> 00:18:15,450 dim ond rhestru? 383 00:18:15,450 --> 00:18:16,400 >> DAVID J. Malan: Yn union. 384 00:18:16,400 --> 00:18:19,400 Ac felly gadewch i ni mewn gwirionedd yn ystyried dau achos yma mewn gwirionedd, er bod y 385 00:18:19,400 --> 00:18:22,070 Nid yw gorchymyn byddwn yn eu hystyried yn union yr un fath â'r cod. 386 00:18:22,070 --> 00:18:26,250 Ond ar lefel uchel, os yw hyn yn cynrychioli rhestru ac mae hyn yn 32-bit 387 00:18:26,250 --> 00:18:29,560 pwyntydd, y senario symlaf yw bod hyn yn null yn ddiofyn. 388 00:18:29,560 --> 00:18:33,010 Ac yn siŵr fy mod yn awyddus i mewnosoder y rhif 50 oedd y rhif cyntaf. 389 00:18:33,010 --> 00:18:37,640 Felly, yr wyf i'n mynd i fynd yn ei flaen a dyrannu yn nod, sydd yn mynd i gynnwys 390 00:18:37,640 --> 00:18:38,770 tri chae - 391 00:18:38,770 --> 00:18:42,070 n, blaenorol, a'r flwyddyn nesaf. 392 00:18:42,070 --> 00:18:44,580 >> Rydw i'n mynd i roi'r rhif 50 yma, oherwydd bydd hyn yn n. 393 00:18:44,580 --> 00:18:46,130 Bydd hyn yn nesaf. 394 00:18:46,130 --> 00:18:48,530 A bydd hyn yn flaenorol. 395 00:18:48,530 --> 00:18:50,910 Ac felly beth ddylwn i ei wneud yn yr achos hwn? 396 00:18:50,910 --> 00:18:53,900 Wel, rydw i wedi newydd wneud llinell 1 yma. 397 00:18:53,900 --> 00:18:55,400 Pointer n cael n. 398 00:18:55,400 --> 00:18:57,740 Yna i ddim yn dweud, blaenorol ddylai gael null. 399 00:18:57,740 --> 00:18:59,470 Felly, mae hyn yn mynd i fod null. 400 00:18:59,470 --> 00:19:01,365 Yna mi i'n mynd i ddweud nesaf yn mynd i gael rhestr. 401 00:19:01,365 --> 00:19:05,150 >> Ac mae hyn dim ond yn gweithio allan yn dda. 402 00:19:05,150 --> 00:19:06,500 Mae hyn yn null. 403 00:19:06,500 --> 00:19:10,620 Ac felly yr wyf ddim yn dweud, y nod newydd yn nesaf Dylai cae gael beth bynnag mae hyn yn. 404 00:19:10,620 --> 00:19:12,570 Felly, sy'n rhoi null arall yno. 405 00:19:12,570 --> 00:19:14,510 Ac yna y peth olaf Yr wyf yn ei wneud yw gwirio yma. 406 00:19:14,510 --> 00:19:17,870 Os nad yw'r rhestr yn hafal i null, ond mae'n yn hafal i null, felly rydym sgip bod 407 00:19:17,870 --> 00:19:18,470 yn gyfan gwbl. 408 00:19:18,470 --> 00:19:23,520 Ac felly y cyfan yr wyf yn ei wneud nesaf mae rhestr yn cael pwyntydd, sydd ar ffurf lluniau yn arwain at 409 00:19:23,520 --> 00:19:25,570 darlun fel 'na. 410 00:19:25,570 --> 00:19:26,620 Felly dyna un senario. 411 00:19:26,620 --> 00:19:30,490 >> A'r un yr ydych yn gofyn am yn benodol sefyllfa fel hon, 412 00:19:30,490 --> 00:19:33,190 lle mae gennym eisoes restr un-nod. 413 00:19:33,190 --> 00:19:36,240 Ac os wyf yn mynd yn ôl i fyny yn y gwreiddiol Datganiad o'r broblem, nesaf byddwn ni 414 00:19:36,240 --> 00:19:39,320 mewnosoder dweud yn 34, dim ond ar gyfer mwyn drafodaeth. 415 00:19:39,320 --> 00:19:46,210 Felly, yr wyf i'n mynd i ychydig gyfleus dynnu hynny dros yma. 416 00:19:46,210 --> 00:19:47,540 Rwyf wedi malloced yn unig. 417 00:19:47,540 --> 00:19:49,310 Gadewch i ni dybio fy mod yn gwirio am null. 418 00:19:49,310 --> 00:19:51,870 >> Nawr, dw i'n mynd i ymgychwyn n i fod yn 34. 419 00:19:51,870 --> 00:19:53,040 A bydd hyn yn n. 420 00:19:53,040 --> 00:19:54,670 Bydd hyn yn nesaf. 421 00:19:54,670 --> 00:19:57,100 A bydd hyn yn flaenorol. 422 00:19:57,100 --> 00:19:59,370 Gadewch i ni wneud yn siwr nad i ddim cael hwn yn ôl. 423 00:19:59,370 --> 00:20:01,110 Yn dod blaenorol yn gyntaf yn y diffiniad. 424 00:20:01,110 --> 00:20:03,070 Gadewch i mi atgyweiria hon. 425 00:20:03,070 --> 00:20:04,410 Mae hyn yn flaenorol. 426 00:20:04,410 --> 00:20:05,780 Mae hyn yn nesaf. 427 00:20:05,780 --> 00:20:08,620 Er bod y rhain yn union yr un fath, gadewch i ni gadw'n gyson. 428 00:20:08,620 --> 00:20:09,450 >> Blaenorol. 429 00:20:09,450 --> 00:20:11,030 Mae hyn yn nesaf. 430 00:20:11,030 --> 00:20:16,310 Felly, yr wyf wedi newydd malloced fy nodyn, gwirio ar gyfer null, a bennwyd 34 i mewn i'r nod. 431 00:20:16,310 --> 00:20:17,570 Blaenorol yn cael null. 432 00:20:17,570 --> 00:20:19,480 Felly mae hynny'n ei roi i mi hynny. 433 00:20:19,480 --> 00:20:21,010 Nesaf yn cael rhestr. 434 00:20:21,010 --> 00:20:22,370 Felly, rhestr yw hyn. 435 00:20:22,370 --> 00:20:26,520 Felly, mae hyn yr un fath yn awr ag dynnu hyn saeth, fel eu bod yn cyfeirio at un 436 00:20:26,520 --> 00:20:27,940 yn yr un. 437 00:20:27,940 --> 00:20:30,400 Ac yna dwi'n gwirio os restr Nid yn hafal i null. 438 00:20:30,400 --> 00:20:31,740 Ac nid yw'n hyn o bryd. 439 00:20:31,740 --> 00:20:35,580 Yna mi i'n mynd i wneud rhestr blaenorol yn cael pwyntydd. 440 00:20:35,580 --> 00:20:39,700 >> Felly rhestru blaenorol yn cael PTR. 441 00:20:39,700 --> 00:20:44,300 Felly, mae hyn yn cael yr effaith o roi saeth graffigol yma. 442 00:20:44,300 --> 00:20:46,930 Ac mae hynny'n cael ychydig yn tonnog, y llinellau. 443 00:20:46,930 --> 00:20:50,780 Ac yna, yn olaf, yr wyf yn diweddaru rhestr i bwyntio at pwyntydd. 444 00:20:50,780 --> 00:20:55,560 Felly, yn awr mae hyn yn cyfeirio at y boi. 445 00:20:55,560 --> 00:20:57,170 Ac yn awr, gadewch i ni wneud yn gyflym gwiriad bwyll. 446 00:20:57,170 --> 00:20:59,470 >> Dyma'r rhestr, sy'n y newidyn byd-eang. 447 00:20:59,470 --> 00:21:02,850 Y nod cyntaf yw, yn wir, 34, oherwydd Im 'yn dilyn y saeth. 448 00:21:02,850 --> 00:21:05,210 Ac mae hynny'n gywir oherwydd yr wyf am i mewnosoder ar y dechrau y rhestr 449 00:21:05,210 --> 00:21:06,070 pob nodau newydd. 450 00:21:06,070 --> 00:21:08,860 Ei cae nesaf yn fy arwain at y boi. 451 00:21:08,860 --> 00:21:10,710 Os wyf yn dal i fynd, wnes i daro nesaf yw null. 452 00:21:10,710 --> 00:21:11,760 Felly does dim rhestr mwy. 453 00:21:11,760 --> 00:21:14,460 Os byddaf yn taro blaenorol, i mi gael yn ôl lle yr wyf yn ei ddisgwyl. 454 00:21:14,460 --> 00:21:16,435 >> Felly, mae rhai awgrymiadau o hyd, yn amlwg, i drin. 455 00:21:16,435 --> 00:21:19,870 Ond mae'r ffaith eich bod yn dweud wrthych am wneud hyn mewn amser yn gyson i chi golygu mai dim ond 456 00:21:19,870 --> 00:21:22,910 gennym nifer cyfyngedig o bethau caniatáu eich bod yn ei wneud. 457 00:21:22,910 --> 00:21:24,290 A beth yw y rhif hwnnw? 458 00:21:24,290 --> 00:21:25,185 Gallai fod yn un cam. 459 00:21:25,185 --> 00:21:25,700 Gallai fod yn dau. 460 00:21:25,700 --> 00:21:26,820 Gallai fod yn 1,000 o gamau. 461 00:21:26,820 --> 00:21:30,500 Ond mae'n gyfyngedig, sy'n golygu na allwch wedi unrhyw fath o dolennu yn mynd ymlaen 462 00:21:30,500 --> 00:21:32,010 yma, nid oes unrhyw recursion, dim dolenni. 463 00:21:32,010 --> 00:21:37,390 'I' got yn unig i fod yn llinellau caled-godio o god fel yr ydym wedi yn y sampl hon. 464 00:21:37,390 --> 00:21:42,330 >> Felly, y broblem nesaf 12 gofyn i ni cwblhau'r broses o weithredu'r dileu 465 00:21:42,330 --> 00:21:46,740 isod mewn modd fel ei fod yn cael gwared ar n o'r rhestr yn amser llinol. 466 00:21:46,740 --> 00:21:48,740 Felly, mae gennych ychydig yn fwy ystafell wiggle nawr. 467 00:21:48,740 --> 00:21:52,380 Efallai y byddwch yn cymryd yn ganiataol y n, os yw'n bresennol yn y rhestr, yn bresennol 468 00:21:52,380 --> 00:21:53,340 dim mwy nag unwaith. 469 00:21:53,340 --> 00:21:56,770 A bod yn rhy i fod i fod yn seiliedig ar gwis symleiddio rhagdybiaeth, felly 470 00:21:56,770 --> 00:21:59,780 os ydych yn dod o hyd i'r rhif 50 yn rhywle yn y rhestr, nad ydych hefyd yn 471 00:21:59,780 --> 00:22:02,890 rhaid i chi boeni am barhau i ailadrodd, yn chwilio am bob posibl 472 00:22:02,890 --> 00:22:06,990 gopi o 50, a fyddai'n dim ond datganoli i mewn i rai minutia mewn amser cyfyngedig. 473 00:22:06,990 --> 00:22:10,460 >> Felly, gyda dileu, roedd hyn yn un bendant mwy heriol a mwy 474 00:22:10,460 --> 00:22:11,640 cod i ysgrifennu. 475 00:22:11,640 --> 00:22:14,990 Ond ar yr olwg gyntaf, a dweud y gwir, y gallai edrych rhywbeth llethol ac fel 476 00:22:14,990 --> 00:22:17,060 does dim ffordd y gallech gael dod o hyd i ar chwis. 477 00:22:17,060 --> 00:22:22,450 Ond os ydym yn canolbwyntio ar y camau unigol, gobeithio, bydd yn sydyn 478 00:22:22,450 --> 00:22:26,060 taro chi bod pob un o'r rhain yn unigolyn camau yn gwneud synnwyr amlwg 479 00:22:26,060 --> 00:22:27,080 o edrych yn ôl. 480 00:22:27,080 --> 00:22:28,200 Felly, gadewch i ni edrych. 481 00:22:28,200 --> 00:22:32,570 >> Felly yn gyntaf, rydym yn ymgychwyn pwyntydd i fod yn rhestru ei hun. 482 00:22:32,570 --> 00:22:36,040 Oherwydd yr wyf am amser llinol, mae hynny'n ei olygu Rydw i'n mynd i gael rhywfaint o ddolen. 483 00:22:36,040 --> 00:22:39,730 Ac yn ffordd gyffredin i ailadrodd dros y nodau mewn strwythur rhestr neu unrhyw fath 484 00:22:39,730 --> 00:22:43,860 strwythur iteraidd yw cymryd pwyntydd i flaen y data 485 00:22:43,860 --> 00:22:46,990 strwythur ac yna dim ond yn dechrau diweddaru ac cherdded eich ffordd 486 00:22:46,990 --> 00:22:48,650 drwy'r strwythur data. 487 00:22:48,650 --> 00:22:50,040 Felly, yr wyf i'n mynd i wneud yn union hynny. 488 00:22:50,040 --> 00:22:54,260 >> Er pwyntydd, fy amrywio dros dro, Nid yw cyfartal i null, gadewch i ni 489 00:22:54,260 --> 00:22:55,660 mynd yn ei flaen a gwirio. 490 00:22:55,660 --> 00:22:56,910 Oeddwn i'n cael lwcus? 491 00:22:56,910 --> 00:23:01,740 A yw'r maes n yn y nod ar hyn o bryd rwy'n edrych ar hafal i'r 492 00:23:01,740 --> 00:23:03,380 nifer Rwy'n edrych am? 493 00:23:03,380 --> 00:23:05,410 Ac os felly, gadewch i ni wneud rhywbeth. 494 00:23:05,410 --> 00:23:10,020 Yn awr, sylwi ar hyn os bydd cyflwr amgylchynu'r cyfan 495 00:23:10,020 --> 00:23:11,520 llinellau canlynol o god. 496 00:23:11,520 --> 00:23:14,610 Dyma'r unig beth yr wyf yn poeni am - dod o hyd i nifer o dan sylw. 497 00:23:14,610 --> 00:23:18,010 Felly, does dim arall, sy'n symleiddio pethau gysyniadol ychydig. 498 00:23:18,010 --> 00:23:22,040 >> Ond yn awr, yr wyf yn sylweddoli, a allai fod gennych dim ond yn sylweddoli hyn ar ôl meddwl 499 00:23:22,040 --> 00:23:24,720 drwy ychydig, mae mewn gwirionedd dau achos yma. 500 00:23:24,720 --> 00:23:28,060 Un yw lle y nod ar y ddechrau'r rhestr, sydd yn 501 00:23:28,060 --> 00:23:31,040 ychydig yn blino, oherwydd mae hynny'n achos arbennig, gan fod yn rhaid i chi ddelio 502 00:23:31,040 --> 00:23:33,340 gyda y peth hyn, a oedd yn yw'r unig anghysondeb. 503 00:23:33,340 --> 00:23:35,720 Ym mhob man arall yn y rhestr, 'i' yr un peth. 504 00:23:35,720 --> 00:23:38,050 Mae yna nod flaenorol a nesaf nod, nod blaenorol, nod nesaf. 505 00:23:38,050 --> 00:23:40,940 Ond mae hyn guy ychydig yn arbennig os ei fod ar y dechrau. 506 00:23:40,940 --> 00:23:48,710 >> Felly, os bydd y pwyntydd hafal i rhestr ei hun, felly os wyf ar ddechrau 507 00:23:48,710 --> 00:23:53,960 y rhestr ac yr wyf wedi dod o hyd n, mae angen imi i wneud un neu ddau o bethau. 508 00:23:53,960 --> 00:23:59,230 Un, mae angen i mi newid y rhestr i cyfeirio at y cae nesaf, 50. 509 00:23:59,230 --> 00:24:01,270 Felly, mae'n debyg fy mod yn ceisio i gael gwared ar 34. 510 00:24:01,270 --> 00:24:03,560 Felly, yn cael y boi i fynd i ffwrdd mewn dim ond hyn o bryd. 511 00:24:03,560 --> 00:24:07,210 >> Felly, yr wyf i'n mynd i ddweud, rhestr cael pwyntydd nesaf. 512 00:24:07,210 --> 00:24:08,570 Wel, mae hyn yn pwyntydd. 513 00:24:08,570 --> 00:24:10,360 Nesaf yn pwyntio dros yma. 514 00:24:10,360 --> 00:24:17,470 Felly, mae hyn yn newid saeth hawl hon nawr i dynnu sylw at y dyn yma. 515 00:24:17,470 --> 00:24:19,580 Yn awr, cofiwch, rydym wedi newidyn dros dro. 516 00:24:19,580 --> 00:24:23,520 Felly, nid ydym wedi amddifad unrhyw nodau, oherwydd fy mod hefyd yn cael y boi yn fy 517 00:24:23,520 --> 00:24:25,010 gweithredu'r dileu. 518 00:24:25,010 --> 00:24:29,600 Felly nawr, os nad rhestr ei hun yn null, Angen i mi at atgyweiria rhywbeth bach. 519 00:24:29,600 --> 00:24:32,690 >> Angen i mi nawr yn gwneud yn siŵr bod saeth hwn, sydd yn pwyntio yn flaenorol 520 00:24:32,690 --> 00:24:36,830 50-34, mae hyn wedi mynd i fynd i ffwrdd, oherwydd os Im 'yn ceisio i gael gwared 521 00:24:36,830 --> 00:24:41,910 o 34, roedd gan 50 well peidio cynnal unrhyw fath o ôl cyfeirio ato fel y 522 00:24:41,910 --> 00:24:42,820 Awgrymodd saeth. 523 00:24:42,820 --> 00:24:44,820 Felly, Fi jyst yn gwneud y llinell hon. 524 00:24:44,820 --> 00:24:46,520 Felly, yna dwi'n ei wneud. 525 00:24:46,520 --> 00:24:48,040 Yr achos hwnnw yw eithaf hawdd mewn gwirionedd. 526 00:24:48,040 --> 00:24:51,010 Torri oddi ar y pennaeth y rhestr yn gymharol syml. 527 00:24:51,010 --> 00:24:52,980 >> Yn anffodus, mae hyn yn bloc blino arall. 528 00:24:52,980 --> 00:24:56,170 Felly nawr, rhaid i mi ystyried yr achos lle mae rhywbeth yn y canol. 529 00:24:56,170 --> 00:24:59,880 Ond nid yw'n rhy ofnadwy, ac eithrio ar gyfer cystrawen fel hyn. 530 00:24:59,880 --> 00:25:03,080 Felly, os nad wyf ar ddechrau'r rhestr, Im 'rhywle yn y canol. 531 00:25:03,080 --> 00:25:08,160 Ac mae hyn yn llinell yma yn ei ddweud, dechrau ar ba bynnag nod byddwch chi yn. 532 00:25:08,160 --> 00:25:11,210 533 00:25:11,210 --> 00:25:18,550 Ewch i'r cae nesaf y nod flaenorol ac yn nodi hynny yn y pwyntydd. 534 00:25:18,550 --> 00:25:20,390 >> Gadewch i ni wneud hyn mewn lluniau. 535 00:25:20,390 --> 00:25:21,640 Yr oedd hynny'n mynd yn gymhleth. 536 00:25:21,640 --> 00:25:30,480 537 00:25:30,480 --> 00:25:37,990 Felly, os oes gennyf gaeau blaenorol yma - gadewch i ni wneud hyn - caeau nesaf yma. 538 00:25:37,990 --> 00:25:41,200 Rydw i'n mynd i symleiddio fy awgrymiadau yn hytrach na tynnu criw cyfan o 539 00:25:41,200 --> 00:25:45,710 pethau yn ôl ac ymlaen crisscrossing ei gilydd. 540 00:25:45,710 --> 00:25:50,870 Ac yn awr, gadewch i ni ddweud hyn yn unig yw 1, 2, 3 er mwyn trafod, hyd yn oed 541 00:25:50,870 --> 00:25:53,410 er nad yw'n llinell i fyny gyda y broblem dan sylw. 542 00:25:53,410 --> 00:25:55,900 >> Felly dyma fy rhestr gysylltiedig. 543 00:25:55,900 --> 00:25:59,300 Yr wyf yn ceisio cael gwared dau yn y fersiwn arbennig o'r stori. 544 00:25:59,300 --> 00:26:01,960 Felly, yr wyf wedi diweddaru pwyntydd i fod yn pwyntio at y boi. 545 00:26:01,960 --> 00:26:03,315 Felly mae hyn yn PTR. 546 00:26:03,315 --> 00:26:04,530 Mae'n pwyntio yma. 547 00:26:04,530 --> 00:26:07,170 Mae hyn yn y rhestr, sy'n bodoli yn fyd-eang fel o'r blaen. 548 00:26:07,170 --> 00:26:09,200 Ac mae'n pwyntio yma waeth beth. 549 00:26:09,200 --> 00:26:10,800 Ac yn awr, Im 'yn ceisio i gael gwared dau. 550 00:26:10,800 --> 00:26:13,850 >> Felly, os pwyntydd yn pwyntio yma, rwy'n mynd i ddilyn, mae'n debyg, y 551 00:26:13,850 --> 00:26:17,110 pwyntydd blaenorol, sy'n fy rhoi yn 1. 552 00:26:17,110 --> 00:26:22,290 Yna yr wyf i'n mynd i ddweud bod y nesaf maes, sy'n dod â mi drosodd i hyn 553 00:26:22,290 --> 00:26:25,410 blwch yma, yn mynd i pwyntydd gyfartal nesaf. 554 00:26:25,410 --> 00:26:28,400 Felly, os pwyntydd hwn, mae hyn yn nesaf. 555 00:26:28,400 --> 00:26:31,840 Mae hynny'n golygu bod hyn anghenion arrow i dynnu sylw at y boi. 556 00:26:31,840 --> 00:26:35,140 >> Felly beth yw'r llinell o god wedi dim ond wneud yw ychydig o hyn. 557 00:26:35,140 --> 00:26:37,500 Ac yn awr, mae hyn yn edrych fel gam yn y cyfeiriad cywir. 558 00:26:37,500 --> 00:26:41,390 Rydym yn y bôn yn awyddus i snip 2 allan y canol 1 a 3. 559 00:26:41,390 --> 00:26:44,400 Felly mae'n gwneud synnwyr ein bod am llwybr pwyntydd hwn o'i amgylch. 560 00:26:44,400 --> 00:26:50,400 Felly, mae hyn llinell nesaf yn gwirio os pwyntydd nesaf ddim yn null, mae 561 00:26:50,400 --> 00:26:54,200 yn wir rhywun i'r dde o 2, sy'n golygu ein bod rhaid i ni wneud hefyd 562 00:26:54,200 --> 00:26:55,850 ychydig snip yma. 563 00:26:55,850 --> 00:27:00,590 >> Felly mae angen i mi ddilyn pwyntydd hwn yn awr ac yn diweddaru'r pwyntydd blaenorol ar 564 00:27:00,590 --> 00:27:05,410 y boi i wneud ychydig bach o datrysiad dros dro yma y pwynt yma. 565 00:27:05,410 --> 00:27:07,100 Ac yn awr, yn weledol hon yn braf. 566 00:27:07,100 --> 00:27:11,930 Mae'n ychydig yn anniben yn bod yna nad oes neb yn pwyntio at y 2 anymore. 567 00:27:11,930 --> 00:27:13,600 2 yn pwyntio i'r chwith. 568 00:27:13,600 --> 00:27:14,980 A 2 yn pwyntio i'r dde. 569 00:27:14,980 --> 00:27:17,480 Ond gall ei wneud beth bynnag y mae am, oherwydd ei fod ar fin cael ei ryddhau. 570 00:27:17,480 --> 00:27:19,480 Ac nid dim ots pa gwerthoedd hynny yn anymore. 571 00:27:19,480 --> 00:27:23,040 >> Yr hyn sy'n bwysig yw bod y gweddill guys yn llwybro uwchben 572 00:27:23,040 --> 00:27:24,280 ac o dan ef nawr. 573 00:27:24,280 --> 00:27:25,810 Ac yn wir, dyna beth rydym yn ei wneud nesaf. 574 00:27:25,810 --> 00:27:29,360 Rydym pwyntydd rhad ac am ddim, sy'n golygu ein bod yn dweud wrth y system weithredu, mae croeso i chi 575 00:27:29,360 --> 00:27:30,906 i adennill hyn. 576 00:27:30,906 --> 00:27:34,900 Ac yna yn olaf, byddwn yn dychwelyd. 577 00:27:34,900 --> 00:27:37,220 Arall ymhlyg, os ydym Nid yw wedi dychwelyd eto, 578 00:27:37,220 --> 00:27:38,290 mae'n rhaid i ni gadw edrych. 579 00:27:38,290 --> 00:27:41,485 Felly pwyntydd yn dychwelyd pwyntydd nesaf yn unig yn golygu symud y boi yma. 580 00:27:41,485 --> 00:27:42,600 Symud y boi yma. 581 00:27:42,600 --> 00:27:45,400 Symud y boi yma os, mewn gwirionedd, ni wnaethom ddod o hyd i'r nifer 582 00:27:45,400 --> 00:27:46,960 rydym yn chwilio am hyd yn hyn. 583 00:27:46,960 --> 00:27:49,630 >> Felly dweud y gwir, mae'n edrych yn gyfan gwbl llethol, yr wyf yn meddwl, ar y dechrau 584 00:27:49,630 --> 00:27:52,180 yr olwg, yn enwedig os ydych yn ei chael yn anodd gyda hyn wedyn yn gweld yn ystod y cwis 585 00:27:52,180 --> 00:27:52,850 rhywbeth fel hyn. 586 00:27:52,850 --> 00:27:55,050 A ydych yn pat eich hun ar y cefn. 587 00:27:55,050 --> 00:27:57,080 Wel, does dim ffordd y gallwn gael dod o hyd i hwnnw ar y cwis. 588 00:27:57,080 --> 00:28:00,470 Ond byddwn yn dadlau, gallwch wneud hynny os byddwch yn torri i lawr i mewn i'r unigolyn 589 00:28:00,470 --> 00:28:04,400 achosion a dim ond cerdded drwyddo yn ofalus, er, rhaid cyfaddef, o dan 590 00:28:04,400 --> 00:28:06,300 amgylchiadau anodd. 591 00:28:06,300 --> 00:28:09,470 >> Diolch i'r drefn, mae'r darlun a wnaed popeth yn hapusach. 592 00:28:09,470 --> 00:28:11,050 Gallech dynnu hyn yn unrhyw nifer o ffyrdd. 593 00:28:11,050 --> 00:28:12,760 Nid oes rhaid i chi wneud y crisscrossing beth yma. 594 00:28:12,760 --> 00:28:14,520 Gallech wneud hynny gyda syth llinellau fel hyn. 595 00:28:14,520 --> 00:28:18,790 Ond mae'r hanfod y broblem hon, yn gyffredinol, oedd sylweddoli bod y 596 00:28:18,790 --> 00:28:22,060 Dylai llun yn y diwedd edrych ychydig yn rhywbeth fel hyn, oherwydd 597 00:28:22,060 --> 00:28:25,030 gysonyn amser yn awgrymu eich bod yn cadw jamio a jamio a jamio y 598 00:28:25,030 --> 00:28:29,900 nodau newydd ar ddechrau y rhestr. 599 00:28:29,900 --> 00:28:31,960 Unrhyw gwestiynau? 600 00:28:31,960 --> 00:28:34,565 Mae'n debyg mai'r mwyaf heriol yn sicr y cwestiynau codio. 601 00:28:34,565 --> 00:28:37,690 >> GYNULLEIDFA: Felly mae rhestr debyg i pen mewn enghreifftiau blaenorol. 602 00:28:37,690 --> 00:28:39,640 >> DAVID J. Malan: Yn union, yn union. 603 00:28:39,640 --> 00:28:43,130 Dim ond enw gwahanol ar gyfer newidyn byd-eang. 604 00:28:43,130 --> 00:28:44,380 Ledled y byd beth? 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 Felly, mae hyn yw'r un lle rydych yn roedd yn rhaid i ysgrifennu paragraff. 608 00:28:52,020 --> 00:28:56,060 Mae rhai pobl yn ysgrifennu traethodau gyfer y cwestiwn hwn. 609 00:28:56,060 --> 00:29:00,230 Ond dim ond angen i chi ddefnyddio'r rhain chwe thymor i ddisgrifio beth sy'n digwydd pan 610 00:29:00,230 --> 00:29:02,440 byddwch yn ceisio cysylltu â facebook.com. 611 00:29:02,440 --> 00:29:07,930 Felly, 'n annhymerus' jyst yn siarad drwy'r broses defnyddio'r holl dermau hyn. 612 00:29:07,930 --> 00:29:11,290 Felly, yn ein porwr, rydym deipio facebook.com a daro Chofnoda. 613 00:29:11,290 --> 00:29:17,280 Felly mae ein porwr yn mynd i adeiladu HTTP yn gofyn ei fod yn mynd i anfon 614 00:29:17,280 --> 00:29:22,220 drwy ryw broses i Facebook i Facebook er mwyn ymateb i ni gyda'r 615 00:29:22,220 --> 00:29:24,450 HTML ei dudalen. 616 00:29:24,450 --> 00:29:28,800 >> Felly beth yw'r broses y mae'r cais HTTP 617 00:29:28,800 --> 00:29:30,730 mewn gwirionedd yn cael i Facebook? 618 00:29:30,730 --> 00:29:32,790 Felly yn gyntaf, mae angen i ni gyfieithu Facebook.com. 619 00:29:32,790 --> 00:29:38,780 Felly dim ond rhoi enw Facebook.com, lle mewn gwirionedd yn gwneud y cais HTTP 620 00:29:38,780 --> 00:29:39,940 angen i chi fynd? 621 00:29:39,940 --> 00:29:44,120 Felly mae angen i gyfieithu Facebook.com i gyfeiriad IP, sy'n unigryw 622 00:29:44,120 --> 00:29:47,620 nodi'r hyn peiriant rydym yn ei am anfon y cais hwn i. 623 00:29:47,620 --> 00:29:49,310 Mae gan eich gliniadur gyfeiriad IP. 624 00:29:49,310 --> 00:29:52,240 Unrhyw beth yn ymwneud â'r rhyngrwyd Mae cyfeiriad IP. 625 00:29:52,240 --> 00:29:59,030 >> Felly DNS, Enw Parth System, hynny yw beth sy'n mynd i drin y cyfieithiad 626 00:29:59,030 --> 00:30:03,750 o facebook.com i gyfeiriad IP y chi mewn gwirionedd yn awyddus i gysylltu â hwy. 627 00:30:03,750 --> 00:30:08,075 Felly, byddwn yn cysylltu â'r gweinyddwyr DNS a dweud, beth yw facebook.com? 628 00:30:08,075 --> 00:30:16,560 Mae'n dweud, oh, mae'n gyfeiriad IP 190.212 rhywbeth, rhywbeth, rhywbeth. 629 00:30:16,560 --> 00:30:16,900 Mae pob hawl. 630 00:30:16,900 --> 00:30:18,850 Nawr, rwy'n gwybod pa peiriant Yr wyf am i gysylltu â hwy. 631 00:30:18,850 --> 00:30:22,360 >> Felly, yna rydych yn anfon eich cais HTTP draw at y peiriant. 632 00:30:22,360 --> 00:30:24,140 Felly, sut mae'n cyrraedd y peiriant? 633 00:30:24,140 --> 00:30:27,200 Wel, mae'r cais yn mynd o llwybrydd i bownsio llwybrydd. 634 00:30:27,200 --> 00:30:32,630 Cofiwch yr enghraifft yn y dosbarth, lle rydym mewn gwirionedd yn gweld y llwybr y mae'r 635 00:30:32,630 --> 00:30:35,340 Cymerodd pecynnau pan fyddwn yn ceisio i gyfathrebu. 636 00:30:35,340 --> 00:30:38,460 Rydym yn ei weld yn neidio dros yr Iwerydd Ocean ar un adeg neu beth bynnag. 637 00:30:38,460 --> 00:30:42,820 >> Felly mae'r porthladd tymor diwethaf. 638 00:30:42,820 --> 00:30:46,520 Felly, mae hyn yn awr ar eich cyfrifiadur. 639 00:30:46,520 --> 00:30:49,970 Gallwch gael pethau lluosog ar hyn o bryd cyfathrebu â'r rhyngrwyd. 640 00:30:49,970 --> 00:30:53,730 Felly, gallaf fod yn rhedeg, dyweder, Skype. 641 00:30:53,730 --> 00:30:55,670 Efallai fy mod yn cael borwr gwe agored. 642 00:30:55,670 --> 00:30:59,010 Efallai fy mod wedi rhywbeth y torrenting ffeiliau. 643 00:30:59,010 --> 00:31:00,880 Felly yr holl bethau hyn yn cyfathrebu â'r 644 00:31:00,880 --> 00:31:02,600 rhyngrwyd mewn rhyw ffordd. 645 00:31:02,600 --> 00:31:08,070 >> Felly, pan fydd eich cyfrifiadur yn cael rhywfaint o ddata oddi ar y rhyngrwyd, sut mae'n 646 00:31:08,070 --> 00:31:10,130 gwybod pa cais mewn gwirionedd am i'r data? 647 00:31:10,130 --> 00:31:12,610 Sut mae'n gwybod a yw hyn yn benodol data yn cael ei golygu ar gyfer y 648 00:31:12,610 --> 00:31:16,070 torrenting cais yn hytrach na i'r porwr gwe? 649 00:31:16,070 --> 00:31:20,980 Felly, mae hyn yw pwrpas porthladdoedd yn y bob un o'r ceisiadau hyn 650 00:31:20,980 --> 00:31:22,720 hawlio porthladd ar eich cyfrifiadur. 651 00:31:22,720 --> 00:31:27,580 Felly eich porwr gwe yn dweud, hey, Dw i'n gwrando ar borth 1000. 652 00:31:27,580 --> 00:31:32,240 Ac yn eich rhaglen torrenting yn ei ddweud, Dw i'n gwrando ar borth 3000. 653 00:31:32,240 --> 00:31:34,770 Ac Skype yn dweud, rwy'n ei ddefnyddio porthladd 4000. 654 00:31:34,770 --> 00:31:41,950 >> Felly, pan fyddwch yn cael rhywfaint o ddata sy'n perthyn i un o'r ceisiadau hyn, y data 655 00:31:41,950 --> 00:31:45,510 ei farcio â hwy porthladd mewn gwirionedd Dylid anfon draw i. 656 00:31:45,510 --> 00:31:47,950 Felly, mae hyn yn dweud, oh, yr wyf yn perthyn i borthladd 1000. 657 00:31:47,950 --> 00:31:50,950 Yr wyf yn gwybod, yna mae angen i mi anfon hwn draw i fy porwr gwe. 658 00:31:50,950 --> 00:31:56,440 Felly, y rheswm ei fod yn berthnasol yma yw bod gweinyddwyr gwe yn tueddu i 659 00:31:56,440 --> 00:31:58,240 gwrando ar borth 80. 660 00:31:58,240 --> 00:32:02,420 Felly, pan fyddaf yn cysylltu â Facebook.com, rwy'n cyfathrebu gyda rhywfaint o peiriant. 661 00:32:02,420 --> 00:32:06,390 Ond mae angen i mi ddweud pa borthladd o hynny peiriant Rwyf am i gyfathrebu â nhw. 662 00:32:06,390 --> 00:32:09,160 A gweinyddwyr gwe yn tueddu i fod gwrando ar borth 80. 663 00:32:09,160 --> 00:32:14,010 >> Os ydynt yn dymuno, gallent osod i fyny felly mae'n rhestru fel ar borth 7000. 664 00:32:14,010 --> 00:32:19,090 Ac yna mewn porwr gwe, gallwn llaw deipio Facebook.com: 7000 i 665 00:32:19,090 --> 00:32:24,600 anfon y cais i borthladd 7000 o Facebook yn weinydd y we. 666 00:32:24,600 --> 00:32:26,820 >> DAVID J. Malan: Ac yn yr achos hwn, hyd yn oed er nad oeddem yn ei gwneud yn ofynnol bod pobl 667 00:32:26,820 --> 00:32:30,000 sôn am hyn, yn yr achos hwn, pa borthladd byddai'r cais mewn gwirionedd yn mynd i? 668 00:32:30,000 --> 00:32:36,630 669 00:32:36,630 --> 00:32:37,880 Ceisiwch eto. 670 00:32:37,880 --> 00:32:42,810 671 00:32:42,810 --> 00:32:44,300 Yn union. 672 00:32:44,300 --> 00:32:47,960 Nad ydynt yn chwilio am hynny, ond mae cynildeb bod yno serch diwethaf. 673 00:32:47,960 --> 00:32:51,770 >> ROB BOWDEN: Felly, y HTTPS, gan ei fod yn gwrando yn benodol ar gyfer y 674 00:32:51,770 --> 00:32:55,180 amgryptio, mae'n ar borth 4430. 675 00:32:55,180 --> 00:32:57,680 >> GYNULLEIDFA: A negeseuon e-bost yn 25 oed, dde? 676 00:32:57,680 --> 00:33:00,670 >> DAVID J. Malan: Allan negeseuon e-bost, 25, yep. 677 00:33:00,670 --> 00:33:03,760 >> ROB BOWDEN: Nid wyf yn hyd yn oed yn gwybod y rhan fwyaf o y - pob un o'r rhai sydd â'r lleiaf yn tueddu i fod 678 00:33:03,760 --> 00:33:06,310 neilltuo ar gyfer pethau. 679 00:33:06,310 --> 00:33:09,260 Rwy'n credu popeth o dan 1024 wedi'i gadw. 680 00:33:09,260 --> 00:33:13,450 >> GYNULLEIDFA: Pam wnaethoch chi ei ddweud 3 oedd y rhif anghywir? 681 00:33:13,450 --> 00:33:18,820 >> ROB BOWDEN: Oherwydd yn gyfeiriad IP, mae pedwar grwpiau o ddigidau. 682 00:33:18,820 --> 00:33:21,090 Ac maen nhw'n 0-255. 683 00:33:21,090 --> 00:33:28,060 Felly 192.168.2.1 yn gyffredin gyfeiriad IP rhwydwaith lleol. 684 00:33:28,060 --> 00:33:30,840 Sylwch pawb yn llai na 255. 685 00:33:30,840 --> 00:33:33,570 Felly, pan fyddaf yn dechrau gyda 300, bod Ni allai o bosibl gael 686 00:33:33,570 --> 00:33:35,210 bod yn un o'r rhifau. 687 00:33:35,210 --> 00:33:38,170 >> DAVID J. Malan: Ond y clip gwirion o - oedd DPC, lle'r oedd ganddynt 688 00:33:38,170 --> 00:33:39,970 nifer a oedd yn rhy fawr ar gyfer y cyfeiriad IP. 689 00:33:39,970 --> 00:33:42,940 690 00:33:42,940 --> 00:33:46,110 >> ROB BOWDEN: Unrhyw gwestiynau am hyn? 691 00:33:46,110 --> 00:33:51,710 Yr un nesaf, newid mor gyflawn yn pwnc, ond mae gennym amrywiaeth hwn PHP ar gyfer 692 00:33:51,710 --> 00:33:53,270 y tai yn y cwad. 693 00:33:53,270 --> 00:33:56,360 Ac mae gennym restr di-drefn. 694 00:33:56,360 --> 00:33:59,550 Ac rydym am i argraffu pob eitem rhestr dim ond yn cynnwys enw'r tŷ. 695 00:33:59,550 --> 00:34:09,090 696 00:34:09,090 --> 00:34:11,870 Felly mae gennym dolen foreach. 697 00:34:11,870 --> 00:34:17,540 Felly cofiwch, mae'r gystrawen yn foreach amrywiaeth fel eitem yn y casgliad. 698 00:34:17,540 --> 00:34:22,360 Felly, drwy bob fersiwn y ddolen, tŷ yn mynd i gymryd ar un o'r 699 00:34:22,360 --> 00:34:24,060 gwerthoedd y tu mewn y rhesi. 700 00:34:24,060 --> 00:34:26,530 >> Ar y iteriad cyntaf, tŷ fydd Cabot House. 701 00:34:26,530 --> 00:34:30,370 Ar iteriad ail, tŷ yn fod Courier House ac yn y blaen. 702 00:34:30,370 --> 00:34:34,370 Felly, ar gyfer pob quad fel y ty, rydym yn jyst yn mynd i argraffu - 703 00:34:34,370 --> 00:34:37,250 byddwch hefyd fod wedi adleisio - 704 00:34:37,250 --> 00:34:42,199 yr eitem y rhestr ac yna enw'r tŷ ac yna cau'r eitem rhestr. 705 00:34:42,199 --> 00:34:45,210 Mae'r braces cyrliog yn ddewisol yma. 706 00:34:45,210 --> 00:34:49,480 >> Ac yna rydym hefyd yn dweud yn y cwestiwn ei hun, cofiwch gau'r 707 00:34:49,480 --> 00:34:50,770 tag rhestr di-drefn. 708 00:34:50,770 --> 00:34:53,949 Felly mae angen i adael modd PHP er mwyn gwneud hyn. 709 00:34:53,949 --> 00:35:00,280 Neu gallem fod wedi adleisio cau tag rhestr di-drefn. 710 00:35:00,280 --> 00:35:02,380 >> DAVID J. Malan: Hefyd iawn yma byddai wedi bod yn defnyddio hen ysgol ar gyfer 711 00:35:02,380 --> 00:35:07,340 dolen gyda $ i = 0 0 a defnyddio cyfrif i chyfrif i maes hyd y pelydr. 712 00:35:07,340 --> 00:35:09,240 Hollol iawn hefyd, dim ond ychydig o wordier. 713 00:35:09,240 --> 00:35:12,170 714 00:35:12,170 --> 00:35:14,742 >> GYNULLEIDFA: Felly, os ydych yn mynd i [Anghlywadwy], fyddech chi'n ei wneud - 715 00:35:14,742 --> 00:35:16,734 Yr wyf yn anghofio beth y ddolen [Anghlywadwy] yn. 716 00:35:16,734 --> 00:35:21,380 A fyddech yn $ braced cwad i? 717 00:35:21,380 --> 00:35:21,850 >> DAVID J. Malan: Yn union. 718 00:35:21,850 --> 00:35:23,100 Yeah, yn union. 719 00:35:23,100 --> 00:35:26,650 720 00:35:26,650 --> 00:35:27,900 >> ROB BOWDEN: Unrhyw beth arall? 721 00:35:27,900 --> 00:35:31,350 722 00:35:31,350 --> 00:35:32,010 >> DAVID J. Malan: Pob hawl. 723 00:35:32,010 --> 00:35:32,300 Masnach-offs. 724 00:35:32,300 --> 00:35:38,290 Felly roedd tusw o atebion posibl ar gyfer pob un o'r rhain. 725 00:35:38,290 --> 00:35:40,510 Roeddem yn wir yn unig yn chwilio am rhywbeth gymhellol ar gyfer upside a 726 00:35:40,510 --> 00:35:41,100 anfantais. 727 00:35:41,100 --> 00:35:44,830 A rhif 16 Gofynnodd, dilysu defnyddwyr ar ochr cleientiaid mewnbwn, fel gyda JavaScript, 728 00:35:44,830 --> 00:35:47,280 yn hytrach na-ochr y gweinydd, fel gyda PHP. 729 00:35:47,280 --> 00:35:49,450 Felly beth yn upside o wneud ar ochr cleientiaid? 730 00:35:49,450 --> 00:35:53,780 >> Wel, un o'r pethau yr ydym arfaethedig yn eich bod yn lleihau latency, oherwydd eich bod 731 00:35:53,780 --> 00:35:56,750 Nid oes rhaid i drafferthu cysylltu â'r Efallai y gweinydd, sy'n cymryd ychydig 732 00:35:56,750 --> 00:36:00,390 milieiliadau neu hyd yn oed ychydig o eiliadau drwy osgoi hynny, a dim ond 733 00:36:00,390 --> 00:36:04,670 dilysu mewnbwn ar ochr cleientiaid defnyddwyr gan sbarduno trafodwr ar-gyflwyno a 734 00:36:04,670 --> 00:36:06,650 dim ond gwirio, wnaethon nhw deipio rhywbeth i mewn am enw? 735 00:36:06,650 --> 00:36:08,080 A oeddent yn teipio rhywbeth mewn ar gyfer cyfeiriad e-bost? 736 00:36:08,080 --> 00:36:10,950 Oedden nhw'n dewis dorm gan ddewislen i lawr? 737 00:36:10,950 --> 00:36:14,360 >> Gallwch roi adborth iddynt ar y pryd ddefnyddio'r cyfrifiadur gigahertz 738 00:36:14,360 --> 00:36:16,770 neu beth bynnag y maent wedi bod yn mewn gwirionedd ar eu desg. 739 00:36:16,770 --> 00:36:19,310 Felly, dim ond yn well defnyddiwr profi fel arfer. 740 00:36:19,310 --> 00:36:24,460 Ond mae anfantais o wneud ar ochr cleientiaid dilysu, os ydych yn ei wneud heb hefyd 741 00:36:24,460 --> 00:36:29,860 gwneud dilysu ochr y gweinydd yw bod y rhan fwyaf o unrhyw un sy'n dod allan o CS50 yn gwybod 742 00:36:29,860 --> 00:36:33,980 y gallwch anfon unrhyw ddata rydych am i weinydd unrhyw nifer o ffyrdd. 743 00:36:33,980 --> 00:36:37,030 A dweud y gwir, yn y rhan fwyaf o unrhyw borwr, gallwch cliciwch o gwmpas yn y lleoliadau a dim ond 744 00:36:37,030 --> 00:36:40,110 trowch oddi ar JavaScript, a fyddai, Felly, analluogi unrhyw fath o 745 00:36:40,110 --> 00:36:41,080 dilysu. 746 00:36:41,080 --> 00:36:44,460 >> Ond rydych hefyd a allai cofio bod hyd yn oed i mi oedd rhai pethau dirgel yn y dosbarth gan ddefnyddio 747 00:36:44,460 --> 00:36:47,790 telnet ac mewn gwirionedd yn esgus bod fod yn porwr drwy anfon get 748 00:36:47,790 --> 00:36:49,240 ceisiadau i weinydd. 749 00:36:49,240 --> 00:36:51,030 A dyna yn sicr nid ddefnyddio unrhyw JavaScript. 750 00:36:51,030 --> 00:36:53,290 Dyna dim ond fi teipio gorchmynion mewn bysellfwrdd. 751 00:36:53,290 --> 00:36:57,410 Felly mewn gwirionedd, unrhyw rhaglennydd fewn digon cysur â'r we a HTTP 752 00:36:57,410 --> 00:37:01,690 Gallai anfon pa bynnag ddata ef neu hi eisiau i weinydd heb dilysu. 753 00:37:01,690 --> 00:37:05,470 Ac os nad yw eich gweinydd yn hefyd yn gwirio, oeddent yn rhoi enw i mi, yw 754 00:37:05,470 --> 00:37:08,930 mae hyn mewn gwirionedd yn gyfeiriad e-bost dilys, a wnaeth yn dewis dorm, efallai y byddwch yn dod i ben 755 00:37:08,930 --> 00:37:12,800 i fyny mewnosod ffug neu dim ond data yn wag i mewn i'ch cronfa ddata, a oedd yn ôl pob tebyg 756 00:37:12,800 --> 00:37:15,450 nid yw'n mynd i fod yn beth da os oeddech yn tybio ei fod yn yno. 757 00:37:15,450 --> 00:37:16,770 >> Felly, mae hyn yn realiti blino. 758 00:37:16,770 --> 00:37:19,890 Ond yn, ar ochr cleientiaid cyffredinol dilysu yn wych. 759 00:37:19,890 --> 00:37:21,810 Ond mae'n golygu dwywaith cymaint o waith. 760 00:37:21,810 --> 00:37:25,970 Er bod yn bodoli amrywiol llyfrgelloedd, llyfrgelloedd JavaScript ar gyfer 761 00:37:25,970 --> 00:37:28,830 enghraifft, bod gwneud hyn yn llawer, llawer llai o gur pen. 762 00:37:28,830 --> 00:37:31,940 A gallwch ailddefnyddio rhai y cod ochr y gweinydd, ar ochr cleientiaid. 763 00:37:31,940 --> 00:37:35,980 Ond yn sylweddoli ei fod yn nodweddiadol gwaith ychwanegol. 764 00:37:35,980 --> 00:37:36,415 Yeah. 765 00:37:36,415 --> 00:37:37,792 >> GYNULLEIDFA: Felly, os ydym yn unig Dywedodd llai diogel - 766 00:37:37,792 --> 00:37:39,205 >> DAVID J. Malan: [Chwerthin] 767 00:37:39,205 --> 00:37:39,680 Ych. 768 00:37:39,680 --> 00:37:43,105 Dyna'r bob amser yn fwy anodd rhai i feirniadu. 769 00:37:43,105 --> 00:37:44,480 >> ROB BOWDEN: Byddai hynny'n wedi cael eu derbyn. 770 00:37:44,480 --> 00:37:44,810 >> DAVID J. Malan: Beth? 771 00:37:44,810 --> 00:37:45,810 >> ROB BOWDEN: yr wyf yn creu y broblem hon. 772 00:37:45,810 --> 00:37:46,735 Byddai hynny wedi cael eu derbyn. 773 00:37:46,735 --> 00:37:47,220 >> DAVID J. Malan: Yeah. 774 00:37:47,220 --> 00:37:47,830 >> GYNULLEIDFA: Cool. 775 00:37:47,830 --> 00:37:51,770 >> ROB BOWDEN: Ond nid ydym yn derbyn am yr un cyntaf - 776 00:37:51,770 --> 00:37:53,630 yn dda, yr hyn yr ydym yn chwilio amdano yw Nid oes rhaid rhywbeth fel chi i 777 00:37:53,630 --> 00:37:55,270 gyfathrebu gyda'r gweinydd. 778 00:37:55,270 --> 00:37:58,355 Nid ydym yn derbyn dim ond yn gyflymach. 779 00:37:58,355 --> 00:38:00,080 >> GYNULLEIDFA: Beth am nid ydynt yn ail-lwytho'r dudalen? 780 00:38:00,080 --> 00:38:00,430 >> ROB BOWDEN: Ydw. 781 00:38:00,430 --> 00:38:03,000 Yr oedd hwnnw'n ateb derbyn. 782 00:38:03,000 --> 00:38:06,300 >> DAVID J. Malan: Unrhyw beth lle rydym yn teimlo ei fod yn fwy tebygol na pheidio yn debygol 783 00:38:06,300 --> 00:38:09,780 eich bod yn gwybod yr hyn yr ydych yn gan ddywedyd, sy'n anodd 784 00:38:09,780 --> 00:38:13,500 lein i dynnu weithiau. 785 00:38:13,500 --> 00:38:16,000 Gan ddefnyddio rhestr gysylltiedig yn lle hynny o fyrdd i gynnal 786 00:38:16,000 --> 00:38:17,590 rhestr o gyfanrifau didoli. 787 00:38:17,590 --> 00:38:21,000 Felly mae upside rydym yn aml yn dyfynnu gyda cysylltiedig rhestrau y cymell eu cyfan 788 00:38:21,000 --> 00:38:22,370 cyflwyniad oedd chi gael egni. 789 00:38:22,370 --> 00:38:23,030 Gallant dyfu. 790 00:38:23,030 --> 00:38:23,950 Maent yn gallu crebachu. 791 00:38:23,950 --> 00:38:27,370 Felly nid oes rhaid i chi neidio drwy gylchoedd i mewn gwirionedd yn creu mwy o gof 792 00:38:27,370 --> 00:38:28,140 gydag amrywiaeth. 793 00:38:28,140 --> 00:38:30,310 Neu nid oes rhaid i chi yn unig dweud, mae'n ddrwg gennyf, y defnyddiwr. 794 00:38:30,310 --> 00:38:31,410 Mae'r amrywiaeth yn cael ei lenwi. 795 00:38:31,410 --> 00:38:35,850 Twf Felly deinamig y rhestr. 796 00:38:35,850 --> 00:38:37,210 Mae anfantais er ei fod o restrau cysylltiedig? 797 00:38:37,210 --> 00:38:40,916 798 00:38:40,916 --> 00:38:43,356 >> GYNULLEIDFA: Mae'n LandLine llinol. 799 00:38:43,356 --> 00:38:45,800 Chwilio ar rhestr gysylltiedig yn llinol yn hytrach na'r hyn y byddwch yn mewngofnodi i mewn 800 00:38:45,800 --> 00:38:46,360 >> DAVID J. Malan: Yn union. 801 00:38:46,360 --> 00:38:50,160 Chwilio ar restr cysylltiedig yn llinol, hyd yn oed os caiff ei datrys, oherwydd eich bod yn gallu 802 00:38:50,160 --> 00:38:53,170 Dim ond yn dilyn briwsion bara hyn, mae'r rhain yn awgrymiadau, o ddechrau'r y rhestr 803 00:38:53,170 --> 00:38:53,570 hyd y diwedd. 804 00:38:53,570 --> 00:38:57,970 Ni allwch trosoledd mynediad ar hap ac, felly, chwilio deuaidd, hyd yn oed os yw'n 805 00:38:57,970 --> 00:39:00,740 didoli, y gallech ei wneud gydag amrywiaeth. 806 00:39:00,740 --> 00:39:02,390 Ac mae hefyd cost arall. 807 00:39:02,390 --> 00:39:02,966 Yeah. 808 00:39:02,966 --> 00:39:03,800 >> GYNULLEIDFA: Cof aneffeithlon? 809 00:39:03,800 --> 00:39:04,130 >> DAVID J. Malan: Yeah. 810 00:39:04,130 --> 00:39:06,940 Wel, ni fyddwn o reidrwydd yn dweud yn aneffeithlon. 811 00:39:06,940 --> 00:39:10,110 Ond mae'n costio mwy cof i chi, oherwydd eich bod angen 32 darnau ar gyfer pob 812 00:39:10,110 --> 00:39:13,400 nod ar gyfer y pwyntydd ychwanegol, yn leiaf am rhestr gysylltiedig yn unigol. 813 00:39:13,400 --> 00:39:16,660 Yn awr, os ydych yn unig yn storio cyfanrifau a eich bod yn ychwanegu'r pwyntydd, dyna 814 00:39:16,660 --> 00:39:17,830 mewn gwirionedd yn fath o heb fod yn ddibwys. 815 00:39:17,830 --> 00:39:19,340 Mae'n dyblu faint o gof. 816 00:39:19,340 --> 00:39:22,330 Ond mewn gwirionedd, os ydych yn storio rhestr gysylltiedig o structs a allai gael 817 00:39:22,330 --> 00:39:25,540 8 bytes, 16 bytes, hyd yn oed yn fwy na hynny, efallai ei bod yn llai 818 00:39:25,540 --> 00:39:26,500 o gost ymylol. 819 00:39:26,500 --> 00:39:28,320 Ond mae'n gost serch hynny. 820 00:39:28,320 --> 00:39:31,880 Felly, byddai unrhyw un o'r rhai i wedi bod yn iawn fel anfanteision. 821 00:39:31,880 --> 00:39:32,110 >> 18. 822 00:39:32,110 --> 00:39:36,100 Gan ddefnyddio PHP yn hytrach na C i ysgrifennu rhaglen gorchymyn-lein. 823 00:39:36,100 --> 00:39:41,890 Felly dyma, mae'n aml yn gyflymach i ddefnyddio iaith fel PHP neu Ruby neu Python. 824 00:39:41,890 --> 00:39:43,700 Rydych yn unig yn agor yn gyflym i fyny golygydd testun. 825 00:39:43,700 --> 00:39:45,900 Mae gennych lawer mwy o swyddogaethau ar gael i chi. 826 00:39:45,900 --> 00:39:49,325 PHP Mae gan sinc y gegin o swyddogaethau, tra yn C, yr ydych yn 827 00:39:49,325 --> 00:39:50,420 cael iawn, ychydig iawn. 828 00:39:50,420 --> 00:39:53,820 Yn wir, guys y gwybod y ffordd galed nad oes gennych tablau hash. 829 00:39:53,820 --> 00:39:55,000 Nid ydych yn wedi cysylltu rhestrau. 830 00:39:55,000 --> 00:39:57,470 Os ydych chi am hynny, rhaid i chi gweithredu eich hun. 831 00:39:57,470 --> 00:40:00,950 >> Felly, un peth gorau am PHP neu, mewn gwirionedd unrhyw iaith dehongli yw'r mor gyflym 832 00:40:00,950 --> 00:40:02,920 gallwch ysgrifennu cod â hi. 833 00:40:02,920 --> 00:40:06,660 Ond mae ochr negyddol, rydym yn gweld hyn pan fyddaf yn chwipio yn gyflym i fyny misspeller 834 00:40:06,660 --> 00:40:11,780 gweithredu yn y ddarlith gan ddefnyddio PHP, yn bod defnyddio iaith dehongli 835 00:40:11,780 --> 00:40:13,570 fel arfer yn arafach. 836 00:40:13,570 --> 00:40:18,420 A gwelsom hynny amlwg gyda cynnydd mewn amser o 0.3 eiliad i 3 837 00:40:18,420 --> 00:40:24,440 eiliad, oherwydd y dehongliad hynny'n digwydd mewn gwirionedd. 838 00:40:24,440 --> 00:40:27,060 >> Upside arall oedd bod chi Nid oes rhaid i lunio. 839 00:40:27,060 --> 00:40:30,130 Felly, mae hefyd yn cyflymu'r datblygiad gyda llaw, oherwydd nad oes gennych 840 00:40:30,130 --> 00:40:31,360 dau gam i redeg rhaglen. 841 00:40:31,360 --> 00:40:32,140 Os oes gen ti un. 842 00:40:32,140 --> 00:40:35,260 Ac felly dyna 'n bert cymhellol yn ogystal. 843 00:40:35,260 --> 00:40:38,450 Gan ddefnyddio cronfa ddata SQL yn hytrach na ffeil CSV i storio data. 844 00:40:38,450 --> 00:40:40,230 Cronfa ddata Felly SQL yn cael ei ddefnyddio ar gyfer pset7. 845 00:40:40,230 --> 00:40:42,060 Ffeiliau CSV nad ydych yn defnyddio llawer. 846 00:40:42,060 --> 00:40:45,960 Ond a ydych yn ei ddefnyddio yn anuniongyrchol yn pset7 fel yn dda trwy siarad â Yahoo Cyllid. 847 00:40:45,960 --> 00:40:49,330 >> Ond mae CSV yn union fel ffeil Excel, ond super syml, lle mae'r colofnau yn 848 00:40:49,330 --> 00:40:54,010 dim ond demarked gan atalnodau tu mewn o ffeil testun fel arall. 849 00:40:54,010 --> 00:40:56,740 A defnyddio cronfa ddata SQL yn ychydig yn fwy cymhellol. 850 00:40:56,740 --> 00:41:00,060 Mae'n upside, oherwydd eich bod yn cael pethau'n fel yn dewis ac yn mewnosod a dileu. 851 00:41:00,060 --> 00:41:03,790 A byddwch yn cael, yn ôl pob tebyg, mynegeion y MySQL a chronfeydd data eraill, fel 852 00:41:03,790 --> 00:41:07,510 Oracle, yn adeiladu ar eich cyfer yn y cof, a oedd yn golygu bod eich dewis yn ôl pob tebyg nid 853 00:41:07,510 --> 00:41:09,000 mynd i fod yn top llinellol i'r gwaelod. 854 00:41:09,000 --> 00:41:11,300 Mae'n mewn gwirionedd yn mynd i fod yn rhywbeth fel chwiliad deuaidd neu rywbeth 855 00:41:11,300 --> 00:41:12,520 debyg o ran ysbryd. 856 00:41:12,520 --> 00:41:13,930 Felly, maent yn gyffredinol yn gyflymach. 857 00:41:13,930 --> 00:41:16,040 >> Ond anfantais yw y 'i' jyst mwy o waith. 858 00:41:16,040 --> 00:41:16,730 Mae'n fwy o ymdrech. 859 00:41:16,730 --> 00:41:18,140 Mae'n rhaid i chi ddeall cronfeydd data. 860 00:41:18,140 --> 00:41:18,940 Rhaid i chi osod i fyny. 861 00:41:18,940 --> 00:41:20,840 Mae angen i chi gweinydd i redeg y gronfa ddata ar. 862 00:41:20,840 --> 00:41:22,750 Mae angen i chi ddeall sut i ffurfweddu. 863 00:41:22,750 --> 00:41:24,930 Felly mae'r rhain yn unig y rhain math o fasnach-offs. 864 00:41:24,930 --> 00:41:27,860 Tra bod ffeil CSV, gallwch greu gyda gedit. 865 00:41:27,860 --> 00:41:28,770 Ac rydych yn dda i fynd. 866 00:41:28,770 --> 00:41:31,550 Does dim cymhlethdod y tu hwnt i hynny. 867 00:41:31,550 --> 00:41:34,870 >> Gan ddefnyddio trie yn hytrach na tabl hash gyda gadwyno ar wahân i storio 868 00:41:34,870 --> 00:41:37,490 Geiriadur o eiriau sy'n atgoffa rhywun o pset5. 869 00:41:37,490 --> 00:41:42,480 Felly yn ceisio upside, mewn theori o leiaf, yw beth? 870 00:41:42,480 --> 00:41:46,380 Gysonyn amser, o leiaf os ydych yn stwnsio ar bob un o'r unigolyn 871 00:41:46,380 --> 00:41:48,990 llythrennau mewn gair, fel chi ei gael ar gyfer pset5. 872 00:41:48,990 --> 00:41:52,720 Gallai hynny fod pum hashes, chwech hashes os oes pump neu chwe 873 00:41:52,720 --> 00:41:53,900 llythyrau yn y gair. 874 00:41:53,900 --> 00:41:54,580 A dyna 'n bert da. 875 00:41:54,580 --> 00:41:56,910 Ac os oes uchaf yn rhwymo ar sut hir y gallai eich geiriau fod, dyna 876 00:41:56,910 --> 00:41:59,320 amser yn wir asymptotically gyson. 877 00:41:59,320 --> 00:42:05,180 >> Tra tabl hash â ar wahân gadwyno, y broblem yno gyda hynny 878 00:42:05,180 --> 00:42:09,070 fath o strwythur data yw bod y perfformiad eich algorithmau fel arfer 879 00:42:09,070 --> 00:42:12,700 yn dibynnu ar nifer o bethau eisoes yn y strwythur data. 880 00:42:12,700 --> 00:42:15,660 A dyna yn bendant yn achos cadwyni, lle mae'r mwy o bethau i chi roi 881 00:42:15,660 --> 00:42:18,800 mewn tabl hash, yr hiraf y rhai cadwyni fynd, sy'n golygu yn y gwaethaf 882 00:42:18,800 --> 00:42:21,960 achos, y peth efallai y byddwch yn chwilio am yn yr holl ffordd ar ddiwedd un 883 00:42:21,960 --> 00:42:26,000 o gadwyni hynny, sy'n effeithiol datganoli i fod yn rhywbeth llinol. 884 00:42:26,000 --> 00:42:29,450 >> Yn awr, yn ymarferol, gallai gwbl yn wir fod tabl hash gyda 885 00:42:29,450 --> 00:42:32,820 cadwyni yn gyflymach na cyfatebol gweithredu trie. 886 00:42:32,820 --> 00:42:35,570 Ond mae hynny'n am wahanol resymau, ymhlith sy'n cael eu ceisiau yn defnyddio llawer gyfan o 887 00:42:35,570 --> 00:42:39,240 cof y gall, mewn gwirionedd, pethau araf i lawr, oherwydd nad ydych yn cael 'n glws 888 00:42:39,240 --> 00:42:42,410 manteision rhywbeth o'r enw caching, lle mae pethau sy'n agos at ei gilydd 889 00:42:42,410 --> 00:42:45,420 Gellir gweld er cof aml yn fwy cyflym. 890 00:42:45,420 --> 00:42:48,180 Ac weithiau gallwch ddod o hyd i swyddogaeth hash dda iawn. 891 00:42:48,180 --> 00:42:51,060 Hyd yn oed os oes rhaid i wastraff ychydig o cof, efallai y byddwch, yn wir, yn gallu 892 00:42:51,060 --> 00:42:54,430 dod o hyd i bethau yn gyflym ac nid mor ddrwg ag llinol. 893 00:42:54,430 --> 00:42:58,410 >> Felly, yn fyr, nid oedd o reidrwydd yn gydag unrhyw un o'r un neu hyd yn oed ddau 894 00:42:58,410 --> 00:43:00,050 pethau penodol yr oeddem yn chwilio amdano. 895 00:43:00,050 --> 00:43:03,080 Really unrhyw beth perswadiol fel upside ac anfantais 896 00:43:03,080 --> 00:43:04,800 dal ein llygaid yn gyffredinol. 897 00:43:04,800 --> 00:43:11,840 >> ROB BOWDEN: Felly, ar gyfer y upside, fe wnaethom yn derbyn ar ei ben ei hun "cyflymach." Rydych yn 898 00:43:11,840 --> 00:43:14,540 roedd yn rhaid i ddweud rhywbeth am y peth. 899 00:43:14,540 --> 00:43:17,910 Hyd yn oed os ydych yn dweud yn ddamcaniaethol yn gyflymach, rydym yn gwybod eich bod yn fath o deall 900 00:43:17,910 --> 00:43:19,470 ei fod yn 0 o 1. 901 00:43:19,470 --> 00:43:22,820 A bwrdd hash, mewn theori, Nid yw 0 o 1. 902 00:43:22,820 --> 00:43:26,550 Sôn am unrhyw beth am runtime cael y cyfan y pwyntiau. 903 00:43:26,550 --> 00:43:32,640 Ond "cyflymach," y rhan fwyaf o'r atebion ar y bwrdd mawr a oedd cais yn 904 00:43:32,640 --> 00:43:34,990 wrthrychol arafach nag atebion a oedd tablau hash. 905 00:43:34,990 --> 00:43:37,250 Felly gyflymach mewn ac o ei hun nid yw'n wir yn wir. 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 Rwy'n fwy na thebyg yr unig un sy'n sylweddoli dyna sut y mae hynny'n ei fod i 909 00:43:46,686 --> 00:43:47,500 yn cael ei ynganu, dde? 910 00:43:47,500 --> 00:43:50,400 >> ROB BOWDEN: gen i ddim syniad mewn gwirionedd. 911 00:43:50,400 --> 00:43:51,650 >> DAVID J. Malan: Mae'n gwneud synnwyr yn fy mhen. 912 00:43:51,650 --> 00:43:53,830 913 00:43:53,830 --> 00:43:57,580 >> ROB BOWDEN: Rwy'n gwneud hyn yn un. 914 00:43:57,580 --> 00:43:58,020 OK. 915 00:43:58,020 --> 00:44:04,243 Felly, mae hyn yn un lle bu'n rhaid i chi dynnu y diagram tebyg i chi efallai 916 00:44:04,243 --> 00:44:06,040 wedi gweld ar arholiadau gorffennol. 917 00:44:06,040 --> 00:44:12,200 Felly, gadewch i ni dim ond yn edrych ar hyn. 918 00:44:12,200 --> 00:44:18,170 Felly, oddi wrth y nod HTML, mae gennym ddau plant, y pennaeth a'r corff. 919 00:44:18,170 --> 00:44:20,570 Felly rydym cangen - pennaeth a'r corff. 920 00:44:20,570 --> 00:44:22,280 Mae gan y pennaeth tag teitl. 921 00:44:22,280 --> 00:44:23,710 Felly mae gennym teitl. 922 00:44:23,710 --> 00:44:28,450 >> Yn awr, yr un peth mae llawer o bobl yn anghofio yw bod nodau destun hyn yn 923 00:44:28,450 --> 00:44:30,430 elfennau o fewn y goeden hon. 924 00:44:30,430 --> 00:44:36,260 Felly dyma ni yn digwydd i dynnu arnynt fel siapiau hirgrwn i'w gwahaniaethu o'r rhain 925 00:44:36,260 --> 00:44:37,380 mathau o nodau. 926 00:44:37,380 --> 00:44:41,450 Ond rhybudd yma hefyd mae gennym uchaf, Bydd canol, a gwaelod y pen draw yn cael ei 927 00:44:41,450 --> 00:44:42,560 nodau testun. 928 00:44:42,560 --> 00:44:46,250 Felly anghofio hynny, yr oedd braidd yn i gamgymeriad cyffredin. 929 00:44:46,250 --> 00:44:48,770 >> Mae gan y corff dri o blant - y tri divs. 930 00:44:48,770 --> 00:44:53,340 Felly div, div, div ac yna y testun nod plant divs hynny. 931 00:44:53,340 --> 00:44:55,900 Dyna 'n bert lawer iddo am hynny cwestiynau. 932 00:44:55,900 --> 00:44:57,860 >> DAVID J. Malan: Ac mae'n werth nodi, er nad ydym yn trigo ar y rhain 933 00:44:57,860 --> 00:45:01,040 manylion yn yr amser rydym yn ei wario ar JavaScript, bod y gorchymyn yn ei wneud, yn 934 00:45:01,040 --> 00:45:02,290 gwirionedd, mater dechnegol. 935 00:45:02,290 --> 00:45:06,330 Felly, os pennaeth yn dod gerbron y corff yn y HTML, yna dylai ymddangos i'r 936 00:45:06,330 --> 00:45:08,860 chwith corff yn y DOM gwirioneddol. 937 00:45:08,860 --> 00:45:12,265 Mai ei yw, yn gyffredinol, dim ond FYI, rhywbeth o'r enw gorchymyn ddogfen, lle 938 00:45:12,265 --> 00:45:13,260 mae'n ei wneud mater. 939 00:45:13,260 --> 00:45:17,470 Ac os ydych yn gweithredu parser, rhaglen sy'n darllen HTML mewn adeiladu 940 00:45:17,470 --> 00:45:20,960 i fyny y goeden mewn cof, a bod yn onest, dyna reddfol yn ôl pob tebyg yr hyn yr ydych 941 00:45:20,960 --> 00:45:24,720 gwneud beth bynnag - top i'r gwaelod, chwith i'r dde. 942 00:45:24,720 --> 00:45:26,116 >> ROB BOWDEN: Cwestiynau ar hynny? 943 00:45:26,116 --> 00:45:29,080 944 00:45:29,080 --> 00:45:30,000 A ddylwn i wneud yr un nesaf? 945 00:45:30,000 --> 00:45:32,380 >> DAVID J. Malan: Cadarn. 946 00:45:32,380 --> 00:45:33,810 >> ROB BOWDEN: OK. 947 00:45:33,810 --> 00:45:39,320 Felly mae hwn yn y byffer gor-redeg cwestiwn ymosodiad. 948 00:45:39,320 --> 00:45:43,740 Y prif beth i'w gydnabod yma yw, yn dda, sut y gallai tric gwrthwynebwr 949 00:45:43,740 --> 00:45:46,170 rhaglen hon yn gweithredu cod mympwyol? 950 00:45:46,170 --> 00:45:51,860 , 'R archa bannod cyntaf, felly argv1 ddadl at y rhaglen hon, a all fod yn 951 00:45:51,860 --> 00:45:53,920 fympwyol hir. 952 00:45:53,920 --> 00:45:59,160 Ond yma rydym yn defnyddio memcpy i gopïo argv1, sydd yma yw bar. 953 00:45:59,160 --> 00:46:00,165 Rydym yn pasio fel y ddadl. 954 00:46:00,165 --> 00:46:02,050 Ac felly mae'n cymryd ar y bar enw. 955 00:46:02,050 --> 00:46:08,040 >> Felly, rydym yn memcpying bar yn byffer hwn yn c. 956 00:46:08,040 --> 00:46:09,400 Faint o bytes ydym yn copïo? 957 00:46:09,400 --> 00:46:14,040 Wel, fodd bynnag, mae llawer o bar bytes digwydd i yn ei ddefnyddio, hyd y ddadl honno. 958 00:46:14,040 --> 00:46:17,930 Ond c yw dim ond 12 bytes o led. 959 00:46:17,930 --> 00:46:22,280 Felly, os ydym deipio ymresymiad llinell orchymyn sy'n fwy na 12 bytes, rydym yn 960 00:46:22,280 --> 00:46:25,470 mynd i orlifo hwn byffer penodol. 961 00:46:25,470 --> 00:46:31,000 Nawr, sut y gallai gwrthwynebwr twyllo y rhaglen i weithredu cod mympwyol? 962 00:46:31,000 --> 00:46:34,910 >> Felly cofiwch hynny yma prif yn galw foo. 963 00:46:34,910 --> 00:46:37,340 Ac felly, yna prif alwadau foo. 964 00:46:37,340 --> 00:46:40,408 Gadewch i ni tynnu hyn. 965 00:46:40,408 --> 00:46:44,720 966 00:46:44,720 --> 00:46:46,990 Felly, rydym wedi ein pentwr. 967 00:46:46,990 --> 00:46:49,090 A phrif Mae ffrâm pentwr ar y gwaelod. 968 00:46:49,090 --> 00:46:51,860 969 00:46:51,860 --> 00:46:53,250 Ar ryw adeg, prif galwadau foo. 970 00:46:53,250 --> 00:46:55,390 Wel, yn union, prif alwadau foo. 971 00:46:55,390 --> 00:46:57,130 Ac felly foo yn cael ei ffrâm pentwr hun. 972 00:46:57,130 --> 00:46:59,650 973 00:46:59,650 --> 00:47:02,220 >> Nawr, ar ryw adeg, foo yn mynd i ddychwelyd. 974 00:47:02,220 --> 00:47:06,810 Ac aeth ffurflenni foo, mae angen i ni wybod ar pa linell o god tu mewn prif rydym 975 00:47:06,810 --> 00:47:10,610 mewn trefn i wybod ble dylem ailddechrau yn y prif. 976 00:47:10,610 --> 00:47:13,100 Gall Rydym yn galw foo gan ei gyfanrwydd criw o wahanol leoedd. 977 00:47:13,100 --> 00:47:14,620 Sut ydym ni'n gwybod ble i ddychwelyd? 978 00:47:14,620 --> 00:47:16,460 Wel, mae angen i storio'r rhywle. 979 00:47:16,460 --> 00:47:23,010 >> Felly rhywle dde o gwmpas yma, rydym yn cadw lle y dylem ddychwelyd unwaith 980 00:47:23,010 --> 00:47:24,070 ffurflenni foo. 981 00:47:24,070 --> 00:47:26,350 A hon yw'r cyfeiriad dychwelyd. 982 00:47:26,350 --> 00:47:30,490 Felly, sut y gallai gwrthwynebwr yn manteisio o hyn yw'r ffaith bod 983 00:47:30,490 --> 00:47:37,550 byffer hwn yn c yn cael ei storio, gadewch i ni dweud, dde yma yn c. 984 00:47:37,550 --> 00:47:39,690 Felly, mae gennym 12 o bytes ar gyfer c. 985 00:47:39,690 --> 00:47:40,540 Mae hyn yn c. 986 00:47:40,540 --> 00:47:43,030 Ac mae hyn yn gylch stac foo yn. 987 00:47:43,030 --> 00:47:49,970 Felly, os bydd y defnyddiwr yn mynd i mewn mwy maleisus bytes na 12 neu eu bod yn mynd i mewn i gorchymyn 988 00:47:49,970 --> 00:47:54,570 ymresymiad llinell sy'n fwy na 12 cymeriadau, yna rydym yn mynd i 989 00:47:54,570 --> 00:47:57,540 gorlifo byffer hwn. 990 00:47:57,540 --> 00:47:59,910 >> Gallwn ddal ati. 991 00:47:59,910 --> 00:48:02,220 Ac ar ryw bwynt, yr ydym yn mynd yn bell digon ein bod yn dechrau 992 00:48:02,220 --> 00:48:05,120 ysgrifennu dros y cyfeiriad dychwelyd. 993 00:48:05,120 --> 00:48:08,310 Felly, ar ôl i ni ysgrifennu dros y cyfeiriad dychwelyd, mae hyn yn golygu pan fydd foo 994 00:48:08,310 --> 00:48:14,220 ffurflenni, rydym yn dychwelyd i ble bynnag y defnyddiwr maleisus yn dweud iddo gan 995 00:48:14,220 --> 00:48:19,490 pa bynnag werth ei gofnodi, trwy ba bynnag cymeriadau y defnyddiwr gofnodi. 996 00:48:19,490 --> 00:48:24,320 Ac felly os bydd y defnyddiwr maleisus yn cael ei yn arbennig o glyfar, gall gael y 997 00:48:24,320 --> 00:48:29,255 dychwelyd i rywle yn y printDef swyddogaeth neu rywle yn y malloc 998 00:48:29,255 --> 00:48:31,830 swyddogaeth, dim ond unrhyw le yn fympwyol. 999 00:48:31,830 --> 00:48:38,420 >> Ond hyd yn oed yn fwy clyfar yw'r hyn os oes ganddo y defnyddiwr yn dychwelyd i'r dde yma. 1000 00:48:38,420 --> 00:48:41,920 Ac yna byddwch yn dechrau gweithredu rhain fel llinellau o god. 1001 00:48:41,920 --> 00:48:46,610 Felly, ar y pwynt hwnnw, gall y defnyddiwr fynd i mewn beth bynnag y mae am i'r rhanbarth hwn. 1002 00:48:46,610 --> 00:48:52,210 Ac mae ganddo reolaeth lwyr dros eich rhaglen. 1003 00:48:52,210 --> 00:48:53,460 Cwestiynau ar hynny? 1004 00:48:53,460 --> 00:48:56,380 1005 00:48:56,380 --> 00:49:00,970 Felly, y cwestiwn nesaf yw llenwi'r reimplementation o foo yn y fath fodd 1006 00:49:00,970 --> 00:49:02,620 nad yw bellach ei fod yn agored i niwed. 1007 00:49:02,620 --> 00:49:03,870 >> Felly mae yna ychydig o ffyrdd gallech fod wedi gwneud hyn. 1008 00:49:03,870 --> 00:49:10,900 1009 00:49:10,900 --> 00:49:13,330 Mae gennym c yn unig bod o hyd 12. 1010 00:49:13,330 --> 00:49:16,480 Gallech fod wedi newid hyn fel rhan o'ch ateb. 1011 00:49:16,480 --> 00:49:18,930 Rydym hefyd yn ychwanegu siec i wneud ddim yn siŵr bar oedd null. 1012 00:49:18,930 --> 00:49:24,460 Er nad oedd angen i chi hynny ar gyfer credyd llawn. 1013 00:49:24,460 --> 00:49:27,690 Felly, rydym yn gwirio yn gyntaf y hyd cyfres o bar. 1014 00:49:27,690 --> 00:49:31,650 Os yw'n fwy na 12, yna nid ydynt mewn gwirionedd yn gwneud y copi. 1015 00:49:31,650 --> 00:49:33,010 Felly dyna un ffordd o ei datrys. 1016 00:49:33,010 --> 00:49:36,750 >> Ffordd arall o osod ei fod yn hytrach na cael c Dim ond hyd 12, wedi ei 1017 00:49:36,750 --> 00:49:39,310 fod o strlen hyd (bar). 1018 00:49:39,310 --> 00:49:43,370 Ffordd arall o osod ei fod yn i mewn gwirionedd dim ond yn dychwelyd. 1019 00:49:43,370 --> 00:49:46,690 Felly, os ydych oedd newydd gotten gwared ar yr holl hyn, os ydych wedi dim ond dileu pob 1020 00:49:46,690 --> 00:49:51,830 llinellau o god, byddech wedi gotten credyd llawn, gan fod y swyddogaeth hon 1021 00:49:51,830 --> 00:49:54,150 Nid yw mewn gwirionedd yn cyflawni unrhyw beth. 1022 00:49:54,150 --> 00:49:57,650 Mae'n copïo 'r archa bannod ddadl i rai amrywiaeth yn 1023 00:49:57,650 --> 00:49:59,960 ei ffrâm pentwr lleol. 1024 00:49:59,960 --> 00:50:01,310 Ac yna y peth yn dychwelyd. 1025 00:50:01,310 --> 00:50:04,020 A beth bynnag medrus wedi mynd. 1026 00:50:04,020 --> 00:50:09,740 Felly roedd dychwelyd hefyd yn ddigon ffordd o gael credyd llawn. 1027 00:50:09,740 --> 00:50:13,425 >> DAVID J. Malan: Nid yn y ysbryd y cwestiwn ond derbyniol unol â'r 1028 00:50:13,425 --> 00:50:15,580 fanyleb serch hynny. 1029 00:50:15,580 --> 00:50:18,260 >> ROB BOWDEN: Cwestiynau ar unrhyw un o hynny? 1030 00:50:18,260 --> 00:50:22,270 Yr un peth eich bod o leiaf sydd eu hangen i wedi llunio cod. 1031 00:50:22,270 --> 00:50:24,810 Felly hyd yn oed er yn dechnegol nad ydych yn agored i niwed os nad yw eich cod yn 1032 00:50:24,810 --> 00:50:29,130 llunio, nid ydym yn derbyn hynny. 1033 00:50:29,130 --> 00:50:31,350 Dim cwestiynau? 1034 00:50:31,350 --> 00:50:33,320 OK. 1035 00:50:33,320 --> 00:50:34,580 >> DAVID J. Malan: Ydych chi eisiau i ddweud teitl hwn? 1036 00:50:34,580 --> 00:50:37,230 >> ROB BOWDEN: Na 1037 00:50:37,230 --> 00:50:40,470 >> DAVID J. Malan: Felly, yn yr un yma, mae hyn yn oedd naill ai'n newyddion da neu newyddion drwg. 1038 00:50:40,470 --> 00:50:43,870 Mae hyn yn llythrennol yr un broblem fel y cwis cyntaf. 1039 00:50:43,870 --> 00:50:46,140 Ac mae'n bron yr un fath problem fel pset1. 1040 00:50:46,140 --> 00:50:49,980 Ond ei symleiddio yn fwriadol i fod yn pyramid symlach, un a all fod yn 1041 00:50:49,980 --> 00:50:52,330 datrys gyda ychydig yn iteriad symlach. 1042 00:50:52,330 --> 00:50:55,680 Ac yn wir, yr hyn yr ydym yn ei gael ar yma nid oedd yn gymaint y rhesymeg, 1043 00:50:55,680 --> 00:50:58,100 oherwydd yn ôl pob tebyg, gan y pwynt hwn, rydych yn yn fwy cyfforddus nag yr oeddech chi 1044 00:50:58,100 --> 00:51:01,850 yn wythnos un â ar gyfer dolenni neu pam dolennau, ond mewn gwirionedd i dynnu ar wahân bod 1045 00:51:01,850 --> 00:51:04,790 eich bod ychydig yn gyfforddus gyda'r syniad nad yw PHP yn unig am yr hyn 1046 00:51:04,790 --> 00:51:05,290 rhaglennu. 1047 00:51:05,290 --> 00:51:07,820 Gall fod mewn gwirionedd yn cael ei ddefnyddio fel iaith i ysgrifennu rhaglenni llinell orchymyn. 1048 00:51:07,820 --> 00:51:10,060 >> Ac yn wir, dyna beth rydym yn ceisio i dynnu eich sylw at. 1049 00:51:10,060 --> 00:51:12,060 Mae hon yn rhaglen PHP llinell orchymyn. 1050 00:51:12,060 --> 00:51:16,690 Felly C cod yma, tra gywir yn C, nid cywiro ar gyfer PHP. 1051 00:51:16,690 --> 00:51:17,940 Ond mae'r cod yn wir yn yr un fath. 1052 00:51:17,940 --> 00:51:21,720 Os ydych yn cymharu atebion ar gyfer Cwis 0 yn erbyn Cwis 1, fe welwch fod 1053 00:51:21,720 --> 00:51:25,630 mae bron yn union yr un fath, ac eithrio ar gyfer rhai arwyddion doler ac ar gyfer y 1054 00:51:25,630 --> 00:51:27,250 absenoldeb o fath data. 1055 00:51:27,250 --> 00:51:31,720 Yn benodol, os byddwn yn edrych yma, byddwch yn gweld ein bod yn ailadrodd, yn yr 1056 00:51:31,720 --> 00:51:33,730 achos, o 1 i fyny drwy'r 7. 1057 00:51:33,730 --> 00:51:34,910 >> Gallem fod wedi gwneud hyn 0 mynegai. 1058 00:51:34,910 --> 00:51:37,320 Ond weithiau, yr wyf yn meddwl mai dim ond haws yn feddyliol i feddwl am bethau 1059 00:51:37,320 --> 00:51:38,200 1-7. 1060 00:51:38,200 --> 00:51:40,300 Os ydych angen un bloc, yna dau blociau, yna tri, yna 1061 00:51:40,300 --> 00:51:41,770 dot, dot, dot saith. 1062 00:51:41,770 --> 00:51:45,960 Rydym wedi j cael ei ymgychwyn i 1 ac yna cyfrif ar hyd at i. 1063 00:51:45,960 --> 00:51:48,150 Ac mae popeth yma yw fel arall union yr un fath. 1064 00:51:48,150 --> 00:51:49,790 Ond werth nodi yn un neu ddau o bethau. 1065 00:51:49,790 --> 00:51:53,230 Rydym yn rhoi y ddwy linell, hyn yn gyntaf i chi un, a enwyd goofily fel shebang 1066 00:51:53,230 --> 00:51:54,560 ar gyfer bang miniog. 1067 00:51:54,560 --> 00:51:58,770 Ac mai dim ond yn nodi'r llwybr, y ffolder, lle gall rhaglen fod yn 1068 00:51:58,770 --> 00:52:02,160 Canfu eich bod am ei ddefnyddio i ddehongli y ffeil. 1069 00:52:02,160 --> 00:52:04,710 >> Ac yna y llinell ar ôl hynny, o gwrs, yn golygu mynd i mewn modd PHP. 1070 00:52:04,710 --> 00:52:07,740 A llinell ar y gwaelod yn golygu dull PHP allanfa. 1071 00:52:07,740 --> 00:52:09,740 Ac mae hyn yn gweithio, yn gyffredinol, gyda dehongli iaith. 1072 00:52:09,740 --> 00:52:14,370 Mae'n fath o blino os byddwch yn ysgrifennu yn rhaglen mewn ffeil o'r enw foo.php. 1073 00:52:14,370 --> 00:52:17,320 Ac yna eich defnyddwyr rhaid i ychydig cofiwch, OK, i redeg y rhaglen hon, yr wyf yn 1074 00:52:17,320 --> 00:52:22,320 rhaid i deipio "foo.php lle php." Kind o blino os dim byd arall. 1075 00:52:22,320 --> 00:52:25,270 Ac mae hefyd yn datgelu bod eich rhaglen wedi ei ysgrifennu yn PHP, ac nid yw pob 1076 00:52:25,270 --> 00:52:27,060 sy'n goleuo ar gyfer y defnyddiwr. 1077 00:52:27,060 --> 00:52:30,100 >> Felly, gallwch chi gael gwared ar y. Php yn gyfan gwbl dwyn i gof o ddarlith. 1078 00:52:30,100 --> 00:52:35,690 A allwch chi ei wneud mewn gwirionedd. / Foo os eich bod wedi chmodded drwy ei gwneud yn 1079 00:52:35,690 --> 00:52:36,500 gweithredadwy. 1080 00:52:36,500 --> 00:52:39,630 Felly byddai chmod a + x foo wedi gwneud hynny. 1081 00:52:39,630 --> 00:52:41,460 Ac os ydych hefyd yn ychwanegu y shebang yma. 1082 00:52:41,460 --> 00:52:45,320 Ond mewn gwirionedd, y broblem yn mynd yn argraffu rhywbeth fel hyn. 1083 00:52:45,320 --> 00:52:51,100 Dim HTML, dim C-god yn sicr, dim ond rhai PHP. 1084 00:52:51,100 --> 00:52:54,100 Felly, cyn dychwelyd Milo yn broblem 25. 1085 00:52:54,100 --> 00:52:58,050 Ac yn 25, a roddwyd i chi y canlynol cod sgerbwd, a oedd yn 1086 00:52:58,050 --> 00:52:59,730 dudalen 'n bert syml ar y we. 1087 00:52:59,730 --> 00:53:04,230 A'r rhan llawn sudd HTML-doeth oedd i lawr yma, lle mae gennym tu mewn i'r corff 1088 00:53:04,230 --> 00:53:09,160 ffurflen sydd ID unigryw o fewnbynnau tu mewn a oedd dau fewnbwn, un 1089 00:53:09,160 --> 00:53:11,950 gyda syniad o enw, un gyda syniad o botwm. 1090 00:53:11,950 --> 00:53:14,240 >> Y cyntaf oedd testun y math, y ail o'r math cyflwyno. 1091 00:53:14,240 --> 00:53:16,930 Ac felly rydym yn rhoi i chi, mewn gwirionedd, yn fwy cynhwysion nag sydd ei angen i chi, dim ond er mwyn 1092 00:53:16,930 --> 00:53:19,230 oedd gennych guys opsiynau ag ef i ddatrys y broblem hon. 1093 00:53:19,230 --> 00:53:21,130 Nid oes angen i chi llym pob un o'r IDs hyn. 1094 00:53:21,130 --> 00:53:23,580 Ond mae'n eich galluogi i ddatrys mewn gwahanol ffyrdd. 1095 00:53:23,580 --> 00:53:27,050 Ac i fyny ar y brig, yn sylwi bod yr amcan oedd i sbarduno 1096 00:53:27,050 --> 00:53:27,960 a fel hyn ffenestr - 1097 00:53:27,960 --> 00:53:28,780 Helo, Milo! - 1098 00:53:28,780 --> 00:53:31,270 i pop i fyny yn y porwr ddefnyddio y super syml, os 1099 00:53:31,270 --> 00:53:33,190 Nid hyll swyddogaeth, yn effro. 1100 00:53:33,190 --> 00:53:37,480 Ac felly, yn y pen draw, mae hyn yn boils i lawr gysyniadol i wrando rywsut ar gyfer 1101 00:53:37,480 --> 00:53:41,290 cyflwyniadau o'r ochr cleientiaid ffurflen , Nid yw'r ochr y gweinydd, rhywsut 1102 00:53:41,290 --> 00:53:45,640 ymateb i'r cyflwyniad gan gydio yn y gwerth y mae'r defnyddiwr deipio 1103 00:53:45,640 --> 00:53:50,120 i mewn i'r maes enw, ac yna ei arddangos yn y corff o rybudd. 1104 00:53:50,120 --> 00:53:53,460 >> Felly, un ffordd y gallwch wneud hyn yw gyda jQuery, sy'n edrych ychydig yn 1105 00:53:53,460 --> 00:53:56,880 syntactically peri dryswch ar y dechrau. 1106 00:53:56,880 --> 00:54:00,760 Gallwch wneud hyn â chod DOM pur - document.getelement drwy adnabod. 1107 00:54:00,760 --> 00:54:02,530 Ond gadewch i ni edrych ar y fersiwn. 1108 00:54:02,530 --> 00:54:05,110 Mae gen i un neu ddau o bwysig llinell gyntaf. 1109 00:54:05,110 --> 00:54:09,460 Felly un, mae gennym y llinell hon, sy'n union i'r hyn y gallech fod wedi gweld 1110 00:54:09,460 --> 00:54:13,830 i mewn, yr wyf yn credu, form2.html o ddosbarth yn wythnos 9. 1111 00:54:13,830 --> 00:54:16,960 Ac mae hyn yn unig yw dweud, gweithredu y cod canlynol wrth 1112 00:54:16,960 --> 00:54:18,430 y ddogfen yn barod. 1113 00:54:18,430 --> 00:54:21,770 Mae hyn yn bwysig yn unig oherwydd Tudalennau HTML yn cael eu darllen top i 1114 00:54:21,770 --> 00:54:23,280 gwaelod, chwith i'r dde. 1115 00:54:23,280 --> 00:54:27,910 >> Ac felly, os ydych yn ceisio gwneud rhywbeth mewn cod i fyny yma i ryw DOM 1116 00:54:27,910 --> 00:54:31,560 elfen, mae rhai tag HTML, dyna i lawr yma, rydych yn ei wneud yn rhy fuan, 1117 00:54:31,560 --> 00:54:34,220 gan fod hyn wedi hyd yn oed cael eu darllen i mewn i gof. 1118 00:54:34,220 --> 00:54:37,740 Felly, drwy ddweud document.ready hwn lein, rydym yn ei ddweud, 1119 00:54:37,740 --> 00:54:39,040 dyma ychydig o cod, porwr. 1120 00:54:39,040 --> 00:54:42,440 Ond peidiwch â gweithredu hyn nes bod y cyfan ddogfen yn barod, hynny yw'r DOM 1121 00:54:42,440 --> 00:54:44,320 goeden yn bodoli yn y cof. 1122 00:54:44,320 --> 00:54:47,110 Mae hyn yn un ychydig yn fwy syml, os syntactically yn 1123 00:54:47,110 --> 00:54:51,890 ychydig yn wahanol, ble i ddim yn dweud, cydio yr elfen HTML sy'n unigryw 1124 00:54:51,890 --> 00:54:53,560 dynodwr yn mewnbynnau. 1125 00:54:53,560 --> 00:54:56,220 Dyna beth y tag hash dynodi, mae'r ID unigryw. 1126 00:54:56,220 --> 00:54:58,070 Ac yna dwi'n galw. Cyflwyno. 1127 00:54:58,070 --> 00:55:01,660 >> So. Cyflwyno yma yw swyddogaeth, fel arall a elwir yn ddull, dyna 1128 00:55:01,660 --> 00:55:05,850 tu mewn y gwrthrych ar y llaw chwith- ochr yno nad oeddwn yn tynnu sylw. 1129 00:55:05,850 --> 00:55:08,990 Felly, os ydych yn meddwl o fewnbynnau fel gwrthrych mewn cof - ac yn wir y mae. 1130 00:55:08,990 --> 00:55:10,440 Mae'n nod mewn coeden - 1131 00:55:10,440 --> 00:55:16,580 . Cyflwyno dulliau pan y ffurflen hon gyda ID hwn yn cael ei gyflwyno, gweithredu 1132 00:55:16,580 --> 00:55:17,700 y cod canlynol. 1133 00:55:17,700 --> 00:55:20,290 Nid wyf yn poeni beth yw enw y swyddogaeth yw fy mod yn cyflawni. 1134 00:55:20,290 --> 00:55:23,760 Felly dyma Im 'yn arfer, fel o'r blaen, beth sydd a elwir y swyddogaeth lamda neu 1135 00:55:23,760 --> 00:55:24,720 swyddogaeth dienw. 1136 00:55:24,720 --> 00:55:27,640 Nid yw'n gwbl ddeallusol diddorol ac eithrio nad oes ganddo enw, 1137 00:55:27,640 --> 00:55:30,220 sydd yn iawn os ydych yn unig byth yn mynd i alw unwaith. 1138 00:55:30,220 --> 00:55:34,490 Ac y tu mewn yno Fi 'n weithredol yn trin cyflwyno'r ffurflen. 1139 00:55:34,490 --> 00:55:36,810 Yr wyf yn datgan newidyn yn gyntaf Gelwir gwerth. 1140 00:55:36,810 --> 00:55:40,610 Ac yna beth yw effaith hyn tynnu sylw at gyfran yma nawr? 1141 00:55:40,610 --> 00:55:44,755 Beth mae hynny'n ei wneud ar lefel uchel i mi? 1142 00:55:44,755 --> 00:55:48,539 >> GYNULLEIDFA: Mae'n cael y gwerth y mae'r nid oedd y defnyddiwr yn y HTML isod. 1143 00:55:48,539 --> 00:55:50,920 Mae'n cael y ID ac yna dod o hyd i'r gwerth ohono. 1144 00:55:50,920 --> 00:55:51,590 >> DAVID J. Malan: Yn union. 1145 00:55:51,590 --> 00:55:54,300 Mae'n cydio yn y nod, y mae ei unigryw dynodwr yn enw. 1146 00:55:54,300 --> 00:55:56,900 Mae'n cael y gwerth ynddo, a yw, yn ôl pob tebyg, yr hyn y mae'r defnyddiwr 1147 00:55:56,900 --> 00:55:58,190 deipio ei hun. 1148 00:55:58,190 --> 00:56:01,020 Ac yna mae'n storio, yn y amrywiol o'r enw gwerth. 1149 00:56:01,020 --> 00:56:03,720 Fel o'r neilltu, gallech gael hefyd gwneud hyn ychydig yn wahanol. 1150 00:56:03,720 --> 00:56:09,250 Hollol dderbyniol drwy wneud rhywbeth gwerth var gorwedd yn cael 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 A dyma pam ei fod ychydig yn ddiflas i beidio â defnyddio jQuery. 1154 00:56:15,460 --> 00:56:16,710 "Enw". Gwerth. 1155 00:56:16,710 --> 00:56:18,330 1156 00:56:18,330 --> 00:56:19,620 Felly hollol dderbyniol. 1157 00:56:19,620 --> 00:56:22,770 Gwahanol ffyrdd o wneud hyn. jQuery yn unig yn tueddu i fod ychydig yn fwy cryno a 1158 00:56:22,770 --> 00:56:25,230 bendant yn fwy poblogaidd ymhlith rhaglenwyr. 1159 00:56:25,230 --> 00:56:27,590 >> Yn awr, yr wyf i'n gwneud ychydig o bwyll siec, oherwydd yn y broblem 1160 00:56:27,590 --> 00:56:30,820 dywedasom y datganiad yn benodol, os yw'r Nid yw'r defnyddiwr wedi teipio eto ef neu hi 1161 00:56:30,820 --> 00:56:32,580 enw, nid ydynt yn dangos rhybuddion. 1162 00:56:32,580 --> 00:56:35,390 Ond gallwch wirio am hynny, o ychydig gwirio am y llinyn wag am 1163 00:56:35,390 --> 00:56:37,850 dyfynnwch-unquote os oes dim byd mewn gwirionedd yno. 1164 00:56:37,850 --> 00:56:40,880 Ond os nad yw'n hafal i ddyfynnu-unquote, Yr wyf am i alw rhybuddion. 1165 00:56:40,880 --> 00:56:45,610 A'r rhan diddorol yma yw bod rydym yn defnyddio'r gweithredwr a mwy, sy'n 1166 00:56:45,610 --> 00:56:48,130 gwneud beth yn JavaScript? 1167 00:56:48,130 --> 00:56:48,740 Concatenate. 1168 00:56:48,740 --> 00:56:50,690 Felly, mae fel PHPs dot gweithredwr. 1169 00:56:50,690 --> 00:56:52,820 Un syniad, ychydig yn wahanol gystrawennau. 1170 00:56:52,820 --> 00:56:55,280 A dwi'n dim ond creu llinyn y welsoch ar y screen ergyd - 1171 00:56:55,280 --> 00:56:57,750 Helo, felly ac yn y blaen. 1172 00:56:57,750 --> 00:56:59,200 >> Ac yna y manylion diwethaf yw hyn. 1173 00:56:59,200 --> 00:57:04,970 Pam ydw i'n dychwelyd tu mewn ffug y swyddogaeth dienw? 1174 00:57:04,970 --> 00:57:07,420 >> GYNULLEIDFA: Does dim gwerth. 1175 00:57:07,420 --> 00:57:09,380 Ei roi yn ffurflen. 1176 00:57:09,380 --> 00:57:12,320 1177 00:57:12,320 --> 00:57:16,730 'I jyst yn dweud, os nad yw gwerth yn cyfartal i wag, yna yn ei wneud. 1178 00:57:16,730 --> 00:57:20,040 1179 00:57:20,040 --> 00:57:20,940 Roedd wag yn y cyflwyniad. 1180 00:57:20,940 --> 00:57:21,170 >> DAVID J. Malan: OK. 1181 00:57:21,170 --> 00:57:21,640 Ofalus er. 1182 00:57:21,640 --> 00:57:22,830 Nid oes unrhyw un arall yma. 1183 00:57:22,830 --> 00:57:25,510 A bod yn ffug yn dychwelyd y tu allan o os yw amodau. 1184 00:57:25,510 --> 00:57:29,470 Felly, mae hyn tynnu sylw at y llinell, yn dychwelyd ffug, executes waeth beth pan 1185 00:57:29,470 --> 00:57:32,310 y ffurflen yn cael ei chyflwyno. 1186 00:57:32,310 --> 00:57:36,810 Beth mae dychwelyd tu mewn ffug o hyn trin y digwyddiad, gan ei fod yn cael ei alw, 1187 00:57:36,810 --> 00:57:38,450 y digwyddiad dan sylw cael ei gyflwyno? 1188 00:57:38,450 --> 00:57:42,350 1189 00:57:42,350 --> 00:57:44,470 >> GYNULLEIDFA: Oherwydd ei fod yn ond yn digwydd unwaith. 1190 00:57:44,470 --> 00:57:45,320 >> DAVID J. Malan: Dim ond yn digwydd unwaith. 1191 00:57:45,320 --> 00:57:46,821 Ddim yn hollol. 1192 00:57:46,821 --> 00:57:47,292 Yeah? 1193 00:57:47,292 --> 00:57:50,589 >> GYNULLEIDFA: Mae'n atal y ffurflen oddi cyflwyno i'r ymddygiad diofyn, 1194 00:57:50,589 --> 00:57:52,480 a fyddai'n gwneud y dudalen ail-lwytho. 1195 00:57:52,480 --> 00:57:53,110 >> DAVID J. Malan: Yn union. 1196 00:57:53,110 --> 00:57:56,490 Felly, yr wyf i'n gorlwytho y term cyflwyno yma, oherwydd fy mod ddim yn dweud, y ffurflen yw 1197 00:57:56,490 --> 00:57:57,670 yn cael ei gyflwyno. 1198 00:57:57,670 --> 00:58:02,240 Ond fel yr awgrymwch, mae'n mewn gwirionedd nid ei gyflwyno yn y ffordd HTTP wir. 1199 00:58:02,240 --> 00:58:06,870 Pan fyddwch yn clicio Cyflwyno, oherwydd ein triniwr onSubmit, rydym yn rhyng-gipio 1200 00:58:06,870 --> 00:58:09,040 y ffurflen gyflwyno fel petai. 1201 00:58:09,040 --> 00:58:11,290 Yna rydym yn gwneud ein peth â chod JavaScript. 1202 00:58:11,290 --> 00:58:14,070 Ond dw i'n dychwelyd ffug yn fwriadol, oherwydd yr hyn nad wyf am ei weld yn digwydd yn 1203 00:58:14,070 --> 00:58:18,430 eiliad yn ddiweddarach ar gyfer y ffurflen gyfan ei hun i gael ei gyflwyno i'r we 1204 00:58:18,430 --> 00:58:22,800 gweinyddwr gyda parau gwerth allweddol drwy newid yr URL i fod yn rhywbeth fel 1205 00:58:22,800 --> 00:58:26,180 q = cathod neu beth bynnag a wnaethom, er enghraifft, yn y dosbarth. 1206 00:58:26,180 --> 00:58:29,640 Nid wyf am i hynny ddigwydd, oherwydd nid oes unrhyw gwrando gweinydd ar gyfer hyn 1207 00:58:29,640 --> 00:58:30,690 ffurfio cyflwyniad. 1208 00:58:30,690 --> 00:58:32,320 Mae'n ei wneud yn unig mewn cod JavaScript. 1209 00:58:32,320 --> 00:58:35,760 A dyna pam nad wyf ddim hyd yn oed yn cael gweithredu priodoli ar fy ffurflen, oherwydd yr wyf yn 1210 00:58:35,760 --> 00:58:38,870 nad ydynt yn bwriadu i hyn byth yn mynd at 'r gweinyddwr. 1211 00:58:38,870 --> 00:58:40,780 >> Felly, mae'n cael ei gyflwyno. 1212 00:58:40,780 --> 00:58:44,340 Ond rydym yn rhyng-gipio y ffurflen cyflwyno ac atal 'r ball 1213 00:58:44,340 --> 00:58:47,477 ymddygiad, sef mewn gwirionedd fynd yr holl ffordd i'r gweinydd. 1214 00:58:47,477 --> 00:58:48,730 >> GYNULLEIDFA: Felly gadw ar ochr cleientiaid. 1215 00:58:48,730 --> 00:58:49,780 >> DAVID J. Malan: Cadw ar ochr cleientiaid iddo. 1216 00:58:49,780 --> 00:58:51,030 Yn union i'r dde. 1217 00:58:51,030 --> 00:58:53,240 1218 00:58:53,240 --> 00:58:55,757 I fyny nesaf oedd fy oh 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 Felly, y cwestiwn cyntaf yn gyffredinol bras ar gyfer pobl. 1222 00:59:04,990 --> 00:59:07,270 Er bod y rhai yn ddiweddarach aeth yn well. 1223 00:59:07,270 --> 00:59:12,260 Felly, rhaid i chi ddewis y data cywir fathau ar gyfer y ddau colofnau hyn. 1224 00:59:12,260 --> 00:59:17,750 Ac mae'r ddau o'r rhain yn cael rhywfaint o pethau amdanynt sy'n 1225 00:59:17,750 --> 00:59:20,620 yn gwneud y dewis anodd. 1226 00:59:20,620 --> 00:59:24,430 Felly nid oedd int dilys teipio ar gyfer y nifer. 1227 00:59:24,430 --> 00:59:29,410 Y rheswm yn cyfrif 12-digid nifer, nid int yn ddigon mawr i 1228 00:59:29,410 --> 00:59:31,070 storio cyfanswm digid. 1229 00:59:31,070 --> 00:59:36,570 Felly byddai dewis dilys wedi bod yn fawr int os ydych yn digwydd i wybod hynny. 1230 00:59:36,570 --> 00:59:42,090 Gallai dewis arall wedi bod yn maes torgoch o hyd 12. 1231 00:59:42,090 --> 00:59:44,560 Felly byddai naill neu'r llall o'r rheiny wedi gweithio. 1232 00:59:44,560 --> 00:59:46,100 Ni fyddai Int. 1233 00:59:46,100 --> 00:59:50,170 >> Yn awr, cydbwysedd, yn meddwl yn ôl i pset7. 1234 00:59:50,170 --> 00:59:59,540 Felly, rydym yn a ddefnyddir yn benodol degol i'r storio gwerth cyfranddaliadau neu - 1235 00:59:59,540 --> 01:00:00,550 >> DAVID J. Malan: Arian. 1236 01:00:00,550 --> 01:00:01,060 >> ROB BOWDEN: Arian. 1237 01:00:01,060 --> 01:00:05,710 Rydym yn defnyddio degol i storio swm y arian parod y mae'r defnyddiwr ar hyn o bryd. 1238 01:00:05,710 --> 01:00:10,950 Felly, y rheswm yr ydym yn gwneud hynny yn oherwydd, cofiwch, arnofio. 1239 01:00:10,950 --> 01:00:12,480 Mae pwynt arnawf mewn manylder. 1240 01:00:12,480 --> 01:00:18,200 Ni all storio arian yn union Gwerthoedd fel arnom eu heisiau yma. 1241 01:00:18,200 --> 01:00:23,630 Felly degol yn gallu union siop rhywbeth i, dyweder, dau le degol. 1242 01:00:23,630 --> 01:00:27,630 Dyna pam cydbwysedd, yr ydym am ei i fod degol ac nid yn arnofio. 1243 01:00:27,630 --> 01:00:30,230 >> DAVID J. Malan: A hefyd, hefyd, er gallai fod wedi bod yn glyfar mewn eraill 1244 01:00:30,230 --> 01:00:32,760 gyd-destunau i feddwl, efallai y yn gyfle ar gyfer int. 1245 01:00:32,760 --> 01:00:34,420 'N annhymerus' jyst cadw golwg ar bethau mewn ceiniogau. 1246 01:00:34,420 --> 01:00:38,670 Oherwydd ein bod yn dangos yn benodol 'r ball gwerth bod 100.00, bod 1247 01:00:38,670 --> 01:00:40,380 yn golygu y gallai dim ond fod yn int. 1248 01:00:40,380 --> 01:00:45,310 Ac cynildeb arall hefyd gyda nifer oedd nad oedd yn golygu 1249 01:00:45,310 --> 01:00:46,180 i fod yn gwestiwn tric. 1250 01:00:46,180 --> 01:00:49,860 Ond cofio i int yn MySQL, fel yn C, o leiaf yn y 1251 01:00:49,860 --> 01:00:51,440 offer, yn 32-bit. 1252 01:00:51,440 --> 01:00:53,960 A hyd yn oed er nad ydym yn eich disgwyl gwybod yn union faint digid sy'n 1253 01:00:53,960 --> 01:00:56,910 yn golygu, yn cofio bod y nifer fwyaf Gall ydych yn ei gynrychioli a allai 1254 01:00:56,910 --> 01:01:00,710 gyda nifer 32-bit yn fras beth? 1255 01:01:00,710 --> 01:01:02,760 >> Pa rif yr ydym bob amser yn dweud? 1256 01:01:02,760 --> 01:01:04,530 2 i 32, sef yr hyn yn fras? 1257 01:01:04,530 --> 01:01:07,492 1258 01:01:07,492 --> 01:01:08,780 Nid oes rhaid i chi wybod yn union. 1259 01:01:08,780 --> 01:01:10,580 Ond yn fras yn ddefnyddiol mewn bywyd. 1260 01:01:10,580 --> 01:01:12,200 Mae'n tua 4000000000. 1261 01:01:12,200 --> 01:01:14,430 Felly, rydym wedi dweud mai ychydig o weithiau. 1262 01:01:14,430 --> 01:01:16,360 Rwy'n gwybod fy mod wedi dweud mai ychydig o weithiau. 1263 01:01:16,360 --> 01:01:17,670 Ac mae'n tua 4000000000. 1264 01:01:17,670 --> 01:01:19,710 A dyna rheol da o bawd i wybod. 1265 01:01:19,710 --> 01:01:21,880 Os oes gennych 8 did, 256 yw'r rhif hud. 1266 01:01:21,880 --> 01:01:24,160 Os oes gennych 32 darnau, 4 biliwn rhoi neu gymryd. 1267 01:01:24,160 --> 01:01:27,140 Felly, os ydych yn unig yn ysgrifennu i lawr 4 biliwn, byddwch yn gweld ei bod yn llai o ddigidau na 1268 01:01:27,140 --> 01:01:30,970 12, sy'n golygu bod yn amlwg nad digon mynegiant i ddal 1269 01:01:30,970 --> 01:01:34,220 Rhif cyfrif 12-digid. 1270 01:01:34,220 --> 01:01:34,940 >> ROB BOWDEN: OK. 1271 01:01:34,940 --> 01:01:38,520 Felly, y rhai eraill yn mynd yn well. 1272 01:01:38,520 --> 01:01:40,900 Felly, mae'n debyg bod y banc yn gosod misol $ 20 1273 01:01:40,900 --> 01:01:42,400 ffi cynnal a chadw ar yr holl gyfrifon. 1274 01:01:42,400 --> 01:01:45,506 Gyda pha ymholiad SQL gallai'r banc ddidynnu $ 20 o bob cyfrif, hyd yn oed os 1275 01:01:45,506 --> 01:01:47,520 mae'n arwain at rhai balansau negyddol? 1276 01:01:47,520 --> 01:01:50,380 Felly y bôn, mae pedwar prif fath o ymholiadau - 1277 01:01:50,380 --> 01:01:52,840 mewnosoder, dewis, diweddaru, a dileu. 1278 01:01:52,840 --> 01:01:56,080 Felly, beth ydym yn meddwl ein bod yn mynd i'w defnyddio yma? 1279 01:01:56,080 --> 01:01:57,000 Diweddaru. 1280 01:01:57,000 --> 01:01:58,260 >> Felly, gadewch i ni edrych. 1281 01:01:58,260 --> 01:02:04,290 1282 01:02:04,290 --> 01:02:05,870 Felly dyma ni yn diweddaru. 1283 01:02:05,870 --> 01:02:09,900 Pa dabl yr ydym yn diweddaru cyfrifon? 1284 01:02:09,900 --> 01:02:11,670 Felly diweddaru cyfrifon. 1285 01:02:11,670 --> 01:02:15,390 Ac yna y gystrawen yn dweud, beth yn y cyfrifon yr ydym yn diweddaru? 1286 01:02:15,390 --> 01:02:19,520 Wel, rydym yn gosod y cydbwysedd cyfartal i'r gwerth cyfredol o gydbwysedd minws 20. 1287 01:02:19,520 --> 01:02:22,860 Felly, bydd hyn yn diweddaru pob rhes o gyfrifon, tynnu 1288 01:02:22,860 --> 01:02:26,250 20 $ o'r balans. 1289 01:02:26,250 --> 01:02:29,260 >> DAVID J. Malan: Camgymeriad cyffredin yma, er ein bod weithiau yn maddau iddo, 1290 01:02:29,260 --> 01:02:32,990 oedd mewn gwirionedd yn cael cod PHP yma ffonio'r swyddogaeth ymholiad neu roi 1291 01:02:32,990 --> 01:02:35,460 dyfyniadau o gwmpas popeth sy'n Nid oedd angen iddynt fod yno. 1292 01:02:35,460 --> 01:02:39,780 >> ROB BOWDEN: Cofiwch fod MySQL yn iaith ar wahân i PHP. 1293 01:02:39,780 --> 01:02:42,410 Rydym yn digwydd bod yn ysgrifennu yn PHP MySQL. 1294 01:02:42,410 --> 01:02:46,180 A PHP wedyn yn anfon draw i'r gweinyddwr MySQL. 1295 01:02:46,180 --> 01:02:51,120 Ond nid oes angen PHP chi er mwyn cyfathrebu gyda gweinydd MySQL. 1296 01:02:51,120 --> 01:02:51,730 >> DAVID J. Malan: Yn union. 1297 01:02:51,730 --> 01:02:54,240 Felly nid oes unrhyw newidynnau gydag arwyddion doler ddylai fod yn y cyd-destun hwn. 1298 01:02:54,240 --> 01:02:59,550 Gall dim ond gwneud pob un o'r cwestiwn yn y gronfa ddata ei hun. 1299 01:02:59,550 --> 01:03:00,080 >> ROB BOWDEN: OK. 1300 01:03:00,080 --> 01:03:01,300 Felly, yr un nesaf. 1301 01:03:01,300 --> 01:03:02,731 Ai dyma'r un nesaf? 1302 01:03:02,731 --> 01:03:03,210 Yeah. 1303 01:03:03,210 --> 01:03:06,570 Felly, gyda pha ymholiad SQL gallai'r banc adfer y niferoedd ystyried ei 1304 01:03:06,570 --> 01:03:09,300 cwsmeriaid cyfoethocaf, y rhai ag balansau fwy na 1,000? 1305 01:03:09,300 --> 01:03:13,280 Felly, pa un o'r pedwar prif fath ydym yn mynd i fod eisiau yma? 1306 01:03:13,280 --> 01:03:14,430 Dewiswch. 1307 01:03:14,430 --> 01:03:16,650 Felly, rydym am i ddewis. 1308 01:03:16,650 --> 01:03:17,610 Beth ydym ni eisiau i ddewis? 1309 01:03:17,610 --> 01:03:19,380 Pa golofn ydym ni eisiau i ddewis? 1310 01:03:19,380 --> 01:03:20,970 Byddwn am penodol i ddewis rhif. 1311 01:03:20,970 --> 01:03:23,910 Ond os ydych yn dweud seren, rydym yn hefyd yn derbyn hynny. 1312 01:03:23,910 --> 01:03:25,820 >> Felly dewiswch nifer o'r hyn bwrdd? 1313 01:03:25,820 --> 01:03:26,640 Cyfrifon. 1314 01:03:26,640 --> 01:03:28,370 Ac yna y cyflwr yr ydym am? 1315 01:03:28,370 --> 01:03:30,140 Pan fydd cydbwysedd yn fwy na 1,000. 1316 01:03:30,140 --> 01:03:31,720 Rydym hefyd yn derbyn mwy o na neu'n hafal. 1317 01:03:31,720 --> 01:03:35,230 1318 01:03:35,230 --> 01:03:36,190 Cafodd yr un olaf. 1319 01:03:36,190 --> 01:03:42,940 Gyda pha ymholiad SQL gallai'r banc agos, hy, dileu pob cyfrif sy'n 1320 01:03:42,940 --> 01:03:44,480 Mae cydbwysedd o $ 0? 1321 01:03:44,480 --> 01:03:47,620 Felly, pa un o'r pedwar ydym ni mynd i eisiau ei ddefnyddio? 1322 01:03:47,620 --> 01:03:48,320 Dileu. 1323 01:03:48,320 --> 01:03:50,180 Felly mae'r gystrawen ar gyfer hynny? 1324 01:03:50,180 --> 01:03:51,890 Dileu o'r hyn dabl? 1325 01:03:51,890 --> 01:03:53,550 Cyfrifon. 1326 01:03:53,550 --> 01:03:55,790 Ac yna y cyflwr y rydym am ddileu - 1327 01:03:55,790 --> 01:03:57,280 lle mae cydbwysedd yn dychwelyd sero. 1328 01:03:57,280 --> 01:04:03,050 Felly dileu pob rhes o gyfrifon ble mae'r cydbwysedd yn sero. 1329 01:04:03,050 --> 01:04:04,300 Cwestiynau ar unrhyw un o'r rhain? 1330 01:04:04,300 --> 01:04:08,840 1331 01:04:08,840 --> 01:04:10,260 Eisiau giwio? 1332 01:04:10,260 --> 01:04:11,200 >> DAVID J. Malan: Canllaw Ciw. 1333 01:04:11,200 --> 01:04:17,110 Felly, yn yr un yma, rydym yn rhoi i chi braidd strwythur cyfarwydd yr ydym yn archwilio a 1334 01:04:17,110 --> 01:04:20,450 ychydig yn y dosbarth ochr yn ochr o structs, a oedd yn ddata 1335 01:04:20,450 --> 01:04:21,910 cysylltiedig yn ysbryd strwythur. 1336 01:04:21,910 --> 01:04:24,670 Y gwahaniaeth er bod ciw yn bod yn rhaid inni gofio rywsut sy'n 1337 01:04:24,670 --> 01:04:27,900 oedd ar flaen y ciw, mewn print rhan fel y gallem wneud mwy o 1338 01:04:27,900 --> 01:04:30,530 defnydd effeithlon o'r cof, o leiaf os ydym yn defnyddio amrywiaeth. 1339 01:04:30,530 --> 01:04:35,460 >> Gan fod galw i gof, os oes gennym amrywiaeth, os, er enghraifft, mae hyn yn flaen 1340 01:04:35,460 --> 01:04:38,470 y ciw, os wyf yn mynd i mewn i'r ciw yma, ac yna rhywun yn unol 1341 01:04:38,470 --> 01:04:42,710 tu ôl i mi, tu ôl i mi, tu ôl i mi, a un person yn camu allan o linell, byddwch yn 1342 01:04:42,710 --> 01:04:45,930 gallai, fel y gwelsom rai o'n dynol gwirfoddolwyr yn y dosbarth, rhaid i bawb 1343 01:04:45,930 --> 01:04:47,100 newid y ffordd hon. 1344 01:04:47,100 --> 01:04:50,880 Ond yn gyffredinol, ar ôl pawb ei wneud Nid rhywbeth yn y defnydd gorau o amser 1345 01:04:50,880 --> 01:04:54,600 mewn rhaglen, oherwydd ei fod yn golygu bod eich algorithm yn rhedeg yn yr hyn 1346 01:04:54,600 --> 01:04:56,520 amser rhedeg asymptotic? 1347 01:04:56,520 --> 01:04:57,420 Mae'n llinol. 1348 01:04:57,420 --> 01:04:59,600 >> Ac yr wyf yn teimlo fel 'na fath o dwp. 1349 01:04:59,600 --> 01:05:02,890 Os yw'r person nesaf yn unol yw'r nesaf person sydd wedi i fod i fynd i mewn i'r 1350 01:05:02,890 --> 01:05:04,660 storio, nid ydynt yn gan bob un ohonynt i symud gyda'i gilydd. 1351 01:05:04,660 --> 01:05:08,200 Dim ond gadael y person hwnnw yn cael ei tynnu oddi ar pan ddaw'r amser, er enghraifft. 1352 01:05:08,200 --> 01:05:09,870 Felly, gallwn arbed ychydig o amser yno. 1353 01:05:09,870 --> 01:05:14,840 Ac felly i wneud hynny fodd bynnag, bod modd bod y pennaeth y ciw neu'r 1354 01:05:14,840 --> 01:05:18,060 flaen y ciw yn mynd i symud yn gynyddol yn ddyfnach ac yn ddyfnach 1355 01:05:18,060 --> 01:05:23,340 yn yr amrywiaeth ac yn y pen draw gallai mewn gwirionedd yn lapio o gwmpas os ydym yn defnyddio 1356 01:05:23,340 --> 01:05:25,790 amrywiaeth i storio'r bobl yn y ciw hwn. 1357 01:05:25,790 --> 01:05:28,390 Felly, gallwch chi bron feddwl am y amrywiaeth fel data cylchlythyr 1358 01:05:28,390 --> 01:05:29,880 strwythur yn yr ystyr hwnnw. 1359 01:05:29,880 --> 01:05:33,970 >> Felly, mae'n rhaid i chi rywsut i gadw golwg ar y maint neu yn wir y diwedd 1360 01:05:33,970 --> 01:05:36,250 ac yna pan dechrau ydyw. 1361 01:05:36,250 --> 01:05:39,490 Felly, rydym yn cynnig eich bod yn datgan un ciw o'r fath, galw 1362 01:05:39,490 --> 01:05:41,330 mae'n q, un llythyr yn unig. 1363 01:05:41,330 --> 01:05:44,570 Yna, rydym yn cynnig y blaen fod yn ymgychwyn i sero a bod y maint 1364 01:05:44,570 --> 01:05:45,470 ei hymgychwyn i sero. 1365 01:05:45,470 --> 01:05:47,770 >> Felly ar hyn o bryd, does dim byd tu mewn y ciw. 1366 01:05:47,770 --> 01:05:50,910 Ac rydym yn gofyn i chi gwblhau'r gweithredu enqueue isod 1367 01:05:50,910 --> 01:05:55,250 fath fodd fel bod y swyddogaeth yn ychwanegu n i diwedd q ac yna'n dychwelyd yn wir. 1368 01:05:55,250 --> 01:05:58,690 Ond os q yn llawn neu negyddol, y Dylai swyddogaeth yn hytrach na dychwelyd ffug. 1369 01:05:58,690 --> 01:06:01,060 Ac rydym yn rhoi cwpl i chi o dybiaethau. 1370 01:06:01,060 --> 01:06:04,320 Ond nid ydynt yn wirioneddol swyddogaethol perthnasol, dim ond bod bool yn bodoli, 1371 01:06:04,320 --> 01:06:06,690 oherwydd, yn dechnegol, nid yw bool yn bodoli yn C oni bai eich bod yn cynnwys 1372 01:06:06,690 --> 01:06:07,310 ffeil pennawd penodol. 1373 01:06:07,310 --> 01:06:09,350 Felly, a oedd dim ond gwnewch yn siŵr bod dim yn mae hyn yn gamp 1374 01:06:09,350 --> 01:06:10,940 cwestiwn math yna o beth. 1375 01:06:10,940 --> 01:06:16,280 >> Felly enqueue, fe wnaethom gynnig yn y sampl atebion i weithredu fel a ganlyn. 1376 01:06:16,280 --> 01:06:20,420 Un, rydym yn gyntaf yn gwirio pa mor hawdd, y ffrwythau isel-hongian. 1377 01:06:20,420 --> 01:06:23,820 Os y ciw yn llawn neu y nifer a ydych yn ceisio i fewnosod yn llai 1378 01:06:23,820 --> 01:06:26,380 na sero, a ddywedodd gennym yn y manyleb y broblem dylai 1379 01:06:26,380 --> 01:06:30,320 Nid yw cael ei ganiatáu, gan mai dim ond am gwerthoedd nad ydynt yn negatif, yna dylech 1380 01:06:30,320 --> 01:06:31,640 dim ond yn dychwelyd ffug ar unwaith. 1381 01:06:31,640 --> 01:06:33,820 Felly, mae rhai yn gymharol hawdd gwall gwirio. 1382 01:06:33,820 --> 01:06:38,720 Os pe baech eisiau ychwanegu bod gwir rhif, bu'n rhaid i chi wneud ychydig o 1383 01:06:38,720 --> 01:06:39,440 meddwl yma. 1384 01:06:39,440 --> 01:06:41,330 A dyma lle mae ychydig yn blino feddyliol, oherwydd eich bod yn rhaid i 1385 01:06:41,330 --> 01:06:43,000 chyfrif i maes sut i ymdrin cofleidiol. 1386 01:06:43,000 --> 01:06:46,870 >> Ond mae'r germ y syniad yma y sydd o ddiddordeb i ni yw bod cofleidiol 1387 01:06:46,870 --> 01:06:51,480 yn aml yn awgrymu rhifyddeg modiwlaidd a y gweithredwr mod, yr ochr y cant, 1388 01:06:51,480 --> 01:06:55,140 lle gallwch fynd o werth mwy yn ôl i sero ac yna un a dau a 1389 01:06:55,140 --> 01:06:58,650 tri ac yna yn ôl o gwmpas i sero, un a dau a thri ac yn y blaen 1390 01:06:58,650 --> 01:06:59,380 dro ar ôl tro. 1391 01:06:59,380 --> 01:07:02,880 Felly, y ffordd yr ydym yn bwriadu gwneud hyn yw ein bod yn dymuno mynegai i mewn i'r 1392 01:07:02,880 --> 01:07:05,850 amrywiaeth Gelwir rhifau lle ein cyfanrifau yn gorwedd. 1393 01:07:05,850 --> 01:07:10,740 Ond i gyrraedd yno, rydym yn gyntaf am ei wneud beth bynnag fo maint y ciw yn ond 1394 01:07:10,740 --> 01:07:14,080 yna ychwanegu at hynny beth bynnag fo'r flaen y rhestr yn. 1395 01:07:14,080 --> 01:07:17,880 Ac effaith hynny yw yn ein rhoi ar y safle cywir yn y ciw a 1396 01:07:17,880 --> 01:07:20,970 Nid yw cymryd yn ganiataol bod y person cyntaf yn unol ar y dechrau, mae ef neu 1397 01:07:20,970 --> 01:07:24,130 hi Gallai gwbl fod os ydym yn hefyd symud bawb. 1398 01:07:24,130 --> 01:07:26,710 Ond rydym yn unig creu gwaith i ni ein hunain os ydym yn cymryd 1399 01:07:26,710 --> 01:07:27,800 y llwybr penodol. 1400 01:07:27,800 --> 01:07:29,330 >> Er mwyn i ni gadw'n gymharol syml. 1401 01:07:29,330 --> 01:07:32,180 Oes rhaid i ni gofio ein bod yn unig ychwanegu int at y ciw. 1402 01:07:32,180 --> 01:07:35,850 Ac yna rydym yn unig yn dychwelyd yn wir. 1403 01:07:35,850 --> 01:07:38,560 Yn y cyfamser, yn dequeue, gofynnwyd i i chi wneud y canlynol. 1404 01:07:38,560 --> 01:07:42,260 Roi ar waith yn y fath fodd fel ei fod yn dequeues, hynny yw yn tynnu'r a ffurflenni, 1405 01:07:42,260 --> 01:07:44,190 y int ar flaen y ciw. 1406 01:07:44,190 --> 01:07:46,410 Er mwyn cael gwared ar y int, mae'n suffices i anghofio. 1407 01:07:46,410 --> 01:07:47,650 Nid oes angen i chi i droi'r fantol yn ei ychydig. 1408 01:07:47,650 --> 01:07:48,820 Felly, mae'n dal i fod mewn gwirionedd yno. 1409 01:07:48,820 --> 01:07:51,930 Yn union fel data ar yriant caled, ni jyst yn anwybyddu'r ffaith 1410 01:07:51,930 --> 01:07:52,970 ei fod erbyn hyn mae. 1411 01:07:52,970 --> 01:07:55,520 Ac os q yn wag, dylem yn lle hynny yn dychwelyd negyddol 1. 1412 01:07:55,520 --> 01:07:56,750 Felly, mae hyn yn teimlo mympwyol. 1413 01:07:56,750 --> 01:08:01,640 Pam dychwelyd negyddol 1 yn hytrach na ffug? 1414 01:08:01,640 --> 01:08:02,620 Yeah. 1415 01:08:02,620 --> 01:08:05,070 >> GYNULLEIDFA: Q yn storio gwerthoedd cadarnhaol. 1416 01:08:05,070 --> 01:08:10,950 Gan mai dim ond storio gwerthoedd cadarnhaol yn y q, negyddol yn gamgymeriad. 1417 01:08:10,950 --> 01:08:11,510 >> DAVID J. Malan: OK, yn wir. 1418 01:08:11,510 --> 01:08:14,850 Felly, oherwydd ein bod yn unig yn storio cadarnhaol werthoedd neu sero, yna mae'n iawn i 1419 01:08:14,850 --> 01:08:18,050 dychwelyd gwerth negyddol fel sentinel gwerth, yn symbol arbennig. 1420 01:08:18,050 --> 01:08:21,630 Ond eich bod yn ailysgrifennu hanes yno, oherwydd bod y rheswm rydym yn unig 1421 01:08:21,630 --> 01:08:25,890 dychwelyd gwerthoedd nad ydynt yn negatif oherwydd ein bod yn awyddus i 1422 01:08:25,890 --> 01:08:27,670 â gwerth sentinel. 1423 01:08:27,670 --> 01:08:32,617 Felly yn fwy penodol, pam na dim ond dychwelyd ffug mewn achosion o gamgymeriadau? 1424 01:08:32,617 --> 01:08:33,099 Yeah. 1425 01:08:33,099 --> 01:08:35,510 >> GYNULLEIDFA: Rydych chi wedi methu i ddychwelyd yn gyfanrif. 1426 01:08:35,510 --> 01:08:36,630 >> DAVID J. Malan: Yn union. 1427 01:08:36,630 --> 01:08:38,569 A dyma lle C yn cael cyfyngol 'n bert. 1428 01:08:38,569 --> 01:08:40,590 Os ydych yn dweud eich bod yn mynd i dychwelyd int, oes gennych chi 1429 01:08:40,590 --> 01:08:41,279 i dychwelyd int. 1430 01:08:41,279 --> 01:08:43,689 Ni allwch gael ffansi a dechrau dychwelyd yn bool neu fflôt neu 1431 01:08:43,689 --> 01:08:45,040 llinyn neu rywbeth fel 'na. 1432 01:08:45,040 --> 01:08:49,370 Yn awr, yn y cyfamser, JavaScript a PHP a Gall rhai ieithoedd eraill, mewn gwirionedd, 1433 01:08:49,370 --> 01:08:51,310 ydych chi wedi dychwelyd gwahanol mathau o werthoedd. 1434 01:08:51,310 --> 01:08:54,819 A gall fod yn ddefnyddiol mewn gwirionedd, lle yn gallu dychwelyd ints cadarnhaol, sero, 1435 01:08:54,819 --> 01:08:59,439 ints negyddol, neu anwir neu null hyd yn oed i ddynodi gwall. 1436 01:08:59,439 --> 01:09:01,890 Ond nid ydym yn cael y hyblygrwydd yn C. 1437 01:09:01,890 --> 01:09:04,569 >> Felly, gyda dequeue, yr hyn yr ydym yn bwriadu ei wneud yw - 1438 01:09:04,569 --> 01:09:07,350 1439 01:09:07,350 --> 01:09:09,830 >> ROB BOWDEN: Gallwch ddychwelyd ffug. 1440 01:09:09,830 --> 01:09:13,189 Mae'n dim ond bod ffug yn hash diffinio ffug i sero. 1441 01:09:13,189 --> 01:09:16,000 Felly, os byddwch yn dychwelyd ffug, rydych yn dychwelyd sero. 1442 01:09:16,000 --> 01:09:25,470 A dim yn beth ddilys yn ein ciw, ond nid negyddol 1 yw os 1443 01:09:25,470 --> 01:09:27,000 digwydd ffug i fod yn negyddol 1. 1444 01:09:27,000 --> 01:09:29,972 Ond ni dylech hyd yn oed angen i ni wybod hynny. 1445 01:09:29,972 --> 01:09:32,399 >> DAVID J. Malan: Mae hynny'n pam nad oeddwn yn ei ddweud. 1446 01:09:32,399 --> 01:09:36,450 >> ROB BOWDEN: Ond nid oedd yn wir nad oes modd i chi ddychwelyd ffug. 1447 01:09:36,450 --> 01:09:37,700 >> DAVID J. Malan: Cadarn. 1448 01:09:37,700 --> 01:09:40,920 1449 01:09:40,920 --> 01:09:44,240 Felly dequeue, sylwch ein bod yn derbyn gwag fel ei ddadl. 1450 01:09:44,240 --> 01:09:45,479 A dyna oherwydd nad ydym yn pasio unrhyw beth i mewn 1451 01:09:45,479 --> 01:09:48,359 Rydym yn unig yn awyddus i gael gwared ar yr elfen ar flaen y ciw. 1452 01:09:48,359 --> 01:09:49,819 Felly, sut y byddwn yn mynd ati i wneud hyn? 1453 01:09:49,819 --> 01:09:51,290 Wel, yn gyntaf, gadewch i ni wneud hyn gwiriad sanity gyflym. 1454 01:09:51,290 --> 01:09:53,350 Os yw maint ciw yn 0, mae dim gwaith i'w wneud o hyd. 1455 01:09:53,350 --> 01:09:54,210 Dychwelyd negyddol 1. 1456 01:09:54,210 --> 01:09:54,800 Wneud. 1457 01:09:54,800 --> 01:09:56,340 Felly dyna ychydig linellau o fy rhaglen. 1458 01:09:56,340 --> 01:09:58,180 Felly, dim ond pedair llinell yn parhau. 1459 01:09:58,180 --> 01:10:01,310 >> Felly dyma fi yn penderfynu lleihau a y maint. 1460 01:10:01,310 --> 01:10:04,620 Ac decrementing maint yn effeithiol yn golygu fy mod yn anghofio 1461 01:10:04,620 --> 01:10:06,010 rhywbeth yn y fan honno. 1462 01:10:06,010 --> 01:10:09,910 Ond rhaid i mi hefyd i ddiweddaru lle flaen y niferoedd yn. 1463 01:10:09,910 --> 01:10:11,620 Felly, er mwyn gwneud hynny, mae angen imi i wneud dau beth. 1464 01:10:11,620 --> 01:10:16,390 Angen i mi gofio hyn y mae'r rhif cyntaf ar flaen y ciw, 1465 01:10:16,390 --> 01:10:17,860 oherwydd mae angen i mi ddychwelyd y peth. 1466 01:10:17,860 --> 01:10:20,910 Felly, nid wyf am i anghofio ddamweiniol am y peth ac yna ysgrifennu drosto. 1467 01:10:20,910 --> 01:10:22,840 Im 'jyst yn mynd i gofio mewn int. 1468 01:10:22,840 --> 01:10:27,310 >> Ac yn awr, yr wyf am i ddiweddaru q.front i gael ei q.front 1. 1469 01:10:27,310 --> 01:10:30,070 Felly, os yw hyn oedd y person cyntaf yn llinell, yn awr, yr wyf am ei wneud ac 1 i 1470 01:10:30,070 --> 01:10:31,930 pwyntio at y person nesaf yn unol. 1471 01:10:31,930 --> 01:10:33,420 Ond rhaid i mi drin y cofleidiol. 1472 01:10:33,420 --> 01:10:37,270 Ac os capasiti yn gysonyn byd-eang, mae hynny'n mynd i fy ngalluogi i wneud yn siŵr 1473 01:10:37,270 --> 01:10:41,140 gan fy mod yn cyfeirio at y person olaf un yn lein, bydd y llawdriniaeth yn modwlo yn dod â 1474 01:10:41,140 --> 01:10:43,840 mi yn ôl i sero yn y flaen y ciw. 1475 01:10:43,840 --> 01:10:46,050 A bod yn ymdrin â'r cofleidiol yma. 1476 01:10:46,050 --> 01:10:48,950 Ac yna yr wyf yn symud ymlaen i ddychwelyd n. 1477 01:10:48,950 --> 01:10:51,530 >> Yn awr, yn fanwl gywir, doeddwn i ddim rhaid i ddatgan n. 1478 01:10:51,530 --> 01:10:53,880 Nid oedd rhaid i mi chrafangia 'ac yn ei storio dros dro, oherwydd bod y gwerth yn 1479 01:10:53,880 --> 01:10:54,740 dal i fod yno. 1480 01:10:54,740 --> 01:10:57,490 Felly, gallai Fi jyst gwneud y rhifyddeg cywir i ddychwelyd y cyn bennaeth 1481 01:10:57,490 --> 01:10:58,450 y ciw. 1482 01:10:58,450 --> 01:11:01,850 Ond Fi jyst yn teimlo bod hyn yn fwy clir i mewn gwirionedd yn chrafangia 'r int, roi 1483 01:11:01,850 --> 01:11:04,320 yn n, ac yna dychwelyd y er mwyn eglurder, ond 1484 01:11:04,320 --> 01:11:05,735 nid yn gwbl angenrheidiol. 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 Maen nhw i gyd pronounceable yn fy mhen. 1488 01:11:13,410 --> 01:11:15,940 1489 01:11:15,940 --> 01:11:19,110 >> ROB BOWDEN: Cwestiwn Felly cyntaf yw'r broblem goeden ddeuol. 1490 01:11:19,110 --> 01:11:22,140 Cwestiwn Felly cyntaf yw, rydym yn rhoddir rhifau hyn. 1491 01:11:22,140 --> 01:11:27,160 Ac rydym eisiau eu mewnosod rywsut i nodau hyn fel ei fod yn 1492 01:11:27,160 --> 01:11:30,110 coeden chwiliad deuaidd dilys. 1493 01:11:30,110 --> 01:11:36,260 Felly, un peth i'w gofio am coed chwiliad deuaidd yw nad yw'n 1494 01:11:36,260 --> 01:11:39,800 dim ond bod y peth ar y chwith yn llai ac yn y peth i 1495 01:11:39,800 --> 01:11:41,120 y dde yn fwy. 1496 01:11:41,120 --> 01:11:44,580 Mae angen iddo fod bod y goeden gyfan i y chwith yn llai, ac mae'r goeden gyfan 1497 01:11:44,580 --> 01:11:45,740 i'r dde yn fwy. 1498 01:11:45,740 --> 01:11:55,260 >> Felly os wyf yn rhoi 34 yma ar y brig, ac yna Yr wyf yn rhoi 20 yma, felly mae hynny'n ddilys, felly 1499 01:11:55,260 --> 01:11:56,970 yn hyn, gan fod 34 i fyny yma. 1500 01:11:56,970 --> 01:11:57,920 20 yn mynd i'r chwith. 1501 01:11:57,920 --> 01:11:58,950 Felly dyna llai. 1502 01:11:58,950 --> 01:12:03,640 Ond ni allaf yna rhowch 59 yma, oherwydd er bod 59 ar y dde o 20, 1503 01:12:03,640 --> 01:12:06,140 mae'n dal i fod ar y chwith o 34. 1504 01:12:06,140 --> 01:12:10,760 Felly, gyda y cyfyngiad mewn cof, mae'r ffordd hawsaf o yn ôl pob tebyg ddatrys y 1505 01:12:10,760 --> 01:12:14,330 broblem ydy at jyst fath o'r rhifau hyn - 1506 01:12:14,330 --> 01:12:18,720 felly 20, 34, 36, 52, 59, 106. 1507 01:12:18,720 --> 01:12:21,640 Ac yna rhowch y rhai o'r chwith i'r dde. 1508 01:12:21,640 --> 01:12:23,390 >> Felly 20 yn mynd yma. 1509 01:12:23,390 --> 01:12:24,630 34 yn mynd yma. 1510 01:12:24,630 --> 01:12:25,830 36 yn mynd yma. 1511 01:12:25,830 --> 01:12:29,360 52, 59, 106. 1512 01:12:29,360 --> 01:12:34,730 Ac rydych hefyd fod wedi cyfrifedig allan gyda rhai plygio i mewn a sylweddoli, 1513 01:12:34,730 --> 01:12:38,830 oh, aros, nid oes gennyf ddigon o rifau i lenwi'r mewn dros yma. 1514 01:12:38,830 --> 01:12:42,170 Felly mae angen i mi reshift beth yw fy nodyn llwybr yn mynd i fod. 1515 01:12:42,170 --> 01:12:47,490 Ond yn sylwi bod yn y tri olaf, os eich bod yn darllen o'r chwith i'r dde, y mae yn 1516 01:12:47,490 --> 01:12:48,740 gorchymyn cynyddol. 1517 01:12:48,740 --> 01:12:52,150 1518 01:12:52,150 --> 01:12:56,540 >> Felly nawr, rydym yn awyddus i ddatgan yr hyn y mae'r strwythur yn mynd i fod ar gyfer y 1519 01:12:56,540 --> 01:12:58,300 nodau yn y goeden hon. 1520 01:12:58,300 --> 01:13:02,720 Felly beth sydd ei angen arnom mewn coeden deuaidd? 1521 01:13:02,720 --> 01:13:05,830 Felly mae gennym gwerth y math int, felly mae rhai gwerth int. 1522 01:13:05,830 --> 01:13:07,220 Nid wyf yn gwybod yr hyn yr ydym a elwir yn yn yr ateb - 1523 01:13:07,220 --> 01:13:08,500 int n. 1524 01:13:08,500 --> 01:13:13,570 Mae angen pwyntydd i'r plentyn chwith a pwyntydd i'r plentyn cywir. 1525 01:13:13,570 --> 01:13:17,540 Felly, mae'n mynd i edrych fel hyn. 1526 01:13:17,540 --> 01:13:20,510 A bydd yn mewn gwirionedd yn edrych cyn pan wnaeth y-gysylltiedig ddwbl 1527 01:13:20,510 --> 01:13:25,090 rhestr stwff, felly rybudd - 1528 01:13:25,090 --> 01:13:27,860 Rydw i'n mynd i gael i sgrolio holl ffordd yn ôl i lawr i broblem 11. 1529 01:13:27,860 --> 01:13:30,980 1530 01:13:30,980 --> 01:13:36,390 >> Felly, yn sylwi ei fod yn edrych yn union i hyn, ac eithrio rydym yn unig yn digwydd i alw hyn 1531 01:13:36,390 --> 01:13:38,590 enwau gwahanol. 1532 01:13:38,590 --> 01:13:41,440 Mae gennym o hyd yn gyfanrif gwerth a dau awgrymiadau. 1533 01:13:41,440 --> 01:13:44,850 Mae'n dim ond bod yn lle o drin y awgrymiadau yn pwyntio at y peth nesaf 1534 01:13:44,850 --> 01:13:47,955 a'r peth blaenorol, rydym yn trin y awgrymiadau i bwyntio i blentyn chwith 1535 01:13:47,955 --> 01:13:49,205 a phlentyn dde. 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 Felly dyna ein nod strwythur. 1539 01:13:59,650 --> 01:14:03,920 Ac yn awr, yr unig swyddogaeth mae angen i ni yn gweithredu ar gyfer hyn yn daith, a oedd yn 1540 01:14:03,920 --> 01:14:08,320 rydym eisiau mynd dros y goeden, argraffu gwerthoedd y goeden mewn trefn. 1541 01:14:08,320 --> 01:14:15,241 >> Felly edrych yma, byddem eisiau argraffu allan 20, 34, 36, 52, 59, a 106. 1542 01:14:15,241 --> 01:14:17,970 Sut ydym yn cyflawni hynny? 1543 01:14:17,970 --> 01:14:18,890 Felly, mae'n eithaf tebyg. 1544 01:14:18,890 --> 01:14:22,910 Os ydych yn gweld yn yr arholiad diwethaf y broblem eich bod am i argraffu 1545 01:14:22,910 --> 01:14:25,940 y goeden cyfan gyda atalnodau yn y canol popeth, yr oedd mewn gwirionedd hyd yn oed yn 1546 01:14:25,940 --> 01:14:27,320 yn haws na hynny. 1547 01:14:27,320 --> 01:14:30,950 Felly dyma yw'r ateb. 1548 01:14:30,950 --> 01:14:33,110 Roedd hyn yn sylweddol yn haws os ydych yn gwneud hynny recursively. 1549 01:14:33,110 --> 01:14:36,650 Nid wyf yn gwybod os oes unrhyw un yn ceisio i wneud hynny iteraidd. 1550 01:14:36,650 --> 01:14:38,340 >> Ond yn gyntaf, rydym wedi ein achos sylfaenol. 1551 01:14:38,340 --> 01:14:39,660 Beth os bydd y gwraidd yn null? 1552 01:14:39,660 --> 01:14:40,610 Yna, rydym yn jyst yn mynd i ddychwelyd. 1553 01:14:40,610 --> 01:14:42,300 Nid ydym am i argraffu unrhyw beth. 1554 01:14:42,300 --> 01:14:45,940 Arall rydym yn mynd i groesi recursively i lawr. 1555 01:14:45,940 --> 01:14:48,140 Argraffwch y cyfan Terfynau chwith. 1556 01:14:48,140 --> 01:14:51,440 Felly argraffu popeth llai na fy ngwerth cyfredol. 1557 01:14:51,440 --> 01:14:53,930 Ac yna yr wyf i'n mynd i argraffu fy hun. 1558 01:14:53,930 --> 01:14:57,310 Ac yna dwi'n mynd i recurse i lawr fy Terfynau dde cyfan, felly mae popeth 1559 01:14:57,310 --> 01:14:58,810 fwy na fy ngwerth. 1560 01:14:58,810 --> 01:15:03,870 Ac mae hyn yn mynd i argraffu allan popeth mewn trefn. 1561 01:15:03,870 --> 01:15:05,860 Cwestiynau ar sut y mae hyn mewn gwirionedd yn yn cyflawni'r hynny? 1562 01:15:05,860 --> 01:15:09,892 1563 01:15:09,892 --> 01:15:12,545 >> GYNULLEIDFA: Mae gennyf gwestiwn ar y [Anghlywadwy]. 1564 01:15:12,545 --> 01:15:15,090 1565 01:15:15,090 --> 01:15:23,550 >> ROB BOWDEN: Felly, un ffordd o ymdrin unrhyw broblem ailadroddus ydy at jyst meddwl 1566 01:15:23,550 --> 01:15:26,275 am y peth yn hoffi rhaid i chi feddwl am yr holl achosion gornel. 1567 01:15:26,275 --> 01:15:32,150 1568 01:15:32,150 --> 01:15:38,110 Felly ystyriwch yr ydym am i argraffwch y goeden gyfan. 1569 01:15:38,110 --> 01:15:42,030 Fel bod yr holl ydym yn mynd i ganolbwyntio ar mae hyn yn nod penodol - 1570 01:15:42,030 --> 01:15:43,740 36. 1571 01:15:43,740 --> 01:15:47,420 Mae'r galwadau ailadroddus, rydym yn esgus y rhai yn unig yn gweithio. 1572 01:15:47,420 --> 01:15:54,000 Felly dyma, mae hyn yn alwad ailadroddus i Traverse, yr ydym heb hyd yn oed feddwl 1573 01:15:54,000 --> 01:15:58,640 am y peth, dim ond croesi y chwith tri, dychmygwch fod eisoes printiau 20 1574 01:15:58,640 --> 01:16:00,730 a 34 i ni. 1575 01:16:00,730 --> 01:16:03,350 Ac yna pan fyddwn yn y pen draw recursively ffoniwch daith ar y 1576 01:16:03,350 --> 01:16:07,890 iawn, a fydd yn argraffu yn gywir 52, 59, a 106 i ni. 1577 01:16:07,890 --> 01:16:13,620 >> Felly, o gofio y gall hyn argraffu 20, 34, a gall y llall argraffu 52, 59, 108, 1578 01:16:13,620 --> 01:16:17,180 mae angen i ni fod yn gallu ei wneud yw argraffu ni ein hunain yng nghanol hynny. 1579 01:16:17,180 --> 01:16:21,250 Felly argraffu popeth ger ein bron. 1580 01:16:21,250 --> 01:16:27,710 Argraffu ni ein hunain, felly mae'r print nod ar hyn o bryd 36, printf rheolaidd, ac yna 1581 01:16:27,710 --> 01:16:31,170 argraffu popeth ar ôl i ni. 1582 01:16:31,170 --> 01:16:32,730 >> DAVID J. Malan: Dyma lle recursion yn mynd yn wirioneddol brydferth. 1583 01:16:32,730 --> 01:16:36,270 Mae'n y naid anhygoel o ffydd lle chi wneud y darn lleiaf o waith. 1584 01:16:36,270 --> 01:16:38,460 Ac yna byddwch yn gadael i rywun arall yn gwneud y gweddill. 1585 01:16:38,460 --> 01:16:40,180 A bod rhywun arall yw, yn eironig, i chi. 1586 01:16:40,180 --> 01:16:44,260 1587 01:16:44,260 --> 01:16:48,360 Felly, ar gyfer pwyntiau browni difrifol, os i chi sgrolio i fyny ar y cwestiynau - 1588 01:16:48,360 --> 01:16:50,530 >> ROB BOWDEN: Ar y cwestiynau? 1589 01:16:50,530 --> 01:16:53,490 >> DAVID J. Malan: Ac i lawr ychydig i niferoedd, oes unrhyw un yn gwybod ble 1590 01:16:53,490 --> 01:16:55,190 dod rhifau hyn yn dod? 1591 01:16:55,190 --> 01:16:56,610 >> ROB BOWDEN: Nid oes gennyf llythrennol ddim syniad. 1592 01:16:56,610 --> 01:16:59,794 >> DAVID J. Malan: Maent yn ymddangos drwy gydol y cwis. 1593 01:16:59,794 --> 01:17:01,150 >> GYNULLEIDFA: Ydyn nhw yr un rhifau? 1594 01:17:01,150 --> 01:17:01,910 >> DAVID J. Malan: niferoedd y rhai. 1595 01:17:01,910 --> 01:17:03,260 Mae wy Pasg bach. 1596 01:17:03,260 --> 01:17:08,100 Felly, ar gyfer y rhai ohonoch gwylio ar-lein yn cartref, os gallwch ddweud wrthym drwy e-bost i 1597 01:17:08,100 --> 01:17:12,680 heads@CS50.net beth yw arwyddocâd o'r rhain yn digwydd eto chwe niferoedd yn 1598 01:17:12,680 --> 01:17:18,560 ledled Cwis 1, byddwn yn cawod i chi gyda sylw anhygoel yn y rownd derfynol 1599 01:17:18,560 --> 01:17:21,610 darlith a phêl straen. 1600 01:17:21,610 --> 01:17:25,460 1601 01:17:25,460 --> 01:17:27,790 Nice, cynnil. 1602 01:17:27,790 --> 01:17:29,570 >> ROB BOWDEN: Unrhyw gwestiynau ddiwethaf am unrhyw beth ar y cwis? 1603 01:17:29,570 --> 01:17:32,608