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 início da semana oito. 5 00:00:13,350 --> 00:00:17,510 E nós estamos tão animado para recebê- volta, grande surpresa, própria Ramon do CS50 6 00:00:17,510 --> 00:00:22,160 Galvan, um sénior em ascensão que tem sido passar os últimos meses 7 00:00:22,160 --> 00:00:26,190 desde julho em Los Angeles, em Hollywood, literalmente trabalhando em um novo TV 8 00:00:26,190 --> 00:00:31,930 show chamado Colony, o criador dos quais é, na verdade, um alúmen de Harvard próprio. 9 00:00:31,930 --> 00:00:36,610 E por isso estamos muito animado para ver este estréia na rede EUA em janeiro deste ano. 10 00:00:36,610 --> 00:00:40,370 Portanto, fique atento para isso, e para Ramon mais para as próximas semanas. 11 00:00:40,370 --> 00:00:42,550 >> Sabemos agora que o fim está próximo. 12 00:00:42,550 --> 00:00:47,400 E o que isto significa é que não há tudo o que muito deixou de CS50, é triste dizer. 13 00:00:47,400 --> 00:00:49,400 Temos apenas três problema conjuntos left-- há 14 00:00:49,400 --> 00:00:52,510 conjunto de problemas, que é em six-- suas mãos agora ou serão em breve, 15 00:00:52,510 --> 00:00:56,080 devido ainda este week-- destina-se a colmatar nossos mundos de linha de comando, onde 16 00:00:56,080 --> 00:00:59,450 temos passado mais de nosso tempo usando C, e no mundo da programação web. 17 00:00:59,450 --> 00:01:02,350 Bem, você vai ver um monte de idéias emprestado do trabalho de linha de comando, 18 00:01:02,350 --> 00:01:04,560 mas também um monte de novo e idéias interessantes 19 00:01:04,560 --> 00:01:07,929 que também vão ser pertinente para aplicações móveis e para a tecnologia, 20 00:01:07,929 --> 00:01:10,470 de modo mais geral, com o qual você caras são todos conhecemos hoje em dia 21 00:01:10,470 --> 00:01:12,090 em laptops e telefones e afins. 22 00:01:12,090 --> 00:01:15,220 >> Assim você não implementar uma página web, ou um site 23 00:01:15,220 --> 00:01:17,620 em si, mas um servidor web real. 24 00:01:17,620 --> 00:01:21,590 Você vai escrever o resto de um servidor web escrito em C, cujo propósito na vida 25 00:01:21,590 --> 00:01:25,410 é receber solicitações HTTP, essas envelopes virtuais Estamos sempre falando 26 00:01:25,410 --> 00:01:29,780 aproximadamente, e realmente quer responder com alguns content-- estáticos como um ponto HTML 27 00:01:29,780 --> 00:01:32,310 arquivo, ou um ponto ou JPEG qualquer outro número de arquivos, 28 00:01:32,310 --> 00:01:37,070 ou mesmo um arquivo PHP em que 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 fornecemos-lhe com um pouco de quadro 31 00:01:40,540 --> 00:01:43,100 para ele-- de fato o código de distribuição para problema 32 00:01:43,100 --> 00:01:47,496 definir seis é mais de 1.000 linhas, uma monte de comentários que é, para ser fair-- 33 00:01:47,496 --> 00:01:49,370 mas esta é realmente significou ser uma oportunidade 34 00:01:49,370 --> 00:01:52,570 para começar suas mãos sujas de mergulho em um projeto bastante grande 35 00:01:52,570 --> 00:01:55,570 que nós temos muito especificamente esculpidas peças de para você, 36 00:01:55,570 --> 00:01:59,046 de modo que realmente quando você sair e CS50 entrar no mundo real da programação 37 00:01:59,046 --> 00:02:00,920 e querem se envolver em qualquer número de projectos, 38 00:02:00,920 --> 00:02:03,253 você terá muito maior conforto baixar alguma fonte 39 00:02:03,253 --> 00:02:05,020 código, alguns de fonte aberta projetar na web, 40 00:02:05,020 --> 00:02:08,174 e ao mergulho e fazer mudanças que você vê o ajuste. 41 00:02:08,174 --> 00:02:11,340 Problema definir sete vai ser sobre fazer o seu próprio aplicativo baseado na web 42 00:02:11,340 --> 00:02:14,140 que leva entrada dinâmica e produz saída dinâmica na forma 43 00:02:14,140 --> 00:02:16,920 de um site etrade.com-like. 44 00:02:16,920 --> 00:02:20,800 E problema ajustou oito irá focar ainda outra língua conhecida como JavaScript. 45 00:02:20,800 --> 00:02:24,170 >> Enquanto isso, a final projeto está no horizonte. 46 00:02:24,170 --> 00:02:26,800 O chamado pré-proposta é devido uma semana a partir de hoje. 47 00:02:26,800 --> 00:02:29,930 Pré-proposal-- acordo com a especificação, que está em website-- do CS50 48 00:02:29,930 --> 00:02:33,260 é uma oportunidade muito casual para que você envie um e-mail bem sucinto 49 00:02:33,260 --> 00:02:35,170 para o seu companheiro de ensino apenas para informar-lhe 50 00:02:35,170 --> 00:02:38,250 ou a de que você está pensando, a usar ele ou ela como uma caixa de ressonância. 51 00:02:38,250 --> 00:02:40,980 E tem uma sanidade check-- se você está pensando 52 00:02:40,980 --> 00:02:43,210 sobre a mordedura de fora também muito ou talvez muito pouco, 53 00:02:43,210 --> 00:02:46,480 ou talvez você não tem idéia do que seja e querem se envolver em uma conversa. 54 00:02:46,480 --> 00:02:48,480 >> A partir daí é uma proposta e relatório de status, 55 00:02:48,480 --> 00:02:51,860 o chamado hackathon aqui em 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 projeto final implementação é então devido. 58 00:02:54,320 --> 00:02:59,290 E, em seguida, uma feira CS50 aqui, em Cambridge, bem como outro em New Haven. 59 00:02:59,290 --> 00:03:02,500 Portanto, a proposta, dê uma olhada o site para essas indicações. 60 00:03:02,500 --> 00:03:06,530 >> Mas o mais empolgante, também, é uma oportunidade de sujar as mãos, 61 00:03:06,530 --> 00:03:09,350 e suas mentes abertas para um todo monte de temas e ferramentas 62 00:03:09,350 --> 00:03:12,920 e técnicas que são acessórias ao núcleo syllabus do curso, 63 00:03:12,920 --> 00:03:14,810 mas, no entanto relacionados. 64 00:03:14,810 --> 00:03:18,400 E também pedras de piso maravilhoso para fazendo projetos finais muito legal que 65 00:03:18,400 --> 00:03:22,020 vão muito além de material de nós cobrimos formalmente em conjuntos de problemas ou na palestra. 66 00:03:22,020 --> 00:03:24,446 Então, vá para o site do CS50 para toda a lista de seminários. 67 00:03:24,446 --> 00:03:26,070 Se você não registrar, no entanto, isso é bom. 68 00:03:26,070 --> 00:03:29,860 Vá em frente e se inscrever ainda e nós o acompanhamento com um link de streaming ao vivo, 69 00:03:29,860 --> 00:03:31,844 o dia ea hora está no site. 70 00:03:31,844 --> 00:03:33,760 E tudo vai ficar gravado e colocado online 71 00:03:33,760 --> 00:03:35,800 se você não pode fazer a dias e horários específicos. 72 00:03:35,800 --> 00:03:39,380 >> Quanto ao que está à frente thereafter-- bem, é claro, há o hackathon CS50. 73 00:03:39,380 --> 00:03:43,560 Esta foto, recall, a partir de zero tomadas semana em torno 04:00 uma noite no ano passado. 74 00:03:43,560 --> 00:03:46,900 A feira CS50, que mais uma vez terá lugar em ambas as cidades. 75 00:03:46,900 --> 00:03:49,760 E então, apenas para plantar a semente, mesmo que ainda 76 00:03:49,760 --> 00:03:54,080 ter um mês mais à esquerda do semestre, se você gostaria de se juntar próprio ensino do CS50 77 00:03:54,080 --> 00:03:56,770 equipe, e você quer começar pensando em se tornar uma AC, 78 00:03:56,770 --> 00:03:59,550 ou ensino companheiro, sei que nós vamos começar a falar mais sobre isso 79 00:03:59,550 --> 00:04:00,630 no final deste semestre. 80 00:04:00,630 --> 00:04:03,470 Mas é retratado aqui a maior parte da equipe deste ano. 81 00:04:03,470 --> 00:04:06,950 >> E assim, PHP-- e eu estava tão triste na semana passada que [? Allyse?] Gentilmente 82 00:04:06,950 --> 00:04:09,370 foi para o esforço de chegar nós estes adereços maravilhosas 83 00:04:09,370 --> 00:04:11,720 que eu não acabam usando, por isso, realmente só parecia um pouco estúpido 84 00:04:11,720 --> 00:04:15,160 que tínhamos uma pá sentado aqui último dia de quarta-feira, e um pouco de colher. 85 00:04:15,160 --> 00:04:17,709 Mas esta foi a minha metafórica forma de tentar pintar 86 00:04:17,709 --> 00:04:21,600 a imagem de por que estamos em transição de C para uma linguagem como PHP. 87 00:04:21,600 --> 00:04:25,480 E o mesmo poderia ser dito de qualquer número de languages-- Java, Python, Ruby 88 00:04:25,480 --> 00:04:31,270 ou cachos de outros-, mas enquanto em C, por exemplo, escrever um programa em C 89 00:04:31,270 --> 00:04:34,050 pode normalmente ser como tomar uma colher como este 90 00:04:34,050 --> 00:04:36,770 e cavando um buraco no chão, na areia ou a sujeira. 91 00:04:36,770 --> 00:04:39,770 PHP permite que você tome muito mordidas maiores fora do problema, 92 00:04:39,770 --> 00:04:42,842 escrever muito menos código usando uma ferramenta muito menor, 93 00:04:42,842 --> 00:04:45,050 porque há muito mais funcionalidade remendado in. 94 00:04:45,050 --> 00:04:47,633 >> Agora, se nós realmente dramático, nós teríamos algo a pá 95 00:04:47,633 --> 00:04:48,760 aqui, mas que assim seja. 96 00:04:48,760 --> 00:04:51,370 Enquanto isso, a outra metáfora que surgiu com 97 00:04:51,370 --> 00:04:53,770 é, naturalmente, você poderia usar algo como uma chave 98 00:04:53,770 --> 00:04:56,610 a martelar em algo como um prego. 99 00:04:56,610 --> 00:04:58,980 Mas é claro que, se o direito ferramenta para uso vai 100 00:04:58,980 --> 00:05:01,360 a ser não tanto a linguagem chamada C-- 101 00:05:01,360 --> 00:05:03,590 e agora eu só irritado [? Sanders,?] Provavelmente, 102 00:05:03,590 --> 00:05:07,890 vamos corrigir isso tão later-- a ferramenta certa para usar muitas vezes 103 00:05:07,890 --> 00:05:09,640 não vai ser esta ferramenta de nível mais baixo. 104 00:05:09,640 --> 00:05:13,720 E, de fato, C não é uma linguagem que a maioria de vocês nunca vão usar, 105 00:05:13,720 --> 00:05:15,590 ou deveria necessariamente usar novamente. 106 00:05:15,590 --> 00:05:18,350 >> E, na verdade, um pouco secret-- a única vez 107 00:05:18,350 --> 00:05:23,160 Eu uso C mim é muito bonito entre Setembro e dezembro de cada queda 108 00:05:23,160 --> 00:05:23,870 semestre. 109 00:05:23,870 --> 00:05:25,790 E isso é porque nós usá-lo como uma oportunidade 110 00:05:25,790 --> 00:05:27,852 para ensinar os fundamentos de programação, 111 00:05:27,852 --> 00:05:29,810 e com ele computador fundamentos da ciência, dados 112 00:05:29,810 --> 00:05:32,435 estruturas, algoritmos e do como-- mas muito rapidamente vai você 113 00:05:32,435 --> 00:05:35,010 ver agora que a sintaxe e as ideias subjacentes C 114 00:05:35,010 --> 00:05:37,530 são tão maravilhosamente transferíveis para mais moderno 115 00:05:37,530 --> 00:05:41,130 linguagens de alto nível, como PHP e Python e Perl e Java 116 00:05:41,130 --> 00:05:46,750 e Objective-C--, na verdade, não tanto Objective-C-- mas Swift, estes mais recente 117 00:05:46,750 --> 00:05:50,010 línguas que muitos de vocês em seguida, brincar com você projeto final. 118 00:05:50,010 --> 00:05:55,070 >> Assim, sem mais delongas, vamos realmente usar o PHP para resolver alguns problemas. 119 00:05:55,070 --> 00:06:00,230 Lembre-se que no início, último semana, nós apenas utilizado CS50 IDE, 120 00:06:00,230 --> 00:06:02,990 nós escrevemos um programa pequeno dinky que apenas disse: "Olá, mundo". 121 00:06:02,990 --> 00:06:05,680 E então eu salvou em um arquivo chamado hello.php. 122 00:06:05,680 --> 00:06:07,280 E então eu corri este comando. 123 00:06:07,280 --> 00:06:08,080 >> E porque? 124 00:06:08,080 --> 00:06:09,900 Em Inglês, o que está acontecendo aqui? 125 00:06:09,900 --> 00:06:12,760 O que eu estava fazendo quando Corri esse comando? 126 00:06:12,760 --> 00:06:13,405 >> Sim? 127 00:06:13,405 --> 00:06:16,572 >> AUDIÊNCIA: Há alguma função PHP que lê o que está em-- entende isso. 128 00:06:16,572 --> 00:06:19,696 DAVID MALAN: Bom, há alguma função PHP-- e deixe-me ser mais específico, 129 00:06:19,696 --> 00:06:21,810 há um programa chamado PHP, a.k.a. 130 00:06:21,810 --> 00:06:25,872 Um intérprete, que entende o conteúdo de ola.php, 131 00:06:25,872 --> 00:06:27,830 e interpreta-lo de cima para baixo, da esquerda para a direita, 132 00:06:27,830 --> 00:06:29,590 e faz o que os comandos dizer. 133 00:06:29,590 --> 00:06:33,320 Os comandos ola.php, é claro, é apenas fonte code-- funções 134 00:06:33,320 --> 00:06:35,750 e variáveis ​​e loops e semelhantes, que nós mesmos 135 00:06:35,750 --> 00:06:37,460 começaram a escrever em PHP. 136 00:06:37,460 --> 00:06:40,240 >> Mas ao contrário de C, que é uma linguagem compilada, 137 00:06:40,240 --> 00:06:42,810 PHP você acabou de escrevê-lo e executá-lo. 138 00:06:42,810 --> 00:06:46,420 Você pular essa etapa intermediário de convertendo-a em zeros e uns, 139 00:06:46,420 --> 00:06:47,790 e, em seguida, executá-lo. 140 00:06:47,790 --> 00:06:50,510 E então o que é um lado positivo disso? 141 00:06:50,510 --> 00:06:52,690 Por que estamos pular o passo? 142 00:06:52,690 --> 00:06:55,238 Por que linguagens mais modernas tendem a ignorar este passo? 143 00:06:55,238 --> 00:06:58,880 144 00:06:58,880 --> 00:07:01,220 Qual foi o benefício? 145 00:07:01,220 --> 00:07:02,080 >> Ou apenas intuitivamente? 146 00:07:02,080 --> 00:07:04,200 Mesmo que não tenho PHP escrito muito antes, 147 00:07:04,200 --> 00:07:07,210 o que é benéfico sobre não compilar o código que você acha? 148 00:07:07,210 --> 00:07:08,520 Não? 149 00:07:08,520 --> 00:07:09,610 Não cometer? 150 00:07:09,610 --> 00:07:11,350 Coçando a cabeça? 151 00:07:11,350 --> 00:07:12,614 Sim. 152 00:07:12,614 --> 00:07:13,600 >> AUDIÊNCIA: mais dinâmico. 153 00:07:13,600 --> 00:07:14,683 >> DAVID MALAN: mais dinâmico? 154 00:07:14,683 --> 00:07:16,032 O que quer dizer? 155 00:07:16,032 --> 00:07:17,000 >> AUDIÊNCIA: [inaudível] 156 00:07:17,000 --> 00:07:20,349 157 00:07:20,349 --> 00:07:22,390 DAVID MALAN: OK, bom, então dependendo da entrada, 158 00:07:22,390 --> 00:07:23,470 você não tem que compilá-lo cada vez. 159 00:07:23,470 --> 00:07:24,990 E isso realmente é tão simples como o que isso-- 160 00:07:24,990 --> 00:07:26,990 é o ponto de continuar para compilar o código? 161 00:07:26,990 --> 00:07:29,480 Este é apenas um passo que é making-- este está exigindo, 162 00:07:29,480 --> 00:07:31,900 Para os últimos semanas, duas vezes como muitas etapas 163 00:07:31,900 --> 00:07:33,820 como apenas a execução de seu programa. 164 00:07:33,820 --> 00:07:36,940 Tem sido útil em ver que você veja algumas mensagens de erro e assim por diante, 165 00:07:36,940 --> 00:07:38,720 mas ainda é apenas um passo irritante. 166 00:07:38,720 --> 00:07:41,810 >> E para que os programadores perceberam ao longo do tempo, por que não nós 167 00:07:41,810 --> 00:07:45,327 começar a escrever línguas que não o fazem precisa que passo bastante mecânica, 168 00:07:45,327 --> 00:07:47,160 de modo que pode apenas escrever seu código e executá-lo. 169 00:07:47,160 --> 00:07:48,920 Mas o que era o preço que vimos que pagamos 170 00:07:48,920 --> 00:07:50,910 na semana passada, com um exemplo particular? 171 00:07:50,910 --> 00:07:51,650 Sim? 172 00:07:51,650 --> 00:07:52,370 >> Speed. 173 00:07:52,370 --> 00:07:54,690 Assim [? o que é?] intérpretes um pouco mais lento, 174 00:07:54,690 --> 00:07:57,330 em que zeros e uns estão agradável e rápido para um computador 175 00:07:57,330 --> 00:08:00,070 compreender, porque o Intel CPU, ou seja o que for, 176 00:08:00,070 --> 00:08:03,070 apenas entende o que está acontecendo com esses padrões de bits. 177 00:08:03,070 --> 00:08:05,370 Considerando que um intérprete é um programa que realmente 178 00:08:05,370 --> 00:08:07,980 tem de ler a fonte Ascii código que você escreveu, 179 00:08:07,980 --> 00:08:12,700 e convertê-lo, por assim dizer, ou descobrir como ele converte em última análise, 180 00:08:12,700 --> 00:08:13,525 a zeros e uns. 181 00:08:13,525 --> 00:08:15,650 Por isso, só tem um pouco pouco de um acerto de desempenho. 182 00:08:15,650 --> 00:08:16,858 Portanto, é um pouco de um trade-off. 183 00:08:16,858 --> 00:08:21,570 Agora, se fizermos isso aqui, deixe-me vá em frente e fazer um exemplo a seguir. 184 00:08:21,570 --> 00:08:26,610 Se eu entrar aqui, novo arquivo, eu vou para salvar este novo é hello.php. 185 00:08:26,610 --> 00:08:31,450 E agora eu estou indo para ir em frente e dizer: "print Olá mundo" - 186 00:08:31,450 --> 00:08:35,130 e lembro que eu possa usar impressão, eu não tem que usar print-F. E agora aqui em baixo, 187 00:08:35,130 --> 00:08:42,039 se eu fizer PHP de hello.php, eu huh-- não parecem ter interpretado isso. 188 00:08:42,039 --> 00:08:43,412 O que eu fiz errado? 189 00:08:43,412 --> 00:08:44,710 >> AUDIÊNCIA: As pulseiras anguladas. 190 00:08:44,710 --> 00:08:47,015 >> DAVID MALAN: Sim, você precisa que top ângulo do suporte para cima. 191 00:08:47,015 --> 00:08:49,390 Então é meio chato, mas você se acostumar com isso rapidamente. 192 00:08:49,390 --> 00:08:53,500 Se eu tenho que escrever código PHP, I geralmente precisa dizer ao programa, 193 00:08:53,500 --> 00:08:56,950 ou dizer o intérprete, hey PHP, vem aqui algum código PHP. 194 00:08:56,950 --> 00:09:00,440 E, em seguida, para uma boa medida, eu o faria fechar esta não com este, mas sim 195 00:09:00,440 --> 00:09:03,740 com apenas questão ângulo marca suporte, de modo que agora aqui em baixo, 196 00:09:03,740 --> 00:09:06,840 se eu executar isso de novo, agora Eu obter o resultado desejado. 197 00:09:06,840 --> 00:09:09,820 >> Agora vamos fazer uma pequena otimização, apenas para que você já viu isso antes. 198 00:09:09,820 --> 00:09:14,040 Este é tipo de chato que eu tem que executar PHP espaço hello.php, 199 00:09:14,040 --> 00:09:16,060 porque no passado eu poderia simplesmente escrever barra dot 200 00:09:16,060 --> 00:09:17,560 nome do programa, que é tipo de Nice. 201 00:09:17,560 --> 00:09:19,420 É uma espécie de uma melhor experiência do usuário. 202 00:09:19,420 --> 00:09:24,160 >> Então não é que você pode fazer isso em PHP com o I following-- 203 00:09:24,160 --> 00:09:28,780 pode usar este críptica encantamento no topo aqui, 204 00:09:28,780 --> 00:09:31,740 que é geralmente chamado de shebang, pelo que este é um símbolo afiada, 205 00:09:31,740 --> 00:09:34,270 por assim dizer, este é um estrondo ou um ponto de exclamação. 206 00:09:34,270 --> 00:09:38,490 E isso agora é o caminho para um programa em um sistema Linux típico que 207 00:09:38,490 --> 00:09:41,500 é chamado de meio ambiente, ou env. 208 00:09:41,500 --> 00:09:43,920 E este linha-- longa história uma linha de short-- apenas 209 00:09:43,920 --> 00:09:48,710 diz, hey computador, encontre o PHP intérprete para me no meio ambiente, 210 00:09:48,710 --> 00:09:50,610 encontrá-lo em sua memória, por assim dizer. 211 00:09:50,610 --> 00:09:54,130 >> E o que é bom agora, é que se eu descer aqui, 212 00:09:54,130 --> 00:09:57,750 Eu posso fazer barra dot Olá php ponto, ou-- hmm. 213 00:09:57,750 --> 00:09:59,000 Acesso negado. 214 00:09:59,000 --> 00:10:02,350 Bem, você vai ver ainda mais este com problema de definir sete, se você 215 00:10:02,350 --> 00:10:04,060 já não o fez, com permissões. 216 00:10:04,060 --> 00:10:06,510 Acontece que eu preciso para executar este comando 217 00:10:06,510 --> 00:10:10,779 chamado [? chamod?] para a mudança mode-- um mais x ola.php. 218 00:10:10,779 --> 00:10:13,820 Eu preciso [inaudível] um presente adicional passo que está dizendo a meu computador, 219 00:10:13,820 --> 00:10:16,400 tornar executável hello.php. 220 00:10:16,400 --> 00:10:21,310 E agora veja o que happens-- dot cortar hello.php, ele só é executado. 221 00:10:21,310 --> 00:10:23,310 Eu não precisa especificar o intérprete mais. 222 00:10:23,310 --> 00:10:26,680 E eu posso fazê-la ainda mais bonita, ainda, se eu mudar o nome desta coisa. 223 00:10:26,680 --> 00:10:30,570 Se eu mover hello.php apenas Hello-- assim notar no canto superior esquerdo, 224 00:10:30,570 --> 00:10:32,860 o nome do programa é na verdade apenas agora Olá. 225 00:10:32,860 --> 00:10:37,300 Agora eu posso fazer parecer que um programa C, mesmo que ele é escrito em PHP-- 226 00:10:37,300 --> 00:10:39,210 ou francamente qualquer número de outras línguas. 227 00:10:39,210 --> 00:10:41,480 >> Assim melhoramento marginal, nenhuma diferença funcional. 228 00:10:41,480 --> 00:10:44,460 Mas é apenas um pouco de curiosidade agora, para que você possa escrever programas 229 00:10:44,460 --> 00:10:48,989 em qualquer idioma, eo usuário não faz tem que saber ou se importar o que aqueles são. 230 00:10:48,989 --> 00:10:51,030 Bem, vamos olhar para um mais exemplo convincente agora 231 00:10:51,030 --> 00:10:52,850 que eu chicoteado até com antecedência. 232 00:10:52,850 --> 00:10:54,955 E isso é chamado quote.php. 233 00:10:54,955 --> 00:10:56,740 E está disponível online. 234 00:10:56,740 --> 00:11:00,299 E note que é muito short-- mas é um programa de linha de comando que é 235 00:11:00,299 --> 00:11:02,840 vai olhar para cima os preços das ações para mim, o que está realmente acontecendo 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ão vamos ver o que estou fazendo. 238 00:11:05,396 --> 00:11:08,640 No topo Eu tenho o aberto suporte de ponto de interrogação PHP. 239 00:11:08,640 --> 00:11:13,372 Então eu tenho essa linha, pelo que eu sou exigindo um arquivo chamado functions.php-- 240 00:11:13,372 --> 00:11:15,080 vamos ver mais sobre isso em um bit, 241 00:11:15,080 --> 00:11:17,340 mas isto é como C do versão do sharp incluem, 242 00:11:17,340 --> 00:11:19,090 onde você quer ir incluir outro arquivo. 243 00:11:19,090 --> 00:11:23,720 PHP chama-lhe exigem, embora também tem uma função de incluir. 244 00:11:23,720 --> 00:11:26,861 E verifica-se que é function.php apenas algo que eu escrevi antes da aula. 245 00:11:26,861 --> 00:11:29,860 Eu colocá-lo no mesmo diretório, por causa Eu queria fatorar algum código 246 00:11:29,860 --> 00:11:31,800 que pode querer usar em outros lugares. 247 00:11:31,800 --> 00:11:34,560 >> Enquanto isso, você pode, provavelmente, inferir o que está acontecendo aqui. 248 00:11:34,560 --> 00:11:39,200 Este é um pouco diferente do C-- mas o que quero dizer com assegurar o uso adequado? 249 00:11:39,200 --> 00:11:41,180 Traduzir esta mais tecnicamente. 250 00:11:41,180 --> 00:11:45,950 Em que circunstâncias eu sou sair do programa, ou sair? 251 00:11:45,950 --> 00:11:47,074 Sim? 252 00:11:47,074 --> 00:11:47,990 >> AUDIÊNCIA: Quando você não tem dois argumentos de linha de comando. 253 00:11:47,990 --> 00:11:49,480 >> DAVID MALAN: Quando eu não tenho para comandar os argumentos da linha. 254 00:11:49,480 --> 00:11:52,396 E lembre-se que um dos argumentos é o próprio nome do programa. 255 00:11:52,396 --> 00:11:55,340 E a segunda vai ser outra palavra que eu escreva depois do alerta. 256 00:11:55,340 --> 00:11:57,460 Então, tal como C, este é a minha maneira de verificar, 257 00:11:57,460 --> 00:12:00,022 se o usuário cooperar e executar o programa como eu pretendia? 258 00:12:00,022 --> 00:12:01,730 Agora, há algo um pouco diferente 259 00:12:01,730 --> 00:12:04,020 com C-- antes de tudo, ter este sinal de dólar, 260 00:12:04,020 --> 00:12:07,710 eo que faz um dólar assinar denotar em PHP? 261 00:12:07,710 --> 00:12:08,440 Apenas uma variável. 262 00:12:08,440 --> 00:12:11,731 Isso é tudo-- apenas uma variável seguido por o que você quiser chamá-lo de fato. 263 00:12:11,731 --> 00:12:14,000 Observe que há algo faltando meu programa PHP, 264 00:12:14,000 --> 00:12:18,210 exatamente como ele estava faltando última semana, contra C, o que é o quê? 265 00:12:18,210 --> 00:12:21,620 >> A tipos, mas também algo mais. 266 00:12:21,620 --> 00:12:26,409 Não há algo function-- função principal. 267 00:12:26,409 --> 00:12:27,450 Não há nenhuma função principal. 268 00:12:27,450 --> 00:12:29,680 Você acabou de começar a escrever seu código sem ter 269 00:12:29,680 --> 00:12:32,790 se preocupar com um bastante arbitrária convenção de nomear alguns padrão 270 00:12:32,790 --> 00:12:33,880 função principal. 271 00:12:33,880 --> 00:12:36,720 Então arg C é realmente apenas uma variável global 272 00:12:36,720 --> 00:12:39,049 que o intérprete faz disponível para mim. 273 00:12:39,049 --> 00:12:40,090 Agora, isso é interessante. 274 00:12:40,090 --> 00:12:41,140 Então, olhar para cima stuff. 275 00:12:41,140 --> 00:12:43,370 Estoque sinal de dólar é sobre a à esquerda, que é a minha variável. 276 00:12:43,370 --> 00:12:45,120 No lado direito, há, aparentemente, 277 00:12:45,120 --> 00:12:50,270 uma função em PHP chamada pesquisa que Eu estou passando minha última linha de comando 278 00:12:50,270 --> 00:12:51,902 argumento a-- qualquer que seja a palavra é. 279 00:12:51,902 --> 00:12:53,610 E vamos ver como este funciona em um momento. 280 00:12:53,610 --> 00:12:55,380 >> E então, finalmente eu estou relatando o preço. 281 00:12:55,380 --> 00:12:58,650 Estou imprimindo um partes de tal e tal. 282 00:12:58,650 --> 00:13:02,082 E lembre-se, esta é a em forma PHP-- uma maneira em PHP-- 283 00:13:02,082 --> 00:13:04,290 onde você não tem que fazer o cifrão S anymore. 284 00:13:04,290 --> 00:13:06,782 Você pode apenas usar chaves e tampar em alguma variável. 285 00:13:06,782 --> 00:13:09,240 Você não tem que se preocupar com usando printf da mesma maneira. 286 00:13:09,240 --> 00:13:13,530 >> E como um aparte, quando você coloca uma variável dentro de aspas duplas como este, 287 00:13:13,530 --> 00:13:17,370 você estiver usando uma técnica de fantasia chamado de interpolação variável. 288 00:13:17,370 --> 00:13:20,380 Significa apenas que ligar a variável aqui. 289 00:13:20,380 --> 00:13:23,760 E como um aparte, alguns de vocês que vêm programação de outros fundos, 290 00:13:23,760 --> 00:13:26,960 você não pode usar aspas simples cordas ao redor de fazer isso. 291 00:13:26,960 --> 00:13:30,290 Você deve usar aspas duplas para interpolação variável para trabalhar. 292 00:13:30,290 --> 00:13:32,740 Caso contrário, você literalmente ver aquelas chaves. 293 00:13:32,740 --> 00:13:34,500 >> Então, finalmente, vamos em frente e executar este. 294 00:13:34,500 --> 00:13:36,690 Deixe-me fazer meu terminal um pouco maior. 295 00:13:36,690 --> 00:13:41,940 Deixe-me ir em frente e correr dentro de meu diretório cotação. 296 00:13:41,940 --> 00:13:46,950 [? CDsource?] [? SOU ?] [? Citação?] Citação PHP dot PHP, 297 00:13:46,950 --> 00:13:50,290 e eu vou procurar alguma coisa como GOOG, que é seu símbolo ticker, 298 00:13:50,290 --> 00:13:55,510 e uma ação do seu novo nome, Alfabeto Inc, custa US $ 717, a partir de hoje. 299 00:13:55,510 --> 00:13:58,680 Tudo bem, se quisermos executar este novamente, qualquer um 300 00:13:58,680 --> 00:14:02,600 ter outro ticker estoque eles querem olhar para cima? 301 00:14:02,600 --> 00:14:06,770 >> Microsoft eu acho que é este, MSFT-- $ 53. 302 00:14:06,770 --> 00:14:09,720 Eu acho que o Yahoo talvez seja isso. 303 00:14:09,720 --> 00:14:12,130 E o Facebook é que. 304 00:14:12,130 --> 00:14:13,740 >> Então, o que é este programa está fazendo? 305 00:14:13,740 --> 00:14:16,306 A magia parece estar embutido em que a função de pesquisa. 306 00:14:16,306 --> 00:14:17,430 Então, vamos dar uma olhada rápida. 307 00:14:17,430 --> 00:14:21,815 >> Acontece que não vem com PHP, está em functions.php. 308 00:14:21,815 --> 00:14:23,690 E nós não vamos passar por esta em grande detalhe, 309 00:14:23,690 --> 00:14:28,040 de notar a palavra-chave aqui é que na linha de seis functions.php-- 310 00:14:28,040 --> 00:14:29,440 Eu literalmente dizer função. 311 00:14:29,440 --> 00:14:31,050 Eu especificar o nome da minha função. 312 00:14:31,050 --> 00:14:34,330 Eu, então, especificar qualquer argumentos ou parâmetros, 313 00:14:34,330 --> 00:14:36,480 Eu quero que a função de take-- nenhum tipo. 314 00:14:36,480 --> 00:14:37,580 E então eu implementá-lo. 315 00:14:37,580 --> 00:14:39,240 >> E eu vou acenar minha mão na implementação, 316 00:14:39,240 --> 00:14:42,115 uma vez que é direito bastante avançado agora, mas vamos vê-lo novamente, na verdade, 317 00:14:42,115 --> 00:14:44,700 em uma semana no conjunto de problemas de sete. 318 00:14:44,700 --> 00:14:47,490 Mas eu posso limpar isso também. 319 00:14:47,490 --> 00:14:49,590 Também incluído no código de hoje uma versão 320 00:14:49,590 --> 00:14:52,340 de citações, que não tem arquivo dot PHP. 321 00:14:52,340 --> 00:14:57,270 Porque o que é presumivelmente nas parte superior do programa chamado apenas 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 diz encontrar PHP e, em seguida, executá-lo em meu código aqui. 324 00:15:04,590 --> 00:15:07,360 >> Tudo bem, então que traz nós para onde paramos 325 00:15:07,360 --> 00:15:09,560 última tempo-- embora com alguns exemplos mais avançados. 326 00:15:09,560 --> 00:15:13,980 Quaisquer perguntas até agora sobre PHP ou o que estamos fazendo? 327 00:15:13,980 --> 00:15:15,570 Não-- tudo bem. 328 00:15:15,570 --> 00:15:16,180 Sim? 329 00:15:16,180 --> 00:15:19,610 >> AUDIÊNCIA: Inside the Arquivos HTML, fazer vocę-- 330 00:15:19,610 --> 00:15:22,226 [? Você ?] [? basta chamá-lo?] um [inaudível] arquivo PHP? 331 00:15:22,226 --> 00:15:23,350 DAVID MALAN: Boa pergunta. 332 00:15:23,350 --> 00:15:26,070 Em um contexto web, o que nós somos literalmente sobre a transição para, 333 00:15:26,070 --> 00:15:28,028 você não usar o chamado shebang na parte superior, 334 00:15:28,028 --> 00:15:31,980 porque o server-- web, muitas vezes um programa chamado Apache ou Microsoft 335 00:15:31,980 --> 00:15:37,470 IIS, Internet Information Server, ou qualquer número de outro software de servidor web, 336 00:15:37,470 --> 00:15:40,636 sabe que quando vê um ficheiro de ponto de PHP, que ele 337 00:15:40,636 --> 00:15:42,010 deve executar o intérprete nele. 338 00:15:42,010 --> 00:15:43,468 Ele não olha para que a primeira linha. 339 00:15:43,468 --> 00:15:45,580 Portanto, este primeiro truque linha é apenas quando você está 340 00:15:45,580 --> 00:15:48,330 escrevendo linha de comando programs-- que não vamos fazer de super muitas vezes, 341 00:15:48,330 --> 00:15:52,510 mas é a nossa forma de colmatar nossos exemplos de C para agora o nosso PHP. 342 00:15:52,510 --> 00:16:00,680 >> Então vamos realmente colmatar este mundo do mundo da linha de comando para a web 343 00:16:00,680 --> 00:16:02,230 fazendo o seguinte. 344 00:16:02,230 --> 00:16:05,090 Deixe-me ir em frente e desenhar aqui só por um momento. 345 00:16:05,090 --> 00:16:09,940 Então, se temos um servidor web, ou melhor, se tivermos meu laptop aqui, 346 00:16:09,940 --> 00:16:11,280 que eu vou chamar assim. 347 00:16:11,280 --> 00:16:14,250 E aqui temos a internet de alguma forma. 348 00:16:14,250 --> 00:16:18,210 E então para cá, temos um servidor em um building-- 349 00:16:18,210 --> 00:16:20,760 esta é a forma como a Internet works-- e aqui 350 00:16:20,760 --> 00:16:23,120 é um servidor com algumas luzes talvez. 351 00:16:23,120 --> 00:16:27,530 O que está realmente acontecendo entre estas duas ligações? 352 00:16:27,530 --> 00:16:29,240 >> Portanto, neste edifício é um servidor web. 353 00:16:29,240 --> 00:16:31,420 Isso é apenas um computador que está executando algum operacional 354 00:16:31,420 --> 00:16:34,561 system-- talvez o software gratuito chamado Apache, que CS50 IDE está em execução. 355 00:16:34,561 --> 00:16:36,310 Então você pode realmente acha deste edifício 356 00:16:36,310 --> 00:16:38,579 como sendo a construção em que CSt0 IDE é armazenado. 357 00:16:38,579 --> 00:16:40,870 É aí que todos vocês têm contas, onde todos vocês 358 00:16:40,870 --> 00:16:43,130 ter seu próprio servidor web execução, todos vocês 359 00:16:43,130 --> 00:16:45,730 têm suas próprias URLs únicas, como nós começamos a discutir, 360 00:16:45,730 --> 00:16:47,280 e você verá mais em P. definir seis. 361 00:16:47,280 --> 00:16:49,450 >> Aqui está o meu laptop em algum lugar outro lugar na internet. 362 00:16:49,450 --> 00:16:54,550 E então quando eu visitar uma URL que pertence para mim, que o tráfego de internet vai 363 00:16:54,550 --> 00:16:58,360 para o servidor, o servidor de receber um HTTP request-- 364 00:16:58,360 --> 00:17:02,900 como um obter index.html e é responder a essa página web. 365 00:17:02,900 --> 00:17:04,280 Então esse é o paradigma geral. 366 00:17:04,280 --> 00:17:07,089 Considerando tudo para cima até agora, hoje, tudo 367 00:17:07,089 --> 00:17:09,660 foi acontecendo apenas no limites deste edifício. 368 00:17:09,660 --> 00:17:12,910 Eu estava usando o meu laptop, mas Eu estava ligado a CS50 IDE, 369 00:17:12,910 --> 00:17:17,369 portanto, todos esses programas que eu estava correndo estava dentro desse servidor, em si. 370 00:17:17,369 --> 00:17:22,660 >> Mas agora, vamos começar a reutilização de PHP para escrever alguns programas reais que 371 00:17:22,660 --> 00:17:24,230 são servidos por um servidor web. 372 00:17:24,230 --> 00:17:30,320 E para fazer isso, eu estou indo para ir em um monte de exemplos 373 00:17:30,320 --> 00:17:33,710 que introduzir esta idéia aqui. 374 00:17:33,710 --> 00:17:38,500 Portanto, esta é uma espécie de uma maneira extravagante de descrevendo um paradigma de programação. 375 00:17:38,500 --> 00:17:41,540 >> E, de fato, como você sair CS50 ou trabalhar em projectos finais, 376 00:17:41,540 --> 00:17:43,520 ou tomar alguns seguem na classe, você vai começar 377 00:17:43,520 --> 00:17:45,740 para ver que o mundo-- especialmente tendo crescido 378 00:17:45,740 --> 00:17:48,300 com linguagens como C que são super baixo level-- 379 00:17:48,300 --> 00:17:51,290 perceber que não há melhor formas de software escrito. 380 00:17:51,290 --> 00:17:53,290 Há certa padrões que você pode seguir, 381 00:17:53,290 --> 00:17:57,640 certas formas de organizar seus arquivos e formas de nomear suas funções, 382 00:17:57,640 --> 00:18:00,300 de modo que a longa história curta, o mundo chegou-se 383 00:18:00,300 --> 00:18:04,340 com um monte de siglas e nomes para as formas de programação. 384 00:18:04,340 --> 00:18:06,260 Estes são apenas técnicas que você pode usar. 385 00:18:06,260 --> 00:18:09,660 >> E um deles é chamado MVC, para Model View Controller. 386 00:18:09,660 --> 00:18:12,270 E este é apenas, para agora, uma excessivamente complicado 387 00:18:12,270 --> 00:18:18,960 maneira de dizer como você deve colocar para fora um site baseado em PHP, no nosso caso. 388 00:18:18,960 --> 00:18:22,140 Como você organizar seus arquivos, Como você organiza sua lógica, 389 00:18:22,140 --> 00:18:26,220 de uma forma que torna mais fácil escrever sites mais complicados? 390 00:18:26,220 --> 00:18:28,550 E, de fato, vamos rapidamente chegar lá com p-set sete. 391 00:18:28,550 --> 00:18:32,020 >> Assim, no mundo de MVC, você está indo para ver que o nosso código pode geralmente 392 00:18:32,020 --> 00:18:38,290 ser caracterizado como qualquer 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 cérebros de seu programa, 395 00:18:42,074 --> 00:18:44,100 é onde toda a lógica interessante acontece. 396 00:18:44,100 --> 00:18:46,110 Então tudo o que temos sido escrevendo, até agora, em sala de aula, 397 00:18:46,110 --> 00:18:48,210 é tipo como controlador code-- ele está controlando 398 00:18:48,210 --> 00:18:50,585 seu programa, seus loops, o seu condições, as funções 399 00:18:50,585 --> 00:18:52,100 e variáveis ​​e tudo isso. 400 00:18:52,100 --> 00:18:56,160 >> Pontos de vista, agora, vão ser um pouco mais óbvia do mundo da web. 401 00:18:56,160 --> 00:18:59,360 A vista é a estética do seu site. 402 00:18:59,360 --> 00:19:04,080 É o que o usuário sees-- as imagens, as tabelas HTML, as tags HTML, e todos os 403 00:19:04,080 --> 00:19:08,220 de que, todo o estético fofo coisas que não é tão difícil de escrever, 404 00:19:08,220 --> 00:19:11,380 mas é apenas o que você está gerando, é a visão chamada, a estética. 405 00:19:11,380 --> 00:19:13,880 E modelo, em última análise, vai a base de dados que ser stuff-- 406 00:19:13,880 --> 00:19:16,510 vamos começar a mergulhar em tudo a mais nesta quarta-feira. 407 00:19:16,510 --> 00:19:19,740 Então controlador é a lógica, vista é o material estético, 408 00:19:19,740 --> 00:19:23,500 e modelo vai ser onde nós armazenamos nossos dados reais. 409 00:19:23,500 --> 00:19:26,410 >> Então, vamos olhar para isso mais concretamente com o seguinte exemplo. 410 00:19:26,410 --> 00:19:34,700 Eu estou indo para ir em meu diretório aqui de fonte de hoje code-- todos os quais 411 00:19:34,700 --> 00:19:35,770 está disponível online. 412 00:19:35,770 --> 00:19:37,800 E eu estou indo para ir para a versão zero. 413 00:19:37,800 --> 00:19:41,500 E aqui é-- vamos chamá-lo a versão zero do site do CS50. 414 00:19:41,500 --> 00:19:43,010 Não há muito aqui em tudo. 415 00:19:43,010 --> 00:19:46,810 É uma página web muito simples que é provavelmente usando o HTML tags-- apenas 416 00:19:46,810 --> 00:19:48,970 acho que a partir de exemplos do passado? 417 00:19:48,970 --> 00:19:49,890 >> O que é isso? 418 00:19:49,890 --> 00:19:53,920 H1-- provavelmente para esse grande negrito título, que em cima do logotipo, CS50. 419 00:19:53,920 --> 00:19:55,080 E o que mais está em jogo? 420 00:19:55,080 --> 00:19:55,799 Sim? 421 00:19:55,799 --> 00:19:56,840 AUDIÊNCIA: Lista não ordenada. 422 00:19:56,840 --> 00:19:59,990 DAVID MALAN: lista-- não ordenada de modo que o UL tag e talvez um par de tags de LI. 423 00:19:59,990 --> 00:20:01,840 E se você não se lembra destes, honestamente não importa. 424 00:20:01,840 --> 00:20:04,170 Estes são uma espécie de fofo detalhes de implementação do HTML 425 00:20:04,170 --> 00:20:06,378 que você rapidamente olhar para cima e você está de volta em seu caminho. 426 00:20:06,378 --> 00:20:10,040 Vamos concentrar-se mais sobre a programação idéias que são as peças mais suculentas. 427 00:20:10,040 --> 00:20:12,890 >> Então vamos dar uma rápida olhar para o HTML-- e de fato 428 00:20:12,890 --> 00:20:16,880 se eu abrir a fonte vista aqui, sim, Isso é exatamente o que está acontecendo aqui. 429 00:20:16,880 --> 00:20:18,440 Há uma 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ão eu peguei emprestado o URL do currículo real aqui. 432 00:20:24,470 --> 00:20:27,570 >> E, em seguida, no lectures.php é aparentemente 433 00:20:27,570 --> 00:20:31,640 outra página gerados dinamicamente que vai ter, vamos see-- ah, 434 00:20:31,640 --> 00:20:33,170 as duas primeiras semanas de aula. 435 00:20:33,170 --> 00:20:36,600 Assim semana zero e uma semana, vamos olhar para isto-- se eu ver fonte da página, 436 00:20:36,600 --> 00:20:38,120 Também super simples. 437 00:20:38,120 --> 00:20:42,430 Estes estão levando a duas páginas chamado week0.php, e week1.php. 438 00:20:42,430 --> 00:20:44,040 Por isso, considero agora que está acontecendo. 439 00:20:44,040 --> 00:20:50,630 >> Quando clico em week0.php, meu laptop está a fazer um pedido 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á recebendo o envelope virtual. 442 00:20:58,110 --> 00:21:01,040 É ver uma mensagem como, obter week0.php. 443 00:21:01,040 --> 00:21:05,060 Em seguida, é interpretar o arquivo, topo para baixo, da esquerda para direito-- o arquivo 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ão, dentro desse arquivo, week0.php, deve ser 446 00:21:10,510 --> 00:21:15,410 a lógica do controlador que está a gerar este HTML, e em breve veremos isso. 447 00:21:15,410 --> 00:21:19,340 >> Mas, por agora, deixe-me clique em semanas zero, e agora nós temos quarta-feira e sexta-feira, 448 00:21:19,340 --> 00:21:25,260 e agora temos os slides lentamente a partir da semana zero. 449 00:21:25,260 --> 00:21:27,400 E você pode se lembrar isto de caminho de volta quando. 450 00:21:27,400 --> 00:21:29,340 Então, isso é tudo que este site está fazendo. 451 00:21:29,340 --> 00:21:31,120 >> Então, vamos considerar como ele está fazendo isso. 452 00:21:31,120 --> 00:21:34,290 Eu vou voltar para o código-fonte aqui, em 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 No topo deste arquivo é um monte de comentários. 455 00:21:38,910 --> 00:21:43,000 E então, no meio deste arquivo, ele Acontece que, há nenhum código PHP que seja. 456 00:21:43,000 --> 00:21:47,380 Porque se você não tem qualquer um dos suporte aberto Tag ponto de interrogação PHP, 457 00:21:47,380 --> 00:21:49,180 você está livre para apenas colocar HTML. 458 00:21:49,180 --> 00:21:51,480 >> Uma vez que o PHP intérprete é suposto fazer, 459 00:21:51,480 --> 00:21:53,938 é quando se lê esta file-- cima para baixo, da esquerda para direita-- 460 00:21:53,938 --> 00:21:59,100 ele só interpreta código que vê entre esses colchetes ponto de interrogação. 461 00:21:59,100 --> 00:22:02,380 E qualquer outra coisa que não faz reconhecer como PHP, ele apenas cospe para fora. 462 00:22:02,380 --> 00:22:05,080 E HTML está entre as coisas ela só vai cuspir. 463 00:22:05,080 --> 00:22:09,090 >> Portanto, este arquivo pode ter sido chamado index.html, 464 00:22:09,090 --> 00:22:11,690 mas eu estou nomeando tudo dot PHP como um trampolim. 465 00:22:11,690 --> 00:22:15,960 Lectures.php-- semelhante underwhelming, é apenas um pouco de HTML. 466 00:22:15,960 --> 00:22:19,840 Week0.php, semelhante apenas algumas HTML. 467 00:22:19,840 --> 00:22:22,300 >> Mas agora vamos colocar no chapéu engenharia proverbial, 468 00:22:22,300 --> 00:22:24,400 e considerar como podemos melhorar isso. 469 00:22:24,400 --> 00:22:28,541 Não é difícil fazer isso, mas eu meio de transformou em copiar e colar. 470 00:22:28,541 --> 00:22:31,540 E, de fato, se eu fizer semana dois, você sabe o que eu provavelmente vou fazer? 471 00:22:31,540 --> 00:22:34,940 Eu estou indo para ir para week1.php, eu sou indo para realçar tudo. 472 00:22:34,940 --> 00:22:39,110 Eu estou indo para copiá-lo, colá-lo em um novo arquivo chamado week2.php, 473 00:22:39,110 --> 00:22:42,440 ajustar algumas URLs, e estar no meu caminho. 474 00:22:42,440 --> 00:22:45,240 >> Assim, com base no que nós temos visto em C já, 475 00:22:45,240 --> 00:22:46,860 esta não se sente bem, eu espero. 476 00:22:46,860 --> 00:22:49,610 Copiar, colar raramente a solução certa. 477 00:22:49,610 --> 00:22:51,429 Então o que podemos começar fazer para melhorar isso? 478 00:22:51,429 --> 00:22:53,345 Onde estão as oportunidades para melhor design? 479 00:22:53,345 --> 00:22:56,890 480 00:22:56,890 --> 00:22:58,760 >> Até o momento eu chegar oito semanas, ele vai 481 00:22:58,760 --> 00:23:00,910 para ser realmente irritante se eu quiser mudar 482 00:23:00,910 --> 00:23:03,930 o tipo de letra de cada um dos minhas páginas, ou se eu quiser 483 00:23:03,930 --> 00:23:06,522 para mudar a estrutura do layout. 484 00:23:06,522 --> 00:23:08,396 Então, onde está a oportunidade para melhor design? 485 00:23:08,396 --> 00:23:11,990 486 00:23:11,990 --> 00:23:15,160 Bem, vamos considerar o que é compartilhado entre todos esses arquivos. 487 00:23:15,160 --> 00:23:21,696 >> Aqui está uma semana, aqui está semana zero, aqui está lectures.php, 488 00:23:21,696 --> 00:23:25,790 aqui está index.php-- o que é o mesmo e o que é diferente, a grosso modo, 489 00:23:25,790 --> 00:23:26,760 em cada um destes ficheiros? 490 00:23:26,760 --> 00:23:30,560 491 00:23:30,560 --> 00:23:32,060 Sim? 492 00:23:32,060 --> 00:23:34,560 >> AUDIÊNCIA: [inaudível] 493 00:23:34,560 --> 00:23:41,244 494 00:23:41,244 --> 00:23:42,160 DAVID MALAN: OK, bom. 495 00:23:42,160 --> 00:23:46,115 Portanto, não há um padrão, com certeza, em que cada vez que eu escolher palestra I, 496 00:23:46,115 --> 00:23:48,250 Eu deveria estar gerando um A página que olha muito similar. 497 00:23:48,250 --> 00:23:50,375 E assim talvez eu possa alavancar o fato de que realmente, 498 00:23:50,375 --> 00:23:53,060 deliberadamente numericamente indexado nosso lectures-- 499 00:23:53,060 --> 00:23:55,290 se eu posso colocar ainda mais palavras a sua resposta. 500 00:23:55,290 --> 00:23:59,984 E qual é a única coisa que, realmente, que está mudando entre a semana um-- 501 00:23:59,984 --> 00:24:02,400 e deixe-me rolar para baixo por isso é aproximadamente na mesma Place-- 502 00:24:02,400 --> 00:24:05,480 então aqui está semana zero, aproximadamente na parte superior. 503 00:24:05,480 --> 00:24:12,370 Aqui está uma semana, semana zero, uma semana, semana zero. 504 00:24:12,370 --> 00:24:14,370 OK, literalmente, se você sabe nenhum programa que seja, 505 00:24:14,370 --> 00:24:16,286 isto é agora apenas como um jogo de correspondência padrão. 506 00:24:16,286 --> 00:24:17,200 Então, o que é diferente? 507 00:24:17,200 --> 00:24:18,765 Sim? 508 00:24:18,765 --> 00:24:19,777 >> AUDIÊNCIA: [inaudível] 509 00:24:19,777 --> 00:24:22,360 DAVID MALAN: Bom, então o título está mudando, ainda que levemente. 510 00:24:22,360 --> 00:24:24,010 Zero vai, claro, para uma. 511 00:24:24,010 --> 00:24:25,570 A mesma coisa está acontecendo na tag H1. 512 00:24:25,570 --> 00:24:28,790 E nós não bastante vê-lo tão facilmente, porque as URLs são um pouco longo. 513 00:24:28,790 --> 00:24:30,670 Mas essas URLs estão mudando um pouco. 514 00:24:30,670 --> 00:24:34,490 >> Mas o que não está mudando é, ouso dizer, a maior parte do conteúdo do página-- 515 00:24:34,490 --> 00:24:38,530 a tag HTML é a mesma, a cabeça é o mesmo, o título é quase a mesma, 516 00:24:38,530 --> 00:24:40,659 o corpo é a mesma, e quase tudo o resto 517 00:24:40,659 --> 00:24:42,450 é o mesmo, exceto para esses pequenos ajustes. 518 00:24:42,450 --> 00:24:45,310 Então, como podemos ir sobre factoring alguns dos isso? 519 00:24:45,310 --> 00:24:48,740 >> Bem, deixe-me propor exatamente que na próxima versão. 520 00:24:48,740 --> 00:24:53,890 Então, aqui na versão um, tenho a exata mesmos arquivos, além de um par de outros. 521 00:24:53,890 --> 00:24:59,730 Aqui está index.php-- e mesmo se você nunca viu antes de PHP, 522 00:24:59,730 --> 00:25:05,511 O que estou fazendo provavelmente para resolver este problema-- com base no que você vê aqui? 523 00:25:05,511 --> 00:25:11,300 524 00:25:11,300 --> 00:25:12,760 Sim, é que um ligeiro compromisso? 525 00:25:12,760 --> 00:25:13,450 Não? 526 00:25:13,450 --> 00:25:16,020 Sim, vá em frente. 527 00:25:16,020 --> 00:25:17,380 >> AUDIÊNCIA: [inaudível] 528 00:25:17,380 --> 00:25:18,380 >> DAVID MALAN: Yep. 529 00:25:18,380 --> 00:25:20,380 >> AUDIÊNCIA: [inaudível] 530 00:25:20,380 --> 00:25:26,090 531 00:25:26,090 --> 00:25:28,669 >> DAVID MALAN: Eu preciso de você para falar um pouco mais alto. 532 00:25:28,669 --> 00:25:31,084 >> AUDIÊNCIA: [inaudível] 533 00:25:31,084 --> 00:25:35,744 534 00:25:35,744 --> 00:25:36,660 DAVID MALAN: OK, bom. 535 00:25:36,660 --> 00:25:38,620 E eu era penso-- difícil de ouvir, mas eu vocę-- 536 00:25:38,620 --> 00:25:42,690 acho que o que você está querendo dizer é que as marcas que eram comuns em cima, 537 00:25:42,690 --> 00:25:47,710 e as marcas que eram comuns na fundo, já foram tidos fora, 538 00:25:47,710 --> 00:25:51,140 ou relegado para que arquivos? 539 00:25:51,140 --> 00:25:53,476 Header.php e footer.php-- e vamos 540 00:25:53,476 --> 00:25:55,600 para fazer alguns ajustes para abordar a preocupação que você acabou 541 00:25:55,600 --> 00:25:59,370 levantadas sobre a mudança de números, para exemplo, se eu ouvi você corretamente. 542 00:25:59,370 --> 00:26:02,060 >> Mas que parece ser a essência do mesmo. 543 00:26:02,060 --> 00:26:04,820 Se havia uma enorme quantidade de redundância no topo da página, 544 00:26:04,820 --> 00:26:06,736 e uma enorme quantidade de redundância na parte inferior, 545 00:26:06,736 --> 00:26:09,280 vamos literalmente apenas destaque e cortar esse conteúdo para fora, 546 00:26:09,280 --> 00:26:13,270 colocá-lo em um file-- separado apenas como a idéia de CSS, onde nós fatoramos 547 00:26:13,270 --> 00:26:16,710 estética muito semelhantes, colocados lo em um arquivo PHP ponto separado, 548 00:26:16,710 --> 00:26:20,340 usar a exigir que mechanism-- é como C sharp que include-- 549 00:26:20,340 --> 00:26:23,570 é essencialmente o mesmo que dizer ir agarrar o conteúdo de header.php, 550 00:26:23,570 --> 00:26:25,370 e copiar e colá-los aqui. 551 00:26:25,370 --> 00:26:29,490 >> Mas o que isto significa é que agora em index.php, eu tenho essas duas linhas. 552 00:26:29,490 --> 00:26:32,130 Em lectures.php, eu também ter essas duas linhas. 553 00:26:32,130 --> 00:26:35,230 Em week0.php, eu também ter essas duas linhas. 554 00:26:35,230 --> 00:26:38,380 >> Então, agora, se eu quiser mudar o título de todas as minhas páginas, 555 00:26:38,380 --> 00:26:40,530 ou eu quero mudar o estrutura fundamental, 556 00:26:40,530 --> 00:26:44,380 Eu posso mudar isso agora em um só lugar, ou dois places-- cabeçalho e rodapé, 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 olhar um pouco mais enigmática, certo? 559 00:26:47,970 --> 00:26:53,590 Mas se você pensar sobre o que a página doing-- é se eu estou pedindo week0.php, 560 00:26:53,590 --> 00:26:59,880 assim como no desenho sobre aqui-- quando week0.php é solicitado, 561 00:26:59,880 --> 00:27:00,960 o que isso significa? 562 00:27:00,960 --> 00:27:04,410 >> Literalmente, este arquivo é solicitado pelo browser. 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 cima para baixo, da esquerda para a direita. 566 00:27:10,780 --> 00:27:15,400 Na linha um, ele imediatamente encontra suporte aberto ponto de interrogação PHP, requerem 567 00:27:15,400 --> 00:27:17,872 cabeçalho dot PHP, e por isso o que o intérprete PHP 568 00:27:17,872 --> 00:27:20,580 does-- que é construído na web servidor, porque nós pré-configurado 569 00:27:20,580 --> 00:27:24,580 -lo para você-- ele vai automaticamente em header.php, copia o conteúdo, 570 00:27:24,580 --> 00:27:25,640 cola-los aqui. 571 00:27:25,640 --> 00:27:28,790 >> Mas então os encontros de intérprete ponto de interrogação próximo suporte, 572 00:27:28,790 --> 00:27:30,320 Então, é tudo feito pensando. 573 00:27:30,320 --> 00:27:33,400 Agora é apenas cega cospe as linhas de dois a sete, 574 00:27:33,400 --> 00:27:35,240 porque é apenas HTML puro. 575 00:27:35,240 --> 00:27:38,470 Obtém a linha oito, e faz isso mesma magia novamente-- abrir o arquivo, 576 00:27:38,470 --> 00:27:41,460 agarrando o conteúdo e obrigando-os ou colando- 577 00:27:41,460 --> 00:27:42,480 direito ou então lá. 578 00:27:42,480 --> 00:27:44,210 >> Mas eu simplesmente alusão a um bug. 579 00:27:44,210 --> 00:27:48,610 Este é um passo parcial para trás, porque se olharmos em header.php, 580 00:27:48,610 --> 00:27:50,850 Eu meio que cortar um canto. 581 00:27:50,850 --> 00:27:56,250 O recurso que eu desistir, a fim para ganhar este melhor projeto discutível? 582 00:27:56,250 --> 00:27:57,305 Sim? 583 00:27:57,305 --> 00:27:58,180 AUDIÊNCIA: [inaudível] 584 00:27:58,180 --> 00:28:00,570 DAVID MALAN: Sim, eu meio de cortar um canto não trivial. 585 00:28:00,570 --> 00:28:04,489 Você apontou que o que estava mudando foi o título, o número no título, 586 00:28:04,489 --> 00:28:05,530 e o número no H1. 587 00:28:05,530 --> 00:28:08,170 Assim, a minha solução foi, OK, vamos apenas mudar o nome da página, 588 00:28:08,170 --> 00:28:10,080 e não lidar com isso problema algum. 589 00:28:10,080 --> 00:28:12,130 Então isso é um parcial um passo para trás, com certeza. 590 00:28:12,130 --> 00:28:14,300 >> Mas o que é notável aqui é que o que eu fiz 591 00:28:14,300 --> 00:28:17,200 caso contrário é consignado fora todo o material comum. 592 00:28:17,200 --> 00:28:21,520 E em footer.php, repare que eu consignado fora tudo isso, ainda que menor, 593 00:28:21,520 --> 00:28:22,790 material comum. 594 00:28:22,790 --> 00:28:26,070 Então eu preciso de alguma forma agora ser capaz de dar mais um passo para a frente, e corrigi- 595 00:28:26,070 --> 00:28:27,160 que as questões de título. 596 00:28:27,160 --> 00:28:28,180 Então, vamos fazer isso. 597 00:28:28,180 --> 00:28:35,060 >> Deixe-me ir para a minha segunda versão aqui, o que, mais uma vez, tem os mesmos arquivos 598 00:28:35,060 --> 00:28:36,825 exceto por uma nova adição. 599 00:28:36,825 --> 00:28:38,950 E é um pouco mais detalhado, mas vamos ver se nós 600 00:28:38,950 --> 00:28:40,550 pode provocar uma separação que está acontecendo aqui. 601 00:28:40,550 --> 00:28:45,370 Então, ao invés de exigir header.php, e footer.php, 602 00:28:45,370 --> 00:28:50,180 Parece que estou exigindo apenas uma file-- chamado, é claro, helpers.php. 603 00:28:50,180 --> 00:28:52,560 E deixe-me estipular agora, o que está dentro de helpers.php 604 00:28:52,560 --> 00:28:55,330 é apenas um monte de funções que eu escrevi, como antes. 605 00:28:55,330 --> 00:28:57,550 Mas eu o chamei helpers.php. 606 00:28:57,550 --> 00:29:00,370 >> Agora, aparentemente, em linha de três e 10, eu sou 607 00:29:00,370 --> 00:29:02,840 chamando duas funções no tornar cabeçalho, rodapé renda. 608 00:29:02,840 --> 00:29:05,040 Aqueles não vêm com PHP, eu escrevi aqueles mim mesmo. 609 00:29:05,040 --> 00:29:07,880 E eu colocá-los em helpers.php. 610 00:29:07,880 --> 00:29:11,210 >> Agora, nós só vi essa sintaxe uma vez, e foi super breve. 611 00:29:11,210 --> 00:29:15,330 Mas esta é, aparentemente, um argumento para processar cabeçalho, a função. 612 00:29:15,330 --> 00:29:16,450 Por que eu sei disso? 613 00:29:16,450 --> 00:29:18,522 Bem, aqui está um parêntese próximos, aqui está um parêntese aberto. 614 00:29:18,522 --> 00:29:21,230 E, é claro, assim como em C, qualquer coisa entre esses parênteses 615 00:29:21,230 --> 00:29:23,350 é um ou uma input-- argumento para a função. 616 00:29:23,350 --> 00:29:26,710 >> Qual é o tipo desse argumento de dados, com base no que eu destacou? 617 00:29:26,710 --> 00:29:30,820 O que esses colchetes indicar, com base na última semana? 618 00:29:30,820 --> 00:29:33,390 Sim, é uma array-- especificamente uma matriz associativa. 619 00:29:33,390 --> 00:29:35,700 E esta sintaxe reconhecidamente é um pouco funky, 620 00:29:35,700 --> 00:29:38,860 mas isso é apenas de passagem em um par de valor de chave. 621 00:29:38,860 --> 00:29:43,530 A chave é, entre aspas título, eo valor é CS50. 622 00:29:43,530 --> 00:29:46,220 >> Se tivéssemos feito isso em C, pode, em vez 623 00:29:46,220 --> 00:29:49,400 pareça mais com isso, apenas entre aspas CS50-- 624 00:29:49,400 --> 00:29:52,460 ou, na verdade, seria encaracolado cintas, ou algo parecido em C, 625 00:29:52,460 --> 00:29:55,580 onde a chave é zero, eo valor é CS50. 626 00:29:55,580 --> 00:29:59,840 Mas, novamente, em PHP, embora o sintaxe é, novamente, um pouco estranho, 627 00:29:59,840 --> 00:30:02,860 ele permite que você passe em palavras em vez de números 628 00:30:02,860 --> 00:30:05,120 para associar as teclas com os valores. 629 00:30:05,120 --> 00:30:06,390 >> Então o que isso tudo significa? 630 00:30:06,390 --> 00:30:09,750 Se eu entrar em helpers.php, vamos olhar para esta função. 631 00:30:09,750 --> 00:30:13,620 renderHeader.php, em vez RenderHeader é a minha função, 632 00:30:13,620 --> 00:30:16,220 e eu sei que, porque eu vejo a palavra-chave aqui função. 633 00:30:16,220 --> 00:30:19,450 Isso é novo a partir C--, aparentemente, leva um argumento chamado data-- 634 00:30:19,450 --> 00:30:22,400 mas eu poderia ter chamado este qualquer coisa, mas eu o chamei de dados, 635 00:30:22,400 --> 00:30:25,090 apenas para ser um pouco clean-- e apenas dar um palpite, especialmente 636 00:30:25,090 --> 00:30:28,173 se você já programou em algum outro maior nível de linguagem antes, algo 637 00:30:28,173 --> 00:30:29,820 acima C, conceitualmente. 638 00:30:29,820 --> 00:30:33,820 >> O que faz suporte aberto igual colchete provavelmente significa? 639 00:30:33,820 --> 00:30:35,540 Ou o que poderia dizer? 640 00:30:35,540 --> 00:30:39,660 Nós não vimos isso em C. Sim? 641 00:30:39,660 --> 00:30:40,480 >> Uma matriz vazia. 642 00:30:40,480 --> 00:30:45,440 Especificamente, isto significa que se o usuário não chamar RenderHeader 643 00:30:45,440 --> 00:30:49,340 com um argumento, eu ainda estou indo ter um argumento chamado de dados, 644 00:30:49,340 --> 00:30:52,327 mas seu valor padrão é vai ser uma matriz vazia. 645 00:30:52,327 --> 00:30:53,660 Então é só uma conveniência agradável. 646 00:30:53,660 --> 00:30:56,493 Eu não tenho que gritar com o usuário, ou dizer que você usou minha função errada. 647 00:30:56,493 --> 00:30:59,849 Eu só posso dar ao usuário um padrão valor, se eu não particularmente cuidados. 648 00:30:59,849 --> 00:31:01,890 Agora essa função, eu sou vai balançar minhas mãos em. 649 00:31:01,890 --> 00:31:07,620 Mas esta função permite extrato nos passar essas variáveis ​​em dados 650 00:31:07,620 --> 00:31:10,360 em header da seguinte maneira. 651 00:31:10,360 --> 00:31:13,100 E esta é a última peça, Eu acho que, de sintaxe descolados. 652 00:31:13,100 --> 00:31:15,860 Aqui é a minha nova versão de header.php---lo 653 00:31:15,860 --> 00:31:20,140 costumava dizer, literalmente, aberta suporte título CS50, e foi isso. 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 diz algo bastante badalado. 656 00:31:24,310 --> 00:31:28,030 E deixe-me simplificar esta por um momento como se segue. 657 00:31:28,030 --> 00:31:31,020 Isto é o que eu tenho mudou o meu título para ser. 658 00:31:31,020 --> 00:31:35,140 No entanto, está ficando um pouco feio para suportes constantemente abertas com PHP, 659 00:31:35,140 --> 00:31:36,610 e, em seguida, use a função de impressão. 660 00:31:36,610 --> 00:31:40,810 Acontece que o PHP tem uma abreviação notação para esta, que é apenas 661 00:31:40,810 --> 00:31:45,050 um sinal de igual, o que é tecnicamente um função chamada eco em vez de impressão, 662 00:31:45,050 --> 00:31:46,800 mas é a mesma coisa, de forma eficaz. 663 00:31:46,800 --> 00:31:48,440 >> Isso só fica melhor. 664 00:31:48,440 --> 00:31:50,510 É apenas uma sintática açúcar, se quiser, 665 00:31:50,510 --> 00:31:52,260 que faz com que meu código de olhar um pouco melhor. 666 00:31:52,260 --> 00:31:54,010 Mas ao que parece, e vamos ver isso de novo 667 00:31:54,010 --> 00:31:57,420 em pouco tempo, temos que chamar este irritantemente longo função chamada 668 00:31:57,420 --> 00:32:00,582 HTML caracteres especiais em PHP, pois verifica-se 669 00:32:00,582 --> 00:32:02,790 há certas entradas que o usuário pode dar-nos, 670 00:32:02,790 --> 00:32:05,160 ou que os usuários podem nos dar, que está indo para quebrar o nosso site. 671 00:32:05,160 --> 00:32:07,035 Mas vamos ver que no próximo semana com JavaScript. 672 00:32:07,035 --> 00:32:10,740 Mas, por enquanto, só sei que este arquivo, headers.php, simplesmente 673 00:32:10,740 --> 00:32:13,040 leva a que título Passei por dentro, fazer 674 00:32:13,040 --> 00:32:17,380 certeza de que é seguro para ser injetado em uma web página, e ele cospe-lo como 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ão, se eu entrar nesta versão agora, notar que as palestras tem o seu título de volta, 677 00:32:24,440 --> 00:32:28,630 semana zero tem seu título de volta, e na verdade, o HTML Eu estou gerando 678 00:32:28,630 --> 00:32:32,110 é idêntico ao que a minha primeira versão foi-- exceto para o meu espaço em branco, 679 00:32:32,110 --> 00:32:35,150 porque eu comecei a formatação meu código um pouco diferente. 680 00:32:35,150 --> 00:32:38,082 Mas eu tenho gerado todos o código que me interessa. 681 00:32:38,082 --> 00:32:39,790 Então deixe-me fazer uma pausa para apenas um momento e ver 682 00:32:39,790 --> 00:32:42,200 se houver alguma dúvida ou confusão que eu criei. 683 00:32:42,200 --> 00:32:44,970 684 00:32:44,970 --> 00:32:48,150 Tudo bem, então vamos torcer um pouco mais difícil aqui 685 00:32:48,150 --> 00:32:51,500 para ver se há uma oportunidade de melhoria. 686 00:32:51,500 --> 00:32:56,130 Helpers.php também tinha essa função, 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, novamente, para fins de hoje, saber que a função é apenas extrato 689 00:33:02,610 --> 00:33:08,280 minha maneira de passar argumentos em header.php e footer.php. 690 00:33:08,280 --> 00:33:10,900 691 00:33:10,900 --> 00:33:11,780 >> Desculpa? 692 00:33:11,780 --> 00:33:13,056 >> AUDIÊNCIA: [inaudível] 693 00:33:13,056 --> 00:33:15,180 DAVID MALAN: Sim, eu só mudou a exigir line. 694 00:33:15,180 --> 00:33:19,410 Então, literalmente, eu tenho cometido o pecado de copiar e colar, mais uma vez. 695 00:33:19,410 --> 00:33:21,920 Não é um número enorme de linhas, mas vêm on-- 696 00:33:21,920 --> 00:33:25,220 se eu estou copiando e colando tudo apenas para mudar uma pequena palavra, 697 00:33:25,220 --> 00:33:28,610 ea uma pequena palavra que aponta Alan fora é rodapé aqui, contra cabeçalho aqui. 698 00:33:28,610 --> 00:33:30,670 Caso contrário, é tudo idênticas, exceto para, 699 00:33:30,670 --> 00:33:32,180 é claro, os nomes da função. 700 00:33:32,180 --> 00:33:33,690 Então, o que poderíamos fazer melhor? 701 00:33:33,690 --> 00:33:39,810 >> Bem, deixe-me abrir esta versão aqui, em que em helpers.php, 702 00:33:39,810 --> 00:33:42,300 por que não eu apenas obter um pouco mais esperto sobre isso? 703 00:33:42,300 --> 00:33:46,410 Faça um pouco mais complicado código, mas chamá-lo de tornar? 704 00:33:46,410 --> 00:33:48,470 Então o que eu fundamentalmente mudou? 705 00:33:48,470 --> 00:33:51,770 >> Leva um argumento agora-- dois argumentos, os dados ainda. 706 00:33:51,770 --> 00:33:54,444 E então qual é a primeira nome provavelmente está sendo usado para, 707 00:33:54,444 --> 00:33:55,860 com base no que você está lendo aqui? 708 00:33:55,860 --> 00:33:58,452 Mesmo se alguns dos sintaxe ainda é nova. 709 00:33:58,452 --> 00:33:59,660 O que é 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 >> Desculpa? 712 00:34:03,016 --> 00:34:03,710 >> AUDIÊNCIA: cabeçalho ou rodapé. 713 00:34:03,710 --> 00:34:04,510 >> DAVID MALAN: cabeçalho ou rodapé. 714 00:34:04,510 --> 00:34:07,134 Então, aparentemente, eu decidi que se a única coisa que está mudando 715 00:34:07,134 --> 00:34:10,159 é o que eu quero modelo para print-- e por molde 716 00:34:10,159 --> 00:34:13,100 Quero dizer isso é modelo para código que eu quero para a saída, 717 00:34:13,100 --> 00:34:16,350 mas eu quero tampar em alguma values-- isso, se é apenas o cabeçalho 718 00:34:16,350 --> 00:34:20,440 ou rodapé, por que não eu parametrizar isso 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, em seguida, esta sintaxe descolados me permite para criar um caminho em uma variável aqui. 721 00:34:26,250 --> 00:34:28,030 >> Então caminho sinal de dólar é uma variável. 722 00:34:28,030 --> 00:34:31,120 O que faz esta sintaxe fazer, se você é familiar? 723 00:34:31,120 --> 00:34:32,512 Sim? 724 00:34:32,512 --> 00:34:34,065 >> AUDIÊNCIA: [inaudível] 725 00:34:34,065 --> 00:34:34,940 DAVID MALAN: Exatamente. 726 00:34:34,940 --> 00:34:37,600 Se template é, entre aspas, cabeçalho, ou se modelo é, 727 00:34:37,600 --> 00:34:41,170 entre aspas, rodapé, essa linha não que eu destaque, linha oito, 728 00:34:41,170 --> 00:34:46,330 é simplesmente tomar esse nome, como cabeçalho, e concatenando-lo com PHP ponto. 729 00:34:46,330 --> 00:34:49,750 Então, nós não tem esse operador em C. Este operador ponto é 730 00:34:49,750 --> 00:34:54,520 uma coisa incrível na PHP-- se você estiver familiarizado com JavaScript ou Java, 731 00:34:54,520 --> 00:34:56,949 você pode usar o sinal de mais assinar a fazer concatenação. 732 00:34:56,949 --> 00:34:59,974 >> Em C, é uma dor no PESCOÇO e eu sinto muito, em p-ajustou seis, 733 00:34:59,974 --> 00:35:02,390 você vai ter que fazer isto-- é uma dor no pescoço 734 00:35:02,390 --> 00:35:03,930 para concatenar strings. 735 00:35:03,930 --> 00:35:04,670 Por quê? 736 00:35:04,670 --> 00:35:06,580 Bem, porque se você tem uma cadeia que é isso por muito tempo, 737 00:35:06,580 --> 00:35:09,538 e outra seqüência de caracteres que é isso por muito tempo, você não pode simplesmente ligá-los juntos. 738 00:35:09,538 --> 00:35:11,070 O que você não tem que fazer em C? 739 00:35:11,070 --> 00:35:11,680 Sim? 740 00:35:11,680 --> 00:35:12,380 >> AUDIÊNCIA: [inaudível] 741 00:35:12,380 --> 00:35:15,090 >> DAVID MALAN: Você tem que malloc memória, ou usar uma matriz na pilha. 742 00:35:15,090 --> 00:35:17,214 E você realmente tem que fazer essa matriz grande o suficiente 743 00:35:17,214 --> 00:35:20,940 para caber este mais este, além da barra invertida zero. 744 00:35:20,940 --> 00:35:24,994 Em seguida, concatenar-los em conjunto, utilizando agitar gato ou manualmente com um loop for, 745 00:35:24,994 --> 00:35:26,160 ou qualquer número de técnicas. 746 00:35:26,160 --> 00:35:27,760 E vamos mostrar-lhe um par in-p definir seis. 747 00:35:27,760 --> 00:35:29,080 >> É uma dor no pescoço. 748 00:35:29,080 --> 00:35:34,190 E isso é realmente o que eu quero dizer sobre este contra isto-- como C contra PHP. 749 00:35:34,190 --> 00:35:36,870 Você apenas obtenha muito mais funcionalidades de graça, 750 00:35:36,870 --> 00:35:39,030 de modo que você possa se concentrar, idealmente, a diversão 751 00:35:39,030 --> 00:35:41,190 parte de codificação, o projeto que você deseja resolver, 752 00:35:41,190 --> 00:35:43,190 em vez de o baixo nível de minúcias. 753 00:35:43,190 --> 00:35:49,840 >> Então, isso só gera header.php ou footer.php com base na qual eu chamar. 754 00:35:49,840 --> 00:35:52,280 E, de fato, se eu for em index.php, aviso 755 00:35:52,280 --> 00:35:56,230 tudo o que é changed-- Em vez de chamando tornar cabeçalho ou rodapé renda, 756 00:35:56,230 --> 00:36:00,230 Eu estou chamando render, seguido pelo nome do modelo que eu quero fazer. 757 00:36:00,230 --> 00:36:02,370 E você vai ver isto, também, no conjunto de problemas de sete, 758 00:36:02,370 --> 00:36:05,530 pelo qual permitirá que você use o mesma função para fazer cachos 759 00:36:05,530 --> 00:36:07,550 e cachos de diferentes páginas da web. 760 00:36:07,550 --> 00:36:10,570 >> Então ao invés de me debruçar muito muito mais sobre esses details-- 761 00:36:10,570 --> 00:36:13,210 que você verá novamente em conjunto de problemas seven-- vamos olhar 762 00:36:13,210 --> 00:36:16,850 em agora o início de uma solução de a um problema mais interessante. 763 00:36:16,850 --> 00:36:19,310 Até agora, nada temos tem feito os dados salvos. 764 00:36:19,310 --> 00:36:22,920 Na verdade, a única vez que já salvou algo que fizemos nesta classe 765 00:36:22,920 --> 00:36:31,030 é quando tivemos uma demonstração muito simples por algum tempo volta, em que usamos arquivo IO em C, 766 00:36:31,030 --> 00:36:34,520 e eu acho que eu digitei meu nome, e O nome de Hannah, eo nome de Maria, 767 00:36:34,520 --> 00:36:37,610 ou talvez o nome de Andy, e em seguida, guardado um file-- CSV 768 00:36:37,610 --> 00:36:39,430 separados por vírgula arquivo valores. 769 00:36:39,430 --> 00:36:43,530 >> E usamos fopen-- eu acho usamos fprintf se bem me lembro, 770 00:36:43,530 --> 00:36:44,910 e nós salvamos um arquivo. 771 00:36:44,910 --> 00:36:46,920 Agora, que é o mais simples forma de um banco de dados. 772 00:36:46,920 --> 00:36:50,230 Se você quiser fazer um site para o Programa Frosh IMs, pelo qual calouros 773 00:36:50,230 --> 00:36:53,390 pode se inscrever para um esporte, você idealmente quero fazer algo com esses dados. 774 00:36:53,390 --> 00:36:55,370 Na semana passada, nós não fizemos nada com o data-- nós apenas disse: 775 00:36:55,370 --> 00:36:56,661 você está registrado, não realmente. 776 00:36:56,661 --> 00:36:58,950 Ou talvez eu enviei um email ao Proctor, e foi isso. 777 00:36:58,950 --> 00:37:02,110 >> Mas seria bom se eu pudesse dar que proctor um arquivo CSV, 778 00:37:02,110 --> 00:37:03,340 como um arquivo do Excel. 779 00:37:03,340 --> 00:37:05,090 Ou melhor ainda, seria seria bom se eu pudesse 780 00:37:05,090 --> 00:37:08,830 colocar os nomes desses usuários e dormitório nomes e tudo isso 781 00:37:08,830 --> 00:37:11,740 em que uma base de dados apenas vive para sempre, 782 00:37:11,740 --> 00:37:13,530 até que eu escolher para apagar os dados. 783 00:37:13,530 --> 00:37:15,645 Uma base de dados que permite me para consultar informações. 784 00:37:15,645 --> 00:37:18,070 E, de fato, é o que é um banco de dados. 785 00:37:18,070 --> 00:37:20,470 >> Nós introduzimos hoje, e na próxima semana, também, uma tecnologia 786 00:37:20,470 --> 00:37:25,020 chamado SQL-- uma Consulta Estruturada Linguagem, que é uma outra língua. 787 00:37:25,020 --> 00:37:28,750 É, essencialmente, um programação língua, mas para bancos de dados. 788 00:37:28,750 --> 00:37:31,760 E um banco de dados, por agora, apenas pensar em como uma versão super sofisticados 789 00:37:31,760 --> 00:37:35,710 do Microsoft Excel, ou Google Planilhas ou Números da Apple. 790 00:37:35,710 --> 00:37:39,950 Em geral, é um programa que permite você guardar um monte de dados 791 00:37:39,950 --> 00:37:43,960 em linhas e colunas, bastante como você pode em Excel. 792 00:37:43,960 --> 00:37:47,100 >> Mas o que é bom, especialmente se nós não somos super-familiarizados com o Excel, 793 00:37:47,100 --> 00:37:52,040 SQL que permite que você a fazer é esta consulta informações escrevendo linhas de código 794 00:37:52,040 --> 00:37:55,220 onde você pode, mesmo que o seu banco de dados tem um milhão de linhas na mesma, 795 00:37:55,220 --> 00:37:57,190 você pode encontrar coisas super rápido. 796 00:37:57,190 --> 00:37:59,950 Na verdade, o Excel é particularmente mau de grandes conjuntos de dados. 797 00:37:59,950 --> 00:38:02,460 E, de facto, até alguns anos atrás, acabou 798 00:38:02,460 --> 00:38:08,890 Excel só permite que você armazene até 65.535 linhas de data-- que 799 00:38:08,890 --> 00:38:12,020 Parece muito, mas ao época eu era um estudante de graduação, 800 00:38:12,020 --> 00:38:14,920 e lembro-me tropeçar isso porque eu estava gerando 801 00:38:14,920 --> 00:38:17,900 Arquivos CSV para minha pesquisa e eu queria analisá-los rapidamente 802 00:38:17,900 --> 00:38:19,530 apenas abrindo-se em Excel. 803 00:38:19,530 --> 00:38:23,730 Claro, meu computador apenas acidentado, porque eu tinha mais de 65.000 linhas. 804 00:38:23,730 --> 00:38:27,210 >> Mas de onde veio a 65.535 vem? 805 00:38:27,210 --> 00:38:29,670 O que estava fazendo Microsoft, presumivelmente? 806 00:38:29,670 --> 00:38:32,430 Se você é bom com as potências de dois? 807 00:38:32,430 --> 00:38:37,160 Sim, eles estavam usando um 16-bit valor para representar o número da linha. 808 00:38:37,160 --> 00:38:41,310 E dois a 16 é 65,536-- menos um, porque se você 809 00:38:41,310 --> 00:38:45,414 índice zero significa que foi o maior número de linhas que eu poderia ter. 810 00:38:45,414 --> 00:38:46,830 E foi apenas uma decisão de design. 811 00:38:46,830 --> 00:38:52,760 Ao salvar 16 bits, eles me limitado 16.000 linhas, em vez de 4 bilhões, 812 00:38:52,760 --> 00:38:54,322 que eu poderia ter tido idealmente. 813 00:38:54,322 --> 00:38:57,030 Mas, por agora, vamos introduzir esta mais em um contexto web. 814 00:38:57,030 --> 00:39:00,390 E o que é agradável sobre SQL é que, mesmo mas é muito poderosa e bonita 815 00:39:00,390 --> 00:39:04,050 sofisticado, que realmente resume até quatro operações fundamentais, quatro 816 00:39:04,050 --> 00:39:08,060 funções-chave, se você selecionar, will-- para recuperar dados, em busca 817 00:39:08,060 --> 00:39:12,510 para os dados; apagar ou excluir dados; inserir para adicionar linhas para o banco de dados; 818 00:39:12,510 --> 00:39:13,410 e atualização. 819 00:39:13,410 --> 00:39:17,010 Então, se você já usou o Google Planilhas, números Apple, Microsoft 820 00:39:17,010 --> 00:39:19,310 Excel, você tiver executado, muito provavelmente, tudo 821 00:39:19,310 --> 00:39:22,530 destas operações como um ser humano por apenas usando seu teclado e mouse-- 822 00:39:22,530 --> 00:39:26,050 inserção de dados, usando seus olhos para selecionar ou pesquisar dados, 823 00:39:26,050 --> 00:39:28,360 ou dados atualização ou exclusão de dados. 824 00:39:28,360 --> 00:39:29,870 >> Então o que isso quer dizer? 825 00:39:29,870 --> 00:39:34,300 Bem, pré-instalado em CS50 IDE é um programa chamado MySQL. 826 00:39:34,300 --> 00:39:37,050 É um livre, open-source banco de dados que é super popular. 827 00:39:37,050 --> 00:39:40,590 Facebook, por exemplo, usa-o para este dia, entre outras ferramentas que eles usam. 828 00:39:40,590 --> 00:39:44,300 E um monte de sites muito populares usar que em grande parte porque é rápido, 829 00:39:44,300 --> 00:39:45,230 e porque é gratuito. 830 00:39:45,230 --> 00:39:46,820 Embora certamente existam alternativas. 831 00:39:46,820 --> 00:39:49,580 E alguns de vocês podem se envolver com alternativas para os projectos finais. 832 00:39:49,580 --> 00:39:55,330 >> Esta é uma imagem de tela, entretanto, de uma ferramenta baseada na Web chamada phpMyAdmin. 833 00:39:55,330 --> 00:39:58,260 É uma coincidência que esta ferramenta baseada na Web é também 834 00:39:58,260 --> 00:40:01,720 escrito em uma linguagem, PHP, mas o que é que se destinam a fazer 835 00:40:01,720 --> 00:40:04,620 é nos dar uma base web- interface para um banco de dados. 836 00:40:04,620 --> 00:40:07,180 Porque MySQL é tipicamente algo, você historicamente, 837 00:40:07,180 --> 00:40:08,770 iria interagir com apenas com uma linha de comando. 838 00:40:08,770 --> 00:40:10,811 E seria super- irritante e arcano ter 839 00:40:10,811 --> 00:40:14,487 digitar comandos textuais para seleccionar dados, inserir dados e excluir dados. 840 00:40:14,487 --> 00:40:16,820 Por isso, algumas pessoas na internet escreveu um programa baseado na web 841 00:40:16,820 --> 00:40:18,900 que apenas deixe-nos gerir os dados em nossa base de dados. 842 00:40:18,900 --> 00:40:23,040 É como um duplo clique sobre o Excel, e executando uma versão baseada na Web dos mesmos. 843 00:40:23,040 --> 00:40:26,370 >> E o que você vai usar isso para em última análise, na próxima semana, não em-p definir seis, 844 00:40:26,370 --> 00:40:28,680 mas é construir algo chamado CS50 Finanças, que 845 00:40:28,680 --> 00:40:32,630 vai ter um banco de dados de usuários, com nomes de usuário e senhas, 846 00:40:32,630 --> 00:40:34,860 dólar que equivale têm em suas contas bancárias. 847 00:40:34,860 --> 00:40:37,280 Vai ser algo que você usa para armazenar 848 00:40:37,280 --> 00:40:39,910 os símbolos e as quantidades de ações que os usuários 849 00:40:39,910 --> 00:40:42,567 ter comprado usando virtual dólares que você vai dar a eles. 850 00:40:42,567 --> 00:40:44,900 E isso vai permitir que os usuários para se inscrever para o seu site, 851 00:40:44,900 --> 00:40:47,190 de modo que mesmo seus amigos pode sintonizar o seu site 852 00:40:47,190 --> 00:40:49,360 e realmente se inscrever, log in, e brincar 853 00:40:49,360 --> 00:40:52,807 e tentar encontrar falhas no seu código, e tentar encontrar bugs em seu site. 854 00:40:52,807 --> 00:40:55,390 E eles vão simplesmente registre-se pela adicionando-se, de forma eficaz, 855 00:40:55,390 --> 00:40:58,120 via código que você escreve no seu banco de dados. 856 00:40:58,120 --> 00:41:02,470 >> Por exemplo, esta é uma captura de tela rápida do que um banco de dados pode parecer. 857 00:41:02,470 --> 00:41:05,190 Isto era de um dos solutions-- do ano passado 858 00:41:05,190 --> 00:41:07,760 este é como um mini Excel arquivo, armazenadas em nosso banco de dados 859 00:41:07,760 --> 00:41:09,950 armazenados neste software chamado MySQL. 860 00:41:09,950 --> 00:41:13,260 No lado esquerdo, eu tenho aparentemente dada a cada utilizador um número único. 861 00:41:13,260 --> 00:41:16,200 Na segunda coluna, eu dei- todos um usuário nome-- minha própria 862 00:41:16,200 --> 00:41:16,880 entre eles. 863 00:41:16,880 --> 00:41:21,430 E no lado direito, Eu dei-lhes um hash. 864 00:41:21,430 --> 00:41:26,760 >> Agora, esta é realmente uma senha, mas não é uma senha de texto simples. 865 00:41:26,760 --> 00:41:30,160 É uma senha criptografada, se você vai, ou uma senha de hash. 866 00:41:30,160 --> 00:41:32,000 Que vamos voltar a antes do tempo. 867 00:41:32,000 --> 00:41:34,340 >> Mas se você já leu um artigo sobre como 868 00:41:34,340 --> 00:41:37,950 sua senha em algum banco ou algum site pode ter sido comprometida, 869 00:41:37,950 --> 00:41:39,630 ele geralmente pode significar uma de duas coisas. 870 00:41:39,630 --> 00:41:42,780 Portanto, este é apenas um trecho de seis utilizadores. 871 00:41:42,780 --> 00:41:45,460 Todos vocês podem agora descobrir para fora através de hacking ou fissuras 872 00:41:45,460 --> 00:41:47,690 o que os nossos seis senhas das pessoas são. 873 00:41:47,690 --> 00:41:49,720 Mas se você já ganhou um alerta ou um pedido de desculpas 874 00:41:49,720 --> 00:41:52,803 de uma empresa ou site ditado, Desculpe, um hacker invadiu nosso banco de dados 875 00:41:52,803 --> 00:41:56,360 você provavelmente deve mudar o seu senha, o que poderia dizer? 876 00:41:56,360 --> 00:41:59,670 >> Bem, um, poderia significar a empresa tem sido mais imbecil, 877 00:41:59,670 --> 00:42:03,630 e foi armazenando a sua senha em uma coluna como esta, sem criptografia. 878 00:42:03,630 --> 00:42:05,840 O que significa o adversário, que roubou o banco de dados, 879 00:42:05,840 --> 00:42:07,440 literalmente conhece o seu nome de usuário e senha. 880 00:42:07,440 --> 00:42:08,960 Isso é o pior cenário possível. 881 00:42:08,960 --> 00:42:11,710 E como você verá em conjunto p- sete, tão fácil de evitar. 882 00:42:11,710 --> 00:42:15,624 Não há absolutamente nenhuma desculpa para que forma de estupidez na internet de hoje. 883 00:42:15,624 --> 00:42:18,540 Dois-- e vamos encontrar alguns artigos para dar testemunho do fato de que este ainda 884 00:42:18,540 --> 00:42:21,710 acontece, nonetheless-- dois, talvez o adversário 885 00:42:21,710 --> 00:42:23,840 roubou esta versão do banco de dados. 886 00:42:23,840 --> 00:42:27,110 Que ainda é um pouco mal, porque agora eles sabem que eu tenho seis clientes, 887 00:42:27,110 --> 00:42:29,270 Eu sei que os nomes de usuário desses seis clientes, 888 00:42:29,270 --> 00:42:32,910 e eu sei que o criptografado versões, ou as versões de hash, 889 00:42:32,910 --> 00:42:34,340 de senhas esses seis dos clientes. 890 00:42:34,340 --> 00:42:37,010 Mas qualquer um de vocês que pode ter feito [? Hacker 2?] 891 00:42:37,010 --> 00:42:41,150 onde você rachado senhas, ou tomou um olhar para essa versão do problema 892 00:42:41,150 --> 00:42:46,280 conjunto, por que é ainda um pouco preocupante se o adversário sabe o seu hash de 893 00:42:46,280 --> 00:42:47,435 senhas? 894 00:42:47,435 --> 00:42:49,732 >> AUDIÊNCIA: porque eles poderiam introduzir todo o dicionário 895 00:42:49,732 --> 00:42:50,690 para a função hash. 896 00:42:50,690 --> 00:42:54,520 E se a sua senha é um dicionário palavra, [? eles podem apenas match--?] 897 00:42:54,520 --> 00:42:57,640 >> DAVID MALAN: Exatamente, o adversário pode apenas escrever o código, como alguns de vocês 898 00:42:57,640 --> 00:43:00,526 fez para [? Hacker?] 2, em que você iterar 899 00:43:00,526 --> 00:43:03,400 todas as palavras do dicionário, ou todas as combinações possíveis de uma 900 00:43:03,400 --> 00:43:06,610 através de Z e um meio nine-- que soa como um lote, e é. 901 00:43:06,610 --> 00:43:08,361 Mas, para um computador, ele é muito danado rápido. 902 00:43:08,361 --> 00:43:10,610 E, de fato, essa foi a ponto de [? Hacker 2,?] Estava 903 00:43:10,610 --> 00:43:12,540 para levar o material que literalmente se parece com isso, 904 00:43:12,540 --> 00:43:14,900 e engenharia reversa o que ele realmente era. 905 00:43:14,900 --> 00:43:17,270 >> Então, vamos ver como nós podemos armazenar esta de forma mais eficiente. 906 00:43:17,270 --> 00:43:20,210 Acontece que, felizmente, em MySQL, lá vai ser tipos de dados. 907 00:43:20,210 --> 00:43:22,800 E uma das partes divertidas sobre design de banco de dados, para ser honesto, 908 00:43:22,800 --> 00:43:25,810 é realmente decidir por si mesmo como você deve representar os dados? 909 00:43:25,810 --> 00:43:29,630 Se você representar um número de telefone como um int, como um número grande, ou muito? 910 00:43:29,630 --> 00:43:31,630 Ou você realmente fazê-lo como uma seqüência de caracteres? 911 00:43:31,630 --> 00:43:33,780 E não pode ser muito impactos não-triviais deste. 912 00:43:33,780 --> 00:43:36,714 >> Na verdade, um dos primeiros, divertidas histórias germane 913 00:43:36,714 --> 00:43:39,880 é quando Mark Zuckerberg estava construindo Facebook, que foi originalmente escrito em, 914 00:43:39,880 --> 00:43:42,300 e ainda é, em grande parte escrito em PHP. 915 00:43:42,300 --> 00:43:45,400 E um dos maiores desafios eles enfrentaram no início foi escalando. 916 00:43:45,400 --> 00:43:48,820 Quando eles continuaram adicionando escola depois escola, depois da escola, que eu saiba, 917 00:43:48,820 --> 00:43:51,639 uma das soluções originais era essencialmente para copiar e colar 918 00:43:51,639 --> 00:43:53,430 alguns dos bancos de dados e parte do código, 919 00:43:53,430 --> 00:43:55,346 de modo que era de Harvard executando em seu próprio servidor, 920 00:43:55,346 --> 00:43:56,995 e MIT estava correndo em seu próprio servidor. 921 00:43:56,995 --> 00:43:59,120 E foi por isso que, para alguns de você que pode se lembrar, 922 00:43:59,120 --> 00:44:01,510 você não poderia ter amigos em outras redes. 923 00:44:01,510 --> 00:44:05,050 >> Você provavelmente não tem amigos no MIT ou Harvard 10 ou mais anos atrás, 924 00:44:05,050 --> 00:44:07,467 mas você não poderia abranger as redes por essa razão, em parte. 925 00:44:07,467 --> 00:44:10,550 E um dos maiores desafios para a Mark e para empresas como Facebook 926 00:44:10,550 --> 00:44:13,460 na verdade, é de manuseamento centenas e milhares e milhões 927 00:44:13,460 --> 00:44:14,460 de solicitações por segundo. 928 00:44:14,460 --> 00:44:16,501 Então as coisas que vai começar falando esta semana 929 00:44:16,501 --> 00:44:19,860 são realmente vai ser pertinente para escrever um bom software, e popularmente 930 00:44:19,860 --> 00:44:23,040 ferramentas de sucesso que pode lidar com muitos usuários. 931 00:44:23,040 --> 00:44:25,460 >> Então, vamos falar de coisas como indexação e pesquisa, 932 00:44:25,460 --> 00:44:26,910 mas isso é tudo por hoje. 933 00:44:26,910 --> 00:44:28,780 Vamos vê-lo para saber mais sobre quarta-feira. 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: você pode lo, e subtrair. 937 00:44:35,943 --> 00:44:38,859 E você não tem que ficar com alguns montante pré-determinado de memória. 938 00:44:38,859 --> 00:44:40,580 Bem, o que é que vai ser chamado? 939 00:44:40,580 --> 00:44:42,369 >> COLUNA 1: Bem, o que está acontecendo? 940 00:44:42,369 --> 00:44:43,535 COLUNA 2: O que você quer dizer? 941 00:44:43,535 --> 00:44:44,451 Ele está dando uma palestra. 942 00:44:44,451 --> 00:44:47,650 DAVID MALAN: E podemos usar um função chamada malloc para memory-- 943 00:44:47,650 --> 00:44:50,050 >> COLUNA 1: Por que não estão se movendo seus braços? 944 00:44:50,050 --> 00:44:52,450 >> COLUNA 2: Bem that's-- você sabe, isso é normal. 945 00:44:52,450 --> 00:44:57,162 É como ele tem apenas grandes salsichas pendurado lá. 946 00:44:57,162 --> 00:44:59,040 >> COLUNA 1: Isso é normal? 947 00:44:59,040 --> 00:45:03,096 >> COLUNA 2: Sim, eu acho que nós simplesmente assumir que ele acidentalmente 948 00:45:03,096 --> 00:45:06,840 substituiu seu desodorante com supercola. 949 00:45:06,840 --> 00:45:07,608