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 Дейвин: Хей, мога да кажа, нещо много бързо? 10 00:00:24,000 --> 00:00:25,215 Хана: Да, Давин ще да кажа нещо много бързо. 11 00:00:25,215 --> 00:00:25,780 Дейвин: Съжалявам. 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 Отивам да обхващат всеки един от C неща, които е, че първата колона. 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 направя тези соченето така че ние не Следете нивото на гърба на списъка. 63 00:03:00,390 --> 00:03:04,122 Добре, на всички въпроси, с само поединично свързани списъци? 64 00:03:04,122 --> 00:03:06,060 Awesome, OK, хладно. 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 Така със сигурност се получава за кодиране малко в C. 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 OK, хладно. 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 Хана: Beautiful. 106 00:05:00,590 --> 00:05:03,670 Искаме да започнем от главата, която Казах ще се съхранява в списъка. 107 00:05:03,670 --> 00:05:04,170 Awesome. 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 докато намерим възел с стойност н че искате да изтриете. 111 00:05:12,870 --> 00:05:13,540 OK? 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 >> Аудитория: A контур. 115 00:05:20,979 --> 00:05:21,840 >> Хана: A контур. 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 OK, и ние знаем, че сме постигнали В края на нашия списък, когато това, което? 119 00:05:30,919 --> 00:05:32,210 Публика: Когато стрелката е нищожна. 120 00:05:32,210 --> 00:05:33,418 Хана: Когато стрелката е нищожна. 121 00:05:33,418 --> 00:05:34,320 Красива, аз го обичам. 122 00:05:34,320 --> 00:05:35,110 OK, хладно. 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 OK, хладно. 127 00:05:46,610 --> 00:05:48,690 Каква е следващата? 128 00:05:48,690 --> 00:05:51,950 >> Така че ние знаем, че искате да изтриете възловата точка, която има стойност п. 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 Просто бих казал, ако показалеца, и след това, ако I искам да отида на стойност от показалеца, 132 00:06:02,210 --> 00:06:08,940 Аз просто се стрелка п, п е равно, параметърът 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 OK, просто създаване ми свързан списък тук. 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 OK. 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 OK, там отиваме. 156 00:07:18,330 --> 00:07:19,910 Добре, имам го. 157 00:07:19,910 --> 00:07:21,780 OK, тук е нашата картина. 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 OK? 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 OK, а след случая, който ви описано е по друг начин, нали? 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 OK? 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 Пет на следващите точки на шест. 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 OK, хладно. 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 OK, хладно. 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 >> АУДИТОРИЯ: Безплатен възела между ги чрез създаването го присвоява? 239 00:11:17,369 --> 00:11:17,910 Хана: Cool. 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 Free показалеца. 243 00:11:23,540 --> 00:11:24,810 Абсолютно. 244 00:11:24,810 --> 00:11:29,160 Но дори и преди това, нека just-- нашата цел полето 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 OK, нека 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 Защото ако показалеца следващата е нищожна, каква грешка 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 неизправност A, красива. 257 00:12:05,660 --> 00:12:09,690 ОК, така че ако това не е нула, тогава можем да възстановите. 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 Cool? 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 Призоваваме нещото че искате да изтриете п. 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 A показалеца [недоловим]? 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 >> Хана: Разбира се, OK. 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 OK? 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 OK, хладно. 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 Хана: Beautiful. 329 00:15:17,460 --> 00:15:26,430 ОК, така че ние искаме списък, който се сочи какъвто и да е нашата показалеца следващия възел е. 330 00:15:26,430 --> 00:15:29,040 Good. 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 Една крачка from--? 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 Awesome. 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 OK. 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 >> Хана: OK, добра. 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 Ако показалецът да п е равно на N? 358 00:16:36,149 --> 00:16:36,690 Хана: Разбира се. 359 00:16:36,690 --> 00:16:42,780 Така че нашата цел на цялата тази функция е за изтриване на възел, който има стойност п. 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 Cool. 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 >> Публика: Pointer се равнява на показалеца плюс един. 374 00:17:20,184 --> 00:17:21,599 >> Хана: Beautiful. 375 00:17:21,599 --> 00:17:25,050 Така, че ни позволява да продължи през итерации. 376 00:17:25,050 --> 00:17:26,251 OK. 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 OK, нали? 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 Начинът, по който си го представя е Аз казвам, OK, аз съм показалеца. 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 Хана: Ако N не е в списъка? 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 Cool. 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 Хана: OK, всичко, което правя е аз съм просто като се уверите, 447 00:19:57,370 --> 00:20:03,250 че преди да се опитам да изброя и сочен, преди да се опитате да влезете в предишното, 448 00:20:03,250 --> 00:20:07,210 Искам да се уверите, че това не е нищожна, така че не се получи повреда на сегмента. 449 00:20:07,210 --> 00:20:08,400 Cool. 450 00:20:08,400 --> 00:20:10,820 >> OK, знам, че това е доста много, за да се измъкне сам. 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 OK. 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 OK, хладно. 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 Awesome, OK. 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 Ако аз съм гледам за Apple в моя хеш таблица 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 Awesome. 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 който започва с А. Там не е само една дума, която започва с Б. Така че 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 OK, страхотно. 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 >> A двоично дърво е определен вид дърво. 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 Хана: MM-HM. 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 OK? 578 00:26:12,290 --> 00:26:12,789 Awesome. 579 00:26:12,789 --> 00:26:15,930 Всякакви други въпроси, свързани с дърветата? 580 00:26:15,930 --> 00:26:16,670 OK. 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 Започваме T, го последва надолу на масив, който съдържа 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 Clear на опит? 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 Защото нека да кажем, че не е имал тази концепция на Delta, тази концепция 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 Ta-га! 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 И причината, че не можете кажа, о, но като за Тюринг, I 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 Awesome. 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 >> Хана: MM-HM. 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 ще бъде A, 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 Мога само да кажа, O е номер така и така в азбуката. 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 Awesome. 700 00:31:29,130 --> 00:31:30,020 Загубих си пространство. 701 00:31:30,020 --> 00:31:31,020 OK, хладно. 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 >> ALISON: О, ще видим. 738 00:33:15,965 --> 00:33:17,370 Ще видим колко добре правя тук. 739 00:33:17,370 --> 00:33:21,410 OK, аз ще се опитам да летя чрез тези неща, момчета. 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 >> OK, като каза Хана, ако имате някакви въпроси, 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 Така можехме д точно тук, които Просто означава директория. 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, R нищо х и R нищо Х за тази първа файл. 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, което е и причината понякога ние трябваше да правите коригират 774 00:35:07,350 --> 00:35:17,510 600, вместо да коригират 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, OK? 781 00:35:38,245 --> 00:35:42,700 >> R е на стойност 4. w има стойност 2, и х 782 00:35:42,700 --> 00:35:49,230 има стойност 1, което е защо тази Разрешение тук ще се коригират 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 Вторият бит е светна за W, което е 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 >> Само малко ще дори по-навътре коригирате тук, тук 793 00:36:22,110 --> 00:36:27,730 е много общо структура на коригирате повикване. 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 Така че може би ф плюс х или г плюс х или о плюс х или множествена 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 Така че един плюс х означава даде изпълним разрешения за всеки. 812 00:37:29,070 --> 00:37:33,430 И след това, разбира се, на която определен файл или директория. 813 00:37:33,430 --> 00:37:33,980 OK? 814 00:37:33,980 --> 00:37:36,010 Всеки добър с коригирате? 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 Така HyperText Markup Language, това е честно просто начин за вас 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 Аз определено ще бъде удобно с Div. 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 Тя ще се прилага само за това, което е в тези телесни селектори, OK? 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 I 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, Разделение, 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 счита за самоличност. 888 00:41:31,010 --> 00:41:35,400 Така че за самоличност трябва да бъде винаги уникална в рамките на вашата 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 имаме ID на заглавието. 893 00:41:47,810 --> 00:41:54,280 Така че, за да се отнасят само до това парче от нашия HTML, което правим заглавие хашиш. 894 00:41:54,280 --> 00:41:58,080 Само по условие, IDs са обозначени с хашиш пред тях. 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 е Cascading Style Sheets. 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 Така IDs трябва да са уникални, и класове може вижте колкото се може повече неща, колкото искате. 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" и капитал "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 Cool, нещо друго? 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 Може ли да има класа и ID? 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 >> OK, всеки добър с CSS? 940 00:43:58,810 --> 00:44:01,280 Вие всички ще направим красиви уеб сайтове с CSS сега. 941 00:44:01,280 --> 00:44:05,460 Добре, най-добри практики, просто неща, които да имате предвид, неща 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 >> OK, 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 Така че, ако вие смятате, обратно на лекцията Преди няколко седмици с David 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 Ние казахме, OK, когато сме изпращане на повече от един пакет, 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 Ето как можете да мислите за него, OK? 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 Ние имаме някои искания тук където GET е метода. 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 OK като нашия код 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 сме получили от сървъра, OK? 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 Ако се вгледате в CS 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 Cool. 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 >> Дейвин: Искате ли да го науча? 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 OK, ние ще blow-- това ще да бъде PHP интензивен курс, като никой друг. 1014 00:47:41,640 --> 00:47:44,874 >> Така PHP, Hypertext Preprocessor, това е рекурсивно Бекроним, 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 Hypertext Preprocessor, които 1019 00:47:54,840 --> 00:47:55,980 Просто няма смисъл. 1020 00:47:55,980 --> 00:47:57,714 Fun история. 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 Ето, ние имаме някои променливи наречено ARR, и това е равно 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 И голямата разлика между C и 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 Къде можем да кажем, OK, искам каквото стойност е свързан с плодове. 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 Awesome. 1082 00:50:38,930 --> 00:50:44,420 >> OK, foreach е начин да се превъртите през вашите редици. 1083 00:50:44,420 --> 00:50:47,490 Така че ние имаме нещо тук, само общата структура. 1084 00:50:47,490 --> 00:50:51,020 Така foreach, името на ни съоръжения, като каквото 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 се свързва с Баз. 1090 00:51:10,080 --> 00:51:12,180 Така че ключовете са дрън и Баз. 1091 00:51:12,180 --> 00:51:13,650 Стойностите са бар и qux. 1092 00:51:13,650 --> 00:51:18,560 Така foreach, ние имаме нашия масив тук, след като двойката ключова стойност. 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 можете просто да направите като ARR като $ стойност, а след това ви 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 OK? 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 >> ALISON: Точно така. 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 Трябва ARR като нещо, като едно нещо, това е 1108 00:51:56,930 --> 00:52:00,070 Ще приемем, че искате стойността, не ключа. 1109 00:52:00,070 --> 00:52:06,780 Така че, ако някога просто трябва точно като ARR, както, може би това е като $ елемент, 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 Cool. 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 >> Така че, казва, OK, дай ми стойност, която е свързана с името, 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 >> Публика: Има ли името Получете справка с лилава линия в [недоловим]? 1138 00:53:36,240 --> 00:53:37,740 >> ALISON: Отнася се за това тук. 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 >> Публика: Така се харесва, Име на входа равнява Bob, and-- 1146 00:54:02,070 --> 00:54:04,380 >> ALISON: Добре, тогава ти ще получите Bob там долу. 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 И СЛЕД минава данните в тялото на 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 >> OK, 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 равен да VAL1 когато къщата е равен "Куриер". 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 OK? 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 равнява 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 OK, за да вмъкнете, посочете определени стойности в таблиците. 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 >> ALISON: Ако попълните само в някои части на вашия ред, 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 >> OK, изберете, така че това е просто начин за получаване на 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 Така звездата в този случай ще върнете целия ред на вас, OK? 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 >> ALISON: двойни кавички или апострофи не прави разлика в 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 >> ALISON: Роб? 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 >> ROB: Ако някой сложи апостроф в, 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 ALISON: Ами, като саниране и да избяга. 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 ОН- 1260 01:00:15,629 --> 01:00:16,670 ROB: Това е последния слайд. 1261 01:00:16,670 --> 01:00:18,500 ALISON: Това е последния слайд, наистина? 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 OK, изтриете. 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 >> Дейвин: 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 ALISON: Way да бъдат подготвени. 1305 01:02:24,460 --> 01:02:25,335 Дейвин: Не, аз съм готов. 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 OK. 1310 01:02:30,041 --> 01:02:30,540 Извинете. 1311 01:02:30,540 --> 01:02:31,664 I разлят кафе върху себе си. 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, OK, страхотно. 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, неправилна заявка, недвижими бързо, като, ако 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 Дейвин: 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 Дейвин: Да, когато 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 >> ГАБЕ: Real бързо, когато се вие ​​получавате 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 >> ГАБЕ: Така че тя може да е конфигурация въпрос във вашия 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 OK? 1394 01:05:46,960 --> 01:05:48,610 >> Дейвин: Cool. 1395 01:05:48,610 --> 01:05:51,180 Искаш ли да се направи точно до този AJAX? 1396 01:05:51,180 --> 01:05:52,950 >> ГАБЕ: [недоловим]. 1397 01:05:52,950 --> 01:05:53,450 Дейвин: 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 Дейвин: Nice. 1402 01:05:57,490 --> 01:06:00,775 И защо ни харесва? 1403 01:06:00,775 --> 01:06:02,670 Awesome. 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 Така документ е вашето елемент, може да получи елемент от ID, 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 >> ГАБЕ: Като се има предвид това, защо е 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 Дейвин: Nice. 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 ГАБЕ: Дали някой имате въпроси досега? 1461 01:08:15,220 --> 01:08:16,357 Добре ли е? 1462 01:08:16,357 --> 01:08:16,856 Дейвин: Cool. 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 Дейвин: Perfect. 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 I достига 50, След това в PHP, това е точно като тази, $ I, 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 Тя ще бъде като Var I достига 50. 1480 01:08:56,566 --> 01:08:58,649 Но не е нужно да бъде като, ОК, това е едно цяло число. 1481 01:08:58,649 --> 01:09:00,350 OK, това е низ. 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 >> Дейвин: Какво не компилира предвид? 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 Дейвин: Да, така, че ще мине чрез преводач. 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 Дейвин: В какъв смисъл? 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 >> Дейвин: Право, перфектна. 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 Ще трябва да тълкува това JavaScript. 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 >> ГАБЕ: Да, но това не означава, 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 ГАБЕ: 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 OK? 1562 01:12:02,825 --> 01:12:03,325 Cool. 1563 01:12:03,325 --> 01:12:08,530 1564 01:12:08,530 --> 01:12:12,890 >> Дейвин: Тук е просто един много основен Здравейте програма световна 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 Това е като писането някои заглавния файл, и След това число, че заглавния файл в C. 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 >> Публика: Alert. 1594 01:13:20,820 --> 01:13:21,470 >> Дейвин: Точно така. 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 >> Дейвин: Да. 1599 01:13:25,600 --> 01:13:26,100 Perfect. 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, че имате функция, която е като при зареждане, или готови, 1603 01:13:34,790 --> 01:13:38,030 и който казва, OK, изчакайте, докато всичко това 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 След това кликнете върху OK, този сигнал отива. 1609 01:13:49,510 --> 01:13:53,600 След това ще се покаже можете HTML тялото тук. 1610 01:13:53,600 --> 01:13:54,590 Ница. 1611 01:13:54,590 --> 01:14:00,880 >> ОК, така че просто много бързо, писане в JavaScript е супер бърз. 1612 01:14:00,880 --> 01:14:02,710 За да се декларират променлива, име на Var. 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, Var. 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 >> Loops, едно и също нещо. 1619 01:14:12,510 --> 01:14:14,230 Същото нещо. 1620 01:14:14,230 --> 01:14:18,165 Декларации Функция, така точно като теб съм виждал в C. 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 ГАБЕ: Добър въпрос. 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 Real бързо, какво ще настоящия разпечатате? 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 >> Дейвин: Right, че би било "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 >> Публика: Three. 1654 01:15:38,117 --> 01:15:38,950 Дейвин: Three, нали? 1655 01:15:38,950 --> 01:15:40,210 Точно това, което си мислите. 1656 01:15:40,210 --> 01:15:42,072 OK, сега отидете. 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 Обектите, много приличат structs в C, много 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 нека да кажем, че искам да намеря вън, OK, какъв е курса? 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 >> Дейвин: Какво става? 1681 01:16:41,784 --> 01:16:42,700 Публика: CS50.course. 1682 01:16:42,700 --> 01:16:43,510 Дейвин: Right, да. 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 >> Дейвин: OK, глоба. 1687 01:16:54,050 --> 01:16:57,544 >> ГАБЕ: Можете да използвате CS50 скоба, низ, като в кавички. 1688 01:16:57,544 --> 01:16:59,210 Публика: Мисля, че е идентичен с PHP. 1689 01:16:59,210 --> 01:17:00,293 ГАБЕ: Това е едно и също нещо. 1690 01:17:00,293 --> 01:17:02,487 Дейвин: Fine! 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 Real бързо, така че да има главата, здравей свят, тялото. 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 >> Така че първото, което виждате прозорец при зареждане. 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 >> Публика: появява Button. 1729 01:18:22,880 --> 01:18:25,201 >> Дейвин: Бутонът е вече там. 1730 01:18:25,201 --> 01:18:26,700 Да, така бутона вече е там. 1731 01:18:26,700 --> 01:18:31,190 Но това ще кажа, OK, ако щракнете върху бутона, 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 той казва, OK, аз искам за да получите елемент от ID, 1738 01:18:46,160 --> 01:18:50,300 така бутона за търсене просто казва, OK, аз искам да очертае тази променлива към този бутон. 1739 01:18:50,300 --> 01:18:53,120 Така, че променливата е просто по-лесен начин за достъп до този бутон. 1740 01:18:53,120 --> 01:18:57,300 И аз казвам, OK, ако кликна, че бутон, така че, ако кликнете на този елемент, 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 Inside тази функция, основно нещо, което сме виждали много, нащрек. 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 >> Дейвин: Можете да поставите скрипта маркер направо в главата 1755 01:19:24,300 --> 01:19:30,667 защото имате тази при зареждане. 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 Но при зареждане е само за да бъде безопасна, да направи че всичко товар във вашия 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 >> ГАБЕ: [недоловим]. 1763 01:19:41,080 --> 01:19:42,485 Дейвин: Да. 1764 01:19:42,485 --> 01:19:45,426 >> Публика: Така при зареждане страна избягва определяне на бутона променлива търсене 1765 01:19:45,426 --> 01:19:49,930 от просто казвам document.getElementById бутон за търсене точка [недоловим]. 1766 01:19:49,930 --> 01:19:52,320 >> Дейвин: Определено, но след това низ също ще стане огромен. 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 >> Дейвин: Да, има. 1772 01:20:00,590 --> 01:20:02,094 Да, има, аз проверих. 1773 01:20:02,094 --> 01:20:03,710 >> ГАБЕ: Не е за тях да се грижи за. 1774 01:20:03,710 --> 01:20:06,970 >> Дейвин: ОК, така че аз ще съм да ви кажа, така или иначе. 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 >> ГАБЕ: Quick разсъдъка разгледате тук. 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 OK? 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 >> Дейвин: ОК, така че са отнели далеч от 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 >> Дейвин: О, това е? 1802 01:21:08,501 --> 01:21:10,880 1803 01:21:10,880 --> 01:21:15,500 ОК, така че този път 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 Това е just-- някои хора мислят за него като по-лек, елегантен версия 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 Той казва, OK, това е свързано с 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 >> Дейвин: 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 >> ГАБЕ: И по етикет, имаме предвид като Разделение, например, или главата. 1826 01:22:08,560 --> 01:22:11,500 >> Дейвин: или орган или р или нещо подобно, да. 1827 01:22:11,500 --> 01:22:14,390 Така че тук, OK, вместо да каже 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 Alert е точно същото. 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 и те си мислят, OK, 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 ГАБЕ: Да, да бъде честен, че знака за долар 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 >> Дейвин: Да, така говорихме за това. 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 >> ГАБЕ: ОК, така че 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 abc123 вече е там. 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 >> И тогава хората казват, OK, защо да не можем просто 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 ОК, така че това е едно от основните използва на AJAX в днешно време все още. 1906 01:25:49,250 --> 01:25:52,130 >> Дейвин: Така много бързо, в на повикване Аякс в 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 >> ГАБЕ: Не минава вече. 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 Тъй като преди ние използва само JavaScript за промяна на 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 И той има всички JavaScript показват, тъй като 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 Той ще използва JavaScript до поискване, например, 1936 01:27:00,860 --> 01:27:04,340 дали abc123 е в базата данни или не. 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 Сега, сървърът ще има PHP тук, или на друг език. 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 >> И тогава, на сървъра ще кажа, OK, 1950 01:27:33,658 --> 01:27:37,270 Дейвин ми иска да провери дали тази abc123 е в базата данни. 1951 01:27:37,270 --> 01:27:38,310 Говорете с модела. 1952 01:27:38,310 --> 01:27:41,310 Моделът се казва, че не е. abc123 е добро потребителско име. 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 OK, така и Аз изпращам патица да Дейвин. 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 >> И в този смисъл, че ще казват, OK, ако патица тогава аз съм добър. 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 ще използвате JavaScript да се справят с отговора. 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 >> Така че ето един пример на AJAX с 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 >> Дейвин: Така че, да, точно това е това, което видях на вашето последно р-комплект. 2018 01:30:45,820 --> 01:30:49,720 Действителната AJAX повикването е в самото 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 Така че, ако си спомняте от вашия р-комплект, много от вас са като скоба данни I 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 Data е това, което се връща. 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 ГАБЕ: В нашия малък пример за 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 OK, сигурност, хладно. 2040 01:31:50,820 --> 01:31:52,060 >> Дейвин: ме да искам да? 2041 01:31:52,060 --> 01:31:54,500 >> ГАБЕ: Харесва ми този. 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 И ние сме ващи копиране, че в буфер с размер 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 ГАБЕ: Точно така. 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 Вие проверявате за нищожна, защото ние винаги проверявайте за нищожна 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 >> Дейвин: Ако не се проверява за нищожна, много бързо, какво ще се случи? 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 ГАБЕ: Да. 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 >> ГАБЕ: 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 >> ГАБЕ: 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 ГАБЕ: 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 Ница. 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 Дейвин: Ако изпратите 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 може да бъде в състояние да се види Вашите идентификатор на сесията бисквитки. 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 сесия равна на 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 >> Real бързо, искане кръст сайт фалшификация. 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 >> Cross скриптиране, така че тук, което преминава през процедура променлива Q, 2141 01:35:30,720 --> 01:35:33,510 вместо да минава през някакъв вид на стойност, може би Q е като име. 2142 01:35:33,510 --> 01:35:36,560 Така че, вместо да минава р равни Дейвин или нещо подобно, 2143 01:35:36,560 --> 01:35:38,740 ако не използвате HTML специални символи, ако 2144 01:35:38,740 --> 01:35:43,100 не избягаме от този да се уверите, че е OK, тогава може да мине през вместо, 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 ГАБЕ: Да, има някои много средни неща 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 И това вмъква същото JavaScript в всеки, който гледа на вашия сайт. 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 Дейвин: Ние ще пропусне последния един, а след това сме готови. 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