1 00:00:00,000 --> 00:00:00,060 2 00:00:00,060 --> 00:00:01,560 >> DAVID Malan: Todo ben, estamos de volta. 3 00:00:01,560 --> 00:00:03,830 Así, para o emocionante Concluíndo, a nosa última sección 4 00:00:03,830 --> 00:00:06,900 en programación web, que eu pensei que ía usar como un termo xeral 5 00:00:06,900 --> 00:00:08,440 para capturar algúns temas restantes. 6 00:00:08,440 --> 00:00:10,390 Así, a finais do día, imos realmente facer 7 00:00:10,390 --> 00:00:14,830 un pouco de hands-on de programación web cunha linguaxe chamada JavaScript. 8 00:00:14,830 --> 00:00:17,510 E eu creo que nós imos dar un ollo en algo relacionado a imaxes 9 00:00:17,510 --> 00:00:20,040 e descubrindo algo secretaría agochada nunha imaxe, 10 00:00:20,040 --> 00:00:23,230 e tamén un ollo en Google API de Google Maps, de programación de aplicación 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 máis e libremente dispoñible hoxe. 13 00:00:28,800 --> 00:00:32,029 >> Pero por que non dar un ollo nun ingrediente para este mundo 14 00:00:32,029 --> 00:00:34,070 que tipo de estado dando por certo hai 15 00:00:34,070 --> 00:00:36,720 durante algún tempo, unha base de datos. 16 00:00:36,720 --> 00:00:39,150 Para o día pasado e medio que xa asumiu 17 00:00:39,150 --> 00:00:42,910 que temos acceso a unha base de datos, pero o problema é que unha base de datos de resolver? 18 00:00:42,910 --> 00:00:45,540 O que fai por nós? 19 00:00:45,540 --> 00:00:47,030 ¿Que é iso? 20 00:00:47,030 --> 00:00:48,679 >> Audiencia: [inaudível] 21 00:00:48,679 --> 00:00:51,720 DAVID Malan: Contén toda a información, OK, e que tipo de información 22 00:00:51,720 --> 00:00:53,186 Pode pór nel? 23 00:00:53,186 --> 00:00:54,590 >> Audiencia: [inaudível] 24 00:00:54,590 --> 00:00:56,450 >> DAVID Malan: Calquera información poñer nel, vai volver. 25 00:00:56,450 --> 00:00:57,070 Iso é verdade. 26 00:00:57,070 --> 00:01:01,900 E nunha web baseado na web típico ou web aplicación, que tipo de información, 27 00:01:01,900 --> 00:01:03,385 En concreto, pode pór en? 28 00:01:03,385 --> 00:01:04,260 Audiencia: [inaudível] 29 00:01:04,260 --> 00:01:05,051 DAVID Malan: Usuarios. 30 00:01:05,051 --> 00:01:07,000 Así que é un usuario? 31 00:01:07,000 --> 00:01:09,765 >> Audiencia: [inaudível] 32 00:01:09,765 --> 00:01:11,640 DAVID Malan: OK, rexistrada usuario do sitio web. 33 00:01:11,640 --> 00:01:15,100 E o que significa Information Store 'usuarios? 34 00:01:15,100 --> 00:01:17,260 O que compón un usuario? 35 00:01:17,260 --> 00:01:18,331 Un usuario ten que? 36 00:01:18,331 --> 00:01:19,206 Audiencia: [inaudível] 37 00:01:19,206 --> 00:01:21,040 DAVID Malan: Si, persoal de datos, e me gusta diso. 38 00:01:21,040 --> 00:01:21,970 Imos ser máis preciso. 39 00:01:21,970 --> 00:01:25,275 Así, un usuario normalmente ten un nome, o que máis pode un usuario teñen? 40 00:01:25,275 --> 00:01:26,150 Audiencia: [inaudível] 41 00:01:26,150 --> 00:01:29,130 DAVID Malan: An OK addr--, Entón, primeiro nome, apelidos. 42 00:01:29,130 --> 00:01:29,630 Iso é bo. 43 00:01:29,630 --> 00:01:31,463 De feito, imos fixar iso, porque vai 44 00:01:31,463 --> 00:01:35,010 para abrir-se a unha oportunidade discusión, aínda, máis lonxe. 45 00:01:35,010 --> 00:01:39,090 Nome, apelidos, sexo. 46 00:01:39,090 --> 00:01:41,820 47 00:01:41,820 --> 00:01:43,481 Un ID de calquera tipo. 48 00:01:43,481 --> 00:01:43,980 Que máis? 49 00:01:43,980 --> 00:01:45,438 Escoitei algo antes, tamén. 50 00:01:45,438 --> 00:01:51,600 Un correo electrónico, enderezo postal. 51 00:01:51,600 --> 00:01:58,170 >> Entón, imos facer unha pausa alí e agora considerar non o que está almacenando na base de datos, 52 00:01:58,170 --> 00:02:01,980 Mas-- e por que non, xa que é, se cadra, Claramente xa que rexistrar un usuario, 53 00:02:01,980 --> 00:02:03,730 quere lembrar-los por algún tempo. 54 00:02:03,730 --> 00:02:05,480 Non quere que só ser almacenado na memoria RAM 55 00:02:05,480 --> 00:02:08,690 e ser así forgotten-- imos concentrar en como. 56 00:02:08,690 --> 00:02:11,700 >> Acontece que en o mundo dos bancos de datos, 57 00:02:11,700 --> 00:02:14,410 hai polo menos dous tipos estes días. 58 00:02:14,410 --> 00:02:20,010 Algo chamado unha base de datos SQL, Structured Query Language, 59 00:02:20,010 --> 00:02:24,770 ou, de xeito fofa nomeado, NoSQL, que non é SQL. 60 00:02:24,770 --> 00:02:26,980 E o último é un exemplo do que pode 61 00:02:26,980 --> 00:02:30,660 ser chamado unha orientada a obxectos, ou un almacenamento de obxecto, unha base de datos 62 00:02:30,660 --> 00:02:36,010 que almacena obxectos, e non, escusa min, como veremos en breve, liñas. 63 00:02:36,010 --> 00:02:41,800 >> Entón, imos concentrar un momento en O primeiro destes, a saber, un SQL 64 00:02:41,800 --> 00:02:46,850 base de datos, só porque é tan familiar xa, a ninguén 65 00:02:46,850 --> 00:02:51,070 que usase o Excel ou Follas de Google ou Apple 66 00:02:51,070 --> 00:02:53,740 Números ou calquera defecto programa de folla de cálculo, 67 00:02:53,740 --> 00:02:56,040 ou, de forma equivalente, ou máis sofisticada, 68 00:02:56,040 --> 00:02:58,610 algo así como Microsoft Acceso ou Oracle 69 00:02:58,610 --> 00:03:03,890 ou MySQL ou PostgreSQL, todos os cales son nomes de produtos para implementacións 70 00:03:03,890 --> 00:03:04,865 do seguinte idea. 71 00:03:04,865 --> 00:03:10,350 >> Unha base de datos relacional é simplemente algo que ten liñas e columnas. 72 00:03:10,350 --> 00:03:12,850 E por liñas e columnas, Eu literalmente significar algo 73 00:03:12,850 --> 00:03:21,860 como este, por iso, onde nós pode ter a nome dun campo e seu tipo aquí. 74 00:03:21,860 --> 00:03:25,800 E, de feito, déixeme agora comezar a mapear estes. 75 00:03:25,800 --> 00:03:29,420 Entón, en realidade, eu non sei por iso que eu deseño dun gráfico separado. 76 00:03:29,420 --> 00:03:30,780 Imos manter este sinxelo. 77 00:03:30,780 --> 00:03:34,830 >> Temos aquí a inicios da nosa mesa, onde 78 00:03:34,830 --> 00:03:40,150 este é o nome do campo e este é o tipo de datos, 79 00:03:40,150 --> 00:03:41,660 e por tipo quero dicir o seguinte. 80 00:03:41,660 --> 00:03:45,510 É un número, é unha cadea, unha corda curta como unha palabra, 81 00:03:45,510 --> 00:03:49,340 é un parágrafo é datos binarios, como unha imaxe? 82 00:03:49,340 --> 00:03:51,980 E imos provocar este separados por só un momento. 83 00:03:51,980 --> 00:03:57,575 Entón, primeiro nome, número, corda, gran peza de texto-- 84 00:03:57,575 --> 00:03:58,450 Audiencia: [inaudível] 85 00:03:58,450 --> 00:03:59,616 DAVID Malan: Si, por iso cadea. 86 00:03:59,616 --> 00:04:04,744 E nun contexto de base de datos, imos normalmente chamar este campo carácter. 87 00:04:04,744 --> 00:04:07,660 Vou só dicir carbón para agora, pero estamos indo para refinar iso nun momento. 88 00:04:07,660 --> 00:04:09,180 campo de caracteres. 89 00:04:09,180 --> 00:04:11,365 Último nome é probablemente o mesmo. 90 00:04:11,365 --> 00:04:11,865 Sexo? 91 00:04:11,865 --> 00:04:16,230 92 00:04:16,230 --> 00:04:18,310 >> Home ou muller, polo que podería ser un campo carbón animal. 93 00:04:18,310 --> 00:04:21,380 Podería ser calquera cita, pecha comiñas "Macho" ou cita, pecha comiñas "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 quere ser máis inclusiva, pode ter que un terceiro valor 96 00:04:26,540 --> 00:04:28,640 ou algún tipo de outro campo completamente. 97 00:04:28,640 --> 00:04:31,350 E así podería usar certo falso. 98 00:04:31,350 --> 00:04:35,036 O campo podería ser chamado sexo masculino, e logo, podería dicir verdadeiro ou falso. 99 00:04:35,036 --> 00:04:38,160 Pero iso non significa necesariamente capturar toda a información que pode querer. 100 00:04:38,160 --> 00:04:41,118 >> Non é que hai outro tipo de campo que pode ser útil aquí 101 00:04:41,118 --> 00:04:46,040 nunha base de datos típico, denominado enum, onde é un campo de caracteres, 102 00:04:46,040 --> 00:04:50,480 pero, o deseño, chegar a enumerar os valores posibles, 103 00:04:50,480 --> 00:04:54,630 como cita, "macho" pecha comiñas, citas, unquote "feminino" e así por diante. 104 00:04:54,630 --> 00:04:57,620 De xeito que calquera valor está na súa base de datos, 105 00:04:57,620 --> 00:05:00,670 é realmente baseado en carácteres, pero que ten que ser un deses valores. 106 00:05:00,670 --> 00:05:03,520 É probable que non quere un enum para o primeiro ou último nome. 107 00:05:03,520 --> 00:05:05,630 En caso contrario, teríamos para enumerar, como o nome 108 00:05:05,630 --> 00:05:09,570 deriva, literalmente todo posible nome e apelidos. 109 00:05:09,570 --> 00:05:13,960 >> OK, entón ID que debe un ID ser? 110 00:05:13,960 --> 00:05:15,200 Si, quizais por iso un número. 111 00:05:15,200 --> 00:05:17,870 Entón, imos ir con que, polo momento, número. 112 00:05:17,870 --> 00:05:22,010 E por número, o número é un pouco demasiado ampla agora. 113 00:05:22,010 --> 00:05:23,900 Ao final do segundo día, eu sinto que 114 00:05:23,900 --> 00:05:25,280 debe ser un pouco máis precisa. 115 00:05:25,280 --> 00:05:29,280 Número podería dicir como é Podería ser algo así como 1.236. 116 00:05:29,280 --> 00:05:31,500 E iso non é probablemente o que entendemos por un ID. 117 00:05:31,500 --> 00:05:34,635 O que nós probablemente quere dicir con un ID? 118 00:05:34,635 --> 00:05:36,382 >> Audiencia: [inaudível] 119 00:05:36,382 --> 00:05:38,590 DAVID Malan: Oh, ben, entón quizais non sexa aínda un número. 120 00:05:38,590 --> 00:05:42,840 Quizais sexa realmente un identificador único que é unha cadea, como un nome de usuario. 121 00:05:42,840 --> 00:05:44,580 Entón, absolutamente, pode ser. 122 00:05:44,580 --> 00:05:46,730 Eu creo que alguén probablemente significaba numérico, aínda. 123 00:05:46,730 --> 00:05:48,460 Entón, imos ir con iso. 124 00:05:48,460 --> 00:05:49,320 Que tipo de número? 125 00:05:49,320 --> 00:05:51,960 ¿Que é un máis precise-- un enteiro. 126 00:05:51,960 --> 00:05:56,710 Así, un número como 0, 1, 2, 3, así que imos chamar iso de un enteiro. 127 00:05:56,710 --> 00:05:58,909 E aínda así, eu podería ser picuinhas, é 128 00:05:58,909 --> 00:06:00,700 non é realmente só un integer xeral que quere. 129 00:06:00,700 --> 00:06:04,340 Probablemente non quere valores negativos, só porque, el só se sente estraño. 130 00:06:04,340 --> 00:06:06,070 Probablemente quere enteiros positivos. 131 00:06:06,070 --> 00:06:07,920 Entón tamén pode expresarse que nunha base de datos, 132 00:06:07,920 --> 00:06:09,450 pero por agora, imos dicir enteiro. 133 00:06:09,450 --> 00:06:10,650 >> Correo-e? 134 00:06:10,650 --> 00:06:13,550 Este é probablemente só-- que? 135 00:06:13,550 --> 00:06:14,460 >> Audiencia: [inaudível] 136 00:06:14,460 --> 00:06:16,980 >> DAVID Malan: É unha mensaxe, pero iso é caracteres, non? 137 00:06:16,980 --> 00:06:19,813 El só ten un carácter descolados como un símbolo "arroba" ou calquera outra cousa, 138 00:06:19,813 --> 00:06:21,580 senón que é un campo de caracteres. 139 00:06:21,580 --> 00:06:23,900 Enderezo postal? 140 00:06:23,900 --> 00:06:25,360 campo de caracteres. 141 00:06:25,360 --> 00:06:31,400 Entón iso é un bo comezo, pero imos ser un pouco máis que agora. 142 00:06:31,400 --> 00:06:34,540 >> Así, verifícase que en unha base de datos, moitas veces 143 00:06:34,540 --> 00:06:39,120 ten unha opción sobre o máis refinado versións destas cousas. 144 00:06:39,120 --> 00:06:44,330 De feito, nunha base de datos SQL típica, SQL, ou, máis xeralmente, base de datos relacional, 145 00:06:44,330 --> 00:06:46,680 bases de datos con liñas e columnas, moitas veces 146 00:06:46,680 --> 00:06:53,610 chegar ao especificar non só do tipo de a field-- déixeme facer un espazo aqui-- 147 00:06:53,610 --> 00:06:56,600 pero tamén a lonxitude. 148 00:06:56,600 --> 00:06:59,900 >> Entón, canto tempo é un nome? 149 00:06:59,900 --> 00:07:07,060 Coido que, D-A-V-I-D. OK, entendeu I Probablemente só ofendido como metade 150 00:07:07,060 --> 00:07:11,260 das persoas na sala, dereita, sempre que os seus nomes son máis que cinco 151 00:07:11,260 --> 00:07:16,608 letras, entón cinco parece un pouco egoísta e inxenuo, entón o que é un valor mellor? 152 00:07:16,608 --> 00:07:19,320 153 00:07:19,320 --> 00:07:24,330 10, todo ben, e eu creo que estamos ben no cuarto. 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 non tomar a visión de antes, cando 157 00:07:29,540 --> 00:07:31,081 estaban falando sobre matrices e memoria? 158 00:07:31,081 --> 00:07:32,450 Por que non só dicir como 1000? 159 00:07:32,450 --> 00:07:35,260 nome de ninguén vai para ser máis longo que 1000. 160 00:07:35,260 --> 00:07:36,706 Empurrar cara atrás. 161 00:07:36,706 --> 00:07:38,005 >> Audiencia: [inaudível] 162 00:07:38,005 --> 00:07:40,130 DAVID Malan: Si, é desperdicio, á dereita, especialmente 163 00:07:40,130 --> 00:07:44,630 a maioría dos nomes son só cinco ou 10 ou 15 caracteres, que é moi custosa. 164 00:07:44,630 --> 00:07:45,810 Entón vostede sabe o que? 165 00:07:45,810 --> 00:07:48,020 Este é tipo de unha pregunta difícil. 166 00:07:48,020 --> 00:07:51,721 Agora, por suposto podemos analizar Inglés e os nomes de calquera outra lingua 167 00:07:51,721 --> 00:07:54,470 e descubrir, así, cal é a media média-- realmente non 168 00:07:54,470 --> 00:07:57,150 axudar US-- o que é o máximo é probablemente o que realmente queremos. 169 00:07:57,150 --> 00:07:59,920 Pero resulta que temos ata algunha opción do tipo aquí. 170 00:07:59,920 --> 00:08:03,400 >> Nunha base de datos SQL típica, vostede ter algo chamado un campo de char 171 00:08:03,400 --> 00:08:07,505 e tamén un VARCHAR, V-A-R, para o campo de char variable. 172 00:08:07,505 --> 00:08:08,630 E a diferenza é esta. 173 00:08:08,630 --> 00:08:12,400 Un campo char, ten o deseño, Ten que especificar anticipadamente 174 00:08:12,400 --> 00:08:14,900 a lonxitude exacto do campo. 175 00:08:14,900 --> 00:08:20,530 Entón, talvez o nome como 20 sente tipo de seguro. 176 00:08:20,530 --> 00:08:23,950 Pode ter que facer algún googling para ver se isto é realmente seguro dabondo. 177 00:08:23,950 --> 00:08:26,910 Hai probablemente un nome con 21 caracteres, pero por agora, supoña que 20 178 00:08:26,910 --> 00:08:27,620 é seguro. 179 00:08:27,620 --> 00:08:30,070 >> Un campo de char implicaría nunha base de datos que lle 180 00:08:30,070 --> 00:08:33,289 están 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ó será caracteres en branco, 182 00:08:37,419 --> 00:08:40,450 pero aínda está a usar todos os 20 bytes. 183 00:08:40,450 --> 00:08:46,302 Un campo VARCHAR, pola contra, enténdese a cadea debe ser de ata 20 caracteres 184 00:08:46,302 --> 00:08:48,260 pero se é só cinco, só vai usar 185 00:08:48,260 --> 00:08:51,270 cinco, ou quizais seis para un valor especial ao final, 186 00:08:51,270 --> 00:08:54,980 así 0 discutir que significa o fin dun carácter 187 00:08:54,980 --> 00:08:56,790 secuencia na memoria. 188 00:08:56,790 --> 00:08:59,950 >> Entón, cando pensa pode escoller 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 moitos personaxes, VARCHAR non utiliza máis do que moitos caracteres. 191 00:09:09,321 --> 00:09:10,196 Audiencia: [inaudível] 192 00:09:10,196 --> 00:09:13,859 193 00:09:13,859 --> 00:09:16,900 DAVID Malan: OK, cando vostede sabe o lonxitude da corda moi convincente 194 00:09:16,900 --> 00:09:19,316 usar só char, porque se coñece-lo, só tes que poñer-lo para abaixo. 195 00:09:19,316 --> 00:09:23,390 E quizais iso é verdade para un zip código, en Estados Unidos, polo menos, 02138, 196 00:09:23,390 --> 00:09:26,660 está sempre será de cinco caracteres ata que engade o trazo catro. 197 00:09:26,660 --> 00:09:29,750 Pero pode ter algúns valores que sempre sabe o longo. 198 00:09:29,750 --> 00:09:32,310 Ou quizais símbolos do Estado, como NY en Nova York, 199 00:09:32,310 --> 00:09:33,811 e MA para Massachusetts en Estados Unidos. 200 00:09:33,811 --> 00:09:36,560 Quizais ten algunhas situacións onde iso é totalmente razoable, 201 00:09:36,560 --> 00:09:39,520 pero por esa lóxica, por que Nós ata cismar isto? 202 00:09:39,520 --> 00:09:41,800 Por que non só usar VARCHAR e logo, imos só 203 00:09:41,800 --> 00:09:46,730 Sempre use dous caracteres de calquera xeito, é utiliza sempre cinco caracteres de calquera maneira? 204 00:09:46,730 --> 00:09:50,300 Por que non só salvar VARCHAR para todo, por esa lóxica? 205 00:09:50,300 --> 00:09:51,677 Debe haber un prendedor. 206 00:09:51,677 --> 00:09:52,552 Audiencia: [inaudível] 207 00:09:52,552 --> 00:09:54,952 208 00:09:54,952 --> 00:09:56,660 DAVID Malan: Podería escribir algo mal. 209 00:09:56,660 --> 00:09:58,090 Entón, iso é verdade. 210 00:09:58,090 --> 00:10:01,030 Pero, aínda así, non poden usar máis memoria do que eu reservar. 211 00:10:01,030 --> 00:10:03,340 Eu aínda teño a final dicir ao longo da lonxitude, 212 00:10:03,340 --> 00:10:06,780 entón eles non poden accidentalmente facer este erro, pero un bo pensamento. 213 00:10:06,780 --> 00:10:10,510 É máis sutil, pero é moi relacionada para a nosa discusión, en realidade, de matrices 214 00:10:10,510 --> 00:10:12,390 e listas ligadas anteriormente. 215 00:10:12,390 --> 00:10:16,290 >> Acontece que unha base de datos, se sábese que todos os valores sexan 216 00:10:16,290 --> 00:10:19,250 de lonxitude fixa, aínda que algúns deses valores están en branco, 217 00:10:19,250 --> 00:10:22,484 tipo de estética en branco, D-V-A-I-D e logo 15 baleiros, 218 00:10:22,484 --> 00:10:24,650 verifícase que cada campo é o mesmo lonxitude, 219 00:10:24,650 --> 00:10:28,670 así como unha serie tivo todo o seu material de costas cara atrás para atrás, como se 220 00:10:28,670 --> 00:10:33,480 podería só 1 para chegar ao seguinte valor, mesma idea nunha táboa de base de datos. 221 00:10:33,480 --> 00:10:37,550 Todos o seu personaxe cadeas son a mesma lonxitude, 222 00:10:37,550 --> 00:10:39,390 ten o que se chama de acceso aleatorio. 223 00:10:39,390 --> 00:10:41,850 Se todas as cordas son de lonxitude de 20, non só 224 00:10:41,850 --> 00:10:45,230 facer máis 1 acaba de facer máis 20, máis 20, máis 20, máis 20, 225 00:10:45,230 --> 00:10:48,775 e pode moi rapidamente percorrer ou busca a través de todos os seus datos. 226 00:10:48,775 --> 00:10:54,420 >> Un campo de char variable, pola contra, non sempre ten 20 caracteres. 227 00:10:54,420 --> 00:10:58,000 Pode ter 20 e, a continuación, 15 e, a continuación, 19 e, a continuación, 10, 228 00:10:58,000 --> 00:11:00,720 e por iso, se quere buscar a través del, non pode só cega 229 00:11:00,720 --> 00:11:03,050 engadir 20 bytes para chegar ao seguinte. 230 00:11:03,050 --> 00:11:07,280 Vostede literalmente ten que buscar porque o bordo da estrutura de datos, 231 00:11:07,280 --> 00:11:08,340 se quixeren, é irregular. 232 00:11:08,340 --> 00:11:11,480 É o tipo de entra e sae base na lonxitude real da cadea. 233 00:11:11,480 --> 00:11:14,460 Entón, cando vostede sabe o longo, como Kareem di, usa un campo char, 234 00:11:14,460 --> 00:11:16,460 porque gañou aquela eficiencia de ser 235 00:11:16,460 --> 00:11:19,170 capaz de buscar a través lo máis rápido cando está mirando para os datos, 236 00:11:19,170 --> 00:11:20,550 pola contra, usa unha variable. 237 00:11:20,550 --> 00:11:24,450 >> Desafortunadamente, eu non teño unha boa resposta a canto tempo o nome debe ser, 238 00:11:24,450 --> 00:11:26,360 pero para algo como un nome, eu diría 239 00:11:26,360 --> 00:11:28,470 un VARCHAR é común porque non vai 240 00:11:28,470 --> 00:11:30,430 ser unha lonxitude fixa para todos. 241 00:11:30,430 --> 00:11:33,650 20, eu non sei, 20 sente un pouco axustado. 242 00:11:33,650 --> 00:11:36,460 Nós só dicir que o 50, 50. 243 00:11:36,460 --> 00:11:39,210 Realmente non custa-lle que moito máis que dicir 50 en vez de 40, 244 00:11:39,210 --> 00:11:41,260 pero nalgún momento, ten que para facer unha chamada de xuízo. 245 00:11:41,260 --> 00:11:43,090 >> Moi común, francamente, para [? histórico?] 246 00:11:43,090 --> 00:11:47,670 razóns, aínda que sexa excesiva, quere dicir 255, porque hai algún tempo, 247 00:11:47,670 --> 00:11:51,440 en sistemas de base de datos populares, como MySQL, unha ferramenta gratuíta de código aberto 248 00:11:51,440 --> 00:11:53,790 que unha morea de empresas como incluso en Facebook usado, 249 00:11:53,790 --> 00:11:56,654 este foi o estándar máximo para que a xente só fun con el. 250 00:11:56,654 --> 00:11:59,070 Así, non é razoable, pero imos utilizar un pouco máis de intuición 251 00:11:59,070 --> 00:12:02,970 e dicir, con certeza 50, que é probablemente un pouco excesivo. 252 00:12:02,970 --> 00:12:05,720 >> Sexo, máis me gusta de enum, e por iso, polo tanto, pode 253 00:12:05,720 --> 00:12:08,760 enumerar macho ou femia, ou que de forma máis eficiente, 254 00:12:08,760 --> 00:12:13,420 m ou f ou outra simboloxía, pero enum se sente como unha boa opción alí. 255 00:12:13,420 --> 00:12:16,740 Para ser claro, o sexo podería ser só un VARCHAR, 256 00:12:16,740 --> 00:12:19,090 e nós poderiamos só todo Concordo persoas como agradables, 257 00:12:19,090 --> 00:12:21,010 sempre poñer os mesmos valores alí. 258 00:12:21,010 --> 00:12:22,720 Macho ou femia ou outros enfeites. 259 00:12:22,720 --> 00:12:27,800 >> Pero o problema, entón, é que poderiamos cometer un erro, como [inaudível] propuxeron 260 00:12:27,800 --> 00:12:29,140 anteriormente nun contexto diferente. 261 00:12:29,140 --> 00:12:32,780 Se comete un erro, poderiamos obter valores incorrectos na nosa base de datos. 262 00:12:32,780 --> 00:12:36,320 Entón, o que é agradable sobre bases de datos como Oracle e MySQL e outros, 263 00:12:36,320 --> 00:12:39,280 é que ten esta última capa de defensa, onde 264 00:12:39,280 --> 00:12:43,010 o administrador dBA, base de datos, quen está designado esta táboa como nós 265 00:12:43,010 --> 00:12:46,440 son verbalmente, podería poñer no lugar unha enumeración que 266 00:12:46,440 --> 00:12:51,250 que protexe contra especificando masculino, feminino, e así por ninguén 267 00:12:51,250 --> 00:12:54,230 outra cousa calquera programador pode accidentalmente inserir calquera outro valor. 268 00:12:54,230 --> 00:12:55,480 Entón, iso sería bo. 269 00:12:55,480 --> 00:12:56,660 Esta é unha característica. 270 00:12:56,660 --> 00:13:00,760 >> Así, un ID, asumindo unha identificación numérica, el probablemente debe ser un enteiro positivo. 271 00:13:00,760 --> 00:13:04,380 E, ás veces, teñen oportunidade para discutir lonxitude. 272 00:13:04,380 --> 00:13:06,830 Non faría normalmente especificar un número aquí, 273 00:13:06,830 --> 00:13:11,310 vostede, en vez, especificar este é un int, ou un gran int, 274 00:13:11,310 --> 00:13:12,980 como son normalmente chamados. 275 00:13:12,980 --> 00:13:18,840 Pero, normalmente, un número enteiro sería, digamos, 4 bytes. 276 00:13:18,840 --> 00:13:23,694 E se é 4 bytes, iso é cantos bits? 277 00:13:23,694 --> 00:13:24,630 >> Audiencia: [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ón, cantos usuarios que podemos ter en nosa base de datos todos eles teñen un ID 280 00:13:30,270 --> 00:13:33,320 e este ID debe ser único? 281 00:13:33,320 --> 00:13:36,780 32 bits significa que temos patróns dun, dous, tres, catro, five-- 282 00:13:36,780 --> 00:13:41,000 Así como moitos patróns diferentes de ceros e os que pode ter se existen 32? 283 00:13:41,000 --> 00:13:43,235 Isto é o mesmo que pregunta o que hai de dous a 32? 284 00:13:43,235 --> 00:13:46,472 285 00:13:46,472 --> 00:13:48,430 É un gran número que Non podo axustar, 286 00:13:48,430 --> 00:13:50,270 pero sei que é preto de 4 millóns de dólares. 287 00:13:50,270 --> 00:13:53,970 Entón isto significa que a súa táboa de base de datos pode ten catro millóns de usuarios e é iso. 288 00:13:53,970 --> 00:13:56,410 >> Polo tanto, este é un interesante implicación deseño. 289 00:13:56,410 --> 00:14:00,840 Un número razoable de empresas decidiron, quizais non tanto 290 00:14:00,840 --> 00:14:04,860 para a súa táboa de usuarios, xa que 4 millóns de usuarios é un problema raro. 291 00:14:04,860 --> 00:14:08,410 Esta é unha especie de Facebook de estilo problema, e non un problema típico empresa. 292 00:14:08,410 --> 00:14:12,670 Pero quizais se ten rexistros de transaccións ou algún tipo de datos que constantemente 293 00:14:12,670 --> 00:14:15,610 está escrita en base de datos que absolutamente podería millóns 294 00:14:15,610 --> 00:14:18,900 e millóns de liñas e usa un enteiro para el, 295 00:14:18,900 --> 00:14:22,750 o que vai pasar por iso comeza a remar número 4 millóns 296 00:14:22,750 --> 00:14:26,210 e, a continuación, tentar introducir o 4000000000 e 1, por así dicir? 297 00:14:26,210 --> 00:14:29,610 Estou simplificando un pouco os números. 298 00:14:29,610 --> 00:14:33,740 >> Pode cortar, quero dicir que Ten que tratar con isto de algunha maneira. 299 00:14:33,740 --> 00:14:37,910 E o que un ordenador sería normalmente facer, pensar sobre el mesmo dende esta mañá, 300 00:14:37,910 --> 00:14:42,430 se ten un valor de 4 bits como 1, 1, 1, 1, a cal, 301 00:14:42,430 --> 00:14:44,920 só para amarrar a mañá en conxunto para a tarde, o 302 00:14:44,920 --> 00:14:48,369 que representa este número en binario? 303 00:14:48,369 --> 00:14:49,410 OK, imos facelo máis fácil. 304 00:14:49,410 --> 00:14:53,310 Que ese número representan en binario? 305 00:14:53,310 --> 00:14:56,794 OK, imos facelo máis doado, o que isto representa en binario? 306 00:14:56,794 --> 00:14:57,460 Audiencia: Tres. 307 00:14:57,460 --> 00:14:59,670 DAVID Malan: Tres porque temos os column-- 308 00:14:59,670 --> 00:15:00,450 [Risas] 309 00:15:00,450 --> 00:15:01,350 Ufa! 310 00:15:01,350 --> 00:15:03,980 Tivemos a columna queridos ea columna dous. 311 00:15:03,980 --> 00:15:07,250 Entón supoño que, de feito, o noso [? infield?] non eran de 32 bits, 312 00:15:07,250 --> 00:15:13,440 pero eran dous bits, podemos contar dende o número 0, 1, 2, 3 usuario, 313 00:15:13,440 --> 00:15:18,040 e entón nós estamos tipo de de volta ao usuario 00 de novo. 314 00:15:18,040 --> 00:15:19,739 Entón, iso é o que normalmente acontece. 315 00:15:19,739 --> 00:15:22,780 Se vostede xa escoitou a expressão-- Probablemente non, pero se have-- 316 00:15:22,780 --> 00:15:26,500 integer overflow, onde manter lanzando os seus anacos 317 00:15:26,500 --> 00:15:29,640 ser os maiores valores, e entón está fóra de bits, 318 00:15:29,640 --> 00:15:30,850 o que normalmente ocorre? 319 00:15:30,850 --> 00:15:32,280 Por que digo 00? 320 00:15:32,280 --> 00:15:33,220 Ben, este é tres. 321 00:15:33,220 --> 00:15:34,230 ¿Como representar 4? 322 00:15:34,230 --> 00:15:36,890 323 00:15:36,890 --> 00:15:38,915 ¿Como representar o ao número 4 en binario? 324 00:15:38,915 --> 00:15:39,790 Audiencia: [inaudível] 325 00:15:39,790 --> 00:15:41,780 DAVID Malan: um-- si, non digo 100 per se, 326 00:15:41,780 --> 00:15:44,190 porque ten o mal connotación, pero 1-0-0. 327 00:15:44,190 --> 00:15:48,920 Así, este número é de feito 1-0-0 correcto, pero se só ten dous bits, 328 00:15:48,920 --> 00:15:50,820 o que realmente fixo? 329 00:15:50,820 --> 00:15:53,219 Vostede rolou para 00. 330 00:15:53,219 --> 00:15:54,760 E, de feito, é o que ía ocorrer. 331 00:15:54,760 --> 00:15:56,884 En realidade, pode pensar sobre iso máis familiarmente. 332 00:15:56,884 --> 00:15:59,350 Se ben se lembran, o que, 16 anos, o mundo 333 00:15:59,350 --> 00:16:03,380 debería rematar cando o problema Y2K pasou. 334 00:16:03,380 --> 00:16:04,330 Por que isto? 335 00:16:04,330 --> 00:16:08,170 Así a maioría dos ordenadores, a decisións razoables, 336 00:16:08,170 --> 00:16:15,320 foron almacenar números como o ano 1975 ou o ano 1999 337 00:16:15,320 --> 00:16:19,010 só usando dous díxitos na memoria do ordenador. 338 00:16:19,010 --> 00:16:21,950 Entón, por suposto, o que pasa cando chegar ao ano 2000, 339 00:16:21,950 --> 00:16:25,790 vai a este, ou mellor, si. 340 00:16:25,790 --> 00:16:30,120 Entón vai para o ano 2000, pero se só está a usar dous díxitos parecer 341 00:16:30,120 --> 00:16:32,660 como o ano 00 e entón rolou. 342 00:16:32,660 --> 00:16:36,820 E é por iso que unha morea de sistemas precisaba ser actualizado no momento. 343 00:16:36,820 --> 00:16:42,500 >> Así, co que dixo, empresas como a Facebook ir contra iso. 344 00:16:42,500 --> 00:16:46,147 Polo tanto, o único xeito de manexar o situación, francamente, é anticipar-lo. 345 00:16:46,147 --> 00:16:47,980 Ou o xeito máis limpa para xestionar esta situación 346 00:16:47,980 --> 00:16:50,330 é anticipar-lo para que non Ten que facer cambios máis tarde. 347 00:16:50,330 --> 00:16:51,970 Entón, en vez de 8 bytes, vostede sabe o que? 348 00:16:51,970 --> 00:16:54,261 Eu vou ser con visión de futuro aquí, aínda que sexa 349 00:16:54,261 --> 00:16:56,760 algo optimista de que teremos 4 millóns 350 00:16:56,760 --> 00:16:58,850 e 1 usuarios na nosa web. 351 00:16:58,850 --> 00:17:01,790 Pero imos usar só 8 bytes, ou 64 bits, o que xeralmente sería 352 00:17:01,790 --> 00:17:05,640 chamado un gran número enteiro, moi técnico. 353 00:17:05,640 --> 00:17:10,280 E iso significa só que pode ter aínda máis díxitos no seu número. 354 00:17:10,280 --> 00:17:12,599 Pero esta é unha importante decisión de deseño, 355 00:17:12,599 --> 00:17:16,400 porque se escolle un número que ten tamén algúns anacos de expresividade 356 00:17:16,400 --> 00:17:19,089 realmente pode crear un erro no software. 357 00:17:19,089 --> 00:17:21,750 >> Todo ben, entón imos pechar con correo electrónico e enderezo postal. 358 00:17:21,750 --> 00:17:26,369 Así, o correo electrónico, o tempo debe un enderezo de correo-e ser? 359 00:17:26,369 --> 00:17:26,869 50. 360 00:17:26,869 --> 00:17:29,220 Eu realmente non teño idea, pero é probablemente algo parecido, 361 00:17:29,220 --> 00:17:32,261 porque se non, ninguén vai escribir-lle se el fica moito tempo, entón 50, 362 00:17:32,261 --> 00:17:33,360 imos ir con el para agora. 363 00:17:33,360 --> 00:17:35,770 enderezo postal, canto tempo debe ser? 364 00:17:35,770 --> 00:17:38,325 365 00:17:38,325 --> 00:17:39,200 Audiencia: [inaudível] 366 00:17:39,200 --> 00:17:41,900 367 00:17:41,900 --> 00:17:43,890 >> DAVID Malan: Non só un código postal, aínda. 368 00:17:43,890 --> 00:17:45,720 enderezo postal, oín. 369 00:17:45,720 --> 00:17:50,720 Entón, iso é como unha Brattle Square, coma, Cambridge Mass., coma, 02138. 370 00:17:50,720 --> 00:17:53,860 E, de feito, déixeme tirar algo folla aquí. 371 00:17:53,860 --> 00:17:56,510 Este parece que é unha oportunidade perdida. 372 00:17:56,510 --> 00:18:01,480 Se temos 1 Brattle Square, coma, Cambridge MA 02138, 373 00:18:01,480 --> 00:18:04,510 Eu sinto que podemos facer mellor de enderezos, pode postal. 374 00:18:04,510 --> 00:18:07,100 Por que non imos explotar esta un 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 temos que si ter para as nosas liñas aquí, quizais? 377 00:18:10,970 --> 00:18:12,260 >> Audiencia: [inaudível] 378 00:18:12,260 --> 00:18:17,579 >> DAVID Malan: Si, entón imos chamalo street_number, 379 00:18:17,579 --> 00:18:20,620 e un subliñado é só unha común forma de ter o que parece ser un espazo, 380 00:18:20,620 --> 00:18:22,360 pero non é, en realidade. 381 00:18:22,360 --> 00:18:26,240 Calle, e despois cidade-- pena? 382 00:18:26,240 --> 00:18:28,440 >> Audiencia: [inaudível] 383 00:18:28,440 --> 00:18:29,690 DAVID Malan: Poderiamos facelo. 384 00:18:29,690 --> 00:18:30,702 Liña un, liña dous. 385 00:18:30,702 --> 00:18:32,410 Por que non imos manter Lo simple de momento, 386 00:18:32,410 --> 00:18:34,840 pero iso é absolutamente unha decisión aceptable. 387 00:18:34,840 --> 00:18:38,180 E entón estado, e despois imos ser un pouco centrado nos EUA polo momento 388 00:18:38,180 --> 00:18:42,040 e só facer CEP, só porque vai levar a un erro interesante 389 00:18:42,040 --> 00:18:43,090 ou problema aquí. 390 00:18:43,090 --> 00:18:44,655 Entón supoño que é agora o noso enderezo. 391 00:18:44,655 --> 00:18:47,280 É un pouco máis irritante que temos todas estas máis campos, 392 00:18:47,280 --> 00:18:49,200 pero agora podemos marcar as cousas un pouco mellor. 393 00:18:49,200 --> 00:18:53,210 >> número Entón, agora rúa probablemente non debe ser un char, debería? 394 00:18:53,210 --> 00:18:54,835 O que debería ser? 395 00:18:54,835 --> 00:18:55,710 Audiencia: [inaudível] 396 00:18:55,710 --> 00:18:57,835 DAVID Malan: Quizais, un número como un número enteiro de novo? 397 00:18:57,835 --> 00:19:00,170 Un gran número enteiro? 398 00:19:00,170 --> 00:19:02,170 Probablemente non viven en 4 millóns Main Street 399 00:19:02,170 --> 00:19:03,490 ou algo tola así. 400 00:19:03,490 --> 00:19:06,850 Así enteiro pode ser ben, pero ten ninguén 401 00:19:06,850 --> 00:19:13,880 viviu nun enderezo como 1A Brattle Square, ou 1 e 1/2? 402 00:19:13,880 --> 00:19:17,030 que esas cousas existen, por desgraza, mesmo se non viviu alí, 403 00:19:17,030 --> 00:19:21,240 hai esas anomalías como o piso 1A, 1B, 1C. 404 00:19:21,240 --> 00:19:24,260 Entón vostede sabe o que, probablemente Non debe ir con enteiro, 405 00:19:24,260 --> 00:19:27,440 se non, imos perdendo algunhas vendas. 406 00:19:27,440 --> 00:19:29,920 >> campo Char, quizais? 407 00:19:29,920 --> 00:19:30,870 Non sei canto tempo. 408 00:19:30,870 --> 00:19:33,370 Probablemente non vai ser tanto tempo, entón 10 ou algo así. 409 00:19:33,370 --> 00:19:34,950 Ninguén vai escribir un número máis longo, quizais. 410 00:19:34,950 --> 00:19:37,070 Pero, de novo, nós probablemente debe dar máis atención a iso. 411 00:19:37,070 --> 00:19:39,900 Quizais Google, facer algunha investigación, pero imos ir con nosas entrañas para agora. 412 00:19:39,900 --> 00:19:44,565 Rúas, char, 50, eu non sei. 413 00:19:44,565 --> 00:19:46,940 Nalgún momento, ninguén vai gravala-lo en un sobre, 414 00:19:46,940 --> 00:19:49,350 tamén, entón hai probablemente algúns límites superiores alí. 415 00:19:49,350 --> 00:19:54,200 City, mesmo, con certeza, de xeito carbonizar 50. 416 00:19:54,200 --> 00:19:59,120 >> Estado, pode ser centrado nos EUA polo momento. 417 00:19:59,120 --> 00:20:01,850 Así, podería ser unha lista, por tanto, tipo dunha chamada de xuízo, estado. 418 00:20:01,850 --> 00:20:04,000 Podería ser como dous caracteres. 419 00:20:04,000 --> 00:20:06,140 Entón, en realidade, se cadra, non paraba de dicir carbón. 420 00:20:06,140 --> 00:20:09,420 Eu probablemente significa VARCHAR, só por algunha eficacia, 421 00:20:09,420 --> 00:20:12,240 pero imos volver esta decisión nun momento. 422 00:20:12,240 --> 00:20:16,150 Podería ser un char de lonxitude 2 para o estado. 423 00:20:16,150 --> 00:20:20,670 En EEUU teñen, como MA, Massachusetts, Nova York, Nova York, Nova Jersey, Nova 424 00:20:20,670 --> 00:20:22,100 Jersey, e así por diante. 425 00:20:22,100 --> 00:20:23,630 Así, podería ser fixada a iso. 426 00:20:23,630 --> 00:20:25,900 DC para Washington DC. 427 00:20:25,900 --> 00:20:29,915 >> Pero eu creo que, Olivier, vostede propuxo outra visión. 428 00:20:29,915 --> 00:20:30,790 Audiencia: [inaudível] 429 00:20:30,790 --> 00:20:33,670 DAVID Malan: Si, por iso é unha pouco aburrido para escribir, 430 00:20:33,670 --> 00:20:37,890 pero unha enumeración podería facer máis sentido, porque deste xeito, polo menos para os Estados Unidos, 431 00:20:37,890 --> 00:20:41,320 podería enumerar, se tediosamente pero facelo só unha vez na súa base de datos 432 00:20:41,320 --> 00:20:47,480 e nunca máis ter que pensar sobre Lo, os 50 códigos de dous caracteres. 433 00:20:47,480 --> 00:20:48,660 Entón, me gusta enum. 434 00:20:48,660 --> 00:20:51,720 Imos ir con iso aí, porque que tipo de impón máis rigor. 435 00:20:51,720 --> 00:20:53,620 E, a continuación, código postal? 436 00:20:53,620 --> 00:20:55,306 Creo que Andrew tiña un pensamento sobre ese 437 00:20:55,306 --> 00:20:56,180 Audiencia: [inaudível] 438 00:20:56,180 --> 00:20:57,240 DAVID Malan: Si, cinco ou nove. 439 00:20:57,240 --> 00:20:58,323 Nós só mantelo simple. 440 00:20:58,323 --> 00:20:59,380 Só ten que facer cinco por agora. 441 00:20:59,380 --> 00:21:03,070 Pero quizais eu só podía facer un número enteiro, non? 442 00:21:03,070 --> 00:21:08,750 Podería, pero xa sabe o que, eu fixen este erro xa, nalgún sentido. 443 00:21:08,750 --> 00:21:13,110 Anos, eu estaba migrando de Microsoft Outlook a Gmail, 444 00:21:13,110 --> 00:21:18,640 e Outlook ten un xeito de exportar todos os seus contactos como un arquivo de Excel, 445 00:21:18,640 --> 00:21:21,280 un arquivo CSV, separados por comas ficheiro valores. 446 00:21:21,280 --> 00:21:23,950 E eu cometín o erro, I pensar, de facer dobre clic nel, 447 00:21:23,950 --> 00:21:27,380 xa me baixei a exportación, a asegúrese de que parecía como eu esperaba. 448 00:21:27,380 --> 00:21:31,320 Debo ter bateu gardar ou deixar auto-save xute no ou algo así. 449 00:21:31,320 --> 00:21:35,100 Porque cando, logo de importación Lo en Gmail, todo funcionou. 450 00:21:35,100 --> 00:21:39,910 Pero durante anos, ata hoxe, e Eu fixen iso cinco, 10 anos, 451 00:21:39,910 --> 00:21:44,380 Eu aínda estou atopando amigos que teñen enderezos que se parecen con iso. 452 00:21:44,380 --> 00:21:45,700 Por que? 453 00:21:45,700 --> 00:21:47,900 >> Audiencia: [inaudível] 454 00:21:47,900 --> 00:21:50,650 >> DAVID Malan: Tardou a 0, así, en vez diso, 455 00:21:50,650 --> 00:21:53,810 tomou todo o código postal como un número, e, polo tanto, é 456 00:21:53,810 --> 00:21:56,590 un 0 que significa non ten ningún significado. 457 00:21:56,590 --> 00:21:59,470 E así 2138 parece ser o meu código postal. 458 00:21:59,470 --> 00:22:07,100 E este é, francamente, un Excel irritante característica pola cal creo que por defecto, 459 00:22:07,100 --> 00:22:10,980 aínda que iso significou só ser texto, Microsoft Excel 460 00:22:10,980 --> 00:22:13,780 decide, déixeme ser útil, e Oh, eu vexo só números. 461 00:22:13,780 --> 00:22:15,290 Imos tratalos como números. 462 00:22:15,290 --> 00:22:16,790 E trunca os ceros á esquerda. 463 00:22:16,790 --> 00:22:19,165 >> Xuro por Deus, cada parella meses eu atopar un enderezo, 464 00:22:19,165 --> 00:22:22,300 e fóra de un tipo de TOC, eu volvo e engadir a 0, a pesar de eu nunca 465 00:22:22,300 --> 00:22:23,700 enviar cartas de persoas ou calquera cousa. 466 00:22:23,700 --> 00:22:25,510 Pero eu estou atopando restos desta. 467 00:22:25,510 --> 00:22:28,820 Entón, iso quere dicir, que é unha boa idea? 468 00:22:28,820 --> 00:22:31,610 OK, non, porque ninguén en Massachusetts, nesta área, 469 00:22:31,610 --> 00:22:33,270 terá un líder deles. 470 00:22:33,270 --> 00:22:38,070 Entón imos con gusto char probablemente cinco. 471 00:22:38,070 --> 00:22:41,450 >> E aquí, entendemos que podería usar un enum e nós 472 00:22:41,450 --> 00:22:44,600 podería enumerar 10.000 posibles códigos postais, 473 00:22:44,600 --> 00:22:48,530 pero iso parece que é, probablemente, cruzando unha liña de, como, beneficios. 474 00:22:48,530 --> 00:22:51,350 Se ten de entrada que moitos datos en base de datos 475 00:22:51,350 --> 00:22:52,940 para protexer contra algo. 476 00:22:52,940 --> 00:22:57,400 Entón carbón entender que podería escribir na H-E-L-L-O como o seu código postal, 477 00:22:57,400 --> 00:22:59,180 o que non é, obviamente, numérico. 478 00:22:59,180 --> 00:23:01,680 Así, non hai ningunha maneira, en unha base de datos típico, 479 00:23:01,680 --> 00:23:05,561 especifica numérica e só cinco caracteres, 480 00:23:05,561 --> 00:23:07,310 polo que teremos facelo no código. 481 00:23:07,310 --> 00:23:11,100 Nós imos facelo en PHP ou Java ou calquera outra lingua que estamos 482 00:23:11,100 --> 00:23:14,230 usando o servidor para facer cumprir este tipo de restrición. 483 00:23:14,230 --> 00:23:14,860 >> Whoo! 484 00:23:14,860 --> 00:23:18,322 Todo ben, entón todas as preguntas só aínda? 485 00:23:18,322 --> 00:23:19,780 Imos facer outra decisión de deseño. 486 00:23:19,780 --> 00:23:22,500 Acontece que Tamén terá que escoller, 487 00:23:22,500 --> 00:23:26,600 ao proxecto unha base de datos SQL, ou database-- típicos relacionais onde 488 00:23:26,600 --> 00:23:28,790 de novo, relacional só significa liñas e columnas, 489 00:23:28,790 --> 00:23:35,500 é así que organice as súas data-- e entender que o que isto significa, 490 00:23:35,500 --> 00:23:37,740 Teño enganosa no que, estou drawing-- este 491 00:23:37,740 --> 00:23:40,190 é o que se chama esquema para unha táboa de base de datos. 492 00:23:40,190 --> 00:23:42,810 Isto é como o especificacións para a mesa-- 493 00:23:42,810 --> 00:23:48,040 pero cando chega a hora para realmente almacenar datos, 494 00:23:48,040 --> 00:23:52,081 e imos facer isto, só tes exemplo aquí. 495 00:23:52,081 --> 00:23:55,080 Vou abrir Excel, porque Excel me vai dar liñas e columnas. 496 00:23:55,080 --> 00:23:58,050 E iso é o que a Oracle e MySQL e outras ferramentas me vai dar. 497 00:23:58,050 --> 00:24:02,270 Entón, eu estou indo só para usar Lo debido de discusión. 498 00:24:02,270 --> 00:24:05,250 Deixe-me ir adiante e abrir unha documento representativo aquí, 499 00:24:05,250 --> 00:24:06,310 ampliar un pouco. 500 00:24:06,310 --> 00:24:15,200 Así, por exemplo, os nosos cabeceiras están nome, apelidos, sexo, ID, 501 00:24:15,200 --> 00:24:20,980 correo electrónico, número de rúa, rúa, berros. 502 00:24:20,980 --> 00:24:25,710 Rúa, cidade, provincia, só sobre encaixa na pantalla. 503 00:24:25,710 --> 00:24:29,080 >> Entón, o que isto significa que cando un usuario se rexistra por primeira vez para o meu sitio, 504 00:24:29,080 --> 00:24:32,880 que vai ser algo así como David, Malan, m, digamos 1, 505 00:24:32,880 --> 00:24:42,910 malan@harvard.edu, número da rúa vai ser como unha Brattle Square, Cambridge, MA, 506 00:24:42,910 --> 00:24:44,780 02138, e logo así por diante. 507 00:24:44,780 --> 00:24:48,290 Entón, cando eu digo que unha base de datos relacional ou base de datos SQL é liñas e columnas, 508 00:24:48,290 --> 00:24:49,350 Quero dicir iso. 509 00:24:49,350 --> 00:24:51,900 Que os datos reais son almacenados en liñas e columnas. 510 00:24:51,900 --> 00:24:53,950 Esta é só unha coincidencia, que estabamos falando, 511 00:24:53,950 --> 00:24:56,033 e eu estaba só tirando-o en filas e columnas. 512 00:24:56,033 --> 00:24:58,320 Este é só o esquema, a definición global. 513 00:24:58,320 --> 00:25:01,640 >> Entón destes campos aquí, ou equivalentemente, alí, 514 00:25:01,640 --> 00:25:06,270 cales son os campos que pensa Eu son probablemente a investigar sobre se eu son un usuario 515 00:25:06,270 --> 00:25:09,200 ou se eu son o administrador da base de datos? 516 00:25:09,200 --> 00:25:12,426 Como, o que eu son campos en realidade, indo buscar? 517 00:25:12,426 --> 00:25:13,830 >> Audiencia: [inaudível] 518 00:25:13,830 --> 00:25:17,690 >> DAVID Malan: O nome, si de modo Eu gusto do feito isso-- si, 519 00:25:17,690 --> 00:25:19,750 correo electrónico pode ser bastante común. 520 00:25:19,750 --> 00:25:21,440 Sentímolo, dixo o nome. 521 00:25:21,440 --> 00:25:24,030 Entón maybe-- e de novo, estamos tipo de falar en abstracto. 522 00:25:24,030 --> 00:25:25,988 Non sei por que ía estar á procura dun nome, 523 00:25:25,988 --> 00:25:29,340 pero que se sente razoable se está buscando por un usuario. 524 00:25:29,340 --> 00:25:31,170 Quizais afirma, con certeza, ID. 525 00:25:31,170 --> 00:25:34,100 526 00:25:34,100 --> 00:25:36,160 >> E é unha escorregadia declive, porque podía 527 00:25:36,160 --> 00:25:38,890 inventar un escenario onde quizais o meu xefe me pediu, 528 00:25:38,890 --> 00:25:40,417 cantos homes temos na nosa web? 529 00:25:40,417 --> 00:25:42,000 Cantas mulleres que temos na nosa web? 530 00:25:42,000 --> 00:25:45,210 E así, nese punto, pode querer para buscar no campo de xénero, tamén, 531 00:25:45,210 --> 00:25:45,940 e nada máis. 532 00:25:45,940 --> 00:25:47,350 Polo tanto, hai un trade-off aquí. 533 00:25:47,350 --> 00:25:49,180 De novo, non hai ningunha resposta correcta, pero hai 534 00:25:49,180 --> 00:25:53,760 é unha característica na maioría dos bancos de datos SQL coñecido como indexación, en que 535 00:25:53,760 --> 00:25:56,100 vostede, o deseño, o administrador de base de datos, 536 00:25:56,100 --> 00:26:01,730 comeza a decidir anticipadamente cales Campos A base de datos debe optimizar 537 00:26:01,730 --> 00:26:02,980 para a investigación en. 538 00:26:02,980 --> 00:26:07,620 >> Podería moi inxenuamente dicir, optimizar tanto, optimizar tanto, optimizar tanto, 539 00:26:07,620 --> 00:26:10,300 optimizar iso e iso, e a base de datos 540 00:26:10,300 --> 00:26:14,882 facer algo máxica debaixo do capo, e facer algo de xeito 541 00:26:14,882 --> 00:26:17,090 que a próxima vez que vostede buscar en calquera destes campos, 542 00:26:17,090 --> 00:26:18,400 vai, de feito, ser máis rápido. 543 00:26:18,400 --> 00:26:19,110 Isto é posible. 544 00:26:19,110 --> 00:26:20,530 Non anula a si mesmo. 545 00:26:20,530 --> 00:26:22,500 Pero debe haber un prezo a pagar. 546 00:26:22,500 --> 00:26:27,220 >> Se inxenuamente, ou exceso de entusiasmo digamos, o índice de todos estes campos, 547 00:26:27,220 --> 00:26:29,810 por así dicir, facelos todos eficientemente searchable, 548 00:26:29,810 --> 00:26:31,625 cal o prezo que está pagando probablemente? 549 00:26:31,625 --> 00:26:32,500 Audiencia: [inaudível] 550 00:26:32,500 --> 00:26:33,090 DAVID Malan: Performance. 551 00:26:33,090 --> 00:26:33,798 Que queres dicir? 552 00:26:33,798 --> 00:26:37,380 Ben rendemento, polo menos a contexto, estou discutindo, é mellor agora. 553 00:26:37,380 --> 00:26:38,830 Esta é a definición de indexación. 554 00:26:38,830 --> 00:26:41,180 Isto fará que as enquisas rápidas. 555 00:26:41,180 --> 00:26:43,366 Así, o tempo diminúe, por así dicir. 556 00:26:43,366 --> 00:26:44,240 Audiencia: [inaudível] 557 00:26:44,240 --> 00:26:45,031 DAVID Malan: Space. 558 00:26:45,031 --> 00:26:46,520 Entón, de novo, estes son un comercio común. 559 00:26:46,520 --> 00:26:50,820 Podo acelerar as súas investigacións, pero é vai custa-lle máis bytes de espazo. 560 00:26:50,820 --> 00:26:51,610 Por que? 561 00:26:51,610 --> 00:26:55,230 Ben, por defecto, se temos ningún estas estrelas vermellas, ningún destes índices, 562 00:26:55,230 --> 00:26:58,797 como eu digo, como buscar para un nome neste banco de datos? 563 00:26:58,797 --> 00:27:00,630 Entón, imos chamar a nosa atención a este exemplo. 564 00:27:00,630 --> 00:27:06,300 Se temos David e Scully e Kareem e Arwa e outros nestas liñas, 565 00:27:06,300 --> 00:27:06,910 por exemplo. 566 00:27:06,910 --> 00:27:08,390 >> Entón, imos facer exactamente isto. 567 00:27:08,390 --> 00:27:13,990 Scully está aquí, e despois temos Kareem, e Arwa, 568 00:27:13,990 --> 00:27:18,390 e os outros, se non o fai ten un índice definido, por así dicir, 569 00:27:18,390 --> 00:27:20,160 o mellor que podes facer é buscar lineal. 570 00:27:20,160 --> 00:27:23,470 Se buscar Arwa, non estamos vai ser capaz de ir á dereita para ela 571 00:27:23,470 --> 00:27:24,140 rapidamente. 572 00:27:24,140 --> 00:27:26,556 Nós imos comezar a parte superior e percorrer todo o camiño ata o fondo, 573 00:27:26,556 --> 00:27:28,600 non moi diferente do noso orixinal exemplo Mike Smith. 574 00:27:28,600 --> 00:27:33,470 >> Se, con todo, eu digo, hey, base de datos, Índice do primeiro campo de nome, 575 00:27:33,470 --> 00:27:37,000 logo vai facer algo extravagante e apoiar algo 576 00:27:37,000 --> 00:27:38,130 como busca binaria. 577 00:27:38,130 --> 00:27:39,820 Probablemente non é a busca binaria per se. 578 00:27:39,820 --> 00:27:42,810 Bases de datos tenden a usar outro estrutura de datos chamada de b-trees, 579 00:27:42,810 --> 00:27:46,540 non debe ser confundido con árbores binarias, que facelo máis rápido para buscar 580 00:27:46,540 --> 00:27:48,500 algo logarítmica na natureza. 581 00:27:48,500 --> 00:27:53,510 Pero o prezo que paga para construír esa O recurso, que a estrutura de datos na memoria, 582 00:27:53,510 --> 00:27:54,570 é máis bytes. 583 00:27:54,570 --> 00:27:57,170 Entón, isto pode levar algúns megabytes, algúns gigabytes, quen sabe? 584 00:27:57,170 --> 00:27:58,410 Depende dos datos. 585 00:27:58,410 --> 00:28:02,640 >> Entón, nalgún momento, ten que decidir, Probablemente non é un caso común. 586 00:28:02,640 --> 00:28:06,000 Entón, cales son o común real casos, se o tivese que escoller, 587 00:28:06,000 --> 00:28:10,080 o que podería seus campos favoritos ser? 588 00:28:10,080 --> 00:28:10,580 Correo electrónico. 589 00:28:10,580 --> 00:28:14,400 E máis me gusta de correo porque correo electrónico, en teoría, debe ser único. 590 00:28:14,400 --> 00:28:17,650 E así normalmente, cando vostede sabe de antemán que un dos seus campos 591 00:28:17,650 --> 00:28:20,277 é ou será único, que tende a ser un bo campo 592 00:28:20,277 --> 00:28:22,860 para buscar, porque desa forma, cando busca por algo, 593 00:28:22,860 --> 00:28:26,194 vai recibir de volta unha ou Restablecer respostas e, a continuación, está feito. 594 00:28:26,194 --> 00:28:28,110 Non ten que manter buscando outros aínda. 595 00:28:28,110 --> 00:28:31,992 >> E así, neste caso aquí, e-mail, sempre que non pode rexistrar dúas veces 596 00:28:31,992 --> 00:28:33,450 co mesmo correo electrónico, é unha boa. 597 00:28:33,450 --> 00:28:36,710 ID por definición, o mundo da informática, 598 00:28:36,710 --> 00:28:39,610 se está a falar dun ID, que mellor ser único. 599 00:28:39,610 --> 00:28:42,970 Isto é o tipo de connotación de ID ou identificador. 600 00:28:42,970 --> 00:28:46,440 E o resto deles pode ser, imos chamalos bo haves, 601 00:28:46,440 --> 00:28:47,860 pero non é realmente necesario. 602 00:28:47,860 --> 00:28:49,976 >> E así, nunha base de datos, se especifica índices, 603 00:28:49,976 --> 00:28:51,350 pero pode ser aínda máis preciso. 604 00:28:51,350 --> 00:28:56,060 Pode dicir, hey, base de datos, comproba se que cada ID nesta táboa é única. 605 00:28:56,060 --> 00:28:59,330 Non deixe nin mesmo un programador accidentalmente poñer en un correo-e duplicados 606 00:28:59,330 --> 00:29:00,740 ou duplicar número de identificación. 607 00:29:00,740 --> 00:29:03,140 Tan parecido enums protexer-nos da mesma forma, 608 00:29:03,140 --> 00:29:04,881 Pode que estas defensas de nivel inferior. 609 00:29:04,881 --> 00:29:07,130 E así por proxecto de base de datos, en certo sentido, é unha especie de diversión, 610 00:29:07,130 --> 00:29:08,380 porque facelo á defensiva. 611 00:29:08,380 --> 00:29:11,460 Vostede tipo de supoñer que traballa cos programadores horrible, horrible 612 00:29:11,460 --> 00:29:15,550 e quere poñer en tantas defensas como pode protexer os seus datos, 613 00:29:15,550 --> 00:29:18,940 pero á vez quere para axuda-los a ter un mellor desenvolvemento 614 00:29:18,940 --> 00:29:21,386 escollendo cales campos para optimizar. 615 00:29:21,386 --> 00:29:24,260 Pero non pode necesariamente facelo un baleiro como nós tipo de está aquí. 616 00:29:24,260 --> 00:29:26,480 Ten que saber cales son Nestes casos comúns estar. 617 00:29:26,480 --> 00:29:29,397 Se os desenvolvedores están implantación dun libro de enderezos, 618 00:29:29,397 --> 00:29:32,230 pode moi ben querer ser capaz a investigación en case todos os campos, 619 00:29:32,230 --> 00:29:33,830 só pola natureza da aplicación. 620 00:29:33,830 --> 00:29:37,910 Entón, talvez gasta que espazo adicional. 621 00:29:37,910 --> 00:29:39,090 >> Seguro, algunha pregunta? 622 00:29:39,090 --> 00:29:41,820 623 00:29:41,820 --> 00:29:42,486 Si. 624 00:29:42,486 --> 00:29:43,470 >> Audiencia: [inaudível] 625 00:29:43,470 --> 00:29:44,404 >> DAVID Malan: Non. 626 00:29:44,404 --> 00:29:45,279 >> Audiencia: [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 >> Audiencia: [inaudível] 630 00:29:49,701 --> 00:29:52,420 631 00:29:52,420 --> 00:29:54,850 >> DAVID Malan: Ah, entón nós estamos a falar dun xeito 632 00:29:54,850 --> 00:29:57,940 agora que é totalmente independente de linguaxe. 633 00:29:57,940 --> 00:30:02,370 Polo tanto, estamos a falar agora sobre bases de datos relacionais de forma máis xeral, 634 00:30:02,370 --> 00:30:04,760 ou SQL base de datos de forma máis xeral. 635 00:30:04,760 --> 00:30:06,870 >> Audiencia: [inaudível] 636 00:30:06,870 --> 00:30:10,030 >> DAVID Malan: A palabra mellor para usar é, pode ser usado por calquera linguaxe. 637 00:30:10,030 --> 00:30:15,280 Entón, podo escribir 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 cales falar a unha base de datos e realizar consultas. 639 00:30:19,010 --> 00:30:22,310 En realidade, iso non é un mal Segue a unha consulta de exemplo. 640 00:30:22,310 --> 00:30:25,720 E, de novo, non imos entrar en Java ou C ++ ou calquera dos que máis, 641 00:30:25,720 --> 00:30:29,420 pero en SQL, a linguaxe que me manter referíndose, Structured Query Language, 642 00:30:29,420 --> 00:30:32,790 este é en si unha linguaxe de programación, pero que está destinado a ser utilizado para, non 643 00:30:32,790 --> 00:30:37,330 sorpresa, estruturado consultas de consulta. 644 00:30:37,330 --> 00:30:38,660 >> Por iso quero dicir iso. 645 00:30:38,660 --> 00:30:41,190 A forma como selecciona datos desde unha base de datos MySQL 646 00:30:41,190 --> 00:30:49,330 é que, literalmente, escriba no seu programa algo así como select estrela dos usuarios. 647 00:30:49,330 --> 00:30:52,200 Estou asumindo que esta táboa, é a partir de agora chamado usuarios. 648 00:30:52,200 --> 00:30:54,860 Podería chamalo de calquera cousa que quere, pero este tipo de sentido. 649 00:30:54,860 --> 00:30:57,240 E así select é moi verbo común, se 650 00:30:57,240 --> 00:30:59,290 Vai, en SQL, que, literalmente, fai iso. 651 00:30:59,290 --> 00:31:02,730 ¿Que pensas estrela significa, neste contexto ,? 652 00:31:02,730 --> 00:31:04,410 >> Audiencia: [inaudível] 653 00:31:04,410 --> 00:31:05,380 >> DAVID Malan: Eu sinto moito? 654 00:31:05,380 --> 00:31:06,300 >> Audiencia: [inaudível] 655 00:31:06,300 --> 00:31:09,580 >> DAVID Malan: Non é necesario, é máis inclusiva que iso, en realidade. 656 00:31:09,580 --> 00:31:11,700 É o carácter comodín. 657 00:31:11,700 --> 00:31:14,740 Protagonizar case sempre significa algo, entón iso significa neste caso 658 00:31:14,740 --> 00:31:16,510 Seleccionar todo da base de datos. 659 00:31:16,510 --> 00:31:20,730 Polo tanto, cando digo iso, quero dicir me devolva cada columna 660 00:31:20,730 --> 00:31:22,440 da miña táboa chamada usuarios. 661 00:31:22,440 --> 00:31:24,730 Entón me dea un conxunto de resultados, como se chama. 662 00:31:24,730 --> 00:31:28,210 Noutras palabras, dáme unha copia do folla de cálculo, é o que eu estou chegando. 663 00:31:28,210 --> 00:31:34,890 >> Pero se eu dixese selecciona estrela de usuarios onde ID é igual a 1, o grande debe 664 00:31:34,890 --> 00:31:36,640 meu conxunto de resultados sería entón? 665 00:31:36,640 --> 00:31:41,680 Ou equivalentemente, cantas liñas deben I entrega de volta a partir da base de datos? 666 00:31:41,680 --> 00:31:45,860 Probablemente só un, se eu tivera de feito ID tratada como un identificador único, 667 00:31:45,860 --> 00:31:50,710 e David ten que ID único, I debería volver unha e só unha liña 668 00:31:50,710 --> 00:31:53,220 conteñen toda a información de David. 669 00:31:53,220 --> 00:31:56,390 Se eu dixen iso, onde ID é igual a 99, eu debería volver, 670 00:31:56,390 --> 00:32:00,320 Neste contexto, cero liñas, polo menos de momento. 671 00:32:00,320 --> 00:32:03,620 >> Con todo, se realmente non me importa sobre toda esta información, 672 00:32:03,620 --> 00:32:06,970 Podería só dicir, onde é que David vivir? 673 00:32:06,970 --> 00:32:10,860 Escolla un código postal de usuarios onde ID é 1. 674 00:32:10,860 --> 00:32:15,820 Isto pode seleccionar só a min zip de David código e non a totalidade desa liña. 675 00:32:15,820 --> 00:32:19,541 Por que eu podería facelo en vez de a consulta estrela, o wild card? 676 00:32:19,541 --> 00:32:21,950 >> Audiencia: [inaudível] 677 00:32:21,950 --> 00:32:24,590 >> DAVID Malan: Si, eu só podería ter del. 678 00:32:24,590 --> 00:32:26,350 Así, o rendemento é unha vez máis a resposta aquí. 679 00:32:26,350 --> 00:32:28,540 Por que pedir máis información que precisa, 680 00:32:28,540 --> 00:32:32,020 porque aínda que está todo ben en conxunto, aínda ten que copiar os datos, 681 00:32:32,020 --> 00:32:35,560 ao parecer, a partir da base de datos no seu programa de algunha maneira, 682 00:32:35,560 --> 00:32:38,490 e que é tontería se só precisa cinco deses díxitos, 683 00:32:38,490 --> 00:32:40,340 Non é a totalidade da cola. 684 00:32:40,340 --> 00:32:42,180 >> Entón, como podo inserir un usuario? 685 00:32:42,180 --> 00:32:44,780 Supoña que un usuario ten só rexistrado por primeira vez. 686 00:32:44,780 --> 00:32:46,560 A sintaxe normalmente sería coma este. 687 00:32:46,560 --> 00:32:52,700 Inserir usuarios e entón diriamos valores, 688 00:32:52,700 --> 00:33:00,150 e entón nós diría valores como, por exemplo, Lauren Scully, 689 00:33:00,150 --> 00:33:02,380 noso director de cine aquí. 690 00:33:02,380 --> 00:33:04,390 E o próximo campo é o xénero. 691 00:33:04,390 --> 00:33:08,020 Entón, imos dicir cita, pecha comiñas "F", entón temos unha identificación 692 00:33:08,020 --> 00:33:12,250 e eu vou dizer-- imos finxir que non é realmente aquí, 693 00:33:12,250 --> 00:33:14,380 así que imos retroceder na historia. 694 00:33:14,380 --> 00:33:16,530 Entón 2 será o seu ID. 695 00:33:16,530 --> 00:33:19,130 E entón o seguinte campo aquí é o seu e-mail. 696 00:33:19,130 --> 00:33:22,140 Por iso, será como Lauren Scully etc., 697 00:33:22,140 --> 00:33:24,360 e imos Dot Dot dot-lo de aquí en diante. 698 00:33:24,360 --> 00:33:26,890 Agora vai estar un pouco tedioso, pero a consulta de inserción 699 00:33:26,890 --> 00:33:28,310 acabaría por parecerse a iso. 700 00:33:28,310 --> 00:33:30,970 >> Se eu queira desfacerse de Scully, uh-oh, imos cancelar 701 00:33:30,970 --> 00:33:37,420 -la, ela exclúe súa conta, eliminar usuarios onde ID é igual a 2, 702 00:33:37,420 --> 00:33:38,500 vai se librar de Scully. 703 00:33:38,500 --> 00:33:48,050 Ou podo dicir actualizar usuarios definir, imos dicir, o que poderiamos cambiar? 704 00:33:48,050 --> 00:33:49,430 Supoña que se move. 705 00:33:49,430 --> 00:33:53,730 Set zip é igual a 021-- non, é ela zip actual. 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 Sei que o mundo. 708 00:33:56,320 --> 00:33:59,002 Así que mudaría ela zip code-- en realidade, 709 00:33:59,002 --> 00:34:00,460 que non cambiaría o seu código postal. 710 00:34:00,460 --> 00:34:02,170 >> Que acaba de facer? 711 00:34:02,170 --> 00:34:04,292 Aínda que a sintaxe é probablemente novo. 712 00:34:04,292 --> 00:34:05,302 >> Audiencia: [inaudível] 713 00:34:05,302 --> 00:34:08,010 DAVID Malan: Si, eu me mudei todos para Beverly Hills, California. 714 00:34:08,010 --> 00:34:11,920 Entón, eu debería realmente dicir onde ID é igual a 2. 715 00:34:11,920 --> 00:34:12,820 E así por diante. 716 00:34:12,820 --> 00:34:15,290 Entón SQL é todo sobre estes tipo de instrucións. 717 00:34:15,290 --> 00:34:20,260 SELECT, INSERT, eliminar, actualizar con estes predicados no extremo 718 00:34:20,260 --> 00:34:22,139 estas cláusulas, onde, por así dicir. 719 00:34:22,139 --> 00:34:25,170 E hai moito máis pode facer, pero é realmente só se reduce 720 00:34:25,170 --> 00:34:29,750 simplemente, se arcanely, expresando o que quere que a base de datos para facer. 721 00:34:29,750 --> 00:34:31,580 >> E, a continuación, a base de datos Vai descubrir cando 722 00:34:31,580 --> 00:34:35,630 inserir Lauren Scully para o base de datos, onde poñela na memoria 723 00:34:35,630 --> 00:34:38,230 para que poidamos obter moi rapidamente -la con base no seu enderezo de correo-e 724 00:34:38,230 --> 00:34:42,610 ou segundo o seu número de identificación ou outros similares. 725 00:34:42,610 --> 00:34:43,391 Si, Dan. 726 00:34:43,391 --> 00:34:44,266 Audiencia: [inaudível] 727 00:34:44,266 --> 00:34:46,364 728 00:34:46,364 --> 00:34:47,780 DAVID Malan: Realmente boa pregunta. 729 00:34:47,780 --> 00:34:50,370 Será que estes scripts cambiar de Microsoft Access para 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 é que depende. 732 00:34:53,790 --> 00:34:58,697 En teoría, hai unha moi subconxunto común significativo de SQL 733 00:34:58,697 --> 00:35:00,780 que é compartido entre todos estas implementacións. 734 00:35:00,780 --> 00:35:03,340 Con todo, varios fabricantes ten características engadidas 735 00:35:03,340 --> 00:35:07,120 aos seus bancos de datos para facer certas cousas alén do alcance destes recursos, 736 00:35:07,120 --> 00:35:08,720 que pode, de feito, romper. 737 00:35:08,720 --> 00:35:11,210 >> Así, o xeito desenvolvedores protexer contra iso, 738 00:35:11,210 --> 00:35:14,350 é que en vez de escribir en bruto código SQL que estou escribindo aquí, 739 00:35:14,350 --> 00:35:19,460 eles en vez de usar unha biblioteca, unha biblioteca común que a propia 740 00:35:19,460 --> 00:35:23,650 é unha especie de alto-nivel e resumos distancia, que produto que está a usar. 741 00:35:23,650 --> 00:35:25,710 E dálle funcións e procedementos 742 00:35:25,710 --> 00:35:28,810 para chamar para que nunca realmente escribir SQL puro. 743 00:35:28,810 --> 00:35:32,609 >> En teoría, entón, pode cambiar produtos de Oracle para Microsoft 744 00:35:32,609 --> 00:35:34,650 ou viceversa, ou algo outra cousa, e literalmente 745 00:35:34,650 --> 00:35:36,920 cambiar nada sobre o seu código. 746 00:35:36,920 --> 00:35:40,180 A realidade, con todo, é, ás veces desistir de recursos como resultado. 747 00:35:40,180 --> 00:35:43,860 Pode escoller un produto porque ten eses recursos de valor engadido, 748 00:35:43,860 --> 00:35:46,610 e está agora non usalas conscientemente. 749 00:35:46,610 --> 00:35:51,630 >> E informalmente, a maioría das empresas tenden Nunca se afastar do seu banco de datos. 750 00:35:51,630 --> 00:35:54,002 Así, mentres que este é un bo ten recurso, a realidade 751 00:35:54,002 --> 00:35:55,960 é, se está revisando base de datos, está 752 00:35:55,960 --> 00:35:59,890 probablemente facendo acios doutras alteracións de calquera xeito, que non necesariamente 753 00:35:59,890 --> 00:36:01,360 Debe anticipar iso. 754 00:36:01,360 --> 00:36:03,720 Polo tanto, é indiscutibelmente over-enxeñaría do problema, 755 00:36:03,720 --> 00:36:05,670 pero realmente depende do contexto. 756 00:36:05,670 --> 00:36:09,960 Pero, en teoría, o SQL é compartido entre estes diferentes produtos. 757 00:36:09,960 --> 00:36:11,560 Realmente boas preguntas. 758 00:36:11,560 --> 00:36:12,272 Si. 759 00:36:12,272 --> 00:36:13,147 >> Audiencia: [inaudível] 760 00:36:13,147 --> 00:36:17,820 761 00:36:17,820 --> 00:36:21,480 >> DAVID Malan: Si, entón pode pensar unha base de datos 762 00:36:21,480 --> 00:36:25,020 é só un servidor, a finais de do día, e no interior do referido servidor 763 00:36:25,020 --> 00:36:28,670 é unha morea de táboas, liñas e columnas. 764 00:36:28,670 --> 00:36:33,410 E cando envía unha consulta como esta desde o programa, o seu sitio web, 765 00:36:33,410 --> 00:36:39,340 escrito en Java, Ruby, Python, calquera que sexa, o servidor está a recibir esta orde 766 00:36:39,340 --> 00:36:41,660 e interpretando a literalmente, do mesmo xeito 767 00:36:41,660 --> 00:36:43,660 discutir anteriormente con linguaxes interpretadas, 768 00:36:43,660 --> 00:36:47,333 e logo, realizar algunha acción sobre a cero ou máis liñas en cero ou máis táboas. 769 00:36:47,333 --> 00:36:48,208 Audiencia: [inaudível] 770 00:36:48,208 --> 00:36:53,540 771 00:36:53,540 --> 00:36:55,070 >> DAVID Malan: Exactamente, exactamente. 772 00:36:55,070 --> 00:36:58,450 Así, o pseudocódigo para algo como iso pode ser iso. 773 00:36:58,450 --> 00:37:02,450 No seu arquivo PHP ou o arquivo Python ou o seu arquivo de Java, 774 00:37:02,450 --> 00:37:09,210 tería de código pseudo-código, ou Risco-como bloques como, visitas de usuarios 775 00:37:09,210 --> 00:37:19,870 acme.com/register~~V por primeira vez, logo inserir usuarios e así por diante. 776 00:37:19,870 --> 00:37:22,619 E queremos traducir isto para código máis concreto no final. 777 00:37:22,619 --> 00:37:24,660 Pero, realmente, temos todo os bloques de construción aquí, 778 00:37:24,660 --> 00:37:27,680 aínda que estamos ignorando algúns das etapas de implantación. 779 00:37:27,680 --> 00:37:31,560 >> Entón deixe-me atopar o fallo co que marabillosas fixo só un momento atrás. 780 00:37:31,560 --> 00:37:36,470 Creou unha fermosa táboa completa para os usuarios. 781 00:37:36,470 --> 00:37:38,920 É certo, poderiamos aplicar Lo en algunhas formas diferentes, 782 00:37:38,920 --> 00:37:43,030 pero ten realmente nos levou baixo a path-- e eu dígolle, 783 00:37:43,030 --> 00:37:48,080 pero é probablemente o meu fault-- dun moi base de datos de aplicación ineficiente. 784 00:37:48,080 --> 00:37:49,950 Non é normalizado. 785 00:37:49,950 --> 00:37:52,320 >> E por normalizada quero dicir alí vai ser, 786 00:37:52,320 --> 00:37:57,380 co paso do tempo, unha redundancia significativa, e, polo tanto, ineficiencia, 787 00:37:57,380 --> 00:38:00,210 que é desperdicio de espazo. 788 00:38:00,210 --> 00:38:05,650 En base a só o que ve aquí, pode imaxina que esta perda de espazo 789 00:38:05,650 --> 00:38:08,710 Vai veñen, co paso do tempo, a medida que máis e máis usuarios rexistrar 790 00:38:08,710 --> 00:38:10,860 para o seu sitio? 791 00:38:10,860 --> 00:38:13,047 O que os datos poden chegar a ser redundantes? 792 00:38:13,047 --> 00:38:19,084 793 00:38:19,084 --> 00:38:20,940 >> Audiencia: [inaudível] 794 00:38:20,940 --> 00:38:22,686 >> DAVID Malan: Por que quere dicir isto? 795 00:38:22,686 --> 00:38:23,561 Audiencia: [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 imos supor que para os fins de hoxe que iso é verdade. 799 00:38:35,622 --> 00:38:38,330 Acontece que, e aprendemos tanto do xeito máis difícil, iso non é verdade. 800 00:38:38,330 --> 00:38:41,670 Dalgunha forma, varias cidades, dalgún xeito, o mesmo código postal, 801 00:38:41,670 --> 00:38:43,390 que rompe esa intuición marabillosa. 802 00:38:43,390 --> 00:38:46,180 Pero imos supoñer que isto sexa verdade, porque é case sempre certo. 803 00:38:46,180 --> 00:38:51,390 Entón, supoñamos que un código postal é sempre asociada coa mesma cidade 804 00:38:51,390 --> 00:38:53,600 e do estado, que é unha especie da suposición razoable, 805 00:38:53,600 --> 00:38:54,840 pero incorrecta, verifica-se. 806 00:38:54,840 --> 00:38:57,310 Pero unha suposición razoable para fins de hoxe. 807 00:38:57,310 --> 00:39:01,650 >> Axiña, supoña que eu vivo en Cambridge, MA, segundo a táboa do usuario, 808 00:39:01,650 --> 00:39:04,100 e supoñamos que Lauren Scully vive en Cambridge, MA, 809 00:39:04,100 --> 00:39:06,120 e supoñamos que Kareem vive en Cambridge, MA, 810 00:39:06,120 --> 00:39:10,400 e Arwa vive en Cambridge, MA, todos nós, en 02138. 811 00:39:10,400 --> 00:39:15,890 Por que estamos lembrando Cambridge MA, 02138 para as catro de nós? 812 00:39:15,890 --> 00:39:18,903 O que debe ser suficiente para lembrar? 813 00:39:18,903 --> 00:39:20,249 >> Audiencia: [inaudível] 814 00:39:20,249 --> 00:39:21,540 DAVID Malan: Só o CEP. 815 00:39:21,540 --> 00:39:25,080 Basta que hai 02138 porque sabe o que poderiamos facer? 816 00:39:25,080 --> 00:39:32,650 Poderiamos estar un pouco sofisticados aquí e aquí, establecer outra mesa 817 00:39:32,650 --> 00:39:35,850 onde é que isto vai ser o nome, este será o tipo, 818 00:39:35,850 --> 00:39:38,840 este será o lonxitude, e de aí en diante, eu son 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 Por suposto, a miña táboa de usuarios. 821 00:39:47,011 --> 00:39:49,885 E entón o que debo poñer aquí para o meu cidades mesa, que pensas? 822 00:39:49,885 --> 00:39:53,605 823 00:39:53,605 --> 00:39:54,535 >> Audiencia: [inaudível] 824 00:39:54,535 --> 00:39:55,930 >> DAVID Malan: Yeah. 825 00:39:55,930 --> 00:40:01,440 Entón zip e estado e cidade. 826 00:40:01,440 --> 00:40:05,350 E así o tipo aquí, imos dicir este será un char 5 de novo, 827 00:40:05,350 --> 00:40:06,750 suxeitas ao debate de antes. 828 00:40:06,750 --> 00:40:14,810 Esta será unha enumeración, quizais como antes, ea cidade será un VARCHAR 50. 829 00:40:14,810 --> 00:40:17,960 E agora o que eu gaño para eliminar a partir desta táboa 830 00:40:17,960 --> 00:40:21,995 para eliminar esa ineficiencia? 831 00:40:21,995 --> 00:40:23,100 >> Audiencia: [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 municipio ir, entón eu teño agora eliminada a ineficacia 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, esperanza nunca vai cambiar. 836 00:40:35,712 --> 00:40:37,670 E mesmo se isto acontecer, é minorly chat, agora 837 00:40:37,670 --> 00:40:39,750 que eu teño que cambiar Lo en varias liñas, 838 00:40:39,750 --> 00:40:43,770 mentres que aquí, eu só podía mudalo nun só lugar. 839 00:40:43,770 --> 00:40:46,890 >> Agora, cal é o trade-off, quizais? 840 00:40:46,890 --> 00:40:48,020 Este foi super cómodo. 841 00:40:48,020 --> 00:40:50,730 Tiña todos os meus datos ben xuntos. 842 00:40:50,730 --> 00:40:53,644 Pero o que é claramente o caso agora? 843 00:40:53,644 --> 00:40:55,684 >> Audiencia: [inaudível] 844 00:40:55,684 --> 00:40:58,100 DAVID Malan: Exactamente, e eu son feliz que usou a palabra xuntarse, 845 00:40:58,100 --> 00:41:01,320 porque esa é realmente a palabra clave, no mundo dos bancos de datos relacionais 846 00:41:01,320 --> 00:41:05,270 en SQL, é unha palabra real pode escribir ou polo menos transmitir. 847 00:41:05,270 --> 00:41:09,280 E, de feito, o que temos agora que facer para seleccionar a información completa de David é 848 00:41:09,280 --> 00:41:19,700 algo así como selecciona Estrela usuarios, participar de cidades, on-- e agora 849 00:41:19,700 --> 00:41:24,010 Vou só mover unha segunda liña de xeito 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ón, o que está a suceder? 852 00:41:35,550 --> 00:41:38,970 É feo mirando, pero pode tipo de lelo esquerda a dereita, de arriba a abaixo. 853 00:41:38,970 --> 00:41:41,030 Select estrela de usuarios é o mesmo que antes, 854 00:41:41,030 --> 00:41:42,930 pero non é dos usuarios, por si só. 855 00:41:42,930 --> 00:41:45,910 É de usuarios unirse cidades. 856 00:41:45,910 --> 00:41:48,520 O que eu estou xuntando esas dúas táboas? 857 00:41:48,520 --> 00:41:51,820 Ben, ao parecer, o usuarios mesas zip campo, 858 00:41:51,820 --> 00:41:54,810 e este período é só especial sintaxe para expresar esta idea, 859 00:41:54,810 --> 00:41:58,130 e esta é a cidades táboas campo zip. 860 00:41:58,130 --> 00:42:01,580 Quero os dous para ser igual, pero quero para seleccionar, en última instancia 861 00:42:01,580 --> 00:42:06,280 só as liñas onde ID na táboa de usuarios 862 00:42:06,280 --> 00:42:08,730 é igual a 1, que pasou a ser o meu. 863 00:42:08,730 --> 00:42:11,781 >> E só para quedar claro, a programador, polo xeral, cando 864 00:42:11,781 --> 00:42:14,780 codificar algo así como o número 1, porque senón o sitio só 865 00:42:14,780 --> 00:42:17,630 Soporta David ou primeiro usuario, 866 00:42:17,630 --> 00:42:20,720 en vez diso facer algo así como ID onde 867 00:42:20,720 --> 00:42:22,510 isto supón un variable, que algo 868 00:42:22,510 --> 00:42:26,210 pode cambiar co paso do tempo, similar en espírito para o que eu dixen anteriormente 869 00:42:26,210 --> 00:42:28,080 con estes tipos de espazos reservados. 870 00:42:28,080 --> 00:42:30,396 Pero, por agora imos só codifica-lo como un. 871 00:42:30,396 --> 00:42:31,520 E entón o que é que isto significa? 872 00:42:31,520 --> 00:42:35,100 Ben, unha boa forma de ver que é que, se esta man é a táboa de usuarios, 873 00:42:35,100 --> 00:42:38,090 e este lado é o zips mesa, somos tipo de finding-- 874 00:42:38,090 --> 00:42:41,330 e as puntas dos meus dedos están zip aquí, e as puntas dos meus dedos 875 00:42:41,330 --> 00:42:43,740 aquí están zip, está tipo de intertravamento que 876 00:42:43,740 --> 00:42:47,950 de xeito que recibir de volta o que resulta táboa orixinal, por realmente unirse 877 00:42:47,950 --> 00:42:49,590 as dúas táboas o campo común. 878 00:42:49,590 --> 00:42:50,840 E non ten que ser peche de correr. 879 00:42:50,840 --> 00:42:54,460 Podería ser máis que calquera outra cousa, pero zip é bo, porque un, é curto, 880 00:42:54,460 --> 00:42:56,470 dous, é sempre a mesma lonxitude, non hai 881 00:42:56,470 --> 00:43:02,270 unha verdadeira eficacia ao Olivier aquí proposto 882 00:43:02,270 --> 00:43:05,200 con factoring o zip, e [Inaudível] propoñendo que se librar 883 00:43:05,200 --> 00:43:07,110 da cidade e estados. 884 00:43:07,110 --> 00:43:11,370 >> Polo tanto, este é o proceso coñecido como normalización. 885 00:43:11,370 --> 00:43:14,171 Calquera dúbida sobre iso? 886 00:43:14,171 --> 00:43:16,170 Ben, deixe-me salientar este é o tipo de cousas, 887 00:43:16,170 --> 00:43:19,202 aínda que sexa moi baixo nivel, Nesta discusión, que pensaría 888 00:43:19,202 --> 00:43:20,910 está tipo de obtención perdido nas herbas daniñas, 889 00:43:20,910 --> 00:43:26,690 esta é unha manifestación dun amplo oportunidade para os desenvolvedores de ser malo. 890 00:43:26,690 --> 00:43:29,600 E, de feito, mesmo cando, en cursos que ensinei, cando tivemos, 891 00:43:29,600 --> 00:43:32,290 por exemplo, inexperto programadores de graduación 892 00:43:32,290 --> 00:43:35,920 construír sitios, a primeira vista, os sitios poden ollar fantástico. 893 00:43:35,920 --> 00:43:38,280 E eles teñen todo o funcionalidade foi solicitada, 894 00:43:38,280 --> 00:43:40,650 os desenvolvedores fixeron un bo traballo. 895 00:43:40,650 --> 00:43:43,370 >> Pero eles non sabían necesariamente abondo sobre o deseño de bases de datos 896 00:43:43,370 --> 00:43:46,680 ou non pensar moito abondo sobre os tipos de datos 897 00:43:46,680 --> 00:43:49,220 e os tipos de usuarios das web ía ter, 898 00:43:49,220 --> 00:43:53,240 e nós cremos, entón, seis meses despois, despois de que se formou ou cambiaron, 899 00:43:53,240 --> 00:43:56,016 que porra, a nosa web é realmente, realmente lento. 900 00:43:56,016 --> 00:43:58,890 E eu non estou nin fala de millóns ou miles de usuarios. 901 00:43:58,890 --> 00:44:02,580 Quero dicir algúns centenares de usuarios no campus, todos os cales desexa, por exemplo, 902 00:44:02,580 --> 00:44:04,870 compra para cursos na Ao mesmo tempo, son 903 00:44:04,870 --> 00:44:07,010 usando este catálogo de cursos aplicación mencionen 904 00:44:07,010 --> 00:44:10,410 ea cousa está quedando realmente lento porque non había índices. 905 00:44:10,410 --> 00:44:13,740 Non houbo estrelas vermellas, por así falar, ou non tivo necesariamente 906 00:44:13,740 --> 00:44:17,690 fatoramos datos comúns a obter algunhas economías de espazo. 907 00:44:17,690 --> 00:44:21,880 >> E así, cando vetar un creador ou persoa base de datos ou similares, 908 00:44:21,880 --> 00:44:25,864 tipo de preguntas para pensar é aínda, no momento da revisión do código de alguén, 909 00:44:25,864 --> 00:44:28,530 quere dicir, non necesariamente ollar a través de todo o seu código, pero dicir, 910 00:44:28,530 --> 00:44:30,154 imos ollar a través das táboas de base de datos. 911 00:44:30,154 --> 00:44:31,150 O que está almacenando? 912 00:44:31,150 --> 00:44:33,941 E entón a dicir, ben, agarde un minuto, porque está a usar un número enteiro? 913 00:44:33,941 --> 00:44:36,224 E se temos 4 millóns e unha destas liñas? 914 00:44:36,224 --> 00:44:38,140 E este tipo de preguntas é unha oportunidade 915 00:44:38,140 --> 00:44:40,170 ao tipo de empurrar cara atrás e ter unha noción de onde 916 00:44:40,170 --> 00:44:42,300 se non está cómodo facendo Lo, ter alguén máis técnico 917 00:44:42,300 --> 00:44:45,425 esas preguntas, de se é ou non a persoa realmente sabe o seu material. 918 00:44:45,425 --> 00:44:47,890 E este é o tipo de cousas, tamén, que a xente 919 00:44:47,890 --> 00:44:50,540 en internet que son propio didatas, quizais 920 00:44:50,540 --> 00:44:53,920 aprender con menos frecuencia, porque non necesariamente se atopou con ela 921 00:44:53,920 --> 00:44:56,630 logo, porque pode obter a base de datos instalado e funcionando, 922 00:44:56,630 --> 00:44:58,880 pero a menos que xa leu -se en tutoriais ou ser 923 00:44:58,880 --> 00:45:01,880 contou sobre normalización de bases de datos e indexación e rendemento, 924 00:45:01,880 --> 00:45:04,255 estes son os tipos de cousas que van te machucar. 925 00:45:04,255 --> 00:45:07,480 E podería pensar, ou un mal enxeñeiro Pódese dicir, oh, así, nos mellores salarios 926 00:45:07,480 --> 00:45:09,600 para unha base de datos máis grande ou unha base de datos máis rapidamente 927 00:45:09,600 --> 00:45:13,360 ou só xogar cartos con iso, escala vertical, non é necesariamente así. 928 00:45:13,360 --> 00:45:16,920 Se vai em-- e pode ir despois os índices fact-- e engadir, 929 00:45:16,920 --> 00:45:20,320 e isto pode levar unhas horas para o base de datos para construír os novos datos 930 00:45:20,320 --> 00:45:24,100 estrutura que me referín anteriormente, aínda pode solucionar isto despois do feito, 931 00:45:24,100 --> 00:45:26,180 que este é onde comezar a distinguir 932 00:45:26,180 --> 00:45:28,830 bos deseñadores de bad os deseñadores, non só esteticamente, 933 00:45:28,830 --> 00:45:32,972 pero en termos de rendemento tamén. 934 00:45:32,972 --> 00:45:33,555 Algunha pregunta? 935 00:45:33,555 --> 00:45:36,420 936 00:45:36,420 --> 00:45:37,480 Non? 937 00:45:37,480 --> 00:45:41,980 Así, para NoSQL, que era o outro tipo de base de datos a que aludi anteriormente, 938 00:45:41,980 --> 00:45:43,490 Non ten liñas e columnas. 939 00:45:43,490 --> 00:45:47,000 Pola contra, que tería algo que parece un pouco máis como este. 940 00:45:47,000 --> 00:45:48,630 Vou usar unha sintaxe común. 941 00:45:48,630 --> 00:45:51,270 claves ocorrer pode usar aquí bastante. 942 00:45:51,270 --> 00:45:55,400 Pode ter algo como o seu nome é David, 943 00:45:55,400 --> 00:46:00,180 pode ter pasado nome é Malan, citas, 944 00:46:00,180 --> 00:46:07,530 pode ter ID é-- Desculpe-me, whoops-- ID é 1, 945 00:46:07,530 --> 00:46:13,410 correo-e está malan@harvard.edu, e non vou molesta escribindo o resto, e logo 946 00:46:13,410 --> 00:46:14,380 algunhas outras cousas. 947 00:46:14,380 --> 00:46:17,380 >> Noutras palabras, esta é representación como texto 948 00:46:17,380 --> 00:46:20,720 que nós xeralmente chamamos un obxecto nun programa de ordenador. 949 00:46:20,720 --> 00:46:26,079 E un obxecto é xeralmente só unha colección de pares de valores clave. 950 00:46:26,079 --> 00:46:27,370 Entón, de novo, este tema recurrente. 951 00:46:27,370 --> 00:46:30,440 Vimos pares de valores clave HTML, vimos pares de chaves de valor agora 952 00:46:30,440 --> 00:46:34,020 no contexto das bases de datos, e vin un par de identificador-valor no contexto 953 00:46:34,020 --> 00:46:35,970 de, penso eu, unha linguaxe máis cedo hoxe. 954 00:46:35,970 --> 00:46:36,890 Segue a subir. 955 00:46:36,890 --> 00:46:39,620 E, de feito, iso é realmente os datos que se reduce a, 956 00:46:39,620 --> 00:46:44,240 datos e metadatos, ou valores e chaves, respectivamente. 957 00:46:44,240 --> 00:46:47,430 >> Así, un non-relacional base de datos, en base algo 958 00:46:47,430 --> 00:46:50,680 en obxectos, onde só se aglomeram todo xunto e poñelas 959 00:46:50,680 --> 00:46:55,640 na memoria, sería normalmente retratado como, ou pensado, como este. 960 00:46:55,640 --> 00:47:00,500 E eu vou deixar isto agora como un tipo de visión alternativa. 961 00:47:00,500 --> 00:47:03,750 E un non é necesariamente mellor que o outro. 962 00:47:03,750 --> 00:47:07,310 En realidade, moi en voga nos días de hoxe son sistemas de base de datos 963 00:47:07,310 --> 00:47:11,942 como MongoDB e Redis e algúns outras ferramentas, dispoñibles gratuitamente, 964 00:47:11,942 --> 00:47:13,400 pero eles están cada vez máis en voga. 965 00:47:13,400 --> 00:47:18,850 En parte porque ofrecen adicional presenta máis de estas formulacións tabulares, 966 00:47:18,850 --> 00:47:20,850 pero tamén porque son un pouco máis fácil de usar, 967 00:47:20,850 --> 00:47:24,099 porque non ten que pensar tan duro sobre unha morea desas decisións de deseño. 968 00:47:24,099 --> 00:47:25,970 Entón pros e contras. 969 00:47:25,970 --> 00:47:29,740 Entón entendo que hai opcións máis do que acabamos de pasar tempo con. 970 00:47:29,740 --> 00:47:32,310 >> Entón, imos facelo. 971 00:47:32,310 --> 00:47:37,870 Imos facer a transición algo volta agora a programación web, 972 00:47:37,870 --> 00:47:40,470 de xeito que nós tipo de concluír hoxe con algo 973 00:47:40,470 --> 00:47:43,930 Isto é un pouco hands-on, enche algunhas lagoas de onte. 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ón recordar que onte tivemos algúns HTML canónica 976 00:47:49,310 --> 00:47:55,110 páxinas que tiveron Inicialmente, só HTML, e logo secundariamente tivo CSS, 977 00:47:55,110 --> 00:47:56,620 follas de estilo en cascada. 978 00:47:56,620 --> 00:47:59,830 Esta é unha nova etiqueta que non fixo vexa onte ou habitan sobre, 979 00:47:59,830 --> 00:48:01,490 chamado tag script. 980 00:48:01,490 --> 00:48:05,830 >> Acontece que realmente pode incorporar un linguaxe chamada Javascript no seu web 981 00:48:05,830 --> 00:48:08,310 páxina e facer o seu web páxinas facer algo. 982 00:48:08,310 --> 00:48:09,710 Entón, o que quero dicir con isto? 983 00:48:09,710 --> 00:48:12,630 Ben, deixe-me ir adiante e só prestar este código para un momento. 984 00:48:12,630 --> 00:48:15,860 Eu estou indo a ir a Cloud9, non hai necesidade para ir alí vos aínda, 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 a pegar no meu arquivo aquí. 987 00:48:23,650 --> 00:48:32,070 E só para aclarar o que eu fixen, deixe -me ir a este enderezo e ir avisar, 988 00:48:32,070 --> 00:48:33,870 e ve o Ola Mundo. 989 00:48:33,870 --> 00:48:35,440 >> Pero este é o tipo de underwhelming. 990 00:48:35,440 --> 00:48:37,410 Quero facer algo un pouco diferente. 991 00:48:37,410 --> 00:48:40,610 Entón, eu vou realmente facelo. 992 00:48:40,610 --> 00:48:43,820 Eu estou indo a ir aquí e, e entre as miñas marcas de script, 993 00:48:43,820 --> 00:48:53,460 din alert ( 'Ola, mundo "); entón, observe é un pouco desleixado, pero eu teño HTML, 994 00:48:53,460 --> 00:48:56,180 no interior dos cales é un linguaxe chamada JavaScript, 995 00:48:56,180 --> 00:48:59,420 e iso é o que se chama chamada de función ou chamada de procedemento. 996 00:48:59,420 --> 00:49:04,500 Este é un verbo, literalmente, neste caso, e eu estou chamando funcionalidade código 997 00:49:04,500 --> 00:49:06,310 que outra persoa escribiu. 998 00:49:06,310 --> 00:49:09,630 >> Así que a función é un alerta, entón imos ir a esta páxina 999 00:49:09,630 --> 00:49:14,046 agora e prema recarga, e agora ver un pouco de interactividade. 1000 00:49:14,046 --> 00:49:15,420 É unha especie de vella escola e feo. 1001 00:49:15,420 --> 00:49:18,580 Este tipo de lembra-o da ventás emerxentes, quizais, do pasado 1002 00:49:18,580 --> 00:49:22,030 pero fixo facer algo un pouco máis programática. 1003 00:49:22,030 --> 00:49:26,940 >> Así, máis do que iso, imos facer algo máis interesante. 1004 00:49:26,940 --> 00:49:30,980 Déixeme entrar aquí e se librar desa. 1005 00:49:30,980 --> 00:49:33,840 E eu estou indo a ir adiante e crear unha forma como fixemos onte. 1006 00:49:33,840 --> 00:49:34,840 De feito, xa sabe o que? 1007 00:49:34,840 --> 00:49:37,350 Eu estou indo a ir google.html, que 1008 00:49:37,350 --> 00:49:43,027 comezou onte, que parecía este, a través do cal temos demandado por gato 1009 00:49:43,027 --> 00:49:45,360 Pero teña en conta que hai unha especie de erro na versión actual. 1010 00:49:45,360 --> 00:49:49,770 Traballa para gatos, pero supoñamos que Non cooperar e eu escribir nada, 1011 00:49:49,770 --> 00:49:53,290 e eu simplemente prema en enviar. 1012 00:49:53,290 --> 00:49:54,540 Este tipo de comportamento estraño. 1013 00:49:54,540 --> 00:49:57,300 levoume ao verdadeiro Google Non me deu unha mensaxe de erro. 1014 00:49:57,300 --> 00:50:00,590 Gustaríame dicir ao usuario precisa dar un valor. 1015 00:50:00,590 --> 00:50:01,780 >> Entón, como podemos facelo? 1016 00:50:01,780 --> 00:50:06,790 Ben, deixe-me volver Cloud9 e deixe-me ir para arriba da miña páxina 1017 00:50:06,790 --> 00:50:11,980 e engadir unha marca de script como este, onde Eu estou indo a escribir un código JavaScript. 1018 00:50:11,980 --> 00:50:15,420 E eu vou facer o seguinte. 1019 00:50:15,420 --> 00:50:22,910 Se (document.getelementByID-- e recordo que falamos sobre iso antes, 1020 00:50:22,910 --> 00:50:23,960 esta función. 1021 00:50:23,960 --> 00:50:25,310 A ID é que quero chegar? 1022 00:50:25,310 --> 00:50:33,050 Eu quero ir q, e eu vou digamos equivale a nada, como isto-- 1023 00:50:33,050 --> 00:50:38,220 en realidade, déixeme usar comiñas dobres só para consistency-- é igual a nada, 1024 00:50:38,220 --> 00:50:46,650 logo alert ( "Por favor, escriba unha consulta") aquí. 1025 00:50:46,650 --> 00:50:49,200 >> Entón, eu teño o que parece ser algo así como unha condición. 1026 00:50:49,200 --> 00:50:51,410 Vimos esa idea xeral no risco. 1027 00:50:51,410 --> 00:50:54,240 É como un deses puzzle pezas que mirou como este. 1028 00:50:54,240 --> 00:50:55,780 E o que digo? 1029 00:50:55,780 --> 00:50:59,520 Ben, aquí abaixo, repare en que eu son imos facer o seguinte. 1030 00:50:59,520 --> 00:51:02,790 Vou dar esta forma campo non só un nome q, que 1031 00:51:02,790 --> 00:51:06,630 é o que é pasado a Google, pero estou vai dar-lle un identificador local, 1032 00:51:06,630 --> 00:51:07,630 tamén chamado Q. 1033 00:51:07,630 --> 00:51:11,780 Pero eu podería chamar iso de calquera cousa que eu quero, eu só vou mantelo simple 1034 00:51:11,780 --> 00:51:14,570 e tamén chamalo q, só para simplificar. 1035 00:51:14,570 --> 00:51:17,650 >> E agora eu vou facer algo un pouco máis. 1036 00:51:17,650 --> 00:51:22,600 Sobre os campos do formulario aquí, eu vou engadir o que se chama un manipulador de eventos. 1037 00:51:22,600 --> 00:51:32,260 En presentar, quero chamar unha función chamada de validación. 1038 00:51:32,260 --> 00:51:35,520 Isto aínda non existe, este palabra, ou iso validar verbo, 1039 00:51:35,520 --> 00:51:38,560 porque o que eu vou facer -se aquí agora é engadir un código. 1040 00:51:38,560 --> 00:51:42,200 >> Eu vou dicir a función de validación. 1041 00:51:42,200 --> 00:51:48,280 Eu estou indo a recuar este e engadir outro chaveta aquí e outro aquí. 1042 00:51:48,280 --> 00:51:50,110 Considero o que iso está facendo agora. 1043 00:51:50,110 --> 00:51:54,210 Teño agora-- pensar niso como creei o meu propia peza do puzzle que non tiña anteriormente 1044 00:51:54,210 --> 00:51:57,440 existen, e eu chamei este puzzle peza a peza de validación de puzzle. 1045 00:51:57,440 --> 00:52:01,620 O seu obxectivo na vida é realizar as catro liñas de código no mesmo. 1046 00:52:01,620 --> 00:52:04,940 >> se document.getElementById de xeito conceptualmente, 1047 00:52:04,940 --> 00:52:09,380 que está indo a ir ao elemento, o elemento HTML cuxa única 1048 00:52:09,380 --> 00:52:12,930 idea é só q, e, a continuación, aínda que a sintaxe parece un pouco raro, 1049 00:52:12,930 --> 00:52:16,430 que a igualdade é igual significa só iguais. 1050 00:52:16,430 --> 00:52:20,950 Entón isto significa que se o elemento co identificador único q cando obtido, 1051 00:52:20,950 --> 00:52:25,700 non ten valor, el só é igual a entre comiñas, nada alí, 1052 00:52:25,700 --> 00:52:27,170 entón o que quero facer? 1053 00:52:27,170 --> 00:52:29,360 Quero berrar co usuario. 1054 00:52:29,360 --> 00:52:31,710 >> E nós non imos gran detalle aquí. 1055 00:52:31,710 --> 00:52:32,960 Vou voltar falso. 1056 00:52:32,960 --> 00:52:34,380 Que é un erro. 1057 00:52:34,380 --> 00:52:38,746 Senón, eu vou volver certo. 1058 00:52:38,746 --> 00:52:40,120 Así, ou que funcionou ou non. 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 non cometer erros, déixeme gardar esta e recargue esta. 1061 00:52:47,820 --> 00:52:50,940 E déixeme comprobar só o dobre Non, en realidade, facer posibles erros de dixitación, 1062 00:52:50,940 --> 00:52:52,690 entón eu non me avergoñar. 1063 00:52:52,690 --> 00:52:54,240 Imos ver se funciona. 1064 00:52:54,240 --> 00:52:56,930 >> Entón agora eu vou escribir gatos. 1065 00:52:56,930 --> 00:52:59,421 Aínda funciona, ou funciona media, polo menos. 1066 00:52:59,421 --> 00:53:02,170 Agora déixeme cargalo, e agora imos me tente enviar sen escribir 1067 00:53:02,170 --> 00:53:05,860 anything-- drogas, el rompe. 1068 00:53:05,860 --> 00:53:06,430 Un intre. 1069 00:53:06,430 --> 00:53:09,380 1070 00:53:09,380 --> 00:53:12,660 Déixeme abrir a consola, [Inaudível] rexistro, recargue a páxina. 1071 00:53:12,660 --> 00:53:13,576 Déixeme probar outra vez. 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 Esquecín. 1075 00:53:18,000 --> 00:53:18,630 Eu fixen un erro de dixitación. 1076 00:53:18,630 --> 00:53:20,760 Lembro o que é. 1077 00:53:20,760 --> 00:53:21,350 .value. 1078 00:53:21,350 --> 00:53:27,060 Eu quería dicir o valor do elemento cuxo ID é q 1079 00:53:27,060 --> 00:53:29,800 é igual a iso, entón berrar co usuario. 1080 00:53:29,800 --> 00:53:31,870 >> Entón, agora déixeme préndoo respiración de novo. 1081 00:53:31,870 --> 00:53:33,480 Alá imos. 1082 00:53:33,480 --> 00:53:34,130 Alí imos nós. 1083 00:53:34,130 --> 00:53:35,010 Por favor, escriba unha consulta. 1084 00:53:35,010 --> 00:53:36,840 Polo tanto, non é me deixar pasar. 1085 00:53:36,840 --> 00:53:40,210 I poden tipo de brincallón con iso, e no canto de verificación de ningún valor, 1086 00:53:40,210 --> 00:53:46,720 Eu podo dicir algo así como: Chega de buscar gatos, 1087 00:53:46,720 --> 00:53:51,150 e agora podemos só divertidamente deixar a procura do usuario para os cans se el ou ela 1088 00:53:51,150 --> 00:53:57,490 quere, ou se eu entrar aquí e buscar gatos, agora eu non podo. 1089 00:53:57,490 --> 00:53:58,690 >> Entón cal é o takeaway aquí? 1090 00:53:58,690 --> 00:54:03,010 Entón, un, nós introducimos en noso mundo de HTML e CSS, 1091 00:54:03,010 --> 00:54:04,320 función de programación. 1092 00:54:04,320 --> 00:54:06,300 Podo realmente agora tomar decisións en código. 1093 00:54:06,300 --> 00:54:10,570 Anteriormente, todo o que eu podía facer é marcar contido textual ou contido gráfico 1094 00:54:10,570 --> 00:54:13,080 e dicirlle o que buscar como e onde amosar. 1095 00:54:13,080 --> 00:54:16,650 Agora podo realmente pedir preguntas na páxina web 1096 00:54:16,650 --> 00:54:20,010 e tomar decisións baseadas sobre el, e solicitar ao usuario 1097 00:54:20,010 --> 00:54:22,780 se eu ter berrar con el ou ela. 1098 00:54:22,780 --> 00:54:28,740 >> Entón, imos tentar algo no noso propio con este. 1099 00:54:28,740 --> 00:54:33,350 Dalle, déixeme abrir o seguinte diapositiva aquí, e só salientar algo. 1100 00:54:33,350 --> 00:54:37,250 Así como con CSS, podemos fatorar o noso código JavaScript nun ficheiro separado, 1101 00:54:37,250 --> 00:54:40,660 podes facer o mesmo con JavaScript como con CSS. 1102 00:54:40,660 --> 00:54:44,520 E usa o uso dunha fonte atributo da etiqueta script. 1103 00:54:44,520 --> 00:54:46,540 Pero non imos complicar as cousas para o momento. 1104 00:54:46,540 --> 00:54:50,440 Pola contra, se puidese ir non desta páxina, 1105 00:54:50,440 --> 00:55:02,690 mas-- déixeme ir esta en torno a order-- ir, se puidese, esta páxina aquí. 1106 00:55:02,690 --> 00:55:03,592 Este URL aquí. 1107 00:55:03,592 --> 00:55:04,550 É en láminas de hoxe. 1108 00:55:04,550 --> 00:55:07,133 Pode ter que recargar porque Eu engade un par de cousas. 1109 00:55:07,133 --> 00:55:09,970 1110 00:55:09,970 --> 00:55:13,890 >> Pero vaia alí onde algúns puzzles esperan. 1111 00:55:13,890 --> 00:55:16,670 E iso vai dar unha oportunidade, nun contexto un pouco máis divertido, 1112 00:55:16,670 --> 00:55:20,610 a se involucrar con algún JavaScript. 1113 00:55:20,610 --> 00:55:25,505 E cando chegar alí, 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 Establecer azul. 1118 00:56:03,562 --> 00:56:11,030 1119 00:56:11,030 --> 00:56:13,930 Define verde, define vermello. 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 Sentímolo. 1123 00:56:22,330 --> 00:56:27,630 >> Esta é a medida da nosa documentación para este desafío. 1124 00:56:27,630 --> 00:56:29,920 E iso vai funcionar do seguinte xeito. 1125 00:56:29,920 --> 00:56:33,340 Entón, o que ten no presente A páxina é un monte 1126 00:56:33,340 --> 00:56:38,024 de crebacabezas imaxe por un amigo na Universidade de Stanford. 1127 00:56:38,024 --> 00:56:41,190 Entón, o que está a ver aquí é case tipo de un deses enigmas ollo máxico, 1128 00:56:41,190 --> 00:56:43,815 pero se só ollar para el, nada vai pop en ti. 1129 00:56:43,815 --> 00:56:46,000 Pola contra, algo está escondidas nesta imaxe. 1130 00:56:46,000 --> 00:56:47,790 E está oculto do seguinte xeito. 1131 00:56:47,790 --> 00:56:51,740 Imaxes, como vostede sabe, pode ser composta de tres cores. 1132 00:56:51,740 --> 00:56:53,346 Algúns vermello, un pouco de azul, e un pouco de verde. 1133 00:56:53,346 --> 00:56:55,220 E podemos facer toda a cores no arco da vella 1134 00:56:55,220 --> 00:56:57,570 mesturando estes tres cores de algunha maneira. 1135 00:56:57,570 --> 00:57:01,940 >> Polo tanto, este parece na maior parte verde e azul, pero como Nick di aquí, 1136 00:57:01,940 --> 00:57:04,060 esta imaxe Enigma de ferro é un puzzle. 1137 00:57:04,060 --> 00:57:06,780 Contén unha imaxe de algo famoso, con todo, 1138 00:57:06,780 --> 00:57:08,310 a imaxe foi distorsionada. 1139 00:57:08,310 --> 00:57:11,500 O obxecto famoso é nos valores de vermello. 1140 00:57:11,500 --> 00:57:13,810 valores Con todo, o vermello foi dividido por 10. 1141 00:57:13,810 --> 00:57:16,230 Así, son moi pequenas por un factor de 10. 1142 00:57:16,230 --> 00:57:18,280 Polo tanto, noutras palabras, Nick tomou unha imaxe orixinal, 1143 00:57:18,280 --> 00:57:21,500 e dessaturado todos do vermello a partir del, 1144 00:57:21,500 --> 00:57:23,850 diminuíndo a cantidade de vermello pintura, se, nel. 1145 00:57:23,850 --> 00:57:26,060 >> Os valores de azul e verde están só sen sentido, 1146 00:57:26,060 --> 00:57:30,000 valores aleatorios, tamén coñecido como ruído deseñados para obscurecer a imaxe real. 1147 00:57:30,000 --> 00:57:32,250 Entón, o que Nick fixo foi el atenuada ao vermello e, a continuación, 1148 00:57:32,250 --> 00:57:34,380 el só xogou aleatorio cantidades de azul e verde 1149 00:57:34,380 --> 00:57:37,590 na imaxe para tipo de escura o que é, en realidade, aínda está alí. 1150 00:57:37,590 --> 00:57:41,089 Debe desfacer estas distorsións para revelar a imaxe. 1151 00:57:41,089 --> 00:57:44,255 En primeiro lugar, establecer os valores azuis e verdes a cero para tiralos do camiño, 1152 00:57:44,255 --> 00:57:48,700 e mirar para o resultado. logo multiplicar cada valor vermello por 10, 1153 00:57:48,700 --> 00:57:51,720 escalando atrás ata aproximadamente o valor final. 1154 00:57:51,720 --> 00:57:53,035 Que é o famoso obxecto? 1155 00:57:53,035 --> 00:57:57,920 >> Entón, todo o que tes este rectángulo no seu navegador agora. 1156 00:57:57,920 --> 00:58:00,830 E entender que hai algunha código de inicio, por así dicir. 1157 00:58:00,830 --> 00:58:04,370 Este é o código JavaScript que Nick escribiu para ti. 1158 00:58:04,370 --> 00:58:07,250 E teña en conta que non hai unha liña no medio que 1159 00:58:07,250 --> 00:58:10,380 comeza cunha barra de ferramentas, que é o que é xeralmente chamado de un comentario. 1160 00:58:10,380 --> 00:58:14,660 Significa que é unha frase para o programador que non ten ningún significado funcional. 1161 00:58:14,660 --> 00:58:16,520 É só unha suxestión visual para o ser humano. 1162 00:58:16,520 --> 00:58:18,670 >> Así, pode ir adiante e eliminar só esta liña, 1163 00:58:18,670 --> 00:58:22,214 e ser super coidado de non eliminar ou cambiar calquera outra cousa. 1164 00:58:22,214 --> 00:58:25,130 E deixe-me leva-lo a través o que este código fai e eu vou deixar lo 1165 00:58:25,130 --> 00:58:28,580 a vostede para descubrir a imaxe secreta. 1166 00:58:28,580 --> 00:58:32,226 Esta primeira liña aquí que eu acabo resaltado dálle o seguinte. 1167 00:58:32,226 --> 00:58:34,100 Do lado da man esquerda, ten o que se chama 1168 00:58:34,100 --> 00:58:39,140 unha variable que Nick ten arbitrariamente, pero razoablemente chamado im para a imaxe. 1169 00:58:39,140 --> 00:58:41,660 No lado dereito de que a igualdade de sinal, 1170 00:58:41,660 --> 00:58:45,240 está dicindo me dar un novo Cita, pecha comiñas "imaxe simple". 1171 00:58:45,240 --> 00:58:49,680 >> Imaxe simple, neste contexto é o que se chama unha clase, así, 1172 00:58:49,680 --> 00:58:53,910 é como unha especie de class-- tecnicamente un prototype-- pero realmente, 1173 00:58:53,910 --> 00:58:58,000 iso está me dando un novo obxecto, os contidos dos cales son o arquivo, 1174 00:58:58,000 --> 00:58:59,610 ferro-puzzle.png. 1175 00:58:59,610 --> 00:59:03,190 Noutras palabras, Nick creou esa noción dunha imaxe simple 1176 00:59:03,190 --> 00:59:05,920 para que poidamos, por pedagóxica propósitos, xogar coa imaxe 1177 00:59:05,920 --> 00:59:09,790 e cambiar o seu vermello, valores verde e azul. 1178 00:59:09,790 --> 00:59:11,750 >> E como imos facelo? 1179 00:59:11,750 --> 00:59:15,360 Esta sintaxe algo enigmática aquí é como o bloque de repetición 1180 00:59:15,360 --> 00:59:19,140 que algúns de vostedes viu en perigo anteriormente hoxe, onde podes repetir 10 veces. 1181 00:59:19,140 --> 00:59:22,220 Neste caso, Nick non codificado un número como 10. 1182 00:59:22,220 --> 00:59:28,020 Ao contrario, está dicindo, arrincar unha variable chamada x 0, 1183 00:59:28,020 --> 00:59:33,180 comprobar se x é menor que o ancho da imaxe. 1184 00:59:33,180 --> 00:59:38,160 >> E para ser máis adecuada, é a imaxe variable, punto significa ir a dentro del 1185 00:59:38,160 --> 00:59:40,900 e obter a súa largura, e logo paréntese aberto, pechado 1186 00:59:40,900 --> 00:59:43,687 paren é só unha forma de un programador de dicir isto é unha función. 1187 00:59:43,687 --> 00:59:44,520 Este é un procedemento. 1188 00:59:44,520 --> 00:59:46,430 Esta é a característica alguén escribiu. 1189 00:59:46,430 --> 00:59:48,570 Usalo e darme de volta unha resposta. 1190 00:59:48,570 --> 00:59:53,610 E, a continuación, x ++ é un xeito elegante de dicindo, despois de ter feito isto xa, 1191 00:59:53,610 --> 00:59:55,850 incrementar x por 1. 1192 00:59:55,850 --> 00:59:58,760 Noutras palabras, esta é a forma de un programador 1193 00:59:58,760 --> 01:00:05,760 de inducir un loop que é indo para repetir 1194 01:00:05,760 --> 01:00:10,410 todas as columnas nunha imaxe. 1195 01:00:10,410 --> 01:00:14,790 >> Unha imaxe é só unha reixa de puntos, liñas e columnas de puntos. 1196 01:00:14,790 --> 01:00:18,270 Esta é unha forma de iteración sobre todas as columnas. 1197 01:00:18,270 --> 01:00:20,770 E no interior, Mentres tanto, estamos interactuar 1198 01:00:20,770 --> 01:00:24,030 sobre as alturas, aquí e aquí e aquí. 1199 01:00:24,030 --> 01:00:29,442 Polo tanto, esta é só unha forma de Traipsing, case como unha máquina de escribir vella escola, 1200 01:00:29,442 --> 01:00:32,230 só para pasar por riba da imaxe enteira de forma iterativa. 1201 01:00:32,230 --> 01:00:36,370 Aínda que non é ben completo claro, pode levar na fe, polo momento, 1202 01:00:36,370 --> 01:00:38,880 que estas tres liñas de código son xuntos 1203 01:00:38,880 --> 01:00:43,090 vai permitir que a mirada de forma iterativa en cada pixel, cada punto na imaxe. 1204 01:00:43,090 --> 01:00:43,790 >> ¿Que é un pixel? 1205 01:00:43,790 --> 01:00:46,250 Ben, para ser claro, se miramos no orixinal e aumentar o zoom, 1206 01:00:46,250 --> 01:00:49,060 se realmente poñer os seus ollos a pantalla do ordenador, que é 1207 01:00:49,060 --> 01:00:53,510 só unha morea de puntos, varios mil puntos embalados xuntos alí. 1208 01:00:53,510 --> 01:00:56,180 E entón o que está a piques de facer? 1209 01:00:56,180 --> 01:00:59,240 Cada un destes puntos, unha definición final, 1210 01:00:59,240 --> 01:01:06,350 é o resultado do que adoita chamado RGB, vermello, verde, azul, que 1211 01:01:06,350 --> 01:01:09,940 unha vez máis, poden ser combinados para darlle calquera número de cores. 1212 01:01:09,940 --> 01:01:13,200 >> En realidade, se se lembra de moitos, moitos anos, 1213 01:01:13,200 --> 01:01:17,320 pantallas de proxección como estas cousas adoitaba ter nin unha lente, pero tres. 1214 01:01:17,320 --> 01:01:20,700 Un deles cuspiu luz vermella, un dos Los cuspir luz verde, un deles 1215 01:01:20,700 --> 01:01:21,600 cuspir luz azul. 1216 01:01:21,600 --> 01:01:24,391 E se está nunha escola media como eu era, onde nunca foron 1217 01:01:24,391 --> 01:01:27,000 aliñado correctamente, era sempre ver películas de historia 1218 01:01:27,000 --> 01:01:29,770 que foron lixeiramente distorsionada, porque as tres cores non eran 1219 01:01:29,770 --> 01:01:30,970 combinando adecuadamente. 1220 01:01:30,970 --> 01:01:36,330 >> Pero parece que cada un dos estes valores de vermello, verde e azul, 1221 01:01:36,330 --> 01:01:37,980 pode ter un número que lles están asociados. 1222 01:01:37,980 --> 01:01:42,500 Por exemplo, 0 para o vermello significa que non hai vermello, 0 para o verde significa que non hai verde, 1223 01:01:42,500 --> 01:01:45,120 e 0 para azul significa que non azul. 1224 01:01:45,120 --> 01:01:49,403 Entón, se non ten ningún vermello, non verde, e ningún azul, a cor que ten? 1225 01:01:49,403 --> 01:01:51,009 >> Audiencia: [inaudível] 1226 01:01:51,009 --> 01:01:52,800 DAVID Malan: Vostede faría espero que si, é branco. 1227 01:01:52,800 --> 01:01:55,333 Desafortunadamente, este operates-- pena? 1228 01:01:55,333 --> 01:01:56,380 >> Audiencia: [inaudível] 1229 01:01:56,380 --> 01:01:58,630 DAVID Malan: Entón o que realmente ten negro, neste caso. 1230 01:01:58,630 --> 01:02:01,530 Entón se ten ningún destes cores conectado, ten branco. 1231 01:02:01,530 --> 01:02:06,510 Con todo, se ten, digamos que un monte deles, como unha morea de vermello, 255 do mesmo, 1232 01:02:06,510 --> 01:02:10,340 unha morea de verde, e unha morea de azul, que é negro. 1233 01:02:10,340 --> 01:02:12,230 Entón, eses son os dous extremos. 1234 01:02:12,230 --> 01:02:17,460 Entón, por esa lóxica, se eu teño unha morea de vermello e ningún verde e non azul, 1235 01:02:17,460 --> 01:02:18,485 que cor é esa? 1236 01:02:18,485 --> 01:02:19,360 Audiencia: [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, a continuación, ningún vermello, moi verde, non azul, e, a continuación, 1239 01:02:25,940 --> 01:02:29,590 se have-- ben, imos rematar que, só porque, pero iso, por suposto, 1240 01:02:29,590 --> 01:02:31,350 agora, é azul. 1241 01:02:31,350 --> 01:02:33,030 E agora pode combinar estas cores. 1242 01:02:33,030 --> 01:02:36,430 Agora, como un aparte, se algún de vós ten Xa fixo algún proxecto real web, 1243 01:02:36,430 --> 01:02:38,360 pode realmente vexa símbolos como este. 1244 01:02:38,360 --> 01:02:42,030 FFF-- e, en realidade, é probablemente nin iso. 1245 01:02:42,030 --> 01:02:44,380 É FFFFFF. 1246 01:02:44,380 --> 01:02:48,970 >> Alguén xa viu F de e E do e A through-- de xeito que parece, 1247 01:02:48,970 --> 01:02:52,970 falamos onte sobre decimal, e hoxe, unha especie de preto decimal. 1248 01:02:52,970 --> 01:02:54,570 Hoxe falamos binario. 1249 01:02:54,570 --> 01:02:59,010 Acontece que, hexadecimal é moi sistema de base común para usar en computación. 1250 01:02:59,010 --> 01:03:04,960 Binario é dous, decimal é 10, hexadecimal é 16. 1251 01:03:04,960 --> 01:03:08,640 E verifícase se, como facer contar en hexadecimal? 1252 01:03:08,640 --> 01:03:11,620 Cero, un, dous, tres, catro, cinco, seis, sete, oito, 1253 01:03:11,620 --> 01:03:14,730 nove, o que usa despois das nove? 1254 01:03:14,730 --> 01:03:16,600 Cal é o próximo número? 1255 01:03:16,600 --> 01:03:19,180 Xa utilizado cero. 1256 01:03:19,180 --> 01:03:20,570 Necesito 16 destes. 1257 01:03:20,570 --> 01:03:25,770 Cero, un, dous, tres, catro, cinco, seis, sete, oito, nove, 1258 01:03:25,770 --> 01:03:27,520 precisas algunha convención arbitraria. 1259 01:03:27,520 --> 01:03:30,810 >> E o que a humanidade decidiu tempo atrás, que despois das nove vén letra 1260 01:03:30,810 --> 01:03:34,450 A e B e logo, logo C. Así, o forma que contar en hexadecimal 1261 01:03:34,450 --> 01:03:37,040 é cero, un, dous, tres, catro, 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 camiño, ao parecer, a 15. 1263 01:03:42,880 --> 01:03:47,850 Así cero a 15 é igual a cero a través F. Agora, por que é importante? 1264 01:03:47,850 --> 01:03:51,570 Ben, cando ten dous f, é así que expresar 255. 1265 01:03:51,570 --> 01:03:54,350 >> Entón, longa historia curta, en o mundo do Photoshop, 1266 01:03:54,350 --> 01:03:57,299 que o software de deseño gráfico, no mundo do desenvolvemento web, 1267 01:03:57,299 --> 01:03:59,590 onde ten moitas cores, por suposto, para xogar, 1268 01:03:59,590 --> 01:04:02,350 moitas veces os desenvolvedores expresar os en hexadecimal, 1269 01:04:02,350 --> 01:04:05,260 só porque tende para ser un pouco máis simple. 1270 01:04:05,260 --> 01:04:07,850 Aínda que a primeira vista é moito máis complexa. 1271 01:04:07,850 --> 01:04:11,590 >> Así, en calquera caso, esta é importante porque Nick at Stanford 1272 01:04:11,590 --> 01:04:15,100 deunos seis anacos de funcionalidade que, os programadores novatos, 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 este web A páxina é de seis funcións, 1275 01:04:19,960 --> 01:04:21,820 seis procedementos que Nick escribiu. 1276 01:04:21,820 --> 01:04:26,800 Tres deles vai che dar un número, un vermello, verde, ou un valor de azul. 1277 01:04:26,800 --> 01:04:28,787 Tres deles pode definir ese valor. 1278 01:04:28,787 --> 01:04:30,620 E estes subliñados son só espazos reservados, 1279 01:04:30,620 --> 01:04:32,600 de xeito que ten que saber cales son elas. 1280 01:04:32,600 --> 01:04:36,240 >> Así, con estas tres funcións, A primeira destas cousas 1281 01:04:36,240 --> 01:04:39,190 será unha coordenada x, ea segunda destas cousas 1282 01:04:39,190 --> 01:04:40,700 será unha coordenada y. 1283 01:04:40,700 --> 01:04:44,650 Noutras palabras, o que destacou, que píxeles que quere obter o verde do, 1284 01:04:44,650 --> 01:04:46,480 obter o azul, obter o vermello do. 1285 01:04:46,480 --> 01:04:51,440 E entón aquí, este será x, este será un valor y, 1286 01:04:51,440 --> 01:04:55,379 e iso vai ser un número. 1287 01:04:55,379 --> 01:04:57,170 Entón imos facer o primeiro liña deste conxunto 1288 01:04:57,170 --> 01:05:00,220 e entón eu vou deixar vostede para tratar de deducir o resto. 1289 01:05:00,220 --> 01:05:03,100 Así, de acordo coas instrucións Nesta páxina, cómpre 1290 01:05:03,100 --> 01:05:08,960 para aumentar a vermello por un factor de 10, e necesitamos eliminar o verde 1291 01:05:08,960 --> 01:05:09,930 e retire o azul. 1292 01:05:09,930 --> 01:05:12,410 Imos comezar cos últimos escenarios. 1293 01:05:12,410 --> 01:05:17,760 Entón, se eu queira, e eu vou para recuar usando algúns espazos, 1294 01:05:17,760 --> 01:05:22,291 se eu queira configurar o vermello, o verde, ou o valor de azul, 1295 01:05:22,291 --> 01:05:23,540 Vou facer o seguinte. 1296 01:05:23,540 --> 01:05:31,280 >> Imaxe, im.setBlue, e logo en base a miñas instrucións aquí, 1297 01:05:31,280 --> 01:05:36,700 Cales son as tres cousas que eu debería tipo dentro parénteses agora? 1298 01:05:36,700 --> 01:05:41,960 Necesito o valor x, o valor y, e que número 1299 01:05:41,960 --> 01:05:48,770 debo poñer aquí se eu queira desfacerse do azul, con base nesa historia aquí? 1300 01:05:48,770 --> 01:05:49,630 Só cero. 1301 01:05:49,630 --> 01:05:52,420 Se eu non quero azul, eu son só indo para cambia-lo para cero. 1302 01:05:52,420 --> 01:05:54,465 >> Agora imos recapitular o que iso está facendo. 1303 01:05:54,465 --> 01:05:56,970 1304 01:05:56,970 --> 01:06:01,170 Teño aquí sobre estes arriba segunda e terceira liñas, 1305 01:06:01,170 --> 01:06:04,080 I alegou dous loops, loops aniñados, se 1306 01:06:04,080 --> 01:06:08,360 Vai, que vai ter o efecto de progresar a partir de esquerda a dereita, 1307 01:06:08,360 --> 01:06:11,590 arriba abaixo sobre toda a X os valores e todos os valores de y. 1308 01:06:11,590 --> 01:06:15,167 Porque unha vez máis, unha imaxe só unha reixa de liñas e columnas. 1309 01:06:15,167 --> 01:06:17,000 Polo tanto, esta se ve librar de todo o azul. 1310 01:06:17,000 --> 01:06:18,627 Permita-me deixar na seguinte liña para ti. 1311 01:06:18,627 --> 01:06:20,043 ¿Como me librar de todo o verde? 1312 01:06:20,043 --> 01:06:23,747 1313 01:06:23,747 --> 01:06:25,140 >> Audiencia: [inaudível] 1314 01:06:25,140 --> 01:06:26,151 >> DAVID Malan: Nice. 1315 01:06:26,151 --> 01:06:28,260 >> Audiencia: [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 reducir, e só tomar coidado de que non teña feito os erros de dixitación. 1318 01:06:36,120 --> 01:06:39,390 E se está cómodo co que fixo, 1319 01:06:39,390 --> 01:06:42,936 dalle prema o botón Executar / Gardar e ver o que recibe. 1320 01:06:42,936 --> 01:06:46,982 1321 01:06:46,982 --> 01:06:48,690 E unha vez máis, fixemos tres cambios. 1322 01:06:48,690 --> 01:06:52,130 Nós excluído que o primeiro comentar e substituíu o 1323 01:06:52,130 --> 01:06:53,575 con estas dúas liñas de código. 1324 01:06:53,575 --> 01:06:55,742 1325 01:06:55,742 --> 01:06:58,450 E todo ben se precisa acertar botón run / Save algunhas veces 1326 01:06:58,450 --> 01:07:01,190 para corrixir algo. 1327 01:07:01,190 --> 01:07:03,610 >> E déixeme tamén facer zoom na miña código para que poida transcribir. 1328 01:07:03,610 --> 01:07:04,110 Bo. 1329 01:07:04,110 --> 01:07:08,720 Entón eu vexo Andrew ten o que parece ser un erro. 1330 01:07:08,720 --> 01:07:11,110 El só ten un gran negro rectángulo na súa pantalla. 1331 01:07:11,110 --> 01:07:13,120 alguén ten un rectángulo negro grande? 1332 01:07:13,120 --> 01:07:13,390 >> Audiencia: Si. 1333 01:07:13,390 --> 01:07:14,360 >> DAVID Malan: rectángulo negro grande? 1334 01:07:14,360 --> 01:07:16,068 OK, entón imos pensar sobre o que iso significa. 1335 01:07:16,068 --> 01:07:20,560 Dixemos que cero, cero, cero, para que o verde, non vermello, non azul, 1336 01:07:20,560 --> 01:07:21,980 vai darlle negro. 1337 01:07:21,980 --> 01:07:24,467 E verifícase que a maioría dos nosos portátiles 1338 01:07:24,467 --> 01:07:25,800 simplemente non teñen fidelidade suficiente. 1339 01:07:25,800 --> 01:07:27,750 Non pode dicir non é realmente algo alí. 1340 01:07:27,750 --> 01:07:30,340 E se tipo de posible inclinarse pantalla para adiante e cara atrás, 1341 01:07:30,340 --> 01:07:32,850 quizais ve un peixe alí? 1342 01:07:32,850 --> 01:07:34,820 Quizais, tipo, especie de? 1343 01:07:34,820 --> 01:07:36,640 Non é perfectamente negro. 1344 01:07:36,640 --> 01:07:38,050 >> Audiencia: [inaudível] 1345 01:07:38,050 --> 01:07:39,510 >> DAVID Malan: Spoiler! 1346 01:07:39,510 --> 01:07:42,610 Hai algún vermello alí, pero Lembre-se a partir das especificacións 1347 01:07:42,610 --> 01:07:44,940 do problema, Nick debilitada abaixo. 1348 01:07:44,940 --> 01:07:47,860 El desaturated-lo un pouco, pero non todo o camiño a cero. 1349 01:07:47,860 --> 01:07:51,670 Polo tanto, se queremos ampliar a cantidade de vermello, déixeme propoñer este truco. 1350 01:07:51,670 --> 01:07:53,750 Deixe-me facer zoom na pantalla. 1351 01:07:53,750 --> 01:07:58,678 E deixe-me ir adiante e dicir cantidade igual im.getRed (x, y). 1352 01:07:58,678 --> 01:08:02,440 1353 01:08:02,440 --> 01:08:05,790 >> Esta liña de código está me dando algo chamado unha variable. 1354 01:08:05,790 --> 01:08:09,643 Teño arbitrariamente, pero, sen dúbida, razoablemente chamou a miña variable que, 1355 01:08:09,643 --> 01:08:10,143 aparentemente? 1356 01:08:10,143 --> 01:08:13,530 1357 01:08:13,530 --> 01:08:14,340 Importe. 1358 01:08:14,340 --> 01:08:14,980 cantidade xusta. 1359 01:08:14,980 --> 01:08:16,960 Podería chamar el calquera cousa que quero, pero eu son 1360 01:08:16,960 --> 01:08:19,490 utilizando esta outra función que eu describe anteriormente 1361 01:08:19,490 --> 01:08:25,359 para obter a cantidade de vermello en x comas y. 1362 01:08:25,359 --> 01:08:27,520 Por que eu faría iso? 1363 01:08:27,520 --> 01:08:30,004 O que quere facer aquí? 1364 01:08:30,004 --> 01:08:32,910 1365 01:08:32,910 --> 01:08:33,619 Debe add-- 1366 01:08:33,619 --> 01:08:34,493 Audiencia: [inaudível] 1367 01:08:34,493 --> 01:08:36,279 DAVID Malan: Si, quizais multiplicalo por 10. 1368 01:08:36,279 --> 01:08:38,862 E se non sabe iso, eu son indo a ir adiante e facelo. 1369 01:08:38,862 --> 01:08:42,060 Eu estou indo a ir adiante e por exemplo, quero a cantidade de vermello 1370 01:08:42,060 --> 01:08:46,550 Eu quero ser o que quere está en vermello, veces 10, 1371 01:08:46,550 --> 01:08:50,330 ea estrela, o asterisco no teclado as-- non usan x. 1372 01:08:50,330 --> 01:08:51,569 Use a estrela. 1373 01:08:51,569 --> 01:08:55,350 É así que se multiplican as cousas na maioría das linguaxes de programación. 1374 01:08:55,350 --> 01:08:59,790 >> Así, segundo a intuición de Kareem, almacenado nesta variable chamada importe, 1375 01:08:59,790 --> 01:09:03,649 é como vermella Quero a xy localización. 1376 01:09:03,649 --> 01:09:11,500 Como agora, fago o que Pixel ter ese número? 1377 01:09:11,500 --> 01:09:12,859 Xa fixo iso antes. 1378 01:09:12,859 --> 01:09:17,666 Define o verde eo azul para ningún valor, a cero. 1379 01:09:17,666 --> 01:09:18,540 Audiencia: [inaudível] 1380 01:09:18,540 --> 01:09:20,040 DAVID Malan: Si, ben non quere que a 10. 1381 01:09:20,040 --> 01:09:21,460 Xa fixo as contas aquí. 1382 01:09:21,460 --> 01:09:24,779 Entón, estamos a recibir o valor de vermello, que é un número baixo, presuntamente. 1383 01:09:24,779 --> 01:09:26,180 Estamos multiplicándose por 10. 1384 01:09:26,180 --> 01:09:29,139 O que quere facer o importe variable agora? 1385 01:09:29,139 --> 01:09:30,130 >> Audiencia: [inaudível] 1386 01:09:30,130 --> 01:09:30,880 >> DAVID Malan: Nice. 1387 01:09:30,880 --> 01:09:34,616 Entón im.set-- que? 1388 01:09:34,616 --> 01:09:35,640 >> Audiencia: setRed. 1389 01:09:35,640 --> 01:09:39,760 >> DAVID Malan: setRed, a localización XY. 1390 01:09:39,760 --> 01:09:40,260 Si. 1391 01:09:40,260 --> 01:09:41,200 E só cantidade. 1392 01:09:41,200 --> 01:09:44,257 Noutras palabras, unha variable é un espazo reservado temporal 1393 01:09:44,257 --> 01:09:45,840 que pode pór o que quere na. 1394 01:09:45,840 --> 01:09:48,680 Nós ocorrer a estar poñendo un número que, no momento. 1395 01:09:48,680 --> 01:09:51,569 Temos multiplicado por 10 para facelo máis grande. 1396 01:09:51,569 --> 01:09:56,480 E agora estou substituíndo esta variable como o terceiro argumento, ou entrada 1397 01:09:56,480 --> 01:09:57,810 para definir vermello. 1398 01:09:57,810 --> 01:10:00,440 E así que, despois de rematar isto, e tomar nota 1399 01:10:00,440 --> 01:10:02,330 dos puntos e comas e os parénteses. 1400 01:10:02,330 --> 01:10:06,290 >> Dalle clic executar / gardar de novo, e 1401 01:10:06,290 --> 01:10:10,690 que ver, Magic, o que era, en realidade, alí. [? Arwa ,?] Que é? 1402 01:10:10,690 --> 01:10:16,412 A torre Eiffel en pleno dereito vermello, non moi escuro. 1403 01:10:16,412 --> 01:10:17,870 debe ser máis evidente agora, si? 1404 01:10:17,870 --> 01:10:18,840 OK. 1405 01:10:18,840 --> 01:10:20,215 E Andrew, o cadro non máis negro? 1406 01:10:20,215 --> 01:10:21,090 Audiencia: [inaudível] 1407 01:10:21,090 --> 01:10:22,180 DAVID Malan: Todo ben. 1408 01:10:22,180 --> 01:10:23,610 Entón, eu vou manter isto en pantalla. 1409 01:10:23,610 --> 01:10:27,010 Se quere xogar con este máis tarde, eu vou volver a crear este para ti. 1410 01:10:27,010 --> 01:10:29,140 Pero este código aquí fixo exactamente iso. 1411 01:10:29,140 --> 01:10:31,460 Por que non facemos outra. 1412 01:10:31,460 --> 01:10:33,880 Déixeme rolar para abaixo un pouco. 1413 01:10:33,880 --> 01:10:36,760 >> Polo tanto, neste caso, o proxector non realmente facer xustiza. 1414 01:10:36,760 --> 01:10:40,486 Pero nas súas pantallas, probablemente ten unha caixa moi vermello e moi negro. 1415 01:10:40,486 --> 01:10:42,610 Isto, ademais, é un puzzle que mostra algo famoso. 1416 01:10:42,610 --> 01:10:44,193 Con todo, a imaxe foi distorsionada. 1417 01:10:44,193 --> 01:10:47,740 A imaxe verdadeira, esta vez, é os valores en azul e verde. 1418 01:10:47,740 --> 01:10:51,820 Con todo, todos eles foron divididos o 20 de xeito que os valores son moi pequenas. 1419 01:10:51,820 --> 01:10:54,660 Os valores de vermello son só números aleatorios, o ruído. 1420 01:10:54,660 --> 01:10:57,190 Desfacer esas distorsións para revelar a verdadeira imaxe. 1421 01:10:57,190 --> 01:10:59,200 >> Entón Nick dille entón o que facer. 1422 01:10:59,200 --> 01:11:04,290 Define os valores de vermello a cero, e non romper o que é. 1423 01:11:04,290 --> 01:11:07,110 Logo multiplicar o azul e os valores verdes por 20. 1424 01:11:07,110 --> 01:11:09,820 Entón, é case o mesmo programa como antes, 1425 01:11:09,820 --> 01:11:11,380 pero está invertendo o proceso. 1426 01:11:11,380 --> 01:11:13,780 E porei o meu código de antes na pantalla no caso 1427 01:11:13,780 --> 01:11:16,650 quere referir a el ou xogar máis con iso. 1428 01:11:16,650 --> 01:11:18,100 Deixe-me facer zoom sobre iso. 1429 01:11:18,100 --> 01:11:21,450 Pero a imaxe cobre resolver puzzle, o número dous. 1430 01:11:21,450 --> 01:11:37,623 1431 01:11:37,623 --> 01:11:40,580 >> Audiencia: [inaudível] 1432 01:11:40,580 --> 01:11:44,010 >> DAVID Malan: OK, entón iso que eu son Non vai dar como moitas suxestións. 1433 01:11:44,010 --> 01:11:47,220 Entón eu would-- oh, imos ver, ten un erro de dixitación aquí. 1434 01:11:47,220 --> 01:11:49,621 Entón lembre, este aquí realmente precisa ir alí. 1435 01:11:49,621 --> 01:11:52,870 Entón, o que me gustaría propoñer, se quere concentrarse en un regalo, non é a resposta. 1436 01:11:52,870 --> 01:11:57,060 Se quere transcribir tanto, que debe obter o primeiro traballo. 1437 01:11:57,060 --> 01:11:59,910 E entón pode usar isto como inspiración para a segunda. 1438 01:11:59,910 --> 01:12:02,230 Niza. 1439 01:12:02,230 --> 01:12:02,730 Bo. 1440 01:12:02,730 --> 01:12:05,430 1441 01:12:05,430 --> 01:12:08,180 >> E para os curiosos, este é un exemplo simple 1442 01:12:08,180 --> 01:12:11,080 dunha ciencia ou unha arte chamada esteganografia, 1443 01:12:11,080 --> 01:12:14,100 a arte de ocultar información en imaxes. 1444 01:12:14,100 --> 01:12:16,890 Normalmente, as imaxes poden ser marca de auga moi descaradamente 1445 01:12:16,890 --> 01:12:19,500 cun logotipo no fondo canto, pero claramente, 1446 01:12:19,500 --> 01:12:22,070 pode ser moito máis sofisticado sobre iso e, de feito, 1447 01:12:22,070 --> 01:12:25,050 ocultar outras imaxes nas imaxes dalgún xeito con esta técnica. 1448 01:12:25,050 --> 01:12:59,890 1449 01:12:59,890 --> 01:13:05,770 >> Tome máis 30 segundos, e despois imos polo menos, anunciar o que ten que ver. 1450 01:13:05,770 --> 01:13:08,330 E eu vou deixar o terceiro un como un exercicio na casa, 1451 01:13:08,330 --> 01:13:11,353 Se desexa máis dun desafiar este fin de semana. 1452 01:13:11,353 --> 01:13:18,240 1453 01:13:18,240 --> 01:13:20,390 E eu creo que Andrew pode chegar primeiro. 1454 01:13:20,390 --> 01:13:22,645 Que é a segunda imaxe, Andrew? 1455 01:13:22,645 --> 01:13:23,920 >> Audiencia: Estatua da Liberdade. 1456 01:13:23,920 --> 01:13:28,500 >> DAVID Malan: Estatua de liberdade será a resposta desta vez. 1457 01:13:28,500 --> 01:13:31,140 Entón, de novo, só algunhas simple exemplos, cuxo obxectivo 1458 01:13:31,140 --> 01:13:35,040 é darlle un sentido de como temos traducido cero pictórica 1459 01:13:35,040 --> 01:13:40,410 bloques para máis irritante e moito máis código complicado, pero todo ideas 1460 01:13:40,410 --> 01:13:42,980 aínda son exactamente os mesmos, aínda coa introdución 1461 01:13:42,980 --> 01:13:48,380 agora da noción dunha variable, sendo capaz de almacenar temporalmente algo. 1462 01:13:48,380 --> 01:13:51,750 >> Imos facer un hands-on, só para agora conectar os puntos 1463 01:13:51,750 --> 01:13:53,880 para que un simple do mundo real. 1464 01:13:53,880 --> 01:13:56,610 Cando estea listo, se puidese vaia a este URL en pantalla. 1465 01:13:56,610 --> 01:14:00,610 Isto tamén é na súa copia do diapositivas, developers.google.com/maps~~V. 1466 01:14:00,610 --> 01:14:03,660 Imos realmente facer algo certo, por así dicir, na web 1467 01:14:03,660 --> 01:14:07,600 usando a API de Google Maps, ou interface de programación de aplicación, 1468 01:14:07,600 --> 01:14:08,940 do seguinte xeito. 1469 01:14:08,940 --> 01:14:12,341 >> Google, como moitas empresas, ofrece unha serie de características libre 1470 01:14:12,341 --> 01:14:14,840 que pode usar para construír o seu propias aplicacións interesantes. 1471 01:14:14,840 --> 01:14:18,890 En realidade, se xa usou Über para incorporarse un taxi ou un coche, 1472 01:14:18,890 --> 01:14:21,640 probablemente sabe que ten Über Nun mapa e mostra coches nel. 1473 01:14:21,640 --> 01:14:24,870 Isto é, o mellor que eu poida dicir, o Google Maps API. 1474 01:14:24,870 --> 01:14:28,884 Están realmente usar mapas de Google, pero Über non é unha empresa de cartografía, 1475 01:14:28,884 --> 01:14:31,050 nin tería que ser unha problema particularmente interesante 1476 01:14:31,050 --> 01:14:33,510 para resolver na parte superior do seu problema servizo de coche. 1477 01:14:33,510 --> 01:14:35,510 E así están de pé, de novo, sobre os ombreiros 1478 01:14:35,510 --> 01:14:37,520 dos outros, Google neste caso. 1479 01:14:37,520 --> 01:14:42,850 Entón eles usan mapas de Google, pero a súa propia servizos de vehículos e outros tales características. 1480 01:14:42,850 --> 01:14:47,770 >> Entón, nós estamos indo a aproveitar deste para facer o seguinte. 1481 01:14:47,770 --> 01:14:50,230 E se eu teño ido moi rápido, só chamar-me máis nun momento. 1482 01:14:50,230 --> 01:14:53,500 Feliz para recapitular algunhas das cousas de imaxe. 1483 01:14:53,500 --> 01:14:56,290 Ten que ver a si mesmo nunha páxina como esta. 1484 01:14:56,290 --> 01:14:58,230 Tan bo, de Google, e están entre os mellores 1485 01:14:58,230 --> 01:15:01,364 de proporcionar non só APIs, pero APIs gratuítos que 1486 01:15:01,364 --> 01:15:02,780 pode xogar con ou utilizar comercialmente. 1487 01:15:02,780 --> 01:15:06,450 Eles comezar a cobrar-lle o seu uso é alto, pero fun fronte con antelación 1488 01:15:06,450 --> 01:15:10,490 e asinado connosco para unha conta gratuíta que, esperamos, 10 ordenadores 1489 01:15:10,490 --> 01:15:12,480 non descualificar connosco para de súpeto. 1490 01:15:12,480 --> 01:15:14,320 Polo tanto, esperamos que este demostración funcionará. 1491 01:15:14,320 --> 01:15:18,840 >> E conta que eles teñen APIs para Android, IOS, servizos web e web, 1492 01:15:18,840 --> 01:15:19,620 Sexa o que sexa. 1493 01:15:19,620 --> 01:15:20,700 Imos concentrar en web. 1494 01:15:20,700 --> 01:15:26,560 Prema na caixa-de-rosa, web, e que vai levar vostede, espero, a unha páxina 1495 01:15:26,560 --> 01:15:27,630 aquí. 1496 01:15:27,630 --> 01:15:29,335 E eles teñen unha morea de APIs. 1497 01:15:29,335 --> 01:15:31,210 E pode ser un pouco esmagadora en primeiro lugar, 1498 01:15:31,210 --> 01:15:33,000 pero eu vou dirixir-nos a través do que queremos. 1499 01:15:33,000 --> 01:15:38,500 >> Na esquina superior esquerda é Google Maps JavaScript API, API JavaScript. 1500 01:15:38,500 --> 01:15:40,380 Entón vai adiante e faga clic aquel. 1501 01:15:40,380 --> 01:15:49,360 E que leva-lo agora para a páxina seguinte, demos e código de exemplo. 1502 01:15:49,360 --> 01:15:51,190 Déixeme zoom out aquí. 1503 01:15:51,190 --> 01:15:56,300 E déixeme levarnos a-- rolar para abaixo onde di pasos de configuración rápida. 1504 01:15:56,300 --> 01:15:57,970 A súa pantalla debe ser semellante a miña. 1505 01:15:57,970 --> 01:16:01,130 >> E hai dúas etapas, obter unha chave e comezar a desenvolver. 1506 01:16:01,130 --> 01:16:04,190 Eu xa fixen o primeiro paso para nós, recibindo unha chave chamada. 1507 01:16:04,190 --> 01:16:05,320 E esta é unha idea común. 1508 01:16:05,320 --> 01:16:09,210 Unha chave de API é xeralmente só un número aleatorio grande ou cadea 1509 01:16:09,210 --> 01:16:11,130 que se quere para pegar no seu código, 1510 01:16:11,130 --> 01:16:15,280 para que Google sabe quen é vostede cando está a usar o seu servizo, a súa API. 1511 01:16:15,280 --> 01:16:17,370 O que non quere dicir que somos sendo cobra nada. 1512 01:16:17,370 --> 01:16:21,030 E agora, prema, en vez de un, prema comezar a desenvolver. 1513 01:16:21,030 --> 01:16:25,990 Se podería só acenar-me sobre se non está certo de onde estamos. 1514 01:16:25,990 --> 01:16:28,040 >> Entón imos rabuñar a superficie, aquí, pero o que 1515 01:16:28,040 --> 01:16:31,000 Eu penso que sería convincente é realmente ter todos, 1516 01:16:31,000 --> 01:16:34,240 usando Cloud9 nunha fiestra e Neste tutorial noutra fiestra, 1517 01:16:34,240 --> 01:16:37,120 imos realmente comezar a nosa propia aplicación instalado e funcionando 1518 01:16:37,120 --> 01:16:40,920 que incorpora un Google Custom Guión da nosa propia páxina web, 1519 01:16:40,920 --> 01:16:43,010 e logo engade unha ou dúas características. 1520 01:16:43,010 --> 01:16:45,520 Pero imos só rabuñar a superficie do que podemos facer. 1521 01:16:45,520 --> 01:16:47,020 >> Polo tanto, só unha comprobación de sanidade rápida. 1522 01:16:47,020 --> 01:16:49,740 Están todos a ver esta páxina, Google Maps JavaScript API? 1523 01:16:49,740 --> 01:16:50,872 Debe dicir comezando. 1524 01:16:50,872 --> 01:16:53,330 Non estamos indo a percorrer a cousa toda por calquera medio. 1525 01:16:53,330 --> 01:16:58,090 OK, noutra pestana, se non o fai telo aberto, non entran en Cloud9 1526 01:16:58,090 --> 01:17:03,500 e obter-se só unha nova guía, en última instancia. 1527 01:17:03,500 --> 01:17:11,070 Entón, de novo, c9.io de onte, c9.io, e só crear un novo ficheiro. 1528 01:17:11,070 --> 01:17:13,500 E dalle chamada quere que desexa. 1529 01:17:13,500 --> 01:17:16,495 Eu chamei o meu map.html. 1530 01:17:16,495 --> 01:17:17,870 Chamalo algo que termina .html. 1531 01:17:17,870 --> 01:17:23,930 1532 01:17:23,930 --> 01:17:26,580 E ten que ser máis ou menos onde estou neste proceso 1533 01:17:26,580 --> 01:17:31,470 con só un prompt chiscando nun baleiro pestana chamada algo map.html. 1534 01:17:31,470 --> 01:17:35,808 1535 01:17:35,808 --> 01:17:38,148 Ou arquivo, novo ficheiro neste momento. 1536 01:17:38,148 --> 01:17:41,960 1537 01:17:41,960 --> 01:17:48,000 >> E agora, co paso do Google Maps JavaScript API, 1538 01:17:48,000 --> 01:17:50,010 imos saltar lectura por todo iso texto. 1539 01:17:50,010 --> 01:17:53,760 Pero teña en conta que Ola mundo é en realidade, en todas partes, ve-lo agora. 1540 01:17:53,760 --> 01:17:58,020 Ola, mundo ten esa gran colorido exemplo dun grupo enteiro de HTML. 1541 01:17:58,020 --> 01:18:03,590 Dalle copiar e pegar só iso HTML, de xeito que a partir do tipo doc superior 1542 01:18:03,590 --> 01:18:08,810 todo o camiño para a etiqueta HTML fin, ir adiante e copiar todos isso-- de novo, 1543 01:18:08,810 --> 01:18:14,430 que está baixo o mundo da Ola example-- e pegar que no seu guía Cloud9, 1544 01:18:14,430 --> 01:18:17,996 de xeito que agora a súa pantalla debe ollar máis ou menos como a miña. 1545 01:18:17,996 --> 01:18:22,280 1546 01:18:22,280 --> 01:18:24,520 >> E pode garda-lo, pero non cargalo aínda. 1547 01:18:24,520 --> 01:18:26,290 Imos primeiro ollar o código e ver se nós 1548 01:18:26,290 --> 01:18:29,110 non se pode inferir ou aprender do que é Google 1549 01:18:29,110 --> 01:18:30,860 tivo connosco cegamente copiar e pegar. 1550 01:18:30,860 --> 01:18:33,334 Eles só queren axudar, literalmente, un bo comezo, 1551 01:18:33,334 --> 01:18:35,500 pero non hai que moi complexidade realmente alí. 1552 01:18:35,500 --> 01:18:40,100 1553 01:18:40,100 --> 01:18:42,210 Todas as preguntas só aínda? 1554 01:18:42,210 --> 01:18:43,790 Estamos seguros para seguir adiante? 1555 01:18:43,790 --> 01:18:44,330 OK. 1556 01:18:44,330 --> 01:18:46,800 >> Entón, rapidamente, imos facer algunhas rápidas checagens. 1557 01:18:46,800 --> 01:18:48,800 Unha liña que eu ver, e espero que, 1558 01:18:48,800 --> 01:18:51,710 Mira, o que iso significa, DOCTYPE HTML? 1559 01:18:51,710 --> 01:18:52,385 Kareem, lembra? 1560 01:18:52,385 --> 01:18:53,260 Audiencia: [inaudível] 1561 01:18:53,260 --> 01:18:53,968 DAVID Malan: Si. 1562 01:18:53,968 --> 01:18:54,870 Aí vén HTML 5. 1563 01:18:54,870 --> 01:18:57,950 Mentres tanto, a liña dous no pantalla aquí significa navegador hey, 1564 01:18:57,950 --> 01:18:59,482 aquí vén o HTML real. 1565 01:18:59,482 --> 01:19:01,440 Liña tres é hey navegador, aquí vén a cabeza. 1566 01:19:01,440 --> 01:19:04,260 Liña catro é, por suposto, ei navegador, aquí vén o título. 1567 01:19:04,260 --> 01:19:07,780 O que fai liña de cinco facer? 1568 01:19:07,780 --> 01:19:09,930 En realidade, iso non fai realmente facer algo para nós. 1569 01:19:09,930 --> 01:19:13,340 Neste caso, el só redimensiona a páxina a un estándar. Liña seis, 1570 01:19:13,340 --> 01:19:16,140 Non falamos, pero especifica a codificación de caracteres. 1571 01:19:16,140 --> 01:19:19,181 Hai diferentes formas de codificar ficheiros, especialmente para linguas estranxeiras. 1572 01:19:19,181 --> 01:19:21,100 UTF-8 só tende a ser o estándar. 1573 01:19:21,100 --> 01:19:26,580 >> Entón agora imos ver na liña de sete a 16, algúns CSS. 1574 01:19:26,580 --> 01:19:29,260 E aínda que non teña visto todas estas cousas antes, 1575 01:19:29,260 --> 01:19:30,810 podemos tipo de inferir. 1576 01:19:30,810 --> 01:19:37,075 Entón aliñar oito medios, hey navegador, aplique todos os seguintes elementos ós que dúas marcas, 1577 01:19:37,075 --> 01:19:37,575 aparentemente? 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 Así, a coma é o novo alí. 1581 01:19:43,200 --> 01:19:46,140 E iso é só unha forma de especificando varias marcas á vez. 1582 01:19:46,140 --> 01:19:47,640 >> Entón temos as claves. 1583 01:19:47,640 --> 01:19:51,170 Entón, ao parecer, este ó navegador, facer a altura da páxina 100%. 1584 01:19:51,170 --> 01:19:54,170 Así, mesmo se hai moi pouco contido, facer a páxina enteira, 1585 01:19:54,170 --> 01:19:55,530 facer a cousa encher a páxina. 1586 01:19:55,530 --> 01:19:57,524 Fai o mapa en definitiva, cubrir a páxina. 1587 01:19:57,524 --> 01:19:58,690 Marxe, o que significa isto? 1588 01:19:58,690 --> 01:20:01,559 Isto é xeralmente como arbitraria espazo en branco ao redor das beiras 1589 01:20:01,559 --> 01:20:04,350 que algúns deseño de navegador só decidiu debería estar alí, porque 1590 01:20:04,350 --> 01:20:05,540 tipo de fai as cousas parecen máis limpo. 1591 01:20:05,540 --> 01:20:06,498 Pero nós non queremos iso. 1592 01:20:06,498 --> 01:20:08,710 Queremos que o mapa se todo o camiño para os bordos. 1593 01:20:08,710 --> 01:20:10,930 Recheo, similares ao espírito da beira. 1594 01:20:10,930 --> 01:20:14,980 Marxes significa fóra, medios de recheo dentro, pero é o mesmo tipo de empresa. 1595 01:20:14,980 --> 01:20:17,520 É un pouco de un buffer entre vostede e os bordos. 1596 01:20:17,520 --> 01:20:21,170 >> E, a continuación, liña 13 é un bo oportunidade para unha revisión rápida. 1597 01:20:21,170 --> 01:20:26,440 O que fai sinal do mapa afiada É dicir, é un mapa hashtag significa? 1598 01:20:26,440 --> 01:20:29,650 O que isto referirse, en principio? 1599 01:20:29,650 --> 01:20:31,485 >> Audiencia: [inaudível] 1600 01:20:31,485 --> 01:20:32,360 DAVID Malan: Exactamente. 1601 01:20:32,360 --> 01:20:36,900 Esta propiedade, esta propiedade CSS aplícase a unha cousa, a etiqueta HTML 1602 01:20:36,900 --> 01:20:41,180 que ten un ID de cita, pecha comiñas "mapa". 1603 01:20:41,180 --> 01:20:44,460 E agora imos avanzar rapidamente, desprácese a parte inferior do arquivo, que 1604 01:20:44,460 --> 01:20:49,860 non é moi lonxe, e previo en liña 19, se pegalo exactamente como eu fixen, 1605 01:20:49,860 --> 01:20:53,405 A liña 19 ten só un div, que é un división da páxina, que onte 1606 01:20:53,405 --> 01:20:54,820 chamado dunha rexión rectangular. 1607 01:20:54,820 --> 01:20:55,820 Non ten nada nel ten. 1608 01:20:55,820 --> 01:20:57,550 É unha etiqueta aberta, etiqueta preto. 1609 01:20:57,550 --> 01:20:59,490 Pero ten unha identificación única. 1610 01:20:59,490 --> 01:21:02,090 >> Entón, o que parece ser pasando aquí é Google 1611 01:21:02,090 --> 01:21:05,880 está a preparar a nosa páxina web para ten unha altura total de 100%, 1612 01:21:05,880 --> 01:21:09,680 e ningún recheo, sen marxes, porque o que imos a poñer dentro 1613 01:21:09,680 --> 01:21:13,647 desta div, cuxa identificación única é mapa, é un mapa real incorporado. 1614 01:21:13,647 --> 01:21:15,480 E queremos que enche a páxina e non só 1615 01:21:15,480 --> 01:21:17,560 haber algún pequeno rectángulo no medio. 1616 01:21:17,560 --> 01:21:24,220 Así, a liña 14 do mesmo xeito subliña, o mapear en si debe ter unha altura de 100%. 1617 01:21:24,220 --> 01:21:29,220 >> Entón agora conta entre as liñas 20 e 28, que é o código JavaScript. 1618 01:21:29,220 --> 01:21:33,020 E isto é, aínda que sexa sintaticamente un pouco raro, 1619 01:21:33,020 --> 01:21:34,730 Non hai todo o que moita cousa a ocorrer aquí. 1620 01:21:34,730 --> 01:21:39,310 Na liña 21, este está declarando algo chamado unha variable. 1621 01:21:39,310 --> 01:21:42,030 No canto de chamalo ascende, como fixemos antes, 1622 01:21:42,030 --> 01:21:44,500 estamos dicindo máis precisamente var, que significa variable. 1623 01:21:44,500 --> 01:21:46,520 Poderiamos usar que, en código de Nick, pero non o fixo, entón eu 1624 01:21:46,520 --> 01:21:48,190 non se incomodou en facelo tamén. 1625 01:21:48,190 --> 01:21:50,240 É unha variable chamada Guión, e entón hai 1626 01:21:50,240 --> 01:21:53,360 unha función que é aparentemente chamado initMap. 1627 01:21:53,360 --> 01:21:55,780 >> Polo tanto, este é como o noso propio costume parte do enigma en perigo. 1628 01:21:55,780 --> 01:21:58,830 Creamos unha peza de funcionalidade chamada initMap, 1629 01:21:58,830 --> 01:22:00,980 e pode tipo de inferir o que está pasando aquí. 1630 01:22:00,980 --> 01:22:02,930 Do lado da man esquerda, temos unha variable, 1631 01:22:02,930 --> 01:22:06,000 así que nós estamos indo a poñer o seguinte cousa dentro desa variable, 1632 01:22:06,000 --> 01:22:07,362 da dereita á esquerda. 1633 01:22:07,362 --> 01:22:11,940 O lado dereito di, hey navegador, dáme un novo mapa de Google. 1634 01:22:11,940 --> 01:22:16,490 E google.maps.Map é só un xeito funky especificar que esta función 1635 01:22:16,490 --> 01:22:19,790 pertence a Google Maps. 1636 01:22:19,790 --> 01:22:23,010 >> Tras os parénteses, vimos iso antes, hey navegador, obter 1637 01:22:23,010 --> 01:22:29,210 me os elementos da páxina, o tag na páxina cuxa identificación única é-- 1638 01:22:29,210 --> 01:22:30,710 >> Audiencia: [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á a suceder, así, xuntos por esa liña, liña 23, 1641 01:22:35,770 --> 01:22:38,630 é, esencialmente, dicindo: hey navegador, vai buscar-me 1642 01:22:38,630 --> 01:22:42,800 que div baleira na páxina cuxa identificación única é o mapa, 1643 01:22:42,800 --> 01:22:45,600 porque quero inserir en ele-- inxectar nel, 1644 01:22:45,600 --> 01:22:49,520 se will-- unha morea de contido que pasa a ser procedente web, 1645 01:22:49,520 --> 01:22:50,427 subsecuentemente. 1646 01:22:50,427 --> 01:22:52,010 E Google está facendo todo isto para nós. 1647 01:22:52,010 --> 01:22:55,350 >> Entón, de novo, ao final do día, temos este exemplo de abstracción. 1648 01:22:55,350 --> 01:22:58,610 Non teño a menor idea do que un mapa é ou como aplicar un mapa API. 1649 01:22:58,610 --> 01:22:59,460 Non precisa. 1650 01:22:59,460 --> 01:23:02,740 Nós só precisa dicir o mapa onde poñer-se, e deixar 1651 01:23:02,740 --> 01:23:04,880 aqueles implantación subxacente detalles para Google. 1652 01:23:04,880 --> 01:23:08,190 Agora non hai aparentemente dúas pezas de datos 1653 01:23:08,190 --> 01:23:11,940 que neste exemplo é dando a API de Google. 1654 01:23:11,940 --> 01:23:16,450 Ao parecer, o centro do mapa, eo nivel de zoom, por así dicir. 1655 01:23:16,450 --> 01:23:21,390 >> E alguén recoñece-los coordenadas, latitude e lonxitude? 1656 01:23:21,390 --> 01:23:24,364 Probablemente non, pero podemos volver ao tutorial, vexa literalmente. 1657 01:23:24,364 --> 01:23:25,780 Pero imos velo en só un momento. 1658 01:23:25,780 --> 01:23:29,880 nivel de zoom é un valor entre, eu non sei sabe, un de cada 13 ou algo así. 1659 01:23:29,880 --> 01:23:32,880 El só ten que ver co quão lonxe está ampliado ou reducido, e é iso. 1660 01:23:32,880 --> 01:23:35,690 E agora a finais de a páxina, liña de aviso 29-- 1661 01:23:35,690 --> 01:23:39,960 é un pouco feo, porque Lo wraps-- esta liña de código 1662 01:23:39,960 --> 01:23:44,570 é o que fai a descarga para o navegador API real de Google. 1663 01:23:44,570 --> 01:23:47,500 Todo o código que o de Google enxeñeiros teñen escrito que aplicar 1664 01:23:47,500 --> 01:23:50,000 Toda esta función de mapas incorporáveis. 1665 01:23:50,000 --> 01:23:51,470 >> Agora non imos cambiar nada. 1666 01:23:51,470 --> 01:23:54,761 Se está acompañando, vai adiante e basta gardar o ficheiro, se realmente ten 1667 01:23:54,761 --> 01:23:55,760 o que eu teño. 1668 01:23:55,760 --> 01:23:57,370 Ir a URL. 1669 01:23:57,370 --> 01:23:59,820 Pode facer clic no botón Run enriba e que vai dicir 1670 01:23:59,820 --> 01:24:03,050 -lle o URL do servidor web de novo. 1671 01:24:03,050 --> 01:24:06,010 E iso vai levar vostede para unha nova guía. 1672 01:24:06,010 --> 01:24:11,910 Se preme en Abrir para map.html, e as probabilidades son que está 1673 01:24:11,910 --> 01:24:15,520 indo para obter unha alerta, unha mensaxe de erro, non é? 1674 01:24:15,520 --> 01:24:18,570 Mensaxe de erro, mensaxe de erro? 1675 01:24:18,570 --> 01:24:21,170 >> Así, por desgraza, o erro mensaxe non é que esclarecedora 1676 01:24:21,170 --> 01:24:23,890 a menos que realmente abrir o consola, que guía especial que 1677 01:24:23,890 --> 01:24:27,110 abría onte e un pouco máis cedo hoxe. 1678 01:24:27,110 --> 01:24:29,445 Pero eu tropeçar iso antes, entón eu xa 1679 01:24:29,445 --> 01:24:30,820 descubrín cal é a solución. 1680 01:24:30,820 --> 01:24:34,440 En láminas de hoxe, ou en vez diso, en Cloud9, aviso 1681 01:24:34,440 --> 01:24:36,430 que non facer algo deliberadamente. 1682 01:24:36,430 --> 01:24:40,690 Teña en conta que esta etiqueta script liña 29, se ler, 1683 01:24:40,690 --> 01:24:44,440 é como maps.googleapis.com/ algo, algo, algo, 1684 01:24:44,440 --> 01:24:46,430 logo entender que alguén, un dos desenvolvedores, 1685 01:24:46,430 --> 01:24:50,040 escribiu en todas as capitais letras, a súa chave de API. 1686 01:24:50,040 --> 01:24:51,700 >> Necesitamos pegar algo alí dentro. 1687 01:24:51,700 --> 01:24:53,450 E este foi o paso Eu fixen a nós antes, 1688 01:24:53,450 --> 01:24:57,190 e de novo poden lista negra -Nos se, de súpeto, 12 ou máis de nós 1689 01:24:57,190 --> 01:24:59,470 comezar a usar a mesma clave, pero imos ver o que acontece. 1690 01:24:59,470 --> 01:25:03,030 Entón, se ir hoxe diapositivas, unha foto despois, hai 1691 01:25:03,030 --> 01:25:07,070 esta cadea moi badalado aparencia do texto. 1692 01:25:07,070 --> 01:25:12,230 Dalle só copiar e pegalo onde di que a súa chave de API. 1693 01:25:12,230 --> 01:25:15,120 Iso é o que eu inscribiu. 1694 01:25:15,120 --> 01:25:17,700 >> E, en definitiva, non tente escribindo-lo manualmente, 1695 01:25:17,700 --> 01:25:21,210 porque se sente cheo con erros de dixitación, potencialmente. 1696 01:25:21,210 --> 01:25:23,260 Entón, só tes que copiar e pegar isto. 1697 01:25:23,260 --> 01:25:26,090 E que vai facer a liña máis tempo, pero agora, só para quedar claro, 1698 01:25:26,090 --> 01:25:29,540 debe ollar un pouco máis como este, onde chave non é igual 1699 01:25:29,540 --> 01:25:32,200 capitalizar berrando contigo. 1700 01:25:32,200 --> 01:25:34,810 Salva a súa páxina, volver a outro guía, actualizar, 1701 01:25:34,810 --> 01:25:36,770 e esperamos ver un mapa de onde? 1702 01:25:36,770 --> 01:25:37,790 >> Audiencia: Australia. 1703 01:25:37,790 --> 01:25:38,748 >> DAVID Malan: Australia. 1704 01:25:38,748 --> 01:25:41,200 Así, ao parecer, son os do Coordenadas GPS de Australia. 1705 01:25:41,200 --> 01:25:44,491 E déixeme andar por aí por un momento e axudar a alguén que non está moi alá, 1706 01:25:44,491 --> 01:25:47,729 pero déixeme propoñer, a través de Google, atopar as coordenadas GPS da súa propia cidade natal 1707 01:25:47,729 --> 01:25:48,770 ou o seu propio país de orixe. 1708 01:25:48,770 --> 01:25:51,436 E, probabelmente, Google pode transformar este -Se, ou Wikipedia podo dicir. 1709 01:25:51,436 --> 01:25:54,410 Pero escoller dous valores distintos de lonxitude e latitude, 1710 01:25:54,410 --> 01:25:57,530 volver e cola-los, e logo volver cargar a páxina despois de gardar 1711 01:25:57,530 --> 01:26:00,718 e vexa se pode ter un Guión para a súa propia cidade natal. 1712 01:26:00,718 --> 01:26:04,500 1713 01:26:04,500 --> 01:26:08,042 >> E cando se fai con que, o seguimento challenge-- 1714 01:26:08,042 --> 01:26:11,250 e eu vou dar un pouco menos sentido, deliberadamente, de xeito que deliberadamente 1715 01:26:11,250 --> 01:26:13,791 ten que loitar por un par minutos coa documentación, 1716 01:26:13,791 --> 01:26:18,740 cambiar o mapa para non ser esta cartoonish estándar, pero un mapa de satélite. 1717 01:26:18,740 --> 01:26:24,600 Entón, o que realmente ve por satélite imaxes en vez das cores bonitas. 1718 01:26:24,600 --> 01:26:29,710 >> E a información que vou darlle é cambiar o tipo de mapa. 1719 01:26:29,710 --> 01:26:33,084 Voltar para que a obtención comezou a páxina en busca de inspiración. 1720 01:26:33,084 --> 01:26:40,599 1721 01:26:40,599 --> 01:26:42,390 Como pode recoller, se está a buscar, 1722 01:26:42,390 --> 01:26:44,250 hai tantos máis cousas que podes facer. 1723 01:26:44,250 --> 01:26:46,380 Algúns de vós xa teñen cambiou o tipo de mapa. 1724 01:26:46,380 --> 01:26:49,890 Pero pode fazer-- por exemplo, déixeme ir a algo que fixemos 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 Un dos nosos graduandos fixo. 1727 01:26:53,470 --> 01:26:58,890 Centramos a nosa mapa sobre Harvard Yard e sobrepasar todos estes nomes de construción, 1728 01:26:58,890 --> 01:27:01,070 e tivemos que engadir. 1729 01:27:01,070 --> 01:27:04,270 Entón, se eu queira buscar, por exemplo, Matthews Hall, 1730 01:27:04,270 --> 01:27:05,730 temos un pequeno menú desplegable. 1731 01:27:05,730 --> 01:27:09,080 E eu creo que está a usar Bootstrap, o biblioteca discutir anteriormente para iso. 1732 01:27:09,080 --> 01:27:12,190 E se fai clic en Matthews Hall, Lo inmediatamente 1733 01:27:12,190 --> 01:27:14,790 salta o mapa para unha determinada localización, e mostra 1734 01:27:14,790 --> 01:27:16,440 -lle unha imaxe neste pequeno emerxente. 1735 01:27:16,440 --> 01:27:18,670 >> Pero aínda esta pequena emerxentes, non aplicar. 1736 01:27:18,670 --> 01:27:27,521 Se eu rolar para abaixo na nosa quedando comezou a páxina e procure fiestras de información, 1737 01:27:27,521 --> 01:27:29,770 verás que algúns dos funcionalidade vostede mesmo 1738 01:27:29,770 --> 01:27:31,561 pode engadir, aínda que con algo máis complexidade, 1739 01:27:31,561 --> 01:27:33,970 é algo chamado un diálogo de información. 1740 01:27:33,970 --> 01:27:37,190 E se eu facer clic nun exemplo aquí, e iso é o que é divertido, 1741 01:27:37,190 --> 01:27:40,530 podes facer cousas como esta, facer clic nun marcador e, a continuación, voila, 1742 01:27:40,530 --> 01:27:42,400 información aparece. 1743 01:27:42,400 --> 01:27:45,874 >> Non temos moito introducido recursos suficientes JavaScript 1744 01:27:45,874 --> 01:27:49,040 para pintar un retrato de como exactamente podería chamar todas esas cousas xuntas, 1745 01:27:49,040 --> 01:27:50,706 pero medio que rabuñou a superficie. 1746 01:27:50,706 --> 01:27:53,140 En realidade, o que eu fixen cando Prema no que marcador, 1747 01:27:53,140 --> 01:27:55,819 foi desencadear un evento, unha chamada no evento de prema. 1748 01:27:55,819 --> 01:27:57,610 E que se viu un evento hoxe cedo, 1749 01:27:57,610 --> 01:28:00,670 o chamado caso presentar, cando estabamos impedindo 1750 01:28:00,670 --> 01:28:02,490 o usuario de buscar gatos. 1751 01:28:02,490 --> 01:28:06,560 Entón nós medio que escolleu e escolleu Entre todas estas varias características, 1752 01:28:06,560 --> 01:28:08,990 para darlle un sentido, espera-se, do que pode, en realidade, 1753 01:28:08,990 --> 01:28:11,000 facer un pouco máis confort en programación, 1754 01:28:11,000 --> 01:28:12,587 e recursos totalmente gratuíto. 1755 01:28:12,587 --> 01:28:15,856 1756 01:28:15,856 --> 01:28:18,770 >> Algunha pregunta? 1757 01:28:18,770 --> 01:28:19,790 Non? 1758 01:28:19,790 --> 01:28:22,542 Esta é a súa última oportunidade, polo menos hoxe, nunha venres 1759 01:28:22,542 --> 01:28:25,000 para conseguir algo fóra do seu peito de xeito que saír de aquí 1760 01:28:25,000 --> 01:28:27,067 Sentindo-se confia e cómodo. 1761 01:28:27,067 --> 01:28:27,566 Si. 1762 01:28:27,566 --> 01:28:29,740 >> Audiencia: Por que non facer engadir unha cousa? 1763 01:28:29,740 --> 01:28:32,720 >> DAVID Malan: Oh meu Deus. 1764 01:28:32,720 --> 01:28:35,260 Necesito descansar este fin de semana, eu creo. 1765 01:28:35,260 --> 01:28:36,180 Outras preguntas? 1766 01:28:36,180 --> 01:28:37,055 >> Audiencia: [inaudível] 1767 01:28:37,055 --> 01:28:44,130 1768 01:28:44,130 --> 01:28:46,810 >> DAVID Malan: Vostede can-- en Internet Explorer, descanse en paz, 1769 01:28:46,810 --> 01:28:49,310 adoitaba ser capaz de poñer VB guión, guión básico virtual, 1770 01:28:49,310 --> 01:28:50,643 pero que en realidade nunca colleu. 1771 01:28:50,643 --> 01:28:52,490 Polo tanto, a resposta curta é só JavaScript. 1772 01:28:52,490 --> 01:28:55,144 1773 01:28:55,144 --> 01:28:55,810 Outras preguntas? 1774 01:28:55,810 --> 01:28:58,427 1775 01:28:58,427 --> 01:28:59,760 Todo ben, ben, deixe-me facelo. 1776 01:28:59,760 --> 01:29:02,070 Déixeme coller nosos compañeiros fóra. 1777 01:29:02,070 --> 01:29:04,500 Teñen algún tipo de avaliación formas que queren todo 1778 01:29:04,500 --> 01:29:06,310 gastar uns minutos enche. 1779 01:29:06,310 --> 01:29:08,775 Queren cobrar a forma e calquera renuncias que pode ter fóra. 1780 01:29:08,775 --> 01:29:10,240 Eles tamén teñen certificados. 1781 01:29:10,240 --> 01:29:12,380 Estou supoñendo que hai aínda algúns lanches fóra. 1782 01:29:12,380 --> 01:29:14,360 Déixame pasar estes para fóra, e se ten dúbidas, non obstante, 1783 01:29:14,360 --> 01:29:17,120 Vou andar por aí máis individualmente e podemos axudar a comezar. 1784 01:29:17,120 --> 01:29:17,879 Si, por suposto. 1785 01:29:17,879 --> 01:29:18,754 Audiencia: [inaudível] 1786 01:29:18,754 --> 01:29:26,737 1787 01:29:26,737 --> 01:29:28,570 DAVID Malan: Isto é normalmente feito nos días de hoxe. 1788 01:29:28,570 --> 01:29:30,730 Certamente con web software, está inclinando 1789 01:29:30,730 --> 01:29:32,901 sobre os outros ou está esteticamente usando cousas 1790 01:29:32,901 --> 01:29:35,400 como Bootstrap, para que non Ten que aplicar o nivel baixo 1791 01:29:35,400 --> 01:29:37,169 detalles de menús e botóns e todo máis. 1792 01:29:37,169 --> 01:29:39,210 Está inclinando-se a alguén como Google para que 1793 01:29:39,210 --> 01:29:42,050 Non ten que construír un Über empresas e unha empresa de cartografía, 1794 01:29:42,050 --> 01:29:44,850 e calquera número de semellante aplicacións. 1795 01:29:44,850 --> 01:29:46,350 >> De feito, logins son populares tamén. 1796 01:29:46,350 --> 01:29:48,500 Se xa usou Spotify ou calquera número de sitios, 1797 01:29:48,500 --> 01:29:51,210 vai facer login para algúns sitios usando Facebook. 1798 01:29:51,210 --> 01:29:53,350 Entón, o que é bo, non son APIs para logins 1799 01:29:53,350 --> 01:29:56,570 hoxe en día, de xeito que non ten para ter a súa propia táboa de usuarios 1800 01:29:56,570 --> 01:29:59,440 e todo o seu propio banco de datos necesariamente no mesmo grao. 1801 01:29:59,440 --> 01:30:01,795 Pode deixar Facebook facer todo de que a complexidade para ti. 1802 01:30:01,795 --> 01:30:03,920 Entón é un momento emocionante, Honesta, na programación, 1803 01:30:03,920 --> 01:30:07,200 porque hai tantos terceiros servizos que pode construír enriba. 1804 01:30:07,200 --> 01:30:10,890 >> E, de novo, o prezo que paga é sexa financeira ou de tempo de inactividade. 1805 01:30:10,890 --> 01:30:13,750 Se o Google vai para abaixo, o mesmo ocorre co Über, sen dúbida, 1806 01:30:13,750 --> 01:30:15,690 pero quizais iso é unha razoable trade-off. 1807 01:30:15,690 --> 01:30:18,040 E, de novo, que foi un dos temas, esperanza, para o último par de días, 1808 01:30:18,040 --> 01:30:18,780 Son estes trade-offs. 1809 01:30:18,780 --> 01:30:20,738 E de cando en cando hai indo ser unha resposta correcta. 1810 01:30:20,738 --> 01:30:25,700 É realmente o mellor de dúas ou máis respostas. 1811 01:30:25,700 --> 01:30:26,682 >> Pase estes arredor. 1812 01:30:26,682 --> 01:30:36,830 1813 01:30:36,830 --> 01:30:41,110 >> E esas contas Cloud9 continuará para traballar en teoría, en perpetuidade. 1814 01:30:41,110 --> 01:30:45,000 Que se pode atopar se esperar algúns días ou unha semana ou máis para volver entrar deles, 1815 01:30:45,000 --> 01:30:49,170 isto pode levar como un ou cinco minutos para abrir back-up, 1816 01:30:49,170 --> 01:30:54,090 pero iso é só porque eles puxeron Lo para durmir para aforrar recursos. 1817 01:30:54,090 --> 01:31:10,527