1 00:00:00,000 --> 00:00:02,916 2 00:00:02,916 --> 00:00:04,860 >> [Música tocando] 3 00:00:04,860 --> 00:00:10,210 4 00:00:10,210 --> 00:00:13,350 >> DAVID Malan: Este é CS50, e este é o inicio da semana oito. 5 00:00:13,350 --> 00:00:17,510 E nós estamos tan animado para recebê- volta, sorpresa, propia Ramón do CS50 6 00:00:17,510 --> 00:00:22,160 Galvan, un senior en ascenso que foi pasar os últimos meses 7 00:00:22,160 --> 00:00:26,190 desde xullo en Los Angeles, en Hollywood, literalmente traballando nun novo TV 8 00:00:26,190 --> 00:00:31,930 show chamado Colony, o creador dos cales é, en realidade, un alúmen de Harvard propio. 9 00:00:31,930 --> 00:00:36,610 E por iso estamos moi animado para ver este estrea na rede EUA en xaneiro deste ano. 10 00:00:36,610 --> 00:00:40,370 Polo tanto, sexa Nós prestamos moita atención para iso, e para Ramon máis para as próximas semanas. 11 00:00:40,370 --> 00:00:42,550 >> Sabemos que o fin está próximo. 12 00:00:42,550 --> 00:00:47,400 E o que isto significa que non hai todo o que moito deixou de CS50, é triste dicir. 13 00:00:47,400 --> 00:00:49,400 Temos tres problema conxuntos left-- hai 14 00:00:49,400 --> 00:00:52,510 conxunto de problemas, que é en six-- súas mans agora ou serán en breve, 15 00:00:52,510 --> 00:00:56,080 debido aínda este week-- destínase a cubrir nosos mundos de liña de comandos, onde 16 00:00:56,080 --> 00:00:59,450 temos pasado máis do noso tempo usando C, e no mundo da programación web. 17 00:00:59,450 --> 00:01:02,350 Ben, vai ver unha chea de ideas prestado do traballo de liña de comandos, 18 00:01:02,350 --> 00:01:04,560 pero tamén unha chea de novo e ideas interesantes 19 00:01:04,560 --> 00:01:07,929 que tamén van ser pertinente para aplicacións móbiles e para a tecnoloxía, 20 00:01:07,929 --> 00:01:10,470 de xeito máis xeral, co que caras son todos coñecemos hoxe en día 21 00:01:10,470 --> 00:01:12,090 en portátiles e teléfonos e afíns. 22 00:01:12,090 --> 00:01:15,220 >> Así que non aplicar unha páxina web, ou un sitio 23 00:01:15,220 --> 00:01:17,620 en si, pero un servidor web real. 24 00:01:17,620 --> 00:01:21,590 Vai escribir o resto de un servidor web escrito en C, cuxo propósito na vida 25 00:01:21,590 --> 00:01:25,410 é recibir solicitudes HTTP, estas sobres virtuais Estamos sempre falando 26 00:01:25,410 --> 00:01:29,780 aproximadamente, e realmente quere responder con algúns content-- estáticos como un punto HTML 27 00:01:29,780 --> 00:01:32,310 ficheiro, ou un punto ou JPEG calquera outro número de arquivos, 28 00:01:32,310 --> 00:01:37,070 ou mesmo un arquivo PHP en que o seu web servidor vai interpretar que o PHP 29 00:01:37,070 --> 00:01:38,332 código e cuspir os resultados. 30 00:01:38,332 --> 00:01:40,540 Agora, nós fornecen-lle con un pouco de cadro 31 00:01:40,540 --> 00:01:43,100 para ele-- de feito o código de distribución para problema 32 00:01:43,100 --> 00:01:47,496 definir seis é máis de 1.000 liñas, unha morea de comentarios que é, para ser fair-- 33 00:01:47,496 --> 00:01:49,370 pero esta é realmente significou ser unha oportunidade 34 00:01:49,370 --> 00:01:52,570 para comezar as súas mans sucias de mergullo nun proxecto moi grande 35 00:01:52,570 --> 00:01:55,570 que temos moi especialmente esculpidas pezas de para ti, 36 00:01:55,570 --> 00:01:59,046 de xeito que realmente cando saia e CS50 entrar no mundo real da programación 37 00:01:59,046 --> 00:02:00,920 e queren involucrarse calquera número de proxectos, 38 00:02:00,920 --> 00:02:03,253 terá moito maior confort descargar fonte 39 00:02:03,253 --> 00:02:05,020 código, algúns de código aberto proxectar na web, 40 00:02:05,020 --> 00:02:08,174 e ao mergullo e facer cambios que ve o axuste. 41 00:02:08,174 --> 00:02:11,340 Problema establecer sete será sobre facer o seu propio programa baseado na web 42 00:02:11,340 --> 00:02:14,140 que leva entrada dinámica e produce saída dinámica na forma 43 00:02:14,140 --> 00:02:16,920 dun sitio etrade.com-like. 44 00:02:16,920 --> 00:02:20,800 E problema axustou oito ha centrar aínda outra lingua coñecida como JavaScript. 45 00:02:20,800 --> 00:02:24,170 >> Mentres tanto, a finais proxecto está no horizonte. 46 00:02:24,170 --> 00:02:26,800 O chamado pre-proposta débese unha semana a partir de hoxe. 47 00:02:26,800 --> 00:02:29,930 Vista proposal-- segundo a especificación, que está website-- do CS50 48 00:02:29,930 --> 00:02:33,260 é unha oportunidade moi casual para que envíe un correo-e así sucinto 49 00:02:33,260 --> 00:02:35,170 para o seu compañeiro de ensino só para informar-lle 50 00:02:35,170 --> 00:02:38,250 ou a de que está a pensar, a usar el ou ela como unha caixa de resonancia. 51 00:02:38,250 --> 00:02:40,980 E ten unha sanidade check-- se está a pensar 52 00:02:40,980 --> 00:02:43,210 sobre a mordedura de fóra tamén moito ou quizais moi pouco, 53 00:02:43,210 --> 00:02:46,480 ou que non ten idea do que sexa e queren involucrarse nunha conversa. 54 00:02:46,480 --> 00:02:48,480 >> A partir de aí é unha proposta e informe de estado, 55 00:02:48,480 --> 00:02:51,860 o chamado hackathon aquí en CS50 Cambridge para estudantes Harvard e Yale 56 00:02:51,860 --> 00:02:52,362 alike. 57 00:02:52,362 --> 00:02:54,320 O proxecto final implantación é entón debido. 58 00:02:54,320 --> 00:02:59,290 E, a continuación, unha feira CS50 aquí, en Cambridge, así como outro en New Haven. 59 00:02:59,290 --> 00:03:02,500 Polo tanto, a proposta, bótalle un ollo o sitio para estas indicacións. 60 00:03:02,500 --> 00:03:06,530 >> Pero o máis emocionante, tamén, é unha oportunidade de ensuciar as mans, 61 00:03:06,530 --> 00:03:09,350 e as súas mentes abertas para un todo chea de temas e ferramentas 62 00:03:09,350 --> 00:03:12,920 e técnicas que son acessórias ao núcleo Syllabus do curso, 63 00:03:12,920 --> 00:03:14,810 pero, con todo relacionados. 64 00:03:14,810 --> 00:03:18,400 E tamén pedras de chan marabilloso para facendo proxectos finais moi legal que 65 00:03:18,400 --> 00:03:22,020 van moito máis alá do material de nós Cubrimos formalmente en conxuntos de problemas ou na charla. 66 00:03:22,020 --> 00:03:24,446 Entón, vai á páxina web do CS50 para a listaxe de seminarios. 67 00:03:24,446 --> 00:03:26,070 Se non rexistrar, con todo, iso é bo. 68 00:03:26,070 --> 00:03:29,860 Dalle rexistrar aínda e nós o seguimento con unha ligazón de streaming en directo, 69 00:03:29,860 --> 00:03:31,844 o día ea hora está na páxina web. 70 00:03:31,844 --> 00:03:33,760 E todo se ve gravado e posto en liña 71 00:03:33,760 --> 00:03:35,800 se non pode facer a días e horarios específicos. 72 00:03:35,800 --> 00:03:39,380 >> En canto ao que está á fronte thereafter-- ben, por suposto, hai o hackathon CS50. 73 00:03:39,380 --> 00:03:43,560 Esta foto, recall, desde cero tomadas semana en torno 04:00 unha noite no ano pasado. 74 00:03:43,560 --> 00:03:46,900 A feira CS50, que unha vez máis terá lugar en ambas as cidades. 75 00:03:46,900 --> 00:03:49,760 E entón, só para plantar a semente, aínda que aínda 76 00:03:49,760 --> 00:03:54,080 ter un mes máis á esquerda do semestre, se desexa unirse propio ensino do CS50 77 00:03:54,080 --> 00:03:56,770 equipo, e quere comezar pensando en facer unha AC, 78 00:03:56,770 --> 00:03:59,550 ou ensino compañeiro, sei que nós imos comezar a falar máis sobre iso 79 00:03:59,550 --> 00:04:00,630 a finais deste semestre. 80 00:04:00,630 --> 00:04:03,470 Pero é retratado aquí a maior parte do equipo deste ano. 81 00:04:03,470 --> 00:04:06,950 >> E así, PHP-- e eu estaba tan triste a semana pasada que [? Allyse?] Xentilmente 82 00:04:06,950 --> 00:04:09,370 foi para o esforzo de chegar nós estes adereços marabillosas 83 00:04:09,370 --> 00:04:11,720 que eu non acaban empregando, por iso, realmente só parecía un pouco estúpido 84 00:04:11,720 --> 00:04:15,160 que tiñamos unha pa sentado aquí último día do mércores, e un pouco de culler. 85 00:04:15,160 --> 00:04:17,709 Pero esta foi a miña metafórica forma de intentar pintar 86 00:04:17,709 --> 00:04:21,600 a imaxe de por que estamos en transición de C para unha linguaxe como PHP. 87 00:04:21,600 --> 00:04:25,480 E o mesmo podería dicirse de todos número de languages-- Java, Python, Ruby 88 00:04:25,480 --> 00:04:31,270 ou acios de outros-, pero mentres en C, por exemplo, escribir un programa en C 89 00:04:31,270 --> 00:04:34,050 pode normalmente ser como tomar unha culler como este 90 00:04:34,050 --> 00:04:36,770 e cavando un burato no chan, na area ou a sucidade. 91 00:04:36,770 --> 00:04:39,770 PHP permite que tome moito mordidas maiores fóra do problema, 92 00:04:39,770 --> 00:04:42,842 escribir moito menos código usando unha ferramenta moito menor, 93 00:04:42,842 --> 00:04:45,050 porque hai moito máis funcionalidade remendada in. 94 00:04:45,050 --> 00:04:47,633 >> Agora, se realmente dramático, teriamos algo pa 95 00:04:47,633 --> 00:04:48,760 aquí, pero que así sexa. 96 00:04:48,760 --> 00:04:51,370 Mentres tanto, a outra metáfora que xurdiu con 97 00:04:51,370 --> 00:04:53,770 é, por suposto, podería usar algo como unha chave 98 00:04:53,770 --> 00:04:56,610 a martelar en algo así como un cravo. 99 00:04:56,610 --> 00:04:58,980 Pero está claro que si o dereito ferramenta para uso vai 100 00:04:58,980 --> 00:05:01,360 sendo non tanto a linguaxe chamada C-- 101 00:05:01,360 --> 00:05:03,590 e agora eu só irritado [? Sanders ,?] Probablemente 102 00:05:03,590 --> 00:05:07,890 imos solucionar isto tan later-- a ferramenta correcta para usar moitas veces 103 00:05:07,890 --> 00:05:09,640 non vai ser esta ferramenta de nivel máis baixo. 104 00:05:09,640 --> 00:05:13,720 E, de feito, C non é unha linguaxe que a maioría de vós nunca van usar, 105 00:05:13,720 --> 00:05:15,590 ou debería necesariamente usar de novo. 106 00:05:15,590 --> 00:05:18,350 >> E, de feito, un pouco secret-- a única vez 107 00:05:18,350 --> 00:05:23,160 Eu uso C min é moi fermoso entre Setembro e decembro de cada caída 108 00:05:23,160 --> 00:05:23,870 semestre. 109 00:05:23,870 --> 00:05:25,790 E iso é porque usalo como unha oportunidade 110 00:05:25,790 --> 00:05:27,852 para ensinar os fundamentos de programación, 111 00:05:27,852 --> 00:05:29,810 e con el ordenador fundamentos da ciencia, datos 112 00:05:29,810 --> 00:05:32,435 estruturas, algoritmos e do como-- pero moi rapidamente vai vostede 113 00:05:32,435 --> 00:05:35,010 ver agora que a sintaxe e as ideas subxacentes C 114 00:05:35,010 --> 00:05:37,530 son tan marabillosas transferibles para máis moderno 115 00:05:37,530 --> 00:05:41,130 linguaxes de alto nivel, como PHP e Python e Perl e Java 116 00:05:41,130 --> 00:05:46,750 e Objective-C--, en realidade, non tanto Objective-C-- pero Swift, estes última 117 00:05:46,750 --> 00:05:50,010 linguas que moitos de vostedes a continuación, xogar contigo proxecto final. 118 00:05:50,010 --> 00:05:55,070 >> Así, sen máis delongas, imos realmente usar o PHP para resolver algúns problemas. 119 00:05:55,070 --> 00:06:00,230 Lembre que en principio, último semana, nós só utilizado CS50 IDE, 120 00:06:00,230 --> 00:06:02,990 escribimos un programa pequeno Dinky que dixo: "Ola, mundo". 121 00:06:02,990 --> 00:06:05,680 E entón eu salvo en un arquivo chamado hello.php. 122 00:06:05,680 --> 00:06:07,280 E entón eu execute este comando. 123 00:06:07,280 --> 00:06:08,080 >> E por que? 124 00:06:08,080 --> 00:06:09,900 En inglés, o que está pasando aquí? 125 00:06:09,900 --> 00:06:12,760 O que eu estaba facendo cando Corre ese mando? 126 00:06:12,760 --> 00:06:13,405 >> Si? 127 00:06:13,405 --> 00:06:16,572 >> Audiencia: Hai algunha función PHP que le o que está em-- entende iso. 128 00:06:16,572 --> 00:06:19,696 DAVID Malan: Bo, hai algunha función PHP-- e déixeme ser máis específico, 129 00:06:19,696 --> 00:06:21,810 hai un programa chamado PHP a.k.a. 130 00:06:21,810 --> 00:06:25,872 Un intérprete, que entende o contido de ola.php, 131 00:06:25,872 --> 00:06:27,830 e interpreta-lo de arriba baixo, de esquerda a dereita, 132 00:06:27,830 --> 00:06:29,590 e fai o que os mandos dicir. 133 00:06:29,590 --> 00:06:33,320 Os comandos ola.php, por suposto, é só fonte code-- funcións 134 00:06:33,320 --> 00:06:35,750 e variables e loops e semellantes, que nós mesmos 135 00:06:35,750 --> 00:06:37,460 comezaron a escribir en PHP. 136 00:06:37,460 --> 00:06:40,240 >> Pero a diferenza de C, que é unha linguaxe compilada, 137 00:06:40,240 --> 00:06:42,810 PHP acaba de escribir-lo e executalo. 138 00:06:42,810 --> 00:06:46,420 Saltar este paso intermedio de converténdoa en ceros e uns, 139 00:06:46,420 --> 00:06:47,790 e, a continuación, executa-lo. 140 00:06:47,790 --> 00:06:50,510 E entón o que é un lado positivo diso? 141 00:06:50,510 --> 00:06:52,690 Por que estamos saltar o paso? 142 00:06:52,690 --> 00:06:55,238 Por que linguaxes máis modernas tenden a ignorar este paso? 143 00:06:55,238 --> 00:06:58,880 144 00:06:58,880 --> 00:07:01,220 Cal foi o beneficio? 145 00:07:01,220 --> 00:07:02,080 >> Ou só intuitivamente? 146 00:07:02,080 --> 00:07:04,200 Aínda que non teño PHP escrito moito antes, 147 00:07:04,200 --> 00:07:07,210 o que é beneficioso sobre non compilar o código que pensas? 148 00:07:07,210 --> 00:07:08,520 Non? 149 00:07:08,520 --> 00:07:09,610 Non cometer? 150 00:07:09,610 --> 00:07:11,350 Coçando a cabeza? 151 00:07:11,350 --> 00:07:12,614 Si. 152 00:07:12,614 --> 00:07:13,600 >> Audiencia: máis dinámico. 153 00:07:13,600 --> 00:07:14,683 >> DAVID Malan: máis dinámico? 154 00:07:14,683 --> 00:07:16,032 Que queres dicir? 155 00:07:16,032 --> 00:07:17,000 >> Audiencia: [inaudível] 156 00:07:17,000 --> 00:07:20,349 157 00:07:20,349 --> 00:07:22,390 DAVID Malan: OK, bo, entón dependendo da entrada, 158 00:07:22,390 --> 00:07:23,470 non ten que recompila-lo cada vez. 159 00:07:23,470 --> 00:07:24,990 E iso realmente é tan sinxelo como o que isso-- 160 00:07:24,990 --> 00:07:26,990 é o punto de continuar para compilar o código? 161 00:07:26,990 --> 00:07:29,480 Este é un paso que é making-- este está esixindo, 162 00:07:29,480 --> 00:07:31,900 Para os últimos semanas, dúas veces como moitas etapas 163 00:07:31,900 --> 00:07:33,820 como só a execución do seu programa. 164 00:07:33,820 --> 00:07:36,940 Foi útil en ver que vexa algunhas mensaxes de erro e así por diante, 165 00:07:36,940 --> 00:07:38,720 senón que é un paso irritante. 166 00:07:38,720 --> 00:07:41,810 >> E para que os programadores entenderon co paso do tempo, polo que non nos 167 00:07:41,810 --> 00:07:45,327 comezar a escribir linguas que non o fan precisa que paso bastante mecánica, 168 00:07:45,327 --> 00:07:47,160 de xeito que pode só escribir seu código e executalo. 169 00:07:47,160 --> 00:07:48,920 Pero o que era o prezo que vimos que pagamos 170 00:07:48,920 --> 00:07:50,910 a semana pasada, cun exemplo particular? 171 00:07:50,910 --> 00:07:51,650 Si? 172 00:07:51,650 --> 00:07:52,370 >> Speed. 173 00:07:52,370 --> 00:07:54,690 Así [? o que é?] intérpretes un pouco máis lento, 174 00:07:54,690 --> 00:07:57,330 en que ceros e uns están agradable e rápido para un ordenador 175 00:07:57,330 --> 00:08:00,070 comprender, porque o Intel CPU, é dicir o que sexa, 176 00:08:00,070 --> 00:08:03,070 só entende o que está a suceder con eses patróns de bits. 177 00:08:03,070 --> 00:08:05,370 Tendo en conta que un intérprete é un programa que realmente 178 00:08:05,370 --> 00:08:07,980 ten que ler a fonte ASCII código que escribiu, 179 00:08:07,980 --> 00:08:12,700 e convertelo-lo, por así dicir, é descubrir como convértese en definitiva, 180 00:08:12,700 --> 00:08:13,525 a ceros e uns. 181 00:08:13,525 --> 00:08:15,650 Por iso, só ten un pouco pouco dun axuste de rendemento. 182 00:08:15,650 --> 00:08:16,858 Polo tanto, é un pouco de un trade-off. 183 00:08:16,858 --> 00:08:21,570 Agora, se facemos iso aquí, déixeme dalle facer un exemplo a seguir. 184 00:08:21,570 --> 00:08:26,610 Se eu entrar aquí, novo ficheiro, eu vou para salvar este novo é hello.php. 185 00:08:26,610 --> 00:08:31,450 E agora eu estou indo a ir adiante e dicir: "print Ola mundo" - 186 00:08:31,450 --> 00:08:35,130 e lembro que eu poida usar impresión, non ten que usar print-F. E agora aquí en baixo, 187 00:08:35,130 --> 00:08:42,039 se eu fai PHP de hello.php, eu huh-- non parecen interpretar iso. 188 00:08:42,039 --> 00:08:43,412 O que eu fixen de malo? 189 00:08:43,412 --> 00:08:44,710 >> Audiencia: As pulseiras anguladas. 190 00:08:44,710 --> 00:08:47,015 >> DAVID Malan: Si, ten que que top ángulo do soporte superior. 191 00:08:47,015 --> 00:08:49,390 Entón é medio chat, pero se acostumar con iso rapidamente. 192 00:08:49,390 --> 00:08:53,500 Se eu teño que escribir código PHP, I xeralmente que dicir ao programa, 193 00:08:53,500 --> 00:08:56,950 ou dicir o intérprete, hey PHP, vén aquí algún código PHP. 194 00:08:56,950 --> 00:09:00,440 E, a continuación, para unha boa medida, eu o faría pechar esta non con este, senón 195 00:09:00,440 --> 00:09:03,740 con só cuestión ángulo marca soporte, polo que agora aquí en baixo, 196 00:09:03,740 --> 00:09:06,840 se eu executar de novo, agora Eu conseguir o resultado desexado. 197 00:09:06,840 --> 00:09:09,820 >> Agora imos facer unha pequena optimización, só para que xa viu iso antes. 198 00:09:09,820 --> 00:09:14,040 Este é tipo de chat que eu ten que realizar PHP espazo hello.php, 199 00:09:14,040 --> 00:09:16,060 porque no pasado eu podería simplemente escribir barra dot 200 00:09:16,060 --> 00:09:17,560 nome do programa, que é tipo de Niza. 201 00:09:17,560 --> 00:09:19,420 É unha especie de unha mellor experiencia do usuario. 202 00:09:19,420 --> 00:09:24,160 >> Entón non é que pode facelo en PHP co I following-- 203 00:09:24,160 --> 00:09:28,780 Pode usar este críptica encanto na parte superior aquí, 204 00:09:28,780 --> 00:09:31,740 que é xeralmente chamado de shebang, polo que este é un símbolo afiada, 205 00:09:31,740 --> 00:09:34,270 por así dicir, este é un estrondo ou un signo de admiración. 206 00:09:34,270 --> 00:09:38,490 E iso agora é o camiño para un programa nun sistema Linux típico que 207 00:09:38,490 --> 00:09:41,500 chámase medio ambiente, ou recibidos. 208 00:09:41,500 --> 00:09:43,920 E este linha-- longa historia unha liña de short-- só 209 00:09:43,920 --> 00:09:48,710 di, hey ordenador, atope o PHP intérprete para me no medio ambiente, 210 00:09:48,710 --> 00:09:50,610 atopalo na súa memoria, por así dicir. 211 00:09:50,610 --> 00:09:54,130 >> E o que é bo momento, é que se eu baixar aquí, 212 00:09:54,130 --> 00:09:57,750 Podo facer barra dot Ola php punto, ou-- hmm. 213 00:09:57,750 --> 00:09:59,000 Permiso denegado. 214 00:09:59,000 --> 00:10:02,350 Ben, vai ver aínda máis este con problema de definir sete, se 215 00:10:02,350 --> 00:10:04,060 xa non o fixo, con permisos. 216 00:10:04,060 --> 00:10:06,510 Acontece que eu teño para realizar esta orde 217 00:10:06,510 --> 00:10:10,779 chamado [? chamod?] para o cambio mode-- un máis x ola.php. 218 00:10:10,779 --> 00:10:13,820 Necesito [inaudível] un agasallo adicional paso que está dicindo a meu ordenador, 219 00:10:13,820 --> 00:10:16,400 facer executable hello.php. 220 00:10:16,400 --> 00:10:21,310 E agora mira o que happens-- dot cortar hello.php, el só é executado. 221 00:10:21,310 --> 00:10:23,310 Non precisa especificar o intérprete máis. 222 00:10:23,310 --> 00:10:26,680 E podo facela aínda máis fermosa, aínda, se eu cambiar o nome desta cousa. 223 00:10:26,680 --> 00:10:30,570 Se eu mover hello.php só Hello-- así notar na esquina superior esquerda, 224 00:10:30,570 --> 00:10:32,860 o nome do programa é en realidade só agora Ola. 225 00:10:32,860 --> 00:10:37,300 Agora podo facer parecer que un programa C, aínda que está escrito en PHP-- 226 00:10:37,300 --> 00:10:39,210 ou francamente calquera número doutras linguas. 227 00:10:39,210 --> 00:10:41,480 >> Así mellora marxinal, ningunha diferenza funcional. 228 00:10:41,480 --> 00:10:44,460 Pero é só un pouco de curiosidade agora, para que poida escribir programas 229 00:10:44,460 --> 00:10:48,989 en calquera idioma, eo usuario non fai Ten que saber ou importarlle o que aqueles son. 230 00:10:48,989 --> 00:10:51,030 Ben, imos ollar para un máis exemplo convincente agora 231 00:10:51,030 --> 00:10:52,850 que chicoteado ata con antelación. 232 00:10:52,850 --> 00:10:54,955 E iso é chamado quote.php. 233 00:10:54,955 --> 00:10:56,740 E está dispoñible en liña. 234 00:10:56,740 --> 00:11:00,299 E teña en conta que é moi short-- pero é un programa da liña de comandos que se 235 00:11:00,299 --> 00:11:02,840 vai mirar para arriba os prezos das accións para min, o que está realmente a suceder 236 00:11:02,840 --> 00:11:04,230 ser pertinente para o problema definido sete. 237 00:11:04,230 --> 00:11:05,396 >> Entón imos ver o que estou facendo. 238 00:11:05,396 --> 00:11:08,640 Na parte superior Teño o aberto soporte de punto de interrogación PHP. 239 00:11:08,640 --> 00:11:13,372 Entón eu teño esa liña, polo que eu son esixindo un ficheiro chamado functions.php-- 240 00:11:13,372 --> 00:11:15,080 imos ver máis sobre iso nun bit, 241 00:11:15,080 --> 00:11:17,340 pero isto é como C do versión do sharp inclúen, 242 00:11:17,340 --> 00:11:19,090 onde quere ir incluír outro ficheiro. 243 00:11:19,090 --> 00:11:23,720 PHP chámalle esixen, aínda tamén ten unha función de incluír. 244 00:11:23,720 --> 00:11:26,861 E parece que é function.php só algo que escribín antes da clase. 245 00:11:26,861 --> 00:11:29,860 Eu colocar-lo no mesmo directorio, por mor Quería fatorar algún código 246 00:11:29,860 --> 00:11:31,800 que pode querer usar noutros lugares. 247 00:11:31,800 --> 00:11:34,560 >> Mentres tanto, pode seguramente inferir o que está pasando aquí. 248 00:11:34,560 --> 00:11:39,200 Este é un pouco diferente do C-- pero o que quero dicir con asegurar o uso axeitado? 249 00:11:39,200 --> 00:11:41,180 Traducir esta máis tecnicamente. 250 00:11:41,180 --> 00:11:45,950 En que circunstancias son saír do programa, ou saír? 251 00:11:45,950 --> 00:11:47,074 Si? 252 00:11:47,074 --> 00:11:47,990 >> Audiencia: Cando non ten dous argumentos de liña de comandos. 253 00:11:47,990 --> 00:11:49,480 >> DAVID Malan: Cando eu non teño para comandar os argumentos da liña. 254 00:11:49,480 --> 00:11:52,396 E recorda que un dos argumentos é o propio nome do programa. 255 00:11:52,396 --> 00:11:55,340 E a segunda será outra palabra que eu escriba despois do aviso. 256 00:11:55,340 --> 00:11:57,460 Entón, como C, este é a miña forma de comprobar, 257 00:11:57,460 --> 00:12:00,022 se o usuario cooperar e executar o programa como eu pretendía? 258 00:12:00,022 --> 00:12:01,730 Agora, hai algo un pouco diferente 259 00:12:01,730 --> 00:12:04,020 con C-- ante todo, ter este sinal de dólar, 260 00:12:04,020 --> 00:12:07,710 eo que fai un dólar asinar denotar en PHP? 261 00:12:07,710 --> 00:12:08,440 Só unha variable. 262 00:12:08,440 --> 00:12:11,731 Isto é tudo-- só unha variable seguido por o que sexa chamalo de feito. 263 00:12:11,731 --> 00:12:14,000 Teña en conta que hai algo falta meu programa PHP 264 00:12:14,000 --> 00:12:18,210 exactamente como estaba falta última semana, contra C, o que é o que? 265 00:12:18,210 --> 00:12:21,620 >> A tipo, pero tamén algo máis. 266 00:12:21,620 --> 00:12:26,409 Non hai algo function-- función principal. 267 00:12:26,409 --> 00:12:27,450 Non hai ningunha función principal. 268 00:12:27,450 --> 00:12:29,680 Acaba de comezar a escribir seu código sen 269 00:12:29,680 --> 00:12:32,790 preocuparse un moi arbitraria convenio de nomear algúns estándar 270 00:12:32,790 --> 00:12:33,880 función principal. 271 00:12:33,880 --> 00:12:36,720 Entón arg C é realmente só unha variable global 272 00:12:36,720 --> 00:12:39,049 que o intérprete fai dispoñible para min. 273 00:12:39,049 --> 00:12:40,090 Agora, iso é interesante. 274 00:12:40,090 --> 00:12:41,140 Entón, ollar para arriba stuff. 275 00:12:41,140 --> 00:12:43,370 Stock sinal de dólar é a á esquerda, que é a miña variable. 276 00:12:43,370 --> 00:12:45,120 No lado dereito, hai aparentemente 277 00:12:45,120 --> 00:12:50,270 unha función en PHP chamada investigación que Estou pasando miña última liña de comandos 278 00:12:50,270 --> 00:12:51,902 argumento a-- calquera que sexa a palabra é. 279 00:12:51,902 --> 00:12:53,610 E imos ver como este funciona en un momento. 280 00:12:53,610 --> 00:12:55,380 >> E entón, finalmente estou relatando o prezo. 281 00:12:55,380 --> 00:12:58,650 Estou imprimindo un partes de tal e tal. 282 00:12:58,650 --> 00:13:02,082 E lembre, esta é a en forma PHP-- un xeito en PHP-- 283 00:13:02,082 --> 00:13:04,290 onde non ten que facer o cifrão S anymore. 284 00:13:04,290 --> 00:13:06,782 Pode só usar claves e tapar nalgunha variable. 285 00:13:06,782 --> 00:13:09,240 Non ten que se preocupar de usando printf do mesmo xeito. 286 00:13:09,240 --> 00:13:13,530 >> E como un aparte, cando se pon unha variable dentro de comiñas dobres como este, 287 00:13:13,530 --> 00:13:17,370 vostede está a usar unha técnica de fantasía chamado de interpolación variable. 288 00:13:17,370 --> 00:13:20,380 Significa só que conectar a variable aquí. 289 00:13:20,380 --> 00:13:23,760 E como un aparte, algúns de vostedes que veñen programación de outros fondos, 290 00:13:23,760 --> 00:13:26,960 non pode usar comiñas simples cordas ao redor de facelo. 291 00:13:26,960 --> 00:13:30,290 Pode usar comiñas dobres para interpolación variable para traballar. 292 00:13:30,290 --> 00:13:32,740 Se non, literalmente ver aquelas claves. 293 00:13:32,740 --> 00:13:34,500 >> Entón, finalmente, imos adiante e executar este. 294 00:13:34,500 --> 00:13:36,690 Deixe-me facer meu terminal un pouco maior. 295 00:13:36,690 --> 00:13:41,940 Deixe-me ir adiante e executar dentro do meu directorio cotización. 296 00:13:41,940 --> 00:13:46,950 [? CDsource?] [? AM?] [? Cita?] Cita PHP dot PHP 297 00:13:46,950 --> 00:13:50,290 e eu vou buscar algo como GOOG, que é o seu símbolo Ticker, 298 00:13:50,290 --> 00:13:55,510 e unha acción do seu novo nome, Alfabeto Inc, custa US $ 717, a partir de hoxe. 299 00:13:55,510 --> 00:13:58,680 Todo ben, se queremos realizar este novo, calquera 300 00:13:58,680 --> 00:14:02,600 ter outro ticker stock queren mirar para arriba? 301 00:14:02,600 --> 00:14:06,770 >> Microsoft creo que é este, MSFT-- $ 53. 302 00:14:06,770 --> 00:14:09,720 Eu creo que o Yahoo é posible que iso. 303 00:14:09,720 --> 00:14:12,130 E o Facebook é que. 304 00:14:12,130 --> 00:14:13,740 >> Entón, o que é este programa está facendo? 305 00:14:13,740 --> 00:14:16,306 A maxia parece estar incorporado en que a función de procura. 306 00:14:16,306 --> 00:14:17,430 Entón, imos dar un ollo rápida. 307 00:14:17,430 --> 00:14:21,815 >> Acontece que non ven con PHP, está functions.php. 308 00:14:21,815 --> 00:14:23,690 E non imos pasar por esta en gran detalle, 309 00:14:23,690 --> 00:14:28,040 de notar a palabra clave aquí é que na liña de seis functions.php-- 310 00:14:28,040 --> 00:14:29,440 Eu literalmente dicir función. 311 00:14:29,440 --> 00:14:31,050 Eu especificar o nome da miña función. 312 00:14:31,050 --> 00:14:34,330 Eu, entón, especificar calquera argumentos ou parámetros, 313 00:14:34,330 --> 00:14:36,480 Quero que a función de take-- ningún tipo. 314 00:14:36,480 --> 00:14:37,580 E entón eu implementar lo. 315 00:14:37,580 --> 00:14:39,240 >> E eu vou acenar a man na implantación, 316 00:14:39,240 --> 00:14:42,115 xa que é dereito bastante avanzado agora, pero imos velo de novo, de feito, 317 00:14:42,115 --> 00:14:44,700 nunha semana no conxunto de problemas de sete. 318 00:14:44,700 --> 00:14:47,490 Pero podo limpar iso tamén. 319 00:14:47,490 --> 00:14:49,590 Tamén incluído no código de hoxe unha versión 320 00:14:49,590 --> 00:14:52,340 de citas, que non ten ficheiro dot PHP. 321 00:14:52,340 --> 00:14:57,270 Porque o que é de supoñer nas parte superior do programa chamado só citar? 322 00:14:57,270 --> 00:15:00,140 Que o chamado shebang-- o encantamento críptica 323 00:15:00,140 --> 00:15:04,590 que di atopar PHP e, a continuación, executa-lo no meu código aquí. 324 00:15:04,590 --> 00:15:07,360 >> Todo ben, entón que trae nós onde paramos 325 00:15:07,360 --> 00:15:09,560 última tempo-- aínda que con algúns exemplos máis avanzados. 326 00:15:09,560 --> 00:15:13,980 Calquera preguntas ata agora sobre PHP é o que estamos facendo? 327 00:15:13,980 --> 00:15:15,570 Não-- todo ben. 328 00:15:15,570 --> 00:15:16,180 Si? 329 00:15:16,180 --> 00:15:19,610 >> Audiencia: Inside the Arquivos HTML, facer vocę-- 330 00:15:19,610 --> 00:15:22,226 [? non é?] [? basta chamalo?] un [inaudível] ficheiro PHP? 331 00:15:22,226 --> 00:15:23,350 DAVID Malan: Boa pregunta. 332 00:15:23,350 --> 00:15:26,070 Nun contexto web, o que somos literalmente sobre a transición para, 333 00:15:26,070 --> 00:15:28,028 non usar o chamado shebang na parte superior, 334 00:15:28,028 --> 00:15:31,980 porque o server-- web, moitas veces un programa chamado Apache ou Microsoft 335 00:15:31,980 --> 00:15:37,470 IIS, Internet Information Server, é calquera número de software de servidor web, 336 00:15:37,470 --> 00:15:40,636 sabe que cando ve un ficheiro de punto de PHP, que 337 00:15:40,636 --> 00:15:42,010 debe realizar o intérprete nel. 338 00:15:42,010 --> 00:15:43,468 Non mira para que a primeira liña. 339 00:15:43,468 --> 00:15:45,580 Polo tanto, este primeiro truco liña é só cando está 340 00:15:45,580 --> 00:15:48,330 escribindo liña de comandos programs-- que non imos facer de super miúdo 341 00:15:48,330 --> 00:15:52,510 pero é a nosa forma de cubrir nosos exemplos de C para agora o noso PHP. 342 00:15:52,510 --> 00:16:00,680 >> Entón imos realmente cubrir este mundo do mundo da liña de comandos para a web 343 00:16:00,680 --> 00:16:02,230 facendo o seguinte. 344 00:16:02,230 --> 00:16:05,090 Deixe-me ir adiante e deseñar aquí só por un momento. 345 00:16:05,090 --> 00:16:09,940 Entón, se temos un servidor web, ou mellor, se temos meu portátil aquí, 346 00:16:09,940 --> 00:16:11,280 que eu vou chamar así. 347 00:16:11,280 --> 00:16:14,250 E aquí temos a Internet de algunha maneira. 348 00:16:14,250 --> 00:16:18,210 E entón para acá, temos un servidor nun building-- 349 00:16:18,210 --> 00:16:20,760 esta é a forma na que a Internet works-- e aquí 350 00:16:20,760 --> 00:16:23,120 é un servidor con algunhas luces quizais. 351 00:16:23,120 --> 00:16:27,530 O que está realmente a suceder entre estas dúas conexións? 352 00:16:27,530 --> 00:16:29,240 >> Polo tanto, neste edificio é un servidor web. 353 00:16:29,240 --> 00:16:31,420 Isto é só un ordenador que está executando algún operativo 354 00:16:31,420 --> 00:16:34,561 system-- quizais o software gratuíto chamado Apache, que CS50 IDE está en execución. 355 00:16:34,561 --> 00:16:36,310 Entón pode realmente pensas deste edificio 356 00:16:36,310 --> 00:16:38,579 como a construción en que CSt0 IDE é almacenado. 357 00:16:38,579 --> 00:16:40,870 É alí onde todos vostedes teñen contas, onde todos vostedes 358 00:16:40,870 --> 00:16:43,130 ter o seu propio servidor web execución, todos vostedes 359 00:16:43,130 --> 00:16:45,730 teñen as súas propias URLs únicas, como nós comezamos a discutir, 360 00:16:45,730 --> 00:16:47,280 e podes ver máis en P. definir seis. 361 00:16:47,280 --> 00:16:49,450 >> Aquí está o meu portátil nalgún lugar outro lugar en internet. 362 00:16:49,450 --> 00:16:54,550 E entón cando visitar unha URL que pertence para min, que o tráfico de Internet vai 363 00:16:54,550 --> 00:16:58,360 ao servidor, o servidor de recibir un HTTP request-- 364 00:16:58,360 --> 00:17:02,900 como un obter index.html e é responder a esta páxina web. 365 00:17:02,900 --> 00:17:04,280 Entón ese é o paradigma xeral. 366 00:17:04,280 --> 00:17:07,089 Considerando todo para arriba ata agora, hoxe, todo 367 00:17:07,089 --> 00:17:09,660 foi pasando só no límites deste edificio. 368 00:17:09,660 --> 00:17:12,910 Eu estaba usando o meu portátil, pero Eu estaba conectado a CS50 IDE, 369 00:17:12,910 --> 00:17:17,369 polo tanto, todos estes programas que eu estaba correndo estaba dentro dese servidor, en si. 370 00:17:17,369 --> 00:17:22,660 >> Pero agora, imos comezar a reutilización de PHP para escribir algúns programas reais que 371 00:17:22,660 --> 00:17:24,230 son servidos por un servidor web. 372 00:17:24,230 --> 00:17:30,320 E para facelo, eu estou indo a ir en unha morea de exemplos 373 00:17:30,320 --> 00:17:33,710 que introducir esta idea aquí. 374 00:17:33,710 --> 00:17:38,500 Polo tanto, esta é unha especie de unha forma elegante de describindo un paradigma de programación. 375 00:17:38,500 --> 00:17:41,540 >> E, de feito, como saír CS50 ou traballar en proxectos finais, 376 00:17:41,540 --> 00:17:43,520 ou tomar uns seguen na clase, vai comezar 377 00:17:43,520 --> 00:17:45,740 para ver que o mundo-- especialmente crecendo 378 00:17:45,740 --> 00:17:48,300 con linguaxes como C que son super baixo level-- 379 00:17:48,300 --> 00:17:51,290 entender que non hai mellor formas de software escrito. 380 00:17:51,290 --> 00:17:53,290 Hai certa patróns que pode seguir, 381 00:17:53,290 --> 00:17:57,640 certas formas de organizar os seus ficheiros e formas de nomear as súas funcións, 382 00:17:57,640 --> 00:18:00,300 de xeito que a longa historia curta, o mundo chegou a ser 383 00:18:00,300 --> 00:18:04,340 con unha morea de siglas e nomes para as formas de programación. 384 00:18:04,340 --> 00:18:06,260 Estes son só técnicas que pode usar. 385 00:18:06,260 --> 00:18:09,660 >> E un deles é chamado MVC, para Model View Controller. 386 00:18:09,660 --> 00:18:12,270 E este é só para agora, unha excesivamente complicado 387 00:18:12,270 --> 00:18:18,960 forma de dicir como ten que pór para fóra un sitio baseado en PHP, no noso caso. 388 00:18:18,960 --> 00:18:22,140 Como organizar os seus arquivos, Como organiza a súa lóxica, 389 00:18:22,140 --> 00:18:26,220 dunha forma que fai máis doado escribir sitios máis complicados? 390 00:18:26,220 --> 00:18:28,550 E, de feito, imos rapidamente chegar alí con p-set sete. 391 00:18:28,550 --> 00:18:32,020 >> Así, no mundo de MVC, está indo para ver que o noso código pode xeralmente 392 00:18:32,020 --> 00:18:38,290 ser caracterizado como calquera modelo de código, ou código do controlador, ou código vista. 393 00:18:38,290 --> 00:18:40,200 E eu vou simplificar-lo como follows-- 394 00:18:40,200 --> 00:18:42,074 o controlador é o cerebros do seu programa, 395 00:18:42,074 --> 00:18:44,100 é onde toda a lóxica interesante acontece. 396 00:18:44,100 --> 00:18:46,110 Entón todo o que fomos escribindo, ata agora, en clase, 397 00:18:46,110 --> 00:18:48,210 é tipo como controlador code-- está controlando 398 00:18:48,210 --> 00:18:50,585 seu programa, os seus loops, o seu condicións, as funcións 399 00:18:50,585 --> 00:18:52,100 e variables e todo iso. 400 00:18:52,100 --> 00:18:56,160 >> Puntos de vista, agora, van ser un pouco máis obvia do mundo da web. 401 00:18:56,160 --> 00:18:59,360 A vista é a estética do seu sitio. 402 00:18:59,360 --> 00:19:04,080 É o que o usuario sees-- as imaxes, as táboas HTML, as etiquetas HTML, e todo 403 00:19:04,080 --> 00:19:08,220 de que, todo o estético gordo cousas que non é tan difícil de escribir, 404 00:19:08,220 --> 00:19:11,380 pero é só o que está xerando, é a visión chamada, a estética. 405 00:19:11,380 --> 00:19:13,880 E modelo, en definitiva, vai a base de datos que ser stuff-- 406 00:19:13,880 --> 00:19:16,510 imos comezar a mergullo en todo a máis hoxe. 407 00:19:16,510 --> 00:19:19,740 Entón controlador é a lóxica, vista é o material estético, 408 00:19:19,740 --> 00:19:23,500 e modelo será onde nós gardados nosos datos reais. 409 00:19:23,500 --> 00:19:26,410 >> Entón, imos ollar para iso máis concretamente co seguinte exemplo. 410 00:19:26,410 --> 00:19:34,700 Eu estou indo a ir no meu directorio aquí de fonte de hoxe code-- todos os que 411 00:19:34,700 --> 00:19:35,770 está dispoñible en liña. 412 00:19:35,770 --> 00:19:37,800 E eu estou indo a ir á versión cero. 413 00:19:37,800 --> 00:19:41,500 E aquí é-- imos chamalo a versión cero do sitio web do CS50. 414 00:19:41,500 --> 00:19:43,010 Non hai moito aquí en todo. 415 00:19:43,010 --> 00:19:46,810 É unha páxina web moi sinxelo que é probablemente usando HTML tags-- só 416 00:19:46,810 --> 00:19:48,970 creo que a partir de exemplos do pasado? 417 00:19:48,970 --> 00:19:49,890 >> Que é iso? 418 00:19:49,890 --> 00:19:53,920 H1-- probablemente para ese gran negra título, que encima do logotipo, CS50. 419 00:19:53,920 --> 00:19:55,080 E o que máis está en xogo? 420 00:19:55,080 --> 00:19:55,799 Si? 421 00:19:55,799 --> 00:19:56,840 Audiencia: Lista desordenada. 422 00:19:56,840 --> 00:19:59,990 DAVID Malan: lista-- desordenada de xeito que o UL tag e quizais un par de etiquetas de LI. 423 00:19:59,990 --> 00:20:01,840 E se non se lembra deles, honestamente non importa. 424 00:20:01,840 --> 00:20:04,170 Estes son unha especie de gordo detalles de implementación da HTML 425 00:20:04,170 --> 00:20:06,378 que axiña mirar para arriba e está de volta no seu camiño. 426 00:20:06,378 --> 00:20:10,040 Imos concentrar-se máis sobre a programación ideas que son as pezas máis suculentas. 427 00:20:10,040 --> 00:20:12,890 >> Entón imos dar unha rápida mirar para o HTML-- e de feito 428 00:20:12,890 --> 00:20:16,880 se eu abrir a fonte vista aquí, si, Iso é o que está a suceder aquí. 429 00:20:16,880 --> 00:20:18,440 Hai unha marca UL. 430 00:20:18,440 --> 00:20:20,630 Aninhado dentro do que é a tags LI. 431 00:20:20,630 --> 00:20:24,470 E entón eu peguei prestado a URL do currículo real aquí. 432 00:20:24,470 --> 00:20:27,570 >> E, a continuación, no lectures.php é aparentemente 433 00:20:27,570 --> 00:20:31,640 outra páxina xerados dinamicamente que vai ter, imos see-- ah, 434 00:20:31,640 --> 00:20:33,170 as dúas primeiras semanas de clase. 435 00:20:33,170 --> 00:20:36,600 Así semana cero e unha semana, imos mirar para isto-- se eu ver fonte da páxina, 436 00:20:36,600 --> 00:20:38,120 Tamén super sinxelo. 437 00:20:38,120 --> 00:20:42,430 Estes están a levar a dúas páxinas chamado week0.php, e week1.php. 438 00:20:42,430 --> 00:20:44,040 Por iso, considero agora que está a suceder. 439 00:20:44,040 --> 00:20:50,630 >> Cando premo en week0.php, meu portátil está a facer unha proposta de week0.php. 440 00:20:50,630 --> 00:20:53,700 441 00:20:53,700 --> 00:20:58,110 O servidor web, a.k.a., CS50 IDE, está a recibir o sobre virtual. 442 00:20:58,110 --> 00:21:01,040 É ver unha mensaxe como, obter week0.php. 443 00:21:01,040 --> 00:21:05,060 A continuación, é interpretar o ficheiro, arriba abaixo, de esquerda direito-- o ficheiro 444 00:21:05,060 --> 00:21:07,720 chamado week0.php-- e cuspindo os resultados. 445 00:21:07,720 --> 00:21:10,510 Entón, dentro deste arquivo, week0.php, debe ser 446 00:21:10,510 --> 00:21:15,410 a lóxica do controlador que está a xerar este HTML, e en breve veremos isto. 447 00:21:15,410 --> 00:21:19,340 >> Pero, por agora, deixe-me prema semanas cero, e agora temos mércores e venres, 448 00:21:19,340 --> 00:21:25,260 e agora temos os diapositivas lentamente desde a semana cero. 449 00:21:25,260 --> 00:21:27,400 E pode lembrar isto de camiño de volta cando. 450 00:21:27,400 --> 00:21:29,340 Entón, iso é todo o que esta web está facendo. 451 00:21:29,340 --> 00:21:31,120 >> Entón, imos considerar como está facendo iso. 452 00:21:31,120 --> 00:21:34,290 Vou volver para o código fonte aquí, en CS50 IDE, 453 00:21:34,290 --> 00:21:36,660 e eu vou abrir index.php. 454 00:21:36,660 --> 00:21:38,910 Na parte superior deste arquivo é unha morea de comentarios. 455 00:21:38,910 --> 00:21:43,000 E entón, no medio deste arquivo, Acontece que, hai código PHP que sexa. 456 00:21:43,000 --> 00:21:47,380 Porque se non ten calquera dos soporte aberto Tag signo de interrogación PHP 457 00:21:47,380 --> 00:21:49,180 está libre de só poñer HTML. 458 00:21:49,180 --> 00:21:51,480 >> Unha vez que o PHP intérprete se quere facer, 459 00:21:51,480 --> 00:21:53,938 é cando se le esta file-- arriba abaixo, de esquerda direita-- 460 00:21:53,938 --> 00:21:59,100 el só interpreta código que ve entre eses corchetes punto de interrogación. 461 00:21:59,100 --> 00:22:02,380 E outra cousa que non fai recoñecer como PHP, el só cospe para fóra. 462 00:22:02,380 --> 00:22:05,080 E HTML está entre as cousas ela só vai cuspir. 463 00:22:05,080 --> 00:22:09,090 >> Polo tanto, este ficheiro pode foi chamado index.html, 464 00:22:09,090 --> 00:22:11,690 pero eu estou nomeando todo dot PHP como un trampolín. 465 00:22:11,690 --> 00:22:15,960 Lectures.php-- semellante underwhelming, é só un pouco de HTML. 466 00:22:15,960 --> 00:22:19,840 Week0.php, semellante só algunhas HTML. 467 00:22:19,840 --> 00:22:22,300 >> Pero agora imos poñer no sombreiro enxeñaría proverbial, 468 00:22:22,300 --> 00:22:24,400 e considerar como podemos mellorar iso. 469 00:22:24,400 --> 00:22:28,541 Non é difícil facelo, pero eu medio de converteu copiar e pegar. 470 00:22:28,541 --> 00:22:31,540 E, de feito, se eu fai semana dous, sabe o que eu probablemente vou facer? 471 00:22:31,540 --> 00:22:34,940 Eu estou indo a ir a week1.php, eu son indo para destacar todo. 472 00:22:34,940 --> 00:22:39,110 Eu estou indo a copialo, pegalo nun novo ficheiro chamado week2.php, 473 00:22:39,110 --> 00:22:42,440 axustar algunhas URLs, e estar no meu camiño. 474 00:22:42,440 --> 00:22:45,240 >> Así, con base no que temos visto en C xa, 475 00:22:45,240 --> 00:22:46,860 esta non se sente ben, eu espero. 476 00:22:46,860 --> 00:22:49,610 Copiar, pegar raramente a solución correcta. 477 00:22:49,610 --> 00:22:51,429 Entón o que podemos comezar facer para mellorar isto? 478 00:22:51,429 --> 00:22:53,345 Onde están as oportunidades para mellor deseño? 479 00:22:53,345 --> 00:22:56,890 480 00:22:56,890 --> 00:22:58,760 >> Ata o momento eu chegar oito semanas, que vai 481 00:22:58,760 --> 00:23:00,910 para ser realmente irritante se eu queira cambiar 482 00:23:00,910 --> 00:23:03,930 o tipo de letra de cada un dos miñas páxinas, ou se eu queira 483 00:23:03,930 --> 00:23:06,522 para cambiar a estrutura do esquema. 484 00:23:06,522 --> 00:23:08,396 Entón, onde está a oportunidade para mellor deseño? 485 00:23:08,396 --> 00:23:11,990 486 00:23:11,990 --> 00:23:15,160 Ben, imos considerar o que é compartido entre todos eses arquivos. 487 00:23:15,160 --> 00:23:21,696 >> Aquí está unha semana, aquí está semana cero, aquí está lectures.php, 488 00:23:21,696 --> 00:23:25,790 aquí está index.php-- o que é o mesmo e o que é diferente, a grosso modo, 489 00:23:25,790 --> 00:23:26,760 en cada un destes ficheiros? 490 00:23:26,760 --> 00:23:30,560 491 00:23:30,560 --> 00:23:32,060 Si? 492 00:23:32,060 --> 00:23:34,560 >> Audiencia: [inaudível] 493 00:23:34,560 --> 00:23:41,244 494 00:23:41,244 --> 00:23:42,160 DAVID Malan: OK, bo. 495 00:23:42,160 --> 00:23:46,115 Polo tanto, non hai un patrón, con certeza, en que cada vez que eu escoller charla I, 496 00:23:46,115 --> 00:23:48,250 Eu debería estar xerando un A páxina que mira moi similar. 497 00:23:48,250 --> 00:23:50,375 E así quizais eu poida aproveitar o feito de que en realidade, 498 00:23:50,375 --> 00:23:53,060 deliberadamente numericamente indexado noso lectures-- 499 00:23:53,060 --> 00:23:55,290 se podo poñer aínda máis palabras a súa resposta. 500 00:23:55,290 --> 00:23:59,984 E cal é o único que, realmente, que está cambiando entre a semana um-- 501 00:23:59,984 --> 00:24:02,400 e déixeme rolar para abaixo polo que é aproximadamente na mesma Place-- 502 00:24:02,400 --> 00:24:05,480 entón aquí está semana cero, aproximadamente na parte superior. 503 00:24:05,480 --> 00:24:12,370 Aquí está unha semana, semana cero, unha semana, semana cero. 504 00:24:12,370 --> 00:24:14,370 OK, literalmente, se sabe ningún programa que sexa, 505 00:24:14,370 --> 00:24:16,286 isto é agora só como un xogo de correspondencia estándar. 506 00:24:16,286 --> 00:24:17,200 Entón, o que é diferente? 507 00:24:17,200 --> 00:24:18,765 Si? 508 00:24:18,765 --> 00:24:19,777 >> Audiencia: [inaudível] 509 00:24:19,777 --> 00:24:22,360 DAVID Malan: Bo, entón o título está cambiando, aínda que levemente. 510 00:24:22,360 --> 00:24:24,010 Cero vai, por suposto, para unha. 511 00:24:24,010 --> 00:24:25,570 O mesmo pasa na etiqueta H1. 512 00:24:25,570 --> 00:24:28,790 E nós non moi velo tan facilmente, porque as URLs son un pouco longo. 513 00:24:28,790 --> 00:24:30,670 Pero estas URL están cambiando un pouco. 514 00:24:30,670 --> 00:24:34,490 >> Pero o que non está cambiando é, atrévome dicir, a maior parte dos contidos do página-- 515 00:24:34,490 --> 00:24:38,530 tag HTML é o mesmo, a cabeza é o mesmo, o título é case o mesmo, 516 00:24:38,530 --> 00:24:40,659 o corpo é o mesmo, e case todo o resto 517 00:24:40,659 --> 00:24:42,450 é o mesmo, excepto para eses pequenos axustes. 518 00:24:42,450 --> 00:24:45,310 Entón, como podemos ir sobre factoring algúns dos iso? 519 00:24:45,310 --> 00:24:48,740 >> Ben, deixe-me propor exactamente que a próxima versión. 520 00:24:48,740 --> 00:24:53,890 Entón, aquí na versión un, teño a exacta mesmos arquivos, ademais dun par de outros. 521 00:24:53,890 --> 00:24:59,730 Aquí está index.php-- e mesmo se nunca viu antes de PHP, 522 00:24:59,730 --> 00:25:05,511 O que estou facendo probablemente para solucionar este problema-- a base do que ve aquí? 523 00:25:05,511 --> 00:25:11,300 524 00:25:11,300 --> 00:25:12,760 Si, é que un lixeiro compromiso? 525 00:25:12,760 --> 00:25:13,450 Non? 526 00:25:13,450 --> 00:25:16,020 Si, vai adiante. 527 00:25:16,020 --> 00:25:17,380 >> Audiencia: [inaudível] 528 00:25:17,380 --> 00:25:18,380 >> DAVID Malan: Yep. 529 00:25:18,380 --> 00:25:20,380 >> Audiencia: [inaudível] 530 00:25:20,380 --> 00:25:26,090 531 00:25:26,090 --> 00:25:28,669 >> DAVID Malan: Eu teño de ti para falar un pouco máis alto. 532 00:25:28,669 --> 00:25:31,084 >> Audiencia: [inaudível] 533 00:25:31,084 --> 00:25:35,744 534 00:25:35,744 --> 00:25:36,660 DAVID Malan: OK, bo. 535 00:25:36,660 --> 00:25:38,620 E eu era penso-- difícil de escoitar, pero eu vocę-- 536 00:25:38,620 --> 00:25:42,690 creo que o que está querendo dicir é que as marcas que eran comúns encima, 537 00:25:42,690 --> 00:25:47,710 e as marcas que eran comúns na fondo, xa foron tidos fóra, 538 00:25:47,710 --> 00:25:51,140 ou relegado que arquivos? 539 00:25:51,140 --> 00:25:53,476 Header.php e footer.php-- e imos 540 00:25:53,476 --> 00:25:55,600 para facer algúns axustes para abordar a preocupación que acaba 541 00:25:55,600 --> 00:25:59,370 levantadas sobre o cambio de números, para exemplo, se eu oín vostede correctamente. 542 00:25:59,370 --> 00:26:02,060 >> Pero que parece ser a esencia do mesmo. 543 00:26:02,060 --> 00:26:04,820 Se había unha enorme cantidade de redundancia na parte superior da páxina, 544 00:26:04,820 --> 00:26:06,736 e unha enorme cantidade de redundancia no fondo, 545 00:26:06,736 --> 00:26:09,280 imos literalmente só destaque e cortar ese contido para fóra, 546 00:26:09,280 --> 00:26:13,270 poñelas nun file-- separado só como a idea de CSS, onde nós fatoramos 547 00:26:13,270 --> 00:26:16,710 estética moi semellantes, colocados lo nun ficheiro PHP punto separado, 548 00:26:16,710 --> 00:26:20,340 usar a esixir que mechanism-- é como C sharp que include-- 549 00:26:20,340 --> 00:26:23,570 é esencialmente o mesmo que dicir ir coller o contido header.php, 550 00:26:23,570 --> 00:26:25,370 e copiar e cola-los aquí. 551 00:26:25,370 --> 00:26:29,490 >> Pero o que isto significa que agora en index.php, teño estas dúas liñas. 552 00:26:29,490 --> 00:26:32,130 En lectures.php, eu tamén ter estas dúas liñas. 553 00:26:32,130 --> 00:26:35,230 En week0.php, eu tamén ter estas dúas liñas. 554 00:26:35,230 --> 00:26:38,380 >> Entón, agora, se eu queira cambiar o título de todas as miñas páxinas, 555 00:26:38,380 --> 00:26:40,530 ou quero cambiar o estrutura fundamental, 556 00:26:40,530 --> 00:26:44,380 Podo cambiar isto agora nun só lugar, ou dous places-- cabeceira e pé, 557 00:26:44,380 --> 00:26:45,429 respectivamente. 558 00:26:45,429 --> 00:26:47,970 Agora inicial do código de ollar un pouco máis enigmática, non? 559 00:26:47,970 --> 00:26:53,590 Pero se pensar sobre o que a páxina doing-- é se eu estou pedindo week0.php, 560 00:26:53,590 --> 00:26:59,880 así como no deseño sobre aqui-- cando week0.php é solicitado, 561 00:26:59,880 --> 00:27:00,960 que significa iso? 562 00:27:00,960 --> 00:27:04,410 >> Literalmente, este ficheiro é solicitado polo navegador. 563 00:27:04,410 --> 00:27:06,240 A.k.a. A web server-- 564 00:27:06,240 --> 00:27:09,250 CS50 ID-- agarra este arquivo, week0.php, e lê- 565 00:27:09,250 --> 00:27:10,780 Lo de arriba abaixo, de esquerda a dereita. 566 00:27:10,780 --> 00:27:15,400 Na liña un, el inmediatamente atopa soporte aberto signo de interrogación PHP, requiren 567 00:27:15,400 --> 00:27:17,872 cabeceira dot PHP, e por iso o que o intérprete PHP 568 00:27:17,872 --> 00:27:20,580 does-- que está construído na web servidor, porque preconfigurado 569 00:27:20,580 --> 00:27:24,580 Lo para você-- vai automaticamente en header.php, copia o contido, 570 00:27:24,580 --> 00:27:25,640 cola-los aquí. 571 00:27:25,640 --> 00:27:28,790 >> Pero entón os encontros de intérprete punto de interrogação próximo soporte, 572 00:27:28,790 --> 00:27:30,320 Entón, é todo feito a pensar. 573 00:27:30,320 --> 00:27:33,400 Agora é só cega cospe as liñas de dous a sete, 574 00:27:33,400 --> 00:27:35,240 porque é só HTML puro. 575 00:27:35,240 --> 00:27:38,470 Obtén a liña oito, e fai iso mesma maxia novamente-- abrir o ficheiro, 576 00:27:38,470 --> 00:27:41,460 agarrando o contido e obrigándoo os ou colando- 577 00:27:41,460 --> 00:27:42,480 dereito ou ben alí. 578 00:27:42,480 --> 00:27:44,210 >> Pero eu simplemente alusión a un erro. 579 00:27:44,210 --> 00:27:48,610 Este é un paso parcial cara atrás, porque se miramos en header.php, 580 00:27:48,610 --> 00:27:50,850 Eu medio que cortar un canto. 581 00:27:50,850 --> 00:27:56,250 O recurso que eu desistir, para para gañar este mellor proxecto discutible? 582 00:27:56,250 --> 00:27:57,305 Si? 583 00:27:57,305 --> 00:27:58,180 Audiencia: [inaudível] 584 00:27:58,180 --> 00:28:00,570 DAVID Malan: Si, eu medio de cortar un canto non trivial. 585 00:28:00,570 --> 00:28:04,489 Vostede apuntou que o que estaba cambiando foi o título, o número no título, 586 00:28:04,489 --> 00:28:05,530 eo número no H1. 587 00:28:05,530 --> 00:28:08,170 Así, a miña solución foi, OK, imos só cambiar o nome da páxina, 588 00:28:08,170 --> 00:28:10,080 e non tratar con isto problema algún. 589 00:28:10,080 --> 00:28:12,130 Entón iso é un parcial un paso atrás, con certeza. 590 00:28:12,130 --> 00:28:14,300 >> Pero o que é notable aquí é que o que eu fixen 591 00:28:14,300 --> 00:28:17,200 se non é consignado fóra todo o material común. 592 00:28:17,200 --> 00:28:21,520 E en footer.php, repare en que eu consignado fóra todo isto, aínda que pequena, 593 00:28:21,520 --> 00:28:22,790 material común. 594 00:28:22,790 --> 00:28:26,070 Entón eu teño de forma agora poder dar un paso á fronte, e corrigi- 595 00:28:26,070 --> 00:28:27,160 que as cuestións de título. 596 00:28:27,160 --> 00:28:28,180 Entón, imos facelo. 597 00:28:28,180 --> 00:28:35,060 >> Déixeme ir á miña segunda versión aquí, o que, unha vez máis, ten os mesmos arquivos 598 00:28:35,060 --> 00:28:36,825 excepto por unha nova adición. 599 00:28:36,825 --> 00:28:38,950 E é un pouco máis detallado, pero imos ver se nós 600 00:28:38,950 --> 00:28:40,550 pode provocar unha separación que está a suceder aquí. 601 00:28:40,550 --> 00:28:45,370 Entón, en vez de esixir header.php, e footer.php, 602 00:28:45,370 --> 00:28:50,180 Parece que estou esixindo só unha file-- chamado, por suposto, helpers.php. 603 00:28:50,180 --> 00:28:52,560 E déixeme estipular agora, o que está dentro helpers.php 604 00:28:52,560 --> 00:28:55,330 é só unha morea de funcións que escribín, como antes. 605 00:28:55,330 --> 00:28:57,550 Pero eu o chamei helpers.php. 606 00:28:57,550 --> 00:29:00,370 >> Agora, ao parecer, en liña de tres e 10, son 607 00:29:00,370 --> 00:29:02,840 chamando dúas funcións no facer cabeceira, pé de páxina renda. 608 00:29:02,840 --> 00:29:05,040 Aqueles non veñen con PHP, escribín aqueles min mesmo. 609 00:29:05,040 --> 00:29:07,880 E eu poñer-los en helpers.php. 610 00:29:07,880 --> 00:29:11,210 >> Agora, só vin esa sintaxe Unha vez máis, e foi super breve. 611 00:29:11,210 --> 00:29:15,330 Pero esta é, aparentemente, un argumento para procesar cabeceira, a función. 612 00:29:15,330 --> 00:29:16,450 Por que eu sei diso? 613 00:29:16,450 --> 00:29:18,522 Ben, aquí está un paréntese próximos, aquí está un paréntese aberta. 614 00:29:18,522 --> 00:29:21,230 E, por suposto, así como en C, algo entre eses parénteses 615 00:29:21,230 --> 00:29:23,350 é un ou unha input-- argumento para a función. 616 00:29:23,350 --> 00:29:26,710 >> Cal é o tipo dese argumento de datos, con base no que eu destacou? 617 00:29:26,710 --> 00:29:30,820 O que estes corchetes indicar, con base na última semana? 618 00:29:30,820 --> 00:29:33,390 Si, é unha array-- especialmente unha matriz asociativa. 619 00:29:33,390 --> 00:29:35,700 E esta sintaxe reconhecidamente é un pouco funky, 620 00:29:35,700 --> 00:29:38,860 pero iso é só de paso nun par de valor de clave. 621 00:29:38,860 --> 00:29:43,530 A clave é, entre comiñas título, eo valor é CS50. 622 00:29:43,530 --> 00:29:46,220 >> Se tivésemos feito isto en C, pode, en vez 623 00:29:46,220 --> 00:29:49,400 pareza máis con iso, só entre comiñas CS50-- 624 00:29:49,400 --> 00:29:52,460 ou, en realidade, sería rizado cintas, ou algo parecido en C, 625 00:29:52,460 --> 00:29:55,580 onde a clave é cero, eo valor é CS50. 626 00:29:55,580 --> 00:29:59,840 Pero, de novo, en PHP, aínda que o sintaxe é, de novo, un pouco raro, 627 00:29:59,840 --> 00:30:02,860 el permite que pase en palabras no canto de números 628 00:30:02,860 --> 00:30:05,120 para asociar as teclas cos valores. 629 00:30:05,120 --> 00:30:06,390 >> Entón o que iso todo significa? 630 00:30:06,390 --> 00:30:09,750 Se eu entrar en helpers.php, imos ollar para esta función. 631 00:30:09,750 --> 00:30:13,620 renderHeader.php, no canto RenderHeader é a miña función, 632 00:30:13,620 --> 00:30:16,220 e sei que, porque eu vexo a palabra clave aquí función. 633 00:30:16,220 --> 00:30:19,450 Isto é novo a partir C-- aparentemente leva un argumento chamado data-- 634 00:30:19,450 --> 00:30:22,400 pero eu podería chamar este calquera cousa, pero eu o chamei de datos, 635 00:30:22,400 --> 00:30:25,090 só para ser un pouco clean-- e só dar un palpite, especialmente 636 00:30:25,090 --> 00:30:28,173 se xa programou nalgún outro maior nivel de linguaxe antes, algo 637 00:30:28,173 --> 00:30:29,820 arriba C, conceptualmente. 638 00:30:29,820 --> 00:30:33,820 >> O que fai soporte aberto igual paréntese probablemente significa? 639 00:30:33,820 --> 00:30:35,540 Ou o que podería dicir? 640 00:30:35,540 --> 00:30:39,660 Non vimos isto en C. Si? 641 00:30:39,660 --> 00:30:40,480 >> Unha matriz baleira. 642 00:30:40,480 --> 00:30:45,440 En concreto, isto quere dicir que se o usuario non chamar RenderHeader 643 00:30:45,440 --> 00:30:49,340 cun argumento, eu aínda estou indo ter un argumento chamado de datos, 644 00:30:49,340 --> 00:30:52,327 pero o seu valor por defecto é vai ser unha matriz baleira. 645 00:30:52,327 --> 00:30:53,660 Entón é só unha conveniencia agradable. 646 00:30:53,660 --> 00:30:56,493 Non teño que berrar co usuario, ou dicir que usou miña función incorrecta. 647 00:30:56,493 --> 00:30:59,849 Só podo dar ao usuario un patrón valor, se eu non particularmente coidados. 648 00:30:59,849 --> 00:31:01,890 Agora esa función, eu son vai balance miñas mans en. 649 00:31:01,890 --> 00:31:07,620 Pero esta función permite extracto nos pasar estas variables en datos 650 00:31:07,620 --> 00:31:10,360 en header do seguinte xeito. 651 00:31:10,360 --> 00:31:13,100 E esta é a última peza, Coido que, de sintaxe descolados. 652 00:31:13,100 --> 00:31:15,860 Aquí é a miña nova versión de header.php --- lo 653 00:31:15,860 --> 00:31:20,140 adoitaba dicir literalmente aberta soporte título CS50, e foi iso. 654 00:31:20,140 --> 00:31:21,766 E mesmo para a H1. 655 00:31:21,766 --> 00:31:24,310 >> Agora é aparentemente di algo moi badalado. 656 00:31:24,310 --> 00:31:28,030 E déixeme simplificar esta por un momento como segue. 657 00:31:28,030 --> 00:31:31,020 Isto é o que eu teño cambiou o meu título para ser. 658 00:31:31,020 --> 00:31:35,140 Con todo, está quedando un pouco feo para soportes constantemente abertas con PHP, 659 00:31:35,140 --> 00:31:36,610 e, a continuación, use a función de impresión. 660 00:31:36,610 --> 00:31:40,810 Acontece que o PHP ten unha abreviación notación para esta, que non é máis que 661 00:31:40,810 --> 00:31:45,050 un signo igual, o que é tecnicamente un función chamada eco en vez de impresión, 662 00:31:45,050 --> 00:31:46,800 pero é o mesmo, de forma eficaz. 663 00:31:46,800 --> 00:31:48,440 >> Isto só queda mellor. 664 00:31:48,440 --> 00:31:50,510 É só unha sintáctica azucre, se quere, 665 00:31:50,510 --> 00:31:52,260 que fai que o meu código de ollar un pouco mellor. 666 00:31:52,260 --> 00:31:54,010 Pero ao parecer, e imos ver iso de novo 667 00:31:54,010 --> 00:31:57,420 en pouco tempo, temos que chamar este irritante longo función chamada 668 00:31:57,420 --> 00:32:00,582 HTML caracteres especiais en PHP, pois parece que 669 00:32:00,582 --> 00:32:02,790 hai certas entradas que o usuario pode darnos, 670 00:32:02,790 --> 00:32:05,160 ou que os usuarios poden dar, que está indo a romper a nosa web. 671 00:32:05,160 --> 00:32:07,035 Pero imos ver que o próximo semana con JavaScript. 672 00:32:07,035 --> 00:32:10,740 Pero, por agora, só sei que este ficheiro, headers.php, simplemente 673 00:32:10,740 --> 00:32:13,040 leva a que Título Pasei por dentro, facer 674 00:32:13,040 --> 00:32:17,380 seguro de que é seguro para ser inxectado nunha web páxina, e cospe-lo como o meu título 675 00:32:17,380 --> 00:32:18,640 e como o meu H1. 676 00:32:18,640 --> 00:32:24,440 Entón, se eu entrar nesta versión agora, Lembre que as conferencias ten o seu título de volta, 677 00:32:24,440 --> 00:32:28,630 semana cero ten o seu título de volta, e de feito, o HTML Estou xerando 678 00:32:28,630 --> 00:32:32,110 é o mesmo que o que a miña primeira versión foi-- excepto para o meu espazo en branco, 679 00:32:32,110 --> 00:32:35,150 porque eu comece o formato meu código un pouco diferente. 680 00:32:35,150 --> 00:32:38,082 Pero eu teño xerado todos o código que me interesa. 681 00:32:38,082 --> 00:32:39,790 Entón deixe-me facer unha pausa para só un momento para ver 682 00:32:39,790 --> 00:32:42,200 se hai algunha dúbida ou confusión que eu creei. 683 00:32:42,200 --> 00:32:44,970 684 00:32:44,970 --> 00:32:48,150 Todo ben, entón imos torcer un pouco máis difícil aquí 685 00:32:48,150 --> 00:32:51,500 a ver se hai unha oportunidade de mellora. 686 00:32:51,500 --> 00:32:56,130 Helpers.php tamén tiña esa función, chamada RenderFooter. 687 00:32:56,130 --> 00:32:59,652 E o que é digno de nota sobre RenderHeader, e RenderFooter? 688 00:32:59,652 --> 00:33:02,610 E, de novo, con fins de hoxe, saber que a función é só extracto 689 00:33:02,610 --> 00:33:08,280 miña forma de pasar argumentos en header.php e footer.php. 690 00:33:08,280 --> 00:33:10,900 691 00:33:10,900 --> 00:33:11,780 >> Sentímolo? 692 00:33:11,780 --> 00:33:13,056 >> Audiencia: [inaudível] 693 00:33:13,056 --> 00:33:15,180 DAVID Malan: Si, eu só cambiou a esixir liña. 694 00:33:15,180 --> 00:33:19,410 Entón, literalmente, eu teño cometido pecado de copiar e pegar, unha vez máis. 695 00:33:19,410 --> 00:33:21,920 Non é un número enorme de liñas, pero veñen on-- 696 00:33:21,920 --> 00:33:25,220 se eu estou copiando e colando todo só para cambiar unha pequena palabra, 697 00:33:25,220 --> 00:33:28,610 ea unha pequena palabra que apunta Alan fóra é rodapé aquí, contra cabeceira aquí. 698 00:33:28,610 --> 00:33:30,670 Se non, é todo idénticas, excepto para, 699 00:33:30,670 --> 00:33:32,180 por suposto, os nomes da función. 700 00:33:32,180 --> 00:33:33,690 Entón, o que poderiamos facer mellor? 701 00:33:33,690 --> 00:33:39,810 >> Ben, deixe-me abrir esta versión aquí, en que en helpers.php, 702 00:33:39,810 --> 00:33:42,300 por que non eu só obter un pouco máis intelixente sobre iso? 703 00:33:42,300 --> 00:33:46,410 Fai un pouco máis complicado código, pero chamalo facer? 704 00:33:46,410 --> 00:33:48,470 Entón o que eu fundamentalmente cambiou? 705 00:33:48,470 --> 00:33:51,770 >> Leva un argumento agora-- dous argumentos, os datos aínda. 706 00:33:51,770 --> 00:33:54,444 E entón cal é a primeira nome probablemente está a ser usado para, 707 00:33:54,444 --> 00:33:55,860 a base do que está lendo aquí? 708 00:33:55,860 --> 00:33:58,452 Mesmo se algúns dos sintaxe aínda é novo. 709 00:33:58,452 --> 00:33:59,660 Qué é o modelo de sinal de dólar? 710 00:33:59,660 --> 00:34:02,400 711 00:34:02,400 --> 00:34:03,016 >> Sentímolo? 712 00:34:03,016 --> 00:34:03,710 >> Audiencia: cabeceira ou pé de páxina. 713 00:34:03,710 --> 00:34:04,510 >> DAVID Malan: cabeceira ou pé de páxina. 714 00:34:04,510 --> 00:34:07,134 Entón, ao parecer, eu decidir que se o único que está cambiando 715 00:34:07,134 --> 00:34:10,159 é o que quero modelo para print-- e por molde 716 00:34:10,159 --> 00:34:13,100 Quero dicir que é modelo para código que quero para a saída, 717 00:34:13,100 --> 00:34:16,350 pero quero tapar nalgunha values-- iso, se é só a cabeceira 718 00:34:16,350 --> 00:34:20,440 ou rodapé, por que non me parametrizar iso e chamar o sinal argumento dólar 719 00:34:20,440 --> 00:34:21,409 template? 720 00:34:21,409 --> 00:34:26,250 E, a continuación, esta sintaxe descolados permíteme para crear un camiño nunha variable aquí. 721 00:34:26,250 --> 00:34:28,030 >> Entón camiño sinal de dólar é unha variable. 722 00:34:28,030 --> 00:34:31,120 O que fai esta sintaxe facer, se é familiar? 723 00:34:31,120 --> 00:34:32,512 Si? 724 00:34:32,512 --> 00:34:34,065 >> Audiencia: [inaudível] 725 00:34:34,065 --> 00:34:34,940 DAVID Malan: Exactamente. 726 00:34:34,940 --> 00:34:37,600 Se template é, entre comiñas, cabeceira, ou que modelo é, 727 00:34:37,600 --> 00:34:41,170 entre comiñas, rodapé, esta liña non que destaque, liña oito, 728 00:34:41,170 --> 00:34:46,330 é simplemente tomar ese nome, como cabeceira, e concatenando-lo con PHP punto. 729 00:34:46,330 --> 00:34:49,750 Entón, nós non ten ese operador en C. Este operador punto é 730 00:34:49,750 --> 00:34:54,520 unha cousa incrible na PHP-- se está familiarizado con JavaScript ou Java, 731 00:34:54,520 --> 00:34:56,949 pode utilizar o signo máis asinar a facer concatenación. 732 00:34:56,949 --> 00:34:59,974 >> En C, é unha dor no pescozo e eu sinto moito, en p-axustou seis, 733 00:34:59,974 --> 00:35:02,390 vai ter que facer isto-- é unha dor no pescozo 734 00:35:02,390 --> 00:35:03,930 para concatenar cadeas. 735 00:35:03,930 --> 00:35:04,670 Por que? 736 00:35:04,670 --> 00:35:06,580 Ben, porque se ten unha cadea que é iso por moito tempo, 737 00:35:06,580 --> 00:35:09,538 e outra secuencia de caracteres que é iso por moito tempo, non pode simplemente liga-los xuntos. 738 00:35:09,538 --> 00:35:11,070 O que non ten que facer en C? 739 00:35:11,070 --> 00:35:11,680 Si? 740 00:35:11,680 --> 00:35:12,380 >> Audiencia: [inaudível] 741 00:35:12,380 --> 00:35:15,090 >> DAVID Malan: Ten que malloc memoria, ou usar unha matriz na pila. 742 00:35:15,090 --> 00:35:17,214 E realmente ten que facer esa matriz grande abondo 743 00:35:17,214 --> 00:35:20,940 para caber este máis este, ademais da barra invertida cero. 744 00:35:20,940 --> 00:35:24,994 Logo concatenar-los en conxunto, utilizando trasfega gato ou manualmente cun loop for, 745 00:35:24,994 --> 00:35:26,160 ou calquera número de técnicas. 746 00:35:26,160 --> 00:35:27,760 E imos amosar-lle un par in-p definir seis. 747 00:35:27,760 --> 00:35:29,080 >> É unha dor no pescozo. 748 00:35:29,080 --> 00:35:34,190 E iso é realmente o que quero dicir sobre este contra isto-- como C contra PHP. 749 00:35:34,190 --> 00:35:36,870 Só obteña moito máis funcións de balde, 750 00:35:36,870 --> 00:35:39,030 de xeito que poida concentrarse, idealmente, a diversión 751 00:35:39,030 --> 00:35:41,190 parte de codificación, o proxecto que quere resolver, 752 00:35:41,190 --> 00:35:43,190 no canto de o baixo nivel de minúcias. 753 00:35:43,190 --> 00:35:49,840 >> Entón, iso só xera header.php ou footer.php con base na que eu chamar. 754 00:35:49,840 --> 00:35:52,280 E, de feito, se eu for en index.php, aviso 755 00:35:52,280 --> 00:35:56,230 todo o que é changed-- No canto de chamando facer cabeceira ou pé de páxina renda, 756 00:35:56,230 --> 00:36:00,230 Estou chamando render, seguido polo nome do modelo que quero facer. 757 00:36:00,230 --> 00:36:02,370 E vai ver isto, tamén, no conxunto de problemas de sete, 758 00:36:02,370 --> 00:36:05,530 polo cal permitirá que use o mesma función para facer acios 759 00:36:05,530 --> 00:36:07,550 e acios de diferentes páxinas web. 760 00:36:07,550 --> 00:36:10,570 >> Entón en vez de me debruzouse moi máis sobre estes details-- 761 00:36:10,570 --> 00:36:13,210 que podes ver de novo en conxunto de problemas seven-- imos ollar 762 00:36:13,210 --> 00:36:16,850 en agora o inicio dunha solución de a un problema máis interesante. 763 00:36:16,850 --> 00:36:19,310 Ata agora, nada temos fixo os datos gardados. 764 00:36:19,310 --> 00:36:22,920 En realidade, a única vez que xa salvou algo que fixemos nesta clase 765 00:36:22,920 --> 00:36:31,030 é cando tivemos unha demostración moi sinxelo por algún tempo volta, en que usan ficheiro IO en C, 766 00:36:31,030 --> 00:36:34,520 e eu creo que eu escriba o meu nome, e O nome de Hannah, eo nome de María, 767 00:36:34,520 --> 00:36:37,610 ou que o nome de Andy, e logo gardado un file-- CSV 768 00:36:37,610 --> 00:36:39,430 separados por comas ficheiro valores. 769 00:36:39,430 --> 00:36:43,530 >> E usamos fopen-- creo usamos fprintf se ben me lembra, 770 00:36:43,530 --> 00:36:44,910 e nós gardadas nun arquivo. 771 00:36:44,910 --> 00:36:46,920 Agora, que é o máis simple forma de unha base de datos. 772 00:36:46,920 --> 00:36:50,230 Se queres facer un sitio para o Programa Frosh IMS, polo cal calouros 773 00:36:50,230 --> 00:36:53,390 podes rexistrarte para un deporte, idealmente quero facer algo con eses datos. 774 00:36:53,390 --> 00:36:55,370 A semana pasada, non fixemos nada co data-- nós só dixo: 775 00:36:55,370 --> 00:36:56,661 está rexistrado, non realmente. 776 00:36:56,661 --> 00:36:58,950 Ou que eu enviei un correo a Proctor, e foi iso. 777 00:36:58,950 --> 00:37:02,110 >> Pero sería bo se eu puidese dar que proctor un ficheiro CSV, 778 00:37:02,110 --> 00:37:03,340 como un arquivo de Excel. 779 00:37:03,340 --> 00:37:05,090 Ou mellor aínda, sería sería bo se eu puidese 780 00:37:05,090 --> 00:37:08,830 poñer os nomes destes usuarios e dormitorio nomes e todo iso 781 00:37:08,830 --> 00:37:11,740 en que unha base de datos só vive para sempre, 782 00:37:11,740 --> 00:37:13,530 ata que eu escoller para eliminar os datos. 783 00:37:13,530 --> 00:37:15,645 Unha base de datos que permite me para consultar información. 784 00:37:15,645 --> 00:37:18,070 E, de feito, é o que é unha base de datos. 785 00:37:18,070 --> 00:37:20,470 >> Nós introducimos hoxe, e a próxima semana, tamén, unha tecnoloxía 786 00:37:20,470 --> 00:37:25,020 chamado SQL-- unha Consulta Estruturada Linguaxe, que é outra lingua. 787 00:37:25,020 --> 00:37:28,750 É, esencialmente, un programación lingua, pero para bases de datos. 788 00:37:28,750 --> 00:37:31,760 E unha base de datos, por agora, só pensar en como unha versión super sofisticados 789 00:37:31,760 --> 00:37:35,710 Microsoft Excel, é Google Follas de cálculo ou Números de Apple. 790 00:37:35,710 --> 00:37:39,950 En xeral, é un programa que permite vostede gardar unha chea de datos 791 00:37:39,950 --> 00:37:43,960 en liñas e columnas, bastante como pode en Excel. 792 00:37:43,960 --> 00:37:47,100 >> Pero o que é bo, especialmente se non somos super-familiarizados co Excel, 793 00:37:47,100 --> 00:37:52,040 SQL que permite que a facer é esta consulta información escribindo liñas de código 794 00:37:52,040 --> 00:37:55,220 onde pode, aínda que o seu base de datos ten un millón de liñas na mesma, 795 00:37:55,220 --> 00:37:57,190 podes atopar cousas super rápido. 796 00:37:57,190 --> 00:37:59,950 En realidade, o Excel é particularmente mal de grandes conxuntos de datos. 797 00:37:59,950 --> 00:38:02,460 E, de feito, ata algúns anos, acabou 798 00:38:02,460 --> 00:38:08,890 Excel só permite que almacenar ata 65.535 liñas de data-- que 799 00:38:08,890 --> 00:38:12,020 Parece moito, pero ao época eu era un estudante de graduación, 800 00:38:12,020 --> 00:38:14,920 e lémbrome tropezar iso porque eu estaba xerando 801 00:38:14,920 --> 00:38:17,900 Arquivos CSV para a miña investigación e eu quería analiza-los rapidamente 802 00:38:17,900 --> 00:38:19,530 só abrindo-se en Excel. 803 00:38:19,530 --> 00:38:23,730 Por suposto, o meu ordenador só accidentado, porque eu tiña máis de 65.000 liñas. 804 00:38:23,730 --> 00:38:27,210 >> Pero de onde veu a 65.535 vén? 805 00:38:27,210 --> 00:38:29,670 O que estaba facendo Microsoft, presuntamente? 806 00:38:29,670 --> 00:38:32,430 Se é bo coas potencias de dous? 807 00:38:32,430 --> 00:38:37,160 Si, eles estaban a usar un 16-bit valor para representar o número de liña. 808 00:38:37,160 --> 00:38:41,310 E dous a 16 é 65,536-- menos un, porque se 809 00:38:41,310 --> 00:38:45,414 índice cero significa que foi o maior número de liñas que eu podería ter. 810 00:38:45,414 --> 00:38:46,830 E foi só unha decisión de deseño. 811 00:38:46,830 --> 00:38:52,760 Ao gardar 16 bits, me limitado 16.000 liñas, no canto de 4 millóns, 812 00:38:52,760 --> 00:38:54,322 que eu podería ter ideal. 813 00:38:54,322 --> 00:38:57,030 Pero, por agora, imos introducir esta máis nun contexto web. 814 00:38:57,030 --> 00:39:00,390 E o que é agradable sobre SQL é que, mesmo pero é moi poderosa e fermosa 815 00:39:00,390 --> 00:39:04,050 texto, que realmente reduce ata catro operacións fundamentais, catro 816 00:39:04,050 --> 00:39:08,060 funcións clave, se selecciona, will-- para recuperar datos, en busca 817 00:39:08,060 --> 00:39:12,510 aos datos; borrar ou eliminar datos; introducir para engadir liñas para a base de datos; 818 00:39:12,510 --> 00:39:13,410 e actualización. 819 00:39:13,410 --> 00:39:17,010 Entón, se xa usou Google Follas de cálculo, números Apple, Microsoft 820 00:39:17,010 --> 00:39:19,310 Excel, ten executado, moi probablemente, o único 821 00:39:19,310 --> 00:39:22,530 destas operacións como un ser humano por só usando teclado e mouse-- 822 00:39:22,530 --> 00:39:26,050 inserción de datos, utilizando os seus ollos para seleccionar ou buscar datos, 823 00:39:26,050 --> 00:39:28,360 ou datos actualización ou exclusión de datos. 824 00:39:28,360 --> 00:39:29,870 >> Entón o que significa isto? 825 00:39:29,870 --> 00:39:34,300 Ben, preinstalado en CS50 IDE é un programa chamado MySQL. 826 00:39:34,300 --> 00:39:37,050 É un libre, de código aberto base de datos que é super popular. 827 00:39:37,050 --> 00:39:40,590 Facebook, por exemplo, úsao para este día, entre outras ferramentas que empregan. 828 00:39:40,590 --> 00:39:44,300 E unha morea de sitios moi populares usar que en gran parte porque é rápido, 829 00:39:44,300 --> 00:39:45,230 e porque é gratuíto. 830 00:39:45,230 --> 00:39:46,820 Aínda que certamente existen alternativas. 831 00:39:46,820 --> 00:39:49,580 E algúns de vostedes poden se involucrar co alternativas para os proxectos finais. 832 00:39:49,580 --> 00:39:55,330 >> Esta é unha imaxe de pantalla, mentres, de unha ferramenta baseada na web chamada phpMyAdmin. 833 00:39:55,330 --> 00:39:58,260 É unha coincidencia que esta ferramenta baseada na web é tamén 834 00:39:58,260 --> 00:40:01,720 escrito nunha linguaxe, PHP, pero o que é que se destinan a facer 835 00:40:01,720 --> 00:40:04,620 é dar unha base WEB- interface para unha base de datos. 836 00:40:04,620 --> 00:40:07,180 Porque MySQL é tipicamente algo, historicamente, 837 00:40:07,180 --> 00:40:08,770 ía interactuar con só cunha liña de comandos. 838 00:40:08,770 --> 00:40:10,811 E sería super- irritante e arcano ter 839 00:40:10,811 --> 00:40:14,487 escribir ordes textuais para seleccionar datos, inserir datos e eliminar datos. 840 00:40:14,487 --> 00:40:16,820 Por iso, algunhas persoas en internet escribiu un programa baseado na web 841 00:40:16,820 --> 00:40:18,900 que só déixenos xestionar os datos da nosa base de datos. 842 00:40:18,900 --> 00:40:23,040 É como un dobre clic sobre o Excel, e executando unha versión baseada na web dos mesmos. 843 00:40:23,040 --> 00:40:26,370 >> E o que vai usar isto para en definitiva, a próxima semana, non en-p definir seis, 844 00:40:26,370 --> 00:40:28,680 pero é construír algo chamado CS50 Finanzas, que 845 00:40:28,680 --> 00:40:32,630 terá unha base de datos de usuarios, con nomes de usuario e contrasinais, 846 00:40:32,630 --> 00:40:34,860 dólar que equivale teñen nas súas contas bancarias. 847 00:40:34,860 --> 00:40:37,280 Será algo que usa para almacenar 848 00:40:37,280 --> 00:40:39,910 os símbolos e as cantidades de accións que os usuarios 849 00:40:39,910 --> 00:40:42,567 comprar usando virtual dólares que vai dar a eles. 850 00:40:42,567 --> 00:40:44,900 E iso vai permitir que os usuarios para rexistrar para o seu sitio web, 851 00:40:44,900 --> 00:40:47,190 de xeito que mesmo os seus amigos pode sintonizar a súa web 852 00:40:47,190 --> 00:40:49,360 e realmente facelo, log in, e xogar 853 00:40:49,360 --> 00:40:52,807 e tratar de atopar erros no seu código, e tratar de atopar erros no seu sitio. 854 00:40:52,807 --> 00:40:55,390 E van simplemente rexístrese pola engadindo que, de forma eficaz, 855 00:40:55,390 --> 00:40:58,120 vía código que escribe no seu banco de datos. 856 00:40:58,120 --> 00:41:02,470 >> Por exemplo, esta é unha captura de pantalla rápida que unha base de datos pode parecer. 857 00:41:02,470 --> 00:41:05,190 Isto era un dos solutions-- do ano pasado 858 00:41:05,190 --> 00:41:07,760 este é como un mini Excel arquivo, almacenadas na nosa base de datos 859 00:41:07,760 --> 00:41:09,950 almacenados neste software chamado MySQL. 860 00:41:09,950 --> 00:41:13,260 Na parte esquerda, eu teño visto dada a cada usuario un número único. 861 00:41:13,260 --> 00:41:16,200 Na segunda columna, eu dei- todos un usuario nome-- miña propia 862 00:41:16,200 --> 00:41:16,880 entre eles. 863 00:41:16,880 --> 00:41:21,430 E na parte dereita, Eu dei-lles un hash. 864 00:41:21,430 --> 00:41:26,760 >> Agora, esta é realmente unha contrasinal, pero non é un contrasinal de texto plano. 865 00:41:26,760 --> 00:41:30,160 É un contrasinal cifrado, se vai, ou un código de hash. 866 00:41:30,160 --> 00:41:32,000 Que imos volver antes de tempo. 867 00:41:32,000 --> 00:41:34,340 >> Pero se xa leu un artigo sobre como 868 00:41:34,340 --> 00:41:37,950 a chave nalgún banco ou algún sitio pode ser comprometida, 869 00:41:37,950 --> 00:41:39,630 el xeralmente pode significar unha de dúas cousas. 870 00:41:39,630 --> 00:41:42,780 Polo tanto, este é só un fragmento de seis usuarios. 871 00:41:42,780 --> 00:41:45,460 Todos vostedes poden agora descubrir para fóra a través de hacking ou fisuras 872 00:41:45,460 --> 00:41:47,690 o que os nosos seis contrasinais das persoas son. 873 00:41:47,690 --> 00:41:49,720 Pero se xa gañou unha alerta ou unha petición de desculpas 874 00:41:49,720 --> 00:41:52,803 dunha empresa ou sitio dito, Sentímolo, un hacker invadiu noso banco de datos 875 00:41:52,803 --> 00:41:56,360 vostede probabelmente debería cambiar o seu contrasinal, o que podería dicir? 876 00:41:56,360 --> 00:41:59,670 >> Ben, un, podería significar a empresa foi máis imbécil, 877 00:41:59,670 --> 00:42:03,630 e foi almacenando o seu contrasinal nunha columna como esta, sen cifrado. 878 00:42:03,630 --> 00:42:05,840 Que significa o adversario, que roubou a base de datos, 879 00:42:05,840 --> 00:42:07,440 literalmente coñece o seu nome de usuario e contrasinal. 880 00:42:07,440 --> 00:42:08,960 Iso é o peor escenario posible. 881 00:42:08,960 --> 00:42:11,710 E como podes ver en conxunto p- sete, tan fácil de evitar. 882 00:42:11,710 --> 00:42:15,624 Non hai absolutamente ningunha escusa para que forma de estupidez en internet de hoxe. 883 00:42:15,624 --> 00:42:18,540 Dois-- e imos atopar algúns artigos para dar testemuño do feito de que este aínda 884 00:42:18,540 --> 00:42:21,710 acontece, nonetheless-- dous, quizais o adversario 885 00:42:21,710 --> 00:42:23,840 roubou esta versión da base de datos. 886 00:42:23,840 --> 00:42:27,110 Que aínda é un pouco mal, porque agora saben que eu teño seis clientes, 887 00:42:27,110 --> 00:42:29,270 Sei que os nomes de usuario destes seis clientes, 888 00:42:29,270 --> 00:42:32,910 e sei que o cifrado versións, ou as versións de hash, 889 00:42:32,910 --> 00:42:34,340 de contrasinais eses seis dos clientes. 890 00:42:34,340 --> 00:42:37,010 Pero calquera de vostedes que pode facer [? Hacker 2?] 891 00:42:37,010 --> 00:42:41,150 onde rachado contrasinais ou tomou un ollar para esta versión do problema 892 00:42:41,150 --> 00:42:46,280 conxunto, por que é aínda un pouco preocupante se o adversario sabe o hash de 893 00:42:46,280 --> 00:42:47,435 contrasinais? 894 00:42:47,435 --> 00:42:49,732 >> Audiencia: porque poderían introducir todo o dicionario 895 00:42:49,732 --> 00:42:50,690 para a función hash. 896 00:42:50,690 --> 00:42:54,520 E se o seu contrasinal é un dicionario palabra, [? poden só match--?] 897 00:42:54,520 --> 00:42:57,640 >> DAVID Malan: Exactamente, o adversario pode só escribir o código, como algúns de vós 898 00:42:57,640 --> 00:43:00,526 fixo para [? Hacker?] 2, en que iterado 899 00:43:00,526 --> 00:43:03,400 todas as palabras do dicionario, ou todas as combinacións posibles dunha 900 00:43:03,400 --> 00:43:06,610 mediante Z e un medio nine-- que soa como un lote, e é. 901 00:43:06,610 --> 00:43:08,361 Pero, para un ordenador, é moi danado rápido. 902 00:43:08,361 --> 00:43:10,610 E, de feito, esa foi a punto de [? Hacker 2 ,?] Estaba 903 00:43:10,610 --> 00:43:12,540 para levar o material que literalmente parece iso, 904 00:43:12,540 --> 00:43:14,900 e enxeñería inversa o que realmente era. 905 00:43:14,900 --> 00:43:17,270 >> Entón, imos ver como podemos almacenar esta de forma máis eficiente. 906 00:43:17,270 --> 00:43:20,210 Acontece que, por sorte, en MySQL, alí vai ser tipo de datos. 907 00:43:20,210 --> 00:43:22,800 E unha das partes divertidas sobre deseño de base de datos, para ser honesto, 908 00:43:22,800 --> 00:43:25,810 é realmente decidir por si mesmo como ten que representar os datos? 909 00:43:25,810 --> 00:43:29,630 Se representar un número de teléfono como un int, como un número grande, ou moi? 910 00:43:29,630 --> 00:43:31,630 Ou realmente facelo como unha secuencia de caracteres? 911 00:43:31,630 --> 00:43:33,780 E non pode ser moi impactos non triviais deste. 912 00:43:33,780 --> 00:43:36,714 >> De feito, un dos primeiros, divertidas historias germane 913 00:43:36,714 --> 00:43:39,880 é cando Mark Zuckerberg estaba construíndo Facebook, que foi orixinalmente escrito en, 914 00:43:39,880 --> 00:43:42,300 e aínda é, en gran parte escrita en PHP. 915 00:43:42,300 --> 00:43:45,400 E un dos maiores retos eles afrontaron a comezos foi escalando. 916 00:43:45,400 --> 00:43:48,820 Cando eles continuaron engadindo escola despois escola, despois da escola, que eu saiba, 917 00:43:48,820 --> 00:43:51,639 unha das solucións orixinais era esencialmente para copiar e pegar 918 00:43:51,639 --> 00:43:53,430 algúns dos bancos de datos e parte do código, 919 00:43:53,430 --> 00:43:55,346 de xeito que era de Harvard executando no seu propio servidor, 920 00:43:55,346 --> 00:43:56,995 e MIT estaba correndo no seu propio servidor. 921 00:43:56,995 --> 00:43:59,120 E foi por iso que, para algúns de ti que pode lembrar, 922 00:43:59,120 --> 00:44:01,510 non podería ter amigos noutras redes. 923 00:44:01,510 --> 00:44:05,050 >> Probablemente non ten amigos en MIT ou Harvard 10 ou máis anos, 924 00:44:05,050 --> 00:44:07,467 pero non podería abarcar as redes por esa razón, en parte. 925 00:44:07,467 --> 00:44:10,550 E un dos maiores retos para a Mark e para empresas como Facebook 926 00:44:10,550 --> 00:44:13,460 en realidade, é de manexo centos e miles e millóns 927 00:44:13,460 --> 00:44:14,460 de solicitudes por segundo. 928 00:44:14,460 --> 00:44:16,501 Entón as cousas que vai comezar falando esta semana 929 00:44:16,501 --> 00:44:19,860 son realmente vai ser pertinente para escribir un bo software, e popularmente 930 00:44:19,860 --> 00:44:23,040 ferramentas de éxito que pode tratar con moitos usuarios. 931 00:44:23,040 --> 00:44:25,460 >> Entón, imos falar de cousas como indexación e busca, 932 00:44:25,460 --> 00:44:26,910 pero iso é todo por hoxe. 933 00:44:26,910 --> 00:44:28,780 Imos velo para saber máis sobre o mércores. 934 00:44:28,780 --> 00:44:31,780 935 00:44:31,780 --> 00:44:33,902 >> [MUSIC - TEMA "Seinfeld"] 936 00:44:33,902 --> 00:44:35,943 DAVID Malan: pode lo, e restar. 937 00:44:35,943 --> 00:44:38,859 E non ten que ir con algúns importe predeterminado de memoria. 938 00:44:38,859 --> 00:44:40,580 Ben, que é o que vai ser chamado? 939 00:44:40,580 --> 00:44:42,369 >> COLUMNA 1: Ben, o que está pasando? 940 00:44:42,369 --> 00:44:43,535 COLUMNA 2: O que quere dicir? 941 00:44:43,535 --> 00:44:44,451 Está dando unha charla. 942 00:44:44,451 --> 00:44:47,650 DAVID Malan: E podemos utilizar un función chamada malloc para memory-- 943 00:44:47,650 --> 00:44:50,050 >> COLUMNA 1: Por que non están movendo os seus brazos? 944 00:44:50,050 --> 00:44:52,450 >> COLUMNA 2: Ben that's-- vostede sabe, iso é normal. 945 00:44:52,450 --> 00:44:57,162 É como ten só grandes salchichas colgado alí. 946 00:44:57,162 --> 00:44:59,040 >> COLUMNA 1: Isto é normal? 947 00:44:59,040 --> 00:45:03,096 >> COLUMNA 2: Si, eu creo que nós simplemente asumir que accidentalmente 948 00:45:03,096 --> 00:45:06,840 substituíu seu desodorante con supercola. 949 00:45:06,840 --> 00:45:07,608