[Música tocando] DAVID MALAN: Este é CS50, e este é o início da semana oito. E nós estamos tão animado para recebê- volta, grande surpresa, própria Ramon do CS50 Galvan, um sénior em ascensão que tem sido passar os últimos meses desde julho em Los Angeles, em Hollywood, literalmente trabalhando em um novo TV show chamado Colony, o criador dos quais é, na verdade, um alúmen de Harvard próprio. E por isso estamos muito animado para ver este estréia na rede EUA em janeiro deste ano. Portanto, fique atento para isso, e para Ramon mais para as próximas semanas. Sabemos agora que o fim está próximo. E o que isto significa é que não há tudo o que muito deixou de CS50, é triste dizer. Temos apenas três problema conjuntos left-- há conjunto de problemas, que é em six-- suas mãos agora ou serão em breve, devido ainda este week-- destina-se a colmatar nossos mundos de linha de comando, onde temos passado mais de nosso tempo usando C, e no mundo da programação web. Bem, você vai ver um monte de idéias emprestado do trabalho de linha de comando, mas também um monte de novo e idéias interessantes que também vão ser pertinente para aplicações móveis e para a tecnologia, de modo mais geral, com o qual você caras são todos conhecemos hoje em dia em laptops e telefones e afins. Assim você não implementar uma página web, ou um site em si, mas um servidor web real. Você vai escrever o resto de um servidor web escrito em C, cujo propósito na vida é receber solicitações HTTP, essas envelopes virtuais Estamos sempre falando aproximadamente, e realmente quer responder com alguns content-- estáticos como um ponto HTML arquivo, ou um ponto ou JPEG qualquer outro número de arquivos, ou mesmo um arquivo PHP em que seu web servidor vai interpretar que o PHP código e cuspir os resultados. Agora, nós fornecemos-lhe com um pouco de quadro para ele-- de fato o código de distribuição para problema definir seis é mais de 1.000 linhas, uma monte de comentários que é, para ser fair-- mas esta é realmente significou ser uma oportunidade para começar suas mãos sujas de mergulho em um projeto bastante grande que nós temos muito especificamente esculpidas peças de para você, de modo que realmente quando você sair e CS50 entrar no mundo real da programação e querem se envolver em qualquer número de projectos, você terá muito maior conforto baixar alguma fonte código, alguns de fonte aberta projetar na web, e ao mergulho e fazer mudanças que você vê o ajuste. Problema definir sete vai ser sobre fazer o seu próprio aplicativo baseado na web que leva entrada dinâmica e produz saída dinâmica na forma de um site etrade.com-like. E problema ajustou oito irá focar ainda outra língua conhecida como JavaScript. Enquanto isso, a final projeto está no horizonte. O chamado pré-proposta é devido uma semana a partir de hoje. Pré-proposal-- acordo com a especificação, que está em website-- do CS50 é uma oportunidade muito casual para que você envie um e-mail bem sucinto para o seu companheiro de ensino apenas para informar-lhe ou a de que você está pensando, a usar ele ou ela como uma caixa de ressonância. E tem uma sanidade check-- se você está pensando sobre a mordedura de fora também muito ou talvez muito pouco, ou talvez você não tem idéia do que seja e querem se envolver em uma conversa. A partir daí é uma proposta e relatório de status, o chamado hackathon aqui em CS50 Cambridge para estudantes Harvard e Yale alike. O projeto final implementação é então devido. E, em seguida, uma feira CS50 aqui, em Cambridge, bem como outro em New Haven. Portanto, a proposta, dê uma olhada o site para essas indicações. Mas o mais empolgante, também, é uma oportunidade de sujar as mãos, e suas mentes abertas para um todo monte de temas e ferramentas e técnicas que são acessórias ao núcleo syllabus do curso, mas, no entanto relacionados. E também pedras de piso maravilhoso para fazendo projetos finais muito legal que vão muito além de material de nós cobrimos formalmente em conjuntos de problemas ou na palestra. Então, vá para o site do CS50 para toda a lista de seminários. Se você não registrar, no entanto, isso é bom. Vá em frente e se inscrever ainda e nós o acompanhamento com um link de streaming ao vivo, o dia ea hora está no site. E tudo vai ficar gravado e colocado online se você não pode fazer a dias e horários específicos. Quanto ao que está à frente thereafter-- bem, é claro, há o hackathon CS50. Esta foto, recall, a partir de zero tomadas semana em torno 04:00 uma noite no ano passado. A feira CS50, que mais uma vez terá lugar em ambas as cidades. E então, apenas para plantar a semente, mesmo que ainda ter um mês mais à esquerda do semestre, se você gostaria de se juntar próprio ensino do CS50 equipe, e você quer começar pensando em se tornar uma AC, ou ensino companheiro, sei que nós vamos começar a falar mais sobre isso no final deste semestre. Mas é retratado aqui a maior parte da equipe deste ano. E assim, PHP-- e eu estava tão triste na semana passada que [? Allyse?] Gentilmente foi para o esforço de chegar nós estes adereços maravilhosas que eu não acabam usando, por isso, realmente só parecia um pouco estúpido que tínhamos uma pá sentado aqui último dia de quarta-feira, e um pouco de colher. Mas esta foi a minha metafórica forma de tentar pintar a imagem de por que estamos em transição de C para uma linguagem como PHP. E o mesmo poderia ser dito de qualquer número de languages-- Java, Python, Ruby ou cachos de outros-, mas enquanto em C, por exemplo, escrever um programa em C pode normalmente ser como tomar uma colher como este e cavando um buraco no chão, na areia ou a sujeira. PHP permite que você tome muito mordidas maiores fora do problema, escrever muito menos código usando uma ferramenta muito menor, porque há muito mais funcionalidade remendado in. Agora, se nós realmente dramático, nós teríamos algo a pá aqui, mas que assim seja. Enquanto isso, a outra metáfora que surgiu com é, naturalmente, você poderia usar algo como uma chave a martelar em algo como um prego. Mas é claro que, se o direito ferramenta para uso vai a ser não tanto a linguagem chamada C-- e agora eu só irritado [? Sanders,?] Provavelmente, vamos corrigir isso tão later-- a ferramenta certa para usar muitas vezes não vai ser esta ferramenta de nível mais baixo. E, de fato, C não é uma linguagem que a maioria de vocês nunca vão usar, ou deveria necessariamente usar novamente. E, na verdade, um pouco secret-- a única vez Eu uso C mim é muito bonito entre Setembro e dezembro de cada queda semestre. E isso é porque nós usá-lo como uma oportunidade para ensinar os fundamentos de programação, e com ele computador fundamentos da ciência, dados estruturas, algoritmos e do como-- mas muito rapidamente vai você ver agora que a sintaxe e as ideias subjacentes C são tão maravilhosamente transferíveis para mais moderno linguagens de alto nível, como PHP e Python e Perl e Java e Objective-C--, na verdade, não tanto Objective-C-- mas Swift, estes mais recente línguas que muitos de vocês em seguida, brincar com você projeto final. Assim, sem mais delongas, vamos realmente usar o PHP para resolver alguns problemas. Lembre-se que no início, último semana, nós apenas utilizado CS50 IDE, nós escrevemos um programa pequeno dinky que apenas disse: "Olá, mundo". E então eu salvou em um arquivo chamado hello.php. E então eu corri este comando. E porque? Em Inglês, o que está acontecendo aqui? O que eu estava fazendo quando Corri esse comando? Sim? AUDIÊNCIA: Há alguma função PHP que lê o que está em-- entende isso. DAVID MALAN: Bom, há alguma função PHP-- e deixe-me ser mais específico, há um programa chamado PHP, a.k.a. Um intérprete, que entende o conteúdo de ola.php, e interpreta-lo de cima para baixo, da esquerda para a direita, e faz o que os comandos dizer. Os comandos ola.php, é claro, é apenas fonte code-- funções e variáveis ​​e loops e semelhantes, que nós mesmos começaram a escrever em PHP. Mas ao contrário de C, que é uma linguagem compilada, PHP você acabou de escrevê-lo e executá-lo. Você pular essa etapa intermediário de convertendo-a em zeros e uns, e, em seguida, executá-lo. E então o que é um lado positivo disso? Por que estamos pular o passo? Por que linguagens mais modernas tendem a ignorar este passo? Qual foi o benefício? Ou apenas intuitivamente? Mesmo que não tenho PHP escrito muito antes, o que é benéfico sobre não compilar o código que você acha? Não? Não cometer? Coçando a cabeça? Sim. AUDIÊNCIA: mais dinâmico. DAVID MALAN: mais dinâmico? O que quer dizer? AUDIÊNCIA: [inaudível] DAVID MALAN: OK, bom, então dependendo da entrada, você não tem que compilá-lo cada vez. E isso realmente é tão simples como o que isso-- é o ponto de continuar para compilar o código? Este é apenas um passo que é making-- este está exigindo, Para os últimos semanas, duas vezes como muitas etapas como apenas a execução de seu programa. Tem sido útil em ver que você veja algumas mensagens de erro e assim por diante, mas ainda é apenas um passo irritante. E para que os programadores perceberam ao longo do tempo, por que não nós começar a escrever línguas que não o fazem precisa que passo bastante mecânica, de modo que pode apenas escrever seu código e executá-lo. Mas o que era o preço que vimos que pagamos na semana passada, com um exemplo particular? Sim? Speed. Assim [? o que é?] intérpretes um pouco mais lento, em que zeros e uns estão agradável e rápido para um computador compreender, porque o Intel CPU, ou seja o que for, apenas entende o que está acontecendo com esses padrões de bits. Considerando que um intérprete é um programa que realmente tem de ler a fonte Ascii código que você escreveu, e convertê-lo, por assim dizer, ou descobrir como ele converte em última análise, a zeros e uns. Por isso, só tem um pouco pouco de um acerto de desempenho. Portanto, é um pouco de um trade-off. Agora, se fizermos isso aqui, deixe-me vá em frente e fazer um exemplo a seguir. Se eu entrar aqui, novo arquivo, eu vou para salvar este novo é hello.php. E agora eu estou indo para ir em frente e dizer: "print Olá mundo" - e lembro que eu possa usar impressão, eu não tem que usar print-F. E agora aqui em baixo, se eu fizer PHP de hello.php, eu huh-- não parecem ter interpretado isso. O que eu fiz errado? AUDIÊNCIA: As pulseiras anguladas. DAVID MALAN: Sim, você precisa que top ângulo do suporte para cima. Então é meio chato, mas você se acostumar com isso rapidamente. Se eu tenho que escrever código PHP, I geralmente precisa dizer ao programa, ou dizer o intérprete, hey PHP, vem aqui algum código PHP. E, em seguida, para uma boa medida, eu o faria fechar esta não com este, mas sim com apenas questão ângulo marca suporte, de modo que agora aqui em baixo, se eu executar isso de novo, agora Eu obter o resultado desejado. Agora vamos fazer uma pequena otimização, apenas para que você já viu isso antes. Este é tipo de chato que eu tem que executar PHP espaço hello.php, porque no passado eu poderia simplesmente escrever barra dot nome do programa, que é tipo de Nice. É uma espécie de uma melhor experiência do usuário. Então não é que você pode fazer isso em PHP com o I following-- pode usar este críptica encantamento no topo aqui, que é geralmente chamado de shebang, pelo que este é um símbolo afiada, por assim dizer, este é um estrondo ou um ponto de exclamação. E isso agora é o caminho para um programa em um sistema Linux típico que é chamado de meio ambiente, ou env. E este linha-- longa história uma linha de short-- apenas diz, hey computador, encontre o PHP intérprete para me no meio ambiente, encontrá-lo em sua memória, por assim dizer. E o que é bom agora, é que se eu descer aqui, Eu posso fazer barra dot Olá php ponto, ou-- hmm. Acesso negado. Bem, você vai ver ainda mais este com problema de definir sete, se você já não o fez, com permissões. Acontece que eu preciso para executar este comando chamado [? chamod?] para a mudança mode-- um mais x ola.php. Eu preciso [inaudível] um presente adicional passo que está dizendo a meu computador, tornar executável hello.php. E agora veja o que happens-- dot cortar hello.php, ele só é executado. Eu não precisa especificar o intérprete mais. E eu posso fazê-la ainda mais bonita, ainda, se eu mudar o nome desta coisa. Se eu mover hello.php apenas Hello-- assim notar no canto superior esquerdo, o nome do programa é na verdade apenas agora Olá. Agora eu posso fazer parecer que um programa C, mesmo que ele é escrito em PHP-- ou francamente qualquer número de outras línguas. Assim melhoramento marginal, nenhuma diferença funcional. Mas é apenas um pouco de curiosidade agora, para que você possa escrever programas em qualquer idioma, eo usuário não faz tem que saber ou se importar o que aqueles são. Bem, vamos olhar para um mais exemplo convincente agora que eu chicoteado até com antecedência. E isso é chamado quote.php. E está disponível online. E note que é muito short-- mas é um programa de linha de comando que é vai olhar para cima os preços das ações para mim, o que está realmente acontecendo ser pertinente para o problema definido sete. Então vamos ver o que estou fazendo. No topo Eu tenho o aberto suporte de ponto de interrogação PHP. Então eu tenho essa linha, pelo que eu sou exigindo um arquivo chamado functions.php-- vamos ver mais sobre isso em um bit, mas isto é como C do versão do sharp incluem, onde você quer ir incluir outro arquivo. PHP chama-lhe exigem, embora também tem uma função de incluir. E verifica-se que é function.php apenas algo que eu escrevi antes da aula. Eu colocá-lo no mesmo diretório, por causa Eu queria fatorar algum código que pode querer usar em outros lugares. Enquanto isso, você pode, provavelmente, inferir o que está acontecendo aqui. Este é um pouco diferente do C-- mas o que quero dizer com assegurar o uso adequado? Traduzir esta mais tecnicamente. Em que circunstâncias eu sou sair do programa, ou sair? Sim? AUDIÊNCIA: Quando você não tem dois argumentos de linha de comando. DAVID MALAN: Quando eu não tenho para comandar os argumentos da linha. E lembre-se que um dos argumentos é o próprio nome do programa. E a segunda vai ser outra palavra que eu escreva depois do alerta. Então, tal como C, este é a minha maneira de verificar, se o usuário cooperar e executar o programa como eu pretendia? Agora, há algo um pouco diferente com C-- antes de tudo, ter este sinal de dólar, eo que faz um dólar assinar denotar em PHP? Apenas uma variável. Isso é tudo-- apenas uma variável seguido por o que você quiser chamá-lo de fato. Observe que há algo faltando meu programa PHP, exatamente como ele estava faltando última semana, contra C, o que é o quê? A tipos, mas também algo mais. Não há algo function-- função principal. Não há nenhuma função principal. Você acabou de começar a escrever seu código sem ter se preocupar com um bastante arbitrária convenção de nomear alguns padrão função principal. Então arg C é realmente apenas uma variável global que o intérprete faz disponível para mim. Agora, isso é interessante. Então, olhar para cima stuff. Estoque sinal de dólar é sobre a à esquerda, que é a minha variável. No lado direito, há, aparentemente, uma função em PHP chamada pesquisa que Eu estou passando minha última linha de comando argumento a-- qualquer que seja a palavra é. E vamos ver como este funciona em um momento. E então, finalmente eu estou relatando o preço. Estou imprimindo um partes de tal e tal. E lembre-se, esta é a em forma PHP-- uma maneira em PHP-- onde você não tem que fazer o cifrão S anymore. Você pode apenas usar chaves e tampar em alguma variável. Você não tem que se preocupar com usando printf da mesma maneira. E como um aparte, quando você coloca uma variável dentro de aspas duplas como este, você estiver usando uma técnica de fantasia chamado de interpolação variável. Significa apenas que ligar a variável aqui. E como um aparte, alguns de vocês que vêm programação de outros fundos, você não pode usar aspas simples cordas ao redor de fazer isso. Você deve usar aspas duplas para interpolação variável para trabalhar. Caso contrário, você literalmente ver aquelas chaves. Então, finalmente, vamos em frente e executar este. Deixe-me fazer meu terminal um pouco maior. Deixe-me ir em frente e correr dentro de meu diretório cotação. [? CDsource?] [? SOU ?] [? Citação?] Citação PHP dot PHP, e eu vou procurar alguma coisa como GOOG, que é seu símbolo ticker, e uma ação do seu novo nome, Alfabeto Inc, custa US $ 717, a partir de hoje. Tudo bem, se quisermos executar este novamente, qualquer um ter outro ticker estoque eles querem olhar para cima? Microsoft eu acho que é este, MSFT-- $ 53. Eu acho que o Yahoo talvez seja isso. E o Facebook é que. Então, o que é este programa está fazendo? A magia parece estar embutido em que a função de pesquisa. Então, vamos dar uma olhada rápida. Acontece que não vem com PHP, está em functions.php. E nós não vamos passar por esta em grande detalhe, de notar a palavra-chave aqui é que na linha de seis functions.php-- Eu literalmente dizer função. Eu especificar o nome da minha função. Eu, então, especificar qualquer argumentos ou parâmetros, Eu quero que a função de take-- nenhum tipo. E então eu implementá-lo. E eu vou acenar minha mão na implementação, uma vez que é direito bastante avançado agora, mas vamos vê-lo novamente, na verdade, em uma semana no conjunto de problemas de sete. Mas eu posso limpar isso também. Também incluído no código de hoje uma versão de citações, que não tem arquivo dot PHP. Porque o que é presumivelmente nas parte superior do programa chamado apenas citar? Que o chamado shebang-- o encantamento críptica que diz encontrar PHP e, em seguida, executá-lo em meu código aqui. Tudo bem, então que traz nós para onde paramos última tempo-- embora com alguns exemplos mais avançados. Quaisquer perguntas até agora sobre PHP ou o que estamos fazendo? Não-- tudo bem. Sim? AUDIÊNCIA: Inside the Arquivos HTML, fazer vocę-- [? Você ?] [? basta chamá-lo?] um [inaudível] arquivo PHP? DAVID MALAN: Boa pergunta. Em um contexto web, o que nós somos literalmente sobre a transição para, você não usar o chamado shebang na parte superior, porque o server-- web, muitas vezes um programa chamado Apache ou Microsoft IIS, Internet Information Server, ou qualquer número de outro software de servidor web, sabe que quando vê um ficheiro de ponto de PHP, que ele deve executar o intérprete nele. Ele não olha para que a primeira linha. Portanto, este primeiro truque linha é apenas quando você está escrevendo linha de comando programs-- que não vamos fazer de super muitas vezes, mas é a nossa forma de colmatar nossos exemplos de C para agora o nosso PHP. Então vamos realmente colmatar este mundo do mundo da linha de comando para a web fazendo o seguinte. Deixe-me ir em frente e desenhar aqui só por um momento. Então, se temos um servidor web, ou melhor, se tivermos meu laptop aqui, que eu vou chamar assim. E aqui temos a internet de alguma forma. E então para cá, temos um servidor em um building-- esta é a forma como a Internet works-- e aqui é um servidor com algumas luzes talvez. O que está realmente acontecendo entre estas duas ligações? Portanto, neste edifício é um servidor web. Isso é apenas um computador que está executando algum operacional system-- talvez o software gratuito chamado Apache, que CS50 IDE está em execução. Então você pode realmente acha deste edifício como sendo a construção em que CSt0 IDE é armazenado. É aí que todos vocês têm contas, onde todos vocês ter seu próprio servidor web execução, todos vocês têm suas próprias URLs únicas, como nós começamos a discutir, e você verá mais em P. definir seis. Aqui está o meu laptop em algum lugar outro lugar na internet. E então quando eu visitar uma URL que pertence para mim, que o tráfego de internet vai para o servidor, o servidor de receber um HTTP request-- como um obter index.html e é responder a essa página web. Então esse é o paradigma geral. Considerando tudo para cima até agora, hoje, tudo foi acontecendo apenas no limites deste edifício. Eu estava usando o meu laptop, mas Eu estava ligado a CS50 IDE, portanto, todos esses programas que eu estava correndo estava dentro desse servidor, em si. Mas agora, vamos começar a reutilização de PHP para escrever alguns programas reais que são servidos por um servidor web. E para fazer isso, eu estou indo para ir em um monte de exemplos que introduzir esta idéia aqui. Portanto, esta é uma espécie de uma maneira extravagante de descrevendo um paradigma de programação. E, de fato, como você sair CS50 ou trabalhar em projectos finais, ou tomar alguns seguem na classe, você vai começar para ver que o mundo-- especialmente tendo crescido com linguagens como C que são super baixo level-- perceber que não há melhor formas de software escrito. Há certa padrões que você pode seguir, certas formas de organizar seus arquivos e formas de nomear suas funções, de modo que a longa história curta, o mundo chegou-se com um monte de siglas e nomes para as formas de programação. Estes são apenas técnicas que você pode usar. E um deles é chamado MVC, para Model View Controller. E este é apenas, para agora, uma excessivamente complicado maneira de dizer como você deve colocar para fora um site baseado em PHP, no nosso caso. Como você organizar seus arquivos, Como você organiza sua lógica, de uma forma que torna mais fácil escrever sites mais complicados? E, de fato, vamos rapidamente chegar lá com p-set sete. Assim, no mundo de MVC, você está indo para ver que o nosso código pode geralmente ser caracterizado como qualquer modelo de código, ou código do controlador, ou código vista. E eu vou simplificar-lo como follows-- o controlador é o cérebros de seu programa, é onde toda a lógica interessante acontece. Então tudo o que temos sido escrevendo, até agora, em sala de aula, é tipo como controlador code-- ele está controlando seu programa, seus loops, o seu condições, as funções e variáveis ​​e tudo isso. Pontos de vista, agora, vão ser um pouco mais óbvia do mundo da web. A vista é a estética do seu site. É o que o usuário sees-- as imagens, as tabelas HTML, as tags HTML, e todos os de que, todo o estético fofo coisas que não é tão difícil de escrever, mas é apenas o que você está gerando, é a visão chamada, a estética. E modelo, em última análise, vai a base de dados que ser stuff-- vamos começar a mergulhar em tudo a mais nesta quarta-feira. Então controlador é a lógica, vista é o material estético, e modelo vai ser onde nós armazenamos nossos dados reais. Então, vamos olhar para isso mais concretamente com o seguinte exemplo. Eu estou indo para ir em meu diretório aqui de fonte de hoje code-- todos os quais está disponível online. E eu estou indo para ir para a versão zero. E aqui é-- vamos chamá-lo a versão zero do site do CS50. Não há muito aqui em tudo. É uma página web muito simples que é provavelmente usando o HTML tags-- apenas acho que a partir de exemplos do passado? O que é isso? H1-- provavelmente para esse grande negrito título, que em cima do logotipo, CS50. E o que mais está em jogo? Sim? AUDIÊNCIA: Lista não ordenada. DAVID MALAN: lista-- não ordenada de modo que o UL tag e talvez um par de tags de LI. E se você não se lembra destes, honestamente não importa. Estes são uma espécie de fofo detalhes de implementação do HTML que você rapidamente olhar para cima e você está de volta em seu caminho. Vamos concentrar-se mais sobre a programação idéias que são as peças mais suculentas. Então vamos dar uma rápida olhar para o HTML-- e de fato se eu abrir a fonte vista aqui, sim, Isso é exatamente o que está acontecendo aqui. Há uma marca UL. Aninhado dentro do que é a tags LI. E então eu peguei emprestado o URL do currículo real aqui. E, em seguida, no lectures.php é aparentemente outra página gerados dinamicamente que vai ter, vamos see-- ah, as duas primeiras semanas de aula. Assim semana zero e uma semana, vamos olhar para isto-- se eu ver fonte da página, Também super simples. Estes estão levando a duas páginas chamado week0.php, e week1.php. Por isso, considero agora que está acontecendo. Quando clico em week0.php, meu laptop está a fazer um pedido de week0.php. O servidor web, a.k.a., CS50 IDE, está recebendo o envelope virtual. É ver uma mensagem como, obter week0.php. Em seguida, é interpretar o arquivo, topo para baixo, da esquerda para direito-- o arquivo chamado week0.php-- e cuspindo os resultados. Então, dentro desse arquivo, week0.php, deve ser a lógica do controlador que está a gerar este HTML, e em breve veremos isso. Mas, por agora, deixe-me clique em semanas zero, e agora nós temos quarta-feira e sexta-feira, e agora temos os slides lentamente a partir da semana zero. E você pode se lembrar isto de caminho de volta quando. Então, isso é tudo que este site está fazendo. Então, vamos considerar como ele está fazendo isso. Eu vou voltar para o código-fonte aqui, em CS50 IDE, e eu vou abrir index.php. No topo deste arquivo é um monte de comentários. E então, no meio deste arquivo, ele Acontece que, há nenhum código PHP que seja. Porque se você não tem qualquer um dos suporte aberto Tag ponto de interrogação PHP, você está livre para apenas colocar HTML. Uma vez que o PHP intérprete é suposto fazer, é quando se lê esta file-- cima para baixo, da esquerda para direita-- ele só interpreta código que vê entre esses colchetes ponto de interrogação. E qualquer outra coisa que não faz reconhecer como PHP, ele apenas cospe para fora. E HTML está entre as coisas ela só vai cuspir. Portanto, este arquivo pode ter sido chamado index.html, mas eu estou nomeando tudo dot PHP como um trampolim. Lectures.php-- semelhante underwhelming, é apenas um pouco de HTML. Week0.php, semelhante apenas algumas HTML. Mas agora vamos colocar no chapéu engenharia proverbial, e considerar como podemos melhorar isso. Não é difícil fazer isso, mas eu meio de transformou em copiar e colar. E, de fato, se eu fizer semana dois, você sabe o que eu provavelmente vou fazer? Eu estou indo para ir para week1.php, eu sou indo para realçar tudo. Eu estou indo para copiá-lo, colá-lo em um novo arquivo chamado week2.php, ajustar algumas URLs, e estar no meu caminho. Assim, com base no que nós temos visto em C já, esta não se sente bem, eu espero. Copiar, colar raramente a solução certa. Então o que podemos começar fazer para melhorar isso? Onde estão as oportunidades para melhor design? Até o momento eu chegar oito semanas, ele vai para ser realmente irritante se eu quiser mudar o tipo de letra de cada um dos minhas páginas, ou se eu quiser para mudar a estrutura do layout. Então, onde está a oportunidade para melhor design? Bem, vamos considerar o que é compartilhado entre todos esses arquivos. Aqui está uma semana, aqui está semana zero, aqui está lectures.php, aqui está index.php-- o que é o mesmo e o que é diferente, a grosso modo, em cada um destes ficheiros? Sim? AUDIÊNCIA: [inaudível] DAVID MALAN: OK, bom. Portanto, não há um padrão, com certeza, em que cada vez que eu escolher palestra I, Eu deveria estar gerando um A página que olha muito similar. E assim talvez eu possa alavancar o fato de que realmente, deliberadamente numericamente indexado nosso lectures-- se eu posso colocar ainda mais palavras a sua resposta. E qual é a única coisa que, realmente, que está mudando entre a semana um-- e deixe-me rolar para baixo por isso é aproximadamente na mesma Place-- então aqui está semana zero, aproximadamente na parte superior. Aqui está uma semana, semana zero, uma semana, semana zero. OK, literalmente, se você sabe nenhum programa que seja, isto é agora apenas como um jogo de correspondência padrão. Então, o que é diferente? Sim? AUDIÊNCIA: [inaudível] DAVID MALAN: Bom, então o título está mudando, ainda que levemente. Zero vai, claro, para uma. A mesma coisa está acontecendo na tag H1. E nós não bastante vê-lo tão facilmente, porque as URLs são um pouco longo. Mas essas URLs estão mudando um pouco. Mas o que não está mudando é, ouso dizer, a maior parte do conteúdo do página-- a tag HTML é a mesma, a cabeça é o mesmo, o título é quase a mesma, o corpo é a mesma, e quase tudo o resto é o mesmo, exceto para esses pequenos ajustes. Então, como podemos ir sobre factoring alguns dos isso? Bem, deixe-me propor exatamente que na próxima versão. Então, aqui na versão um, tenho a exata mesmos arquivos, além de um par de outros. Aqui está index.php-- e mesmo se você nunca viu antes de PHP, O que estou fazendo provavelmente para resolver este problema-- com base no que você vê aqui? Sim, é que um ligeiro compromisso? Não? Sim, vá em frente. AUDIÊNCIA: [inaudível] DAVID MALAN: Yep. AUDIÊNCIA: [inaudível] DAVID MALAN: Eu preciso de você para falar um pouco mais alto. AUDIÊNCIA: [inaudível] DAVID MALAN: OK, bom. E eu era penso-- difícil de ouvir, mas eu vocę-- acho que o que você está querendo dizer é que as marcas que eram comuns em cima, e as marcas que eram comuns na fundo, já foram tidos fora, ou relegado para que arquivos? Header.php e footer.php-- e vamos para fazer alguns ajustes para abordar a preocupação que você acabou levantadas sobre a mudança de números, para exemplo, se eu ouvi você corretamente. Mas que parece ser a essência do mesmo. Se havia uma enorme quantidade de redundância no topo da página, e uma enorme quantidade de redundância na parte inferior, vamos literalmente apenas destaque e cortar esse conteúdo para fora, colocá-lo em um file-- separado apenas como a idéia de CSS, onde nós fatoramos estética muito semelhantes, colocados lo em um arquivo PHP ponto separado, usar a exigir que mechanism-- é como C sharp que include-- é essencialmente o mesmo que dizer ir agarrar o conteúdo de header.php, e copiar e colá-los aqui. Mas o que isto significa é que agora em index.php, eu tenho essas duas linhas. Em lectures.php, eu também ter essas duas linhas. Em week0.php, eu também ter essas duas linhas. Então, agora, se eu quiser mudar o título de todas as minhas páginas, ou eu quero mudar o estrutura fundamental, Eu posso mudar isso agora em um só lugar, ou dois places-- cabeçalho e rodapé, respectivamente. Agora inicial do código de olhar um pouco mais enigmática, certo? Mas se você pensar sobre o que a página doing-- é se eu estou pedindo week0.php, assim como no desenho sobre aqui-- quando week0.php é solicitado, o que isso significa? Literalmente, este arquivo é solicitado pelo browser. A.k.a. A web server-- CS50 ID-- agarra este arquivo, week0.php, e lê- -lo de cima para baixo, da esquerda para a direita. Na linha um, ele imediatamente encontra suporte aberto ponto de interrogação PHP, requerem cabeçalho dot PHP, e por isso o que o intérprete PHP does-- que é construído na web servidor, porque nós pré-configurado -lo para você-- ele vai automaticamente em header.php, copia o conteúdo, cola-los aqui. Mas então os encontros de intérprete ponto de interrogação próximo suporte, Então, é tudo feito pensando. Agora é apenas cega cospe as linhas de dois a sete, porque é apenas HTML puro. Obtém a linha oito, e faz isso mesma magia novamente-- abrir o arquivo, agarrando o conteúdo e obrigando-os ou colando- direito ou então lá. Mas eu simplesmente alusão a um bug. Este é um passo parcial para trás, porque se olharmos em header.php, Eu meio que cortar um canto. O recurso que eu desistir, a fim para ganhar este melhor projeto discutível? Sim? AUDIÊNCIA: [inaudível] DAVID MALAN: Sim, eu meio de cortar um canto não trivial. Você apontou que o que estava mudando foi o título, o número no título, e o número no H1. Assim, a minha solução foi, OK, vamos apenas mudar o nome da página, e não lidar com isso problema algum. Então isso é um parcial um passo para trás, com certeza. Mas o que é notável aqui é que o que eu fiz caso contrário é consignado fora todo o material comum. E em footer.php, repare que eu consignado fora tudo isso, ainda que menor, material comum. Então eu preciso de alguma forma agora ser capaz de dar mais um passo para a frente, e corrigi- que as questões de título. Então, vamos fazer isso. Deixe-me ir para a minha segunda versão aqui, o que, mais uma vez, tem os mesmos arquivos exceto por uma nova adição. E é um pouco mais detalhado, mas vamos ver se nós pode provocar uma separação que está acontecendo aqui. Então, ao invés de exigir header.php, e footer.php, Parece que estou exigindo apenas uma file-- chamado, é claro, helpers.php. E deixe-me estipular agora, o que está dentro de helpers.php é apenas um monte de funções que eu escrevi, como antes. Mas eu o chamei helpers.php. Agora, aparentemente, em linha de três e 10, eu sou chamando duas funções no tornar cabeçalho, rodapé renda. Aqueles não vêm com PHP, eu escrevi aqueles mim mesmo. E eu colocá-los em helpers.php. Agora, nós só vi essa sintaxe uma vez, e foi super breve. Mas esta é, aparentemente, um argumento para processar cabeçalho, a função. Por que eu sei disso? Bem, aqui está um parêntese próximos, aqui está um parêntese aberto. E, é claro, assim como em C, qualquer coisa entre esses parênteses é um ou uma input-- argumento para a função. Qual é o tipo desse argumento de dados, com base no que eu destacou? O que esses colchetes indicar, com base na última semana? Sim, é uma array-- especificamente uma matriz associativa. E esta sintaxe reconhecidamente é um pouco funky, mas isso é apenas de passagem em um par de valor de chave. A chave é, entre aspas título, eo valor é CS50. Se tivéssemos feito isso em C, pode, em vez pareça mais com isso, apenas entre aspas CS50-- ou, na verdade, seria encaracolado cintas, ou algo parecido em C, onde a chave é zero, eo valor é CS50. Mas, novamente, em PHP, embora o sintaxe é, novamente, um pouco estranho, ele permite que você passe em palavras em vez de números para associar as teclas com os valores. Então o que isso tudo significa? Se eu entrar em helpers.php, vamos olhar para esta função. renderHeader.php, em vez RenderHeader é a minha função, e eu sei que, porque eu vejo a palavra-chave aqui função. Isso é novo a partir C--, aparentemente, leva um argumento chamado data-- mas eu poderia ter chamado este qualquer coisa, mas eu o chamei de dados, apenas para ser um pouco clean-- e apenas dar um palpite, especialmente se você já programou em algum outro maior nível de linguagem antes, algo acima C, conceitualmente. O que faz suporte aberto igual colchete provavelmente significa? Ou o que poderia dizer? Nós não vimos isso em C. Sim? Uma matriz vazia. Especificamente, isto significa que se o usuário não chamar RenderHeader com um argumento, eu ainda estou indo ter um argumento chamado de dados, mas seu valor padrão é vai ser uma matriz vazia. Então é só uma conveniência agradável. Eu não tenho que gritar com o usuário, ou dizer que você usou minha função errada. Eu só posso dar ao usuário um padrão valor, se eu não particularmente cuidados. Agora essa função, eu sou vai balançar minhas mãos em. Mas esta função permite extrato nos passar essas variáveis ​​em dados em header da seguinte maneira. E esta é a última peça, Eu acho que, de sintaxe descolados. Aqui é a minha nova versão de header.php---lo costumava dizer, literalmente, aberta suporte título CS50, e foi isso. E mesmo para a H1. Agora é aparentemente diz algo bastante badalado. E deixe-me simplificar esta por um momento como se segue. Isto é o que eu tenho mudou o meu título para ser. No entanto, está ficando um pouco feio para suportes constantemente abertas com PHP, e, em seguida, use a função de impressão. Acontece que o PHP tem uma abreviação notação para esta, que é apenas um sinal de igual, o que é tecnicamente um função chamada eco em vez de impressão, mas é a mesma coisa, de forma eficaz. Isso só fica melhor. É apenas uma sintática açúcar, se quiser, que faz com que meu código de olhar um pouco melhor. Mas ao que parece, e vamos ver isso de novo em pouco tempo, temos que chamar este irritantemente longo função chamada HTML caracteres especiais em PHP, pois verifica-se há certas entradas que o usuário pode dar-nos, ou que os usuários podem nos dar, que está indo para quebrar o nosso site. Mas vamos ver que no próximo semana com JavaScript. Mas, por enquanto, só sei que este arquivo, headers.php, simplesmente leva a que título Passei por dentro, fazer certeza de que é seguro para ser injetado em uma web página, e ele cospe-lo como meu título e como o meu H1. Então, se eu entrar nesta versão agora, notar que as palestras tem o seu título de volta, semana zero tem seu título de volta, e na verdade, o HTML Eu estou gerando é idêntico ao que a minha primeira versão foi-- exceto para o meu espaço em branco, porque eu comecei a formatação meu código um pouco diferente. Mas eu tenho gerado todos o código que me interessa. Então deixe-me fazer uma pausa para apenas um momento e ver se houver alguma dúvida ou confusão que eu criei. Tudo bem, então vamos torcer um pouco mais difícil aqui para ver se há uma oportunidade de melhoria. Helpers.php também tinha essa função, chamada RenderFooter. E o que é digno de nota sobre RenderHeader, e RenderFooter? E, novamente, para fins de hoje, saber que a função é apenas extrato minha maneira de passar argumentos em header.php e footer.php. Desculpa? AUDIÊNCIA: [inaudível] DAVID MALAN: Sim, eu só mudou a exigir line. Então, literalmente, eu tenho cometido o pecado de copiar e colar, mais uma vez. Não é um número enorme de linhas, mas vêm on-- se eu estou copiando e colando tudo apenas para mudar uma pequena palavra, ea uma pequena palavra que aponta Alan fora é rodapé aqui, contra cabeçalho aqui. Caso contrário, é tudo idênticas, exceto para, é claro, os nomes da função. Então, o que poderíamos fazer melhor? Bem, deixe-me abrir esta versão aqui, em que em helpers.php, por que não eu apenas obter um pouco mais esperto sobre isso? Faça um pouco mais complicado código, mas chamá-lo de tornar? Então o que eu fundamentalmente mudou? Leva um argumento agora-- dois argumentos, os dados ainda. E então qual é a primeira nome provavelmente está sendo usado para, com base no que você está lendo aqui? Mesmo se alguns dos sintaxe ainda é nova. O que é o modelo de sinal de dólar? Desculpa? AUDIÊNCIA: cabeçalho ou rodapé. DAVID MALAN: cabeçalho ou rodapé. Então, aparentemente, eu decidi que se a única coisa que está mudando é o que eu quero modelo para print-- e por molde Quero dizer isso é modelo para código que eu quero para a saída, mas eu quero tampar em alguma values-- isso, se é apenas o cabeçalho ou rodapé, por que não eu parametrizar isso e chamar o sinal argumento dólar template? E, em seguida, esta sintaxe descolados me permite para criar um caminho em uma variável aqui. Então caminho sinal de dólar é uma variável. O que faz esta sintaxe fazer, se você é familiar? Sim? AUDIÊNCIA: [inaudível] DAVID MALAN: Exatamente. Se template é, entre aspas, cabeçalho, ou se modelo é, entre aspas, rodapé, essa linha não que eu destaque, linha oito, é simplesmente tomar esse nome, como cabeçalho, e concatenando-lo com PHP ponto. Então, nós não tem esse operador em C. Este operador ponto é uma coisa incrível na PHP-- se você estiver familiarizado com JavaScript ou Java, você pode usar o sinal de mais assinar a fazer concatenação. Em C, é uma dor no PESCOÇO e eu sinto muito, em p-ajustou seis, você vai ter que fazer isto-- é uma dor no pescoço para concatenar strings. Por quê? Bem, porque se você tem uma cadeia que é isso por muito tempo, e outra seqüência de caracteres que é isso por muito tempo, você não pode simplesmente ligá-los juntos. O que você não tem que fazer em C? Sim? AUDIÊNCIA: [inaudível] DAVID MALAN: Você tem que malloc memória, ou usar uma matriz na pilha. E você realmente tem que fazer essa matriz grande o suficiente para caber este mais este, além da barra invertida zero. Em seguida, concatenar-los em conjunto, utilizando agitar gato ou manualmente com um loop for, ou qualquer número de técnicas. E vamos mostrar-lhe um par in-p definir seis. É uma dor no pescoço. E isso é realmente o que eu quero dizer sobre este contra isto-- como C contra PHP. Você apenas obtenha muito mais funcionalidades de graça, de modo que você possa se concentrar, idealmente, a diversão parte de codificação, o projeto que você deseja resolver, em vez de o baixo nível de minúcias. Então, isso só gera header.php ou footer.php com base na qual eu chamar. E, de fato, se eu for em index.php, aviso tudo o que é changed-- Em vez de chamando tornar cabeçalho ou rodapé renda, Eu estou chamando render, seguido pelo nome do modelo que eu quero fazer. E você vai ver isto, também, no conjunto de problemas de sete, pelo qual permitirá que você use o mesma função para fazer cachos e cachos de diferentes páginas da web. Então ao invés de me debruçar muito muito mais sobre esses details-- que você verá novamente em conjunto de problemas seven-- vamos olhar em agora o início de uma solução de a um problema mais interessante. Até agora, nada temos tem feito os dados salvos. Na verdade, a única vez que já salvou algo que fizemos nesta classe é quando tivemos uma demonstração muito simples por algum tempo volta, em que usamos arquivo IO em C, e eu acho que eu digitei meu nome, e O nome de Hannah, eo nome de Maria, ou talvez o nome de Andy, e em seguida, guardado um file-- CSV separados por vírgula arquivo valores. E usamos fopen-- eu acho usamos fprintf se bem me lembro, e nós salvamos um arquivo. Agora, que é o mais simples forma de um banco de dados. Se você quiser fazer um site para o Programa Frosh IMs, pelo qual calouros pode se inscrever para um esporte, você idealmente quero fazer algo com esses dados. Na semana passada, nós não fizemos nada com o data-- nós apenas disse: você está registrado, não realmente. Ou talvez eu enviei um email ao Proctor, e foi isso. Mas seria bom se eu pudesse dar que proctor um arquivo CSV, como um arquivo do Excel. Ou melhor ainda, seria seria bom se eu pudesse colocar os nomes desses usuários e dormitório nomes e tudo isso em que uma base de dados apenas vive para sempre, até que eu escolher para apagar os dados. Uma base de dados que permite me para consultar informações. E, de fato, é o que é um banco de dados. Nós introduzimos hoje, e na próxima semana, também, uma tecnologia chamado SQL-- uma Consulta Estruturada Linguagem, que é uma outra língua. É, essencialmente, um programação língua, mas para bancos de dados. E um banco de dados, por agora, apenas pensar em como uma versão super sofisticados do Microsoft Excel, ou Google Planilhas ou Números da Apple. Em geral, é um programa que permite você guardar um monte de dados em linhas e colunas, bastante como você pode em Excel. Mas o que é bom, especialmente se nós não somos super-familiarizados com o Excel, SQL que permite que você a fazer é esta consulta informações escrevendo linhas de código onde você pode, mesmo que o seu banco de dados tem um milhão de linhas na mesma, você pode encontrar coisas super rápido. Na verdade, o Excel é particularmente mau de grandes conjuntos de dados. E, de facto, até alguns anos atrás, acabou Excel só permite que você armazene até 65.535 linhas de data-- que Parece muito, mas ao época eu era um estudante de graduação, e lembro-me tropeçar isso porque eu estava gerando Arquivos CSV para minha pesquisa e eu queria analisá-los rapidamente apenas abrindo-se em Excel. Claro, meu computador apenas acidentado, porque eu tinha mais de 65.000 linhas. Mas de onde veio a 65.535 vem? O que estava fazendo Microsoft, presumivelmente? Se você é bom com as potências de dois? Sim, eles estavam usando um 16-bit valor para representar o número da linha. E dois a 16 é 65,536-- menos um, porque se você índice zero significa que foi o maior número de linhas que eu poderia ter. E foi apenas uma decisão de design. Ao salvar 16 bits, eles me limitado 16.000 linhas, em vez de 4 bilhões, que eu poderia ter tido idealmente. Mas, por agora, vamos introduzir esta mais em um contexto web. E o que é agradável sobre SQL é que, mesmo mas é muito poderosa e bonita sofisticado, que realmente resume até quatro operações fundamentais, quatro funções-chave, se você selecionar, will-- para recuperar dados, em busca para os dados; apagar ou excluir dados; inserir para adicionar linhas para o banco de dados; e atualização. Então, se você já usou o Google Planilhas, números Apple, Microsoft Excel, você tiver executado, muito provavelmente, tudo destas operações como um ser humano por apenas usando seu teclado e mouse-- inserção de dados, usando seus olhos para selecionar ou pesquisar dados, ou dados atualização ou exclusão de dados. Então o que isso quer dizer? Bem, pré-instalado em CS50 IDE é um programa chamado MySQL. É um livre, open-source banco de dados que é super popular. Facebook, por exemplo, usa-o para este dia, entre outras ferramentas que eles usam. E um monte de sites muito populares usar que em grande parte porque é rápido, e porque é gratuito. Embora certamente existam alternativas. E alguns de vocês podem se envolver com alternativas para os projectos finais. Esta é uma imagem de tela, entretanto, de uma ferramenta baseada na Web chamada phpMyAdmin. É uma coincidência que esta ferramenta baseada na Web é também escrito em uma linguagem, PHP, mas o que é que se destinam a fazer é nos dar uma base web- interface para um banco de dados. Porque MySQL é tipicamente algo, você historicamente, iria interagir com apenas com uma linha de comando. E seria super- irritante e arcano ter digitar comandos textuais para seleccionar dados, inserir dados e excluir dados. Por isso, algumas pessoas na internet escreveu um programa baseado na web que apenas deixe-nos gerir os dados em nossa base de dados. É como um duplo clique sobre o Excel, e executando uma versão baseada na Web dos mesmos. E o que você vai usar isso para em última análise, na próxima semana, não em-p definir seis, mas é construir algo chamado CS50 Finanças, que vai ter um banco de dados de usuários, com nomes de usuário e senhas, dólar que equivale têm em suas contas bancárias. Vai ser algo que você usa para armazenar os símbolos e as quantidades de ações que os usuários ter comprado usando virtual dólares que você vai dar a eles. E isso vai permitir que os usuários para se inscrever para o seu site, de modo que mesmo seus amigos pode sintonizar o seu site e realmente se inscrever, log in, e brincar e tentar encontrar falhas no seu código, e tentar encontrar bugs em seu site. E eles vão simplesmente registre-se pela adicionando-se, de forma eficaz, via código que você escreve no seu banco de dados. Por exemplo, esta é uma captura de tela rápida do que um banco de dados pode parecer. Isto era de um dos solutions-- do ano passado este é como um mini Excel arquivo, armazenadas em nosso banco de dados armazenados neste software chamado MySQL. No lado esquerdo, eu tenho aparentemente dada a cada utilizador um número único. Na segunda coluna, eu dei- todos um usuário nome-- minha própria entre eles. E no lado direito, Eu dei-lhes um hash. Agora, esta é realmente uma senha, mas não é uma senha de texto simples. É uma senha criptografada, se você vai, ou uma senha de hash. Que vamos voltar a antes do tempo. Mas se você já leu um artigo sobre como sua senha em algum banco ou algum site pode ter sido comprometida, ele geralmente pode significar uma de duas coisas. Portanto, este é apenas um trecho de seis utilizadores. Todos vocês podem agora descobrir para fora através de hacking ou fissuras o que os nossos seis senhas das pessoas são. Mas se você já ganhou um alerta ou um pedido de desculpas de uma empresa ou site ditado, Desculpe, um hacker invadiu nosso banco de dados você provavelmente deve mudar o seu senha, o que poderia dizer? Bem, um, poderia significar a empresa tem sido mais imbecil, e foi armazenando a sua senha em uma coluna como esta, sem criptografia. O que significa o adversário, que roubou o banco de dados, literalmente conhece o seu nome de usuário e senha. Isso é o pior cenário possível. E como você verá em conjunto p- sete, tão fácil de evitar. Não há absolutamente nenhuma desculpa para que forma de estupidez na internet de hoje. Dois-- e vamos encontrar alguns artigos para dar testemunho do fato de que este ainda acontece, nonetheless-- dois, talvez o adversário roubou esta versão do banco de dados. Que ainda é um pouco mal, porque agora eles sabem que eu tenho seis clientes, Eu sei que os nomes de usuário desses seis clientes, e eu sei que o criptografado versões, ou as versões de hash, de senhas esses seis dos clientes. Mas qualquer um de vocês que pode ter feito [? Hacker 2?] onde você rachado senhas, ou tomou um olhar para essa versão do problema conjunto, por que é ainda um pouco preocupante se o adversário sabe o seu hash de senhas? AUDIÊNCIA: porque eles poderiam introduzir todo o dicionário para a função hash. E se a sua senha é um dicionário palavra, [? eles podem apenas match--?] DAVID MALAN: Exatamente, o adversário pode apenas escrever o código, como alguns de vocês fez para [? Hacker?] 2, em que você iterar todas as palavras do dicionário, ou todas as combinações possíveis de uma através de Z e um meio nine-- que soa como um lote, e é. Mas, para um computador, ele é muito danado rápido. E, de fato, essa foi a ponto de [? Hacker 2,?] Estava para levar o material que literalmente se parece com isso, e engenharia reversa o que ele realmente era. Então, vamos ver como nós podemos armazenar esta de forma mais eficiente. Acontece que, felizmente, em MySQL, lá vai ser tipos de dados. E uma das partes divertidas sobre design de banco de dados, para ser honesto, é realmente decidir por si mesmo como você deve representar os dados? Se você representar um número de telefone como um int, como um número grande, ou muito? Ou você realmente fazê-lo como uma seqüência de caracteres? E não pode ser muito impactos não-triviais deste. Na verdade, um dos primeiros, divertidas histórias germane é quando Mark Zuckerberg estava construindo Facebook, que foi originalmente escrito em, e ainda é, em grande parte escrito em PHP. E um dos maiores desafios eles enfrentaram no início foi escalando. Quando eles continuaram adicionando escola depois escola, depois da escola, que eu saiba, uma das soluções originais era essencialmente para copiar e colar alguns dos bancos de dados e parte do código, de modo que era de Harvard executando em seu próprio servidor, e MIT estava correndo em seu próprio servidor. E foi por isso que, para alguns de você que pode se lembrar, você não poderia ter amigos em outras redes. Você provavelmente não tem amigos no MIT ou Harvard 10 ou mais anos atrás, mas você não poderia abranger as redes por essa razão, em parte. E um dos maiores desafios para a Mark e para empresas como Facebook na verdade, é de manuseamento centenas e milhares e milhões de solicitações por segundo. Então as coisas que vai começar falando esta semana são realmente vai ser pertinente para escrever um bom software, e popularmente ferramentas de sucesso que pode lidar com muitos usuários. Então, vamos falar de coisas como indexação e pesquisa, mas isso é tudo por hoje. Vamos vê-lo para saber mais sobre quarta-feira. [MUSIC - TEMA "Seinfeld"] DAVID MALAN: você pode lo, e subtrair. E você não tem que ficar com alguns montante pré-determinado de memória. Bem, o que é que vai ser chamado? COLUNA 1: Bem, o que está acontecendo? COLUNA 2: O que você quer dizer? Ele está dando uma palestra. DAVID MALAN: E podemos usar um função chamada malloc para memory-- COLUNA 1: Por que não estão se movendo seus braços? COLUNA 2: Bem that's-- você sabe, isso é normal. É como ele tem apenas grandes salsichas pendurado lá. COLUNA 1: Isso é normal? COLUNA 2: Sim, eu acho que nós simplesmente assumir que ele acidentalmente substituiu seu desodorante com supercola.