1 00:00:00,000 --> 00:00:05,616 2 00:00:05,616 --> 00:00:07,030 >> HANNAH Blumberg: Hola a todos. 3 00:00:07,030 --> 00:00:09,530 Nós imos comezar só un par de minutos máis cedo 4 00:00:09,530 --> 00:00:11,738 xa que temos un lote enteiro de material para pasar. 5 00:00:11,738 --> 00:00:12,790 Eu son Hannah. 6 00:00:12,790 --> 00:00:13,865 Eu son un TF. 7 00:00:13,865 --> 00:00:16,239 María vai unirse nós en só uns minutos. 8 00:00:16,239 --> 00:00:17,560 Ela ensina sección dereita antes. 9 00:00:17,560 --> 00:00:19,351 Eu ensino sección dereita despois, polo que estamos indo 10 00:00:19,351 --> 00:00:21,200 para mantelo á hora e media. 11 00:00:21,200 --> 00:00:25,490 >> Entón, como vai ver aquí enriba, temos bastante algúns temas que necesitamos para pasar, 12 00:00:25,490 --> 00:00:27,200 así que imos estar indo un pouco rápido. 13 00:00:27,200 --> 00:00:31,140 Pero si nalgún momento dicimos algo moi rapidamente ou non entende, 14 00:00:31,140 --> 00:00:33,170 Sinto-se a liberdade de deixar con preguntas. 15 00:00:33,170 --> 00:00:36,610 Queremos ser capaces de facer deste un avaliar sesión como útil a todos vostedes 16 00:00:36,610 --> 00:00:37,973 como sexa posible. 17 00:00:37,973 --> 00:00:38,920 Impresionante. 18 00:00:38,920 --> 00:00:41,650 >> Entón, imos ir á dereita con algúns temas que, en realidade, 19 00:00:41,650 --> 00:00:46,980 moi, moi brevemente cuberta para o cuestionario 0 na revisión sesión cuestionario 0. 20 00:00:46,980 --> 00:00:48,840 Entón, comezando con listas ligadas. 21 00:00:48,840 --> 00:00:52,090 Entón, só tes que estar seguro de que algúns coñecemento básico sobre listas ligadas 22 00:00:52,090 --> 00:00:55,110 e son cómodos facendo algunhas das operacións básicas. 23 00:00:55,110 --> 00:00:58,560 >> Entón, só para revisar, conexionado listas son mellores que as matrices 24 00:00:58,560 --> 00:01:01,020 porque poden crecer de forma dinámica. 25 00:01:01,020 --> 00:01:03,300 Polo tanto, temos que enorme vantaxe. 26 00:01:03,300 --> 00:01:06,031 Vimos que emprega en táboas de dispersión cando 27 00:01:06,031 --> 00:01:08,280 Non sabemos exactamente cantas cousas que vai querer 28 00:01:08,280 --> 00:01:10,900 para introducir a estrutura de datos. 29 00:01:10,900 --> 00:01:15,700 Desafortunadamente, temos pezas de a lista vinculada todo memoria, 30 00:01:15,700 --> 00:01:20,820 por iso, non será necesariamente capaz de facer acceso en tempo constante 31 00:01:20,820 --> 00:01:22,502 para calquera elemento da lista encadeada. 32 00:01:22,502 --> 00:01:24,210 Co fin de atopar unha nomeadamente elemento, nós 33 00:01:24,210 --> 00:01:26,510 ten para percorrer todo o forma desde o comezo. 34 00:01:26,510 --> 00:01:30,610 Polo tanto, ten en conta que a maior parte do operacións básicas son omega de 1. 35 00:01:30,610 --> 00:01:32,130 Entón inserción está indo só para tomar un. 36 00:01:32,130 --> 00:01:37,520 Eliminar levará n sempre que ten que ir atopalo na lista. 37 00:01:37,520 --> 00:01:39,260 E investigación podería levar, no peor dos casos, n. 38 00:01:39,260 --> 00:01:42,330 Non podemos facer algo como busca binaria nunha lista ligada 39 00:01:42,330 --> 00:01:45,101 Como non podemos só ir ao chou para o medio. 40 00:01:45,101 --> 00:01:45,600 Legal. 41 00:01:45,600 --> 00:01:48,160 42 00:01:48,160 --> 00:01:48,960 Impresionante. 43 00:01:48,960 --> 00:01:50,270 >> Un pouco de pilas. 44 00:01:50,270 --> 00:01:53,980 Iso, de novo, xurdiu a proba 0, para que debe ser super cómodo con iso. 45 00:01:53,980 --> 00:01:57,210 Pero para pilas, pedímoslle lembrar dunha pila de bandexas. 46 00:01:57,210 --> 00:01:59,940 E vai ser o primeiro en, último a saír. 47 00:01:59,940 --> 00:02:02,272 Entón, nós apilar as cousas na pila e logo 48 00:02:02,272 --> 00:02:04,980 se estamos tentando sacar algo off-- que chamamos o estalo fóra 49 00:02:04,980 --> 00:02:06,581 o stack-- que saír do cume. 50 00:02:06,581 --> 00:02:09,289 E se queren pór algo na pila, chamamos iso de empurrar. 51 00:02:09,289 --> 00:02:13,170 Por iso, sempre será crecendo dende o fondo como unha pila de taboleiros. 52 00:02:13,170 --> 00:02:14,540 Impresionante. 53 00:02:14,540 --> 00:02:17,607 >> Temos pilas visto aplicado coas dúas listas ligadas e matrices. 54 00:02:17,607 --> 00:02:19,440 Se está aplicando con arrays, quere 55 00:02:19,440 --> 00:02:22,350 para asegurarse de manter o control de tanto o tamaño e capacidade. 56 00:02:22,350 --> 00:02:27,540 Así, o tamaño será o actual número de cousas na súa pila, 57 00:02:27,540 --> 00:02:32,900 Tendo en conta que a capacidade é o número total de cousas que pode almacenar no seu stack. 58 00:02:32,900 --> 00:02:34,220 Legal. 59 00:02:34,220 --> 00:02:35,767 >> Moi semellante, temos filas. 60 00:02:35,767 --> 00:02:38,850 Neste caso, en vez de pensar unha pila de bandexas, pense nunha liña. 61 00:02:38,850 --> 00:02:40,697 Este vai ser o primeiro en entrar, primeiro fóra. 62 00:02:40,697 --> 00:02:42,780 Entón, se está aliñados para algo na tenda, 63 00:02:42,780 --> 00:02:46,920 Esperamos que a persoa en primeiro A liña será axudado por primeira vez. 64 00:02:46,920 --> 00:02:49,350 >> No canto de empurrar dicindo e pop como nós facemos a pila, 65 00:02:49,350 --> 00:02:52,000 nós só dicir enqueue e dequeue. 66 00:02:52,000 --> 00:02:54,970 E, de novo, se está aplicar iso cunha matriz, 67 00:02:54,970 --> 00:02:56,720 necesitamos manter o control de non só o tamaño 68 00:02:56,720 --> 00:03:02,390 e capacidade, pero tamén a cabeza, o que será a cabeza da nosa cola. 69 00:03:02,390 --> 00:03:03,010 Legal. 70 00:03:03,010 --> 00:03:05,770 Calquera preguntas sobre nada diso? 71 00:03:05,770 --> 00:03:06,320 Impresionante. 72 00:03:06,320 --> 00:03:07,640 Seguindo adiante. 73 00:03:07,640 --> 00:03:08,564 >> OK, táboas de hash. 74 00:03:08,564 --> 00:03:10,605 Aquí é onde comeza a estar realmente interesante. 75 00:03:10,605 --> 00:03:14,150 Así, unha táboa hash é unha implementación dunha matriz asociativa. 76 00:03:14,150 --> 00:03:16,700 Entón, basicamente o que pasou é que temos toda esta entrada, 77 00:03:16,700 --> 00:03:18,750 e nós dalo a un hash función que di: 78 00:03:18,750 --> 00:03:21,840 OK, este é o lugar onde o táboa hash pertence. 79 00:03:21,840 --> 00:03:24,860 >> Así, a función hash máis simple que vimos é só dicir, 80 00:03:24,860 --> 00:03:28,170 OK, imos supor que queremos poñer cordas na nosa táboa de hash. 81 00:03:28,170 --> 00:03:30,870 E unha idea moi simple podería ser a de dicir, OK, 82 00:03:30,870 --> 00:03:34,350 imos clasificar pola primeira letra da palabra. 83 00:03:34,350 --> 00:03:37,570 Así pode ver aquí, imos dar bananas, imos poñer-la a través dunha función hash, 84 00:03:37,570 --> 00:03:40,190 e el di, hey, que debe ir no índice 1. 85 00:03:40,190 --> 00:03:45,120 >> Así, podemos pensar, esencialmente, dun hash mesa como unha morea de diferentes baldes. 86 00:03:45,120 --> 00:03:49,880 E cada un deses baldes está pasando para soster a cabeza dunha lista ligada. 87 00:03:49,880 --> 00:03:55,030 E nesa lista ligada é onde podemos realmente poñer diferentes partes de datos. 88 00:03:55,030 --> 00:03:57,820 >> Entón mergullo un pouco máis nunha función hash, é aquí 89 00:03:57,820 --> 00:03:59,870 o exemplo que eu só describe en que só dicir, 90 00:03:59,870 --> 00:04:02,460 OK, tome a primeira letra da palabra e estamos 91 00:04:02,460 --> 00:04:03,990 vai clasificalos lo para os baldes. 92 00:04:03,990 --> 00:04:08,490 Así, presuntamente, haberá 26 baldes, un para cada letra do alfabeto. 93 00:04:08,490 --> 00:04:10,090 Por que non é este un gran función hash? 94 00:04:10,090 --> 00:04:13,461 O que fai este non ideal? 95 00:04:13,461 --> 00:04:13,960 Si. 96 00:04:13,960 --> 00:04:15,790 >> Audiencia: Vas ter colisións. 97 00:04:15,790 --> 00:04:16,390 >> HANNAH Blumberg: Si, exactamente. 98 00:04:16,390 --> 00:04:18,000 Terá colisións. 99 00:04:18,000 --> 00:04:18,954 Entón, iso é unha cousa. 100 00:04:18,954 --> 00:04:21,620 E imos falar sobre como podemos fixar colisións en só un segundo. 101 00:04:21,620 --> 00:04:23,980 Outro problema con esta especial función hash 102 00:04:23,980 --> 00:04:25,980 é que o noso diferente baldes van ser 103 00:04:25,980 --> 00:04:28,960 de moi notablemente diferentes tamaños. 104 00:04:28,960 --> 00:04:33,840 >> Sabemos que hai un lote enteiro máis palabras que comezan con A que X, 105 00:04:33,840 --> 00:04:38,980 así que nós imos ter moito baldes desequilibradas na nosa táboa de hash. 106 00:04:38,980 --> 00:04:40,050 Legal. 107 00:04:40,050 --> 00:04:41,340 Entón, si, imos voltar a o punto de colisións. 108 00:04:41,340 --> 00:04:42,900 O que imos facer se hai unha colisión? 109 00:04:42,900 --> 00:04:44,490 >> Temos un par de opcións diferentes. 110 00:04:44,490 --> 00:04:47,600 Entón un, polo que supoño que estamos tentando para poñer baga na nosa táboa de hash. 111 00:04:47,600 --> 00:04:50,370 E vemos, oh, queremos para poñelas nun índice, 112 00:04:50,370 --> 00:04:52,070 pero a banana xa vive alí. 113 00:04:52,070 --> 00:04:53,110 O que imos facer? 114 00:04:53,110 --> 00:04:54,560 Temos dúas opcións principais. 115 00:04:54,560 --> 00:04:58,050 >> O número un é que podemos dicir, OK, non hai espazo no índice 1, 116 00:04:58,050 --> 00:05:03,210 pero imos seguir a buscar ata que poidamos atopar outro lugar aberto. 117 00:05:03,210 --> 00:05:08,490 Entón, imos dicir, OK, imos poñelas no punto 3. 118 00:05:08,490 --> 00:05:09,240 Esa é unha opción. 119 00:05:09,240 --> 00:05:11,470 Iso é chamado de sondaxe lineal. 120 00:05:11,470 --> 00:05:15,500 >> E unha segunda opción está dicindo, OK, ben, imos só facer cada un destes baldes 121 00:05:15,500 --> 00:05:17,470 ser cabezas de listas ligadas. 122 00:05:17,470 --> 00:05:21,910 E é OK se hai máis dunha cousa nun balde. 123 00:05:21,910 --> 00:05:23,820 Nós só estamos indo a anexo-lo para adiante. 124 00:05:23,820 --> 00:05:26,032 Entón, aquí podes ver, OK, cando inserido baga, nós 125 00:05:26,032 --> 00:05:28,240 só tomou bananas, tipo de empurrou-o un pouco 126 00:05:28,240 --> 00:05:29,842 e lanzou unha baga alí. 127 00:05:29,842 --> 00:05:31,050 E iso é tamén totalmente ben. 128 00:05:31,050 --> 00:05:32,830 Isto chámase fío separado. 129 00:05:32,830 --> 00:05:38,100 Podes pensar niso como tipo de como unha serie de cabezas de listas ligadas. 130 00:05:38,100 --> 00:05:41,950 Calquera preguntas sobre haxix táboas, funcións de hash? 131 00:05:41,950 --> 00:05:44,290 Impresionante. 132 00:05:44,290 --> 00:05:45,470 >> Árbores e intentos. 133 00:05:45,470 --> 00:05:47,287 Así, unha árbore é calquera tipo da estrutura de datos 134 00:05:47,287 --> 00:05:49,453 en que hai algún tipo de xerarquía ou algún tipo 135 00:05:49,453 --> 00:05:51,247 de valoración dos seus obxectos diferentes. 136 00:05:51,247 --> 00:05:53,580 E iso vai facer super- claro cando vemos un exemplo. 137 00:05:53,580 --> 00:05:56,960 E vimos intentos, ao longo con táboas de hash, en pset5-- 138 00:05:56,960 --> 00:06:00,700 que, de novo, xogo totalmente xusto para este quiz-- como outra datos 139 00:06:00,700 --> 00:06:03,110 estruturas que pudermos almacenar cousas distintas. 140 00:06:03,110 --> 00:06:06,782 No caso de dicionario, nós gardamos unha morea de palabras. 141 00:06:06,782 --> 00:06:08,240 Entón, imos dar un ollo a algunhas árbores. 142 00:06:08,240 --> 00:06:10,190 Polo tanto, este é un exemplo dunha árbore. 143 00:06:10,190 --> 00:06:13,105 El ten un tipo de estrutura, que a estrutura xerárquica, 144 00:06:13,105 --> 00:06:15,920 onde se pode ver que este nodo 1 na parte superior 145 00:06:15,920 --> 00:06:20,750 ten algún tipo de clasificación por riba de 2 e 3, que son por riba de 4, 5, e 6 e 7, 146 00:06:20,750 --> 00:06:22,860 que son por riba de 8 e 9. 147 00:06:22,860 --> 00:06:25,210 Entón, iso é todo o que entendemos por unha árbore, de modo que pode só tipo 148 00:06:25,210 --> 00:06:26,660 de imaxinar que na súa cabeza. 149 00:06:26,660 --> 00:06:29,050 >> Agora temos un par de árbores máis especializados. 150 00:06:29,050 --> 00:06:31,070 Así, un exemplo é unha árbore binaria. 151 00:06:31,070 --> 00:06:33,290 E unha árbore binaria é, de novo, só será 152 00:06:33,290 --> 00:06:37,040 unha estrutura de datos con algún tipo de xerarquía, pero cada un dos nós 153 00:06:37,040 --> 00:06:38,650 pode ter, como máximo, dous nenos. 154 00:06:38,650 --> 00:06:41,530 É alí onde a palabra vén de binario. 155 00:06:41,530 --> 00:06:43,410 Polo tanto, este é un exemplo dunha árbore binaria. 156 00:06:43,410 --> 00:06:45,720 Entón esta é unha categoría menor de árbores. 157 00:06:45,720 --> 00:06:48,960 >> Agora imos estar aínda máis específica e falar do binario de procura binaria trees-- 158 00:06:48,960 --> 00:06:51,310 árbores, en vez. 159 00:06:51,310 --> 00:06:56,430 Entón, aquí a idea é non só cada nodo ter como moito dous fillos, 160 00:06:56,430 --> 00:07:00,300 pero todos os nenos ao esquerda van ser menor 161 00:07:00,300 --> 00:07:03,450 e todos os nenos ao dereito será maior. 162 00:07:03,450 --> 00:07:05,890 Entón, observe só na nosa árbore binaria, non hai 163 00:07:05,890 --> 00:07:08,650 ningunha relación entre os números. 164 00:07:08,650 --> 00:07:12,990 Pero, na nosa procura binaria árbore, vemos, OK, aquí é 44. 165 00:07:12,990 --> 00:07:17,080 E cada número da esquerda é de 44 todo o menor e á dereita 166 00:07:17,080 --> 00:07:17,920 é maior. 167 00:07:17,920 --> 00:07:20,130 >> E que mantén en cada nivel da árbore. 168 00:07:20,130 --> 00:07:24,810 Así, aquí, é menor que esta 22 e esta é maior que 22. 169 00:07:24,810 --> 00:07:26,390 E iso é árbore binaria de investigación. 170 00:07:26,390 --> 00:07:28,900 Por que cremos que é chamado unha árbore de busca binária? 171 00:07:28,900 --> 00:07:30,651 O algoritmo é que lembra-lo de? 172 00:07:30,651 --> 00:07:31,650 Audiencia: Busca binaria. 173 00:07:31,650 --> 00:07:32,480 HANNAH Blumberg: Busca binaria. 174 00:07:32,480 --> 00:07:35,150 Porque se está a buscar un número especial nesta árbore, 175 00:07:35,150 --> 00:07:38,800 en cada punto, pode simplemente bater off metade da árbore, o que é óptimo. 176 00:07:38,800 --> 00:07:43,800 E así que vai dar algo que se asemella moito a procura binaria. 177 00:07:43,800 --> 00:07:45,870 Algunha pregunta? 178 00:07:45,870 --> 00:07:47,570 Todo ben, legal. 179 00:07:47,570 --> 00:07:48,560 >> Todo ben, intenta. 180 00:07:48,560 --> 00:07:49,657 Todos favorito. 181 00:07:49,657 --> 00:07:51,990 Polo tanto, este é o exemplo que vimos unha chea de clase. 182 00:07:51,990 --> 00:07:54,710 E, de novo, este é só un xeito que podemos almacenar datos. 183 00:07:54,710 --> 00:07:57,530 No caso de dicionario, de novo, iso é só será strings. 184 00:07:57,530 --> 00:08:00,870 Entón, imos ver o que iso realmente Parece que a un nivel lixeiramente inferior. 185 00:08:00,870 --> 00:08:03,690 >> Entón, imos dar un ollo nun nó nunha trie. 186 00:08:03,690 --> 00:08:07,532 E vemos, OK, non vai ser un booleana e un nó, 187 00:08:07,532 --> 00:08:09,170 un punteiro para un nó. 188 00:08:09,170 --> 00:08:11,400 E vemos que a Boolean chámase is_word. 189 00:08:11,400 --> 00:08:13,490 Entón, basicamente, é tanto vai corresponder 190 00:08:13,490 --> 00:08:16,750 para estes pequenos triángulos que di, se chegou aquí, 191 00:08:16,750 --> 00:08:19,100 atopou unha palabra completa. 192 00:08:19,100 --> 00:08:23,670 >> Sabemos que "Turing" over aquí é unha palabra completa, 193 00:08:23,670 --> 00:08:28,030 Considerando só T-L-R non é unha palabra porque non vemos que pouco delta. 194 00:08:28,030 --> 00:08:31,440 E aquel pequeno delta, unha vez máis, corresponde a este is_word, 195 00:08:31,440 --> 00:08:34,480 este is_word booleana. 196 00:08:34,480 --> 00:08:36,320 E entón temos unha variedade de nenos. 197 00:08:36,320 --> 00:08:39,860 Así, en cada nivel, ten un determinado nodo, 198 00:08:39,860 --> 00:08:42,470 e ese nó apunta a un matriz de todo o alfabeto. 199 00:08:42,470 --> 00:08:44,346 >> Así pode ver, unha vez máis, neste picture-- son 200 00:08:44,346 --> 00:08:48,170 manterá a ir cara atrás e forth-- que esa matriz na parte superior 201 00:08:48,170 --> 00:08:51,640 ten unha morea de diferentes nós saíndo dela. 202 00:08:51,640 --> 00:08:57,140 Ten 26 anos, ou 27 se quere para incluír un carácter adicional. 203 00:08:57,140 --> 00:09:01,320 E iso nos dá unha forma de almacenar os nosos datos 204 00:09:01,320 --> 00:09:04,450 de forma que pode ser encarado que pode mirar para arriba super rápido. 205 00:09:04,450 --> 00:09:06,650 Cal é o tempo de busca para unha trie? 206 00:09:06,650 --> 00:09:07,970 >> Audiencia: [inaudível]. 207 00:09:07,970 --> 00:09:08,300 >> HANNAH Blumberg: Yeah. 208 00:09:08,300 --> 00:09:09,550 En teoría, é hora constante. 209 00:09:09,550 --> 00:09:13,230 El só vai ser do tamaño a palabra que quere ollar para arriba. 210 00:09:13,230 --> 00:09:15,950 Mesmo se sumarmos un zilhão Máis palabras para o noso trie, 211 00:09:15,950 --> 00:09:18,160 non está indo para levar máis tempo para determinar 212 00:09:18,160 --> 00:09:19,690 unha palabra está no trie. 213 00:09:19,690 --> 00:09:21,412 Entón, iso é moi bo. 214 00:09:21,412 --> 00:09:23,697 >> Audiencia: Acaba iniciar esa matriz? 215 00:09:23,697 --> 00:09:24,780 Perdeu un punto ou dous. 216 00:09:24,780 --> 00:09:26,130 Pode só falar que por un segundo? 217 00:09:26,130 --> 00:09:26,680 >> HANNAH Blumberg: Por suposto, absolutamente. 218 00:09:26,680 --> 00:09:27,590 Boa pregunta. 219 00:09:27,590 --> 00:09:31,140 A cuestión era: nós ten unha matriz que é 220 00:09:31,140 --> 00:09:34,180 terá estrela nodo como oposición a só no, non? 221 00:09:34,180 --> 00:09:35,180 Legal. 222 00:09:35,180 --> 00:09:37,990 Entón, aquí o que estamos dicindo é a nosa matriz é só 223 00:09:37,990 --> 00:09:40,035 será punteiros para outras matrices. 224 00:09:40,035 --> 00:09:42,910 Polo que é o tipo de essentially-- se sente como unha lista ligada deste xeito 225 00:09:42,910 --> 00:09:46,620 onde cada unha destas nenos basta apuntar ao seguinte nodo. 226 00:09:46,620 --> 00:09:49,030 >> E a forma que nós realmente determinar, hey, OK, 227 00:09:49,030 --> 00:09:52,320 nós iterado través dun todo palabra, é esta palabra no dicionario, 228 00:09:52,320 --> 00:09:54,476 nós só comprobar este is_word. 229 00:09:54,476 --> 00:09:55,100 Boa pregunta. 230 00:09:55,100 --> 00:09:55,675 Si. 231 00:09:55,675 --> 00:09:56,216 Audiencia: Aceptar. 232 00:09:56,216 --> 00:09:57,470 Entón, cal foi o tempo de execución para o trie? 233 00:09:57,470 --> 00:09:58,386 >> HANNAH Blumberg: Claro. 234 00:09:58,386 --> 00:10:01,852 Así, o tempo de execución para un trie para lookup será de tempo constante. 235 00:10:01,852 --> 00:10:04,310 Por iso, só vai ser o número de letras da palabra. 236 00:10:04,310 --> 00:10:06,310 Non é dependente do tamaño do dicionario 237 00:10:06,310 --> 00:10:09,510 ou o tamaño da estrutura de datos. 238 00:10:09,510 --> 00:10:12,170 Entón aquí está un exemplo algo máis simple. 239 00:10:12,170 --> 00:10:15,430 >> Neste caso, pode ver que a palabra morcego é no dicionario 240 00:10:15,430 --> 00:10:18,900 e ten zoom, pero Non ten algo como zoolóxico. 241 00:10:18,900 --> 00:10:20,050 Como poderiamos facer zoolóxico? 242 00:10:20,050 --> 00:10:24,276 Como é que imos engadir ao noso zoolóxico dicionario, para a nosa trie? 243 00:10:24,276 --> 00:10:24,776 Si. 244 00:10:24,776 --> 00:10:27,014 >> Audiencia: Fai is_word certo para o [inaudível]. 245 00:10:27,014 --> 00:10:27,930 HANNAH Blumberg: Good. 246 00:10:27,930 --> 00:10:31,731 Entón nós diriamos Z-O-O, e entón nós quere marcar a opción tamén. 247 00:10:31,731 --> 00:10:32,230 Gran. 248 00:10:32,230 --> 00:10:35,160 249 00:10:35,160 --> 00:10:37,930 Imos comparar moi brevemente tenta contra táboas de hash. 250 00:10:37,930 --> 00:10:39,770 Tries son realmente grandes porque, como dixemos, 251 00:10:39,770 --> 00:10:41,610 eles proporcionar investigación de tempo constante. 252 00:10:41,610 --> 00:10:44,285 Pero a enorme desvantaxe é que son xigantescos marcan presenza. 253 00:10:44,285 --> 00:10:46,160 Pode obter o sentido, incluso de ollar para el, 254 00:10:46,160 --> 00:10:48,454 que vai levar unha cantidade enorme de memoria. 255 00:10:48,454 --> 00:10:50,620 Entón, eles van ser moi maior que táboas de hash, 256 00:10:50,620 --> 00:10:52,270 pero eles van dar os tempos de investigación moito máis rápido. 257 00:10:52,270 --> 00:10:54,478 Entón, ese é o tipo do seu tradeoff, o que se preocupa, 258 00:10:54,478 --> 00:10:57,350 tanto se se trata de velocidade ou memoria. 259 00:10:57,350 --> 00:11:02,251 Calquera preguntas sobre calquera dos que, todas as estruturas de datos C. 260 00:11:02,251 --> 00:11:02,750 Fermoso. 261 00:11:02,750 --> 00:11:03,250 Aceptar. 262 00:11:03,250 --> 00:11:07,322 Nós imos pasar un pouco bit de desenvolvemento web con María. 263 00:11:07,322 --> 00:11:08,280 MARIA ZLATKOVA: Lovely. 264 00:11:08,280 --> 00:11:09,036 Aceptar. 265 00:11:09,036 --> 00:11:10,380 >> HANNAH Blumberg: Pode usar o meu portátil. 266 00:11:10,380 --> 00:11:11,255 >> MARIA ZLATKOVA: Nice. 267 00:11:11,255 --> 00:11:13,320 268 00:11:13,320 --> 00:11:14,912 OK, legal. 269 00:11:14,912 --> 00:11:17,120 A medida que avanzamos agora para web desenvolvemento, nós falamos un pouco 270 00:11:17,120 --> 00:11:20,680 sobre permisos cambio de arquivos e directorios 271 00:11:20,680 --> 00:11:24,190 de xeito que poden ser accesibles para outros usuarios, para o mundo, 272 00:11:24,190 --> 00:11:28,640 e para que poidamos ver como basicamente, podemos transmitir-lles 273 00:11:28,640 --> 00:11:32,600 cando realizamos cousas como sitios que na súa maioría ten feito. 274 00:11:32,600 --> 00:11:36,400 >> Entón vimos o mando chmod, que é o modo de cambio, basicamente. 275 00:11:36,400 --> 00:11:39,300 Isto é un comando Linux e cambia os permisos de acceso 276 00:11:39,300 --> 00:11:40,410 de obxectos do sistema de ficheiros. 277 00:11:40,410 --> 00:11:43,370 E un obxecto de sistema de ficheiros é só un directorio, un arquivo, 278 00:11:43,370 --> 00:11:46,810 calquera cousa que poida cambiar os permisos de. 279 00:11:46,810 --> 00:11:53,750 >> Entón, a ver os permisos de arquivo, que escriba o comando ls, lista, -l. 280 00:11:53,750 --> 00:11:56,500 E cando nós digitamos iso, adoitamos ver algunhas permisos 281 00:11:56,500 --> 00:11:59,660 que tipo de ollar como este diante dun nome de directorio. 282 00:11:59,660 --> 00:12:01,260 Entón d refírese ao directorio. 283 00:12:01,260 --> 00:12:05,930 E entón temos tres tríades que basicamente 284 00:12:05,930 --> 00:12:11,675 consulte os permisos de ambos un usuario, un grupo, ou do mundo. 285 00:12:11,675 --> 00:12:16,490 >> Tipo de permisos que pudermos ten para estes tres grupos de persoas 286 00:12:16,490 --> 00:12:20,830 son ou r para lectura, w para escribir, e x para realizar. 287 00:12:20,830 --> 00:12:23,650 E podemos estar aqueles para o grupo eo mundo tamén. 288 00:12:23,650 --> 00:12:26,940 O máis curioso é que, ás veces, cando escribir o comando chmod, 289 00:12:26,940 --> 00:12:32,960 iríamos escriba un número que consistía en tres anacos. 290 00:12:32,960 --> 00:12:36,990 Así poderiamos facer, como 777 e que basicamente 291 00:12:36,990 --> 00:12:40,450 se refire ao valor engadido de cada unha destas tríades 292 00:12:40,450 --> 00:12:45,060 r porque remite a 4, w faría refírense a 2, e x se refiren a 1, 293 00:12:45,060 --> 00:12:50,020 Así, cando engadidos, cada un dos números descendería a un número cumulativo 294 00:12:50,020 --> 00:12:52,750 para un valor acumulativo entre 0 e 7. 295 00:12:52,750 --> 00:12:55,150 Por iso, tamén pode ter 0 para ningunha permiso en todo. 296 00:12:55,150 --> 00:12:58,200 E iso sería, basicamente, dar os permisos para calquera usuario, 297 00:12:58,200 --> 00:13:00,450 o grupo, ou do mundo. 298 00:13:00,450 --> 00:13:02,620 Calquera preguntas sobre esta tan lonxe? 299 00:13:02,620 --> 00:13:05,331 >> Audiencia: Vostede dixo que lin foi 4? 300 00:13:05,331 --> 00:13:06,164 MARIA ZLATKOVA: Si. 301 00:13:06,164 --> 00:13:07,568 Audiencia: [inaudível]. 302 00:13:07,568 --> 00:13:08,504 HANNAH Blumberg: Yup. 303 00:13:08,504 --> 00:13:11,790 Audiencia: E, a continuación, engadir todos aqueles outros ía indicar o seu número. 304 00:13:11,790 --> 00:13:12,665 MARIA ZLATKOVA: Yeah. 305 00:13:12,665 --> 00:13:14,970 Si. 306 00:13:14,970 --> 00:13:17,810 Estas son grandes cuestións. 307 00:13:17,810 --> 00:13:20,490 Encantador. 308 00:13:20,490 --> 00:13:25,340 Logo nós pulamos para dentro HTML e un pouco máis sobre desenvolvemento web. 309 00:13:25,340 --> 00:13:27,990 Entón HTML significa só Formato Markup Language. 310 00:13:27,990 --> 00:13:30,460 E esa é a reserva linguaxe que é un estándar 311 00:13:30,460 --> 00:13:32,720 que se usa para crear páxinas web. 312 00:13:32,720 --> 00:13:35,750 >> Chama-se unha linguaxe de reserva porque non é realmente feita. 313 00:13:35,750 --> 00:13:40,310 El non di como un código debe executar ou algo así. 314 00:13:40,310 --> 00:13:44,800 El só delineia e describe como unha web 315 00:13:44,800 --> 00:13:46,840 A páxina debe ser creada con cada un dos seus elementos 316 00:13:46,840 --> 00:13:48,460 e como eles deben ollar para o usuario. 317 00:13:48,460 --> 00:13:53,090 318 00:13:53,090 --> 00:13:57,110 >> Algunhas das etiquetas HTML que pasou por riba son os seguintes. 319 00:13:57,110 --> 00:14:00,500 Todos os nosos documentos HTML comezou co DOCTYPE html. 320 00:14:00,500 --> 00:14:02,550 Entón, temos sempre a etiqueta html. 321 00:14:02,550 --> 00:14:03,930 Temos unha cabeza e un corpo. 322 00:14:03,930 --> 00:14:07,890 E é importante que o HTML ten este tipo de estrutura aniñada 323 00:14:07,890 --> 00:14:09,280 porque é moi claro. 324 00:14:09,280 --> 00:14:13,200 E, a continuación, tórnase moi claro cando Debe abrir e, de feito, as etiquetas próximos. 325 00:14:13,200 --> 00:14:18,400 E nós sempre ten pechar tags que xa abriu. 326 00:14:18,400 --> 00:14:23,170 >> E aquí temos algúns dos tipos á cabeza das cousas que queremos ter. 327 00:14:23,170 --> 00:14:26,580 Polo tanto, temos, por exemplo, o título do CS50. 328 00:14:26,580 --> 00:14:31,980 E entón nós realmente pode vincular unha folla de estilo 329 00:14:31,980 --> 00:14:34,030 que define como nós denominar nosa web. 330 00:14:34,030 --> 00:14:35,650 Isto é CSS. 331 00:14:35,650 --> 00:14:39,320 Nós imos pasar por iso no próximo par de láminas ben. 332 00:14:39,320 --> 00:14:42,580 >> Dentro do corpo, definimos algunhas clases e IDs. 333 00:14:42,580 --> 00:14:45,860 E como un recordatorio, unha vez máis, IDs son únicos e clases 334 00:14:45,860 --> 00:14:47,390 poden ser atribuídos a varios elementos. 335 00:14:47,390 --> 00:14:52,110 E iso só quere dicir que podemos utilizar clases e IDs 336 00:14:52,110 --> 00:14:55,860 dentro doutro structures-- así, para exemplo, dentro de arquivos CSS ou estilo 337 00:14:55,860 --> 00:15:00,940 sheets-- referirse a elementos específicos e, basicamente, dicir que quere denominar 338 00:15:00,940 --> 00:15:03,280 ou proxectar un elemento dalgún xeito especial. 339 00:15:03,280 --> 00:15:06,440 E falamos de que por seus IDs e clases. 340 00:15:06,440 --> 00:15:09,870 E nós tamén pode referirse a cousas distintas por marcas, así como, 341 00:15:09,870 --> 00:15:13,830 pero IDs e clases só darnos algúns versatilidade e especialmente o que nós 342 00:15:13,830 --> 00:15:15,850 quere consultar. 343 00:15:15,850 --> 00:15:19,620 >> Polo tanto, só un exemplo. 344 00:15:19,620 --> 00:15:22,730 Podemos, de novo, dentro un arquivo CSS que 345 00:15:22,730 --> 00:15:25,770 quere definir algúns style-- así cores, fontes, 346 00:15:25,770 --> 00:15:30,340 e cousas así isso-- que pudermos definir o estilo para un corpo. 347 00:15:30,340 --> 00:15:32,640 Así que o definiría para toda a etiqueta body. 348 00:15:32,640 --> 00:15:36,160 Pero entón tamén podemos definir un estilo a un #title. 349 00:15:36,160 --> 00:15:40,390 E, de novo, a hashtag refírese ao noso ID eo punto refírese a nosa clase. 350 00:15:40,390 --> 00:15:44,760 >> E, a continuación, para os .info, nós Tamén é posible axustar algúns atributos. 351 00:15:44,760 --> 00:15:49,750 E, de novo, cando volver, tivemos a nosa clase chamada información eo noso título ID. 352 00:15:49,750 --> 00:15:53,422 E vemos que nos referimos a eles por #title e .info. 353 00:15:53,422 --> 00:15:55,380 Audiencia: Vostede diría hashtag [? me adoptar? ?] 354 00:15:55,380 --> 00:15:55,725 MARIA ZLATKOVA: Sentímolo? 355 00:15:55,725 --> 00:15:58,120 Audiencia: Vostede diría hashtag [? me adoptar? ?] 356 00:15:58,120 --> 00:16:01,400 MARIA ZLATKOVA: hashtag significa ID, así #title 357 00:16:01,400 --> 00:16:07,890 refírese a calquera elementos ter este ID chamado título. 358 00:16:07,890 --> 00:16:10,735 E, a continuación, o punto refírese a unha clase. 359 00:16:10,735 --> 00:16:14,590 Entón, .info refírese a este elemento porque ten a información de clase. 360 00:16:14,590 --> 00:16:15,090 Yup. 361 00:16:15,090 --> 00:16:17,905 >> Audiencia: Por que distinguilo los en HTML? 362 00:16:17,905 --> 00:16:20,985 Por que di certas cousas son IDs e certas cousas son de clase? 363 00:16:20,985 --> 00:16:22,610 MARIA ZLATKOVA: Isto é só ata você-- 364 00:16:22,610 --> 00:16:24,151 HANNAH Blumberg: Repita a pregunta. 365 00:16:24,151 --> 00:16:25,370 MARIA ZLATKOVA: Oh, desculpe. 366 00:16:25,370 --> 00:16:29,480 Por que nós distinguir certos elementos como IDs e outros elementos como clases? 367 00:16:29,480 --> 00:16:34,760 Iso é só porque é realmente moitas veces unha selección deseño. 368 00:16:34,760 --> 00:16:38,520 El lle dá unha morea de versatilidade en ser 369 00:16:38,520 --> 00:16:43,250 capaz de dicir que quero este elemento específico para ter este ID porque queren 370 00:16:43,250 --> 00:16:45,300 para facer unha chea de cousas con el, e eu só 371 00:16:45,300 --> 00:16:50,010 quere definir un estilo, estilo ou o que quere que a cor dese elemento. 372 00:16:50,010 --> 00:16:52,630 E a forma de facelo é só dándolle un ID. 373 00:16:52,630 --> 00:16:55,060 >> E entón, se quero ter un par de elementos diferentes 374 00:16:55,060 --> 00:16:58,940 Tendo en que, no canto de indo e definindo their-- 375 00:16:58,940 --> 00:17:03,840 no canto de facelo por tag porque a etiqueta faría 376 00:17:03,840 --> 00:17:07,369 definir a célula para toda a reserva para cada vez que tag é usada, 377 00:17:07,369 --> 00:17:09,740 pode definir unha clase a varios elementos. 378 00:17:09,740 --> 00:17:15,109 E despois é só acceder a esta clase e dicir Quero denominar esta clase así. 379 00:17:15,109 --> 00:17:17,579 >> E unha vez máis, a clase pode ser varios elementos diferentes 380 00:17:17,579 --> 00:17:21,150 eo ID debe ser único. 381 00:17:21,150 --> 00:17:21,849 Grandes cuestións. 382 00:17:21,849 --> 00:17:25,339 Algunha pregunta? 383 00:17:25,339 --> 00:17:26,220 OK, impresionante. 384 00:17:26,220 --> 00:17:30,680 385 00:17:30,680 --> 00:17:35,330 Unha vez máis, esta é a forma na que estes selectores son referenciados en CSS, con hashtag, 386 00:17:35,330 --> 00:17:40,031 cun punto, ou sen calquera cousa para atribuíndo o estilo dalgún tag, 387 00:17:40,031 --> 00:17:40,530 como corpo. 388 00:17:40,530 --> 00:17:43,500 389 00:17:43,500 --> 00:17:47,860 E aquí temos a xeral sintaxe de como iso é feito. 390 00:17:47,860 --> 00:17:52,830 391 00:17:52,830 --> 00:17:55,680 >> Para repetir algúns mellor prácticas para HTML e CSS, 392 00:17:55,680 --> 00:17:59,170 necesitamos, unha vez máis, peche todos as etiquetas HTML que se abren. 393 00:17:59,170 --> 00:18:03,950 E o que recomendamos que facer para os seus proxectos finais, 394 00:18:03,950 --> 00:18:10,560 así como para CS50 Finanzas, é facer Asegúrese de que todo o seu HTML válida. 395 00:18:10,560 --> 00:18:12,920 E iso está feito coa W3 comprobador. 396 00:18:12,920 --> 00:18:16,940 >> E entón o que fixemos e o que recomendamos facer 397 00:18:16,940 --> 00:18:19,790 separarse o estilo, así CSS de código. 398 00:18:19,790 --> 00:18:24,210 Así, todo o que se refire á forma como súa páxina vai mirar visualmente 399 00:18:24,210 --> 00:18:27,330 e como vai ser modificado debe ir a un documento CSS. 400 00:18:27,330 --> 00:18:33,880 E entón a súa reserva dicindo que as cousas están en relación uns ós outros é HTML, 401 00:18:33,880 --> 00:18:37,550 e que debe ir a dentro dos seus documentos HTML. 402 00:18:37,550 --> 00:18:38,590 Algunha pregunta? 403 00:18:38,590 --> 00:18:39,226 Mhm. 404 00:18:39,226 --> 00:18:42,628 >> Audiencia: O que é exactamente está a suceder coa validación de páxina 405 00:18:42,628 --> 00:18:47,945 cando estamos valida o HTML que [inaudível] creado? 406 00:18:47,945 --> 00:18:49,850 >> MARIA ZLATKOVA: Entón creo que what--. 407 00:18:49,850 --> 00:18:53,020 Entón, o que exactamente está a suceder coa validación de páxina 408 00:18:53,020 --> 00:18:55,570 e por que necesitamos facelo? 409 00:18:55,570 --> 00:18:59,180 Basicamente, necesitamos facelo porque unha morea de veces, o seu navegador, 410 00:18:59,180 --> 00:19:01,390 se non pechar unha etiqueta ou algo parecido, 411 00:19:01,390 --> 00:19:05,680 o explorador aínda está en curso para procesar unha páxina e aínda pode traballar, 412 00:19:05,680 --> 00:19:10,840 pero é a mellor práctica para asegurarse de que ti, de novo, pechou as súas marcas, 413 00:19:10,840 --> 00:19:13,190 que todos os seus elementos son a forma que eles deben ser, 414 00:19:13,190 --> 00:19:18,470 e, basicamente, que é polo convencións que son predefinidos. 415 00:19:18,470 --> 00:19:21,970 >> É, unha vez máis, só un que ten que 416 00:19:21,970 --> 00:19:24,040 estar aprendendo a facer, en oposición a ter 417 00:19:24,040 --> 00:19:25,696 código sloppier e cousas así. 418 00:19:25,696 --> 00:19:26,688 Si. 419 00:19:26,688 --> 00:19:27,680 Oh, desculpe. 420 00:19:27,680 --> 00:19:29,221 Eu penso que estaba levantando a man. 421 00:19:29,221 --> 00:19:31,240 Audiencia: Non, eu era só [inaudível]. 422 00:19:31,240 --> 00:19:33,800 >> MARIA ZLATKOVA: Aceptar. 423 00:19:33,800 --> 00:19:34,640 >> Audiencia: Grazas. 424 00:19:34,640 --> 00:19:36,181 >> MARIA ZLATKOVA: Por suposto, grazas. 425 00:19:36,181 --> 00:19:41,680 Entón, de novo, a suceder en como a información é transferida 426 00:19:41,680 --> 00:19:44,630 e modelos de comunicación para transferir información. 427 00:19:44,630 --> 00:19:45,730 TCP / IP. 428 00:19:45,730 --> 00:19:48,600 TCP só significa Transmission Protocolo de Control e IP 429 00:19:48,600 --> 00:19:51,260 refírese ao Internet Protocol. 430 00:19:51,260 --> 00:19:54,275 E iso só se refire a o xeito no que os datos son entregadas. 431 00:19:54,275 --> 00:19:59,470 432 00:19:59,470 --> 00:20:02,710 >> Se temos algúns datos que ten que ser entregado para você-- así 433 00:20:02,710 --> 00:20:06,770 fai unha proposta para un determinado servidor. 434 00:20:06,770 --> 00:20:09,800 Por exemplo, cando accederes cs50.net, 435 00:20:09,800 --> 00:20:12,420 facemos unha proposta para servidor CS50 e nós 436 00:20:12,420 --> 00:20:14,720 ver que queremos chegar este tipo de información. 437 00:20:14,720 --> 00:20:19,294 E, a continuación, están baseadas neste protocolo para saber como esta información é entregado, 438 00:20:19,294 --> 00:20:21,460 servidor de información dá de volta para nós, o cliente. 439 00:20:21,460 --> 00:20:25,590 E entón somos capaces de ver a información á páxina 440 00:20:25,590 --> 00:20:26,390 e, a continuación, usalo. 441 00:20:26,390 --> 00:20:29,300 442 00:20:29,300 --> 00:20:33,050 >> Entón, a continuación, Protocolo de Transferencia de Hipertexto é só outro protocolo ou establecer 443 00:20:33,050 --> 00:20:37,470 dos convenios que define como o navegador web eo servidor web 444 00:20:37,470 --> 00:20:38,890 debe comunicarse. 445 00:20:38,890 --> 00:20:43,730 E poñer iso todo en conxunto, HTTP, de novo, 446 00:20:43,730 --> 00:20:50,960 só define como este hipertexto definido polo HTML que temos está a traballar-lo, 447 00:20:50,960 --> 00:20:59,500 como debe ser entregado a vostede e como que os datos que se entrega a vostede 448 00:20:59,500 --> 00:21:00,540 chega a ti. 449 00:21:00,540 --> 00:21:05,990 >> E é por iso, se vostedes me lembro dunha clase, tivemos unha morea de solicitudes 450 00:21:05,990 --> 00:21:08,970 e tivemos unha morea de sintaxe para estes pedidos que estamos 451 00:21:08,970 --> 00:21:10,250 vai pasar por riba de agora. 452 00:21:10,250 --> 00:21:13,270 Entón, de novo, cando enviamos unha proposta para un servidor, 453 00:21:13,270 --> 00:21:15,920 temos que establecer un par de cousas. 454 00:21:15,920 --> 00:21:18,520 Por iso, necesitamos de atopar o tipo da solicitude de que estamos asentados. 455 00:21:18,520 --> 00:21:22,180 E, de novo, temos, por exemplo, Get é un tipo de método 456 00:21:22,180 --> 00:21:25,290 que temos no noso pedido. 457 00:21:25,290 --> 00:21:31,710 >> E, a continuación, HTTP / 1.1 é só o protocolo que estamos usando actualmente. 458 00:21:31,710 --> 00:21:34,224 459 00:21:34,224 --> 00:21:36,890 A maior parte do tempo, que vai co protocolo que estamos a usar. 460 00:21:36,890 --> 00:21:40,290 Entón, se ten unha pregunta como que no seu quiz. 461 00:21:40,290 --> 00:21:43,120 Isto é as convencións que temos ata agora. 462 00:21:43,120 --> 00:21:46,580 >> Backslash refírese a que tipo de cousas que estamos pedindo. 463 00:21:46,580 --> 00:21:52,810 A continuación, o noso anfitrión é, por exemplo, neste caso, estamos intentando ir google.com. 464 00:21:52,810 --> 00:21:57,070 Polo tanto, este é o valor para un servidor. 465 00:21:57,070 --> 00:21:59,330 Este é un tipo de solicitude que podería ser enviada. 466 00:21:59,330 --> 00:22:02,890 >> E a continuación, un tipo de resposta que podería enviar, de novo, con base neste protocolo, 467 00:22:02,890 --> 00:22:05,190 é novo, HTTP / 1.1. 468 00:22:05,190 --> 00:22:07,150 Entón esta é a versión HTTP novo. 469 00:22:07,150 --> 00:22:09,730 200 OK é só o código de estado. 470 00:22:09,730 --> 00:22:12,860 E que OK é só unha frase con base nese código de estado. 471 00:22:12,860 --> 00:22:15,520 >> E, a continuación, o Content-Type refírese ao tipo 472 00:22:15,520 --> 00:22:20,295 que é devolto para ti que é para esa páxina web que recibe 473 00:22:20,295 --> 00:22:22,570 e que o seu navegador pode render despois. 474 00:22:22,570 --> 00:22:24,401 E iso é text / html. 475 00:22:24,401 --> 00:22:26,660 >> Audiencia: Que significa 1.1? 476 00:22:26,660 --> 00:22:29,910 >> MARIA ZLATKOVA: Isto é só o versión de-- Oh, o que significa 1,1? 477 00:22:29,910 --> 00:22:37,075 Esa é só a versión, o HTTP versión dun protocolo que estamos a usar. 478 00:22:37,075 --> 00:22:37,700 Boa pregunta. 479 00:22:37,700 --> 00:22:38,366 Outras preguntas? 480 00:22:38,366 --> 00:22:41,222 481 00:22:41,222 --> 00:22:45,080 >> Audiencia: Podería resumir Content-Type rápida real? 482 00:22:45,080 --> 00:22:48,150 >> MARIA ZLATKOVA: Así que é o que o servidor. 483 00:22:48,150 --> 00:22:51,020 o tipo de information-- que é tipo de contido foi as preguntas. 484 00:22:51,020 --> 00:22:53,400 Así, foi o tipo de información que recibe de volta 485 00:22:53,400 --> 00:22:58,200 desde o servidor, o tipo de datos que o seu navegador pode, entón, 486 00:22:58,200 --> 00:23:00,604 ingresos que está a usar. 487 00:23:00,604 --> 00:23:03,020 Audiencia: Isto é o que este protocolo está dicindo para lle facer? 488 00:23:03,020 --> 00:23:03,390 MARIA ZLATKOVA: Sentímolo? 489 00:23:03,390 --> 00:23:05,380 Audiencia: Isto é o que o protocolo di? 490 00:23:05,380 --> 00:23:05,915 MARIA ZLATKOVA: A protocol-- 491 00:23:05,915 --> 00:23:07,940 Audiencia: -o que o Content-Type é ou what-- 492 00:23:07,940 --> 00:23:12,040 MARIA ZLATKOVA: O protocolo baséase on-- o que é o protocolo dicindo a vostede? 493 00:23:12,040 --> 00:23:16,070 Isto é só a forma que esta información 494 00:23:16,070 --> 00:23:18,610 se entrega a vostede en base de que tipo de protocolo 495 00:23:18,610 --> 00:23:21,830 foi esta información ten entregado de volta para ti. 496 00:23:21,830 --> 00:23:23,500 Isto ten sentido especie de? 497 00:23:23,500 --> 00:23:28,320 498 00:23:28,320 --> 00:23:30,070 HANNAH Blumberg: Vostede pode pensar de protocolo 499 00:23:30,070 --> 00:23:33,300 como um-- Creo Profesor Malan descreveu- 500 00:23:33,300 --> 00:23:36,910 en clase como tipo de como um-- é como o equivalente humano de sincronismo. 501 00:23:36,910 --> 00:23:44,930 Dicir, como, hey, eu teño unha proposta e eu saber como xestionar HTTP da versión 1.1. 502 00:23:44,930 --> 00:23:48,770 E, a continuación, o servidor di: Oh, ben, I-- e ambos existen. 503 00:23:48,770 --> 00:23:51,337 Eu tamén sei como xestionar HTTP / 1.1. 504 00:23:51,337 --> 00:23:53,170 E eu vou dar- faga unha copia de algúns contidos. 505 00:23:53,170 --> 00:23:56,230 Neste caso, vai como do tipo text / html. 506 00:23:56,230 --> 00:23:58,480 Entón é un tipo de só un xeito un deles para communicating-- 507 00:23:58,480 --> 00:24:00,480 >> MARIA ZLATKOVA: É só confirmando que é 508 00:24:00,480 --> 00:24:03,290 ambos a seguir a mesma e que tanto o protocolo 509 00:24:03,290 --> 00:24:06,620 o cliente eo modo server-- o navegador eo server-- 510 00:24:06,620 --> 00:24:09,280 tipo de saber o que é falando e teñen 511 00:24:09,280 --> 00:24:12,557 a convención para pasar en datos. 512 00:24:12,557 --> 00:24:17,022 >> Audiencia: Entón o Content-Type part-- o texto Content-Type / html-- que é 513 00:24:17,022 --> 00:24:18,521 unha parte separada da mesma mensaxe? 514 00:24:18,521 --> 00:24:20,509 Ou é parte de, digamos, 200? 515 00:24:20,509 --> 00:24:22,010 Será que 200 dicirlles que é é-- 516 00:24:22,010 --> 00:24:23,770 >> MARIA ZLATKOVA: 200 di que todo foi ben. 517 00:24:23,770 --> 00:24:27,900 E, a continuación, tipo de contido é unha especie de parte separada do mesmo mensaxe, 518 00:24:27,900 --> 00:24:34,274 e dicir as cousas que eu retorno ten este tipo de text / html. 519 00:24:34,274 --> 00:24:35,690 É só dar máis información. 520 00:24:35,690 --> 00:24:38,700 521 00:24:38,700 --> 00:24:39,995 Ten algo que engadir? 522 00:24:39,995 --> 00:24:40,495 Aceptar. 523 00:24:40,495 --> 00:24:43,590 524 00:24:43,590 --> 00:24:46,530 >> Calquera outra dúbida sobre iso? 525 00:24:46,530 --> 00:24:48,370 Impresionante. 526 00:24:48,370 --> 00:24:54,070 Así, algúns outros estado de HTTP que poderiamos obter, ademais de 200 OK, 527 00:24:54,070 --> 00:24:59,500 os que vimos quizais posiblemente un lote son 403 e 404. 528 00:24:59,500 --> 00:25:05,190 Así, 404, se estaba tentando Acceso algo que non existe. 529 00:25:05,190 --> 00:25:10,460 Así, por exemplo, na súa Serie de exercicios CS50 Finanzas, 530 00:25:10,460 --> 00:25:15,640 se fose render quote.html e non ten o ficheiro, 531 00:25:15,640 --> 00:25:19,740 pero no seu canto tiña quote.php, que resultaría nun 404 Not Found 532 00:25:19,740 --> 00:25:21,600 porque o ficheiro pode non existir. 533 00:25:21,600 --> 00:25:25,690 >> Para un 403 prohibido, que refírese ás permisos. 534 00:25:25,690 --> 00:25:31,150 Polo tanto, se algún ficheiro non pode ser lido polo mundo, pode que un 403 retorno. 535 00:25:31,150 --> 00:25:34,510 536 00:25:34,510 --> 00:25:37,810 Outros que podes get-- 301, movido permanentemente; 537 00:25:37,810 --> 00:25:41,300 302, Atopado; 304, Modificado; 400, Bad Request; 538 00:25:41,300 --> 00:25:47,330 e, a continuación, un erro de servidor interno para 500 e 503, servizo non dispoñible. 539 00:25:47,330 --> 00:25:48,140 Si. 540 00:25:48,140 --> 00:25:51,490 >> Audiencia: Será que esperabamos Recordar todos os estados? 541 00:25:51,490 --> 00:25:53,739 MARIA ZLATKOVA: eu tería Los na súa folla de fraude. 542 00:25:53,739 --> 00:25:55,146 [Risas] 543 00:25:55,146 --> 00:25:59,954 Audiencia: Será que estamos espera para sabe o que desencadea cada unha delas? 544 00:25:59,954 --> 00:26:00,995 MARIA ZLATKOVA: Son? 545 00:26:00,995 --> 00:26:03,870 HANNAH Blumberg: Para os que temos executar into-- entón a cuestión foi-- 546 00:26:03,870 --> 00:26:08,010 MARIA ZLATKOVA: Son esperamos para saber o que cada un destes estado 547 00:26:08,010 --> 00:26:09,330 códigos pode ser desencadeada por? 548 00:26:09,330 --> 00:26:13,240 Así, para os que usamos e foi para dentro, eu diría, si. 549 00:26:13,240 --> 00:26:16,610 Entón, nós sempre visto 200 Aceptar e deu clases lo en Serie de exercicios. 550 00:26:16,610 --> 00:26:19,071 Vimos 403, 404. 551 00:26:19,071 --> 00:26:20,550 Para outros? 552 00:26:20,550 --> 00:26:22,690 >> HANNAH Blumberg: Eu faría dicir 500 parece un xogo xusto. 553 00:26:22,690 --> 00:26:23,330 >> MARIA ZLATKOVA: 500, si. 554 00:26:23,330 --> 00:26:24,246 >> HANNAH Blumberg: Yeah. 555 00:26:24,246 --> 00:26:27,006 Só ten que ter un sentido xeral o que lles causa. 556 00:26:27,006 --> 00:26:28,880 E tamén só por estes nomes, pode tipo de 557 00:26:28,880 --> 00:26:32,890 como facer un palpite como para o que realmente lles causou. 558 00:26:32,890 --> 00:26:36,919 Por exemplo, mudarse definitivamente probablemente o ficheiro foi movido permanentemente. 559 00:26:36,919 --> 00:26:39,328 >> Audiencia: Pero nun anterior exame, houbo un así 560 00:26:39,328 --> 00:26:41,050 como é que espera de nós para responder a isto? 561 00:26:41,050 --> 00:26:42,883 >> HANNAH Blumberg: Isto valía cero puntos. 562 00:26:42,883 --> 00:26:45,870 A pregunta sobre o 418 no bule é tecnicamente un estado de HTTP, 563 00:26:45,870 --> 00:26:47,090 pero valeu a pena cero puntos. 564 00:26:47,090 --> 00:26:48,320 Obviamente, non está Espérase que os coñezo. 565 00:26:48,320 --> 00:26:49,670 >> Audiencia: É un real? 566 00:26:49,670 --> 00:26:51,970 >> HANNAH Blumberg: É un verdadeiro un, pero iso non significa nada. 567 00:26:51,970 --> 00:26:52,700 É só unha broma. 568 00:26:52,700 --> 00:26:55,480 569 00:26:55,480 --> 00:26:57,010 Internet a xente divertido. 570 00:26:57,010 --> 00:26:59,680 >> MARIA ZLATKOVA: Grandes cuestións, rapaces. 571 00:26:59,680 --> 00:27:01,452 Algunha pregunta? 572 00:27:01,452 --> 00:27:04,891 >> Audiencia: Qué é erro interno do servidor? 573 00:27:04,891 --> 00:27:06,640 MARIA ZLATKOVA: Internal Erro de servidor só 574 00:27:06,640 --> 00:27:10,050 significa que foi incapaz de comunicarse 575 00:27:10,050 --> 00:27:13,400 co servidor, por algunha razón. 576 00:27:13,400 --> 00:27:15,400 Polo tanto, non é necesariamente algo que ten que ver 577 00:27:15,400 --> 00:27:19,170 co cliente ou algo parecido. 578 00:27:19,170 --> 00:27:22,170 Eu non sei de ningún exemplo específico que temos pasado para explicar, 579 00:27:22,170 --> 00:27:23,000 pero si. 580 00:27:23,000 --> 00:27:23,250 >> HANNAH Blumberg: Claro. 581 00:27:23,250 --> 00:27:25,625 Así, por exemplo, como imos dicir que estaba traballando mashup 582 00:27:25,625 --> 00:27:30,440 e un servidor de Google descendeu para algúns razón, unha caída de enerxía, digamos. 583 00:27:30,440 --> 00:27:33,400 Iso sería un servidor interno erro ou algún tipo de-- me gusta de ti 584 00:27:33,400 --> 00:27:34,630 non obter unha resposta de volta. 585 00:27:34,630 --> 00:27:35,260 >> MARIA ZLATKOVA: Yeah. 586 00:27:35,260 --> 00:27:37,050 É só cando está incapaz de comunicarse 587 00:27:37,050 --> 00:27:40,299 co servidor, por algunha razón, porque de que vai para abaixo ou algunha outra razón. 588 00:27:40,299 --> 00:27:44,430 589 00:27:44,430 --> 00:27:47,690 Entón ir para PHP. 590 00:27:47,690 --> 00:27:49,930 PHP, a diferenza do HTML, é un linguaxe de programación. 591 00:27:49,930 --> 00:27:54,820 E comezamos a usalo porque é moi útil para desenvolvemento web. 592 00:27:54,820 --> 00:27:56,940 >> Temos utilizado por primeira vez en CS50 Finanzas. 593 00:27:56,940 --> 00:28:02,240 E, basicamente, nos axuda a traer xuntos esta cita, o deseño, 594 00:28:02,240 --> 00:28:07,460 e como nós realmente usar información para amosar cousas nunha páxina web. 595 00:28:07,460 --> 00:28:11,870 Así, o propio PHP significa PHP Formato Preprocessor, 596 00:28:11,870 --> 00:28:15,360 polo que é unha backnorym recursiva de seu. 597 00:28:15,360 --> 00:28:22,330 E abrindo etiquetas para PHP nós á esquerda e frechas correctas cos puntos de interrogación 598 00:28:22,330 --> 00:28:23,060 e php. 599 00:28:23,060 --> 00:28:25,890 >> Entón, nós vimos unha chea del. 600 00:28:25,890 --> 00:28:29,150 Agora, só estamos indo a pasar por riba algunhas das cousas básicas sobre el. 601 00:28:29,150 --> 00:28:32,280 Así, con PHP, a variable nomes comezan con sinal de dólar. 602 00:28:32,280 --> 00:28:35,660 Non especificar, unha vez máis, unha variable de tipo máis. 603 00:28:35,660 --> 00:28:38,450 Así como fixemos con C, nós non necesitamos facelo. 604 00:28:38,450 --> 00:28:41,670 605 00:28:41,670 --> 00:28:44,490 >> Podemos facer unha chea de diferente cousas con variables. 606 00:28:44,490 --> 00:28:47,750 Podemos poñer-los xuntos concatenando-los 607 00:28:47,750 --> 00:28:52,900 coa notación de punto, que nós non poderiamos facer en C de novo. 608 00:28:52,900 --> 00:28:57,490 Unha vez máis, temos un pouco máis de versatilidade con PHP en termos de variables. 609 00:28:57,490 --> 00:29:00,080 Unha vez máis, non temos unha función principal. 610 00:29:00,080 --> 00:29:03,370 >> E PHP interprétase en oposición a compilado, 611 00:29:03,370 --> 00:29:09,970 Entón, como fixemos para arquivos C, non temos que facelo para PHP. 612 00:29:09,970 --> 00:29:15,440 Pero si, a forma que a lingua corre por si só, é interpretado. 613 00:29:15,440 --> 00:29:18,550 E entón vagamente ingresaran Significa só que nós 614 00:29:18,550 --> 00:29:22,490 Non ten que especificar unha variable tipo e tipo de variables 615 00:29:22,490 --> 00:29:25,415 son comprendidos en tempo de execución. 616 00:29:25,415 --> 00:29:29,185 >> Audiencia: Pero o que fixo quere dicir con concatenación de punto? 617 00:29:29,185 --> 00:29:30,060 MARIA ZLATKOVA: Claro. 618 00:29:30,060 --> 00:29:37,660 Cando queremos poñer as cousas together-- polo que se tivemos algunha variable que 619 00:29:37,660 --> 00:29:41,500 tivo o valor de 3 e outro variable que tivo o valor de secuencia de caracteres, 620 00:29:41,500 --> 00:29:45,920 poderiamos poñer as variables xunto poñendo un punto entre eles 621 00:29:45,920 --> 00:29:46,970 e concatenar-los. 622 00:29:46,970 --> 00:29:52,670 Ou poderiamos crear un chamado nome de variable 623 00:29:52,670 --> 00:29:56,900 e poñelas en conxunto por concatenación de dúas secuencias. 624 00:29:56,900 --> 00:30:00,680 >> Entón, se nós tivésemos unha corda en parella citas e nós poñer un punto despois dela, 625 00:30:00,680 --> 00:30:03,660 e entón tivemos outra corda, que crearía unha secuencia completamente. 626 00:30:03,660 --> 00:30:05,242 >> Audiencia: Aceptar. 627 00:30:05,242 --> 00:30:06,450 MARIA LETONIA: Foi claro? 628 00:30:06,450 --> 00:30:07,099 Audiencia: É. 629 00:30:07,099 --> 00:30:07,890 MARIA ZLATKOVA: Aceptar. 630 00:30:07,890 --> 00:30:08,766 Si. 631 00:30:08,766 --> 00:30:11,146 >> Audiencia: Cando di interpretado en vez de compilado, 632 00:30:11,146 --> 00:30:14,160 está falando non fai iso Debe ser tan específico cando 633 00:30:14,160 --> 00:30:15,906 trátase PHP versus C? 634 00:30:15,906 --> 00:30:18,085 635 00:30:18,085 --> 00:30:20,710 MARIA ZLATKOVA: Cando dicimos interpretado en oposición a compilado, 636 00:30:20,710 --> 00:30:21,850 o que queremos dicir? 637 00:30:21,850 --> 00:30:26,220 Entón isto significa que nós non precisamos arquivos executable para realizar o PHP. 638 00:30:26,220 --> 00:30:29,870 Isto significa que é executado como vai. 639 00:30:29,870 --> 00:30:31,650 Isto ten sentido? 640 00:30:31,650 --> 00:30:32,495 Un pouco máis. 641 00:30:32,495 --> 00:30:34,620 HANNAH Blumberg: Entón pode pensar dun intérprete 642 00:30:34,620 --> 00:30:38,980 como outro programa que se encarga para ir liña por liña a través do PHP 643 00:30:38,980 --> 00:30:42,745 e realmente executa-lo, a diferenza para compilar todo para abaixo para binario. 644 00:30:42,745 --> 00:30:46,050 En realidade, non significa nada sobre como específico que debe ser. 645 00:30:46,050 --> 00:30:49,470 Aínda necesitamos ser máis preciso, e non fazê- esqueza o seu punto e coma, e asegúrese 646 00:30:49,470 --> 00:30:51,470 ten o seu sinal de dólar, e cousas así. 647 00:30:51,470 --> 00:30:52,240 Boa pregunta. 648 00:30:52,240 --> 00:30:53,115 >> MARIA ZLATKOVA: Yeah. 649 00:30:53,115 --> 00:30:55,590 Entón, liña por liña, como diferenza con arquivos C, 650 00:30:55,590 --> 00:30:59,100 temos que facer toda a finais antes de que poidamos realmente executalo. 651 00:30:59,100 --> 00:31:00,360 Esa é a principal diferenza. 652 00:31:00,360 --> 00:31:02,655 Pero, de novo, non podemos realmente ser menos específico. 653 00:31:02,655 --> 00:31:08,760 654 00:31:08,760 --> 00:31:13,950 Entón matrices en PHP representan actualmente un mapa ordenado. 655 00:31:13,950 --> 00:31:17,550 >> Entón valores matrices asociados ás chaves. 656 00:31:17,550 --> 00:31:23,350 As dúas formas de declarar unha matriz, derivada sintaxe, 657 00:31:23,350 --> 00:31:26,380 podemos ser máis explícito en dicir que temos un array 658 00:31:26,380 --> 00:31:31,010 e temos esa key1 que mapea para este value1, key2 que mapea value2. 659 00:31:31,010 --> 00:31:34,660 Ou podemos simplemente crear unha matriz que contén o propio valores 660 00:31:34,660 --> 00:31:38,360 e, a continuación, as teclas son entendida dunha forma. 661 00:31:38,360 --> 00:31:40,000 Calquera dúbida sobre iso? 662 00:31:40,000 --> 00:31:42,500 >> Audiencia: Qué as teclas estar no segundo exemplo? 663 00:31:42,500 --> 00:31:47,100 664 00:31:47,100 --> 00:31:47,920 0, 1, 2, 3? 665 00:31:47,920 --> 00:31:50,650 666 00:31:50,650 --> 00:31:55,780 >> MARIA ZLATKOVA: Por exemplo, é só as claves neste non necesariamente 667 00:31:55,780 --> 00:31:56,550 facer a diferenza. 668 00:31:56,550 --> 00:32:01,720 Eles só definir como pode usar os valores dentro del. 669 00:32:01,720 --> 00:32:08,660 Entón, se tivésemos un foreach lazo en PHP que faría 670 00:32:08,660 --> 00:32:14,760 nos permite pasar por todos os valores, podemos pasar por todos os valores, 671 00:32:14,760 --> 00:32:19,570 mesmo se ou non definido unha clave específica dentro do lugar de 672 00:32:19,570 --> 00:32:20,820 sintaxe anterior. 673 00:32:20,820 --> 00:32:23,460 >> Así, mesmo con este tipo de array, poderiamos aínda 674 00:32:23,460 --> 00:32:26,260 ter un loop foreach que pasa a través de cada 675 00:32:26,260 --> 00:32:31,240 dos valores da chave na matriz. 676 00:32:31,240 --> 00:32:36,180 Así, a sintaxe dun foreach loop, imos comezar con unha matriz. 677 00:32:36,180 --> 00:32:38,720 678 00:32:38,720 --> 00:32:43,900 Esta variable $ arr é a nosa matriz real que definimos no slide anterior 679 00:32:43,900 --> 00:32:47,550 como o valor que vai literalmente a través de cada un dos valores, 680 00:32:47,550 --> 00:32:50,122 independentemente do feito tivemos unha clave ou non. 681 00:32:50,122 --> 00:32:53,080 E entón podemos facer algo con o valor dentro do loop foreach. 682 00:32:53,080 --> 00:32:57,730 Entón, de novo, se tivemos un array como este aquí created-- 683 00:32:57,730 --> 00:33:03,270 polo que temos a clave de foo e valor de bar, chave de Baz e valor de qux-- 684 00:33:03,270 --> 00:33:09,730 podemos ter un loop foreach que pasa por matriz como valor de clave 685 00:33:09,730 --> 00:33:11,900 e, a continuación, facer algo coa clave e / ou o valor. 686 00:33:11,900 --> 00:33:15,980 Pero non necesariamente sempre ten que ter un foreach loops que 687 00:33:15,980 --> 00:33:19,410 pasa por matriz como mapa clave para valor. 688 00:33:19,410 --> 00:33:26,060 Podemos pasar polo matriz loop foreach como valor. 689 00:33:26,060 --> 00:33:28,990 >> HANNAH Blumberg: E eu creo que a-- foi a pregunta, o que 690 00:33:28,990 --> 00:33:31,229 é o índice implícito? 691 00:33:31,229 --> 00:33:31,895 Audiencia: kind. 692 00:33:31,895 --> 00:33:32,240 MARIA ZLATKOVA: Oh. 693 00:33:32,240 --> 00:33:33,406 HANNAH Blumberg: Si, si. 694 00:33:33,406 --> 00:33:36,150 Entón, basicamente, se non especificar unha clave, que vai ser 01. 695 00:33:36,150 --> 00:33:37,140 >> MARIA ZLATKOVA: Yeah. 696 00:33:37,140 --> 00:33:41,718 Así como co C, é de cero indexados se non especificar unha chave. 697 00:33:41,718 --> 00:33:42,384 Audiencia: Sentímolo. 698 00:33:42,384 --> 00:33:43,827 Vostede podería tentar falar un pouco máis alto? 699 00:33:43,827 --> 00:33:45,270 Estou tendo un pouco de problemas para escoitar todo. 700 00:33:45,270 --> 00:33:46,478 >> MARIA ZLATKOVA: Eu sinto moito. 701 00:33:46,478 --> 00:33:48,439 Si, por suposto. 702 00:33:48,439 --> 00:33:50,230 Entón quere me para pasar por riba de novo? 703 00:33:50,230 --> 00:33:51,680 Ou é isto-- 704 00:33:51,680 --> 00:33:54,930 Audiencia: Entón o slide-- anterior podería simplemente voltar un segundo. 705 00:33:54,930 --> 00:33:57,313 MARIA ZLATKOVA: Por suposto, desculpe. 706 00:33:57,313 --> 00:33:59,237 Audiencia: Entón o segundo matriz aquí non 707 00:33:59,237 --> 00:34:04,135 parecen ter un valor de chave, tipo de [? o nexo de causalidade. ?] 708 00:34:04,135 --> 00:34:05,343 MARIA ZLATKOVA: Correcto, non. 709 00:34:05,343 --> 00:34:07,608 Audiencia: Entón, como é que funciona cando di que é todo ou nada. 710 00:34:07,608 --> 00:34:08,969 Para min, iso parece un [? foo?] xa. 711 00:34:08,969 --> 00:34:10,093 >> MARIA ZLATKOVA: Si, si. 712 00:34:10,093 --> 00:34:12,969 Entón, de novo, este é un mapa ordenado, neste sentido, 713 00:34:12,969 --> 00:34:15,639 que non son comprendidos, por exemplo, os índices 714 00:34:15,639 --> 00:34:20,159 aquí pode ser entendido como 0, 1, 2, 3. 715 00:34:20,159 --> 00:34:25,929 De novo, iso é ter os índices é a equivalente 716 00:34:25,929 --> 00:34:28,980 de claves mapeadas en valores. 717 00:34:28,980 --> 00:34:34,710 Entón, se a nosa clave foi 0-- desculpe. 718 00:34:34,710 --> 00:34:36,524 >> HANNAH Blumberg: Non, alí está giz ata aquí. 719 00:34:36,524 --> 00:34:36,929 É realmente moi bo. 720 00:34:36,929 --> 00:34:37,460 >> MARIA ZLATKOVA: Isto é óptimo. 721 00:34:37,460 --> 00:34:38,260 Aceptar. 722 00:34:38,260 --> 00:34:49,489 Entón, de novo, $ arr 0 sería a clave para o valor 1. 723 00:34:49,489 --> 00:34:51,138 0 sería a clave para o valor 1. 724 00:34:51,138 --> 00:34:51,971 Audiencia: Eu sinto moito. 725 00:34:51,971 --> 00:34:53,190 É invisible. 726 00:34:53,190 --> 00:34:53,659 >> HANNAH Blumberg: Todo ben, deixa para alí. 727 00:34:53,659 --> 00:34:54,980 Chalk foi unha mala idea. 728 00:34:54,980 --> 00:34:58,030 Eu leva-la de volta. 729 00:34:58,030 --> 00:35:01,425 Pode pensar das claves como 0 mapea ao valor 1. 730 00:35:01,425 --> 00:35:02,300 MARIA ZLATKOVA: Yeah. 731 00:35:02,300 --> 00:35:04,630 Polo tanto, este é 0, é dicir 1, 2, 3. 732 00:35:04,630 --> 00:35:05,760 Estes poden ser as súas claves. 733 00:35:05,760 --> 00:35:10,020 Pode pensar neles as-- si. 734 00:35:10,020 --> 00:35:12,740 Entón, en vez de ter claves explícitas, son 735 00:35:12,740 --> 00:35:17,180 tipo de entenderse como os índices desde 0. 736 00:35:17,180 --> 00:35:21,630 737 00:35:21,630 --> 00:35:24,820 O giz non axuda. 738 00:35:24,820 --> 00:35:25,722 Si. 739 00:35:25,722 --> 00:35:30,914 >> Audiencia: Para o loop foreach, se quixésemos ver o que de valor, 740 00:35:30,914 --> 00:35:33,245 Sería só o índice automaticamente a 0? 741 00:35:33,245 --> 00:35:34,120 MARIA ZLATKOVA: Yeah. 742 00:35:34,120 --> 00:35:35,745 Sería pasar por cada un dos valores. 743 00:35:35,745 --> 00:35:39,130 Audiencia: [inaudível] como 0 ou tería que facer 0? 744 00:35:39,130 --> 00:35:43,710 >> MARIA ZLATKOVA: Vostede tería para dicir como sinal de dólar e, a continuación, 745 00:35:43,710 --> 00:35:46,266 algún nome da variable, valor. 746 00:35:46,266 --> 00:35:47,182 Audiencia: [inaudível]. 747 00:35:47,182 --> 00:35:50,048 748 00:35:50,048 --> 00:35:50,964 MARIA ZLATKOVA: Sentímolo? 749 00:35:50,964 --> 00:35:52,839 Audiencia: Sentímolo, eu son só tentando me lembrar. 750 00:35:52,839 --> 00:35:57,190 Como faría iso se pode facelo automaticamente indexación é só 0 de? 751 00:35:57,190 --> 00:36:00,780 >> MARIA ZLATKOVA: Entón, como faría iso se non teñen nomes clave específicas? 752 00:36:00,780 --> 00:36:01,710 >> Audiencia: É. 753 00:36:01,710 --> 00:36:07,820 >> MARIA ZLATKOVA: tería só define-- só dicir a si mesmo como un nome. 754 00:36:07,820 --> 00:36:17,950 Así, na súa Serie de exercicios, vostedes poderían Teña en conta que foreach $ row como $ liñas, 755 00:36:17,950 --> 00:36:24,610 creamos a nós mesmos desa $ row dicindo queremos pasar por liña como $ liñas. 756 00:36:24,610 --> 00:36:28,360 Aínda que non tivésemos esta $ explícito liñas definidas, 757 00:36:28,360 --> 00:36:31,990 puidésemos simplemente ir e dicir que este sexa o noso clave, 758 00:36:31,990 --> 00:36:33,615 e só pasar por cada un dos valores. 759 00:36:33,615 --> 00:36:37,295 760 00:36:37,295 --> 00:36:41,660 >> Audiencia: Entón é unha nova variable de valor estamos creando para almacenar [inaudível]? 761 00:36:41,660 --> 00:36:46,820 762 00:36:46,820 --> 00:36:49,990 >> MARIA ZLATKOVA: Entón non é inherentemente unha nova variable. 763 00:36:49,990 --> 00:37:00,310 É unha variable que se refire á no interior da matriz para cada un deles. 764 00:37:00,310 --> 00:37:02,060 HANNAH Blumberg: É un novo nome variable. 765 00:37:02,060 --> 00:37:04,018 MARIA ZLATKOVA: Si, é un novo nome de variable, 766 00:37:04,018 --> 00:37:06,680 pero non é inherently-- si. 767 00:37:06,680 --> 00:37:08,950 É só unha nova variable que pode facelo. 768 00:37:08,950 --> 00:37:12,680 Entón, como facer fixemos $ Liña como $ liñas, liñas 769 00:37:12,680 --> 00:37:17,980 era un novo nome da variable que podería crear no noso loop foreach. 770 00:37:17,980 --> 00:37:22,065 Non ten que preexistir antes diso. 771 00:37:22,065 --> 00:37:25,777 >> Audiencia: Podería pasar polo lóxica para cada un, usando o exemplo alí? 772 00:37:25,777 --> 00:37:26,610 MARIA ZLATKOVA: Mhm. 773 00:37:26,610 --> 00:37:31,240 774 00:37:31,240 --> 00:37:32,080 Oh, desculpe. 775 00:37:32,080 --> 00:37:33,780 Aquí está o exemplo. 776 00:37:33,780 --> 00:37:34,280 Claro. 777 00:37:34,280 --> 00:37:38,950 Así, para cada array-- así isto significa ir a esa matriz 778 00:37:38,950 --> 00:37:43,930 como clave value-- que está pasando que pasar por esa matriz 779 00:37:43,930 --> 00:37:49,480 e primeiro ir buscar foo, o foo clave ea barra de valor. 780 00:37:49,480 --> 00:37:51,570 E, a continuación, no segundo iteración do bucle, 781 00:37:51,570 --> 00:37:55,090 vai pasar e tomar o Baz clave eo valor Qux. 782 00:37:55,090 --> 00:38:00,512 E entón podes facer algo con calquera deles ou de ambos. 783 00:38:00,512 --> 00:38:03,488 >> Audiencia: Entón, a idea detrás tendo un punto clave para o valor, 784 00:38:03,488 --> 00:38:07,470 que é o que acaba accedendo? 785 00:38:07,470 --> 00:38:10,680 >> MARIA ZLATKOVA: Cal é a idea de ter un enlace clave para valorar? 786 00:38:10,680 --> 00:38:16,400 É só unha outra convención, outra xeito de atravesar a matriz 787 00:38:16,400 --> 00:38:22,600 e ser capaz de acceder tanto o clave ou o valor ou ambos, e utilizalos. 788 00:38:22,600 --> 00:38:27,100 >> Audiencia: Cal é o papel para o ordenar que o foreach execútase en? 789 00:38:27,100 --> 00:38:29,250 Entón, se nós estabamos para engadir elementos para a matriz máis tarde, 790 00:38:29,250 --> 00:38:32,140 serían eses os primeiros chamado na matriz foreach, 791 00:38:32,140 --> 00:38:33,750 ou sería máis tarde? 792 00:38:33,750 --> 00:38:37,770 >> MARIA ZLATKOVA: Entón, cal é a fin de que o foreach 793 00:38:37,770 --> 00:38:39,210 circuíto pasa por unha matriz en? 794 00:38:39,210 --> 00:38:42,220 Ela pasa por o primeiro elemento para o último elemento, 795 00:38:42,220 --> 00:38:43,400 para o último elemento engadido. 796 00:38:43,400 --> 00:38:48,020 Se engadir elementos máis tarde, farían accessed-- ser os primeiros elementos que 797 00:38:48,020 --> 00:38:51,410 pode acceder como o primeiro elementos da matriz, 798 00:38:51,410 --> 00:38:57,620 e, a continuación, que ía pasar por cada un os elementos como unha especie de ordered-- 799 00:38:57,620 --> 00:39:02,930 non un ordenado, pero a forma que eles foron colocados na matriz. 800 00:39:02,930 --> 00:39:06,855 >> Audiencia: Entón, novos elementos engádense máis tarde? 801 00:39:06,855 --> 00:39:10,680 Entón, eles están added-- van ser o últimas no [? iteración. ?] 802 00:39:10,680 --> 00:39:14,280 >> MARIA ZLATKOVA: Novos elementos can-- basicamente, cando novos elementos son engadidos, 803 00:39:14,280 --> 00:39:16,520 son engadidos ao final da matriz? 804 00:39:16,520 --> 00:39:17,632 >> Audiencia: É. 805 00:39:17,632 --> 00:39:18,840 MARIA ZLATKOVA: Eu creo que si. 806 00:39:18,840 --> 00:39:20,850 Si. 807 00:39:20,850 --> 00:39:24,330 E despois co seu loop foreach, despois de ter engadido novos elementos 808 00:39:24,330 --> 00:39:26,790 e pasar por eles, os novos elementos faría 809 00:39:26,790 --> 00:39:30,930 accessed-- ser o novo elemento, se é engadido por último, sería acceder por última vez. 810 00:39:30,930 --> 00:39:34,416 >> Audiencia: Pode só dar un exemplo algo que ía [inaudível] 811 00:39:34,416 --> 00:39:37,404 con algo con valor como o [inaudível] ou o valor, 812 00:39:37,404 --> 00:39:38,910 como o xeito no que desexa que formatear? 813 00:39:38,910 --> 00:39:39,785 >> MARIA ZLATKOVA: Claro. 814 00:39:39,785 --> 00:39:42,340 815 00:39:42,340 --> 00:39:46,410 Podo dar un exemplo do que fariamos co valor? 816 00:39:46,410 --> 00:39:52,440 Entón, o que vostedes poden estar familiarizado con é que nos pasamos por unha matriz 817 00:39:52,440 --> 00:39:55,380 e, basicamente, impreso cada un dos elementos, 818 00:39:55,380 --> 00:40:00,910 por exemplo, como parte dun lista ordenada ou algo que. 819 00:40:00,910 --> 00:40:02,674 Isto ten sentido ou queremos a-- 820 00:40:02,674 --> 00:40:04,340 Audiencia: Podemos imprimir eses valores para fóra? 821 00:40:04,340 --> 00:40:13,220 MARIA ZLATKOVA: Si, poderiamos imprimir e, a continuación, basicamente debido a $ Valor 822 00:40:13,220 --> 00:40:16,570 este valor específico, que sería imprimir o valor no interior do mesmo. 823 00:40:16,570 --> 00:40:20,150 Entón, se nós estabamos na nosa primeira iteración del e nós impreso $ value, 824 00:40:20,150 --> 00:40:23,775 estariamos a impresión bar. 825 00:40:23,775 --> 00:40:27,020 >> Audiencia: Hai tamén son para loops en PHP ou só loops foreach? 826 00:40:27,020 --> 00:40:30,430 >> MARIA ZLATKOVA: Non hai tamén para loops en PHP. 827 00:40:30,430 --> 00:40:33,399 E a súa lóxica é principalmente o aínda que o que está acostumado. 828 00:40:33,399 --> 00:40:34,690 Audiencia: Entón, o seu valor é nulo. 829 00:40:34,690 --> 00:40:35,090 MARIA ZLATKOVA: É como se o mesmo. 830 00:40:35,090 --> 00:40:35,590 Si. 831 00:40:35,590 --> 00:40:37,747 Audiencia: Eu só vou preguntar. 832 00:40:37,747 --> 00:40:39,695 Entón, cando declarar un array, non 833 00:40:39,695 --> 00:40:42,617 para dicir o tamaño que vai ser, o que significa que pode só 834 00:40:42,617 --> 00:40:44,417 engadir e eliminar elementos [inaudível]. 835 00:40:44,417 --> 00:40:45,250 MARIA ZLATKOVA: Yup. 836 00:40:45,250 --> 00:40:45,750 Yup. 837 00:40:45,750 --> 00:40:46,251 Exactamente. 838 00:40:46,251 --> 00:40:48,875 Cando declarar unha matriz, nós Non é necesario dicir o tamaño que é, 839 00:40:48,875 --> 00:40:51,022 así que podemos só engadir elementos para el máis tarde tamén. 840 00:40:51,022 --> 00:40:55,075 841 00:40:55,075 --> 00:40:55,700 Máis preguntas? 842 00:40:55,700 --> 00:40:59,870 843 00:40:59,870 --> 00:41:05,950 Así, traendo PHP e HTML xuntos, o que temos seen-- ben, 844 00:41:05,950 --> 00:41:15,130 Por exemplo, neste exemplo, temos un formulario HTML que ten un campo de entrada. 845 00:41:15,130 --> 00:41:18,830 >> E o campo de entrada só nome e, a continuación, el ten un botón Enviar. 846 00:41:18,830 --> 00:41:26,040 E cando prema o Subir botón, no noso arquivo hello.php, 847 00:41:26,040 --> 00:41:32,130 porque o método para o formulario é obter, podemos acceder todo o que está no nome 848 00:41:32,130 --> 00:41:40,360 polo que obter variable global que é-- a sintaxe para iso é de R $ _GET. 849 00:41:40,360 --> 00:41:44,520 E entón podemos acceder calquera que sexa a entrada do usuario dentro do mesmo formulario para nome 850 00:41:44,520 --> 00:41:47,410 especificando o nome dese campo. 851 00:41:47,410 --> 00:41:51,480 852 00:41:51,480 --> 00:41:55,060 >> Calquera outras preguntas ou calquera preguntas para este exemplo concreto? 853 00:41:55,060 --> 00:41:58,275 >> Audiencia: Onde está o PHP? 854 00:41:58,275 --> 00:41:59,150 MARIA ZLATKOVA: Aquí. 855 00:41:59,150 --> 00:42:01,150 Entón esta é a nosa marca de apertura cara ó PHP. 856 00:42:01,150 --> 00:42:01,530 >> Audiencia: Oh, non. 857 00:42:01,530 --> 00:42:02,363 >> MARIA ZLATKOVA: Si. 858 00:42:02,363 --> 00:42:05,320 859 00:42:05,320 --> 00:42:09,609 >> HANNAH Blumberg :? A = é un atallo para iso é PHP e só eco. 860 00:42:09,609 --> 00:42:10,150 Audiencia: Oh. 861 00:42:10,150 --> 00:42:10,720 MARIA ZLATKOVA: Si, desculpe. 862 00:42:10,720 --> 00:42:12,040 Eu debería ter feito isto ben claro. 863 00:42:12,040 --> 00:42:13,759 >> HANNAH Blumberg: impresión. 864 00:42:13,759 --> 00:42:16,800 MARIA ZLATKOVA: É só a función que nos permite imprimir algo. 865 00:42:16,800 --> 00:42:19,795 866 00:42:19,795 --> 00:42:20,420 Boa pregunta. 867 00:42:20,420 --> 00:42:24,140 868 00:42:24,140 --> 00:42:25,495 Entón going-- si. 869 00:42:25,495 --> 00:42:31,940 >> Audiencia: É alí vai ser moi un pouco de codificación manual de PHP e HTML 870 00:42:31,940 --> 00:42:33,450 no cuestionario 1? 871 00:42:33,450 --> 00:42:36,310 872 00:42:36,310 --> 00:42:38,810 MARIA ZLATKOVA: Non pode haber un boa cantidade de interpretación 873 00:42:38,810 --> 00:42:43,330 de PHP e HTML, non necesariamente como unha enorme cantidade de codificación, 874 00:42:43,330 --> 00:42:46,960 aínda pode ter que escribir loop foreach, porén, un loop. 875 00:42:46,960 --> 00:42:49,790 Calquera das espiras que cubrir aquí é un xogo xusto. 876 00:42:49,790 --> 00:42:51,889 E iso é todo el. 877 00:42:51,889 --> 00:42:53,430 HANNAH Blumberg: Eu estaría preparado. 878 00:42:53,430 --> 00:42:57,010 Do mesmo xeito que nós lle pediu para escribir unha morea de funcións C na proba 0, 879 00:42:57,010 --> 00:42:59,766 Eu estaría disposto a facer o mesmo en PHP e JavaScript. 880 00:42:59,766 --> 00:43:00,640 MARIA ZLATKOVA: Yeah. 881 00:43:00,640 --> 00:43:03,210 HANNAH Blumberg: Eu diría un little-- como non somos 882 00:43:03,210 --> 00:43:06,251 vai facer vostede escribe un enorme HTML A páxina só porque iso é un pouco 883 00:43:06,251 --> 00:43:08,240 tedioso, pero pode ter partes. 884 00:43:08,240 --> 00:43:09,310 Iso é xogo totalmente xusto. 885 00:43:09,310 --> 00:43:11,082 Como páxina HTML pequeno, totalmente xusto. 886 00:43:11,082 --> 00:43:11,623 Audiencia: Aceptar. 887 00:43:11,623 --> 00:43:13,814 Que tal en JavaScript tamén? 888 00:43:13,814 --> 00:43:14,730 HANNAH Blumberg: Yeah. 889 00:43:14,730 --> 00:43:15,250 Xogo xusto do JavaScript. 890 00:43:15,250 --> 00:43:15,635 >> MARIA ZLATKOVA: Yeah. 891 00:43:15,635 --> 00:43:16,801 Iso é xogo completamente xusto. 892 00:43:16,801 --> 00:43:19,280 HANNAH Blumberg: Nós imos chegar para que, como 10 minutos. 893 00:43:19,280 --> 00:43:23,750 >> MARIA ZLATKOVA: SQL, unha vez máis, Structured Query Language. 894 00:43:23,750 --> 00:43:28,651 El basicamente nos permite xestionar datos nunha base de datos relacional de xestión 895 00:43:28,651 --> 00:43:29,150 sistema. 896 00:43:29,150 --> 00:43:31,149 Isto significa basicamente só que temos en algún lugar 897 00:43:31,149 --> 00:43:37,980 para almacenar algúns datos que nos pode querer usar nunha web ou dalgunha outra forma. 898 00:43:37,980 --> 00:43:42,190 E entón temos consultas para obter información de nosa base de datos 899 00:43:42,190 --> 00:43:44,320 ou para introducir a información neles contida. 900 00:43:44,320 --> 00:43:47,560 Unha morea de o Update ones-- común, INSERT, SELECT e DELETE. 901 00:43:47,560 --> 00:43:50,790 >> Así, para Update, esta é a sintaxe para actualizar datos nunha base de datos. 902 00:43:50,790 --> 00:43:53,330 903 00:43:53,330 --> 00:43:57,340 Actualizar esta táboa chamada mesa dicindo SET, 904 00:43:57,340 --> 00:44:04,170 podemos definir algúns valores en todo liñas para igual outra cousa. 905 00:44:04,170 --> 00:44:09,410 Por iso, tamén pode especificar algunhas específicas entradas que queremos modificar 906 00:44:09,410 --> 00:44:11,240 e que pode ser usando WHERE. 907 00:44:11,240 --> 00:44:16,380 E podemos especificar que queremos só modificar algunhas liñas onde a casa para, 908 00:44:16,380 --> 00:44:19,830 se tivésemos unha táboa de estudantes e todos os alumnos tiñan casa, 909 00:44:19,830 --> 00:44:24,890 por iso, só podería modificar algúns valores onde unha casa é igual Currier, 910 00:44:24,890 --> 00:44:25,430 por exemplo. 911 00:44:25,430 --> 00:44:29,120 912 00:44:29,120 --> 00:44:31,800 >> Para INSERT, podemos introducir certos valores nunha táboa. 913 00:44:31,800 --> 00:44:35,150 Entón INSERT INTO táboa, e, a continuación, os valores, 914 00:44:35,150 --> 00:44:39,080 e, a continuación, entre paréntesis, nós especificamos cales os valores que quere inserir. 915 00:44:39,080 --> 00:44:43,220 Entón INSERT INTO táboa, col1 e col2, o valor é val1 e val2. 916 00:44:43,220 --> 00:44:48,930 Polo tanto, este introduce basicamente unha nova liña na unha táboa que contén os valores 1 e 2 917 00:44:48,930 --> 00:44:50,850 segundo as columnas 1 e 2. 918 00:44:50,850 --> 00:44:54,760 >> E entón nós imos pasar por riba un rápido exemplo de como isto parece 919 00:44:54,760 --> 00:44:56,310 como no noso banco de datos un pouco. 920 00:44:56,310 --> 00:44:58,685 Pero esta consulta final que creo que nós imos pasar por riba, 921 00:44:58,685 --> 00:45:01,450 SELECT, só nos permite para seleccionar datos a partir dunha táboa 922 00:45:01,450 --> 00:45:03,080 para posiblemente usalo despois. 923 00:45:03,080 --> 00:45:05,830 E o xeito no que facemos é que nós só almacena-lo en algunha variable. 924 00:45:05,830 --> 00:45:07,780 E entón podemos posiblemente usalo de novo. 925 00:45:07,780 --> 00:45:10,260 >> Entón, escolla estrela significa seleccionar todo. 926 00:45:10,260 --> 00:45:13,280 Isto é só unha abreviación para a selección de todos. 927 00:45:13,280 --> 00:45:19,760 FROM táboa WHERE, estamos á procura para algunhas condicións específicas, 928 00:45:19,760 --> 00:45:22,290 Entón, onde é igual a columna algo, por exemplo. 929 00:45:22,290 --> 00:45:24,410 Se nós só queriamos Seleccionar todo a partir da táboa, 930 00:45:24,410 --> 00:45:28,400 iso só selecciona todas as columnas e todas as liñas de unha táboa. 931 00:45:28,400 --> 00:45:32,040 >> E, a continuación, DELETE FROM táboa ONDE col é igual a algo, 932 00:45:32,040 --> 00:45:36,440 este só exclúe algúns liña da nosa mesa 933 00:45:36,440 --> 00:45:38,860 onde temos algunhas condicións específicas. 934 00:45:38,860 --> 00:45:41,870 Neste caso, as condicións son columna é igual a algo. 935 00:45:41,870 --> 00:45:43,460 Entón, só tes que un rápido exemplo diso. 936 00:45:43,460 --> 00:45:49,100 Se temos esa mesa aquí e nós inserir-lo nunha táboa, estes valores, 937 00:45:49,100 --> 00:45:50,400 que ía introducir unha nova liña. 938 00:45:50,400 --> 00:45:56,380 E se tivésemos de incremento automático, isto só incrementar o ID de 0 a 1 a 2. 939 00:45:56,380 --> 00:46:00,010 >> Se seleccionado todos os alumnos a partir del, só retorna todos os campos e as liñas. 940 00:46:00,010 --> 00:46:02,430 Onde ano é maior que ou igual a 2016, 941 00:46:02,430 --> 00:46:04,390 que só ía volver Hannah e eu. 942 00:46:04,390 --> 00:46:08,360 E entón se nós só seleccionado ID de ano e ano dos estudantes 943 00:46:08,360 --> 00:46:11,710 onde a casa está Cabot House, que sería, de novo, volver Hannah e eu. 944 00:46:11,710 --> 00:46:14,430 >> Entón, se eliminada dos estudantes onde o nome é igual a Rob, 945 00:46:14,430 --> 00:46:16,760 que ía eliminar a liña enteira. 946 00:46:16,760 --> 00:46:19,696 E entón, se imos definir o nome, estudantes ACTUALIZACIÓN 947 00:46:19,696 --> 00:46:21,570 Nome do conxunto é igual a Daven ONDE casa é igual 948 00:46:21,570 --> 00:46:27,010 Cabot House, que está indo a ir a esas liñas e, a continuación, actualizar o nome. 949 00:46:27,010 --> 00:46:31,470 >> E despois de algúns tipos de datos SQL son CHAR, varchar, INT e float. 950 00:46:31,470 --> 00:46:32,760 Estes son xogo xusto. 951 00:46:32,760 --> 00:46:36,740 Eu ía de novo e asegúrese de que vostede sabe 952 00:46:36,740 --> 00:46:40,930 e te-los na súa folla de fraude, o que cada un destes personaxes 953 00:46:40,930 --> 00:46:44,140 foron usados ​​para, o que usou a eles nos seus Serie de exercicios, 954 00:46:44,140 --> 00:46:48,050 e asegúrese de que vostede está familiarizado e cómodo con ter que escoller 955 00:46:48,050 --> 00:46:51,450 desde diferentes tipos de datos na súa pset. 956 00:46:51,450 --> 00:46:51,950 Si. 957 00:46:51,950 --> 00:46:54,300 >> Audiencia: O que foi que a táboa almacenada? 958 00:46:54,300 --> 00:46:57,119 Si, onde está esta táboa almacenada? 959 00:46:57,119 --> 00:46:59,160 MARIA ZLATKOVA: Ben, agora, non está almacenado. 960 00:46:59,160 --> 00:47:00,700 En calquera caso, onde está esta táboa almacenada? 961 00:47:00,700 --> 00:47:04,503 Pero pode ser almacenada nunha base de datos de SQL. 962 00:47:04,503 --> 00:47:07,330 >> Audiencia: E onde está a base de datos SQL? 963 00:47:07,330 --> 00:47:11,200 No ordenador, en liña nalgún lugar, o servidor? 964 00:47:11,200 --> 00:47:15,000 >> MARIA ZLATKOVA: Pode ser un serie de cousas distintas. 965 00:47:15,000 --> 00:47:19,690 >> HANNAH Blumberg: Temos interface Táboas SQL principalmente con phpMyAdmin. 966 00:47:19,690 --> 00:47:22,060 Así, poderiamos preguntar a un servidor para almacena-los para nós. 967 00:47:22,060 --> 00:47:23,830 Poderiamos almacena-los no noso propio ordenador. 968 00:47:23,830 --> 00:47:27,950 >> MARIA ZLATKOVA: Depende só de como quere facelo por si mesmo. 969 00:47:27,950 --> 00:47:30,075 Pero temos que chegou a almacenar eles, como Hannah mencionado, 970 00:47:30,075 --> 00:47:31,755 en phpMyAdmin, que é en liña. 971 00:47:31,755 --> 00:47:36,550 972 00:47:36,550 --> 00:47:39,280 E, a continuación, a forma como usamos PHP e SQL, nós almacena-lo 973 00:47:39,280 --> 00:47:43,450 nalgúns variable o que temos consultado para. 974 00:47:43,450 --> 00:47:48,370 >> Entón, se nós Seleccionar todo historia onde user_id é igual a identificación da sesión, 975 00:47:48,370 --> 00:47:53,900 que seleccionar todas as liñas para a persoa específica que 976 00:47:53,900 --> 00:47:58,327 é rexistrada no desde a historia mesa e clasificalos en liñas. 977 00:47:58,327 --> 00:48:00,410 Unha cousa legal é saber que a función de consulta do CS50 978 00:48:00,410 --> 00:48:02,180 protexe contra marcas de inxección de SQL. 979 00:48:02,180 --> 00:48:07,420 Isto só significa que garante a entrada que é ingresaran é correcta 980 00:48:07,420 --> 00:48:09,920 e que a persoa que está a entrar na entrada 981 00:48:09,920 --> 00:48:15,100 non está intentando input algúns malicioso código, tanto soltar nosas mesas 982 00:48:15,100 --> 00:48:17,305 ou borrar todo dentro do noso banco de datos. 983 00:48:17,305 --> 00:48:20,060 984 00:48:20,060 --> 00:48:23,400 >> Unha rápida visión xeral do Modelo Model View Controller, 985 00:48:23,400 --> 00:48:27,360 é só unha forma de organizar e pensar sobre o código. 986 00:48:27,360 --> 00:48:29,100 É unha vez máis, un paradigma de deseño. 987 00:48:29,100 --> 00:48:33,380 O que isto significa que nós can-- e é unha boa práctica 988 00:48:33,380 --> 00:48:37,790 para separar as diferentes pezas do noso código eo que 989 00:48:37,790 --> 00:48:40,530 controlar a estes tres paradigmas. 990 00:48:40,530 --> 00:48:46,700 >> Polo tanto, a nosa visión é a maioría das veces a nosa modelos, o noso deseño, o camiño 991 00:48:46,700 --> 00:48:48,260 que definir como o noso código parece. 992 00:48:48,260 --> 00:48:55,190 Isto é principalmente nosos arquivos CSS e da forma que definiu o deseño do noso código, 993 00:48:55,190 --> 00:48:55,710 basicamente. 994 00:48:55,710 --> 00:48:59,280 Noso controlador é principalmente o que temos está a facer con arquivos PHP. 995 00:48:59,280 --> 00:49:03,030 Entón, de novo, traballando co información que temos 996 00:49:03,030 --> 00:49:06,700 e establecer como iso información é utilizada, 997 00:49:06,700 --> 00:49:10,660 e, a continuación, pasa esta información tanto para a visualización ou o modelo. 998 00:49:10,660 --> 00:49:13,880 E o modelo, o xeito que temos benvida a empregar é foi o noso banco de datos, 999 00:49:13,880 --> 00:49:17,510 de xeito que a nosa información é almacenado para que teña en algún lugar 1000 00:49:17,510 --> 00:49:21,490 para vivir, e calquera dos código que se relaciona coa forma como 1001 00:49:21,490 --> 00:49:25,410 que obter a información ou a xeito que actualizar esta información. 1002 00:49:25,410 --> 00:49:28,940 1003 00:49:28,940 --> 00:49:33,200 >> Así, no modelo MVC, HTTP solicitudes enviaranse a un servidor web. 1004 00:49:33,200 --> 00:49:36,220 A continuación, o controlador interpreta a petición do usuario 1005 00:49:36,220 --> 00:49:38,260 e, a continuación, valida a entrada do usuario. 1006 00:49:38,260 --> 00:49:41,580 É opcional que temos o controlador comunicar 1007 00:49:41,580 --> 00:49:44,000 cun modelo, de xeito algo como a nosa base de datos 1008 00:49:44,000 --> 00:49:47,500 ou algunha outra función que retransmite información. 1009 00:49:47,500 --> 00:49:50,340 E, a continuación, finalmente, o controlador pasa a información para a vista 1010 00:49:50,340 --> 00:49:52,090 de xeito que pode ser rendida e que pode 1011 00:49:52,090 --> 00:49:55,860 chegar a ser visible para calquera persoa accedendo á páxina web. 1012 00:49:55,860 --> 00:49:58,440 1013 00:49:58,440 --> 00:50:01,340 >> Algunha pregunta? 1014 00:50:01,340 --> 00:50:01,840 Impresionante. 1015 00:50:01,840 --> 00:50:04,530 1016 00:50:04,530 --> 00:50:08,469 Entón, de novo, o modelo, a súa función, unha vez máis, 1017 00:50:08,469 --> 00:50:11,260 é persistente almacenamento de información, xestionar e organizar datos. 1018 00:50:11,260 --> 00:50:13,890 E o que vimos ata agora é a base de datos MySQL 1019 00:50:13,890 --> 00:50:16,200 e os ficheiros de datos que poden utilizar. 1020 00:50:16,200 --> 00:50:20,580 >> Ver, a presentación de información para o usuario, a interface de usuario ou interface de usuario. 1021 00:50:20,580 --> 00:50:22,350 E o exemplo disto é HTML. 1022 00:50:22,350 --> 00:50:23,950 E entón poderíamos ter PHP mínima. 1023 00:50:23,950 --> 00:50:28,360 Entón, un loop que itera sobre os datos que son impresos 1024 00:50:28,360 --> 00:50:30,720 é parte da visión, como oposición ao controlador. 1025 00:50:30,720 --> 00:50:35,660 E, a continuación, unha morea de nosos arquivos PHP se enmarcan na categoría de control. 1026 00:50:35,660 --> 00:50:38,410 El só trata sobre as solicitudes de usuario e obtén información a partir do modelo. 1027 00:50:38,410 --> 00:50:42,880 1028 00:50:42,880 --> 00:50:45,590 >> Saltando ao documento Object Model, iso só 1029 00:50:45,590 --> 00:50:47,700 refírese á forma como HTML documentos son organizados. 1030 00:50:47,700 --> 00:50:51,600 E eles están organizados nunha árbore estrutura que ten unha xerarquía. 1031 00:50:51,600 --> 00:50:56,720 Entón, se temos acceso a [inaudível] representación do documento, 1032 00:50:56,720 --> 00:51:02,750 podemos traballar co documento, como nós basicamente manipular obxectos. 1033 00:51:02,750 --> 00:51:06,630 >> E para facer este un pouco máis claro, cando 1034 00:51:06,630 --> 00:51:10,540 temos unha morea de nosa tags diferentes responder 1035 00:51:10,540 --> 00:51:12,590 a distintas rutas na nosa árbore. 1036 00:51:12,590 --> 00:51:17,070 E, a continuación, para este exemplo, teñen o no documento inicial. 1037 00:51:17,070 --> 00:51:20,010 Temos, pois, a nosa nó HTML que se divide en cabeza e corpo. 1038 00:51:20,010 --> 00:51:22,810 Cabeza ten título e, a continuación, Título contén Ola, mundo. 1039 00:51:22,810 --> 00:51:24,860 E o noso corpo contén só Ola, mundo tamén. 1040 00:51:24,860 --> 00:51:28,700 1041 00:51:28,700 --> 00:51:31,900 >> Así dúbidas sobre calquera dos cousas que nós Cubrimos ata agora? 1042 00:51:31,900 --> 00:51:35,891 E se non, Hannah vai asumir con JavaScript. 1043 00:51:35,891 --> 00:51:36,390 Impresionante. 1044 00:51:36,390 --> 00:51:37,473 >> HANNAH Blumberg: OK, legal. 1045 00:51:37,473 --> 00:51:40,980 Se ocorrer algo co PHP ou HTML, ou calquera das cousas Maria cuberto, 1046 00:51:40,980 --> 00:51:42,700 podemos sempre facer unha pausa. 1047 00:51:42,700 --> 00:51:46,430 Estamos facendo mellor en outra vez, tan impresionante. 1048 00:51:46,430 --> 00:51:48,770 E só para volver realmente rápido para iso, 1049 00:51:48,770 --> 00:51:51,010 se ollar para todo exame do ano pasado, este 1050 00:51:51,010 --> 00:51:54,120 trátase aquí é either-- algúns HTML, fan deste diagrama. 1051 00:51:54,120 --> 00:51:58,380 Ou aquí está neste diagrama, facer un HTML, polo tanto, en definitiva practicar iso. 1052 00:51:58,380 --> 00:52:01,500 E entón iso é un garantida pregunta que pode obter dereito. 1053 00:52:01,500 --> 00:52:02,000 Legal. 1054 00:52:02,000 --> 00:52:04,510 Entón, imos falar sobre o JavaScript e como é un pouco 1055 00:52:04,510 --> 00:52:09,130 diferente de linguaxes como PHP e C, as dúas linguas que vimos antes. 1056 00:52:09,130 --> 00:52:10,780 Entón, número un, é vagamente ingresaran. 1057 00:52:10,780 --> 00:52:14,630 Isto é como PHP, pero a diferenza C. 1058 00:52:14,630 --> 00:52:15,890 >> É unha linguaxe interpretada. 1059 00:52:15,890 --> 00:52:19,870 De novo, iso é como PHP, a diferenza C e esta 1060 00:52:19,870 --> 00:52:24,630 vai permitir-nos-lo use-- Funciona moi ben con páxinas web. 1061 00:52:24,630 --> 00:52:28,350 Vai permitir-nos para manipular os contidos e como mira 1062 00:52:28,350 --> 00:52:30,300 eo que fai. 1063 00:52:30,300 --> 00:52:32,330 >> Nós imos ver un pouco de Ajax. 1064 00:52:32,330 --> 00:52:36,140 Permite que nos comuniquemos assincronamente con diferentes servidores 1065 00:52:36,140 --> 00:52:37,950 e obter información. 1066 00:52:37,950 --> 00:52:42,820 E esta é a única cousa que realmente JavaScript separa de PHP e C 1067 00:52:42,820 --> 00:52:45,590 é que é do lado do cliente. 1068 00:52:45,590 --> 00:52:49,860 PHP e C son normalmente no lado do servidor. 1069 00:52:49,860 --> 00:52:51,960 >> Para a maioría e case enteiramente o que 1070 00:52:51,960 --> 00:52:53,900 vimos, polo menos en esta clase, JavaScript 1071 00:52:53,900 --> 00:52:57,040 actúa no lado do cliente, o que significa que o navegador é, en realidade, 1072 00:52:57,040 --> 00:52:58,597 responsable de executalo. 1073 00:52:58,597 --> 00:53:01,180 E isto significa que nós non precisa interactuar co servidor. 1074 00:53:01,180 --> 00:53:04,380 Entón, isto significa que pode ser moito máis rápido porque é realmente só é Chrome, 1075 00:53:04,380 --> 00:53:10,420 é Safari, Firefox é, o que usar, de feito, executando a súa JavaScript. 1076 00:53:10,420 --> 00:53:12,290 >> Audiencia: Qué asíncrono significa? 1077 00:53:12,290 --> 00:53:13,620 >> HANNAH Blumberg: Ah, o que non de forma asíncrona significa? 1078 00:53:13,620 --> 00:53:14,250 Boa pregunta. 1079 00:53:14,250 --> 00:53:17,890 De forma asíncrona means-- así, o contido que 1080 00:53:17,890 --> 00:53:22,140 podemos usalo é, OK, nós está creando unha páxina web 1081 00:53:22,140 --> 00:53:23,860 e necesitamos a obter unha información. 1082 00:53:23,860 --> 00:53:28,250 Así, co exemplo de mashup, unha información que podemos querer 1083 00:53:28,250 --> 00:53:30,580 é artigo títulos. 1084 00:53:30,580 --> 00:53:33,330 Agora, could-- unha opción é facelo de forma síncrona 1085 00:53:33,330 --> 00:53:37,940 e iso significa que let de parar, ir buscar o artigo, 1086 00:53:37,940 --> 00:53:41,275 obter o artigo para atrás, e, a continuación, renderse, pero que sería moi lento. 1087 00:53:41,275 --> 00:53:44,150 Iso sería unha mala experiencia do usuario porque tería só que estar sentado 1088 00:53:44,150 --> 00:53:46,630 alí esperando por algo para responder. 1089 00:53:46,630 --> 00:53:50,020 >> De forma asíncrona significa que nós imos seguir indo sobre o noso negocio, 1090 00:53:50,020 --> 00:53:52,529 renderización da páxina, e nós imos enviar unha solicitude 1091 00:53:52,529 --> 00:53:54,570 Ese é un tipo de ir pasar no fondo. 1092 00:53:54,570 --> 00:53:57,610 Creo que usamos o exemplo na charla de Rob chamando e dicindo: 1093 00:53:57,610 --> 00:53:59,980 hey, pode ollar este riba para min e volver para min, 1094 00:53:59,980 --> 00:54:02,870 no canto de só me esperando o teléfono. 1095 00:54:02,870 --> 00:54:07,020 Así, de forma asíncrona significa que isto ocorre no fondo de distancia de nós 1096 00:54:07,020 --> 00:54:08,676 en paralelo. 1097 00:54:08,676 --> 00:54:10,400 >> Boa pregunta. 1098 00:54:10,400 --> 00:54:11,830 Algo máis? 1099 00:54:11,830 --> 00:54:12,330 Gran. 1100 00:54:12,330 --> 00:54:15,020 Nós imos ir moito máis en solicitudes asíncrono con Ajax. 1101 00:54:15,020 --> 00:54:18,287 >> Audiencia: Será que JavaScript-- onde fai Lo caer con MVC? 1102 00:54:18,287 --> 00:54:19,620 HANNAH Blumberg: Excelente pregunta. 1103 00:54:19,620 --> 00:54:23,320 Cando fai a caída JavaScript con MVC? 1104 00:54:23,320 --> 00:54:23,930 Hm. 1105 00:54:23,930 --> 00:54:28,350 Creo que pode fall-- por iso, non adoitan 1106 00:54:28,350 --> 00:54:31,340 quere esmagar-lo que paradigma, pero eu creo que eu diría, 1107 00:54:31,340 --> 00:54:34,280 OK, entón JavaScript realmente vai permitir que 1108 00:54:34,280 --> 00:54:37,587 nós para recoller datos, interpretar datos, en realidade, facer 1109 00:54:37,587 --> 00:54:38,920 cousas significativas cos datos. 1110 00:54:38,920 --> 00:54:41,100 Desta forma, é moi control-like. 1111 00:54:41,100 --> 00:54:43,900 >> Pero tamén vai permitir amosar cousas e impresión cousas. 1112 00:54:43,900 --> 00:54:47,021 Desta forma, é moi vista-like. 1113 00:54:47,021 --> 00:54:47,520 Si. 1114 00:54:47,520 --> 00:54:51,710 Entón, é tipo como de PHP en onde se pode tipo de ambos. 1115 00:54:51,710 --> 00:54:53,330 Boa pregunta. 1116 00:54:53,330 --> 00:54:55,209 Algo máis? 1117 00:54:55,209 --> 00:54:56,000 Todo ben, impresionante. 1118 00:54:56,000 --> 00:54:57,120 Seguindo adiante. 1119 00:54:57,120 --> 00:54:59,110 >> Entón, imos ver un exemplo de como podemos utilizar 1120 00:54:59,110 --> 00:55:02,250 JavaScript nun dos nosos programas de web. 1121 00:55:02,250 --> 00:55:05,680 Entón, eu vou considerar iso index.html con unha morea de HTML. 1122 00:55:05,680 --> 00:55:08,800 E a cousa que quero que centrar é esa etiqueta script. 1123 00:55:08,800 --> 00:55:13,280 E iso, di, OK, quero correr algúns Javascript e aquí é onde vive. 1124 00:55:13,280 --> 00:55:15,400 Vive hello.js. 1125 00:55:15,400 --> 00:55:21,120 >> E moi parecido CSS, poderiamos poñer JavaScript no HTML. 1126 00:55:21,120 --> 00:55:24,000 Por que queremos para separalos lo fóra? 1127 00:55:24,000 --> 00:55:24,500 Si. 1128 00:55:24,500 --> 00:55:25,486 >> Audiencia: Máis fácil de reescribir? 1129 00:55:25,486 --> 00:55:26,402 >> HANNAH Blumberg: Yeah. 1130 00:55:26,402 --> 00:55:28,450 É máis doado de usar en toda diferentes páxinas web. 1131 00:55:28,450 --> 00:55:29,980 Mantén as cousas limpas. 1132 00:55:29,980 --> 00:55:32,090 É só unha boa práctica. 1133 00:55:32,090 --> 00:55:32,590 Impresionante. 1134 00:55:32,590 --> 00:55:33,930 Boa resposta. 1135 00:55:33,930 --> 00:55:36,690 Tan bo, entón iso vai para ser o noso index.html. 1136 00:55:36,690 --> 00:55:39,430 E entón aquí é a nosa minúsculo ficheiro JavaScript pouco. 1137 00:55:39,430 --> 00:55:42,410 >> E todo o que di é alerta Ola, mundo. 1138 00:55:42,410 --> 00:55:46,040 Entón o que ocorre é cando Nesta páxina renders-- 1139 00:55:46,040 --> 00:55:49,680 polo que se vai a calquera sitio este é-- todo o que vai ocorrer 1140 00:55:49,680 --> 00:55:53,330 é que vai dicir, OK, eu son indo para executar este código JavaScript. 1141 00:55:53,330 --> 00:55:56,370 E este código JavaScript só di alerta Ola, mundo. 1142 00:55:56,370 --> 00:55:59,090 Entón, eu estou indo a obter esta friendly little emerxentes. 1143 00:55:59,090 --> 00:56:00,360 >> Legal? 1144 00:56:00,360 --> 00:56:04,746 Isto é tipo como o noso primeiro JavaScript programa, o noso Ola, mundo. 1145 00:56:04,746 --> 00:56:07,690 1146 00:56:07,690 --> 00:56:12,190 Imos mirar un pouco máis sobre o que A sintaxe de JavaScript parece. 1147 00:56:12,190 --> 00:56:16,330 E, especialmente, imos comparar co C e PHP, o que vimos antes. 1148 00:56:16,330 --> 00:56:20,610 >> En JavaScript, nós imos ter var, o nome da variable e, a continuación 1149 00:56:20,610 --> 00:56:21,690 seu valor real. 1150 00:56:21,690 --> 00:56:26,170 E nós non especificar un tipo, só como en PHP, pero moi ao contrario C. 1151 00:56:26,170 --> 00:56:28,850 Así, por exemplo, se quixésemos para almacenar o valor 50, 1152 00:56:28,850 --> 00:56:32,490 no C, teriamos que dicir, hey, C, quero un número enteiro, 1153 00:56:32,490 --> 00:56:35,076 Vou chamalo i, eo seu valor é de 50. 1154 00:56:35,076 --> 00:56:36,450 En PHP, é un pouco máis fácil. 1155 00:56:36,450 --> 00:56:41,880 Nós dicimos, hey, eu quero unha variable i chamado eo seu valor é de 50. 1156 00:56:41,880 --> 00:56:45,890 Moi semellante, no JavaScript, nós dicir hey, eu quero unha variable chamada i, 1157 00:56:45,890 --> 00:56:47,080 o seu valor é de 50. 1158 00:56:47,080 --> 00:56:52,140 Cada vez que eu uso posterior i, eu non teño escribir var. 1159 00:56:52,140 --> 00:56:53,810 É só eu a partir dese punto. 1160 00:56:53,810 --> 00:56:58,660 Do mesmo xeito, en C, onde xa dicimos int i, nós só usar i. 1161 00:56:58,660 --> 00:57:00,340 Legal? 1162 00:57:00,340 --> 00:57:01,800 Todo ben. 1163 00:57:01,800 --> 00:57:03,710 >> Pasando para loops, Afortunadamente, estes case 1164 00:57:03,710 --> 00:57:06,720 ollar exactly-- Eu creo que son exactamente o mesmo que o que 1165 00:57:06,720 --> 00:57:09,799 loops son indo ollar como en algo así como C que o seu loop for 1166 00:57:09,799 --> 00:57:11,840 terá tres parts-- unha inicialización, 1167 00:57:11,840 --> 00:57:13,640 unha condición, e unha actualización. 1168 00:57:13,640 --> 00:57:15,340 Un loop while, parece exactamente o mesmo. 1169 00:57:15,340 --> 00:57:16,390 Nós só darlle unha condición. 1170 00:57:16,390 --> 00:57:18,264 >> E un loop Do While, de novo, exactamente o mesmo. 1171 00:57:18,264 --> 00:57:20,190 Nós darlle unha condición. 1172 00:57:20,190 --> 00:57:24,510 Digamos que eu quería facer unha iteración over-- Eu quería facer algo por cinco veces. 1173 00:57:24,510 --> 00:57:27,840 En C, podemos escribir ao init i é igual a 0. 1174 00:57:27,840 --> 00:57:30,480 i é menos de 5, i ++. 1175 00:57:30,480 --> 00:57:34,240 A única diferenza, en JavaScript, en vez de dicir int i é igual a 0, 1176 00:57:34,240 --> 00:57:36,820 dicimos var i é igual a 0. 1177 00:57:36,820 --> 00:57:38,370 Fermoso. 1178 00:57:38,370 --> 00:57:41,320 Esa é a única diferenza. 1179 00:57:41,320 --> 00:57:43,200 Calquera preguntas sobre nada diso? 1180 00:57:43,200 --> 00:57:44,160 Si. 1181 00:57:44,160 --> 00:57:48,480 >> Audiencia: Entón, en PHP, que é o mesmo cousa, excepto senón como unha variable? 1182 00:57:48,480 --> 00:57:49,564 Ou foi un exemplo var? 1183 00:57:49,564 --> 00:57:50,480 HANNAH Blumberg: Yeah. 1184 00:57:50,480 --> 00:57:52,310 Así, en PHP, vai ser un sinal de dólar. 1185 00:57:52,310 --> 00:57:59,450 Entón vai a $ i é igual a 0, $ i é menos que 5, $ i ++. 1186 00:57:59,450 --> 00:58:02,490 Boa pregunta. 1187 00:58:02,490 --> 00:58:04,570 >> Agora imos falar sobre declaracións de funcións. 1188 00:58:04,570 --> 00:58:07,010 En C, cando declarou un función, demos-lle un nome 1189 00:58:07,010 --> 00:58:08,490 e nós demos algúns parámetros. 1190 00:58:08,490 --> 00:58:10,670 E ao principio, escribimos o tipo. 1191 00:58:10,670 --> 00:58:12,440 En JavaScript, todos ten que facer é escribir 1192 00:58:12,440 --> 00:58:15,080 a palabra chave función que di, hey, JavaScript, 1193 00:58:15,080 --> 00:58:16,570 Estou a piques de establecer unha función. 1194 00:58:16,570 --> 00:58:18,520 >> Neste caso, ten nome suma. 1195 00:58:18,520 --> 00:58:20,820 E leva dous argumentos, xe y. 1196 00:58:20,820 --> 00:58:23,280 Teña en conta que nós non nos importa sobre os tipos de x e y. 1197 00:58:23,280 --> 00:58:26,280 E, así como C, temos ese retorno de palabras clave, 1198 00:58:26,280 --> 00:58:29,140 así que podemos facer algo como retorno xe y. 1199 00:58:29,140 --> 00:58:32,540 >> E agora, xa que escribise esta primeira función, podemos utilizar suma en calquera lugar. 1200 00:58:32,540 --> 00:58:34,740 E iso é totalmente bo. 1201 00:58:34,740 --> 00:58:37,530 Unha cousa moi legal sobre JavaScript que é moi diferente de C 1202 00:58:37,530 --> 00:58:40,770 é que as funcións poden ser tratados como valores. 1203 00:58:40,770 --> 00:58:43,895 Así, podemos facer algo parecido aquí onde supoño que cubrir este up-- 1204 00:58:43,895 --> 00:58:46,400 Cobre-se a suma var part-- e nós só dixemos 1205 00:58:46,400 --> 00:58:49,850 xy é igual a función de retorno x máis y. 1206 00:58:49,850 --> 00:58:52,140 >> Iso é o que sería chamado unha función anónima. 1207 00:58:52,140 --> 00:58:53,920 É unha función sen un nome. 1208 00:58:53,920 --> 00:58:56,290 Considerando que a presente di función suma, bla, bla, bla, 1209 00:58:56,290 --> 00:58:59,340 este só diría función. 1210 00:58:59,340 --> 00:59:02,020 Pero agora, aínda que eu teña esta función anónima, 1211 00:59:02,020 --> 00:59:03,630 que a función é realmente só un valor. 1212 00:59:03,630 --> 00:59:05,160 Podemos tratala como un valor. 1213 00:59:05,160 --> 00:59:10,180 >> Así, podemos salvalo nunha variable do mesmo forma, poderiamos almacenar 50 nunha variable. 1214 00:59:10,180 --> 00:59:13,870 Así, podemos dicir, OK, quero un variable, que se chama suma, 1215 00:59:13,870 --> 00:59:16,011 e é esta función. 1216 00:59:16,011 --> 00:59:18,760 Entón, estas dúas cousas son, en realidade, vai facer exactamente o mesmo, 1217 00:59:18,760 --> 00:59:21,576 pero a sintaxe é un pouco diferente e unha especie de nota do desfrute. 1218 00:59:21,576 --> 00:59:22,076 Si. 1219 00:59:22,076 --> 00:59:25,548 >> Audiencia: Entón, vostede podería chamar un función que era anónimo, dicindo: 1220 00:59:25,548 --> 00:59:28,244 soportes suma 2, 5? 1221 00:59:28,244 --> 00:59:29,160 HANNAH Blumberg: Yeah. 1222 00:59:29,160 --> 00:59:32,280 Pode chamar ese anónimo en función do mesmo xeito. 1223 00:59:32,280 --> 00:59:33,350 Faría sum (2, 5);. 1224 00:59:33,350 --> 00:59:36,180 1225 00:59:36,180 --> 00:59:38,200 Iso sería totalmente ben. 1226 00:59:38,200 --> 00:59:41,575 >> Se eu non fago a suma var igual función, se eu simplemente suprimido 1227 00:59:41,575 --> 00:59:45,480 isto-- Sei que é na miña man, pero finxir que eu excluído isto-- continuación 1228 00:59:45,480 --> 00:59:46,964 esa función é tipo de acabado. 1229 00:59:46,964 --> 00:59:49,630 Vostede non pode usalo de novo porque non ten un nome para el. 1230 00:59:49,630 --> 00:59:53,497 É difícil referirse a algo vostede non sabe o que chamar. 1231 00:59:53,497 --> 00:59:54,080 Boa pregunta. 1232 00:59:54,080 --> 00:59:54,580 Si. 1233 00:59:54,580 --> 00:59:59,580 >> Audiencia: pode facer referencia suma en outros lugares co valor de x máis y? 1234 00:59:59,580 --> 01:00:01,940 >> HANNAH Blumberg: Pode suma de referencia noutros lugares 1235 01:00:01,940 --> 01:00:03,360 co valor x máis y? 1236 01:00:03,360 --> 01:00:05,130 Non son enteiramente certo o que quere dicir. 1237 01:00:05,130 --> 01:00:10,582 >> Audiencia: Entón o seu pasado semi-anónimo función é a suma é igual a este 1238 01:00:10,582 --> 01:00:14,452 función anónima, entón suma é agora unha variable que can-- 1239 01:00:14,452 --> 01:00:15,410 HANNAH Blumberg: Correcto. 1240 01:00:15,410 --> 01:00:18,980 Así, a suma é variable, pero é actually-- 1241 01:00:18,980 --> 01:00:23,770 tal que a suma é unha variable cuxo valor é a función. 1242 01:00:23,770 --> 01:00:27,030 Por iso, é unha función, que é unha especie de unha cousa estraña de romper a cabeza en torno a 1243 01:00:27,030 --> 01:00:29,880 desde que comezamos a xogar con C e non pode facelo en C. 1244 01:00:29,880 --> 01:00:32,679 Pero agora podemos chamar sumar o mesmo xeito que poderiamos chamar suma aquí. 1245 01:00:32,679 --> 01:00:33,220 Audiencia: Aceptar. 1246 01:00:33,220 --> 01:00:33,970 HANNAH Blumberg: Yeah. 1247 01:00:33,970 --> 01:00:34,553 Boa pregunta. 1248 01:00:34,553 --> 01:00:35,438 Si. 1249 01:00:35,438 --> 01:00:39,862 >> Audiencia: Entón non utilizar o prototipos en PHP ou JavaScript? 1250 01:00:39,862 --> 01:00:42,070 HANNAH Blumberg: Non, Non é necesario empregar prototipos, 1251 01:00:42,070 --> 01:00:43,880 especialmente en JavaScript. 1252 01:00:43,880 --> 01:00:49,380 Entón, unha cousa mala práctica que eu son vai dicir que non debe facer 1253 01:00:49,380 --> 01:00:52,620 é que non ten que escribir var i = 50. 1254 01:00:52,620 --> 01:00:54,840 Vostede podería simplemente comezar a facer i = 50. 1255 01:00:54,840 --> 01:00:57,490 E eu faría só unha variable global. 1256 01:00:57,490 --> 01:01:00,550 >> É moi mala práctica nunca diga explicitamente var i, 1257 01:01:00,550 --> 01:01:01,800 pero é algo que podes facer. 1258 01:01:01,800 --> 01:01:03,591 O intérprete non é vai berrar con vostede. 1259 01:01:03,591 --> 01:01:05,920 JavaScript é moi semellante, pode facer o que quere. 1260 01:01:05,920 --> 01:01:09,301 1261 01:01:09,301 --> 01:01:09,800 Oh, desculpe. 1262 01:01:09,800 --> 01:01:10,300 Hai dúas. 1263 01:01:10,300 --> 01:01:12,150 Nas pantalóns laranxa. 1264 01:01:12,150 --> 01:01:13,190 Vai adiante. 1265 01:01:13,190 --> 01:01:14,390 >> Audiencia: Non, en primeiro lugar. 1266 01:01:14,390 --> 01:01:16,765 >> Audiencia: Non, eu só estaba dicindo Eu non tiña a man superior. 1267 01:01:16,765 --> 01:01:20,248 1268 01:01:20,248 --> 01:01:20,748 Aceptar. 1269 01:01:20,748 --> 01:01:26,604 Entón, se fose chamar que por primeira vez, agora resumir, 1270 01:01:26,604 --> 01:01:29,864 chamamos-lle do mesmo xeito, x, y, como en cada momento? 1271 01:01:29,864 --> 01:01:30,780 HANNAH Blumberg: Yeah. 1272 01:01:30,780 --> 01:01:32,572 Entón, eses dous esencialmente facer o mesmo. 1273 01:01:32,572 --> 01:01:35,113 Audiencia: E cal é a vantaxe de usar un ou o outro? 1274 01:01:35,113 --> 01:01:37,500 HANNAH Blumberg: Ningunha vantaxe de usar un ou outro. 1275 01:01:37,500 --> 01:01:40,080 Eu só quería amosar-lle dous diferentes anacos de sintaxe. 1276 01:01:40,080 --> 01:01:42,770 Unha morea de veces en que anónimo funcións teñen un propósito 1277 01:01:42,770 --> 01:01:48,220 é o argumento para outro función debe ser unha función. 1278 01:01:48,220 --> 01:01:50,600 E nós imos ver que en só un segundo co Ajax. 1279 01:01:50,600 --> 01:01:53,577 >> Entón, se isto non ten sentido, almacena-lo na parte de atrás da súa cabeza. 1280 01:01:53,577 --> 01:01:55,660 É alí onde un anónimo función pode ser útil 1281 01:01:55,660 --> 01:01:58,284 porque non é realmente paga a pena dándolle un nome, xa que estamos só 1282 01:01:58,284 --> 01:01:59,443 vai usalo unha vez. 1283 01:01:59,443 --> 01:02:00,370 Si. 1284 01:02:00,370 --> 01:02:03,635 >> Audiencia: Se x e y cambio máis tarde en, sumará cambiar tamén? 1285 01:02:03,635 --> 01:02:06,510 HANNAH Blumberg: Se x e y cambio máis tarde, vai sumar cambiar tamén? 1286 01:02:06,510 --> 01:02:08,840 Polo tanto, este é, en realidade I creo que algo que é, 1287 01:02:08,840 --> 01:02:12,260 de novo, el só se sente moi diferente de C. Este non é un valor. 1288 01:02:12,260 --> 01:02:13,620 Non é 5. 1289 01:02:13,620 --> 01:02:15,550 É só a propia función. 1290 01:02:15,550 --> 01:02:19,110 Así, logo que lle dá parámetros, entón vai realmente calcular un valor. 1291 01:02:19,110 --> 01:02:21,193 >> MARIA ZLATKOVA: E, a continuación, pode chamar a función 1292 01:02:21,193 --> 01:02:23,272 e usalo para obter un valor. 1293 01:02:23,272 --> 01:02:24,230 HANNAH Blumberg: Correcto. 1294 01:02:24,230 --> 01:02:25,250 Exactamente. 1295 01:02:25,250 --> 01:02:25,863 Si. 1296 01:02:25,863 --> 01:02:27,946 >> Audiencia: Entón, se só almacena-lo na variable, 1297 01:02:27,946 --> 01:02:31,430 como var x é igual a suma de dous values-- 1298 01:02:31,430 --> 01:02:32,420 >> HANNAH Blumberg: Yeah. 1299 01:02:32,420 --> 01:02:35,320 Entón, vostede podería só facer var sum é igual a suma dos dous valores. 1300 01:02:35,320 --> 01:02:37,670 Si. 1301 01:02:37,670 --> 01:02:38,680 Algunha pregunta? 1302 01:02:38,680 --> 01:02:39,642 Si. 1303 01:02:39,642 --> 01:02:42,047 >> Audiencia: Pero será que confundir suma e suma? 1304 01:02:42,047 --> 01:02:45,062 Como se chamar seu importe variable, chamaría a suma función? 1305 01:02:45,062 --> 01:02:45,895 HANNAH Blumberg: Mm. 1306 01:02:45,895 --> 01:02:46,395 Mm. 1307 01:02:46,395 --> 01:02:51,253 Se fixo algo como, suma é igual a suma de 2, 5? 1308 01:02:51,253 --> 01:02:53,170 >> Audiencia: É. 1309 01:02:53,170 --> 01:02:56,465 >> HANNAH Blumberg: Eu creo que ía substituír o valor de suma. 1310 01:02:56,465 --> 01:02:59,290 Polo tanto, outra interesante cousa sobre JavaScript 1311 01:02:59,290 --> 01:03:02,950 é que unha única variable pode asumir en unha morea de diferentes tipos. 1312 01:03:02,950 --> 01:03:03,790 Bad práctica. 1313 01:03:03,790 --> 01:03:06,280 Non debe facer algo como o que acaba de dicir. 1314 01:03:06,280 --> 01:03:10,240 >> Pero en C, si existe igual a un número enteiro, 1315 01:03:10,240 --> 01:03:13,570 sabemos que non é vai facer unha cadea. 1316 01:03:13,570 --> 01:03:15,670 Este non é o caso en JavaScript. 1317 01:03:15,670 --> 01:03:17,770 Si, boa pregunta. 1318 01:03:17,770 --> 01:03:20,151 Algo máis? 1319 01:03:20,151 --> 01:03:20,650 Todo ben. 1320 01:03:20,650 --> 01:03:21,850 Facendo todo certo a tempo. 1321 01:03:21,850 --> 01:03:23,050 Manter indo. 1322 01:03:23,050 --> 01:03:25,200 Todo ben. 1323 01:03:25,200 --> 01:03:27,780 >> Mira un array en JavaScript, é aquí 1324 01:03:27,780 --> 01:03:30,250 un rápido exemplo dunha matriz de cadeas. 1325 01:03:30,250 --> 01:03:31,967 E matrices poden crecer de forma dinámica. 1326 01:03:31,967 --> 01:03:33,675 Eles non teñen un tamaño fixo do mesmo xeito 1327 01:03:33,675 --> 01:03:37,990 que fan en C. Podemos acceder ao elementos con só os corchetes. 1328 01:03:37,990 --> 01:03:41,720 >> Isto se asemella moito a PHP e unha morea como C, onde podemos dicir neste caso 1329 01:03:41,720 --> 01:03:48,360 se eu quería a palabra JavaScript, eu o faría que arr corchetes cun 0, 1, 2. 1330 01:03:48,360 --> 01:03:51,450 1331 01:03:51,450 --> 01:03:55,390 E entón se recorda en C cando quería ter a lonxitude dunha matriz, 1332 01:03:55,390 --> 01:03:56,820 que era realmente irritante. 1333 01:03:56,820 --> 01:03:58,460 Pero en JavaScript, super fácil. 1334 01:03:58,460 --> 01:03:59,910 Todo o que facemos, .length. 1335 01:03:59,910 --> 01:04:01,120 Dálle as lonxitudes. 1336 01:04:01,120 --> 01:04:01,892 Iso é. 1337 01:04:01,892 --> 01:04:03,140 >> Audiencia: É sinxelo. 1338 01:04:03,140 --> 01:04:05,306 >> HANNAH Blumberg: Si, fai a súa vida moito máis fácil. 1339 01:04:05,306 --> 01:04:08,950 1340 01:04:08,950 --> 01:04:11,560 OK, non object-- alí. 1341 01:04:11,560 --> 01:04:15,480 Obxectos en sensación JavaScript moi parecido estruturas en C 1342 01:04:15,480 --> 01:04:18,280 e arrays asociativos en PHP. 1343 01:04:18,280 --> 01:04:20,270 Entón, o que vimos un moi é JSON, que 1344 01:04:20,270 --> 01:04:23,150 significa JavaScript Object Notation. 1345 01:04:23,150 --> 01:04:25,550 E é basicamente unha forma de estruturar nosos datos. 1346 01:04:25,550 --> 01:04:27,880 >> Entón, imos ver un exemplo, probablemente o máis fácil. 1347 01:04:27,880 --> 01:04:32,540 Entón aquí está un exemplo dun obxecto que almacena a clase, CS50. 1348 01:04:32,540 --> 01:04:37,790 E cando digo clase, quero dicir, por suposto, non como-- si, o curso, CS50. 1349 01:04:37,790 --> 01:04:40,730 E vai ver que todo no obxecto 1350 01:04:40,730 --> 01:04:43,526 vai ser contido entre chaves. 1351 01:04:43,526 --> 01:04:48,260 >> E comezamos a asociar nomes de campo ou claves cos diferentes valores. 1352 01:04:48,260 --> 01:04:52,920 Así, pode comezar a ver como este tipo de se sente como unha matriz asociativa en PHP. 1353 01:04:52,920 --> 01:04:57,450 Entón, nós estamos indo a asociar o campo ou o nome da chave, por suposto, coa corda, 1354 01:04:57,450 --> 01:04:58,510 CS50. 1355 01:04:58,510 --> 01:04:59,940 >> Nós imos ter un instrutor. 1356 01:04:59,940 --> 01:05:00,940 Nós imos ter TFS. 1357 01:05:00,940 --> 01:05:05,240 Nós imos ter número de Serie de exercicios e nós imos ter gravado. 1358 01:05:05,240 --> 01:05:10,720 E unha cousa legal para notar é todo de esas cousas teñen distintos tipos, 1359 01:05:10,720 --> 01:05:12,020 e iso é totalmente bo. 1360 01:05:12,020 --> 01:05:15,330 >> É bo para un obxecto, de feito, probablemente se espera a un obxecto 1361 01:05:15,330 --> 01:05:19,620 ter unha combinación de cordas e números e Booleans e matrices 1362 01:05:19,620 --> 01:05:23,420 e calquera outra cousa que pode quere ter no seu obxecto. 1363 01:05:23,420 --> 01:05:28,570 E teña en conta que estes van ser os nomes ou as chaves, e entón nós só 1364 01:05:28,570 --> 01:05:30,300 axustalo igual cun pouco de colon. 1365 01:05:30,300 --> 01:05:32,015 >> Audiencia: O que é exactamente significa JSON significa? 1366 01:05:32,015 --> 01:05:33,890 HANNAH Blumberg: Qué JSON exactamente significa isto? 1367 01:05:33,890 --> 01:05:36,470 JSON só representa JavaScript Object Notation. 1368 01:05:36,470 --> 01:05:38,430 É só unha forma de formato. 1369 01:05:38,430 --> 01:05:40,040 Si. 1370 01:05:40,040 --> 01:05:41,800 É un xeito de formatar nosos datos. 1371 01:05:41,800 --> 01:05:43,620 >> En C, é estruturas. 1372 01:05:43,620 --> 01:05:45,800 En PHP, é matrices asociativas. 1373 01:05:45,800 --> 01:05:47,120 En JavaScript, temos obxectos. 1374 01:05:47,120 --> 01:05:48,969 >> Audiencia: Entón CS50 é un obxecto? 1375 01:05:48,969 --> 01:05:51,010 HANNAH Blumberg: CS50 é o obxecto, neste caso. 1376 01:05:51,010 --> 01:05:54,830 1377 01:05:54,830 --> 01:05:57,880 Agora, como é que nós, en realidade, o acceso estes campos ou cambiar estes campos. 1378 01:05:57,880 --> 01:06:03,920 Por exemplo, supoñamos que decidimos que quería un menos pset neste semestre. 1379 01:06:03,920 --> 01:06:06,300 No canto de nove, estamos só terá oito. 1380 01:06:06,300 --> 01:06:08,240 Como poderiamos cambiar isto? 1381 01:06:08,240 --> 01:06:09,436 >> Oh, forma incorrecta. 1382 01:06:09,436 --> 01:06:11,060 Hai dous xeitos que podemos facelo. 1383 01:06:11,060 --> 01:06:13,490 O número un é o punto notación e número dous 1384 01:06:13,490 --> 01:06:15,750 é coa notación paréntese. 1385 01:06:15,750 --> 01:06:19,720 Así, por exemplo, se eu quería cambiar ou acceso 1386 01:06:19,720 --> 01:06:26,820 Serie de exercicios de campo no noso obxecto CS50, o que me gustaría facer é CS50.psets, 1387 01:06:26,820 --> 01:06:30,770 de xeito que o nome do obxecto de puntos o nome do campo ou a clave. 1388 01:06:30,770 --> 01:06:37,120 >> Moi semellante, é exactamente equivalente a facer CS50, e, a continuación 1389 01:06:37,120 --> 01:06:42,050 en corchetes, Serie de exercicios. 1390 01:06:42,050 --> 01:06:42,837 Legal? 1391 01:06:42,837 --> 01:06:44,298 Si. 1392 01:06:44,298 --> 01:06:47,707 >> Audiencia: Entón é JSON tecnicamente aínda JavaScript, 1393 01:06:47,707 --> 01:06:51,814 aínda que nos temos Serie de exercicios separa-lo para fóra [inaudível]? 1394 01:06:51,814 --> 01:06:52,730 HANNAH Blumberg: Claro. 1395 01:06:52,730 --> 01:06:56,290 Entón a pregunta é, son Javascript e JSON equivalente? 1396 01:06:56,290 --> 01:07:00,750 Entón JSON é notación basicamente a forma que escribimos para fóra 1397 01:07:00,750 --> 01:07:02,700 un obxecto de JavaScript. 1398 01:07:02,700 --> 01:07:05,190 Así, non son exactamente o mesmo. 1399 01:07:05,190 --> 01:07:08,950 >> Eu diría JavaScript, alí son obxectos en JavaScript. 1400 01:07:08,950 --> 01:07:12,590 JSON leva estes obxectos e os imprime e apresenta- 1401 01:07:12,590 --> 01:07:15,160 ou almacena-los nunha forma agradable. 1402 01:07:15,160 --> 01:07:18,110 Así JSON non é unha programación lingua de maneira que é JavaScript. 1403 01:07:18,110 --> 01:07:20,900 É só a notación para nosos obxectos en JavaScript. 1404 01:07:20,900 --> 01:07:21,400 Si. 1405 01:07:21,400 --> 01:07:24,144 >> Audiencia: Entón, o que exactamente [Inaudível] completar? 1406 01:07:24,144 --> 01:07:25,060 HANNAH Blumberg: Claro. 1407 01:07:25,060 --> 01:07:27,727 Entón, iso realmente non fai nada. 1408 01:07:27,727 --> 01:07:28,935 Esta é só unha forma de acceder. 1409 01:07:28,935 --> 01:07:31,393 Entón, imos dicir que quería cambiar o número de conxuntos de problemas 1410 01:07:31,393 --> 01:07:32,450 de nove a oito. 1411 01:07:32,450 --> 01:07:34,383 O que facemos é facer algo como CS50.psets = 8;. 1412 01:07:34,383 --> 01:07:38,500 1413 01:07:38,500 --> 01:07:39,400 >> Si, grande importancia. 1414 01:07:39,400 --> 01:07:40,733 Este é só para amosar-lle sintaxe. 1415 01:07:40,733 --> 01:07:43,620 En realidade non fai nada de útil. 1416 01:07:43,620 --> 01:07:46,085 Algunha pregunta? 1417 01:07:46,085 --> 01:07:48,210 Seguindo adiante. 1418 01:07:48,210 --> 01:07:51,960 >> Entón, imos ollar para un rápido exemplo de como JavaScript funciona porque eu dixen a vostede que 1419 01:07:51,960 --> 01:07:55,170 fai todas esas cousas legais e permítenos modificar páxinas web. 1420 01:07:55,170 --> 01:07:56,970 Imos realmente velo en acción. 1421 01:07:56,970 --> 01:07:59,850 Entón tome, por exemplo, o ficheiro HTML. 1422 01:07:59,850 --> 01:08:04,350 >> E a cousa que quero que concentrarse en esta etiqueta particular, que é un botón, 1423 01:08:04,350 --> 01:08:06,182 con id search_button. 1424 01:08:06,182 --> 01:08:08,670 É só na páxina. 1425 01:08:08,670 --> 01:08:10,690 Entón agora imos ver o que podemos realmente facer. 1426 01:08:10,690 --> 01:08:12,560 >> Ben, supoñamos que, cando fai clic neste botón, 1427 01:08:12,560 --> 01:08:16,010 queremos facer unha alert-- premeu no botón. 1428 01:08:16,010 --> 01:08:17,840 Imos ver como podemos facelo. 1429 01:08:17,840 --> 01:08:23,869 Entón window.onload-- iso non é algo que xa viu na clase, pois 1430 01:08:23,869 --> 01:08:26,180 Non é preciso saber que para o quiz. 1431 01:08:26,180 --> 01:08:33,660 Pero iso basicamente di, OK, chamada esta función cando a carga de ventá. 1432 01:08:33,660 --> 01:08:35,080 >> Entón, iso é só unha especie de código de configuración. 1433 01:08:35,080 --> 01:08:36,390 Non te preocupes tanto con iso. 1434 01:08:36,390 --> 01:08:39,170 O que quero que centrar é aquí. 1435 01:08:39,170 --> 01:08:44,020 Dicimos var searchButton igual document.getElementById search_button. 1436 01:08:44,020 --> 01:08:46,450 >> Entón, como podes imaxinar, o que isto significa que, di, 1437 01:08:46,450 --> 01:08:50,920 OK, vai atopar o elemento con ID search_button. 1438 01:08:50,920 --> 01:08:52,790 E agora temos que elemento real e eu son 1439 01:08:52,790 --> 01:08:56,279 indo para almacena-lo nun searchButton variable. 1440 01:08:56,279 --> 01:09:00,651 E agora podemos realmente usar este elemento e cambia-lo, ou acceder os seus valores, 1441 01:09:00,651 --> 01:09:01,359 cousas así. 1442 01:09:01,359 --> 01:09:04,649 Podemos realmente comezar a involucrarse coa páxina web. 1443 01:09:04,649 --> 01:09:10,330 >> Entón aquí digo: OK, agora que eu teño ese botón, cando é premendo, 1444 01:09:10,330 --> 01:09:12,859 chamar esa función anónima. 1445 01:09:12,859 --> 01:09:16,811 Polo tanto, este é o lugar onde anónimo funcións chegar a ser útil. 1446 01:09:16,811 --> 01:09:18,060 E o que fai a función de facer? 1447 01:09:18,060 --> 01:09:20,529 Ben, el só chama iso función de alerta e di, 1448 01:09:20,529 --> 01:09:22,910 premeu o botón Buscar. 1449 01:09:22,910 --> 01:09:29,670 >> Entón, o que vai pasar se eu vou para onde queira este HTML vive e premo o botón, 1450 01:09:29,670 --> 01:09:33,729 Vou coller un pouco de fantasía alerta que di que premeu no botón. 1451 01:09:33,729 --> 01:09:40,710 Así, as cousas para centrar aqui-- document.getElementById 1452 01:09:40,710 --> 01:09:44,960 recibe un HTML especial elemento co ID dado. 1453 01:09:44,960 --> 01:09:48,529 E agora podemos definir o que debe ocorrer cando 1454 01:09:48,529 --> 01:09:50,702 aquel elemento en particular é premendo. 1455 01:09:50,702 --> 01:09:52,670 >> Audiencia: Temos que poñer todo isto en? 1456 01:09:52,670 --> 01:09:53,162 >> HANNAH Blumberg: Sentímolo? 1457 01:09:53,162 --> 01:09:55,130 >> Audiencia: Será que temos que codificar fisicamente todo isto? 1458 01:09:55,130 --> 01:09:56,340 >> HANNAH Blumberg: Temos que codificar fisicamente todo isto? 1459 01:09:56,340 --> 01:09:56,839 Si. 1460 01:09:56,839 --> 01:09:58,120 Non é este tipo de irritante? 1461 01:09:58,120 --> 01:10:00,032 Este é un monte de código. 1462 01:10:00,032 --> 01:10:01,574 >> Audiencia: Podería importar algo. 1463 01:10:01,574 --> 01:10:02,532 HANNAH Blumberg: Correcto. 1464 01:10:02,532 --> 01:10:03,610 Poderíamos usar algo. 1465 01:10:03,610 --> 01:10:08,140 E en particular-- Oh, é me dicindo que eu teño que ensinar sección. 1466 01:10:08,140 --> 01:10:11,061 En particular, imos usar a biblioteca jQuery, 1467 01:10:11,061 --> 01:10:13,060 porque ese era realmente longo e moi aburrido 1468 01:10:13,060 --> 01:10:16,860 e quero ser capaz de simplifica-lo e facelo máis curto e máis fácil de escribir. 1469 01:10:16,860 --> 01:10:19,810 >> Entón jQuery é unha biblioteca JavaScript. 1470 01:10:19,810 --> 01:10:24,930 Entón JavaScript é a programación linguaxe; jQuery é unha biblioteca. 1471 01:10:24,930 --> 01:10:27,190 E fai unha morea de cousas máis fáciles. 1472 01:10:27,190 --> 01:10:33,230 Que fai o cambio e ir adiante un documento HTML moito máis fácil. 1473 01:10:33,230 --> 01:10:35,030 >> Fai eventos de manipular máis fácil. 1474 01:10:35,030 --> 01:10:37,580 Fai a animación máis fácil e fai máis doado Ajax. 1475 01:10:37,580 --> 01:10:40,140 Entón, imos ir a dous isto agora. 1476 01:10:40,140 --> 01:10:40,900 Desculpe-me. 1477 01:10:40,900 --> 01:10:42,620 Antes de facer, algúns sintaxe básica. 1478 01:10:42,620 --> 01:10:46,870 >> Isto é o que máis chama a a biblioteca jQuery opinión. 1479 01:10:46,870 --> 01:10:50,520 Usan esta dólar sign-- ningún sinal de conexión para PHP, 1480 01:10:50,520 --> 01:10:56,030 inconvenient-- só o nome dunha selector, punto, e, a continuación, unha acción. 1481 01:10:56,030 --> 01:10:58,860 Entón, imos ver algúns exemplos concretos de que. 1482 01:10:58,860 --> 01:11:02,980 >> Entón iso realmente é o mesmo código desde o slide evento. 1483 01:11:02,980 --> 01:11:08,740 Entón, iso, cousa fea longa convértese en esta cousa moito mellor, menor. 1484 01:11:08,740 --> 01:11:10,370 Entón, imos tentar romper iso. 1485 01:11:10,370 --> 01:11:17,090 Este di, OK, jQuery-- esta dólar sign-- jQuery, atopar-me da xanela. 1486 01:11:17,090 --> 01:11:18,480 Entón ese é o selector. 1487 01:11:18,480 --> 01:11:21,800 >> Cando leva, chamar esa función. 1488 01:11:21,800 --> 01:11:23,880 Entón, iso é todo dentro. 1489 01:11:23,880 --> 01:11:24,380 Aceptar. 1490 01:11:24,380 --> 01:11:25,740 Tan lonxe, tan bo? 1491 01:11:25,740 --> 01:11:26,750 Todo ben. 1492 01:11:26,750 --> 01:11:32,970 >> Agora, jQuery, atopar-me o cousa con ID search_button. 1493 01:11:32,970 --> 01:11:36,090 E o que é premendo, chamar esa función. 1494 01:11:36,090 --> 01:11:37,900 E entón esa función de exactamente o mesmo. 1495 01:11:37,900 --> 01:11:41,052 Só ten que facer un pouco de alerta, premeu o botón Buscar. 1496 01:11:41,052 --> 01:11:42,650 >> Polo que é moi bo. 1497 01:11:42,650 --> 01:11:46,260 Realmente condensa e simplifica o noso código. 1498 01:11:46,260 --> 01:11:49,030 Como eu sabía que é ID search_button 1499 01:11:49,030 --> 01:11:50,960 e non como clase search_button? 1500 01:11:50,960 --> 01:11:52,024 >> Audiencia: hashtag? 1501 01:11:52,024 --> 01:11:52,940 HANNAH Blumberg: Yeah. 1502 01:11:52,940 --> 01:11:56,450 Este símbolo de hash, é só como CSS. 1503 01:11:56,450 --> 01:12:00,080 Entón lembre, con CSS, cando quería escoller algo por ID, 1504 01:12:00,080 --> 01:12:01,590 utilizouse o sinal de libra. 1505 01:12:01,590 --> 01:12:05,400 E cando queriamos para seleccionar algo por clase, usamos o punto. 1506 01:12:05,400 --> 01:12:06,870 Gran. 1507 01:12:06,870 --> 01:12:08,230 Ten sentido? 1508 01:12:08,230 --> 01:12:11,500 Entón jQuery se quere só facer a nosa vida máis fácil. 1509 01:12:11,500 --> 01:12:12,000 Si. 1510 01:12:12,000 --> 01:12:15,660 >> Audiencia: Entón, eu estou un pouco confuso como o xeito no que a función anónima funciona. 1511 01:12:15,660 --> 01:12:19,027 Vostede nomear esta anonymouse función, funcionar? 1512 01:12:19,027 --> 01:12:20,594 Como se chama? 1513 01:12:20,594 --> 01:12:21,510 HANNAH Blumberg: Claro. 1514 01:12:21,510 --> 01:12:25,812 Entón función é só unha palabra clave que di, eu estou a piques de establecer unha función. 1515 01:12:25,812 --> 01:12:26,520 Audiencia: Oh, Aceptar. 1516 01:12:26,520 --> 01:12:27,353 HANNAH Blumberg: OK? 1517 01:12:27,353 --> 01:12:32,120 E, despois, pasalo como un argumento a-- imos dar 1518 01:12:32,120 --> 01:12:37,040 este um-- interior para a función de clic. 1519 01:12:37,040 --> 01:12:39,420 Entón, si, para que función, esta función anónima, 1520 01:12:39,420 --> 01:12:40,910 pasa a ser un argumento real. 1521 01:12:40,910 --> 01:12:43,632 Entón lembre de JavaScript, que pode tratar funcións como valores. 1522 01:12:43,632 --> 01:12:44,340 Audiencia: Oh, Aceptar. 1523 01:12:44,340 --> 01:12:45,256 HANNAH Blumberg: Yeah. 1524 01:12:45,256 --> 01:12:46,035 Me gusta diso "oh". 1525 01:12:46,035 --> 01:12:47,490 Niza. 1526 01:12:47,490 --> 01:12:49,915 Outras preguntas? 1527 01:12:49,915 --> 01:12:50,505 Equipo? 1528 01:12:50,505 --> 01:12:51,380 MARIA ZLATKOVA: Good. 1529 01:12:51,380 --> 01:12:52,760 Bo. 1530 01:12:52,760 --> 01:12:54,210 >> HANNAH Blumberg: Awesome. 1531 01:12:54,210 --> 01:12:55,720 Algúns jQuery útil rápido. 1532 01:12:55,720 --> 01:12:57,559 Eu non estou indo a ir a través de todos estes. 1533 01:12:57,559 --> 01:12:59,350 Estes diapositivas será en liña un pouco 1534 01:12:59,350 --> 01:13:02,040 máis tarde, para que poida comprobar Lo un pouco máis tarde. 1535 01:13:02,040 --> 01:13:07,120 Pero, basicamente, o xeneral estándar se mantén en que dicimos, 1536 01:13:07,120 --> 01:13:11,510 OK, hey, jQuery, aquí está o meu selector e, a continuación, aquí está unha acción. 1537 01:13:11,510 --> 01:13:15,940 E pode facer cousas como acceso a valor dun formulario, acceder algúns HTML, 1538 01:13:15,940 --> 01:13:19,195 Controlar o que acontece cando o usuario envía un formulario, cousas así. 1539 01:13:19,195 --> 01:13:20,106 Si. 1540 01:13:20,106 --> 01:13:22,090 >> Audiencia: Entón, o exame, nós imos ter 1541 01:13:22,090 --> 01:13:25,066 saber unha morea de a documentación do jQuery. 1542 01:13:25,066 --> 01:13:31,018 Así, dado que copiar / pegar o jQuery documentación para a nosa folla de fraude, 1543 01:13:31,018 --> 01:13:32,506 onde está a liña trazada? 1544 01:13:32,506 --> 01:13:33,957 Como cantos que necesitamos saber? 1545 01:13:33,957 --> 01:13:35,290 HANNAH Blumberg: Excelente pregunta. 1546 01:13:35,290 --> 01:13:37,765 A cuestión é esencialmente dado que 1547 01:13:37,765 --> 01:13:41,330 Non se pode acceder á documentación do jQuery durante a proba, o que ten que 1548 01:13:41,330 --> 01:13:41,830 sabe? 1549 01:13:41,830 --> 01:13:45,540 Non esperamos que veña arriba con algunha función aleatoria 1550 01:13:45,540 --> 01:13:47,240 que sería de esperar que en Google. 1551 01:13:47,240 --> 01:13:52,930 >> Cousas que son xogo xusto é eu faría dicir só unha especie de a sintaxe xeral, 1552 01:13:52,930 --> 01:13:58,310 poder seleccionar pola ID e por class-- así como CSS. 1553 01:13:58,310 --> 01:14:01,876 E, a continuación, as funcións reais themself, imos probablemente dicirlle. 1554 01:14:01,876 --> 01:14:02,376 Si. 1555 01:14:02,376 --> 01:14:05,591 >> Audiencia: Entón, cando selecciona por clase significaría punto. 1556 01:14:05,591 --> 01:14:06,840 HANNAH Blumberg: Si, exactamente. 1557 01:14:06,840 --> 01:14:07,340 Bo. 1558 01:14:07,340 --> 01:14:10,461 Cando vostede selecciona por clase, que vai sendo punto no canto do sinal de libra. 1559 01:14:10,461 --> 01:14:10,960 Si. 1560 01:14:10,960 --> 01:14:12,710 >> Audiencia: vostede atravese a diferenza 1561 01:14:12,710 --> 01:14:14,310 entre a selección por ID e por clase? 1562 01:14:14,310 --> 01:14:14,560 >> HANNAH Blumberg: Claro. 1563 01:14:14,560 --> 01:14:17,510 A diferenza entre seleccionar ID e seleccionando por clase. 1564 01:14:17,510 --> 01:14:20,685 Así como dixo María a pouco máis cedo, hai 1565 01:14:20,685 --> 01:14:26,280 só pode haber un elemento HTML cun dato ID mentres clase, 1566 01:14:26,280 --> 01:14:29,740 ela nos permite agrupar unha morea de diferentes elementos xuntos, 1567 01:14:29,740 --> 01:14:34,300 así que as cousas que están relacionadas, pero non exactamente o mesmo. 1568 01:14:34,300 --> 01:14:35,685 Isto responde a pregunta? 1569 01:14:35,685 --> 01:14:36,200 Impresionante. 1570 01:14:36,200 --> 01:14:37,194 Si. 1571 01:14:37,194 --> 01:14:40,680 >> Audiencia: E se ten múltiples cousas que están na mesma clase? 1572 01:14:40,680 --> 01:14:42,150 >> HANNAH Blumberg: Qué acontece se ten moitas cousas que 1573 01:14:42,150 --> 01:14:43,280 son da mesma clase? 1574 01:14:43,280 --> 01:14:45,829 Así, por exemplo, se estamos só usando puro JavaScript, 1575 01:14:45,829 --> 01:14:48,120 fariamos algo document.getElementsByClass. 1576 01:14:48,120 --> 01:14:52,280 1577 01:14:52,280 --> 01:14:56,320 E entón o que realmente fai é devolve unha matriz de elementos. 1578 01:14:56,320 --> 01:14:59,517 >> E ten que quere iterado eles ou atopar un que quere. 1579 01:14:59,517 --> 01:15:01,350 Non vai dar vostede un único elemento. 1580 01:15:01,350 --> 01:15:03,450 Vai darlle unha matriz de elementos. 1581 01:15:03,450 --> 01:15:05,280 Boa pregunta. 1582 01:15:05,280 --> 01:15:07,700 Algo máis? 1583 01:15:07,700 --> 01:15:09,520 Impresionante. 1584 01:15:09,520 --> 01:15:12,860 >> Entón eu creo que se está familiarizado con calquera jQuery viu no pset, 1585 01:15:12,860 --> 01:15:15,600 ten que ser bo para ir. 1586 01:15:15,600 --> 01:15:16,325 Pregunta? 1587 01:15:16,325 --> 01:15:17,610 Oh, non. 1588 01:15:17,610 --> 01:15:18,859 Realmente teño que ensinar. 1589 01:15:18,859 --> 01:15:19,358 Relax. 1590 01:15:19,358 --> 01:15:20,035 Se ve todo ben. 1591 01:15:20,035 --> 01:15:20,660 Eu vou chegar alí. 1592 01:15:20,660 --> 01:15:24,670 1593 01:15:24,670 --> 01:15:26,870 >> Imos falar sobre o Ajax. 1594 01:15:26,870 --> 01:15:31,350 Entón Ajax será um-- ben, imos comezar co que representa. 1595 01:15:31,350 --> 01:15:32,350 É un acrónimo. 1596 01:15:32,350 --> 01:15:35,855 Está a asynchronous JavaScript e XML. 1597 01:15:35,855 --> 01:15:39,800 E XML é basicamente será [Inaudível] cun tipo de nosos datos. 1598 01:15:39,800 --> 01:15:42,100 Pero nós realmente non teño usado XML. 1599 01:15:42,100 --> 01:15:43,430 Pola contra, pode usar JSON. 1600 01:15:43,430 --> 01:15:48,350 >> Entón, basicamente, é algunhas data-- asíncrono, JavaScript, e os datos, 1601 01:15:48,350 --> 01:15:50,040 Neste caso, JSON. 1602 01:15:50,040 --> 01:15:52,820 E o noso obxectivo, como dixemos un pouco máis cedo, 1603 01:15:52,820 --> 01:15:56,880 está a ser capaz de facer unha solicitude, ter que facer petición 1604 01:15:56,880 --> 01:16:00,700 súa cousa no fondo, pero continúan 1605 01:16:00,700 --> 01:16:02,550 facer o que estabamos pretendendo facer. 1606 01:16:02,550 --> 01:16:06,650 E entón, cando esa información é listo, así que imos incorpora-lo. 1607 01:16:06,650 --> 01:16:08,470 >> Entón, imos ver o que este realmente parece. 1608 01:16:08,470 --> 01:16:11,210 E iso, ten que ser un pouco familiarizado 1609 01:16:11,210 --> 01:16:13,680 de pset8, o que acaba de facer en. 1610 01:16:13,680 --> 01:16:16,200 Entón aquí está o jQuery válido función que poderiamos 1611 01:16:16,200 --> 01:16:18,250 Quere saber about-- este sinal de dólar. 1612 01:16:18,250 --> 01:16:21,500 Por iso, di función jQuery, .getJSON. 1613 01:16:21,500 --> 01:16:25,020 >> E o que esta función fai é leva un URL e algúns parameters-- 1614 01:16:25,020 --> 01:16:28,000 entón eu creo que no caso de pset8, era como, 1615 01:16:28,000 --> 01:16:33,520 a URL eo foi articles.php parámetros era go = algún código postal. 1616 01:16:33,520 --> 01:16:41,580 E di, OK, facer un pedido á este URL cos parámetros datos. 1617 01:16:41,580 --> 01:16:43,480 E iso simplemente ocorre. 1618 01:16:43,480 --> 01:16:47,730 >> Cando remata, ou é vai completar con éxito 1619 01:16:47,730 --> 01:16:49,370 ou que vai fallar. 1620 01:16:49,370 --> 01:16:53,480 Polo tanto, este é o equivalente de chamada Rob e pedirlle para facer algo. 1621 01:16:53,480 --> 01:17:00,260 E entón cando chama de volta, é tanto vai dicir que eu son feito ou eu fallei. 1622 01:17:00,260 --> 01:17:04,030 >> Así, no caso de que vostede está feito, di, OK, eu son feito. 1623 01:17:04,030 --> 01:17:05,980 E entón chamar esa función. 1624 01:17:05,980 --> 01:17:08,915 Neste caso, vai ser un función que leva unha información. 1625 01:17:08,915 --> 01:17:12,890 O que xeralmente se preocupan o datos, os datos que estabamos realmente devolto 1626 01:17:12,890 --> 01:17:15,900 como consecuencia da chamada .getJSON. 1627 01:17:15,900 --> 01:17:17,470 >> E pode facer algo con el. 1628 01:17:17,470 --> 01:17:23,670 Así, no caso de pset8, eu amosar-lo como unha lista. 1629 01:17:23,670 --> 01:17:29,050 Fallo será unha función que se chama a solicitude falla 1630 01:17:29,050 --> 01:17:30,450 por calquera motivo. 1631 01:17:30,450 --> 01:17:35,104 E no caso de pset8, nós só console.log-lo. 1632 01:17:35,104 --> 01:17:36,020 Calquera dúbida sobre iso? 1633 01:17:36,020 --> 01:17:36,300 Si. 1634 01:17:36,300 --> 01:17:39,633 >> Audiencia: Podemos simplemente usar a función theta no canto da función, textStatus, jqHXR. 1635 01:17:39,633 --> 01:17:43,464 1636 01:17:43,464 --> 01:17:44,380 HANNAH Blumberg: Claro. 1637 01:17:44,380 --> 01:17:46,713 Entón, si, creo que no pset, que acabamos de ver datos da función. 1638 01:17:46,713 --> 01:17:48,700 Entón é só as-- si, Aceptar. 1639 01:17:48,700 --> 01:17:50,510 Iso é o que vimos no pset. 1640 01:17:50,510 --> 01:17:51,480 Isto é totalmente bo. 1641 01:17:51,480 --> 01:17:54,210 >> Estes son só se quería para sacar máis información, 1642 01:17:54,210 --> 01:17:57,190 estas son as cousas que podería comezar a partir .getJSON. 1643 01:17:57,190 --> 01:17:59,040 Boa pregunta. 1644 01:17:59,040 --> 01:17:59,706 Algo máis? 1645 01:17:59,706 --> 01:18:00,206 Si. 1646 01:18:00,206 --> 01:18:01,787 >> Audiencia: Entón .getJSON é Ajax? 1647 01:18:01,787 --> 01:18:02,620 HANNAH Blumberg: Aceptar. 1648 01:18:02,620 --> 01:18:05,700 Polo tanto, este é o tipo de parte complicada. 1649 01:18:05,700 --> 01:18:12,390 É unha función jQuery que permite facer chamadas asíncrono. 1650 01:18:12,390 --> 01:18:16,080 E esas chamadas asíncrono, é o que vimos referir como Ajax. 1651 01:18:16,080 --> 01:18:16,850 Si. 1652 01:18:16,850 --> 01:18:20,185 Tanto me levou moito tempo para separar cando era estudante. 1653 01:18:20,185 --> 01:18:21,560 Audiencia: Pode dicir iso de novo? 1654 01:18:21,560 --> 01:18:22,476 HANNAH Blumberg: Yeah. 1655 01:18:22,476 --> 01:18:23,630 Podo dicir iso de novo? 1656 01:18:23,630 --> 01:18:29,010 Esta función .getJSON, é unha función jQuery. 1657 01:18:29,010 --> 01:18:31,970 E vai facer unha chamada asíncrono. 1658 01:18:31,970 --> 01:18:35,700 E esas chamadas asíncrono, temos foi referíndose a aqueles como Ajax. 1659 01:18:35,700 --> 01:18:39,610 1660 01:18:39,610 --> 01:18:41,872 >> Algunha pregunta? 1661 01:18:41,872 --> 01:18:43,330 Temos só un par de minutos do final. 1662 01:18:43,330 --> 01:18:45,080 E María vai involucrar-se coa seguridade 1663 01:18:45,080 --> 01:18:47,464 e entón nós imos sendo practicamente feito. 1664 01:18:47,464 --> 01:18:48,630 MARIA ZLATKOVA: Awesome, OK. 1665 01:18:48,630 --> 01:18:54,030 Entón, iso é-- pode ter un par de segundos para ollar sobre iso. 1666 01:18:54,030 --> 01:18:56,750 E iso non é algo realmente grande. 1667 01:18:56,750 --> 01:18:59,430 E alguén me pode dicir por que? 1668 01:18:59,430 --> 01:19:05,650 O que está a suceder en foo e maio podería potencialmente producir algo malo, 1669 01:19:05,650 --> 01:19:06,770 e que iso se chama? 1670 01:19:06,770 --> 01:19:07,270 Si. 1671 01:19:07,270 --> 01:19:10,391 Audiencia: O argumento de que é pasado é máis de 12 caracteres, 1672 01:19:10,391 --> 01:19:11,454 pode rebosar. 1673 01:19:11,454 --> 01:19:12,370 MARIA ZLATKOVA: Correcto. 1674 01:19:12,370 --> 01:19:14,180 Perfecto. 1675 01:19:14,180 --> 01:19:15,384 Cal é mesmo nome? 1676 01:19:15,384 --> 01:19:16,300 Acaba de mencionar isto. 1677 01:19:16,300 --> 01:19:16,840 >> Audiencia: Buffer overflow. 1678 01:19:16,840 --> 01:19:18,381 >> MARIA ZLATKOVA: Yup, estourido de buffer. 1679 01:19:18,381 --> 01:19:21,230 Entón, iso é algo que nós se refiren como buffer overflow. 1680 01:19:21,230 --> 01:19:25,500 E vemos que dentro foo, definimos noso buffer, c, 1681 01:19:25,500 --> 01:19:27,240 cun tamaño de 12. 1682 01:19:27,240 --> 01:19:32,680 Con todo, no inicio, non o facemos comprobar en calquera forma en todo 1683 01:19:32,680 --> 01:19:36,480 o xeito que argv1-- foi o segundo argumento. 1684 01:19:36,480 --> 01:19:39,630 Non comprobar se o de tamaño que é conveniente. 1685 01:19:39,630 --> 01:19:43,380 >> Entón, se tivemos unha user especialmente malicioso 1686 01:19:43,380 --> 01:19:47,170 que poñer en algún argumento de que era máis que 12, e, a continuación, potencialmente 1687 01:19:47,170 --> 01:19:50,850 alá do que argumento, tiña un código executable 1688 01:19:50,850 --> 01:19:55,570 que estaba tentando facer algo malo con el; despois diso, o que acontecería, 1689 01:19:55,570 --> 01:19:59,310 ía substituír o retorno enderezo da función foo, 1690 01:19:59,310 --> 01:20:04,370 facendo que a función de cando retornando para realizar ese código. 1691 01:20:04,370 --> 01:20:07,540 E entón as cousas malas poden ocorrer. 1692 01:20:07,540 --> 01:20:09,850 Será que isto ten sentido para todos? 1693 01:20:09,850 --> 01:20:12,424 >> E como podemos protexer contra iso? 1694 01:20:12,424 --> 01:20:13,090 Algunha suxestión? 1695 01:20:13,090 --> 01:20:16,480 1696 01:20:16,480 --> 01:20:21,890 Basicamente, dentro potencialmente foo, como 1697 01:20:21,890 --> 01:20:28,294 podemos comprobar a certificar- que iso non pode ocorrer? 1698 01:20:28,294 --> 01:20:33,879 >> Audiencia: O tamaño 12 é excedido, ía reservar memoria adicional? 1699 01:20:33,879 --> 01:20:37,170 MARIA ZLATKOVA: Suxestión é, reservar memoria adicional do tamaño excedido. 1700 01:20:37,170 --> 01:20:39,800 De feito, podemos facer algo un moito máis simple do que ben. 1701 01:20:39,800 --> 01:20:44,870 Podemos só obter a lonxitude da corda do argumento de que é ingresaran, 1702 01:20:44,870 --> 01:20:48,590 comproba que é menos que ou igual a 12-- 1703 01:20:48,590 --> 01:20:50,790 que é o que queremos que ser, porque nós non queremos 1704 01:20:50,790 --> 01:20:52,373 Lo a superar os límites da nosa buffer. 1705 01:20:52,373 --> 01:20:55,690 E entón, se iso non acontecer, nós pode traballar co argumento. 1706 01:20:55,690 --> 01:21:00,296 E, a continuación, se isto acontecer, queremos realmente para amarelo g potencialmente ao usuario. 1707 01:21:00,296 --> 01:21:01,670 Pero isto é coma nós faría iso. 1708 01:21:01,670 --> 01:21:02,443 Si. 1709 01:21:02,443 --> 01:21:04,360 >> Audiencia: Podería vostede explicar real rápido memcpy? 1710 01:21:04,360 --> 01:21:05,443 MARIA ZLATKOVA: Oh, desculpe. 1711 01:21:05,443 --> 01:21:06,040 Si. 1712 01:21:06,040 --> 01:21:11,290 Memcpy toma o que quere que é-- moito, Aceptar. 1713 01:21:11,290 --> 01:21:15,850 Memcpy leva todo o que é no bar, o que quere que é pasado 1714 01:21:15,850 --> 01:21:18,050 para foo como argumento de liña de comandos. 1715 01:21:18,050 --> 01:21:19,440 Por iso, vai levar argv1. 1716 01:21:19,440 --> 01:21:21,420 Argv1 chámase bar aquí. 1717 01:21:21,420 --> 01:21:24,453 Por iso, vai tomar bar e vai copialo en c. 1718 01:21:24,453 --> 01:21:25,402 >> Audiencia: Aceptar. 1719 01:21:25,402 --> 01:21:28,360 MARIA ZLATKOVA: E vai copy-- terceiro argumento refírese só 1720 01:21:28,360 --> 01:21:30,601 de canto vai copiar c. 1721 01:21:30,601 --> 01:21:31,142 Audiencia: Ah. 1722 01:21:31,142 --> 01:21:33,030 Entón esta é a copia de todo isto, entón. 1723 01:21:33,030 --> 01:21:34,310 >> MARIA ZLATKOVA: Si, está copiando todo isto. 1724 01:21:34,310 --> 01:21:34,810 Yep. 1725 01:21:34,810 --> 01:21:38,400 1726 01:21:38,400 --> 01:21:41,910 En primeiro lugar, asegúrese de que o bar non é igual a nulo, porque iso é un punteiro. 1727 01:21:41,910 --> 01:21:44,680 Entón comezamos a lonxitude da corda de bar. 1728 01:21:44,680 --> 01:21:47,530 Temos seguro de que é inferior ou igual a 12. 1729 01:21:47,530 --> 01:21:50,070 E entón, porque temos seguro, podemos, de feito, 1730 01:21:50,070 --> 01:21:53,122 memcpy e estar seguro de que está todo OK. 1731 01:21:53,122 --> 01:21:53,705 Algunha pregunta? 1732 01:21:53,705 --> 01:21:56,280 1733 01:21:56,280 --> 01:21:58,690 Gran. 1734 01:21:58,690 --> 01:22:00,400 Teño dúas preguntas de verdadeiro ou falso. 1735 01:22:00,400 --> 01:22:05,470 Alguén me pode dicir inmediatamente se estas son verdadeiras ou falsas? 1736 01:22:05,470 --> 01:22:07,460 Si, é falsa. 1737 01:22:07,460 --> 01:22:07,960 Exactamente. 1738 01:22:07,960 --> 01:22:09,330 Ambos son falsas. 1739 01:22:09,330 --> 01:22:12,682 Entón, usando unha única contrasinal nunca é realmente unha boa idea 1740 01:22:12,682 --> 01:22:14,890 porque se alguén sabe a chave, poden simplemente 1741 01:22:14,890 --> 01:22:16,260 acceder a todas as súas outras contas. 1742 01:22:16,260 --> 01:22:19,260 E, a continuación, iconas non facer nada para garantir a seguridade. 1743 01:22:19,260 --> 01:22:24,900 Debemos xeralmente buscan HTTPS no canto de HTTP e URL. 1744 01:22:24,900 --> 01:22:28,560 >> E algúns outros tipos de ataques que xa mencionados, 1745 01:22:28,560 --> 01:22:31,390 que David mencionou en charla, os ataques de inxección SQL. 1746 01:22:31,390 --> 01:22:37,310 Vimos que, se o don't-- Función de consulta CS50 asegura que SQL 1747 01:22:37,310 --> 01:22:39,530 ataques de inxección non pode ocorrer. 1748 01:22:39,530 --> 01:22:42,640 Pero se non estivésemos usando CS50, Cita, pecha comiñas "na consulta," 1749 01:22:42,640 --> 01:22:46,830 teriamos que estar seguro de que o entrada do usuario non é realmente algunha SQL 1750 01:22:46,830 --> 01:22:49,670 consulta que fará que todas nosas mesas para ser descartado 1751 01:22:49,670 --> 01:22:54,070 ou algo de malo pasar co noso banco de datos. 1752 01:22:54,070 --> 01:22:56,790 >> Secuestro de sesión é outro tipo de ataque 1753 01:22:56,790 --> 01:23:05,940 Que pasa cando un mal persoa usa a sesión de algunha vítima 1754 01:23:05,940 --> 01:23:08,740 ID para acceder a información de inicio de sesión. 1755 01:23:08,740 --> 01:23:13,620 Así, un exemplo moi trivial de que é como se temos un ordenador público, 1756 01:23:13,620 --> 01:23:21,120 a continuación, a mala persoa entra e, a continuación, teñen cookies que son gardadas. 1757 01:23:21,120 --> 01:23:23,380 E as cookies non pasar á sesión. 1758 01:23:23,380 --> 01:23:27,620 >> A continuación, ten por vítima entrar e, a continuación, entrar no sitio. 1759 01:23:27,620 --> 01:23:30,290 As cookies non cambiar para unha determinada sesión. 1760 01:23:30,290 --> 01:23:33,060 E, a continuación, a vítima accede ao o sitio web e, a continuación, sae. 1761 01:23:33,060 --> 01:23:36,190 E, a continuación, a persoa que vai cara atrás a continuación, pode aínda utilizar a ID da sesión 1762 01:23:36,190 --> 01:23:37,430 para acceder a súa información. 1763 01:23:37,430 --> 01:23:40,050 Entón este é un exemplo de como isto podería ocorrer. 1764 01:23:40,050 --> 01:23:45,570 >> E entón eu non me preocuparía moito sobre o código específico ou nada 1765 01:23:45,570 --> 01:23:49,270 como aquel que podería causar iso, pero ter algún tipo de idea que 1766 01:23:49,270 --> 01:23:51,400 as variables implicadas neste son. 1767 01:23:51,400 --> 01:23:53,897 E, a continuación, manipular cabeceira é outro tipo de datos de ataque 1768 01:23:53,897 --> 01:23:55,230 que ten David falou. 1769 01:23:55,230 --> 01:23:59,730 E iso só se refire a o que pode ocorrer cando 1770 01:23:59,730 --> 01:24:04,300 a resposta, o HTTP resposta dentro do noso cabeceira 1771 01:24:04,300 --> 01:24:05,720 non é higienizado adecuadamente. 1772 01:24:05,720 --> 01:24:14,340 >> E calquera dos fields-- por exemplo, Se alguén substitúe un dos cabeceira 1773 01:24:14,340 --> 01:24:18,860 valores para conter algo máis que o que deben contain-- e, de feito, 1774 01:24:18,860 --> 01:24:22,720 conter, por exemplo, un 200 Código de estado OK, entón eles 1775 01:24:22,720 --> 01:24:26,890 podería facer mal intencionado cousas cando non se quere. 1776 01:24:26,890 --> 01:24:30,815 Pero eu non me preocuparía moito moito sobre o código específico 1777 01:24:30,815 --> 01:24:34,110 que podería causar este, só unha especie de entendemento 1778 01:24:34,110 --> 01:24:37,290 de alto nivel cousas así. 1779 01:24:37,290 --> 01:24:39,570 >> Eu creo que iso é todo que temos que cubrir. 1780 01:24:39,570 --> 01:24:40,090 Incrible. 1781 01:24:40,090 --> 01:24:43,310 Alguén ten algunha dúbida sobre calquera das cousas que nos códigos? 1782 01:24:43,310 --> 01:24:44,213 Si. 1783 01:24:44,213 --> 01:24:48,077 >> Audiencia: Entón unha especie de pregunta máis loxístico. 1784 01:24:48,077 --> 01:24:53,400 O contido está centrado principalmente para as cousas segundo cuestionario 1? 1785 01:24:53,400 --> 01:24:55,730 >> MARIA ZLATKOVA: Entón, pregunta é, é o contido 1786 01:24:55,730 --> 01:24:59,720 enfocada principalmente para as cousas segundo cuestionario 1? 1787 01:24:59,720 --> 01:25:06,070 Así, o foco é sobre despois cuestionario 1, con excepción 1788 01:25:06,070 --> 01:25:10,914 que temos que concentrar en cousas en pset5 e unha morea de as estruturas de datos 1789 01:25:10,914 --> 01:25:11,580 que nós Cubrimos. 1790 01:25:11,580 --> 01:25:14,300 E non podemos dicir que nós pode ignorar calquera cousa antes 1791 01:25:14,300 --> 01:25:17,120 que xa constrúe encima del tamén. 1792 01:25:17,120 --> 01:25:21,845 >> Así, o foco en que, ademais de material de pset5 como incluíndo enlaces listas, pilas, 1793 01:25:21,845 --> 01:25:23,720 colas, e todo que Hannah pasou. 1794 01:25:23,720 --> 01:25:24,050 >> HANNAH Blumberg: Correcto. 1795 01:25:24,050 --> 01:25:27,450 Si, nós fomos sobre todo o material C en principio, moi rapidamente. 1796 01:25:27,450 --> 01:25:29,090 Pero asegúrese de revisar iso. 1797 01:25:29,090 --> 01:25:32,700 Vaia cara atrás e ver o quiz 0 avaliación. 1798 01:25:32,700 --> 01:25:36,110 >> Un par notas máis loxísticos, só mentres temos a súa atención. 1799 01:25:36,110 --> 01:25:39,100 Nós imos ter o horario de oficina ambos o luns e martes noite. 1800 01:25:39,100 --> 01:25:41,540 Eles van estar en MD 119. 1801 01:25:41,540 --> 01:25:44,220 Isto é todo o sitio, para se non oín-lo, non se preocupe. 1802 01:25:44,220 --> 01:25:45,266 >> MARIA ZLATKOVA: 8: 30-11: 00. 1803 01:25:45,266 --> 01:25:46,260 >> HANNAH Blumberg: Si, 8: 30-11: 00. 1804 01:25:46,260 --> 01:25:46,910 Estaremos alí. 1805 01:25:46,910 --> 01:25:48,368 Estaremos alí para responder preguntas. 1806 01:25:48,368 --> 01:25:49,480 É moi frío e divertido. 1807 01:25:49,480 --> 01:25:53,240 Podedes preguntar calquera dúbida que ten no cuestionario 1. 1808 01:25:53,240 --> 01:25:55,740 E cuestionario 1 é o Mércores, entón boa sorte. 1809 01:25:55,740 --> 01:25:59,770 Se ten algunha dúbida, quizais vir falar connosco ata aquí one-on-one. 1810 01:25:59,770 --> 01:26:00,880 Legal. 1811 01:26:00,880 --> 01:26:01,630 Moitas grazas. 1812 01:26:01,630 --> 01:26:02,880 >> MARIA ZLATKOVA: Moitas grazas, rapaces. 1813 01:26:02,880 --> 01:26:03,480 >> Audiencia: Yay. 1814 01:26:03,480 --> 01:26:05,930 >> [Aplausos] 1815 01:26:05,930 --> 01:26:07,530