1 00:00:00,000 --> 00:00:02,964 2 00:00:02,964 --> 00:00:05,434 >> [Música tocando] 3 00:00:05,434 --> 00:00:11,825 4 00:00:11,825 --> 00:00:12,700 HANNAH: Ola, todos. 5 00:00:12,700 --> 00:00:15,866 Grazas a vós por teren benvida para fóra o tempo repugnante para unha proba 6 00:00:15,866 --> 00:00:16,910 revisar sesión. 7 00:00:16,910 --> 00:00:20,020 Como vostedes saben, quiz un é o mércores. 8 00:00:20,020 --> 00:00:22,209 Entón, nós estamos indo a ir a través dun grupo de temas. 9 00:00:22,209 --> 00:00:24,000 Davin: Hey, eu podo dicir algo ben rápido? 10 00:00:24,000 --> 00:00:25,215 HANNAH: Si, Davin está pasando dicir algo así rápido. 11 00:00:25,215 --> 00:00:25,780 Davin: Sentímolo. 12 00:00:25,780 --> 00:00:29,490 Só ben rápido, se ten dúbidas sobre o quiz, pode ir en liña. 13 00:00:29,490 --> 00:00:32,420 Vaia a 2014 cuestionario un, sobre o quiz. 14 00:00:32,420 --> 00:00:34,680 Ten preto de loxística onde ir, cando ir. 15 00:00:34,680 --> 00:00:38,100 Se está inscrito simultaneamente, estamos vai ter unha proba de maquillaxe ás 5:30. 16 00:00:38,100 --> 00:00:40,350 Ou se me enviou un problema, ten algún outro problema. 17 00:00:40,350 --> 00:00:42,640 Pero 5:30 é o make-up vez o mércores. 18 00:00:42,640 --> 00:00:44,540 Pero se ten dúbidas, cuestións xerais, 19 00:00:44,540 --> 00:00:45,748 en liña ten toda a loxística. 20 00:00:45,748 --> 00:00:47,690 Polo tanto, comproba alí primeiro. 21 00:00:47,690 --> 00:00:49,070 >> HANNAH: Awesome. 22 00:00:49,070 --> 00:00:53,030 Entón aquí está a gran lista de temas que nós imos pasar por hoxe. 23 00:00:53,030 --> 00:00:57,390 Eu estou indo a cubrir todo o C material, que é a primeira columna. 24 00:00:57,390 --> 00:01:00,710 Así, o material C que nós Abrangue, tras proba cero. 25 00:01:00,710 --> 00:01:05,459 Comezando cunha lista ligada, que inclúe punteiros. 26 00:01:05,459 --> 00:01:07,668 >> Todo ben, entón vimos este na última sesión de revisión, 27 00:01:07,668 --> 00:01:10,000 entón eu vou pasar por iso é un pouco máis rápido. 28 00:01:10,000 --> 00:01:13,500 Só levante a man se me quere retardar ou abordar algo máis. 29 00:01:13,500 --> 00:01:17,150 Pero usamos listas conectados, porque comezamos en C con arrays. 30 00:01:17,150 --> 00:01:20,920 E matrices son grandes, pero o problema é que eles teñen un tamaño fixo. 31 00:01:20,920 --> 00:01:24,925 Listas ligadas permítennos crear Deseñada dinamicamente estruturas de datos. 32 00:01:24,925 --> 00:01:28,520 33 00:01:28,520 --> 00:01:32,320 >> E temos as nosas operacións básicas, inserir, eliminar e procurar. 34 00:01:32,320 --> 00:01:36,780 E podemos facer inserir en peor caso de tempo constante 35 00:01:36,780 --> 00:01:39,140 se nós só poñelas ao comezo. 36 00:01:39,140 --> 00:01:45,220 Borrar e investigar, peor caso oh gran de tempo n. 37 00:01:45,220 --> 00:01:47,140 Entón, de novo, só para virar a través destas imaxes, 38 00:01:47,140 --> 00:01:50,860 Sei que xa vimos estes última vez, pero nós quere manter o control de nosa lista ligada 39 00:01:50,860 --> 00:01:53,440 por manter o control da xefe da nosa lista ligada. 40 00:01:53,440 --> 00:01:55,580 Porque sabemos que cada un dos seus nodos 41 00:01:55,580 --> 00:01:58,610 é só ir para apuntar para o preto nó na nosa lista ligada. 42 00:01:58,610 --> 00:02:00,460 >> Entón é así que estamos a seguir. 43 00:02:00,460 --> 00:02:02,910 Aínda que estes non son pezas continuas de memoria, 44 00:02:02,910 --> 00:02:07,410 podemos atopalos por só seguindo as frechas diferentes. 45 00:02:07,410 --> 00:02:09,800 Aquí é a nosa estrutura para un nó de lista ligada. 46 00:02:09,800 --> 00:02:11,440 Vimos que na última vez. 47 00:02:11,440 --> 00:02:13,080 Temos o noso nodo struct. 48 00:02:13,080 --> 00:02:14,340 E ten dúas propiedades. 49 00:02:14,340 --> 00:02:17,020 Número un, o real valor que desexa almacenar. 50 00:02:17,020 --> 00:02:18,290 Neste caso, é un número enteiro. 51 00:02:18,290 --> 00:02:21,100 Podería ser unha corda, que podería ser un char, o que quere. 52 00:02:21,100 --> 00:02:24,710 E entón, temos que manter o control de o seguinte nó na nosa lista ligada. 53 00:02:24,710 --> 00:02:29,797 Entón iso vai ser unha punteiro ao seguinte nodo. 54 00:02:29,797 --> 00:02:31,880 Se estaba só facendo investigación, como dixen antes, 55 00:02:31,880 --> 00:02:34,900 que tería que seguir as súas frechas cara a abaixo. 56 00:02:34,900 --> 00:02:40,720 Inserción, que ía manter o control de onde o resto da súa lista é. 57 00:02:40,720 --> 00:02:44,150 E quere redireccionar a cabeza para apuntar para o noso novo elemento, que 58 00:02:44,150 --> 00:02:46,640 neste caso é un, e, a continuación, un apuntará 59 00:02:46,640 --> 00:02:49,480 para o resto da lista ligada. 60 00:02:49,480 --> 00:02:52,996 Entón, de novo, eu sei que iso é un pouco bit dunha repetición da proba cero. 61 00:02:52,996 --> 00:02:55,370 Polo tanto, temos que ter moito coidado sobre a orde en que 62 00:02:55,370 --> 00:03:00,390 facer estas pointings polo tanto, non facer perder o control de parte de atrás da lista. 63 00:03:00,390 --> 00:03:04,122 OK, as preguntas con só vinculada illadamente listas? 64 00:03:04,122 --> 00:03:06,060 Awesome, OK, legal. 65 00:03:06,060 --> 00:03:09,410 >> Entón, agora, nós estamos indo a ir a algo só lixeiramente máis complicado, 66 00:03:09,410 --> 00:03:10,920 dobremente ligada listas. 67 00:03:10,920 --> 00:03:13,680 Así, ademais de manter franxa do próximo nodo, 68 00:03:13,680 --> 00:03:16,220 tamén queremos manter o control do nodo anterior. 69 00:03:16,220 --> 00:03:19,580 E iso permítenos, se estamos nalgún momento da nosa lista ligada, 70 00:03:19,580 --> 00:03:23,110 non só ir á fronte, pero tamén iteración atrás. 71 00:03:23,110 --> 00:03:25,220 Porque, como vimos no unha lista vinculada illadamente, 72 00:03:25,220 --> 00:03:27,980 se estivésemos nalgún nodo, e de súpeto, decidimos, 73 00:03:27,980 --> 00:03:30,160 en realidade, eu quero ir á dereito nodo antes de min, 74 00:03:30,160 --> 00:03:32,034 que tería que ir con todo o camiño de volta para a cabeza 75 00:03:32,034 --> 00:03:35,710 e iterado ata que atopou o nodo que busca. 76 00:03:35,710 --> 00:03:37,680 >> Entón, iso fai que as cousas un pouco máis fácil, xa que estamos 77 00:03:37,680 --> 00:03:39,670 intentando facer unha iteración a través da nosa lista ligada. 78 00:03:39,670 --> 00:03:47,870 Pero iso obríganos a manter o control dun máis punteiro, por iso unha estrela no. 79 00:03:47,870 --> 00:03:50,830 Todo ben, entón aquí vén a parte divertida. 80 00:03:50,830 --> 00:03:55,600 Estamos indo para a práctica de execución eliminar para listas dobremente ligadas. 81 00:03:55,600 --> 00:03:58,660 Entón, iso é algo que é xogo totalmente xusto para o quiz. 82 00:03:58,660 --> 00:04:00,750 Mostrou-se en cuestionarios pasados. 83 00:04:00,750 --> 00:04:04,220 Entón, en definitiva ser preparado codificar un pouco en C. 84 00:04:04,220 --> 00:04:07,900 Non hai que esquecer que, con toda este divertido PHP e JavaScript, 85 00:04:07,900 --> 00:04:10,560 aínda temos que lembrar facer C. Entón retocar en que 86 00:04:10,560 --> 00:04:12,146 Se está sentindo oxidado. 87 00:04:12,146 --> 00:04:14,580 >> Todo ben, imos ver se podemos facelo. 88 00:04:14,580 --> 00:04:16,312 OK, legal. 89 00:04:16,312 --> 00:04:18,600 Entón, nós estamos indo a tentar para editar ben aquí, 90 00:04:18,600 --> 00:04:20,707 e espero que isto ocorre como planificado. 91 00:04:20,707 --> 00:04:23,915 Todo ben, alguén quere me dar unha suxestión de como podo comezar? 92 00:04:23,915 --> 00:04:27,030 A única hipótese que eu son toma é que eu xa 93 00:04:27,030 --> 00:04:30,180 ter unha estrutura definida, o un mostre na última páxina, 94 00:04:30,180 --> 00:04:31,420 no último foto. 95 00:04:31,420 --> 00:04:39,250 E eu estou almacenando a cabeza do meu conectados lista nalgún punteiro lista chamada. 96 00:04:39,250 --> 00:04:42,190 Alguén quere me comezou? 97 00:04:42,190 --> 00:04:45,410 >> Audiencia: Pode crear unha nova nó para chamar a lista? 98 00:04:45,410 --> 00:04:46,410 >> HANNAH: Awesome, de xeito imos crear 99 00:04:46,410 --> 00:04:47,951 un novo nodo para rastexaren a través da lista. 100 00:04:47,951 --> 00:04:48,570 Me gusta diso. 101 00:04:48,570 --> 00:04:50,799 Vou chamalo punteiro se está todo OK. 102 00:04:50,799 --> 00:04:52,340 E onde debería inicialmente comezar? 103 00:04:52,340 --> 00:04:57,280 104 00:04:57,280 --> 00:04:59,840 >> Audiencia: Probablemente en o cabeza de lista. 105 00:04:59,840 --> 00:05:00,590 HANNAH: Beautiful. 106 00:05:00,590 --> 00:05:03,670 Queremos comezar na cabeza, o que Eu dixen que será almacenada lista. 107 00:05:03,670 --> 00:05:04,170 Impresionante. 108 00:05:04,170 --> 00:05:05,220 De momento, todo ben. 109 00:05:05,220 --> 00:05:08,260 E agora, o noso obxectivo é percorrer a lista 110 00:05:08,260 --> 00:05:12,870 ata atopar o nodo con valor n que desexa eliminar. 111 00:05:12,870 --> 00:05:13,540 OK? 112 00:05:13,540 --> 00:05:15,910 >> Entón agora é a parte onde queremos para percorrer. 113 00:05:15,910 --> 00:05:19,488 Alguén pode suxerir unha camiño para percorrer? 114 00:05:19,488 --> 00:05:20,979 >> Audiencia: Un bucle. 115 00:05:20,979 --> 00:05:21,840 >> HANNAH: Un bucle. 116 00:05:21,840 --> 00:05:22,620 Eu quero iso. 117 00:05:22,620 --> 00:05:25,550 En concreto, podemos probar un loop while. 118 00:05:25,550 --> 00:05:30,919 OK, e sabemos que chegamos o fin da nosa lista cando o que? 119 00:05:30,919 --> 00:05:32,210 Audiencia: Cando o punteiro é nulo. 120 00:05:32,210 --> 00:05:33,418 HANNAH: Cando o punteiro é nulo. 121 00:05:33,418 --> 00:05:34,320 Fermosa, eu adoro iso. 122 00:05:34,320 --> 00:05:35,110 OK, legal. 123 00:05:35,110 --> 00:05:39,300 124 00:05:39,300 --> 00:05:43,190 Entón, desculpe se o meu delimitador Brace é tipo de caer fóra da pantalla. 125 00:05:43,190 --> 00:05:44,090 Nos trouxo de volta. 126 00:05:44,090 --> 00:05:46,610 OK, legal. 127 00:05:46,610 --> 00:05:48,690 Cal é o próximo? 128 00:05:48,690 --> 00:05:51,950 >> Entón, nós sabemos que quere eliminar o nodo que ten valor n. 129 00:05:51,950 --> 00:05:56,340 Entón, imos descubrir o que ocorre cando nós, en realidade, atopar o noso nodo. 130 00:05:56,340 --> 00:05:57,840 Entón, como é que eu ía comprobar iso? 131 00:05:57,840 --> 00:06:02,210 Eu tiña acaba de dicir se punteiro, e, a continuación, se eu quere obter o valor de punteiro, 132 00:06:02,210 --> 00:06:08,940 Eu só flecha n, é igual a n, o parámetro 133 00:06:08,940 --> 00:06:14,490 que demos para esta función, o nó que queremos realmente borrar. 134 00:06:14,490 --> 00:06:17,090 Calquera dúbida ata aquí? 135 00:06:17,090 --> 00:06:18,360 Todo certo. 136 00:06:18,360 --> 00:06:24,140 OK, entón agora imos sacar unha foto rápida no consello, a fin de ver iso. 137 00:06:24,140 --> 00:06:30,710 >> Entón, digamos que hai a nosa linda nodo. 138 00:06:30,710 --> 00:06:34,480 E iso ten un valor, vou só dicir catro. 139 00:06:34,480 --> 00:06:40,340 E apunta ao seguinte nó na nosa lista ligada. 140 00:06:40,340 --> 00:06:42,220 E non hai nada antes del. 141 00:06:42,220 --> 00:06:45,800 Polo tanto, temos a nosa anterior apuntando para nada. 142 00:06:45,800 --> 00:06:48,110 Neste caso, apuntamos para atrás. 143 00:06:48,110 --> 00:06:50,960 OK, só a creación de meu lista ligada por aquí. 144 00:06:50,960 --> 00:06:53,630 E nós temos unha lista que apunta a esta estrutura, para comezar. 145 00:06:53,630 --> 00:06:57,220 146 00:06:57,220 --> 00:07:00,485 Vou chamar máis un para ser exhaustivo. 147 00:07:00,485 --> 00:07:04,209 148 00:07:04,209 --> 00:07:06,117 Aceptar. 149 00:07:06,117 --> 00:07:07,480 Vou indicar iso adiante. 150 00:07:07,480 --> 00:07:09,550 E eu vou apuntar que unha volta. 151 00:07:09,550 --> 00:07:10,360 Ops, desculpe. 152 00:07:10,360 --> 00:07:12,710 Si, teño esa cara atrás. 153 00:07:12,710 --> 00:07:15,548 154 00:07:15,548 --> 00:07:16,967 Facelo de novo. 155 00:07:16,967 --> 00:07:18,330 OK, alí imos nós. 156 00:07:18,330 --> 00:07:19,910 Todo ben, entendín. 157 00:07:19,910 --> 00:07:21,780 OK, aquí está a nosa imaxe. 158 00:07:21,780 --> 00:07:24,860 >> OK, por iso queremos considerar dous casos. 159 00:07:24,860 --> 00:07:27,330 O primeiro caso é o nó que quere eliminar 160 00:07:27,330 --> 00:07:29,420 é ao comezo da nosa lista. 161 00:07:29,420 --> 00:07:34,070 E, a continuación, o segundo caso que queremos a considerar é se é en calquera outro lugar. 162 00:07:34,070 --> 00:07:37,660 Entendo que isto un totalmente desorde deseño con todo o meu borrado, 163 00:07:37,660 --> 00:07:40,400 pero espero que nós imos tratar deixar isto claro con algún código. 164 00:07:40,400 --> 00:07:45,450 >> OK, entón imos cubrir o caso onde atopamos o noso nodo, 165 00:07:45,450 --> 00:07:48,900 e é o propio inicio da nosa lista ligada. 166 00:07:48,900 --> 00:07:50,810 Alguén me pode dar un suxestión sobre o que aquí 167 00:07:50,810 --> 00:07:54,684 Que debo facer para realmente eliminar o noso nó? 168 00:07:54,684 --> 00:07:55,970 É un pouco complicado. 169 00:07:55,970 --> 00:07:56,470 OK? 170 00:07:56,470 --> 00:07:59,628 >> Audiencia: Ten que ter o nó que sería antes de 171 00:07:59,628 --> 00:08:01,794 e facelo apuntar ao aquel que sería despois, 172 00:08:01,794 --> 00:08:03,004 e aproveitar o nó que sería despois lo e torná- 173 00:08:03,004 --> 00:08:04,554 Lo apuntar ao nodo antes del. 174 00:08:04,554 --> 00:08:05,220 HANNAH: Exactamente. 175 00:08:05,220 --> 00:08:10,640 OK, entón que é o caso where-- temos dous casos. 176 00:08:10,640 --> 00:08:14,100 Temos o caso de que o nó que estamos a buscar 177 00:08:14,100 --> 00:08:18,270 é a cabeza da lista. 178 00:08:18,270 --> 00:08:23,110 OK, e logo o caso que descrito é doutro xeito, non? 179 00:08:23,110 --> 00:08:24,500 É noutro lugar na lista. 180 00:08:24,500 --> 00:08:27,460 181 00:08:27,460 --> 00:08:32,840 Entón dixen, necesitamos mirar para o nodo anterior, 182 00:08:32,840 --> 00:08:36,500 e facer o nó anterior apunta ao seguinte nodo. 183 00:08:36,500 --> 00:08:40,510 Entón, imos dicir que estamos tentando aproveitar cinco 184 00:08:40,510 --> 00:08:43,059 no meu deseño moi desorde aquí. 185 00:08:43,059 --> 00:08:47,530 Queremos estar seguro de que catro agora apunta a seis. 186 00:08:47,530 --> 00:08:49,590 Catro é o seguinte a seis puntos. 187 00:08:49,590 --> 00:08:52,150 E seis de puntos anteriores a catro. 188 00:08:52,150 --> 00:08:53,960 Ese é o noso obxectivo aquí, non? 189 00:08:53,960 --> 00:08:56,150 Isto é o que eu creo que só dixo alí. 190 00:08:56,150 --> 00:08:58,450 >> OK, entón imos comezar a primeira peza. 191 00:08:58,450 --> 00:09:02,300 Imos facer a ter a punteiro anterior anterior. 192 00:09:02,300 --> 00:09:06,550 193 00:09:06,550 --> 00:09:09,690 Entón, catro do próximo debería apuntar o que? 194 00:09:09,690 --> 00:09:13,210 195 00:09:13,210 --> 00:09:14,900 Precisamente, neste caso, seis. 196 00:09:14,900 --> 00:09:18,470 Así, temos que dicir punteiro, a continuación. 197 00:09:18,470 --> 00:09:20,600 OK? 198 00:09:20,600 --> 00:09:21,150 Todo certo. 199 00:09:21,150 --> 00:09:24,870 Entón, imos nos librar da imaxe fea e intentar sacar algo Buscamos un. 200 00:09:24,870 --> 00:09:29,040 201 00:09:29,040 --> 00:09:31,172 Temos a nosa cabeza lista aquí. 202 00:09:31,172 --> 00:09:36,440 203 00:09:36,440 --> 00:09:42,740 E que apunta para o primeiro nodo nosa lista ligada, o que dixemos é catro. 204 00:09:42,740 --> 00:09:45,620 Aquí está o noso segundo nó, cinco. 205 00:09:45,620 --> 00:09:47,307 E o noso terceiro nó, seis. 206 00:09:47,307 --> 00:09:50,265 Só tentando deseñar exactamente o mesmo imaxe, só un pouco máis limpa. 207 00:09:50,265 --> 00:09:52,780 208 00:09:52,780 --> 00:09:56,280 OK, polo tanto, catro do próximo orixinalmente apunta cinco. 209 00:09:56,280 --> 00:09:58,620 Cinco da próximos puntos a seis. 210 00:09:58,620 --> 00:10:00,170 Seis de puntos anteriores a cinco. 211 00:10:00,170 --> 00:10:02,470 E cinco de puntos anteriores a catro. 212 00:10:02,470 --> 00:10:03,360 Moito máis fermosos! 213 00:10:03,360 --> 00:10:04,530 OK, legal. 214 00:10:04,530 --> 00:10:07,770 >> Entón, agora, o que nós fixemos só aquí, esta liña de código, 215 00:10:07,770 --> 00:10:12,680 que di punteiro anterior xunto, entón que é o que significa isto? 216 00:10:12,680 --> 00:10:17,540 Isto significa que se nós estamos mirando para cinco, ir ao nodo anterior, 217 00:10:17,540 --> 00:10:21,970 e é preto debe agora apunte a cinco do próximo. 218 00:10:21,970 --> 00:10:27,840 Entón, basicamente, o que é iso que fai é que está apagando esta frecha 219 00:10:27,840 --> 00:10:29,640 e facelo saltar sobre cinco. 220 00:10:29,640 --> 00:10:31,360 Está claro? 221 00:10:31,360 --> 00:10:33,200 Sei que pode ser un pouco esbozado. 222 00:10:33,200 --> 00:10:34,480 Vexo algúns acenos de cabeza. 223 00:10:34,480 --> 00:10:35,390 Iso é bo. 224 00:10:35,390 --> 00:10:36,670 OK, legal. 225 00:10:36,670 --> 00:10:39,590 Agora, cal é o seguinte paso? 226 00:10:39,590 --> 00:10:42,060 >> Eu axustar o próximo. 227 00:10:42,060 --> 00:10:45,297 Agora, o que a outra frecha necesito cambiar? 228 00:10:45,297 --> 00:10:46,130 Este aquí. 229 00:10:46,130 --> 00:10:47,560 Seis da anterior. 230 00:10:47,560 --> 00:10:50,620 Non queremos seis do anterior para ligar a máis de cinco. 231 00:10:50,620 --> 00:10:54,580 Queremos que el apunta catro. 232 00:10:54,580 --> 00:10:56,190 Será que a imaxe ten sentido? 233 00:10:56,190 --> 00:10:58,370 Entón agora podemos realmente ter cinco. 234 00:10:58,370 --> 00:10:59,370 Entón, imos comezar esta parte. 235 00:10:59,370 --> 00:11:03,390 236 00:11:03,390 --> 00:11:11,180 ¿Que debería facer antes de axustar seis do anterior para catro? 237 00:11:11,180 --> 00:11:14,360 Todas as ideas alí? 238 00:11:14,360 --> 00:11:17,369 >> Audiencia: Solte o nodo entre Los, definíndoo como nulo? 239 00:11:17,369 --> 00:11:17,910 HANNAH: Cool. 240 00:11:17,910 --> 00:11:21,100 En definitiva, o noso obxectivo final é será para liberar o nodo. 241 00:11:21,100 --> 00:11:22,490 Así, podemos facelo aquí. 242 00:11:22,490 --> 00:11:23,540 Punteiro gratis. 243 00:11:23,540 --> 00:11:24,810 Absolutamente. 244 00:11:24,810 --> 00:11:29,160 Pero, mesmo antes diso, imos só-- noso dereito obxectivo 245 00:11:29,160 --> 00:11:38,730 aquí é establecer punteiro próximo anterior igual ao punteiro anterior. 246 00:11:38,730 --> 00:11:40,760 Sei que isto está a ficar encuberto. 247 00:11:40,760 --> 00:11:45,440 OK, imos take-- legal. 248 00:11:45,440 --> 00:11:46,990 Todos poden ver esta liña de fondo? 249 00:11:46,990 --> 00:11:47,840 Ou é super pequena? 250 00:11:47,840 --> 00:11:50,430 251 00:11:50,430 --> 00:11:54,300 >> Entón, antes de realizar esta liña aquí, queremos 252 00:11:54,300 --> 00:11:58,375 para asegurarse de que punteiro próximo non é nulo. 253 00:11:58,375 --> 00:12:00,500 Porque se punteiro próximo é null, que tipo de erro 254 00:12:00,500 --> 00:12:02,727 vou recibir cando intento referencia a un punteiro nulo? 255 00:12:02,727 --> 00:12:03,560 Audiencia: Lun culpa. 256 00:12:03,560 --> 00:12:05,660 HANNAH: un fallo Lun, bonito. 257 00:12:05,660 --> 00:12:09,690 OK, entón, se iso non é null, entón podemos repoñer. 258 00:12:09,690 --> 00:12:14,420 E nós temos seis puntos de novo para catro. 259 00:12:14,420 --> 00:12:17,440 Preguntas ata este punto? 260 00:12:17,440 --> 00:12:17,940 Si? 261 00:12:17,940 --> 00:12:19,814 >> Audiencia: Na súa primeira if, non é 262 00:12:19,814 --> 00:12:23,817 significa ter a frecha seguinte, ou [inaudível]? 263 00:12:23,817 --> 00:12:25,150 HANNAH: Eu quería dicir frecha punteiro n. 264 00:12:25,150 --> 00:12:30,270 Entón, basicamente, o que eu estou tentando facer é dicir, o nodo actual que eu son 265 00:12:30,270 --> 00:12:34,100 iteración sobre, o nodo actual que Eu estou mirando, estou almacenando no punteiro. 266 00:12:34,100 --> 00:12:37,630 E quero saber punteiro do valor, que neste caso é o n. 267 00:12:37,630 --> 00:12:39,500 E quero ver, é o no que eu estou buscando 268 00:12:39,500 --> 00:12:42,790 para o no que estou co obxectivo de eliminar? 269 00:12:42,790 --> 00:12:47,657 Entón é por iso que temos aquí punteiro n. 270 00:12:47,657 --> 00:12:49,857 >> Audiencia: Entón, a frecha que vai para n, define o valor 271 00:12:49,857 --> 00:12:52,058 e almacena-lo nun nodo chamado n? 272 00:12:52,058 --> 00:12:55,410 273 00:12:55,410 --> 00:12:58,820 >> HANNAH: Entón, é como se eu son pasando por esa lista ligada 274 00:12:58,820 --> 00:13:00,310 e apuntando para cinco. 275 00:13:00,310 --> 00:13:03,600 Se eu queira obter ese valor, se Quero obter este número, 5, 276 00:13:03,600 --> 00:13:06,400 Teño que facer punteiro de frecha n. 277 00:13:06,400 --> 00:13:06,900 Legal? 278 00:13:06,900 --> 00:13:07,900 Si. 279 00:13:07,900 --> 00:13:11,200 >> Audiencia: é N nome da variable? 280 00:13:11,200 --> 00:13:11,700 HANNAH: Si. 281 00:13:11,700 --> 00:13:14,870 Entón, se nós virar cara atrás un deslizante, n é o nome 282 00:13:14,870 --> 00:13:18,660 do valor dentro do nó na nosa lista ligada. 283 00:13:18,660 --> 00:13:21,510 E sei que pode estar un pouco pouco confuso porque nós tamén 284 00:13:21,510 --> 00:13:24,680 están chamando a cousa que queremos eliminar n. 285 00:13:24,680 --> 00:13:26,717 Entón é aí que unha liña vén. 286 00:13:26,717 --> 00:13:27,671 Si? 287 00:13:27,671 --> 00:13:31,010 >> Audiencia: O que ten [Inaudível] como funcionan? 288 00:13:31,010 --> 00:13:33,872 289 00:13:33,872 --> 00:13:35,780 Un punteiro [inaudível]? 290 00:13:35,780 --> 00:13:37,520 >> HANNAH: Claro. 291 00:13:37,520 --> 00:13:40,027 Está falando que about-- liña? 292 00:13:40,027 --> 00:13:41,526 Audiencia: A última liña [inaudível]. 293 00:13:41,526 --> 00:13:44,280 294 00:13:44,280 --> 00:13:45,250 >> HANNAH: Claro, OK. 295 00:13:45,250 --> 00:13:48,540 Entón, imos ollar para a imaxe en Para tratar de explicar iso. 296 00:13:48,540 --> 00:13:51,030 Sinto moito, para o cámara, a cuestión era 297 00:13:51,030 --> 00:13:54,580 podemos explicar punteiro punteiro de frecha próximo anterior. 298 00:13:54,580 --> 00:14:01,510 OK, entón imos dicir que estamos en cinco eo noso obxectivo é eliminar cinco. 299 00:14:01,510 --> 00:14:07,240 Entón punteiro seguinte, cal destes tres nós que iso nos dá? 300 00:14:07,240 --> 00:14:10,840 Isto nos leva ao sexto no, non? 301 00:14:10,840 --> 00:14:16,490 >> OK, entón agora estamos pedindo para a seis do anterior. 302 00:14:16,490 --> 00:14:17,060 OK? 303 00:14:17,060 --> 00:14:20,210 E nós estamos redefinindo esta ser igual a catro, 304 00:14:20,210 --> 00:14:23,214 que pasou a ser de cinco da anterior. 305 00:14:23,214 --> 00:14:25,180 Sei, é super difícil de seguir. 306 00:14:25,180 --> 00:14:29,286 Realmente recomendo que sacar fotos se recibe unha pregunta como esta. 307 00:14:29,286 --> 00:14:30,242 Si? 308 00:14:30,242 --> 00:14:32,617 >> Audiencia: É a razón que non temos un [inaudível]? 309 00:14:32,617 --> 00:14:37,430 310 00:14:37,430 --> 00:14:38,570 >> HANNAH: Exactamente. 311 00:14:38,570 --> 00:14:44,800 Entón, a pregunta era: por que facer non que comprobar aquí? 312 00:14:44,800 --> 00:14:48,160 Por que non debemos comprobar que punteiro anterior non é igual a nulo? 313 00:14:48,160 --> 00:14:50,070 E é porque temos xa separados 314 00:14:50,070 --> 00:14:52,490 o caso do punteiro ao comezo. 315 00:14:52,490 --> 00:14:54,060 Moi boa pregunta. 316 00:14:54,060 --> 00:14:56,880 Algo sobre iso? 317 00:14:56,880 --> 00:14:57,380 OK, legal. 318 00:14:57,380 --> 00:14:58,360 Entón, imos remata-la. 319 00:14:58,360 --> 00:14:59,890 Estamos case alí. 320 00:14:59,890 --> 00:15:01,310 >> Entón, o que se está na cabeza? 321 00:15:01,310 --> 00:15:03,360 E se en vez de tentando eliminar cinco, 322 00:15:03,360 --> 00:15:06,240 nós realmente quería eliminar catro? 323 00:15:06,240 --> 00:15:07,270 O que eu teño que facer? 324 00:15:07,270 --> 00:15:09,610 Ben, eu quero axustar miña cabeza para o que? 325 00:15:09,610 --> 00:15:14,288 326 00:15:14,288 --> 00:15:15,585 Grito el para fóra? 327 00:15:15,585 --> 00:15:16,710 Audiencia: A un despois. 328 00:15:16,710 --> 00:15:17,460 HANNAH: Beautiful. 329 00:15:17,460 --> 00:15:26,430 OK, por iso queremos enumerar estar apuntando a todo o que o noso punteiro próximo nodo é. 330 00:15:26,430 --> 00:15:29,040 Bo. 331 00:15:29,040 --> 00:15:30,810 E só para a integralidade da sake, fariamos 332 00:15:30,810 --> 00:15:35,590 querer comprobar que, mentres a nosa lista non é nulo, sempre que a nosa lista non é 333 00:15:35,590 --> 00:15:42,730 baleiro, entón nós queremos establecer nosa anterior igual a null. 334 00:15:42,730 --> 00:15:46,960 335 00:15:46,960 --> 00:15:50,230 Pregunta ata agora? 336 00:15:50,230 --> 00:15:53,205 A un paso de--? 337 00:15:53,205 --> 00:15:55,530 >> Audiencia: sería se lista non é igual a nulo? 338 00:15:55,530 --> 00:15:56,950 >> HANNAH: Si, está totalmente seguro. 339 00:15:56,950 --> 00:15:58,130 Eu sinto moito. 340 00:15:58,130 --> 00:16:00,040 É lista non é igual a cero. 341 00:16:00,040 --> 00:16:01,915 Impresionante. 342 00:16:01,915 --> 00:16:04,245 Tentando traer todo isto na pantalla. 343 00:16:04,245 --> 00:16:06,870 É unha especie de caer. 344 00:16:06,870 --> 00:16:07,730 Sentímolo, persoal. 345 00:16:07,730 --> 00:16:11,874 E por último pero non menos importante, todo que temos que facer é retorno. 346 00:16:11,874 --> 00:16:12,840 Aceptar. 347 00:16:12,840 --> 00:16:15,400 Iso era moi abarrotado en moi rapidamente. 348 00:16:15,400 --> 00:16:16,800 Tomé un segundo ollar sobre iso. 349 00:16:16,800 --> 00:16:18,216 Dime se ten algunha preguntas. 350 00:16:18,216 --> 00:16:20,232 351 00:16:20,232 --> 00:16:20,732 Si? 352 00:16:20,732 --> 00:16:26,940 >> Audiencia: Se a lista está no cabeza, entăo-- esperar, deixa para alí. 353 00:16:26,940 --> 00:16:27,700 >> HANNAH: OK, bo. 354 00:16:27,700 --> 00:16:30,987 Entón, iso é a lista está na cabeza, nós eliminar-lo para o que quere que nós inserida. 355 00:16:30,987 --> 00:16:31,486 Si? 356 00:16:31,486 --> 00:16:33,777 >> Audiencia: Pode explicar a primeira declaración novamente? 357 00:16:33,777 --> 00:16:36,149 Se o punteiro de n é igual a n? 358 00:16:36,149 --> 00:16:36,690 HANNAH: Claro. 359 00:16:36,690 --> 00:16:42,780 Así, o noso obxectivo desa función toda é para eliminar o nodo que ten valor n. 360 00:16:42,780 --> 00:16:47,460 Entón, se nós atopamos, como estamos iteración a través da nosa lista, 361 00:16:47,460 --> 00:16:51,770 o no con valor n, que é aquel que desexe eliminar. 362 00:16:51,770 --> 00:16:57,286 Entón, todo o apagamento acontece dentro dese gran se comunicado. 363 00:16:57,286 --> 00:16:58,593 Será que isto ten sentido? 364 00:16:58,593 --> 00:16:59,480 Con estilo. 365 00:16:59,480 --> 00:16:59,990 Si? 366 00:16:59,990 --> 00:17:02,864 >> Audiencia: Quizais só non pode ver Lo, pero tamén non precisa dunha liña 367 00:17:02,864 --> 00:17:06,024 para percorrer a lista? 368 00:17:06,024 --> 00:17:06,690 HANNAH: Awesome. 369 00:17:06,690 --> 00:17:10,896 Imos traer isto un pouco, e imos xogar este dereito na parte inferior. 370 00:17:10,896 --> 00:17:13,282 371 00:17:13,282 --> 00:17:15,490 Quizais o consello tería foi unha idea un pouco mellor. 372 00:17:15,490 --> 00:17:17,829 Entón, como é que eu ía mover punteiro á fronte? 373 00:17:17,829 --> 00:17:20,184 >> Audiencia: Pointer é igual a un punteiro. 374 00:17:20,184 --> 00:17:21,599 >> HANNAH: Beautiful. 375 00:17:21,599 --> 00:17:25,050 Así que nos permite seguir iteración través. 376 00:17:25,050 --> 00:17:26,251 Aceptar. 377 00:17:26,251 --> 00:17:27,750 Audiencia: Non habería unha persoa? 378 00:17:27,750 --> 00:17:29,028 HANNAH: unha vez máis? 379 00:17:29,028 --> 00:17:32,444 Audiencia: Non habería outra persoa trala grande e vello se 380 00:17:32,444 --> 00:17:35,519 declaración [inaudível]? 381 00:17:35,519 --> 00:17:36,310 HANNAH: Cal parte? 382 00:17:36,310 --> 00:17:38,350 Sinto moito. 383 00:17:38,350 --> 00:17:41,800 >> Audiencia: A travesía, non debe haber unha persoa? 384 00:17:41,800 --> 00:17:43,550 HANNAH: Vostede absolutamente podería ter outro lugar. 385 00:17:43,550 --> 00:17:46,930 Porque eu teño o dereito de retorno alí, non precisa de outra persoa. 386 00:17:46,930 --> 00:17:48,760 Mais si, boa pregunta. 387 00:17:48,760 --> 00:17:50,170 OK, non é? 388 00:17:50,170 --> 00:17:52,878 Audiencia: Podemos pensar punteiro que se está movendo a través da lista 389 00:17:52,878 --> 00:17:56,610 como tomar sobre o valor de cada nó na lista? 390 00:17:56,610 --> 00:18:00,650 Ou debemos pensar nel como tipo de externo á lista? 391 00:18:00,650 --> 00:18:02,350 >> HANNAH: Calquera dos dous é bo, eu creo. 392 00:18:02,350 --> 00:18:05,880 A forma como eu imaxino que é Digo: OK, estou punteiro. 393 00:18:05,880 --> 00:18:06,520 E iso é comigo. 394 00:18:06,520 --> 00:18:07,150 Esta é a miña man. 395 00:18:07,150 --> 00:18:09,960 Eu estou indo a apuntar para o diferente cousas que quero para percorrer. 396 00:18:09,960 --> 00:18:12,270 En primeiro lugar, eu vou apuntar á cabeza da lista. 397 00:18:12,270 --> 00:18:14,144 E iso me di que eu son indo apuntar catro. 398 00:18:14,144 --> 00:18:18,060 E así me, sendo externo á lista, Eu pode apuntar para cada un deses elementos. 399 00:18:18,060 --> 00:18:19,520 Entón, eu penso en min como punteiro. 400 00:18:19,520 --> 00:18:21,645 Audiencia: Entón, cando eliminar un deses elementos, 401 00:18:21,645 --> 00:18:23,404 eliminar-se, por así dicir. 402 00:18:23,404 --> 00:18:24,070 HANNAH: Exactamente. 403 00:18:24,070 --> 00:18:25,920 Entón eliminar a cousa está apuntando. 404 00:18:25,920 --> 00:18:28,340 Así, no exemplo que vimos onde estamos 405 00:18:28,340 --> 00:18:31,670 tentando eliminar cinco, cando estou apuntando para cinco, 406 00:18:31,670 --> 00:18:34,200 Quero eliminar o cousa que eu estou apuntando. 407 00:18:34,200 --> 00:18:35,870 Exactamente. 408 00:18:35,870 --> 00:18:36,577 Si? 409 00:18:36,577 --> 00:18:39,410 Audiencia: tomamos coidado do caso en que n non está na lista? 410 00:18:39,410 --> 00:18:40,460 HANNAH: Se n non está na lista? 411 00:18:40,460 --> 00:18:43,501 Todo o que vai ocorrer é que está indo para percorrer e iterate 412 00:18:43,501 --> 00:18:47,616 a través de e, a continuación, vai para chegar ao punteiro sendo nula, 413 00:18:47,616 --> 00:18:48,990 e, a continuación, vai ser feito. 414 00:18:48,990 --> 00:18:50,812 >> Audiencia: Entón temos para volver algo? 415 00:18:50,812 --> 00:18:51,520 HANNAH: podiamos. 416 00:18:51,520 --> 00:18:54,500 O xeito que se definiu este función, eu só dicir que el retorna 417 00:18:54,500 --> 00:18:55,770 invalidar independentemente. 418 00:18:55,770 --> 00:18:58,360 Pero podería ter algo como volver a un número enteiro, 419 00:18:58,360 --> 00:19:00,920 e telo volver 1 negativo se falla. 420 00:19:00,920 --> 00:19:03,070 Algo así. 421 00:19:03,070 --> 00:19:04,494 Preguntas com-- si? 422 00:19:04,494 --> 00:19:05,410 Audiencia: [inaudível]? 423 00:19:05,410 --> 00:19:05,993 HANNAH: Sentímolo? 424 00:19:05,993 --> 00:19:07,419 Audiencia: [inaudível]? 425 00:19:07,419 --> 00:19:07,960 HANNAH: Claro. 426 00:19:07,960 --> 00:19:11,730 Entón esta é a actual-- Así que temos feito todo este traballo de mover 427 00:19:11,730 --> 00:19:16,530 todas estas frechas arredor, todo o noso obxectivo era librar-se do nodo 428 00:19:16,530 --> 00:19:18,230 que estamos a buscar. 429 00:19:18,230 --> 00:19:21,610 Polo tanto, neste caso, liberando punteiro, se eu estou apuntando para cinco, 430 00:19:21,610 --> 00:19:24,670 é como borrar ese nó medio. 431 00:19:24,670 --> 00:19:27,250 Esta é a parte punteiro libre. 432 00:19:27,250 --> 00:19:29,090 Isto ten sentido? 433 00:19:29,090 --> 00:19:31,390 >> Audiencia: Entón mesmo pensamento fixeches non [inaudível]? 434 00:19:31,390 --> 00:19:36,060 >> HANNAH: Entón nós asumido no inicio tivemos algunha lista que foi já-- 435 00:19:36,060 --> 00:19:37,220 eles tiñan poñer isto xunto. 436 00:19:37,220 --> 00:19:39,761 Polo tanto, a fin de construír esta lista, eles deben ter [inaudível]. 437 00:19:39,761 --> 00:19:42,190 438 00:19:42,190 --> 00:19:42,750 Con estilo. 439 00:19:42,750 --> 00:19:44,490 Algo con iso? 440 00:19:44,490 --> 00:19:46,386 Si? 441 00:19:46,386 --> 00:19:49,204 >> Audiencia: E se a lista non é igual a liña null? 442 00:19:49,204 --> 00:19:49,704 [Inaudível]? 443 00:19:49,704 --> 00:19:52,289 444 00:19:52,289 --> 00:19:53,080 HANNAH: Ben aquí? 445 00:19:53,080 --> 00:19:53,840 Audiencia: Yeah. 446 00:19:53,840 --> 00:19:57,370 HANNAH: OK, todo o que eu estou facendo é que eu estou só asegurarse de 447 00:19:57,370 --> 00:20:03,250 que antes de intentar lista desreferenciava, antes de tentar acceder ao anterior, 448 00:20:03,250 --> 00:20:07,210 Quero estar seguro de que non é nula, entón eu non recibir un fallo seg. 449 00:20:07,210 --> 00:20:08,400 Con estilo. 450 00:20:08,400 --> 00:20:10,820 >> OK, sei que isto foi moi moito para pasar. 451 00:20:10,820 --> 00:20:14,950 Entón este slide será facilitado para ti. 452 00:20:14,950 --> 00:20:17,341 Así, pode pasar por iso con máis detalle. 453 00:20:17,341 --> 00:20:17,841 Si? 454 00:20:17,841 --> 00:20:19,749 >> Audiencia: Por que a lista [inaudível]? 455 00:20:19,749 --> 00:20:24,129 456 00:20:24,129 --> 00:20:24,670 HANNAH: Claro. 457 00:20:24,670 --> 00:20:27,390 Entón lista realmente apunta este elemento aquí, 458 00:20:27,390 --> 00:20:29,200 o primeiro elemento da lista. 459 00:20:29,200 --> 00:20:30,748 Polo tanto, non pode ter un anterior. 460 00:20:30,748 --> 00:20:31,736 Si? 461 00:20:31,736 --> 00:20:35,194 >> Audiencia: Será que o punto de punteiro para o mesmo enderezo na memoria? 462 00:20:35,194 --> 00:20:38,404 Será que apuntan ao mesmo enderezo na memoria como o nó 463 00:20:38,404 --> 00:20:40,640 que está a apuntar cara? 464 00:20:40,640 --> 00:20:43,865 >> HANNAH: Si, el apunta a este nodo na memoria. 465 00:20:43,865 --> 00:20:47,190 >> Audiencia: Correcto, entón cando [inaudível]? 466 00:20:47,190 --> 00:20:50,580 >> HANNAH: En certo sentido, si. 467 00:20:50,580 --> 00:20:51,280 Aceptar. 468 00:20:51,280 --> 00:20:52,997 Todo ben, imos pasar xunto con este. 469 00:20:52,997 --> 00:20:55,330 E se ten máis dúbidas, ir por aquí ao final, 470 00:20:55,330 --> 00:20:57,130 e podemos pasar por iso de novo. 471 00:20:57,130 --> 00:20:58,120 OK, legal. 472 00:20:58,120 --> 00:21:00,490 Agora, debemos seguir adiante hash táboas, intentos, 473 00:21:00,490 --> 00:21:04,940 e árbores, o que ten super- familiarizados con in-p definir cinco, Speller. 474 00:21:04,940 --> 00:21:11,020 >> Entón táboa hash é só un matriz con listas individualmente conectados 475 00:21:11,020 --> 00:21:14,050 ou dobremente ligada listas que saen dela. 476 00:21:14,050 --> 00:21:16,380 Entón temos algún tipo de matriz asociativa. 477 00:21:16,380 --> 00:21:21,280 E como sabemos cal delas matrices baldes para entrar, 478 00:21:21,280 --> 00:21:24,137 usan unha función hash. 479 00:21:24,137 --> 00:21:26,470 Polo tanto, neste caso, alguén pode adiviñar o que a función hash 480 00:21:26,470 --> 00:21:28,636 serían só en base a algúns de entrada e de saída? 481 00:21:28,636 --> 00:21:31,392 482 00:21:31,392 --> 00:21:33,194 >> Audiencia: número letra do alfabeto. 483 00:21:33,194 --> 00:21:33,860 HANNAH: Exactamente. 484 00:21:33,860 --> 00:21:36,160 El só pon-los en orde alfabética. 485 00:21:36,160 --> 00:21:39,280 Todo o que comeza cun Un colócase no primeiro recipiente. 486 00:21:39,280 --> 00:21:43,340 Todo cun B colócase no segundo balde, etc., e así por diante. 487 00:21:43,340 --> 00:21:45,620 Awesome, OK. 488 00:21:45,620 --> 00:21:48,980 E é unha función hash calquera función que leva nunha palabra 489 00:21:48,980 --> 00:21:51,910 e vai dicir o que caçamba pertence in. 490 00:21:51,910 --> 00:21:55,150 Así que a entrada na nosa matriz que pertence. 491 00:21:55,150 --> 00:21:58,080 >> Entón, cada vez que eu dou a miña hash de funcionar unha palabra, 492 00:21:58,080 --> 00:22:00,660 debe dicirme o mesmo poña a cada momento. 493 00:22:00,660 --> 00:22:03,270 Entón, se usamos a función hash a partir do slide anterior 494 00:22:03,270 --> 00:22:05,950 onde estamos a ordenación polo primeira letra do alfabeto, 495 00:22:05,950 --> 00:22:08,230 cada vez que eu dou a miña función hash "mazá" 496 00:22:08,230 --> 00:22:10,180 debe sempre darme de volta 0. 497 00:22:10,180 --> 00:22:12,890 Entón, se eu teño unha mazá para poñer no meu táboa hash, 498 00:22:12,890 --> 00:22:17,700 se eu der "mazá" na miña función hash, debe dicir, vai colocar-lo no balde 0. 499 00:22:17,700 --> 00:22:19,980 Se eu estou buscando unha mazá na miña táboa hash 500 00:22:19,980 --> 00:22:24,340 e digo, onde forzas de mazá en directo, lle pregunta a función hash. 501 00:22:24,340 --> 00:22:26,900 E di, vaia para o balde 0. 502 00:22:26,900 --> 00:22:29,150 Todo certo? 503 00:22:29,150 --> 00:22:32,660 Preguntas con funcións hash? 504 00:22:32,660 --> 00:22:34,570 Impresionante. 505 00:22:34,570 --> 00:22:37,320 >> Aquí é un pouco máis explicación detallada 506 00:22:37,320 --> 00:22:39,570 que unha función hash pode parecer. 507 00:22:39,570 --> 00:22:42,230 508 00:22:42,230 --> 00:22:42,960 Todo certo. 509 00:22:42,960 --> 00:22:45,960 Agora, o problema con haxix funcións é nun mundo ideal, 510 00:22:45,960 --> 00:22:48,870 só teriamos un cousa en cada balde. 511 00:22:48,870 --> 00:22:50,900 Pero en realidade, non hai non só unha palabra 512 00:22:50,900 --> 00:22:54,280 que comeza con A. Non hai só unha palabra que comeza con B. Entón, 513 00:22:54,280 --> 00:22:56,960 neste caso, se de súpeto ve "Berry", 514 00:22:56,960 --> 00:22:58,710 e queremos poñelo na nosa táboa hash, 515 00:22:58,710 --> 00:23:03,640 e vemos, oh, non, banana xa está aí, o que imos facer? 516 00:23:03,640 --> 00:23:05,900 >> Ben, temos dúas opcións. 517 00:23:05,900 --> 00:23:07,990 A primeira opción é lineal de sondaxe, que 518 00:23:07,990 --> 00:23:11,100 significa só que atoparán o recipiente baleiro seguinte. 519 00:23:11,100 --> 00:23:14,100 Vaia atopar a seguinte entrada matriz baleira. 520 00:23:14,100 --> 00:23:15,750 E só poñer "Berry" alí. 521 00:23:15,750 --> 00:23:18,880 Entón eu sei que suporía ir con bananas no balde un. 522 00:23:18,880 --> 00:23:22,155 Pero basta poñelas no balde tres, porque tres balde está baleiro. 523 00:23:22,155 --> 00:23:24,806 524 00:23:24,806 --> 00:23:26,680 Outra opción é probablemente o que aplicar 525 00:23:26,680 --> 00:23:29,220 na súa p-set, onde tivo encadeamento separado. 526 00:23:29,220 --> 00:23:33,990 Así, cada un dos seus baldes, cada un dos seus elementos da matriz, 527 00:23:33,990 --> 00:23:38,410 non só mantén unha palabras, pero, en realidade, contén un punteiro para unha lista de palabras. 528 00:23:38,410 --> 00:23:41,880 Así que se tivese bananas no seu táboa hash 529 00:23:41,880 --> 00:23:44,740 e de súpeto quería engadir Berry, non hai problema. 530 00:23:44,740 --> 00:23:51,110 Tan só engadir Berry ata o final, ou para o principio, da súa lista encadeada. 531 00:23:51,110 --> 00:23:54,040 OK, impresionante. 532 00:23:54,040 --> 00:23:58,490 Preguntas con haxix táboas antes de ir adiante? 533 00:23:58,490 --> 00:23:59,850 >> Todo certo. 534 00:23:59,850 --> 00:24:01,070 As árbores e os intentos. 535 00:24:01,070 --> 00:24:07,980 OK, entón iso foi outra opción para a implantación de dicionario. 536 00:24:07,980 --> 00:24:09,100 Vostede podería facer un intento. 537 00:24:09,100 --> 00:24:13,420 Polo tanto, é un tipo especial de árbore que compórtase como unha táboa hash multi-nivel. 538 00:24:13,420 --> 00:24:16,862 Entón, vai ver a foto onde ten unha matriz que 539 00:24:16,862 --> 00:24:19,320 apunta a un grupo de matrices que apuntan a un grupo de matrices 540 00:24:19,320 --> 00:24:20,390 que apuntan a un grupo de arrays. 541 00:24:20,390 --> 00:24:23,140 E imos ver exactamente o que quedaría nun futuro foto. 542 00:24:23,140 --> 00:24:26,070 E de xeito máis xeral, unha árbore é calquera estrutura de datos 543 00:24:26,070 --> 00:24:29,710 no cal os datos organizadas nalgúns xerarquía. 544 00:24:29,710 --> 00:24:32,610 Entón, onde vimos que temos algún tipo de entendemento 545 00:24:32,610 --> 00:24:36,130 dun nivel superior, un nivel próximo, un seguinte nivel, un nivel seguinte. 546 00:24:36,130 --> 00:24:39,690 Polo tanto, este é probablemente o máis claro con algúns exemplos concretos. 547 00:24:39,690 --> 00:24:40,880 Entón aquí está a nosa árbore. 548 00:24:40,880 --> 00:24:42,970 Podes ver que ten determinados niveis 549 00:24:42,970 --> 00:24:45,480 que comezamos con este nodo raíz, un. 550 00:24:45,480 --> 00:24:47,640 E podemos ir para abaixo, a nosa árbore. 551 00:24:47,640 --> 00:24:50,730 552 00:24:50,730 --> 00:24:53,910 >> Unha árbore binaria é un determinado tipo de árbore. 553 00:24:53,910 --> 00:24:56,770 E a única especificación para unha árbore binaria 554 00:24:56,770 --> 00:25:01,130 é que cada nodo posúe como máximo dúas follas. 555 00:25:01,130 --> 00:25:03,960 Entón non vai ver ningunha destes nós ten tres ou catro 556 00:25:03,960 --> 00:25:06,880 ou algún outro número de follas. 557 00:25:06,880 --> 00:25:11,310 E, a continuación, aínda máis específico é unha árbore de busca binária 558 00:25:11,310 --> 00:25:18,010 onde cada nodo á esquerda do nó terá un valor menor. 559 00:25:18,010 --> 00:25:21,180 E cada valor para a dereito será maior. 560 00:25:21,180 --> 00:25:26,900 Entón, se ves 44 é a nosa raíz, á esquerda, 11, 22, e 33 561 00:25:26,900 --> 00:25:28,940 son todo menos que a nosa raíz. 562 00:25:28,940 --> 00:25:33,890 E á dereita son todos bigger-- números 66, 55 e 77. 563 00:25:33,890 --> 00:25:37,380 E esta propiedade é válido en todos os niveis da árbore. 564 00:25:37,380 --> 00:25:42,690 >> Por iso, cando descendemos a 22, 11 e 33, aínda 11 565 00:25:42,690 --> 00:25:46,950 é menor que 22 e 33 é maior que 22. 566 00:25:46,950 --> 00:25:50,160 E iso fai que sexa máis fácil a procura porque se nós estamos mirando para un número, 567 00:25:50,160 --> 00:25:53,877 sabemos exactamente o que ramo de seguir para abaixo. 568 00:25:53,877 --> 00:25:56,210 Polo tanto, este debe lembra-lo dun pouco de busca binaria. 569 00:25:56,210 --> 00:25:56,967 Si? 570 00:25:56,967 --> 00:25:58,835 >> Audiencia: Entón, cando está describindo binario, 571 00:25:58,835 --> 00:26:00,587 dixo que ten como máximo dúas follas? 572 00:26:00,587 --> 00:26:01,170 HANNAH: Hum-hum. 573 00:26:01,170 --> 00:26:02,580 Audiencia: Podería ter menos? 574 00:26:02,580 --> 00:26:03,121 HANNAH: Yeah. 575 00:26:03,121 --> 00:26:06,720 Entón, imos dicir, por exemplo, vostede non teñen un número par de cousas 576 00:26:06,720 --> 00:26:11,791 e non podería encher todo o seu follas, é bo cando se ten un. 577 00:26:11,791 --> 00:26:12,290 OK? 578 00:26:12,290 --> 00:26:12,789 Impresionante. 579 00:26:12,789 --> 00:26:15,930 Calquera outras preguntas sobre as árbores? 580 00:26:15,930 --> 00:26:16,670 Aceptar. 581 00:26:16,670 --> 00:26:20,110 >> Voltar nosas tentativas como eu estaba falando preto de un pouco máis cedo, 582 00:26:20,110 --> 00:26:23,900 como temos esas matrices multi-nivel. 583 00:26:23,900 --> 00:26:26,280 Polo tanto, neste caso, comezan na parte superior. 584 00:26:26,280 --> 00:26:29,030 E nós pode seguir calquera palabra abaixo. 585 00:26:29,030 --> 00:26:30,780 Entón, imos dicir que queriamos buscar Turing. 586 00:26:30,780 --> 00:26:34,380 Comezamos en T, siga-o para abaixo para unha matriz que contén U, 587 00:26:34,380 --> 00:26:37,350 e segui-lo para abaixo, ata que chegar a este pequeno delta que 588 00:26:37,350 --> 00:26:39,060 dinos, si, atopou unha palabra. 589 00:26:39,060 --> 00:26:43,200 590 00:26:43,200 --> 00:26:44,120 Limpar en intentos? 591 00:26:44,120 --> 00:26:48,138 Calquera cousa de ir ata alí? 592 00:26:48,138 --> 00:26:48,908 Si? 593 00:26:48,908 --> 00:26:51,866 Audiencia: Será que o símbolo do delta ten que ocupar o espazo dentro do try? 594 00:26:51,866 --> 00:26:54,532 HANNAH: Si, por iso non fai necesariamente ten nin ser un delta. 595 00:26:54,532 --> 00:26:57,760 Pero precisamos de algunha maneira para dicir o noso Computador-- sorry, 596 00:26:57,760 --> 00:27:01,130 para que poidamos saber que TUR non é unha palabra. 597 00:27:01,130 --> 00:27:04,180 Porque imos dicir que non ten este concepto dun delta, este concepto 598 00:27:04,180 --> 00:27:09,850 de parabéns, atopou unha palabra, ía pasar e interactuar T-Ou-R, 599 00:27:09,850 --> 00:27:11,300 e, a continuación, dicir, impresionante, eu penso! 600 00:27:11,300 --> 00:27:12,670 Debe ser unha palabra. 601 00:27:12,670 --> 00:27:13,720 Pero en realidade non é. 602 00:27:13,720 --> 00:27:15,310 Queremos todo Turing ser unha palabra. 603 00:27:15,310 --> 00:27:17,760 Polo tanto, debemos ter algo no final que di, parabéns, 604 00:27:17,760 --> 00:27:19,051 atopou unha palabra lexítima. 605 00:27:19,051 --> 00:27:21,680 Audiencia: Entón se tivese como 26 letras no alfabeto, 606 00:27:21,680 --> 00:27:24,560 se realmente ten 27 claves no seu intento? 607 00:27:24,560 --> 00:27:26,010 >> HANNAH: Awesome, si. 608 00:27:26,010 --> 00:27:28,210 Entón, en realidade, eu creo que será o próximo foto. 609 00:27:28,210 --> 00:27:29,440 Ta-da! 610 00:27:29,440 --> 00:27:32,880 Sempre que se ten un nó no seu intento, es 611 00:27:32,880 --> 00:27:35,800 terá 27 nenos, no canto de 26. 612 00:27:35,800 --> 00:27:39,010 613 00:27:39,010 --> 00:27:40,050 Calquera dúbida con isto? 614 00:27:40,050 --> 00:27:40,550 Si? 615 00:27:40,550 --> 00:27:44,569 Audiencia: Por que intenta incorporarse tan moito espazo [inaudível] como vai? 616 00:27:44,569 --> 00:27:47,629 Por que se considera [inaudível]? 617 00:27:47,629 --> 00:27:48,170 HANNAH: Claro. 618 00:27:48,170 --> 00:27:48,790 Imos volver. 619 00:27:48,790 --> 00:27:52,350 A cuestión é, por que son intentos moito maior 620 00:27:52,350 --> 00:27:54,620 que algo así como unha táboa hash. 621 00:27:54,620 --> 00:27:57,790 Así, para cada un destes niveis, aínda que eles non son atraídos aquí, 622 00:27:57,790 --> 00:28:01,250 ten que ter todos os 26 caracteres. 623 00:28:01,250 --> 00:28:04,420 E a razón que non pode digo, oh, pero como para Turing, I 624 00:28:04,420 --> 00:28:07,570 Non é preciso ter ningún daqueles mesmas cousas sobre o nivel de U. Ben, 625 00:28:07,570 --> 00:28:11,390 Se de súpeto queres engadir algo que era como T-H, 626 00:28:11,390 --> 00:28:14,800 ten que ter a capacidade de engadir esta palabra. 627 00:28:14,800 --> 00:28:17,330 Así, para cada única letra, vai ter 628 00:28:17,330 --> 00:28:19,730 para ter unha morea de matrices que saen dela. 629 00:28:19,730 --> 00:28:24,060 Así, pode ver como ía estar realmente grande, moi rápido. 630 00:28:24,060 --> 00:28:26,560 Algunha pregunta? 631 00:28:26,560 --> 00:28:28,980 Todo certo. 632 00:28:28,980 --> 00:28:29,832 Si? 633 00:28:29,832 --> 00:28:33,210 >> Audiencia: Cando son intentos máis rápido que táboas de hash? 634 00:28:33,210 --> 00:28:36,280 >> HANNAH: Cando son intentos máis rápido que táboas de hash? 635 00:28:36,280 --> 00:28:39,120 Entón, se tivo realmente un función hash malo. 636 00:28:39,120 --> 00:28:41,840 Entón, digamos que eu era como, aquí está a súa función hash. 637 00:28:41,840 --> 00:28:43,660 Non importa o que a palabra vostede me dá, eu estou sempre 638 00:28:43,660 --> 00:28:47,740 vai poñelas en orde de entrada 0. 639 00:28:47,740 --> 00:28:52,000 E así imos acabar con só poñendo todo nunha longa lista ligada grande. 640 00:28:52,000 --> 00:28:58,740 E así un tempo de investigación levaría polo peor n se é ao final da nosa lista. 641 00:28:58,740 --> 00:29:03,150 Coa tentativa, só temos que facer unha iteración a través das letras da palabra. 642 00:29:03,150 --> 00:29:07,080 Así, aínda que nós engadimos unha morea Máis palabras para nosa intento, 643 00:29:07,080 --> 00:29:09,620 non nos levaría máis tempo para atopar unha determinada palabra. 644 00:29:09,620 --> 00:29:11,750 >> Todo o que temos que facer é, por exemplo, neste caso, 645 00:29:11,750 --> 00:29:17,170 imos dicir que estamos á procura de zoom, nós só temos que interactuar sobre 646 00:29:17,170 --> 00:29:19,840 Z-O-O-H, catro cartas. 647 00:29:19,840 --> 00:29:22,250 Entón, iso é só o lonxitude da palabra de zoom. 648 00:29:22,250 --> 00:29:25,400 Non importa cantas máis palabras que poñemos neste intento. 649 00:29:25,400 --> 00:29:30,225 Sempre pode obterse neses catro pasos. 650 00:29:30,225 --> 00:29:31,215 Impresionante. 651 00:29:31,215 --> 00:29:32,205 Si? 652 00:29:32,205 --> 00:29:34,185 >> Audiencia: Entón [inaudível] é unha matriz, non? 653 00:29:34,185 --> 00:29:35,322 >> HANNAH: Hum-hum. 654 00:29:35,322 --> 00:29:37,155 Audiencia: Se é buscar [inaudível], 655 00:29:37,155 --> 00:29:40,929 que tería que pasar por súa matriz para atopar [inaudível]? 656 00:29:40,929 --> 00:29:41,470 HANNAH: Claro. 657 00:29:41,470 --> 00:29:44,000 Audiencia: Non que levan máis tempo? 658 00:29:44,000 --> 00:29:46,370 HANNAH: Se eu vou dicir que a miña matriz é sempre 659 00:29:46,370 --> 00:29:49,250 será A, B, C, D, E, F, G, bla, bla, bla, 660 00:29:49,250 --> 00:29:51,630 por iso, se eu sempre sei que é na mesma orde, 661 00:29:51,630 --> 00:29:53,880 se eu sempre sei que é en orde alfabética, 662 00:29:53,880 --> 00:29:57,860 Podo só dicir que é O número así e así no alfabeto. 663 00:29:57,860 --> 00:29:59,620 Basta ir para aquel lugar. 664 00:29:59,620 --> 00:30:01,860 Porque lembre, con matrices, podemos acceder 665 00:30:01,860 --> 00:30:06,590 calquera elemento desa matriz en constante tempo, se sabemos a onde estamos mirando. 666 00:30:06,590 --> 00:30:09,080 667 00:30:09,080 --> 00:30:09,580 Si? 668 00:30:09,580 --> 00:30:12,005 >> Audiencia: No anterior deslice [inaudível] 27, 669 00:30:12,005 --> 00:30:14,430 26, pero para o primeiro. 670 00:30:14,430 --> 00:30:15,400 >> HANNAH: Sentímolo? 671 00:30:15,400 --> 00:30:18,800 >> Audiencia: Non é a primeira un 0, polo tanto, non sería 26? 672 00:30:18,800 --> 00:30:24,900 >> HANNAH: Claro, por iso, cando dicimos 27, iso é vai dar-nos índices de 0 a 26. 673 00:30:24,900 --> 00:30:28,220 Pero se o contar os para fóra, que vai ser 27. 674 00:30:28,220 --> 00:30:30,007 Boa pregunta. 675 00:30:30,007 --> 00:30:30,590 Algo máis? 676 00:30:30,590 --> 00:30:31,200 Si? 677 00:30:31,200 --> 00:30:34,420 >> Audiencia: Entón son intentos máis lento que táboas de hash? 678 00:30:34,420 --> 00:30:37,920 >> HANNAH: Tries van ser, en teoría, máis rápido que táboas de hash 679 00:30:37,920 --> 00:30:39,760 pero ocupan máis memoria. 680 00:30:39,760 --> 00:30:40,534 Si? 681 00:30:40,534 --> 00:30:41,450 Audiencia: [inaudível]? 682 00:30:41,450 --> 00:30:45,770 683 00:30:45,770 --> 00:30:47,484 >> HANNAH: Me desculpe, eu non oín-lo. 684 00:30:47,484 --> 00:30:48,400 Audiencia: [inaudível]. 685 00:30:48,400 --> 00:30:51,250 686 00:30:51,250 --> 00:30:54,100 0-25 dálle 26. 687 00:30:54,100 --> 00:30:56,958 >> HANNAH: 0-25 faría darlle 26, á dereita. 688 00:30:56,958 --> 00:30:58,457 >> Audiencia: E entón [inaudível]. 689 00:30:58,457 --> 00:30:59,040 HANNAH: Correcto. 690 00:30:59,040 --> 00:31:04,760 Polo tanto, o número estamos especificando é o número de cousas na nosa matriz. 691 00:31:04,760 --> 00:31:07,260 Entón, se temos 27, é vai dar 0 692 00:31:07,260 --> 00:31:10,620 a 26, o que dará cuarto-nos para, neste caso, 693 00:31:10,620 --> 00:31:12,770 Eu non estou incluíndo un apóstrofo. 694 00:31:12,770 --> 00:31:17,040 Entón, nós estamos a recibir de 0 a 25 anos son as primeiras 26 letras do alfabeto, 695 00:31:17,040 --> 00:31:18,990 ou todas as 26 letras do alfabeto. 696 00:31:18,990 --> 00:31:21,190 E, a continuación, que a última cousa, no inicio do 26, é 697 00:31:21,190 --> 00:31:24,598 será o cheque sinal, ou o delta. 698 00:31:24,598 --> 00:31:26,960 Algo máis? 699 00:31:26,960 --> 00:31:29,130 Impresionante. 700 00:31:29,130 --> 00:31:30,020 Perdín o meu espazo. 701 00:31:30,020 --> 00:31:31,020 OK, legal. 702 00:31:31,020 --> 00:31:33,240 >> Entón, nós xa tocou enriba deste. 703 00:31:33,240 --> 00:31:37,430 Pero a gran trade off entre intentos e táboas de hash 704 00:31:37,430 --> 00:31:39,720 é que intenta prever, en teoría, constante mirar para arriba 705 00:31:39,720 --> 00:31:42,890 veces, pero usar unha morea de memoria. 706 00:31:42,890 --> 00:31:46,495 Todo ben, agora temos un pouco estruturas menos complicados, 707 00:31:46,495 --> 00:31:49,640 e imos ser feito con C, e imos pasar o tempo. 708 00:31:49,640 --> 00:31:51,930 >> Entón, pilas, vimos este en charla onde 709 00:31:51,930 --> 00:31:55,020 ter algo así como un pila de bandexas onde 710 00:31:55,020 --> 00:31:57,330 a última cousa que poñer na pila vai 711 00:31:57,330 --> 00:31:59,500 de ser a primeira cousa que despegar. 712 00:31:59,500 --> 00:32:02,880 Entón, iso é o que realmente define unha pila é que a última cousa que poñer na 713 00:32:02,880 --> 00:32:06,080 vai ser o primeiro cousa que despegar. 714 00:32:06,080 --> 00:32:09,279 E a terminoloxía que usan se nós imos poñer algo, 715 00:32:09,279 --> 00:32:12,070 se nós estamos indo para engadir algo a nosa stack, chamamos iso de empurrar. 716 00:32:12,070 --> 00:32:14,970 E se tomamos algo off, chamamos iso de popping. 717 00:32:14,970 --> 00:32:17,080 E, se nós estamos indo a aplica un stack, nós 718 00:32:17,080 --> 00:32:20,660 Debe estar seguro de manter o control de tanto o tamaño e capacidade. 719 00:32:20,660 --> 00:32:24,940 Así, o número total de elementos que pudermos soster e o número actual de elementos 720 00:32:24,940 --> 00:32:27,880 que estamos a realizar. 721 00:32:27,880 --> 00:32:29,885 >> E de forma moi semellante, temos filas. 722 00:32:29,885 --> 00:32:34,510 E a única diferenza é, en vez de coas pilas, 723 00:32:34,510 --> 00:32:37,630 que dixo que a última cousa que poñer en é o primeiro que sacar. 724 00:32:37,630 --> 00:32:40,940 Así, coas colas, o primeiro que poñemos en 725 00:32:40,940 --> 00:32:43,129 será o primeiro que sacar. 726 00:32:43,129 --> 00:32:45,420 Entón, iso é como se é realmente facendo cola nunha tenda 727 00:32:45,420 --> 00:32:48,140 e está a ser axudado, a continuación, a primeira persoa na liña 728 00:32:48,140 --> 00:32:50,880 debe ser a primeira persoa a ser axudado. 729 00:32:50,880 --> 00:32:52,220 Entón, iso sería unha cola. 730 00:32:52,220 --> 00:32:55,880 >> Entón, necesitamos manter o control da tamaño, capacidade e cabeza desde que somos 731 00:32:55,880 --> 00:33:01,130 vai levar todo o mundo fóra da parte dianteira da lista, no canto da parte de atrás. 732 00:33:01,130 --> 00:33:03,480 Preguntas sobre iso? 733 00:33:03,480 --> 00:33:06,330 Calquera dúbida C que están incomodando? 734 00:33:06,330 --> 00:33:09,590 As estruturas de datos, nada diso divertirse? 735 00:33:09,590 --> 00:33:10,530 Todo ben, legal. 736 00:33:10,530 --> 00:33:14,120 Entón, eu vou entrega-la a Alison para ir a máis algunha programación. 737 00:33:14,120 --> 00:33:15,965 >> Alison: Oh, veremos. 738 00:33:15,965 --> 00:33:17,370 Imos ver como ben fago aquí. 739 00:33:17,370 --> 00:33:21,410 OK, eu vou probar e voar a través deste material, persoal. 740 00:33:21,410 --> 00:33:24,540 Hannah correu moi en profundo sobre todas as súas cousas. 741 00:33:24,540 --> 00:33:26,900 Vou tentar dar -lle unha visión rápida explosión 742 00:33:26,900 --> 00:33:31,290 para que poidamos chegar a Davin con todo a diversión JavaScript e seguridade as cousas 743 00:33:31,290 --> 00:33:33,380 que quizais realmente quero escoitar máis sobre. 744 00:33:33,380 --> 00:33:36,600 >> OK, como dixo Hannah, se Tes dúbidas, 745 00:33:36,600 --> 00:33:39,170 Eu estou indo demasiado rápido, por favor, me aviso. 746 00:33:39,170 --> 00:33:42,114 Vou responder preguntas, se fose necesario. 747 00:33:42,114 --> 00:33:45,280 Entón, para comezar, imos comezar con probablemente unha das primeiras cousas 748 00:33:45,280 --> 00:33:48,730 aprendeu con web programación, permisos. 749 00:33:48,730 --> 00:33:52,720 Entón chmod, vostedes deberían ser mestres nisto con toda a web 750 00:33:52,720 --> 00:33:54,870 programación que ten feito ultimamente. 751 00:33:54,870 --> 00:33:57,320 É basicamente só un comando que modifica os permisos 752 00:33:57,320 --> 00:34:00,779 ou os permisos de acceso dos nosos obxectos do sistema de ficheiros. 753 00:34:00,779 --> 00:34:02,570 Claro que, para efectivamente ve iso, se está 754 00:34:02,570 --> 00:34:04,910 tendo algún problema con estes durante os seus conxuntos de problemas, 755 00:34:04,910 --> 00:34:11,460 pode usar ls -l, que é longa, para obter o tipo de vista como esta, 756 00:34:11,460 --> 00:34:14,209 onde realmente ver todo os permisos a un arquivo. 757 00:34:14,209 --> 00:34:16,850 758 00:34:16,850 --> 00:34:20,732 >> E realmente, nós só estamos indo a ir mediante moi rapidamente só fermosa 759 00:34:20,732 --> 00:34:21,940 moito o que cada un deles significa. 760 00:34:21,940 --> 00:34:24,481 Entón, temos que d aquí, que só significa o directorio. 761 00:34:24,481 --> 00:34:26,790 762 00:34:26,790 --> 00:34:31,739 Obviamente, aquí vemos rwx, que é lexible, gravable e executable. 763 00:34:31,739 --> 00:34:37,090 Estes poden ser representados como bits, que nós imos entrar na páxina seguinte. 764 00:34:37,090 --> 00:34:40,699 Así, cada tríade que vimos aquí, por iso é tres tríades. 765 00:34:40,699 --> 00:34:48,120 Temos rwx, r nada xe r nada x para este primeiro ficheiro. 766 00:34:48,120 --> 00:34:49,690 É esta estrutura xeral. 767 00:34:49,690 --> 00:34:50,940 >> Polo tanto, temos algún directorio. 768 00:34:50,940 --> 00:34:53,999 Temos algún grupo de usuarios con esas permisos. 769 00:34:53,999 --> 00:34:57,040 Algúns grupo que teña os permisos, e un mundo que ten un permiso. 770 00:34:57,040 --> 00:34:59,420 Podes pensar niso como unha tríade. 771 00:34:59,420 --> 00:35:01,130 Podes pensar niso como tres bits. 772 00:35:01,130 --> 00:35:04,060 Así, poden manter valores en calquera lugar a partir de 0 ata 773 00:35:04,060 --> 00:35:07,350 a 7, polo que, por veces, tivemos que facer chmod 774 00:35:07,350 --> 00:35:17,510 600 en vez de chmod rw o que quere. 775 00:35:17,510 --> 00:35:19,170 Nós imos entrar nun exemplo alí. 776 00:35:19,170 --> 00:35:24,260 Pero, basicamente, pode pensar destes como quere só rwx, 777 00:35:24,260 --> 00:35:28,520 ou pode pensar neles como algúns número onde este primeiro aquí 778 00:35:28,520 --> 00:35:31,480 representa un número entre 0 e 7, esta segunda 779 00:35:31,480 --> 00:35:33,970 representa un número entre 0 e 7, e o terceiro 780 00:35:33,970 --> 00:35:38,245 representa un número entre 0 e 7, OK? 781 00:35:38,245 --> 00:35:42,700 >> r ten un valor de 4 w ten un valor de 2, e x 782 00:35:42,700 --> 00:35:49,230 ten un valor de 1, o que é por iso que este permiso aquí sería chmod 700. 783 00:35:49,230 --> 00:35:53,520 Porque neste caso aquí, el di que ter o primeiro bit hai acendeu. 784 00:35:53,520 --> 00:35:55,380 Polo tanto, temos 4 para lectura. 785 00:35:55,380 --> 00:35:58,730 O segundo bit é cambiado por w, que é 2, entón agora temos 6. 786 00:35:58,730 --> 00:36:02,070 E o terceiro bit é cambiado en para x, que é 1, entón temos sete. 787 00:36:02,070 --> 00:36:04,820 E, por suposto, o noso grupo e noso mundo son cada 0. 788 00:36:04,820 --> 00:36:07,770 Polo tanto, este é tamén o equivalente de chmod 700. 789 00:36:07,770 --> 00:36:12,081 E eu con certeza quere probar entender o mapeamento entre aqueles. 790 00:36:12,081 --> 00:36:14,080 Eu non estou seguro se ten chegar a un cuestionario antes, 791 00:36:14,080 --> 00:36:18,590 pero sería un pregunta que eu podería pedir. 792 00:36:18,590 --> 00:36:22,110 >> Só un pouquiño vai mesmo aínda máis en chmod aquí, aquí 793 00:36:22,110 --> 00:36:27,730 é o moi xeral estrutura dunha chamada de chmod. 794 00:36:27,730 --> 00:36:29,500 Entón, por suposto, temos chmod aquí. 795 00:36:29,500 --> 00:36:34,410 Referencia o que esta se refire é quen estamos dando a estas permita 796 00:36:34,410 --> 00:36:36,570 ou quen estamos tendo estes permisos de distancia. 797 00:36:36,570 --> 00:36:44,330 Polo tanto, temos unha aquí nas permisos, como nós che dei chmod un plus x, 798 00:36:44,330 --> 00:36:45,440 como veremos en breve. 799 00:36:45,440 --> 00:36:48,460 un significa só dar a estes específico permisos para todos. 800 00:36:48,460 --> 00:36:49,600 Dálles a todos. 801 00:36:49,600 --> 00:36:55,370 Entón, vostede podería moi ben ter máis u x ou máis x g ou máis x o ou múltiple 802 00:36:55,370 --> 00:36:55,870 da mesma. 803 00:36:55,870 --> 00:36:59,280 Así que a primeira parte é sempre será referencias. 804 00:36:59,280 --> 00:37:03,220 Quen será que estamos dando os permisos para, ou quen estamos levando-os lonxe de? 805 00:37:03,220 --> 00:37:04,850 >> O segundo é o operador. 806 00:37:04,850 --> 00:37:07,350 Entón, vostedes teñen na súa maioría tratou plus. 807 00:37:07,350 --> 00:37:12,140 Isto dá permiso para quenquera que está dando-lles, 808 00:37:12,140 --> 00:37:14,840 Considerando menos, loxicamente, elimina-los. 809 00:37:14,840 --> 00:37:16,880 Entón, nada de moi terrible alí. 810 00:37:16,880 --> 00:37:23,060 E entón os modos é o que falamos con lectura, escritura, ou de execución. 811 00:37:23,060 --> 00:37:29,070 Entón, un plus x significa dar executable permisos para todos. 812 00:37:29,070 --> 00:37:33,430 E entón, por suposto, no cal ficheiro ou directorio específico. 813 00:37:33,430 --> 00:37:33,980 OK? 814 00:37:33,980 --> 00:37:36,010 Todo o mundo bo con chmod? 815 00:37:36,010 --> 00:37:37,850 Non é tan malo? 816 00:37:37,850 --> 00:37:42,417 >> OK, entón HTML, calquera de vostedes son idade suficiente a-- MySpace idade? 817 00:37:42,417 --> 00:37:44,750 Enviei esta a miña sección, e, literalmente, a metade das persoas 818 00:37:44,750 --> 00:37:45,790 mirou para min como se eu fose tolo. 819 00:37:45,790 --> 00:37:47,498 E eu estaba tipo, xente, non somos tan vello. 820 00:37:47,498 --> 00:37:48,910 Veña. 821 00:37:48,910 --> 00:37:53,360 Entón hipertexto Markup Language, é honesta só un camiño para ti 822 00:37:53,360 --> 00:37:57,990 para amosar certas cousas na web. 823 00:37:57,990 --> 00:37:59,210 Polo tanto, é unha linguaxe de reserva. 824 00:37:59,210 --> 00:38:00,640 Non é unha linguaxe de script. 825 00:38:00,640 --> 00:38:02,160 Non hai lóxica niso. 826 00:38:02,160 --> 00:38:05,710 É simplemente para cambiar a forma como algo aparece. 827 00:38:05,710 --> 00:38:07,670 OK, entón iso é un importante distinción a facer. 828 00:38:07,670 --> 00:38:12,030 É considerada unha linguaxe de reserva, non unha linguaxe de script. 829 00:38:12,030 --> 00:38:15,100 >> Entón aquí temos as nosas etiquetas HTML. 830 00:38:15,100 --> 00:38:20,390 Neste foto son, probablemente, a maior parte do aquelas que debe estar familiarizado con 831 00:38:20,390 --> 00:38:22,390 e ser moi cómodo. 832 00:38:22,390 --> 00:38:25,700 Entón, obviamente, temos nosa etiqueta HTML, que 833 00:38:25,700 --> 00:38:29,930 designa que todo na entre estes dous será HTML. 834 00:38:29,930 --> 00:38:33,070 Temos algún enlace, que obviamente, lle vai dar 835 00:38:33,070 --> 00:38:34,990 unha ligazón a unha páxina web externa. 836 00:38:34,990 --> 00:38:37,520 Algúns título, dentro da nosa cabeza aquí. 837 00:38:37,520 --> 00:38:40,020 E nós temos o noso corpo con h1, que é unha cabeceira, 838 00:38:40,020 --> 00:38:42,260 polo que vai facelo agradable e arroxado e maior. 839 00:38:42,260 --> 00:38:46,040 E entón, temos algunhas p, que é un número. 840 00:38:46,040 --> 00:38:49,000 Probablemente debe saber e estar familiarizado coas cousas 841 00:38:49,000 --> 00:38:54,030 como o xeito no que inserir unha imaxe, son Existen outras clases de cabeceira? 842 00:38:54,030 --> 00:38:57,240 Eu sería definitivamente cómodo con div. 843 00:38:57,240 --> 00:39:00,840 Así, estes teñen a maioría de etiquetas que debe estar familiarizado. 844 00:39:00,840 --> 00:39:04,370 Pero, claro, como en todo na CS 50, a lista non é exhaustiva. 845 00:39:04,370 --> 00:39:08,200 Entón, asegúrese de cepillo anterior en que. 846 00:39:08,200 --> 00:39:13,260 >> CSS, para CSS, se algún de vós asistir meu seminario de dúas semanas, 847 00:39:13,260 --> 00:39:16,250 é realmente só unha forma o estilo do seu web? 848 00:39:16,250 --> 00:39:18,950 OK, entón temos moitas linguaxes de marcado. 849 00:39:18,950 --> 00:39:23,220 HTML, que coida de só o texto e onde pode estar na páxina. 850 00:39:23,220 --> 00:39:25,760 Pero CSS é realmente o que o fai bastante. 851 00:39:25,760 --> 00:39:30,690 Podería ter estes no seu HTML arquivos, pero como imos falar máis tarde, 852 00:39:30,690 --> 00:39:32,660 Eu estou seguro que pode ser o seguinte foto, el 853 00:39:32,660 --> 00:39:35,620 É práctica común, e, de feito, práctica que realmente impulsar, 854 00:39:35,620 --> 00:39:40,670 para que poida mantelos separados cando nós falar MVC e todo ese paradigma. 855 00:39:40,670 --> 00:39:42,490 Isto é realmente o que iso alimenta. 856 00:39:42,490 --> 00:39:46,110 >> Entón CSS é só unha forma de facer as cousas parecen moito. 857 00:39:46,110 --> 00:39:50,500 As cousas aquí, como corpo e #title e .info, 858 00:39:50,500 --> 00:39:54,340 estes son chamados selectores e que que fan é seleccionar cousas específicas 859 00:39:54,340 --> 00:39:59,260 dentro do seu ficheiro HTML e aplicar calquera estilo, 860 00:39:59,260 --> 00:40:04,090 calquera outro tipo de cousas que quere, a ese elemento específico do seu web 861 00:40:04,090 --> 00:40:04,590 páxina. 862 00:40:04,590 --> 00:40:08,820 Entón, aquí temos unha cor de fondo e unha cor 863 00:40:08,820 --> 00:40:12,450 e unha familia de fontes que está a ser aplicado a todo o que está no corpo. 864 00:40:12,450 --> 00:40:15,530 Entón, se nós miramos cara atrás aquí, non se aplicaría ao título. 865 00:40:15,530 --> 00:40:22,340 Ela só se aplicaría ao que é nestes selectores do corpo, OK? 866 00:40:22,340 --> 00:40:25,250 >> Co título aquí, este é será o mesmo, 867 00:40:25,250 --> 00:40:28,410 a cor do texto sendo azul vai só 868 00:40:28,410 --> 00:40:33,870 para afectar o que está dentro os selectores de título. 869 00:40:33,870 --> 00:40:36,580 Así como información aquí, o texto será rosa, 870 00:40:36,580 --> 00:40:38,600 que información, que é aquí. 871 00:40:38,600 --> 00:40:40,860 Entón o único que sería rosa nesta páxina 872 00:40:40,860 --> 00:40:44,100 é hoxe, luns, 17 novembro, 2014. 873 00:40:44,100 --> 00:40:48,770 OK, entón CSS é só unha forma de ter máis control over-- si? 874 00:40:48,770 --> 00:40:51,850 >> Audiencia: Por que ten para usar o hash co título? 875 00:40:51,850 --> 00:40:55,170 >> HANNAH: Next foto, prometo! 876 00:40:55,170 --> 00:40:56,810 Nós imos chegar alí. 877 00:40:56,810 --> 00:40:59,830 Entón é por iso que temos que usar hash. 878 00:40:59,830 --> 00:41:03,429 Entón selectores asumir tres principais formas que falar con vós sobre. 879 00:41:03,429 --> 00:41:05,595 I fyou quere saber máis, hai moito por aí. 880 00:41:05,595 --> 00:41:07,540 Hai unha gran documentación CSS. 881 00:41:07,540 --> 00:41:12,680 Hai un nome etiqueta, que ten que ver con só súas etiquetas normais HTML. 882 00:41:12,680 --> 00:41:17,210 Entón h1, p, p, h2, eses tipos de cousas. 883 00:41:17,210 --> 00:41:20,320 E podemos só citar os como é. 884 00:41:20,320 --> 00:41:22,650 Entón, como podemos ver aquí con corpo, é unha etiqueta normal. 885 00:41:22,650 --> 00:41:26,660 Así, podemos só poñer corpo cando estamos a falar na nosa arquivo CSS. 886 00:41:26,660 --> 00:41:29,730 >> Con título, toda a razón, ter ese hash é que temos o que é 887 00:41:29,730 --> 00:41:31,010 considerada unha ID. 888 00:41:31,010 --> 00:41:35,400 Así, un ID debe ser sempre único dentro da súa páxina HTML 889 00:41:35,400 --> 00:41:37,930 de xeito que cando está referíndose a el, 890 00:41:37,930 --> 00:41:41,990 sei que está referíndose só para unha cousa específica. 891 00:41:41,990 --> 00:41:46,270 Polo tanto, neste caso aquí, coa nosa h1 aquí, CS 50 revisar sesión, 892 00:41:46,270 --> 00:41:47,810 temos un id título. 893 00:41:47,810 --> 00:41:54,280 Así, para só referirse a que peza de nosa HTML, facemos un título hash. 894 00:41:54,280 --> 00:41:58,080 Só por convención, IDs son designados cun hash diante deles. 895 00:41:58,080 --> 00:42:01,650 Do mesmo xeito, vemos información aquí é unha clase. 896 00:42:01,650 --> 00:42:06,070 E así clase con CSS é designado como unha clase punto 897 00:42:06,070 --> 00:42:08,895 dot ou sexa alí o que é clase. 898 00:42:08,895 --> 00:42:10,850 Polo tanto, neste caso aquí, é info. 899 00:42:10,850 --> 00:42:13,090 >> Entón eu leva-la de volta. 900 00:42:13,090 --> 00:42:16,200 Ambos serían rosa para o noso CSS aquí 901 00:42:16,200 --> 00:42:18,430 porque ambos teñen unha clase de info. 902 00:42:18,430 --> 00:42:23,070 E no noso arquivo CSS, nós designamos que calquera cousa con unha clase de Información 903 00:42:23,070 --> 00:42:24,120 debe ser rosa. 904 00:42:24,120 --> 00:42:25,968 Isto ten sentido? 905 00:42:25,968 --> 00:42:27,435 Si? 906 00:42:27,435 --> 00:42:30,731 >> Audiencia: Se fose facer todo no branco corpo, 907 00:42:30,731 --> 00:42:32,814 e, a continuación, tenta facer algo dentro del azul, 908 00:42:32,814 --> 00:42:34,770 tería que provocar problemas? 909 00:42:34,770 --> 00:42:37,310 >> HANNAH: Entón é CSS follas de estilo en cascada. 910 00:42:37,310 --> 00:42:40,730 Entón, todo o que é cara ao bottom prevalecerá. 911 00:42:40,730 --> 00:42:44,080 Entón, se fai algo co corpo, e fai todo branco, 912 00:42:44,080 --> 00:42:49,300 e despois, máis tarde, cambiar o título ou cambiar o texto dentro do corpo, 913 00:42:49,300 --> 00:42:50,560 el substitúe iso. 914 00:42:50,560 --> 00:42:55,360 Así, calquera cousa para a bottom prevalecerá. 915 00:42:55,360 --> 00:42:56,730 Si? 916 00:42:56,730 --> 00:42:59,627 >> Audiencia: e IDs son únicos, pero as clases poden ser máis? 917 00:42:59,627 --> 00:43:00,210 HANNAH: Correcto. 918 00:43:00,210 --> 00:43:06,320 Entón IDs debe ser único, e as clases poden refírense a tantas cousas como lle gustaría. 919 00:43:06,320 --> 00:43:07,580 Algunha pregunta? 920 00:43:07,580 --> 00:43:09,800 Si. 921 00:43:09,800 --> 00:43:11,210 >> Audiencia: [inaudível]. 922 00:43:11,210 --> 00:43:13,509 Eu estou querendo saber se que fai a diferenza. 923 00:43:13,509 --> 00:43:15,217 HANNAH: Eu sinto moito, cal foi a pregunta? 924 00:43:15,217 --> 00:43:18,960 Audiencia: Hai pequena "F" e de capital "F." 925 00:43:18,960 --> 00:43:21,440 HANNAH: Entón a diferenza entre as pequenas "f" e "F" 926 00:43:21,440 --> 00:43:22,606 non debe facer a diferenza. 927 00:43:22,606 --> 00:43:26,330 Así, "f" será 15 de calquera maneira. 928 00:43:26,330 --> 00:43:28,130 Cool, calquera outra cousa? 929 00:43:28,130 --> 00:43:29,930 Todo o mundo bo, CSS? 930 00:43:29,930 --> 00:43:30,850 Si? 931 00:43:30,850 --> 00:43:31,790 >> Audiencia: Sentímolo. 932 00:43:31,790 --> 00:43:35,550 Pode ter unha clase e un ID? 933 00:43:35,550 --> 00:43:38,030 >> HANNAH: Si, pode. 934 00:43:38,030 --> 00:43:40,420 As cousas poden ter tanto unha clase e un ID. 935 00:43:40,420 --> 00:43:44,670 E eu recomendo probar estes no seu propio país. 936 00:43:44,670 --> 00:43:50,480 CSS vai aprender mellor só facendo algo, páxina web moi sinxelo, 937 00:43:50,480 --> 00:43:53,440 elaboración dalgúns CSS, e só vendo como interactúan. 938 00:43:53,440 --> 00:43:56,970 E vai gañar un moi bo, sentido intuitivo de como funciona. 939 00:43:56,970 --> 00:43:58,810 >> OK, todo o mundo ben con CSS? 940 00:43:58,810 --> 00:44:01,280 Está todo indo facer fermosas sitios con CSS agora. 941 00:44:01,280 --> 00:44:05,460 OK, mellores prácticas, só cousas para manter presente, cousas 942 00:44:05,460 --> 00:44:09,810 isso-- é por iso que atracar vostede ao deseñador e outros enfeites. 943 00:44:09,810 --> 00:44:11,820 Entón pecha as súas etiquetas HTML. 944 00:44:11,820 --> 00:44:14,840 Entón se ten un corpo aberto, debe haber un corpo próximo. 945 00:44:14,840 --> 00:44:18,180 Se tes un párrafo aberto, debe haber un parágrafo preto. 946 00:44:18,180 --> 00:44:19,555 Comproba a ver a súa páxina valida. 947 00:44:19,555 --> 00:44:23,330 Vostedes deben estar moi familiarizado con iso dende-p definir sete 948 00:44:23,330 --> 00:44:26,350 CS con 50 finanzas co validador W3. 949 00:44:26,350 --> 00:44:28,340 E como dixen antes, un dos nosos grandes paradigmas 950 00:44:28,340 --> 00:44:33,780 está separando o seu estilo con CSS a partir da súa cita, o que é HTML. 951 00:44:33,780 --> 00:44:36,900 E despois, claro, temos este gran xkcd aquí debaixo. 952 00:44:36,900 --> 00:44:38,280 Yay, alivio cómico! 953 00:44:38,280 --> 00:44:41,340 >> OK, TCP / IP. 954 00:44:41,340 --> 00:44:44,650 Entre estes e HTTP, basicamente, son ambos os protocolos. 955 00:44:44,650 --> 00:44:46,810 Entón, vostede podería só pensar deles como un conxunto de regras 956 00:44:46,810 --> 00:44:50,110 que determinan como as cousas mover a través de internet. 957 00:44:50,110 --> 00:44:53,410 Entón, control de transmisión protocolo, ou protocolo de internet, 958 00:44:53,410 --> 00:44:57,280 é só unha forma de asegurarse de que os datos cheguen a onde vai 959 00:44:57,280 --> 00:45:00,030 e que sabemos si estamos sempre a falta de datos. 960 00:45:00,030 --> 00:45:03,520 Entón, se vostedes pensan ao charla un par de semanas, con David 961 00:45:03,520 --> 00:45:06,980 onde tivemos catro sobres, eles foron todos contados como un dos catro, 962 00:45:06,980 --> 00:45:11,300 dous de catro, tres de catro, catro dos catro, este é só un conxunto de regras. 963 00:45:11,300 --> 00:45:13,830 Nós dixemos, OK, sempre que estamos enviar máis que un paquete, 964 00:45:13,830 --> 00:45:16,610 imos numerar co que o número é 965 00:45:16,610 --> 00:45:19,040 e cantos total que o usuario debe obter. 966 00:45:19,040 --> 00:45:22,540 >> E este é só dicir quen está a recibir os datos, sexan eles 967 00:45:22,540 --> 00:45:26,120 comezar todo ou se algo se perdeu ao longo do camiño. 968 00:45:26,120 --> 00:45:28,840 E precisan preguntar a el de novo. 969 00:45:28,840 --> 00:45:31,140 Isto é realmente só un conxunto de regras. 970 00:45:31,140 --> 00:45:33,650 É así que pode pensar niso, OK? 971 00:45:33,650 --> 00:45:37,700 E tamén, el especifica o porto, o que vostedes can-- Sei durante charla, 972 00:45:37,700 --> 00:45:39,170 eles tiñan toda unha lista de portos. 973 00:45:39,170 --> 00:45:41,630 Pero nós non telos aquí agora. 974 00:45:41,630 --> 00:45:45,290 >> Protocolo de transferencia de hipertexto Entón é, unha vez máis, é outro protocolo. 975 00:45:45,290 --> 00:45:48,630 Polo tanto, é un outro conxunto de regras que gobernan, neste caso, 976 00:45:48,630 --> 00:45:51,130 como o hipertexto é trasladado. 977 00:45:51,130 --> 00:45:54,340 Por iso, só permite aos navegadores para falar con servidores web. 978 00:45:54,340 --> 00:45:56,910 E, como dixemos aquí, é como aperto de man humana. 979 00:45:56,910 --> 00:46:00,480 É só unha forma de gobernar como o servidor web é 980 00:46:00,480 --> 00:46:02,690 vai interactuar co seu navegador. 981 00:46:02,690 --> 00:46:05,660 E nós temos só un par de exemplos. 982 00:46:05,660 --> 00:46:09,100 Temos algunhas solicitudes aquí onde o método é GET. 983 00:46:09,100 --> 00:46:13,760 Temos HTTP 1.1, que é versión de protocolo para nós. 984 00:46:13,760 --> 00:46:17,230 E, a continuación, o anfitrión, que é o que en realidade estamos intentando acceder. 985 00:46:17,230 --> 00:46:21,800 E entón, como ve aquí, obter algunha resposta con este 200 986 00:46:21,800 --> 00:46:25,032 OK como o noso código de resposta HTTP. 987 00:46:25,032 --> 00:46:27,240 Temos unha lista grande que eu vou para puxar arriba nun segundo 988 00:46:27,240 --> 00:46:29,430 que vostedes deben estar familiarizados coa. 989 00:46:29,430 --> 00:46:35,750 E nós temos este tipo de contidos text / html, que só di que tipo de datos 990 00:46:35,750 --> 00:46:39,990 estamos recibindo do servidor, OK? 991 00:46:39,990 --> 00:46:44,230 Este servidor e este tipo de contidos forman parte das cabeceiras HTTP. 992 00:46:44,230 --> 00:46:49,610 Pode ter como poucos ou tan pouco como necesarias para o contexto do que 993 00:46:49,610 --> 00:46:50,580 está lidando. 994 00:46:50,580 --> 00:46:53,371 Ás veces, vai ter unha chea de información procedente de servidor. 995 00:46:53,371 --> 00:46:56,040 Quizais eles están pedindo unha morea de información do usuario. 996 00:46:56,040 --> 00:46:57,600 Esta varía dependendo do contexto. 997 00:46:57,600 --> 00:47:01,144 Se ollar para CS 50 Study, hai moito máis sobre iso. 998 00:47:01,144 --> 00:47:03,060 Pero temos moito para chegar través, por iso vou 999 00:47:03,060 --> 00:47:05,760 para ir adiante se todo ben con vós? 1000 00:47:05,760 --> 00:47:07,960 Con estilo. 1001 00:47:07,960 --> 00:47:08,460 Aguante. 1002 00:47:08,460 --> 00:47:11,182 Eu sempre teño que lista enteira de-- huh! 1003 00:47:11,182 --> 00:47:13,140 Eu non sei por que isto é todo o camiño ata aquí. 1004 00:47:13,140 --> 00:47:15,660 Eu penso que eu literalmente mudou-se Lo mentres eu estaba sitting-- 1005 00:47:15,660 --> 00:47:16,540 >> Davin: Quere ensino-lo? 1006 00:47:16,540 --> 00:47:17,420 Ou quere que eu ensino-lo? 1007 00:47:17,420 --> 00:47:20,010 >> Audiencia: Eu penso que poderiamos só amosar-lles para comezar. 1008 00:47:20,010 --> 00:47:22,210 Quero dicir, pode poñerse en Los aínda máis, pero eu 1009 00:47:22,210 --> 00:47:26,030 penso que facía máis sentido dende que eu estaba só a falar de estado de HTTP. 1010 00:47:26,030 --> 00:47:28,200 Entón aquí está a lista enteira. 1011 00:47:28,200 --> 00:47:31,730 Creo que o que vai pasar é Davin está indo a ir a eles máis tarde. 1012 00:47:31,730 --> 00:47:35,330 Pero hai toda unha lista, un previsualización do gusto de vir. 1013 00:47:35,330 --> 00:47:41,640 OK, imos blow-- iso vai para ser un curso intensivo PHP como ningún outro. 1014 00:47:41,640 --> 00:47:44,874 >> Entón PHP, pre-procesador de hipertexto, é un backronym recursivo, 1015 00:47:44,874 --> 00:47:46,540 o que significa que foi nomeado outra cousa. 1016 00:47:46,540 --> 00:47:49,050 E entón eles eran como, este non ten moito sentido. 1017 00:47:49,050 --> 00:47:52,210 Entón, eles só chamado ele-- e foi unha sigla, 1018 00:47:52,210 --> 00:47:54,840 para que só fixeron PHP pre-procesador de hipertexto, que 1019 00:47:54,840 --> 00:47:55,980 só non ten sentido. 1020 00:47:55,980 --> 00:47:57,714 Historia divertido. 1021 00:47:57,714 --> 00:47:58,880 É unha linguaxe de programación. 1022 00:47:58,880 --> 00:48:02,360 Así, tanto como eu enfatizo que HTML non é unha linguaxe de programación, 1023 00:48:02,360 --> 00:48:05,350 é linguaxe de reserva, un PHP é unha linguaxe de programación. 1024 00:48:05,350 --> 00:48:07,422 Como vostede sabe que este é porque non é lóxico. 1025 00:48:07,422 --> 00:48:08,380 Existen condicionais. 1026 00:48:08,380 --> 00:48:12,750 Temos variables, mentres nós ter ningunha destas cousas en HTML. 1027 00:48:12,750 --> 00:48:16,960 >> Todo ben, entón temos esta pequena bit aquí que é como o sabor do PHP. 1028 00:48:16,960 --> 00:48:20,510 Así básico, nomes de variables comezar cun sinal de dólar. 1029 00:48:20,510 --> 00:48:21,500 Moita xente quere. 1030 00:48:21,500 --> 00:48:22,371 Lembra nos cartos. 1031 00:48:22,371 --> 00:48:22,995 Está todo xenial. 1032 00:48:22,995 --> 00:48:25,280 Todos queremos PHP. 1033 00:48:25,280 --> 00:48:28,020 Entón, nós non especificar un tipo máis variable. 1034 00:48:28,020 --> 00:48:29,995 El é determinado en tempo de execución. 1035 00:48:29,995 --> 00:48:32,710 1036 00:48:32,710 --> 00:48:35,890 O intérprete como será, oh, imos percorrer, 1037 00:48:35,890 --> 00:48:39,565 e segundo o contexto, Veremos que tipo de tipo 1038 00:48:39,565 --> 00:48:41,560 estas variables que ter. 1039 00:48:41,560 --> 00:48:42,815 Non hai ningunha función principal. 1040 00:48:42,815 --> 00:48:43,690 As cousas simplemente será executado. 1041 00:48:43,690 --> 00:48:47,851 Vostedes coa súa importación no seu última p definida, vai entender iso. 1042 00:48:47,851 --> 00:48:49,350 Non houbo realmente unha función principal. 1043 00:48:49,350 --> 00:48:52,070 Acaba de escribir o que quería que acontecese. 1044 00:48:52,070 --> 00:48:53,280 E iso simplemente aconteceu. 1045 00:48:53,280 --> 00:48:56,760 Entón, iso é PHP para ti. 1046 00:48:56,760 --> 00:48:59,180 >> Arrays son moi semellantes. 1047 00:48:59,180 --> 00:49:01,270 Aínda temos este soporte. 1048 00:49:01,270 --> 00:49:05,940 Aquí, temos algunha variable arr chamado, e é igual 1049 00:49:05,940 --> 00:49:08,540 a-- temos o noso normal, notación soporte. 1050 00:49:08,540 --> 00:49:10,630 E nós temos algún valor fundamental. 1051 00:49:10,630 --> 00:49:14,630 E a gran diferenza entre C e PHP matrices 1052 00:49:14,630 --> 00:49:19,330 é que podemos ter este associate-- podemos asociar valores claves. 1053 00:49:19,330 --> 00:49:22,440 Entón, en vez de ter só unha matriz que é indexado 1054 00:49:22,440 --> 00:49:26,630 polo número ou a posición dese elemento na matriz, 1055 00:49:26,630 --> 00:49:29,060 nós realmente podemos asociala con unha chave. 1056 00:49:29,060 --> 00:49:36,700 Onde podemos dicir, OK, quero o que quere valor é asociado a froita. 1057 00:49:36,700 --> 00:49:39,280 E quizais temos froita foi á banana. 1058 00:49:39,280 --> 00:49:41,760 Entón ía voltar bananas para nós. 1059 00:49:41,760 --> 00:49:44,100 >> Pero, basicamente, a máis cousa poderosa sobre esta 1060 00:49:44,100 --> 00:49:47,960 é que, se vós lembran o demo da charla en que basicamente 1061 00:49:47,960 --> 00:49:53,050 Speller reescreveu en PHP, e lookup foi-- foi realmente só lle gusta, 1062 00:49:53,050 --> 00:49:55,007 é que esta chave existir? 1063 00:49:55,007 --> 00:49:56,590 Iso é realmente unha especie de poder del. 1064 00:49:56,590 --> 00:49:58,560 Non é preciso facer unha iteración a través da súa matriz. 1065 00:49:58,560 --> 00:50:00,311 Non precisa saber o espazo é in. 1066 00:50:00,311 --> 00:50:01,976 Pode ser a finais ou no inicio. 1067 00:50:01,976 --> 00:50:04,790 Sempre que sabe a clave que está asociado co valor, 1068 00:50:04,790 --> 00:50:09,740 PHP pode só cuspir ese valor de volta á dereita para fóra en ti, OK? 1069 00:50:09,740 --> 00:50:12,960 >> E entón, nós tamén só ter só porque nós 1070 00:50:12,960 --> 00:50:16,750 pode ter pares de valores clave non significa que precisa. 1071 00:50:16,750 --> 00:50:19,180 Tamén pode simplemente crear unha matriz normal como aquí, 1072 00:50:19,180 --> 00:50:21,540 na parte inferior, onde está só un, dous, tres, catro. 1073 00:50:21,540 --> 00:50:22,510 Estes son os nosos valores. 1074 00:50:22,510 --> 00:50:25,320 E, de feito, as claves son os índices. 1075 00:50:25,320 --> 00:50:26,830 Polo tanto, a clave para un sería cero. 1076 00:50:26,830 --> 00:50:28,610 A clave para dous sería un. 1077 00:50:28,610 --> 00:50:31,910 Así por diante e así por diante, a menos que asignar explicitamente unha chave, 1078 00:50:31,910 --> 00:50:34,630 podería supoñer que o valor é só o seu índice. 1079 00:50:34,630 --> 00:50:37,290 Isto ten sentido para todos? 1080 00:50:37,290 --> 00:50:38,070 Non hai preguntas? 1081 00:50:38,070 --> 00:50:38,930 Impresionante. 1082 00:50:38,930 --> 00:50:44,420 >> OK, foreach é unha forma de iteración a través das súas matrices. 1083 00:50:44,420 --> 00:50:47,490 Entón temos algo aquí, só a estrutura xeral. 1084 00:50:47,490 --> 00:50:51,020 Entón foreach, o nome nosa matriz, como o que quere 1085 00:50:51,020 --> 00:50:53,930 quere chamar cada elemento na súa matriz, 1086 00:50:53,930 --> 00:50:57,270 e podemos facer algo con este elemento é con ese valor. 1087 00:50:57,270 --> 00:50:58,680 Polo tanto, temos un exemplo aquí. 1088 00:50:58,680 --> 00:51:05,770 Temos unha asociativa matriz con estas dúas entradas 1089 00:51:05,770 --> 00:51:10,080 con bar sendo asociado con foo e Qux sendo asociado con Baz. 1090 00:51:10,080 --> 00:51:12,180 Así, as claves son foo e Baz. 1091 00:51:12,180 --> 00:51:13,650 Os valores son bar e Qux. 1092 00:51:13,650 --> 00:51:18,560 Entón foreach, temos a nosa disposición aquí, como o par de valor de clave. 1093 00:51:18,560 --> 00:51:21,560 Isto nos permite o acceso tanto a clave e valor. 1094 00:51:21,560 --> 00:51:23,680 Quizais só quere o valor, en cuxo caso 1095 00:51:23,680 --> 00:51:27,640 podería só facer como arr canto $ valor, e entón 1096 00:51:27,640 --> 00:51:30,640 son só acceder ao valor da como iterado. 1097 00:51:30,640 --> 00:51:32,600 Pero quizais para algúns razón, quere a clave, 1098 00:51:32,600 --> 00:51:35,460 é por iso que eu escollín Neste exemplo, en vez. 1099 00:51:35,460 --> 00:51:40,240 Entón pode realmente manipular clave e valor neste caso. 1100 00:51:40,240 --> 00:51:41,070 OK? 1101 00:51:41,070 --> 00:51:41,905 Pregunta? 1102 00:51:41,905 --> 00:51:44,279 >> Audiencia: Se quixese só manipular a tecla, sería 1103 00:51:44,279 --> 00:51:45,910 tes que facer foreach-- 1104 00:51:45,910 --> 00:51:47,360 >> Alison: Correcto. 1105 00:51:47,360 --> 00:51:50,560 Entón, se quería manipular só a clave, 1106 00:51:50,560 --> 00:51:53,680 aínda que esta sintaxe, porque se só 1107 00:51:53,680 --> 00:51:56,930 ter arr como algo, como unha cousa, é 1108 00:51:56,930 --> 00:52:00,070 indo supor que quere o valor, non a clave. 1109 00:52:00,070 --> 00:52:06,780 Entón, se xa só ten só como arr como, quizais iso é como US $ elemento, 1110 00:52:06,780 --> 00:52:11,670 vai asumir que está pedindo para só o valor de cada punto. 1111 00:52:11,670 --> 00:52:13,879 Se quere explicitamente facer algo coa chave, 1112 00:52:13,879 --> 00:52:16,170 mesmo se non está indo a facer algo co valor, 1113 00:52:16,170 --> 00:52:18,430 precisa desa estrutura que temos aquí 1114 00:52:18,430 --> 00:52:22,330 onde está pedindo explicitamente tanto para a clave e o valor. 1115 00:52:22,330 --> 00:52:24,170 Excelente pregunta. 1116 00:52:24,170 --> 00:52:25,940 Algo máis? 1117 00:52:25,940 --> 00:52:27,490 Con estilo. 1118 00:52:27,490 --> 00:52:29,911 >> Todo ben, PHP e HTML. 1119 00:52:29,911 --> 00:52:31,410 Oh, estamos de volta a-p definir sete novo. 1120 00:52:31,410 --> 00:52:35,380 Polo tanto, este debe ser un pouco familiar. 1121 00:52:35,380 --> 00:52:41,760 Polo tanto, esta é unha maneira sinxela de HTML que ten algún nome da entrada de Ola. 1122 00:52:41,760 --> 00:52:43,820 E vemos que temos o noso método de GET. 1123 00:52:43,820 --> 00:52:47,430 E se nos lembrar da nosa p-set, cando este formulario é enviado, 1124 00:52:47,430 --> 00:52:58,130 el envía un array chamado $ _GET que ten Todos estes insumos ou variables 1125 00:52:58,130 --> 00:53:00,490 a forma que debe ser manipulado no noso PHP. 1126 00:53:00,490 --> 00:53:03,320 Polo tanto, neste caso, o usuario colocaría no seu nome. 1127 00:53:03,320 --> 00:53:04,370 Eles presenta-lo. 1128 00:53:04,370 --> 00:53:07,810 E vemos que temos algún matriz aquí. 1129 00:53:07,810 --> 00:53:09,080 Temos a nosa matriz GET. 1130 00:53:09,080 --> 00:53:11,510 E estamos accedendo nome. 1131 00:53:11,510 --> 00:53:15,070 >> Entón, que di: OK, dáme a valor que está asociado co nome, 1132 00:53:15,070 --> 00:53:16,550 nome a ser a clave aquí. 1133 00:53:16,550 --> 00:53:21,400 E que mapea directamente ao Nós dixemos que o noso nome de entrada é. 1134 00:53:21,400 --> 00:53:28,960 Polo tanto, este foi o que lle dá a clave para o que está indo para a súa matriz aquí. 1135 00:53:28,960 --> 00:53:31,220 Isto ten sentido para todos? 1136 00:53:31,220 --> 00:53:32,070 Si? 1137 00:53:32,070 --> 00:53:36,240 >> Audiencia: Será que o nome en Get consulte para a liña roxa [inaudível]? 1138 00:53:36,240 --> 00:53:37,740 >> Alison: Refírese a iso aquí. 1139 00:53:37,740 --> 00:53:43,840 Polo tanto, este campo aquí, refírese a este nome aquí. 1140 00:53:43,840 --> 00:53:47,800 Polo tanto, este podería ser nomeado como número de teléfono, ou o que quere. 1141 00:53:47,800 --> 00:53:51,790 Este nome, en realidade, di, o que está chamando neste campo? 1142 00:53:51,790 --> 00:53:53,600 Como está indo a refírense a este campo? 1143 00:53:53,600 --> 00:53:57,670 E ese nome é, en realidade, gusto, estamos dicindo que este campo chámase nome. 1144 00:53:57,670 --> 00:53:59,224 É así que nós estamos indo para acceder a ela. 1145 00:53:59,224 --> 00:54:02,070 >> Audiencia: Así é que lle gusta, nome de entrada é igual a Bob, e- 1146 00:54:02,070 --> 00:54:04,380 >> Alison: Correcto, entón obtería Bob alí en baixo. 1147 00:54:04,380 --> 00:54:06,090 Exactamente. 1148 00:54:06,090 --> 00:54:07,800 Todo o mundo cool? 1149 00:54:07,800 --> 00:54:10,990 Todo ben, así que comezar contra o POST, estas son as dúas principais formas 1150 00:54:10,990 --> 00:54:14,880 que pasar datos nunha solicitude HTTP. 1151 00:54:14,880 --> 00:54:17,370 Vostedes deben ter visto ambos estes esperanzas. 1152 00:54:17,370 --> 00:54:20,940 Así, con get, a información é pasada a través do URL. 1153 00:54:20,940 --> 00:54:23,490 Entón, se vostede non facer Google procuras, YouTube, vai 1154 00:54:23,490 --> 00:54:25,130 probablemente notar algún signo de interrogación. 1155 00:54:25,130 --> 00:54:28,230 E entón, todas as palabras que acaba de poñer alí. 1156 00:54:28,230 --> 00:54:31,410 E POST pasa os datos no corpo da mensaxe HTTP. 1157 00:54:31,410 --> 00:54:36,922 Polo tanto, ao contrario GET, vostede medio que considere que os datos son escondidos do usuario. 1158 00:54:36,922 --> 00:54:38,630 Pero o que é realmente importante comprender 1159 00:54:38,630 --> 00:54:44,040 é que este aínda é tan inseguro como GET. 1160 00:54:44,040 --> 00:54:48,780 A analoxía que me gusta de usar é se ten o seu número de conta bancaria 1161 00:54:48,780 --> 00:54:52,795 e gravala-lo do lado de fóra un sobre, que é moi inseguro. 1162 00:54:52,795 --> 00:54:55,920 Se tivese que escribir nun anaco de papel e poñelas dentro do sobre, 1163 00:54:55,920 --> 00:54:58,850 aínda é moi insegura porque todo o que tes que facer é abrir-se que 1164 00:54:58,850 --> 00:55:03,480 e mirar para o contido real da mensaxe a ver iso. 1165 00:55:03,480 --> 00:55:08,310 Polo tanto, este é "oculto", ea xente quere creo que é seguro, pero non é realmente. 1166 00:55:08,310 --> 00:55:11,000 E eu estou seguro que vai Davin entrar niso máis, quizais. 1167 00:55:11,000 --> 00:55:12,850 Pero é un importante distinción a facer 1168 00:55:12,850 --> 00:55:15,820 e algo realmente bo para entender. 1169 00:55:15,820 --> 00:55:19,220 >> OK, SQL, Structured Query Language. 1170 00:55:19,220 --> 00:55:22,220 Todas as cousas que vimos ata hai pouco! 1171 00:55:22,220 --> 00:55:25,400 Entón é basicamente deseñado, obviamente, para a xestión de datos. 1172 00:55:25,400 --> 00:55:30,560 Vostedes tiveron moita experiencia con iso nas súas táboas con PHP MyAdmin. 1173 00:55:30,560 --> 00:55:34,100 E hai catro consultas comúns que quero que vostedes coñecen. 1174 00:55:34,100 --> 00:55:37,304 Polo tanto, non hai actualización, inserción seleccionar e eliminar. 1175 00:55:37,304 --> 00:55:38,970 Polo tanto, comproba que sabe quen realmente ben. 1176 00:55:38,970 --> 00:55:40,960 Estamos indo para ir a través deles moi rápido. 1177 00:55:40,960 --> 00:55:44,340 >> Entón actualizar, realmente, como o que podería pensar que fai, 1178 00:55:44,340 --> 00:55:46,740 el só actualiza os datos na súa base de datos. 1179 00:55:46,740 --> 00:55:48,750 Polo tanto, temos algúns exemplos aquí. 1180 00:55:48,750 --> 00:55:53,310 Este é o xeral estrutura dunha consulta de actualización. 1181 00:55:53,310 --> 00:55:56,150 Por iso, actualizar a táboa que estamos a falar. 1182 00:55:56,150 --> 00:56:00,520 E nós queremos establecer certo valores, determinadas columnas 1183 00:56:00,520 --> 00:56:02,600 igual a valores específicos. 1184 00:56:02,600 --> 00:56:07,500 Polo tanto, este só actualiza a táboa, cambiando valores en todas as liñas no presente caso. 1185 00:56:07,500 --> 00:56:13,690 Así, nun presente abaixo aquí, un verdadeiro exemplo, temos insert-- desculpe. 1186 00:56:13,690 --> 00:56:17,630 Ese foto avanzado sen darme conta. 1187 00:56:17,630 --> 00:56:22,230 >> Entón esta táboa actualizacións definir col1 igual para val1 onde a casa é igual a "Currier." 1188 00:56:22,230 --> 00:56:25,300 O que isto se fai é só cambia, ela só 1189 00:56:25,300 --> 00:56:28,130 actualiza eses valores en lugares específicos. 1190 00:56:28,130 --> 00:56:32,300 Así, neste primeiro, cambia estes valores para todo na súa mesa, 1191 00:56:32,300 --> 00:56:32,860 OK? 1192 00:56:32,860 --> 00:56:35,820 Vai cambiar isto columna para cada entrada única, 1193 00:56:35,820 --> 00:56:37,020 para cada liña. 1194 00:56:37,020 --> 00:56:40,840 Pero este, onde, podería pense nisto como un calificador. 1195 00:56:40,840 --> 00:56:44,020 Por iso, só vai cambiar Lo en lugares moi específicos. 1196 00:56:44,020 --> 00:56:47,840 Así, en-p definir sete, cando quizais actualizou a cantidade de diñeiro 1197 00:56:47,840 --> 00:56:53,050 que o usuario tivo, probablemente tivo algúns onde ID é igual a sesión ID, non? 1198 00:56:53,050 --> 00:56:55,280 >> Porque non quixo cambiar a cantidade de diñeiro 1199 00:56:55,280 --> 00:56:57,630 para cada persoa que estaba usando a súa web. 1200 00:56:57,630 --> 00:57:00,480 Quería mudalo para un determinada persoa, esa persoa estar 1201 00:57:00,480 --> 00:57:02,410 quen estaba a usalo naquel momento. 1202 00:57:02,410 --> 00:57:04,320 Non? 1203 00:57:04,320 --> 00:57:07,510 OK, entón inserir, inserción certos valores en táboas. 1204 00:57:07,510 --> 00:57:11,650 Isto é como cando está a creación dun novo usuario. 1205 00:57:11,650 --> 00:57:14,240 A estrutura xeral aquí se introducir en calquera mesa 1206 00:57:14,240 --> 00:57:15,680 estamos a falar. 1207 00:57:15,680 --> 00:57:18,910 Valores, sendo os valores que nós realmente quere inserir. 1208 00:57:18,910 --> 00:57:23,060 OK, así como vemos aquí, nós ter inserir na táboa. 1209 00:57:23,060 --> 00:57:27,790 Este é columnas específicas con os seus valores correspondían. 1210 00:57:27,790 --> 00:57:29,940 Polo tanto, este di, insert unha nova liña que contén 1211 00:57:29,940 --> 00:57:33,660 valores val1 e val2 baixo estas columnas específicas. 1212 00:57:33,660 --> 00:57:39,240 >> Entón, quizais só quere encher a metade das cousas nesta liña. 1213 00:57:39,240 --> 00:57:41,150 Iso é o que esta parte aquí permite que faga. 1214 00:57:41,150 --> 00:57:43,280 Permite que realmente determinar que parte. 1215 00:57:43,280 --> 00:57:44,244 Si? 1216 00:57:44,244 --> 00:57:52,150 >> Audiencia: Pode só [inaudível] células na liña [inaudível]? 1217 00:57:52,150 --> 00:57:55,000 >> Alison: Se só cubrir certas partes da súa liña, 1218 00:57:55,000 --> 00:57:57,480 o resto destas células son só baleiro. 1219 00:57:57,480 --> 00:58:02,730 1220 00:58:02,730 --> 00:58:05,660 Sempre que permitir que estar baleiro, non é un problema. 1221 00:58:05,660 --> 00:58:09,570 Se tentar acceder a eles, é volverá algún elemento baleiro. 1222 00:58:09,570 --> 00:58:13,850 Pero é importante saber que en certos cadros, 1223 00:58:13,850 --> 00:58:16,690 Teñen que ser autorizados a ser nulo. 1224 00:58:16,690 --> 00:58:18,890 Pode ter executado nun problema durante a súa p-set 1225 00:58:18,890 --> 00:58:21,320 porque non deixar que calquera dos seus valores ser nulo. 1226 00:58:21,320 --> 00:58:26,110 Pero pode especificar un valor opcional na súa mesa. 1227 00:58:26,110 --> 00:58:29,640 >> OK, seleccione, polo que esta é só unha forma de comezar 1228 00:58:29,640 --> 00:58:33,790 datos específicos a partir dunha táboa na algún identificador que quere. 1229 00:58:33,790 --> 00:58:37,990 Entón, seleccione Estrela mesa onde col é igual a algo só significa, 1230 00:58:37,990 --> 00:58:43,820 dáme todos os datos asociados en que esta columna específica é certo. 1231 00:58:43,820 --> 00:58:49,020 Entón, a estrela, neste caso, volver a liña enteira para ti, OK? 1232 00:58:49,020 --> 00:58:54,880 >> E entón, nese caso, seleccione Estrela mesa só dálle toda a táboa. 1233 00:58:54,880 --> 00:58:58,940 E, a continuación, eliminar, obviamente, só elimina a liña a partir da táboa. 1234 00:58:58,940 --> 00:59:01,320 Entón eliminar da táboa, calquera mesa que estamos 1235 00:59:01,320 --> 00:59:06,830 referenciamento, onde algúns específicos identificador ou algunha condición é verdadeira. 1236 00:59:06,830 --> 00:59:07,720 Si? 1237 00:59:07,720 --> 00:59:08,700 >> Audiencia: Pregunta. 1238 00:59:08,700 --> 00:59:10,699 Por que está a usar dobre citas, e se 1239 00:59:10,699 --> 00:59:13,600 facer comiñas simples ou dobres citas, iso fai algunha diferenza? 1240 00:59:13,600 --> 00:59:18,235 >> Alison: As comiñas dobres ou aspas simples non facer a diferenza no SQL. 1241 00:59:18,235 --> 00:59:19,610 Eu penso que vin outra pregunta. 1242 00:59:19,610 --> 00:59:20,814 Si? 1243 00:59:20,814 --> 00:59:25,070 >> Audiencia: Non lle afectan o que fica escapou da consulta? 1244 00:59:25,070 --> 00:59:27,945 >> Alison: Rob? 1245 00:59:27,945 --> 00:59:31,410 >> ROB: O que quere dicir con escapar da consulta? 1246 00:59:31,410 --> 00:59:36,870 >> Audiencia: Se alguén ten unha consulta única en forma de-- 1247 00:59:36,870 --> 00:59:39,862 >> ROB: Se alguén poñer unha única cita, 1248 00:59:39,862 --> 00:59:43,560 entón, mentres está saneantes súa entrada, non importa. 1249 00:59:43,560 --> 00:59:46,205 Pero se está a usar un único Cita e está incorrectamente 1250 00:59:46,205 --> 00:59:47,914 escapando súas entradas, entón si, precisan 1251 00:59:47,914 --> 00:59:51,079 para poñer unha única cita, a fin de romper seu código. se usa comiñas dobres, 1252 00:59:51,079 --> 00:59:53,580 precisan poñer un dobre citar a romper o seu código. 1253 00:59:53,580 --> 00:59:56,163 Pero, mentres escapar cousas correctamente, iso non importa. 1254 00:59:56,163 --> 00:59:59,220 É só pasar a ser traducido para o símbolo correcto de calquera maneira. 1255 00:59:59,220 --> 01:00:02,332 >> Audiencia: Que significa fuga significa? 1256 01:00:02,332 --> 01:00:04,040 Alison: Ben, como saneantes e fuga. 1257 01:00:04,040 --> 01:00:06,810 1258 01:00:06,810 --> 01:00:13,820 O exame que temos, o gran xkcd comic que puxar arriba, onde ten, 1259 01:00:13,820 --> 01:00:15,629 Oh-- 1260 01:00:15,629 --> 01:00:16,670 ROB: É o último foto. 1261 01:00:16,670 --> 01:00:18,500 Alison: É o último foto, realmente? 1262 01:00:18,500 --> 01:00:20,200 Meu Deus. 1263 01:00:20,200 --> 01:00:21,780 Alí imos nós, perfecto. 1264 01:00:21,780 --> 01:00:27,900 OK, entón, basicamente, pode inxectar algo para esta procura de SQL 1265 01:00:27,900 --> 01:00:30,560 onde rompe o seu código, ou como David mostrou 1266 01:00:30,560 --> 01:00:38,460 en clase, se temos algún único Cita 1 é igual a 1 e no noso código, 1267 01:00:38,460 --> 01:00:41,230 nós só copiar directamente en que, e temos unha aspa única de final, 1268 01:00:41,230 --> 01:00:44,740 o que pasa é que chegamos que algunha expresión 1269 01:00:44,740 --> 01:00:48,680 avalía a verdade que vai deixar alguén entrar na nosa base de datos 1270 01:00:48,680 --> 01:00:51,720 e obter datos que Non quere que queden. 1271 01:00:51,720 --> 01:00:54,240 Entón hixiene das entradas significa só asegurarse de 1272 01:00:54,240 --> 01:00:57,680 que estamos escapando estes personaxes e designando- 1273 01:00:57,680 --> 01:01:01,720 como caracteres e non cousas que debe ser permitido 1274 01:01:01,720 --> 01:01:04,990 debe ser tomada literalmente como a nosa instrución SQL. 1275 01:01:04,990 --> 01:01:09,980 >> Así, a gran cousa que dixemos que vostedes deberían estar usando 1276 01:01:09,980 --> 01:01:13,650 eran HTML caracteres especiais, que é algo 1277 01:01:13,650 --> 01:01:15,730 que pode querer dar un ollo. 1278 01:01:15,730 --> 01:01:17,240 Aceptar, eliminar. 1279 01:01:17,240 --> 01:01:19,450 Tipo de datos, todo iso vai estar en liña. 1280 01:01:19,450 --> 01:01:23,510 Unha vez que temos 15 minutos á esquerda, eu son só vai dar certo por iso. 1281 01:01:23,510 --> 01:01:28,500 PHP e SQL basicamente trátase só tivemos unha función de consulta que 1282 01:01:28,500 --> 01:01:31,520 axudou a protexer contra estes ataques maliciosos. 1283 01:01:31,520 --> 01:01:33,970 Así, sempre que usa consulta, estabamos facendo certo 1284 01:01:33,970 --> 01:01:36,560 que as cousas foron higienizados e outros enfeites. 1285 01:01:36,560 --> 01:01:41,070 >> MVC é só un paradigma deseño, así model, view, controller. 1286 01:01:41,070 --> 01:01:44,200 É só unha forma de manter as cousas agradable e dividido do mesmo xeito 1287 01:01:44,200 --> 01:01:47,100 que temos a tendencia de factor código en funcións. 1288 01:01:47,100 --> 01:01:53,390 Este é só un cadro de deseño web que permite que fai a mesma cousa. 1289 01:01:53,390 --> 01:01:54,760 Eu vou saltar esta. 1290 01:01:54,760 --> 01:01:58,530 >> Isto é algo que eu Sería super cómodo con. 1291 01:01:58,530 --> 01:02:01,132 É unha gran mesa pouco alí. 1292 01:02:01,132 --> 01:02:03,090 Dálle a función de exemplo do modelo. 1293 01:02:03,090 --> 01:02:05,473 Eu só estou pasando por iso porque eu Realmente quere Davin para poder falar. 1294 01:02:05,473 --> 01:02:07,140 Se ten algunha dúbida, por favor, Sinto-se libre. 1295 01:02:07,140 --> 01:02:07,931 Eu vou estar aquí despois. 1296 01:02:07,931 --> 01:02:10,360 Basta vir falar comigo. 1297 01:02:10,360 --> 01:02:13,380 Con iso, temos un estado de HTTP. 1298 01:02:13,380 --> 01:02:16,270 E Davin vai explotar a través desta en 15 minutos. 1299 01:02:16,270 --> 01:02:17,560 Isto vai ser gran. 1300 01:02:17,560 --> 01:02:18,893 >> Davin: Aceptar. 1301 01:02:18,893 --> 01:02:20,312 Uh, o seu micrófono? 1302 01:02:20,312 --> 01:02:22,210 Si. 1303 01:02:22,210 --> 01:02:23,336 Sentímolo. 1304 01:02:23,336 --> 01:02:24,460 Alison: Camiño para ser preparado. 1305 01:02:24,460 --> 01:02:25,335 Davin: Non, eu estou listo. 1306 01:02:25,335 --> 01:02:25,860 Estou listo. 1307 01:02:25,860 --> 01:02:28,790 Imos facelo. 1308 01:02:28,790 --> 01:02:29,290 Está preparado. 1309 01:02:29,290 --> 01:02:30,041 Aceptar. 1310 01:02:30,041 --> 01:02:30,540 Sentímolo. 1311 01:02:30,540 --> 01:02:31,664 Eu derramei café en min mesmo. 1312 01:02:31,664 --> 01:02:36,037 1313 01:02:36,037 --> 01:02:38,210 Eu non sei se eu son máis chat que eu parecer ridículo, 1314 01:02:38,210 --> 01:02:40,600 ou que eu non teño máis café. 1315 01:02:40,600 --> 01:02:44,480 De calquera forma, só un anuncio rápido sobre a folla de vostedes teñen. 1316 01:02:44,480 --> 01:02:47,994 Polo tanto, esta folla de vostedes teñen non é o funcionario que está no quiz. 1317 01:02:47,994 --> 01:02:49,660 Este é o oficial que está no quiz. 1318 01:02:49,660 --> 01:02:52,520 Ademais, na páxina web, nós dicimos ti, OK, isto vai estar no quiz. 1319 01:02:52,520 --> 01:02:55,020 Entón, na pequena Cabula tes, non oficial. 1320 01:02:55,020 --> 01:02:56,690 E hai erros nel. 1321 01:02:56,690 --> 01:03:01,490 Entón, mellor non só usalo cegamente. 1322 01:03:01,490 --> 01:03:04,390 Entón, si, é iso. 1323 01:03:04,390 --> 01:03:05,980 Entón, imos entrar neste real rápido. 1324 01:03:05,980 --> 01:03:07,420 >> Así estado de HTTP. 1325 01:03:07,420 --> 01:03:10,430 Entón o que ocorre cando o web, está todo ben. 1326 01:03:10,430 --> 01:03:11,144 Está todo OK. 1327 01:03:11,144 --> 01:03:13,310 Todo vén de volta para do xeito que quere que sexa. 1328 01:03:13,310 --> 01:03:15,370 Gañou un 200 Aceptar. 1329 01:03:15,370 --> 01:03:19,250 301, onde vimos que 301 antes? 1330 01:03:19,250 --> 01:03:20,890 Espere, o que está a suceder? 1331 01:03:20,890 --> 01:03:23,250 Sentímolo. 1332 01:03:23,250 --> 01:03:24,980 Vimos i charla estaño durante seguridade. 1333 01:03:24,980 --> 01:03:30,690 Así, durante seguridade, por iso, se David escribiu http e, a continuación, pechar un paquete cs50.net, 1334 01:03:30,690 --> 01:03:31,940 vai ver 301 movido. 1335 01:03:31,940 --> 01:03:32,440 Por que? 1336 01:03:32,440 --> 01:03:35,570 Porque vai redireccionar vostede automaticamente á nosa HTTPS. 1337 01:03:35,570 --> 01:03:38,649 >> Entón 301 movido, só é basicamente unha redirección. 1338 01:03:38,649 --> 01:03:40,190 E pode pensar niso como este. 1339 01:03:40,190 --> 01:03:43,790 Calquera dos estados que comezan con 2 do, aqueles son como, OK, está todo OK. 1340 01:03:43,790 --> 01:03:46,530 Calquera dos estados que comezan con 3, estes son redirección. 1341 01:03:46,530 --> 01:03:49,571 Os estado que comezan con 4, o que significa hai algún tipo de erro de cliente. 1342 01:03:49,571 --> 01:03:52,440 Os estado que comezan con 5, iso é algún tipo de erro no servidor. 1343 01:03:52,440 --> 01:03:54,680 Entón medio que romper os estado así. 1344 01:03:54,680 --> 01:03:59,120 Entón non 304 inalteradas, polo tanto, no seu server.c p-sets, entón imos dicir que 1345 01:03:59,120 --> 01:04:00,600 cat.html cargado. 1346 01:04:00,600 --> 01:04:03,360 Todo vén de volta, comeza 200s, OK, xenial. 1347 01:04:03,360 --> 01:04:04,540 >> Imos dicir que refrescou-lo. 1348 01:04:04,540 --> 01:04:07,310 Ben, dentro dese cat.html, ten un JPEG. 1349 01:04:07,310 --> 01:04:09,520 Ben, iso non é JPEG será recargando. 1350 01:04:09,520 --> 01:04:12,140 Non está indo a publicar outra Solicitude GET ao servidor, 1351 01:04:12,140 --> 01:04:13,980 e, a continuación, obter toda a información de volta. 1352 01:04:13,980 --> 01:04:17,560 Vai só ser-- esa imaxe é vai ser almacenada en caché na súa máquina. 1353 01:04:17,560 --> 01:04:19,540 E así que a imaxe será un 304. 1354 01:04:19,540 --> 01:04:20,720 Por iso, non foi modificado. 1355 01:04:20,720 --> 01:04:24,600 Se, a continuación, pechar, claro cookies, e axiña, actualiza 1356 01:04:24,600 --> 01:04:27,490 e tentar cargar a páxina unha vez máis, vai ver 200s. 1357 01:04:27,490 --> 01:04:28,910 Non vai ver que 304. 1358 01:04:28,910 --> 01:04:32,340 >> 400, mal solicitude, bens rápido como se, 1359 01:04:32,340 --> 01:04:34,880 estaban indo para enviar unha JSON obxecto ao servidor 1360 01:04:34,880 --> 01:04:38,090 eo seu obxecto JSON estaba incorrecta, vai ver algo como isto. 1361 01:04:38,090 --> 01:04:39,000 403, prohibido. 1362 01:04:39,000 --> 01:04:40,330 Cando ves un prohibido? 1363 01:04:40,330 --> 01:04:41,394 Probablemente Probablemente? 1364 01:04:41,394 --> 01:04:42,060 Audiencia: chmod. 1365 01:04:42,060 --> 01:04:42,950 Davin: chmod, si. 1366 01:04:42,950 --> 01:04:44,730 Entón non ten definido permisos correctamente. 1367 01:04:44,730 --> 01:04:45,577 404, non se atopou. 1368 01:04:45,577 --> 01:04:46,410 É simplemente non existe. 1369 01:04:46,410 --> 01:04:48,670 Entón, se escribise incorrecta. 1370 01:04:48,670 --> 01:04:53,500 500, erro interno do servidor, o servidor probablemente non foi configurado apropiadamente. 1371 01:04:53,500 --> 01:04:56,260 Algo que non é do seu lado, pero algo no lado do servidor. 1372 01:04:56,260 --> 01:04:57,240 E 503? 1373 01:04:57,240 --> 01:04:59,502 Moita xente viu 503s no último p-set. 1374 01:04:59,502 --> 01:05:00,460 Cando isto acontecer? 1375 01:05:00,460 --> 01:05:04,180 1376 01:05:04,180 --> 01:05:05,660 Escoitei susurros. 1377 01:05:05,660 --> 01:05:07,767 >> Audiencia: Cando Google decide é un robot. 1378 01:05:07,767 --> 01:05:10,350 Davin: Si, cando Google decide é un robot, comeza 503s. 1379 01:05:10,350 --> 01:05:11,560 Entón, iso é unha sobrecarga. 1380 01:05:11,560 --> 01:05:14,620 Se ten solicitado do servidor máis, xeralmente é temporal. 1381 01:05:14,620 --> 01:05:15,560 E a maioría de vostedes viron. 1382 01:05:15,560 --> 01:05:16,185 Entón viu 503. 1383 01:05:16,185 --> 01:05:19,282 Podería tomar un pouco pausa, a continuación, os 503s foi, 1384 01:05:19,282 --> 01:05:20,490 e todo estaba ben. 1385 01:05:20,490 --> 01:05:26,640 >> Gabe: Real rápida, cando é que vostedes se 500 en, probablemente, este último conxunto de problemas? 1386 01:05:26,640 --> 01:05:27,954 Si? 1387 01:05:27,954 --> 01:05:30,906 >> Audiencia: Normalmente, o servidor ten un arquivo perdido 1388 01:05:30,906 --> 01:05:34,650 ou [inaudível] súa máquina [inaudível]. 1389 01:05:34,650 --> 01:05:38,870 >> Gabe: Polo tanto, pode ser unha configuración problema en PHP no seu servidor. 1390 01:05:38,870 --> 01:05:42,250 Pero pode ser só algo como un punto e coma que o esqueceu. 1391 01:05:42,250 --> 01:05:44,130 Se está escribindo PHP, algúns sintaxe incorrecta 1392 01:05:44,130 --> 01:05:46,000 pode te deixar algo así. 1393 01:05:46,000 --> 01:05:46,960 OK? 1394 01:05:46,960 --> 01:05:48,610 >> Davin: Cool. 1395 01:05:48,610 --> 01:05:51,180 Quere que eu faga só ata AJAX? 1396 01:05:51,180 --> 01:05:52,950 >> Gabe: [inaudível]. 1397 01:05:52,950 --> 01:05:53,450 Davin: Aceptar. 1398 01:05:53,450 --> 01:05:54,230 Entón, cal é o DOM? 1399 01:05:54,230 --> 01:05:55,290 O que o DOM representa? 1400 01:05:55,290 --> 01:05:56,990 >> Audiencia: Document Object Model. 1401 01:05:56,990 --> 01:05:57,490 Davin: Nice. 1402 01:05:57,490 --> 01:06:00,775 E por que nos gusta? 1403 01:06:00,775 --> 01:06:02,670 Impresionante. 1404 01:06:02,670 --> 01:06:06,651 Seguro, polo que só nos permite acceso HTML, acceda a páxina moi rapidamente. 1405 01:06:06,651 --> 01:06:07,150 Por que? 1406 01:06:07,150 --> 01:06:09,980 Porque estamos tratando o noso páxina, tratando nosos etiquetas HTML, 1407 01:06:09,980 --> 01:06:11,730 tratar todo como se fosen obxectos. 1408 01:06:11,730 --> 01:06:13,710 Se imos tratalos como son obxectos, entón o que podemos facer? 1409 01:06:13,710 --> 01:06:15,210 Ben, podemos chamar funcións neles. 1410 01:06:15,210 --> 01:06:16,460 E iso é importante para ti? 1411 01:06:16,460 --> 01:06:19,200 Ben, porque nós estamos indo a usar JavaScript para actualizar o noso HTML, 1412 01:06:19,200 --> 01:06:20,500 actualizar estes obxectos. 1413 01:06:20,500 --> 01:06:23,869 Entón, se nós tratalas como obxectos, Podemos entón chamar funcións neles. 1414 01:06:23,869 --> 01:06:26,660 Eu vou entrar neste algo máis cando entro en JavaScript, 1415 01:06:26,660 --> 01:06:30,510 pero todos vimos como document.getElementById. 1416 01:06:30,510 --> 01:06:32,870 Entón documento é o seu elemento, obter elemento por ID, 1417 01:06:32,870 --> 01:06:35,087 entón está indo ollar para algúns ID nunha etiqueta HTML. 1418 01:06:35,087 --> 01:06:36,920 E entón, pode facer outra cousa para iso. 1419 01:06:36,920 --> 01:06:40,089 Por exemplo, como document.body, logo podes engadir neno. 1420 01:06:40,089 --> 01:06:41,630 Entón, vai atopar o documento. 1421 01:06:41,630 --> 01:06:42,340 Ten o documento. 1422 01:06:42,340 --> 01:06:43,629 Vai atopar o corpo. 1423 01:06:43,629 --> 01:06:44,420 Atopou o corpo. 1424 01:06:44,420 --> 01:06:46,545 E entón, vai chamar algunha función nel. 1425 01:06:46,545 --> 01:06:50,312 Entón engada neno, e pode engadir algúns HTML finais dentro do seu corpo. 1426 01:06:50,312 --> 01:06:52,520 Entón, basicamente, é só tratándoo como un obxecto. 1427 01:06:52,520 --> 01:06:54,515 Está tratando HTML tags como un obxecto. 1428 01:06:54,515 --> 01:06:57,071 E iso fai que sexa moi doado e rápido para pasar por eles. 1429 01:06:57,071 --> 01:06:59,070 Pero tamén permite que para chamar funcións neles 1430 01:06:59,070 --> 01:07:04,410 para que poida manexar e cambiar os elementos. 1431 01:07:04,410 --> 01:07:10,162 >> Gabe: Ante isto, por que é JavaScript, tales unha linguaxe agradable para interactuar con HTML? 1432 01:07:10,162 --> 01:07:12,870 As probabilidades son, cando as persoas estaban escollendo Idioma do navegador, 1433 01:07:12,870 --> 01:07:14,990 ao lado do cliente, JavaScript é moi bo, 1434 01:07:14,990 --> 01:07:16,765 é realmente bo para xestionar obxectos. 1435 01:07:16,765 --> 01:07:20,620 E os obxectos son o tipo de gusto os obxectos que aparecen en HTML, 1436 01:07:20,620 --> 01:07:23,940 polo que é moi doado para JavaScript para facer este tipo de manipulación. 1437 01:07:23,940 --> 01:07:24,440 Davin: Nice. 1438 01:07:24,440 --> 01:07:25,670 Entón, aquí é só un exemplo. 1439 01:07:25,670 --> 01:07:29,020 Entón eu creo que a proba do ano pasado, ou quizais dous anos, nós 1440 01:07:29,020 --> 01:07:30,840 pediulle para crear unha árbore. 1441 01:07:30,840 --> 01:07:32,660 Polo tanto, este é o que faría. 1442 01:07:32,660 --> 01:07:34,255 Entón comeza con documento. 1443 01:07:34,255 --> 01:07:36,130 E entón basicamente basta ollar para as etiquetas. 1444 01:07:36,130 --> 01:07:38,100 Entón, se ollar, nós comezar cunha etiqueta HTML. 1445 01:07:38,100 --> 01:07:41,660 E entón, ten pistas sobre como a facelo con base no recuar. 1446 01:07:41,660 --> 01:07:43,870 Así, tipo cabeza de ramas off. 1447 01:07:43,870 --> 01:07:46,242 Dentro da cabeza, temos outra etiqueta para o título. 1448 01:07:46,242 --> 01:07:47,450 Entón, temos unha etiqueta título. 1449 01:07:47,450 --> 01:07:49,760 E dentro diso, temos algúns cadea. 1450 01:07:49,760 --> 01:07:52,210 E así nós representamos unha corda nun círculo. 1451 01:07:52,210 --> 01:07:54,010 E todas as marcas están en prazas. 1452 01:07:54,010 --> 01:07:56,270 >> E se ollar, se nós pensar niso como unha árbore, 1453 01:07:56,270 --> 01:07:58,730 e digamos que é HTML un pai, logo cabeza e corpo 1454 01:07:58,730 --> 01:07:59,772 van ser irmáns. 1455 01:07:59,772 --> 01:08:01,813 Ambos están indo a ser fillos de que o pai. 1456 01:08:01,813 --> 01:08:03,620 Entón, porque son ambos irmáns, son 1457 01:08:03,620 --> 01:08:06,590 será tipo de xunto uns a outros no noso modelo de árbore. 1458 01:08:06,590 --> 01:08:08,590 E entón, vostede basicamente facer exactamente o mesmo. 1459 01:08:08,590 --> 01:08:13,512 Entón, non é difícil, pero require preguntas como esta antes no cuestionario. 1460 01:08:13,512 --> 01:08:15,220 Gabe: Alguén ten preguntas ata agora? 1461 01:08:15,220 --> 01:08:16,357 Isto é bo? 1462 01:08:16,357 --> 01:08:16,856 Davin: Cool. 1463 01:08:16,856 --> 01:08:19,630 1464 01:08:19,630 --> 01:08:21,600 JavaScript, OK, as cousas boas. 1465 01:08:21,600 --> 01:08:24,069 Entón JavaScript, o que é o JavaScript? 1466 01:08:24,069 --> 01:08:28,370 Ben, JavaScript é-- é complicada, pero estes 1467 01:08:28,370 --> 01:08:30,727 son algúns dos destaques que ten que ter presente. 1468 01:08:30,727 --> 01:08:31,810 En primeiro lugar, é vagamente ingresaran. 1469 01:08:31,810 --> 01:08:33,529 O que significa isto? 1470 01:08:33,529 --> 01:08:35,596 Entón PHP foi-- si, cal é? 1471 01:08:35,596 --> 01:08:39,854 >> Audiencia: Non ten que explicitamente estado que tipo de variable que é. 1472 01:08:39,854 --> 01:08:40,479 Davin: Perfect. 1473 01:08:40,479 --> 01:08:43,270 Entón, el dixo que non ten que mencionar explicitamente o tipo de variable. 1474 01:08:43,270 --> 01:08:44,160 Isto é exactamente correcto. 1475 01:08:44,160 --> 01:08:49,700 Así, en C, se eu tivese int i é igual a 50, a continuación, en PHP, é só así, $ i, 1476 01:08:49,700 --> 01:08:50,550 é igual a 50. 1477 01:08:50,550 --> 01:08:54,319 Entón, en JavaScript, cal sería a resposta? 1478 01:08:54,319 --> 01:08:55,260 Var, non? 1479 01:08:55,260 --> 01:08:56,566 Sería como var i é igual a 50. 1480 01:08:56,566 --> 01:08:58,649 Pero non ten que ser como, OK, este é un int. 1481 01:08:58,649 --> 01:09:00,350 OK, este é un string. 1482 01:09:00,350 --> 01:09:01,731 Non hai necesidade de facelo. 1483 01:09:01,731 --> 01:09:02,939 É unha linguaxe interpretada. 1484 01:09:02,939 --> 01:09:04,904 Entón, o que significa isto? 1485 01:09:04,904 --> 01:09:06,340 >> Audiencia: Non compilado. 1486 01:09:06,340 --> 01:09:10,470 >> Davin: O que non compilado significa? 1487 01:09:10,470 --> 01:09:11,392 Si? 1488 01:09:11,392 --> 01:09:15,336 >> Audiencia: Non ten para reestruturar o código 1489 01:09:15,336 --> 01:09:18,294 para obtelo listo para o ordenador para executalo. 1490 01:09:18,294 --> 01:09:23,144 É só toma o momento de execución e o ordenador [inaudível]. 1491 01:09:23,144 --> 01:09:25,560 Davin: Si, por iso vai para pasar a través dun intérprete. 1492 01:09:25,560 --> 01:09:26,750 Pero está absolutamente seguro. 1493 01:09:26,750 --> 01:09:28,319 Entón, vostede non vai recompila-lo, non? 1494 01:09:28,319 --> 01:09:30,399 Cando estaba facendo o seu PHP e código JavaScript, 1495 01:09:30,399 --> 01:09:31,365 nunca chamado de compilación. 1496 01:09:31,365 --> 01:09:33,779 Nunca chamado algo así como facer ou algo así. 1497 01:09:33,779 --> 01:09:34,800 Isto porque é interpretado. 1498 01:09:34,800 --> 01:09:37,319 Entón, cada vez que pasa polo navegador, el pasa por un intérprete. 1499 01:09:37,319 --> 01:09:40,370 E que vai interpretala lo só en tempo real de inmediato para ti. 1500 01:09:40,370 --> 01:09:43,770 Entón, cales son algúns puntos positivos e negativos para ter unha linguaxe interpretada 1501 01:09:43,770 --> 01:09:45,258 e tendo unha linguaxe compilada? 1502 01:09:45,258 --> 01:09:48,240 1503 01:09:48,240 --> 01:09:50,540 Entón compiling-- si, cal é? 1504 01:09:50,540 --> 01:09:52,444 >> Audiencia: Interpretado é máis lento. 1505 01:09:52,444 --> 01:09:53,319 Davin: En que sentido? 1506 01:09:53,319 --> 01:09:57,167 1507 01:09:57,167 --> 01:09:59,091 >> Audiencia: Despois que compilar, non ten 1508 01:09:59,091 --> 01:10:04,400 facer calquera medidas adicionais para realizar Lo, tendo en conta que esta [inaudível]. 1509 01:10:04,400 --> 01:10:05,570 >> Davin: Correcto, perfecto. 1510 01:10:05,570 --> 01:10:08,386 Entón, o que dixo é basicamente, que a compilación, 1511 01:10:08,386 --> 01:10:10,760 cando compilar, ten un chea de custos iniciais, non? 1512 01:10:10,760 --> 01:10:11,760 Está indo a compilalo. 1513 01:10:11,760 --> 01:10:13,750 Pero despois de recompila-lo, o compilador vai optimiza-lo. 1514 01:10:13,750 --> 01:10:14,840 Vai ser rápido. 1515 01:10:14,840 --> 01:10:16,170 Vai basicamente ser tan rápido como pode ser. 1516 01:10:16,170 --> 01:10:18,830 Coa interpretación, nunca ten que custo inicial. 1517 01:10:18,830 --> 01:10:22,260 Pola contra, que vai ser un pouco máis lento cada vez que interpretala lo. 1518 01:10:22,260 --> 01:10:24,940 E vai ter que interpretala la cada momento. 1519 01:10:24,940 --> 01:10:27,114 Entón, en vez de ter este un custo de tempo, agora que está 1520 01:10:27,114 --> 01:10:29,530 terá que interpretala lo cada vez que a páxina é procesada. 1521 01:10:29,530 --> 01:10:31,890 >> Entón intérpretes son boas, porque non ten que recompila-lo, 1522 01:10:31,890 --> 01:10:33,980 pero son malas en que cada cronometrar a páxina é cargada, é 1523 01:10:33,980 --> 01:10:35,771 vai ter que interpretar esta JavaScript. 1524 01:10:35,771 --> 01:10:40,520 E vai a executar un pouco máis lento do que se está a compilalo. 1525 01:10:40,520 --> 01:10:43,044 Permite communicate-- oh, espera. 1526 01:10:43,044 --> 01:10:44,960 Usada para manexar o contido e aparencia. 1527 01:10:44,960 --> 01:10:46,043 Acabamos de falar sobre iso. 1528 01:10:46,043 --> 01:10:47,250 Usa o DOM. 1529 01:10:47,250 --> 01:10:49,930 AJAX, nós imos entrar AJAX nun pouco. 1530 01:10:49,930 --> 01:10:51,520 E entón, é do lado do cliente. 1531 01:10:51,520 --> 01:10:53,110 Entón PHP é do lado do servidor. 1532 01:10:53,110 --> 01:10:54,360 JavaScript é do lado do cliente. 1533 01:10:54,360 --> 01:10:57,780 ¿Qué son positivos para que? 1534 01:10:57,780 --> 01:10:58,280 Di el. 1535 01:10:58,280 --> 01:11:01,480 1536 01:11:01,480 --> 01:11:02,780 É máis rápido, non? 1537 01:11:02,780 --> 01:11:05,282 Porque non ten a-- que é máis rápido. 1538 01:11:05,282 --> 01:11:07,490 Non ten de se comunicar con algún outro dispositivo. 1539 01:11:07,490 --> 01:11:08,790 Se vostede está só no seu cliente, nunca está 1540 01:11:08,790 --> 01:11:11,280 vai ter que ir e ver o que está no servidor 1541 01:11:11,280 --> 01:11:13,150 e, a continuación, informar ou algo parecido. 1542 01:11:13,150 --> 01:11:15,410 Así, do lado do cliente tende a ser un pouco máis rápido. 1543 01:11:15,410 --> 01:11:17,910 >> Gabe: Si, pero iso non significa PHP é 1544 01:11:17,910 --> 01:11:20,440 máis rápido que o JavaScript ou algo do xénero. 1545 01:11:20,440 --> 01:11:23,270 Corren do tipo da mesma velocidade, porque son ambos 1546 01:11:23,270 --> 01:11:24,490 linguaxes interpretadas. 1547 01:11:24,490 --> 01:11:26,680 A cousa que é lento aquí é a solicitude. 1548 01:11:26,680 --> 01:11:28,870 Entón está realmente indo todo o camiño para o Brasil 1549 01:11:28,870 --> 01:11:31,460 para obter unha información que vive alí. 1550 01:11:31,460 --> 01:11:34,590 Pero PHP e JavaScript, eles tipo de correr na mesma velocidade. 1551 01:11:34,590 --> 01:11:37,930 Non é que un é máis rápido que o outro. 1552 01:11:37,930 --> 01:11:40,600 Isto, tamén, pegadinha aquí. 1553 01:11:40,600 --> 01:11:47,338 Así, nunca se fai JavaScript código de máquina, verdadeiro ou falso? 1554 01:11:47,338 --> 01:11:48,590 >> Audiencia: False. 1555 01:11:48,590 --> 01:11:49,090 Gabe: False. 1556 01:11:49,090 --> 01:11:51,298 Ten que facer máquina código porque o código de máquina é 1557 01:11:51,298 --> 01:11:53,210 o único que a máquina entende. 1558 01:11:53,210 --> 01:11:55,800 Aínda que non está compilado, el aínda se fai o código de máquina 1559 01:11:55,800 --> 01:11:59,120 porque o intérprete é só un programa que vai liña por liña 1560 01:11:59,120 --> 01:12:02,170 e transforma esta liña en algo que o ordenador entende. 1561 01:12:02,170 --> 01:12:02,825 OK? 1562 01:12:02,825 --> 01:12:03,325 Con estilo. 1563 01:12:03,325 --> 01:12:08,530 1564 01:12:08,530 --> 01:12:12,890 >> Davin: Aquí é só unha base moi Ola programa JavaScript mundo. 1565 01:12:12,890 --> 01:12:15,590 Entón, eu non sei se-- xa viu iso. 1566 01:12:15,590 --> 01:12:17,630 Pero só ten HTML aquí. 1567 01:12:17,630 --> 01:12:21,020 E no canto de realmente poñer JavaScript nas etiquetas de script, 1568 01:12:21,020 --> 01:12:22,810 así normalmente poñelas cabeza. 1569 01:12:22,810 --> 01:12:24,030 Tes marcas de script. 1570 01:12:24,030 --> 01:12:24,870 Vostede deixala alí. 1571 01:12:24,870 --> 01:12:28,350 Todo o que fixemos aquí é que nós conectados em-- polo que temos ligada nun ficheiro JavaScript 1572 01:12:28,350 --> 01:12:29,137 así. 1573 01:12:29,137 --> 01:12:30,470 E todo feito isto, certo? 1574 01:12:30,470 --> 01:12:34,740 Entón, cando estaba usando jQuery e underscore.js no último p-set, 1575 01:12:34,740 --> 01:12:38,700 non ten toneladas de código en súas marcas de script, na súa cabeza. 1576 01:12:38,700 --> 01:12:41,415 Podería facelo, pero, no canto só está ligando-in. 1577 01:12:41,415 --> 01:12:43,540 E está ligando-o en así como fai co CSS. 1578 01:12:43,540 --> 01:12:50,186 Por iso, só fai máis doado de ler de forma seu código non é como mil liñas de longo 1579 01:12:50,186 --> 01:12:52,310 con toneladas de funcións que non pode estar a usar. 1580 01:12:52,310 --> 01:12:53,518 >> Pola contra, só liga-lo en. 1581 01:12:53,518 --> 01:12:55,050 É compartimenta el. 1582 01:12:55,050 --> 01:13:00,110 É como escribir algún arquivo de cabeceira, e logo, incluíndo o ficheiro de cabeceira no C. 1583 01:13:00,110 --> 01:13:01,620 Pense nisso como este. 1584 01:13:01,620 --> 01:13:02,680 Entón, o que iso fai? 1585 01:13:02,680 --> 01:13:04,560 Ben, iso vai ser executado. 1586 01:13:04,560 --> 01:13:05,410 Vai para advertir. 1587 01:13:05,410 --> 01:13:08,020 Entón, está indo para obter un pouco pop up Ola mundo chamado. 1588 01:13:08,020 --> 01:13:11,420 Pregunta rápida, só verificación de sanidade, de xeito que ve aquí no corpo, 1589 01:13:11,420 --> 01:13:13,160 dicir corpo, HTML aquí. 1590 01:13:13,160 --> 01:13:14,080 O que vén primeiro? 1591 01:13:14,080 --> 01:13:16,864 Eu ver o corpo, HTML aquí, ou podo ver a alerta por primeira vez? 1592 01:13:16,864 --> 01:13:19,828 1593 01:13:19,828 --> 01:13:20,820 >> Audiencia: Alerta. 1594 01:13:20,820 --> 01:13:21,470 >> Davin: Correcto. 1595 01:13:21,470 --> 01:13:22,110 Di alerta. 1596 01:13:22,110 --> 01:13:22,610 Por que? 1597 01:13:22,610 --> 01:13:24,470 >> Audiencia: Por ti ir de arriba abaixo. 1598 01:13:24,470 --> 01:13:25,600 >> Davin: Si. 1599 01:13:25,600 --> 01:13:26,100 Perfecto. 1600 01:13:26,100 --> 01:13:29,207 El di, vai de arriba fondo, o que é absolutamente correcto. 1601 01:13:29,207 --> 01:13:30,790 Está indo a ir de arriba abaixo. 1602 01:13:30,790 --> 01:13:34,790 E en JavaScript, jQuery, ten un función que é onload like, ou preparado, 1603 01:13:34,790 --> 01:13:38,030 e que di, OK, espera ata todo isto HTML procede. 1604 01:13:38,030 --> 01:13:39,580 E, a continuación, chamar o Javascript. 1605 01:13:39,580 --> 01:13:42,190 Porque nós non temos iso aquí, o primeiro que ocorrerá 1606 01:13:42,190 --> 01:13:43,920 se está indo a ir de arriba abaixo. 1607 01:13:43,920 --> 01:13:46,310 Vai bater ese JS chamar, que vai para advertir. 1608 01:13:46,310 --> 01:13:49,510 Despois que premer en Aceptar, que alerta vai. 1609 01:13:49,510 --> 01:13:53,600 A continuación, el vai amosar vostede HTML corpo aquí. 1610 01:13:53,600 --> 01:13:54,590 Nice. 1611 01:13:54,590 --> 01:14:00,880 >> OK, entón só rapidamente, escrita en JavaScript é super rápido. 1612 01:14:00,880 --> 01:14:02,710 A fin de declarar unha variable, nome var. 1613 01:14:02,710 --> 01:14:07,070 Así, en C, ten int i, ten para declarar que tipo de tipo é. 1614 01:14:07,070 --> 01:14:08,040 PHP, $. 1615 01:14:08,040 --> 01:14:08,755 JavaScript, var. 1616 01:14:08,755 --> 01:14:09,630 Nós falamos sobre iso. 1617 01:14:09,630 --> 01:14:11,020 Todo ben, imos alí. 1618 01:14:11,020 --> 01:14:12,510 >> Loops, o mesmo. 1619 01:14:12,510 --> 01:14:14,230 Mesmo. 1620 01:14:14,230 --> 01:14:18,165 Declaracións de función, de maneira así como xa viu en C. 1621 01:14:18,165 --> 01:14:21,290 O único diferente é así, cando comeza a outras linguaxes de programación, 1622 01:14:21,290 --> 01:14:24,780 como cando toma 51 próximo semestre e está facendo OCaml, 1623 01:14:24,780 --> 01:14:26,690 pode tratar con funcións anónimas. 1624 01:14:26,690 --> 01:14:28,240 Entón, iso é o que ten aquí. 1625 01:14:28,240 --> 01:14:31,560 Entón quere poñer en suma, algún tipo de valor da suma. 1626 01:14:31,560 --> 01:14:33,870 Pero só se pode estar facendo iso xa. 1627 01:14:33,870 --> 01:14:37,310 Entón non quere chamalo función suma, darlle unha declaración de función. 1628 01:14:37,310 --> 01:14:39,830 Pola contra, só usalo como unha función anónima. 1629 01:14:39,830 --> 01:14:42,469 E xa viu iso moito. 1630 01:14:42,469 --> 01:14:44,510 Vai ver un exemplo de isto nun par de diapositivas. 1631 01:14:44,510 --> 01:14:45,597 Si, imos ver. 1632 01:14:45,597 --> 01:14:46,430 Gabe: Boa pregunta. 1633 01:14:46,430 --> 01:14:50,660 Cando se pode querer usar unha función anónima aquí? 1634 01:14:50,660 --> 01:14:54,111 Basicamente, cando quere algo, como un evento, a acontecer. 1635 01:14:54,111 --> 01:14:55,860 Entón, cando o rato está premendo, por exemplo, 1636 01:14:55,860 --> 01:14:57,790 quere algunha función a ser chamada. 1637 01:14:57,790 --> 01:15:00,570 Entón pasa ao evento manipulador, vostede pasa ao evento, 1638 01:15:00,570 --> 01:15:02,870 de tipo, a función que quere ser chamado. 1639 01:15:02,870 --> 01:15:04,710 E o que está pasando é como, no extremo 1640 01:15:04,710 --> 01:15:08,757 do día, só un punteiro para esa instrución, para a función. 1641 01:15:08,757 --> 01:15:11,090 Entón, non é como se está pasando o código enteiro, como 1642 01:15:11,090 --> 01:15:12,173 un punteiro para a función. 1643 01:15:12,173 --> 01:15:17,871 E entón, cando alguén fai clic no rato, a continuación, que a función é chamada. 1644 01:15:17,871 --> 01:15:22,340 >> Davin: Arrays, así ter unha declaración de matriz. 1645 01:15:22,340 --> 01:15:23,990 A continuación, unha matriz para poñer as cousas en. 1646 01:15:23,990 --> 01:15:25,769 Ben rápido, o que vai esta imprimir? 1647 01:15:25,769 --> 01:15:27,060 Cal será o terceiro elemento ser? 1648 01:15:27,060 --> 01:15:31,470 1649 01:15:31,470 --> 01:15:32,450 >> Audiencia: "JS". 1650 01:15:32,450 --> 01:15:33,940 >> Davin: Dereito, sería "JS". 1651 01:15:33,940 --> 01:15:35,760 Espere, volver. 1652 01:15:35,760 --> 01:15:37,100 Cal é a lonxitude? 1653 01:15:37,100 --> 01:15:38,117 >> Audiencia: Tres. 1654 01:15:38,117 --> 01:15:38,950 Davin: Tres, non? 1655 01:15:38,950 --> 01:15:40,210 Exactamente o que pensa. 1656 01:15:40,210 --> 01:15:42,072 OK, agora vaia. 1657 01:15:42,072 --> 01:15:43,530 Arrays, pode engadir as cousas para eles. 1658 01:15:43,530 --> 01:15:45,395 Entón podes ir alén seus límites iniciais. 1659 01:15:45,395 --> 01:15:46,740 Só unha cousa a ter presente. 1660 01:15:46,740 --> 01:15:49,760 PHP, Javascript, están un pouco pouco máis indulxente en termos de cousas 1661 01:15:49,760 --> 01:15:50,570 así. 1662 01:15:50,570 --> 01:15:54,260 Obxectos, moi parecido estruturas en C, moi 1663 01:15:54,260 --> 01:15:56,590 como matrices de asociación en PHP. 1664 01:15:56,590 --> 01:15:58,720 Vós todos xa tiñan experiencia con iso. 1665 01:15:58,720 --> 01:16:01,880 Entón, JSON, cando está pasando JSON adiante e cara atrás en-p definir oito, 1666 01:16:01,880 --> 01:16:03,260 ese é o seu obxecto. 1667 01:16:03,260 --> 01:16:06,290 >> Entón, si, exemplo, exemplo rápido real. 1668 01:16:06,290 --> 01:16:07,880 Aquí é un obxecto. 1669 01:16:07,880 --> 01:16:12,700 A forma como fai referencia a este obxecto, por iso ben rápido, 1670 01:16:12,700 --> 01:16:18,630 digamos que eu quería atopar a fóra, OK, o que é o curso? 1671 01:16:18,630 --> 01:16:20,681 E así o nome do obxecto aquí é CS50. 1672 01:16:20,681 --> 01:16:23,180 E, a continuación, se eu tivese un asociativa array, como eu faría iso? 1673 01:16:23,180 --> 01:16:24,580 Eu vou estar usando unha clave, non? 1674 01:16:24,580 --> 01:16:26,030 Entón, eu teño o nome do array. 1675 01:16:26,030 --> 01:16:30,160 Teño soporte, citas, clave, citas finais, soporte de final, 1676 01:16:30,160 --> 01:16:33,610 e que será referencia que elemento dentro da miña matriz asociativa. 1677 01:16:33,610 --> 01:16:37,646 Como fago para referenciado Claro que dentro do meu obxecto? 1678 01:16:37,646 --> 01:16:39,170 Alguén sabe? 1679 01:16:39,170 --> 01:16:40,622 >> Audiencia: [inaudível]. 1680 01:16:40,622 --> 01:16:41,784 >> Davin: Cal é? 1681 01:16:41,784 --> 01:16:42,700 Audiencia: CS50.course. 1682 01:16:42,700 --> 01:16:43,510 Davin: Dereito, si. 1683 01:16:43,510 --> 01:16:45,320 Entón CS50.course. 1684 01:16:45,320 --> 01:16:48,770 Así, o xeito fai referencia a cousas dentro dun obxecto JSON é cun punto. 1685 01:16:48,770 --> 01:16:53,114 >> Audiencia: Tamén pode usar sintaxe de array. 1686 01:16:53,114 --> 01:16:54,050 >> Davin: OK, todo ben. 1687 01:16:54,050 --> 01:16:57,544 >> Gabe: Tamén pode usar o soporte CS50, corda, como comiñas. 1688 01:16:57,544 --> 01:16:59,210 Audiencia: Creo que é o mesmo que o PHP. 1689 01:16:59,210 --> 01:17:00,293 Gabe: É o mesmo. 1690 01:17:00,293 --> 01:17:02,487 Davin: Fine! 1691 01:17:02,487 --> 01:17:03,945 Pero vai ver isto noutros lugares. 1692 01:17:03,945 --> 01:17:08,990 1693 01:17:08,990 --> 01:17:10,480 Si, por iso vai manter. 1694 01:17:10,480 --> 01:17:13,330 Isto é o que eu dixen. 1695 01:17:13,330 --> 01:17:17,840 Así, nun exemplo JavaScript jQuery. 1696 01:17:17,840 --> 01:17:19,440 Polo tanto, este é o meu DOM, non? 1697 01:17:19,440 --> 01:17:22,290 1698 01:17:22,290 --> 01:17:25,410 Ben rápido, entón eu teño un cabeza, Ola mundo, corpo. 1699 01:17:25,410 --> 01:17:26,160 Eu teño un botón. 1700 01:17:26,160 --> 01:17:27,870 Di que "empurrar me", así que quero para empurra-lo. 1701 01:17:27,870 --> 01:17:29,745 E quero facer algo cando é premendo. 1702 01:17:29,745 --> 01:17:31,220 Dereita, a continuación. 1703 01:17:31,220 --> 01:17:34,630 >> Seguro, entón que é o meu JavaScript. 1704 01:17:34,630 --> 01:17:37,790 Entón jQuery é só un máis fácil xeito de escribir JavaScript. 1705 01:17:37,790 --> 01:17:40,920 Polo tanto, este, eo que eu vou amosar vostede próximo, será jQuery, 1706 01:17:40,920 --> 01:17:41,930 son idénticos. 1707 01:17:41,930 --> 01:17:43,990 Entón, eles van facer as mesmas cousas. 1708 01:17:43,990 --> 01:17:45,974 Só jQuery tende a ser un pouco máis fácil. 1709 01:17:45,974 --> 01:17:47,140 As persoas tenden a gusta máis. 1710 01:17:47,140 --> 01:17:48,390 Ten unha morea de funcionalidade. 1711 01:17:48,390 --> 01:17:49,830 Entón, as persoas tenden a usar jQuery. 1712 01:17:49,830 --> 01:17:53,270 Vostede usados ​​jQuery no último p-set. 1713 01:17:53,270 --> 01:17:54,270 Entón, o que vai facer iso? 1714 01:17:54,270 --> 01:17:56,580 O que isto vai JavaScript-- así este é simplemente JavaScript. 1715 01:17:56,580 --> 01:17:57,430 O que vai facer isto? 1716 01:17:57,430 --> 01:18:00,600 1717 01:18:00,600 --> 01:18:03,450 O que vai facer? 1718 01:18:03,450 --> 01:18:04,890 >> Entón, primeiro, ve a xanela onload. 1719 01:18:04,890 --> 01:18:05,390 Non? 1720 01:18:05,390 --> 01:18:06,640 Entón, nós non vimos isto antes. 1721 01:18:06,640 --> 01:18:09,380 Entón, iso vai esperar ata que toda a carga de fiestra. 1722 01:18:09,380 --> 01:18:12,770 Por iso, vai esperar ata a carga HTML, as imaxes 1723 01:18:12,770 --> 01:18:13,770 antes que fai calquera cousa. 1724 01:18:13,770 --> 01:18:16,050 Entón, digamos que o noso DOM procede. 1725 01:18:16,050 --> 01:18:17,270 Todo está alí. 1726 01:18:17,270 --> 01:18:19,080 Entón, o que vai pasar? 1727 01:18:19,080 --> 01:18:19,922 Si? 1728 01:18:19,922 --> 01:18:22,880 >> Audiencia: aparece Button. 1729 01:18:22,880 --> 01:18:25,201 >> Davin: O botón xa está aí. 1730 01:18:25,201 --> 01:18:26,700 Si, entón o botón xa está aí. 1731 01:18:26,700 --> 01:18:31,190 Pero iso vai dicir: OK, se eu premer no botón, 1732 01:18:31,190 --> 01:18:33,650 de xeito que o botón é xa alí, como que etiqueta HTML. 1733 01:18:33,650 --> 01:18:35,980 Espere, volver rapidamente. 1734 01:18:35,980 --> 01:18:39,470 Esta etiqueta dereito aquí é vai ser un botón xa. 1735 01:18:39,470 --> 01:18:40,810 Xa existe un botón. 1736 01:18:40,810 --> 01:18:44,120 Pero, a continuación, o JavaScript tag, aquí mesmo, 1737 01:18:44,120 --> 01:18:46,160 el di, OK, quero para obter polo elemento de identificación, 1738 01:18:46,160 --> 01:18:50,300 así botón de busca só di, OK, quero para mapear esta variable para o botón. 1739 01:18:50,300 --> 01:18:53,120 Entón, esa variable é só un xeito máis doado de acceder a este botón. 1740 01:18:53,120 --> 01:18:57,300 E digo: OK, se eu premer en que botón, entón se eu premer nese elemento, 1741 01:18:57,300 --> 01:18:59,560 e refírese a este elemento botón, se eu premer nel, 1742 01:18:59,560 --> 01:19:00,875 entón eu quero chamar a unha función. 1743 01:19:00,875 --> 01:19:03,500 Aquí é un deses anónimo funcións que estaban falando. 1744 01:19:03,500 --> 01:19:04,840 >> Só ten que conectar para algunha función. 1745 01:19:04,840 --> 01:19:08,840 Dentro desa función, basicamente, algo que xa vimos unha chea, alerta. 1746 01:19:08,840 --> 01:19:10,477 Fai clic no botón de busca. 1747 01:19:10,477 --> 01:19:12,060 Vai basicamente ten un botón. 1748 01:19:12,060 --> 01:19:13,040 Fai clic nel. 1749 01:19:13,040 --> 01:19:14,040 Comeza a alerta. 1750 01:19:14,040 --> 01:19:14,850 X para fóra. 1751 01:19:14,850 --> 01:19:15,754 É iso aí. 1752 01:19:15,754 --> 01:19:16,254 Si? 1753 01:19:16,254 --> 01:19:21,980 >> Audiencia: Entón, se pór o guión [Inaudível], etiqueta script no seu HTML? 1754 01:19:21,980 --> 01:19:24,300 >> Davin: Pode poñer o script straight tag na cabeza 1755 01:19:24,300 --> 01:19:30,667 porque ten este onload. 1756 01:19:30,667 --> 01:19:32,000 Tamén é que ten un clic. 1757 01:19:32,000 --> 01:19:34,166 Por iso, vai esperar ata premer en algo. 1758 01:19:34,166 --> 01:19:37,470 Pero onload é só para ser seguro, para facer se de todo é cargada no seu HTML 1759 01:19:37,470 --> 01:19:38,170 antemán. 1760 01:19:38,170 --> 01:19:39,247 Si? 1761 01:19:39,247 --> 01:19:40,330 Quere dicir algo? 1762 01:19:40,330 --> 01:19:41,080 >> Gabe: [inaudível]. 1763 01:19:41,080 --> 01:19:42,485 Davin: Yeah. 1764 01:19:42,485 --> 01:19:45,426 >> Audiencia: evita Entón onload definir o botón de investigación variable 1765 01:19:45,426 --> 01:19:49,930 por só dicindo document.getElementById Busca botón dot [inaudível]. 1766 01:19:49,930 --> 01:19:52,320 >> Davin: Seguramente, pero, a continuación, súa secuencia só queda enorme. 1767 01:19:52,320 --> 01:19:55,553 Exactamente, polo que esta é só para facer máis doado para ti, si. 1768 01:19:55,553 --> 01:19:56,053 Si? 1769 01:19:56,053 --> 01:19:57,886 >> Audiencia: Onde é que nós crear window.onload? 1770 01:19:57,886 --> 01:19:58,951 Ou document.ready? 1771 01:19:58,951 --> 01:20:00,590 >> Davin: Si, existe. 1772 01:20:00,590 --> 01:20:02,094 Si, alí está, eu verifiquei. 1773 01:20:02,094 --> 01:20:03,710 >> Gabe: Non para que se preocupan. 1774 01:20:03,710 --> 01:20:06,970 >> Davin: OK, entón eu vou para dicirlle de calquera maneira. 1775 01:20:06,970 --> 01:20:11,005 Entón, basicamente, só en xeral, de xeito window.onload espera ata que o seu DOM, todo 1776 01:20:11,005 --> 01:20:12,180 seu HTML, cargas. 1777 01:20:12,180 --> 01:20:13,513 El espera ata que a súa carga de imaxes. 1778 01:20:13,513 --> 01:20:14,930 El espera ata que todo cargas. 1779 01:20:14,930 --> 01:20:18,410 document.ready, el só espera ata que as súas cargas DOM. 1780 01:20:18,410 --> 01:20:22,190 Unha vez que o HTML é todo o que existe, xa que o DOM está aí, comeza a funcionar. 1781 01:20:22,190 --> 01:20:23,400 Esa é a única diferenza. 1782 01:20:23,400 --> 01:20:24,700 >> Gabe: sanidade rápida confía aquí. 1783 01:20:24,700 --> 01:20:29,060 Entón, iso se pode ver tipo de como unha liña de código, non? 1784 01:20:29,060 --> 01:20:33,600 Porque é window.onload é igual a unha morea de cousas. 1785 01:20:33,600 --> 01:20:39,030 Cando JavaScript le este, verdadeiro ou falsa, a función é executada. 1786 01:20:39,030 --> 01:20:40,020 Falso. 1787 01:20:40,020 --> 01:20:40,920 OK? 1788 01:20:40,920 --> 01:20:44,470 Que pasa aquí, está só de paso este funcionar como funcións anónimas 1789 01:20:44,470 --> 01:20:45,300 para Window. 1790 01:20:45,300 --> 01:20:48,480 E entón, cando é que vai para realmente comezar executado? 1791 01:20:48,480 --> 01:20:49,600 Cando as cargas de ventá. 1792 01:20:49,600 --> 01:20:50,420 Este é un evento. 1793 01:20:50,420 --> 01:20:52,460 Entón, iso é cousa t jus estamos falando antes, non? 1794 01:20:52,460 --> 01:20:54,580 Así, cando o evento ocorrer, a función pasa. 1795 01:20:54,580 --> 01:20:55,746 Mesmo co onclick. 1796 01:20:55,746 --> 01:20:59,510 1797 01:20:59,510 --> 01:21:03,130 >> Davin: OK, entón alguén colleu afastado o document.ready. 1798 01:21:03,130 --> 01:21:04,698 Pero este será o same-- exacta 1799 01:21:04,698 --> 01:21:06,864 Audiencia: O sinal de dólar, que é un document.ready. 1800 01:21:06,864 --> 01:21:07,710 Iso é unha ligazón. 1801 01:21:07,710 --> 01:21:08,501 >> Davin: Ah, que é iso? 1802 01:21:08,501 --> 01:21:10,880 1803 01:21:10,880 --> 01:21:15,500 OK, entón iso significa document.ready, acceso directo. 1804 01:21:15,500 --> 01:21:19,660 Pero esta é a mesma que window.OnLoad excepto para que pouca diferenza 1805 01:21:19,660 --> 01:21:20,680 Eu lle falei. 1806 01:21:20,680 --> 01:21:21,870 E este é jQuery. 1807 01:21:21,870 --> 01:21:25,190 Polo tanto, este é o mesmo coisa-- este é JavaScript. 1808 01:21:25,190 --> 01:21:29,500 Este é só-- algúns cren del como un peso máis lixeiro, elegante versión 1809 01:21:29,500 --> 01:21:32,370 que ten moita funcionalidade que probablemente estará usando. 1810 01:21:32,370 --> 01:21:34,500 Entón, iso fai exactamente o mesmo. 1811 01:21:34,500 --> 01:21:37,110 >> Entón as cousas de tipo de apuntar. 1812 01:21:37,110 --> 01:21:40,364 Así, noutro exemplo, tivo document.getElementById, 1813 01:21:40,364 --> 01:21:42,280 por iso, tivemos esa longa cadea que se ve 1814 01:21:42,280 --> 01:21:44,290 o elemento por identificador que ten. 1815 01:21:44,290 --> 01:21:46,470 Iso é substituída por esta chamada aquí. 1816 01:21:46,470 --> 01:21:50,860 Entón ve o sinal de dólar, entón ve citas, hashtag. 1817 01:21:50,860 --> 01:21:52,370 Hashtag é sempre un selector. 1818 01:21:52,370 --> 01:21:54,730 Ela di, OK, isto ten que ver cun ID. 1819 01:21:54,730 --> 01:21:56,120 Cal é o selector para unha clase? 1820 01:21:56,120 --> 01:21:57,190 >> Audiencia: Dot. 1821 01:21:57,190 --> 01:21:57,960 >> Davin: Dot, seguro. 1822 01:21:57,960 --> 01:22:01,950 Se está indo só para seleccionar unha etiqueta, o que é? 1823 01:22:01,950 --> 01:22:03,310 É só o tag, exactamente. 1824 01:22:03,310 --> 01:22:05,560 E podería usar isto aquí, tamén. 1825 01:22:05,560 --> 01:22:08,560 >> Gabe: E por tag, queremos dicir como div, por exemplo, ou na cabeza. 1826 01:22:08,560 --> 01:22:11,500 >> Davin: Ou corpo ou p ou nada parecido, si. 1827 01:22:11,500 --> 01:22:14,390 Entón, aquí, OK, en vez de dicir document.getElementById, 1828 01:22:14,390 --> 01:22:16,500 esta é só a exacta mesmo. 1829 01:22:16,500 --> 01:22:17,990 Só no jQuery, é máis curto. 1830 01:22:17,990 --> 01:22:19,860 Polo tanto, é máis sinxelo. 1831 01:22:19,860 --> 01:22:23,420 Entón, non máis onclick, basta con premer. 1832 01:22:23,420 --> 01:22:26,320 función jQuery, chamar esa función. 1833 01:22:26,320 --> 01:22:27,580 Alerta é exactamente o mesmo. 1834 01:22:27,580 --> 01:22:29,452 Polo tanto, é un pouco menor, ou pouco 1835 01:22:29,452 --> 01:22:32,410 máis curto, un pobo pouco bit-- pensar é un pouco máis fácil de escribir, 1836 01:22:32,410 --> 01:22:34,600 un pouco máis fácil de entender. 1837 01:22:34,600 --> 01:22:35,640 Pero iso é jQuery. 1838 01:22:35,640 --> 01:22:37,887 Unha morea de xente estar un pouco pouco confuso e preocupado 1839 01:22:37,887 --> 01:22:40,220 e eles pensan, OK, jQuery é diferente do JavaScript. 1840 01:22:40,220 --> 01:22:42,136 Teño que recordar estes dúas cousas diferentes. 1841 01:22:42,136 --> 01:22:42,740 Non é. 1842 01:22:42,740 --> 01:22:45,315 Quero dicir, é unha sintaxe distinta. 1843 01:22:45,315 --> 01:22:46,970 Pero jQuery é JavaScript. 1844 01:22:46,970 --> 01:22:50,050 É só un parecer mellor versión que 1845 01:22:50,050 --> 01:22:51,967 pode ser máis fácil comprender que as persoas empregan. 1846 01:22:51,967 --> 01:22:53,716 Gabe: Si, para ser Honesto, que cifrão 1847 01:22:53,716 --> 01:22:57,240 que ve no jQuery, iso é só o nome dunha función que define jQuery. 1848 01:22:57,240 --> 01:22:58,614 El non ten nada de especial. 1849 01:22:58,614 --> 01:23:03,140 É só o nome dunha función, así como podería definir cifrão. 1850 01:23:03,140 --> 01:23:05,670 >> Davin: Si, entón falamos sobre isto. 1851 01:23:05,670 --> 01:23:06,680 Algunhas cousas útiles. 1852 01:23:06,680 --> 01:23:10,414 Eu estaba mirando para os antigos quizzes. 1853 01:23:10,414 --> 01:23:13,080 Nos últimos dous cuestionarios, eles teñen tiven que usar cousas como esta. 1854 01:23:13,080 --> 01:23:15,230 Así document.ready, así asegurarse de que todo está 1855 01:23:15,230 --> 01:23:17,410 cargada antes de comezar a facer as cousas. 1856 01:23:17,410 --> 01:23:20,120 Seleccione un ID ou seleccione unha clase, el acabara de 1857 01:23:20,120 --> 01:23:24,020 Cita ser dot algunha clase, citas final. 1858 01:23:24,020 --> 01:23:26,580 Enviar, por iso, se está envío dun formulario e chamada 1859 01:23:26,580 --> 01:23:28,830 esa función tras o formulario envía. 1860 01:23:28,830 --> 01:23:34,210 Value, entón imos dicir que eu tiña unha forma submisión, como un nome de usuario, un correo-e, 1861 01:23:34,210 --> 01:23:34,950 é igual. 1862 01:23:34,950 --> 01:23:36,010 Eu tiña unha caixa de texto. 1863 01:23:36,010 --> 01:23:37,670 Entón, eu estou escribindo en que a caixa de texto. 1864 01:23:37,670 --> 01:23:42,170 Ben, se quere obter o valor fóra desa caixa de texto, usa dot val. 1865 01:23:42,170 --> 01:23:44,050 E entón, aquí abaixo, dot HTML é a mesma 1866 01:23:44,050 --> 01:23:47,710 é como documento dot getElementByID dot innerHTML. 1867 01:23:47,710 --> 01:23:50,890 Entón, iso vai volver vostede o código HTML que ID. 1868 01:23:50,890 --> 01:23:55,080 Aquí, só usar algún ID ou calquera punto HTML. 1869 01:23:55,080 --> 01:23:56,930 Isto vai ter o código HTML ese elemento. 1870 01:23:56,930 --> 01:24:00,130 Se quixese entón cambiar isto HTML, pode pasalo algo. 1871 01:24:00,130 --> 01:24:05,600 Entón sería como HTML punto, e, a continuación, dentro, citas, novo HTML ou algo así. 1872 01:24:05,600 --> 01:24:07,490 >> Gabe: OK, entón AJAX. 1873 01:24:07,490 --> 01:24:10,347 Realmente quere entender AJAX moi ben. 1874 01:24:10,347 --> 01:24:12,430 Entón, quero que vostedes AJAX entender moi ben. 1875 01:24:12,430 --> 01:24:14,221 Porque se fai iso, está moi ben indo 1876 01:24:14,221 --> 01:24:16,810 para entender todo o que ten que ver con HTTP, PHP, 1877 01:24:16,810 --> 01:24:21,080 JavaScript porque todos ven xunto en AJAX. 1878 01:24:21,080 --> 01:24:25,130 AJAX non é unha linguaxe. 1879 01:24:25,130 --> 01:24:27,000 AJAX é unha técnica. 1880 01:24:27,000 --> 01:24:31,690 E el usa moitas ferramentas diferentes. 1881 01:24:31,690 --> 01:24:35,090 AJAX significa XML JavaScript asíncrono. 1882 01:24:35,090 --> 01:24:36,730 Así, o método, a lingua, os datos. 1883 01:24:36,730 --> 01:24:40,610 >> Así, a principal linguaxe que usamos en AJAX para accionar todo 1884 01:24:40,610 --> 01:24:42,830 e para xestionar todo máis tarde é JavaScript. 1885 01:24:42,830 --> 01:24:45,160 É por iso que se relaciona moi preto de JavaScript. 1886 01:24:45,160 --> 01:24:49,810 E, a continuación, é asíncrono porque non facelo 1887 01:24:49,810 --> 01:24:51,980 todo dunha vez cando estamos cargando a páxina. 1888 01:24:51,980 --> 01:24:57,190 Esta é a única cousa que podemos facer cousas tipo de en paralelo. 1889 01:24:57,190 --> 01:24:59,725 A principal idea detrás AJAX é que quere 1890 01:24:59,725 --> 01:25:02,170 Lo para obter unha información específica. 1891 01:25:02,170 --> 01:25:06,450 Por exemplo, cando está escribindo novo nome de usuario cando rexistrar un nome de usuario, 1892 01:25:06,450 --> 01:25:08,520 meu nome de usuario é abc123. 1893 01:25:08,520 --> 01:25:11,671 E despois, ao final do forma, ten que premer en Enviar. 1894 01:25:11,671 --> 01:25:14,420 E tiña que ir ao servidor, e, a continuación, comprobar se na base de datos, 1895 01:25:14,420 --> 01:25:15,594 abc123 xa está aí. 1896 01:25:15,594 --> 01:25:18,510 E se el xa está aí, el di: nome de usuario xa na base de datos. 1897 01:25:18,510 --> 01:25:21,010 E, ten que cubrir o formulario completo de novo. 1898 01:25:21,010 --> 01:25:23,110 E foi moi, moi malo. 1899 01:25:23,110 --> 01:25:25,440 >> E entón a xente di, OK, por que non podemos simplemente 1900 01:25:25,440 --> 01:25:29,560 facer un pequeno solicitude HTTP para só comprobar a ver se o usuario está na base de datos 1901 01:25:29,560 --> 01:25:32,080 antes de que o usuario tiña que enviar o formulario enteiro? 1902 01:25:32,080 --> 01:25:36,350 Así, por exemplo, cando o usuario remata a dixitación abc123, 1903 01:25:36,350 --> 01:25:39,660 imos só ir ao servidor un pouco bit e é só incorporarse un verdadeiro ou falso 1904 01:25:39,660 --> 01:25:43,080 dende o servidor para ver se que é un nome de usuario ou non válido. 1905 01:25:43,080 --> 01:25:49,250 OK, entón iso é un dos principais usa AJAX aínda hoxe. 1906 01:25:49,250 --> 01:25:52,130 >> Davin: Entón ben rápido, en unha chamada Ajax no jQuery, 1907 01:25:52,130 --> 01:25:54,770 podería significar que Quere que sexa síncrona. 1908 01:25:54,770 --> 01:25:56,330 Non debe facelo. 1909 01:25:56,330 --> 01:25:57,640 Pero pode facelo. 1910 01:25:57,640 --> 01:25:59,277 E se fixo iso, o que acontecería? 1911 01:25:59,277 --> 01:26:01,610 Ben, por exemplo, cando está recibindo noticias ou o que quere, 1912 01:26:01,610 --> 01:26:05,464 o seu navegador está indo só para esperar ata que toda a chamada está completa 1913 01:26:05,464 --> 01:26:08,130 en vez de deixar facer outra as cousas dereito tras fai clic nel. 1914 01:26:08,130 --> 01:26:14,560 1915 01:26:14,560 --> 01:26:17,115 >> Gabe: Non está pasando máis. 1916 01:26:17,115 --> 01:26:19,681 Meu Deus. 1917 01:26:19,681 --> 01:26:20,180 Sentímolo! 1918 01:26:20,180 --> 01:26:22,810 1919 01:26:22,810 --> 01:26:23,601 Si. 1920 01:26:23,601 --> 01:26:25,350 "No pasado, o cliente necesitaba solicitude 1921 01:26:25,350 --> 01:26:26,840 todo o contido dun sitio web ". 1922 01:26:26,840 --> 01:26:28,210 Iso é o que eu dixen. 1923 01:26:28,210 --> 01:26:30,070 Ela nos permite enviar GET ou POST adicional 1924 01:26:30,070 --> 01:26:32,140 solicitudes sen ter para recargar o noso navegador. 1925 01:26:32,140 --> 01:26:34,806 Así, ao final do día, estamos realmente facendo un solicitudes HTTP 1926 01:26:34,806 --> 01:26:35,740 aquí, usando JavaScript. 1927 01:26:35,740 --> 01:26:39,700 Porque antes, nós só usan JavaScript para cambiar o código HTML que xa veu. 1928 01:26:39,700 --> 01:26:43,110 E agora, podemos usalo para facer a interface cos servidores web tamén. 1929 01:26:43,110 --> 01:26:46,140 O xeito como isto ocorre é que temos o cliente. 1930 01:26:46,140 --> 01:26:47,340 Davin é un cliente. 1931 01:26:47,340 --> 01:26:50,797 E ten todo o JavaScript correndo porque HTML é burro. 1932 01:26:50,797 --> 01:26:51,630 JavaScript é intelixente. 1933 01:26:51,630 --> 01:26:54,690 Entón Davin Davin ten a súa intelixente parte e súa parte mudo. 1934 01:26:54,690 --> 01:26:57,590 Vai usar a súa parte intelixente agora. 1935 01:26:57,590 --> 01:27:00,860 Vai usar JavaScript a solicitude, por exemplo, 1936 01:27:00,860 --> 01:27:04,340 se abc123 é en a base de datos ou non. 1937 01:27:04,340 --> 01:27:08,450 >> Entón Davin, por favor, só enviádeme unha solicitude HTTP. 1938 01:27:08,450 --> 01:27:09,197 Grazas. 1939 01:27:09,197 --> 01:27:10,530 Así, el acaba de enviar unha solicitude HTTP. 1940 01:27:10,530 --> 01:27:11,270 Ve iso? 1941 01:27:11,270 --> 01:27:14,700 E iso é só o mesmo camiño que calquera solicitude HTTP é enviado. 1942 01:27:14,700 --> 01:27:16,830 O navegador, Google Chrome ou algo así, é 1943 01:27:16,830 --> 01:27:19,570 vai ver que Davin de intentando enviar unha solicitude HTTP, 1944 01:27:19,570 --> 01:27:20,930 vai axuda-hm algo. 1945 01:27:20,930 --> 01:27:23,950 E iso está indo a ir todo o camiño para o servidor. 1946 01:27:23,950 --> 01:27:27,370 Agora, o servidor vai ter PHP aquí, ou calquera outra lingua. 1947 01:27:27,370 --> 01:27:29,990 Así como nunha solicitude HTTP normal. 1948 01:27:29,990 --> 01:27:31,950 É practicamente unha solicitude HTTP normal. 1949 01:27:31,950 --> 01:27:33,658 >> E entón, o servidor vai dicir, OK, 1950 01:27:33,658 --> 01:27:37,270 Davin me quere para comprobar se este abc123 é na base de datos. 1951 01:27:37,270 --> 01:27:38,310 Vaia falar co modelo. 1952 01:27:38,310 --> 01:27:41,310 O modelo di que non é. abc123 é un bo nome de usuario. 1953 01:27:41,310 --> 01:27:47,940 E, a continuación, o servidor web vai usar o PHP para facer algún tipo de ficheiro. 1954 01:27:47,940 --> 01:27:52,280 Podería ser, literalmente, só un ficheiro que contén "si" na mesma, ou "non, 1955 01:27:52,280 --> 01:27:53,315 ou algo parecido. 1956 01:27:53,315 --> 01:27:54,190 Podería ser calquera arquivo. 1957 01:27:54,190 --> 01:27:57,080 >> Pode ser como eu vou Davin enviar unha imaxe dun pato 1958 01:27:57,080 --> 01:28:01,200 se é na base de datos e enviar unha imaxe dun hamster 1959 01:28:01,200 --> 01:28:02,420 se non é na base de datos. 1960 01:28:02,420 --> 01:28:04,294 Iso sería unha especie de idiota, pero el vai traballar. 1961 01:28:04,294 --> 01:28:07,030 OK, entón eu enviar un pato para Davin. 1962 01:28:07,030 --> 01:28:08,150 Davin teño un pato. 1963 01:28:08,150 --> 01:28:13,330 E agora, quen vai para xestionar o pato? 1964 01:28:13,330 --> 01:28:16,390 Parte intelixente da Davin novo, así JavaScript, non? 1965 01:28:16,390 --> 01:28:18,620 JavaScript enviou o solicitude, e JavaScript 1966 01:28:18,620 --> 01:28:22,300 vai recibir a petición e interpretala lo de algunha maneira. 1967 01:28:22,300 --> 01:28:26,630 >> E, neste sentido, que vai dicir, OK, se pato entón eu son bo. 1968 01:28:26,630 --> 01:28:30,770 Se hamster, entón eu vou é dicir, non, nome de usuario xa 1969 01:28:30,770 --> 01:28:31,970 existe na base de datos. 1970 01:28:31,970 --> 01:28:33,845 Pero, xeralmente, non está enviará un pato. 1971 01:28:33,845 --> 01:28:36,740 Está indo a enviar algo un pouco máis intelixente. 1972 01:28:36,740 --> 01:28:40,320 E o que usamos é XML. 1973 01:28:40,320 --> 01:28:42,690 E, máis recentemente, usan JSON. 1974 01:28:42,690 --> 01:28:45,629 JSON é só JavaScript Object Notation, que 1975 01:28:45,629 --> 01:28:47,670 é basicamente recibe un todo obxecto JavaScript. 1976 01:28:47,670 --> 01:28:50,820 E poñelas nun arquivo, así como ese obxecto CS50 que vostedes viron. 1977 01:28:50,820 --> 01:28:53,090 Poñelas nun arquivo, e envialo ao longo Davin. 1978 01:28:53,090 --> 01:28:55,850 >> Polo tanto, neste caso, eu o faría facer un obxecto JavaScript 1979 01:28:55,850 --> 01:28:59,570 e só dicir, usuario existe, si. 1980 01:28:59,570 --> 01:29:01,630 Ou usuario existe, non. 1981 01:29:01,630 --> 01:29:02,810 E envialo de volta para el. 1982 01:29:02,810 --> 01:29:03,830 E por JSON? 1983 01:29:03,830 --> 01:29:07,330 Porque a persoa quen está a recibir este é 1984 01:29:07,330 --> 01:29:10,030 vai utilizar JavaScript para xestionar a resposta. 1985 01:29:10,030 --> 01:29:14,970 E JavaScript funciona tan ben porque el chámase JavaScript Object Notation. 1986 01:29:14,970 --> 01:29:15,470 Non? 1987 01:29:15,470 --> 01:29:19,660 Así, pode simplemente chamar unha función e obter este obxecto agradable desde a resposta. 1988 01:29:19,660 --> 01:29:22,890 E, a continuación, que vai saber se que o usuario está na base de datos ou non. 1989 01:29:22,890 --> 01:29:25,230 >> Entón ve, todo isto que vén xuntos no servidor web, 1990 01:29:25,230 --> 01:29:28,450 e despois hai un HTTP á petición e unha resposta HTTP e todo. 1991 01:29:28,450 --> 01:29:30,600 Entón, asegúrese de caras comprender esta chamada AJAX 1992 01:29:30,600 --> 01:29:37,260 porque axuda a comprender todo dos conceptos que estamos a falar. 1993 01:29:37,260 --> 01:29:40,260 >> Entón, aquí está un exemplo de AJAX con jQuery. 1994 01:29:40,260 --> 01:29:42,130 E aquí, o que facemos con get JSON. 1995 01:29:42,130 --> 01:29:45,660 Polo tanto, non estamos tratando de obter unha imaxe dun gato aquí, ou un pato. 1996 01:29:45,660 --> 01:29:48,110 Estamos tratando de obter un arquivo JSON. 1997 01:29:48,110 --> 01:29:51,184 E entón imos esperar ata está feito, punto fixo. 1998 01:29:51,184 --> 01:29:52,850 Isto significa que eu estou esperando a resposta. 1999 01:29:52,850 --> 01:29:54,180 Pode levar un pouco. 2000 01:29:54,180 --> 01:29:56,360 Entón, vostede ve un pouco de carga. 2001 01:29:56,360 --> 01:29:59,340 Se quere facelo na súa páxina web. 2002 01:29:59,340 --> 01:30:01,440 Entón dot feito, e entón o que acontece cando está feito? 2003 01:30:01,440 --> 01:30:04,040 Vostede pasa un anónimo función, así como vimos antes. 2004 01:30:04,040 --> 01:30:07,800 Porque feito é un evento, só como facer clic nun rato ou o que quere, 2005 01:30:07,800 --> 01:30:08,710 para jQuery. 2006 01:30:08,710 --> 01:30:13,710 Entón pasa nesta función con datos, textos, estado, e jqXHR. 2007 01:30:13,710 --> 01:30:15,790 E, basicamente, é iso só algunhas variables 2008 01:30:15,790 --> 01:30:22,160 que pode usar máis tarde, para ter o estado da solicitude HTTP, 2009 01:30:22,160 --> 01:30:24,470 os datos que vai para enviar de volta para ti. 2010 01:30:24,470 --> 01:30:28,740 Entón podes, máis tarde, interpretala lo e facer algo significativo con el. 2011 01:30:28,740 --> 01:30:30,240 E se non funciona, cando pode-lo falla? 2012 01:30:30,240 --> 01:30:33,780 Ben, cando a solicitude HTTP dá -lle un 500 ou algo parecido. 2013 01:30:33,780 --> 01:30:37,420 A continuación, el vai dicirlle a estado, que tipo de fallo que foi, 2014 01:30:37,420 --> 01:30:38,420 e todo tipo de cousas. 2015 01:30:38,420 --> 01:30:40,630 Vostede ten que ter seguro para xestionar ambos casos, 2016 01:30:40,630 --> 01:30:42,770 en caso contrario, o programa vai a tolemia. 2017 01:30:42,770 --> 01:30:45,820 >> Davin: Entón, si, este é exactamente o que viu no seu último p-set. 2018 01:30:45,820 --> 01:30:49,720 A chamada real AJAX está no get JSON. 2019 01:30:49,720 --> 01:30:50,587 Esa é a chamada. 2020 01:30:50,587 --> 01:30:52,920 E entón, punto fixo é como el verifica se é exitoso. 2021 01:30:52,920 --> 01:30:55,620 Se é exitoso, quere de facer algo cos datos. 2022 01:30:55,620 --> 01:30:59,290 Recibe de volta a partir dese Datos de solicitude JSON. 2023 01:30:59,290 --> 01:31:00,600 Isto é o que recibe de volta. 2024 01:31:00,600 --> 01:31:04,470 Entón, se lembrar da súa p-set, moitos de vostedes eran como soporte de datos i 2025 01:31:04,470 --> 01:31:06,302 ou o que quere, conexión de puntos ou título. 2026 01:31:06,302 --> 01:31:08,260 O que quere que está volvendo sempre que o JSON, independentemente 2027 01:31:08,260 --> 01:31:11,020 os campos son nese obxecto JSON, iso é o que está quedando atrás. 2028 01:31:11,020 --> 01:31:12,394 Datos é o que está quedando atrás. 2029 01:31:12,394 --> 01:31:15,510 Estado do texto, só algo que permite que vostede sabe o que pasou. 2030 01:31:15,510 --> 01:31:20,570 E entón, o jqXHR, iso é só a solicitude HTTP XML jQuery. 2031 01:31:20,570 --> 01:31:21,990 Isto é só como un obxecto. 2032 01:31:21,990 --> 01:31:23,932 E, a continuación, falla, así como Gabe dixo. 2033 01:31:23,932 --> 01:31:27,140 Gabe: No noso pequeno exemplo de abc123 só para comprobar que o que está na base de datos 2034 01:31:27,140 --> 01:31:32,260 ou non, os datos sería algo que faría, se o nome do usuario dot datos existen, 2035 01:31:32,260 --> 01:31:37,720 que é o que o seu PHP xerado para vostede, se o nome do usuario datos dot existe, entón 2036 01:31:37,720 --> 01:31:40,880 Eu estou indo a alertar, user nome xa existe. 2037 01:31:40,880 --> 01:31:44,300 Outra cousa, eu estou indo só para deixar o user proceder o recheo do formulario. 2038 01:31:44,300 --> 01:31:47,860 2039 01:31:47,860 --> 01:31:50,820 OK, seguridade, cool. 2040 01:31:50,820 --> 01:31:52,060 >> Davin: Quere que eu? 2041 01:31:52,060 --> 01:31:54,500 >> Gabe: Me gusta deste. 2042 01:31:54,500 --> 01:31:57,680 Entón, algo que parece familiar. 2043 01:31:57,680 --> 01:31:59,750 Estamos case terminando. 2044 01:31:59,750 --> 01:32:02,670 Polo tanto, este é só o exemplo vostedes viron en clase. 2045 01:32:02,670 --> 01:32:04,860 Estaba usando argv1 aquí. 2046 01:32:04,860 --> 01:32:06,460 Isto é como un argumento da liña de comandos. 2047 01:32:06,460 --> 01:32:09,270 E nós estamos mem copia que para un tapón de tamaño 12. 2048 01:32:09,270 --> 01:32:12,560 Cal é o problema aquí? 2049 01:32:12,560 --> 01:32:13,660 Buffer overflow! 2050 01:32:13,660 --> 01:32:15,400 Porque temos un buffer de tamaño 12. 2051 01:32:15,400 --> 01:32:18,400 argv1 pode ter un tamaño de dous mil millóns. 2052 01:32:18,400 --> 01:32:19,960 Nós non facemos ningunha verificación de límites. 2053 01:32:19,960 --> 01:32:24,970 Así, poderiamos copiar unha gran cantidade de memoria. 2054 01:32:24,970 --> 01:32:28,630 E nós imos ser particularmente malo sobre iso. 2055 01:32:28,630 --> 01:32:32,600 O que poderiamos facelo é moi, moi significa, neste caso? 2056 01:32:32,600 --> 01:32:33,278 Si? 2057 01:32:33,278 --> 01:32:36,528 Audiencia: Parte dos dous mil millóns de cousas contén código executable que retorna 2058 01:32:36,528 --> 01:32:38,127 [Inaudível]. 2059 01:32:38,127 --> 01:32:38,710 Gabe: Exactamente. 2060 01:32:38,710 --> 01:32:41,110 Entón ese é o tipo de cousa que as persoas empregan 2061 01:32:41,110 --> 01:32:43,344 para facer o jailbreak un iPhone, por exemplo. 2062 01:32:43,344 --> 01:32:44,260 Entón, este tipo de cousas. 2063 01:32:44,260 --> 01:32:48,610 Porque pode só facer o dispositivo executar calquera código que lle gusta. 2064 01:32:48,610 --> 01:32:50,247 A corrección, para que a corrección é doado. 2065 01:32:50,247 --> 01:32:51,330 Basta comprobar os límites. 2066 01:32:51,330 --> 01:32:53,455 Comprobar a nulidade porque sempre comprobar a nulidade 2067 01:32:53,455 --> 01:32:54,940 cando estamos lidando con cadeas. 2068 01:32:54,940 --> 01:32:57,840 E entón, colle o lonxitude da corda antes. 2069 01:32:57,840 --> 01:33:00,150 E se a cadea lonxitude é unha secuencia válida 2070 01:33:00,150 --> 01:33:03,700 lonxitude, que está dentro 0 e 12, entón estamos ben. 2071 01:33:03,700 --> 01:33:07,144 >> Davin: Se non buscar por null, ben rápido, o que vai pasar? 2072 01:33:07,144 --> 01:33:07,810 Vai SEG fallo. 2073 01:33:07,810 --> 01:33:10,850 Por que será que vai SEG culpa? 2074 01:33:10,850 --> 01:33:12,510 Porque está chamando strlen en null. 2075 01:33:12,510 --> 01:33:13,010 Gabe: Yeah. 2076 01:33:13,010 --> 01:33:16,490 2077 01:33:16,490 --> 01:33:19,630 A verdadeira ou falsa, usando un password é unha boa idea. 2078 01:33:19,630 --> 01:33:20,430 >> Audiencia: False. 2079 01:33:20,430 --> 01:33:21,150 >> Gabe: False. 2080 01:33:21,150 --> 01:33:23,870 Use moitas claves, e grandes, longos. 2081 01:33:23,870 --> 01:33:26,050 Iconas Cadeado garantir a seguridade. 2082 01:33:26,050 --> 01:33:27,080 >> Audiencia: False. 2083 01:33:27,080 --> 01:33:27,749 >> Gabe: False. 2084 01:33:27,749 --> 01:33:28,790 Isto non quere dicir nada. 2085 01:33:28,790 --> 01:33:30,480 É só unha icona. 2086 01:33:30,480 --> 01:33:32,824 SSL protexe contra un home no medio ataque. 2087 01:33:32,824 --> 01:33:33,490 Audiencia: False. 2088 01:33:33,490 --> 01:33:34,110 Gabe: False. 2089 01:33:34,110 --> 01:33:35,355 OK, para que todos aqueles son falsas. 2090 01:33:35,355 --> 01:33:38,324 2091 01:33:38,324 --> 01:33:39,490 Nice. 2092 01:33:39,490 --> 01:33:40,220 [Inaudível] 2093 01:33:40,220 --> 01:33:42,500 Quere falar sobre iso? 2094 01:33:42,500 --> 01:33:43,259 Súa vez. 2095 01:33:43,259 --> 01:33:45,050 Davin: Tipos de ataques, home no medio. 2096 01:33:45,050 --> 01:33:47,134 ¿Que é un home no medio ataque? 2097 01:33:47,134 --> 01:33:48,050 Audiencia: [inaudível]. 2098 01:33:48,050 --> 01:33:51,437 2099 01:33:51,437 --> 01:33:54,020 Davin: Se enviar un HTTP solicitude, eles poderían facelo, non? 2100 01:33:54,020 --> 01:33:57,890 Pero se está enviando HTTPS, eles probablemente non será capaz de facelo. 2101 01:33:57,890 --> 01:33:59,952 Hai moitos puntos ao longo da súa conexión. 2102 01:33:59,952 --> 01:34:00,660 Tes routers. 2103 01:34:00,660 --> 01:34:01,746 Tes servidores DNS. 2104 01:34:01,746 --> 01:34:04,120 Se alguén é capaz de fisicamente ver o que está enviando, 2105 01:34:04,120 --> 01:34:06,140 así que alguén é capaz de realmente chegar entre vostede, 2106 01:34:06,140 --> 01:34:08,840 o cliente eo servidor, e é capaz de ver o que está enviando, 2107 01:34:08,840 --> 01:34:10,298 este é un home no medio ataque. 2108 01:34:10,298 --> 01:34:14,287 Entón, a ver o que está tentando facer que a partir de o servidor, ou é capaz de see-- peor, 2109 01:34:14,287 --> 01:34:16,620 pode ser capaz de ver cookies ou algo parecido. 2110 01:34:16,620 --> 01:34:19,290 >> Así, por exemplo, se non está a usar SSL, el 2111 01:34:19,290 --> 01:34:21,900 Pode ser capaz de ver as cookies de identificación de sesión. 2112 01:34:21,900 --> 01:34:25,460 E iso chámase secuestro de sesión porque ve as cookies de identificación, 2113 01:34:25,460 --> 01:34:28,317 e, a continuación, el é capaz de ir a ese web e finxir ser ti. 2114 01:34:28,317 --> 01:34:31,150 Porque así como en PHP, Lembre cando sesión, o que imos facer? 2115 01:34:31,150 --> 01:34:33,340 Montar ID sesión igual a ID. 2116 01:34:33,340 --> 01:34:34,810 Así que o identifica. 2117 01:34:34,810 --> 01:34:38,300 É por iso que se pode ver a súa carteira e carteira non de todo o mundo. 2118 01:34:38,300 --> 01:34:42,320 >> Ben, se eu son capaz de conseguir ese cookie, entón podo rexistrar en que páxina. 2119 01:34:42,320 --> 01:34:45,380 E entón, eu só podo ver o material e comezar a mercar e vender cousas. 2120 01:34:45,380 --> 01:34:46,800 Entón, iso é o secuestro de sesión. 2121 01:34:46,800 --> 01:34:50,810 Pero non debe ser capaz a-- así Pode utilizar o home no medio ataque 2122 01:34:50,810 --> 01:34:52,290 mesmo se eles están usando SSL. 2123 01:34:52,290 --> 01:34:53,520 Pero non debe ser capaz de facer. 2124 01:34:53,520 --> 01:34:56,580 Se eles están usando SSL, non pode secuestrar sesión. 2125 01:34:56,580 --> 01:34:58,927 Por que? 2126 01:34:58,927 --> 01:35:01,135 Porque todo é criptografía, non? se é criptografía, 2127 01:35:01,135 --> 01:35:03,509 e eu aínda son un home na medio, eu aínda obter os seus datos. 2128 01:35:03,509 --> 01:35:04,279 Iso é bo. 2129 01:35:04,279 --> 01:35:05,070 Pero está cifrado. 2130 01:35:05,070 --> 01:35:07,750 Entón, eu realmente non podo usalo. 2131 01:35:07,750 --> 01:35:09,840 Entón, iso é dous. 2132 01:35:09,840 --> 01:35:11,544 >> Rapidamente, cross web request forgery. 2133 01:35:11,544 --> 01:35:13,960 Isto é só se hai unha ligazón e esa conexión fai algo 2134 01:35:13,960 --> 01:35:14,890 que non pensa que debe facer. 2135 01:35:14,890 --> 01:35:18,150 Así, por exemplo, se a ligazón foi vai mercar accións ou vender accións, 2136 01:35:18,150 --> 01:35:19,360 e non sabía. 2137 01:35:19,360 --> 01:35:22,040 Premeu na ligazón, enviou unha solicitude, comprou 2138 01:35:22,040 --> 01:35:24,240 ou algo que vende non quería facer. 2139 01:35:24,240 --> 01:35:25,120 É iso. 2140 01:35:25,120 --> 01:35:30,720 >> Cross web script, por iso aquí, está pasando na vía q variable, 2141 01:35:30,720 --> 01:35:33,510 en vez de pasar nalgún tipo de valor, quizais q é como un nome. 2142 01:35:33,510 --> 01:35:36,560 Entón, en vez de pasar iguais q Davin ou algo parecido, 2143 01:35:36,560 --> 01:35:38,740 Se non usar HTML caracteres especiais, se 2144 01:35:38,740 --> 01:35:43,100 non escapa a esta para asegurarse de que é OK, entón eu podería pasar no seu lugar, 2145 01:35:43,100 --> 01:35:46,910 imos dicir aquí que eu estou dicindo impresión ou algo así, 2146 01:35:46,910 --> 01:35:51,070 entón eu podería pasar aquí unha chamada de script. 2147 01:35:51,070 --> 01:35:53,140 >> Entón, en vez de só comezando unha variable, 2148 01:35:53,140 --> 01:35:54,960 Eu, entón, realizar esta chamada guión. 2149 01:35:54,960 --> 01:35:57,065 Entón, dentro dese guión chamada, o que fai? 2150 01:35:57,065 --> 01:36:00,190 Documento localización do punto, que vai cambiar a localización do documento. 2151 01:36:00,190 --> 01:36:02,290 Entón, eu estou indo a redireccionar a outro lugar. 2152 01:36:02,290 --> 01:36:08,170 É chamado de bandido en Neste exemplo, moi bo. 2153 01:36:08,170 --> 01:36:10,536 Non se puido pensar na palabra. 2154 01:36:10,536 --> 01:36:12,410 E entón, o que é aínda peor é que eu vou 2155 01:36:12,410 --> 01:36:16,832 para axustar cookie, que é algún variable que teño neste sitio web. 2156 01:36:16,832 --> 01:36:19,040 Eu estou indo a define-la igual para o cookie documento punto. 2157 01:36:19,040 --> 01:36:20,660 Polo tanto, eu vou para roubar o seu cookie. 2158 01:36:20,660 --> 01:36:22,951 E eu estou indo a redireccionar unha información para un sitio 2159 01:36:22,951 --> 01:36:25,120 que non debe estar accedendo. 2160 01:36:25,120 --> 01:36:29,250 E todo isto ocorre porque é non escapar o que xa viu. 2161 01:36:29,250 --> 01:36:29,910 Si? 2162 01:36:29,910 --> 01:36:32,160 >> Audiencia: Entón, só para deixar isto claro, é 2163 01:36:32,160 --> 01:36:37,550 vulnerable.com que é vulnerable a ese. 2164 01:36:37,550 --> 01:36:39,300 Entón, ese enlace pode aparecer en calquera páxina. 2165 01:36:39,300 --> 01:36:42,200 Alguén fai clic nel, vai para vulnerable.com. 2166 01:36:42,200 --> 01:36:43,700 Ten unha cookie para vulnerable.com. 2167 01:36:43,700 --> 01:36:46,670 Imos dicir que o Facebook é vulnerable, tan facebook.com. 2168 01:36:46,670 --> 01:36:48,310 Ten o seu cookie Facebook. 2169 01:36:48,310 --> 01:36:50,925 O que isto está facendo, está vai facebook.com, 2170 01:36:50,925 --> 01:36:53,990 el é inmediatamente redirixido vostede badguy.com, 2171 01:36:53,990 --> 01:36:57,182 pero incluíndo a información de cookie. 2172 01:36:57,182 --> 01:36:59,310 Polo tanto, é unha redirección rápida, pero o seu cookie Facebook 2173 01:36:59,310 --> 01:37:02,572 está incluído no que redirección, e é así que [inaudível]. 2174 01:37:02,572 --> 01:37:04,280 Gabe: Si, hai algunhas cousas moi medios 2175 01:37:04,280 --> 01:37:06,070 que a xente pode facer se hai este. 2176 01:37:06,070 --> 01:37:09,190 Por exemplo, se o Facebook permitiu todo o mundo para cambiar o seu nome de usuario, 2177 01:37:09,190 --> 01:37:11,680 e eles non fixeron ningunha checagens, así 2178 01:37:11,680 --> 01:37:16,810 Pode introducir unha cousa JavaScript que cambia a súa imaxe a un hamster. 2179 01:37:16,810 --> 01:37:22,590 E que inserir o mesmo JavaScript en todo o mundo que ve a súa páxina. 2180 01:37:22,590 --> 01:37:26,400 Entón todo o mundo que ve a súa páxina ten o mesmo en nome do usuario. 2181 01:37:26,400 --> 01:37:30,104 E por un virus, espalla-se exponencialmente. 2182 01:37:30,104 --> 01:37:32,270 Davin: Nós imos saltar o último un, e entón estamos a facer. 2183 01:37:32,270 --> 01:37:34,120 Polo tanto, este é só un exemplo. 2184 01:37:34,120 --> 01:37:36,120 Entón, iso é que non son escapando súa táboa SQL. 2185 01:37:36,120 --> 01:37:37,090 Así, pode deixalo caer. 2186 01:37:37,090 --> 01:37:38,805 Entón quere escapar cousas. 2187 01:37:38,805 --> 01:37:44,010 Ese foi o exemplo anterior co cross web script. 2188 01:37:44,010 --> 01:37:45,430 Sentímolo, pero correu un pouco tarde. 2189 01:37:45,430 --> 01:37:46,870 Mañá, sorry! 2190 01:37:46,870 --> 01:37:48,560 Mañá, temos o horario de oficina. 2191 01:37:48,560 --> 01:37:50,870 Así, o horario de oficina en Cabbot 8: 00-11: 00. 2192 01:37:50,870 --> 01:37:55,240 Os horarios de funcionamento son estrictamente para as preguntas do quiz. 2193 01:37:55,240 --> 01:37:56,587