1 00:00:00,000 --> 00:00:02,964 2 00:00:02,964 --> 00:00:05,434 >> [Гуляе музыка] 3 00:00:05,434 --> 00:00:11,825 4 00:00:11,825 --> 00:00:12,700 Ханна: Прывітанне, усім. 5 00:00:12,700 --> 00:00:15,866 Дзякуй вам, хлопцы, што прыйшлі з у агіднай надвор'і для віктарыны аднаго 6 00:00:15,866 --> 00:00:16,910 агляд сесіі. 7 00:00:16,910 --> 00:00:20,020 Як вы, хлопцы, ведаеце, віктарыны адзін гэта асяроддзе. 8 00:00:20,020 --> 00:00:22,209 Так што мы збіраемся ісці праз кучу пытанняў. 9 00:00:22,209 --> 00:00:24,000 DAVIN: Гэй, я магу сказаць, нешта рэальнае хутка? 10 00:00:24,000 --> 00:00:25,215 Ханна: Так, Дэвин збіраецца сказаць нешта рэальнае хуткі. 11 00:00:25,215 --> 00:00:25,780 DAVIN: Выбачайце. 12 00:00:25,780 --> 00:00:29,490 Толькі рэальныя хутка, калі ў вас ёсць пытанні аб віктарыне, вы можаце выходзіць у інтэрнэт. 13 00:00:29,490 --> 00:00:32,420 Перайсці да 2014 віктарыны адзін, пра віктарыне. 14 00:00:32,420 --> 00:00:34,680 Ён атрымаў Лагістыка Аб куды ісці, калі ісці. 15 00:00:34,680 --> 00:00:38,100 Калі вы адначасова паступіў, мы будзе мець віктарыну макіяж ў 5:30. 16 00:00:38,100 --> 00:00:40,350 Ці, калі вы даслаў мне пытанне, ў вас ёсць іншае пытанне. 17 00:00:40,350 --> 00:00:42,640 Але 05:30 з'яўляецца макіяж Час на сераду. 18 00:00:42,640 --> 00:00:44,540 Але калі ў вас ёсць пытанні, агульныя пытанні, 19 00:00:44,540 --> 00:00:45,748 онлайн мае ўсю лагістыку. 20 00:00:45,748 --> 00:00:47,690 Таму праверыць там першым. 21 00:00:47,690 --> 00:00:49,070 >> Ханна: Awesome. 22 00:00:49,070 --> 00:00:53,030 Дык вось вялікі спіс тым што мы будзем ісці да сённяшняга дня. 23 00:00:53,030 --> 00:00:57,390 Я збіраюся, каб ахапіць усе З матэрыял, які з'яўляецца, што першы слупок. 24 00:00:57,390 --> 00:01:00,710 Так C матэрыял, які мы пакрытыя пасля віктарыны нулявы. 25 00:01:00,710 --> 00:01:05,459 Пачынаючы са звязаным спісам, якая ўключае ў сябе паказальнікі. 26 00:01:05,459 --> 00:01:07,668 >> Добра, так што мы ўбачылі ў гэтым у апошнім аглядзе сесіі 27 00:01:07,668 --> 00:01:10,000 так што я збіраюся прайсці праз гэта крыху хутчэй. 28 00:01:10,000 --> 00:01:13,500 Проста падніміце руку, калі вы хочаце, каб я запаволіць або рашэння што-то далей. 29 00:01:13,500 --> 00:01:17,150 Але мы выкарыстоўваем звязаныя спісы, таму што мы пачалі ў C з масівамі. 30 00:01:17,150 --> 00:01:20,920 І масівы з'яўляюцца вялікімі, але Праблема ў тым, што яны маюць фіксаваны памер. 31 00:01:20,920 --> 00:01:24,925 Звязаныя спісы дазваляюць ствараць дынамічна памеру структуры дадзеных. 32 00:01:24,925 --> 00:01:28,520 33 00:01:28,520 --> 00:01:32,320 >> І мы маем нашы асноўныя аперацыі, ўстаўляць, выдаляць і шукаць. 34 00:01:32,320 --> 00:01:36,780 І мы можам зрабіць ўстаўку ў у горшым выпадку пастаянная часу 35 00:01:36,780 --> 00:01:39,140 калі мы проста пакласці яго ў самым пачатку. 36 00:01:39,140 --> 00:01:45,220 Выдаленне і шукаць, горшае Справа вялікі ой часу н. 37 00:01:45,220 --> 00:01:47,140 Такім чынам, яшчэ раз, проста каб перавярнуць з дапамогай гэтых фатаграфій, 38 00:01:47,140 --> 00:01:50,860 Я ведаю, што мы бачылі гэтыя ў мінулы раз, але мы хочаце, каб адсочваць нашага звязанага спісу 39 00:01:50,860 --> 00:01:53,440 Адсочваючы Кіраўнік нашай звязанага спісу. 40 00:01:53,440 --> 00:01:55,580 Таму што мы ведаем, што Кожны з нашых вузлоў 41 00:01:55,580 --> 00:01:58,610 проста будзе паказваць на наступны вузел у нашым звязанага спісу. 42 00:01:58,610 --> 00:02:00,460 >> Дык вось, як мы адсочваем. 43 00:02:00,460 --> 00:02:02,910 Нават калі гэта не бесперапынныя кавалкі памяці, 44 00:02:02,910 --> 00:02:07,410 мы можам знайсці іх, проста пасля розных стрэл. 45 00:02:07,410 --> 00:02:09,800 Вось наша структура для звязанага спісу вузлоў. 46 00:02:09,800 --> 00:02:11,440 Мы бачылі ў апошні раз. 47 00:02:11,440 --> 00:02:13,080 У нас ёсць структура вузла. 48 00:02:13,080 --> 00:02:14,340 І ён мае два ўласцівасці. 49 00:02:14,340 --> 00:02:17,020 Па-першае, фактычная Значэнне, якое мы хочам захаваць. 50 00:02:17,020 --> 00:02:18,290 У гэтым выпадку, гэта цэлы лік. 51 00:02:18,290 --> 00:02:21,100 Гэта можа быць радок, гэта можа быць знак, што вы хочаце. 52 00:02:21,100 --> 00:02:24,710 І потым, мы павінны адсочваць наступны вузел у нашым звязанага спісу. 53 00:02:24,710 --> 00:02:29,797 Так што будзе паказальнік на наступны вузел. 54 00:02:29,797 --> 00:02:31,880 Калі вы проста робіце пошук, як я ўжо казаў, 55 00:02:31,880 --> 00:02:34,900 Вы павінны былі б прытрымлівацца вашыя стрэлы ўніз. 56 00:02:34,900 --> 00:02:40,720 Устаўка, вы б адсочваць дзе астатняя частка вашага спісу. 57 00:02:40,720 --> 00:02:44,150 І вы хочаце, каб перанакіраваць галаву каб паказаць на нашу новага элемента, які 58 00:02:44,150 --> 00:02:46,640 у гэтым выпадку адзін, а затым адзін пакажа 59 00:02:46,640 --> 00:02:49,480 у астатняй частцы звязанага спісу. 60 00:02:49,480 --> 00:02:52,996 Такім чынам, яшчэ раз, я ведаю, што гэта крыху Трохі паўтарэння ад віктарыне нулявы. 61 00:02:52,996 --> 00:02:55,370 Такім чынам, мы павінны быць вельмі асцярожныя, аб парадку, у якім мы 62 00:02:55,370 --> 00:03:00,390 зрабіць гэтыя pointings таму мы не губляць задняй частцы спісу. 63 00:03:00,390 --> 00:03:04,122 OK, любыя пытанні з толькі аднаразова звязаныя спісы? 64 00:03:04,122 --> 00:03:06,060 Высокі, добра, халаднавата. 65 00:03:06,060 --> 00:03:09,410 >> Так што цяпер, мы збіраемся пайсці на што-то ледзь-ледзь больш складаным, 66 00:03:09,410 --> 00:03:10,920 ўдвая звязаныя спісы. 67 00:03:10,920 --> 00:03:13,680 Такім чынам, у дадатак да падтрымання дарожка наступнага вузла, 68 00:03:13,680 --> 00:03:16,220 мы таксама хочам, каб адсочваць папярэдняга вузла. 69 00:03:16,220 --> 00:03:19,580 І гэта дазваляе нам, калі мы у нейкі момант у нашай звязанага спісу, 70 00:03:19,580 --> 00:03:23,110 не толькі ісці наперад, але Таксама ітэрацыі ў зваротным кірунку. 71 00:03:23,110 --> 00:03:25,220 Таму што, як мы бачылі ў односвязанны спіс, 72 00:03:25,220 --> 00:03:27,980 калі б мы былі ў нейкай вузел, і усе раптам, мы вырашылі, 73 00:03:27,980 --> 00:03:30,160 на самай справе, я хачу, каб перайсці да Права вузел перада мной, 74 00:03:30,160 --> 00:03:32,034 Вы павінны былі б ісці ўсё шлях назад да галавы 75 00:03:32,034 --> 00:03:35,710 і перабраць, пакуль вы не знойдзена вузел вы шукалі. 76 00:03:35,710 --> 00:03:37,680 >> Так што гэта робіць рэчы трохі прасцей, так як мы 77 00:03:37,680 --> 00:03:39,670 спрабуюць перабраць праз наш звязанага спісу. 78 00:03:39,670 --> 00:03:47,870 Але гэта патрабуе ад нас, каб сачыць за адным больш паказальнік, так як яшчэ адзін вузел зорка. 79 00:03:47,870 --> 00:03:50,830 Добра, так вось пачынаецца самае цікавае. 80 00:03:50,830 --> 00:03:55,600 Мы збіраемся займацца рэалізацыі выдаліць для двойчы звязаных спісаў. 81 00:03:55,600 --> 00:03:58,660 Так што гэта тое, што гэта цалкам справядлівая гульня для віктарыны. 82 00:03:58,660 --> 00:04:00,750 Ён паказаў на апошніх віктарыны. 83 00:04:00,750 --> 00:04:04,220 Так, безумоўна, будзе падрыхтаваны кадзіраваць трохі ў З 84 00:04:04,220 --> 00:04:07,900 Не забывайце, што пры ўсіх гэта весела PHP і JavaScript, 85 00:04:07,900 --> 00:04:10,560 мы па-ранейшаму павінны памятаць, зрабіць C. Так асвяжыць, што 86 00:04:10,560 --> 00:04:12,146 калі вы адчуваеце сябе іржавы. 87 00:04:12,146 --> 00:04:14,580 >> Добра, давайце паглядзім, калі мы можам гэта зрабіць. 88 00:04:14,580 --> 00:04:16,312 Добра, халаднавата. 89 00:04:16,312 --> 00:04:18,600 Такім чынам, мы збіраемся, каб паспрабаваць рэдагаваць права тут, 90 00:04:18,600 --> 00:04:20,707 і, спадзяюся, гэта пойдзе, як запланавана. 91 00:04:20,707 --> 00:04:23,915 Добра, хто-небудзь хоча даць мне Прапанову аб тым, як я павінен пачаць? 92 00:04:23,915 --> 00:04:27,030 Адзінае, што я, рашэнняў з'яўляецца тое, што я ўжо 93 00:04:27,030 --> 00:04:30,180 былі вызначаны структура, адзін я паказаў на апошняй старонцы, 94 00:04:30,180 --> 00:04:31,420 на апошнім слайдзе. 95 00:04:31,420 --> 00:04:39,250 І я захоўваю галоўку майго звязаны Спіс у нейкі паказальнік называецца спіс. 96 00:04:39,250 --> 00:04:42,190 Хто-небудзь хоча Ці, каб мяне пачалі? 97 00:04:42,190 --> 00:04:45,410 >> АЎДЫТОРЫЯ: Ці можаце вы стварыць новы вузел патэлефанаваць па спісе? 98 00:04:45,410 --> 00:04:46,410 >> Ханна: Awesome, так мы збіраемся стварыць 99 00:04:46,410 --> 00:04:47,951 Новы вузел поўзаць па спісе. 100 00:04:47,951 --> 00:04:48,570 Мне гэта падабаецца. 101 00:04:48,570 --> 00:04:50,799 Я проста назваць яго паказальнік, калі гэта нармальна. 102 00:04:50,799 --> 00:04:52,340 І дзе яна павінна першапачаткова пачаць? 103 00:04:52,340 --> 00:04:57,280 104 00:04:57,280 --> 00:04:59,840 >> АЎДЫТОРЫЯ: Верагодна, на галава спісу. 105 00:04:59,840 --> 00:05:00,590 Ханна: прыгожы. 106 00:05:00,590 --> 00:05:03,670 Мы хочам пачаць з галавы, якая Я сказаў будзе захоўвацца ў спісе. 107 00:05:03,670 --> 00:05:04,170 Высокі. 108 00:05:04,170 --> 00:05:05,220 Усё ідзе нармальна. 109 00:05:05,220 --> 00:05:08,260 І цяпер, наша мэта заключаецца ў ітэрацыі па спісе 110 00:05:08,260 --> 00:05:12,870 пакуль мы не знойдзем вузел з Значэнне N, што мы хочам выдаліць. 111 00:05:12,870 --> 00:05:13,540 ОК? 112 00:05:13,540 --> 00:05:15,910 >> Так што цяпер гэта частка, дзе мы хочам перабраць. 113 00:05:15,910 --> 00:05:19,488 Можа хто-небудзь прапанаваць спосаб перабору? 114 00:05:19,488 --> 00:05:20,979 >> АЎДЫТОРЫЯ: пятля. 115 00:05:20,979 --> 00:05:21,840 >> Ханна: пятля. 116 00:05:21,840 --> 00:05:22,620 Я люблю гэта. 117 00:05:22,620 --> 00:05:25,550 У прыватнасці, мы можам паспрабаваць час цыклу. 118 00:05:25,550 --> 00:05:30,919 Добра, і мы ведаем, што мы дасягнулі канец нашага спісу, калі і што? 119 00:05:30,919 --> 00:05:32,210 АЎДЫТОРЫЯ: Калі паказальнік NULL. 120 00:05:32,210 --> 00:05:33,418 Ханна: Калі паказальнік NULL. 121 00:05:33,418 --> 00:05:34,320 Прыгожая, я люблю яго. 122 00:05:34,320 --> 00:05:35,110 Добра, халаднавата. 123 00:05:35,110 --> 00:05:39,300 124 00:05:39,300 --> 00:05:43,190 Так прабачце, калі мой абмяжоўвае дужка выгляд падзення з экрана. 125 00:05:43,190 --> 00:05:44,090 Мы прывезлі яго назад. 126 00:05:44,090 --> 00:05:46,610 Добра, халаднавата. 127 00:05:46,610 --> 00:05:48,690 Што далей? 128 00:05:48,690 --> 00:05:51,950 >> Такім чынам, мы ведаем, што мы хочам, каб выдаліць вузел, які мае значэнне N. 129 00:05:51,950 --> 00:05:56,340 Так давайце знойдзем выпадку, калі мы на самай справе знайсці наш вузел. 130 00:05:56,340 --> 00:05:57,840 Так як жа я магу праверыць гэта? 131 00:05:57,840 --> 00:06:02,210 Я проста кажу, калі паказальнік, а затым, калі я хачу, каб атрымаць значэнне з паказальніка, 132 00:06:02,210 --> 00:06:08,940 Я проста стрэлка N, роўная п, параметр 133 00:06:08,940 --> 00:06:14,490 што мы далі гэтай функцыі, вузел, які мы хочам на самой справе выдаліць. 134 00:06:14,490 --> 00:06:17,090 Ёсць пытанні Аж да тут? 135 00:06:17,090 --> 00:06:18,360 Добра. 136 00:06:18,360 --> 00:06:24,140 ОК, так што зараз давайце намалюем хуткую карціну на борце для таго, каб візуалізаваць гэта. 137 00:06:24,140 --> 00:06:30,710 >> Такім чынам, давайце казаць ёсць наша любімая вузел. 138 00:06:30,710 --> 00:06:34,480 І гэта мае значэнне, я проста скажу, чатыры. 139 00:06:34,480 --> 00:06:40,340 І гэта паказвае на наступны вузел у нашым звязанага спісу. 140 00:06:40,340 --> 00:06:42,220 І няма нічога перад ім. 141 00:06:42,220 --> 00:06:45,800 Такім чынам, мы маем наш папярэдні паказваючы на ​​няма. 142 00:06:45,800 --> 00:06:48,110 У гэтым выпадку, мы паказваем таму. 143 00:06:48,110 --> 00:06:50,960 ОК, проста стварэння маёй Звязаны спіс тут. 144 00:06:50,960 --> 00:06:53,630 І ў нас ёсць спіс, які паказвае да гэтай структуры з самага пачатку. 145 00:06:53,630 --> 00:06:57,220 146 00:06:57,220 --> 00:07:00,485 Я намалюю яшчэ адзін для Дзеля паўнаты. 147 00:07:00,485 --> 00:07:04,209 148 00:07:04,209 --> 00:07:06,117 ОК. 149 00:07:06,117 --> 00:07:07,480 Я пакажу яго наперад. 150 00:07:07,480 --> 00:07:09,550 І я буду казаць, што адзін назад. 151 00:07:09,550 --> 00:07:10,360 Ой, прабачце. 152 00:07:10,360 --> 00:07:12,710 Так, атрымаў гэта таму. 153 00:07:12,710 --> 00:07:15,548 154 00:07:15,548 --> 00:07:16,967 Зрабіце гэта зноў. 155 00:07:16,967 --> 00:07:18,330 Добра, што мы ідзем. 156 00:07:18,330 --> 00:07:19,910 Добра, атрымаў яго. 157 00:07:19,910 --> 00:07:21,780 Добра, вось наша карціна. 158 00:07:21,780 --> 00:07:24,860 >> Такім чынам, мы хочам разгледзець два выпадкі. 159 00:07:24,860 --> 00:07:27,330 Першы выпадак, калі вузел, мы хочам, каб выдаліць 160 00:07:27,330 --> 00:07:29,420 знаходзіцца ў самым пачатку нашага спісу. 161 00:07:29,420 --> 00:07:34,070 І потым, другі выпадак, што мы хочам каб разгледзець, калі гэта дзе-небудзь яшчэ. 162 00:07:34,070 --> 00:07:37,660 Я разумею, што гэта цалкам брудны малюнак з усім маім пры спробе ачысціць, 163 00:07:37,660 --> 00:07:40,400 але, спадзяюся, мы паспрабуем, каб зрабіць гэта ясна з нейкай код. 164 00:07:40,400 --> 00:07:45,450 >> Такім чынам, давайце разгледзім выпадак, дзе мы знайшлі наш вузел, 165 00:07:45,450 --> 00:07:48,900 і гэта на вельмі пачатак нашага звязанага спісу. 166 00:07:48,900 --> 00:07:50,810 Хто-небудзь даць мне Прапанова тут адносна таго, што 167 00:07:50,810 --> 00:07:54,684 Я павінен зрабіць, каб на самой справе выдаліць наш вузел? 168 00:07:54,684 --> 00:07:55,970 Гэта крыху больш складана. 169 00:07:55,970 --> 00:07:56,470 ОК? 170 00:07:56,470 --> 00:07:59,628 >> АЎДЫТОРЫЯ: Вы павінны прыняць Вузел, які будзе прадстаўлены 171 00:07:59,628 --> 00:08:01,794 і каб яна паказвала на той, які будзе пасьля яго, 172 00:08:01,794 --> 00:08:03,004 і прыняць вузел, будзе пасля яго і зрабіць 173 00:08:03,004 --> 00:08:04,554 гэта паказвае на вузел перад ёй. 174 00:08:04,554 --> 00:08:05,220 Ханна: Цалкам дакладна. 175 00:08:05,220 --> 00:08:10,640 ОК, так што гэта справа where-- мы маем два выпадкі. 176 00:08:10,640 --> 00:08:14,100 Мы маем выпадак, калі ў вузел, які мы шукаем 177 00:08:14,100 --> 00:08:18,270 з'яўляецца пярэдняя частка спісу. 178 00:08:18,270 --> 00:08:23,110 ОК, а затым выпадку, калі вы Апісаная у адваротным выпадку, ці не так? 179 00:08:23,110 --> 00:08:24,500 Гэта дзе-то ў спісе. 180 00:08:24,500 --> 00:08:27,460 181 00:08:27,460 --> 00:08:32,840 Так вы сказалі, мы павінны шукаць у вузле папярэдняй, 182 00:08:32,840 --> 00:08:36,500 і зрабіць папярэдні вузел паказваюць на наступны вузел. 183 00:08:36,500 --> 00:08:40,510 Такім чынам, давайце казаць, што мы спрабуе ўзяць з пяці 184 00:08:40,510 --> 00:08:43,059 На маю вельмі брудны малюнак тут. 185 00:08:43,059 --> 00:08:47,530 Мы хочам, каб пераканацца, што чатыры цяпер паказвае на шэсць. 186 00:08:47,530 --> 00:08:49,590 Чацвёркі суседнімі кропкамі да шасці. 187 00:08:49,590 --> 00:08:52,150 І шэсць у папярэдніх пунктах да чатырох. 188 00:08:52,150 --> 00:08:53,960 Гэта наша мэта тут, ці не так? 189 00:08:53,960 --> 00:08:56,150 Гэта тое, што я думаю, што вы проста сказаў там. 190 00:08:56,150 --> 00:08:58,450 >> Такім чынам, давайце, што першы кавалак. 191 00:08:58,450 --> 00:09:02,300 Давайце зробім маюць папярэдняя паказальнік папярэдняга. 192 00:09:02,300 --> 00:09:06,550 193 00:09:06,550 --> 00:09:09,690 Так чацвёркі наступны павінен паказваць на што? 194 00:09:09,690 --> 00:09:13,210 195 00:09:13,210 --> 00:09:14,900 Менавіта, у гэтым выпадку, шэсць. 196 00:09:14,900 --> 00:09:18,470 Такім чынам, мы павінны сказаць, паказальнік, побач. 197 00:09:18,470 --> 00:09:20,600 ОК? 198 00:09:20,600 --> 00:09:21,150 Добра. 199 00:09:21,150 --> 00:09:24,870 Такім чынам, давайце пазбавіцца ад гэтага выродлівага малюнка і паспрабуйце намаляваць некалькі прыемней адзін. 200 00:09:24,870 --> 00:09:29,040 201 00:09:29,040 --> 00:09:31,172 У нас ёсць спіс галавы тут. 202 00:09:31,172 --> 00:09:36,440 203 00:09:36,440 --> 00:09:42,740 І гэта паказвае на першы вузел у наш звязаны спіс, які мы сказалі чатыры. 204 00:09:42,740 --> 00:09:45,620 Вось наш другі вузел, пяць. 205 00:09:45,620 --> 00:09:47,307 І наш трэці вузел, шэсць. 206 00:09:47,307 --> 00:09:50,265 Проста спрабую зрабіць сапраўды такі жа карціна, толькі крыху больш чыста. 207 00:09:50,265 --> 00:09:52,780 208 00:09:52,780 --> 00:09:56,280 Такім чынам, чатыры ДАЛЬШЕ Першапачаткова паказвае на пяць. 209 00:09:56,280 --> 00:09:58,620 Five далей кропкі да шасці. 210 00:09:58,620 --> 00:10:00,170 Шостага папярэдніх пунктах да пяці. 211 00:10:00,170 --> 00:10:02,470 І пяць у папярэдніх пунктах да чатырох. 212 00:10:02,470 --> 00:10:03,360 Так нашмат прыемней! 213 00:10:03,360 --> 00:10:04,530 Добра, халаднавата. 214 00:10:04,530 --> 00:10:07,770 >> Так што цяпер, што мы зрабілі толькі тут, гэты радок кода, 215 00:10:07,770 --> 00:10:12,680 у якім гаворыцца, паказальнік папярэдняя Далей, так што гэта значыць? 216 00:10:12,680 --> 00:10:17,540 Гэта азначае, што калі мы глядзім на пяць, перайсці да папярэдняга вузлу, 217 00:10:17,540 --> 00:10:21,970 і гэта побач павінны зараз Справа ў пяць будзе далей. 218 00:10:21,970 --> 00:10:27,840 Так па сутнасці, тое, што гэта робіць з'яўляецца тое, што гэта сціранне гэтую стрэлку 219 00:10:27,840 --> 00:10:29,640 і робіць яго адразу перайсці на працягу пяці. 220 00:10:29,640 --> 00:10:31,360 Гэта зразумела? 221 00:10:31,360 --> 00:10:33,200 Я ведаю, што можа быць трохі, такая. 222 00:10:33,200 --> 00:10:34,480 Я бачу некаторыя галовы ківае. 223 00:10:34,480 --> 00:10:35,390 Гэта добра. 224 00:10:35,390 --> 00:10:36,670 Добра, халаднавата. 225 00:10:36,670 --> 00:10:39,590 Цяпер, што наступны крок? 226 00:10:39,590 --> 00:10:42,060 >> Я скід далей. 227 00:10:42,060 --> 00:10:45,297 Цяпер, пасля чаго іншыя стрэлкі мне трэба змяніць? 228 00:10:45,297 --> 00:10:46,130 Гэта прама тут. 229 00:10:46,130 --> 00:10:47,560 Шэсць папярэдняе. 230 00:10:47,560 --> 00:10:50,620 Мы не хочам шэсць папярэдняе каб паказаць на пяць больш. 231 00:10:50,620 --> 00:10:54,580 Мы хочам, каб яна паказвала на чатыры. 232 00:10:54,580 --> 00:10:56,190 Ці мае гэтая карціна мае сэнс? 233 00:10:56,190 --> 00:10:58,370 Так што цяпер мы можам на самай справе ўзяць пяць ад'ездзе. 234 00:10:58,370 --> 00:10:59,370 Так што давайце гэтую частку. 235 00:10:59,370 --> 00:11:03,390 236 00:11:03,390 --> 00:11:11,180 Тое, што я павінен зрабіць перад скінуць шэсць папярэдняе чатырох? 237 00:11:11,180 --> 00:11:14,360 Любыя ідэі там? 238 00:11:14,360 --> 00:11:17,369 >> АЎДЫТОРЫЯ: Free вузел паміж іх, паклаўшы яе на нуль? 239 00:11:17,369 --> 00:11:17,910 Ханна: Круто. 240 00:11:17,910 --> 00:11:21,100 Вызначана, наша канчатковая мэта будзе вызваліць вузел. 241 00:11:21,100 --> 00:11:22,490 Такім чынам, мы можам зрабіць гэта прама тут. 242 00:11:22,490 --> 00:11:23,540 Бясплатны паказальнікам. 243 00:11:23,540 --> 00:11:24,810 Цалкам дакладна. 244 00:11:24,810 --> 00:11:29,160 Але яшчэ да гэтага, давайце просто-- Наша мэта права 245 00:11:29,160 --> 00:11:38,730 тут, каб усталяваць паказальнік на наступны папярэдняя роўная паказальнік папярэдняга. 246 00:11:38,730 --> 00:11:40,760 Я ведаю, што гэта становіцца зачыненыя. 247 00:11:40,760 --> 00:11:45,440 Добра, давайце take-- халаднавата. 248 00:11:45,440 --> 00:11:46,990 Можа ўсё бачаць гэтую ніжнюю лінію? 249 00:11:46,990 --> 00:11:47,840 Ці гэта супер малюсенькая? 250 00:11:47,840 --> 00:11:50,430 251 00:11:50,430 --> 00:11:54,300 >> Таму, перш чым выканаць гэтая лінія тут, мы хочам 252 00:11:54,300 --> 00:11:58,375 каб пераканацца, што паказальнік на наступны не з'яўляецца нулявым. 253 00:11:58,375 --> 00:12:00,500 Таму што, калі паказальнік далей, NULL, якія памылкі 254 00:12:00,500 --> 00:12:02,727 я атрымаю, калі я спрабую спасылкі на нулявы паказальнік? 255 00:12:02,727 --> 00:12:03,560 АЎДЫТОРЫЯ: віна Seg. 256 00:12:03,560 --> 00:12:05,660 Ханна: віна SEG, прыгожы. 257 00:12:05,660 --> 00:12:09,690 Такім чынам, калі гэта не NULL, то мы можам скінуць. 258 00:12:09,690 --> 00:12:14,420 І ў нас ёсць шэсць цэлых зноў да чатырох. 259 00:12:14,420 --> 00:12:17,440 Пытанні аж да гэтага моманту? 260 00:12:17,440 --> 00:12:17,940 Так? 261 00:12:17,940 --> 00:12:19,814 >> АЎДЫТОРЫЯ: У ваш першы калі заява, ці не так 262 00:12:19,814 --> 00:12:23,817 значыць мець стрэлку Далей, або [неразборліва]? 263 00:12:23,817 --> 00:12:25,150 Ханна: Я меў на ўвазе паказальнік са стрэлкай п. 264 00:12:25,150 --> 00:12:30,270 Так у асноўным, тое, што я спрабую зрабіць гэта сказаць, бягучы вузел, што я 265 00:12:30,270 --> 00:12:34,100 перабору, бягучы вузел, што Я гляджу на, я захоўваю ў паказальнік. 266 00:12:34,100 --> 00:12:37,630 І я хачу ведаць, паказальніка Значэнне, якое ў дадзеным выпадку з'яўляецца п. 267 00:12:37,630 --> 00:12:39,500 І я хачу, каб убачыць, з'яўляецца вузел Я шукаю 268 00:12:39,500 --> 00:12:42,790 для вузла я імкнуся, каб выдаліць? 269 00:12:42,790 --> 00:12:47,657 Дык вось чаму мы тут маем паказальнік п. 270 00:12:47,657 --> 00:12:49,857 >> АЎДЫТОРЫЯ: Так стрэлка ідзе п, усталяваць значэнне 271 00:12:49,857 --> 00:12:52,058 і захаваць яго ў вузел, званы п? 272 00:12:52,058 --> 00:12:55,410 273 00:12:55,410 --> 00:12:58,820 >> Ханна: Так што гэта, як калі б я якія праходзяць праз гэтую звязанага спісу 274 00:12:58,820 --> 00:13:00,310 і, паказваючы на ​​пяць. 275 00:13:00,310 --> 00:13:03,600 Калі я хачу, каб атрымаць гэта значэнне, калі Я хачу, каб гэты лік, 5, 276 00:13:03,600 --> 00:13:06,400 Я павінен зрабіць паказальнік са стрэлкай п. 277 00:13:06,400 --> 00:13:06,900 Прахладны? 278 00:13:06,900 --> 00:13:07,900 Так. 279 00:13:07,900 --> 00:13:11,200 >> АЎДЫТОРЫЯ: п назву зменнай? 280 00:13:11,200 --> 00:13:11,700 Ханна: Так. 281 00:13:11,700 --> 00:13:14,870 Так што, калі мы фліп назад адзін слайд, п назву 282 00:13:14,870 --> 00:13:18,660 ад кошту ўнутры вузел у нашым звязанага спісу. 283 00:13:18,660 --> 00:13:21,510 І я ведаю, што ён можа атрымаць крыху крыху заблытаным, таму што мы таксама 284 00:13:21,510 --> 00:13:24,680 заклікаюць рэч што мы хочам, каб выдаліць N. 285 00:13:24,680 --> 00:13:26,717 Дык вось дзе, што адна лінія ідзе ад. 286 00:13:26,717 --> 00:13:27,671 Так? 287 00:13:27,671 --> 00:13:31,010 >> Зала: А ў вас ёсць [Неразборліва], як яны працуюць? 288 00:13:31,010 --> 00:13:33,872 289 00:13:33,872 --> 00:13:35,780 Паказальнік [неразборліва]? 290 00:13:35,780 --> 00:13:37,520 >> Ханна: Вядома. 291 00:13:37,520 --> 00:13:40,027 Вы кажаце about--, якая лінія? 292 00:13:40,027 --> 00:13:41,526 АЎДЫТОРЫЯ: апошняя радок [неразборліва]. 293 00:13:41,526 --> 00:13:44,280 294 00:13:44,280 --> 00:13:45,250 >> Ханна: Вядома, добра. 295 00:13:45,250 --> 00:13:48,540 Такім чынам, давайце паглядзім на карціну ў для таго, каб паспрабаваць растлумачыць гэта. 296 00:13:48,540 --> 00:13:51,030 Мне вельмі шкада, для камера, пытанне было 297 00:13:51,030 --> 00:13:54,580 мы можам растлумачыць паказальнік стрэлку побач паказальнік папярэдняга. 298 00:13:54,580 --> 00:14:01,510 Такім чынам, давайце казаць, што мы знаходзімся ў пяці і наша мэта складаецца ў тым, каб выдаліць пяць. 299 00:14:01,510 --> 00:14:07,240 Так-паказальнік, які з іх тры вузла, ці дае гэта нам? 300 00:14:07,240 --> 00:14:10,840 Гэта падводзіць нас да шостага вузла, ці не так? 301 00:14:10,840 --> 00:14:16,490 >> ОК, так што зараз мы просім для шасці папярэдняе. 302 00:14:16,490 --> 00:14:17,060 ОК? 303 00:14:17,060 --> 00:14:20,210 І мы скіду гэта роўным чатыром, 304 00:14:20,210 --> 00:14:23,214 якое адбылося ў пяць папярэдняе. 305 00:14:23,214 --> 00:14:25,180 Я ведаю, гэта супер цяжка адсочваць. 306 00:14:25,180 --> 00:14:29,286 Я вельмі рэкамендую вам маляваць калі вы атрымліваеце такое пытанне. 307 00:14:29,286 --> 00:14:30,242 Так? 308 00:14:30,242 --> 00:14:32,617 >> Залы: прычына таго, што мы не маем [неразборліва]? 309 00:14:32,617 --> 00:14:37,430 310 00:14:37,430 --> 00:14:38,570 >> Ханна: Цалкам дакладна. 311 00:14:38,570 --> 00:14:44,800 Так пытанне было, чаму мы не павінны правяраць тут? 312 00:14:44,800 --> 00:14:48,160 Чаму б нам не трэба, каб праверыць, што паказальнік папярэдняя ня роўная нулю? 313 00:14:48,160 --> 00:14:50,070 І гэта таму, што мы ўжо выдзелілі 314 00:14:50,070 --> 00:14:52,490 выпадку, калі паказальніка у самым пачатку. 315 00:14:52,490 --> 00:14:54,060 Вельмі добрае пытанне. 316 00:14:54,060 --> 00:14:56,880 Што-небудзь яшчэ пра гэта? 317 00:14:56,880 --> 00:14:57,380 Добра, халаднавата. 318 00:14:57,380 --> 00:14:58,360 Так давайце скончым яго. 319 00:14:58,360 --> 00:14:59,890 Мы ўжо амаль там. 320 00:14:59,890 --> 00:15:01,310 >> Так што, калі ён знаходзіцца на галаве? 321 00:15:01,310 --> 00:15:03,360 Што рабіць, калі замест спрабуеце выдаліць пяць, 322 00:15:03,360 --> 00:15:06,240 мы на самай справе хацелі, каб выдаліць чатыры? 323 00:15:06,240 --> 00:15:07,270 Што б я павінен рабіць? 324 00:15:07,270 --> 00:15:09,610 Ну, я хачу, каб скінуць маю галаву да чаго? 325 00:15:09,610 --> 00:15:14,288 326 00:15:14,288 --> 00:15:15,585 Крычы? 327 00:15:15,585 --> 00:15:16,710 АЎДЫТОРЫЯ: адзін пасля яго. 328 00:15:16,710 --> 00:15:17,460 Ханна: прыгожы. 329 00:15:17,460 --> 00:15:26,430 Такім чынам, мы хочам пералічыць, паказваюць да таго, што наша паказальнік на наступны вузел. 330 00:15:26,430 --> 00:15:29,040 Добра. 331 00:15:29,040 --> 00:15:30,810 І толькі для паўнаты гадоў дзеля, мы б 332 00:15:30,810 --> 00:15:35,590 хочаце праверыць, што да таго часу, як наш спіс не з'яўляецца нулявым, так доўга, як наш спіс не з'яўляецца 333 00:15:35,590 --> 00:15:42,730 пуста, то мы хочам, каб усталяваць наш папярэдні роўная нуля. 334 00:15:42,730 --> 00:15:46,960 335 00:15:46,960 --> 00:15:50,230 Пытанне да гэтага часу? 336 00:15:50,230 --> 00:15:53,205 Адзін крок ад из--? 337 00:15:53,205 --> 00:15:55,530 >> АЎДЫТОРЫЯ: было б, калі Спіс не роўная нулю? 338 00:15:55,530 --> 00:15:56,950 >> Ханна: Так, вы маеце рацыю. 339 00:15:56,950 --> 00:15:58,130 Мне вельмі шкада. 340 00:15:58,130 --> 00:16:00,040 Гэта спіс не роўная нулю. 341 00:16:00,040 --> 00:16:01,915 Высокі. 342 00:16:01,915 --> 00:16:04,245 Спрабуючы прывесці гэта ўсё на экране. 343 00:16:04,245 --> 00:16:06,870 Гэта свайго роду падзення. 344 00:16:06,870 --> 00:16:07,730 Прабачце, хлопцы. 345 00:16:07,730 --> 00:16:11,874 І апошняе, але не менш важнае, усё мы павінны зрабіць, гэта вяртанне. 346 00:16:11,874 --> 00:16:12,840 ОК. 347 00:16:12,840 --> 00:16:15,400 Гэта было шмат забітыя на самай справе хутка. 348 00:16:15,400 --> 00:16:16,800 Вазьміце секунду, каб паглядзець гэта зноў. 349 00:16:16,800 --> 00:16:18,216 Скажыце мне, калі ў вас ёсць якія-небудзь пытанні. 350 00:16:18,216 --> 00:16:20,232 351 00:16:20,232 --> 00:16:20,732 Так? 352 00:16:20,732 --> 00:16:26,940 >> АЎДЫТОРЫЯ: Калі спіс на галава, then-- чакаць, дулю. 353 00:16:26,940 --> 00:16:27,700 >> Ханна: Добра, добра. 354 00:16:27,700 --> 00:16:30,987 Так што гэта, калі спіс знаходзіцца ў галаве, мы выдаляем яго на тое, мы ўставілі. 355 00:16:30,987 --> 00:16:31,486 Так? 356 00:16:31,486 --> 00:16:33,777 >> АЎДЫТОРЫЯ: Ці можаце вы растлумачыць, першае, калі заяву зноў? 357 00:16:33,777 --> 00:16:36,149 Калі паказальнік на п роўная п? 358 00:16:36,149 --> 00:16:36,690 Ханна: Вядома. 359 00:16:36,690 --> 00:16:42,780 Такім чынам, наша мэта ўсёй гэтай функцыі каб выдаліць вузел, які мае значэнне N. 360 00:16:42,780 --> 00:16:47,460 Так што, калі мы знаходзім, як мы пераборы нашым спісе, 361 00:16:47,460 --> 00:16:51,770 вузел са значэннем п, што гэта які мы хочам выдаліць. 362 00:16:51,770 --> 00:16:57,286 Такім чынам, усе працэдуры выдалення адбываецца ўнутры гэтага вялікага, калі заяву. 363 00:16:57,286 --> 00:16:58,593 Ці значыць гэта, мае сэнс? 364 00:16:58,593 --> 00:16:59,480 Крута. 365 00:16:59,480 --> 00:16:59,990 Так? 366 00:16:59,990 --> 00:17:02,864 >> АЎДЫТОРЫЯ: Можа быць, вы проста не можаце бачыць гэта, але не неабходна таксама лінію 367 00:17:02,864 --> 00:17:06,024 для пракруткі спісу? 368 00:17:06,024 --> 00:17:06,690 Ханна: Awesome. 369 00:17:06,690 --> 00:17:10,896 Давайце пра гэта не крыху, і мы кінем гэта права ў ніжняй часткі. 370 00:17:10,896 --> 00:17:13,282 371 00:17:13,282 --> 00:17:15,490 Можа быць, дошка б ужо быў трохі лепш ідэя. 372 00:17:15,490 --> 00:17:17,829 Так як жа я навядзенні паказальніка наперад? 373 00:17:17,829 --> 00:17:20,184 >> АЎДЫТОРЫЯ: Паказальнік роўная паказальнік плюс адзін. 374 00:17:20,184 --> 00:17:21,599 >> Ханна: прыгожы. 375 00:17:21,599 --> 00:17:25,050 Так што дазваляе нам працягваць перабору. 376 00:17:25,050 --> 00:17:26,251 ОК. 377 00:17:26,251 --> 00:17:27,750 АЎДЫТОРЫЯ: Ці не было яшчэ? 378 00:17:27,750 --> 00:17:29,028 Ханна: Яшчэ раз? 379 00:17:29,028 --> 00:17:32,444 АЎДЫТОРЫЯ: Ці не было яшчэ пасля вялікі стары, калі 380 00:17:32,444 --> 00:17:35,519 Заяву [неразборліва]? 381 00:17:35,519 --> 00:17:36,310 Ханна: Якая частка? 382 00:17:36,310 --> 00:17:38,350 Мне шкада. 383 00:17:38,350 --> 00:17:41,800 >> АЎДЫТОРЫЯ: абыход, ці не павінны быць яшчэ? 384 00:17:41,800 --> 00:17:43,550 Ханна: Вы абсалютна можа мець яшчэ. 385 00:17:43,550 --> 00:17:46,930 Таму што ў мяне зваротны права там, вы не маеце патрэбу ў іншым месцы. 386 00:17:46,930 --> 00:17:48,760 Але так, добры пытанне. 387 00:17:48,760 --> 00:17:50,170 Добра, так? 388 00:17:50,170 --> 00:17:52,878 АЎДЫТОРЫЯ: Ці можам мы думаць паказальніка што перасоўванне па спісе 389 00:17:52,878 --> 00:17:56,610 як якое прымае значэнне кожнага вузла ў спісе? 390 00:17:56,610 --> 00:18:00,650 Ці мы павінны думаць пра яго, як Сартаваць па знешніх па адносінах да спісе? 391 00:18:00,650 --> 00:18:02,350 >> Ханна: Альбо адзін добра, я думаю. 392 00:18:02,350 --> 00:18:05,880 Як я сабе гэта Я кажу, добра, я паказальнікам. 393 00:18:05,880 --> 00:18:06,520 А гэта я. 394 00:18:06,520 --> 00:18:07,150 Гэта мая рука. 395 00:18:07,150 --> 00:18:09,960 Я збіраюся паказаць на розныя рэчы, якія я хачу для перабору. 396 00:18:09,960 --> 00:18:12,270 Па-першае, я збіраюся адзначыць у главе спісу. 397 00:18:12,270 --> 00:18:14,144 І гэта кажа мне, што я збіраецца паказваюць на чатыры. 398 00:18:14,144 --> 00:18:18,060 І так я, будучы вонкавым ў адносінах да спісу, Я можа паказваць на кожны з гэтых элементаў. 399 00:18:18,060 --> 00:18:19,520 Так што я думаю пра сябе як паказальнік. 400 00:18:19,520 --> 00:18:21,645 АЎДЫТОРЫЯ: Такім чынам, калі вы выдаляеце адзін з тых элементаў, 401 00:18:21,645 --> 00:18:23,404 Вы выдаляеце сябе, так бы мовіць. 402 00:18:23,404 --> 00:18:24,070 Ханна: Цалкам дакладна. 403 00:18:24,070 --> 00:18:25,920 Такім чынам, вы выдаліце ​​рэч Вы паказваеце на. 404 00:18:25,920 --> 00:18:28,340 Такім чынам, у дадзеным прыкладзе, што мы ўбачылі, дзе мы 405 00:18:28,340 --> 00:18:31,670 спрабуеце выдаліць пяць, калі я, паказваючы на ​​пяць, 406 00:18:31,670 --> 00:18:34,200 Я хачу выдаліць што я, паказваючы на. 407 00:18:34,200 --> 00:18:35,870 Цалкам дакладна. 408 00:18:35,870 --> 00:18:36,577 Так? 409 00:18:36,577 --> 00:18:39,410 АЎДЫТОРЫЯ: Хіба мы паклапаціліся выпадак, калі п не ў спісе? 410 00:18:39,410 --> 00:18:40,460 Ханна: Калі п не ў спісе? 411 00:18:40,460 --> 00:18:43,501 Усё, што адбываецца, дык гэта ты будзе перабіраць і перабіраць 412 00:18:43,501 --> 00:18:47,616 да канца, і потым, вы ідзяце каб дабрацца да паказальніка якія не маюць юрыдычнай, 413 00:18:47,616 --> 00:18:48,990 і тады вы будзеце рабіць. 414 00:18:48,990 --> 00:18:50,812 >> АЎДЫТОРЫЯ: Так у нас ёсць нічога вяртаць? 415 00:18:50,812 --> 00:18:51,520 Ханна: Мы можам. 416 00:18:51,520 --> 00:18:54,500 Так, што калі ён вызначаны ў гэтым Функцыя, я проста кажу, што яна вяртае 417 00:18:54,500 --> 00:18:55,770 анулявання незалежна. 418 00:18:55,770 --> 00:18:58,360 Але вы маглі б нешта як вяртанне цэлы лік, 419 00:18:58,360 --> 00:19:00,920 і гэта вярнуцца адмоўны 1, калі ён выходзіць з ладу. 420 00:19:00,920 --> 00:19:03,070 Што-нешта накшталт гэтага. 421 00:19:03,070 --> 00:19:04,494 Пытанні with-- так? 422 00:19:04,494 --> 00:19:05,410 АЎДЫТОРЫЯ: [неразборліва]? 423 00:19:05,410 --> 00:19:05,993 Ханна: Выбачайце? 424 00:19:05,993 --> 00:19:07,419 АЎДЫТОРЫЯ: [неразборліва]? 425 00:19:07,419 --> 00:19:07,960 Ханна: Вядома. 426 00:19:07,960 --> 00:19:11,730 Дык вось actual-- як толькі мы зрабіць усю гэтую працу рухаюцца 427 00:19:11,730 --> 00:19:16,530 усе гэтыя стрэлкі вакол, уся наша Мэта ў тым, каб пазбавіцца ад вузла 428 00:19:16,530 --> 00:19:18,230 што мы шукаем. 429 00:19:18,230 --> 00:19:21,610 Такім чынам, у гэтым выпадку, вызваляючы паказальнік, калі я паказваю да пяці, 430 00:19:21,610 --> 00:19:24,670 гэта як сціранне гэтай сярэдняй вузла. 431 00:19:24,670 --> 00:19:27,250 Гэта свабодная частка паказальніка. 432 00:19:27,250 --> 00:19:29,090 Гэта мае сэнс? 433 00:19:29,090 --> 00:19:31,390 >> АЎДЫТОРЫЯ: Так што нават думаў, Вы зрабілі не [неразборліва]? 434 00:19:31,390 --> 00:19:36,060 >> Ханна: Так мы меркавалі, у пачатку мы мелі некаторы спіс, які быў already-- 435 00:19:36,060 --> 00:19:37,220 яны паклалі гэта разам. 436 00:19:37,220 --> 00:19:39,761 Таму для таго, каб пабудаваць гэта Спіс, яны Павінна быць [неразборліва]. 437 00:19:39,761 --> 00:19:42,190 438 00:19:42,190 --> 00:19:42,750 Крута. 439 00:19:42,750 --> 00:19:44,490 Што-небудзь яшчэ з гэтым? 440 00:19:44,490 --> 00:19:46,386 Так? 441 00:19:46,386 --> 00:19:49,204 >> АЎДЫТОРЫЯ: Што рабіць, калі спіс ня роўная нулявую лінію? 442 00:19:49,204 --> 00:19:49,704 [Неразборліва]? 443 00:19:49,704 --> 00:19:52,289 444 00:19:52,289 --> 00:19:53,080 Ханна: Прама тут? 445 00:19:53,080 --> 00:19:53,840 АЎДЫТОРЫЯ: Так. 446 00:19:53,840 --> 00:19:57,370 Ханна: Добра, усё, што я раблю тым, што я толькі пераканаўшыся, 447 00:19:57,370 --> 00:20:03,250 што перш, чым я паспрабую пералічыць разыменовывания, перш чым я спрабую атрымаць доступ да папярэдніх, 448 00:20:03,250 --> 00:20:07,210 Я хачу, каб пераканацца, што гэта не NULL, таму я не атрымліваю памылку SEG. 449 00:20:07,210 --> 00:20:08,400 Крута. 450 00:20:08,400 --> 00:20:10,820 >> Добра, я ведаю, што гэта было даволі шмат, каб прайсці. 451 00:20:10,820 --> 00:20:14,950 Так што гэта слайд будзе даступныя для вас. 452 00:20:14,950 --> 00:20:17,341 Такім чынам, вы можаце прайсці праз гэта больш падрабязна. 453 00:20:17,341 --> 00:20:17,841 Так? 454 00:20:17,841 --> 00:20:19,749 >> АЎДЫТОРЫЯ: Чаму спіс [неразборліва]? 455 00:20:19,749 --> 00:20:24,129 456 00:20:24,129 --> 00:20:24,670 Ханна: Вядома. 457 00:20:24,670 --> 00:20:27,390 Так спіс сапраўды паказвае на гэты элемент прама тут, 458 00:20:27,390 --> 00:20:29,200 Першы элемент у спісе. 459 00:20:29,200 --> 00:20:30,748 Таму ён не можа мець папярэдні. 460 00:20:30,748 --> 00:20:31,736 Так? 461 00:20:31,736 --> 00:20:35,194 >> АЎДЫТОРЫЯ: сама кропка паказальнік па тым жа адрасе ў памяці? 462 00:20:35,194 --> 00:20:38,404 Ці значыць гэта паказваць на тое ж самае адрас у памяці, што і вузел 463 00:20:38,404 --> 00:20:40,640 што гэта, паказваючы на? 464 00:20:40,640 --> 00:20:43,865 >> Ханна: Так, гэта паказвае да гэтага вузла ў памяці. 465 00:20:43,865 --> 00:20:47,190 >> АЎДЫТОРЫЯ: справа, так калі вы [неразборліва]? 466 00:20:47,190 --> 00:20:50,580 >> Ханна: У нейкім сэнсе, так. 467 00:20:50,580 --> 00:20:51,280 ОК. 468 00:20:51,280 --> 00:20:52,997 Добра, давайце рухацца разам з гэтым. 469 00:20:52,997 --> 00:20:55,330 І калі ў вас ёсць пытанні, застацца ў рэшце рэшт, 470 00:20:55,330 --> 00:20:57,130 і мы можам прайсці праз гэта зноў. 471 00:20:57,130 --> 00:20:58,120 Добра, халаднавата. 472 00:20:58,120 --> 00:21:00,490 Зараз, мы атрымліваем рухацца далей для хэш-табліцы, спрабуе, 473 00:21:00,490 --> 00:21:04,940 і дрэвы, якія вы атрымалі супер знаёмыя з у р-мноства пяць, правапісу. 474 00:21:04,940 --> 00:21:11,020 >> Так хэш-табліцы проста Масіў з аднаразова звязаных спісаў 475 00:21:11,020 --> 00:21:14,050 або двойчы звязаны спіс сыходзіць ад яго. 476 00:21:14,050 --> 00:21:16,380 Такім чынам, мы маем свайго роду асацыятыўнага масіва. 477 00:21:16,380 --> 00:21:21,280 І як мы ведаем, якія з іх масівы вядра трапіць, 478 00:21:21,280 --> 00:21:24,137 мы выкарыстоўваем хэш-функцыі. 479 00:21:24,137 --> 00:21:26,470 Такім чынам, у гэтым выпадку, можа хто- думаю, што такое хэш-функцыі 480 00:21:26,470 --> 00:21:28,636 будзе толькі на аснове некаторых на ўваходзе і выхадзе? 481 00:21:28,636 --> 00:21:31,392 482 00:21:31,392 --> 00:21:33,194 >> АЎДЫТОРЫЯ: Ліст лік алфавіту. 483 00:21:33,194 --> 00:21:33,860 Ханна: Цалкам дакладна. 484 00:21:33,860 --> 00:21:36,160 Гэта проста ставіць іх у алфавітным парадку. 485 00:21:36,160 --> 00:21:39,280 Усё, што пачынаецца з Змяшчаецца ў першым вядры. 486 00:21:39,280 --> 00:21:43,340 Усе з B змяшчаецца ў другі коўш, гэтак далей, і таму падобнае. 487 00:21:43,340 --> 00:21:45,620 Высокі, добра. 488 00:21:45,620 --> 00:21:48,980 І хэш-функцыя любога функцыя, якая прымае ў слове 489 00:21:48,980 --> 00:21:51,910 і скажу вам, што вядро гэта яна належыць. 490 00:21:51,910 --> 00:21:55,150 Такім чынам, якія запісы ў нашай масіў, то ён належыць. 491 00:21:55,150 --> 00:21:58,080 >> Так што кожны раз даю Функцыя хэшавання слова, 492 00:21:58,080 --> 00:22:00,660 Ён павінен сказаць мне тое ж самае размясціць кожны раз. 493 00:22:00,660 --> 00:22:03,270 Так што, калі мы выкарыстоўваем хэш-функцыі ад папярэдняга слайда 494 00:22:03,270 --> 00:22:05,950 дзе мы сартаванне па Першая літара алфавіту, 495 00:22:05,950 --> 00:22:08,230 кожны раз, калі я даю маё Хэш-функцыя "яблык", 496 00:22:08,230 --> 00:22:10,180 ён заўсёды павінен вярнуць мне 0. 497 00:22:10,180 --> 00:22:12,890 Так што, калі ў мяне ёсць яблык пакласці ў маёй хэш-табліцы, 498 00:22:12,890 --> 00:22:17,700 калі я дам "яблык" на мой хэш-функцыі, ён павінен сказаць, ісці пакласці яго ў вядро 0. 499 00:22:17,700 --> 00:22:19,980 Калі я шукаю яблык у маёй хэш-табліцы 500 00:22:19,980 --> 00:22:24,340 і я кажу, дзе можа яблык у прамым эфіры, вы спытаеце ў хэш-функцыі. 501 00:22:24,340 --> 00:22:26,900 І гэта кажа, перайдзіце да вядро 0. 502 00:22:26,900 --> 00:22:29,150 Добра? 503 00:22:29,150 --> 00:22:32,660 Пытанні з хэш-функцый? 504 00:22:32,660 --> 00:22:34,570 Высокі. 505 00:22:34,570 --> 00:22:37,320 >> Вось некалькі больш падрабязнае тлумачэнне 506 00:22:37,320 --> 00:22:39,570 што хэш-функцыя можа выглядаць. 507 00:22:39,570 --> 00:22:42,230 508 00:22:42,230 --> 00:22:42,960 Добра. 509 00:22:42,960 --> 00:22:45,960 Цяпер, праблема з хэш функцыі знаходзіцца ў ідэальным свеце, 510 00:22:45,960 --> 00:22:48,870 мы б толькі адзін што ў кожным вядры. 511 00:22:48,870 --> 00:22:50,900 Але на самой справе, ёсць не толькі адно слова 512 00:22:50,900 --> 00:22:54,280 які пачынаецца з А. Там не толькі адно слова, якое пачынаецца з B. Такім чынам, 513 00:22:54,280 --> 00:22:56,960 У гэтым выпадку, калі раптам атрымаецца "ягада", 514 00:22:56,960 --> 00:22:58,710 і мы хочам, каб пакласці яго у нашым хэш-табліцы, 515 00:22:58,710 --> 00:23:03,640 і мы бачым, ах, няма, банан ўжо ёсць, тое, што мы будзем рабіць? 516 00:23:03,640 --> 00:23:05,900 >> Ну, у нас ёсць два варыянты. 517 00:23:05,900 --> 00:23:07,990 Першы варыянт лінейнага набліжэння, якія 518 00:23:07,990 --> 00:23:11,100 проста азначае, пайсці і знайсці Наступны пустое вядро. 519 00:23:11,100 --> 00:23:14,100 Ідзіце і знайдзіце наступную пустую запіс масіва. 520 00:23:14,100 --> 00:23:15,750 І проста паставіць "ягада" там. 521 00:23:15,750 --> 00:23:18,880 Так што я ведаю, што гэта, як мяркуецца, перайсці з бананам у вядро аднаго. 522 00:23:18,880 --> 00:23:22,155 Але проста пакласці яго ў вядро тры, таму што вядро тры пусты. 523 00:23:22,155 --> 00:23:24,806 524 00:23:24,806 --> 00:23:26,680 Іншым варыянтам з'яўляецца, верагодна, што вы рэалізуеце 525 00:23:26,680 --> 00:23:29,220 у р-набор, дзе вы былі асобныя ланцужкі. 526 00:23:29,220 --> 00:23:33,990 Такім чынам, кожны з вашых вядра, кожнага з вашых элементаў масіва, 527 00:23:33,990 --> 00:23:38,410 не толькі ўтрымлівае адзін словы, але на самой справе ўтрымлівае паказальнік на спіс слоў. 528 00:23:38,410 --> 00:23:41,880 Так што калі ў вас банан ў хэш-табліцы 529 00:23:41,880 --> 00:23:44,740 і вы раптам захацелася дадаць ягаду, не праблема. 530 00:23:44,740 --> 00:23:51,110 Проста дадайце ягады да канца, ці пачатак, вашага звязанага спісу. 531 00:23:51,110 --> 00:23:54,040 Добра, выдатна. 532 00:23:54,040 --> 00:23:58,490 Пытанні з хэш сталы, перш чым ісці далей? 533 00:23:58,490 --> 00:23:59,850 >> Добра. 534 00:23:59,850 --> 00:24:01,070 Дрэвы і спробаў. 535 00:24:01,070 --> 00:24:07,980 Такім чынам, гэта быў яшчэ адзін варыянт для рэалізацыі слоўнік. 536 00:24:07,980 --> 00:24:09,100 Вы маглі б зрабіць спробу. 537 00:24:09,100 --> 00:24:13,420 Так што гэта асаблівы від дрэва, паводзіць сябе як хэш-табліцы ў шматузроўневай. 538 00:24:13,420 --> 00:24:16,862 Такім чынам, вы будзеце бачыць карцінку дзе ў вас ёсць масіў, які 539 00:24:16,862 --> 00:24:19,320 паказвае на кучу масіваў якія паказваюць на кучу масіваў 540 00:24:19,320 --> 00:24:20,390 якія паказваюць на кучу масіваў. 541 00:24:20,390 --> 00:24:23,140 І мы ўбачым, што менавіта маецца будзе выглядаць у будучыні слайда. 542 00:24:23,140 --> 00:24:26,070 І яшчэ, як правіла, дрэва гэта проста нейкая структура дадзеных 543 00:24:26,070 --> 00:24:29,710 у якім дадзеныя арганізаваны ў нейкай іерархіі. 544 00:24:29,710 --> 00:24:32,610 Дык дзе мы бачылі ў нас ёсць нейкая разумення 545 00:24:32,610 --> 00:24:36,130 з верхняга ўзроўню, наступны ўзровень, Наступны ўзровень, і наступны ўзровень. 546 00:24:36,130 --> 00:24:39,690 Так што гэта, верагодна, найбольш выразна з некаторымі канкрэтнымі прыкладамі. 547 00:24:39,690 --> 00:24:40,880 Дык вось наша дрэва. 548 00:24:40,880 --> 00:24:42,970 Вы можаце бачыць, што гэта мае асаблівыя ўзроўні 549 00:24:42,970 --> 00:24:45,480 што мы пачынаем з гэтай каранёвага вузла, адзін. 550 00:24:45,480 --> 00:24:47,640 І мы можам спусціцца праз нашу дрэва. 551 00:24:47,640 --> 00:24:50,730 552 00:24:50,730 --> 00:24:53,910 >> Бінарнае дрэва Канкрэтны тып дрэва. 553 00:24:53,910 --> 00:24:56,770 І толькі спецыфікацыя для бінарных дрэў 554 00:24:56,770 --> 00:25:01,130 з'яўляецца тое, што кожны вузел мае не больш за два лісця. 555 00:25:01,130 --> 00:25:03,960 Такім чынам, вы не ўбачыце любы з гэтых вузлоў ёсць тры або чатыры 556 00:25:03,960 --> 00:25:06,880 або некаторы іншае лік лісця. 557 00:25:06,880 --> 00:25:11,310 А потым яшчэ больш канкрэтна гэта бінарнае дрэва пошуку 558 00:25:11,310 --> 00:25:18,010 дзе кожны вузел у левай частцы вузел будзе мець значэнне менш. 559 00:25:18,010 --> 00:25:21,180 І кожны значэнне права будзе больш. 560 00:25:21,180 --> 00:25:26,900 Так што, калі вы бачыце 44 знаходзіцца ў нашым корані, злева, 11, 22, і 33 561 00:25:26,900 --> 00:25:28,940 ўсё менш нашага кораня. 562 00:25:28,940 --> 00:25:33,890 І па праву ўсё Нумары bigger-- 66, 55, і 77. 563 00:25:33,890 --> 00:25:37,380 І гэта ўласцівасць справядліва на кожным узроўні дрэва. 564 00:25:37,380 --> 00:25:42,690 >> Таму, калі мы ідзем ўніз, каб 22, 11 і 33, па-ранейшаму 11 565 00:25:42,690 --> 00:25:46,950 менш, чым 22, і 33 больш, чым 22. 566 00:25:46,950 --> 00:25:50,160 І гэта робіць яго лягчэй шукаць таму што, калі мы шукаем колькасці, 567 00:25:50,160 --> 00:25:53,877 мы ведаем, якія менавіта філіял прытрымлівацца ўніз. 568 00:25:53,877 --> 00:25:56,210 Так што гэта павінна нагадаць вам трохі бінарнага пошуку. 569 00:25:56,210 --> 00:25:56,967 Так? 570 00:25:56,967 --> 00:25:58,835 >> АЎДЫТОРЫЯ: Такім чынам, калі вы знаходзіцеся апісання двайковы, 571 00:25:58,835 --> 00:26:00,587 вы сказалі, што не больш за два лісця? 572 00:26:00,587 --> 00:26:01,170 Ханна: Мм-хм. 573 00:26:01,170 --> 00:26:02,580 АЎДЫТОРЫЯ: Можа ёсць менш? 574 00:26:02,580 --> 00:26:03,121 Ханна: Так. 575 00:26:03,121 --> 00:26:06,720 Такім чынам, давайце казаць, напрыклад, вы не маюць цотная колькасць рэчаў 576 00:26:06,720 --> 00:26:11,791 і вы не маглі запоўніць усе свае лісце, гэта нармальна, калі ў цябе ёсць. 577 00:26:11,791 --> 00:26:12,290 ОК? 578 00:26:12,290 --> 00:26:12,789 Высокі. 579 00:26:12,789 --> 00:26:15,930 Любыя іншыя пытанні на дрэвах? 580 00:26:15,930 --> 00:26:16,670 ОК. 581 00:26:16,670 --> 00:26:20,110 >> Вернемся да нашых спробаў, як я казаў аб трохі раней, 582 00:26:20,110 --> 00:26:23,900 як у нас ёсць гэтыя масівы шматузроўневыя. 583 00:26:23,900 --> 00:26:26,280 Такім чынам, у гэтым выпадку, мы пачынаем у верхняй частцы. 584 00:26:26,280 --> 00:26:29,030 І мы можам прытрымлівацца якой-небудзь дадзенае слова ўніз. 585 00:26:29,030 --> 00:26:30,780 Так што давайце казаць, што мы хацелі шукаць Цьюрынга. 586 00:26:30,780 --> 00:26:34,380 Мы пачынаем у Т, прытрымлівайцеся за ім ўніз на масіў, які змяшчае U, 587 00:26:34,380 --> 00:26:37,350 і прытрымлівацца па ім ўніз, пакуль мы дасягнуць гэтую маленькую дэльту, якая 588 00:26:37,350 --> 00:26:39,060 кажа нам, так, вы знайшлі слова. 589 00:26:39,060 --> 00:26:43,200 590 00:26:43,200 --> 00:26:44,120 Ясна ў спробах? 591 00:26:44,120 --> 00:26:48,138 Нічога ісці туды? 592 00:26:48,138 --> 00:26:48,908 Так? 593 00:26:48,908 --> 00:26:51,866 АЎДЫТОРЫЯ: Ці ёсць сімвал дэльты павінны займаць прастору ў паспрабаваць? 594 00:26:51,866 --> 00:26:54,532 Ханна: Так, так што гэта не абавязкова трэба нават быць дэльта. 595 00:26:54,532 --> 00:26:57,760 Але мы павінны нейкім чынам распавесці нашым computer-- прабачце, 596 00:26:57,760 --> 00:27:01,130 так што мы ведаем, што TUR не слова. 597 00:27:01,130 --> 00:27:04,180 Таму што, скажам, у нас не было Гэтая канцэпцыя дэльта, гэтая канцэпцыя 598 00:27:04,180 --> 00:27:09,850 віншаванні, вы знайшлі слова, яна будзе ісці да канца і перабраць T-U-R, 599 00:27:09,850 --> 00:27:11,300 а потым сказаць, дзіўны, я знайшоў яго! 600 00:27:11,300 --> 00:27:12,670 Гэта павінна быць слова. 601 00:27:12,670 --> 00:27:13,720 Але гэта не рэальна. 602 00:27:13,720 --> 00:27:15,310 Мы хочам, каб уся Цьюрынга быць слова. 603 00:27:15,310 --> 00:27:17,760 Такім чынам, мы павінны нешта ў канец, які кажа, віншую, 604 00:27:17,760 --> 00:27:19,051 Вы знайшлі законны слова. 605 00:27:19,051 --> 00:27:21,680 АЎДЫТОРЫЯ: Такім чынам, калі ў вас было як 26 літар у алфавіце, 606 00:27:21,680 --> 00:27:24,560 вы на самой справе ёсць 27 ключы ў паспрабаваць? 607 00:27:24,560 --> 00:27:26,010 >> Ханна: Awesome, так. 608 00:27:26,010 --> 00:27:28,210 Таму на самай справе, я думаю, што будзе на наступным слайдзе. 609 00:27:28,210 --> 00:27:29,440 Та-так! 610 00:27:29,440 --> 00:27:32,880 Дзе, калі ў вас ёсць вузел у спробе, вы 611 00:27:32,880 --> 00:27:35,800 будзе мець 27 дзяцей замест 26. 612 00:27:35,800 --> 00:27:39,010 613 00:27:39,010 --> 00:27:40,050 Ёсць пытанні з гэтым? 614 00:27:40,050 --> 00:27:40,550 Так? 615 00:27:40,550 --> 00:27:44,569 АЎДЫТОРЫЯ: Чаму спрабуе ўзяць так шмат месца [неразборліва], як вы ідзяце? 616 00:27:44,569 --> 00:27:47,629 Чаму гэта лічыцца [неразборліва]? 617 00:27:47,629 --> 00:27:48,170 Ханна: Вядома. 618 00:27:48,170 --> 00:27:48,790 Давайце вернемся. 619 00:27:48,790 --> 00:27:52,350 Пытанне ў тым, чаму з'яўляюцца спробы нашмат больш 620 00:27:52,350 --> 00:27:54,620 чымсьці накшталт хэш-табліцу. 621 00:27:54,620 --> 00:27:57,790 Такім чынам, для кожнага з гэтых узроўняў, нават калі яны не малюецца тут, 622 00:27:57,790 --> 00:28:01,250 Вы павінны мець усе 26 знакаў. 623 00:28:01,250 --> 00:28:04,420 І прычына таго, што вы не можаце кажуць, ой, але, як і для Цьюрынга, я 624 00:28:04,420 --> 00:28:07,570 не трэба мець якой-небудзь з тых, адно і тое ж на ўзроўні U. Ну, 625 00:28:07,570 --> 00:28:11,390 калі раптам вы хочаце дадаць тое, што было, як T-H, 626 00:28:11,390 --> 00:28:14,800 Вы павінны былі б мець Магчымасць дадання гэтага слова. 627 00:28:14,800 --> 00:28:17,330 Такім чынам, для кожнай літары, Вы будзеце мець 628 00:28:17,330 --> 00:28:19,730 мець кучу масівы сыходзіць ад яго. 629 00:28:19,730 --> 00:28:24,060 Такім чынам, вы можаце ўбачыць, як гэта было б атрымаць вельмі вялікі, вельмі хутка. 630 00:28:24,060 --> 00:28:26,560 Любыя іншыя пытанні? 631 00:28:26,560 --> 00:28:28,980 Добра. 632 00:28:28,980 --> 00:28:29,832 Так? 633 00:28:29,832 --> 00:28:33,210 >> АЎДЫТОРЫЯ: Калі спрабуе хутчэй, чым хэш-табліцы? 634 00:28:33,210 --> 00:28:36,280 >> Ханна: Калі спрабуе хутчэй, чым хэш-табліцы? 635 00:28:36,280 --> 00:28:39,120 Так што, калі б у вас была сапраўды дрэнна хэш функцыя. 636 00:28:39,120 --> 00:28:41,840 Так што давайце казаць, што я быў бы, вось ваш хэш-функцыя. 637 00:28:41,840 --> 00:28:43,660 Незалежна ад таго, якое слова вы дасце мне, я заўсёды 638 00:28:43,660 --> 00:28:47,740 збіраецца паставіць яго ў элемент масіва 0. 639 00:28:47,740 --> 00:28:52,000 І таму мы ў канчатковым выніку з проста пакласці усё ў адным вялікім доўга звязанага спісу. 640 00:28:52,000 --> 00:28:58,740 І так пошук пара б узяць у горшым N Калі гэта ў самым канцы нашага спісу. 641 00:28:58,740 --> 00:29:03,150 З спробы, мы проста павінны паўтараць праз літар у слове. 642 00:29:03,150 --> 00:29:07,080 Такім чынам, нават калі мы дадалі кучу Чым больш слоў у нашай спробы, 643 00:29:07,080 --> 00:29:09,620 яна не будзе прымаць нас больш каб знайсці канкрэтнае слова. 644 00:29:09,620 --> 00:29:11,750 >> Усё, што мы павінны зрабіць, гэта, па Напрыклад, у гэтым выпадку, 645 00:29:11,750 --> 00:29:17,170 Дапусцім, мы шукаем зум, мы б проста перабраць 646 00:29:17,170 --> 00:29:19,840 Z-О-О-М, чатыры літары. 647 00:29:19,840 --> 00:29:22,250 Так што гэта проста Даўжыня слова маштабавання. 648 00:29:22,250 --> 00:29:25,400 Гэта не мае значэння, колькі Чым больш слоў мы ставім у гэтай спробе. 649 00:29:25,400 --> 00:29:30,225 Мы заўсёды можам атрымаць яго ў гэтых чатырох крокаў. 650 00:29:30,225 --> 00:29:31,215 Высокі. 651 00:29:31,215 --> 00:29:32,205 Так? 652 00:29:32,205 --> 00:29:34,185 >> АЎДЫТОРЫЯ: Так [неразборліва] з'яўляецца масіў, ці не так? 653 00:29:34,185 --> 00:29:35,322 >> Ханна: Мм-хм. 654 00:29:35,322 --> 00:29:37,155 АЎДЫТОРЫЯ: Калі вы Шукаю [неразборліва], 655 00:29:37,155 --> 00:29:40,929 Вы павінны былі б прайсці ваш масіў, каб знайсці [неразборліва]? 656 00:29:40,929 --> 00:29:41,470 Ханна: Вядома. 657 00:29:41,470 --> 00:29:44,000 АЎДЫТОРЫЯ: Хіба гэта не зойме больш часу? 658 00:29:44,000 --> 00:29:46,370 Ханна: Калі я іду сказаць, што мая масіва заўсёды 659 00:29:46,370 --> 00:29:49,250 будзе, B, C, D, E, F, G, бла-бла-бла, 660 00:29:49,250 --> 00:29:51,630 так што калі я заўсёды ведаю, што гэта у сапраўды такі ж парадак, 661 00:29:51,630 --> 00:29:53,880 калі я заўсёды ведаю, што гэта ў алфавітным парадку, 662 00:29:53,880 --> 00:29:57,860 Я магу толькі сказаць, вываду нумар так і так у алфавіце. 663 00:29:57,860 --> 00:29:59,620 Проста скакаць на гэтым месцы. 664 00:29:59,620 --> 00:30:01,860 Таму што памятаю, з масівы, мы можам атрымаць доступ 665 00:30:01,860 --> 00:30:06,590 любы элемент гэтага масіва ў пастаянным час, калі мы ведаем, дзе мы шукаем. 666 00:30:06,590 --> 00:30:09,080 667 00:30:09,080 --> 00:30:09,580 Так? 668 00:30:09,580 --> 00:30:12,005 >> АЎДЫТОРЫЯ: На папярэдняя слізгаць [неразборліва] 27, 669 00:30:12,005 --> 00:30:14,430 але 26 для першай. 670 00:30:14,430 --> 00:30:15,400 >> Ханна: Выбачайце? 671 00:30:15,400 --> 00:30:18,800 >> АЎДЫТОРЫЯ: Хіба гэта не першы адзін 0, так што не было б 26? 672 00:30:18,800 --> 00:30:24,900 >> Ханна: Вядома, таму, калі мы гаворым, 27, гэта збіраюся даць амерыканскія індэксы ад 0 да 26. 673 00:30:24,900 --> 00:30:28,220 Але калі вы на самой справе разлічваць тыя з, гэта будзе 27. 674 00:30:28,220 --> 00:30:30,007 Добры пытанне. 675 00:30:30,007 --> 00:30:30,590 Што-небудзь яшчэ? 676 00:30:30,590 --> 00:30:31,200 Так? 677 00:30:31,200 --> 00:30:34,420 >> АЎДЫТОРЫЯ: Так спрабуе павольней, чым хэш-табліцы? 678 00:30:34,420 --> 00:30:37,920 >> Ханна: Спрабуе збіраецеся быць у тэорыя, хутчэй, чым хэш-табліцы 679 00:30:37,920 --> 00:30:39,760 але займаюць больш памяці. 680 00:30:39,760 --> 00:30:40,534 Так? 681 00:30:40,534 --> 00:30:41,450 АЎДЫТОРЫЯ: [неразборліва]? 682 00:30:41,450 --> 00:30:45,770 683 00:30:45,770 --> 00:30:47,484 >> Ханна: Я прашу прабачэння, я не чую цябе. 684 00:30:47,484 --> 00:30:48,400 АЎДЫТОРЫЯ: [неразборліва]. 685 00:30:48,400 --> 00:30:51,250 686 00:30:51,250 --> 00:30:54,100 Ад 0 да 25 дае вам 26. 687 00:30:54,100 --> 00:30:56,958 >> Ханна: ад 0 да 25 будзе даць вам 26, ці не так. 688 00:30:56,958 --> 00:30:58,457 >> АЎДЫТОРЫЯ: І затым [неразборліва]. 689 00:30:58,457 --> 00:30:59,040 Ханна Дакладна. 690 00:30:59,040 --> 00:31:04,760 Такім чынам, лік мы паказаўшы гэта Колькасць рэчаў у нашай масіва. 691 00:31:04,760 --> 00:31:07,260 Так што, калі ў нас ёсць 27, гэта збіраецца даць нам 0 692 00:31:07,260 --> 00:31:10,620 праз 26, што дасць нам месцы для, у дадзеным выпадку, 693 00:31:10,620 --> 00:31:12,770 Я не уключаючы апостраф. 694 00:31:12,770 --> 00:31:17,040 Так мы атрымліваем ад 0 да 25 з'яўляюцца першыя 26 літар алфавіту, 695 00:31:17,040 --> 00:31:18,990 ці ўсе 26 літары алфавіту. 696 00:31:18,990 --> 00:31:21,190 А потым, што ў мінулым рэч, на ўваходзе 26, з'яўляецца 697 00:31:21,190 --> 00:31:24,598 будзе праверка знак або дэльта. 698 00:31:24,598 --> 00:31:26,960 Што-небудзь яшчэ? 699 00:31:26,960 --> 00:31:29,130 Высокі. 700 00:31:29,130 --> 00:31:30,020 Забыліся маё месца. 701 00:31:30,020 --> 00:31:31,020 Добра, халаднавата. 702 00:31:31,020 --> 00:31:33,240 >> Такім чынам, мы ўжо закранулі гэтага. 703 00:31:33,240 --> 00:31:37,430 Але большая кампраміс паміж спробамі і хэш-табліцы 704 00:31:37,430 --> 00:31:39,720 з'яўляецца тое, што спрабуе прадставіць у Тэорыя, пастаяннае шукаць 705 00:31:39,720 --> 00:31:42,890 раз, але выкарыстаць кучу памяці. 706 00:31:42,890 --> 00:31:46,495 Добра, зараз у нас ёсць трохі менш складаныя структуры, 707 00:31:46,495 --> 00:31:49,640 і мы будзем рабіць з C, і мы будзем рухацца прама наперад. 708 00:31:49,640 --> 00:31:51,930 >> Так стэкі, мы бачылі гэта у лекцыі, дзе вы 709 00:31:51,930 --> 00:31:55,020 нешта накшталт стэк латкоў дзе 710 00:31:55,020 --> 00:31:57,330 Апошняе, што вы паклалі ў стэку будзе 711 00:31:57,330 --> 00:31:59,500 каб быць першае, што вы здымаеце. 712 00:31:59,500 --> 00:32:02,880 Дык вось тое, што сапраўды вызначае стэк з'яўляецца тое, што апошняе, што вы паклалі на 713 00:32:02,880 --> 00:32:06,080 будзе першым што вы здымаеце. 714 00:32:06,080 --> 00:32:09,279 І тэрміналогія, якую мы выкарыстоўваем калі мы збіраемся пакласці што-то, 715 00:32:09,279 --> 00:32:12,070 калі мы збіраемся нешта дадаць наш стэк, мы называем гэта штурхае. 716 00:32:12,070 --> 00:32:14,970 І калі мы нешта ўзяць выключаны, мы называем гэта поппинг. 717 00:32:14,970 --> 00:32:17,080 І калі мы збіраемся рэалізаваць стэк, мы 718 00:32:17,080 --> 00:32:20,660 павінны быць упэўненыя, каб сачыць за як памер і ёмістасць. 719 00:32:20,660 --> 00:32:24,940 Такім чынам, агульная колькасць элементаў мы можам ўтрымліваць і бягучае колькасць элементаў 720 00:32:24,940 --> 00:32:27,880 што мы праводзім. 721 00:32:27,880 --> 00:32:29,885 >> І вельмі падобна, у нас ёсць чэргі. 722 00:32:29,885 --> 00:32:34,510 І толькі розніцай, гэта замест таго, каб з стэкаў, 723 00:32:34,510 --> 00:32:37,630 мы сказалі апошняе, што мы ставім на гэта першае, што мы здымаем. 724 00:32:37,630 --> 00:32:40,940 Так што з чэргамі, Першае, што мы ўкладваем у 725 00:32:40,940 --> 00:32:43,129 будзе Першае, што мы вывезці. 726 00:32:43,129 --> 00:32:45,420 Так што гэта, як калі б вы на самай справе выстройваюцца ў краме 727 00:32:45,420 --> 00:32:48,140 і вас хто-то дапамог, то першы чалавек у лініі 728 00:32:48,140 --> 00:32:50,880 павінна быць першым чалавекам, дапамагаў. 729 00:32:50,880 --> 00:32:52,220 Так што было б чэргі. 730 00:32:52,220 --> 00:32:55,880 >> Так што мы павінны адсочваць памер, магутнасць, і кіраўнік, так як мы 731 00:32:55,880 --> 00:33:01,130 збіраецца ўзяць ўсіх з пярэдняй з спісу, а не спіну. 732 00:33:01,130 --> 00:33:03,480 Пытанні па гэтай нагоды? 733 00:33:03,480 --> 00:33:06,330 Любыя C пытанні, якія турбуюць вас? 734 00:33:06,330 --> 00:33:09,590 Структуры дадзеных, нічога з гэтага цікавы матэрыял? 735 00:33:09,590 --> 00:33:10,530 Добра, крута. 736 00:33:10,530 --> 00:33:14,120 Так што я буду перадаць яе Элісан ў перайсці ў больш складанага праграмавання. 737 00:33:14,120 --> 00:33:15,965 >> Элісан: О, мы ўбачым. 738 00:33:15,965 --> 00:33:17,370 Мы ўбачым, наколькі добра я раблю тут. 739 00:33:17,370 --> 00:33:21,410 Добра, я збіраюся паспрабаваць і лётаць праз гэты матэрыял, хлопцы. 740 00:33:21,410 --> 00:33:24,540 Ханна прайшла вельмі ў Глыбіня на ўсіх яе рэчаў. 741 00:33:24,540 --> 00:33:26,900 Я збіраюся паспрабаваць даць Вы Кароткі агляд выбух 742 00:33:26,900 --> 00:33:31,290 так што мы можам дабрацца да Дэвин з усімі пацешныя JavaScript і бяспекі рэчы 743 00:33:31,290 --> 00:33:33,380 што, магчыма, вы на самой справе хачу даведацца больш. 744 00:33:33,380 --> 00:33:36,600 >> ОК, як сказала Ханна, калі ў вас ёсць якія-небудзь пытанні, 745 00:33:36,600 --> 00:33:39,170 Я занадта хутка, калі ласка, дайце мне ведаць. 746 00:33:39,170 --> 00:33:42,114 Я адкажу на пытанні па меры неабходнасці. 747 00:33:42,114 --> 00:33:45,280 Такім чынам, каб пачаць, мы збіраемся пачаць з верагодна, адзін з самых першых рэчаў, 748 00:33:45,280 --> 00:33:48,730 вы даведаліся з вэб- праграмаванне, дазволу. 749 00:33:48,730 --> 00:33:52,720 Так CHMOD, вы, хлопцы, павінен быў быць майстры ў гэтым са ўсёй сеткі 750 00:33:52,720 --> 00:33:54,870 праграмавання, які вы маеце рабіў у апошні час. 751 00:33:54,870 --> 00:33:57,320 Гэта ў асноўным толькі каманда што змены дазволу 752 00:33:57,320 --> 00:34:00,779 або права доступу нашых аб'ектаў файлавай сістэмы. 753 00:34:00,779 --> 00:34:02,570 Вядома, на самай справе см іх, калі вы 754 00:34:02,570 --> 00:34:04,910 маючы ніякіх праблем з гэтым падчас вашых праблемных набораў, 755 00:34:04,910 --> 00:34:11,460 Вы, магчыма, выкарыстоўвалі Ls -l, якая мае даўжыню, каб атрымаць від накшталт як гэта, 756 00:34:11,460 --> 00:34:14,209 дзе вы на самой справе убачыць усе дазволу для файла. 757 00:34:14,209 --> 00:34:16,850 758 00:34:16,850 --> 00:34:20,732 >> І на самай справе, мы проста будзем ісці праз даволі хутка проста вельмі 759 00:34:20,732 --> 00:34:21,940 шмат, што кожны з іх азначае. 760 00:34:21,940 --> 00:34:24,481 Такім чынам, мы d прама тут, што проста каштуе для каталога. 761 00:34:24,481 --> 00:34:26,790 762 00:34:26,790 --> 00:34:31,739 Відавочна, тут мы бачым, RWX, што чытаецца, для запісу і выкананым. 763 00:34:31,739 --> 00:34:37,090 Яны таксама могуць быць прадстаўлены ў выглядзе бітаў, якія мы атрымаем у на наступнай старонцы. 764 00:34:37,090 --> 00:34:40,699 Такім чынам, кожны трыяда, якую мы бачылі тут, так што гэта тры трыяды. 765 00:34:40,699 --> 00:34:48,120 Мы RWX, г нічога не х і г нічога не х для гэтага першага файла. 766 00:34:48,120 --> 00:34:49,690 Менавіта гэта агульная структура. 767 00:34:49,690 --> 00:34:50,940 >> Такім чынам, мы маем дырэкторыю. 768 00:34:50,940 --> 00:34:53,999 У нас ёсць група карыстальнікаў з гэтых дазволаў. 769 00:34:53,999 --> 00:34:57,040 Некаторыя групы, якая мае такія дазволу, і свет, які мае дазвол. 770 00:34:57,040 --> 00:34:59,420 Вы можаце думаць пра іх як пра трыядзе. 771 00:34:59,420 --> 00:35:01,130 Вы можаце думаць пра іх як аб трох бітаў. 772 00:35:01,130 --> 00:35:04,060 Такім чынам яны могуць утрымліваць значэння дзе-то ад 0 да 773 00:35:04,060 --> 00:35:07,350 7, які з'яўляецца, чаму часам мы павінны былі вы CHMOD 774 00:35:07,350 --> 00:35:17,510 600 замест CHMOD RW заўгодна. 775 00:35:17,510 --> 00:35:19,170 Мы ўвойдзем у якасці прыкладу там. 776 00:35:19,170 --> 00:35:24,260 Але ў прынцыпе, вы можаце думаць, з іх у якасці альбо проста RWX, 777 00:35:24,260 --> 00:35:28,520 ці вы можаце думаць пра іх, як некаторыя нумар, па якім гэта першая тут 778 00:35:28,520 --> 00:35:31,480 ўяўляе сабой лік ад 0 і 7, гэтая другая 779 00:35:31,480 --> 00:35:33,970 ўяўляе сабой лік ад 0 і 7, а трэці 780 00:35:33,970 --> 00:35:38,245 ўяўляе сабой лік ад 0 да 7, ОК? 781 00:35:38,245 --> 00:35:42,700 >> г мае значэнне 4. мас мае значэнне 2 і Х 782 00:35:42,700 --> 00:35:49,230 мае значэнне 1, таму ў гэтым Дазвол тут будзе CHMOD 700. 783 00:35:49,230 --> 00:35:53,520 Таму што ў гэтым выпадку тут, гэта кажа, што мы што першы біт ёсць пераварочваць на. 784 00:35:53,520 --> 00:35:55,380 Такім чынам, мы маем 4 для чытання. 785 00:35:55,380 --> 00:35:58,730 Другі біт пераварочваць на працягу Вт, што 2, так што цяпер у нас ёсць 6. 786 00:35:58,730 --> 00:36:02,070 І трэці біт пераварочваць на для х, што 1, так што мы атрымліваем сем. 787 00:36:02,070 --> 00:36:04,820 І, вядома, наша група і наш свет, кожны 0. 788 00:36:04,820 --> 00:36:07,770 Так што гэта таксама эквівалент CHMOD 700. 789 00:36:07,770 --> 00:36:12,081 І я б, безумоўна, паспрабаваць разумець адпаведнасць паміж тым. 790 00:36:12,081 --> 00:36:14,080 Я не ўпэўнены, калі гэта мае выйсці на пытанні віктарыны і раней, 791 00:36:14,080 --> 00:36:18,590 але было б Пытанне, які я мог бы спытаць. 792 00:36:18,590 --> 00:36:22,110 >> Проста трохі ісці, нават далей у CHMOD тут, тут 793 00:36:22,110 --> 00:36:27,730 гэта вельмі агульнае Структура выкліку CHMOD. 794 00:36:27,730 --> 00:36:29,500 Таму, вядома, мы CHMOD тут. 795 00:36:29,500 --> 00:36:34,410 Спасылкі, што гэта ставіцца да гэта якія мы даем гэтыя дазволы 796 00:36:34,410 --> 00:36:36,570 або якія мы, прымаючы гэтыя Дазволу далей. 797 00:36:36,570 --> 00:36:44,330 Такім чынам, мы маем тут у дазволах, як мы далі вам CHMOD плюс х, 798 00:36:44,330 --> 00:36:45,440 як мы ўбачым у бліжэйшы час. 799 00:36:45,440 --> 00:36:48,460 проста азначае, даць гэтыя канкрэтныя Дазволу для ўсіх. 800 00:36:48,460 --> 00:36:49,600 Дайце ім усім. 801 00:36:49,600 --> 00:36:55,370 Такім чынам, можна вельмі добра мець U Plus X або G Plus X або O Plus X або некалькі 802 00:36:55,370 --> 00:36:55,870 іх. 803 00:36:55,870 --> 00:36:59,280 Так што першая частка заўсёды будзе спасылкі. 804 00:36:59,280 --> 00:37:03,220 Хто мы даем гэтыя дазволы, або якія мы прымаць іх далей? 805 00:37:03,220 --> 00:37:04,850 >> Другі аператар. 806 00:37:04,850 --> 00:37:07,350 Так што вы, хлопцы, у асноўным звязана з плюсам. 807 00:37:07,350 --> 00:37:12,140 Гэта дае дазволу на хто вы даеце ім, 808 00:37:12,140 --> 00:37:14,840 у той час як мінус, па логіцы, выдаляе іх. 809 00:37:14,840 --> 00:37:16,880 Так што нічога занадта страшнага няма. 810 00:37:16,880 --> 00:37:23,060 А потым Рэжымы тое, што мы гаварылі пра з чытаннем, лістом, або выкананне. 811 00:37:23,060 --> 00:37:29,070 Так Plus X азначае даць выкананы файл Дазволу для ўсіх. 812 00:37:29,070 --> 00:37:33,430 І тады, вядома, на якой пэўнага файла ці каталога. 813 00:37:33,430 --> 00:37:33,980 ОК? 814 00:37:33,980 --> 00:37:36,010 Усё добра з CHMOD? 815 00:37:36,010 --> 00:37:37,850 Не так ужо дрэнна? 816 00:37:37,850 --> 00:37:42,417 >> Такім чынам, HTML, любы з вас дастаткова стары to-- MySpace ўзрост? 817 00:37:42,417 --> 00:37:44,750 Я паслаў гэта маёй секцыі, і літаральна палова людзей 818 00:37:44,750 --> 00:37:45,790 паглядзеў на мяне як на вар'ята. 819 00:37:45,790 --> 00:37:47,498 І я быў бы, хлопцы, мы не той стары. 820 00:37:47,498 --> 00:37:48,910 Давай. 821 00:37:48,910 --> 00:37:53,360 Так мова разметкі гіпертэксту, гэта сумленна проста спосаб для вас 822 00:37:53,360 --> 00:37:57,990 дэманстраваць пэўныя рэчы ў Інтэрнэце. 823 00:37:57,990 --> 00:37:59,210 Так што гэта мова разметкі. 824 00:37:59,210 --> 00:38:00,640 Гэта не скрыптовы мову. 825 00:38:00,640 --> 00:38:02,160 Там няма ніякай логікі ў ім. 826 00:38:02,160 --> 00:38:05,710 Гэта проста змяніць адлюстроўваецца шлях нешта. 827 00:38:05,710 --> 00:38:07,670 ОК, так што гэта важна адрозненне, каб зрабіць. 828 00:38:07,670 --> 00:38:12,030 Гэта лічыцца мова разметкі, ня скрыптовы мову. 829 00:38:12,030 --> 00:38:15,100 >> Так вось у нас ёсць HTML-тэгі. 830 00:38:15,100 --> 00:38:20,390 На гэтым слайдзе, верагодна, большасць з тыя, што вы павінны быць знаёмыя з 831 00:38:20,390 --> 00:38:22,390 і сапраўды зручна. 832 00:38:22,390 --> 00:38:25,700 Так, відавочна, мы маем наш HTML тэгаў, якія 833 00:38:25,700 --> 00:38:29,930 пазначае, што ўсё ў паміж гэтымі двума будзе HTML. 834 00:38:29,930 --> 00:38:33,070 У нас ёсць сувязь, якая Відавочна, дасць вам 835 00:38:33,070 --> 00:38:34,990 спасылка на знешні вэб-старонкі. 836 00:38:34,990 --> 00:38:37,520 Некаторыя назвы, у нашай галаве тут. 837 00:38:37,520 --> 00:38:40,020 І ў нас ёсць наш арганізм H1, які з'яўляецца загалоўкам, 838 00:38:40,020 --> 00:38:42,260 так што будзем рабіць гэта добра і смелыя і больш. 839 00:38:42,260 --> 00:38:46,040 І потым, у нас ёсць некаторыя р, які з'яўляецца пунктам. 840 00:38:46,040 --> 00:38:49,000 Вы, верагодна, варта ведаць, і быць знаёмым з рэчамі 841 00:38:49,000 --> 00:38:54,030 як, як вы ўставіць малюнак, з'яўляюцца Ці ёсць іншыя класы загалоўку? 842 00:38:54,030 --> 00:38:57,240 Я б, безумоўна, будзе камфортна спраў. 843 00:38:57,240 --> 00:39:00,840 Так у іх ёсць большасць тэгаў што вы павінны быць знаёмыя. 844 00:39:00,840 --> 00:39:04,370 Але, вядома, як і ўсё ў CS 50, спіс не з'яўляецца вычарпальным. 845 00:39:04,370 --> 00:39:08,200 Таму пераканайцеся, што вы чысціце зубы на гэтым. 846 00:39:08,200 --> 00:39:13,260 >> CSS, так што CSS, калі любы з вас глядзець мой семінар з два тыдні таму, 847 00:39:13,260 --> 00:39:16,250 на самай справе проста спосаб укладваць вэб-старонку? 848 00:39:16,250 --> 00:39:18,950 Такім чынам, у нас ёсць некаторы мова разметкі. 849 00:39:18,950 --> 00:39:23,220 HTML, які клапоціцца толькі з тэксту і дзе гэта можа быць на старонцы. 850 00:39:23,220 --> 00:39:25,760 Але CSS сапраўды тое, што робіць яго даволі. 851 00:39:25,760 --> 00:39:30,690 Вы маглі б іх у свой HTML файлы, але, як мы пагаворым пазней, 852 00:39:30,690 --> 00:39:32,660 Я ўпэўнены, што гэта магло б быць наступны слайд, то 853 00:39:32,660 --> 00:39:35,620 з'яўляецца звычайнай практыкай, і на самай справе практыка, што мы сапраўды заахвочваць, 854 00:39:35,620 --> 00:39:40,670 для Вас, каб трымаць іх разышліся, калі мы казаць пра MVC і ўвесь парадыгмы. 855 00:39:40,670 --> 00:39:42,490 Гэта сапраўды тое, што гэта каналы ст. 856 00:39:42,490 --> 00:39:46,110 >> Так CSS гэта проста спосаб каб усё выглядала прыгожа. 857 00:39:46,110 --> 00:39:50,500 Тое, што тут, як цела і #title і .info, 858 00:39:50,500 --> 00:39:54,340 яны называюцца селектары і што што яны робяць, яны выбіраюць канкрэтныя рэчы 859 00:39:54,340 --> 00:39:59,260 ў вашым HTML файле і прымяняюцца незалежна стыль, 860 00:39:59,260 --> 00:40:04,090 якой бы там ні рэчаў, якія вы хочаце, для гэтага канкрэтнага элемента вашага вэб- 861 00:40:04,090 --> 00:40:04,590 старонка. 862 00:40:04,590 --> 00:40:08,820 Дык вось, у нас ёсць Колер фону і колер 863 00:40:08,820 --> 00:40:12,450 і сямейства шрыфтоў, які з'яўляецца ўжываецца да таго, што ў арганізме. 864 00:40:12,450 --> 00:40:15,530 Так што, калі мы глядзелі сюды, гэта не будзе прымяняцца да назвы. 865 00:40:15,530 --> 00:40:22,340 Гэта будзе прымяняцца толькі да таго, што у гэтых селектараў цела, добра? 866 00:40:22,340 --> 00:40:25,250 >> З назвай тут, гэта будзе тое ж самае, 867 00:40:25,250 --> 00:40:28,410 колер тэксту быўшы сіні толькі збіраецца 868 00:40:28,410 --> 00:40:33,870 ўплываць на тое, што ўнутры тытульныя селектараў. 869 00:40:33,870 --> 00:40:36,580 Гэтак жа як і інфармацыя тут, тэкст будзе ружовы, 870 00:40:36,580 --> 00:40:38,600 усе Інфармацыя, якая знаходзіцца прама тут. 871 00:40:38,600 --> 00:40:40,860 Так што адзінае, што будзе ружовы на гэтай старонцы 872 00:40:40,860 --> 00:40:44,100 з'яўляецца дата, панядзелак 17. Лістапад, 2014. 873 00:40:44,100 --> 00:40:48,770 Такім чынам, CSS гэта проста спосаб мець больш кантролю over-- так? 874 00:40:48,770 --> 00:40:51,850 >> Зала: А чаму ў вас ёсць выкарыстоўваць хэш з назвай? 875 00:40:51,850 --> 00:40:55,170 >> Ханна: Наступны слайд, абяцаю! 876 00:40:55,170 --> 00:40:56,810 Мы туды патрапіць. 877 00:40:56,810 --> 00:40:59,830 Вось чаму мы павінны выкарыстоўваць хэш. 878 00:40:59,830 --> 00:41:03,429 Так селектары прыняць на трох асноўных формы, якія мы кажам вам, хлопцы, а. 879 00:41:03,429 --> 00:41:05,595 Я fyou хочаце даведацца больш, ёсць шмат там. 880 00:41:05,595 --> 00:41:07,540 Там выдатна дакументацыя CSS. 881 00:41:07,540 --> 00:41:12,680 Там гэтае імя тэга, які павінен зрабіць толькі з вашых нармальных тэгаў у HTML. 882 00:41:12,680 --> 00:41:17,210 Так h1, P, DIV, H2, гэтыя віды рэчаў. 883 00:41:17,210 --> 00:41:20,320 І мы можам толькі назваць тых, як ёсць. 884 00:41:20,320 --> 00:41:22,650 Такім чынам, як мы бачым тут з цела, гэта звычайны шаблон. 885 00:41:22,650 --> 00:41:26,660 Такім чынам, мы можам проста пакласці цела, калі мы кажам у нашай CSS файл. 886 00:41:26,660 --> 00:41:29,730 >> З назвай, увесь прычыне мы ёсць гэта хэш мы маем тое, што гэта 887 00:41:29,730 --> 00:41:31,010 лічыцца ID. 888 00:41:31,010 --> 00:41:35,400 Так ID павінен быць заўсёды унікальным у межах вашай старонцы HTML 889 00:41:35,400 --> 00:41:37,930 так што, калі вы спасылаючыся на яго, вы 890 00:41:37,930 --> 00:41:41,990 ведаю, што вы толькі са спасылкай да адной канкрэтнай рэчы. 891 00:41:41,990 --> 00:41:46,270 Так што ў гэтым выпадку тут, з нашым h1 тут, CS 50 водгук сесія, 892 00:41:46,270 --> 00:41:47,810 у нас ёсць ідэнтыфікатар назвы. 893 00:41:47,810 --> 00:41:54,280 Таму для таго, каб проста спаслацца на тым, што частка нашага HTML, мы робім назву хэш. 894 00:41:54,280 --> 00:41:58,080 Проста канвенцыі, ідэнтыфікатары абазначаюцца з хэш перад імі. 895 00:41:58,080 --> 00:42:01,650 Такім жа чынам, мы бачым, Інфармацыя тут клас. 896 00:42:01,650 --> 00:42:06,070 І так-клас з CSS з'яўляецца пазначаецца як кропка класа 897 00:42:06,070 --> 00:42:08,895 або кропка ўсе, што клас. 898 00:42:08,895 --> 00:42:10,850 Так што ў гэтым выпадку тут, гэта інфармацыя. 899 00:42:10,850 --> 00:42:13,090 >> Такім чынам, я бяру яго назад. 900 00:42:13,090 --> 00:42:16,200 Абодва яны былі б ружовы для нашай CSS тут 901 00:42:16,200 --> 00:42:18,430 таму што яны абодва маюць клас інфармацыі. 902 00:42:18,430 --> 00:42:23,070 А ў нашым CSS файле, мы абазначылі што-небудзь з класам інфармацыі 903 00:42:23,070 --> 00:42:24,120 павінен быць ружовым. 904 00:42:24,120 --> 00:42:25,968 Ці мае гэта сэнс? 905 00:42:25,968 --> 00:42:27,435 Так? 906 00:42:27,435 --> 00:42:30,731 >> АЎДЫТОРЫЯ: Калі вы павінны былі зрабіць усе ў белым корпусе, 907 00:42:30,731 --> 00:42:32,814 а затым вы паспрабуеце зрабіць што-то ўнутры яго сіні, 908 00:42:32,814 --> 00:42:34,770 б, што прычынай праблемы? 909 00:42:34,770 --> 00:42:37,310 >> Ханна: Так CSS з'яўляецца каскадныя табліцы стыляў. 910 00:42:37,310 --> 00:42:40,730 Таму, што б гэта да дно будзе мець прыярытэт. 911 00:42:40,730 --> 00:42:44,080 Так што, калі вы робіце нешта з целам, і зрабі ўсё белае, 912 00:42:44,080 --> 00:42:49,300 а потым на вас змяніць назву ці вы змяніць тэкст ўнутры цела, 913 00:42:49,300 --> 00:42:50,560 ён перапісвае гэта. 914 00:42:50,560 --> 00:42:55,360 Так што нічога да дно будзе мець прыярытэт. 915 00:42:55,360 --> 00:42:56,730 Так? 916 00:42:56,730 --> 00:42:59,627 >> Аўдыторыя: і ідэнтыфікатараў з'яўляюцца унікальнымі, але класы могуць быць больш? 917 00:42:59,627 --> 00:43:00,210 Ханна Дакладна. 918 00:43:00,210 --> 00:43:06,320 Так ідэнтыфікатары павінны быць унікальнымі, і класы могуць см столькі рэчаў, як вы хочаце. 919 00:43:06,320 --> 00:43:07,580 Любыя іншыя пытанні? 920 00:43:07,580 --> 00:43:09,800 Так. 921 00:43:09,800 --> 00:43:11,210 >> АЎДЫТОРЫЯ: [неразборліва]. 922 00:43:11,210 --> 00:43:13,509 Я задаюся пытаннем, ці з'яўляецца што робіць розніцу. 923 00:43:13,509 --> 00:43:15,217 Ханна: Я прашу прабачэння, якой было пытанне? 924 00:43:15,217 --> 00:43:18,960 АЎДЫТОРЫЯ: Там маленькі "F" і капітал "Ф." 925 00:43:18,960 --> 00:43:21,440 Ханна: Так розніца паміж малымі "е" і капіталу "F" 926 00:43:21,440 --> 00:43:22,606 Не варта рабіць адрозненне. 927 00:43:22,606 --> 00:43:26,330 Такім чынам, "F" будзе 15 так ці інакш. 928 00:43:26,330 --> 00:43:28,130 Крута, што-небудзь яшчэ? 929 00:43:28,130 --> 00:43:29,930 Усё добра, CSS? 930 00:43:29,930 --> 00:43:30,850 Так? 931 00:43:30,850 --> 00:43:31,790 >> АЎДЫТОРЫЯ: Выбачайце. 932 00:43:31,790 --> 00:43:35,550 Можа ў вас ёсць клас і ідэнтыфікатар? 933 00:43:35,550 --> 00:43:38,030 >> Ханна: Так, можна. 934 00:43:38,030 --> 00:43:40,420 Рэчы могуць мець як клас і ідэнтыфікатар. 935 00:43:40,420 --> 00:43:44,670 І я настойліва рэкамендую тэставання іх на свой уласны. 936 00:43:44,670 --> 00:43:50,480 CSS вы даведаецеся лепш проста шляхам то, вельмі просты вэб-старонкі, 937 00:43:50,480 --> 00:43:53,440 складанне некаторыя CSS, і толькі бачачы, як яны ўзаемадзейнічаюць. 938 00:43:53,440 --> 00:43:56,970 І вы атрымаеце вельмі добры, інтуітыўнае пачуццё для таго, як гэта працуе. 939 00:43:56,970 --> 00:43:58,810 >> ОК, усё добра з дапамогай CSS? 940 00:43:58,810 --> 00:44:01,280 Вы ўсё збіраецеся зрабіць прыгожыя сайты з дапамогай CSS цяпер. 941 00:44:01,280 --> 00:44:05,460 OK, лепшыя практыкі, толькі рэчы, каб мець на ўвазе, рэчы 942 00:44:05,460 --> 00:44:09,810 that-- менавіта таму мы док Вы праекціроўшчыка і яшчэ шмат чаго. 943 00:44:09,810 --> 00:44:11,820 Так зачыніце ўсе HTML-тэгі. 944 00:44:11,820 --> 00:44:14,840 Так што, калі ў вас ёсць адкрыты кузаў, павінна быць блізка цела. 945 00:44:14,840 --> 00:44:18,180 Калі ў вас ёсць адкрытыя пункт, павінна быць блізка пункце. 946 00:44:18,180 --> 00:44:19,555 Праверце вашу старонку пацвярджае. 947 00:44:19,555 --> 00:44:23,330 Вы, хлопцы, павінны быць добра знаёмыя з гэтым з Р-мноства сем 948 00:44:23,330 --> 00:44:26,350 з CS 50 фінансаў з W3 валідатары. 949 00:44:26,350 --> 00:44:28,340 І, як я ўжо казаў, адзін з нашых вялікіх парадыгмаў 950 00:44:28,340 --> 00:44:33,780 аддзяляе свой стыль з дапамогай CSS ад вашай разметкі, якая HTML. 951 00:44:33,780 --> 00:44:36,900 І тады, вядома, у нас ёсць гэты вялікі XKCD тут. 952 00:44:36,900 --> 00:44:38,280 Ура, камічны! 953 00:44:38,280 --> 00:44:41,340 >> ОК, TCP / IP. 954 00:44:41,340 --> 00:44:44,650 Паміж імі і HTTP, у асноўным яны абодва пратаколу. 955 00:44:44,650 --> 00:44:46,810 Такім чынам, вы маглі б проста думаю, з іх у выглядзе набору правілаў 956 00:44:46,810 --> 00:44:50,110 якія рэгулююць, як усе рухацца праз Інтэрнэт. 957 00:44:50,110 --> 00:44:53,410 Так кіравання каробкай перадач Пратакол, або інтэрнэт-пратаколу, 958 00:44:53,410 --> 00:44:57,280 гэта проста спосаб, каб пераканацца, што дадзеныя атрымлівае, дзе яна збіраецца 959 00:44:57,280 --> 00:45:00,030 і што мы ведаем, калі мы калі-небудзь адсутных дадзеных. 960 00:45:00,030 --> 00:45:03,520 Так што, калі вы, хлопцы, ўспомніце лекцыі пару тыдняў таму з Дэвідам 961 00:45:03,520 --> 00:45:06,980 дзе ў нас было чатыры канверты, яны усе былі пранумараваны, як адзін з чатырох, 962 00:45:06,980 --> 00:45:11,300 два з чатырох чалавек, трое з чатырох, чатыры чатыры, гэта проста набор правілаў. 963 00:45:11,300 --> 00:45:13,830 Мы сказалі, добра, калі мы пасылаючы больш, чым адзін пакет, 964 00:45:13,830 --> 00:45:16,610 мы збіраемся нумар гэта з тым, што колькасць гэта 965 00:45:16,610 --> 00:45:19,040 і колькі ўсяго, што карыстальнік павінен атрымаць. 966 00:45:19,040 --> 00:45:22,540 >> І гэта проста кажа той, хто прымае дадзеныя Ці яны 967 00:45:22,540 --> 00:45:26,120 атрымалі ўсе або, калі то згубіўся па шляху. 968 00:45:26,120 --> 00:45:28,840 І яны павінны прасіць пра гэта зноў. 969 00:45:28,840 --> 00:45:31,140 Гэта на самай справе проста набор правілаў. 970 00:45:31,140 --> 00:45:33,650 Вось як вы можаце думаць пра гэта, добра? 971 00:45:33,650 --> 00:45:37,700 А таксама, гэта паказвае на порт, які вы, хлопцы, can-- я ведаю, падчас лекцыі, 972 00:45:37,700 --> 00:45:39,170 яны мелі цэлы спіс портаў. 973 00:45:39,170 --> 00:45:41,630 Але мы не павінны іх тут і цяпер. 974 00:45:41,630 --> 00:45:45,290 >> Так Пратакол перадачы гіпертэксту ёсць, зноў жа, гэта іншае пратакол. 975 00:45:45,290 --> 00:45:48,630 Так што гэта яшчэ адзін набор правілаў якія рэгулююць, у гэтым выпадку, 976 00:45:48,630 --> 00:45:51,130 як гіпертэксту перададзеныя. 977 00:45:51,130 --> 00:45:54,340 Так ён проста дазваляе браўзэры каб пагаварыць з вэб-сервераў. 978 00:45:54,340 --> 00:45:56,910 І як мы ўжо казалі тут, гэта як чалавека поціску рукі. 979 00:45:56,910 --> 00:46:00,480 Гэта проста спосаб кіраваць як вэб-сервер 980 00:46:00,480 --> 00:46:02,690 будзе ўзаемадзейнічаць з вашым браўзэрам. 981 00:46:02,690 --> 00:46:05,660 І ў нас ёсць толькі некалькі прыкладаў. 982 00:46:05,660 --> 00:46:09,100 У нас ёсць некалькі запытаў тут дзе атрымліваеце метад. 983 00:46:09,100 --> 00:46:13,760 У нас ёсць пратакол HTTP 1.1, які з'яўляецца версія пратаколу для нас. 984 00:46:13,760 --> 00:46:17,230 І потым, гаспадар, што і мы на самай справе спрабуе атрымаць доступ. 985 00:46:17,230 --> 00:46:21,800 І тое, як вы бачыце тут, мы атрымаць адказ з гэтай 200 986 00:46:21,800 --> 00:46:25,032 ОК, як наш код HTTP адказу. 987 00:46:25,032 --> 00:46:27,240 У нас ёсць вялікі спіс, я іду каб падцягнуць за адну секунду 988 00:46:27,240 --> 00:46:29,430 што вы, хлопцы, павінны быць знаёмыя з. 989 00:46:29,430 --> 00:46:35,750 І ў нас ёсць гэты тэкст тыпу кантэнту / HTML, які толькі кажа, які тып дадзеных 990 00:46:35,750 --> 00:46:39,990 мы атрымання з сервера, добра? 991 00:46:39,990 --> 00:46:44,230 Гэты вузел, і гэты тып кантэнту з'яўляюцца часткай загалоўкаў HTTP. 992 00:46:44,230 --> 00:46:49,610 Вы можаце мець мала ці як мала, як неабходна для кантэксце таго, што 993 00:46:49,610 --> 00:46:50,580 вы маеце справу з. 994 00:46:50,580 --> 00:46:53,371 Часам вы будзеце мець шмат Інфармацыя, якая паступае з вашага сервера. 995 00:46:53,371 --> 00:46:56,040 Можа быць, яны з просьбай шмат інфармацыі ад карыстальніка. 996 00:46:56,040 --> 00:46:57,600 Гэта залежыць ад кантэксту. 997 00:46:57,600 --> 00:47:01,144 Калі вы паглядзіце на КС 50-й даследчай, ёсць нашмат больш на гэта. 998 00:47:01,144 --> 00:47:03,060 Але ў нас ёсць шмат, каб атрымаць праз, так што я збіраюся 999 00:47:03,060 --> 00:47:05,760 ісці прама наперад, калі гэта нармальна з вамі, хлопцы? 1000 00:47:05,760 --> 00:47:07,960 Крута. 1001 00:47:07,960 --> 00:47:08,460 Ўтрымліваць. 1002 00:47:08,460 --> 00:47:11,182 Я вызначана ёсць, што Увесь спіс of-- так! 1003 00:47:11,182 --> 00:47:13,140 Я не ведаю, чаму гэта ўсе шляхі сюды. 1004 00:47:13,140 --> 00:47:15,660 Я думаў, што я літаральна пераехаў гэта, калі я быў sitting-- 1005 00:47:15,660 --> 00:47:16,540 >> DAVIN: Вы хочаце, каб навучыць яго? 1006 00:47:16,540 --> 00:47:17,420 Ці вы хочаце, каб я вучыў яго? 1007 00:47:17,420 --> 00:47:20,010 >> Аўдыторыя: Я думаў, што мы маглі б Проста паказаць ім пачаць. 1008 00:47:20,010 --> 00:47:22,210 Я маю на ўвазе, вы можаце пайсці ў іх далей, але я 1009 00:47:22,210 --> 00:47:26,030 думаў, што гэта было больш сэнсу, так як я толькі што казаў пра HTTP статусаў. 1010 00:47:26,030 --> 00:47:28,200 Дык вось ўвесь пералік. 1011 00:47:28,200 --> 00:47:31,730 Я думаю, што гэта адбудзецца ў Дэвин будзе ісці ў іх пазней. 1012 00:47:31,730 --> 00:47:35,330 Але ёсць цэлы спіс, Папярэдні прагляд густ, каб прыбыць. 1013 00:47:35,330 --> 00:47:41,640 Добра, што мы збіраемся blow-- гэта адбываецца быць PHP паскораны курс, як ніхто іншы. 1014 00:47:41,640 --> 00:47:44,874 >> Такім чынам, PHP, гіпертэксту препроцессор, гэта рэкурсіўная бэкроним, 1015 00:47:44,874 --> 00:47:46,540 што азначае, што быў названы нешта іншае. 1016 00:47:46,540 --> 00:47:49,050 І тады яны былі, як гэта на самай справе не мае сэнсу. 1017 00:47:49,050 --> 00:47:52,210 Такім чынам, яны толькі што назвалі it-- і гэта было акронім, 1018 00:47:52,210 --> 00:47:54,840 так што яны проста зрабілі гэта PHP гіпертэксту препроцессор, які 1019 00:47:54,840 --> 00:47:55,980 проста не мае ніякага сэнсу. 1020 00:47:55,980 --> 00:47:57,714 Пацешная гісторыя. 1021 00:47:57,714 --> 00:47:58,880 Гэта мова праграмавання. 1022 00:47:58,880 --> 00:48:02,360 Так столькі, колькі я падкрэсліваю, што HTML не з'яўляецца мовай праграмавання, 1023 00:48:02,360 --> 00:48:05,350 гэта мова разметкі, PHP гэта мова праграмавання. 1024 00:48:05,350 --> 00:48:07,422 Як вы ведаеце, гэта таму што ёсць логіка. 1025 00:48:07,422 --> 00:48:08,380 Ёсць ўмоўныя. 1026 00:48:08,380 --> 00:48:12,750 У нас ёсць зменныя, у той час як мы няма ні адной з тых рэчаў, у HTML. 1027 00:48:12,750 --> 00:48:16,960 >> Добра, тады ў нас ёсць гэтая маленькая трохі тут, што гэта, як смак PHP. 1028 00:48:16,960 --> 00:48:20,510 Так асновы, імёны зменных пачынаюцца са знака даляра. 1029 00:48:20,510 --> 00:48:21,500 Шмат людзей, як ён. 1030 00:48:21,500 --> 00:48:22,371 Нагадвае нам грошы. 1031 00:48:22,371 --> 00:48:22,995 Гэта ўсё выдатна. 1032 00:48:22,995 --> 00:48:25,280 Мы ўсе хочам PHP. 1033 00:48:25,280 --> 00:48:28,020 Такім чынам, мы не паказалі Тып зменнай больш. 1034 00:48:28,020 --> 00:48:29,995 Гэта вызначаецца падчас выканання. 1035 00:48:29,995 --> 00:48:32,710 1036 00:48:32,710 --> 00:48:35,890 Перакладчык будзе такое, ой, мы проста прабегчы, 1037 00:48:35,890 --> 00:48:39,565 і ў залежнасці ад кантэксту, мы ўбачым, якія тыпы відаў 1038 00:48:39,565 --> 00:48:41,560 Гэтыя зменныя павінны мець. 1039 00:48:41,560 --> 00:48:42,815 Там няма асноўнай функцыяй. 1040 00:48:42,815 --> 00:48:43,690 Усё будзе проста запусціць. 1041 00:48:43,690 --> 00:48:47,851 Вы, хлопцы, з вашым імпарт у вашай у мінулым Р-мноства, вы заўважыце, гэта. 1042 00:48:47,851 --> 00:48:49,350 Там на самай справе не галоўная функцыя. 1043 00:48:49,350 --> 00:48:52,070 Вы проста напісаў тое, што Вы хацелі каб гэта адбылося. 1044 00:48:52,070 --> 00:48:53,280 І гэта толькі часткова адбылося. 1045 00:48:53,280 --> 00:48:56,760 Дык вось PHP для вас. 1046 00:48:56,760 --> 00:48:59,180 >> Масівы вельмі падобныя. 1047 00:48:59,180 --> 00:49:01,270 У нас яшчэ ёсць гэты кранштэйн. 1048 00:49:01,270 --> 00:49:05,940 Тут, у нас ёсць пераменная называецца обр, і ён роўны 1049 00:49:05,940 --> 00:49:08,540 to-- ў нас ёсць нармальная кранштэйны абазначэння. 1050 00:49:08,540 --> 00:49:10,630 І ў нас ёсць некаторыя ключавыя значэння. 1051 00:49:10,630 --> 00:49:14,630 І вялікая розніца паміж З і PHP масівы 1052 00:49:14,630 --> 00:49:19,330 з'яўляецца тое, што мы можам мець гэтую associate-- мы можам звязаць значэння ключоў. 1053 00:49:19,330 --> 00:49:22,440 Такім чынам, замест таго, каб проста маючы Масіў, індэксавацца 1054 00:49:22,440 --> 00:49:26,630 па колькасці або становішча гэтага элемента ў масіве, 1055 00:49:26,630 --> 00:49:29,060 мы можам на самай справе звязаць яго з ключом. 1056 00:49:29,060 --> 00:49:36,700 Дзе мы можам казаць, добра, я хачу што б Значэнне звязаны з садавінай. 1057 00:49:36,700 --> 00:49:39,280 А можа быць, у нас ёсць садавіна пайшлі банан. 1058 00:49:39,280 --> 00:49:41,760 Так што вярнуцца б банан да нас. 1059 00:49:41,760 --> 00:49:44,100 >> Але ў прынцыпе, найбольш магутная рэч аб гэтым 1060 00:49:44,100 --> 00:49:47,960 з'яўляецца тое, што, калі вы, хлопцы, памятайце, дэма з лекцыі, дзе мы ў асноўным 1061 00:49:47,960 --> 00:49:53,050 перапісаў правапісу ў PHP, і was-- пошук быў проста падабаецца, 1062 00:49:53,050 --> 00:49:55,007 гэта ключ існуе? 1063 00:49:55,007 --> 00:49:56,590 Гэта сапраўды збольшага сілай ёй. 1064 00:49:56,590 --> 00:49:58,560 Вам не трэба для перабору праз масіў. 1065 00:49:58,560 --> 00:50:00,311 Вам не трэба ведаць, што месца, якое ён знаходзіцца. 1066 00:50:00,311 --> 00:50:01,976 Гэта можа быць у канцы ці ў пачатку. 1067 00:50:01,976 --> 00:50:04,790 Да таго часу, як вы ведаеце ключ што асацыюецца са значэннем, 1068 00:50:04,790 --> 00:50:09,740 PHP можа проста плюнуць, што значэнне правы назад на вас, добра? 1069 00:50:09,740 --> 00:50:12,960 >> І потым, мы таксама проста ёсць толькі таму, што мы 1070 00:50:12,960 --> 00:50:16,750 можа мець пары ключ-значэнне не азначае, што вы павінны. 1071 00:50:16,750 --> 00:50:19,180 Вы таксама можаце проста стварыць звычайны масіў, як тут, 1072 00:50:19,180 --> 00:50:21,540 У ніжняй частцы, дзе гэта толькі адзін, два, тры, чатыры. 1073 00:50:21,540 --> 00:50:22,510 Гэта нашы каштоўнасці. 1074 00:50:22,510 --> 00:50:25,320 І на самай справе, іх ключы індэксы. 1075 00:50:25,320 --> 00:50:26,830 Такім чынам, ключавым для аднаго будзе роўная нулю. 1076 00:50:26,830 --> 00:50:28,610 Ключ для дваіх стане адным. 1077 00:50:28,610 --> 00:50:31,910 Гэтак далей, і гэтак далей, калі Вы відавочна прызначыць клавішу, 1078 00:50:31,910 --> 00:50:34,630 Вы маглі б выказаць здагадку, што значэнне толькі іх індэкс. 1079 00:50:34,630 --> 00:50:37,290 Ці мае гэта сэнс для ўсіх? 1080 00:50:37,290 --> 00:50:38,070 Ніякіх пытанняў? 1081 00:50:38,070 --> 00:50:38,930 Высокі. 1082 00:50:38,930 --> 00:50:44,420 >> Добра, Еогеасп з'яўляецца спосаб перабору масівамі. 1083 00:50:44,420 --> 00:50:47,490 Такім чынам, мы маем што-то тут, толькі агульная структура. 1084 00:50:47,490 --> 00:50:51,020 Так Еогеасп, назву наш масіў, як усе 1085 00:50:51,020 --> 00:50:53,930 Вы хочаце, каб называць адзін элемент у масіве, 1086 00:50:53,930 --> 00:50:57,270 і мы можам зрабіць што-небудзь з гэты элемент або з гэтым значэннем. 1087 00:50:57,270 --> 00:50:58,680 Такім чынам, мы маем прыклад тут. 1088 00:50:58,680 --> 00:51:05,770 У нас ёсць асацыятыўныя масіў з гэтых двух пазіцый 1089 00:51:05,770 --> 00:51:10,080 з барам, звязаныя з Foo і QUX асацыюецца з Baz. 1090 00:51:10,080 --> 00:51:12,180 Так ключы Foo і БАЗ. 1091 00:51:12,180 --> 00:51:13,650 Значэння бар і QUX. 1092 00:51:13,650 --> 00:51:18,560 Так Еогеасп, у нас ёсць масіў Тут, як і пары значэнняў ключоў. 1093 00:51:18,560 --> 00:51:21,560 Гэта дазваляе нам атрымаць доступ да як ключ і значэнне. 1094 00:51:21,560 --> 00:51:23,680 Можа быць, вы проста хочаце Значэнне, і ў гэтым выпадку 1095 00:51:23,680 --> 00:51:27,640 вы маглі б проста зрабіць, як обр як $ значэнне, а затым вы 1096 00:51:27,640 --> 00:51:30,640 толькі доступу да значэння як вы перабору. 1097 00:51:30,640 --> 00:51:32,600 Але, магчыма, для некаторых Прычына, вы хочаце ключ, 1098 00:51:32,600 --> 00:51:35,460 які з'яўляецца, чаму я выбраў Гэты прыклад замест гэтага. 1099 00:51:35,460 --> 00:51:40,240 Такім чынам, вы можаце фактычна маніпуляваць ключ і значэнне ў гэтым выпадку. 1100 00:51:40,240 --> 00:51:41,070 ОК? 1101 00:51:41,070 --> 00:51:41,905 Пытанне? 1102 00:51:41,905 --> 00:51:44,279 >> АЎДЫТОРЫЯ: Калі вы хочаце, каб проста маніпуляваць ключ, будзе 1103 00:51:44,279 --> 00:51:45,910 Вы павінны зрабіць foreach-- 1104 00:51:45,910 --> 00:51:47,360 >> Элісан Дакладна. 1105 00:51:47,360 --> 00:51:50,560 Так што, калі вы хочаце, каб кіраваць толькі ключ, 1106 00:51:50,560 --> 00:51:53,680 Вы ўсё яшчэ павінны гэта Сінтаксіс, таму што, калі вы проста 1107 00:51:53,680 --> 00:51:56,930 ёсць обр як нешта, як адна рэч, гэта 1108 00:51:56,930 --> 00:52:00,070 мяркую, што вы хочаце значэнне, а не ключ. 1109 00:52:00,070 --> 00:52:06,780 Так што, калі вы калі-небудзь проста так жа, як обр а, можа быць, гэта як $ элемента, 1110 00:52:06,780 --> 00:52:11,670 гэта буду лічыць, што вы пытаецеся для ўсяго значэння ў кожнай кропцы. 1111 00:52:11,670 --> 00:52:13,879 Калі вы відавочна хочаце зрабіць што-то з ключом, 1112 00:52:13,879 --> 00:52:16,170 нават калі вы не збіраецеся нічога зрабіць з гэтым значэннем, 1113 00:52:16,170 --> 00:52:18,430 Вы павінны гэтую структуру што мы маем тут 1114 00:52:18,430 --> 00:52:22,330 дзе вы відавочна задаваць і для ключа і значэння. 1115 00:52:22,330 --> 00:52:24,170 Вялікае пытанне. 1116 00:52:24,170 --> 00:52:25,940 Што-небудзь яшчэ? 1117 00:52:25,940 --> 00:52:27,490 Крута. 1118 00:52:27,490 --> 00:52:29,911 >> Добра, PHP і HTML. 1119 00:52:29,911 --> 00:52:31,410 О, мы вярнуліся да Р-мноства сем разоў. 1120 00:52:31,410 --> 00:52:35,380 Так гэта павінна выглядаць крыху знаёмыя. 1121 00:52:35,380 --> 00:52:41,760 Так што гэта нейкі просты HTML формы што мае некаторы ўваходных імя прывітанне. 1122 00:52:41,760 --> 00:52:43,820 І мы бачым, у нас ёсць метад GET. 1123 00:52:43,820 --> 00:52:47,430 І калі мы памятаем з нашага р-набор, калі гэтая форма была адпраўлена, 1124 00:52:47,430 --> 00:52:58,130 ён пасылае масіў з імем $ _GET, што мае ўсе з гэтых уваходаў або зменных з 1125 00:52:58,130 --> 00:53:00,490 Форма, што павінна быць маніпуляваць ў нашым PHP. 1126 00:53:00,490 --> 00:53:03,320 Такім чынам, у гэтым выпадку, карыстальнік паставіў бы на іх імя. 1127 00:53:03,320 --> 00:53:04,370 Яны ўяўляюць яго. 1128 00:53:04,370 --> 00:53:07,810 І мы бачым, што мы атрымліваем некаторы масіў тут. 1129 00:53:07,810 --> 00:53:09,080 У нас ёсць GET масіў. 1130 00:53:09,080 --> 00:53:11,510 І мы доступ да імя. 1131 00:53:11,510 --> 00:53:15,070 >> Так што, кажа, добра, дай мне Значэнне, якое звязана з імем, 1132 00:53:15,070 --> 00:53:16,550 імем якога тут ключавы. 1133 00:53:16,550 --> 00:53:21,400 І, што адлюстроўвае непасрэдна тое, што мы сказалі наша імя ўваход. 1134 00:53:21,400 --> 00:53:28,960 Так што гэта быў даць вам ключ да таго, што будзе ў вашым масіве тут. 1135 00:53:28,960 --> 00:53:31,220 Ці мае гэта сэнс для ўсіх? 1136 00:53:31,220 --> 00:53:32,070 Так? 1137 00:53:32,070 --> 00:53:36,240 >> АЎДЫТОРЫЯ: імя ў GET см Ці ў фіялетавай лініі ў [неразборліва]? 1138 00:53:36,240 --> 00:53:37,740 >> Элісан: Гэта ставіцца да гэтага тут. 1139 00:53:37,740 --> 00:53:43,840 Так гэта поле прама тут, гэта ставіцца да такой назвай тут. 1140 00:53:43,840 --> 00:53:47,800 Так што гэта можа быць названы як нумар тэлефона, або любы іншы. 1141 00:53:47,800 --> 00:53:51,790 Гэтае імя на самай справе кажа, што Вы тэлефануеце ў гэтым полі? 1142 00:53:51,790 --> 00:53:53,600 Як вы збіраецеся адносяць да гэтай сферы? 1143 00:53:53,600 --> 00:53:57,670 І гэта назва на самай справе падабаецца, мы Сказаўшы гэта поле называецца імя. 1144 00:53:57,670 --> 00:53:59,224 Вось як мы збіраемся атрымаць да яго доступ. 1145 00:53:59,224 --> 00:54:02,070 >> АЎДЫТОРЫЯ: Дык гэта падабаецца, Калі ласка, увядзіце імя роўная Боб, и-- 1146 00:54:02,070 --> 00:54:04,380 >> Элісан: справа, то вы хацеў бы атрымаць Боба там. 1147 00:54:04,380 --> 00:54:06,090 Менавіта так. 1148 00:54:06,090 --> 00:54:07,800 Усё крута? 1149 00:54:07,800 --> 00:54:10,990 Добра, так што атрымаць супраць POST, гэтыя два асноўных спосабу 1150 00:54:10,990 --> 00:54:14,880 што мы перадаем дадзеныя ў запыце HTTP. 1151 00:54:14,880 --> 00:54:17,370 Вы, хлопцы, павінны былі бачыць Абодва з іх з надзеяй. 1152 00:54:17,370 --> 00:54:20,940 Так з GET, інфармацыя, перадаецца праз URL. 1153 00:54:20,940 --> 00:54:23,490 Так што калі вы калі-небудзь зрабіць Google пошук, YouTube, вы будзеце 1154 00:54:23,490 --> 00:54:25,130 верагодна, заўважыце некаторыя пытальнік. 1155 00:54:25,130 --> 00:54:28,230 І потым, усе словы што вы проста пакласці ў там. 1156 00:54:28,230 --> 00:54:31,410 І POST перадае дадзеныя у целе HTTP-паведамленне. 1157 00:54:31,410 --> 00:54:36,922 Так у адрозненне ад GET, вы, здаецца, разгледзець што дадзеныя схаваныя ад карыстальніка. 1158 00:54:36,922 --> 00:54:38,630 Але тое, што сапраўды Важна разумець, 1159 00:54:38,630 --> 00:54:44,040 з'яўляецца тое, што гэта па-ранейшаму гэтак жа, як небяспечным, так як GET. 1160 00:54:44,040 --> 00:54:48,780 Аналогія, якую я хацеў бы выкарыстаць, калі ў вас ёсць нумар вашага банкаўскага рахунку 1161 00:54:48,780 --> 00:54:52,795 і вы запісаць яго на вонкавым боку канверт, гэта даволі небяспечна. 1162 00:54:52,795 --> 00:54:55,920 Калі б вы былі, каб напісаць яго на лістку папера і паклаў яго ў канверт, 1163 00:54:55,920 --> 00:54:58,850 гэта ўсё яшчэ вельмі небяспечна, таму што Усё, што вам трэба зрабіць, гэта адкрыць, што да 1164 00:54:58,850 --> 00:55:03,480 і глядзець на фактычнае ўтрыманне паведамленні, каб убачыць гэта. 1165 00:55:03,480 --> 00:55:08,310 Так што гэта "схаваны", і людзі любяць думаю, што гэта бяспечна, але гэта не рэальна. 1166 00:55:08,310 --> 00:55:11,000 І я ўпэўнены, што Дэвин будзе патрапіць у тым, што больш, можа быць. 1167 00:55:11,000 --> 00:55:12,850 Але гэта важна адрозненне, каб зрабіць 1168 00:55:12,850 --> 00:55:15,820 і нешта сапраўды добрае, каб зразумець. 1169 00:55:15,820 --> 00:55:19,220 >> ОК, SQL, Structured Query Language. 1170 00:55:19,220 --> 00:55:22,220 Усе рэчы, якія мы бачылі зусім нядаўна! 1171 00:55:22,220 --> 00:55:25,400 Так што гэта ў асноўным як раз і прызначаны, Відавочна, што для кіравання дадзенымі. 1172 00:55:25,400 --> 00:55:30,560 Вы, хлопцы, было шмат вопыту з гэта ў вашых табліцах са PHP MyAdmin. 1173 00:55:30,560 --> 00:55:34,100 І ёсць чатыры агульных запытаў што мы хочам, каб вы, хлопцы, ведаю. 1174 00:55:34,100 --> 00:55:37,304 Так што абнаўленне, устаўка, выбраць і выдаліць. 1175 00:55:37,304 --> 00:55:38,970 Таму пераканайцеся, што вы ведаеце, хто рэальна добра. 1176 00:55:38,970 --> 00:55:40,960 Мы збіраемся пайсці праз іх вельмі хутка. 1177 00:55:40,960 --> 00:55:44,340 >> Так абнавіць, сапраўды, як тое, што Вы можаце падумаць, што робіць, 1178 00:55:44,340 --> 00:55:46,740 ён проста абнаўляе дадзеныя ў базе дадзеных. 1179 00:55:46,740 --> 00:55:48,750 Такім чынам, мы маем некалькі прыкладаў тут. 1180 00:55:48,750 --> 00:55:53,310 Гэта наогул Структура запыту на абнаўленне. 1181 00:55:53,310 --> 00:55:56,150 Так мы абнаўляем табліцу што мы гаворым пра. 1182 00:55:56,150 --> 00:56:00,520 І мы хочам, каб усталяваць пэўны каштоўнасці, якія вызначаны слупкі 1183 00:56:00,520 --> 00:56:02,600 роўна канкрэтных значэнняў. 1184 00:56:02,600 --> 00:56:07,500 Так што гэта проста абнаўляе табліцу, змена значэння ва ўсіх радках ў гэтым выпадку. 1185 00:56:07,500 --> 00:56:13,690 Такім чынам, у гэты сюды, фактычная Напрыклад, мы insert-- прабачце. 1186 00:56:13,690 --> 00:56:17,630 Пашыраны Гэта слайд- без мяне ўсведамляючы гэтага. 1187 00:56:17,630 --> 00:56:22,230 >> Так што гэта абнаўленне сталовы набор col1 роўна у знач1, дзе знаходзіўся дом роўны "Курьер". 1188 00:56:22,230 --> 00:56:25,300 Што гэта робіць гэта а толькі змяняе, гэта толькі 1189 00:56:25,300 --> 00:56:28,130 карэктуе гэтыя значэнні ў пэўных месцах. 1190 00:56:28,130 --> 00:56:32,300 Так што ў гэтым-першае, гэта змяняе іх значэння для ўсяго ў вашым стале, 1191 00:56:32,300 --> 00:56:32,860 ОК? 1192 00:56:32,860 --> 00:56:35,820 Гэта збіраецца змяніць гэта калонка для кожнага ўваходу, 1193 00:56:35,820 --> 00:56:37,020 для кожнага радка. 1194 00:56:37,020 --> 00:56:40,840 Але гэта, дзе вы маглі б думаю пра яго, як спецификатора. 1195 00:56:40,840 --> 00:56:44,020 Так што гэта толькі збіраецца змяніць гэта ў вельмі спецыфічных месцах. 1196 00:56:44,020 --> 00:56:47,840 Такім чынам, у р-мноства сем, калі вам Можа быць, абнавіў суму грашовых сродкаў 1197 00:56:47,840 --> 00:56:53,050 што ваш карыстальнік павінен быў, вы, верагодна, некаторыя, дзе ID роўна ідэнтыфікатар сеансу, ці не так? 1198 00:56:53,050 --> 00:56:55,280 >> Таму што вы не хочаце, каб змяніць колькасць наяўных грошай 1199 00:56:55,280 --> 00:56:57,630 для кожнага чалавека, які выкарыстаў свой вэб-сайт. 1200 00:56:57,630 --> 00:57:00,480 Вы хацелі змяніць яго для аднаго канкрэтны чалавек, што асоба, якая з'яўляецца 1201 00:57:00,480 --> 00:57:02,410 хто выкарыстаў яго ў той час. 1202 00:57:02,410 --> 00:57:04,320 Дакладна? 1203 00:57:04,320 --> 00:57:07,510 Такім чынам, ўставіць, ўставіць пэўныя значэння ў табліцах. 1204 00:57:07,510 --> 00:57:11,650 Гэта як калі ты стварэнне брэнда новага карыстальніка. 1205 00:57:11,650 --> 00:57:14,240 Агульная структура тут гэта ўставіць у любы табліцы 1206 00:57:14,240 --> 00:57:15,680 мы гаворым пра. 1207 00:57:15,680 --> 00:57:18,910 Каштоўнасці, будучы значэння, мы сапраўды хочам ўставіць. 1208 00:57:18,910 --> 00:57:23,060 Такім чынам, як мы бачым тут, мы ўжо ўставіць ў табліцу. 1209 00:57:23,060 --> 00:57:27,790 Гэта канкрэтныя слупкі з іх патрэбныя значэння. 1210 00:57:27,790 --> 00:57:29,940 Так што гэта кажа, устаўка новая радок, якая змяшчае 1211 00:57:29,940 --> 00:57:33,660 Значэння val1 і val2 ў адпаведнасці з Гэтыя канкрэтныя слупкі. 1212 00:57:33,660 --> 00:57:39,240 >> Так, можа быць, вы хочаце толькі запоўніць з палавіны рэчаў у гэтым шэрагу. 1213 00:57:39,240 --> 00:57:41,150 Вось што гэтая частка тут дазваляе рабіць. 1214 00:57:41,150 --> 00:57:43,280 Гэта дазваляе вам на самай справе вызначыць, якая частка. 1215 00:57:43,280 --> 00:57:44,244 Так? 1216 00:57:44,244 --> 00:57:52,150 >> АЎДЫТОРЫЯ: вы можаце толькі [неразборліва] клеткі ў шэрагу [неразборліва]? 1217 00:57:52,150 --> 00:57:55,000 >> Элісан: Калі вы толькі запоўніць некаторыя часткі вашага запар, 1218 00:57:55,000 --> 00:57:57,480 астатнія з гэтых клетак з'яўляюцца проста пусты. 1219 00:57:57,480 --> 00:58:02,730 1220 00:58:02,730 --> 00:58:05,660 Да таго часу, пакуль вы дазваляеце ім быць пустым, гэта не праблема. 1221 00:58:05,660 --> 00:58:09,570 Калі вы паспрабуеце атрымаць да іх доступ, гэта збіраецца вярнуцца трохі пусты элемент. 1222 00:58:09,570 --> 00:58:13,850 Але важна ведаць, што ў некаторых табліцах, 1223 00:58:13,850 --> 00:58:16,690 Яны павінны мець магчымасць быць пустым. 1224 00:58:16,690 --> 00:58:18,890 Вы, магчыма, сутыкнецеся з праблема падчас вашай р-набору 1225 00:58:18,890 --> 00:58:21,320 таму што мы не дапускайце пападання з вашых значэння нулявы. 1226 00:58:21,320 --> 00:58:26,110 Але вы можаце паказаць Дадатковае значэнне ў табліцы. 1227 00:58:26,110 --> 00:58:29,640 >> ОК, выбраць, дык гэта тое, проста спосаб атрымання 1228 00:58:29,640 --> 00:58:33,790 канкрэтныя дадзеныя з табліцы ў некаторыя ідэнтыфікатар, які вы хочаце. 1229 00:58:33,790 --> 00:58:37,990 Так абярыце зорка з табліцы, дзе кол роўна што-то проста азначае, што 1230 00:58:37,990 --> 00:58:43,820 дайце мне ўсе дадзеныя, звязаныя дзе гэта пэўны слупок гэта праўда. 1231 00:58:43,820 --> 00:58:49,020 Так зорка ў гэтым выпадку будзе вярнуць ўсю радок з вамі, добра? 1232 00:58:49,020 --> 00:58:54,880 >> І потым, у гэтым выпадку, абярыце зорку з Табліца проста дае вам усю табліцу. 1233 00:58:54,880 --> 00:58:58,940 А потым, сцерці відавочна, гэта проста выдаляе радок з табліцы. 1234 00:58:58,940 --> 00:59:01,320 Так выдаліць з табліцы, усе табліцы мы 1235 00:59:01,320 --> 00:59:06,830 спасылкі, дзе некаторыя канкрэтныя ідэнтыфікатар або некаторы ўмова праўдзіва. 1236 00:59:06,830 --> 00:59:07,720 Так? 1237 00:59:07,720 --> 00:59:08,700 >> АЎДЫТОРЫЯ: Вопрос. 1238 00:59:08,700 --> 00:59:10,699 Чаму вы карыстаецеся двайны каціроўкі, і можаце вы 1239 00:59:10,699 --> 00:59:13,600 зрабіць падвойныя або аднаго каціроўкі, гэта да лепшага? 1240 00:59:13,600 --> 00:59:18,235 >> Элісан: Падвойныя двукоссі або адзінкавыя двукоссі ня робіць розніцу ў SQL. 1241 00:59:18,235 --> 00:59:19,610 Я думаў, што я ўбачыў яшчэ адно пытанне. 1242 00:59:19,610 --> 00:59:20,814 Так? 1243 00:59:20,814 --> 00:59:25,070 >> АЎДЫТОРЫЯ: Хіба гэта не ўплывае на тое, што атрымлівае збег з запыту? 1244 00:59:25,070 --> 00:59:27,945 >> Элісан: Роб? 1245 00:59:27,945 --> 00:59:31,410 >> ROB: Што вы разумееце пад бег з запыту? 1246 00:59:31,410 --> 00:59:36,870 >> АЎДЫТОРЫЯ: Калі хтосьці мае адзін запыт у выглядзе of-- 1247 00:59:36,870 --> 00:59:39,862 >> Роб: Калі хто-то пакласці адну цытату, 1248 00:59:39,862 --> 00:59:43,560 то да тых часоў, як вы дэзінфекцыі Ваш ўклад, то гэта не мае значэння. 1249 00:59:43,560 --> 00:59:46,205 Але калі вы выкарыстоўваеце аднаго Цытата, і вы няправільна 1250 00:59:46,205 --> 00:59:47,914 пазбегнуць вашы матэрыялы, то так, яны павінны 1251 00:59:47,914 --> 00:59:51,079 пакласці адну цытату для таго, каб зламаць код. калі вы карыстаецеся падвойныя двукоссі, 1252 00:59:51,079 --> 00:59:53,580 яны павінны паставіць двайны цытаваць зламаць ваш код. 1253 00:59:53,580 --> 00:59:56,163 Але да тых часоў, як вы бегчы рэчы правільна, гэта не мае значэння. 1254 00:59:56,163 --> 00:59:59,220 Гэта проста будуць пераведзеныя для правільнага знака ў любым выпадку. 1255 00:59:59,220 --> 01:00:02,332 >> АЎДЫТОРЫЯ: Што гэта значыць бегчы? 1256 01:00:02,332 --> 01:00:04,040 Элісан: Ну, як Санітарная апрацоўка і выратавання. 1257 01:00:04,040 --> 01:00:06,810 1258 01:00:06,810 --> 01:00:13,820 Экзамен, які мы маем, вялікі XKCD смешна, што яны цягнуць туды, дзе ў вас ёсць, 1259 01:00:13,820 --> 01:00:15,629 oh-- 1260 01:00:15,629 --> 01:00:16,670 Роб: Гэта апошні слайд. 1261 01:00:16,670 --> 01:00:18,500 Элісан: Гэта апошні слайд, на самай справе? 1262 01:00:18,500 --> 01:00:20,200 Божа мой. 1263 01:00:20,200 --> 01:00:21,780 Там мы ідзем, дасканалым. 1264 01:00:21,780 --> 01:00:27,900 Такім чынам, у прынцыпе, вы можаце надаць то ў гэтым SQL запыту 1265 01:00:27,900 --> 01:00:30,560 дзе ён парушае вашыя код, або, як Давід праявіў 1266 01:00:30,560 --> 01:00:38,460 у класе, калі ў нас ёсць нейкае адзінае Цытата 1 роўны 1, і калі ў нашым кодзе, 1267 01:00:38,460 --> 01:00:41,230 мы проста наўпрост капіяваць, што ў Расеі і у нас ёсць канчатковы адзінарныя двукоссі, 1268 01:00:41,230 --> 01:00:44,740 што адбываецца, мы атрымаем некаторы выраз, што 1269 01:00:44,740 --> 01:00:48,680 ацэньваецца як ісціна, што будзе няхай хто-то ўвайшоў у нашай базе дадзеных 1270 01:00:48,680 --> 01:00:51,720 і атрымаць дадзеныя, якія мы не хачу ім атрымаць. 1271 01:00:51,720 --> 01:00:54,240 Так дэзінфекцыі уваходаў проста азначае, пераканаўшыся, 1272 01:00:54,240 --> 01:00:57,680 што мы пазбегнуць іх сімвалы і абазначэння іх 1273 01:00:57,680 --> 01:01:01,720 як сімвалаў і не такія рэчы, , Якія павінны быць дазволены 1274 01:01:01,720 --> 01:01:04,990 варта разумець літаральна як наш SQL заяву. 1275 01:01:04,990 --> 01:01:09,980 >> Так вялікая рэч, што мы сказалі, што вы, хлопцы павінны выкарыстоўваць 1276 01:01:09,980 --> 01:01:13,650 былі HTML спецыяльныя сімвалы, якая з'яўляецца тое, 1277 01:01:13,650 --> 01:01:15,730 што вы, магчыма, захочаце зірнуць на. 1278 01:01:15,730 --> 01:01:17,240 Добра, выдаліць. 1279 01:01:17,240 --> 01:01:19,450 Тыпы дадзеных, усё гэта будзе ў Інтэрнэце. 1280 01:01:19,450 --> 01:01:23,510 Так як мы 15 хвілін да канца, я проста хачу, каб ісці прама праз гэта. 1281 01:01:23,510 --> 01:01:28,500 PHP і SQL, у асноўным гэта проста ў нас была функцыя запыту, 1282 01:01:28,500 --> 01:01:31,520 дапамаглі абараніць супраць Гэтыя шкоднасныя атакі. 1283 01:01:31,520 --> 01:01:33,970 Таму, калі вы карыстаецеся запыт, мы рабілі, што 1284 01:01:33,970 --> 01:01:36,560 што рэчы былі прадэзінфікаваць і яшчэ шмат чаго. 1285 01:01:36,560 --> 01:01:41,070 >> MVC гэта проста дызайн парадыгма, так мадэль, выгляд, кантролер. 1286 01:01:41,070 --> 01:01:44,200 Гэта проста спосаб, каб трымаць рэчы прыгожа і падзяліць такім жа чынам, 1287 01:01:44,200 --> 01:01:47,100 што мы схільныя ўлічваць з кода ў функцыі. 1288 01:01:47,100 --> 01:01:53,390 Гэта проста фреймворк для вэб-дызайну што дазваляе зрабіць тое ж самае. 1289 01:01:53,390 --> 01:01:54,760 Я збіраюся прапусціць гэты крок. 1290 01:01:54,760 --> 01:01:58,530 >> Гэта тое, што я было б супер зручныя с. 1291 01:01:58,530 --> 01:02:01,132 Гэта выдатна століку. 1292 01:02:01,132 --> 01:02:03,090 Гэта дае вам функцыю Прыклад мадэлі. 1293 01:02:03,090 --> 01:02:05,473 Я проста збіраюся праз гэта таму, што я сапраўды хочаце Дэвин, каб быць у стане гаварыць. 1294 01:02:05,473 --> 01:02:07,140 Калі ў вас ёсць якія-небудзь пытанні, калі ласка, не саромейцеся. 1295 01:02:07,140 --> 01:02:07,931 Я буду тут пасля. 1296 01:02:07,931 --> 01:02:10,360 Проста прыходзьце пагаварыць са мной. 1297 01:02:10,360 --> 01:02:13,380 Пры тым, што ў нас ёсць HTTP статусы. 1298 01:02:13,380 --> 01:02:16,270 І Дэвин збіраецца падарваць праз гэта ў 15 хвілін. 1299 01:02:16,270 --> 01:02:17,560 Гэта будзе выдатна. 1300 01:02:17,560 --> 01:02:18,893 >> DAVIN: OK. 1301 01:02:18,893 --> 01:02:20,312 Ну, ваш мікрафон? 1302 01:02:20,312 --> 01:02:22,210 Так. 1303 01:02:22,210 --> 01:02:23,336 Выбачайце. 1304 01:02:23,336 --> 01:02:24,460 Элісан: Шлях павінен быць падрыхтаваны. 1305 01:02:24,460 --> 01:02:25,335 DAVIN: Не, я гатовы. 1306 01:02:25,335 --> 01:02:25,860 Я гатовы. 1307 01:02:25,860 --> 01:02:28,790 Давайце зробім гэта. 1308 01:02:28,790 --> 01:02:29,290 Ён гатовы. 1309 01:02:29,290 --> 01:02:30,041 ОК. 1310 01:02:30,041 --> 01:02:30,540 Выбачайце. 1311 01:02:30,540 --> 01:02:31,664 Я праліў каву на сябе. 1312 01:02:31,664 --> 01:02:36,037 1313 01:02:36,037 --> 01:02:38,210 Я не ведаю, калі я больш засмучаны, што я выглядаю па-дурному, 1314 01:02:38,210 --> 01:02:40,600 або што я не выпіць кавы больш. 1315 01:02:40,600 --> 01:02:44,480 У любым выпадку, проста хутка аб'яву аб аркушы вы, хлопцы, ёсць. 1316 01:02:44,480 --> 01:02:47,994 Так гэты ліст вы, хлопцы, значыць не Афіцыйны што на віктарыне. 1317 01:02:47,994 --> 01:02:49,660 Гэта афіцыйны, што на віктарыне. 1318 01:02:49,660 --> 01:02:52,520 Акрамя таго, на сайце мы раскажам Вы, OK, гэта будзе на віктарыне. 1319 01:02:52,520 --> 01:02:55,020 Такім чынам, у маленькай шпаргалцы ў вас ёсць, а не чыноўнік. 1320 01:02:55,020 --> 01:02:56,690 І ёсць памылкі на ім. 1321 01:02:56,690 --> 01:03:01,490 Так лепш не проста слепа выкарыстоўваць яго. 1322 01:03:01,490 --> 01:03:04,390 Так што так, гэта ўсё. 1323 01:03:04,390 --> 01:03:05,980 Такім чынам, давайце ў гэтым сапраўды хутка. 1324 01:03:05,980 --> 01:03:07,420 >> Так HTTP статусы. 1325 01:03:07,420 --> 01:03:10,430 Так што ж адбываецца, калі сайт, усё ў парадку. 1326 01:03:10,430 --> 01:03:11,144 Усё ў парадку. 1327 01:03:11,144 --> 01:03:13,310 Усё вяртаецца да Вы, як вы хочаце, каб ён. 1328 01:03:13,310 --> 01:03:15,370 Вы атрымліваеце 200 OK. 1329 01:03:15,370 --> 01:03:19,250 301, дзе мы бачылі, што 301 раней? 1330 01:03:19,250 --> 01:03:20,890 Пачакайце, што адбываецца? 1331 01:03:20,890 --> 01:03:23,250 Выбачайце. 1332 01:03:23,250 --> 01:03:24,980 Мы бачылі, я волава лекцыю падчас бяспекі. 1333 01:03:24,980 --> 01:03:30,690 Так падчас бяспекі, так што калі Дэвід набраў у HTTP, а затым паспрабавалі прайсці да cs50.net, 1334 01:03:30,690 --> 01:03:31,940 Вы будзеце бачыць 301 перамяшчаецца. 1335 01:03:31,940 --> 01:03:32,440 Чаму? 1336 01:03:32,440 --> 01:03:35,570 Таму што гэта будзе перанакіраваць Вы аўтаматычна нашым HTTPS. 1337 01:03:35,570 --> 01:03:38,649 >> Так 301 рухаўся, толькі гэта у асноўным перанакіраванне. 1338 01:03:38,649 --> 01:03:40,190 І вы можаце думаць аб ім, як гэта. 1339 01:03:40,190 --> 01:03:43,790 Любое з станаў, якія пачынаюцца з 2-х, тыя, як, у парадку, усё ў парадку. 1340 01:03:43,790 --> 01:03:46,530 Любое з станаў, якія пачынаюцца з 3, тыя перанакіраванне. 1341 01:03:46,530 --> 01:03:49,571 Статусы, якія пачынаюцца з 4, гэта азначае, ёсць нейкая памылка кліента. 1342 01:03:49,571 --> 01:03:52,440 Статусы, якія пачынаюцца з 5, што гэта нейкая памылка сервера. 1343 01:03:52,440 --> 01:03:54,680 Так вы, здаецца, разбіць статусы, як, што. 1344 01:03:54,680 --> 01:03:59,120 Так 304 ня не змяняецца, так што на твой server.c р-наборы, так скажам вам 1345 01:03:59,120 --> 01:04:00,600 загружаны cat.html. 1346 01:04:00,600 --> 01:04:03,360 Усё вяртаецца, Вы атрымліваеце 200s, ОК, выдатна. 1347 01:04:03,360 --> 01:04:04,540 >> Дапусцім, вы перазапусціце яго. 1348 01:04:04,540 --> 01:04:07,310 Ну, унутры, што cat.html, у вас ёсць JPEG. 1349 01:04:07,310 --> 01:04:09,520 Ну, што JPEG ня збіраецца атрымаць перазагрузцы. 1350 01:04:09,520 --> 01:04:12,140 Вы ж не збіраецеся ствараць іншы GET запыт да сервера, 1351 01:04:12,140 --> 01:04:13,980 а затым атрымаць усю гэтую інфармацыю назад. 1352 01:04:13,980 --> 01:04:17,560 Гэта будзе проста be--, што выява будзе кэшавацца на вашым кампутары. 1353 01:04:17,560 --> 01:04:19,540 І так, што малюнак будзе 304. 1354 01:04:19,540 --> 01:04:20,720 Так што гэта не быў зменены. 1355 01:04:20,720 --> 01:04:24,600 Калі вы затым зачыніць, ясна, печыва, а затым абнавіць 1356 01:04:24,600 --> 01:04:27,490 і паспрабуйце загрузіць гэтую старонку зноў, вы будзеце бачыць 200s. 1357 01:04:27,490 --> 01:04:28,910 Вы не ўбачыце, што 304. 1358 01:04:28,910 --> 01:04:32,340 >> 400, Bad Request, рэальны хутка, як калі б вы 1359 01:04:32,340 --> 01:04:34,880 збіраліся адправіць Аб'ект JSON на сервер 1360 01:04:34,880 --> 01:04:38,090 і ваш аб'ект JSON быў няправільным, Вы ўбачыце нешта накшталт гэтага. 1361 01:04:38,090 --> 01:04:39,000 403, забаронена. 1362 01:04:39,000 --> 01:04:40,330 Калі вы бачыце забаронена? 1363 01:04:40,330 --> 01:04:41,394 Напэўна, напэўна? 1364 01:04:41,394 --> 01:04:42,060 АЎДЫТОРЫЯ: Chmod. 1365 01:04:42,060 --> 01:04:42,950 DAVIN: Chmod, так. 1366 01:04:42,950 --> 01:04:44,730 Такім чынам, вы не ўсталявалі Дазволу правільна. 1367 01:04:44,730 --> 01:04:45,577 404, не знойдзены. 1368 01:04:45,577 --> 01:04:46,410 Гэта проста не існуе. 1369 01:04:46,410 --> 01:04:48,670 Так што, калі вы ўведзяце ў няправільным URL. 1370 01:04:48,670 --> 01:04:53,500 500, унутраная памылка сервера, сервера верагодна, не быў правільна настроены. 1371 01:04:53,500 --> 01:04:56,260 Што-то не на вашым баку, але што-то на боку сервера. 1372 01:04:56,260 --> 01:04:57,240 І 503? 1373 01:04:57,240 --> 01:04:59,502 Шмат людзей бачылі 503s ў мінулым Р-мноства. 1374 01:04:59,502 --> 01:05:00,460 Калі гэта адбылося? 1375 01:05:00,460 --> 01:05:04,180 1376 01:05:04,180 --> 01:05:05,660 Я чуў, шэпт. 1377 01:05:05,660 --> 01:05:07,767 >> АЎДЫТОРЫЯ: Калі Google вырашыць, што вы будзеце робат. 1378 01:05:07,767 --> 01:05:10,350 DAVIN: Так, калі Google вырашае Вы робат, вы атрымліваеце 503s. 1379 01:05:10,350 --> 01:05:11,560 Дык вось перагрузкі. 1380 01:05:11,560 --> 01:05:14,620 Калі вы запыталі з сервера занадта шмат, гэта, як правіла, часовы характар. 1381 01:05:14,620 --> 01:05:15,560 І большасць з вас гэта заўважылі. 1382 01:05:15,560 --> 01:05:16,185 Такім чынам, вы бачылі 503. 1383 01:05:16,185 --> 01:05:19,282 Вы, магчыма, мелі трохі перапынак, то 503s сышоў, 1384 01:05:19,282 --> 01:05:20,490 і ўсё было ў парадку. 1385 01:05:20,490 --> 01:05:26,640 >> GABE: Рэальны хуткі, калі вы, хлопцы, атрымаеце 500 у, верагодна, гэта апошняя праблема ўсталяваць? 1386 01:05:26,640 --> 01:05:27,954 Так? 1387 01:05:27,954 --> 01:05:30,906 >> АЎДЫТОРЫЯ: Звычайна, калі сэрвэры ёсць файл недарэчныя 1388 01:05:30,906 --> 01:05:34,650 або [неразборліва] іх машына [неразборліва]. 1389 01:05:34,650 --> 01:05:38,870 >> GABE: Дык гэта можа быць канфігурацыя Пытанне ў PHP на вашым серверы. 1390 01:05:38,870 --> 01:05:42,250 Але гэта можа быць толькі тое, як кропка з коскі, што ваш забыліся. 1391 01:05:42,250 --> 01:05:44,130 Калі вы друкуеце PHP, некаторыя няправільны сінтаксіс 1392 01:05:44,130 --> 01:05:46,000 маглі б атрымаць нешта падобнае. 1393 01:05:46,000 --> 01:05:46,960 ОК? 1394 01:05:46,960 --> 01:05:48,610 >> DAVIN: Круто. 1395 01:05:48,610 --> 01:05:51,180 Вы хочаце, каб я не рабіць толькі да таго часу, AJAX ці што? 1396 01:05:51,180 --> 01:05:52,950 >> GABE: [неразборліва]. 1397 01:05:52,950 --> 01:05:53,450 DAVIN: OK. 1398 01:05:53,450 --> 01:05:54,230 Так што DOM? 1399 01:05:54,230 --> 01:05:55,290 Што DOM азначае? 1400 01:05:55,290 --> 01:05:56,990 >> АЎДЫТОРЫЯ: аб'ектная мадэль дакумента. 1401 01:05:56,990 --> 01:05:57,490 DAVIN: Ніца. 1402 01:05:57,490 --> 01:06:00,775 І чаму мы гэта падабаецца? 1403 01:06:00,775 --> 01:06:02,670 Высокі. 1404 01:06:02,670 --> 01:06:06,651 Так, так яно проста дазваляе нам атрымаць доступ да HTML, доступ да нашага старонку вельмі хутка. 1405 01:06:06,651 --> 01:06:07,150 Чаму? 1406 01:06:07,150 --> 01:06:09,980 Таму што мы ставіцца да нашых старонка, разглядаючы нашы HTML-тэгі, 1407 01:06:09,980 --> 01:06:11,730 лячэння ўсё як быццам яны аб'екты. 1408 01:06:11,730 --> 01:06:13,710 Калі мы ставіцца да іх як яны аб'ектаў, тое, што мы можам зрабіць? 1409 01:06:13,710 --> 01:06:15,210 Ну, мы можам выклікаць функцыі на іх. 1410 01:06:15,210 --> 01:06:16,460 І гэта важна, чаму? 1411 01:06:16,460 --> 01:06:19,200 Ну, таму што мы збіраемся выкарыстаць JavaScript, каб абнавіць наш HTML, 1412 01:06:19,200 --> 01:06:20,500 абнавіць гэтыя аб'екты. 1413 01:06:20,500 --> 01:06:23,869 Так што, калі мы ставімся да іх як аб'екты, мы можам выклікаць функцыі на іх. 1414 01:06:23,869 --> 01:06:26,660 Я збіраюся трапіць у гэта мала больш, калі я іду ў JavaScript, 1415 01:06:26,660 --> 01:06:30,510 але вы ўсё бачылі, як document.getElementById. 1416 01:06:30,510 --> 01:06:32,870 Так дакумент з'яўляецца ваш элемент, атрымаць элемент па ідэнтыфікатару, 1417 01:06:32,870 --> 01:06:35,087 так што вы збіраецеся глядзець на працягу некаторага ID ў HTML тэга. 1418 01:06:35,087 --> 01:06:36,920 І потым, вы можаце зрабіць яшчэ што-то, што. 1419 01:06:36,920 --> 01:06:40,089 Напрыклад, як document.body, то вы можаце дадаць дзіцяці. 1420 01:06:40,089 --> 01:06:41,630 Такім чынам, вы збіраецеся знайсці гэты дакумент. 1421 01:06:41,630 --> 01:06:42,340 У вас ёсць дакумент. 1422 01:06:42,340 --> 01:06:43,629 Вы збіраецеся знайсці цела. 1423 01:06:43,629 --> 01:06:44,420 Вы знайшлі цела. 1424 01:06:44,420 --> 01:06:46,545 І потым, вы збіраецеся выклікаць некаторыя функцыі на ім. 1425 01:06:46,545 --> 01:06:50,312 Так дадаць дзіцяці, і вы можаце дадаць некаторыя HTML на канец ўнутры вашага цела. 1426 01:06:50,312 --> 01:06:52,520 Так у асноўным, вы проста разглядаючы яго як аб'ект. 1427 01:06:52,520 --> 01:06:54,515 Вы лячэння HTML тэгі, як аб'ект. 1428 01:06:54,515 --> 01:06:57,071 І гэта робіць яго вельмі лёгка і хутка прайсці праз іх. 1429 01:06:57,071 --> 01:06:59,070 Але гэта таксама дазваляе для выкліку функцый на іх 1430 01:06:59,070 --> 01:07:04,410 так што вы можаце маніпуляваць і змяніць элементы. 1431 01:07:04,410 --> 01:07:10,162 >> GABE: Улічваючы гэта, чаму JavaScript такія добры мова для ўзаемадзеяння з HTML? 1432 01:07:10,162 --> 01:07:12,870 Хутчэй за ўсё, калі людзі выбіралі мова для браўзэра, 1433 01:07:12,870 --> 01:07:14,990 для боку кліента, JavaScript вельмі прыемна, 1434 01:07:14,990 --> 01:07:16,765 гэта сапраўды добра спраўляецца аб'ектаў. 1435 01:07:16,765 --> 01:07:20,620 І аб'екты накшталт як аб'екты, якія з'яўляюцца ў HTML, 1436 01:07:20,620 --> 01:07:23,940 так што гэта вельмі лёгка JavaScript каб зрабіць такую ​​апрацоўку. 1437 01:07:23,940 --> 01:07:24,440 DAVIN: Ніца. 1438 01:07:24,440 --> 01:07:25,670 Так вось проста прыклад. 1439 01:07:25,670 --> 01:07:29,020 Так што я думаю, што на віктарыне у мінулым годзе, ці, можа быць, два гады таму, мы 1440 01:07:29,020 --> 01:07:30,840 прасіў вас, каб стварыць дрэва. 1441 01:07:30,840 --> 01:07:32,660 Так што гэта менавіта тое, што вам трэба зрабіць. 1442 01:07:32,660 --> 01:07:34,255 Такім чынам, вы пачынаеце з дакументам. 1443 01:07:34,255 --> 01:07:36,130 І тады вы ў асноўным проста паглядзіце на тэгі. 1444 01:07:36,130 --> 01:07:38,100 Так што, калі вы паглядзіце, мы пачаць з HTML тэга. 1445 01:07:38,100 --> 01:07:41,660 І потым, вы атрымаеце падказкі аб тым, як рабіць гэта на аснове водступу. 1446 01:07:41,660 --> 01:07:43,870 Так кіраўнік роду адгаліноўваецца. 1447 01:07:43,870 --> 01:07:46,242 Ўнутры галавы, у нас ёсць іншы тэг для назвы. 1448 01:07:46,242 --> 01:07:47,450 Такім чынам, у нас ёсць тэг загалоўка. 1449 01:07:47,450 --> 01:07:49,760 А ўнутры, што мы маем некаторую радок. 1450 01:07:49,760 --> 01:07:52,210 І так мы ўяўляем Радок у кола. 1451 01:07:52,210 --> 01:07:54,010 І ўсё пазнакі на плошчах. 1452 01:07:54,010 --> 01:07:56,270 >> І калі вы паглядзіце, калі мы думаю, гэта як дрэва, 1453 01:07:56,270 --> 01:07:58,730 і давайце скажам, што HTML з'яўляецца бацька, то галава і цела 1454 01:07:58,730 --> 01:07:59,772 збіраюцца быць браты і сёстры. 1455 01:07:59,772 --> 01:08:01,813 Абодва яны зьбіраюцца быць дзеці гэтага з бацькоў. 1456 01:08:01,813 --> 01:08:03,620 Так, таму што яны як браты і сёстры, яны 1457 01:08:03,620 --> 01:08:06,590 будзе свайго роду побач з адзін з адным у нашай мадэлі дрэва. 1458 01:08:06,590 --> 01:08:08,590 І потым, вы ў асноўным зрабіць тое ж самае. 1459 01:08:08,590 --> 01:08:13,512 Так што не цяжка, але мы папрасілі такія пытанні, як гэта раней на віктарыне. 1460 01:08:13,512 --> 01:08:15,220 GABE: Хто-небудзь ёсць пытанні да гэтага часу? 1461 01:08:15,220 --> 01:08:16,357 Гэта добра? 1462 01:08:16,357 --> 01:08:16,856 DAVIN: Круто. 1463 01:08:16,856 --> 01:08:19,630 1464 01:08:19,630 --> 01:08:21,600 JavaScript, OK, добры матэрыял. 1465 01:08:21,600 --> 01:08:24,069 Так JavaScript, што JavaScript? 1466 01:08:24,069 --> 01:08:28,370 Ну, JavaScript is-- гэта складанай, але гэтыя 1467 01:08:28,370 --> 01:08:30,727 некаторыя з асноўных момантаў што вы павінны трымаць у розуме. 1468 01:08:30,727 --> 01:08:31,810 Па-першае, гэта слаба тыпізаванай. 1469 01:08:31,810 --> 01:08:33,529 Што гэта значыць? 1470 01:08:33,529 --> 01:08:35,596 Такім чынам, PHP was-- так, у чым справа? 1471 01:08:35,596 --> 01:08:39,854 >> АЎДЫТОРЫЯ: Вы не павінны відавочна Дзяржава, што тып зменнай яна ёсць. 1472 01:08:39,854 --> 01:08:40,479 DAVIN: Ідэальны. 1473 01:08:40,479 --> 01:08:43,270 Такім чынам, ён сказаў, што вы не павінны відавочна пазначыць тып зменнай. 1474 01:08:43,270 --> 01:08:44,160 Вось менавіта. 1475 01:08:44,160 --> 01:08:49,700 Такім чынам, у C, калі б мне давялося INT я складае 50, то ў PHP, гэта проста, як гэта, $ я, 1476 01:08:49,700 --> 01:08:50,550 роўная 50. 1477 01:08:50,550 --> 01:08:54,319 Затым у JavaScript, што б выклік будзе? 1478 01:08:54,319 --> 01:08:55,260 Var, ці не так? 1479 01:08:55,260 --> 01:08:56,566 Гэта было б, як вар я роўны 50. 1480 01:08:56,566 --> 01:08:58,649 Але вы не павінны быць як, добра, гэта Int. 1481 01:08:58,649 --> 01:09:00,350 ОК, гэта радок. 1482 01:09:00,350 --> 01:09:01,731 Няма неабходнасці рабіць гэта. 1483 01:09:01,731 --> 01:09:02,939 Гэта інтэрпрэтаваная мова. 1484 01:09:02,939 --> 01:09:04,904 Такім чынам, што ж гэта значыць? 1485 01:09:04,904 --> 01:09:06,340 >> АЎДЫТОРЫЯ: Ці не кампілюецца. 1486 01:09:06,340 --> 01:09:10,470 >> DAVIN: Что не складзены на ўвазе? 1487 01:09:10,470 --> 01:09:11,392 Так? 1488 01:09:11,392 --> 01:09:15,336 >> АЎДЫТОРЫЯ: Вы не павінны рэструктураваць код 1489 01:09:15,336 --> 01:09:18,294 каб атрымаць яго гатовым для кампутар, каб запусціць яго. 1490 01:09:18,294 --> 01:09:23,144 Гэта проста прынята падчас выкананне і кампутар [неразборліва]. 1491 01:09:23,144 --> 01:09:25,560 DAVIN: Так, так што гэта будзе прайсці праз перакладчыка. 1492 01:09:25,560 --> 01:09:26,750 Але вы цалкам маеце рацыю. 1493 01:09:26,750 --> 01:09:28,319 Такім чынам, вы ніколі не збіраецеся скампіляваць яго, ці не так? 1494 01:09:28,319 --> 01:09:30,399 Калі вы робіце ваш PHP і код JavaScript, 1495 01:09:30,399 --> 01:09:31,365 Вы ніколі не называў кампіляцыі. 1496 01:09:31,365 --> 01:09:33,779 Вы ніколі не называў нешта накшталт зрабіць або што-небудзь падобнае. 1497 01:09:33,779 --> 01:09:34,800 Гэта таму, што інтэрпрэтуецца. 1498 01:09:34,800 --> 01:09:37,319 Так што кожны раз ён ідзе праз браўзэр, ён ідзе праз перакладчыка. 1499 01:09:37,319 --> 01:09:40,370 І што адбываецца, каб інтэрпрэтаваць яго толькі ў рэжыме рэальнага часу прама ад гатэля для вас. 1500 01:09:40,370 --> 01:09:43,770 Так што некаторыя плюсы і мінусы да таго інтэрпрэтаваная мова 1501 01:09:43,770 --> 01:09:45,258 і якія маюць скампіляваны мову? 1502 01:09:45,258 --> 01:09:48,240 1503 01:09:48,240 --> 01:09:50,540 Так compiling-- так, у чым справа? 1504 01:09:50,540 --> 01:09:52,444 >> АЎДЫТОРЫЯ: Сінхронны пераклад павольней. 1505 01:09:52,444 --> 01:09:53,319 DAVIN: У якім сэнсе? 1506 01:09:53,319 --> 01:09:57,167 1507 01:09:57,167 --> 01:09:59,091 >> АЎДЫТОРЫЯ: Пасля вас збіраць, вам не прыйдзецца 1508 01:09:59,091 --> 01:10:04,400 рабіць нейкія дадатковыя крокі, каб выканаць гэта, то ў гэтым [неразборліва]. 1509 01:10:04,400 --> 01:10:05,570 >> DAVIN: справа, дасканалым. 1510 01:10:05,570 --> 01:10:08,386 Так што вы сказалі, у асноўным, што складанне, 1511 01:10:08,386 --> 01:10:10,760 пры кампіляцыі, вы павінны шмат папярэдніх выдаткаў, ці не так? 1512 01:10:10,760 --> 01:10:11,760 Вы збіраецеся скампіляваць яго. 1513 01:10:11,760 --> 01:10:13,750 Але пасля таго, як скампіляваць яго, кампілятар збіраецца аптымізаваць яго. 1514 01:10:13,750 --> 01:10:14,840 Гэта будзе хутка. 1515 01:10:14,840 --> 01:10:16,170 Гэта будзе ў асноўным так хутка, як гэта можа быць. 1516 01:10:16,170 --> 01:10:18,830 З не пераклад, вы ніколі не ёсць, што першапачатковыя выдаткі. 1517 01:10:18,830 --> 01:10:22,260 Хутчэй за ўсё, гэта будзе трохі павольней, кожны раз, калі вы яго інтэрпрэтаваць. 1518 01:10:22,260 --> 01:10:24,940 І вы будзеце мець, каб інтэрпрэтаваць яго кожны раз. 1519 01:10:24,940 --> 01:10:27,114 Такім чынам, замест таго, гэта адзін кошт часу, цяпер вы 1520 01:10:27,114 --> 01:10:29,530 прыйдзецца інтэрпрэтаваць яго кожны раз, калі старонка адлюстроўваецца. 1521 01:10:29,530 --> 01:10:31,890 >> Так перакладчыкі добра, таму што Вы не павінны кампіляваць яго, 1522 01:10:31,890 --> 01:10:33,980 але яны дрэнна ў тым, што кожны часу загрузкі старонак, гэта 1523 01:10:33,980 --> 01:10:35,771 прыйдзецца інтэрпрэтаваць гэтую тэхналогію Java. 1524 01:10:35,771 --> 01:10:40,520 І гэта будзе працаваць трохі павольней, чым калі б вы былі, каб скампіляваць яго. 1525 01:10:40,520 --> 01:10:43,044 Дазваляе communicate-- ой, пачакайце. 1526 01:10:43,044 --> 01:10:44,960 Выкарыстоўваецца для кіравання змест і знешні выгляд. 1527 01:10:44,960 --> 01:10:46,043 Мы толькі што казалі пра гэта. 1528 01:10:46,043 --> 01:10:47,250 Ён выкарыстоўвае DOM. 1529 01:10:47,250 --> 01:10:49,930 AJAX, мы атрымаем у AJAX ў трохі. 1530 01:10:49,930 --> 01:10:51,520 І потым, гэта на баку кліента. 1531 01:10:51,520 --> 01:10:53,110 Такім чынам, PHP з'яўляецца сервернай часткі. 1532 01:10:53,110 --> 01:10:54,360 JavaScript ажыццяўляецца на баку кліента. 1533 01:10:54,360 --> 01:10:57,780 Што станоўча на гэта? 1534 01:10:57,780 --> 01:10:58,280 Гэта кажа. 1535 01:10:58,280 --> 01:11:01,480 1536 01:11:01,480 --> 01:11:02,780 Гэта хутчэй, ці не так? 1537 01:11:02,780 --> 01:11:05,282 Таму што вы не павінны to-- гэта хутчэй. 1538 01:11:05,282 --> 01:11:07,490 Вы не павінны мець зносіны з некаторым іншым прыладай. 1539 01:11:07,490 --> 01:11:08,790 Калі вы проста на вашым кліент, вы ніколі не 1540 01:11:08,790 --> 01:11:11,280 прыйдзецца ісці і ўбачыць, што на серверы 1541 01:11:11,280 --> 01:11:13,150 а затым далажыць ці нешта падобнае. 1542 01:11:13,150 --> 01:11:15,410 Так на баку кліента, як правіла, быць трохі хутчэй. 1543 01:11:15,410 --> 01:11:17,910 >> GABE: Так, але гэта не азначае, PHP з'яўляецца 1544 01:11:17,910 --> 01:11:20,440 хутчэй, чым JavaScript або што-небудзь падобнае. 1545 01:11:20,440 --> 01:11:23,270 Яны бягуць накшталт ў той жа самы Хуткасць, таму што яны абодва 1546 01:11:23,270 --> 01:11:24,490 інтэрпрэтаваных моў. 1547 01:11:24,490 --> 01:11:26,680 Рэч, якая павольна тут запыт. 1548 01:11:26,680 --> 01:11:28,870 Такім чынам, вы на самой справе адбываецца ўсё шляху ў Бразілію 1549 01:11:28,870 --> 01:11:31,460 атрымаць некаторую інфармацыю што там жыве. 1550 01:11:31,460 --> 01:11:34,590 Але PHP і JavaScript, яны выгляд запусціць з той жа хуткасцю. 1551 01:11:34,590 --> 01:11:37,930 Гэта не тое, што адзін хутчэй, чым іншыя. 1552 01:11:37,930 --> 01:11:40,600 Гэта, таксама, пытанне з падвохам тут. 1553 01:11:40,600 --> 01:11:47,338 Так JavaScript ніколі не стане машынны код, праўда ці хлусня? 1554 01:11:47,338 --> 01:11:48,590 >> АЎДЫТОРЫЯ: False. 1555 01:11:48,590 --> 01:11:49,090 GABE: False. 1556 01:11:49,090 --> 01:11:51,298 Яна павінна стаць машына Код, таму што машынны код 1557 01:11:51,298 --> 01:11:53,210 Адзінае, што машына разумее. 1558 01:11:53,210 --> 01:11:55,800 Нават калі гэта не складаюцца, ён па-ранейшаму становіцца машынны код 1559 01:11:55,800 --> 01:11:59,120 таму што перакладчык проста праграма, якая ідзе парадкова 1560 01:11:59,120 --> 01:12:02,170 і пераўтворыць гэты радок у то кампутар разумее. 1561 01:12:02,170 --> 01:12:02,825 ОК? 1562 01:12:02,825 --> 01:12:03,325 Крута. 1563 01:12:03,325 --> 01:12:08,530 1564 01:12:08,530 --> 01:12:12,890 >> DAVIN: Вось толькі вельмі просты прывітанне свет праграма на JavaScript. 1565 01:12:12,890 --> 01:12:15,590 Так што я не ведаю, if-- вы бачылі гэта. 1566 01:12:15,590 --> 01:12:17,630 Але вы проста павінны HTML тут. 1567 01:12:17,630 --> 01:12:21,020 І замест таго, рэальна пакласці JavaScript у тэгах сцэнара, 1568 01:12:21,020 --> 01:12:22,810 так вы звычайна пакласці яго ў галаву. 1569 01:12:22,810 --> 01:12:24,030 Вы павінны тэгі сцэнара. 1570 01:12:24,030 --> 01:12:24,870 Вы адпусціце яго там. 1571 01:12:24,870 --> 01:12:28,350 Усё, што мы зрабілі тут мы звязаны in-- так што мы звязаны ў файле JavaScript 1572 01:12:28,350 --> 01:12:29,137 так. 1573 01:12:29,137 --> 01:12:30,470 І вы ўсё гэта зрабілі, ці не так? 1574 01:12:30,470 --> 01:12:34,740 Таму, калі вы карыстаецеся JQuery і underscore.js ў апошнім р-набор, 1575 01:12:34,740 --> 01:12:38,700 Вы не маеце тоны кода доступу ва Вашы тэгі сцэнара, у вашай галаве. 1576 01:12:38,700 --> 01:12:41,415 Вы можаце зрабіць гэта, але замест гэтага вы проста звязваючы яго ў. 1577 01:12:41,415 --> 01:12:43,540 І вы звязваючы яго ў проста, як вы робіце з CSS. 1578 01:12:43,540 --> 01:12:50,186 Так што проста робіць яго больш зручным для чытання, так ваш код не люблю доўгія 1000 лініі 1579 01:12:50,186 --> 01:12:52,310 з тоны функцый, Вы не маглі б выкарыстоўваць. 1580 01:12:52,310 --> 01:12:53,518 >> Замест гэтага, вы проста звязаць яе ў. 1581 01:12:53,518 --> 01:12:55,050 Гэта compartmentalizes яго. 1582 01:12:55,050 --> 01:13:00,110 Гэта падобна на напісанне якой-небудзь файл загалоўка, і Затым у тым ліку файл загалоўка ў З 1583 01:13:00,110 --> 01:13:01,620 Думайце пра гэта так жа, як гэта. 1584 01:13:01,620 --> 01:13:02,680 Дык што ж гэта зрабіць? 1585 01:13:02,680 --> 01:13:04,560 Ну, гэта будзе працаваць. 1586 01:13:04,560 --> 01:13:05,410 Гэта будзе папярэджваць. 1587 01:13:05,410 --> 01:13:08,020 Такім чынам, вы збіраецеся атрымаць крыху ўсплывальнае пад назвай прывітанне свет. 1588 01:13:08,020 --> 01:13:11,420 Хуткі пытанне, проста праверыць стан сьвядомасьці, Такім чынам, вы бачыце тут, у целе, 1589 01:13:11,420 --> 01:13:13,160 сказаць цела, HTML тут. 1590 01:13:13,160 --> 01:13:14,080 Тое, што прыходзіць у першую чаргу? 1591 01:13:14,080 --> 01:13:16,864 Ці павінен я ўбачыць цела, HTML тут, ці я бачу папярэджанне ў першую чаргу? 1592 01:13:16,864 --> 01:13:19,828 1593 01:13:19,828 --> 01:13:20,820 >> АЎДЫТОРЫЯ: Папярэджаньне. 1594 01:13:20,820 --> 01:13:21,470 >> DAVIN: Дакладна. 1595 01:13:21,470 --> 01:13:22,110 Ён кажа, што папярэджанне. 1596 01:13:22,110 --> 01:13:22,610 Чаму? 1597 01:13:22,610 --> 01:13:24,470 >> АЎДЫТОРЫЯ: Таму што вы ісці зверху ўніз. 1598 01:13:24,470 --> 01:13:25,600 >> DAVIN: Так. 1599 01:13:25,600 --> 01:13:26,100 Ідэальна падыходзіць. 1600 01:13:26,100 --> 01:13:29,207 Такім чынам, ён кажа, вы ідзяце зверху знізу, што абсалютна правільна. 1601 01:13:29,207 --> 01:13:30,790 Вы збіраецеся ісці зверху ўніз. 1602 01:13:30,790 --> 01:13:34,790 І ў JavaScript, JQuery, у вас ёсць функцыя, якая паходзіць на OnLoad або гатовы, 1603 01:13:34,790 --> 01:13:38,030 і гэта кажа, добра, пачакайце, пакуль усё гэта HTML загружаны. 1604 01:13:38,030 --> 01:13:39,580 А потым, патэлефануйце ў JavaScript. 1605 01:13:39,580 --> 01:13:42,190 Таму што мы не маем, што тут, Самае першае, што адбудзецца 1606 01:13:42,190 --> 01:13:43,920 гэта збіраецца ісці зверху ўніз. 1607 01:13:43,920 --> 01:13:46,310 Гэта будзе ўдар JS выклік, ён збіраецца папярэдзіць. 1608 01:13:46,310 --> 01:13:49,510 Пасля гэтага націснуць кнопку ОК, што папярэджанне знікне. 1609 01:13:49,510 --> 01:13:53,600 Тады ён збіраецца паказаць Вы цела HTML тут. 1610 01:13:53,600 --> 01:13:54,590 Nice. 1611 01:13:54,590 --> 01:14:00,880 >> ОК, так што проста сапраўды хутка, лісты У JavaScript супер хутка. 1612 01:14:00,880 --> 01:14:02,710 Для таго, каб абвясціць Пераменная, вар імя. 1613 01:14:02,710 --> 01:14:07,070 Такім чынам, у C, вы павінны INT I, у вас ёсць абвясціць які тып яно і ёсць. 1614 01:14:07,070 --> 01:14:08,040 PHP $. 1615 01:14:08,040 --> 01:14:08,755 JavaScript, вар. 1616 01:14:08,755 --> 01:14:09,630 Мы гаварылі пра гэта. 1617 01:14:09,630 --> 01:14:11,020 Добра, пойдзем. 1618 01:14:11,020 --> 01:14:12,510 >> Завесы, тое ж самае. 1619 01:14:12,510 --> 01:14:14,230 Тое ж самае. 1620 01:14:14,230 --> 01:14:18,165 Аб'явы функцый, так гэтак жа, як вы бачылі ў С. 1621 01:14:18,165 --> 01:14:21,290 Адзінае, што адрозніваецца таму, калі Вы атрымліваеце на іншыя мовы праграмавання, 1622 01:14:21,290 --> 01:14:24,780 напрыклад, калі вы бераце 51 у наступным семестры і вы робіце з OCaml, 1623 01:14:24,780 --> 01:14:26,690 Вы можаце мець справу з ананімнымі функцыямі. 1624 01:14:26,690 --> 01:14:28,240 Дык вось менавіта тое, што вас тут. 1625 01:14:28,240 --> 01:14:31,560 Такім чынам, вы хочаце, каб пакласці ў суме, нейкую каштоўнасць сум. 1626 01:14:31,560 --> 01:14:33,870 Але вы маглі б рабіць гэта толькі адзін раз. 1627 01:14:33,870 --> 01:14:37,310 Такім чынам, вы не хочаце назваць гэта функцыя сума, даць яму функцыю дэкларацыю. 1628 01:14:37,310 --> 01:14:39,830 Замест гэтага, вы проста выкарыстоўваць яго як ананімную функцыю. 1629 01:14:39,830 --> 01:14:42,469 І вы бачылі гэта шмат. 1630 01:14:42,469 --> 01:14:44,510 Вы ўбачыце прыклад Гэта, у пару слайдаў. 1631 01:14:44,510 --> 01:14:45,597 Так, мы паглядзім. 1632 01:14:45,597 --> 01:14:46,430 GABE: Добры пытанне. 1633 01:14:46,430 --> 01:14:50,660 Калі вы маглі б хацець выкарыстоўваць ананімная функцыя тут? 1634 01:14:50,660 --> 01:14:54,111 У прынцыпе, калі вы жадаеце што-то, як падзеі, каб гэта адбылося. 1635 01:14:54,111 --> 01:14:55,860 Таму, калі мыш націснуў, напрыклад, 1636 01:14:55,860 --> 01:14:57,790 Вы хочаце, каб некаторыя функцыі называецца. 1637 01:14:57,790 --> 01:15:00,570 Такім чынам, вы прайсці на мерапрыемства апрацоўшчык, вы перадаеце выпадку, 1638 01:15:00,570 --> 01:15:02,870 выгляд, функцыя, якая Вы хочаце, каб назваць. 1639 01:15:02,870 --> 01:15:04,710 І што вы перадаеце як, у канцы 1640 01:15:04,710 --> 01:15:08,757 у дзень, проста паказальнік на што інструкцыя, функцыі. 1641 01:15:08,757 --> 01:15:11,090 Так што гэта не так, як вы праходжання увесь код, гэтак жа, як 1642 01:15:11,090 --> 01:15:12,173 паказальнік на функцыю. 1643 01:15:12,173 --> 01:15:17,871 А потым, калі хтосьці націскае мыш, то гэтая функцыя выклікаецца. 1644 01:15:17,871 --> 01:15:22,340 >> Дэвин: масіваў, што ёсць заяву масіва. 1645 01:15:22,340 --> 01:15:23,990 Затым, масіў навесці. 1646 01:15:23,990 --> 01:15:25,769 Рэальны хуткі, што гэта будзе раздрукаваць? 1647 01:15:25,769 --> 01:15:27,060 Што будзе трэці элемент быць? 1648 01:15:27,060 --> 01:15:31,470 1649 01:15:31,470 --> 01:15:32,450 >> АЎДЫТОРЫЯ: "JS". 1650 01:15:32,450 --> 01:15:33,940 >> DAVIN: Права, гэта было б "JS". 1651 01:15:33,940 --> 01:15:35,760 Пачакайце, вярнуцца назад. 1652 01:15:35,760 --> 01:15:37,100 Што такое адлегласць? 1653 01:15:37,100 --> 01:15:38,117 >> АЎДЫТОРЫЯ: Тры. 1654 01:15:38,117 --> 01:15:38,950 DAVIN: Тры, ці не так? 1655 01:15:38,950 --> 01:15:40,210 Менавіта тое, што вы думаеце. 1656 01:15:40,210 --> 01:15:42,072 Добра, зараз ісці. 1657 01:15:42,072 --> 01:15:43,530 Масівы, вы можаце дадаць рэчы да іх. 1658 01:15:43,530 --> 01:15:45,395 Такім чынам, вы можаце выйсці за межы іх пачатковыя мяжы. 1659 01:15:45,395 --> 01:15:46,740 Проста што-то трымаць у розуме. 1660 01:15:46,740 --> 01:15:49,760 PHP, JavaScript, яны мала трохі больш паблажлівымі з пункту гледжання рэчаў 1661 01:15:49,760 --> 01:15:50,570 вось так. 1662 01:15:50,570 --> 01:15:54,260 Аб'екты, вельмі падобна Структуры ў С, вельмі 1663 01:15:54,260 --> 01:15:56,590 як асацыятыўных масіваў у PHP. 1664 01:15:56,590 --> 01:15:58,720 Вы ўсё мелі досвед з гэтым. 1665 01:15:58,720 --> 01:16:01,880 Так JSON, калі вы перадаеце JSON туды і назад у р-ўсталяваць восем, 1666 01:16:01,880 --> 01:16:03,260 гэта ваш аб'ект. 1667 01:16:03,260 --> 01:16:06,290 >> Так што так, напрыклад, рэальны хуткі прыклад. 1668 01:16:06,290 --> 01:16:07,880 Вось аб'ект. 1669 01:16:07,880 --> 01:16:12,700 Як вы спасылацца на гэты аб'ект, так што проста сапраўды хутка, 1670 01:16:12,700 --> 01:16:18,630 давайце казаць, што я хацеў знайсці з, добра, што курс? 1671 01:16:18,630 --> 01:16:20,681 І так імя аб'екта тут CS50. 1672 01:16:20,681 --> 01:16:23,180 І потым, калі я павінен быў асацыятыўную масіў, як бы я гэта зрабіць? 1673 01:16:23,180 --> 01:16:24,580 Я буду выкарыстоўваць ключ, ці не так? 1674 01:16:24,580 --> 01:16:26,030 Так што ў мяне імя масіва. 1675 01:16:26,030 --> 01:16:30,160 У мяне ёсць кранштэйны, цытаты, ключ, канчатковыя каціроўкі, канцавога кранштэйна, 1676 01:16:30,160 --> 01:16:33,610 і што будзе спасылацца, што элемент у маёй асацыятыўнага масіва. 1677 01:16:33,610 --> 01:16:37,646 Як я спасылкі Вядома ў маёй аб'екта? 1678 01:16:37,646 --> 01:16:39,170 Хто-небудзь ведае? 1679 01:16:39,170 --> 01:16:40,622 >> АЎДЫТОРЫЯ: [неразборліва]. 1680 01:16:40,622 --> 01:16:41,784 >> DAVIN: Што здарылася? 1681 01:16:41,784 --> 01:16:42,700 АЎДЫТОРЫЯ: CS50.course. 1682 01:16:42,700 --> 01:16:43,510 DAVIN: справа, так. 1683 01:16:43,510 --> 01:16:45,320 Так CS50.course. 1684 01:16:45,320 --> 01:16:48,770 Так як вы спасылацца рэчы ўнутры аб'екта JSON з'яўляецца з пункту. 1685 01:16:48,770 --> 01:16:53,114 >> АЎДЫТОРЫЯ: Вы можаце таксама выкарыстоўваць сінтаксіс масіва. 1686 01:16:53,114 --> 01:16:54,050 >> DAVIN: Добра, добра. 1687 01:16:54,050 --> 01:16:57,544 >> GABE: Вы таксама можаце выкарыстоўваць CS50 кранштэйн, радок, як двукоссі. 1688 01:16:57,544 --> 01:16:59,210 Аўдыторыя: Я думаю, што гэта супадае з PHP. 1689 01:16:59,210 --> 01:17:00,293 GABE: Гэта адно і тое ж. 1690 01:17:00,293 --> 01:17:02,487 DAVIN: Выдатна! 1691 01:17:02,487 --> 01:17:03,945 Але вы ўбачыце гэта ў іншых месцах. 1692 01:17:03,945 --> 01:17:08,990 1693 01:17:08,990 --> 01:17:10,480 Так, так трымаць. 1694 01:17:10,480 --> 01:17:13,330 Гэта тое, што я толькі што сказаў. 1695 01:17:13,330 --> 01:17:17,840 Так у прыкладзе JavaScript JQuery. 1696 01:17:17,840 --> 01:17:19,440 Так што гэта мой DOM, праўда? 1697 01:17:19,440 --> 01:17:22,290 1698 01:17:22,290 --> 01:17:25,410 Рэальны хуткі, так што я павінен галава, прывітанне свет, цела. 1699 01:17:25,410 --> 01:17:26,160 У мяне ёсць кнопка. 1700 01:17:26,160 --> 01:17:27,870 Ён кажа: "душы на мяне", таму я хачу, каб падштурхнуць яе. 1701 01:17:27,870 --> 01:17:29,745 І я хачу, каб нешта зрабіць калі ён націснуў. 1702 01:17:29,745 --> 01:17:31,220 Справа, побач. 1703 01:17:31,220 --> 01:17:34,630 >> Права, так што гэта мая JavaScript. 1704 01:17:34,630 --> 01:17:37,790 Так JQuery гэта проста лягчэй спосаб напісаць JavaScript. 1705 01:17:37,790 --> 01:17:40,920 Так што гэта, і тое, што я збіраюся паказаць Вы ў наступны раз, будзе JQuery, 1706 01:17:40,920 --> 01:17:41,930 ідэнтычныя. 1707 01:17:41,930 --> 01:17:43,990 Такім чынам, яны будуць рабіць тое ж самае. 1708 01:17:43,990 --> 01:17:45,974 Проста JQuery, як правіла, крыху лягчэй. 1709 01:17:45,974 --> 01:17:47,140 Людзі, як правіла, падабаецца больш. 1710 01:17:47,140 --> 01:17:48,390 Ён мае шмат функцыянальных магчымасцяў. 1711 01:17:48,390 --> 01:17:49,830 Такім чынам, людзі, як правіла, выкарыстоўваць JQuery. 1712 01:17:49,830 --> 01:17:53,270 Вы ўсе прывыклі JQuery ў мінулым Р-мноства. 1713 01:17:53,270 --> 01:17:54,270 Дык што ж гэта будзе рабіць? 1714 01:17:54,270 --> 01:17:56,580 Што гэта будзе JavaScript-- так гэта проста JavaScript. 1715 01:17:56,580 --> 01:17:57,430 Што гэта будзе рабіць? 1716 01:17:57,430 --> 01:18:00,600 1717 01:18:00,600 --> 01:18:03,450 Што ён будзе рабіць? 1718 01:18:03,450 --> 01:18:04,890 >> Такім чынам, спачатку вы бачыце акно OnLoad. 1719 01:18:04,890 --> 01:18:05,390 Дакладна? 1720 01:18:05,390 --> 01:18:06,640 Такім чынам, мы не бачым, што і раней. 1721 01:18:06,640 --> 01:18:09,380 Дык гэта будзе чакаць да цэлых нагрузак акно. 1722 01:18:09,380 --> 01:18:12,770 Дык гэта будзе чакаць да таго часу, нагрузка HTML, ўсе выявы 1723 01:18:12,770 --> 01:18:13,770 перш чым ён робіць што-небудзь. 1724 01:18:13,770 --> 01:18:16,050 Такім чынам, давайце казаць наш DOM загружаны. 1725 01:18:16,050 --> 01:18:17,270 Усё ёсць. 1726 01:18:17,270 --> 01:18:19,080 Тады што адбудзецца? 1727 01:18:19,080 --> 01:18:19,922 Так? 1728 01:18:19,922 --> 01:18:22,880 >> З'яўляецца кнопка: аўдыторыі. 1729 01:18:22,880 --> 01:18:25,201 >> DAVIN: кнопка ўжо ёсць. 1730 01:18:25,201 --> 01:18:26,700 Так, так кнопка ўжо ёсць. 1731 01:18:26,700 --> 01:18:31,190 Але гэта будзе казаць, Добра, калі я націсну кнопку, 1732 01:18:31,190 --> 01:18:33,650 так кнопка ўжо там, як гэты HTML-тэга. 1733 01:18:33,650 --> 01:18:35,980 Пачакайце, вярніцеся сапраўды хутка. 1734 01:18:35,980 --> 01:18:39,470 Гэты тэг права права тут будзе кнопка ўжо. 1735 01:18:39,470 --> 01:18:40,810 Там ужо Кнопка. 1736 01:18:40,810 --> 01:18:44,120 Але тады, JavaScript тэг, прама тут, 1737 01:18:44,120 --> 01:18:46,160 ён кажа, добра, я хачу каб атрымаць элемент па ідэнтыфікатару, 1738 01:18:46,160 --> 01:18:50,300 так кнопка пошуку проста кажа, добра, я хачу адлюстраваць гэтую зменную з гэтай кнопкай. 1739 01:18:50,300 --> 01:18:53,120 Так што пераменная проста просты спосаб атрымаць доступ да гэтай кнопцы. 1740 01:18:53,120 --> 01:18:57,300 І я кажу, добра, калі я націсну, што Кнопка, так што калі я націскаю гэты элемент, 1741 01:18:57,300 --> 01:18:59,560 і гэты элемент ставіцца да Кнопка, калі я націсну яе, 1742 01:18:59,560 --> 01:19:00,875 то я хачу, каб выклікаць функцыю. 1743 01:19:00,875 --> 01:19:03,500 Вось адзін з тых, хто ананімна функцыі якіх мы гаварылі. 1744 01:19:03,500 --> 01:19:04,840 >> Проста патэлефануеце некаторую функцыю. 1745 01:19:04,840 --> 01:19:08,840 Унутры гэтай функцыі, у асноўным тое, што мы бачылі шмат, папярэджанне. 1746 01:19:08,840 --> 01:19:10,477 Вы націскаеце на кнопку пошуку. 1747 01:19:10,477 --> 01:19:12,060 Гэта будзе ў асноўным маюць кнопку. 1748 01:19:12,060 --> 01:19:13,040 Вы пстрыкніце па ім. 1749 01:19:13,040 --> 01:19:14,040 Вы атрымліваеце тое папярэджанне. 1750 01:19:14,040 --> 01:19:14,850 X па-за. 1751 01:19:14,850 --> 01:19:15,754 Гэта так. 1752 01:19:15,754 --> 01:19:16,254 Так? 1753 01:19:16,254 --> 01:19:21,980 >> АЎДЫТОРЫЯ: Так што, калі вы паклалі сцэнар [Неразборліва], тэг скрыпт у HTML? 1754 01:19:21,980 --> 01:19:24,300 >> DAVIN: Вы можаце паставіць скрыпт Тэг прама ў галаву 1755 01:19:24,300 --> 01:19:30,667 таму што ў вас ёсць гэтая OnLoad. 1756 01:19:30,667 --> 01:19:32,000 Гэта таксама, што ў вас ёсць пстрычка. 1757 01:19:32,000 --> 01:19:34,166 Дык гэта будзе чакаць да таго часу, Вы націскаеце на нешта. 1758 01:19:34,166 --> 01:19:37,470 Але OnLoad проста каб быць у бяспецы, каб зрабіць што ўсе грузы ў ваш HTML 1759 01:19:37,470 --> 01:19:38,170 загадзя. 1760 01:19:38,170 --> 01:19:39,247 Так? 1761 01:19:39,247 --> 01:19:40,330 Вы хочаце, каб нешта сказаць? 1762 01:19:40,330 --> 01:19:41,080 >> GABE: [неразборліва]. 1763 01:19:41,080 --> 01:19:42,485 DAVIN: Так. 1764 01:19:42,485 --> 01:19:45,426 >> АЎДЫТОРЫЯ: Так OnLoad пазбягае вызначэнне кнопку пошуку з зменнай 1765 01:19:45,426 --> 01:19:49,930 , Проста кажучы document.getElementById Кнопка пошуку кропак [неразборліва]. 1766 01:19:49,930 --> 01:19:52,320 >> DAVIN: Вызначана, але потым ваша радок проста атрымлівае велізарную. 1767 01:19:52,320 --> 01:19:55,553 Дакладна, так што гэта проста зрабіць яго прасцей для вас, так. 1768 01:19:55,553 --> 01:19:56,053 Так? 1769 01:19:56,053 --> 01:19:57,886 >> АЎДЫТОРЫЯ: Адкуль мы стварыць window.onload? 1770 01:19:57,886 --> 01:19:58,951 Або document.ready? 1771 01:19:58,951 --> 01:20:00,590 >> DAVIN: Так, ёсць. 1772 01:20:00,590 --> 01:20:02,094 Так, ёсць, я праверыў. 1773 01:20:02,094 --> 01:20:03,710 >> GABE: не для іх, каб клапаціцца аб. 1774 01:20:03,710 --> 01:20:06,970 >> DAVIN: Добра, так што я збіраюся каб сказаць вам, у любым выпадку. 1775 01:20:06,970 --> 01:20:11,005 Таму ў асноўным, толькі ў цэлым, так window.onload не чакае, пакуль ваш DOM, усё 1776 01:20:11,005 --> 01:20:12,180 Ваш HTML, грузы. 1777 01:20:12,180 --> 01:20:13,513 Гэта не чакае, пакуль вашыя выявы нагрузкай. 1778 01:20:13,513 --> 01:20:14,930 Гэта не чакае, пакуль усе нагрузкі. 1779 01:20:14,930 --> 01:20:18,410 document.ready, ён проста чакае, пакуль вашыя DOM нагрузак. 1780 01:20:18,410 --> 01:20:22,190 Пасля таго, як HTML усё ёсць, адзін раз Ваш DOM ёсць, пачынае працаваць. 1781 01:20:22,190 --> 01:20:23,400 Вось і ўся розніца. 1782 01:20:23,400 --> 01:20:24,700 >> GABE: Хуткі стан сьвядомасьці праверыць тут. 1783 01:20:24,700 --> 01:20:29,060 Так што гэта можна ўбачыць выгляд як радкі кода, ці не так? 1784 01:20:29,060 --> 01:20:33,600 Таму што гэта window.onload роўна кучу рэчаў. 1785 01:20:33,600 --> 01:20:39,030 Калі JavaScript, пра гэта гаворыцца праўда ці ілжыва, функцыя запускаецца на выкананне. 1786 01:20:39,030 --> 01:20:40,020 False. 1787 01:20:40,020 --> 01:20:40,920 ОК? 1788 01:20:40,920 --> 01:20:44,470 Што тут адбываецца, вы проста праездам Гэтая функцыя, як ананімныя функцыі 1789 01:20:44,470 --> 01:20:45,300 у window.onload. 1790 01:20:45,300 --> 01:20:48,480 А потым, калі ён збіраецца на самой справе атрымаць выкананы? 1791 01:20:48,480 --> 01:20:49,600 Калі акно грузы. 1792 01:20:49,600 --> 01:20:50,420 Гэта падзея. 1793 01:20:50,420 --> 01:20:52,460 Дык вось закон т, у чым мы казаў раней, ці не так? 1794 01:20:52,460 --> 01:20:54,580 Таму, калі адбываецца падзея, Функцыя здараецца. 1795 01:20:54,580 --> 01:20:55,746 Тое ж самае і з OnClick. 1796 01:20:55,746 --> 01:20:59,510 1797 01:20:59,510 --> 01:21:03,130 >> DAVIN: Такім чынам, хто-то ўзяў ад document.ready. 1798 01:21:03,130 --> 01:21:04,698 Але гэта будзе дакладная same-- 1799 01:21:04,698 --> 01:21:06,864 АЎДЫТОРЫЯ: знак даляра, што document.ready. 1800 01:21:06,864 --> 01:21:07,710 Гэта ярлык. 1801 01:21:07,710 --> 01:21:08,501 >> DAVIN: О, што гэта? 1802 01:21:08,501 --> 01:21:10,880 1803 01:21:10,880 --> 01:21:15,500 OK, гэта азначае, document.ready, ярлык. 1804 01:21:15,500 --> 01:21:19,660 Але гэта тое ж самае, window.onload што мала розніцы, акрамя 1805 01:21:19,660 --> 01:21:20,680 Я сказаў табе. 1806 01:21:20,680 --> 01:21:21,870 І гэта JQuery. 1807 01:21:21,870 --> 01:21:25,190 Так што гэта сапраўды такі ж thing-- гэта JavaScript. 1808 01:21:25,190 --> 01:21:29,500 Гэта просто-- некаторыя людзі думаюць пра гэта як больш лёгкі вага, стыльны версія 1809 01:21:29,500 --> 01:21:32,370 што ёсць шмат функцыянальнасці што вы, верагодна, выкарыстоўваць. 1810 01:21:32,370 --> 01:21:34,500 Так што гэта робіць тую ж самую рэч. 1811 01:21:34,500 --> 01:21:37,110 >> Так рэчы накшталт пазначыць. 1812 01:21:37,110 --> 01:21:40,364 Такім чынам, у іншым прыкладзе мы было document.getElementById, 1813 01:21:40,364 --> 01:21:42,280 так што нам прыйшлося так доўга Радок, збіраецца атрымаць 1814 01:21:42,280 --> 01:21:44,290 элемент любымі ID мае. 1815 01:21:44,290 --> 01:21:46,470 Вось замененыя гэтым Тэлефануйце прама тут. 1816 01:21:46,470 --> 01:21:50,860 Такім чынам, вы бачыце знак даляра, тады вы ўбачыце цытата, хэштэгу. 1817 01:21:50,860 --> 01:21:52,370 Хэштэгу заўсёды селектара. 1818 01:21:52,370 --> 01:21:54,730 Гэта кажа, добра, гэта павінна зрабіць з ID. 1819 01:21:54,730 --> 01:21:56,120 Што селектара для класа? 1820 01:21:56,120 --> 01:21:57,190 >> АЎДЫТОРЫЯ: Dot. 1821 01:21:57,190 --> 01:21:57,960 >> DAVIN: Dot, права. 1822 01:21:57,960 --> 01:22:01,950 Калі вы толькі збіраецеся выбраць тэг, што гэта? 1823 01:22:01,950 --> 01:22:03,310 Гэта проста тэг, дакладна. 1824 01:22:03,310 --> 01:22:05,560 А вы маглі б выкарыстоўваць, што тут, як добра. 1825 01:22:05,560 --> 01:22:08,560 >> GABE: І па тэгу, мы маем на ўвазе як DIV, напрыклад, або галаву. 1826 01:22:08,560 --> 01:22:11,500 >> DAVIN: або цела, або р або што-небудзь падобнае, так. 1827 01:22:11,500 --> 01:22:14,390 Дык вось, добра, замест таго каб сказаць document.getElementById, 1828 01:22:14,390 --> 01:22:16,500 гэта проста дакладна такая ж рэч. 1829 01:22:16,500 --> 01:22:17,990 Проста ў JQuery, гэта карацей. 1830 01:22:17,990 --> 01:22:19,860 Так што гэта прасцей. 1831 01:22:19,860 --> 01:22:23,420 Такім чынам, не больш за OnClick, проста націсніце кнопку. 1832 01:22:23,420 --> 01:22:26,320 Функцыя JQuery, выклікаць гэтую функцыю. 1833 01:22:26,320 --> 01:22:27,580 Папярэджанне з'яўляецца сапраўды такі ж. 1834 01:22:27,580 --> 01:22:29,452 Так што гэта крыху менш, або ледзь-ледзь 1835 01:22:29,452 --> 01:22:32,410 карацей, трохі bit-- людзі думаюць, гэта крыху лягчэй выпісаць, 1836 01:22:32,410 --> 01:22:34,600 крыху лягчэй для разумення. 1837 01:22:34,600 --> 01:22:35,640 Але гэта JQuery. 1838 01:22:35,640 --> 01:22:37,887 Шмат людзей атрымліваюць мала крыху заблытаўся і непакояцца 1839 01:22:37,887 --> 01:22:40,220 і яны думаюць, добра, JQuery адрозніваецца ад JavaScript. 1840 01:22:40,220 --> 01:22:42,136 Я павінен памятаць, гэта гэта дзве розныя рэчы. 1841 01:22:42,136 --> 01:22:42,740 Гэта не. 1842 01:22:42,740 --> 01:22:45,315 Я маю на ўвазе, гэта іншае сінтаксіс. 1843 01:22:45,315 --> 01:22:46,970 Але JQuery з'яўляецца JavaScript. 1844 01:22:46,970 --> 01:22:50,050 Гэта проста, здавалася б, лепшы варыянт, што 1845 01:22:50,050 --> 01:22:51,967 можа быць прасцей зразумець, што людзі выкарыстоўваюць. 1846 01:22:51,967 --> 01:22:53,716 GABE: Так, быць Шчыра кажучы, гэта знак даляра 1847 01:22:53,716 --> 01:22:57,240 што вы бачыце ў JQuery, гэта проста Імя функцыі, што JQuery вызначае. 1848 01:22:57,240 --> 01:22:58,614 Гэта не мае нічога асаблівага. 1849 01:22:58,614 --> 01:23:03,140 Ці сапраўды гэта проста імя функцыі, гэтак жа, як вы маглі б вызначыць знак даляра. 1850 01:23:03,140 --> 01:23:05,670 >> DAVIN: Так, так казалі пра гэта. 1851 01:23:05,670 --> 01:23:06,680 Некаторыя карысныя рэчы. 1852 01:23:06,680 --> 01:23:10,414 Я, азіраючыся на старых віктарынах. 1853 01:23:10,414 --> 01:23:13,080 У апошнія пару віктарыны, яны давялося выкарыстоўваць рэчы, як гэта. 1854 01:23:13,080 --> 01:23:15,230 Так document.ready, так пераканайцеся, што ўсё ў 1855 01:23:15,230 --> 01:23:17,410 загружаны, перш чым пачаць рабіць рэчы. 1856 01:23:17,410 --> 01:23:20,120 Выберыце ID, або абярыце клас, гэта было б проста 1857 01:23:20,120 --> 01:23:24,020 быць цытата кропка некаторы клас, канец цытаты. 1858 01:23:24,020 --> 01:23:26,580 Адправіць, так што калі вы адпраўцы формы і выклік 1859 01:23:26,580 --> 01:23:28,830 Гэтая функцыя пасля форме ўяўляе. 1860 01:23:28,830 --> 01:23:34,210 Значэнне, так што давайце казаць, што я меў форму ўяўленне, як імя карыстальніка, адрас электроннай пошты, 1861 01:23:34,210 --> 01:23:34,950 усё роўна. 1862 01:23:34,950 --> 01:23:36,010 У мяне было тэкставае поле. 1863 01:23:36,010 --> 01:23:37,670 Так што я друкую ў гэтым тэкставым акне. 1864 01:23:37,670 --> 01:23:42,170 Ну, калі вы хочаце, каб атрымаць значэнне з гэтага тэкставага поля, можна выкарыстоўваць кропкавую Вал. 1865 01:23:42,170 --> 01:23:44,050 І потым, тут, Кропка HTML тое ж самае 1866 01:23:44,050 --> 01:23:47,710 гэта як дакумента кропкай getElementByID кропка innerHTML. 1867 01:23:47,710 --> 01:23:50,890 Так што збіраецца вярнуцца Вы HTML з гэтага ID. 1868 01:23:50,890 --> 01:23:55,080 Тут, вы проста выкарыстоўваць некаторыя ID ці нешта кропка HTML. 1869 01:23:55,080 --> 01:23:56,930 Гэта будзе атрымаць HTML ад гэтага элемента. 1870 01:23:56,930 --> 01:24:00,130 Калі вы хочаце, каб затым змяніць што HTML, вы можаце перадаць яму сёе-тое. 1871 01:24:00,130 --> 01:24:05,600 Такім чынам, вы б як кропка HTML, а затым ўнутры, цытаты, новы HTML або што-то. 1872 01:24:05,600 --> 01:24:07,490 >> GABE: Такім чынам, AJAX. 1873 01:24:07,490 --> 01:24:10,347 Мне вельмі падабаецца, каб зразумець AJAX сапраўды добра. 1874 01:24:10,347 --> 01:24:12,430 Таму я хачу вас, хлопцы, зразумець AJAX сапраўды добра. 1875 01:24:12,430 --> 01:24:14,221 Таму што, калі вы гэта зробіце, Вы ў значнай ступені адбываецца 1876 01:24:14,221 --> 01:24:16,810 каб зразумець усё, што мае справу з HTTP, PHP, 1877 01:24:16,810 --> 01:24:21,080 JavaScript, таму што ўсе прыходзіць разам у AJAX. 1878 01:24:21,080 --> 01:24:25,130 AJAX не мова. 1879 01:24:25,130 --> 01:24:27,000 AJAX з'яўляецца метад. 1880 01:24:27,000 --> 01:24:31,690 І ён выкарыстоўвае мноства розных інструментаў. 1881 01:24:31,690 --> 01:24:35,090 AJAX расшыфроўваецца асінхронны JavaScript XML. 1882 01:24:35,090 --> 01:24:36,730 Так метад, мова, дадзеныя. 1883 01:24:36,730 --> 01:24:40,610 >> Так асноўнага мовы, які мы выкарыстоўваем у AJAX, каб выклікаць усё 1884 01:24:40,610 --> 01:24:42,830 і апрацоўваць ўсе пазней гэта JavaScript. 1885 01:24:42,830 --> 01:24:45,160 Вось чаму ён ставіцца вельмі блізка да JavaScript. 1886 01:24:45,160 --> 01:24:49,810 А потым асінхронны з'яўляецца таму што мы не зрабіць гэта 1887 01:24:49,810 --> 01:24:51,980 ўсё адразу, калі мы загружаем старонку. 1888 01:24:51,980 --> 01:24:57,190 Гэта рэч, якую мы можам рабіць тое, накшталт у паралель. 1889 01:24:57,190 --> 01:24:59,725 Асноўная ідэя AJAX з'яўляецца тое, што вы хочаце 1890 01:24:59,725 --> 01:25:02,170 яго, каб атрымаць пэўную інфармацыю. 1891 01:25:02,170 --> 01:25:06,450 Напрыклад, калі вы ўводзіце новы Імя карыстальніка пры рэгістрацыі імя карыстальніка, 1892 01:25:06,450 --> 01:25:08,520 Маё імя карыстальніка abc123. 1893 01:25:08,520 --> 01:25:11,671 А потым, у канцы форма, вы павінны націснуць кнопку Адправіць. 1894 01:25:11,671 --> 01:25:14,420 І гэта было зайсці на сервер, а затым праверыць, калі ў базе дадзеных, 1895 01:25:14,420 --> 01:25:15,594 абв123 ўжо ёсць. 1896 01:25:15,594 --> 01:25:18,510 І калі гэта ўжо ёсць, ён кажа, імя карыстальніка ўжо ў базе дадзеных. 1897 01:25:18,510 --> 01:25:21,010 А яны, вы павінны запоўніць з усёй форме зноў. 1898 01:25:21,010 --> 01:25:23,110 І гэта было вельмі, вельмі дрэнна. 1899 01:25:23,110 --> 01:25:25,440 >> А потым людзі кажуць, Добра, чаму мы не можам проста 1900 01:25:25,440 --> 01:25:29,560 зрабіць невялікі запыт HTTP, каб проста праверыць каб убачыць, калі гэты карыстальнік знаходзіцца ў базе дадзеных 1901 01:25:29,560 --> 01:25:32,080 перш чым карыстальнік павінен прадставіць усю форму? 1902 01:25:32,080 --> 01:25:36,350 Так, напрыклад, калі карыстальнік заканчвае ўводзіць abc123, 1903 01:25:36,350 --> 01:25:39,660 давайце проста зайсці на сервер мала трохі і проста атрымаць сапраўднае або ілжывае 1904 01:25:39,660 --> 01:25:43,080 з сервера, каб убачыць, калі гэта сапраўднае імя карыстальніка ці не. 1905 01:25:43,080 --> 01:25:49,250 ОК, так што гэта адна з галоўных выкарыстоўвае Аякса ў цяперашні час па-ранейшаму. 1906 01:25:49,250 --> 01:25:52,130 >> DAVIN: Так рэальны хуткі, у выклік Ajax ў JQuery, 1907 01:25:52,130 --> 01:25:54,770 Вы можа азначаць, што вы хачу, каб быць сінхроннымі. 1908 01:25:54,770 --> 01:25:56,330 Вы не павінны рабіць гэтага. 1909 01:25:56,330 --> 01:25:57,640 Але вы можаце зрабіць гэта. 1910 01:25:57,640 --> 01:25:59,277 І калі вы зрабілі гэта, што б адбылося? 1911 01:25:59,277 --> 01:26:01,610 Ну, напрыклад, калі вы атрымліваць навіны ці нешта, 1912 01:26:01,610 --> 01:26:05,464 Ваш браўзэр проста будзе чакаць пакуль што ўся выклік не будзе завершаны 1913 01:26:05,464 --> 01:26:08,130 замест таго, каб рабіць іншыя рэчы адразу ж пасля націску яго. 1914 01:26:08,130 --> 01:26:14,560 1915 01:26:14,560 --> 01:26:17,115 >> GABE: Гэта не праходзячы больш. 1916 01:26:17,115 --> 01:26:19,681 Божа мой. 1917 01:26:19,681 --> 01:26:20,180 Выбачайце! 1918 01:26:20,180 --> 01:26:22,810 1919 01:26:22,810 --> 01:26:23,601 Ага. 1920 01:26:23,601 --> 01:26:25,350 "У мінулым, кліент трэба запыце 1921 01:26:25,350 --> 01:26:26,840 Усе ўтрыманне вэб-сайта ". 1922 01:26:26,840 --> 01:26:28,210 Вось што я сказаў. 1923 01:26:28,210 --> 01:26:30,070 Гэта дазваляе нам адправіць Дадатковая GET або POST 1924 01:26:30,070 --> 01:26:32,140 запыты, не маючы перазагрузіць наш браўзэр. 1925 01:26:32,140 --> 01:26:34,806 Так, у рэшце рэшт, мы на самай справе робіць HTTP запыты 1926 01:26:34,806 --> 01:26:35,740 тут з дапамогай JavaScript. 1927 01:26:35,740 --> 01:26:39,700 Таму што раней, мы выкарыстоўвалі толькі наяўнасць змяніць HTML, якія ўжо прыйшлі. 1928 01:26:39,700 --> 01:26:43,110 І цяпер, мы можам выкарыстоўваць яго для ўзаемадзеяння з вэб-сервераў, а таксама. 1929 01:26:43,110 --> 01:26:46,140 Усё гэта адбываецца гэта ў нас ёсць кліент. 1930 01:26:46,140 --> 01:26:47,340 Дэвин з'яўляецца кліент. 1931 01:26:47,340 --> 01:26:50,797 І ў яго ёсць усе наяўнасць працуе, таму што HTML з'яўляецца нямым. 1932 01:26:50,797 --> 01:26:51,630 JavaScript разумны. 1933 01:26:51,630 --> 01:26:54,690 Так Дэвин Дэвин мае яго разумным частку і яго нямы частку. 1934 01:26:54,690 --> 01:26:57,590 Ён збіраецца выкарыстоўваць яго смарт ўдзел цяпер. 1935 01:26:57,590 --> 01:27:00,860 Ён збіраецца выкарыстоўваць наяўнасць на запыт, напрыклад, 1936 01:27:00,860 --> 01:27:04,340 Ці абв123 ў База дадзеных або няма. 1937 01:27:04,340 --> 01:27:08,450 >> Так Дэвин, калі ласка, ты проста дашліце мне запыт HTTP. 1938 01:27:08,450 --> 01:27:09,197 Дзякуй. 1939 01:27:09,197 --> 01:27:10,530 Таму ён проста паслаў запыт HTTP. 1940 01:27:10,530 --> 01:27:11,270 Вы бачыце, што? 1941 01:27:11,270 --> 01:27:14,700 І гэта толькі так жа, як што любы запыт HTTP пасылаецца. 1942 01:27:14,700 --> 01:27:16,830 Браўзэр, Google Chrome або што-то, гэта 1943 01:27:16,830 --> 01:27:19,570 ўбачым, што Дэвин-х спрабуе адправіць запыт HTTP, 1944 01:27:19,570 --> 01:27:20,930 дапаможа HM няшмат. 1945 01:27:20,930 --> 01:27:23,950 І, што збіраецца пайсці ўсе шляхі да сервера. 1946 01:27:23,950 --> 01:27:27,370 Цяпер, сервер будзе мець РНР тут, або любы іншы мову. 1947 01:27:27,370 --> 01:27:29,990 Гэтак жа, як у звычайным запыце HTTP. 1948 01:27:29,990 --> 01:27:31,950 Гэта ў значнай ступені нармальны запыт HTTP. 1949 01:27:31,950 --> 01:27:33,658 >> І потым, сервер збіраецца сказаць, добра, 1950 01:27:33,658 --> 01:27:37,270 Дэвин хоча мяне праверыць, ці з'яўляецца гэта абв123 ў базе дадзеных. 1951 01:27:37,270 --> 01:27:38,310 Ідзіце да мадэлі. 1952 01:27:38,310 --> 01:27:41,310 Мадэль кажа, што гэта не так. абв123 з'яўляецца добрым імя карыстальніка. 1953 01:27:41,310 --> 01:27:47,940 І потым, вэб-сервер будзе выкарыстоўваць PHP, каб зрабіць некаторую форму файла. 1954 01:27:47,940 --> 01:27:52,280 Гэта можа быць літаральна файл які змяшчае "так" у ім, ці "няма, 1955 01:27:52,280 --> 01:27:53,315 ці нешта падобнае. 1956 01:27:53,315 --> 01:27:54,190 Гэта можа быць любы файл. 1957 01:27:54,190 --> 01:27:57,080 >> Гэта можа быць, як я іду адправіць Дэвин карціну качка 1958 01:27:57,080 --> 01:28:01,200 калі ён знаходзіцца ў базе дадзеных і адправіць здымак хамяка 1959 01:28:01,200 --> 01:28:02,420 калі гэта не ў базе дадзеных. 1960 01:28:02,420 --> 01:28:04,294 Гэта было б роду нямы, але ён будзе працаваць. 1961 01:28:04,294 --> 01:28:07,030 ОК, так і Я пасылаю качку Дэвин. 1962 01:28:07,030 --> 01:28:08,150 Дэвин атрымаў качку. 1963 01:28:08,150 --> 01:28:13,330 А цяпер, хто збіраецца для апрацоўкі качку? 1964 01:28:13,330 --> 01:28:16,390 Разумны частка Дэвин зноў, так JavaScript, праўда? 1965 01:28:16,390 --> 01:28:18,620 JavaScript адпраўлена Запыт і JavaScript 1966 01:28:18,620 --> 01:28:22,300 будзе атрымліваць запыт і інтэрпрэтаваць яго ў якой-небудзь форме. 1967 01:28:22,300 --> 01:28:26,630 >> І ў гэтым сэнсе, гэта будзе кажуць, добра, калі качка, то я добра. 1968 01:28:26,630 --> 01:28:30,770 Калі хамяк, то я іду сказаць, няма, імя карыстальніка ўжо 1969 01:28:30,770 --> 01:28:31,970 існуе ў базе дадзеных. 1970 01:28:31,970 --> 01:28:33,845 Але, як правіла, вы не збіраецца адправіць качку. 1971 01:28:33,845 --> 01:28:36,740 Вы збіраецеся адправіць што-то трохі разумнейшыя. 1972 01:28:36,740 --> 01:28:40,320 І тое, што мы выкарыстоўваем XML. 1973 01:28:40,320 --> 01:28:42,690 А зусім нядаўна, мы выкарыстоўваем JSON. 1974 01:28:42,690 --> 01:28:45,629 JSON з'яўляецца проста JavaScript Object Notation, што 1975 01:28:45,629 --> 01:28:47,670 у асноўным вы атрымліваеце ўвесь аб'ект JavaScript. 1976 01:28:47,670 --> 01:28:50,820 І вы пакладзеце яго ў файл, гэтак жа, як што аб'ект CS50, што вы, хлопцы, не бачыў. 1977 01:28:50,820 --> 01:28:53,090 Вы ставіце яго ў файл, і Вы адпраўляеце яго на Дэвин. 1978 01:28:53,090 --> 01:28:55,850 >> Такім чынам, у гэтым выпадку, я б стварыць аб'ект JavaScript 1979 01:28:55,850 --> 01:28:59,570 і проста сказаць, існуе карыстальнік, так. 1980 01:28:59,570 --> 01:29:01,630 Або карыстальнік існуе, няма. 1981 01:29:01,630 --> 01:29:02,810 І адправіць яго назад да іх. 1982 01:29:02,810 --> 01:29:03,830 І чаму JSON? 1983 01:29:03,830 --> 01:29:07,330 Таму што чалавек, хто атрымлівае гэта 1984 01:29:07,330 --> 01:29:10,030 збіраецеся выкарыстоўваць наяўнасць апрацоўваць запыт. 1985 01:29:10,030 --> 01:29:14,970 І JavaScript працуе так добра, таму што гэта называецца JavaScript Object Notation. 1986 01:29:14,970 --> 01:29:15,470 Дакладна? 1987 01:29:15,470 --> 01:29:19,660 Такім чынам, ён можа проста выклікаць функцыю і атрымаць гэта прыемна аб'ект з адказу. 1988 01:29:19,660 --> 01:29:22,890 І потым, ён будзе ведаць, ці з'яўляецца што карыстальнік знаходзіцца ў базе дадзеных або няма. 1989 01:29:22,890 --> 01:29:25,230 >> Такім чынам, вы бачыце, усё гэта прыходзіць разам у вэб-сервер, 1990 01:29:25,230 --> 01:29:28,450 і тады адзін HTTP запыце і адзін адказ HTTP, і ўсё. 1991 01:29:28,450 --> 01:29:30,600 Таму пераканайцеся, што вы, хлопцы, зразумець гэты заклік AJAX 1992 01:29:30,600 --> 01:29:37,260 таму што гэта дапаможа вам зразумець усе паняццяў мы гаворым пра. 1993 01:29:37,260 --> 01:29:40,260 >> Дык вось прыклад Аякса з JQuery. 1994 01:29:40,260 --> 01:29:42,130 І вось, мы робім з GET JSON. 1995 01:29:42,130 --> 01:29:45,660 Такім чынам, мы не спрабуем атрымаць выява ката тут, ці качка. 1996 01:29:45,660 --> 01:29:48,110 Мы спрабуем, каб атрымаць файл у фармаце JSON. 1997 01:29:48,110 --> 01:29:51,184 І тады мы будзем чакаць да гэта зроблена, кропка зроблена. 1998 01:29:51,184 --> 01:29:52,850 Гэта азначае, што я чакаю адказу. 1999 01:29:52,850 --> 01:29:54,180 Гэта можа заняць некаторы час. 2000 01:29:54,180 --> 01:29:56,360 Затым, вы ўбачыце маленькую нагрузку. 2001 01:29:56,360 --> 01:29:59,340 Калі вы хочаце зрабіць, што ў вашым вэб-сайце. 2002 01:29:59,340 --> 01:30:01,440 Так кропка зроблена, і што потым адбываецца, калі гэта робіцца? 2003 01:30:01,440 --> 01:30:04,040 Вы праходзьце ў ананімны Функцыя, як мы бачылі раней. 2004 01:30:04,040 --> 01:30:07,800 Таму што робіцца гэта падзея, проста як пстрычка мышы або любы іншы, 2005 01:30:07,800 --> 01:30:08,710 для Jquery. 2006 01:30:08,710 --> 01:30:13,710 Так вы перадаеце гэтай функцыі з дадзеныя, тэкст, статус і jqXHR. 2007 01:30:13,710 --> 01:30:15,790 І ў асноўным, гэта толькі некаторыя зменныя 2008 01:30:15,790 --> 01:30:22,160 што вы можаце выкарыстоўваць у далейшым мець статус запыту HTTP, 2009 01:30:22,160 --> 01:30:24,470 дадзеныя, якія ён збіраецца адправіць назад да вас. 2010 01:30:24,470 --> 01:30:28,740 Тады вы зможаце пасля інтэрпрэтаваць яго і рабіць нешта значнае з ёй. 2011 01:30:28,740 --> 01:30:30,240 І калі гэта не атрымоўваецца, калі можа яна не справіцца? 2012 01:30:30,240 --> 01:30:33,780 Ну, калі запыт HTTP дае Вы 500 ці нешта падобнае. 2013 01:30:33,780 --> 01:30:37,420 Затым ён раскажа вам статус, які з ладу, што было, 2014 01:30:37,420 --> 01:30:38,420 і ўсялякія рэчы. 2015 01:30:38,420 --> 01:30:40,630 Вы павінны пераканацца, для апрацоўкі абодвух выпадках 2016 01:30:40,630 --> 01:30:42,770 у адваротным выпадку праграма сыходзіць з розуму. 2017 01:30:42,770 --> 01:30:45,820 >> DAVIN: Дык што, так, гэта менавіта тое, тое, што вы бачылі на апошняй р-набору. 2018 01:30:45,820 --> 01:30:49,720 Фактычны выклік AJAX знаходзіцца ў GET JSON. 2019 01:30:49,720 --> 01:30:50,587 Гэта выклік. 2020 01:30:50,587 --> 01:30:52,920 А потым, кропка зроблена, як ён правярае, калі ён паспяховы. 2021 01:30:52,920 --> 01:30:55,620 Калі ён апынецца паспяховым, вы хочаце зрабіць што-то з дадзенымі. 2022 01:30:55,620 --> 01:30:59,290 Вы атрымліваеце назад ад Дадзеныя запыту JSON. 2023 01:30:59,290 --> 01:31:00,600 Гэта тое, што ты вернешся. 2024 01:31:00,600 --> 01:31:04,470 Так што калі вы памятаеце з Р-мноства, Многія з вас былі як кранштэйн дадзеных я 2025 01:31:04,470 --> 01:31:06,302 або што-то, кропка спасылкі або назва. 2026 01:31:06,302 --> 01:31:08,260 Незалежна вяртаецца з гэтага JSON, незалежна ад 2027 01:31:08,260 --> 01:31:11,020 поля ў гэтым аб'екце JSON, гэта тое, што вы атрымліваеце назад. 2028 01:31:11,020 --> 01:31:12,394 Дадзеныя, што вы атрымліваеце назад. 2029 01:31:12,394 --> 01:31:15,510 Тэкст стану, толькі тое, што дазваляе даведацца, што здарылася. 2030 01:31:15,510 --> 01:31:20,570 І потым, jqXHR, вось толькі XML HTTP запыт JQuery. 2031 01:31:20,570 --> 01:31:21,990 Вось толькі як аб'ект. 2032 01:31:21,990 --> 01:31:23,932 А потым правал, гэтак жа, як Гейб сказаў. 2033 01:31:23,932 --> 01:31:27,140 GABE: У нашай маленькай прыкладзе abc123 проста праверыць, што ў базе дадзеных 2034 01:31:27,140 --> 01:31:32,260 ці не, дадзеныя будуць тое, што вы будзе рабіць, калі кропка дадзеных імя карыстальніка існуе, 2035 01:31:32,260 --> 01:31:37,720 што і ваш PHP Генерацыя Вы, калі імя кропка дадзеных карыстальніка існуе, то 2036 01:31:37,720 --> 01:31:40,880 Я збіраюся папярэдзіць, карыстальнік імем ўжо існуе. 2037 01:31:40,880 --> 01:31:44,300 У адваротным выпадку, я проста хачу, каб Карыстальнік працягнуць запоўніўшы форму. 2038 01:31:44,300 --> 01:31:47,860 2039 01:31:47,860 --> 01:31:50,820 ОК, бяспека, крута. 2040 01:31:50,820 --> 01:31:52,060 >> DAVIN: Хочаш, каб я? 2041 01:31:52,060 --> 01:31:54,500 >> GABE: Мне падабаецца гэта. 2042 01:31:54,500 --> 01:31:57,680 Так што-то, што выглядае знаёмым. 2043 01:31:57,680 --> 01:31:59,750 Мы амаль скончылі. 2044 01:31:59,750 --> 01:32:02,670 Так што гэта проста прыклад вы, хлопцы, бачылі ў класе. 2045 01:32:02,670 --> 01:32:04,860 Вы выкарыстоўвалі argv1 тут. 2046 01:32:04,860 --> 01:32:06,460 Вось як аргумент каманднага радка. 2047 01:32:06,460 --> 01:32:09,270 І мы MEM капіраванне, што у буфер памерам 12. 2048 01:32:09,270 --> 01:32:12,560 Што тут праблема? 2049 01:32:12,560 --> 01:32:13,660 Перапаўненне буфера! 2050 01:32:13,660 --> 01:32:15,400 Таму што ў нас буфер памерам 12. 2051 01:32:15,400 --> 01:32:18,400 argv1 можа мець памер у два мільярды. 2052 01:32:18,400 --> 01:32:19,960 Мы не робім якіх-небудзь памежны праверку. 2053 01:32:19,960 --> 01:32:24,970 Такім чынам, мы, магчыма, скапіяваць шмат памяці. 2054 01:32:24,970 --> 01:32:28,630 І мы будзем асабліва дрэнна пра гэта. 2055 01:32:28,630 --> 01:32:32,600 Што мы можам зрабіць, гэта вельмі, вельмі на ўвазе ў дадзеным выпадку? 2056 01:32:32,600 --> 01:32:33,278 Так? 2057 01:32:33,278 --> 01:32:36,528 АЎДЫТОРЫЯ: Частка двух мільярдаў рэчаў ўтрымлівае выкананы код, які вяртае 2058 01:32:36,528 --> 01:32:38,127 [Неразборліва]. 2059 01:32:38,127 --> 01:32:38,710 GABE: Цалкам дакладна. 2060 01:32:38,710 --> 01:32:41,110 Дык вось выгляд рэч, што людзі выкарыстоўваюць 2061 01:32:41,110 --> 01:32:43,344 для джейлбрейка iPhone, напрыклад. 2062 01:32:43,344 --> 01:32:44,260 Так што такія рэчы. 2063 01:32:44,260 --> 01:32:48,610 Таму што вы можаце проста зрабіць прыладу выканаць любы код, які вам падабаецца. 2064 01:32:48,610 --> 01:32:50,247 Выправіць, так выпраўленне лёгка. 2065 01:32:50,247 --> 01:32:51,330 Проста праверыць межы. 2066 01:32:51,330 --> 01:32:53,455 Вы праверце нуль, таму што мы заўсёды правяраем для NULL 2067 01:32:53,455 --> 01:32:54,940 калі мы маем справу з радкамі. 2068 01:32:54,940 --> 01:32:57,840 І потым, вы бераце Даўжыня радка раней. 2069 01:32:57,840 --> 01:33:00,150 І калі радок даўжыня дапушчальная радок 2070 01:33:00,150 --> 01:33:03,700 даўжыня, якая знаходзіцца ў межах 0 і 12, то мы добрыя. 2071 01:33:03,700 --> 01:33:07,144 >> DAVIN: Калі вы не правяраюць NULL, рэальны хуткі, што адбудзецца? 2072 01:33:07,144 --> 01:33:07,810 Гэта будзе SEG няспраўнасць. 2073 01:33:07,810 --> 01:33:10,850 Чаму гэта SEG віна? 2074 01:33:10,850 --> 01:33:12,510 Таму што вы тэлефануеце STRLEN на нуль. 2075 01:33:12,510 --> 01:33:13,010 GABE: Так. 2076 01:33:13,010 --> 01:33:16,490 2077 01:33:16,490 --> 01:33:19,630 Праўда ці хлусня, з дапамогай аднаго пароль добрай ідэяй. 2078 01:33:19,630 --> 01:33:20,430 >> АЎДЫТОРЫЯ: False. 2079 01:33:20,430 --> 01:33:21,150 >> GABE: False. 2080 01:33:21,150 --> 01:33:23,870 Выкарыстоўвайце мноства пароляў, і вялікія, доўгія. 2081 01:33:23,870 --> 01:33:26,050 Навясныя абразкі забеспячэння бяспекі. 2082 01:33:26,050 --> 01:33:27,080 >> АЎДЫТОРЫЯ: False. 2083 01:33:27,080 --> 01:33:27,749 >> GABE: False. 2084 01:33:27,749 --> 01:33:28,790 Гэта нічога не значыць. 2085 01:33:28,790 --> 01:33:30,480 Гэта проста значок. 2086 01:33:30,480 --> 01:33:32,824 SSL абараняе ад Чалавек у сярэднім нападзе. 2087 01:33:32,824 --> 01:33:33,490 АЎДЫТОРЫЯ: False. 2088 01:33:33,490 --> 01:33:34,110 GABE: False. 2089 01:33:34,110 --> 01:33:35,355 Такім чынам, усе тыя, з'яўляюцца рабіць. 2090 01:33:35,355 --> 01:33:38,324 2091 01:33:38,324 --> 01:33:39,490 Nice. 2092 01:33:39,490 --> 01:33:40,220 [Неразборліва] 2093 01:33:40,220 --> 01:33:42,500 Хочаце пагаварыць пра гэта? 2094 01:33:42,500 --> 01:33:43,259 Ваша чаргу. 2095 01:33:43,259 --> 01:33:45,050 Дэвин: Тыпы нападаў, чалавек у сярэдзіне. 2096 01:33:45,050 --> 01:33:47,134 Што чалавек у цэнтры нападу? 2097 01:33:47,134 --> 01:33:48,050 АЎДЫТОРЫЯ: [неразборліва]. 2098 01:33:48,050 --> 01:33:51,437 2099 01:33:51,437 --> 01:33:54,020 DAVIN: Калі вы пасылаеце HTTP Запыт, што яны маглі зрабіць гэта, ці не так? 2100 01:33:54,020 --> 01:33:57,890 Але калі вы адпраўляеце HTTPS, яны верагодна, не будзе ў стане зрабіць гэта. 2101 01:33:57,890 --> 01:33:59,952 Там шмат кропак ўздоўж вашага злучэння. 2102 01:33:59,952 --> 01:34:00,660 Вы павінны маршрутызатараў. 2103 01:34:00,660 --> 01:34:01,746 Вы павінны DNS-сервераў. 2104 01:34:01,746 --> 01:34:04,120 Калі хто-то ў стане фізічна см, што вы адпраўляеце, 2105 01:34:04,120 --> 01:34:06,140 дык хто-то зможа на самой справе атрымаць ад вас, 2106 01:34:06,140 --> 01:34:08,840 кліент і сервер, і Каб даведацца, што вы адпраўляеце, 2107 01:34:08,840 --> 01:34:10,298 гэта чалавек у цэнтры нападу. 2108 01:34:10,298 --> 01:34:14,287 Такім чынам, каб бачыць тое, што вы спрабуеце атрымаць ад сервер, ці можа see-- горш, 2109 01:34:14,287 --> 01:34:16,620 Вы маглі б быць у стане бачыць печыва ці нешта падобнае. 2110 01:34:16,620 --> 01:34:19,290 >> Так, напрыклад, калі Вы не карыстаецеся SSL, ён 2111 01:34:19,290 --> 01:34:21,900 маглі б убачыць Ваш сеанс ID печыва. 2112 01:34:21,900 --> 01:34:25,460 І гэта называецца зводу сесіі таму што ён бачыць свой ідэнтыфікатар печыва, 2113 01:34:25,460 --> 01:34:28,317 і тады ён зможа перайсці да таго, што вэб-сайт і прыкідвацца табе. 2114 01:34:28,317 --> 01:34:31,150 Таму што так жа, як у PHP, памятаеце, калі мы ўвайшлі ў сістэму, што мы робім? 2115 01:34:31,150 --> 01:34:33,340 Мы ўсталёўваем ідэнтыфікатар сеансу, роўны ID. 2116 01:34:33,340 --> 01:34:34,810 Так што ідэнтыфікуе вас. 2117 01:34:34,810 --> 01:34:38,300 Вось чаму вы бачыце свой партфель а не чый-небудзь партфель. 2118 01:34:38,300 --> 01:34:42,320 >> Ну, калі я магу атрымаць тое печыва, то я магу ўвайсці на гэтай старонцы. 2119 01:34:42,320 --> 01:34:45,380 І потым, я так і бачу вашы рэчы і пачаць купляць і прадаваць рэчы. 2120 01:34:45,380 --> 01:34:46,800 Дык вось зводу сесіі. 2121 01:34:46,800 --> 01:34:50,810 Але вы не павінны быць у стане to-- так што вы можа выкарыстоўваць чалавека ў сярэднім нападзе 2122 01:34:50,810 --> 01:34:52,290 нават калі яны выкарыстоўваюць SSL. 2123 01:34:52,290 --> 01:34:53,520 Але вы не павінны быць у стане. 2124 01:34:53,520 --> 01:34:56,580 Калі яны выкарыстоўваюць SSL, Вы не можаце перахоп сеансу. 2125 01:34:56,580 --> 01:34:58,927 Чаму? 2126 01:34:58,927 --> 01:35:01,135 Таму што ўсё гэта ў зашыфраваным выглядзе, ці не так? калі ён зашыфраваны, 2127 01:35:01,135 --> 01:35:03,509 і я ўсё яшчэ чалавек у сярэдні, я да гэтага часу атрымаць вашыя дадзеныя. 2128 01:35:03,509 --> 01:35:04,279 Добра. 2129 01:35:04,279 --> 01:35:05,070 Але ён зашыфраваны. 2130 01:35:05,070 --> 01:35:07,750 Так што я не магу яго выкарыстоўваць. 2131 01:35:07,750 --> 01:35:09,840 Так што гэта два. 2132 01:35:09,840 --> 01:35:11,544 >> Рэальны хуткі, Cross Site падробка запыту. 2133 01:35:11,544 --> 01:35:13,960 Вось толькі, калі ёсць спасылка і што спасылка робіць што-то 2134 01:35:13,960 --> 01:35:14,890 што вы не думаю, што гэта трэба рабіць. 2135 01:35:14,890 --> 01:35:18,150 Так, напрыклад, калі спасылка было збіраецца купіць акцыі або прадаць акцыі, 2136 01:35:18,150 --> 01:35:19,360 і вы не ведаеце, што. 2137 01:35:19,360 --> 01:35:22,040 Вы націснулі на спасылку, накіраваў запыт, купіў 2138 01:35:22,040 --> 01:35:24,240 або прададзеныя тое, што Вы не хацелі рабіць. 2139 01:35:24,240 --> 01:35:25,120 Вось што. 2140 01:35:25,120 --> 01:35:30,720 >> Межсайтовый скріптінга, так вось, вы перадаеце ў праз пераменную Q, 2141 01:35:30,720 --> 01:35:33,510 замест перадачы ў якой-то кошту, можа быць, Q, як імя. 2142 01:35:33,510 --> 01:35:36,560 Такім чынам, замест праходжання Q роўных Дэвин ці нешта падобнае, 2143 01:35:36,560 --> 01:35:38,740 Калі вы не выкарыстоўваеце HTML Спецыяльныя сімвалы, калі вы 2144 01:35:38,740 --> 01:35:43,100 не пазбегнуць гэтага, каб пераканацца, што гэта Добра, тады я мог бы перайсці ў замест гэтага, 2145 01:35:43,100 --> 01:35:46,910 скажам тут, што я кажу друку або што-то падобнае, 2146 01:35:46,910 --> 01:35:51,070 то я мог бы прайсці тут выклік скрыпту. 2147 01:35:51,070 --> 01:35:53,140 >> Такім чынам, замест таго, каб проста атрымаць зменную, 2148 01:35:53,140 --> 01:35:54,960 Я б тады выканаць гэты сцэнар выклік. 2149 01:35:54,960 --> 01:35:57,065 Так ўнутры гэтага сцэнара тэлефануйце, што ён робіць? 2150 01:35:57,065 --> 01:36:00,190 Дакумент кропка размяшчэнне, што збіраецца змяніць размяшчэнне дакумента. 2151 01:36:00,190 --> 01:36:02,290 Так што я збіраюся перанакіраваць дзе-то ў іншым месцы. 2152 01:36:02,290 --> 01:36:08,170 Гэта называецца дрэнны хлопец у Гэты прыклад, вельмі добра. 2153 01:36:08,170 --> 01:36:10,536 Не мог думаць аб слове. 2154 01:36:10,536 --> 01:36:12,410 І потым, што яшчэ горш тое, што я збіраюся 2155 01:36:12,410 --> 01:36:16,832 каб затым ўсталяваць печыва, што некаторыя Пераменная мяне ёсць на гэтым сайце. 2156 01:36:16,832 --> 01:36:19,040 Я збіраюся ўсталяваць яго роўным ў дакуменце кропка печыва. 2157 01:36:19,040 --> 01:36:20,660 Таму, я збіраюся каб скрасці вашы печыва. 2158 01:36:20,660 --> 01:36:22,951 І я збіраюся перанакіраваць некаторая інфармацыя на вэб-сайт 2159 01:36:22,951 --> 01:36:25,120 што вы не павінны атрымліваць доступ да. 2160 01:36:25,120 --> 01:36:29,250 І ўсё гэта адбываецца таму, што вы не пазбегнуць, што вы бачылі. 2161 01:36:29,250 --> 01:36:29,910 Так? 2162 01:36:29,910 --> 01:36:32,160 >> АЎДЫТОРЫЯ: Так проста зрабіць гэта ясна, што гэта 2163 01:36:32,160 --> 01:36:37,550 vulnerable.com, што ўразлівая да гэтага. 2164 01:36:37,550 --> 01:36:39,300 Так што спасылка можа апынуцца на любой старонцы. 2165 01:36:39,300 --> 01:36:42,200 Хто-то націскае на яе, ідзе на vulnerable.com. 2166 01:36:42,200 --> 01:36:43,700 У вас ёсць печыва vulnerable.com. 2167 01:36:43,700 --> 01:36:46,670 Скажам Facebook з'яўляецца ўразлівыя, таму facebook.com. 2168 01:36:46,670 --> 01:36:48,310 У вас ёсць Facebook печыва. 2169 01:36:48,310 --> 01:36:50,925 Што гэта робіць, вы будзе facebook.com, 2170 01:36:50,925 --> 01:36:53,990 гэта адразу перасылак Вам badguy.com, 2171 01:36:53,990 --> 01:36:57,182 але ў тым ліку інфармацыю печыва. 2172 01:36:57,182 --> 01:36:59,310 Так што гэта хутка рэдырэкт, але ваш Facebook печыва 2173 01:36:59,310 --> 01:37:02,572 ўваходзіць у якія перанакіроўваюць, і вось як яны [неразборліва]. 2174 01:37:02,572 --> 01:37:04,280 GABE: Так, ёсць некаторыя вельмі сярэднія рэчы 2175 01:37:04,280 --> 01:37:06,070 што людзі могуць зрабіць, калі ёсць такая. 2176 01:37:06,070 --> 01:37:09,190 Напрыклад, калі Facebook дазваляецца каб усе змяніць імя карыстальніка, 2177 01:37:09,190 --> 01:37:11,680 і яны не рабіць нічога санітарныя праверкі, так што вы 2178 01:37:11,680 --> 01:37:16,810 можа ўставіць рэч JavaScript, што мяняе ваш вобраз на хамяка. 2179 01:37:16,810 --> 01:37:22,590 І гэта ўстаўляе ж наяўнасць у кожнага, хто праглядае вашу старонку. 2180 01:37:22,590 --> 01:37:26,400 Такім чынам, усе, хто праглядае старонку мае адно і тое ж імя карыстальніка. 2181 01:37:26,400 --> 01:37:30,104 І таму, што гэта вірус, ён распаўсюджваецца ў геаметрычнай прагрэсіі. 2182 01:37:30,104 --> 01:37:32,270 DAVIN: Мы будзем прапусціць апошні Адзін з іх, а затым мы зрабілі. 2183 01:37:32,270 --> 01:37:34,120 Так што гэта проста яшчэ адзін прыклад. 2184 01:37:34,120 --> 01:37:36,120 Так што гэта, што яны не пазбегнуць іх SQL табліцу. 2185 01:37:36,120 --> 01:37:37,090 Такім чынам, вы можаце пакінуць яго. 2186 01:37:37,090 --> 01:37:38,805 Такім чынам, вы хочаце, каб пазбегнуць рэчы. 2187 01:37:38,805 --> 01:37:44,010 Гэта было ў папярэднім прыкладзе з межсайтовый скріптінга. 2188 01:37:44,010 --> 01:37:45,430 На жаль, мы пабеглі трохі позна. 2189 01:37:45,430 --> 01:37:46,870 Заўтра, прабачце! 2190 01:37:46,870 --> 01:37:48,560 Заўтра мы павінны мець прыёмныя гадзіны. 2191 01:37:48,560 --> 01:37:50,870 Так прыёмныя гадзіны ў Cabbot 8:00 да 11:00. 2192 01:37:50,870 --> 01:37:55,240 У працоўны час строга для віктарыны пытанні. 2193 01:37:55,240 --> 01:37:56,587