1 00:00:00,000 --> 00:00:05,616 2 00:00:05,616 --> 00:00:07,030 >> Хана Блумберг: Здравейте всички. 3 00:00:07,030 --> 00:00:09,530 Отиваме, за да започнете само няколко минути по-рано 4 00:00:09,530 --> 00:00:11,738 тъй като ние имаме един куп от материал, за да се измъкне сам. 5 00:00:11,738 --> 00:00:12,790 Аз съм Хана. 6 00:00:12,790 --> 00:00:13,865 Аз съм TF. 7 00:00:13,865 --> 00:00:16,239 Мария ще се присъедини нас само за няколко минути. 8 00:00:16,239 --> 00:00:17,560 Тя учи точка точно преди. 9 00:00:17,560 --> 00:00:19,351 Аз преподавам раздел полето след това, така че отиваме 10 00:00:19,351 --> 00:00:21,200 да я държи до час и половина. 11 00:00:21,200 --> 00:00:25,490 >> Така че, както ще видите тук, ние имаме доста няколко теми, които трябва да се измъкне сам, 12 00:00:25,490 --> 00:00:27,200 така че ние ще се случва малко бързо. 13 00:00:27,200 --> 00:00:31,140 Но ако във всяка точка ние казваме нещо прекалено бързо или не разбирате, 14 00:00:31,140 --> 00:00:33,170 Чувствайте се свободни да се прекъсва с въпроси. 15 00:00:33,170 --> 00:00:36,610 Ние искаме да бъдем в състояние да направи това преглед на сесията като полезна за всички вас 16 00:00:36,610 --> 00:00:37,973 колкото е възможно. 17 00:00:37,973 --> 00:00:38,920 Awesome. 18 00:00:38,920 --> 00:00:41,650 >> Така че нека да скочи право с някои теми, които ние всъщност 19 00:00:41,650 --> 00:00:46,980 много, много кратко обхванати за викторина 0 в прегледа сесия на викторина 0. 20 00:00:46,980 --> 00:00:48,840 Така че като се започне с свързани списъци. 21 00:00:48,840 --> 00:00:52,090 Така че просто се уверете, че имате някаква основни познания за свързани списъци 22 00:00:52,090 --> 00:00:55,110 и са удобни правиш някои от основните операции. 23 00:00:55,110 --> 00:00:58,560 >> Така че просто да се преразгледа, свързана списъци са по-добри от масиви 24 00:00:58,560 --> 00:01:01,020 защото те могат да растат динамично. 25 00:01:01,020 --> 00:01:03,300 Така че ние имаме, че огромно предимство. 26 00:01:03,300 --> 00:01:06,031 Виждали сме ги използвали в хеш таблици, когато ние 27 00:01:06,031 --> 00:01:08,280 не знам точно колко неща, ние ще искаме 28 00:01:08,280 --> 00:01:10,900 да вмъкнете в нашата структура на данните. 29 00:01:10,900 --> 00:01:15,700 За съжаление, ние имаме парчета свързания списъка цял памет, 30 00:01:15,700 --> 00:01:20,820 така че не е задължително да в състояние да направи постоянен достъп на времето 31 00:01:20,820 --> 00:01:22,502 до всеки елемент в свързан списък. 32 00:01:22,502 --> 00:01:24,210 С цел да се намери специално елемент, ние 33 00:01:24,210 --> 00:01:26,510 Трябва да превъртите всички начин от самото начало. 34 00:01:26,510 --> 00:01:30,610 Така че имайте предвид, че повечето от основни операции са омега на 1. 35 00:01:30,610 --> 00:01:32,130 Така вложка е просто ще отнеме 1. 36 00:01:32,130 --> 00:01:37,520 Изтрий ще отнеме н тъй като ние трябва да отида да го намеря от списъка. 37 00:01:37,520 --> 00:01:39,260 И за търсене могат да вземат, в най-лошия, п. 38 00:01:39,260 --> 00:01:42,330 Не можем да направим нещо подобно двоично търсене на свързан списък 39 00:01:42,330 --> 00:01:45,101 тъй като ние не можем просто произволно скочи до центъра. 40 00:01:45,101 --> 00:01:45,600 Готино. 41 00:01:45,600 --> 00:01:48,160 42 00:01:48,160 --> 00:01:48,960 Awesome. 43 00:01:48,960 --> 00:01:50,270 >> Малко от стакове. 44 00:01:50,270 --> 00:01:53,980 Това, отново, се изкачи на викторина 0, така че трябва да е супер удобно с него. 45 00:01:53,980 --> 00:01:57,210 Но за купчини, Ви молим да си спомня една купчина от тави. 46 00:01:57,210 --> 00:01:59,940 И това ще бъде на първо място в, изкара. 47 00:01:59,940 --> 00:02:02,272 Така че ние стека нещата в стека, а след това 48 00:02:02,272 --> 00:02:04,980 ако ние се опитваме да вземе нещо off-- които ние наричаме пръкват разстояние 49 00:02:04,980 --> 00:02:06,581 на stack-- идваме на разстояние от върха. 50 00:02:06,581 --> 00:02:09,289 И ако искаме да се сложи нещо в топчето, което наричаме го натиснете. 51 00:02:09,289 --> 00:02:13,170 Така че тя винаги ще бъде расте от дъното като купчина тави. 52 00:02:13,170 --> 00:02:14,540 Awesome. 53 00:02:14,540 --> 00:02:17,607 >> Ние сме изпълнени видян стакове с двете свързани списъци и масиви. 54 00:02:17,607 --> 00:02:19,440 Ако сте изпълнение с масиви, което искате 55 00:02:19,440 --> 00:02:22,350 за да се уверите, за да следите както и размера на капацитета. 56 00:02:22,350 --> 00:02:27,540 Така размер ще бъде на ток няколко неща във вашия стак, 57 00:02:27,540 --> 00:02:32,900 като има предвид капацитета е общият брой неща, които можете да съхранявате на вашия стак. 58 00:02:32,900 --> 00:02:34,220 Готино. 59 00:02:34,220 --> 00:02:35,767 >> Много по подобен начин, ние имаме опашки. 60 00:02:35,767 --> 00:02:38,850 В този случай, вместо да мисли за купчина тави, мисля, че на една линия. 61 00:02:38,850 --> 00:02:40,697 Това ще бъде първата, първа изходяща. 62 00:02:40,697 --> 00:02:42,780 Така че, ако се редят на опашка за нещо в магазина, 63 00:02:42,780 --> 00:02:46,920 ние се надяваме, че лицето, на първо място в Онлайн ще се помогна на първо място. 64 00:02:46,920 --> 00:02:49,350 >> Вместо да кажем тласък и поп, както правим ние за комин, 65 00:02:49,350 --> 00:02:52,000 ние просто се каже Enqueue и dequeue. 66 00:02:52,000 --> 00:02:54,970 И отново, ако сте прилагане на тази с масив, 67 00:02:54,970 --> 00:02:56,720 ние трябва да следим не само размера 68 00:02:56,720 --> 00:03:02,390 и капацитет, но и главата, които ще е отпред на нашата опашка. 69 00:03:02,390 --> 00:03:03,010 Готино. 70 00:03:03,010 --> 00:03:05,770 Всякакви въпроси относно някой от това? 71 00:03:05,770 --> 00:03:06,320 Awesome. 72 00:03:06,320 --> 00:03:07,640 Преместване надясно по. 73 00:03:07,640 --> 00:03:08,564 >> OK, хеш таблици. 74 00:03:08,564 --> 00:03:10,605 Тук е мястото, където тя започва да получите наистина интересно. 75 00:03:10,605 --> 00:03:14,150 Така че хеш таблица е една реализация на асоциативен масив. 76 00:03:14,150 --> 00:03:16,700 Така че основно какво се е случило е ние имаме всичко това въвеждане, 77 00:03:16,700 --> 00:03:18,750 и ние го дам на хеш функция, която казва, 78 00:03:18,750 --> 00:03:21,840 Добре, това е мястото, където в хеш таблица принадлежи. 79 00:03:21,840 --> 00:03:24,860 >> Така че най-простият хеш функция които сме виждали е просто казвам, 80 00:03:24,860 --> 00:03:28,170 OK, предполагам, ние искаме да се сложи струни в нашата хеш-таблица. 81 00:03:28,170 --> 00:03:30,870 И наистина проста идея може да се каже, OK, 82 00:03:30,870 --> 00:03:34,350 нека просто сортирате от първата буква на думата. 83 00:03:34,350 --> 00:03:37,570 Така че можете да видите тук, ние приемаме банан, ние се прекарва през един хеш функция, 84 00:03:37,570 --> 00:03:40,190 и то се казва, хей, че трябва да отиде при индекс 1. 85 00:03:40,190 --> 00:03:45,120 >> Така че ние по същество да се сетя за хеш таблица като куп различни кофи. 86 00:03:45,120 --> 00:03:49,880 И всеки от тези кофи се случва да държи главата на свързан списък. 87 00:03:49,880 --> 00:03:55,030 И в този свързан списък е мястото, където можем действително пуснати различни парчета от данни. 88 00:03:55,030 --> 00:03:57,820 >> Така гмуркане малко повече в хеш функция, ето 89 00:03:57,820 --> 00:03:59,870 примерът Просто описано, където можем просто да кажем, 90 00:03:59,870 --> 00:04:02,460 OK, да вземе първата буква на думата и ние сме 91 00:04:02,460 --> 00:04:03,990 ще го оправи в кофите. 92 00:04:03,990 --> 00:04:08,490 Така че вероятно, че ще има 26 кофи, по един за всяка буква от азбуката. 93 00:04:08,490 --> 00:04:10,090 Защо да не е тази голяма хеш функция? 94 00:04:10,090 --> 00:04:13,461 Това, което прави този не-идеален? 95 00:04:13,461 --> 00:04:13,960 Да. 96 00:04:13,960 --> 00:04:15,790 >> АУДИТОРИЯ: Ти ще да има сблъсъци. 97 00:04:15,790 --> 00:04:16,390 >> Хана Блумберг: Да, точно така. 98 00:04:16,390 --> 00:04:18,000 Ще има сблъсъци. 99 00:04:18,000 --> 00:04:18,954 Така че това е едно нещо. 100 00:04:18,954 --> 00:04:21,620 И ние ще говорим за това как можем да фиксира сблъсъци само за секунда. 101 00:04:21,620 --> 00:04:23,980 Друг проблем с това специално хеш функция 102 00:04:23,980 --> 00:04:25,980 е, че нашата различно кофи ще бъдат 103 00:04:25,980 --> 00:04:28,960 от доста драстично различни размери. 104 00:04:28,960 --> 00:04:33,840 >> Ние знаем, че има един куп повече думи, които започват с A от X, 105 00:04:33,840 --> 00:04:38,980 така че ние ще имаме много небалансирани кофи в нашата хеш-таблица. 106 00:04:38,980 --> 00:04:40,050 Готино. 107 00:04:40,050 --> 00:04:41,340 Така че да, нека да се върнем към точката на сблъсъци. 108 00:04:41,340 --> 00:04:42,900 Какво да правим, ако има сблъсък? 109 00:04:42,900 --> 00:04:44,490 >> Ние имаме няколко различни опции. 110 00:04:44,490 --> 00:04:47,600 Така един, така че предполагам, че ние се опитваме да се сложи Бери в нашата хеш-таблица. 111 00:04:47,600 --> 00:04:50,370 И ние виждаме, о, ние искаме да го сложи в индекс 1, 112 00:04:50,370 --> 00:04:52,070 но банан вече живее там. 113 00:04:52,070 --> 00:04:53,110 Какво ще правим? 114 00:04:53,110 --> 00:04:54,560 Имаме два основни варианта. 115 00:04:54,560 --> 00:04:58,050 >> Номер едно е можем да кажем, OK, има в индекса на 1 няма място, 116 00:04:58,050 --> 00:05:03,210 но нека просто продължавайте да търсите чрез докато ние можем да намерим друго отворено място. 117 00:05:03,210 --> 00:05:08,490 Така че ние ще кажем, OK, нека си го сложи в точка 3. 118 00:05:08,490 --> 00:05:09,240 Това е една от възможностите. 119 00:05:09,240 --> 00:05:11,470 Това се нарича линейна сондиране. 120 00:05:11,470 --> 00:05:15,500 >> И втори вариант се казва, OK, добре, нека просто да направи всеки един от тези кофи 121 00:05:15,500 --> 00:05:17,470 бъде ръководители на свързани списъци. 122 00:05:17,470 --> 00:05:21,910 И това е ОК, ако има по- от едно нещо в кофа. 123 00:05:21,910 --> 00:05:23,820 Ние просто ще го прикрепите към предната част. 124 00:05:23,820 --> 00:05:26,032 Така че тук можете да видите, OK, когато ние добавя Бери, ние 125 00:05:26,032 --> 00:05:28,240 просто взех банан, вид го бутнах малко 126 00:05:28,240 --> 00:05:29,842 и хвърли едно зрънце в там. 127 00:05:29,842 --> 00:05:31,050 И това е също напълно глоба. 128 00:05:31,050 --> 00:05:32,830 Това се нарича отделна верижното. 129 00:05:32,830 --> 00:05:38,100 Можете да мислите за това като един вид като масив от главите на свързани списъци. 130 00:05:38,100 --> 00:05:41,950 Всякакви въпроси относно хеш маси, хеш функции? 131 00:05:41,950 --> 00:05:44,290 Awesome. 132 00:05:44,290 --> 00:05:45,470 >> Дървета и опит. 133 00:05:45,470 --> 00:05:47,287 Така че едно дърво е някакъв вид на структурата на данните 134 00:05:47,287 --> 00:05:49,453 в които има някаква на йерархия или някакъв вид 135 00:05:49,453 --> 00:05:51,247 за класиране на вашите различни обекти. 136 00:05:51,247 --> 00:05:53,580 И това ще стане супер ясно, когато видим един пример. 137 00:05:53,580 --> 00:05:56,960 И видяхме опит заедно с хеш таблици, в pset5-- 138 00:05:56,960 --> 00:06:00,700 което, отново, напълно честна игра за тази quiz-- като друга информация 139 00:06:00,700 --> 00:06:03,110 структури, които можем съхранявате различни неща. 140 00:06:03,110 --> 00:06:06,782 В случай на речника, ние се съхранява един куп думи. 141 00:06:06,782 --> 00:06:08,240 Така че нека да разгледаме някои дървета. 142 00:06:08,240 --> 00:06:10,190 Така че това е пример за едно дърво. 143 00:06:10,190 --> 00:06:13,105 Той има вид структура, че йерархична структура, 144 00:06:13,105 --> 00:06:15,920 където можете да видите, че този възел 1 в горната 145 00:06:15,920 --> 00:06:20,750 има някакъв ранг над 2 и 3, които са над 4, 5 и 6 и 7, 146 00:06:20,750 --> 00:06:22,860 които са над 8 и 9. 147 00:06:22,860 --> 00:06:25,210 Така че това е всичко, което разбираме под един дърво, така че може просто вид 148 00:06:25,210 --> 00:06:26,660 на представите това в главата си. 149 00:06:26,660 --> 00:06:29,050 >> Сега, ние имаме няколко по-специализирани дървета. 150 00:06:29,050 --> 00:06:31,070 Така един пример е двоично дърво. 151 00:06:31,070 --> 00:06:33,290 И двоично дърво е, отново, просто щеше да бъде 152 00:06:33,290 --> 00:06:37,040 структура на данни с някакъв вид йерархия, но всеки от възли 153 00:06:37,040 --> 00:06:38,650 може да има най-много две деца. 154 00:06:38,650 --> 00:06:41,530 Това е, когато думата идва от двоичен. 155 00:06:41,530 --> 00:06:43,410 Така че това е пример за двоично дърво. 156 00:06:43,410 --> 00:06:45,720 Така че това е по-малка категория дървета. 157 00:06:45,720 --> 00:06:48,960 >> Сега нека да стигнем още по-конкретен и говорим за двоичен trees-- двоично търсене 158 00:06:48,960 --> 00:06:51,310 дървета, а. 159 00:06:51,310 --> 00:06:56,430 Така че тук идеята е не само прави всеки възел са най-много две деца, 160 00:06:56,430 --> 00:07:00,300 но всички деца до лявото ще бъде по-малък 161 00:07:00,300 --> 00:07:03,450 и всички деца на полето ще бъде по-голям. 162 00:07:03,450 --> 00:07:05,890 Така че забележите само ни двоично дърво, има 163 00:07:05,890 --> 00:07:08,650 няма връзка между цифрите. 164 00:07:08,650 --> 00:07:12,990 Но в нашия двоично търсене дърво, което виждаме, OK, тук е 44. 165 00:07:12,990 --> 00:07:17,080 И всеки номер от ляво на 44 е малък и всичко надясно 166 00:07:17,080 --> 00:07:17,920 е по-голяма. 167 00:07:17,920 --> 00:07:20,130 >> И който държи на всяка ниво на дървото. 168 00:07:20,130 --> 00:07:24,810 Така тук, това е по-малък от 22 и това е по-голям от 22. 169 00:07:24,810 --> 00:07:26,390 И това е двоичен търсене дърво. 170 00:07:26,390 --> 00:07:28,900 Защо смятаме, че тя се нарича двоично дърво за търсене? 171 00:07:28,900 --> 00:07:30,651 Какво алгоритъм пък ви напомня? 172 00:07:30,651 --> 00:07:31,650 АУДИТОРИЯ: Binary търсене. 173 00:07:31,650 --> 00:07:32,480 Хана Блумберг: Binary търсене. 174 00:07:32,480 --> 00:07:35,150 Защото, ако търсите за специално номер в това дърво, 175 00:07:35,150 --> 00:07:38,800 във всяка точка, може просто да прати половината от дървото, което е страхотно. 176 00:07:38,800 --> 00:07:43,800 И така, това ще ни даде нещо че много прилича на двоично търсене. 177 00:07:43,800 --> 00:07:45,870 Някакви въпроси? 178 00:07:45,870 --> 00:07:47,570 Добре, хладно. 179 00:07:47,570 --> 00:07:48,560 >> Добре, се опитва. 180 00:07:48,560 --> 00:07:49,657 Любимата на всички. 181 00:07:49,657 --> 00:07:51,990 Така че това е пример, че сме виждали един куп в клас. 182 00:07:51,990 --> 00:07:54,710 И отново, това е просто още един така че ние може да съхранява данни. 183 00:07:54,710 --> 00:07:57,530 В случай на речника, отново, това е просто ще бъде струни. 184 00:07:57,530 --> 00:08:00,870 Така че нека да видим какво това всъщност прилича на малко по-ниско ниво. 185 00:08:00,870 --> 00:08:03,690 >> Така че нека да погледнем в един възел в Trie. 186 00:08:03,690 --> 00:08:07,532 И ние виждаме, OK, там става да булева и възел, 187 00:08:07,532 --> 00:08:09,170 указател към възела. 188 00:08:09,170 --> 00:08:11,400 И ние виждаме, че Булева се нарича is_word. 189 00:08:11,400 --> 00:08:13,490 Така че по същество, това е ще съответства 190 00:08:13,490 --> 00:08:16,750 да тези малки триъгълници, които казва, ако съм намерила тук, 191 00:08:16,750 --> 00:08:19,100 намерили цяла дума. 192 00:08:19,100 --> 00:08:23,670 >> Ние знаем, че "Тюринг" над тук е пълно дума, 193 00:08:23,670 --> 00:08:28,030 като има предвид, просто T-U-R не е дума защото ние не виждаме, че малко по-делта. 194 00:08:28,030 --> 00:08:31,440 И това малко делта, отново, съответства на тази is_word, 195 00:08:31,440 --> 00:08:34,480 това Булева is_word. 196 00:08:34,480 --> 00:08:36,320 И тогава имаме масив от деца. 197 00:08:36,320 --> 00:08:39,860 Така на всяко ниво, вие имат особен възел, 198 00:08:39,860 --> 00:08:42,470 и този възел точки към един спектър на цялата азбука. 199 00:08:42,470 --> 00:08:44,346 >> Така че можете да видите, отново, в този picture-- съм 200 00:08:44,346 --> 00:08:48,170 ще продължим да скача назад и forth--, че в горната масив 201 00:08:48,170 --> 00:08:51,640 има куп различни възли, идващи от него. 202 00:08:51,640 --> 00:08:57,140 Той има 26 или 27, ако искате да се включат допълнително характер. 203 00:08:57,140 --> 00:09:01,320 И това ни дава по- начин да съхранявате данните ни 204 00:09:01,320 --> 00:09:04,450 по начин, който може да се изгледа че можете да погледнете нагоре супер бързо. 205 00:09:04,450 --> 00:09:06,650 Какво е времето за справка за синтактично дърво? 206 00:09:06,650 --> 00:09:07,970 >> АУДИТОРИЯ: [недоловим]. 207 00:09:07,970 --> 00:09:08,300 >> Хана Блумберг: Да. 208 00:09:08,300 --> 00:09:09,550 На теория, това е константно време. 209 00:09:09,550 --> 00:09:13,230 Това само ще бъде размерът на думата, която искате да погледнете нагоре. 210 00:09:13,230 --> 00:09:15,950 Дори ако прибавим безброй повече думи към нашия синтактично дърво, 211 00:09:15,950 --> 00:09:18,160 това няма да ни отведе по-дълго, за да се определи 212 00:09:18,160 --> 00:09:19,690 ако дадена дума е в Trie. 213 00:09:19,690 --> 00:09:21,412 Така че това е наистина хубаво. 214 00:09:21,412 --> 00:09:23,697 >> АУДИТОРИЯ: Знаете ли, просто инициализира, че масив? 215 00:09:23,697 --> 00:09:24,780 Пропуснахте точка или две. 216 00:09:24,780 --> 00:09:26,130 Може ли да говорим само за че за секунда? 217 00:09:26,130 --> 00:09:26,680 >> Хана Блумберг: Разбира се, абсолютно. 218 00:09:26,680 --> 00:09:27,590 Добър въпрос. 219 00:09:27,590 --> 00:09:31,140 Въпросът е, ние имаме масив, който е 220 00:09:31,140 --> 00:09:34,180 Ще трябва възел звезда като за разлика от просто възел, нали? 221 00:09:34,180 --> 00:09:35,180 Готино. 222 00:09:35,180 --> 00:09:37,990 Така че тук това, което казвате, е нашата гама е само 223 00:09:37,990 --> 00:09:40,035 Ще бъде указатели към други масиви. 224 00:09:40,035 --> 00:09:42,910 Така че това е тя essentially-- вид чувства като свързан списък по този начин 225 00:09:42,910 --> 00:09:46,620 където всеки от тези деца просто точка към следващия възел. 226 00:09:46,620 --> 00:09:49,030 >> И начина, по който всъщност се определи, хей, OK, 227 00:09:49,030 --> 00:09:52,320 ние сме повтори през целия дума, е тази дума в речника, 228 00:09:52,320 --> 00:09:54,476 ние просто провери тази is_word. 229 00:09:54,476 --> 00:09:55,100 Great въпрос. 230 00:09:55,100 --> 00:09:55,675 Да. 231 00:09:55,675 --> 00:09:56,216 АУДИТОРИЯ: OK. 232 00:09:56,216 --> 00:09:57,470 Така че това, което беше по време на работа за TRIE? 233 00:09:57,470 --> 00:09:58,386 >> Хана Блумберг: Разбира се. 234 00:09:58,386 --> 00:10:01,852 Така време на работа за синтактично дърво за за справка ще бъде постоянна време. 235 00:10:01,852 --> 00:10:04,310 Така че това е просто ще бъде брой на буквите в думата. 236 00:10:04,310 --> 00:10:06,310 Това не е зависим от Размер на речника 237 00:10:06,310 --> 00:10:09,510 или размера на структурата на данните. 238 00:10:09,510 --> 00:10:12,170 Така че тук е малко по-прост пример. 239 00:10:12,170 --> 00:10:15,430 >> В този случай, можете да видите, че думата прилепът е в речника 240 00:10:15,430 --> 00:10:18,900 и имате увеличение, но вие не е нужно нещо като зоологическа градина. 241 00:10:18,900 --> 00:10:20,050 Как ще правим зоологическата градина? 242 00:10:20,050 --> 00:10:24,276 Как можем да добавим към нашия зоопарк речника, за да ни синтактично дърво? 243 00:10:24,276 --> 00:10:24,776 Да. 244 00:10:24,776 --> 00:10:27,014 >> АУДИТОРИЯ: Направи is_word вярно за [недоловим]. 245 00:10:27,014 --> 00:10:27,930 Хана Блумберг: Добро. 246 00:10:27,930 --> 00:10:31,731 Така че ние ще каже Z-О-О, и тогава ние ще Искам да отписвате тази кутия, както добре. 247 00:10:31,731 --> 00:10:32,230 Страхотен. 248 00:10:32,230 --> 00:10:35,160 249 00:10:35,160 --> 00:10:37,930 Да сравним съвсем накратко опитва срещу хеш таблици. 250 00:10:37,930 --> 00:10:39,770 Опитва са наистина страхотни защото, както казахме, 251 00:10:39,770 --> 00:10:41,610 те осигуряват постоянна време за справка. 252 00:10:41,610 --> 00:10:44,285 Но огромният недостатък е те са огромни. 253 00:10:44,285 --> 00:10:46,160 Можете да получите чувството, дори и като погледнете в него, 254 00:10:46,160 --> 00:10:48,454 че това ще отнеме огромно количество памет. 255 00:10:48,454 --> 00:10:50,620 Така че те ще бъдат много по- по-голям от хеш таблици, 256 00:10:50,620 --> 00:10:52,270 но те ще дадат ни много по-бързо време за търсене. 257 00:10:52,270 --> 00:10:54,478 Така че това е вид на вашия компромис, това, което ви интересува, 258 00:10:54,478 --> 00:10:57,350 независимо дали това е скоростта или памет. 259 00:10:57,350 --> 00:11:02,251 Всякакви въпроси за всеки от които, Всички структури С данни. 260 00:11:02,251 --> 00:11:02,750 Красив. 261 00:11:02,750 --> 00:11:03,250 ДОБРЕ. 262 00:11:03,250 --> 00:11:07,322 Отиваме да се премине към по-малко малко на уеб разработки с Мария. 263 00:11:07,322 --> 00:11:08,280 MARIA Златкова: Lovely. 264 00:11:08,280 --> 00:11:09,036 ДОБРЕ. 265 00:11:09,036 --> 00:11:10,380 >> Хана Блумберг: Можете да използвате лаптопа си. 266 00:11:10,380 --> 00:11:11,255 >> MARIA Златкова: Nice. 267 00:11:11,255 --> 00:11:13,320 268 00:11:13,320 --> 00:11:14,912 ОК готино. 269 00:11:14,912 --> 00:11:17,120 Както се движим сега, за да уеб развитие, ние говорихме малко 270 00:11:17,120 --> 00:11:20,680 за смяна на разрешения на файлове и директории 271 00:11:20,680 --> 00:11:24,190 така че те могат да бъдат достъпни на други потребители, към света, 272 00:11:24,190 --> 00:11:28,640 и за да можем да видим как основно можем да ги предадат 273 00:11:28,640 --> 00:11:32,600 когато ние разработваме неща, като уеб сайтове че ние сме най-вече били прави. 274 00:11:32,600 --> 00:11:36,400 >> Така видяхме командата коригират, който е в режим на климата, в общи линии. 275 00:11:36,400 --> 00:11:39,300 Това е команда Linux и той се променя разрешения за достъп 276 00:11:39,300 --> 00:11:40,410 на файловата система обекти. 277 00:11:40,410 --> 00:11:43,370 И на файловата система е обект на само една директория, файл, 278 00:11:43,370 --> 00:11:46,810 всичко, което можете, промените разрешенията на. 279 00:11:46,810 --> 00:11:53,750 >> Така че, за да видите файла за достъп, ние напишете командата ли, списъка, -l. 280 00:11:53,750 --> 00:11:56,500 И когато ние написали, че ние Обикновено видите някои разрешения 281 00:11:56,500 --> 00:11:59,660 че да изглежда нещо като това в предната част на име на директория. 282 00:11:59,660 --> 00:12:01,260 Така че г отнася до директория. 283 00:12:01,260 --> 00:12:05,930 И тогава ние имаме три триади, че в общи линии 284 00:12:05,930 --> 00:12:11,675 позова на разрешенията на двете потребител, група, или по света. 285 00:12:11,675 --> 00:12:16,490 >> Видовете разрешения, които можем имат за тези три групи от хора, 286 00:12:16,490 --> 00:12:20,830 са или R за четене, w за пише и за х изпълни. 287 00:12:20,830 --> 00:12:23,650 И ние можем да имаме тези за групата и света, както добре. 288 00:12:23,650 --> 00:12:26,940 Важното нещо е, че понякога когато напишете командата коригират, 289 00:12:26,940 --> 00:12:32,960 бихме написали някакъв номер че се състои от три бита. 290 00:12:32,960 --> 00:12:36,990 Така че можем да направим като 777 и основно 291 00:12:36,990 --> 00:12:40,450 посочена добавената стойност на всеки от тези триади 292 00:12:40,450 --> 00:12:45,060 защото г ще се отнася до 4, w ще се отнася до 2, и X ще се отнасят до 1, 293 00:12:45,060 --> 00:12:50,020 така че, когато се добавя, като всеки от номерата ще слезе до общ брой 294 00:12:50,020 --> 00:12:52,750 за кумулативен стойност между 0 и 7. 295 00:12:52,750 --> 00:12:55,150 Така че ние също може да има 0 за не разрешения на всички. 296 00:12:55,150 --> 00:12:58,200 И това основно ще ни даде разрешенията за или ползвателя, 297 00:12:58,200 --> 00:13:00,450 група, или света. 298 00:13:00,450 --> 00:13:02,620 Всякакви въпроси за тази досега? 299 00:13:02,620 --> 00:13:05,331 >> АУДИТОРИЯ: Казахте прочетете беше 4? 300 00:13:05,331 --> 00:13:06,164 MARIA Златкова: Да. 301 00:13:06,164 --> 00:13:07,568 АУДИТОРИЯ: [недоловим]. 302 00:13:07,568 --> 00:13:08,504 Хана Блумберг: Мда. 303 00:13:08,504 --> 00:13:11,790 АУДИТОРИЯ: И след това, чрез добавяне на всички, другите ще показват номера ви. 304 00:13:11,790 --> 00:13:12,665 MARIA Златкова: Да. 305 00:13:12,665 --> 00:13:14,970 Да. 306 00:13:14,970 --> 00:13:17,810 Това са големи въпроси. 307 00:13:17,810 --> 00:13:20,490 Lovely. 308 00:13:20,490 --> 00:13:25,340 След това, ние скочи в HTML и малко повече за уеб програмиране. 309 00:13:25,340 --> 00:13:27,990 Така HTML просто означава, HyperText Markup Language. 310 00:13:27,990 --> 00:13:30,460 И това е най-маркиране език, който е стандартен 311 00:13:30,460 --> 00:13:32,720 че той се използва за създаване на уеб страници. 312 00:13:32,720 --> 00:13:35,750 >> Тя се нарича език за маркиране защото не е действително компилира. 313 00:13:35,750 --> 00:13:40,310 Той не казва как някакъв код трябва да бъде изпълнена или нещо подобно. 314 00:13:40,310 --> 00:13:44,800 Тя просто се очертава и описва как уеб 315 00:13:44,800 --> 00:13:46,840 страница трябва да се създаде с всяка от нейните елементи 316 00:13:46,840 --> 00:13:48,460 и как те трябва да изглежда на потребителя. 317 00:13:48,460 --> 00:13:53,090 318 00:13:53,090 --> 00:13:57,110 >> Някои от HTML таговете, че ние приближи са следните. 319 00:13:57,110 --> 00:14:00,500 Всички наши HTML документи Започнахме с DOCTYPE HTML. 320 00:14:00,500 --> 00:14:02,550 След това ние винаги имаме HTML тагове. 321 00:14:02,550 --> 00:14:03,930 Имаме главата и тялото. 322 00:14:03,930 --> 00:14:07,890 И това е важно, че има HTML този вид на вложените структура 323 00:14:07,890 --> 00:14:09,280 защото това е много ясно. 324 00:14:09,280 --> 00:14:13,200 И тогава става много ясно, когато ние трябва да отворите и действително близки тагове. 325 00:14:13,200 --> 00:14:18,400 И ние винаги се нуждаем, за да затворите тагове, които сме отворили. 326 00:14:18,400 --> 00:14:23,170 >> И тук имаме някои от видовете на нещата напред, които искаме да имаме. 327 00:14:23,170 --> 00:14:26,580 Така че ние имаме, например, Заглавието на CS50. 328 00:14:26,580 --> 00:14:31,980 И тогава ние всъщност можете да свържете стилов лист 329 00:14:31,980 --> 00:14:34,030 който определя как ще оформите нашия уебсайт. 330 00:14:34,030 --> 00:14:35,650 Това е CSS. 331 00:14:35,650 --> 00:14:39,320 Отиваме да го прегледаме в Следващата няколко слайда, както добре. 332 00:14:39,320 --> 00:14:42,580 >> В рамките на тялото, ние се създаде някои класове и IDs. 333 00:14:42,580 --> 00:14:45,860 И като напомняне, отново, IDs са уникални и хорариум 334 00:14:45,860 --> 00:14:47,390 може да бъде назначен на няколко елемента. 335 00:14:47,390 --> 00:14:52,110 И това просто означава, че можем да използваме класове и IDs 336 00:14:52,110 --> 00:14:55,860 в рамките на друга structures-- така, за Например, в рамките на CSS файлове или стил 337 00:14:55,860 --> 00:15:00,940 sheets-- да се позове на специфични елементи и в общи линии се каже, че ние искаме да оформите 338 00:15:00,940 --> 00:15:03,280 или проектирате някакъв елемент по някакъв определен начин. 339 00:15:03,280 --> 00:15:06,440 И ние се отнасяме към тях с техните имена и класове. 340 00:15:06,440 --> 00:15:09,870 И ние също може да се отнасят до различни неща от тагове, както и, 341 00:15:09,870 --> 00:15:13,830 но IDs и класове просто ни даде някои универсалност и какво конкретно ние 342 00:15:13,830 --> 00:15:15,850 Искам да се позова. 343 00:15:15,850 --> 00:15:19,620 >> Така че само един пример. 344 00:15:19,620 --> 00:15:22,730 Ние можем, отново, в рамките на файл CSS къде сме 345 00:15:22,730 --> 00:15:25,770 Искам да се определят някои style-- толкова цветове, шрифтове, 346 00:15:25,770 --> 00:15:30,340 и неща като that-- можем определя стила за тялото. 347 00:15:30,340 --> 00:15:32,640 Така, че ще я определят за цялото тяло маркер. 348 00:15:32,640 --> 00:15:36,160 Но тогава ние също може да се определи стил за #title. 349 00:15:36,160 --> 00:15:40,390 И отново, таг се отнася до нашата ID и точката се отнася до нашия клас. 350 00:15:40,390 --> 00:15:44,760 >> И тогава за .info, ние може също така да се определят някои атрибути. 351 00:15:44,760 --> 00:15:49,750 И отново, когато се върнем, имахме клас, наречен информация и нашия ID заглавието. 352 00:15:49,750 --> 00:15:53,422 И ние можем да видим, че ние се отнасяме им от #title и .info. 353 00:15:53,422 --> 00:15:55,380 АУДИТОРИЯ: Бихте ли казали таг [? приеме мен? ?] 354 00:15:55,380 --> 00:15:55,725 MARIA Златкова: Съжаляваме? 355 00:15:55,725 --> 00:15:58,120 АУДИТОРИЯ: Бихте ли казали таг [? приеме мен? ?] 356 00:15:58,120 --> 00:16:01,400 MARIA Златкова: таг означава ID, така #title 357 00:16:01,400 --> 00:16:07,890 се отнася до каквито и да било елементи получите този ID нарича заглавие. 358 00:16:07,890 --> 00:16:10,735 И тогава точката се отнася към класа. 359 00:16:10,735 --> 00:16:14,590 Така .info отнася до този елемент защото има инфо клас. 360 00:16:14,590 --> 00:16:15,090 Да. 361 00:16:15,090 --> 00:16:17,905 >> АУДИТОРИЯ: Защо правиш разграничаването им в HTML? 362 00:16:17,905 --> 00:16:20,985 Защо казвате, някои неща са Идентификатори и някои неща са клас? 363 00:16:20,985 --> 00:16:22,610 MARIA Златкова: Това е само до you-- 364 00:16:22,610 --> 00:16:24,151 Хана Блумберг: Повторете въпроса. 365 00:16:24,151 --> 00:16:25,370 MARIA Златкова: О, съжалявам. 366 00:16:25,370 --> 00:16:29,480 Защо ние се разграничат някои елементи като идентификатори и други елементи, като класове? 367 00:16:29,480 --> 00:16:34,760 Това е просто, защото това е Наистина често избор на дизайн. 368 00:16:34,760 --> 00:16:38,520 Тя ви дава много гъвкавост в това да 369 00:16:38,520 --> 00:16:43,250 може да се каже, аз искам този конкретен елемент за да получите този ID, защото те искат 370 00:16:43,250 --> 00:16:45,300 да направи много неща с него, а аз само 371 00:16:45,300 --> 00:16:50,010 искате да определите стила, определен стил или цвят, независимо за тази позиция. 372 00:16:50,010 --> 00:16:52,630 И начина да направите това е просто го дава ID. 373 00:16:52,630 --> 00:16:55,060 >> И тогава, ако аз искам да имам Няколко различни елементи 374 00:16:55,060 --> 00:16:58,940 като че вместо ще и създаване their-- 375 00:16:58,940 --> 00:17:03,840 вместо да го прави от маркер, защото етикетът да 376 00:17:03,840 --> 00:17:07,369 задаване на клетката за целия таг за всеки път, когато се използва този етикет, 377 00:17:07,369 --> 00:17:09,740 можете да зададете един клас до множество предмети. 378 00:17:09,740 --> 00:17:15,109 И след това просто достъп до този клас и да кажа Искам да оформите този клас по този начин. 379 00:17:15,109 --> 00:17:17,579 >> И отново, класът може да има множество различни предмети 380 00:17:17,579 --> 00:17:21,150 и ID трябва да е уникален. 381 00:17:21,150 --> 00:17:21,849 Големите въпроси. 382 00:17:21,849 --> 00:17:25,339 Всякакви други въпроси? 383 00:17:25,339 --> 00:17:26,220 OK, страхотно. 384 00:17:26,220 --> 00:17:30,680 385 00:17:30,680 --> 00:17:35,330 Отново, това е как тези селектори са посочени в CSS, с таг, 386 00:17:35,330 --> 00:17:40,031 с дот, или без нищо за възлагане на стила на някои тагове, 387 00:17:40,031 --> 00:17:40,530 като тялото. 388 00:17:40,530 --> 00:17:43,500 389 00:17:43,500 --> 00:17:47,860 И тук имаме генералът синтаксис на как се прави това. 390 00:17:47,860 --> 00:17:52,830 391 00:17:52,830 --> 00:17:55,680 >> За да повторите някои най-добре практики за HTML и CSS, 392 00:17:55,680 --> 00:17:59,170 ние трябва да, отново, затворете всички на HTML тагове, които се отварят. 393 00:17:59,170 --> 00:18:03,950 И това, което ви е препоръчал направя за вашите окончателните проекти, 394 00:18:03,950 --> 00:18:10,560 както и за CS50 финансите, е да се направи сигурни, че всички си HTML валидира. 395 00:18:10,560 --> 00:18:12,920 И това е направено с W3 валидатора. 396 00:18:12,920 --> 00:18:16,940 >> И след това, което ние направих и това, което ние препоръчваме правиш 397 00:18:16,940 --> 00:18:19,790 е отделяне стил, така че CSS от HTML маркиране. 398 00:18:19,790 --> 00:18:24,210 Така че всичко, което се отнася до това как Вашата страница ще изглежда визуално 399 00:18:24,210 --> 00:18:27,330 и как то се случва да бъде модифициран трябва да отидат в един документ, CSS. 400 00:18:27,330 --> 00:18:33,880 И тогава си маркиране казва колко неща са във връзка един с друг е HTML, 401 00:18:33,880 --> 00:18:37,550 и че трябва да влезем вътре от вашите HTML документи. 402 00:18:37,550 --> 00:18:38,590 Някакви въпроси? 403 00:18:38,590 --> 00:18:39,226 MHM. 404 00:18:39,226 --> 00:18:42,628 >> АУДИТОРИЯ: Какво точно се случва на с валидирането на страница 405 00:18:42,628 --> 00:18:47,945 когато сме за утвърждаване на HTML, че [недоловим] е създал? 406 00:18:47,945 --> 00:18:49,850 >> MARIA Златкова: Така what-- си мислите. 407 00:18:49,850 --> 00:18:53,020 И така, какво точно се случва на с валидиране на страница 408 00:18:53,020 --> 00:18:55,570 и защо е необходимо да се направи това? 409 00:18:55,570 --> 00:18:59,180 По принцип, ние трябва да направим, че защото много пъти, за сваляне, 410 00:18:59,180 --> 00:19:01,390 ако не се затвори таг Или нещо такова, 411 00:19:01,390 --> 00:19:05,680 Вашия браузър все още продължава да направи една страница и все още може да работи, 412 00:19:05,680 --> 00:19:10,840 но това е най-добрата практика, за да се уверите, че сте, отново, затвори всичките си тагове, 413 00:19:10,840 --> 00:19:13,190 че всичките ви елементи са начинът, по който те трябва да бъдат, 414 00:19:13,190 --> 00:19:18,470 и в общи линии, че това е от конвенции, които са зададени. 415 00:19:18,470 --> 00:19:21,970 >> Това е, отново, просто нещо, което трябва 416 00:19:21,970 --> 00:19:24,040 да се научим да се прави, за разлика като 417 00:19:24,040 --> 00:19:25,696 sloppier код и подобни неща. 418 00:19:25,696 --> 00:19:26,688 Да. 419 00:19:26,688 --> 00:19:27,680 О, съжалявам. 420 00:19:27,680 --> 00:19:29,221 Мислех, че вдигане на ръка. 421 00:19:29,221 --> 00:19:31,240 АУДИТОРИЯ: Не, аз бях просто [недоловим]. 422 00:19:31,240 --> 00:19:33,800 >> MARIA Златкова: OK. 423 00:19:33,800 --> 00:19:34,640 >> АУДИТОРИЯ: Благодаря. 424 00:19:34,640 --> 00:19:36,181 >> MARIA Златкова: Разбира се, благодаря ви. 425 00:19:36,181 --> 00:19:41,680 Така че отново, става това, как информация се пренася 426 00:19:41,680 --> 00:19:44,630 и комуникационни модели за прехвърляне на информация. 427 00:19:44,630 --> 00:19:45,730 TCP / IP. 428 00:19:45,730 --> 00:19:48,600 TCP просто означава Предаване Протокол за контрол и IP 429 00:19:48,600 --> 00:19:51,260 се отнася за Internet Protocol. 430 00:19:51,260 --> 00:19:54,275 И това просто се отнася до начина, по който данните се доставя. 431 00:19:54,275 --> 00:19:59,470 432 00:19:59,470 --> 00:20:02,710 >> Ако имаме някакви данни, че трябва да доставя така you-- 433 00:20:02,710 --> 00:20:06,770 можете да направите заявка за определен сървър. 434 00:20:06,770 --> 00:20:09,800 Например, когато пробвате достъп до cs50.net, 435 00:20:09,800 --> 00:20:12,420 ние да отправи молба към на CS50 сървъра и ние 436 00:20:12,420 --> 00:20:14,720 се види, че ние искаме да стигнем този вид информация. 437 00:20:14,720 --> 00:20:19,294 И след това се основава на този протокол за това как се доставя тази информация, 438 00:20:19,294 --> 00:20:21,460 сървърът дава информация обратно към нас, клиентът. 439 00:20:21,460 --> 00:20:25,590 И тогава ние сме в състояние да видите информацията за страницата 440 00:20:25,590 --> 00:20:26,390 и след това да го използвате. 441 00:20:26,390 --> 00:20:29,300 442 00:20:29,300 --> 00:20:33,050 >> Така че след това Hypertext Transfer Protocol е само един протокол или да зададете 443 00:20:33,050 --> 00:20:37,470 конвенции, който определя как уеб браузър и уеб сървър 444 00:20:37,470 --> 00:20:38,890 трябва да общуват. 445 00:20:38,890 --> 00:20:43,730 И всичко това извеждайки заедно, HTTP отново 446 00:20:43,730 --> 00:20:50,960 само определя как е определено това хипертекст от HTML, че ние сме били, че работи, 447 00:20:50,960 --> 00:20:59,500 как трябва да бъде доставена до вас и как, че данните, които ви се предоставя 448 00:20:59,500 --> 00:21:00,540 получава за вас. 449 00:21:00,540 --> 00:21:05,990 >> И ето защо, ако вие си спомнят от един клас, имахме много заявки 450 00:21:05,990 --> 00:21:08,970 и ние имахме много синтаксис за тези искания, които ние сме 451 00:21:08,970 --> 00:21:10,250 Ще отидем в момента. 452 00:21:10,250 --> 00:21:13,270 Така че отново, когато изпращате искане до сървъра, 453 00:21:13,270 --> 00:21:15,920 ние трябва да се определят няколко неща. 454 00:21:15,920 --> 00:21:18,520 Така че ние трябва да намерим типа на искането, че ние сме за създаване. 455 00:21:18,520 --> 00:21:22,180 И пак, ние имаме, например, GET е един вид метод 456 00:21:22,180 --> 00:21:25,290 които имаме в нашата молба. 457 00:21:25,290 --> 00:21:31,710 >> И тогава HTTP / 1.1 е само протокол, който използваме в момента. 458 00:21:31,710 --> 00:21:34,224 459 00:21:34,224 --> 00:21:36,890 Повечето от времето, което се случва с протокола, който използваме. 460 00:21:36,890 --> 00:21:40,290 Така че, ако имате въпрос подобно на вашия тест. 461 00:21:40,290 --> 00:21:43,120 Това е конвенциите че имаме досега. 462 00:21:43,120 --> 00:21:46,580 >> Обратно наклонена черта се отнася до това, което подреди на нещата ние сме с искане. 463 00:21:46,580 --> 00:21:52,810 След това, домакинът е, например, в този случай, ние се опитваме да отидете на google.com. 464 00:21:52,810 --> 00:21:57,070 Така че това е стойността на гостоприемник. 465 00:21:57,070 --> 00:21:59,330 Това е един вид искане които могат да бъдат изпратени. 466 00:21:59,330 --> 00:22:02,890 >> И тогава един вид отговор, който би могъл се изпраща, отново въз основа на този протокол, 467 00:22:02,890 --> 00:22:05,190 отново, HTTP / 1.1. 468 00:22:05,190 --> 00:22:07,150 Така че това е HTTP версията отново. 469 00:22:07,150 --> 00:22:09,730 200 OK е само кода на състоянието. 470 00:22:09,730 --> 00:22:12,860 И това OK е просто фраза въз основа на този код статус. 471 00:22:12,860 --> 00:22:15,520 >> И тогава на Content-Type се отнася до типа 472 00:22:15,520 --> 00:22:20,295 че се връща към вас, че е за тази уеб страница, която получавате 473 00:22:20,295 --> 00:22:22,570 и че за сваляне може да направи след това. 474 00:22:22,570 --> 00:22:24,401 И това е текст / HTML. 475 00:22:24,401 --> 00:22:26,660 >> АУДИТОРИЯ: Какво означава 1.1 означава? 476 00:22:26,660 --> 00:22:29,910 >> MARIA Златкова: Това е просто версия of-- ох, какво прави 1.1 означава? 477 00:22:29,910 --> 00:22:37,075 Това е само версията, на HTTP версия на протокол, който използваме. 478 00:22:37,075 --> 00:22:37,700 Great въпрос. 479 00:22:37,700 --> 00:22:38,366 Други въпроси? 480 00:22:38,366 --> 00:22:41,222 481 00:22:41,222 --> 00:22:45,080 >> АУДИТОРИЯ: Може ли да обобщим Content-Type много бързо? 482 00:22:45,080 --> 00:22:48,150 >> MARIA Златкова: Така че е това, което сървъра. 483 00:22:48,150 --> 00:22:51,020 вида на information-- което е тип съдържание е на въпросите. 484 00:22:51,020 --> 00:22:53,400 Така че това е вида на информация, която можете да получите обратно 485 00:22:53,400 --> 00:22:58,200 от сървъра, вида на данни, че браузърът може след това 486 00:22:58,200 --> 00:23:00,604 оказва се, че използвате. 487 00:23:00,604 --> 00:23:03,020 АУДИТОРИЯ: За това ли протокол ви казва да направите? 488 00:23:03,020 --> 00:23:03,390 MARIA Златкова: Съжаляваме? 489 00:23:03,390 --> 00:23:05,380 АУДИТОРИЯ: Е, че това, което казват протокола? 490 00:23:05,380 --> 00:23:05,915 MARIA Златкова: The protocol-- 491 00:23:05,915 --> 00:23:07,940 АУДИТОРИЯ: --what на Content-Type е или what-- 492 00:23:07,940 --> 00:23:12,040 MARIA Златкова: Протоколът се основава on-- какъв е протоколът ти казвам? 493 00:23:12,040 --> 00:23:16,070 Това е просто начина, по който че тази информация 494 00:23:16,070 --> 00:23:18,610 беше представено за вас въз основа по какъв протокол 495 00:23:18,610 --> 00:23:21,830 се получи тази информация доставени обратно към вас. 496 00:23:21,830 --> 00:23:23,500 Това прави ли смисъл нещо? 497 00:23:23,500 --> 00:23:28,320 498 00:23:28,320 --> 00:23:30,070 Хана Блумберг: Вие може да се мисли за протокол 499 00:23:30,070 --> 00:23:33,300 като A-- Мисля, професор Malan го описа 500 00:23:33,300 --> 00:23:36,910 в клас, както е нещо като A-- това е като еквивалент на човешкото договаряне. 501 00:23:36,910 --> 00:23:44,930 Кажете, като, хей, аз съм молба и аз знаят как да се справят с HTTP на версия 1.1. 502 00:23:44,930 --> 00:23:48,770 И тогава сървърът казва, о, OK, I-- и двете съществуват. 503 00:23:48,770 --> 00:23:51,337 Аз също знам, как да се справят с HTTP / 1.1. 504 00:23:51,337 --> 00:23:53,170 И аз отивам да дам да архивирате част от съдържанието. 505 00:23:53,170 --> 00:23:56,230 В този случай, то се случва че е от типа на текст / HTML. 506 00:23:56,230 --> 00:23:58,480 Така че това е вид просто начин от тях за communicating-- 507 00:23:58,480 --> 00:24:00,480 >> MARIA Златкова: Това е просто потвърждавайки, че сте 508 00:24:00,480 --> 00:24:03,290 както следва същата протокол и че и двете 509 00:24:03,290 --> 00:24:06,620 клиента и така server-- Вашия браузър и server-- 510 00:24:06,620 --> 00:24:09,280 нещо като знам какво сте говорим за и имат 511 00:24:09,280 --> 00:24:12,557 конвенцията за преминаване в данните. 512 00:24:12,557 --> 00:24:17,022 >> АУДИТОРИЯ: Така Content-Type part-- на Текстът на Content-Type / html-- това е 513 00:24:17,022 --> 00:24:18,521 отделна част от едно и също послание? 514 00:24:18,521 --> 00:24:20,509 Или е част от да речем, 200? 515 00:24:20,509 --> 00:24:22,010 Дали 200 им кажа, че или is-- 516 00:24:22,010 --> 00:24:23,770 >> MARIA Златкова: 200 казва, че всичко е минало ОК. 517 00:24:23,770 --> 00:24:27,900 И тогава тип съдържание е нещо като обособена част от едно и също послание, 518 00:24:27,900 --> 00:24:34,274 и да казва това, което съм Върнати има този вид на текст / HTML. 519 00:24:34,274 --> 00:24:35,690 Това е просто дава повече информация. 520 00:24:35,690 --> 00:24:38,700 521 00:24:38,700 --> 00:24:39,995 Имат ли нещо да добавите? 522 00:24:39,995 --> 00:24:40,495 ДОБРЕ. 523 00:24:40,495 --> 00:24:43,590 524 00:24:43,590 --> 00:24:46,530 >> Всякакви други въпроси за тази? 525 00:24:46,530 --> 00:24:48,370 Awesome. 526 00:24:48,370 --> 00:24:54,070 Така някои други HTTP състоянията, които бихме могли да получите в допълнение към 200 OK, 527 00:24:54,070 --> 00:24:59,500 такива, които сме виждали, може би вероятно много са 403 и 404. 528 00:24:59,500 --> 00:25:05,190 Така 404, ако сте се опитвали да достъп нещо, което не съществува. 529 00:25:05,190 --> 00:25:10,460 Така например, във вашето CS50 Финанси psets, 530 00:25:10,460 --> 00:25:15,640 ако сте били прави quote.html и не сте имали този файл, 531 00:25:15,640 --> 00:25:19,740 но вместо това сте имали quote.php, че ще доведе до 404 не е намерена 532 00:25:19,740 --> 00:25:21,600 защото файлът не може да съществува. 533 00:25:21,600 --> 00:25:25,690 >> За 403 забранено, че се отнася до разрешенията. 534 00:25:25,690 --> 00:25:31,150 Така че, ако някой файл не се чете от свят, може да получиш 403 върнати. 535 00:25:31,150 --> 00:25:34,510 536 00:25:34,510 --> 00:25:37,810 Някои други, които може да get-- 301, преместена за постоянно; 537 00:25:37,810 --> 00:25:41,300 302, намерено; 304, Променено; 400, Bad Request; 538 00:25:41,300 --> 00:25:47,330 и след вътрешна грешка в сървър за 500 и 503, Service Unavailable. 539 00:25:47,330 --> 00:25:48,140 Да. 540 00:25:48,140 --> 00:25:51,490 >> АУДИТОРИЯ: Ще имаме очаква да запомня всички тези състояния? 541 00:25:51,490 --> 00:25:53,739 MARIA Златкова: Аз ще трябва ги на вашия мамят лист. 542 00:25:53,739 --> 00:25:55,146 [Смях] 543 00:25:55,146 --> 00:25:59,954 АУДИТОРИЯ: Дали сме се очаква да знам какво предизвиква всеки един? 544 00:25:59,954 --> 00:26:00,995 MARIA Златкова: те? 545 00:26:00,995 --> 00:26:03,870 Хана Блумберг: За тези, които сме тичам into-- така че въпросът was-- 546 00:26:03,870 --> 00:26:08,010 MARIA Златкова: Прави ли те очаква да знам какво всеки един от тях статут 547 00:26:08,010 --> 00:26:09,330 кодове може да се задейства от? 548 00:26:09,330 --> 00:26:13,240 Така че за тези, които сме ползвали и се блъсна в, бих казал, да. 549 00:26:13,240 --> 00:26:16,610 Така че ние сме категорично виждал 200 OK и да го изнесе в psets. 550 00:26:16,610 --> 00:26:19,071 Виждали сме 403, 404. 551 00:26:19,071 --> 00:26:20,550 За други такива? 552 00:26:20,550 --> 00:26:22,690 >> Хана Блумберг: Бих казват 500 изглежда честна игра. 553 00:26:22,690 --> 00:26:23,330 >> MARIA Златкова: 500, да. 554 00:26:23,330 --> 00:26:24,246 >> Хана Блумберг: Да. 555 00:26:24,246 --> 00:26:27,006 Просто имат общ смисъл от това, което ги причинява. 556 00:26:27,006 --> 00:26:28,880 А също и само от тях имена, можете да вид 557 00:26:28,880 --> 00:26:32,890 като се направи обосновано предположение, както е да, какво всъщност ги е причинило. 558 00:26:32,890 --> 00:26:36,919 Така например, се премести за постоянно, вероятно файлът е преместен за постоянно. 559 00:26:36,919 --> 00:26:39,328 >> АУДИТОРИЯ: Но при предишен изпит, имаше толкова 560 00:26:39,328 --> 00:26:41,050 как да очакват от нас да се отговори на този? 561 00:26:41,050 --> 00:26:42,883 >> Хана Блумберг: Това е на стойност нула точки. 562 00:26:42,883 --> 00:26:45,870 Въпросът за 418 на чайника е технически статут HTTP, 563 00:26:45,870 --> 00:26:47,090 но тя е на стойност нула точки. 564 00:26:47,090 --> 00:26:48,320 Очевидно е, че не сте Очаква се да ги знаят. 565 00:26:48,320 --> 00:26:49,670 >> АУДИТОРИЯ: Дали това е реална? 566 00:26:49,670 --> 00:26:51,970 >> Хана Блумберг: Това е реална един, но това не означава нищо. 567 00:26:51,970 --> 00:26:52,700 Това е просто една шега. 568 00:26:52,700 --> 00:26:55,480 569 00:26:55,480 --> 00:26:57,010 Интернет души са смешни. 570 00:26:57,010 --> 00:26:59,680 >> MARIA Златкова: Големите въпроси, момчета. 571 00:26:59,680 --> 00:27:01,452 Всякакви други въпроси? 572 00:27:01,452 --> 00:27:04,891 >> АУДИТОРИЯ: Какво е вътрешна грешка в сървъра? 573 00:27:04,891 --> 00:27:06,640 MARIA Златкова: вътрешен грешка в сървъра просто 574 00:27:06,640 --> 00:27:10,050 означава, че сте били не може да комуникира 575 00:27:10,050 --> 00:27:13,400 със сървъра по някаква причина. 576 00:27:13,400 --> 00:27:15,400 Така че това не е задължително нещо, което трябва да направите, 577 00:27:15,400 --> 00:27:19,170 с клиента или нещо подобно. 578 00:27:19,170 --> 00:27:22,170 Аз не знам на всеки конкретен пример че сме отишли ​​над да обясни, 579 00:27:22,170 --> 00:27:23,000 но да. 580 00:27:23,000 --> 00:27:23,250 >> Хана Блумберг: Разбира се. 581 00:27:23,250 --> 00:27:25,625 Така например, като нека казват, че са работили за колаж 582 00:27:25,625 --> 00:27:30,440 и сървъра Google падна за някои причина, прекъсване на захранването, да речем. 583 00:27:30,440 --> 00:27:33,400 Това би било вътрешен сървър грешка или някакъв вид of-- ви харесва 584 00:27:33,400 --> 00:27:34,630 няма да получите отговор обратно. 585 00:27:34,630 --> 00:27:35,260 >> MARIA Златкова: Да. 586 00:27:35,260 --> 00:27:37,050 Това е просто, когато сте не може да комуникира 587 00:27:37,050 --> 00:27:40,299 със сървъра по някаква причина, защото на него ще надолу, или поради някаква друга причина. 588 00:27:40,299 --> 00:27:44,430 589 00:27:44,430 --> 00:27:47,690 Така че да скочи в PHP. 590 00:27:47,690 --> 00:27:49,930 PHP, за разлика от HTML, е език за програмиране. 591 00:27:49,930 --> 00:27:54,820 И ние започнахме да го използвате, защото това е много полезно за уеб програмиране. 592 00:27:54,820 --> 00:27:56,940 >> Ние за първи път го използва в CS50 Finance. 593 00:27:56,940 --> 00:28:02,240 И то основно ни помага да донесе заедно тази маркиране, проектиране, 594 00:28:02,240 --> 00:28:07,460 и как ние всъщност използват информация за да се покаже неща в уеб страница. 595 00:28:07,460 --> 00:28:11,870 Така PHP самата означава PHP Hypertext Preprocessor, 596 00:28:11,870 --> 00:28:15,360 така че това е рекурсивно backnorym от само себе си. 597 00:28:15,360 --> 00:28:22,330 И отваряне тагове за PHP ние отляво и дясната стрелка, с въпросителни знаци 598 00:28:22,330 --> 00:28:23,060 и PHP. 599 00:28:23,060 --> 00:28:25,890 >> Така че ние вече сме виждали един куп него. 600 00:28:25,890 --> 00:28:29,150 Сега, ние просто ще отидем някои от основните неща за него. 601 00:28:29,150 --> 00:28:32,280 Така с PHP, променливата имена започват с знака за долар. 602 00:28:32,280 --> 00:28:35,660 Ние не посочите, отново, променлива написали вече. 603 00:28:35,660 --> 00:28:38,450 Точно както направихме с C, ние не трябва да го направя. 604 00:28:38,450 --> 00:28:41,670 605 00:28:41,670 --> 00:28:44,490 >> Ние можем да направим един куп различни неща с променливи. 606 00:28:44,490 --> 00:28:47,750 Можем да ги съберете заедно от тях слепване 607 00:28:47,750 --> 00:28:52,900 с точкова нотация, която ние не може да се направи в C отново. 608 00:28:52,900 --> 00:28:57,490 Отново имаме малко повече гъвкавост с PHP по отношение на променливи. 609 00:28:57,490 --> 00:29:00,080 Отново, ние не разполагат с основната функция. 610 00:29:00,080 --> 00:29:03,370 >> И PHP се интерпретира за разлика от компилиран, 611 00:29:03,370 --> 00:29:09,970 Така че просто това как ние го направи за C файлове, ние не трябва да направя това за PHP. 612 00:29:09,970 --> 00:29:15,440 Но по-скоро, начинът, по който езикът се управлява от себе си, тя се интерпретира. 613 00:29:15,440 --> 00:29:18,550 И тогава хлабаво напечатани Просто означава, че ние 614 00:29:18,550 --> 00:29:22,490 не е нужно да посочите променлива тип и типовете на променливите 615 00:29:22,490 --> 00:29:25,415 се разбират по време на изпълнение. 616 00:29:25,415 --> 00:29:29,185 >> АУДИТОРИЯ: Но това, което направи кажеш с дот конкатенация? 617 00:29:29,185 --> 00:29:30,060 MARIA Златкова: Разбира се. 618 00:29:30,060 --> 00:29:37,660 Когато искаме да постави нещата together-- така че ако имахме някаква променлива, която 619 00:29:37,660 --> 00:29:41,500 имаше стойността на 3 и имахме друг променлива, която имаше стойността на низ, 620 00:29:41,500 --> 00:29:45,920 бихме могли да поставите променливите заедно с удар от точката между тях 621 00:29:45,920 --> 00:29:46,970 и ги слепване. 622 00:29:46,970 --> 00:29:52,670 Или можем да се създаде променлива, наречена на името 623 00:29:52,670 --> 00:29:56,900 и го сложете заедно с конкатенация на две струни. 624 00:29:56,900 --> 00:30:00,680 >> Така че, ако ние трябваше низ в двойна цитати и ще се постави една точка след него, 625 00:30:00,680 --> 00:30:03,660 и след това имахме още един низ, че ще създаде низ напълно. 626 00:30:03,660 --> 00:30:05,242 >> АУДИТОРИЯ: OK. 627 00:30:05,242 --> 00:30:06,450 MARIA ЛАТВИЯ: Е, че изчистите? 628 00:30:06,450 --> 00:30:07,099 АУДИТОРИЯ: Да. 629 00:30:07,099 --> 00:30:07,890 MARIA Златкова: OK. 630 00:30:07,890 --> 00:30:08,766 Да. 631 00:30:08,766 --> 00:30:11,146 >> АУДИТОРИЯ: Когато казвате тълкува, а не компилира, 632 00:30:11,146 --> 00:30:14,160 говориш не го направите трябва да бъде както е специфична, когато 633 00:30:14,160 --> 00:30:15,906 става въпрос за PHP спрямо C? 634 00:30:15,906 --> 00:30:18,085 635 00:30:18,085 --> 00:30:20,710 MARIA Златкова: Когато казваме тълкува, за разлика от компилиран, 636 00:30:20,710 --> 00:30:21,850 какво ще кажеш? 637 00:30:21,850 --> 00:30:26,220 Така че това означава, че ние не се нуждаем изпълними файлове да тече PHP. 638 00:30:26,220 --> 00:30:29,870 Това означава, че той работи като тя отива. 639 00:30:29,870 --> 00:30:31,650 Това прави ли смисъл? 640 00:30:31,650 --> 00:30:32,495 Малко повече. 641 00:30:32,495 --> 00:30:34,620 Хана Блумберг: Значи ти да се сетиш на преводач 642 00:30:34,620 --> 00:30:38,980 като друга програма, която е отговорна за посещаване ред по ред чрез PHP 643 00:30:38,980 --> 00:30:42,745 и всъщност това изпълняващата, за разлика до всичко съставянето до двоичен. 644 00:30:42,745 --> 00:30:46,050 Той всъщност не означава нищо за това как специфично, което трябва да бъде. 645 00:30:46,050 --> 00:30:49,470 Ние все още трябва да бъдат точни и да не правим забравите запетая, и се уверете, 646 00:30:49,470 --> 00:30:51,470 като сте си знака за долар, и такива неща. 647 00:30:51,470 --> 00:30:52,240 Добър въпрос. 648 00:30:52,240 --> 00:30:53,115 >> MARIA Златкова: Да. 649 00:30:53,115 --> 00:30:55,590 Така ред по ред, като за разлика от C с файлове, 650 00:30:55,590 --> 00:30:59,100 ние трябва да се направи целия финал преди да може действително да го стартирате. 651 00:30:59,100 --> 00:31:00,360 Това е основната разлика. 652 00:31:00,360 --> 00:31:02,655 Но пак, ние не можем наистина да бъде по-конкретен. 653 00:31:02,655 --> 00:31:08,760 654 00:31:08,760 --> 00:31:13,950 Така масиви в PHP представляват всъщност е наредил на картата. 655 00:31:13,950 --> 00:31:17,550 >> Така масиви асоциирани стойности на ключовете. 656 00:31:17,550 --> 00:31:23,350 Двата начина да декларират масив, основаващи се на този синтаксис, 657 00:31:23,350 --> 00:31:26,380 можем да бъдем по-ясно като казва, имаме масив 658 00:31:26,380 --> 00:31:31,010 и ние имаме това key1 който съпоставя да тази стойност 1, key2 който съпоставя стойност 2. 659 00:31:31,010 --> 00:31:34,660 Или просто можем да се създаде масив който съдържа самите стойности 660 00:31:34,660 --> 00:31:38,360 и след това клавишите са разбира по начин. 661 00:31:38,360 --> 00:31:40,000 Всякакви въпроси за това? 662 00:31:40,000 --> 00:31:42,500 >> Публика: Какво би ключовете бъде във втория пример? 663 00:31:42,500 --> 00:31:47,100 664 00:31:47,100 --> 00:31:47,920 0, 1, 2, 3? 665 00:31:47,920 --> 00:31:50,650 666 00:31:50,650 --> 00:31:55,780 >> MARIA Златкова: Например, това е просто ключове в тази не непременно 667 00:31:55,780 --> 00:31:56,550 направи разлика. 668 00:31:56,550 --> 00:32:01,720 Те просто се определи как можете да използва стойностите вътре в него. 669 00:32:01,720 --> 00:32:08,660 Така че, ако имахме foreach цикъл в PHP, които биха 670 00:32:08,660 --> 00:32:14,760 ни позволи да мине през всички стойности, ние може да мине през всички стойности, 671 00:32:14,760 --> 00:32:19,570 дори ако имахме или не е дефинирано на специален код в сайта си 672 00:32:19,570 --> 00:32:20,820 Предишната синтаксис. 673 00:32:20,820 --> 00:32:23,460 >> Така че дори и с този вид от масив, ние все още може да 674 00:32:23,460 --> 00:32:26,260 имат foreach цикъл който преминава през всяка 675 00:32:26,260 --> 00:32:31,240 от стойностите в алгоритъма в масива. 676 00:32:31,240 --> 00:32:36,180 Така че синтаксиса на foreach линия, ние започваме с масив. 677 00:32:36,180 --> 00:32:38,720 678 00:32:38,720 --> 00:32:43,900 Тази променлива $ ARR е реалното ни масив че определени в предишния слайд 679 00:32:43,900 --> 00:32:47,550 като стойност, която буквално отива през всяка от стойностите, 680 00:32:47,550 --> 00:32:50,122 независимо дали имахме ключ или не. 681 00:32:50,122 --> 00:32:53,080 И тогава можем да направим нещо с стойността вътре в контура foreach. 682 00:32:53,080 --> 00:32:57,730 Така че отново, ако имахме масив като този тук created-- 683 00:32:57,730 --> 00:33:03,270 Така че ние имаме ключа на дрън и стойност бар, ключът на Баз и стойност на qux-- 684 00:33:03,270 --> 00:33:09,730 ние можем да имаме foreach цикъл който преминава през масива като ключова ценност 685 00:33:09,730 --> 00:33:11,900 и след това да се направи нещо с ключа и / или стойност. 686 00:33:11,900 --> 00:33:15,980 Но ние не задължително винаги правим трябва да имаш foreach шлейфове, че 687 00:33:15,980 --> 00:33:19,410 преминава през множество, като ключ карта за стойност. 688 00:33:19,410 --> 00:33:26,060 Ние можем да проверете foreach цикъл масив като стойност. 689 00:33:26,060 --> 00:33:28,990 >> Хана Блумберг: И аз мисля, to-- е вашият въпрос, какво 690 00:33:28,990 --> 00:33:31,229 е косвената индекса? 691 00:33:31,229 --> 00:33:31,895 АУДИТОРИЯ: Kinda. 692 00:33:31,895 --> 00:33:32,240 MARIA Златкова: Oh. 693 00:33:32,240 --> 00:33:33,406 Хана Блумберг: Да, да. 694 00:33:33,406 --> 00:33:36,150 Така че основно, ако не укажете ключ, това ще бъде 01. 695 00:33:36,150 --> 00:33:37,140 >> MARIA Златкова: Да. 696 00:33:37,140 --> 00:33:41,718 Точно както с C, това е нула индексират, ако не посочите ключова. 697 00:33:41,718 --> 00:33:42,384 АУДИТОРИЯ: Съжалявам. 698 00:33:42,384 --> 00:33:43,827 Може ли да се опита да говори малко по-силен? 699 00:33:43,827 --> 00:33:45,270 Аз съм като малко проблеми като изслуша всичко. 700 00:33:45,270 --> 00:33:46,478 >> MARIA Златкова: Толкова съжалявам. 701 00:33:46,478 --> 00:33:48,439 Да, разбира се. 702 00:33:48,439 --> 00:33:50,230 Така че искаш да ме да разясни това отново? 703 00:33:50,230 --> 00:33:51,680 Или е this-- 704 00:33:51,680 --> 00:33:54,930 АУДИТОРИЯ: Така че на предишния slide-- ако можете просто да се върна за една секунда. 705 00:33:54,930 --> 00:33:57,313 MARIA Златкова: Разбира се, съжалявам. 706 00:33:57,313 --> 00:33:59,237 АУДИТОРИЯ: Така Второто масив тук не е така 707 00:33:59,237 --> 00:34:04,135 изглежда да имат стойност, до ключ, нещо като [? причинно-следствената връзка. ?] 708 00:34:04,135 --> 00:34:05,343 MARIA Златкова: Добре, добре. 709 00:34:05,343 --> 00:34:07,608 АУДИТОРИЯ: Е, как става това когато ти казват, че всичко или нищо. 710 00:34:07,608 --> 00:34:08,969 За мен, това изглежда като a [? Foo?] вече. 711 00:34:08,969 --> 00:34:10,093 >> MARIA Златкова: Да, да. 712 00:34:10,093 --> 00:34:12,969 Така че отново, това е поръча карта в този смисъл 713 00:34:12,969 --> 00:34:15,639 че там се разбира, например, индексите 714 00:34:15,639 --> 00:34:20,159 тук може да се разбира като 0, 1, 2, 3. 715 00:34:20,159 --> 00:34:25,929 Отново, това е като тези, индекси е нашият еквивалент 716 00:34:25,929 --> 00:34:28,980 да има ключове асоциират с ценности. 717 00:34:28,980 --> 00:34:34,710 Така че, ако ни беше ключов 0-- съжалявам. 718 00:34:34,710 --> 00:34:36,524 >> Хана Блумберг: Не, Има креда тук. 719 00:34:36,524 --> 00:34:36,929 Това всъщност е много хубаво. 720 00:34:36,929 --> 00:34:37,460 >> MARIA Златкова: Това е страхотно. 721 00:34:37,460 --> 00:34:38,260 ДОБРЕ. 722 00:34:38,260 --> 00:34:49,489 Така че отново, $ ARR 0 ще бъде ключът за стойността 1. 723 00:34:49,489 --> 00:34:51,138 0 ще бъде ключът за стойността 1. 724 00:34:51,138 --> 00:34:51,971 АУДИТОРИЯ: Съжалявам. 725 00:34:51,971 --> 00:34:53,190 Това е невидим. 726 00:34:53,190 --> 00:34:53,659 >> Хана Блумберг: Добре, няма значение. 727 00:34:53,659 --> 00:34:54,980 Chalk е лоша идея. 728 00:34:54,980 --> 00:34:58,030 Аз го вземе обратно. 729 00:34:58,030 --> 00:35:01,425 Можете да мислите за ключовете като 0 карти на стойност 1. 730 00:35:01,425 --> 00:35:02,300 MARIA Златкова: Да. 731 00:35:02,300 --> 00:35:04,630 Така че това е 0, това е 1, 2, 3. 732 00:35:04,630 --> 00:35:05,760 Това могат да бъдат Вашите ключове. 733 00:35:05,760 --> 00:35:10,020 Можете да мислите за тях as-- да. 734 00:35:10,020 --> 00:35:12,740 Така че вместо да се налага изрични ключове, те са 735 00:35:12,740 --> 00:35:17,180 нещо като разбира като индексите, като се започва при 0. 736 00:35:17,180 --> 00:35:21,630 737 00:35:21,630 --> 00:35:24,820 The тебешира не помогна. 738 00:35:24,820 --> 00:35:25,722 Да. 739 00:35:25,722 --> 00:35:30,914 >> АУДИТОРИЯ: За цикъла foreach, ако искаме да разглеждаш като стойност, 740 00:35:30,914 --> 00:35:33,245 тя би просто автоматично индекс на 0? 741 00:35:33,245 --> 00:35:34,120 MARIA Златкова: Да. 742 00:35:34,120 --> 00:35:35,745 Той ще премине през всяка от стойностите. 743 00:35:35,745 --> 00:35:39,130 АУДИТОРИЯ: [недоловим] като 0 или би, че просто правя 0? 744 00:35:39,130 --> 00:35:43,710 >> MARIA Златкова: Може би трябва да се каже, като знак за долар, а след това 745 00:35:43,710 --> 00:35:46,266 някои име на променлива, стойност. 746 00:35:46,266 --> 00:35:47,182 АУДИТОРИЯ: [недоловим]. 747 00:35:47,182 --> 00:35:50,048 748 00:35:50,048 --> 00:35:50,964 MARIA Златкова: Съжаляваме? 749 00:35:50,964 --> 00:35:52,839 АУДИТОРИЯ: За съжаление, аз съм Просто се опитвам да си спомня. 750 00:35:52,839 --> 00:35:57,190 Как бихте се, че ако можете да го направите автоматично индексиране е само 0 на? 751 00:35:57,190 --> 00:36:00,780 >> MARIA Златкова: Е, как бихте направили, че ако не е имал конкретни ключови имена? 752 00:36:00,780 --> 00:36:01,710 >> АУДИТОРИЯ: Да. 753 00:36:01,710 --> 00:36:07,820 >> MARIA Златкова: Може би просто define-- само да кажа, себе си като някакво име. 754 00:36:07,820 --> 00:36:17,950 Така че във вашите psets, момчета мощ не забравяйте, foreach $ ред, колкото $ редове, 755 00:36:17,950 --> 00:36:24,610 ние бъдем себе си създал този ред $ казвайки ние искаме да мине през ред, колкото $ редове. 756 00:36:24,610 --> 00:36:28,360 Въпреки, че не сме имали това изрично $ реда, определени, 757 00:36:28,360 --> 00:36:31,990 бихме могли просто да отида и Казвам това, може да бъде нашият ключ, 758 00:36:31,990 --> 00:36:33,615 и просто да мине през всяка от стойностите. 759 00:36:33,615 --> 00:36:37,295 760 00:36:37,295 --> 00:36:41,660 >> АУДИТОРИЯ: Така е стойност нова променлива ние създаваме за съхранение [недоловим]? 761 00:36:41,660 --> 00:36:46,820 762 00:36:46,820 --> 00:36:49,990 >> MARIA Златкова: Така че това не е присъщо нова променлива. 763 00:36:49,990 --> 00:37:00,310 Това е променлива, която се отнася до вътрешността на масива на всеки от тях. 764 00:37:00,310 --> 00:37:02,060 Хана Блумберг: Това е ново име на променлива. 765 00:37:02,060 --> 00:37:04,018 MARIA Златкова: Да, това е ново име на променлива, 766 00:37:04,018 --> 00:37:06,680 но това не е inherently-- да. 767 00:37:06,680 --> 00:37:08,950 Това е просто една нова променлива че можете да направите това. 768 00:37:08,950 --> 00:37:12,680 Така че просто как сме направили $ ред, в $ редове, редове 769 00:37:12,680 --> 00:37:17,980 е нова променлива име, което ние може да създаде в нашата foreach цикъл. 770 00:37:17,980 --> 00:37:22,065 То не трябва да предхожда преди това. 771 00:37:22,065 --> 00:37:25,777 >> АУДИТОРИЯ: Бихте ли проверете логика за всяка, с помощта на пример има? 772 00:37:25,777 --> 00:37:26,610 MARIA Златкова: MHM. 773 00:37:26,610 --> 00:37:31,240 774 00:37:31,240 --> 00:37:32,080 О, съжалявам. 775 00:37:32,080 --> 00:37:33,780 Ето примера. 776 00:37:33,780 --> 00:37:34,280 Сигурен. 777 00:37:34,280 --> 00:37:38,950 Така че за всеки array-- така това означава, отидете на този масив 778 00:37:38,950 --> 00:37:43,930 като ключов value--, че ще ходи да мине през този масив 779 00:37:43,930 --> 00:37:49,480 и първо да отида и да получите Foo г. ключова дрън и бара на стойност. 780 00:37:49,480 --> 00:37:51,570 И тогава на втория итерация на цикъл за, 781 00:37:51,570 --> 00:37:55,090 то се случва да мине през и да вземат ключовата Баз и qux на стойност. 782 00:37:55,090 --> 00:38:00,512 И тогава можете да направите нещо с някоя от тях или и двете от тях. 783 00:38:00,512 --> 00:38:03,488 >> АУДИТОРИЯ: Така че идеята зад като ключов момент за стойността, 784 00:38:03,488 --> 00:38:07,470 Какво искаш да свършиш достъп? 785 00:38:07,470 --> 00:38:10,680 >> MARIA Златкова: Каква е идеята да имат ключова посочващо да ценят? 786 00:38:10,680 --> 00:38:16,400 Това е просто друга конвенция, друг начин за преминаване през масива 787 00:38:16,400 --> 00:38:22,600 и е в състояние за достъп или на ключ или стойността, или и двете и да ги използват. 788 00:38:22,600 --> 00:38:27,100 >> АУДИТОРИЯ: Каква е ролята на поръчате че foreach работи в? 789 00:38:27,100 --> 00:38:29,250 Така че, ако бяхме да добавите елементи в масива късно 790 00:38:29,250 --> 00:38:32,140 ще бъдат тези на първите наречена в foreach масив, 791 00:38:32,140 --> 00:38:33,750 или ще бъде тя по-късно? 792 00:38:33,750 --> 00:38:37,770 >> MARIA Златкова: И така, какво е реда, че foreach 793 00:38:37,770 --> 00:38:39,210 линия преминава през масив в? 794 00:38:39,210 --> 00:38:42,220 Той преминава през първата елемент на последния елемент, 795 00:38:42,220 --> 00:38:43,400 до последната добавя елемент. 796 00:38:43,400 --> 00:38:48,020 Ако добавите елементи по-късно, те биха се accessed-- първите елементи ще 797 00:38:48,020 --> 00:38:51,410 достъпен като първата елементи на масива, 798 00:38:51,410 --> 00:38:57,620 и тогава ще мине през всеки от елементите като нещо като ordered-- 799 00:38:57,620 --> 00:39:02,930 Не подредена, но начинът, по който те са били пуснати в масива. 800 00:39:02,930 --> 00:39:06,855 >> АУДИТОРИЯ: Така че нови елементи се добавя по-късно? 801 00:39:06,855 --> 00:39:10,680 Така че те са added-- те ще бъдат на последните такива в [? итерация. ?] 802 00:39:10,680 --> 00:39:14,280 >> MARIA Златкова: Нови елементи can-- общо взето, когато се добавят нови елементи, 803 00:39:14,280 --> 00:39:16,520 те се добавят към края на масива? 804 00:39:16,520 --> 00:39:17,632 >> АУДИТОРИЯ: Да. 805 00:39:17,632 --> 00:39:18,840 MARIA Златкова: Мисля, че да. 806 00:39:18,840 --> 00:39:20,850 Да. 807 00:39:20,850 --> 00:39:24,330 И след това с вашия foreach цикъл, След като сте добавили нови елементи 808 00:39:24,330 --> 00:39:26,790 и ти мине през тях, новите елементи би 809 00:39:26,790 --> 00:39:30,930 accessed-- бъде новият елемент, ако това е прибавя последен, че ще бъде достъпен миналата. 810 00:39:30,930 --> 00:39:34,416 >> АУДИТОРИЯ: Можете ли да дадете пример на нещо, което би [недоловим] 811 00:39:34,416 --> 00:39:37,404 с нещо със стойност като [недоловим] или стойност, 812 00:39:37,404 --> 00:39:38,910 Харесва ми как бихте форматирате това? 813 00:39:38,910 --> 00:39:39,785 >> MARIA Златкова: Разбира се. 814 00:39:39,785 --> 00:39:42,340 815 00:39:42,340 --> 00:39:46,410 Мога ли да дам един пример за това, което ние ще направим със стойността? 816 00:39:46,410 --> 00:39:52,440 Така че това, което вие може да са запознати с е, че сме преминали през масив 817 00:39:52,440 --> 00:39:55,380 и в общи линии на хартиен всеки от елементите, 818 00:39:55,380 --> 00:40:00,910 например, като част от нареден списък или нещо, което. 819 00:40:00,910 --> 00:40:02,674 Това прави ли смисъл, или искаме to-- 820 00:40:02,674 --> 00:40:04,340 АУДИТОРИЯ: Можем ли да отпечатате тези стойности навън? 821 00:40:04,340 --> 00:40:13,220 MARIA Златкова: Да, ние можем да отпечатате и след това основно $ стойност, тъй като най- 822 00:40:13,220 --> 00:40:16,570 тази конкретна стойност, ние ще бъдем отпечатване на стойността вътре в него. 823 00:40:16,570 --> 00:40:20,150 Така че, ако бяхме в първата ни итерация от него и ние отпечатан $ стойност, 824 00:40:20,150 --> 00:40:23,775 щяхме да печатате бар. 825 00:40:23,775 --> 00:40:27,020 >> АУДИТОРИЯ: Прави ли има и за линии в PHP или просто foreach вериги? 826 00:40:27,020 --> 00:40:30,430 >> MARIA Златкова: Няма също така и за линии в PHP. 827 00:40:30,430 --> 00:40:33,399 И тяхната логика е най-вече на същото като това, което сте свикнали. 828 00:40:33,399 --> 00:40:34,690 АУДИТОРИЯ: Така стойността му е нищожна. 829 00:40:34,690 --> 00:40:35,090 MARIA Златкова: То е като един и същ. 830 00:40:35,090 --> 00:40:35,590 Да. 831 00:40:35,590 --> 00:40:37,747 АУДИТОРИЯ: Аз съм просто ще попитам. 832 00:40:37,747 --> 00:40:39,695 Така че, когато обявят масив, не е нужно 833 00:40:39,695 --> 00:40:42,617 да каже какъв размер, че ще да, което означава, че можете просто 834 00:40:42,617 --> 00:40:44,417 добавете и ще отнемат елементи [недоловим]. 835 00:40:44,417 --> 00:40:45,250 MARIA Златкова: Мда. 836 00:40:45,250 --> 00:40:45,750 Да. 837 00:40:45,750 --> 00:40:46,251 Точно. 838 00:40:46,251 --> 00:40:48,875 Когато декларираме масив, ние не е нужно да се каже какъв размер е то, 839 00:40:48,875 --> 00:40:51,022 така че можем да просто добавете елементи върху нея по-късно, както добре. 840 00:40:51,022 --> 00:40:55,075 841 00:40:55,075 --> 00:40:55,700 Още въпроси? 842 00:40:55,700 --> 00:40:59,870 843 00:40:59,870 --> 00:41:05,950 Така привеждане PHP и HTML заедно, това, което сме seen-- добре, 844 00:41:05,950 --> 00:41:15,130 Например, в този пример, ние имаме една HTML форма, която има поле за въвеждане. 845 00:41:15,130 --> 00:41:18,830 >> И полето за въвеждане е само име и след това го има бутон Изпрати. 846 00:41:18,830 --> 00:41:26,040 И когато натиснете Submit бутон, в нашата hello.php файл, 847 00:41:26,040 --> 00:41:32,130 тъй като методът за формата е получите, ние можем да получите достъп до всичко, което е по име 848 00:41:32,130 --> 00:41:40,360 от настоящата получите глобална променлива, че is-- синтаксиса за него е $ _GET. 849 00:41:40,360 --> 00:41:44,520 И тогава можем да имаме достъп, независимо от въвеждане на потребителя в рамките на тази форма за името 850 00:41:44,520 --> 00:41:47,410 като се посочва името на тази област. 851 00:41:47,410 --> 00:41:51,480 852 00:41:51,480 --> 00:41:55,060 >> Всякакви други въпроси или който и да е въпроси за тази конкретен пример? 853 00:41:55,060 --> 00:41:58,275 >> АУДИТОРИЯ: Къде е PHP? 854 00:41:58,275 --> 00:41:59,150 MARIA Златкова: Тук. 855 00:41:59,150 --> 00:42:01,150 Така че това е нашата отваряне маркер за PHP. 856 00:42:01,150 --> 00:42:01,530 >> АУДИТОРИЯ: О, да. 857 00:42:01,530 --> 00:42:02,363 >> MARIA Златкова: Да. 858 00:42:02,363 --> 00:42:05,320 859 00:42:05,320 --> 00:42:09,609 >> Хана Блумберг: The = е стенограмите за това е, PHP и просто ехо. 860 00:42:09,609 --> 00:42:10,150 АУДИТОРИЯ: Oh. 861 00:42:10,150 --> 00:42:10,720 MARIA Златкова: Да, съжалявам. 862 00:42:10,720 --> 00:42:12,040 Трябваше да се направи, че ясно. 863 00:42:12,040 --> 00:42:13,759 >> Хана Блумберг: Print. 864 00:42:13,759 --> 00:42:16,800 MARIA Златкова: Това е просто функция която ни позволява да отпечатате нещо. 865 00:42:16,800 --> 00:42:19,795 866 00:42:19,795 --> 00:42:20,420 Great въпрос. 867 00:42:20,420 --> 00:42:24,140 868 00:42:24,140 --> 00:42:25,495 Така going-- да. 869 00:42:25,495 --> 00:42:31,940 >> АУДИТОРИЯ: Има ли щеше да бъде доста малко на ръка кодиране на PHP и HTML 870 00:42:31,940 --> 00:42:33,450 на викторина 1? 871 00:42:33,450 --> 00:42:36,310 872 00:42:36,310 --> 00:42:38,810 MARIA Златкова: Не може да има справедлива стойност на тълкуване 873 00:42:38,810 --> 00:42:43,330 на PHP и HTML, не е задължително като огромно количество кодиране, 874 00:42:43,330 --> 00:42:46,960 въпреки че може да се наложи да напише foreach цикъл, все пак, а за цикъл. 875 00:42:46,960 --> 00:42:49,790 Всеки от контурите, че покриване тук е честна игра. 876 00:42:49,790 --> 00:42:51,889 И това е най-вече тя. 877 00:42:51,889 --> 00:42:53,430 Хана Блумберг: Бих се получава. 878 00:42:53,430 --> 00:42:57,010 По същия начин, по който те помолих да напиши куп C функции в викторина 0, 879 00:42:57,010 --> 00:42:59,766 Бих бил готов да направи за същата в PHP и JavaScript. 880 00:42:59,766 --> 00:43:00,640 MARIA Златкова: Да. 881 00:43:00,640 --> 00:43:03,210 Хана Блумберг: Бих казал, а little-- като ние не сме 882 00:43:03,210 --> 00:43:06,251 ще ви накара да напиша огромна HTML страница, просто защото това е малко по- 883 00:43:06,251 --> 00:43:08,240 досаден, но може да се наложи части. 884 00:43:08,240 --> 00:43:09,310 Това е напълно честна игра. 885 00:43:09,310 --> 00:43:11,082 Като малък HTML страница, напълно справедливо. 886 00:43:11,082 --> 00:43:11,623 АУДИТОРИЯ: OK. 887 00:43:11,623 --> 00:43:13,814 Какво ще кажете за в JavaScript, както и? 888 00:43:13,814 --> 00:43:14,730 Хана Блумберг: Да. 889 00:43:14,730 --> 00:43:15,250 Честна игра JavaScript е. 890 00:43:15,250 --> 00:43:15,635 >> MARIA Златкова: Да. 891 00:43:15,635 --> 00:43:16,801 Това е напълно честна игра. 892 00:43:16,801 --> 00:43:19,280 Хана Блумберг: Ще стигнем По подобен на този на 10 минути. 893 00:43:19,280 --> 00:43:23,750 >> MARIA Златкова: SQL, отново, Език за структурирани заявки. 894 00:43:23,750 --> 00:43:28,651 По същество това ни позволява да управлявате данни в релационна база данни за управление на 895 00:43:28,651 --> 00:43:29,150 система. 896 00:43:29,150 --> 00:43:31,149 Това просто означава, основно че имаме някъде 897 00:43:31,149 --> 00:43:37,980 за съхраняване на някои данни, че ние може да искате да използвате в сайт или под някаква друга форма. 898 00:43:37,980 --> 00:43:42,190 И тогава имаме заявки, за да получите информация от нашата база данни, 899 00:43:42,190 --> 00:43:44,320 или да поставите информация в тях. 900 00:43:44,320 --> 00:43:47,560 Много от общата ones-- UPDATE, INSERT, SELECT и DELETE. 901 00:43:47,560 --> 00:43:50,790 >> Така че за UPDATE, това е синтаксиса за актуализиране на данните в база данни. 902 00:43:50,790 --> 00:43:53,330 903 00:43:53,330 --> 00:43:57,340 Актуализиране на тази таблица, наречена таблица с думите, SET, 904 00:43:57,340 --> 00:44:04,170 можем да зададем някои стойности във всички редове на равно нещо друго. 905 00:44:04,170 --> 00:44:09,410 Така че ние можем също да посочите някои специфични записи, които искаме да се промени 906 00:44:09,410 --> 00:44:11,240 и че може да бъде с помощта КЪДЕ. 907 00:44:11,240 --> 00:44:16,380 И ние можем да се уточни, че ние искаме да само модифицирате някои редове, където къщата за, 908 00:44:16,380 --> 00:44:19,830 ако имахме една маса на студентите и всички студенти имали къща, 909 00:44:19,830 --> 00:44:24,890 така че ние ще се промени само някои стойности когато една къща се равнява на куриер, 910 00:44:24,890 --> 00:44:25,430 например. 911 00:44:25,430 --> 00:44:29,120 912 00:44:29,120 --> 00:44:31,800 >> За INSERT, можем да вмъкнете определени стойности в таблица. 913 00:44:31,800 --> 00:44:35,150 Така INSERT INTO маса, и след това стойностите, 914 00:44:35,150 --> 00:44:39,080 и след това в скоби, ние зададени по който се оценява искате да вмъкнете. 915 00:44:39,080 --> 00:44:43,220 Така INSERT INTO маса, col1 и col2, стойността е VAL1 и VAL2. 916 00:44:43,220 --> 00:44:48,930 Така че това вмъква в основата на нов ред в таблица, съдържаща стойностите 1 и 2 917 00:44:48,930 --> 00:44:50,850 В колоните 1 и 2. 918 00:44:50,850 --> 00:44:54,760 >> И тогава ние ще отидем един бърз пример как това изглежда 919 00:44:54,760 --> 00:44:56,310 като в нашата база данни малко. 920 00:44:56,310 --> 00:44:58,685 Но този последен въпрос, че аз мисля, че започваш да се разясни, 921 00:44:58,685 --> 00:45:01,450 SELECT, той просто ни позволява за да изберете данни от таблица 922 00:45:01,450 --> 00:45:03,080 по възможност да го използвате по-късно. 923 00:45:03,080 --> 00:45:05,830 И начина, по който да направите това е, че ние просто да го съхранявате в някои променлива. 924 00:45:05,830 --> 00:45:07,780 И тогава ние евентуално да го използвате отново. 925 00:45:07,780 --> 00:45:10,260 >> Така SELECT звезда означава изберете всички. 926 00:45:10,260 --> 00:45:13,280 Това е просто стенограмите за избиране на всички. 927 00:45:13,280 --> 00:45:19,760 ОТ КЪДЕ маса, ще се търсят за някои специфични условия, 928 00:45:19,760 --> 00:45:22,290 така, когато колоната се равнява нещо, например. 929 00:45:22,290 --> 00:45:24,410 Ако ние просто исках да избери всички от трапезата, 930 00:45:24,410 --> 00:45:28,400 това просто избира всички колони и всички редове от таблица. 931 00:45:28,400 --> 00:45:32,040 >> И след това изтриете от таблица КЪДЕ цв равнява нещо, 932 00:45:32,040 --> 00:45:36,440 това просто изтрива някои ред от нашата маса 933 00:45:36,440 --> 00:45:38,860 където ние имаме някои специфични условия. 934 00:45:38,860 --> 00:45:41,870 В този случай, условията са колона се равнява на нещо. 935 00:45:41,870 --> 00:45:43,460 Така че само един бърз пример за това. 936 00:45:43,460 --> 00:45:49,100 Ако имаме тази таблица точно тук и ние поставете го в една маса, тези стойности, 937 00:45:49,100 --> 00:45:50,400 че ще се въведе нов ред. 938 00:45:50,400 --> 00:45:56,380 И ако имахме автоматично увеличение, това би Просто увеличение нашия ID 0-1, за да 2. 939 00:45:56,380 --> 00:46:00,010 >> Ако избран от всички ученици, то просто връща всички области и всички редове. 940 00:46:00,010 --> 00:46:02,430 Когато година е по-голяма малка или равна на 2016 г., 941 00:46:02,430 --> 00:46:04,390 че просто ще се върне Хана и себе си. 942 00:46:04,390 --> 00:46:08,360 И след това, ако ние просто избрано година номер и година от учениците 943 00:46:08,360 --> 00:46:11,710 когато къщата е Cabot House, че би, отново, върнете Хана и себе си. 944 00:46:11,710 --> 00:46:14,430 >> След това, ако ние изтрит от учениците където име е равна на Роб, 945 00:46:14,430 --> 00:46:16,760 че ще изтрие целият ред. 946 00:46:16,760 --> 00:46:19,696 И след това, ако ние си поставихме за име, студенти UPDATE 947 00:46:19,696 --> 00:46:21,570 SET име се равнява на Daven КЪДЕ къща е равна 948 00:46:21,570 --> 00:46:27,010 Cabot House, че ще ходи да отидете тези редове и след това да актуализират името. 949 00:46:27,010 --> 00:46:31,470 >> И тогава няколко типа SQL данни са CHAR, VARCHAR, INT, и оборотни средства. 950 00:46:31,470 --> 00:46:32,760 Това са честна игра. 951 00:46:32,760 --> 00:46:36,740 Аз ще отида отново и се уверете, че знаете 952 00:46:36,740 --> 00:46:40,930 и да ги има на вашия мамят лист, това, което всеки от тези знаци 953 00:46:40,930 --> 00:46:44,140 са били използвани за какво можете да ги използват на вашите psets, 954 00:46:44,140 --> 00:46:48,050 и се уверете, че сте запознати и удобно с налага да избирате 955 00:46:48,050 --> 00:46:51,450 от различни типове данни в твоята pset. 956 00:46:51,450 --> 00:46:51,950 Да. 957 00:46:51,950 --> 00:46:54,300 >> АУДИТОРИЯ: Какво се съхранява тази таблица? 958 00:46:54,300 --> 00:46:57,119 Да, в което се съхранява тази таблица? 959 00:46:57,119 --> 00:46:59,160 MARIA Златкова: Е, точно сега, това не е съхранена. 960 00:46:59,160 --> 00:47:00,700 Както и да е, където се съхранява тази таблица? 961 00:47:00,700 --> 00:47:04,503 Но това може да се съхранява в база данни SQL. 962 00:47:04,503 --> 00:47:07,330 >> АУДИТОРИЯ: А къде е SQL база данни? 963 00:47:07,330 --> 00:47:11,200 В компютъра, онлайн някъде, сървърът? 964 00:47:11,200 --> 00:47:15,000 >> MARIA Златкова: Тя може да бъде брой различни неща. 965 00:47:15,000 --> 00:47:19,690 >> Хана Блумберг: Ние сме свързан с SQL таблици предимно с PhpMyAdmin. 966 00:47:19,690 --> 00:47:22,060 Така че ние може да зададете на сървъра да ги съхранява за нас. 967 00:47:22,060 --> 00:47:23,830 Бихме могли да ги съхранявате на нашия собствен компютър. 968 00:47:23,830 --> 00:47:27,950 >> MARIA Златкова: Просто зависи от как искате да го направим за себе си. 969 00:47:27,950 --> 00:47:30,075 Но ние сме били съхраняване тях, като Hannah споменато, 970 00:47:30,075 --> 00:47:31,755 на PhpMyAdmin, който е онлайн. 971 00:47:31,755 --> 00:47:36,550 972 00:47:36,550 --> 00:47:39,280 И след това начина, по който използвате PHP и SQL, ние го съхранявате 973 00:47:39,280 --> 00:47:43,450 в някаква променлива това, което сме попита за. 974 00:47:43,450 --> 00:47:48,370 >> Така че, ако ние Избор на всички от историята където user_id равнява на идентификатор на сесията, 975 00:47:48,370 --> 00:47:53,900 че да изберете всички редове за конкретния човек, който 976 00:47:53,900 --> 00:47:58,327 е влязъл в историята от маса и ги подреди в реда. 977 00:47:58,327 --> 00:48:00,410 A готино нещо да знаете е, тази функция заявка CS50 е 978 00:48:00,410 --> 00:48:02,180 предпазва от SQL инжектиране тагове. 979 00:48:02,180 --> 00:48:07,420 Това просто означава, че тя се грижи на входа, който е влязъл е вярна 980 00:48:07,420 --> 00:48:09,920 и че лицето, което навлиза на входа 981 00:48:09,920 --> 00:48:15,100 не се опитва да въведе някакъв злонамерен код или да пуснете нашите маси 982 00:48:15,100 --> 00:48:17,305 или изтриете всичко вътре в нашата база данни. 983 00:48:17,305 --> 00:48:20,060 984 00:48:20,060 --> 00:48:23,400 >> Един бърз преглед на Model View Controller модел 985 00:48:23,400 --> 00:48:27,360 това е просто един начин за организиране на и мисля за код. 986 00:48:27,360 --> 00:48:29,100 Това е отново, парадигма дизайн. 987 00:48:29,100 --> 00:48:33,380 Това означава, че ние can-- и това е добра практика 988 00:48:33,380 --> 00:48:37,790 да се разделят на различни части на нашия код и това, което те 989 00:48:37,790 --> 00:48:40,530 контролира в тези три парадигми. 990 00:48:40,530 --> 00:48:46,700 >> Така че нашето мнение е най-често ни шаблони, нашата оформление, начинът, 991 00:48:46,700 --> 00:48:48,260 че ние зададете как нашият код изглежда. 992 00:48:48,260 --> 00:48:55,190 Това е най-вече нашите CSS файлове и начина, по който че определени дизайна на нашия код, 993 00:48:55,190 --> 00:48:55,710 основно. 994 00:48:55,710 --> 00:48:59,280 Нашата контролер е най-вече това, което ние сме били прави с PHP файлове. 995 00:48:59,280 --> 00:49:03,030 Така че отново, работещи с информация, която имаме 996 00:49:03,030 --> 00:49:06,700 и за определяне на начина, че информация се използва, 997 00:49:06,700 --> 00:49:10,660 и след това преминаване тази информация или върху мнението, или модела. 998 00:49:10,660 --> 00:49:13,880 И модела, начинът, по който ние сме Използвам т.е. е била нашата база данни, 999 00:49:13,880 --> 00:49:17,510 така, когато информацията ни е съхранява така че има някъде 1000 00:49:17,510 --> 00:49:21,490 да живеем, и имащи някоя от код, който се отнася до начина, 1001 00:49:21,490 --> 00:49:25,410 че сме се, че информацията, или така, че ние да актуализира тази информация. 1002 00:49:25,410 --> 00:49:28,940 1003 00:49:28,940 --> 00:49:33,200 >> Така че в този модел MVC, HTTP искания се изпращат на уеб сървър. 1004 00:49:33,200 --> 00:49:36,220 След това, интерпретира контролер По искане от страна на потребителя 1005 00:49:36,220 --> 00:49:38,260 и след това се проверява на входа за употреба. 1006 00:49:38,260 --> 00:49:41,580 Това е опция, която имаме контролерът комуникира 1007 00:49:41,580 --> 00:49:44,000 с модел, така че нещо като нашата база данни 1008 00:49:44,000 --> 00:49:47,500 или някои други функции предаваща информация. 1009 00:49:47,500 --> 00:49:50,340 И накрая, на контролера преминава информация върху изгледа 1010 00:49:50,340 --> 00:49:52,090 така че тя може да бъде постановено и че тя може да 1011 00:49:52,090 --> 00:49:55,860 стават видими за всяко лице, достъп до уеб страницата. 1012 00:49:55,860 --> 00:49:58,440 1013 00:49:58,440 --> 00:50:01,340 >> Някакви въпроси? 1014 00:50:01,340 --> 00:50:01,840 Awesome. 1015 00:50:01,840 --> 00:50:04,530 1016 00:50:04,530 --> 00:50:08,469 Така че отново, моделът, неговата функция, отново, 1017 00:50:08,469 --> 00:50:11,260 е устойчиво съхранение на информация, управление и организиране на данни. 1018 00:50:11,260 --> 00:50:13,890 И това, което сме виждали толкова доколкото е базата данни MySQL 1019 00:50:13,890 --> 00:50:16,200 и всякакви файлове с данни, които могат да използват. 1020 00:50:16,200 --> 00:50:20,580 >> Виж, представяне на информация на потребителя, ПС, или потребителски интерфейс. 1021 00:50:20,580 --> 00:50:22,350 И пример за това е HTML. 1022 00:50:22,350 --> 00:50:23,950 И тогава можем да имаме минимално PHP. 1023 00:50:23,950 --> 00:50:28,360 Така че за цикъл който итерации в сравнение с данните, които са отпечатани 1024 00:50:28,360 --> 00:50:30,720 и е част от гледката, като за разлика от администратора. 1025 00:50:30,720 --> 00:50:35,660 И тогава много от нашите PHP файлове попадат в категорията на контролера. 1026 00:50:35,660 --> 00:50:38,410 Тя просто се обработва заявките на потребителите и получава информация от модела. 1027 00:50:38,410 --> 00:50:42,880 1028 00:50:42,880 --> 00:50:45,590 >> Скачането в документ Object Model, това просто 1029 00:50:45,590 --> 00:50:47,700 се отнася до начина, по който HTML документи са организирани. 1030 00:50:47,700 --> 00:50:51,600 И те са организирани в дърво структура, която има йерархия. 1031 00:50:51,600 --> 00:50:56,720 Така че, ако ние имаме достъп до [недоловим] представяне на документа, 1032 00:50:56,720 --> 00:51:02,750 можем да работим с документа, като манипулираме обекти основно. 1033 00:51:02,750 --> 00:51:06,630 >> И за да има малко по-ясно, когато 1034 00:51:06,630 --> 00:51:10,540 ние имаме много на нашата различни тагове реагират 1035 00:51:10,540 --> 00:51:12,590 към различни маршрути в нашето дърво. 1036 00:51:12,590 --> 00:51:17,070 И тогава за този пример, ние има изходен документ възел. 1037 00:51:17,070 --> 00:51:20,010 Ние имаме, а след това, нашата HTML възел че се разделя на главата и тялото. 1038 00:51:20,010 --> 00:51:22,810 Head има заглавие и след това заглавие съдържа здравей, свят. 1039 00:51:22,810 --> 00:51:24,860 И нашето тяло просто съдържа здравей, свят, както добре. 1040 00:51:24,860 --> 00:51:28,700 1041 00:51:28,700 --> 00:51:31,900 >> Така че на всички въпроси на всяко от неща, които са обхванати досега? 1042 00:51:31,900 --> 00:51:35,891 И ако не, ще Hannah поеме с JavaScript. 1043 00:51:35,891 --> 00:51:36,390 Awesome. 1044 00:51:36,390 --> 00:51:37,473 >> Хана Блумберг: OK, хладно. 1045 00:51:37,473 --> 00:51:40,980 Ако нещо идва с PHP или HTML, или който и да е от нещата, Maria покрити, 1046 00:51:40,980 --> 00:51:42,700 ние винаги може да направите пауза. 1047 00:51:42,700 --> 00:51:46,430 Ние правим по-добре на отново, толкова страхотно. 1048 00:51:46,430 --> 00:51:48,770 И само за да се върнете много бързо с това, 1049 00:51:48,770 --> 00:51:51,010 ако погледнете всеки изминалата година изпита, това 1050 00:51:51,010 --> 00:51:54,120 идва either-- тук е някои HTML, направи тази схема. 1051 00:51:54,120 --> 00:51:58,380 Или ето тази схема, да направи някои HTML, така че със сигурност, че практикуват. 1052 00:51:58,380 --> 00:52:01,500 И тогава това е една гарантирана въпрос, който можете да получите право. 1053 00:52:01,500 --> 00:52:02,000 Готино. 1054 00:52:02,000 --> 00:52:04,510 Така че нека да говорим за JavaScript и как тя е малко по- 1055 00:52:04,510 --> 00:52:09,130 различно от езици като PHP и C, двата езика, които видяхме по-рано. 1056 00:52:09,130 --> 00:52:10,780 Така че номер едно, това е хлабаво написали. 1057 00:52:10,780 --> 00:52:14,630 Това е като PHP, но за разлика от C. 1058 00:52:14,630 --> 00:52:15,890 >> Това е интерпретиран език. 1059 00:52:15,890 --> 00:52:19,870 Отново, това е все едно PHP, за разлика от C. И това 1060 00:52:19,870 --> 00:52:24,630 ще ни позволи да го use-- работи много добре с уеб страници. 1061 00:52:24,630 --> 00:52:28,350 Това ще ни позволи да се манипулират съдържанието и как изглежда 1062 00:52:28,350 --> 00:52:30,300 и какво прави. 1063 00:52:30,300 --> 00:52:32,330 >> Отиваме да видим малко на Аякс. 1064 00:52:32,330 --> 00:52:36,140 Тя ни позволява да общуват асинхронно с различни сървъри 1065 00:52:36,140 --> 00:52:37,950 и да получите информация. 1066 00:52:37,950 --> 00:52:42,820 И това е нещо, което наистина разделя JavaScript от PHP и C 1067 00:52:42,820 --> 00:52:45,590 е, че тя е от страна на клиента. 1068 00:52:45,590 --> 00:52:49,860 И двете PHP и C са обикновено от страна на сървъра. 1069 00:52:49,860 --> 00:52:51,960 >> За по-голямата част и почти изцяло това, което 1070 00:52:51,960 --> 00:52:53,900 сме виждали, поне в този клас, JavaScript 1071 00:52:53,900 --> 00:52:57,040 действа от страна на клиента, което означава, че браузърът е всъщност 1072 00:52:57,040 --> 00:52:58,597 отговаря за стопанисването. 1073 00:52:58,597 --> 00:53:01,180 А това означава, че ние не правим Трябва да взаимодействат със сървъра. 1074 00:53:01,180 --> 00:53:04,380 Така че това означава, че той може да бъде много по-бързо защото това е всъщност само това е Chrome, 1075 00:53:04,380 --> 00:53:10,420 това е Safari, това е Firefox, каквото и да използвате всъщност използвате вашия JavaScript. 1076 00:53:10,420 --> 00:53:12,290 >> АУДИТОРИЯ: Какво означава асинхронен означава? 1077 00:53:12,290 --> 00:53:13,620 >> Хана Блумберг: Ах, какво се асинхронно означава? 1078 00:53:13,620 --> 00:53:14,250 Great въпрос. 1079 00:53:14,250 --> 00:53:17,890 Асинхронно means-- и, в която съдържанието 1080 00:53:17,890 --> 00:53:22,140 ние използваме това е, ОК, ние създавате уеб страница 1081 00:53:22,140 --> 00:53:23,860 и ние трябва да получите някаква информация. 1082 00:53:23,860 --> 00:53:28,250 Така че с примера на колаж, някаква информация, че ние може да искате 1083 00:53:28,250 --> 00:53:30,580 е заглавия на статии. 1084 00:53:30,580 --> 00:53:33,330 Сега, ние could-- една опция е да го направя синхронно 1085 00:53:33,330 --> 00:53:37,940 а това означава, нека да спрете, иди се статията, 1086 00:53:37,940 --> 00:53:41,275 получите статия гърба, а след това правят, но това ще бъде много бавно. 1087 00:53:41,275 --> 00:53:44,150 Това би било лошо потребителски опит защото просто ще се седи 1088 00:53:44,150 --> 00:53:46,630 там в очакване на нещо, за да се отговори. 1089 00:53:46,630 --> 00:53:50,020 >> Асинхронно ние ще означава, продължи да ходи за нашия бизнес, 1090 00:53:50,020 --> 00:53:52,529 оказване на страницата, и ние ще изпрати искане 1091 00:53:52,529 --> 00:53:54,570 това е вид ще да се случи във фонов режим. 1092 00:53:54,570 --> 00:53:57,610 Мисля, че ние използваме примера в лекция на обадите Rob и каза: 1093 00:53:57,610 --> 00:53:59,980 хей, може да погледнете този нагоре за мен и се върна при мен, 1094 00:53:59,980 --> 00:54:02,870 за разлика от просто ме чака на телефона. 1095 00:54:02,870 --> 00:54:07,020 Така асинхронно означава това се случва във фонов режим, далеч от нас 1096 00:54:07,020 --> 00:54:08,676 паралелно. 1097 00:54:08,676 --> 00:54:10,400 >> Great въпрос. 1098 00:54:10,400 --> 00:54:11,830 Нещо друго? 1099 00:54:11,830 --> 00:54:12,330 Страхотен. 1100 00:54:12,330 --> 00:54:15,020 Ние ще скочи много повече в асинхронни заявки с Аякс. 1101 00:54:15,020 --> 00:54:18,287 >> АУДИТОРИЯ: Има ли JavaScript-- къде е тя падне с Model-View-Controller? 1102 00:54:18,287 --> 00:54:19,620 Хана Блумберг: Great въпрос. 1103 00:54:19,620 --> 00:54:23,320 Къде JavaScript есен с Model-View-Controller? 1104 00:54:23,320 --> 00:54:23,930 Hm. 1105 00:54:23,930 --> 00:54:28,350 Предполагам, че това може да fall-- така че ние обикновено не 1106 00:54:28,350 --> 00:54:31,340 искали да го мачкам, че в парадигма, но предполагам, бих казал, 1107 00:54:31,340 --> 00:54:34,280 ОК, така че JavaScript всъщност ще позволи 1108 00:54:34,280 --> 00:54:37,587 нас, за да се съберат данни, тълкуване на данни, всъщност правят 1109 00:54:37,587 --> 00:54:38,920 смислени неща с данни. 1110 00:54:38,920 --> 00:54:41,100 По този начин, това е много подобен на контрол. 1111 00:54:41,100 --> 00:54:43,900 >> Но тя също ще ни даде възможност да показване на нещата и печат неща. 1112 00:54:43,900 --> 00:54:47,021 По този начин, това е много подобен на оглед. 1113 00:54:47,021 --> 00:54:47,520 Да. 1114 00:54:47,520 --> 00:54:51,710 Така че това е нещо като PHP в където може да бъде едновременно вид. 1115 00:54:51,710 --> 00:54:53,330 Добър въпрос. 1116 00:54:53,330 --> 00:54:55,209 Нещо друго? 1117 00:54:55,209 --> 00:54:56,000 Добре, страхотно. 1118 00:54:56,000 --> 00:54:57,120 Преместване надясно по. 1119 00:54:57,120 --> 00:54:59,110 >> Така че нека да видим един пример за това как можем да използваме 1120 00:54:59,110 --> 00:55:02,250 JavaScript в един от нашите уеб програми. 1121 00:55:02,250 --> 00:55:05,680 Така че аз ще разгледа този index.html с куп HTML. 1122 00:55:05,680 --> 00:55:08,800 И нещо, което искате съсредоточи върху този скрипт е маркер. 1123 00:55:08,800 --> 00:55:13,280 И това казва, OK, Искам да изпълня някои JavaScript и тук е мястото, където то живее. 1124 00:55:13,280 --> 00:55:15,400 Тя живее в hello.js. 1125 00:55:15,400 --> 00:55:21,120 >> И много като CSS, можехме сложи JavaScript в HTML. 1126 00:55:21,120 --> 00:55:24,000 Защо може да искаме да я отдели? 1127 00:55:24,000 --> 00:55:24,500 Да. 1128 00:55:24,500 --> 00:55:25,486 >> АУДИТОРИЯ: По-лесно да се пренапише? 1129 00:55:25,486 --> 00:55:26,402 >> Хана Блумберг: Да. 1130 00:55:26,402 --> 00:55:28,450 По-лесно е да се използва в целия различни уеб страници. 1131 00:55:28,450 --> 00:55:29,980 Тя поддържа нещата чисти. 1132 00:55:29,980 --> 00:55:32,090 Това е просто добра практика. 1133 00:55:32,090 --> 00:55:32,590 Awesome. 1134 00:55:32,590 --> 00:55:33,930 Добър отговор. 1135 00:55:33,930 --> 00:55:36,690 Е добре, така че това се случва да бъде наш index.html. 1136 00:55:36,690 --> 00:55:39,430 И тогава тук е нашата мъничък файл JavaScript. 1137 00:55:39,430 --> 00:55:42,410 >> И всичко това се казва, е предупреждение Здравей, свят. 1138 00:55:42,410 --> 00:55:46,040 Така че това, което се случва, е, когато тази страница renders-- 1139 00:55:46,040 --> 00:55:49,680 така че ако отидете на каквото сайт това is-- всичко, което ще се случи 1140 00:55:49,680 --> 00:55:53,330 е, че ще ходи да се каже, OK, аз съм ще изпълня този код JavaScript. 1141 00:55:53,330 --> 00:55:56,370 И този код JavaScript просто казва сигнал Здравей, свят. 1142 00:55:56,370 --> 00:55:59,090 Така че аз отивам да се получи това дружелюбен малък изскачащ. 1143 00:55:59,090 --> 00:56:00,360 >> Готино? 1144 00:56:00,360 --> 00:56:04,746 Това е нещо като нашия първи JavaScript програма, нашата Здравей, свят. 1145 00:56:04,746 --> 00:56:07,690 1146 00:56:07,690 --> 00:56:12,190 Нека да погледнем малко повече за това, което синтаксиса на JavaScript изглежда. 1147 00:56:12,190 --> 00:56:16,330 И по-специално, нека да го сравни с C и PHP, което сме виждали преди. 1148 00:56:16,330 --> 00:56:20,610 >> В JavaScript, ние ще имаме Var, името на променливата, а след това 1149 00:56:20,610 --> 00:56:21,690 действителната му стойност. 1150 00:56:21,690 --> 00:56:26,170 И ние не посочите тип, просто като в PHP, но много разлика в C. 1151 00:56:26,170 --> 00:56:28,850 Така например, ако искаме за съхраняване на стойността 50, 1152 00:56:28,850 --> 00:56:32,490 в C, ние ще трябва да се каже, хей, C, искам цяло число, 1153 00:56:32,490 --> 00:56:35,076 Отивам да го наречем I, и неговата стойност е 50. 1154 00:56:35,076 --> 00:56:36,450 В PHP, това е малко по-лесно. 1155 00:56:36,450 --> 00:56:41,880 Ние казваме, хей, аз искам променлива наречено аз и неговата стойност е 50. 1156 00:56:41,880 --> 00:56:45,890 Много подобен начин, в JavaScript, ние казват хей, аз искам променлива наречена аз, 1157 00:56:45,890 --> 00:56:47,080 неговата стойност е 50. 1158 00:56:47,080 --> 00:56:52,140 Всеки последващ момент, който да използвам Аз, аз не трябва да напишете Var. 1159 00:56:52,140 --> 00:56:53,810 Това е просто, аз от този момент нататък. 1160 00:56:53,810 --> 00:56:58,660 По същия начин, в С, където веднъж казваме инт аз, ние просто използвайте аз. 1161 00:56:58,660 --> 00:57:00,340 Готино? 1162 00:57:00,340 --> 00:57:01,800 Всичко е наред. 1163 00:57:01,800 --> 00:57:03,710 >> Преминавайки към вериги, За щастие, те почти 1164 00:57:03,710 --> 00:57:06,720 Посетете exactly-- Мисля, че са точно същото като това, 1165 00:57:06,720 --> 00:57:09,799 примки ще изглежда като на нещо като C, където си за контур 1166 00:57:09,799 --> 00:57:11,840 ще има три parts-- инициализация, 1167 00:57:11,840 --> 00:57:13,640 състояние, както и актуализация. 1168 00:57:13,640 --> 00:57:15,340 А докато линия, тя изглежда точно същото. 1169 00:57:15,340 --> 00:57:16,390 Ние просто го даде състояние. 1170 00:57:16,390 --> 00:57:18,264 >> И да не се прави линия, докато, отново, точно същото. 1171 00:57:18,264 --> 00:57:20,190 Ние го условие даде. 1172 00:57:20,190 --> 00:57:24,510 Да кажем, че аз исках да превъртите over-- Исках да направя нещо пет пъти. 1173 00:57:24,510 --> 00:57:27,840 В C, и да запишем за първоначален аз равна на 0. 1174 00:57:27,840 --> 00:57:30,480 I е по-малко от 5, и ++. 1175 00:57:30,480 --> 00:57:34,240 Единствената разлика, в JavaScript, вместо да каже инт аз равна на 0, 1176 00:57:34,240 --> 00:57:36,820 ние казваме Var аз равна на 0. 1177 00:57:36,820 --> 00:57:38,370 Красив. 1178 00:57:38,370 --> 00:57:41,320 Това е единствената разлика. 1179 00:57:41,320 --> 00:57:43,200 Всякакви въпроси относно някой от това? 1180 00:57:43,200 --> 00:57:44,160 Да. 1181 00:57:44,160 --> 00:57:48,480 >> АУДИТОРИЯ: Така че в PHP, това е същото нещо, с изключение, но като променлива? 1182 00:57:48,480 --> 00:57:49,564 Или е, че например Var? 1183 00:57:49,564 --> 00:57:50,480 Хана Блумберг: Да. 1184 00:57:50,480 --> 00:57:52,310 Така че в PHP, че ще ходи да бъде знак за долар. 1185 00:57:52,310 --> 00:57:59,450 Така че това ще $ I равни 0, $ I е по-малко от 5, $ аз ++. 1186 00:57:59,450 --> 00:58:02,490 Great въпрос. 1187 00:58:02,490 --> 00:58:04,570 >> Сега нека да поговорим за декларации функция. 1188 00:58:04,570 --> 00:58:07,010 В C, когато ние обявен за функция, ние го даде име 1189 00:58:07,010 --> 00:58:08,490 и ние го даде някои параметри. 1190 00:58:08,490 --> 00:58:10,670 И в началото, ние написахме вида. 1191 00:58:10,670 --> 00:58:12,440 В JavaScript, всички ние трябва да направите е напиши 1192 00:58:12,440 --> 00:58:15,080 функцията на ключова дума, която казва, хей, JavaScript, 1193 00:58:15,080 --> 00:58:16,570 Аз съм за да се определи функция. 1194 00:58:16,570 --> 00:58:18,520 >> В този случай, той има име сума. 1195 00:58:18,520 --> 00:58:20,820 И това отнема два аргумента, х и у. 1196 00:58:20,820 --> 00:58:23,280 Забележете, че не ни пука за вида на х и у. 1197 00:58:23,280 --> 00:58:26,280 И точно като C, имаме тази ключова дума за връщане, 1198 00:58:26,280 --> 00:58:29,140 така че можем да направим нещо като завръщане х и у. 1199 00:58:29,140 --> 00:58:32,540 >> И сега, след като сме написали тази първа функция, можем да използваме сума навсякъде. 1200 00:58:32,540 --> 00:58:34,740 И това е напълно наред. 1201 00:58:34,740 --> 00:58:37,530 Един наистина готино нещо за JavaScript, че е много за разлика от C 1202 00:58:37,530 --> 00:58:40,770 е, че функции може да се третира като ценности. 1203 00:58:40,770 --> 00:58:43,895 Така че можем да направим нещо подобно тук където аз предполагам, че това обхваща up-- 1204 00:58:43,895 --> 00:58:46,400 I покриваше Var сумата part-- и ние току-що каза 1205 00:58:46,400 --> 00:58:49,850 функция XY равнява връщане х плюс ш. 1206 00:58:49,850 --> 00:58:52,140 >> Това е, което ще се нарича анонимна функция. 1207 00:58:52,140 --> 00:58:53,920 Това е функция, без име. 1208 00:58:53,920 --> 00:58:56,290 Отчитайки, че това казва функция сума, дрън, дрън, дрън, 1209 00:58:56,290 --> 00:58:59,340 това само ще кажа функция. 1210 00:58:59,340 --> 00:59:02,020 Но сега, въпреки че имам тази анонимна функция, 1211 00:59:02,020 --> 00:59:03,630 тази функция е наистина само една стойност. 1212 00:59:03,630 --> 00:59:05,160 Ние можем да се отнасяме към него като стойност. 1213 00:59:05,160 --> 00:59:10,180 >> Така че можем да го запишете в променлива еднакви начин ние може да съхранява 50 в променлива. 1214 00:59:10,180 --> 00:59:13,870 Така че можем да кажем, OK, искам променлива, тя се нарича сума, 1215 00:59:13,870 --> 00:59:16,011 и тя е тази функция. 1216 00:59:16,011 --> 00:59:18,760 Така че тези две неща са всъщност смяташ да правиш едно и също нещо, 1217 00:59:18,760 --> 00:59:21,576 но синтаксисът е малко различен и вид забавление за сведение. 1218 00:59:21,576 --> 00:59:22,076 Да. 1219 00:59:22,076 --> 00:59:25,548 >> АУДИТОРИЯ: Така бихте могли да наречем функция, която е анонимна, като казва, 1220 00:59:25,548 --> 00:59:28,244 скоби сума 2, 5? 1221 00:59:28,244 --> 00:59:29,160 Хана Блумберг: Да. 1222 00:59:29,160 --> 00:59:32,280 Можете да се обадите на тази анонимна функция по същия начин. 1223 00:59:32,280 --> 00:59:33,350 Можете да направите сбор (2, 5) ;. 1224 00:59:33,350 --> 00:59:36,180 1225 00:59:36,180 --> 00:59:38,200 Това би било напълно глоба. 1226 00:59:38,200 --> 00:59:41,575 >> Ако не съм направил Var сума се равнява функция, ако просто заличава 1227 00:59:41,575 --> 00:59:45,480 this-- Знам, че е на ръката ми, но се преструвам, че заличава this-- тогава 1228 00:59:45,480 --> 00:59:46,964 тази функция е вид просто изчезна. 1229 00:59:46,964 --> 00:59:49,630 Вие никога не може да го използвате отново, защото не е нужно име за него. 1230 00:59:49,630 --> 00:59:53,497 Трудно е да се обърнете към нещо вие не знаете какво да се обадя. 1231 00:59:53,497 --> 00:59:54,080 Добър въпрос. 1232 00:59:54,080 --> 00:59:54,580 Да. 1233 00:59:54,580 --> 00:59:59,580 >> АУДИТОРИЯ: Можете ли референтни сума в други места с стойността на х плюс у? 1234 00:59:59,580 --> 01:00:01,940 >> Хана Блумберг: Можете ли да референтната сума на други места 1235 01:00:01,940 --> 01:00:03,360 със стойност х плюс ш на? 1236 01:00:03,360 --> 01:00:05,130 Не съм съвсем сигурен какво искаш да кажеш. 1237 01:00:05,130 --> 01:00:10,582 >> АУДИТОРИЯ: Значи вашето минало полу-анонимен функция е сума е равна на тази 1238 01:00:10,582 --> 01:00:14,452 анонимна функция, така че сумата е сега е променлива, която can-- 1239 01:00:14,452 --> 01:00:15,410 Хана Блумберг: Точно така. 1240 01:00:15,410 --> 01:00:18,980 Така сума е променлива, но това е actually-- 1241 01:00:18,980 --> 01:00:23,770 така сума е променлива, чиято стойност е функцията. 1242 01:00:23,770 --> 01:00:27,030 Така че това е функция, която е вид странно нещо да приключи главата си около 1243 01:00:27,030 --> 01:00:29,880 тъй като ние сме били играе с C и не можете да направите това в C. 1244 01:00:29,880 --> 01:00:32,679 Но сега можем да наречем сборът на същия начин бихме могли да наречем сума тук. 1245 01:00:32,679 --> 01:00:33,220 АУДИТОРИЯ: OK. 1246 01:00:33,220 --> 01:00:33,970 Хана Блумберг: Да. 1247 01:00:33,970 --> 01:00:34,553 Добър въпрос. 1248 01:00:34,553 --> 01:00:35,438 Да. 1249 01:00:35,438 --> 01:00:39,862 >> АУДИТОРИЯ: Така че ние не използваме прототипи в PHP или JavaScript? 1250 01:00:39,862 --> 01:00:42,070 Хана Блумберг: Не, ние не е нужно да използвате прототипи, 1251 01:00:42,070 --> 01:00:43,880 особено в JavaScript. 1252 01:00:43,880 --> 01:00:49,380 Така че една практика нещо лошо, че аз съм щях да кажа, че не трябва да правите 1253 01:00:49,380 --> 01:00:52,620 е, че не трябва да пиша аз Var = 50. 1254 01:00:52,620 --> 01:00:54,840 Можете просто да започнете да правите аз = 50. 1255 01:00:54,840 --> 01:00:57,490 И просто ще направи и глобална променлива. 1256 01:00:57,490 --> 01:01:00,550 >> Това е много лоша практика да никога не казват изрично в Var аз, 1257 01:01:00,550 --> 01:01:01,800 но това е нещо, което можеш да направиш. 1258 01:01:01,800 --> 01:01:03,591 Преводачът не е Ще ти крещя. 1259 01:01:03,591 --> 01:01:05,920 JavaScript е доста подобно, можете да направите това, което искате. 1260 01:01:05,920 --> 01:01:09,301 1261 01:01:09,301 --> 01:01:09,800 О, съжалявам. 1262 01:01:09,800 --> 01:01:10,300 Има две. 1263 01:01:10,300 --> 01:01:12,150 В оранжеви панталони. 1264 01:01:12,150 --> 01:01:13,190 Продължавай. 1265 01:01:13,190 --> 01:01:14,390 >> АУДИТОРИЯ: Не, ти си първа. 1266 01:01:14,390 --> 01:01:16,765 >> АУДИТОРИЯ: Не, аз просто казвам Не съм имал ми ръка. 1267 01:01:16,765 --> 01:01:20,248 1268 01:01:20,248 --> 01:01:20,748 ДОБРЕ. 1269 01:01:20,748 --> 01:01:26,604 Така че, ако ви се налага да се обадя първия път, сега обобщим, 1270 01:01:26,604 --> 01:01:29,864 ние го наричаме по същия начин, X, у, като всеки път? 1271 01:01:29,864 --> 01:01:30,780 Хана Блумберг: Да. 1272 01:01:30,780 --> 01:01:32,572 Така че тези две по същество направи същото нещо. 1273 01:01:32,572 --> 01:01:35,113 АУДИТОРИЯ: И какво е предимството използване на един или друг? 1274 01:01:35,113 --> 01:01:37,500 Хана Блумберг: No предимство използване на една или друга. 1275 01:01:37,500 --> 01:01:40,080 Аз просто исках да ви покажа две различни парчета от синтаксиса. 1276 01:01:40,080 --> 01:01:42,770 Много пъти, когато анонимен функции имат една цел 1277 01:01:42,770 --> 01:01:48,220 е, ако аргументът на друг функция трябва да бъде функция. 1278 01:01:48,220 --> 01:01:50,600 И ние ще видим, че в само за секунда с Аякс. 1279 01:01:50,600 --> 01:01:53,577 >> Така че ако това не се прави никакъв смисъл, да го съхранява в задната част на главата си. 1280 01:01:53,577 --> 01:01:55,660 Това е, когато анонимен функция може да бъде полезна 1281 01:01:55,660 --> 01:01:58,284 защото това не е наистина си струва като му даде име, тъй като ние сме просто 1282 01:01:58,284 --> 01:01:59,443 ще ги използва само веднъж. 1283 01:01:59,443 --> 01:02:00,370 Да. 1284 01:02:00,370 --> 01:02:03,635 >> АУДИТОРИЯ: Ако х и у промяна късно нататък, ще обобщим промените, както и? 1285 01:02:03,635 --> 01:02:06,510 Хана Блумберг: Ако х и у климата по-късно, ще обобщим промените, както и? 1286 01:02:06,510 --> 01:02:08,840 Така че това е всъщност I мисля, че нещо, което е, 1287 01:02:08,840 --> 01:02:12,260 отново, то просто се чувства много по-различна от С. Това не е стойност. 1288 01:02:12,260 --> 01:02:13,620 Това не е 5. 1289 01:02:13,620 --> 01:02:15,550 Това е просто самата функция. 1290 01:02:15,550 --> 01:02:19,110 Така че веднага след като сте я дам параметри, тогава вие всъщност ще се изчисли стойност. 1291 01:02:19,110 --> 01:02:21,193 >> MARIA Златкова: И след това можете да се обадите на функцията 1292 01:02:21,193 --> 01:02:23,272 и да го използвате, за да получите някаква стойност. 1293 01:02:23,272 --> 01:02:24,230 Хана Блумберг: Точно така. 1294 01:02:24,230 --> 01:02:25,250 Точно. 1295 01:02:25,250 --> 01:02:25,863 Да. 1296 01:02:25,863 --> 01:02:27,946 >> АУДИТОРИЯ: Така че, ако просто да го съхранява в променливата, 1297 01:02:27,946 --> 01:02:31,430 като Var х е равно на сумата от два values-- 1298 01:02:31,430 --> 01:02:32,420 >> Хана Блумберг: Да. 1299 01:02:32,420 --> 01:02:35,320 Така бихте могли просто правя Var сума се равнява на сума от две стойности. 1300 01:02:35,320 --> 01:02:37,670 Да. 1301 01:02:37,670 --> 01:02:38,680 Всякакви други въпроси? 1302 01:02:38,680 --> 01:02:39,642 Да. 1303 01:02:39,642 --> 01:02:42,047 >> АУДИТОРИЯ: Но би, че обърка сума и сума? 1304 01:02:42,047 --> 01:02:45,062 Например, ако се обадите на вашия променлива сума, ще ти се обадя на функцията сума? 1305 01:02:45,062 --> 01:02:45,895 Хана Блумберг: Мм. 1306 01:02:45,895 --> 01:02:46,395 Мм. 1307 01:02:46,395 --> 01:02:51,253 Ако си направил нещо като, сума се равнява на сума 2, 5? 1308 01:02:51,253 --> 01:02:53,170 >> АУДИТОРИЯ: Да. 1309 01:02:53,170 --> 01:02:56,465 >> Хана Блумберг: Вярвам, че ще презапише стойността на сумата. 1310 01:02:56,465 --> 01:02:59,290 Така че още един интересен нещо за JavaScript 1311 01:02:59,290 --> 01:03:02,950 е, че една променлива може да отнеме на куп различни видове. 1312 01:03:02,950 --> 01:03:03,790 Bad практика. 1313 01:03:03,790 --> 01:03:06,280 Не трябва да се направи нещо като това, което току-що каза. 1314 01:03:06,280 --> 01:03:10,240 >> Но в C, ако аз се помещава равна на цяло число, 1315 01:03:10,240 --> 01:03:13,570 ние знаем, че никога не е ще се превърне в низ. 1316 01:03:13,570 --> 01:03:15,670 Това не е случаят в JavaScript. 1317 01:03:15,670 --> 01:03:17,770 Да, добър въпрос. 1318 01:03:17,770 --> 01:03:20,151 Нещо друго? 1319 01:03:20,151 --> 01:03:20,650 Всичко е наред. 1320 01:03:20,650 --> 01:03:21,850 Правейки всичко точно на време. 1321 01:03:21,850 --> 01:03:23,050 Поддържане става. 1322 01:03:23,050 --> 01:03:25,200 Всичко е наред. 1323 01:03:25,200 --> 01:03:27,780 >> Ако се вгледаме в масив в JavaScript, ето 1324 01:03:27,780 --> 01:03:30,250 един бърз пример за масив от низове. 1325 01:03:30,250 --> 01:03:31,967 И масиви могат да растат динамично. 1326 01:03:31,967 --> 01:03:33,675 Те не разполагат с фиксиран размер по същия начин, 1327 01:03:33,675 --> 01:03:37,990 че те правят в C. Ние можем да получите достъп до елементи с само квадратните скоби. 1328 01:03:37,990 --> 01:03:41,720 >> Това много прилича на PHP и много като C, където можем да кажем, в този случай, 1329 01:03:41,720 --> 01:03:48,360 ако исках думата JavaScript, бих се ARR квадратни скоби с 0, 1, 2. 1330 01:03:48,360 --> 01:03:51,450 1331 01:03:51,450 --> 01:03:55,390 И тогава, ако си спомняте в C, когато ние исках да се получи дължината на масив, 1332 01:03:55,390 --> 01:03:56,820 това е много досадно. 1333 01:03:56,820 --> 01:03:58,460 Но в JavaScript, супер лесно. 1334 01:03:58,460 --> 01:03:59,910 Всичко, което правим, .length. 1335 01:03:59,910 --> 01:04:01,120 Тя дава на дължини. 1336 01:04:01,120 --> 01:04:01,892 Това е. 1337 01:04:01,892 --> 01:04:03,140 >> АУДИТОРИЯ: Това е просто. 1338 01:04:03,140 --> 01:04:05,306 >> Хана Блумберг: Да, прави живота си много по-лесно. 1339 01:04:05,306 --> 01:04:08,950 1340 01:04:08,950 --> 01:04:11,560 OK, не object-- там. 1341 01:04:11,560 --> 01:04:15,480 Обекти в JavaScript усещане много прилича structs в C 1342 01:04:15,480 --> 01:04:18,280 и асоциативни масиви в PHP. 1343 01:04:18,280 --> 01:04:20,270 Така че това, което сме виждали много е JSON, които 1344 01:04:20,270 --> 01:04:23,150 щандове за JavaScript Object Notation. 1345 01:04:23,150 --> 01:04:25,550 И това е в основата на пътя структуриране на нашите данни. 1346 01:04:25,550 --> 01:04:27,880 >> Така че нека да видим един пример, може би най-лесният. 1347 01:04:27,880 --> 01:04:32,540 Така че тук е един пример за един обект която съхранява класа, CS50. 1348 01:04:32,540 --> 01:04:37,790 И когато казвам клас, искам да кажа, разбира се, Не like-- да, хода, CS50. 1349 01:04:37,790 --> 01:04:40,730 И вие ще видите, че всичко в обекта 1350 01:04:40,730 --> 01:04:43,526 ще трябва да се съдържа в фигурни скоби. 1351 01:04:43,526 --> 01:04:48,260 >> И ние започваме да се сдружават имена на полета или клавиши с различните стойности. 1352 01:04:48,260 --> 01:04:52,920 Така че можете да започнете да виждате как този вид чувства като асоциативен масив в PHP. 1353 01:04:52,920 --> 01:04:57,450 Така че ние ще се свържем полето или ключовото име, хода, с низ, 1354 01:04:57,450 --> 01:04:58,510 CS50. 1355 01:04:58,510 --> 01:04:59,940 >> Отиваме да има инструктор. 1356 01:04:59,940 --> 01:05:00,940 Отиваме да имат TFS. 1357 01:05:00,940 --> 01:05:05,240 Отиваме да имат брой psets и ние ще се записва. 1358 01:05:05,240 --> 01:05:10,720 И едно готино нещо е да се отбележи всички тези неща имат различни видове, 1359 01:05:10,720 --> 01:05:12,020 и това е напълно наред. 1360 01:05:12,020 --> 01:05:15,330 >> Това е добре за един обект, в действителност, Това е може би очаква за един обект 1361 01:05:15,330 --> 01:05:19,620 да има комбинация от струни и номера и Булев тип и масиви 1362 01:05:19,620 --> 01:05:23,420 и каквото друго може да се искате да имате във вашия обект. 1363 01:05:23,420 --> 01:05:28,570 И имайте предвид, че те ще бъдат имената или ключовете, и тогава ние просто 1364 01:05:28,570 --> 01:05:30,300 го настроите равно с малко на дебелото черво. 1365 01:05:30,300 --> 01:05:32,015 >> АУДИТОРИЯ: Какво точно има JSON означава? 1366 01:05:32,015 --> 01:05:33,890 Хана Блумберг: Какви точно прави JSON означава? 1367 01:05:33,890 --> 01:05:36,470 JSON просто означава JavaScript Object Notation. 1368 01:05:36,470 --> 01:05:38,430 Това е просто начин за форматиране. 1369 01:05:38,430 --> 01:05:40,040 Да. 1370 01:05:40,040 --> 01:05:41,800 Това е начин на форматиране на нашите данни. 1371 01:05:41,800 --> 01:05:43,620 >> В C, това е structs. 1372 01:05:43,620 --> 01:05:45,800 В PHP, това е асоциативни масиви. 1373 01:05:45,800 --> 01:05:47,120 В JavaScript, имаме обекти. 1374 01:05:47,120 --> 01:05:48,969 >> АУДИТОРИЯ: Така CS50 е обект? 1375 01:05:48,969 --> 01:05:51,010 Хана Блумберг: CS50 е предмета в този случай. 1376 01:05:51,010 --> 01:05:54,830 1377 01:05:54,830 --> 01:05:57,880 Сега, как правим всъщност достъп тези области или променят тези области. 1378 01:05:57,880 --> 01:06:03,920 Да предположим например, ние решихме, че искахте една по-малко pset този семестър. 1379 01:06:03,920 --> 01:06:06,300 Вместо девет, ние сме просто ще трябва осем. 1380 01:06:06,300 --> 01:06:08,240 Как бихме се промени това? 1381 01:06:08,240 --> 01:06:09,436 >> О, грешен начин. 1382 01:06:09,436 --> 01:06:11,060 Има два начина, които можем да направим това. 1383 01:06:11,060 --> 01:06:13,490 Номер едно е с точка нотация и номер две 1384 01:06:13,490 --> 01:06:15,750 е с квадратна скоба нотация. 1385 01:06:15,750 --> 01:06:19,720 Така, например, ако аз искаха да променят или достъп 1386 01:06:19,720 --> 01:06:26,820 полето за psets в нашата CS50 обект, какво бих направил е CS50.psets, 1387 01:06:26,820 --> 01:06:30,770 така че името на обекта точка Името на областта или клавиша. 1388 01:06:30,770 --> 01:06:37,120 >> Много по подобен начин, това е точно еквивалентно да направя CS50, и след това 1389 01:06:37,120 --> 01:06:42,050 в квадратни скоби, psets. 1390 01:06:42,050 --> 01:06:42,837 Готино? 1391 01:06:42,837 --> 01:06:44,298 Да. 1392 01:06:44,298 --> 01:06:47,707 >> АУДИТОРИЯ: Така е JSON технически JavaScript все още, 1393 01:06:47,707 --> 01:06:51,814 въпреки че в psets ние тя отдели [недоловим]? 1394 01:06:51,814 --> 01:06:52,730 Хана Блумберг: Разбира се. 1395 01:06:52,730 --> 01:06:56,290 Така че въпросът е, са JavaScript и JSON еквивалент? 1396 01:06:56,290 --> 01:07:00,750 Така JSON е бройна система, основно начинът, по който ние напишете 1397 01:07:00,750 --> 01:07:02,700 на обект от JavaScript. 1398 01:07:02,700 --> 01:07:05,190 Така че те не са абсолютно еднакви. 1399 01:07:05,190 --> 01:07:08,950 >> Бих казал, JavaScript, има са обекти в JavaScript. 1400 01:07:08,950 --> 01:07:12,590 JSON отнема тези обекти и ги разпечатва и ги показва 1401 01:07:12,590 --> 01:07:15,160 или да ги съхранява в хубав начин. 1402 01:07:15,160 --> 01:07:18,110 Така JSON не е програмиране език начинът, по който JavaScript е. 1403 01:07:18,110 --> 01:07:20,900 Това е просто нотацията за нашите обекти в JavaScript. 1404 01:07:20,900 --> 01:07:21,400 Да. 1405 01:07:21,400 --> 01:07:24,144 >> АУДИТОРИЯ: така, какво точно [Недоловим] завършат? 1406 01:07:24,144 --> 01:07:25,060 Хана Блумберг: Разбира се. 1407 01:07:25,060 --> 01:07:27,727 Така че това всъщност не прави нищо. 1408 01:07:27,727 --> 01:07:28,935 Това е просто начин за достъп. 1409 01:07:28,935 --> 01:07:31,393 Така че нека да кажем, ние искахме да се промени броят на проблемните комплекти 1410 01:07:31,393 --> 01:07:32,450 9-8. 1411 01:07:32,450 --> 01:07:34,383 Това, което правим, е да направим нещо като CS50.psets = 8 ;. 1412 01:07:34,383 --> 01:07:38,500 1413 01:07:38,500 --> 01:07:39,400 >> Да, голям въпрос. 1414 01:07:39,400 --> 01:07:40,733 Това е само за да ви покажа синтаксис. 1415 01:07:40,733 --> 01:07:43,620 Всъщност не прави нищо полезно. 1416 01:07:43,620 --> 01:07:46,085 Някакви въпроси? 1417 01:07:46,085 --> 01:07:48,210 Преместване надясно по. 1418 01:07:48,210 --> 01:07:51,960 >> Така че нека да разгледаме един бърз пример за това как JavaScript работи, защото Казах ти, че 1419 01:07:51,960 --> 01:07:55,170 прави всички тези неща и готини ни позволява да модифицирате уеб страници. 1420 01:07:55,170 --> 01:07:56,970 Нека всъщност го видим в действие. 1421 01:07:56,970 --> 01:07:59,850 Така че да, например, този HTML файл. 1422 01:07:59,850 --> 01:08:04,350 >> И нещо, което искам да се съсредоточи върху е този маркер, който е бутон, 1423 01:08:04,350 --> 01:08:06,182 с идентификатор search_button. 1424 01:08:06,182 --> 01:08:08,670 Това е просто на страницата. 1425 01:08:08,670 --> 01:08:10,690 Така че сега нека да видим какво всъщност можем да направим. 1426 01:08:10,690 --> 01:08:12,560 >> Е, предполагам, когато кликнете този бутон, 1427 01:08:12,560 --> 01:08:16,010 ние искаме да направим един alert-- вие сте кликнали върху бутона. 1428 01:08:16,010 --> 01:08:17,840 Нека да видим как можем да направим това. 1429 01:08:17,840 --> 01:08:23,869 Така window.onload-- това не е нещо които сте виждали в клас, следователно 1430 01:08:23,869 --> 01:08:26,180 Не е нужно да го знаеш за теста. 1431 01:08:26,180 --> 01:08:33,660 Но това основно се казва, OK, повикване тази функция, когато товарите прозорец. 1432 01:08:33,660 --> 01:08:35,080 >> Така че това е просто вид настройка код. 1433 01:08:35,080 --> 01:08:36,390 Не се притеснявайте толкова много за това. 1434 01:08:36,390 --> 01:08:39,170 Това, което искам да се съсредоточи върху е тук. 1435 01:08:39,170 --> 01:08:44,020 Ние казваме Var searchButton равнява document.getElementById search_button. 1436 01:08:44,020 --> 01:08:46,450 >> Така, както можете да се досетите, какво прави това е той казва, 1437 01:08:46,450 --> 01:08:50,920 OK, отидете намерите елемент с ID search_button. 1438 01:08:50,920 --> 01:08:52,790 И сега ние имаме, че действителната елемент и аз съм 1439 01:08:52,790 --> 01:08:56,279 отивам да го съхранявате на променлива searchButton. 1440 01:08:56,279 --> 01:09:00,651 И сега ние всъщност може да използвате този елемент и да я промените, или достъп до своите ценности, 1441 01:09:00,651 --> 01:09:01,359 такива неща. 1442 01:09:01,359 --> 01:09:04,649 Ние всъщност може да започне да се ангажират с уеб страницата. 1443 01:09:04,649 --> 01:09:10,330 >> Така че тук аз казвам, OK, сега, че имам този бутон, когато тя се натисне, 1444 01:09:10,330 --> 01:09:12,859 наричаме тази анонимна функция. 1445 01:09:12,859 --> 01:09:16,811 Така че това е мястото, където анонимен функции ще бъдат полезни. 1446 01:09:16,811 --> 01:09:18,060 И какво прави функцията направя? 1447 01:09:18,060 --> 01:09:20,529 Е, това просто нарича това Предупредителен функция и тя казва, 1448 01:09:20,529 --> 01:09:22,910 вие сте кликнали върху бутона за търсене. 1449 01:09:22,910 --> 01:09:29,670 >> И така, какво ще се случи, ако отида там, където този HTML живее и аз щракнете върху бутона, 1450 01:09:29,670 --> 01:09:33,729 Ще получите фантазия малко нащрек който казва, вие сте кликнали върху бутона. 1451 01:09:33,729 --> 01:09:40,710 Така че нещата да се фокусират върху here-- document.getElementById 1452 01:09:40,710 --> 01:09:44,960 получава специално HTML елемент с даден ID. 1453 01:09:44,960 --> 01:09:48,529 И сега ние да зададете това, което трябва да се случи, когато 1454 01:09:48,529 --> 01:09:50,702 този конкретен елемент е щракване. 1455 01:09:50,702 --> 01:09:52,670 >> АУДИТОРИЯ: Трябва да се сложи всичко това в? 1456 01:09:52,670 --> 01:09:53,162 >> Хана Блумберг: Съжаляваме? 1457 01:09:53,162 --> 01:09:55,130 >> АУДИТОРИЯ: Трябва ли да физически кодира всичко това? 1458 01:09:55,130 --> 01:09:56,340 >> Хана Блумберг: Трябва ли да физически кодира всичко това? 1459 01:09:56,340 --> 01:09:56,839 Да. 1460 01:09:56,839 --> 01:09:58,120 Не е ли това вид досадно? 1461 01:09:58,120 --> 01:10:00,032 Това е много код. 1462 01:10:00,032 --> 01:10:01,574 >> АУДИТОРИЯ: Може да внасяме нещо. 1463 01:10:01,574 --> 01:10:02,532 Хана Блумберг: Точно така. 1464 01:10:02,532 --> 01:10:03,610 Можем да използваме нещо. 1465 01:10:03,610 --> 01:10:08,140 И в particular-- о, това е ми казваше, че трябва да научи раздел. 1466 01:10:08,140 --> 01:10:11,061 По-специално, нека използвате библиотеката JQuery, 1467 01:10:11,061 --> 01:10:13,060 защото това беше наистина дълъг и много досадно 1468 01:10:13,060 --> 01:10:16,860 и аз искам да бъда в състояние да го опрости и да я направи по-кратък и по-лесно да се напише. 1469 01:10:16,860 --> 01:10:19,810 >> Така JQuery е библиотека на JavaScript. 1470 01:10:19,810 --> 01:10:24,930 Така че JavaScript е програмен език; JQuery е библиотека. 1471 01:10:24,930 --> 01:10:27,190 И го прави един куп неща, по-лесно. 1472 01:10:27,190 --> 01:10:33,230 Това прави променя и става цяла на HTML документ много по-лесно. 1473 01:10:33,230 --> 01:10:35,030 >> Това прави по-лесно боравене събития. 1474 01:10:35,030 --> 01:10:37,580 Това прави по-лесно анимация и го прави по-лесно Аякс. 1475 01:10:37,580 --> 01:10:40,140 Така че нека да скочи в две от тези неща точно сега. 1476 01:10:40,140 --> 01:10:40,900 Извинете ме. 1477 01:10:40,900 --> 01:10:42,620 Преди да се направи, някои основни синтаксис. 1478 01:10:42,620 --> 01:10:46,870 >> Това е, което най-призовава да библиотеката JQuery изглежда така. 1479 01:10:46,870 --> 01:10:50,520 Ние използваме тази долар sign-- няма връзка знак на PHP, 1480 01:10:50,520 --> 01:10:56,030 Просто inconvenient-- името на селектор, точка, а след това действие. 1481 01:10:56,030 --> 01:10:58,860 Така че нека да видим някои конкретни примери за това, че. 1482 01:10:58,860 --> 01:11:02,980 >> Така че това всъщност е един и същ Код от слайда на събитието. 1483 01:11:02,980 --> 01:11:08,740 Така че този дълъг, грозно нещо става това много по-хубав, по-малък нещо. 1484 01:11:08,740 --> 01:11:10,370 Така че нека да се опитаме да се разбие. 1485 01:11:10,370 --> 01:11:17,090 Това се казва, OK, jQuery-- този долар sign-- JQuery, ме намери на прозореца. 1486 01:11:17,090 --> 01:11:18,480 Така че това е избор. 1487 01:11:18,480 --> 01:11:21,800 >> Когато тя зарежда, обадете се на тази функция. 1488 01:11:21,800 --> 01:11:23,880 Така че това е всичко вътре. 1489 01:11:23,880 --> 01:11:24,380 ДОБРЕ. 1490 01:11:24,380 --> 01:11:25,740 Дотук добре? 1491 01:11:25,740 --> 01:11:26,750 Всичко е наред. 1492 01:11:26,750 --> 01:11:32,970 >> Сега, JQuery, намери ми нещо с ID search_button. 1493 01:11:32,970 --> 01:11:36,090 И за какво се натисне, наричаме тази функция. 1494 01:11:36,090 --> 01:11:37,900 И тогава тази функция е точно същото. 1495 01:11:37,900 --> 01:11:41,052 Просто направи малко за известяване, вие сте кликнали върху бутона за търсене. 1496 01:11:41,052 --> 01:11:42,650 >> Така че това е наистина хубаво. 1497 01:11:42,650 --> 01:11:46,260 Това наистина се кондензира и опростява нашия код. 1498 01:11:46,260 --> 01:11:49,030 Откъде знам, че това е ID search_button 1499 01:11:49,030 --> 01:11:50,960 а не като клас search_button? 1500 01:11:50,960 --> 01:11:52,024 >> АУДИТОРИЯ: таг? 1501 01:11:52,024 --> 01:11:52,940 Хана Блумберг: Да. 1502 01:11:52,940 --> 01:11:56,450 Този символ хашиш, това е точно като CSS. 1503 01:11:56,450 --> 01:12:00,080 Така че не забравяйте, с CSS, когато ние Исках да изберете нещо от ID, 1504 01:12:00,080 --> 01:12:01,590 ние използвахме знака паунд. 1505 01:12:01,590 --> 01:12:05,400 И когато ние искахме да изберете нещо от класа, ние използваме точката. 1506 01:12:05,400 --> 01:12:06,870 Страхотен. 1507 01:12:06,870 --> 01:12:08,230 Има смисъл? 1508 01:12:08,230 --> 01:12:11,500 Така JQuery е трябвало да просто правят живота ни по-лесен. 1509 01:12:11,500 --> 01:12:12,000 Да. 1510 01:12:12,000 --> 01:12:15,660 >> АУДИТОРИЯ: Така че аз съм малко объркан да как работи анонимен функция. 1511 01:12:15,660 --> 01:12:19,027 Смятате ли да назовете това anonymouse функция, функционира? 1512 01:12:19,027 --> 01:12:20,594 Как се нарича? 1513 01:12:20,594 --> 01:12:21,510 Хана Блумберг: Разбира се. 1514 01:12:21,510 --> 01:12:25,812 Така че функцията е просто дума, че казва, аз съм за да се определи функция. 1515 01:12:25,812 --> 01:12:26,520 АУДИТОРИЯ: О, OK. 1516 01:12:26,520 --> 01:12:27,353 Хана Блумберг: OK? 1517 01:12:27,353 --> 01:12:32,120 И тогава ние го давате като аргумент to-- нека да 1518 01:12:32,120 --> 01:12:37,040 тази вътрешна one-- към функцията кликване. 1519 01:12:37,040 --> 01:12:39,420 Така че да, така че функцията, тази анонимна функция, 1520 01:12:39,420 --> 01:12:40,910 стане действителен аргумент. 1521 01:12:40,910 --> 01:12:43,632 Така че не забравяйте, в JavaScript, ние може да лекува функции като стойности. 1522 01:12:43,632 --> 01:12:44,340 АУДИТОРИЯ: О, OK. 1523 01:12:44,340 --> 01:12:45,256 Хана Блумберг: Да. 1524 01:12:45,256 --> 01:12:46,035 Харесва ми, че "О". 1525 01:12:46,035 --> 01:12:47,490 Ница. 1526 01:12:47,490 --> 01:12:49,915 Други въпроси? 1527 01:12:49,915 --> 01:12:50,505 Time? 1528 01:12:50,505 --> 01:12:51,380 MARIA Златкова: Добро. 1529 01:12:51,380 --> 01:12:52,760 Good. 1530 01:12:52,760 --> 01:12:54,210 >> Хана Блумберг: Awesome. 1531 01:12:54,210 --> 01:12:55,720 Бързо полезна JQuery. 1532 01:12:55,720 --> 01:12:57,559 Аз няма да отида чрез всички от тях. 1533 01:12:57,559 --> 01:12:59,350 Тези слайдове ще до онлайн малко 1534 01:12:59,350 --> 01:13:02,040 по-късно, така че можете да проверите тя се малко по-късно. 1535 01:13:02,040 --> 01:13:07,120 Но в основата си, генералът модел притежава когато казваме, 1536 01:13:07,120 --> 01:13:11,510 OK, хей, JQuery, тук е моят селектор и след това тук е дадено действие. 1537 01:13:11,510 --> 01:13:15,940 И вие можете да правите неща като достъп стойност на формуляр, достъп до някои HTML, 1538 01:13:15,940 --> 01:13:19,195 контрол, което се случва, когато потребителят поддържа форма, такива неща. 1539 01:13:19,195 --> 01:13:20,106 Да. 1540 01:13:20,106 --> 01:13:22,090 >> АУДИТОРИЯ: Така че в изпита, ние ще се наложи 1541 01:13:22,090 --> 01:13:25,066 да знам доста от документацията JQuery. 1542 01:13:25,066 --> 01:13:31,018 Така че предвид факта, че ние Copy / Paste на JQuery документация, за да ни мамят лист, 1543 01:13:31,018 --> 01:13:32,506 където е изготвен на линията? 1544 01:13:32,506 --> 01:13:33,957 Подобно колко ни е нужно да знаем? 1545 01:13:33,957 --> 01:13:35,290 Хана Блумберг: Great въпрос. 1546 01:13:35,290 --> 01:13:37,765 Въпросът е същество има предвид, че можете 1547 01:13:37,765 --> 01:13:41,330 Не можете да получите достъп до документацията JQuery по време на изпитването, Колко трябва да 1548 01:13:41,330 --> 01:13:41,830 зная? 1549 01:13:41,830 --> 01:13:45,540 Ние не би очаквал да дойдеш с някои случайни функция 1550 01:13:45,540 --> 01:13:47,240 че ние ще очаквате да Google. 1551 01:13:47,240 --> 01:13:52,930 >> Нещата, които са честна игра са Бих казват просто вид на общия синтаксис, 1552 01:13:52,930 --> 01:13:58,310 е в състояние да изберете от ID и от class-- така точно като CSS. 1553 01:13:58,310 --> 01:14:01,876 И след това на действителните функции themself, ние най-вероятно ще ви кажа. 1554 01:14:01,876 --> 01:14:02,376 Да. 1555 01:14:02,376 --> 01:14:05,591 >> АУДИТОРИЯ: Така че, когато изберете от клас би означавало точка. 1556 01:14:05,591 --> 01:14:06,840 Хана Блумберг: Да, точно така. 1557 01:14:06,840 --> 01:14:07,340 Good. 1558 01:14:07,340 --> 01:14:10,461 Когато изберете от клас, то се случва да бъде точка, вместо знака паунд. 1559 01:14:10,461 --> 01:14:10,960 Да. 1560 01:14:10,960 --> 01:14:12,710 >> АУДИТОРИЯ: Бихте ли разясни разликата 1561 01:14:12,710 --> 01:14:14,310 между избора чрез ID и от класа? 1562 01:14:14,310 --> 01:14:14,560 >> Хана Блумберг: Разбира се. 1563 01:14:14,560 --> 01:14:17,510 Разликата между избираща ID и селектиране от клас. 1564 01:14:17,510 --> 01:14:20,685 Така че, както каза Мария а Малко по-рано, има 1565 01:14:20,685 --> 01:14:26,280 може да бъде само един HTML елемент с даден ID, като клас, 1566 01:14:26,280 --> 01:14:29,740 тя ни позволява да група куп на различни елементи заедно, 1567 01:14:29,740 --> 01:14:34,300 така че нещата, които са свързани, но не точно същото. 1568 01:14:34,300 --> 01:14:35,685 Това отговаря ли на въпроса? 1569 01:14:35,685 --> 01:14:36,200 Awesome. 1570 01:14:36,200 --> 01:14:37,194 Да. 1571 01:14:37,194 --> 01:14:40,680 >> АУДИТОРИЯ: Какво става, ако имате няколко неща, които са от същия клас? 1572 01:14:40,680 --> 01:14:42,150 >> Хана Блумберг: Какво се случва ако имате няколко неща, които 1573 01:14:42,150 --> 01:14:43,280 са от същия клас? 1574 01:14:43,280 --> 01:14:45,829 Така, например, ако сме Просто се използва чист JavaScript, 1575 01:14:45,829 --> 01:14:48,120 ние ще направим нещо подобно document.getElementsByClass. 1576 01:14:48,120 --> 01:14:52,280 1577 01:14:52,280 --> 01:14:56,320 И тогава какво всъщност прави е връща масив от елементи. 1578 01:14:56,320 --> 01:14:59,517 >> И ти трябва или обхождане или ги намери един, който искате. 1579 01:14:59,517 --> 01:15:01,350 Това няма да се получи сте един елемент. 1580 01:15:01,350 --> 01:15:03,450 Това ще ви даде множество елементи. 1581 01:15:03,450 --> 01:15:05,280 Great въпрос. 1582 01:15:05,280 --> 01:15:07,700 Нещо друго? 1583 01:15:07,700 --> 01:15:09,520 Awesome. 1584 01:15:09,520 --> 01:15:12,860 >> Така че аз мисля, ако сте запознати с всяко JQuery сте видели в pset, 1585 01:15:12,860 --> 01:15:15,600 трябва да сте добре да тръгвам. 1586 01:15:15,600 --> 01:15:16,325 Въпрос? 1587 01:15:16,325 --> 01:15:17,610 О, не. 1588 01:15:17,610 --> 01:15:18,859 Аз наистина трябва да се научи. 1589 01:15:18,859 --> 01:15:19,358 Отпуснете се. 1590 01:15:19,358 --> 01:15:20,035 Тя ще се оправи. 1591 01:15:20,035 --> 01:15:20,660 Аз ще отида там. 1592 01:15:20,660 --> 01:15:24,670 1593 01:15:24,670 --> 01:15:26,870 >> Нека поговорим за Аякс. 1594 01:15:26,870 --> 01:15:31,350 Така Аякс ще бъде A-- добре, нека започнем с това, което е съкращение от. 1595 01:15:31,350 --> 01:15:32,350 Това е акроним. 1596 01:15:32,350 --> 01:15:35,855 Той е за Asynchronous JavaScript и XML. 1597 01:15:35,855 --> 01:15:39,800 И XML е основно ще бъде [Недоловим] с вид на нашите данни. 1598 01:15:39,800 --> 01:15:42,100 Но ние не сме в действителност се използва XML. 1599 01:15:42,100 --> 01:15:43,430 Вместо това, ние просто използвайте JSON. 1600 01:15:43,430 --> 01:15:48,350 >> Така че основно, това е някои data-- асинхронен, JavaScript, и данните, 1601 01:15:48,350 --> 01:15:50,040 в този случай, JSON. 1602 01:15:50,040 --> 01:15:52,820 И нашата цел, както споменахме малко по-рано, 1603 01:15:52,820 --> 01:15:56,880 е да бъде в състояние да направи искане, са, че искането се направи 1604 01:15:56,880 --> 01:16:00,700 си нещо в фон, но продължи 1605 01:16:00,700 --> 01:16:02,550 направим каквото можем, възнамеряват да правят. 1606 01:16:02,550 --> 01:16:06,650 И тогава, когато тази информация е готови, след това ще го приеме. 1607 01:16:06,650 --> 01:16:08,470 >> Така че нека да видим какво е това всъщност прилича. 1608 01:16:08,470 --> 01:16:11,210 И това, вие трябва да бъдете малко запознати 1609 01:16:11,210 --> 01:16:13,680 от pset8, тази, която току-що беше вътре. 1610 01:16:13,680 --> 01:16:16,200 Така че тук е валиден JQuery функция, която бихме могли 1611 01:16:16,200 --> 01:16:18,250 Искам да знам about-- този знак за долар. 1612 01:16:18,250 --> 01:16:21,500 Така се казва JQuery функция, .getJson. 1613 01:16:21,500 --> 01:16:25,020 >> И това, което прави тази функция е отнема URL а някои parameters-- 1614 01:16:25,020 --> 01:16:28,000 така че мисля в случая на pset8, това е като, 1615 01:16:28,000 --> 01:16:33,520 адреса е articles.php и параметри беше отидете = някои пощенски код. 1616 01:16:33,520 --> 01:16:41,580 И той казва, OK, да отправи молба към този URL с дадените параметри. 1617 01:16:41,580 --> 01:16:43,480 И това просто се случва. 1618 01:16:43,480 --> 01:16:47,730 >> Когато тя приключи, това е било ще завършат успешно 1619 01:16:47,730 --> 01:16:49,370 или тя ще се провали. 1620 01:16:49,370 --> 01:16:53,480 Така че това е еквивалентът на повикване Rob и да го помоли да направя нещо. 1621 01:16:53,480 --> 01:17:00,260 И тогава, когато той нарича обратно, той е или Ще кажа, че съм направил или не успях. 1622 01:17:00,260 --> 01:17:04,030 >> Така че в случая, когато сте направено, вие казвате, OK, аз съм свършен. 1623 01:17:04,030 --> 01:17:05,980 И тогава ти се обадя тази функция. 1624 01:17:05,980 --> 01:17:08,915 В този случай, тя ще бъде по- функция, която използва някаква информация. 1625 01:17:08,915 --> 01:17:12,890 Онзи, ние обикновено се интересуват само от данните, данните, които действително сме били върнати 1626 01:17:12,890 --> 01:17:15,900 като резултат от наричайки .getJSON. 1627 01:17:15,900 --> 01:17:17,470 >> И вие може да се направи нещо с него. 1628 01:17:17,470 --> 01:17:23,670 Така че, в случай на pset8, ние го показва като списък. 1629 01:17:23,670 --> 01:17:29,050 Fail ще бъде функция който се нарича ако искането не успее 1630 01:17:29,050 --> 01:17:30,450 по някаква причина. 1631 01:17:30,450 --> 01:17:35,104 И в случай на pset8, ние просто го console.log. 1632 01:17:35,104 --> 01:17:36,020 Всякакви въпроси за това? 1633 01:17:36,020 --> 01:17:36,300 Да. 1634 01:17:36,300 --> 01:17:39,633 >> АУДИТОРИЯ: може ли просто да използвате функцията тета вместо функция, textStatus, jqHXR. 1635 01:17:39,633 --> 01:17:43,464 1636 01:17:43,464 --> 01:17:44,380 Хана Блумберг: Разбира се. 1637 01:17:44,380 --> 01:17:46,713 Така че, да, мисля, че в pset, ние просто видях функция данни. 1638 01:17:46,713 --> 01:17:48,700 Така че това е просто the-- да, OK. 1639 01:17:48,700 --> 01:17:50,510 Това е, което видяхме в pset. 1640 01:17:50,510 --> 01:17:51,480 Това е напълно наред. 1641 01:17:51,480 --> 01:17:54,210 >> Това са само ако искаш да извадя повече информация, 1642 01:17:54,210 --> 01:17:57,190 това са нещата, които бихте могли да получите от .getJSON. 1643 01:17:57,190 --> 01:17:59,040 Добър въпрос. 1644 01:17:59,040 --> 01:17:59,706 Нещо друго? 1645 01:17:59,706 --> 01:18:00,206 Да. 1646 01:18:00,206 --> 01:18:01,787 >> АУДИТОРИЯ: Така .getJSON е Аякс? 1647 01:18:01,787 --> 01:18:02,620 Хана Блумберг: OK. 1648 01:18:02,620 --> 01:18:05,700 Така че това е вид на труден част. 1649 01:18:05,700 --> 01:18:12,390 Това е функция, която позволява на JQuery можете да направите асинхронни разговори. 1650 01:18:12,390 --> 01:18:16,080 И тези асинхронни разговори, това е това, което ние сме били като се позовава на Аякс. 1651 01:18:16,080 --> 01:18:16,850 Да. 1652 01:18:16,850 --> 01:18:20,185 Това ми отне доста време да разкъсвам на парчета, когато бях студент. 1653 01:18:20,185 --> 01:18:21,560 АУДИТОРИЯ: Може ли да се каже, че отново? 1654 01:18:21,560 --> 01:18:22,476 Хана Блумберг: Да. 1655 01:18:22,476 --> 01:18:23,630 Мога ли да се каже, че отново? 1656 01:18:23,630 --> 01:18:29,010 Тази функция .getJSON, тя е функция JQuery. 1657 01:18:29,010 --> 01:18:31,970 И това ще ви накара асинхронен повикване. 1658 01:18:31,970 --> 01:18:35,700 И тези асинхронни разговори, ние сме са тези, които се отнасят до като Ajax. 1659 01:18:35,700 --> 01:18:39,610 1660 01:18:39,610 --> 01:18:41,872 >> Всякакви други въпроси? 1661 01:18:41,872 --> 01:18:43,330 Ние имаме само оставили няколко минути. 1662 01:18:43,330 --> 01:18:45,080 И Мария ще приключи с охрана 1663 01:18:45,080 --> 01:18:47,464 и след това отиваме да бъде само за направено. 1664 01:18:47,464 --> 01:18:48,630 MARIA Златкова: Awesome, OK. 1665 01:18:48,630 --> 01:18:54,030 Така че това is-- просто да отнеме няколко секунди, за да погледне през този. 1666 01:18:54,030 --> 01:18:56,750 И това не е нещо наистина страхотно. 1667 01:18:56,750 --> 01:18:59,430 И може ли някой да ми каже защо? 1668 01:18:59,430 --> 01:19:05,650 Какво се случва в дрън и май може да потенциално да доведе до нещо лошо, 1669 01:19:05,650 --> 01:19:06,770 и какво се нарича? 1670 01:19:06,770 --> 01:19:07,270 Да. 1671 01:19:07,270 --> 01:19:10,391 АУДИТОРИЯ: Ако аргумента, че е преминал през повече от 12 знака, 1672 01:19:10,391 --> 01:19:11,454 тя може да прелее. 1673 01:19:11,454 --> 01:19:12,370 MARIA Златкова: Точно така. 1674 01:19:12,370 --> 01:19:14,180 Perfect. 1675 01:19:14,180 --> 01:19:15,384 Как се нарича? 1676 01:19:15,384 --> 01:19:16,300 Можете просто да го спомена. 1677 01:19:16,300 --> 01:19:16,840 >> АУДИТОРИЯ: препълване на буфера. 1678 01:19:16,840 --> 01:19:18,381 >> MARIA Златкова: Мда, препълване на буфера. 1679 01:19:18,381 --> 01:19:21,230 Така че това е нещо, което ние наричаме препълване на буфера. 1680 01:19:21,230 --> 01:19:25,500 И ние виждаме, че във вътрешността на Foo, ние определено нашия буфер, с, 1681 01:19:25,500 --> 01:19:27,240 с площ от 12. 1682 01:19:27,240 --> 01:19:32,680 Въпреки това, в главната, не го правим провери по някакъв начин на всички 1683 01:19:32,680 --> 01:19:36,480 дали argv1-- така че беше на втория аргумент. 1684 01:19:36,480 --> 01:19:39,630 Ние не се провери дали размер на това е целесъобразно. 1685 01:19:39,630 --> 01:19:43,380 >> Така че, ако имахме особено злонамерен потребител 1686 01:19:43,380 --> 01:19:47,170 които слагат по някакъв аргумент, че е повече от 12, и след това потенциално 1687 01:19:47,170 --> 01:19:50,850 отвъд пределите на които аргумент, имаше някои изпълним код 1688 01:19:50,850 --> 01:19:55,570 че той се опитва да направи нещо лошо с него; След това, какво ще се случи, 1689 01:19:55,570 --> 01:19:59,310 ще отменят връщането адрес на функцията Foo, 1690 01:19:59,310 --> 01:20:04,370 причиняване на функцията, когато връщане да се изпълни този код. 1691 01:20:04,370 --> 01:20:07,540 И след това лоши неща могат да се случат. 1692 01:20:07,540 --> 01:20:09,850 Означава ли това да има смисъл за всеки? 1693 01:20:09,850 --> 01:20:12,424 >> И как можем да защитим срещу това? 1694 01:20:12,424 --> 01:20:13,090 Някакви предложения? 1695 01:20:13,090 --> 01:20:16,480 1696 01:20:16,480 --> 01:20:21,890 По принцип, в рамките на потенциално Foo, как 1697 01:20:21,890 --> 01:20:28,294 можем да се уверете, че това не може да се случи? 1698 01:20:28,294 --> 01:20:33,879 >> АУДИТОРИЯ: Ако размерът 12 е надвишен, бихте отпусне допълнителна памет? 1699 01:20:33,879 --> 01:20:37,170 MARIA Златкова: предложение е, да разпредели допълнителна памет на размера превишен. 1700 01:20:37,170 --> 01:20:39,800 Всъщност, можем да направим нещо по- Много по-просто от това, както добре. 1701 01:20:39,800 --> 01:20:44,870 Ние можем само да получите дължината на низ на аргумента, че е вписано, 1702 01:20:44,870 --> 01:20:48,590 проверите дали това е по-малко малка или равна на 12-- 1703 01:20:48,590 --> 01:20:50,790 което е това, което ние го искаме да бъде, защото ние не искаме 1704 01:20:50,790 --> 01:20:52,373 тя да надхвърли границите на нашата буфер. 1705 01:20:52,373 --> 01:20:55,690 И тогава, ако това не стане, ние може да работи с аргумента. 1706 01:20:55,690 --> 01:21:00,296 И тогава, ако това се случи, ние всъщност искаме да Yello потенциално изложени на потребителя. 1707 01:21:00,296 --> 01:21:01,670 Но това е начина, по който би направил това. 1708 01:21:01,670 --> 01:21:02,443 Да. 1709 01:21:02,443 --> 01:21:04,360 >> АУДИТОРИЯ: Бихте ли обясни memcpy много бързо? 1710 01:21:04,360 --> 01:21:05,443 MARIA Златкова: О, съжалявам. 1711 01:21:05,443 --> 01:21:06,040 Да. 1712 01:21:06,040 --> 01:21:11,290 Memcpy поема каквато is-- Съжалявам, OK. 1713 01:21:11,290 --> 01:21:15,850 Memcpy поема каквато е в бар, каквато е преминал 1714 01:21:15,850 --> 01:21:18,050 върху Foo като аргумент на командния ред. 1715 01:21:18,050 --> 01:21:19,440 Така че това ще отнеме argv1. 1716 01:21:19,440 --> 01:21:21,420 Argv1 се нарича бар тук. 1717 01:21:21,420 --> 01:21:24,453 Така че това ще отнеме бар и то се случва да го копирате в гр. 1718 01:21:24,453 --> 01:21:25,402 >> АУДИТОРИЯ: OK. 1719 01:21:25,402 --> 01:21:28,360 MARIA Златкова: И това ще copy-- трети аргумент просто се отнася 1720 01:21:28,360 --> 01:21:30,601 до колко то се случва да копирате в гр. 1721 01:21:30,601 --> 01:21:31,142 АУДИТОРИЯ: Ah. 1722 01:21:31,142 --> 01:21:33,030 Така че това е една копиране всички от него след това. 1723 01:21:33,030 --> 01:21:34,310 >> MARIA Златкова: Да, това е копирането на всички от него. 1724 01:21:34,310 --> 01:21:34,810 Да. 1725 01:21:34,810 --> 01:21:38,400 1726 01:21:38,400 --> 01:21:41,910 Първо, ние сме сигурни, лентата не е равно на нула, защото това е една показалка. 1727 01:21:41,910 --> 01:21:44,680 Тогава получаваме дължината низ от бара. 1728 01:21:44,680 --> 01:21:47,530 Ние се уверете, че това е по-малко от или равно на 12. 1729 01:21:47,530 --> 01:21:50,070 И след това, защото ние сме се е убедил, можем действително 1730 01:21:50,070 --> 01:21:53,122 memcpy и бъдете сигурни, че това е ОК. 1731 01:21:53,122 --> 01:21:53,705 Някакви въпроси? 1732 01:21:53,705 --> 01:21:56,280 1733 01:21:56,280 --> 01:21:58,690 Страхотен. 1734 01:21:58,690 --> 01:22:00,400 Имам два въпроса вярно или невярно. 1735 01:22:00,400 --> 01:22:05,470 Може ли някой да ми каже веднага ако те са истина или лъжа? 1736 01:22:05,470 --> 01:22:07,460 Да, това е вярно. 1737 01:22:07,460 --> 01:22:07,960 Точно. 1738 01:22:07,960 --> 01:22:09,330 Двете от тях са фалшиви. 1739 01:22:09,330 --> 01:22:12,682 Така че с помощта на една парола никога не е наистина добра идея 1740 01:22:12,682 --> 01:22:14,890 защото, ако някой знае паролата си, те могат просто 1741 01:22:14,890 --> 01:22:16,260 достъп до всичките си други сметки. 1742 01:22:16,260 --> 01:22:19,260 И тогава икони не правят нищо за да се гарантира сигурността. 1743 01:22:19,260 --> 01:22:24,900 Ние обикновено трябва да се търсят HTTPS вместо HTTP и URL. 1744 01:22:24,900 --> 01:22:28,560 >> И някои други видове атаки, които сме споменати, 1745 01:22:28,560 --> 01:22:31,390 че Давид е споменато в лекция, SQL инжекция атаки. 1746 01:22:31,390 --> 01:22:37,310 Вече видяхме, че ако ние don't-- на Функция заявка CS50 гарантира, че SQL 1747 01:22:37,310 --> 01:22:39,530 инжекция атаки не могат да се появят. 1748 01:22:39,530 --> 01:22:42,640 Но ако ние не използваха CS50, цитирам, край на цитата "в заявката," 1749 01:22:42,640 --> 01:22:46,830 ние ще трябва да се уверите, че приноса на потребителите всъщност не е някаква SQL 1750 01:22:46,830 --> 01:22:49,670 заявка, че ще предизвика всички нашите маси да бъдат снети 1751 01:22:49,670 --> 01:22:54,070 или нещо лошо, за да се случи с нашата база данни. 1752 01:22:54,070 --> 01:22:56,790 >> Отвличане сесия е друг вид атака 1753 01:22:56,790 --> 01:23:05,940 , което се случва, когато някои лоши човек използва сесия някои жертвата 1754 01:23:05,940 --> 01:23:08,740 ID, за да видите информацията за вход. 1755 01:23:08,740 --> 01:23:13,620 Така че много тривиален пример за това е като ако имаме обществен компютър, 1756 01:23:13,620 --> 01:23:21,120 тогава лошо лицето се регистрира и след това те имат бисквитки, които се запаметяват. 1757 01:23:21,120 --> 01:23:23,380 И бисквитки не се променят за сесия. 1758 01:23:23,380 --> 01:23:27,620 >> Тогава ние сме жертва отидете в и след това да влезете в сайта. 1759 01:23:27,620 --> 01:23:30,290 Бисквитите не се променят за определен сесия. 1760 01:23:30,290 --> 01:23:33,060 И тогава жертвата логва в на интернет страницата и след това си тръгва. 1761 01:23:33,060 --> 01:23:36,190 И тогава човекът, който датира След това все още може да използва своето заседание ID 1762 01:23:36,190 --> 01:23:37,430 за достъп до тяхната информация. 1763 01:23:37,430 --> 01:23:40,050 Така че това е един от примерите за как това може да се случи. 1764 01:23:40,050 --> 01:23:45,570 >> И тогава аз няма да се тревожи твърде много за специфичен код или нещо 1765 01:23:45,570 --> 01:23:49,270 така че може да доведе до това, но с някаква идея какво 1766 01:23:49,270 --> 01:23:51,400 променливите са включени в настоящото. 1767 01:23:51,400 --> 01:23:53,897 И тогава манипулиране с глава данни е друг вид атака 1768 01:23:53,897 --> 01:23:55,230 че има Давид говори за. 1769 01:23:55,230 --> 01:23:59,730 И то просто се отнася до това, което може да се случи, когато 1770 01:23:59,730 --> 01:24:04,300 отговорът, на HTTP отговор в рамките на нашата глава 1771 01:24:04,300 --> 01:24:05,720 Не е санирани правилно. 1772 01:24:05,720 --> 01:24:14,340 >> И всеки от fields-- например, ако някой презаписва един от хедъра 1773 01:24:14,340 --> 01:24:18,860 стойности да съдържат нищо повече от това, което те трябва да contain-- и действително 1774 01:24:18,860 --> 01:24:22,720 съдържа, например, а 200 OK статус код, а след това те 1775 01:24:22,720 --> 01:24:26,890 потенциално биха могли да направим злонамерен неща, когато те не трябваше да. 1776 01:24:26,890 --> 01:24:30,815 Но аз няма да се тревожи твърде много за специален код 1777 01:24:30,815 --> 01:24:34,110 че това може да доведе, просто някак разбиране 1778 01:24:34,110 --> 01:24:37,290 високо равнище, такива неща. 1779 01:24:37,290 --> 01:24:39,570 >> Мисля, че това е всичко, че ние трябва да се покрие. 1780 01:24:39,570 --> 01:24:40,090 Невероятно. 1781 01:24:40,090 --> 01:24:43,310 Всеки, който има някакви въпроси относно някоя от нещата, които сме обхванати? 1782 01:24:43,310 --> 01:24:44,213 Да. 1783 01:24:44,213 --> 01:24:48,077 >> АУДИТОРИЯ: Значи един вид повече логистична въпрос. 1784 01:24:48,077 --> 01:24:53,400 Е главно фокусирани съдържанието върху нещата след викторина 1? 1785 01:24:53,400 --> 01:24:55,730 >> MARIA Златкова: Значи въпрос е, е съдържанието 1786 01:24:55,730 --> 01:24:59,720 Основната дейност на нещата след викторина 1? 1787 01:24:59,720 --> 01:25:06,070 Така че фокусът е върху след викторина 1, с изключение 1788 01:25:06,070 --> 01:25:10,914 че ние трябва да се съсредоточи върху нещата в pset5 и много структурите от данни 1789 01:25:10,914 --> 01:25:11,580 че ние обхванати. 1790 01:25:11,580 --> 01:25:14,300 И ние не можем да кажем, че сме може да игнорира всичко, преди да 1791 01:25:14,300 --> 01:25:17,120 че тъй като тя се основава на това, както добре. 1792 01:25:17,120 --> 01:25:21,845 >> Така се съсредоточи върху този, плюс pset5 материал като включително свързани списъци, стекове, 1793 01:25:21,845 --> 01:25:23,720 опашки, както и всичко, че Хана премина. 1794 01:25:23,720 --> 01:25:24,050 >> Хана Блумберг: Точно така. 1795 01:25:24,050 --> 01:25:27,450 Да, ние отидохме над всички неща на C В самото начало много бързо. 1796 01:25:27,450 --> 01:25:29,090 Но се уверете, че да се преразгледа. 1797 01:25:29,090 --> 01:25:32,700 Върнете се назад и гледам викторина 0 преглед. 1798 01:25:32,700 --> 01:25:36,110 >> Няколко по-логистични бележки, Просто, докато ние имаме вашето внимание. 1799 01:25:36,110 --> 01:25:39,100 Ние ще имаме работно време както в понеделник и вторник вечер. 1800 01:25:39,100 --> 01:25:41,540 Те ще бъдат в MD 119. 1801 01:25:41,540 --> 01:25:44,220 Това е всичко, на интернет страницата, така че ако не го, не се безпокойте чуе. 1802 01:25:44,220 --> 01:25:45,266 >> MARIA Златкова: 8:30-11:00. 1803 01:25:45,266 --> 01:25:46,260 >> Хана Блумберг: Да, 8:30-11:00. 1804 01:25:46,260 --> 01:25:46,910 Ние ще бъдем там. 1805 01:25:46,910 --> 01:25:48,368 Ще бъдем там, за да отговаря на въпроси. 1806 01:25:48,368 --> 01:25:49,480 Това е доста хлад и забавно. 1807 01:25:49,480 --> 01:25:53,240 Вие, момчета, могат да задават всякакви въпроси че имате по викторина 1. 1808 01:25:53,240 --> 01:25:55,740 И викторина 1 е на Сряда, толкова добър късмет. 1809 01:25:55,740 --> 01:25:59,770 Ако имате някакви въпроси, може би дойде да говориш с нас тук един-на-един. 1810 01:25:59,770 --> 01:26:00,880 Готино. 1811 01:26:00,880 --> 01:26:01,630 Благодаря много. 1812 01:26:01,630 --> 01:26:02,880 >> MARIA Златкова: Благодаря много, момчета. 1813 01:26:02,880 --> 01:26:03,480 >> АУДИТОРИЯ: Yay. 1814 01:26:03,480 --> 01:26:05,930 >> [Аплодисменти] 1815 01:26:05,930 --> 01:26:07,530