1 00:00:00,000 --> 00:00:02,570 [Powered by Google Translate] [Тыдзень 9] 2 00:00:02,570 --> 00:00:04,740 [David J. малая - Гарвардскі універсітэт] 3 00:00:04,740 --> 00:00:07,170 [Гэта CS50. - CS50.TV] 4 00:00:07,170 --> 00:00:12,350 Добра. Сардэчна запрашаем назад. Гэта CS50, і гэта пачатак тыдня 9. 5 00:00:12,350 --> 00:00:16,600 Сёння мы сканцэнтраваны, у прыватнасці, на дызайн, больш не ў кантэксце C 6 00:00:16,600 --> 00:00:20,010 але ў кантэксце PHP і трохі SQL і трохі JavaScript, 7 00:00:20,010 --> 00:00:23,730 асабліва да канца і PSET 7, а таксама канчатковы праект. 8 00:00:23,730 --> 00:00:26,310 На самай справе, калі вы знаходзіцеся ў дадзены момант ваш канчатковы праект 9 00:00:26,310 --> 00:00:30,100 , Дзе, як мяркуецца на гадзіну або каля таго таму вы па крайняй меры, пачалі даваць некаторыя думкі 10 00:00:30,100 --> 00:00:33,730 на ваш канчатковы праект, і вы думаеце вы хацелі б супрацоўнічаць з 1 ці 2 аднакласнікамі, 11 00:00:33,730 --> 00:00:36,150 калі ў вас узніклі праблемы з падключэннем з названай аднакласнікаў, 12 00:00:36,150 --> 00:00:40,570 не саромейцеся запоўніць форму на cs50.net/partners/form. 13 00:00:40,570 --> 00:00:42,880 Ён проста пытаецца, хто ты, які праект вы думаеце пра тое, 14 00:00:42,880 --> 00:00:44,870 дзе вы жывяце толькі па тэхнічных прычынах. 15 00:00:44,870 --> 00:00:49,510 І потым, калі вы хочаце, каб трымаць вочы на ​​працягу наступнага тыдня або каля таго табліцу URL там, 16 00:00:49,510 --> 00:00:53,520 Вы можаце ўбачыць, толькі для чытання версію Google Doc 17 00:00:53,520 --> 00:00:56,010 , У якой мы збіраем гэтую інфармацыю. 18 00:00:56,010 --> 00:00:58,930 Так што калі вы хочаце працаваць з кімсьці, усімі сродкамі, не саромейцеся звярнуцца да людзей 19 00:00:58,930 --> 00:01:00,480 з дапамогай гэтага механізму. 20 00:01:00,480 --> 00:01:02,690 Але большасць людзей працуюць сола. Гэта зусім нармальна. 21 00:01:02,690 --> 00:01:06,120 Таму не лічу, што гэта ў любым выпадку абавязкова. 22 00:01:06,120 --> 00:01:09,680 У пятніцу ён быў толькі я і яшчэ некалькі камандзе тут, 23 00:01:09,680 --> 00:01:11,100 пустым тэатры, па большай частцы. 24 00:01:11,100 --> 00:01:14,600 Там было 3 турысты сядзяць там, наверсе, так, каб было трохі няёмка. 25 00:01:14,600 --> 00:01:18,970 Тое, што мы казалі толькі пра тое, баз дадзеных і мы гаварылі пра PSET 7 няшмат. 26 00:01:18,970 --> 00:01:22,200 І калі вы выпадкова не злавіць, што на відэа прама зараз, гэта нармальна. 27 00:01:22,200 --> 00:01:26,770 Я пастараюся, каб вызначыць любыя ўмовы, якія мы інакш ўспрымаем як належнае 28 00:01:26,770 --> 00:01:28,840 на аснове лекцыі ў пятніцу. 29 00:01:28,840 --> 00:01:32,550 >> Але сёння мы будзем старацца, каб вы ў кропку 30 00:01:32,550 --> 00:01:34,990 не проста магчымасць зрабіць нешта накшталт PSET 7 31 00:01:34,990 --> 00:01:37,360 але на самой справе разумеючы, што адбываецца пад капотам, 32 00:01:37,360 --> 00:01:41,910 Асабліва некаторыя абстракцыі, якія мы ставім на месца ў файле functions.php 33 00:01:41,910 --> 00:01:45,780 , Каб зрабіць вашу жыццё крыху лягчэй, але так, што вы ў канчатковым рахунку зразумець 34 00:01:45,780 --> 00:01:48,760 так што, калі навучанне колы адарваліся праз некалькі тыдняў вы ўсё яшчэ можаце выжыць 35 00:01:48,760 --> 00:01:53,750 У рэальным свеце і зрабіць гэты матэрыял без CS50 рамкі пад вамі. 36 00:01:53,750 --> 00:01:57,500 Гэта $ _SESSION, для тых з вас, хто знаёмы 37 00:01:57,500 --> 00:02:01,960 ці хто ўжо злавілі відэа ў пятніцу, што ж СЕСІІ давайце зробім 38 00:02:01,960 --> 00:02:04,330 У PHP на аснове вэб-прыкладанняў? 39 00:02:04,330 --> 00:02:09,650 Гэта суперглобальная зменнай, якая азначае, што ён падобны па духу GET і POST 40 00:02:09,650 --> 00:02:13,970 і некаторыя іншыя, але што гэта за справа карысна? 41 00:02:13,970 --> 00:02:18,320 >> Што такое СЕСІІ выкарыстоўваецца? Так. [Студэнт] ўваходу ў ўліковы запіс 42 00:02:18,320 --> 00:02:21,040 Прабачце? [Студэнт] ўваходу ў уліковы запіс ўваходу ў уліковы запіс самай справе. 43 00:02:21,040 --> 00:02:25,100 У PSET 7 мы выкарыстоўваем гэтую сесію суперглобальная для палягчэння ўваходу ў ўліковы запіс 44 00:02:25,100 --> 00:02:28,600 І што прыемна аб гэтым суперглобальная тым, што гэта асацыятыўны масіў. 45 00:02:28,600 --> 00:02:33,190 Асацыятыўны масіў, нагадаем, з'яўляецца толькі масіў, але чые паказчыкі не павінны быць нумары 46 00:02:33,190 --> 00:02:37,670 як 012. Яны могуць быць лікамі або яны могуць быць нават радкоў. 47 00:02:37,670 --> 00:02:44,890 І таму, калі вы нырнулі ў PSET 7 яшчэ, вы можаце ўспомніць, што мы захоўваем ключ, які завецца ID 48 00:02:44,890 --> 00:02:50,330 Унутры гэта асацыятыўны масіў, значэнне якога з'яўляецца нешта накшталт 123 - 49 00:02:50,330 --> 00:02:53,780 што ў цяперашні час увайшлі ў ID карыстальніка з'яўляецца. 50 00:02:53,780 --> 00:02:59,470 Матывацыяй для гэтага з'яўляецца тое, што нават пасля таго, як карыстальнік наведаў лакальны 51 00:02:59,470 --> 00:03:02,720 ці мой сайт у цэлым, а затым яны ўвайшлі ў сістэму, 52 00:03:02,720 --> 00:03:07,320 нават калі яны не клікаюць па спасылцы або вярнуцца на свой сайт за 5 хвілін 53 00:03:07,320 --> 00:03:10,730 ці нават гадзіну ці нават дзень, але яны пакідаюць іх адкрытымі вокны браўзэра, 54 00:03:10,730 --> 00:03:14,370 праз гэты суперглобальная я магу памятаць, што яны зайшлі 55 00:03:14,370 --> 00:03:21,140 >> Іншымі словамі, гэта дазваляе мне захоўваць некалькі доўгатэрміновых што я хачу пра карыстальніку. 56 00:03:21,140 --> 00:03:24,390 І вы можаце думаць, гэта сапраўды як увасабленне кошыку. 57 00:03:24,390 --> 00:03:27,740 Такія месцы, як Amazon, відавочна, дазволіць вам пакласці рэчы ў кошык, 58 00:03:27,740 --> 00:03:32,230 але HTTP, пратакол, што паўнамоцтвы ў Інтэрнэце, з'яўляецца асобай без грамадзянства 59 00:03:32,230 --> 00:03:34,230 У тым сэнсе, што, калі вы наведваеце вэб-сайт, 60 00:03:34,230 --> 00:03:37,290 па большай частцы ў вас няма некаторай пастаяннай падлучэнне да сеткі 61 00:03:37,290 --> 00:03:39,270 паміж браўзэрам і серверам. 62 00:03:39,270 --> 00:03:42,190 Як толькі вы запампавалі HTML і выявы ў фармаце JPEG і GIF-файлы і ўсё такое, 63 00:03:42,190 --> 00:03:48,200 злучэнне сыходзіць, і вы проста мець копію HTML і яшчэ шмат чаго з сервера. 64 00:03:48,200 --> 00:03:53,000 Але калі сервер хоча ўспомніць нешта пра вас, 65 00:03:53,000 --> 00:03:57,580 нагрузка на сервер на самай справе запісаць гэтую інфармацыю. 66 00:03:57,580 --> 00:04:00,130 І таму вы праграміст, якія маюць кантроль над серверам 67 00:04:00,130 --> 00:04:04,400 можна паставіць самы, што вы хочаце ўнутры гэтага суперглобальная асацыятыўны масіў 68 00:04:04,400 --> 00:04:06,850 і яна будзе там у наступны раз, калі карыстальнік вяртаецца, 69 00:04:06,850 --> 00:04:12,070 будзь то хвілін ці нават дзён, калі яны не закрываюць вокны браўзэра, 70 00:04:12,070 --> 00:04:14,360 у які момант СЕСІІ знікае. 71 00:04:14,360 --> 00:04:17,779 Такім чынам, гэта эфемернае захоўвання, гэта надзвычай нетрывалы, і гэта азначала, каб сысці 72 00:04:17,779 --> 00:04:22,360 Як толькі карыстальнік закрывае свой браўзэр - не толькі гэтай ўкладцы, часта ўвесь браўзэр, 73 00:04:22,360 --> 00:04:24,930 тым самым эфектыўна рэгістрацыі карыстальнікаў з. 74 00:04:24,930 --> 00:04:28,000 Так як гэтая рэч на самай справе рэалізаваны? 75 00:04:28,000 --> 00:04:31,360 Давайце кінем хуткі погляд на простым прыкладзе мы разгледзелі ў пятніцу. 76 00:04:31,360 --> 00:04:33,340 Для тых, хто незнаёмы, гэта было так проста, як гэта. 77 00:04:33,340 --> 00:04:35,910 Гэта вэб-старонкі, адзіная мэта ў жыцці, каб сказаць мне, 78 00:04:35,910 --> 00:04:38,000 Колькі разоў я наведаў гэтую старонку. 79 00:04:38,000 --> 00:04:41,670 Гэта першы раз у панядзелак, што я наведаў яго, гэтак ён кажа 0 раз. 80 00:04:41,670 --> 00:04:46,940 >> Але калі я пачну перазагрузкі старонкі, яна кажа 1 раз, 2, 3, 4, 5, 81 00:04:46,940 --> 00:04:49,800 і гэта ў канчатковым выніку проста трымаць на рахункі ўверх, уверх, уверх, уверх, уверх 82 00:04:49,800 --> 00:04:53,130 кожны раз я на самой справе кнопкі Абнавіць на ім. 83 00:04:53,130 --> 00:04:58,830 Так як жа гэта працуе? Дазвольце мне зайсці ўнутр гэтага файла пад назвай counter.php. 84 00:04:58,830 --> 00:05:02,490 У верхняй частцы яно ўсё сінім каментароў, але самае цікавае тут. 85 00:05:02,490 --> 00:05:06,670 У радку 13 мы называем гэтую функцыю session_start, 86 00:05:06,670 --> 00:05:09,600 і што літаральна ўсё, што вам трэба зрабіць, калі вы хочаце мець доступ 87 00:05:09,600 --> 00:05:13,610 гэтага спецыяльнага суперглобальная называецца $ _SESSION. 88 00:05:13,610 --> 00:05:17,430 Гэта робіць усё гэта магчымым, і мы ўбачым праз імгненне, як такое ўвогуле магчыма. 89 00:05:17,430 --> 00:05:20,350 У радку 16 апавяшчэнне, што я раблю. 90 00:05:20,350 --> 00:05:25,960 Калі ключ, званы лічыльнікам - іншымі словамі, значэнне індэкса - "лічыльнік" 91 00:05:25,960 --> 00:05:32,310 існуе ўнутры гэтага масіва называюць сесіі, тое, што я раблю з ёй у радку ніжэй? 92 00:05:32,310 --> 00:05:36,650 Што такое радок 18 робіш? 93 00:05:36,650 --> 00:05:40,360 >> [Неразборліва адказ студэнта] Што гэта? [Студэнт] Захаванне значэння. Добра. 94 00:05:40,360 --> 00:05:45,800 Гэта захоўвання значэння, якое знаходзіцца ў СЕСІІ цяпер у новых лакальных часовых зменных, 95 00:05:45,800 --> 00:05:48,250 $ Лічыльнікі ў ніжнім рэгістры. 96 00:05:48,250 --> 00:05:50,770 Звярніце ўвагу, што PHP ўжо трохі гультаяваты тут. 97 00:05:50,770 --> 00:05:55,550 Звярніце ўвагу, мы не маем ніякай згадкі пра Int або з якая плавае кропкай ці радок ці нешта ў гэтым родзе 98 00:05:55,550 --> 00:06:00,480 таму што PHP тыпізаваных слаба, у якім вы не павінны ўказваць тып зменнай, 99 00:06:00,480 --> 00:06:03,310 і ў гэтым выпадку тут я нават не абвешчаныя яшчэ. 100 00:06:03,310 --> 00:06:08,980 Я абвясціўшы яго ўнутры гэтых фігурныя дужкі, і ў адрозненне ад C, гэта на самай справе добра. 101 00:06:08,980 --> 00:06:13,800 Незалежна ад таго, наколькі глыбока ўкладзеных дэкларацыі зменнай у PHP - 102 00:06:13,800 --> 00:06:16,650 Усярэдзіне фігурных дужак, усярэдзіне фігурнай дужкай і да т.п. - 103 00:06:16,650 --> 00:06:21,230 яна будзе на той момант часу існуюць на астатнюю частку праграмы, 104 00:06:21,230 --> 00:06:22,680 да лепшага ці да горшага. 105 00:06:22,680 --> 00:06:26,930 Так што адразу становіцца глабальным, як толькі вы вызначылі яго, як мы робім тут. 106 00:06:26,930 --> 00:06:31,620 >> У адваротным выпадку, калі я не знаходжу ў гэтым няма нічога ў СЕСІІ суперглобальная, 107 00:06:31,620 --> 00:06:34,680 Я мабыць ініцыялізацыі гэтай зменнай лічыльніка ў 0, 108 00:06:34,680 --> 00:06:37,580 такім чынам толькі пры ўмове, што карыстач ніколі не быў тут раней. 109 00:06:37,580 --> 00:06:40,030 І тады гэта, вядома, павялічваючы лічыльнік як? 110 00:06:40,030 --> 00:06:44,480 Я абнаўляе значэння, што знаходзіцца ўнутры гэтага асацыятыўны масіў 111 00:06:44,480 --> 00:06:49,530 , Усталяваўшы яго роўным незалежна ад лічыльніка ў цяперашні час + 1. 112 00:06:49,530 --> 00:06:53,520 Калі я пракруціць ўніз тут, каб HTML-старонкі, гэта на самай справе даволі простая. 113 00:06:53,520 --> 00:06:58,920 Усё, што я ў целе гэтай старонкі: "Вы наведалі гэты сайт, каб і то-то часы". 114 00:06:58,920 --> 00:07:00,350 І гэта канструкцыі PHP. 115 00:07:00,350 --> 00:07:06,080 Калі вы робіце 00:07:12,600 Гэта сапраўды эквівалентна нешта накшталт Printf, якія мы бачылі шмат разоў у C, 117 00:07:12,600 --> 00:07:15,940 хоць, як вы ведаеце, ужо з спецыфікацыі ў PSET 7, 118 00:07:15,940 --> 00:07:20,160 друк таксама з'яўляецца функцыяй, якая проста друкуе нешта, гэта на самай справе не выкарыстоўваць фармат кодаў, 119 00:07:20,160 --> 00:07:23,270 і вы можаце сказаць рэха, а таксама. 120 00:07:23,270 --> 00:07:27,460 Яны ўсе вельмі трохі розны, хоць сумарны эфект у канчатковым выніку тое ж самае. 121 00:07:27,460 --> 00:07:31,270 Такім чынам, гэта выкарыстанне знака роўнасці з'яўляецца толькі выгляд элегантны спосаб зрабіць гэта 122 00:07:31,270 --> 00:07:34,910 больш коратка, чым вы маглі б быць у стане. 123 00:07:34,910 --> 00:07:38,370 Дык вось усё гэта робіць сайт. Яна выводзіць значэнне лічыльніка. 124 00:07:38,370 --> 00:07:40,550 Як гэта ўсё адбываецца на самай справе? 125 00:07:40,550 --> 00:07:43,250 Вы можаце ўспомніць, тыдзень таму мы пачалі шукаць пад капотам 126 00:07:43,250 --> 00:07:47,910 на тое, як працуе вэб-старонкі з дапамогай гэтай ўкладкі інспектара. 127 00:07:47,910 --> 00:07:51,900 >> Chrome мае гэта як у версіі для Mac, версія Windows, і нават Linux версіі, 128 00:07:51,900 --> 00:07:59,510 і Firefox і IE маюць падобныя механізмы, з дапамогай якіх у вас ёсць гэта убудаваны адладчык 129 00:07:59,510 --> 00:08:01,400 ўсярэдзіне браўзэра. 130 00:08:01,400 --> 00:08:03,040 Давайце зірнем на наступны. 131 00:08:03,040 --> 00:08:06,960 У нас ёсць цэлая куча ўкладак тут, і нагадаць, што левыя 1 Elements, 132 00:08:06,960 --> 00:08:10,700 і, як ні godawful HTML і JavaScript у старонку, 133 00:08:10,700 --> 00:08:15,710 Нагадаем, што з укладкі Элементы вы можаце перамяшчацца па HTML іерархічна 134 00:08:15,710 --> 00:08:17,050 і прыгожа і акуратна. 135 00:08:17,050 --> 00:08:19,370 Так што, калі вы спрабуеце даведацца з сайта, як Google або Facebook 136 00:08:19,370 --> 00:08:22,370 ці сапраўды любы сайт, разумею, што вы, верагодна, лепш 137 00:08:22,370 --> 00:08:26,360 гледзячы на ​​зыходны код такім чынам, у адрозненне ад прагляду зыходнага крыніцы, 138 00:08:26,360 --> 00:08:29,580 , Які можа быць беспарадак, як мы бачылі, асабліва на сайт Google. 139 00:08:29,580 --> 00:08:32,220 Так што, калі я замест гэтага пстрыкніце на ўкладцы Сетка тут, 140 00:08:32,220 --> 00:08:34,830 Давайце паглядзім, што адбываецца, калі я наведваю гэтую старонку. 141 00:08:34,830 --> 00:08:38,669 Перш за ўсё дазвольце мне ачысціць кэш. 142 00:08:38,669 --> 00:08:43,570 Я збіраюся ісці ў налады ў Chrome, а затым перайсці да гісторыі 143 00:08:43,570 --> 00:08:46,420 і зніміце ўсе дадзеныя аб прагледжаных старонках. 144 00:08:46,420 --> 00:08:48,170 Вы маглі б быць выкарыстаны для раблю гэта для іншых мэтаў, [смех] 145 00:08:48,170 --> 00:08:51,990 Але калі справа даходзіць да распрацоўкі вэб-сайтаў, на самай справе карысна - 146 00:08:51,990 --> 00:08:55,980 калі вы смяецеся вы ведаеце. [Смех] 147 00:08:55,980 --> 00:08:59,310 Гэта на самай справе вельмі карысная пры распрацоўцы вэб-сайтаў, таму што рэальнасць такая, 148 00:08:59,310 --> 00:09:04,100 такія рэчы, як печыва і таму падобныя рэчы кэшаваных HTML файлы, кэшаваныя файлы JavaScript 149 00:09:04,100 --> 00:09:06,390 сапраўды можа стаць вялікай галаўным болем, таму што калі па якіх-небудзь прычынах 150 00:09:06,390 --> 00:09:11,500 браўзэр вырашае для кэшавання файлаў і ўсё ж вы ўнеслі змены ў гэты файл на сервер 151 00:09:11,500 --> 00:09:14,670 але браўзэр сапраўды не зразумеў, што файл быў зменены 152 00:09:14,670 --> 00:09:19,060 і, такім чынам, на самай справе не паўторна загрузіць яго, нават калі вы націснеце кнопку Абнавіць, 153 00:09:19,060 --> 00:09:23,210 адна з самых верны спосаб проста пераканайцеся, што няспраўнасць не з кодам, 154 00:09:23,210 --> 00:09:26,480 гэта з паводзінамі браўзэры, каб увайсці ў тут, у вашым браўзэры 155 00:09:26,480 --> 00:09:29,950 і проста ачысціць усю гісторыю, так што няма ніякай блытаніны. 156 00:09:29,950 --> 00:09:33,210 >> І потым, калі вы сапраўды хочаце быць параноікам, зачыніце браўзэр, перазапусціць яго, 157 00:09:33,210 --> 00:09:35,660 , А затым пераканацца, што ўсё працуе так, як чакалася. 158 00:09:35,660 --> 00:09:38,820 Карацей кажучы, ачыстка кэша добра, калі робіш развіцця. 159 00:09:38,820 --> 00:09:40,690 Такім чынам, тут мы маем ўкладцы Сетку. 160 00:09:40,690 --> 00:09:46,020 Я раней наведвалі сайт у 9 разоў, але дазвольце мне цяпер ісці наперад і націсніце кнопку Reload. 161 00:09:46,020 --> 00:09:47,500 І я зноў да 0. 162 00:09:47,500 --> 00:09:52,100 Давайце паглядзім, як на самой справе гэта тое, што гэтая сесія суперглобальная ператвараецца ў жыццё. 163 00:09:52,100 --> 00:09:55,990 Я збіраюся націснуць на 1-HTTP-запыт, які быў зроблены, 164 00:09:55,990 --> 00:09:58,810 і гэта акно адладкі дазваляе мне зазірнуць ўнутр гэтага. 165 00:09:58,810 --> 00:10:01,970 Тут я бачу толькі адказ ад сервера, які не цікавыя. 166 00:10:01,970 --> 00:10:04,030 Я бачыў гэта ў любым колькасці спосабамі. 167 00:10:04,030 --> 00:10:06,350 Але тое, што тэхнічна цікавыя загалоўкі. 168 00:10:06,350 --> 00:10:11,770 Калі я тут, пракруціць ўніз і засяродзіць увагу на загалоўкі запыту і націсніце прагледзець зыходны код, 169 00:10:11,770 --> 00:10:14,400 што я буду бачыць літаральна запыце HTTP 170 00:10:14,400 --> 00:10:17,250 што проста пайшоў з майго браўзэра да сервера, 171 00:10:17,250 --> 00:10:21,400 GET з'яўляецца аператыўнае слова і / counter.php быць імя файла, 172 00:10:21,400 --> 00:10:25,670 HTTP/1.1 проста быць версіі HTTP, што мой браўзэр выкарыстоўвае. 173 00:10:25,670 --> 00:10:31,070 Гэтая лінія тут невялікае напамін ад браўзэра да сервера, што імя сервера 174 00:10:31,070 --> 00:10:33,020 што ён хоча пагаварыць. 175 00:10:33,020 --> 00:10:38,200 І тады астатнія часам гэта цікава, але не адпавядаюць прама цяпер. 176 00:10:38,200 --> 00:10:40,090 >> Гэта проста нейкая цікаўнасць. 177 00:10:40,090 --> 00:10:43,530 Cryptic хоць гэта радок, у любы час вашага браўзэра наведвае вэб-сайт 178 00:10:43,530 --> 00:10:47,110 гэта інфармаванне сервера, які браўзэр вы выкарыстаеце 179 00:10:47,110 --> 00:10:50,040 і якую аперацыйную сістэму вы карыстаецеся і якія варыянце. 180 00:10:50,040 --> 00:10:52,650 Так што калі вы калі-небудзь задумваліся, як сайты, як CNN і яшчэ шмат чаго 181 00:10:52,650 --> 00:10:56,860 ведаю, што працэнты карыстальнікаў Mac у сеткі, карыстальнікі ПК, 182 00:10:56,860 --> 00:11:00,820 IE карыстальнікаў, карыстальнікі Chrome і да таго падобнае, гэта таму, што ўсе нашы браўзэры 183 00:11:00,820 --> 00:11:04,300 кажуць кожны сайт, там якія мы ёсць. 184 00:11:04,300 --> 00:11:07,410 Гэта не абавязкова ўтрымліваюць асабістую інфармацыю, 185 00:11:07,410 --> 00:11:13,060 але гэта не сказаць серверу, што вашы IP адрасы і тое, што браўзэр і АС вы карыстаецеся. 186 00:11:13,060 --> 00:11:14,720 Дык вось дзе гэтую інфармацыю. 187 00:11:14,720 --> 00:11:19,960 Але што больш цікава зараз, калі справа даходзіць да гэтых сесій загалоўка адказу. 188 00:11:19,960 --> 00:11:22,530 Дазвольце мне кнопку прагляду зыходнага кода побач з адказам. 189 00:11:22,530 --> 00:11:24,590 Што цікава, вось некалькі рэчаў. 190 00:11:24,590 --> 00:11:27,580 1, мы вярнуліся кодам стану 200. 191 00:11:27,580 --> 00:11:29,840 Мы ніколі не бачым гэты статус код, таму што гэта азначае, што ўсё добра. 192 00:11:29,840 --> 00:11:32,920 Гэта азначае літаральна ўсё ў парадку, у адрозненне ад чагосьці іншага. 193 00:11:32,920 --> 00:11:36,380 Што такое лік, якое мы часам бачым, што гэта дрэнна? [Студэнт] 404. 194 00:11:36,380 --> 00:11:39,860 404, файл не знойдзены, 403 Вы маглі б натрапіць на ўжо 195 00:11:39,860 --> 00:11:43,660 што забаронена, а значыць, вы забыліся нешта CHMOD, хутчэй за ўсё. 196 00:11:43,660 --> 00:11:45,190 І ёсць куча іншых. 197 00:11:45,190 --> 00:11:47,760 >> Тут, унізе, гэта трохі вар'ят. 198 00:11:47,760 --> 00:11:52,340 Я проста напісаў гэты файл некалькі хвілін таму, уставіўшы яго ў Gedit. 199 00:11:52,340 --> 00:11:57,100 Чаму гэтай старонкі заканчваецца ў 1981 годзе, перш чым там сапраўды было Інтэрнэце? 200 00:11:58,010 --> 00:12:00,730 Што там адбываецца? 201 00:12:00,730 --> 00:12:04,390 >> [Неразборліва адказ студэнта] штамп часу. Але чаму? 202 00:12:06,110 --> 00:12:09,120 Гэта некалькі адвольна, але гэта на самай справе карысна. 203 00:12:09,120 --> 00:12:15,500 Што гэта казаў мой браўзэр гэта PHP файл, які вы толькі што прасілі ўжо мінуў. 204 00:12:15,500 --> 00:12:18,580 На самай справе, ён скончыўся 30 гадоў таму. 205 00:12:18,580 --> 00:12:20,260 Але што гэта азначае? 206 00:12:20,260 --> 00:12:22,500 Гэта проста азначае, што ў наступны раз, калі карыстальнік наведвае гэтую старонку, 207 00:12:22,500 --> 00:12:25,540 Ці шляхам перазагрузкі або набраўшы URL у адрасным радку, 208 00:12:25,540 --> 00:12:28,010 пераканайцеся, што вы схадзіць за новай копіяй. 209 00:12:28,010 --> 00:12:30,840 Гэта свайго роду прыкладам кэш перабору, 210 00:12:30,840 --> 00:12:33,790 дурныя словы, якое азначае толькі спрабуе адбіць браўзэраў 211 00:12:33,790 --> 00:12:37,260 ад фактычна кэшаванне HTML, які быў адпраўлены з сервера 212 00:12:37,260 --> 00:12:41,490 так што вы не выпадкова трапілі перазагрузку, а затым убачыць тую ж версію файла. 213 00:12:41,490 --> 00:12:43,730 Вы на самой справе хочаце, каб сервер адправіць новую копію. 214 00:12:43,730 --> 00:12:47,440 Таму той факт, што гэта 1981 проста азначае, што гэта тое, што прыбор выбірае 215 00:12:47,440 --> 00:12:50,280 як адвольную дату ў мінулым. 216 00:12:50,280 --> 00:12:53,380 Але сапраўдная сакавітая лінія цяпер гэта адно. 217 00:12:53,380 --> 00:12:57,550 Нават да 50 вы, верагодна, цьмяна знаёмыя з печывам. 218 00:12:57,550 --> 00:13:01,820 Па стане на зараз, асабліва сярод тых, хто менш камфортна або паміж імі, 219 00:13:01,820 --> 00:13:04,120 Што такое куки ў вашым разуменні прама зараз 220 00:13:04,120 --> 00:13:06,980 хоць мы і збіраемся зрабіць ваша разуменне больш тэхнічны? 221 00:13:08,150 --> 00:13:10,070 Што такое печыва? Так. 222 00:13:10,070 --> 00:13:13,890 [Студэнт] Інфармацыя аб карыстальніку, як калі б яны напісалі сваё імя ці нешта яшчэ. 223 00:13:13,890 --> 00:13:17,370 >> Добра. Гэта інфармацыя аб карыстальніку, будзь яны ўвялі ў свае імя карыстальніка ўжо. 224 00:13:17,370 --> 00:13:21,190 Cookies з'яўляюцца адным са спосабаў якім серверы могуць успомніць нешта пра карыстальніку. 225 00:13:21,190 --> 00:13:25,810 І тое, што печыва на самай справе ўяўляе сабой тэкставы файл ці некаторыя паслядоўнасці байтаў 226 00:13:25,810 --> 00:13:28,340 які пасадзіў на сервер ў Вашым браўзэры, 227 00:13:28,340 --> 00:13:31,960 а ўнутры яго файл ці з тых, байт з'яўляецца свайго роду ідэнтыфікатарам. 228 00:13:31,960 --> 00:13:35,640 Можа быць, гэта літаральна вашага імя карыстальніка, але часцей за ўсё гэта нешта больш загадкавае выгляд 229 00:13:35,640 --> 00:13:43,700 як гэтая рэч тут - bo8dal3ct і гэтак далей - гэта сапраўды вялікі літарна-лічбавы радок 230 00:13:43,700 --> 00:13:47,050 гэта сапраўды проста хацеў быць унікальным ідэнтыфікатарам для вас. 231 00:13:47,050 --> 00:13:49,790 Ці вы можаце думаць пра яго як свайго роду віртуальны штамп руку. 232 00:13:49,790 --> 00:13:53,020 Калі вы ідзяце ў нейкім клубе або ў парку забаў, памятаць, што вы фактычна выплачанай 233 00:13:53,020 --> 00:13:55,850 і сышлі ў, яны паклалі маленькую чырвоную налепку на вашай руцэ нейкі, 234 00:13:55,850 --> 00:13:59,270 і што нагадвае людзям на лічыльнік, які вы ўжо заплацілі 235 00:13:59,270 --> 00:14:01,340 і вы можаце прыходзіць і сыходзіць калі заўгодна. 236 00:14:01,340 --> 00:14:04,250 Cookies трохі падобныя па духу на гэта. 237 00:14:04,250 --> 00:14:08,070 У першы раз я наведаў гэты сайт, так як я толькі што зрабіў пасля вызвалення майго кэша, 238 00:14:08,070 --> 00:14:11,620 вэб-сервер, прыбор у гэтым выпадку паставіць штамп на маёй руцэ 239 00:14:11,620 --> 00:14:15,030 чыё імя PHPSESSID, ідэнтыфікатар сесіі, 240 00:14:15,030 --> 00:14:18,260 , Значэнне якога гэта сапраўды доўгі літарна-лічбавы радком. 241 00:14:18,260 --> 00:14:22,470 >> Так што цяпер накшталт красуецца на руцэ, так што ў наступны раз я ударыў перазагрузкі 242 00:14:22,470 --> 00:14:25,230 або ўручную наведайце гэты URL у браўзэр, 243 00:14:25,230 --> 00:14:29,230 мой браўзэр па вызначэнні HTTP збіраецца прадставіць ручной штамп 244 00:14:29,230 --> 00:14:31,940 зноў і зноў, і зноў. 245 00:14:31,940 --> 00:14:34,550 Таму, нават калі сервер не абавязкова ведаць, хто я, 246 00:14:34,550 --> 00:14:39,610 яны па крайняй меры ведаюць, што я такі ж карыстач або, па крайняй меры, больш канкрэтна, таго ж браўзэра. 247 00:14:39,610 --> 00:14:45,660 І гэта, у канчатковым рахунку, як сесіі суперглобальная рэалізаваны. 248 00:14:45,660 --> 00:14:51,200 Сервер паняцця не мае, хто вы ёсць, калі вы зноў сайце у ​​другой ці ў трэці раз 249 00:14:51,200 --> 00:14:53,410 калі вы ўяўляеце гэтую руку штамп. 250 00:14:53,410 --> 00:14:55,530 І як толькі вы ўявіць, што рука штамп, 251 00:14:55,530 --> 00:14:59,370 Вэб-сервер па сутнасці ідзе ў маленькую базу дадзеных свайго 252 00:14:59,370 --> 00:15:06,040 і правярае, добра, я толькі што бачыў руку друк карыстальнік bo8dal3ct і гэтак далей. 253 00:15:06,040 --> 00:15:09,850 Давайце паглядзім, якая інфармацыя захоўваецца праграміст 254 00:15:09,850 --> 00:15:12,380 Усярэдзіне суперглобальная пра гэта карыстачу, 255 00:15:12,380 --> 00:15:17,000 , А затым дазвольце мне пераканацца, што гэтыя дадзеныя зноў ўнутры сесіі суперглобальная 256 00:15:17,000 --> 00:15:19,830 так што праграміст можа паўторна доступу да дадзеных 257 00:15:19,830 --> 00:15:23,360 нават калі яно было ўстаноўлена некалькі хвілін або гадзін таму. 258 00:15:23,360 --> 00:15:26,150 Такім чынам, іншымі словамі, печыва, якая атрымала дрэнную рэпутацыю на працягу некаторага часу 259 00:15:26,150 --> 00:15:29,990 з-за няўпэўненасці ў браўзэрах і яны сапраўды могуць парушаць нашу прыватную жыццё, і ўсё гэта, 260 00:15:29,990 --> 00:15:31,900 яны на самай справе маюць вялікую карыснасць, таму што без іх 261 00:15:31,900 --> 00:15:36,110 Вы стала ўваходзе ў кожную старонку Facebook вы наведваеце 262 00:15:36,110 --> 00:15:40,680 або кожны Gmail электроннай пошты вы чыталі, калі браўзэр не ёсць спосаб запамінання 263 00:15:40,680 --> 00:15:43,320 што вы ўжо сапраўднасці. 264 00:15:43,320 --> 00:15:46,640 >> Такім чынам, у гэтым выпадку печыва адпраўляюцца туды і назад праз провад. 265 00:15:46,640 --> 00:15:52,470 Іншы цікаўнасць печыва, асабліва тут, у тым, што гэта цалкам у адкрытым выглядзе. 266 00:15:52,470 --> 00:15:54,930 Там няма шыфравання адбываецца тут бы там ні было, 267 00:15:54,930 --> 00:15:57,240 ды і наогул я выкарыстоўваю HTTP на дадзены момант. 268 00:15:57,240 --> 00:16:00,890 Адзін з нашых любімых момантаў у CS50, які цяпер 2 гады таму, 269 00:16:00,890 --> 00:16:04,750 было прыкладна ў той час інструмент пад назвай Firesheep выйшаў. 270 00:16:04,750 --> 00:16:08,320 Гэта быў свабодны кавалак праграмнага забеспячэння, якое было зроблена даследчык бяспекі 271 00:16:08,320 --> 00:16:13,250 як трывожны сігнал для грамадства, каб сказаць, наколькі жудасна рэалізаваны 272 00:16:13,250 --> 00:16:17,900 пэўныя механізмы аўтэнтыфікацыі на Web былі. 273 00:16:17,900 --> 00:16:22,880 Такім чынам, на працягу некаторага часу, Facebook была амаль цалкам па HTTP, HTTPS няма. 274 00:16:22,880 --> 00:16:25,640 І нават калі вы не ўяўляеце, як крыпта працуе, S з'яўляецца бяспечным 275 00:16:25,640 --> 00:16:27,950 такім чынам, гэта азначае, што па крайняй меры некаторыя шыфраваннем. 276 00:16:27,950 --> 00:16:30,610 Facebook жа выкарыстоўваецца для шыфравання імёнаў карыстальнікаў і пароляў, 277 00:16:30,610 --> 00:16:33,560 Але як толькі вы паглядзелі на вашым тыкае або паведамленняў або навін, 278 00:16:33,560 --> 00:16:35,360 Усё, што было ў незашыфраваным выглядзе. 279 00:16:35,360 --> 00:16:37,870 Так было да таго часу, пакуль Gmail яшчэ год ці 2 назад. 280 00:16:37,870 --> 00:16:41,100 Кожны раз, калі вы ўвайшлі ў сістэму, так, яны выкарыстоўвалі шыфраваныя, 281 00:16:41,100 --> 00:16:44,300 але пасля гэтага яны не зрабілі. І чаму гэта можа быць? 282 00:16:44,300 --> 00:16:49,210 Чаму б не выкарыстоўваць крыптаграфію ўвесь час выкарыстання ў падобных выпадках? 283 00:16:49,210 --> 00:16:53,700 Што гэта? Я думаю, што я нешта чуў. [Студэнт] Speed. 284 00:16:53,700 --> 00:16:56,250 Хуткасць, праўда? Ёсць спосабы абыйсці гэта. 285 00:16:56,250 --> 00:16:59,610 Але калі вы проста выгляд думаць пра гэта лагічна, калі вы нешта шыфравання, 286 00:16:59,610 --> 00:17:01,820 Вы павінны зрабіць па крайняй меры, трохі больш працы. 287 00:17:01,820 --> 00:17:05,460 У PSET 2, калі вы рэалізавалі Цэзара або Vigenere ці нават расколіны, 288 00:17:05,460 --> 00:17:07,760 толькі пячатка радкі адносна лёгка. 289 00:17:07,760 --> 00:17:12,040 Шыфраванне і друку радкі мінімальна патрабуе крыху больш працы. 290 00:17:12,040 --> 00:17:14,520 >>  Для супер папулярных сайтах, як Google і Facebook, 291 00:17:14,520 --> 00:17:18,839 калі ў вас ёсць, каб зрабіць больш працы для кожнага карыстальніка, для кожнай вэб-старонкі яны наведваюць, 292 00:17:18,839 --> 00:17:20,520 што проста займае больш працэсарнага часу. 293 00:17:20,520 --> 00:17:22,920 А калі вам трэба больш працэсарнага часу, вам можа спатрэбіцца некалькі сервераў, 294 00:17:22,920 --> 00:17:24,270 якая азначае, што вы, магчыма, спатрэбіцца больш грошай. 295 00:17:24,270 --> 00:17:27,579 І так на працягу многіх гадоў гэта проста сапраўды не было лепшай практыкі. 296 00:17:27,579 --> 00:17:31,440 Людзі будуць выкарыстоўваць SSL шыфраванне толькі тады, калі трэба. 297 00:17:31,440 --> 00:17:34,960 Але аказалася, і як гэты хлопец з Firesheep зрабіў супер ясна, 298 00:17:34,960 --> 00:17:37,920 калі вы, хлопцы, якія ў цяперашні час на Facebook прама цяпер - 299 00:17:37,920 --> 00:17:39,880 З цікаўнасці, давайце паглядзім, калі вы будзеце прызнацца. 300 00:17:39,880 --> 00:17:42,620 Калі вы знаходзіцеся на Facebook цяпер у некаторых ўкладкі, нават калі яна не на пярэднім плане, 301 00:17:42,620 --> 00:17:46,610 Ваш URL HTTP ці HTTPS? 302 00:17:46,610 --> 00:17:50,560 [Некалькі студэнтаў] S. S? [Смех] 303 00:17:50,560 --> 00:17:55,510 Добра. Любое HTTP? Усяго ў 1? Добра. 304 00:17:55,510 --> 00:17:58,940 Так што ўсё з нас могуць узламаць Facebook ўвагу, што хлопцу прама цяпер. 305 00:17:58,940 --> 00:18:04,100 Па большай частцы гэта стала уключаны па змаўчанні, па меншай меры ў некаторых вэб-сайтах. 306 00:18:04,100 --> 00:18:08,120 І Карацей кажучы, калі ваш вэб-трафік не шыфруецца, 307 00:18:08,120 --> 00:18:12,960 не толькі HTML ісці наперад і назад праз WiFis незашыфраваным выглядзе, 308 00:18:12,960 --> 00:18:16,760 так што такія рэчы, як печыва ісці наперад і назад па ўсім паветра 309 00:18:16,760 --> 00:18:18,940 без якога-небудзь шыфравання. 310 00:18:18,940 --> 00:18:23,540 Так што калі ў вас ёсць трохі здаровага сэнсу праграмавання або Пагугліўшы трошкі навыкі 311 00:18:23,540 --> 00:18:27,410 знайсці свабоднае праграмнае забеспячэнне, што робіць гэта ўсё, што вам трэба зрабіць, гэта сядзець у Starbucks 312 00:18:27,410 --> 00:18:30,680 або сядзець у аэрапорце, дзе там наогул незашыфраваным WiFi 313 00:18:30,680 --> 00:18:36,070 і проста глядзець на ключавыя словы, як Set-Cookie: PHPSESSID або 314 00:18:36,070 --> 00:18:39,300 таму што, калі ў вас ёсць тэхнічныя здаровы сэнс, каб проста назіраць за WiFi 315 00:18:39,300 --> 00:18:43,010 для ўсіх бітаў, якія цякуць па ўсім паветра для гэтай мадэлі, 316 00:18:43,010 --> 00:18:50,840 Вы можаце сказаць, што PHPSESSID хлопец, здараецца, bo8dal і гэтак далей. 317 00:18:50,840 --> 00:18:53,890 І зноў жа, калі вы дастаткова тэхнічна падкаваным і мець правільны інструмент, 318 00:18:53,890 --> 00:18:58,890 Вы можаце проста пераналадзіць свой браўзэр, каб пачаць ўяўленне, што ручной штамп 319 00:18:58,890 --> 00:19:05,030 на Facebook.com і Facebook проста будзе лічыць, што вы, што хлопец 320 00:19:05,030 --> 00:19:09,880 таму што ўсе яны ведаюць не тое, хто вы, але што ў вас ёсць гэта унікальны ідэнтыфікатар. 321 00:19:09,880 --> 00:19:14,650 Так што, калі вы крадзеце, што унікальны ідэнтыфікатар, і прадставіць яго на вэб-сервер, як свае ўласныя, 322 00:19:14,650 --> 00:19:16,860 яны проста збіраюся паказаць вам, стужка навінаў, што чалавек 323 00:19:16,860 --> 00:19:18,980 ці што гэта асоба паведамленні або тыкае. 324 00:19:18,980 --> 00:19:23,190 >> І я б Google Цяпер, як актываваць HTTPS для Facebook, магчыма. 325 00:19:23,190 --> 00:19:25,150 Але гэта сапраўды так проста. 326 00:19:25,150 --> 00:19:27,660 І таму Facebook і Google, і, як атрымаў сапраўды добрае ў гэтым, 327 00:19:27,660 --> 00:19:31,870 але сачыць, тым больш для любых наведвальных вэб-сайтаў, якія не выкарыстоўваюць HTTP 328 00:19:31,870 --> 00:19:35,020 і ёсць нейкі сакрэтнай інфармацыі на іх, 329 00:19:35,020 --> 00:19:37,490 будзь то фінансавыя ці асабістыя ці таму падобнае. 330 00:19:37,490 --> 00:19:43,180 Калі яны не выкарыстоўваюць гэта, цалкам магчыма, можа печыва, як гэта вельмі лёгка выкрасці 331 00:19:43,180 --> 00:19:46,270 , А затым падробленыя, і гэта менавіта тое, што Firesheep зрабіў. 332 00:19:46,270 --> 00:19:48,250 Вам не трэба быць праграмістам. 333 00:19:48,250 --> 00:19:51,680 Усё, што вам трэба было мець падлучэнне да інтэрнэту, запампаваць бясплатны інструмент, 334 00:19:51,680 --> 00:19:56,490 і што ён будзе рабіць гэта вы ўвайсці ў сістэму і тады было б паказаць вам Facebook імёны 335 00:19:56,490 --> 00:20:00,170 усіх у Сандэрса, у дадзенай дэманстрацыі, вакол вас 336 00:20:00,170 --> 00:20:03,260 і ўсё, што вам трэба было толькі націснуць на сваё імя і праграмнае забеспячэнне аўтаматызаваных працэсаў 337 00:20:03,260 --> 00:20:05,970 з нюхае, што печыва, прадставіўшы яго ў Facebook як свае ўласныя, 338 00:20:05,970 --> 00:20:07,990 і, вуаля, вы зайшлі 339 00:20:07,990 --> 00:20:11,190 Так што гэта яшчэ адзін з тых "не рабіць гэтага" афіцыйна. 340 00:20:11,190 --> 00:20:14,660 Калі ў вас ёсць свая хатняя сетка і вы хочаце важдацца, усе сродкі, 341 00:20:14,660 --> 00:20:17,530 але разумеюць гэта робіць перасекчы лінію на універсітэцкай асяроддзі. 342 00:20:17,530 --> 00:20:20,030 >> Але мэта тут сапраўды падкрэсліць не, як гэта зрабіць 343 00:20:20,030 --> 00:20:22,320 Але як абараніцца ад такога роду рэчаў. 344 00:20:22,320 --> 00:20:26,180 І тут трывіяльнае рашэнне, нават калі яно само з'яўляецца недасканалай, 345 00:20:26,180 --> 00:20:31,360 гэта рэальна зменшыць выкарыстанне любых сайтаў, якія не выкарыстоўваюць HTTPS пастаянна. 346 00:20:31,360 --> 00:20:34,520 Такім чынам, сайты, такія як Facebook і Google усё часцей даводзіцца сцяжкоў 347 00:20:34,520 --> 00:20:36,200 дзе вы можаце выбраць, каб такога роду рэчы, 348 00:20:36,200 --> 00:20:40,000 і банкаў было гэта на працягу многіх гадоў па аналагічным прычынах. 349 00:20:40,000 --> 00:20:43,580 Так што проста трохі фактар ​​страху, калі мы можам. Але гэта ўсё ў двух словах. 350 00:20:43,580 --> 00:20:46,420 Гэта значыць, як сервер памятае, хто вы ёсць. 351 00:20:46,420 --> 00:20:50,760 І як толькі яны могуць успомніць, хто вы ёсць, яны могуць памятаць нічога пра вас 352 00:20:50,760 --> 00:20:56,140 што праграміст захоўваюцца ўнутры гэтага спецыяльнага суперглобальная называецца $ _SESSION. 353 00:20:56,140 --> 00:20:59,750 А для PSET 7 мы выкарыстоўваем гэта трывіяльна проста каб успомніць, INT, 354 00:20:59,750 --> 00:21:02,260 а менавіта унікальны ідэнтыфікатар карыстальніка, які ўвайшоў у сістэму, 355 00:21:02,260 --> 00:21:05,880 так што мы ведаем, што яны былі там раней. 356 00:21:05,880 --> 00:21:12,450 Любыя пытанні, то на сесіях або печыва ці як? 357 00:21:12,450 --> 00:21:15,130 Firesheep не працуе, а больш, 358 00:21:15,130 --> 00:21:18,310 і вы павінны перавесці кампутар у спецыяльным мяшаным рэжыме 359 00:21:18,310 --> 00:21:20,700 так што вы на самай справе праслухоўваць трафік, акрамя сябе. 360 00:21:20,700 --> 00:21:23,940 Так што, калі вы ў цяперашні час загрузка Firesheep, разумею, што гэта не так проста, 361 00:21:23,940 --> 00:21:26,850 як гэта было раней, каб прадэманстраваць. 362 00:21:26,850 --> 00:21:29,070 Добра. І не рабіце гэтага ў Сандэрса. У яго дома. 363 00:21:29,070 --> 00:21:30,890 Базы дадзеных. 364 00:21:30,890 --> 00:21:33,580 Адна з рэчаў, якія мы зрабілі ў PSET 7 вельмі свядома 365 00:21:33,580 --> 00:21:37,780 былі мы даем вам прыклад табліцы базы дадзеных для карыстальнікаў, якія мае некаторыя ідэнтыфікатары карыстальнікаў, 366 00:21:37,780 --> 00:21:41,020 некаторыя імёны карыстальнікаў, і некаторыя зашыфраваныя паролі ў ім. 367 00:21:41,020 --> 00:21:44,520 І, як вы ўбачыце, калі вы гэтага яшчэ не зрабілі, вы будзеце мець, каб змяніць табліцу няшмат. 368 00:21:44,520 --> 00:21:47,710 Вы будзеце мець, каб дадаць кэш для кожнага з карыстальнікаў у гэтай табліцы, 369 00:21:47,710 --> 00:21:51,130 і вы будзеце мець, каб дадаць яшчэ адну гісторыю стол, партфелі стол, 370 00:21:51,130 --> 00:21:53,310 ці, магчыма, называць гэта нешта іншае. 371 00:21:53,310 --> 00:21:56,740 Але з пункту гледжання думаць аб тым, як гэта зрабіць, давайце адкрыем гэты інструмент 372 00:21:56,740 --> 00:22:00,570 , Які мы выкарыстоўвалі ў пятніцу, але калі незнаёмы, прыбор пастаўляецца з прыладай 373 00:22:00,570 --> 00:22:04,680 называецца PHPMyAdmin які выпадкова напісана на PHP, 374 00:22:04,680 --> 00:22:07,950 але яго мэта ў жыцці, пасля таго як я увайсці сюды, як jharvard з малінавым, 375 00:22:07,950 --> 00:22:15,160 , Каб даць мне зручны спосаб прагляду і змяненні маёй базе дадзеных. 376 00:22:15,160 --> 00:22:18,040 >> Базы дадзеных, што я бягу на прыбор называецца MySQL. 377 00:22:18,040 --> 00:22:23,420 Гэта вельмі папулярная, і гэта бясплатна СКБД з адчыненым кодам, што гэта цудоўна просты ў выкарыстанні, 378 00:22:23,420 --> 00:22:25,620 асабліва пярэднія канцы, як гэта. 379 00:22:25,620 --> 00:22:29,350 Што гэты інструмент дазваляе мне зрабіць, напрыклад, з'яўляецца мяшку вакол сталоў. 380 00:22:29,350 --> 00:22:30,890 Дазвольце мне ісці наперад і рабіць гэта. 381 00:22:30,890 --> 00:22:36,580 У пятніцу мы стварылі табліцу з імем студэнтаў, што было супер проста. 382 00:22:36,580 --> 00:22:41,680 Гэта было 3 калонкі - нумар, імя і электронную пошту, - і я ўручную ўстаўляецца пару радкоў 383 00:22:41,680 --> 00:22:44,420 як Дэвід і Майк ў гэтым канкрэтным прыкладзе. 384 00:22:44,420 --> 00:22:47,290 Давайце гэта крыху далей, і давайце выкажам здагадку, што мы хочам памятаць больш 385 00:22:47,290 --> 00:22:49,660 чым проста імя і адрас электроннай аб карыстальніку. 386 00:22:49,660 --> 00:22:53,090 Дазвольце мне Структура націсніце тут на самым версе. 387 00:22:53,090 --> 00:22:55,440 І зноў, PSET правядзе вас праз неабходныя крокі тут, 388 00:22:55,440 --> 00:22:58,150 так што не хвалюйцеся, калі некаторыя гэта трохі хутчэй. 389 00:22:58,150 --> 00:22:59,690 Тады я збіраюся націсніце тут. 390 00:22:59,690 --> 00:23:02,270 Я збіраюся дадаць некаторы колькасць слупкоў пасля электронную пошту 391 00:23:02,270 --> 00:23:04,130 таму што я хачу дадаць нешта накшталт дома. 392 00:23:04,130 --> 00:23:06,640 Я забыўся запісаць доме студэнта. 393 00:23:06,640 --> 00:23:11,400 Дазвольце мне каманду Перайсці, і цяпер у нас ёсць гэтая форма, якая, на жаль, крыху шырокі злева направа, 394 00:23:11,400 --> 00:23:13,710 але я буду называць імя гэтага поля доме, 395 00:23:13,710 --> 00:23:16,050 а потым тыпу ў мяне зараз ёсць выбар. 396 00:23:16,050 --> 00:23:18,870 Такім чынам, давайце коратка пагаварыць аб розных тыпаў у MySQL 397 00:23:18,870 --> 00:23:24,590 таму што ў той час як PHP слаба тыпізаваных і ён накшталт гуляе хутка і свабодна з тыпамі, 398 00:23:24,590 --> 00:23:29,430 ў базе дадзеных асабліва гэта супер важна, каб рэальна выкарыстоўваць набраўшы ў сваю карысць 399 00:23:29,430 --> 00:23:33,260 таму што адна з рэчаў, MySQL і іншых СКБД можа зрабіць для вас 400 00:23:33,260 --> 00:23:37,910 гэта пераканацца, што вы не ставіце фіктыўныя дадзеныя ў базу дадзеных. 401 00:23:37,910 --> 00:23:41,850 Гэта свайго роду бясплатная праверка памылак даступныя для вас. 402 00:23:41,850 --> 00:23:46,250 >> Для дома, мы, відавочна, не хачу, каб гэта INT, які ўяўляе сабой 32-бітнае значэнне ў MySQL. 403 00:23:46,250 --> 00:23:49,810 Мы зрабілі коратка распавесці ў пятніцу аб VARCHAR, якая выступае за зменнай даўжыні знака. 404 00:23:49,810 --> 00:23:54,720 Што гэта? Гэта дазваляе вам паказаць, што вы хочаце, каб гэта радок з какой-то. 405 00:23:54,720 --> 00:23:56,840 Вы сапраўды не ведаеце загадзя, як доўга яна ёсць, 406 00:23:56,840 --> 00:24:00,100 таму мы калі заўгодна казаць дом імя можа быць да 255 знакаў, 407 00:24:00,100 --> 00:24:04,190 але вы можаце ісці з 32, 64 - любы лік на самай справе. 408 00:24:04,190 --> 00:24:10,700 Але перавага выкарыстання VARCHAR над полем называецца знак які? 409 00:24:10,700 --> 00:24:15,110 Проста інтуітыўна, калі я пракруціць ўніз тут, звернеце ўвагу, ёсць знак і ёсць VARCHAR. 410 00:24:15,110 --> 00:24:19,520 Varchar зменнай даўжыні знакаў, сімвалаў з'яўляецца фіксаванай даўжынёй знакаў. 411 00:24:19,520 --> 00:24:24,730 Такім чынам, грунтуючыся толькі на гэтым азначэнні, у чым перавага або недахоп кожнага з гэтых? 412 00:24:24,730 --> 00:24:30,490 Іншымі словамі, хто клапоціцца аб адрозненні, ці чаму вы павінны клапаціцца? 413 00:24:31,660 --> 00:24:35,750 >> Так. [Студэнт] Varchar валодае большай гнуткасцю, але займае больш памяці. 414 00:24:35,750 --> 00:24:40,730 Добра. Varchar займае больш - Давайце паглядзім. Я не ўпэўнены, калі б я пачуў гэта права. 415 00:24:40,730 --> 00:24:42,360 Ці можаце вы сказаць, што яшчэ раз? 416 00:24:42,360 --> 00:24:45,850 [Студэнт] Я сказаў, VARCHAR, верагодна, мае вялікую гнуткасць, але гэта займае больш памяці. 417 00:24:45,850 --> 00:24:51,170 Цікава. Добра. Varchar, верагодна, дае вам больш гнуткасці, але займае больш памяці. 418 00:24:51,170 --> 00:24:53,220 Апошняе не абавязкова дакладна. 419 00:24:53,220 --> 00:24:56,290 Гэта залежыць ад кантэксту, але давайце вернемся да гэтага. 420 00:24:56,290 --> 00:25:03,230 >> [Неразборліва адказ студэнта] Менавіта так. 421 00:25:03,230 --> 00:25:06,900 Гэта на самай справе так, што знак, як правіла, выкарыстоўваюць больш памяці 422 00:25:06,900 --> 00:25:10,950 таму што знак, як і ў С, як струна, гэта масіў знакаў. 423 00:25:10,950 --> 00:25:13,690 Так што, калі вы кажаце сімвал поле даўжынёй 255, 424 00:25:13,690 --> 00:25:16,910 База дадзеных літаральна збіраюся даць вам 255 знакаў. 425 00:25:16,910 --> 00:25:22,290 І калі ў доме заканчвае тым, што MATHER і 6 знакаў за ўсё, 426 00:25:22,290 --> 00:25:25,090 вы марнуеце больш за 200 знакаў. 427 00:25:25,090 --> 00:25:29,640 >> Так VARCHAR эфектыўна выкарыстоўвае толькі столькі знакаў, колькі неабходна 428 00:25:29,640 --> 00:25:31,590 да максімальнай сумы. 429 00:25:31,590 --> 00:25:35,470 Але цана, якую вы плаціце на самай справе прадукцыйнасць, патэнцыйна. 430 00:25:35,470 --> 00:25:39,740 Калі вы загадзя ведаеце, што ўсе вашыя радкі будзе 8 сімвалаў - 431 00:25:39,740 --> 00:25:43,090 Напрыклад, выкажам здагадку, што вам патрабуецца паролі даўжынёй 8 - 432 00:25:43,090 --> 00:25:47,350 Станоўчым аспектам выкарыстання знакаў поля на выпадак, хоць і не часта, 433 00:25:47,350 --> 00:25:51,100 гэта пазначыць фіксаваную даўжыню нешта накшталт пароля 434 00:25:51,100 --> 00:25:53,300 таму што зараз база дадзеных можа быць нават разумней. 435 00:25:53,300 --> 00:25:58,160 Калі ён ведае, што кожны знак поля, кожная радок у слупку той жа даўжыні, 436 00:25:58,160 --> 00:26:00,780 Вы вяртаецеся функцыю выпадковага доступу. 437 00:26:00,780 --> 00:26:05,110 Вы можаце скакаць паміж рознымі тэкставыя поля ў табліцы базы дадзеных 438 00:26:05,110 --> 00:26:07,940 таму што думаеш базы дадзеных у выглядзе радкоў і слупкоў. 439 00:26:07,940 --> 00:26:11,670 Такім чынам, калі кожны з струн аднолькавай даўжыні, 440 00:26:11,670 --> 00:26:17,820 Вы ведаеце, што першы знаходзіцца ў байце 0, наступная знаходзіцца ў байце 8 441 00:26:17,820 --> 00:26:20,240 а потым 16, а затым 24 і гэтак далей. 442 00:26:20,240 --> 00:26:24,500 Так што, калі ўсе радкі аднолькавай даўжыні, вы можаце скакаць значна больш эфектыўна. 443 00:26:24,500 --> 00:26:26,710 Так што можа быць карысць у плане прадукцыйнасці, 444 00:26:26,710 --> 00:26:29,420 але звычайна ў вас няма такой раскошы, загадзя ведаючы, 445 00:26:29,420 --> 00:26:32,170 так VARCHAR з'яўляецца шлях. 446 00:26:32,170 --> 00:26:36,030 Вось яшчэ адна падрабязнасць, што нават пабег у Facebook у рэшце рэшт. 447 00:26:36,030 --> 00:26:39,670 Ints вялікія, і мы накшталт як іх выкарыстоўваць па змаўчанні ў любы час мы хочам нумар, 448 00:26:39,670 --> 00:26:41,750 але гэта толькі 32 біта. 449 00:26:41,750 --> 00:26:46,210 >> І хоць Facebook не зусім ёсць 4 мільярда карыстачоў зараз, 450 00:26:46,210 --> 00:26:48,680 ёсць вызначана некаторыя людзі там з некалькімі ўліковымі запісамі 451 00:26:48,680 --> 00:26:50,960 ці рахункаў, якія былі адкрыты і закрыты, 452 00:26:50,960 --> 00:26:55,130 Facebook і так сама я лічу, некалькі гадоў таму быў пераход ад Int 453 00:26:55,130 --> 00:27:00,010 ў, як трапна назваў, BIGINT, які знаходзіцца ўсяго ў 64 біт замест гэтага. 454 00:27:00,010 --> 00:27:02,230 Так што гэта таксама дызайнерскае рашэнне. 455 00:27:02,230 --> 00:27:06,570 Вы б дзіўна пашанцавала, калі ваш канчатковы праект аказваецца запуску, 456 00:27:06,570 --> 00:27:10,010 мае 4 млрд і 1 карыстальнікаў, даваць ці прымаць, 457 00:27:10,010 --> 00:27:13,200 У гэтым выпадку выкарыстанне цэлых лікаў можа быць трохі блізарукі. 458 00:27:13,200 --> 00:27:16,230 Але на самай справе, карыстальнікі стол, верагодна, добра з цэлымі. 459 00:27:16,230 --> 00:27:19,340 Але за тое, як PSET 7, як ваша гісторыя сталом, 460 00:27:19,340 --> 00:27:23,700 Вы маглі б мець тысячы, мільёны карыстальнікаў, калі вы развівацца ў etrade.com. 461 00:27:23,700 --> 00:27:26,020 Такім чынам, у той час як вы не маглі б больш за 4 млрд карыстальнікаў, 462 00:27:26,020 --> 00:27:30,070 тых карыстальнікаў, у вас ёсць, магчыма, больш за 4 мільярдаў аперацый з цягам часу - 463 00:27:30,070 --> 00:27:33,200 купляе і прадае і рэчы ў іх гісторыі. 464 00:27:33,200 --> 00:27:38,090 Так што калі вы прадбачыць - зноў жа, гэта добрыя праблемы мець, калі ў вас ёсць столькі дадзеных - 465 00:27:38,090 --> 00:27:40,920 калі вы прадбачыць дадзеных перавышае памер INT, 466 00:27:40,920 --> 00:27:47,740 збіраецца нешта накшталт BIGINT гэты кірунак не дастаткова часта, прынятыя дызайнераў 467 00:27:47,740 --> 00:27:49,710 таму што людзі постаць, якая не будзе праблемай, 468 00:27:49,710 --> 00:27:51,930 але гэта лёгка выбраць нешта большае, чым гэта. 469 00:27:51,930 --> 00:27:55,380 Дзесятковая мы выкарыстоўваем у PSET 7, якая вызначае фіксаваную дакладнасць 470 00:27:55,380 --> 00:27:59,840 так вы зможаце пазбегнуць пытанняў, звязаных з паплаўком і парным разрадзе, і рэчавыя ліку і таму падобнае. 471 00:27:59,840 --> 00:28:02,440 >> А тут яшчэ некаторыя іншыя поля тут. Мы махаем рукамі ў іх у некаторай ступені. 472 00:28:02,440 --> 00:28:07,270 Але даты, часу ва ўсіх прадпісаных ў фармаце MySQL, 473 00:28:07,270 --> 00:28:10,830 і перавага захоўвання даты як даты, а не тыпу VARCHAR 474 00:28:10,830 --> 00:28:15,730 азначае, што база дадзеных можа фактычна перафарматаваць іх у розных фарматах, 475 00:28:15,730 --> 00:28:18,800 Ці фармат амерыканскага або еўрапейскага фармату і да т.п. - аднак вы хочаце яго - 476 00:28:18,800 --> 00:28:22,700 значна больш эфектыўна, чым калі б гэта былі толькі некаторыя агульныя VARCHAR. 477 00:28:22,700 --> 00:28:25,150 А тут яшчэ некаторыя іншыя BINARY, VARBINARY кроплі. 478 00:28:25,150 --> 00:28:28,580 Гэтыя вялікія двайковыя аб'екты, і вы таксама можаце захоўваць дадзеныя 479 00:28:28,580 --> 00:28:30,750 а таксама геаметрычныя дадзеныя ў базу дадзеных. 480 00:28:30,750 --> 00:28:34,350 Але для нас, мы звычайна клапоцімся пра цэлых і тыпу VARCHAR і таму падобнае. 481 00:28:34,350 --> 00:28:36,230 Давайце скончым гэты прыклад з домам. 482 00:28:36,230 --> 00:28:40,030 Дома я збіраюся калі заўгодна казаць будзе 255 знакаў. 483 00:28:40,030 --> 00:28:42,850 Тады значэнне па змаўчанні мы маглі б гэта зрабіць. 484 00:28:42,850 --> 00:28:47,440 Мы маглі б па змаўчанні расставіць усё па Mather дома, напрыклад. 485 00:28:47,440 --> 00:28:49,710 Вось як мы маглі б паказаць, што база дадзеных 486 00:28:49,710 --> 00:28:52,460 павінны забяспечыць, каб хтосьці заўсёды мае значэнне. Але я пакіну гэта будзе. 487 00:28:52,460 --> 00:28:55,270 На самай справе, для людзей, якія жывуць за межамі кампуса, а не ў доме, 488 00:28:55,270 --> 00:28:59,590 Можа быць, я на самой справе хачу паказаць, што значэнне па змаўчанні для дома NULL, 489 00:28:59,590 --> 00:29:04,890 , А потым мне трэба праверыць гэтую скрынку і сказаць базе дадзеных гэта добра, калі хаты карыстальніка з'яўляецца NULL. 490 00:29:04,890 --> 00:29:07,270 >> Зноў жа, гэта яшчэ адзін ахоўны механізм, вы можаце паставіць на месца 491 00:29:07,270 --> 00:29:10,590 так што вам нават не прыйдзецца пакласці яго ў PHP кода абавязкова. 492 00:29:10,590 --> 00:29:14,630 Гэтая база дадзеных будзе гарантаваць, што рэчы з'яўляюцца або не з'яўляюцца NULL. 493 00:29:14,630 --> 00:29:17,310 І тады, нарэшце, атрыбутаў. 494 00:29:17,310 --> 00:29:18,920 Ні адзін з іх сапраўды актуальная. 495 00:29:18,920 --> 00:29:22,880 Binary, без знака - ні адзін з тых, якія адносяцца да VARCHAR. 496 00:29:22,880 --> 00:29:24,220 Індэкс. 497 00:29:24,220 --> 00:29:27,320 Хто-небудзь ведае ці памятае ці ёсць здагадка аб тым, што індэкс 498 00:29:27,320 --> 00:29:29,510 нешта накшталт дома? 499 00:29:29,510 --> 00:29:35,240 Гэта таксама на самой справе з'яўляецца важным і адносна лёгка дызайнерскае рашэнне. 500 00:29:35,240 --> 00:29:39,200 Для тых, хто яшчэ не бачыў, у пятніцу мы сцісла распавёў аб першасных ключоў. 501 00:29:39,200 --> 00:29:43,240 У базе дадзеных табліцы, першасны ключ полі ці слупку 502 00:29:43,240 --> 00:29:46,270 , Які адназначна ідэнтыфікуе радка ў табліцы. 503 00:29:46,270 --> 00:29:49,150 Такім чынам, у бягучай табліцы ў нас ёсць ідэнтыфікатары, у нас ёсць імёны і адрасы. 504 00:29:49,150 --> 00:29:52,050 Які з іх з'яўляецца лепшым кандыдатам, каб быць першасным ключом, 505 00:29:52,050 --> 00:29:55,810 ролю якога складаецца ва ўнікальнай ідэнтыфікацыі радкоў? 506 00:29:55,810 --> 00:29:57,530 Напэўна ID. 507 00:29:57,530 --> 00:29:59,930 Магчыма, мы маглі б выкарыстоўваць тое, што хоць? 508 00:29:59,930 --> 00:30:02,860 Можа быць, вы маглі б выкарыстоўваць электронную пошту, таму што ў тэорыі гэта унікальны 509 00:30:02,860 --> 00:30:05,380 калі людзі дзеляцца уліковых запісаў электроннай пошты. 510 00:30:05,380 --> 00:30:09,980 Але рэальнасць такая, што калі вы выкарыстоўваеце лічбавы ідэнтыфікатар тыпу 1234, 511 00:30:09,980 --> 00:30:14,170 вось толькі 32 біта, у той час як адрас электроннай пошты, можа быць гэта колькасць байт, ці гэта шмат байт. 512 00:30:14,170 --> 00:30:16,610 Такім чынам, з пункту гледжання эфектыўнасці для унікальных ідэнтыфікатараў, 513 00:30:16,610 --> 00:30:19,270 ён мае тэндэнцыю быць добрая практыка проста выкарыстоўваць Int 514 00:30:19,270 --> 00:30:23,090 нават калі ў вас ёсць радок кандыдата, што вы маглі магчыма выкарыстаць. 515 00:30:23,090 --> 00:30:26,760 >> За тое, як дом, гэта не павінна быць першасным ключом 516 00:30:26,760 --> 00:30:30,770 таму што тады толькі 1 чалавек мог жыць у Мазер і 1 чалавек у Currier і таму падобнае. 517 00:30:30,770 --> 00:30:32,790 Акрамя таго, гэта не павінна быць унікальным. 518 00:30:32,790 --> 00:30:37,830 Розніца паміж першасным і ўнікальная тым, што ў выпадку нашай бягучай табліцы, 519 00:30:37,830 --> 00:30:42,620 ID будзе першасным, але ліст не з'яўляецца першасным па той прычыне, мы толькі што згадалі - 520 00:30:42,620 --> 00:30:44,740 прадукцыйнасць - але ён усё роўна павінны быць унікальнымі. 521 00:30:44,740 --> 00:30:47,200 Такім чынам, вы ўсё яшчэ можаце забяспечыць унікальнасць без прэтэнзій 522 00:30:47,200 --> 00:30:49,520 што гэта супер важна першаснае поле. 523 00:30:49,520 --> 00:30:52,610 Але гэтая з'яўляецца вельмі карысным: Індэкс. 524 00:30:52,610 --> 00:30:56,180 Калі вы загадзя ведаеце, для канчатковага праекта, для PSET 7, або ў цэлым, 525 00:30:56,180 --> 00:30:59,480 што гэта поле доме будзе тое, што вы пошук па шмат 526 00:30:59,480 --> 00:31:01,910 дапамогай выбару ключавога слова ці яшчэ нешта, 527 00:31:01,910 --> 00:31:05,180 , То вы можаце сказаць прэвентыўна базы дадзеных для працы сваёй магіі 528 00:31:05,180 --> 00:31:10,510 і пераканайцеся, што яно стварае ў памяці любыя фантазіі структур дадзеных, неабходных 529 00:31:10,510 --> 00:31:13,770 для паскарэння пошуку на аснове доме. 530 00:31:13,770 --> 00:31:17,860 Можа быць, ён будзе выкарыстоўваць хэш-табліцы, можа быць, ён будзе выкарыстоўваць звязаны спіс. 531 00:31:17,860 --> 00:31:21,260 На самай справе, ён імкнецца выкарыстоўваць дрэва, часта называюць структурай B-дрэва - 532 00:31:21,260 --> 00:31:24,090 Ня бінарнае дрэва, але B-дрэва - які з'яўляецца вельмі шырокім дрэвам 533 00:31:24,090 --> 00:31:27,370 што вы маглі бачыць у клас, як CS124, клас структур дадзеных. 534 00:31:27,370 --> 00:31:31,800 Але ў агульным, вам не прыйдзецца турбавацца аб тым, што пры выкарыстанні інтэлектуальнае праграмнае забеспячэнне базы дадзеных. 535 00:31:31,800 --> 00:31:35,890 Вы можаце проста сказаць, што гэта, "Індэкс гэтай галіне, таму я магу знайсці на яго больш эфектыўна". 536 00:31:35,890 --> 00:31:40,250 >> Калі вы пакінеце гэтую выключаны і вы паспрабуйце пашукаць у любы базе даных, якая жыве ў Mather, 537 00:31:40,250 --> 00:31:42,710 ён ператворыцца ў лінейны пошук. 538 00:31:42,710 --> 00:31:45,360 І калі ў вас ёсць 6000 старшакурснікі ўсё жывое ў пэўным доме, 539 00:31:45,360 --> 00:31:47,900 Вы збіраецеся выканаць пошук па ўсёй табліцы, каб знайсці Matherites, 540 00:31:47,900 --> 00:31:52,190 а калі вы кажаце Index, спадзяемся, гэта будзе нешта блізкае да лагарыфмічныя пошук 541 00:31:52,190 --> 00:31:54,510 каб знайсці тыя віды студэнтаў. 542 00:31:54,510 --> 00:31:56,750 Гэта проста бясплатная функцыя ўключаецца, 543 00:31:56,750 --> 00:31:59,530 нават калі яна прыйдзе па цане некаторы колькасць прасторы. 544 00:31:59,530 --> 00:32:02,690 Нарэшце, аўтаматычнае прырашчэнне гэтай галіне А.І., 545 00:32:02,690 --> 00:32:05,830 які проста азначае, што калі гэта Int і вы не хочаце, каб клапаціцца, каб павялічыць гэта самі 546 00:32:05,830 --> 00:32:07,570 кожны раз, калі ёсць новы карыстальнік, праверыць, што 547 00:32:07,570 --> 00:32:11,910 і кожны карыстальнік, які атрымлівае адсутнічае аўтаматычна атрымаць новы ID. 548 00:32:11,910 --> 00:32:15,620 Давайце націсніце кнопку Захаваць, а цяпер давайце чапляцца да гэтага дызайну. 549 00:32:15,620 --> 00:32:20,200 Калі я іду на Browse, звярніце ўвагу, што абодва Майк і мой дом NULL. 550 00:32:20,200 --> 00:32:22,420 Я магу выкарыстоўваць PHPMyAdmin рэдагаваць ўручную. 551 00:32:22,420 --> 00:32:25,110 Я магу пайсці сюды і ўвядзіце Mather, а затым націсніце Enter, 552 00:32:25,110 --> 00:32:27,740 і цяпер заўважаю табліцы розныя. 553 00:32:27,740 --> 00:32:29,270 Але заўважце, што я мог бы зрабіць нешта яшчэ. 554 00:32:29,270 --> 00:32:33,530 ID Дэвіда 1, так PHPMyAdmin зноў проста сродак адміністравання; 555 00:32:33,530 --> 00:32:35,970 гэта не тое, што вашыя карыстальнікі ніколі не ўбачаць. 556 00:32:35,970 --> 00:32:38,810 Так што, калі я замест гэтага націсніце на ўкладку SQL наверсе - 557 00:32:38,810 --> 00:32:41,450 і зноў, PSET 7 пазнаёмім вас з больш з гэтых запытаў - 558 00:32:41,450 --> 00:32:45,260 Я магу ўручную запусціць SQL структураванага мовы запытаў каманд 559 00:32:45,260 --> 00:32:56,410 UPDATE карыстальнікаў SET доме = 'Pfoho' WHERE ID = 1. 560 00:32:56,410 --> 00:33:00,830 Гэтыя SQL запытаў, прыемна досыць, даволі чытаецца злева направа. 561 00:33:00,830 --> 00:33:04,350 Абнаўленне табліцы карыстальнікаў, усталюеце ў поле называюць дом Pfoho 562 00:33:04,350 --> 00:33:06,830 дзе ідэнтыфікатар карыстальніка роўны 1. 563 00:33:06,830 --> 00:33:11,480 Ці я мог бы яшчэ заняцца ў электронную = 'malan@harvard.edu. 564 00:33:11,480 --> 00:33:14,860 Пакуль што адназначна ідэнтыфікуе мяне, што будзе працаваць таксама. 565 00:33:14,860 --> 00:33:18,810 Але ID, як правіла, больш высокую прадукцыйнасць, так што давайце рабіць гэта. 566 00:33:18,810 --> 00:33:22,950 Давайце націсніце кнопку Перайсці. Добра, lecture.users не існуе. Што мая памылка? 567 00:33:22,950 --> 00:33:26,220 Што табліцы на самой справе завецца тут? 568 00:33:26,220 --> 00:33:28,770 Гэта называецца студэнтаў толькі таму, што гэта тое, што мы зрабілі тут у верхнім левым куце. 569 00:33:28,770 --> 00:33:31,860 Гэта называецца студэнтаў, а не карыстальнікаў. Такім чынам, націсніце кнопку Перайсці цяпер. 570 00:33:31,860 --> 00:33:34,330 1 радок пацярпелых. Запыт затрачана 0.01 сек. 571 00:33:34,330 --> 00:33:38,010 Калі я націсніце кнопку Агляд, зараз, зараз малая жыве ў Pfoho. 572 00:33:38,010 --> 00:33:42,070 Так вось іншы смак SQL, але PSET, вы пройдзеце праз трохі больш аб гэтым. 573 00:33:42,070 --> 00:33:44,710 >> Там вельмі неразумнае рашэнне я ўжо зрабіў тут. 574 00:33:44,710 --> 00:33:47,820 Я б сказаў, што гэта праектаванне баз даных з'яўляецца неэфектыўнай 575 00:33:47,820 --> 00:33:51,650 таму што чым больш людзей, якіх я дадаць у табліцу студэнтаў, 576 00:33:51,650 --> 00:33:54,730 Чым больш нас я пачынаю дадаўшы, тым больш я пачынаю ТФ дадаўшы, 577 00:33:54,730 --> 00:33:58,320 Мы збіраемся пачаць бачыць тое, што звальненняў у гэтай табліцы? 578 00:34:00,840 --> 00:34:06,020 >> Так. [Студэнт] бачачы, што яна знаходзіцца ў студэнты, мы выкарыстоўваем той жа [неразборліва] 579 00:34:06,020 --> 00:34:07,360 Тое ж самае - Так, сапраўды. 580 00:34:07,360 --> 00:34:10,400 Так што калі 400 чалавек жывуць у Mather, плюс-мінус, 581 00:34:10,400 --> 00:34:15,000 ў рэшце рэшт гэтая табліца будзе мець 400 радкоў, якія кажуць "Мазер", "Мазер," 582 00:34:15,000 --> 00:34:16,590 "Мазер", "Мазер", "Mather». 583 00:34:16,590 --> 00:34:19,820 Мы губляем ўсе гэтыя байты, і ёсць пара вынас там. 584 00:34:19,820 --> 00:34:23,080 1, ёсць вар'ятка выпадку кут, дзе, калі хто-то плаціць вялікія грошы 585 00:34:23,080 --> 00:34:25,949 і пераназывае Mather, зараз мы павінны змяніць усю нашу табліцу базы дадзеных. 586 00:34:25,949 --> 00:34:29,730 Гэта не будзе адбывацца часта, хоць Pfoho калісьці называлі Паўночнай дом 15 гадоў таму, 587 00:34:29,730 --> 00:34:32,310 так бывае. Але гэта яшчэ не ўсё, што пераканаўча. 588 00:34:32,310 --> 00:34:36,000 Больш за пераканаўчымі, чым кута выпадку, як у якія маюць патрэбу ў абнаўленні дадзеных у аб'ёмных 589 00:34:36,000 --> 00:34:41,150 для базы дадзеных, чаму вы захоўваеце MATHER зноў і зноў і зноў і зноў? 590 00:34:41,150 --> 00:34:43,020 Гэта шмат сімвалаў, 6 знакаў. 591 00:34:43,020 --> 00:34:45,500 Хіба мы не можам зрабіць яшчэ лепш, чым, асабліва для Pforzheimer? 592 00:34:45,500 --> 00:34:48,320 Вядома, мы можам зрабіць лепш, чым шмат знакаў. 593 00:34:48,320 --> 00:34:51,790 Чаму б не звязаць унікальны ідэнтыфікатар з кожным домам 594 00:34:51,790 --> 00:34:55,020 і крама, што для кожнага карыстальніка? Так давайце паспрабуем гэта. 595 00:34:55,020 --> 00:35:00,610 Замест таго, каб проста выкарыстоўваць студэнты стала, адпусціў мяне да маёй лекцыі базу дадзеных тут, у верхнім левым куце. 596 00:35:00,610 --> 00:35:02,600 Звярніце ўвагу, тут ён кажа Стварыць табліцу. 597 00:35:02,600 --> 00:35:04,550 Дазвольце мне стварыць новую табліцу з імем дамоў. 598 00:35:04,550 --> 00:35:08,880 Колькасць слупкоў будзе 2. Enter. 599 00:35:08,880 --> 00:35:11,200 Цяпер у мяне ёсць 2 поля. 600 00:35:11,200 --> 00:35:14,600 Я буду называць гэтае імя, і гэта будзе VARCHAR даўжынёй 255, 601 00:35:14,600 --> 00:35:18,770 >> але гэта даволі адвольна. Дазвольце мне сказаць гэта тут па дамове. 602 00:35:18,770 --> 00:35:22,840 Так што стаўце ID тут. Давайце кожны дом унікальным ідэнтыфікатарам. 603 00:35:22,840 --> 00:35:25,360 Давайце кожны дом імя. 604 00:35:25,360 --> 00:35:30,980 Удакладнім, што ідэнтыфікатар будзе без знака толькі па пагадненні выкарыстоўваць толькі станоўчыя ліку. 605 00:35:30,980 --> 00:35:35,020 Давайце ісці наперад і даць гэтаму автоинкрементного поле на дадзены момант. 606 00:35:35,020 --> 00:35:38,160 І ці трэба нам што-небудзь яшчэ? 607 00:35:38,160 --> 00:35:41,010 Давайце ісці наперад і націсніце кнопку Захаваць. 608 00:35:41,010 --> 00:35:42,480 Цяпер у мяне ёсць другі табліцы. 609 00:35:42,480 --> 00:35:45,860 Звярніце ўвагу, як у бок гэта крыху загадкавае SQL каманды 610 00:35:45,860 --> 00:35:50,280 што вы павінны былі б ўвесці ўручную, калі не выкарыстоўваецца адміністрацыйны інструмент, як PHPMyAdmin. 611 00:35:50,280 --> 00:35:51,990 Такім чынам, яшчэ адна прычына, мы яе выкарыстоўваем. 612 00:35:51,990 --> 00:35:55,480 Гэта дзіўна карысныя роду педагагічна, таму што вы можаце пстрыкнуць па 613 00:35:55,480 --> 00:36:01,050 і высветліць, як працуюць рэчы простым капіяваннем і устаўкай, што PhpMyAdmin зрабіў. 614 00:36:01,050 --> 00:36:04,150 Але каманду Стварыць табліцу што толькі што было выканана, і вось мой стол. 615 00:36:04,150 --> 00:36:11,370 Дазвольце мне зараз ісці наперад і выкарыстоўваць сырыя SQL, а не спрашчаць, націснуўшы на ўкладку Устаўка. 616 00:36:11,370 --> 00:36:15,040 Дазвольце мне зрабіць INSERT INTO дамоў, 617 00:36:15,040 --> 00:36:22,230 і я збіраюся сказаць, што назва дома будзе мець значэнне 'Mather. 618 00:36:22,230 --> 00:36:24,790 Вось і ўсё. Гэты сінтаксіс з'яўляецца трохі больш загадкавымі. 619 00:36:24,790 --> 00:36:26,660 Гэта імя поля мы хочам ўставіць. 620 00:36:26,660 --> 00:36:30,390 Гэта тыя каштоўнасці, якія трэба ўставіць у гэтых абласцях. Дазвольце мне кнопку Go. 621 00:36:30,390 --> 00:36:34,410 1 радок ўстаўляецца ўзяў 0,02 секунды. Дазвольце мне цяпер націсніце кнопку Агляд. 622 00:36:34,410 --> 00:36:42,020 >> Звярніце ўвагу, калі я націсніце кнопку Агляд, ёсць Mather, ідэнтыфікатар якога па аўтаматызацыі № 1. 623 00:36:42,020 --> 00:36:45,000 Дазвольце мне зрабіць яшчэ адзін. Дазвольце мне перайсці ў закладку SQL. 624 00:36:45,000 --> 00:36:52,950 INSERT INTO дамоў. Назва дома будзе мець значэнне Pfoho і гэтак далей. 625 00:36:52,950 --> 00:36:56,350 Go. І я магу працягваць рабіць гэта зноў і зноў, і зноў. 626 00:36:56,350 --> 00:36:59,470 Ці, калі вам сумна выкарыстаннем PHPMyAdmin, вы можаце проста выкарыстоўваць ўкладку Устаўка 627 00:36:59,470 --> 00:37:01,000 і не прыйдзецца ўводзіць сырыя SQL. 628 00:37:01,000 --> 00:37:04,690 Вы можаце проста стукнуць яго хутчэй, набраўшы, напрыклад, кур'ер, Enter 629 00:37:04,690 --> 00:37:07,610 і цяпер, калі мы націсніце кнопку Агляд, ёсць курьер з ID 3. 630 00:37:07,610 --> 00:37:09,920 Так гэта тое, што мы маем на ўвазе пад автоинкрементного. 631 00:37:09,920 --> 00:37:12,280 Але цяпер мы павінны выправіць нешта ў студэнты. 632 00:37:12,280 --> 00:37:16,240 У студэнтамі, што павінна тып дадзеных поля доме цяпер быць? 633 00:37:16,240 --> 00:37:19,450 Гэта павінна быць цэлы лік, ці не так? 634 00:37:19,450 --> 00:37:23,950 Такім чынам, мэта тут, каб вынесці за дужкі, інакш вядомы як нармалізацыя, табліцы 635 00:37:23,950 --> 00:37:27,940 так што мы не захоўваем інфармацыю залішне ні ў адным з маіх табліц. 636 00:37:27,940 --> 00:37:31,130 І зноў шлях, якім мы былі тут збіраецца сказаць Mather, Mather, 637 00:37:31,130 --> 00:37:34,220 Mather, Mather, Pfoho, Pfoho, Pfoho, Pfoho, што вельмі залішніх 638 00:37:34,220 --> 00:37:36,240 з пункту гледжання марнатраўнасці знакаў. 639 00:37:36,240 --> 00:37:40,820 Такім чынам, дазвольце мне ісці наперад і змяніць гэта, націснуўшы структура, 640 00:37:40,820 --> 00:37:44,620 і дазвольце мне пайсці далей і праверыць каля дома поля, націсніце кнопку Змяніць 641 00:37:44,620 --> 00:37:46,990 і цяпер я збіраюся змяніць гэта, каб быць Int. 642 00:37:46,990 --> 00:37:49,490 255 ўжо не актуальна. 643 00:37:49,490 --> 00:37:54,010 Дазвольце мне пайсці далей і сказаць, што гэта добра, калі яна па-ранейшаму NULL. Захаваць. 644 00:37:54,010 --> 00:37:55,870 Цяпер табліца студэнтаў быў зменены паспяхова, 645 00:37:55,870 --> 00:37:59,090 і звярніце ўвагу, зноў дома Int. 646 00:37:59,090 --> 00:38:02,220 Як у баку, ігнараваць лік у дужках, калі справа даходзіць да цэлых лікаў. 647 00:38:02,220 --> 00:38:03,770 >> Гэта для старых прычынах. 648 00:38:03,770 --> 00:38:06,920 Яшчэ ў той дзень, калі ў вас не было графічнага інтэрфейсу, вы замест гэтага быў асяроддзе каманднага радка, 649 00:38:06,920 --> 00:38:11,580 10 і 11 адпаведна паказана, колькі знакаў вы павінны паказаць 650 00:38:11,580 --> 00:38:13,950 у акне тэрмінала на самай справе адлюстравання палёў. 651 00:38:13,950 --> 00:38:19,150 Гэта не мае нічога агульнага з бітавай даўжыні фактычнага поля, таму мы будзем проста ігнараваць, што ў цяперашні час. 652 00:38:19,150 --> 00:38:20,990 Цяпер я павінен ісці ў гэтую табліцу. 653 00:38:20,990 --> 00:38:24,610 І калі Дэвід жыве ў Mather, дом не павінен быць 0, 654 00:38:24,610 --> 00:38:27,350 , Якая з'яўляецца значэннем па змаўчанні Int бліжэй да NULL. 655 00:38:27,350 --> 00:38:29,810 Ён павінен жыць у доме 1. 656 00:38:29,810 --> 00:38:36,870 Давайце калі заўгодна казаць, што Майк жыве ў Pfoho, таму дома нумар 2. 657 00:38:36,870 --> 00:38:40,160 Цяпер мая табліца выглядае крыху больш загадкавымі. 658 00:38:40,160 --> 00:38:41,960 Але разгледзім эфектыўнасць. 659 00:38:41,960 --> 00:38:44,860 Я зараз выкарыстае толькі 32 біта для ідэнтыфікацыі дом, 660 00:38:44,860 --> 00:38:49,530 што азначае, што толькі 1 кананічнага вызначэння майго дома Mather і Pfoho 661 00:38:49,530 --> 00:38:52,090 і гэта ў табліцы дамоў. 662 00:38:52,090 --> 00:38:55,880 Так што, калі я хачу цяпер вярнуцца гэтых табліц, падумайце вось пра што. 663 00:38:55,880 --> 00:39:01,980 Вось у мяне ёсць мае вучні стол, а на правай баку ёсць гэтыя лічбы, 1 і 2. 664 00:39:01,980 --> 00:39:04,180 1, Mather, 2, Pfoho. 665 00:39:04,180 --> 00:39:08,580 У нас ёсць тыя ж чысла ў гэтай іншай табліцы, якая называецца дамоў, 666 00:39:08,580 --> 00:39:11,020 1 і 2 і 3 для тых, 3 дома. 667 00:39:11,020 --> 00:39:14,990 Тое, што мы зараз хочам зрабіць, гэта мець магчымасць у кодзе PHP і SQL, 668 00:39:14,990 --> 00:39:18,800 да выгляду уз'яднацца з гэтымі табліцамі, дзе, калі яны з'яўляюцца студэнтамі і гэтыя дамы, 669 00:39:18,800 --> 00:39:22,050 Мы хочам, каб неяк аб'яднаць іх такім чынам, што 1 лініі з 1, 670 00:39:22,050 --> 00:39:25,670 2 лініі з 2, так што мы можам высветліць, дзе Давід 671 00:39:25,670 --> 00:39:28,000 і дзе Майк і дзе ўсё яшчэ жыве. 672 00:39:28,000 --> 00:39:31,850 Для гэтага мы можам выканаць SQL запыт накшталт наступнага. 673 00:39:31,850 --> 00:39:40,470 SELECT * FROM студэнтаў далучыцца дамоў ON - 674 00:39:40,470 --> 00:39:43,000 А цяпер, якія поля мы хочам ўступіць на? 675 00:39:43,000 --> 00:39:49,520 Так students.house = houses.id. 676 00:39:49,520 --> 00:39:54,150 >> Трохі загадкава, але гэтая частка літаральна азначае стварыць новую часовую табліцу 677 00:39:54,150 --> 00:39:56,690 вось і вынік далучэння студэнтаў і дамоў. 678 00:39:56,690 --> 00:40:00,340 А як вы хочаце сумясціць кончыкамі пальцаў тут? 679 00:40:00,340 --> 00:40:05,280 Набор студэнтаў доме поля роўная дамоў поля ID. 680 00:40:05,280 --> 00:40:10,220 І калі я зараз націсніце кнопку Перайсці, я вярнуся менавіта тое, што я спадзяваўся. 681 00:40:10,220 --> 00:40:15,890 Давід у Mather, Майк знаходзіцца ў Pfoho, і я таксама ўбачыць унікальныя ідэнтыфікатары. 682 00:40:15,890 --> 00:40:18,640 Але справа ў тым, зараз у мяне ёсць поўная табліца. 683 00:40:18,640 --> 00:40:23,020 І так вынас тут PSET 7 або сапраўды для канчатковага праекта: 684 00:40:23,020 --> 00:40:25,830 Калі вы выявіце, што вы захоўвання любой інфармацыі залішне, 685 00:40:25,830 --> 00:40:28,850 будзь то дом, можа быць, гэта горад, штат і паштовы 686 00:40:28,850 --> 00:40:32,050 ZIP, дзе, як правіла, але не заўсёды можа быць выкарыстаны ў якасці унікальнага ідэнтыфікатара, 687 00:40:32,050 --> 00:40:35,810 давядзецца ехаць праз практыкаванні думках, а затым нешта накшталт PHPMyAdmin 688 00:40:35,810 --> 00:40:40,660 факторынгу, што агульныя дадзеныя, так як асабліва ваш сайт становіцца больш добра выкарыстоўваць 689 00:40:40,660 --> 00:40:45,440 і больш папулярнымі, гэта, як вы пераканаецеся, што ўсё супер хуткі, 690 00:40:45,440 --> 00:40:51,930 шляхам прадастаўлення базы дадзеных, як многія намёкі на унікальнасць наколькі гэта магчыма. 691 00:40:51,930 --> 00:40:53,860 Гэта было шмат. 692 00:40:53,860 --> 00:40:59,010 Ёсць пытанні? Добра. Давайце 5-хвілінны перапынак там і перагрупавацца. 693 00:41:01,600 --> 00:41:03,540 Добра. 694 00:41:03,540 --> 00:41:08,680 Ніжэй прыведзены прыклад, які быў выкарыстаны некалькі гадоў таму, калі я ўзяў CS161, 695 00:41:08,680 --> 00:41:10,960 якая з'яўляецца аперацыйных сістэм класа ў каледжы 696 00:41:10,960 --> 00:41:15,160 якая вядомая тым, што дзіўна, але вар'ят аб'ём працы, 697 00:41:15,160 --> 00:41:19,810 і ён засяроджаны на самай справе на некаторых з нізкага ўзроўню праблем, якія ўзнікаюць у аперацыйныя сістэмы 698 00:41:19,810 --> 00:41:22,700 і нават у свеце баз дадзеных. 699 00:41:22,700 --> 00:41:27,040 >> Гісторыя, якую распавёў мой прафесар, Марго Зэльцэр, што год быў наступным. 700 00:41:27,040 --> 00:41:30,990 Выкажам здагадку, што ў вас ёсць маленькі халадзільнік інтэрната для вас і вашых суседзяў 701 00:41:30,990 --> 00:41:34,030 і абодва вы сапраўды любіце малако. 702 00:41:34,030 --> 00:41:36,360 Такім чынам, вы прыходзіце дадому з класа ў адзін цудоўны дзень, ваш сусед па пакоі яшчэ не было, 703 00:41:36,360 --> 00:41:39,650 Вы адкрываеце халадзільнік, і вы разумееце: "О, чорт, мы з малака". 704 00:41:39,650 --> 00:41:42,070 Такім чынам, вы зачыняеце халадзільнік, вы ідзяце па вуліцы, каб CVS 705 00:41:42,070 --> 00:41:45,830 і атрымаць у больш доўгіх чэргах, каб купіць малака ў CVS. 706 00:41:45,830 --> 00:41:48,470 Між тым, ваш сусед прыходзіць дадому з свайго класа, 707 00:41:48,470 --> 00:41:51,690 уваходзіць у пакой, адкрывае халадзільнік сапраўды жадаючых малака, 708 00:41:51,690 --> 00:41:54,130 адкрывае халадзільнік і "Чорт, няма малака". 709 00:41:54,130 --> 00:41:57,890 Такім чынам, ён або яна закрывае халадзільнік, выходзіць за дзверы, і ідзе ў ABP 710 00:41:57,890 --> 00:42:00,910 ці, можа, акрамя CVS, дзе вы не збіраецеся сутыкаюцца адзін з адным 711 00:42:00,910 --> 00:42:02,790 пайсці атрымаць крыху малака. 712 00:42:02,790 --> 00:42:04,820 Вядома, праз некалькі хвілін, вы абодва вернецеся дадому 713 00:42:04,820 --> 00:42:07,740 і зараз у вас ёсць у два разы больш малака, як вы на самай справе хацелі. 714 00:42:07,740 --> 00:42:10,670 І, малако, цяпер ён збіраецца ісці дрэнна, таму што вы любіце малако 715 00:42:10,670 --> 00:42:14,200 але вы сапраўды не падабаецца малако, так што зараз у вас занадта шмат малака, таму гэта будзе псавацца. 716 00:42:14,200 --> 00:42:16,830 Гэта жахліва, жахліва сітуацыі. 717 00:42:16,830 --> 00:42:22,920 Што магло б вырашыць гэтую цяжкім становішчы, калі вы былі першым домам суседа па пакоі? Так. 718 00:42:22,920 --> 00:42:25,970 [Студэнт] Вы павінны былі пакінуць запіску. [Смех] 719 00:42:25,970 --> 00:42:28,090 Добра. Вы павінны былі пакінуць запіску. 720 00:42:28,090 --> 00:42:32,320 Вы павінны былі пакласці Пост-гэта да ведама або, як кажуць, "Панесеныя для малака", 721 00:42:32,320 --> 00:42:36,830 і тады ваш сусед па пакоі канцэптуальна была б заблакаваная на самай справе рабіць гэта. 722 00:42:36,830 --> 00:42:38,010 Ці вы маглі б пайсці на 1 крок далей. 723 00:42:38,010 --> 00:42:41,060 Вы маглі літаральна замкнуць халадзільнік з нейкай замак, 724 00:42:41,060 --> 00:42:44,870 і зараз ваш сусед па пакоі ў літаральным сэнсе будзе заблакаваная з халадзільніка. 725 00:42:44,870 --> 00:42:48,520 Калі абагульніць вярнуцца да праграмавання, 726 00:42:48,520 --> 00:42:51,610 Вы можаце падумаць, з халадзільніка як нейкая пераменная або структура, 727 00:42:51,610 --> 00:42:53,500 свайго роду кантэйнер для інфармацыі. 728 00:42:53,500 --> 00:42:58,290 Праблема прынцыпова тут тое, што вы абодва былі дазволеныя для праверкі 729 00:42:58,290 --> 00:43:02,370 або чытаць стан гэтай структуры дадзеных, 730 00:43:02,370 --> 00:43:08,050 але вы разглядалі яго ў розныя часы і яшчэ вы абодва прынялі рашэнне 731 00:43:08,050 --> 00:43:11,920 у залежнасці ад стану свету ў гэтыя розныя моманты часу. 732 00:43:11,920 --> 00:43:15,570 Так, калі б вы зачыненыя ў халадзільніку, вы б па меншай меры, пазбегнуць ваш сусед па пакоі 733 00:43:15,570 --> 00:43:19,070 ад таго, былі ў стане праверыць стан свету, 734 00:43:19,070 --> 00:43:22,530 каб ён або яна не мог бы зрабіць тое ж рашэнне. 735 00:43:22,530 --> 00:43:25,780 Так баз дадзеных, як высвятляецца, ёсць гэтая праблема пастаянна. 736 00:43:25,780 --> 00:43:31,050 >> Давайце паглядзім, калі мы можам пабудаваць сцэнар. 737 00:43:31,050 --> 00:43:34,310 Выкажам здагадку, што вы, здаецца, дрэннага хлопца, і вы ідзяце ў банк Амерыкі 738 00:43:34,310 --> 00:43:37,950 або адной з іншых месцаў на плошчы, якія маюць бок пару банкаматаў з адным, 739 00:43:37,950 --> 00:43:41,200 і нейкім чынам вы зразумелі, як дубляваць банкамат карту - не ўсё так складана. 740 00:43:41,200 --> 00:43:42,730 Гэта ўсяго толькі магнітнай паласой. 741 00:43:42,730 --> 00:43:45,180 І таму тое, што вы хочаце, каб паспрабаваць зрабіць, гэта гуляць у гэтую гульню 742 00:43:45,180 --> 00:43:49,060 якому вы паклалі 1 карта на 1 машыну, яшчэ адну карту на іншую машыну, 743 00:43:49,060 --> 00:43:51,980 і вы, па сутнасці хочаце, каб паспрабаваць зняць грошы адначасова, 744 00:43:51,980 --> 00:43:54,930 таму што ўявіце сабе, што гісторыя ідзе наступным чынам. 745 00:43:54,930 --> 00:43:57,350 Машына злева бярэ вашу карту і PIN-код, 746 00:43:57,350 --> 00:44:00,240 і тады вы кажаце: "Дайце мне 100 даляраў». 747 00:44:00,240 --> 00:44:04,790 Банкамат запраграмаваны спачатку зрабіць выбар на яго базе дадзеных або эквівалент - 748 00:44:04,790 --> 00:44:10,780 усё, што база дадзеных ён выкарыстоўвае - бачыць нічога гэтага карыстальніка ёсць па меншай меры $ 100 у свой рахунак? 749 00:44:10,780 --> 00:44:16,180 Калі так, то выплюнуць $ 100 і $ 100 адняць са свайго балансу. 750 00:44:16,180 --> 00:44:20,470 Але, вядома, калі ёсць некалькі машын тут або некалькі спосабаў праверкі 751 00:44:20,470 --> 00:44:23,560 стан гэтага свету, банкаўская сховішча, каб паглядзець, колькі ў вас грошай, 752 00:44:23,560 --> 00:44:26,780 Выкажам здагадку, што проста выпадкова машыну на левай і правай 753 00:44:26,780 --> 00:44:30,140 як задаць гэтае пытанне прыкладна ў той жа момант часу. 754 00:44:30,140 --> 00:44:34,160 >> І гэта, безумоўна, можа здарыцца. Банкаматы кампутараў у гэтыя дні. 755 00:44:34,160 --> 00:44:37,670 Такім чынам, калі машына злева кажа: "Так, у вас ёсць па меншай меры $ 100", 756 00:44:37,670 --> 00:44:42,150 Тым часам машына на правым кажа: "Так, у вас ёсць па меншай меры $ 100", 757 00:44:42,150 --> 00:44:47,420 Затым абодва дзейнічаць да канца сваіх праграмах і на самай справе выплюнуць $ 100 758 00:44:47,420 --> 00:44:50,820 і кажуць: "Раней у вас была $ 200." 759 00:44:50,820 --> 00:44:54,890 "Дазвольце мне абнавіць зменную цяпер будзе $ 100 пакінутых у кошт". 760 00:44:54,890 --> 00:44:58,780 Але калі абодва з іх праверылі свае рахункі і выявіў, што гэта $ 200 761 00:44:58,780 --> 00:45:02,000 і абодва з іх, то рабіць матэматыку і кажуць 200 - 100, 762 00:45:02,000 --> 00:45:06,990 Машыны патэнцыйна пляваць два 100-доларавых купюр у кожнай машыне, 763 00:45:06,990 --> 00:45:11,360 але яны абнаўляюцца толькі ваша сума балансу складзе $ 100. 764 00:45:11,360 --> 00:45:15,130 Іншымі словамі, вы ўзялі на $ 200, але таму, што яны агледзелі стан свету 765 00:45:15,130 --> 00:45:18,840 адначасова, а затым было прынята рашэнне на аснове гэтага значэння, 766 00:45:18,840 --> 00:45:21,930 яны не маглі б зрабіць матэматыку ў канчатковым выніку правільна. 767 00:45:21,930 --> 00:45:25,520 Такім чынам, у банку сітуацыю занадта вы сапраўды хочаце мець нейкія блакавання 768 00:45:25,520 --> 00:45:28,450 так што, як толькі вы праверылі стан некаторых зменных 769 00:45:28,450 --> 00:45:31,220 што сапраўды важна, як ваш баланс рахунку, 770 00:45:31,220 --> 00:45:36,070 Не дазваляйце нікому прымаць рашэнні, грунтуючыся на гэтым, пакуль вы не зрабілі робяць сваю справу, 771 00:45:36,070 --> 00:45:38,920 дзе ў гэтым выпадку вы банкамат злева. 772 00:45:38,920 --> 00:45:41,160 Блакаванне ўсіх астатніх з. 773 00:45:41,160 --> 00:45:44,650 Вы сапраўды можаце дасягнуць гэтага эфекту ў некалькі розных спосабаў. 774 00:45:44,650 --> 00:45:48,660 >> Самы просты спосаб у MySQL з'яўляецца лінія SQL, што мы далі вам 775 00:45:48,660 --> 00:45:52,030 у спецыфікацыі праблема набору, які выглядае гэтак жа, як гэта. 776 00:45:52,030 --> 00:45:57,420 Устаўце ў табліцу - там гэта называецца - ідэнтыфікатар, сімвал, і акцыі, колькасць акцый, 777 00:45:57,420 --> 00:45:59,660 наступных значэнняў, напрыклад. 778 00:45:59,660 --> 00:46:03,370 Калі вы яшчэ не чыталі спецыфікацыю не менш, гэта прыклад, звязаны, як вы ідзяце аб 779 00:46:03,370 --> 00:46:07,340 куплю 10 акцый гэтай запас пені на пасаду прэзідэнта Skroob, 780 00:46:07,340 --> 00:46:10,340 якіх ідэнтыфікатар карыстальніка, здараецца, лік 7? 781 00:46:10,340 --> 00:46:14,070 Гэта кажа INSERT INTO табліца наступны ідэнтыфікатар, сімвал, і колькасцю акцый 782 00:46:14,070 --> 00:46:18,200 7, "DVN.V, і 10. 783 00:46:18,200 --> 00:46:21,510 Але - але, але, але - другая лінія з'яўляецца важным. 784 00:46:21,510 --> 00:46:26,310 ON DUPLICATE KEY UPDATE = акцыі акцыі + VALUES (акцый). 785 00:46:26,310 --> 00:46:28,350 Такім чынам, зусім загадкавым перспектыўных на першы погляд. 786 00:46:28,350 --> 00:46:31,990 Але справа ў тым, што гэты запыт SQL, нават калі яна пераносіцца на 2 лініі, 787 00:46:31,990 --> 00:46:35,920 складае 1 доўгі запыт, гэта азначае, што гэта атамная 788 00:46:35,920 --> 00:46:41,000 У тым сэнсе, што гэты запыт будзе альбо выкананы ўсе разам або няма наогул. 789 00:46:41,000 --> 00:46:45,100 І па вызначэнні MySQL, то, як яны рэалізуюцца гэтага запыту. 790 00:46:45,100 --> 00:46:51,010 Гэта, па вызначэнні, у кіраўніцтве гарантавана выконваць усе адразу ці не на ўсіх. 791 00:46:51,010 --> 00:46:54,020 Матывацыяй для гэтага складаецца ў наступным. 792 00:46:54,020 --> 00:46:58,540 Калі ў гэтым выпадку вы спрабуеце купіць 10 акцый, 793 00:46:58,540 --> 00:47:02,260 гэта накшталт тая ж гісторыя, малака, гэта накшталт тая ж гісторыя, банкамат. 794 00:47:02,260 --> 00:47:04,970 >> Калі вы зрабілі памылку, не выкарыстоўваючы наступны сінтаксіс 795 00:47:04,970 --> 00:47:09,610 але замест выбару з базы дадзеных, каб убачыць, колькі акцый гэтай запас пені 796 00:47:09,610 --> 00:47:13,750 Прэзідэнт жа Skroob ёсць, і думаю, што ён мае 10 акцый, 797 00:47:13,750 --> 00:47:19,330 , А затым некаторыя долю секунды пазней вы выканаеце UPDATE заяву, 798 00:47:19,330 --> 00:47:24,810 што з'яўляецца яшчэ адным заявай у SQL, які кажа пайсці далей і дадаць яшчэ 10 акцый 799 00:47:24,810 --> 00:47:28,700 ў яго цяперашняй 10, так што ў ідэале агульная 20, 800 00:47:28,700 --> 00:47:33,490 Праблема ў тым, што ў базе дадзеных сучасных сістэм і таму, што ў сучасных кампутарах 801 00:47:33,490 --> 00:47:35,990 ў вас ёсць некалькі працэсараў, некалькіх ядраў - 802 00:47:35,990 --> 00:47:38,920 Іншымі словамі, кампутар можа ў літаральным сэнсе рабіць некалькі рэчаў адначасова - 803 00:47:38,920 --> 00:47:44,270 няма ніякай гарантыі, што ваш SELECT, UPDATE і ваша ў гэтым выпадку 804 00:47:44,270 --> 00:47:46,150 будуць адбывацца спіной да спіны. 805 00:47:46,150 --> 00:47:49,140 Так дрэнны сцэнар быў бы вы ВЫБАР 806 00:47:49,140 --> 00:47:51,670 каб даведацца, колькі акцый гэтага запасу пені ж Skroob ёсць, 807 00:47:51,670 --> 00:47:54,710 а потым проста выпадкова іншую базу дадзеных запыт будзе выкананы - 808 00:47:54,710 --> 00:47:57,740 можа быць, яго Skroob ў іншым акне браўзэра спрабуе купіць 10 акцый 809 00:47:57,740 --> 00:48:00,700 ў іншым акне ў цэлым, гэтак жа, як ATM - 810 00:48:00,700 --> 00:48:05,410 і выкажам здагадку, што іншы запыт трапляе паміж SELECT, і UPDATE. 811 00:48:05,410 --> 00:48:10,210 Гэта можа быць так, што Skroob зараз губляе некаторы колькасць акцый 812 00:48:10,210 --> 00:48:14,340 таму што іншы працэс праверкі стану яго свет, 813 00:48:14,340 --> 00:48:17,800 ці ён атрымлівае больш акцый, чым павінен быў бы. 814 00:48:17,800 --> 00:48:23,250 Мы не будзем удавацца ў асабліва тое, што гэтыя канкрэтныя сюжэтныя лініі будзе, 815 00:48:23,250 --> 00:48:28,380 але справа ў тым, калі вы павінны праверыць зменныя значэння, а затым прыняць рашэнне, 816 00:48:28,380 --> 00:48:32,500 калі ёсць рызыка, што нехта іншы робіць нешта сярэдняе паміж гэтымі 2 заявы, 817 00:48:32,500 --> 00:48:36,220 як можа здарыцца ў шматпрацэсарных сістэмах, у шмат'ядравых сістэмах, 818 00:48:36,220 --> 00:48:41,220 кампутары з магчымасцю зрабіць некалькі рэчаў адначасова, дрэнныя рэчы могуць здарыцца 819 00:48:41,220 --> 00:48:44,530 рахунках банкаў, як іх спісання няправільна, купляючы удвая больш малака, 820 00:48:44,530 --> 00:48:46,730 ці ў дадзеным выпадку няправільнае колькасць акцый. 821 00:48:46,730 --> 00:48:48,370 Але ёсць і больш просты спосаб думаць аб гэтым. 822 00:48:48,370 --> 00:48:53,290 >> Аказваецца, што SQL таксама падтрымлівае, калі вы наладзіць табліцу правільна, 823 00:48:53,290 --> 00:48:56,920 тое, што называецца здзелак, якія я б сказаў, на самай справе нават прасцей для разумення 824 00:48:56,920 --> 00:49:00,650 чым гэта, але гэта не 1-лайнера, так што гэта на самай справе крыху больш складана. 825 00:49:00,650 --> 00:49:04,960 Існуе літаральна з заявай, у SQL называецца START TRANSACTION. 826 00:49:04,960 --> 00:49:08,300 Гэтак жа, як ёсць SELECT, UPDATE, INSERT, DELETE, і далучыцца і куча іншых, 827 00:49:08,300 --> 00:49:10,970 Ёсць ключавыя словы, як пачаць транзакцыю. 828 00:49:10,970 --> 00:49:13,560 І што вы тады робіце ў кантэксце PSET 7 - 829 00:49:13,560 --> 00:49:17,270 Вы не павінны рабіць гэта для PSET 7; ён відавочна адмаўляў, як не трэба, 830 00:49:17,270 --> 00:49:18,830 але для канчатковых праектаў гэта можа быць карысна - 831 00:49:18,830 --> 00:49:22,820 калі вы тэлефануеце запыт START TRANSACTION, а затым іншы запыт 832 00:49:22,820 --> 00:49:25,620 , А затым яшчэ адзін запыт, а затым яшчэ, яшчэ, і яшчэ, 833 00:49:25,620 --> 00:49:31,860 гэтыя запыты фактычна не будзе выконвацца да выкліку SQL заяву COMMIT, 834 00:49:31,860 --> 00:49:37,220 у гэты момант, будзь то 2 заявы або 20 заяў, усе яны будуць выкананы адразу, 835 00:49:37,220 --> 00:49:42,770 гэта азначае, ніхто не можа выпадкова купіць занадта шмат малака або дэбетавай занадта шмат грошай 836 00:49:42,770 --> 00:49:46,340 або купіць занадта шмат акцый, таму што ўсе вашыя запыты будзе выконваць 837 00:49:46,340 --> 00:49:48,410 спіной да спіны, каб спіна да спіны. 838 00:49:48,410 --> 00:49:51,580 І гэта вельмі важна, асабліва калі вы робіце нешта накшталт гэтага. 839 00:49:51,580 --> 00:49:54,900 Гэта адвольны прыклад, які кажа давайце адновім банкаўскага рахунку 840 00:49:54,900 --> 00:50:00,200 шляхам устанаўлення балансу роўная балансу - $ 1000, дзе нумар рахунку 2. 841 00:50:00,200 --> 00:50:04,260 І тады другі аператар цяпер давайце дэпазіт, $ 1000 842 00:50:04,260 --> 00:50:07,310 ў чужой банкаўскі рахунак, кошт якога нумар 1. 843 00:50:07,310 --> 00:50:10,400 >> Іншымі словамі, гэта ідэальны прыклад таго, дзе вы хочаце, каб пераканацца, 844 00:50:10,400 --> 00:50:13,590 што абодва гэтыя заявы адбыцца ці не на ўсіх 845 00:50:13,590 --> 00:50:15,450 паколькі ў адваротным выпадку кліент збіраецца ўкручаны 846 00:50:15,450 --> 00:50:17,670 і вы збіраецеся забраць свае грошы, а не ўнесці яго ў іншым месцы, 847 00:50:17,670 --> 00:50:20,470 або банк будзе ўкручаны, дзе вы збіраецеся ўнесці грошы 848 00:50:20,470 --> 00:50:23,140 але на самой справе не адняць яго з уліковага запісу карыстача. 849 00:50:23,140 --> 00:50:25,810 Такім чынам, вы хочаце, каб яны абодва выконваць разам. 850 00:50:25,810 --> 00:50:29,140 Такім чынам уваходзіць у свет аперацый. 851 00:50:29,140 --> 00:50:31,360 Так што гэта нешта мець у задняй частцы вашага розуму, 852 00:50:31,360 --> 00:50:34,710 не столькі для мэтаў толькі канчатковы праект, 853 00:50:34,710 --> 00:50:36,700 Але калі вы хочаце прыняць ваш канчатковы праект дзесьці, 854 00:50:36,700 --> 00:50:39,040 калі вы хочаце, каб запусціць некаторыя кампаніі вакол яго, 855 00:50:39,040 --> 00:50:41,270 калі вы хочаце вырашыць праблему некаторыя студэнцкія групы на тэрыторыі кампуса 856 00:50:41,270 --> 00:50:45,210 і на самай справе ёсць жывы, актыўны сайт, гэта свайго роду тонкія памылкі, якія могуць узнікнуць 857 00:50:45,210 --> 00:50:49,480 калі вы не зусім прадумаць, што можа здарыцца, калі 2 чалавекі 858 00:50:49,480 --> 00:50:54,190 спрабуюць атрымаць доступ да вашага сайту ў літаральным і той жа момант часу, 859 00:50:54,190 --> 00:50:56,890 якой іх запыты маглі б атрымаць пераплятаюцца паміж сабой. 860 00:50:58,840 --> 00:51:01,420 >> Гатовыя да некаторых JavaScript, тізер яго? 861 00:51:01,420 --> 00:51:04,320 Гэта наш апошні мовы на працягу семестра. Добра. 862 00:51:04,320 --> 00:51:09,940 На шчасце, JavaScript выглядае вельмі, вельмі, вельмі падобныя на 2-х мовах, C і PHP, 863 00:51:09,940 --> 00:51:11,140 мы зрабілі да гэтага часу. 864 00:51:11,140 --> 00:51:14,340 Там няма JavaScript у PSET 7, але гэта неверагодна карысны інструмент 865 00:51:14,340 --> 00:51:18,840 калі справа даходзіць да вэб-праектаў або канчатковых сапраўды толькі вэб-праграмавання ў цэлым. 866 00:51:18,840 --> 00:51:20,950 Такім чынам, кароткі агляд таго, што называецца DOM. 867 00:51:20,950 --> 00:51:23,600 Вось гэта супер простую вэб-старонку, якая сапраўды проста кажа Добры дзень, свет! 868 00:51:23,600 --> 00:51:25,970 як у назве і ў целе. 869 00:51:25,970 --> 00:51:29,270 Як водступ было выказаць здагадку некаторы час, 870 00:51:29,270 --> 00:51:31,380 сапраўды існуе іерархія вэб-старонак. 871 00:51:31,380 --> 00:51:34,220 Я мог намаляваць гэты ж фрагмент HTML ў выглядзе дрэва, 872 00:51:34,220 --> 00:51:37,470 успамінаючы нашы абмеркавання структур дадзеных у C, наступным чынам. 873 00:51:37,470 --> 00:51:40,710 У мяне ёсць некаторыя адмысловыя каранёвай вузел завецца вузлом дакумента, 874 00:51:40,710 --> 00:51:43,650 і мы ўбачым, аналаг гэтага ў наяўнасць у адну хвіліну. 875 00:51:43,650 --> 00:51:48,330 Першым дзіцем і адзіным сынам, што ў дадзеным выпадку з'яўляецца HTML тэгаў. 876 00:51:48,330 --> 00:51:49,880 Там няма прамога адлюстравання тыпу дакумента. 877 00:51:49,880 --> 00:51:53,170 Гэта асаблівая рэч, таму мы павінны проста ігнараваць яго, калі справа даходзіць да гэтага DOM, 878 00:51:53,170 --> 00:51:55,810 гэтая аб'ектная мадэль дакументаў дрэва. 879 00:51:55,810 --> 00:51:59,530 Звярніце ўвагу, што тэг HTML, які я адвольна намаляваны ў выглядзе прастакутніка, 880 00:51:59,530 --> 00:52:02,890 мае 2 дзяцей: галава і цела. 881 00:52:02,890 --> 00:52:04,840 >> Тыя, якія гэтак жа малюецца як прастакутнікі. 882 00:52:04,840 --> 00:52:08,970 Гэта мае сэнс наглядна, што галава злева ад цела. 883 00:52:08,970 --> 00:52:11,960 Маецца на ўвазе, што галава ідзе першым у дрэва. 884 00:52:11,960 --> 00:52:14,910 Так што там на самой справе заказ на дрэва, калі вы малюеце гэта так, 885 00:52:14,910 --> 00:52:17,460 хоць формы і яшчэ шмат чаго з'яўляюцца адвольнымі. 886 00:52:17,460 --> 00:52:20,360 Між тым кіраўнік мае аднаго дзіцяці, называюць назвы, 887 00:52:20,360 --> 00:52:25,170 і назва на самой справе мае свой уласны дзіця, які з'яўляецца "прывітанне, свет", 888 00:52:25,170 --> 00:52:32,210 якія я наўмысна звярнуў як авал тут, каб зрабіць гэта трохі адрозніваецца ад прамавугольніка. 889 00:52:32,210 --> 00:52:37,420 Гэтыя прастакутнікі элементаў, у той час як прывітанне, свет сапраўды тэкставага вузла. 890 00:52:37,420 --> 00:52:39,850 Так што гэта вузел у дрэве, але гэта іншы тып вузла 891 00:52:39,850 --> 00:52:41,730 так што я звярнуў яго адвольна па-рознаму. 892 00:52:41,730 --> 00:52:45,000 Сапраўды гэтак жа нічога целе ёсць дзіця называецца Hello, World, а таксама, 893 00:52:45,000 --> 00:52:47,910 так іншай вузел нават калі яны выпадкова і той жа тэкст, 894 00:52:47,910 --> 00:52:52,100 але я намаляваў яго, выкарыстоўваючы тую ж форму. Так каго гэта хвалюе? 895 00:52:52,100 --> 00:52:56,820 Ну, што добрае пра HTML з'яўляецца тое, што ў яго ёсць гэтая іерархічная прырода. 896 00:52:56,820 --> 00:53:01,010 І што прыемна аб JavaScript і, у прыватнасці бібліятэк, якія знаходзяцца ў вольным доступе 897 00:53:01,010 --> 00:53:07,120 і папулярнай, як jQuery, вы можаце перамяшчацца па структуры дрэва так дзіўна лёгка. 898 00:53:07,120 --> 00:53:11,790 Любы з матэрыялу, які мы зрабілі ў C з паказальнікамі і перамяшчэння дрэў і рэкурсіі на вузлах 899 00:53:11,790 --> 00:53:15,300 левая дзіцяці правы дзіцяці, раптам мы можам сартаваць лічыць само сабой якія разумеюцца 900 00:53:15,300 --> 00:53:19,450 як дзіўна асветніцкай калі зусім не хвалюе 901 00:53:19,450 --> 00:53:22,470 але далёка не эфектыўны спосаб ісці аб праграмаванні. 902 00:53:22,470 --> 00:53:24,470 І так з гэтым высокі ўзровень мовы, як JavaScript 903 00:53:24,470 --> 00:53:28,340 мы зможам перамяшчацца па дрэве значна больш інтуітыўна. 904 00:53:28,340 --> 00:53:30,430 >> І сапраўды, сінтаксіс будзе добра знаёмыя. 905 00:53:30,430 --> 00:53:32,950 Калі вы ніколі не бачылі перш за JavaScript, гэта сапраўды добрая спасылка 906 00:53:32,950 --> 00:53:35,910 ад Mozilla людзі, людзі, якія робяць Firefox, 907 00:53:35,910 --> 00:53:38,370 так што не саромейцеся праглядаць, што ў вашым зручнасці. 908 00:53:38,370 --> 00:53:41,590 Што вы знойдзеце - і гэтыя слайды ідэнтычныя тым, што мы выкарыстоўвалі другі дзень - 909 00:53:41,590 --> 00:53:44,030 Аналагічна, асноўныя сышоў. 910 00:53:44,030 --> 00:53:47,010 Таму, калі вы пішаце праграму ў JavaScript, няма галоўнай функцыі. 911 00:53:47,010 --> 00:53:48,690 Вы проста пачаць пісаць код. 912 00:53:48,690 --> 00:53:51,660 Але ключавое адрозненне паміж JavaScript і C і PHP 913 00:53:51,660 --> 00:53:55,890 з'яўляецца тое, што ў той час як C і PHP да гэтага часу былі выкананы на боку сервера 914 00:53:55,890 --> 00:53:59,180 на прыладу ў гэтым выпадку ці ў больш агульным-серверам, 915 00:53:59,180 --> 00:54:04,270 Наяўнасць па канструкцыі звычайна выконваецца з дапамогай браўзэра. 916 00:54:04,270 --> 00:54:08,440 Іншымі словамі, вы можаце напісаць код JavaScript, калі мы збіраемся, 917 00:54:08,440 --> 00:54:13,080 на серверы ў прыбор, але ўключыць яе ў лік вашых HTML, сярод вашых CSS, 918 00:54:13,080 --> 00:54:16,100 Сярод вашых GIF-і PNG-вашы і вашага выявы ў фармаце JPEG 919 00:54:16,100 --> 00:54:19,170 так што, калі карыстальнік наведвае вэб-старонку, калі вы выкарыстоўваеце JavaScript, 920 00:54:19,170 --> 00:54:21,770 , Што код JavaScript прыходзіць ад сервера да браўзэра, 921 00:54:21,770 --> 00:54:24,540 і гэта браўзэр, які фактычна выконвае яго. 922 00:54:24,540 --> 00:54:27,960 Так што гэта мае значныя наступствы нават для інтэлектуальнай уласнасці. 923 00:54:27,960 --> 00:54:32,600 Гэта глупства нават думаць аб абароне вашага IP калі справа даходзіць да кода JavaScript 924 00:54:32,600 --> 00:54:37,560 таму што па сваёй прыродзе мовы ён запускаецца на выкананне звычайна баку браўзэра. 925 00:54:37,560 --> 00:54:40,360 >> Вы можаце схаваць яго, што азначае, што вы можаце зрабіць яго з розуму, і пачварнае 926 00:54:40,360 --> 00:54:45,400 , Без прабелаў, жудасныя імёны зменных, каб зрабіць гэта цяжэй для людзей, каб скрасці ваш IP, 927 00:54:45,400 --> 00:54:48,120 але галоўнае ў тым, што ён выкананы баку браўзэра. 928 00:54:48,120 --> 00:54:51,790 Нават калі, як у бок JavaScript можа быць выкарыстаны на боку сервера, 929 00:54:51,790 --> 00:54:54,480 Найбольш распаўсюджаны выпадак выкарыстання прама цяпер усё яшчэ знаходзіцца на браўзэр. 930 00:54:54,480 --> 00:54:59,800 А вось як ён выглядае. Вось калі-інакш, калі-інакш будуецца так жа, як C, гэтак жа, як PHP. 931 00:54:59,800 --> 00:55:02,420 Вось гэта лагічны выраз, калі вы "ці" 2 рэчы разам. 932 00:55:02,420 --> 00:55:04,330 Вось калі вы "і" 2 рэчы разам. 933 00:55:04,330 --> 00:55:08,300 Вось перамыкач заяву, якое падобна на PHP 934 00:55:08,300 --> 00:55:10,810 у тым, што вы можаце перамыкацца на розныя тыпы каштоўнасцяў. 935 00:55:10,810 --> 00:55:15,180 Завесы Аналагічна, для завес тут, якія структураваныя аднолькава да таго, што мы бачылі раней. 936 00:55:15,180 --> 00:55:18,110 У той час як завесы, у нас ёсць рабіць падчас цыклаў. 937 00:55:18,110 --> 00:55:20,290 Зменныя, зусім крыху іншая. 938 00:55:20,290 --> 00:55:24,560 Вы аб'яўляць зменныя як вы робіце ў PHP і C, 939 00:55:24,560 --> 00:55:27,860 але так жа з'яўляецца наяўнасць слаба тыпізаваных. 940 00:55:27,860 --> 00:55:32,730 Вы не паказалі Int або з якая плавае кропкай або радок або што-небудзь падобнае, што звычайна. 941 00:55:32,730 --> 00:55:34,240 Вы можаце задаць вобл. 942 00:55:34,240 --> 00:55:38,040 Вам не трэба паказваць зменную, але гэта мае значэнне, калі вы не робіце. 943 00:55:38,040 --> 00:55:42,000 Звычайна, калі вы апусціце Вар, вы выпадкова стварыць глабальную зменную, а не мясцовыя. 944 00:55:42,000 --> 00:55:46,420 Такім чынам, дазвольце мне прапанаваць, што вы амаль заўсёды толькі сказаць, вар, а затым імя зменнай. 945 00:55:46,420 --> 00:55:48,740 Гэта не тып, гэта проста VAR для зменнай. 946 00:55:48,740 --> 00:55:52,930 Гэта было б, напрыклад, няхай гэта будзе 123 ці "прывітанне, свет". 947 00:55:52,930 --> 00:55:58,910 Масівы прысутнічаюць і сінтаксічна падобныя на PHP. 948 00:55:58,910 --> 00:56:03,690 Я скажу VAR нумары і затым выкарыстоўваць квадратныя дужкі зноў распачаць зменную 949 00:56:03,690 --> 00:56:08,870 , Тып якога з'яўляецца масіў, які мае менавіта гэтыя нумары ў ім праз коску. 950 00:56:08,870 --> 00:56:11,740 І тады, нарэшце, гэта адзінае, што сапраўды выглядае інакш. 951 00:56:11,740 --> 00:56:16,700 Нагадаем, што ў PHP, мы б рэалізаваны асацыятыўны масіў для студэнтаў 952 00:56:16,700 --> 00:56:20,220 як Zamyla, што можа выглядаць наступным чынам, дзе пераменная называецца студэнта. 953 00:56:20,220 --> 00:56:23,370 Квадратныя дужкі азначаюць тут ідзе масіва. 954 00:56:23,370 --> 00:56:28,500 >> Той факт, што я не выкарыстоўваю лікавыя індэксы, але радка - ID, дома, і назва - 955 00:56:28,500 --> 00:56:30,990 азначае, што гэта асацыятыўны масіў, 956 00:56:30,990 --> 00:56:34,490 і гэтыя стрэлкі з знак роўнасці і кутняй кранштэйны 957 00:56:34,490 --> 00:56:37,310 азначае, што ключ "ID", значэнне роўна 1; 958 00:56:37,310 --> 00:56:39,310 ключ "дом", значэнне Winthrop дома; 959 00:56:39,310 --> 00:56:41,800 ключ "імя", значэнне Zamyla Чан. 960 00:56:41,800 --> 00:56:47,110 Такім чынам, ёсць 3 ключа ўнутры гэтага асацыятыўны масіў, кожны з якіх мае сваё значэнне. 961 00:56:47,110 --> 00:56:52,880 Мы бачылі, што ў PSET 7, ці вы хутка, у наяўнасць ж ідэю, 962 00:56:52,880 --> 00:56:55,220 але гэта будзе выглядаць наступным чынам. 963 00:56:55,220 --> 00:57:00,070 Так VAR студэнта - не знак даляра і ніякай згадкі тыпу да гэтага часу, але вар - 964 00:57:00,070 --> 00:57:05,860 роўных, а затым адкрыць фігурныя дужкі, таму што ў JavaScript, калі ў вас пар ключ-значэнне, 965 00:57:05,860 --> 00:57:08,900 вы на самой справе выкарыстоўваюць так званы аб'ект. 966 00:57:08,900 --> 00:57:13,490 І тыя з вас, хто зойме АСК ТП і да т.п. маглі б узгадаць аб'ектаў Java 967 00:57:13,490 --> 00:57:15,140 ці падобныя мовы. 968 00:57:15,140 --> 00:57:17,880 JavaScript не з'яўляецца Java, у першую чаргу. 969 00:57:17,880 --> 00:57:21,600 Гэта было наўмыснае гадоў таму дызайнерскае рашэнне, каб збіць нешта іншае, што было папулярна, 970 00:57:21,600 --> 00:57:25,640 яго імя, нават калі яно не мае прынцыповага адносіны да сябе Яву. 971 00:57:25,640 --> 00:57:31,490 JavaScript ёсць аб'екты, а іх стварэнні шляхам абазначэння фігурнай дужкай. 972 00:57:31,490 --> 00:57:36,710 Аб'екты ў JavaScript з'яўляюцца ў значнай ступені эквівалентна асацыятыўныя масівы ў PHP 973 00:57:36,710 --> 00:57:40,030 калі справа даходзіць да захоўвання дадзеных ўнутры іх. 974 00:57:40,030 --> 00:57:44,100 >> Але яшчэ больш магутна у JavaScript вы можаце звязаць вельмі лёгка функцыямі 975 00:57:44,100 --> 00:57:48,040 Унутры аб'екта, і, хоць вы можаце зрабіць гэта на іншых мовах, 976 00:57:48,040 --> 00:57:50,040 гэта даволі распаўсюджаная парадыгма, як мы ўбачым. 977 00:57:50,040 --> 00:57:54,380 Карацей кажучы, гэты аб'ект ўяўляе студэнта, які асабліва Zamyla, 978 00:57:54,380 --> 00:58:00,380 і гэта падобна канцэптуальна, проста сінтаксічна адрозніваецца ад гэтага. 979 00:58:00,380 --> 00:58:03,840 Давайце рэальна выкарыстоўваць JavaScript у файл. 980 00:58:03,840 --> 00:58:05,570 Аказваецца, ёсць тэг. 981 00:58:05,570 --> 00:58:08,180 Мы бачылі стылі тэгі і мы бачылі іншыя HTML тэгі. 982 00:58:08,180 --> 00:58:11,510 Тэг на самай справе будзе ўтрымліваць некаторы код JavaScript. 983 00:58:11,510 --> 00:58:15,500 Адпусціце мяне ў прыбор, дзе ў нас ёсць некаторыя зыходныя коды гатовых. 984 00:58:15,500 --> 00:58:18,700 Я не адправіў яго яшчэ на сайце, але я зраблю гэта пасля заняткаў. 985 00:58:18,700 --> 00:58:21,770 Давайце адкрыем да гэтага, blink.html. 986 00:58:21,770 --> 00:58:27,560 Яшчэ ў 1990-х гадах, не было літаральна HTML тэгі называюць імгненне тэгаў, 987 00:58:27,560 --> 00:58:30,340 і гэта была адна з самых цудоўна злоўжываць тэгамі у інтэрнэце 988 00:58:30,340 --> 00:58:36,140 , У якім вы хочаце наведаць некаторыя стылі 1990-х гадах вэб-старонку і пачаць бачыць тэкст перарывістым вам, як гэта, 989 00:58:36,140 --> 00:58:39,810 Вынікі маркіза тэг, які збіраецца тэксту, як гэта. 990 00:58:39,810 --> 00:58:45,070 Адзін з нешматлікіх выпадкаў, калі свет фактычна пагадзіўся на вэб-стандарт, 991 00:58:45,070 --> 00:58:48,250 усё праз борт забіў імгненне тэгі некалькі гадоў таму. 992 00:58:48,250 --> 00:58:52,860 Але мы можам ўваскрэсіць яго наяўнасць у якасці дэманстрацыі сілы ў вас ёсць 993 00:58:52,860 --> 00:58:56,660 калі вы можаце напісаць праграму, усярэдзіне вэб-старонкі. 994 00:58:56,660 --> 00:59:00,240 Перш за ўсё, давайце прапусціць новы матэрыял і засяродзіцца толькі на старых. 995 00:59:00,240 --> 00:59:01,780 >> Вось старыя рэчы ў гэтым прыкладзе. 996 00:59:01,780 --> 00:59:06,350 У мяне ёсць тэгі HTML, кіраўнік тэгі і загаловак. 997 00:59:06,350 --> 00:59:11,210 Тады ў мяне ёсць цела тэга тут спраў, якія Нагадаем, гэта проста прастакутная падзел старонкі 998 00:59:11,210 --> 00:59:14,720 што я даў унікальны ідэнтыфікатар адвольна "прывітанне", каб, 999 00:59:14,720 --> 00:59:18,320 менавіта так, у мяне ёсць спосаб адназначна спасылаючыся на яго, што ёсць вельмі просты тэкст: 1000 00:59:18,320 --> 00:59:20,220 Добры дзень, свет. 1001 00:59:20,220 --> 00:59:23,940 Цяпер дазвольце мне прагортку ўверх да вяршыні гэты файл і паглядзець, што новага. 1002 00:59:23,940 --> 00:59:27,710 Першае, што новага папаўнення з'яўляецца тэг, 1003 00:59:27,710 --> 00:59:31,280 і ўнутры апавяшчэнне тэгі сцэнару я абвясціў функцыю. 1004 00:59:31,280 --> 00:59:34,610 Каб абвясціць функцыю ў JavaScript, вельмі падобны на PHP, 1005 00:59:34,610 --> 00:59:37,930 Вы літаральна напісаць функцыю, то імя функцыі, дужкі, 1006 00:59:37,930 --> 00:59:40,400 і, магчыма, некаторыя аргументы, калі ён прымае любыя. 1007 00:59:40,400 --> 00:59:43,510 Тады ў мяне ёсць фігурныя дужкі, як звычайна, і цяпер у нас ёсць трохі новага кода 1008 00:59:43,510 --> 00:59:45,230 але давайце паглядзім, што гэта азначае. 1009 00:59:45,230 --> 00:59:48,670 Так VAR DIV, гэта проста азначае, дайце мне зменныя званых спраў. 1010 00:59:48,670 --> 00:59:50,530 Я мог бы назваць яе Foo, але я хацеў, каб яна выклікалася спраў 1011 00:59:50,530 --> 00:59:52,620 па прычынах, якія будуць ясныя ў секунду. 1012 00:59:52,620 --> 00:59:57,480 Тады атрымліваецца ў JavaScript - і гэта JavaScript код, укаранёны ў вэб-старонкі - 1013 00:59:57,480 --> 01:00:01,760 ёсць адмысловая глабальная пераменная роду называецца дакумент. 1014 01:00:01,760 --> 01:00:04,780 Наяўнасць у рэчаіснасці з'яўляецца аб'ектна-арыентаваным мовай. 1015 01:00:04,780 --> 01:00:07,230 Мы не будзем удавацца ў падрабязнасці ў 50 аб тым, што гэта азначае, што, 1016 01:00:07,230 --> 01:00:11,180 але цяпер ведаю, што аб'ект з'яўляецца ў значнай ступені як структуры. 1017 01:00:11,180 --> 01:00:14,740 Як мы бачылі, шлях назад, калі ў адной з першых праблемай ўсталёўвае 1018 01:00:14,740 --> 01:00:17,150 дзе мы паклалі шмат інфармацыі ў структуры, 1019 01:00:17,150 --> 01:00:21,330 Аналагічным з'яўляецца дакументам спецыяльнай структуры, якая пастаўляецца з браўзэрам, 1020 01:00:21,330 --> 01:00:24,810 пастаўляецца з любой вэб-старонкі. Гэта не тое, што я стварыў. 1021 01:00:24,810 --> 01:00:28,210 Унутры гэтай структуры дакумента, хоць, вы павінны не толькі дадзеныя 1022 01:00:28,210 --> 01:00:30,010 але вы таксама павінны функцый. 1023 01:00:30,010 --> 01:00:34,090 >> І ў любы час у вас ёсць функцыя ўнутры структуры, усярэдзіне аб'екта, 1024 01:00:34,090 --> 01:00:36,490 гэта называецца метадам. Але гэта тое ж самае. 1025 01:00:36,490 --> 01:00:40,110 Метад з'яўляецца функцыяй, якая проста так здараецца, усярэдзіне нешта іншае. 1026 01:00:40,110 --> 01:00:42,990 Такім чынам, гэта азначае, што спецыяльная глабальная пераменная дакументаў 1027 01:00:42,990 --> 01:00:47,690 ёсць функцыя, званая GetElementById, якая літаральна робіць гэта. 1028 01:00:47,690 --> 01:00:52,460 Гэта дапаможа вам элемент з DOM, Document Object Model дрэва, 1029 01:00:52,460 --> 01:00:55,520 ідэнтыфікатар якога ў гэтым выпадку прывітанне. 1030 01:00:55,520 --> 01:00:59,200 Іншымі словамі, увесь гэты час мы патрацілі на структуры дадзеных, у гульню ўступае тут. 1031 01:00:59,200 --> 01:01:01,400 Гэтая карціна DOM, што ў нас было хвіліну назад, 1032 01:01:01,400 --> 01:01:06,100 нават калі старонка выглядае крыху інакш, калі б я меў спраў у гэтай карціне, 1033 01:01:06,100 --> 01:01:11,180 document.getElementById, што вернецца да мяне будзе фактычна паказальнік 1034 01:01:11,180 --> 01:01:15,440 ў прастакутнік ў дрэве, спасылка на прастакутнік ў дрэве. 1035 01:01:15,440 --> 01:01:18,410 Дык вось што гэта азначае на самай справе патэлефанаваць па адным з гэтых функцый. 1036 01:01:18,410 --> 01:01:21,960 У гэтым выпадку зноў жа гэта гл. Гэта не цела або загаловак. 1037 01:01:21,960 --> 01:01:26,480 Такім чынам, давайце паглядзім, што я потым рабіць з гэтым спраў цяпер, што ў мяне ўнутры гэтай зменнай спраў. 1038 01:01:26,480 --> 01:01:32,580 Аказваецца, з JavaScript у вас ёсць магчымасць наладзіць CSS вашай старонкі дынамічна. 1039 01:01:32,580 --> 01:01:39,060 Да гэтага часу ўсе CSS мы зрабілі, хоць і абмежаваную, у атрыбуты стылю, 1040 01:01:39,060 --> 01:01:41,730 ці дзе яшчэ былі пакласці CSS? 1041 01:01:42,730 --> 01:01:45,810 Я збольшага сапсаваў той. У стылі тэгаў у верхняй частцы файла. 1042 01:01:45,810 --> 01:01:49,180 Ці трэцяе месца было ў? 1043 01:01:50,710 --> 01:01:54,590 >> Знешні файл, нешта. CSS. 1044 01:01:54,590 --> 01:01:56,730 Так што тыя 3 месца мы зрабілі CSS да гэтага часу, 1045 01:01:56,730 --> 01:01:59,310 але загваздка ў тым, што мы жорстка ўсё гэта. 1046 01:01:59,310 --> 01:02:04,060 Вы вырашылі, як вы нырнулі ў PSET 7, мы вырашылі, перш чым чытаць лекцыі, што наш CSS будзе. 1047 01:02:04,060 --> 01:02:07,380 Але калі вы хочаце змяніць свой CSS, вы можаце зрабіць гэта 1048 01:02:07,380 --> 01:02:09,370 калі ў вас ёсць фактычныя мовы праграмавання. 1049 01:02:09,370 --> 01:02:13,910 CSS, HTML - не мовы праграмавання. Наяўнасць ёсць. 1050 01:02:13,910 --> 01:02:18,200 Вось і атрымліваецца, што як толькі ў вас ёсць адзін з тых прастакутнікі з дрэва 1051 01:02:18,200 --> 01:02:23,050 называецца DOM, яна сама некаторых дадзеных ўнутры яго. 1052 01:02:23,050 --> 01:02:27,820 Так спраў, што я проста схапіла з дрэва мае тое, што мы называем уласнасці ўнутры яго 1053 01:02:27,820 --> 01:02:34,390 называецца стыль, і стыль уласнасці само ўласцівасць бачнасці. 1054 01:02:34,390 --> 01:02:37,330 Я ведаю, што гэта толькі гледзячы кіраўніцтва карыстальніка па CSS. 1055 01:02:37,330 --> 01:02:41,160 Аказваецца, ёсць ўласцівасць бачнасці CSS, што робіць тое, што ён кажа. 1056 01:02:41,160 --> 01:02:44,530 Гэта робіць нешта бачнае ці не, бачным ці не. 1057 01:02:44,530 --> 01:02:46,810 А як вы гэта зробіце гэта. 1058 01:02:46,810 --> 01:02:50,510 Я прашу праграмна, калі бачнасць гэтага DIV ўтоена, 1059 01:02:50,510 --> 01:02:53,390 тое, што я магу змяніць яго? Visible. 1060 01:02:53,390 --> 01:02:58,840 Інакш, калі бачнасць гэтай старонкі не хаваецца, па логіцы рэчаў я зрабіць яго схаваным. 1061 01:02:58,840 --> 01:03:04,070 Я паняцця не маю, чаму гэта бачныя і схаваныя, а не бачнага і нябачнага. 1062 01:03:04,070 --> 01:03:06,000 Гэта было дрэннае рашэнне дызайну па шляху. 1063 01:03:06,000 --> 01:03:09,530 Але гэта сапраўды супрацьлегласцяў ў CSS: бачныя і схаваныя. 1064 01:03:09,530 --> 01:03:15,520 Усё гэта ёсць, гэта азначае змяненне CSS майго файла і выключаецца, і выключаецца 1065 01:03:15,520 --> 01:03:16,870 для гэтага канкрэтнага спраў. 1066 01:03:16,870 --> 01:03:20,630 Але зноў жа, гэта функцыя называецца міргаць. Калі імгненне функцыя называецца? 1067 01:03:20,630 --> 01:03:24,080 Аказваецца, што ёсць іншы спецыяльнай глабальнай зменнай завецца акном, 1068 01:03:24,080 --> 01:03:28,220 блізкія па духу дакумента, але ў той час як дакумент адносіцца да вашай вэб-старонцы, 1069 01:03:28,220 --> 01:03:31,700 як дрэва DOM, HTML вы паслалі з сервера, 1070 01:03:31,700 --> 01:03:35,250 вокны ставіцца да хром вакол яго, у адраснай радку, у радку загалоўка, 1071 01:03:35,250 --> 01:03:37,880 і ўсё, што рэчы вакол вашай вэб-старонцы. 1072 01:03:37,880 --> 01:03:42,800 >> І атрымліваецца, што аб'ект вокны мае адмысловае ўнутры функцыі, званай setInterval 1073 01:03:42,800 --> 01:03:44,360 , Што робіць тое, што ён кажа. 1074 01:03:44,360 --> 01:03:48,600 Ён будзе ўсталёўваць інтэрвал - у гэтым выпадку кожныя 500 мілісекунд - 1075 01:03:48,600 --> 01:03:52,270 і зрабіць здагадку, што ён збіраецца рабіць кожныя 500 мілісекунд? 1076 01:03:52,270 --> 01:03:55,240 Гэта будзе выконваць гэтую функцыю мігцення. 1077 01:03:55,240 --> 01:03:58,560 І што прыемна тут з'яўляецца тое, што мы маглі б зрабіць гэта ў C, хоць мы ніколі не рабілі. 1078 01:03:58,560 --> 01:04:01,580 C сапраўды ёсць тое, што называецца паказальнікаў на функцыі, дзе вы можаце перадаць функцыі па 1079 01:04:01,580 --> 01:04:03,140 у якасці аргументаў. 1080 01:04:03,140 --> 01:04:07,620 Сапраўды гэтак жа ў наяўнасць Вы можаце перадаць імя функцыі ў іншую функцыю. 1081 01:04:07,620 --> 01:04:10,630 І звярніце ўвагу, што я раблю. Я не раблю гэтага. 1082 01:04:10,630 --> 01:04:14,380 Калі я стаўлю дужкі пасля міргаць, гэта азначае, тэлефануйце імгненне функцыі. 1083 01:04:14,380 --> 01:04:17,430 Калі б я іх апусціць, гэта азначае, што тут імгненне функцыі 1084 01:04:17,430 --> 01:04:21,330 так што setInterval можна назваць кожныя 500 мілісекунд. 1085 01:04:21,330 --> 01:04:28,200 Такім чынам, канчатковы вынік, зверскім, хоць гэта, што калі я іду ў лакальны і перайсці да blink.html, 1086 01:04:28,200 --> 01:04:32,120 Цяпер у мяне гэта адбываецца зноў і зноў. 1087 01:04:32,120 --> 01:04:34,950 А калі я на самай справе агляд элементаў, давайце паглядзім, калі мы можам гэта ўбачыць. 1088 01:04:34,950 --> 01:04:38,550 Дазвольце мне Агледзіце элемент, дазвольце мне проста пракруціць ўніз трохі, 1089 01:04:38,550 --> 01:04:44,320 Дазвольце мне выбраць элементы тут, і звярніце ўвагу на DOM ўнутры інспектар Chrome. 1090 01:04:44,320 --> 01:04:48,840 Гэта літаральна змяняецца і назад кожныя 500 мілісекунд. 1091 01:04:48,840 --> 01:04:55,660 Калі мы вернемся да нашага аднаму Нейт, 1092 01:04:55,660 --> 01:05:00,020 Калі вы калі-небудзь задумваліся, як гэта працуе, падобная ідэя з інтэрвалам, 1093 01:05:00,020 --> 01:05:04,810 Nate але на самой справе робіць вельмі эфектыўна выкарыстанне колеру ў дадзеным канкрэтным выпадку. 1094 01:05:04,810 --> 01:05:07,350 Так што яшчэ мы можам рэальна зрабіць з гэтым? 1095 01:05:07,350 --> 01:05:09,990 Давайце адкрыем яшчэ адзін прыклад і паспрабаваць нешта 1096 01:05:09,990 --> 01:05:12,940 гэта праграмна нават больш карысная, чым рабіць рэчы міргаць. 1097 01:05:12,940 --> 01:05:17,990 Адпусціце мяне ў нашым каталогу формы сёння і ідзем у form0. 1098 01:05:17,990 --> 01:05:20,820 Гэта быў самы пачварны магчымай форме, што я мог прыдумаць, 1099 01:05:20,820 --> 01:05:23,290 і дазвольце мне паказаць вам, як гэта выглядае ў браўзэры. 1100 01:05:23,290 --> 01:05:28,960 >> Дазвольце мне перайсці ў лакальны / формы, і гэта form0. 1101 01:05:28,960 --> 01:05:33,400 Гэта супер выродлівыя формы HTML, які мае некалькі палёў для электроннай пошты, пароляў, 1102 01:05:33,400 --> 01:05:37,190 пароль, а затым трохі сцяжок, каб пагадзіцца на некаторыя ўмовы. 1103 01:05:37,190 --> 01:05:41,350 Загваздка ў тым, калі я наведваю гэтую форму, і я не хачу, каб даць вам мой адрас электроннай пошты, 1104 01:05:41,350 --> 01:05:44,730 Я не хачу, каб пагадзіцца з умовамі, можа быць, я магу націснуць Рэгістрацыя 1105 01:05:44,730 --> 01:05:46,920 і гэта дазваляе мне праз так ці інакш. 1106 01:05:46,920 --> 01:05:50,800 Гэта адбываецца прадставіць дурныя файле PHP называецца dump.php. 1107 01:05:50,800 --> 01:05:58,420 Усё гэта робіць друк змесціва $ _GET толькі для дыягнастычных мэтаў. 1108 01:05:58,420 --> 01:06:01,580 Гэта тое, што было прадстаўлена карыстачу толькі цяпер. 1109 01:06:01,580 --> 01:06:05,010 Але выкажам здагадку, што мы на самай справе хочам праверыць форму прадстаўлення карыстальнікаў. 1110 01:06:05,010 --> 01:06:06,530 Адпусціце мяне ў версіі 1. 1111 01:06:06,530 --> 01:06:11,420 Гэта form1.html. Гэта выглядае эстэтычна гэтак жа дрэнна, але зьвярніце ўвагу, як гэта фантазіі. 1112 01:06:11,420 --> 01:06:15,450 Калі я націскаю Рэгістрацыя без супрацоўніцтва, я атрымліваю крыкнуў. 1113 01:06:15,450 --> 01:06:17,320 "Вы павінны пазначыць свой адрас электроннай пошты". 1114 01:06:17,320 --> 01:06:21,670 Добра. Такім чынам, дазвольце мне паспрабаваць. Так malan@harvard.edu. Мне не патрэбны пароль. 1115 01:06:21,670 --> 01:06:25,100 Зарэгіструйцеся. "Вы павінны ўвесці пароль". Добра. 1116 01:06:25,100 --> 01:06:28,470 Так што я буду падаваць пароль малінавы. Зарэгіструйцеся. 1117 01:06:28,470 --> 01:06:32,300 "Паролі не супадаюць". Я павінен зараз ўвесці ў малінавых тут. 1118 01:06:32,300 --> 01:06:35,710 Я выпадкова праверыў гэта. Зарэгіструйцеся. 1119 01:06:35,710 --> 01:06:39,860 "Вы павінны пагадзіцца з умовамі". Добра. Пагадзіцеся там. Зарэгіструйцеся. 1120 01:06:39,860 --> 01:06:43,700 І зараз ён паказвае мне дыягнастычныя там. 1121 01:06:43,700 --> 01:06:45,630 >> Так што ж здарылася? 1122 01:06:45,630 --> 01:06:48,330 У нас была гэтая магчымасць праверкі формы прадстаўлення. 1123 01:06:48,330 --> 01:06:51,420 На самай справе, калі вы зрабілі апусканне ў PSET 7, ёсць функцыя прабачэнні 1124 01:06:51,420 --> 01:06:54,620 , Што робіць яго даволі лёгка крычаць на карыстальнікаў з паведамленнем на экране. 1125 01:06:54,620 --> 01:06:57,580 Я выкарыстоўваю некалькі іншы механізм, функцыя папярэджання, 1126 01:06:57,580 --> 01:07:03,690 які не з'яўляецца функцыя, якая ўсміхнулася, паколькі яна робіць вельмі непрыгожа паведамленні карыстальніка. 1127 01:07:03,690 --> 01:07:05,710 Але давайце паглядзім, што я тут раблю. 1128 01:07:05,710 --> 01:07:09,620 Гэта form1.html, і заўважыў, што ў мяне ёсць некаторыя даволі знаёмы сінтаксіс: 1129 01:07:09,620 --> 01:07:12,920 цела тэга, тэг формы, дзеянне атрыбуту, метаду атрыбут. 1130 01:07:12,920 --> 01:07:17,050 Але заўважце, я даў маёй форме унікальны ідэнтыфікатар для выгоды. 1131 01:07:17,050 --> 01:07:19,190 Затым я атрымаў ліст поле, тып якога з'яўляецца тэкст, 1132 01:07:19,190 --> 01:07:23,780 Пароль поле, тып якога з'яўляецца пароль, пацверджанне поле, тып якога з'яўляецца паролем, 1133 01:07:23,780 --> 01:07:28,070 , А затым сцяжок, імя якога пагадненне сюды, тыпу сцяжок. 1134 01:07:28,070 --> 01:07:30,380 А то ў мяне ёсць кнопка адпраўкі. 1135 01:07:30,380 --> 01:07:33,050 Але зьвярніце ўвагу на верхнюю, што яшчэ ў мяне ёсць. 1136 01:07:33,050 --> 01:07:35,810 Перш за ўсё, ёсць іншы выкарыстаннем тэга сцэнара. 1137 01:07:35,810 --> 01:07:40,520 Калі ў вас ёсць код JavaScript у іншы файл, так жа, як з CSS вы можаце ўключыць яго. 1138 01:07:40,520 --> 01:07:44,530 І вы робіце гэта з дапамогай скрыпту крыніцы, а затым заўважыць, што я ўпэўнены, падлучэнне па-відаць 1139 01:07:44,530 --> 01:07:50,349 у googleapis.com на вельмі доўгі шлях, але чые назвы заканчваюцца ў jquery.min 1140 01:07:50,349 --> 01:07:52,420 для мінімуму. JS. 1141 01:07:52,420 --> 01:07:55,969 JQuery гэта супер папулярная бібліятэка для JavaScript, што проста робіць JavaScript 1142 01:07:55,969 --> 01:07:58,230 Тым больш зручнай у выкарыстанні. 1143 01:07:58,230 --> 01:08:00,610 Ён фактычна стаў стандартам дэ-факта. 1144 01:08:00,610 --> 01:08:04,090 Таму, нягледзячы на ​​тое, што вы збіраецеся глядзець, не з'яўляецца чыстым наяўнасць такога, 1145 01:08:04,090 --> 01:08:09,340 гэта бібліятэка на вяршыні JavaScript гэтак жа, як CS50 бібліятэка пласта 1146 01:08:09,340 --> 01:08:13,670 на вяршыні нізкаўзроўневага кода C; рэальнасць такая, амаль усе ў інтэрнэце выкарыстоўвае яго. 1147 01:08:13,670 --> 01:08:18,030 Так што гэта не навучанне колы. Гэта проста лепшая практыка ў гэтыя дні. 1148 01:08:18,030 --> 01:08:22,830 Зараз звернеце ўвагу ніжэй, чым мой уласны тэг сцэнара, і заўважыў, што я зрабіў тут. 1149 01:08:22,830 --> 01:08:27,450 Аказваецца, што JQuery робіць нешта трохі фантазіі. 1150 01:08:27,450 --> 01:08:29,660 JavaScript мае знак даляра, але яны не маюць сэнсу. 1151 01:08:29,660 --> 01:08:32,870 >> Яны падобныя на літары А ці B або C. 1152 01:08:32,870 --> 01:08:36,670 JQuery проста прыняла Канвенцыю альбо роду, прэтэндавалі на тое, 1153 01:08:36,670 --> 01:08:40,280 , Што $ будзе іх адмысловым знакам. 1154 01:08:40,280 --> 01:08:44,950 Таму, як толькі вы загрузіце гэты файл глабальных наяўнасць тут з тэг, 1155 01:08:44,950 --> 01:08:49,080 Вы маеце доступ да спецыяльнай глабальнай зменнай, якая называецца $. 1156 01:08:49,080 --> 01:08:53,009 Гэта больш правільна называць JQuery, але гэта не выглядае амаль гэтак жа сэксуальна, як $. 1157 01:08:53,009 --> 01:08:56,250 Але $ не мае асаблівага сэнсу. У PHP гэта мела асаблівы сэнс. 1158 01:08:56,250 --> 01:08:58,440 Вы павінны былі мець яго перад зменнай. 1159 01:08:58,440 --> 01:09:01,670 Гэта проста сэксуальная рэч, якую яны ўзялі на сябе. 1160 01:09:01,670 --> 01:09:03,389 Што тут адбываецца? 1161 01:09:03,389 --> 01:09:08,830 Звярніце ўвагу, што я перадаю ў JQuery функцыі мая глабальная пераменная дакументаў 1162 01:09:08,830 --> 01:09:10,860 а потым я тэлефаную. гатовы. 1163 01:09:10,860 --> 01:09:15,480 Што JQuery па сутнасці робіць гэта дазваляе рабіць некаторыя рэчы ванілі JavaScript 1164 01:09:15,480 --> 01:09:17,889 як аб'ект дакумента, акно аб'екта, 1165 01:09:17,889 --> 01:09:20,790 і калі вы перадаць яго ў JQuery функцыі - 1166 01:09:20,790 --> 01:09:24,429 і зноў, каб было зразумела, што гэта функцыя пад назвай jQuery - 1167 01:09:24,429 --> 01:09:28,240 што яна робіць, гэта вернецца да вас адмысловую версію дакумента 1168 01:09:28,240 --> 01:09:30,700 , Які мае больш функцыянальных магчымасцяў, звязаных з ім. 1169 01:09:30,700 --> 01:09:34,760 Такім чынам, у сырых JavaScript няма гатовых функцый, 1170 01:09:34,760 --> 01:09:37,810 але калі вы перадаеце дакумент у JQuery функцыі першага, 1171 01:09:37,810 --> 01:09:40,960 ён вяртаецца да вас адмысловую версію дакумента аб'ект 1172 01:09:40,960 --> 01:09:43,030 , Якая мае больш модныя функцыі. 1173 01:09:43,030 --> 01:09:48,230 І вось чаму людзям падабаецца. Ён проста робіць рэчы прасцей рабіць, бо мы збіраемся, каб бачыць. 1174 01:09:48,230 --> 01:09:49,820 Такім чынам, што ж гэты радок кода на ўвазе? 1175 01:09:49,820 --> 01:09:52,690 Гэты радок кода ў дадзеным выпадку азначае, калі дакумент гатовы - 1176 01:09:52,690 --> 01:09:56,830 Іншымі словамі, як толькі браўзэр скончыце чытаць гэты файл зверху ўніз - 1177 01:09:56,830 --> 01:09:59,200 ісці наперад і выканаць наступныя функцыі. 1178 01:09:59,200 --> 01:10:03,540 Што сапраўды цікава ў JavaScript - PHP і мае гэта, а таксама - 1179 01:10:03,540 --> 01:10:05,450 з'яўляецца ананімнай функцыі. 1180 01:10:05,450 --> 01:10:10,560 У JavaScript можна абвясціць функцыі, якія не маюць імя, але ў іх ёсць цела. 1181 01:10:10,560 --> 01:10:12,570 Звярніце ўвагу, што тут адбываецца. 1182 01:10:12,570 --> 01:10:16,220 >> Гэтая функцыя называецца гатовыя, і гэта проста азначае, выканайце наступныя 1183 01:10:16,220 --> 01:10:20,220 калі ўся вэб-старонка будзе гатовая, калі ўсё гэта было прачытана ў з сервера. 1184 01:10:20,220 --> 01:10:23,090 Што вы хочаце зрабіць? Я хачу, каб выканаць кавалак кода. 1185 01:10:23,090 --> 01:10:27,120 Звярніце ўвагу, што мы не хочам, каб выканаць гэты код адразу. 1186 01:10:27,120 --> 01:10:34,350 Калі я прапусціў гэта, гэта будзе азначаць, неадкладна пачаць выкананне гэтых радкоў кода. 1187 01:10:34,350 --> 01:10:39,040 Але тое, што я кажу, не, не, не, абгарнуць гэта ў ананімнай функцыі, як гэта 1188 01:10:39,040 --> 01:10:43,000 сродкі не выканаць яго яшчэ, называюць яго ў рэшце рэшт. 1189 01:10:43,000 --> 01:10:45,430 Мы бачылі гэтую хвіліну назад у нашым папярэднім прыкладзе формы. 1190 01:10:45,430 --> 01:10:49,990 Што ж функцыю мы называем у рэшце рэшт, 500 мілісекунд пазней? Blink. 1191 01:10:49,990 --> 01:10:51,480 Гэтак жа ідэю. 1192 01:10:51,480 --> 01:10:53,950 Зноў жа, нават калі гэта выглядае крыху дзіўна, проста ўзяць зараз на веры 1193 01:10:53,950 --> 01:10:57,060 абвясціць, што ананімная функцыя, якая выклікаецца ў рэшце рэшт, 1194 01:10:57,060 --> 01:11:01,720 Вы проста напісаць функцыю () { 1195 01:11:01,720 --> 01:11:05,380 Так што код мы будзем выконваць у рэшце рэшт? Наступнае. 1196 01:11:05,380 --> 01:11:10,460 Гэта таксама выглядае крыху новага, але гэта азначае вось JQuery функцыі, 1197 01:11:10,460 --> 01:11:13,430 і гэта цяпер з'яўляецца скарочаным. 1198 01:11:13,430 --> 01:11:18,830 Гэты фрагмент HTML у ніжняй частцы экрана, вядома, мае некаторае ўяўленне дрэва. 1199 01:11:18,830 --> 01:11:21,730 Гэта не ў гэтым. Гэтая старонка з'яўляецца больш цікавым, чым гэта прывітанне, свет прыклад. 1200 01:11:21,730 --> 01:11:25,210 Але ёсць некаторыя дрэва, які адпавядае гэтаму HTML. 1201 01:11:25,210 --> 01:11:28,910 Было б боль у шыі, каб рэалізаваць нейкую рэкурсіўнага функцыю 1202 01:11:28,910 --> 01:11:34,380 пачаць з каранёвага вузла, а затым знайсці вузел з ідэнтыфікатарам рэгістрацыі. 1203 01:11:34,380 --> 01:11:38,340 Так што JQuery робіць супер проста для нас з'яўляецца ў прамым сэнсе гэтага. 1204 01:11:38,340 --> 01:11:43,000 Ідзі і прынясі мне ўсё, што спраў або любой форме, незалежна HTML элемент 1205 01:11:43,000 --> 01:11:45,820 мае ідэнтыфікатар рэгістрацыі. 1206 01:11:45,820 --> 01:11:52,440 Гэта эквівалентна document.getElementById ('рэгістрацыя'). 1207 01:11:52,440 --> 01:11:54,170 >> Чаму такія людзі, як JQuery? 1208 01:11:54,170 --> 01:12:00,110 Таму што гэта карацей, каб надрукаваць. Але гэта ўсё, што ёсць. Гэта тая самая ідэя. 1209 01:12:00,110 --> 01:12:02,630 Дайце мне тэг з ідэнтыфікатарам рэгістрацыі. 1210 01:12:02,630 --> 01:12:06,300 І калі гэта тэг, які бывае форме, уяўляецца, 1211 01:12:06,300 --> 01:12:08,300 ісці наперад і выканаць гэты код. 1212 01:12:08,300 --> 01:12:11,320 Такім чынам, давайце адзін погляд на тое, як цяпер мы робім форму праверкі. 1213 01:12:11,320 --> 01:12:15,950 Сінтаксіс праўда загадкавыя на першы, але тое, што адбываецца? 1214 01:12:15,950 --> 01:12:21,050 Калі гэты радок кода, праўда, я збіраюся крычаць на карыстальніка падаць свой адрас электроннай пошты. 1215 01:12:21,050 --> 01:12:22,970 Дык што ж гэта радкі кода? 1216 01:12:22,970 --> 01:12:25,560 $ Азначае, JQuery. Цяпер заўважыць гэта. 1217 01:12:25,560 --> 01:12:27,920 Гэта накшталт як CSS. 1218 01:12:27,920 --> 01:12:33,370 Калі вы нырнулі ў CSS ўсё ж, вы будзеце ведаць, што гэта азначае, што элемент з ідэнтыфікатарам рэгістрацыі. 1219 01:12:33,370 --> 01:12:39,840 Прасторы азначае знайсці дзіцяці або нашчадак рэгістрацыі, чыё імя ўваходу. 1220 01:12:39,840 --> 01:12:42,970 І тады гэтая рэч у квадратных дужках трохі фільтр. 1221 01:12:42,970 --> 01:12:47,010 І нават калі гэта выглядае загадкава, гэта проста азначае, перайдзіце ў форму з ідэнтыфікатарам рэгістрацыі, 1222 01:12:47,010 --> 01:12:51,230 перайсці да ўнутранай ўваходных элемент, што, чыё імя электроннай пошты, 1223 01:12:51,230 --> 01:12:55,440 , А затым атрымаць яго значэнне, незалежна ад яго значэння, здараецца, - 1224 01:12:55,440 --> 01:12:59,670 ASDF, калі гэта ўсё, што я набраў malan@harvard.edu або, калі гэта тое, што я набраў. 1225 01:12:59,670 --> 01:13:05,250 Такім чынам, калі значэнне электронную пошту формы поля == нічога, крычаць на карыстача. 1226 01:13:05,250 --> 01:13:09,700 Інакш, калі значэнне ў поле пароля == нічога, крычаць на карыстача. 1227 01:13:09,700 --> 01:13:19,520 >> Інакш, калі значэнне ў поле пароля не роўна значэнні пацверджання поле, 1228 01:13:19,520 --> 01:13:22,850 які быў сябрам элеменце формы, крычаць на карыстача. 1229 01:13:22,850 --> 01:13:25,680 І тады, нарэшце, - і гэты таксама мае некаторыя новыя сінтаксіс сваіх, 1230 01:13:25,680 --> 01:13:29,270 але як толькі вы бачылі яго, гэта хоць крыху больш разумным - 1231 01:13:29,270 --> 01:13:34,060 яшчэ, калі форма з ідэнтыфікатарам рэгістрацыі мае ўваходных элемент, імя якога пагадненне 1232 01:13:34,060 --> 01:13:39,720 і правяраем, ісці наперад і крычаць на карыстача. 1233 01:13:39,720 --> 01:13:42,520 Так што я цалкам прызнаю, што гэта цалкам пераважнай на першы погляд. 1234 01:13:42,520 --> 01:13:46,530 Гэта шмат новага сінтаксісу. Але ўсе гэтыя JQuery наступныя віды узораў. 1235 01:13:46,530 --> 01:13:49,880 І калі шчыра, я нават не ведаю, што гэта існавала толькі некалькі хвілін таму. 1236 01:13:49,880 --> 01:13:53,640 Я Googled, "Як вам праверыць, калі ўсталяваны сцяжок у JQuery?" 1237 01:13:53,640 --> 01:13:55,680 і гэта сінтаксіс, таму што ёсць розныя спосабы зрабіць гэта 1238 01:13:55,680 --> 01:13:58,010 з фактычным сырой код JavaScript. 1239 01:13:58,010 --> 01:14:01,030 Так як самыя першыя старонкі Праблема Set 7 падкрэсліваецца, 1240 01:14:01,030 --> 01:14:04,500 PSET 7 вельмі шмат практыкаванняў у сябе загрузку 1241 01:14:04,500 --> 01:14:08,650 дзе мы ўвялі, мы спадзяемся, канцэптуальная аснова, з якой па рашэнні PSET. 1242 01:14:08,650 --> 01:14:12,280 >> Але, як гэта часта бывае з вэб-дызайнам, гэта да вас сапраўды капацца, 1243 01:14:12,280 --> 01:14:16,680 ўключаць фрагменты кода і прыклады з Інтэрнэту, пакуль вы прывесці іх 1244 01:14:16,680 --> 01:14:17,960 у адпаведнасці з умовамі ў той першы ліст, 1245 01:14:17,960 --> 01:14:21,460 і разумеюць, што вывучэнне HTML, CSS, JavaScript і нават SQL 1246 01:14:21,460 --> 01:14:26,020 на самай справе прызначаныя для гэтага ў хатніх практыкаванняў, як мы прыступім да прыняцця гэтых навучальных колы прэч. 1247 01:14:26,020 --> 01:14:29,150 І разумею, таксама ёсць так шмат іншых рэчаў, якія вы можаце зрабіць з браўзэрам. 1248 01:14:29,150 --> 01:14:33,790 Усярэдзіне большасці з гэтых элементаў ёсць і іншыя рэчы называюцца апрацоўшчык падзей. 1249 01:14:33,790 --> 01:14:37,140 І хоць мы проста глядзелі на іх называюцца OnSubmit і onready, 1250 01:14:37,140 --> 01:14:40,310 Вы можаце рабіць рэчы, як OnKeyDown, OnKeyUp, 1251 01:14:40,310 --> 01:14:43,410 падабаецца, калі карыстальнік датыкаецца да ключавых, вы можаце слухаць, за што і ўверх. 1252 01:14:43,410 --> 01:14:45,940 Gmail мае клавіятуру. 1253 01:14:45,940 --> 01:14:49,490 Як Google ажыццяўлення спалучэння клавіш, як C для складаеце? 1254 01:14:49,490 --> 01:14:54,120 Яны слухаюць для падзей, як яны называюцца, як OnKeyPress або OnKeyUp і OnKeyDown. 1255 01:14:54,120 --> 01:14:56,360 Калі вы калі-небудзь лунаў курсор мышы на некаторых меню 1256 01:14:56,360 --> 01:15:00,180 і раптам, вуаля, з'явіцца меню або графічны змены колеру, 1257 01:15:00,180 --> 01:15:01,920 як яны гэта робяць? 1258 01:15:01,920 --> 01:15:06,940 Замест таго, каб праслухоўваць onready або OnSubmit, вы слухаеце для OnMouseOver або onmouseout. 1259 01:15:06,940 --> 01:15:10,920 >> Карацей кажучы, з гэтым вельмі простыя асновы, якія мы пачалі драпаць паверхню сёння 1260 01:15:10,920 --> 01:15:13,940 і мы будзем ныраць у далейшым у сераду, у вас ёсць, у большай ступені, 1261 01:15:13,940 --> 01:15:17,530 улады для рэалізацыі рэчы, якія вы ўжо знаёмыя. 1262 01:15:17,530 --> 01:15:21,620 Так што давайце заканчваецца, і мы будзем працягваць гэтую сераду. 1263 01:15:22,690 --> 01:15:24,320 >> [CS50.TV]