1 00:00:00,000 --> 00:00:00,060 2 00:00:00,060 --> 00:00:01,560 >> DAVID MALAN: Muy bien, estamos de vuelta. 3 00:00:01,560 --> 00:00:03,830 Así que por el apasionante Para concluir, la última sección 4 00:00:03,830 --> 00:00:06,900 en la programación web, que me Pensamos que lo usamos como un término general 5 00:00:06,900 --> 00:00:08,440 para capturar algunos de los temas restantes. 6 00:00:08,440 --> 00:00:10,390 Así que al final de la día, vamos a hacer realidad 7 00:00:10,390 --> 00:00:14,830 un poco de práctica en la programación web con un lenguaje llamado JavaScript. 8 00:00:14,830 --> 00:00:17,510 Y creo que vamos a echar un vistazo en algo relacionado con imágenes 9 00:00:17,510 --> 00:00:20,040 y el descubrimiento de algo secreto oculto en una imagen, 10 00:00:20,040 --> 00:00:23,230 y también echar un vistazo a la Google Maps API, programación de aplicaciones 11 00:00:23,230 --> 00:00:26,040 interfaz, como algo representativo del tipo de software 12 00:00:26,040 --> 00:00:28,800 eso es cada vez más y libremente disponibles en la actualidad. 13 00:00:28,800 --> 00:00:32,029 >> Pero, ¿por qué no echar un vistazo en un ingrediente a este mundo 14 00:00:32,029 --> 00:00:34,070 que hemos tipo de estado dando por sentado que existe 15 00:00:34,070 --> 00:00:36,720 durante algún tiempo, una base de datos. 16 00:00:36,720 --> 00:00:39,150 Durante el último día y medio hemos asumido 17 00:00:39,150 --> 00:00:42,910 que tenemos acceso a una base de datos, pero ¿Qué problema se resuelve de una base de datos? 18 00:00:42,910 --> 00:00:45,540 ¿Qué hace por nosotros? 19 00:00:45,540 --> 00:00:47,030 ¿Qué es? 20 00:00:47,030 --> 00:00:48,679 >> AUDIENCIA: [inaudible] 21 00:00:48,679 --> 00:00:51,720 DAVID MALAN: puede contener toda la información, OK, y qué tipo de información 22 00:00:51,720 --> 00:00:53,186 podrías poner en él? 23 00:00:53,186 --> 00:00:54,590 >> AUDIENCIA: [inaudible] 24 00:00:54,590 --> 00:00:56,450 >> DAVID MALAN: Cualquier información se pone en ella, que pondremos en contacto. 25 00:00:56,450 --> 00:00:57,070 Eso es verdad. 26 00:00:57,070 --> 00:01:01,900 Y en un sitio basado en la web o en la web típica aplicación, qué tipo de información, 27 00:01:01,900 --> 00:01:03,385 En concreto, puede ser que le pondrá en? 28 00:01:03,385 --> 00:01:04,260 AUDIENCIA: [inaudible] 29 00:01:04,260 --> 00:01:05,051 DAVID MALAN: Usuarios. 30 00:01:05,051 --> 00:01:07,000 Entonces, ¿qué es un usuario? 31 00:01:07,000 --> 00:01:09,765 >> AUDIENCIA: [inaudible] 32 00:01:09,765 --> 00:01:11,640 DAVID MALAN: OK, registrado usuario del sitio. 33 00:01:11,640 --> 00:01:15,100 Y lo que quiere decir la información del almacén de los usuarios? 34 00:01:15,100 --> 00:01:17,260 Lo compone un usuario? 35 00:01:17,260 --> 00:01:18,331 Un usuario tiene qué? 36 00:01:18,331 --> 00:01:19,206 AUDIENCIA: [inaudible] 37 00:01:19,206 --> 00:01:21,040 DAVID MALAN: Sí, personales datos, y eso me gusta. 38 00:01:21,040 --> 00:01:21,970 Vamos a ser más preciso. 39 00:01:21,970 --> 00:01:25,275 Así, un usuario típicamente tiene un nombre, ¿qué otra cosa que un usuario podría tener? 40 00:01:25,275 --> 00:01:26,150 AUDIENCIA: [inaudible] 41 00:01:26,150 --> 00:01:29,130 DAVID MALAN: Un Aceptar addr--, por lo que el nombre, apellido. 42 00:01:29,130 --> 00:01:29,630 Eso es bueno. 43 00:01:29,630 --> 00:01:31,463 En realidad, vamos a arreglar que, debido a que va 44 00:01:31,463 --> 00:01:35,010 para abrir una oportunidad para discusión, aún así, aún más. 45 00:01:35,010 --> 00:01:39,090 En primer nombre, apellido, sexo. 46 00:01:39,090 --> 00:01:41,820 47 00:01:41,820 --> 00:01:43,481 Un ID de algún tipo. 48 00:01:43,481 --> 00:01:43,980 ¿Qué más? 49 00:01:43,980 --> 00:01:45,438 Oí otra cosa antes, también. 50 00:01:45,438 --> 00:01:51,600 Un correo electrónico, dirección postal. 51 00:01:51,600 --> 00:01:58,170 >> Así que vamos a hacer una pausa allí y ahora consideran no lo que estamos almacenando en la base de datos, 52 00:01:58,170 --> 00:02:01,980 Pero-- y por qué no, ya que es tal vez obvio que una vez que se registra un usuario, 53 00:02:01,980 --> 00:02:03,730 quieres recordar que desde hace algún tiempo. 54 00:02:03,730 --> 00:02:05,480 Usted no quiere que se simplemente ser almacenados en la memoria RAM 55 00:02:05,480 --> 00:02:08,690 y ser así forgotten-- vamos a centrarnos en el cómo. 56 00:02:08,690 --> 00:02:11,700 >> Resulta que en el mundo de las bases de datos, 57 00:02:11,700 --> 00:02:14,410 hay al menos dos tipos de estos días. 58 00:02:14,410 --> 00:02:20,010 Algo que se llama una base de datos SQL, Lenguaje de consulta estructurado, 59 00:02:20,010 --> 00:02:24,770 o, cutely llamado, NoSQL, que no es SQL. 60 00:02:24,770 --> 00:02:26,980 Y el último es una ejemplo de lo que podría 61 00:02:26,980 --> 00:02:30,660 ser llamado un objeto-orientado, o un almacén de objetos, una base de datos 62 00:02:30,660 --> 00:02:36,010 que almacena objetos, y no, excusa yo, como pronto veremos, filas. 63 00:02:36,010 --> 00:02:41,800 >> Por lo tanto nos centraremos en un momento en el primero de éstos, a saber, una SQL 64 00:02:41,800 --> 00:02:46,850 base de datos, aunque sólo sea porque es ya tan familiar, a cualquiera 65 00:02:46,850 --> 00:02:51,070 que ha utilizado o Excel Hojas de Google o Apple 66 00:02:51,070 --> 00:02:53,740 Números o cualquier norma hoja de cálculo, 67 00:02:53,740 --> 00:02:56,040 o, de manera equivalente, o más sofisticado, 68 00:02:56,040 --> 00:02:58,610 algo así como Microsoft El acceso u Oracle 69 00:02:58,610 --> 00:03:03,890 o MySQL o PostgreSQL, todos los cuales son los nombres de productos para las implementaciones 70 00:03:03,890 --> 00:03:04,865 de la siguiente idea. 71 00:03:04,865 --> 00:03:10,350 >> Una base de datos relacional es simplemente algo que tiene filas y columnas. 72 00:03:10,350 --> 00:03:12,850 Y por filas y columnas, Me refiero a algo, literalmente, 73 00:03:12,850 --> 00:03:21,860 de esta manera, así que donde podríamos tener la nombre de un campo y su tipo por aquí. 74 00:03:21,860 --> 00:03:25,800 Y, de hecho, me dejó Ahora empezar a mapear estos. 75 00:03:25,800 --> 00:03:29,420 Así que en realidad, no sé Por eso hice un gráfico separado. 76 00:03:29,420 --> 00:03:30,780 Vamos a mantener este sencillo. 77 00:03:30,780 --> 00:03:34,830 >> Tenemos aquí la inicios de nuestra mesa, donde 78 00:03:34,830 --> 00:03:40,150 este es el nombre del campo y este es el tipo de datos, 79 00:03:40,150 --> 00:03:41,660 y por tipo me refiero a lo siguiente. 80 00:03:41,660 --> 00:03:45,510 Es un número, que es una cadena, una cadena corta como una palabra, 81 00:03:45,510 --> 00:03:49,340 se trata de un párrafo, que es datos binarios, como una imagen? 82 00:03:49,340 --> 00:03:51,980 Y vamos a burlan de esta separados sólo por un momento. 83 00:03:51,980 --> 00:03:57,575 Así que, primero nombre, número, cadena, gran parte de texto-- 84 00:03:57,575 --> 00:03:58,450 AUDIENCIA: [inaudible] 85 00:03:58,450 --> 00:03:59,616 DAVID MALAN: Sí, así cadena. 86 00:03:59,616 --> 00:04:04,744 Y en un contexto de base de datos, vamos a suelen llamar a este campo carbón. 87 00:04:04,744 --> 00:04:07,660 Sólo voy a decir Char por ahora, pero estamos va a perfeccionar esto en un momento. 88 00:04:07,660 --> 00:04:09,180 campo de caracteres. 89 00:04:09,180 --> 00:04:11,365 Apellido probablemente la misma. 90 00:04:11,365 --> 00:04:11,865 ¿Género? 91 00:04:11,865 --> 00:04:16,230 92 00:04:16,230 --> 00:04:18,310 >> Hombre o mujer, por lo que podría ser un campo Char. 93 00:04:18,310 --> 00:04:21,380 Podría ser cualquiera cita, fin de la cita "Macho" o una cita, fin de la cita "hembra" 94 00:04:21,380 --> 00:04:23,650 o podría ser m o f. 95 00:04:23,650 --> 00:04:26,540 Si quieres ser más inclusiva, es posible que necesite un tercer valor 96 00:04:26,540 --> 00:04:28,640 o algún otro tipo de campo completo. 97 00:04:28,640 --> 00:04:31,350 Y lo que podría utilizar verdadero falso. 98 00:04:31,350 --> 00:04:35,036 El campo podría ser llamado macho, y entonces se podría decir verdadero o falso. 99 00:04:35,036 --> 00:04:38,160 Pero eso no significa necesariamente captura toda la información que desee. 100 00:04:38,160 --> 00:04:41,118 >> Así que resulta que hay otro tipo de de campo que podría ser útil aquí 101 00:04:41,118 --> 00:04:46,040 en una base de datos típica, llamada enum, donde es un campo de caracteres, 102 00:04:46,040 --> 00:04:50,480 pero, el diseñador, para obtener enumerar los posibles valores, 103 00:04:50,480 --> 00:04:54,630 como dijeron ellos "macho", cita, Fin de la cita "hembra" y así sucesivamente. 104 00:04:54,630 --> 00:04:57,620 Así que cualquiera que sea el valor está en su base de datos, 105 00:04:57,620 --> 00:05:00,670 es de hecho basada en caracteres, pero tiene que ser uno de esos valores. 106 00:05:00,670 --> 00:05:03,520 Es probable que no quieren una enumeración para el nombre o el apellido. 107 00:05:03,520 --> 00:05:05,630 De lo contrario tendríamos enumerar, como su nombre 108 00:05:05,630 --> 00:05:09,570 se deriva de, literalmente, cada posible primer nombre y apellido. 109 00:05:09,570 --> 00:05:13,960 >> OK, así ID cuál debe ser una identificación? 110 00:05:13,960 --> 00:05:15,200 Sí, así que tal vez un número. 111 00:05:15,200 --> 00:05:17,870 Así que vamos a seguir con que, por ahora, el número. 112 00:05:17,870 --> 00:05:22,010 Y por número, el número es un poco demasiado amplia ahora. 113 00:05:22,010 --> 00:05:23,900 Para el final de la segunda día, me siento como si 114 00:05:23,900 --> 00:05:25,280 debería ser un poco más preciso. 115 00:05:25,280 --> 00:05:29,280 Número podría significar similares, podría ser algo así como 1.236. 116 00:05:29,280 --> 00:05:31,500 Y eso no es probable lo que entendemos por una identificación. 117 00:05:31,500 --> 00:05:34,635 ¿Qué es probable que entendemos por una identificación? 118 00:05:34,635 --> 00:05:36,382 >> AUDIENCIA: [inaudible] 119 00:05:36,382 --> 00:05:38,590 DAVID MALAN: Oh, está bien, por lo tal vez ni siquiera es un número. 120 00:05:38,590 --> 00:05:42,840 Tal vez en realidad es un identificador único eso es una cadena, como un nombre de usuario. 121 00:05:42,840 --> 00:05:44,580 Tan absolutamente, que podría ser. 122 00:05:44,580 --> 00:05:46,730 Creo que alguien probablemente significado numérico, sin embargo. 123 00:05:46,730 --> 00:05:48,460 Así que vamos a quedarnos con eso. 124 00:05:48,460 --> 00:05:49,320 ¿Qué tipo de número? 125 00:05:49,320 --> 00:05:51,960 ¿Qué es un número entero más precise-- una. 126 00:05:51,960 --> 00:05:56,710 Así un número como 0, 1, 2, 3, por lo que vamos a llamar a este un número entero. 127 00:05:56,710 --> 00:05:58,909 Y aun así, pude se acaba aburriendo, es 128 00:05:58,909 --> 00:06:00,700 No realmente sólo una entero en general que desee. 129 00:06:00,700 --> 00:06:04,340 Es probable que no desea que los valores negativos, sólo porque, sólo se siente raro. 130 00:06:04,340 --> 00:06:06,070 Es posible que desee enteros positivos. 131 00:06:06,070 --> 00:06:07,920 Así también se puede expresar que, en una base de datos, 132 00:06:07,920 --> 00:06:09,450 pero por ahora, vamos a decir entero. 133 00:06:09,450 --> 00:06:10,650 >> ¿Email? 134 00:06:10,650 --> 00:06:13,550 Esta es probablemente una solo-- qué? 135 00:06:13,550 --> 00:06:14,460 >> AUDIENCIA: [inaudible] 136 00:06:14,460 --> 00:06:16,980 >> DAVID MALAN: Es un correo electrónico, pero eso es caracteres, ¿verdad? 137 00:06:16,980 --> 00:06:19,813 Sólo tiene un carácter moderno como un símbolo "a" o alguna otra cosa, 138 00:06:19,813 --> 00:06:21,580 pero sigue siendo un campo de caracteres. 139 00:06:21,580 --> 00:06:23,900 Y la dirección postal? 140 00:06:23,900 --> 00:06:25,360 campo de caracteres. 141 00:06:25,360 --> 00:06:31,400 Así que eso es un buen comienzo, pero vamos a ser un poco más preciso momento. 142 00:06:31,400 --> 00:06:34,540 >> Así resulta que en una base de datos, a menudo 143 00:06:34,540 --> 00:06:39,120 tienen derecho a elegir la más refinada versiones de estas cosas. 144 00:06:39,120 --> 00:06:44,330 De hecho, en una base de datos típica de SQL, SQL, o más en general, bases de datos relacionales, 145 00:06:44,330 --> 00:06:46,680 bases de datos con filas y columnas, que a menudo 146 00:06:46,680 --> 00:06:53,610 llegar a especificar no sólo el tipo de la field-- permítanme hacer algunas aquí-- habitación 147 00:06:53,610 --> 00:06:56,600 sino también la longitud. 148 00:06:56,600 --> 00:06:59,900 >> ¿Cuánto tiempo es un nombre de pila? 149 00:06:59,900 --> 00:07:07,060 Creo, D-A-V-me-D. OK, lo tengo yo Probablemente sólo ofendido como la mitad 150 00:07:07,060 --> 00:07:11,260 de las personas en la sala, a la derecha, ya que sus nombres son más de cinco 151 00:07:11,260 --> 00:07:16,608 cartas, por lo que cinco parece un poco egoísta e ingenuo, así que cuál es un mejor valor? 152 00:07:16,608 --> 00:07:19,320 153 00:07:19,320 --> 00:07:24,330 10, de acuerdo, y creo estamos bien en la habitación. 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 qué no me tomo la enfoque de antes, cuando nos 157 00:07:29,540 --> 00:07:31,081 estaban hablando acerca de las matrices y de la memoria? 158 00:07:31,081 --> 00:07:32,450 ¿Por qué no me acaba de decir como 1.000? 159 00:07:32,450 --> 00:07:35,260 El nombre de nadie va para ser más largo que 1000. 160 00:07:35,260 --> 00:07:36,706 Hacer retroceder. 161 00:07:36,706 --> 00:07:38,005 >> AUDIENCIA: [inaudible] 162 00:07:38,005 --> 00:07:40,130 DAVID MALAN: Sí, es despilfarro, a la derecha, sobre todo 163 00:07:40,130 --> 00:07:44,630 Sólo cinco o 10 si la mayoría de los nombres son o 15 caracteres, eso es un gran desperdicio. 164 00:07:44,630 --> 00:07:45,810 Así que ya saben qué? 165 00:07:45,810 --> 00:07:48,020 Esta es una pregunta un poco difícil. 166 00:07:48,020 --> 00:07:51,721 Ahora, sin duda podemos analizar Inglés y los nombres de cualquier otro idioma 167 00:07:51,721 --> 00:07:54,470 y averiguar, así, ¿cuál es la average-- promedio en realidad no 168 00:07:54,470 --> 00:07:57,150 ayudar a nosotros-- lo que es el máximo es Probablemente lo que realmente queremos. 169 00:07:57,150 --> 00:07:59,920 Pero resulta que incluso tenemos alguna opción sobre el tipo aquí. 170 00:07:59,920 --> 00:08:03,400 >> En una base de datos típica de SQL, haber algo que se llama un campo Char 171 00:08:03,400 --> 00:08:07,505 y también un varchar, V-A-R, para el campo carbón variable. 172 00:08:07,505 --> 00:08:08,630 Y la diferencia es la siguiente. 173 00:08:08,630 --> 00:08:12,400 Un campo char, que el diseñador, tiene que especificar por adelantado 174 00:08:12,400 --> 00:08:14,900 la longitud exacta del campo. 175 00:08:14,900 --> 00:08:20,530 Así que tal vez el primer nombre al igual que 20 se siente tipo de seguro. 176 00:08:20,530 --> 00:08:23,950 Podría tener que hacer algunas google para ver si eso es suficiente realmente segura. 177 00:08:23,950 --> 00:08:26,910 Probablemente hay un nombre con 21 personajes, pero por ahora, supongamos 20 178 00:08:26,910 --> 00:08:27,620 es seguro. 179 00:08:27,620 --> 00:08:30,070 >> Un campo Char implicaría en una base de datos que 180 00:08:30,070 --> 00:08:33,289 están usando los 20 y los 20 caracteres siempre. 181 00:08:33,289 --> 00:08:37,419 Ahora si es sólo D-A-V-me-D, 15 de los son sólo va a ser caracteres en blanco, 182 00:08:37,419 --> 00:08:40,450 pero usted todavía está utilizando los 20 bytes. 183 00:08:40,450 --> 00:08:46,302 Un campo varchar, por el contrario, los medios de cadena debe ser de hasta 20 caracteres 184 00:08:46,302 --> 00:08:48,260 pero si es sólo cinco, sólo se va a utilizar 185 00:08:48,260 --> 00:08:51,270 cinco, seis o tal vez para una valor especial al final, 186 00:08:51,270 --> 00:08:54,980 al igual que 0 que discutimos significa el final de un carácter 187 00:08:54,980 --> 00:08:56,790 secuencia en la memoria. 188 00:08:56,790 --> 00:08:59,950 >> Así que ¿cuándo cree usted puede optar por Char 189 00:08:59,950 --> 00:09:05,240 frente varchar, dado que el comercio-off? 190 00:09:05,240 --> 00:09:09,321 Char utiliza ese número de caracteres, varchar utiliza no más de ese número de caracteres. 191 00:09:09,321 --> 00:09:10,196 AUDIENCIA: [inaudible] 192 00:09:10,196 --> 00:09:13,859 193 00:09:13,859 --> 00:09:16,900 DAVID MALAN: OK, cuando se conoce el longitud de la cadena bastante convincente 194 00:09:16,900 --> 00:09:19,316 utilizar sólo carbón de leña, porque si usted lo sepa, sólo hay que poner abajo. 195 00:09:19,316 --> 00:09:23,390 Y tal vez eso es cierto para un cierre de cremallera código, en los EE.UU., al menos, 02138, 196 00:09:23,390 --> 00:09:26,660 que siempre va a ser de cinco caracteres hasta que se agrega el tablero cuatro. 197 00:09:26,660 --> 00:09:29,750 Sin embargo, es posible que tenga algunos valores para que siempre conoce la longitud. 198 00:09:29,750 --> 00:09:32,310 O tal vez los símbolos del Estado, al igual que Nueva York a Nueva York, 199 00:09:32,310 --> 00:09:33,811 y MA de Massachusetts en los EE.UU.. 200 00:09:33,811 --> 00:09:36,560 Tal vez usted tiene algunas situaciones cuando eso es totalmente razonable, 201 00:09:36,560 --> 00:09:39,520 sino por esa lógica, ¿por qué incluso overthinking esto? 202 00:09:39,520 --> 00:09:41,800 ¿Por qué no sólo tiene que utilizar varchar y luego sólo tendremos 203 00:09:41,800 --> 00:09:46,730 siempre a dos personajes de todos modos, o utilice siempre cinco caracteres de todos modos? 204 00:09:46,730 --> 00:09:50,300 ¿Por qué no sólo ahorrar para varchar todo, por esa lógica? 205 00:09:50,300 --> 00:09:51,677 Tiene que haber una trampa. 206 00:09:51,677 --> 00:09:52,552 AUDIENCIA: [inaudible] 207 00:09:52,552 --> 00:09:54,952 208 00:09:54,952 --> 00:09:56,660 DAVID MALAN: Could escribir algo mal. 209 00:09:56,660 --> 00:09:58,090 Así que eso es cierto. 210 00:09:58,090 --> 00:10:01,030 Pero incluso entonces, no pueden utilizar más memoria que asigno. 211 00:10:01,030 --> 00:10:03,340 Todavía tengo la final decir sobre la longitud, 212 00:10:03,340 --> 00:10:06,780 lo que no pueden hacer por accidente ese error, pero es un buen pensamiento. 213 00:10:06,780 --> 00:10:10,510 Es más sutil, pero es muy relacionada a nuestra discusión, en realidad, de las matrices 214 00:10:10,510 --> 00:10:12,390 y listas enlazadas anterior. 215 00:10:12,390 --> 00:10:16,290 >> Resulta que una base de datos, si se sabe que todos los valores son 216 00:10:16,290 --> 00:10:19,250 de una longitud fija, incluso si algunos de esos valores están en blanco, 217 00:10:19,250 --> 00:10:22,484 tipo de estética en blanco, D-A-V-I-D y luego 15 espacios en blanco, 218 00:10:22,484 --> 00:10:24,650 resulta que si cada campo es la misma longitud, 219 00:10:24,650 --> 00:10:28,670 al igual que una serie tenían todas sus cosas espalda con espalda con espalda con espalda de manera que 220 00:10:28,670 --> 00:10:33,480 usted podría apenas más 1 para llegar a la siguiente valor, la misma idea en una tabla de base de datos. 221 00:10:33,480 --> 00:10:37,550 Si la totalidad de su carácter cuerdas tienen la misma longitud, 222 00:10:37,550 --> 00:10:39,390 usted tiene lo que se llama acceso aleatorio. 223 00:10:39,390 --> 00:10:41,850 Si todas las cadenas son de longitud 20, no lo hace solo 224 00:10:41,850 --> 00:10:45,230 ver más 1 que acaba de hacer más 20, más 20, más 20, más 20, 225 00:10:45,230 --> 00:10:48,775 y puede desplazarse muy rápidamente a través o buscar a través de todos sus datos. 226 00:10:48,775 --> 00:10:54,420 >> Un campo Char variables, por el contrario, no siempre tiene 20 caracteres. 227 00:10:54,420 --> 00:10:58,000 Podría tener 20 y luego 15 y luego 19 y luego 10, 228 00:10:58,000 --> 00:11:00,720 y por lo que si desea buscar a través de él, no se puede simplemente ciegamente 229 00:11:00,720 --> 00:11:03,050 añadir 20 bytes para llegar a la siguiente. 230 00:11:03,050 --> 00:11:07,280 Usted, literalmente, tiene que buscar a través de debido a que el borde de la estructura de datos, 231 00:11:07,280 --> 00:11:08,340 si se quiere, es desigual. 232 00:11:08,340 --> 00:11:11,480 En cierto modo se entra y se basa fuera de la longitud real de la cadena. 233 00:11:11,480 --> 00:11:14,460 Así que cuando se conoce la longitud, como se Kareem dice, utilice un campo char, 234 00:11:14,460 --> 00:11:16,460 porque ganas esa eficiencia de estar 235 00:11:16,460 --> 00:11:19,170 capaz de buscar a través de ella más rápido cuando usted está buscando para los datos, 236 00:11:19,170 --> 00:11:20,550 de lo contrario usar una variable. 237 00:11:20,550 --> 00:11:24,450 >> Por desgracia, no tengo buena respuesta al tiempo que el nombre debería ser, 238 00:11:24,450 --> 00:11:26,360 pero para algo como un nombre, diría 239 00:11:26,360 --> 00:11:28,470 un varchar es común porque no va 240 00:11:28,470 --> 00:11:30,430 ser una longitud fija para todos. 241 00:11:30,430 --> 00:11:33,650 20, no sé, 20 se siente un poco apretado. 242 00:11:33,650 --> 00:11:36,460 Digamos 50, 50. 243 00:11:36,460 --> 00:11:39,210 En realidad, no le costará que mucho más que decir 50 en lugar de 40, 244 00:11:39,210 --> 00:11:41,260 pero en algún punto, es necesario para hacer una llamada de juicio. 245 00:11:41,260 --> 00:11:43,090 >> Muy común, francamente, para [? histórico ?] 246 00:11:43,090 --> 00:11:47,670 razones, aunque es excesiva, es decir 255, porque hace algún tiempo, 247 00:11:47,670 --> 00:11:51,440 en los sistemas de bases de datos populares, como MySQL, una herramienta de código abierto 248 00:11:51,440 --> 00:11:53,790 que una gran cantidad de empresas incluso como Facebook utiliza, 249 00:11:53,790 --> 00:11:56,654 este fue el máximo predeterminado así que la gente se fue con él. 250 00:11:56,654 --> 00:11:59,070 Por lo tanto, no es descabellado, pero vamos a utilizar un poco más de la intuición 251 00:11:59,070 --> 00:12:02,970 y dicen, seguro de 50, que es probablemente un poco excesivo. 252 00:12:02,970 --> 00:12:05,720 >> Género, me gusta enumeración, por lo que, por tanto, puede 253 00:12:05,720 --> 00:12:08,760 enumerar hombre o mujer, o tal vez de manera más eficiente, 254 00:12:08,760 --> 00:12:13,420 M o F o alguna otra simbología, pero enumeración se siente como una buena elección allí. 255 00:12:13,420 --> 00:12:16,740 Para ser claros, el género podría ser simplemente un varchar 256 00:12:16,740 --> 00:12:19,090 Y podríamos simplemente todo acordar la gente es tan bonito, 257 00:12:19,090 --> 00:12:21,010 poner siempre los mismos valores allí. 258 00:12:21,010 --> 00:12:22,720 Hombre o mujer o lo que sea. 259 00:12:22,720 --> 00:12:27,800 >> Pero el problema, entonces, es que podríamos cometer un error, ya que [inaudible] propuesta 260 00:12:27,800 --> 00:12:29,140 anteriormente en un contexto diferente. 261 00:12:29,140 --> 00:12:32,780 Si hacemos un error, podríamos obtener valores incorrectos en nuestra base de datos. 262 00:12:32,780 --> 00:12:36,320 Así que lo bueno de las bases de datos como Oracle y MySQL y otros, 263 00:12:36,320 --> 00:12:39,280 es que usted tiene esta última capa de defensa, donde 264 00:12:39,280 --> 00:12:43,010 el administrador del DBA, bases de datos, quien es el diseño de esta tabla como si 265 00:12:43,010 --> 00:12:46,440 son verbalmente, podría poner en su lugar una enumeración que 266 00:12:46,440 --> 00:12:51,250 protege contra la que especificando hombres, mujeres, y para que nadie 267 00:12:51,250 --> 00:12:54,230 lo demás ningún programador puede accidentalmente insertar cualquier otro valor. 268 00:12:54,230 --> 00:12:55,480 Por lo que esta sería una buena cosa. 269 00:12:55,480 --> 00:12:56,660 Esta es una característica. 270 00:12:56,660 --> 00:13:00,760 >> Por lo tanto una identificación, suponiendo un ID numérico, probablemente debería ser un número entero positivo. 271 00:13:00,760 --> 00:13:04,380 Y a veces tienen oportunidad de discutir longitud. 272 00:13:04,380 --> 00:13:06,830 Usted no lo haría normalmente especifique un número aquí, 273 00:13:06,830 --> 00:13:11,310 debe en su lugar especifique este es un int, o una gran int, 274 00:13:11,310 --> 00:13:12,980 ya que son normalmente llamada. 275 00:13:12,980 --> 00:13:18,840 Pero por lo general, un número entero sería, digamos, 4 bytes. 276 00:13:18,840 --> 00:13:23,694 Y si se trata de 4 bytes, esa es la cantidad de bits? 277 00:13:23,694 --> 00:13:24,630 >> AUDIENCIA: [inaudible] 278 00:13:24,630 --> 00:13:26,610 >> DAVID MALAN: 32 bits. 279 00:13:26,610 --> 00:13:30,270 Entonces, ¿cuántos usuarios podemos tener en nuestra base de datos si todos ellos tienen un ID 280 00:13:30,270 --> 00:13:33,320 y esta identificación tiene que ser único? 281 00:13:33,320 --> 00:13:36,780 32 bits significa que tenemos patrones de uno, dos, tres, cuatro, five-- 282 00:13:36,780 --> 00:13:41,000 por lo que el número de patrones diferentes de ceros y los que se tienen si hay 32? 283 00:13:41,000 --> 00:13:43,235 Eso es lo mismo que pidiendo lo que es dos a la 32? 284 00:13:43,235 --> 00:13:46,472 285 00:13:46,472 --> 00:13:48,430 Es un número grande que Yo no puedo hacerlo bien, 286 00:13:48,430 --> 00:13:50,270 pero sé que es más o menos 4 mil millones. 287 00:13:50,270 --> 00:13:53,970 Así que esto significa que su tabla de base de datos puede tener cuatro mil millones de usuarios y eso es todo. 288 00:13:53,970 --> 00:13:56,410 >> Así que esta es una interesante implicación de diseño. 289 00:13:56,410 --> 00:14:00,840 Un buen número de empresas han decidido, tal vez no tanto 290 00:14:00,840 --> 00:14:04,860 para su tabla de usuarios, ya que tener 4 mil millones de usuarios es un problema poco frecuente. 291 00:14:04,860 --> 00:14:08,410 Esta es una especie de estilo Facebook problema, no es un problema típico empresa. 292 00:14:08,410 --> 00:14:12,670 Pero tal vez si tiene registros de transacciones o algún tipo de datos que constantemente 293 00:14:12,670 --> 00:14:15,610 que se escribe en la base de datos absolutamente que podría tener miles de millones 294 00:14:15,610 --> 00:14:18,900 y miles de millones de filas, y utiliza un entero para ella, 295 00:14:18,900 --> 00:14:22,750 lo que va a ocurrir tan pronto como sea se llega a la fila número 4 mil millones 296 00:14:22,750 --> 00:14:26,210 y luego intenta insertar el 4000000000o y 1, por así decirlo? 297 00:14:26,210 --> 00:14:29,610 Estoy simplificando los números de un bit. 298 00:14:29,610 --> 00:14:33,740 >> Se puede recortar, quiero decir que que manejar de alguna manera. 299 00:14:33,740 --> 00:14:37,910 Y lo que es un equipo típicamente hacer, pensar en ello, incluso desde esta mañana, 300 00:14:37,910 --> 00:14:42,430 si tiene un valor de 4 bits como 1, 1, 1, 1, que, 301 00:14:42,430 --> 00:14:44,920 sólo para atar la mañana junto a la tarde, lo 302 00:14:44,920 --> 00:14:48,369 Qué representa este número en binario? 303 00:14:48,369 --> 00:14:49,410 OK, vamos a hacer que sea más fácil. 304 00:14:49,410 --> 00:14:53,310 ¿Qué significa este número representar en binario? 305 00:14:53,310 --> 00:14:56,794 OK, vamos a hacer que sea más fácil, lo esto 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 tenemos los column-- 308 00:14:59,670 --> 00:15:00,450 [RISA] 309 00:15:00,450 --> 00:15:01,350 ¡Uf! 310 00:15:01,350 --> 00:15:03,980 Tuvimos columna de las unidades y la columna de dos en dos. 311 00:15:03,980 --> 00:15:07,250 Así que supongamos que, en efecto, nuestra [? dentro del cuadro?] no eran de 32 bits, 312 00:15:07,250 --> 00:15:13,440 pero eran dos bits, podemos contar desde el número 0, 1, 2, 3 de usuario, 313 00:15:13,440 --> 00:15:18,040 y entonces estamos tipo de volver al usuario 00 de nuevo. 314 00:15:18,040 --> 00:15:19,739 Así que esto es lo que ocurre normalmente. 315 00:15:19,739 --> 00:15:22,780 Si alguna vez has escuchado la expresión-- probablemente no tendrá, pero si tener-- 316 00:15:22,780 --> 00:15:26,500 desbordamiento de entero, donde mantener a mover de un tirón todo de las brocas 317 00:15:26,500 --> 00:15:29,640 siendo los mayores valores posibles, y luego estás fuera de bits, 318 00:15:29,640 --> 00:15:30,850 lo que suele suceder? 319 00:15:30,850 --> 00:15:32,280 ¿Por qué digo 00? 320 00:15:32,280 --> 00:15:33,220 Bueno, esto es tres. 321 00:15:33,220 --> 00:15:34,230 ¿Cómo represento a 4? 322 00:15:34,230 --> 00:15:36,890 323 00:15:36,890 --> 00:15:38,915 ¿Cómo represento a la para el número 4 en binario? 324 00:15:38,915 --> 00:15:39,790 AUDIENCIA: [inaudible] 325 00:15:39,790 --> 00:15:41,780 DAVID MALAN: One-- sí, no dicen 100 per se, 326 00:15:41,780 --> 00:15:44,190 porque tiene el mal connotación, pero 1-0-0. 327 00:15:44,190 --> 00:15:48,920 De manera que el número 1-0-0 es de hecho correcta, pero si sólo tiene dos bits, 328 00:15:48,920 --> 00:15:50,820 lo que realmente han hecho? 329 00:15:50,820 --> 00:15:53,219 Usted ha volcado en 00. 330 00:15:53,219 --> 00:15:54,760 Y de hecho, eso es lo que sucedería. 331 00:15:54,760 --> 00:15:56,884 En realidad, se puede pensar de esto más familiarmente. 332 00:15:56,884 --> 00:15:59,350 Si recuerdan, lo que, Hace 16 años, el mundo 333 00:15:59,350 --> 00:16:03,380 se suponía que terminará cuando el problema Y2K sucedió. 334 00:16:03,380 --> 00:16:04,330 ¿Por qué fue eso? 335 00:16:04,330 --> 00:16:08,170 Así, la mayoría de las computadoras para decisiones razonables, 336 00:16:08,170 --> 00:16:15,320 fueron el almacenamiento de números como el el año 1975 o el año 1999 337 00:16:15,320 --> 00:16:19,010 sólo por el uso de dos dígitos en la memoria del ordenador. 338 00:16:19,010 --> 00:16:21,950 Así que, por supuesto, lo que sucede cuando llegue al año 2000, 339 00:16:21,950 --> 00:16:25,790 vas a este, o mejor dicho, sí. 340 00:16:25,790 --> 00:16:30,120 Así que ir hasta el año 2000, pero si sólo está utilizando dos dígitos que parece 341 00:16:30,120 --> 00:16:32,660 al igual que el año 00 y por lo que ha volcó. 342 00:16:32,660 --> 00:16:36,820 Y esta es la razón por un montón de sistemas había que actualizar en el momento. 343 00:16:36,820 --> 00:16:42,500 >> Así que una vez dicho esto, compañías como Facebook tropezado con esto. 344 00:16:42,500 --> 00:16:46,147 Así que la única manera de manejar la situación, francamente, es anticiparse a él. 345 00:16:46,147 --> 00:16:47,980 O la forma más limpia de manejar esta situación 346 00:16:47,980 --> 00:16:50,330 es de prever que por lo que no lo hace tener que hacer cambios más adelante. 347 00:16:50,330 --> 00:16:51,970 Así que en lugar de 8 bytes, ¿sabes qué? 348 00:16:51,970 --> 00:16:54,261 Voy a estar orientada hacia el pensamiento aquí, aunque es 349 00:16:54,261 --> 00:16:56,760 un poco más optimista que vamos a tener 4 mil millones 350 00:16:56,760 --> 00:16:58,850 y 1 usuarios en nuestro sitio web. 351 00:16:58,850 --> 00:17:01,790 Pero vamos a utilizar 8 bytes, o 64 bits, lo que sería en general 352 00:17:01,790 --> 00:17:05,640 llama un entero grande, muy técnico. 353 00:17:05,640 --> 00:17:10,280 Y eso significa que puede tener incluso más dígitos en su número. 354 00:17:10,280 --> 00:17:12,599 Pero este es un importante decisión de diseño, 355 00:17:12,599 --> 00:17:16,400 porque si se elige un número que tiene muy pocos bits de expresividad 356 00:17:16,400 --> 00:17:19,089 en realidad se podría crear un error en el software. 357 00:17:19,089 --> 00:17:21,750 >> Muy bien, así que vamos a envolver hasta con el correo electrónico y dirección postal. 358 00:17:21,750 --> 00:17:26,369 Así correo electrónico, ¿cuánto tiempo debe una dirección de correo electrónico sea? 359 00:17:26,369 --> 00:17:26,869 50. 360 00:17:26,869 --> 00:17:29,220 Realmente, no tengo ni idea, pero es Probablemente algo por el estilo, 361 00:17:29,220 --> 00:17:32,261 porque de lo contrario nadie va a escribir si hace demasiado largo, por lo 50, 362 00:17:32,261 --> 00:17:33,360 vamos a ir con todo por ahora. 363 00:17:33,360 --> 00:17:35,770 dirección postal, ¿cuánto tiempo se debe? 364 00:17:35,770 --> 00:17:38,325 365 00:17:38,325 --> 00:17:39,200 AUDIENCIA: [inaudible] 366 00:17:39,200 --> 00:17:41,900 367 00:17:41,900 --> 00:17:43,890 >> DAVID MALAN: No es sólo un código postal, sin embargo. 368 00:17:43,890 --> 00:17:45,720 dirección postal, oí. 369 00:17:45,720 --> 00:17:50,720 Así que esto es como 1 Brattle Square, coma, Cambridge Mass., coma, 02138. 370 00:17:50,720 --> 00:17:53,860 Y, de hecho, me dejaron de tirar un poco de hoja de cálculo aquí. 371 00:17:53,860 --> 00:17:56,510 Esto se siente como si fuera una oportunidad perdida. 372 00:17:56,510 --> 00:18:01,480 Si tenemos 1 Brattle Square, coma, Cambridge, MA 02138, 373 00:18:01,480 --> 00:18:04,510 Siento que podemos hacerlo mejor que sólo la dirección postal. 374 00:18:04,510 --> 00:18:07,100 ¿Por qué no explotan esto un poco? 375 00:18:07,100 --> 00:18:08,030 ¿Qué consigo a? 376 00:18:08,030 --> 00:18:10,970 ¿Qué debemos tener lugar para nuestras filas aquí, tal vez? 377 00:18:10,970 --> 00:18:12,260 >> AUDIENCIA: [inaudible] 378 00:18:12,260 --> 00:18:17,579 >> DAVID MALAN: Sí, así que vamos a llamarlo street_number, 379 00:18:17,579 --> 00:18:20,620 y un guión es sólo una común manera de tener lo que parece ser un espacio, 380 00:18:20,620 --> 00:18:22,360 pero no es, en realidad. 381 00:18:22,360 --> 00:18:26,240 Calle y, a continuación, ciudad-- lo siento? 382 00:18:26,240 --> 00:18:28,440 >> AUDIENCIA: [inaudible] 383 00:18:28,440 --> 00:18:29,690 DAVID MALAN: Podríamos hacer eso. 384 00:18:29,690 --> 00:18:30,702 Una línea, la línea dos. 385 00:18:30,702 --> 00:18:32,410 ¿Por qué no vamos a seguir simple por ahora, 386 00:18:32,410 --> 00:18:34,840 pero eso es absolutamente una decisión aceptable. 387 00:18:34,840 --> 00:18:38,180 Y en el estado, y luego dejar de ser un poco centrado en Estados Unidos por ahora 388 00:18:38,180 --> 00:18:42,040 y sólo hacer código postal, sólo porque que va a dar lugar a un error interesante 389 00:18:42,040 --> 00:18:43,090 o problema aquí. 390 00:18:43,090 --> 00:18:44,655 Así que supongo que es ahora nuestra dirección. 391 00:18:44,655 --> 00:18:47,280 Es un poco más molesto que tenemos todas estas más campos, 392 00:18:47,280 --> 00:18:49,200 pero ahora podemos etiquetar las cosas un poco mejor. 393 00:18:49,200 --> 00:18:53,210 >> Así que ahora el número de la calle, probablemente, no debe ser un char, habría de hacerlo? 394 00:18:53,210 --> 00:18:54,835 Lo que debería ser? 395 00:18:54,835 --> 00:18:55,710 AUDIENCIA: [inaudible] 396 00:18:55,710 --> 00:18:57,835 DAVID MALAN: Tal vez, una serie como un número entero de nuevo? 397 00:18:57,835 --> 00:19:00,170 Un gran número entero? 398 00:19:00,170 --> 00:19:02,170 Es probable que no vive a 4 mil millones de Main Street 399 00:19:02,170 --> 00:19:03,490 o algo así de loco. 400 00:19:03,490 --> 00:19:06,850 Así entero es probablemente muy bien, pero no tiene a nadie 401 00:19:06,850 --> 00:19:13,880 Ha vivido alguna vez en una dirección como 1A Brattle Square, o 1 y 1/2? 402 00:19:13,880 --> 00:19:17,030 Estas cosas existen, por desgracia, incluso si usted no ha vivido allí, 403 00:19:17,030 --> 00:19:21,240 existen estas anomalías como 1A apartamento, 1B, 1C. 404 00:19:21,240 --> 00:19:24,260 Así que ya sabes lo que, probablemente no debe ir con número entero, 405 00:19:24,260 --> 00:19:27,440 de lo contrario vamos perder algunas ventas. 406 00:19:27,440 --> 00:19:29,920 >> Char campo, tal vez? 407 00:19:29,920 --> 00:19:30,870 No sé cuánto tiempo. 408 00:19:30,870 --> 00:19:33,370 Es probable que no va a ser tanto tiempo, por lo que 10 o algo así. 409 00:19:33,370 --> 00:19:34,950 Nadie va a escribir un número más largo, tal vez. 410 00:19:34,950 --> 00:19:37,070 Pero, de nuevo, probablemente deberíamos pensar más en eso. 411 00:19:37,070 --> 00:19:39,900 Tal vez google, hacer algunas investigaciones, pero vamos a ir con nuestras entrañas por ahora. 412 00:19:39,900 --> 00:19:44,565 Calles, char, 50, no sé. 413 00:19:44,565 --> 00:19:46,940 En algún momento, nadie va escribirlo en un sobre, 414 00:19:46,940 --> 00:19:49,350 también, así que es probable que haya algunos límites superiores allí. 415 00:19:49,350 --> 00:19:54,200 Ciudad, mismo, seguro, por lo que la charla 50. 416 00:19:54,200 --> 00:19:59,120 >> Estado, puede ser centrado en Estados Unidos por ahora. 417 00:19:59,120 --> 00:20:01,850 Por lo que podría ser una lista, tan amable de una cuestión de criterio, estado. 418 00:20:01,850 --> 00:20:04,000 Podría ser como dos caracteres. 419 00:20:04,000 --> 00:20:06,140 Así que en realidad, tal vez, yo decía carbón. 420 00:20:06,140 --> 00:20:09,420 Probablemente decir varchar sólo para algunos eficiencia, 421 00:20:09,420 --> 00:20:12,240 pero vamos a volver a esa decisión en un momento. 422 00:20:12,240 --> 00:20:16,150 Podría ser un char de longitud 2 para el estado. 423 00:20:16,150 --> 00:20:20,670 Si en los EE.UU. tienen, como MA, Massachusetts, Nueva York, Nueva York, Nueva Jersey, Nueva 424 00:20:20,670 --> 00:20:22,100 Jersey, y así sucesivamente. 425 00:20:22,100 --> 00:20:23,630 Por lo tanto, podría ser fijado en eso. 426 00:20:23,630 --> 00:20:25,900 DC para Washington DC. 427 00:20:25,900 --> 00:20:29,915 >> Pero creo que, Olivier, que propuesto otro enfoque. 428 00:20:29,915 --> 00:20:30,790 AUDIENCIA: [inaudible] 429 00:20:30,790 --> 00:20:33,670 DAVID MALAN: Sí, lo que es una poco molesto para escribir, 430 00:20:33,670 --> 00:20:37,890 pero una enumeración podría tener más sentido, porque de esta manera, al menos en los EE.UU., 431 00:20:37,890 --> 00:20:41,320 usted podría enumerar, si tediosa, pero lo hace sólo una vez en su base de datos 432 00:20:41,320 --> 00:20:47,480 y nunca más tendrá que pensar que, los 50 códigos de dos caracteres. 433 00:20:47,480 --> 00:20:48,660 Por eso me gusta enumeración. 434 00:20:48,660 --> 00:20:51,720 Quedémonos con que hay, porque que tipo de hace cumplir más rigor. 435 00:20:51,720 --> 00:20:53,620 Y luego zip código? 436 00:20:53,620 --> 00:20:55,306 Creo que Andrew tenía un pensamiento en ese 437 00:20:55,306 --> 00:20:56,180 AUDIENCIA: [inaudible] 438 00:20:56,180 --> 00:20:57,240 DAVID MALAN: Sí, cinco o nueve. 439 00:20:57,240 --> 00:20:58,323 Vamos a mantenerlo simple. 440 00:20:58,323 --> 00:20:59,380 Sólo hacer cinco por ahora. 441 00:20:59,380 --> 00:21:03,070 Pero tal vez sólo podía hacer un número entero, ¿verdad? 442 00:21:03,070 --> 00:21:08,750 Podría, pero sabes qué, me hizo este error una vez, en algún sentido. 443 00:21:08,750 --> 00:21:13,110 Hace años, yo estaba migrando desde Microsoft Outlook a Gmail, 444 00:21:13,110 --> 00:21:18,640 y Outlook tiene una manera de exportar todos los contactos como un archivo de Excel, 445 00:21:18,640 --> 00:21:21,280 un archivo CSV, separados por comas archivo de valores. 446 00:21:21,280 --> 00:21:23,950 Y cometí el error, me pensar, de doble clic en él, 447 00:21:23,950 --> 00:21:27,380 una vez que he descargado la exportación, a asegúrese de que parecía que yo esperaba. 448 00:21:27,380 --> 00:21:31,320 Debo haber golpeado Guardar o deje guardado automático patada en o algo así. 449 00:21:31,320 --> 00:21:35,100 Porque cuando luego importados en Gmail, todo funcionó. 450 00:21:35,100 --> 00:21:39,910 Pero durante años, hasta nuestros días, y Hice esto hace cinco o 10 años, 451 00:21:39,910 --> 00:21:44,380 Todavía estoy encontrando amigos que tienen direcciones que parecen esto. 452 00:21:44,380 --> 00:21:45,700 ¿Por qué? 453 00:21:45,700 --> 00:21:47,900 >> AUDIENCIA: [inaudible] 454 00:21:47,900 --> 00:21:50,650 >> DAVID MALAN: Tomó el 0, bueno, más bien, 455 00:21:50,650 --> 00:21:53,810 tomó todo el código postal como un número, y por lo tanto es 456 00:21:53,810 --> 00:21:56,590 un 0 que significa no tiene ningún significado. 457 00:21:56,590 --> 00:21:59,470 Y así, 2138 parece ser mi código postal. 458 00:21:59,470 --> 00:22:07,100 Y esto es, francamente, un molesto Excel posibilidad por la cual creo que de forma predeterminada, 459 00:22:07,100 --> 00:22:10,980 incluso si se supone que solo ser texto, Microsoft Excel 460 00:22:10,980 --> 00:22:13,780 decide, quiero ser útil, y oh, veo sólo números. 461 00:22:13,780 --> 00:22:15,290 Vamos a tratar a estos números. 462 00:22:15,290 --> 00:22:16,790 Y se trunca los ceros a la izquierda. 463 00:22:16,790 --> 00:22:19,165 >> Juro por Dios, cada pareja de meses me parece una dirección, 464 00:22:19,165 --> 00:22:22,300 y fuera de un tipo de TOC, vuelvo y poner el 0, a pesar de que nunca 465 00:22:22,300 --> 00:22:23,700 enviar cartas de la gente ni nada. 466 00:22:23,700 --> 00:22:25,510 Pero todavía estoy encontrando restos de esta. 467 00:22:25,510 --> 00:22:28,820 Así que esto es decir, es una buena idea? 468 00:22:28,820 --> 00:22:31,610 OK, no, porque nadie en Massachusetts, en esta área, 469 00:22:31,610 --> 00:22:33,270 va a tener una o llevándolos. 470 00:22:33,270 --> 00:22:38,070 Así que vamos a ir con igual char, probablemente, de cinco. 471 00:22:38,070 --> 00:22:41,450 >> Y aquí, darnos cuenta de que podría utilizar una enumeración y nosotros 472 00:22:41,450 --> 00:22:44,600 podría enumerar 10.000 posibles códigos postales, 473 00:22:44,600 --> 00:22:48,530 pero que se siente como que es probablemente cruzando una línea de, como, beneficios. 474 00:22:48,530 --> 00:22:51,350 Si usted tiene a la entrada que muchos datos en su base de datos 475 00:22:51,350 --> 00:22:52,940 para proteger contra algo. 476 00:22:52,940 --> 00:22:57,400 Así carbón se dio cuenta de que podría escribir en H-E-L-L-O por ejemplo el código postal, 477 00:22:57,400 --> 00:22:59,180 lo que no es, obviamente, numérico. 478 00:22:59,180 --> 00:23:01,680 Así que no hay manera, en una base de datos típica, 479 00:23:01,680 --> 00:23:05,561 especificar sólo numérico y sólo cinco caracteres de longitud, 480 00:23:05,561 --> 00:23:07,310 así que vamos a tener hacer eso en el código. 481 00:23:07,310 --> 00:23:11,100 Vamos a hacer que en PHP o Java o cualquier otro idioma que estamos 482 00:23:11,100 --> 00:23:14,230 utilizando en el servidor para hacer cumplir ese tipo de restricción. 483 00:23:14,230 --> 00:23:14,860 >> Whoo! 484 00:23:14,860 --> 00:23:18,322 Muy bien, así que cualquier pregunta por el momento? 485 00:23:18,322 --> 00:23:19,780 Vamos a hacer otra decisión de diseño. 486 00:23:19,780 --> 00:23:22,500 Resulta que se También llega a elegir, 487 00:23:22,500 --> 00:23:26,600 en el diseño de una base de datos SQL o database-- típicos donde relacionales 488 00:23:26,600 --> 00:23:28,790 de nuevo, simplemente relacional significa filas y columnas, 489 00:23:28,790 --> 00:23:35,500 es así como a organizar sus Data-- y darse cuenta de que lo que esto significa es, 490 00:23:35,500 --> 00:23:37,740 He estado engañosa en que, estoy drawing-- este 491 00:23:37,740 --> 00:23:40,190 es lo que se llama el esquema para una tabla de base de datos. 492 00:23:40,190 --> 00:23:42,810 Esto es como el especificaciones para el table-- 493 00:23:42,810 --> 00:23:48,040 pero cuando llega el momento que en realidad almacenar datos, 494 00:23:48,040 --> 00:23:52,081 y que vamos a hacer esto sólo con el ejemplo aquí. 495 00:23:52,081 --> 00:23:55,080 Voy a abrir Excel, porque Excel me dará filas y columnas. 496 00:23:55,080 --> 00:23:58,050 Y eso es exactamente lo que Oracle y MySQL y otras herramientas me darán. 497 00:23:58,050 --> 00:24:02,270 Así que sólo voy a utilizar por el bien de la discusión. 498 00:24:02,270 --> 00:24:05,250 Déjame ir por delante y abrir una documento representativo aquí, 499 00:24:05,250 --> 00:24:06,310 agrandar un poco. 500 00:24:06,310 --> 00:24:15,200 Así, por ejemplo, nuestras cabeceras son ahora nombre, apellido, sexo, ID, 501 00:24:15,200 --> 00:24:20,980 correo electrónico, número de la calle, calle, gritos. 502 00:24:20,980 --> 00:24:25,710 Calle, ciudad, estado, justo sobre encaja en la pantalla. 503 00:24:25,710 --> 00:24:29,080 >> Así que lo que esto significa es que cuando una usuario se registra por primera vez para mi sitio web, 504 00:24:29,080 --> 00:24:32,880 que va a ser algo así como David, Malan, m, digamos 1, 505 00:24:32,880 --> 00:24:42,910 malan@harvard.edu, número de la calle se ser como 1 Brattle Square, Cambridge, MA, 506 00:24:42,910 --> 00:24:44,780 02138 y, a continuación, etcétera. 507 00:24:44,780 --> 00:24:48,290 Así que cuando digo que una base de datos relacional o base de datos SQL es filas y columnas, 508 00:24:48,290 --> 00:24:49,350 Quiero decir esto. 509 00:24:49,350 --> 00:24:51,900 Que los datos reales se almacena en filas y columnas. 510 00:24:51,900 --> 00:24:53,950 Esta es sólo una coincidencia, que estábamos hablando, 511 00:24:53,950 --> 00:24:56,033 y yo estaba dibujando lo en filas y columnas. 512 00:24:56,033 --> 00:24:58,320 Esto es sólo el esquema, la definición general. 513 00:24:58,320 --> 00:25:01,640 >> Así que aquí uno de estos campos, o de manera equivalente, allí, 514 00:25:01,640 --> 00:25:06,270 los cuales son los campos que usted piensa Estoy probable que buscar en si soy un usuario 515 00:25:06,270 --> 00:25:09,200 o si soy el administrador de base de datos? 516 00:25:09,200 --> 00:25:12,426 Como, ¿qué soy yo campos en realidad va a buscar en? 517 00:25:12,426 --> 00:25:13,830 >> AUDIENCIA: [inaudible] 518 00:25:13,830 --> 00:25:17,690 >> DAVID MALAN: El nombre, sí por lo Me gusta el hecho de que- sí, 519 00:25:17,690 --> 00:25:19,750 email puede ser bastante común. 520 00:25:19,750 --> 00:25:21,440 Lo sentimos, usted ha dicho nombre. 521 00:25:21,440 --> 00:25:24,030 Así maybe-- y otra vez, estamos clase de hablar en abstracto. 522 00:25:24,030 --> 00:25:25,988 No sé por qué te gustaría ser la búsqueda de un nombre, 523 00:25:25,988 --> 00:25:29,340 pero que se siente razonable si estás en busca de un usuario. 524 00:25:29,340 --> 00:25:31,170 Quizás estados, seguro, ID. 525 00:25:31,170 --> 00:25:34,100 526 00:25:34,100 --> 00:25:36,160 >> Y es una resbaladiza pendiente, porque podía 527 00:25:36,160 --> 00:25:38,890 idear un escenario donde tal vez mi jefe me ha pedido, 528 00:25:38,890 --> 00:25:40,417 ¿Cuántos hombres tenemos en nuestro sitio? 529 00:25:40,417 --> 00:25:42,000 ¿Cuántas mujeres tenemos en nuestro sitio? 530 00:25:42,000 --> 00:25:45,210 Y así, en ese momento, es posible que desee buscar en el campo de género, también, 531 00:25:45,210 --> 00:25:45,940 y nada más. 532 00:25:45,940 --> 00:25:47,350 Así que hay una compensación aquí. 533 00:25:47,350 --> 00:25:49,180 Una vez más, no hay respuesta correcta, pero hay 534 00:25:49,180 --> 00:25:53,760 es una característica en la mayoría de bases de datos SQL conocida como indización, por lo 535 00:25:53,760 --> 00:25:56,100 usted, el diseñador, el administrador de base de datos, 536 00:25:56,100 --> 00:26:01,730 llegar a decidir de antemano qué Campos La base de datos debe optimizar 537 00:26:01,730 --> 00:26:02,980 para las búsquedas en. 538 00:26:02,980 --> 00:26:07,620 >> Se podría decir muy ingenuamente, optimizar esto, que optimizar, optimizar esta, 539 00:26:07,620 --> 00:26:10,300 optimizar que y esto, y la base de datos 540 00:26:10,300 --> 00:26:14,882 hacer algo por debajo de la mágica capucha, y hacer algo de tal manera 541 00:26:14,882 --> 00:26:17,090 que la próxima vez que usted busca en cualquiera de estos campos, 542 00:26:17,090 --> 00:26:18,400 será, de hecho, ser más rápido. 543 00:26:18,400 --> 00:26:19,110 Esto es posible. 544 00:26:19,110 --> 00:26:20,530 No cancela a sí misma. 545 00:26:20,530 --> 00:26:22,500 Pero tiene que haber un precio pagado. 546 00:26:22,500 --> 00:26:27,220 >> Si ingenuamente, o un exceso de entusiasmo por ejemplo, el índice de todos estos campos, 547 00:26:27,220 --> 00:26:29,810 por así decirlo, hacer que todos eficientemente búsquedas, 548 00:26:29,810 --> 00:26:31,625 qué precio está probablemente pagando? 549 00:26:31,625 --> 00:26:32,500 AUDIENCIA: [inaudible] 550 00:26:32,500 --> 00:26:33,090 DAVID MALAN: Rendimiento. 551 00:26:33,090 --> 00:26:33,798 ¿Qué quieres decir? 552 00:26:33,798 --> 00:26:37,380 Bien rendimiento, al menos en el contexto que estoy discutiendo, es mejor ahora. 553 00:26:37,380 --> 00:26:38,830 Esa es la definición de la indexación. 554 00:26:38,830 --> 00:26:41,180 Hará búsquedas más rápidas. 555 00:26:41,180 --> 00:26:43,366 Así que el tiempo disminuye, por así decirlo. 556 00:26:43,366 --> 00:26:44,240 AUDIENCIA: [inaudible] 557 00:26:44,240 --> 00:26:45,031 DAVID MALAN: Espacio. 558 00:26:45,031 --> 00:26:46,520 Así que de nuevo, se trata de un comercio común. 559 00:26:46,520 --> 00:26:50,820 Puedo acelerar las búsquedas, pero es va a costar más bytes de espacio. 560 00:26:50,820 --> 00:26:51,610 ¿Por qué? 561 00:26:51,610 --> 00:26:55,230 Así, por defecto, si no tenemos ninguno de estas estrellas rojas, ninguno de estos índices, 562 00:26:55,230 --> 00:26:58,797 como que estoy diciendo, ¿cómo buscar de un nombre en esta base de datos? 563 00:26:58,797 --> 00:27:00,630 Así que vamos a dibujar nuestra atención a este ejemplo. 564 00:27:00,630 --> 00:27:06,300 Si tenemos David y Scully y Kareem y Arwa y otros en estas filas, 565 00:27:06,300 --> 00:27:06,910 por ejemplo. 566 00:27:06,910 --> 00:27:08,390 >> Así que vamos a hacer exactamente eso. 567 00:27:08,390 --> 00:27:13,990 Scully está aquí dentro, y luego tenemos Kareem, y Arwa, 568 00:27:13,990 --> 00:27:18,390 y todos los demás, si no lo hace tiene un índice definido, por así decirlo, 569 00:27:18,390 --> 00:27:20,160 lo mejor que puede hacer es buscar lineal. 570 00:27:20,160 --> 00:27:23,470 Si busca Arwa, no estamos va a ser capaz de entrar de lleno a su 571 00:27:23,470 --> 00:27:24,140 con rapidez. 572 00:27:24,140 --> 00:27:26,556 Vamos a empezar la parte superior y recorrer todo el camino hasta el fondo, 573 00:27:26,556 --> 00:27:28,600 no muy diferente de nuestra original ejemplo, Mike Smith. 574 00:27:28,600 --> 00:27:33,470 >> Si, sin embargo, digo, hey, base de datos, indexar el campo de nombre, 575 00:27:33,470 --> 00:27:37,000 a continuación, se va a hacer algo más elegante y apoyar algo 576 00:27:37,000 --> 00:27:38,130 al igual que la búsqueda binaria. 577 00:27:38,130 --> 00:27:39,820 No es probable que la búsqueda binaria per se. 578 00:27:39,820 --> 00:27:42,810 Bases de datos tienden a utilizar otro estructura de datos llamada b-árboles, 579 00:27:42,810 --> 00:27:46,540 No debe confundirse con los árboles binarios, que acaba de hacerlo más rápido para buscar 580 00:27:46,540 --> 00:27:48,500 algo en la naturaleza logarítmica. 581 00:27:48,500 --> 00:27:53,510 Pero el precio que pagar para construir esa característica, que la estructura de datos en la memoria, 582 00:27:53,510 --> 00:27:54,570 es más bytes. 583 00:27:54,570 --> 00:27:57,170 Lo que podría tomar algunos megabytes, algunos gigabytes, ¿quién sabe? 584 00:27:57,170 --> 00:27:58,410 Depende de los datos. 585 00:27:58,410 --> 00:28:02,640 >> Por lo tanto, en algún momento, usted tiene que decidir, probablemente no es un caso común. 586 00:28:02,640 --> 00:28:06,000 ¿Cuáles son los comunes real casos, si realmente tuviera que elegir, 587 00:28:06,000 --> 00:28:10,080 cuáles podrían ser sus campos favoritos? 588 00:28:10,080 --> 00:28:10,580 Email. 589 00:28:10,580 --> 00:28:14,400 Y me gusta porque el correo electrónico de correo electrónico, en teoría, debería ser único. 590 00:28:14,400 --> 00:28:17,650 Y así, por lo general, cuando se sabe de antemano que uno de sus campos 591 00:28:17,650 --> 00:28:20,277 es o será único, que tiende a ser un buen campo 592 00:28:20,277 --> 00:28:22,860 buscar en, porque de esa manera, cuando se busca algo, 593 00:28:22,860 --> 00:28:26,194 vas a volver uno o las respuestas cero y luego ya está. 594 00:28:26,194 --> 00:28:28,110 Usted no tiene que mantener en busca de otros más. 595 00:28:28,110 --> 00:28:31,992 >> Y así, en este caso aquí, correo electrónico, siempre y cuando no se puede registrar dos veces 596 00:28:31,992 --> 00:28:33,450 con el mismo email, es una buena idea. 597 00:28:33,450 --> 00:28:36,710 ID por definición, en el mundo de la informática, 598 00:28:36,710 --> 00:28:39,610 si usted está hablando de una Identificación, que mejor que sea único. 599 00:28:39,610 --> 00:28:42,970 En cierto modo es la connotación de ID o identificador. 600 00:28:42,970 --> 00:28:46,440 Y el resto de ellas podría ser, llamémosles bueno que tienen, 601 00:28:46,440 --> 00:28:47,860 pero no es realmente necesario. 602 00:28:47,860 --> 00:28:49,976 >> Y así, en una base de datos, especifica los índices, 603 00:28:49,976 --> 00:28:51,350 pero puede ser aún más preciso. 604 00:28:51,350 --> 00:28:56,060 Se puede decir, bueno, la base de datos, asegúrese que cada ID en esta tabla es única. 605 00:28:56,060 --> 00:28:59,330 Ni siquiera dejar que un programador accidentalmente poner en un correo electrónico duplicado 606 00:28:59,330 --> 00:29:00,740 o duplicar el número de identificación. 607 00:29:00,740 --> 00:29:03,140 Tanto como las enumeraciones protegernos de manera similar, se 608 00:29:03,140 --> 00:29:04,881 puede tener esas defensas de nivel inferior. 609 00:29:04,881 --> 00:29:07,130 Y así el diseño de base de datos, en cierto sentido, es una especie de diversión, 610 00:29:07,130 --> 00:29:08,380 porque lo haces a la defensiva. 611 00:29:08,380 --> 00:29:11,460 Usted especie de asumir que se trabaja con horribles, horribles programadores 612 00:29:11,460 --> 00:29:15,550 y que desea poner en tantas defensas como sea posible para proteger sus datos, 613 00:29:15,550 --> 00:29:18,940 pero al mismo tiempo desea para ayudar a obtener mejores resultados 614 00:29:18,940 --> 00:29:21,386 eligiendo qué campos para optimizar para. 615 00:29:21,386 --> 00:29:24,260 Pero no se puede necesariamente hacerlo en un vacío como que tipo de aquí. 616 00:29:24,260 --> 00:29:26,480 Uno tiene que saber cuáles son aquellos casos comunes son. 617 00:29:26,480 --> 00:29:29,397 Si los desarrolladores están la implementación de una libreta de direcciones, 618 00:29:29,397 --> 00:29:32,230 Es muy posible que desea poder buscar en casi todos los campos, 619 00:29:32,230 --> 00:29:33,830 simplemente por la naturaleza de la aplicación. 620 00:29:33,830 --> 00:29:37,910 Así que tal vez pasas que el espacio adicional. 621 00:29:37,910 --> 00:29:39,090 >> Derecho, alguna pregunta? 622 00:29:39,090 --> 00:29:41,820 623 00:29:41,820 --> 00:29:42,486 Sí. 624 00:29:42,486 --> 00:29:43,470 >> AUDIENCIA: [inaudible] 625 00:29:43,470 --> 00:29:44,404 >> DAVID MALAN: No. 626 00:29:44,404 --> 00:29:45,279 >> AUDIENCIA: [inaudible] 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: [inaudible] 630 00:29:49,701 --> 00:29:52,420 631 00:29:52,420 --> 00:29:54,850 >> DAVID MALAN: Ah, por lo que estamos hablando de una manera 632 00:29:54,850 --> 00:29:57,940 ahora que es completamente independiente del lenguaje. 633 00:29:57,940 --> 00:30:02,370 Así que estamos hablando ahora acerca bases de datos relacionales, más en general, 634 00:30:02,370 --> 00:30:04,760 o bases de datos SQL de forma más general. 635 00:30:04,760 --> 00:30:06,870 >> AUDIENCIA: [inaudible] 636 00:30:06,870 --> 00:30:10,030 >> DAVID MALAN: Una mejor palabra para usar se, puede ser utilizado por cualquier idioma. 637 00:30:10,030 --> 00:30:15,280 Así que se puede escribir código JavaScript, C código de código, C ++, código Java, código Ruby, 638 00:30:15,280 --> 00:30:19,010 todos los cuales hablar con un base de datos y ejecutar consultas. 639 00:30:19,010 --> 00:30:22,310 De hecho, eso no es una mala segue a una consulta de ejemplo. 640 00:30:22,310 --> 00:30:25,720 Y de nuevo, no vamos a entrar en Java o C ++ o nada de eso nunca más, 641 00:30:25,720 --> 00:30:29,420 pero en SQL, el lenguaje al que sigo refiriéndose, Structured Query Language, 642 00:30:29,420 --> 00:30:32,790 este sí es un lenguaje de programación, sino que está destinado a ser utilizado, sin 643 00:30:32,790 --> 00:30:37,330 sorpresa, estructurado de consultas de consulta. 644 00:30:37,330 --> 00:30:38,660 >> Con esto quiero decir esto. 645 00:30:38,660 --> 00:30:41,190 La forma de selección de los datos a partir de una base de datos MySQL 646 00:30:41,190 --> 00:30:49,330 está literalmente escribe en su programa algo así como la estrella de selección de los usuarios. 647 00:30:49,330 --> 00:30:52,200 Estoy suponiendo que esta tabla, a partir de ahora se llama a los usuarios. 648 00:30:52,200 --> 00:30:54,860 Podría llamarlo cualquier cosa que queramos, pero ese tipo de tiene sentido. 649 00:30:54,860 --> 00:30:57,240 Y así Select es un muy verbo común, si usted 650 00:30:57,240 --> 00:30:59,290 hará, en SQL, que, literalmente, lo hace. 651 00:30:59,290 --> 00:31:02,730 ¿Qué opinas estrellas significa en este contexto? 652 00:31:02,730 --> 00:31:04,410 >> AUDIENCIA: [inaudible] 653 00:31:04,410 --> 00:31:05,380 >> DAVID MALAN: Lo siento? 654 00:31:05,380 --> 00:31:06,300 >> AUDIENCIA: [inaudible] 655 00:31:06,300 --> 00:31:09,580 >> DAVID MALAN: No es necesario, es más inclusiva que eso, en realidad. 656 00:31:09,580 --> 00:31:11,700 Es el carácter comodín. 657 00:31:11,700 --> 00:31:14,740 Estrella casi siempre significa nada, lo que esto significa, en este caso, 658 00:31:14,740 --> 00:31:16,510 seleccionar todo, desde la base de datos. 659 00:31:16,510 --> 00:31:20,730 Así que cuando digo esto, quiero decir devuélveme cada columna 660 00:31:20,730 --> 00:31:22,440 desde mi tabla llamada usuarios. 661 00:31:22,440 --> 00:31:24,730 Así que dame un conjunto de resultados, como se le llama. 662 00:31:24,730 --> 00:31:28,210 En otras palabras, dame una copia de la hoja de cálculo, es lo que quiero llegar. 663 00:31:28,210 --> 00:31:34,890 >> Pero si dijera seleccione la estrella de los usuarios donde ID es igual a 1, lo grande que debe 664 00:31:34,890 --> 00:31:36,640 mi conjunto de resultados sea entonces? 665 00:31:36,640 --> 00:31:41,680 O equivalentemente, el número de filas debe Yo ser entregado de vuelta de la base de datos? 666 00:31:41,680 --> 00:31:45,860 Probablemente sólo uno, si tengo de hecho tratado ID como un identificador único, 667 00:31:45,860 --> 00:31:50,710 y si David tiene que ID único, I debe volver una y sólo una fila 668 00:31:50,710 --> 00:31:53,220 que contiene toda la información de David. 669 00:31:53,220 --> 00:31:56,390 Si lo dije donde ID es igual a 99, debería volver, 670 00:31:56,390 --> 00:32:00,320 en este contexto, cero filas, al menos en el momento. 671 00:32:00,320 --> 00:32:03,620 >> Sin embargo, si no me importa sobre toda esa información, 672 00:32:03,620 --> 00:32:06,970 Yo sólo pude decir, ¿dónde vive David? 673 00:32:06,970 --> 00:32:10,860 Seleccionar el código postal de usuarios donde ID es 1. 674 00:32:10,860 --> 00:32:15,820 Esto seleccionará sólo a mí postal de David código y no la totalidad de esa fila. 675 00:32:15,820 --> 00:32:19,541 ¿Por qué podría hacer esto en lugar de la consulta de la estrella, el comodín? 676 00:32:19,541 --> 00:32:21,950 >> AUDIENCIA: [inaudible] 677 00:32:21,950 --> 00:32:24,590 >> DAVID MALAN: Sí, yo sólo lo pueda necesitar. 678 00:32:24,590 --> 00:32:26,350 Lo que el rendimiento es de nuevo la respuesta aquí. 679 00:32:26,350 --> 00:32:28,540 ¿Por qué pedir más la información que necesita, 680 00:32:28,540 --> 00:32:32,020 porque incluso si todo está bien juntos, usted todavía tiene que copiar los datos, 681 00:32:32,020 --> 00:32:35,560 al parecer, a partir de la base de datos en su programa de alguna manera, 682 00:32:35,560 --> 00:32:38,490 y eso es una tontería si sólo necesita cinco de esos dígitos, 683 00:32:38,490 --> 00:32:40,340 no la totalidad de la fila. 684 00:32:40,340 --> 00:32:42,180 >> Entonces, ¿cómo puedo insertar un usuario? 685 00:32:42,180 --> 00:32:44,780 Supongamos que un usuario tiene solo registrado por primera vez. 686 00:32:44,780 --> 00:32:46,560 La sintaxis sería por lo general tener este aspecto. 687 00:32:46,560 --> 00:32:52,700 Insertar en los usuarios, y entonces podríamos decir que los valores, 688 00:32:52,700 --> 00:33:00,150 y entonces podríamos decir que los valores como, digamos, Lauren Scully, 689 00:33:00,150 --> 00:33:02,380 nuestro camarógrafo aquí. 690 00:33:02,380 --> 00:33:04,390 Y el siguiente campo es el género. 691 00:33:04,390 --> 00:33:08,020 Así que vamos a decir cita, fin de la cita "F", entonces tenemos un ID 692 00:33:08,020 --> 00:33:12,250 y voy a dejar que decir-- de fingir que no es en realidad aquí, 693 00:33:12,250 --> 00:33:14,380 así que vamos a rebobinar en la historia. 694 00:33:14,380 --> 00:33:16,530 Así que 2 será su identificación. 695 00:33:16,530 --> 00:33:19,130 Y entonces el siguiente campo Ahí está su correo electrónico. 696 00:33:19,130 --> 00:33:22,140 Así que va a ser como Lauren Scully y así sucesivamente, 697 00:33:22,140 --> 00:33:24,360 y sólo tendremos que punto punto dot lejos de aquí en adelante. 698 00:33:24,360 --> 00:33:26,890 Ahora va a ser un poco tedioso, pero la consulta de inserción 699 00:33:26,890 --> 00:33:28,310 en última instancia, tener ese aspecto. 700 00:33:28,310 --> 00:33:30,970 >> Si quiero para deshacerse de Scully, uh-oh, vamos a dar de baja 701 00:33:30,970 --> 00:33:37,420 ella, se elimina su cuenta, eliminar de los usuarios donde ID es igual a 2, 702 00:33:37,420 --> 00:33:38,500 se librará de Scully. 703 00:33:38,500 --> 00:33:48,050 O lo que puedo decir establecen los usuarios de actualización, digamos, ¿qué podemos cambiar? 704 00:33:48,050 --> 00:33:49,430 ¿Y si se mueve. 705 00:33:49,430 --> 00:33:53,730 Conjunto postal es igual a 021-- pues no, ese es su postal actual. 706 00:33:53,730 --> 00:33:54,487 90210. 707 00:33:54,487 --> 00:33:56,320 El único otro código postal Sé que en el mundo. 708 00:33:56,320 --> 00:33:59,002 Así que cambiaría su postal code-- realidad, 709 00:33:59,002 --> 00:34:00,460 eso no cambiaría su código postal. 710 00:34:00,460 --> 00:34:02,170 >> ¿Qué acabo de hacer? 711 00:34:02,170 --> 00:34:04,292 A pesar de que la sintaxis es probablemente nueva. 712 00:34:04,292 --> 00:34:05,302 >> AUDIENCIA: [inaudible] 713 00:34:05,302 --> 00:34:08,010 DAVID MALAN: Sí, lo trasladó todo el mundo a Beverly Hills, California. 714 00:34:08,010 --> 00:34:11,920 Así que en realidad debería decir donde ID es igual a 2. 715 00:34:11,920 --> 00:34:12,820 Etcétera. 716 00:34:12,820 --> 00:34:15,290 Por lo que SQL es todo acerca de estos tipos de instrucciones. 717 00:34:15,290 --> 00:34:20,260 Seleccionar, insertar, eliminar, actualizar, con estos predicados en el extremo 718 00:34:20,260 --> 00:34:22,139 estas cláusulas en las que, por así decirlo. 719 00:34:22,139 --> 00:34:25,170 Y hay mucho más que pueda hacer, pero en realidad sólo se reduce 720 00:34:25,170 --> 00:34:29,750 simplemente, si arcanamente, expresando lo que quiere la base de datos hay que hacer. 721 00:34:29,750 --> 00:34:31,580 >> Y a continuación, la base de datos se darán cuenta, cuando 722 00:34:31,580 --> 00:34:35,630 Lauren se inserta en el Scully base de datos, dónde la puso en la memoria 723 00:34:35,630 --> 00:34:38,230 por lo que podemos obtener muy rápidamente su base en su dirección de correo electrónico 724 00:34:38,230 --> 00:34:42,610 o en base a su número de identificación o similar. 725 00:34:42,610 --> 00:34:43,391 Sí, Dan. 726 00:34:43,391 --> 00:34:44,266 AUDIENCIA: [inaudible] 727 00:34:44,266 --> 00:34:46,364 728 00:34:46,364 --> 00:34:47,780 DAVID MALAN: Muy buena pregunta. 729 00:34:47,780 --> 00:34:50,370 ¿Estos scripts de cambiar de Microsoft Access a Oracle 730 00:34:50,370 --> 00:34:52,290 a MySQL a PostgreSQL? 731 00:34:52,290 --> 00:34:53,790 La respuesta corta es que depende. 732 00:34:53,790 --> 00:34:58,697 En teoría, hay una muy subconjunto común significativa de SQL 733 00:34:58,697 --> 00:35:00,780 que se comparte a través de todos de estas implementaciones. 734 00:35:00,780 --> 00:35:03,340 Sin embargo, varios fabricantes tienen características añadidas 735 00:35:03,340 --> 00:35:07,120 a sus bases de datos para hacer ciertas cosas más allá del alcance de estas características, 736 00:35:07,120 --> 00:35:08,720 que podría, de hecho, romper. 737 00:35:08,720 --> 00:35:11,210 >> Así que la forma en que los desarrolladores protegerse contra esto, 738 00:35:11,210 --> 00:35:14,350 es que en lugar de escribir en bruto código SQL como que estoy escribiendo aquí, 739 00:35:14,350 --> 00:35:19,460 que en lugar de utilizar una biblioteca, una biblioteca común que la propia 740 00:35:19,460 --> 00:35:23,650 es una especie de alto nivel y resúmenes de distancia, que el producto que está utilizando. 741 00:35:23,650 --> 00:35:25,710 Y le da funciones y procedimientos 742 00:35:25,710 --> 00:35:28,810 llamar para que nunca En realidad escribir SQL prima. 743 00:35:28,810 --> 00:35:32,609 >> En teoría, entonces, puede cambiar productos de Oracle a Microsoft 744 00:35:32,609 --> 00:35:34,650 o viceversa, o nada otra cosa, y que, literalmente, 745 00:35:34,650 --> 00:35:36,920 cambiar nada acerca de su código. 746 00:35:36,920 --> 00:35:40,180 La realidad, sin embargo, es que a veces renunciar a características como consecuencia de ello. 747 00:35:40,180 --> 00:35:43,860 Es posible que haya elegido un producto, ya que tiene estas características de valor añadido, 748 00:35:43,860 --> 00:35:46,610 y no eres más que ahora usarlos conscientemente. 749 00:35:46,610 --> 00:35:51,630 >> Y anecdóticamente, la mayoría de las empresas tienden Nunca alejarse de su base de datos. 750 00:35:51,630 --> 00:35:54,002 Así, mientras que este es un agradable tienen función, la realidad 751 00:35:54,002 --> 00:35:55,960 Es decir, si usted está reacondicionamiento su base de datos, que está 752 00:35:55,960 --> 00:35:59,890 probablemente haciendo manojos de otros cambios de todos modos, que no necesariamente 753 00:35:59,890 --> 00:36:01,360 que prever eso. 754 00:36:01,360 --> 00:36:03,720 Por lo que es discutible sobre-ingeniería del problema, 755 00:36:03,720 --> 00:36:05,670 pero realmente depende del contexto. 756 00:36:05,670 --> 00:36:09,960 Pero en teoría, SQL es compartida a través de estos diversos productos. 757 00:36:09,960 --> 00:36:11,560 Muy buenas preguntas. 758 00:36:11,560 --> 00:36:12,272 Sí. 759 00:36:12,272 --> 00:36:13,147 >> AUDIENCIA: [inaudible] 760 00:36:13,147 --> 00:36:17,820 761 00:36:17,820 --> 00:36:21,480 >> DAVID MALAN: Sí, por lo se puede pensar en una base de datos 762 00:36:21,480 --> 00:36:25,020 es sólo un servidor, al final de el día, y en el interior de dicho servidor 763 00:36:25,020 --> 00:36:28,670 es un montón de tablas, filas y columnas. 764 00:36:28,670 --> 00:36:33,410 Y cuando se envía una consulta como esta desde su programa, su sitio web, 765 00:36:33,410 --> 00:36:39,340 escrito en Java, Ruby, Python, lo que sea, el servidor está recibiendo este comando 766 00:36:39,340 --> 00:36:41,660 e interpretarla en literalmente, de la misma manera 767 00:36:41,660 --> 00:36:43,660 hemos comentado anteriormente con lenguajes interpretados, 768 00:36:43,660 --> 00:36:47,333 y luego realizar alguna acción en cero o más filas en cero o más tablas. 769 00:36:47,333 --> 00:36:48,208 AUDIENCIA: [inaudible] 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í que el pseudocódigo para algo al igual que podría ser esto. 773 00:36:58,450 --> 00:37:02,450 En su archivo PHP o su archivo de Python o su archivo de Java, 774 00:37:02,450 --> 00:37:09,210 que tendría código de pseudocódigo, o bloquea los arañazos como como, si las visitas de los usuarios 775 00:37:09,210 --> 00:37:19,870 acme.com/register~~V por primera vez, a continuación, insertar en los usuarios y así sucesivamente. 776 00:37:19,870 --> 00:37:22,619 Y nos gustaría traducir esto a más código concreto en el final. 777 00:37:22,619 --> 00:37:24,660 Pero, en realidad, tenemos todo los bloques de construcción aquí, 778 00:37:24,660 --> 00:37:27,680 a pesar de que estamos omitiendo algunos de los pasos de implementación. 779 00:37:27,680 --> 00:37:31,560 >> Así que déjame encontrar ningún fallo con lo que maravillosamente hizo hace un momento. 780 00:37:31,560 --> 00:37:36,470 Se ha creado una bonita tabla completa para los usuarios. 781 00:37:36,470 --> 00:37:38,920 Es cierto que podríamos aplicar en algunas maneras diferentes, 782 00:37:38,920 --> 00:37:43,030 pero has hecho nos llevó por la path-- y os digo, 783 00:37:43,030 --> 00:37:48,080 pero es probablemente mi fault-- de una justa aplicación de base de datos ineficiente. 784 00:37:48,080 --> 00:37:49,950 No es normalizó. 785 00:37:49,950 --> 00:37:52,320 >> Y por normalizada que quiero decir va a haber, 786 00:37:52,320 --> 00:37:57,380 con el tiempo, una redundancia significativa, y por lo tanto la ineficiencia, 787 00:37:57,380 --> 00:38:00,210 que es desperdicio de espacio. 788 00:38:00,210 --> 00:38:05,650 Sobre la base de sólo lo que se ve aquí, puede donde se le ha ocurrido esta pérdida de espacio 789 00:38:05,650 --> 00:38:08,710 se va a venir, con el tiempo, como se registran cada vez más usuarios 790 00:38:08,710 --> 00:38:10,860 para su sitio web? 791 00:38:10,860 --> 00:38:13,047 ¿Qué datos podrían ser redundante? 792 00:38:13,047 --> 00:38:19,084 793 00:38:19,084 --> 00:38:20,940 >> AUDIENCIA: [inaudible] 794 00:38:20,940 --> 00:38:22,686 >> DAVID MALAN: ¿Por qué quiere decir eso? 795 00:38:22,686 --> 00:38:23,561 AUDIENCIA: [inaudible] 796 00:38:23,561 --> 00:38:32,180 797 00:38:32,180 --> 00:38:32,930 DAVID MALAN: Sí. 798 00:38:32,930 --> 00:38:35,622 Y vamos a suponer para los fines de hoy que eso es cierto. 799 00:38:35,622 --> 00:38:38,330 Resulta que, y hemos aprendido esta de la manera difícil, que no es cierto. 800 00:38:38,330 --> 00:38:41,670 De alguna manera los múltiples ciudades tienen, De alguna manera, el mismo código postal, 801 00:38:41,670 --> 00:38:43,390 que rompe esta maravillosa intuición. 802 00:38:43,390 --> 00:38:46,180 Pero supongamos que es cierto, porque es casi siempre cierto. 803 00:38:46,180 --> 00:38:51,390 Así que supongamos que un código postal es siempre asociada a la misma ciudad 804 00:38:51,390 --> 00:38:53,600 y el Estado, que es una especie de la suposición razonable, 805 00:38:53,600 --> 00:38:54,840 pero incorrecta, resulta. 806 00:38:54,840 --> 00:38:57,310 Sin embargo, una suposición razonable para los propósitos de la actualidad. 807 00:38:57,310 --> 00:39:01,650 >> Entonces supongo que vivo en Cambridge, MA, de acuerdo con la tabla de este usuario, 808 00:39:01,650 --> 00:39:04,100 y supongamos que Lauren Scully vive en Cambridge, MA, 809 00:39:04,100 --> 00:39:06,120 y supongamos que Kareem vive en Cambridge, MA, 810 00:39:06,120 --> 00:39:10,400 Arwa y vive en Cambridge, MA, todos nosotros en 02138. 811 00:39:10,400 --> 00:39:15,890 ¿Por qué estamos recordando Cambridge, MA, 02138 para los cuatro de nosotros? 812 00:39:15,890 --> 00:39:18,903 Lo que debería ser suficiente para recordar? 813 00:39:18,903 --> 00:39:20,249 >> AUDIENCIA: [inaudible] 814 00:39:20,249 --> 00:39:21,540 DAVID MALAN: Sólo el código postal. 815 00:39:21,540 --> 00:39:25,080 Al igual que 02138 existe, porque sabes lo que podríamos hacer? 816 00:39:25,080 --> 00:39:32,650 Podríamos conseguir un poco de lujos y por aquí, defina otra tabla 817 00:39:32,650 --> 00:39:35,850 donde esto va a ser el nombre, esto va a ser el tipo, 818 00:39:35,850 --> 00:39:38,840 esto va a ser el de longitud, y de ahora en adelante, estoy 819 00:39:38,840 --> 00:39:42,900 va a llamar a este mi mesa ciudades. 820 00:39:42,900 --> 00:39:47,011 Esto fue llamado, de Por supuesto, mi tabla de usuarios. 821 00:39:47,011 --> 00:39:49,885 Y así lo debo poner aquí para mi mesa ciudades, qué te parece? 822 00:39:49,885 --> 00:39:53,605 823 00:39:53,605 --> 00:39:54,535 >> AUDIENCIA: [inaudible] 824 00:39:54,535 --> 00:39:55,930 >> DAVID MALAN: Sí. 825 00:39:55,930 --> 00:40:01,440 Así comprimir y estado y la ciudad. 826 00:40:01,440 --> 00:40:05,350 Y por lo que el tipo de aquí, nos dirá esto va a ser un char 5 de nuevo, 827 00:40:05,350 --> 00:40:06,750 sujeto al debate de la anterior. 828 00:40:06,750 --> 00:40:14,810 Esta será una enumeración, tal vez como antes, y la ciudad será un varchar 50. 829 00:40:14,810 --> 00:40:17,960 Y por eso ahora qué consigo borrar de esta tabla 830 00:40:17,960 --> 00:40:21,995 para eliminar esa ineficiencia? 831 00:40:21,995 --> 00:40:23,100 >> AUDIENCIA: [inaudible] 832 00:40:23,100 --> 00:40:23,850 DAVID MALAN: Niza. 833 00:40:23,850 --> 00:40:30,239 Estado y la ciudad desaparecen, por lo que he ahora eliminado la ineficiencia potencial 834 00:40:30,239 --> 00:40:33,280 para recordar de forma redundante, Cambridge, MA, Cambridge, MA, Cambridge, MA, 835 00:40:33,280 --> 00:40:35,712 Cambridge, MA, el cual, es de esperar nunca va a cambiar. 836 00:40:35,712 --> 00:40:37,670 E incluso si lo hace, es minorly molesto, ahora 837 00:40:37,670 --> 00:40:39,750 que tengo que cambiar en varias filas, 838 00:40:39,750 --> 00:40:43,770 mientras que aquí, sólo podía cambiarlo en un solo lugar. 839 00:40:43,770 --> 00:40:46,890 >> Ahora ¿cuál es el equilibrio, tal vez? 840 00:40:46,890 --> 00:40:48,020 Esto era muy práctico. 841 00:40:48,020 --> 00:40:50,730 Tenía todas mis datos muy bien juntos. 842 00:40:50,730 --> 00:40:53,644 Pero lo que es claramente el caso ahora? 843 00:40:53,644 --> 00:40:55,684 >> AUDIENCIA: [inaudible] 844 00:40:55,684 --> 00:40:58,100 DAVID MALAN: Exactamente, y estoy contento de que utilizó la palabra se unen, 845 00:40:58,100 --> 00:41:01,320 porque eso es en realidad la palabra clave, en el mundo de las bases de datos relacionales 846 00:41:01,320 --> 00:41:05,270 en SQL, que es una palabra real que podría escribir o al menos transmitir. 847 00:41:05,270 --> 00:41:09,280 Y de hecho, lo que tenemos que hacer ahora para seleccionar la información completa de David es 848 00:41:09,280 --> 00:41:19,700 algo así como de selección de estrellas usuarios, se unen a las ciudades, y ahora en-- 849 00:41:19,700 --> 00:41:24,010 Voy a mover simplemente a una segunda línea de modo que este es igual users.zip fits-- 850 00:41:24,010 --> 00:41:34,570 cities.zip, donde users.ID es igual a 1. 851 00:41:34,570 --> 00:41:35,550 >> Entonces, ¿qué está pasando? 852 00:41:35,550 --> 00:41:38,970 Es feo que mira, pero se puede tipo de leer de izquierda a derecha y de arriba abajo. 853 00:41:38,970 --> 00:41:41,030 Seleccione la estrella de los usuarios es el mismo que antes, 854 00:41:41,030 --> 00:41:42,930 pero no es parte de los usuarios, per se. 855 00:41:42,930 --> 00:41:45,910 Es de usuarios se unen a las ciudades. 856 00:41:45,910 --> 00:41:48,520 ¿Qué estoy uniendo esos dos tablas en? 857 00:41:48,520 --> 00:41:51,820 Bueno, al parecer, la mesas usuarios zip campo, 858 00:41:51,820 --> 00:41:54,810 y este período es simplemente especial la sintaxis para expresar esa idea, 859 00:41:54,810 --> 00:41:58,130 y esto es las tablas ciudades zip campo. 860 00:41:58,130 --> 00:42:01,580 Quiero los dos a ser iguales, pero quiero seleccione en última instancia, 861 00:42:01,580 --> 00:42:06,280 sólo las filas donde ID en la tabla de usuarios 862 00:42:06,280 --> 00:42:08,730 es igual a 1, que pasó a ser la mía. 863 00:42:08,730 --> 00:42:11,781 >> Y para ser claros, una programador, por lo general cuando 864 00:42:11,781 --> 00:42:14,780 codificar algo así como el número 1, porque de lo contrario sólo el sitio web 865 00:42:14,780 --> 00:42:17,630 apoya David o la primer usuario, 866 00:42:17,630 --> 00:42:20,720 En vez de ello hacer algo así como la identificación, donde 867 00:42:20,720 --> 00:42:22,510 esto representa una variables, algo que 868 00:42:22,510 --> 00:42:26,210 puede cambiar con el tiempo, similar en espíritu a lo que dije antes 869 00:42:26,210 --> 00:42:28,080 con este tipo de marcadores de posición. 870 00:42:28,080 --> 00:42:30,396 Pero por ahora sólo tendremos que codificar como 1. 871 00:42:30,396 --> 00:42:31,520 Y así, ¿qué significa esto? 872 00:42:31,520 --> 00:42:35,100 Pues bien, una buena manera de visualizar esto es que si esta mano es la tabla de usuarios, 873 00:42:35,100 --> 00:42:38,090 y esto es parte de las cremalleras mesa, estamos especie de finding-- 874 00:42:38,090 --> 00:42:41,330 y las puntas de los dedos son postal aquí, y las puntas de los dedos 875 00:42:41,330 --> 00:42:43,740 aquí están postal, eres tipo de enclavamiento se 876 00:42:43,740 --> 00:42:47,950 de manera que obtiene nuevamente el resultante tabla original, por verdaderamente unirse 877 00:42:47,950 --> 00:42:49,590 las dos tablas en el campo común. 878 00:42:49,590 --> 00:42:50,840 Y no tiene por qué ser postal. 879 00:42:50,840 --> 00:42:54,460 Podría ser cualquier otra cosa más, pero zip es bueno, porque uno, es corta, 880 00:42:54,460 --> 00:42:56,470 dos, que siempre es la misma longitud, por lo que hay 881 00:42:56,470 --> 00:43:02,270 una verdadera eficacia a lo Olivier propone aquí 882 00:43:02,270 --> 00:43:05,200 con la factorización de la cremallera, y [Inaudible] proponiendo que nos deshacemos 883 00:43:05,200 --> 00:43:07,110 de la ciudad y estados. 884 00:43:07,110 --> 00:43:11,370 >> Así que este es el proceso conocida como la normalización. 885 00:43:11,370 --> 00:43:14,171 Para cualquier duda sobre esto? 886 00:43:14,171 --> 00:43:16,170 Bien permítanme señalar este es el tipo de cosas, 887 00:43:16,170 --> 00:43:19,202 a pesar de que es bastante bajo nivel, esta discusión, que se podría pensar 888 00:43:19,202 --> 00:43:20,910 estás especie de conseguir perdido en la maleza, 889 00:43:20,910 --> 00:43:26,690 esta es una manifestación de un amplio oportunidad para los desarrolladores a ser malo. 890 00:43:26,690 --> 00:43:29,600 Y de hecho, aun cuando, en cursos que he impartido, cuando hemos tenido, 891 00:43:29,600 --> 00:43:32,290 por ejemplo, sin experiencia programadores de grado 892 00:43:32,290 --> 00:43:35,920 construir sitios web, a primera vista, los sitios web puede tener un aspecto estupendo. 893 00:43:35,920 --> 00:43:38,280 Y tienen toda la funcionalidad que habíamos pedido, 894 00:43:38,280 --> 00:43:40,650 los desarrolladores hicieron un buen trabajo. 895 00:43:40,650 --> 00:43:43,370 >> Pero no necesariamente saben lo suficiente sobre el diseño de bases de datos 896 00:43:43,370 --> 00:43:46,680 o que no pensaron duro lo suficiente acerca de los tipos de datos 897 00:43:46,680 --> 00:43:49,220 y los tipos de usuarios de las página web iba a tener, 898 00:43:49,220 --> 00:43:53,240 y nos encontramos, entonces, seis meses más tarde, después de que se han graduado o se mueven en, 899 00:43:53,240 --> 00:43:56,016 que maldita sea, nuestro sitio web es realmente, realmente lento. 900 00:43:56,016 --> 00:43:58,890 Y ni siquiera estoy hablando de tener millones o miles de usuarios. 901 00:43:58,890 --> 00:44:02,580 Me refiero a unos pocos cientos de usuarios en el campus, todos los cuales les gusta, por ejemplo, 902 00:44:02,580 --> 00:44:04,870 compras para los cursos de al mismo tiempo, son 903 00:44:04,870 --> 00:44:07,010 usando ese catálogo de cursos aplicación Mencioné 904 00:44:07,010 --> 00:44:10,410 y la cosa se está poniendo muy reducir la velocidad porque no había índices. 905 00:44:10,410 --> 00:44:13,740 No había estrellas rojas, por lo que hablar, o que no tenían necesariamente 906 00:44:13,740 --> 00:44:17,690 un factor fuera de datos comunes a obtener algunos ahorros de espacio. 907 00:44:17,690 --> 00:44:21,880 >> Y así, cuando un desarrollador de proceder a la instrucción o persona base de datos o similares, 908 00:44:21,880 --> 00:44:25,864 el tipo de preguntas que pensar a través es par, al revisar el código de otra, 909 00:44:25,864 --> 00:44:28,530 decir, no necesariamente mirar a través de la totalidad de su código, pero decir, 910 00:44:28,530 --> 00:44:30,154 vamos a ver a través de las tablas de base de datos. 911 00:44:30,154 --> 00:44:31,150 ¿Qué estás almacenando? 912 00:44:31,150 --> 00:44:33,941 Y luego decir, bueno, espera un minuto, ¿Por qué utiliza un número entero? 913 00:44:33,941 --> 00:44:36,224 ¿Qué pasa si tenemos 4 mil millones y 1 de las filas? 914 00:44:36,224 --> 00:44:38,140 Y este tipo de preguntas es una oportunidad 915 00:44:38,140 --> 00:44:40,170 al tipo de empujar hacia atrás y tener una idea de donde 916 00:44:40,170 --> 00:44:42,300 si no se siente cómodo haciendo que, tener a alguien más técnico 917 00:44:42,300 --> 00:44:45,425 hacer estas preguntas, de si es o no la persona que realmente sabe sus cosas. 918 00:44:45,425 --> 00:44:47,890 Y este es el tipo de cosas, también, que las personas 919 00:44:47,890 --> 00:44:50,540 en el Internet que son autodidactas, tal vez 920 00:44:50,540 --> 00:44:53,920 aprender con menos frecuencia, porque no tienen necesariamente que proceder a través de ella 921 00:44:53,920 --> 00:44:56,630 como mucho, ya que se puede conseguir la base de datos en funcionamiento, 922 00:44:56,630 --> 00:44:58,880 pero a menos que haya leído arriba en tutoriales o estado 923 00:44:58,880 --> 00:45:01,880 contado sobre la normalización de bases de datos y la indexación y el rendimiento, 924 00:45:01,880 --> 00:45:04,255 estos son el tipo de cosas que van a hacer daño. 925 00:45:04,255 --> 00:45:07,480 Y se podría pensar, o un mal ingeniero podría decir, oh, bueno, mejor salario 926 00:45:07,480 --> 00:45:09,600 para una base de datos más grande o una base de datos más rápido 927 00:45:09,600 --> 00:45:13,360 o simplemente tirar el dinero en esto, la escala vertical, no es necesariamente así. 928 00:45:13,360 --> 00:45:16,920 Si vas en-- y se puede ir en después de que los índices fact-- y añadir, 929 00:45:16,920 --> 00:45:20,320 y puede ser que tome un par de horas para el base de datos para construir que los nuevos datos 930 00:45:20,320 --> 00:45:24,100 estructura que he aludido antes, todavía se puede solucionar este problema después del hecho, 931 00:45:24,100 --> 00:45:26,180 que aquí es donde se empezar a distinguir 932 00:45:26,180 --> 00:45:28,830 buenos diseñadores de mala diseñadores, no sólo estéticamente, 933 00:45:28,830 --> 00:45:32,972 pero en cuanto al rendimiento también. 934 00:45:32,972 --> 00:45:33,555 ¿Alguna pregunta? 935 00:45:33,555 --> 00:45:36,420 936 00:45:36,420 --> 00:45:37,480 ¿No? 937 00:45:37,480 --> 00:45:41,980 Así que para NoSQL, que era el otro tipo de la base de datos a la que he aludido antes, 938 00:45:41,980 --> 00:45:43,490 usted no tiene filas y columnas. 939 00:45:43,490 --> 00:45:47,000 En su lugar, usted tendría algo que se ve un poco de la misma familia. 940 00:45:47,000 --> 00:45:48,630 Voy a utilizar la sintaxis común. 941 00:45:48,630 --> 00:45:51,270 Las llaves resultan ser utilizado aquí mucho. 942 00:45:51,270 --> 00:45:55,400 Es posible que tenga algo como primer nombre es David, 943 00:45:55,400 --> 00:46:00,180 es posible que tenga la última nombre es Malan, citas, 944 00:46:00,180 --> 00:46:07,530 es posible que tenga ID es-- perdón, whoops-- ID es 1, 945 00:46:07,530 --> 00:46:13,410 El correo electrónico es malan@harvard.edu, y no lo haré moleste en escribir el resto, y luego 946 00:46:13,410 --> 00:46:14,380 algunas otras cosas. 947 00:46:14,380 --> 00:46:17,380 >> En otras palabras, esto es una representación textual 948 00:46:17,380 --> 00:46:20,720 de lo que llamaríamos general un objeto en un programa de ordenador. 949 00:46:20,720 --> 00:46:26,079 Y es un objeto general, sólo una colección de pares de valores clave. 950 00:46:26,079 --> 00:46:27,370 Así que de nuevo, este tema recurrente. 951 00:46:27,370 --> 00:46:30,440 Vimos pares de valores clave en HTML, vimos pares de valores clave ahora 952 00:46:30,440 --> 00:46:34,020 en el contexto de las bases de datos, y vio pares de valores clave en el contexto 953 00:46:34,020 --> 00:46:35,970 de, creo, una lengua el día de hoy. 954 00:46:35,970 --> 00:46:36,890 Se presenta de nuevo. 955 00:46:36,890 --> 00:46:39,620 Y de hecho, eso es realmente qué datos se reduce a, 956 00:46:39,620 --> 00:46:44,240 datos y metadatos, o valores y llaves, respectivamente. 957 00:46:44,240 --> 00:46:47,430 >> Por lo que una no relacional base de datos, basado algo 958 00:46:47,430 --> 00:46:50,680 en los objetos, en el que sólo se aglutinan todo junto y ponerlo 959 00:46:50,680 --> 00:46:55,640 en la memoria, generalmente se representado como, o pensado, ya que esto. 960 00:46:55,640 --> 00:47:00,500 Y lo dejo ahora como una tipo de enfoque alternativo. 961 00:47:00,500 --> 00:47:03,750 Y uno no es necesariamente mejor que el otro. 962 00:47:03,750 --> 00:47:07,310 De hecho, muy en boga en estos días son los sistemas de bases de datos 963 00:47:07,310 --> 00:47:11,942 como MongoDB y Redis y unos pocos otras herramientas similares, de libre disposición, 964 00:47:11,942 --> 00:47:13,400 pero son cada vez más de moda. 965 00:47:13,400 --> 00:47:18,850 En parte debido a que ofrecen adicional cuenta con más de estos enfoques tabulares, 966 00:47:18,850 --> 00:47:20,850 sino también porque son un poco más fácil de usar, 967 00:47:20,850 --> 00:47:24,099 porque usted no tiene que pensar tan duro sobre muchas de estas decisiones de diseño. 968 00:47:24,099 --> 00:47:25,970 Así que más y menos. 969 00:47:25,970 --> 00:47:29,740 Así cuenta de que hay opciones más allá de lo que acaba de pasar tiempo en. 970 00:47:29,740 --> 00:47:32,310 >> Así que vamos a hacer esto. 971 00:47:32,310 --> 00:47:37,870 Vamos transición un poco más volver ahora a la programación web, 972 00:47:37,870 --> 00:47:40,470 de modo que la clase de la conclusión hoy con algo 973 00:47:40,470 --> 00:47:43,930 Eso es un poco práctico, llenando en algunas lagunas de ayer. 974 00:47:43,930 --> 00:47:45,340 Déjame ir a esta primera. 975 00:47:45,340 --> 00:47:49,310 Así recordar que ayer teníamos un poco de HTML canónica 976 00:47:49,310 --> 00:47:55,110 páginas que tenían inicialmente, sólo se HTML y CSS tenido secundariamente, 977 00:47:55,110 --> 00:47:56,620 Hojas de estilo en cascada. 978 00:47:56,620 --> 00:47:59,830 Esta es una nueva etiqueta que no lo hicimos ver ayer, o detenerse en, 979 00:47:59,830 --> 00:48:01,490 denominada etiqueta de script. 980 00:48:01,490 --> 00:48:05,830 >> Resulta que en realidad se puede incrustar una lenguaje llamado JavaScript en su Web 981 00:48:05,830 --> 00:48:08,310 página y hacer que su web páginas hacen algo. 982 00:48:08,310 --> 00:48:09,710 Entonces, ¿qué quiero decir con esto? 983 00:48:09,710 --> 00:48:12,630 Bueno, déjame ir adelante y sólo prestado este código por un momento. 984 00:48:12,630 --> 00:48:15,860 Voy a entrar en Cloud9, sin necesidad ir allí a sí mismos por el momento, 985 00:48:15,860 --> 00:48:21,350 y yo voy a llamar a este alert.HTML. 986 00:48:21,350 --> 00:48:23,650 Voy a pegar en mi archivo aquí. 987 00:48:23,650 --> 00:48:32,070 Y sólo para aclarar lo que he hecho, y mucho me vaya a esta dirección y voy a alertar, 988 00:48:32,070 --> 00:48:33,870 y se ve el mundo Hola. 989 00:48:33,870 --> 00:48:35,440 >> Pero esto es un poco decepcionante. 990 00:48:35,440 --> 00:48:37,410 quiero hacer algo un poco diferente. 991 00:48:37,410 --> 00:48:40,610 Así que voy a hacer esto realidad. 992 00:48:40,610 --> 00:48:43,820 Voy a entrar aquí e, y en medio de mis etiquetas de script, 993 00:48:43,820 --> 00:48:53,460 decir alert ( 'hola, mundo'); de modo previo aviso que es un poco descuidado, pero tengo HTML, 994 00:48:53,460 --> 00:48:56,180 dentro de los cuales es una lenguaje llamado JavaScript, 995 00:48:56,180 --> 00:48:59,420 y esto es lo que se llama una llamada a la función o llamada a procedimiento. 996 00:48:59,420 --> 00:49:04,500 Este es un verbo, literalmente, en este caso, y yo estoy invocando la funcionalidad de código 997 00:49:04,500 --> 00:49:06,310 que otra persona escribió. 998 00:49:06,310 --> 00:49:09,630 >> Así que la funcionalidad es una alerta, así que vamos a esta página 999 00:49:09,630 --> 00:49:14,046 ahora y haga clic en Recargar, y ahora ver un poco de interactividad. 1000 00:49:14,046 --> 00:49:15,420 Es una especie de vieja escuela y feo. 1001 00:49:15,420 --> 00:49:18,580 Este tipo de le recuerda el ventanas emergentes, tal vez, de antaño 1002 00:49:18,580 --> 00:49:22,030 pero sí hacer algo un poco más programático. 1003 00:49:22,030 --> 00:49:26,940 >> Así que más que eso, vamos a hacer algo más interesante. 1004 00:49:26,940 --> 00:49:30,980 Déjame ir aquí y deshacerse de este. 1005 00:49:30,980 --> 00:49:33,840 Y voy a seguir adelante y crear una forma como lo hicimos ayer. 1006 00:49:33,840 --> 00:49:34,840 En realidad, ¿sabes qué? 1007 00:49:34,840 --> 00:49:37,350 Voy a entrar en google.html, que nos 1008 00:49:37,350 --> 00:49:43,027 comenzó el día de ayer, que parecía esto, a través de la cual se realizaron búsquedas de gato 1009 00:49:43,027 --> 00:49:45,360 Pero Tenga en cuenta que hay una especie de error en la versión actual. 1010 00:49:45,360 --> 00:49:49,770 Funciona para los gatos, pero supongamos que Yo no coopero y escribo nada, 1011 00:49:49,770 --> 00:49:53,290 y yo simplemente haga clic en enviar. 1012 00:49:53,290 --> 00:49:54,540 Eso es un poco extraño comportamiento. 1013 00:49:54,540 --> 00:49:57,300 Me llevó a la verdadera Google, no me dio un mensaje de error. 1014 00:49:57,300 --> 00:50:00,590 Me gustaría decirle al usuario es necesario que nos dará un valor. 1015 00:50:00,590 --> 00:50:01,780 >> Así que, ¿cómo podemos hacer esto? 1016 00:50:01,780 --> 00:50:06,790 Así me dejó ir de nuevo en Cloud9 y me dejó ir en la parte superior de mi página 1017 00:50:06,790 --> 00:50:11,980 y añadir una etiqueta de script como este, donde Voy a escribir algo de código JavaScript. 1018 00:50:11,980 --> 00:50:15,420 Y voy a hacer lo siguiente. 1019 00:50:15,420 --> 00:50:22,910 Si (document.getelementByID-- y el recuerdo que hemos hablado anteriormente de que, 1020 00:50:22,910 --> 00:50:23,960 esa función. 1021 00:50:23,960 --> 00:50:25,310 Lo ID Qué quiero conseguir? 1022 00:50:25,310 --> 00:50:33,050 Quiero conseguir q, y voy a por ejemplo es igual a nada, así- 1023 00:50:33,050 --> 00:50:38,220 En realidad me deja utilizar comillas dobles sólo para consistency-- es igual a nada, 1024 00:50:38,220 --> 00:50:46,650 a continuación, alert ( "Por favor, escriba una consulta") aquí. 1025 00:50:46,650 --> 00:50:49,200 >> Así que tengo lo que parece ser algo así como una condición. 1026 00:50:49,200 --> 00:50:51,410 Hemos visto esta idea general en Scratch. 1027 00:50:51,410 --> 00:50:54,240 Es como uno de los rompecabezas piezas que se parecía a este. 1028 00:50:54,240 --> 00:50:55,780 Y ¿qué estoy diciendo? 1029 00:50:55,780 --> 00:50:59,520 Bueno, aquí abajo, noto que estoy vamos a hacer lo siguiente. 1030 00:50:59,520 --> 00:51:02,790 Voy a dar este formulario campo no sólo un nombre de q, que 1031 00:51:02,790 --> 00:51:06,630 es lo que se transmite a Google, pero estoy va a dar un identificador local, 1032 00:51:06,630 --> 00:51:07,630 también llamado q. 1033 00:51:07,630 --> 00:51:11,780 Pero podría llamar a esto todo lo que quiera, yo sólo voy a mantener la sencillez 1034 00:51:11,780 --> 00:51:14,570 y también llamarlo q, sólo por simplicidad. 1035 00:51:14,570 --> 00:51:17,650 >> Y ahora me voy a hacer algo un poco más. 1036 00:51:17,650 --> 00:51:22,600 En los campos de formulario aquí, voy a añadir lo que se llama un controlador de eventos. 1037 00:51:22,600 --> 00:51:32,260 En presenten, quiero llamar una función llamada de validación. 1038 00:51:32,260 --> 00:51:35,520 Esto no existe, sin embargo, esta palabra, o este verbo de validación, 1039 00:51:35,520 --> 00:51:38,560 porque lo que voy a hacer aquí ahora es añadir algo de código. 1040 00:51:38,560 --> 00:51:42,200 >> Voy a decir validar la función. 1041 00:51:42,200 --> 00:51:48,280 Voy a sangrar esto y añadir otro llave de aquí y otro aquí. 1042 00:51:48,280 --> 00:51:50,110 Consideremos lo que esto está haciendo ahora. 1043 00:51:50,110 --> 00:51:54,210 Tengo ahora-- pensar en esto como mi creado propia pieza del rompecabezas que no lo hicieron con anterioridad 1044 00:51:54,210 --> 00:51:57,440 existo, y yo he llamado a este rompecabezas piece la pieza del rompecabezas de validación. 1045 00:51:57,440 --> 00:52:01,620 Su propósito en la vida es ejecutar las cuatro líneas de código dentro de ella. 1046 00:52:01,620 --> 00:52:04,940 >> Si document.getElementById así conceptualmente, 1047 00:52:04,940 --> 00:52:09,380 que va a entrar en el elemento, el elemento HTML cuya única 1048 00:52:09,380 --> 00:52:12,930 idea es simplemente q ya continuación, a pesar de que la sintaxis es un poco raro, 1049 00:52:12,930 --> 00:52:16,430 que es igual a igual sólo significa iguales. 1050 00:52:16,430 --> 00:52:20,950 Esto significa que si el elemento con el identificador único de q, cuando se incorporó, 1051 00:52:20,950 --> 00:52:25,700 no tiene ningún valor, sólo es igual entre comillas, nada allí, 1052 00:52:25,700 --> 00:52:27,170 entonces, ¿qué es lo que quiero hacer? 1053 00:52:27,170 --> 00:52:29,360 Quiero gritar al usuario. 1054 00:52:29,360 --> 00:52:31,710 >> Y no vamos a entrar aquí con gran detalle. 1055 00:52:31,710 --> 00:52:32,960 Voy a volver falsa. 1056 00:52:32,960 --> 00:52:34,380 Eso es un error. 1057 00:52:34,380 --> 00:52:38,746 Si no, voy a volver realidad. 1058 00:52:38,746 --> 00:52:40,120 Así que, o funcionaba o no lo hizo. 1059 00:52:40,120 --> 00:52:41,800 Falsa o verdadera. 1060 00:52:41,800 --> 00:52:47,820 Y ahora, si yo no he cometido ningún error, me deja guardar esto y vuelva a cargar esta. 1061 00:52:47,820 --> 00:52:50,940 Y permítanme que vuelva a comprobar Yo no, de hecho, hago ninguna errata, 1062 00:52:50,940 --> 00:52:52,690 por lo que no avergonzarme. 1063 00:52:52,690 --> 00:52:54,240 Vamos a ver si esto funciona. 1064 00:52:54,240 --> 00:52:56,930 >> Así que ahora voy a escribir gatos. 1065 00:52:56,930 --> 00:52:59,421 Todavía funciona, o funciona la mitad, por lo menos. 1066 00:52:59,421 --> 00:53:02,170 Ahora voy a volver a cargarlo, y ahora dejo a tratar de presentar sin escribir 1067 00:53:02,170 --> 00:53:05,860 cualquier cosa-- maldita sea, que se rompió. 1068 00:53:05,860 --> 00:53:06,430 Un momento. 1069 00:53:06,430 --> 00:53:09,380 1070 00:53:09,380 --> 00:53:12,660 Permítanme abrir la consola, [Inaudible] iniciar la sesión, vuelva a cargar la página. 1071 00:53:12,660 --> 00:53:13,576 Déjame probarlo otra vez. 1072 00:53:13,576 --> 00:53:17,000 1073 00:53:17,000 --> 00:53:17,501 Oh maldita sea. 1074 00:53:17,501 --> 00:53:18,000 Olvidé. 1075 00:53:18,000 --> 00:53:18,630 Hice un error tipográfico. 1076 00:53:18,630 --> 00:53:20,760 Recuerdo lo que es. 1077 00:53:20,760 --> 00:53:21,350 .valor. 1078 00:53:21,350 --> 00:53:27,060 Quise decir si el valor del elemento cuyo ID es q 1079 00:53:27,060 --> 00:53:29,800 es igual que, a continuación, gritar al usuario. 1080 00:53:29,800 --> 00:53:31,870 >> Así que ahora que me tienen el aliento de nuevo. 1081 00:53:31,870 --> 00:53:33,480 Aquí vamos. 1082 00:53:33,480 --> 00:53:34,130 Aquí vamos. 1083 00:53:34,130 --> 00:53:35,010 Por favor, escriba una consulta. 1084 00:53:35,010 --> 00:53:36,840 Así que no me está dejando pasar. 1085 00:53:36,840 --> 00:53:40,210 Puedo ser un poco juguetón con esto, y en lugar de la comprobación de ningún valor, 1086 00:53:40,210 --> 00:53:46,720 Puedo decir algo como: No más búsqueda de los gatos, 1087 00:53:46,720 --> 00:53:51,150 y ahora nos podemos dejar más juguetonamente la búsqueda de usuarios para los perros si él o ella 1088 00:53:51,150 --> 00:53:57,490 quiere, o si entro aquí y buscar gatos, ahora no puedo. 1089 00:53:57,490 --> 00:53:58,690 >> ¿Cuál es la comida para llevar en esta lista? 1090 00:53:58,690 --> 00:54:03,010 Así que uno, hemos introducido en nuestro mundo de HTML y CSS, 1091 00:54:03,010 --> 00:54:04,320 funcionalidad de programación. 1092 00:54:04,320 --> 00:54:06,300 Yo en realidad puede ahora tomar decisiones en el código. 1093 00:54:06,300 --> 00:54:10,570 Anteriormente, todo lo que pude hacer es marcar el contenido textual o contenido gráfico 1094 00:54:10,570 --> 00:54:13,080 y decirle lo que debe buscar como y dónde se debe mostrar. 1095 00:54:13,080 --> 00:54:16,650 Ahora realmente puedo pedir preguntas de la página web 1096 00:54:16,650 --> 00:54:20,010 y tomar decisiones basadas en ella, y pedir al usuario 1097 00:54:20,010 --> 00:54:22,780 si tengo que gritar a él o ella. 1098 00:54:22,780 --> 00:54:28,740 >> Así que vamos a intentar algo por nuestra cuenta con este. 1099 00:54:28,740 --> 00:54:33,350 Vaya por delante, vamos a abrir hasta la siguiente diapositiva aquí, y simplemente señalar una cosa. 1100 00:54:33,350 --> 00:54:37,250 Al igual que con CSS, podemos factorizar nuestro código JavaScript en un archivo separado, 1101 00:54:37,250 --> 00:54:40,660 se puede hacer la misma cosa con JavaScript como con CSS. 1102 00:54:40,660 --> 00:54:44,520 Y se utiliza que el uso de una fuente atributo de la etiqueta de script. 1103 00:54:44,520 --> 00:54:46,540 Pero no vamos a complicar las cosas por ahora. 1104 00:54:46,540 --> 00:54:50,440 En cambio, si pudiera No vaya a esta página, 1105 00:54:50,440 --> 00:55:02,690 pero- déjame pasar esto alrededor de order-- ir a, si se pudiera, esta página aquí. 1106 00:55:02,690 --> 00:55:03,592 Esta URL aquí. 1107 00:55:03,592 --> 00:55:04,550 Está en las diapositivas de hoy en día. 1108 00:55:04,550 --> 00:55:07,133 Puede que tenga que recargar porque He añadido un par de cosas. 1109 00:55:07,133 --> 00:55:09,970 1110 00:55:09,970 --> 00:55:13,890 >> Pero ir allí donde esperan algunos puzzles. 1111 00:55:13,890 --> 00:55:16,670 Y esto nos dará una oportunidad, en un contexto algo más divertido, 1112 00:55:16,670 --> 00:55:20,610 a incursionar con algo de JavaScript. 1113 00:55:20,610 --> 00:55:25,505 Y cuando llegue allí, Voy a explicar lo que le espera. 1114 00:55:25,505 --> 00:55:47,350 1115 00:55:47,350 --> 00:55:47,850 Obtener verde. 1116 00:55:47,850 --> 00:56:03,063 1117 00:56:03,063 --> 00:56:03,562 Conjunto azul. 1118 00:56:03,562 --> 00:56:11,030 1119 00:56:11,030 --> 00:56:13,930 Establece verde, roja fija. 1120 00:56:13,930 --> 00:56:19,220 1121 00:56:19,220 --> 00:56:20,220 Vaya. 1122 00:56:20,220 --> 00:56:22,330 Lo siento. 1123 00:56:22,330 --> 00:56:27,630 >> Esta es la medida de nuestra documentación para este desafío. 1124 00:56:27,630 --> 00:56:29,920 Y esto va a funcionar de la siguiente manera. 1125 00:56:29,920 --> 00:56:33,340 Así que lo que tienes en este la página es un manojo entero 1126 00:56:33,340 --> 00:56:38,024 rompecabezas de imagen por un compañero en la Universidad de Stanford. 1127 00:56:38,024 --> 00:56:41,190 Así que lo que estamos viendo aquí es casi tipo de uno de esos rompecabezas de ojo mágico, 1128 00:56:41,190 --> 00:56:43,815 pero si sólo mira fijamente él, nada va a estallar hacia fuera en usted. 1129 00:56:43,815 --> 00:56:46,000 Más bien, algo es escondido en esta imagen. 1130 00:56:46,000 --> 00:56:47,790 Y que está escondido de la siguiente manera. 1131 00:56:47,790 --> 00:56:51,740 Imágenes, como ustedes saben, pueden ser compuesta de sólo tres colores. 1132 00:56:51,740 --> 00:56:53,346 Algunos roja, algo de azul, y un poco de verde. 1133 00:56:53,346 --> 00:56:55,220 Y podemos hacer toda la colores del arco iris 1134 00:56:55,220 --> 00:56:57,570 mediante la mezcla de los tres colores de alguna manera. 1135 00:56:57,570 --> 00:57:01,940 >> Así que esto se ve sobre todo verde y azul, pero como dice Nick aquí, 1136 00:57:01,940 --> 00:57:04,060 esta imagen Rompecabezas de hierro es un rompecabezas. 1137 00:57:04,060 --> 00:57:06,780 Contiene una imagen de algo famoso, sin embargo, 1138 00:57:06,780 --> 00:57:08,310 la imagen ha sido distorsionada. 1139 00:57:08,310 --> 00:57:11,500 El objeto es famoso en los valores de rojo. 1140 00:57:11,500 --> 00:57:13,810 valores Sin embargo, el rojo Todos hemos sido dividido por 10. 1141 00:57:13,810 --> 00:57:16,230 Por lo que son demasiado pequeños en un factor de 10. 1142 00:57:16,230 --> 00:57:18,280 Así, en otras palabras, Nick tomó una imagen original, 1143 00:57:18,280 --> 00:57:21,500 y él desaturado todo del rojo de ella, 1144 00:57:21,500 --> 00:57:23,850 la reducción de la cantidad de rojo tinta, si se quiere, en el mismo. 1145 00:57:23,850 --> 00:57:26,060 >> Los valores de color azul y verde están a sólo carece de sentido, 1146 00:57:26,060 --> 00:57:30,000 valores aleatorios, alias diseñados ruido para oscurecer la imagen real. 1147 00:57:30,000 --> 00:57:32,250 Así que lo que Nick hizo fue bajó el tono del rojo y luego 1148 00:57:32,250 --> 00:57:34,380 que acaba de lanzar al azar cantidades de azul y verde 1149 00:57:34,380 --> 00:57:37,590 en la imagen para tipo de oscura lo que es en realidad todavía existe. 1150 00:57:37,590 --> 00:57:41,089 Debe deshacer estas distorsiones para revelar la imagen. 1151 00:57:41,089 --> 00:57:44,255 En primer lugar, establecer todos los valores de color azul y verde a cero para sacarlos del camino, 1152 00:57:44,255 --> 00:57:48,700 y ver el resultado. Entonces multiplicar cada valor de rojo por 10, 1153 00:57:48,700 --> 00:57:51,720 escalar de nuevo hasta aproximadamente igual a su valor final. 1154 00:57:51,720 --> 00:57:53,035 ¿Cuál es el objeto famosa? 1155 00:57:53,035 --> 00:57:57,920 >> Así que todos ustedes tienen este rectángulo en su navegador en este momento. 1156 00:57:57,920 --> 00:58:00,830 Y observe que hay una cierta código de arranque, por así decirlo. 1157 00:58:00,830 --> 00:58:04,370 Este es el código JavaScript que Nick ha escrito para usted. 1158 00:58:04,370 --> 00:58:07,250 Y el aviso de que hay una línea en el medio que 1159 00:58:07,250 --> 00:58:10,380 comienza con una barra barra, eso es lo que generalmente se llama un comentario. 1160 00:58:10,380 --> 00:58:14,660 Significa que es una frase para el programador que no tiene ningún significado funcional. 1161 00:58:14,660 --> 00:58:16,520 Es sólo una señal visual para el ser humano. 1162 00:58:16,520 --> 00:58:18,670 >> Para que pueda seguir adelante y eliminar sólo esa línea, 1163 00:58:18,670 --> 00:58:22,214 y ser super cuidado de no borrar o cambiar cualquier otra cosa. 1164 00:58:22,214 --> 00:58:25,130 Y me dejaron de caminar a través de lo que hace este código y lo dejaré 1165 00:58:25,130 --> 00:58:28,580 a usted para averiguar la imagen secreta. 1166 00:58:28,580 --> 00:58:32,226 Esta primera línea aquí que acabo de resaltada le da la siguiente. 1167 00:58:32,226 --> 00:58:34,100 En el lado izquierdo, usted tiene lo que se llama 1168 00:58:34,100 --> 00:58:39,140 una variable que tiene Nick arbitrariamente, pero razonablemente llamada para una imagen im. 1169 00:58:39,140 --> 00:58:41,660 Al lado derecho de ese signo igual, 1170 00:58:41,660 --> 00:58:45,240 que dice dame un nuevo Lo dijeron ellos "imagen simple". 1171 00:58:45,240 --> 00:58:49,680 >> Imagen simple, en este contexto es lo que se llama una clase, así, 1172 00:58:49,680 --> 00:58:53,910 que es como una especie de class-- técnicamente un prototype-- pero en realidad, 1173 00:58:53,910 --> 00:58:58,000 esto me está dando un nuevo objeto, los contenidos de las cuales son el archivo, 1174 00:58:58,000 --> 00:58:59,610 hierro-puzzle.png. 1175 00:58:59,610 --> 00:59:03,190 En otras palabras, Nick ha creado esta noción de una simple imagen 1176 00:59:03,190 --> 00:59:05,920 de manera que podamos, para pedagógica propósitos, juegan con la imagen 1177 00:59:05,920 --> 00:59:09,790 y cambiar su color rojo, valores de verde, y azul. 1178 00:59:09,790 --> 00:59:11,750 >> Y ¿cómo nos va eso? 1179 00:59:11,750 --> 00:59:15,360 Esta sintaxis tanto críptica aquí es algo así como el bloque de repetición 1180 00:59:15,360 --> 00:59:19,140 que algunos de ustedes vieron en Scratch anteriormente hoy en día, donde se puede repetir 10 veces. 1181 00:59:19,140 --> 00:59:22,220 En este caso, Nick no tiene hardcodear un número como 10. 1182 00:59:22,220 --> 00:59:28,020 En su lugar, está diciendo, inicializar una variable llamada x a 0, 1183 00:59:28,020 --> 00:59:33,180 comprobar si x es menor que la anchura de la imagen. 1184 00:59:33,180 --> 00:59:38,160 >> Y así, para ser más adecuada, la imagen es variables, punto significa ir dentro de ella 1185 00:59:38,160 --> 00:59:40,900 y obtener su anchura, y luego paréntesis de apertura, cerrado 1186 00:59:40,900 --> 00:59:43,687 paren es sólo la forma de un programador de decir esto es una función. 1187 00:59:43,687 --> 00:59:44,520 Este es un procedimiento. 1188 00:59:44,520 --> 00:59:46,430 Esta es la funcionalidad alguien escribió. 1189 00:59:46,430 --> 00:59:48,570 Usarlo y me devuelva una respuesta. 1190 00:59:48,570 --> 00:59:53,610 Y entonces x ++ es una forma elegante de diciendo, después de haber hecho esto una vez, 1191 00:59:53,610 --> 00:59:55,850 incrementar x por 1. 1192 00:59:55,850 --> 00:59:58,760 En otras palabras, este es la forma de un programador 1193 00:59:58,760 --> 01:00:05,760 de inducir un bucle que es ir para repetir 1194 01:00:05,760 --> 01:00:10,410 todas las columnas de una imagen. 1195 01:00:10,410 --> 01:00:14,790 >> Una imagen es sólo una rejilla de puntos, filas y columnas de puntos. 1196 01:00:14,790 --> 01:00:18,270 Esta es una forma de la iteración sobre todo de aquellas columnas. 1197 01:00:18,270 --> 01:00:20,770 Y en el interior, Mientras tanto, estamos iterando 1198 01:00:20,770 --> 01:00:24,030 sobre las alturas, aquí y aquí y aquí. 1199 01:00:24,030 --> 01:00:29,442 Así que esto es sólo una forma de Traipsing, casi como una máquina de escribir de la escuela, 1200 01:00:29,442 --> 01:00:32,230 que sólo tiene que ir sobre el imagen completa de forma iterativa. 1201 01:00:32,230 --> 01:00:36,370 Incluso eso no es del todo completamente claro, acaba de tomar en la fe, por ahora, 1202 01:00:36,370 --> 01:00:38,880 que esas tres líneas de código juntos son 1203 01:00:38,880 --> 01:00:43,090 va a permitir que usted mire de forma iterativa en cada pixel, cada punto en la imagen. 1204 01:00:43,090 --> 01:00:43,790 >> ¿Qué es un píxel? 1205 01:00:43,790 --> 01:00:46,250 Bueno, para ser claros, si miramos en el original y hacer un zoom, 1206 01:00:46,250 --> 01:00:49,060 si realmente pone sus ojos a la pantalla del ordenador, eso es 1207 01:00:49,060 --> 01:00:53,510 Sólo un montón de puntos, varios mil puntos empacados juntos allí. 1208 01:00:53,510 --> 01:00:56,180 Y ¿a qué estás a punto de hacer? 1209 01:00:56,180 --> 01:00:59,240 Cada uno de esos puntos, una definición final, 1210 01:00:59,240 --> 01:01:06,350 es el resultado de lo que es en general denominado RGB, rojo, verde, azul, que 1211 01:01:06,350 --> 01:01:09,940 de nuevo, se pueden combinar para darle cualquier número de colores. 1212 01:01:09,940 --> 01:01:13,200 >> De hecho, si usted recuerda desde hace muchos, muchos años, 1213 01:01:13,200 --> 01:01:17,320 pantallas de proyección, como estas cosas solía tener no uno sino tres lentes. 1214 01:01:17,320 --> 01:01:20,700 Uno de ellos escupir luz roja, una de ellos escupen luz verde, una de ellas 1215 01:01:20,700 --> 01:01:21,600 escupir luz azul. 1216 01:01:21,600 --> 01:01:24,391 Y si estuviera en una escuela media como si estuviera en el que nunca había 1217 01:01:24,391 --> 01:01:27,000 alineada correctamente, eras Siempre viendo películas de historia 1218 01:01:27,000 --> 01:01:29,770 que eran ligeramente distorsionada, porque los tres colores no eran 1219 01:01:29,770 --> 01:01:30,970 combinando correctamente. 1220 01:01:30,970 --> 01:01:36,330 >> Pero resulta que cada uno de estos valores de rojo, verde y azul, 1221 01:01:36,330 --> 01:01:37,980 puede tener un número asociado con ellos. 1222 01:01:37,980 --> 01:01:42,500 Por ejemplo, 0 para el rojo significa que no hay rojo, 0 para el verde significa que no hay verde, 1223 01:01:42,500 --> 01:01:45,120 y 0 para el azul significa que no hay azul. 1224 01:01:45,120 --> 01:01:49,403 Así que si usted no tiene color rojo, sin verde, y no hay azul, de qué color tiene? 1225 01:01:49,403 --> 01:01:51,009 >> AUDIENCIA: [inaudible] 1226 01:01:51,009 --> 01:01:52,800 DAVID MALAN: Por favor Esperamos que sí, que es blanco. 1227 01:01:52,800 --> 01:01:55,333 Por desgracia, este operates-- lo siento? 1228 01:01:55,333 --> 01:01:56,380 >> AUDIENCIA: [inaudible] 1229 01:01:56,380 --> 01:01:58,630 DAVID MALAN: ¿Así que en realidad tienen negro, en este caso. 1230 01:01:58,630 --> 01:02:01,530 Así que si usted no tiene ninguno de estos colores encendidos, tiene negro. 1231 01:02:01,530 --> 01:02:06,510 Sin embargo, si usted tiene, digamos que mucho de ellos, al igual que una gran cantidad de rojo, 255 de la misma, 1232 01:02:06,510 --> 01:02:10,340 mucho verde, y mucho de azul, que es de color blanco. 1233 01:02:10,340 --> 01:02:12,230 Así que estos son los dos extremos. 1234 01:02:12,230 --> 01:02:17,460 Así por esta lógica, si tengo mucho de rojo y verde y no hay azul, 1235 01:02:17,460 --> 01:02:18,485 de qué color es? 1236 01:02:18,485 --> 01:02:19,360 AUDIENCIA: [inaudible] 1237 01:02:19,360 --> 01:02:20,610 DAVID MALAN: Derecha, obviamente. 1238 01:02:20,610 --> 01:02:25,940 Y entonces no rojo, mucho verde, no azul, y luego 1239 01:02:25,940 --> 01:02:29,590 si tener-- así, sólo tendremos que terminar ella, porque sí, pero esto, por supuesto, 1240 01:02:29,590 --> 01:02:31,350 Ahora, es de color azul. 1241 01:02:31,350 --> 01:02:33,030 Y ahora se puede combinar estos colores. 1242 01:02:33,030 --> 01:02:36,430 Ahora como un aparte, si alguno de ustedes tiene Alguna vez has hecho algo de diseño real sitio web, 1243 01:02:36,430 --> 01:02:38,360 En realidad, puede ver símbolos como éste. 1244 01:02:38,360 --> 01:02:42,030 FFF-- y, de hecho, es Probablemente ni siquiera eso. 1245 01:02:42,030 --> 01:02:44,380 Es FFFFFF. 1246 01:02:44,380 --> 01:02:48,970 >> Cualquiera que he visto de F y E de y A through-- por lo que resulta, 1247 01:02:48,970 --> 01:02:52,970 Ayer hablamos de decimales, y hoy en día, sobre tipo de decimal. 1248 01:02:52,970 --> 01:02:54,570 Hoy hablamos sobre binario. 1249 01:02:54,570 --> 01:02:59,010 Resulta que, hexadecimal es una muy sistema de base común para uso en productos informáticos. 1250 01:02:59,010 --> 01:03:04,960 Binaria es de dos, decimal es 10, hexadecimal es 16. 1251 01:03:04,960 --> 01:03:08,640 Y resulta que, ¿cómo hacer se cuenta en hexadecimal? 1252 01:03:08,640 --> 01:03:11,620 Cero, uno, dos, tres, cuatro, cinco seis SIETE OCHO, 1253 01:03:11,620 --> 01:03:14,730 nueve, ¿qué uso después de las nueve? 1254 01:03:14,730 --> 01:03:16,600 ¿Cuál es el siguiente número? 1255 01:03:16,600 --> 01:03:19,180 Ya hemos utilizado cero. 1256 01:03:19,180 --> 01:03:20,570 Necesito 16 de ellos. 1257 01:03:20,570 --> 01:03:25,770 Cero, uno, dos, tres, cuatro, cinco, seis, siete, ocho, nueve, 1258 01:03:25,770 --> 01:03:27,520 necesita alguna convención arbitraria. 1259 01:03:27,520 --> 01:03:30,810 >> Y lo que la humanidad decidió algún tiempo Hace que viene después de las nueve de la letra 1260 01:03:30,810 --> 01:03:34,450 A y luego B y luego C. Así que la manera se cuenta en hexadecimal 1261 01:03:34,450 --> 01:03:37,040 es cero, uno, dos, tres, cuatro, cinco, seis, siete, ocho, nueve, 1262 01:03:37,040 --> 01:03:42,880 A, B, C, D, E, F, y que contará usted hasta el final, resulta que, a 15. 1263 01:03:42,880 --> 01:03:47,850 Así cero a 15 es cero a través de F. Ahora ¿por qué es tan significativo? 1264 01:03:47,850 --> 01:03:51,570 Pues bien, cuando se tiene dos F, así es como te expresas 255. 1265 01:03:51,570 --> 01:03:54,350 >> Así el cuento largo, en el mundo de Photoshop, 1266 01:03:54,350 --> 01:03:57,299 que el software de diseño gráfico, en el mundo del desarrollo web, 1267 01:03:57,299 --> 01:03:59,590 donde usted tiene un montón de colores, por supuesto, para jugar, 1268 01:03:59,590 --> 01:04:02,350 menudo los programadores expresar los que están en hexadecimal, 1269 01:04:02,350 --> 01:04:05,260 simplemente porque tiende a ser un poco más simple. 1270 01:04:05,260 --> 01:04:07,850 A pesar de que a primera vista es mucho más compleja. 1271 01:04:07,850 --> 01:04:11,590 >> Así, en cualquier caso, esto es importante porque Nick at Stanford 1272 01:04:11,590 --> 01:04:15,100 nos ha dado seis piezas de funcionalidad que, los programadores en ciernes, 1273 01:04:15,100 --> 01:04:17,060 ahora tendrá la capacidad de utilizar. 1274 01:04:17,060 --> 01:04:19,960 Incorporado en esta web La página es de seis funciones, 1275 01:04:19,960 --> 01:04:21,820 seis procedimientos que Nick escribió. 1276 01:04:21,820 --> 01:04:26,800 Tres de ellos le conseguirá un número, un rojo, un verde, o un valor de azul. 1277 01:04:26,800 --> 01:04:28,787 Tres de ellos establecer dicho valor. 1278 01:04:28,787 --> 01:04:30,620 Y estos guiones son marcadores de posición, 1279 01:04:30,620 --> 01:04:32,600 por lo que necesita saber cuáles son. 1280 01:04:32,600 --> 01:04:36,240 >> Así, con estas tres funciones, la primera de estas cosas 1281 01:04:36,240 --> 01:04:39,190 va a ser una coordenada x, y la segunda de estas cosas 1282 01:04:39,190 --> 01:04:40,700 va a ser una coordenada. 1283 01:04:40,700 --> 01:04:44,650 En otras palabras, que salpican, los cuales píxel es lo que quieres conseguir el verde de, 1284 01:04:44,650 --> 01:04:46,480 conseguir el azul, el rojo de conseguir. 1285 01:04:46,480 --> 01:04:51,440 Y entonces aquí, esto va a ser x, esto va a ser un valor y, 1286 01:04:51,440 --> 01:04:55,379 y esto va a ser un número. 1287 01:04:55,379 --> 01:04:57,170 Así que vamos a hacer la primera línea de este conjunto 1288 01:04:57,170 --> 01:05:00,220 y luego lo dejo a usted para tratar de deducir el resto. 1289 01:05:00,220 --> 01:05:03,100 Así por las instrucciones en esta página, necesitamos 1290 01:05:03,100 --> 01:05:08,960 para aumentar la rojo por un factor de 10, y tenemos que quitar el verde 1291 01:05:08,960 --> 01:05:09,930 y retire el azul. 1292 01:05:09,930 --> 01:05:12,410 Vamos a empezar con los últimos escenarios. 1293 01:05:12,410 --> 01:05:17,760 Así que si quiero, y voy aplicar una sangría mediante el uso de algunos espacios, 1294 01:05:17,760 --> 01:05:22,291 si quiero establecer el rojo, el verde, o el valor de azul, 1295 01:05:22,291 --> 01:05:23,540 Voy a hacer lo siguiente. 1296 01:05:23,540 --> 01:05:31,280 >> Imagen, im.setBlue, y luego basado en mis instrucciones aquí, 1297 01:05:31,280 --> 01:05:36,700 ¿Qué tres cosas habría de hacerlo escribe dentro de paréntesis ahora? 1298 01:05:36,700 --> 01:05:41,960 Necesito el valor de x, la y valor, y qué número 1299 01:05:41,960 --> 01:05:48,770 debería poner aquí si quiero deshacerme De la nada, sobre la base de esta historia aquí? 1300 01:05:48,770 --> 01:05:49,630 Sólo cero. 1301 01:05:49,630 --> 01:05:52,420 Si no quiero azul, sólo soy va a cambiar a cero. 1302 01:05:52,420 --> 01:05:54,465 >> Ahora vamos a recapitular lo que esto está haciendo. 1303 01:05:54,465 --> 01:05:56,970 1304 01:05:56,970 --> 01:06:01,170 Tengo aquí y TOP líneas segunda y tercera, 1305 01:06:01,170 --> 01:06:04,080 Reclamé dos bucles, bucles anidados, si 1306 01:06:04,080 --> 01:06:08,360 Will, que van a tener el efecto de progresar desde la izquierda a la derecha, 1307 01:06:08,360 --> 01:06:11,590 de arriba a abajo sobre la totalidad de la x los valores y todos los valores de y. 1308 01:06:11,590 --> 01:06:15,167 Porque, de nuevo, una imagen sólo una cuadrícula de filas y columnas. 1309 01:06:15,167 --> 01:06:17,000 Así que esto se va a poner deshacerse de todo el azul. 1310 01:06:17,000 --> 01:06:18,627 Permítanme dejo en la siguiente línea en su caso. 1311 01:06:18,627 --> 01:06:20,043 ¿Cómo me deshago de todo el verde? 1312 01:06:20,043 --> 01:06:23,747 1313 01:06:23,747 --> 01:06:25,140 >> AUDIENCIA: [inaudible] 1314 01:06:25,140 --> 01:06:26,151 >> DAVID MALAN: Niza. 1315 01:06:26,151 --> 01:06:28,260 >> AUDIENCIA: [inaudible] 1316 01:06:28,260 --> 01:06:30,850 >> DAVID MALAN: Niza. 1317 01:06:30,850 --> 01:06:36,120 Y voy a alejar, y acaba de tomar cuidado de que no se ha hecho ninguna errata. 1318 01:06:36,120 --> 01:06:39,390 Y si se siente cómodo con lo que has hecho, 1319 01:06:39,390 --> 01:06:42,936 seguir adelante y haga clic en el botón RUN / Guardar y ver lo que hay. 1320 01:06:42,936 --> 01:06:46,982 1321 01:06:46,982 --> 01:06:48,690 Y de nuevo, hemos hecho sólo tres cambios. 1322 01:06:48,690 --> 01:06:52,130 Hemos suprimido la primera comentar y lo reemplazó 1323 01:06:52,130 --> 01:06:53,575 con estas dos líneas de código. 1324 01:06:53,575 --> 01:06:55,742 1325 01:06:55,742 --> 01:06:58,450 Y está bien si usted necesita para golpear el botón Run / Guardar un par de veces 1326 01:06:58,450 --> 01:07:01,190 para arreglar algo. 1327 01:07:01,190 --> 01:07:03,610 >> Y permítanme también el zoom en mi código para que pueda transcribir. 1328 01:07:03,610 --> 01:07:04,110 Bueno. 1329 01:07:04,110 --> 01:07:08,720 Así que ver a Andrew tiene lo parece ser un error. 1330 01:07:08,720 --> 01:07:11,110 Él sólo tiene un gran negro rectángulo en la pantalla. 1331 01:07:11,110 --> 01:07:13,120 ¿Alguien más tiene un gran rectángulo negro? 1332 01:07:13,120 --> 01:07:13,390 >> AUDIENCIA: Sí. 1333 01:07:13,390 --> 01:07:14,360 >> DAVID MALAN: gran rectángulo negro? 1334 01:07:14,360 --> 01:07:16,068 OK, así que vamos a pensar acerca de lo que esto significa. 1335 01:07:16,068 --> 01:07:20,560 Hemos dicho que cero, cero, cero, por lo que no verde, no rojo, no azul, 1336 01:07:20,560 --> 01:07:21,980 se va a dar negro. 1337 01:07:21,980 --> 01:07:24,467 Y resulta que la mayor parte de nuestros ordenadores portátiles 1338 01:07:24,467 --> 01:07:25,800 simplemente no tienen suficiente fidelidad. 1339 01:07:25,800 --> 01:07:27,750 No se puede decir que hay bastante es en realidad algo allí. 1340 01:07:27,750 --> 01:07:30,340 Y si tal tipo de inclinarse la pantalla hacia delante y hacia atrás, 1341 01:07:30,340 --> 01:07:32,850 Qué tal se ve una algo allí? 1342 01:07:32,850 --> 01:07:34,820 Tal vez, una especie de, más o menos? 1343 01:07:34,820 --> 01:07:36,640 No es perfectamente negro. 1344 01:07:36,640 --> 01:07:38,050 >> AUDIENCIA: [inaudible] 1345 01:07:38,050 --> 01:07:39,510 >> DAVID MALAN: Spoiler! 1346 01:07:39,510 --> 01:07:42,610 Hay un poco de rojo, pero recordar de las especificaciones 1347 01:07:42,610 --> 01:07:44,940 del problema, Nick entonado hacia abajo. 1348 01:07:44,940 --> 01:07:47,860 Él desaturado que algo, pero no todo el camino a cero. 1349 01:07:47,860 --> 01:07:51,670 Así que si queremos ampliar la cantidad de rojo, permítanme proponer este truco. 1350 01:07:51,670 --> 01:07:53,750 Déjame el zoom en mi pantalla. 1351 01:07:53,750 --> 01:07:58,678 Y me dejó ir adelante y digo cantidad es igual a im.getRed (x, y). 1352 01:07:58,678 --> 01:08:02,440 1353 01:08:02,440 --> 01:08:05,790 >> Esta línea de código me está dando algo que se llama una variable. 1354 01:08:05,790 --> 01:08:09,643 Tengo arbitraria, pero, sin duda, razonablemente llamado a mi variable de lo 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 Cantidad. 1358 01:08:14,340 --> 01:08:14,980 cantidad justa. 1359 01:08:14,980 --> 01:08:16,960 Podría haber llamado lo que quiera, pero yo soy 1360 01:08:16,960 --> 01:08:19,490 el uso de esta otra función que he descrito anteriormente 1361 01:08:19,490 --> 01:08:25,359 para obtener la cantidad de rojo en x coma y. 1362 01:08:25,359 --> 01:08:27,520 ¿Por qué hice eso? 1363 01:08:27,520 --> 01:08:30,004 ¿Qué es lo que quiere hacer aquí? 1364 01:08:30,004 --> 01:08:32,910 1365 01:08:32,910 --> 01:08:33,619 Usted necesita add-- 1366 01:08:33,619 --> 01:08:34,493 AUDIENCIA: [inaudible] 1367 01:08:34,493 --> 01:08:36,279 DAVID MALAN: Sí, tal vez se multiplica por 10. 1368 01:08:36,279 --> 01:08:38,862 Y si usted no sabe esto, estoy va a seguir adelante y hacer esto. 1369 01:08:38,862 --> 01:08:42,060 Voy a seguir adelante y por ejemplo, quiero que la cantidad de rojo 1370 01:08:42,060 --> 01:08:46,550 Quiero ser lo está en el rojo, los tiempos de 10, 1371 01:08:46,550 --> 01:08:50,330 y la estrella, el asterisco en su teclado es el-- no utilizan x. 1372 01:08:50,330 --> 01:08:51,569 Utilice la estrella. 1373 01:08:51,569 --> 01:08:55,350 Así es como las cosas se multiplica en la mayoría de los lenguajes de programación. 1374 01:08:55,350 --> 01:08:59,790 >> Así que de acuerdo a la intuición de Kareem, almacenado en esta variable llamada cantidad, 1375 01:08:59,790 --> 01:09:03,649 es la cantidad de rojo que quiero en la posición xy. 1376 01:09:03,649 --> 01:09:11,500 ¿Cómo, ahora, cómo puedo hacer que Pixel tener ese número? 1377 01:09:11,500 --> 01:09:12,859 Ya ha hecho esto antes. 1378 01:09:12,859 --> 01:09:17,666 Se establece el verde y el azul o ningún valor, a cero. 1379 01:09:17,666 --> 01:09:18,540 AUDIENCIA: [inaudible] 1380 01:09:18,540 --> 01:09:20,040 DAVID MALAN: Sí, así usted no quiere que 10. 1381 01:09:20,040 --> 01:09:21,460 Ya lo hizo la matemáticas aquí. 1382 01:09:21,460 --> 01:09:24,779 Así que estamos consiguiendo el valor de rojo, que es un número bajo, es de suponer. 1383 01:09:24,779 --> 01:09:26,180 Estamos multiplicando por 10. 1384 01:09:26,180 --> 01:09:29,139 Lo que se quiere hacer con la cantidad variable de ahora? 1385 01:09:29,139 --> 01:09:30,130 >> AUDIENCIA: [inaudible] 1386 01:09:30,130 --> 01:09:30,880 >> DAVID MALAN: Niza. 1387 01:09:30,880 --> 01:09:34,616 Así im.set-- qué? 1388 01:09:34,616 --> 01:09:35,640 >> AUDIENCIA: setRed. 1389 01:09:35,640 --> 01:09:39,760 >> DAVID MALAN: setRed, en la posición xy. 1390 01:09:39,760 --> 01:09:40,260 Sí. 1391 01:09:40,260 --> 01:09:41,200 Y de la misma cantidad. 1392 01:09:41,200 --> 01:09:44,257 En otras palabras, una variable es un marcador de posición temporal 1393 01:09:44,257 --> 01:09:45,840 que se puede poner lo que quieras en. 1394 01:09:45,840 --> 01:09:48,680 Nos pasó a estar poniendo una número en ella, en el momento. 1395 01:09:48,680 --> 01:09:51,569 Nos hemos multiplicado por 10 para hacerlo más grande. 1396 01:09:51,569 --> 01:09:56,480 Y ahora estoy sustituyendo esa variable como el tercer argumento, o la entrada 1397 01:09:56,480 --> 01:09:57,810 para establecer rojo. 1398 01:09:57,810 --> 01:10:00,440 Y por lo que una vez que terminar eso, y tomar nota 1399 01:10:00,440 --> 01:10:02,330 de los puntos y comas y entre paréntesis. 1400 01:10:02,330 --> 01:10:06,290 >> Vaya por delante y haga clic correr / guardar de nuevo, y se 1401 01:10:06,290 --> 01:10:10,690 vean, mágicamente, lo que era en realidad ahí. [? Arwa,?] Lo que está allí? 1402 01:10:10,690 --> 01:10:16,412 La Torre Eiffel en-hecha y derecha rojo, no bastante oscuro. 1403 01:10:16,412 --> 01:10:17,870 debería ser más obvio ahora, ¿verdad? 1404 01:10:17,870 --> 01:10:18,840 DE ACUERDO. 1405 01:10:18,840 --> 01:10:20,215 Y Andrew, caja de no más negro? 1406 01:10:20,215 --> 01:10:21,090 AUDIENCIA: [inaudible] 1407 01:10:21,090 --> 01:10:22,180 DAVID MALAN: Está bien. 1408 01:10:22,180 --> 01:10:23,610 Así que voy a mantener esto en la pantalla. 1409 01:10:23,610 --> 01:10:27,010 Si quieres jugar con este más adelante, voy a volver a crear esto para usted. 1410 01:10:27,010 --> 01:10:29,140 Pero este código aquí hizo exactamente eso. 1411 01:10:29,140 --> 01:10:31,460 ¿Por qué no hacemos otra. 1412 01:10:31,460 --> 01:10:33,880 Permítanme desplazo hacia abajo ligeramente. 1413 01:10:33,880 --> 01:10:36,760 >> Así pues, en este caso, el proyector en realidad no le hace justicia. 1414 01:10:36,760 --> 01:10:40,486 Pero en sus pantallas, es probable tener un cuadro muy roja y muy negro. 1415 01:10:40,486 --> 01:10:42,610 Esto, también, es un rompecabezas que muestra algo famoso. 1416 01:10:42,610 --> 01:10:44,193 Sin embargo, la imagen ha sido distorsionada. 1417 01:10:44,193 --> 01:10:47,740 La imagen verdadera, esta vez, es en los valores de azul y verde. 1418 01:10:47,740 --> 01:10:51,820 Sin embargo, todos ellos han sido divididos por 20 lo que los valores son muy pequeñas. 1419 01:10:51,820 --> 01:10:54,660 Los valores de rojo son sólo números aleatorios, ruido. 1420 01:10:54,660 --> 01:10:57,190 Deshacer estas distorsiones para revelar la verdadera imagen. 1421 01:10:57,190 --> 01:10:59,200 >> Así que Nick le dice entonces qué hacer. 1422 01:10:59,200 --> 01:11:04,290 Establecer los valores de rojo a cero, y entonces no estropear lo que es. 1423 01:11:04,290 --> 01:11:07,110 Entonces multiplicar el azul y los valores verdes por 20. 1424 01:11:07,110 --> 01:11:09,820 Por lo que es casi lo mismo programa como antes, 1425 01:11:09,820 --> 01:11:11,380 pero estás invirtiendo el proceso. 1426 01:11:11,380 --> 01:11:13,780 Y pondré mi código de antes en la pantalla en caso 1427 01:11:13,780 --> 01:11:16,650 que desea hacer referencia de nuevo a él o jugar con más que uno. 1428 01:11:16,650 --> 01:11:18,100 Permítanme acercar dicho. 1429 01:11:18,100 --> 01:11:21,450 Pero resolver imagen Cobre rompecabezas, número dos. 1430 01:11:21,450 --> 01:11:37,623 1431 01:11:37,623 --> 01:11:40,580 >> AUDIENCIA: [inaudible] 1432 01:11:40,580 --> 01:11:44,010 >> DAVID MALAN: OK, así que este punto estoy No va a dar tantos consejos. 1433 01:11:44,010 --> 01:11:47,220 Así que would-- oh, vamos a ver, usted tiene un error tipográfico aquí. 1434 01:11:47,220 --> 01:11:49,621 Así que recuerde, esto aquí en realidad tiene que ir allí. 1435 01:11:49,621 --> 01:11:52,870 Entonces, ¿qué propondría, si desea se centran en este caso, no es la respuesta. 1436 01:11:52,870 --> 01:11:57,060 Si desea transcribir eso, que debe recibir el primero de trabajo. 1437 01:11:57,060 --> 01:11:59,910 Y entonces usted puede usar eso como inspiración para el segundo. 1438 01:11:59,910 --> 01:12:02,230 Bonito. 1439 01:12:02,230 --> 01:12:02,730 Bueno. 1440 01:12:02,730 --> 01:12:05,430 1441 01:12:05,430 --> 01:12:08,180 >> Y para los curiosos, esto es un ejemplo sencillo 1442 01:12:08,180 --> 01:12:11,080 de una ciencia o un arte llamada esteganografía, 1443 01:12:11,080 --> 01:12:14,100 el arte de ocultar información en imágenes. 1444 01:12:14,100 --> 01:12:16,890 Por lo general, las imágenes podrían ser marcado por el agua muy descaradamente 1445 01:12:16,890 --> 01:12:19,500 con un logotipo en la parte inferior esquina, pero con claridad, 1446 01:12:19,500 --> 01:12:22,070 puede ser mucho más sofisticado al respecto y, de hecho 1447 01:12:22,070 --> 01:12:25,050 ocultar otras imágenes en las Imágenes de alguna manera con esta técnica. 1448 01:12:25,050 --> 01:12:59,890 1449 01:12:59,890 --> 01:13:05,770 >> Tomar otros 30 segundos, y luego vamos a al menos anunciar lo que debería ver. 1450 01:13:05,770 --> 01:13:08,330 Y dejaré la tercera uno como un ejercicio en el hogar, 1451 01:13:08,330 --> 01:13:11,353 Si desea más de un desafiar este fin de semana. 1452 01:13:11,353 --> 01:13:18,240 1453 01:13:18,240 --> 01:13:20,390 Y creo que Andrew podría han conseguido por primera vez. 1454 01:13:20,390 --> 01:13:22,645 ¿Cuál es la segunda imagen, Andrew? 1455 01:13:22,645 --> 01:13:23,920 >> AUDIENCIA: estatua de la libertad. 1456 01:13:23,920 --> 01:13:28,500 >> DAVID MALAN: estatua de la libertad será la respuesta esta vez. 1457 01:13:28,500 --> 01:13:31,140 Así que de nuevo, sólo algunas simples ejemplos, el objetivo de los cuales 1458 01:13:31,140 --> 01:13:35,040 es para darle una idea de cómo hemos traducido arañazos pictórica 1459 01:13:35,040 --> 01:13:40,410 cuadras más molesto y más código complicado, pero todas las ideas 1460 01:13:40,410 --> 01:13:42,980 todavía son exactamente lo mismo, aunque con la introducción 1461 01:13:42,980 --> 01:13:48,380 ahora de la noción de una variable, siendo capaz de almacenar algo temporal. 1462 01:13:48,380 --> 01:13:51,750 >> Vamos a hacer uno más práctico, acaba de conectarse ahora los puntos 1463 01:13:51,750 --> 01:13:53,880 a algo un poco más en el mundo real. 1464 01:13:53,880 --> 01:13:56,610 Cuando esté listo, si pudiera vaya a esta dirección URL en la pantalla. 1465 01:13:56,610 --> 01:14:00,610 Eso es también en su copia de la diapositivas, developers.google.com/maps~~V~~singular~~3rd. 1466 01:14:00,610 --> 01:14:03,660 Vamos a hacer algo realmente real, por así decirlo, en la web 1467 01:14:03,660 --> 01:14:07,600 el uso de la API de Google Maps, o Interfaz de programación de aplicaciones, 1468 01:14:07,600 --> 01:14:08,940 de la siguiente manera. 1469 01:14:08,940 --> 01:14:12,341 >> Google, al igual que muchas empresas, proporciona una gran cantidad de funcionalidad gratuita 1470 01:14:12,341 --> 01:14:14,840 que se puede utilizar para construir su propias aplicaciones interesantes. 1471 01:14:14,840 --> 01:14:18,890 De hecho, si alguna vez has usado Uber para conseguir un taxi o un coche, 1472 01:14:18,890 --> 01:14:21,640 Usted probablemente sabe que tiene Uber Un mapa que muestra los coches y sobre el mismo. 1473 01:14:21,640 --> 01:14:24,870 Es decir, lo mejor que puede decir, la API de Google Maps. 1474 01:14:24,870 --> 01:14:28,884 Ellos en realidad están utilizando los mapas de Google, pero Uber no es una empresa de mapas, 1475 01:14:28,884 --> 01:14:31,050 ni habría que ser una problema particularmente interesante 1476 01:14:31,050 --> 01:14:33,510 para resolver en la parte superior de su problema del servicio de coche. 1477 01:14:33,510 --> 01:14:35,510 Y por lo que están de pie, de nuevo, en los hombros 1478 01:14:35,510 --> 01:14:37,520 de los demás, en este caso Google. 1479 01:14:37,520 --> 01:14:42,850 Así que utilizan los mapas de Google, pero su propio servicios de automóviles y otras características. 1480 01:14:42,850 --> 01:14:47,770 >> Así que vamos a aprovechar de esto para hacer lo siguiente. 1481 01:14:47,770 --> 01:14:50,230 Y si he ido demasiado rápido, me acaba de llamar otra vez en un momento. 1482 01:14:50,230 --> 01:14:53,500 Feliz para recapitular algunas de las cosas de la imagen. 1483 01:14:53,500 --> 01:14:56,290 Debe verse a sí mismo en una página como esta. 1484 01:14:56,290 --> 01:14:58,230 Tan agradable de Google, y que están entre los mejores 1485 01:14:58,230 --> 01:15:01,364 de proporcionar no sólo APIs, pero APIs libres que se 1486 01:15:01,364 --> 01:15:02,780 puede jugar con o utilizar comercialmente. 1487 01:15:02,780 --> 01:15:06,450 Ellos comienzan a cobrarle si su uso es alta, pero me fui por delante de antemano 1488 01:15:06,450 --> 01:15:10,490 y nos firmado para obtener una cuenta gratuita que, con suerte, 10 ordenadores 1489 01:15:10,490 --> 01:15:12,480 no nos descalifica para de repente. 1490 01:15:12,480 --> 01:15:14,320 Así que espero que este demostración funcionará. 1491 01:15:14,320 --> 01:15:18,840 >> Y notan que tienen APIs para Android, iOS, servicios web y web, 1492 01:15:18,840 --> 01:15:19,620 sea ​​lo que sea. 1493 01:15:19,620 --> 01:15:20,700 Vamos a centrarnos en la web. 1494 01:15:20,700 --> 01:15:26,560 Así que haga clic en el cuadro de color rosa, tela, y que le llevará, con suerte, a una página 1495 01:15:26,560 --> 01:15:27,630 aquí. 1496 01:15:27,630 --> 01:15:29,335 Y tienen un montón de APIs. 1497 01:15:29,335 --> 01:15:31,210 Y puede ser un poco abrumador al principio, 1498 01:15:31,210 --> 01:15:33,000 pero nos van a seguir a través de lo que queremos. 1499 01:15:33,000 --> 01:15:38,500 >> En la parte superior izquierda es el Google Maps JavaScript API, la API de JavaScript. 1500 01:15:38,500 --> 01:15:40,380 Así que adelante y haga clic en que uno. 1501 01:15:40,380 --> 01:15:49,360 Y que le llevará ahora a la siguiente página, demos y código de ejemplo. 1502 01:15:49,360 --> 01:15:51,190 Permítanme Alejar aquí. 1503 01:15:51,190 --> 01:15:56,300 Y déjame que nos desplazamos hacia abajo a-- a donde dice pasos de inicio rápido. 1504 01:15:56,300 --> 01:15:57,970 Su pantalla debe parecerse a la mía. 1505 01:15:57,970 --> 01:16:01,130 >> Y hay dos pasos, conseguir una clave y comenzar a desarrollar. 1506 01:16:01,130 --> 01:16:04,190 Ya lo hice el primer paso para nosotros, conseguir una clave llamada. 1507 01:16:04,190 --> 01:16:05,320 Y esta es una idea común. 1508 01:16:05,320 --> 01:16:09,210 Una clave de API es generalmente solo un número aleatorio grande o cadena 1509 01:16:09,210 --> 01:16:11,130 que se supone para pegar en su código, 1510 01:16:11,130 --> 01:16:15,280 por lo que Google sabe quién es usted cuando está utilizando su servicio, su API. 1511 01:16:15,280 --> 01:16:17,370 No quiere decir que estamos ser acusado de nada. 1512 01:16:17,370 --> 01:16:21,030 Y ahora, haga clic en, en lugar de uno, haga clic en empezar a desarrollar. 1513 01:16:21,030 --> 01:16:25,990 Si sólo yo pudiera agitar más si no sabe dónde estamos. 1514 01:16:25,990 --> 01:16:28,040 >> Así que apenas arañan la superficie, pero lo que aquí 1515 01:16:28,040 --> 01:16:31,000 Pensé que sería convincente es tener en realidad todos nosotros, 1516 01:16:31,000 --> 01:16:34,240 utilizando Cloud9 en una ventana y este tutorial en otra ventana, 1517 01:16:34,240 --> 01:16:37,120 deja para conseguir realmente nuestra propia la aplicación en funcionamiento 1518 01:16:37,120 --> 01:16:40,920 que incorpora una costumbre Google mapear en nuestra propia página web, 1519 01:16:40,920 --> 01:16:43,010 y luego añade una o dos características. 1520 01:16:43,010 --> 01:16:45,520 Pero sólo tendremos que rascar la superficie de lo que podemos hacer. 1521 01:16:45,520 --> 01:16:47,020 >> Por lo que sólo una comprobación de validez rápida. 1522 01:16:47,020 --> 01:16:49,740 Es todo el mundo en esta página, API de JavaScript de Google Maps? 1523 01:16:49,740 --> 01:16:50,872 Debe decir cómo empezar. 1524 01:16:50,872 --> 01:16:53,330 No vamos a ir a través de todo esto de ninguna manera. 1525 01:16:53,330 --> 01:16:58,090 Aceptar, en otra pestaña, si no lo hace que se abra, no entrar en Cloud9 1526 01:16:58,090 --> 01:17:03,500 y se consigue sólo una nueva pestaña, en última instancia. 1527 01:17:03,500 --> 01:17:11,070 Así que de nuevo, c9.io de ayer, c9.io, y acaba de crear un nuevo archivo. 1528 01:17:11,070 --> 01:17:13,500 Y seguir adelante y llamada él lo que quisiera. 1529 01:17:13,500 --> 01:17:16,495 Llamé a la mina map.html. 1530 01:17:16,495 --> 01:17:17,870 Llamarlo nada que terminan en .html. 1531 01:17:17,870 --> 01:17:23,930 1532 01:17:23,930 --> 01:17:26,580 Y que debe estar más o menos donde estoy en este proceso 1533 01:17:26,580 --> 01:17:31,470 con sólo un símbolo parpadeante en un vacío pestaña llama algo así como map.html. 1534 01:17:31,470 --> 01:17:35,808 1535 01:17:35,808 --> 01:17:38,148 O archivo, archivo nuevo esta vez. 1536 01:17:38,148 --> 01:17:41,960 1537 01:17:41,960 --> 01:17:48,000 >> Y ahora, a lo largo de la API de JavaScript de Google Maps, 1538 01:17:48,000 --> 01:17:50,010 vamos a dejar de leer a través de todo este texto. 1539 01:17:50,010 --> 01:17:53,760 Pero nótese que es hola mundo de hecho, en todas partes, lo ves ahora. 1540 01:17:53,760 --> 01:17:58,020 Hola mundo tiene esta gran colorido ejemplo de un montón de HTML. 1541 01:17:58,020 --> 01:18:03,590 Vaya por delante y copiar y pegar sólo eso HTML, por lo que desde el tipo de documento en la parte superior 1542 01:18:03,590 --> 01:18:08,810 todo el camino a la etiqueta HTML de cierre, vaya adelante y copiar todos los que- de nuevo, 1543 01:18:08,810 --> 01:18:14,430 eso es bajo el hola mundo ejemplo-- y pegar esto en la pestaña Cloud9, 1544 01:18:14,430 --> 01:18:17,996 de modo que ahora la pantalla debe verse más o menos como la mía. 1545 01:18:17,996 --> 01:18:22,280 1546 01:18:22,280 --> 01:18:24,520 >> Y se puede guardar, pero no cargarlo por el momento. 1547 01:18:24,520 --> 01:18:26,290 Veamos primero en el código y ver si 1548 01:18:26,290 --> 01:18:29,110 no se puede inferir o aprender de lo que es Google 1549 01:18:29,110 --> 01:18:30,860 nos ha tenido ciegamente copiar y pegar. 1550 01:18:30,860 --> 01:18:33,334 Ellos sólo quieren ayudar, literalmente, que podamos empezar, 1551 01:18:33,334 --> 01:18:35,500 pero no hay mucho complejidad realmente allí. 1552 01:18:35,500 --> 01:18:40,100 1553 01:18:40,100 --> 01:18:42,210 Cualquier pregunta por el momento? 1554 01:18:42,210 --> 01:18:43,790 Estamos a salvo para seguir adelante? 1555 01:18:43,790 --> 01:18:44,330 DE ACUERDO. 1556 01:18:44,330 --> 01:18:46,800 >> Tan rápidamente, vamos a hacer algunas comprobaciones rápidas. 1557 01:18:46,800 --> 01:18:48,800 Línea uno de lo que yo ver, y es de esperar, se 1558 01:18:48,800 --> 01:18:51,710 Véase, ¿qué significa eso, HTML tipo de documento? 1559 01:18:51,710 --> 01:18:52,385 Kareem, recordar? 1560 01:18:52,385 --> 01:18:53,260 AUDIENCIA: [inaudible] 1561 01:18:53,260 --> 01:18:53,968 DAVID MALAN: Sí. 1562 01:18:53,968 --> 01:18:54,870 Aquí viene HTML 5. 1563 01:18:54,870 --> 01:18:57,950 Mientras tanto, la línea de dos en el pantalla aquí significa oye navegador, 1564 01:18:57,950 --> 01:18:59,482 aquí viene el HTML real. 1565 01:18:59,482 --> 01:19:01,440 Línea de tres es eh navegador, aquí viene la cabeza. 1566 01:19:01,440 --> 01:19:04,260 Línea de cuatro es, por supuesto, hey navegador, aquí viene el título. 1567 01:19:04,260 --> 01:19:07,780 ¿Qué línea de cinco do? 1568 01:19:07,780 --> 01:19:09,930 En realidad, esto no hace realmente hacer nada para nosotros. 1569 01:19:09,930 --> 01:19:13,340 En este caso, sólo se cambia el tamaño la página a un defecto. Línea de seis, 1570 01:19:13,340 --> 01:19:16,140 no hemos hablado, pero especifica la codificación de caracteres. 1571 01:19:16,140 --> 01:19:19,181 Hay diferentes maneras de codificar archivos, especialmente para las lenguas extranjeras. 1572 01:19:19,181 --> 01:19:21,100 UTF-8 solo tiende a ser el valor por defecto. 1573 01:19:21,100 --> 01:19:26,580 >> Así que ahora vamos a ver en línea siete a 16, un poco de CSS. 1574 01:19:26,580 --> 01:19:29,260 Y a pesar de que no hemos visto todas estas cosas antes, 1575 01:19:29,260 --> 01:19:30,810 que tipo de se puede inferir. 1576 01:19:30,810 --> 01:19:37,075 Así que en ocho medios, hey navegador, aplicar todo lo siguiente a la que dos etiquetas, 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 El HTML y el cuerpo de texto. 1580 01:19:41,701 --> 01:19:43,200 Así que la coma es lo nuevo allí. 1581 01:19:43,200 --> 01:19:46,140 Y eso es sólo una forma de especificar varias etiquetas a la vez. 1582 01:19:46,140 --> 01:19:47,640 >> Entonces tenemos las llaves. 1583 01:19:47,640 --> 01:19:51,170 Así que al parecer, esto le dice al navegador, hacer que la altura de la página 100%. 1584 01:19:51,170 --> 01:19:54,170 Así que incluso si hay muy poco contenido, hacer toda la página, 1585 01:19:54,170 --> 01:19:55,530 hacer lo llene la página. 1586 01:19:55,530 --> 01:19:57,524 Hacer el mapa en última instancia a llenar la página. 1587 01:19:57,524 --> 01:19:58,690 Margen, ¿qué significa eso? 1588 01:19:58,690 --> 01:20:01,559 Eso es por lo general como arbitraria espacio en blanco alrededor de los bordes 1589 01:20:01,559 --> 01:20:04,350 que algún diseñador browser decidió que debería estar allí, porque 1590 01:20:04,350 --> 01:20:05,540 tipo de cosas hace aspecto más limpio. 1591 01:20:05,540 --> 01:20:06,498 Pero no queremos eso. 1592 01:20:06,498 --> 01:20:08,710 Queremos ir el mapa todo el camino hasta los bordes. 1593 01:20:08,710 --> 01:20:10,930 Relleno, similar en espíritu a los márgenes. 1594 01:20:10,930 --> 01:20:14,980 Márgenes significan, medios de relleno fuera en el interior, pero es el mismo tipo de trato. 1595 01:20:14,980 --> 01:20:17,520 Es un poco de un tampón entre el usuario y los bordes. 1596 01:20:17,520 --> 01:20:21,170 >> Y luego la línea 13 es un buen oportunidad para una revisión rápida. 1597 01:20:21,170 --> 01:20:26,440 Lo que hace muestra de la correspondencia aguda significa, o mapa hashtag significa? 1598 01:20:26,440 --> 01:20:29,650 Lo qué se refiere, en principio? 1599 01:20:29,650 --> 01:20:31,485 >> AUDIENCIA: [inaudible] 1600 01:20:31,485 --> 01:20:32,360 DAVID MALAN: Exactamente. 1601 01:20:32,360 --> 01:20:36,900 Esta propiedad, esta propiedad CSS se aplica a una sola cosa, la etiqueta HTML 1602 01:20:36,900 --> 01:20:41,180 que tiene un diámetro interior de cotización, fin de la cita "mapa". 1603 01:20:41,180 --> 01:20:44,460 Y ahora vamos a avanzar rápidamente, de desplazamiento hasta la parte inferior del archivo, el cual 1604 01:20:44,460 --> 01:20:49,860 No está demasiado lejos, y aviso en línea 19, si pega exactamente como lo hice, 1605 01:20:49,860 --> 01:20:53,405 la línea 19 tiene sólo un div, que es una división de la página, que ayer 1606 01:20:53,405 --> 01:20:54,820 llamado una región rectangular. 1607 01:20:54,820 --> 01:20:55,820 No tiene nada en ella. 1608 01:20:55,820 --> 01:20:57,550 Es una etiqueta abierta, el código de cierre. 1609 01:20:57,550 --> 01:20:59,490 Pero tiene un identificador único. 1610 01:20:59,490 --> 01:21:02,090 >> Así que lo que parece ser pasando aquí es Google 1611 01:21:02,090 --> 01:21:05,880 se está preparando nuestra página Web para tiene una altura total de 100%, 1612 01:21:05,880 --> 01:21:09,680 y sin relleno, sin márgenes, porque lo que vamos a poner en el interior 1613 01:21:09,680 --> 01:21:13,647 de este div, cuyo ID es único mapa, es un mapa incrustado real. 1614 01:21:13,647 --> 01:21:15,480 Y queremos que se llene la página y no sólo 1615 01:21:15,480 --> 01:21:17,560 haber algún pequeño rectángulo en el medio. 1616 01:21:17,560 --> 01:21:24,220 Así que hace hincapié en la línea 14 del mismo modo, la mapa mismo debe tener una altura de 100%. 1617 01:21:24,220 --> 01:21:29,220 >> Así que ahora cuenta entre las líneas 20 y 28, esto es código JavaScript. 1618 01:21:29,220 --> 01:21:33,020 Y esto es, a pesar de que es sintácticamente un poco extraño, 1619 01:21:33,020 --> 01:21:34,730 No hay casi nada que hacer aquí. 1620 01:21:34,730 --> 01:21:39,310 En la línea 21, esto es declarar algo que se llama una variable. 1621 01:21:39,310 --> 01:21:42,030 En lugar de llamarlo cantidades, como lo hicimos antes, 1622 01:21:42,030 --> 01:21:44,500 que estamos diciendo con mayor precisión var, que sólo significa variable. 1623 01:21:44,500 --> 01:21:46,520 Podríamos haber utilizado que, en código de Nick, pero no lo hizo, por lo que 1624 01:21:46,520 --> 01:21:48,190 no se molestó en hacerlo bien. 1625 01:21:48,190 --> 01:21:50,240 Es una variable llamada mapa, y luego está 1626 01:21:50,240 --> 01:21:53,360 una función que es aparentemente llamado initMap. 1627 01:21:53,360 --> 01:21:55,780 >> Así que esto es como nuestra propia personalizada pieza del rompecabezas en Scratch. 1628 01:21:55,780 --> 01:21:58,830 Hemos creado una pieza de funcionalidad llamada initMap, 1629 01:21:58,830 --> 01:22:00,980 y se puede inferir tipo de Que está pasando aqui. 1630 01:22:00,980 --> 01:22:02,930 En el lado izquierdo, tenemos una variable, 1631 01:22:02,930 --> 01:22:06,000 por lo que vamos a poner el siguiente cosa dentro de esa variable, 1632 01:22:06,000 --> 01:22:07,362 de derecha a izquierda. 1633 01:22:07,362 --> 01:22:11,940 El lado derecho dice, oye navegador, dame un nuevo mapa de Google. 1634 01:22:11,940 --> 01:22:16,490 Y google.maps.Map es sólo una manera cobarde de especificar que esta funcionalidad 1635 01:22:16,490 --> 01:22:19,790 pertenece a Google Maps. 1636 01:22:19,790 --> 01:22:23,010 >> Tras el paréntesis, que hemos visto esto antes, hey navegador, conseguir 1637 01:22:23,010 --> 01:22:29,210 me los elementos de la página, el etiqueta de la página cuyo identificador único es-- 1638 01:22:29,210 --> 01:22:30,710 >> AUDIENCIA: [inaudible] 1639 01:22:30,710 --> 01:22:31,790 >> DAVID MALAN: --map. 1640 01:22:31,790 --> 01:22:35,770 Y lo que está pasando, así, esta línea juntos, línea 23, 1641 01:22:35,770 --> 01:22:38,630 está esencialmente diciendo: Hey navegador, ir a por mí 1642 01:22:38,630 --> 01:22:42,800 que div vacío en la página cuyo identificador único es el mapa, 1643 01:22:42,800 --> 01:22:45,600 porque quiero insertar it-- en inyectar en ella, 1644 01:22:45,600 --> 01:22:49,520 si Voluntad-- un montón de contenido que pasa a estar viniendo de la web, 1645 01:22:49,520 --> 01:22:50,427 después. 1646 01:22:50,427 --> 01:22:52,010 Y Google está haciendo todo eso para nosotros. 1647 01:22:52,010 --> 01:22:55,350 >> Así que de nuevo, al final del día, tenemos este ejemplo de abstracción. 1648 01:22:55,350 --> 01:22:58,610 No tengo idea de qué es un mapa o cómo implementar un API mapa. 1649 01:22:58,610 --> 01:22:59,460 Nosotros no necesitamos. 1650 01:22:59,460 --> 01:23:02,740 Sólo tenemos que contar el mapa donde poner en sí, y dejar 1651 01:23:02,740 --> 01:23:04,880 aquellos implementación subyacente detalles Google. 1652 01:23:04,880 --> 01:23:08,190 Ahora hay al parecer dos piezas de datos 1653 01:23:08,190 --> 01:23:11,940 que este ejemplo es proporcionar a la API de Google. 1654 01:23:11,940 --> 01:23:16,450 Al parecer, el centro del mapa, y el nivel de zoom, por así decirlo. 1655 01:23:16,450 --> 01:23:21,390 >> ¿Y alguien que reconozcan esos coordenadas, latitud y longitud? 1656 01:23:21,390 --> 01:23:24,364 Probablemente no, pero podemos volver al tutorial, ver literalmente. 1657 01:23:24,364 --> 01:23:25,780 Pero lo veremos en un momento. 1658 01:23:25,780 --> 01:23:29,880 nivel de zoom es un valor entre, no lo creo saber, uno de cada 13 o algo por el estilo. 1659 01:23:29,880 --> 01:23:32,880 Simplemente tiene que ver con lo lejos que está amplía o se reduce, y eso es todo. 1660 01:23:32,880 --> 01:23:35,690 Y ahora al final de la página, línea de aviso 29-- 1661 01:23:35,690 --> 01:23:39,960 que es un poco fea, porque wraps-- que esta línea de código 1662 01:23:39,960 --> 01:23:44,570 es lo que se descarga a la API actual navegador de Google. 1663 01:23:44,570 --> 01:23:47,500 Todo el código que Google de Los ingenieros han escrito que implementan 1664 01:23:47,500 --> 01:23:50,000 toda esta opción de mapas integrables. 1665 01:23:50,000 --> 01:23:51,470 >> Ahora vamos a no cambiar nada. 1666 01:23:51,470 --> 01:23:54,761 Si estás siguiendo, seguir adelante y sólo tienes que guardar ese archivo, si de hecho tiene 1667 01:23:54,761 --> 01:23:55,760 lo que tengo. 1668 01:23:55,760 --> 01:23:57,370 Ir a su dirección URL. 1669 01:23:57,370 --> 01:23:59,820 Puede hacer clic en el botón Ejecutar encima de la tapa y que le dirá 1670 01:23:59,820 --> 01:24:03,050 que la URL de su servidor Web de nuevo. 1671 01:24:03,050 --> 01:24:06,010 Y es que dará lugar a una nueva pestaña. 1672 01:24:06,010 --> 01:24:11,910 Si hace clic en Abrir para map.html, y las probabilidades son que eres 1673 01:24:11,910 --> 01:24:15,520 va a conseguir una alerta, un mensaje de error, ¿verdad? 1674 01:24:15,520 --> 01:24:18,570 mensaje de error, el mensaje de error? 1675 01:24:18,570 --> 01:24:21,170 >> Así que, lamentablemente, el error mensaje no es que esclarecedor 1676 01:24:21,170 --> 01:24:23,890 a menos que realmente abre la consola, que ficha especial que 1677 01:24:23,890 --> 01:24:27,110 mantiene la apertura de ayer y un poco el día de hoy. 1678 01:24:27,110 --> 01:24:29,445 Pero me encontré con esto antes, así que ya 1679 01:24:29,445 --> 01:24:30,820 averiguado cuál es la solución. 1680 01:24:30,820 --> 01:24:34,440 En las diapositivas de hoy en día, o más bien, en Cloud9, previo aviso 1681 01:24:34,440 --> 01:24:36,430 que no hicimos algo deliberadamente. 1682 01:24:36,430 --> 01:24:40,690 Nótese que esta etiqueta script en línea 29, si se lee a través de ella, 1683 01:24:40,690 --> 01:24:44,440 es como maps.googleapis.com/ algo, algo, algo, 1684 01:24:44,440 --> 01:24:46,430 a continuación, observe a alguien, uno de los desarrolladores, 1685 01:24:46,430 --> 01:24:50,040 escribió en el total de capital cartas, su clave de API. 1686 01:24:50,040 --> 01:24:51,700 >> Hay que pegar algo allí. 1687 01:24:51,700 --> 01:24:53,450 Y este fue el paso Lo hice por nosotros antes, 1688 01:24:53,450 --> 01:24:57,190 y de nuevo puede ser que la lista negra con si de repente, 12 o más de nosotros 1689 01:24:57,190 --> 01:24:59,470 comenzar a utilizar la misma clave, pero vamos a ver qué pasa. 1690 01:24:59,470 --> 01:25:03,030 Así que si vas en la actualidad de diapositivas, una diapositiva más adelante, hay 1691 01:25:03,030 --> 01:25:07,070 esta cadena muy cobarde que buscan de texto. 1692 01:25:07,070 --> 01:25:12,230 Vaya por delante y simplemente copiar y que pegarlo donde pone su clave API. 1693 01:25:12,230 --> 01:25:15,120 Esa es la que me inscribí. 1694 01:25:15,120 --> 01:25:17,700 >> Y definitivamente no trate escribir de forma manual, 1695 01:25:17,700 --> 01:25:21,210 porque se siente lleno con errores ortográficos, potencialmente. 1696 01:25:21,210 --> 01:25:23,260 Así que sólo debes copiar y pegar eso. 1697 01:25:23,260 --> 01:25:26,090 Y que va a hacer que la línea más tiempo, pero ahora, sólo para ser claros, 1698 01:25:26,090 --> 01:25:29,540 que debe ser un poco más como este, donde la clave no es igual 1699 01:25:29,540 --> 01:25:32,200 capitalizado gritando en usted. 1700 01:25:32,200 --> 01:25:34,810 Guarde la página, volver a la otra pestaña, vuelva a cargar, 1701 01:25:34,810 --> 01:25:36,770 y la esperanza de ver un mapa de dónde? 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í que al parecer esos son los Coordenadas GPS Australia. 1705 01:25:41,200 --> 01:25:44,491 Y déjame caminar alrededor por un momento y ayudar a cualquier persona que no es muy allá, 1706 01:25:44,491 --> 01:25:47,729 pero permítanme proponer, a través de Google, encontrar las coordenadas del GPS de su propia ciudad natal 1707 01:25:47,729 --> 01:25:48,770 o en su propio país de origen. 1708 01:25:48,770 --> 01:25:51,436 Y, probablemente, Google puede convertir esto arriba, o la Wikipedia le puede decir. 1709 01:25:51,436 --> 01:25:54,410 Pero elegir dos valores diferentes de latitud y longitud, 1710 01:25:54,410 --> 01:25:57,530 volver y pegarlos, y vuelva a cargar la página después de guardar 1711 01:25:57,530 --> 01:26:00,718 y ver si se puede tener una de los mapas para su propia ciudad natal. 1712 01:26:00,718 --> 01:26:04,500 1713 01:26:04,500 --> 01:26:08,042 >> Y cuando haya terminado con que, el seguimiento challenge-- 1714 01:26:08,042 --> 01:26:11,250 y voy a dar un poco menos sentido, deliberadamente, de modo que usted deliberadamente 1715 01:26:11,250 --> 01:26:13,791 tienen que luchar por un par minutos con la documentación, 1716 01:26:13,791 --> 01:26:18,740 cambiar el mapa para ser no esta predeterminado de dibujos animados, pero un mapa de satélite. 1717 01:26:18,740 --> 01:26:24,600 Así que en realidad se ve por satélite las imágenes en lugar de los colores bonitos. 1718 01:26:24,600 --> 01:26:29,710 >> Y la pista te voy a dar es cambiar el tipo de mapa. 1719 01:26:29,710 --> 01:26:33,084 Volver a los que conseguir comenzado la página en busca de inspiración. 1720 01:26:33,084 --> 01:26:40,599 1721 01:26:40,599 --> 01:26:42,390 Como es posible que haya recogido, si usted está buscando, 1722 01:26:42,390 --> 01:26:44,250 Hay muchos mas cosas que puedes hacer. 1723 01:26:44,250 --> 01:26:46,380 Algunos de ustedes ya tienen cambiado el tipo de mapa. 1724 01:26:46,380 --> 01:26:49,890 Pero se puede hacer-- por ejemplo, me dejó ir a algo que hicimos para el curso 1725 01:26:49,890 --> 01:26:52,050 Me teach-- maps.cs50.net. 1726 01:26:52,050 --> 01:26:53,470 Uno de nuestros estudiantes de licenciatura hicieron esto. 1727 01:26:53,470 --> 01:26:58,890 Nos centramos nuestra hoja sobre Harvard Yard y superponer todos estos nombres de edificios, 1728 01:26:58,890 --> 01:27:01,070 y tuvimos que añada esto. 1729 01:27:01,070 --> 01:27:04,270 Así que si quiero buscar, por ejemplo, Matthews Hall, 1730 01:27:04,270 --> 01:27:05,730 tenemos un pequeño menú desplegable. 1731 01:27:05,730 --> 01:27:09,080 Y creo que él está usando Bootstrap, el biblioteca hemos comentado anteriormente para esto. 1732 01:27:09,080 --> 01:27:12,190 Y si se hace clic en Matthews Hall, de inmediato 1733 01:27:12,190 --> 01:27:14,790 salta el mapa para un cierto ubicación, y se nota 1734 01:27:14,790 --> 01:27:16,440 que una imagen en esta pequeña ventana emergente. 1735 01:27:16,440 --> 01:27:18,670 >> Pero incluso esta pequeña pop-up, que no puso en práctica. 1736 01:27:18,670 --> 01:27:27,521 Si me desplazo hacia abajo en nuestra conseguir comenzado la página y buscar ventanas de información, 1737 01:27:27,521 --> 01:27:29,770 verá que algunas de las funcionalidad que usted mismo 1738 01:27:29,770 --> 01:27:31,561 puede sumar, aunque con un poco más la complejidad, 1739 01:27:31,561 --> 01:27:33,970 es algo que se llama una ventana de información. 1740 01:27:33,970 --> 01:27:37,190 Y si hago clic en un ejemplo aquí, y esto es lo que es divertido, 1741 01:27:37,190 --> 01:27:40,530 se pueden hacer cosas como esta, al hacer clic en un marcador y luego voila, 1742 01:27:40,530 --> 01:27:42,400 la información aparece. 1743 01:27:42,400 --> 01:27:45,874 >> Así que todavía no hemos introducido suficientes características de JavaScript 1744 01:27:45,874 --> 01:27:49,040 para pintar un cuadro de exactamente cómo se podrían cablear todas estas cosas juntas, 1745 01:27:49,040 --> 01:27:50,706 pero hemos tipo de arañado la superficie. 1746 01:27:50,706 --> 01:27:53,140 De hecho, lo que he hecho cuando He hecho clic en ese marcador, 1747 01:27:53,140 --> 01:27:55,819 fue de activar un evento, una llamada en el evento clic. 1748 01:27:55,819 --> 01:27:57,610 Y que de hecho vimos una evento el día de hoy, 1749 01:27:57,610 --> 01:28:00,670 el llamado presentar evento, cuando estábamos previniendo 1750 01:28:00,670 --> 01:28:02,490 el usuario desde la búsqueda de los gatos. 1751 01:28:02,490 --> 01:28:06,560 Para ello hemos tipo de recogimos y lo elegimos de entre todas estas diversas características, 1752 01:28:06,560 --> 01:28:08,990 para darle un sentido, es de esperar, de lo que en realidad se puede 1753 01:28:08,990 --> 01:28:11,000 hacer con un poco más comodidad en la programación, 1754 01:28:11,000 --> 01:28:12,587 y recursos completamente gratis. 1755 01:28:12,587 --> 01:28:15,856 1756 01:28:15,856 --> 01:28:18,770 >> ¿Alguna pregunta? 1757 01:28:18,770 --> 01:28:19,790 ¿No? 1758 01:28:19,790 --> 01:28:22,542 Esta es su última oportunidad, al menos hoy en día, un viernes, 1759 01:28:22,542 --> 01:28:25,000 para conseguir algo de su pecho para que al salir de aquí 1760 01:28:25,000 --> 01:28:27,067 sentirse seguro y cómodo. 1761 01:28:27,067 --> 01:28:27,566 Sí. 1762 01:28:27,566 --> 01:28:29,740 >> AUDIENCIA: ¿Por qué no hacer se agrega una cosa más? 1763 01:28:29,740 --> 01:28:32,720 >> DAVID MALAN: Oh mi Dios. 1764 01:28:32,720 --> 01:28:35,260 Necesito descansar este fin de semana, creo. 1765 01:28:35,260 --> 01:28:36,180 ¿Otras preguntas? 1766 01:28:36,180 --> 01:28:37,055 >> AUDIENCIA: [inaudible] 1767 01:28:37,055 --> 01:28:44,130 1768 01:28:44,130 --> 01:28:46,810 >> DAVID MALAN: Usted can-- en Internet Explorer, que en paz descanse, 1769 01:28:46,810 --> 01:28:49,310 que solía ser capaz de poner VB guión, guión básico virtual, 1770 01:28:49,310 --> 01:28:50,643 pero que en realidad nunca se puso de moda. 1771 01:28:50,643 --> 01:28:52,490 Así que la respuesta corta es simplemente JavaScript. 1772 01:28:52,490 --> 01:28:55,144 1773 01:28:55,144 --> 01:28:55,810 ¿Otras preguntas? 1774 01:28:55,810 --> 01:28:58,427 1775 01:28:58,427 --> 01:28:59,760 De acuerdo, bien, déjame hacer esto. 1776 01:28:59,760 --> 01:29:02,070 Déjame agarrar nuestros colegas exterior. 1777 01:29:02,070 --> 01:29:04,500 Tienen algún tipo de evaluación formas que ellos quisieran que cada uno 1778 01:29:04,500 --> 01:29:06,310 para pasar unos minutos para llenar. 1779 01:29:06,310 --> 01:29:08,775 Ellos quieren cobrar esa forma y cualquier renuncias que tenga al exterior. 1780 01:29:08,775 --> 01:29:10,240 También tendrán certificados. 1781 01:29:10,240 --> 01:29:12,380 Supongo que hay todavía algunos aperitivos fuera. 1782 01:29:12,380 --> 01:29:14,360 Déjame pasar éstos hacia fuera, y si tiene alguna pregunta, mientras tanto, 1783 01:29:14,360 --> 01:29:17,120 Voy a caminar alrededor de más de forma individual y podemos empezar. 1784 01:29:17,120 --> 01:29:17,879 Si por supuesto. 1785 01:29:17,879 --> 01:29:18,754 AUDIENCIA: [inaudible] 1786 01:29:18,754 --> 01:29:26,737 1787 01:29:26,737 --> 01:29:28,570 DAVID MALAN: Eso es suele ser cierto en estos días. 1788 01:29:28,570 --> 01:29:30,730 Ciertamente, con la web software, usted se inclina 1789 01:29:30,730 --> 01:29:32,901 en los demás o eres estéticamente usando cosas 1790 01:29:32,901 --> 01:29:35,400 como Bootstrap, por lo que no lo hace tienen que poner en práctica el bajo nivel 1791 01:29:35,400 --> 01:29:37,169 detalles de los menús y botones y todo eso. 1792 01:29:37,169 --> 01:29:39,210 Usted está apoyado en una persona como Google para que 1793 01:29:39,210 --> 01:29:42,050 no tienen que construir un Uber negocio y un negocio de mapeo, 1794 01:29:42,050 --> 01:29:44,850 y cualquier número de semejante aplicaciones. 1795 01:29:44,850 --> 01:29:46,350 >> De hecho, los inicios de sesión son muy populares, también. 1796 01:29:46,350 --> 01:29:48,500 Si ha utilizado Spotify o cualquier número de sitios web, 1797 01:29:48,500 --> 01:29:51,210 podrás iniciar sesión en algunos sitios web que utilizan Facebook. 1798 01:29:51,210 --> 01:29:53,350 ¿Cuál es tan agradable, hay son APIs para los inicios de sesión 1799 01:29:53,350 --> 01:29:56,570 hoy en día, de modo que usted no tiene tener su propia tabla de usuarios 1800 01:29:56,570 --> 01:29:59,440 y todos los de su propia base de datos necesariamente en la misma medida. 1801 01:29:59,440 --> 01:30:01,795 Puede dejar que Facebook haga todo de que la complejidad para usted. 1802 01:30:01,795 --> 01:30:03,920 Así que es un momento emocionante, honestamente, en la programación, 1803 01:30:03,920 --> 01:30:07,200 porque hay tantos terceros servicios que se pueden construir en la parte superior de. 1804 01:30:07,200 --> 01:30:10,890 >> Y de nuevo, el precio que se paga es ya sea financiera o el tiempo de inactividad. 1805 01:30:10,890 --> 01:30:13,750 Si Google se cae, lo mismo ocurre con Uber, sin duda, 1806 01:30:13,750 --> 01:30:15,690 pero tal vez eso es una razonable equilibrio. 1807 01:30:15,690 --> 01:30:18,040 Y de nuevo, que era uno de los temas, con suerte, durante el último par de días, 1808 01:30:18,040 --> 01:30:18,780 Son estas compensaciones. 1809 01:30:18,780 --> 01:30:20,738 Y rara vez es allí va siendo una respuesta correcta. 1810 01:30:20,738 --> 01:30:25,700 Realmente es el mejor de dos o más respuestas. 1811 01:30:25,700 --> 01:30:26,682 >> Pase éstos alrededor. 1812 01:30:26,682 --> 01:30:36,830 1813 01:30:36,830 --> 01:30:41,110 >> Y estas cuentas Cloud9 continuarán para trabajar, en teoría, a perpetuidad. 1814 01:30:41,110 --> 01:30:45,000 Es posible encontrar si esperas unos días o una semana o más para volver a entrar en ellos, 1815 01:30:45,000 --> 01:30:49,170 que podría tomar como una o cinco minutos para abrir una copia de seguridad, 1816 01:30:49,170 --> 01:30:54,090 pero eso es sólo porque ponen en estado de reposo para ahorrar en recursos. 1817 01:30:54,090 --> 01:31:10,527