1 00:00:00,000 --> 00:00:00,060 2 00:00:00,060 --> 00:00:01,560 >> DAVID MALAN: Tudo bem, estamos de volta. 3 00:00:01,560 --> 00:00:03,830 Assim, para o emocionante Concluindo, a nossa última seção 4 00:00:03,830 --> 00:00:06,900 em programação web, que eu pensei que iria usar como um termo geral 5 00:00:06,900 --> 00:00:08,440 para capturar alguns tópicos restantes. 6 00:00:08,440 --> 00:00:10,390 Assim, no final do dia, vamos realmente fazer 7 00:00:10,390 --> 00:00:14,830 um pouco de hands-on de programação web com uma linguagem chamada JavaScript. 8 00:00:14,830 --> 00:00:17,510 E eu acho que nós vamos dar uma olhada em algo relacionado a imagens 9 00:00:17,510 --> 00:00:20,040 e descobrindo algo secretamente escondida em uma imagem, 10 00:00:20,040 --> 00:00:23,230 e também dar uma olhada no Google API do Google Maps, de programação de aplicativo 11 00:00:23,230 --> 00:00:26,040 interface, como algo representante do tipo de software 12 00:00:26,040 --> 00:00:28,800 que é cada vez mais e livremente disponível hoje. 13 00:00:28,800 --> 00:00:32,029 >> Mas por que não dar uma olhada em um ingrediente para este mundo 14 00:00:32,029 --> 00:00:34,070 que nós tipo de estado dando por certo existe 15 00:00:34,070 --> 00:00:36,720 durante algum tempo, uma base de dados. 16 00:00:36,720 --> 00:00:39,150 Para o dia passado e meio que já assumiu 17 00:00:39,150 --> 00:00:42,910 que temos acesso a um banco de dados, mas o problema é que um banco de dados de resolver? 18 00:00:42,910 --> 00:00:45,540 O que ele faz por nós? 19 00:00:45,540 --> 00:00:47,030 O que é isso? 20 00:00:47,030 --> 00:00:48,679 >> AUDIÊNCIA: [inaudível] 21 00:00:48,679 --> 00:00:51,720 DAVID MALAN: Contém todas as informações, OK, e que tipos de informações 22 00:00:51,720 --> 00:00:53,186 pode você colocar nele? 23 00:00:53,186 --> 00:00:54,590 >> AUDIÊNCIA: [inaudível] 24 00:00:54,590 --> 00:00:56,450 >> DAVID MALAN: Qualquer informação você colocar nele, você vai voltar. 25 00:00:56,450 --> 00:00:57,070 Isso é verdade. 26 00:00:57,070 --> 00:01:01,900 E em um site baseado na web típico ou web aplicação, que tipos de informações, 27 00:01:01,900 --> 00:01:03,385 Especificamente, você pode colocar em? 28 00:01:03,385 --> 00:01:04,260 AUDIÊNCIA: [inaudível] 29 00:01:04,260 --> 00:01:05,051 DAVID MALAN: Usuários. 30 00:01:05,051 --> 00:01:07,000 Assim que é um usuário? 31 00:01:07,000 --> 00:01:09,765 >> AUDIÊNCIA: [inaudível] 32 00:01:09,765 --> 00:01:11,640 DAVID MALAN: OK, registrado usuário do site. 33 00:01:11,640 --> 00:01:15,100 E o que significa Information Store 'usuários? 34 00:01:15,100 --> 00:01:17,260 O que compõe um usuário? 35 00:01:17,260 --> 00:01:18,331 Um usuário tem o quê? 36 00:01:18,331 --> 00:01:19,206 AUDIÊNCIA: [inaudível] 37 00:01:19,206 --> 00:01:21,040 DAVID MALAN: Sim, pessoal de dados, e eu gosto disso. 38 00:01:21,040 --> 00:01:21,970 Vamos ser mais preciso. 39 00:01:21,970 --> 00:01:25,275 Assim, um usuário normalmente tem um nome, o que mais pode um usuário têm? 40 00:01:25,275 --> 00:01:26,150 AUDIÊNCIA: [inaudível] 41 00:01:26,150 --> 00:01:29,130 DAVID MALAN: An OK addr--, Então, primeiro nome, sobrenome. 42 00:01:29,130 --> 00:01:29,630 Isso é bom. 43 00:01:29,630 --> 00:01:31,463 Na verdade, vamos consertar isso, porque ele vai 44 00:01:31,463 --> 00:01:35,010 para abrir-se para uma oportunidade discussão, ainda, mais longe. 45 00:01:35,010 --> 00:01:39,090 Primeiro nome, último nome, sexo. 46 00:01:39,090 --> 00:01:41,820 47 00:01:41,820 --> 00:01:43,481 Um ID de algum tipo. 48 00:01:43,481 --> 00:01:43,980 O quê mais? 49 00:01:43,980 --> 00:01:45,438 Eu ouvi outra coisa antes, também. 50 00:01:45,438 --> 00:01:51,600 Um e-mail, endereço postal. 51 00:01:51,600 --> 00:01:58,170 >> Então, vamos fazer uma pausa lá e agora considerar não o que está armazenando no banco de dados, 52 00:01:58,170 --> 00:02:01,980 Mas-- e por que não, uma vez que é, talvez, evidente que uma vez que você registrar um usuário, 53 00:02:01,980 --> 00:02:03,730 você quer lembrar-los por algum tempo. 54 00:02:03,730 --> 00:02:05,480 Você não quer que ele apenas ser armazenado na RAM 55 00:02:05,480 --> 00:02:08,690 e ser assim forgotten-- vamos nos concentrar em como. 56 00:02:08,690 --> 00:02:11,700 >> Acontece que em o mundo dos bancos de dados, 57 00:02:11,700 --> 00:02:14,410 há pelo menos dois tipos estes dias. 58 00:02:14,410 --> 00:02:20,010 Algo chamado um banco de dados SQL, Structured Query Language, 59 00:02:20,010 --> 00:02:24,770 ou, de maneira fofa nomeado, NoSQL, que não é SQL. 60 00:02:24,770 --> 00:02:26,980 E o último é um exemplo do que pode 61 00:02:26,980 --> 00:02:30,660 ser chamado de uma orientada a objetos, ou um armazenamento de objeto, um banco de dados 62 00:02:30,660 --> 00:02:36,010 que armazena objetos, e não, desculpa mim, como veremos em breve, linhas. 63 00:02:36,010 --> 00:02:41,800 >> Então, vamos nos concentrar por um momento em O primeiro destes, a saber, um SQL 64 00:02:41,800 --> 00:02:46,850 banco de dados, se só porque é tão familiar já, a ninguém 65 00:02:46,850 --> 00:02:51,070 que tenha usado o Excel ou Folhas do Google ou a Apple 66 00:02:51,070 --> 00:02:53,740 Números ou qualquer padrão programa de planilha, 67 00:02:53,740 --> 00:02:56,040 ou, de forma equivalente, ou mais sofisticada, 68 00:02:56,040 --> 00:02:58,610 algo como Microsoft Acesso ou Oracle 69 00:02:58,610 --> 00:03:03,890 ou MySQL ou PostgreSQL, todos os quais são nomes de produtos para implementações 70 00:03:03,890 --> 00:03:04,865 da seguinte idéia. 71 00:03:04,865 --> 00:03:10,350 >> Um banco de dados relacional é simplesmente algo que tem linhas e colunas. 72 00:03:10,350 --> 00:03:12,850 E por linhas e colunas, Eu literalmente significar algo 73 00:03:12,850 --> 00:03:21,860 como este, por isso, onde nós pode ter a nome de um campo e seu tipo aqui. 74 00:03:21,860 --> 00:03:25,800 E, na verdade, deixe-me agora começar a mapear estes. 75 00:03:25,800 --> 00:03:29,420 Então, na verdade, eu não sei por isso que eu desenhei um gráfico separado. 76 00:03:29,420 --> 00:03:30,780 Vamos manter este simples. 77 00:03:30,780 --> 00:03:34,830 >> Temos aqui a primórdios da nossa mesa, onde 78 00:03:34,830 --> 00:03:40,150 este é o nome do campo e este é o tipo de dados, 79 00:03:40,150 --> 00:03:41,660 e por tipo quero dizer o seguinte. 80 00:03:41,660 --> 00:03:45,510 É um número, é uma cadeia, uma corda curta como uma palavra, 81 00:03:45,510 --> 00:03:49,340 é um parágrafo, é dados binários, como uma imagem? 82 00:03:49,340 --> 00:03:51,980 E vamos provocar este separados por apenas um momento. 83 00:03:51,980 --> 00:03:57,575 Então, primeiro nome, número, corda, grande pedaço de texto-- 84 00:03:57,575 --> 00:03:58,450 AUDIÊNCIA: [inaudível] 85 00:03:58,450 --> 00:03:59,616 DAVID MALAN: Sim, por isso string. 86 00:03:59,616 --> 00:04:04,744 E em um contexto de banco de dados, nós vamos normalmente chamar este campo caractere. 87 00:04:04,744 --> 00:04:07,660 Vou apenas dizer carvão para agora, mas estamos indo para refinar isso em um momento. 88 00:04:07,660 --> 00:04:09,180 campo de caracteres. 89 00:04:09,180 --> 00:04:11,365 Último nome é provavelmente o mesmo. 90 00:04:11,365 --> 00:04:11,865 Gênero? 91 00:04:11,865 --> 00:04:16,230 92 00:04:16,230 --> 00:04:18,310 >> Homem ou mulher, por isso, poderia ser um campo carvão animal. 93 00:04:18,310 --> 00:04:21,380 Poderia ser qualquer citação, fecha aspas "Macho" ou citação, fecha aspas "feminino" 94 00:04:21,380 --> 00:04:23,650 ou pode ser ou f m. 95 00:04:23,650 --> 00:04:26,540 Se você quer ser mais inclusiva, você pode precisar de um terceiro valor 96 00:04:26,540 --> 00:04:28,640 ou algum tipo de outro campo completamente. 97 00:04:28,640 --> 00:04:31,350 E assim você poderia usar verdadeiro falso. 98 00:04:31,350 --> 00:04:35,036 O campo poderia ser chamado de sexo masculino, e em seguida, você poderia dizer verdadeiro ou falso. 99 00:04:35,036 --> 00:04:38,160 Mas isso não significa necessariamente capturar todas as informações que você pode querer. 100 00:04:38,160 --> 00:04:41,118 >> Então não é que há um outro tipo de campo que pode ser útil aqui 101 00:04:41,118 --> 00:04:46,040 numa base de dados típico, denominado enum, onde é um campo de caracteres, 102 00:04:46,040 --> 00:04:50,480 mas você, o designer, chegar a enumerar os valores possíveis, 103 00:04:50,480 --> 00:04:54,630 como citação, "macho" fecha aspas, citações, unquote "feminino" e assim por diante. 104 00:04:54,630 --> 00:04:57,620 De modo que qualquer valor está na sua base de dados, 105 00:04:57,620 --> 00:05:00,670 é realmente baseado em caracteres, mas que tem de ser um daqueles valores. 106 00:05:00,670 --> 00:05:03,520 É provável que não quer um enum para o primeiro ou último nome. 107 00:05:03,520 --> 00:05:05,630 Caso contrário, teríamos para enumerar, como o nome 108 00:05:05,630 --> 00:05:09,570 deriva, literalmente todos os possível primeiro nome e sobrenome. 109 00:05:09,570 --> 00:05:13,960 >> OK, então ID que deve um ID ser? 110 00:05:13,960 --> 00:05:15,200 Sim, talvez por isso um número. 111 00:05:15,200 --> 00:05:17,870 Então, vamos ficar com que, por enquanto, número. 112 00:05:17,870 --> 00:05:22,010 E por número, o número é um pouco demasiado ampla agora. 113 00:05:22,010 --> 00:05:23,900 Para o final do segundo dia, eu sinto que nós 114 00:05:23,900 --> 00:05:25,280 deve ser um pouco mais precisa. 115 00:05:25,280 --> 00:05:29,280 Número poderia dizer como, é Poderia ser algo como 1.236. 116 00:05:29,280 --> 00:05:31,500 E isso não é provavelmente o que entendemos por um ID. 117 00:05:31,500 --> 00:05:34,635 O que nós provavelmente quer dizer com um ID? 118 00:05:34,635 --> 00:05:36,382 >> AUDIÊNCIA: [inaudível] 119 00:05:36,382 --> 00:05:38,590 DAVID MALAN: Oh, OK, então talvez não seja mesmo um número. 120 00:05:38,590 --> 00:05:42,840 Talvez seja realmente um identificador exclusivo que é uma string, como um nome de usuário. 121 00:05:42,840 --> 00:05:44,580 Então, absolutamente, pode ser. 122 00:05:44,580 --> 00:05:46,730 Eu acho que alguém, provavelmente, significava numérico, embora. 123 00:05:46,730 --> 00:05:48,460 Então, vamos ficar com isso. 124 00:05:48,460 --> 00:05:49,320 Que tipo de número? 125 00:05:49,320 --> 00:05:51,960 O que é um mais precise-- um inteiro. 126 00:05:51,960 --> 00:05:56,710 Assim, um número como 0, 1, 2, 3, por isso vamos chamar isso de um inteiro. 127 00:05:56,710 --> 00:05:58,909 E mesmo assim, eu poderia ser picuinhas, é 128 00:05:58,909 --> 00:06:00,700 não é realmente apenas um integer geral que quiser. 129 00:06:00,700 --> 00:06:04,340 Você provavelmente não quer valores negativos, apenas porque, ele só se sente estranho. 130 00:06:04,340 --> 00:06:06,070 Você provavelmente quer inteiros positivos. 131 00:06:06,070 --> 00:06:07,920 Então você também pode expressar que numa base de dados, 132 00:06:07,920 --> 00:06:09,450 mas por agora, vamos dizer inteiro. 133 00:06:09,450 --> 00:06:10,650 >> O email? 134 00:06:10,650 --> 00:06:13,550 Este é provavelmente só-- o quê? 135 00:06:13,550 --> 00:06:14,460 >> AUDIÊNCIA: [inaudível] 136 00:06:14,460 --> 00:06:16,980 >> DAVID MALAN: É um e-mail, mas isso é caracteres, certo? 137 00:06:16,980 --> 00:06:19,813 Ele só tem um caráter descolados como um símbolo "arroba" ou qualquer outra coisa, 138 00:06:19,813 --> 00:06:21,580 mas ainda é um campo de caracteres. 139 00:06:21,580 --> 00:06:23,900 E endereço postal? 140 00:06:23,900 --> 00:06:25,360 campo de caracteres. 141 00:06:25,360 --> 00:06:31,400 Então isso é um bom começo, mas vamos ser um pouco mais preciso agora. 142 00:06:31,400 --> 00:06:34,540 >> Assim, verifica-se que em um banco de dados, muitas vezes você 143 00:06:34,540 --> 00:06:39,120 tem uma escolha sobre o mais refinado versões dessas coisas. 144 00:06:39,120 --> 00:06:44,330 De fato, em um banco de dados SQL típica, SQL, ou, mais geralmente, banco de dados relacional, 145 00:06:44,330 --> 00:06:46,680 bancos de dados com linhas e colunas, muitas vezes você 146 00:06:46,680 --> 00:06:53,610 chegar ao especificar não só do tipo de a field-- deixe-me fazer algum espaço aqui-- 147 00:06:53,610 --> 00:06:56,600 mas também o comprimento. 148 00:06:56,600 --> 00:06:59,900 >> Então, quanto tempo é um primeiro nome? 149 00:06:59,900 --> 00:07:07,060 Eu acho que, D-A-V-I-D. OK, entendeu I provavelmente apenas ofendido como metade 150 00:07:07,060 --> 00:07:11,260 das pessoas na sala, direita, desde que seus nomes são mais do que cinco 151 00:07:11,260 --> 00:07:16,608 letras, então cinco parece um pouco egoísta e ingênuo, então o que é um valor melhor? 152 00:07:16,608 --> 00:07:19,320 153 00:07:19,320 --> 00:07:24,330 10, tudo bem, e eu acho que estamos bem no quarto. 154 00:07:24,330 --> 00:07:26,254 13? 155 00:07:26,254 --> 00:07:27,541 30? 156 00:07:27,541 --> 00:07:29,540 Por que não tomar a abordagem de antes, quando nós 157 00:07:29,540 --> 00:07:31,081 estavam falando sobre matrizes e memória? 158 00:07:31,081 --> 00:07:32,450 Por que eu não apenas dizer como 1000? 159 00:07:32,450 --> 00:07:35,260 nome de ninguém vai para ser mais longo do que 1000. 160 00:07:35,260 --> 00:07:36,706 Empurrar para trás. 161 00:07:36,706 --> 00:07:38,005 >> AUDIÊNCIA: [inaudível] 162 00:07:38,005 --> 00:07:40,130 DAVID MALAN: Sim, é desperdício, à direita, especialmente 163 00:07:40,130 --> 00:07:44,630 se a maioria dos nomes são apenas cinco ou 10 ou 15 caracteres, isso é muito dispendioso. 164 00:07:44,630 --> 00:07:45,810 Então você sabe o quê? 165 00:07:45,810 --> 00:07:48,020 Este é tipo de uma pergunta difícil. 166 00:07:48,020 --> 00:07:51,721 Agora, certamente podemos analisar Inglês e nomes de qualquer outra língua 167 00:07:51,721 --> 00:07:54,470 e descobrir, assim, qual é a média média-- realmente não 168 00:07:54,470 --> 00:07:57,150 ajudar US-- o que é o máximo é provavelmente o que realmente queremos. 169 00:07:57,150 --> 00:07:59,920 Mas acontece que temos até alguma escolha sobre o tipo aqui. 170 00:07:59,920 --> 00:08:03,400 >> Em um banco de dados SQL típico, você ter algo chamado um campo de char 171 00:08:03,400 --> 00:08:07,505 e também um VARCHAR, V-A-R, para o campo de char variável. 172 00:08:07,505 --> 00:08:08,630 E a diferença é esta. 173 00:08:08,630 --> 00:08:12,400 Um campo char, você o designer, tem que especificar antecipadamente 174 00:08:12,400 --> 00:08:14,900 o comprimento exacto do campo. 175 00:08:14,900 --> 00:08:20,530 Então, talvez o primeiro nome como 20 sente tipo de seguro. 176 00:08:20,530 --> 00:08:23,950 Pode ter que fazer algum googling para ver se isso é realmente seguro o suficiente. 177 00:08:23,950 --> 00:08:26,910 Há provavelmente um nome com 21 caracteres, mas por agora, suponha que 20 178 00:08:26,910 --> 00:08:27,620 é seguro. 179 00:08:27,620 --> 00:08:30,070 >> Um campo de char implicaria numa base de dados que lhe 180 00:08:30,070 --> 00:08:33,289 estão utilizando 20 e sempre 20 caracteres. 181 00:08:33,289 --> 00:08:37,419 Agora, se é só D-A-V-I-D, 15 dos são apenas vai ser caracteres em branco, 182 00:08:37,419 --> 00:08:40,450 mas você ainda está usando todos os 20 bytes. 183 00:08:40,450 --> 00:08:46,302 Um campo VARCHAR, pelo contrário, entende-se a string deve ser de até 20 caracteres 184 00:08:46,302 --> 00:08:48,260 mas se é apenas cinco, você só vai usar 185 00:08:48,260 --> 00:08:51,270 cinco, ou talvez seis para um valor especial no final, 186 00:08:51,270 --> 00:08:54,980 assim 0 discutimos que significa o fim de um carácter 187 00:08:54,980 --> 00:08:56,790 sequência na memória. 188 00:08:56,790 --> 00:08:59,950 >> Então, quando você pensa você pode escolher de char 189 00:08:59,950 --> 00:09:05,240 contra varchar, dado que trade-off? 190 00:09:05,240 --> 00:09:09,321 Char usa que muitos personagens, varchar não utiliza mais do que muitos caracteres. 191 00:09:09,321 --> 00:09:10,196 AUDIÊNCIA: [inaudível] 192 00:09:10,196 --> 00:09:13,859 193 00:09:13,859 --> 00:09:16,900 DAVID MALAN: OK, quando você sabe o comprimento da corda muito convincente 194 00:09:16,900 --> 00:09:19,316 usar apenas char, porque se conhecê-lo, basta colocá-lo para baixo. 195 00:09:19,316 --> 00:09:23,390 E talvez isso é verdade para um zip código, em os EUA, pelo menos, 02138, 196 00:09:23,390 --> 00:09:26,660 ele está sempre vai ser de cinco caracteres até que você adicione o traço quatro. 197 00:09:26,660 --> 00:09:29,750 Mas você pode ter alguns valores para que você sempre sabe o comprimento. 198 00:09:29,750 --> 00:09:32,310 Ou talvez símbolos do Estado, como NY em Nova York, 199 00:09:32,310 --> 00:09:33,811 e MA para Massachusetts em os EUA. 200 00:09:33,811 --> 00:09:36,560 Talvez você tem algumas situações onde isso é totalmente razoável, 201 00:09:36,560 --> 00:09:39,520 mas por essa lógica, por que Nós até cismar isso? 202 00:09:39,520 --> 00:09:41,800 Por que nós não apenas usar varchar e, em seguida, vamos apenas 203 00:09:41,800 --> 00:09:46,730 sempre use dois caracteres de qualquer maneira, ou use sempre cinco caracteres de qualquer maneira? 204 00:09:46,730 --> 00:09:50,300 Por que não apenas salvar varchar para tudo, por essa lógica? 205 00:09:50,300 --> 00:09:51,677 Deve haver um prendedor. 206 00:09:51,677 --> 00:09:52,552 AUDIÊNCIA: [inaudível] 207 00:09:52,552 --> 00:09:54,952 208 00:09:54,952 --> 00:09:56,660 DAVID MALAN: Poderia escrever algo errado. 209 00:09:56,660 --> 00:09:58,090 Então, isso é verdade. 210 00:09:58,090 --> 00:10:01,030 Mas, mesmo assim, eles não podem usar mais memória do que eu alocar. 211 00:10:01,030 --> 00:10:03,340 Eu ainda tenho a final dizer ao longo do comprimento, 212 00:10:03,340 --> 00:10:06,780 então eles não podem acidentalmente fazer esse erro, mas um bom pensamento. 213 00:10:06,780 --> 00:10:10,510 É mais sutil, mas é muito relacionada para a nossa discussão, na verdade, de matrizes 214 00:10:10,510 --> 00:10:12,390 e listas ligadas anteriormente. 215 00:10:12,390 --> 00:10:16,290 >> Acontece que um banco de dados, se sabe-se que todos os valores sejam 216 00:10:16,290 --> 00:10:19,250 de um comprimento fixo, mesmo se alguns desses valores estão em branco, 217 00:10:19,250 --> 00:10:22,484 tipo de estética em branco, D-V-A-I-D e em seguida, 15 vazios, 218 00:10:22,484 --> 00:10:24,650 verifica-se que se cada campo é o mesmo comprimento, 219 00:10:24,650 --> 00:10:28,670 bem como uma série teve todo o seu material de costas para trás para trás, como se 220 00:10:28,670 --> 00:10:33,480 você poderia apenas mais 1 para chegar ao próximo valor, mesma idéia em uma tabela de banco de dados. 221 00:10:33,480 --> 00:10:37,550 Se todos o seu personagem strings são o mesmo comprimento, 222 00:10:37,550 --> 00:10:39,390 você tem o que é chamado de acesso aleatório. 223 00:10:39,390 --> 00:10:41,850 Se todas as cordas são de comprimento de 20, você não apenas 224 00:10:41,850 --> 00:10:45,230 fazer mais 1 você acabou de fazer mais 20, mais 20, mais 20, mais 20, 225 00:10:45,230 --> 00:10:48,775 e você pode muito rapidamente percorrer ou busca através de todos os seus dados. 226 00:10:48,775 --> 00:10:54,420 >> Um campo de char variável, pelo contrário, nem sempre tem 20 caracteres. 227 00:10:54,420 --> 00:10:58,000 Ele pode ter 20 e, em seguida, 15 e, em seguida, 19 e, em seguida, 10, 228 00:10:58,000 --> 00:11:00,720 e por isso, se você deseja pesquisar através dele, você não pode apenas cega 229 00:11:00,720 --> 00:11:03,050 adicionar 20 bytes para chegar ao próximo. 230 00:11:03,050 --> 00:11:07,280 Você literalmente tem que pesquisar porque a borda da estrutura de dados, 231 00:11:07,280 --> 00:11:08,340 se quiserem, é irregular. 232 00:11:08,340 --> 00:11:11,480 É o tipo de entra e sai base no comprimento real da cadeia. 233 00:11:11,480 --> 00:11:14,460 Então, quando você sabe o comprimento, como Kareem diz, use um campo char, 234 00:11:14,460 --> 00:11:16,460 porque você ganha aquela eficiência de ser 235 00:11:16,460 --> 00:11:19,170 capaz de pesquisar através lo mais rápido quando você está olhando para os dados, 236 00:11:19,170 --> 00:11:20,550 caso contrário, use uma variável. 237 00:11:20,550 --> 00:11:24,450 >> Infelizmente, eu não tenho uma boa resposta a quanto tempo o nome deve ser, 238 00:11:24,450 --> 00:11:26,360 mas para algo como um nome, eu diria 239 00:11:26,360 --> 00:11:28,470 um varchar é comum porque ele não vai 240 00:11:28,470 --> 00:11:30,430 ser um comprimento fixo para todos. 241 00:11:30,430 --> 00:11:33,650 20, eu não sei, 20 sente um pouco apertado. 242 00:11:33,650 --> 00:11:36,460 Vamos apenas dizer que 50, 50. 243 00:11:36,460 --> 00:11:39,210 Realmente não custar-lhe que muito mais a dizer 50 em vez de 40, 244 00:11:39,210 --> 00:11:41,260 mas em algum momento, você precisa para fazer uma chamada de julgamento. 245 00:11:41,260 --> 00:11:43,090 >> Muito comum, francamente, para [? histórico?] 246 00:11:43,090 --> 00:11:47,670 razões, mesmo que seja excessiva, quer dizer 255, porque há algum tempo, 247 00:11:47,670 --> 00:11:51,440 em sistemas de banco de dados populares, como MySQL, uma ferramenta gratuita de código aberto 248 00:11:51,440 --> 00:11:53,790 que um monte de empresas como até mesmo no Facebook usado, 249 00:11:53,790 --> 00:11:56,654 este foi o padrão máximo para que as pessoas só fui com ele. 250 00:11:56,654 --> 00:11:59,070 Assim, não é razoável, mas vamos usar um pouco mais de intuição 251 00:11:59,070 --> 00:12:02,970 e dizer, com certeza 50, que é provavelmente um pouco excessivo. 252 00:12:02,970 --> 00:12:05,720 >> Sexo, eu gosto de enum, e por isso, portanto, pode 253 00:12:05,720 --> 00:12:08,760 enumerar macho ou fêmea, ou talvez de forma mais eficiente, 254 00:12:08,760 --> 00:12:13,420 m ou f ou outra simbologia, mas enum se sente como uma boa escolha lá. 255 00:12:13,420 --> 00:12:16,740 Para ser claro, o sexo poderia ser apenas um varchar, 256 00:12:16,740 --> 00:12:19,090 e nós poderíamos apenas tudo Concordo pessoas como agradáveis, 257 00:12:19,090 --> 00:12:21,010 a sempre colocar os mesmos valores lá. 258 00:12:21,010 --> 00:12:22,720 Macho ou fêmea ou outros enfeites. 259 00:12:22,720 --> 00:12:27,800 >> Mas o problema, então, é que poderíamos cometer um erro, como [inaudível] propuseram 260 00:12:27,800 --> 00:12:29,140 anteriormente em um contexto diferente. 261 00:12:29,140 --> 00:12:32,780 Se cometer um erro, poderíamos obter valores incorretos no nosso banco de dados. 262 00:12:32,780 --> 00:12:36,320 Então, o que é agradável sobre bancos de dados como Oracle e MySQL e outros, 263 00:12:36,320 --> 00:12:39,280 é que você tem esta última camada de defesa, onde 264 00:12:39,280 --> 00:12:43,010 o administrador DBA, banco de dados, quem está projetando esta tabela como nós 265 00:12:43,010 --> 00:12:46,440 são verbalmente, poderia colocar no lugar uma enumeração que 266 00:12:46,440 --> 00:12:51,250 que protege contra especificando masculino, feminino, e assim por ninguém 267 00:12:51,250 --> 00:12:54,230 outra coisa qualquer programador pode acidentalmente inserir qualquer outro valor. 268 00:12:54,230 --> 00:12:55,480 Então, isso seria uma coisa boa. 269 00:12:55,480 --> 00:12:56,660 Esta é uma característica. 270 00:12:56,660 --> 00:13:00,760 >> Assim, um ID, assumindo uma identificação numérica, ele provavelmente deve ser um inteiro positivo. 271 00:13:00,760 --> 00:13:04,380 E nós, por vezes, têm oportunidade para discutir comprimento. 272 00:13:04,380 --> 00:13:06,830 Você não faria normalmente especificar um número aqui, 273 00:13:06,830 --> 00:13:11,310 você, ao invés, especificar este é um int, ou um grande int, 274 00:13:11,310 --> 00:13:12,980 como eles são normalmente chamados. 275 00:13:12,980 --> 00:13:18,840 Mas, normalmente, um número inteiro seria, digamos, 4 bytes. 276 00:13:18,840 --> 00:13:23,694 E se é 4 bytes, isso é quantos bits? 277 00:13:23,694 --> 00:13:24,630 >> AUDIÊNCIA: [inaudível] 278 00:13:24,630 --> 00:13:26,610 >> DAVID MALAN: 32 bits. 279 00:13:26,610 --> 00:13:30,270 Então, quantos usuários que podemos ter na nossa base de dados se todos eles têm um ID 280 00:13:30,270 --> 00:13:33,320 e este ID tem de ser único? 281 00:13:33,320 --> 00:13:36,780 32 bits significa que temos padrões de um, dois, três, quatro, five-- 282 00:13:36,780 --> 00:13:41,000 Assim como muitos padrões diferentes de zeros e aqueles que você pode ter se existem 32? 283 00:13:41,000 --> 00:13:43,235 Isso é a mesma coisa que perguntando o que há de dois a 32? 284 00:13:43,235 --> 00:13:46,472 285 00:13:46,472 --> 00:13:48,430 É um grande número que Eu não consigo acertar, 286 00:13:48,430 --> 00:13:50,270 mas eu sei que é cerca de 4 bilhões de dólares. 287 00:13:50,270 --> 00:13:53,970 Então isso significa que sua tabela de banco de dados pode tem quatro bilhões de usuários e é isso. 288 00:13:53,970 --> 00:13:56,410 >> Portanto, este é um interessante implicação design. 289 00:13:56,410 --> 00:14:00,840 Um número razoável de empresas decidiram, talvez não tanto 290 00:14:00,840 --> 00:14:04,860 para a sua tabela de usuários, porque ter 4 bilhões de usuários é um problema raro. 291 00:14:04,860 --> 00:14:08,410 Esta é uma espécie de Facebook de estilo problema, e não um problema típico empresa. 292 00:14:08,410 --> 00:14:12,670 Mas talvez se você tiver logs de transação ou algum tipo de dados que constantemente 293 00:14:12,670 --> 00:14:15,610 é escrita em seu banco de dados que absolutamente poderia ter bilhões 294 00:14:15,610 --> 00:14:18,900 e bilhões de linhas e você usa um número inteiro para ele, 295 00:14:18,900 --> 00:14:22,750 o que vai acontecer assim que você começa a remar número 4 bilhões 296 00:14:22,750 --> 00:14:26,210 e, em seguida, tentar inserir o 4000000000 e 1, por assim dizer? 297 00:14:26,210 --> 00:14:29,610 Estou simplificando um pouco os números. 298 00:14:29,610 --> 00:14:33,740 >> Você pode cortar para trás, quero dizer que você tem que lidar com isso de alguma forma. 299 00:14:33,740 --> 00:14:37,910 E o que um computador seria normalmente fazer, pensar sobre ele mesmo a partir desta manhã, 300 00:14:37,910 --> 00:14:42,430 se você tiver um valor de 4 bits como 1, 1, 1, 1, a qual, 301 00:14:42,430 --> 00:14:44,920 apenas para amarrar a manhã em conjunto para a tarde, o 302 00:14:44,920 --> 00:14:48,369 que representa este número em binário? 303 00:14:48,369 --> 00:14:49,410 OK, vamos torná-lo mais fácil. 304 00:14:49,410 --> 00:14:53,310 O que esse número representam em binário? 305 00:14:53,310 --> 00:14:56,794 OK, vamos torná-lo mais fácil, o que isto representa em binário? 306 00:14:56,794 --> 00:14:57,460 AUDIÊNCIA: Três. 307 00:14:57,460 --> 00:14:59,670 DAVID MALAN: Três, porque temos os column-- 308 00:14:59,670 --> 00:15:00,450 [RISO] 309 00:15:00,450 --> 00:15:01,350 Ufa! 310 00:15:01,350 --> 00:15:03,980 Tivemos a coluna queridos e a coluna dois. 311 00:15:03,980 --> 00:15:07,250 Então suponho que, de fato, o nosso [? infield?] não eram de 32 bits, 312 00:15:07,250 --> 00:15:13,440 mas eram dois bits, podemos contar a partir do número 0, 1, 2, 3 usuário, 313 00:15:13,440 --> 00:15:18,040 e então nós estamos tipo de de volta ao usuário 00 novamente. 314 00:15:18,040 --> 00:15:19,739 Então, isso é o que normalmente acontece. 315 00:15:19,739 --> 00:15:22,780 Se você já ouviu a expressão-- Provavelmente não, mas se você have-- 316 00:15:22,780 --> 00:15:26,500 integer overflow, onde você manter lançando todos os seus pedaços 317 00:15:26,500 --> 00:15:29,640 ser os maiores valores possíveis, e então você está fora de bits, 318 00:15:29,640 --> 00:15:30,850 o que normalmente acontece? 319 00:15:30,850 --> 00:15:32,280 Por que eu digo 00? 320 00:15:32,280 --> 00:15:33,220 Bem, este é três. 321 00:15:33,220 --> 00:15:34,230 Como faço para representar 4? 322 00:15:34,230 --> 00:15:36,890 323 00:15:36,890 --> 00:15:38,915 Como faço para representar o para o número 4 em binário? 324 00:15:38,915 --> 00:15:39,790 AUDIÊNCIA: [inaudível] 325 00:15:39,790 --> 00:15:41,780 DAVID MALAN: um-- sim, não digo 100 per se, 326 00:15:41,780 --> 00:15:44,190 porque tem o errado conotação, mas 1-0-0. 327 00:15:44,190 --> 00:15:48,920 Assim, esse número é de facto 1-0-0 correto, mas se você só tem dois bits, 328 00:15:48,920 --> 00:15:50,820 o que você realmente fez? 329 00:15:50,820 --> 00:15:53,219 Você rolou para 00. 330 00:15:53,219 --> 00:15:54,760 E, de fato, é o que iria acontecer. 331 00:15:54,760 --> 00:15:56,884 Na verdade, você pode pensar sobre isso mais familiarmente. 332 00:15:56,884 --> 00:15:59,350 Se bem se lembram, o que, 16 anos atrás, o mundo 333 00:15:59,350 --> 00:16:03,380 deveria terminar quando o problema Y2K aconteceu. 334 00:16:03,380 --> 00:16:04,330 Por que isso? 335 00:16:04,330 --> 00:16:08,170 Assim a maioria dos computadores, para decisões razoáveis, 336 00:16:08,170 --> 00:16:15,320 foram armazenar números como o ano de 1975 ou o ano de 1999 337 00:16:15,320 --> 00:16:19,010 apenas usando dois dígitos na memória do computador. 338 00:16:19,010 --> 00:16:21,950 Então, é claro, o que acontece quando você chegar ao ano de 2000, 339 00:16:21,950 --> 00:16:25,790 você vai a este, ou melhor, sim. 340 00:16:25,790 --> 00:16:30,120 Então você vai para o ano de 2000, mas se você só está usando dois dígitos que parece 341 00:16:30,120 --> 00:16:32,660 como o ano 00 e então você rolou. 342 00:16:32,660 --> 00:16:36,820 E é por isso que um monte de sistemas precisava de ser actualizado no momento. 343 00:16:36,820 --> 00:16:42,500 >> Assim, com o que disse, empresas como a Facebook ir contra isso. 344 00:16:42,500 --> 00:16:46,147 Portanto, a única maneira de lidar com o situação, francamente, é antecipar-lo. 345 00:16:46,147 --> 00:16:47,980 Ou a maneira mais limpa para lidar com esta situação 346 00:16:47,980 --> 00:16:50,330 é antecipar-lo para que você não tem que fazer mudanças mais tarde. 347 00:16:50,330 --> 00:16:51,970 Então, em vez de 8 bytes, você sabe o quê? 348 00:16:51,970 --> 00:16:54,261 Eu vou ser com visão de futuro aqui, mesmo que seja 349 00:16:54,261 --> 00:16:56,760 um pouco otimista de que vamos ter 4 bilhões 350 00:16:56,760 --> 00:16:58,850 e 1 utilizadores no nosso site. 351 00:16:58,850 --> 00:17:01,790 Mas vamos usar apenas 8 bytes, ou 64 bits, o que geralmente seria 352 00:17:01,790 --> 00:17:05,640 chamado de um grande número inteiro, muito técnico. 353 00:17:05,640 --> 00:17:10,280 E isso significa apenas que você pode ter ainda mais dígitos no seu número. 354 00:17:10,280 --> 00:17:12,599 Mas esta é uma importante decisão de design, 355 00:17:12,599 --> 00:17:16,400 porque se você escolher um número que tem também alguns pedaços de expressividade 356 00:17:16,400 --> 00:17:19,089 você realmente pode criar um bug no software. 357 00:17:19,089 --> 00:17:21,750 >> Tudo bem, então vamos encerrar com e-mail e endereço postal. 358 00:17:21,750 --> 00:17:26,369 Assim, e-mail, quanto tempo deve um endereço de e-mail ser? 359 00:17:26,369 --> 00:17:26,869 50. 360 00:17:26,869 --> 00:17:29,220 Eu realmente não tenho idéia, mas é provavelmente algo parecido, 361 00:17:29,220 --> 00:17:32,261 porque caso contrário, ninguém vai escrever-lhe se ele fica muito tempo, então 50, 362 00:17:32,261 --> 00:17:33,360 vamos ir com ele para agora. 363 00:17:33,360 --> 00:17:35,770 endereço postal, quanto tempo deve ser? 364 00:17:35,770 --> 00:17:38,325 365 00:17:38,325 --> 00:17:39,200 AUDIÊNCIA: [inaudível] 366 00:17:39,200 --> 00:17:41,900 367 00:17:41,900 --> 00:17:43,890 >> DAVID MALAN: Não é apenas um código postal, embora. 368 00:17:43,890 --> 00:17:45,720 endereço postal, ouvi. 369 00:17:45,720 --> 00:17:50,720 Então, isso é como uma Brattle Square, vírgula, Cambridge Mass., vírgula, 02138. 370 00:17:50,720 --> 00:17:53,860 E, na verdade, deixe-me puxar um pouco planilha aqui. 371 00:17:53,860 --> 00:17:56,510 Este parece que é uma oportunidade perdida. 372 00:17:56,510 --> 00:18:01,480 Se temos 1 Brattle Square, vírgula, Cambridge MA 02138, 373 00:18:01,480 --> 00:18:04,510 Eu sinto que nós podemos fazer melhor de endereços, basta postal. 374 00:18:04,510 --> 00:18:07,100 Por que não vamos explodir esta um pouco? 375 00:18:07,100 --> 00:18:08,030 O que estou querendo chegar? 376 00:18:08,030 --> 00:18:10,970 O que devemos sim ter para as nossas linhas aqui, talvez? 377 00:18:10,970 --> 00:18:12,260 >> AUDIÊNCIA: [inaudível] 378 00:18:12,260 --> 00:18:17,579 >> DAVID MALAN: Sim, então vamos chamá-lo street_number, 379 00:18:17,579 --> 00:18:20,620 e um sublinhado é apenas uma comum forma de ter o que parece ser um espaço, 380 00:18:20,620 --> 00:18:22,360 mas não é, na verdade. 381 00:18:22,360 --> 00:18:26,240 Street, e depois cidade-- pena? 382 00:18:26,240 --> 00:18:28,440 >> AUDIÊNCIA: [inaudível] 383 00:18:28,440 --> 00:18:29,690 DAVID MALAN: Nós poderíamos fazer isso. 384 00:18:29,690 --> 00:18:30,702 Linha um, linha dois. 385 00:18:30,702 --> 00:18:32,410 Por que não vamos manter -lo simples por agora, 386 00:18:32,410 --> 00:18:34,840 mas isso é absolutamente uma decisão aceitável. 387 00:18:34,840 --> 00:18:38,180 E então estado, e depois vamos ser um pouco centrado nos EUA por enquanto 388 00:18:38,180 --> 00:18:42,040 e apenas fazer CEP, só porque ele vai levar a um erro interessante 389 00:18:42,040 --> 00:18:43,090 ou problema aqui. 390 00:18:43,090 --> 00:18:44,655 Então suponho que é agora o nosso endereço. 391 00:18:44,655 --> 00:18:47,280 É um pouco mais irritante que temos todas essas mais campos, 392 00:18:47,280 --> 00:18:49,200 mas agora podemos marcar as coisas um pouco melhor. 393 00:18:49,200 --> 00:18:53,210 >> número Então, agora rua, provavelmente, não deve ser um char, deveria? 394 00:18:53,210 --> 00:18:54,835 O que deveria ser? 395 00:18:54,835 --> 00:18:55,710 AUDIÊNCIA: [inaudível] 396 00:18:55,710 --> 00:18:57,835 DAVID MALAN: Talvez, um número como um número inteiro de novo? 397 00:18:57,835 --> 00:19:00,170 Um grande número inteiro? 398 00:19:00,170 --> 00:19:02,170 Você provavelmente não vivem em 4 bilhões Main Street 399 00:19:02,170 --> 00:19:03,490 ou qualquer coisa louca assim. 400 00:19:03,490 --> 00:19:06,850 Assim inteiro é provavelmente bem, mas tem ninguém 401 00:19:06,850 --> 00:19:13,880 já viveu em um endereço como 1A Brattle Square, ou 1 e 1/2? 402 00:19:13,880 --> 00:19:17,030 que essas coisas existem, infelizmente, mesmo se você não viveu lá, 403 00:19:17,030 --> 00:19:21,240 existem essas anomalias como o apartamento 1A, 1B, 1C. 404 00:19:21,240 --> 00:19:24,260 Então você sabe o que, provavelmente não deve ir com inteiro, 405 00:19:24,260 --> 00:19:27,440 caso contrário, vamos a perder algumas vendas. 406 00:19:27,440 --> 00:19:29,920 >> campo Char, talvez? 407 00:19:29,920 --> 00:19:30,870 Eu não sei quanto tempo. 408 00:19:30,870 --> 00:19:33,370 Provavelmente não vai ser tanto tempo, então 10 ou algo assim. 409 00:19:33,370 --> 00:19:34,950 Ninguém vai escrever um número mais longo, talvez. 410 00:19:34,950 --> 00:19:37,070 Mas, novamente, nós provavelmente deve dar mais atenção a isso. 411 00:19:37,070 --> 00:19:39,900 Talvez o Google, fazer alguma pesquisa, mas vamos ir com nossas entranhas para agora. 412 00:19:39,900 --> 00:19:44,565 Ruas, char, 50, eu não sei. 413 00:19:44,565 --> 00:19:46,940 Em algum momento, ninguém vai escrevê-lo em um envelope, 414 00:19:46,940 --> 00:19:49,350 também, então há provavelmente alguns limites superiores lá. 415 00:19:49,350 --> 00:19:54,200 City, mesma, com certeza, de modo carbonizar 50. 416 00:19:54,200 --> 00:19:59,120 >> Estado, pode ser centrado nos EUA por enquanto. 417 00:19:59,120 --> 00:20:01,850 Assim, poderia ser uma lista, portanto, tipo de uma chamada de julgamento, estado. 418 00:20:01,850 --> 00:20:04,000 Poderia ser como dois caracteres. 419 00:20:04,000 --> 00:20:06,140 Então, na verdade, talvez, eu não parava de dizer carvão. 420 00:20:06,140 --> 00:20:09,420 Eu provavelmente significa varchar, apenas por alguma eficiência, 421 00:20:09,420 --> 00:20:12,240 mas vamos voltar a essa decisão em um momento. 422 00:20:12,240 --> 00:20:16,150 Poderia ser um char de comprimento 2 para o estado. 423 00:20:16,150 --> 00:20:20,670 Se em os EUA têm, como MA, Massachusetts, Nova Iorque, Nova Iorque, Nova Jersey, Nova 424 00:20:20,670 --> 00:20:22,100 Jersey, e assim por diante. 425 00:20:22,100 --> 00:20:23,630 Assim, poderia ser fixada a isso. 426 00:20:23,630 --> 00:20:25,900 DC para Washington DC. 427 00:20:25,900 --> 00:20:29,915 >> Mas eu acho que, Olivier, você propôs uma outra abordagem. 428 00:20:29,915 --> 00:20:30,790 AUDIÊNCIA: [inaudível] 429 00:20:30,790 --> 00:20:33,670 DAVID MALAN: Sim, por isso é uma pouco chato para digitar, 430 00:20:33,670 --> 00:20:37,890 mas uma enumeração poderia fazer mais sentido, porque desta forma, pelo menos para os EUA, 431 00:20:37,890 --> 00:20:41,320 você poderia enumerar, se tediosamente, mas você fazê-lo apenas uma vez em seu banco de dados 432 00:20:41,320 --> 00:20:47,480 e nunca mais ter que pensar sobre -lo, todos os 50 códigos de dois caracteres. 433 00:20:47,480 --> 00:20:48,660 Então, eu gosto enum. 434 00:20:48,660 --> 00:20:51,720 Vamos ficar com isso lá, porque que tipo de impõe mais rigor. 435 00:20:51,720 --> 00:20:53,620 E, em seguida, código postal? 436 00:20:53,620 --> 00:20:55,306 Acho que Andrew tinha um pensamento sobre esse 437 00:20:55,306 --> 00:20:56,180 AUDIÊNCIA: [inaudível] 438 00:20:56,180 --> 00:20:57,240 DAVID MALAN: Sim, cinco ou nove. 439 00:20:57,240 --> 00:20:58,323 Vamos apenas mantê-lo simples. 440 00:20:58,323 --> 00:20:59,380 Basta fazer cinco por agora. 441 00:20:59,380 --> 00:21:03,070 Mas talvez eu só podia fazer um número inteiro, certo? 442 00:21:03,070 --> 00:21:08,750 Eu poderia, mas você sabe o que, eu fiz esse erro uma vez, em algum sentido. 443 00:21:08,750 --> 00:21:13,110 Anos atrás, eu estava migrando de Microsoft Outlook para o Gmail, 444 00:21:13,110 --> 00:21:18,640 e Outlook tem uma maneira de exportar todos os seus contatos como um arquivo do Excel, 445 00:21:18,640 --> 00:21:21,280 um arquivo CSV, separados por vírgula arquivo valores. 446 00:21:21,280 --> 00:21:23,950 E eu cometi o erro, I pensar, de clicar duas vezes nele, 447 00:21:23,950 --> 00:21:27,380 uma vez eu baixei a exportação, a certifique-se que parecia como eu esperava. 448 00:21:27,380 --> 00:21:31,320 Devo ter bateu salvar ou deixar auto-save chute no ou algo assim. 449 00:21:31,320 --> 00:21:35,100 Porque quando eu, em seguida, importados -lo em Gmail, tudo funcionou. 450 00:21:35,100 --> 00:21:39,910 Mas durante anos, até hoje, e Eu fiz isso cinco, 10 anos atrás, 451 00:21:39,910 --> 00:21:44,380 Eu ainda estou encontrando amigos que têm endereços que se parecem com isso. 452 00:21:44,380 --> 00:21:45,700 Por quê? 453 00:21:45,700 --> 00:21:47,900 >> AUDIÊNCIA: [inaudível] 454 00:21:47,900 --> 00:21:50,650 >> DAVID MALAN: Demorou a 0, assim, em vez disso, 455 00:21:50,650 --> 00:21:53,810 tomou todo o código postal como um número, e, portanto, é 456 00:21:53,810 --> 00:21:56,590 um 0 que significa não tem nenhum significado. 457 00:21:56,590 --> 00:21:59,470 E assim 2138 parece ser o meu código postal. 458 00:21:59,470 --> 00:22:07,100 E este é, francamente, um Excel irritante característica pela qual eu acho que por padrão, 459 00:22:07,100 --> 00:22:10,980 mesmo que isso significou apenas ser texto, Microsoft Excel 460 00:22:10,980 --> 00:22:13,780 decide, deixe-me ser útil, e oh, eu vejo apenas números. 461 00:22:13,780 --> 00:22:15,290 Vamos tratá-los como números. 462 00:22:15,290 --> 00:22:16,790 E ele trunca os zeros à esquerda. 463 00:22:16,790 --> 00:22:19,165 >> Juro por Deus, cada casal meses eu encontrar um endereço, 464 00:22:19,165 --> 00:22:22,300 e fora de um tipo de TOC, eu volto e adicionar a 0, apesar de eu nunca 465 00:22:22,300 --> 00:22:23,700 enviar cartas de pessoas ou qualquer coisa. 466 00:22:23,700 --> 00:22:25,510 Mas eu ainda estou encontrando restos desta. 467 00:22:25,510 --> 00:22:28,820 Então, isso quer dizer, isso é uma boa ideia? 468 00:22:28,820 --> 00:22:31,610 OK, não, porque ninguém em Massachusetts, nesta área, 469 00:22:31,610 --> 00:22:33,270 vai ter um o líder deles. 470 00:22:33,270 --> 00:22:38,070 Então vamos com gosto char, provavelmente, cinco. 471 00:22:38,070 --> 00:22:41,450 >> E aqui, percebemos que poderia usar um enum e nós 472 00:22:41,450 --> 00:22:44,600 poderia enumerar 10.000 possíveis códigos postais, 473 00:22:44,600 --> 00:22:48,530 mas isso parece que é, provavelmente, cruzando uma linha de, como, benefícios. 474 00:22:48,530 --> 00:22:51,350 Se tiver de entrada que muitos dados em seu banco de dados 475 00:22:51,350 --> 00:22:52,940 para proteger contra alguma coisa. 476 00:22:52,940 --> 00:22:57,400 Então carvão percebi que você poderia digitar na H-E-L-L-O como o seu código postal, 477 00:22:57,400 --> 00:22:59,180 o que não é, obviamente, numérico. 478 00:22:59,180 --> 00:23:01,680 Assim, não há nenhuma maneira, em uma base de dados típico, 479 00:23:01,680 --> 00:23:05,561 especificar apenas numérica e apenas cinco caracteres, 480 00:23:05,561 --> 00:23:07,310 por isso vamos ter fazer isso no código. 481 00:23:07,310 --> 00:23:11,100 Nós vamos fazer isso em PHP ou Java ou qualquer outra língua que estamos 482 00:23:11,100 --> 00:23:14,230 usando no servidor para fazer cumprir esse tipo de restrição. 483 00:23:14,230 --> 00:23:14,860 >> Whoo! 484 00:23:14,860 --> 00:23:18,322 Tudo bem, então todas as perguntas apenas ainda? 485 00:23:18,322 --> 00:23:19,780 Vamos fazer uma outra decisão de design. 486 00:23:19,780 --> 00:23:22,500 Acontece que você também terá de escolher, 487 00:23:22,500 --> 00:23:26,600 ao projetar um banco de dados SQL, ou database-- típicos relacionais onde 488 00:23:26,600 --> 00:23:28,790 novamente, relacional apenas significa linhas e colunas, 489 00:23:28,790 --> 00:23:35,500 é assim que você organize suas data-- e perceber que o que isto significa é, 490 00:23:35,500 --> 00:23:37,740 Eu tenho enganosa no que, estou drawing-- este 491 00:23:37,740 --> 00:23:40,190 é o que é chamado de esquema para uma tabela de banco de dados. 492 00:23:40,190 --> 00:23:42,810 Isto é como o especificações para a mesa-- 493 00:23:42,810 --> 00:23:48,040 mas quando chega a hora para realmente armazenar dados, 494 00:23:48,040 --> 00:23:52,081 e vamos fazer isto, basta exemplo aqui. 495 00:23:52,081 --> 00:23:55,080 Vou abrir Excel, porque Excel vai me dar linhas e colunas. 496 00:23:55,080 --> 00:23:58,050 E isso é exatamente o que a Oracle e MySQL e outras ferramentas vai me dar. 497 00:23:58,050 --> 00:24:02,270 Então, eu estou indo só para usar -lo por causa de discussão. 498 00:24:02,270 --> 00:24:05,250 Deixe-me ir em frente e abrir uma documento representativo aqui, 499 00:24:05,250 --> 00:24:06,310 ampliar um pouco. 500 00:24:06,310 --> 00:24:15,200 Assim, por exemplo, os nossos cabeçalhos estão agora primeiro nome, último nome, sexo, ID, 501 00:24:15,200 --> 00:24:20,980 e-mail, número da rua, rua, gritos. 502 00:24:20,980 --> 00:24:25,710 Rua, cidade, estado, apenas sobre se encaixa na tela. 503 00:24:25,710 --> 00:24:29,080 >> Então, o que isto significa é que quando um usuário se registra pela primeira vez para o meu site, 504 00:24:29,080 --> 00:24:32,880 ele vai ser algo como David, Malan, m, digamos 1, 505 00:24:32,880 --> 00:24:42,910 malan@harvard.edu, número da rua vai ser como uma Brattle Square, Cambridge, MA, 506 00:24:42,910 --> 00:24:44,780 02138, e em seguida assim por diante. 507 00:24:44,780 --> 00:24:48,290 Então, quando eu digo que um banco de dados relacional ou banco de dados SQL é linhas e colunas, 508 00:24:48,290 --> 00:24:49,350 Eu queria dizer isso. 509 00:24:49,350 --> 00:24:51,900 Que os dados reais são armazenados em linhas e colunas. 510 00:24:51,900 --> 00:24:53,950 Esta é apenas uma coincidência, que estávamos falando, 511 00:24:53,950 --> 00:24:56,033 e eu estava apenas puxando-o em fileiras e colunas. 512 00:24:56,033 --> 00:24:58,320 Este é apenas o esquema, a definição global. 513 00:24:58,320 --> 00:25:01,640 >> Então desses campos aqui, ou equivalentemente, lá, 514 00:25:01,640 --> 00:25:06,270 quais são os campos que você pensa Eu sou provavelmente a pesquisar sobre se eu sou um usuário 515 00:25:06,270 --> 00:25:09,200 ou se eu sou o administrador do banco de dados? 516 00:25:09,200 --> 00:25:12,426 Como, o que eu sou campos na verdade, indo para procurar? 517 00:25:12,426 --> 00:25:13,830 >> AUDIÊNCIA: [inaudível] 518 00:25:13,830 --> 00:25:17,690 >> DAVID MALAN: O nome, sim de modo Eu gosto do fato isso-- sim, 519 00:25:17,690 --> 00:25:19,750 e-mail pode ser bastante comum. 520 00:25:19,750 --> 00:25:21,440 Desculpe, você disse o nome. 521 00:25:21,440 --> 00:25:24,030 Então maybe-- e novamente, estamos tipo de falar em abstracto. 522 00:25:24,030 --> 00:25:25,988 Eu não sei por que você iria estar à procura de um nome, 523 00:25:25,988 --> 00:25:29,340 mas que se sente razoável se você estiver procurando por um usuário. 524 00:25:29,340 --> 00:25:31,170 Talvez afirma, com certeza, ID. 525 00:25:31,170 --> 00:25:34,100 526 00:25:34,100 --> 00:25:36,160 >> E é uma escorregadia declive, porque eu podia 527 00:25:36,160 --> 00:25:38,890 inventar um cenário onde talvez o meu chefe me pediu, 528 00:25:38,890 --> 00:25:40,417 quantos homens temos em nosso site? 529 00:25:40,417 --> 00:25:42,000 Quantas mulheres que temos em nosso site? 530 00:25:42,000 --> 00:25:45,210 E assim, nesse ponto, você pode querer para procurar no campo de gênero, também, 531 00:25:45,210 --> 00:25:45,940 e nada mais. 532 00:25:45,940 --> 00:25:47,350 Portanto, há um trade-off aqui. 533 00:25:47,350 --> 00:25:49,180 Novamente, não há nenhuma resposta certa, mas há 534 00:25:49,180 --> 00:25:53,760 é uma característica na maioria dos bancos de dados SQL conhecido como indexação, em que 535 00:25:53,760 --> 00:25:56,100 você, o designer, o administrador de banco de dados, 536 00:25:56,100 --> 00:26:01,730 começa a decidir antecipadamente quais Campos O banco de dados deve otimizar 537 00:26:01,730 --> 00:26:02,980 para pesquisas em. 538 00:26:02,980 --> 00:26:07,620 >> Você poderia muito ingenuamente dizer, otimizar isso, otimizar isso, otimizar isso, 539 00:26:07,620 --> 00:26:10,300 otimizar isso e isso, e o banco de dados 540 00:26:10,300 --> 00:26:14,882 fazer alguma coisa mágica debaixo do capô, e fazer algo de tal forma 541 00:26:14,882 --> 00:26:17,090 que a próxima vez que você pesquise em qualquer um destes campos, 542 00:26:17,090 --> 00:26:18,400 vai, de facto, ser mais rápido. 543 00:26:18,400 --> 00:26:19,110 Isso é possível. 544 00:26:19,110 --> 00:26:20,530 Ele não anula a si mesmo. 545 00:26:20,530 --> 00:26:22,500 Mas deve haver um preço a pagar. 546 00:26:22,500 --> 00:26:27,220 >> Se você ingenuamente, ou excesso de entusiasmo digamos, o índice de todos esses campos, 547 00:26:27,220 --> 00:26:29,810 por assim dizer, torná-los todos eficientemente pesquisável, 548 00:26:29,810 --> 00:26:31,625 qual o preço que você está pagando provavelmente? 549 00:26:31,625 --> 00:26:32,500 AUDIÊNCIA: [inaudível] 550 00:26:32,500 --> 00:26:33,090 DAVID MALAN: Performance. 551 00:26:33,090 --> 00:26:33,798 O que você quer dizer? 552 00:26:33,798 --> 00:26:37,380 Bem desempenho, pelo menos a contexto, eu estou discutindo, é melhor agora. 553 00:26:37,380 --> 00:26:38,830 Essa é a definição de indexação. 554 00:26:38,830 --> 00:26:41,180 Isso fará com que as pesquisas mais rápidas. 555 00:26:41,180 --> 00:26:43,366 Assim, o tempo diminui, por assim dizer. 556 00:26:43,366 --> 00:26:44,240 AUDIÊNCIA: [inaudível] 557 00:26:44,240 --> 00:26:45,031 DAVID MALAN: Space. 558 00:26:45,031 --> 00:26:46,520 Então, novamente, estes são um comércio comum. 559 00:26:46,520 --> 00:26:50,820 Posso acelerar suas pesquisas, mas é vai custar-lhe mais bytes de espaço. 560 00:26:50,820 --> 00:26:51,610 Por quê? 561 00:26:51,610 --> 00:26:55,230 Bem, por padrão, se temos nenhum estas estrelas vermelhas, nenhum desses índices, 562 00:26:55,230 --> 00:26:58,797 como eu estou dizendo, como você procurar para um nome neste banco de dados? 563 00:26:58,797 --> 00:27:00,630 Então, vamos chamar a nossa atenção para este exemplo. 564 00:27:00,630 --> 00:27:06,300 Se temos David e Scully e Kareem e Arwa e outros nestas linhas, 565 00:27:06,300 --> 00:27:06,910 por exemplo. 566 00:27:06,910 --> 00:27:08,390 >> Então, vamos fazer exatamente isso. 567 00:27:08,390 --> 00:27:13,990 Scully está aqui, e depois temos Kareem, e Arwa, 568 00:27:13,990 --> 00:27:18,390 e todos os outros, se não o fizer tem um índice definido, por assim dizer, 569 00:27:18,390 --> 00:27:20,160 o melhor que você pode fazer é procurar linear. 570 00:27:20,160 --> 00:27:23,470 Se você procurar por Arwa, não estamos vai ser capaz de saltar para a direita para ela 571 00:27:23,470 --> 00:27:24,140 rapidamente. 572 00:27:24,140 --> 00:27:26,556 Nós vamos começar a parte superior e percorrer todo o caminho até o fundo, 573 00:27:26,556 --> 00:27:28,600 não muito diferente de nosso original exemplo Mike Smith. 574 00:27:28,600 --> 00:27:33,470 >> Se, no entanto, eu digo, hey, banco de dados, índice do primeiro campo de nome, 575 00:27:33,470 --> 00:27:37,000 em seguida, ele vai fazer alguma coisa extravagante e apoiar algo 576 00:27:37,000 --> 00:27:38,130 como busca binária. 577 00:27:38,130 --> 00:27:39,820 Provavelmente não é a busca binária per se. 578 00:27:39,820 --> 00:27:42,810 Bases de dados tendem a usar outro estrutura de dados chamada de b-trees, 579 00:27:42,810 --> 00:27:46,540 não deve ser confundido com árvores binárias, que apenas torná-lo mais rápido para procurar 580 00:27:46,540 --> 00:27:48,500 algo logarítmica na natureza. 581 00:27:48,500 --> 00:27:53,510 Mas o preço que você paga para construir essa O recurso, que a estrutura de dados na memória, 582 00:27:53,510 --> 00:27:54,570 é mais bytes. 583 00:27:54,570 --> 00:27:57,170 Então, isso pode levar alguns megabytes, alguns gigabytes, quem sabe? 584 00:27:57,170 --> 00:27:58,410 Depende dos dados. 585 00:27:58,410 --> 00:28:02,640 >> Então, em algum momento, você tem que decidir, provavelmente não é um caso comum. 586 00:28:02,640 --> 00:28:06,000 Então, quais são o comum real casos, se você realmente tivesse que escolher, 587 00:28:06,000 --> 00:28:10,080 o que poderia seus campos favoritos ser? 588 00:28:10,080 --> 00:28:10,580 O email. 589 00:28:10,580 --> 00:28:14,400 E eu gosto de e-mail porque e-mail, em teoria, deve ser único. 590 00:28:14,400 --> 00:28:17,650 E assim normalmente, quando você sabe de antemão que um de seus campos 591 00:28:17,650 --> 00:28:20,277 é ou será único, que tende a ser um bom campo 592 00:28:20,277 --> 00:28:22,860 para procurar, porque dessa forma, quando você procura por algo, 593 00:28:22,860 --> 00:28:26,194 você vai receber de volta uma ou zerar respostas e, em seguida, você está feito. 594 00:28:26,194 --> 00:28:28,110 Você não tem que manter procurando outros ainda. 595 00:28:28,110 --> 00:28:31,992 >> E assim, neste caso aqui, e-mail, contanto que você não pode registrar duas vezes 596 00:28:31,992 --> 00:28:33,450 com o mesmo e-mail, é uma boa. 597 00:28:33,450 --> 00:28:36,710 ID por definição, no mundo da informática, 598 00:28:36,710 --> 00:28:39,610 se você está falando de um ID, que tinha melhor ser único. 599 00:28:39,610 --> 00:28:42,970 Isso é o tipo de conotação de ID ou identificador. 600 00:28:42,970 --> 00:28:46,440 E o resto deles pode ser, vamos chamá-los bom haves, 601 00:28:46,440 --> 00:28:47,860 mas não é realmente necessário. 602 00:28:47,860 --> 00:28:49,976 >> E assim, em um banco de dados, você especificar índices, 603 00:28:49,976 --> 00:28:51,350 mas pode ser ainda mais preciso. 604 00:28:51,350 --> 00:28:56,060 Você pode dizer, hey, banco de dados, certifique-se que cada ID nesta tabela é única. 605 00:28:56,060 --> 00:28:59,330 Não deixe nem mesmo um programador acidentalmente colocar em um e-mail duplicado 606 00:28:59,330 --> 00:29:00,740 ou duplicar número de identificação. 607 00:29:00,740 --> 00:29:03,140 Tão parecido com enums proteger-nos da mesma forma, você 608 00:29:03,140 --> 00:29:04,881 pode ter essas defesas de nível inferior. 609 00:29:04,881 --> 00:29:07,130 E assim por projeto de banco de dados, em certo sentido, é uma espécie de diversão, 610 00:29:07,130 --> 00:29:08,380 porque você fazê-lo na defensiva. 611 00:29:08,380 --> 00:29:11,460 Você tipo de supor que você trabalha com os programadores horrível, horrível 612 00:29:11,460 --> 00:29:15,550 e você quer colocar em tantas defesas como você pode proteger seus dados, 613 00:29:15,550 --> 00:29:18,940 mas ao mesmo tempo você quer para ajudá-los a ter um melhor desempenho 614 00:29:18,940 --> 00:29:21,386 escolhendo quais campos para otimizar. 615 00:29:21,386 --> 00:29:24,260 Mas você não pode necessariamente fazê-lo em um vácuo como nós tipo de está aqui. 616 00:29:24,260 --> 00:29:26,480 Você tem que saber quais são Nesses casos comuns estar. 617 00:29:26,480 --> 00:29:29,397 Se os desenvolvedores estão implementação de um livro de endereços, 618 00:29:29,397 --> 00:29:32,230 você pode muito bem querer ser capaz a pesquisa em quase todos os campos, 619 00:29:32,230 --> 00:29:33,830 apenas pela natureza da aplicação. 620 00:29:33,830 --> 00:29:37,910 Então, talvez você gasta que espaço adicional. 621 00:29:37,910 --> 00:29:39,090 >> Certo, alguma pergunta? 622 00:29:39,090 --> 00:29:41,820 623 00:29:41,820 --> 00:29:42,486 Sim. 624 00:29:42,486 --> 00:29:43,470 >> AUDIÊNCIA: [inaudível] 625 00:29:43,470 --> 00:29:44,404 >> DAVID MALAN: Não. 626 00:29:44,404 --> 00:29:45,279 >> AUDIÊNCIA: [inaudível] 627 00:29:45,279 --> 00:29:47,840 628 00:29:47,840 --> 00:29:48,826 >> DAVID MALAN: OK. 629 00:29:48,826 --> 00:29:49,701 >> AUDIÊNCIA: [inaudível] 630 00:29:49,701 --> 00:29:52,420 631 00:29:52,420 --> 00:29:54,850 >> DAVID MALAN: Ah, então nós estamos falando de uma maneira 632 00:29:54,850 --> 00:29:57,940 agora que é completamente independente de linguagem. 633 00:29:57,940 --> 00:30:02,370 Portanto, estamos falando agora sobre bancos de dados relacionais de forma mais geral, 634 00:30:02,370 --> 00:30:04,760 ou SQL bancos de dados de forma mais geral. 635 00:30:04,760 --> 00:30:06,870 >> AUDIÊNCIA: [inaudível] 636 00:30:06,870 --> 00:30:10,030 >> DAVID MALAN: A palavra melhor para usar é, pode ser utilizado por qualquer linguagem. 637 00:30:10,030 --> 00:30:15,280 Então, eu posso escrever o código JavaScript, C código de código, C ++, Java de código, código Ruby, 638 00:30:15,280 --> 00:30:19,010 todos os quais falar para uma banco de dados e executar consultas. 639 00:30:19,010 --> 00:30:22,310 Na verdade, isso não é um mau Segue para uma consulta de exemplo. 640 00:30:22,310 --> 00:30:25,720 E, novamente, não vamos entrar em Java ou C ++ ou qualquer um dos que mais, 641 00:30:25,720 --> 00:30:29,420 mas em SQL, a linguagem a que me manter referindo-se, Structured Query Language, 642 00:30:29,420 --> 00:30:32,790 este é em si uma linguagem de programação, mas que está destinado a ser utilizado para, não 643 00:30:32,790 --> 00:30:37,330 surpresa, estruturado consultas de consulta. 644 00:30:37,330 --> 00:30:38,660 >> Por isso quero dizer isso. 645 00:30:38,660 --> 00:30:41,190 A maneira como você selecionar dados a partir de um banco de dados MySQL 646 00:30:41,190 --> 00:30:49,330 é que você, literalmente, digite em seu programa algo como select estrela dos usuários. 647 00:30:49,330 --> 00:30:52,200 Estou assumindo que esta tabela, é doravante chamado utilizadores. 648 00:30:52,200 --> 00:30:54,860 Eu poderia chamá-lo de qualquer coisa que quisermos, mas esse tipo de faz sentido. 649 00:30:54,860 --> 00:30:57,240 E assim select é muito verbo comum, se você 650 00:30:57,240 --> 00:30:59,290 vai, em SQL, que, literalmente, faz isso. 651 00:30:59,290 --> 00:31:02,730 O que você acha estrela significa, neste contexto,? 652 00:31:02,730 --> 00:31:04,410 >> AUDIÊNCIA: [inaudível] 653 00:31:04,410 --> 00:31:05,380 >> DAVID MALAN: Eu sinto muito? 654 00:31:05,380 --> 00:31:06,300 >> AUDIÊNCIA: [inaudível] 655 00:31:06,300 --> 00:31:09,580 >> DAVID MALAN: Não é necessário, é mais inclusiva do que isso, na verdade. 656 00:31:09,580 --> 00:31:11,700 É o caractere curinga. 657 00:31:11,700 --> 00:31:14,740 Estrelar quase sempre significa alguma coisa, então isso significa, neste caso, 658 00:31:14,740 --> 00:31:16,510 selecionar tudo do banco de dados. 659 00:31:16,510 --> 00:31:20,730 Portanto, quando digo isso, quero dizer me devolva cada coluna 660 00:31:20,730 --> 00:31:22,440 da minha tabela chamada usuários. 661 00:31:22,440 --> 00:31:24,730 Então me dê um conjunto de resultados, como é chamado. 662 00:31:24,730 --> 00:31:28,210 Em outras palavras, dá-me uma cópia do planilha, é o que eu estou chegando. 663 00:31:28,210 --> 00:31:34,890 >> Mas se eu dissesse selecione estrela de usuários onde ID é igual a 1, quão grande deve 664 00:31:34,890 --> 00:31:36,640 meu conjunto de resultados seria então? 665 00:31:36,640 --> 00:31:41,680 Ou equivalentemente, quantas linhas devem I ser entregue de volta a partir do banco de dados? 666 00:31:41,680 --> 00:31:45,860 Provavelmente apenas um, se eu tiver de fato ID tratada como um identificador único, 667 00:31:45,860 --> 00:31:50,710 e se David tem que ID único, I deveria voltar uma e apenas uma linha 668 00:31:50,710 --> 00:31:53,220 contendo todas as informações de David. 669 00:31:53,220 --> 00:31:56,390 Se eu disse isso, onde ID é igual a 99, eu deveria voltar, 670 00:31:56,390 --> 00:32:00,320 Neste contexto, zero linhas, pelo menos no momento. 671 00:32:00,320 --> 00:32:03,620 >> No entanto, se eu realmente não me importo sobre toda essa informação, 672 00:32:03,620 --> 00:32:06,970 Eu poderia apenas dizer, onde é que David viver? 673 00:32:06,970 --> 00:32:10,860 Escolha um código postal de usuários onde ID é 1. 674 00:32:10,860 --> 00:32:15,820 Isso irá selecionar somente a mim zip de David código e não a totalidade dessa linha. 675 00:32:15,820 --> 00:32:19,541 Por que eu poderia fazer isso em vez de a consulta estrela, o wild card? 676 00:32:19,541 --> 00:32:21,950 >> AUDIÊNCIA: [inaudível] 677 00:32:21,950 --> 00:32:24,590 >> DAVID MALAN: Sim, eu só poderia precisar dele. 678 00:32:24,590 --> 00:32:26,350 Assim, o desempenho é mais uma vez a resposta aqui. 679 00:32:26,350 --> 00:32:28,540 Por que pedir mais informações do que você precisa, 680 00:32:28,540 --> 00:32:32,020 porque mesmo que está tudo bem em conjunto, você ainda tem que copiar os dados, 681 00:32:32,020 --> 00:32:35,560 ao que parece, a partir do banco de dados em seu programa de alguma forma, 682 00:32:35,560 --> 00:32:38,490 e que é bobagem se você só precisa de cinco desses dígitos, 683 00:32:38,490 --> 00:32:40,340 Não é a totalidade da fila. 684 00:32:40,340 --> 00:32:42,180 >> Então, como posso inserir um usuário? 685 00:32:42,180 --> 00:32:44,780 Suponha que um usuário tem apenas registado pela primeira vez. 686 00:32:44,780 --> 00:32:46,560 A sintaxe normalmente seria parecido com este. 687 00:32:46,560 --> 00:32:52,700 Inserir usuários e então diríamos valores, 688 00:32:52,700 --> 00:33:00,150 e então nós diria valores como, digamos, Lauren Scully, 689 00:33:00,150 --> 00:33:02,380 nosso cinegrafista aqui. 690 00:33:02,380 --> 00:33:04,390 E o próximo campo é o género. 691 00:33:04,390 --> 00:33:08,020 Então, vamos dizer citação, fecha aspas "F", então temos uma identificação 692 00:33:08,020 --> 00:33:12,250 e eu vou dizer-- vamos fingir que ela não é realmente aqui, 693 00:33:12,250 --> 00:33:14,380 por isso vamos retroceder na história. 694 00:33:14,380 --> 00:33:16,530 Então 2 será seu ID. 695 00:33:16,530 --> 00:33:19,130 E então o próximo campo aqui é o seu e-mail. 696 00:33:19,130 --> 00:33:22,140 Por isso, vai ser como Lauren Scully e assim por diante, 697 00:33:22,140 --> 00:33:24,360 e vamos Dot Dot dot-lo daqui por diante. 698 00:33:24,360 --> 00:33:26,890 Agora vai ficar um pouco tedioso, mas a consulta de inserção 699 00:33:26,890 --> 00:33:28,310 acabaria por se parecer com isso. 700 00:33:28,310 --> 00:33:30,970 >> Se eu quiser se livrar de Scully, uh-oh, vamos cancelar 701 00:33:30,970 --> 00:33:37,420 -la, ela exclui sua conta, excluir de usuários onde ID é igual a 2, 702 00:33:37,420 --> 00:33:38,500 vai se livrar de Scully. 703 00:33:38,500 --> 00:33:48,050 Ou eu posso dizer atualizar usuários definir, vamos dizer, o que poderíamos mudar? 704 00:33:48,050 --> 00:33:49,430 Suponha que ela se move. 705 00:33:49,430 --> 00:33:53,730 Set zip é igual a 021-- não, é ela zip atual. 706 00:33:53,730 --> 00:33:54,487 90210. 707 00:33:54,487 --> 00:33:56,320 O único outro código postal Eu sei que no mundo. 708 00:33:56,320 --> 00:33:59,002 Assim que mudaria ela zip code-- na verdade, 709 00:33:59,002 --> 00:34:00,460 que não mudaria seu código postal. 710 00:34:00,460 --> 00:34:02,170 >> O que acabei de fazer? 711 00:34:02,170 --> 00:34:04,292 Mesmo que a sintaxe é provavelmente novo. 712 00:34:04,292 --> 00:34:05,302 >> AUDIÊNCIA: [inaudível] 713 00:34:05,302 --> 00:34:08,010 DAVID MALAN: Sim, eu me mudei todos para Beverly Hills, Califórnia. 714 00:34:08,010 --> 00:34:11,920 Então, eu deveria realmente dizer onde ID é igual a 2. 715 00:34:11,920 --> 00:34:12,820 E assim por diante. 716 00:34:12,820 --> 00:34:15,290 Então SQL é tudo sobre estes tipos de instruções. 717 00:34:15,290 --> 00:34:20,260 SELECT, INSERT, excluir, atualizar com estes predicados na extremidade 718 00:34:20,260 --> 00:34:22,139 estas cláusulas, onde, por assim dizer. 719 00:34:22,139 --> 00:34:25,170 E há muito mais você pode fazer, mas é realmente apenas se resume 720 00:34:25,170 --> 00:34:29,750 simplesmente, se arcanely, expressando o que você deseja que o banco de dados para fazer. 721 00:34:29,750 --> 00:34:31,580 >> E, em seguida, a base de dados vai descobrir, quando 722 00:34:31,580 --> 00:34:35,630 inserir Lauren Scully para o banco de dados, onde colocá-la na memória 723 00:34:35,630 --> 00:34:38,230 para que possamos obter muito rapidamente -la com base em seu endereço de e-mail 724 00:34:38,230 --> 00:34:42,610 ou com base no seu número de identificação ou outros semelhantes. 725 00:34:42,610 --> 00:34:43,391 Sim, Dan. 726 00:34:43,391 --> 00:34:44,266 AUDIÊNCIA: [inaudível] 727 00:34:44,266 --> 00:34:46,364 728 00:34:46,364 --> 00:34:47,780 DAVID MALAN: Realmente boa pergunta. 729 00:34:47,780 --> 00:34:50,370 Será que esses scripts mudar de Microsoft Access para o Oracle 730 00:34:50,370 --> 00:34:52,290 ao MySQL para PostgreSQL? 731 00:34:52,290 --> 00:34:53,790 A resposta curta é ele depende. 732 00:34:53,790 --> 00:34:58,697 Em teoria, há uma muito subconjunto comum significativo de SQL 733 00:34:58,697 --> 00:35:00,780 que é compartilhado entre todos essas implementações. 734 00:35:00,780 --> 00:35:03,340 No entanto, vários fabricantes tem características adicionadas 735 00:35:03,340 --> 00:35:07,120 aos seus bancos de dados para fazer certas coisas além do escopo desses recursos, 736 00:35:07,120 --> 00:35:08,720 que pode, de fato, quebrar. 737 00:35:08,720 --> 00:35:11,210 >> Assim, a maneira desenvolvedores proteger contra isso, 738 00:35:11,210 --> 00:35:14,350 é que ao invés de escrever em bruto código SQL que estou escrevendo aqui, 739 00:35:14,350 --> 00:35:19,460 eles ao invés de usar uma biblioteca, uma biblioteca comum que a própria 740 00:35:19,460 --> 00:35:23,650 é uma espécie de alto-nível e resumos distância, que produto que você está usando. 741 00:35:23,650 --> 00:35:25,710 E dá-lhe funções e procedimentos 742 00:35:25,710 --> 00:35:28,810 para chamar para que você nunca realmente escrever SQL puro. 743 00:35:28,810 --> 00:35:32,609 >> Em teoria, então, você pode mudar produtos da Oracle para Microsoft 744 00:35:32,609 --> 00:35:34,650 ou vice-versa, ou qualquer coisa outra coisa, e você literalmente 745 00:35:34,650 --> 00:35:36,920 mudar nada sobre seu código. 746 00:35:36,920 --> 00:35:40,180 A realidade, porém, é, às vezes você desistir de recursos como resultado. 747 00:35:40,180 --> 00:35:43,860 Você pode ter escolhido um produto porque ele tem esses recursos de valor agregado, 748 00:35:43,860 --> 00:35:46,610 e você está agora não usá-las conscientemente. 749 00:35:46,610 --> 00:35:51,630 >> E informalmente, a maioria das empresas tendem Nunca se afastar do seu banco de dados. 750 00:35:51,630 --> 00:35:54,002 Assim, enquanto este é um bom tem recurso, a realidade 751 00:35:54,002 --> 00:35:55,960 é, se você está revendo seu banco de dados, você está 752 00:35:55,960 --> 00:35:59,890 provavelmente fazendo cachos de outras alterações de qualquer maneira, que você não necessariamente 753 00:35:59,890 --> 00:36:01,360 precisa antecipar isso. 754 00:36:01,360 --> 00:36:03,720 Portanto, é indiscutivelmente over-engenharia do problema, 755 00:36:03,720 --> 00:36:05,670 mas realmente depende do contexto. 756 00:36:05,670 --> 00:36:09,960 Mas, em teoria, o SQL é compartilhado entre estes diferentes produtos. 757 00:36:09,960 --> 00:36:11,560 Realmente boas perguntas. 758 00:36:11,560 --> 00:36:12,272 Sim. 759 00:36:12,272 --> 00:36:13,147 >> AUDIÊNCIA: [inaudível] 760 00:36:13,147 --> 00:36:17,820 761 00:36:17,820 --> 00:36:21,480 >> DAVID MALAN: Sim, então você pode pensar um banco de dados 762 00:36:21,480 --> 00:36:25,020 é apenas um servidor, no final de do dia, e no interior do referido servidor 763 00:36:25,020 --> 00:36:28,670 é um monte de tabelas, linhas e colunas. 764 00:36:28,670 --> 00:36:33,410 E quando você envia uma consulta como esta a partir do programa, o seu site, 765 00:36:33,410 --> 00:36:39,340 escrito em Java, Ruby, Python, qualquer que seja, o servidor está recebendo este comando 766 00:36:39,340 --> 00:36:41,660 e interpretando-a literalmente, da mesma forma 767 00:36:41,660 --> 00:36:43,660 discutimos anteriormente com linguagens interpretadas, 768 00:36:43,660 --> 00:36:47,333 e, em seguida, realizar alguma ação sobre a zero ou mais linhas em zero ou mais tabelas. 769 00:36:47,333 --> 00:36:48,208 AUDIÊNCIA: [inaudível] 770 00:36:48,208 --> 00:36:53,540 771 00:36:53,540 --> 00:36:55,070 >> DAVID MALAN: Exatamente, exatamente. 772 00:36:55,070 --> 00:36:58,450 Assim, o pseudocódigo para algo como isso pode ser isso. 773 00:36:58,450 --> 00:37:02,450 Em seu arquivo PHP ou o seu arquivo Python ou seu arquivo de Java, 774 00:37:02,450 --> 00:37:09,210 você teria de código pseudo-código, ou Risco-como blocos como, se visitas de usuários 775 00:37:09,210 --> 00:37:19,870 acme.com/register~~V pela primeira vez, em seguida, inserir usuários e assim por diante. 776 00:37:19,870 --> 00:37:22,619 E gostaríamos de traduzir isso para código mais concreto no final. 777 00:37:22,619 --> 00:37:24,660 Mas, realmente, temos tudo os blocos de construção aqui, 778 00:37:24,660 --> 00:37:27,680 mesmo que nós estamos ignorando alguns das etapas de implementação. 779 00:37:27,680 --> 00:37:31,560 >> Então deixe-me encontrar a falha com o que nós maravilhosamente fez apenas um momento atrás. 780 00:37:31,560 --> 00:37:36,470 Você criou uma bonita tabela completa para os usuários. 781 00:37:36,470 --> 00:37:38,920 É certo, poderíamos implementar -lo em algumas maneiras diferentes, 782 00:37:38,920 --> 00:37:43,030 mas você tem realmente nos levou abaixo a path-- e eu digo-lhe, 783 00:37:43,030 --> 00:37:48,080 mas é provavelmente o meu fault-- de um bastante banco de dados de aplicação ineficiente. 784 00:37:48,080 --> 00:37:49,950 Não é normalizado. 785 00:37:49,950 --> 00:37:52,320 >> E por normalizada quero dizer lá vai ser, 786 00:37:52,320 --> 00:37:57,380 ao longo do tempo, uma redundância significativa, e, por conseguinte, ineficiência, 787 00:37:57,380 --> 00:38:00,210 que é desperdício de espaço. 788 00:38:00,210 --> 00:38:05,650 Com base em apenas o que você vê aqui, pode você imagina que este desperdício de espaço 789 00:38:05,650 --> 00:38:08,710 vai vêm, ao longo do tempo, à medida que mais e mais usuários registar 790 00:38:08,710 --> 00:38:10,860 para o seu site? 791 00:38:10,860 --> 00:38:13,047 O que os dados podem tornar-se redundantes? 792 00:38:13,047 --> 00:38:19,084 793 00:38:19,084 --> 00:38:20,940 >> AUDIÊNCIA: [inaudível] 794 00:38:20,940 --> 00:38:22,686 >> DAVID MALAN: Por que você quer dizer isso? 795 00:38:22,686 --> 00:38:23,561 AUDIÊNCIA: [inaudível] 796 00:38:23,561 --> 00:38:32,180 797 00:38:32,180 --> 00:38:32,930 DAVID MALAN: Yeah. 798 00:38:32,930 --> 00:38:35,622 E vamos supor que para os fins de hoje que isso é verdade. 799 00:38:35,622 --> 00:38:38,330 Acontece que, e nós aprendemos isso da maneira mais difícil, isso não é verdade. 800 00:38:38,330 --> 00:38:41,670 De alguma forma, várias cidades têm, de alguma forma, o mesmo código postal, 801 00:38:41,670 --> 00:38:43,390 que quebra essa intuição maravilhosa. 802 00:38:43,390 --> 00:38:46,180 Mas vamos supor que isso seja verdade, porque é quase sempre verdadeiro. 803 00:38:46,180 --> 00:38:51,390 Então, suponhamos que um código postal é sempre associada com a mesma cidade 804 00:38:51,390 --> 00:38:53,600 e do estado, que é uma espécie da suposição razoável, 805 00:38:53,600 --> 00:38:54,840 mas incorreta, verifica-se. 806 00:38:54,840 --> 00:38:57,310 Mas uma suposição razoável para fins de hoje. 807 00:38:57,310 --> 00:39:01,650 >> Em seguida, suponha que eu vivo em Cambridge, MA, de acordo com a tabela do usuário, 808 00:39:01,650 --> 00:39:04,100 e suponha que Lauren Scully vive em Cambridge, MA, 809 00:39:04,100 --> 00:39:06,120 e suponha que Kareem vive em Cambridge, MA, 810 00:39:06,120 --> 00:39:10,400 e Arwa vive em Cambridge, MA, todos nós, em 02138. 811 00:39:10,400 --> 00:39:15,890 Por que estamos lembrando Cambridge, MA, 02138 para todos os quatro de nós? 812 00:39:15,890 --> 00:39:18,903 O que deve ser suficiente para se lembrar? 813 00:39:18,903 --> 00:39:20,249 >> AUDIÊNCIA: [inaudível] 814 00:39:20,249 --> 00:39:21,540 DAVID MALAN: Apenas o CEP. 815 00:39:21,540 --> 00:39:25,080 Basta que existe 02138, porque você sabe o que poderíamos fazer? 816 00:39:25,080 --> 00:39:32,650 Poderíamos ficar um pouco sofisticados aqui e aqui, definir outra mesa 817 00:39:32,650 --> 00:39:35,850 onde é que isto vai ser o nome, este vai ser o tipo, 818 00:39:35,850 --> 00:39:38,840 este vai ser o comprimento, e daí em diante, eu sou 819 00:39:38,840 --> 00:39:42,900 vai chamar este meu cidades mesa. 820 00:39:42,900 --> 00:39:47,011 Isto foi chamado, de Naturalmente, a minha tabela de usuários. 821 00:39:47,011 --> 00:39:49,885 E então o que devo colocar aqui para o meu cidades mesa, que você acha? 822 00:39:49,885 --> 00:39:53,605 823 00:39:53,605 --> 00:39:54,535 >> AUDIÊNCIA: [inaudível] 824 00:39:54,535 --> 00:39:55,930 >> DAVID MALAN: Yeah. 825 00:39:55,930 --> 00:40:01,440 Então zip e estado e cidade. 826 00:40:01,440 --> 00:40:05,350 E assim o tipo aqui, vamos dizer este vai ser um char 5 novamente, 827 00:40:05,350 --> 00:40:06,750 sujeitas ao debate de mais cedo. 828 00:40:06,750 --> 00:40:14,810 Esta será uma enumeração, talvez como antes, ea cidade será um varchar 50. 829 00:40:14,810 --> 00:40:17,960 E agora o que eu ganho para apagar a partir desta tabela 830 00:40:17,960 --> 00:40:21,995 para eliminar essa ineficiência? 831 00:40:21,995 --> 00:40:23,100 >> AUDIÊNCIA: [inaudível] 832 00:40:23,100 --> 00:40:23,850 DAVID MALAN: Nice. 833 00:40:23,850 --> 00:40:30,239 Estado e município ir embora, então eu tenho agora eliminada a ineficácia potencial 834 00:40:30,239 --> 00:40:33,280 de forma redundante lembrar, Cambridge, MA, Cambridge, MA, Cambridge, MA, 835 00:40:33,280 --> 00:40:35,712 Cambridge, MA, que, esperançosamente nunca vai mudar. 836 00:40:35,712 --> 00:40:37,670 E mesmo se isso acontecer, é minorly chato, agora 837 00:40:37,670 --> 00:40:39,750 que eu tenho que mudar -lo em várias linhas, 838 00:40:39,750 --> 00:40:43,770 enquanto que aqui, eu só podia mudá-lo em um só lugar. 839 00:40:43,770 --> 00:40:46,890 >> Agora, qual é o trade-off, talvez? 840 00:40:46,890 --> 00:40:48,020 Este foi super conveniente. 841 00:40:48,020 --> 00:40:50,730 Tinha todos os meus dados bem juntos. 842 00:40:50,730 --> 00:40:53,644 Mas o que é claramente o caso agora? 843 00:40:53,644 --> 00:40:55,684 >> AUDIÊNCIA: [inaudível] 844 00:40:55,684 --> 00:40:58,100 DAVID MALAN: Exatamente, e eu sou feliz que você usou a palavra juntar-se, 845 00:40:58,100 --> 00:41:01,320 porque essa é realmente a palavra-chave, no mundo dos bancos de dados relacionais 846 00:41:01,320 --> 00:41:05,270 em SQL, é uma palavra real você pode digitar ou pelo menos transmitir. 847 00:41:05,270 --> 00:41:09,280 E, na verdade, o que temos agora que fazer para seleccionar a informação completa de David é 848 00:41:09,280 --> 00:41:19,700 algo como selecione Estrela usuários, participar de cidades, on-- e agora 849 00:41:19,700 --> 00:41:24,010 Eu vou apenas mover para uma segunda linha de modo que esta é igual a users.zip fits-- 850 00:41:24,010 --> 00:41:34,570 cities.zip, onde users.ID é igual a 1. 851 00:41:34,570 --> 00:41:35,550 >> Então o que está acontecendo? 852 00:41:35,550 --> 00:41:38,970 É feio olhando, mas você pode tipo de lê-lo esquerda para a direita, de cima para baixo. 853 00:41:38,970 --> 00:41:41,030 Select estrela de usuários é o mesmo que antes, 854 00:41:41,030 --> 00:41:42,930 mas não é dos usuários, por si só. 855 00:41:42,930 --> 00:41:45,910 É de usuários se juntar cidades. 856 00:41:45,910 --> 00:41:48,520 O que eu estou juntando essas duas tabelas em? 857 00:41:48,520 --> 00:41:51,820 Bem, aparentemente, o usuários mesas zip campo, 858 00:41:51,820 --> 00:41:54,810 e este período é apenas especial sintaxe para expressar essa idéia, 859 00:41:54,810 --> 00:41:58,130 e esta é a cidades tabelas campo zip. 860 00:41:58,130 --> 00:42:01,580 Eu quero aqueles dois para ser igual, mas eu quero para selecionar, em última instância 861 00:42:01,580 --> 00:42:06,280 apenas as linhas onde ID na tabela de usuários 862 00:42:06,280 --> 00:42:08,730 é igual a 1, que passou a ser meu. 863 00:42:08,730 --> 00:42:11,781 >> E só para ficar claro, a programador, tipicamente, quando 864 00:42:11,781 --> 00:42:14,780 codificar algo como o número 1, porque caso contrário o site só 865 00:42:14,780 --> 00:42:17,630 suporta David ou o primeiro utilizador, 866 00:42:17,630 --> 00:42:20,720 em vez disso fazer algo como ID, onde 867 00:42:20,720 --> 00:42:22,510 isto representa um variável, que algo 868 00:42:22,510 --> 00:42:26,210 pode mudar ao longo do tempo, similar em espírito para o que eu disse anteriormente 869 00:42:26,210 --> 00:42:28,080 com esses tipos de espaços reservados. 870 00:42:28,080 --> 00:42:30,396 Mas, por agora vamos apenas codificá-lo como um. 871 00:42:30,396 --> 00:42:31,520 E então o que é que isto significa? 872 00:42:31,520 --> 00:42:35,100 Bem, uma boa maneira de visualizar isso é que, se esta mão é a tabela de usuários, 873 00:42:35,100 --> 00:42:38,090 e este lado é o zips mesa, nós somos tipo de finding-- 874 00:42:38,090 --> 00:42:41,330 e as pontas dos meus dedos estão zip aqui, e as pontas dos meus dedos 875 00:42:41,330 --> 00:42:43,740 aqui estão zip, você está tipo de intertravamento que 876 00:42:43,740 --> 00:42:47,950 de modo que você receber de volta o que resulta tabela original, por realmente se juntar 877 00:42:47,950 --> 00:42:49,590 as duas tabelas no campo comum. 878 00:42:49,590 --> 00:42:50,840 E não tem que ser fecho de correr. 879 00:42:50,840 --> 00:42:54,460 Poderia ser mais que qualquer outra coisa, mas zip é bom, porque um, é curto, 880 00:42:54,460 --> 00:42:56,470 dois, é sempre a mesmo comprimento, então não há 881 00:42:56,470 --> 00:43:02,270 uma verdadeira eficiência para o Olivier aqui proposto 882 00:43:02,270 --> 00:43:05,200 com factoring o zip, e [Inaudível] propondo que se livrar 883 00:43:05,200 --> 00:43:07,110 da cidade e estados. 884 00:43:07,110 --> 00:43:11,370 >> Portanto, este é o processo conhecido como normalização. 885 00:43:11,370 --> 00:43:14,171 Qualquer dúvida sobre isso? 886 00:43:14,171 --> 00:43:16,170 Bem, deixe-me salientar este é o tipo de coisa, 887 00:43:16,170 --> 00:43:19,202 mesmo que seja bastante baixo nível, Nesta discussão, que você pensaria 888 00:43:19,202 --> 00:43:20,910 você está tipo de obtenção perdido nas ervas daninhas, 889 00:43:20,910 --> 00:43:26,690 esta é uma manifestação de um amplo oportunidade para os desenvolvedores de ser ruim. 890 00:43:26,690 --> 00:43:29,600 E, na verdade, mesmo quando, em cursos que eu ensinei, quando nós tivemos, 891 00:43:29,600 --> 00:43:32,290 por exemplo, inexperiente programadores de graduação 892 00:43:32,290 --> 00:43:35,920 construir sites, à primeira vista, os sites podem olhar fantástico. 893 00:43:35,920 --> 00:43:38,280 E eles têm todo o funcionalidade foi solicitada, 894 00:43:38,280 --> 00:43:40,650 os desenvolvedores fizeram um bom trabalho. 895 00:43:40,650 --> 00:43:43,370 >> Mas eles não sabiam necessariamente o suficiente sobre o design de banco de dados 896 00:43:43,370 --> 00:43:46,680 ou eles não pensar muito o suficiente sobre os tipos de dados 897 00:43:46,680 --> 00:43:49,220 e os tipos de usuários das website ia ter, 898 00:43:49,220 --> 00:43:53,240 e nós achamos, então, seis meses depois, depois que se formou ou mudaram, 899 00:43:53,240 --> 00:43:56,016 que porra, o nosso website é realmente, realmente lento. 900 00:43:56,016 --> 00:43:58,890 E eu não estou nem falando de ter milhões ou milhares de usuários. 901 00:43:58,890 --> 00:44:02,580 Quero dizer algumas centenas de usuários no campus, todos os quais gostaria de, por exemplo, 902 00:44:02,580 --> 00:44:04,870 compras para cursos na Ao mesmo tempo, eles são 903 00:44:04,870 --> 00:44:07,010 usando esse catálogo de cursos aplicação mencionei 904 00:44:07,010 --> 00:44:10,410 ea coisa está ficando realmente lento porque não havia índices. 905 00:44:10,410 --> 00:44:13,740 Não houve estrelas vermelhas, por assim falar, ou não teve necessariamente 906 00:44:13,740 --> 00:44:17,690 fatoramos dados comuns a obter algumas economias de espaço. 907 00:44:17,690 --> 00:44:21,880 >> E assim, quando vetar um desenvolvedor ou pessoa base de dados ou semelhantes, 908 00:44:21,880 --> 00:44:25,864 os tipos de perguntas para pensar é ainda, aquando da revisão do código de alguém, 909 00:44:25,864 --> 00:44:28,530 quer dizer, não necessariamente olhar através de todo o seu código, mas dizer, 910 00:44:28,530 --> 00:44:30,154 vamos olhar através das tabelas de banco de dados. 911 00:44:30,154 --> 00:44:31,150 O que você está armazenando? 912 00:44:31,150 --> 00:44:33,941 E então a dizer, bem, espere um minuto, porque você está usando um número inteiro? 913 00:44:33,941 --> 00:44:36,224 E se temos 4 bilhões e uma destas linhas? 914 00:44:36,224 --> 00:44:38,140 E estes tipos de perguntas é uma oportunidade 915 00:44:38,140 --> 00:44:40,170 ao tipo de empurrar para trás e ter uma noção de onde 916 00:44:40,170 --> 00:44:42,300 se você não está confortável fazendo -lo, ter alguém mais técnico 917 00:44:42,300 --> 00:44:45,425 essas perguntas, de se ou não a pessoa realmente sabe seu material. 918 00:44:45,425 --> 00:44:47,890 E este é o tipo de coisas, também, que as pessoas 919 00:44:47,890 --> 00:44:50,540 na internet que são auto-didatas, talvez 920 00:44:50,540 --> 00:44:53,920 aprender com menos frequência, porque você não necessariamente se deparar com ela 921 00:44:53,920 --> 00:44:56,630 tanto, porque você pode obter o banco de dados instalado e funcionando, 922 00:44:56,630 --> 00:44:58,880 mas a menos que você já leu -se em tutoriais ou sido 923 00:44:58,880 --> 00:45:01,880 contou sobre normalização de banco de dados e indexação e desempenho, 924 00:45:01,880 --> 00:45:04,255 estes são os tipos de coisas que vão te machucar. 925 00:45:04,255 --> 00:45:07,480 E você poderia pensar, ou um mau engenheiro Pode-se dizer, oh, bem, nós melhores salários 926 00:45:07,480 --> 00:45:09,600 para uma base de dados maior ou uma base de dados mais rapidamente 927 00:45:09,600 --> 00:45:13,360 ou apenas jogar dinheiro com isso, escala vertical, não é necessariamente assim. 928 00:45:13,360 --> 00:45:16,920 Se você vai em-- e você pode ir em depois os índices fact-- e adicionar, 929 00:45:16,920 --> 00:45:20,320 e isso pode levar algumas horas para o banco de dados para construir que os novos dados 930 00:45:20,320 --> 00:45:24,100 estrutura que me referi anteriormente, você ainda pode corrigir isso depois do fato, 931 00:45:24,100 --> 00:45:26,180 que este é onde você começar a distinguir 932 00:45:26,180 --> 00:45:28,830 bons designers de bad os designers, não só esteticamente, 933 00:45:28,830 --> 00:45:32,972 mas em termos de performance também. 934 00:45:32,972 --> 00:45:33,555 Alguma pergunta? 935 00:45:33,555 --> 00:45:36,420 936 00:45:36,420 --> 00:45:37,480 Não? 937 00:45:37,480 --> 00:45:41,980 Assim, para noSQL, que era o outro tipo de banco de dados a que aludi anteriormente, 938 00:45:41,980 --> 00:45:43,490 você não tem linhas e colunas. 939 00:45:43,490 --> 00:45:47,000 Em vez disso, você teria algo que parece um pouco mais como este. 940 00:45:47,000 --> 00:45:48,630 Vou usar uma sintaxe comum. 941 00:45:48,630 --> 00:45:51,270 chaves acontecer ser usado aqui bastante. 942 00:45:51,270 --> 00:45:55,400 Você pode ter algo como o primeiro nome é David, 943 00:45:55,400 --> 00:46:00,180 você pode ter passado nome é Malan, citações, 944 00:46:00,180 --> 00:46:07,530 você pode ter ID é-- desculpe-me, whoops-- ID é 1, 945 00:46:07,530 --> 00:46:13,410 e-mail é malan@harvard.edu, e não vou incomoda digitando o resto, e em seguida 946 00:46:13,410 --> 00:46:14,380 algumas outras coisas. 947 00:46:14,380 --> 00:46:17,380 >> Em outras palavras, esta é uma representação textual 948 00:46:17,380 --> 00:46:20,720 do que nós geralmente chamamos um objeto em um programa de computador. 949 00:46:20,720 --> 00:46:26,079 E um objeto é geralmente apenas uma coleção de pares de valores-chave. 950 00:46:26,079 --> 00:46:27,370 Então, novamente, este tema recorrente. 951 00:46:27,370 --> 00:46:30,440 Vimos pares de valores-chave em HTML, vimos pares de chaves de valor agora 952 00:46:30,440 --> 00:46:34,020 no contexto dos bancos de dados, e nós vi pares de chave-valor no contexto 953 00:46:34,020 --> 00:46:35,970 de, penso eu, uma linguagem mais cedo hoje. 954 00:46:35,970 --> 00:46:36,890 Continua a subir. 955 00:46:36,890 --> 00:46:39,620 E, de fato, isso é realmente os dados que se resume a, 956 00:46:39,620 --> 00:46:44,240 dados e metadados, ou valores e chaves, respectivamente. 957 00:46:44,240 --> 00:46:47,430 >> Assim, um não-relacional banco de dados, com base algo 958 00:46:47,430 --> 00:46:50,680 em objetos, onde apenas se aglomeram tudo junto e colocá-lo 959 00:46:50,680 --> 00:46:55,640 na memória, seria geralmente retratado como, ou pensado, como este. 960 00:46:55,640 --> 00:47:00,500 E eu vou deixar isso agora como um tipo de abordagem alternativa. 961 00:47:00,500 --> 00:47:03,750 E um não é necessariamente melhor do que o outro. 962 00:47:03,750 --> 00:47:07,310 Na verdade, muito em voga nos dias de hoje são sistemas de banco de dados 963 00:47:07,310 --> 00:47:11,942 como MongoDB e Redis e alguns outras ferramentas, disponíveis gratuitamente, 964 00:47:11,942 --> 00:47:13,400 mas eles estão cada vez mais em voga. 965 00:47:13,400 --> 00:47:18,850 Em parte porque eles oferecem adicional apresenta mais de estas abordagens tabulares, 966 00:47:18,850 --> 00:47:20,850 mas também porque eles são um pouco mais fácil de usar, 967 00:47:20,850 --> 00:47:24,099 porque você não tem que pensar tão duro sobre um monte dessas decisões de design. 968 00:47:24,099 --> 00:47:25,970 Então prós e contras. 969 00:47:25,970 --> 00:47:29,740 Então percebo que há opções além do que acabamos de passar tempo com. 970 00:47:29,740 --> 00:47:32,310 >> Então, vamos fazer isso. 971 00:47:32,310 --> 00:47:37,870 Vamos fazer a transição um pouco volta agora para a programação web, 972 00:47:37,870 --> 00:47:40,470 de modo que nós tipo de concluir hoje com algo 973 00:47:40,470 --> 00:47:43,930 Isso é um pouco hands-on, preenchendo algumas lacunas de ontem. 974 00:47:43,930 --> 00:47:45,340 Deixe-me ir a este primeiro. 975 00:47:45,340 --> 00:47:49,310 Então recordar que ontem tivemos alguns HTML canônica 976 00:47:49,310 --> 00:47:55,110 páginas que tiveram Inicialmente, apenas HTML, e em seguida secundariamente teve CSS, 977 00:47:55,110 --> 00:47:56,620 folhas de estilo em cascata. 978 00:47:56,620 --> 00:47:59,830 Esta é uma nova tag que não fez veja ontem, ou habitam sobre, 979 00:47:59,830 --> 00:48:01,490 chamado tag script. 980 00:48:01,490 --> 00:48:05,830 >> Acontece que você pode realmente incorporar um linguagem chamada JavaScript no seu web 981 00:48:05,830 --> 00:48:08,310 página e fazer o seu web páginas fazer alguma coisa. 982 00:48:08,310 --> 00:48:09,710 Então, o que quero dizer com isso? 983 00:48:09,710 --> 00:48:12,630 Bem, deixe-me ir em frente e apenas emprestar este código para um momento. 984 00:48:12,630 --> 00:48:15,860 Eu estou indo para ir para Cloud9, não há necessidade para ir lá vos ainda, 985 00:48:15,860 --> 00:48:21,350 e eu vou chamar este alert.HTML. 986 00:48:21,350 --> 00:48:23,650 Eu estou indo para colar no meu arquivo aqui. 987 00:48:23,650 --> 00:48:32,070 E só para esclarecer o que eu fiz, deixe -me ir para este endereço e ir para alertar, 988 00:48:32,070 --> 00:48:33,870 e você vê o Olá Mundo. 989 00:48:33,870 --> 00:48:35,440 >> Mas este é o tipo de underwhelming. 990 00:48:35,440 --> 00:48:37,410 Eu quero fazer algo um pouco diferente. 991 00:48:37,410 --> 00:48:40,610 Então, eu vou realmente fazer isso. 992 00:48:40,610 --> 00:48:43,820 Eu estou indo para ir aqui e, e entre as minhas marcas de script, 993 00:48:43,820 --> 00:48:53,460 dizem alert ( 'Olá, mundo "); então, observe é um pouco desleixado, mas eu tenho HTML, 994 00:48:53,460 --> 00:48:56,180 no interior dos quais é um linguagem chamada JavaScript, 995 00:48:56,180 --> 00:48:59,420 e é isso que é chamado de chamada de função ou chamada de procedimento. 996 00:48:59,420 --> 00:49:04,500 Este é um verbo, literalmente, neste caso, e eu estou chamando funcionalidade código 997 00:49:04,500 --> 00:49:06,310 que outra pessoa escreveu. 998 00:49:06,310 --> 00:49:09,630 >> Assim que a funcionalidade é um alerta, então vamos ir para esta página 999 00:49:09,630 --> 00:49:14,046 agora e clique recarga, e agora você ver um pouco de interatividade. 1000 00:49:14,046 --> 00:49:15,420 É uma espécie de velha escola e feio. 1001 00:49:15,420 --> 00:49:18,580 Este tipo de lembra-o da pop-ups, talvez, do passado 1002 00:49:18,580 --> 00:49:22,030 mas fez fazer algo um pouco mais programática. 1003 00:49:22,030 --> 00:49:26,940 >> Assim, mais do que isso, vamos fazer algo mais interessante. 1004 00:49:26,940 --> 00:49:30,980 Deixe-me entrar aqui e se livrar dessa. 1005 00:49:30,980 --> 00:49:33,840 E eu estou indo para ir em frente e criar uma forma como fizemos ontem. 1006 00:49:33,840 --> 00:49:34,840 Na verdade, você sabe o quê? 1007 00:49:34,840 --> 00:49:37,350 Eu estou indo para ir para google.html, que nós 1008 00:49:37,350 --> 00:49:43,027 começou ontem, que parecia este, através do qual temos procurado por gato 1009 00:49:43,027 --> 00:49:45,360 Mas note que há uma espécie de bug na versão atual. 1010 00:49:45,360 --> 00:49:49,770 Ele trabalha para gatos, mas suponha que Eu não cooperar e eu digitar nada, 1011 00:49:49,770 --> 00:49:53,290 e eu simplesmente clique em enviar. 1012 00:49:53,290 --> 00:49:54,540 Esse tipo de comportamento estranho. 1013 00:49:54,540 --> 00:49:57,300 me levou para o verdadeiro Google, não me deu uma mensagem de erro. 1014 00:49:57,300 --> 00:50:00,590 Eu gostaria de dizer ao usuário você precisa nos dar um valor. 1015 00:50:00,590 --> 00:50:01,780 >> Então, como podemos fazer isso? 1016 00:50:01,780 --> 00:50:06,790 Bem, deixe-me voltar para Cloud9 e deixe-me ir para o topo da minha página 1017 00:50:06,790 --> 00:50:11,980 e adicionar uma marca de script como este, onde Eu estou indo para escrever algum código JavaScript. 1018 00:50:11,980 --> 00:50:15,420 E eu vou fazer o seguinte. 1019 00:50:15,420 --> 00:50:22,910 Se (document.getelementByID-- e recordação que nós falamos sobre isso antes, 1020 00:50:22,910 --> 00:50:23,960 essa função. 1021 00:50:23,960 --> 00:50:25,310 O ID é que eu quero chegar? 1022 00:50:25,310 --> 00:50:33,050 Eu quero ficar q, e eu vou digamos equivale a nada, como isto-- 1023 00:50:33,050 --> 00:50:38,220 na verdade, deixe-me usar aspas duplas apenas para consistency-- é igual a nada, 1024 00:50:38,220 --> 00:50:46,650 em seguida, alert ( "Por favor, escreva uma consulta") aqui. 1025 00:50:46,650 --> 00:50:49,200 >> Então, eu tenho o que parece ser algo como uma condição. 1026 00:50:49,200 --> 00:50:51,410 Nós vimos essa idéia geral no risco. 1027 00:50:51,410 --> 00:50:54,240 É como um daqueles quebra-cabeça peças que olhou como esta. 1028 00:50:54,240 --> 00:50:55,780 E o que estou dizendo? 1029 00:50:55,780 --> 00:50:59,520 Bem, aqui em baixo, repare que eu sou vamos fazer o seguinte. 1030 00:50:59,520 --> 00:51:02,790 Eu vou dar esta forma campo não apenas um nome de q, que 1031 00:51:02,790 --> 00:51:06,630 é o que é passado para o Google, mas estou vai dar-lhe um identificador local, 1032 00:51:06,630 --> 00:51:07,630 também chamado Q. 1033 00:51:07,630 --> 00:51:11,780 Mas eu poderia chamar isso de qualquer coisa que eu quero, eu só vou mantê-lo simples 1034 00:51:11,780 --> 00:51:14,570 e também chamá-lo q, apenas para simplificar. 1035 00:51:14,570 --> 00:51:17,650 >> E agora eu vou fazer algo um pouco mais. 1036 00:51:17,650 --> 00:51:22,600 Sobre os campos do formulário aqui, eu vou adicionar o que é chamado um manipulador de eventos. 1037 00:51:22,600 --> 00:51:32,260 Em apresentar, eu quero chamar uma função chamada de validação. 1038 00:51:32,260 --> 00:51:35,520 Isso ainda não existe, este palavra, ou isso validar verbo, 1039 00:51:35,520 --> 00:51:38,560 porque o que eu vou fazer -se aqui agora é adicionar algum código. 1040 00:51:38,560 --> 00:51:42,200 >> Eu vou dizer a função de validação. 1041 00:51:42,200 --> 00:51:48,280 Eu estou indo para recuar este e adicionar outro chaveta aqui e outro aqui. 1042 00:51:48,280 --> 00:51:50,110 Considere o que isso está fazendo agora. 1043 00:51:50,110 --> 00:51:54,210 Eu tenho agora-- pensar nisso como criei o meu própria peça do puzzle que não tinha anteriormente 1044 00:51:54,210 --> 00:51:57,440 existem, e eu chamei esse quebra-cabeça peça a peça de validação de quebra-cabeça. 1045 00:51:57,440 --> 00:52:01,620 Seu objetivo na vida é executar as quatro linhas de código dentro do mesmo. 1046 00:52:01,620 --> 00:52:04,940 >> Se document.getElementById de modo conceitualmente, 1047 00:52:04,940 --> 00:52:09,380 que está indo para ir para o elemento, o elemento HTML cuja única 1048 00:52:09,380 --> 00:52:12,930 idéia é apenas q, e, em seguida, mesmo que a sintaxe parece um pouco estranho, 1049 00:52:12,930 --> 00:52:16,430 que a igualdade é igual significa apenas iguais. 1050 00:52:16,430 --> 00:52:20,950 Então isso significa que se o elemento com o identificador único de q, quando obtido, 1051 00:52:20,950 --> 00:52:25,700 não tem valor, ele apenas é igual a entre aspas, nada lá, 1052 00:52:25,700 --> 00:52:27,170 então o que eu quero fazer? 1053 00:52:27,170 --> 00:52:29,360 Quero gritar com o usuário. 1054 00:52:29,360 --> 00:52:31,710 >> E nós não iremos grande detalhe aqui. 1055 00:52:31,710 --> 00:52:32,960 Vou retornar falso. 1056 00:52:32,960 --> 00:52:34,380 Que é um erro. 1057 00:52:34,380 --> 00:52:38,746 Senão, eu vou retornar verdadeiro. 1058 00:52:38,746 --> 00:52:40,120 Assim, ou ele funcionou ou não. 1059 00:52:40,120 --> 00:52:41,800 Falso ou verdadeiro. 1060 00:52:41,800 --> 00:52:47,820 E agora, se eu não cometer erros, deixe-me salvar este e recarregue esta. 1061 00:52:47,820 --> 00:52:50,940 E deixe-me verificar apenas o dobro Eu não, na verdade, fazer quaisquer erros de digitação, 1062 00:52:50,940 --> 00:52:52,690 então eu não me envergonhar. 1063 00:52:52,690 --> 00:52:54,240 Vamos ver se isso funciona. 1064 00:52:54,240 --> 00:52:56,930 >> Então agora eu vou digitar gatos. 1065 00:52:56,930 --> 00:52:59,421 Ele ainda funciona, ou funciona meia, pelo menos. 1066 00:52:59,421 --> 00:53:02,170 Agora deixe-me carregá-lo, e agora vamos me tente enviar sem digitar 1067 00:53:02,170 --> 00:53:05,860 anything-- droga, ele quebrou. 1068 00:53:05,860 --> 00:53:06,430 Um momento. 1069 00:53:06,430 --> 00:53:09,380 1070 00:53:09,380 --> 00:53:12,660 Deixe-me abrir o console, [Inaudível] log, recarregue a página. 1071 00:53:12,660 --> 00:53:13,576 Deixe-me tentar novamente. 1072 00:53:13,576 --> 00:53:17,000 1073 00:53:17,000 --> 00:53:17,501 Oh, droga. 1074 00:53:17,501 --> 00:53:18,000 Eu esqueci. 1075 00:53:18,000 --> 00:53:18,630 Eu fiz um erro de digitação. 1076 00:53:18,630 --> 00:53:20,760 Lembro-me o que é. 1077 00:53:20,760 --> 00:53:21,350 .valor. 1078 00:53:21,350 --> 00:53:27,060 Eu quis dizer se o valor do elemento cujo ID é q 1079 00:53:27,060 --> 00:53:29,800 é igual a isso, então gritar com o usuário. 1080 00:53:29,800 --> 00:53:31,870 >> Então, agora deixe-me prendo a respiração novamente. 1081 00:53:31,870 --> 00:53:33,480 Aqui vamos nós. 1082 00:53:33,480 --> 00:53:34,130 Aqui vamos nós. 1083 00:53:34,130 --> 00:53:35,010 Por favor, escreva uma consulta. 1084 00:53:35,010 --> 00:53:36,840 Portanto, não é me deixar passar. 1085 00:53:36,840 --> 00:53:40,210 I podem ser tipo de brincalhão com isso, e em vez de verificação de nenhum valor, 1086 00:53:40,210 --> 00:53:46,720 Eu posso dizer algo como: Chega de procurar gatos, 1087 00:53:46,720 --> 00:53:51,150 e agora podemos apenas mais divertidamente deixá a busca do usuário para os cães se ele ou ela 1088 00:53:51,150 --> 00:53:57,490 quer, ou se eu entrar aqui e procurar gatos, agora eu não posso. 1089 00:53:57,490 --> 00:53:58,690 >> Então qual é o takeaway aqui? 1090 00:53:58,690 --> 00:54:03,010 Então, um, nós introduzimos em nosso mundo de HTML e CSS, 1091 00:54:03,010 --> 00:54:04,320 funcionalidade de programação. 1092 00:54:04,320 --> 00:54:06,300 Eu posso realmente agora tomar decisões em código. 1093 00:54:06,300 --> 00:54:10,570 Anteriormente, tudo o que eu poderia fazer é marcar conteúdo textual ou conteúdo gráfico 1094 00:54:10,570 --> 00:54:13,080 e dizer-lhe o que procurar como e onde exibir. 1095 00:54:13,080 --> 00:54:16,650 Agora eu posso realmente pedir perguntas da página web 1096 00:54:16,650 --> 00:54:20,010 e tomar decisões baseadas sobre ele, e solicitar ao usuário 1097 00:54:20,010 --> 00:54:22,780 se eu precisar gritar com ele ou ela. 1098 00:54:22,780 --> 00:54:28,740 >> Então, vamos tentar algo no nosso próprio com este. 1099 00:54:28,740 --> 00:54:33,350 Vá em frente, deixe-me abrir o próximo slide aqui, e apenas de salientar uma coisa. 1100 00:54:33,350 --> 00:54:37,250 Assim como com CSS, podemos fatorar nosso código JavaScript para um arquivo separado, 1101 00:54:37,250 --> 00:54:40,660 você pode fazer a mesma coisa com JavaScript como com CSS. 1102 00:54:40,660 --> 00:54:44,520 E você usa que o uso de uma fonte atributo da tag script. 1103 00:54:44,520 --> 00:54:46,540 Mas não vamos complicar as coisas para agora. 1104 00:54:46,540 --> 00:54:50,440 Em vez disso, se você pudesse ir para não desta página, 1105 00:54:50,440 --> 00:55:02,690 mas-- deixe-me mover esta em torno de order-- ir, se pudesse, esta página aqui. 1106 00:55:02,690 --> 00:55:03,592 Este URL aqui. 1107 00:55:03,592 --> 00:55:04,550 É em lâminas de hoje. 1108 00:55:04,550 --> 00:55:07,133 Você pode ter que recarregar porque Eu adicionei um par de coisa. 1109 00:55:07,133 --> 00:55:09,970 1110 00:55:09,970 --> 00:55:13,890 >> Mas vá lá onde alguns puzzles esperam. 1111 00:55:13,890 --> 00:55:16,670 E isso vai nos dar uma chance, em um contexto um pouco mais divertido, 1112 00:55:16,670 --> 00:55:20,610 a se envolver com algum JavaScript. 1113 00:55:20,610 --> 00:55:25,505 E quando você chegar lá, Vou explicar o que espera. 1114 00:55:25,505 --> 00:55:47,350 1115 00:55:47,350 --> 00:55:47,850 Obter verde. 1116 00:55:47,850 --> 00:56:03,063 1117 00:56:03,063 --> 00:56:03,562 Definir azul. 1118 00:56:03,562 --> 00:56:11,030 1119 00:56:11,030 --> 00:56:13,930 Define verde, define vermelho. 1120 00:56:13,930 --> 00:56:19,220 1121 00:56:19,220 --> 00:56:20,220 Oops. 1122 00:56:20,220 --> 00:56:22,330 Desculpa. 1123 00:56:22,330 --> 00:56:27,630 >> Esta é a medida da nossa documentação para este desafio. 1124 00:56:27,630 --> 00:56:29,920 E isso vai funcionar da seguinte forma. 1125 00:56:29,920 --> 00:56:33,340 Então, o que você tem no presente A página é um monte 1126 00:56:33,340 --> 00:56:38,024 de quebra-cabeças imagem por um amigo na Universidade de Stanford. 1127 00:56:38,024 --> 00:56:41,190 Então, o que você está vendo aqui é quase tipo de um desses enigmas olho mágico, 1128 00:56:41,190 --> 00:56:43,815 mas se você só olhar para ele, nada vai pop em você. 1129 00:56:43,815 --> 00:56:46,000 Em vez disso, algo está escondidas nesta imagem. 1130 00:56:46,000 --> 00:56:47,790 E está escondido da seguinte maneira. 1131 00:56:47,790 --> 00:56:51,740 Imagens, como você sabe, pode ser composta de apenas três cores. 1132 00:56:51,740 --> 00:56:53,346 Alguns vermelho, um pouco de azul, e um pouco de verde. 1133 00:56:53,346 --> 00:56:55,220 E nós podemos fazer toda a cores no arco-íris 1134 00:56:55,220 --> 00:56:57,570 misturando estes três cores de alguma forma. 1135 00:56:57,570 --> 00:57:01,940 >> Portanto, este parece na maior parte verde e azul, mas como Nick diz aqui, 1136 00:57:01,940 --> 00:57:04,060 esta imagem Enigma de ferro é um quebra-cabeça. 1137 00:57:04,060 --> 00:57:06,780 Ele contém uma imagem de algo famoso, no entanto, 1138 00:57:06,780 --> 00:57:08,310 a imagem foi distorcida. 1139 00:57:08,310 --> 00:57:11,500 O objeto famoso é nos valores de vermelho. 1140 00:57:11,500 --> 00:57:13,810 valores No entanto, o vermelho tem sido dividido por 10. 1141 00:57:13,810 --> 00:57:16,230 Assim, eles são muito pequenas por um factor de 10. 1142 00:57:16,230 --> 00:57:18,280 Portanto, em outras palavras, Nick tomou uma imagem original, 1143 00:57:18,280 --> 00:57:21,500 e ele dessaturado todos do vermelho a partir dele, 1144 00:57:21,500 --> 00:57:23,850 diminuindo a quantidade de vermelho tinta, se você, nele. 1145 00:57:23,850 --> 00:57:26,060 >> Os valores de azul e verde estão apenas sem sentido, 1146 00:57:26,060 --> 00:57:30,000 valores aleatórios, também conhecido como ruído concebidos para obscurecer a imagem real. 1147 00:57:30,000 --> 00:57:32,250 Então, o que Nick fez foi ele atenuada ao vermelho e, em seguida, 1148 00:57:32,250 --> 00:57:34,380 ele só jogou aleatório quantidades de azul e verde 1149 00:57:34,380 --> 00:57:37,590 na imagem para tipo de obscura o que é, na verdade, ainda está lá. 1150 00:57:37,590 --> 00:57:41,089 Você deve desfazer essas distorções para revelar a imagem. 1151 00:57:41,089 --> 00:57:44,255 Em primeiro lugar, definir todos os valores azuis e verdes a zero para tirá-los do caminho, 1152 00:57:44,255 --> 00:57:48,700 e olhar para o resultado. Então multiplicar cada valor vermelho por 10, 1153 00:57:48,700 --> 00:57:51,720 escalando para trás até aproximadamente o seu valor final. 1154 00:57:51,720 --> 00:57:53,035 O que é o famoso objeto? 1155 00:57:53,035 --> 00:57:57,920 >> Então, tudo que você tem este retângulo no seu browser agora. 1156 00:57:57,920 --> 00:58:00,830 E perceber que há alguma código inicial, por assim dizer. 1157 00:58:00,830 --> 00:58:04,370 Este é o código JavaScript que Nick tem escrito para você. 1158 00:58:04,370 --> 00:58:07,250 E note que não há uma linha no meio que 1159 00:58:07,250 --> 00:58:10,380 começa com uma barra de barra, que é o que é geralmente chamado de um comentário. 1160 00:58:10,380 --> 00:58:14,660 Significa que é uma frase para o programador que não tem nenhum significado funcional. 1161 00:58:14,660 --> 00:58:16,520 É apenas uma sugestão visual para o ser humano. 1162 00:58:16,520 --> 00:58:18,670 >> Assim, você pode ir em frente e excluir apenas essa linha, 1163 00:58:18,670 --> 00:58:22,214 e ser super cuidado para não apagar ou alterar qualquer outra coisa. 1164 00:58:22,214 --> 00:58:25,130 E deixe-me levá-lo através o que este código faz e eu vou deixá-lo 1165 00:58:25,130 --> 00:58:28,580 a você para descobrir a imagem secreta. 1166 00:58:28,580 --> 00:58:32,226 Esta primeira linha aqui que eu acabei realçado dá-lhe o seguinte. 1167 00:58:32,226 --> 00:58:34,100 Do lado esquerdo, você tem o que é chamado 1168 00:58:34,100 --> 00:58:39,140 uma variável que Nick tem arbitrariamente, mas razoavelmente chamado im para a imagem. 1169 00:58:39,140 --> 00:58:41,660 No lado direito de que a igualdade de sinal, 1170 00:58:41,660 --> 00:58:45,240 ele está dizendo me dar um novo Citação, fecha aspas "imagem simples". 1171 00:58:45,240 --> 00:58:49,680 >> Imagem simples, neste contexto é o que é chamado de uma classe, bem, 1172 00:58:49,680 --> 00:58:53,910 é como uma espécie de class-- tecnicamente um prototype-- mas realmente, 1173 00:58:53,910 --> 00:58:58,000 isso está me dando um novo objeto, os conteúdos dos quais são o arquivo, 1174 00:58:58,000 --> 00:58:59,610 ferro-puzzle.png. 1175 00:58:59,610 --> 00:59:03,190 Em outras palavras, Nick criou essa noção de uma imagem simples 1176 00:59:03,190 --> 00:59:05,920 para que possamos, por pedagógica propósitos, brincar com a imagem 1177 00:59:05,920 --> 00:59:09,790 e alterar o seu vermelho, valores verde e azul. 1178 00:59:09,790 --> 00:59:11,750 >> E como vamos fazer isso? 1179 00:59:11,750 --> 00:59:15,360 Esta sintaxe um pouco enigmática aqui é como o bloco de repetição 1180 00:59:15,360 --> 00:59:19,140 que alguns de vocês viu em risco anteriormente hoje, onde você pode repetir 10 vezes. 1181 00:59:19,140 --> 00:59:22,220 Neste caso, Nick não tem codificado um número como 10. 1182 00:59:22,220 --> 00:59:28,020 Ao contrário, ele está dizendo, inicializar uma variável chamada x a 0, 1183 00:59:28,020 --> 00:59:33,180 verificar se x é menor que a largura da imagem. 1184 00:59:33,180 --> 00:59:38,160 >> E de modo a ser mais adequada, é a imagem variável, ponto significa ir para dentro dele 1185 00:59:38,160 --> 00:59:40,900 e obter a sua largura, e em seguida, parêntese aberto, fechado 1186 00:59:40,900 --> 00:59:43,687 paren é apenas uma maneira de um programador de dizer isto é uma função. 1187 00:59:43,687 --> 00:59:44,520 Este é um procedimento. 1188 00:59:44,520 --> 00:59:46,430 Esta é a funcionalidade alguém escreveu. 1189 00:59:46,430 --> 00:59:48,570 Usá-lo e dar-me de volta uma resposta. 1190 00:59:48,570 --> 00:59:53,610 E, em seguida, x ++ é uma maneira elegante de dizendo, depois de ter feito isso uma vez, 1191 00:59:53,610 --> 00:59:55,850 incrementar x por 1. 1192 00:59:55,850 --> 00:59:58,760 Em outras palavras, esta é a maneira de um programador 1193 00:59:58,760 --> 01:00:05,760 de induzir um loop que é indo para repetir 1194 01:00:05,760 --> 01:00:10,410 todas as colunas em uma imagem. 1195 01:00:10,410 --> 01:00:14,790 >> Uma imagem é apenas uma grade de pontos, linhas e colunas de pontos. 1196 01:00:14,790 --> 01:00:18,270 Esta é uma forma de iteração sobre todas as colunas. 1197 01:00:18,270 --> 01:00:20,770 E no interior, Enquanto isso, nós estamos interagindo 1198 01:00:20,770 --> 01:00:24,030 sobre as alturas, aqui e aqui e aqui. 1199 01:00:24,030 --> 01:00:29,442 Portanto, esta é apenas uma maneira de Traipsing, quase como uma máquina de escrever velha escola, 1200 01:00:29,442 --> 01:00:32,230 apenas para passar por cima da imagem inteira de forma iterativa. 1201 01:00:32,230 --> 01:00:36,370 Mesmo que não é bem integral claro, basta levar na fé, por agora, 1202 01:00:36,370 --> 01:00:38,880 que estas três linhas de código são juntos 1203 01:00:38,880 --> 01:00:43,090 vai permitir que você a olhar de forma iterativa em cada pixel, cada ponto na imagem. 1204 01:00:43,090 --> 01:00:43,790 >> O que é um pixel? 1205 01:00:43,790 --> 01:00:46,250 Bem, para ser claro, se olharmos no original e aumentar o zoom, 1206 01:00:46,250 --> 01:00:49,060 se você realmente colocar seus olhos a tela do computador, que é 1207 01:00:49,060 --> 01:00:53,510 apenas um monte de pontos, vários mil pontos embalados juntos lá. 1208 01:00:53,510 --> 01:00:56,180 E então o que você está prestes a fazer? 1209 01:00:56,180 --> 01:00:59,240 Cada um desses pontos, uma definição final, 1210 01:00:59,240 --> 01:01:06,350 é o resultado do que é geralmente chamado RGB, vermelho, verde, azul, que 1211 01:01:06,350 --> 01:01:09,940 mais uma vez, podem ser combinados para dar-lhe qualquer número de cores. 1212 01:01:09,940 --> 01:01:13,200 >> Na verdade, se você se lembra de muitos, muitos anos atrás, 1213 01:01:13,200 --> 01:01:17,320 ecrãs de projecção como estas coisas costumava ter nem uma lente, mas três. 1214 01:01:17,320 --> 01:01:20,700 Um deles cuspiu luz vermelha, um dos -los cuspir luz verde, um deles 1215 01:01:20,700 --> 01:01:21,600 cuspir luz azul. 1216 01:01:21,600 --> 01:01:24,391 E se você estivesse em uma escola média como eu era, onde eles nunca foram 1217 01:01:24,391 --> 01:01:27,000 alinhado corretamente, você era sempre assistir filmes de história 1218 01:01:27,000 --> 01:01:29,770 que foram ligeiramente distorcida, porque as três cores não eram 1219 01:01:29,770 --> 01:01:30,970 combinando adequadamente. 1220 01:01:30,970 --> 01:01:36,330 >> Mas verifica-se que cada um dos estes valores de vermelho, verde e azul, 1221 01:01:36,330 --> 01:01:37,980 pode ter um número que lhes estão associados. 1222 01:01:37,980 --> 01:01:42,500 Por exemplo, 0 para o vermelho significa que não há vermelho, 0 para o verde significa que não há verde, 1223 01:01:42,500 --> 01:01:45,120 e 0 para azul significa que não azul. 1224 01:01:45,120 --> 01:01:49,403 Então, se você não tem nenhum vermelho, não verde, e nenhum azul, a cor que você tem? 1225 01:01:49,403 --> 01:01:51,009 >> AUDIÊNCIA: [inaudível] 1226 01:01:51,009 --> 01:01:52,800 DAVID MALAN: Você faria espero que sim, é branco. 1227 01:01:52,800 --> 01:01:55,333 Infelizmente, este operates-- pena? 1228 01:01:55,333 --> 01:01:56,380 >> AUDIÊNCIA: [inaudível] 1229 01:01:56,380 --> 01:01:58,630 DAVID MALAN: Então você realmente tem preto, neste caso. 1230 01:01:58,630 --> 01:02:01,530 Então se você tem nenhum destes cores ligado, você tem preto. 1231 01:02:01,530 --> 01:02:06,510 No entanto, se você tem, digamos que um monte deles, como um monte de vermelho, 255 do mesmo, 1232 01:02:06,510 --> 01:02:10,340 um monte de verde, e um monte de azul, que é branco. 1233 01:02:10,340 --> 01:02:12,230 Então, esses são os dois extremos. 1234 01:02:12,230 --> 01:02:17,460 Então, por essa lógica, se eu tenho um monte de vermelho e nenhum verde e não azul, 1235 01:02:17,460 --> 01:02:18,485 que cor é essa? 1236 01:02:18,485 --> 01:02:19,360 AUDIÊNCIA: [inaudível] 1237 01:02:19,360 --> 01:02:20,610 DAVID MALAN: Certo, obviamente. 1238 01:02:20,610 --> 01:02:25,940 E, em seguida, nenhum vermelho, muito verde, não azul, e, em seguida, 1239 01:02:25,940 --> 01:02:29,590 se você have-- bem, vamos terminar que, apenas porque, mas isso, é claro, 1240 01:02:29,590 --> 01:02:31,350 agora, é azul. 1241 01:02:31,350 --> 01:02:33,030 E agora você pode combinar essas cores. 1242 01:02:33,030 --> 01:02:36,430 Agora, como um aparte, se algum de vós tem já fez algum projeto real site, 1243 01:02:36,430 --> 01:02:38,360 você pode realmente veja símbolos como este. 1244 01:02:38,360 --> 01:02:42,030 FFF-- e, na verdade, é provavelmente nem isso. 1245 01:02:42,030 --> 01:02:44,380 É FFFFFF. 1246 01:02:44,380 --> 01:02:48,970 >> Alguém já viu F de e E do e A through-- de modo que parece, 1247 01:02:48,970 --> 01:02:52,970 falamos ontem sobre decimal, e hoje, uma espécie de cerca decimal. 1248 01:02:52,970 --> 01:02:54,570 Hoje falamos sobre binário. 1249 01:02:54,570 --> 01:02:59,010 Acontece que, hexadecimal é muito sistema de base comum para usar em computação. 1250 01:02:59,010 --> 01:03:04,960 Binário é dois, decimal é 10, hexadecimal é 16. 1251 01:03:04,960 --> 01:03:08,640 E verifica-se, como fazer você contar em hexadecimal? 1252 01:03:08,640 --> 01:03:11,620 Zero, um, dois, três, quatro, cinco, seis, sete, oito, 1253 01:03:11,620 --> 01:03:14,730 nove, o que você usa depois das nove? 1254 01:03:14,730 --> 01:03:16,600 Qual é o próximo número? 1255 01:03:16,600 --> 01:03:19,180 Nós já utilizado zero. 1256 01:03:19,180 --> 01:03:20,570 Preciso de 16 destes. 1257 01:03:20,570 --> 01:03:25,770 Zero, um, dois, três, quatro, cinco, seis, sete, oito, nove, 1258 01:03:25,770 --> 01:03:27,520 você precisa de alguma convenção arbitrária. 1259 01:03:27,520 --> 01:03:30,810 >> E o que a humanidade decidiu algum tempo atrás, que depois das nove vem a letra 1260 01:03:30,810 --> 01:03:34,450 A e B e, em seguida, em seguida, C. Assim, o maneira que você contar em hexadecimal 1261 01:03:34,450 --> 01:03:37,040 é zero, um, dois, três, quatro, cinco, seis, sete, oito, nove, 1262 01:03:37,040 --> 01:03:42,880 A, B, C, D, E, F, e que vai contar lo todo o caminho, ao que parece, a 15. 1263 01:03:42,880 --> 01:03:47,850 Assim zero a 15 é igual a zero através F. Agora, por que é importante? 1264 01:03:47,850 --> 01:03:51,570 Bem, quando você tem dois f, é assim que você expressar 255. 1265 01:03:51,570 --> 01:03:54,350 >> Então, longa história curta, em o mundo do Photoshop, 1266 01:03:54,350 --> 01:03:57,299 que o software de design gráfico, no mundo do desenvolvimento web, 1267 01:03:57,299 --> 01:03:59,590 onde você tem muitas cores, é claro, para brincar, 1268 01:03:59,590 --> 01:04:02,350 muitas vezes os programadores expressar aqueles em hexadecimal, 1269 01:04:02,350 --> 01:04:05,260 só porque ele tende para ser um pouco mais simples. 1270 01:04:05,260 --> 01:04:07,850 Mesmo que à primeira vista é muito mais complexa. 1271 01:04:07,850 --> 01:04:11,590 >> Assim, em qualquer caso, esta é importante porque Nick at Stanford 1272 01:04:11,590 --> 01:04:15,100 nos deu seis pedaços de funcionalidade que você, os programadores iniciantes, 1273 01:04:15,100 --> 01:04:17,060 agora terá a capacidade de usar. 1274 01:04:17,060 --> 01:04:19,960 Incorporadas a esse web A página é de seis funções, 1275 01:04:19,960 --> 01:04:21,820 seis procedimentos que Nick escreveu. 1276 01:04:21,820 --> 01:04:26,800 Três deles vai te dar um número, um vermelho, um verde, ou um valor de azul. 1277 01:04:26,800 --> 01:04:28,787 Três deles irá definir esse valor. 1278 01:04:28,787 --> 01:04:30,620 E estes sublinhados são apenas espaços reservados, 1279 01:04:30,620 --> 01:04:32,600 de modo que você precisa saber quais são elas. 1280 01:04:32,600 --> 01:04:36,240 >> Assim, com estas três funções, A primeira destas coisas 1281 01:04:36,240 --> 01:04:39,190 vai ser uma coordenada x, e a segunda destas coisas 1282 01:04:39,190 --> 01:04:40,700 vai ser uma coordenada y. 1283 01:04:40,700 --> 01:04:44,650 Em outras palavras, o que pontilham, que pixels que você deseja obter o verde do, 1284 01:04:44,650 --> 01:04:46,480 obter o azul, obter o vermelho do. 1285 01:04:46,480 --> 01:04:51,440 E então aqui, este vai ser x, este vai ser um valor y, 1286 01:04:51,440 --> 01:04:55,379 e isso vai ser um número. 1287 01:04:55,379 --> 01:04:57,170 Então vamos fazer o primeiro linha deste conjunto 1288 01:04:57,170 --> 01:05:00,220 e então eu vou deixar para você para tentar deduzir o resto. 1289 01:05:00,220 --> 01:05:03,100 Assim, de acordo com as instruções nesta página, precisamos 1290 01:05:03,100 --> 01:05:08,960 para aumentar a vermelho por um factor de 10, e precisamos remover o verde 1291 01:05:08,960 --> 01:05:09,930 e remova o azul. 1292 01:05:09,930 --> 01:05:12,410 Vamos começar com os últimos cenários. 1293 01:05:12,410 --> 01:05:17,760 Então, se eu quiser, e eu vou para recuar usando alguns espaços, 1294 01:05:17,760 --> 01:05:22,291 se eu quiser definir o vermelho, o verde, ou o valor de azul, 1295 01:05:22,291 --> 01:05:23,540 Vou fazer o seguinte. 1296 01:05:23,540 --> 01:05:31,280 >> Imagem, im.setBlue, e, em seguida com base em minhas instruções aqui, 1297 01:05:31,280 --> 01:05:36,700 Quais são as três coisas que eu deveria tipo dentro de parênteses agora? 1298 01:05:36,700 --> 01:05:41,960 Eu preciso o valor x, o valor y, e que número 1299 01:05:41,960 --> 01:05:48,770 devo colocar aqui se eu quiser se livrar do azul, com base nessa história aqui? 1300 01:05:48,770 --> 01:05:49,630 Apenas zero. 1301 01:05:49,630 --> 01:05:52,420 Se eu não quero azul, eu sou apenas indo para alterá-lo para zero. 1302 01:05:52,420 --> 01:05:54,465 >> Agora vamos recapitular o que isso está fazendo. 1303 01:05:54,465 --> 01:05:56,970 1304 01:05:56,970 --> 01:06:01,170 Tenho aqui sobre estes topo segunda e terceira linhas, 1305 01:06:01,170 --> 01:06:04,080 I alegou dois loops, loops aninhados, se você 1306 01:06:04,080 --> 01:06:08,360 vai, que vai ter o efeito de progredir a partir da esquerda para a direita, 1307 01:06:08,360 --> 01:06:11,590 cima para baixo sobre toda a X os valores e todos os valores de y. 1308 01:06:11,590 --> 01:06:15,167 Porque mais uma vez, uma imagem apenas uma grade de linhas e colunas. 1309 01:06:15,167 --> 01:06:17,000 Portanto, esta vai ficar livrar de todo o azul. 1310 01:06:17,000 --> 01:06:18,627 Permita-me deixar na próxima linha para você. 1311 01:06:18,627 --> 01:06:20,043 Como faço para me livrar de todo o verde? 1312 01:06:20,043 --> 01:06:23,747 1313 01:06:23,747 --> 01:06:25,140 >> AUDIÊNCIA: [inaudível] 1314 01:06:25,140 --> 01:06:26,151 >> DAVID MALAN: Nice. 1315 01:06:26,151 --> 01:06:28,260 >> AUDIÊNCIA: [inaudível] 1316 01:06:28,260 --> 01:06:30,850 >> DAVID MALAN: Nice. 1317 01:06:30,850 --> 01:06:36,120 E eu vou diminuir o zoom, e apenas tomar o cuidado de que você não tenha feito quaisquer erros de digitação. 1318 01:06:36,120 --> 01:06:39,390 E se você estiver confortável com o que você fez, 1319 01:06:39,390 --> 01:06:42,936 vá em frente e clique no botão Executar / Salvar e ver o que você recebe. 1320 01:06:42,936 --> 01:06:46,982 1321 01:06:46,982 --> 01:06:48,690 E mais uma vez, fizemos apenas três alterações. 1322 01:06:48,690 --> 01:06:52,130 Nós excluído que o primeiro comentar e substituiu-o 1323 01:06:52,130 --> 01:06:53,575 com estas duas linhas de código. 1324 01:06:53,575 --> 01:06:55,742 1325 01:06:55,742 --> 01:06:58,450 E tudo bem se você precisa acertar o botão Run / Save algumas vezes 1326 01:06:58,450 --> 01:07:01,190 para corrigir alguma coisa. 1327 01:07:01,190 --> 01:07:03,610 >> E deixe-me também fazer zoom na minha código para que possa transcrever. 1328 01:07:03,610 --> 01:07:04,110 Boa. 1329 01:07:04,110 --> 01:07:08,720 Então eu vejo Andrew tem o que parece ser um erro. 1330 01:07:08,720 --> 01:07:11,110 Ele só tem um grande preta retângulo em sua tela. 1331 01:07:11,110 --> 01:07:13,120 Alguém tem um retângulo preto grande? 1332 01:07:13,120 --> 01:07:13,390 >> AUDIÊNCIA: Sim. 1333 01:07:13,390 --> 01:07:14,360 >> DAVID MALAN: retângulo preto grande? 1334 01:07:14,360 --> 01:07:16,068 OK, então vamos pensar sobre o que isso significa. 1335 01:07:16,068 --> 01:07:20,560 Dissemos que zero, zero, zero, para que o verde, não vermelho, não azul, 1336 01:07:20,560 --> 01:07:21,980 vai dar-lhe preto. 1337 01:07:21,980 --> 01:07:24,467 E verifica-se que a maioria dos nossos laptops 1338 01:07:24,467 --> 01:07:25,800 simplesmente não têm fidelidade suficiente. 1339 01:07:25,800 --> 01:07:27,750 Você não consegue dizer não é realmente algo lá. 1340 01:07:27,750 --> 01:07:30,340 E se você tipo de talvez se inclinar sua tela para a frente e para trás, 1341 01:07:30,340 --> 01:07:32,850 talvez você vê um coisinha lá? 1342 01:07:32,850 --> 01:07:34,820 Talvez, tipo, espécie de? 1343 01:07:34,820 --> 01:07:36,640 Não é perfeitamente preto. 1344 01:07:36,640 --> 01:07:38,050 >> AUDIÊNCIA: [inaudível] 1345 01:07:38,050 --> 01:07:39,510 >> DAVID MALAN: Spoiler! 1346 01:07:39,510 --> 01:07:42,610 Há algum vermelho lá, mas lembre-se a partir das especificações 1347 01:07:42,610 --> 01:07:44,940 do problema, Nick enfraquecida para baixo. 1348 01:07:44,940 --> 01:07:47,860 Ele desaturated-lo um pouco, mas não todo o caminho para zero. 1349 01:07:47,860 --> 01:07:51,670 Portanto, se queremos ampliar a quantidade de vermelho, deixe-me propor este truque. 1350 01:07:51,670 --> 01:07:53,750 Deixe-me fazer zoom na tela. 1351 01:07:53,750 --> 01:07:58,678 E deixe-me ir em frente e dizer quantidade igual im.getRed (x, y). 1352 01:07:58,678 --> 01:08:02,440 1353 01:08:02,440 --> 01:08:05,790 >> Esta linha de código está me dando algo chamado uma variável. 1354 01:08:05,790 --> 01:08:09,643 Eu tenho arbitrariamente, mas, sem dúvida, razoavelmente chamou minha variável que, 1355 01:08:09,643 --> 01:08:10,143 pelo visto? 1356 01:08:10,143 --> 01:08:13,530 1357 01:08:13,530 --> 01:08:14,340 Quantidade. 1358 01:08:14,340 --> 01:08:14,980 quantidade justa. 1359 01:08:14,980 --> 01:08:16,960 Eu poderia ter chamado ele qualquer coisa que eu quero, mas eu sou 1360 01:08:16,960 --> 01:08:19,490 utilizando esta outra função que eu descrevi anteriormente 1361 01:08:19,490 --> 01:08:25,359 para obter a quantidade de vermelho em x vírgula y. 1362 01:08:25,359 --> 01:08:27,520 Por que eu faria isso? 1363 01:08:27,520 --> 01:08:30,004 O que você quer fazer aqui? 1364 01:08:30,004 --> 01:08:32,910 1365 01:08:32,910 --> 01:08:33,619 Você precisa add-- 1366 01:08:33,619 --> 01:08:34,493 AUDIÊNCIA: [inaudível] 1367 01:08:34,493 --> 01:08:36,279 DAVID MALAN: Sim, talvez multiplicá-lo por 10. 1368 01:08:36,279 --> 01:08:38,862 E se você não sabe isso, eu sou indo para ir em frente e fazer isso. 1369 01:08:38,862 --> 01:08:42,060 Eu estou indo para ir em frente e por exemplo, eu quero a quantidade de vermelho 1370 01:08:42,060 --> 01:08:46,550 Eu quero ser o que quer está no vermelho, vezes 10, 1371 01:08:46,550 --> 01:08:50,330 ea estrela, o asterisco no seu teclado é as-- não usam x. 1372 01:08:50,330 --> 01:08:51,569 Use a estrela. 1373 01:08:51,569 --> 01:08:55,350 É assim que se multiplicam as coisas na maioria das linguagens de programação. 1374 01:08:55,350 --> 01:08:59,790 >> Assim, de acordo com a intuição de Kareem, armazenado nesta variável chamada montante, 1375 01:08:59,790 --> 01:09:03,649 é quanto vermelha Eu quero a xy localização. 1376 01:09:03,649 --> 01:09:11,500 Como, agora, eu faço o que Pixel ter esse número? 1377 01:09:11,500 --> 01:09:12,859 Você já fez isso antes. 1378 01:09:12,859 --> 01:09:17,666 Você define o verde eo azul para nenhum valor, a zero. 1379 01:09:17,666 --> 01:09:18,540 AUDIÊNCIA: [inaudível] 1380 01:09:18,540 --> 01:09:20,040 DAVID MALAN: Sim, bem você não quer que ele a 10. 1381 01:09:20,040 --> 01:09:21,460 Você já fez as contas aqui. 1382 01:09:21,460 --> 01:09:24,779 Então, estamos recebendo o valor de vermelho, que é um número baixo, presumivelmente. 1383 01:09:24,779 --> 01:09:26,180 Nós estamos multiplicando-se por 10. 1384 01:09:26,180 --> 01:09:29,139 O que você quer fazer com o montante variável agora? 1385 01:09:29,139 --> 01:09:30,130 >> AUDIÊNCIA: [inaudível] 1386 01:09:30,130 --> 01:09:30,880 >> DAVID MALAN: Nice. 1387 01:09:30,880 --> 01:09:34,616 Então im.set-- o quê? 1388 01:09:34,616 --> 01:09:35,640 >> AUDIÊNCIA: setRed. 1389 01:09:35,640 --> 01:09:39,760 >> DAVID MALAN: setRed, a localização XY. 1390 01:09:39,760 --> 01:09:40,260 Sim. 1391 01:09:40,260 --> 01:09:41,200 E apenas quantidade. 1392 01:09:41,200 --> 01:09:44,257 Em outras palavras, uma variável é um espaço reservado temporário 1393 01:09:44,257 --> 01:09:45,840 que você pode colocar o que quiser na. 1394 01:09:45,840 --> 01:09:48,680 Nós acontecer a estar colocando um número em que, no momento. 1395 01:09:48,680 --> 01:09:51,569 Temos multiplicado por 10 para torná-lo maior. 1396 01:09:51,569 --> 01:09:56,480 E agora eu estou substituindo essa variável como o terceiro argumento, ou entrada 1397 01:09:56,480 --> 01:09:57,810 para definir vermelho. 1398 01:09:57,810 --> 01:10:00,440 E assim que, depois de terminar isso, e tomar nota 1399 01:10:00,440 --> 01:10:02,330 dos pontos e vírgulas e dos parênteses. 1400 01:10:02,330 --> 01:10:06,290 >> Vá em frente e clique executar / salvar novamente, e você 1401 01:10:06,290 --> 01:10:10,690 deve ver, magicamente, o que era, na verdade, há. [? Arwa,?] Que está lá? 1402 01:10:10,690 --> 01:10:16,412 A torre Eiffel em pleno direito vermelho, não bastante escuro. 1403 01:10:16,412 --> 01:10:17,870 ele deve ser mais óbvio agora, sim? 1404 01:10:17,870 --> 01:10:18,840 ESTÁ BEM. 1405 01:10:18,840 --> 01:10:20,215 E Andrew, a caixa não mais negro? 1406 01:10:20,215 --> 01:10:21,090 AUDIÊNCIA: [inaudível] 1407 01:10:21,090 --> 01:10:22,180 DAVID MALAN: Tudo bem. 1408 01:10:22,180 --> 01:10:23,610 Então, eu vou manter isso na tela. 1409 01:10:23,610 --> 01:10:27,010 Se você quiser jogar com este mais tarde, eu vou recriar este para você. 1410 01:10:27,010 --> 01:10:29,140 Mas este código aqui fez exatamente isso. 1411 01:10:29,140 --> 01:10:31,460 Por que não fazemos outra. 1412 01:10:31,460 --> 01:10:33,880 Deixe-me rolar para baixo ligeiramente. 1413 01:10:33,880 --> 01:10:36,760 >> Portanto, neste caso, o projector não realmente fazer justiça. 1414 01:10:36,760 --> 01:10:40,486 Mas em suas telas, você provavelmente tem uma caixa muito vermelho e muito preto. 1415 01:10:40,486 --> 01:10:42,610 Isto, também, é um quebra-cabeça que mostra algo famoso. 1416 01:10:42,610 --> 01:10:44,193 No entanto, a imagem foi distorcida. 1417 01:10:44,193 --> 01:10:47,740 A imagem verdadeira, desta vez, é os valores em azul e verde. 1418 01:10:47,740 --> 01:10:51,820 No entanto, todos eles foram divididos em 20 de modo que os valores são muito pequenas. 1419 01:10:51,820 --> 01:10:54,660 Os valores de vermelho são apenas números aleatórios, o ruído. 1420 01:10:54,660 --> 01:10:57,190 Desfazer essas distorções para revelar a verdadeira imagem. 1421 01:10:57,190 --> 01:10:59,200 >> Então Nick diz-lhe então o que fazer. 1422 01:10:59,200 --> 01:11:04,290 Defina os valores de vermelho a zero, e então não estragar o que é. 1423 01:11:04,290 --> 01:11:07,110 Em seguida, multiplicar o azul e os valores verdes por 20. 1424 01:11:07,110 --> 01:11:09,820 Então, é quase o mesmo programa como antes, 1425 01:11:09,820 --> 01:11:11,380 mas você está invertendo o processo. 1426 01:11:11,380 --> 01:11:13,780 E porei o meu código de antes na tela no caso 1427 01:11:13,780 --> 01:11:16,650 você quer se referir a ele ou jogar mais com isso. 1428 01:11:16,650 --> 01:11:18,100 Deixe-me fazer zoom sobre isso. 1429 01:11:18,100 --> 01:11:21,450 Mas a imagem cobre resolver quebra-cabeça, o número dois. 1430 01:11:21,450 --> 01:11:37,623 1431 01:11:37,623 --> 01:11:40,580 >> AUDIÊNCIA: [inaudível] 1432 01:11:40,580 --> 01:11:44,010 >> DAVID MALAN: OK, então isso que eu sou Não vai dar como muitas dicas. 1433 01:11:44,010 --> 01:11:47,220 Então eu would-- oh, vamos ver, você tem um erro de digitação aqui. 1434 01:11:47,220 --> 01:11:49,621 Então lembre-se, este aqui realmente precisa ir lá. 1435 01:11:49,621 --> 01:11:52,870 Então, o que eu gostaria de propor, se você quiser se concentrar em um presente, não é a resposta. 1436 01:11:52,870 --> 01:11:57,060 Se você quiser transcrever isso, que deve obter o primeiro trabalho. 1437 01:11:57,060 --> 01:11:59,910 E então você pode usar isso como inspiração para a segunda. 1438 01:11:59,910 --> 01:12:02,230 Agradável. 1439 01:12:02,230 --> 01:12:02,730 Boa. 1440 01:12:02,730 --> 01:12:05,430 1441 01:12:05,430 --> 01:12:08,180 >> E para os curiosos, este é um exemplo simples 1442 01:12:08,180 --> 01:12:11,080 de uma ciência ou uma arte chamada esteganografia, 1443 01:12:11,080 --> 01:12:14,100 a arte de esconder informação em imagens. 1444 01:12:14,100 --> 01:12:16,890 Normalmente, as imagens podem ser marca d'água muito descaradamente 1445 01:12:16,890 --> 01:12:19,500 com um logotipo no fundo canto, mas claramente, você 1446 01:12:19,500 --> 01:12:22,070 pode ser muito mais sofisticado sobre isso e, na verdade, 1447 01:12:22,070 --> 01:12:25,050 esconder outras imagens nas Imagens alguma forma com esta técnica. 1448 01:12:25,050 --> 01:12:59,890 1449 01:12:59,890 --> 01:13:05,770 >> Tome mais 30 segundos, e depois vamos pelo menos, anunciar o que você deve ver. 1450 01:13:05,770 --> 01:13:08,330 E eu vou deixar o terceiro um como um exercício em casa, 1451 01:13:08,330 --> 01:13:11,353 Se você gostaria de mais de um desafiar neste fim de semana. 1452 01:13:11,353 --> 01:13:18,240 1453 01:13:18,240 --> 01:13:20,390 E eu acho que Andrew pode ter chegado primeiro. 1454 01:13:20,390 --> 01:13:22,645 O que é a segunda imagem, Andrew? 1455 01:13:22,645 --> 01:13:23,920 >> AUDIÊNCIA: Estátua da Liberdade. 1456 01:13:23,920 --> 01:13:28,500 >> DAVID MALAN: Estátua de liberdade será a resposta desta vez. 1457 01:13:28,500 --> 01:13:31,140 Então, novamente, apenas algumas simples exemplos, cujo objetivo 1458 01:13:31,140 --> 01:13:35,040 é dar-lhe um sentido de como temos traduzido zero pictórica 1459 01:13:35,040 --> 01:13:40,410 blocos para mais irritante e muito mais código complicado, mas todos os ideias 1460 01:13:40,410 --> 01:13:42,980 ainda são exactamente os mesmos, embora com a introdução 1461 01:13:42,980 --> 01:13:48,380 agora da noção de uma variável, sendo capaz de armazenar temporariamente algo. 1462 01:13:48,380 --> 01:13:51,750 >> Vamos fazer mais um hands-on, só para agora ligar os pontos 1463 01:13:51,750 --> 01:13:53,880 para algo um pouco mais do mundo real. 1464 01:13:53,880 --> 01:13:56,610 Quando estiver pronto, se pudesse vá a este URL na tela. 1465 01:13:56,610 --> 01:14:00,610 Isso também é em sua cópia do slides, developers.google.com/maps~~V. 1466 01:14:00,610 --> 01:14:03,660 Vamos realmente fazer alguma coisa verdadeiro, por assim dizer, na web 1467 01:14:03,660 --> 01:14:07,600 usando a API do Google Maps, ou interface de programação de aplicativo, 1468 01:14:07,600 --> 01:14:08,940 da seguinte forma. 1469 01:14:08,940 --> 01:14:12,341 >> Google, como muitas empresas, oferece uma série de funcionalidades livre 1470 01:14:12,341 --> 01:14:14,840 que você pode usar para construir o seu próprias aplicações interessantes. 1471 01:14:14,840 --> 01:14:18,890 Na verdade, se você já usou Uber para pegar um táxi ou um carro, 1472 01:14:18,890 --> 01:14:21,640 você provavelmente sabe que tem Uber Um mapa e mostra carros nele. 1473 01:14:21,640 --> 01:14:24,870 Isto é, o melhor que eu puder dizer, o Google Maps API. 1474 01:14:24,870 --> 01:14:28,884 Eles estão realmente usando mapas do Google, mas Uber não é uma empresa de mapeamento, 1475 01:14:28,884 --> 01:14:31,050 nem teria que ser uma problema particularmente interessante 1476 01:14:31,050 --> 01:14:33,510 para resolver no topo do seu problema serviço de carro. 1477 01:14:33,510 --> 01:14:35,510 E assim eles estão de pé, de novo, sobre os ombros 1478 01:14:35,510 --> 01:14:37,520 dos outros, Google neste caso. 1479 01:14:37,520 --> 01:14:42,850 Então eles usam mapas do Google, mas a sua própria serviços de veículos e outros tais características. 1480 01:14:42,850 --> 01:14:47,770 >> Então, nós estamos indo para tirar proveito deste para fazer o seguinte. 1481 01:14:47,770 --> 01:14:50,230 E se eu tenho ido muito rápido, apenas chamar-me mais em um momento. 1482 01:14:50,230 --> 01:14:53,500 Feliz para recapitular algumas das coisas de imagem. 1483 01:14:53,500 --> 01:14:56,290 Você deve ver a si mesmo em uma página como esta. 1484 01:14:56,290 --> 01:14:58,230 Tão bom, do Google, e eles estão entre os melhores 1485 01:14:58,230 --> 01:15:01,364 de fornecer não só APIs, mas APIs gratuitos que você 1486 01:15:01,364 --> 01:15:02,780 pode jogar com ou utilizar comercialmente. 1487 01:15:02,780 --> 01:15:06,450 Eles começar a cobrar-lhe se o seu uso é alto, mas fui em frente com antecedência 1488 01:15:06,450 --> 01:15:10,490 e assinado-nos para uma conta gratuita que, esperamos, 10 computadores 1489 01:15:10,490 --> 01:15:12,480 não vai desqualificar-nos para de repente. 1490 01:15:12,480 --> 01:15:14,320 Portanto, esperamos que este demonstração irá funcionar. 1491 01:15:14,320 --> 01:15:18,840 >> E notar que eles têm APIs para Android, iOS, serviços web e web, 1492 01:15:18,840 --> 01:15:19,620 seja o que for. 1493 01:15:19,620 --> 01:15:20,700 Vamos nos concentrar em web. 1494 01:15:20,700 --> 01:15:26,560 Então clique na caixa-de-rosa, web, e que vai levar você, espero, para uma página 1495 01:15:26,560 --> 01:15:27,630 Aqui. 1496 01:15:27,630 --> 01:15:29,335 E eles têm um monte de APIs. 1497 01:15:29,335 --> 01:15:31,210 E pode ser um pouco esmagadora em primeiro lugar, 1498 01:15:31,210 --> 01:15:33,000 mas eu vou conduzir-nos através do que nós queremos. 1499 01:15:33,000 --> 01:15:38,500 >> No canto superior esquerdo é o Google Maps JavaScript API, a API JavaScript. 1500 01:15:38,500 --> 01:15:40,380 Então vá em frente e clique aquele. 1501 01:15:40,380 --> 01:15:49,360 E que irá levá-lo agora para a página seguinte, demos e código de exemplo. 1502 01:15:49,360 --> 01:15:51,190 Deixe-me zoom out aqui. 1503 01:15:51,190 --> 01:15:56,300 E deixe-me levar-nos a-- rolar para baixo para onde ele diz passos de início rápido. 1504 01:15:56,300 --> 01:15:57,970 Sua tela deve ser semelhante a minha. 1505 01:15:57,970 --> 01:16:01,130 >> E há duas etapas, obter uma chave e começar a desenvolver. 1506 01:16:01,130 --> 01:16:04,190 Eu já fiz o primeiro passo para nós, recebendo uma chave chamada. 1507 01:16:04,190 --> 01:16:05,320 E esta é uma idéia comum. 1508 01:16:05,320 --> 01:16:09,210 Uma chave de API é geralmente apenas um número aleatório grande ou cadeia 1509 01:16:09,210 --> 01:16:11,130 que você é suposto para colar em seu código, 1510 01:16:11,130 --> 01:16:15,280 para que o Google sabe quem você é quando você está usando o seu serviço, sua API. 1511 01:16:15,280 --> 01:16:17,370 O que não significa que somos sendo cobrado nada. 1512 01:16:17,370 --> 01:16:21,030 E agora, clique, em vez de um, clique começar a desenvolver. 1513 01:16:21,030 --> 01:16:25,990 Se você poderia apenas acenar-me sobre se não tiver certeza de onde estamos. 1514 01:16:25,990 --> 01:16:28,040 >> Então vamos arranhar a superfície, aqui, mas o que 1515 01:16:28,040 --> 01:16:31,000 Eu pensei que seria convincente é realmente ter todos nós, 1516 01:16:31,000 --> 01:16:34,240 usando Cloud9 em uma janela e Neste tutorial em outra janela, 1517 01:16:34,240 --> 01:16:37,120 vamos realmente começar nossa própria aplicativo instalado e funcionando 1518 01:16:37,120 --> 01:16:40,920 que incorpora um Google Custom Roteiro em nossa própria página web, 1519 01:16:40,920 --> 01:16:43,010 e em seguida, adiciona uma ou duas características. 1520 01:16:43,010 --> 01:16:45,520 Mas vamos apenas arranhar a superfície do que podemos fazer. 1521 01:16:45,520 --> 01:16:47,020 >> Portanto, apenas uma verificação de sanidade rápida. 1522 01:16:47,020 --> 01:16:49,740 Estão todos a ver esta página, Google Maps JavaScript API? 1523 01:16:49,740 --> 01:16:50,872 Deve dizer começando. 1524 01:16:50,872 --> 01:16:53,330 Nós não estamos indo para percorrer a coisa toda por qualquer meio. 1525 01:16:53,330 --> 01:16:58,090 OK, em outra guia, se não o fizer tê-lo aberto, não entram em Cloud9 1526 01:16:58,090 --> 01:17:03,500 e obter-se apenas uma nova guia, em última instância. 1527 01:17:03,500 --> 01:17:11,070 Então, novamente, c9.io de ontem, c9.io, e apenas criar um novo arquivo. 1528 01:17:11,070 --> 01:17:13,500 E vá em frente e chamada ele quer que você gostaria. 1529 01:17:13,500 --> 01:17:16,495 Eu chamei o meu map.html. 1530 01:17:16,495 --> 01:17:17,870 Chamá-lo de qualquer coisa que termina em .html. 1531 01:17:17,870 --> 01:17:23,930 1532 01:17:23,930 --> 01:17:26,580 E você deve ser mais ou menos onde estou neste processo 1533 01:17:26,580 --> 01:17:31,470 com apenas um prompt piscando em um vazio aba chamada algo como map.html. 1534 01:17:31,470 --> 01:17:35,808 1535 01:17:35,808 --> 01:17:38,148 Ou arquivo, novo arquivo neste momento. 1536 01:17:38,148 --> 01:17:41,960 1537 01:17:41,960 --> 01:17:48,000 >> E agora, ao longo do Google Maps JavaScript API, 1538 01:17:48,000 --> 01:17:50,010 vamos pular leitura por tudo isso texto. 1539 01:17:50,010 --> 01:17:53,760 Mas note que Olá mundo é na verdade, em todos os lugares, você vê-lo agora. 1540 01:17:53,760 --> 01:17:58,020 Olá, mundo tem essa grande colorido exemplo de um grupo inteiro de HTML. 1541 01:17:58,020 --> 01:18:03,590 Vá em frente e copiar e colar só isso HTML, de modo que a partir do tipo doc no topo 1542 01:18:03,590 --> 01:18:08,810 todo o caminho para a tag HTML fim, ir em frente e copiar todos isso-- de novo, 1543 01:18:08,810 --> 01:18:14,430 que está sob o mundo da Olá example-- e colar que em seu guia Cloud9, 1544 01:18:14,430 --> 01:18:17,996 de modo que agora sua tela deve olhar mais ou menos como a minha. 1545 01:18:17,996 --> 01:18:22,280 1546 01:18:22,280 --> 01:18:24,520 >> E você pode salvá-lo, mas não carregá-lo ainda. 1547 01:18:24,520 --> 01:18:26,290 Vamos primeiro olhar o código e ver se nós 1548 01:18:26,290 --> 01:18:29,110 não se pode inferir ou aprender do que é Google 1549 01:18:29,110 --> 01:18:30,860 teve-nos cegamente copiar e colar. 1550 01:18:30,860 --> 01:18:33,334 Eles só querem ajudar, literalmente, um bom começo, 1551 01:18:33,334 --> 01:18:35,500 mas não há que muito complexidade realmente lá. 1552 01:18:35,500 --> 01:18:40,100 1553 01:18:40,100 --> 01:18:42,210 Todas as perguntas apenas ainda? 1554 01:18:42,210 --> 01:18:43,790 Estamos seguros para seguir em frente? 1555 01:18:43,790 --> 01:18:44,330 ESTÁ BEM. 1556 01:18:44,330 --> 01:18:46,800 >> Então, rapidamente, vamos fazer algumas rápidas checagens. 1557 01:18:46,800 --> 01:18:48,800 Uma linha do que eu ver, e espero que, você 1558 01:18:48,800 --> 01:18:51,710 Veja, o que isso significa, doctype HTML? 1559 01:18:51,710 --> 01:18:52,385 Kareem, lembra? 1560 01:18:52,385 --> 01:18:53,260 AUDIÊNCIA: [inaudível] 1561 01:18:53,260 --> 01:18:53,968 DAVID MALAN: Sim. 1562 01:18:53,968 --> 01:18:54,870 Aí vem HTML 5. 1563 01:18:54,870 --> 01:18:57,950 Enquanto isso, a linha dois no tela aqui significa navegador hey, 1564 01:18:57,950 --> 01:18:59,482 aqui vem o HTML real. 1565 01:18:59,482 --> 01:19:01,440 Linha três é hey navegador, aqui vem a cabeça. 1566 01:19:01,440 --> 01:19:04,260 Linha quatro é, é claro, ei navegador, aqui vem o título. 1567 01:19:04,260 --> 01:19:07,780 O que faz linha de cinco fazer? 1568 01:19:07,780 --> 01:19:09,930 Na verdade, isso não faz realmente fazer alguma coisa para nós. 1569 01:19:09,930 --> 01:19:13,340 Neste caso, ele apenas redimensiona a página para um padrão. Linha seis, 1570 01:19:13,340 --> 01:19:16,140 nós não falamos sobre, mas especifica a codificação de caracteres. 1571 01:19:16,140 --> 01:19:19,181 Há diferentes maneiras de codificar arquivos, especialmente para línguas estrangeiras. 1572 01:19:19,181 --> 01:19:21,100 UTF-8 apenas tende a ser o padrão. 1573 01:19:21,100 --> 01:19:26,580 >> Então agora vamos ver na linha de sete a 16, alguns CSS. 1574 01:19:26,580 --> 01:19:29,260 E mesmo que não tenha visto todas essas coisas antes, 1575 01:19:29,260 --> 01:19:30,810 podemos tipo de inferir. 1576 01:19:30,810 --> 01:19:37,075 Então alinhar oito meios, hey navegador, aplique todos os seguintes elementos aos quais duas marcas, 1577 01:19:37,075 --> 01:19:37,575 pelo visto? 1578 01:19:37,575 --> 01:19:40,650 1579 01:19:40,650 --> 01:19:41,701 O texto HTML e corpo. 1580 01:19:41,701 --> 01:19:43,200 Assim, a vírgula é a coisa nova lá. 1581 01:19:43,200 --> 01:19:46,140 E isso é apenas uma maneira de especificando várias marcas ao mesmo tempo. 1582 01:19:46,140 --> 01:19:47,640 >> Então nós temos as chaves. 1583 01:19:47,640 --> 01:19:51,170 Então, aparentemente, este informa ao navegador, fazer a altura da página 100%. 1584 01:19:51,170 --> 01:19:54,170 Assim, mesmo se há muito pouco conteúdo, fazer a página inteira, 1585 01:19:54,170 --> 01:19:55,530 fazer a coisa preencher a página. 1586 01:19:55,530 --> 01:19:57,524 Faça o mapa em última análise, preencher a página. 1587 01:19:57,524 --> 01:19:58,690 Margem, o que isso significa? 1588 01:19:58,690 --> 01:20:01,559 Isso é geralmente como arbitrária espaço em branco em torno das bordas 1589 01:20:01,559 --> 01:20:04,350 que alguns designer de navegador apenas decidiu deveria estar lá, porque 1590 01:20:04,350 --> 01:20:05,540 tipo de faz as coisas parecerem mais limpo. 1591 01:20:05,540 --> 01:20:06,498 Mas nós não queremos isso. 1592 01:20:06,498 --> 01:20:08,710 Queremos que o mapa vai todo o caminho para as bordas. 1593 01:20:08,710 --> 01:20:10,930 Enchimento, similares ao espírito da margens. 1594 01:20:10,930 --> 01:20:14,980 Margens significa fora, meios de preenchimento dentro, mas é o mesmo tipo de negócio. 1595 01:20:14,980 --> 01:20:17,520 É um pouco de um buffer entre você e as bordas. 1596 01:20:17,520 --> 01:20:21,170 >> E, em seguida, linha 13 é um bom oportunidade para uma revisão rápida. 1597 01:20:21,170 --> 01:20:26,440 O que faz sinal do mapa afiada Quer dizer, ou um mapa hashtag significa? 1598 01:20:26,440 --> 01:20:29,650 O que isso referir-se, em princípio? 1599 01:20:29,650 --> 01:20:31,485 >> AUDIÊNCIA: [inaudível] 1600 01:20:31,485 --> 01:20:32,360 DAVID MALAN: Exatamente. 1601 01:20:32,360 --> 01:20:36,900 Esta propriedade, esta propriedade CSS aplica-se a apenas uma coisa, a tag HTML 1602 01:20:36,900 --> 01:20:41,180 que tem um ID de citação, fecha aspas "mapa". 1603 01:20:41,180 --> 01:20:44,460 E agora vamos avançar rapidamente, percorra para a parte inferior do ficheiro, que 1604 01:20:44,460 --> 01:20:49,860 não é muito longe, e aviso on-line 19, se você colá-lo exatamente como eu fiz, 1605 01:20:49,860 --> 01:20:53,405 A linha 19 tem apenas um div, que é um divisão da página, que ontem eu 1606 01:20:53,405 --> 01:20:54,820 chamado de uma região rectangular. 1607 01:20:54,820 --> 01:20:55,820 Não tem nada nele tem. 1608 01:20:55,820 --> 01:20:57,550 É uma tag aberta, tag perto. 1609 01:20:57,550 --> 01:20:59,490 Mas ele tem uma identificação única. 1610 01:20:59,490 --> 01:21:02,090 >> Então, o que parece ser acontecendo aqui é Google 1611 01:21:02,090 --> 01:21:05,880 está preparando a nossa página web para tem uma altura total de 100%, 1612 01:21:05,880 --> 01:21:09,680 e nenhum preenchimento, sem margens, porque o que vamos para colocar dentro 1613 01:21:09,680 --> 01:21:13,647 desta div, cuja identificação única é mapa, é um mapa real incorporado. 1614 01:21:13,647 --> 01:21:15,480 E nós queremos que ele preencha a página e não apenas 1615 01:21:15,480 --> 01:21:17,560 haver algum pequeno retângulo no meio. 1616 01:21:17,560 --> 01:21:24,220 Assim, a linha 14 da mesma forma enfatiza, o mapear em si deve ter uma altura de 100%. 1617 01:21:24,220 --> 01:21:29,220 >> Então agora notar entre as linhas 20 e 28, este é o código JavaScript. 1618 01:21:29,220 --> 01:21:33,020 E isto é, mesmo que seja sintaticamente um pouco estranho, 1619 01:21:33,020 --> 01:21:34,730 Não há tudo o que muita coisa acontecendo aqui. 1620 01:21:34,730 --> 01:21:39,310 Na linha 21, este está declarando algo chamado uma variável. 1621 01:21:39,310 --> 01:21:42,030 Em vez de chamá-lo ascende, como fizemos antes, 1622 01:21:42,030 --> 01:21:44,500 nós estamos dizendo mais precisamente var, que apenas significa variável. 1623 01:21:44,500 --> 01:21:46,520 Poderíamos ter usado que, em código de Nick, mas não o fez, então eu 1624 01:21:46,520 --> 01:21:48,190 não se incomodou em fazê-lo também. 1625 01:21:48,190 --> 01:21:50,240 É uma variável chamada Roteiro, e então há 1626 01:21:50,240 --> 01:21:53,360 uma função que é aparentemente chamado initMap. 1627 01:21:53,360 --> 01:21:55,780 >> Portanto, este é como o nosso próprio costume parte do enigma em risco. 1628 01:21:55,780 --> 01:21:58,830 Nós criamos um pedaço de funcionalidade chamada initMap, 1629 01:21:58,830 --> 01:22:00,980 e você pode tipo de inferir Oque esta acontecendo aqui. 1630 01:22:00,980 --> 01:22:02,930 Do lado esquerdo, nós temos uma variável, 1631 01:22:02,930 --> 01:22:06,000 assim que nós estamos indo para colocar o seguinte coisa dentro dessa variável, 1632 01:22:06,000 --> 01:22:07,362 da direita para a esquerda. 1633 01:22:07,362 --> 01:22:11,940 O lado direito diz, hey navegador, dá-me um novo mapa do Google. 1634 01:22:11,940 --> 01:22:16,490 E google.maps.Map é apenas uma maneira funky de especificar que esta funcionalidade 1635 01:22:16,490 --> 01:22:19,790 pertence ao Google Maps. 1636 01:22:19,790 --> 01:22:23,010 >> Após os parênteses, temos visto isso antes, hey navegador, obter 1637 01:22:23,010 --> 01:22:29,210 me os elementos da página, o tag na página cuja identificação única é-- 1638 01:22:29,210 --> 01:22:30,710 >> AUDIÊNCIA: [inaudível] 1639 01:22:30,710 --> 01:22:31,790 >> DAVID MALAN: --map. 1640 01:22:31,790 --> 01:22:35,770 E o que está acontecendo, bem, juntos por essa linha, linha 23, 1641 01:22:35,770 --> 01:22:38,630 é, essencialmente, dizendo: hey navegador, vá buscar-me 1642 01:22:38,630 --> 01:22:42,800 que div vazia na página cuja identificação única é o mapa, 1643 01:22:42,800 --> 01:22:45,600 porque eu quero inserir em ele-- injetar nele, 1644 01:22:45,600 --> 01:22:49,520 se você will-- um monte de conteúdo que passa a ser proveniente da web, 1645 01:22:49,520 --> 01:22:50,427 subseqüentemente. 1646 01:22:50,427 --> 01:22:52,010 E o Google está fazendo tudo isso para nós. 1647 01:22:52,010 --> 01:22:55,350 >> Então, novamente, no final do dia, temos este exemplo de abstração. 1648 01:22:55,350 --> 01:22:58,610 Não tenho a menor idéia do que um mapa é ou como implementar um mapa API. 1649 01:22:58,610 --> 01:22:59,460 Nós não precisa. 1650 01:22:59,460 --> 01:23:02,740 Nós só precisa dizer o mapa onde colocar-se, e deixar 1651 01:23:02,740 --> 01:23:04,880 aqueles implementação subjacente detalhes para o Google. 1652 01:23:04,880 --> 01:23:08,190 Agora não há, aparentemente, duas peças de dados 1653 01:23:08,190 --> 01:23:11,940 que neste exemplo é fornecendo a API do Google. 1654 01:23:11,940 --> 01:23:16,450 Aparentemente, o centro do mapa, e o nível de zoom, por assim dizer. 1655 01:23:16,450 --> 01:23:21,390 >> E alguém reconhecê-los coordenadas, latitude e longitude? 1656 01:23:21,390 --> 01:23:24,364 Provavelmente não, mas podemos voltar ao tutorial, veja literalmente. 1657 01:23:24,364 --> 01:23:25,780 Mas vamos vê-lo em apenas um momento. 1658 01:23:25,780 --> 01:23:29,880 nível de zoom é um valor entre, eu não sei sabe, um em cada 13 ou algo parecido. 1659 01:23:29,880 --> 01:23:32,880 Ele só tem a ver com o quão longe você está ampliado ou reduzido, e é isso. 1660 01:23:32,880 --> 01:23:35,690 E agora no final de a página, linha de aviso 29-- 1661 01:23:35,690 --> 01:23:39,960 é um pouco feio, porque -lo wraps-- esta linha de código 1662 01:23:39,960 --> 01:23:44,570 é o que faz o download para o navegador API real do Google. 1663 01:23:44,570 --> 01:23:47,500 Todo o código que o do Google engenheiros têm escrito que implementar 1664 01:23:47,500 --> 01:23:50,000 Toda esta funcionalidade de mapas incorporáveis. 1665 01:23:50,000 --> 01:23:51,470 >> Agora não vamos mudar nada. 1666 01:23:51,470 --> 01:23:54,761 Se você está acompanhando, vá em frente e basta salvar o arquivo, se você realmente tem 1667 01:23:54,761 --> 01:23:55,760 o que eu tenho. 1668 01:23:55,760 --> 01:23:57,370 Ir para a sua URL. 1669 01:23:57,370 --> 01:23:59,820 Você pode clicar no botão Run em cima e que vai dizer 1670 01:23:59,820 --> 01:24:03,050 -lhe a URL do seu servidor web novamente. 1671 01:24:03,050 --> 01:24:06,010 E isso vai levar você para uma nova guia. 1672 01:24:06,010 --> 01:24:11,910 Se clicar em Abrir para map.html, e as probabilidades são que você está 1673 01:24:11,910 --> 01:24:15,520 indo para obter um alerta, uma mensagem de erro, não é? 1674 01:24:15,520 --> 01:24:18,570 Mensagem de erro, mensagem de erro? 1675 01:24:18,570 --> 01:24:21,170 >> Assim, infelizmente, o erro mensagem não é que esclarecedora 1676 01:24:21,170 --> 01:24:23,890 a menos que você realmente abrir o console, que guia especial que 1677 01:24:23,890 --> 01:24:27,110 abria ontem e um pouco mais cedo hoje. 1678 01:24:27,110 --> 01:24:29,445 Mas eu tropecei isso antes, então eu já 1679 01:24:29,445 --> 01:24:30,820 descobri qual é a solução. 1680 01:24:30,820 --> 01:24:34,440 Em lâminas de hoje, ou em vez disso, em Cloud9, aviso 1681 01:24:34,440 --> 01:24:36,430 que não fazer algo deliberadamente. 1682 01:24:36,430 --> 01:24:40,690 Observe que essa tag script linha 29, se você lê-lo, 1683 01:24:40,690 --> 01:24:44,440 é como maps.googleapis.com/ alguma coisa, alguma coisa, alguma coisa, 1684 01:24:44,440 --> 01:24:46,430 em seguida, perceber que alguém, um dos desenvolvedores, 1685 01:24:46,430 --> 01:24:50,040 escreveu em todas as capitais letras, sua chave de API. 1686 01:24:50,040 --> 01:24:51,700 >> Precisamos colar algo lá dentro. 1687 01:24:51,700 --> 01:24:53,450 E este foi o passo Eu fiz para nós antes, 1688 01:24:53,450 --> 01:24:57,190 e novamente eles podem lista negra -nos se, de repente, 12 ou mais de nós 1689 01:24:57,190 --> 01:24:59,470 começar a utilizar a mesma chave, mas vamos ver o que acontece. 1690 01:24:59,470 --> 01:25:03,030 Então, se você ir para hoje slides, um slide depois, há 1691 01:25:03,030 --> 01:25:07,070 esta cadeia muito badalado aparência do texto. 1692 01:25:07,070 --> 01:25:12,230 Vá em frente e apenas copiar e colá-lo onde ele diz que a sua chave de API. 1693 01:25:12,230 --> 01:25:15,120 Isso é o que eu inscreveu. 1694 01:25:15,120 --> 01:25:17,700 >> E, definitivamente, não tente digitando-lo manualmente, 1695 01:25:17,700 --> 01:25:21,210 porque se sente cheio com erros de digitação, potencialmente. 1696 01:25:21,210 --> 01:25:23,260 Então, basta copiar e colar isso. 1697 01:25:23,260 --> 01:25:26,090 E ele vai fazer a linha mais tempo, mas agora, só para ficar claro, 1698 01:25:26,090 --> 01:25:29,540 ele deve olhar um pouco mais como este, onde chave não é igual 1699 01:25:29,540 --> 01:25:32,200 capitalizados gritando com você. 1700 01:25:32,200 --> 01:25:34,810 Salve sua página, voltar para o outro guia, recarregar, 1701 01:25:34,810 --> 01:25:36,770 e esperamos ver um mapa de onde? 1702 01:25:36,770 --> 01:25:37,790 >> AUDIÊNCIA: Australia. 1703 01:25:37,790 --> 01:25:38,748 >> DAVID MALAN: Australia. 1704 01:25:38,748 --> 01:25:41,200 Assim, aparentemente, são aqueles do Coordenadas GPS da Austrália. 1705 01:25:41,200 --> 01:25:44,491 E deixe-me andar por aí por um momento e ajudar alguém que não está bastante lá, 1706 01:25:44,491 --> 01:25:47,729 mas deixe-me propor, através do Google, encontrar as coordenadas GPS da sua própria cidade natal 1707 01:25:47,729 --> 01:25:48,770 ou o seu próprio país de origem. 1708 01:25:48,770 --> 01:25:51,436 E, provavelmente, o Google pode transformar este -se, ou Wikipedia posso dizer. 1709 01:25:51,436 --> 01:25:54,410 Mas escolher dois valores diferentes de latitude e longitude, 1710 01:25:54,410 --> 01:25:57,530 voltar e colá-los, e em seguida, recarregar a página depois de salvar 1711 01:25:57,530 --> 01:26:00,718 e veja se você pode ter um Roteiro para a sua própria cidade natal. 1712 01:26:00,718 --> 01:26:04,500 1713 01:26:04,500 --> 01:26:08,042 >> E quando você é feito com que, o follow-up challenge-- 1714 01:26:08,042 --> 01:26:11,250 e eu vou dar um pouco menos sentido, deliberadamente, de modo que você deliberadamente 1715 01:26:11,250 --> 01:26:13,791 tem que lutar por um par minutos com a documentação, 1716 01:26:13,791 --> 01:26:18,740 mudar o mapa para não ser esta cartoonish padrão, mas um mapa de satélite. 1717 01:26:18,740 --> 01:26:24,600 Então, você realmente vê por satélite imagens em vez das cores bonitas. 1718 01:26:24,600 --> 01:26:29,710 >> E a dica que vou dar-lhe é alterar o tipo de mapa. 1719 01:26:29,710 --> 01:26:33,084 Volte para que a obtenção começou a página em busca de inspiração. 1720 01:26:33,084 --> 01:26:40,599 1721 01:26:40,599 --> 01:26:42,390 Como você pode ter recolhido, se você está procurando, 1722 01:26:42,390 --> 01:26:44,250 há tantos mais coisas que você pode fazer. 1723 01:26:44,250 --> 01:26:46,380 Alguns de vocês já têm alterado o tipo de mapa. 1724 01:26:46,380 --> 01:26:49,890 Mas você pode fazer-- por exemplo, deixe-me ir para algo que fizemos para o curso 1725 01:26:49,890 --> 01:26:52,050 I teach-- maps.cs50.net. 1726 01:26:52,050 --> 01:26:53,470 Um dos nossos graduandos fez isso. 1727 01:26:53,470 --> 01:26:58,890 Centramos a nossa mapa sobre Harvard Yard e sobrepor todos esses nomes de construção, 1728 01:26:58,890 --> 01:27:01,070 e tivemos ele adicione. 1729 01:27:01,070 --> 01:27:04,270 Então, se eu quiser procurar, por exemplo, Matthews Hall, 1730 01:27:04,270 --> 01:27:05,730 temos um pequeno menu drop-down. 1731 01:27:05,730 --> 01:27:09,080 E eu acho que ele está usando Bootstrap, o biblioteca discutimos anteriormente para isso. 1732 01:27:09,080 --> 01:27:12,190 E se você clicar em Matthews Hall,-lo imediatamente 1733 01:27:12,190 --> 01:27:14,790 salta o mapa para uma determinada localização, e mostra 1734 01:27:14,790 --> 01:27:16,440 -lhe uma imagem neste pequeno pop-up. 1735 01:27:16,440 --> 01:27:18,670 >> Mas mesmo esta pequena pop-up, nós não implementar. 1736 01:27:18,670 --> 01:27:27,521 Se eu rolar para baixo na nossa ficando começou a página e procure janelas de informações, 1737 01:27:27,521 --> 01:27:29,770 você verá que alguns dos funcionalidade você mesmo 1738 01:27:29,770 --> 01:27:31,561 pode adicionar, embora com um pouco mais complexidade, 1739 01:27:31,561 --> 01:27:33,970 é algo chamado uma janela de informações. 1740 01:27:33,970 --> 01:27:37,190 E se eu clicar em um exemplo aqui, e isso é o que é divertido, 1741 01:27:37,190 --> 01:27:40,530 você pode fazer coisas como esta, clicar em um marcador e, em seguida, voila, 1742 01:27:40,530 --> 01:27:42,400 informação aparece. 1743 01:27:42,400 --> 01:27:45,874 >> Então não temos muito introduzido recursos suficientes de JavaScript 1744 01:27:45,874 --> 01:27:49,040 para pintar um retrato de como exatamente você poderia ligar todas essas coisas juntas, 1745 01:27:49,040 --> 01:27:50,706 mas nós meio que arranhou a superfície. 1746 01:27:50,706 --> 01:27:53,140 Na verdade, o que eu fiz quando Eu cliquei em que marcador, 1747 01:27:53,140 --> 01:27:55,819 foi desencadear um evento, uma chamada no evento de clique. 1748 01:27:55,819 --> 01:27:57,610 E que se viu um evento hoje cedo, 1749 01:27:57,610 --> 01:28:00,670 o chamado caso apresentar, quando estávamos impedindo 1750 01:28:00,670 --> 01:28:02,490 o usuário de procurar gatos. 1751 01:28:02,490 --> 01:28:06,560 Então nós meio que escolheu e escolheu dentre todas essas várias características, 1752 01:28:06,560 --> 01:28:08,990 para dar-lhe um sentido, espera-se, do que você pode, na verdade, 1753 01:28:08,990 --> 01:28:11,000 fazer com um pouco mais conforto em programação, 1754 01:28:11,000 --> 01:28:12,587 e recursos totalmente gratuito. 1755 01:28:12,587 --> 01:28:15,856 1756 01:28:15,856 --> 01:28:18,770 >> Alguma pergunta? 1757 01:28:18,770 --> 01:28:19,790 Não? 1758 01:28:19,790 --> 01:28:22,542 Esta é a sua última chance, pelo menos hoje, em uma sexta-feira, 1759 01:28:22,542 --> 01:28:25,000 para conseguir alguma coisa fora de seu peito de modo que você sair daqui 1760 01:28:25,000 --> 01:28:27,067 sentindo-se confiante e confortável. 1761 01:28:27,067 --> 01:28:27,566 Sim. 1762 01:28:27,566 --> 01:28:29,740 >> AUDIÊNCIA: Por que não fazer você adicionar mais uma coisa? 1763 01:28:29,740 --> 01:28:32,720 >> DAVID MALAN: Oh meu Deus. 1764 01:28:32,720 --> 01:28:35,260 Eu preciso descansar neste fim de semana, eu acho. 1765 01:28:35,260 --> 01:28:36,180 Outras perguntas? 1766 01:28:36,180 --> 01:28:37,055 >> AUDIÊNCIA: [inaudível] 1767 01:28:37,055 --> 01:28:44,130 1768 01:28:44,130 --> 01:28:46,810 >> DAVID MALAN: Você can-- em Internet Explorer, descanse em paz, 1769 01:28:46,810 --> 01:28:49,310 você costumava ser capaz de colocar VB roteiro, roteiro básico virtual, 1770 01:28:49,310 --> 01:28:50,643 mas que realmente nunca pegou. 1771 01:28:50,643 --> 01:28:52,490 Portanto, a resposta curta é apenas JavaScript. 1772 01:28:52,490 --> 01:28:55,144 1773 01:28:55,144 --> 01:28:55,810 Outras perguntas? 1774 01:28:55,810 --> 01:28:58,427 1775 01:28:58,427 --> 01:28:59,760 Tudo bem, bem, deixe-me fazer isso. 1776 01:28:59,760 --> 01:29:02,070 Deixe-me pegar nossos colegas fora. 1777 01:29:02,070 --> 01:29:04,500 Eles têm algum tipo de avaliação formas que eles querem todos 1778 01:29:04,500 --> 01:29:06,310 gastar alguns minutos preenchendo. 1779 01:29:06,310 --> 01:29:08,775 Eles querem cobrar a forma e qualquer renúncias que você pode ter fora. 1780 01:29:08,775 --> 01:29:10,240 Eles também têm certificados. 1781 01:29:10,240 --> 01:29:12,380 Eu estou supondo que há ainda alguns lanches fora. 1782 01:29:12,380 --> 01:29:14,360 Deixa-me passar estes para fora, e se você tem dúvidas, entretanto, 1783 01:29:14,360 --> 01:29:17,120 Eu vou andar por aí mais individualmente e nós podemos ajudar a começar. 1784 01:29:17,120 --> 01:29:17,879 Sim, claro. 1785 01:29:17,879 --> 01:29:18,754 AUDIÊNCIA: [inaudível] 1786 01:29:18,754 --> 01:29:26,737 1787 01:29:26,737 --> 01:29:28,570 DAVID MALAN: Isso é normalmente verdade nos dias de hoje. 1788 01:29:28,570 --> 01:29:30,730 Certamente com web software, você está se inclinando 1789 01:29:30,730 --> 01:29:32,901 sobre os outros ou você está esteticamente usando coisas 1790 01:29:32,901 --> 01:29:35,400 como Bootstrap, para que você não tem que implementar o nível baixo 1791 01:29:35,400 --> 01:29:37,169 detalhes de menus e botões e tudo mais. 1792 01:29:37,169 --> 01:29:39,210 Você está inclinando-se em alguém como o Google para que você 1793 01:29:39,210 --> 01:29:42,050 não tem que construir um Uber negócios e uma empresa de mapeamento, 1794 01:29:42,050 --> 01:29:44,850 e qualquer número de semelhante aplicações. 1795 01:29:44,850 --> 01:29:46,350 >> Na verdade, logins são populares também. 1796 01:29:46,350 --> 01:29:48,500 Se você já usou Spotify ou qualquer número de sites, 1797 01:29:48,500 --> 01:29:51,210 você vai fazer login para alguns sites usando o Facebook. 1798 01:29:51,210 --> 01:29:53,350 Então, o que é bom, não são APIs para logins 1799 01:29:53,350 --> 01:29:56,570 hoje em dia, de modo que você não tem para ter sua própria tabela de usuários 1800 01:29:56,570 --> 01:29:59,440 e todo o seu próprio banco de dados necessariamente no mesmo grau. 1801 01:29:59,440 --> 01:30:01,795 Você pode deixar Facebook fazer tudo de que a complexidade para você. 1802 01:30:01,795 --> 01:30:03,920 Então é um momento emocionante, Honestamente, na programação, 1803 01:30:03,920 --> 01:30:07,200 porque há tantos terceiros serviços que você pode construir em cima. 1804 01:30:07,200 --> 01:30:10,890 >> E, novamente, o preço que você paga é seja financeira ou de tempo de inatividade. 1805 01:30:10,890 --> 01:30:13,750 Se o Google vai para baixo, o mesmo acontece com Uber, sem dúvida, 1806 01:30:13,750 --> 01:30:15,690 mas talvez isso é uma razoável trade-off. 1807 01:30:15,690 --> 01:30:18,040 E, novamente, que foi um dos temas, esperançosamente, para o último par de dias, 1808 01:30:18,040 --> 01:30:18,780 São estes trade-offs. 1809 01:30:18,780 --> 01:30:20,738 E raramente há indo ser uma resposta certa. 1810 01:30:20,738 --> 01:30:25,700 É realmente o melhor de duas ou mais respostas. 1811 01:30:25,700 --> 01:30:26,682 >> Passe estes ao redor. 1812 01:30:26,682 --> 01:30:36,830 1813 01:30:36,830 --> 01:30:41,110 >> E essas contas Cloud9 continuará para trabalhar, em teoria, em perpetuidade. 1814 01:30:41,110 --> 01:30:45,000 Que você pode encontrar se você esperar alguns dias ou uma semana ou mais para voltar a entrar na deles, 1815 01:30:45,000 --> 01:30:49,170 isso pode levar como um ou cinco minutos para abrir back-up, 1816 01:30:49,170 --> 01:30:54,090 mas isso é só porque eles colocaram -lo para dormir para economizar recursos. 1817 01:30:54,090 --> 01:31:10,527