1 00:00:00,000 --> 00:00:08,070 2 00:00:08,070 --> 00:00:10,430 >> RJ Aquino: Nós só comezar. 3 00:00:10,430 --> 00:00:12,310 Polo tanto, este é un quiz. 4 00:00:12,310 --> 00:00:14,890 Aquí están algunhas informacións de alto nivel. 5 00:00:14,890 --> 00:00:19,915 A páxina sobre a proba é neste URL, xa non CS50.net, aínda que iso 6 00:00:19,915 --> 00:00:21,080 seguirá a funcionar. 7 00:00:21,080 --> 00:00:26,920 É CS50.harvard.edu/quizzes/2013/1. 8 00:00:26,920 --> 00:00:31,070 É a gran páxina Sobre, dicíndolle onde e cando, ou sexa, próximo mércores 9 00:00:31,070 --> 00:00:32,100 nun monte de cuartos. 10 00:00:32,100 --> 00:00:36,120 E ata a próxima Mércores, eu significa aquí a dous días. 11 00:00:36,120 --> 00:00:37,890 Toda esta información está aí. 12 00:00:37,890 --> 00:00:39,110 Pero é acumulativo. 13 00:00:39,110 --> 00:00:43,790 >> Entón, todo desde a primeira metade do ano é potencialmente o cuestionario, 14 00:00:43,790 --> 00:00:50,780 porque non pode realmente facer avanzada cousas en C sen se as condicións e 15 00:00:50,780 --> 00:00:51,920 loops e semellantes. 16 00:00:51,920 --> 00:00:55,580 Pero haberá unha énfase no material cuberto sempre quiz 0, 17 00:00:55,580 --> 00:00:59,570 comezando con estruturas e Arquivo I / O. É tipicamente máis 18 00:00:59,570 --> 00:01:01,620 reto do que quiz 0. 19 00:01:01,620 --> 00:01:03,870 A puntuación media é tipicamente menor. 20 00:01:03,870 --> 00:01:05,980 Estude bastante. 21 00:01:05,980 --> 00:01:09,340 >> Mentres está estudando, non esqueza usar CS50/discuss de publicar as súas preguntas 22 00:01:09,340 --> 00:01:10,830 e ler preguntas doutras persoas. 23 00:01:10,830 --> 00:01:13,550 Entón, se non ten algunha dúbida, faga o login e ler 24 00:01:13,550 --> 00:01:14,580 preguntas dos seus amigos. 25 00:01:14,580 --> 00:01:16,560 Probablemente están boas preguntas. 26 00:01:16,560 --> 00:01:17,730 E responder aos cuestionarios de práctica. 27 00:01:17,730 --> 00:01:20,750 Fomos dando quizzes para sete ou oito anos. 28 00:01:20,750 --> 00:01:22,180 Están todos en liña. 29 00:01:22,180 --> 00:01:25,540 Cuestións futuras son semellantes para vellas cuestións. 30 00:01:25,540 --> 00:01:26,550 É así que facelos. 31 00:01:26,550 --> 00:01:27,740 >> A proba aínda non existe. 32 00:01:27,740 --> 00:01:28,670 Ningún de nós telo visto. 33 00:01:28,670 --> 00:01:32,496 Pero el vai ollar como quizzes anteriores. 34 00:01:32,496 --> 00:01:36,500 Para esta sesión de avaliación, esta non é unha lista exhaustiva de temas. 35 00:01:36,500 --> 00:01:40,740 Non podes só asistir a este e, en seguida, ser perfectamente preparado para o quiz. 36 00:01:40,740 --> 00:01:43,330 Doutro xeito, non sería que moito dun quiz. 37 00:01:43,330 --> 00:01:46,270 E iso non é necesariamente todo o que precisa saber sobre calquera 38 00:01:46,270 --> 00:01:46,970 determinado tema. 39 00:01:46,970 --> 00:01:50,520 Era para expo-lo ás cousas Cubrimos, lembra-lo que 40 00:01:50,520 --> 00:01:53,070 cuberto, e a forma en que cubría. 41 00:01:53,070 --> 00:01:57,030 Pero vai ter que ir máis lonxe e máis profunda cando estuda a dobre comprobación 42 00:01:57,030 --> 00:02:00,230 que sabe todo sobre un determinado tema e que teña cuberto 43 00:02:00,230 --> 00:02:03,320 todos os recunchos que estaban cuberto de clase. 44 00:02:03,320 --> 00:02:07,980 >> As notas do quiz dicirlle para ir ao notas escriba, ver vídeos de clase. 45 00:02:07,980 --> 00:02:10,155 Esta é unha boa forma de ter seguro que ten cubriu todas as súas bases. 46 00:02:10,155 --> 00:02:12,670 47 00:02:12,670 --> 00:02:17,340 Entón, para comezar, cando eu fixen iso diapositivas, eu tente poñer onde atopei 48 00:02:17,340 --> 00:02:18,350 información. 49 00:02:18,350 --> 00:02:22,890 Así, para o ficheiro E /, por exemplo, Semana 7, Luns da charla, eo publicou 50 00:02:22,890 --> 00:02:27,960 Sección 6 e conxunto de problemas todos teñen información sobre File I / O. Fixen 51 00:02:27,960 --> 00:02:28,840 isto para cada tema. 52 00:02:28,840 --> 00:02:33,010 Polo tanto, aqueles diapositivas de título pode ser útil para ti. 53 00:02:33,010 --> 00:02:38,950 >> Polo tanto, temos aquí File I / O. Teña en conta que, en Conxunto de problemas 5, usan fopen, fclose, 54 00:02:38,950 --> 00:02:41,210 fwrite, fread e fseek. 55 00:02:41,210 --> 00:02:48,090 Recuperando 30ish JPEGs e ter redimensiona e mexeu con 56 00:02:48,090 --> 00:02:50,320 bitmaps, ten que estar moi familiarizado con estas funcións 57 00:02:50,320 --> 00:02:51,830 e como eles funcionan. 58 00:02:51,830 --> 00:02:54,420 Se vostede non está familiarizado, definitivamente revisa-los. 59 00:02:54,420 --> 00:02:56,860 E asegúrese de comprender o que os distintos argumentos son, 60 00:02:56,860 --> 00:02:58,260 cando son usados. 61 00:02:58,260 --> 00:03:03,620 >> Pero os erros relacionados a arquivos comúns pode ser preguntado sobre - 62 00:03:03,620 --> 00:03:07,270 ben, se esqueceu de comprobar se fopen realmente traballou antes de ir a 63 00:03:07,270 --> 00:03:08,350 modificar un arquivo. 64 00:03:08,350 --> 00:03:09,760 Isto podería ser malo. 65 00:03:09,760 --> 00:03:13,560 Se esqueciches dun ficheiro fclose que fopened, que é semellante ao 66 00:03:13,560 --> 00:03:14,400 un escape de memoria. 67 00:03:14,400 --> 00:03:15,980 Iso é moi malo. 68 00:03:15,980 --> 00:03:18,670 E esquecendo-se de comprobar se ten chegou ao fin da liña antes de 69 00:03:18,670 --> 00:03:19,790 comezar a escribir para el. 70 00:03:19,790 --> 00:03:22,320 >> Entón, se di, hey, eu estou en a fin do ficheiro. 71 00:03:22,320 --> 00:03:23,750 Dáme máis 5 bytes. 72 00:03:23,750 --> 00:03:27,370 Ben, iso probablemente non vai funciona do xeito que lle espera. 73 00:03:27,370 --> 00:03:30,930 Isto é realmente del para File I / O, porque fixemos tanto del 74 00:03:30,930 --> 00:03:32,300 co conxunto de problemas. 75 00:03:32,300 --> 00:03:36,000 Entón, se entendeu o que estaba a suceder Problema en Set 5, lembre-se das bitmats 76 00:03:36,000 --> 00:03:40,090 e os JPEGs, entón está probablemente todos establecido para File I / O. Se iso é algo 77 00:03:40,090 --> 00:03:44,770 difusa, en definitiva revisar este problema definir e material asociado. 78 00:03:44,770 --> 00:03:51,110 >> As estruturas foron o tema que estaban no liña entre 0 e quiz quiz 1. 79 00:03:51,110 --> 00:03:53,090 Non moi facer a corte para Quiz 0. 80 00:03:53,090 --> 00:03:57,040 Entón, eles van ser sempre en Proba 1, Semana 7, luns. 81 00:03:57,040 --> 00:03:58,150 ¿Que é un struct? 82 00:03:58,150 --> 00:04:00,250 Aquí amosamos unha estrutura. 83 00:04:00,250 --> 00:04:03,140 É como un novo tipo. 84 00:04:03,140 --> 00:04:07,940 É como un recipiente para varios campos. 85 00:04:07,940 --> 00:04:12,970 >> Neste caso, temos declarado un struct alumno que ten dous campos - 86 00:04:12,970 --> 00:04:17,750 unha secuencia que estamos chamando o nome e un int que estamos chamando idade. 87 00:04:17,750 --> 00:04:21,450 Entón, cando eu pasar arredor de estudantes ou eu modificar os estudantes, eu vou ser capaz de 88 00:04:21,450 --> 00:04:24,430 acceder ao seu nome e súa idade. 89 00:04:24,430 --> 00:04:26,670 Imos dar un ollo a un código para iso. 90 00:04:26,670 --> 00:04:29,090 Aquí vemos que teño declarado un estudante s, así como 91 00:04:29,090 --> 00:04:30,300 Declaro calquera variable - 92 00:04:30,300 --> 00:04:32,430 int x, int y, etcétera. 93 00:04:32,430 --> 00:04:34,180 >> Aquí está o alumno s. 94 00:04:34,180 --> 00:04:37,370 Comeza con nada nos seus campos. 95 00:04:37,370 --> 00:04:38,240 Entón, imos define-las. 96 00:04:38,240 --> 00:04:40,681 Define campos dunha estrutura con punto. 97 00:04:40,681 --> 00:04:43,780 Entón, eu dixen aquí que s.name = RJ. 98 00:04:43,780 --> 00:04:46,470 E S.age = 21. 99 00:04:46,470 --> 00:04:48,500 Tamén pode actualizar campos do mesmo xeito que actualiza 100 00:04:48,500 --> 00:04:49,550 o valor dunha variable. 101 00:04:49,550 --> 00:04:53,270 Entón, quero cambiar o meu nome de RJ con sen períodos para RJ escrito o 102 00:04:53,270 --> 00:04:54,540 forma correcta. 103 00:04:54,540 --> 00:04:58,890 Sería s.name = RJ, o mesmo como dixemos orixinalmente. 104 00:04:58,890 --> 00:05:00,030 E entón pode acceder a eles. 105 00:05:00,030 --> 00:05:00,930 >> Entón, nós define-las. 106 00:05:00,930 --> 00:05:01,840 Nós actualizamos eles. 107 00:05:01,840 --> 00:05:03,890 Tamén pode acceder a eles o mesmo camiño. 108 00:05:03,890 --> 00:05:09,330 Entón, aquí, eu estou imprimindo RJ É de 21 anos de idade. 109 00:05:09,330 --> 00:05:14,700 E eu estou accedendo eses valores con s.name e S.age. 110 00:05:14,700 --> 00:05:17,040 De xeito que está accedendo estruturas coa notación de punto. 111 00:05:17,040 --> 00:05:17,850 Yep, cuestionar? 112 00:05:17,850 --> 00:05:21,176 >> Audiencia: Existe unha razón para o foto anterior que non puxo 113 00:05:21,176 --> 00:05:24,848 alumno na liña superior, como typedef alumno struct e despois 114 00:05:24,848 --> 00:05:25,840 alumno ao final? 115 00:05:25,840 --> 00:05:29,040 >> RJ Aquino: Entón, a pregunta era, en ese slide, nós tipicamente vistos 116 00:05:29,040 --> 00:05:32,400 typedef struct nodo e, a continuación, o campos da struct e 117 00:05:32,400 --> 00:05:34,250 a continuación, o nó de palabra. 118 00:05:34,250 --> 00:05:37,790 E como é que aquí eu non dixen, typedef estudante estrutura e, a continuación, o 119 00:05:37,790 --> 00:05:39,820 campos da struct e estudante? 120 00:05:39,820 --> 00:05:44,310 A razón é que eu non teño acceder a ela dentro da estrutura. 121 00:05:44,310 --> 00:05:46,270 Entón, non hai problema en deixar sen un nome. 122 00:05:46,270 --> 00:05:49,210 Podo deixar como un struct anónimo. 123 00:05:49,210 --> 00:05:53,130 >> A razón pola que facelo por listas ligadas e cousas é porque dentro precisa 124 00:05:53,130 --> 00:05:55,360 facer referencia a unha estrela nós struct. 125 00:05:55,360 --> 00:05:58,220 Así, a estrutura ten que ter un nome, para que poida acceder a ela máis tarde. 126 00:05:58,220 --> 00:05:59,540 É un detalle menor. 127 00:05:59,540 --> 00:06:04,750 Pero adoita ver typedef struct chaves, se non necesita 128 00:06:04,750 --> 00:06:08,720 o nome e typedef struct algún nome seguido por chaves se quere 129 00:06:08,720 --> 00:06:09,520 Necesito do nome. 130 00:06:09,520 --> 00:06:12,070 Así que esta é unha boa pregunta. 131 00:06:12,070 --> 00:06:17,000 >> E nese punto, que tenden a modificar estruturas e pasar ao redor de estruturas de 132 00:06:17,000 --> 00:06:18,680 referencia, non por valor. 133 00:06:18,680 --> 00:06:21,940 Entón imos pasar arredor de punteiros para estruturas en vez de pasar ao redor do 134 00:06:21,940 --> 00:06:23,150 instrúe si. 135 00:06:23,150 --> 00:06:28,050 Entón está con moita frecuencia será utilizando neste caso o estudante ou * 136 00:06:28,050 --> 00:06:34,150 struct node * ou nodo * vez a estudantes ou nós. 137 00:06:34,150 --> 00:06:39,350 Entón, aquí, dixen, OK, a variable PTR será o enderezo de s. 138 00:06:39,350 --> 00:06:45,570 Será o punteiro para o alumno RJ 139 00:06:45,570 --> 00:06:48,965 >> Así, podemos chegar a eses campos o mesmo que temos algo. 140 00:06:48,965 --> 00:06:51,460 En primeiro lugar, ID referenciar o punteiro para obter a estrutura. 141 00:06:51,460 --> 00:06:55,530 Isto é * PTR e despois un punto e, a continuación, a idade. 142 00:06:55,530 --> 00:06:58,790 Así, para acceder ao campo, e eu teño actualizado que agora a 22, porque, imos 143 00:06:58,790 --> 00:07:00,860 por exemplo, que era o meu aniversario. 144 00:07:00,860 --> 00:07:03,990 Hai unha sintaxe de acceso utilizando a frecha aquí. 145 00:07:03,990 --> 00:07:07,060 Idade frecha Entón PTR é só o mesmo que * ptr.age. 146 00:07:07,060 --> 00:07:10,150 147 00:07:10,150 --> 00:07:11,550 Agora, iso é algo que vai ter para memorizar e lembrar. 148 00:07:11,550 --> 00:07:15,010 >> Usou moito en pset6, o pset ortográfico. 149 00:07:15,010 --> 00:07:18,350 Pero iso é realmente o que está a suceder por baixo do capó. 150 00:07:18,350 --> 00:07:20,500 É dereferencing o punteiro e logo acceder a ela. 151 00:07:20,500 --> 00:07:21,432 Pregunta? 152 00:07:21,432 --> 00:07:22,682 >> Audiencia: [inaudível]. 153 00:07:22,682 --> 00:07:25,860 154 00:07:25,860 --> 00:07:28,060 >> RJ Aquino: Entón por que estamos usando punteiros como estruturas en vez de o 155 00:07:28,060 --> 00:07:29,500 instrúe a si mesmos? 156 00:07:29,500 --> 00:07:33,740 A razón sería se está pasando unha estrutura para unha función, probablemente 157 00:07:33,740 --> 00:07:36,900 quere pasar en torno a só 4 ou menos bytes que representan o cursor, como o 158 00:07:36,900 --> 00:07:40,375 oposición á 30 ou potencialmente 40 bytes, que son a estrutura. 159 00:07:40,375 --> 00:07:44,410 Entón pasando algo a unha función é máis fácil cando a cousa 160 00:07:44,410 --> 00:07:48,230 é menor en curto. 161 00:07:48,230 --> 00:07:49,074 Pregunta? 162 00:07:49,074 --> 00:07:53,026 >> Audiencia: Pode ter mencionado iso en principio, pero hai 163 00:07:53,026 --> 00:07:56,000 outros diapositivas cara a arriba no [inaudível]? 164 00:07:56,000 --> 00:07:58,960 >> RJ Aquino: Estes diapositivas será despois da sesión de revisión. 165 00:07:58,960 --> 00:08:00,210 Nós imos publicala conxuntamente na web. 166 00:08:00,210 --> 00:08:02,450 167 00:08:02,450 --> 00:08:06,870 Movendo así por diante e movendo lixeiramente máis rápido, imos falar sobre os datos 168 00:08:06,870 --> 00:08:07,350 estruturas. 169 00:08:07,350 --> 00:08:08,040 Hai unha morea. 170 00:08:08,040 --> 00:08:10,080 Cubrimos unha morea deles. 171 00:08:10,080 --> 00:08:12,500 Aquí está o que ten que entender sobre a estrutura de datos. 172 00:08:12,500 --> 00:08:15,590 >> Realmente debe entender nun alto nivel que cada estrutura é. 173 00:08:15,590 --> 00:08:21,190 Pode explicar en inglés para o amigo que non tomou como CS50 174 00:08:21,190 --> 00:08:25,580 estamos organizando os nosos datos e por que estar a usar algo así? 175 00:08:25,580 --> 00:08:26,990 Iso é cousa de unha. 176 00:08:26,990 --> 00:08:29,650 Cousa dous, comprender a posta en marcha. 177 00:08:29,650 --> 00:08:34,270 Así, entender como usar esas cousas en C. E nós imos estar pasando por iso. 178 00:08:34,270 --> 00:08:39,030 >> E, a continuación, cousa de tres sería coñecer a tempos de execución e as limitacións do 179 00:08:39,030 --> 00:08:40,470 varias estruturas que está a usar. 180 00:08:40,470 --> 00:08:44,059 Así, entendo por que usaría un de hash de táboa no canto dunha matriz. 181 00:08:44,059 --> 00:08:49,570 Entender como rápido, en media, acceder unha táboa hash é. 182 00:08:49,570 --> 00:08:54,010 Entender o que as operacións son rápidas en lista ligada, pero lento en matrices e 183 00:08:54,010 --> 00:08:56,080 viceversa. 184 00:08:56,080 --> 00:08:59,780 Entón, para entender iso, vai ter que entender Big-O notación só para saber 185 00:08:59,780 --> 00:09:01,310 como falar sobre estes tipo de cousas. 186 00:09:01,310 --> 00:09:02,700 E imos falar sobre iso. 187 00:09:02,700 --> 00:09:06,040 >> Entón o primeiro, listas ligadas. 188 00:09:06,040 --> 00:09:07,770 Aquí está unha foto de alto nivel dunha lista ligada. 189 00:09:07,770 --> 00:09:08,830 Mostramos iso na clase. 190 00:09:08,830 --> 00:09:11,670 Nós normalmente temos 10 persoas de pé no escenario. 191 00:09:11,670 --> 00:09:16,790 Pero nós temos unha serie de nós, onde cada nó ten un valor e un punteiro 192 00:09:16,790 --> 00:09:18,610 para o seu próximo valor. 193 00:09:18,610 --> 00:09:21,730 Entón, para comezar a partir dun nodo a outro, ten Tan só dicir, me dea o seguinte nodo. 194 00:09:21,730 --> 00:09:22,530 Ten ese nó. 195 00:09:22,530 --> 00:09:23,770 Dáme o seguinte nodo. 196 00:09:23,770 --> 00:09:24,400 Ten ese nó. 197 00:09:24,400 --> 00:09:28,790 Dáme o no seguinte e así por diante ata que non haxa ningún nodo esquerdo. 198 00:09:28,790 --> 00:09:31,850 >> Así, seguen a falar de Lo en un alto nivel. 199 00:09:31,850 --> 00:09:34,100 É moi fácil de engadir cousas nunha lista encadeada. 200 00:09:34,100 --> 00:09:36,010 Se non lle importa a orde, pode só deixar caer 201 00:09:36,010 --> 00:09:36,840 ao comezo. 202 00:09:36,840 --> 00:09:38,520 É tempo constante. 203 00:09:38,520 --> 00:09:39,900 Pero é difícil atopar un valor. 204 00:09:39,900 --> 00:09:43,060 Se estás a facer, é sete na miña lista? 205 00:09:43,060 --> 00:09:44,740 Ten que pasar por cada valor único. 206 00:09:44,740 --> 00:09:45,680 Este é o sete? 207 00:09:45,680 --> 00:09:46,610 Este é o sete? 208 00:09:46,610 --> 00:09:47,770 Este é o sete? 209 00:09:47,770 --> 00:09:48,690 Este é o sete? 210 00:09:48,690 --> 00:09:49,830 Unha e outra vez. 211 00:09:49,830 --> 00:09:51,520 E iso é O (n). 212 00:09:51,520 --> 00:09:53,800 Así, ao estudar para o quiz, compare iso con matrices. 213 00:09:53,800 --> 00:09:57,010 214 00:09:57,010 --> 00:09:58,220 >> Todo ben? 215 00:09:58,220 --> 00:09:59,220 As luces se débil. 216 00:09:59,220 --> 00:10:01,110 Aceptar. 217 00:10:01,110 --> 00:10:02,400 Cando é que unha lista ligada mellor? 218 00:10:02,400 --> 00:10:04,640 Cando é unha matriz mellor? 219 00:10:04,640 --> 00:10:06,670 Entón, imos ollar para algúns códigos. 220 00:10:06,670 --> 00:10:08,960 Aquí é un nodo potencial. 221 00:10:08,960 --> 00:10:09,770 É un struct. 222 00:10:09,770 --> 00:10:12,220 Ten un int n, que será o noso valor. 223 00:10:12,220 --> 00:10:17,780 E ten un nó struct * seguinte, que é a nosa punteiro ao seguinte nodo. 224 00:10:17,780 --> 00:10:23,040 Entón, aquí, podemos ver que pasou colocar un int na nosa nodo. 225 00:10:23,040 --> 00:10:27,850 Pero se esta fose unha lista ligada de carbón estrelas ou unha lista encadeada de coches alegóricos, que 226 00:10:27,850 --> 00:10:28,820 totalmente podería facelo tamén. 227 00:10:28,820 --> 00:10:33,110 >> Teña en conta que na pset6, probablemente tivo un lista ligada de estrelas de char ou só 228 00:10:33,110 --> 00:10:34,360 matrices de caracteres estáticos. 229 00:10:34,360 --> 00:10:37,370 230 00:10:37,370 --> 00:10:39,040 Imos dar un ollo aquí nunha operación. 231 00:10:39,040 --> 00:10:43,570 Por iso, queremos introducir un novo n na nosa lista encadeada. 232 00:10:43,570 --> 00:10:48,940 Comezamos cun punteiro cabeza que é un punteiro para este nodo que ten o 233 00:10:48,940 --> 00:10:53,460 valor de n e un lado dun punteiro que apunta para ese nodo é un valor de 234 00:10:53,460 --> 00:10:57,760 n e un á beira do nulo, xa que é o último nodo. 235 00:10:57,760 --> 00:11:00,440 Así, en interese de tempo, eu vou poñer todo o código na pantalla. 236 00:11:00,440 --> 00:11:03,130 E nós imos atravesa-la algunhas liñas de cada vez. 237 00:11:03,130 --> 00:11:05,790 >> Entón, aquí está o código. 238 00:11:05,790 --> 00:11:07,560 Espero que sexa lexible. 239 00:11:07,560 --> 00:11:11,275 O primeiro que facemos é nós malloc un novo nodo. 240 00:11:11,275 --> 00:11:15,105 Por iso, fai unha ligazón para un novo nodo Non ten nada definido 241 00:11:15,105 --> 00:11:16,450 enriba del aínda. 242 00:11:16,450 --> 00:11:19,580 Nós asegúrese de que o novo nodo non é nulo. 243 00:11:19,580 --> 00:11:22,220 En caso contrario, temos que desistir. 244 00:11:22,220 --> 00:11:27,680 Así, tendo comprobado que, agora establecer os valores no nodo. 245 00:11:27,680 --> 00:11:31,520 Entón poñemos o novo n no noso campo n. 246 00:11:31,520 --> 00:11:36,050 E nós definir o próximo punteiro para ligar a a cabeza orixinal, de xeito que podemos 247 00:11:36,050 --> 00:11:38,900 agora ter inserido este nó na nosa lista. 248 00:11:38,900 --> 00:11:44,600 >> Por último, temos o punto director global ao noso novo nó, de xeito que, se fósemos 249 00:11:44,600 --> 00:11:50,300 comezar a cabeza, estariamos neste novo primeiro nodo no canto de 250 00:11:50,300 --> 00:11:51,560 o antigo primeiro nodo. 251 00:11:51,560 --> 00:11:55,320 E cando sae esta función, o novo nodo variable non existir máis, 252 00:11:55,320 --> 00:11:57,130 pois foi lugar para a función. 253 00:11:57,130 --> 00:11:59,770 Entón este é o estado do mundo. 254 00:11:59,770 --> 00:12:03,570 O noso director xeral apunta para o noso novo primeiro nodo, o que apunta para o noso 255 00:12:03,570 --> 00:12:06,346 primeiro nodo orixinal, que puntos ao nodo despois diso. 256 00:12:06,346 --> 00:12:09,790 >> Esa foi a inserción. 257 00:12:09,790 --> 00:12:12,150 Espero que fose relativamente simple de seguir. 258 00:12:12,150 --> 00:12:14,300 En caso de dúbida, sacar unha foto. 259 00:12:14,300 --> 00:12:17,820 Entón, eu creo que falar de listas ligadas e ollando 260 00:12:17,820 --> 00:12:19,870 código é moi non é útil. 261 00:12:19,870 --> 00:12:23,790 Considerando a ollar a unha imaxe dun conectado lista permite-me a pensar, oh, tan 262 00:12:23,790 --> 00:12:24,970 Eu teño ese nó aquí. 263 00:12:24,970 --> 00:12:28,980 Pero se eu actualizar este punteiro, el acaba desconectado. 264 00:12:28,980 --> 00:12:34,340 E eu esquezo onde o no pasa. 265 00:12:34,340 --> 00:12:35,390 E o código sae. 266 00:12:35,390 --> 00:12:37,830 E ten varios nós que están desconectados. 267 00:12:37,830 --> 00:12:39,970 E non acabar con Árbore que quere. 268 00:12:39,970 --> 00:12:43,320 >> Entón, se deseñar a imaxe e facelo paso a paso, con sorte, vai ver 269 00:12:43,320 --> 00:12:46,840 a orde correcta das cousas en termos de actualizar os punteiros para asegurarse de 270 00:12:46,840 --> 00:12:48,830 que a lista ven xunto. 271 00:12:48,830 --> 00:12:51,240 Insert é relativamente simple. 272 00:12:51,240 --> 00:12:55,210 A unha máis complicada sería inserción nunha lista ordenada. 273 00:12:55,210 --> 00:12:59,980 A función máis complicado é borrar e atopar, así que ollar a través dunha lista de 274 00:12:59,980 --> 00:13:03,030 ver se algo está aí. 275 00:13:03,030 --> 00:13:07,220 Quizais o fixo en pset6 cando ten na súa táboa hash e dixo, 276 00:13:07,220 --> 00:13:10,460 ben, é a palabra mazá na miña lista ligada? 277 00:13:10,460 --> 00:13:11,440 >> Entón, xa pode ter feito isto. 278 00:13:11,440 --> 00:13:15,530 Pero, en definitiva, refrescar a súa memoria e tratar de localizar e reimplementar 279 00:13:15,530 --> 00:13:19,150 reimplementar borrar a unha lista ligada. 280 00:13:19,150 --> 00:13:22,850 Nota lateral Fun, tamén dobremente vinculada listas, onde ten 281 00:13:22,850 --> 00:13:27,490 punteiros que apuntan cara a adiante e cara atrás, de xeito que podería ir ao 282 00:13:27,490 --> 00:13:29,270 preto nó e o no anterior. 283 00:13:29,270 --> 00:13:33,860 E había unha pregunta sobre o do ano pasado proba deste tipo, fala 284 00:13:33,860 --> 00:13:36,190 sobre as listas dobremente ligadas. 285 00:13:36,190 --> 00:13:40,070 >> Agora, iso é unha estrutura que está relativamente familiarizado, porque a maioría 286 00:13:40,070 --> 00:13:42,520 de vostedes probablemente usou en pset6. 287 00:13:42,520 --> 00:13:45,680 Aquí está o que é un pouco menos familiar. 288 00:13:45,680 --> 00:13:51,020 Como unha nota lateral, eu creo que é unha proba sobre todo máis difícil do que quiz 0, porque 289 00:13:51,020 --> 00:13:54,600 as cousas que está facendo, non ter feito tanto. 290 00:13:54,600 --> 00:13:58,100 Para poñer isto doutro xeito, para Quiz 0, vostede escribira unha morea de C. E nós 291 00:13:58,100 --> 00:13:58,880 Pregunta-lle sobre C. 292 00:13:58,880 --> 00:14:02,310 >> Para Proba 1, imos preguntar-lle sobre PHP e JavaScript, o que 293 00:14:02,310 --> 00:14:03,490 non ter escrito tanto. 294 00:14:03,490 --> 00:14:07,590 Imos preguntarlle sobre C-código que non escribise logo, 295 00:14:07,590 --> 00:14:09,130 este material avanzado C. 296 00:14:09,130 --> 00:14:11,520 Entón, en definitiva, a práctica do que cousas falou en charla que 297 00:14:11,520 --> 00:14:15,260 non necesariamente facer sobre o conxunto de problemas. 298 00:14:15,260 --> 00:14:17,870 >> Fala niso, non escribiu unha pila sobre un conxunto de problemas. 299 00:14:17,870 --> 00:14:19,610 Pero foi na charla. 300 00:14:19,610 --> 00:14:22,530 Aquí está a imaxe de alto nivel pilas que mostramos cada ano. 301 00:14:22,530 --> 00:14:26,180 É a pila de bandexas en o comedor Mather. 302 00:14:26,180 --> 00:14:30,570 Nun nivel alto, pilas son un último in, first out estrutura de datos. 303 00:14:30,570 --> 00:14:32,040 Isto significa que está indo para poñer as cousas en - 304 00:14:32,040 --> 00:14:36,400 1, 3, 7, 12, 14, 0 negativo. 305 00:14:36,400 --> 00:14:39,180 O único que eu non podería dixo - negativo 3, 0. 306 00:14:39,180 --> 00:14:40,250 Vostede pon todas esas cousas dentro 307 00:14:40,250 --> 00:14:42,940 E o último que puxo no é a primeira un que vai saír. 308 00:14:42,940 --> 00:14:44,170 >> Entón tes dúas operacións - 309 00:14:44,170 --> 00:14:45,260 push pop. 310 00:14:45,260 --> 00:14:49,180 Todo poñendo en que eu era gesticulando como esta son pulo. 311 00:14:49,180 --> 00:14:52,020 E entón cando chegar no Grab algo ou chegar enriba para incorporarse 312 00:14:52,020 --> 00:14:53,940 algo, que é pop. 313 00:14:53,940 --> 00:14:55,540 Entón, nós estamos indo a aplicar pilas. 314 00:14:55,540 --> 00:14:57,870 E nós lles mostrou en charla uso de arrays. 315 00:14:57,870 --> 00:14:59,550 Pero pode facelas usar listas ligadas. 316 00:14:59,550 --> 00:15:01,770 Unha pila é un conceptual de datos estrutura, non como un 317 00:15:01,770 --> 00:15:03,760 unha aplicación específica. 318 00:15:03,760 --> 00:15:06,420 >> Entón, o que iso parece? 319 00:15:06,420 --> 00:15:07,970 Sería algo máis ou menos coma este. 320 00:15:07,970 --> 00:15:10,840 Vostede tería un tamaño enteiro. 321 00:15:10,840 --> 00:15:16,000 E ten un conxunto de valores que estamos chamando bandexas, porque iso é 322 00:15:16,000 --> 00:15:18,570 o que a imaxe era para nós - int bandexas - 323 00:15:18,570 --> 00:15:21,740 e máis un pouco a capacidade máxima. 324 00:15:21,740 --> 00:15:27,100 Entón, o que levaría Look Like? 325 00:15:27,100 --> 00:15:33,250 Ben, se temos unha pila s, a continuación, para empurrar algo sobre s, obteriamos 326 00:15:33,250 --> 00:15:34,620 o tamaño de s. 327 00:15:34,620 --> 00:15:42,270 E iso sería o seguinte lugar aberto da nosa matriz. 328 00:15:42,270 --> 00:15:50,510 Entón, se temos tres cousas na nosa pila, a continuación, as bandexas 3 sería o seguinte 329 00:15:50,510 --> 00:15:54,290 lugar aberto, xa que 0, 1, e 2 xa está cuberto. 330 00:15:54,290 --> 00:16:01,790 >> Entón imos poñer o valor en s.trays [s.size], o terceiro lugar. 331 00:16:01,790 --> 00:16:06,290 E entón nós incrementar s.size a dicir, hey, tivemos tres cousas antes. 332 00:16:06,290 --> 00:16:07,400 Agora, temos catro. 333 00:16:07,400 --> 00:16:10,180 Entón a próxima vez empurra, está vai poñer algo en 4. 334 00:16:10,180 --> 00:16:15,560 Ou a próxima vez que aparece, vai a mirar para 3 en vez de 4 ou o que sexa. 335 00:16:15,560 --> 00:16:18,000 E entón nós imos voltar true para digamos, hey, nós conseguimos. 336 00:16:18,000 --> 00:16:19,160 Isto funcionou. 337 00:16:19,160 --> 00:16:22,060 Como regra xeral, se unha función que é debe volver true ou 338 00:16:22,060 --> 00:16:26,370 falsa sempre retorna true, pode ter feito algo incorrecto. 339 00:16:26,370 --> 00:16:28,350 Entón, isto funciona? 340 00:16:28,350 --> 00:16:32,400 >> Ben, funciona ben para un, e 2 e 3, e 4, e cinco. 341 00:16:32,400 --> 00:16:34,640 Pero digamos que eu chegar ao meu capacidade. 342 00:16:34,640 --> 00:16:38,750 Eu, a continuación, executar para un problema, xa que se o tamaño é o mesmo como a capacidade, eu son 343 00:16:38,750 --> 00:16:43,340 agora a tentar poñer algo nun array onde eu non teño espazo. 344 00:16:43,340 --> 00:16:46,980 Entón, unha pequena selección para corrixir isto. 345 00:16:46,980 --> 00:16:51,630 Se s.size == CAPACIDADE, regresar false. 346 00:16:51,630 --> 00:16:54,130 En caso contrario, vaia e faga o que nós fixemos. 347 00:16:54,130 --> 00:16:55,660 Entón o que máis poderiamos pedir preto de pilas? 348 00:16:55,660 --> 00:16:56,460 O que máis ten que estudar? 349 00:16:56,460 --> 00:16:57,690 O que máis ten que practicar? 350 00:16:57,690 --> 00:17:01,030 >> Ben, a posta en marcha de pop. 351 00:17:01,030 --> 00:17:02,370 Nós xa fixemos pulo. 352 00:17:02,370 --> 00:17:04,280 Vou corrixir isto. 353 00:17:04,280 --> 00:17:08,180 A implantación non matriz, onde usa unha lista ligada, quizais. 354 00:17:08,180 --> 00:17:09,390 A implantación non int. 355 00:17:09,390 --> 00:17:10,940 Fixemos Ints aquí. 356 00:17:10,940 --> 00:17:11,880 Pero podería ser coches alegóricos. 357 00:17:11,880 --> 00:17:13,010 Podería ser cadeas. 358 00:17:13,010 --> 00:17:14,290 Podería ser estrelas de caracteres. 359 00:17:14,290 --> 00:17:17,960 Olla quizzes últimos para os tipos de preguntas que pediu sobre pilas. 360 00:17:17,960 --> 00:17:20,000 >> Eu vou dicir que nós Cubrimos pilas arredor o mesmo que nós Cubrimos eles en 361 00:17:20,000 --> 00:17:20,540 ano pasado. 362 00:17:20,540 --> 00:17:24,400 Así, as preguntas do cuestionario debería ser unha boa indicación. 363 00:17:24,400 --> 00:17:27,010 Avanzando aínda máis rápido, as filas. 364 00:17:27,010 --> 00:17:28,200 Son como pilas. 365 00:17:28,200 --> 00:17:29,960 Pero son first in, first out. 366 00:17:29,960 --> 00:17:33,530 Se é británico, cola a palabra probablemente fixo moito sentido para ti. 367 00:17:33,530 --> 00:17:36,390 En caso contrario, pode que oído falar del como unha liña. 368 00:17:36,390 --> 00:17:38,120 Eles funcionan como a liña na tenda de Apple. 369 00:17:38,120 --> 00:17:40,740 A primeira persoa a amosar-se ás 3:00 pola mañá é o primeiro 370 00:17:40,740 --> 00:17:42,880 persoa a mercar o seu iPad. 371 00:17:42,880 --> 00:17:44,260 >> Polo tanto, temos dúas operacións - 372 00:17:44,260 --> 00:17:45,720 poñela na fila e dequeue. 373 00:17:45,720 --> 00:17:47,560 Enqueue pon alguén na liña. 374 00:17:47,560 --> 00:17:50,070 Desenfileiramento tira a primeira persoa fóra da liña. 375 00:17:50,070 --> 00:17:52,640 Unha vez máis, podemos aplicar isto cunha matriz. 376 00:17:52,640 --> 00:17:54,880 Entón, cal é o que struct amosa na charla? 377 00:17:54,880 --> 00:17:57,660 Foi un agasallo. 378 00:17:57,660 --> 00:17:59,300 Unha vez máis, os números. 379 00:17:59,300 --> 00:18:02,020 Unha vez máis, o tamaño ea esa cousa nova fronte. 380 00:18:02,020 --> 00:18:04,880 ¿Por que hai unha cousa chamada diante? 381 00:18:04,880 --> 00:18:07,050 É o índice do seguinte elemento para retirar da cola. 382 00:18:07,050 --> 00:18:12,210 É só manter internamente o control de o primeiro cara a mostrar-se, de xeito que nós 383 00:18:12,210 --> 00:18:15,005 pode retirala-lo cando precisamos. 384 00:18:15,005 --> 00:18:19,322 >> Definitivamente ollar notas de clase e intentar para aplicar poñela na fila e dequeue 385 00:18:19,322 --> 00:18:21,700 ao estudar a quiz. 386 00:18:21,700 --> 00:18:23,190 Cousas importantes para pensar. 387 00:18:23,190 --> 00:18:27,260 Inclúen en torno a fronte máis a tamaño acaba maior que a capacidade. 388 00:18:27,260 --> 00:18:32,670 Unha vez máis, a súa estrutura é completa, vai ter un problema. 389 00:18:32,670 --> 00:18:34,780 Hash táboas que xa viu antes. 390 00:18:34,780 --> 00:18:39,820 A maioría de vostedes probablemente aplicado estes en pset6. 391 00:18:39,820 --> 00:18:44,210 É unha estrutura que ten como obxectivo a O (1) inserción de tempo constante e S (1) 392 00:18:44,210 --> 00:18:46,430 investigación de tempo constante. 393 00:18:46,430 --> 00:18:49,760 >> En CS50, Implementar este como un conxunto de listas ligadas. 394 00:18:49,760 --> 00:18:53,690 O compoñente clave para unha táboa hash é a función hash. 395 00:18:53,690 --> 00:18:58,350 Por iso, converte a súa entrada, imos dicir, unha palabra de dicionario, nun número, 396 00:18:58,350 --> 00:18:59,560 cal vai ser o noso índice. 397 00:18:59,560 --> 00:19:01,410 E nós imos usar ese índice na nosa matriz. 398 00:19:01,410 --> 00:19:05,374 Entón, aquí está unha foto bonitinha de study.50.net. 399 00:19:05,374 --> 00:19:08,060 Xogamos todas as palabras en nosa función hash. 400 00:19:08,060 --> 00:19:10,950 E a función de hash dinos onde poñer esas palabras. 401 00:19:10,950 --> 00:19:15,650 >> Isto todo é grande na terra onde só hai unha palabra para cada slot. 402 00:19:15,650 --> 00:19:20,480 Pero, como se lembra de pset6, non son máis palabras que slots. 403 00:19:20,480 --> 00:19:23,080 Entón o que ocorre cando obter unha colisión? 404 00:19:23,080 --> 00:19:26,730 No canto de almacenar un valor de, imos dicir, táboa hash 3, 405 00:19:26,730 --> 00:19:27,990 almacenar unha lista ligada. 406 00:19:27,990 --> 00:19:32,900 E así, en vez de ter melón aquí, que tería unha lista ligada, 407 00:19:32,900 --> 00:19:34,190 onde o primeiro nodo é melón. 408 00:19:34,190 --> 00:19:35,260 E o seguinte nodo é gato. 409 00:19:35,260 --> 00:19:38,970 E o terceiro nó é colisión, imos dicir, porque todas esas palabras comezan 410 00:19:38,970 --> 00:19:41,110 con C. 411 00:19:41,110 --> 00:19:42,700 >> Así, a maioría de vostedes fixo iso por pset6. 412 00:19:42,700 --> 00:19:45,685 Se non fixo unha táboa hash en pset6 e intentou algo parecido 413 00:19:45,685 --> 00:19:47,720 unha trie, en definitiva revisar táboas hash. 414 00:19:47,720 --> 00:19:50,650 Se fixo iso de pset6, en definitiva revisar táboas hash. 415 00:19:50,650 --> 00:19:53,610 E se fixo iso de pset6 e iso non aconteceu traballar moi ben e 416 00:19:53,610 --> 00:19:56,150 tiña unha morea de problemas con el, en definitiva revisar táboas hash. 417 00:19:56,150 --> 00:20:01,610 Así, a lección é realmente definitiva revisar táboas hash. 418 00:20:01,610 --> 00:20:07,130 >> A gran minoría de que intentou fóra intenta sobre pset6. 419 00:20:07,130 --> 00:20:08,570 Imaxe de alto nivel. 420 00:20:08,570 --> 00:20:15,150 É algo así como este, onde cada nodo ten un conxunto de nenos, onde cada 421 00:20:15,150 --> 00:20:17,100 neno corresponde a unha letra. 422 00:20:17,100 --> 00:20:20,520 E cada nó tamén di: hey, eu son unha palabra. 423 00:20:20,520 --> 00:20:25,933 Polo tanto, neste exemplo, a palabra Maxwell, se seguir o M para o A ao 424 00:20:25,933 --> 00:20:28,530 X-W-E-L-L e logo seguilo unha vez máis. 425 00:20:28,530 --> 00:20:32,800 E ten este símbolo, delta, que que significan a dicir que é unha palabra. 426 00:20:32,800 --> 00:20:34,780 Entón Maxwell é unha palabra. 427 00:20:34,780 --> 00:20:38,430 Estes son deltas todo significante que as cousas son palabras e que 428 00:20:38,430 --> 00:20:40,360 as cousas non son. 429 00:20:40,360 --> 00:20:46,400 >> Así, en pset6, os datos que gardamos xunto con calquera dos nosos nós foi "Eu son un 430 00:20:46,400 --> 00:20:52,630 palabra. "E a cousa legal sobre intentos é demostrar que a inserción e 431 00:20:52,630 --> 00:20:55,080 lookup en O (lonxitude dunha palabra). 432 00:20:55,080 --> 00:20:59,450 Entón, só para pasar por Maxwell, é M-A-X-W-E-L-L. Así, sete ou oito - 433 00:20:59,450 --> 00:21:00,360 Eu non podo contar - 434 00:21:00,360 --> 00:21:03,920 pasos para chegar ata o final e comprobar as cousas. 435 00:21:03,920 --> 00:21:06,800 Implantación tan rápida aquí. 436 00:21:06,800 --> 00:21:10,230 Rob pasou por unha asociada lista no seu post-morte. 437 00:21:10,230 --> 00:21:11,600 Polo tanto, comproba iso. 438 00:21:11,600 --> 00:21:11,720 Sentímolo. 439 00:21:11,720 --> 00:21:13,240 Pasou por unha trie no seu post-morte. 440 00:21:13,240 --> 00:21:14,260 Polo tanto, comproba iso. 441 00:21:14,260 --> 00:21:24,410 >> Pero ten basicamente cada nodo ten 27 punteiros para os próximos nós e un 442 00:21:24,410 --> 00:21:27,050 Boolean estou eu unha palabra. 443 00:21:27,050 --> 00:21:31,530 Consulte postmortem de Rob por canto que realmente é aplicado. 444 00:21:31,530 --> 00:21:34,750 A nosa estrutura final, as nosas árbores e árbores de procura binaria. 445 00:21:34,750 --> 00:21:41,530 Entón, ollando para estes, estas foron cubertas máis recentemente, Semana 8, luns. 446 00:21:41,530 --> 00:21:46,960 Unha árbore é semellante a unha trie, agás que non necesariamente ten 27 nós en 447 00:21:46,960 --> 00:21:47,500 cada punto. 448 00:21:47,500 --> 00:21:52,820 E non ten eses datos cada paso que significa o - 449 00:21:52,820 --> 00:21:54,030 o camiño non importa. 450 00:21:54,030 --> 00:22:00,870 Considerando unha trie, o camiño de arriba inferior, Maxwell, foi importante para nós. 451 00:22:00,870 --> 00:22:05,270 >> Pero cada nodo ten múltiple nenos, quizais. 452 00:22:05,270 --> 00:22:07,290 Temos un pouco máis de vocabulario. 453 00:22:07,290 --> 00:22:09,530 A raíz da árbore está na parte superior. 454 00:22:09,530 --> 00:22:12,520 E nós dicimos que a propia bottommost os nós que non teñen 455 00:22:12,520 --> 00:22:14,530 nenos son follas. 456 00:22:14,530 --> 00:22:18,040 Así como unha trie, unha árbore é unha estrutura de nós. 457 00:22:18,040 --> 00:22:21,490 Un tipo común de árbore que imos falar é unha árbore binaria, onde 458 00:22:21,490 --> 00:22:26,040 cada nó non ten fillos ou un neno ou dous nenos. 459 00:22:26,040 --> 00:22:28,890 Polo tanto, esta foto aquí non é unha árbore binaria, porque 460 00:22:28,890 --> 00:22:32,890 nó 3 ten tres fillos. 461 00:22:32,890 --> 00:22:38,140 >> Pero se tivésemos de ignorar aqueles, o resto de que é unha árbore binaria porque 462 00:22:38,140 --> 00:22:43,200 demostra a propiedade que cada nodo ten cero, un ou dous fillos. 463 00:22:43,200 --> 00:22:46,400 Entón, como podemos expresar iso no código? 464 00:22:46,400 --> 00:22:51,460 Poderiamos ter un nó onde cada nodo ten un número enteiro dentro do mesmo, así 465 00:22:51,460 --> 00:22:55,590 como un punteiro para a árbore á esquerda e un punteiro para a árbore no 466 00:22:55,590 --> 00:22:59,510 dereita, de xeito que os dous fillos. 467 00:22:59,510 --> 00:23:00,880 Como iso é útil? 468 00:23:00,880 --> 00:23:05,740 Ben, se facemos regras sobre onde nós poñer nós, podemos facer a busca máis rápida. 469 00:23:05,740 --> 00:23:10,630 >> Polo tanto, hai un concepto dunha investigación binaria árbore, no que todos os nós da 470 00:23:10,630 --> 00:23:14,420 subárvore esquerda ten un valor menor que o nodo que estamos mirando. 471 00:23:14,420 --> 00:23:17,880 E todos nós na subárvore dereita ter un valor máis grande 472 00:23:17,880 --> 00:23:18,660 que o nodo raíz. 473 00:23:18,660 --> 00:23:20,670 Agora, que se parece unha morea de palabras. 474 00:23:20,670 --> 00:23:23,770 Vou poñer-lo dentro de dobre citas e amosar unha imaxe. 475 00:23:23,770 --> 00:23:27,010 Entón, aquí está un exemplo de unha árbore de busca binaria. 476 00:23:27,010 --> 00:23:28,770 Mira que comezan con 10. 477 00:23:28,770 --> 00:23:31,780 Todo o que o lado esquerdo da 10 é menor que. 478 00:23:31,780 --> 00:23:33,130 E todo a dereita é maior que iso. 479 00:23:33,130 --> 00:23:37,620 >> Pero máis que iso, cada nodo a árbore expresa esa propiedade. 480 00:23:37,620 --> 00:23:42,110 Así, o nodo 7 ten un 3 a á esquerda e un 9 a dereita. 481 00:23:42,110 --> 00:23:44,440 Así, todos os que son menores que 10. 482 00:23:44,440 --> 00:23:50,470 Pero mirando para só aqueles, o 7 ten 3 á súa esquerda e 9 á súa dereita. 483 00:23:50,470 --> 00:23:56,100 E do mesmo xeito, á dereita, o 15 ten 14 á súa esquerda e 50 á dereita. 484 00:23:56,100 --> 00:24:03,770 Así, os tres nós por aí, 15, 14, e 50 anos, son tamén unha árbore binaria válido 485 00:24:03,770 --> 00:24:05,480 ou unha árbore de busca binaria válido. 486 00:24:05,480 --> 00:24:07,250 E todos eles son maiores que 10. 487 00:24:07,250 --> 00:24:08,960 Entón, eles están autorizados a estar á dereita alí. 488 00:24:08,960 --> 00:24:09,940 Hai unha pregunta? 489 00:24:09,940 --> 00:24:12,580 >> Audiencia: Como se encarga cando ten dous setes? 490 00:24:12,580 --> 00:24:12,850 >> RJ Aquino: Yeah. 491 00:24:12,850 --> 00:24:16,550 Como trata sobre dous valores que son os mesmos? 492 00:24:16,550 --> 00:24:21,465 Algunhas árbores de busca binária dicir que ignorar duplicados, xa que o obxectivo é 493 00:24:21,465 --> 00:24:24,280 só para dicir, eu xa vin isto ata agora. 494 00:24:24,280 --> 00:24:28,120 Algunhas árbores de procura binaria pódese dicir ten unha conta no nodo. 495 00:24:28,120 --> 00:24:32,000 Outros poden dicir que todo o que esquerda é menor que ou igual a. 496 00:24:32,000 --> 00:24:33,470 E todo a dereita é maior que. 497 00:24:33,470 --> 00:24:36,520 >> E só depende do que o problema é que está resolvendo. 498 00:24:36,520 --> 00:24:40,840 Así, nun dicionario, por exemplo, non se preocupan dobre. 499 00:24:40,840 --> 00:24:41,490 Ía xoga-los fora. 500 00:24:41,490 --> 00:24:44,719 Pero algún outro problema que pode coidar. 501 00:24:44,719 --> 00:24:49,242 >> Audiencia: É posíbel ter 1 á esquerda, de 15, o cal 502 00:24:49,242 --> 00:24:50,590 é inferior a 10? 503 00:24:50,590 --> 00:24:51,885 >> RJ Aquino: Non 504 00:24:51,885 --> 00:24:56,570 O 14 aquí foron un 1, este sería non ser unha árbore de busca binaria válida, 505 00:24:56,570 --> 00:25:00,840 porque todo á dereita 10 ten que ser maior que el. 506 00:25:00,840 --> 00:25:02,300 E imos ver por que. 507 00:25:02,300 --> 00:25:07,960 Na terra de busca meu obxectivo é para atopar 14, eu comezo na raíz. 508 00:25:07,960 --> 00:25:08,500 Entón eu ollo. 509 00:25:08,500 --> 00:25:08,710 Aceptar. 510 00:25:08,710 --> 00:25:10,670 Imos comezar na raíz. 511 00:25:10,670 --> 00:25:12,500 Olhe 10. 512 00:25:12,500 --> 00:25:16,050 >> Así, 14, o noso obxectivo, é maior que 10. 513 00:25:16,050 --> 00:25:17,370 Por iso, débese á dereita. 514 00:25:17,370 --> 00:25:21,780 Isto é moi semellante ao conxunto do teléfono cousa libro que fixemos, o binario 515 00:25:21,780 --> 00:25:23,720 buscar alí. 516 00:25:23,720 --> 00:25:26,430 Pero, en vez de buscar binario nunha matriz, estamos binario 517 00:25:26,430 --> 00:25:28,490 busca nesta árbore. 518 00:25:28,490 --> 00:25:31,260 Entón, aínda estamos á procura de 14. 519 00:25:31,260 --> 00:25:32,480 Así, 14 é menor que 15. 520 00:25:32,480 --> 00:25:36,430 Entón, se está na nosa árbore, debe estar nun determinado local. 521 00:25:36,430 --> 00:25:39,680 Debe ser á dereita do 10 e á esquerda, de 15. 522 00:25:39,680 --> 00:25:42,250 >> E, así, comprobar este nodo. 523 00:25:42,250 --> 00:25:45,790 E Yay, atopamos 14. 524 00:25:45,790 --> 00:25:46,760 Eu non estou indo a atravesalo-la. 525 00:25:46,760 --> 00:25:48,090 Pero aquí está o código. 526 00:25:48,090 --> 00:25:49,690 En realidade, é relativamente simple, 527 00:25:49,690 --> 00:25:52,630 porque este é recursivo. 528 00:25:52,630 --> 00:25:55,420 Que poderiamos pedir para lle facer nunha proba? 529 00:25:55,420 --> 00:25:57,000 Poderiamos pedir-lle para escribir este código. 530 00:25:57,000 --> 00:25:59,170 Poderiamos pedir-lle para ollar a este código e modificar o código e explicar o que 531 00:25:59,170 --> 00:26:00,210 que está facendo. 532 00:26:00,210 --> 00:26:00,390 É. 533 00:26:00,390 --> 00:26:00,770 Pregunta? 534 00:26:00,770 --> 00:26:04,240 >> Audiencia: San eses diapositivas será facilitados como estaban a última vez? 535 00:26:04,240 --> 00:26:04,740 >> RJ Aquino: si. 536 00:26:04,740 --> 00:26:06,460 Entón, eses diapositivas vai definitivamente ser posta. 537 00:26:06,460 --> 00:26:08,640 >> Audiencia: Están realmente posta agora na páxina web. 538 00:26:08,640 --> 00:26:10,020 David acaba de facelo. 539 00:26:10,020 --> 00:26:12,720 >> RJ Aquino: Os diapositivas son agora na páxina web. 540 00:26:12,720 --> 00:26:16,420 Eu probablemente vou fixar un par de os erros de dixitación Notei e resolve-los. 541 00:26:16,420 --> 00:26:19,940 Pero hai unha corrente versión na páxina web. 542 00:26:19,940 --> 00:26:21,820 Outros cousas que poderiamos pedir-lle para facer - 543 00:26:21,820 --> 00:26:23,790 escribir inserción. 544 00:26:23,790 --> 00:26:27,490 Escribir unha versión iterativa do función recursiva que acaba de amosar 545 00:26:27,490 --> 00:26:32,520 ou falar sobre estas cousas, como en parágrafos, en palabras, en frases. 546 00:26:32,520 --> 00:26:35,760 Comparando-se os tempos de execución e explicando o que quere empregar un binario 547 00:26:35,760 --> 00:26:39,200 árbore de procura para no canto dun Táboa de Hash, por exemplo. 548 00:26:39,200 --> 00:26:43,580 >> Así, entender estas estruturas nun nivel moi profundo. 549 00:26:43,580 --> 00:26:47,440 Entender como escribilo los, como usalos, como falar sobre eles. 550 00:26:47,440 --> 00:26:50,270 E vai estar todo listo. 551 00:26:50,270 --> 00:26:50,630 Pregunta? 552 00:26:50,630 --> 00:26:55,070 >> Audiencia: Cando está escribindo o árbore binaria de procura, como 553 00:26:55,070 --> 00:27:01,460 determinar o valor de facelo como a raíz? 554 00:27:01,460 --> 00:27:06,120 >> RJ Aquino: Entón, a pregunta era: o que valor que cre que a raíz? 555 00:27:06,120 --> 00:27:08,760 En función do seu código, pode ter unha raíz global. 556 00:27:08,760 --> 00:27:14,290 Entón pode que probablemente tiña en pset6 unha táboa hash global. 557 00:27:14,290 --> 00:27:18,640 Ou pode pasar a raíz como un argumento. 558 00:27:18,640 --> 00:27:23,810 Polo tanto, esta función de busca aquí recibe un argumento un nodo *. 559 00:27:23,810 --> 00:27:27,420 E así que o nodo ten que ser mirando é o que está tratando 560 00:27:27,420 --> 00:27:31,510 como a súa raíz cando pasalo dentro 561 00:27:31,510 --> 00:27:32,320 E eu estou listo. 562 00:27:32,320 --> 00:27:33,480 Estes son os meus diapositivas. 563 00:27:33,480 --> 00:27:35,940 A seguinte persoa pode vir de intercambio nun portátil e micrófono. 564 00:27:35,940 --> 00:27:47,390 565 00:27:47,390 --> 00:27:49,760 >> ROB BOWDEN: Eu creo que eu podería ter interpretado esta cuestión de forma diferente. 566 00:27:49,760 --> 00:27:53,826 Pero eu interpretei iso como, se ten os números 1, 2 e 3, como nós 567 00:27:53,826 --> 00:27:56,720 saber para facer 2 a raíz en oposición a unha ou tres? 568 00:27:56,720 --> 00:27:59,480 Se facemos 2 a raíz, así que é moito 1 e 3 á esquerda e á dereita. 569 00:27:59,480 --> 00:28:04,610 Pero se un é a raíz, así que é unha ao arriba, dous da dereita, 3 a dereita. 570 00:28:04,610 --> 00:28:10,880 Entón, por defecto, non sabe o que facer a raíz. 571 00:28:10,880 --> 00:28:15,400 E para calquera algoritmo que estamos esperando darlle, así, o primeiro que 572 00:28:15,400 --> 00:28:16,680 inserción sería a raíz. 573 00:28:16,680 --> 00:28:19,890 Ou nós darlle unha árbore binaria que existente, que ten unha raíz. 574 00:28:19,890 --> 00:28:24,760 Pero outros algoritmos existe tal que a raíz será actualizado, de xeito que se 575 00:28:24,760 --> 00:28:28,370 acabar na situación en que é 1, 2, 3, que vai actualizar automaticamente a 576 00:28:28,370 --> 00:28:30,900 facer 2 a nova raíz, de xeito que inda está ben equilibrada. 577 00:28:30,900 --> 00:28:33,750 578 00:28:33,750 --> 00:28:34,833 >> ANGELA LI: Cool. 579 00:28:34,833 --> 00:28:36,170 Ei, persoal. 580 00:28:36,170 --> 00:28:37,810 Eu son Angela. 581 00:28:37,810 --> 00:28:42,490 E eu vou rematar o noso C e, a continuación, entrar en algúns dos nosos web 582 00:28:42,490 --> 00:28:43,120 tecnoloxías - 583 00:28:43,120 --> 00:28:46,570 HTTP, HTML e CSS. 584 00:28:46,570 --> 00:28:49,610 Entón o primeiro é tapón ataques de estourido. 585 00:28:49,610 --> 00:28:53,070 Entón, imos dar un ollo neste código. 586 00:28:53,070 --> 00:28:54,260 É moi sinxelo. 587 00:28:54,260 --> 00:28:55,460 Hai unha función foo. 588 00:28:55,460 --> 00:28:56,990 E el non retorna nada. 589 00:28:56,990 --> 00:29:00,950 Pero hai que nun punteiro para unha cadea chamada bar. 590 00:29:00,950 --> 00:29:04,920 >> E vai declarar esta buffer, que é un personaxe 591 00:29:04,920 --> 00:29:07,690 matriz que ten 12 slots. 592 00:29:07,690 --> 00:29:11,730 E el usa memcpy, que é só un función que copia dun enderezo 593 00:29:11,730 --> 00:29:12,910 noutra. 594 00:29:12,910 --> 00:29:19,400 Entón, iso está intentando copiar noso buffer de calquera 595 00:29:19,400 --> 00:29:21,140 bar está a apuntar. 596 00:29:21,140 --> 00:29:24,640 Entón, algunha idea do que está mal con ese código? 597 00:29:24,640 --> 00:29:27,568 598 00:29:27,568 --> 00:29:30,830 >> Audiencia: Se a barra é máis longa do que C, que substituirá. 599 00:29:30,830 --> 00:29:31,520 >> ANGELA LI: Si, exactamente. 600 00:29:31,520 --> 00:29:34,200 Nós non temos ningunha garantía de que a barra será menor que 12. 601 00:29:34,200 --> 00:29:36,080 Nós só fixemos un número arbitrario 12. 602 00:29:36,080 --> 00:29:38,380 E nós estivemos tipo, imos esperar que nosa entrada é inferior a 603 00:29:38,380 --> 00:29:40,440 12 caracteres. 604 00:29:40,440 --> 00:29:46,320 Así, nun mundo ideal, a nosa entrada é sempre como se esperaba, entón nós imos chegar 605 00:29:46,320 --> 00:29:47,550 algo así como, Olá 606 00:29:47,550 --> 00:29:48,920 Iso é menos de 12 caracteres. 607 00:29:48,920 --> 00:29:51,870 El é lido en char c. 608 00:29:51,870 --> 00:29:53,280 E, entón, facer algo con el. 609 00:29:53,280 --> 00:29:54,800 Realmente non importa. 610 00:29:54,800 --> 00:29:59,740 >> Pero unha persoa mal intencionada pode facer algo máis como este, onde se 611 00:29:59,740 --> 00:30:04,760 ofrécenos todo o bar está a apuntar cara, que vai apuntar a este enorme variedade 612 00:30:04,760 --> 00:30:06,280 de só de un. 613 00:30:06,280 --> 00:30:10,680 E este é o camiño máis longo do que 12. 614 00:30:10,680 --> 00:30:13,830 Entón, que vai percorrer todo o camiño ata aquí para que o regreso 615 00:30:13,830 --> 00:30:15,420 enderezo adoitaba ser. 616 00:30:15,420 --> 00:30:17,860 Entón, digamos que esta función chámase foo. 617 00:30:17,860 --> 00:30:20,970 Quizais foo foi chamado por algún outro función, que foi chamado por principal. 618 00:30:20,970 --> 00:30:24,890 Entón, cando foo está a ser executado, el que saber onde volver. 619 00:30:24,890 --> 00:30:29,130 >> Se foo foi chamado por unha función chamada Baz, ten que saber que é 620 00:30:29,130 --> 00:30:30,250 ten que voltar Baz. 621 00:30:30,250 --> 00:30:34,040 E iso é o que esta dirección de retorno aquí está nos dicindo. 622 00:30:34,040 --> 00:30:38,340 Pero se substituílo con algún outro enderezo, neste caso, esta é unha 623 00:30:38,340 --> 00:30:42,650 representación do discurso na principios deste buffer, entón 624 00:30:42,650 --> 00:30:45,240 o que realmente vai ocorrer é que no canto de volver cara atrás para Baz, 625 00:30:45,240 --> 00:30:48,470 que chamou a nosa función, é só indo a ir á fronte este código. 626 00:30:48,470 --> 00:30:53,930 >> E se isto estaba alí porque un malicioso cara veu e hackers 627 00:30:53,930 --> 00:30:56,820 inxectado iso, entón quizais este valor do dun non é realmente de un. 628 00:30:56,820 --> 00:31:02,030 E é realmente só o código que rompe seu ordenador ou algo así. 629 00:31:02,030 --> 00:31:05,930 Entón, para estar á defensiva sobre este tipo de cousa, ten que asumir que nunca 630 00:31:05,930 --> 00:31:09,120 entrada do usuario un correcto cantidade de caracteres. 631 00:31:09,120 --> 00:31:13,310 Por exemplo, cando estaba facendo ortográfico, lle se dixo que as palabras eran 632 00:31:13,310 --> 00:31:15,580 só será 40 caracteres máximo de lonxitude. 633 00:31:15,580 --> 00:31:16,570 E iso era bo. 634 00:31:16,570 --> 00:31:20,150 >> Pero se non, entón tería que comproba se só ler en 45 635 00:31:20,150 --> 00:31:21,520 caracteres de cada vez. 636 00:31:21,520 --> 00:31:24,430 En caso contrario, pode substituír seu buffer. 637 00:31:24,430 --> 00:31:26,140 Calquera dúbida sobre iso. 638 00:31:26,140 --> 00:31:26,733 É. 639 00:31:26,733 --> 00:31:28,850 >> Audiencia: Podería falar un pouco máis sobre iso? 640 00:31:28,850 --> 00:31:29,790 >> ANGELA LI: Sentímolo. 641 00:31:29,790 --> 00:31:31,040 Si 642 00:31:31,040 --> 00:31:32,813 643 00:31:32,813 --> 00:31:35,870 >> Audiencia: O micrófono é só para vídeo. 644 00:31:35,870 --> 00:31:37,640 Vou tentar e proxecto. 645 00:31:37,640 --> 00:31:39,900 Ola, persoal. 646 00:31:39,900 --> 00:31:40,920 SUP? 647 00:31:40,920 --> 00:31:45,330 Entón, imos pasar por riba de algunhas cousas no Biblioteca CS50, o que está a usar 648 00:31:45,330 --> 00:31:49,072 todo o semestre, sobre para obter a entrada do usuario. 649 00:31:49,072 --> 00:31:53,140 Como vostede sabe, incluír o CS50 biblioteca só facendo CS50.h, que 650 00:31:53,140 --> 00:31:55,660 contén todos os prototipos do funcións que pode usar, como 651 00:31:55,660 --> 00:31:58,640 GetString e GetInt e GetFloat, etcétera. 652 00:31:58,640 --> 00:32:02,870 E hai esa liña no CS50 biblioteca que define unha cadea, que 653 00:32:02,870 --> 00:32:05,380 Vós todos xa saben é só un char *. 654 00:32:05,380 --> 00:32:07,900 >> Pero imos dar un ollo a GetString como funciona. 655 00:32:07,900 --> 00:32:10,010 Esta é unha versión moi resumida. 656 00:32:10,010 --> 00:32:15,090 Podes puxar arriba os ficheiros de biblioteca CS50 de, creo, manuals.CS50.net. 657 00:32:15,090 --> 00:32:16,750 E pode ler a función real. 658 00:32:16,750 --> 00:32:19,330 Pero isto cobre algunhas das as pezas importantes. 659 00:32:19,330 --> 00:32:23,870 Entón, creamos algúns tapón con algunha capacidade. 660 00:32:23,870 --> 00:32:27,570 E o que facemos é coller un personaxe nun momento de patrón n. 661 00:32:27,570 --> 00:32:30,910 É alí onde a entradas do usuario texto na consola. 662 00:32:30,910 --> 00:32:33,430 >> E así imos ler nun carácter, sempre que el non é un novo 663 00:32:33,430 --> 00:32:37,220 liña e non é a fin do ficheiro, o que é o extremo de entrada estándar. 664 00:32:37,220 --> 00:32:45,690 E, para cada personaxe que lemos en, que o personaxe acaba de engadir 665 00:32:45,690 --> 00:32:50,120 ao número de caracteres que lemos e que é máis que a nosa capacidade, 666 00:32:50,120 --> 00:32:53,490 entón o que facemos é só cambiar o tamaño nosa tapón de xeito que é o dobre do tempo. 667 00:32:53,490 --> 00:32:56,950 Entón, de novo, este protexer contra tapón ataques de estourido, porque leu en 668 00:32:56,950 --> 00:32:58,315 un personaxe de cada vez. 669 00:32:58,315 --> 00:33:02,290 E se nalgún momento ler en moi moitos, só ampliar o seu buffer. 670 00:33:02,290 --> 00:33:03,330 Vostede multiplica por dous. 671 00:33:03,330 --> 00:33:05,510 E entón tes máis espazo. 672 00:33:05,510 --> 00:33:09,120 >> En caso contrario, pode engadir un personaxe ao buffer. 673 00:33:09,120 --> 00:33:15,080 E despois que xa leu en toda a caracteres, que pode diminuír o buffer 674 00:33:15,080 --> 00:33:18,510 ao seu tamaño normal, engadir un terminador nulo, e despois volver. 675 00:33:18,510 --> 00:33:21,880 676 00:33:21,880 --> 00:33:24,960 Agora imos ollar para GetInt. 677 00:33:24,960 --> 00:33:27,700 Podedes ler isto? 678 00:33:27,700 --> 00:33:30,710 Podo ampliar un pouco. 679 00:33:30,710 --> 00:33:33,410 680 00:33:33,410 --> 00:33:34,660 Eu non sei como os ordenadores funcionan. 681 00:33:34,660 --> 00:33:40,840 682 00:33:40,840 --> 00:33:41,270 Nunca mente. 683 00:33:41,270 --> 00:33:42,520 Non pode ampliar correctamente. 684 00:33:42,520 --> 00:33:47,500 685 00:33:47,500 --> 00:33:48,770 >> Isto é realmente difícil. 686 00:33:48,770 --> 00:33:49,180 Sinto moito. 687 00:33:49,180 --> 00:33:51,490 Imos ollar para iso. 688 00:33:51,490 --> 00:33:57,140 Entón, o que fai é GetInt le primeiro nunha serie de GetString, que 689 00:33:57,140 --> 00:33:59,250 temos implantado antes. 690 00:33:59,250 --> 00:34:02,945 E a parte máis importante a notar aquí E se esa repartición que acaba 691 00:34:02,945 --> 00:34:06,400 ler é como non realmente unha corda, entón nós só volver a INT_MAX 692 00:34:06,400 --> 00:34:09,409 representar o fracaso. 693 00:34:09,409 --> 00:34:12,645 Por que volver INT_MAX vez de negativo 1 ou 1? 694 00:34:12,645 --> 00:34:13,895 Algunha idea? 695 00:34:13,895 --> 00:34:16,853 696 00:34:16,853 --> 00:34:19,350 >> Audiencia: [inaudível] 1 negativo nun. 697 00:34:19,350 --> 00:34:20,070 >> ANGELA LI: Si, exactamente. 698 00:34:20,070 --> 00:34:24,560 Entón é moito máis probable que só quere na entrada 1 ou negativo 1, cando se solicite 699 00:34:24,560 --> 00:34:27,469 para un enésimo e todo Maxes enésima. 700 00:34:27,469 --> 00:34:27,969 É enorme. 701 00:34:27,969 --> 00:34:29,690 Probablemente non vai usalo. 702 00:34:29,690 --> 00:34:32,690 Entón, iso é como unha decisión de proxecto para asegúrese de que non accidentalmente 703 00:34:32,690 --> 00:34:38,540 volverá un erro ou non volver 1, que pode ser analizado 704 00:34:38,540 --> 00:34:41,199 como unha resposta correcta. 705 00:34:41,199 --> 00:34:45,110 Así, se unha liña non existir, volvemos INT-MAX. 706 00:34:45,110 --> 00:34:48,090 En caso contrario, imos usar sscanf, que é como scanf. 707 00:34:48,090 --> 00:34:49,449 Pero el le a partir dunha cadea. 708 00:34:49,449 --> 00:34:54,310 >> E nós temos este formato cadea, que é% i% c. 709 00:34:54,310 --> 00:34:57,440 E nós tratamos e combinar iso con todo o que o usuario nos deu. 710 00:34:57,440 --> 00:35:01,420 Queremos que o número de cousas combinadas sendo 1, o que significa que só 711 00:35:01,420 --> 00:35:04,940 realmente quero corresponder a un número enteiro rodeado por quizais branco 712 00:35:04,940 --> 00:35:06,840 espazo, quizais non. 713 00:35:06,840 --> 00:35:10,710 Neste caso, se pór en algo como bar, bar non se corresponde en todo, 714 00:35:10,710 --> 00:35:14,400 porque é necesario que haxa un enteiro ao principio. 715 00:35:14,400 --> 00:35:17,060 Por iso, nunca sscan virou 0. 716 00:35:17,060 --> 00:35:19,640 Entón non voltar iso. 717 00:35:19,640 --> 00:35:23,850 >> Alternativamente, se pór en algo como 1, 2, 3, A, B, C, que xogos 718 00:35:23,850 --> 00:35:27,180 tanto o número enteiro mais tamén o personaxe despois. 719 00:35:27,180 --> 00:35:29,990 Así sscanf volverá 2, que tampouco é ideal. 720 00:35:29,990 --> 00:35:34,620 Non quere 1, 2, 3, A, B, C e ser un int válido. 721 00:35:34,620 --> 00:35:36,990 Entón iso non funciona. 722 00:35:36,990 --> 00:35:38,530 Pero digamos que pon en algo así como 50. 723 00:35:38,530 --> 00:35:42,460 Isto vai coincidir co% i, o que significa vai ler no n. 724 00:35:42,460 --> 00:35:44,790 E agora, n conterá o número 50. 725 00:35:44,790 --> 00:35:46,110 E entón pode devolve-lo. 726 00:35:46,110 --> 00:35:49,270 >> En caso contrario, bateu en Repetir. 727 00:35:49,270 --> 00:35:55,790 E entón el só vai outra vez ata recibe unha entrada axeitada do usuario. 728 00:35:55,790 --> 00:35:56,891 Calquera dúbida sobre iso? 729 00:35:56,891 --> 00:36:02,182 >> Audiencia: Entón, se fose para imprimir o valor da GetInt en [inaudível] 730 00:36:02,182 --> 00:36:06,250 sería só o número enteiro e máximo? 731 00:36:06,250 --> 00:36:07,440 >> ANGELA LI: Yeah. 732 00:36:07,440 --> 00:36:11,780 Entón, se usa GetInt, ten que asumir que non quere max enésimo para 733 00:36:11,780 --> 00:36:15,328 ser unha entrada válida, porque está indo supoñer que iso era malo. 734 00:36:15,328 --> 00:36:27,740 >> Audiencia: Se non tivésemos char c e alguén puxo en 1, 2, 3, Sam, sería 735 00:36:27,740 --> 00:36:29,430 aínda traballar para 1, 2, 3? 736 00:36:29,430 --> 00:36:29,750 >> ANGELA LI: Coido que ía traballar. 737 00:36:29,750 --> 00:36:33,340 Pero non quere que a 123Sam ser unha entrada válida por un usuario. 738 00:36:33,340 --> 00:36:34,670 Isto non é realmente un int. 739 00:36:34,670 --> 00:36:36,840 Por iso, non parece xusto analiza-lo como un int. 740 00:36:36,840 --> 00:36:40,910 741 00:36:40,910 --> 00:36:42,160 Aceptar. 742 00:36:42,160 --> 00:36:45,800 Neste caso, imos pasar para a internet. 743 00:36:45,800 --> 00:36:49,120 Entón HTTP non é unha linguaxe. 744 00:36:49,120 --> 00:36:56,060 HTTP é só o conxunto de normas para como enviar as cousas de clientes, 745 00:36:56,060 --> 00:36:57,280 iso é vostede, para os servidores. 746 00:36:57,280 --> 00:36:59,730 Isto é outras persoas na web. 747 00:36:59,730 --> 00:37:02,900 >> Entón HTTP significa Hypertext Transfer Protocol. 748 00:37:02,900 --> 00:37:04,610 É o corazón ea alma de toda a web. 749 00:37:04,610 --> 00:37:07,050 A parte de hipertexto só refírese ao HTML. 750 00:37:07,050 --> 00:37:10,690 A transferencia é clientes como vai enviar solicitudes de 751 00:37:10,690 --> 00:37:13,060 servidores, que dan respostas. 752 00:37:13,060 --> 00:37:16,380 E o protocolo é só, como é que espera que un servidor comportarse? 753 00:37:16,380 --> 00:37:19,960 E como debe comportarse de tal forma que se pode simplificar este 754 00:37:19,960 --> 00:37:21,920 proceso de comunicación? 755 00:37:21,920 --> 00:37:26,650 >> Así, solicitudes HTTP parecen moito con iso. 756 00:37:26,650 --> 00:37:28,070 Get é o tipo de solicitude. 757 00:37:28,070 --> 00:37:31,220 Vostedes viron solicitudes get e solicitudes POST. 758 00:37:31,220 --> 00:37:36,690 Esta segunda cousa alí, / min, iso é só o URI ou a URL de onde 759 00:37:36,690 --> 00:37:38,140 quero ir a dentro do hospedeiro. 760 00:37:38,140 --> 00:37:44,140 Polo tanto, esta solicitude está pedindo o páxina, como www.facebook.com / min. 761 00:37:44,140 --> 00:37:45,300 E é unha solicitude GET. 762 00:37:45,300 --> 00:37:51,020 E entón este HTTP/1.1, que é só a versión de HTTP que está a usar. 763 00:37:51,020 --> 00:37:55,020 É case sempre 1.1. 764 00:37:55,020 --> 00:37:56,880 >> E despois hai unha banda doutras cousas tamén. 765 00:37:56,880 --> 00:38:02,510 Pode realmente ver estes se abrir a súa consola cando está 766 00:38:02,510 --> 00:38:03,770 navegar na web. 767 00:38:03,770 --> 00:38:07,290 Respostas parecido máis como este. 768 00:38:07,290 --> 00:38:09,620 A parte superior é, de novo, o tipo de HTTP que está a usar 769 00:38:09,620 --> 00:38:12,310 seguido por un código de estado. 770 00:38:12,310 --> 00:38:14,700 Entón 200 OK é todo deu correcto. 771 00:38:14,700 --> 00:38:16,200 Aquí é o seu contido. 772 00:38:16,200 --> 00:38:17,390 O seu contido vai seguir. 773 00:38:17,390 --> 00:38:21,730 E entón el vai dicir que tipo de contido e de outras cousas tamén. 774 00:38:21,730 --> 00:38:24,620 >> Os códigos de estado, hai algúns máis importantes que ten que saber. 775 00:38:24,620 --> 00:38:26,460 200 OK é como ouro de todo. 776 00:38:26,460 --> 00:38:28,490 Todo funciona. 777 00:38:28,490 --> 00:38:29,710 403 Prohibido. 778 00:38:29,710 --> 00:38:32,910 Isto probablemente xa viu Se esqueciches chmod algo correctamente. 779 00:38:32,910 --> 00:38:34,510 Isto significa que non ten os permisos correctos para 780 00:38:34,510 --> 00:38:36,210 acceder a este no servidor. 781 00:38:36,210 --> 00:38:38,110 É coma se, non, non pode velo. 782 00:38:38,110 --> 00:38:39,780 404 quere dicir que algo non existe. 783 00:38:39,780 --> 00:38:40,400 Non se atopou. 784 00:38:40,400 --> 00:38:41,640 Probablemente xa viu moito iso. 785 00:38:41,640 --> 00:38:45,510 >> 500 Internal Server Error adoita como algo deu mal no lado 786 00:38:45,510 --> 00:38:46,460 do servidor. 787 00:38:46,460 --> 00:38:50,830 Entón, cando estaba aplicando pset7, se tivese erros de PHP, podería 788 00:38:50,830 --> 00:38:53,890 realmente ir á páxina e ver un todo morea de cousas PHP erro. 789 00:38:53,890 --> 00:38:56,900 Pero iso normalmente non acontece, porque sitios realmente non quere 790 00:38:56,900 --> 00:38:58,830 dicirlle por que o seu sitio está roto. 791 00:38:58,830 --> 00:39:03,370 Eles probablemente vou volver 500 Internal Server Error. 792 00:39:03,370 --> 00:39:06,120 >> E despois hai 418 eu son un bule de té. 793 00:39:06,120 --> 00:39:07,910 Hai toda unha historia sobre por que isto é unha cousa. 794 00:39:07,910 --> 00:39:09,860 Pero pode ler sobre iso no seu propio tempo. 795 00:39:09,860 --> 00:39:11,450 Hai todo un conxunto de outros códigos de estado tamén. 796 00:39:11,450 --> 00:39:12,700 Pero estes son os ten que saber. 797 00:39:12,700 --> 00:39:15,660 798 00:39:15,660 --> 00:39:18,610 Entón imos falar de HTML. 799 00:39:18,610 --> 00:39:22,180 HTML, lembre, non é un linguaxe de programación. 800 00:39:22,180 --> 00:39:23,510 É unha linguaxe de reserva. 801 00:39:23,510 --> 00:39:25,210 Isto significa que describe o contido. 802 00:39:25,210 --> 00:39:30,440 Dille que un documento HTML parece como ou non é o que parece 803 00:39:30,440 --> 00:39:32,230 pero como está estructurado. 804 00:39:32,230 --> 00:39:36,110 >> Por iso, define unha estrutura e semántica das páxinas web. 805 00:39:36,110 --> 00:39:37,830 É coma se, este é un parágrafo. 806 00:39:37,830 --> 00:39:40,060 Esta é unha lista ordenada. 807 00:39:40,060 --> 00:39:42,360 Isto é como unha sección da miña páxina. 808 00:39:42,360 --> 00:39:43,260 Aquí está o título. 809 00:39:43,260 --> 00:39:44,310 Fai cousas así. 810 00:39:44,310 --> 00:39:48,770 Non estilo nada diso, porque iso é o que fai en CSS. 811 00:39:48,770 --> 00:39:50,270 E parece que unha serie etiquetas de noutras citas. 812 00:39:50,270 --> 00:39:54,720 Así, a utilización de un exemplo de unha base realmente Páxina HTML, ten o DOCTYPE 813 00:39:54,720 --> 00:39:56,720 declaración alí enriba. 814 00:39:56,720 --> 00:40:00,940 >> Esta declaración DOCTYPE é dicindo, estamos usando HTML5. 815 00:40:00,940 --> 00:40:03,370 Entón tes a etiqueta gran HTML. 816 00:40:03,370 --> 00:40:05,230 Contén unha cabeza e un corpo. 817 00:40:05,230 --> 00:40:06,970 Dentro da cabeza, ten o título. 818 00:40:06,970 --> 00:40:12,950 Iso é o que pasa no título barra do teu navegador. 819 00:40:12,950 --> 00:40:15,810 Temos unha etiqueta enlace que une nunha folla de estilo externa. 820 00:40:15,810 --> 00:40:19,880 E entón temos un guión que tira a partir dun JavaScript externo ben. 821 00:40:19,880 --> 00:40:23,750 >> E, a continuación, no interior do noso corpo é realmente o que se mostra na páxina. 822 00:40:23,750 --> 00:40:28,210 Temos un parágrafo e, a continuación, un imaxe dentro dese número. 823 00:40:28,210 --> 00:40:32,000 Este é un retrato de Gatinhos. 824 00:40:32,000 --> 00:40:35,840 Teña en conta que a imaxe tag péchase. 825 00:40:35,840 --> 00:40:41,760 Entón, en vez de abrir cunha imaxe e despois facer outro / imaxe, 826 00:40:41,760 --> 00:40:47,500 só ten esta pequena barra aquí, que a pecha. 827 00:40:47,500 --> 00:40:53,670 E a etiqueta de imaxe tamén ten esa chave atributo valor chamado alt. 828 00:40:53,670 --> 00:40:56,970 Este é o texto alternativo que ocorre cando pasa o rato sobre el. 829 00:40:56,970 --> 00:41:03,170 >> A maioría dos elementos HTML teñen algún valor da clave cousas que pode dar tanto, varios 830 00:41:03,170 --> 00:41:04,420 personalización. 831 00:41:04,420 --> 00:41:06,230 832 00:41:06,230 --> 00:41:08,705 É. 833 00:41:08,705 --> 00:41:09,955 >> Audiencia: [inaudível]. 834 00:41:09,955 --> 00:41:17,510 835 00:41:17,510 --> 00:41:19,680 >> ANGELA LI: Ben, polo que é unha atributo da marca. 836 00:41:19,680 --> 00:41:25,320 Polo tanto, se estaba a usar jQuery, podería facer select image.getAttribute. 837 00:41:25,320 --> 00:41:27,930 E entón podes buscar obter o atributo alt. 838 00:41:27,930 --> 00:41:31,040 E el vai che dar Gatinhos. 839 00:41:31,040 --> 00:41:37,400 Se se lembrar formularios HTML, entrada elementos terá atributos de nome. 840 00:41:37,400 --> 00:41:41,870 E iso é o que o PHP utiliza para enviar peticións cando un formulario é enviado. 841 00:41:41,870 --> 00:41:44,762 842 00:41:44,762 --> 00:41:50,064 >> Audiencia: Mencionar algo sobre como se usa ou Kittens.jpg 843 00:41:50,064 --> 00:41:54,410 algo que o que faltaba carpetas de arquivos ou outros arquivos? 844 00:41:54,410 --> 00:41:54,750 >> ANGELA LI: si. 845 00:41:54,750 --> 00:41:57,010 Entón, iso é o que se chama un parente camiño, porque eu non estou dando 846 00:41:57,010 --> 00:41:58,740 lle o camiño completo. 847 00:41:58,740 --> 00:42:05,160 Isto é como cando en C, se fai fopen algún ficheiro, se hi.txt fopen, que 848 00:42:05,160 --> 00:42:09,190 hi.txt deberá estar no mesmo directorio, a menos que darlle un máis 849 00:42:09,190 --> 00:42:11,530 camiño complexo. 850 00:42:11,530 --> 00:42:14,900 >> Audiencia: Entón pode especificar cal cartafol [inaudível]? 851 00:42:14,900 --> 00:42:17,660 >> ANGELA LI: Yeah. 852 00:42:17,660 --> 00:42:19,370 E pode mirar para arriba como facelo. 853 00:42:19,370 --> 00:42:23,480 Pero se eu quería estar fóra Kittens.jpg do directorio pai, eu faría 854 00:42:23,480 --> 00:42:24,730 .. / Kittens.jpg. 855 00:42:24,730 --> 00:42:29,680 856 00:42:29,680 --> 00:42:30,930 É. 857 00:42:30,930 --> 00:42:32,960 858 00:42:32,960 --> 00:42:33,760 Sentímolo. 859 00:42:33,760 --> 00:42:34,045 É. 860 00:42:34,045 --> 00:42:35,700 Oh home, eu esquezo a pregunta. 861 00:42:35,700 --> 00:42:36,460 Cal foi a pregunta? 862 00:42:36,460 --> 00:42:39,570 Ah, a pregunta era é, Kittens.jpg Espérase que estar no mesmo directorio? 863 00:42:39,570 --> 00:42:40,630 E neste caso, é. 864 00:42:40,630 --> 00:42:44,030 Pero tamén pode darlle un certo camiño de tal xeito que non ten que ser. 865 00:42:44,030 --> 00:42:47,100 866 00:42:47,100 --> 00:42:48,350 Bo? 867 00:42:48,350 --> 00:42:50,190 868 00:42:50,190 --> 00:42:51,350 >> CSS. 869 00:42:51,350 --> 00:42:55,420 Entón, CSS, como HTML, non é unha linguaxe de programación. 870 00:42:55,420 --> 00:42:58,250 CSS é só unha serie de regras de estilo. 871 00:42:58,250 --> 00:43:00,130 Queda para CSS. 872 00:43:00,130 --> 00:43:03,910 E usalo en conxunto con HTML para páxinas de estilo. 873 00:43:03,910 --> 00:43:08,140 Polo tanto, hai tres formas podes incluílo lo. 874 00:43:08,140 --> 00:43:11,950 Unha maneira que podes facer é na cabeza parte do seu HTML, pode só 875 00:43:11,950 --> 00:43:15,410 abrir unha marca de estilo e despois ir algunhas regras CSS alí. 876 00:43:15,410 --> 00:43:16,759 É moi Aceptar. 877 00:43:16,759 --> 00:43:17,228 É. 878 00:43:17,228 --> 00:43:21,449 >> Audiencia: Vostede podería poñer os marcas de estilo no medio, imos 879 00:43:21,449 --> 00:43:22,860 digamos, corpo e / corpo. 880 00:43:22,860 --> 00:43:27,400 E entón sería styling só no corpo. 881 00:43:27,400 --> 00:43:28,840 >> ANGELA LI: Vostede podería. 882 00:43:28,840 --> 00:43:29,590 El vai traballar. 883 00:43:29,590 --> 00:43:33,990 Pero non debe, porque estilo é tipo de metadatos que debe ir 884 00:43:33,990 --> 00:43:35,890 o xefe do seu documento. 885 00:43:35,890 --> 00:43:38,280 Corpo realmente debe conter só o que está realmente indo a 886 00:43:38,280 --> 00:43:39,420 aparecer na súa páxina. 887 00:43:39,420 --> 00:43:42,155 >> Audiencia: Entón colocaría estilo na súa cabeza ao estilo da 888 00:43:42,155 --> 00:43:43,930 a páxina web, non? 889 00:43:43,930 --> 00:43:44,300 >> ANGELA LI: Yeah. 890 00:43:44,300 --> 00:43:50,470 Entón, poñer estilo aquí, esas regras CSS aplicarase a toda páxina en base a 891 00:43:50,470 --> 00:43:52,100 seus selectores. 892 00:43:52,100 --> 00:43:57,090 Polo tanto, a mellor forma de facelo é, ao contrario de ter unha marca de estilo na súa cabeza, 893 00:43:57,090 --> 00:44:00,430 ten este enlace para un estilo externo folla como eu mostre no 894 00:44:00,430 --> 00:44:01,980 exemplo anterior. 895 00:44:01,980 --> 00:44:05,920 O que isto significa é que intenta e atopa o arquivo style.css e, a continuación, tira- 896 00:44:05,920 --> 00:44:08,470 e en que utiliza como o estilos para a páxina. 897 00:44:08,470 --> 00:44:10,500 E o seu style.css faría basta ollar así. 898 00:44:10,500 --> 00:44:13,330 Sería só unha morea de CSS. 899 00:44:13,330 --> 00:44:16,210 >> E, finalmente, hai outra forma que pode incluír CSS, o que realmente 900 00:44:16,210 --> 00:44:17,480 non debe nunca facer. 901 00:44:17,480 --> 00:44:18,950 É un estilo en liña chamada. 902 00:44:18,950 --> 00:44:22,650 E así calquera elemento HTML pode sacar un atributo de estilo. 903 00:44:22,650 --> 00:44:26,320 E entón, nese atributo de estilo, pode dar-lle as regras de CSS. 904 00:44:26,320 --> 00:44:29,140 Polo tanto, neste caso, sexa cal sexa div Estou definir ben aquí, que vai 905 00:44:29,140 --> 00:44:32,580 ten un fondo branco e unha cor de texto negro. 906 00:44:32,580 --> 00:44:35,620 Pero non debe facelo, porque o que isto é que pon o seu estilo 907 00:44:35,620 --> 00:44:36,850 dentro do seu HTML. 908 00:44:36,850 --> 00:44:40,530 >> E sei que temos falado sobre HTML é estrutura e CSS é o estilo. 909 00:44:40,530 --> 00:44:42,790 Se fai iso, el mestura los xuntos. 910 00:44:42,790 --> 00:44:44,550 E non é moi limpo. 911 00:44:44,550 --> 00:44:45,800 Polo tanto, non fagas iso. 912 00:44:45,800 --> 00:44:47,690 913 00:44:47,690 --> 00:44:52,100 Empregando un exemplo de CSS, alí enriba, nós pode seleccionar o corpo do HTML 914 00:44:52,100 --> 00:44:52,380 documental. 915 00:44:52,380 --> 00:44:55,110 E nós somos como, todo de será Comic Sans. 916 00:44:55,110 --> 00:44:57,290 Eu tamén non recomendo iso. 917 00:44:57,290 --> 00:44:59,940 Pero pode facelo. 918 00:44:59,940 --> 00:45:03,140 >> A segunda regra aquí, vai para seleccionar o elemento no 919 00:45:03,140 --> 00:45:04,880 páxina co ID de inicio. 920 00:45:04,880 --> 00:45:11,690 Así, calquera elemento HTML, eu dixen ID = Principal, eu vou dar un que 921 00:45:11,690 --> 00:45:16,020 Marxe de 20 píxeles e aliñar todo, todo o texto, para o centro. 922 00:45:16,020 --> 00:45:19,030 A última cousa que escolle por clase CSS. 923 00:45:19,030 --> 00:45:24,450 Así, calquera elemento na páxina que eu dei unha clase de sección, eu vou facelo 924 00:45:24,450 --> 00:45:26,602 unha cor de fondo de luz azul. 925 00:45:26,602 --> 00:45:29,380 926 00:45:29,380 --> 00:45:30,040 Yep. 927 00:45:30,040 --> 00:45:30,700 Isto é todo o que eu teño. 928 00:45:30,700 --> 00:45:30,890 Pregunta? 929 00:45:30,890 --> 00:45:34,020 >> Audiencia: O que a hashtag antes principal facer? 930 00:45:34,020 --> 00:45:36,310 >> ANGELA LI: A pregunta é, o que fai a hashtag antes afazeres principal? 931 00:45:36,310 --> 00:45:40,770 Neste caso, a suma CSS significa escoller por ID. 932 00:45:40,770 --> 00:45:47,490 Entón, se eu tiña algún elemento HTML, como divId = principais, esta regra CSS selecciona 933 00:45:47,490 --> 00:45:49,260 a cousa con ID de inicio. 934 00:45:49,260 --> 00:45:53,940 E de igual xeito, o período en diante sección é seleccionar por clase de CSS ou 935 00:45:53,940 --> 00:45:56,558 seleccionar por clase de HTML. 936 00:45:56,558 --> 00:46:00,940 >> Audiencia: Por que hai un ten antes 6 en cor de fondo? 937 00:46:00,940 --> 00:46:01,270 >> ANGELA LI: Yeah. 938 00:46:01,270 --> 00:46:03,360 Entón a pregunta é, por que hai un hash antes do 6? 939 00:46:03,360 --> 00:46:05,320 Isto é diferente do que hash. 940 00:46:05,320 --> 00:46:09,500 Isto significa que está dando unha cor hexadecimal. 941 00:46:09,500 --> 00:46:14,260 Así, as cores hexadecimais, iso só representa unha cor. 942 00:46:14,260 --> 00:46:17,860 E recorda cando triples RGB fixo o pset forense? 943 00:46:17,860 --> 00:46:18,770 Isto é semellante. 944 00:46:18,770 --> 00:46:21,590 Os dous primeiros díxitos representan como vermello é a cor. 945 00:46:21,590 --> 00:46:23,260 O segundo dous representan canto verde. 946 00:46:23,260 --> 00:46:25,450 E o terceiro representa canto azul. 947 00:46:25,450 --> 00:46:30,060 E o hash é que isto vai para representar unha cor. 948 00:46:30,060 --> 00:46:35,660 >> Así, calquera cousa desde 0, 0, 0, 0, 0, 0 Se a F, F, M, F, M, F é válido. 949 00:46:35,660 --> 00:46:39,550 É un pouco de memoria válidos que poden ser presentada polo seu navegador. 950 00:46:39,550 --> 00:46:39,790 Pregunta? 951 00:46:39,790 --> 00:46:43,590 >> Audiencia: Cal é a diferenza entre usar por ID e por clase? 952 00:46:43,590 --> 00:46:46,470 >> ANGELA LI: A pregunta é o que se a diferenza entre 953 00:46:46,470 --> 00:46:48,950 usar por ID e clase? 954 00:46:48,950 --> 00:46:54,390 Pode que só un elemento dunha Documento HTML que ten un determinado ID. 955 00:46:54,390 --> 00:46:58,660 Así, só unha cousa na miña páxina se permite ter ID de inicio. 956 00:46:58,660 --> 00:47:02,580 Entón usalo para iso é a cabeceira. 957 00:47:02,580 --> 00:47:03,850 Esta é a navegación. 958 00:47:03,850 --> 00:47:05,230 Este é o pé. 959 00:47:05,230 --> 00:47:09,070 Clases son diferentes, porque pode aplicar clases a tantos elementos HTML 960 00:47:09,070 --> 00:47:10,100 como quere. 961 00:47:10,100 --> 00:47:15,860 >> Así, por exemplo, eu fixen parte da clase, porque probablemente hai máis dun 962 00:47:15,860 --> 00:47:17,540 sección na miña páxina. 963 00:47:17,540 --> 00:47:20,200 Só está autorizado a ter o maior número elementos na páxina co mesmo 964 00:47:20,200 --> 00:47:23,190 clase, pero só unha cun correcto ID. 965 00:47:23,190 --> 00:47:25,600 >> Audiencia: Entón, o punto representa a clase? 966 00:47:25,600 --> 00:47:26,090 >> ANGELA LI: Yeah. 967 00:47:26,090 --> 00:47:27,380 Un punto representa unha clase. 968 00:47:27,380 --> 00:47:29,990 969 00:47:29,990 --> 00:47:31,540 Legal. 970 00:47:31,540 --> 00:47:32,370 Isto é todo o que eu teño, rapaces. 971 00:47:32,370 --> 00:47:33,544 Grazas. 972 00:47:33,544 --> 00:48:13,380 >> [Aplausos] 973 00:48:13,380 --> 00:48:14,290 >> ZAMYLA CHAN: Ola, todo o mundo. 974 00:48:14,290 --> 00:48:14,880 Estou Zamyla. 975 00:48:14,880 --> 00:48:18,830 Vou facer a cuberta PHP, MVC, SQL e hoxe. 976 00:48:18,830 --> 00:48:22,350 977 00:48:22,350 --> 00:48:26,110 Unha gran parte do material que eu vou estar cuberta será moi bonito 978 00:48:26,110 --> 00:48:29,100 dereito de pset7. 979 00:48:29,100 --> 00:48:29,700 Todo ben. 980 00:48:29,700 --> 00:48:31,180 Entón o que é PHP? 981 00:48:31,180 --> 00:48:35,150 PHP significa PHP Hypertext Preprocessor. 982 00:48:35,150 --> 00:48:38,740 Por iso, en si mesmo, é un recursiva nome, o que é moi legal. 983 00:48:38,740 --> 00:48:42,220 PHP é unha linguaxe de script do lado do servidor, e ofrece a infraestrutura 984 00:48:42,220 --> 00:48:44,610 e os fundamentos lóxicos da nosa web. 985 00:48:44,610 --> 00:48:48,520 >> Entón, Angela falou moito sobre o HTML e CSS que fará que a estrutura 986 00:48:48,520 --> 00:48:49,530 da web. 987 00:48:49,530 --> 00:48:53,210 Pero e se quere cambiar isto contido dinámicamente ou se varía 988 00:48:53,210 --> 00:48:55,240 con base no usuario ou certas condicións? 989 00:48:55,240 --> 00:48:57,060 É alí onde vén dentro PHP 990 00:48:57,060 --> 00:49:02,610 Agora, normalmente, PHP pode levar algúns menos liñas para implantar o mesmo 991 00:49:02,610 --> 00:49:07,380 en C. Porque PHP trata sobre a memoria xestión para o programador, 992 00:49:07,380 --> 00:49:11,170 ao contrario de nós ter que malloc libre, cousas dese tipo. 993 00:49:11,170 --> 00:49:15,430 >> Pero desde o PHP é unha interpretación linguaxe, tipicamente, pode realizar 994 00:49:15,430 --> 00:49:19,540 un pouco máis amodo do que C, a cal é unha linguaxe compilada. 995 00:49:19,540 --> 00:49:23,150 Porque estamos movendo programación linguas, imos ollar para a forma na que o 996 00:49:23,150 --> 00:49:24,570 sintaxe será diferente. 997 00:49:24,570 --> 00:49:28,770 Imos ter moito coidado para non se confunden con iso. 998 00:49:28,770 --> 00:49:33,750 Entón, coa sintaxe PHP, se é incorporación de PHP dentro dun HTML 999 00:49:33,750 --> 00:49:40,430 ficheiro ou dentro dun arquivo php. si mesmo, que poñer o código no aberto 1000 00:49:40,430 --> 00:49:45,270 PHP e as etiquetas PHP pechados como seguinte, como na pantalla. 1001 00:49:45,270 --> 00:49:46,660 >> Variables en PHP. 1002 00:49:46,660 --> 00:49:51,490 Cada variable única terá comezo con o sinal $, seguido do nome 1003 00:49:51,490 --> 00:49:53,150 súa variable. 1004 00:49:53,150 --> 00:49:56,530 Agora, as variables en PHP son vagamente ingresaran, o que significa que non é preciso 1005 00:49:56,530 --> 00:50:00,030 para indicar que o tipo de datos é cando está declarando iso. 1006 00:50:00,030 --> 00:50:03,505 Con todo, iso non significa que eles non ten ningún tipo de todo. 1007 00:50:03,505 --> 00:50:09,370 Entón, se eu declarar unha variable e só definir el igual a 1, e entón eu declarar 1008 00:50:09,370 --> 00:50:15,140 outra variable, estableza o igual a "1", e logo, outro 1.0, así como, 1009 00:50:15,140 --> 00:50:19,410 dependendo do tipo de igualdade operadores que eu uso, se eu queira comparar 1010 00:50:19,410 --> 00:50:21,830 en todo tipo, así que eles van ser iguais. 1011 00:50:21,830 --> 00:50:25,570 Pero se eu quero ter seguro de que o tipos son iguais, PHP pode facer 1012 00:50:25,570 --> 00:50:28,690 que, aínda que non indican que tipo é cando nós 1013 00:50:28,690 --> 00:50:31,170 primeiro facer o ficheiro. 1014 00:50:31,170 --> 00:50:33,990 >> Agora, en PHP, a pesar de ser conmutación de programación 1015 00:50:33,990 --> 00:50:39,360 linguaxes de C, aínda temos a nosa fiel a condición, tal como esta. 1016 00:50:39,360 --> 00:50:43,270 Nós aínda temos os nosos lazos de agora, só como este, onde puxo no seu 1017 00:50:43,270 --> 00:50:47,300 condición e, a continuación, o corpo do ciclo. 1018 00:50:47,300 --> 00:50:50,360 E despois tamén temos o noso loop for, que normalmente se parece con isto. 1019 00:50:50,360 --> 00:50:55,330 Entón, se eu quería facer unha iteración sobre todo Serie de exercicios nove e someter e chamar a un 1020 00:50:55,330 --> 00:50:58,960 submitPset función, entón eu podo facer iso aquí, o que vostedes teñen todo 1021 00:50:58,960 --> 00:50:59,830 feito por este punto. 1022 00:50:59,830 --> 00:51:01,080 Parabéns, polo camiño. 1023 00:51:01,080 --> 00:51:04,560 1024 00:51:04,560 --> 00:51:07,550 >> Para a cámara, a xente dixo, grazas. 1025 00:51:07,550 --> 00:51:11,220 Agora, se non quere só utilizar este loop, entón o PHP en realidade tamén 1026 00:51:11,220 --> 00:51:13,580 ten cousas chamados loops foreach. 1027 00:51:13,580 --> 00:51:22,210 Entón, se eu tivese un array de enteiros, 0 a 8, almacenados nas Serie de exercicios matriz, 1028 00:51:22,210 --> 00:51:27,290 entón eu podería ter un loop foreach que itera sobre todos os números en Serie de exercicios. 1029 00:51:27,290 --> 00:51:30,640 E entón eu podería chamar o mesmo funciona oito veces, 1030 00:51:30,640 --> 00:51:31,910 así como eu fixen antes. 1031 00:51:31,910 --> 00:51:36,480 Entón, isto para cada circuíto é bo, porque non ten que se non sabe 1032 00:51:36,480 --> 00:51:39,470 a lonxitude exacto da matriz que ter, a continuación, usando ese loop foreach 1033 00:51:39,470 --> 00:51:42,800 vai coidar diso para ti. 1034 00:51:42,800 --> 00:51:45,410 >> Entón eu fixen Serie de exercicios como unha matriz. 1035 00:51:45,410 --> 00:51:46,700 Imos ollar para iso. 1036 00:51:46,700 --> 00:51:51,290 Arrays en PHP normalmente son os mesmos que os que temos en C, onde 1037 00:51:51,290 --> 00:51:52,960 podes declarar un array. 1038 00:51:52,960 --> 00:51:59,200 E aquí, podo declarar unha matriz baleira e, a continuación, construír a dinámica mediante 1039 00:51:59,200 --> 00:52:00,850 índices como enteiros. 1040 00:52:00,850 --> 00:52:04,140 Así, o índice 0, eu estou indo para almacenar un enteiro denominado 1. 1041 00:52:04,140 --> 00:52:09,210 No 1 da miña lista, eu vou para almacenar o valor de 2. 1042 00:52:09,210 --> 00:52:12,670 E o terceiro, pero o índice de segundo número, vou 1043 00:52:12,670 --> 00:52:14,870 almacenar o número 12. 1044 00:52:14,870 --> 00:52:17,250 >> Agora, iso é bo na medida en que funciona, funciona ben. 1045 00:52:17,250 --> 00:52:21,310 Pero dicir que é importante para min o que cada índice se mantén. 1046 00:52:21,310 --> 00:52:24,500 Para min, o índice 0 significa o no; moitos gatos que teño. 1047 00:52:24,500 --> 00:52:27,400 E a taxa de 1 significa como moitas curuxas que eu teño. 1048 00:52:27,400 --> 00:52:29,450 E o próximo significa cantos cans. 1049 00:52:29,450 --> 00:52:34,140 Ben, entón é para especificar que, no canto de ter que lembrar 0 refírese a 1050 00:52:34,140 --> 00:52:38,090 gatos e 1 a curuxas, podo usar arrays asociativos, o que significa que 1051 00:52:38,090 --> 00:52:42,260 no canto de números enteiros como os meus índices, Podo realmente usar cordas. 1052 00:52:42,260 --> 00:52:43,290 >> Entón, iso é moi útil. 1053 00:52:43,290 --> 00:52:47,130 E, basicamente, só substituído os enteiros con cadeas. 1054 00:52:47,130 --> 00:52:50,074 E aí tes un array asociativo. 1055 00:52:50,074 --> 00:52:51,930 É. 1056 00:52:51,930 --> 00:52:55,800 >> Audiencia: Existe unha razón pola cal non hai un subliñado para o segundo 1057 00:52:55,800 --> 00:52:58,750 parte, porque a miña lista ten a matriz. 1058 00:52:58,750 --> 00:53:01,330 >> ZAMYLA CHAN: A cuestión foi, é Hai unha razón pola que hai unha 1059 00:53:01,330 --> 00:53:03,320 subliñado entre meu e lista? 1060 00:53:03,320 --> 00:53:03,610 Non 1061 00:53:03,610 --> 00:53:06,878 É así que eu estou nomeando miña variable. 1062 00:53:06,878 --> 00:53:11,670 >> Audiencia: O primeiro liña, é unha palabra. 1063 00:53:11,670 --> 00:53:12,560 >> ZAMYLA CHAN: As miñas desculpas. 1064 00:53:12,560 --> 00:53:13,410 Vou corrixir isto. 1065 00:53:13,410 --> 00:53:13,620 É. 1066 00:53:13,620 --> 00:53:15,460 Deben ser o mesmo nome da variable. 1067 00:53:15,460 --> 00:53:16,710 Boa captura. 1068 00:53:16,710 --> 00:53:19,640 1069 00:53:19,640 --> 00:53:19,950 Aceptar. 1070 00:53:19,950 --> 00:53:22,610 Entón, imos seguir adiante para cadea concatenação. 1071 00:53:22,610 --> 00:53:27,500 Se eu quixese tomar dúas cordas, entón podo concatenar-los 1072 00:53:27,500 --> 00:53:28,550 co operador punto. 1073 00:53:28,550 --> 00:53:32,440 Entón, se eu teño Milo como un nome Bananas e como un último nome, así 1074 00:53:32,440 --> 00:53:35,430 concatenação co operador punto e logo poñer un espazo entre 1075 00:53:35,430 --> 00:53:39,210 vai facer unha secuencia que contén Milo Bananas, o que podo then echo ou, 1076 00:53:39,210 --> 00:53:41,280 en vez diso, imprimir. 1077 00:53:41,280 --> 00:53:44,465 >> Falando de eco, imos falar sobre algúns útil - 1078 00:53:44,465 --> 00:53:44,920 oops. 1079 00:53:44,920 --> 00:53:46,030 Sinto moito. 1080 00:53:46,030 --> 00:53:52,920 Algunhas funcións PHP útiles. 1081 00:53:52,920 --> 00:53:56,240 Polo tanto, temos a - 1082 00:53:56,240 --> 00:53:57,444 dificultades técnicas. 1083 00:53:57,444 --> 00:53:58,694 Un segundo. 1084 00:53:58,694 --> 00:54:16,960 1085 00:54:16,960 --> 00:54:19,550 A enviei. 1086 00:54:19,550 --> 00:54:22,320 Problemas de PowerPoint. 1087 00:54:22,320 --> 00:54:29,200 E estamos de volta con funcións PHP. 1088 00:54:29,200 --> 00:54:32,010 1089 00:54:32,010 --> 00:54:35,150 E estamos de volta con funcións PHP. 1090 00:54:35,150 --> 00:54:39,890 >> Polo tanto, temos a función de esixir, cando se pasar nun arquivo, aquí está só 1091 00:54:39,890 --> 00:54:43,300 un exemplo dun ficheiro que Podería pasar dentro 1092 00:54:43,300 --> 00:54:47,605 Entón, que debería incluír o código PHP a partir dese ficheiro que indicar. 1093 00:54:47,605 --> 00:54:49,940 E vai avaliar que dentro 1094 00:54:49,940 --> 00:54:54,450 Entón, nós tamén temos o eco, o que é un paralelo para printf. 1095 00:54:54,450 --> 00:54:57,710 Exit é un paralelo de romper, que sae do bloque de 1096 00:54:57,710 --> 00:54:58,570 código que está dentro 1097 00:54:58,570 --> 00:55:03,180 E, a continuación, comproba baleiros se unha determinada variable é como nulo ou cero ou 1098 00:55:03,180 --> 00:55:08,482 todo o que é equiparado a ser baleiro. 1099 00:55:08,482 --> 00:55:09,438 É. 1100 00:55:09,438 --> 00:55:15,341 >> Audiencia: Para a concatenación operador punto un, en PHP, é que o 1101 00:55:15,341 --> 00:55:20,158 aínda que en JavaScript onde está a usar o punto para concatenação significa máis? 1102 00:55:20,158 --> 00:55:27,440 Así, o nome completo, podería ter dólar primeiro sinal + e, a continuación, + durar? 1103 00:55:27,440 --> 00:55:27,720 >> ZAMYLA CHAN: Yeah. 1104 00:55:27,720 --> 00:55:32,150 Polo tanto, a cuestión era saber se o PHP nós pode usar o mesmo concatenação 1105 00:55:32,150 --> 00:55:33,890 como en JavaScript coas vantaxes. 1106 00:55:33,890 --> 00:55:35,410 E José vai entrar niso máis tarde. 1107 00:55:35,410 --> 00:55:36,620 Coido que ten un slide sobre iso. 1108 00:55:36,620 --> 00:55:37,570 En realidade, é diferente. 1109 00:55:37,570 --> 00:55:41,310 Así, en JavaScript, ten que empregar máis para concatenar cadeas. 1110 00:55:41,310 --> 00:55:43,280 E en PHP, ten que usar o operador punto. 1111 00:55:43,280 --> 00:55:44,530 Entón, eles son diferentes. 1112 00:55:44,530 --> 00:55:46,680 1113 00:55:46,680 --> 00:55:46,910 >> Aceptar. 1114 00:55:46,910 --> 00:55:49,500 Polo tanto, agora que nós Cubrimos todo este PHP, onde fai 1115 00:55:49,500 --> 00:55:50,490 realmente vir a cadra? 1116 00:55:50,490 --> 00:55:54,470 Ben, el vén a cadra cando Pode combina-lo co noso HTML. 1117 00:55:54,470 --> 00:55:59,550 Así, o noso PHP daranos o poder de cambiar o contido HTML dunha páxina antes de 1118 00:55:59,550 --> 00:56:00,000 seu carga. 1119 00:56:00,000 --> 00:56:04,270 Así, con base en diferentes condicións, xeralmente o usuario específico que se 1120 00:56:04,270 --> 00:56:07,520 sesión, podemos amosar información diferentes. 1121 00:56:07,520 --> 00:56:08,800 Fermoso, tes unha pregunta? 1122 00:56:08,800 --> 00:56:15,510 >> Audiencia: Pode concatenar un enteiro tamén? 1123 00:56:15,510 --> 00:56:16,760 >> ZAMYLA CHAN: Si, pode. 1124 00:56:16,760 --> 00:56:19,530 1125 00:56:19,530 --> 00:56:23,270 Polo tanto, a cuestión era se poida concatenar enteiros ou outra 1126 00:56:23,270 --> 00:56:28,920 variable.s agora, pasamos a MVC, que é un paradigma que foi utilizado en 1127 00:56:28,920 --> 00:56:33,380 pset7 e unha morea de deseñadores web usan para organizar o código nos arquivos 1128 00:56:33,380 --> 00:56:34,490 na súa páxina web. 1129 00:56:34,490 --> 00:56:35,870 M significa Model. 1130 00:56:35,870 --> 00:56:41,450 E basicamente arquivos de modelo tratará con interaccións co banco de datos. 1131 00:56:41,450 --> 00:56:44,640 Ver arquivos, eles se relacionan co estética do sitio web. 1132 00:56:44,640 --> 00:56:47,550 E as alzas Controlador solicitudes dos usuarios, analiza 1133 00:56:47,550 --> 00:56:49,230 datos, fai outra lóxica. 1134 00:56:49,230 --> 00:56:52,520 >> En pset7, quedamos o modelo eo controlador. 1135 00:56:52,520 --> 00:56:55,880 E nós só chamou os controladores e poñelos no directorio público. 1136 00:56:55,880 --> 00:57:01,730 E os arquivos de visión, podemos usalos como modelos no directorio de modelos. 1137 00:57:01,730 --> 00:57:07,260 Polo tanto, este diagrama aquí representa tamén o mesmo tipo de división co 1138 00:57:07,260 --> 00:57:10,510 modelo eo controlador en vermello aquí na parte esquerda e 1139 00:57:10,510 --> 00:57:12,770 o punto de vista do lado dereito. 1140 00:57:12,770 --> 00:57:16,020 Polo tanto, este é un esquema que algúns de vós pode ver no horario de oficina ou 1141 00:57:16,020 --> 00:57:19,130 diagramas que estabamos deseño como foron descubrir o seu pset. 1142 00:57:19,130 --> 00:57:25,030 >> Entón, aquí, en un controlador, un modelo controlador, que teñen funcións 1143 00:57:25,030 --> 00:57:30,490 que se relacionan coa procura de SQL base de datos, a execución de lóxica PHP. 1144 00:57:30,490 --> 00:57:32,370 Quizais mirar para arriba un stock en Yahoo! 1145 00:57:32,370 --> 00:57:34,590 Finanzas. 1146 00:57:34,590 --> 00:57:37,390 Ou quizais, que tería só que comprobar a ver se o usuario presentara un 1147 00:57:37,390 --> 00:57:40,250 formar xa antes de ter visitou súa páxina. 1148 00:57:40,250 --> 00:57:43,390 E entón converteríase Unha forma aquí. 1149 00:57:43,390 --> 00:57:48,210 Despois de que o xeito fora presentado polo usuario, a acción que se 1150 00:57:48,210 --> 00:57:53,470 especificado na etiqueta HTML do formulario indicaría a páxina que 1151 00:57:53,470 --> 00:57:55,620 retorna os datos a. 1152 00:57:55,620 --> 00:57:59,460 >> Entón, toda esa información sería enviado de volta para o seu control. 1153 00:57:59,460 --> 00:58:02,620 Entón probablemente faría algo máis lóxica en que e quizais executar algúns 1154 00:58:02,620 --> 00:58:06,510 máis consultas na base de datos SQL e entón, finalmente, chegar a un ben 1155 00:58:06,510 --> 00:58:11,930 set cheo de información que faría pasar nalgún outro modelo 1156 00:58:11,930 --> 00:58:13,950 que exhibía esta información. 1157 00:58:13,950 --> 00:58:17,030 Agora, como é que imos realmente embalar que a información anterior? 1158 00:58:17,030 --> 00:58:23,980 Así, temos unha función chamada de renderización que estaba no ficheiro functions.php na 1159 00:58:23,980 --> 00:58:29,950 pset7, onde pasar o nome de un ficheiro, o nome dun modelo. 1160 00:58:29,950 --> 00:58:32,160 >> E entón tamén pasar en unha matriz asociativa. 1161 00:58:32,160 --> 00:58:37,150 E así que a matriz asociativa representa a información diferente 1162 00:58:37,150 --> 00:58:39,040 que quere pasar dentro 1163 00:58:39,040 --> 00:58:43,460 Agora, o que será constante en Nestes exemplos é que as teclas ou, 1164 00:58:43,460 --> 00:58:47,070 no seu lugar, as claves do asociativo matrices, estas son o que vai ser 1165 00:58:47,070 --> 00:58:51,050 Espérase que ser constante polo modelo, porque sabe que ten 1166 00:58:51,050 --> 00:58:53,990 algo chamado mensaxe ou chamado nome. 1167 00:58:53,990 --> 00:58:56,940 E entón as cousas do lado dereito, o valores reais, polo tanto, neste caso, quen é 1168 00:58:56,940 --> 00:59:00,750 un bo rapaz e Milo, quen van ser os valores que están cambiando 1169 00:59:00,750 --> 00:59:05,610 que o controlador cambia cada vez ou en base a unha determinada condición e 1170 00:59:05,610 --> 00:59:07,120 que pasará dentro 1171 00:59:07,120 --> 00:59:12,790 >> Entón, aquí en modelos, vemos que está a usar caracteres especiais en HTML, 1172 00:59:12,790 --> 00:59:16,370 o que só significa basicamente que queremos para obter a secuencia de pares que a 1173 00:59:16,370 --> 00:59:17,580 usuario poñer dentro 1174 00:59:17,580 --> 00:59:20,880 E queremos substituír mensaxe alí. 1175 00:59:20,880 --> 00:59:26,110 Entón cando realmente ver o ficheiro, o específico 1176 00:59:26,110 --> 00:59:28,700 información é pasada dentro 1177 00:59:28,700 --> 00:59:33,850 Nótese que a clave de como facer os traballos é que as claves do asociativo 1178 00:59:33,850 --> 00:59:37,170 matrices, as variables se fan nomes aquí. 1179 00:59:37,170 --> 00:59:40,720 E así os valores de clave, que na matriz asociativa tórnase entón o 1180 00:59:40,720 --> 00:59:41,970 valor da variable. 1181 00:59:41,970 --> 00:59:44,800 1182 00:59:44,800 --> 00:59:46,040 >> Agora, imos pasar para SQL. 1183 00:59:46,040 --> 00:59:48,010 Queda para Structured Query Language. 1184 00:59:48,010 --> 00:59:50,460 E así, esta é só unha programación linguaxe deseñada 1185 00:59:50,460 --> 00:59:51,880 para a xestión de bases de datos. 1186 00:59:51,880 --> 00:59:56,860 E veu a cadra para nós nosa web finanzas pset7. 1187 00:59:56,860 --> 01:00:00,510 Esencialmente, é só un xeito doado de controlar e xestionar obxectos e táboas 1188 01:00:00,510 --> 01:00:02,070 e liga-los entre si. 1189 01:00:02,070 --> 01:00:06,860 Agora, pense na súa base de datos SQL basicamente como un arquivo de Excel, se cadra, 1190 01:00:06,860 --> 01:00:10,040 con varias follas con guías. 1191 01:00:10,040 --> 01:00:13,820 >> Entón pode ter varias táboas, quizais, que foi ligado a outro. 1192 01:00:13,820 --> 01:00:19,420 E moi parecido co Excel, temos unha morea de a función que queremos. 1193 01:00:19,420 --> 01:00:22,300 Por exemplo, podemos seleccionar determinadas liñas. 1194 01:00:22,300 --> 01:00:24,110 Podemos introducir información. 1195 01:00:24,110 --> 01:00:25,560 Podemos actualizar liñas. 1196 01:00:25,560 --> 01:00:27,440 E nós tamén pode eliminar as cousas. 1197 01:00:27,440 --> 01:00:30,920 1198 01:00:30,920 --> 01:00:36,560 >> O SQL seleccionar traballos de selección de liñas ou unha fileira de columnas especificadas dunha 1199 01:00:36,560 --> 01:00:39,640 base de datos que corresponden a un determinado criterios que sinale. 1200 01:00:39,640 --> 01:00:44,930 Entón aquí cando vexo select * from bruxo onde a casa = Corvinal, entón 1201 01:00:44,930 --> 01:00:48,340 Estou seleccionando *, o que significa que eu son seleccionar cada columna única en que 1202 01:00:48,340 --> 01:00:56,340 liña da táboa asistentes, pero só se a columna é igual a casa Corvinal. 1203 01:00:56,340 --> 01:00:57,840 Agora, iso é pura ou SQL. 1204 01:00:57,840 --> 01:01:02,680 Entón, se eu fun para o phpMyAdmin, que é a forma específica que usan para xestionar 1205 01:01:02,680 --> 01:01:07,040 nosos bancos de datos SQL, entón eu podería inserir que na páxina web do phpMyAdmin. 1206 01:01:07,040 --> 01:01:08,290 E iso sería executado. 1207 01:01:08,290 --> 01:01:11,280 >> Pero nós realmente queremos facer que no lado do PHP. 1208 01:01:11,280 --> 01:01:12,580 Entón, como imos facelo? 1209 01:01:12,580 --> 01:01:20,180 Así, usamos a función de consulta, que basicamente executa a consulta SQL. 1210 01:01:20,180 --> 01:01:21,830 Usar? 1211 01:01:21,830 --> 01:01:25,850 como un espazo reservado, podemos pasar en certos valores para a nosa cadea que nós 1212 01:01:25,850 --> 01:01:26,920 a substituír. 1213 01:01:26,920 --> 01:01:32,110 Por iso, se cadra estou almacenando diferente valores na curr_house, que 1214 01:01:32,110 --> 01:01:34,400 representa a casa actual que estou pasando. 1215 01:01:34,400 --> 01:01:39,040 Entón, podo pasar isto como un espazo reservado co punto de interrogación. 1216 01:01:39,040 --> 01:01:43,290 E entón eu vou basicamente realizar o mesmo que eu fixen antes, con excepción 1217 01:01:43,290 --> 01:01:45,550 agora, estou en PHP. 1218 01:01:45,550 --> 01:01:51,300 >> E consulta volverá un array asociativo. 1219 01:01:51,300 --> 01:01:53,470 E eu vou gardalo en liñas. 1220 01:01:53,470 --> 01:01:56,880 Agora, a consulta poderá fallar. 1221 01:01:56,880 --> 01:02:02,870 Quizais a procura de SQL non puido realizar porque non existe a táboa. 1222 01:02:02,870 --> 01:02:04,310 Ou quizais, a columna non existe. 1223 01:02:04,310 --> 01:02:05,400 Algo deu mal. 1224 01:02:05,400 --> 01:02:08,170 Ben, nese caso, vai querer facer Asegúrese de que verifique se o 1225 01:02:08,170 --> 01:02:09,700 consulta devolveu falso. 1226 01:02:09,700 --> 01:02:15,590 E iso é usando o triplo é igual a operación non. 1227 01:02:15,590 --> 01:02:19,660 >> E entón eu me desculpo, que é outra Función CS50, pasando unha mensaxe. 1228 01:02:19,660 --> 01:02:23,435 E se ollar para pedir desculpas, todo o que realmente fai é facer apology.php. 1229 01:02:23,435 --> 01:02:26,100 1230 01:02:26,100 --> 01:02:26,410 É. 1231 01:02:26,410 --> 01:02:29,630 >> Audiencia: Podería explicar que é o que estrela fai entre selección e de? 1232 01:02:29,630 --> 01:02:30,710 >> ZAMYLA CHAN: Si, absolutamente. 1233 01:02:30,710 --> 01:02:35,220 Entón, a estrela no medio de selección e de significa que quero seleccionar o conxunto 1234 01:02:35,220 --> 01:02:37,440 liña enteira da miña mesa. 1235 01:02:37,440 --> 01:02:41,900 Podería ter indicado selecciona nome, ano, casa. 1236 01:02:41,900 --> 01:02:46,160 E eu só ía incorporarse estes tres columnas na miña mesa. 1237 01:02:46,160 --> 01:02:51,560 Pero se eu dixer select *, entón eu vou ter todo nesta columna. 1238 01:02:51,560 --> 01:02:53,760 Entón eu vou che na parte de atrás primeiro. 1239 01:02:53,760 --> 01:02:57,656 >> Audiencia: Entón, iso aínda é en SQL, non? 1240 01:02:57,656 --> 01:02:59,610 É esta consulta ou iso é PHP? 1241 01:02:59,610 --> 01:03:00,550 >> ZAMYLA CHAN: Estamos nunha consulta. 1242 01:03:00,550 --> 01:03:01,940 Polo tanto, esta é en PHP. 1243 01:03:01,940 --> 01:03:06,280 Entón, a través da consulta función PHP, estamos executando unha consulta SQL. 1244 01:03:06,280 --> 01:03:11,988 1245 01:03:11,988 --> 01:03:15,364 >> Audiencia: É algo en SQL cadro de carácter, como seleccionar 1246 01:03:15,364 --> 01:03:17,834 ou asistentes ou casa? 1247 01:03:17,834 --> 01:03:20,050 >> ZAMYLA CHAN: É calquera cousa en SQL maiúsculas e minúsculas? 1248 01:03:20,050 --> 01:03:21,760 Eu creo que si. 1249 01:03:21,760 --> 01:03:24,620 Creo que SELECT e DO E onde están maiúsculas e minúsculas. 1250 01:03:24,620 --> 01:03:25,535 Non? 1251 01:03:25,535 --> 01:03:27,500 >> ROB BOWDEN: Entón, é todo o contrario. 1252 01:03:27,500 --> 01:03:32,030 Os nomes das columnas e os medios de mesa, todos estes son case-sensitive. 1253 01:03:32,030 --> 01:03:35,470 Pero ningunha das principais palabras do MySQL, como SELECT, FROM e Where, os que non son 1254 01:03:35,470 --> 01:03:36,140 maiúsculas e minúsculas. 1255 01:03:36,140 --> 01:03:36,420 Aceptar. 1256 01:03:36,420 --> 01:03:37,780 Así, o contrario do que eu dixen. 1257 01:03:37,780 --> 01:03:40,420 Así, as palabras clave do MySQL - 1258 01:03:40,420 --> 01:03:42,670 seleccionar, desde onde - os non son case-sensitive. 1259 01:03:42,670 --> 01:03:44,630 Pero o resto é. 1260 01:03:44,630 --> 01:03:45,210 Aceptar. 1261 01:03:45,210 --> 01:03:46,500 Vostede diante. 1262 01:03:46,500 --> 01:03:52,041 >> Audiencia: Se eu teño R $ liñas en termos de máis dunha liña, isto significa que se 1263 01:03:52,041 --> 01:03:53,640 só se fai unha matriz asociativa? 1264 01:03:53,640 --> 01:03:59,550 >> ZAMYLA CHAN: Entón, a cuestión era se as liñas ten máis de unha liña en que, se 1265 01:03:59,550 --> 01:04:01,800 se fai unha matriz asociativa? 1266 01:04:01,800 --> 01:04:05,680 Por iso, é un conxunto de asociativo matrices xa. 1267 01:04:05,680 --> 01:04:10,730 Así, mesmo se hai só unha liña volveu, entón ten que ir a 1268 01:04:10,730 --> 01:04:12,690 0 índice de que resultan. 1269 01:04:12,690 --> 01:04:15,316 E entón tes que primeira liña. 1270 01:04:15,316 --> 01:04:17,482 Si, Belinda? 1271 01:04:17,482 --> 01:04:21,258 >> Audiencia: Cando utilice os ===, é este o único exemplo? 1272 01:04:21,258 --> 01:04:22,210 Ou hai outros? 1273 01:04:22,210 --> 01:04:26,815 >> ZAMYLA CHAN: Entón, neste caso === é unha comparación entre os tipos. 1274 01:04:26,815 --> 01:04:29,870 1275 01:04:29,870 --> 01:04:34,050 Sentímolo. === É un comparador que compara tipo. 1276 01:04:34,050 --> 01:04:37,620 E entón == compara en todo tipo. 1277 01:04:37,620 --> 01:04:41,620 >> Audiencia: Pode explicar o que liñas é nesta situación? 1278 01:04:41,620 --> 01:04:45,120 É liña de datos? 1279 01:04:45,120 --> 01:04:48,100 >> ZAMYLA CHAN: O próximo foto, eu son vai explicar o que é liñas. 1280 01:04:48,100 --> 01:04:49,890 Entón, se non lle importa sostendo fóra diso. 1281 01:04:49,890 --> 01:04:50,620 E entón por detrás? 1282 01:04:50,620 --> 01:04:54,699 >> Audiencia: Para funcións como consulta, prestar e pedir desculpas [inaudível]? 1283 01:04:54,699 --> 01:04:59,050 1284 01:04:59,050 --> 01:05:03,050 >> ZAMYLA CHAN: A cuestión era se estas funcións - consulta, pedir desculpas, 1285 01:05:03,050 --> 01:05:04,510 e render - 1286 01:05:04,510 --> 01:05:05,930 son comúns en PHP. 1287 01:05:05,930 --> 01:05:09,460 Estes son os que CS50 escribiu para pset7. 1288 01:05:09,460 --> 01:05:09,910 E Jay? 1289 01:05:09,910 --> 01:05:15,333 >> Audiencia: Cando ten que dicir $ _SESSION, É que só para IDs? 1290 01:05:15,333 --> 01:05:17,310 Ou podería dicir que aquí? 1291 01:05:17,310 --> 01:05:23,440 >> ZAMYLA CHAN: Entón, a pregunta era cando usan $ _SESSION, que foi dalgún 1292 01:05:23,440 --> 01:05:25,290 variable global que estamos a usar. 1293 01:05:25,290 --> 01:05:32,080 Aquí esta variable vai ser local para a nosa función. 1294 01:05:32,080 --> 01:05:36,588 Entón, estamos só declarando unha nova variable. 1295 01:05:36,588 --> 01:05:38,460 >> Audiencia: Como pedir desculpas aplicado? 1296 01:05:38,460 --> 01:05:40,960 >> ZAMYLA CHAN: A pregunta era: como é pedir desculpas aplicado? 1297 01:05:40,960 --> 01:05:44,180 E eu creo que iso é realmente unha fermosa boas prácticas para vostedes para entrar en 1298 01:05:44,180 --> 01:05:49,260 a sección functions.php e mirar para pedir desculpas e ver como podería 1299 01:05:49,260 --> 01:05:50,670 feito isto só. 1300 01:05:50,670 --> 01:05:55,620 Así podo deixar isto para vostede, pero só dicir que, se ollar para pedir desculpas, 1301 01:05:55,620 --> 01:06:02,110 logo leva a mensaxe que sometidos a pedir desculpas, e entón el 1302 01:06:02,110 --> 01:06:06,570 fai esa mensaxe. 1303 01:06:06,570 --> 01:06:08,240 Máis algunha pregunta? 1304 01:06:08,240 --> 01:06:08,710 Eu amo preguntas. 1305 01:06:08,710 --> 01:06:09,555 Así, mantelos próximos. 1306 01:06:09,555 --> 01:06:11,888 >> Audiencia: [inaudível] 1307 01:06:11,888 --> 01:06:13,840 echo ou print alí? 1308 01:06:13,840 --> 01:06:15,900 >> ZAMYLA CHAN: A pregunta era: Non poderiamos simplemente colocar 1309 01:06:15,900 --> 01:06:17,000 echo ou print alí. 1310 01:06:17,000 --> 01:06:19,710 Así que tería feito algo lixeiramente diferente. 1311 01:06:19,710 --> 01:06:23,750 Isto tería impreso consulta Fallo en que - 1312 01:06:23,750 --> 01:06:27,420 Pois ben, agora, estamos en realidade na nosa Controller. 1313 01:06:27,420 --> 01:06:30,350 Entón, nós realmente non teñen HTML creado aquí. 1314 01:06:30,350 --> 01:06:34,946 Apologize facendo apologize.php en realidade redirecciona para apology.php. 1315 01:06:34,946 --> 01:06:39,560 1316 01:06:39,560 --> 01:06:42,200 Aceptar. 1317 01:06:42,200 --> 01:06:45,880 >> Entón, agora, imos continuar a abordar a cuestión de máis cedo do que 1318 01:06:45,880 --> 01:06:47,330 é realmente liñas. 1319 01:06:47,330 --> 01:06:51,960 Ben, consulta volverá unha matriz de liñas. 1320 01:06:51,960 --> 01:06:55,020 E cada liña é representada por unha matriz asociativa. 1321 01:06:55,020 --> 01:07:02,840 Entón, se eu tivera executado algunha consulta SQL e Teño gardado o resultado en liñas, logo 1322 01:07:02,840 --> 01:07:07,850 usando un loop foreach, a matriz nome é o primeiro en chegar - liñas. 1323 01:07:07,850 --> 01:07:13,170 E entón eu vou chamar cada liña na que $ row. 1324 01:07:13,170 --> 01:07:20,060 >> Entón iteración sobre iso, entón podo acceder columna o nome da liña dado, 1325 01:07:20,060 --> 01:07:22,340 columna do ano, ea casa da columna. 1326 01:07:22,340 --> 01:07:28,010 Teña en conta que eu non sería capaz de facelo con liñas, xa que o índice liñas 1327 01:07:28,010 --> 01:07:29,290 nome non existe. 1328 01:07:29,290 --> 01:07:31,970 Liñas é só un conxunto de arrays asociativos. 1329 01:07:31,970 --> 01:07:34,870 Entón tes dous niveis de alí. 1330 01:07:34,870 --> 01:07:37,170 Despois de ter a matriz de liñas, ten que entrar niso. 1331 01:07:37,170 --> 01:07:39,110 E entón podes acceder as columnas. 1332 01:07:39,110 --> 01:07:41,636 Será que isto deixar claro? 1333 01:07:41,636 --> 01:07:42,520 Si, fronte? 1334 01:07:42,520 --> 01:07:45,490 >> Audiencia: [inaudível] abrir soportes para [inaudível]? 1335 01:07:45,490 --> 01:07:46,220 >> ZAMYLA CHAN: Perdoe-me? 1336 01:07:46,220 --> 01:07:49,740 >> Audiencia: Os corchetes abertos. 1337 01:07:49,740 --> 01:07:52,420 >> ZAMYLA CHAN: Estes aquí? 1338 01:07:52,420 --> 01:07:58,520 Isto é que me permite incluír esa variable. 1339 01:07:58,520 --> 01:07:58,670 É. 1340 01:07:58,670 --> 01:08:01,900 >> Audiencia: Ao imprimir, é vostede imprimir o código HTML? 1341 01:08:01,900 --> 01:08:03,110 >> ZAMYLA CHAN: si. 1342 01:08:03,110 --> 01:08:07,720 Cando imprimo, este aquí é dentro meu modelo agora, para 1343 01:08:07,720 --> 01:08:10,310 meu punto de vista do método de MVC. 1344 01:08:10,310 --> 01:08:12,750 Entón, eu estou imprimindo en HTML. 1345 01:08:12,750 --> 01:08:16,670 >> Audiencia: Entón se fomos para desenvolvedor ferramentas tras a execución deste, poderiamos 1346 01:08:16,670 --> 01:08:17,160 que, de feito, en código? 1347 01:08:17,160 --> 01:08:18,410 >> ZAMYLA CHAN: Isto é unha gran pregunta, si. 1348 01:08:18,410 --> 01:08:22,359 Entón, se foi para as ferramentas de desenvolvemento en Firefox mediante Firebug ou 1349 01:08:22,359 --> 01:08:26,109 Chrome, entón si, podería ver o HTML específico. 1350 01:08:26,109 --> 01:08:28,470 Por iso, non ía amosar $ liña ["nome"]. 1351 01:08:28,470 --> 01:08:32,524 Ía amosar o que nome é nesa liña. 1352 01:08:32,524 --> 01:08:36,268 >> Audiencia: Só unha cuestión xeral, o que son tres e td definido como? 1353 01:08:36,268 --> 01:08:37,672 Por que nós [inaudível]? 1354 01:08:37,672 --> 01:08:41,850 1355 01:08:41,850 --> 01:08:44,814 >> ZAMYLA CHAN: tr liña da táboa, mesa tras td columna. 1356 01:08:44,814 --> 01:08:48,060 1357 01:08:48,060 --> 01:08:49,310 Aceptar. 1358 01:08:49,310 --> 01:08:55,771 1359 01:08:55,771 --> 01:08:56,835 >> Audiencia: Si, e os datos da táboa. 1360 01:08:56,835 --> 01:08:58,770 >> ZAMYLA CHAN: datos da táboa. 1361 01:08:58,770 --> 01:08:59,894 É. 1362 01:08:59,894 --> 01:09:08,670 >> Audiencia: É unha liña en que o liña é tratada como unha columna? 1363 01:09:08,670 --> 01:09:08,910 >> ZAMYLA CHAN: Sentímolo. 1364 01:09:08,910 --> 01:09:10,570 Pode repetir? 1365 01:09:10,570 --> 01:09:14,450 >> Audiencia: Como ver liñas? 1366 01:09:14,450 --> 01:09:16,310 >> ZAMYLA CHAN: Como vendo liñas en que tipo de forma? 1367 01:09:16,310 --> 01:09:21,796 Está falando sobre estes liñas aquí ou as liñas de tr? 1368 01:09:21,796 --> 01:09:22,630 >> Audiencia: As liñas. 1369 01:09:22,630 --> 01:09:25,229 >> ZAMYLA CHAN: Estas liñas aquí? 1370 01:09:25,229 --> 01:09:28,620 Eu ver isto como Eu executar a miña consulta. 1371 01:09:28,620 --> 01:09:38,729 E di, OK, eu teño ou 0 a n cantidade de liñas que corresponden aos criterios 1372 01:09:38,729 --> 01:09:40,510 que tiña consultado. 1373 01:09:40,510 --> 01:09:43,740 Entón, eu teño un número de liñas. 1374 01:09:43,740 --> 01:09:51,450 Así, as liñas, as liñas $, tendas de cada unha desas liñas en un array. 1375 01:09:51,450 --> 01:09:58,110 Así, aínda que sexa só un deles, é aínda un conxunto de liñas que con el. 1376 01:09:58,110 --> 01:10:03,010 >> Entón, por exemplo, este é semellante a cando buscada 1377 01:10:03,010 --> 01:10:05,390 a caché dos usuarios. 1378 01:10:05,390 --> 01:10:10,810 E os criterios de alí era o lugar onde ID coincide o ID da sesión. 1379 01:10:10,810 --> 01:10:14,250 Realmente é só unha liña que podería corresponder. 1380 01:10:14,250 --> 01:10:18,960 Pero aínda liñas de volver dunha liña. 1381 01:10:18,960 --> 01:10:22,620 Entón tería que ir a liñas, índice 0, caché de contido para 1382 01:10:22,620 --> 01:10:26,195 realmente chegar ó caché. 1383 01:10:26,195 --> 01:10:29,650 >> Audiencia: É a función de impresión en eco o mesmo? 1384 01:10:29,650 --> 01:10:30,670 >> ZAMYLA CHAN: si. 1385 01:10:30,670 --> 01:10:31,190 Si 1386 01:10:31,190 --> 01:10:33,304 Imprimir un eco da mesma. 1387 01:10:33,304 --> 01:10:42,400 >> Audiencia: É o loop foreach o único xeito de índice en liñas? 1388 01:10:42,400 --> 01:10:46,110 >> ZAMYLA CHAN: É un loop foreach o único xeito que pode 1389 01:10:46,110 --> 01:10:47,030 iterado a través de liñas? 1390 01:10:47,030 --> 01:10:47,180 Non 1391 01:10:47,180 --> 01:10:51,000 Tamén pode usar un loop for, sempre que sabe que a lonxitude 1392 01:10:51,000 --> 01:10:53,024 de serie da liña. 1393 01:10:53,024 --> 01:10:58,500 >> Audiencia: Podería acceder a ela usando unha liña como [inaudível]? 1394 01:10:58,500 --> 01:11:01,640 >> ZAMYLA CHAN: Entón non pode acceder a ela só usando liña se non ten un 1395 01:11:01,640 --> 01:11:05,160 loop foreach, sempre que non declarou liña. 1396 01:11:05,160 --> 01:11:08,150 1397 01:11:08,150 --> 01:11:09,660 Si 1398 01:11:09,660 --> 01:11:10,810 Si, o branco. 1399 01:11:10,810 --> 01:11:13,990 >> Audiencia: Entón o que tr e td facer? 1400 01:11:13,990 --> 01:11:16,790 >> ZAMYLA CHAN: Entón e tr td son etiquetas HTML. 1401 01:11:16,790 --> 01:11:19,590 tr indica o inicio dunha liña da táboa. 1402 01:11:19,590 --> 01:11:26,625 E cada un indica un td nova columna de datos da táboa. 1403 01:11:26,625 --> 01:11:32,275 >> Audiencia: Para un visual do que unha liña é como, só imaxinar o SQL, como 1404 01:11:32,275 --> 01:11:33,510 eles teñen unha liña. 1405 01:11:33,510 --> 01:11:35,980 [Inaudível]. 1406 01:11:35,980 --> 01:11:36,390 >> ZAMYLA CHAN: Yeah. 1407 01:11:36,390 --> 01:11:37,630 Isto é un gran punto. 1408 01:11:37,630 --> 01:11:41,510 Podes ver as liñas como só como nunha táboa de Excel, só 1409 01:11:41,510 --> 01:11:44,540 a lista de liñas. 1410 01:11:44,540 --> 01:11:46,870 Aceptar. 1411 01:11:46,870 --> 01:11:47,230 Todo ben. 1412 01:11:47,230 --> 01:11:50,740 Polo tanto, agora que xa sabemos select si non hai máis preguntas, nós imos 1413 01:11:50,740 --> 01:11:52,970 pasar por riba para inserción. 1414 01:11:52,970 --> 01:11:58,220 Entón, se eu quería introducir algúns táboa e inserir determinada columna 1415 01:11:58,220 --> 01:12:02,320 valores, podería inserirse me en Ravenclaw o ano 7. 1416 01:12:02,320 --> 01:12:07,245 Pero, ás veces pode haber duplicado valores, como vimos no pset7 cando 1417 01:12:07,245 --> 01:12:09,240 estaban a actualizar noso Cartafol. 1418 01:12:09,240 --> 01:12:15,610 >> Polo tanto, neste caso, queremos usar ON Duplicate KEY Update, para que non 1419 01:12:15,610 --> 01:12:18,280 almacenar varias liñas co mesmo valorar, senón actualiza-lo. 1420 01:12:18,280 --> 01:12:21,780 1421 01:12:21,780 --> 01:12:25,560 Entón nós realmente temos de actualización, o que non é unha peza inserida. 1422 01:12:25,560 --> 01:12:30,100 É só unha actualización onde actualizar nunha determinada mesa cunha dada 1423 01:12:30,100 --> 01:12:34,403 criterios e entón, finalmente, eliminar que fai unha cousa moi semellante. 1424 01:12:34,403 --> 01:12:40,200 >> Audiencia: Podería brevemente pasar por riba da chave duplicada? 1425 01:12:40,200 --> 01:12:40,850 >> ZAMYLA CHAN: Yeah. 1426 01:12:40,850 --> 01:12:48,340 Esencialmente aquí, teño INSERT INTO Gringotes, é, galeões, estes valores. 1427 01:12:48,340 --> 01:12:56,900 Pero ID, presuntamente, é unha clave única valor definido na táboa MySQL 1428 01:12:56,900 --> 01:13:06,750 Entón, se eu xa ten ese ID creado, entón eu non podo inserir unha nova liña. 1429 01:13:06,750 --> 01:13:10,961 Entón, se aínda non existe, entón eu teño que actualiza-lo. 1430 01:13:10,961 --> 01:13:16,040 1431 01:13:16,040 --> 01:13:17,722 No medio no branco. 1432 01:13:17,722 --> 01:13:21,570 >> Audiencia: Entón, inserir, actualizar, eliminar, e seleccionar, son aqueles todos dispoñibles 1433 01:13:21,570 --> 01:13:22,875 localmente [inaudível]? 1434 01:13:22,875 --> 01:13:27,320 1435 01:13:27,320 --> 01:13:29,630 >> ZAMYLA CHAN: Entón, introducir, actualizar, eliminar e 1436 01:13:29,630 --> 01:13:31,120 seleccionar son as consultas SQL. 1437 01:13:31,120 --> 01:13:34,970 Así, sempre que está a usar SQL, terá os dispoñibles. 1438 01:13:34,970 --> 01:13:38,226 1439 01:13:38,226 --> 01:13:40,706 >> Audiencia: Volver ao quizzes pasados ​​- 1440 01:13:40,706 --> 01:13:44,178 había unha cuestión que lidaba con se tivese unha táboa e quería 1441 01:13:44,178 --> 01:13:52,610 introducir os resultados das probas nun e introducir o seu nome para que non vai deixar que 1442 01:13:52,610 --> 01:13:54,594 [Inaudível] puntuación na proba do seu amigo. 1443 01:13:54,594 --> 01:13:59,060 Como faría iso coa inserción? 1444 01:13:59,060 --> 01:14:02,490 >> ZAMYLA CHAN: Entón, a pregunta foi sobre unha pregunta anterior a medio prazo. 1445 01:14:02,490 --> 01:14:04,320 Eu non estou en conta que un que é agora. 1446 01:14:04,320 --> 01:14:06,790 Entón, talvez máis tarde, se quere vir e me amosar, entón podo 1447 01:14:06,790 --> 01:14:08,155 certamente darlle consellos. 1448 01:14:08,155 --> 01:14:11,250 1449 01:14:11,250 --> 01:14:15,460 Pero, falando de cousas inserción, como tomando nota de alguén cando 1450 01:14:15,460 --> 01:14:18,800 non debe, imos falar Ataques de inxección SQL. 1451 01:14:18,800 --> 01:14:22,050 Así, un ataque de inxección de SQL é esencialmente onde alguén toma 1452 01:14:22,050 --> 01:14:27,680 vantaxe do baixo de seguranza do camiño que está tomando en datos. 1453 01:14:27,680 --> 01:14:35,660 >> Entón, aquí, así como en CS50 finanzas, cando dentro do sistema, podemos entrar nun 1454 01:14:35,660 --> 01:14:39,510 nome de usuario no formulario de login, caixa de texto en primeiro lugar, e 1455 01:14:39,510 --> 01:14:41,570 a continuación, escriba un contrasinal. 1456 01:14:41,570 --> 01:14:45,610 Quizais o noso código PHP pode parecer algo así como este, onde $ username 1457 01:14:45,610 --> 01:14:51,410 é o nome de usuario e contrasinal de post-datos é o contrasinal de post-datos. 1458 01:14:51,410 --> 01:14:55,110 E entón nós só realizar a nosa consulta, por exemplo, OK, así, a nosa consulta vai 1459 01:14:55,110 --> 01:14:57,990 elección dos nosos usuarios, onde o nome de usuario é o 1460 01:14:57,990 --> 01:14:58,970 un que sometidos. 1461 01:14:58,970 --> 01:15:06,870 E a contrasinal é o contrasinal, o que significa que os contrasinais coinciden. 1462 01:15:06,870 --> 01:15:12,670 >> Agora, e se en vez de realmente presentar un contrasinal real, como 1463 01:15:12,670 --> 01:15:16,850 12345 e adiviñando pinos que di contrasinal e tentando cortar o seu 1464 01:15:16,850 --> 01:15:21,460 conta, e se en vez que presentou esta. 1465 01:15:21,460 --> 01:15:24,380 Poderían escribir quizais un palpite sobre un contrasinal. 1466 01:15:24,380 --> 01:15:30,480 E entón eles ían rematar a Cita a continuación, escriba ou 1 = 1. 1467 01:15:30,480 --> 01:15:35,160 Iso sería andar directamente ao SQL consultar a algo parecido a isto. 1468 01:15:35,160 --> 01:15:38,200 Seleccione a partir de usuarios onde usuario = Dentes e contrasinal 1469 01:15:38,200 --> 01:15:41,450 coincide lírio ou 1 = 1. 1470 01:15:41,450 --> 01:15:45,450 >> Así, ou o contrasinal ten estar correcta ou 1 = 1, 1471 01:15:45,450 --> 01:15:47,870 que sempre é verdade. 1472 01:15:47,870 --> 01:15:52,780 Polo tanto, neste caso, basicamente, un usuario pode sacar proveito diso e faga o login 1473 01:15:52,780 --> 01:15:55,240 Se en corte e conta de alguén. 1474 01:15:55,240 --> 01:15:58,950 Entón é por iso que queremos evitar alguén ter que facelo. 1475 01:15:58,950 --> 01:16:03,890 Pero, por sorte, a función de consulta pasando os espazos reservados terá 1476 01:16:03,890 --> 01:16:04,800 coidado con isto para vostede. 1477 01:16:04,800 --> 01:16:08,570 Ademais, normalmente non quere para realmente enviar os contrasinais 1478 01:16:08,570 --> 01:16:09,310 si. 1479 01:16:09,310 --> 01:16:14,115 É por iso que hash ou cifrada los en CS50 finanzas. 1480 01:16:14,115 --> 01:16:17,553 >> Audiencia: O cuestionario pasado falei preto de cordas de fuga mysql. 1481 01:16:17,553 --> 01:16:21,800 Será que temos que se preocupar con iso? 1482 01:16:21,800 --> 01:16:22,670 >> ZAMYLA CHAN: Esta é unha boa pregunta. 1483 01:16:22,670 --> 01:16:29,050 As secuencias de escape de MySQL é sempre un función que foi utilizada na nosa consulta. 1484 01:16:29,050 --> 01:16:30,420 Pero definitivamente ollar para iso. 1485 01:16:30,420 --> 01:16:32,950 Eu diría que é un xogo xusto para saber que precisa para chamar ese 1486 01:16:32,950 --> 01:16:34,370 funcionar nunha corda. 1487 01:16:34,370 --> 01:16:35,245 Si, Belinda? 1488 01:16:35,245 --> 01:16:38,606 >> Audiencia: Como vostede sabe cando é comiñas simples ou dobres? 1489 01:16:38,606 --> 01:16:43,516 E tamén, eu me sinto como en charla ti mencionado algo sobre non ter 1490 01:16:43,516 --> 01:16:48,426 o [inaudível], ou unha cousa ou segunda aspas ao final. 1491 01:16:48,426 --> 01:16:56,407 1492 01:16:56,407 --> 01:17:00,825 Coido que sinalou en charla que ten que ter un apóstrofo 1493 01:17:00,825 --> 01:17:04,290 e logo non teñen apóstrofos ou algo así. 1494 01:17:04,290 --> 01:17:05,540 >> Audiencia: [inaudível]. 1495 01:17:05,540 --> 01:17:14,860 1496 01:17:14,860 --> 01:17:18,657 >> Audiencia: A cousa é o último sinxelo Cita alí nesa segunda caixa 1497 01:17:18,657 --> 01:17:19,391 non debería estar alí. 1498 01:17:19,391 --> 01:17:21,840 [Inaudível] 1499 01:17:21,840 --> 01:17:26,730 Porque cando levar ese último single citar fóra e combinar estes ao contido 1500 01:17:26,730 --> 01:17:30,522 onde o contrasinal, se ten que consulta, non hai unha única cita no 1501 01:17:30,522 --> 01:17:31,340 fin xa. 1502 01:17:31,340 --> 01:17:36,580 Quere usar esta única cita como aquela que está virado para o un 1503 01:17:36,580 --> 01:17:37,574 [Inaudível]. 1504 01:17:37,574 --> 01:17:42,820 Entón, cal é, en realidade, no que o texto caixa non debe ter iso. 1505 01:17:42,820 --> 01:17:44,070 >> ZAMYLA CHAN: Vou cambiar isto. 1506 01:17:44,070 --> 01:17:56,490 1507 01:17:56,490 --> 01:17:56,880 Aceptar. 1508 01:17:56,880 --> 01:18:00,435 Se non o houbera calquera dúbida, entón eu vou pasalo sobre a Joseph falar 1509 01:18:00,435 --> 01:18:04,332 sobre Javascript, etcétera. 1510 01:18:04,332 --> 01:18:09,540 >> [Aplausos] 1511 01:18:09,540 --> 01:18:11,660 >> JOSEPH ONG: Entón estamos executando un pouco para atrás. 1512 01:18:11,660 --> 01:18:13,280 Entón, se ten que saír, todo ben. 1513 01:18:13,280 --> 01:18:16,540 Pero pedimos que manteña as súas cabezas para abaixo se está no medio, para que 1514 01:18:16,540 --> 01:18:19,560 non bloquear a cámara e utilizar a saída de volta, de ser preciso. 1515 01:18:19,560 --> 01:18:25,010 1516 01:18:25,010 --> 01:18:26,306 Eu son José polo camiño. 1517 01:18:26,306 --> 01:18:27,556 Oi 1518 01:18:27,556 --> 01:18:37,910 1519 01:18:37,910 --> 01:18:38,630 Proba, proba. 1520 01:18:38,630 --> 01:18:39,630 Dan, iso é bo? 1521 01:18:39,630 --> 01:18:40,880 Legal. 1522 01:18:40,880 --> 01:18:44,460 1523 01:18:44,460 --> 01:18:47,600 >> Así, o video tamén serán publicados en liña para aqueles que 1524 01:18:47,600 --> 01:18:48,850 Ten que saír agora. 1525 01:18:48,850 --> 01:18:51,350 1526 01:18:51,350 --> 01:18:52,600 Awkward. 1527 01:18:52,600 --> 01:18:56,300 1528 01:18:56,300 --> 01:18:57,510 Aceptar. 1529 01:18:57,510 --> 01:18:59,730 Entón revisión quiz. 1530 01:18:59,730 --> 01:19:00,980 Este é un gato. 1531 01:19:00,980 --> 01:19:03,150 1532 01:19:03,150 --> 01:19:07,170 Agora, JavaScript, que non é posible aww como para algúns de vós. 1533 01:19:07,170 --> 01:19:07,370 Aceptar. 1534 01:19:07,370 --> 01:19:09,280 Entón, iso é en primeiro lugar, lembrar da Zamyla. 1535 01:19:09,280 --> 01:19:11,270 Lembre que o PHP é executado no servidor. 1536 01:19:11,270 --> 01:19:15,230 E moitas veces, vostedes escribiron lazos en PHP para imprimir HTML, non? 1537 01:19:15,230 --> 01:19:19,170 Así, unha vez que o código é executado, que Saída HTML que pode imprimir 1538 01:19:19,170 --> 01:19:20,500 é enviado ao usuario. 1539 01:19:20,500 --> 01:19:25,960 E cando isto ocorre, non máis pode PHP ser executado, a menos que actualizar a páxina, de 1540 01:19:25,960 --> 01:19:27,660 curso, que reexecutes PHP. 1541 01:19:27,660 --> 01:19:30,080 Pero unha vez que imprimir este HTML, non pode ir a calquera lugar. 1542 01:19:30,080 --> 01:19:33,580 >> Así que o HTML é enviado para o usuario, cal é o navegador máis aquí, onde 1543 01:19:33,580 --> 01:19:35,470 Milo está a usar o ordenador. 1544 01:19:35,470 --> 01:19:40,340 E tan ben, hai moitas cousas xa que enviar HTML para o usuario. 1545 01:19:40,340 --> 01:19:43,350 Ás veces queremos facer algo así como cando fai clic en algo, queremos 1546 01:19:43,350 --> 01:19:47,350 caixas de alerta de fiestras emerxentes, estes tipos de interaccións, como cando prema o 1547 01:19:47,350 --> 01:19:50,740 clave, cando fai clic en algo na páxina, quero que algo aconteza. 1548 01:19:50,740 --> 01:19:54,550 Ben, non se pode realizar de novo PHP código, xa que o HTML está definido. 1549 01:19:54,550 --> 01:19:55,900 Entón, como fai iso? 1550 01:19:55,900 --> 01:19:59,930 >> Nós introducimos unha nova linguaxe chamada JavaScript, que roda no navegador 1551 01:19:59,930 --> 01:20:02,890 que permite que fai cousas a HTML despois de recibir 1552 01:20:02,890 --> 01:20:04,020 los a partir do servidor. 1553 01:20:04,020 --> 01:20:07,050 E é por iso que chamamos un do lado do cliente linguaxe de programación. 1554 01:20:07,050 --> 01:20:09,110 Funciona no seu ordenador - 1555 01:20:09,110 --> 01:20:11,400 o cliente. 1556 01:20:11,400 --> 01:20:13,830 Calquera dúbida sobre iso ata agora? 1557 01:20:13,830 --> 01:20:15,650 Este paradigma ten sentido para as persoas? 1558 01:20:15,650 --> 01:20:16,010 Aceptar. 1559 01:20:16,010 --> 01:20:16,790 Boa. 1560 01:20:16,790 --> 01:20:17,340 Todo ben. 1561 01:20:17,340 --> 01:20:20,850 Entón o primeiro a notar é JavaScript non é PHP. 1562 01:20:20,850 --> 01:20:23,010 >> Teñen unha sintaxe distinta, que nós imos entrar. 1563 01:20:23,010 --> 01:20:24,530 E eles teñen usos moi diferentes. 1564 01:20:24,530 --> 01:20:26,640 JavaScript, de novo, para a súa navegador, para o cliente. 1565 01:20:26,640 --> 01:20:30,640 Server é executado en algún lugar doutra persoa ordenador que envía información 1566 01:20:30,640 --> 01:20:31,720 para ti, correcto? 1567 01:20:31,720 --> 01:20:36,730 Entón, se nós lles pedimos para escribir código PHP nunha pregunta do exame, non escriba 1568 01:20:36,730 --> 01:20:38,710 Javascript e viceversa. 1569 01:20:38,710 --> 01:20:41,710 Só vai perder puntos, e non vai estar seguro. 1570 01:20:41,710 --> 01:20:43,690 >> Entón, imos entrar en algún diferenzas de sintaxe - 1571 01:20:43,690 --> 01:20:46,140 JavaScript á esquerda e PHP á dereita. 1572 01:20:46,140 --> 01:20:48,670 O primeiro que vai notar con JavaScript, declaramos variables con 1573 01:20:48,670 --> 01:20:49,440 a palabra chave var - 1574 01:20:49,440 --> 01:20:53,590 V-A-R. PHP usou o sinal de dólar, Zamyla como discutido anteriormente. 1575 01:20:53,590 --> 01:20:57,570 Se quere declarar un asociativa matriz, podemos ver a sintaxe familiar en 1576 01:20:57,570 --> 01:20:59,030 o lado dereito co PHP. 1577 01:20:59,030 --> 01:21:01,630 Na parte esquerda, en vez usa chaves. 1578 01:21:01,630 --> 01:21:03,280 E entón as chaves están á esquerda. 1579 01:21:03,280 --> 01:21:04,670 Entón tes dous puntos. 1580 01:21:04,670 --> 01:21:06,560 E entón tes os valores que quere. 1581 01:21:06,560 --> 01:21:09,840 >> Entón é así que faría iso en PHP na parte dereita coa segunda 1582 01:21:09,840 --> 01:21:10,955 liña que comeza en Milo. 1583 01:21:10,955 --> 01:21:14,540 E é así que faría iso na á esquerda en JavaScript, se quere 1584 01:21:14,540 --> 01:21:16,110 o que chamamos un obxecto. 1585 01:21:16,110 --> 01:21:19,340 E obxectos en JavaScript son só arrays asociativos. 1586 01:21:19,340 --> 01:21:23,710 Entón, se quere acceder campos, en PHP usa esta sintaxe soporte. 1587 01:21:23,710 --> 01:21:27,170 E deste xeito, pode descargar este campo para Lauren propietario. 1588 01:21:27,170 --> 01:21:30,150 >> Ben, en JavaScript, se alguén quere acceder a un campo e cambia-lo, pode 1589 01:21:30,150 --> 01:21:31,370 usar a sintaxe de punto. 1590 01:21:31,370 --> 01:21:33,860 Tamén pode usar a sintaxe soporte. 1591 01:21:33,860 --> 01:21:35,550 Pero non pode usar o sintaxe de punto en PHP. 1592 01:21:35,550 --> 01:21:36,525 Iso non vai funcionar. 1593 01:21:36,525 --> 01:21:38,910 El só funciona en PHP. 1594 01:21:38,910 --> 01:21:42,060 E, finalmente, imprimir as cousas para o consola, usa console.log, que 1595 01:21:42,060 --> 01:21:43,720 Vostedes utilizan moito en pset8. 1596 01:21:43,720 --> 01:21:45,260 Pode console.log que. 1597 01:21:45,260 --> 01:21:50,030 >> Se quere imprimir unha matriz en PHP, tes que usar impresión r. 1598 01:21:50,030 --> 01:21:53,240 E na parte dereita, ve Eu mestura concatenação alí. 1599 01:21:53,240 --> 01:21:54,070 Alguén preguntou antes. 1600 01:21:54,070 --> 01:21:55,850 Eu uso un plus en JavaScript. 1601 01:21:55,850 --> 01:21:59,800 Se eu queira concatenar algo en PHP, eu uso o punto. 1602 01:21:59,800 --> 01:22:00,800 Estes son diferentes. 1603 01:22:00,800 --> 01:22:03,420 Se está escribindo código PHP, non empregue un plus. 1604 01:22:03,420 --> 01:22:06,810 Se está escribindo JavaScript código, non escriba un punto. 1605 01:22:06,810 --> 01:22:08,230 Será incorrecto. 1606 01:22:08,230 --> 01:22:09,640 E vai estar triste. 1607 01:22:09,640 --> 01:22:11,000 >> Entón, as diferenzas de sintaxe. 1608 01:22:11,000 --> 01:22:14,710 Coñeza a súa sintaxe, xa que se ten a escribir unha pregunta e usa a sintaxe 1609 01:22:14,710 --> 01:22:16,890 a partir da linguaxe incorrecta, el non vai funcionar. 1610 01:22:16,890 --> 01:22:19,520 E será mal. 1611 01:22:19,520 --> 01:22:22,420 Entón imos falar un control fluír diferenzas, como se usa 1612 01:22:22,420 --> 01:22:24,040 lazos en cada unha delas. 1613 01:22:24,040 --> 01:22:26,610 Zamyla pasou por riba da lateral dereita. 1614 01:22:26,610 --> 01:22:27,780 Cousas do lado dereito debe estar familiarizado. 1615 01:22:27,780 --> 01:22:29,670 Imos ollar na parte esquerda. 1616 01:22:29,670 --> 01:22:34,830 >> Cando usa o loop n en JavaScript, a variable de loop, var i alí, 1617 01:22:34,830 --> 01:22:37,210 loop sobre as claves do array. 1618 01:22:37,210 --> 01:22:39,150 Entón ve o nome, casa, e papel. 1619 01:22:39,150 --> 01:22:42,440 Se eu console.log i, recibín nome, casa, e papel. 1620 01:22:42,440 --> 01:22:44,720 Estas son as claves. 1621 01:22:44,720 --> 01:22:50,080 En JavaScript, un loop foreach vai sobre os valores desa matriz. 1622 01:22:50,080 --> 01:22:52,040 Entón entender que eles son os dous i. 1623 01:22:52,040 --> 01:22:56,000 Pero, aquí no lado de PHP, ela imprime fóra Milo, CS50 e Mascota. 1624 01:22:56,000 --> 01:22:57,390 Eses son os valores en PHP. 1625 01:22:57,390 --> 01:23:00,180 >> Entón, estas son como eses dous son diferentes nas distintas linguas. 1626 01:23:00,180 --> 01:23:02,970 Entón, se está a usar un foreach loop, non pense que el 1627 01:23:02,970 --> 01:23:03,760 dálle as chaves. 1628 01:23:03,760 --> 01:23:08,010 E se está a usar un loop for n, non supor que obtén os valores. 1629 01:23:08,010 --> 01:23:10,420 Será que isto ten sentido ata agora? 1630 01:23:10,420 --> 01:23:13,630 O seguinte foto vai amosar-lle como pode acceder o contrario en 1631 01:23:13,630 --> 01:23:15,160 cada un deles. 1632 01:23:15,160 --> 01:23:18,550 >> Ben, se ten a clave en JavaScript e quere que o valor a fóra, 1633 01:23:18,550 --> 01:23:20,440 acaba de índice para a matriz con iso. 1634 01:23:20,440 --> 01:23:23,640 Entón, Milo de eu vou conseguir o que quere - os valores. 1635 01:23:23,640 --> 01:23:25,260 Hai esa sintaxe diferente en PHP. 1636 01:23:25,260 --> 01:23:28,140 Se realmente quere saber, eu non creo que xa mostre para ti aínda. 1637 01:23:28,140 --> 01:23:31,740 Pero se vostede está interesado, pode utilizar esta sintaxe adicional á dereita 1638 01:23:31,740 --> 01:23:35,130 banda que vai realmente deixar comezar a claves en PHP cando se está a usar un 1639 01:23:35,130 --> 01:23:35,880 loop foreach. 1640 01:23:35,880 --> 01:23:39,640 Entón, simplemente un pouco de trivia se vostede está interesado. 1641 01:23:39,640 --> 01:23:42,630 >> Entón, iso é só para demostrar a diferenzas entre estes dous loops. 1642 01:23:42,630 --> 01:23:47,060 Non mesturalo las cando se está programación dunha pregunta. 1643 01:23:47,060 --> 01:23:49,774 Calquera dúbida sobre iso. 1644 01:23:49,774 --> 01:23:50,770 Legal. 1645 01:23:50,770 --> 01:23:51,310 Todo ben. 1646 01:23:51,310 --> 01:23:52,250 JavaScript obxectos. 1647 01:23:52,250 --> 01:23:53,040 Eu falei sobre eles. 1648 01:23:53,040 --> 01:23:54,650 Son como matrices asociativas. 1649 01:23:54,650 --> 01:23:57,730 O único que me gustaría que conta aquí é que un valor dunha asociativo 1650 01:23:57,730 --> 01:23:59,540 matriz pode ser calquera cousa en JavaScript. 1651 01:23:59,540 --> 01:24:02,240 >> Pode incluso ser unha función, como alí. 1652 01:24:02,240 --> 01:24:04,600 Eu teño unha función que é un valor dunha chave. 1653 01:24:04,600 --> 01:24:07,030 E se eu queira chamar esa función, Eu só acceder casca. 1654 01:24:07,030 --> 01:24:08,490 E entón eu coloque os parénteses despois diso. 1655 01:24:08,490 --> 01:24:09,790 E iso funciona. 1656 01:24:09,790 --> 01:24:15,570 Entón, algunha dúbida? 1657 01:24:15,570 --> 01:24:16,370 Non? 1658 01:24:16,370 --> 01:24:16,650 Aceptar. 1659 01:24:16,650 --> 01:24:18,190 Boa. 1660 01:24:18,190 --> 01:24:20,130 JavaScript, como PHP, é vagamente ingresaran. 1661 01:24:20,130 --> 01:24:20,970 Que significa isto? 1662 01:24:20,970 --> 01:24:22,380 >> Ela ten os tipos. 1663 01:24:22,380 --> 01:24:24,800 Pero cando declarar un Javascript variable, di var i. 1664 01:24:24,800 --> 01:24:25,850 Non pode dicir iso. 1665 01:24:25,850 --> 01:24:26,460 Isto non é unha cousa. 1666 01:24:26,460 --> 01:24:28,000 Acaba de dicir que é unha variable. 1667 01:24:28,000 --> 01:24:31,590 E entón JavaScript pode manexar o tipo baixo o capo para ti. 1668 01:24:31,590 --> 01:24:34,390 Podemos converter libremente entre tipo por causa diso. 1669 01:24:34,390 --> 01:24:37,360 Así que comeza como un número neste caso. 1670 01:24:37,360 --> 01:24:38,790 E entón eu teño unha cadea. 1671 01:24:38,790 --> 01:24:39,710 E engado eu a el. 1672 01:24:39,710 --> 01:24:41,810 E eu atribuílo la de volta para i. 1673 01:24:41,810 --> 01:24:43,640 >> Entón, en que a primeira liña, i é o número. 1674 01:24:43,640 --> 01:24:47,310 Na segunda liña, eu agora xa é un cadea despois de eu facer o cambio. 1675 01:24:47,310 --> 01:24:52,820 E aquí, estou só concatenando ese número na cadea. 1676 01:24:52,820 --> 01:24:56,210 Entón ve que aínda que eu era un enteiro na primeira parte, é unha especie 1677 01:24:56,210 --> 01:24:58,500 de como pode converter a unha corda e logo, seren engadidos 1678 01:24:58,500 --> 01:25:00,510 para esa secuencia Olá 1679 01:25:00,510 --> 01:25:02,340 E iso é o que quero dicir pola escritura solto. 1680 01:25:02,340 --> 01:25:04,760 Isto é que convirte entre tipo moi facilmente. 1681 01:25:04,760 --> 01:25:08,840 E non publicar anuncios para ti como C fai. 1682 01:25:08,840 --> 01:25:12,420 >> Así que agora contén Ola 123 para a cadea. 1683 01:25:12,420 --> 01:25:13,270 Seguinte. 1684 01:25:13,270 --> 01:25:15,610 Tamén podemos comparar libremente entre os tipos. 1685 01:25:15,610 --> 01:25:19,310 Entón, se acabou de usar ==, moi como en PHP, Javascript 1686 01:25:19,310 --> 01:25:20,480 fai unha cousa semellante. 1687 01:25:20,480 --> 01:25:24,780 A corda 123 é o mesmo que o número 123 cando usa dous iguais. 1688 01:25:24,780 --> 01:25:27,820 Cando utilizados tres iguais, tamén Quere estar seguro de que 1689 01:25:27,820 --> 01:25:29,240 o tipo é o mesmo. 1690 01:25:29,240 --> 01:25:31,960 Entón, por que é unha cadea e que se un número, a pesar de seren ambos 1691 01:25:31,960 --> 01:25:35,280 123, cando usa o triplo coincide, comeza falso. 1692 01:25:35,280 --> 01:25:39,330 O dobre equivale a caso, comeza feito, porque dous iguais non 1693 01:25:39,330 --> 01:25:40,020 preocupan tipo. 1694 01:25:40,020 --> 01:25:42,500 Tres iguais se preocupa tipo. 1695 01:25:42,500 --> 01:25:43,750 Dúbidas? 1696 01:25:43,750 --> 01:25:45,790 1697 01:25:45,790 --> 01:25:48,390 Aceptar. 1698 01:25:48,390 --> 01:25:52,870 >> E outra cousa sobre JavaScript ámbito é unha especie de mundo, a menos que vostede é 1699 01:25:52,870 --> 01:25:53,460 nunha función. 1700 01:25:53,460 --> 01:25:55,660 E funciona do mesmo forma en PHP en realidade. 1701 01:25:55,660 --> 01:25:57,500 Entón, imos pasar por este exemplo. 1702 01:25:57,500 --> 01:25:59,110 Eu define i a 999. 1703 01:25:59,110 --> 01:26:00,900 E entón eu vou para este loop for. 1704 01:26:00,900 --> 01:26:06,110 Entón, se eu estou imprimindo i neste para loop, espero 0, 1, 2, 3, 4. 1705 01:26:06,110 --> 01:26:07,390 Recibo unha i = 4. 1706 01:26:07,390 --> 01:26:10,770 El incrementa i agora a 5 no Ao final do ciclo de. 1707 01:26:10,770 --> 01:26:13,300 E logo sae do loop, porque non cumprir a 1708 01:26:13,300 --> 01:26:14,550 condicionar máis. 1709 01:26:14,550 --> 01:26:16,650 >> ¿Que pensas que o seguinte console.log imprime? 1710 01:26:16,650 --> 01:26:20,570 1711 01:26:20,570 --> 01:26:24,790 Entón, iso é o que el faría en C. En C, porque se ten como var i fóra 1712 01:26:24,790 --> 01:26:28,855 e ten var i dentro dun loop, como un loop, a continuación, fai-se de tal forma que 1713 01:26:28,855 --> 01:26:30,690 está no ámbito de que os dous i de son diferentes. 1714 01:26:30,690 --> 01:26:34,630 En JavaScript, ela só vai trata-lo como o mesmo i. 1715 01:26:34,630 --> 01:26:37,870 Recibe 5, porque este era o valor despois que saíu fóra do circuíto. 1716 01:26:37,870 --> 01:26:39,120 Entón, quen son os mesmos i. 1717 01:26:39,120 --> 01:26:42,620 1718 01:26:42,620 --> 01:26:44,130 Será que isto ten sentido? 1719 01:26:44,130 --> 01:26:45,720 >> Así, ten sentido a partir un punto de vista JavaScript. 1720 01:26:45,720 --> 01:26:49,510 Pero o mesmo paradigma non fai transitar para C. Teñen 1721 01:26:49,510 --> 01:26:50,310 diferentes normas de ámbito de aplicación. 1722 01:26:50,310 --> 01:26:50,630 Si 1723 01:26:50,630 --> 01:26:52,566 >> Audiencia: [inaudível] 1724 01:26:52,566 --> 01:26:54,990 fóra da función [inaudível]? 1725 01:26:54,990 --> 01:26:58,340 >> JOSEPH ONG: Entón, fóra do cal función? 1726 01:26:58,340 --> 01:27:00,810 Entón, eu vou chegar a iso en só un segundo. 1727 01:27:00,810 --> 01:27:02,580 Entón chamamos foo (i). 1728 01:27:02,580 --> 01:27:06,920 Isto pasa i en foo, incrementos e logo rexistra-lo. 1729 01:27:06,920 --> 01:27:07,750 Por iso, foi 5. 1730 01:27:07,750 --> 01:27:09,210 Así pasa a ser 6. 1731 01:27:09,210 --> 01:27:11,670 Pero o que eu estou falando é que i, en que a función. 1732 01:27:11,670 --> 01:27:14,430 Porque é un parámetro, é ámbito para esa función. 1733 01:27:14,430 --> 01:27:17,800 Entón, cando realmente saír desa función, está indo agora para ir 1734 01:27:17,800 --> 01:27:19,860 ao seu vello eu. 1735 01:27:19,860 --> 01:27:23,000 Que eu só porque ten como ámbito está nunha función. 1736 01:27:23,000 --> 01:27:24,200 E nós temos alcance e funcións. 1737 01:27:24,200 --> 01:27:29,080 Pero non temos ámbito fóra de funcións no JavaScript. 1738 01:27:29,080 --> 01:27:31,170 Será que isto ten sentido? 1739 01:27:31,170 --> 01:27:31,320 Si 1740 01:27:31,320 --> 01:27:31,660 Pregunta. 1741 01:27:31,660 --> 01:27:34,030 >> Audiencia: Same [inaudível]? 1742 01:27:34,030 --> 01:27:34,500 >> JOSEPH ONG: Entón, si. 1743 01:27:34,500 --> 01:27:36,260 O PHP, é o mesmo tipo de cousas. 1744 01:27:36,260 --> 01:27:37,680 Hai un lixeiro sutileza en realidade. 1745 01:27:37,680 --> 01:27:40,130 Pero que me pode preguntar sobre que, tras a revisión. 1746 01:27:40,130 --> 01:27:43,930 Realmente non precisa saber que sutileza ao quiz. 1747 01:27:43,930 --> 01:27:47,600 Para todos os efectos, como variables, global e PHP, a menos que 1748 01:27:47,600 --> 01:27:49,150 están nunha función, aínda cousa en JavaScript. 1749 01:27:49,150 --> 01:27:49,480 Si 1750 01:27:49,480 --> 01:27:52,890 >> Audiencia: Por que isto está permitido en Javascript e en ningún outro lugar? 1751 01:27:52,890 --> 01:27:55,010 >> JOSEPH ONG: Entón por que se permite en JavaScript e non en C? 1752 01:27:55,010 --> 01:27:58,180 É só quen veu con JavaScript decidiu que este era OK en 1753 01:27:58,180 --> 01:27:59,510 JavaScript. 1754 01:27:59,510 --> 01:28:02,430 Entón é como unha linguaxe de programación convenio, como diriamos. 1755 01:28:02,430 --> 01:28:02,580 Si 1756 01:28:02,580 --> 01:28:04,480 >> Audiencia: Entón, por que ir 6-5? 1757 01:28:04,480 --> 01:28:08,280 >> JOSEPH ONG: Así foi 6-5, porque cando eu pasei eu en foo, que 1758 01:28:08,280 --> 01:28:13,420 i dentro foo agora é delimitado para foo, porque existe no ámbito funcións 1759 01:28:13,420 --> 01:28:15,050 JavaScript. 1760 01:28:15,050 --> 01:28:18,720 Pero unha vez eu saír de aquí, porque foi delimitado para a función, eu son só 1761 01:28:18,720 --> 01:28:24,300 usar o i regular que estaba dentro o resto do fluxo de control. 1762 01:28:24,300 --> 01:28:25,210 Ten sentido? 1763 01:28:25,210 --> 01:28:26,910 Podo seguir adiante? 1764 01:28:26,910 --> 01:28:27,320 Todo ben. 1765 01:28:27,320 --> 01:28:29,180 Legal. 1766 01:28:29,180 --> 01:28:31,890 >> A aceptación desta é obxectos son pasados ​​por referencia. 1767 01:28:31,890 --> 01:28:33,990 Sabe cando pasa unha matriz en C podería 1768 01:28:33,990 --> 01:28:35,810 en realidade, modificar a matriz? 1769 01:28:35,810 --> 01:28:37,350 É o mesmo en JavaScript. 1770 01:28:37,350 --> 01:28:42,960 Se eu pasar un obxecto, neste caso, eu Milo pasou para esta función catify. 1771 01:28:42,960 --> 01:28:44,490 Milo comeza. 1772 01:28:44,490 --> 01:28:46,310 O seu nome é Milo bananas. 1773 01:28:46,310 --> 01:28:51,670 Eu pasar ese obxecto para unha función porque é un obxecto, un asociativa 1774 01:28:51,670 --> 01:28:53,730 array en JavaScript. 1775 01:28:53,730 --> 01:28:57,110 >> Cando realizar unha operación nesa función, ha 1776 01:28:57,110 --> 01:28:58,560 realmente cambiar o obxecto. 1777 01:28:58,560 --> 01:29:01,720 Entón, iso só ocorrerá por obxectos en JavaScript, así como acontece 1778 01:29:01,720 --> 01:29:09,230 para matrices dentro do nome de C. Entón Milo vai realmente facer gato agora. 1779 01:29:09,230 --> 01:29:10,090 Será que isto ten sentido? 1780 01:29:10,090 --> 01:29:11,840 Entón, iso só funciona para obxectos. 1781 01:29:11,840 --> 01:29:13,090 Os obxectos son pasados ​​por referencia. 1782 01:29:13,090 --> 01:29:13,400 Si 1783 01:29:13,400 --> 01:29:16,850 >> Audiencia: Entón está dicindo que en contraste con i variable. 1784 01:29:16,850 --> 01:29:17,240 >> JOSEPH ONG: Yeah. 1785 01:29:17,240 --> 01:29:20,330 Cal variable i era só un número, non? 1786 01:29:20,330 --> 01:29:25,280 É como o C, cando pasar un enteiro un, fai unha copia. 1787 01:29:25,280 --> 01:29:28,130 E cando pasar un array, realmente modifica a matriz real en 1788 01:29:28,130 --> 01:29:32,870 C. O mesmo acontece con JavaScript neste caso. 1789 01:29:32,870 --> 01:29:34,070 Todo ben. 1790 01:29:34,070 --> 01:29:38,134 E no próximo, Milo é triste, porque el agora é un gato. 1791 01:29:38,134 --> 01:29:40,790 1792 01:29:40,790 --> 01:29:45,060 Isto foi realmente Milo despois algunha viaxe ao veterinario. 1793 01:29:45,060 --> 01:29:46,860 >> Entón, como imos empregar JavaScript nunha páxina web? 1794 01:29:46,860 --> 01:29:47,790 Podemos inclui-lo. 1795 01:29:47,790 --> 01:29:50,090 Este é o código HTML con etiquetas de strip. 1796 01:29:50,090 --> 01:29:51,300 Entón, eu teño marcas tira de alí. 1797 01:29:51,300 --> 01:29:54,820 E entón eu coloque un pouco de JavaScript código dentro das etiquetas de script. 1798 01:29:54,820 --> 01:29:56,390 E entón el executa isto. 1799 01:29:56,390 --> 01:29:58,830 Cando só facelo así, é chamado Javascript embutido. 1800 01:29:58,830 --> 01:30:02,400 É unha especie de confuso, xa que o JavaScript é realmente no HTML. 1801 01:30:02,400 --> 01:30:07,010 >> A mellor forma de facelo, moito máis agradable, é escribir o seu JavaScript nun 1802 01:30:07,010 --> 01:30:10,920 ficheiro externo e, a continuación, proporcionar tag script cunha fonte. 1803 01:30:10,920 --> 01:30:14,920 E iso vai para o arquivo JavaScript e ler o código JavaScript dende 1804 01:30:14,920 --> 01:30:15,960 este ficheiro no seu lugar. 1805 01:30:15,960 --> 01:30:18,820 E deste xeito, non ten unha morea de JavaScript no inicio da súa 1806 01:30:18,820 --> 01:30:20,760 Ficheiro HTML, o que fai realmente confuso. 1807 01:30:20,760 --> 01:30:21,860 Acaba de poñelas noutro lugar. 1808 01:30:21,860 --> 01:30:24,310 E entón el vai le-lo de alí. 1809 01:30:24,310 --> 01:30:25,560 Será que isto ten sentido? 1810 01:30:25,560 --> 01:30:27,990 1811 01:30:27,990 --> 01:30:29,640 >> Asuntos colocación. 1812 01:30:29,640 --> 01:30:32,620 Neste caso en particular, o guión é antes o corpo. 1813 01:30:32,620 --> 01:30:36,090 Entón, cando executar tanto, non hai nada no corpo aínda. 1814 01:30:36,090 --> 01:30:39,920 Quizais iso vai facer un pouco máis sentir cando amosar esta próxima parte. 1815 01:30:39,920 --> 01:30:43,210 Neste caso, a escritura vén despois do div. 1816 01:30:43,210 --> 01:30:46,620 Así, o div realmente aparece na páxina primeira. 1817 01:30:46,620 --> 01:30:49,470 Aquí mesmo neste pequeno círculo vermello, ve o texto aparece. 1818 01:30:49,470 --> 01:30:51,810 E entón a alerta aparece. 1819 01:30:51,810 --> 01:30:54,890 >> No primeiro caso, porque a escritura foi antes da div, o 1820 01:30:54,890 --> 01:30:56,170 alerta aparece en primeiro lugar. 1821 01:30:56,170 --> 01:30:59,250 E entón o div aparece despois pechar a caixa. 1822 01:30:59,250 --> 01:31:01,330 Así, a execución importa. 1823 01:31:01,330 --> 01:31:02,290 Entón, imos manter isto presente. 1824 01:31:02,290 --> 01:31:03,640 Isto será importante de aquí a pouco. 1825 01:31:03,640 --> 01:31:08,730 1826 01:31:08,730 --> 01:31:09,540 Aceptar. 1827 01:31:09,540 --> 01:31:12,750 Tan ben, como é que espera ata que o páxina enteira é cargada, entón antes de lle 1828 01:31:12,750 --> 01:31:13,580 realizar algún código? 1829 01:31:13,580 --> 01:31:15,540 Nós imos chegar a esta un pouco pouco máis tarde tamén. 1830 01:31:15,540 --> 01:31:19,016 Pero só manter este posicionamento temas en mente para cando 1831 01:31:19,016 --> 01:31:20,570 chegar a outro foto. 1832 01:31:20,570 --> 01:31:22,030 >> Entón nós comezamos a DON agora. 1833 01:31:22,030 --> 01:31:23,550 E o que é DON? 1834 01:31:23,550 --> 01:31:26,830 Entón, se ollar para o código HTML, é só unha morea de texto en pantalla. 1835 01:31:26,830 --> 01:31:30,560 Entón como é que sabe que o JavaScript este é un elemento HTML? 1836 01:31:30,560 --> 01:31:33,410 Entón, temos que ter un pouco de memoria representación desta 1837 01:31:33,410 --> 01:31:34,930 estrutura que temos. 1838 01:31:34,930 --> 01:31:40,240 E sempre que temos isto en memoria representación en JavaScript, que chamamos 1839 01:31:40,240 --> 01:31:41,750 que o DOM. 1840 01:31:41,750 --> 01:31:45,130 E iso é só un xeito que a xente decidiron que temos que representar este 1841 01:31:45,130 --> 01:31:46,400 Estrutura HTML como. 1842 01:31:46,400 --> 01:31:47,940 >> E o que iso DON parece? 1843 01:31:47,940 --> 01:31:50,460 Ben, en representación da memoria, tomamos este texto. 1844 01:31:50,460 --> 01:31:52,870 E nós transformalo en memoria representación. 1845 01:31:52,870 --> 01:31:54,400 Entón que é o HTML. 1846 01:31:54,400 --> 01:31:58,090 Entón, primeiro descubrir que cada DON árbore ten un documento. 1847 01:31:58,090 --> 01:31:59,400 Parece unha árbore. 1848 01:31:59,400 --> 01:32:03,550 E o documento contén o código HTML tag, en realidade, todo o que 1849 01:32:03,550 --> 01:32:05,150 dentro deste momento. 1850 01:32:05,150 --> 01:32:06,970 A etiqueta HTML ten dous fillos. 1851 01:32:06,970 --> 01:32:08,630 Ten unha cabeza. 1852 01:32:08,630 --> 01:32:12,380 Esta cabeza, se ollar para a retirada alí coa forma como está estructurado 1853 01:32:12,380 --> 01:32:14,960 entre as etiquetas íntimos, cabeza ten un fillo. 1854 01:32:14,960 --> 01:32:17,130 O neno é o título. 1855 01:32:17,130 --> 01:32:18,370 Exactamente. 1856 01:32:18,370 --> 01:32:21,000 >> Agora, temos un neno corpo. 1857 01:32:21,000 --> 01:32:24,870 E, a continuación, que ten un corpo neno chamada familia. 1858 01:32:24,870 --> 01:32:27,950 E que a familia ten tres fillos - 1859 01:32:27,950 --> 01:32:29,550 o máis vello, medio e máis novo. 1860 01:32:29,550 --> 01:32:31,960 Entón, ten que saber como deseñar un diagrama así cando pedimos-lle como 1861 01:32:31,960 --> 01:32:34,270 para deseñar un diagrama cando damos vostede o HTML do lado esquerdo. 1862 01:32:34,270 --> 01:32:36,350 Saber como producir a árbore DOM. 1863 01:32:36,350 --> 01:32:38,930 E dentro destas cousas, hai só texto, que eu representaba 1864 01:32:38,930 --> 01:32:40,180 como pequenas caixas. 1865 01:32:40,180 --> 01:32:42,750 1866 01:32:42,750 --> 01:32:47,980 >> Será que esta estrutura de árbore DOM facer sentido e que o DOM é? 1867 01:32:47,980 --> 01:32:49,300 Entón o que o p representa? 1868 01:32:49,300 --> 01:32:51,850 Por aquí, o p alí en que representa unha cita 1869 01:32:51,850 --> 01:32:54,510 parágrafo etiqueta HTML. 1870 01:32:54,510 --> 01:32:57,080 Así, pode buscalo. 1871 01:32:57,080 --> 01:32:59,290 Pero isto significa só que é un espazo para texto. 1872 01:32:59,290 --> 01:33:02,910 E ten algún estilo CSS por defecto, por que é unha marca de parágrafo. 1873 01:33:02,910 --> 01:33:05,130 Pero realmente non se preocupe que parte moito. 1874 01:33:05,130 --> 01:33:07,510 Só sei que é un espazo reservado para algún texto. 1875 01:33:07,510 --> 01:33:08,480 Si 1876 01:33:08,480 --> 01:33:10,200 Pregunta? 1877 01:33:10,200 --> 01:33:11,021 Si 1878 01:33:11,021 --> 01:33:12,374 >> Audiencia: Acaba de mencionar CSS. 1879 01:33:12,374 --> 01:33:15,492 A familia de hash eo hash todo isto é basicamente 1880 01:33:15,492 --> 01:33:17,400 representando IDs en CSS? 1881 01:33:17,400 --> 01:33:18,440 >> JOSEPH ONG: Si, exactamente. 1882 01:33:18,440 --> 01:33:20,380 Vou incorporarse o que eses hashes quere dicir nun segundo. 1883 01:33:20,380 --> 01:33:23,480 Cando Angela foi ata CSS, ela falou sobre selectores CSS. 1884 01:33:23,480 --> 01:33:26,770 Estes son os selectores CSS ela estaba falando. 1885 01:33:26,770 --> 01:33:28,268 Si, Rob? 1886 01:33:28,268 --> 01:33:32,060 >> ROB BOWDEN: Eu tamén quere comentar DON que dentro da etiqueta title 1887 01:33:32,060 --> 01:33:35,385 é tamén un nó de texto. 1888 01:33:35,385 --> 01:33:36,070 >> JOSEPH ONG: Certo. 1889 01:33:36,070 --> 01:33:38,370 Entón, dentro da etiqueta title, Eu teño algúns DON texto. 1890 01:33:38,370 --> 01:33:42,730 Entón, realmente, este título debe ter como un pequena caixa que vén fóra del tamén. 1891 01:33:42,730 --> 01:33:45,740 Pero iso realmente non importa demasiado neste caso. 1892 01:33:45,740 --> 01:33:49,620 Nós realmente non lles importa con nós de texto, como lles chamamos, moito. 1893 01:33:49,620 --> 01:33:50,270 OK, o que facemos. 1894 01:33:50,270 --> 01:33:51,520 Ao parecer, o que facemos. 1895 01:33:51,520 --> 01:33:54,260 1896 01:33:54,260 --> 01:33:57,100 E eu vou arranxar iso cando Eu envialo de novo. 1897 01:33:57,100 --> 01:33:59,830 Será que isto ten sentido? 1898 01:33:59,830 --> 01:34:01,160 >> Entón, como imos traballar co DOM? 1899 01:34:01,160 --> 01:34:03,790 Sempre que xestione o DOM en JavaScript, existen dous pasos. 1900 01:34:03,790 --> 01:34:05,030 Selecciona un elemento DOM. 1901 01:34:05,030 --> 01:34:06,580 E entón fai as cousas para el. 1902 01:34:06,580 --> 01:34:11,480 Polo tanto, neste caso, de forma abstracta, eu teño seleccionado o elemento do medio. 1903 01:34:11,480 --> 01:34:14,530 E, a continuación, un exemplo de facer cousas para iso sería cambiando o texto. 1904 01:34:14,530 --> 01:34:16,020 Isto adoitaba ser Bob. 1905 01:34:16,020 --> 01:34:19,930 Agora, o que eu fixen a el foi que eu mudei Bob Milo neste caso. 1906 01:34:19,930 --> 01:34:22,130 >> Entón, como é que imos realmente facer isto? 1907 01:34:22,130 --> 01:34:23,440 Como é que imos facer a selección? 1908 01:34:23,440 --> 01:34:26,560 E como non o facendo cousas para a cousa, xa que tomou? 1909 01:34:26,560 --> 01:34:30,470 Ben, o xeito que vostedes aprenderon nesta clase é usar algo que 1910 01:34:30,470 --> 01:34:32,420 chamado jQuery. 1911 01:34:32,420 --> 01:34:33,910 Entón o que é jQuery? 1912 01:34:33,910 --> 01:34:37,220 jQuery é unha biblioteca que fai JavaScript máis fácil de escribir. 1913 01:34:37,220 --> 01:34:39,500 Entón, alguén tivo o tempo e escribiu jQuery. 1914 01:34:39,500 --> 01:34:41,530 >> jQuery escríbese en JavaScript. 1915 01:34:41,530 --> 01:34:44,550 E entón, por que eles fixeron iso, agora ten unha morea de funcións que 1916 01:34:44,550 --> 01:34:46,020 podemos utilizar que fan a nosa vive realmente fácil. 1917 01:34:46,020 --> 01:34:48,580 1918 01:34:48,580 --> 01:34:50,030 Entón, cales son algunhas das cousas que fai? 1919 01:34:50,030 --> 01:34:51,650 Fai seleccionar elementos máis fácil. 1920 01:34:51,650 --> 01:34:54,020 Fai cambiando HTML, engadir clases máis doado. 1921 01:34:54,020 --> 01:34:55,360 Fai Ajax máis fácil. 1922 01:34:55,360 --> 01:34:58,230 Nós imos chegar a iso nun segundo. 1923 01:34:58,230 --> 01:35:00,630 >> E é análogo a bibliotecas C. 1924 01:35:00,630 --> 01:35:03,090 Entón incluír string.h, se strlen. 1925 01:35:03,090 --> 01:35:04,680 Comeza strcpy, todas esas cousas. 1926 01:35:04,680 --> 01:35:09,650 Cando incluír jQuery, ten bo formas de seleccionar elementos para cambio 1927 01:35:09,650 --> 01:35:10,390 cousas, etcétera. 1928 01:35:10,390 --> 01:35:12,990 Comeza a funcionalidade extra que JavaScript non lle dar. 1929 01:35:12,990 --> 01:35:15,310 Entón jQuery non é JavaScript. 1930 01:35:15,310 --> 01:35:18,660 jQuery é unha biblioteca que está escrito en JavaScript que fai JavaScript 1931 01:35:18,660 --> 01:35:20,440 máis fácil de escribir. 1932 01:35:20,440 --> 01:35:23,170 >> Entón jQuery non é unha programación lingua. 1933 01:35:23,170 --> 01:35:24,540 Pero é JavaScript. 1934 01:35:24,540 --> 01:35:27,420 1935 01:35:27,420 --> 01:35:27,590 facer. 1936 01:35:27,590 --> 01:35:30,420 Claro que comezar a súa terminoloxía correcta. 1937 01:35:30,420 --> 01:35:32,490 Algunha pregunta? 1938 01:35:32,490 --> 01:35:33,882 Si 1939 01:35:33,882 --> 01:35:35,132 Isto é unha pregunta? 1940 01:35:35,132 --> 01:35:37,910 1941 01:35:37,910 --> 01:35:38,350 Todo ben. 1942 01:35:38,350 --> 01:35:40,080 Así como usar jQuery? 1943 01:35:40,080 --> 01:35:42,390 Ben, cando está escribindo un O código JavaScript e incluír un 1944 01:35:42,390 --> 01:35:45,570 jQuery na parte superior do seu arquivo como un arquivo de script, pode utilizar o sinal de dólar 1945 01:35:45,570 --> 01:35:47,310 agora para obter acceso a jQuery. 1946 01:35:47,310 --> 01:35:49,860 E iso é diferente de o cifrão no PHP. 1947 01:35:49,860 --> 01:35:51,590 >> É o mesmo símbolo que escriba no teclado. 1948 01:35:51,590 --> 01:35:52,780 Pero significan cousas moi diferentes. 1949 01:35:52,780 --> 01:35:56,090 Sinal de dólar en PHP significa que esta É así que eu declarar unha variable. 1950 01:35:56,090 --> 01:35:59,120 En JavaScript, cando incluíu jQuery, el representa jQuery. 1951 01:35:59,120 --> 01:36:01,280 Polo tanto, manter isto presente. 1952 01:36:01,280 --> 01:36:03,420 Entón, como podemos seleccionar elementos DOM? 1953 01:36:03,420 --> 01:36:06,500 Ben, cando fai o feo JavaScript xeito, acceder a 1954 01:36:06,500 --> 01:36:08,240 documento variable global. 1955 01:36:08,240 --> 01:36:11,170 E entón comeza elemento por familia ID. 1956 01:36:11,170 --> 01:36:15,270 Isto é realmente longa e prolixo e non moi agradable. 1957 01:36:15,270 --> 01:36:18,190 >> Ou pode obter todos os elementos que son unha marca p. 1958 01:36:18,190 --> 01:36:20,080 Isto funciona tamén en Javascript. 1959 01:36:20,080 --> 01:36:22,470 Pero nós nunca realmente mostrou a sintaxe moito. 1960 01:36:22,470 --> 01:36:24,620 O que nós amosamos é jQuery. 1961 01:36:24,620 --> 01:36:28,720 Entón, todo este selector alí enriba que foi expresada en JavaScript só queda 1962 01:36:28,720 --> 01:36:33,320 condensado para este moi agradable dólar asinar familia hashtag. 1963 01:36:33,320 --> 01:36:38,480 E $ p, só onde é así. 1964 01:36:38,480 --> 01:36:41,690 Se quere seleccionar todas as etiquetas p dentro dunha familia, poñemos un espazo 1965 01:36:41,690 --> 01:36:42,890 entre os dous. 1966 01:36:42,890 --> 01:36:44,815 E agora, temos todo o p etiquetas dentro dunha familia. 1967 01:36:44,815 --> 01:36:48,740 1968 01:36:48,740 --> 01:36:50,380 >> E parece familiar? 1969 01:36:50,380 --> 01:36:52,880 Ben, Angela falou sobre Selectores CSS. 1970 01:36:52,880 --> 01:36:54,200 Déame un segundo. 1971 01:36:54,200 --> 01:36:57,230 E así, a fin de seleccionar un elemento, acaba de usar o mesmo que 1972 01:36:57,230 --> 01:36:58,530 faría un selector CSS. 1973 01:36:58,530 --> 01:37:00,910 Se pór un hash diante diso, el selecciona por ID. 1974 01:37:00,910 --> 01:37:02,220 Un punto selecciona por clases. 1975 01:37:02,220 --> 01:37:06,230 Se só ten a cousa sen hashes ou puntos, el selecciona estas etiquetas. 1976 01:37:06,230 --> 01:37:07,140 Preguntas. 1977 01:37:07,140 --> 01:37:07,470 Si? 1978 01:37:07,470 --> 01:37:11,510 >> Audiencia: Cando usamos punto na nosa HTML, é que non jQuery? 1979 01:37:11,510 --> 01:37:13,520 >> JOSEPH ONG: Dot na nosa HTML é unha cousa JavaScript. 1980 01:37:13,520 --> 01:37:14,750 Non é unha cousa jQuery. 1981 01:37:14,750 --> 01:37:17,620 O xeito que vostedes aprenderon con jQuery é empregar. html. 1982 01:37:17,620 --> 01:37:21,510 E entón pasou o que quere HTML será. 1983 01:37:21,510 --> 01:37:23,480 Entón, eu vou chegar a iso en só unha segunda, en realidade. 1984 01:37:23,480 --> 01:37:27,800 Entón, como imos facer cousas para elemento xa que o seleccionou? 1985 01:37:27,800 --> 01:37:30,130 Entón, iso é un exemplo de seleccionar un elemento. 1986 01:37:30,130 --> 01:37:32,280 Entón, agora, queremos facer cousas para el. 1987 01:37:32,280 --> 01:37:35,730 >> Polo tanto, neste caso, déixeme volver ao slide anterior. 1988 01:37:35,730 --> 01:37:37,360 Foi Bob antes. 1989 01:37:37,360 --> 01:37:40,660 E quero cambiar isto dentro HTML Milo. 1990 01:37:40,660 --> 01:37:43,240 Entón eu chamar a función HTML desde o elemento. 1991 01:37:43,240 --> 01:37:45,580 Esta función é HTML un método de elemento. 1992 01:37:45,580 --> 01:37:47,430 E entón eu darlle o que Eu quero que o HTML sexa. 1993 01:37:47,430 --> 01:37:50,560 E el só substitúe o que está dentro que etiqueta co que eu dou. 1994 01:37:50,560 --> 01:37:50,830 Si 1995 01:37:50,830 --> 01:37:51,170 Pregunta? 1996 01:37:51,170 --> 01:37:57,397 >> Audiencia: A hashtag úsase só para o jQuery. 1997 01:37:57,397 --> 01:37:59,313 [Inaudível] 1998 01:37:59,313 --> 01:38:01,230 que non ía usar isto. 1999 01:38:01,230 --> 01:38:01,960 >> JOSEPH ONG: Si, exactamente. 2000 01:38:01,960 --> 01:38:03,750 Pero non se preocupe moito JavaScript sobre puros. 2001 01:38:03,750 --> 01:38:06,670 Eu só quero que vostedes concentrarse en como faría iso con jQuery, porque 2002 01:38:06,670 --> 01:38:10,020 que será o importante parte no quiz. 2003 01:38:10,020 --> 01:38:10,400 Correcto. 2004 01:38:10,400 --> 01:38:10,880 Exactamente. 2005 01:38:10,880 --> 01:38:16,025 Entón ve que hashtag, de xeito que corresponde a seleccionar o elemento con 2006 01:38:16,025 --> 01:38:18,310 medio ID por mor desa hashtag. 2007 01:38:18,310 --> 01:38:19,670 Hashtag significa ID. 2008 01:38:19,670 --> 01:38:22,870 E este elemento ten un ID de medio. 2009 01:38:22,870 --> 01:38:24,366 Entón ese é o elemento que seleccionar. 2010 01:38:24,366 --> 01:38:27,160 >> Audiencia: [inaudível]. 2011 01:38:27,160 --> 01:38:31,090 cifrão hashtag [inaudível]? 2012 01:38:31,090 --> 01:38:31,710 >> JOSEPH ONG: Entón non. 2013 01:38:31,710 --> 01:38:33,280 A cuestión é que pode usar. Valor. 2014 01:38:33,280 --> 01:38:36,445 E. Valor só funciona en elementos que son insumos. 2015 01:38:36,445 --> 01:38:40,950 2016 01:38:40,950 --> 01:38:45,495 En jQuery, sería . Val, non o valor .. 2017 01:38:45,495 --> 01:38:49,080 Entón, eu vou chegar a un pequeno exemplo que demostra todo isto en combinación 2018 01:38:49,080 --> 01:38:49,850 nun segundo. 2019 01:38:49,850 --> 01:38:53,130 Pero eu creo que iso serve un pequeno fragmento ten sentido para a xente ata o momento. 2020 01:38:53,130 --> 01:38:55,450 Quere cambiar o HTML, chamar ao método HTML. 2021 01:38:55,450 --> 01:38:56,432 Si 2022 01:38:56,432 --> 01:38:58,200 >> Audiencia: Pode explicar o método de novo? 2023 01:38:58,200 --> 01:39:01,900 >> JOSEPH ONG: Entón, un método é só un función que pertence a un, na presente 2024 01:39:01,900 --> 01:39:04,590 caso, un deses elementos DOM, porque ve que eu 2025 01:39:04,590 --> 01:39:05,940 seleccionado o primeiro elemento. 2026 01:39:05,940 --> 01:39:07,320 En realidade, déixeme usar o rato. 2027 01:39:07,320 --> 01:39:09,330 Seleccionei o elemento primeiro. 2028 01:39:09,330 --> 01:39:12,310 E entón eu chamei esta HTML función que tiña. 2029 01:39:12,310 --> 01:39:15,710 E por que esa función pertence á esta cousa, chamamos dun método. 2030 01:39:15,710 --> 01:39:19,480 Isto é só un nome fantasía para el. 2031 01:39:19,480 --> 01:39:20,730 Diga iso de novo. 2032 01:39:20,730 --> 01:39:22,880 2033 01:39:22,880 --> 01:39:25,170 Entón lembre, seleccionamos o elemento agora. 2034 01:39:25,170 --> 01:39:27,810 E nós poñelas dentro o elemento variable. 2035 01:39:27,810 --> 01:39:28,600 Corrixa? 2036 01:39:28,600 --> 01:39:34,380 >> Así, cando queremos cambiar o código HTML na dentro, porque era Bob antes, 2037 01:39:34,380 --> 01:39:36,420 quere cambiar o texto para Milo. 2038 01:39:36,420 --> 01:39:37,920 Entón chamamos HTML. 2039 01:39:37,920 --> 01:39:41,610 E nós dicimos que o que o HTML dentro que elemento debe ser o momento. 2040 01:39:41,610 --> 01:39:44,107 E así cambia a Milo, porque eu dei-lle Milo. 2041 01:39:44,107 --> 01:39:46,542 >> Audiencia: Entón, están a traballar xuntos. 2042 01:39:46,542 --> 01:39:47,030 [Inaudível] 2043 01:39:47,030 --> 01:39:47,390 >> JOSEPH ONG: Si, si. 2044 01:39:47,390 --> 01:39:48,180 Eles están a traballar xuntos. 2045 01:39:48,180 --> 01:39:50,210 Entón un deles selecciona o primeiro elemento. 2046 01:39:50,210 --> 01:39:52,863 E a segunda se fai algo a el. 2047 01:39:52,863 --> 01:39:53,790 Si 2048 01:39:53,790 --> 01:39:56,168 >> Audiencia: [inaudível]. 2049 01:39:56,168 --> 01:40:01,280 Se a rede é diferente en HTML ten o método igual real. 2050 01:40:01,280 --> 01:40:01,560 >> JOSEPH ONG: Yeah. 2051 01:40:01,560 --> 01:40:03,370 Isto é un método diferente. 2052 01:40:03,370 --> 01:40:04,670 Isto é un método diferente. 2053 01:40:04,670 --> 01:40:07,860 E podemos cubrir que en só un segundo cando chegamos a un exemplo. 2054 01:40:07,860 --> 01:40:12,000 Eu quero ter seguro de que podemos acelerar porque estamos correndo contra o tempo. 2055 01:40:12,000 --> 01:40:15,360 Pero nós funcionamos forma ao longo do tempo agora. 2056 01:40:15,360 --> 01:40:15,490 Aceptar. 2057 01:40:15,490 --> 01:40:16,430 Legal. 2058 01:40:16,430 --> 01:40:20,130 Entón, se quere engadir unha clase, non hai tamén un método de clase add. 2059 01:40:20,130 --> 01:40:24,300 Este é só un exemplo do que podes facer con jQuery. 2060 01:40:24,300 --> 01:40:25,950 Isto só engade unha clase. 2061 01:40:25,950 --> 01:40:28,660 >> Se quere eliminar-lo, pode chamar de eliminación. 2062 01:40:28,660 --> 01:40:32,280 Esta é só unha cousa que podes facer. 2063 01:40:32,280 --> 01:40:35,680 Así, máis exemplos de cousas que podes facer. 2064 01:40:35,680 --> 01:40:37,510 Entón, podo simplemente poñelas parte superior así? 2065 01:40:37,510 --> 01:40:38,760 O máis novo de eliminación. 2066 01:40:38,760 --> 01:40:42,470 2067 01:40:42,470 --> 01:40:45,930 Se eu executar este Javascript no parte superior do meu arquivo, será que funciona? 2068 01:40:45,930 --> 01:40:48,540 2069 01:40:48,540 --> 01:40:48,920 Correcto. 2070 01:40:48,920 --> 01:40:50,530 Por medio aínda non existe. 2071 01:40:50,530 --> 01:40:51,840 Entón, iso non vai funcionar. 2072 01:40:51,840 --> 01:40:52,800 Orde de execución. 2073 01:40:52,800 --> 01:40:55,040 El vai para arriba por primeira vez. 2074 01:40:55,040 --> 01:40:55,540 O que? 2075 01:40:55,540 --> 01:40:57,450 >> Audiencia: O máis novo aínda non existe? 2076 01:40:57,450 --> 01:40:57,810 >> JOSEPH ONG: Yeah. 2077 01:40:57,810 --> 01:40:58,710 O máis novo aínda non existe. 2078 01:40:58,710 --> 01:40:59,600 Exactamente. 2079 01:40:59,600 --> 01:41:01,320 >> Audiencia: Vostede dixo medio. 2080 01:41:01,320 --> 01:41:01,510 >> JOSEPH ONG: Sentímolo. 2081 01:41:01,510 --> 01:41:02,720 O máis novo aínda non existe. 2082 01:41:02,720 --> 01:41:04,510 E a outra cousa é que eu non teño incluído o jQuery 2083 01:41:04,510 --> 01:41:06,580 arquivo pedir src guión. 2084 01:41:06,580 --> 01:41:07,960 Entón, iso non vai funcionar. 2085 01:41:07,960 --> 01:41:09,580 En realidade, eu non fixen iso en o seguinte foto, que é 2086 01:41:09,580 --> 01:41:10,700 supostamente para corrixir o que quere. 2087 01:41:10,700 --> 01:41:14,120 Pero o xeito no que facemos isto JavaScript está orientado a eventos. 2088 01:41:14,120 --> 01:41:17,410 Entón, o que facemos é usar un evento Handler para facer isto acontecer. 2089 01:41:17,410 --> 01:41:19,510 E así eu seleccionar o documento definido en primeiro lugar. 2090 01:41:19,510 --> 01:41:23,810 Digo, OK, cando o documento é listo, déixeme realizar unha función. 2091 01:41:23,810 --> 01:41:25,470 Entón, iso é todo o que os medios de sintaxe. 2092 01:41:25,470 --> 01:41:27,100 >> Seleccionei o documento. 2093 01:41:27,100 --> 01:41:29,530 Agora, cando o documento é preparado, executa a función. 2094 01:41:29,530 --> 01:41:32,970 E así por aquí cando o documento é listo, o que significa que todo o HTML ten 2095 01:41:32,970 --> 01:41:36,140 cargado, entón eu executar a función que elimina ese elemento. 2096 01:41:36,140 --> 01:41:40,270 E agora, cando a cabo esta función que pasei en listo, estou 2097 01:41:40,270 --> 01:41:43,780 garantir que todo o código HTML na páxina vai existir en primeiro lugar. 2098 01:41:43,780 --> 01:41:44,100 Si 2099 01:41:44,100 --> 01:41:44,425 Pregunta? 2100 01:41:44,425 --> 01:41:48,200 >> Audiencia: Cal é o seu contrasinal do evento dentro da función? 2101 01:41:48,200 --> 01:41:51,750 >> JOSEPH ONG: Entón, a palabra clave do evento na función é só un parámetro que 2102 01:41:51,750 --> 01:41:53,490 é pasado para a función para calquera evento. 2103 01:41:53,490 --> 01:41:55,470 É só algo que obter gratuitamente. 2104 01:41:55,470 --> 01:41:59,320 Cando está usando manipuladores de clave en pset8, este evento podería dicir-lle, por 2105 01:41:59,320 --> 01:42:01,350 exemplo, cal é a clave que presionou. 2106 01:42:01,350 --> 01:42:05,540 Neste caso, a un evento listo, en realidade non é super útil. 2107 01:42:05,540 --> 01:42:08,640 Pero, para un evento de tecla presionada, é máis útil, porque comeza a coñecer o que 2108 01:42:08,640 --> 01:42:12,330 tecla presionada pola chave acceder código fóra ese obxecto de evento. 2109 01:42:12,330 --> 01:42:13,530 Corrixa? 2110 01:42:13,530 --> 01:42:15,160 Será que isto ten sentido? 2111 01:42:15,160 --> 01:42:16,280 Aceptar. 2112 01:42:16,280 --> 01:42:16,580 Si 2113 01:42:16,580 --> 01:42:17,150 Pregunta? 2114 01:42:17,150 --> 01:42:19,290 >> Audiencia: Entón, pode pór o tag script máis abaixo? 2115 01:42:19,290 --> 01:42:19,940 >> JOSEPH ONG: Entón, si. 2116 01:42:19,940 --> 01:42:21,500 Podería poñer o script marcar máis abaixo. 2117 01:42:21,500 --> 01:42:23,090 Pero, entón, el só se fai realmente confuso. 2118 01:42:23,090 --> 01:42:26,590 E nós gústanos de centralizar todas as do noso código nun só lugar. 2119 01:42:26,590 --> 01:42:28,290 E iso vai permitir facelo. 2120 01:42:28,290 --> 01:42:32,010 Teña en conta que antes eu dixo que hai un agradable forma de asegurar que os elementos son 2121 01:42:32,010 --> 01:42:33,880 na páxina antes de realizar o código? 2122 01:42:33,880 --> 01:42:36,079 E esta é só unha maneira agradable conseguir isto. 2123 01:42:36,079 --> 01:42:37,329 >> Audiencia: [inaudível]. 2124 01:42:37,329 --> 01:42:41,710 2125 01:42:41,710 --> 01:42:42,230 >> JOSEPH ONG: Yeah. 2126 01:42:42,230 --> 01:42:43,460 Vd tería que, non? 2127 01:42:43,460 --> 01:42:46,930 Porque lembre, vostede incluíu o ficheiro na parte superior da páxina. 2128 01:42:46,930 --> 01:42:49,890 Entón, que vai executar antes de chegar ao final. 2129 01:42:49,890 --> 01:42:54,600 2130 01:42:54,600 --> 01:42:55,180 Aceptar. 2131 01:42:55,180 --> 01:42:59,210 Así, tamén se pode engadir un diferente tipo de manipulador de eventos. 2132 01:42:59,210 --> 01:43:00,640 Este só procesa click. 2133 01:43:00,640 --> 01:43:03,910 Cando clic en máis novo, entón ha aparecer con unha alerta. 2134 01:43:03,910 --> 01:43:05,440 Este é só un diferente tipo de evento. 2135 01:43:05,440 --> 01:43:08,840 A diferenza do evento listo, agora usar o evento click cando recibe 2136 01:43:08,840 --> 01:43:10,190 clic nun elemento. 2137 01:43:10,190 --> 01:43:13,860 >> E así, neste caso, lembre, o clic manipulador está adxunto a máis nova. 2138 01:43:13,860 --> 01:43:16,080 Por iso, só acontece cando Clic no máis novo. 2139 01:43:16,080 --> 01:43:19,510 E na outra, o evento listo foi anexado ao documento. 2140 01:43:19,510 --> 01:43:23,750 Por iso, espera que o documento para estar preparado. 2141 01:43:23,750 --> 01:43:25,120 Ten sentido? 2142 01:43:25,120 --> 01:43:26,190 Eu creo que podo seguir adiante. 2143 01:43:26,190 --> 01:43:26,610 Si 2144 01:43:26,610 --> 01:43:26,980 Pregunta? 2145 01:43:26,980 --> 01:43:28,230 >> Audiencia: [inaudível]. 2146 01:43:28,230 --> 01:43:31,676 2147 01:43:31,676 --> 01:43:33,620 neste caso use [inaudível]. 2148 01:43:33,620 --> 01:43:36,650 >> JOSEPH ONG: Ah, si, porque neste caso, eu teño que esperar para os máis novos 2149 01:43:36,650 --> 01:43:40,740 elemento que aparece na primeira pantalla antes de que eu poida achegar un manipulador de click para 2150 01:43:40,740 --> 01:43:43,062 el, que é por iso que eu colocar-lo dentro dun documento listo. 2151 01:43:43,062 --> 01:43:45,780 2152 01:43:45,780 --> 01:43:46,840 Aceptar. 2153 01:43:46,840 --> 01:43:52,390 E o próximo, de xeito que este é un gran exemplo de como combinar todo. 2154 01:43:52,390 --> 01:43:55,930 Este é só un exemplo de validación de formulario xa viu en charla. 2155 01:43:55,930 --> 01:43:58,410 Entón, leva-lo paso a paso como pasar por iso. 2156 01:43:58,410 --> 01:43:59,590 E será totalmente Aceptar. 2157 01:43:59,590 --> 01:44:01,400 Só ler de arriba abaixo. 2158 01:44:01,400 --> 01:44:03,030 >> Eu teño un formulario na parte inferior. 2159 01:44:03,030 --> 01:44:07,590 Cando o documento estea listo, eu engadir un enviar manipulador á forma, de xeito que 2160 01:44:07,590 --> 01:44:12,910 cando enviar o formulario, recibo os valores dentro de cada unha destas entradas. 2161 01:44:12,910 --> 01:44:14,560 E eu comprobar se está baleiro. 2162 01:44:14,560 --> 01:44:17,090 Se é branco, eu voltar falso, porque Eu non quero enviar o formulario, 2163 01:44:17,090 --> 01:44:18,950 porque a forma está errada. 2164 01:44:18,950 --> 01:44:22,040 Se o contrasinal está en branco ou é menos de oito caracteres, non presentar 2165 01:44:22,040 --> 01:44:24,470 a forma, porque iso tamén é malo. 2166 01:44:24,470 --> 01:44:28,150 Eo teito retorno só impide a forma de presentación e 2167 01:44:28,150 --> 01:44:30,150 indo a unha nova páxina. 2168 01:44:30,150 --> 01:44:31,310 >> E, esperamos, iso ten sentido. 2169 01:44:31,310 --> 01:44:34,650 Eu creo que vostedes deben percorrer Neste paso a paso código no seu propio país. 2170 01:44:34,650 --> 01:44:38,350 E unha vez que entender o que a selección elementos e facer cousas para el 2171 01:44:38,350 --> 01:44:40,520 realmente implica, isto fará que moito sentido para ti. 2172 01:44:40,520 --> 01:44:41,295 Si? 2173 01:44:41,295 --> 01:44:44,150 >> Audiencia: O que fai o name = nome significa? 2174 01:44:44,150 --> 01:44:48,530 >> JOSEPH ONG: Entón o nome = nome de usuario e name = contrasinal significa só ollar para o 2175 01:44:48,530 --> 01:44:50,730 atributo de calquera está escollendo. 2176 01:44:50,730 --> 01:44:51,790 E, a continuación, que ten que corresponder. 2177 01:44:51,790 --> 01:44:53,870 Entón imos para o rexistro. 2178 01:44:53,870 --> 01:44:56,240 E entón miramos para todas as entradas e rexistro. 2179 01:44:56,240 --> 01:44:59,990 E, entón, elixir aquel en que o nome atributo é igual ao nome de usuario. 2180 01:44:59,990 --> 01:45:04,040 Así que o primeiro selector só selecciona a entrada de nome de usuario. 2181 01:45:04,040 --> 01:45:08,220 E que segundo selector só selecciona o contrasinal de uso único, porque os teñen 2182 01:45:08,220 --> 01:45:12,240 seus atributos nome definido como o que deberían ser. 2183 01:45:12,240 --> 01:45:12,575 Pregunta? 2184 01:45:12,575 --> 01:45:17,030 >> Audiencia: No envío, como é que o parte inferior resolver a parte de arriba? 2185 01:45:17,030 --> 01:45:19,350 >> JOSEPH ONG: Entón é porque do manipulador de eventos. 2186 01:45:19,350 --> 01:45:23,000 Entón, nós estamos á espera de un evento de presentación que é despedido do formulario. 2187 01:45:23,000 --> 01:45:24,730 E iso é todo o que é enviar. 2188 01:45:24,730 --> 01:45:26,080 Por que eu chamo presentar alí enriba? 2189 01:45:26,080 --> 01:45:28,870 Di, cando o formulario é enviado, Recibe un evento de enviar. 2190 01:45:28,870 --> 01:45:33,480 Entón deixe-me que interceptar e a continuación, realizar este código no seu sitio. 2191 01:45:33,480 --> 01:45:33,823 Si? 2192 01:45:33,823 --> 01:45:35,866 >> Audiencia: Por que ten ter evento función? 2193 01:45:35,866 --> 01:45:38,580 Por que non pode simplemente [inaudível]? 2194 01:45:38,580 --> 01:45:41,140 >> JOSEPH ONG: Porque en JavaScript, ti ten que declarar as funcións. 2195 01:45:41,140 --> 01:45:42,910 É así que funciona en JavaScript. 2196 01:45:42,910 --> 01:45:44,800 Ten que dicir que vai para realizar unha función. 2197 01:45:44,800 --> 01:45:47,290 Entón está dicindo que está esperando unha función aquí en vez de 2198 01:45:47,290 --> 01:45:48,260 só chaves. 2199 01:45:48,260 --> 01:45:50,460 >> Audiencia: E a función é todo o que se segue? 2200 01:45:50,460 --> 01:45:50,650 >> JOSEPH ONG: Yeah. 2201 01:45:50,650 --> 01:45:52,790 A función é o que está dentro as chaves despois 2202 01:45:52,790 --> 01:45:53,630 a palabra chave función. 2203 01:45:53,630 --> 01:45:54,045 Si? 2204 01:45:54,045 --> 01:45:55,295 >> Audiencia: [inaudível]. 2205 01:45:55,295 --> 01:46:00,180 2206 01:46:00,180 --> 01:46:00,660 >> JOSEPH ONG: Para enviar? 2207 01:46:00,660 --> 01:46:03,520 >> Audiencia: Non, para a función sen o evento. 2208 01:46:03,520 --> 01:46:03,770 >> JOSEPH ONG: Yeah. 2209 01:46:03,770 --> 01:46:05,610 Así, sen o evento, pode ter iso. 2210 01:46:05,610 --> 01:46:08,480 Se non precisa do evento, entón pode simplemente omiti-lo. 2211 01:46:08,480 --> 01:46:12,220 Pero se o fas entón basta colocar-lo alí. 2212 01:46:12,220 --> 01:46:12,520 Si 2213 01:46:12,520 --> 01:46:13,190 Pregunta rápida? 2214 01:46:13,190 --> 01:46:14,440 >> Audiencia: [inaudível]. 2215 01:46:14,440 --> 01:46:21,170 2216 01:46:21,170 --> 01:46:21,440 >> JOSEPH ONG: Yeah. 2217 01:46:21,440 --> 01:46:24,550 Porque o que hai que facer, o document.ready só di esperar por todo 2218 01:46:24,550 --> 01:46:26,540 o código HTML na páxina para cargar primeiro. 2219 01:46:26,540 --> 01:46:30,510 E, xeralmente, quere que os seus elementos no lugar antes de realizar calquera código. 2220 01:46:30,510 --> 01:46:31,030 Todo ben. 2221 01:46:31,030 --> 01:46:32,180 Temos que ir ao Ajax. 2222 01:46:32,180 --> 01:46:33,110 Nós non temos moito tempo. 2223 01:46:33,110 --> 01:46:35,170 Entón, pros e contras. 2224 01:46:35,170 --> 01:46:37,450 JavaScript é intento máis fácil escribir con jQuery. 2225 01:46:37,450 --> 01:46:38,930 Pero jQuery é unha especie de lento. 2226 01:46:38,930 --> 01:46:42,290 >> É como o PHP é máis lento que C, porque é interpretado. 2227 01:46:42,290 --> 01:46:45,690 E jQuery é un pouco máis lento que JavaScript, porque fai unha morea de 2228 01:46:45,690 --> 01:46:46,630 cousas baixo o capó. 2229 01:46:46,630 --> 01:46:48,660 E por iso, se está a usar jQuery, é só un pouco máis lento que 2230 01:46:48,660 --> 01:46:51,630 JavaScript, aínda dálle agradable elegancia. 2231 01:46:51,630 --> 01:46:53,970 E, finalmente, o Ajax. 2232 01:46:53,970 --> 01:46:59,170 Ata agora, co Ajax, aínda non viu Ajax en termos de pset7 aínda, porque 2233 01:46:59,170 --> 01:47:01,150 cando fai, envía un formulario para cotización. 2234 01:47:01,150 --> 01:47:02,350 El leva unha nova páxina. 2235 01:47:02,350 --> 01:47:04,440 Entón comeza este gran clarão branco na páxina mentres que 2236 01:47:04,440 --> 01:47:06,820 cargas segunda páxina, correcto? 2237 01:47:06,820 --> 01:47:08,780 >> Sería moi bo se non ten ese flash. 2238 01:47:08,780 --> 01:47:11,600 Como Facebook, se acaba de desprazarse a no fondo, el engade novos contidos 2239 01:47:11,600 --> 01:47:13,490 sen actualizar a páxina enteira. 2240 01:47:13,490 --> 01:47:15,420 Entón algo como isto sería bo. 2241 01:47:15,420 --> 01:47:17,370 Este é o código JavaScript na parte esquerda. 2242 01:47:17,370 --> 01:47:19,390 Vostede está con o que está dentro do que a entrada. 2243 01:47:19,390 --> 01:47:21,340 Comeza a Información da Yahoo! 2244 01:47:21,340 --> 01:47:27,440 E entón facer unha gran cadea que di: OK, esta é a mensaxe que quero 2245 01:47:27,440 --> 01:47:28,400 para mostrar en pantalla. 2246 01:47:28,400 --> 01:47:32,280 E entón poñer esta mensaxe dentro dalgún elemento HTML que recibe 2247 01:47:32,280 --> 01:47:33,970 aparece na pantalla. 2248 01:47:33,970 --> 01:47:35,540 >> Entón, iso é todo o que está pasando aquí. 2249 01:47:35,540 --> 01:47:39,410 Entón, basicamente, porque iso é todo Javascript e non necesita correr 2250 01:47:39,410 --> 01:47:42,980 máis PHP, esta debería asegurarse se que a páxina non actualizar. 2251 01:47:42,980 --> 01:47:47,470 Polo tanto, esta é só unha idea abstracta que eu estou dicindo aquí, polo de agora. 2252 01:47:47,470 --> 01:47:50,630 A idea abstracta é que se fai iso todo en JavaScript, non ten un 2253 01:47:50,630 --> 01:47:52,330 actualización da páxina. 2254 01:47:52,330 --> 01:47:53,800 Pero como o que realmente facelo? 2255 01:47:53,800 --> 01:47:56,230 >> Ben, en realidade, imos falar sobre un problema con este primeiro. 2256 01:47:56,230 --> 01:47:59,340 Un problema é en JavaScript, execución é síncrona. 2257 01:47:59,340 --> 01:48:02,000 Entón tes que esperar por un liña para rematar antes de ti 2258 01:48:02,000 --> 01:48:03,370 executar a seguinte liña. 2259 01:48:03,370 --> 01:48:06,130 E se eu estou indo a Yahoo!, e os seus servidores son moi lento, e 2260 01:48:06,130 --> 01:48:08,790 leva tres segundos para me devolva esa información stock? 2261 01:48:08,790 --> 01:48:12,620 Cando bati esa liña de prezo, se o execución é síncrono, como é por 2262 01:48:12,620 --> 01:48:15,390 estándar, o que só vai facer é o seu navegador deixará a 2263 01:48:15,390 --> 01:48:15,930 Tres segundos. 2264 01:48:15,930 --> 01:48:18,900 E non vai ser capaz de facer nada mentres el recibe os datos. 2265 01:48:18,900 --> 01:48:20,010 Vai ser conxelado. 2266 01:48:20,010 --> 01:48:20,800 >> E iso é malo. 2267 01:48:20,800 --> 01:48:23,390 Non quere que un usuario ten unha páxina web conxelado. 2268 01:48:23,390 --> 01:48:24,170 Corrixa? 2269 01:48:24,170 --> 01:48:25,480 Isto é só malo. 2270 01:48:25,480 --> 01:48:26,770 Todo o mundo de acordo? 2271 01:48:26,770 --> 01:48:29,270 Se está navegando en Facebook e conxela e non pode facer nada, 2272 01:48:29,270 --> 01:48:31,920 queda moi errado. 2273 01:48:31,920 --> 01:48:34,960 Entón a solución é que facemos algo asíncrono vez. 2274 01:48:34,960 --> 01:48:38,910 Entón, todo isto di asíncrono é, eu vou pedir a este 2275 01:48:38,910 --> 01:48:40,280 URL para algúns datos. 2276 01:48:40,280 --> 01:48:41,610 E entón eu vou seguir. 2277 01:48:41,610 --> 01:48:45,330 Eu estou indo só para manter a execución calquera código que foi despois diso. 2278 01:48:45,330 --> 01:48:49,290 >> E entón cando os datos están listos, entón eu vou proceso-lo. 2279 01:48:49,290 --> 01:48:50,540 Isto é todo o que está dicindo. 2280 01:48:50,540 --> 01:48:52,795 2281 01:48:52,795 --> 01:48:56,710 >> Audiencia: Ajax só fai asíncrono código? 2282 01:48:56,710 --> 01:48:58,560 >> JOSEPH ONG: É un asíncrono forma de Buscando datos. 2283 01:48:58,560 --> 01:49:01,230 Así, o primeiro sobre o Ajax é el me permite obter datos 2284 01:49:01,230 --> 01:49:03,170 dende un sitio externo. 2285 01:49:03,170 --> 01:49:07,045 E a segunda é que pasa a ser que a miña páxina non parar mentres estou 2286 01:49:07,045 --> 01:49:07,970 buscar eses datos. 2287 01:49:07,970 --> 01:49:09,600 Esta é a parte asíncrono do mesmo. 2288 01:49:09,600 --> 01:49:13,040 Porque vai noutro lugar, porque eu digo que eu continúe mentres 2289 01:49:13,040 --> 01:49:14,900 é buscar estes datos, que fai asíncrono. 2290 01:49:14,900 --> 01:49:17,170 Eu manteño a execución. 2291 01:49:17,170 --> 01:49:18,960 >> Polo tanto, manter isto asíncrono idea en mente. 2292 01:49:18,960 --> 01:49:22,010 E eu vou te amosar o que é a diferenza. 2293 01:49:22,010 --> 01:49:23,920 A versión síncrona é, na parte esquerda. 2294 01:49:23,920 --> 01:49:26,240 A versión asíncrono é, no lado dereito. 2295 01:49:26,240 --> 01:49:29,170 Olle para os números para ver cal etapas corresponden ao que 2296 01:49:29,170 --> 01:49:30,610 executa en cada liña. 2297 01:49:30,610 --> 01:49:32,730 Alí, a alerta aparece en primeiro lugar. 2298 01:49:32,730 --> 01:49:34,590 Por obter información stock de Yahoo! 2299 01:49:34,590 --> 01:49:37,250 leva tres segundos, tendas durante tres segundos. 2300 01:49:37,250 --> 01:49:39,880 E, entón, alerta o prezo despois destes tres segundos. 2301 01:49:39,880 --> 01:49:43,690 >> Entón, agora, que os concertos de alerta naquela época - 2302 01:49:43,690 --> 01:49:44,610 tres segundo Pol 2303 01:49:44,610 --> 01:49:47,670 E entón el alerta por tras diso. 2304 01:49:47,670 --> 01:49:48,930 Entón, el só vai paso a paso. 2305 01:49:48,930 --> 01:49:51,200 É como o que vostedes aceptaría, correcto? 2306 01:49:51,200 --> 01:49:54,170 Coa execución asíncrona, vostede alerta en primeiro lugar. 2307 01:49:54,170 --> 01:49:57,410 Entón vai para fóra para este URL. 2308 01:49:57,410 --> 01:49:59,530 E vostede di, eu vou basta preguntar aos datos. 2309 01:49:59,530 --> 01:50:01,170 E entón eu vou proceso-lo máis tarde. 2310 01:50:01,170 --> 01:50:04,230 Polo tanto, inmediatamente executa o seguinte liña despois de que eu que facer 2311 01:50:04,230 --> 01:50:05,710 solicitude asíncrono. 2312 01:50:05,710 --> 01:50:08,920 >> Entón, un 0,001 segundo, ve ola alerta. 2313 01:50:08,920 --> 01:50:10,960 Levar a cabo esta función, bye alerta. 2314 01:50:10,960 --> 01:50:14,240 E por que eu fixen unha promesa que eu ía procesar os datos máis tarde, o 2315 01:50:14,240 --> 01:50:17,920 pasa é que cando os datos vén de volta tres segundo máis tarde, despois de que eu corro 2316 01:50:17,920 --> 01:50:21,380 función que teño alí. 2317 01:50:21,380 --> 01:50:21,870 Si? 2318 01:50:21,870 --> 01:50:25,750 >> Audiencia: Podería especificar ou aclarar o que significa Ajax? 2319 01:50:25,750 --> 01:50:30,460 >> JOSEPH ONG: Entón Ajax é unha forma que se eu precisan de datos cando estou nun sitio e eu 2320 01:50:30,460 --> 01:50:34,690 non quere actualizar a páxina, así que Eu uso esta tecnoloxía chamada Ajax. 2321 01:50:34,690 --> 01:50:40,630 Isto só significa, esencialmente, ir buscar datos de outro sitio. 2322 01:50:40,630 --> 01:50:43,724 E facelo dun xeito que só non deixar a miña páxina web. 2323 01:50:43,724 --> 01:50:46,650 >> Audiencia: Así é que unha inherente parte JavaScript ou jQuery? 2324 01:50:46,650 --> 01:50:50,590 >> JOSEPH ONG: Entón, alguén escribiu unha forma de facer isto en JavaScript moito tempo atrás. 2325 01:50:50,590 --> 01:50:52,050 Nun punto, el non existía. 2326 01:50:52,050 --> 01:50:56,630 E entón alguén inventou esta técnica para permitir que a xente a pedir eses datos 2327 01:50:56,630 --> 01:50:57,680 deste xeito. 2328 01:50:57,680 --> 01:50:59,550 E eles escribiron algunhas cousas para facelo por vostede. 2329 01:50:59,550 --> 01:51:01,605 E jQuery só lle dá esta moi agradable xeito de facelo 2330 01:51:01,605 --> 01:51:03,112 con ese $. obter función. 2331 01:51:03,112 --> 01:51:07,200 2332 01:51:07,200 --> 01:51:09,480 pregunta? 2333 01:51:09,480 --> 01:51:11,560 Podo responder a preguntas sobre Ajax demasiado tarde. 2334 01:51:11,560 --> 01:51:13,870 Eu vou estar aquí. 2335 01:51:13,870 --> 01:51:16,390 >> Por iso, imos buscar datos sen actualizar a páxina. 2336 01:51:16,390 --> 01:51:18,200 E imos nós facelo en de forma asíncrono que 2337 01:51:18,200 --> 01:51:19,450 non conxelar a páxina. 2338 01:51:19,450 --> 01:51:22,680 2339 01:51:22,680 --> 01:51:27,310 Por moito tempo, non leu, se iso explicación era moi longo para ti. 2340 01:51:27,310 --> 01:51:29,430 Entón, finalmente, lugar cruz ataques de script. 2341 01:51:29,430 --> 01:51:30,910 Vimos isto con Zamyla. 2342 01:51:30,910 --> 01:51:34,285 Se no meu base de datos alguén ten este nome, o que é esa etiqueta guión, e eu 2343 01:51:34,285 --> 01:51:38,280 ten algún código na miña páxina que imprime os nomes das persoas nunha cola, ou eu teño 2344 01:51:38,280 --> 01:51:43,310 algún código JavaScript que inserir este nome para a páxina, 2345 01:51:43,310 --> 01:51:45,680 HTML que se produce? 2346 01:51:45,680 --> 01:51:47,290 Ben, eu imprimir a etiqueta HTML. 2347 01:51:47,290 --> 01:51:48,390 Eu imprimir todas esas etiquetas. 2348 01:51:48,390 --> 01:51:50,740 >> Chegar á parte onde eu son impresión saír cos meus amigos. 2349 01:51:50,740 --> 01:51:52,980 Imprimo Lauren fóra. 2350 01:51:52,980 --> 01:51:54,200 El imprimir Milo fóra. 2351 01:51:54,200 --> 01:51:56,810 E entón o meu nome na base de datos é pos guión 2352 01:51:56,810 --> 01:51:58,060 estado de Facebook que non fai xustiza. 2353 01:51:58,060 --> 01:52:00,740 2354 01:52:00,740 --> 01:52:04,330 Porque eu introduciu esta na páxina porque parece que JavaScript cando 2355 01:52:04,330 --> 01:52:07,930 esta páxina é enviado para o usuario, é executado como JavaScript. 2356 01:52:07,930 --> 01:52:10,800 E por iso este é o que chamamos ataque cross-site scripting. 2357 01:52:10,800 --> 01:52:14,570 Alguén pon a información malicioso súa base de datos, que poden corresponder a 2358 01:52:14,570 --> 01:52:17,080 algunha corda adicional ou algunha corda JavaScript. 2359 01:52:17,080 --> 01:52:20,130 >> E cando é impreso ao páxina deste xeito, entón o que 2360 01:52:20,130 --> 01:52:22,580 pasa é que código malo é executado que eu non tiña a intención 2361 01:52:22,580 --> 01:52:25,110 para el para se executar. 2362 01:52:25,110 --> 01:52:28,230 E iso é todo un cross-site ataque de script é. 2363 01:52:28,230 --> 01:52:31,790 E a forma de dar a volta dicir como Zamyla dixo. 2364 01:52:31,790 --> 01:52:34,340 Só embrulhar as cousas en HTML caracteres especiais. 2365 01:52:34,340 --> 01:52:39,460 E este HTML caracteres especiais é un PHP función que pode impedir que este tipo 2366 01:52:39,460 --> 01:52:42,000 de cousas ocorre con vostede se ten un malicioso 2367 01:52:42,000 --> 01:52:43,830 corda no seu banco de datos. 2368 01:52:43,830 --> 01:52:47,650 El só lle escapa, de xeito que non fai se interpretado como HTML. 2369 01:52:47,650 --> 01:52:50,960 El substitúe os pequenos soportes co que chamamos entidades. 2370 01:52:50,960 --> 01:52:52,250 E nós fomos sobre iso na charla tamén. 2371 01:52:52,250 --> 01:52:55,800 Entón, eu creo que vostedes deben ter un bo entendemento sobre iso. 2372 01:52:55,800 --> 01:52:57,420 Dúbidas? 2373 01:52:57,420 --> 01:52:57,820 Si 2374 01:52:57,820 --> 01:53:00,860 >> Audiencia: Entón, como é que o [inaudível]? 2375 01:53:00,860 --> 01:53:01,555 >> JOSEPH ONG: Diga iso de novo. 2376 01:53:01,555 --> 01:53:02,500 >> Audiencia: Como é que o monitor - 2377 01:53:02,500 --> 01:53:02,860 >> JOSEPH ONG: Certo. 2378 01:53:02,860 --> 01:53:06,080 Entón tes algo que di, cando Rexistrarme, escriba o meu nome. 2379 01:53:06,080 --> 01:53:09,390 Eu só escribir nese campo, o meu nome é stript cargo non fai xustiza Facebook 2380 01:53:09,390 --> 01:53:11,570 estado preto tag script. 2381 01:53:11,570 --> 01:53:15,690 E iso só é colocado no base de datos, por que eu non podo dicir que alguén 2382 01:53:15,690 --> 01:53:18,260 no mundo non ten un nome cunha frecha para a dereita nel ou o 2383 01:53:18,260 --> 01:53:19,036 guión palabra nel. 2384 01:53:19,036 --> 01:53:21,330 Isto non fai moito sentido. 2385 01:53:21,330 --> 01:53:24,560 Entón, eu só teño que estar seguro de que eu higienizar o material, antes de imprimir lo 2386 01:53:24,560 --> 01:53:25,420 á páxina. 2387 01:53:25,420 --> 01:53:27,140 >> Audiencia: Así, as tarxetas especiais de HTML impide que as etiquetas de script? 2388 01:53:27,140 --> 01:53:28,710 >> JOSEPH ONG: Yeah. 2389 01:53:28,710 --> 01:53:29,960 Por iso non impide que as etiquetas de script. 2390 01:53:29,960 --> 01:53:32,320 El só garante que o etiquetas de script non reciben 2391 01:53:32,320 --> 01:53:35,120 interpretado como HTML ou - 2392 01:53:35,120 --> 01:53:35,400 si. 2393 01:53:35,400 --> 01:53:38,470 El só aparece como o que que realmente é. 2394 01:53:38,470 --> 01:53:39,220 Todo ben. 2395 01:53:39,220 --> 01:53:40,930 Entón esa foi a revisión quiz. 2396 01:53:40,930 --> 01:53:41,830 Legal. 2397 01:53:41,830 --> 01:53:45,088 >> [Aplausos]