DAVID Маланом: Хорошо, мы вернулись. Так что для возбуждающая заключение, наш последний раздел на веб-программирования, который я думали, что мы используем в качестве общего термина чтобы захватить несколько оставшихся тем. Так что в конце день, мы на самом деле делаем немного практический веб-программирование с языком называется JavaScript. И я думаю, что мы будем смотреть на что-то связано с изображениями и открывать что-то тайно спрятаны в изображении, а также взглянуть на Google API Карт, прикладного программирования Интерфейс, как что-то представитель от типа программного обеспечения это все более и свободно доступных сегодня. Но почему не мы посмотрим в качестве ингредиента в этом мире что мы отчасти было принимая как должное существует в течение некоторого времени, база данных. За прошедшие сутки и полтора мы предполагали что у нас есть доступ к базе данных, но Какую проблему решить базы данных? Что это делает для нас? Что это? ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: содержит всю информацию, ОК, а какие виды информации вы могли бы положить в него? ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Любая информация вы положили в него, вы получите обратно. Это правда. А на типичного веб-сайта или веб приложение, какие виды информации, в частности, могли бы вы положили в? ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Пользователи. Так что пользователь? ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: OK, зарегистрировано Пользователь сайта. А что это значит Хранить информацию пользователей? Что сочиняет пользователя? Пользователь имеет то, что? ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Да, личный данные, и мне это нравится. Давайте быть более точным. Таким образом, пользователь, как правило, имеет имя, что еще может иметь пользователь? ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: addr-- ОК, поэтому сначала имя, фамилия. Это хорошо. На самом деле, давайте исправим что, так как это будет чтобы открыть возможность для обсуждение, по-прежнему, в дальнейшем. Имя, фамилия, пол. ID какой-то. Что еще? Я слышал кое-что еще раньше, тоже. Электронная почта, почтовый адрес. Так что давайте остановимся там и теперь рассмотрим не то, что мы сохраняем в базе данных, но--, а не почему, так как это, возможно, Очевидно, что после регистрации пользователя, Вы хотите, чтобы помнить о них в течение некоторого времени. Вы не хотите его просто хранить в ОЗУ и быть forgotten-- так давайте сосредоточимся на как. Оказывается, что в мир баз данных, есть по крайней мере два типа в эти дни. То, что называется базой данных SQL, Structured Query Language, или, симпатично по имени, NoSQL, который не является SQL. И последняя является пример того, что может можно назвать объектно-ориентированным, или объект магазин, база данных который хранит объекты, а не, извините мне, как мы вскоре увидим, строки. Таким образом, мы сосредоточимся на мгновение на первый из них, а именно, SQL базы данных, если только потому, что так хорошо знакомы уже, кому-либо который использовал Excel или Таблицы Google или Apple, Числа или любой стандартный программы электронных таблиц, или, что то же самое, или более изощренно, что-то вроде Microsoft Доступ или Oracle или MySQL или PostgreSQL, все из которых являются названия продуктов для реализаций в следующей идее. Реляционная база данных просто то, что есть строки и столбцы. И по строкам и столбцам, Я буквально имею в виду что-то как это, так, где мы могли бы иметь имя поля и его тип здесь. И на самом деле, позвольте мне Теперь начинают отобразить их. Так что на самом деле, я не знаю, почему я обратил отдельную диаграмму. Давайте держать это просто. Мы имеем право здесь Начало нашего стола, где это имя поля и это тип данных, а также по типу Я имею в виду следующее. Является ли это число, действительно ли это строка, короткая строка, как слово, это абзац, это двоичные данные, такие как изображения? И давайте просто дразнить это друг от друга на мгновение. Итак, первое имя, номер, Строка, большой кусок text-- ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Да, поэтому строка. И в контексте базы данных, мы будем обычно называем это поле CHAR. Скажу только полукокса сейчас, но мы собирается уточнить это в один момент. Характер поля. Фамилия, вероятно, то же самое. Пол? Мужчина или женщина, так это то, может быть полем символ. Это может быть либо цитата, конец цитаты "Мужской" или цитата, конец цитаты "женский" или это может быть м или п. Если вы хотите быть более широким, вам может понадобиться третье значение или какой-то другой области в целом. И таким образом вы могли бы использовать верно неверно. Поле можно назвать мужчиной, и то можно сказать, что истинным или ложным. Но это не обязательно захватывать всю информацию, вы можете захотеть. Так получается, что есть другой тип поля, которые могут быть полезными здесь в типичной базе данных, называется перечисление, где это поле характер, но вы, дизайнер, добраться до перечислить возможные значения, как цитата, Unquote "мужской", цитата, Unquote "женский" и так далее. Так что любое значение находится в вашей базе данных, на самом деле характер на основе, но он должен быть одним из этих значений. Мы, вероятно, не желали бы иметь перечисление для имени или фамилии. В противном случае мы имели бы перечислить, как имя происходит от, буквально каждый возможно первое имя и фамилия. ОК, так что ID должен быть идентификатор? Да, так, может быть несколько. Так давайте придерживаться что на данный момент число. И по количеству, число это немного слишком широк в настоящее время. На конец второго день, я чувствую, что мы должен быть немного более точным. Номер может означать, как, это может быть что-то вроде 1.236. И это, вероятно, не что мы подразумеваем под идентификатором. Что мы, вероятно, подразумеваем под идентификатором? ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: О, хорошо, так что может быть, это даже не число. Может быть, это на самом деле уникальный идентификатор это строка, как имя пользователя. Так что совершенно, может быть. Я думаю, что кто-то, вероятно, имел в виду числовые, хотя. Так что давайте останемся с этим. Что это за номер? Что более precise-- целое число. Так как число 0, 1, 2, 3, поэтому мы будем называть это целое число. И даже тогда, я мог быть придирки, это на самом деле не просто общее число вы хотите. Вы, вероятно, не хотят отрицательные значения, только потому, что он просто чувствует себя странно. Вы, вероятно, хотите положительные целые числа. Таким образом, вы можете также выразить что в базе данных, но сейчас мы будем говорить целое число. Эл. адрес? Это, вероятно, просто-- что? ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Это письмо, но это символы, не так ли? У него есть только трусливый характер, как ЭН "на символ" или что-то другое, но это по-прежнему символьное поле. И почтовый адрес? Характер поля. Так что это хорошее начало, но давайте быть немного более точным в настоящее время. Так получается, что в базы данных, вы часто есть выбор над более утонченной версии этих вещей. На самом деле, в типичной базе данных SQL, SQL, или в более общем плане, реляционная база данных, базы данных с рядами и колонны, часто получить указать не только от типа field-- позвольте мне сделать некоторую комнату here-- но и длину. Так как долго это имя? Я думаю, D-A-V-I-D. ОК, я получил его вероятно, просто оскорблены как половина людей в комнате, справа, так как ваши имена длиннее, чем пять письма, так что пять кажется немного эгоистично и наивные, так что лучшая ценность? 10, все в порядке, и я думаю, мы все в порядке в комнате. 13? 30? Почему бы мне не взять Подход ранее, когда мы говорили о массивах и памяти? Почему я не могу просто сказать, как 1000? Имя Никто не собирается чтобы быть больше, чем 1000. Отталкивать. ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Да, это расточительно, право, особенно если большинство имен только пять или 10 или 15 символов, это очень расточительно. Таким образом, вы знаете, что? Это своего рода сложный вопрос. Теперь мы можем, конечно, анализировать английский язык и названия любого другого языка в и выяснить, хорошо, что такое average-- среднем не реально помочь us-- что максимальная является вероятно, что мы действительно хотим. Но оказывается, у нас даже есть некоторый выбор по типу здесь. В типичной базе данных SQL, вы есть нечто, называемое голец поле а также VARCHAR, V-A-R, для переменного поля полукокса. А разница заключается в следующем. Поле голец, вы дизайнер, должны указать заранее точная длина поля. Так что, может быть, первое имя как 20 чувствует себя своего рода сейф. Возможно, придется сделать некоторые Googling к увидеть, если это на самом деле достаточно безопасно. Там, наверное, имя с 21 персонажи, но сейчас, предположим, 20 безопасно. Поле символ будет означать, в базе данных, вам используют 20 и всегда 20 символов. Теперь, если это только D-A-V-I-D, 15 из них только собирается быть пустым символов, но вы все еще используете все 20 байт. Поле VARCHAR, наоборот, означает, Строка должна быть до 20 символов но если это только пять, вы только собираетесь использовать пять, шесть или, может быть, для особое значение в конце, как что 0 мы обсуждали, что означает конец символа Последовательность в памяти. Так что, когда вы думаете вы можете выбрать символ по сравнению с VARCHAR, учитывая, что компромисс? Char использует это много символов, VARCHAR использует не более, что многие персонажи. ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Хорошо, когда вы знаете, длина строки довольно убедительным просто использовать символ, потому что, если вы это знаете, просто положить его вниз. А может быть, это верно для молнии код, в США, по крайней мере, 02138, это всегда будет пять символы, пока добавить тире четыре. Но вы могли бы иметь некоторые значения который вы всегда знаете длину. Или, может быть, государственные символы, как Нью-Йорк в Нью-Йорк, и MA для штата Массачусетс в США. Может быть, у вас есть какие-то ситуации, где это вполне разумно, но этой логике, почему мы даже overthinking это? Почему бы нам не использовать VARCHAR, а затем мы просто всегда используйте два символа в любом случае, или всегда использовать пять символов в любом случае? Почему бы не просто сохранить для VARCHAR все, по этой логике? Там должно быть подвох. ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Могли написать что-то неправильно. Так что это правда. Но даже тогда, они не могут использовать больше памяти, чем я выделяю. Я до сих пор окончательное говорят по всей длине, поэтому они не могут случайно сделать эта ошибка, но хорошая мысль. Это более тонкий, но это очень родственный к нашей дискуссии, на самом деле, массивов и связанные списки ранее. Оказывается, что в базе данных, если он знает, что все значения являются фиксированной длины, даже если некоторые из этих значений являются пустыми, вид эстетически пустым, D-A-V-I-D, а затем 15 заготовок, получается, что если каждый Поле имеет ту же длину, так же, как массив были все его вещи спина к спине, чтобы спина к спине, так что вы могли бы просто плюс 1, чтобы добраться до следующего значение, та же идея в таблице базы данных. Если все вашего персонажа строки имеют одинаковую длину, у вас есть то, что называется произвольным доступом. Если все строки имеют длина 20, вы не просто сделать плюс 1 вы просто делаете плюс 20, плюс 20, плюс 20, плюс 20, и вы можете очень быстро прокрутить или поиск по всем данным. Поле переменной символ, напротив, не всегда имеет 20 символов. Это может иметь 20, а затем 15, а затем 19, а затем 10, и поэтому, если вы хотите найти через него, вы не можете просто слепо добавить 20 байт, чтобы добраться до следующей. Вы в буквальном смысле придется искать через так как край структуры данных, если вы будете, является неровным. Это отчасти входит и выходит на основе по фактической длине строки. Итак, когда вы знаете длину, как Карима говорит, используйте поле голец, потому что вы получаете, что Эффективность бытия умеет искать через него быстрее когда вы ищете данных, в противном случае использовать переменную. К сожалению, у меня нет хорошего ответа как долго название должно быть, но что-то вроде имя, я бы сказал, VARCHAR является общим потому что он не собирается быть фиксированной длины для всех. 20, я не знаю, 20 чувствует себя немного жесткой. Давайте просто скажем, 50, 50. Это на самом деле не стоит вам, что гораздо больше, чтобы сказать 50 вместо 40, но в какой-то момент, что вам нужно чтобы сделать звонок суждения. Очень часто, если честно, для [? историческое?] причины, даже если это чрезмерным, есть 255, потому что некоторое время назад, в популярных системах баз данных, как MySQL, бесплатный инструмент с открытым исходным кодом что много компаний как даже Facebook используется, это был максимум по умолчанию так что люди просто пошли с ним. Так что не лишено смысла, но мы будем использовать немного больше интуиции и сказать, уверен 50, это вероятно, немного чрезмерным. Пол, я, как перечисление, и поэтому мы можем поэтому перечислить мужчины или женщины, или, может быть более эффективно, м или е или какой-либо другой символизм, но перечислимый чувствует, как хороший выбор там. Чтобы было ясно, пола может быть просто VARCHAR, и мы могли бы просто все согласен, как хорошие люди, всегда ставить одни и те же ценности там. Мужчина или женщина или этажерку. Но проблема то, что мы могли бы допущена ошибка, так как [неразборчиво] предложил ранее в другом контексте. Если мы делаем ошибку, мы могли бы получить неправильные значения в нашей базе. Так что приятно о базах данных как Oracle и MySQL и другие, является то, что у вас есть эта последняя уровень защиты где администратор АБД, базы данных, кто разрабатывает эту таблицу, как мы в устной форме, могли бы поставить на место перечисление, что защищает против этого, указав мужчина, женщина, и так никто не еще не программист может случайно вставить любое другое значение. Так что это было бы хорошо. Это особенность. Так идентификатор, предполагая, что числовой идентификатор, его вероятно, должен быть положительным целым числом. И иногда мы имеем возможность обсудить длину. Вы не обычно указать номер здесь, вы бы вместо того, чтобы указать это INT, или большой INT, так как они обычно называют. Но, как правило, целое число было бы, скажем, 4 байта. И если это 4 байта, это сколько бит? ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: 32 бита. Так сколько пользователей мы можем иметь в в нашей базе данных, если все они имеют идентификатор и этот идентификатор должен быть уникальным? 32 бита означает, что мы имеем шаблоны одного, два, три, четыре, five-- так как много различных моделей нулей и те, вы можете иметь, если есть 32? Это то же самое, спрашивая, что это от двух до 32? Это большое число, Я совсем не могу получить право, но я знаю, что это примерно 4 млрд. Таким образом, это означает, что ваша таблица базы данных может четыре миллиарда пользователей, и это все. Так что это интересно дизайн подтекст. Приличное количество компаний решили, возможно, не так много для их пользователей таблицы, потому что наличие 4 миллиарда пользователей является редкой проблемой. Это своего рода Facebook-стиле проблема, а не типичная проблема компании. Но, может быть, если у вас есть журналы транзакций или какой-то данные, которые постоянно будет записано в вашу базу данных что абсолютно может иметь миллиарды и миллиарды строк, и Вы используете целое число для него, что произойдет, как только вы получаете номер строки 4 млрд а затем вы пытаетесь вставить Четырёхмилиардное и 1, так сказать? Я упростив число бит. Вы можете отрезать назад, я имею в виду вас должны справиться с этим так или иначе. И то, что компьютер, как правило, делают, думать об этом даже с утра, если у вас есть 4-битное значение как 1, 1, 1, 1, которая, просто, чтобы связать утро вместе во второй половине дня, то, делает это число представляют в двоичной системе? Хорошо, мы сделаем это проще. Что делает этот номер представляют в двоичной системе? Хорошо, мы сделаем это проще, чем это представляет в двоичной системе? ЗРИТЕЛИ: Три. DAVID Маланом: Три, потому что мы имеем те column-- [СМЕХ] Уф! Мы имели столбец из них и столбец двоек. Поэтому предположим, что, действительно, наш [? приусадебного участка?] не 32 бита, но это были два бита, мы можем считать от числа 0, 1, 2, 3 пользователя, а потом мы вроде обратно к пользователю 00 раз. Так что это то, что обычно происходит. Если вы когда-либо слышали expression-- вероятно, нет, но если вы have-- Целочисленное переполнение, где вы держать листать все ваши биты чтобы быть самыми большими возможными значениями, а потом вы из битов, что обычно происходит? Почему я говорю 00? Ну, это три. Как я представляю 4? Как представляют для числа 4 в двоичной системе? ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: одно-- да, не говорите, 100 само по себе, потому что он имеет неправильный коннотация, но 1-0-0. Так что номер 1-0-0 действительно правильно, но если у вас есть только два бита, что вы действительно сделали? Вы перевернулась 00. И в самом деле, это то, что будет происходить. На самом деле, вы можете думать об этом более фамильярно. Если вы помните, то, что, 16 лет назад, мир должна была закончиться, когда проблема Y2K случилось. Почему это было? Ну большинство компьютеров, для разумные решения, хранили номера Понравился 1975 год или 1999 год только с помощью двух цифр в памяти компьютера. Так что, конечно, что происходит, когда вы получаете до 2000 года, вы идете к этому, или, вернее, да. Таким образом, вы идете к 2000 году, но если вы используете только две цифры это выглядит как год 00 и так что вы перевернулась. И вот почему много систем необходимо обновить в то время. Так с этим сказал, такие компании, как Facebook запустить против этого. Таким образом, единственный способ справиться с Ситуация, откровенно говоря, предвидеть его. Или чистый способ справиться с этой ситуацией это предвидеть его, так что вы не должны внести изменения позднее. Таким образом, вместо 8 байт, вы знаете, что? Я собираюсь быть дальновидными здесь, даже если это немного оптимистично, что мы будем иметь 4 млрд и 1 пользователей на нашем сайте. Но давайте просто использовать 8 байт, или 64 бита, которые в целом будут называется большое целое число, очень технический. И это просто означает, что вы можете иметь еще больше цифр вашего номера. Но это важно проектное решение, потому что если вы выбираете номер, имеет слишком мало битов выразительности вы могли бы на самом деле создать ошибка в вашем программном обеспечении. Хорошо, так что давайте укутать с электронной почтой и почтовый адрес. Так электронная почта, как долго должен адрес электронной почты будет? 50. Я действительно понятия не имею, но это вероятно, что-то подобное, потому что иначе никто не собирается написать вам, если он становится слишком долго, так что 50, давайте идти с ним на данный момент. Почтовый адрес, как долго это должно быть? ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Это не просто почтовый индекс, хотя. Почтовый адрес, я слышал. Так что это как 1 Brattle площади, запятая, Cambridge Mass., запятая, 02138. И в самом деле, позвольте мне просто тянуть до небольшого листа здесь. Это чувствует, как это упущенная возможность. Если у нас есть 1 Brattle площадь, запятая, Cambridge MA 02138, Я чувствую, что мы можем сделать лучше чем просто почтовый адрес. Почему мы не взрываются это немного? Что я клоню? Что мы должны вместо того, чтобы иметь для наших рядов здесь, возможно? ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Да, так что давайте называют его street_number, и подчеркивание просто общий способ иметь то, что выглядит как пространство, но это не так, на самом деле. Стрит, а затем city-- жаль? ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Мы могли бы сделать это. Линия одна, вторая строка. Почему бы нам не будет держать его просто на данный момент, но это абсолютно приемлемое решение. А потом состояние, а затем давайте быть немного американо-ориентированных сейчас и просто сделать почтовый индекс, только потому, что это приведет к интересной ошибке или проблема здесь. Поэтому предположим, что теперь наш адрес. Это немного больше раздражает, что у нас есть все эти дополнительные поля, но теперь мы можем пометить вещи немного лучше. Так что теперь номер улицы, вероятно, не должен быть символ, должен ли? Что это должно быть? ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Может быть, ряд как целое число раз? Большое число? Вы, наверное, не живут в 4 миллиарда Main Street или что-нибудь сумасшедший, как это. Так целое число, вероятно, хорошо, но кто-нибудь когда-либо жил по адресу, как 1A Brattle площади, или 1 и 1/2? Эти вещи существуют, к сожалению, даже если вы не жили там, Есть эти аномалии как квартира 1A, 1B, 1C. Таким образом, вы знаете, что мы, вероятно, не должны идти с целыми, в противном случае мы будем потерять некоторые продажи. Char поле, может быть? Я не знаю, как долго. Это, вероятно, не будет что долго, так что 10 или что-то. Никто не собирается писать более длинный номер, может быть. Но опять же, мы должны, вероятно, больше думать о том, что. Может быть, Google, сделать некоторые исследования, но мы пойдем с нашими потрохами на данный момент. Улицы, голец, 50, я не знаю. В какой-то момент, никто не собирается написать его на конверте, тоже, так что там, наверное, некоторые верхние границы там. Город, такой же, уверен, так что обугливается 50. Государство, может быть США, ориентированных на данный момент. Так что это может быть список, так что вид судебного решения вызова, государства. Это может быть как два символа. Так что на самом деле, может быть, я твердил полукокса. Я имею в виду, вероятно, VARCHAR, как раз для некоторой эффективности, но мы вернемся к что решение в данный момент. Может быть символ длины 2 для государства. Если в США они имеют, как MA, Массачусетс, Нью-Йорк, Нью-Йорк, штат Нью-Джерси, Нью- Джерси, и так далее. Так что это может быть исправлено в этом. DC для Вашингтона, округ Колумбия. Но я думаю, Оливье, ты предложил другой подход. ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Да, так что это немного раздражает ввести, но перечисление может иметь больше смысла, потому что таким образом, по крайней мере, в США, вы могли бы перечислить, если утомительно, но Вы делаете это только один раз в вашей базе данных и никогда больше не придется думать о это, все 50 кодов двух символов. Так что я люблю ENUM. Давайте придерживаться этого там, потому что это своего рода обеспечивает соблюдение более строгость. А потом почтовый индекс? Я думаю, что Эндрю была мысль о том, что ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Да, пять или девять. Давайте просто держать его просто. Просто сделайте пять сейчас. Но, возможно, я мог бы просто сделать целое число, не так ли? Я мог бы, но вы знаете, что я сделал эта ошибка однажды, в каком-то смысле. Несколько лет назад я был перенастройке из Microsoft Перспективы для Gmail, и перспективы есть способ экспорта все ваши контакты, в качестве файла Excel, файл CSV, значения, разделенные запятыми файл. И я сделал ошибку, я думаю, из двойного щелчка по нему, как только я скачал экспорт, чтобы убедитесь, что он выглядел, как я ожидал. Должно быть, я ударил Сохранить или позволить автосохранение удар в или что-то. Потому что, когда я затем импортировать это в Gmail, все это работало. Но в течение многих лет, и по сей день, и Я сделал это пять, 10 лет назад, Я до сих пор найти друзей, которые имеют адреса, которые выглядят, как это. Зачем? ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Потребовалось вперед 0, ну, это, скорее, взял весь почтовый индекс, как ряд, и, следовательно, это ведущий 0, что означает это не имеет никакого значения. И так 2138, кажется, мой почтовый индекс. И это, честно говоря, раздражает Excel особенность которой я думаю, что по умолчанию, даже если это означало просто быть текст, Microsoft Excel решает, позвольте мне быть полезным, и о, я вижу только цифры. Давайте рассматривать их как числа. И это усечение ведущие нули. Я клянусь перед Богом, каждая пара месяцев я найти адрес, и из своего рода обсессивно-компульсивного расстройства, я возвращаюсь в и добавить 0, хотя я никогда послать людей письма или что-нибудь. Но я до сих пор находят остатки этого. Так что это сказать, является ли это хорошей идеей? ОК, нет, потому что кто-то в Массачусетс, в этой области, будет иметь O ведущую их. Так что давайте идти с подобным голец, наверное, пять. И вот, мы понимаем, может использовать перечисление и мы может перечислить 10000 возможные коды ZIP, но это чувствует, как это, вероятно, пересекая линию, как, выгоды. Если вы должны ввести, что большой объем данных в вашу базу данных для защиты от чего-то. Так символ понял, что вы могли бы ввести в Н-Е-Л-Л-О, как ваш почтовый индекс, который, очевидно, не числовой. Так что нет никакого способа, в типичная база данных, указать только числовые и только пять символов, таким образом, мы будем иметь чтобы сделать это в коде. Мы собираемся сделать это в PHP или Java или любой другой язык мы используя на сервере для обеспечения такого рода ограничения. Ого! Хорошо, поэтому все вопросы только пока? Давайте сделаем еще одно проектное решение. Оказывается, что вам также можете выбрать, при проектировании базы данных SQL, или типичные реляционные database-- где опять же, реляционная просто означает строки и столбцы, вот как вы организовать ваши data-- и осознать, что это означает, Я вводит в заблуждение что, я это drawing-- то, что называется схема для таблицы базы данных. Это как спецификации для table-- но когда приходит время, на самом деле хранения данных, и мы будем делать это только пример здесь. Я собираюсь открыть Excel, потому что Excel даст мне строки и столбцы. И это именно то, что Oracle и MySQL и другие инструменты дадут мне. Так что я просто буду использовать это ради Обсуждение в. Позвольте мне идти вперед и открыть Представитель документ здесь, увеличить немного. Так, например, наши заголовки теперь фамилия, имя, пол, ID, адрес электронной почты, номер улицы, улица, возгласы. Улица, город, штат, просто о помещается на экране. Так что же это означает, что, когда Сначала пользователь регистрируется на моем сайте, это будет что-то вроде Давид, Малан, м, скажем, 1, malan@harvard.edu, улица номер будет быть как 1 Brattle площади, Кембридж, Массачусетс, 02138, а затем так далее. Поэтому, когда я говорю, что реляционная база данных или базы данных SQL это строки и столбцы, Я имею в виду это. Что фактические данные хранятся в строках и столбцах. Это просто совпадение, что мы говорили, и я был просто рисунок его в строках и столбцах. Это просто схема, всеобъемлющая определение. Так что из этих полей здесь, или что то же, там, которые являются поля, которые вы думаете Я, вероятно, искать на, если я являюсь пользователем или если я являюсь администратором базы данных? Мол, какие поля я такой на самом деле будет искать дальше? ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Имя, да так Мне нравится тот факт, that-- да, электронная почта может быть довольно распространенным явлением. К сожалению, вы сказали имя. Так maybe-- и снова, мы вид говорить абстрактно. Я не знаю, почему вы бы искать для имени, но это чувствует себя разумным, если вы ищете пользователь. Может быть, утверждает, конечно, ID. И это скользкий склон, потому что я мог изловчиться сценарий, при котором может быть, мой босс попросил меня, сколько мужчин у нас есть на нашем сайте? Сколько женщин у нас есть на нашем сайте? И вот в этот момент, вы можете захотеть искать по гендерной области, тоже, и ничего больше. Таким образом, есть компромисс здесь. Опять же, нет никаких правильный ответ, но есть это функция в большинстве баз данных SQL известный как индексации, в результате чего вы, дизайнер, администратор базы данных, можете решить заранее, какие Поля базы данных должны оптимизировать для поиска по. Вы могли бы очень наивно сказать, оптимизировать это, оптимизировать, что, оптимизировать это, оптимизации, что и в этом, и база данных будет сделать некоторые магические вещи под капот, и делать что-то таким образом, что в следующий раз вы будете искать на любом из этих полей, это, по сути, будет быстрее. Это возможно. Это не отменяет сам себя. Но должна быть расплата. Если вы по наивности, или с чрезмерным энтузиазмом скажем, индекс всех этих областях, так сказать, сделать их всех эффективного поиска, какую цену вы, вероятно, платить? ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Производительность. Что вы имеете в виду? Ну производительность, по крайней мере в Контекст я обсуждаю, это лучше сейчас. Это определение индексации. Это сделает поиск быстрее. Так что время уменьшается, так сказать. ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Space. Итак, еще раз, это общая торговля. Я могу ускорить поиск, но это будет стоить вам больше байт пространства. Зачем? Ну, по умолчанию, если у нас нет ни одного из эти красные звезды, ни один из этих показателей, как я говорю, как вы поиск имени в этой базе данных? Итак, давайте обратим Внимание к этому примеру. Если у нас есть Дэвид и Скалли и Kareem и Arwa и другие в этих строках, например. Так что давайте делать именно это. Скалли находится здесь, а затем мы имеем Карима и Arwa, и все остальные, если вы этого не сделаете имеют определенный индекс, так сказать, лучшее, что вы можете сделать, это линейный поиск. Если вы ищете Arwa, мы не будет иметь возможность перейти прямо к ней быстро. Мы собираемся начать вершину и пройти весь путь до дна, не в отличие от нашего оригинала Майк Смит пример. Однако, если я говорю, эй, базы данных, Индекс первое поле имя, то это будет что-то делать искуснее и поддерживать что-то как бинарный поиск. Это, вероятно, не бинарный поиск по себе. Базы данных, как правило, использовать другой Структура данных под названием B-деревья, не следует путать с бинарными деревьями, что просто сделать это быстрее искать что-то логарифмическая в природе. Но цена, которую вы платите, чтобы создать что особенность, что структура данных в памяти, это больше байт. Так что это может занять несколько мегабайт, некоторые гигабайты, кто знает? Это зависит от данных. Так что в какой-то момент, вы должны решить, это, вероятно, не является общим случаем. Так что же фактическая общая случаи, если вы действительно должны были выбрать, что ваши любимые поля могут быть? Эл. адрес. И мне нравится, потому что адрес электронной почты, в теории, должны быть уникальными. А так обычно, когда вы знаете, заранее, что один из ваших полей или будет уникальным, что как правило, хорошее поле искать дальше, потому что таким образом, когда вы ищете что-то, вы собираетесь получить обратно один или ноль ответов, а затем вы сделали. Вам не нужно держать ищет все же другие. И поэтому в данном случае здесь, электронная почта, до тех пор пока вы не можете дважды зарегистрироваться с той же электронной почты, является хорошим. ID по определению, в информатика мир, если вы говорите о ID, что лучше быть уникальным. Это своего рода коннотацией удостоверения личности или идентификатора. А остальные из них могут быть, давайте назовем их приятно имущими, но на самом деле не требуется. И поэтому в базе данных, Вы определяете индексы, но вы можете быть еще более точным. Вы можете сказать, эй, базы данных, убедитесь, что каждый идентификатор в этой таблице является уникальным. Даже не позволяйте программиста случайно положить в дубликате электронной почте или дублировать идентификационный номер. Так же, как перечислений защитить нас так же, вас может иметь такие возражения более низкого уровня. И поэтому проектирование баз данных, в каком-то смысле, это своего рода удовольствие, потому что вы делаете это защищаясь. Вы вроде предположить, что вы работаете с ужасный, ужасный программистов и вы хотите, чтобы положить в столько обороны как вы можете защитить ваши данные, но одновременно вы хотите чтобы помочь им работать лучше выбрав который поля для оптимизации. Но вы не можете обязательно делать это в вакуум, как мы вроде здесь. Вы должны знать, какие эти общие случаи бытия. Если разработчики осуществление адресной книги, вы можете очень хорошо хотите, чтобы иметь возможность искать почти на каждом поле, только по своей природе приложения. Так что, может быть, вы проводите что дополнительное пространство. Право, все вопросы? Да. ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Нет ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: OK. ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: О, так что мы речь идет в пути Теперь это полностью зависит от конкретного языка. Таким образом, мы сейчас говорим о реляционных баз данных, в более общем плане или SQL базы данных в более общем плане. ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Лучшее слово, чтобы использовать это, может быть использован любой язык. Так что я могу писать код JavaScript, C код код, C ++, Java-код, Ruby код, все из которых говорят к базы данных и выполнять запросы. На самом деле, это не плохо непосредственно перейти к пример запроса. И опять же, мы не собираемся вдаваться в Java или C ++ или любой из этого больше, но в SQL, язык, к которому я продолжаю ссылаясь, Structured Query Language, это само по себе является языком программирования, но это означало быть использован для, нет удивление, структурированных запросов запросов. Под этим я имею в виду это. Способ выбора данных из базы данных MySQL это вы в буквальном смысле типа в вашей программе что-то вроде выберите звезду от пользователей. Я предполагаю, что эта таблица, отныне называется пользователей. Я мог бы назвать это все, что мы хотим, но это своего рода имеет смысл. И поэтому выбор очень общий глагол, если вы будет, в SQL, которая буквально делает это. Как вы думаете, звезда означает, что в данном контексте? ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Я сожалею? ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Не требуется, это более широким, чем это, на самом деле. Это дикий символ карты. Звезда почти всегда означает что-нибудь, так что это означает, что, в данном случае, выбрать все из базы данных. Поэтому, когда я говорю об этом, я имею в виду верни мне каждый столбец от моего стола называется пользователей. Так дайте мне набор результатов, как это называется. Другими словами, дайте мне копию электронными таблицами, является то, что я клоню. Но если бы я сказал, выберите звезда от пользователей где ID равно 1, насколько большой должна мой результирующий набор будет тогда? Или то же, сколько строк должно Я быть передан обратно из базы данных? Наверное, только один, если у меня есть на самом деле обрабатывают ID в качестве уникального идентификатора, и если Дэвид имеет тот уникальный идентификатор, я должны получить обратно одну и только одну строку содержащий всю информацию Давида. Если бы я сказал, что это где ID равна 99, я должен вернуться, В этом контексте, нулевые строки, по крайней мере на данный момент. Однако, если я на самом деле не волнует обо всей этой информации, Я мог бы просто сказать, где живет Дэвид? Выберите почтовый индекс из пользователей, где идентификатор 1. Это позволит выбрать для меня только почтовый Давида код, а не полнота этой строки. Почему я мог бы сделать это вместо того, звезда запроса, дикая карта? ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Да, я, возможно, потребуется только его. Так что производительность снова здесь ответ. Зачем просить больше информации, чем вам нужно, потому что даже если это все в порядке вместе, вы все равно должны скопировать эти данные, казалось бы, из базы данных в вашу программу так или иначе, и это просто глупо, если вам нужно только пять из этих цифр, не совокупность ряда. Так как же я вставляю пользователя? Предположим, что пользователь имеет только зарегистрирован в первый раз. Синтаксис обычно выглядит следующим образом. Вставить в пользователей, и то мы сказали бы значения, и тогда мы сказали бы значения как, скажем, Лорен Скалли, наш видеооператор прямо здесь. И следующее поле является пол. Так что мы будем говорить цитата, конец цитаты "Е", то есть идентификатор и я собираюсь say-- давайте делать вид, что она на самом деле не здесь, поэтому мы перемотать в истории. Так 2 будет ее ID. А потом следующее поле Вот ее электронная почта. Так что это будет похоже Лорен Скалли и так далее, и мы просто точка точка точка его отсюда на. Теперь он будет получать немного утомительно, но запрос вставки в конечном итоге выглядеть. Если я хочу, чтобы избавиться от Скалли, э-э-о, давайте дерегистрировать ее, она удаляет ее счет, удалить из пользователей, где ID равно 2, избавятся от Скалли. Или я могу сказать установить обновление пользователей, скажем, что мы можем изменить? Предположим, что она движется. Набор на молнии равна 021-- Нету, это ее ток молнии. 90210. Единственный другой почтовый индекс Я знаю, что в мире. Так что изменится ее почтовый code-- на самом деле, это не изменило бы ее почтовый индекс. Что я только что делать? Несмотря на то, что синтаксис, вероятно, новый. ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Да, я переехал всех в Беверли-Хиллз, штат Калифорния. Так что я должен на самом деле сказать, где ID равно 2. И так далее. Так что SQL все о них виды инструкций. Выберите, вставлять, удалять, обновлять, с этими предикатами в конце эти пункты, где, так сказать. И есть намного больше, вы можете делать, но это на самом деле просто сводится просто, если arcanely, выражая что вы хотите сделать базу данных. А потом база данных будет выяснить, когда вставить Lauren Скалли в базы данных, куда поместить ее в памяти так что мы можем очень быстро получить она основана на ее адрес электронной почты или на основе ее идентификационный номер или тому подобное. Да, Дэн. ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Действительно хороший вопрос. Будут ли эти сценарии перехода от Microsoft Access в Oracle к MySQL в PostgreSQL? Короткий ответ: это зависит. Теоретически существует очень значительное общее подмножество SQL который используется во всех из этих реализаций. Тем не менее, различные производители имеют дополнительные функции к их базам данных, чтобы делать определенные вещи выходит за рамки этих функций, которые могли бы, в самом деле, перерыв. Так что разработчики пути хеджировать против этого, является то, что вместо того, чтобы писать сырой SQL-код, как я пишу здесь, они вместо того, чтобы использовать библиотеку, общая библиотека, которая сама по себе является своего рода более высокого уровня и тезисы прочь, какой продукт вы используете. И это дает вам функции и процедуры чтобы позвонить, так что вы никогда на самом деле писать сырой SQL. В теории, то вы можете изменить продукты из Oracle в Microsoft или наоборот, или что-нибудь еще, и вы в буквальном смысле ничего не меняют о вашем коде. Реальность, однако, является то, вы иногда отказаться от функции в качестве результата. Вы могли бы выбрать продукт, потому что он получил эти функции с добавленной стоимостью, и вы только сейчас не используя их сознательно. И Занимательно, что большинство компаний, как правило, никогда не отходить от своей базы данных. Таким образом, в то время как это приятно есть особенность, реальность есть, если вы капитального ремонта ваша база данных, вы вероятно, что делает грозди других изменений во всяком случае, что вы не обязательно должны предвидеть, что. Так что, возможно, над-инженерные проблемы, но это действительно зависит от контекста. Но в теории, SQL совместно через эти различные продукты. Действительно хорошие вопросы. Да. ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Да, так вы можете думать базу данных это просто сервер, в конце на следующий день, и внутри этого сервера это целая куча таблиц, строк и столбцов. И когда вы посылаете запрос, как это из вашей программы, ваш веб-сайт, написана на Java, Ruby, Python, независимо, сервер получает эту команду и интерпретации его в буквально так же, как мы обсуждали ранее с интерпретируемые языки, а затем выполняет какое-либо действие на ноль или больше строк в ноль или более таблиц. ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Точно, точно. Так псевдокод для чего-то как это могло бы быть это. В файле PHP или ваши файл Python или файл Java, вы бы псевдокод код, или Скретч-подобные блоки, как, если пользователь посещает acme.com/register~~V впервые, затем вставить в пользователей и так далее. И мы бы перевести это более конкретный код в конце. Но на самом деле, у нас есть все строительные блоки здесь, несмотря на то, что мы пропуская некоторые из этапов реализации. Итак, позвольте мне придираться, что мы чудесно сделал только минуту назад. Вы создали довольно Полная таблица для пользователей. Следует признать, что мы могли бы реализовать это в несколько различных способов, но вы на самом деле привело нас вниз по path-- и я говорю вам, но это, вероятно, мой fault-- из довольно неэффективная реализация базы данных. Это не нормированы. И я имею в виду нормированная там будет, с течением времени, значительная избыточность, и, следовательно, неэффективность, что это пустая трата пространства. На основании только то, что вы видите здесь, может Вы видите, где это пустая трата пространства собирается прибыть с течением времени, , как зарегистрировать больше и больше пользователей для вашего сайта? Какие данные могут стать лишними? ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Почему вы имеете в виду, что? ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Да. И давайте предположим, что для целей На сегодняшний день, что это правда. Оказывается, и мы узнали это трудный путь, это не так. Как-то несколько городов есть, так или иначе, тот же почтовый индекс, который разрушает эту замечательную интуицию. Но давайте предположим, что это правда, потому что это почти всегда верно. Поэтому предположим, что почтовый индекс всегда связано с тем же городом и состояние, которое является своего рода разумного предположения, но неверно, получается. Но разумное предположение для сегодняшних целей. Теперь предположим, что я живу в Кембридже, MA, в соответствии с таблицей этого пользователя, и предположим, что Лорен Скалли живет в Кембридже, штат Массачусетс, и предположим, что Карима живет в Кембридже, штат Массачусетс, и Arwa живет в Кембридже, MA, все мы в 02138. Почему мы помнить, Кембридж, MA, 02138 для всех нас четверых? Что должно быть достаточно, чтобы вспомнить? ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Просто почтовый индекс. Только то, что 02138 существует, потому что Вы знаете, что мы можем сделать? Мы могли бы получить немного фантазии здесь и здесь, определить другую таблицу где это собирается быть имя, это будет тип, это собирается быть длина, и в дальнейшем, я буду называть это мой стол города. Это было названо, из Конечно, мои пользователи таблица. И так, что я должен поставить здесь для моей таблицы городов, как вы думаете? ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Да. Так молнии и штат и город. И поэтому тип здесь, мы будем говорить это будет символ 5 раз, при условии дискуссии ранее. Это будет перечисление, возможно, как раньше, и город будет VARCHAR 50. Так что теперь я получаю чтобы стереть из этой таблицы чтобы устранить эту неэффективность? ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Ницца. Государство и город уйти, поэтому я прямо сейчас ликвидировали потенциальную неэффективность для избыточно запоминания, Кембридж, MA, Кембридж, Массачусетс, Кембридж, Массачусетс, Кембридж, штат Массачусетс, который, мы надеемся, никогда не изменится. И даже если это делает, это minorly раздражает, теперь что я должен изменить он в несколько строк, в то время как здесь, я мог бы просто изменить его в одном месте. Теперь то, что компромисс, возможно? Это было супер удобно. Если бы все мои данные хорошо вместе. Но то, что так обстоит дело сейчас? ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Совершенно верно, и я рад, что вы использовали слово присоединиться, потому что это на самом деле ключевое слово, в мире реляционных баз данных в SQL, это фактическое слово, которое вы может ввести или, по крайней мере, передать. И в самом деле, что мы теперь должны сделать чтобы выбрать полную информацию Дэвида что-то вроде выбора звезды из пользователи, присоединиться города, on-- и сейчас Я собираюсь просто перейти на второй линии так что эта fits-- users.zip равна cities.zip, где users.ID равен 1. Так, что происходит? Это некрасиво выглядит, но вы можете вид прочитать его слева направо, сверху вниз. Выбор звезд от пользователей такой же, как и раньше, но это не от пользователей, которые сами по себе. Это от пользователей присоединиться городов. Что я, соединяющая эти две таблицы на? Что ж, судя по всему, пользователей таблицы почтовый индекс поля, и этот период просто особенным синтаксис, чтобы выразить эту идею, и это таблицы городов почтовый индекс поля. Я хочу, чтобы эти двое быть равными, но я хочу, чтобы в конечном итоге выбрать только те строки, в которых ID в таблице пользователей равен 1, что случилось с моим. И просто чтобы быть ясно, А программист, как правило, когда жёстко что-то вроде числа 1, так как в противном случае только веб-сайт поддерживает Давида или тому Самый первый пользователь, вы вместо этого делать что-то вроде ID, где Это представляет собой переменная, то, что может меняться с течением времени, аналогично в духе того, что я уже говорил ранее с этими видами заполнителей. Но сейчас мы просто жёстко его как 1. Так что же это означает? Что ж, хороший способ визуализировать это что если эта рука таблица пользователей, и эта рука промелькивает стол, мы своего рода finding-- а кончики моих пальцев на молнии здесь, а кончики моих пальцев вот застежка-молния, вы вид блокировки его так что вы получите обратно полученный исходная таблица, по-настоящему присоединиться эти две таблицы по общему полю. И это не должно быть на молнии. Это может быть самое что-нибудь еще, но застежка-молния хороша, потому что один, это коротко, два, это всегда такой же длины, так что есть реальный коэффициент полезного действия к тому, что Оливье предложил здесь с факторизуя молнию, и [Неразборчиво] предлагает, чтобы мы избавляемся города и страны. Так что это процесс известный как нормализация. Есть вопросы по этому поводу? Ну позвольте мне отметить, это такие вещи, несмотря на то, что это довольно низкого уровня, это обсуждение, что вы могли бы подумать вы вроде получения потеряли в сорняках, это проявление достаточно возможность для разработчиков, чтобы быть плохим. И в самом деле, даже тогда, когда мы, в курсы я учил, когда у нас было, например, неопытный Бакалавриат программисты создавать веб-сайты, на первый взгляд, веб-сайты могут выглядеть потрясающе. И у них есть все из функциональность мы просили, разработчики проделали хорошую работу. Но они не обязательно знать достаточно о проектировании баз данных или они не думали, трудно достаточно о типах данных и типы пользователей: Сайт будет иметь, и мы находим, то, спустя шесть месяцев, после того, как они закончили или двинулись дальше, что, черт возьми, наш веб-сайт на самом деле, по-настоящему медленно. И я даже не говорю о том, миллионы или тысячи пользователей. Я имею в виду несколько сотен пользователей в университетском городке, все из которых любят, например, магазин для курсов в в то же время, они используя этот каталог курсов Применение я упомянул и вещь становится действительно замедлить, потому что не было никаких индексов. Там не было никаких красных звезд, так говорят, или у нас было не обязательно факторизовали общие данные получить некоторую экономию пространства. И поэтому, когда зондажами разработчик или базу данных лица или т.п., виды вопросов, продумывать даже при рассмотрении чей-то код, сказать, не обязательно искать через все их кода, но говорят, давайте посмотрим через таблицы базы данных. Что ты хранить? А потом сказать, ну, подождите минута, почему вы используете целое число? Что делать, если у нас есть 4 млрд и 1 из этих строк? И эти виды вопросов является возможность чтобы отчасти оттеснить и получить чувство, где если вы не удобно делать он, имея кого-то более технический задать эти вопросы, от того, или нет человек действительно знает свое дело. И это своего рода материал тоже, что люди в Интернете, который самоучки, может быть, узнать реже, потому что вы не обязательно попадался столько же, потому что вы можете получить база данных и работает, но если вы не читали на учебники или были рассказал о нормализации баз данных и индексации и производительность, эти виды вещей что собираются причинить вам вред. И вы могли бы подумать, или плохой инженер Можно сказать, ну, хорошо, мы лучше платить для большей базы данных или быстрее базы данных или просто выбросить деньги на это, вертикально масштаб, не обязательно так. Если вы идете in-- и вы можете пойти в после fact-- и добавить индексы, и это может занять несколько часов для базы данных, чтобы создать что новые данные Структура, что я упоминал ранее, вы все еще можете исправить это после того, как тот факт, что это, где вы начинают различать хорошие дизайнеры из плохо дизайнеры, а не только эстетически, но с точки зрения производительности, а также. Любые вопросы? Нет? Так что для NoSQL, который был другой тип базы данных, к которой я упоминал ранее, у вас нет строки и столбцы. Вместо этого, вы бы что-то что выглядит немного больше, как это. Я собираюсь использовать общий синтаксис. Фигурные скобки, случается используется здесь довольно много. Вы могли бы иметь что-то как первое имя Давид, вы, возможно, в последний раз имя Малан, цитаты, Вы могли бы иметь ID is-- извините, whoops-- ID 1, электронная почта malan@harvard.edu, и я не буду заморачиваться печатала остальное, а потом некоторые другие вещи. Другими словами, это текстовое представление от того, что мы обычно называем объект в компьютерной программе. И объект, как правило, просто коллекция пар ключ-значение. Так опять же, это повторяющаяся тема. Мы видели пары ключ значение в HTML, мы увидели пары ключ-значение в настоящее время в контексте баз данных, и мы видел пары ключ-значение в контексте о, я думаю, язык ранее сегодня. Держит придумывают. И в самом деле, это действительно какие данные сводится к тому, данные и метаданные, или значения и ключи, соответственно. Поэтому нереляционная базы данных, что-то на основе на объектах, где вы просто комок все вместе и положить его в память, как правило, будет на фото, как, или думали, как это. И я оставлю, что теперь, как своего рода альтернативный подход. И одно не обязательно лучше, чем другие. На самом деле, очень в моде в эти дни системы управления базами данных как MongoDB и Redis и некоторые из них другие такие инструменты, в свободном доступе, но они все больше в моде. Отчасти потому, что они предлагают дополнительные особенности над этими табличными подходов, но и потому, что они немного проще в использовании, потому что вы не должны, как трудно думать, о многих из этих проектных решений. Так плюсы и минусы. Так понимаю, есть варианты сверх того, что мы только что потратили время на. Так давайте сделаем это. Давайте переход немного теперь назад к веб-программирования, так что мы как-то заключить сегодня с чем-то это немного практический, заполняя некоторые пробелы со вчерашнего дня. Позвольте мне перейти к этому в первую очередь. Так Напомним, что вчера мы имели некоторую каноническую HTML страницы, которые были изначально, только HTML, а затем во вторую очередь имел CSS, каскадные таблицы стилей. Это новый тег, который мы не сделали см вчера, или остановиться на, так называемый скрипт тегов. Оказывается, на самом деле вы можете встроить язык, называемый JavaScript в вашем веб страницы и сделать свой веб страницы сделать что-то. Так что же я имею в виду под этим? Что ж, позвольте мне идти вперед и просто заимствовать этот код на мгновение. Я не буду вдаваться в Cloud9, нет необходимости туда себя только все же, и я буду называть эту alert.HTML. Я собираюсь вставить в мой файл здесь. И только уточнить, что я сделал, пусть мне пойти на этот адрес и идти, чтобы предупредить, и вы увидите Hello World. Но это своего рода сокрушающей. Я хочу сделать что-то немного по-другому. Так что я собираюсь сделать это на самом деле. Я собираюсь идти в здесь е, и между моими тегами сценария, говорят предупреждение ( "Привет, мир"); поэтому уведомление это немного коряво, но у меня есть HTML, внутри которого находится язык называется JavaScript, и это то, что называется вызов функции или вызова процедуры. Это глагол, в буквальном смысле, в данном случае, и я вызова функции кода что кто-то написал. Так что функциональность является предупреждение, так что давайте пойдем на эту страницу сейчас и нажмите кнопку перезагрузки, и теперь вы увидеть немного интерактивности. Это своего рода старой школы и некрасиво. Этот вид напоминает вам о всплывающие окна, возможно, прошлых лет но это действительно сделать что-то немного больше программной. Так что больше, чем это, давайте сделаем что-то более интересное. Пусти здесь и избавиться от этого. И я собираюсь идти вперед и создать форму, как мы делали вчера. На самом деле, вы знаете, что? Я собираюсь идти в google.html, который мы начал вчера, который выглядел это, с помощью которого мы искали кота Но обратите внимание, что есть добро из ошибка в текущей версии. Она работает для кошек, но предположим, что Я не сотрудничать, и я не вводить ничего, и я просто нажмите кнопку. Это вроде странного поведения. Взял меня к реальному Google, не дал мне сообщение об ошибке. Я хотел бы сказать пользователю Вы должны дать нам значение. Итак, как мы могли бы это сделать? Ну позвольте мне вернуться в Cloud9 и отпусти меня в верхней части моей страницы и добавить тег сценария, как это, где Я собираюсь ввести некоторый код JavaScript. И я собираюсь сделать следующее. Если (document.getelementByID-- и отзыв что мы говорили о том, что ранее, эта функция. Что ID вы хотите получить? Я хочу, чтобы получить д, и я собираюсь скажем не равно ничего, как this-- на самом деле позволить мне использовать двойные кавычки только для consistency-- не равно ничего, затем оповещение ( "Пожалуйста, введите запрос") здесь. Так что у меня есть то, что, как представляется, что-то вроде состояния. Мы уже видели эту общую идею в пустом месте. Это как один из тех, головоломки части, которые выглядели как это. И что я говорю? Ну, здесь, я замечаю собирается сделать следующее. Я собираюсь дать эту форму поле не только имя д, который то, что получает передается в Google, но я собирается дать ему локальный идентификатор, также называется д. Но я мог бы назвать это все, что я хотите, я просто хочу, чтобы держать его просто а также называют его д, только для простоты. А теперь я собираюсь сделать что-то немного больше. На поля формы здесь, я собираюсь добавить то, что называется обработчик события. На представить, я хочу позвонить функция называется Validate. Это еще не существует, это слово, или этот глагол Validate, потому что я собираюсь сделать здесь теперь добавить некоторый код. Я хочу сказать, функция Validate. Я собираюсь отступа это и добавить еще фигурная скобка здесь и еще один здесь. Подумайте, что это делает сейчас. У меня есть now-- думать об этом как создал свой собственный кусок головоломки, которые ранее не существуют, и я назвал эту головоломку кусочкам кусок головоломки Validate. Его цель в жизни, чтобы выполнить четыре строки кода внутри него. Если document.getElementById так концептуально, что собирается идти в элемент, HTML-элемент, уникальный идея просто д, а затем, даже если синтаксис выглядит немного странно, что равное равно просто означает, что равных. Таким образом, это означает, что если элемент с уникальный идентификатор д, когда получил, не имеет значения, она просто равна цитата конец цитаты, ничего там, то, что я хочу сделать? Я хочу кричать на пользователя. И мы не будем очень подробно здесь. Я собираюсь вернуться ложным. То есть ошибка. В противном случае, я собираюсь вернуться правда. Так что либо это сработало, либо нет. Ложь или правда. И теперь, если я не сделал ни одной ошибки, позвольте мне сохранить это и перезагрузить это. И позвольте мне просто дважды проверить, что Я не, на самом деле, делать какие-либо опечатки, так что я не опозориться. Давайте посмотрим, если это работает. Так что теперь я буду набирать кошек. Он по-прежнему работает, или половина работает, по крайней мере. Теперь позвольте мне перезагрузить его, а теперь давайте я попробую представить без ввода anything-- черт побери, он сломался. Один момент. Позвольте мне открыть консоль, [Неразборчиво] журнал, перезагрузите страницу. Позвольте мне попробовать это снова. О, черт возьми. Я забыл. Я сделал опечатку. Я помню, что это такое. .стоимость. Я имел в виду, если значение говорят элемента с идентификатором д равно что, то орать на пользователя. Так что теперь позвольте мне снова задержать дыхание. Вот так. Там мы идем. Пожалуйста, введите запрос. Так что это не давая мне до конца. Я могу быть своего рода игривые с этим, и вместо того, чтобы проверка не имеют ценности, Я могу сказать что-то подобное, Больше не придется искать для кошек, и теперь мы можем только более игриво пусть поиск пользователя для собак, если он или она хочет, или если я пойду сюда и искать кошек, теперь я не могу. Так что вынос здесь? Так что, мы ввели в наш мир HTML и CSS, функциональные возможности программирования. Я могу на самом деле в настоящее время принимать решения в коде. Раньше все, что я мог сделать, это пометить текстовое содержание или графическое содержание и сказать ему, что посмотреть как и где, чтобы отобразить. Теперь я могу реально спросить вопросы веб-страницы и принимать решения, основанные на нем, и предложит пользователю если мне нужно кричать на него или нее. Так давайте попробуем что-нибудь самостоятельно с этим. Идите вперед, позвольте мне открыть следующий слайд здесь, и просто указать на одну вещь. Так же, как с помощью CSS, мы можем вынести наш код JavaScript в отдельный файл, вы можете сделать то же самое с JavaScript, как с помощью CSS. И вы используете, что с помощью источника атрибут тега сценария. Но мы не будем усложнять сейчас. Вместо этого, если вы могли бы перейти на эту страницу не, но-- позвольте мне переместить эту вокруг в order-- идти, если вы могли бы, эту страницу здесь. Этот URL-адрес здесь. Это в сегодняшних горками. Вы, возможно, придется перезагрузить, потому что Я добавил пару вещь. Но туда, где некоторые головоломки ждут. И это даст нам шанс, в немного больше удовольствия контексте, баловаться с некоторыми JavaScript. И когда вы там, Я объясню, что ждет. Получить зеленый. Набор синий. Устанавливает зеленый, устанавливает красный. К сожалению. Сожалею. Это степень нашей документация для этой задачи. И это будет работать следующим образом. Так что у вас есть по этому вопросу страница представляет собой целый букет головоломок изображения по приятелем в Стэнфордском университете. Так что вы видите здесь почти вид одной из тех волшебных глаз головоломок, но если вы просто смотреть на него, ничего не собирается выскочить на тебя. Скорее всего, что-то скрытый в этом образе. И он скрыт следующим образом. Изображения, как вы знаете, может быть состоящий всего из трех цветов. Некоторые красный, немного синего, а также некоторые зеленые. И мы можем сделать все цветов в радуге путем смешивания этих трех цветов так или иначе. Так это выглядит в основном зеленый и синий, но, как говорит здесь Ник, это железо-головоломка изображение головоломка. Он содержит изображение что-то известным, однако, изображение было искажено. Знаменитый объект находится в красных значений. Тем не менее, красные значения есть все были разделены на 10. Таким образом, они слишком малы, на коэффициент 10. Итак, другими словами, Ник принял исходное изображение, и он ненасыщенный все красноты от него, снижение количества красного чернила, если вы будете в нем. Синие и зеленые значения все просто бессмысленно, случайные величины, иначе шум разработан чтобы скрыть реальное изображение. Так что Ник сделал он смягчил красный, а затем он просто бросил случайный количество синего и зеленого на изображении в виде неясными что на самом деле все еще там. Необходимо отменить эти искажения чтобы раскрыть образ. Во-первых, установить все синие и зеленые значения к нулю, чтобы получить их из пути, и посмотреть на результат. затем Умножим каждое значение красного на 10, сворачивают до приблизительно в его конечное значение. Что такое знаменитый объект? Так что все у вас есть этот прямоугольник в вашем браузере прямо сейчас. И обратите внимание, что есть некоторые стартовый код, если можно так выразиться. Это код JavaScript, который Ник написал для вас. И обратите внимание, что есть линия в середине, что начинается с косой черты косой черты, это что обычно называют комментарием. Это означает, что это фраза для программиста что не имеет никакого функционального смысла. Это просто визуальный сигнал к человеку. Таким образом, вы можете пойти дальше и удалить только ту линию, и быть супер осторожны, чтобы не удалить или изменить что-нибудь еще. И позвольте мне вас через что делает этот код, и я оставлю его для вас, чтобы выяснить секретное изображение. Это первая линия здесь, что я просто выделенный дает вам следующее. Слева, у вас есть то, что называется переменная, Ник произвольно, но обоснованно называется IM для изображения. На правой стороне этого знака равенства, он говорит, дайте мне новый цитата, конец цитаты "простой образ". Простое изображение, в этом контексте это то, что называется классом, ну, это вроде как class-- технически prototype-- но на самом деле, это дает мне новый объект, содержание которого являются файл, железо-puzzle.png. Другими словами, Ник создал это понятие простого изображения так что мы можем, кроме педагогической цели, играть с изображением и изменить его красный, зеленого и синего цветов. И как мы делаем это? Это зашифрованное синтаксис здесь вроде как повтора блока что некоторые из вас видели в пустом месте раньше Сегодня, где вы можете повторить 10 раз. В этом случае, Ник не жёстко число, например 10. Вместо этого он говорит, инициализировать переменная с именем х 0, проверить, если х меньше ширина изображения. И так, чтобы быть более правильным, изображение является Переменная, точка означает идти внутри него и получить его ширину, и затем открыть скобка, закрытый скобка просто путь программиста сказать, что это функция. Это процедура. Это функциональность кто-то написал. Используйте его и верни мне ответ. И тогда х ++ является причудливым способом говоря, после того, как вы сделали это один раз, приращение х на 1. Другими словами, это это путь программиста индуцировать петлю, что это собирается перебрать все столбцы в изображении. Изображение просто сетка точек, строк и столбцов точек. Это способ итерирования над всеми этими колоннами. А на внутренней стороне, В то же время, мы переборе над высот, здесь и здесь и здесь. Так что это просто способ тащась, почти как старый школьный машинке, просто идти над Все изображение итеративно. Даже это не совсем полностью ясно, просто принять на веру сейчас, что эти три линии кода вместе, собирается, чтобы позволить вам выглядеть итеративно на каждый пиксель, каждая точка в изображении. Что такое пиксель? Ну, чтобы быть ясным, если мы посмотрим в оригинале и увеличить масштаб, если вы действительно положить ваши глаза на экран компьютера, это просто целая куча точек, несколько тысячи точек упакованы вместе там. И так, что вы собираетесь делать? Каждый из этих точек, окончательное определение, является результатом того, что это вообще называется RGB, красный, зеленый, синий, который опять же, могут быть объединены в дать вам любое количество цветов. На самом деле, если вы помните, от многих, много лет назад, Экраны для проекторов, как эти вещи Раньше у меня не один объектив, а три. Один из них выплюнуть красный свет, один из их выплюнуть зеленый свет, один из них выплюнуть синий свет. И если вы были в средней школе как я там, где они никогда не были выровнены, вы были всегда смотреть исторические фильмы которые были несколько искажены, потому что три цвета не были комбинируя должным образом. Но оказывается, что каждый из эти значения красного, зеленого и синего цветов, может иметь ряд связанных с ними. Например, 0 для красного означает отсутствие красный, 0 для зеленого означает не зеленый, и 0 для синего означает отсутствие синего цвета. Так что если у вас нет красного, нет зеленого, нет и не синий, какого цвета у вас есть? ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Вы бы надеюсь, это белый. К сожалению, это operates-- жаль? ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Так что вы на самом деле имеют черную, в этом случае. Так что если у вас нет ни одного из них цвета включен, у вас есть черный. Тем не менее, если у вас есть, скажем, много из них, как много красного, 255 из него, много зелени, и много синего, то есть белый. Таким образом, эти две крайности. Таким образом, по этой логике, если у меня есть много красного и зелёного и синего, какой цвет является то, что? ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: справа, очевидно. И тогда нет красного, много зеленый, синий нет, а затем если вы have-- хорошо, мы просто закончить это, просто потому, что, но это, конечно, Теперь, синий. И теперь вы можете комбинировать эти цвета. Теперь, как и в сторону, если любой из вас есть когда-либо делал некоторые фактические дизайн веб-сайта, Вы могли бы на самом деле см символы, как это. FFF-- и на самом деле, это вероятно, даже это не так. Это FFFFFF. Кто-нибудь видел F-е и Э и А through-- так получается, мы говорили вчера о десятичной системе, и сегодня, вроде о десятичной системе. Сегодня мы говорили о двоичной системе. Оказывается, шестнадцатеричное очень общая базовая система для использования в вычислениях. Binary два, десятичное 10, шестнадцатеричное 16. И получается, как сделать вы рассчитываете в шестнадцатеричном? Ноль, один, два, три, четыре, пять, шесть, семь, восемь, девять, что вы используете после девяти? Какой следующий номер? Мы уже привыкли к нулю. Мне нужно 16 из них. Ноль, один, два, три, четыре, пять, шесть, семь, восемь, девять, Вы нуждаетесь в некоторой произвольной конвенции. И то, что человечество решило какое-то время назад, что после того, как девять приходит письмо А, а затем B, а затем С. Таким образом, как вы рассчитывать в шестнадцатеричном равен нулю, один, два, три, четыре, пять, шесть, семь, восемь, девять, A, B, C, D, E, F, и что будет рассчитывать вы все пути, оказывается, до 15. Таким образом, от нуля до 15 равно нулю через F. Теперь почему это важно? Хорошо, когда у вас есть два F-х, вот как вы выражаете 255. Так Короче говоря, в мир Photoshop, что графический дизайн программного обеспечения, в мире веб-разработки, где у вас есть много цветов, конечно, играть, часто программисты выразить те, в шестнадцатеричной системе, только потому, что, как правило, чтобы быть немного проще. Даже если на первый взгляд это гораздо сложнее. Таким образом, в любом случае, это важно потому что Ник в Стэнфорде дал нам шесть кусков функциональности что вы, начинающие программисты, теперь будут иметь возможность использовать. Встроенный в эту сеть страница шесть функций, шесть процедур, которые Ник написал. Трое из них получит Вас номер, красный, зеленый или синий значение. Три из них будет установлено, что значение. И эти символы подчеркивания просто заполнители, так что вы должны знать, что это такое. Так что с этими тремя функциями, первый из этих вещей будет х-координат, и второй из этих вещей будет у-координат. Другими словами, которые Дот, которая пикселей вы хотите получить зеленый цвет, получить синий цвет, получить красный цвет. А потом здесь, это будет х, это будет иметь значение у, и это будет номер. Так давайте сделаем первый линия это вместе а потом я оставлю его вам чтобы попытаться вывести все остальное. Таким образом, в соответствии с инструкциями На этой странице, нам нужно увеличить красный цвет с коэффициентом 10, и нам нужно удалить зеленый и удалите синий цвет. Давайте начнем с последних сценариев. Так что, если я хочу, и я собираюсь для отступа с помощью некоторых пространств, если я хочу, чтобы установить красный, зеленый или синий значение, Я собираюсь сделать следующее. Изображение, im.setBlue, а затем основанный на моих инструкций здесь, какие три вещи я должен типа внутри скобок сейчас? Мне нужен х значения, у значение, и какое число я должен поставить здесь, если я хочу, чтобы избавиться от на ровном месте, на основе этой истории здесь? Просто ноль. Если я не хочу, не голубой, я просто собирается изменить его к нулю. Теперь давайте просто резюмировать то, что это делает. У меня есть здесь на вершине Вторая и третья строки, Я утверждал, две петли, вложенные циклы, если вы будет, что будем иметь эффект прогрессирующей слева направо, сверху вниз по всем х ценности и все значения у. Потому что опять же, картина просто сетку из строк и столбцов. Так что это собирается получить избавиться от всех синего. Позвольте мне оставить в следующей строке для вас. Как избавиться от всех зеленых? ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Ницца. ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Ницца. И я буду удалять, а просто взять заботиться о том, что вы не сделали никаких опечаток. И если вы чувствуете себя комфортно с тем, что вы сделали, идти вперед и нажмите на кнопку Выполнить / Сохранить и посмотрите, что получится. И опять же, мы сделали всего три изменения. Мы удалили, что первый комментарии и заменить его с этими двумя строками кода. И это нормально, если вам нужно попасть кнопку Выполнить / Сохранить пару раз чтобы что-то исправить. И позвольте мне также увеличить на мой код, так что вы можете транскрибировать. Хорошо. Так что я вижу Эндрю что кажется ошибкой. Он только что получил большой черный прямоугольник на его экране. Кто-нибудь еще есть большой черный прямоугольник? ЗРИТЕЛИ: Да. DAVID Маланом: Большой черный прямоугольник? ОК, так что давайте думать о том, что это значит. Мы сказали, что ноль, ноль, ноль, так что не зеленый, ни красный, ни синий, собирается дать вам черный. И получается, что большинство наших ноутбуков просто не хватает верности. Вы не можете точно сказать, есть на самом деле что-то есть. И если вы вид, может быть, наклониться ваш экран вперед и назад, может быть, вы видите кое-что там? Может быть, своего рода, своего рода? Это не совсем черный. ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Спойлер! Существует некоторый красный есть, но помните из спецификаций проблемы, Ник тонированное его вниз. Он ненасыщенный его немного, но не все пути к нулю. Так что, если мы хотим, чтобы увеличить количество красного цвета, позвольте мне предложить этот трюк. Позвольте мне увеличить на моем экране. И позвольте мне идти вперед и сказать, сумма равна im.getRed (х, у). Эта строка кода дает мне то, что называется переменной. У меня есть произвольно, но, возможно, обоснованно назвал свою переменную, что, по всей видимости? Количество. Просто сумма. Я мог бы назвать его все, что я хочу, но я используя эту другую функцию что я описал ранее чтобы получить количество красного цвета в точке х запятая у. Почему я сделал это? Что вы хотите здесь делать? Вам нужно add-- ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Да, может быть, умножить его на 10. И если вы не знаете этого, я идти вперед и делать это. Я собираюсь идти вперед и скажем, я хочу количество красного цвета Я хочу быть что угодно находится в минусе, раз 10, и звезда, звездочка на вашем клавиатура the-- не используют х. Используйте звезду. Вот как вы умножаете вещи в большинстве языков программирования. Так, по интуиции Kareem, в хранится в этой переменной называется сумма, насколько красный Я хочу, чтобы в точке ху. Как сейчас, я делаю что Пиксельные это число? Вы уже сделали это раньше. Вы устанавливаете зеленый и синего до никакого значения, к нулю. ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Да, хорошо вы не хотите его 10. Вы уже сделали математику здесь. Таким образом, мы получаем значение красного цвета, который представляет собой небольшое число, по-видимому. Мы умножая до +10. То, что вы хотите сделать с переменная величина в настоящее время? ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Ницца. Так im.set-- что? ЗРИТЕЛИ: setRed. DAVID Маланом: setRed, в точке ху. Да. И только сумма. Другими словами, переменная временный заполнитель что вы можете положить все, что вы хотите в. Мы, случается, полагая а количество в нем, в данный момент. Мы умножив его на 10, чтобы сделать его больше. И теперь я подставляя эту переменную как то третий аргумент, или введите установить красный. И так, что как только вы закончить это, и принять к сведению из точки с запятой и в скобках. Идите вперед и нажмите запустить / сохранить снова, и вы должны видеть, волшебным образом, что было на самом деле там. [? Arwa,?], Что там? Эйфелева башня в полноправных красный, не совсем темно. она должна быть более очевидным сейчас, да? ОК. И Андрей, не более черный ящик? ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Хорошо. Так что я буду держать это на экране. Если вы хотите играть с этим позже, я воссоздать это для вас. Но этот код здесь сделал именно это. Почему мы не делаем друг друга. Позвольте мне прокрутить вниз немного. Так что в этом случае, проектор на самом деле не делают это справедливость. Но на ваших экранах, вы, вероятно, имеют очень красный и очень черный ящик. Это тоже загадка, что показывает что-то известный. Тем не менее, изображение было искажено. Истинное изображение, на этот раз, является в синих и зеленых ценностей. Тем не менее, они все были разделены на 20 так что значения очень малы. Красные значения просто случайные числа, шум. Отменить эти искажения раскрыть истинный образ. Так что Ник тогда говорит вам, что делать. Установить красные значения до нуля, и то не испортит, что это такое. Затем умножьте синий и зеленые значения на 20. Так что это почти та же программа, как и раньше, но вы задним ходом процесса. И я поместит свой код из пока на экране в случае Вы хотите, чтобы вернуться к нему или играть дальше с тем. Позвольте мне увеличить на это. Но решить медный изображение головоломка, номер два. ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Хорошо, так что это один я не собирается давать столько подсказок. Так что я would-- ой, давайте Понимаете, у вас есть опечатка здесь. Так что помните, это здесь на самом деле нужно идти туда. Так что я хотел бы предложить, если вы хотите сосредоточить внимание на этом, есть ответ. Если вы хотите записать, что, что должен получить первый один рабочий. И тогда вы можете использовать его в качестве вдохновение для второй. Ницца. Хорошо. И для любопытных, это простой пример науки или искусства называется стеганография, искусство сокрытия информации в изображениях. Как правило, изображения могут быть водяными очень грубо с логотипом в нижней части угол, но ясно, что вы может быть намного более сложными об этом и на самом деле скрыть другие изображения в изображениях как-то с этой техникой. Возьмите еще 30 секунд, а затем мы по крайней мере, объявить, что вы должны увидеть. И я оставлю третий один, как в домашних условиях упражнения, если вы хотите больше из вызов в эти выходные. И я думаю, что Андрей может получили его в первую очередь. Что такое второе изображение, Эндрю? ЗРИТЕЛИ: Статуя Свободы. DAVID Маланом: Статуя Свободы будет ответом на этот раз. Так опять же, просто некоторые простые примеры, цель которых чтобы дать вам ощущение того, как мы перевели изобразительный Царапину блоки к более раздражающим и многое другое сложный код, но все идеи до сих пор точно так же, хотя и с введением Теперь понятия переменной, будучи в состоянии хранить что-то временно. Давайте сделаем еще один практический, только теперь соединяют точки к чему-то немного больше реального мира. Когда вы будете готовы, если вы могли бы перейти к этому URL на экране. Это также в свою копию слайды, developers.google.com/maps~~V. Давайте на самом деле сделать что-то реальный, так сказать, на веб-сайте с помощью API Карт Google, или интерфейс прикладного программирования, следующим образом. Google, как и многие другие компании, обеспечивает много свободного функциональности что вы можете использовать, чтобы построить свой собственные интересные приложения. На самом деле, если вы когда-либо использовали Uber, чтобы получить такси или автомобиль, Вы, наверное, знаете, что есть Uber карту, и это показывает автомобили на нем. То есть, как лучше всего, как я могу скажите, Google Maps API. Они на самом деле с помощью карт Google, но Uber не является отображением компании, и не будет, что будет Особенно интересной проблемой решить на вершине своей проблема автосервиса. И вот они стоят, опять же, на плечах других, Google в этом случае. Таким образом, они используют карты Google, но их собственные автосервисы и другие подобные функции. Итак, мы собираемся, чтобы воспользоваться это сделать следующее. И если я зашел слишком быстро, просто позвоните меня в данный момент. Счастливый резюмировать некоторые вещи изображения. Вы должны видеть себя на странице, как это. Так приятно Google, и они одними из лучших обеспечить не только API-интерфейсы, но свободные API-интерфейсы, которые вы может играть с или использовать в коммерческих целях. Они начинают, если ваше использование взимании платы высока, но я пошел вперед, заранее и подписал нас для бесплатной учетной записи что, надеюсь, 10 компьютеров не будет дисквалифицировать нас за внезапно. Таким образом, мы надеемся, это демонстрация будет работать. И заметьте, что у них есть API-интерфейсы для Android, IOS, веб, и веб-сервисы, что бы это ни. Давайте сосредоточимся на Интернете. Таким образом, нажмите на розовый ящик, веб-страниц, и что приведет вас, надеюсь, на страницу Вот. И у них есть целая куча API. И это может быть немного подавляющим сначала, но я буду направить нас через то, что мы хотим. В левом верхнем углу находится Карт Google JavaScript API, то API JavaScript. Так идти вперед и нажмите эту. И это приведет вас теперь к следующая страница, демонстрационные и примеры кода. Позвольте мне увеличить здесь. И позвольте мне заставить нас прокрутить вниз, целью которых где он говорит, что быстрые шаги запуска. Ваш экран должен выглядеть, как у меня. И есть два шага, получить ключ и приступить к разработке. Я уже сделал шаг один для нам, получая так называемую ключ. И это общая идея. Ключ API, как правило, только большое случайное число или строка что вы должны вставить в код, так что Google знает, кто ты, когда вы используете их службы, их API. Это не значит, что мы заряжается ничего. А сейчас, нажмите, вместо того, чтобы один, нажмите начать разработку. Если бы вы могли просто помахать мне более, если не уверены, где мы находимся. Таким образом, мы просто поцарапать поверхность, здесь, но то, что Я думал, что было бы убедительным это на самом деле есть все мы, используя Cloud9 в одном окне и этот учебник в другом окне, позволяет фактически получить наши собственные приложений и работает которая встраивает обычай Google карту в нашем собственном веб-странице, а затем добавляет одну или две функции. Но мы просто поцарапать поверхность того, что мы можем сделать. Так просто быстрая проверка вменяемости. Это все на этой странице, Google Maps JavaScript API? Должен сказать, начать работу. Мы не собираемся пройти через все это любыми средствами. ОК, в другой вкладке, если вы этого не сделаете открыть его, не идут в Cloud9 и получить себя только новая вкладка, в конечном счете. Так опять же, c9.io со вчерашнего дня, c9.io, и просто создать новый файл. И идти вперед и вызов это все, что вы хотите. Я назвал мое map.html. Назовите это что-нибудь заканчивается на .html. И вы должны быть примерно где я нахожусь в этом процессе только с мигающей строки в пустой вкладка под названием что-то вроде map.html. Или файл, новый файл на этот раз. А теперь, на протяжении Google Maps JavaScript API, мы пропустим чтение через весь этот текст. Но заметьте, что это привет мир на самом деле везде, вы видите его сейчас. Привет мир имеет такой большой красочный Пример целой кучей HTML. Идем дальше и скопировать и вставить только что HTML, поэтому от типа документа в верхней все пути к тесной HTML тега, перейдите вперед и скопировать все that-- снова, это под привет мир example-- и вставьте его в вашу вкладку Cloud9, так что теперь ваш экран должен выглядеть примерно как у меня. И вы можете сохранить его, но не загружать его только пока. Давайте сначала посмотрим на код и посмотреть, если мы не может вывести или узнать от того, что это Google была нам слепо копировать и вставлять. Они просто хотят, чтобы помочь, в буквальном смысле, чтобы нас начали, но там не так много сложность на самом деле есть. Есть вопросы только пока? Мы в безопасности, чтобы продвигаться вперед? ОК. Так быстро, давайте просто делать некоторые быстрые проверки здравомыслие. Линия один из того, что я см, и, надеюсь, вам Понимаете, что это значит, DOCTYPE HTML? Карима, напомнить? ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Да. Вот идет HTML 5. В то же время, линия два на Экран здесь означает, эй браузер, здесь приходит фактический HTML. Линия три является эй-браузер, здесь идет голова. Линия четыре, конечно же, эй браузер, здесь приходит название. Что линия пять делать? На самом деле, это не действительно сделать что-нибудь для нас. В этом случае он просто изменяет размеры страница к дефолту. Линия шесть, мы не говорили об этом, но это определяет кодировку. Там в различные способы кодирования файлов, особенно для иностранных языков. UTF-8 просто, как правило, по умолчанию. Так что теперь мы увидим в строке семь через 16 лет, некоторые CSS. И несмотря на то, что мы не видели все эти вещи раньше, мы можем сделать вывод, своего рода. Так линия восемь средств, эй браузер, применить все следующие, к которым два тега, по всей видимости? HTML и тело текста. Так запятая новая вещь есть. И это просто способ указав несколько тегов сразу. Тогда у нас есть фигурные скобки. Так что, по-видимому, это говорит браузеру, сделать высоту страницы 100%. Так что даже если есть очень мало содержание, сделать всю страницу, сделать вещь заполнения страницы. Сделать карту в конечном счете, заполнения страницы. Маржа, что это значит? Это, как правило, как произвольное белое пространство по краям что некоторые браузера дизайнер просто решил должен быть там, потому что вид делает вещи выглядят чище. Но мы не хотим этого. Мы хотим, чтобы карта собирается все пути к краям. Перетяжка, сходны по духу с окраин. Поля означают снаружи, средства обивка внутри, но это тот же самый вид сделки. Это немного буфера между вами и краями. И тогда линия 13 является хорошим шанс для быстрого обзора. Что делает резкий знак карты значит, или хэштегом карта означает? Что означает, что относятся, в принципе? ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Совершенно верно. Это свойство, это свойство CSS относится к только одной вещи, тег HTML что имеет идентификатор цитаты, Unquote "карте". А теперь давайте быстро вперед, прокрутки вплоть до нижней части файла, который не слишком далеко, и уведомление о линии 19, если вставить его в точности, как я сделал, строка 19 имеет только DIV, который является раздел страницы, который я вчера называется прямоугольная область. Это не имеет ничего в нем. Это открытый тег, закрывающий тег. Но у него есть уникальный идентификатор. Так что, как представляется, что здесь происходит Google готовит нашу веб-страницу имеют полную высоту 100%, и без отступов, без полей, потому что то, что мы собираемся положить внутрь этого DIV, уникальный идентификатор карта, является актуальной встроенной карты. И мы хотим, чтобы заполнить страницы, а не только быть какой-то маленький прямоугольник в центре. Таким образом, линия 14 так же подчеркивает, то карта сама должна иметь высоту 100%. Так что теперь заметить между линиями 20 и 28, это JavaScript код. И это, даже если это синтаксически немного странно, там не все, что многое здесь происходит. В строке 21, это объявляет то, что называется переменной. Вместо того, чтобы называть его составляет, как мы это делали раньше, мы более точно говоря переменная, которая просто означает переменную. Мы могли бы использовать, что в код Ника, но он этого не сделал, так что я не потрудился делать это либо. Это переменная называется карту, а затем есть функцию, которая по-видимому, называется initMap. Так что это как наш собственный пользовательский кусок головоломки в пустом месте. Мы создали кусок Функциональность называется initMap, и вы можете отчасти сделать вывод что тут происходит. Слева, у нас есть переменная, поэтому мы собираемся поставить следующее вещь внутри этой переменной, справа налево. Правая рука говорит, эй браузер, дайте мне новую карту Google. И google.maps.Map это просто обалденный способ указания, что эта функциональность принадлежит Google Maps. После того, как в скобках, мы уже видели это раньше, эй браузер, получить мне элементы на странице, то тег на странице, чей уникальный идентификатор is-- ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: --map. А что происходит, ну, эта линия вместе, строка 23, по сути говоря, эй браузер, иди со мной что пустой DIV на странице чей уникальный идентификатор карты, потому что я хочу, чтобы вставить в it-- впрыснуть в него, если вы will-- целую кучу контента что случается, приходит из Интернета, впоследствии. И Google, делать все, что для нас. Итак, еще раз, в самом конце дня, у нас есть этот пример абстракции. Я понятия не имею, что такое карта или как реализовать карту API. Нам не нужно. Нам просто нужно сказать карту где поставить себя, и оставить лежащие в основе реализации детали к Google. В настоящее время существует, по-видимому две части данных что этот пример предоставление в API Google. По-видимому, центр карты, и уровень масштабирования, так сказать. И кто-нибудь распознать их координаты, широта и долгота? Скорее всего, нет, но мы можем вернуться в учебнике, в буквальном смысле видеть. Но мы увидим его в мгновение. Уровень масштабирования является значение между, я не знаете, один в 13 или что-то в этом роде. Это просто нужно сделать с тем, как далеко вы сжата или растянута, и это все. И теперь в самом конце страница, уведомление линии 29-- это немного некрасиво, потому что она wraps-- эту строку кода что загружает к браузер фактической API Google. Весь код, что компании Google инженеры написали, реализующие Вся эта особенность вложимых карт. Теперь давайте ничего не изменится. Если вы следуете, идти вперед и просто сохраните этот файл, если у вас действительно есть что у меня есть. Перейти к его URL. Вы можете нажать кнопку Run наверху и что скажет Вам URL вашего веб-сервера снова. И это приведет вас к новой вкладке. Если для Вас нажмите кнопку Открыть map.html, и шансы вы собирается получить предупреждение, сообщение об ошибке, да? Сообщение об ошибке, сообщения об ошибках? Таким образом, к сожалению, ошибка сообщение не то, что просветительская если вы на самом деле не открыть Консоль, что вкладка специальный мы открывал вчера и чуть раньше сегодня. Но я наткнулся это раньше, так что я уже понял, что решение. В сегодняшних слайдов, или скорее, в Cloud9, уведомление что мы не делали что-то намеренно. Обратите внимание на то, что этот сценарий тег строка 29, если вы прочитаете его, это как maps.googleapis.com/~~pobj что-то, что-то, что-то, обратите внимание на то кто-то, один из разработчиков, пишет во всей столице письма, ваш ключ API. Нам нужно вставить что-то там. И это был шаг Я сделал для нас прежде, и снова они могли бы черный список нам, если вдруг, 12 или больше из нас начать использовать один и тот же ключ, но давайте посмотрим, что произойдет. Так что если вы идете в сегодняшних слайды, один слайд позже, есть это очень обалденный вид строки текста. Идите вперед и просто скопировать, что и вставить его, где он говорит, что ваш ключ API. Это тот, который я подписался на. И, безусловно, не пытайтесь набрав его вручную, потому что он чувствует себя таит в себе с опечатками, потенциально. Так просто скопировать и вставить это. И это собирается сделать линию больше, но сейчас, просто чтобы быть ясно, она должна выглядеть немного больше как это, где ключ не равен капитализируются кричать на вас. Сохраните страницу, вернитесь назад на вкладку другой, перезагрузить, и надеемся увидеть карту, где? ЗРИТЕЛИ: Австралия. DAVID Маланом: Австралия. Так что, по-видимому, являются те, GPS-координаты Австралии. И позвольте мне ходить на мгновение и помочь всем, кто не совсем там, но позвольте мне предложить, с помощью Google, найти GPS-координаты вашего родного города или ваш собственный родной стране. И, вероятно, Google может превратить это вверх или Wikipedia может сказать вам. Но выбрать два различных значения для широты и долготы, вернуться и вставить их, и Затем перезагрузите страницу после сохранения и посмотреть, если вы можете иметь карта для вашего родного города. А когда вы закончите с что последующая деятельность challenge-- и я дам немного меньше направление, сознательно, так что вы сознательно придется бороться за пару минут с документацией, изменить карту, чтобы быть не в этом мультяшным по умолчанию, но спутниковая карта. Так что вы на самом деле видите спутник образы вместо красивых цветов. И намек я дам вам это изменить тип карты. Вернуться к тому, что получение начал страницу для вдохновения. Как вы почерпнули, если вы ищете, Есть так много больше вещи, которые вы можете сделать. Некоторые из вас уже изменен тип карты. Но вы можете do--, например, позвольте мне перейти к чему-то мы сделали для курса Я teach-- maps.cs50.net. Один из наших старшекурсников сделал это. Мы центрирования нашу карту над Harvard Yard и Наложение всех этих названий зданий, и мы должны были его добавить это. Так что, если я хочу, чтобы искать, например, Мэттьюз зал, у нас есть немного выпадающее меню. И я думаю, что он использует Bootstrap, в Библиотека мы обсуждали ранее для этого. И если вы нажмете на Matthews Холл, он немедленно прыжки карту к определенному расположение, и это показывает, вы картина в этом маленьком всплывающем окне. Но даже эта маленькая всплывающих окон, мы не реализовали. Если я прокрутите вниз на нашем получении начал страницу и искать информационные окна, вы увидите, что некоторые из функциональность вы сами можно добавить, хотя и с немного больше сложности, нечто, называемое информационное окно. И если я нажимаю пример здесь, и это то, что интересно, вы можете сделать что-то вроде этого, нажав на маркер, а затем вуаля, информация всплывает. Таким образом, мы не совсем введены достаточно особенности JavaScript чтобы нарисовать картину того, как именно вам может подключить все эти вещи вместе, но мы-то поцарапал поверхность. На самом деле, что я только что сделал, когда Я нажал на этот маркер, был вызывая событие, так называемое на событие щелчка. И мы на самом деле увидел событие ранее сегодня, так называемый представить событие, когда мы предотвращали пользователь от поиска для кошек. Итак, мы выбрали вид и выбрал из числа всех этих различных функций, чтобы дать вам ощущение того, мы надеемся, о том, что вы можете на самом деле делать с немного больше комфорт в программировании, и полностью свободные ресурсы. Любые вопросы? Нет? Это ваш последний шанс, по крайней мере сегодня, в пятницу, чтобы получить что-нибудь от груди так что ты выходишь отсюда чувствуя себя уверенно и комфортно. Да. ЗРИТЕЛИ: Почему не Вы добавляете еще одну вещь? DAVID Маланом: О, боже мой. Мне нужно, чтобы отдохнуть в эти выходные, я думаю. Другие вопросы? ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Вы в can-- Internet Explorer, в остальном мире, вы использовали, чтобы иметь возможность поставить VB Сценарий, виртуальный базовый сценарий, но это на самом деле никогда не прижился. Поэтому короткий ответ просто JavaScript. Другие вопросы? Хорошо, ну, позвольте мне сделать это. Позвольте мне захватить с нашими коллегами за пределами. Они имеют некоторую оценку формы, которые они хотят, чтобы все чтобы провести несколько минут заполнения. Они хотят, чтобы собрать эту форму и любые отказы, которые вы могли бы иметь снаружи. Они также будут иметь сертификаты. Я предполагаю, что есть еще некоторые закуски снаружи. Позвольте мне передать их, и если вам есть какие-либо вопросы в то же время, Я буду ходить вокруг более индивидуально и мы можем вам начать. Да, конечно. ЗРИТЕЛИ: [неразборчиво] DAVID Маланом: Это как правило, правда, в эти дни. Конечно, с веб программное обеспечение, вы полагаетесь на других вы либо эстетически используя вещи как Bootstrap, так что вы не должны реализовать низкий уровень Подробная информация о меню и кнопки и все такое. Вы, опираясь на кого-то как Google, так что вы не должны строить Uber бизнес и отображение бизнес, и любое количество подобное приложений, а также. На самом деле, логины популярны, тоже. Если вы использовали Spotify или любое количество веб-сайтов, вы будете войти в некоторые сайтов с помощью Facebook. Так что хорошо, там являются API-интерфейсы для входа в систему в настоящее время, так что вы не имеете чтобы иметь свой собственный стол пользователей и все вашей собственной базы данных обязательно в той же степени. Вы можете позволить Facebook сделать все из этой сложности для вас. Так что это захватывающее время, если честно, в программировании, потому что есть так много третья сторона услуги, которые вы можете построить на вершине. И опять же, цена, которую вы платите либо финансовых или времени простоя. Если Google идет вниз, так что делает Uber, возможно, но, возможно, что это разумный компромисс. И опять же, это было одной из тем, Будем надеяться, что за последние пару дней, эти компромиссы. И редко там происходит чтобы быть правильным ответом. Это на самом деле, тем лучше из двух или более ответов. Передайте их вокруг. И эти счета Cloud9 будет продолжаться работать, в теории, на неограниченный срок. Вы можете обнаружить, если вы будете ждать несколько дней или в неделю или больше, чтобы снова войти в них, это может занять как один или пять минут, чтобы открыть обратно вверх, но это только потому, что они положили в спящий режим, чтобы сэкономить ресурсы.