[Музыка, якая іграе] DAVID Малання: Гэта CS 50, і гэта пачатак тыдня дзевяць. І тое, што мы думалі, што мы робім сёння, гэта не толькі зачыніць раздзел пра мінулага тыдня Матэрыял, дзе мы засяродзіліся на сэрвэры бок вэб-праграмаванне з PHP і SQL, некаторыя базы дадзеных матэрыял. Мы будзем казаць пра што-то накшталт сёння бяспека, а затым Пераход да праграмавання на баку кліента мова вядомы як JavaScript. Але па-першае, некаторыя выкуп. Вы можаце ўспомніць, што на Серада, я адправіўся напісаць сайт, які узяў на ўваходзе карыстальніка з дапамогай HTML-формаў, што затым захоўваюцца што імёны карыстацкага ўводу, тэлефон нумары, і тэлефон носьбітаў у базе дадзеных. А потым у мяне было трохі каманду радок сцэнара напісаў у PHP , Які павінен быў паўтараць больш радкоў у базе дадзеных і адправіць тэкставыя паведамленні. Нягледзячы на ​​некалькі, некалькі спробаў, мы не прымусілі гэта працаваць да канца. Так я правёў гэтым увесь тыдзень працуе на гэты код, каб атрымаць нас міма пункту дзе мы спыніліся, у выніку чаго ўсе Я атрымаў да канца асяроддзя было гэта тэкст паведамлення ад Марго, як я змагаўся, затым тэкставае паведамленне ад іншага аднакласнік, Вы павінны гэтую Давіда. Услед за гэтым, дзіўна абнадзейвае. Працягваў ісці, вельмі прыемна. Я амаль не атрымаў яго да then-- і гэта заўвага, мы скончылі ў сераду. І тады на самай справе, магчыма, мой каханы, Імгненне праз, гэта адбылося ў. Чорт прамая трансляцыя. Такім чынам, сёння мы гэта выправіць з хуткім паглядзець на тое, што я зрабіў з тых часоў. Так увесь гэты код даступны онлайн з мінулага тыдня, тыдні восем, Зыходны код. І вы ўбачыце, што я прайшоў праз, і я на самой справе ачысціць рэчы няшмат. Я прадставіў пару з адным асаблівасці базе дадзеных SQL. Напрыклад, замест таго, проста зрабіць носьбіт вар гольца як я думаю, што я зрабіў на лета на мінулым тыдні. Я замест вызначыў яго як тое, што называецца пералік. І некаторыя з вас, магчыма, бачылі гэта як мы даследавалі С. Enum на самай справе Асаблівасцю С, дзе вы можаце пералічыць цэлую кучу канстант і прызначыць іх аўтаматычнае значэння, як адзін, два, тры, чатыры без жорсткіх кодавымі нумарамі. Так SQL падтрымлівае тое ж самае, у якім, калі ў вас ёсць поле базы дадзеных, толькі вы хачу ўзяць на адной з канчатковых значэння, вы можаце літаральна паказаць яго як я зрабіў там на працягу чатырох папулярныя мабільнікаў амерыканскія аператары. Так што я зрабіў гэта. І я зрабіў шэраг змен, як добра, самае галоўнае з якіх быў Віртуальны працы, таму што адклiканнi, што гэтая праграма абапіралася на якіх як правіла, называюць электроннай пошце, каб SMS шлюз, які з'яўляецца проста мудрагелісты спосаб сказаць, што Verizon, і AT & T, і іншыя людзі падтрымліваюць сервер, у выніку чаго, калі ён атрымлівае па электроннай пошце, ён пераўтворыць яго ў SMS і пасылае тэкст Паведамленне на іншы тэлефон. Так што, калі я зрабіў гэта правільна, вось новы і палепшаны выгляд што збіраецца пагаварыць з Новы і палепшаны код, які Вы можаце гуляць з онлайн. І гэта будзе, спадзяюся, зрабіць мой тэлефон сігнал у хвіліну. Такім чынам, спачатку я збіраюся ўвесці ў маё імя. Па-другое, я не збіраюся зрабіць гэта ў гэты раз. Я збіраюся зрабіць Агледзіце элемент. І гэта ўсяго толькі дробязь, так што я не стварыць гадзін пасля вытворчасці працаваць, як я зрабіў у мінулы раз. Там зараз знаходзіцца мой нумар тэлефона. Я выбраць Verizon. І вось, давайце звернемся на гэтай мікрафонам тут, і мэта гэтая ў маім тэлефоне тут. Я збіраюся націсніце Рэгістрацыя, якія, будзем спадзявацца, пакласці яго ў базу дадзеных. Цяпер я збіраюся паехаць у Праграма каманднага радка, якія Нагадаем называўся кропка слэш Тэкст і перакрыжуеце пальцы. Тут мы ідзем. [PHONE ўвагнутасці] [Апладысменты] DAVID Малання: Так весялей, чым this-- гэта цікава, вядома, калі б я патрапіць у яго. Але гэта больш цікава, я думаў, калі мы створаны адзін з тых момантаў у кіно дзе як-то на самай справе дрэнна, што адбылося ў свеце, і, як і ўсе АНБ Народнай тэлефонаў пачаць пішчаць з дапамогай тэкставых паведамленняў гатоўнасць іх да гэтага факту. Так я думаў, што мы паспрабуем ўзнавіць тое ж самае тут, чаго не выкарыстоўваючы базу дадзеных, Я замест загадзя напісаў праграму, якая выглядае наступным чынам. Гэта index.php-- і я паклаў гэты код на сайце як well-- што, па-відаць проста аказвае form.php, выкарыстоўваючы стыль парадыгму MVC, што мы казаць пра больш падрабязна ў праблемнай набору сем. Гэта форма даволі простая. Гэта збіраецца прадставіць Файл называецца here.php па пошце. І гэта, відаць збіраецца прасіць для імя, і нумар тэлефона, а затым з дапамогай так званых Выберыце меню, гэта збіраюся даць вам па меншай меры чатыры папулярныя мабільнікаў амерыканскія аператары, а затым дазваляюць эфектыўна прыняць удзел, націснуўшы тут. І тут, між тым, збіраецца пазычаць частка кода з мінулага разу. І калі вы проста бегла гэта, Вы ўбачыце, што ёсць цэлая куча праверкі памылак. Але прыгажосць у канцы, што мы не пішам у базу дадзеных сёння. Мы трымаем яго простым і проста адпраўкі, мы спадзяемся, Тэкст паведамлення праз функцыі I напісаў на працягу апошніх некалькіх дзён выкліку Тэкст, які знаходзіцца ў функцыі. PHP, што зноў-такі даступныя ў Інтэрнэце. Так што, калі вы хочаце прыняць удзел у гэтым. Мы не збіраемся быць захоўвання нічога. Перайсці да наступнага адрасе тут у рэжыме рэальнага часу. І не давайце іх толькі пакуль, але давайце ці зможам мы мець адзін з гэтых фільмаў моманты, калі тэлефон кожнага пачынае пішчаць, спадзяюся, проста адзін раз у гэтым годзе, у адрозненне ад 2011 дзе гэта пайшло жудасна крыва. І як толькі вы ідзяце па гэтым адрасе, Вы павінны ўбачыць супер простую форму што калі ў вас ёсць імя, сотавы тэлефон лік, і перавозчык тэлефон, што супадае са спісам там, ідзеце наперад і запоўніць форму. Але не ўдарыў прадставіць толькі пакуль. Форма будзе выглядаць вось так. Ідзем далей і ўвесці ў Ваша імя, нумар тэлефона. Oop, хто-то збіраецца на апярэджанне. Гэта нармальна. ОК, усё гэта запоўніў форму. Гэта павінна працаваць на тэлефон таксама, калі хочаце. Добра, на старт, увага, марш. Хіт Тут. Што? Няма. Клянуся Богам, я тэставаў гэта некалькі раз сёння. Вы атрымалі гэта? [Устаўляючы ГАЛАСЫ] DAVID Малання: ОК, памылка карыстальніка, магчыма. Гэта два. Ён працаваў для двух з некалькі сотняў, тры, чатыры. Добра, што гэта добра. Чатыры з пяці для Правільнасць, як а. Дык што ж адбылося? Так, як мяркуецца, не бачачы ваш экраны, таму, магчыма, гэта ўжо з памылкай? Гэта, напэўна, што мы былі проста спрабуе зрабіць занадта шмат падлучэнняў на паштовы сервер Гарвардскага усё ў адзін раз з таго ж IP-адрасы. Я проста мяркую, што, так як я не зрабіў ёсць раскоша тэставання гэты код з некаторымі 300 чалавек загадзя але цяпер разумею, што што па крайняй меры павінна атрымалі працу на гэты раз. Добра, дык чаму ж усё гэта больш дарэчныя ў тым, што адбываецца? Ну па-першае, хутка Пару аб'яваў. Так што, калі вы хочаце далучыцца Чанг, і Нік, і іншыя на абед у пятніцу, зрабіць RSVP ў звычайнае URL там. Калі вы думаеце пра канцэнтруючыся ці рабіць другасны ў CS, будзь ты на другім курсе, або першакурснік, ці нават малодшага або старэйшага ў гэтай кропцы і яшчэ можна выціснуць ў курсах, разумеюць, што ў інжынернай школе збірае для вольнага Бэн і Марозіва і парады Джэры у сераду неўзабаве пасля класа ў 4:00 вечара ў будынку CS на Максвелла Дворкін. Калі гэта занадта хутка на экране, проста пайсці у cs50.harvard.edu для спасылка на мерапрыемстве Facebook дзе можна ўбачыць больш падрабязную інфармацыю. Між тым, я думаў, што выправіць яшчэ адна рэч, я трапіў у няёмкае становішча ў сераду. Аказваецца, што ID-Марка на Facebook, не было тры гады. Гэта было чатыры гады. Аказваецца, ён быў больш тэст рахункі, чым я памятаю. Але тое, што гэта было падобна на магчымасць зрабіць, гэта падцягнуць URL накшталт гэтага. Вось і атрымліваецца, што Facebook мае API, інтэрфейс прыкладнога праграмавання, якая ўяўляе сабой механізм, у якім вы можа запытваць дадзеныя праграмна на Facebook і атрымаць назад машыну чытэльнай, не веб-старонкі але толькі просты тэкст, што-то называецца JavaScript Object Notation. І на самай справе, калі я наведваю гэты URL, і павялічыць, па змаўчанні, гэта Марк публічна даступная інфармацыя. І цікавая дэталь вось толькі, што яго ID Сапраўды, нумар чатыры, які я зразумеў, як толькі я зрабіў гэта. Вы можаце зрабіць гэта самастойна, калі вы ведаеце, Ваша імя карыстальніка Facebook, калі ў вас ёсць. Проста увядзіце яго верхнюю ёсць. І ўсё гэта не з'яўляецца прыватным. Я проста раблю гэта нават ў рэжыме інкогніта. Так што я нават не ўвайшлі ў сістэму. І вы бачыце, што я па-відаць, быў нумар карыстальніка 6454 на Facebook, якая не занадта дрэнна ў гэтыя дні. Так ці інакш, вы таксама ўбачыце Дадатковая інфармацыя ёсць. І карысны аспект таго, што гэта ты можа напісаць уласную праграму, што неяк аб'ядноўвае дадзеныя, як гэта Ваша прыкладанне. Вы можаце пашырыць магчымасці карыстальнікаў у увайсці ў свой вэб-сайт, не выкарыстоўваючы свае ўласныя прыстасаваныя лагін і пароль, але, можа быць, іх Facebook Увайсці і атрымаць інфармацыю нават пра сваіх сяброў, калі яны ўхваліць такія, ці аналагічны. Так, звярніце ўвагу, што CS50, занадта, ёсць некаторыя ўласныя API ,, адзін для дадзеных каталога Вядома, некаторыя для меню абдымкі ў сталовай залы, усё будынка і месцы на тэрыторыі кампуса нас ёсць API для а што вы можаце запытаць ж і атрымаць назад тэкставая інфармацыя, вы можаце інтэграваць у PHP, або JavaScript, або нават, хоць радзей, З заснаваная канчатковы праект. Сапраўды наперад у фінал Праект некалькі этапаў. Вы атрымалі ад нас ліст на днях. Зразумейце, што прапановы гэта з-за быць панядзелак. Гэта не абавязкова абавязковым, але вы сапраўды павінны атрымаць свае навучальныя хлопцы зацвярджэнне, перш чым зрабіць любыя змены пасля гэтага. І тады наперад з'яўляюцца Шэраг іншых этапаў. Такім чынам, каб дражніць цябе, з некаторымі магчымасцямі, у нас ёсць куча гэтыя адценне лямпачкі. І некаторыя з вас, хлопцы, зараз ёсць некаторыя з іх у вашай пакоі ў інтэрнаце, а таксама. І яны таксама маюць API. Так ўспамінаю тыя двайковыя цыбуліны тыдня таму, што Дэн Брэдлі і Ансело Даф стварыў для нас. Яны выкарыстоўвалі праграмны інтэрфейс для гэта лямпачка, якая на дадзены момант падлучаны да электрычнасці а затым з дапамогай бесправаднога падлучаны да невялікай рэчы называецца мост сюды, як маленькі маршрутызатар прапрыетарных у гэтым канкрэтным прыладзе. Але, аказваецца, калі я ведаю, як адправіць HTTP паведамленні, як мы ўсе цяпер рабіць, Я магу адправіць паведамленне, як гэта гэта лямпачка, каб уключыць яго або выключыць або зрабіць любую колькасць іншыя аперацыі па ім. Звярніце ўвагу, што гэта не атрымаць, гэта не пост. Там яшчэ адзін называецца путаў. Там на самай справе некалькі іншых такіх дзеясловаў. Але звярніце ўвагу, што ёсць шлях там, слэш API, слэш новага распрацоўніка, слэш святло, слэш адзін, слэш стан. Гэта, па-відаць проста Шлях, што кампанія, Philips, вырашыў вы павінны ўдарыць з просьбай HTTP калі вы хочаце, каб змяніць стан колбы з выкарыстаннем HTTP 1.1. Тады звярніце ўвагу на пусты радок. А потым, нарэшце, тое, што выглядае як від на масіў нейкі, Гэта зноў-такі будзе называцца JavaScript Object Notation, або Джэйсан. І тое, што вы бачыце тут з'яўляецца тое, што Ёсць тры пары ключ-значэнне. Адзін ключ называецца на. І яго значэнне па-відаць, будзе дакладна. Яркасць складае 128, які гэта свайго роду міжнар. А потым час пераходу нуля, што, па-відаць як доўга ён збіраецца прыняць, каб ператварыць гэтую рэч на. Так што цяпер гэта лямпачка не гарыць. Але калі б я рабіць тое, this-- хай мне пайсці ў невялікі шпаргалку што Дэн створана ў advance-- і я збіраюся ісці наперад і скапіяваць наступная каманда. Curl, як некаторыя з вас магчыма, запазычаныя на CS50 Абмеркаваць гэта ўтыліта, як Telnet такой што вы можаце мадэляваць HTTP запыты, спецыяльна ставіць. Я магу адправіць гэтыя дадзеныя, што канкрэтна мы проста ўбачыў хвіліну назад спецыяльна па наступным адрасе тут. А потым Curl збіраецца звяртацца усе неабходныя загалоўкі і разбор там з. Так што ўсё што мне трэба зрабіць, гэта скапіяваць гэта ў акно тэрміналу, а затым націсніце Увод. І лямпачка працягваецца. І гэта ўсё адбываецца праз мой кампутар па бесправадной сеткі як-то ўніз да моста, які Затым размова на гэтую лямпачку. Я магу зрабіць што-то яшчэ. Я магу зрабіць гэтую рэч перайсці чырвоны напрыклад. Я магу, напрыклад, зрабіць гэтая рэч пайсці зялёны. Я магу зрабіць яго сінім. І заўважце, у кожным з іх выпадкі, усё, што я мяняю з'яўляецца так званая значэнне адцення для на самай справе даць яму трохі колеру. Такім чынам, дазвольце мне ўставіць гэты, як добра. Цяпер ён блакітны. І вы можаце зрабіць нават аматар рэчы where-- пойдзем на зялёны. І я мог бы зрабіць гэта з Вядома, з майго кода. Але нават сам API падтрымлівае розныя аперацыі як гэта, якія будуць цяпер турбаваць нам на працягу наступных 30 секунд. Дык вось адзін густ таго, што вы маглі б зрабіць з API, гэта адзін удзелам лямпачкі. Звярніце ўвагу, што CS50 мае некалькі пары Google Glass, калі б ты хацелі закрануць што-то разам гэтыя радкі, Arduino Unos, якія з'яўляюцца малюсенькія кампутары, па сутнасці, на невялікай друкаванай плаце што вы можаце падключыць драты і іншыя рэчы каб і на самай справе кантроль Ваш рэальны свет серада. А яшчэ ёсць пара з новых цацак, якія ў нас ёсць. Гэта адзін літаральна толькі што прыбыў На днях па пошце, Міо павязкі. І я падумаў, што гэта спосаб вам рады аб праектах што вы маглі б выкарыстоўваць з гэта абсталяванне будзе быць гуляць у гэтую кароткі кліп што яны выкарыстоўваюць, каб дражніць людзей што мы зараз жывем у будучыні. [Музыка, якая іграе] DAVID Малання: Так на працягу некалькіх тыдняў, вы таксама можа быць, што выдатна ў CS50 кірмашы. Яшчэ адна прылада, што мы ёсць куча, што мы рады ў пазыку для праектаў называецца кантролер руху. Гэта невялікае прылада USB падключэнні да кампутара, дазваляе вам ўзаемадзейнічаць з Ваш ноўтбук, Mac ці PC, як быццам вы былі, як Xbox Kinect і на самай справе зрабіць фізічныя руху значна як мы бачым, у гэтым бачанне будучыні. [Музыка, якая іграе] DAVID Малання: Так што нават калі ў вас ёсць не ведаю, як нешта падобнае магло быць вынайдзена ці праца на апаратным узроўні, незалежна ад таго ,. Нават пасля таго, як некалькі месяцаў CS50, і разуменне праграмавання ў больш агульным, і вэб-праграмаванне больш Нядаўна, а затым і API-інтэрфейсы, і HTTP, Вы будзеце мець доступ праз праграмныя інтэрфейсы API, калі вас хачу ўзяць адзін з іх Прылады на самай справе пагаварыць з ім і не прыйдзецца турбавацца аб Якая ляжыць у аснове рэалізацыя Дэталі, якія цалкам у адпаведнасці з гэтай паняцці слаёў абстракцыя, што мы бачыў на працягу семестра. Гэтак жа ў мінулыя выходныя, бачыў пару кавалачкаў навін. Перайсці спачатку перайдзіце на семінарах, калі вас хацелася б даведацца што-то больш на любую колькасць пытанняў. Глядзіце URL там. І гэты быў адпраўлены мне Чангам, які вы ведаеце, хто друку нашу армію сланоў. І гэта быў загаловак наступным чынам. Я ў жаху ад майго новага тэлевізара. Чаму я баюся, каб ператварыць гэта рэч, і вы б таксама. Так што мы цяпер у пазначыць у семестр, таксама, дзе, нават калі ў вас ёсць найменшага разумення пра тое, як працуе вэб, і HTTP, і бяспекі, такія рэчы, як гэта павінны пачаць, кідаюцца ў вочы. Але таксама, вы зразумееце, ці з'яўляюцца гэтыя рэчы або няма рэальныя пагрозы. Так што я ўзяў некалькі вынятак з гэтага артыкула тут. А гісторыя такая. Я зараз ўладальнік Новы Smart TV, якая абяцае даставіць струменевае мультымедыйны кантэнт, гульні, прыкладання, сацыяльныя медыя, і Інтэрнэт прагляд, ой, і тэлебачанне таксама. Адзіная праблема заключаецца ў тым, што я зараз баюся яго выкарыстоўваць, лічыць аўтар. Вы б таксама, калі вы прачыталі 46 старонка палітыка прыватнасці для тэлевізара. Колькасць дадзеных гэтай рэч збірае ашаламляе. Ён рэгіструе, дзе, калі, як, і як доўга вы плануеце выкарыстоўваць тэлевізар. Ён ўсталёўвае адсочванне печыва, як мы ўжо абмяркоўвалі, і маякі распрацаваны каб вызначыць, калі ў вас ёсць разглядаецца прыватнасці ўтрыманне або канкрэтнае паведамленне па электроннай пошце калі вы хочаце, каб праверыць электронную пошту на экране тэлевізара. Ён запісвае прыкладання, вы выкарыстоўваць, вэб-сайты, якія вы наведваеце, і як вы ўзаемадзейнічаеце з утрыманнем, рабіць усё, што праз ваш смарт-ТБ. Ён таксама, жудасным yet-- гэта мая addition-- мае убудаваную камеру з распазнання асоб. Мэта складаецца ў тым, каб забяспечыць кантроль жэст для тэлевізара і дазволіць вам увайсці ў персаналізаваныя рахункі, выкарыстоўваючы ваш твар. На версе, вобразы захоўваецца на экране тэлевізара, а не загружана да карпаратыўным серверу. З іншага боку, інтэрнэт- Падключэнне робіць ўвесь тэлевізар ўразлівыя для хакераў, якія прадэманстравалі здольнасць каб атрымаць поўны кантроль над машынай. Больш турботы, як быццам гэта не было дастаткова разумныя, гэта мікрафон. Тэлевізар адрозніваецца голас Функцыя распазнання што дазваляе гледачам кіраваць экран з дапамогай галасавых каманд. Але абслугоўванне пастаўляецца з а злавеснае папярэджанне. Памятаеце, што калі Вашы вымаўленыя словы ставяцца асабістыя або іншай канфідэнцыйнай Інфармацыя, што інфармацыя будзе сярод дадзеных, захопленых і перадаецца трэцяй асобе. Ёсць што? Не сказаць, асабісты або адчувальнай матэрыял перад вашым тэлевізарам. Так што гэта на самай справе па-сапраўднаму. І цяжка не ўбачыць, калі вас перайсці да Best Buy і да т.п. для тэлевізараў у гэтыя дні. Яны ўсе разумныя ў некаторым родзе. І яны атрымліваюць разумнейшыя і жудасным. І яны проста збор дадзеных такім чынам, што мы гаварылі пра а затым загрузіць яго праз HTTP ці некаторыя іншыя пратакол у нейкі сервер. Так што гэта было пацешнай артыкуле у гэтай онлайн-сайт тут, якія казалі пра прыватнасці памылка або памыляюся код што мы можам на самай справе звязаць у дыскусіі на мінулым тыдні. Так гэты загаловак быў, як вынікае, гісторыя ідзе тут, Джош Breckman працаваў Кампанія, якая прызямлілася кантракт распрацаваць кіраванне кантэнтам Сістэма, або CMS, як яны называюцца, для дастаткова вялікага сайце ўрада. Большая частка праекта ўдзельнічае распрацоўка сістэмы кіравання кантэнтам так што супрацоўнікі будуць магчымасць ствараць і падтрымліваць пастаянна мяняецца Змест для свайго сайта. Справы пайшлі вельмі добра для праз некалькі дзён пасля будзе жыць. Але на шосты дзень, справы пайшлі не так добра. Усе ўтрыманне па Сайт цалкам знік. І усе старонкі прывёў да дэфолту, увядзіце кантэнту вэб-старонкі. Упс. Джош быў прызваны, каб даследаваць і заўважыў што адзін асабліва клапотна Знешні IP адрас быў увайшоў і выдаляюцца ўсе Утрыманне ў сістэме. IP-адрас не належыць у нейкай замежнай хакерскай сагнутай на знішчэнне карыснымі Урад інфармацыя. Гэта рашэнне аб googlebot.com, Уласны вэб-паўзе павук Google ,. Упс. Пасля невялікага даследавання і караскацца вакол, каб знайсці noncorrupt рэзервовага капіявання, Джош знайшоў праблему. Карыстальнік скапіяваў і уставіў некаторы кантэнт з аднаго старонкі на іншую, у тым ліку Змяніць гіперспасылку рэдагаваць змесціва старонкі. Як правіла, гэта не будзе Пытанне так знешняга карыстальніка будзе неабходна ўвесці імя і пароль, але сістэма аўтэнтыфікацыі CMS, Увайсці сістэма, не ўлічваць складаны ўзлом метады Google Павук. Упс. Як высвятляецца, Google Павук не выкарыстоўваць печыва, а гэта значыць, што ён можа лёгка абыйсці праверку на рэгіструецца на печыва набор ілжывымі. Ён таксама не звярнуць увагу на JavaScript, які будзе нармальна падкажыце і перанакіроўваць карыстальнікаў якія не ўвайшлі ў сістэму. Яна тым не менш прытрымлівацца кожны гіперспасылка на кожнай старонцы ён знаходзіць, у тым ліку з Выдаліць старонку ў назве. Упс. Дык што ж гэта азначае ў больш тэхнічныя, але даволі даступныя ўмовы? Гэта проста азначае, што на працягу ўсёй іх вэб-сайце, яны мелі URL, не ў адрозненне ад гэтага, што Вы маглі б бачыць у праблему ўсталяваць сем. Нагадаем, у задачы ўсталяваць сем ці ведаць праблемы ўсталюйце сем што вы кінулі выклік, сярод іншага, прадаваць акцыі ад імя карыстальнікаў. Але рэалізацыі гэтага функцыю па шляху з атрымліваеце праз гіперспасылкі ў вашым карыстальнік Інтэрфейс, верагодна, не самы разумны ідэя таму што калі ваш сайт нейкім чынам даступныя альбо чалавекам хто націснуўшы вакол або купіць бот, як Google, або павук як яны называюцца, што гэта проста сканавання Інтэрнэту, спрабуючы індэкса Вэб у якасці пошукавай сістэмы, яны маглі вельмі лёгка ўдарыў праз атрымаць гэты від URL. І гэта функцыянальна эквівалентна, у дадзеным выпадку, продаж усіх акцый Google. Цяпер, шчыра кажучы, гэта цалкам асліны, што CMS б JavaScript і печыва рэалізаваць сваю сістэму ўваходу і не робіць, што на боку сервера, а Вы, хлопцы, і будзе ў Pset 7-- ёсць login.php file-- заўсёды, заўсёды, заўсёды бяспека павінна быць зроблена на боку сервера, не на боку кліента, таму што, як гэта Артыкул прадугледжвае і вы маглі б сябе см у нейкі момант, гэта трывіяльна для карыстальніка, добра гэта ці дрэнна, каб проста выключыць JavaScript не кажучы ўжо пра печыва. Так што гэта ваша штодзённая WTF. Там яшчэ адзін, які гэта проста нейкая страшная, так што я буду казаць пра гэта, калі толькі як урок жыцця. Кожны раз, калі вы выкарыстоўваеце прыкладанне называецца як Snapchat і да т.п. што кажа гэтыя фатаграфіі толькі на працягу пяць секунд, дзесяць секунд, ці яшчэ шмат чаго. Яны эфемерныя Гэта значыць абсалютна не так. Як няма ніякага спосабу, лічбавы, для рэалізацыі той ці іншай форме відэа, ці малюнак, або тэкставая абмену, такіх што атрымальнік на іншым канцы не можа нейкім чынам захаваць дадзеныя. У найбольш наіўным чынам, хто- можа прыняць на свой тэлефон. І яны маюць другое акно 10 у той час як, гледзячы на ​​некаторыя аснастцы проста ўзяць нейкі іншы тэлефон і сфатаграфаваць яго, відавочна. Такім чынам, вы можаце захаваць што-то ў лічбавым такім чынам. Некаторыя з вас ведаюць, як узяць скрыншоты на вашым тэлефоне. На самай справе, калі вы не ведаеце, гэта, зразумець, што, па меншай меры Snapchat, і я думаю, што іншыя прыкладання ў гэтыя дні, па меншай меры, сказаць вам, калі атрымальнік мае на самай справе прынятыя скрыншот вашага ладу. Але што яшчэ горш, гэта было snappening, як хтосьці прыдумаў яго нядаўна, дзе некаторыя 100000 здымкі былі вызваленыя у тое, што называецца торэнт-файл на розных вэб-сайтах, у канчатковым рахунку. І гэтыя ўтрымлівалі цэлы букет асабістых паведамленняў і пастоў. Аказваецца большасць з іх дабраякасныя, так не тое, што вы маглі б чакаць. Але таму, што людзі былі выкарыстоўваць вэб-сайт трэцяга боку, уваход з іх Snapchat імя карыстальніка і пароль, а затым захавання ўсіх сваіх здымкаў на гэтым сайце трэцяй боку. І гэта было тое, што трэці бок сайт, які быў узламаны, які проста меў на ўвазе каго-то зразумеў, як каб атрымаць усе 100 000 плюс гэтых малюнкаў у іх уласнай цвёрдым дыску для наступнага размеркавання. Шчыра кажучы, тут таксама, гэта свайго роду з асліны, што Snapchat рэалізаваная такім чынам, што трэцяя бок можа сартаваць перахопу дадзеныя і што ён не прывязаны да вашага ўласнае прыкладанне працуе на тэлефоне. Але і тут, разумеюць, што яны рэчы не павінны злавіць вас знянацку, ці, па меншай меры, павінна быць урокам жыцця тут. Калі вы хацелі б тэхнічным Дэталі, пайсці ў той URL ёсць гэта ў сённяшніх слайдаў. Добра, якія-небудзь пытанні па сённяшнія ўрокі жыцця ў CS? Павярніце, што ад. Усё, што заўгодна? Усё, што заўгодна? У мяне ёсць шмат людзей, якія зарэгістраваліся іх Snapchat або што-то цяпер. Добра, так SQL, Structured Query Language. Давайце абгарнуць гэта. А таксама, нават пры тым, мы толькі драпіны Паверхня гэтага мову, мы дамо вам дастаткова мовы ў выглядзе Pset 7 так што вы можаце вырашыць некаторыя даволі часта функцыянальнасць. Але разумею, што ёсць пара рэчы, якія мы не патрабуюць ад вас, але яны збіраюцца быць важна прыйсці канчатковыя праекты і, вядома, прыходзяць рабіць фактычная сайты з рэальных карыстальнікаў гэта дызайнерскае рашэнне. Атрымліваецца, што ў база дадзеных MySQL, вы ёсць гроздья выбару, як тыпы дадзеных для вашых калонак і іншыя рэчы, але вы таксама павінны Выбар так званага захоўвання Рухавік для ўсіх вашых дадзеных, роду файлавай сістэме, калі вы знаёмыя, для ўсіх вашых дадзеных. Які фармат будзе ў канчатковым выніку гэта захоўваецца ў? І самым распаўсюджаным, мабыць, быў MyISAM і InnoDB, тэхнічныя тэрміны што мы будзем клапаціцца аб толькі да такой ступені, што адзін мае і не трэба наступная асаблівасць. Выкажам здагадку, што ў вас ёсць трохі інтэрната халадзільнік. І выкажам здагадку, што вы і вашыя сусед па пакоі, хто падзяляе гэтую халадзільнік, сапраўды любіў скажам малака. І гэта, па сутнасці, як гісторыя была расказана мне шлях назад у той дзень, калі я ўзяў курс называецца CS 161 Аперацыйныя сістэмы, якія Аналагічна разглядаецца тэмай. Такім чынам, вы атрымалі гэты халадзільнік. Ты з малака. І вы прыходзіце дадому, ваша суседка-х яшчэ ў класе або што-то, і вы вырашылі, што я збіраюся выйсці і атрымаць трохі малака. Такім чынам, вы зачыніць халадзільнік, блакаванне пакоя ў інтэрнаце, пайсці праз вуліцу у CVS ці там, дзе і атрымаць у чарзе, каб купіць трохі малака. Між тым, ваш сусед па пакоі вернецца дадому ад класа, трапляе ў пакоі інтэрната, адкрывае халадзільнік, таксама разумее, ooph, мы з малака. Такім чынам, ён ці яна зачыняецца халадзільнік, а затым адбываецца каб перайсці на іншы CVS, якія, здараецца, у адным квартале ад іншых CVS на плошчы, і атрымлівае ў адпаведнасці туды, каб атрымаць крыху малака. Цяпер, вядома, некалькі хвілін пазней, вы абодва атрымаеце назад, і горшы з усіх магчымых Вынікі здарылася. У вас абодвух малако. І вы сапраўды не як малако, што шмат. Так адзін з іх з'яўляецца проста збіраецца псавацца ў нейкі момант. Так што цяпер у вас ёсць празмернае колькасць малака ў халадзільніку ўсё таму, што, чаму? [Неразборліва] DAVID Малання: Так, вы не зрабілі неяк размаўляць адзін з адным што вы атрымлівалі малако. Такім чынам, у найпростых спосабы ў чалавечым свеце, як Вы маглі б пазбегнуць гэтага па-дурному Сцэнар не адбывалася такіх што вы толькі ў канчатковым выніку з адной. Тэкст іх, ды добра. Але як інакш? Пасля ён адзначае. DAVID Малання: пост гэта да ведама. Любая форма зносін што кажа ваш сусед па пакоі не ідуць у халадзільнік для малака. Я збіраюся пайсці папоўніць самастойна. Такім чынам, вы як-то трэба для блакавання гэтага рэсурсу. Такім чынам, мы можам зрабіць this-- мы можам выгляд разбурыць гісторыю і ператварыцца ў гісторыі CS у выніку чаго думаць пра гэта як раз як Зменная, якая захоўвае нейкую каштоўнасць. І прама цяпер, каштоўнасць малака роўная нуля, якія вы не хочаце, каб вашы сусед па пакоі, каб агледзець гэтую зменную а затым прыняць рашэнне яго ці сябе у залежнасці ад стану гэтай зменнай калі вы знаходзіцеся ў працэсе змены стану гэтай зменнай. Так адным з кірункаў SQL, што мы даць вам у Pset 7 спецыфікацыі гэта адзін тут. І мы не трацім велізарнае Колькасць часу казаць пра гэта. Але, аказваецца, калі вы спрабуеце купіць некаторы запас у CS50 фінансаў што ў вас ужо ёсць некаторыя акцыі, вам хачу быць у стане зрабіць шэраг рэчаў імгненна разам. Вы хочаце, каб мець магчымасць эфектыўна, на высокім узроўні, праверыць усё ў парадку, калі я хачу каб купіць больш акцый Free, дробныя акцыі, мы гаварыць у спецыфікацыі, Я хачу, каб першай праверкі колькі акцый у мяне ёсць. І мяркую, што гэта пяць. І выкажам здагадку, што я хачу, каб купіць больш за 10, я ў канчатковым выніку хачу мець 15 акцыямі. Так што ў мяне два пытанні. Што дзяржава зменнай? Што стан запар? Колькі акцый я магу сабе мець? Тады вы хочаце, каб ісці наперад і абнаўляць яго. Дык вось аналаг малако ў тым, што вы праверыць радок, а затым вы хочаце абнавіць яго таму што, калі вы хочаце купіць 10 акцый, Вы не хочаце, каб змяніць радок 10, вы хочаце змяніць яго на 5 плюс 10 ці, вядома, 15. Гэты радок кода гарантуе, што гэтыя два канцэптуальныя ідэі адбудзецца разам або няма наогул. Ніхто, у тым ліку нейкі іншы карыстальнік хто ўвайшоў у тую жа вэб-сайце, можа як-то перапыніць праверка радкі і абнаўленне радкі, выбраць і абнаўленне, калі хочаце. І сінтаксіс ня супер відавочна, але гэта адзін радок, доўга гэта, гарантуе, што гэтыя дзве аперацыі праверыць зменную або праверыць радок і абнавіць шэраг здарыцца атамна. О, тут мы ідзем зноў. Тэкставае паведамленне на маім тэлефоне. Так давайце зробім гэта трохі больш канкрэтнымі. Выкажам здагадку, што вы не рэалізацыі халадзільнік, і вы не рэалізацыі Pset 7, але фактычная банк, або ATM, Automated Teller Машына, у якім вы нейкім чынам хачу, каб мець магчымасць для пашырэння магчымасцяў карыстальнікам перадаваць грошы з аднаго рахункі на іншы. ОК, трымайся. Я збіраюся адключыць гэта цяпер, дзякуй. Таму мы хочам, каб перавесці грошы з аднаго нумара рахунку у іншай ўліковага запісу лік, у прыватнасці, $ 100. Так што гэта свайго роду адвольнае прыклад, у якім вы, банкамат, магчыма, захочаце выканаць два SQL запыты, адняць з адной ўліковага запісу, і дадаць у іншы ўліковага запісу. Але вы хочаце, каб пераканацца, што гэтыя дзве лініі і адбудзецца ці не на ўсіх. Вы што-то не хачу атрыманне перарываецца. Вы не адны разумныя дрэнны хлопец як-то стаяў у Банку Амерыкі з двума банкаматаў у пярэдняй з яго і як-то роду набраўшы ў каманды, у той жа час, спадзяюся, спрабуючы ўтрымаць $ 200 замест $ 100 і толькі маючы $ 100 крэдытуецца. Карацей кажучы, вы хочаце, каб гэта паводзяць сябе менавіта так, як вы чакаеце. І тое, як вы робіце гэта ў SQL база дадзеных Вы абгарніце яго ў тое, што называецца здзелка. Літаральна ў SQL, вы можаце патэлефанаваць CS50-х Функцыя запыту з цытатай канец цытаты пачатку Здзелка. Тады вы можаце выканаць любую колькасць з наступных запытаў SQL, але ні адзін з іх не прымаць ўплывае на базе да выкліку запыту цытата канец цытаты здзейсніць, калі яшчэ раз, выкарыстоўваючы PHP. І такім чынам, вы можаце быць упэўнены, што нават калі ў вас ёсць 1000 карыстальнікаў ўсе патрапіўшы базы дадзеных у той жа час, SQL- абяцаю, што гэта два запыту будзе рэалізаваны адзін за адным. Такім чынам, вы не ў канчатковым выніку з лішкам малако або няправільны памер, у выніку, грошай. Так што майце гэта на ўвазе, ня столькі для Pset 7 але для канчатковых праектаў калі вы на самой справе спрабуюць перамяшчаць дадзеныя па табліцах, як вы маглі б тут. Але, мабыць, яшчэ больш просты і больш Відавочна, каб зразумець, з прыкладу гэта адзін тут. А хто-то па электроннай пошце нам пра гэта толькі на днях калі ён убачыў нешта падобнае ў Інтэрнэце. Так, наколькі мне вядома, у кантактным сістэмы не схільныя гэтай атацы. І я паняцця не маю, калі ён нават выкарыстоўвае база дадзеных SQL пад капотам. Але давайце выкарыстоўваць яго для дзеля абмеркавання. Вось экран, што Гарвардскі людзі, як правіла, каб убачыць пры ўваходзе ў сістэму з Гарвардскі ідэнтыфікацыйны нумар і іх кантактны. І мяркую, што штыфт сістэма былі рэалізаваны ў PHP і з MySQL базы дадзеных, код, які хто- магчыма, напісаныя гадоў таму можа выглядаць наступным чынам. Па-першае, абвясціць Пераменная называецца імя карыстальніка. І проста атрымаць, што з POST суперглобальная. Тады атрымаеце яшчэ адну зменную называецца пароль і зрабіць тое ж самае. А потым проста выканаць гэта доўга запыт тут, выберыце зорка з карыстальнікаў, дзе Імя карыстальніка роўны такой- і пароль роўная такой-то. Звярніце ўвагу, што кучаравыя брекеты я выкарыстаў тут проста маю на ўвазе, каб PHP, ідуць наперад і замяніць значэнне гэтых двух Зменныя прама там. Яны не абавязкова, але яны, як правіла, каб пазбегнуць тонкія сінтаксічныя памылкі. Так гэта выглядае цалкам правільна на першы погляд. І гэта. Вы маглі б рэалізаваць Сістэма кантактны такім чынам. Але выкажам здагадку, што супер разумны і злы студэнт ўваход гэта як свайго пальца. Так я выдаліў кулю знакі тут, у макеце, і я на самой справе паказаў, тое, што ён ці яна можа быць набраўшы. І гэта крыху дзіўна. Але тое, што выскоквае ў Вас на патэнцыйна непакой аб ўваходзе карыстальніка, нават калі вы паняцця не маеце, што Напад ін'екцыі SQL азначае. Чаму гэта выглядае трохі падазрона? Што гэта? [Неразборліва] DAVID Малання: або трохі падазроным. На самай справе, гэта ключавое слова з SQL. Так што не абяцае нічога добрага. Справа ў тым, што ёсць усе гэтыя адзінкавыя двукоссі there-- на самай справе, адзін з самых простых спосабы зламаць некаторыя базы дадзеных гэта, набраўшы ў імя, як O'Reilly што мае апостраф у яго таму што, калі чалавек, які напісаў код за кулісамі не прымаць пад увагу, што можа быць адзінарныя двукоссі ў карыстальніка ўваход, і ён або яна выкарыстоўвае адзінарныя двукоссі ў сваім кодзе, дрэнныя рэчы могуць здарыцца. На самай справе, што яшчэ горш, разгледзець гэтае пытанне. Калі б гэта было зноў код што нехта ў Гарвардзе гадоў таму напісаў для штыфта Сістэма, звярніце ўвагу, што гэта збіраецца атрымаць замешчаных імя карыстальніка і пароль Калі карыстальнік зноў skroob як іх імя карыстальніка а затым адзін, два, тры, чатыры, пяць, цытата або цытата канец цытаты аднаго роўных працытаваць адзін. І звярніце ўвагу, што ключ Тут карыстальнік не пачаў свой пароль ці іх кантактны з цытатай. І яны не скончыліся яго з цытаты, таму што ён ці яна пры ўмове, што, калі праграміст не быў такім вострым, яны будуць мець тыя, адзінарныя двукоссі ў сваім кодзе. Дык вось код. І замена, што можа зараз адбыцца гэта. І я падкрэсліў, што карыстач увёў ст. Таму, перш чым, пасля. І звярніце ўвагу, што мякка неспакой зараз аб правай палове гэтага SQL кода? Гэта трохі больш складаным, па агульным прызнанні, чым запытаў мы бачылі. Але гэта не можа быць добра, калі вы кажучы абярыце зорку, якая абярыце усе са стала карыстальніка дзе імя карыстальніка роўны skroob і пароль роўны адзін, два, тры, чатыры, пяць ці адзін складае адзін. Што лагічнае следства гэтага апошняга пункта меркавана? Гэта проста заўсёды дакладна. І таму, што мы-то здагадаўся або высветлілі метадам спроб і памылак што праграміст, які напісаў гэты код не зрабiў прадбачыць чалавечую або дрэнны чалавек набраўшы ў адзінарныя двукоссі, а, мы можам сінтаксічна завяршыць SQL-запыт з чым-то бессэнсоўны але што-то, што сінтаксічна няслушна што заўсёды праўдзівы. Так што, калі гэты код выкарыстоўваецца для адказу пытанне праўдзівымі або ілжывымі павінны гэты карыстальнік будзе дазволена прайсці, Адказ заўсёды, мабыць, збіраецца каб быць праўдай, таму што гэта заўсёды будзе выбраць нешта з базы дадзеных таму што адзін, вядома, заўсёды роўная адзінцы. Так у чым жа рашэнне? Ну ў Pset 7, мы на самай справе Каб пазбегнуць гэтага ўсе разам. Мы даем вам функцыю запыту, і мы рэкамендуем вам выкарыстоўваць пытальнікі ў якасці запаўняльнікаў, аналагічныя па духу PRINTF у% х, але тое, што ключ аб пытальных знакаў вось калі вы на самой справе прачытаць functions.php, дзе наш Функцыя запыту будзе рэалізаваны, гэтыя знакі пытання выратаваліся, чаго-небудзь патэнцыйна небяспечным як апостраф уключаны у які ўцёк адной цытатай. Так што гэта тое, што на самай справе адбываецца, калі вас выкарыстоўваць функцыю запыту CS50 або любую колькасць з іншых бясплатных бібліятэк, якія зрабіць тое ж самае. Не мае значэння, у дадзеным выпадку, у зялёны, калі карыстальнік увёў у адной цытатай таму што ў запыце функцыя, якую мы напісалі, збіраемся дадаць зваротны слэш перад любая такая небяспечная цытата. Так што гэта не так, у Справа ў тым, будзе законным. Гэта як набраўшы ў вар'ят глядзіць пароль гэта, вядома, не збіраюся быць актуальнай пароль skroob гульнявая. Так вынас для CS50 з'яўляецца адным, абсалютна заўсёды выкарыстоўваць што-то як функцыі запыту CS50 ў або асноўная бібліятэка, якія, здараецца, называюць PDO. Але ніколі, ніколі, ніколі не такі код без ўцёкаў або ачысткі як гаворыцца вашы ўваходы. І вы ў нейкі момант, верагодна, трапляюцца нейкім сайце, як гэта. На самай справе, гэта, здаецца, справа як у аэрапортах і гатэлях месцаў дзе ў іх ёсць бясплатны Wi-Fi Доступ што ў вас ёсць, каб увайсці ў, гэтыя вэб-сайты заўсёды жахліва рэалізаваны. І так-то весела дома практыкаванні, не ў зламысных мэтах або больш з задавальнення на дарозе практыкаванні, гэта проста набярыце апостраф, апостраф, у форме на нейкім сайце і паглядзець, што адбываецца. І калі сервер выходзіць з ладу або дае Вы нейкі паведамленне пра памылку, вельмі можа быць, што хто-то не чакаў гэтага. І тады вы павінны папярэдзіць належнае Улады і не перайсці далей. Так што цяпер вы, хлопцы, павінны, мы спадзяемся, зразумець крыху больш вылюдка гумар тут. [Смех] DAVID Малання: Вы ведаеце, вы вырадак. На працягу наступных некалькіх гадоў, вы будзеце памятаць хто мала Бобі Сталы з'яўляецца з-за гэтага мультфільма тут. Так што майце гэта на ўвазе, як мы пераключэнне кантэксту ў апошні раз сёння ў JavaScript. Мы правялі даволі мала Час ад сінтаксісу PHP таму што гэта на самай справе супер падобны на C. І дастаткова добра, JavaScript занадта супер падобны на сінтаксіс мовы C а таксама мы ўбачым у толькі на імгненне, і як мы будзем см у канцы гэтага тыдня, у прыватнасці. Што вы можаце зрабіць з гэтай мовай, хоць, тым больш магутным, асабліва з API. Але спачатку кароткі тур. Так што, у JavaScript, ёсць няма Асноўная функцыя, якая добрая. Як з PHP, вы можаце проста напісаць код. Умовы выглядаць наступным чынам. І лагічныя выразы можа выглядаць так ці так. Існуюць перамыкачы, і яны можа выглядаць наступным чынам. Чатыры завесы выглядаць наступным чынам. У той час як завесы выглядаць наступным чынам. У whiles выглядаць наступным чынам. А потым масівы падобныя гэта, вельмі падобная на РНР. Але заўважым, што ў JavaScript цябе абвясціць зменную ня з доларам падпісаць, ня з тыпам дадзеных, але літаральна кажучы вар для зменнай перад ёй. Гэта занадта свабодна набралі у тым, што ён мае віды, але вы відавочна не аб'яўляць іх. І тады радок, для Асобнік, можа выглядаць як гэта, што радок называюць ы ў гэтым выпадку. І затым аб'ект. І гэта мы ўбачым больш у бліжэйшы час. І аб'ект, мабыць, адзін з Найбольш часта сустракаюцца структуры дадзеных у JavaScript на аснове Праграма так як ён дазваляе звязаць адвольнае пар ключ-значэнне толькі як асацыятыўныя масівы ў PHP і гэтак жа, як свой уласны хэш-табліцы або паспрабаваць як мы ўкаранілі некалькі тыдняў таму. Так што давайце на самай справе ўбачыць, што мы можам зрабіць з дапамогай JavaScript. І, у прыватнасці, гэта доўгі спіс функцый што браўзэры маюць, што дазваляюць падключыць JavaScript ў вэб-сайт наступным чынам. JavaScript часта выкарыстоўваецца ў якасці на баку кліента скрыптовы мову. Гэта не складзены. Гэта таксама інтэрпрэтуецца. Але ў адрозненне ад PHP, які працуе ўжо на сэрвэры, на вэб-сэрвэры, або глыбока ўнутры Кліенты, JavaScript адрозніваецца тым, што яна як правіла, праходзіць у браўзэры. Такім чынам, любы код JavaScript вы пачаць пісаць для Pset 8 ці вашага канчатковага праекта, або ў рэальным свеце, як правіла, адбываецца быць захаваны на сэрвэры, абсалютна у дот HTML або кропкай JS для файла JavaScript. Але браўзэр збіраецца спампаваць што JavaScript Код для вашага ўласнага асобніка Chrome, або IE, або Firefox, або што-то. І код на самай справе адбываецца, каб атрымаць выконваецца ўнутры вашага ўласнага браўзэра. Проста, каб зрабіць гэта больш рэальна, давайце паглядзім гэта ў канкрэтнай форме. Мы паняцця не маем, што робіць гэты код на самай справе не чытаў праз яго. Але дазвольце мне перайсці да Facebook.com без рэгістрацыі. Дазвольце мне пайсці ў Агледзіце элемент і ісці, скажам, сеткі і перазагрузіце старонку. І мы будзем see-- дазвольце мне перайсці Абнавіць Старонка, каб атрымаць усе запыты на новы. І самы першы Файл я бачу, CSS, CSS. Вось першы JavaScript-файл, і ў мяне ёсць ніякая ідэя, што гэта робіць, але тут некаторыя з кода JavaScript што прыводзіць Facebook. Гэта нават не сапраўды, што выяўленне, каб павялічыць. Гэта па-ранейшаму так жа, як бессэнсоўна. Але вы ўбачыце, нават ўнізе, ёсць яшчэ больш з гэтых файлаў JavaScript. Упс. Вось пінг. Пойдзем трохі Акрамя таго, дадаткова, у далейшым. Там адзін. Там адзін. Там адзін. Такім чынам, нават пры тым, што Facebook, за сцэны, напісана ў частцы ў PHP і Facebook, уласную версію яго, ёсць велізарная колькасць JavaScript. На самай справе, любы з у чаце вы робіце на Facebook, любое з абнаўленняў убудаванага даты жыцця што адбываецца ў рэальным часе, усё, што прыводзіцца ў рух JavaScript. Так? АЎДЫТОРЫЯ: Я не ўпэўнены, калі гэта Facebook, але я думаў, што Facebook распрацаваў іх уласны ўнутраны код мовы? DAVID Малання: Яны зрабілі. Дык вось чаму я кажу, дысперсію PHP называецца хіп-хоп, што яны на самой справе дадатковыя функцыі для такіх, што пры Марк ўпершыню рэалізавана Facebook, яна была напісана ў PHP. І нешта засталося роду пярэдняга канца мове што яны выкарыстоўваюць для значна іх кадавання, але гэта ня быў мова гэта шалі асабліва добра для мільярдаў людзей. І такім чынам, яны дадалі свае ўласныя Паляпшэння за кулісамі. І яны выкарыстоўваць любую колькасць іншых мовах для розных кавалкаў іх інфраструктуры. Так што, так, гэта дысперсія тое, што мы цяпер ведаем, як PHP. Такім чынам, давайце зірнем на пару прыкладаў пра тое, як мы маглі б выкарыстоўваць JavaScript тут. У сучасным зыходнага кода, у нас ёсць куча файлаў, першы з якіх, давайце называецца DOM нуля. Так DOM нуль выглядае наступным чынам. Адпусьці мяне ў гэты каталог і адкрыць domzero.html, верхняя з якіх мае тып DOC Дэкларацыя, кажучы тут прыходзіць HTML 5. А цяпер вось HTML тэгаў. Вось кіраўнік тэг. А вось што новага сёння. Цяпер у нас ёсць тэг сцэнара ўнутры кіраўніка старонцы. І гэта, па-відаць робіць вельмі мала, але апавяшчэнне што я вызначыў Сцэнар, JavaScript. І, як у бок, так як гэта Шырока распаўсюджана памылка ,, JavaScript не мае абсалютна нічога рабіць з Java, мове што некаторыя з вас, магчыма, даведаліся ў АСК ТП. Гэта было больш маркетынгу рэч, чым што-небудзь, язда на фалды Java гадоў таму. Але наяўнасць нічога не рабіць з Java, проста так жа, і прыкра, змешвання імя. Дык вось як вы аб'яўляеце функцыю у JavaScript, літаральна сказаць, функцыю, то імя функцыі, то любы аргументы ён можа зрабіць, сапраўды гэтак жа як у PHP. Аказваецца ў JavaScript, адным з самых раздражняльныя функцыі, якія існуюць у абвесткі. Гэта невялікае акно, што ўсплыве і папярэдзіць вас у нейкай частцы інфармацыі. Гэта правіла, з неадабрэннем. Але мы будзем выкарыстоўваць яго ў якасці нашага Першае практыкаванне тут. Звярніце ўвагу на некаторыя асаблівасці JavaScript. Адзінкавыя і двайныя двукоссі на самай справе не мае ніякага значэння. Адзінкавыя двукоссі і двайныя Каціроўкі могуць быць ўзаемазаменнымі, у той час як у C, вы павінны выкарыстоўваць падвойныя двукоссі для радкоў, і ў вас ёсць два адзін каціроўкі для знакаў. У свеце JavaScript, многія людзі, большасць людзей выкарыстоўваць адзінарныя двукоссі радкоў проста таму, што гэта стылістычнае рэч. Але тое, што аператар плюс тут, якія мы раней не бачылі? АЎДЫТОРЫЯ: Счапленне. DAVID Малання: Счапленне. Так C нават не ў гэтым. PHP мае аператара кропкі, які робіць гэта. JavaScript мае аператар плюс, які змешвання з'яўляецца гэтак жа, як Java. Цяпер тое, што тут адбываецца? Дык вось, дзе базавы разуменне гэтай карціны мы падкінуў пару дзён таму уступае ў гульню. Памятаеце, калі ў нас быў просты версія HTML page-- ён проста сказаў, прывітанне свет. А потым мы малявалі дрэва справа, які была куча прастакутнікаў і ліній злучаючы іх, як радаводу. Дык вось так званае DOM або аб'ектнай мадэлі дакументаў. І атрымліваецца, што вы можаце атрымаць доступ да прастакутнікі ў гэтым дрэве з сінтаксісам як у наступным. Вы ў літаральным сэнсе кажуць дакумент, які з'яўляецца спецыяльная глабальная пераменная у JavaScript праграма, якая мае функцыю звязана з тым, што вы можаце атрымаць доступ да падобна на структуру, але вы проста кажуць кропку, а затым імя функцыі, атрымаць элемент па ID. Элемент я хачу атрымаць гэта па-відаць, цытую канец цытаты імя. А потым я хачу, каб атрымаць яго значэнне. Цяпер мы забягаем наперад. Я нават не ўпэўнены, што Усё гэта а. Давайце перанясемся ў HTML на старонка, якая з'яўляецца супер проста. Звярніце ўвагу, што я вызначыў ўтвараюць тут. Звярніце ўвагу, што я даў яму унікальны ID, нават калі мы не выкарыстоўвалі гэты атрыбут перш. Але гэта існуе ў HTML. Вы можаце адназначна ідэнтыфікаваць некаторы кавалак з HTML з ідэнтыфікатарам, як гэта. Зараз звернеце ўвагу this-- аказваецца HTML падтрымлівае, у гэтым спісе бялізны Хвіліну назад, у цэлым куча апрацоўшчыкаў падзей. І гэта апрацоўшчык падзей кажа аб ўявіць. На паданні карыстальніка гэтага форма, называюць наступны код. І код, які збіраецца назваць або выкананы менавіта гэта, грэцкі Функцыя вынікаюць вярнуцца ілжывым. Усё астатняе павінна быць даволі знаёмыя. Тут ўвод тэксту тыпу, чые ID, у гэтым выпадку, будзе імя. У нас няма фактычнага імя атрыбуту гэта time-- і кнопку націснуць кнопку. Так у выніку старонка выглядае наступным чынам. І ў выніку паводзінаў, Вы ўбачыце, выглядае наступным чынам. На старонцы Мясцовы гаспадары кажа, прывітанне Дэвід, наўрад ці эстэтычна спосаб вітаць карыстальніка. Але што адбываецца на самай справе? Ну, падумайце, што гэта. Гэта тэкставае поле. І ў адпаведнасці з HTML тут, я даў яго Унікальны ідэнтыфікатар называецца цытата канец цытаты імя. Між тым, я ўжо казаў, калі карыстальнік адпраўляе гэтую форму націснуўшы Enter або націснуўшы Адаслаць Кнопка, выклікаць функцыю пад назвай Вітайце а затым вярнуцца False. Давайце разгледзім тыя ў зваротным кірунку. Звярніце ўвагу, калі я націсніце Адправіць, Адрас гэтай старонкі не змяняецца. Значок браўзэра ня пачынаюць круціцца. Я нікуды не хадзіў, і гэта літаральна, таму што я сказаў, вярнуцца False. Вярнуцца ілжывым кароткіх замыканняў або прыпынку паводзіны па змаўчанні ў форме. Так што тады ў нас застаецца гэта адзін апошні пытанне. Што Вітайце рабіць? Ну, Вітайце мабыць, выклікае функцыю пад назвай Абвестка, праходзіць у адным доўга аргумент, што гэта вынікам злучэння разам куча падрадкоў, прывітанне коска прастору, затым усё гэта вяртаецца. Так дакумент як глабальная Пераменная для гэтага кораня гэтага дрэва, выкліку спецыяльнай функцыі, у адваротным выпадку цяпер вядома як метад. Функцыя гэта ўнутры пераменная называецца функцыяй метад замест. Так што элемент па ID. Што элементам зрабіць вас хочаце атрымаць яго ID? Цытаваць канец цытаты імя і Затым спецыяльна цэнім. Такім чынам, іншымі словамі, што код проста знаходзіць тэкставае поле, ID з'яўляецца імя а затым атрымлівае сваё значэнне. Так што, калі б я гэта змяніць і сказаць Дэвин замест Давіда, і націсніце Дадаць, зараз мы ёсць прывітанне для Дэвин. Добра, так што ўсё цудоўна і выдатна. Але давайце паглядзім, калі мы можам зрабіць гэта трохі чысцей, так як толькі напісання кода, як гэта як правіла, будзе з неадабрэннем. Гэта будзе выглядаць страшней. Але тое, што першы Розніца, што вы звярніце ўвагу, тут У гэтым варыянце, акрамя назваць змены ў DOM адзін? Што структурна выглядае па-іншаму Пра гэта ў параўнанні з другога? Так? АЎДЫТОРЫЯ: Ці з'яўляецца форма на Верхняя частка сцэнара зараз? DAVID Малання: Так, форма знаходзіцца на вяршыні сцэнарыя для нейкай дзіўнай прычыне. Так што першае, што што выскоквае на мяне, таксама. І, на шчасце, па меншай меры, Гэтая частка ідэнтычная. Так што адзінае, што здаецца будзе адрознівацца гэта. Дык вось тое, што ахайна аб JavaScript 2. І гэта робіць яго цяжка зразумець на першы погляд, асабліва для канчатковых праектаў, калі Вы глядзіце на ўзор кода на сайце, але гэта зводзіцца да некаторых Асноўныя сінтаксічныя асаблівасці. Тут зноў-такі, што Глабальная пераменная дакумент. Тут зноў-такі, што метад або функцыя што кажа атрымаць элемент па ID. На гэты раз я хачу атрымаць ідэнтыфікатар, званы дэма. Дзе гэта? Гэта, па-відаць права тут, сама форма. А цяпер звярніце ўвагу, што, па-відаць, калі б я вярнуцца да гэтага вузла ў дрэве, што ўяўляе сабой форму Сам, ня тэкставае поле, Аказваецца, што форма, што вузел або прастакутнік з дрэва, ёсць тое, што мы называем ўласцівасць, вельмі, вельмі, вельмі падобныя па духу структуры ў С. Гэта проста член дадзеныя ўнутры гэтага прамавугольніка. Так што я атрымаў форму тут, і я ёсць, ці я задаю, каб яго на Адправіць апрацоўшчык дакладней На Размясціць нерухомасць Наступная функцыя. І гэта, безумоўна, самая вар'ятка рэч да гэтага часу сінтаксічна. Аказваецца ў JavaScript і ў PHP, і, шчыра кажучы ўжо на тое пайшло ў C, нават калі мы гэтага не робяць, вы можаце дадаць безназоўны, ананімны або AKA лямбда Функцыі, якія не маюць імя але можа быць выкліканы тым не менш. Так, што я раблю тут я задаю гэта на Прапанаваць аб'ект нерухомасці, які знаходзіцца ўнутры гэтага вузла майго DOM дрэва, Функцыя, паказальнік на функцыю, калі хочаце. ня што функцыя не мае назваць, але гэта не значэння, таму што мы будзем бачыць у хвіліну, як гэта назваць. Калі гэтая функцыя выклікаецца, гэты код запускаецца на выкананне, то вяртаецца хлусня, як і раней. Але звярніце ўвагу, што я зрабіў. На дадзены момант у Гісторыя, у мяне ёсць форма. У гэтага ёсць унікальны ідэнтыфікатар, званы дэма. Тут, унізе, у мяне ёсць тэг сцэнара які выконвае наступны код. Ён прымацоўваецца да гэтага вузла ў дрэва, каб ён знаходзіцца на Адправіць нерухомасць гэтая функцыя тут. І толькі па характары, як браўзэры працуюць, калі я цяпер націсніце кнопку Адправіць або націсніце Enter, што функцыя будзе датэлефанаваліся. Гэта не трэба імя, таму што хто чорта клапоціцца, як гэта называецца. Адзіны раз, калі ён калі-небудзь, каб атрымаць называецца тое, калі я адправіць форму. Там няма неабходнасці для мяне, чалавек-распрацоўшчык, на самай справе назваць гэта дзе-небудзь яшчэ. Цяпер жа, як задзіра, як быццам што не былі супраць, выгіб дастаткова, мы можам нават зрабіць гэта выглядаюць больш загадкавым дапамогай супер папулярнай бібліятэкі называецца JQuery. На самай справе JQuery і JavaScript нярэдка аб'ядноўваюцца. І што мы будзем рабіць у сераду з'яўляецца пачатак з дапамогай гэтай мовы і гэтыя бібліятэкі пабудаваць больш асінхронны і дынамічныя прыкладання як карта становіцца прыкладання, прыкладання што абнаўляць вэб-старонку ў рэжыме рэальнага Час, як і Facebook або Gchat зрабіць, і больш не абмяжоўваемся патрапіўшы Адправіць па GET або проста пост у адзіночку. Так што я буду бачыць вас у сераду. [Музыка, якая іграе]