1 00:00:00,000 --> 00:00:02,570 [Powered by Google Translate] [Недеља 9] 2 00:00:02,570 --> 00:00:04,740 [Давид Ј. Малан - Универзитет Харвард] 3 00:00:04,740 --> 00:00:07,170 [Ово је ЦС50. - ЦС50.ТВ] 4 00:00:07,170 --> 00:00:12,350 У реду. Добродошли назад. Ово је ЦС50, и то је почетак седмице 9. 5 00:00:12,350 --> 00:00:16,600 Данас смо посебно фокусирана на дизајну, више не у контексту Ц 6 00:00:16,600 --> 00:00:20,010 али у контексту ПХП и мало СКЛ и мало ЈаваСцрипт-а, 7 00:00:20,010 --> 00:00:23,730 посебно према крају оба псет 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 слободно попуните образац на цс50.нет/партнерс/форм. 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 А онда, ако желите да задржите на оку током наредне седмице или тако унакрсне УРЛ адресе тамо, 16 00:00:49,510 --> 00:00:53,520 тада можете видети само за читање верзију Гоогле доц 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 Оно што смо говорили о било базе података и разговарали смо о псет 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 да не само у стању да уради овако нешто псет 7 31 00:01:34,990 --> 00:01:37,360 али стварно разумевање шта се дешава испод хаубе, 32 00:01:37,360 --> 00:01:41,910 посебно неке од апстракције које смо ставили у месту у фунцтионс.пхп фајл 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 у стварном свету и да те ствари без икаквог ЦС50 оквира испод вас. 36 00:01:53,750 --> 00:01:57,500 Ова $ _СЕССИОН, за оне од вас који су упознати 37 00:01:57,500 --> 00:02:01,960 или ко је већ ухватио видео у петак, шта сједница урадимо 38 00:02:01,960 --> 00:02:04,330 у ПХП веб апликације засноване? 39 00:02:04,330 --> 00:02:09,650 Ово је суперглобал променљива, што значи да је слично у духу на ГЕТ и ПОСТ 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 У псет 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 И тако ако сте заронио у псет 7 ипак, можда се сећате да смо чување кључну зове ИД 48 00:02:44,890 --> 00:02:50,330 Унутрашњост овог асоцијативног низа чија је вредност нешто као 123 - 49 00:02:50,330 --> 00:02:53,780 без обзира на тренутно пријављени ИД корисника је. 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 Места попут Амазона очигледно да сте ставили ствари у корпи, 58 00:03:27,740 --> 00:03:32,230 али ХТТП протокол који напаја Вебом, лице без држављанства 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 Чим сте преузели ХТМЛ и ЈПЕГ и ГИФ сличице и све то, 63 00:03:42,190 --> 00:03:48,200 веза иде даље и имате само један примерак ХТМЛ и ситница са сервера. 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 Па како је ово ради? Пусти ме унутра овог фајла зове цоунтер.пхп. 84 00:04:58,830 --> 00:05:02,490 Горњи део је све плаво коментаре, али занимљив део је овде. 85 00:05:02,490 --> 00:05:06,670 На линији 13 зовемо ову функцију сессион_старт, 86 00:05:06,670 --> 00:05:09,600 и то је буквално све што треба да урадите ако желите да имате приступ 87 00:05:09,600 --> 00:05:13,610 да ова посебна суперглобал зове $ _СЕССИОН. 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 Приметимо да ПХП се већ помало лењ овде. 97 00:05:50,770 --> 00:05:55,550 Обавештење немамо никакву помињање инт или плутају или параметар, или било шта слично томе 98 00:05:55,550 --> 00:06:00,480 јер ПХП је слабо откуцао, при чему не морате да одредите тип променљиве, 99 00:06:00,480 --> 00:06:03,310 и у овом случају овде нисам сам ни објавио још. 100 00:06:03,310 --> 00:06:08,980 Ја сам га проглашава унутар ових заграда и за разлику од Ц, то је заправо добро. 101 00:06:08,980 --> 00:06:13,800 Без обзира колико дубоко угнездио декларацију променљиве у ПХП-у - 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 Ако сам дођите овде да ХТМЛ странице, то је заправо прилично једноставна. 113 00:06:53,520 --> 00:06:58,920 Све што имам у телу ове странице је: "Ви сте посетили овај сајт, тако-и-тако времена." 114 00:06:58,920 --> 00:07:00,350 А ово је ПХП конструкт. 115 00:07:00,350 --> 00:07:06,080 Ако то урадите <=, то је еквивалент ономе што ефикасно функционишу? 116 00:07:07,920 --> 00:07:12,600 Заиста је еквивалент нечему као што је инт, које смо видели много пута у Ц, 117 00:07:12,600 --> 00:07:15,940 иако је можда већ знате из спецификације у псет 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 >> Цхроме има ово, како у Мац верзији, Виндовс верзију, па чак и Линук верзије, 128 00:07:51,900 --> 00:07:59,510 и Фирефок и ИЕ имају сличне механизме којима имате ову уграђену у дебагер 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 Имамо овде гомилу картица, и подсетити да је један крајње лево Елементи, 132 00:08:06,960 --> 00:08:10,700 и без обзира на то колико је годавфул ХТМЛ и ЈаваСцрипт је у страну, 133 00:08:10,700 --> 00:08:15,710 Подсећамо да са језичком Елементс можете заправо хијерархијски навигацију ХТМЛ 134 00:08:15,710 --> 00:08:17,050 и лепо и уредно. 135 00:08:17,050 --> 00:08:19,370 Дакле, ако покушавате да сазнате са сајта као Гоогле или Фацебоок 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 што може да буде хаос, као што смо видели, посебно на лицу Гоогле. 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 Ја ћу да одем у подешавања у Цхроме и онда идите на историју 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 ствари попут колачића и ствари попут кешираних ХТМЛ датотеке, кеширане фајлове ЈаваСцрипт 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 пута, али дозволите ми да иде напред сада и кликните Релоад. 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 ХТТП захтев који је направио, 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 шта ћу да видим буквално ХТТП 170 00:10:14,400 --> 00:10:17,250 да је само отишао из мог претраживача на серверу, 171 00:10:17,250 --> 00:10:21,400 ГЕТ бити оперативна реч и онда / цоунтер.пхп Бити име датотеке, 172 00:10:21,400 --> 00:10:25,670 ХТТП/1.1 само бити верзија ХТТП да мој прегледач користи. 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 Цриптиц иако је ово стринг, сваки пут ваш прегледач посети сајт 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 Дакле, ако сте се икада питали како сајтове као што су ЦНН и ситница 181 00:10:52,650 --> 00:10:56,860 Знам шта су проценти су Мац кориснике на Веб, ПЦ корисницима, 182 00:10:56,860 --> 00:11:00,820 ИЕ корисници, Цхроме корисника и слично, то је зато што све наше претраживача 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 али ипак каже шта је ваш сервер ИП адресу и који бровсер и ОС који користите. 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 што је забрањено, што значи да је заборавио да цхмод нешто, највероватније. 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 Ја стварно само написао овај фајл пре неколико минута тако да је лепљењем у гедит. 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 Шта ово говори мом бровсеру је ово ПХП фајл који сте управо тражили већ истекао. 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 било путем поновног утовара или куцајући УРЛ у адресно поље, 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 из заправо кеширање ХТМЛ-а који је био послат са сервера 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 Колачићи су начин којим серверима могу да се сетим нешто о кориснику. 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 овако ствари овде - бо8дал3цт и тако даље - то заиста велики алфанумерички гудачки 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 Колачићи су мали сличне у духу тога. 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 чије је име ПХПСЕССИД, ИД сесије, 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 или ручно посетите ову адресу у прегледачу, 243 00:14:25,230 --> 00:14:29,230 мој прегледач по дефиницији ХТТП ће представити печат руке 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 и провере, у реду, само сам видела ручну печат корисника бо8дал3цт и тако даље. 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 стално би се пријавити на свакој Фацебоок страници коју посетите 262 00:15:36,110 --> 00:15:40,680 или сваки Гмаил емаил читате, ако прегледач није имала неки начин сећања 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 и заиста сам користећи ХТТП у овом тренутку. 268 00:15:57,240 --> 00:16:00,890 Један од наших омиљених тренутака у ЦС50, који је сада пре 2 године, 269 00:16:00,890 --> 00:16:04,750 године у време алат зове Фиресхееп изашао. 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 извесне аутентичности механизми на Интернету били. 273 00:16:17,900 --> 00:16:22,880 Дакле, за неко време, Фацебоок је скоро у потпуности преко ХТТП, ХТТПС нема. 274 00:16:22,880 --> 00:16:25,640 А чак и ако немате појма колико крипто ради, С је сигурно 275 00:16:25,640 --> 00:16:27,950 па то значи да постоји бар нека енкрипција укључена. 276 00:16:27,950 --> 00:16:30,610 Фацебоок је коришћен за шифровање корисничких имена и лозинки, 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 Тако је било до пре само Гмаил годину или 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 Шта је то? Мислим да сам чуо нешто. [Ученик] брзина. 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 У псет 2 када спроводи Цезара или Вигенере или чак Црацк, 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 >>  За супер популарних сајтова као што су Гоогле и Фацебоок, 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 Људи би користе ССЛ енкрипцију само када им је потребно да. 297 00:17:31,440 --> 00:17:34,960 Али испоставило се, и као овај момак са Фиресхееп је супер јасан, 298 00:17:34,960 --> 00:17:37,920 кад ви момци који су тренутно на Фацебоок одмах - 299 00:17:37,920 --> 00:17:39,880 Из радозналости, да видимо да ли ће признам горе. 300 00:17:39,880 --> 00:17:42,620 Ако сте на Фацебооку сада у некој картици, чак и ако то није у првом плану, 301 00:17:42,620 --> 00:17:46,610 је Ваш УРЛ ХТТП или ХТТПС? 302 00:17:46,610 --> 00:17:50,560 [Више] студенти С. С? [Смех] 303 00:17:50,560 --> 00:17:55,510 Ок. Било ХТТП? Само 1? Ок. 304 00:17:55,510 --> 00:17:58,940 Дакле, све нас може хаковати Фацебоок налог тог момка сада. 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 не само ХТМЛ иде напред и назад преко ВиФис некодиране, 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 наћи слободан софтвер који ради ово, све што треба да урадите је да седи у Старбакс 312 00:18:27,410 --> 00:18:30,680 или седите на аеродрому где постоји генерално је некодиране ВиФи 313 00:18:30,680 --> 00:18:36,070 и само гледам по кључним речима као што су Сет-Цоокие: или ПХПСЕССИД 314 00:18:36,070 --> 00:18:39,300 јер ако имате технички потковани да само гледају ВиФи 315 00:18:39,300 --> 00:18:43,010 за све битова који протока кроз ваздух за овај образац, 316 00:18:43,010 --> 00:18:50,840 онда могу да кажем да лик је ПХПСЕССИД се дешава да се бо8дал и тако даље. 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 на Фацебоок.цом и Фацебоок само ће претпоставити да сте тај момак 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 >> И ја бих сада Гоогле како да активирате ХТТПС фор Фацебоок можда. 325 00:19:23,190 --> 00:19:25,150 Али заиста је тако једноставно. 326 00:19:25,150 --> 00:19:27,660 И тако Фацебоок и Гоогле и као добио стварно добар у томе, 327 00:19:27,660 --> 00:19:31,870 али пази све више за све локације које посећујете које не користе ХТТП 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 и онда фалсификовао, а то је управо оно што Фиресхееп урадио. 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 и шта ће учинити је да се пријавите и онда ће вам показати Фацебоок имена 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 од њушка тај колачић, представљајући га као своје Фацебоок, 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 је да заиста смањи коришћење свих сајтова који се не користе ХТТПС стално. 346 00:20:31,360 --> 00:20:34,520 Дакле, сајтови као што су Фацебоок и Гоогле имају све квадратиће 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 да програмер је унутра чува овог специјалног суперглобал зове $ _СЕССИОН. 353 00:20:56,140 --> 00:20:59,750 А за псет 7 смо га користи тривијално само да запамтите једну инт, 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 Фиресхееп не ради, као и више, 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 Дакле, ако сте тренутно преузимање Фиресхееп, то схватају није баш тако лако 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 Једна од ствари које смо радили у псет 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 зове пхпМиАдмин који је случајно написан у ПХП-у, 374 00:22:04,680 --> 00:22:07,950 али је његова сврха у животу, након што сам се пријавим овде као јхарвард са црвац, 375 00:22:07,950 --> 00:22:15,160 јесте да ми дају усер-фриендли начин посматрања и мењам базу података. 376 00:22:15,160 --> 00:22:18,040 >> База да сам ради на апарату се зове МиСКЛ. 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 И опет, псет вас води кроз кораке прописане овде, 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 Дакле, хајде да кратак разговор о различитим типовима у МиСКЛ 397 00:23:18,870 --> 00:23:24,590 јер док ПХП је слабо откуцан и то некако игра брзо и губе са врстама, 398 00:23:24,590 --> 00:23:29,430 у бази података, посебно је важно да се супер заправо користити куцање у своју корист 399 00:23:29,430 --> 00:23:33,260 јер је један од ствари МиСКЛ и остале базе мотора може да учини за вас 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 >> За кућу, ми очигледно не желимо да то буде инт, који је 32-битна вредност у МиСКЛ. 403 00:23:46,250 --> 00:23:49,810 Урадили смо разговарамо на кратко петак око варцхар, која се залаже за променљиве дужине цхар. 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 Али предност коришћења ВАРЦХАР преко поља зове знак је шта? 409 00:24:10,700 --> 00:24:15,110 Само интуитивно ако сам доле помицати овде приметити да је карактер и ту је варцхар. 410 00:24:15,110 --> 00:24:19,520 Варцхар је променљиве дужине знак, знак је фиксне дужине знак. 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 >> Да. [Ученик] ВАРЦХАР има већу флексибилност, али заузима више меморије. 414 00:24:35,750 --> 00:24:40,730 Добро. Варцхар заузима више - Хајде да видимо. Нисам сигуран да ли сам чуо то право. 415 00:24:40,730 --> 00:24:42,360 Може ли се рећи да још једном? 416 00:24:42,360 --> 00:24:45,850 [Ученик] Ја сам рекао варцхар вероватно има већу флексибилност, али заузима више меморије. 417 00:24:45,850 --> 00:24:51,170 Занимљиво. Ок. Варцхар вероватно вам даје већу флексибилност, али заузима више меморије. 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 И ако кућа завршава се Матхер и 6 карактера укупно, 426 00:25:22,290 --> 00:25:25,090 губите више од 200 знакова. 427 00:25:25,090 --> 00:25:29,640 >> Дакле варцхар ефикасно користи само онолико знакова колико је потребно 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 па варцхар је пут којим треба ићи. 446 00:26:32,170 --> 00:26:36,030 Ево још један детаљ који још Фацебоок налетео на крају. 447 00:26:36,030 --> 00:26:39,670 Интс су велики, а ми смо некако да их користе по дефаулту било које време желимо број, 448 00:26:39,670 --> 00:26:41,750 али то је само 32 бита. 449 00:26:41,750 --> 00:26:46,210 >> И иако Фацебоок не баш сада имају 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 па Фацебоок сама верујем пре неколико година имала за транзицију из инт 453 00:26:55,130 --> 00:27:00,010 да, као што се достојно зове, бигинт, што је само 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 Али за тако нешто псет 7, као и твој историје табели, 460 00:27:19,340 --> 00:27:23,700 можда имате хиљаде, милиони корисника уколико еволуирају у етраде.цом. 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 ако ти предвидети податке премашују величину инт, 466 00:27:40,920 --> 00:27:47,740 иде са нечим као бигинт је правац није довољно често усвојена од стране дизајнера 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 Децимални смо коришћења у псет 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 Али датуми, време сви имају прописану формат у МиСКЛ, 473 00:28:07,270 --> 00:28:10,830 и предност чување датума, као датума и не варцхарс 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 много ефикасније него што би то били само неки генеричке варцхар. 477 00:28:22,700 --> 00:28:25,150 А онда ту је нека друга бинарна, варбинари, грудвице. 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 Али за нас, ми ћемо обично стало Интс и варцхарс и слично. 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 Могли по дефаулту стави све у Матхер кући, на пример. 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 можда сам стварно желео да прецизира да подразумевана вредност за кућу је НУЛЛ 489 00:28:59,590 --> 00:29:04,890 и онда морам да проверим ову кутију и рећи базу података да је у реду ако је корисник кућа је НУЛЛ. 490 00:29:04,890 --> 00:29:07,270 >> Опет, ово је још један одбрамбени механизам можете ставити на место 491 00:29:07,270 --> 00:29:10,590 тако да не морате чак ни да га стави у ПХП коду нужно. 492 00:29:10,590 --> 00:29:14,630 База података ће обезбедити да ствари или нису НУЛЛ. 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 Бинарни, унсигнед - нико од оних који су релевантни за варцхар. 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 Вероватно ИД. 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 она тежи да буде добра пракса само да користи инт 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 лице у Цурриер и слично. 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 ИД ће бити примарни, али е није примарна за разлога управо поменули - 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 Ако знате унапред за свој коначни пројекат за псет 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 У стварности, она тежи да се користи дрво, често структура назива Б-стабло - 532 00:31:21,260 --> 00:31:24,090 Не бинарно стабло, али Б-дрво - што је веома широка дрво 533 00:31:24,090 --> 00:31:27,370 да сте могли видети у класи као што ЦС124, структуре података класе. 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 >> Ако оставите овај офф и покушајте да пронађете све у бази података који живи у Матхер, 537 00:31:40,250 --> 00:31:42,710 она ће припасти у линеарном претрагу. 538 00:31:42,710 --> 00:31:45,360 А ако имаш 6.000 недипломираних све који живе у некој кући, 539 00:31:45,360 --> 00:31:47,900 ћеш да претражите целу табелу да пронађе Матхеритес, 540 00:31:47,900 --> 00:31:52,190 а ако ти кажеш Индекс, надамо се да ће бити нешто близу логаритамском претрагу 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 што само значи ако је инт а ви не желите да се брину да га повећате себе 546 00:32:05,830 --> 00:32:07,570 сваки пут када је нови корисник, проверите да 547 00:32:07,570 --> 00:32:11,910 и сваки корисник који буде убачена ће аутоматски добити нову личну карту. 548 00:32:11,910 --> 00:32:15,620 Идемо на дугме Сачувај, а сада хајде да нађемо ману са овим дизајном. 549 00:32:15,620 --> 00:32:20,200 Ако одем у Бровсе, приметице да су Мајк и моја кућа је НУЛЛ. 550 00:32:20,200 --> 00:32:22,420 Ја могу да користе пхпМиАдмин за уређивање ручно. 551 00:32:22,420 --> 00:32:25,110 Могу да идем овде и упишите Матхер и затим притисните Ентер, 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 Давидов ИД је 1, па опет пхпМиАдмин је само административна алатка; 555 00:32:33,530 --> 00:32:35,970 ово није нешто што ваши корисници ће икад видети. 556 00:32:35,970 --> 00:32:38,810 Дакле, ако сам уместо тога изаберите СКЛ картицу до врха - 557 00:32:38,810 --> 00:32:41,450 и опет, псет 7 ће вас упознати са више од ових питања - 558 00:32:41,450 --> 00:32:45,260 Ја ручно да извршава СКЛ структурирану команду Куери Лангуаге 559 00:32:45,260 --> 00:32:56,410 УПДАТЕ корисници СЕТ кућу = 'Пфохо' ВХЕРЕ ид = 1. 560 00:32:56,410 --> 00:33:00,830 Ове СКЛ упити су лепо довољно читљиве слева на десно. 561 00:33:00,830 --> 00:33:04,350 Ажурирање корисника табелу, поставите поље зове кућа Пфохо 562 00:33:04,350 --> 00:33:06,830 где је корисников ИД је 1. 563 00:33:06,830 --> 00:33:11,480 Или чак сам могао да урадим, где е = 'малан@харвард.еду'. 564 00:33:11,480 --> 00:33:14,860 Докле год то јединствено ме идентификује, који ће радити као добро. 565 00:33:14,860 --> 00:33:18,810 Али ИД тенденцију да буде већи учинак, па хајде да то урадимо. 566 00:33:18,810 --> 00:33:22,950 Идемо кликните на Го. Ок, лецтуре.усерс не постоји. Шта је моја грешка? 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 Ако сам дугме Бровсе сада, сада Малан животе у Пфохо. 572 00:33:38,010 --> 00:33:42,070 Дакле, то је још један укус СКЛ, али псет ће вас провести кроз нешто више од тога. 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 људи живи у Матхер, дати или узети, 581 00:34:10,400 --> 00:34:15,000 на крају овај сто ће имати 400 редове који кажу "Матхер", "Матхер," 582 00:34:15,000 --> 00:34:16,590 "Матхер", "Матхер", "Матхер". 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 и преименује Матхер, сада морамо да променимо наше целу табелу базе података. 586 00:34:25,949 --> 00:34:29,730 То се неће десити да често, иако Пфохо је једном назвао Северна кућа пре 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 за базе података зашто складиштење Матхер опет и опет и опет и опет? 590 00:34:41,150 --> 00:34:43,020 То је много карактера, 6 карактера. 591 00:34:43,020 --> 00:34:45,500 Да не радимо још боље од тога, посебно за Пфорзхеимер? 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. Ентер. 599 00:35:08,880 --> 00:35:11,200 Сада имам 2 поља. 600 00:35:11,200 --> 00:35:14,600 Ја ћу да зовем ово име, а то ће бити варцхар дужине 255, 601 00:35:14,600 --> 00:35:18,770 >> али то је прилично произвољан. Дозволите ми да ово доле конвенцијом. 602 00:35:18,770 --> 00:35:22,840 Дакле, ставио ИД овде. Дајмо свакој кући јединствени идентификатор. 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 Обавештење као страни је нешто криптичан СКЛ наредба 610 00:35:45,860 --> 00:35:50,280 да ли би морао да ручно упишете ако не користите административни алат као што пхпМиАдмин. 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 и схватим како ствари функционишу тако једноставно копирање и лепљење шта пхпМиАдмин урадио. 614 00:36:01,050 --> 00:36:04,150 Али Креирај сто команда је оно што је управо погубљен, а овде је мој сто. 615 00:36:04,150 --> 00:36:11,370 Пусти ме напред сада и користите сирови СКЛ него поједностављују кликом на Инсерт картицу. 616 00:36:11,370 --> 00:36:15,040 Дозволите ми да се ИНСЕРТ ИНТО кућа, 617 00:36:15,040 --> 00:36:22,230 и ја ћу рећи име куће ће имати вредност "Матхер". 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 То су вредности које желите да убаците у тим областима. Пусти ме кликните Го. 621 00:36:30,390 --> 00:36:34,410 1 ред убаци трајало 0,02 секунди. Дозволите ми да се сада кликните Бровсе. 622 00:36:34,410 --> 00:36:42,020 >> Обратите пажњу да ли на дугме Потражи, има Матхер, чији ИД је аутоматизацијом број 1. 623 00:36:42,020 --> 00:36:45,000 Пусти ме да радим још један. Пусти ме да идем у СКЛ картици. 624 00:36:45,000 --> 00:36:52,950 ИНСЕРТ ИНТО кућа. Име куће ће имати вредност Пфохо и тако даље. 625 00:36:52,950 --> 00:36:56,350 Иди. И ја могу да наставим да радим ово опет и опет и опет. 626 00:36:56,350 --> 00:36:59,470 Или ако вам је досадно користите пхпМиАдмин, можете само да користите картицу Уметање 627 00:36:59,470 --> 00:37:01,000 и не морате да куцате сировог СКЛ. 628 00:37:01,000 --> 00:37:04,690 Можете само да га ударају се брже од куцања, на пример, Цурриер, Ентер, 629 00:37:04,690 --> 00:37:07,610 и сада ако ми дугме Потражи, има Цурриер са идентитету 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 И опет, били смо на пут овде рећи Матхер, Матхер, 637 00:37:31,130 --> 00:37:34,220 Матхер, Матхер, Пфохо, Пфохо, Пфохо, Пфохо, што је веома редундантно 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 и сад ћу да се ово промени да буде инт. 642 00:37:46,990 --> 00:37:49,490 255 више није релевантно. 643 00:37:49,490 --> 00:37:54,010 Пусти ме само напред и да кажем да је у реду ако је још НУЛЛ. Саве. 644 00:37:54,010 --> 00:37:55,870 Сада листа студената је успешно промењен, 645 00:37:55,870 --> 00:37:59,090 и приметио опет куца је инт. 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 А ако Дејвид живи у Матхер, кућа не би требало да буде 0, 654 00:38:24,610 --> 00:38:27,350 што је стандардна инт вредност најближа НУЛЛ. 655 00:38:27,350 --> 00:38:29,810 Он би требало да живи у кући 1. 656 00:38:29,810 --> 00:38:36,870 Хајде да кажемо да произвољно Мике живи у Пфохо, тако кућа број 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 канонска дефиниција мојој кући Матхер и Пфохо 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 је Матхер, 2 је Пфохо. 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 Оно што ми сада желимо да урадимо је да има способност у коду, ПХП и СКЛ, 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 Да бисте то урадили можемо извршити СКЛ упит овако. 673 00:39:31,850 --> 00:39:40,470 СЕЛЕЦТ * ФРОМ студенти ПРИДРУЖИТЕ куће ОН - 674 00:39:40,470 --> 00:39:43,000 И сада шта поља не желимо да се придружите на? 675 00:39:43,000 --> 00:39:49,520 Дакле студентс.хоусе = хоусес.ид. 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 Сет 'поље кућа једнак кућа' студентски ИД поља. 680 00:40:05,280 --> 00:40:10,220 И ако сам сад на дугме Иди, ја вратим оно што сам се надао да. 681 00:40:10,220 --> 00:40:15,890 Давид је у Матхер, Мајк је у Пфохо, и ја видим јединствене идентификаторе. 682 00:40:15,890 --> 00:40:18,640 Али поента је сада имам комплетну табелу. 683 00:40:18,640 --> 00:40:23,020 И тако ПОНЕТИ овде псет 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 где могу ЗИП обично, али не увек да се користи као јединствени идентификатор, 687 00:40:32,050 --> 00:40:35,810 Не прође кроз вежбу ментално, а затим са нечим као пхпМиАдмин 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 Следи је пример који је коришћен пре неких година,, када сам узео ЦС161, 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 Дакле, ви затворите фрижидер, ви ходати преко пута улице да ЦВС-а 705 00:41:42,070 --> 00:41:45,830 и да у све дугим редовима да се купи млеко у ЦВС. 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 Дакле, он или она затвара фрижидер, шетње напоље на врата, и одлази да се АБП 710 00:41:57,890 --> 00:42:00,910 или негде друго него што ЦВС-а, где ви не сте одлазе да се налетети у сваки другу 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 Машина са леве узима вашу картицу и ваш ПИН, 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 >> Најједноставнији начин МиСКЛ је линија СКЛ који смо вам дали 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 акција ове Пени берза за председника Скрооб, 780 00:46:07,340 --> 00:46:10,340 чији кориснички ИД се дешава да се број 7? 781 00:46:10,340 --> 00:46:14,070 Овај казе ИНСЕРТ ИНТО табели следећи ид, симбол, а број акција 782 00:46:14,070 --> 00:46:18,200 од 7, 'ДВН.В "и 10. 783 00:46:18,200 --> 00:46:21,510 Али - али, али, али - Друга линија је важна. 784 00:46:21,510 --> 00:46:26,310 О дуплирани кључ упдате акција = акција + ВАЛУЕС (акција). 785 00:46:26,310 --> 00:46:28,350 Дакле, потпуно гробни-гледа на први поглед. 786 00:46:28,350 --> 00:46:31,990 Али чињеница да је ово СКЛ упита, иако је обавија на 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 И по дефиницији МиСКЛ, ето како они спроводе овај упит. 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 Председник нема Скрооб имају, а претпостављам да има 10 акције, 797 00:47:13,750 --> 00:47:19,330 и касније неки делић секунде онда урадимо УПДАТЕ изјаву, 798 00:47:19,330 --> 00:47:24,810 што је још један исказ у СКЛ који каже напред и додајте још 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 нема гаранције да је ваш ИЗАБЕРИ и ваш УПДАТЕ у овом случају 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 да видимо колико акција овог Пени берза нема Скрооб имају, 807 00:47:51,670 --> 00:47:54,710 и онда само случајно један упита извршава - 808 00:47:54,710 --> 00:47:57,740 можда његова Скрооб у другом прозору покушавајући да купи 10 акција 809 00:47:57,740 --> 00:48:00,700 у другом прозору укупно, налик банкомату - 810 00:48:00,700 --> 00:48:05,410 и претпоставимо да је још један упит добија између СЕЛЕЦТ и УПДАТЕ. 811 00:48:05,410 --> 00:48:10,210 То може бити случај да Скрооб сада губи известан број акција 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 >> Испоставило се да СКЛ подржава, ако сте конфигурисали правилно табелу, 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 Постоје дословно је изјава у СКЛ зове СТАРТ трансакцију. 826 00:49:04,960 --> 00:49:08,300 Баш као да је СЕЛЕЦТ, УПДАТЕ, ИНСЕРТ, ДЕЛЕТЕ, а ЈОИН и гомила других, 827 00:49:08,300 --> 00:49:10,970 постоје кључне речи као што СТАРТ трансакције. 828 00:49:10,970 --> 00:49:13,560 И шта сте онда урадили у контексту псет 7 - 829 00:49:13,560 --> 00:49:17,270 Ви не морате да урадите ово за псет 7; то је изричито демантовао да не потребно, 830 00:49:17,270 --> 00:49:18,830 али за коначних пројеката може да буде корисно - 831 00:49:18,830 --> 00:49:22,820 ако позовете упит о СТАРТ трансакције и затим још један упит 832 00:49:22,820 --> 00:49:25,620 а затим још један упит, а затим још један, још један, и још један, 833 00:49:25,620 --> 00:49:31,860 ти упити заправо неће бити извршена док не позовете СКЛ наредба ЦОММИТ, 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 >> Спремни за неке ЈаваСцрипт, задиркивање њих? 861 00:51:01,420 --> 00:51:04,320 Ово је наш последњи језик за семестар. У реду. 862 00:51:04,320 --> 00:51:09,940 Срећом, ЈаваСцрипт изгледа веома, веома, веома сличан 2 језика, Ц и ПХП, 863 00:51:09,940 --> 00:51:11,140 Урадили смо до сада. 864 00:51:11,140 --> 00:51:14,340 Нема ЈаваСкрипт на псет 7, али то је невероватно корисна алатка 865 00:51:14,340 --> 00:51:18,840 када је у питању ради веб базираних завршне пројекте или заиста само веб програмирање уопште. 866 00:51:18,840 --> 00:51:20,950 Тако кратак преглед нечега што се зове ДОМ. 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 Скренуо бих ово исто фрагмент ХТМЛ као дрво, 872 00:51:34,220 --> 00:51:37,470 мислећи назад на нашим дискусијама структурама података у Ц, као што следи. 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 Прво дете и једино дете које је у овом случају ХТМЛ тагове. 876 00:51:48,330 --> 00:51:49,880 Нема директне мапирање ДОЦТИПЕ. 877 00:51:49,880 --> 00:51:53,170 То је посебна ствар, тако да ми само треба да га игноришу, када је у питању овај дом, 878 00:51:53,170 --> 00:51:55,810 ово Доцумент Објецт Модел дрво. 879 00:51:55,810 --> 00:51:59,530 Обратите пажњу на то ХТМЛ ознака, који сам самовољно приказује као правоугаоника, 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 Слично нема тело има дете зове здраво, свет као добро, 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 Па, шта је лепо о ХТМЛ је да нема ту хијерархијску природу. 896 00:52:56,820 --> 00:53:01,010 А шта је лепо о ЈаваСцрипт-у и посебно библиотека које су слободно доступни 897 00:53:01,010 --> 00:53:07,120 и популаран као јКуери, можете да се крећете структуру стабла тако невероватно лако. 898 00:53:07,120 --> 00:53:11,790 Свака од ствари смо урадили у Ц са показивачима и попречно дрвећа и рецурсинг на чворовима 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 И тако са овим вишим нивоима језицима као што су ЈаваСцрипт 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 Ако никада нисте видели ЈаваСцрипт раније, ово је заиста лепо референца 906 00:53:32,950 --> 00:53:35,910 из Мозилла људи, људи који доносе Фирефок, 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 Дакле, када напишете програм у ЈаваСцрипт, нема основна функција. 911 00:53:47,010 --> 00:53:48,690 Ви само почети писање кода. 912 00:53:48,690 --> 00:53:51,660 Али кључна разлика између ЈаваСцрипт и Ц и ПХП 913 00:53:51,660 --> 00:53:55,890 је да, док Ц и ПХП до сада нису извршена страни сервера 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 Другим речима, можда пишете ЈаваСцрипт кода, као што смо о томе да, 917 00:54:08,440 --> 00:54:13,080 на серверу у апарату, али га укључи у вашој ХТМЛ код вашег ЦСС, 918 00:54:13,080 --> 00:54:16,100 међу вашим ГИФ и ПНГ вашим и ваше ЈПЕГ 919 00:54:16,100 --> 00:54:19,170 тако да када корисник посети вашу веб страницу, ако користите ЈаваСцрипт, 920 00:54:19,170 --> 00:54:21,770 да је ЈаваСцрипт кода долази са сервера до претраживача, 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 То је врста глупо да чак ни размишљати о заштити свој ИП, када је у питању ЈаваСцрипт кода 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 без размака, страшних имена променљивих, да теже за људе да украде свој ИП, 927 00:54:45,400 --> 00:54:48,120 али кључ је да се извршава бровсер страну. 928 00:54:48,120 --> 00:54:51,790 Иако је као страни Јава може да се користи страни сервера, 929 00:54:51,790 --> 00:54:54,480 најчешћи случај коришћења сада је још увек на претраживачу. 930 00:54:54,480 --> 00:54:59,800 А ево како изгледа. Овде је ако-иф-елсе изгради баш као Ц, баш као ПХП. 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 Овде је прекидач изјава, који је сличан ПХП 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 Ви не прогласи променљиве као ти у ПХП и Ц, 939 00:55:24,560 --> 00:55:27,860 али исто тако је Јава слабо откуца. 940 00:55:27,860 --> 00:55:32,730 Не прецизира инт или пловак или ниска или нешто слично обично. 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 То није тип, то је само за променљиву вар. 946 00:55:48,740 --> 00:55:52,930 То би, на пример, да ли је 123 или "здраво, свете". 947 00:55:52,930 --> 00:55:58,910 Низови су присутни и синтаксички сличан ПХП. 948 00:55:58,910 --> 00:56:03,690 Ја ћу рећи вар бројеве и онда ја користим угласте заграде поново прогласи променљиву 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 Подсетимо да је у ПХП бисмо реализовали низ асоцијативну за студента 952 00:56:16,700 --> 00:56:20,220 као Замила да би изгледати овако, где променљива се назива ученик. 953 00:56:20,220 --> 00:56:23,370 Угласте заграде значе долази низ. 954 00:56:23,370 --> 00:56:28,500 >> Чињеница да не користим нумеричких индекса, али стрингове - ид, кућа, и име - 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 значи да је кључ "ИД", вредност 1; 958 00:56:37,310 --> 00:56:39,310 Кључ је "кућа", вредност је Винтроп кућа; 959 00:56:39,310 --> 00:56:41,800 Кључ је "име", вредност је Замила Чен. 960 00:56:41,800 --> 00:56:47,110 Дакле, ту је 3 тастера унутар овог асоцијативног низа, од којих свака има своју вредност. 961 00:56:47,110 --> 00:56:52,880 Видели смо да је у псет 7, или ћете ускоро, у ЈаваСцрипт истој идеји, 962 00:56:52,880 --> 00:56:55,220 али то ће изгледати овако. 963 00:56:55,220 --> 00:57:00,070 Дакле вар ученик - нема знак за долар, а не спомиње типа и даље, али вар - 964 00:57:00,070 --> 00:57:05,860 једнако, а затим отворите витичасте заграде, јер у ЈаваСцрипту, када имате кључне вредности парове, 965 00:57:05,860 --> 00:57:08,900 ви заправо користите нешто што се зове објекат. 966 00:57:08,900 --> 00:57:13,490 А они од вас који су узели транспортерима или као можда сећате предмете из Јаве 967 00:57:13,490 --> 00:57:15,140 или сличним језицима. 968 00:57:15,140 --> 00:57:17,880 Јава није Јава, пре свега. 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 Јава има објекте и да их креирате путу коврџавом Браце нотацији. 972 00:57:31,490 --> 00:57:36,710 Објекти у ЈаваСцрипту су прилично еквивалент асоцијативних низова у ПХП 973 00:57:36,710 --> 00:57:40,030 када је у питању чување података унутар њих. 974 00:57:40,030 --> 00:57:44,100 >> Али, још снажније у ЈаваСцрипту можете врло лако повезати функције 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 Укратко, овај објекат представља студента, који је посебно Замила, 978 00:57:54,380 --> 00:58:00,380 и то је сличан концепцијски, само синтаксички другачији од овога. 979 00:58:00,380 --> 00:58:03,840 Хајде да заправо користе ЈаваСцрипт у датотеци. 980 00:58:03,840 --> 00:58:05,570 Испоставило се да је сценарио таг. 981 00:58:05,570 --> 00:58:08,180 Видели смо стила ознака и видели смо и друге ХТМЛ ознаке. 982 00:58:08,180 --> 00:58:11,510 Скрипта ознака заправо ће садржати неке ЈаваСцрипт кода. 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 Хајде да отворимо ову једну, блинк.хтмл. 986 00:58:21,770 --> 00:58:27,560 Назад у 1990, дошло је буквално ХТМЛ тагове зове блинк ознака, 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 Имам ХТМЛ таг, главе команду и наслов ознаку. 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 Да прогласи неку функцију у ЈаваСцрипту, прилично слично ПХП, 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 Дакле вар див, то само значи да ми променљиву зове див. 1010 00:59:48,670 --> 00:59:50,530 Могао сам да га звали фоо, али сам хтео да се зове див 1011 00:59:50,530 --> 00:59:52,620 због разлога који ће бити јасно у секунди. 1012 00:59:52,620 --> 00:59:57,480 Онда испада у ЈаваСцрипт - а то је ЈаваСцрипт код уграђен у мојој веб страници - 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 је функција зове гетЕлементБиИд који буквално чини то. 1028 01:00:47,690 --> 01:00:52,460 То ће вас елемент из ДОМ, Доцумент Објецт Модел дрво, 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 Ова слика о ДОМ који смо имали пре тренутак, 1032 01:01:01,400 --> 01:01:06,100 иако страница мало другачија, ако бих имао див на овој слици, 1033 01:01:06,100 --> 01:01:11,180 шта доцумент.гетЕлементБиИд ће се вратити на мене би ефикасно бити показивач 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 Испада са ЈаваСцрипт имате могућност да динамички уштинути ЦСС ваше странице. 1039 01:01:32,580 --> 01:01:39,060 До сада, све што смо урадили ЦСС, иако ограничена, у стилу атрибута, 1040 01:01:39,060 --> 01:01:41,730 или где другде смо ставили ЦСС? 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 >> Екстерни фајл, нешто ЦСС.. 1044 01:01:54,590 --> 01:01:56,730 Дакле, то су 3 места смо урадили до сада ЦСС, 1045 01:01:56,730 --> 01:01:59,310 али цака је да смо тешко смо кодирани све. 1046 01:01:59,310 --> 01:02:04,060 Одлучили сте како сте дове у псет 7, одлучили смо да пре предаје оно што наш ЦСС бити. 1047 01:02:04,060 --> 01:02:07,380 Али, ако желите да промените ЦСС, ви заправо могу да урадим 1048 01:02:07,380 --> 01:02:09,370 када имате конкретан програмски језик. 1049 01:02:09,370 --> 01:02:13,910 ЦСС, ХТМЛ - а не програмске језике. ЈаваСцрипт је. 1050 01:02:13,910 --> 01:02:18,200 Тако испада да чим имате један од оних правоугаоника од дрвета 1051 01:02:18,200 --> 01:02:23,050 зове ДОМ, она сама има неке податке унутар ње. 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 Ја бих да ово само гледајући упутство ЦСС корисника. 1055 01:02:37,330 --> 01:02:41,160 Испоставило се да је видљивост ЦСС имовине која ради оно што каже. 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 Ја питам да ли програмски видљивост овог дива је скривена, 1059 01:02:50,510 --> 01:02:53,390 Шта сам то променити у? Видљиво. 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 Али, они су заиста супротност у ЦСС: видљива и скривена. 1064 01:03:09,530 --> 01:03:15,520 Све ово не значи да је то променити ЦСС моје датотеке и гасе, и искључите 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 као ДОМ стабло, ХТМЛ сте послали са сервера, 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 >> И испоставило се да је прозор објекат има посебну функцију унутар њих зове сетИнтервал 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 И оно што је лепо овде је да смо урадили у Ц иако никад нисмо урадили. 1078 01:03:58,560 --> 01:04:01,580 Ц има нешто што се зове функција показивачи где можете проћи функције около 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 тако да сетИнтервал може назвати сваких 500 милисекунди. 1085 01:04:21,330 --> 01:04:28,200 Дакле, крајњи резултат, мада је ужасна, јесте да ако одем у лоцалхост и идите на блинк.хтмл, 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 дозволите ми да изаберете Елементи овамо, и обратите пажњу на унутрашњост ДОМ инспектора Цхроме. 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 али Нате је заправо одлука веома ефикасно коришћење боја у овом конкретном случају овде. 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 Пусти ме да идем у нашем каталогу форме и данас иде у форм0. 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 >> Пусти ме да идем у лоцалхост / форме, а то је форм0. 1101 01:05:28,960 --> 01:05:33,400 Ово је супер ружна ХТМЛ форма која има неколико поља за е-маил, за лозинку, 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 Ово се дешава да се подвргне глупог ПХП фајл под називом думп.пхп. 1107 01:05:50,800 --> 01:05:58,420 Све што ради је одштампате садржај $ _ГЕТ само за дијагностичке сврхе. 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 Ово је форм1.хтмл. То је естетски изгледа баш тако лоше, али је приметио како је фенси. 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 У реду. Дакле, дозволите ми да пробам. Тако малан@харвард.еду. Не треба лозинку. 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 У ствари, ако сте урадили зароните у псет 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 Ово је форм1.хтмл, и приметили да имам неку прилично познато синтаксу: 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 Ако имате неку ЈаваСцрипт кода у другом фајлу, баш као и са ЦСС можете га укључити. 1138 01:07:40,520 --> 01:07:44,530 И ти то са скриптом извора, а онда сам приметио очигледно повезивање 1139 01:07:44,530 --> 01:07:50,349 да гооглеапис.цом на веома дугом путу, али чије име фајла завршава јкуери.мин 1140 01:07:50,349 --> 01:07:52,420 за минимум јс.. 1141 01:07:52,420 --> 01:07:55,969 јКуери је супер популарна библиотека за ЈаваСцрипт да само чини ЈаваСцрипт 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 то је библиотека на врху ЈаваСцрипт слично ЦС50 библиотеци слој 1146 01:08:09,340 --> 01:08:13,670 на врху ниског нивоа Ц кода; стварност је готово свако на Интернету га користи. 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 Испоставило се да јКуери ради нешто мало фенси. 1150 01:08:27,450 --> 01:08:29,660 Јава има знак долара, али су бесмислени. 1151 01:08:29,660 --> 01:08:32,870 >> Они су као слова или Б или Ц. 1152 01:08:32,870 --> 01:08:36,670 јКуери је једноставно усвојио Конвенцију или некако ставила тврде да чињенице 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 Је више правилно се зове јКуери, али то не изгледа скоро као секси долара. 1157 01:08:53,009 --> 01:08:56,250 Али $ нема посебно значење. У ПХП је имао посебно значење. 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 Обавештење сам пролази у јКуери функцији моју глобалну променљиву документ 1162 01:09:08,830 --> 01:09:10,860 и онда зовем спреман.. 1163 01:09:10,860 --> 01:09:15,480 Шта јКуери суштини нема је она омогућава да се неке ствари ваниле ЈаваСцрипт 1164 01:09:15,480 --> 01:09:17,889 као документа објекта, прозор објекат, 1165 01:09:17,889 --> 01:09:20,790 а ако га прође на јКуери функције - 1166 01:09:20,790 --> 01:09:24,429 и опет, да буде јасно, ово је функција зове јКуери - 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 Дакле, у сировом ЈаваСцрипт постоји спреман функција, 1170 01:09:34,760 --> 01:09:37,810 али ако прође документ у јКуери функцији први, 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 Оно што је заиста интересантно у ЈаваСцрипт - а ПХП има и ово - 1179 01:10:03,540 --> 01:10:05,450 је анонимни функције. 1180 01:10:05,450 --> 01:10:10,560 У ЈаваСцрипт можете да прогласи функције које немају име, али они имају тело. 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 милисекунди? Блинк. 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 Ово такође изгледа мало нев, али то значи да овде јКуери функција, 1197 01:11:10,460 --> 01:11:13,430 а ово сад је пречица. 1198 01:11:13,430 --> 01:11:18,830 Овај фрагмент ХТМЛ на дну екрана наравно има неку стабла заступљеност. 1199 01:11:18,830 --> 01:11:21,730 Није ово. Ова страница је интересантнији од овог Хелло, ворлд пример. 1200 01:11:21,730 --> 01:11:25,210 Али има неких дрво које одговара том ХТМЛ. 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 Па шта јКуери чини изузетно лак за нас буквално је ово. 1204 01:11:38,340 --> 01:11:43,000 Само напред и да ме било шта див или било ком облику, без обзира на ХТМЛ елемент 1205 01:11:43,000 --> 01:11:45,820 има ИД регистрације. 1206 01:11:45,820 --> 01:11:52,440 Ово је еквивалентно доцумент.гетЕлементБиИд ('производње'). 1207 01:11:52,440 --> 01:11:54,170 >> Зашто људи воле јКуери? 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 $ Значи јКуери. Сада обратите пажњу на ово. 1217 01:12:25,560 --> 01:12:27,920 То је нешто као ЦСС. 1218 01:12:27,920 --> 01:12:33,370 Ако сте заронио у ЦСС ипак, ви ћете знати да то значи елемент чији је ИД производње. 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 асдф ако је то све што сам унео или малан@харвард.еду ако је то оно што сам откуцао. 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 То је много нову синтаксу. Али све јКуери следи ове врсте образаца. 1235 01:13:46,530 --> 01:13:49,880 А искрено, нисам ни знао да је постојала до пре неколико минута. 1236 01:13:49,880 --> 01:13:53,640 Ја Гооглед "Како да проверите да ли поље за потврду се проверава у јКуери?" 1237 01:13:53,640 --> 01:13:55,680 и то је синтакса, јер има начина да то ураде 1238 01:13:55,680 --> 01:13:58,010 са стварним сировог ЈаваСцрипт кода. 1239 01:13:58,010 --> 01:14:01,030 Дакле, као први страни проблема Сет 7 наглашава, 1240 01:14:01,030 --> 01:14:04,500 псет 7 је веома вежба у себе боотстраппинг 1241 01:14:04,500 --> 01:14:08,650 где смо под условом, надам се, концептуални оквир са којим желите да се позабаве псет. 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 и схвате да учење ХТМЛ, ЦСС, ЈаваСцрипт, па чак и СКЛ 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 И чак иако смо само гледали оне зову онсубмит и онреади, 1250 01:14:37,140 --> 01:14:40,310 можете да урадите ствари као онкеидовн, онкеиуп, 1251 01:14:40,310 --> 01:14:43,410 Волим када корисник додирне кључ, можете слушати то и тастер горе. 1252 01:14:43,410 --> 01:14:45,940 Гмаил има пречице на тастатури. 1253 01:14:45,940 --> 01:14:49,490 Како Гоогле спроводи пречице попут Ц за компонује? 1254 01:14:49,490 --> 01:14:54,120 Они слушају догађајима, као они зову, као онкеипресс или онкеиуп и онкеидовн. 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 Уместо слуша онреади или онсубмит, можете слушати онмоусеовер или онмоусеоут. 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 >> [ЦС50.ТВ]