1 00:00:00,000 --> 00:00:02,405 >> [CHWARAE CERDDORIAETH] 2 00:00:02,405 --> 00:00:10,439 3 00:00:10,439 --> 00:00:11,980 DAVID Malan: pob hawl, mae hyn yn CS50. 4 00:00:11,980 --> 00:00:13,740 Mae hyn yn y diwedd yr wythnos wyth. 5 00:00:13,740 --> 00:00:15,887 A heddiw, rydym yn dechrau i lenwi rhai darnau 6 00:00:15,887 --> 00:00:17,720 pan ddaw i adeiladu pethau ar y we. 7 00:00:17,720 --> 00:00:20,020 Felly, dwyn i gof bod ar ddydd Llun rydym yn treulio llawer mwy o amser 8 00:00:20,020 --> 00:00:22,530 ar PHP, sy'n ddeinamig hon iaith raglennu sy'n 9 00:00:22,530 --> 00:00:26,872 gadael i ni allbwn, ymhlith eraill pethau, HTML a chynnwys arall o'r fath 10 00:00:26,872 --> 00:00:27,830 y byddwn ydym am ei weld. 11 00:00:27,830 --> 00:00:30,871 Ond nid ydym wedi edrych mewn gwirionedd ar sut rydym yn mynd i storio unrhyw wybodaeth. 12 00:00:30,871 --> 00:00:34,477 Yn wir, mae bron unrhyw un bod y super Gwefannau diddorol y byddwch yn ymweld heddiw 13 00:00:34,477 --> 00:00:36,560 cael rhyw fath o gronfa ddata ar y pen ôl, dde? 14 00:00:36,560 --> 00:00:39,540 Facebook yn sicr yn storio llawer o ddata am bob un ohonom a siopau Gmail i gyd 15 00:00:39,540 --> 00:00:40,210 eich negeseuon e-bost. 16 00:00:40,210 --> 00:00:44,150 >> Ac felly, nid yw llawer o safleoedd eraill yn unig cynnwys statig dyna gwybodaeth. 17 00:00:44,150 --> 00:00:45,640 Mae'n mewn gwirionedd ddeinamig mewn rhyw ffordd. 18 00:00:45,640 --> 00:00:48,480 Rydych yn darparu mewnbwn, mae'n diweddaru y tudalennau ar gyfer pobl eraill. 19 00:00:48,480 --> 00:00:50,620 Byddwch yn cael negeseuon, i chi anfon negeseuon, ac yn y blaen. 20 00:00:50,620 --> 00:00:54,250 Felly heddiw, rydym yn edrych yn fanylach ar y sylfeini o brosiect 21 00:00:54,250 --> 00:00:57,330 y byddwch yn plymio i mewn nesaf wythnos, CS50 Cyllid, a oedd yn 22 00:00:57,330 --> 00:01:00,509 mewn gwirionedd yn mynd i gael i chi adeiladu rhywbeth na yn C, ond yn PHP. 23 00:01:00,509 --> 00:01:02,550 Gwefan sy'n edrych yn ychydig iawn o rhywbeth fel hyn 24 00:01:02,550 --> 00:01:05,810 sy'n caniatáu i brynu a gwerthu stociau sydd mewn gwirionedd yn 25 00:01:05,810 --> 00:01:09,044 mynd i dynnu ar amser real data stoc o Yahoo Cyllid. 26 00:01:09,044 --> 00:01:11,960 Ac felly yn y pen draw, byddwch yn cael y rhith i chi eich hun ac ar gyfer defnyddwyr 27 00:01:11,960 --> 00:01:14,550 eich bod yn mewn gwirionedd yn prynu a gwerthu stociau a chael amser bron real 28 00:01:14,550 --> 00:01:16,800 diweddariadau, rheoli portffolio, pob un ohonynt 29 00:01:16,800 --> 00:01:20,310 yn mynd i'w gwneud yn ofynnol cael, yn y pen draw, cronfa ddata o ddefnyddwyr. 30 00:01:20,310 --> 00:01:23,330 >> Felly, yn eich geiriau eich hun, yn enwedig os nad ydych yn 31 00:01:23,330 --> 00:01:25,670 super gyfarwydd â chyfrifiadur gwyddoniaeth neu gronfeydd data, beth 32 00:01:25,670 --> 00:01:30,790 ydych chi'n gwybod cronfa ddata i fod yn ar hyn o bryd, mewn termau nontechnical? 33 00:01:30,790 --> 00:01:32,300 Beth yw e? 34 00:01:32,300 --> 00:01:36,882 Sut fyddech chi'n disgrifio ei i roommate neu ffrind? 35 00:01:36,882 --> 00:01:40,100 >> GYNULLEIDFA: [Anghlywadwy] Gwybodaeth [Anghlywadwy] 36 00:01:40,100 --> 00:01:44,430 >> DAVID Malan: Felly, rhestr o wybodaeth, neu store-- rhestr o wybodaeth 37 00:01:44,430 --> 00:01:47,160 efallai y byddwch am i storio am rywbeth, fel defnyddiwr. 38 00:01:47,160 --> 00:01:50,190 A beth mae defnyddwyr yn cael gysylltiedig â hwy? 39 00:01:50,190 --> 00:01:53,160 Os ydych chi'n ddefnyddiwr ar Facebook neu Gmail, beth yw nodweddion 40 00:01:53,160 --> 00:01:54,940 bod pob un ohonom ddefnyddwyr? 41 00:01:54,940 --> 00:01:58,530 Fel, beth allai fod rhai o'r colofnau yn y daenlen yr ydym 42 00:01:58,530 --> 00:01:59,390 cyfeiriwyd tro diwethaf? 43 00:01:59,390 --> 00:02:01,140 Oherwydd unwaith eto, gallwch meddwl am gronfa ddata 44 00:02:01,140 --> 00:02:05,810 'n sylweddol fel ffansi ffeil Excel neu Google Taenlen neu Apple ffeil Rhifau. 45 00:02:05,810 --> 00:02:08,280 >> Felly, beth yw eich barn am pan fyddwch yn meddwl defnyddiwr? 46 00:02:08,280 --> 00:02:11,290 Beth sydd ganddynt? 47 00:02:11,290 --> 00:02:11,790 Beth yw hwnna? 48 00:02:11,790 --> 00:02:12,470 >> GYNULLEIDFA: A enw. 49 00:02:12,470 --> 00:02:13,303 >> DAVID Malan: A enw. 50 00:02:13,303 --> 00:02:16,840 Felly, os enw, fel, David Malan fyddai enw'r rai defnyddwyr. 51 00:02:16,840 --> 00:02:17,980 Beth arall mae defnyddiwr ei gael? 52 00:02:17,980 --> 00:02:18,770 >> GYNULLEIDFA: Mae adnabod. 53 00:02:18,770 --> 00:02:19,561 >> DAVID Malan: Mae adnabod. 54 00:02:19,561 --> 00:02:23,320 Felly, fel rhif adnabod, fel eich Harvard ID neu eich Rhif Adnabod Net Yale neu debyg. 55 00:02:23,320 --> 00:02:24,923 Beth arall allai defnyddiwr ei gael? 56 00:02:24,923 --> 00:02:25,890 >> GYNULLEIDFA: Cyfrinair. 57 00:02:25,890 --> 00:02:29,240 >> DAVID Malan: A cyfrinair, efallai bydd cyfeiriad, efallai rhif ffôn, efallai 58 00:02:29,240 --> 00:02:30,050 cyfeiriad e-bost. 59 00:02:30,050 --> 00:02:32,640 Felly, mae tusw o gaeau ac mae hyn Gallai fath o fynd allan o reolaeth 60 00:02:32,640 --> 00:02:34,760 yn gyflym cyn gynted ag y byddwch yn dechrau gwireddu, oh, gadewch i storio'r hyn 61 00:02:34,760 --> 00:02:36,190 a gadewch i ni storio'r hyn a'r llall. 62 00:02:36,190 --> 00:02:37,657 >> Ond sut ydym ni'n ei wneud hynny? 63 00:02:37,657 --> 00:02:39,740 Felly unwaith eto, mae'r model meddyliol i gael ar gyfer heddiw wrth i ni 64 00:02:39,740 --> 00:02:42,320 plymio i mewn i SQL gwirioneddol, Iaith Ymholiad Strwythuredig, 65 00:02:42,320 --> 00:02:44,186 yn gronfa ddata sy'n edrych fel hyn. 66 00:02:44,186 --> 00:02:45,310 'I' jyst rhesi a cholofnau. 67 00:02:45,310 --> 00:02:48,309 A gallwch ddychmygu Google Taenlenni neu unrhyw nifer o raglenni eraill. 68 00:02:48,309 --> 00:02:52,130 Ond yr hyn sy'n allweddol am MySQL, sef y meddalwedd cronfa ddata rydym yn mynd i'w ddefnyddio, 69 00:02:52,130 --> 00:02:54,920 y rhydd agored available-- defnyddiau Facebook 70 00:02:54,920 --> 00:02:59,200 ac unrhyw nifer o websites-- eraill Cronfa ddata siopau pethau relationally. 71 00:02:59,200 --> 00:03:01,770 A chronfa ddata berthynol yn unig yn golygu un sydd yn llythrennol 72 00:03:01,770 --> 00:03:03,672 yn storio ei ddata mewn rhesi a cholofnau. 73 00:03:03,672 --> 00:03:04,630 Mae mor syml â hynny. 74 00:03:04,630 --> 00:03:07,230 >> Felly, hyd yn oed rhywbeth fel Oracle sy'n Efallai eich bod wedi clywed y cyfan o 75 00:03:07,230 --> 00:03:08,271 yn gronfa ddata berthynol. 76 00:03:08,271 --> 00:03:10,929 Ac o dan y cwfl, mae'n data siopau mewn rhesi a cholofnau. 77 00:03:10,929 --> 00:03:12,970 Ac Oracle codi tâl arnoch yn llawer o arian i wneud hynny, 78 00:03:12,970 --> 00:03:15,550 tra bod taliadau MySQL chi unrhyw beth am yr un. 79 00:03:15,550 --> 00:03:18,790 Felly, SQL yn mynd i roi i ni o leiaf pedwar gweithrediad. 80 00:03:18,790 --> 00:03:23,190 Mae'r gallu i ddewis data, fel darllen data, mewnosoder, dileu, a data diweddaru. 81 00:03:23,190 --> 00:03:25,525 Mewn geiriau eraill, y rhai yn cael eu mewn gwirionedd yn y pedwar gweithrediad allweddol 82 00:03:25,525 --> 00:03:28,950 sydd yn mynd i ganiatáu i ni newid pethau mewn rhesi a cholofnau hynny. 83 00:03:28,950 --> 00:03:33,250 >> Mae'r offeryn y byddwn yn eu defnyddio heddiw yn arbennig i ddysgu SQL ac i chwarae ag ef 84 00:03:33,250 --> 00:03:34,627 gelwir MyAdmin PHP eto. 85 00:03:34,627 --> 00:03:35,460 Mae'n offeryn ar y we. 86 00:03:35,460 --> 00:03:38,200 Cyfanswm cyd-ddigwyddiad yw 'i' a ysgrifennwyd yn PHP. 87 00:03:38,200 --> 00:03:42,400 Ond mae'n mynd i roi graffigol ni rhyngwyneb defnyddiwr fel y gallwn mewn gwirionedd 88 00:03:42,400 --> 00:03:46,054 creu rhesi a cholofnau hyn ac yna siarad â nhw trwy gyfrwng cod. 89 00:03:46,054 --> 00:03:47,970 Felly, gadewch i ni yn awr yn dechrau yr hyn yr wyf yn meddwl yn dweud y gwir 90 00:03:47,970 --> 00:03:51,000 fath o broses hwyl o gan adeiladu ben gefn o wefannau, 91 00:03:51,000 --> 00:03:54,580 rhannau nad yw defnyddwyr yn ei wneud gweld, ond yn sicr yn gwneud gofal am, 92 00:03:54,580 --> 00:03:56,170 oherwydd dyna yn hytrach y data mynd. 93 00:03:56,170 --> 00:03:59,570 Felly, yn debyg i C, a ychydig yn llai tebyg i PHP, 94 00:03:59,570 --> 00:04:04,954 SQL, neu gronfa ddata sy'n cefnogi SQL, mae mathau o leiaf data hwn 95 00:04:04,954 --> 00:04:05,870 a sypiau eraill. 96 00:04:05,870 --> 00:04:08,107 CHAR, VARCHAR, INT, BIGINT, Degol, a datetime. 97 00:04:08,107 --> 00:04:09,940 Ac mae ei gyfanrwydd criw o nodweddion eraill, 98 00:04:09,940 --> 00:04:11,940 ond gadewch i ni wneud hyn trwy Fel enghraifft gwirioneddol. 99 00:04:11,940 --> 00:04:16,450 >> Rydw i'n mynd i fynd i mewn i CS50 IDE lle, ymlaen llaw, dwi wedi logio i mewn 100 00:04:16,450 --> 00:04:19,372 ac yr wyf hefyd wedi ymweld â URL ar gyfer offeryn hwn o'r enw PHP MyAdmin. 101 00:04:19,372 --> 00:04:22,580 Ac yn broblem a osodwyd saith, byddwn yn dweud chi yn union sut i gyrraedd rhyngwyneb hon 102 00:04:22,580 --> 00:04:23,200 yn ogystal. 103 00:04:23,200 --> 00:04:25,640 Ar y gornel chwith uchaf, sylwi mae'n ei ddweud ddarlithio. 104 00:04:25,640 --> 00:04:27,610 Ac mae hynny'n ei olygu yw bod ymlaen llaw, yr wyf yn creu 105 00:04:27,610 --> 00:04:31,360 darlith cronfa ddata o'r enw wag nad oes ganddo unrhyw taenlenni ynddo eto. 106 00:04:31,360 --> 00:04:32,600 Does dim rhesi a cholofnau. 107 00:04:32,600 --> 00:04:34,308 Oherwydd bod y cyntaf beth rydym yn mynd i'w wneud 108 00:04:34,308 --> 00:04:37,100 yn dechrau creu tabl sy'n mynd i storio ein defnyddwyr. 109 00:04:37,100 --> 00:04:39,100 >> Felly, yn llythrennol dros yma i'r dde, rwy'n 110 00:04:39,100 --> 00:04:42,070 yn mynd i ddweud wrth y gronfa ddata Rwyf am dabl o'r enw Defnyddwyr. 111 00:04:42,070 --> 00:04:44,845 Felly, mae hyn yn debyg y ffeil fy mod eisiau i storio fy holl ddata mewn. 112 00:04:44,845 --> 00:04:45,720 A faint o golofnau? 113 00:04:45,720 --> 00:04:47,740 Wel, gadewch i ni cadw pethau'n syml am y tro. 114 00:04:47,740 --> 00:04:51,855 Fi jyst eisiau i storio fel enw defnyddiwr ac enw ar gyfer defnyddiwr. 115 00:04:51,855 --> 00:04:53,020 Byddwn yn dechrau ar raddfa fach. 116 00:04:53,020 --> 00:04:55,370 Felly, yr wyf am gyfanswm dwy golofn. 117 00:04:55,370 --> 00:04:57,360 Ac yr wyf i'n mynd i fynd yn ei flaen a chliciwch Go. 118 00:04:57,360 --> 00:04:59,210 Ac yna, ar gyfer y rhain colofnau, yr hyn yr wyf i'n mynd 119 00:04:59,210 --> 00:05:04,576 i do-- os y rhyngrwyd hon cooperates-- pob hawl, 120 00:05:04,576 --> 00:05:05,950 felly rydym yn mynd i roi cynnig ar hynny eto. 121 00:05:05,950 --> 00:05:09,180 Rydw i'n mynd i greu tabl o'r enw Defnyddwyr gyda dwy golofn, cliciwch Go, OK. 122 00:05:09,180 --> 00:05:10,520 Nawr mae gennym y mae mewn gwirionedd yn gyflym. 123 00:05:10,520 --> 00:05:12,065 Diolch i chi, gwneud yn dda iawn. 124 00:05:12,065 --> 00:05:14,440 Mae pob hawl, felly beth ydym eisiau colofnau hyn i gael ei alw? 125 00:05:14,440 --> 00:05:16,080 >> Felly, un yn mynd i gael ei alw Enw Defnyddiwr. 126 00:05:16,080 --> 00:05:19,480 Felly, yr wyf yn gweld pob Yma-- a'r rhyngwyneb dweud y gwir yn cael ychydig yn hyll yn y pen draw, 127 00:05:19,480 --> 00:05:21,270 unwaith y byddwch yn dechrau teipio i mewn yr holl ddata hwn. 128 00:05:21,270 --> 00:05:27,450 Ond yr hyn sy'n braf yw y math yna o baradocsaidd, Im 'yn creu colofnau, 129 00:05:27,450 --> 00:05:29,977 ond mae'r offeryn wedi ffôl gosod nhw allan mewn rhesi 130 00:05:29,977 --> 00:05:31,560 fel y gallaf ffurfweddu colofnau hyn. 131 00:05:31,560 --> 00:05:33,550 Felly, mae dau bylchau yno o dan Enw. 132 00:05:33,550 --> 00:05:36,180 Ac un o'r meysydd hyn yr wyf yn yn awyddus i alw Enw Defnyddiwr, 133 00:05:36,180 --> 00:05:38,000 a'r cae arall yr wyf am alw Enw. 134 00:05:38,000 --> 00:05:40,340 >> Ac yn awr mae'n rhaid i mi ddewis fathau o ddata am y pethau hyn. 135 00:05:40,340 --> 00:05:42,330 Felly, tra yn Excel a Taenlenni Google, 136 00:05:42,330 --> 00:05:45,531 os ydych am gael colofn, rydych yn llythrennol jyst deipio Enw neu Enw Defnyddiwr, daro Chofnoda. 137 00:05:45,531 --> 00:05:48,030 Efallai eich bod yn ei gwneud yn wyneb beiddgar yn unig ar gyfer eglurder, ond dyna ni. 138 00:05:48,030 --> 00:05:50,140 Nid ydych yn pennu'r mathau o'r colofnau. 139 00:05:50,140 --> 00:05:53,790 Nawr yn Google Taenlenni Excel neu, chi Efallai nodi sut mae'r data yn cael ei rendro. 140 00:05:53,790 --> 00:05:58,120 Gallech fynd i ddewislen Format, a ydych Gall nodi ddangos hyn arwydd doler fel, 141 00:05:58,120 --> 00:05:59,900 ddangos hyn fel gwerth pwynt arnawf. 142 00:05:59,900 --> 00:06:01,990 >> Felly, mae'n debyg o ran ysbryd i bod yr hyn yr ydym chi ar fin ei wneud, 143 00:06:01,990 --> 00:06:04,740 ond mae hyn mewn gwirionedd yn mynd i rym mae'r data i fod yn fath arbennig. 144 00:06:04,740 --> 00:06:07,750 Yn awr, hyd yn oed er eiliad yn ôl roeddwn Dywedodd does dim ond ychydig o fathau o ddata, 145 00:06:07,750 --> 00:06:11,120 mae mewn gwirionedd llawer gyfan, ac maen nhw'n 146 00:06:11,120 --> 00:06:12,910 mewn graddau o penodoldeb amrywiol. 147 00:06:12,910 --> 00:06:14,970 Ac wrth fynd heibio, i chi gall hyd yn oed wneud pethau ffansi 148 00:06:14,970 --> 00:06:17,520 fel geometries storio tu mewn cronfa ddata. 149 00:06:17,520 --> 00:06:19,250 Gallwch storio pethau fel cyfesurynnau GPS 150 00:06:19,250 --> 00:06:22,420 ac mewn gwirionedd yn dod o hyd, yn fathemategol, pwyntiau sy'n agos at bobl eraill. 151 00:06:22,420 --> 00:06:24,128 Ond rydym ni'n mynd i cadw hyn yn syml super 152 00:06:24,128 --> 00:06:26,800 ac yn mynd i fyny i fan hyn, sydd i gyd y mathau hyn a elwir yn llinyn. 153 00:06:26,800 --> 00:06:29,240 >> Felly, dyma restr o criw cyfan o opsiynau. 154 00:06:29,240 --> 00:06:32,740 CHAR, VARCHAR, TINYTEXT, MEDIUMTEXT, LONGTEXT. 155 00:06:32,740 --> 00:06:34,110 Ac mae'n fath o llethol. 156 00:06:34,110 --> 00:06:37,610 Ac yn anffodus, braidd baradocsaidd i C, 157 00:06:37,610 --> 00:06:40,120 nid yw CHAR sydd mewn gwirionedd yn CHAR. 158 00:06:40,120 --> 00:06:44,170 Os byddwch yn nodi mewn cronfa ddata bod eich math data CHAR, 159 00:06:44,170 --> 00:06:47,390 mae hynny'n golygu bod ie, ei fod yn CHAR, ond mae'n un neu fwy o chars. 160 00:06:47,390 --> 00:06:49,630 Ac mae'n rhaid i chi nodi faint o chars ydych ei eisiau. 161 00:06:49,630 --> 00:06:51,636 Felly, beth sydd yn nodweddiadol hyd i enw defnyddiwr? 162 00:06:51,636 --> 00:06:52,760 A oes terfyn fel arfer? 163 00:06:52,760 --> 00:06:53,920 >> GYNULLEIDFA: [Anghlywadwy] 164 00:06:53,920 --> 00:06:55,050 >> DAVID Malan: 16 efallai? 165 00:06:55,050 --> 00:06:55,990 Rhywbeth fel 'na. 166 00:06:55,990 --> 00:06:57,948 Rydych yn gwybod, yn ôl yn y dydd, arferai fod wyth. 167 00:06:57,948 --> 00:07:00,289 Weithiau mae'n 16 oed, weithiau mae hyd yn oed yn fwy na hynny. 168 00:07:00,289 --> 00:07:02,080 Ac felly, nid yw hyn yn yn golygu rhoi un CHAR mi. 169 00:07:02,080 --> 00:07:04,730 Mae hyn yn golygu yn rhaid i mi nodi hyd y cae, 170 00:07:04,730 --> 00:07:07,402 ac yn awr gallwn ddweud rhywbeth fel 16. 171 00:07:07,402 --> 00:07:08,610 Ac mae 'na masnach oddi yma. 172 00:07:08,610 --> 00:07:11,360 Felly, byddwn yn gweld mewn eiliad bod hyn yn golygu un, 173 00:07:11,360 --> 00:07:14,620 bob enw defnyddiwr wedi i fod yn 16 nod. 174 00:07:14,620 --> 00:07:18,720 Ond arhoswch funud, M-A-L-A-N. Os yw hynny'n fy enw defnyddiwr a dwi'n unig drwy ddefnyddio pum, 175 00:07:18,720 --> 00:07:23,070 beth fyddech chi'n ei gynnig bod y gronfa ddata i wneud ar gyfer yr 11 cymeriadau eraill sy'n 176 00:07:23,070 --> 00:07:24,471 Rydw i wedi Cedwir lle ar gyfer? 177 00:07:24,471 --> 00:07:25,220 Beth fyddech chi'n ei wneud? 178 00:07:25,220 --> 00:07:26,480 >> GYNULLEIDFA: [Anghlywadwy] 179 00:07:26,480 --> 00:07:27,160 >> DAVID Malan: Yeah, dim ond gwneud nhw i gyd null. 180 00:07:27,160 --> 00:07:28,290 Gwnewch lleoedd iddyn nhw. 181 00:07:28,290 --> 00:07:30,816 Ond mae'n debyg null, felly mae llawer o zeros slaes. 182 00:07:30,816 --> 00:07:33,190 Felly, ar y naill law, mae gennym gwneud yn siŵr nawr fod fy enw defnyddiwr 183 00:07:33,190 --> 00:07:34,780 Gall fod yn fwy na 16 nod. 184 00:07:34,780 --> 00:07:37,590 Ac ar ochr arall hynny yw os cefais enw hir iawn 185 00:07:37,590 --> 00:07:39,940 neu eisiau hir iawn enw defnyddiwr fel rhai ohonoch 186 00:07:39,940 --> 00:07:44,840 Efallai y guys gael yn y coleg neu yn Yale.edu, ni allwch gael un. 187 00:07:44,840 --> 00:07:47,177 Ac felly yn wir, os ydych chi wedi cofrestru erioed ar gyfer gwefan 188 00:07:47,177 --> 00:07:49,385 ac rydych yn cael yelled yn dweud eich cyfrinair yn rhy hir 189 00:07:49,385 --> 00:07:52,710 neu eich enw defnyddiwr yn rhy hir, 'i' yn syml oherwydd rhaglennydd, pan 190 00:07:52,710 --> 00:07:55,500 ffurfweddu ei gronfa ddata, penderfynu bod y maes hwn bydd 191 00:07:55,500 --> 00:07:57,150 fod yn hwy na hyd yma. 192 00:07:57,150 --> 00:08:00,580 >> Mae pob hawl, felly beth os rydym yn symud ymlaen i enwi? 193 00:08:00,580 --> 00:08:05,240 Pa mor hir y dylai enw dynol nodweddiadol fod? 194 00:08:05,240 --> 00:08:07,492 Faint o gymeriadau, 16? 195 00:08:07,492 --> 00:08:09,450 Rwy'n dyfalu gallem dod o hyd i rywun yn yr ystafell hon 196 00:08:09,450 --> 00:08:13,210 lle gan ei plws cyntaf ddiwethaf enw i yw hirach na 16 nod. 197 00:08:13,210 --> 00:08:14,850 Felly, beth sy'n well na hynny, 17? 198 00:08:14,850 --> 00:08:17,040 18? 199 00:08:17,040 --> 00:08:18,830 25? 200 00:08:18,830 --> 00:08:20,350 Bigger? 201 00:08:20,350 --> 00:08:20,980 30? 202 00:08:20,980 --> 00:08:21,855 >> GYNULLEIDFA: [Anghlywadwy] 203 00:08:21,855 --> 00:08:23,700 DAVID Malan: 5,000, oh fy Nuw. 204 00:08:23,700 --> 00:08:26,309 Felly, mae hynny'n fwy na thebyg yn gweddus rhwymo uchaf, rhaid i ni ddweud. 205 00:08:26,309 --> 00:08:28,350 A dyma ni fath o gael i wneud dyfarniad galwadau. 206 00:08:28,350 --> 00:08:30,400 Fel, does dim ateb cywir fan hyn. 207 00:08:30,400 --> 00:08:32,740 Nid yw 'n Anfeidraidd eithaf posibl, oherwydd ein bod yn y pen draw 208 00:08:32,740 --> 00:08:34,781 mynd i have-- ein bod mynd i redeg allan o gof. 209 00:08:34,781 --> 00:08:36,909 Felly, mae'n rhaid i ni wneud galwad barn ar ryw adeg. 210 00:08:36,909 --> 00:08:41,010 >> Gyffredin iawn fyddai, er enghraifft, i use-- a gadewch i mi nodi CHAR yma 211 00:08:41,010 --> 00:08:46,050 fel before-- 255 yn llythrennol y terfyn uchaf ar feddalwedd y gronfa ddata hon 212 00:08:46,050 --> 00:08:46,700 Flynyddoedd yn ôl. 213 00:08:46,700 --> 00:08:48,575 Ac felly, mae llawer o bobl Byddai dim ond dweud, dirwy. 214 00:08:48,575 --> 00:08:49,420 255 yw'r terfyn. 215 00:08:49,420 --> 00:08:50,620 Gadewch i jyst arfer 'r uchafswm. 216 00:08:50,620 --> 00:08:51,870 Ac mae hyn yn eithaf chwerthinllyd. 217 00:08:51,870 --> 00:08:55,060 Fel, os ydych yn teipio rhywun yn enwi am 200 o gymeriadau a mwy, 218 00:08:55,060 --> 00:08:56,140 bod ychydig yn chwerthinllyd. 219 00:08:56,140 --> 00:08:59,624 >> Ond, cofiwch nad yw ASCII yr unig system ar gyfer cymeriadau. 220 00:08:59,624 --> 00:09:01,540 Ac felly, yn enwedig mewn llawer o ieithoedd Asiaidd 221 00:09:01,540 --> 00:09:04,248 lle mae cymeriadau na allwn mynegi ar yr allweddellau fel fy Unol Daleithiau 222 00:09:04,248 --> 00:09:08,209 bysellfwrdd, mae rhai cymeriadau mewn gwirionedd gymryd hyd 16 darnau yn hytrach na wyth did. 223 00:09:08,209 --> 00:09:10,250 Ac felly, mae hyn mewn gwirionedd Nid yw bob un sy'n afresymol 224 00:09:10,250 --> 00:09:12,250 bod arnom angen mwy lle os ydym am i gyd-fynd 225 00:09:12,250 --> 00:09:16,252 cymeriadau mwy na'r iawn Unol Daleithiau rhai ganolog rydym wedi tueddu i drafod. 226 00:09:16,252 --> 00:09:17,460 Felly, mae angen rhywfaint o rhwymo uchaf. 227 00:09:17,460 --> 00:09:21,470 Nid wyf yn gwybod beth yr un gorau yw, ond 255 yn gyffredinol yn un cyffredin. 228 00:09:21,470 --> 00:09:22,700 25 yn teimlo'n isel. 229 00:09:22,700 --> 00:09:23,857 16, 32 yn teimlo'n isel. 230 00:09:23,857 --> 00:09:25,690 Byddwn yn or- o rywbeth uwch. 231 00:09:25,690 --> 00:09:27,330 Ond mae 'na masnach i ffwrdd, fel bob amser. 232 00:09:27,330 --> 00:09:31,902 Beth yw, efallai, yn amlwg cyfaddawd o gadw 255 chars 233 00:09:31,902 --> 00:09:33,360 ar gyfer enw pawb yn fy cronfa ddata? 234 00:09:33,360 --> 00:09:34,230 >> GYNULLEIDFA: [Anghlywadwy] 235 00:09:34,230 --> 00:09:34,510 >> DAVID Malan: Beth sy'n bod? 236 00:09:34,510 --> 00:09:35,430 >> GYNULLEIDFA: [Anghlywadwy] 237 00:09:35,430 --> 00:09:37,138 >> DAVID Malan: Mae'n llawer o gof, dde? 238 00:09:37,138 --> 00:09:42,280 M-A-L-A-N. Yr wyf newydd gwastraffu 250 cymeriadau yn unig i storio fy enw 239 00:09:42,280 --> 00:09:46,000 yn amddiffynnol, rhag ofn i rywun yn y dosbarth wedi enw hir iawn. 240 00:09:46,000 --> 00:09:47,940 Mae hynny'n ymddangos fel tradeoff gormodol. 241 00:09:47,940 --> 00:09:52,040 >> Felly, mae'n ymddangos fod SQL, iaith gronfa ddata hon, 242 00:09:52,040 --> 00:09:55,480 mewn gwirionedd yn cefnogi rhywbeth Gelwir VARCHAR, neu CHAR Amrywiol. 243 00:09:55,480 --> 00:09:59,390 Ac mae hyn yn fath o 'n glws yn y hwn yn eich galluogi i bennu nid yn sefydlog 244 00:09:59,390 --> 00:10:01,900 lled, ond yn hytrach, o led amrywiol. 245 00:10:01,900 --> 00:10:05,060 Ac yn fwy penodol, mae led uchaf y cae. 246 00:10:05,060 --> 00:10:08,901 Felly, mae hyn yn golygu y gall enw fod yn fwy na 250 o gymeriadau, 247 00:10:08,901 --> 00:10:10,150 ond gall fod yn sicr fod yn llai. 248 00:10:10,150 --> 00:10:11,733 Ac mae'r gronfa ddata yn mynd i fod yn smart. 249 00:10:11,733 --> 00:10:14,860 Os ydych yn rhoi yn M-A-L-A-N, dim ond yn mynd i ddefnyddio bump, 250 00:10:14,860 --> 00:10:18,120 efallai chwe bytes am debyg cymeriad null sy'n llusgo, 251 00:10:18,120 --> 00:10:23,330 ac nid treulio ychwanegol 249 neu 250 bytes ddiangen. 252 00:10:23,330 --> 00:10:27,380 >> Felly, mae hyn yn ymddangos fel y dylwn wedi dechrau gyda stori hon. 253 00:10:27,380 --> 00:10:29,140 Ond mae bob amser yn tradeoff. 254 00:10:29,140 --> 00:10:33,024 Felly, ar y naill law, enw defnyddiwr rwyf wedi penodol i gael ei codio galed yn 16 oed, 255 00:10:33,024 --> 00:10:34,940 ac efallai nad oedd hynny'n yr alwad cywir, efallai ei 256 00:10:34,940 --> 00:10:40,040 yw, ond beth am ddefnyddio VARCHARs am bopeth? 257 00:10:40,040 --> 00:10:42,020 >> Mae'n bodoli am reswm. 258 00:10:42,020 --> 00:10:46,200 Beth am ddefnyddio VARCHARs ar gyfer pob maes mae ei hyd nad ydych yn gwybod o flaen llaw 259 00:10:46,200 --> 00:10:48,180 os yw'n ymddangos i fod yn beth gwych, dde? 260 00:10:48,180 --> 00:10:50,482 Defnyddiwch dim ond cymaint o le ag y ei angen arnoch hyd at y terfyn hwn? 261 00:10:50,482 --> 00:10:51,271 >> GYNULLEIDFA: Arafach. 262 00:10:51,271 --> 00:10:52,146 DAVID Malan: Speller? 263 00:10:52,146 --> 00:10:53,120 GYNULLEIDFA: Yn ei gwneud yn arafach? 264 00:10:53,120 --> 00:10:53,970 DAVID Malan: O, mae'n arafach. 265 00:10:53,970 --> 00:10:55,720 Da, dyna bron bob amser yr ateb, a dweud y gwir. 266 00:10:55,720 --> 00:10:56,520 Fel, beth yw'r tradeoff? 267 00:10:56,520 --> 00:10:58,570 Mae'n naill ai yn costio mwy o le neu ei fod yn costio mwy o amser. 268 00:10:58,570 --> 00:11:00,111 Felly, yn yr achos hwn, gallai fod yn arafach. 269 00:11:00,111 --> 00:11:00,920 Pam? 270 00:11:00,920 --> 00:11:05,830 >> GYNULLEIDFA: [Anghlywadwy] penderfynu [Anghlywadwy]. 271 00:11:05,830 --> 00:11:06,640 >> DAVID Malan: Da. 272 00:11:06,640 --> 00:11:09,670 Felly, efallai y byddwch yn cofio o hyd yn oed PSED5, chwarae gyda'ch dull 273 00:11:09,670 --> 00:11:12,750 i'r geiriadur, os oes gennych i dyrannu cof ddeinamig neu'n cadw 274 00:11:12,750 --> 00:11:14,630 tyfu byffer, bod Gall mewn gwirionedd fod yn araf. 275 00:11:14,630 --> 00:11:16,963 Os oes rhaid i chi ffonio malloc o dan y cwfl ac efallai 276 00:11:16,963 --> 00:11:19,610 dyna beth MySQL yn ei wneud, felly sicr a allai fod yn wir. 277 00:11:19,610 --> 00:11:22,430 Ac os ydych yn meddwl ffordd yn ôl i PSet-- neu hyd yn oed 278 00:11:22,430 --> 00:11:26,340 wythnos dau, pan wnaethom pethau fel chwilio deuaidd neu hyd yn oed chwilio llinol, 279 00:11:26,340 --> 00:11:30,690 un o'r pethau neis am bob gair mewn cronfa ddata neu bob gair mewn colofn 280 00:11:30,690 --> 00:11:33,690 yn union yr un hyd, hyd yn oed os criw cyfan o gymeriadau rhai 281 00:11:33,690 --> 00:11:37,390 yn wag, yw y gallwch ei ddefnyddio hapgyrch ar eich data, dde? 282 00:11:37,390 --> 00:11:40,310 >> Os ydych yn gwybod bod pob gair yn 16 nod i ffwrdd, 283 00:11:40,310 --> 00:11:46,460 gallwch ddefnyddio rhifyddeg pwyntydd, felly i siarad, ac yn mynd â ni 16, 32, 48, 64, 284 00:11:46,460 --> 00:11:49,589 a gallwch neidio yn syth gan ddefnyddio rhifyddeg 285 00:11:49,589 --> 00:11:51,130 i unrhyw un o'r geiriau yn eich cronfa ddata. 286 00:11:51,130 --> 00:11:54,280 Tra os yw'n VARCHAR, beth sy'n rhaid i chi ei wneud yn lle hynny? 287 00:11:54,280 --> 00:11:55,960 >> [Ffôn yn canu] 288 00:11:55,960 --> 00:11:58,680 >> Os yw'n VARCHAR, chi Ni all ddefnyddio mynediad hap. 289 00:11:58,680 --> 00:12:01,341 Beth sy'n rhaid i chi chwilio am neu yn ei wneud? 290 00:12:01,341 --> 00:12:01,840 Yeah? 291 00:12:01,840 --> 00:12:03,240 >> GYNULLEIDFA: [Anghlywadwy] 292 00:12:03,240 --> 00:12:04,310 >> DAVID Malan: Edrychwch drwy'r olrhain whole-- 293 00:12:04,310 --> 00:12:06,518 drwy'r rhestr gyfan chwilio am yr hyn, yn fwyaf tebygol? 294 00:12:06,518 --> 00:12:08,356 Pa fath o werth arbennig? 295 00:12:08,356 --> 00:12:09,230 GYNULLEIDFA: [Anghlywadwy] 296 00:12:09,230 --> 00:12:11,105 DAVID Malan: Edrych gyfer y Terminators null 297 00:12:11,105 --> 00:12:13,637 hynny darnodi gwahanu geiriau. 298 00:12:13,637 --> 00:12:15,720 Felly unwaith eto, mae tradeoff, a does dim ateb cywir. 299 00:12:15,720 --> 00:12:18,380 Ond mae hyn yn lle, yn enwedig pan fydd eich defnyddwyr yn cael i fod yn llawer 300 00:12:18,380 --> 00:12:21,700 a bod eich llwyth ar eich gweinyddwyr, mae'r nifer y bobl sy'n defnyddio mae'n mynd yn uchel, 301 00:12:21,700 --> 00:12:23,650 mae'r rhain mewn gwirionedd yn y penderfyniadau nontrivial. 302 00:12:23,650 --> 00:12:26,640 Felly, gallwn adael y rhain fel hyn, ond gadewch i sgrolio i lawr drosodd i'r dde 303 00:12:26,640 --> 00:12:27,332 yma. 304 00:12:27,332 --> 00:12:30,290 Yn awr, mae un neu ddau o golofnau lle mae'n rhaid i ni wneud dyfarniad galwadau. 305 00:12:30,290 --> 00:12:35,170 A yw'n gwneud synnwyr i ganiatáu defnyddiwr enwi, enw defnyddiwr defnyddiwr neu defnyddiwr 306 00:12:35,170 --> 00:12:36,370 enw, i fod yn null? 307 00:12:36,370 --> 00:12:37,610 Hynny yw, dim ond wag. 308 00:12:37,610 --> 00:12:40,360 Teimlo ychydig yn nonsensical, felly rwy'n ddim yn mynd i wirio blychau hynny. 309 00:12:40,360 --> 00:12:42,670 Ond mae'n troi allan mewn cronfa ddata, gallwch ddweud, 310 00:12:42,670 --> 00:12:44,620 Gall rhywun gael y gwerth hwn yn ddewisol. 311 00:12:44,620 --> 00:12:47,180 Nid yw'r golofn oes gan i fod yno mewn gwirionedd. 312 00:12:47,180 --> 00:12:48,570 >> Yn awr, mae gostyngiad hwn i lawr ddewislen. 313 00:12:48,570 --> 00:12:50,810 Ac yn sylwi Rwy'n dal yn y rhes gyntaf yno, 314 00:12:50,810 --> 00:12:52,520 felly rwy'n siarad am enw defnyddiwr yn awr. 315 00:12:52,520 --> 00:12:56,290 Ac mae'n troi allan bod cronfa ddata, yn wahanol i daenlen yn unig syml, 316 00:12:56,290 --> 00:12:58,520 Mae nodweddion pwerus o'r enw mynegeion. 317 00:12:58,520 --> 00:13:02,600 A mynegai yn ffordd o ddweud wrth y Cronfa ddata o flaen llaw fy mod yn y dynol 318 00:13:02,600 --> 00:13:03,900 wyf yn gallach na chi. 319 00:13:03,900 --> 00:13:10,430 >> Yr wyf yn gwybod pa fath o ymholiadau, dewiswch neu mewnosod neu ddileu neu ddiweddaru, 320 00:13:10,430 --> 00:13:13,182 bod fy cod yn mynd i ben i fyny wneud ar y gronfa ddata hon. 321 00:13:13,182 --> 00:13:14,390 Rwyf am i ddarllen llawer o ddata. 322 00:13:14,390 --> 00:13:15,681 Rwyf am i fewnosod llawer o ddata. 323 00:13:15,681 --> 00:13:17,530 Rydw i eisiau gyson dileu llawer o ddata. 324 00:13:17,530 --> 00:13:21,520 Os wyf yn gwybod fy mod yn mynd i fod yn cael mynediad cae fel Enw Defnyddiwr llawer, 325 00:13:21,520 --> 00:13:24,770 Gallaf ddweud wrth y preemptively cronfa ddata, yr wyf yn gwybod mwy na chi, 326 00:13:24,770 --> 00:13:29,220 ac yr wyf am archddyfarniad sy'n dylech mynegai y maes hwn. 327 00:13:29,220 --> 00:13:33,200 Lle mynegeio cae neu golofn yn golygu bod y gronfa ddata o flaen llaw 328 00:13:33,200 --> 00:13:37,040 Dylai benthyg rhai syniadau gan, fel, wythnos pedwar a phump a chwech o CS50 329 00:13:37,040 --> 00:13:39,240 ac mewn gwirionedd yn adeiladu i fyny rhywbeth fel chwiliad deuaidd 330 00:13:39,240 --> 00:13:41,560 coeden neu rywbeth Gelwir gyffredinol goeden B 331 00:13:41,560 --> 00:13:43,410 y byddech yn dysgu yn y dosbarth a CS124 tebyg 332 00:13:43,410 --> 00:13:46,710 yn Harvard, dosbarth algorithmau, neu unrhyw nifer o leoedd eraill. 333 00:13:46,710 --> 00:13:49,570 >> Mae'r gronfa ddata a'r smart bobl a rhoi ar waith ei 334 00:13:49,570 --> 00:13:53,880 Bydd chyfrif i maes sut i storio y tabl o wybodaeth 335 00:13:53,880 --> 00:13:57,061 mewn cof fel y chwiliadau a weithrediadau eraill yn gyflym super. 336 00:13:57,061 --> 00:13:58,060 Nid oes rhaid i chi wneud hynny. 337 00:13:58,060 --> 00:14:00,640 Nid oes rhaid i chi eu rhoi ar waith chwilio llinol neu chwilio deuaidd 338 00:14:00,640 --> 00:14:03,300 neu uno fath neu ddethol didoli, dim o hynny. 339 00:14:03,300 --> 00:14:06,590 Mae'r gronfa ddata yn gwneud hynny ar eich rhan os byddwch yn dweud mae'n preemptively i mynegai y maes hwn. 340 00:14:06,590 --> 00:14:09,100 >> A gallwch weld hefyd, mae ' rhai nodweddion eraill 341 00:14:09,100 --> 00:14:11,010 gallwn ddweud wrth y gronfa ddata i orfodi. 342 00:14:11,010 --> 00:14:16,431 Beth allai ei olygu os byddaf yn dewis Unigryw o'r ddewislen hon, dim ond reddfol? 343 00:14:16,431 --> 00:14:16,930 Yeah? 344 00:14:16,930 --> 00:14:17,889 >> GYNULLEIDFA: [Anghlywadwy] 345 00:14:17,889 --> 00:14:19,930 DAVID Malan: Yeah, mae'r enw defnyddiwr wedi i fod yn unigryw. 346 00:14:19,930 --> 00:14:23,330 A yw hyn yn beth da neu beth drwg i cronfa ddata, ar gyfer gwefan gyda defnyddwyr? 347 00:14:23,330 --> 00:14:24,965 A ddylai enwau defnyddwyr fod yn unigryw? 348 00:14:24,965 --> 00:14:25,880 Yeah, yn ôl pob tebyg. 349 00:14:25,880 --> 00:14:27,800 Os dyna beth mae'r maes yn ddefnyddiwn i logio i mewn, 350 00:14:27,800 --> 00:14:31,867 nad ydych chi wir eisiau i bobl gael yr un teimlad neu'r un enw defnyddiwr. 351 00:14:31,867 --> 00:14:33,700 Felly, gallwn gael yr cronfa ddata yn gorfodi hynny felly 352 00:14:33,700 --> 00:14:37,880 sydd bellach yn fy cod PHP neu unrhyw iaith, Nid oes rhaid i mi, er enghraifft, gwiriwch 353 00:14:37,880 --> 00:14:41,490 o reidrwydd yn gwneud enw defnyddiwr hwn yn bodoli cyn i mi adael i rywun gofrestru? 354 00:14:41,490 --> 00:14:46,690 Ni fydd y gronfa ddata yn gadael i ddau berson a enwir David neu Malans gofrestru yn yr achos hwn. 355 00:14:46,690 --> 00:14:50,030 >> Ac wrth fynd heibio, er bod hyn dewislen unig yn gadael i chi ddewis un, 356 00:14:50,030 --> 00:14:54,550 mynegai unigryw yn un sy'n mynegeio ar gyfer perfformiad gyflym super, 357 00:14:54,550 --> 00:14:56,100 ond mae hefyd yn gorfodi unigryw. 358 00:14:56,100 --> 00:14:58,850 A byddwn yn dod yn ôl at yr hyn y mae'r ddau arall yn ei olygu mewn dim ond hyn o bryd. 359 00:14:58,850 --> 00:15:00,930 Yn y cyfamser, os byddaf yn mynd i fy ail reng, a oedd yn 360 00:15:00,930 --> 00:15:06,230 yw enw'r defnyddiwr, dylwn nodi y dylai'r enw fod yn unigryw? 361 00:15:06,230 --> 00:15:09,550 Na, oherwydd gallech yn sicr have-- does dim dau David 362 00:15:09,550 --> 00:15:11,050 Malans yn yr ystafell hon, yn fwyaf tebygol. 363 00:15:11,050 --> 00:15:14,290 Ond os ydym yn dewis enw gwahanol, efallai y byddwn yn sicr yn cael gwrthdrawiadau. 364 00:15:14,290 --> 00:15:16,130 >> Meddyliwch yn ôl i hash tablau ac yn y blaen. 365 00:15:16,130 --> 00:15:18,604 Felly, rydym yn sicr nid oes eisiau i wneud y cae enw unigryw. 366 00:15:18,604 --> 00:15:21,270 Felly, rydym yn jyst yn mynd i adael hynny fel dash, dash, dash, dim byd. 367 00:15:21,270 --> 00:15:22,660 Ac yr wyf i'n mynd i adael popeth arall yn unig. 368 00:15:22,660 --> 00:15:25,035 Yn wir, mae'r rhan fwyaf o'r meysydd hyn Ni fydd yn rhaid i ni ofalu amdanynt. 369 00:15:25,035 --> 00:15:27,830 A phan Rwy'n barod i achub hyn, os bydd y rhyngrwyd yn cydweithio, 370 00:15:27,830 --> 00:15:35,032 Yr wyf yn clicio Save, ac yn iawn, iawn, iawn yn araf y mae'r gronfa ddata yn cael ei arbed. 371 00:15:35,032 --> 00:15:37,240 Ac yn awr fy mod yn ôl at hyn rhyngwyneb, a oedd yn rhaid cyfaddef, 372 00:15:37,240 --> 00:15:38,680 yn llethol ar yr olwg gyntaf. 373 00:15:38,680 --> 00:15:42,450 Ond yr holl Rydw i'n mynd i wneud yw clicio ar y gair Defnyddwyr ar dop chwith. 374 00:15:42,450 --> 00:15:47,630 Rydw i'n mynd i fynd i fyny yma, cliciwch Defnyddwyr, a at ball, mae'n 375 00:15:47,630 --> 00:15:50,180 wedi cyflawni rhywfaint o SQL, ond mwy am hynny mewn munud. 376 00:15:50,180 --> 00:15:52,654 Dyma dim ond crynodeb o'r hyn a wnaeth i mi. 377 00:15:52,654 --> 00:15:55,320 Ac i beidio â phoeni eich bod yn gweld sôn o Ladin a Sweden yma. 378 00:15:55,320 --> 00:16:00,490 Mae'r rhai yn unig 'r ball lleoliadau, gan fod MySQL yn wreiddiol, 379 00:16:00,490 --> 00:16:04,000 neu PHP MyAdmin, un o'r ddau wedi digwydd i gael ei ysgrifennu gan rai pobl Sweden. 380 00:16:04,000 --> 00:16:06,100 Ond mae'n amherthnasol yn ein hachos ni fan hyn. 381 00:16:06,100 --> 00:16:08,280 >> Mae pob hawl, felly pam mae hyn i gyd yn ddiddorol? 382 00:16:08,280 --> 00:16:13,050 Mae'n troi allan, gallaf mewnosod data i mewn i gronfa ddata drwy ysgrifennu cod. 383 00:16:13,050 --> 00:16:15,940 A dwi'n mynd yn ei flaen a yn fy ffeil yma, dwi'n 384 00:16:15,940 --> 00:16:19,000 mynd i fynd yn ei flaen ac yn esgus tebyg mae hyn yn cael ei weirio i'r gronfa ddata, a 385 00:16:19,000 --> 00:16:23,040 nid yw ar hyn o bryd, ond bydd yn fod pan gawn i broblem a osodwyd saith. 386 00:16:23,040 --> 00:16:25,640 Ac yr wyf i'n mynd i fynd yn ei flaen a cyflawni swyddogaeth o'r enw ymholiad, 387 00:16:25,640 --> 00:16:28,730 y byddwn yn rhoi i chi yn broblem yn gosod cod dosbarthu saith, gan fod 388 00:16:28,730 --> 00:16:31,490 cymryd o leiaf un ddadl, sydd ychydig llinyn. 389 00:16:31,490 --> 00:16:33,460 Mae cyfres o cod SQL. 390 00:16:33,460 --> 00:16:36,700 Felly, ydych chi ar fin i ddysgu sut i ysgrifennu Iaith Ymholiad Strwythuredig. 391 00:16:36,700 --> 00:16:41,270 >> Os ydw i eisiau i fewnosod rhes newydd i mewn i fy Cronfa ddata oherwydd bod rhywun wedi cyflwyno 392 00:16:41,270 --> 00:16:47,600 ffurflen i fy cod, fyddwn i yn llythrennol ysgrifennu RHOWCH I ddefnyddwyr y canlynol 393 00:16:47,600 --> 00:16:52,800 feysydd: enw defnyddiwr, coma, enw, mae'r GWERTHOEDD, 394 00:16:52,800 --> 00:16:57,480 ac yn awr mae angen i mi i fewnosod rhywbeth fel Malan, a dyfynnwch, 395 00:16:57,480 --> 00:17:01,490 unquote 'David Malan.' Ac yn awr hyd yn oed ar gyfer y rhai sy'n anghyfarwydd â SQL, 396 00:17:01,490 --> 00:17:07,830 pam ydw i'n defnyddio dyfynodau sengl tu mewn y llinyn gwyrdd? 397 00:17:07,830 --> 00:17:10,790 398 00:17:10,790 --> 00:17:13,040 Beth allai fod y rheswm yma? 399 00:17:13,040 --> 00:17:14,609 >> Hysbysiad Rwy'n cyd-gymysgu dwy iaith. 400 00:17:14,609 --> 00:17:18,099 Ymholiad yn swyddogaeth PHP, ond mae'n cymryd dadl. 401 00:17:18,099 --> 00:17:21,740 A bod dadl wedi i hun fod hysgrifennu mewn iaith arall o'r enw 402 00:17:21,740 --> 00:17:23,500 SQL, Iaith Ymholiad Strwythuredig. 403 00:17:23,500 --> 00:17:27,940 Felly, mae popeth yr wyf yn newydd a amlygir yma 404 00:17:27,940 --> 00:17:30,380 yn yr iaith hon o'r enw SQL. 405 00:17:30,380 --> 00:17:36,290 Felly, beth sydd â'r dyfynodau sengl, yn union fel gwiriad pwyll cyflym? 406 00:17:36,290 --> 00:17:37,324 Cer ymlaen. 407 00:17:37,324 --> 00:17:37,990 Maent yn llinynnau. 408 00:17:37,990 --> 00:17:41,590 Felly, dyfynnwch, Malan unquote a dyfynnwch, unquote David Malan yn llinynnau. 409 00:17:41,590 --> 00:17:45,210 Ac yn meddwl yn reddfol yn awr, gan wybod hyn a wyddoch am C a PHP, 410 00:17:45,210 --> 00:17:50,220 pam na wnes i wneud hyn, yr wyf fel arfer dyfynodau dwbl a ddefnyddir ar gyfer llinynnau? 411 00:17:50,220 --> 00:17:52,310 Pam na wnes i am wneud hynny? 412 00:17:52,310 --> 00:17:52,810 Yeah? 413 00:17:52,810 --> 00:17:53,685 >> GYNULLEIDFA: [Anghlywadwy] 414 00:17:53,685 --> 00:17:56,695 415 00:17:56,695 --> 00:17:57,570 DAVID Malan: Yn union. 416 00:17:57,570 --> 00:17:59,653 Gan fy mod eisoes 'yn arfer dyfynodau dwbl ar y ffordd 417 00:17:59,653 --> 00:18:01,929 y tu allan i'r ddadl i'r swyddogaeth PHP, 418 00:18:01,929 --> 00:18:03,470 Byddai Fi jyst drysu rhwng y cyfieithydd. 419 00:18:03,470 --> 00:18:04,860 Ni fydd yn gwybod, mae'r rhain yn mynd gyda'i gilydd? 420 00:18:04,860 --> 00:18:05,735 A yw hyn yn mynd gyda'i gilydd? 421 00:18:05,735 --> 00:18:06,810 A yw hyn yn mynd gyda'i gilydd? 422 00:18:06,810 --> 00:18:08,070 Felly, yr wyf yn ail yn lle hynny. 423 00:18:08,070 --> 00:18:11,784 >> Neu gallwn i wneud rhywbeth fel hyn, dyfyniad slaes neu ddyfyniad slaes. 424 00:18:11,784 --> 00:18:14,200 Dweud y gwir, mai dim ond yn dechrau cael annarllenadwy ac yn hyll iawn. 425 00:18:14,200 --> 00:18:16,790 Ond a fyddai'n cyflawni'r yr un canlyniad hefyd. 426 00:18:16,790 --> 00:18:19,760 >> Felly, pe bawn i weithredu'r hyn ymholiad yn awr, gadewch i ni weld beth sy'n digwydd. 427 00:18:19,760 --> 00:18:22,740 Rydw i'n mynd i fynd yn ei flaen yn awr ac yn hytrach na gweithredu y cod PHP, a oedd yn 428 00:18:22,740 --> 00:18:24,610 yw lle byddwch yn chwarae yn broblem yn gosod saith, 429 00:18:24,610 --> 00:18:27,200 Rydw i'n mynd i yn lle hynny, ewch i MyAdmin PHP. 430 00:18:27,200 --> 00:18:29,770 Ac yr wyf i'n mynd â llaw i fynd i'r tab SQL, 431 00:18:29,770 --> 00:18:31,580 a gadewch i mi chwyddo i mewn ar y rhyngwyneb. 432 00:18:31,580 --> 00:18:34,007 Ac yr wyf i'n mynd i bastio i mewn y peth Fi jyst deipio. 433 00:18:34,007 --> 00:18:36,090 Ac mae'r cod lliw wedi Newidiwyd ychydig yn awr, 434 00:18:36,090 --> 00:18:38,750 dim ond am fod y fformat rhaglen pethau ychydig yn wahanol. 435 00:18:38,750 --> 00:18:41,960 Ond yn sylwi bod yr holl wyf wedi ei wneud yw yr wyf wedi dweud, rhowch i mewn i Ddefnyddwyr. 436 00:18:41,960 --> 00:18:45,790 Rwyf wedi nodir, yna, mewn coma Rhestr parenthesized gwahanu y ddau 437 00:18:45,790 --> 00:18:48,850 gaeau yr wyf am i fewnosod, ac Yna Rwyf wedi dweud yn llythrennol gwerthoedd 438 00:18:48,850 --> 00:18:51,510 wedi'i ddilyn gan paren arall, ac yna y ddau werth 439 00:18:51,510 --> 00:18:53,520 Rwyf am plug-in, ac yn awr ar gyfer mesur da, 440 00:18:53,520 --> 00:18:55,010 'N annhymerus' yn rhoi hanner colon ar y diwedd. 441 00:18:55,010 --> 00:18:56,570 Felly, nid yw hyn yn C. Nid yw hyn yn PHP. 442 00:18:56,570 --> 00:18:59,970 Mae hwn bellach SQL, ac rwy'n gludo ei i mewn i hyn rhyngwyneb ar y we sy'n 443 00:18:59,970 --> 00:19:02,710 jyst yn mynd i adael i mi, cyn gynted ag yr wyf yn clicio Go, 444 00:19:02,710 --> 00:19:08,060 gweithredu ymholiad hwn ar y gronfa ddata rhedeg tu mewn IDE CS50. 445 00:19:08,060 --> 00:19:09,470 >> Felly, mae hyn yn dda. 446 00:19:09,470 --> 00:19:12,520 Hysbysiad a ddywedodd un rhes mewnosod, aeth gyflym super, 447 00:19:12,520 --> 00:19:15,190 0.0054 eiliad i fewnosod data hwnnw. 448 00:19:15,190 --> 00:19:16,610 Felly, mae hynny'n swnio'n eithaf iach. 449 00:19:16,610 --> 00:19:19,350 Mae'n ailfformatio fy ymholiad i mi yma dim ond i weld ei 450 00:19:19,350 --> 00:19:21,730 yn fath o fersiwn cod lliw. 451 00:19:21,730 --> 00:19:24,540 Ond yn awr, os wyf yn clicio Pori, yn sylwi bod, hyd yn oed 452 00:19:24,540 --> 00:19:29,070 er bod llawer o annibendod ar y sgrin, erbyn hyn mae fy mwrdd dwy res. 453 00:19:29,070 --> 00:19:30,700 >> Felly, gadewch i mi fynd yn ei flaen ac yn gwneud un arall. 454 00:19:30,700 --> 00:19:33,760 Yn lle hyn, gadewch i mi ewch i'r tab SQL eto. 455 00:19:33,760 --> 00:19:40,723 A'r tro hwn byddaf yn mewnosod rhywbeth fel Bydd Rob a'i enw fydd Rob Bowden. 456 00:19:40,723 --> 00:19:42,330 Bowden. 457 00:19:42,330 --> 00:19:44,040 Gadewch i ni cliciwch Save. 458 00:19:44,040 --> 00:19:46,140 Wps, yn hytrach Go. 459 00:19:46,140 --> 00:19:48,890 >> Cliciwch Pori eto, ac sylwi awr yr wyf wedi dwy res. 460 00:19:48,890 --> 00:19:52,390 Felly, mae hyn yn unig yw ffordd fwy cymhleth ffordd o agor Google Taenlenni 461 00:19:52,390 --> 00:19:54,010 a dim ond teipio rhes i mewn i golofn. 462 00:19:54,010 --> 00:19:57,070 Ond yr hyn sy'n allweddol yw bod erbyn hyn mae gennym y gystrawen 463 00:19:57,070 --> 00:20:00,220 i ysgrifennu cod ag ef fel bod yn y pen draw, gallem mewn gwirionedd 464 00:20:00,220 --> 00:20:01,790 gwneud rhywfaint ac mae hyn. 465 00:20:01,790 --> 00:20:05,380 Dwyn i gof bod yn cefnogi PHP newidynnau super byd-eang. 466 00:20:05,380 --> 00:20:08,415 >> Beth sydd y tu mewn o doler llofnodi tanlinellu GET yn PHP? 467 00:20:08,415 --> 00:20:10,290 Rydym yn cymryd golwg ar un neu ddwy enghraifft syml. 468 00:20:10,290 --> 00:20:15,640 Ac yn PSet6, cofio gennych helo dot PHP sy'n defnyddio newidyn hwn. 469 00:20:15,640 --> 00:20:17,870 Beth sy'n mynd i mewn 'na? 470 00:20:17,870 --> 00:20:21,015 Neu beth ydyw? 471 00:20:21,015 --> 00:20:22,522 Mae uwch bach. 472 00:20:22,522 --> 00:20:23,790 >> GYNULLEIDFA: [Anghlywadwy] 473 00:20:23,790 --> 00:20:25,030 >> DAVID Malan: Mae'n eira had array, a oedd yn 474 00:20:25,030 --> 00:20:27,714 yn unig yw ffordd ffansi o ddweud bod arae sydd â parau gwerth allweddol. 475 00:20:27,714 --> 00:20:28,880 Ac nid yr allweddi yn rhifol. 476 00:20:28,880 --> 00:20:30,420 Maent yn eiriau neu llinynnau. 477 00:20:30,420 --> 00:20:32,750 Ac yn benodol, yr hyn yw'r rhai parau gwerth allweddol? 478 00:20:32,750 --> 00:20:35,110 Ble maen nhw'n dod? 479 00:20:35,110 --> 00:20:35,620 Mae'n ddrwg gennym? 480 00:20:35,620 --> 00:20:36,994 >> GYNULLEIDFA: [Anghlywadwy] 481 00:20:36,994 --> 00:20:37,660 DAVID Malan: Na? 482 00:20:37,660 --> 00:20:40,700 Ble mae rhai allwedd dod parau gwerth o? 483 00:20:40,700 --> 00:20:42,490 Dweud eto? 484 00:20:42,490 --> 00:20:44,610 Eto? 485 00:20:44,610 --> 00:20:46,472 Ydw i'n yr unig un rhywbeth clyw? 486 00:20:46,472 --> 00:20:47,810 >> [Chwerthin] 487 00:20:47,810 --> 00:20:49,042 >> Mae hynny'n iawn, ie? 488 00:20:49,042 --> 00:20:50,435 >> GYNULLEIDFA: [Anghlywadwy] 489 00:20:50,435 --> 00:20:52,560 DAVID Malan: Yeah, maent yn yn dod oddi wrth y llinyn ymholiad. 490 00:20:52,560 --> 00:20:55,380 Felly, os ydych yn ailddirwyn mewn pryd i pan fyddwn wedi chwarae gyda Google 491 00:20:55,380 --> 00:20:59,600 ac rydym wedi mynd i Google.com slaes Chwilio question mark q hafal cathod, 492 00:20:59,600 --> 00:21:03,550 pe bawn yn daro Chofnoda ac os Google yn cael eu rhoi ar waith yn PHP, 493 00:21:03,550 --> 00:21:07,017 Cod PHP bod Google ysgrifennodd Byddai cael mynediad at arwydd doler 494 00:21:07,017 --> 00:21:11,600 tanlinellu GET tu mewn lle yn allwedd o'r enw Q a gwerth 495 00:21:11,600 --> 00:21:17,680 Gelwir cathod y gall yna defnyddiwch a ddefnyddir i wneud chwiliad go iawn gyda. 496 00:21:17,680 --> 00:21:20,860 >> Felly, mewn gwirionedd, yr hyn yr wyf i'n mynd i wneud yn awr yw mynd yn ôl at fy cod PHP 497 00:21:20,860 --> 00:21:23,140 y byddwch chi eto yn gweld mwy o yn PSet7. 498 00:21:23,140 --> 00:21:25,440 Ac yn hytrach na llenwi mewn gwerthoedd chodio caled sydd 499 00:21:25,440 --> 00:21:27,630 nid yw'n ymddangos fel iawn Gwefan ddeinamig, 500 00:21:27,630 --> 00:21:30,680 Rydw i'n mynd i roi ymlid ohonoch beth fyddai eich cod gwirioneddol yn ei wneud. 501 00:21:30,680 --> 00:21:32,854 Byddai eich rhoi mewn dau gofynodau fel hyn. 502 00:21:32,854 --> 00:21:34,270 Nid wyf yn gwybod beth yw'r enw defnyddiwr yn. 503 00:21:34,270 --> 00:21:37,390 Nid wyf yn gwybod yr hyn y mae'r enw yn mynd i fod, 504 00:21:37,390 --> 00:21:39,470 ond i ddim yn gwybod y gallaf cael yn ddynamig. 505 00:21:39,470 --> 00:21:43,420 >> Felly, os y cod ydym yn ysgrifennu yn awr yw cod sy'n rhedeg ar weinyddion Google, 506 00:21:43,420 --> 00:21:46,940 neu os yw hyn yn helo dot PHP, sy'n dod â PSet6, 507 00:21:46,940 --> 00:21:48,650 Rydw i'n mynd i basio i mewn y swyddogaeth ymholiad 508 00:21:48,650 --> 00:21:51,450 yn union fel printf, dau dadleuon eraill. 509 00:21:51,450 --> 00:21:57,120 GET, dyfynnwch, enw defnyddiwr unquote, a GET, dyfynnwch, enw unquote. 510 00:21:57,120 --> 00:22:00,720 Ac yn awr, sylwi ar yr hyn y mae'r Strwythur cyffredinol yma. 511 00:22:00,720 --> 00:22:03,320 Mae gen i ar y chwith ochr yr alwad, 512 00:22:03,320 --> 00:22:05,480 swyddogaeth hon a elwir ymholiad yn PHP. 513 00:22:05,480 --> 00:22:08,160 Rwy'n dal i gael fel iaith gyntaf ddadl, dim ond cyfres o destun. 514 00:22:08,160 --> 00:22:11,000 >> Ond mae hynny llinyn o destun yn hysgrifennu mewn iaith o'r enw SQL. 515 00:22:11,000 --> 00:22:12,616 Ac yn ddidwyll, nid yw'n iaith mawr. 516 00:22:12,616 --> 00:22:14,990 Rydym yn unig yn mynd i siarad am yn ffurfiol heddiw, mewn gwirionedd. 517 00:22:14,990 --> 00:22:17,031 Ac yna yn broblem a osodwyd saith, does gymharol 518 00:22:17,031 --> 00:22:18,800 ychydig o nodweddion ein bod mynd i trosoledd. 519 00:22:18,800 --> 00:22:22,530 Bydd y marciau cwestiwn, fodd bynnag, yn golygu plwg yn mae gwerth yma a plwg yn werth arall 520 00:22:22,530 --> 00:22:23,130 yma. 521 00:22:23,130 --> 00:22:26,010 A rhybudd, yr wyf wedi hepgor yr hyn o bob cwr o'r damn quote-- 522 00:22:26,010 --> 00:22:30,470 iddo- o amgylch y dyfyniad yn nodi y tro hwn. 523 00:22:30,470 --> 00:22:34,930 Rwyf wedi hepgor y dyfyniad marciau o amgylch y marc cwestiwn, 524 00:22:34,930 --> 00:22:36,410 ddrwg gennym, y tro hwn. 525 00:22:36,410 --> 00:22:38,870 >> Felly, beth braf am hyn Cwestiwn nodwedd marc sy'n 526 00:22:38,870 --> 00:22:42,830 PHP yn tueddu i gefnogi, Ruby a Python ac ieithoedd eraill, 527 00:22:42,830 --> 00:22:45,730 mae hyn yn unig yn golygu plwg mewn rhai gwerthfawrogi yma a ydych yn gwybod beth? 528 00:22:45,730 --> 00:22:48,300 Rydych yn chyfrif i maes a ddylid defnyddio dyfyniadau sengl neu dyfynodau dwbl. 529 00:22:48,300 --> 00:22:50,966 Peidiwch â trafferthu i mi gyda'r rhai Manylion ddeallusol anniddorol. 530 00:22:50,966 --> 00:22:53,780 Ond, gwnewch yn siŵr ei fod yn gywir fel bod fy cod yn y pen draw 531 00:22:53,780 --> 00:22:57,010 gweithredol a diogel, a oedd yn Bydd yn rhaid i ystyr cyn bo hir. 532 00:22:57,010 --> 00:23:00,460 >> Yn awr, faint o ddadleuon cyfanswm, dim ond i fod yn glir, yn cymryd swyddogaeth ymholiad? 533 00:23:00,460 --> 00:23:05,240 534 00:23:05,240 --> 00:23:07,581 Dylai unrhyw un sydd eisiau pleidleisio am fwy na dwy? 535 00:23:07,581 --> 00:23:08,080 Tri? 536 00:23:08,080 --> 00:23:10,001 Cadarn, pam? 537 00:23:10,001 --> 00:23:10,920 Pam tri? 538 00:23:10,920 --> 00:23:12,305 >> GYNULLEIDFA: [Anghlywadwy] 539 00:23:12,305 --> 00:23:13,180 DAVID Malan: Yn union. 540 00:23:13,180 --> 00:23:14,610 Mae'r rhan gyntaf yn y llinyn. 541 00:23:14,610 --> 00:23:18,640 Yr ail ddadl yw arwydd doler tanlinellu enw defnyddiwr braced GET. 542 00:23:18,640 --> 00:23:21,950 A'r trydydd ddadl yw y un peth, ond dim ond yr enw. 543 00:23:21,950 --> 00:23:24,590 Felly, mewn geiriau eraill, yn awr pe Roedd gen i ffurflen ar y we 544 00:23:24,590 --> 00:23:27,149 bod yn rhaid i feysydd testun, un ar gyfer enw defnyddiwr y defnyddiwr, 545 00:23:27,149 --> 00:23:29,690 un ar gyfer ei enw, dim ond fel y byddech yn gweld mewn gwefan 546 00:23:29,690 --> 00:23:32,120 pan fyddwch yn cofrestru ar gyfer rhywfaint gwefan, gallai hwn 547 00:23:32,120 --> 00:23:35,450 yn y cod ar y pen-ôl a mewn gwirionedd yn gwneud gosod yn awr 548 00:23:35,450 --> 00:23:37,220 i mewn i'r gronfa ddata. 549 00:23:37,220 --> 00:23:40,870 >> Yn awr ar y llaw arall, yn gadael i gyflym ymlaen. 550 00:23:40,870 --> 00:23:43,840 Tybiwch defnyddiwr yn awr logio i mewn ac rydych am 551 00:23:43,840 --> 00:23:48,860 i ysgrifennu cod PHP sy'n gwirio p'un y person sydd dim ond wedi mewngofnodi 552 00:23:48,860 --> 00:23:52,250 mewn gwirionedd yn ddefnyddiwr, gallwch defnyddio cystrawen eithaf syml. 553 00:23:52,250 --> 00:23:55,832 Gallwch ddweud SELECT, gadewch i ni ddweud seren, lle mae seren yn golygu popeth. 554 00:23:55,832 --> 00:23:57,540 Nid wyf yn gwybod yr hyn yr wyf eisiau, felly dim ond roi i mi 555 00:23:57,540 --> 00:24:01,585 yr holl golofnau o'r tabl Gelwir defnyddwyr lle, ac mae hyn yn 'n glws. 556 00:24:01,585 --> 00:24:03,710 Dewiswch cefnogi beth sydd a elwir yn predicate, sef 557 00:24:03,710 --> 00:24:06,630 fel ffordd o gymhwyso yr hyn yr ydych ei eisiau. 558 00:24:06,630 --> 00:24:10,590 Lle enw defnyddiwr yn dychwelyd dyfyniad, Malan unquote. 559 00:24:10,590 --> 00:24:13,680 Felly yma hefyd, dwi wedi gwreiddio y tu mewn i'r ddadl 560 00:24:13,680 --> 00:24:16,110 i swyddogaeth PHP, llinell o god SQL. 561 00:24:16,110 --> 00:24:18,680 A bod cod SQL hon amser yn mynd yn llythrennol 562 00:24:18,680 --> 00:24:21,790 i chwilio am ddyfynbris, unquote Malan. 563 00:24:21,790 --> 00:24:24,420 >> Nawr nid dyna'r cyfan sy'n ddefnyddiol, felly dwi'n mynd i neidio hynny 564 00:24:24,420 --> 00:24:28,650 ac yr wyf i'n mynd i roi i ffwrdd hon blaen o Brady, ac yn mynd 565 00:24:28,650 --> 00:24:30,990 ac yn plug-in yn lle hynny marc cwestiwn yma. 566 00:24:30,990 --> 00:24:33,290 Felly, dim ond i fod yn glir, beth Dylai fy ail ddadl 567 00:24:33,290 --> 00:24:37,480 gael os bydd rhywun yn unig wedi logio i mewn, ac rwy'n am wirio os yw ef neu hi mewn gwirionedd 568 00:24:37,480 --> 00:24:39,265 defnyddiwr? 569 00:24:39,265 --> 00:24:40,140 GYNULLEIDFA: [Anghlywadwy] 570 00:24:40,140 --> 00:24:40,890 DAVID Malan: Yeah. 571 00:24:40,890 --> 00:24:44,120 Rwy'n clywed doler tanlinellu arwydd GET dyfyniad, enw defnyddiwr unquote. 572 00:24:44,120 --> 00:24:50,040 A dylai fod yn ôl i mi unrhyw un o'r rhesi yn fy gronfa ddata 573 00:24:50,040 --> 00:24:51,986 sydd â enw defnyddiwr o Malan. 574 00:24:51,986 --> 00:24:54,860 Yn awr, gobeithio, dw i'n mynd i fynd yn ôl sero os nad Malan yn bod yma, 575 00:24:54,860 --> 00:24:56,290 neu un os oes ganddo. 576 00:24:56,290 --> 00:24:59,026 Ni ddylwn i fynd yn ôl dau neu dri neu bedwar. 577 00:24:59,026 --> 00:24:59,526 Pam? 578 00:24:59,526 --> 00:25:00,220 >> GYNULLEIDFA: [Anghlywadwy] 579 00:25:00,220 --> 00:25:01,120 >> DAVID Malan: Dywedais unigryw, dde? 580 00:25:01,120 --> 00:25:01,750 Rheswm syml. 581 00:25:01,750 --> 00:25:04,030 Gan fy mod yn dweud mae'n rhaid iddo fod yn unigryw, dim ond yn rhesymegol, 582 00:25:04,030 --> 00:25:07,940 dim ond rhaid i chi sero neu un Malans yn y tabl hwn gronfa ddata penodol. 583 00:25:07,940 --> 00:25:10,965 Nawr fel o'r neilltu, yn union fel eich bod wedi gweld hynny, er fy mod yn cadw defnyddio GET 584 00:25:10,965 --> 00:25:14,350 ac er bod PSet6 yn unig a ddefnyddir GET, gallwch sicr wedi POST. 585 00:25:14,350 --> 00:25:17,212 Ac yn dwyn i gof bod Post yn un arall techneg ar gyfer cyflwyno gwybodaeth 586 00:25:17,212 --> 00:25:19,170 o ffurf, ond mae'n nid yw'n dangos i fyny yn yr URL. 587 00:25:19,170 --> 00:25:22,690 Mae'n ychydig yn fwy diogel yn sicr am pethau fel enwau defnyddwyr a chyfrineiriau, 588 00:25:22,690 --> 00:25:25,210 a fydd PSet7, mewn gwirionedd, yn golygu. 589 00:25:25,210 --> 00:25:28,130 >> Felly, gadewch i ni wneud hyn yn PHP MyAdmin a gweld beth sy'n digwydd. 590 00:25:28,130 --> 00:25:30,020 Rydw i'n mynd i fynd i'r tab MySQL. 591 00:25:30,020 --> 00:25:34,450 Ac yn sylwi bod y gwerth diofyn ar gyfer PHP MyAdmin, dim ond er mwyn ceisio bod o gymorth, 592 00:25:34,450 --> 00:25:37,050 yw dewis seren gan ddefnyddwyr lle mae un. 593 00:25:37,050 --> 00:25:39,430 Wel, un bob amser yn wir, felly mae hyn wedi y gwirion yn effeithiol 594 00:25:39,430 --> 00:25:40,400 o dewiswch popeth. 595 00:25:40,400 --> 00:25:42,691 Ond dw i'n mynd i fod ychydig yn mwy bedantig ac â llaw 596 00:25:42,691 --> 00:25:45,920 teipio allan seren SELECT GAN ddefnyddwyr. 597 00:25:45,920 --> 00:25:48,294 >> Nawr yn dechnegol, gallwch ddyfynnu enw'r tablau. 598 00:25:48,294 --> 00:25:50,460 Mae'n brin bod gennych i, ond yn sylwi nid yw'r rhain yn 599 00:25:50,460 --> 00:25:52,240 eich dyfyniadau arferol ar y bysellfwrdd Unol Daleithiau. 600 00:25:52,240 --> 00:25:54,760 Mae hyn yn y backtick fel y'i gelwir, a oedd yn gyffredinol ar y llaw chwith uchaf 601 00:25:54,760 --> 00:25:56,000 cornel eich bysellfwrdd. 602 00:25:56,000 --> 00:25:58,500 Ond mae'n brin bod wnewch chi helpu mewn gwirionedd mae angen i drafferthu â hynny, 603 00:25:58,500 --> 00:25:59,950 felly byddaf jyst hepgor nhw beth bynnag. 604 00:25:59,950 --> 00:26:02,280 Felly nawr, gadewch i mi fynd yn ei flaen a tharo fynd. 605 00:26:02,280 --> 00:26:06,616 A faint o resi ddylwn i gael yn ôl pan fyddaf yn dewis seren gan ddefnyddwyr? 606 00:26:06,616 --> 00:26:08,407 >> GYNULLEIDFA: [Anghlywadwy] 607 00:26:08,407 --> 00:26:09,990 DAVID Malan: Nifer y rhesi, yn sicr. 608 00:26:09,990 --> 00:26:12,390 Ond faint yn hyn stori concrit ar hyn o bryd? 609 00:26:12,390 --> 00:26:14,640 Dau, oherwydd yr oedd mi ac roedd Rob. 610 00:26:14,640 --> 00:26:19,370 Felly, os wyf cliciwch Go, yr wyf yn gweld bod eu golwg Rwyf wedi gotten yn ôl, yn wir, dwy res. 611 00:26:19,370 --> 00:26:22,060 Mae yna lawer o annibendod ar y sgrin, ond yr wyf yn gweld dwy res. 612 00:26:22,060 --> 00:26:28,580 Ar y llaw arall, os wyf yn gwneud hyn eto ac yn gwneud Seren SELECT GAN ddefnyddwyr, lle mae enw defnyddiwr 613 00:26:28,580 --> 00:26:31,840 hafal dyfyniad, unquote Malan, yn awr os byddaf yn cliciwch Go, 614 00:26:31,840 --> 00:26:33,970 Rydw i'n unig yn mynd i fynd yn ôl un rhes. 615 00:26:33,970 --> 00:26:36,499 Ac yn olaf, os wyf yn gwneud rhywbeth fel hyn, mae'n debyg 616 00:26:36,499 --> 00:26:38,290 nad wyf yn poeni am cael popeth, 617 00:26:38,290 --> 00:26:41,020 sydd yn fath o ddiystyr yn awr, oherwydd mae dim ond ddwy golofn. 618 00:26:41,020 --> 00:26:43,103 Dyw hi ddim yn hoffi fy mod yn dewis llawer iawn o ddata. 619 00:26:43,103 --> 00:26:46,720 Gadewch i ni dybio Rwy'n mynd yn ei flaen ac yn DEWISWCH enw GAN 620 00:26:46,720 --> 00:26:51,990 defnyddwyr, lle mae enw defnyddiwr hafal Malan, beth sy'n neis am SQL yn onest, 621 00:26:51,990 --> 00:26:54,290 yw ei fod mewn gwirionedd dim ond yn ei wneud yr hyn yr ydych yn dweud iddo wneud. 622 00:26:54,290 --> 00:26:57,550 Mae'n eithaf gryno, ond rydych yn llythrennol dim ond dweud ei fod yr hyn rydych am ei wneud. 623 00:26:57,550 --> 00:27:01,130 Dewiswch enw gan ddefnyddwyr lle yr enw defnyddiwr hafal Malan. 624 00:27:01,130 --> 00:27:03,440 Ac y mae mewn gwirionedd yw bod eglur. 625 00:27:03,440 --> 00:27:08,410 Felly, yn awr os wyf yn taro Go, faint o rhesi wyf i'n mynd i ddod yn ôl? 626 00:27:08,410 --> 00:27:10,770 Un, am ei fod yn dim ond Malan, gobeithio. 627 00:27:10,770 --> 00:27:13,100 Neu sero os nad oedd yn yno, ond un maximally. 628 00:27:13,100 --> 00:27:17,610 >> A faint o golofnau byddaf yn ei gael yn ôl? 629 00:27:17,610 --> 00:27:18,450 Faint o golofnau? 630 00:27:18,450 --> 00:27:20,658 Y tro hwn, Im 'jyst yn mynd i gael un oherwydd doeddwn i ddim 631 00:27:20,658 --> 00:27:22,380 dewiswch seren, sef popeth. 632 00:27:22,380 --> 00:27:27,900 Nawr rwy'n dewis jyst enw, felly yr wyf yn dim ond mynd yn ôl un golofn ac un rhes. 633 00:27:27,900 --> 00:27:31,730 Ac mae'n edrych fath o briodol chwerthinllyd, dim ond yn edrych super 634 00:27:31,730 --> 00:27:33,060 bach fel hyn. 635 00:27:33,060 --> 00:27:34,290 Felly, beth sy'n digwydd mewn gwirionedd? 636 00:27:34,290 --> 00:27:36,890 Pan fyddwch yn cyflawni SQL ymholiad gan ddefnyddio dethol, 637 00:27:36,890 --> 00:27:38,700 yr hyn yr ydych yn ei gael yn ôl o'r gronfa ddata 638 00:27:38,700 --> 00:27:42,970 yn debyg i dabl dros dro gyda rhesi a cholofnau, efallai, 639 00:27:42,970 --> 00:27:46,260 ond y hepgorer unrhyw beth sy'n Nid ei ddewis mewn gwirionedd gennych chi. 640 00:27:46,260 --> 00:27:49,010 Felly, mae fel pe bai rhywun wedi cael fawr daenlen o'r holl fyfyrwyr 641 00:27:49,010 --> 00:27:51,610 cofrestru ar gyfer rhai grŵp myfyrwyr, ac yr ydych yn dweud, 642 00:27:51,610 --> 00:27:55,097 roi i mi yr holl freshman sydd i wedi cofrestru ar gyfer ein grŵp myfyrwyr, beth 643 00:27:55,097 --> 00:27:56,930 eich cydweithiwr yn y Gallai grŵp myfyrwyr yn ei wneud 644 00:27:56,930 --> 00:27:58,430 yn gallent jyst llaw chi y daenlen gyfan. 645 00:27:58,430 --> 00:27:59,742 Dyna fel dweud dewiswch seren. 646 00:27:59,742 --> 00:28:02,200 Ac mae'n ychydig yn blino os dim ond am i'r freshman. 647 00:28:02,200 --> 00:28:05,640 Ac felly, os ydych yn dweud yn lle hynny, dewiswch seren o dabl cronfa ddata 648 00:28:05,640 --> 00:28:08,470 lle mae flwyddyn yn cyfateb dyfyniad, freshman unquote, 649 00:28:08,470 --> 00:28:10,810 'i' fel pe byddai eich ffrind yn y grŵp myfyrwyr 650 00:28:10,810 --> 00:28:13,770 amlygwyd yn llythrennol ac copïo dim ond y rhesi freshman, 651 00:28:13,770 --> 00:28:16,780 eu ludo i mewn i Google newydd Taenlen neu ffeil Excel, 652 00:28:16,780 --> 00:28:18,860 a rhoi i chi yn ôl y gan arwain ffeil yn unig. 653 00:28:18,860 --> 00:28:21,710 Dyna'r cyfan sy'n mynd ar gysyniadol yma. 654 00:28:21,710 --> 00:28:23,920 >> Felly, yn y diwedd, y gallwn ei wneud rhai pethau 'n bert ffansi 655 00:28:23,920 --> 00:28:26,560 drwy storio pethau fel enwau defnyddwyr a cyfrineiriau ac yn y blaen. 656 00:28:26,560 --> 00:28:30,310 Ond, mae'n troi allan, dylem wneud ychydig yn wahanol na hyn. 657 00:28:30,310 --> 00:28:34,750 Dyw hi ddim yn bod smart i ddim ond storio enw defnyddiwr a chyfrinair. 658 00:28:34,750 --> 00:28:37,790 Rhywun yn gynharach, yr wyf yn meddwl lawr yma, awgrymu adnabod. 659 00:28:37,790 --> 00:28:40,787 Nawr gallai ID yn debyg i Harvard ID neu ID Net Iâl, 660 00:28:40,787 --> 00:28:42,870 ond gallai fod yn hyd yn oed yn symlach yn ein hachos ni cronfa ddata. 661 00:28:42,870 --> 00:28:45,120 Ac yn wir, yr achos cyffredin yw cael colofn arall. 662 00:28:45,120 --> 00:28:46,953 Ac yr wyf i'n mynd i fynd ymlaen llaw a golygu fy mwrdd. 663 00:28:46,953 --> 00:28:49,521 Ac os ydych yn chwarae o gwmpas gyda rhyngwyneb hon ar gyfer PSet7, 664 00:28:49,521 --> 00:28:51,770 byddwch yn gweld y gallwch wirio botwm yma fan hyn ac ychwanegwch 665 00:28:51,770 --> 00:28:53,750 cae ar gychwyn y tabl. 666 00:28:53,750 --> 00:28:56,720 Ac yn awr os byddaf yn cliciwch Go, mae'n mynd i roi un o'r ffurflenni hynny mi 667 00:28:56,720 --> 00:28:57,600 o yn gynharach. 668 00:28:57,600 --> 00:29:00,170 Rydw i'n mynd i ychwanegu cae o'r enw adnabod. 669 00:29:00,170 --> 00:29:03,070 Ac yr wyf i'n mynd i wneud yn fath rhifol. 670 00:29:03,070 --> 00:29:05,362 >> Mae gen i criw cyfan o'r gwerthoedd ar gyfer numerics. 671 00:29:05,362 --> 00:29:08,677 Im 'jyst yn mynd i ddewis INT ac â phoeni am y meintiau gwahanol. 672 00:29:08,677 --> 00:29:10,510 Nid oes rhaid i mi nodi hyd neu werth, 673 00:29:10,510 --> 00:29:13,710 am ei fod yn mynd i fod 32 darnau waeth beth. 674 00:29:13,710 --> 00:29:16,070 Priodoleddau, doedden ni ddim yn gweld o'r blaen. 675 00:29:16,070 --> 00:29:18,410 Unrhyw ddiddordeb mewn unrhyw un o'r rhain ddewislen opsiynau y tro hwn? 676 00:29:18,410 --> 00:29:21,890 677 00:29:21,890 --> 00:29:23,745 Am INT? 678 00:29:23,745 --> 00:29:24,620 Beth wnaethoch chi ei gynnig? 679 00:29:24,620 --> 00:29:27,350 680 00:29:27,350 --> 00:29:28,445 Na? 681 00:29:28,445 --> 00:29:29,570 A oes unrhyw un o'r rhain yn gwneud synnwyr? 682 00:29:29,570 --> 00:29:30,536 Yeah. 683 00:29:30,536 --> 00:29:31,900 Yeah, heb ei arwyddo, dde? 684 00:29:31,900 --> 00:29:35,930 >> Yn gyffredinol, os ydym yn mynd i roi pawb rhif unigryw, a oedd yn 685 00:29:35,930 --> 00:29:38,200 yw lle y stori hon yw mynd, Fi 'n sylweddol ond eisiau 686 00:29:38,200 --> 00:29:41,919 person i gael y nifer tebyg sero ac un a dau a thri a phedwar. 687 00:29:41,919 --> 00:29:43,710 Nid oes angen imi ddelio gyda rhifau negatif. 688 00:29:43,710 --> 00:29:45,210 'I jyst yn ymddangos fel cymhlethdod diangen. 689 00:29:45,210 --> 00:29:48,470 Rwyf am phedwar biliwn o werthoedd posibl, Nid yw phedwar biliwn o werthoedd posibl, 690 00:29:48,470 --> 00:29:50,699 felly Fi jyst dyblu gallu fy INT. 691 00:29:50,699 --> 00:29:53,490 Fel o'r neilltu, os ydych am i gysylltu hwn i rhywbeth fel Facebook, 692 00:29:53,490 --> 00:29:56,190 yn ôl yn fath o fy dydd pan fydd Daeth Facebook allan yn gyntaf, 693 00:29:56,190 --> 00:29:59,510 Rwy'n credu yr hyn yr oeddent defnyddio yn eu cronfa ddata MySQL 694 00:29:59,510 --> 00:30:02,856 i storio defnyddiwr dynodwr, yn unig oedd yn INT. 695 00:30:02,856 --> 00:30:05,230 Ond wrth gwrs, mae yna lawer pobl go iawn yn y byd. 696 00:30:05,230 --> 00:30:07,438 Mae llawer o ffug Facebook cyfrifon yn y byd. 697 00:30:07,438 --> 00:30:11,701 Ac felly yn y pen draw, gorlifo Facebook maint o INT, a phedwar biliwn 698 00:30:11,701 --> 00:30:12,200 gwerth. 699 00:30:12,200 --> 00:30:15,032 Dyna pam, os ydych yn edrych o gwmpas ac mae gwefannau 700 00:30:15,032 --> 00:30:16,740 a all ddweud wrthych beth eich ID unigryw y mae. 701 00:30:16,740 --> 00:30:19,781 Ac os ydych chi byth yn dewis enw defnyddiwr mewn Facebook, byddwch yn gweld eich ID unigryw. 702 00:30:19,781 --> 00:30:23,080 Rwy'n credu ei fod proffil dot PHP question mark ID hafal rhywbeth. 703 00:30:23,080 --> 00:30:27,210 Mae hynny bellach rhywbeth fel mawr INT, neu hir o amser os mynnwch, 704 00:30:27,210 --> 00:30:29,700 sydd yn werth 64-bit neu rywbeth tebyg. 705 00:30:29,700 --> 00:30:33,620 >> Felly, hyd yn oed yn y byd go iawn yn ei wneud hyn materion yn y pen draw, weithiau o bwys. 706 00:30:33,620 --> 00:30:37,600 Ac mae'n troi allan yma, os ydw i'n gan roi fy holl ddefnyddwyr ID unigryw, 707 00:30:37,600 --> 00:30:41,750 Rwyf am fod super eglur ac cyn lleied â phosibl yn gwneud y maes hwn yn unigryw. 708 00:30:41,750 --> 00:30:44,750 Ond mae'n troi allan mae un darn o dull enwi heddiw yn rhy 709 00:30:44,750 --> 00:30:46,470 mae hynny'n allwedd gynradd. 710 00:30:46,470 --> 00:30:49,800 Os ydych yn cynllunio cronfa ddata bwrdd a ydych yn gwybod ymlaen llaw 711 00:30:49,800 --> 00:30:55,580 mai un o'r colofnau yn y tabl hwnnw Dylai a bydd yn nodi unigryw o rhesi 712 00:30:55,580 --> 00:30:58,500 yn y tabl, yr ydych am pennu ei a dweud wrth y gronfa ddata, 713 00:30:58,500 --> 00:31:00,250 hwn yw fy mhrif allweddol. 714 00:31:00,250 --> 00:31:02,110 Efallai y bydd dyblygu mewn meysydd eraill, 715 00:31:02,110 --> 00:31:06,330 ond rwy'n dweud wrth y gronfa ddata fod hyn yw fy cynradd, fy maes pwysicaf, 716 00:31:06,330 --> 00:31:08,420 sy'n sicr o fod yn unigryw. 717 00:31:08,420 --> 00:31:09,660 >> Yn awr, mae hyn yn ymddangos yn ddi-waith. 718 00:31:09,660 --> 00:31:13,830 Rwyf nawr yn cynnig ein bod yn ychwanegu, drwy glicio Save yma, 719 00:31:13,830 --> 00:31:17,210 yn called-- cae ac rwy'n mynd i fynd yn ei flaen a chliciwch AI, 720 00:31:17,210 --> 00:31:19,720 byddwn yn dod yn ôl at hynny mewn munud, Achub. 721 00:31:19,720 --> 00:31:22,540 Yr wyf yn cynnig nawr bod fy mwrdd edrych fel hyn. 722 00:31:22,540 --> 00:31:26,305 Mae gen i gae INT elwir ID, cae o'r enw CHAR Enw Defnyddiwr, 723 00:31:26,305 --> 00:31:31,100 cae o'r enw VARCHAR Enw, ond ID, os yw'n cynradd ac felly'n unigryw, 724 00:31:31,100 --> 00:31:33,760 pam wnes i jyst yn wastraff amser yn cyflwyno beth 725 00:31:33,760 --> 00:31:39,140 effeithiol yn ail unigryw Gelwir maes ID dyna INT? 726 00:31:39,140 --> 00:31:41,980 >> Enw Defnyddiwr, galw i gof, yn eisoes yn unigryw, dywedasom. 727 00:31:41,980 --> 00:31:45,350 Felly dim ond yn rhesymegol, nid oes angen i chi unrhyw brofiad cronfa ddata i reswm 728 00:31:45,350 --> 00:31:47,570 drwy hyn, pam Efallai fy mod wedi cyflwyno 729 00:31:47,570 --> 00:31:50,065 mae INT fel fy adnabod unigryw hefyd? 730 00:31:50,065 --> 00:31:52,740 731 00:31:52,740 --> 00:31:53,930 Beth sy'n this-- ddweud eto? 732 00:31:53,930 --> 00:31:55,580 >> GYNULLEIDFA: [Anghlywadwy] 733 00:31:55,580 --> 00:31:59,534 >> DAVID Malan: ar hap mynediad yn haws, pam? 734 00:31:59,534 --> 00:32:00,410 >> GYNULLEIDFA: [Anghlywadwy] 735 00:32:00,410 --> 00:32:02,367 DAVID Malan: Yeah, 'i' dim ond cael mynediad rhifau. 736 00:32:02,367 --> 00:32:04,750 Felly, os ydych yn meddwl o hyn yn wir yn dabl, fel amrywiaeth, 737 00:32:04,750 --> 00:32:07,690 awr yr wyf wedi adnabod unigryw y gallaf neidio o gwmpas. 738 00:32:07,690 --> 00:32:11,520 Ac yn well na hynny o hyd yw bod pa mor fawr yw bod INT mynd i fod eto? 739 00:32:11,520 --> 00:32:14,450 740 00:32:14,450 --> 00:32:15,800 32 darnau neu bedwar bytes. 741 00:32:15,800 --> 00:32:17,750 >> Pa mor fawr yw fy enw defnyddiwr yn mynd i fod? 742 00:32:17,750 --> 00:32:20,310 743 00:32:20,310 --> 00:32:21,990 Maximally? 744 00:32:21,990 --> 00:32:22,880 16 bytes. 745 00:32:22,880 --> 00:32:26,080 >> Felly, os ydych yn wir yn gofalu am perfformiad eich cod, 746 00:32:26,080 --> 00:32:31,390 yn meddwl yn ôl i PSet5, a fyddai'n well gennych i chwilio am werth pedair beit neu 16 747 00:32:31,390 --> 00:32:32,240 gwerth beit, dde? 748 00:32:32,240 --> 00:32:33,810 Mae wir mor syml â hynny. 749 00:32:33,810 --> 00:32:38,060 Mae'n rhaid i chi wneud bedair gwaith cymaint o waith i chwilio am enwau defnyddwyr am fod y rhai 750 00:32:38,060 --> 00:32:38,830 16 bytes. 751 00:32:38,830 --> 00:32:41,320 Felly, rhaid i chi llythrennol cymharu pob un o'r 16 bytes i fod yn 752 00:32:41,320 --> 00:32:43,140 siŵr ie, mae hyn yn enw defnyddiwr rwyf eisiau. 753 00:32:43,140 --> 00:32:46,610 Tra gyfer INT, gallwch wneud hynny gyda dim ond pedwar bytes. 754 00:32:46,610 --> 00:32:49,212 >> Ac fel o'r neilltu ar gyfer y rhai diddordeb mewn caledwedd cyfrifiadurol, 755 00:32:49,212 --> 00:32:52,420 mae'n troi allan y gallwch chi ffitio rhywbeth fel mae INT neu werth 32-bit yn rhywbeth 756 00:32:52,420 --> 00:32:55,330 Gelwir cofrestr mewn cyfrifiadur CPU, sy'n golygu ei fod yn super, 757 00:32:55,330 --> 00:32:58,400 super gyflym, hyd yn oed ar yr isaf lefel y galedwedd y cyfrifiadur. 758 00:32:58,400 --> 00:33:00,530 Felly, does dim ond manteision i gyd o gwmpas. 759 00:33:00,530 --> 00:33:01,530 Felly, beth mae hyn yn ei olygu? 760 00:33:01,530 --> 00:33:04,850 Yn wir, pan fyddwch chi'n cynllunio tabl cronfa ddata, mae bron drwy'r amser 761 00:33:04,850 --> 00:33:07,170 ydych chi'n mynd i beidio â chael dim ond y data yr ydych yn gofalu amdanynt, 762 00:33:07,170 --> 00:33:09,280 ond mae hefyd yn rhywbeth fel dynodwr unigryw 763 00:33:09,280 --> 00:33:11,280 gan fod hyn yn mynd i gadewch i ni wneud pethau eraill. 764 00:33:11,280 --> 00:33:13,160 A gadewch i ni faglu dros un broblem yma. 765 00:33:13,160 --> 00:33:15,990 >> Gadewch i ni dybio nad yw defnyddwyr yn cael dim ond enwau defnyddwyr ac enwau, 766 00:33:15,990 --> 00:33:19,540 ond mae ganddynt hefyd pethau fel dinasoedd a gwladwriaethau a chodau zip, o leiaf 767 00:33:19,540 --> 00:33:20,432 yma yn yr Unol Daleithiau. 768 00:33:20,432 --> 00:33:22,390 Felly, dw i'n mynd i fynd yn ei flaen a dim ond yn gyflym yn dweud, 769 00:33:22,390 --> 00:33:26,180 rhoi dair colofn mwy i mi ar ddiwedd y tabl. 770 00:33:26,180 --> 00:33:28,900 Ac mae hyn yn mynd i fod City, mae hyn yn mynd i fod y Wladwriaeth, 771 00:33:28,900 --> 00:33:30,400 ac mae hyn yn mynd i fod Zip. 772 00:33:30,400 --> 00:33:32,710 >> Nawr mathau City, pa ddata dylai hyn fod, efallai? 773 00:33:32,710 --> 00:33:35,460 774 00:33:35,460 --> 00:33:35,989 VARCHAR? 775 00:33:35,989 --> 00:33:37,780 Nid wyf yn gwybod yr hyn y mae'r enw hiraf ddinas. 776 00:33:37,780 --> 00:33:40,571 Rhywle yn America, mae ' yn ôl pob tebyg rhywfaint gair chwerthinllyd hir, 777 00:33:40,571 --> 00:33:43,605 felly gadewch i ni dim ond yn mynd â 255, braidd yn hanesyddol neu'n fympwyol. 778 00:33:43,605 --> 00:33:44,730 Y Wladwriaeth, yr hyn yr ydych eisiau ei wneud? 779 00:33:44,730 --> 00:33:48,380 780 00:33:48,380 --> 00:33:50,367 Dyfarniad galwadau, dde? 781 00:33:50,367 --> 00:33:51,700 Beth sydd efallai y mwyaf effeithlon? 782 00:33:51,700 --> 00:33:53,500 Faint o gymeriadau? 783 00:33:53,500 --> 00:33:55,950 Efallai dim ond dau, os gallwn gael i ffwrdd â gwneud yn union, 784 00:33:55,950 --> 00:33:58,250 fel, MA gyfer Massachusetts ac yn y blaen. 785 00:33:58,250 --> 00:34:00,520 Felly, dw i'n mynd i fynd gwerth CHAR o ddau. 786 00:34:00,520 --> 00:34:03,080 >> Cod Zip 'na un diddorol. 787 00:34:03,080 --> 00:34:06,679 Rydym ni yma yn 02138, fel bod yn awgrymu y dylem ddefnyddio'r hyn? 788 00:34:06,679 --> 00:34:07,470 Mae'n INT, dde? 789 00:34:07,470 --> 00:34:10,030 790 00:34:10,030 --> 00:34:12,800 INT, INT, byr? 791 00:34:12,800 --> 00:34:14,521 Byddai Byr yn gweithio. 792 00:34:14,521 --> 00:34:15,020 Na? 793 00:34:15,020 --> 00:34:18,920 794 00:34:18,920 --> 00:34:20,870 CHAR neu bump, ond yr wyf am gael INT. 795 00:34:20,870 --> 00:34:23,710 Pam gwthio yn ôl ar INT? 796 00:34:23,710 --> 00:34:26,820 Perswadio fi o hyn. 797 00:34:26,820 --> 00:34:29,210 Beth sy'n dwp am INT, fy syniad? 798 00:34:29,210 --> 00:34:29,871 Yeah. 799 00:34:29,871 --> 00:34:31,199 >> GYNULLEIDFA: Cymerwch fyny mwy o gof. 800 00:34:31,199 --> 00:34:32,909 >> DAVID Malan: Cymerwch fyny mwy o gof. 801 00:34:32,909 --> 00:34:35,310 Mae pedwar bytes, ond rydych yn cynnig cod zip 802 00:34:35,310 --> 00:34:39,000 â phum bytes neu rywun oedd fel CHAR, sy'n teimlo fel eh, nid yw hynny'n wir yn 803 00:34:39,000 --> 00:34:39,620 yr achos. 804 00:34:39,620 --> 00:34:40,489 >> Wel, stori hwyliog. 805 00:34:40,489 --> 00:34:43,179 Flynyddoedd yn ôl, pan oeddwn yn arfer defnyddio Microsoft Outlook ar gyfer fy e-bost, 806 00:34:43,179 --> 00:34:45,150 Yr wyf yn y pen draw yn awyddus i newid i Gmail. 807 00:34:45,150 --> 00:34:48,949 Ac felly, yr wyf yn allforio fy holl cysylltiadau o Outlook fel ffeil CSV. 808 00:34:48,949 --> 00:34:50,699 Comma gwahanu gwerthoedd, a dim ond yn golygu i mi 809 00:34:50,699 --> 00:34:54,060 Roedd gan fy holl enwau ffrindiau a ddiwethaf enwau a rhifau ffôn a chodau zip 810 00:34:54,060 --> 00:34:54,747 a hynny i gyd. 811 00:34:54,747 --> 00:34:56,580 Ac yna yr wyf yn gwneud y camgymeriad o agor i fyny 812 00:34:56,580 --> 00:34:58,640 yn Excel, sy'n un o rhaglen taenlen sy'n 813 00:34:58,640 --> 00:35:00,289 deall ffeiliau CSV fel yr ydym wedi gweld. 814 00:35:00,289 --> 00:35:03,080 Ond yna, mae'n rhaid i mi fod wedi taro, fel, Ardal Reoli neu Reoli S ar un adeg. 815 00:35:03,080 --> 00:35:06,250 Ac Excel yn ôl pob golwg ar y pryd Roedd yn nodwedd lle bydd unrhyw adeg y 816 00:35:06,250 --> 00:35:08,100 Gwelodd nifer, mae'n ceisio bod yn ddefnyddiol. 817 00:35:08,100 --> 00:35:11,610 Ac os bydd y nifer yn dechrau gyda zeros, byddai'n jyst cael gwared arnyn nhw. 818 00:35:11,610 --> 00:35:13,420 Pam ydych chi'n angen arwain zeros ar cyfanrifau? 819 00:35:13,420 --> 00:35:15,140 Maent yn ddiystyr, yn fathemategol. 820 00:35:15,140 --> 00:35:17,530 Dydyn nhw ddim yn ddiystyr yn y system Unol Daleithiau Post. 821 00:35:17,530 --> 00:35:19,954 Felly, rwyf wedi cael ers blynyddoedd, hyd heddiw, yr wyf yn dal 822 00:35:19,954 --> 00:35:22,370 ffrindiau, pan fydd y achos prin y mae angen rhywun dyna yr wyf yn 823 00:35:22,370 --> 00:35:24,078 mynd i'r afael y dyddiau hyn, 'N annhymerus' yn dal i weld fy mod 824 00:35:24,078 --> 00:35:26,767 gael ffrind yng Nghaergrawnt, Massachusetts, 2138. 825 00:35:26,767 --> 00:35:29,350 Ac mae'n blino os ydych yn ceisio rhoi trefn o programmatically 826 00:35:29,350 --> 00:35:30,975 cynhyrchu amlenni neu dim ond jot i lawr. 827 00:35:30,975 --> 00:35:33,599 A dyna oherwydd y rheswm hwn, Dewisais y math data anghywir. 828 00:35:33,599 --> 00:35:34,490 Felly, yr wyf yn caru eich syniad. 829 00:35:34,490 --> 00:35:35,650 Gadewch i ddefnyddio cae CHAR. 830 00:35:35,650 --> 00:35:38,340 Pum cymeriad, ac eithrio mae achos gornel. 831 00:35:38,340 --> 00:35:42,220 Os ydych yn dal i anfon post, Weithiau zip codau dyddiau hyn, 832 00:35:42,220 --> 00:35:45,360 eu bod yn, fel, yn ogystal â phedwar. 833 00:35:45,360 --> 00:35:48,200 Felly, mae angen cysylltnod ac yna mae arnom angen pedwar rhif mwy. 834 00:35:48,200 --> 00:35:50,330 Felly, i fod yn onest, gallai mynd sawl ffordd wahanol. 835 00:35:50,330 --> 00:35:52,371 >> Am y tro, dwi'n mynd i gadw mae'n syml ac Im 'jyst 836 00:35:52,371 --> 00:35:54,780 mynd i ddweud ei fod yn pum gwerth CHAR ac rydym yn 837 00:35:54,780 --> 00:35:56,739 mynd i hepgor y cyfan dash ynghyd â phedwar. 838 00:35:56,739 --> 00:35:58,280 Ond mae'r rhain yn y mathau o cyfaddawdu. 839 00:35:58,280 --> 00:36:00,196 A allwch chi feddwl am y un problemau sy'n codi 840 00:36:00,196 --> 00:36:01,860 gyda rhifau ffôn neu feysydd eraill. 841 00:36:01,860 --> 00:36:04,350 >> Ac yn awr, mae hyn mewn gwirionedd ffordd ffôl i fynd i lawr. 842 00:36:04,350 --> 00:36:08,000 Gadewch i ni dybio y ddau Rob a minnau a Hannah a Maria a [? Davon?] Ac Andy 843 00:36:08,000 --> 00:36:12,820 ac eraill ar y staff i gyd yn byw yng Nghaergrawnt, Massachusetts, 02138. 844 00:36:12,820 --> 00:36:17,970 Mae hyn mewn gwirionedd yn teimlo'n wirion 'mod i'n gan ychwanegu at fy mwrdd ddefnyddwyr, dinas, y wladwriaeth, 845 00:36:17,970 --> 00:36:18,630 a zip. 846 00:36:18,630 --> 00:36:20,980 Pam? 847 00:36:20,980 --> 00:36:21,960 >> GYNULLEIDFA: [Anghlywadwy] 848 00:36:21,960 --> 00:36:22,918 >> DAVID Malan: Dweud eto? 849 00:36:22,918 --> 00:36:24,310 GYNULLEIDFA: [Anghlywadwy] 850 00:36:24,310 --> 00:36:25,850 >> DAVID Malan: Maen nhw bob amser mynd i fynd gyda'i gilydd, dde? 851 00:36:25,850 --> 00:36:28,660 Pan mae'n troi allan, rydym yn arfer meddwl hyn yn wir hyd nes y byddwn yn drwyadl 852 00:36:28,660 --> 00:36:30,570 chwilio yr Unol Daleithiau cyfan, ac yn ymddangos bod yna 853 00:36:30,570 --> 00:36:32,653 rhai anghysondebau lle mae trefi lluosog yn cael 854 00:36:32,653 --> 00:36:35,060 yr un zip, sydd yn rhyfedd. 855 00:36:35,060 --> 00:36:40,580 Ond, os byddwn yn nodi ar hyn o bryd fod 02138 bob amser yn Cambridge, Massachusetts, 856 00:36:40,580 --> 00:36:44,910 pam yn y byd y byddech yn storio mewn eich cronfa ddata Caergrawnt a MA a 02138 857 00:36:44,910 --> 00:36:49,357 i mi ac i Hannah ac ar gyfer Rob a am [? Davon?] Ac i eraill sy'n byw 858 00:36:49,357 --> 00:36:51,190 yma yng Nghaergrawnt, mae'n berffaith diswyddo. 859 00:36:51,190 --> 00:36:54,480 >> Dylem gael i ffwrdd gyda dim ond storio beth? 860 00:36:54,480 --> 00:36:55,610 Dim ond y cod zip. 861 00:36:55,610 --> 00:36:58,660 Ond wedyn, os byddwn yn storio dim ond y cod zip, wyf am, yn ôl pob tebyg, 862 00:36:58,660 --> 00:37:02,160 ar gyfer fy ngwefan i wybod ble 02138 yw. 863 00:37:02,160 --> 00:37:03,910 Felly, mae angen bwrdd arall i mi. 864 00:37:03,910 --> 00:37:04,697 Ac mae hynny'n iawn. 865 00:37:04,697 --> 00:37:07,530 Ac yn wir, mae hyn yn un o'r prosesau dylunio o ddylunio tablau 866 00:37:07,530 --> 00:37:11,472 y byddwch yn ei wneud yn PSet7 yn ogystal lle ydych am ffactor allan data cyffredin. 867 00:37:11,472 --> 00:37:14,430 Yn union fel yr ydym wedi bod yn ffactoreiddio allan cod cyffredin a ffactoreiddio allan cyffredin 868 00:37:14,430 --> 00:37:17,380 arddulliau o CSS, dyma hefyd yn y gronfa ddata, 869 00:37:17,380 --> 00:37:21,180 os wyf ond angen i 02138 unigryw nodi dref enedigol rhywun, 870 00:37:21,180 --> 00:37:25,020 peidiwch â storio Cambridge, Mass ar gyfer bob defnyddiwr asio yn eich tabl. 871 00:37:25,020 --> 00:37:29,770 >> Yn lle hynny, rhaid i dabl ar wahân o'r enw Sipiau a ddylai gael yr hyn colofnau? 872 00:37:29,770 --> 00:37:33,490 Mwy na thebyg cae ID, dim ond oherwydd, er yr egwyddorion rydym yn sôn am nawr. 873 00:37:33,490 --> 00:37:35,720 Yn ôl pob tebyg cae zip ar gyfer 02138. 874 00:37:35,720 --> 00:37:38,400 Ac yna yn ôl pob tebyg pa colofnau eraill? 875 00:37:38,400 --> 00:37:42,950 Dinas a wladwriaeth, ond dim ond un rhes ar gyfer 02,138, un rhes ar gyfer 02139, 876 00:37:42,950 --> 00:37:44,772 un rhes ar gyfer 90,210. 877 00:37:44,772 --> 00:37:46,730 A bod yn llythrennol yr holl godau zip rwy'n gwybod. 878 00:37:46,730 --> 00:37:49,012 >> Felly nawr, beth allwch chi ei wneud? 879 00:37:49,012 --> 00:37:51,220 Mae hyn yn broblem, gan fod yn awr yr wyf wedi cael dau dabl. 880 00:37:51,220 --> 00:37:54,660 Felly, mae fy defnyddwyr yn bennaf dros yma, ond mae eu gwybodaeth ddinas wladwriaeth yn 881 00:37:54,660 --> 00:37:55,390 dros yma. 882 00:37:55,390 --> 00:37:58,635 Felly, mae'n troi allan gyda SQL, mae ' mewn gwirionedd yn ffordd i ymuno â gwybodaeth, 883 00:37:58,635 --> 00:38:00,470 a byddwch yn gweld hyn yn y PSet. 884 00:38:00,470 --> 00:38:03,000 >> Ond mae'n troi allan y gallwch gwneud rhywbeth fel hyn. 885 00:38:03,000 --> 00:38:10,501 Seren SELECT O defnyddwyr, YMUNO sipiau ON defnyddwyr dot zip hafal sipiau dot zip. 886 00:38:10,501 --> 00:38:13,360 Pa yn ychydig yn amleiriog, rhaid cyfaddef, ond mae hyn yn unig 887 00:38:13,360 --> 00:38:17,590 yn golygu dewiswch popeth o'r broses o gymryd fy mwrdd i ddefnyddwyr 888 00:38:17,590 --> 00:38:19,580 a fy mwrdd sipiau. 889 00:38:19,580 --> 00:38:22,120 Ymunwch â nhw ar y naill maes sydd ganddynt yng ngholofn. 890 00:38:22,120 --> 00:38:24,780 Felly, yn llythrennol yn gwneud rhywbeth fel hyn, ac yn rhoi i mi yn ôl 891 00:38:24,780 --> 00:38:27,360 tabl newydd dros dro dyna ehangach, dyna mwy, 892 00:38:27,360 --> 00:38:29,450 fod gan bob un o'r colofnau o'r ddau ohonynt. 893 00:38:29,450 --> 00:38:33,510 A dyna, yn syml, yn cael y cystrawen ar gyfer gwneud rhywbeth fel hyn. 894 00:38:33,510 --> 00:38:35,540 >> Felly, mae hyn yn ei flaen, ond mae mynd 895 00:38:35,540 --> 00:38:38,950 i fod yn benderfyniadau dylunio eraill wnewch chi helpu rhaid i ni wneud, nid yn unig gyda mynegeion 896 00:38:38,950 --> 00:38:40,550 ond mae hefyd yn rhedeg i mewn i heriau. 897 00:38:40,550 --> 00:38:43,360 Yn wir, mae 'na her mewn unrhyw gynllun cronfa ddata 898 00:38:43,360 --> 00:38:47,930 lle weithiau efallai dau o bobl eisiau i gael mynediad at yr un rhes o gronfa ddata 899 00:38:47,930 --> 00:38:48,530 bwrdd. 900 00:38:48,530 --> 00:38:51,450 Felly, mae hyn yn rhywbeth yr ydym chi helpu yn dod ar draws yn PSet7 hefyd. 901 00:38:51,450 --> 00:38:54,686 >> Ond yr wyf yn meddwl y byddwn i'n edrych ar un ymosodiad sy'n bosibl yn SQL. 902 00:38:54,686 --> 00:38:56,560 Beth yw rhai o'r problemau a all godi? 903 00:38:56,560 --> 00:38:58,170 Felly, byddwch yn dod ar draws hyn yn PSet7. 904 00:38:58,170 --> 00:39:01,874 Ac rydym yn dweud wrthych llwyr yr hyn y mae'r codio ateb ar gyfer y broblem hon. 905 00:39:01,874 --> 00:39:04,790 Ond os ydych yn cymryd dosbarth lefel uwch, yn enwedig mewn systemau gweithredu, 906 00:39:04,790 --> 00:39:06,950 ydych yn mynd i ddod ar eu traws mater o atomicity, 907 00:39:06,950 --> 00:39:10,080 y broblem o geisio gwneud pethau lluosog i gyd ar unwaith 908 00:39:10,080 --> 00:39:11,000 heb ymyrraeth. 909 00:39:11,000 --> 00:39:14,560 >> Ac yr wyf yn meddwl y byddwn i'n gyflwyno hyn syniad ar gyfer PSet7 gyda trosiad 910 00:39:14,560 --> 00:39:18,160 a ddysgais fy hun mewn Margo Systemau gweithredu CS164 Seltzer yn 911 00:39:18,160 --> 00:39:18,990 flynyddoedd dosbarth yn ôl. 912 00:39:18,990 --> 00:39:22,230 Tybiwch fod gennych un o'r rhain dorm oergelloedd yn eich ystafell dorm neu dŷ, 913 00:39:22,230 --> 00:39:24,474 a bod gennych penchant go iawn am laeth. 914 00:39:24,474 --> 00:39:27,140 Ac felly, byddwch yn dod adref o ddosbarthiadau un diwrnod, byddwch yn agor yr oergell. 915 00:39:27,140 --> 00:39:27,620 O, damn ef. 916 00:39:27,620 --> 00:39:28,870 Does dim llaeth yn yr oergell. 917 00:39:28,870 --> 00:39:32,470 Felly, ydych chi'n cau'r oergell, gloi'r drws, gloi eich dorm, 918 00:39:32,470 --> 00:39:34,770 cerdded o gwmpas y gornel i CVS, fynd i mewn llinell, 919 00:39:34,770 --> 00:39:36,312 a dechrau edrych allan am ychydig o laeth. 920 00:39:36,312 --> 00:39:38,978 Ac mae'n mynd i gymryd amser, oherwydd bod y rhai hunan ddesg dalu damn 921 00:39:38,978 --> 00:39:40,570 cownteri cymryd am byth i ddefnyddio beth bynnag. 922 00:39:40,570 --> 00:39:41,950 Felly yn y cyfamser, eich roommate yn dod adref. 923 00:39:41,950 --> 00:39:43,470 Ef neu hi wir yn hoffi llaeth hefyd. 924 00:39:43,470 --> 00:39:45,520 Maent yn dod i mewn i'r ystafell dorm, agor yr oergell, oh, asio hynny. 925 00:39:45,520 --> 00:39:46,490 Does dim mwy o laeth. 926 00:39:46,490 --> 00:39:49,040 >> Felly, ef neu hi hefyd yn mynd o amgylch y gornel. 927 00:39:49,040 --> 00:39:51,670 Ond yn awr, gan fod o fel dau neu dair neu bedair CVSes gerllaw, 928 00:39:51,670 --> 00:39:53,800 eu bod yn digwydd i fynd i un o'r gwahanol rai yn y sgwâr. 929 00:39:53,800 --> 00:39:55,830 Ac felly yn awr, ychydig funudau yn ddiweddarach, y ddau ohonoch 930 00:39:55,830 --> 00:39:58,060 yn dod adref ac yn Ych, problem gwaethaf erioed. 931 00:39:58,060 --> 00:40:00,967 Nawr eich bod wedi gormod o laeth oherwydd ei fod yn mynd i fynd sur. 932 00:40:00,967 --> 00:40:03,050 A ydych yn hoffi llaeth, ond rydych yn peidiwch â 'n sylweddol yn hoffi llaeth. 933 00:40:03,050 --> 00:40:06,730 >> Felly nawr, roedd hwn yn gostus camgymeriad gan fod y ddau ohonoch 934 00:40:06,730 --> 00:40:09,870 gwneud penderfyniad yn seiliedig ar y cyflwr rhai newidyn sy'n 935 00:40:09,870 --> 00:40:12,660 oedd yn y broses o yn cael ei newid gan i chi, 936 00:40:12,660 --> 00:40:14,560 cychwynnwr mynd i gael llaeth. 937 00:40:14,560 --> 00:40:17,785 Felly, beth yw efallai dynol ateb i'r broblem honno? 938 00:40:17,785 --> 00:40:18,660 GYNULLEIDFA: [Anghlywadwy] 939 00:40:18,660 --> 00:40:19,430 DAVID Malan: Gadewch nodyn, dde? 940 00:40:19,430 --> 00:40:21,850 Gadewch nodyn Dylech bob amser, os ydych yn gyfarwydd â'r sioe. 941 00:40:21,850 --> 00:40:23,100 Oes, mae dau ohonom. 942 00:40:23,100 --> 00:40:25,940 Felly, bob amser yn gadael nodyn, neu llythrennol cloi yr oergell 943 00:40:25,940 --> 00:40:28,602 gyda rhyw fath o clo clap neu rhywbeth dros ben llestri fel 'na. 944 00:40:28,602 --> 00:40:31,310 Ond mae hynny'n wir yn mynd i fod yn broblem allweddol gyda dylunio cronfa ddata, 945 00:40:31,310 --> 00:40:34,710 yn enwedig pan allai fod gennych lluosog borwyr, gliniaduron lluosog, 946 00:40:34,710 --> 00:40:37,450 defnyddwyr lluosog i gyd yn ceisio diweddaru gwybodaeth ar unwaith. 947 00:40:37,450 --> 00:40:40,590 Gwybodaeth arbennig o sensitif fel gwybodaeth ariannol, 948 00:40:40,590 --> 00:40:43,350 lle gyda masnachu stoc byddwch wefan fel chi yn adeiladu, 949 00:40:43,350 --> 00:40:47,270 beth os ydych am wirio faint o arian gennych ac yna os oes gennych ddigon, 950 00:40:47,270 --> 00:40:48,490 brynu stoc? 951 00:40:48,490 --> 00:40:50,899 >> Ond beth os bydd rhywun arall sydd Mae cyfrif ar y cyd gyda chi 952 00:40:50,899 --> 00:40:52,690 yn ceisio ar yr un pryd i brynu stoc? 953 00:40:52,690 --> 00:40:55,190 Felly, ei fod yn edrych ar y balans y cyfrif, y ddau ohonoch 954 00:40:55,190 --> 00:40:57,540 fynd yn ôl yr un fath ateb, does dim llaeth. 955 00:40:57,540 --> 00:41:00,580 Neu'r ddau ohonoch fynd yn ôl yr ateb, rydych wedi $ 100 mewn y cyfrif. 956 00:41:00,580 --> 00:41:04,680 Mae'r ddau ohonoch yn ceisio i wneud y penderfyniad i brynu un gyfran o rai stoc cwmni. 957 00:41:04,680 --> 00:41:06,130 >> Ac yn awr, beth sy'n digwydd? 958 00:41:06,130 --> 00:41:07,140 Mae gennych ddau gyfrannau? 959 00:41:07,140 --> 00:41:08,420 Nid oes gennych unrhyw gyfrannau? 960 00:41:08,420 --> 00:41:10,320 Gall problemau tebyg godi. 961 00:41:10,320 --> 00:41:11,755 Felly, byddwn yn dod ar draws hynny. 962 00:41:11,755 --> 00:41:14,630 Ymosodiadau pigiad SQL, diolch byth, yn rhywbeth y byddwn yn eich helpu gyda, 963 00:41:14,630 --> 00:41:17,430 ond mae'r rhain yn atrociously cyffredin y dyddiau hyn yn dal i. 964 00:41:17,430 --> 00:41:18,680 Felly, mae hyn yn unig yn enghraifft. 965 00:41:18,680 --> 00:41:21,290 Nid wyf yn honni bod System Harvard PIN yw 966 00:41:21,290 --> 00:41:23,130 agored i ymosodiad hwn penodol. 967 00:41:23,130 --> 00:41:24,160 Rydym wedi ceisio. 968 00:41:24,160 --> 00:41:26,120 Ond, byddwch yn gwybod ein bod yn cael cae fel hyn. 969 00:41:26,120 --> 00:41:29,620 Ac ID Net Yale Mae gan debyg chwilio sgrîn y dyddiau hyn. 970 00:41:29,620 --> 00:41:33,190 Ac mae'n troi allan, efallai y System PIN yn cael ei weithredu yn PHP. 971 00:41:33,190 --> 00:41:37,050 >> Ac os yw'n were-- yw'n not-- ydynt Efallai y bydd rhaid cod sy'n edrych fel hyn. 972 00:41:37,050 --> 00:41:38,210 Mae ganddynt ddau newidyn. 973 00:41:38,210 --> 00:41:42,495 Rhowch enw defnyddiwr a chyfrinair i mi oddi wrth y newidyn byd-eang ôl-super 974 00:41:42,495 --> 00:41:43,970 ein bod yn sôn amdanynt yn gynharach. 975 00:41:43,970 --> 00:41:47,310 Efallai Harvard Mae ymholiad fel seren SELECT GAN defnyddwyr 976 00:41:47,310 --> 00:41:50,005 lle mae enw defnyddiwr yn dychwelyd y a chyfrinair yn dychwelyd hynny. 977 00:41:50,005 --> 00:41:51,880 Ac yn sylwi bod Im 'jyst blygio ei wrth ddefnyddio 978 00:41:51,880 --> 00:41:55,050 y nodiant Brace cyrliog gan y llall diwrnod, sy'n golygu dim ond plwg mewn gwerth 979 00:41:55,050 --> 00:41:55,550 yma. 980 00:41:55,550 --> 00:41:57,449 Dydw i ddim yn defnyddio'r Cwestiwn dechneg marc. 981 00:41:57,449 --> 00:41:59,240 Nid oes gennyf unrhyw ail neu drydydd ddadleuon. 982 00:41:59,240 --> 00:42:02,350 Im 'jyst yn llythrennol adeiladu'r llinyn fy hun. 983 00:42:02,350 --> 00:42:04,930 >> Y broblem, fodd bynnag, yw bod os bydd rhywun yn hoffi scroob, 984 00:42:04,930 --> 00:42:09,020 sydd yn gyfeiriad at ffilm, logiau gyda rhywbeth fel hyn, 985 00:42:09,020 --> 00:42:11,250 ac rydw i wedi cael gwared ar y dotiau sydd fel arfer yn cynnwys i fyny 986 00:42:11,250 --> 00:42:14,370 cyfrineiriau, beth os yw'n yn arbennig maleisus 987 00:42:14,370 --> 00:42:18,860 ac mae ei cyfrinair efallai yw 12345, fesul y ffilm o'r enw "Spaceballs," 988 00:42:18,860 --> 00:42:21,970 ond roedd yn feirniadol mathau o sengl dyfyniad ar ôl y pum, 989 00:42:21,970 --> 00:42:24,790 Yna, yn llythrennol y gair neu'r yn y gofod, ac yna dyfynnu, 990 00:42:24,790 --> 00:42:29,160 un unquote hafal dyfyniad un, ond rhybudd ei fod yn hepgor beth? 991 00:42:29,160 --> 00:42:32,700 Mae wedi hepgor y dyfyniad ar y dde ac mae wedi hepgor y dyfyniad ar y chwith. 992 00:42:32,700 --> 00:42:35,170 >> Oherwydd os hymosodwr hwn rhagdybiaeth scroob yn 993 00:42:35,170 --> 00:42:38,160 yw bod y bobl a ysgrifennodd Nid yw hwn cod PHP mor llachar, 994 00:42:38,160 --> 00:42:42,990 efallai eu bod dim ond cael rhywfaint sengl dyfyniadau o gwmpas y rhyngosod 995 00:42:42,990 --> 00:42:45,210 o newidyn mewn braces cyrliog? 996 00:42:45,210 --> 00:42:48,620 Ac felly efallai, y gallai garedig o cwblhau eu meddwl 997 00:42:48,620 --> 00:42:53,290 ar eu cyfer, ond mewn ffordd sy'n mynd i adael iddo hacio i mewn i'r system PIN. 998 00:42:53,290 --> 00:42:55,310 Mewn geiriau eraill, mae'n debyg bod hyn yn y cod 999 00:42:55,310 --> 00:42:57,140 ac yr ydym yn awr yn plwg yn yr hyn scroob deipio. 1000 00:42:57,140 --> 00:42:58,770 Ac mae'n goch, am ei fod yn ddrwg. 1001 00:42:58,770 --> 00:43:01,310 >> Ac mae'r testun sylfaenol yn yr hyn y mae'n deipio i mewn, 1002 00:43:01,310 --> 00:43:05,510 Gallai scroob tric gweinydd Harvard i adeiladu SQL query 1003 00:43:05,510 --> 00:43:07,440 llinyn sy'n edrych fel hyn. 1004 00:43:07,440 --> 00:43:11,760 Cyfrinair yn cyfateb 12345 neu un yn cyfateb i un. 1005 00:43:11,760 --> 00:43:14,820 Canlyniad sydd, yn rhesymegol, yw y bydd hyn yn log scroob 1006 00:43:14,820 --> 00:43:18,360 mewn os bydd ei cyfrinair 12345 neu os bydd un gyfartal 1007 00:43:18,360 --> 00:43:22,660 un, sydd wrth gwrs bob amser yn wir, sy'n golygu scroob bob amser yn cael yn. 1008 00:43:22,660 --> 00:43:26,060 >> Ac felly, y ffordd at atgyweiria hyn, fel mewn llawer o achosion, 1009 00:43:26,060 --> 00:43:28,140 fyddai i ysgrifennu yn fwy amddiffynnol. 1010 00:43:28,140 --> 00:43:30,390 I ddefnyddio rhywbeth fel ein swyddogaeth ymholiad gwirioneddol, a oedd yn 1011 00:43:30,390 --> 00:43:33,980 byddwch yn gweld yn PSet7, lle'r ydym yn plwg yn rhywbeth fel gofynodau yma. 1012 00:43:33,980 --> 00:43:35,980 A harddwch y swyddogaeth ymholiad i ni 1013 00:43:35,980 --> 00:43:40,010 roi i chi yw ei fod yn amddiffyn yn erbyn y rhain hyn a elwir yn ymosodiadau pigiad SQL, lle 1014 00:43:40,010 --> 00:43:44,260 rhywun yn twyllo'r eich cod i mewn chwistrellu ei cod SQL hun. 1015 00:43:44,260 --> 00:43:47,380 Oherwydd yr hyn y swyddogaeth ymholiad rydym yn rhoi y byddwch yn ei wneud mewn gwirionedd, 1016 00:43:47,380 --> 00:43:51,270 os ydych yn defnyddio'r gystrawen marc cwestiwn ac ail a thrydydd dadl yma, 1017 00:43:51,270 --> 00:43:54,590 yw'r hyn oedd yn ychwanegu at y mewnbwn bod y defnyddiwr a ddarperir? 1018 00:43:54,590 --> 00:43:56,060 Mae'r rhai slaes dyfyniadau. 1019 00:43:56,060 --> 00:43:58,590 >> Felly, mae'n dianc unrhyw allai fod cymeriadau peryglus. 1020 00:43:58,590 --> 00:44:01,000 Mae hwn yn edrych yn rhyfedd yn awr, ond nid yw'n agored i niwed 1021 00:44:01,000 --> 00:44:03,260 oherwydd nid yw'n gwneud newid y rhesymeg anymore 1022 00:44:03,260 --> 00:44:06,470 oherwydd dyna cyfrinair cyfan yn Erbyn hyn un dyfynbris nad dyna, 1023 00:44:06,470 --> 00:44:07,596 mewn gwirionedd, cyfrinair scroob yn. 1024 00:44:07,596 --> 00:44:09,845 Felly, mae rhai jôcs wedi bod am hyn dros y blynyddoedd. 1025 00:44:09,845 --> 00:44:12,570 Felly, roedd hwn yn llun o ryw geek mewn llawer parcio 1026 00:44:12,570 --> 00:44:16,620 lle efallai y byddwch yn gwybod bod rhai dinasoedd a gwladwriaethau ceisio sganio eich trwydded 1027 00:44:16,620 --> 00:44:19,460 plât i bil chi neu i docyn i chi os byddwch yn mynd drwodd heb, fel, 1028 00:44:19,460 --> 00:44:20,660 y peth E-Z Pass. 1029 00:44:20,660 --> 00:44:24,490 Felly, y person hwn rhagdybir y efallai y bobl ysgrifennu'r system Pass E-Z 1030 00:44:24,490 --> 00:44:28,240 Nid yw mor llachar, ac efallai eu bod dim ond concatenated gilydd llinyn, 1031 00:44:28,240 --> 00:44:32,190 fel nad yw ef neu hi gallai faleisus nid dim ond cwblhau eu meddwl, 1032 00:44:32,190 --> 00:44:35,150 ond mewn gwirionedd yn gweithredu gorchymyn drwg, nad ydym wedi crybwyll hyd yma, 1033 00:44:35,150 --> 00:44:36,380 ond mae'n debyg y gallwch ddyfalu. 1034 00:44:36,380 --> 00:44:39,820 Mae hynny yn ychwanegol at ddileu a mewnosod a diweddaru ac yn dewis, 1035 00:44:39,820 --> 00:44:43,370 mae hefyd gair allweddol a elwir yn galw heibio, sy'n llythrennol yn dileu popeth 1036 00:44:43,370 --> 00:44:45,300 yn y gronfa ddata, a oedd yn yn arbennig o wael. 1037 00:44:45,300 --> 00:44:48,760 >> Gallwn chwyddo i mewn ar hyn os 'i' ychydig yn anodd eu gweld. 1038 00:44:48,760 --> 00:44:52,300 Mae hyn, yn awr, mae cartŵn enwog dyna rhyfeddol glyfar bellach 1039 00:44:52,300 --> 00:44:53,145 ac yn ddealladwy. 1040 00:44:53,145 --> 00:45:00,880 1041 00:45:00,880 --> 00:45:04,750 >> [Chwerthin] 1042 00:45:04,750 --> 00:45:05,910 >> Yeah, oer. 1043 00:45:05,910 --> 00:45:06,800 Math o geeking allan. 1044 00:45:06,800 --> 00:45:08,800 Felly y rhain, yna, yn cael eu Ymosodiadau pigiad SQL. 1045 00:45:08,800 --> 00:45:13,050 Ac maen nhw mor hawdd i'w osgoi trwy ddefnyddio y cod cywir neu llyfrgelloedd cywir. 1046 00:45:13,050 --> 00:45:15,947 A byddwch yn gweld yn PSet7, dyna pam ein bod yn rhoi'r swyddogaeth ymholiad i chi. 1047 00:45:15,947 --> 00:45:17,780 Felly, un neu ddau o blasau ein bod yn meddwl byddem 1048 00:45:17,780 --> 00:45:19,930 rhoi i chi yma yn ein munud yn weddill gyda'i gilydd. 1049 00:45:19,930 --> 00:45:24,030 Felly, fel yr ydych yn cofio o wythnos sero, rydym yn Cyflwynodd y ddau bylbiau golau sy'n 1050 00:45:24,030 --> 00:45:26,610 yn neis, nid yn unig oherwydd eu bod yn 'n bert ac maent yn lliwgar, 1051 00:45:26,610 --> 00:45:29,450 ond oherwydd eu bod yn cefnogi rhywbeth Gelwir API, Cais 1052 00:45:29,450 --> 00:45:31,980 Rhyngwyneb Rhaglennu A yn CS50 hyd yn hyn, rydym wedi 1053 00:45:31,980 --> 00:45:34,440 canolbwyntio'n bennaf ar GET a POST, ond mae'n troi allan 1054 00:45:34,440 --> 00:45:37,390 mae ferfau HTTP eraill fel RHOI. 1055 00:45:37,390 --> 00:45:39,430 >> Ac yn wir, roedd hyn yn sleid o wythnos sero 1056 00:45:39,430 --> 00:45:44,930 lle os byddwch yn ysgrifennu cod sy'n anfon a la PSet6 gais HTTP sy'n 1057 00:45:44,930 --> 00:45:49,647 yn edrych fel hyn gyda darn hwn o destun ar y gwaelod, a elwir JSON, 1058 00:45:49,647 --> 00:45:52,230 neu JavaScript Nodiant Gwrthrych y byddwn yn siarad am yr wythnos nesaf, 1059 00:45:52,230 --> 00:45:57,030 gallwch droi ar neu droi i ffwrdd neu newid lliw goleuadau fel y rhai. 1060 00:45:57,030 --> 00:46:00,480 Felly os CS50 hefyd yn ogystal â rhai bylbiau golau rheini yma yn New Haven 1061 00:46:00,480 --> 00:46:02,480 os hoffech i fenthyg iddynt ar gyfer prosiectau terfynol, 1062 00:46:02,480 --> 00:46:04,370 hefyd rai Microsoft Bandiau, sydd yn debyg 1063 00:46:04,370 --> 00:46:07,619 gwylio eich bod yn gwisgo o gwmpas eich arddwrn bod yn yr un modd yn cael API er mwyn i chi 1064 00:46:07,619 --> 00:46:10,040 Gall ysgrifennu eich meddalwedd eu hunain ar eu cyfer. 1065 00:46:10,040 --> 00:46:12,490 >> Mae gennym gyfrif gyda Afalau 'Cod iOS felly 1066 00:46:12,490 --> 00:46:15,510 os oes gennych Gwylio Apple neu iPhone neu iPad neu iPod, 1067 00:46:15,510 --> 00:46:17,707 gallwch ysgrifennu cod sy'n mewn gwirionedd yn rhedeg ar hynny. 1068 00:46:17,707 --> 00:46:19,540 Mae gennym criw cyfan o Arduinos, sy'n cael eu 1069 00:46:19,540 --> 00:46:22,010 cyfrifiaduron bach bach heb achosion, yn y bôn, 1070 00:46:22,010 --> 00:46:25,240 eich bod yn gallu cysylltu drwy USB, fel arfer at eich Mac neu PC eich hun, 1071 00:46:25,240 --> 00:46:28,810 ysgrifennu cod sy'n rhedeg ar y rhain corfforol dyfeisiau sy'n aml yn cael synwyryddion arnynt 1072 00:46:28,810 --> 00:46:30,790 fel y gallwch ryngweithio â'r byd go iawn. 1073 00:46:30,790 --> 00:46:32,860 Mae gennym criw cyfan o ddyfeisiau Naid Motion, 1074 00:46:32,860 --> 00:46:36,500 sy'n cael eu dyfeisiau USB ar gyfer Macs a Cyfrifiaduron personol, yma ac unwaith eto, yn New Haven. 1075 00:46:36,500 --> 00:46:40,080 Ac os ydych yn cysylltu at eich Mac, alli 'n weithredol reoli eich cyfrifiadur 1076 00:46:40,080 --> 00:46:42,550 gan feddalwedd ysgrifennu hynny drwy gyfrwng trawstiau is-goch, 1077 00:46:42,550 --> 00:46:46,360 ffigurau gwybod lle mae eich dwylo dynol, hyd yn oed heb gyffwrdd eich bysellfwrdd. 1078 00:46:46,360 --> 00:46:49,135 Rydym yn meddwl y bydden ni'n rhannu cyflym cipolwg ar hyn, er enghraifft. 1079 00:46:49,135 --> 00:46:51,428 >> [CHWARAE CERDDORIAETH] 1080 00:46:51,428 --> 00:47:55,840 1081 00:47:55,840 --> 00:47:57,590 Felly, mae gennym cyfan criw o pethau hyn, 1082 00:47:57,590 --> 00:48:01,040 hefyd, o'r enw bandiau braich Myo yr ydych yn ei roi dros eich braich 1083 00:48:01,040 --> 00:48:04,595 ac yna gallwch reoli y gwir byd neu y byd rhithwir fel hyn. 1084 00:48:04,595 --> 00:48:06,471 >> [CHWARAE CERDDORIAETH] 1085 00:48:06,471 --> 00:49:17,580 1086 00:49:17,580 --> 00:49:20,920 Neu, mae gennym hefyd rai Google Cardbord, sydd yn llythrennol, fel, 1087 00:49:20,920 --> 00:49:24,841 bocs cardbord gallech roi ar eich wyneb, ond sleid yn eich ffôn i mewn iddo 1088 00:49:24,841 --> 00:49:27,590 fel eich bod yn rhoi y gwydr eich ffôn yn agos iawn at eich llygaid. 1089 00:49:27,590 --> 00:49:30,190 A Google Cardbord yw 'n bert rhad yn $ 10 neu $ 20. 1090 00:49:30,190 --> 00:49:32,230 Ac mae wedi lensys bach hynny ychydig oddi ar shifft 1091 00:49:32,230 --> 00:49:35,900 y ddelwedd ar y sgrin ar gyfer eich dynol llygaid i roi ymdeimlad o ddyfnder i chi 1092 00:49:35,900 --> 00:49:39,550 fel eich bod yn mewn gwirionedd yn cael 3D amgylchedd o'ch blaen. 1093 00:49:39,550 --> 00:49:42,927 Mae gennym hefyd rai Samsung Gear, a oedd yn yw'r fersiwn ddrutach o hyn, 1094 00:49:42,927 --> 00:49:46,010 ond gall hynny lithro yn yr un modd mewn Android ffôn a rhoi y rhith i chi 1095 00:49:46,010 --> 00:49:48,309 o- neu roi profiad o realiti rhithwir. 1096 00:49:48,309 --> 00:49:50,850 Ac yn ein dwy funud olaf, rydym yn meddwl y bydden ni'n ceisio gwneud hyn. 1097 00:49:50,850 --> 00:49:55,250 Os gallaf brosiect beth Colton wedi yma dim ond i godi blys arnoch, 1098 00:49:55,250 --> 00:49:58,442 gadewch i mi fynd yn ei flaen a thaflu i fyny ar y sgrin fawr yma. 1099 00:49:58,442 --> 00:49:59,400 Gadewch i mi ladd y goleuadau. 1100 00:49:59,400 --> 00:50:02,290 Colton, ydych chi eisiau mynd yn ei flaen a'i roi ar eich cell am eiliad 1101 00:50:02,290 --> 00:50:05,171 a dewch draw i'r canol y llwyfan? 1102 00:50:05,171 --> 00:50:07,420 A ydych chi eisiau ei project-- mae hyn yn beth Colton gweld. 1103 00:50:07,420 --> 00:50:10,560 >> Yn awr, mae'r Wi-Fi mewn yma yw Nid yw mor gryf ar gyfer y ddyfais hon 1104 00:50:10,560 --> 00:50:13,870 bod hyn yn super gymhellol, ond Colton yn llythrennol 1105 00:50:13,870 --> 00:50:15,710 yn y lle hwn ddyfodolaidd hudol. 1106 00:50:15,710 --> 00:50:16,796 Dim ond yn gweld un ddelwedd. 1107 00:50:16,796 --> 00:50:19,920 Yr ydych yn gweld ei lygad chwith a dde bod ei ymennydd yn cael eu pwytho at ei gilydd 1108 00:50:19,920 --> 00:50:22,260 mewn tri dimensiwn amgylchedd ar ei wyneb. 1109 00:50:22,260 --> 00:50:24,319 Mae'n dim ond dewis opsiwn ddewislen yma. 1110 00:50:24,319 --> 00:50:27,360 Ac felly eto, mae'n gwisgo headset hwn gyda ffôn Samsung arno dyna 1111 00:50:27,360 --> 00:50:29,080 wirelessly sy'n ymestyn at ein gorbenion. 1112 00:50:29,080 --> 00:50:30,349 Nawr eich bod ar y blaned Mawrth, yr wyf yn meddwl? 1113 00:50:30,349 --> 00:50:31,140 COLTON: Yr wyf yn credu hynny. 1114 00:50:31,140 --> 00:50:32,181 Dwi ddim yn siŵr [Anghlywadwy]. 1115 00:50:32,181 --> 00:50:34,250 [Chwerthin] 1116 00:50:34,250 --> 00:50:36,374 >> DAVID Malan: Troi allan Mae gan Mars bwydlenni hyn. 1117 00:50:36,374 --> 00:50:41,590 >> COLTON: [Anghlywadwy] rhywfaint o oer llefydd os ydym am fynd i'r canlynol-- 1118 00:50:41,590 --> 00:50:43,330 >> DAVID Malan: Ble rydym eisiau mynd? 1119 00:50:43,330 --> 00:50:45,837 >> COLTON: [Anghlywadwy] 1120 00:50:45,837 --> 00:50:48,170 DAVID Malan: A gadewch i ni weld lle Colton yn mynd â ni yn awr. 1121 00:50:48,170 --> 00:50:48,961 COLTON: [Anghlywadwy] 1122 00:50:48,961 --> 00:50:52,830 1123 00:50:52,830 --> 00:50:56,380 >> DAVID Malan: Felly, mae cymaint o mannau gwahanol y gallwch eu cymryd eich hun. 1124 00:50:56,380 --> 00:51:00,590 Mae FAPIs trwy y gallwch ysgrifennu gemau neu ryngweithiadau sy'n 1125 00:51:00,590 --> 00:51:01,950 rhedeg, yn y pen draw, ar y ffôn. 1126 00:51:01,950 --> 00:51:03,908 Felly, yr ydych mewn gwirionedd dim ond ysgrifennu app ffôn symudol. 1127 00:51:03,908 --> 00:51:06,380 Ond diolch i feddalwedd a'r galluoedd graffeg, 1128 00:51:06,380 --> 00:51:08,765 Erbyn hyn Colton yn hyn bwthyn bach bach. 1129 00:51:08,765 --> 00:51:10,515 Ac ar y risg o llethol ein hunain, 1130 00:51:10,515 --> 00:51:13,330 Colton a byddaf yn ffon o gwmpas ar gyfer tra ar ddiwedd y dosbarth yma heddiw 1131 00:51:13,330 --> 00:51:14,300 os hoffech i ddod i fyny a chwarae. 1132 00:51:14,300 --> 00:51:16,350 A byddwn yn dod â nhw yn ôl yr wythnos nesaf hefyd. 1133 00:51:16,350 --> 00:51:18,420 Heb ymhellach, ADO dyna ni ar gyfer heddiw. 1134 00:51:18,420 --> 00:51:21,990 Byddwn yn gweld chi yr wythnos nesaf. 1135 00:51:21,990 --> 00:51:24,140 >> [CERDDORIAETH - Efeilliaid RAGGA, "MAN BAD"] 1136 00:51:24,140 --> 00:55:23,146