1 00:00:00,000 --> 00:00:02,570 [Powered by Google Translate] [Wythnos 9] 2 00:00:02,570 --> 00:00:04,740 [David J. Malan - Harvard University] 3 00:00:04,740 --> 00:00:07,170 [Mae hyn yn CS50. - CS50.TV] 4 00:00:07,170 --> 00:00:12,350 Mae pob hawl. Croeso yn ôl. Mae hyn yn CS50, ac mae hyn yn dechrau o wythnos 9. 5 00:00:12,350 --> 00:00:16,600 Heddiw rydym yn canolbwyntio yn benodol ar ddylunio, bellach yng nghyd-destun C 6 00:00:16,600 --> 00:00:20,010 ond yng nghyd-destun PHP ac yn dipyn o SQL a rhywfaint o JavaScript, 7 00:00:20,010 --> 00:00:23,730 yn enwedig tuag at ddiwedd y ddau pset 7 a hefyd eich prosiect terfynol. 8 00:00:23,730 --> 00:00:26,310 Yn wir, os ydych yn ar yr adeg honno yn eich prosiect terfynol 9 00:00:26,310 --> 00:00:30,100 lle yn ôl pob tebyg fel o awr neu ddwy yn ôl i chi o leiaf yn dechrau rhoi rhywfaint o feddwl 10 00:00:30,100 --> 00:00:33,730 i'ch prosiect terfynol ac rydych yn meddwl y byddech yn hoffi i gydweithio gydag 1 neu 2 cyd-ddisgyblion, 11 00:00:33,730 --> 00:00:36,150 os ydych chi'n cael trafferth cysylltu â dywedodd cyd-ddisgyblion, 12 00:00:36,150 --> 00:00:40,570 mae croeso i chi lenwi'r ffurflen yn cs50.net/partners/form. 13 00:00:40,570 --> 00:00:42,880 'I jyst yn gofyn i chi pwy ydych chi, pa fath o brosiect yr ydych chi'n meddwl am, 14 00:00:42,880 --> 00:00:44,870 lle rydych yn byw ychydig am resymau logistaidd. 15 00:00:44,870 --> 00:00:49,510 Ac yna os ydych chi am gadw llygad ar dros yr wythnos nesaf, neu felly mae'r URL daenlen yno, 16 00:00:49,510 --> 00:00:53,520 gallwch wedyn weld fersiwn darllen yn unig y doc Google 17 00:00:53,520 --> 00:00:56,010 lle rydym yn casglu y wybodaeth honno. 18 00:00:56,010 --> 00:00:58,930 Felly, os ydych am weithio gyda rhywun, ar bob cyfrif yn teimlo'n rhydd i estyn allan at bobl 19 00:00:58,930 --> 00:01:00,480 drwy gyfrwng y mecanwaith hwnnw. 20 00:01:00,480 --> 00:01:02,690 Ond mae'r rhan fwyaf o Folks yn gwneud solo gwaith. Mae hynny'n hollol iawn. 21 00:01:02,690 --> 00:01:06,120 Felly peidiwch teimlo fod hyn yn mewn unrhyw ffordd yn orfodol. 22 00:01:06,120 --> 00:01:09,680 Ar ddydd Gwener mai fi oedd ddim ac mae rhai o'r tîm yn y fan hon, 23 00:01:09,680 --> 00:01:11,100 theatr wag am y rhan fwyaf. 24 00:01:11,100 --> 00:01:14,600 Roedd 3 dwristiaid yn eistedd i fyny yno, felly, yr oedd ychydig yn lletchwith. 25 00:01:14,600 --> 00:01:18,970 Yr hyn yr ydym yn siarad amdano oedd cronfeydd data a buom yn siarad am pset 7 a ychydig bach. 26 00:01:18,970 --> 00:01:22,200 Ac os nad oeddech yn digwydd i ddal y ar fideo eto, mae hynny'n iawn. 27 00:01:22,200 --> 00:01:26,770 Byddaf yn ceisio diffinio unrhyw delerau y byddem fel arall yn cymryd yn ganiataol 28 00:01:26,770 --> 00:01:28,840 yn seiliedig ar ddydd Gwener ddarlith. 29 00:01:28,840 --> 00:01:32,550 >> Ond heddiw, rydym yn mynd i geisio cael chi i'r pwynt 30 00:01:32,550 --> 00:01:34,990 nid yn unig yn gallu gwneud rhywbeth fel pset 7 31 00:01:34,990 --> 00:01:37,360 ond mewn gwirionedd yn deall beth sy'n mynd ymlaen o dan y cwfl, 32 00:01:37,360 --> 00:01:41,910 yn enwedig rhai o'r tyniadau yr ydym yn eu rhoi ar waith yn y ffeil functions.php 33 00:01:41,910 --> 00:01:45,780 i wneud eich bywyd ychydig yn haws, ond fel eich bod yn deall y pen draw 34 00:01:45,780 --> 00:01:48,760 fel bod pan fydd yr olwynion hyfforddiant yn dod oddi mewn ychydig wythnosau, gallwch dal i oroesi 35 00:01:48,760 --> 00:01:53,750 yn y byd go iawn a gwneud y pethau heb unrhyw fframwaith CS50 o dan chi. 36 00:01:53,750 --> 00:01:57,500 Mae hyn yn _SESSION $, ar gyfer y rhai ohonoch sy'n gyfarwydd 37 00:01:57,500 --> 00:02:01,960 neu sydd eisoes yn dal y fideo ar ddydd Gwener, beth mae SESIWN gadewch i ni wneud 38 00:02:01,960 --> 00:02:04,330 mewn cais ar y we PHP seiliedig? 39 00:02:04,330 --> 00:02:09,650 Mae hwn yn newidyn superglobal, sy'n golygu ei fod yn debyg o ran ysbryd i GET a SWYDD 40 00:02:09,650 --> 00:02:13,970 a rhai eraill, ond beth yw hyn yn beth defnyddiol ar gyfer? 41 00:02:13,970 --> 00:02:18,320 >> Beth yw SESIWN cael ei ddefnyddio? Yeah. [Myfyrwyr] Logio i mewn 42 00:02:18,320 --> 00:02:21,040 Mae'n ddrwg gennym? [Myfyrwyr] Logio i mewn Logio i mewn Yn wir. 43 00:02:21,040 --> 00:02:25,100 Yn pset 7, yn defnyddio hwn superglobal SESIWN i hwyluso logio i mewn 44 00:02:25,100 --> 00:02:28,600 A beth sy'n braf am hyn superglobal yw ei fod yn arae cysylltiadol. 45 00:02:28,600 --> 00:02:33,190 Mae amrywiaeth cysylltiadol, galw i gof, yn unig yw amrywiaeth ond mae eu mynegeion nid oes rhaid i fod yn rhifau 46 00:02:33,190 --> 00:02:37,670 fel 012. Gallant fod yn rhifau neu gallant fod hyd yn oed llinynnau. 47 00:02:37,670 --> 00:02:44,890 Ac felly os ydych chi wedi syrthio i mewn i pset 7 eto, efallai y byddwch yn cofio ein bod yn storio ID allweddol o'r enw 48 00:02:44,890 --> 00:02:50,330 mewnol y arae cysylltiadol y mae eu gwerth yn rhywbeth fel 123 - 49 00:02:50,330 --> 00:02:53,780 beth bynnag fo'r wedi mewngofnodi ar hyn o bryd yn ID defnyddiwr yn. 50 00:02:53,780 --> 00:02:59,470 Y cymhelliad ar gyfer hyn yw hyd yn oed ar ôl y defnyddiwr wedi ymweld â localhost 51 00:02:59,470 --> 00:03:02,720 neu fy ngwefan yn fwy cyffredinol, ac yna maen nhw wedi logio i mewn, 52 00:03:02,720 --> 00:03:07,320 hyd yn oed os nad ydynt yn cliciwch ar un o'r cyswllt neu ddychwelyd i fy ngwefan am 5 munud 53 00:03:07,320 --> 00:03:10,730 neu hyd yn oed am awr neu hyd yn oed y dydd ond maent yn gadael eu ffenestr porwr agored, 54 00:03:10,730 --> 00:03:14,370 Gall drwy'r superglobal yr wyf yn cofio eu bod wedi mewngofnodi 55 00:03:14,370 --> 00:03:21,140 >> Mewn geiriau eraill, mae'n caniatáu i mi storio ychydig yn hir dymor unrhyw beth a fynnaf am y defnyddiwr. 56 00:03:21,140 --> 00:03:24,390 A allwch chi feddwl am y peth mewn gwirionedd fel yr ymgnawdoliad o trol siopa. 57 00:03:24,390 --> 00:03:27,740 Mae lleoedd fel Amazon yn amlwg yn gadael i chi roi pethau mewn basged siopa, 58 00:03:27,740 --> 00:03:32,230 ond HTTP, y protocol sy'n yn gyrru y We, yn heb ddinasyddiaeth 59 00:03:32,230 --> 00:03:34,230 yn yr ystyr bod pan fyddwch yn ymweld â gwefan, 60 00:03:34,230 --> 00:03:37,290 ar gyfer y rhan fwyaf nad oes gennych rhywfaint o gysylltiad rhwydwaith cyson 61 00:03:37,290 --> 00:03:39,270 rhwng eich porwr a 'r gweinyddwr. 62 00:03:39,270 --> 00:03:42,190 Cyn gynted ag y byddwch wedi lawrlwytho'r HTML a JPEG a GIFs a hynny i gyd, 63 00:03:42,190 --> 00:03:48,200 y cysylltiad yn mynd i ffwrdd, ac os oes gen ti gopi o'r HTML a whatnot o'r gweinydd. 64 00:03:48,200 --> 00:03:53,000 Ond os yw'r gweinydd eisiau cofio rhywbeth amdanoch chi, 65 00:03:53,000 --> 00:03:57,580 y baich ar y gweinydd i mewn gwirionedd yn cofnodi'r wybodaeth honno. 66 00:03:57,580 --> 00:04:00,130 Ac felly i chi y rhaglennydd sydd â rheolaeth dros y gweinydd 67 00:04:00,130 --> 00:04:04,400 Gall rhoi unrhyw beth rydych am y rhan fwyaf o tu fewn y casgliad cysylltiadol superglobal 68 00:04:04,400 --> 00:04:06,850 a bydd yno y tro nesaf y defnyddiwr yn dod yn ôl, 69 00:04:06,850 --> 00:04:12,070 boed hynny munud neu hyd yn oed diwrnod yn ddiweddarach, oni bai eu bod yn cau eu ffenestri porwr, 70 00:04:12,070 --> 00:04:14,360 lle SESIWN pwynt diflannu. 71 00:04:14,360 --> 00:04:17,779 Felly, mae'n storio dros dro, mae'n nad ydynt yn gyson, ac mae i fod i fynd i ffwrdd 72 00:04:17,779 --> 00:04:22,360 cyn gynted ag y defnyddiwr yn cau eu porwr - nid yn unig y tab, yn aml y porwr cyfan, 73 00:04:22,360 --> 00:04:24,930 a thrwy hynny yn effeithiol logio y defnyddiwr allan. 74 00:04:24,930 --> 00:04:28,000 Felly, sut mae hyn yn beth gweithredu mewn gwirionedd? 75 00:04:28,000 --> 00:04:31,360 Gadewch i ni edrych yn sydyn ar enghraifft syml buom yn edrych ar ddydd Gwener. 76 00:04:31,360 --> 00:04:33,340 Ar gyfer y rhai anghyfarwydd, roedd hi mor syml â hyn. 77 00:04:33,340 --> 00:04:35,910 Mae hon yn dudalen ar y we y mae ei unig ddiben mewn bywyd yw i ddweud wrthyf 78 00:04:35,910 --> 00:04:38,000 sawl gwaith yr wyf wedi ymweld â'r dudalen hon. 79 00:04:38,000 --> 00:04:41,670 Dyma'r tro cyntaf yma ar ddydd Llun fy mod yn ymweld â hi, er mwyn iddo ddweud 0 gwaith. 80 00:04:41,670 --> 00:04:46,940 >> Ond os byddaf yn dechrau ail-lwytho y dudalen hon, mae'n dweud 1 amser, 2, 3, 4, 5, 81 00:04:46,940 --> 00:04:49,800 a bydd hyn yn y pen draw dim ond cadw ar gyfrif i fyny, i fyny, i fyny, i fyny, i fyny 82 00:04:49,800 --> 00:04:53,130 ar gyfer pob tro y byddaf yn cliciwch gwirionedd Reload arno. 83 00:04:53,130 --> 00:04:58,830 Felly, sut mae hyn yn gweithio? Gadewch i mi fynd y tu mewn o hyn ffeil o'r enw counter.php. 84 00:04:58,830 --> 00:05:02,490 Mae rhan uchaf ohono yn holl sylwadau las, ond y rhan ddiddorol yma. 85 00:05:02,490 --> 00:05:06,670 Ar llinell 13 rydym yn galw hyn session_start swyddogaeth, 86 00:05:06,670 --> 00:05:09,600 ac mae hynny'n llythrennol gyd angen i chi ei wneud os ydych am gael mynediad 87 00:05:09,600 --> 00:05:13,610 at y superglobal arbennig o'r enw $ _SESSION. 88 00:05:13,610 --> 00:05:17,430 Sy'n ei gwneud yn bosibl o gwbl, ac fe welwn yn y man sut mae hynny'n bosibl o gwbl. 89 00:05:17,430 --> 00:05:20,350 Yn llinell 16 rhybudd hyn rwy'n ei wneud. 90 00:05:20,350 --> 00:05:25,960 Os yw'r allwedd, a elwir yn wrth - mewn geiriau eraill, y gwerth mynegai - "cownter" y 91 00:05:25,960 --> 00:05:32,310 yn bodoli y tu mewn o hyn a elwir yn SESIWN amrywiaeth, yna beth ydw i'n ei wneud ag ef yn y llinell isod? 92 00:05:32,310 --> 00:05:36,650 Beth yw llinell 18 yn ei wneud? 93 00:05:36,650 --> 00:05:40,360 >> [Ymateb y myfyrwyr Anghlywadwy] Beth sy'n bod? [Myfyrwyr] Storio'r gwerth. Da. 94 00:05:40,360 --> 00:05:45,800 Mae'n storio'r gwerth sydd yn SESIWN ar hyn o bryd mewn newidyn newydd dros dro lleol, 95 00:05:45,800 --> 00:05:48,250 $ Cownter ym mhob llythrennau bach. 96 00:05:48,250 --> 00:05:50,770 Sylwch fod PHP eisoes yn cael ei ychydig yn ddiog yma. 97 00:05:50,770 --> 00:05:55,550 Hysbysiad nad oes gennym unrhyw sôn am int neu arnofio neu linyn neu unrhyw beth fel 'na 98 00:05:55,550 --> 00:06:00,480 oherwydd PHP yn cael ei deipio wan, lle nad oes rhaid i chi nodi'r math o newidyn, 99 00:06:00,480 --> 00:06:03,310 ac yn yr achos yma nid wyf wedi hyd yn oed yn datgan eto. 100 00:06:03,310 --> 00:06:08,980 Rwy'n datgan ei fod y tu mewn o'r rhain braces cyrliog ac yn wahanol i C, mae hyn yn mewn gwirionedd yn iawn. 101 00:06:08,980 --> 00:06:13,800 Waeth pa mor ddwfn nythu datganiad newidyn hwn ym maes PHP - 102 00:06:13,800 --> 00:06:16,650 tu mewn cyrliog Brace, y tu mewn o cyrliog Brace ac ati - 103 00:06:16,650 --> 00:06:21,230 bydd yn yn y hyn o bryd mewn amser yn bodoli ar gyfer gweddill y rhaglen, 104 00:06:21,230 --> 00:06:22,680 er gwell neu er gwaeth. 105 00:06:22,680 --> 00:06:26,930 Felly, ar unwaith yn dod yn fyd-eang cyn gynted ag y byddwch yn ei ddiffinio fel yr ydym ni'n ei wneud yma. 106 00:06:26,930 --> 00:06:31,620 >> Fel arall, os nad wyf yn gweld bod yna unrhyw beth yn y superglobal SESIWN, 107 00:06:31,620 --> 00:06:34,680 Rwy'n ôl pob golwg ymgychwyn y cownter amrywiol i 0, 108 00:06:34,680 --> 00:06:37,580 a thrwy hynny dim ond gan dybio nad yw'r defnyddiwr wedi bod yma o'r blaen. 109 00:06:37,580 --> 00:06:40,030 Ac yna mae hyn wrth gwrs yn incrementing y cownter sut? 110 00:06:40,030 --> 00:06:44,480 Rwy'n diweddaru'r gwerth y tu mewn o hyn arae cysylltiadol 111 00:06:44,480 --> 00:06:49,530 drwy ei gosod yn gyfartal i ba bynnag cownter ar hyn o bryd yw + 1. 112 00:06:49,530 --> 00:06:53,520 Os byddaf yn sgroliwch i lawr yma i'r HTML y dudalen, mae'n mewn gwirionedd yn eithaf syml. 113 00:06:53,520 --> 00:06:58,920 Y cyfan yr wyf wedi yng nghorff y dudalen hon yn, "Rydych wedi ymweld â'r safle amser fel-a-blaen." 114 00:06:58,920 --> 00:07:00,350 Ac mae hyn yn lluniad PHP. 115 00:07:00,350 --> 00:07:06,080 Os ydych yn ei wneud 00:07:12,600 Mae'n wir yn cyfateb i rywbeth fel printf, yr ydym wedi gweld sawl gwaith yn C, 117 00:07:12,600 --> 00:07:15,940 er, fel y gwyddoch eisoes o'r fanyleb yn pset 7, 118 00:07:15,940 --> 00:07:20,160 print hefyd yn swyddogaeth mai dim ond yn argraffu rhywbeth, nid yw'n mewn gwirionedd yn defnyddio codau fformat, 119 00:07:20,160 --> 00:07:23,270 a gallwch ddweud mewn gwirionedd adlais yn ogystal. 120 00:07:23,270 --> 00:07:27,460 Maen nhw i gyd erioed mor ychydig yn wahanol er bod yr effaith net yn y pen draw yr un fath. 121 00:07:27,460 --> 00:07:31,270 Felly, y defnydd hwn o'r arwydd hafal yn unig fath o ffordd cain o wneud hynny 122 00:07:31,270 --> 00:07:34,910 yn fwy cryno nag y byddech fel arall yn gallu gwneud hynny. 123 00:07:34,910 --> 00:07:38,370 Felly dyna'r cyfan y safle hwn yn ei wneud. Mae'n yn argraffu gwerth y cownter. 124 00:07:38,370 --> 00:07:40,550 Sut mae hyn i gyd yn digwydd mewn gwirionedd? 125 00:07:40,550 --> 00:07:43,250 Efallai y byddwch yn cofio wythnos neu ddwy yn ôl i ni ddechrau edrych o dan y cwfl 126 00:07:43,250 --> 00:07:47,910 ar sut y tudalen ar y we yn gweithio drwy ddefnyddio'r tab Arolygydd. 127 00:07:47,910 --> 00:07:51,900 >> Chrome y mae hyn yn y fersiwn Mac y fersiwn Windows, a hyd yn oed y fersiwn Linux, 128 00:07:51,900 --> 00:07:59,510 a Firefox a IE fecanweithiau tebyg lle rydych yn cael y debugger adeiledig mewn 129 00:07:59,510 --> 00:08:01,400 tu mewn i'r porwr. 130 00:08:01,400 --> 00:08:03,040 Gadewch i ni edrych ar y canlynol. 131 00:08:03,040 --> 00:08:06,960 Rydym wedi cael criw cyfan o tabs yma, a dwyn i gof bod yr un leftmost yn Elfennau, 132 00:08:06,960 --> 00:08:10,700 ac ni waeth pa mor godawful y HTML a JavaScript mewn tudalen, 133 00:08:10,700 --> 00:08:15,710 dwyn i gof bod y tab Elfennau alli 'n weithredol lywio'r HTML hierarchaidd 134 00:08:15,710 --> 00:08:17,050 ac yn braf ac yn daclus. 135 00:08:17,050 --> 00:08:19,370 Felly, os ydych yn ceisio dysgu o wefan fel Google neu Facebook 136 00:08:19,370 --> 00:08:22,370 neu mewn gwirionedd unrhyw wefan, yn sylweddoli eich bod yn ôl pob tebyg yn well eich byd 137 00:08:22,370 --> 00:08:26,360 edrych ar y cod ffynhonnell y modd hwn yn hytrach na edrych ar y ffynhonnell crai, 138 00:08:26,360 --> 00:08:29,580 a all fod yn llanast, fel yr ydym wedi gweld yn enwedig ar Google safle. 139 00:08:29,580 --> 00:08:32,220 Felly, os wyf yn lle hynny cliciwch ar y tab Rhwydwaith yma, 140 00:08:32,220 --> 00:08:34,830 gadewch i ni weld beth sy'n digwydd pan fyddaf yn ymweld â'r dudalen hon. 141 00:08:34,830 --> 00:08:38,669 Yn gyntaf gadewch i mi egluro fy cache. 142 00:08:38,669 --> 00:08:43,570 Rydw i'n mynd i fynd i mewn i Gosodiadau yn Chrome ac yna ewch i Hanes 143 00:08:43,570 --> 00:08:46,420 ac yna Clirio'r holl ddata pori. 144 00:08:46,420 --> 00:08:48,170 Efallai y byddwch yn ei ddefnyddio i wneud hyn at ddibenion eraill, [chwerthin] 145 00:08:48,170 --> 00:08:51,990 ond pan ddaw i wefannau datblygu, mewn gwirionedd mae'n ddefnyddiol - 146 00:08:51,990 --> 00:08:55,980 os ydych chi'n chwerthin eich bod yn gwybod. [Chwerthin] 147 00:08:55,980 --> 00:08:59,310 Mae'n mewn gwirionedd yn ddefnyddiol iawn wrth ddatblygu gwefannau oherwydd y gwir yw 148 00:08:59,310 --> 00:09:04,100 pethau fel 'cookies' a phethau fel ffeiliau HTML cached, ffeiliau JavaScript cached 149 00:09:04,100 --> 00:09:06,390 mewn gwirionedd gall fod yn cur pen mawr, oherwydd os am ba bynnag reswm 150 00:09:06,390 --> 00:09:11,500 y porwr yn penderfynu cache rhai ffeil ac eto yr ydych wedi gwneud newidiadau i'r ffeil ar y gweinydd 151 00:09:11,500 --> 00:09:14,670 ond nid yw'r porwr wedi sylweddoli mewn gwirionedd fod y ffeil wedi newid 152 00:09:14,670 --> 00:09:19,060 ac felly nid yw'n mewn gwirionedd yn ail-lwytho i lawr hyd yn oed pan fyddwch yn clicio ar y botwm Reload, 153 00:09:19,060 --> 00:09:23,210 un o'r ffyrdd mwyaf surefire i ddim ond gwneud yn siŵr nad yw'r nam yn gyda'ch cod, 154 00:09:23,210 --> 00:09:26,480 'i' ag ymddygiad y porwr, yw mynd i mewn yma yn eich porwr 155 00:09:26,480 --> 00:09:29,950 a dim ond clirio'r hanes cyfan fel nad oes unrhyw ddryswch. 156 00:09:29,950 --> 00:09:33,210 >> Ac yna os ydych wir eisiau bod yn paranoid, roi'r gorau iddi y porwr, cychwynnwch y peiriant, 157 00:09:33,210 --> 00:09:35,660 ac yna gwneud yn siŵr bod pob yn gweithio fel y disgwylir. 158 00:09:35,660 --> 00:09:38,820 Felly, yn fyr, clirio cache yn dda wrth wneud datblygiad. 159 00:09:38,820 --> 00:09:40,690 Felly dyma ni yn cael y tab Rhwydwaith. 160 00:09:40,690 --> 00:09:46,020 Yn flaenorol, wedi ymweld â'r safle 9 gwaith, ond gadewch i mi fynd yn ei flaen yn awr a chliciwch Reload. 161 00:09:46,020 --> 00:09:47,500 A dwi'n yn ôl i lawr i 0. 162 00:09:47,500 --> 00:09:52,100 Gadewch i ni mewn gwirionedd yn gweld sut y mae bod y superglobal SESIWN yn cael ei weithredu. 163 00:09:52,100 --> 00:09:55,990 Dw i'n mynd i glicio ar y cais HTTP 1 a wnaed, 164 00:09:55,990 --> 00:09:58,810 ac mae hyn yn ffenestr debugging yn gadael i mi edrych y tu mewn o hynny. 165 00:09:58,810 --> 00:10:01,970 Dyma yr wyf yn gweld dim ond yr ymateb gan y gweinydd, ac nid yw ddiddorol. 166 00:10:01,970 --> 00:10:04,030 Rwyf wedi gweld hyn mewn unrhyw nifer o ffyrdd. 167 00:10:04,030 --> 00:10:06,350 Ond yr hyn sy'n dechnegol ddiddorol yn y penawdau. 168 00:10:06,350 --> 00:10:11,770 Os byddaf yn sgroliwch i lawr yma ac yn canolbwyntio ar y penawdau cais a chliciwch ffynhonnell barn, 169 00:10:11,770 --> 00:10:14,400 hyn yr wyf i'n mynd i weld yn llythrennol y cais HTTP 170 00:10:14,400 --> 00:10:17,250 mai dim ond yn mynd o fy porwr i 'r gweinyddwr, 171 00:10:17,250 --> 00:10:21,400 GET sef y gair operative ac yna / counter.php yr enw ffeil, 172 00:10:21,400 --> 00:10:25,670 HTTP/1.1 dim ond bod y fersiwn o'r HTTP bod fy porwr yn ei ddefnyddio. 173 00:10:25,670 --> 00:10:31,070 Mae'r llinell yma yn atgoffa ychydig o borwr i weinydd beth yw enw'r gweinydd yn 174 00:10:31,070 --> 00:10:33,020 ei fod am siarad â nhw. 175 00:10:33,020 --> 00:10:38,200 Ac yna y gweddill o hyn yn weithiau diddorol, ond nad ydynt yn berthnasol ar hyn o bryd. 176 00:10:38,200 --> 00:10:40,090 >> Mae hyn yn unig fath o chwilfrydedd. 177 00:10:40,090 --> 00:10:43,530 Cryptig er bod y llinyn yw, unrhyw tro y bydd eich porwr yn ymweld â gwefan 178 00:10:43,530 --> 00:10:47,110 ei fod yn hysbysu'r gweinyddwr pa borwr rydych yn ei ddefnyddio 179 00:10:47,110 --> 00:10:50,040 a pha system weithredu yr ydych yn ei ddefnyddio a pha fersiwn o hynny. 180 00:10:50,040 --> 00:10:52,650 Felly, os ydych chi erioed wedi meddwl sut y gwefannau fel CNN a whatnot 181 00:10:52,650 --> 00:10:56,860 gwybod beth yw'r canrannau o ddefnyddwyr Mac ar y defnyddwyr y We PC,, 182 00:10:56,860 --> 00:11:00,820 Defnyddwyr IE, defnyddwyr Chrome ac yn y blaen, mae'n oherwydd ein holl borwyr 183 00:11:00,820 --> 00:11:04,300 yn dweud bob un wefan allan yno yr hyn ydym. 184 00:11:04,300 --> 00:11:07,410 Nid yw o reidrwydd yn cynnwys gwybodaeth bersonol adnabyddadwy, 185 00:11:07,410 --> 00:11:13,060 ond mae'n dweud wrth y gweinydd beth yw eich cyfeiriad IP a pha borwr a OS rydych yn ei ddefnyddio. 186 00:11:13,060 --> 00:11:14,720 Felly dyna lle bo'r wybodaeth hon. 187 00:11:14,720 --> 00:11:19,960 Ond beth sydd yn fwy diddorol nawr pan ddaw i'r sesiynau hyn yn y pennawd ymateb. 188 00:11:19,960 --> 00:11:22,530 Gadewch i mi cliciwch gweld ffynhonnell nesaf i ymateb. 189 00:11:22,530 --> 00:11:24,590 Beth sy'n ddiddorol yma yw ychydig o bethau. 190 00:11:24,590 --> 00:11:27,580 1, rydym yn cael yn ôl cod statws 200. 191 00:11:27,580 --> 00:11:29,840 Rydym byth yn gweld y cod statws oherwydd mae hynny'n golygu popeth yn iawn. 192 00:11:29,840 --> 00:11:32,920 Mae'n golygu llythrennol iawn yn wahanol i rywbeth arall. 193 00:11:32,920 --> 00:11:36,380 Beth yw nifer weithiau gwelwn sy'n ddrwg? [Myfyrwyr] 404. 194 00:11:36,380 --> 00:11:39,860 404, ffeil heb ei ganfod, efallai y byddwch yn 403 tramgwydd ar eisoes, 195 00:11:39,860 --> 00:11:43,660 sy'n cael ei wahardd, sy'n golygu eich bod wedi anghofio rhywbeth chmod, yn fwyaf tebygol. 196 00:11:43,660 --> 00:11:45,190 Ac mae 'na griw o bobl eraill. 197 00:11:45,190 --> 00:11:47,760 >> Down yma, dyma ychydig yn wallgof. 198 00:11:47,760 --> 00:11:52,340 Fi 'n sylweddol newydd ei ysgrifennu y ffeil ychydig funudau yn ôl drwy ludo i mewn i gedit. 199 00:11:52,340 --> 00:11:57,100 Pam y dudalen hon yn dod i ben yn 1981 cyn bod mewn gwirionedd roedd We? 200 00:11:58,010 --> 00:12:00,730 Beth sy'n mynd ymlaen yno? 201 00:12:00,730 --> 00:12:04,390 >> [Ymateb y myfyrwyr Anghlywadwy] Y stamp amser. Ond pam? 202 00:12:06,110 --> 00:12:09,120 Mae'n braidd yn fympwyol, ond mewn gwirionedd mae'n ddefnyddiol. 203 00:12:09,120 --> 00:12:15,500 Beth mae hyn yn ei ddweud wrth fy porwr yn y ffeil PHP ydych wedi gofyn dim ond wedi dod i ben eisoes. 204 00:12:15,500 --> 00:12:18,580 Yn wir, mae'n dod i ben 30 mlynedd yn ôl. 205 00:12:18,580 --> 00:12:20,260 Ond beth mae hynny'n ei olygu mewn gwirionedd? 206 00:12:20,260 --> 00:12:22,500 Mae'n jyst yn golygu y tro nesaf y defnyddiwr yn ymweld y dudalen hon, 207 00:12:22,500 --> 00:12:25,540 boed hynny drwy ail-lwytho neu deipio URL yn y bar cyfeiriad, 208 00:12:25,540 --> 00:12:28,010 gwnewch yn siŵr eich mynd i nôl copi newydd ohono. 209 00:12:28,010 --> 00:12:30,840 Mae hwn yn fath o enghraifft o chwalu cache, 210 00:12:30,840 --> 00:12:33,790 gair dwp mai dim ond yn golygu ceisio annog porwyr 211 00:12:33,790 --> 00:12:37,260 o mewn gwirionedd yn HTML caching sydd wedi cael ei anfon o weinyddwr 212 00:12:37,260 --> 00:12:41,490 fel nad ydych yn taro yn ddamweiniol ail-lwytho ac yna gweld yr un fersiwn y ffeil. 213 00:12:41,490 --> 00:12:43,730 Chi mewn gwirionedd eisiau i'r gweinydd i anfon copi newydd. 214 00:12:43,730 --> 00:12:47,440 Felly, mae'r ffaith ei bod yn 1981 yn unig yn golygu bod dyna beth mae'r cyfarpar wedi ei dewis 215 00:12:47,440 --> 00:12:50,280 fel dyddiad mympwyol yn y gorffennol. 216 00:12:50,280 --> 00:12:53,380 Ond y llinell llawn sudd go iawn yn awr yr un. 217 00:12:53,380 --> 00:12:57,550 Hyd yn oed o flaen 50 eich bod yn debyg yn fras gyfarwydd â 'cookies'. 218 00:12:57,550 --> 00:13:01,820 Fel ar hyn o bryd, yn enwedig ymhlith y rhai llai cyfforddus neu yn y canol, 219 00:13:01,820 --> 00:13:04,120 beth yw cwci yn eich dealltwriaeth ar hyn o bryd 220 00:13:04,120 --> 00:13:06,980 er ein bod chi ar fin gwneud eich dealltwriaeth mwy technegol? 221 00:13:08,150 --> 00:13:10,070 Beth yw cwci? Yeah. 222 00:13:10,070 --> 00:13:13,890 [Myfyrwyr] Gwybodaeth am y defnyddiwr, fel os ydynt wedi ysgrifennu eu henw defnyddiwr neu rywbeth. 223 00:13:13,890 --> 00:13:17,370 >> Da. Mae'n gwybodaeth am y defnyddiwr, p'un a ydynt wedi teipio yn ei enw defnyddiwr yn barod. 224 00:13:17,370 --> 00:13:21,190 Mae cwcis yn ffordd lle gall gweinyddwyr cofio rhywbeth am ddefnyddiwr. 225 00:13:21,190 --> 00:13:25,810 A beth mae cwci mewn gwirionedd yn ffeil destun neu ryw ddilyniant o bytes 226 00:13:25,810 --> 00:13:28,340 sydd wedi eu plannu gan y gweinydd tu mewn i'ch porwr, 227 00:13:28,340 --> 00:13:31,960 a thu mewn y ffeil neu ymysg y rhai beit yw rhyw fath o dynodwr. 228 00:13:31,960 --> 00:13:35,640 Efallai ei fod yn llythrennol eich enw defnyddiwr, ond yn fwy aml mae'n rhywbeth mwy cryptig-edrych 229 00:13:35,640 --> 00:13:43,700 fel hyn peth yma - bo8dal3ct ac yn y blaen - mae hyn yn llinyn alffaniwmerig mawr iawn 230 00:13:43,700 --> 00:13:47,050 bod mewn gwirionedd yn golygu dim ond i fod yn dynodwr unigryw i chi. 231 00:13:47,050 --> 00:13:49,790 Neu gallwch feddwl amdano fel math o stamp llaw rhithwir. 232 00:13:49,790 --> 00:13:53,020 Os byddwch yn mynd i ryw glwb neu parc adloniant, i gofio eich bod wedi talu mewn gwirionedd 233 00:13:53,020 --> 00:13:55,850 ac wedi mynd i mewn, maent yn rhoi sticer bach coch ar eich llaw o ryw fath, 234 00:13:55,850 --> 00:13:59,270 a bod yn atgoffa'r bobl wrth y cownter yr ydych eisoes wedi talu 235 00:13:59,270 --> 00:14:01,340 a gallwch fynd a dod fel y mynnwch. 236 00:14:01,340 --> 00:14:04,250 Mae cwcis yn ychydig yn debyg o ran ysbryd i hynny. 237 00:14:04,250 --> 00:14:08,070 Y tro cyntaf i mi ymweld â'r wefan hon, yr wyf newydd wneud ar ôl clirio fy cache, 238 00:14:08,070 --> 00:14:11,620 y, gweinydd gwe yr offer yn yr achos hwn, yn rhoi stamp ar fy llaw 239 00:14:11,620 --> 00:14:15,030 y mae ei enw yn cael ei PHPSESSID, sesiwn ID, 240 00:14:15,030 --> 00:14:18,260 y mae eu gwerth yn y llinyn alffaniwmerig hir iawn. 241 00:14:18,260 --> 00:14:22,470 >> Felly dyna bellach yn fath o addurno ar fy llaw fel bod y tro nesaf i daro ail-lwytho 242 00:14:22,470 --> 00:14:25,230 neu â llaw ymweld â'r URL mewn porwr, 243 00:14:25,230 --> 00:14:29,230 fy porwr drwy ddiffiniad o HTTP yn mynd i gyflwyno'r stamp llaw 244 00:14:29,230 --> 00:14:31,940 eto ac eto ac eto. 245 00:14:31,940 --> 00:14:34,550 Felly, er nad yw'r gweinydd yn o reidrwydd yn gwybod pwy ydw i, 246 00:14:34,550 --> 00:14:39,610 maent o leiaf yn gwybod fy mod yn yr un defnyddiwr neu o leiaf, yn fwy penodol, y porwr un. 247 00:14:39,610 --> 00:14:45,660 Ac felly yn y pen draw sut y mae'r superglobal SESIWN cael ei weithredu. 248 00:14:45,660 --> 00:14:51,200 Mae'r gweinydd wedi ddim syniad pwy ydych chi pan fyddwch yn edrych eto ar wefan ar gyfer yr ail neu'r trydydd tro 249 00:14:51,200 --> 00:14:53,410 oni bai eich bod yn cyflwyno hyn stamp llaw. 250 00:14:53,410 --> 00:14:55,530 A chyn gynted ag y byddwch yn cyflwyno'r stamp llaw, 251 00:14:55,530 --> 00:14:59,370 y gweinydd gwe yn ei hanfod yn mynd i mewn i gronfa ddata bach ei hun 252 00:14:59,370 --> 00:15:06,040 a gwiriadau, iawn, yr wyf wedi gweld dim ond y stamp llaw bo8dal3ct defnyddiwr ac yn y blaen. 253 00:15:06,040 --> 00:15:09,850 Gad i mi weld pa wybodaeth y rhaglennydd wedi ei storio 254 00:15:09,850 --> 00:15:12,380 tu mewn i'r superglobal am y defnyddiwr, 255 00:15:12,380 --> 00:15:17,000 ac yna gadewch i mi wneud yn siŵr bod y data eto tu mewn i'r SESIWN superglobal 256 00:15:17,000 --> 00:15:19,830 fel y gall y rhaglennydd ail-gael mynediad at y data 257 00:15:19,830 --> 00:15:23,360 hyd yn oed os cafodd ei osod rhai munudau neu oriau yn ôl. 258 00:15:23,360 --> 00:15:26,150 Geiriau Felly, yn eraill, cwcis, a oedd yn cael rap gwael ers peth amser 259 00:15:26,150 --> 00:15:29,990 oherwydd ansicrwydd mewn porwyr a gallant mewn gwirionedd yn torri ein preifatrwydd a hyn i gyd, 260 00:15:29,990 --> 00:15:31,900 maent mewn gwirionedd wedi cyfleustodau mawr oherwydd hebddynt 261 00:15:31,900 --> 00:15:36,110 byddech yn gyson yn logio i mewn i bob tudalen Facebook byddwch yn ymweld 262 00:15:36,110 --> 00:15:40,680 neu bob e-bost Gmail eich bod yn darllen os nad yw'r porwr oedd gennych ryw ffordd o gofio 263 00:15:40,680 --> 00:15:43,320 eich bod wedi dilysu eisoes. 264 00:15:43,320 --> 00:15:46,640 >> Felly, yn y ffordd hon cwcis yn cael eu hanfon yn ôl ac ymlaen ar draws y wifren. 265 00:15:46,640 --> 00:15:52,470 Arall chwilfrydedd am gwcis, yn enwedig yma, yw bod hyn yn gyfan gwbl yn cleartext. 266 00:15:52,470 --> 00:15:54,930 Does dim amgryptio digwydd yma o gwbl, 267 00:15:54,930 --> 00:15:57,240 ac yn wir rwy'n ei ddefnyddio HTTP ar hyn o bryd. 268 00:15:57,240 --> 00:16:00,890 Un o'n ffefrynnau yn eiliadau CS50, sydd bellach yn 2 flynedd yn ôl, 269 00:16:00,890 --> 00:16:04,750 oedd o gwmpas yr amser y bydd dull o'r enw Firesheep ddaeth allan. 270 00:16:04,750 --> 00:16:08,320 Roedd hwn yn ddarn rhad ac am ddim o feddalwedd sy'n cael ei wneud gan ymchwilydd diogelwch 271 00:16:08,320 --> 00:16:13,250 fel galwad sgil-ar gyfer y gymuned i ddweud yn union sut y gweithredir atrociously 272 00:16:13,250 --> 00:16:17,900 mecanweithiau dilysu penodol ar y We yn. 273 00:16:17,900 --> 00:16:22,880 Felly, am beth amser, Facebook roedd bron yn gyfan gwbl dros HTTP, HTTPS ddim. 274 00:16:22,880 --> 00:16:25,640 A hyd yn oed os nad oes gennych syniad sut y mae'r crypto yn gweithio, S yn ddiogel 275 00:16:25,640 --> 00:16:27,950 felly mae'n golygu fod o leiaf rywfaint o amgryptio dan sylw. 276 00:16:27,950 --> 00:16:30,610 Facebook ddim yn arfer amgryptio enwau defnyddwyr a chyfrineiriau, 277 00:16:30,610 --> 00:16:33,560 ond cyn gynted ag y byddwch yn edrych ar eich pokes neu eich negeseuon neu eich bwyd anifeiliaid newyddion, 278 00:16:33,560 --> 00:16:35,360 hynny i gyd oedd heb ei amgryptio. 279 00:16:35,360 --> 00:16:37,870 Felly roedd Gmail hyd nes dim ond blwyddyn neu 2 yn ôl. 280 00:16:37,870 --> 00:16:41,100 Unrhyw amser y byddwch yn logio i mewn, ie, maent yn defnyddio amgryptio diogel, 281 00:16:41,100 --> 00:16:44,300 ond ar ôl hynny nad oeddent. Ac efallai pam hynny? 282 00:16:44,300 --> 00:16:49,210 Pam na dim ond defnyddio cryptograffeg bob amser mewn achosion defnyddio fel hyn? 283 00:16:49,210 --> 00:16:53,700 Beth sy'n bod? Rwy'n credu fy mod glywed rhywbeth. [Myfyrwyr] Cyflymder. 284 00:16:53,700 --> 00:16:56,250 Cyflymder, dde? Mae yna ffyrdd o gwmpas hyn. 285 00:16:56,250 --> 00:16:59,610 Ond os ydych yn unig fath o feddwl am y peth rhesymegol, os byddwch yn amgryptio rhywbeth, 286 00:16:59,610 --> 00:17:01,820 rhaid i chi wneud o leiaf ychydig mwy o waith. 287 00:17:01,820 --> 00:17:05,460 Yn pset 2 pan fyddwch ar waith Cesar neu Vigenere neu hyd yn oed Agenna, 288 00:17:05,460 --> 00:17:07,760 dim ond argraffu llinyn yn gymharol hawdd. 289 00:17:07,760 --> 00:17:12,040 Amgryptio ac yna printio llinyn cyn lleied â phosibl yn gofyn am waith ychydig yn fwy. 290 00:17:12,040 --> 00:17:14,520 >>  Am wefannau poblogaidd super fel Google a Facebook, 291 00:17:14,520 --> 00:17:18,839 os oes rhaid i chi wneud mwy o waith ar gyfer pob defnyddiwr ar gyfer pob tudalen ar y we unigol fyddant yn ymweld, 292 00:17:18,839 --> 00:17:20,520 mai dim ond yn cymryd amser CPU mwy. 293 00:17:20,520 --> 00:17:22,920 Ac os ydych angen amser CPU mwy, efallai y bydd angen mwy o weinyddion, 294 00:17:22,920 --> 00:17:24,270 sy'n golygu efallai y bydd angen mwy o arian. 295 00:17:24,270 --> 00:17:27,579 Ac felly am flynyddoedd lawer mae hyn nid yn unig mewn gwirionedd yn arfer gorau. 296 00:17:27,579 --> 00:17:31,440 Byddai pobl yn defnyddio amgryptio SSL dim ond pan oedd angen iddynt. 297 00:17:31,440 --> 00:17:34,960 Ond mae'n troi allan, ac fel y cyd gyda Firesheep gwneud super glir, 298 00:17:34,960 --> 00:17:37,920 pan fyddwch guys sydd ar hyn o bryd ar Facebook ar hyn o bryd - 299 00:17:37,920 --> 00:17:39,880 Allan o chwilfrydedd, gadewch i ni weld os byddwch yn fess i fyny. 300 00:17:39,880 --> 00:17:42,620 Os ydych chi ar Facebook ar hyn o bryd mewn rhai tab, hyd yn oed os nad yw'n foregrounded, 301 00:17:42,620 --> 00:17:46,610 yw URL eich HTTP neu HTTPS? 302 00:17:46,610 --> 00:17:50,560 [Fyfyrwyr lluosog] S. S? [Chwerthin] 303 00:17:50,560 --> 00:17:55,510 Iawn. Unrhyw HTTP? Dim ond 1? Iawn. 304 00:17:55,510 --> 00:17:58,940 Felly, gall pob un ohonom darnia y boi yn cyfrif Facebook ar hyn o bryd. 305 00:17:58,940 --> 00:18:04,100 Ar gyfer y rhan fwyaf mae hyn wedi dod yn troi ymlaen yn ddiofyn, o leiaf mewn rhai gwefannau. 306 00:18:04,100 --> 00:18:08,120 Ac stori fer hir, os nad yw eich traffig ar y we yn cael ei amgryptio, 307 00:18:08,120 --> 00:18:12,960 nid yn unig y mae'r HTML mynd yn ôl ac ymlaen ar draws y WiFis heb ei amgryptio, 308 00:18:12,960 --> 00:18:16,760 felly peidiwch pethau fel 'cookies' yn mynd yn ôl ac ymlaen ar draws yr awyr 309 00:18:16,760 --> 00:18:18,940 heb unrhyw fath o amgryptio. 310 00:18:18,940 --> 00:18:23,540 Felly, os oes gennych dim ond ychydig o savvy raglennu neu ychydig o Googling sgiliau 311 00:18:23,540 --> 00:18:27,410 i ddod o hyd i feddalwedd rhad ac am ddim sy'n gwneud hyn, y cyfan mae'n rhaid i chi ei wneud yw eistedd yn Starbucks 312 00:18:27,410 --> 00:18:30,680 neu eistedd mewn maes awyr lle mae wedi y cyfan heb ei amgryptio WiFi 313 00:18:30,680 --> 00:18:36,070 a dim ond gwylio am eiriau allweddol fel Set-Cwci: neu PHPSESSID 314 00:18:36,070 --> 00:18:39,300 oherwydd os ydych yn cael y savvy dechnegol i dim ond gwylio y WiFi 315 00:18:39,300 --> 00:18:43,010 ar gyfer yr holl ddarnau sy'n llifo trwy gydol yr awyr am y patrwm hwn, 316 00:18:43,010 --> 00:18:50,840 yna gallwch ddweud bod PHPSESSID guy yn digwydd bod yn bo8dal ac yn y blaen. 317 00:18:50,840 --> 00:18:53,890 Ac yna eto os ydych yn ddigon savvy dechnegol neu os oes gennych yr offeryn cywir, 318 00:18:53,890 --> 00:18:58,890 gallwch wedyn dim ond ad-drefnu eich porwr hun i ddechrau cyflwyno y stamp llaw 319 00:18:58,890 --> 00:19:05,030 i Facebook.com, a Facebook yn unig yn mynd i gymryd yn ganiataol eich bod yn y dyn 320 00:19:05,030 --> 00:19:09,880 oherwydd nad yw pob eu bod yn gwybod yw pwy ydych chi ond eich bod yn cael y dynodwr unigryw. 321 00:19:09,880 --> 00:19:14,650 Felly os ydych yn dwyn y dynodwr unigryw a'i gyflwyno i'r gweinydd gwe fel eich hun, 322 00:19:14,650 --> 00:19:16,860 maent yn jyst yn mynd i ddangos i chi porthiant newyddion y person hwnnw 323 00:19:16,860 --> 00:19:18,980 neu negeseuon y person hwnnw neu pokes. 324 00:19:18,980 --> 00:19:23,190 >> A byddwn yn Google nawr sut i weithio'r HTTPS ar gyfer Facebook efallai. 325 00:19:23,190 --> 00:19:25,150 Ond y mae mewn gwirionedd mor syml â hynny. 326 00:19:25,150 --> 00:19:27,660 Ac felly Facebook a Google ac ati wedi gotten yn dda iawn ar hyn, 327 00:19:27,660 --> 00:19:31,870 ond cadwch lygad allan yn fwy ar gyfer unrhyw wefannau byddwch yn ymweld nad ydynt yn defnyddio HTTP 328 00:19:31,870 --> 00:19:35,020 ac yn cael rhyw fath o wybodaeth sensitif ar eu cyfer, 329 00:19:35,020 --> 00:19:37,490 boed yn ariannol neu bersonol neu debyg. 330 00:19:37,490 --> 00:19:43,180 Os nad ydynt yn defnyddio hyn, gall o bosib cwcis fel hyn fod yn hawdd iawn eu dwyn 331 00:19:43,180 --> 00:19:46,270 a meithrin hynny, a dyna'n union yr hyn a wnaeth Firesheep. 332 00:19:46,270 --> 00:19:48,250 Doeddech chi ddim rhaid i chi fod yn rhaglennydd. 333 00:19:48,250 --> 00:19:51,680 Y cyfan sydd wedi ei wneud oedd wedi cael cysylltiad rhyngrwyd, llwytho i lawr offeryn hwn am ddim, 334 00:19:51,680 --> 00:19:56,490 a'r hyn y byddai'n ei wneud yw i chi logio i mewn, ac yna byddai'n dangos i chi enwau Facebook 335 00:19:56,490 --> 00:20:00,170 pawb yn Sanders, yn yr arddangosiad arbennig, o'ch cwmpas 336 00:20:00,170 --> 00:20:03,260 a phob rhaid i chi ei wneud oedd cliciwch ar eu henw a'r meddalwedd awtomeiddio'r broses 337 00:20:03,260 --> 00:20:05,970 o arogli y cwci, gan ei gyflwyno i Facebook fel eich hun, 338 00:20:05,970 --> 00:20:07,990 ac, voila, rydych yn mewngofnodi 339 00:20:07,990 --> 00:20:11,190 Felly, mae hyn yn un arall o'r rhai "peidiwch â gwneud hyn" yn swyddogol. 340 00:20:11,190 --> 00:20:14,660 Os oes gennych eich rhwydwaith cartref eich hun ac rydych am i botsian, ar bob cyfrif, 341 00:20:14,660 --> 00:20:17,530 ond yn sylweddoli hyn yn croesi'r llinell ar amgylchedd y brifysgol. 342 00:20:17,530 --> 00:20:20,030 >> Ond y nod yma yw ein bod yn pwysleisio nid sut i wneud hyn 343 00:20:20,030 --> 00:20:22,320 ond sut i amddiffyn yn erbyn y mathau hyn o bethau. 344 00:20:22,320 --> 00:20:26,180 Ac mae'r ateb dibwys yma, er ei fod ei hun yn ddiffygiol, 345 00:20:26,180 --> 00:20:31,360 yw i 'n sylweddol leihau'r defnydd o unrhyw safleoedd nad ydynt yn defnyddio HTTPS yn gyson. 346 00:20:31,360 --> 00:20:34,520 Felly safleoedd fel Facebook a Google yn gynyddol blychau ticio 347 00:20:34,520 --> 00:20:36,200 lle gallwch ddewis i mewn i'r math hwn o beth, 348 00:20:36,200 --> 00:20:40,000 a banciau wedi cael hyn ers blynyddoedd am resymau tebyg. 349 00:20:40,000 --> 00:20:43,580 Felly, dim ond ychydig bach o ffactor ofn os gallwn. Ond dyna ni yn gryno. 350 00:20:43,580 --> 00:20:46,420 Dyna sut y mae gweinydd yn cofio pwy ydych chi. 351 00:20:46,420 --> 00:20:50,760 A chyn gynted ag y gallant gofio pwy ydych chi, gallant gofio unrhyw beth amdanoch chi 352 00:20:50,760 --> 00:20:56,140 bod y rhaglennydd wedi ei storio y tu mewn o hyn superglobal arbennig o'r enw $ _SESSION. 353 00:20:56,140 --> 00:20:59,750 Ac ar gyfer pset 7 rydym yn ei ddefnyddio trivially yn unig i gofio int, 354 00:20:59,750 --> 00:21:02,260 sef ID unigryw y defnyddiwr sydd wedi logio i mewn, 355 00:21:02,260 --> 00:21:05,880 fel ein bod yn gwybod eu bod wedi bod yno o'r blaen. 356 00:21:05,880 --> 00:21:12,450 Unrhyw gwestiynau yna ar sesiynau neu cwcis neu yn y blaen? 357 00:21:12,450 --> 00:21:15,130 Nid Firesheep yn gweithio cystal anymore, 358 00:21:15,130 --> 00:21:18,310 a rhaid i chi roi eich cyfrifiadur i mewn i modd cymysg arbennig 359 00:21:18,310 --> 00:21:20,700 felly rydych yn mewn gwirionedd yn gwrando am draffig ar wahân i chwi eich hunain. 360 00:21:20,700 --> 00:21:23,940 Felly, os ydych yn llwytho i lawr ar hyn o bryd Firesheep, yn sylweddoli ei fod yn ddim cweit mor hawdd 361 00:21:23,940 --> 00:21:26,850 ag y bu eu dangos. 362 00:21:26,850 --> 00:21:29,070 Mae pob hawl. A pheidiwch â gwneud hynny yn Sanders. Ei wneud ar y cartref. 363 00:21:29,070 --> 00:21:30,890 Cronfeydd Data. 364 00:21:30,890 --> 00:21:33,580 Un o'r pethau a wnaethom yn pset iawn 7 fwriadol 365 00:21:33,580 --> 00:21:37,780 oedd yn rhoi i chi sampl tabl cronfa ddata ar gyfer defnyddwyr sydd â rhai IDs defnyddiwr, 366 00:21:37,780 --> 00:21:41,020 rhai enwau defnyddwyr, ac mae rhai cyfrineiriau wedi eu amgryptio ynddo. 367 00:21:41,020 --> 00:21:44,520 Ac fel y gwelwch, os nad ydych wedi eisoes, rydych chi'n mynd i gael i newid y tabl ychydig. 368 00:21:44,520 --> 00:21:47,710 Rydych yn mynd i gael i ychwanegu rhywfaint o cache i bob un o'r defnyddwyr yn y tabl, 369 00:21:47,710 --> 00:21:51,130 a ydych yn mynd i gael i ychwanegu un arall, bwrdd hanes tabl portffolios, 370 00:21:51,130 --> 00:21:53,310 neu efallai ei alw'n rhywbeth arall. 371 00:21:53,310 --> 00:21:56,740 Ond o ran meddwl am sut i wneud hyn, gadewch i ni agor offeryn hwn 372 00:21:56,740 --> 00:22:00,570 a ddefnyddiwyd gennym ar ddydd Gwener, ond os anghyfarwydd, yr offer comes ag offeryn 373 00:22:00,570 --> 00:22:04,680 a elwir yn phpMyAdmin a ysgrifennir gyd-ddigwyddiad yn PHP, 374 00:22:04,680 --> 00:22:07,950 ond mae ei phwrpas mewn bywyd, ar ôl i mi logio i mewn yma fel jharvard ag ysgarlad, 375 00:22:07,950 --> 00:22:15,160 yw rhoi i mi yn ffordd hawdd ei ddefnyddio o wylio a newid fy gronfa ddata. 376 00:22:15,160 --> 00:22:18,040 >> Mae'r gronfa ddata fy mod yn rhedeg ar y peiriant a elwir MySQL. 377 00:22:18,040 --> 00:22:23,420 Mae hyn yn boblogaidd iawn, ac mae'n cronfa ddata ffynhonnell agored am ddim sy'n rhyfeddol o hawdd i'w defnyddio, 378 00:22:23,420 --> 00:22:25,620 yn enwedig gyda blaen yn dod i ben fel hyn. 379 00:22:25,620 --> 00:22:29,350 Beth mae hyn yn offeryn yn caniatáu imi ei wneud, er enghraifft, yn poke o amgylch byrddau. 380 00:22:29,350 --> 00:22:30,890 Gadewch i mi fynd yn ei flaen ac yn gwneud hyn. 381 00:22:30,890 --> 00:22:36,580 Ar ddydd Gwener aethom ati i greu tabl o'r enw myfyrwyr a oedd yn syml super. 382 00:22:36,580 --> 00:22:41,680 Roedd 3 colofn - id, enw, ac e-bost - ac yr wyf llaw mewnosod un neu ddau o resi 383 00:22:41,680 --> 00:22:44,420 fel David Davies a Mike yn yr enghraifft hon. 384 00:22:44,420 --> 00:22:47,290 Gadewch i ni gymryd y bit pellach, a gadewch i ni dybio ein bod eisiau cofio mwy o 385 00:22:47,290 --> 00:22:49,660 na dim ond enw ac e-bost am ddefnyddiwr. 386 00:22:49,660 --> 00:22:53,090 Gadewch i mi cliciwch Strwythur yma ar y brig. 387 00:22:53,090 --> 00:22:55,440 Ac eto, y pset teithiau cerdded i chi trwy'r camau angenrheidiol yma, 388 00:22:55,440 --> 00:22:58,150 felly peidiwch â phoeni os yw rhai o hyn yw ychydig yn gyflym. 389 00:22:58,150 --> 00:22:59,690 Wedyn dw i'n mynd i glicio yma. 390 00:22:59,690 --> 00:23:02,270 Rydw i'n mynd i ychwanegu rhai nifer o golofnau ar ôl e-bost 391 00:23:02,270 --> 00:23:04,130 oherwydd yr wyf am ychwanegu rhywbeth fel tŷ. 392 00:23:04,130 --> 00:23:06,640 Anghofiais i gofnodi tŷ myfyriwr. 393 00:23:06,640 --> 00:23:11,400 Gadewch i mi cliciwch Go, ac yn awr mae gennym y ffurflen hon, yn anffodus ychydig yn eang o'r chwith i'r dde, 394 00:23:11,400 --> 00:23:13,710 ond rwy'n mynd i alw enw'r tŷ hwn maes, 395 00:23:13,710 --> 00:23:16,050 ac yna y math wyf yn awr yn rhaid i ddewis. 396 00:23:16,050 --> 00:23:18,870 Felly, gadewch i ni gael sgwrs fer am y mathau gwahanol i mewn MySQL 397 00:23:18,870 --> 00:23:24,590 oherwydd tra PHP ei deipio wan ac mae'n fath o chwarae yn gyflym ac yn rhydd gyda mathau, 398 00:23:24,590 --> 00:23:29,430 mewn cronfa ddata yn enwedig ei bod yn bwysig super i'w ddefnyddio mewn gwirionedd teipio o fantais i chi 399 00:23:29,430 --> 00:23:33,260 oherwydd mae un o'r pethau a MySQL chronfa ddata pheiriannau eraill ei wneud i chi 400 00:23:33,260 --> 00:23:37,910 yw sicrhau bod nad ydych yn rhoi data ffug yn eich cronfa ddata. 401 00:23:37,910 --> 00:23:41,850 Mae hyn yn fath o wall rhad ac am ddim wirio ar gael i chi. 402 00:23:41,850 --> 00:23:46,250 >> Am ty mae'n amlwg nad ydym am iddo fod yn int, sy'n werth 32-bit i mewn MySQL. 403 00:23:46,250 --> 00:23:49,810 Fe wnaethon ni siarad yn fyr ar ddydd Gwener am varchar, sy'n sefyll am hyd torgoch amrywiol. 404 00:23:49,810 --> 00:23:54,720 Beth yw hwn? Mae hyn yn caniatáu i chi nodi eich bod am i hyn fod yn llinyn o ryw fath. 405 00:23:54,720 --> 00:23:56,840 Dydych chi ddim wir yn gwybod ymlaen llaw pa mor hir ydyw, 406 00:23:56,840 --> 00:24:00,100 felly byddwn yn fympwyol yn dweud y gall enw tŷ fod yn 255 o gymeriadau, 407 00:24:00,100 --> 00:24:04,190 ond gallech fynd â 32, 64 - unrhyw nifer mewn gwirionedd. 408 00:24:04,190 --> 00:24:10,700 Ond y fantais o ddefnyddio varchar dros cae o'r enw torgoch yw beth? 409 00:24:10,700 --> 00:24:15,110 Dim ond os byddaf yn reddfol sgroliwch i lawr yma, sylwch mae torgoch ac mae varchar. 410 00:24:15,110 --> 00:24:19,520 Varchar yw unrhyw hyd a torgoch amrywiol; char yn hyd torgoch sefydlog. 411 00:24:19,520 --> 00:24:24,730 Yn seiliedig Felly dim ond ar y diffiniad hwnnw, beth yw'r fantais neu anfantais o bob un o'r rhain? 412 00:24:24,730 --> 00:24:30,490 Mewn geiriau eraill, sy'n gofalu am y gwahaniaeth, neu pam y dylech chi ofalu? 413 00:24:31,660 --> 00:24:35,750 >> Yeah. [Myfyrwyr] Varchar Mae mwy o hyblygrwydd, ond yn cymryd mwy o gof. 414 00:24:35,750 --> 00:24:40,730 Da. Varchar yn cymryd mwy - Gadewch i ni weld. Dwi ddim yn siŵr os wyf yn clywed yr hawl honno. 415 00:24:40,730 --> 00:24:42,360 Allwch chi ddweud unwaith eto? 416 00:24:42,360 --> 00:24:45,850 [Myfyrwyr] dywedais varchar mae'n debyg bod gan fwy o hyblygrwydd, ond mae'n cymryd i fyny mwy o gof. 417 00:24:45,850 --> 00:24:51,170 Diddorol. Iawn. Varchar yn ôl pob tebyg yn rhoi mwy o hyblygrwydd, ond yn cymryd mwy o gof. 418 00:24:51,170 --> 00:24:53,220 Nid yw'r olaf yn wir o reidrwydd. 419 00:24:53,220 --> 00:24:56,290 Mae'n dibynnu ar y cyd-destun, ond gadewch i ni ddod yn ôl at hynny. 420 00:24:56,290 --> 00:25:03,230 >> [Ymateb y myfyrwyr Anghlywadwy] Yn union. 421 00:25:03,230 --> 00:25:06,900 Mae'n mewn gwirionedd yn wir y bydd torgoch fel arfer yn defnyddio mwy o gof 422 00:25:06,900 --> 00:25:10,950 oherwydd bod torgoch, fel yn C, yn debyg i llinyn, ei fod yn amrywiaeth o gymeriadau. 423 00:25:10,950 --> 00:25:13,690 Felly, os ydych yn dweud maes torgoch o hyd 255, 424 00:25:13,690 --> 00:25:16,910 y gronfa ddata yn llythrennol yn mynd i roi 255 o gymeriadau. 425 00:25:16,910 --> 00:25:22,290 Ac os bydd y tŷ yn dod i ben i fyny fod yn gymeriadau MATHER a 6 cyfanswm, 426 00:25:22,290 --> 00:25:25,090 rydych yn gwastraffu dros 200 o gymeriadau. 427 00:25:25,090 --> 00:25:29,640 >> Felly varchar yn effeithiol dim ond defnyddio fel nifer o gymeriadau ag y bo angen 428 00:25:29,640 --> 00:25:31,590 hyd at uchafswm. 429 00:25:31,590 --> 00:25:35,470 Ond mae'r pris a dalwch mewn gwirionedd perfformiad, o bosibl. 430 00:25:35,470 --> 00:25:39,740 Os ydych yn gwybod ymlaen llaw bod eich holl dannau yn mynd i fod yn 8 cymeriadau - 431 00:25:39,740 --> 00:25:43,090 er enghraifft, mae'n debyg eich bod angen cyfrineiriau o hyd 8 - 432 00:25:43,090 --> 00:25:47,350 y upside o ddefnyddio maes torgoch ar adegau, ond nid yn aml, 433 00:25:47,350 --> 00:25:51,100 yw pennu hyd sefydlog ar gyfer rhywbeth fel cyfrinair 434 00:25:51,100 --> 00:25:53,300 oherwydd erbyn hyn y gall y gronfa ddata hyd yn oed yn fwy craff. 435 00:25:53,300 --> 00:25:58,160 Os yw'n gwybod bod pob maes torgoch, pob llinyn mewn colofn yn yr un hyd, 436 00:25:58,160 --> 00:26:00,780 chi fynd yn ôl y nodwedd o fynediad ar hap. 437 00:26:00,780 --> 00:26:05,110 Gallwch neidio o gwmpas ymhlith y gwahanol feysydd torgoch yn eich tabl cronfa ddata 438 00:26:05,110 --> 00:26:07,940 oherwydd meddwl am gronfa ddata fel rhesi a cholofnau. 439 00:26:07,940 --> 00:26:11,670 Felly, os yw pob un o'r llinynnau yn yr un hyd, 440 00:26:11,670 --> 00:26:17,820 eich bod yn gwybod bod yr un cyntaf ar beit 0, yr un nesaf ar 8 beit 441 00:26:17,820 --> 00:26:20,240 ac yna 16, yna 24 ac yn y blaen. 442 00:26:20,240 --> 00:26:24,500 Felly, os bydd yr holl dannau o'r un hyd, gallwch neidio o gwmpas yn llawer mwy effeithlon. 443 00:26:24,500 --> 00:26:26,710 Felly, gall hynny fod yn fanteisiol o ran perfformiad, 444 00:26:26,710 --> 00:26:29,420 ond yn nodweddiadol nad oes gennych y moethus o wybod ymlaen llaw, 445 00:26:29,420 --> 00:26:32,170 felly mae varchar yw'r ffordd i fynd. 446 00:26:32,170 --> 00:26:36,030 Dyma un arall manylion a oedd yn rhedeg hyd yn oed Facebook yn y pen draw. 447 00:26:36,030 --> 00:26:39,670 Ints yn wych, ac rydym yn fath o eu defnyddio yn ddiofyn unrhyw adeg ydym am nifer, 448 00:26:39,670 --> 00:26:41,750 ond mae'n dim ond 32 ddarnau. 449 00:26:41,750 --> 00:26:46,210 >> A hyd yn oed er nad oes Facebook eithaf gael 4 biliwn o ddefnyddwyr yn awr, 450 00:26:46,210 --> 00:26:48,680 mae bendant rhai pobl allan yna gyda chyfrifon lluosog 451 00:26:48,680 --> 00:26:50,960 neu gyfrifon sydd wedi cael eu hagor ac yna ar gau, 452 00:26:50,960 --> 00:26:55,130 ac felly Facebook ei hun yr wyf yn credu ychydig flynyddoedd yn ôl roedd yn rhaid i newid o int 453 00:26:55,130 --> 00:27:00,010 i, fel y gelwir aptly, bigint, sydd ychydig yn 64 did yn lle hynny. 454 00:27:00,010 --> 00:27:02,230 Felly, mae hyn hefyd yn benderfyniad dylunio. 455 00:27:02,230 --> 00:27:06,570 Byddech yn rhyfeddol o lwcus os yw eich prosiect terfynol yn troi startup, 456 00:27:06,570 --> 00:27:10,010 wedi 4 biliwn a 1 defnyddiwr, rhoi neu gymryd, 457 00:27:10,010 --> 00:27:13,200 ac os felly gallai defnyddio ints fod ychydig yn shortsighted. 458 00:27:13,200 --> 00:27:16,230 Ond mewn gwirionedd, eich defnyddwyr tabl yn ôl pob tebyg iawn gyda ints. 459 00:27:16,230 --> 00:27:19,340 Ond ar gyfer rhywbeth fel pset 7, fel eich bwrdd hanes, 460 00:27:19,340 --> 00:27:23,700 allai fod gennych miloedd, miliynau o ddefnyddwyr os ydych yn esblygu i mewn i etrade.com. 461 00:27:23,700 --> 00:27:26,020 Felly, tra efallai nad oes gennych fwy na 4 biliwn o ddefnyddwyr, 462 00:27:26,020 --> 00:27:30,070 y gallai rhai defnyddwyr oes gennych fwy na 4000000000 trafodion dros gyfnod o amser - 463 00:27:30,070 --> 00:27:33,200 yn prynu ac yn gwerthu a phethau yn eu hanes. 464 00:27:33,200 --> 00:27:38,090 Felly, os ydych yn rhagweld - unwaith eto, mae'r rhain yn broblemau da i gael os oes gennych hyn yn llawer o ddata - 465 00:27:38,090 --> 00:27:40,920 os ydych yn rhagweld data yn fwy na'r maint o int, 466 00:27:40,920 --> 00:27:47,740 mynd gyda rhywbeth fel bigint yw cyfarwyddyd nid yn ddigon aml a fabwysiadwyd gan ddylunwyr 467 00:27:47,740 --> 00:27:49,710 oherwydd bod pobl yn ffigwr nid yw hynny'n mynd i fod yn broblem, 468 00:27:49,710 --> 00:27:51,930 ond mae'n hyn yn hawdd i'w ddewis rhywbeth mwy na hynny. 469 00:27:51,930 --> 00:27:55,380 Degol rydym yn ei ddefnyddio yn pset 7, sy'n nodi manylder sefydlog 470 00:27:55,380 --> 00:27:59,840 fel y gallwch osgoi'r materion yn ymwneud fflotiau a dyblau a reals ac yn y blaen. 471 00:27:59,840 --> 00:28:02,440 >> Ac yna mae rhai meysydd eraill yma. Byddwn yn chwifio ein dwylo arnyn nhw i ryw raddau. 472 00:28:02,440 --> 00:28:07,270 Ond dyddiadau, amseroedd i gyd yn cael fformat a ragnodwyd yn MySQL, 473 00:28:07,270 --> 00:28:10,830 a'r fantais o ddyddiadau storio fel dyddiadau ac nid varchars 474 00:28:10,830 --> 00:28:15,730 golygu y gall y gronfa ddata mewn gwirionedd fformadu i mewn fformatau gwahanol, 475 00:28:15,730 --> 00:28:18,800 a yw fformat yr Unol Daleithiau neu fformat Ewropeaidd neu yn y blaen - bynnag yr ydych ei eisiau - 476 00:28:18,800 --> 00:28:22,700 yn llawer mwy effeithlon na phe bai'n ddim ond rhai varchar generig. 477 00:28:22,700 --> 00:28:25,150 Ac yna mae rhywfaint o deuaidd eraill, varbinary, smotiau. 478 00:28:25,150 --> 00:28:28,580 Mae'r rhain yn bethau mawr deuaidd, a gallwch hefyd storio data deuaidd 479 00:28:28,580 --> 00:28:30,750 yn ogystal â data geometrig mewn cronfa ddata. 480 00:28:30,750 --> 00:28:34,350 Ond i ni, byddwn fel arfer yn gofalu am ints a varchars ac yn y blaen. 481 00:28:34,350 --> 00:28:36,230 Gadewch i ni orffen i fyny yr enghraifft hon gyda tŷ. 482 00:28:36,230 --> 00:28:40,030 Bydd House Rydw i'n mynd i fod yn fympwyol dweud 255 chars. 483 00:28:40,030 --> 00:28:42,850 Yna gwerth rhagosodedig y gallem wneud hyn. 484 00:28:42,850 --> 00:28:47,440 Gallem yn ddiofyn yn rhoi pawb yn Mather House, er enghraifft. 485 00:28:47,440 --> 00:28:49,710 Dyna sut y gallem nodi bod y gronfa ddata 486 00:28:49,710 --> 00:28:52,460 Dylai sicrhau bod rhywun bob amser yn werth. Ond byddaf yn gadael hynny. 487 00:28:52,460 --> 00:28:55,270 Yn wir, ar gyfer pobl sy'n byw oddi ar y campws ac nid mewn tŷ, 488 00:28:55,270 --> 00:28:59,590 efallai Fi 'n weithredol am nodi bod y gwerth diofyn ar gyfer tŷ NULL, 489 00:28:59,590 --> 00:29:04,890 ac yna mae angen i mi brithwch y blwch yma a dweud wrth y gronfa ddata ei fod yn iawn os bydd tŷ y defnyddiwr yn null. 490 00:29:04,890 --> 00:29:07,270 >> Unwaith eto, mae hyn yn un arall mecanwaith amddiffyn y gallwch eu rhoi yn eu lle 491 00:29:07,270 --> 00:29:10,590 felly nid oes hyd yn oed yn rhaid i chi roi yn eich cod PHP o reidrwydd. 492 00:29:10,590 --> 00:29:14,630 Bydd y gronfa ddata yn sicrhau bod pethau'n neu nad ydynt yn NULL. 493 00:29:14,630 --> 00:29:17,310 Ac yna yn olaf, Priodoleddau. 494 00:29:17,310 --> 00:29:18,920 Dim un o'r rhain yn wir yn berthnasol. 495 00:29:18,920 --> 00:29:22,880 Binary, heb eu llofnodi - un o'r rhain yn berthnasol i varchar. 496 00:29:22,880 --> 00:29:24,220 Mynegai. 497 00:29:24,220 --> 00:29:27,320 Oes rhywun yn gwybod neu gofio neu os oes gennych ddyfalu ynghylch yr hyn mynegai yn 498 00:29:27,320 --> 00:29:29,510 ar gyfer rhywbeth fel tŷ? 499 00:29:29,510 --> 00:29:35,240 Mae hyn hefyd mewn gwirionedd yn benderfyniad pwysig wrth ddylunio ac yn gymharol hawdd. 500 00:29:35,240 --> 00:29:39,200 I'r rhai nad ydynt wedi gweld eto, ar ddydd Gwener ni siarad yn fyr am allweddi cynradd. 501 00:29:39,200 --> 00:29:43,240 Mewn tabl cronfa ddata, allwedd gynradd yn y maes neu golofn 502 00:29:43,240 --> 00:29:46,270 unigryw sy'n nodi rhesi yn y tabl. 503 00:29:46,270 --> 00:29:49,150 Felly, yn y tabl ar hyn o bryd mae gennym IDs, mae gennym enwau a negeseuon e-bost. 504 00:29:49,150 --> 00:29:52,050 Pa un o'r rheini yw'r ymgeisydd gorau i fod yn allwedd gynradd, 505 00:29:52,050 --> 00:29:55,810 sydd â'r rôl i adnabod unigryw rhesi? 506 00:29:55,810 --> 00:29:57,530 Mae'n debyg ID. 507 00:29:57,530 --> 00:29:59,930 Gellir dadlau, gallem hefyd yn defnyddio'r hyn er bod? 508 00:29:59,930 --> 00:30:02,860 Efallai y gallech chi ddefnyddio e-bost oherwydd mewn theori mae'n unigryw 509 00:30:02,860 --> 00:30:05,380 oni bai bod pobl yn cael eu rhannu cyfrifon e-bost. 510 00:30:05,380 --> 00:30:09,980 Ond y gwir amdani yw, os ydych yn defnyddio ID rhifol fel 1234, 511 00:30:09,980 --> 00:30:14,170 dyna dim ond 32 darnau, tra gallai cyfeiriad e-bost fod hyn bytes llawer o hwn neu bytes lawer. 512 00:30:14,170 --> 00:30:16,610 Felly, o ran effeithlonrwydd ar gyfer dynodwyr unigryw, 513 00:30:16,610 --> 00:30:19,270 mae'n tueddu i fod arfer da yn unig i ddefnyddio int 514 00:30:19,270 --> 00:30:23,090 hyd yn oed os oes gennych rywfaint ymgeisydd llinyn y gallech dadlau defnyddio. 515 00:30:23,090 --> 00:30:26,760 >> Am rywbeth tebyg i dŷ, ni ddylai hyn fod yn allwedd gynradd 516 00:30:26,760 --> 00:30:30,770 oherwydd wedyn dim ond 1 person yn byw yn Mather ac 1 person yn lledrwr ac yn y blaen. 517 00:30:30,770 --> 00:30:32,790 Yn yr un modd, ni ddylai hyn fod yn unigryw. 518 00:30:32,790 --> 00:30:37,830 Y gwahaniaeth rhwng ysgolion cynradd ac unigryw yw bod yn yr achos ein tabl ar hyn o bryd, 519 00:30:37,830 --> 00:30:42,620 Byddai adnabod yn sylfaenol, ond nid e-bost yn sylfaenol ar gyfer y rheswm hwn rydym newydd ei grybwyll - 520 00:30:42,620 --> 00:30:44,740 perfformiad - ond dylai fod yn unigryw. 521 00:30:44,740 --> 00:30:47,200 Felly, gallwch barhau i orfodi unigryw heb wneud yr hawliad 522 00:30:47,200 --> 00:30:49,520 ei fod yn faes gynradd super pwysig. 523 00:30:49,520 --> 00:30:52,610 Ond mae hyn yn un yn eithaf defnyddiol: Mynegai. 524 00:30:52,610 --> 00:30:56,180 Os ydych yn gwybod ymlaen llaw am eich prosiect terfynol, ar gyfer pset 7, neu yn gyffredinol, 525 00:30:56,180 --> 00:30:59,480 bod y tŷ maes yn mynd i fod yn rhywbeth yr ydych yn chwilio ar lawer 526 00:30:59,480 --> 00:31:01,910 defnyddio'r gair allweddol dethol neu rywbeth arall, 527 00:31:01,910 --> 00:31:05,180 yna gallwch preemptively ddweud wrth y gronfa ddata i weithio ei hud 528 00:31:05,180 --> 00:31:10,510 a gwneud yn siŵr ei bod yn creu mewn cof unrhyw strwythurau data angenrheidiol ffansi 529 00:31:10,510 --> 00:31:13,770 i hwyluso chwiliadau sy'n seiliedig ar dŷ. 530 00:31:13,770 --> 00:31:17,860 Efallai bydd yn defnyddio'r tabl hash, efallai y bydd yn defnyddio rhestr cysylltiedig. 531 00:31:17,860 --> 00:31:21,260 Mewn gwirionedd, mae'n tueddu i ddefnyddio coeden, yn aml strwythur a elwir yn B-coed - 532 00:31:21,260 --> 00:31:24,090 Nid goeden ddeuol ond B-coed - sy'n coeden eang iawn 533 00:31:24,090 --> 00:31:27,370 y gallech eu gweld mewn dosbarth fel CS124, y dosbarth strwythurau data. 534 00:31:27,370 --> 00:31:31,800 Ond yn fyr, nid oes rhaid i chi boeni am hynny wrth ddefnyddio meddalwedd cronfa ddata smart. 535 00:31:31,800 --> 00:31:35,890 Alli jyst dweud hynny, "Mynegai y maes hwn fel y gallaf chwilio am yn fwy effeithlon." 536 00:31:35,890 --> 00:31:40,250 >> Os byddwch yn gadael hwn i ffwrdd ac rydych yn ceisio chwilio am bawb yn y gronfa ddata sy'n byw yn Mather, 537 00:31:40,250 --> 00:31:42,710 bydd yn datganoli i chwiliad llinol. 538 00:31:42,710 --> 00:31:45,360 Ac os oes gennych chi 6000 undergrads i gyd yn byw mewn rhyw dŷ, 539 00:31:45,360 --> 00:31:47,900 ydych chi'n mynd i chwilio'r bwrdd cyfan i ddod o hyd i'r Matherites, 540 00:31:47,900 --> 00:31:52,190 ond os ydych yn dweud Mynegai, gobeithio y bydd yn rhywbeth agos at chwiliad logarithmig 541 00:31:52,190 --> 00:31:54,510 i ddod o hyd y mathau hynny o fyfyrwyr. 542 00:31:54,510 --> 00:31:56,750 Mae hyn yn unig yw nodwedd rhad ac am ddim i droi ymlaen, 543 00:31:56,750 --> 00:31:59,530 hyd yn oed er ei fod yn dod am bris o ryw faint o ofod. 544 00:31:59,530 --> 00:32:02,690 Yn olaf, auto-cynyddiad, y maes hwn AI, 545 00:32:02,690 --> 00:32:05,830 a dim ond yn golygu os ei fod yn int, ac nad ydych am i ofalu i gynnydd eich hun 546 00:32:05,830 --> 00:32:07,570 bob tro y mae defnyddwyr newydd, gwirio bod, 547 00:32:07,570 --> 00:32:11,910 a bydd pob defnyddiwr sy'n cael ei fewnosod yn awtomatig yn cael ID newydd. 548 00:32:11,910 --> 00:32:15,620 Gadewch i ni cliciwch Save, ac yn awr gad i ddod o hyd i fai ag y dyluniad hwn. 549 00:32:15,620 --> 00:32:20,200 Os byddaf yn mynd i mewn i Browse, hysbysiad bod Mike a fy nhŷ yn null. 550 00:32:20,200 --> 00:32:22,420 Gallaf ddefnyddio phpMyAdmin i olygu'r hyn â llaw. 551 00:32:22,420 --> 00:32:25,110 Gallaf fynd i mewn yma a theipiwch Mather ac yna pwyswch Enter, 552 00:32:25,110 --> 00:32:27,740 ac yn awr yn sylwi ar y tabl yn wahanol. 553 00:32:27,740 --> 00:32:29,270 Ond rhybudd gallwn i wneud rhywbeth arall yn ogystal. 554 00:32:29,270 --> 00:32:33,530 David ID yw 1, felly phpMyAdmin unwaith eto yn unig yw offeryn gweinyddol; 555 00:32:33,530 --> 00:32:35,970 nid yw hyn yn rhywbeth eich defnyddwyr yn cael eu byth yn mynd i weld. 556 00:32:35,970 --> 00:32:38,810 Felly, os wyf yn lle hynny cliciwch y tab SQL i fyny top - 557 00:32:38,810 --> 00:32:41,450 ac unwaith eto, bydd pset 7 yn eich cyflwyno i fwy o ymholiadau am hyn - 558 00:32:41,450 --> 00:32:45,260 Gallaf manually gweithredu'r gorchymyn SQL ymholiad strwythuredig iaith 559 00:32:45,260 --> 00:32:56,410 Defnyddwyr DIWEDDARIAD SET ty = 'Pfoho' BLE id = 1. 560 00:32:56,410 --> 00:33:00,830 Mae'r ymholiadau SQL yn, 'n glws ddigon,' n bert darllenadwy o'r chwith i'r dde. 561 00:33:00,830 --> 00:33:04,350 Diweddariad y tabl defnyddwyr, gosod y cae o'r enw tŷ i Pfoho 562 00:33:04,350 --> 00:33:06,830 lle mae ID y defnyddiwr yw 1. 563 00:33:06,830 --> 00:33:11,480 Neu gallwn hyd yn oed wneud lle e-bost = 'malan@harvard.edu'. 564 00:33:11,480 --> 00:33:14,860 Cyn belled ag y unigryw yn nodi i mi, a fyddai'n gweithio cystal. 565 00:33:14,860 --> 00:33:18,810 Ond ID tueddu i fod yn berfformiad uwch, felly gadewch i ni wneud hynny. 566 00:33:18,810 --> 00:33:22,950 Gadewch i ni cliciwch Go. Iawn, nid yw lecture.users yn bodoli. Beth yw fy camgymeriad? 567 00:33:22,950 --> 00:33:26,220 Beth yw'r tabl o'r enw yn y fan yma? 568 00:33:26,220 --> 00:33:28,770 Mae'n cael ei alw myfyrwyr yn unig oherwydd dyna beth a wnaethom hyd yma ar y chwith uchaf. 569 00:33:28,770 --> 00:33:31,860 Mae'n cael ei alw nad yw myfyrwyr, defnyddwyr. Cliciwch Felly Ewch yn awr. 570 00:33:31,860 --> 00:33:34,330 1 rhes yr effeithir arnynt. Ymholiad gymerodd 0.01 eiliad. 571 00:33:34,330 --> 00:33:38,010 Os cliciwch wyf Pori yn awr, bellach yn byw Malan yn Pfoho. 572 00:33:38,010 --> 00:33:42,070 Felly, dyna un arall blas o SQL, ond bydd y pset cerdded chi drwy ychydig mwy o hynny. 573 00:33:42,070 --> 00:33:44,710 >> Mae penderfyniad dwp rwyf eisoes wedi gwneud yma. 574 00:33:44,710 --> 00:33:47,820 Byddwn yn dadlau bod y cynllun newydd hwn gronfa ddata yn aneffeithlon 575 00:33:47,820 --> 00:33:51,650 oherwydd bod y mwy o bobl i mi ychwanegu at y tabl myfyrwyr, 576 00:33:51,650 --> 00:33:54,730 y mwyaf ohonom wyf dechrau ychwanegu, y mwyaf o TFS wyf dechrau ychwanegu, 577 00:33:54,730 --> 00:33:58,320 rydym yn mynd i ddechrau i weld beth ddiswyddiadau yn y tabl hwn? 578 00:34:00,840 --> 00:34:06,020 >> Yeah. [Myfyrwyr] Gweld ei fod yn fyfyrwyr, rydym yn defnyddio yr un fath [Anghlywadwy] 579 00:34:06,020 --> 00:34:07,360 Mae'r un peth - Iawn, yn union. 580 00:34:07,360 --> 00:34:10,400 Felly, os 400 o bobl yn byw yn Mather, rhoi neu gymryd, 581 00:34:10,400 --> 00:34:15,000 yn y pen draw y tabl hwn yn mynd i gael 400 rhesi sy'n dweud "Mather," "Mather," 582 00:34:15,000 --> 00:34:16,590 "Mather," "Mather," "Mather." 583 00:34:16,590 --> 00:34:19,820 Rydym yn gwastraffu pob un o'r rhain bytes, ac mae 'na ychydig o siopau bwyd parod yno. 584 00:34:19,820 --> 00:34:23,080 1, mae achos gornel crazy lle os bydd rhywun yn talu llawer o arian 585 00:34:23,080 --> 00:34:25,949 ac yn ailenwi Mather, rydym yn awr yn rhaid i ni newid ein tabl cronfa ddata gyfan. 586 00:34:25,949 --> 00:34:29,730 Nid yw hynny'n mynd i ddigwydd yn aml, er Pfoho ei alw unwaith yn North House 15 mlynedd yn ôl, 587 00:34:29,730 --> 00:34:32,310 felly mae'n digwydd. Ond nid dyna'r cyfan y gymhellol. 588 00:34:32,310 --> 00:34:36,000 Mwy grymus na achos cornel fel bod o angen i ddiweddaru'r data mewn swmp 589 00:34:36,000 --> 00:34:41,150 ar gyfer cronfa ddata yn cael ei pam yr ydych yn storio MATHER eto ac eto ac eto ac eto? 590 00:34:41,150 --> 00:34:43,020 Mae hynny'n llawer o chars, 6 chars. 591 00:34:43,020 --> 00:34:45,500 Na allwn ni wneud hyd yn oed yn well na hynny, yn enwedig ar gyfer Pforzheimer? 592 00:34:45,500 --> 00:34:48,320 Yn sicr, gallwn wneud yn well na'r hyn a nifer o gymeriadau. 593 00:34:48,320 --> 00:34:51,790 Pam na dim ond cysylltu dynodwr unigryw gyda phob ty 594 00:34:51,790 --> 00:34:55,020 a siop, ar gyfer pob defnyddiwr? Felly, gadewch i ni geisio hyn. 595 00:34:55,020 --> 00:35:00,610 Yn hytrach na dim ond defnyddiwch y tabl myfyrwyr, gadewch i mi fyned i fyny i fy cronfa ddata ddarlith yma ar y chwith uchaf. 596 00:35:00,610 --> 00:35:02,600 Hysbysiad yma mae'n dweud Creu bwrdd. 597 00:35:02,600 --> 00:35:04,550 Gadewch i mi creu tabl newydd o'r enw tai. 598 00:35:04,550 --> 00:35:08,880 Y nifer o golofnau yn mynd i fod 2. Enter. 599 00:35:08,880 --> 00:35:11,200 Nawr rwyf wedi 2 gae. 600 00:35:11,200 --> 00:35:14,600 Rydw i'n mynd i alw hyn yn yr enw, ac mae'n mynd i fod yn varchar o hyd 255, 601 00:35:14,600 --> 00:35:18,770 >> ond mae hynny'n eithaf mympwyol. Gadewch i mi roi hyn i lawr yma gan gonfensiwn. 602 00:35:18,770 --> 00:35:22,840 Felly, rhowch ID yma. Gadewch i ni roi i bob tŷ dynodwr unigryw. 603 00:35:22,840 --> 00:35:25,360 Gadewch i ni roi i bob tŷ yn enw. 604 00:35:25,360 --> 00:35:30,980 Gadewch i ni nodi y bydd y dynodwr yn heb eu llofnodi yn unig gan gonfensiwn sy'n defnyddio dim ond rhifau positif. 605 00:35:30,980 --> 00:35:35,020 Gadewch i ni fynd ymlaen a rhowch hwn yn auto-cynyddiad maes am y tro. 606 00:35:35,020 --> 00:35:38,160 Ac a oes angen unrhyw beth arall? 607 00:35:38,160 --> 00:35:41,010 Gadewch i ni fynd yn ei flaen a chliciwch Cadw. 608 00:35:41,010 --> 00:35:42,480 Nawr mae gennyf ail dabl. 609 00:35:42,480 --> 00:35:45,860 Hysbysiad o'r neilltu fel hyn yw gorchymyn SQL ychydig yn cryptig 610 00:35:45,860 --> 00:35:50,280 y byddech wedi gorfod teipio â llaw os na ddefnyddir arf gweinyddol fel phpMyAdmin. 611 00:35:50,280 --> 00:35:51,990 Felly reswm arall rydym yn ei defnyddio. 612 00:35:51,990 --> 00:35:55,480 Mae'n fath rhyfeddol o ddefnyddiol o pedagogically oherwydd gallwch glicio o gwmpas 613 00:35:55,480 --> 00:36:01,050 a chyfrif i maes sut mae pethau'n gweithio drwy dim ond copïo a gludo yr hyn a wnaeth phpMyAdmin. 614 00:36:01,050 --> 00:36:04,150 Ond mae'r gorchymyn tabl Create yw'r hyn ei ddienyddio yn unig, a dyma fy tabl. 615 00:36:04,150 --> 00:36:11,370 Gadewch i mi fynd yn ei flaen yn awr ac yn defnyddio SQL amrwd yn hytrach na gorsymleiddio'r drwy glicio ar y tab Insert. 616 00:36:11,370 --> 00:36:15,040 Gadewch i mi yn RHOWCH I tai, 617 00:36:15,040 --> 00:36:22,230 ac rydw i'n mynd i ddweud yr enw y tŷ yn mynd i gael gwerth o 'Mather'. 618 00:36:22,230 --> 00:36:24,790 Dyna ni. Mae'r gystrawen yn ychydig yn fwy cryptig. 619 00:36:24,790 --> 00:36:26,660 Dyma'r enw y caeau ydym am i fewnosod. 620 00:36:26,660 --> 00:36:30,390 Mae'r rhain yn y gwerthoedd rydym am i fewnosod y meysydd hynny. Gadewch i mi cliciwch Go. 621 00:36:30,390 --> 00:36:34,410 1 rhes mewnosod gymerodd 0.02 eiliad. Gadewch i mi cliciwch Pori yn awr. 622 00:36:34,410 --> 00:36:42,020 >> Hysbysiad os wyf cliciwch Pori, mae Mather, y mae eu ID yw drwy awtomeiddio y rhif 1. 623 00:36:42,020 --> 00:36:45,000 Gadewch i mi wneud un arall. Gadewch i mi fynd i mewn i'r tab SQL. 624 00:36:45,000 --> 00:36:52,950 RHOWCH I dai. Mae enw'r ty yn mynd i gael gwerth o Pfoho ac yn y blaen. 625 00:36:52,950 --> 00:36:56,350 Ewch. A allaf ddal i wneud hyn eto ac eto ac eto. 626 00:36:56,350 --> 00:36:59,470 Neu os ydych yn diflasu gan ddefnyddio phpMyAdmin, gallwch ddefnyddio'r tab Insert 627 00:36:59,470 --> 00:37:01,000 ac nid rhaid i deipio'r SQL crai. 628 00:37:01,000 --> 00:37:04,690 Alli jyst daro allan yn gyflymach drwy deipio, er enghraifft, lledrwr, Mewnbynnu, 629 00:37:04,690 --> 00:37:07,610 ac yn awr os ydym cliciwch Pori, mae lledrwr gydag ID o 3. 630 00:37:07,610 --> 00:37:09,920 Felly mae hyn yn hyn a olygwn wrth auto-cynyddiad. 631 00:37:09,920 --> 00:37:12,280 Ond yn awr mae'n rhaid i ni atgyweiria rhywbeth yn fyfyrwyr. 632 00:37:12,280 --> 00:37:16,240 Yn myfyrwyr beth ddylai math data y maes tai yn awr yn? 633 00:37:16,240 --> 00:37:19,450 Dylai fod yn int, dde? 634 00:37:19,450 --> 00:37:23,950 Felly, y nod yma yw i ffactor allan, a elwir fel arall yn normaleiddio, mae'r tablau 635 00:37:23,950 --> 00:37:27,940 fel nad ydym yn storio gwybodaeth redundantly mewn unrhyw un o fy tablau. 636 00:37:27,940 --> 00:37:31,130 Ac eto, y llwybr yr ydym yn ar yma yn mynd i ddweud Mather, Mather, 637 00:37:31,130 --> 00:37:34,220 Mather, Mather, Pfoho, Pfoho, Pfoho, Pfoho, sy'n hynod ddi-waith 638 00:37:34,220 --> 00:37:36,240 o ran y wastraffus y chars. 639 00:37:36,240 --> 00:37:40,820 Felly, gadewch i mi fynd yn ei flaen ac yn newid hyn drwy glicio Strwythur, 640 00:37:40,820 --> 00:37:44,620 a gadewch i mi fynd yn ei flaen a gwirio oddi ar y cae tŷ, cliciwch ar Change, 641 00:37:44,620 --> 00:37:46,990 ac yn awr yr wyf i'n mynd i newid hyn i fod yn int. 642 00:37:46,990 --> 00:37:49,490 255 yn berthnasol bellach. 643 00:37:49,490 --> 00:37:54,010 Gadewch i mi fynd yn ei flaen a dweud mae hynny'n iawn os yw'n dal i fod NULL. Achub. 644 00:37:54,010 --> 00:37:55,870 Nawr myfyrwyr tabl wedi cael ei newid yn llwyddiannus, 645 00:37:55,870 --> 00:37:59,090 ac yn sylwi eto tŷ yn int. 646 00:37:59,090 --> 00:38:02,220 Fel o'r neilltu, anwybyddwch y rhif mewn cromfachau pan ddaw i ints. 647 00:38:02,220 --> 00:38:03,770 >> Mae hyn am resymau etifeddiaeth. 648 00:38:03,770 --> 00:38:06,920 Yn ôl yn y dydd pan nad oedd gennych GUIs, chi yn hytrach na wedi cael gorchymyn amgylchedd llinell, 649 00:38:06,920 --> 00:38:11,580 10 a 11 a bennir yn y drefn honno faint o gymeriadau dylech ddangos 650 00:38:11,580 --> 00:38:13,950 yn y ffenestr terfynell i mewn gwirionedd yn dangos caeau. 651 00:38:13,950 --> 00:38:19,150 Mae ganddo ddim i'w wneud gyda hyd did y maes gwirioneddol, fel y byddwn yn unig yn anwybyddu hynny am y tro. 652 00:38:19,150 --> 00:38:20,990 Nawr rhaid i mi fynd i mewn i'r tabl. 653 00:38:20,990 --> 00:38:24,610 Ac os David yn byw yn Mather, ni ddylai tŷ fod yn 0, 654 00:38:24,610 --> 00:38:27,350 sydd yn ddiofyn gwerth int agosaf at NULL. 655 00:38:27,350 --> 00:38:29,810 Dylai fyw yn fewnol 1. 656 00:38:29,810 --> 00:38:36,870 Gadewch i ni fympwyol dweud bod bywydau Mike yn Pfoho, felly ty rhif 2. 657 00:38:36,870 --> 00:38:40,160 Nawr mae fy tabl yn edrych ychydig yn fwy cryptig. 658 00:38:40,160 --> 00:38:41,960 Ond yn ystyried effeithlonrwydd. 659 00:38:41,960 --> 00:38:44,860 Rwyf nawr yn defnyddio dim ond 32 did i adnabod y tŷ, 660 00:38:44,860 --> 00:38:49,530 sy'n golygu mae dim ond 1 diffiniad canonaidd o fy nhŷ Mather a Pfoho 661 00:38:49,530 --> 00:38:52,090 a dyna yn y tabl tai. 662 00:38:52,090 --> 00:38:55,880 Felly, os ydw i am awr yn ailymuno y tablau hyn, yn meddwl amdano fel hyn. 663 00:38:55,880 --> 00:39:01,980 Mae gen i fy myfyrwyr bwrdd, ac ar yr ochr dde mae niferoedd hyn, 1 a 2. 664 00:39:01,980 --> 00:39:04,180 1 yn Mather, 2 yn Pfoho. 665 00:39:04,180 --> 00:39:08,580 Mae gennym niferoedd hynny yr un yn y tabl hwn arall, a elwir yn dai, 666 00:39:08,580 --> 00:39:11,020 1 a 2 a 3 ar gyfer y 3 o dai. 667 00:39:11,020 --> 00:39:14,990 Yr hyn yr ydym yn awr yn dymuno ei wneud yw cael y gallu yn cod, PHP a SQL, 668 00:39:14,990 --> 00:39:18,800 i ddatrys y ailymuno tablau hyn, lle os yw'r rhain yn y myfyrwyr ac mae'r rhain yn y tai, 669 00:39:18,800 --> 00:39:22,050 rydym am i rhywsut eu cyfuno fel bod 1 llinell i fyny gyda 1, 670 00:39:22,050 --> 00:39:25,670 2 llinellau i fyny gyda 2, ac fel y gallwn chyfrif i maes lle mae David 671 00:39:25,670 --> 00:39:28,000 a lle mae Mike a lle mae pawb arall yn byw. 672 00:39:28,000 --> 00:39:31,850 I wneud hyn, gallwn gyflawni ymholiad SQL fel y canlynol. 673 00:39:31,850 --> 00:39:40,470 SELECT * O myfyrwyr YMUNO tai AR - 674 00:39:40,470 --> 00:39:43,000 Ac yn awr yr hyn y caeau ydym ni eisiau ymuno ar? 675 00:39:43,000 --> 00:39:49,520 Felly students.house = houses.id. 676 00:39:49,520 --> 00:39:54,150 >> Mae cryptic ychydig, ond mae hyn yn golygu rhan llythrennol creu tabl newydd dros dro 677 00:39:54,150 --> 00:39:56,690 dyna'r canlyniad ymuno â myfyrwyr a thai. 678 00:39:56,690 --> 00:40:00,340 A sut ydych chi eisiau i gyfuno flaenau fy mysedd yma? 679 00:40:00,340 --> 00:40:05,280 Gosod 'maes tai gyfartal i'r tai' y myfyrwyr maes ID. 680 00:40:05,280 --> 00:40:10,220 Ac os wyf cliciwch nawr Ewch, i mi gael yn ôl yn union beth oeddwn yn gobeithio. 681 00:40:10,220 --> 00:40:15,890 David yn Mather, Mike yn Pfoho, ac yr wyf hefyd yn gweld y dynodwyr unigryw. 682 00:40:15,890 --> 00:40:18,640 Ond y pwynt yw nawr mae gen i dabl cyflawn. 683 00:40:18,640 --> 00:40:23,020 Ac felly y cludfwyd yma am pset 7 neu yn wir ar gyfer y prosiect terfynol: 684 00:40:23,020 --> 00:40:25,830 Os ydych yn dod o hyd eich bod yn storio unrhyw ddarn o wybodaeth redundantly, 685 00:40:25,830 --> 00:40:28,850 boed yn dŷ, efallai ei fod yn ddinas, y wladwriaeth, a ZIP 686 00:40:28,850 --> 00:40:32,050 lle gall ZIP fel arfer ond nid bob amser yn cael ei ddefnyddio fel dynodwr unigryw, 687 00:40:32,050 --> 00:40:35,810 ydynt yn mynd drwy'r ymarfer yn feddyliol ac yna gyda rhywbeth fel phpMyAdmin 688 00:40:35,810 --> 00:40:40,660 ffactoreiddio fod data cyffredin oherwydd yn enwedig gan fod eich gwefan yn cael mwy ddefnyddio'n dda 689 00:40:40,660 --> 00:40:45,440 ac yn fwy poblogaidd, dyma sut y byddwch yn gwneud yn siwr bod popeth yn gyflym super, 690 00:40:45,440 --> 00:40:51,930 trwy roi y gronfa ddata awgrymiadau o ran unigryw ag y bo modd. 691 00:40:51,930 --> 00:40:53,860 Dyna oedd llawer. 692 00:40:53,860 --> 00:40:59,010 Unrhyw gwestiynau? Mae pob hawl. Gadewch i ni gymryd seibiant 5-munud yno ac regroup. 693 00:41:01,600 --> 00:41:03,540 Mae pob hawl. 694 00:41:03,540 --> 00:41:08,680 Mae'r canlynol yn enghraifft a ddefnyddiwyd rai blynyddoedd yn ôl pan fyddaf yn cymryd CS161, 695 00:41:08,680 --> 00:41:10,960 sef y dosbarth systemau gweithredu yn y coleg 696 00:41:10,960 --> 00:41:15,160 sydd yn adnabyddus am fod yn anhygoel ond mae llawer crazy o waith, 697 00:41:15,160 --> 00:41:19,810 ac mae'n canolbwyntio mewn gwirionedd ar rai o'r problemau lefel isel sy'n codi mewn systemau gweithredu 698 00:41:19,810 --> 00:41:22,700 a hefyd hyd yn oed yn y byd o gronfeydd data. 699 00:41:22,700 --> 00:41:27,040 >> Roedd y stori a ddywedwyd gan fy athro, Margo Seltzer, y flwyddyn honno oedd fel a ganlyn. 700 00:41:27,040 --> 00:41:30,990 Tybiwch fod gennych oergell dorm bach i chi a'ch roommate 701 00:41:30,990 --> 00:41:34,030 ac mae'r ddau ohonoch wir yn hoffi llaeth. 702 00:41:34,030 --> 00:41:36,360 Felly, byddwch yn dod adref o'r diwrnod un dosbarth, mae eich roommate nid yw eto yno, 703 00:41:36,360 --> 00:41:39,650 byddwch yn agor yr oergell, a ydych yn sylweddoli, "O damn, rydym yn allan o laeth." 704 00:41:39,650 --> 00:41:42,070 Felly, byddwch yn cau yr oergell, byddwch yn cerdded ar draws y stryd i CVS 705 00:41:42,070 --> 00:41:45,830 a chael yn y llinellau hir yn gynyddol i brynu ychydig o laeth ar CVS. 706 00:41:45,830 --> 00:41:48,470 Yn y cyfamser, eich roommate yn dod adref o'i ddosbarth, 707 00:41:48,470 --> 00:41:51,690 dod i mewn i'r ystafell, yn agor yr oergell wir eisiau ychydig o laeth, 708 00:41:51,690 --> 00:41:54,130 agor yr oergell a, "Damn, dim llaeth." 709 00:41:54,130 --> 00:41:57,890 Felly, ef neu hi yn dod i ben yr oergell, cerdded allan y drws, ac yn mynd i Parc Busnes Awyrofod 710 00:41:57,890 --> 00:42:00,910 neu yn rhywle ar wahân i CVS lle nad ydych chi'n mynd i daro i mewn i bob eraill 711 00:42:00,910 --> 00:42:02,790 i fynd i gael ychydig o laeth. 712 00:42:02,790 --> 00:42:04,820 Wrth gwrs, ychydig funudau yn ddiweddarach, y ddau ohonoch fynd yn ôl adref 713 00:42:04,820 --> 00:42:07,740 ac yn awr ydych yn cael llaeth dwywaith cymaint ag y byddwch mewn gwirionedd yn eisiau. 714 00:42:07,740 --> 00:42:10,670 Ac yn cael llaeth, yn awr mae'n mynd i fynd drwg oherwydd eich bod yn hoffi llaeth 715 00:42:10,670 --> 00:42:14,200 ond nad ydych yn wir yn hoffi llaeth, felly, yn awr mae gennych ormod o laeth, felly mae'n mynd i sur. 716 00:42:14,200 --> 00:42:16,830 Mae hwn yn ofnadwy, sefyllfa ofnadwy. 717 00:42:16,830 --> 00:42:22,920 Beth allai fod wedi datrys y sefyllfa anodd pe baech yn y cartref roommate cyntaf? Ydw. 718 00:42:22,920 --> 00:42:25,970 [Myfyrwyr] Dylech fod wedi gadael nodyn. [Chwerthin] 719 00:42:25,970 --> 00:42:28,090 Da. Dylech fod wedi gadael nodyn. 720 00:42:28,090 --> 00:42:32,320 Dylech fod wedi rhoi nodyn Post-it neu fel dweud, "Gone am laeth," 721 00:42:32,320 --> 00:42:36,830 ac yna eich roommate fyddai cysyniadol wedi cael eu cloi allan mewn gwirionedd yn gwneud hynny. 722 00:42:36,830 --> 00:42:38,010 Neu gallech fynd gam ymhellach 1. 723 00:42:38,010 --> 00:42:41,060 Gallech llythrennol cloi'r oergell gyda rhyw fath o clo, 724 00:42:41,060 --> 00:42:44,870 ac yn awr bydd eich roommate yn llythrennol yn cael ei gloi allan o'r oergell. 725 00:42:44,870 --> 00:42:48,520 Os ydym yn cyffredinoli yn ôl i raglennu, 726 00:42:48,520 --> 00:42:51,610 gallwch chi bron yn meddwl am yr oergell fel rhyw fath o amrywiadwy neu strwythur, 727 00:42:51,610 --> 00:42:53,500 rhyw fath o gynhwysydd am wybodaeth. 728 00:42:53,500 --> 00:42:58,290 Y broblem sylfaenol yma yw bod y ddau ohonoch yn cael archwilio 729 00:42:58,290 --> 00:43:02,370 neu ddarllen y cyflwr y strwythur data, 730 00:43:02,370 --> 00:43:08,050 ond eich gweld ar adegau gwahanol ac eto ddau ohonoch gwneud penderfyniad 731 00:43:08,050 --> 00:43:11,920 yn seiliedig ar gyflwr y byd ar y rhai eiliadau gwahanol mewn pryd. 732 00:43:11,920 --> 00:43:15,570 Felly pe baech wedi cloi yr oergell, byddech wedi o leiaf osgoi eich roommate 733 00:43:15,570 --> 00:43:19,070 o fod wedi wedi gallu i archwilio cyflwr y byd, 734 00:43:19,070 --> 00:43:22,530 felly ni allai ef neu hi wedi gwneud y penderfyniad hwnnw. 735 00:43:22,530 --> 00:43:25,780 Felly, cronfeydd data, gan ei fod yn troi allan, yn cael y broblem hon yn gyson. 736 00:43:25,780 --> 00:43:31,050 >> Gadewch i ni weld os allwn adeiladu senario. 737 00:43:31,050 --> 00:43:34,310 Tybiwch eich bod yn fath o guy gwael ac yr ydych yn mynd i Bank of America 738 00:43:34,310 --> 00:43:37,950 neu un o'r llefydd eraill yn y sgwâr sydd â cwpl ATMs ochr yn ochr, 739 00:43:37,950 --> 00:43:41,200 a rhywsut i chi cyfrifedig gwybod sut i ddyblygu cerdyn ATM - nid yw pob bod anodd. 740 00:43:41,200 --> 00:43:42,730 Mae'n dim ond stribed magnetig. 741 00:43:42,730 --> 00:43:45,180 Ac felly yr hyn yr ydych am geisio ei wneud yw chwarae'r gêm hon 742 00:43:45,180 --> 00:43:49,060 lle byddwch yn rhoi 1 cerdyn i 1 peiriant, un arall cerdyn yn y peiriant arall, 743 00:43:49,060 --> 00:43:51,980 ac rydych yn y bôn am geisio codi arian ar yr un pryd, 744 00:43:51,980 --> 00:43:54,930 oherwydd dychmygu y stori yn mynd fel a ganlyn. 745 00:43:54,930 --> 00:43:57,350 Mae'r peiriant ar y chwith yn cymryd eich cerdyn a'ch PIN, 746 00:43:57,350 --> 00:44:00,240 ac yna dweud, "Rhowch i mi $ 100." 747 00:44:00,240 --> 00:44:04,790 Mae'r ATM yn cael ei raglennu yn gyntaf i wneud dethol ar ei gronfa ddata neu eu cyfwerth arnoch - 748 00:44:04,790 --> 00:44:10,780 beth bynnag gronfa ddata mae'n defnyddio - i weld y mae hyn yn ddefnyddiwr gael o leiaf $ 100 yn ei gyfrif? 749 00:44:10,780 --> 00:44:16,180 Os felly, yna boeri allan y $ 100 a $ 100 thynnu oddi ar eu cydbwysedd. 750 00:44:16,180 --> 00:44:20,470 Ond wrth gwrs, os oes peiriannau lluosog yma neu ffyrdd lluosog o arolygu 751 00:44:20,470 --> 00:44:23,560 y cyflwr y byd, y vault banc, i weld faint o arian sydd gennych, 752 00:44:23,560 --> 00:44:26,780 Mae'n debyg mai dim ond trwy hap y peiriant ar y chwith a'r dde 753 00:44:26,780 --> 00:44:30,140 ddau yn gofyn y cwestiwn hwnnw ar hyn o bryd yn fras yr un mewn pryd. 754 00:44:30,140 --> 00:44:34,160 >> A gall hyn yn sicr yn digwydd. Peiriannau ATM yn cyfrifiaduron y dyddiau hyn. 755 00:44:34,160 --> 00:44:37,670 Felly, os y peiriant ar y chwith yn dweud, "Oes, mae gennych o leiaf $ 100," 756 00:44:37,670 --> 00:44:42,150 yn y cyfamser y peiriant ar y dde yn dweud, "Oes, mae gennych o leiaf $ 100," 757 00:44:42,150 --> 00:44:47,420 yna y ddau ohonynt ymlaen i orffen eu rhaglenni ac mewn gwirionedd yn boeri allan y $ 100 758 00:44:47,420 --> 00:44:50,820 a dweud, "Yn y gorffennol oedd gennych $ 200." 759 00:44:50,820 --> 00:44:54,890 "Gadewch i mi ddiweddaru'r y newidyn i yn awr yn $ 100 ar ôl yn y cyfrif." 760 00:44:54,890 --> 00:44:58,780 Ond os yw'r ddau ohonynt wedi gwirio balans eich cyfrif ac wedi canfod ei fod yn $ 200 761 00:44:58,780 --> 00:45:02,000 ac mae'r ddau ohonynt wedyn yn gwneud y math a tua 200 - 100, 762 00:45:02,000 --> 00:45:06,990 y peiriannau wedi allai boeri allan ddau biliau $ 100 ym mhob peiriant, 763 00:45:06,990 --> 00:45:11,360 ond maent wedi diweddaru dim ond eich swm balans cyfrif i fod yn $ 100. 764 00:45:11,360 --> 00:45:15,130 Mewn geiriau eraill, rydych chi wedi eu cymryd allan $ 200, ond oherwydd eu bod yn arolygu cyflwr y byd 765 00:45:15,130 --> 00:45:18,840 ar yr un pryd ac yna gwneud penderfyniad ar sail y gwerth hwnnw, 766 00:45:18,840 --> 00:45:21,930 nad ydyn nhw'n gwneud y math cywir yn y pen draw. 767 00:45:21,930 --> 00:45:25,520 Felly, mewn sefyllfa banc yn rhy ydych wir eisiau i gael rhyw fath o cloi allan 768 00:45:25,520 --> 00:45:28,450 fel bod cyn gynted ag y byddwch wedi edrych ar y cyflwr rhai newidyn 769 00:45:28,450 --> 00:45:31,220 mae hynny'n bwysig iawn, fel eich balans cyfrif, 770 00:45:31,220 --> 00:45:36,070 peidiwch â gadael i unrhyw un arall wneud penderfyniadau ar sail hynny hyd nes eich bod yn gwneud eich gwneud beth, 771 00:45:36,070 --> 00:45:38,920 lle yn yr achos hwn chi yw'r ATM ar y chwith. 772 00:45:38,920 --> 00:45:41,160 Lock pawb arall allan. 773 00:45:41,160 --> 00:45:44,650 Gallwch ei gyflawni mewn gwirionedd yr effaith hon mewn dwy ffordd wahanol. 774 00:45:44,650 --> 00:45:48,660 >> Y ffordd symlaf i mewn MySQL yn llinell o SQL a roesom i chi 775 00:45:48,660 --> 00:45:52,030 yn y set problem fanyleb sy'n edrych yn union fel hyn. 776 00:45:52,030 --> 00:45:57,420 Mewnosod yn y tabl - beth bynnag fe'i gelwir - yn id, yn symbol, a chyfran, a nifer y cyfrannau, 777 00:45:57,420 --> 00:45:59,660 y gwerthoedd canlynol, er enghraifft. 778 00:45:59,660 --> 00:46:03,370 Os nad ydych wedi darllen y fanyleb eto, mae hyn yn enghraifft yn ymwneud â sut rydych chi'n mynd ati i 779 00:46:03,370 --> 00:46:07,340 prynu 10 cyfran o'r stoc hwn ceiniog am Arlywydd Skroob, 780 00:46:07,340 --> 00:46:10,340 ID defnyddiwr y mae ei digwydd i fod yn rhif 7? 781 00:46:10,340 --> 00:46:14,070 Mae hyn yn dweud RHOWCH YN fwrdd y id canlynol, symbol, a nifer y cyfrannau 782 00:46:14,070 --> 00:46:18,200 o 7, 'DVN.V', a 10. 783 00:46:18,200 --> 00:46:21,510 Ond - ond, ond, ond - yr ail linell yn un pwysig. 784 00:46:21,510 --> 00:46:26,310 AR rhannu DIWEDDARIAD ALLWEDDOL DYBLYG = cyfranddaliadau + GWERTHOEDD (cyfranddaliadau). 785 00:46:26,310 --> 00:46:28,350 Felly, yn gwbl cryptic-edrych ar yr olwg gyntaf. 786 00:46:28,350 --> 00:46:31,990 Ond y ffaith bod y SQL query, er ei fod yn lapio ar 2 llinellau, 787 00:46:31,990 --> 00:46:35,920 yw 1 ymholiad hir, mae'n golygu ei fod yn atomig 788 00:46:35,920 --> 00:46:41,000 yn yr ystyr y bydd ymholiad hwn naill ai gael eu gweithredu i gyd gyda'i gilydd neu ddim o gwbl. 789 00:46:41,000 --> 00:46:45,100 Ac yn ôl y diffiniad o MySQL, dyna sut y maent yn gweithredu ymholiad hwn. 790 00:46:45,100 --> 00:46:51,010 Mae gan ddiffiniad yn y llawlyfr gwarantu i weithredu i gyd ar unwaith neu ddim o gwbl. 791 00:46:51,010 --> 00:46:54,020 Y cymhelliad ar gyfer hyn fel a ganlyn. 792 00:46:54,020 --> 00:46:58,540 Os yn yr achos hwn yr ydych yn ceisio prynu 10 cyfran o stoc, 793 00:46:58,540 --> 00:47:02,260 mae'n fath o stori un fath â'r llaeth, mae'n fath o stori un fath â'r ATM. 794 00:47:02,260 --> 00:47:04,970 >> Os ydych yn gwneud y camgymeriad o ddefnyddio'r gystrawen 795 00:47:04,970 --> 00:47:09,610 ond yn hytrach yn dewis o'r gronfa ddata i weld faint o gyfranddaliadau y stoc ceiniog 796 00:47:09,610 --> 00:47:13,750 yn Llywydd Skroob gael, ac mae'n debyg fod ganddo 10 cyfran, 797 00:47:13,750 --> 00:47:19,330 ac yna rhai eiliad yn ddiweddarach rydych wedyn yn gwneud datganiad UPDATE, 798 00:47:19,330 --> 00:47:24,810 sy'n datganiad arall yn SQL sy'n dweud mynd yn ei flaen ac ychwanegu 10 mwy o gyfranddaliadau 799 00:47:24,810 --> 00:47:28,700 i ei 10 ar hyn o bryd fel bod yn ddelfrydol mae'r cyfanswm yn 20, 800 00:47:28,700 --> 00:47:33,490 y broblem yw bod mewn systemau cronfa ddata heddiw ac oherwydd mewn cyfrifiaduron heddiw 801 00:47:33,490 --> 00:47:35,990 gennych proseswyr lluosog, creiddiau lluosog - 802 00:47:35,990 --> 00:47:38,920 mewn geiriau eraill, gall cyfrifiaduron yn llythrennol yn gwneud pethau lluosog ar unwaith - 803 00:47:38,920 --> 00:47:44,270 does dim sicrwydd bod eich SELECT a'ch DIWEDDARIAD yn yr achos hwn 804 00:47:44,270 --> 00:47:46,150 yn mynd i ddigwydd gefn wrth gefn. 805 00:47:46,150 --> 00:47:49,140 Felly byddai senario gwael fod i chi wneud y SELECT 806 00:47:49,140 --> 00:47:51,670 i weld faint o gyfrannau o stoc hwn geiniog yn Skroob gael, 807 00:47:51,670 --> 00:47:54,710 ac yna dim ond drwy siawns arall ymholiad cronfa ddata yn cael ei gyflawni - 808 00:47:54,710 --> 00:47:57,740 efallai ei Skroob mewn ffenestr arall porwr ceisio prynu 10 cyfran 809 00:47:57,740 --> 00:48:00,700 mewn ffenestr arall yn gyfan gwbl, yn debyg iawn i'r ATM - 810 00:48:00,700 --> 00:48:05,410 ac yn debyg bod un arall yn cael ymholiad rhwng SELECT a'r DIWEDDARAF. 811 00:48:05,410 --> 00:48:10,210 Gallai fod yn wir bod Skroob awr yn colli rhai nifer y cyfrannau 812 00:48:10,210 --> 00:48:14,340 oherwydd broses arall yn arolygu cyflwr ei fyd, 813 00:48:14,340 --> 00:48:17,800 neu ei fod yn cael mwy o gyfranddaliadau nag y dylai fod wedi. 814 00:48:17,800 --> 00:48:23,250 Ni fyddwn yn mynd i mewn i'r manylion yn union yr hyn y byddai rhai llinellau stori arbennig fod, 815 00:48:23,250 --> 00:48:28,380 ond y pwynt yw os ydych yn rhaid i chi wirio gwerth newidynnau ac wedyn yn gwneud penderfyniad, 816 00:48:28,380 --> 00:48:32,500 os oes risg o rywun arall yn gwneud rhywbeth yn y canol y 2 datganiadau, 817 00:48:32,500 --> 00:48:36,220 fel y gall ddigwydd mewn systemau multiprocessor, yn Multicore systemau, 818 00:48:36,220 --> 00:48:41,220 cyfrifiaduron gyda'r gallu i wneud pethau lluosog ar unwaith, gall pethau drwg yn digwydd 819 00:48:41,220 --> 00:48:44,530 cyfrifon banc fel ei ddebydu yn anghywir, prynu llaeth dwywaith cymaint, 820 00:48:44,530 --> 00:48:46,730 neu yn yr achos hwn y nifer anghywir o gyfranddaliadau. 821 00:48:46,730 --> 00:48:48,370 Ond mae ffordd haws i feddwl am hyn. 822 00:48:48,370 --> 00:48:53,290 >> Mae'n troi allan bod SQL hefyd yn cefnogi, os byddwch yn ffurfweddu eich bwrdd yn gywir, 823 00:48:53,290 --> 00:48:56,920 rhywbeth o'r enw trafodion, y byddwn yn dadlau mewn gwirionedd yn haws i ddeall 824 00:48:56,920 --> 00:49:00,650 na hyn, ond nid yw'n 1-leinin, felly mae'n mewn gwirionedd ychydig yn cymryd mwy o ran. 825 00:49:00,650 --> 00:49:04,960 Nid oes yn llythrennol datganiad yn y SQL a elwir yn CYFLAWNI'R START. 826 00:49:04,960 --> 00:49:08,300 Yn union fel mae SELECT, Y NEWYDDION DIWEDDARAF, mewnosod, dileu, a YMUNO a bagad o bobl eraill, 827 00:49:08,300 --> 00:49:10,970 mae geiriau allweddol fel CYFLAWNI'R START. 828 00:49:10,970 --> 00:49:13,560 A beth ydych yn ei wneud wedyn yng nghyd-destun pset 7 - 829 00:49:13,560 --> 00:49:17,270 Nid oes rhaid i chi wneud hyn ar gyfer pset 7; mae'n ymwrthod yn benodol fel nad oes angen, 830 00:49:17,270 --> 00:49:18,830 ond ar gyfer prosiectau terfynol gall fod yn ddefnyddiol - 831 00:49:18,830 --> 00:49:22,820 os ydych yn galw ymholiad o CYFLAWNI'R START ac yna un arall ymholiad 832 00:49:22,820 --> 00:49:25,620 ac yna un arall ymholiad ac yna un arall, un arall, ac un arall, 833 00:49:25,620 --> 00:49:31,860 Ni fydd ymholiadau hynny mewn gwirionedd yn cael ei weithredu hyd nes y byddwch yn ffonio y datganiad SQL YMRWYMO, 834 00:49:31,860 --> 00:49:37,220 ac ar yr adeg, boed 2 ddatganiad neu 20 ddatganiadau, byddant i gyd yn cael eu gweithredu ar unwaith, 835 00:49:37,220 --> 00:49:42,770 sy'n golygu na all unrhyw un arall yn ddamweiniol prynu llaeth gormod neu ddebyd gormod o arian 836 00:49:42,770 --> 00:49:46,340 neu brynu cyfranddaliadau gormod o oherwydd bydd eich holl ymholiadau gweithredu 837 00:49:46,340 --> 00:49:48,410 gefn wrth gefn wrth gefn wrth gefn. 838 00:49:48,410 --> 00:49:51,580 Ac mae hyn yn super bwysig, yn enwedig pan fyddwch yn gwneud rhywbeth fel hyn. 839 00:49:51,580 --> 00:49:54,900 Mae hyn yn enghraifft mympwyol sy'n dweud gadewch i ni roi'r wybodaeth ddiweddaraf i'r cyfrif banc 840 00:49:54,900 --> 00:50:00,200 drwy osod cydbwysedd cyfartal i gydbwysedd - $ 1000 os yw'r rhif y cyfrif yw 2. 841 00:50:00,200 --> 00:50:04,260 Ac yna y datganiad ail nawr gadewch i adneuo fod $ 1000 842 00:50:04,260 --> 00:50:07,310 i rywun arall cyfrif banc eu cyfrif rhif yw 1. 843 00:50:07,310 --> 00:50:10,400 >> Mewn geiriau eraill, mae hyn yn enghraifft berffaith o ble rydych am wneud yn siŵr 844 00:50:10,400 --> 00:50:13,590 bod y ddau o'r datganiadau hyn yn digwydd neu ddim o gwbl 845 00:50:13,590 --> 00:50:15,450 oherwydd fel arall y cwsmer yn mynd i gael sgriwio 846 00:50:15,450 --> 00:50:17,670 a ydych yn mynd i gymryd eu harian a pheidio gadael yn rhywle arall, 847 00:50:17,670 --> 00:50:20,470 neu'r banc yn mynd i gael sgriwio ble rydych chi'n mynd i ollwng yr arian 848 00:50:20,470 --> 00:50:23,140 ond nid mewn gwirionedd yn tynnu oddi wrth gyfrif y defnyddiwr. 849 00:50:23,140 --> 00:50:25,810 Felly rydych chi am y ddau ohonynt i weithredu gyda'i gilydd. 850 00:50:25,810 --> 00:50:29,140 Felly mynd i mewn i'r trafodion byd. 851 00:50:29,140 --> 00:50:31,360 Felly dyna rhywbeth i gadw yng nghefn eich meddwl, 852 00:50:31,360 --> 00:50:34,710 nid yn gymaint at ddibenion dim ond prosiect terfynol, 853 00:50:34,710 --> 00:50:36,700 ond os ydych chi am fynd â'ch prosiect terfynol yn rhywle, 854 00:50:36,700 --> 00:50:39,040 os ydych am i ddechrau rhai cwmni o'i amgylch, 855 00:50:39,040 --> 00:50:41,270 os ydych am i ddatrys problem ryw grŵp myfyriwr ar y campws 856 00:50:41,270 --> 00:50:45,210 ac mewn gwirionedd yn cael byw, gwefan weithredol, mae'r rhain yn y math o namau cynnil a all godi 857 00:50:45,210 --> 00:50:49,480 os nad ydych yn llwyr meddwl beth all ddigwydd os 2 o bobl 858 00:50:49,480 --> 00:50:54,190 yn ceisio cael mynediad at eich gwefan ar hyn o bryd yn llythrennol un pryd, 859 00:50:54,190 --> 00:50:56,890 lle gallai eu ymholiadau fel arall yn cael eu cydblethu. 860 00:50:58,840 --> 00:51:01,420 >> Yn barod ar gyfer rhai JavaScript, mae teaser ohono? 861 00:51:01,420 --> 00:51:04,320 Mae hyn yn ein hiaith olaf ar gyfer y semester. Mae pob hawl. 862 00:51:04,320 --> 00:51:09,940 Diolch byth, JavaScript yn edrych yn iawn, iawn, yn debyg iawn i'r 2 iaith, C a PHP, 863 00:51:09,940 --> 00:51:11,140 ydym wedi ei wneud hyd yn hyn. 864 00:51:11,140 --> 00:51:14,340 Does dim JavaScript yn pset 7, ond ei fod yn offeryn hynod ddefnyddiol 865 00:51:14,340 --> 00:51:18,840 pan ddaw i wneud ar y we prosiectau terfynol neu mewn gwirionedd dim ond rhaglennu ar y we yn fwy cyffredinol. 866 00:51:18,840 --> 00:51:20,950 Felly trosolwg cyflym o'r hyn a elwir DOM. 867 00:51:20,950 --> 00:51:23,600 Dyma dudalen we syml super sydd wir yn unig yn dweud helo, byd 868 00:51:23,600 --> 00:51:25,970 yn y teitl ac yn y corff. 869 00:51:25,970 --> 00:51:29,270 Gan fod y bant wedi bod yn awgrymu ers peth amser, 870 00:51:29,270 --> 00:51:31,380 yn wir mae hierarchaeth i dudalennau gwe. 871 00:51:31,380 --> 00:51:34,220 Gallwn dynnu hyn snippet un o HTML fel coeden, 872 00:51:34,220 --> 00:51:37,470 meddwl yn ôl at ein trafodaethau am strwythurau data yn C, fel a ganlyn. 873 00:51:37,470 --> 00:51:40,710 Mae gennyf rywfaint o nod gwraidd arbennig o'r enw y nod ddogfen, 874 00:51:40,710 --> 00:51:43,650 a byddwn yn gweld y analog o hyn yn JavaScript mewn dim ond hyn o bryd. 875 00:51:43,650 --> 00:51:48,330 Mae'r plentyn cyntaf a phlant yn unig o hynny yn yr achos hwn yw y tag HTML. 876 00:51:48,330 --> 00:51:49,880 Does dim mapio uniongyrchol i'r doctype. 877 00:51:49,880 --> 00:51:53,170 Dyna beth arbennig, felly dylem ei hanwybyddu pan ddaw i hyn DOM, 878 00:51:53,170 --> 00:51:55,810 y goeden hon Gwrthrych Ddogfen Model. 879 00:51:55,810 --> 00:51:59,530 Sylwch fod y tag HTML yr wyf wedi darlunio fympwyol fel petryal, 880 00:51:59,530 --> 00:52:02,890 Mae 2 o blant: pen a chorff. 881 00:52:02,890 --> 00:52:04,840 >> Mae'r rhai yn cael eu tynnu yn yr un modd fel petryalau. 882 00:52:04,840 --> 00:52:08,970 Mae'n ystyrlon ddarluniadol y pen yn ar ochr chwith y corff. 883 00:52:08,970 --> 00:52:11,960 Y goblygiad yw bod pen yn gyntaf yn y goeden. 884 00:52:11,960 --> 00:52:14,910 Felly mae mewn gwirionedd yn archebu i goeden pan fyddwch yn tynnu fel hyn, 885 00:52:14,910 --> 00:52:17,460 er bod y siapiau a whatnot yn fympwyol. 886 00:52:17,460 --> 00:52:20,360 Pennaeth y cyfamser mae un plentyn o'r enw teitl, 887 00:52:20,360 --> 00:52:25,170 a theitl mewn gwirionedd wedi ei phlentyn ei hun, sef "helo, byd", 888 00:52:25,170 --> 00:52:32,210 yr wyf yn fwriadol yn tynnu fel hirgrwn yma i wneud yn ychydig yn wahanol i'r petryal. 889 00:52:32,210 --> 00:52:37,420 Mae'r petryalau yn elfennau, tra helo, byd sydd mewn gwirionedd yn nod testun. 890 00:52:37,420 --> 00:52:39,850 Felly, mae'n nod yn y goeden, ond mae'n fath gwahanol o nod 891 00:52:39,850 --> 00:52:41,730 felly tynnais fympwyol wahanol. 892 00:52:41,730 --> 00:52:45,000 Yn yr un modd mae corff yn cael blentyn o'r enw helo, byd yn ogystal, 893 00:52:45,000 --> 00:52:47,910 nod mor wahanol er eu bod yn gyd-ddigwyddiad yr un testun, 894 00:52:47,910 --> 00:52:52,100 ond yr wyf wedi tynnu gan ddefnyddio yr un siâp. Felly sy'n gofalu? 895 00:52:52,100 --> 00:52:56,820 Wel, beth sy'n braf am HTML yw ei fod yn cael y natur hierarchaidd. 896 00:52:56,820 --> 00:53:01,010 A beth braf am JavaScript ac yn enwedig llyfrgelloedd sydd ar gael am ddim 897 00:53:01,010 --> 00:53:07,120 ac yn boblogaidd fel jQuery, gallwch lywio strwythur y goeden fel rhyfeddol o hawdd. 898 00:53:07,120 --> 00:53:11,790 Unrhyw un o'r pethau a wnaethom yn C gyda awgrymiadau a choed tramwyo a recursing ar nodau 899 00:53:11,790 --> 00:53:15,300 plentyn chwith i blentyn dde, yn sydyn gallwn ddatrys o gymryd yn ganiataol 900 00:53:15,300 --> 00:53:19,450 fel rhyfeddol o ddadlennol os nad ychydig yn rhwystredig 901 00:53:19,450 --> 00:53:22,470 ond nid yw bron yn ffordd effeithiol i fynd ati i raglennu. 902 00:53:22,470 --> 00:53:24,470 Ac felly gyda'r ieithoedd hyn ar lefel uwch fel JavaScript 903 00:53:24,470 --> 00:53:28,340 byddwn yn gallu ymdopi goeden hon yn llawer mwy reddfol. 904 00:53:28,340 --> 00:53:30,430 >> Ac yn wir y gystrawen yn mynd i fod yn eithaf cyfarwydd. 905 00:53:30,430 --> 00:53:32,950 Os nad ydych erioed wedi gweld o'r blaen JavaScript, mae hyn yn gyfeiriad neis iawn 906 00:53:32,950 --> 00:53:35,910 oddi wrth y Folks Mozilla, y bobl sy'n gwneud Firefox, 907 00:53:35,910 --> 00:53:38,370 felly peidiwch â theimlo croeso i chi bori bod yn eich hwylustod. 908 00:53:38,370 --> 00:53:41,590 Beth fyddwch chi'n dod o hyd i - ac mae'r sleidiau yn union i'r hyn rydym yn defnyddio y diwrnod o'r blaen - 909 00:53:41,590 --> 00:53:44,030 yn yr un modd, prif mynd. 910 00:53:44,030 --> 00:53:47,010 Felly, pan fyddwch yn ysgrifennu rhaglen yn JavaScript, nid oes prif swyddogaeth. 911 00:53:47,010 --> 00:53:48,690 'Ch jyst ddechrau ysgrifennu cod. 912 00:53:48,690 --> 00:53:51,660 Ond mae gwahaniaeth allweddol rhwng JavaScript a C a PHP 913 00:53:51,660 --> 00:53:55,890 yw, er i C a PHP hyd yn hyn wedi cael eu gweithredu ochr y gweinydd 914 00:53:55,890 --> 00:53:59,180 gan y ddyfais wrth yr achos hwn neu yn fwy cyffredinol gan weinyddwr, 915 00:53:59,180 --> 00:54:04,270 JavaScript drwy ddyluniad yn cael ei gyflawni fel arfer gan porwr. 916 00:54:04,270 --> 00:54:08,440 Mewn geiriau eraill, efallai y byddwch yn ysgrifennu JavaScript cod, gan ein bod ar fin, 917 00:54:08,440 --> 00:54:13,080 ar weinydd yn y peiriant, ond eich bod yn cynnwys ymhlith eich HTML, ymysg eich CSS, 918 00:54:13,080 --> 00:54:16,100 ymhlith eich GIFs a'ch PNGs a'ch JPEG 919 00:54:16,100 --> 00:54:19,170 fel bod pan fydd y defnyddiwr yn ymweld eich dudalen ar y we, os ydych yn defnyddio JavaScript, 920 00:54:19,170 --> 00:54:21,770 y cod JavaScript yn dod o'r gweinydd i borwr, 921 00:54:21,770 --> 00:54:24,540 ac mae'n porwr sydd mewn gwirionedd yn weithredu. 922 00:54:24,540 --> 00:54:27,960 Felly, mae i hyn oblygiadau ystyrlon ar gyfer eiddo hyd yn oed deallusol. 923 00:54:27,960 --> 00:54:32,600 Mae'n fath o gwirion i hyd yn oed meddwl am ddiogelu eich eiddo deallusol pan ddaw i JavaScript cod 924 00:54:32,600 --> 00:54:37,560 oherwydd yn ôl natur yr iaith y mae'n cael ei weithredu fel arfer gyda'r ddwy porwr. 925 00:54:37,560 --> 00:54:40,360 >> Gallwch gymylu'r ei, sy'n golygu y gallwch ei wneud yn edrych yn crazy ac yn hyll 926 00:54:40,360 --> 00:54:45,400 heb gofod, enwau amrywiol ofnadwy, i'w gwneud yn anoddach i bobl i ddwyn eich IP, 927 00:54:45,400 --> 00:54:48,120 ond yr allwedd yw ei fod yn cael ei gyflawni ochr porwr. 928 00:54:48,120 --> 00:54:51,790 Hyd yn oed er fel ochr y gweinydd o'r neilltu gellir JavaScript cael ei ddefnyddio, 929 00:54:51,790 --> 00:54:54,480 yr achos defnydd mwyaf cyffredin ar hyn o bryd yn dal i fod ar y porwr. 930 00:54:54,480 --> 00:54:59,800 A dyma sut mae'n edrych. Dyma os-arall os-adeiladu arall yn union fel C, yn union fel PHP. 931 00:54:59,800 --> 00:55:02,420 Dyma mynegiad Boole pan fyddwch yn "neu" 2 pethau at ei gilydd. 932 00:55:02,420 --> 00:55:04,330 Dyma pan fyddwch yn "a" 2 pethau at ei gilydd. 933 00:55:04,330 --> 00:55:08,300 Dyma yw, ddatganiad switsh sydd yn debyg i PHP 934 00:55:08,300 --> 00:55:10,810 yn y gallwch newid ar wahanol fathau o werthoedd. 935 00:55:10,810 --> 00:55:15,180 Dolenni yr un modd yn gyfrifol am ddolenni yma, sydd wedi'u strwythuro yn union â'r hyn yr ydym wedi ei weld o'r blaen. 936 00:55:15,180 --> 00:55:18,110 Er dolennau, rydym wedi got wneud tra dolenni. 937 00:55:18,110 --> 00:55:20,290 Newidynnau, erioed mor ychydig yn wahanol. 938 00:55:20,290 --> 00:55:24,560 Rydych yn datgan newidynnau fel chi ei wneud yn PHP a C, 939 00:55:24,560 --> 00:55:27,860 ond yn yr un modd yn JavaScript deipio wan. 940 00:55:27,860 --> 00:55:32,730 Nid ydych yn pennu int neu arnofio neu linyn neu unrhyw beth fel 'na fel arfer. 941 00:55:32,730 --> 00:55:34,240 Gallwch nodi var. 942 00:55:34,240 --> 00:55:38,040 Nid oes rhaid i chi nodi var, ond mae ganddo oblygiadau os nad ydych yn ei wneud. 943 00:55:38,040 --> 00:55:42,000 Fel rheol, os byddwch yn hepgor var, ydych yn ddamweiniol greu newidyn byd-eang yn hytrach na lleol. 944 00:55:42,000 --> 00:55:46,420 Felly, gadewch i mi eich bod yn cynnig bron bob amser yn unig dweud var ac yna enw'r newidyn. 945 00:55:46,420 --> 00:55:48,740 Nid yw'n fath, dim ond var gyfer amrywiol. 946 00:55:48,740 --> 00:55:52,930 Byddai hyn yn enghraifft, boed yn 123 neu "helo, byd". 947 00:55:52,930 --> 00:55:58,910 Araeau yn bresennol a syntactically tebyg i PHP. 948 00:55:58,910 --> 00:56:03,690 Byddaf yn dweud rhifau var ac yna byddaf yn defnyddio cromfachau sgwâr eto i ddatgan newidyn 949 00:56:03,690 --> 00:56:08,870 mae ei fath yw amrywiaeth sydd y niferoedd penodol ynddo gwahanu gan atalnodau. 950 00:56:08,870 --> 00:56:11,740 Ac yna yn olaf, dyma'r unig un sydd wir yn edrych yn wahanol. 951 00:56:11,740 --> 00:56:16,700 Dwyn i gof bod yn PHP byddem wedi gweithredu arae cysylltiadol i fyfyriwr 952 00:56:16,700 --> 00:56:20,220 fel Zamyla a allai edrych fel hyn, lle y newidyn cael ei alw'n myfyrwyr. 953 00:56:20,220 --> 00:56:23,370 Mae'r cromfachau sgwâr yn golygu yma hon arae. 954 00:56:23,370 --> 00:56:28,500 >> Mae'r ffaith nad rwy'n ei ddefnyddio mynegeion rhifol ond llinynnau - id, ty, a'ch enw - 955 00:56:28,500 --> 00:56:30,990 golygu bod hwn yn arae cysylltiadol, 956 00:56:30,990 --> 00:56:34,490 ac mae'r rhain saethau gyda'r symbol hafal a braced ongl 957 00:56:34,490 --> 00:56:37,310 yn golygu bod y allweddol yw "id", y gwerth yw 1; 958 00:56:37,310 --> 00:56:39,310 yr allwedd yw "ty", mae'r gwerth yn Winthrop House; 959 00:56:39,310 --> 00:56:41,800 yr allwedd yw "enw", y gwerth yn Zamyla Chan. 960 00:56:41,800 --> 00:56:47,110 Felly mae 3 allweddi y tu mewn o hyn arae cysylltiadol, pob un ohonynt wedi ei werth ei hun. 961 00:56:47,110 --> 00:56:52,880 Rydym wedi gweld hynny yn pset 7, neu yn fuan bydd, yn JavaScript un syniad, 962 00:56:52,880 --> 00:56:55,220 ond mae'n mynd i edrych fel hyn. 963 00:56:55,220 --> 00:57:00,070 Myfyrwyr fel var - dim arwydd doler a dim sôn am fath o hyd ond var - 964 00:57:00,070 --> 00:57:05,860 gyfartal ac yna agor braces cyrliog oherwydd yn JavaScript pan fydd gennych parau gwerth allweddol, 965 00:57:05,860 --> 00:57:08,900 chi mewn gwirionedd yn defnyddio rhywbeth o'r enw gwrthrych. 966 00:57:08,900 --> 00:57:13,490 Ac efallai y rhai ohonoch a oedd yn cymryd APCS neu debyg gofio gwrthrychau o Java 967 00:57:13,490 --> 00:57:15,140 neu ieithoedd tebyg. 968 00:57:15,140 --> 00:57:17,880 Nid yw JavaScript yn Java, yn gyntaf oll. 969 00:57:17,880 --> 00:57:21,600 Roedd blynyddoedd dylunio penderfyniad bwriadol yn ôl i guro oddi ar rywbeth arall a oedd yn boblogaidd, 970 00:57:21,600 --> 00:57:25,640 ei enw, er nad oes ganddo perthynas sylfaenol i Java ei hun. 971 00:57:25,640 --> 00:57:31,490 JavaScript wedi gwrthrychau, ac rydych yn eu creu drwy gyfrwng y nodiant Brace cyrliog. 972 00:57:31,490 --> 00:57:36,710 Gwrthrychau yn JavaScript yn 'n bert lawer cyfateb i araeau cysylltiadol yn PHP 973 00:57:36,710 --> 00:57:40,030 pan ddaw i storio data y tu mewn ohonyn nhw. 974 00:57:40,030 --> 00:57:44,100 >> Ond gall hyd yn oed yn fwy pwerus yn JavaScript i chi gysylltu yn hawdd iawn swyddogaethau 975 00:57:44,100 --> 00:57:48,040 tu mewn gwrthrych, ac er y gallwch wneud hyn mewn ieithoedd eraill, 976 00:57:48,040 --> 00:57:50,040 mae'n eithaf patrwm cyffredin, fel y cawn ni weld. 977 00:57:50,040 --> 00:57:54,380 Yn fyr, mae hyn yn cynrychioli gwrthrych yn fyfyriwr, sydd yn arbennig o Zamyla, 978 00:57:54,380 --> 00:58:00,380 ac mae'n debyg gysyniadol, ychydig syntactically wahanol iawn i hyn. 979 00:58:00,380 --> 00:58:03,840 Gadewch i ni mewn gwirionedd yn defnyddio JavaScript mewn ffeil. 980 00:58:03,840 --> 00:58:05,570 Mae'n troi allan yna tag sgript. 981 00:58:05,570 --> 00:58:08,180 Rydym wedi gweld tag arddull ac rydym wedi gweld tagiau HTML eraill. 982 00:58:08,180 --> 00:58:11,510 Mae'r tag sgript mewn gwirionedd yn cynnwys rhai cod JavaScript. 983 00:58:11,510 --> 00:58:15,500 Gadewch i mi fynd i mewn i'r peiriant lle mae gennym rhywfaint o cod ffynhonnell ymlaen llaw-a wnaed. 984 00:58:15,500 --> 00:58:18,700 Nid wyf wedi postio eto ar y wefan, ond byddaf yn gwneud hynny ar ôl y dosbarth. 985 00:58:18,700 --> 00:58:21,770 Gadewch i ni agor yr un yma, blink.html. 986 00:58:21,770 --> 00:58:27,560 Yn ôl yn y 1990au, roedd llythrennol yn tag HTML a elwir yn y tag amrantiad, 987 00:58:27,560 --> 00:58:30,340 a dyma un o'r tagiau mwyaf rhyfeddol gorddefnyddio ar y Rhyngrwyd 988 00:58:30,340 --> 00:58:36,140 lle byddech yn ymweld â rhai 1990au arddull tudalen ar y we a dechrau gweld testun fflachio i chi fel hyn, 989 00:58:36,140 --> 00:58:39,810 canlyniadau'r tag ardalydd, a oedd wedi mynd testun fel hyn. 990 00:58:39,810 --> 00:58:45,070 Un o'r adegau prin lle mae'r byd wedi cytuno mewn gwirionedd ar safon ar y we, 991 00:58:45,070 --> 00:58:48,250 pawb ar draws y bwrdd ladd y tag Blink rai blynyddoedd yn ôl. 992 00:58:48,250 --> 00:58:52,860 Ond gallwn atgyfodi gyda JavaScript er mwyn dangos y pŵer sydd gennych 993 00:58:52,860 --> 00:58:56,660 pan fyddwch yn gallu ysgrifennu rhaglen tu mewn i dudalen we. 994 00:58:56,660 --> 00:59:00,240 Yn gyntaf gadewch i sgip dros y pethau newydd ac yn canolbwyntio yn unig ar yr hen. 995 00:59:00,240 --> 00:59:01,780 >> Dyma'r hen bethau yn yr enghraifft hon. 996 00:59:01,780 --> 00:59:06,350 Mae gen i, tag HTML a tag pen, a tag teitl. 997 00:59:06,350 --> 00:59:11,210 Yna, mae gen i tag corff yma gyda div, sy'n galw i gof yn unig yw is-adran hirsgwar y dudalen 998 00:59:11,210 --> 00:59:14,720 fy mod i wedi cael ID unigryw fympwyol o "cyfarch" i, 999 00:59:14,720 --> 00:59:18,320 yn unig felly mae gen i ffordd o unigryw cyfeirio ato, sydd â rhywfaint o destun syml iawn: 1000 00:59:18,320 --> 00:59:20,220 helo, y byd. 1001 00:59:20,220 --> 00:59:23,940 Nawr, gadewch i mi sgrolio i fyny i ben y ffeil a gweld beth sy'n newydd. 1002 00:59:23,940 --> 00:59:27,710 Y peth cyntaf sy'n atodol newydd yw'r tag sgript, 1003 00:59:27,710 --> 00:59:31,280 a thu mewn y tag sgript rhybudd yr wyf wedi datgan swyddogaeth. 1004 00:59:31,280 --> 00:59:34,610 I ddatgan swyddogaeth mewn JavaScript, eithaf tebyg i PHP, 1005 00:59:34,610 --> 00:59:37,930 yn llythrennol ysgrifennu swyddogaeth yna enw'r swyddogaeth, cromfachau, 1006 00:59:37,930 --> 00:59:40,400 ac efallai rhai dadleuon os bydd yn cymryd unrhyw. 1007 00:59:40,400 --> 00:59:43,510 Yna mae gen i fy brês cyrliog fel arfer, ac yn awr mae gennym rywfaint o cod ychydig yn newydd, 1008 00:59:43,510 --> 00:59:45,230 ond gadewch i ni weld beth mae hyn yn ei olygu. 1009 00:59:45,230 --> 00:59:48,670 Felly div var, mae hyn yn golygu rhoi i mi div elwir yn amrywiol. 1010 00:59:48,670 --> 00:59:50,530 Gallwn fod wedi galw ei foo, ond yr wyf eisiau iddo gael ei alw div 1011 00:59:50,530 --> 00:59:52,620 am resymau a fydd yn glir mewn eiliad. 1012 00:59:52,620 --> 00:59:57,480 Yna mae'n troi allan yn JavaScript - ac mae hyn yn JavaScript cod yn rhan annatod o fy nhudalen we - 1013 00:59:57,480 --> 01:00:01,760 mae newidyn byd-eang arbennig o ryw fath a elwir yn ddogfen. 1014 01:00:01,760 --> 01:00:04,780 JavaScript mewn gwirionedd yn iaith gwrthrych-oriented. 1015 01:00:04,780 --> 01:00:07,230 Ni fyddwn yn mynd i fanylder wrth 50 o ran yr hyn y mae hynny'n ei olygu, 1016 01:00:07,230 --> 01:00:11,180 ond am nawr yn gwybod bod gwrthrych yn 'n bert lawer fel strwythur. 1017 01:00:11,180 --> 01:00:14,740 Fel y gwelsom ffordd yn ôl pan fydd yn un o'r broblem cynharaf yn gosod 1018 01:00:14,740 --> 01:00:17,150 lle rydym yn rhoi llawer o wybodaeth mewn strwythur, 1019 01:00:17,150 --> 01:00:21,330 yn yr un modd yn cael ei gofnodi yn strwythur arbennig sy'n dod gyda'r porwr, 1020 01:00:21,330 --> 01:00:24,810 yn dod ag unrhyw dudalen ar y we. Nid yw'n rhywbeth yr wyf yn creu. 1021 01:00:24,810 --> 01:00:28,210 Y tu mewn strwythur hwn ddogfen hon, fodd bynnag, nad ydych wedi dim ond data 1022 01:00:28,210 --> 01:00:30,010 ond hefyd mae gennych swyddogaethau. 1023 01:00:30,010 --> 01:00:34,090 >> Ac unrhyw tro y byddwch yn cael swyddogaeth tu mewn i strwythur, y tu mewn gwrthrych, 1024 01:00:34,090 --> 01:00:36,490 fe'i gelwir yn ddull. Ond y peth. 1025 01:00:36,490 --> 01:00:40,110 Mae dull yn swyddogaeth mai dim ond fel y digwydd i fod y tu mewn o rywbeth arall. 1026 01:00:40,110 --> 01:00:42,990 Felly, mae hyn yn golygu bod y newidyn byd-eang arbennig a elwir yn ddogfen 1027 01:00:42,990 --> 01:00:47,690 wedi swyddogaeth o'r enw getElementById sy'n llythrennol yn gwneud hynny. 1028 01:00:47,690 --> 01:00:52,460 Bydd yn mynd â chi elfen o'r DOM, Dogfen Gwrthrych coed Model, 1029 01:00:52,460 --> 01:00:55,520 y mae eu ID sydd yn y cyfarchiad achos. 1030 01:00:55,520 --> 01:00:59,200 Mewn geiriau eraill, yr holl amser rydym yn ei wario ar strwythurau data yn dod i chwarae yma. 1031 01:00:59,200 --> 01:01:01,400 Y llun yma o DOM ein bod wedi eiliad yn ôl, 1032 01:01:01,400 --> 01:01:06,100 er bod y dudalen yn ychydig yn wahanol, os oedd gennyf div yn y llun, 1033 01:01:06,100 --> 01:01:11,180 Byddai pa document.getElementById dychwelyd i mi fod yn effeithiol pwyntydd 1034 01:01:11,180 --> 01:01:15,440 at y petryal yn y goeden, mae cyfeiriad at y petryal yn y goeden. 1035 01:01:15,440 --> 01:01:18,410 Felly, dyna beth mae'n ei olygu mewn gwirionedd ffonio un o'r swyddogaethau hynny. 1036 01:01:18,410 --> 01:01:21,960 Yn yr achos hwn eto, mae'n div. Nid yw'n gorff neu deitl. 1037 01:01:21,960 --> 01:01:26,480 Felly, gadewch i ni weld beth Yna wneud gyda'r div nawr bod gennyf yn y tu mewn o hyn div amrywiol o'r enw. 1038 01:01:26,480 --> 01:01:32,580 Mae'n troi allan gyda JavaScript gennych y gallu i tweak y CSS ar eich tudalen ddynamig. 1039 01:01:32,580 --> 01:01:39,060 Hyd yn hyn, yr holl CSS rydym wedi ei wneud, er yn gyfyngedig, yn nodweddion arddull, 1040 01:01:39,060 --> 01:01:41,730 neu lle arall ydym ni wedi rhoi CSS? 1041 01:01:42,730 --> 01:01:45,810 Yr wyf yn fath o ddifetha bod un. Yn y tag steil ar ben y ffeil. 1042 01:01:45,810 --> 01:01:49,180 Neu trydydd safle wedi bod yn? 1043 01:01:50,710 --> 01:01:54,590 >> Mae ffeil allanol, rhywbeth. Css. 1044 01:01:54,590 --> 01:01:56,730 Felly, y rhai yn y 3 lle rydym wedi gwneud CSS hyd yn hyn, 1045 01:01:56,730 --> 01:01:59,310 ond y ddalfa yw ein bod wedi codio galed y cyfan. 1046 01:01:59,310 --> 01:02:04,060 Rydych wedi penderfynu wrth i chi colomen i mewn i pset 7, rydym yn penderfynu cyn ddarlithio hyn y byddai ein CSS fod. 1047 01:02:04,060 --> 01:02:07,380 Ond os ydych am newid eich CSS, alli 'n weithredol wneud hynny 1048 01:02:07,380 --> 01:02:09,370 unwaith y byddwch yn cael iaith raglennu gwirioneddol. 1049 01:02:09,370 --> 01:02:13,910 CSS, HTML - ieithoedd nad rhaglennu. JavaScript yn. 1050 01:02:13,910 --> 01:02:18,200 Felly, mae'n troi allan, cyn gynted ag y byddwch yn cael un o'r rhai a petryalau o'r goeden 1051 01:02:18,200 --> 01:02:23,050 a elwir yn y DOM, mae wedi ei hun rhywfaint o ddata y tu mewn ohono. 1052 01:02:23,050 --> 01:02:27,820 Felly y div yr wyf newydd ei afael o'r goeden wedi hyn byddwn yn galw eiddo y tu mewn ohono 1053 01:02:27,820 --> 01:02:34,390 a elwir yn arddull, a'r eiddo arddull ei hun wedi eiddo o'r enw gwelededd. 1054 01:02:34,390 --> 01:02:37,330 Byddwn yn gwybod hyn yn unig drwy edrych i fyny llawlyfr defnyddiwr CSS yn. 1055 01:02:37,330 --> 01:02:41,160 Mae'n troi allan yna gwelededd CSS eiddo sy'n gwneud beth mae'n ei ddweud. 1056 01:02:41,160 --> 01:02:44,530 Mae'n gwneud rhywbeth gweladwy neu beidio, yn weladwy ai peidio. 1057 01:02:44,530 --> 01:02:46,810 A sut ydych yn gwneud hynny yw hyn. 1058 01:02:46,810 --> 01:02:50,510 Rwy'n gofyn programmatically os yw gwelededd y div yn cael ei guddio, 1059 01:02:50,510 --> 01:02:53,390 beth ydw i'n ei newid i? Gweladwy. 1060 01:02:53,390 --> 01:02:58,840 Arall os nad yw'r gwelededd y dudalen hon wedi ei guddio, yn rhesymegol wyf yn ei wneud yn gudd. 1061 01:02:58,840 --> 01:03:04,070 Nid oes gennyf unrhyw syniad pam ei fod yn weladwy ac yn gudd ac nid gweledig ac anweledig. 1062 01:03:04,070 --> 01:03:06,000 Roedd hwn yn benderfyniad ddyluniad gwael ar hyd y ffordd. 1063 01:03:06,000 --> 01:03:09,530 Ond y rhai yn wir yn croes yn CSS: weladwy ac yn gudd. 1064 01:03:09,530 --> 01:03:15,520 Mae hyn i gyd yn ei wneud yw ei fod yn golygu newid y CSS o fy ffeil ar ac oddi ar, ar ac oddi ar 1065 01:03:15,520 --> 01:03:16,870 ar gyfer y div penodol. 1066 01:03:16,870 --> 01:03:20,630 Ond unwaith eto, mae hwn yn swyddogaeth a elwir yn Blink. Pryd mae'r swyddogaeth Blink galw? 1067 01:03:20,630 --> 01:03:24,080 Mae'n troi allan fod yna un arall arbennig a elwir yn ffenestr byd-eang amrywiol, 1068 01:03:24,080 --> 01:03:28,220 debyg o ran ysbryd i'r ddogfen, ond tra bod y ddogfen yn cyfeirio at eich tudalen ar y we, 1069 01:03:28,220 --> 01:03:31,700 fel y goeden DOM, anfonwyd yr HTML chi oddi ar y gweinydd, 1070 01:03:31,700 --> 01:03:35,250 ffenestr yn cyfeirio at y crôm o'i gwmpas, y bar cyfeiriad, y bar teitl, 1071 01:03:35,250 --> 01:03:37,880 a'r holl bethau o gwmpas eich tudalen we. 1072 01:03:37,880 --> 01:03:42,800 >> Ac mae'n troi allan fod y gwrthrych ffenestr yn y tu mewn swyddogaeth arbennig yn galw setInterval 1073 01:03:42,800 --> 01:03:44,360 sy'n gwneud beth mae'n ei ddweud. 1074 01:03:44,360 --> 01:03:48,600 Bydd yn gosod egwyl - yn yr achos hwn pob 500 milieiliadau - 1075 01:03:48,600 --> 01:03:52,270 ac, yn cymryd dyfalu, beth rwyt ti'n mynd i wneud pob 500 milieiliadau? 1076 01:03:52,270 --> 01:03:55,240 Mae'n mynd i weithredu y Blink swyddogaeth. 1077 01:03:55,240 --> 01:03:58,560 A beth braf yma yw y gallem fod wedi gwneud hyn yn C erioed hyd yn oed er ein bod yn gwneud hynny. 1078 01:03:58,560 --> 01:04:01,580 C yn cael rhywbeth o'r enw awgrymiadau swyddogaeth lle gallwch basio swyddogaethau o gwmpas 1079 01:04:01,580 --> 01:04:03,140 fel dadleuon. 1080 01:04:03,140 --> 01:04:07,620 Yn yr un modd yn JavaScript byddwch yn mynd heibio enw swyddogaeth yn swyddogaeth arall. 1081 01:04:07,620 --> 01:04:10,630 Ac yn sylwi ar yr hyn rwy'n ei wneud. Dydw i ddim yn gwneud hyn. 1082 01:04:10,630 --> 01:04:14,380 Os byddaf yn rhoi cromfachau ar ôl y Blink, byddai hynny'n golygu galw'r swyddogaeth amrantiad. 1083 01:04:14,380 --> 01:04:17,430 Os byddaf yn hepgor yn, mae hynny'n golygu dyma yw swyddogaeth Blink 1084 01:04:17,430 --> 01:04:21,330 fel y gall setInterval alw pob 500 milieiliadau. 1085 01:04:21,330 --> 01:04:28,200 Felly, y canlyniad terfynol, erchyll er ei bod yn, yw os byddaf yn mynd i mewn i localhost ac yn mynd i blink.html, 1086 01:04:28,200 --> 01:04:32,120 Yr wyf yn awr yn cael hyn yn digwydd eto ac eto. 1087 01:04:32,120 --> 01:04:34,950 Ac os wyf mewn gwirionedd Archwilio Elfen, gadewch i ni weld os allwn ni weld hyn. 1088 01:04:34,950 --> 01:04:38,550 Gadewch i mi Archwilio Elfen, gadewch i mi sgroliwch i lawr dim ond ychydig bach, 1089 01:04:38,550 --> 01:04:44,320 gadewch i mi ddewis Elfennau dros yma, ac yn sylwi ar y tu mewn DOM o Chrome arolygydd. 1090 01:04:44,320 --> 01:04:48,840 Mae'n llythrennol yn newid yn ôl ac ymlaen pob 500 milieiliadau. 1091 01:04:48,840 --> 01:04:55,660 Os awn at ein cyfaill Nate, 1092 01:04:55,660 --> 01:05:00,020 os ydych chi erioed wedi meddwl sut mae hyn yn gweithio, syniad tebyg gydag egwyl, 1093 01:05:00,020 --> 01:05:04,810 ond Nate mewn gwirionedd yn gwneud defnydd effeithiol iawn o liw yn yr achos penodol yma. 1094 01:05:04,810 --> 01:05:07,350 Felly gall yr hyn a mwy ydym yn ei wneud mewn gwirionedd â hyn? 1095 01:05:07,350 --> 01:05:09,990 Gadewch i ni agor enghraifft arall a rhoi cynnig ar rywbeth 1096 01:05:09,990 --> 01:05:12,940 dyna programmatically hyd yn oed yn fwy defnyddiol na gwneud pethau Blink. 1097 01:05:12,940 --> 01:05:17,990 Gadewch i mi fynd i mewn ein ffurflenni cyfeiriadur heddiw ac yn mynd i form0. 1098 01:05:17,990 --> 01:05:20,820 Dyma ffurf fwyaf salw bosibl y gallwn i ddod o hyd i, 1099 01:05:20,820 --> 01:05:23,290 a gadewch i mi yn unig yn dangos i chi sut mae'n edrych mewn porwr. 1100 01:05:23,290 --> 01:05:28,960 >> Gadewch i mi fynd i mewn i localhost / ffurflenni, ac mae hyn yn form0. 1101 01:05:28,960 --> 01:05:33,400 Mae hon yn ffurflen HTML super hyll sydd â rhai caeau gyfer e-bost, ar gyfer cyfrinair, 1102 01:05:33,400 --> 01:05:37,190 cyfrinair, ac yna blwch bach i gytuno i rai telerau ac amodau. 1103 01:05:37,190 --> 01:05:41,350 Mae'r dal yw os byddaf yn ymweld y ffurflen hon ac nid wyf yn dymuno rhoi i chi fy nghyfeiriad e-bost, 1104 01:05:41,350 --> 01:05:44,730 Nid wyf am i gytuno i'r telerau ac amodau efallai, gallaf glicio Cofrestru 1105 01:05:44,730 --> 01:05:46,920 ac mae'n gadael i mi drwy beth bynnag. 1106 01:05:46,920 --> 01:05:50,800 Mae hyn yn digwydd i gyflwyno i ffeil o'r enw PHP dwp dump.php. 1107 01:05:50,800 --> 01:05:58,420 Mae'r holl mae'n ei wneud yw argraffu'r cynnwys o $ _GET yn unig ar gyfer dibenion diagnostig. 1108 01:05:58,420 --> 01:06:01,580 Dyna oedd yr hyn a gyflwynwyd gan y defnyddiwr yn unig nawr. 1109 01:06:01,580 --> 01:06:05,010 Ond mae'n debyg yr ydym mewn gwirionedd am i ddilysu cyflwyniad ffurflen y defnyddiwr. 1110 01:06:05,010 --> 01:06:06,530 Gadewch i mi fynd i mewn i fersiwn 1. 1111 01:06:06,530 --> 01:06:11,420 Mae hyn yn form1.html. Mae'n edrych yn esthetaidd yr un mor ddrwg, ond sylwi pa mor ffansi ydyw. 1112 01:06:11,420 --> 01:06:15,450 Os cliciwch i'n Cofrestru heb gydweithio, i mi gael yelled. 1113 01:06:15,450 --> 01:06:17,320 "Rhaid i chi ddarparu eich cyfeiriad e-bost." 1114 01:06:17,320 --> 01:06:21,670 Mae pob hawl. Felly, gadewch i mi roi cynnig ar hynny. Felly malan@harvard.edu. Nid oes angen cyfrinair. 1115 01:06:21,670 --> 01:06:25,100 Cofrestru. "Rhaid i chi ddarparu cyfrinair." Mae pob hawl. 1116 01:06:25,100 --> 01:06:28,470 Felly, byddaf yn darparu cyfrinair rhuddgoch. Cofrestru. 1117 01:06:28,470 --> 01:06:32,300 "Nid yw'r cyfrineiriau'n cydweddu." Rhaid i mi nawr deipio i mewn yma rhuddgoch. 1118 01:06:32,300 --> 01:06:35,710 Yr wyf yn ddamweiniol gwirio hynny. Cofrestru. 1119 01:06:35,710 --> 01:06:39,860 "Mae'n rhaid i chi gytuno i'r telerau ac amodau." Mae pob hawl. Cytuno yno. Cofrestru. 1120 01:06:39,860 --> 01:06:43,700 Ac yn awr ei fod yn dangos 'm' r allbwn diagnostig dros yno. 1121 01:06:43,700 --> 01:06:45,630 >> Felly, beth ddigwyddodd yn unig? 1122 01:06:45,630 --> 01:06:48,330 Rydym wedi cael y gallu i ddilysu cyflwyniadau ffurflen. 1123 01:06:48,330 --> 01:06:51,420 Yn wir, os gwnaethoch chi blymio i mewn i pset 7, mae swyddogaeth yn ymddiheuro 1124 01:06:51,420 --> 01:06:54,620 sy'n ei gwneud yn eithaf hawdd i gweiddi ar y defnyddiwr gyda neges ar y sgrin. 1125 01:06:54,620 --> 01:06:57,580 Rwy'n defnyddio mecanwaith ychydig yn wahanol, mae'r swyddogaeth yn effro, 1126 01:06:57,580 --> 01:07:03,690 nad yw'n swyddogaeth sydd wedi gwenu arno gan ei fod yn gwneud negeseuon i ddefnyddwyr sy'n hyll iawn. 1127 01:07:03,690 --> 01:07:05,710 Ond gadewch i ni weld beth rwy'n ei wneud yma. 1128 01:07:05,710 --> 01:07:09,620 Mae hyn yn form1.html, ac yn sylwi fy mod yn cael rhywfaint o gystrawen 'n bert cyfarwydd: 1129 01:07:09,620 --> 01:07:12,920 , tag corff tag ffurflen, priodoledd gweithredu, priodoledd dull. 1130 01:07:12,920 --> 01:07:17,050 Ond sylwi wyf wedi rhoi fy ffurflen ID unigryw ar gyfer hwylustod. 1131 01:07:17,050 --> 01:07:19,190 Yna gen i faes e-bost y mae ei fath yn destun, 1132 01:07:19,190 --> 01:07:23,780 maes cyfrinair mae ei fath yn faes cyfrinair cadarnhau, y mae ei fath gan gyfrinair, 1133 01:07:23,780 --> 01:07:28,070 ac yna checkbox y mae ei enw yn gytundeb dros yma, math yn checkbox. 1134 01:07:28,070 --> 01:07:30,380 Ac yna mae gen i botwm cyflwyno. 1135 01:07:30,380 --> 01:07:33,050 Ond sylwi ar y brig beth arall sydd gen i. 1136 01:07:33,050 --> 01:07:35,810 Yn gyntaf oll, mae defnydd arall o'r tag sgript. 1137 01:07:35,810 --> 01:07:40,520 Os oes gennych rhywfaint o cod JavaScript mewn ffeil arall, yn union fel gyda CSS, gallwch ei gynnwys. 1138 01:07:40,520 --> 01:07:44,530 A ydych yn gwneud hynny gyda ffynhonnell sgript, ac yna sylwi rwy'n cysylltu pob golwg 1139 01:07:44,530 --> 01:07:50,349 i googleapis.com i lwybr hir iawn ond enw ffeil y mae ei dod i ben yn jquery.min 1140 01:07:50,349 --> 01:07:52,420 ar gyfer o leiaf. js. 1141 01:07:52,420 --> 01:07:55,969 jQuery yn llyfrgell poblogaidd super ar gyfer JavaScript mai dim ond yn gwneud JavaScript 1142 01:07:55,969 --> 01:07:58,230 yn oed yn fwy defnyddiwr-gyfeillgar i'w ddefnyddio. 1143 01:07:58,230 --> 01:08:00,610 Mae'n dod yn effeithiol o safon de facto. 1144 01:08:00,610 --> 01:08:04,090 Felly er bod yr hyn yr ydych chi ar fin i weld yn bur JavaScript per se, 1145 01:08:04,090 --> 01:08:09,340 ei bod yn llyfrgell ar ben JavaScript yn debyg iawn i'r llyfrgell CS50 yn haen 1146 01:08:09,340 --> 01:08:13,670 ar ben lefel isel C cod; y realiti yw bron pawb ar y Rhyngrwyd yn ei ddefnyddio. 1147 01:08:13,670 --> 01:08:18,030 Felly, nid yw'r rhain yn olwynion hyfforddiant. Mae hyn yn unig arfer gorau y dyddiau hyn. 1148 01:08:18,030 --> 01:08:22,830 Nawr sylwi isod dyna fy tag sgript ei hun, ac yn sylwi ar yr hyn yr wyf wedi ei wneud yma. 1149 01:08:22,830 --> 01:08:27,450 Mae'n troi allan bod jQuery gwneud rhywbeth ffansi bach. 1150 01:08:27,450 --> 01:08:29,660 JavaScript cynnwys arwyddion ddoler, ond maent yn ddiystyr. 1151 01:08:29,660 --> 01:08:32,870 >> Maent yn debyg y llythyren A neu B neu C. 1152 01:08:32,870 --> 01:08:36,670 jQuery wedi mabwysiadu'r yn syml y confensiwn neu math o hawliad osod at y ffaith 1153 01:08:36,670 --> 01:08:40,280 y bydd $ fydd eu symbol arbennig. 1154 01:08:40,280 --> 01:08:44,950 Felly, cyn gynted ag y byddwch yn llwytho'r ffeil JavaScript byd-eang i fyny yma gyda'r tag sgript, 1155 01:08:44,950 --> 01:08:49,080 oes gennych fynediad i'r newidyn byd-eang arbennig sy'n cael ei alw $. 1156 01:08:49,080 --> 01:08:53,009 Mae'n fwy priodol a elwir yn jQuery, ond nid yw hynny'n edrych yn bron mor sexy â $. 1157 01:08:53,009 --> 01:08:56,250 Ond $ oes unrhyw ystyr arbennig. Yn PHP oedd ystyr arbennig. 1158 01:08:56,250 --> 01:08:58,440 Roedd yn rhaid i gael o flaen newidyn. 1159 01:08:58,440 --> 01:09:01,670 Mae hyn yn unig yn beth sexy eu bod wedi cymryd ar. 1160 01:09:01,670 --> 01:09:03,389 Beth sy'n mynd ymlaen yma? 1161 01:09:03,389 --> 01:09:08,830 Hysbysiad Rwy'n mynd heibio i'r swyddogaeth jQuery fy nogfen byd-eang amrywiol 1162 01:09:08,830 --> 01:09:10,860 ac yna rwy'n galw. barod. 1163 01:09:10,860 --> 01:09:15,480 Pa jQuery yn ei hanfod yn ei wneud yw ei fod yn caniatáu i chi gymryd rhai pethau JavaScript fanila 1164 01:09:15,480 --> 01:09:17,889 fel y gwrthrych ddogfen, y gwrthrych ffenestr, 1165 01:09:17,889 --> 01:09:20,790 ac os byddwch yn ei throsglwyddo i mewn i'r swyddogaeth jQuery - 1166 01:09:20,790 --> 01:09:24,429 ac unwaith eto, i fod yn glir, mae hyn yn swyddogaeth a elwir yn jQuery - 1167 01:09:24,429 --> 01:09:28,240 beth mae'n ei wneud yw dychwelyd i chi fersiwn arbennig o ddogfen 1168 01:09:28,240 --> 01:09:30,700 sydd â mwy o ymarferoldeb sy'n gysylltiedig ag ef. 1169 01:09:30,700 --> 01:09:34,760 Felly, yn JavaScript amrwd, nid oes swyddogaeth barod, 1170 01:09:34,760 --> 01:09:37,810 ond os byddwch yn pasio dogfen i'r swyddogaeth jQuery yn gyntaf, 1171 01:09:37,810 --> 01:09:40,960 yn dychwelyd i chi fersiwn arbennig o'r gwrthrych ddogfen 1172 01:09:40,960 --> 01:09:43,030 sy'n meddu ar nodweddion ffansi mwy. 1173 01:09:43,030 --> 01:09:48,230 A dyna pam mae pobl yn ei hoffi. Mae'n gwneud pethau'n haws i'w wneud, gan ein bod am eu gweld. 1174 01:09:48,230 --> 01:09:49,820 Felly beth mae hyn yn llinell o god yn ei olygu? 1175 01:09:49,820 --> 01:09:52,690 Mae'r llinell o god yma yn golygu pan fydd y ddogfen yn barod - 1176 01:09:52,690 --> 01:09:56,830 mewn geiriau eraill, unwaith y bydd y porwr yn cael ei wneud darllen y ffeil top i'r gwaelod - 1177 01:09:56,830 --> 01:09:59,200 mynd yn ei flaen a gweithredu'r swyddogaeth ganlynol. 1178 01:09:59,200 --> 01:10:03,540 Yr hyn sy'n wirioneddol ddiddorol yn JavaScript - a PHP wedi hyn, yn ogystal - 1179 01:10:03,540 --> 01:10:05,450 yn ymdrin â swyddogaethau ddienw. 1180 01:10:05,450 --> 01:10:10,560 Yn JavaScript, gallwch ddatgan swyddogaethau nad oes ganddynt enw ond mae ganddynt gorff. 1181 01:10:10,560 --> 01:10:12,570 Sylwi ar yr hyn sy'n digwydd yma. 1182 01:10:12,570 --> 01:10:16,220 >> Mae hon yn swyddogaeth a elwir yn barod, a 'i jyst yn golygu gwneud y canlynol 1183 01:10:16,220 --> 01:10:20,220 pan fydd y dudalen we gyfan yn barod, pan mae popeth yn ei ddarllen i mewn o'r gweinydd. 1184 01:10:20,220 --> 01:10:23,090 Beth ydych chi eisiau ei wneud? Rwyf am i weithredu darn o god. 1185 01:10:23,090 --> 01:10:27,120 Sylwch fod nad ydym am i weithredu cod hwn ar unwaith. 1186 01:10:27,120 --> 01:10:34,350 Os byddaf yn hepgor hyn, byddai hyn yn golygu ar unwaith yn dechrau cyflawni y llinellau hyn o god. 1187 01:10:34,350 --> 01:10:39,040 Ond y ffaith fy mod i'n dweud na, na, na, lapio hyn mewn swyddogaeth anhysbys fel hyn 1188 01:10:39,040 --> 01:10:43,000 Nid yw dull yn ei gyflawni eto; alw yn y pen draw. 1189 01:10:43,000 --> 01:10:45,430 Gwelsom hyn funud yn ôl yn ein enghraifft o ffurflen flaenorol. 1190 01:10:45,430 --> 01:10:49,990 Pa swyddogaeth wnaethom ni galw yn y pen draw, 500 milieiliadau yn ddiweddarach? Blink. 1191 01:10:49,990 --> 01:10:51,480 Felly, yr un syniad. 1192 01:10:51,480 --> 01:10:53,950 Unwaith eto, hyd yn oed os yw hyn yn edrych ychydig yn rhyfedd, dim ond yn cymryd ar hyn o bryd ar ffydd 1193 01:10:53,950 --> 01:10:57,060 bod i ddatgan swyddogaeth dienw sy'n cael ei alw yn y pen draw, 1194 01:10:57,060 --> 01:11:01,720 rydych yn syml ysgrifennu swyddogaeth () { 1195 01:11:01,720 --> 01:11:05,380 Felly, pa god ydym yn mynd i weithredu yn y pen draw? Mae'r canlynol. 1196 01:11:05,380 --> 01:11:10,460 Mae hyn hefyd yn edrych yn bach newydd, ond mae hyn yn golygu dyma y swyddogaeth jQuery, 1197 01:11:10,460 --> 01:11:13,430 ac mae hyn yn awr yw llwybr byr. 1198 01:11:13,430 --> 01:11:18,830 Mae hyn yn snippet o HTML ar waelod y sgrin, wrth gwrs, rhywfaint o gynrychiolaeth coed. 1199 01:11:18,830 --> 01:11:21,730 Nid yw hwn. Mae'r dudalen hon yn fwy diddorol na hyn helo, byd enghraifft. 1200 01:11:21,730 --> 01:11:25,210 Ond mae rhywfaint o goed sy'n cyfateb i'r HTML. 1201 01:11:25,210 --> 01:11:28,910 Byddai'n fod yn boen yn y gwddf i gael i weithredu rhyw fath o swyddogaeth ailadroddus 1202 01:11:28,910 --> 01:11:34,380 i ddechrau yn y nod gwraidd ac yna dod o hyd i'r nod y mae ei adnabod yn cofrestru. 1203 01:11:34,380 --> 01:11:38,340 Felly beth jQuery gwneud super hawdd i ni yn llythrennol hyn. 1204 01:11:38,340 --> 01:11:43,000 Mynd yn ei flaen a chael i mi beth bynnag div neu ffurflen beth bynnag, beth bynnag HTML elfen 1205 01:11:43,000 --> 01:11:45,820 Mae ID cofrestru. 1206 01:11:45,820 --> 01:11:52,440 Mae hyn yn cyfateb i document.getElementById ('gofrestru'). 1207 01:11:52,440 --> 01:11:54,170 >> Pam mae pobl yn hoffi jQuery? 1208 01:11:54,170 --> 01:12:00,110 Oherwydd ei fod yn fyrrach i deipio. Ond dyna i gyd ydyw. Mae yr un syniad. 1209 01:12:00,110 --> 01:12:02,630 Cael 'm' r tag ei ​​adnabod yn cofrestru. 1210 01:12:02,630 --> 01:12:06,300 A pan fydd y tag, sy'n digwydd i fod yn ffurf, yn cael ei gyflwyno, 1211 01:12:06,300 --> 01:12:08,300 fynd yn ei flaen a gweithredu cod hwn. 1212 01:12:08,300 --> 01:12:11,320 Felly, gadewch i ni gymryd un yn edrych yn awr ar sut rydym yn gwneud dilysu ffurflen. 1213 01:12:11,320 --> 01:12:15,950 Mae'r gystrawen yn cyfaddef cryptig ar y dechrau, ond beth sy'n mynd ymlaen? 1214 01:12:15,950 --> 01:12:21,050 Os bydd hyn yn llinell o god yn wir, yr wyf i'n mynd i gweiddi ar y defnyddiwr i ddarparu ei gyfeiriad e-bost. 1215 01:12:21,050 --> 01:12:22,970 Felly, beth yw y llinell hon o god? 1216 01:12:22,970 --> 01:12:25,560 $ Golygu jQuery. Nawr sylwi ar hyn. 1217 01:12:25,560 --> 01:12:27,920 Mae hyn yn fath o fel CSS. 1218 01:12:27,920 --> 01:12:33,370 Os ydych wedi syrthio i mewn i CSS eto, byddwch yn gwybod bod hyn yn golygu elfen y mae ei adnabod yn cofrestru. 1219 01:12:33,370 --> 01:12:39,840 Mae'r gofod yn golygu dod o hyd i blentyn neu un o ddisgynyddion cofrestru ei enw ei fewnbynnu. 1220 01:12:39,840 --> 01:12:42,970 Ac yna y peth hyn yn y sgwâr cromfachau yn hidlo ychydig. 1221 01:12:42,970 --> 01:12:47,010 A hyd yn oed os yw hyn yn edrych yn cryptic, mae hyn yn golygu mynd at y ffurflen y mae ei adnabod yn cofrestru, 1222 01:12:47,010 --> 01:12:51,230 mynd i'r mewnbwn y tu mewn elfen o'r ei enw yw e-bost, 1223 01:12:51,230 --> 01:12:55,440 ac yna yn cael ei werth, waeth beth fo'i werth yn digwydd i fod - 1224 01:12:55,440 --> 01:12:59,670 asdf os dyna'r cyfan yr wyf wedi'i deipio neu malan@harvard.edu os dyna beth yr wyf deipio. 1225 01:12:59,670 --> 01:13:05,250 Felly, os yw gwerth y maes e-bost y ffurflen i == ddim, gweiddi ar y defnyddiwr. 1226 01:13:05,250 --> 01:13:09,700 Arall os yw gwerth y maes cyfrinair == ddim, gweiddi ar y defnyddiwr. 1227 01:13:09,700 --> 01:13:19,520 >> Arall os yw gwerth y maes cyfrinair yn gyfartal â'r gwerth y maes gadarnhau, 1228 01:13:19,520 --> 01:13:22,850 sef yr elfen ffurf arall, gweiddi ar y defnyddiwr. 1229 01:13:22,850 --> 01:13:25,680 Ac yna yn olaf - ac mae hyn yn un hefyd rywfaint o gystrawen newydd ei hun, 1230 01:13:25,680 --> 01:13:29,270 ond unwaith y byddwch wedi ei weld, mae'n o leiaf ychydig yn fwy rhesymol - 1231 01:13:29,270 --> 01:13:34,060 arall os yw'r ffurflen y mae ei adnabod yn cofrestru Mae elfen mewnbwn y mae ei enw yn gytundeb 1232 01:13:34,060 --> 01:13:39,720 ac mae'n cael ei wirio, mynd yn ei flaen ac yn gweiddi ar y defnyddiwr. 1233 01:13:39,720 --> 01:13:42,520 Felly, yr wyf yn llwyr gyfaddef hyn yn gwbl llethol ar yr olwg gyntaf. 1234 01:13:42,520 --> 01:13:46,530 Mae'n llawer o gystrawen newydd. Ond mae pob un jQuery yn dilyn y mathau hyn o batrymau. 1235 01:13:46,530 --> 01:13:49,880 Ac yn onest, doeddwn i ddim hyd yn oed yn gwybod hyn yn bodoli hyd nes ychydig funudau yn ôl. 1236 01:13:49,880 --> 01:13:53,640 Googled I, "Sut ydych chi'n gwirio os yw blwch yn cael ei wirio yn jQuery?" 1237 01:13:53,640 --> 01:13:55,680 ac mae hyn yn y gystrawen, oherwydd mae gwahanol ffyrdd o wneud hynny 1238 01:13:55,680 --> 01:13:58,010 â chod JavaScript gwirioneddol amrwd. 1239 01:13:58,010 --> 01:14:01,030 Felly, fel y dudalen cyntaf o 7 Set Problem pwysleisio, 1240 01:14:01,030 --> 01:14:04,500 pset 7 yn fawr iawn yn ymarfer mewn bootstrapping eich hun 1241 01:14:04,500 --> 01:14:08,650 lle'r ydym wedi darparu, gobeithio, fframwaith cysyniadol i'w defnyddio i fynd i'r afael â'r pset. 1242 01:14:08,650 --> 01:14:12,280 >> Ond, fel sy'n digwydd yn aml gyda dylunio ar y we, mae i fyny i chi mewn gwirionedd i chwilota o amgylch, 1243 01:14:12,280 --> 01:14:16,680 ymgorffori pytiau o god ac enghreifftiau o'r we cyn belled â'ch bod yn eu dyfynnu 1244 01:14:16,680 --> 01:14:17,960 unol â'r telerau ar y ddalen gyntaf, 1245 01:14:17,960 --> 01:14:21,460 ac yn sylweddoli bod dysgu HTML, CSS, JavaScript a hyd yn oed SQL 1246 01:14:21,460 --> 01:14:26,020 ei olygu mewn gwirionedd i fod yn yr ymarfer hwn yn y cartref wrth i ni ddechrau cymryd y olwynion hyfforddiant i ffwrdd. 1247 01:14:26,020 --> 01:14:29,150 Ac yn sylweddoli hefyd mae cymaint o bethau arall y gallwch ei wneud gyda porwr. 1248 01:14:29,150 --> 01:14:33,790 Y tu mewn y rhan fwyaf o'r elfennau hyn mae yna bethau eraill a elwir yn trin y digwyddiad. 1249 01:14:33,790 --> 01:14:37,140 A hyd yn oed er ein bod dim ond yn edrych ar rai o'r enw onsubmit a onready, 1250 01:14:37,140 --> 01:14:40,310 gallwch wneud pethau fel onkeydown, onkeyup, 1251 01:14:40,310 --> 01:14:43,410 fel pan fydd y defnyddiwr yn cyffwrdd allweddol, gallwch wrando am hynny ac i fyny allweddol. 1252 01:14:43,410 --> 01:14:45,940 Gmail llwybrau byr bysellfwrdd. 1253 01:14:45,940 --> 01:14:49,490 Sut mae Google yn gweithredu allweddell shortcuts fel C ar gyfer cyfansoddi? 1254 01:14:49,490 --> 01:14:54,120 Maent yn gwrando ar gyfer digwyddiadau, gan eu bod yn galw, fel onkeypress neu onkeyup a onkeydown. 1255 01:14:54,120 --> 01:14:56,360 Os ydych wedi erioed ehededig eich llygoden dros rai ddewislen 1256 01:14:56,360 --> 01:15:00,180 ac yn sydyn, voila, dewislen yn ymddangos, neu y lliw newidiadau graffig, 1257 01:15:00,180 --> 01:15:01,920 sut maen nhw'n gwneud hynny? 1258 01:15:01,920 --> 01:15:06,940 Yn hytrach na gwrando am onready neu onsubmit, byddwch yn gwrando am onmouseover neu onmouseout. 1259 01:15:06,940 --> 01:15:10,920 >> Felly, yn fyr, gyda'r rhain yn sylfaenol syml iawn ein bod wedi dechrau crafu wyneb heddiw 1260 01:15:10,920 --> 01:15:13,940 a byddwn yn plymio yn bellach i ddydd Mercher, mae gennych, yn gynyddol, 1261 01:15:13,940 --> 01:15:17,530 pŵer i weithredu y mathau o bethau yr ydych chi eisoes yn gyfarwydd â hwy. 1262 01:15:17,530 --> 01:15:21,620 Felly, gadewch i ni dod i ben yno, a byddwn yn parhau â hyn ddydd Mercher. 1263 01:15:22,690 --> 01:15:24,320 >> [CS50.TV]