1 00:00:00,000 --> 00:00:01,940 >> [За възпроизвеждане на музика] 2 00:00:01,940 --> 00:00:11,130 3 00:00:11,130 --> 00:00:14,620 >> DAVID Malan: Това е CS 50, и това е началото на седмица девет. 4 00:00:14,620 --> 00:00:18,240 И това, което ние решихме, че ние ще направим днес, не е само затвори главата за миналата седмица 5 00:00:18,240 --> 00:00:22,670 материал, където ние се фокусирахме върху сървъра страничен уеб програмиране с PHP и SQL, 6 00:00:22,670 --> 00:00:23,549 някои неща база данни. 7 00:00:23,549 --> 00:00:25,590 Ние ще говорим за малко днес сигурност и след това 8 00:00:25,590 --> 00:00:29,590 преход към страна на клиента програмиране език известен като JavaScript. 9 00:00:29,590 --> 00:00:31,330 Но първо, някои изкупление. 10 00:00:31,330 --> 00:00:35,030 >> Може би си спомняте, че на Сряда, тръгнах 11 00:00:35,030 --> 00:00:37,550 да напише уеб сайт, който се на входа на потребителя 12 00:00:37,550 --> 00:00:41,120 от HTML форма, че след това се съхраняват че имената потребителски входни, телефон 13 00:00:41,120 --> 00:00:43,124 номера, както и мобилен телефон превозвачи в базата данни. 14 00:00:43,124 --> 00:00:45,540 И тогава имах малко команда Онлайн сценарий, написан на PHP 15 00:00:45,540 --> 00:00:47,956 че е трябвало да превъртите през редовете в базата данни 16 00:00:47,956 --> 00:00:49,400 и изпраща текстови съобщения. 17 00:00:49,400 --> 00:00:53,870 Въпреки няколко, няколко опита, ние не се получи, че работната до края. 18 00:00:53,870 --> 00:00:57,820 >> Така прекарах цялата тази седмица работа по този код, за да ни минало точката 19 00:00:57,820 --> 00:01:01,220 там, където бяхме, при което всички Аз имам до края на сряда 20 00:01:01,220 --> 00:01:05,500 е това текстово съобщение от Марго като се борех, 21 00:01:05,500 --> 00:01:09,940 последвано от текстово съобщение от друг съученик, Имаш ли Давид. 22 00:01:09,940 --> 00:01:14,030 Следван от този, чудесно окуражаващо. 23 00:01:14,030 --> 00:01:15,840 Продължила много показателен. 24 00:01:15,840 --> 00:01:20,960 Аз почти го докато then-- и това е бележката ние приключи в сряда. 25 00:01:20,960 --> 00:01:25,850 И тогава всъщност може би любимата ми, Миг по-късно, това влезе. 26 00:01:25,850 --> 00:01:27,000 Damn живея поток. 27 00:01:27,000 --> 00:01:31,080 >> Така че днес, ние се определи това с бърз погледнете какво съм направил, тъй като. 28 00:01:31,080 --> 00:01:35,440 Така че всичко на този кодекс е достъпно онлайн от миналата седмица, седмица и осем, 29 00:01:35,440 --> 00:01:36,300 изходния код. 30 00:01:36,300 --> 00:01:39,425 И вие ще видите, че аз отидох чрез, и аз всъщност почистват нещата малко. 31 00:01:39,425 --> 00:01:42,080 I въвежда няколко други функции на една SQL база данни. 32 00:01:42,080 --> 00:01:45,300 Например, вместо просто се уверете, носител на Var Чар 33 00:01:45,300 --> 00:01:47,310 както аз мисля, че направих в движение миналата седмица. 34 00:01:47,310 --> 00:01:49,820 I а я определя като това, което се нарича ENUM. 35 00:01:49,820 --> 00:01:53,310 >> А някои от вас може би са виждали това както ние проучени C. Enum е всъщност 36 00:01:53,310 --> 00:01:56,820 функция на C, където можете да изброявам цял куп константи 37 00:01:56,820 --> 00:01:59,640 и да ги възлагат автоматични ценности, като една, две, три, четири 38 00:01:59,640 --> 00:02:01,330 без да твърди кодови номера. 39 00:02:01,330 --> 00:02:04,780 Така SQL поддържа същата, при което ако имате поле за база данни, която само вие 40 00:02:04,780 --> 00:02:09,389 искат да вземат на един от крайните ценности, вие можете буквално да го определят 41 00:02:09,389 --> 00:02:13,120 както направих аз там за четири популярните мобилни телефони американските превозвачи. 42 00:02:13,120 --> 00:02:13,819 >> Така че аз направих това. 43 00:02:13,819 --> 00:02:16,610 И аз направих няколко промени като добре, като най-важните от които 44 00:02:16,610 --> 00:02:20,090 е да се работи, защото имейл изземване, че тази програма се позовава на която 45 00:02:20,090 --> 00:02:23,470 обикновено се нарича имейл до SMS шлюз, който е само на 46 00:02:23,470 --> 00:02:27,670 един луксозен начин на казвайки, че Verizon, и AT & T, и други хора да подкрепят сървър, 47 00:02:27,670 --> 00:02:30,740 при което, ако получи имейл, той я преобразува в SMS 48 00:02:30,740 --> 00:02:33,290 и изпраща текстово съобщение на нечий телефон. 49 00:02:33,290 --> 00:02:37,010 Така че, ако аз направих това правилно, тук е нова и подобрена форма 50 00:02:37,010 --> 00:02:39,259 че ще говори с Новият и подобрен код, който 51 00:02:39,259 --> 00:02:40,300 можете да играете с онлайн. 52 00:02:40,300 --> 00:02:44,140 И се надяваме, че ще ми телефон сигнал в един момент. 53 00:02:44,140 --> 00:02:47,240 >> Така че, на първо място, аз отивам да напишете името си. 54 00:02:47,240 --> 00:02:51,400 Второ, аз не отивам за да направите това и този път. 55 00:02:51,400 --> 00:02:53,920 Отивам да се Огледайте Element. 56 00:02:53,920 --> 00:02:56,710 И това е само една малко нещо, така че аз не правя 57 00:02:56,710 --> 00:02:59,250 създадете часа на пост-продукция работи както направих аз за последен път. 58 00:02:59,250 --> 00:03:02,300 Там сега е моят телефонен номер. 59 00:03:02,300 --> 00:03:03,560 >> Ще изберете Verizon. 60 00:03:03,560 --> 00:03:10,260 И тук, нека се обърнем към този микрофон тук и да се стреми към това на телефона ми тук. 61 00:03:10,260 --> 00:03:13,130 Отивам да кликнете регистър, които трябва да се надяваме, 62 00:03:13,130 --> 00:03:14,530 го постави в базата данни. 63 00:03:14,530 --> 00:03:16,780 Сега отивам да отидете на програма за команден ред, който 64 00:03:16,780 --> 00:03:20,825 изземване се нарича точка наклонена черта текст, и стискайте палци. 65 00:03:20,825 --> 00:03:24,092 66 00:03:24,092 --> 00:03:26,527 Ето ни. 67 00:03:26,527 --> 00:03:27,501 >> [Phone несъстоятелност] 68 00:03:27,501 --> 00:03:28,962 >> [Аплодисменти] 69 00:03:28,962 --> 00:03:31,815 70 00:03:31,815 --> 00:03:34,940 DAVID Malan: Така че по-забавно, отколкото this-- това е забавно, разбира се, ако съм в това. 71 00:03:34,940 --> 00:03:38,004 Но това е по-забавно, помислих си аз, ако ние създадена една от тези филмови моменти 72 00:03:38,004 --> 00:03:40,420 където като нещо наистина лошо се е случило в света, 73 00:03:40,420 --> 00:03:42,860 и като всички хора НСА-те години мобилни телефони започват да бипка 74 00:03:42,860 --> 00:03:44,860 с текстови съобщения ги предупреди за този факт. 75 00:03:44,860 --> 00:03:47,026 Така че аз смятахме, че ще се опита да пресъздаде същото тук, 76 00:03:47,026 --> 00:03:49,610 при което не се използва база данни, Аз вместо предварително 77 00:03:49,610 --> 00:03:51,490 написа програма, която изглежда по този начин. 78 00:03:51,490 --> 00:03:53,660 >> Това е index.php-- и сложих този код онлайн 79 00:03:53,660 --> 00:03:56,710 като well-- че очевидно просто прави form.php, 80 00:03:56,710 --> 00:04:00,990 използване на парадигмата стил MVC, че ние говорим за по-подробно в проблем набор 81 00:04:00,990 --> 00:04:01,650 седем. 82 00:04:01,650 --> 00:04:02,910 Тази форма е доста проста. 83 00:04:02,910 --> 00:04:06,634 Тя ще представи на файл, наречен here.php по пощата. 84 00:04:06,634 --> 00:04:09,300 И това е очевидно ще да попитам за име и телефонен номер, 85 00:04:09,300 --> 00:04:11,400 и след това чрез така наречените Изберете меню, това е 86 00:04:11,400 --> 00:04:14,250 ще ви дам най-малко четири популярните мобилни телефони американските превозвачи, 87 00:04:14,250 --> 00:04:17,470 и след това да ви позволи ефективно да вземат посещаемост, като кликнете тук. 88 00:04:17,470 --> 00:04:20,471 >> И тук, междувременно, ще се назаем някои от цифрите от последното време. 89 00:04:20,471 --> 00:04:22,553 А ако просто обезмаслено това, ще видите, че има 90 00:04:22,553 --> 00:04:23,900 цял куп проверка за грешки. 91 00:04:23,900 --> 00:04:26,640 Но красотата в края е, че ние не пишат на база данни днес. 92 00:04:26,640 --> 00:04:29,130 Ние сме го поддържа прост и просто изпраща надяваме 93 00:04:29,130 --> 00:04:32,190 текстово съобщение чрез функцията I пише през последните няколко дни разговор 94 00:04:32,190 --> 00:04:36,270 Текст, който е във функциите. PHP, който отново е на разположение онлайн. 95 00:04:36,270 --> 00:04:38,210 >> Така че, ако искате да участвате в това. 96 00:04:38,210 --> 00:04:40,190 Ние няма да се съхранява нищо. 97 00:04:40,190 --> 00:04:43,809 Отидете на този адрес тук, в реално време. 98 00:04:43,809 --> 00:04:46,850 Не го представя, просто все още, но нека да видим дали можем да имаме една от тях филм 99 00:04:46,850 --> 00:04:49,830 моменти, когато мобилен телефон на всички започва да издава звукови сигнали, да се надяваме само 100 00:04:49,830 --> 00:04:53,580 след като тази година за разлика от 2011 г. когато това отиде ужасно проваля. 101 00:04:53,580 --> 00:04:58,910 И след като отидете на този адрес, трябва да видите супер проста форма 102 00:04:58,910 --> 00:05:03,884 че ако има име, мобилен телефон номер, и носител мобилен телефон, че 103 00:05:03,884 --> 00:05:06,175 съвпада с този списък, отидете напред и да попълните формуляра. 104 00:05:06,175 --> 00:05:07,880 Но не се удари представя, просто все още. 105 00:05:07,880 --> 00:05:10,850 >> Формата ще изглежда по този начин. 106 00:05:10,850 --> 00:05:13,660 Давай напред и да напишете Вашето име, телефонен номер. 107 00:05:13,660 --> 00:05:17,670 ООП, някой ще ходи напред на кривата. 108 00:05:17,670 --> 00:05:18,170 Това е ОК. 109 00:05:18,170 --> 00:05:19,340 Добре, всички се попълва формуляра. 110 00:05:19,340 --> 00:05:21,400 Това би трябвало да работи по телефон, също, ако искате. 111 00:05:21,400 --> 00:05:23,695 Добре, на вашите марки, се определят, отидете. 112 00:05:23,695 --> 00:05:24,195 Хит тук. 113 00:05:24,195 --> 00:05:27,275 114 00:05:27,275 --> 00:05:27,775 Какво? 115 00:05:27,775 --> 00:05:31,140 116 00:05:31,140 --> 00:05:31,640 Не. 117 00:05:31,640 --> 00:05:34,410 118 00:05:34,410 --> 00:05:40,250 Кълна се в Бога, аз тествани това няколко пъти днес. 119 00:05:40,250 --> 00:05:41,720 Ти го имаш? 120 00:05:41,720 --> 00:05:43,145 >> [Вмъкване VOICES] 121 00:05:43,145 --> 00:05:46,470 122 00:05:46,470 --> 00:05:49,560 >> DAVID Malan: OK, ръководство за грешка може би. 123 00:05:49,560 --> 00:05:50,550 Това е два. 124 00:05:50,550 --> 00:05:53,300 Той е работил за двама на няколко стотин, три, четири. 125 00:05:53,300 --> 00:05:55,940 Добре, това е добре. 126 00:05:55,940 --> 00:05:58,520 Четири от пет за коректност какво ще кажеш. 127 00:05:58,520 --> 00:05:59,810 >> И така, какво точно се е случило? 128 00:05:59,810 --> 00:06:02,727 Така че, вероятно, без да виждат вашето екрани, защо да го имат errored? 129 00:06:02,727 --> 00:06:05,518 Това е вероятно, че ние бяхме просто се опитва да направи твърде много връзки 130 00:06:05,518 --> 00:06:08,110 на поща на сървъра Харвард всички в веднъж от същия IP адрес. 131 00:06:08,110 --> 00:06:10,740 Аз съм просто се познае, тъй като не съм разполагат с лукса на тестване 132 00:06:10,740 --> 00:06:13,220 този код, с някои 300 души по-рано 133 00:06:13,220 --> 00:06:16,040 но сега осъзнавам, че че най-малко трябва да 134 00:06:16,040 --> 00:06:18,250 са придобили свърши работата този път. 135 00:06:18,250 --> 00:06:22,880 >> Добре, така че защо е всичко това на по-уместен за това, което се случва? 136 00:06:22,880 --> 00:06:24,900 Ами първо, бързо няколко съобщения. 137 00:06:24,900 --> 00:06:29,350 Така един, ако искате да се присъедините към Chang и Ник, а други по обяд в петък, 138 00:06:29,350 --> 00:06:32,400 направя RSVP в обичайното URL там. 139 00:06:32,400 --> 00:06:35,650 Ако си мислиш за концентриране или прави средно по CS, 140 00:06:35,650 --> 00:06:38,941 независимо дали сте второкурсник или първокурсник, или дори младши или старши в този момент 141 00:06:38,941 --> 00:06:42,490 и все още може да се провира в курсовете, осъзнават, че инженерната училище 142 00:06:42,490 --> 00:06:45,620 набира безплатно Бен и Сладолед и съвети Джери 143 00:06:45,620 --> 00:06:48,910 тази сряда малко след клас в 4:00 часа в сградата CS 144 00:06:48,910 --> 00:06:49,771 в Maxwell Дворкин. 145 00:06:49,771 --> 00:06:51,520 Ако това е твърде бързо на екрана, просто отидете 146 00:06:51,520 --> 00:06:55,260 да cs50.harvard.edu за линк към Facebook събитието 147 00:06:55,260 --> 00:06:57,140 където можете да видите повече подробности. 148 00:06:57,140 --> 00:07:01,390 >> В същото време, аз мислех, че ще се коригира едно друго нещо, което goofed в сряда. 149 00:07:01,390 --> 00:07:04,400 Оказва се, че Марк ID на Facebook не е три. 150 00:07:04,400 --> 00:07:05,230 Беше четири. 151 00:07:05,230 --> 00:07:08,330 Оказва се, че той е по-тест сметки, отколкото си спомням. 152 00:07:08,330 --> 00:07:12,400 Но какво е това чувствах като възможност да направите, е да спра с URL като този. 153 00:07:12,400 --> 00:07:16,680 >> Така се оказва, че Facebook има API, Application Programming Interface, 154 00:07:16,680 --> 00:07:20,070 което е механизъм, при който ви може да поиска данни програмно 155 00:07:20,070 --> 00:07:24,480 на Facebook и да се върнат машина ясна информация, а не уеб страници 156 00:07:24,480 --> 00:07:28,690 но само сурови текст, нещо нарича JavaScript Object Notation. 157 00:07:28,690 --> 00:07:32,150 И всъщност, ако посетите този URL, и увеличавате, по подразбиране, 158 00:07:32,150 --> 00:07:34,960 това е Марко публично достъпна информация. 159 00:07:34,960 --> 00:07:37,430 >> И интересен детайл тук е само, че си ID 160 00:07:37,430 --> 00:07:40,670 е наистина номер четири, която аз осъзна, веднага след като го направих това. 161 00:07:40,670 --> 00:07:44,260 Можете да направите това сами, ако знаете Вашия Facebook потребителско име, ако имате такъв. 162 00:07:44,260 --> 00:07:45,440 Просто въведете до върха там. 163 00:07:45,440 --> 00:07:46,640 И нищо от това не е лично. 164 00:07:46,640 --> 00:07:48,670 Аз просто правя това, дори в режим инкогнито. 165 00:07:48,670 --> 00:07:49,900 Така че аз не съм дори се идентифицирали. 166 00:07:49,900 --> 00:07:54,440 И вие виждате, че аз очевидно е потребителски номер 6454 167 00:07:54,440 --> 00:07:56,480 на Facebook, които не е Жалко, тези дни. 168 00:07:56,480 --> 00:07:59,900 Така или иначе, вие също ще видите допълнителна информация там. 169 00:07:59,900 --> 00:08:02,150 >> И полезен аспект за това е, че сте 170 00:08:02,150 --> 00:08:06,890 би могъл да напише свой собствен софтуер, който някак интегрира данни, като този 171 00:08:06,890 --> 00:08:08,170 в собствената си кандидатура. 172 00:08:08,170 --> 00:08:10,650 Можете да овласти потребителите към влезете във вашия сайт, 173 00:08:10,650 --> 00:08:14,190 не използват свои собствени потребителско име и парола, но може би си Facebook вход 174 00:08:14,190 --> 00:08:16,170 и да получите информация, дори за своите приятели, 175 00:08:16,170 --> 00:08:18,740 ако те одобряват такава, или нещо подобно. 176 00:08:18,740 --> 00:08:21,430 Така се отбележи, че CS50 също има някои от своите собствени API, 177 00:08:21,430 --> 00:08:24,620 един за курс на стоките данни, някои от тях за Авантюра менюта в заведения за хранене 178 00:08:24,620 --> 00:08:26,730 зали, всички от сгради и места 179 00:08:26,730 --> 00:08:30,930 на територията на колежа имаме API за толкова добре че вие ​​може да задава въпроси по същия начин и да получите 180 00:08:30,930 --> 00:08:35,520 обратно данни текстова, че можете да интегрирате в PHP или JavaScript, или дори, 181 00:08:35,520 --> 00:08:38,320 макар и по-рядко, а C базирани окончателен проект. 182 00:08:38,320 --> 00:08:41,190 >> Всъщност напред за финала проект са няколко важни събития. 183 00:08:41,190 --> 00:08:42,980 Имаш ли имейл от нас на другия ден. 184 00:08:42,980 --> 00:08:45,761 Осъзнайте, че предложението се дължи това идва понеделник. 185 00:08:45,761 --> 00:08:49,010 Това не е непременно задължителен, но е нужно, за да получите вашите преподавателски събратя 186 00:08:49,010 --> 00:08:51,260 одобрение, преди да направи всички промени след това. 187 00:08:51,260 --> 00:08:54,280 И тогава напред сме редица други важни събития. 188 00:08:54,280 --> 00:08:56,542 >> Така че, за да ви дразни, също с някои възможности, 189 00:08:56,542 --> 00:08:58,250 ние имаме един куп тези оттенък крушки. 190 00:08:58,250 --> 00:09:01,190 И някои от вас, момчета, сега има някои от тях във вашата стая в общежитието, както добре. 191 00:09:01,190 --> 00:09:02,920 И те също имат API. 192 00:09:02,920 --> 00:09:07,300 Така спомням тези двоични крушки седмици Преди това Дан Брадли и Ансел 193 00:09:07,300 --> 00:09:08,780 Дъф е създадена за нас. 194 00:09:08,780 --> 00:09:12,560 Те използват софтуер интерфейс тази крушка, която в момента 195 00:09:12,560 --> 00:09:15,232 е включен в електричество и след това чрез безжична 196 00:09:15,232 --> 00:09:17,690 е свързан с малко нещо нарича мост тук, 197 00:09:17,690 --> 00:09:21,280 като малко рутер собственост за това конкретно устройство. 198 00:09:21,280 --> 00:09:26,540 >> Но се оказва, ако знам как да изпрати HTTP съобщения, както всички ние сега правим, 199 00:09:26,540 --> 00:09:31,670 Мога да изпратите съобщение като това, за да тази крушка, за да го включите или изключите 200 00:09:31,670 --> 00:09:34,000 или направите произволен брой други операции по нея. 201 00:09:34,000 --> 00:09:36,110 Забележете, че това не е се, това не е пост. 202 00:09:36,110 --> 00:09:37,760 Има още една, наречена пут. 203 00:09:37,760 --> 00:09:39,630 Има действително няколко други такива глаголи. 204 00:09:39,630 --> 00:09:42,920 Но забележете, че има път там, Слаш API, наклонена черта нов разработчик, 205 00:09:42,920 --> 00:09:44,990 Слаш светлина, наклонена черта един, наклонена черта състояние. 206 00:09:44,990 --> 00:09:49,060 >> Това е очевидно само път, че компанията, Philips, 207 00:09:49,060 --> 00:09:51,640 решава, че трябва да се удари с искане за HTTP 208 00:09:51,640 --> 00:09:55,010 ако искате да промените държавата на луковицата, използвайки HTTP 1.1. 209 00:09:55,010 --> 00:09:56,380 Тогава забеляза празния ред. 210 00:09:56,380 --> 00:10:00,170 И тогава най-накрая това, което изглежда като вид на масив от някакъв вид, 211 00:10:00,170 --> 00:10:04,730 това отново ще се нарича JavaScript Object Notation или Джейсън. 212 00:10:04,730 --> 00:10:08,000 И това, което виждате тук, е, че има три двойки ключови стойности. 213 00:10:08,000 --> 00:10:09,115 >> Една от основните е призован. 214 00:10:09,115 --> 00:10:10,990 И стойността му явно ще бъде вярно. 215 00:10:10,990 --> 00:10:13,612 Яркостта е 128, което е някакъв вид Int. 216 00:10:13,612 --> 00:10:15,820 И след време на прехода е нула, което е очевидно 217 00:10:15,820 --> 00:10:17,970 колко време ще предприеме, за да се превърне това нещо на. 218 00:10:17,970 --> 00:10:19,890 >> Така че точно сега тази крушка е изключен. 219 00:10:19,890 --> 00:10:22,880 Но ако го направя точно this-- нека отида на малко мамят лист 220 00:10:22,880 --> 00:10:25,200 че Дан създадена през advance-- и аз отивам 221 00:10:25,200 --> 00:10:27,920 да вървим напред и да копирате следната команда. 222 00:10:27,920 --> 00:10:30,200 Curl, както някои от вас може да се възприема по CS50 223 00:10:30,200 --> 00:10:35,080 Обсъдете е програма, като Telnet, като че можете да се симулира HTTP заявки, 224 00:10:35,080 --> 00:10:36,360 специално поставя. 225 00:10:36,360 --> 00:10:39,710 Мога да изпратите тези данни, специално това, което току-що 226 00:10:39,710 --> 00:10:43,430 видях преди малко специфично до този URL тук. 227 00:10:43,430 --> 00:10:46,310 И тогава Curl ще се справи Всички необходими заглавията 228 00:10:46,310 --> 00:10:47,600 и разбор там на. 229 00:10:47,600 --> 00:10:54,700 >> Така че всичко, което трябва да направите е да копирате този в терминален прозорец и след това натиснете Enter. 230 00:10:54,700 --> 00:10:56,000 И крушката продължава. 231 00:10:56,000 --> 00:10:59,060 И всичко това се случва чрез моя компютър безжично 232 00:10:59,060 --> 00:11:01,960 някак си надолу към моста, който След това се говори за тази крушка. 233 00:11:01,960 --> 00:11:02,960 Мога да направя нещо друго. 234 00:11:02,960 --> 00:11:07,050 Мога да направя това нещо отида червено например. 235 00:11:07,050 --> 00:11:11,040 Аз например може да се направи това нещо отидете зелено. 236 00:11:11,040 --> 00:11:12,220 Аз мога да го пусна в синьо. 237 00:11:12,220 --> 00:11:14,760 >> И забележи във всяка от тях случаи, всички, че аз съм се променя 238 00:11:14,760 --> 00:11:18,540 е т.нар оттенък стойност всъщност го дават малко цвят. 239 00:11:18,540 --> 00:11:20,320 Така че нека да поставите този в, както добре. 240 00:11:20,320 --> 00:11:21,000 Сега е синьо. 241 00:11:21,000 --> 00:11:24,672 >> И вие можете да направите дори по-красиви неща where-- нека да отидем зелено. 242 00:11:24,672 --> 00:11:26,630 И аз може да направи това на Разбира се, с моя собствен код. 243 00:11:26,630 --> 00:11:30,670 Но дори самото API поддържа фънки операции 244 00:11:30,670 --> 00:11:35,510 като тази, която сега ще се занимавам ни за следващите 30 секунди. 245 00:11:35,510 --> 00:11:39,170 >> Така че това е един вкус на това, което може направя с API, това с участието на 246 00:11:39,170 --> 00:11:40,010 крушки. 247 00:11:40,010 --> 00:11:42,510 Имайте предвид, че CS50 има няколко двойки на Google Glass, ако искате 248 00:11:42,510 --> 00:11:45,380 искали да се справи с нещо заедно тези линии, Arduino Unos, които 249 00:11:45,380 --> 00:11:48,670 са миниатюрни компютри, по същество, по малко платка 250 00:11:48,670 --> 00:11:50,470 че можете да се свържете проводници и други неща 251 00:11:50,470 --> 00:11:52,732 да и действително контрол Вашата реалния свят среда. 252 00:11:52,732 --> 00:11:54,940 И след това има няколко на нови играчки, които имаме. 253 00:11:54,940 --> 00:11:59,294 Това буквално току-що пристигна в ден по пощата, на Myo лента за ръка. 254 00:11:59,294 --> 00:12:01,710 А аз си мислех, че това е начин да се да ви вълнува за проекти 255 00:12:01,710 --> 00:12:03,720 които можете да използвате с този хардуер ще 256 00:12:03,720 --> 00:12:08,900 да се играе този кратък клип които те използват, за да дразни хората 257 00:12:08,900 --> 00:12:10,500 че ние сега живеем в бъдеще. 258 00:12:10,500 --> 00:12:13,494 259 00:12:13,494 --> 00:12:15,490 >> [За възпроизвеждане на музика] 260 00:12:15,490 --> 00:13:33,410 261 00:13:33,410 --> 00:13:37,109 >> DAVID Malan: Така само за няколко седмици, също може да се окаже, че готино по време на панаира CS50. 262 00:13:37,109 --> 00:13:39,150 Друго устройство, което ние има един куп, че ние сме 263 00:13:39,150 --> 00:13:42,090 щастливи да заема в продължение на проекти се нарича контролер на движение. 264 00:13:42,090 --> 00:13:45,030 Това е малко по USB устройство да се свържете с компютър, който 265 00:13:45,030 --> 00:13:47,520 ви позволява да си взаимодействат с вашия лаптоп, Mac или PC, 266 00:13:47,520 --> 00:13:51,570 като че ли имаше като Xbox Kinect и всъщност правят физически движения много 267 00:13:51,570 --> 00:13:54,509 като виждаме в тази визия за бъдещето. 268 00:13:54,509 --> 00:13:56,505 >> [За възпроизвеждане на музика] 269 00:13:56,505 --> 00:15:03,380 270 00:15:03,380 --> 00:15:06,260 >> DAVID Malan: Така че, дори ако имате никаква представа как нещо подобно 271 00:15:06,260 --> 00:15:10,050 би могло да бъде измислена или работа на ниво хардуер, без значение. 272 00:15:10,050 --> 00:15:13,520 Дори и само след няколко месеца на CS50, и разбиране на програмирането 273 00:15:13,520 --> 00:15:19,460 по-общо, и уеб програмиране повече наскоро, а след това и API, и HTTP, 274 00:15:19,460 --> 00:15:21,830 ще имате достъп чрез софтуерни APIs ако 275 00:15:21,830 --> 00:15:24,680 искам да заеме едно от тези устройства, за да всъщност говори с него 276 00:15:24,680 --> 00:15:27,180 и не трябва да се тревожи за базовия изпълнението 277 00:15:27,180 --> 00:15:30,220 информация, която е напълно в съответствие с тази представа за наслояване 278 00:15:30,220 --> 00:15:33,610 абстракция, че ние сме из целия семестър. 279 00:15:33,610 --> 00:15:37,990 >> Така и през уикенда, Видях няколко парчета на новини. 280 00:15:37,990 --> 00:15:40,640 Отиди на първо място, отидете на семинари, ако биха искали да научат нещо 281 00:15:40,640 --> 00:15:42,160 повече на произволен брой теми. 282 00:15:42,160 --> 00:15:43,340 Вижте адреса там. 283 00:15:43,340 --> 00:15:45,890 И това е изпратено до ми от Chang, които знаете, 284 00:15:45,890 --> 00:15:47,850 кой печат нашата армия на слонове. 285 00:15:47,850 --> 00:15:49,910 И това е заглавие, както следва. 286 00:15:49,910 --> 00:15:51,280 Аз съм ужасена от новия си телевизор. 287 00:15:51,280 --> 00:15:54,301 Защо съм уплашена, за да се превърне това нещо на и искате да бъде прекалено. 288 00:15:54,301 --> 00:15:56,050 Така че сега ние сме в насочи в семестъра, 289 00:15:56,050 --> 00:15:58,860 твърде, където дори и ако имате най-малкото за разбирателство 290 00:15:58,860 --> 00:16:02,620 относно начина на функциониране на мрежата, и HTTP, и сигурност, неща като това 291 00:16:02,620 --> 00:16:03,980 трябва да започне да хване окото си. 292 00:16:03,980 --> 00:16:07,450 Но също така, ще разберем дали тези неща са или не са 293 00:16:07,450 --> 00:16:08,430 действителните заплахи. 294 00:16:08,430 --> 00:16:10,940 >> Така че взех няколко извадки от тази статия тук. 295 00:16:10,940 --> 00:16:12,540 А историята е следната. 296 00:16:12,540 --> 00:16:14,300 Сега съм собственик на нова Smart TV, която 297 00:16:14,300 --> 00:16:18,470 обещава да достави на живо мултимедийно съдържание, игри, приложения, 298 00:16:18,470 --> 00:16:21,450 социални медии и интернет браузване, о, и телевизия също. 299 00:16:21,450 --> 00:16:24,410 Единственият проблем е, че аз съм сега Страхувам се да го използвате, казва авторът. 300 00:16:24,410 --> 00:16:29,592 Може би е също, ако сте прочели политика на 46-страница на личния живот за вашия телевизор. 301 00:16:29,592 --> 00:16:31,800 Количеството данни, този нещо, което събира е зашеметяващ. 302 00:16:31,800 --> 00:16:35,710 Тя записва къде, кога, как и за колко време можете да използвате телевизора. 303 00:16:35,710 --> 00:16:38,190 Той определя проследяване бисквитки както говорихме, 304 00:16:38,190 --> 00:16:40,560 и маяци, предназначени за откриване, когато имате 305 00:16:40,560 --> 00:16:43,185 разглежда конкретно съдържание или даден имейл съобщение 306 00:16:43,185 --> 00:16:45,230 Ако искате да проверите електронната поща на вашия телевизор. 307 00:16:45,230 --> 00:16:48,430 Тя записва приложенията ви използвате, уебсайтовете, които посещавате, 308 00:16:48,430 --> 00:16:52,280 и как си взаимодействат със съдържание, прави всичко това чрез вашата смарт TV. 309 00:16:52,280 --> 00:16:55,470 Той също така, creepier yet-- това е моят addition-- 310 00:16:55,470 --> 00:16:58,140 е с вградена камера със система за разпознаване на лицето. 311 00:16:58,140 --> 00:17:01,010 >> Целта е да се осигури жест за контрол на телевизора 312 00:17:01,010 --> 00:17:05,490 и ви позволяват да влезете в персонална сметка с помощта на лицето си. 313 00:17:05,490 --> 00:17:08,940 В посока нагоре, образите са записан на телевизора вместо качени 314 00:17:08,940 --> 00:17:09,940 на корпоративния сървър. 315 00:17:09,940 --> 00:17:12,520 В посока надолу, в интернет връзка прави цялата телевизора 316 00:17:12,520 --> 00:17:14,811 уязвими за хакери, които са демонстрирали способността си 317 00:17:14,811 --> 00:17:16,700 да вземе пълен контрол на машината. 318 00:17:16,700 --> 00:17:20,880 >> По-тревожно е, че като че ли това не беше достатъчно умен, е микрофона. 319 00:17:20,880 --> 00:17:23,599 Телевизорът разполага с глас функция за разпознаване 320 00:17:23,599 --> 00:17:26,859 която позволява на зрителите да контролират екрана с гласови команди. 321 00:17:26,859 --> 00:17:30,290 Но услугата идва с доста зловещо предупреждение. 322 00:17:30,290 --> 00:17:33,030 Моля, имайте предвид, че ако Вашите изречени думи включват 323 00:17:33,030 --> 00:17:36,210 лична или друга поверителна информация, тази информация 324 00:17:36,210 --> 00:17:40,310 ще бъде сред данните заловените и предадени на трета страна. 325 00:17:40,310 --> 00:17:40,870 Разбра ли? 326 00:17:40,870 --> 00:17:45,860 Не казвайте, лична или чувствителна неща в предната част на вашия телевизор. 327 00:17:45,860 --> 00:17:47,280 >> Така че това е всъщност истински. 328 00:17:47,280 --> 00:17:50,530 И това е трудно да не се видим, ако отидете на Best Buy или други подобни за телевизори 329 00:17:50,530 --> 00:17:51,030 тези дни. 330 00:17:51,030 --> 00:17:52,540 Те всички са умни по някакъв начин. 331 00:17:52,540 --> 00:17:54,740 И те са все умен и creepier. 332 00:17:54,740 --> 00:17:57,490 И те просто събиране на данни по начини, които сме говорили за 333 00:17:57,490 --> 00:18:01,840 и след това да го качите чрез HTTP или някой друг протокол към някои сървър. 334 00:18:01,840 --> 00:18:05,720 >> Така че това беше по-забавно статия в тази онлайн сайт 335 00:18:05,720 --> 00:18:08,940 тук, което говори за специално за бъг или погрешно код 336 00:18:08,940 --> 00:18:11,340 че всъщност можем да връзвам в дискусия миналата седмица. 337 00:18:11,340 --> 00:18:15,730 Така че това заглавие е толкова следва, историята отива тук, 338 00:18:15,730 --> 00:18:18,720 Джош Breckman работил за компания, която се приземи договор 339 00:18:18,720 --> 00:18:22,390 да разработи за управление на съдържание система или CMS, тъй като те се наричат, 340 00:18:22,390 --> 00:18:24,380 за доста голям сайт на правителството. 341 00:18:24,380 --> 00:18:27,300 Голяма част от проекта участват разработване на система за управление на съдържанието 342 00:18:27,300 --> 00:18:29,840 така че служителите ще бъдат може да се изгради и поддържа 343 00:18:29,840 --> 00:18:31,877 непрестанно променящия съдържание на сайта им. 344 00:18:31,877 --> 00:18:34,210 Нещата излязоха доста добре за няколко дни след това ще живее. 345 00:18:34,210 --> 00:18:37,020 Но на шестия ден, нещата не отиде толкова добре. 346 00:18:37,020 --> 00:18:39,500 Всички на съдържание в уебсайт напълно изчезна. 347 00:18:39,500 --> 00:18:42,950 И всички страници са довели до по подразбиране, Моля, въведете съдържанието на уеб страница. 348 00:18:42,950 --> 00:18:43,810 Опа. 349 00:18:43,810 --> 00:18:46,080 Джош се нарича, за да разследва и забелязах, 350 00:18:46,080 --> 00:18:49,390 че един особено неприятен външен IP адрес е имал 351 00:18:49,390 --> 00:18:53,380 отишъл в и заличава всички съдържанието на системата. 352 00:18:53,380 --> 00:18:56,290 >> IP адресът не принадлежат за някои отвъдморски хакер наведе 353 00:18:56,290 --> 00:18:58,340 за унищожаване на полезни правителствена информация. 354 00:18:58,340 --> 00:19:05,190 Той решил да googlebot.com, Собствен уеб пълзи паяк на Google. 355 00:19:05,190 --> 00:19:06,010 Опа. 356 00:19:06,010 --> 00:19:09,150 След малко на научните изследвания и кодиране наоколо, за да се намери noncorrupt архивиране, 357 00:19:09,150 --> 00:19:10,180 Джош намери проблема. 358 00:19:10,180 --> 00:19:12,700 >> Потребителят е копиран и поставили някои съдържание от един 359 00:19:12,700 --> 00:19:15,670 страница към друга, включително за редактиране на хипервръзка 360 00:19:15,670 --> 00:19:17,577 за редактиране на съдържанието на страницата. 361 00:19:17,577 --> 00:19:20,160 Обикновено това не би било въпрос, тъй като е извън потребителят би 362 00:19:20,160 --> 00:19:24,320 Трябва да въведете име и парола, но системата за удостоверяване на CMS, 363 00:19:24,320 --> 00:19:27,520 за влизане в системата, не се вземат под внимание 364 00:19:27,520 --> 00:19:30,980 сложна хакерска техники на Google Spider. 365 00:19:30,980 --> 00:19:31,700 Опа. 366 00:19:31,700 --> 00:19:33,610 >> Както се оказва, Google Spider не използва 367 00:19:33,610 --> 00:19:36,950 бисквитки, което означава, че тя може да лесно заобикаляне на проверка за 368 00:19:36,950 --> 00:19:39,840 е влязъл в бисквитка набор, че е невярна. 369 00:19:39,840 --> 00:19:42,620 Той също така не се обърне внимание на JavaScript, което би трябвало нормално 370 00:19:42,620 --> 00:19:45,170 подкани и пренасочване на потребителите които не са влезли вътре. 371 00:19:45,170 --> 00:19:48,610 Това обаче, не следват всеки препратка на всяка страница я намери, 372 00:19:48,610 --> 00:19:51,700 включително тези с Изтрий Page в заглавието. 373 00:19:51,700 --> 00:19:52,650 Опа. 374 00:19:52,650 --> 00:19:56,070 >> И така, какво означава това в повече се технически, но сравнително достъпни условия? 375 00:19:56,070 --> 00:19:58,340 Това просто означава, че през сайта им, 376 00:19:58,340 --> 00:20:02,287 те трябваше URL адреси не за разлика от това, че можете да видите в проблем определя седем. 377 00:20:02,287 --> 00:20:04,620 Спомнете си в проблем определя седем или знаете проблем зададете седем 378 00:20:04,620 --> 00:20:06,411 че сте се справи, наред с други неща, 379 00:20:06,411 --> 00:20:08,570 да продаде акции от името на потребителите. 380 00:20:08,570 --> 00:20:14,010 Но прилагането на тази функция чрез за да получите чрез хипервръзки в потребителското 381 00:20:14,010 --> 00:20:16,880 интерфейс, вероятно не най-умната идея 382 00:20:16,880 --> 00:20:20,300 защото, ако вашият сайт е по някакъв начин достъпни или от човек 383 00:20:20,300 --> 00:20:23,577 кой щракнете върху около или купи бот като Google или на Spider 384 00:20:23,577 --> 00:20:26,160 тъй като те се наричат, че е просто пълзи в интернет се опитва да индексира 385 00:20:26,160 --> 00:20:29,060 интернет като търсачка, те биха могли много лесно 386 00:20:29,060 --> 00:20:31,340 удари чрез получите този вид на URL. 387 00:20:31,340 --> 00:20:33,770 И това е функционално еквивалентни на, в този случай, 388 00:20:33,770 --> 00:20:37,000 продажба на всички акции на Google. 389 00:20:37,000 --> 00:20:40,030 >> Сега, честно казано, това е напълно тъпото че ССФ 390 00:20:40,030 --> 00:20:43,240 употребяван JavaScript и бисквитки за изпълнение на своята система за вход 391 00:20:43,240 --> 00:20:47,100 и не прави това от страна на сървъра, като вие правите и воля в PSet 7-- 392 00:20:47,100 --> 00:20:49,940 има login.php file-- винаги, винаги, 393 00:20:49,940 --> 00:20:52,789 Винаги сигурност трябва да бъде извършва на сървъра страна, 394 00:20:52,789 --> 00:20:56,080 не от страна на клиента, защото, както този статия предлага и може да се 395 00:20:56,080 --> 00:20:59,600 виж в някакъв момент, това е тривиално за употреба, добро или лошо, 396 00:20:59,600 --> 00:21:02,860 просто да изключите JavaScript да не говорим за бисквитки. 397 00:21:02,860 --> 00:21:06,020 Така че това е ежедневната си WTF. 398 00:21:06,020 --> 00:21:07,970 >> Има и още един, който е просто вид на страшно, 399 00:21:07,970 --> 00:21:11,360 така че аз ще го спомена, ако само като урок живот. 400 00:21:11,360 --> 00:21:14,850 Всеки път, когато използвате приложение нарича като Snapchat или други подобни 401 00:21:14,850 --> 00:21:19,380 който казва, че тези снимки траят само за пет секунди, десет секунди или какво ли не. 402 00:21:19,380 --> 00:21:21,680 Те са мимолетни Това е абсолютно не е така. 403 00:21:21,680 --> 00:21:25,670 Както няма начин, дигитално, да прилагат някаква форма на видео, 404 00:21:25,670 --> 00:21:30,150 изображение или текстово споделяне на такава че получателят на другия край 405 00:21:30,150 --> 00:21:31,660 не може по някакъв начин да запишете данните. 406 00:21:31,660 --> 00:21:34,300 >> В най-наивен начин, някой може да вземе телефона си. 407 00:21:34,300 --> 00:21:36,850 И те имат втори прозорец 10 докато гледа към някаква моментна 408 00:21:36,850 --> 00:21:39,410 просто да си вземе някои друг телефон и да го снимам, очевидно. 409 00:21:39,410 --> 00:21:41,660 Така че може да се запази нещо дигитално по този начин. 410 00:21:41,660 --> 00:21:44,620 Някои от вас знаят как да се скрийншотове на вашия телефон. 411 00:21:44,620 --> 00:21:49,290 В действителност, ако не знаете това, осъзнават, че най-малко Snapchat, 412 00:21:49,290 --> 00:21:51,040 и аз мисля, че друг приложения, тези дни, 413 00:21:51,040 --> 00:21:53,720 най-малко Вас, ако кажа, получател трябва действително 414 00:21:53,720 --> 00:21:55,310 взел снимка на вашия имидж. 415 00:21:55,310 --> 00:22:00,870 >> Но още по-лошо, това е snappening, като някой го е измислил наскоро, 416 00:22:00,870 --> 00:22:04,680 където някои 100000 щракне е бил освободен 417 00:22:04,680 --> 00:22:09,310 в това, което се нарича торент файл на различни сайтове в крайна сметка. 418 00:22:09,310 --> 00:22:12,000 И това се съдържа цял куп на частни съобщения и мнения. 419 00:22:12,000 --> 00:22:15,210 Оказва се, че повечето от тях са доброкачествени, така че не това, което може да се очаква. 420 00:22:15,210 --> 00:22:17,580 Но тъй като хората са имали използва интернет страница, от трета страна, 421 00:22:17,580 --> 00:22:20,270 влезете с тяхната Snapchat потребителско име и парола и след това 422 00:22:20,270 --> 00:22:23,470 спестяване на всичките си щракне В този сайт на трета страна. 423 00:22:23,470 --> 00:22:26,130 И това е, че трета страна уеб сайт, който е опростен, 424 00:22:26,130 --> 00:22:30,710 който просто означаваше някой измисли как за да получите всички 100 000 плюс на тези снимки 425 00:22:30,710 --> 00:22:33,822 в собствената си твърд диск за последващо споделяне. 426 00:22:33,822 --> 00:22:36,030 Честно казано, тук също е вид от тъпото че Snapchat 427 00:22:36,030 --> 00:22:39,360 се осъществява по такъв начин, че трета страна може да се справи на пресичане 428 00:22:39,360 --> 00:22:43,310 данните и че това не е свързано с вашата собствено приложение, което работи по телефона. 429 00:22:43,310 --> 00:22:46,947 Но тук също осъзнават, че те неща, които не трябва да ви хванат неподготвени, 430 00:22:46,947 --> 00:22:49,030 или поне не би трябвало бъде урок живот тук. 431 00:22:49,030 --> 00:22:52,220 Ако искате техническата информация, отидете на този адрес има 432 00:22:52,220 --> 00:22:53,570 това е в днешните пързалки. 433 00:22:53,570 --> 00:23:00,960 Добре, всички въпроси, свързани с днешните житейски уроци в CS? 434 00:23:00,960 --> 00:23:02,710 Завъртете, че на разстояние. 435 00:23:02,710 --> 00:23:04,970 Каквото и да е? 436 00:23:04,970 --> 00:23:06,301 Каквото и да е? 437 00:23:06,301 --> 00:23:09,050 Имам много хора проверка тяхната Snapchat или нещо сега. 438 00:23:09,050 --> 00:23:11,690 >> Добре, така че SQL, Structured Query Language. 439 00:23:11,690 --> 00:23:12,509 Нека да приключим. 440 00:23:12,509 --> 00:23:14,300 И също така, макар и ние просто чесане 441 00:23:14,300 --> 00:23:16,310 повърхността на тази език, ние ще ви дадем 442 00:23:16,310 --> 00:23:18,930 достатъчно на езика под формата на PSet 7 443 00:23:18,930 --> 00:23:22,140 така че да може да се справи с някои доста често срещани функционалност. 444 00:23:22,140 --> 00:23:24,912 Но разбирам, че има няколко неща, които не изискват от вас, 445 00:23:24,912 --> 00:23:27,120 но те ще бъдат важно дойде окончателните проекти 446 00:23:27,120 --> 00:23:30,760 и със сигурност дойде правене на действителен сайтове с реални потребители 447 00:23:30,760 --> 00:23:32,040 е това дизайнерско решение. 448 00:23:32,040 --> 00:23:34,460 >> Оказва се, че в база данни MySQL, можете 449 00:23:34,460 --> 00:23:37,460 има гроздове на избор като типовете данни за вашите колони 450 00:23:37,460 --> 00:23:41,670 и други неща, но вие също трябва изборът на т.нар съхранение 451 00:23:41,670 --> 00:23:44,570 двигател на всички ваши данни, вида на файловата система, 452 00:23:44,570 --> 00:23:46,700 ако сте запознати, за всичките си данни. 453 00:23:46,700 --> 00:23:48,830 В какъв формат е, че в крайна сметка се съхраняват в? 454 00:23:48,830 --> 00:23:53,300 И най-често, може би, е MyISAM и InnoDB, технически термини 455 00:23:53,300 --> 00:23:56,060 че ние ще се грижим за само доколкото има един 456 00:23:56,060 --> 00:23:58,500 и не е нужно следната функция. 457 00:23:58,500 --> 00:24:00,390 >> Да предположим, че имате малко общежитието хладилник. 458 00:24:00,390 --> 00:24:03,030 И предполагам, че вие ​​и вашият съквартирант, които споделят този хладилник, 459 00:24:03,030 --> 00:24:04,682 са много любители на думата мляко. 460 00:24:04,682 --> 00:24:07,140 И това е, в действителност, начина, по който история е казал за мен път назад 461 00:24:07,140 --> 00:24:10,890 в деня, когато взех курс нарича CS 161 операционни системи, които 462 00:24:10,890 --> 00:24:12,580 подобно изследва тази тема. 463 00:24:12,580 --> 00:24:13,760 Така че имаш този хладилник. 464 00:24:13,760 --> 00:24:14,630 Ти си от мляко. 465 00:24:14,630 --> 00:24:17,000 И ти се върне у дома, си съквартирант в все още в клас или каквото и да, 466 00:24:17,000 --> 00:24:19,208 и решите, аз ще изляза и да получите малко мляко. 467 00:24:19,208 --> 00:24:22,630 Така че затвори хладилника, затвор стая в общежитието, прекоси улицата 468 00:24:22,630 --> 00:24:25,330 до CVS или където и да получите в линия, за да си купи мляко. 469 00:24:25,330 --> 00:24:28,960 >> В същото време, вашият съквартирант се прибере вкъщи от клас, получава в стая в общежитието, 470 00:24:28,960 --> 00:24:31,802 отваря хладилника, и осъзнава, ooph, ние сме на мляко. 471 00:24:31,802 --> 00:24:33,760 Така че той или тя се затваря хладилник и след това се случва 472 00:24:33,760 --> 00:24:35,610 за да отидете на друга CVS, което се случва, да бъде 473 00:24:35,610 --> 00:24:38,470 един блок далеч от другите CVS на площада, и получава в съответствие 474 00:24:38,470 --> 00:24:40,230 там, за да получите някои мляко. 475 00:24:40,230 --> 00:24:42,524 Сега, разбира се, на няколко минути по-късно, двамата се върна, 476 00:24:42,524 --> 00:24:44,690 и най-лошото от всичко е възможно резултати се е случило. 477 00:24:44,690 --> 00:24:45,792 И двамата имате мляко. 478 00:24:45,792 --> 00:24:47,500 И наистина не като мляко, което много. 479 00:24:47,500 --> 00:24:49,625 Така че един от тях е просто ще се вкисне в някакъв момент. 480 00:24:49,625 --> 00:24:55,941 Така че сега имате прекомерно количество на мляко в хладилника всичко, защото защо? 481 00:24:55,941 --> 00:24:57,072 >> [Недоловим] 482 00:24:57,072 --> 00:24:59,780 DAVID Malan: Да, не сте някак си комуникират един с друг 483 00:24:59,780 --> 00:25:00,904 че сте били получаване на мляко. 484 00:25:00,904 --> 00:25:04,320 Така че в най-простите начини в човешкия свят, 485 00:25:04,320 --> 00:25:08,390 как може да се избегне тази глупава сценарий да се случи такова 486 00:25:08,390 --> 00:25:09,750 че ти само се свърши с една. 487 00:25:09,750 --> 00:25:10,840 Ги текст, да добро. 488 00:25:10,840 --> 00:25:12,877 Но как иначе? 489 00:25:12,877 --> 00:25:13,460 Post-той отбелязва. 490 00:25:13,460 --> 00:25:14,626 DAVID Malan: A Post-то бележка. 491 00:25:14,626 --> 00:25:17,150 Всяка форма на комуникация който казва съквартиранта 492 00:25:17,150 --> 00:25:18,670 не трябва да излизат в хладилника за мляко. 493 00:25:18,670 --> 00:25:20,440 Отивам да презапасявам на моята собствена. 494 00:25:20,440 --> 00:25:22,770 Така че някак си трябва да заключите този ресурс. 495 00:25:22,770 --> 00:25:27,180 Така че ние можем да направим this-- можем вид рушат историята и да се превърне в история CS 496 00:25:27,180 --> 00:25:30,360 при което мисля за това като просто като променлива, която се съхранява някаква стойност. 497 00:25:30,360 --> 00:25:32,570 И точно сега, на стойност на мляко е нула, 498 00:25:32,570 --> 00:25:35,410 които не искате вашият съквартирант да инспектира тази променлива 499 00:25:35,410 --> 00:25:38,730 и след това да се вземе решение него или себе си въз основа на състоянието на тази променлива 500 00:25:38,730 --> 00:25:42,430 Ако сте в процес на промяна на състоянието на тази променлива. 501 00:25:42,430 --> 00:25:46,140 >> Така че една от линиите на SQL, че ние ви дам в PSet 7 спецификация 502 00:25:46,140 --> 00:25:47,310 е този тук. 503 00:25:47,310 --> 00:25:49,740 И ние не прекарват огромна период от време да говорим за това. 504 00:25:49,740 --> 00:25:55,100 Но се оказва, че ако се опитвате да си купи акции в CS50 финанси 505 00:25:55,100 --> 00:25:58,000 че вече имате някои акции на, вие 506 00:25:58,000 --> 00:26:01,750 Искам да бъда в състояние да направи редица на нещата веднага заедно. 507 00:26:01,750 --> 00:26:04,360 Искате да бъдете в състояние да ефективно, на високо ниво, 508 00:26:04,360 --> 00:26:06,700 проверите всичко е наред, ако искам да купуват повече акции на Free, 509 00:26:06,700 --> 00:26:08,780 стотинка състав ние, говорим в спецификацията, 510 00:26:08,780 --> 00:26:10,660 Искам първо да проверите колко акции имам. 511 00:26:10,660 --> 00:26:11,810 И предполагам, че е пет. 512 00:26:11,810 --> 00:26:14,600 И предполагам, че искате да купи 10 повече, в крайна сметка 513 00:26:14,600 --> 00:26:17,069 Искам да има 15 акции на фондовата. 514 00:26:17,069 --> 00:26:18,360 Така че аз трябва да задам два въпроса. 515 00:26:18,360 --> 00:26:20,230 Какво е състоянието на променливата? 516 00:26:20,230 --> 00:26:21,470 Какво е състоянието на ред? 517 00:26:21,470 --> 00:26:22,970 Колко акции мога в момента да има? 518 00:26:22,970 --> 00:26:24,636 След това можете да отидете напред и да го актуализира. 519 00:26:24,636 --> 00:26:27,720 Така че това е аналог на мляко в която да проверите ред, 520 00:26:27,720 --> 00:26:30,730 и след това искате да го актуализира защото, ако искате да си купите 10 акции, 521 00:26:30,730 --> 00:26:32,521 вие не искате да се промени ред 10, можете 522 00:26:32,521 --> 00:26:35,300 искате да го смените с 5 плюс 10 или, разбира се, 15. 523 00:26:35,300 --> 00:26:40,030 >> Тази линия на код гарантира, че тези два концептуални идеи 524 00:26:40,030 --> 00:26:42,810 случи заедно или не. 525 00:26:42,810 --> 00:26:46,920 Никой не, включително и някои друг потребител кой сте влезли в същия уебсайт, 526 00:26:46,920 --> 00:26:49,900 може по някакъв начин да прекъсне проверката на реда 527 00:26:49,900 --> 00:26:52,960 и актуализиране на реда, на изберете и актуализацията, ако щете. 528 00:26:52,960 --> 00:26:57,360 И синтаксис не е супер очевидно, но тази линия, дълго се е, 529 00:26:57,360 --> 00:27:01,150 гарантира, че тези две операции проверка на променливата или проверете ред 530 00:27:01,150 --> 00:27:04,660 и актуализиране на реда се случи с атомна. 531 00:27:04,660 --> 00:27:06,849 >> О, ето ни отново. 532 00:27:06,849 --> 00:27:07,890 Текстово съобщение на телефона си. 533 00:27:07,890 --> 00:27:09,954 Така че нека да направи това малко по-конкретен. 534 00:27:09,954 --> 00:27:12,120 Да предположим, че вие ​​не сте прилагане хладилник, 535 00:27:12,120 --> 00:27:16,400 и не сте прилагане PSet 7, но действително банка, 536 00:27:16,400 --> 00:27:20,000 или банкомат, за Automated Teller Машина, с което по някакъв начин 537 00:27:20,000 --> 00:27:22,960 Искам да бъда в състояние да се даде възможност на на потребителите да прехвърлят пари 538 00:27:22,960 --> 00:27:24,500 от една сметка в друга. 539 00:27:24,500 --> 00:27:25,100 OK, виси. 540 00:27:25,100 --> 00:27:26,683 Отивам да изключите това сега, благодаря ви. 541 00:27:26,683 --> 00:27:30,450 Така че ние искаме да се движат пари от един номер на сметка 542 00:27:30,450 --> 00:27:33,600 в различна степен номер, специално $ 100. 543 00:27:33,600 --> 00:27:37,690 Така че това е един вид произволно Например, при вас, банкомат, 544 00:27:37,690 --> 00:27:41,060 може да искате да изпълните две SQL запитвания, изважда от един акаунт, 545 00:27:41,060 --> 00:27:42,430 и се добавя към друга сметка. 546 00:27:42,430 --> 00:27:46,766 Но вие искате да се гарантира, че тези две линии, както се случи или не на всички. 547 00:27:46,766 --> 00:27:48,640 Вие не искате нещо Първи прекъсва. 548 00:27:48,640 --> 00:27:51,440 Вие не се направят някои умен лошо момче някак си стоеше в банка на Америка 549 00:27:51,440 --> 00:27:53,270 с две банкомати в предната на него и някак си 550 00:27:53,270 --> 00:27:55,270 нещо пишете в команди в същото време, 551 00:27:55,270 --> 00:28:01,230 надявам се опитва да удържи 200 щатски долара, вместо от $ 100 и само с $ 100 кредитира. 552 00:28:01,230 --> 00:28:04,450 С една дума, вие искате това да се се държи точно така, както вие очаквате. 553 00:28:04,450 --> 00:28:06,540 >> И начина, по който правим това в SQL база данни е 554 00:28:06,540 --> 00:28:09,350 го увийте в това, което е нарича транзакция. 555 00:28:09,350 --> 00:28:14,290 Буквално в SQL, можете да се обадите на CS50 функция заявка с цитат цитата старт 556 00:28:14,290 --> 00:28:15,370 транзакция. 557 00:28:15,370 --> 00:28:18,640 След това можете да се изпълни произволен брой на следващите SQL заявки, 558 00:28:18,640 --> 00:28:20,870 но никой от тях не се вземат ефект върху базата данни 559 00:28:20,870 --> 00:28:25,880 докато ти се обадя заявка цитирам цитата ангажират, ако отново чрез PHP. 560 00:28:25,880 --> 00:28:29,810 И по този начин, можете да се гарантира, че дори ако имате 1000 потребители всички 561 00:28:29,810 --> 00:28:32,080 удря си база данни в същото време, SQL 562 00:28:32,080 --> 00:28:34,540 ще обещая, че тези две заявки ще бъдат 563 00:28:34,540 --> 00:28:36,740 изпълнява една след друга страна. 564 00:28:36,740 --> 00:28:40,330 Така че не се окажете с повече от мляко или грешна сума, в крайна сметка, 565 00:28:40,330 --> 00:28:40,830 на пари. 566 00:28:40,830 --> 00:28:43,110 >> Така че имайте това предвид, не толкова за PSet 7 567 00:28:43,110 --> 00:28:45,250 но за крайните проекти ако сте в действителност 568 00:28:45,250 --> 00:28:49,690 се опитва да се движат данни около през маси, колкото биха могли тук. 569 00:28:49,690 --> 00:28:53,980 Но може би още по-лесно и по- Очевидно, за да се разбере с един пример 570 00:28:53,980 --> 00:28:54,860 е този тук. 571 00:28:54,860 --> 00:28:57,760 И някой ни имейл за това просто на другия ден 572 00:28:57,760 --> 00:28:59,600 когато видя нещо подобно онлайн. 573 00:28:59,600 --> 00:29:03,480 >> Така че, доколкото ми е известно, системата за закрепване не е уязвима от тази атака. 574 00:29:03,480 --> 00:29:06,637 И аз нямам идея, ако дори употреби на SQL база данни под предния капак. 575 00:29:06,637 --> 00:29:08,470 Но нека да го използвате за името на дискусия. 576 00:29:08,470 --> 00:29:10,178 Тук е на екрана, че Харвард хора са склонни 577 00:29:10,178 --> 00:29:13,620 за да видите, когато влезете в системата със своето Harvard ID номер и им щифт. 578 00:29:13,620 --> 00:29:19,020 И предполагам, че системата за щифта изпълнява в PHP и с MySQL 579 00:29:19,020 --> 00:29:22,000 база данни, кодът, че някой преди да са написани години 580 00:29:22,000 --> 00:29:23,270 може да изглежда така. 581 00:29:23,270 --> 00:29:25,230 Първо, обяви променлива, наречена потребителско име. 582 00:29:25,230 --> 00:29:27,560 И просто се, че от на супер-POST. 583 00:29:27,560 --> 00:29:30,140 Тогава можете да получите друга променлива наречен парола и направи същото. 584 00:29:30,140 --> 00:29:33,080 И след това просто да се изпълни този дълъг заявка тук, 585 00:29:33,080 --> 00:29:36,690 изберете звезда от потребители, когато те потребителско име равнява на такъв и такъв 586 00:29:36,690 --> 00:29:38,510 и парола равнява на такъв и такъв. 587 00:29:38,510 --> 00:29:40,660 >> Забележете, че къдрава скоби Ползвал съм тук 588 00:29:40,660 --> 00:29:42,880 Просто исках да PHP, отидете напред и заместител 589 00:29:42,880 --> 00:29:45,400 стойността на тези две променливи точно там. 590 00:29:45,400 --> 00:29:50,090 Те не са строго необходими, но те са склонни да се избегнат грешки, фините синтаксис. 591 00:29:50,090 --> 00:29:53,650 Така че, това изглежда напълно вярна на пръв поглед. 592 00:29:53,650 --> 00:29:54,240 И това е така. 593 00:29:54,240 --> 00:29:56,680 Може да се приложи щифт система по този начин. 594 00:29:56,680 --> 00:30:00,460 >> Но да предположим, че е супер умен и зловреден студент 595 00:30:00,460 --> 00:30:03,020 въвеждане на това като своя ПИН. 596 00:30:03,020 --> 00:30:05,550 Така че аз съм отстранен куршума признаци тук в макет нагоре, 597 00:30:05,550 --> 00:30:08,760 и аз съм всъщност разкри това, което той или тя може да пишете. 598 00:30:08,760 --> 00:30:10,350 И това е малко странно. 599 00:30:10,350 --> 00:30:13,850 Но това, което изскача при вас в потенциално тревожен за въвеждане на потребителя, 600 00:30:13,850 --> 00:30:16,450 дори и ако вие нямате представа какво на SQL инжекция атаки означава. 601 00:30:16,450 --> 00:30:20,300 Защо това изглежда малко съмнително? 602 00:30:20,300 --> 00:30:21,050 Какво е това? 603 00:30:21,050 --> 00:30:21,550 [Недоловим] 604 00:30:21,550 --> 00:30:24,260 DAVID Malan: или е малко подозрително. 605 00:30:24,260 --> 00:30:26,310 В действителност, това е ключова дума от SQL. 606 00:30:26,310 --> 00:30:28,105 Така че това не предвещава нищо добро. 607 00:30:28,105 --> 00:30:29,980 Фактът, че има всички тези единични кавички 608 00:30:29,980 --> 00:30:32,646 there-- в действителност, един от най-лесните начини да се прекъсне някои бази данни 609 00:30:32,646 --> 00:30:35,880 е чрез въвеждане на име като O'Reilly че има апостроф в него 610 00:30:35,880 --> 00:30:38,600 защото, ако човекът, който е написал кода зад кулисите 611 00:30:38,600 --> 00:30:41,570 не взема под внимание факта, че има може да бъде единични кавички в потребителя 612 00:30:41,570 --> 00:30:45,060 вход, и той или тя използва единични кавички в кода си, 613 00:30:45,060 --> 00:30:46,040 лоши неща могат да се случат. 614 00:30:46,040 --> 00:30:47,870 >> Всъщност, още по-лошо, помислете за това. 615 00:30:47,870 --> 00:30:50,600 Ако отново това е кода че някой в ​​Харвард години 616 00:30:50,600 --> 00:30:53,100 Преди пише за щифт система, забележете, това, което е 617 00:30:53,100 --> 00:30:56,220 за да се заместен за потребителско име и парола 618 00:30:56,220 --> 00:30:59,780 ако видовете потребителски отново skroob като потребителското си име 619 00:30:59,780 --> 00:31:03,960 и след един, два, три, четири, пет, цитат или цитирам цитата един равни 620 00:31:03,960 --> 00:31:04,660 цитирам един. 621 00:31:04,660 --> 00:31:07,220 И забележи какво е ключов тук е потребител не 622 00:31:07,220 --> 00:31:09,900 започна своята парола или си значка с един цитат. 623 00:31:09,900 --> 00:31:12,610 И те не са го завърши с един цитат, защото той или тя 624 00:31:12,610 --> 00:31:16,315 предполага, че ако програмист не е толкова остър, 625 00:31:16,315 --> 00:31:18,690 те ще имат тези, единични кавички в кода си. 626 00:31:18,690 --> 00:31:19,860 >> Така че тук е кодът. 627 00:31:19,860 --> 00:31:23,820 И на заместване Сега може да се случи това. 628 00:31:23,820 --> 00:31:26,350 И аз съм подчерта какво потребителят е въвел вътре. 629 00:31:26,350 --> 00:31:28,480 Така че, преди, след. 630 00:31:28,480 --> 00:31:33,330 И забележи това, което е меко казано тревожна сега за дясната половина на този SQL код? 631 00:31:33,330 --> 00:31:36,300 Това е малко по-сложно, разбира се, от заявките, които сме виждали. 632 00:31:36,300 --> 00:31:38,550 Но това не може да да бъде нещо добро, ако сте 633 00:31:38,550 --> 00:31:42,240 казвайки изберете звезда, която е изберете всичко от трапезата на потребителя 634 00:31:42,240 --> 00:31:46,630 където потребителско име е равно skroob и парола се равнява на една, две, три, четири, 635 00:31:46,630 --> 00:31:49,610 пет или един се равнява на една. 636 00:31:49,610 --> 00:31:53,860 Какво е логично Изводът на последната клауза вероятно? 637 00:31:53,860 --> 00:31:55,650 Това е просто винаги е вярно. 638 00:31:55,650 --> 00:31:59,930 >> И тъй като ние сме нещо като предположил или измисли от опити и грешки 639 00:31:59,930 --> 00:32:02,760 че програмист, който написах този код не е направил 640 00:32:02,760 --> 00:32:07,250 предвиждане на човек или лош човек пишете в единични кавички, както и, 641 00:32:07,250 --> 00:32:10,350 можем да синтактично завършите заявката за SQL 642 00:32:10,350 --> 00:32:12,260 с нещо безсмислено но нещо, което 643 00:32:12,260 --> 00:32:15,930 е синтактично неправилен че винаги се оценява да е вярно. 644 00:32:15,930 --> 00:32:19,130 Така че, ако този код се използва, за да отговори въпросът вярно или невярно трябва 645 00:32:19,130 --> 00:32:22,930 този потребител да бъде позволено да премине, за Отговорът винаги е очевидно става 646 00:32:22,930 --> 00:32:26,930 за да е истина, защото това винаги се случва за да изберете нещо от базата данни 647 00:32:26,930 --> 00:32:29,280 защото един разбира се винаги се равнява на една. 648 00:32:29,280 --> 00:32:30,360 >> И така, какво е решението? 649 00:32:30,360 --> 00:32:33,290 Ами в PSet 7, ние всъщност избегне това всички заедно. 650 00:32:33,290 --> 00:32:37,360 Ние ви даваме функция заявка и ние Препоръчвам ви да използвате въпросителни знаци 651 00:32:37,360 --> 00:32:40,430 като заместители, подобно в дух на ФОРМАТ е% S, 652 00:32:40,430 --> 00:32:43,710 но това, което е ключово за въпросителни знаци тук е, ако действително прочетете 653 00:32:43,710 --> 00:32:46,950 functions.php, където ни функция заявка се изпълнява, 654 00:32:46,950 --> 00:32:52,780 тези въпросителни знаци са избягали, при което нищо потенциално опасно 655 00:32:52,780 --> 00:32:58,210 като един цитат е включен в избягал апостроф. 656 00:32:58,210 --> 00:33:00,590 >> Така че това е, което е наистина се случва, ако 657 00:33:00,590 --> 00:33:04,850 използвате функция заявка CS50 или произволен брой безплатни библиотеки трети страни, които 658 00:33:04,850 --> 00:33:06,000 направи същото. 659 00:33:06,000 --> 00:33:09,850 Няма значение в този случай, в зелено, ако потребителят е въвел в един цитат 660 00:33:09,850 --> 00:33:12,070 защото заявката функция, която писахме е 661 00:33:12,070 --> 00:33:15,120 Ще добавим наклонени черти преди всяко такова опасно цитат. 662 00:33:15,120 --> 00:33:17,360 Така че това не е в Всъщност, щеше да бъде легален. 663 00:33:17,360 --> 00:33:20,910 Това е като да пишете в един луд търси парола, която е, разбира се, не става 664 00:33:20,910 --> 00:33:23,490 да бъде действителната парола skroob години. 665 00:33:23,490 --> 00:33:28,260 >> Така Takeaway за CS50 е един, абсолютно винаги използвам нещо 666 00:33:28,260 --> 00:33:30,860 като функция заявка CS50 е или основната библиотека, 667 00:33:30,860 --> 00:33:32,560 което се случва, да се нарича ЗНП. 668 00:33:32,560 --> 00:33:35,880 Но никога, никога, никога не правя код като този 669 00:33:35,880 --> 00:33:39,472 без да избягат или търкане тъй като те казват, че си входове. 670 00:33:39,472 --> 00:33:42,430 И вие ще в някакъв момент вероятно попаднете на някой сайт като този. 671 00:33:42,430 --> 00:33:46,060 В действителност, тя изглежда да е случаят като в летища и хотели в места 672 00:33:46,060 --> 00:33:48,880 когато имат свободен Wi-Fi достъп, която трябва да влезете, за да, 673 00:33:48,880 --> 00:33:51,010 тези сайтове са винаги ужасно изпълнена. 674 00:33:51,010 --> 00:33:55,680 И така, един вид забавление у дома упражнения, не за злонамерени цели или повече 675 00:33:55,680 --> 00:33:59,170 на забавление на пътя упражнение, е просто да напишете 676 00:33:59,170 --> 00:34:02,850 апостроф, един цитат, във формата на някой сайт 677 00:34:02,850 --> 00:34:03,810 и да видим какво ще стане. 678 00:34:03,810 --> 00:34:06,660 И ако сървъра катастрофи или дава ти някакво съобщение за грешка, 679 00:34:06,660 --> 00:34:09,690 тя може да бъде много добре, че някой не е разгадана това. 680 00:34:09,690 --> 00:34:15,239 И тогава трябва да се сигнализира правилното органи и да продължат по-нататък. 681 00:34:15,239 --> 00:34:20,843 >> Така че сега вие трябва да се надяваме, разберем малко по-маниак хумор тук. 682 00:34:20,843 --> 00:34:24,120 >> [Смях] 683 00:34:24,120 --> 00:34:27,571 684 00:34:27,571 --> 00:34:29,070 DAVID Malan: Вие знаете, че сте маниак. 685 00:34:29,070 --> 00:34:30,944 За следващите години, ще си спомнят 686 00:34:30,944 --> 00:34:33,520 които Масички Боби е поради тази карикатура тук. 687 00:34:33,520 --> 00:34:36,760 Така че имайте това предвид, тъй като ние превключване на контекста за последен път 688 00:34:36,760 --> 00:34:38,770 днес JavaScript. 689 00:34:38,770 --> 00:34:41,600 Прекарахме относително малко време на синтаксиса на PHP 690 00:34:41,600 --> 00:34:43,440 защото това е действително супер подобни на C. 691 00:34:43,440 --> 00:34:47,300 И достатъчно добре, JavaScript твърде е супер подобна на синтаксиса на C 692 00:34:47,300 --> 00:34:49,639 както ще видим в само за миг и както ще 693 00:34:49,639 --> 00:34:51,205 видим по-късно тази седмица в частност. 694 00:34:51,205 --> 00:34:54,080 Какво можете да правите с този език, обаче, е още по-мощен, 695 00:34:54,080 --> 00:34:55,790 особено с APIs. 696 00:34:55,790 --> 00:34:56,960 >> Но първо бърза обиколка. 697 00:34:56,960 --> 00:35:00,450 Така един, в JavaScript, има не основна функция, което е хубаво. 698 00:35:00,450 --> 00:35:02,650 Както и с PHP, можете просто да пишете код. 699 00:35:02,650 --> 00:35:04,310 Условия изглеждат по този начин. 700 00:35:04,310 --> 00:35:07,100 И булеви изрази мощ изглежда така или така. 701 00:35:07,100 --> 00:35:09,530 Съществуват ключове, и те може да изглежда така. 702 00:35:09,530 --> 00:35:10,970 Четири линии изглеждат по този начин. 703 00:35:10,970 --> 00:35:12,390 Докато линии изглеждат по този начин. 704 00:35:12,390 --> 00:35:14,160 Направете догдето изглежда така. 705 00:35:14,160 --> 00:35:16,850 И тогава масиви изглеждат като това, много подобен на PHP. 706 00:35:16,850 --> 00:35:20,740 Но забележете, че в JavaScript вас декларира променлива не с един долар 707 00:35:20,740 --> 00:35:25,190 подпише, а не с тип данни, но буквално като казва Var за променлива преди него. 708 00:35:25,190 --> 00:35:27,900 Тя също е свободно въвели с това, че има видове, 709 00:35:27,900 --> 00:35:29,729 но не изрично ги декларира. 710 00:35:29,729 --> 00:35:31,520 И тогава низ, за Например, може да изглежда 711 00:35:31,520 --> 00:35:34,350 по този начин, че низ се нарича и в този случай. 712 00:35:34,350 --> 00:35:35,410 И тогава един обект. 713 00:35:35,410 --> 00:35:37,010 И това ще видим по-скоро. 714 00:35:37,010 --> 00:35:41,470 И един обект е може би един от Най-често се наблюдава структури от данни 715 00:35:41,470 --> 00:35:44,050 в JavaScript базирани програма, защото тя позволява 716 00:35:44,050 --> 00:35:46,680 можете да асоциирате произволна двойки ключови стойности само 717 00:35:46,680 --> 00:35:51,240 като асоциативни масиви в PHP и точно като своя собствена хеш таблица 718 00:35:51,240 --> 00:35:54,042 или да опитате като реализирахме няколко седмици назад. 719 00:35:54,042 --> 00:35:56,250 Така че нека да видим какво всъщност можем да направим с JavaScript. 720 00:35:56,250 --> 00:35:59,410 И по-специално, това е пране списък от функции 721 00:35:59,410 --> 00:36:02,300 че браузърите са, че ни позволи да се свържете JavaScript 722 00:36:02,300 --> 00:36:05,470 в един сайт по следния начин. 723 00:36:05,470 --> 00:36:09,340 JavaScript често се използва като от страна на клиента скриптов език. 724 00:36:09,340 --> 00:36:10,130 Това не е компилиран. 725 00:36:10,130 --> 00:36:11,370 Тя също се интерпретира. 726 00:36:11,370 --> 00:36:15,740 Но за разлика от PHP, който се провежда на сървъра, в уеб сървър, 727 00:36:15,740 --> 00:36:18,220 или дълбоко вътре в клиенти, JavaScript 728 00:36:18,220 --> 00:36:22,190 се различава с това, че обикновено работи в браузъра. 729 00:36:22,190 --> 00:36:26,060 >> Така всеки JavaScript код, който започнете да пишете за PSet 8 или своя окончателен проект, 730 00:36:26,060 --> 00:36:29,890 или в реалния свят обикновено се случва да се записват на сървъра, абсолютно 731 00:36:29,890 --> 00:36:33,110 в точка HTML или точка JS за JavaScript файл. 732 00:36:33,110 --> 00:36:35,770 Но браузърът ще да изтеглите, че JavaScript 733 00:36:35,770 --> 00:36:39,530 код към вашата собствена инстанция на Chrome, или IE или Firefox, или нещо такова. 734 00:36:39,530 --> 00:36:43,870 И кодът е всъщност ще получите изпълнява вътре в собствения си браузър. 735 00:36:43,870 --> 00:36:46,560 Само за да стане това по-реално, нека да видим това в конкретна форма. 736 00:36:46,560 --> 00:36:50,120 >> Ние нямаме представа какво прави този код без наистина да чете през него. 737 00:36:50,120 --> 00:36:52,670 Но позволете ми да отида да Facebook.com без да влезете. 738 00:36:52,670 --> 00:37:00,440 Позволете ми да отида да се запознаят Element и да отидете, нека да кажем, Network и се презарежда страницата. 739 00:37:00,440 --> 00:37:04,150 И ние ще see-- нека смени Презареди Page, за да получите всички искания за ново. 740 00:37:04,150 --> 00:37:08,850 И много първи досие, което виждам е CSS, CSS. 741 00:37:08,850 --> 00:37:10,880 Тук е първият JavaScript файла, и аз имам 742 00:37:10,880 --> 00:37:14,600 няма представа какво прави това, но тук е част от кода на JavaScript 743 00:37:14,600 --> 00:37:16,180 който задвижва Facebook. 744 00:37:16,180 --> 00:37:18,400 Тя дори не е чак толкова разкривайки Увеличаване. 745 00:37:18,400 --> 00:37:20,260 Тя все още е точно толкова безсмислено. 746 00:37:20,260 --> 00:37:24,341 >> Но вие ще видите дори по-долу, има дори повече от тези на JavaScript файлове. 747 00:37:24,341 --> 00:37:24,840 Опа. 748 00:37:24,840 --> 00:37:25,440 Това е пинг. 749 00:37:25,440 --> 00:37:28,550 Нека слезем малко Освен това, по-нататък, по-нататък. 750 00:37:28,550 --> 00:37:29,894 Има едно. 751 00:37:29,894 --> 00:37:31,238 Има едно. 752 00:37:31,238 --> 00:37:31,880 Има едно. 753 00:37:31,880 --> 00:37:35,820 >> Така че, въпреки че Facebook, зад сцени, е написано в участие в PHP 754 00:37:35,820 --> 00:37:39,100 и собствен Facebook версията от него, има огромно количество JavaScript. 755 00:37:39,100 --> 00:37:41,330 В действителност, всеки от изброените в чата, което правите на Facebook, 756 00:37:41,330 --> 00:37:45,520 някоя от актуализациите на инлайн Timeline които се случват в реално време, всичко това 757 00:37:45,520 --> 00:37:47,944 се задвижва от JavaScript. 758 00:37:47,944 --> 00:37:48,444 Така ли? 759 00:37:48,444 --> 00:37:50,235 >> АУДИТОРИЯ: Аз не съм сигурен, ако това е Facebook, 760 00:37:50,235 --> 00:37:53,624 но си помислих, че Facebook разработена тяхната собствена вътрешна език код? 761 00:37:53,624 --> 00:37:54,540 DAVID Malan: Те направиха. 762 00:37:54,540 --> 00:37:58,110 Така че това е защо аз казвам на вариацията на PHP, наречена Hip Hop, че те действително 763 00:37:58,110 --> 00:38:03,440 допълнителни функции за такъв, че когато Mark първо изпълнява Facebook, 764 00:38:03,440 --> 00:38:04,710 тя е написана в PHP. 765 00:38:04,710 --> 00:38:07,370 И това нещо е останало подобно на предния край език 766 00:38:07,370 --> 00:38:09,030 че те използват по-голямата част на техните кодиращи, но 767 00:38:09,030 --> 00:38:11,870 не е на език, който е везни особено добре за милиарди 768 00:38:11,870 --> 00:38:12,630 на хора. 769 00:38:12,630 --> 00:38:15,300 И така, те са добавили свой собствен подобрения зад кулисите. 770 00:38:15,300 --> 00:38:17,049 И те използвате произволен брой на други езици 771 00:38:17,049 --> 00:38:19,170 за различни части от тяхната инфраструктура. 772 00:38:19,170 --> 00:38:24,080 Така че, да, това е вариация на това, което ние днес познаваме като PHP. 773 00:38:24,080 --> 00:38:26,610 >> Така че нека да разгледаме в няколко примера 774 00:38:26,610 --> 00:38:28,890 за това, как можем да използваме JavaScript тук. 775 00:38:28,890 --> 00:38:32,530 В днешния код, имаме куп файлове, първата от които, 776 00:38:32,530 --> 00:38:34,090 нека наречен DOM нула. 777 00:38:34,090 --> 00:38:36,770 Така DOM нула изглежда по следния начин. 778 00:38:36,770 --> 00:38:40,730 Позволете ми да отида в тази директория и да се отворят domzero.html, 779 00:38:40,730 --> 00:38:44,970 на върха на която има вид док декларация, заявявайки, тук идва HTML 5. 780 00:38:44,970 --> 00:38:46,440 А сега ето един HTML таг. 781 00:38:46,440 --> 00:38:47,540 Тук е маркер на главата. 782 00:38:47,540 --> 00:38:49,210 А ето и какво ново днес. 783 00:38:49,210 --> 00:38:52,620 >> Сега имаме таг скрипт вътре в главата на страницата. 784 00:38:52,620 --> 00:38:55,290 И това очевидно прави много малко, но известие 785 00:38:55,290 --> 00:38:58,410 че съм определил скрипт, с JavaScript. 786 00:38:58,410 --> 00:39:01,050 И като настрана, тъй като това е често срещано погрешно схващане, 787 00:39:01,050 --> 00:39:05,220 JavaScript няма абсолютно нищо общо с Java, езика 788 00:39:05,220 --> 00:39:08,010 че някои от вас може би са научили в АРС. 789 00:39:08,010 --> 00:39:10,480 Тя беше по-скоро маркетинг нещо от всичко, 790 00:39:10,480 --> 00:39:12,980 езда на coattails на Java години. 791 00:39:12,980 --> 00:39:17,300 Но JavaScript, няма нищо общо с Java, точно по същия начин, както и дразнещо, 792 00:39:17,300 --> 00:39:18,480 объркващо име. 793 00:39:18,480 --> 00:39:21,890 >> Така че тук е как да декларира функция в JavaScript, буквално се каже, функция, 794 00:39:21,890 --> 00:39:24,556 след името на функцията, тогава всеки аргументи, че може да предприеме, 795 00:39:24,556 --> 00:39:25,530 точно като в PHP. 796 00:39:25,530 --> 00:39:28,990 Оказва се, че в JavaScript, един от най- досадни функции, които съществуват, е предупреждение. 797 00:39:28,990 --> 00:39:31,392 Това е малко прозорче, което ще се появи и ще ви предупреди 798 00:39:31,392 --> 00:39:32,600 до известна част от информацията. 799 00:39:32,600 --> 00:39:33,766 Това е като цяло гледат накриво. 800 00:39:33,766 --> 00:39:35,980 Но ние ще го използваме като нашата първо упражнение тук. 801 00:39:35,980 --> 00:39:37,900 >> Обърнете внимание на няколко особености на JavaScript. 802 00:39:37,900 --> 00:39:41,524 Единични кавички и двойни кавички всъщност не е от значение. 803 00:39:41,524 --> 00:39:43,690 Единични кавички и двойно котировки могат да бъдат разменени, 804 00:39:43,690 --> 00:39:46,220 докато в C, трябва да се използват двойни кавички за стрингове, 805 00:39:46,220 --> 00:39:48,150 а вие имате две единични цитира за символа. 806 00:39:48,150 --> 00:39:51,150 В света на JavaScript, много хора, повечето хора 807 00:39:51,150 --> 00:39:54,970 използвайте единични кавички около струни Просто защото това е нещо, стилистични. 808 00:39:54,970 --> 00:39:58,330 Но това, което е оператор плюс тук, което не сме виждали преди? 809 00:39:58,330 --> 00:39:59,836 >> АУДИТОРИЯ: Concatenation. 810 00:39:59,836 --> 00:40:00,960 DAVID Malan: Concatenation. 811 00:40:00,960 --> 00:40:02,450 Така C дори не трябва това. 812 00:40:02,450 --> 00:40:04,820 PHP е операторът на точка, който прави това. 813 00:40:04,820 --> 00:40:09,710 JavaScript е операторът на плюс, които объркващо е точно като Java. 814 00:40:09,710 --> 00:40:11,440 Сега това, което се случва тук? 815 00:40:11,440 --> 00:40:14,260 >> Така че тук е мястото, където основен разбиране на тази снимка 816 00:40:14,260 --> 00:40:17,010 ние повърна няколко Преди дни влезе в игра. 817 00:40:17,010 --> 00:40:19,620 Помниш ли, когато имахме един прост версия на HTML page-- 818 00:40:19,620 --> 00:40:20,830 той просто каза, здравей свят. 819 00:40:20,830 --> 00:40:22,770 И тогава ние нарисува дърво надясно, което 820 00:40:22,770 --> 00:40:27,320 имаше куп правоъгълници и линии свързването им като родословно дърво. 821 00:40:27,320 --> 00:40:30,820 Така че това е така наречената DOM или Object Model Document. 822 00:40:30,820 --> 00:40:36,759 И се оказва, че можете да получите достъп правоъгълници в това дърво с синтаксис 823 00:40:36,759 --> 00:40:37,550 като следното. 824 00:40:37,550 --> 00:40:41,370 Можете буквално да се каже, документ, който е специален глобална променлива в JavaScript 825 00:40:41,370 --> 00:40:45,890 програма, която има функция свързани с него, че можете да получите достъп 826 00:40:45,890 --> 00:40:50,280 подобно на структура, но вие просто кажа точка и след това името на функцията, 827 00:40:50,280 --> 00:40:52,390 получите елемент от ID. 828 00:40:52,390 --> 00:40:55,460 >> Елементът Искам да е очевидно цитирам цитата име. 829 00:40:55,460 --> 00:40:57,150 И след това искам да получа неговата стойност. 830 00:40:57,150 --> 00:40:58,330 Сега сме се пред себе си. 831 00:40:58,330 --> 00:41:00,038 Аз дори не съм сигурен какво всичко това е на път. 832 00:41:00,038 --> 00:41:03,000 Нека бързо напред към HTML за страницата, която е супер проста. 833 00:41:03,000 --> 00:41:05,370 >> Забележете, че съм определено Форма тук. 834 00:41:05,370 --> 00:41:07,940 Забележете, съм го получил уникален ID, въпреки че не съм използвал 835 00:41:07,940 --> 00:41:08,870 този атрибут преди. 836 00:41:08,870 --> 00:41:11,300 Но това съществува в HTML. 837 00:41:11,300 --> 00:41:15,570 Може еднозначно да идентифицира някои парче на HTML с идентификатор по този начин. 838 00:41:15,570 --> 00:41:19,880 >> Забележете сега this-- Оказва се, HTML подкрепя, на този списък пране 839 00:41:19,880 --> 00:41:22,490 преди малко, цяла куп товарачи събития. 840 00:41:22,490 --> 00:41:25,060 И това събитие манипулатор казва на представи. 841 00:41:25,060 --> 00:41:28,730 На представянето на потребител на това форма, обадете се на следния код. 842 00:41:28,730 --> 00:41:31,360 И кода, който ще да се нарича нито екзекутиран 843 00:41:31,360 --> 00:41:35,260 е точно това, на гръцки функция, последвано от връщане невярно. 844 00:41:35,260 --> 00:41:37,360 Всичко останало трябва да е доста познато. 845 00:41:37,360 --> 00:41:42,050 >> Ето един принос от тип текст, чиято ID, в този случай, ще бъде името. 846 00:41:42,050 --> 00:41:45,430 Ние не разполагаме с реален атрибут име това time-- и бутон представи. 847 00:41:45,430 --> 00:41:48,330 Така получената страница изглежда така. 848 00:41:48,330 --> 00:41:52,890 И в резултат на поведение, ще видите, изглежда по този начин. 849 00:41:52,890 --> 00:41:56,940 Страницата ИТ местните домакини казва, здравей Дейвид, едва ли е естетичен 850 00:41:56,940 --> 00:41:58,340 начин да се поздравят потребител. 851 00:41:58,340 --> 00:41:59,950 Но какво всъщност се случва? 852 00:41:59,950 --> 00:42:01,360 >> Е, помислете какво е това. 853 00:42:01,360 --> 00:42:02,310 Това е текстово поле. 854 00:42:02,310 --> 00:42:04,635 И в съответствие с HTML тук, съм го дал 855 00:42:04,635 --> 00:42:07,350 уникален идентификатор наречен цитат цитата име. 856 00:42:07,350 --> 00:42:09,770 Междувременно, аз съм казвал, когато потребителят подава тази форма 857 00:42:09,770 --> 00:42:13,820 чрез натискане на Enter или щракнете върху Submit бутон, обадете се на функция, наречена Greet 858 00:42:13,820 --> 00:42:15,410 и след това се връща False. 859 00:42:15,410 --> 00:42:16,870 Нека разгледаме тези в обратна посока. 860 00:42:16,870 --> 00:42:20,590 Забележете, когато кликнете върху Изпращане, за URL на тази страница не се променя. 861 00:42:20,590 --> 00:42:22,420 Иконата на браузъра не започва върти. 862 00:42:22,420 --> 00:42:27,050 Аз не ходя никъде, и това е буквално, защото казах върне False. 863 00:42:27,050 --> 00:42:31,534 Назад Фалшиви къси съединения или спирки поведението по подразбиране на форма. 864 00:42:31,534 --> 00:42:33,700 Така че след това ни оставя с този един последен въпрос. 865 00:42:33,700 --> 00:42:34,764 Какво Greet направя? 866 00:42:34,764 --> 00:42:36,680 Е, очевидно Поздравете призовава функция, наречена 867 00:42:36,680 --> 00:42:39,250 Alert, преминава в една дълго аргумент, че е 868 00:42:39,250 --> 00:42:43,950 резултат от слепване заедно букет от поднизове, здравей запетая пространство, 869 00:42:43,950 --> 00:42:45,810 след това каквото и да се връща. 870 00:42:45,810 --> 00:42:51,490 Така документ е като глобален променлива, че корен на дървото, 871 00:42:51,490 --> 00:42:55,560 свикването на специална функция, в противен случай сега е известен като метод. 872 00:42:55,560 --> 00:42:57,650 Функцията, която е вътрешността на променлива 873 00:42:57,650 --> 00:42:59,640 нарича метод вместо функция. 874 00:42:59,640 --> 00:43:01,570 >> Така че елемент от ID. 875 00:43:01,570 --> 00:43:03,940 Какво елемент, което правите искате да получите от своя ID? 876 00:43:03,940 --> 00:43:06,970 Цитат цитата име и След това специално стойност. 877 00:43:06,970 --> 00:43:12,000 Така че с други думи, този код просто намира текстовото поле, чиято ID е името 878 00:43:12,000 --> 00:43:13,380 и след това получава своята стойност. 879 00:43:13,380 --> 00:43:16,460 Така че, ако аз трябваше да се промени това и да кажа, Дейвин вместо на Давид, 880 00:43:16,460 --> 00:43:20,670 и кликнете върху Изпращане, сега ние има поздрав за Дейвин. 881 00:43:20,670 --> 00:43:22,890 >> Добре, така че всичко, фин и добър. 882 00:43:22,890 --> 00:43:25,480 Но нека да видим дали можем да направим това малко по-чист, тъй като само 883 00:43:25,480 --> 00:43:28,190 писането на код, като това е като цяло ще се гледат накриво. 884 00:43:28,190 --> 00:43:30,060 Това ще изглежда по-страшно. 885 00:43:30,060 --> 00:43:32,330 Но това, което е първият разлика, че ви се отбележи, 886 00:43:32,330 --> 00:43:35,970 в тази версия освен назове смяна на DOM един? 887 00:43:35,970 --> 00:43:41,110 Какво структурно изглежда различно за това в сравнение с другите? 888 00:43:41,110 --> 00:43:41,932 Така ли? 889 00:43:41,932 --> 00:43:43,890 АУДИТОРИЯ: Дали под формата на началото на скрипта сега? 890 00:43:43,890 --> 00:43:46,570 DAVID Malan: Да, формата е на върха на сценария за някои любопитни причина. 891 00:43:46,570 --> 00:43:48,736 Така че това е първото нещо, че скача в мен. 892 00:43:48,736 --> 00:43:50,990 И за щастие най-малко, тази част е идентична. 893 00:43:50,990 --> 00:43:53,470 Така че единственото нещо, което изглежда да бъде различен е това. 894 00:43:53,470 --> 00:43:55,296 >> Така че тук е това, което е чист около JavaScript 2. 895 00:43:55,296 --> 00:43:57,420 И това го прави трудно да се разбере на пръв поглед, 896 00:43:57,420 --> 00:44:00,670 особено за крайните проекти, ако което търсите в примерен код онлайн, 897 00:44:00,670 --> 00:44:04,200 но тя се свежда до някои основни синтактични функции. 898 00:44:04,200 --> 00:44:06,230 Тук отново е, че глобална променлива документ. 899 00:44:06,230 --> 00:44:09,540 Тук отново е този метод или функция който казва получите елемент от ID. 900 00:44:09,540 --> 00:44:11,570 Този път искам да получите ID нарича демо. 901 00:44:11,570 --> 00:44:12,490 Къде е това? 902 00:44:12,490 --> 00:44:15,400 Това е очевидно полето Оттук самата форма. 903 00:44:15,400 --> 00:44:20,010 >> И сега забелязвам, че очевидно, ако се върна този възел от дървото, което 904 00:44:20,010 --> 00:44:22,940 представлява формата себе си, не текстово поле, 905 00:44:22,940 --> 00:44:26,970 Оказва се, че формата, която възел или правоъгълник от дървото, 906 00:44:26,970 --> 00:44:30,450 е това, което ние ще се обадя на един имот, много, много, много подобен 907 00:44:30,450 --> 00:44:35,390 в дух на структура в C. Това е просто член на данни вътре в този правоъгълник. 908 00:44:35,390 --> 00:44:38,300 >> Така че аз имам формата тук, и аз съм поставяне, 909 00:44:38,300 --> 00:44:44,650 или аз съм възлагане, за да си по Пуснете манипулатор или по-скоро На Предложи имот 910 00:44:44,650 --> 00:44:45,740 следната функция. 911 00:44:45,740 --> 00:44:49,000 И това е, от момента, най-лудите нещо, което до този момент синтактично. 912 00:44:49,000 --> 00:44:53,610 Оказва се, че в JavaScript и в PHP, и честно казано, за този въпрос в C, 913 00:44:53,610 --> 00:44:58,990 въпреки че ние не го направите, можете да добави безименен, анонимен или AKA ламбда 914 00:44:58,990 --> 00:45:03,000 функции, които нямат име но въпреки това може да се нарече. 915 00:45:03,000 --> 00:45:07,050 >> Така че това, което правя тук, е, че съм възлагане На този Предложи имот, който 916 00:45:07,050 --> 00:45:14,330 е вътре в този възел на моя DOM дърво, функция, функция показалка, ако щете. 917 00:45:14,330 --> 00:45:16,310 Тази функция не е име, но това не го прави 918 00:45:16,310 --> 00:45:19,110 значение, защото ние ще видим в момент, как да го нарека. 919 00:45:19,110 --> 00:45:21,780 Когато тази функция се нарича, този код получава екзекутиран, а след това 920 00:45:21,780 --> 00:45:24,210 невярно се връща точно както преди. 921 00:45:24,210 --> 00:45:25,800 >> Но забележете какво съм направил. 922 00:45:25,800 --> 00:45:27,830 В този момент в история, имам форма. 923 00:45:27,830 --> 00:45:30,190 Той има уникален идентификатор, наречен демо. 924 00:45:30,190 --> 00:45:33,740 Първа тук, имам таг скрипт който изпълнява следния код. 925 00:45:33,740 --> 00:45:37,720 Той се свързва с този възел в на дървото, за да го по Пуснете 926 00:45:37,720 --> 00:45:40,260 имот тази функция тук. 927 00:45:40,260 --> 00:45:44,310 И само от природата на това как браузъри работят, когато сега кликнете върху Изпращане или натиснете Enter, 928 00:45:44,310 --> 00:45:45,889 тази функция ще се нарича. 929 00:45:45,889 --> 00:45:48,680 Тя не се нуждае от име, защото който по дяволите му пука как се нарича. 930 00:45:48,680 --> 00:45:52,540 Единственият път, когато го е някога ще получите наречен е, когато се представя под формата. 931 00:45:52,540 --> 00:45:55,130 Няма нужда за мен, човешкото разработчика, 932 00:45:55,130 --> 00:45:57,330 всъщност го наричат ​​никъде другаде. 933 00:45:57,330 --> 00:46:00,720 >> Сега просто като закачка, като че ли това не са били против достатъчно огъване, 934 00:46:00,720 --> 00:46:03,330 ние дори може да направи това изглежда по-загадъчен използване 935 00:46:03,330 --> 00:46:05,850 супер популярната библиотека наречена JQuery. 936 00:46:05,850 --> 00:46:08,760 В действителност JQuery и JavaScript често се вмества. 937 00:46:08,760 --> 00:46:12,790 И това, което ние ще направим в сряда е начало използването на този език и тези библиотеки 938 00:46:12,790 --> 00:46:16,030 за изграждане на все по асинхронен и динамични приложения 939 00:46:16,030 --> 00:46:18,950 като картата получаване приложения, приложения 940 00:46:18,950 --> 00:46:22,360 който се актуализира на интернет страницата в реално време, подобно на Facebook или Gchat 941 00:46:22,360 --> 00:46:27,130 направи, и вече не се ограничава само до удря Подайте от GET или просто пост 942 00:46:27,130 --> 00:46:27,630 сам. 943 00:46:27,630 --> 00:46:29,055 Така че ще се видим в сряда. 944 00:46:29,055 --> 00:46:31,805 945 00:46:31,805 --> 00:46:35,550 >> [За възпроизвеждане на музика] 946 00:46:35,550 --> 00:48:09,728