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