[Powered by Google Translate] [Semana 7, continuação]
[David J. Malan, Harvard University]
[Esta é CS50.] [CS50.TV]
Tudo bem. Welcome Back. Este é CS50,
e este é o fim da semana 7.
Assim, uma dessas coisas estúpidas pequenas que gira em torno da Internet
e sorveu-se, e deve agora fazer um pouco de sentido nerd para você.
Bem, era mais engraçado com esse cara do que era para vocês.
Falando nisso, bem, pessoal,
hoje é o aniversário de Nate.
Para lhe dar uma sensação de Nate o quão bom e eu somos
em desenvolvimento web com base na classe de segunda-feira e com base agora sobre isso,
Eu pensei que eu ia puxar página Nate casa, se você não viu ainda.
Este aqui HTML ia Nate.
Então, ver o seu código fonte, se você gostaria de ver como fazer isso, e Nate,
se pudéssemos embarass você apenas brevemente, a equipe tem uma coisinha
se você gostaria de compartilhar alguma sobremesa com algumas das crianças da classe aqui.
Se você gostaria de vir para baixo.
Vocês todos aplaudem e são muito agradáveis, mas ninguém está sentado perto Nate,
por alguma razão, aquela zona em volta.
Então talvez você pode encontrar algumas pessoas para desfrutar estes com.
Feliz Aniversário, Nate.
>> Hellos adicionais: Nós mostramos um clips casal de nossos alunos CS50x.
Se você gostaria de ver quem é no mundo
que está acompanhando, você pode ir para esta URL,
onde José, um dos nossos TFS, montou uma espécie de montagem
de todos que tem enviado os vídeos, entre eles Rick Astley.
E se você percorrer estes, é realmente muito inspiradora
ver a diversidade de países e cidades a partir do qual as pessoas estão vindos.
Então, se você gostaria de dar uma olhada nisso, que será de até o final do semestre.
Hoje vamos continuar o nosso olhar para a Web, programação web, HTML e afins,
e também almoçar chegando nesta sexta-feira
se você gostaria, e, particularmente, não o fizeram antes.
O tema deste sexta-feira será o aniversário de Nate,
Então, se você gostaria de ter almoço de aniversário com Nate
e outros, alguns dos nossos amigos da Indústria,
por favor cabeça para a URL lá.
Espaço, como sempre, é limitada. Além disso, se você esqueceu,
perceber que na próxima semana é o prazo para o problema definido 4 de caçada,
em que depois de se recuperar de todas essas JPEGS de card.raw,
você e seus companheiros de seção, se você quiser, pode tentar fotografar
como muitos dos cientistas da computação de cartão de memória que possível,
e você e sua seção irá ganhar um prêmio fabuloso.
Remeter para pset 4 de especificação sobre o que apresentar e quando.
Além disso, se você gostaria de ter a sua obra imortalizada
no site do curso e sua história de vestuário,
sei que você é bem-vindo agora para começar a enviar projetos
para este ano, T-shirts e camisolas e afins.
Nós vamos fazer o nosso melhor para incluir o maior número que podemos,
mas vamos ter alguns membros do pessoal da revisão de todos os projetos
para se certificar de que eles estão de acordo com as especificações,
e em seguida, escolher geralmente um punhado deles para ser exibido.
Então, se você é o tipo de construção, só sei que os requisitos
para gráficos PNG são, pelo menos 200 DPI,
não deve ser superior a 4000 x 4000 pixels,
e não mais de 10 MB, mas você é bem-vindo para usar coisas como
Photoshop ou GIMP ou vários gráficos de programas,
o que você tem à sua disposição.
>> Também no horizonte é o projeto final. O projeto final é realmente o clímax de 50,
qual de todas as atribuições do curso,
É a sua oportunidade de realmente fazer sua própria coisa.
E isso pode ser simplesmente fazer algo para se divertir,
pode ser para resolver algum problema premente seu grupo de estudante tem,
por algum novo site, algum mecanismo de nova coleção de dados.
Pode ser uma aplicação móvel para o Android, para iOS.
Realmente, o céu é o limite, e ao longo das próximas semanas,
como transição de C para essas linguagens de alto nível como PHP e JavaScript,
você vai encontrar-se cada vez mais familiarizados com algumas técnicas do mundo real,
algumas ferramentas do mundo real, e para complementar que,
sei que o curso tem uma história de seminários,
em que ao longo das semanas seguintes, alguns dos docentes
e nossos amigos de no campus vai oferecer seminários opcionais
que vão acima e além do que é normalmente feito na seção
para apresentar-lhe coisas como programação Android,
para apresentar-lhe coisas como iOS programação
ou mais avançadas técnicas de desenvolvimento web.
Há toda uma história de estes já online.
Se você vai para cs50.net/seminars, estamos fazendo isso há vários anos,
e você vai ver que arquivado aqui com PDFs e vídeos e afins
são dezenas de vídeos de vários seminários.
No ano passado, por exemplo, tivemos um seminário sobre acing suas entrevistas técnicas,
se você está realmente olhando para sair e fazer um estágio ou de tempo integral show.
Windows mobile desenvolvimento, desenvolvimento Android, Google Maps,
API, CSS, desenvolvimento para o BlackBerry, Emacs.
Realmente, você é bem-vindo para dar uma olhada em qualquer um desses seminários de sua conveniência.
E nós vamos estar segurando alguns novos neste semestre, também.
>> Então, o que está à frente com o projeto final?
Bem, em primeiro lugar, mesmo que esta data é um pouco iminente,
isso é realmente apenas uma oportunidade para começar a pensar o projeto final bastante realista.
Sabemos apenas o começo de algumas das coisas que nós ainda vamos fazer a cobertura no curso,
HTML, PHP e afins, mas estamos todos familiarizados com a web,
e preconceito eu esta conversa para a Web só porque
a maioria das pessoas acabam fazendo projetos baseados na Web finais,
mas que não é de forma necessária.
Usando C é bom, Objective C, Java,
qualquer outra língua que você possa saber ou querer saber, é bastante tênue.
Mas, para obter os sucos fluindo inicialmente, vamos esperar a apresentação de um preproposal
que, por o PDF no site, que é agora de cs50.net,
e no canto superior esquerdo você verá projeto final
é a especificação para o projeto final,
e existem em mais detalhes sobre a preproposal e similares.
Ferve praticamente resume a um e-mail para o seu companheiro de ensino
apenas para iniciar uma conversa com ele ou com ela sobre o que você está pensando.
Em projects.cs50.net é um repositório de ideias de pessoas no campus
se você está lutando para chegar a alguma idéia,
e manual.cs50.net/APIs é um repositório de links para APIs.
>> O que, porém, é uma API?
O que é uma API? Eu já disse isso pelo menos duas vezes,
de acordo com as transcrições das últimas semanas.
O que é isso? [Estudante, ininteligível]
>> Ok, bom. Então, interface de programação de alguma coisa.
Interface de programação de aplicativo, e isso pode tomar várias formas,
mas o que isto resume realmente para baixo é de código
que alguém hs escrito ou dados que alguém tenha coletados
que está disponível para você de alguma maneira programática.
Você pode escrever código em C, PHP, Python, Ruby,
qualquer que seja o idioma de sua escolha geralmente é,
e você pode de alguma forma construir em cima de outra pessoa funcionalidade
ou de outra pessoa conjunto de dados.
Por exemplo, se eu ir a este link aqui,
e você vai ver um par de links na página seguinte
pelo qual temos próprias APIs CS50, que são muito Harvard-centric, e depois APIs de terceiros.
Entre as APIs de terceiros são coisas realmente úteis
como ser capaz de enviar as pessoas para o SMS, o
ser capaz de receber mensagens de texto SMS de pessoas.
E coisas assim que você pode ter nenhuma idéia de como implementar a si mesmo,
mas graças a serviços, alguns, livres e alguns comerciais
você pode construir sobre aqueles e fazer algo de interesse para você.
Entre APIs CS50 são estas coisas campus-centric como
Cursos de Harvard, energia, eventos, alimentação, mapas, notícias, tweets e Shuttleboy próprio,
e estes são APIs que olhar um pouco algo como isto.
>> Deixe-me puxar para cima a API HarvardFood.
Se você já foi para o site do HUD, você provavelmente já esteve lá
apenas para ver o que há para o jantar ou para ver o que as horas são para alguns d-hall.
Bem, não é particularmente fácil de navegar,
e assim o que fizemos há algum tempo foi que escreveu o software,
ele passa a ser em PHP, que realmente tela raspa a totalidade do site HUD.
Para a tela algo raspar significa escrever um programa em uma linguagem como PHP
que pretende ser um navegador, mesmo que você possa executá-lo em um prompt de comando,
que pretende ser um navegador, se conecta a um site,
transfere seu HTML, a linguagem em que está escrito,
e, em seguida, lê-lo, ou mais especificamente, analisa-lo
de cima para baixo, da esquerda para a direita.
E o que fizemos foi que nós escrevemos o nosso código de tal forma que
toda vez que viu algo em que o HTML que parecia algo no menu,
como hambúrguer, teríamos então que importar para o nosso próprio banco de dados.
E toda vez que viu o conteúdo nutricional, teríamos que importar para o nosso próprio banco de dados.
E o que fizemos foi aproveitar o fato de que o site do HUD,
embora possa ser um pouco de um desafio para nós seres humanos para navegar
debaixo da capa, todo o HTML é gerado pelos seus próprios programas de computador.
Então, todo o seu HTML, mesmo que possa parecer confuso,
como a maioria dos sites debaixo do capô, ele segue um padrão.
Então, só passei um par de horas para descobrir que o padrão
de modo que, no final, nós jogamos fora todo o HTML bagunçado,
todos da estética de enfrentar negrito e itálico e afins,
eo que nós somos então capazes de fazer é expor os mesmos dados.
Por exemplo, desta maneira.
Portanto, de acordo com a documentação aqui,
informaram o mundo que se você solicitar uma URL
que se parece com isso, food.cs50.net / alguma coisa,
e você fornecer certos parâmetros, que vamos falar hoje,
como data final hora de início da data-refeição, tempo, e assim por diante,
o que os nossos servidores irá retornar para você, por exemplo,
é um arquivo CSV vírgula, separted valores como um arquivo do Excel,
contendo tudo no café da manhã, nesta data especial em março do ano passado
quando aconteceu de eu escrever esta documentação.
>> Para os familiares, CSV não é o formato de arquivo único.
Há outro formato que é tudo o mais versátil
chamado JSON, JavaScript Object Notation.
Os dados podem voltar nesse formato.
Assim, o takeaway aqui é que se você mergulhar nessa API
ou qualquer outro dos CS50 ou qualquer coisa lá fora, na Internet,
ou não em tudo, perceber que o mundo tem cada vez mais começou a padronizar
como as máquinas se intercomunicam.
Usamos formatos padrão de dados como CSV ou JSON.
E o que isto significa para você é que você pode escrever a parte interessante de um programa
que permite que o usuário procure um menu de refeitório,
que lhes permite criar listas de favoritos que lhes permite receber alertas de texto
quando a sua refeição favorita está prestes a ser servido em alguns d-hall
usando conjuntos de dados de outra pessoa e de construção em cima de sua API.
Assim, mais do que em forma de seminários e da documentação que você tem aqui em linha.
Portanto, aqueles, então, são APIs.
>> Isso nos traz de volta ao HTML. Rápida recapitulação.
O que é HTML?
[Estudante, ininteligível] Boa. >> HyperText Markup Language.
Outra pessoa, o que é Hypertext Markup Language?
HyperText Markup Language.
Okay. Então, HTML, HyperText.
HyperText refere-se apenas para a Web, para a maior parte.
Marcação significa que não é, na verdade, uma linguagem de programação, HTML.
Não é uma linguagem que você pode expressar a lógica dentro
Ele não tem loops. Ele não tem condições.
Ele não tem funções, per se.
Pelo contrário, tem essas coisas chamadas tags, ou mais corretamente, elementos.
E esses elementos têm marcas de início e tags de fim,
ou tags abertas e tags fechadas, e que essas marcas geralmente significa para um navegador é,
começar a fazer alguma coisa e, em seguida, parar de fazer algo, embora haja exceções.
Às vezes é apenas "colocar uma quebra de linha aqui", por exemplo.
E nós vimos exemplos de que no outro dia, entre o enfrentamento negrito,
quebras de linha, e então um par de outras tags.
Então HTML é a linguagem em que páginas são escritas.
Então, se eu for para algo como Google.com
e puxe-se apenas a página a sua casa,
lembrar que, se você clique direito ou controlar clique
e olhar para a origem da página vista, tipicamente
é uma bagunça completa nestes dias debaixo da capa, mas isso é porque
computadores não se preocupam com o espaço em branco, para que isso não tem que ficar bonita.
Mas se ampliar em partes do mesmo,
observar que o Chrome, apenas para ser agradável, tem código de cor as coisas.
Na verdade, esta é a primeira tag que vimos em uma página web.
E, novamente, o HTML 5, a última versão dessa linguagem,
tem essa coisa no início,
<! Doctype html, se maiúscula ou minúscula,
mas isso é apenas uma espécie de padrão que diz, hey mundo, aí vem um arquivo HTML na versão 5.
>> A parte interessante começa aqui. Então <html, e depois havia duas crianças
dos elementos HTML última vez.
O que eram aquelas duas crianças principais?
Cabeça e corpo, assim como o cara com a tatuagem de um momento atrás.
Há duas porções de página da web, cabeça e corpo,
e recordação, então, que talvez a página mais simples web poderíamos fazer parecido com este.
E eu tenho recuado apenas para ser uma espécie de limpo e arrumado com meu código,
mas o que é realmente importante aqui é que não há uma hierarquia para isso.
E qualquer marca que eu abri eu ter fechado e que não há, portanto, esta simetria
a todos da marcação que eu criei.
Então última vez que comecei a escrever páginas da web no meu próprio computador portátil.
Eu abri edição de texto, eu salvei o arquivo como hello.html,
Eu, então, arrastou o arquivo para o meu navegador, e pronto, eu tinha uma página na Internet.
Agora, não é bem assim, eu tinha uma página no meu disco rígido,
e eu estava literalmente a única pessoa no mundo que iria ver a página web em um navegador.
>> Então, hoje, nós introduzimos um servidor web real
ea noção de verdade servindo de conteúdo na internet
e como isso tudo começa a se encaixar.
Assim, verifica-se que todo este tempo no aparelho CS50
você já teve um servidor web em seu computador.
Nós, com justiça, apenas utilizado para gedit, por Clang, para o GDB e similares,
mas também instalado por nós para você no aparelho é um servidor web,
e que o servidor web passa a ser livre, de código aberto,
um dos mais populares do mundo, chamado Apache.
Seu nome mais técnico é HTTPd, o d estar para daemon aqui,
que é um termo técnico para um servidor.
Então instalado no aparelho CS50 é um servidor web, eo que é que isso significa?
Bem, um servidor web é, conceitualmente, algum servidor na Internet que serve de conteúdo web.
Quando perguntado sobre um arquivo, ele cospe o HTML que compõe o arquivo, e pronto.
Você vê alguma página inicial do site.
Mas um servidor é, mais precisamente, uma parte do software.
Ele não tem que estar em uma máquina física, ele só tem que ser um pedaço de funcionamento do software.
Assim, o aparelho CS50, é claro, é um componente de software
mesmo que ele é uma espécie de fingir ser uma máquina.
Ele finge ser um computador dentro de um computador,
mas isso só significa que o aparelho pode certamente executar coisas como servidores web.
Ele pode rodar servidores de e-mail.
Nós poderíamos executar um servidor de mensagens instantâneas no aparelho, se quiséssemos,
e, de fato, nós executar um outro tipo de servidor, conhecido como um servidor de banco de dados, mySQL.
Mas mais sobre isso na próxima semana.
Isso significa que eu posso realmente visitar páginas da Web
dentro do meu aparelho usando um navegador dentro do aparelho
ou até mesmo no meu laptop, meu Mac ou o meu PC.
Então, o que isso significa? Acontece que toda vez que você estiver executando um computador com Linux,
seu apelido é "host local."
Ele não tem um nome de domínio, porque não compraram um nome de domínio
para algo como o aparelho, assim que seu nome padrão é host local.
>> Mas, para obter o aparelho para começar a servir as páginas,
temos que criá-los primeiro.
Então, vamos fazer isso. Deixe-me entrar em uma janela de terminal aqui
e perceber que eu estou no meu típico John Harvard prompt.
Deixe-me ir em frente e digite ls, e vamos ver algumas coisas familiares a partir deste semestre,
desktop, downloads, dropbox e assim por diante,
mas agora nós começar a transformar a nossa atenção para um casal.
Em muitos servidores web Linux há essa pasta chamada html público,
mas vamos pular essa uma para agora e focar esta vhosts,.
Alguém sabe o que é um vhost?
Apenas jargão estúpido por máquina virtual,
eo que isso significa é que, em um típico servidor
você pode realmente hospedar vários sites.
Você pode comprar um nome de domínio como foo.com, e você pode hospedá-lo em um servidor.
Mas você também pode comprar bar.com e hospedá-lo no mesmo servidor.
A razão de ser, os navegadores são inteligentes o suficiente para informar ao servidor
quando um usuário está solicitando alguma página, o que o nome de domínio que o usuário quer a homepage para.
Então, o que é legal sobre isso é que você não precisa de um servidor físico
ou um aparelho CS50 para cada site que você pode criar.
Você pode usar o mesmo servidor e desenvolver uma centena de sites diferentes.
E, de fato, se você é uma pessoa que tenta iniciar um site,
para se divertir ou para o negócio, normalmente você vai sair na Internet,
e você vai pagar alguém 10 dólares por mês, cem dólares por mês
para hospedar seu site para você.
E a maneira que funciona é que eles estão cobrando outras pessoas
10 dólares por mês ou cem dólares por mês
para hospedar sites de outras pessoas em seu servidor mesmo.
A razão que eles podem fazer isso é por causa deste recurso chamado bhosts,
mas mais sobre isso quando se trata tempo para projetos finais.
>> Por agora, vamos mergulhar lá. Então vhosts cd, e se eu digitar ls agora,
perceber que há uma pasta lá chamada host local.
Isso porque, por padrão, os números de aparelhos
você está sempre indo para executar um site em um aparelho.
Isto não é realmente o mundo real, não é um servidor web no mundo real.
Então deixe-me ir para locais de acolhimento, e agora vamos ver lá
um último diretório chamado HTML.
Então é um pouco profundo, a hierarquia, mas se e quando
você decidir começar a desenvolver vários sites ao longo dos próximos meses ou anos n,
este tipo de estrutura da pasta tende a ser útil.
Agora vamos em HTML como eu fiz,
ls tipo, e nada está lá.
Então agora vamos seguir em frente e fazer isso. Deixe-me abrir Chrome
interior do aparelho, e deixe-me ir para http://localhost.
Então, literalmente, o nome para o meu aparelho, entrar, e eu recebo índice de /.
Isto não é realmente mostrando-me qualquer coisa de interesse,
mas acontece que o que estamos vendo é que pasta, HTML.
Não há nada dentro dessa pasta, agora,
Em vez disso, o que eu vou ter que fazer é criar um arquivo.
Crie um arquivo HTML, como fizemos na segunda-feira, mas desta vez colocá-lo dentro do aparelho.
Para aqueles de vocês que estão tentando seguir junto com laptops agora,
deixe-me fazer um aparte que vai ser abordado no pset web-based,
mas para chegar a este trabalho para a primeira vez,
você vai ter que correr o comando: sudo start httpd serviço.
E isto, mais uma vez, vai ser repetido no pset último,
mas se você está tocando em casa agora, o servidor web
é desligado o aparelho, e isso é para que ele não enfraquecer a memória RAM
e memória para 7 semanas do semestre quando não precisa.
Então, você precisa executar este comando uma vez, e você vai ter uma saída como essa.
Então você deve ser capaz de jogar junto aqui.
Agora vamos voltar para essa pasta.
Esta pasta está vazia, então deixe-me começar a criar um arquivo,
gedit hello.html.
>> Tudo bem. Gedit é aberta, como de costume. Deixe-me fazer doctype, html,
html, deixe-me chegar à frente de mim e começar a fechar minhas marcas com antecedência.
Agora eu tenho a cabeça. Deixe-me ir à frente e fechar a cabeça,
deixe-me agora fazer o título da página, Olá mundo como da última vez,
título perto, agora deixe-me fazer um corpo.
Aqui eu vou dizer Olá, mundo com alguns exclams
para deixar claro que é uma seqüência diferente.
Corpo perto, e agora deixe-me ir em frente e apresentar salvar.
Deixe-me voltar para a minha janela de terminal, e se eu digitar ls,
Eu deveria, supostamente, ver hello.html. E eu faço.
Então agora vamos voltar para o meu navegador, clique em recarregar,
e você pode ver que estamos de fato dentro desta pasta HTML.
Eu não estou vendo uma página web ainda, o que é o Apache, o servidor web,
apenas me mostrando o conteúdo da lista deste diretório.
Assim como o Mac OS ou o Windows normalmente fazem em sua unidade local rígido.
Então, se eu quero ver esta página web, pode clicar nesse link pouco aqui, hello.html,
e, de fato, é o que eu estava esperando para ver.
Agora, novamente, este não é um URL que qualquer um de vocês pode visitar agora,
porque para você hospedar, local, se você tiver um laptop aqui,
ele está se referindo à sua própria instância do aparelho.
Isso está no meu aparelho pessoal,
mas este é o tipo de idiota que eu tenho, de ter
um usuário como eu clicar em hello.html para realmente ver o conteúdo da página.
Acontece que os servidores web como o Apache deixa você tem um arquivo padrão para qualquer servidor web.
Observe aqui temos hello.html.
Qual é o comando no Linux para renomear um arquivo?
>> MV, para o movimento. Então deixe-me fazer isso,
e deixe-me renomear hello.html a index.html.
Deixe-me digitar ls para confirmá-la agora foi renomeado.
Agora é que isto vai - se eu voltar aos locais de acolhimento,
perceber agora que eu estou vendo que automaticamente página web.
Isso é idêntico ao meu realmente fazendo / index.html,
mas o bom é que agora o servidor web está imaginando,
oh, se você tiver um arquivo que, por convenções humanas, é chamado index.html
deixe-me mostrar o usuário arquivo que por padrão
em vez de algum diretório listagem estúpido que não é de todo user-friendly.
Na verdade, a maioria dos sites que você visita na Internet não tem uma lista de arquivos para clicar,
eles apenas mostrar-lhe o conteúdo. Então é assim que nós podemos fazer isso, index.html.
Portanto, esta é toda a diversão e bom, mas esta é uma página web muito simples.
Deixe-me ir em frente e abrir index.html em meus vhosts,
hosts locais, diretório de html, e vamos acrescentar algo de maior interesse.
Portanto, não há Olá mundo, vamos em vez dizer 'Isto é CS50, Harvard College. . . '
Assim, no início do curso da descrição do catálogo de algum tipo ali.
Agora, se eu recarregar, eu deveria ver isso na minha página inicial.
Ok, e eu vejo isso, mas suponhamos que eu quero agora listar alguns conteúdos mais neste arquivo.
Eu poderia ir até aqui e dizer que nenhum pré-requisitos,
embora alguns de vocês provavelmente estão como, "Ha ha ha, nenhum pré-requisito.
Mas - oficialmente. Então recarregar, e agora temos a peculiaridade mesmo que vimos da última vez.
Mas por que isso? Foi uma simples correção.
Por que é que esta página quebrado?
[Estudante, ininteligível] >> Sim, nós resolvemos isso antes
explicitamente dizendo ao navegador "colocar uma quebra de linha aqui."
E isso porque, novamente, um navegador só vai fazer
explicitamente o que a linguagem de marcação diz para fazer,
por isso mesmo que você pode ter atingido entrar uma ou duas vezes ou mesmo dez vezes,
que vai combinar isso tudo em um único espaço, apenas por convenção.
Então, se você realmente quer uma quebra de linha, você tem que usar a tag br,
e agora o aviso prévio, como segunda-feira, eu coloquei o dentro / dessa marca,
só porque esta simplesmente não se sente bem
para iniciar uma quebra de linha, então pará-lo com nada entre eles.
>> Assim, a convenção em HTML é abrir e fechar uma tag simultaneamente.
Como um aparte, você vai ver um monte de sites de livros não fazendo isso.
É correto fazer ou não fazer, mas diríamos
que o projeto-sábio e estilisticamente, é apenas melhor
porque, então, cada marca é tanto abrir e fechar de alguma forma.
Então agora vamos salvar e recarregar. Volte para o navegador, ok.
Agora nós estamos fazendo algum progresso, mas não é o bastante.
Vamos em frente e começar a digitar em algum tempo o corpo do texto.
Então, vamos dizer, 'A rápida raposa marrom pula sobre um cão preguiçoso. "
E agora deixe-me apenas copiar e colar este algumas vezes
de modo que temos um parágrafo de texto.
Deixe-me voltar aqui. Portanto, não está olhando muito bom.
Eu tenho uma quebra de linha, então está tudo bem,
mas agora, uma vez que estamos chegando ao ponto de ter uma página web
que tem muito conteúdo e não apenas linhas individuais para demonstrar HTML,
podemos começar a pensar nessas coisas como parágrafos reais.
E podemos começar a estruturar a nossa página web um pouco mais limpa.
E, de fato, o que eu posso fazer é ir até aqui, dentro da minha tag corpo,
e você sabe que, se 'Este é CS50. . . ' demarks realmente o início de um parágrafo,
bem, vamos marcá-lo como tal.
Deixe-me recuar o texto, apenas por convenção, deixe-me dizer
que este parágrafo termina aqui,
e depois, em vez de fazer isso quebra de linha, deixe-me dizer
que este pertence lá e como um novo parágrafo,
e eu vou apenas rapidamente travessão por apenas sobrepor todas essas coisas.
>> Portanto, agora temos um parágrafo recuado lá,
e agora a nossa marcação está começando a ficar um pouco mais
semanticamente consistente com o que estamos tentando fazer.
Temos um parágrafo, então vamos chamá-lo de um parágrafo com a tag p.
Temos um segundo parágrafo, então vamos chamá-lo de um parágrafo com a tag p.
E agora, o que o navegador normalmente fazem
é como em um livro de Inglês ou ensaio,
onde você costuma ver algumas quebras de linha entre os parágrafos.
Navegadores vai fazer isso por você automaticamente.
Portanto, agora temos dois parágrafos e podemos continuar isso.
Mas, é claro, na web, quando você tem corpos de texto
não é normalmente apenas manchas enormes de texto.
Existem muitas vezes hiperlinks lá.
Então, se nós queremos, por exemplo, incluir alguns links lá,
acho que o que pode ser de interesse em qualquer página da web que eu estou criando aqui é -
deixe-me ir para o Google.com,
e deixe-me procurar uma ligeira raposa marrom.
Ir para imagens do Google, e, que tal - isto é bonito.
Nós vamos com isso. Portanto, temos aqui um rápido salto marrom Fox sobre um cão preguiçoso.
Então o que eu vou fazer aqui, apenas por uma questão de demonstração,
é supor que esta imagem foi no meu servidor,
e eu tinha vindo a criar essas imagens.
O que eu fiz foi com o botão direito ou clique na imagem,
eo que você vai ver na maioria dos navegadores é um pequeno menu -
parar de fazer isso - um pequeno menu que permite que você escolha a localização cópia link ou URL cópia.
Então deixe-me voltar agora para o meu HTML, e suponha que eu quero
hiperlink para esta para outra página web.
>> Qual foi a marca chamada para isso?
[Estudante, ininteligível] >> Yeah. Então a href para referência hiper.
Deixe-me ir em frente e colar que dentro
É uma URL muito longa, então deixe-me zoom out.
Suportes próximos, então agora eu estou notar caminho até aqui
porque essa URL passou a ser bastante longa.
Deixe-me deslocar até aqui para o final de ligeira raposa marrom,
e deixe-me terminar esta tag com </ a,
onde eu só fechou o nome da marca.
Agora deixe-me ir em frente e salvar o arquivo, recarregue a página web,
e agora, por padrão, que vai ser sublinhada em azul para mim,
mas, na verdade, agora eu posso clicar neste e voila. Há essa imagem.
E não tem que ser uma imagem, poderia ter ligado
para algum outro site aleatória na Internet.
Eu poderia fazer isso, por exemplo, com o CS50, para um último exemplo aqui.
'Este é CS50 "pode ​​fazer sentido para ir um, href =
http://www.cs50.net, citações perto, âncora perto.
Portanto, agora que é uma URL ainda menor, e desta vez nós não vamos ligar a imagem.
Estamos em vez de ir de vincular a outra página.
Agora, temos uma imagem aqui.
Eu sinto que nós podemos fazer um pouco melhor do que apenas um link para uma imagem.
E se nós queremos realmente incorporá-lo em nossa página da web?
>> Bem, o que posso fazer aqui é, em vez de link para gráfico,
deixe-me em vez cortar o URL, e nós vamos nos livrar desse link e limpar isso.
E nós vamos descer aqui e se livrar dessa.
Nós realmente não precisa de todas estas frases agora, então deixe-me encurtar a página um pouco.
E então, aqui deixa-me ir à frente em um novo parágrafo,
dizer que eu não quero texto agora, eu quero uma imagem cuja origem vai ser essa URL.
Uma imagem, como uma quebra de linha, pode existir ou não é.
Então deixe-me imediatamente fechar essa marca.
Deixe-me ir em frente agora e fechar o parágrafo que eu estou dentro,
e se tudo correr bem com Olá, mundo, se eu recarregar agora,
Eu, de fato, ver bem dentro de minha própria página web uma imagem.
Portanto, agora temos uma tag de imagem, uma marca de âncora e similares,
e para uma boa medida, deixe-me fazer uma outra coisa que é muitas vezes negligenciado
em sites estes dias: Vamos fornecer um texto descritivo para esta imagem
para pessoas que estão em um dispositivo móvel
e, portanto, pode não ser capaz de baixar esta imagem muito rapidamente,
para as pessoas que são cegas e pode não ser capaz de ver a imagem
mas eles podem ter um leitor de tela que pode dizer-lhes que esta imagem é de.
E para fazer isso, há um outro atributo para tags de imagem
chamado alt, para texto alternativo.
E o que eu posso fazer aqui é dizer: 'Esta é uma rápida raposa marrom.
De modo que, mesmo que o ser humano não pode ver a imagem no ecrã,
ele ou ela pode, pelo menos, ouvir, como com algum pedaço de software,
o que realmente está lá na tela.
>> Isso não vai mudar a estética da página,
mas certamente é uma boa prática para os usuários.
Tudo bem, vamos sair desta página web em sua forma atual,
mas vamos ver se não podemos agora introduzir
algumas abordagens melhores para escrever estas páginas da web,
algumas lições que vão servir-nos bem como as nossas páginas mais e mais complexo.
O que nós não vamos fazer mais nas próximas semanas
é levá-lo através de todas as tags HTML de várias dezenas que existem.
Assim como no zero de volta na semana 0, ele provavelmente será suficiente
para dar uma visão geral de alto nível de alguns dos conceitos,
um rápido passeio de alguns dos blocos que você provavelmente eram capazes,
muito confortavelmente, para navegar em seu próprio país, as várias peças do puzzle.
E isso vai acontecer novamente em HTML, o mais provável,
em que há amplos recursos na Web que nós vamos apontá-lo menos,
vários livros, se você preferir ler um livro,
que irá orientá-lo através de todas as várias coisas que você pode fazer com HTML,
mas realmente, temos visto até agora em HTML a maioria dos conceitos fundamentais.
Temos a noção de tags sendo abertos, tags de ser fechada.
Algumas marcas que são ambos abertos e fechados
no sentido de que estão vazios e que deveria haver nada dentro deles
como uma tag de imagem ou uma quebra de linha, que estão lá apenas.
Buscamos também já com a noção de um atributo, como alt ou fonte.
Observe que essas palavras tendem, por convenção, para ser curto e sucinto.
>> Não temos autoridade sobre o que essas coisas são chamados,
alguém que inventou o HTML veio com esses nomes.
Então, você apenas tem que começar a conhecer ou procurar, sempre que você precisar deles,
o que os nomes são para estas tags e atributos.
No caso de estes atributos, atribui geralmente
modificar o comportamento de alguns tag.
Neste caso, o atributo de fonte diz a marca de imagem
o que a fonte da imagem deve ser.
O atributo href diz a marca de âncora o que realmente deve ser vinculando.
Mas em termos da estrutura de uma página da web, apesar Facebook
e Google e do olhar como como uma bagunça completa
debaixo do capô, à primeira vista, se você começar a lê-lo
mais metodicamente, todos seguem esta estrutura básica, básica.
Mas podemos melhorar a estilização dessas coisas.
Então deixe-me ir a alguns exemplos que eu preparadas com antecedência.
Deixe-me ir em frente e copiá-los de outra pasta aqui
e colocá-los neste diretório.
De antemão, o que fiz foi preparar alguns arquivos:
search0, SEARCH1, Search2 e search3 e 4.
Deixe-me ir em frente e abrir o primeiro desses arquivos,
e vamos ver se não podemos começar a criar o nosso próprio motor de busca.
No topo deste arquivo, como é geralmente o caso em sala de aula, apenas um monte de comentários.
Em HTML, porém, os meios pelos quais você iniciar um comentário
é <-! e então você está dentro de um comentário, um comentário multi-linha.
Quando você estiver pronto para parar esse comentário, você pode fazer ->.
Então, tudo em cima em azul é apenas um comentário.
>> Esta é a minha declaração doctype, que novamente,
você pode apenas copiar e colar na fé, por agora.
Isso só diz ao navegador, 'Aqui vem algum HTML 5. "
Abaixo disso, na linha 14, é a primeira de minhas marcas reais,
e isso só diz, como antes, aqui vem um pouco de HTML,
aqui vem a cabeça de minha página, aqui vem o título,
e, inversamente, que é tudo para o título, que é isso para a cabeça.
Aqui, agora, vem o corpo da minha página.
Então algumas tags novas agora: h1 fica para a categoria 1.
Há uma tradição em HTML para muitos anos atrás
de ter diferentes tamanhos de texto.
E de volta ao dia, cada um significava, geralmente, apenas grande e corajoso.
Mas há também h2, que é grande, mas não tão grande e corajoso.
Há h3, que é uma espécie de grande, mas não tão grande e em negrito,
e assim por diante, todo o caminho até h6.
Esses dias, porém, H1, H2 e H3 são realmente significava
de ter significado mais semântica a eles,
em que h1 é realmente um título: o título de uma página web,
o título de uma coluna ou algo assim do texto.
Então eu disse deliberadamente h1 CS50 busca> h1
para especificar que este é realmente o título, o título da minha página.
Não o título, no sentido barra de título,
mas o título que você realmente ver na página web em si, no corpo.
Agora isso, você provavelmente pode adivinhar o que é,
embora tenhamos algumas peças novas de sintaxe.
Este é um formulário. Assim, a web realmente fica interessante
quando sites tomar entrada de usuários.
Nesta classe, no conjunto de problemas em programação web,
não vamos fazer um site, por si só,
com conteúdo estático que mostra fotos que você tirou,
ou este é o meu currículo, e coisas sobre mim,
porque essas coisas são relativamente fáceis de montar.
É difícil fazer coisas bonitas na Web,
mas pelo menos a colocação de conteúdo é bastante trivial.
Mas as coisas ficam realmente interessantes quando alguém pode visitar o seu website
e fornecer dados e pode preencher formulários,
pode marcar caixas de seleção e pode interagir com o seu site.
E, de fato, provavelmente cada site que você gosta
estes dias, em qualquer detalhe, é de alguma forma interativa.
Facebook, Google e afins, que levam a entrada do usuário
e produzir uma saída personalizada.
>> Então, vamos começar a fazer isso agora. Vamos agora transição
a partir de apenas usando HTML para marcação de conteúdo estático
como, em vez de um mecanismo de entrega de conteúdo dinâmico.
E para esse fim, vamos implementar o nosso próprio motor de busca.
Vamos fazer o seguinte. Aqui está a marca de formulário.
O atributo action especifica que quando o usuário preenche o formulário
com seu teclado, ele será submetido a este URL aqui.
Então, eu sou o tipo de trapaça. Vai levar um pouco mais de tempo
de uma classe para implementar o mecanismo de pesquisa todo,
então vamos fazer o front-end, por assim dizer.
Nós vamos fazer a parte que permite a pesquisa do usuário, e nós vamos resolver de punt para o Google
a parte mais difícil de encontrar resultados da pesquisa,
mas, especificamente, eu vou falar para o servidor web do Google
utilizando um dos dois métodos muito populares.
Um ser obter, de outro, que vai finalmente ver, sendo post,
embora haja outros que são menos utilizados.
Portanto, obter apenas evoca a idéia de, quero obter algum conteúdo, obter alguns resultados de pesquisa.
Isto, talvez você pode adivinhar o que isso faz.
Isso é algum tipo de entrada, é, na verdade, vai parecer um campo de texto,
e o nome da entrada, o nome da variável que, por assim dizer,
vai ser q para consulta por convenção.
E, novamente, o tipo de esta entrada não vai ser uma caixa de seleção;
não vai ser um menu, que vai ser um campo de texto
como indicado por este atributo aqui, e esta caixa de texto,
como uma quebra de linha, pode existir ou não.
Portanto, temos um elemento vazio com a barra dentro essa marca.
Então eu vou colocar uma quebra de linha, e você pode, talvez, acho que isso vai fazer.
Este é um outro tipo de entrada de formulário.
>> Este vai ser usado para enviar o formulário.
Portanto, este vai ser o grande botão que o usuário pode clicar para enviar o formulário,
ea etiqueta no botão que vai ser 'CS50 Pesquisa.
Forma estreita, o corpo de perto, perto HTML.
Vamos ver o que temos na forma desta página web.
Então deixe-me ir para o meu navegador,
deixe-me ir, ainda, aos locais de acolhimento.
Este ainda é index.html, então se eu quiser ver este arquivo chamado search0,
Eu posso simplesmente fazer / search0.html, digite -
eo primeiro dos meus erros.
O que está acontecendo? Eu claramente não tem permissão
para acessar esse arquivo, por algum motivo.
Mas isso é porque, ao contrário do trabalho que fizemos até agora, em C,
onde os programas que você escreve são consideradas runable por você,
executável por você, isso não é realmente o caso na Web,
em que às vezes você pode querer criar arquivos em um servidor,
mas você não quer que o mundo inteiro para poder vê-los.
Em vez disso, você quer que o mundo veja alguns arquivos
mas não em outros, apenas para fins de privacidade,.
Portanto, é mais de uma base opt-in quando você está fazendo as coisas na web.
E então deixe-me realmente digitar ls aqui,
e você verá os arquivos que eu tenho, mas lembro que se eu fizer ls-l por muito tempo,
Vou pegar um longo anúncio que me dá mais alguns detalhes sobre esses arquivos
que agora são, realmente, pela primeira vez relevante para nós.
Observe que, na extrema direita são os nomes dos meus arquivos,
e, em seguida, o tempo em que eles foram última modificação ou copiado.
Esse número aqui é o que? Você se lembra?
O tamanho em bytes, o tamanho do arquivo é.
>> Então, me parece ter algum tipo de logotipo aqui que é maior do que todos os outros arquivos.
Este é quem eu sou, isso é o que eu sou eo que eu estou dentro do grupo
Mas, então, por aqui à esquerda é um pouco de seqüência enigmática,
e nós conversamos, eu acho, um pouco sobre isso no passado,
mas isso tem a ver com as permissões.
E mesmo que seja um pouco nebulosa,
RW provavelmente significa ler e escrever.
Assim, verifica-se que estes traços denotam conjuntos de permissões diferentes para pessoas diferentes.
E o padrão é, essencialmente, como se segue.
Quando você vê uma seqüência de traços aqui, olham como se segue.
Há um traço, então há mais três traços,
depois há outros três, então não há mais três.
A primeira é qualquer um traço ou de anúncio para diretório.
De modo que um é muito fácil. Se for uma pasta, ele diz d, caso contrário é um hífen.
Há um par de outros casos, mas por agora vamos só se preocupam com arquivos e diretórios.
Estes próximos três traços - e eu já introduzidos artificialmente os espaços.
Eles eram, obviamente, não existe quando os vimos há pouco.
Estas são as permissões do dono do arquivo,
e lembrar de um segundo atrás que foi ler e escrever.
Isso era porque eu, como a pessoa que criou este arquivo de um momento atrás,
Eu, apenas, por padrão, em um computador Linux,
tem a capacidade de continuar a ler e escrever o arquivo.
>> Assim, o sistema operacional só me dá RW automaticamente.
Os do meio se relacionam com o meu grupo, que de estudantes,
que é uma espécie de sentido no aparelho, porque eu sou a única pessoa a usar o aparelho.
Então deixe-me acenar as mãos em que, por agora.
Mas os últimos são os mais importantes para a web.
Este é todo o resto do mundo, e do fato de
que que é --- significa que ninguém mais no mundo
tem todas as permissões para este arquivo.
Claramente é um problema, então eu preciso corrigir isso
por alguma forma dar ao mundo o que? Ler e escrever?
Isso provavelmente é mudo, certo? Eu não quero que ninguém na Web
para ir visitar a minha página e de alguma forma mudar esse arquivo,
embora eles realmente não podia com um arquivo HTML,
mas apenas no princípio, provavelmente só quer que eles sejam capazes de lê-lo.
O que significa para lê-lo? Isso não significa que eles vão se preocupar com o código HTML real,
mas o navegador precisa ser capaz de analisar de que a linguagem de marcação,
de cima para baixo, da esquerda para a direita.
Então, alguém na Web precisa ser capaz de lê-lo, então eu minimamente precisa dar r.
Eu posso fazer isso de algumas maneiras diferentes, mas talvez
o mais simples é executar este comando aqui.
Chmod, modo de alteração, em seguida, um r + tudo para que todos, no mundo + ler,
e em seguida o nome do arquivo, search0.html.
>> Ora, se faço ls-l novamente, observe que o arquivo mudou,
e, de fato, eu me transformei em r para todos.
Eu também liguei para o meu grupo, mas isso é bom,
porque se eu voltada para para todos, meu grupo é um subconjunto do que isso.
Então, tudo bem também. Isto apenas significa que o computador fez agora legível.
Agora deixe-me voltar para o meu navegador, clique em recarregar.
Ah-ha. Temos, agora, CS50 Pesquisa.
Eu ampliada um pouco artificial - motor de pesquisa muito horrível.
Mas vamos ver se ele realmente funciona.
Primeiro, deixe-me fazer um teste de sanidade rápido, deixe-me controlar clicar e ver fonte da página.
Observe que dentro Chrome agora estamos vendo o mesmo HTML que eu mesmo criou.
Não se confunda aqui, no entanto. Eu não posso começar a mudar o código aqui,
porque o navegador tem uma vista só de leitura deste código.
O navegador acaba de pedir host local para um arquivo chamado search0.html.
É agora pura coincidência que o aparelho
passa a ser no mesmo computador como meu navegador.
Eu poderia apenas ter, de forma equivalente, ter digitado www.facebook.com/search0.html,
e se o Facebook teve um arquivo chamado isso, eu seria, então, ver o seu HTML.
E, claro, eu não posso mudar o arquivo que volta do Facebook, também.
Portanto, agora estamos espécie de borrar as linhas.
O aparelho é tanto um servidor, servir as páginas,
mas é também um cliente, no sentido de que eu estou usando um navegador
para realmente falar a esse servidor.
Então, vamos ver se o meu motor de busca Google funciona.
Deixe-me ir em frente e procurar ligeira raposa marrom, entrar.
E pronto, agora tenho meu próprio motor de busca.
>> Mas como isso funciona?
Bocado de um estiramento, mas - e agora você não pode ver, precisamente, a parte que é de interesse.
Observe o que acontece.
Observe a URL. Acontece que o método que,
chamada começa, é super-simples.
Quando você especificar, de forma que você deseja "ficar" resultados de algum servidor,
o que ele vai fazer é tirar o que você digitou no formulário
e colocá-lo na URL.
Vai para padronizar como ele é colocado na URL da seguinte forma.
Note-se que esta é a URL que foi o valor do meu atributo action.
É onde eu queria que a forma de acabar.
Mas, então, perceber esse ponto de interrogação.
Esta é uma convenção na Web através do qual a fornecer a entrada do usuário
para um site, você acrescentar para a URL de um ponto de interrogação,
e então você tem um monte de pares chave-valor.
O nome de uma chave, de outro modo conhecido como um parâmetro na Web,
então você tem um sinal de igual, então você tem o valor do parâmetro.
Então, é, essencialmente, um nome de variável e um valor variável,
mas os nomes de variáveis ​​e valores vieram do formulário HTML.
Por que as vantagens lá, que você acha?
Porque eu não digitar + entre as minhas palavras.
[Estudante, ininteligível]
>> Sim, é apenas para espaçamento. As probabilidades são, sempre que você já viu um URL,
nunca há quaisquer espaços, mesmo porque
se houvesse, você realmente não poderia copiar e colar
em uma mensagem instantânea ou um e-mail em, porque iria quebrar.
Você quer que a coisa toda seja uma seqüência contígua de caracteres.
>> Assim, o navegador é inteligente o suficiente para perceber, uh-uh.
Não basta colocar um espaço lá. Deixa-me codificam o espaço, de algum modo normal.
Uma das convenções para fazer isso é para que o navegador
automaticamente colocada a + onde você se não tiver um espaço.
Então, agora, aviso Google tem sido o tipo de user-friendly.
Eu certamente não criar esta página web,
mas eles têm preenchido previamente seu campo próprio texto
com o que, exatamente, eu digitado dentro
Suponha que eu queira procurar outra coisa, como um cão preguiçoso.
Eu posso apenas escrever isso aqui, re-search.
Observe que a URL muda-se aqui,
mas observar, então, que eu possa realmente buscar o que eu quiser
apenas por entender como URLs funcionam.
Eu poderia fazer gato preguiçoso, entrar,
e observe agora estou tendo muito preguiçoso - devemos? Eu sinto como se deveria.
Recebo um gato muito preguiçoso.
Tudo bem. Esta é uma das coisas mais estúpidas que já fizemos.
Mas isso é um gato preguiçoso.
De qualquer forma, o que é o takeaway chave aqui?
Agora estamos a sorte de jogar no mundo do HTTP.
HTML é apenas essa linguagem de marcação, tag aberta, marca de perto,
que diz um navegador como processar o conteúdo em uma página web.
Mas quando você começa a transmissão de dados através da Internet
entre browser e servidor, que é onde este protocolo
conhecido como HyperText Transfer Protocol assume.
Este é o tipo de convenção humana, quando Sam e eu balancei as mãos na segunda-feira,
iniciar uma conexão e, em seguida, fechar uma conexão idéia, mesmo aqui.
Como são os resultados do Google vai voltar para mim?
Como a minha submissão do formulário indo para o Google?
Bem, lembro do outro dia que o que está realmente acontecendo
debaixo do capô quando você solicita uma página web é,
o seu navegador está enviando uma mensagem um tanto enigmática, como
GET / HTTP/1.1 para a página inicial padrão.
>> Ou, neste caso, porque I especificamente solicitado anteriormente
search0.html, este seria, então, a mensagem um tanto enigmática-
que o meu navegador envia para o aparelho.
Ou, neste caso do Google, o que está realmente enviado
é um pedido para / de pesquisa, e então? q cat = preguiçoso, com um plus lá.
Portanto, esta mensagem, que eu, o ser humano, nunca estou digitando,
mas está sendo enviado pelo meu navegador, isto é como HTTP acontece.
Este é o equivalente de nossas mãos tendo abalados.
Este é o pedido, eo servidor está prestes a enviar uma resposta.
Então, vamos dar uma olhada neste debaixo do capô.
Como antes, podemos abrir esse campo especial em um navegador.
Ver página, inspecionar elementos.
Assim, sob inspecionar elemento, perceber que o que aconteceu no Chrome,
e IE e Firefox têm mecanismos semelhantes,
temos essas ferramentas acessíveis a desenvolvedores para nós.
Pessoas normais não usar essas guias.
Mas, agora, estão interessados ​​no que está acontecendo
debaixo do capô no nível de rede.
Então, se eu puxar para cima o nível de rede aqui,
deixe-me ir em frente e expandir esta janela,
abrir esta entrada aqui, e olhar para os cabeçalhos.
Então, o que acontece quando eu pedir um arquivo de um servidor web
é o meu navegador envia um monte de coisas.
E deixe-me ver fonte. Assim, sob cabeçalhos de solicitação,
E este é apenas Chrome me mostrando alguma saída de diagnóstico,
como uma espécie de depurador de alguma sorte,
perceber que o que eu destaque aqui é precisamente o que
Chrome é o envio para o servidor, a fim de solicitar um arquivo chamado search0.html.
É dizer ao servidor que ele pensa que seu nome é,
graças a este campo de cólon anfitrião, então há alguns
coisas muito esotérico aqui, como algo a ver com as datas e horários,
algo a ver com as línguas que o navegador reconheça,
mas as linhas realmente importantes são estes dois primeiros aqui.
>> O que o servidor responda com? Bem, se rolar aqui
e ver o código fonte dessa coisa, observe que o servidor
respondeu com uma mensagem um tanto enigmática, bem como, não 304 modificado.
Isso é um pouco estranho, deixe-me realmente tentar corrigir isso.
Deixe-me segure Shift e clique recarregar-se aqui
para forçar o navegador para realmente fazer este pedido pela primeira vez.
Então deixe-me aumentar o zoom, e vamos ver agora que a resposta do servidor,
porque eu segurei turno, é de 200 OK.
Então você provavelmente nunca viu o número 200
em números o contexto da Web, mas o que
você já visto às vezes inesperadamente de um servidor?
Arquivo de 404, não foi encontrado; 403, proibido; 500, erro do servidor.
Então, existem esses códigos numéricos que o mundo usa na Web
para significar erros, assim como funções C
pode retornar erros e principal pode retornar códigos de saída.
200, porém, que raramente se vê, porque isso significa que está tudo bem.
E 304 que você provavelmente nunca verá porque o que é que significa?
Que nada tem - vamos ver se podemos simular este novo -
Ah, agora não é cooperar. 304 disse não modificada,
Então, por que o servidor mesmo responder?
Bem, para a eficiência, um servidor web automaticamente para você,
se o arquivo não mudou, não vai retransmitir o arquivo inteiro HTML.
Só vai dizer ao navegador que não mudou.
Basta usar a cópia que você já tem.
Então há essa noção de cache na Web
para o desempenho, de modo que você não perca tempo e largura de banda resíduos
download de arquivos de novo e de novo desnecessariamente.
>> Mas esta página web, agora, era super-simples,
e ele só me mostrou o HTML que voltou.
Vamos realmente usar a guia de rede agora a fazer uma pesquisa no Google como ligeira raposa marrom.
Deixe-me em seguida, clique CS50 pesquisa,
e agora, aviso no fundo aqui um monte de coisas voltaram
porque quando eu visitar um site real, como Google.com,
eles têm imagens, elas têm de texto, eles têm uma linguagem chamada JavaScript ali.
Assim, cada linha nesta tabela aqui
representa algo que o Google cuspir em resposta ao meu pedido único.
O que me importa, porém, é este primeiro.
E se eu for para a busca, o pedido, clique em ver fonte aqui,
perceber que, de fato, a mensagem críptica que o meu navegador enviou
a Google foi essas duas linhas aqui,
seguido de algumas informações arcano aqui que vamos ignorar por agora.
Mas note, também, que o Chrome é muito acessível com,
ele também me mostrando a cadeia de consulta que foi enviado dentro
Então ao invés de me mostrar isso, que foi literalmente enviado,
se eu vê-lo decodificado, Chrome, apenas para fins de depuração,
para os desenvolvedores como nós, é só me mostrar uma versão humana-friendly de -
não é assim que se escreve raposa, aparentemente.
Eu só estou percebendo isso agora - mas ele está mostrando o que eu, aparentemente, digitado.
Enquanto isso, a resposta que voltou do servidor é novamente 200 OK.
Mas em que a resposta inclui, naturalmente,
se realmente ver HTML da página -
Desculpe, este é um atalho de teclado pouco que deu errado hoje.
>> Eu vou lidar com isso mais tarde. Então, se nós realmente ver código fonte da página,
o que eu posso fazer aqui, clicando resposta,
este é o que foi realmente cuspir para trás, para além de que a mensagem 200 OK críptica do servidor.
Um pouco enigmático, mas onde está tudo isso vem?
Bem, vamos fazer uma outra coisa aqui. Outro comando-pouco enigmático,
mas este tipo de um puro na medida em que nos revela exatamente o que está acontecendo debaixo do capô.
Então, estou de volta ao meu Mac aqui, eu ter ligado
através de um programa chamado SSH, Secure Shell, para outro servidor
porque a maioria dos computadores de Harvard bloquear o comando que está prestes a executar
porque não há esse comando em alguns servidores de chamada traceroute
que permite traçar a rota entre os pontos a e b,
e, até agora, temos tomado completamente para concedido
que eu possa digitar no Google.com e de alguma forma obter dados de volta
do outro lado do país ou do outro lado do mundo.
Com traceroute podemos realmente mergulhar um pouco mais fundo
sobre a forma como a Internet funciona, e ver o que está acontecendo debaixo do capô.
Então, vamos em frente e arbitrariamente traçar uma rota para, digamos, Stanford.edu,
que é em todo o país, e tecle enter.
Esse comando pode ser super-rápida ou super-lento,
mas o que estamos vendo agora, linha por linha,
é cada um dos passos ou saltos entre nós e Palo Alto, ou Stanford,
onde têm o seu servidor web.
Então, o que cada uma dessas linhas representam mais concretamente, embora?
Um pedaço de jargão da Internet? [Estudante, ininteligível]
>> O que é isso? [Estudante, ininteligível]
>> Oh, por isso há tempos, mas o que cada linha - o que eu quero dizer com hop?
>> Bem, existem estas coisas na Internet chamados roteadores.
E roteadores, como o nome sugere, as informações de rota a partir do ponto A ao ponto b.
Mas existem vários pontos para além ae b.
Há c e d e E e F entre a linha 1,
que acontece de ser o endereço IP do meu computador,
ou o meu endereço numérico, que identifica o computador,
e passo 15, que na verdade é o servidor web sexta,
aparentemente, que eu estou inferindo a partir deste, ou a versão 6 do seu servidor web em Stanford.
Mas o que é tipo de puro é, podemos ver o caminho
que o meu 0 e 1 estão a tomar do meu computador para Stanford.
Então, passo 1 é o endereço do meu próprio computador.
Cada computador na internet tem um identificador único que se parece com isso.
Number.number.number.number.
Em algum lugar neste campus, provavelmente no centro de ciência,
é um roteador chamado Core Gateway 2-te83, o que significa que,
por isso este é um dos grandes de Harvard roteadores fantasia de que as rotas muito do seu tráfego.
Aqui está outra de roteadores de Harvard, este é um Border Gateway,
significado fronteira é provavelmente na periferia do campus em algum lugar.
Então há uma nox, linha 4, que é Crossroads do Norte,
que é um ISP grande fornecedor de serviços Internet,
que lugares como Harvard conectar até.
Mas depois as coisas ficam um pouco interessante na linha 6.
Onde estão os meus pedaços de repente? Kansas.
O mundo tem o hábito de usar códigos de aeroportos em muitas dessas coisas,
ou pelo menos abreviações para estados ou cidades,
então parece que, em apenas 60 ms,
um pacote de informações, 0 e 1 é do meu laptop
tem todo o caminho para o Kansas, e de novo, em 60 ms.
>> Além disso, depois de Kansas, que levou um passeio através de Houston, provavelmente,
tal como sugerido pelo nome deste servidor.
Assim como um servidor na Internet deve ter um endereço numérico,
ele também pode, opcionalmente, ter um endereço um pouco mais humanamente amigável que os seres humanos veio com.
Agora, na etapa 8, não sabemos o que é isso.
Às vezes, os roteadores só tipo de ignorá-lo,
e eles simplesmente não responder às perguntas, de modo que é bom.
A seguir ao passo 8 é aparentemente onde? L.A.
Observe em apenas 78 ms, o que nos leva de seres humanos como 6 + horas para fazer fisicamente,
leva pacotes de informação na Internet 78 ms para viajar tão longe.
Passo 10 é em Los Angeles, bem como, e passo 11 parece ter ido para o norte, até próximo de Stanford.
Este é o seu roteador, limite ou fronteira roteador.
A dois passos da Universidade de Stanford que estão nos ignorando,
e, finalmente, chegamos ao servidor web em apenas 87 ms.
Agora, todos estes números, como um aparte,
apenas dizer-lhe o tempo que leva para os dados para obter de mim
a cada um desses roteadores, e não é acumulativo.
O que este programa faz é, primeiro ele envia uma mensagem, essencialmente, para o primeiro roteador.
Em seguida, um para o segundo roteador, em seguida, um terceiro para o roteador,
medição de cada vez. Portanto, em teoria, estes tempos será crescente
ou pelo menos muito próximos um do outro,
e, de fato, os que estão aqui no campus são super-pequeno.
Assim que você começar a ir por todo o país, leva os dados
um pouco mais de tempo para viajar, mais próximo de 100 ms, mais ou menos.
Mas vamos ir na outra direção agora. Como cerca de Universidade de Cambridge, no Reino Unido?
Deixe-me em vez de executar o traceroute www.cam de Cambridge,
. Ac para acadêmica. Reino Unido, e tecle enter aqui.
Isso foi muito muito rápido.
Meus dados literalmente foi para Cambridge, Inglaterra, em que fração de segundo de tempo.
>> Então vamos ver o caminho que ele tomou.
Harvard, Harvard, Harvard, Crossroads do Norte,
que é um ISP, e então este é Crossroads do Norte, e então bam.
O que está em entre as etapas 6 e 7, 6 e 7 do roteador?
O Oceano Atlântico. E estamos inferindo isso a partir do fato de que
vamos a partir de 20 ms 80 ms aqui para aqui.
Então, alguma coisa levou 60 ms, mais ou menos, para obter mais.
E que foi provavelmente um grande corpo de água.
O que acontece depois? Bem, aqui estamos, em Londres,
apenas 88 ms mais tarde. Mais London, London mais,
não sei onde é, mas vamos supor que é fora de Londres,
Cambridge aqui, e finalmente nós - literalmente, da Universidade de Cambridge
. Something.net, e então, finalmente, na linha 16,
seu servidor web é aparentemente chamado Scorpius
debaixo do capô, apesar de sabermos como www.
Tipo de alucinante, eu acho. A primeira vez que eu fiz isso, estraguei minha mente.
Infelizmente, Harvard bloqueia este tipo de tráfego, tipicamente, na rede.
Então você não pode fazê-lo super fácil.
Perceba, porém, isso aqui é possível.
Tudo bem. Vamos dar o nosso intervalo de 5 minutos aqui. Nós vamos voltar e mergulhar no mais profundo.
Então, estamos de volta, e nós tipo de ambled sobre em alguns sentidos diferentes aqui.
Então vamos resumir exatamente o que está acontecendo aqui.
Começamos a conversa falando sobre esta linguagem chamada HTML.
Novamente, não é uma linguagem de programação. É apenas uma linguagem de marcação
que é em grande parte sobre a estética e estruturação de conteúdos, na forma de uma página web.
Mas HTML, portanto, precisa de algum tipo de mecanismo de
para viajar entre navegador e servidor.
HTML espécie, portanto, de passeios, em cima do outro idioma,
ou, mais propriamente, um protocolo, conhecido como HTTP.
>> E HTTP, como temos visto até agora,
é uma espécie de análoga a esta convenção humana de apertar as mãos.
Quando um navegador deseja solicitar uma página a partir de um servidor,
ele envia que "pegar" pedido do navegador para o servidor,
e, em seguida, o servidor responde com um número como 200, tudo está bem,
bem como o HTML ou algum número ruim como 404, arquivo não encontrado.
Mas por sua vez, HTTP em si não é a Internet, per se.
HTTP é apenas um serviço, uma característica da Internet
bem como G bate-papo é outro serviço, bem como e-mail é outro serviço.
Há todos os tipos de coisas que podemos fazer na Internet.
HTTP é apenas uma dessas aplicações.
Então, em cima de - HTTP está em cima de outra coisa
que nós não mencionar pelo nome, você já deve ter ouvido pelo nome, o TCP / IP.
Assim, a história que acabamos disse há tudo sobre
como os dados trafegam de um ponto ao ponto b.
E, neste caso, vimos em um nível muito baixo
roteador para roteador para roteador para roteador,
como os dados são realmente a ser transmitida.
Mas ao longo do caminho, ele vai encontrar vários impedimentos.
Além desses roteadores, existem coisas chamadas firewalls na Internet,
e para que os dados, como a que estávamos transmitindo
de mim para Stanford, de mim para Cambridge,
é enviado para, a este nível, algo chamado de endereço IP.
Vimos isso há um momento e um endereço IP
é apenas um endereço numérico do w.x.y.z forma,
onde cada um deles é entre, mais ou menos, 0 e 255,
que você não consegue usar todos esses números.
Mas cada um desses titulares lugar é um número entre 0 e 255.
Assim, um endereço IP estes dias é de 32 bits.
>> Agora, que nos dá os endereços IP quantas possível no mundo?
Cerca de 4 bilhões, porque a qualquer momento estamos contando em potências de 2
todo o caminho até 32 de algo, que, geralmente, nos dá 4 bilhões.
Então, isso é um monte de endereços IP, mas você pode ter lido,
ou você pode agora notar na imprensa popular,
um impulso em direção a uma nova versão do IP chamado IPV6.
Agora nós estamos usando a versão 4.
Há realmente não foi uma versão 5, estamos pulando direito a 6.
Versão 6 vai usar 128 bits para endereços IP, que é freaking enorme.
Não devemos correr para fora por algum tempo agora,
mas começaram a correr para fora da versão 4 endereços IP,
porque todos nós temos as coisas não apenas como laptops e desktops,
muitos de nós têm telefones, muitos de nós têm outros dispositivos
como o TiVo e similares que têm endereços IP si.
Harvard em si tem dezenas de milhares de computadores.
Assim, o mundo está realmente ficando sem endereços IP, pelo menos desta forma.
Assim, ao longo dos próximos anos, você vai ver os endereços
em seus próprios computadores, provavelmente, mudar lentamente
como mais e mais empresas e universidades começam a apoiar a versão mais recente.
Mas um endereço IP não é suficiente para um computador para solicitar dados de computador b.
Porque o computador b poderia ser um servidor,
e um servidor, como mencionei anteriormente, pode fazer cachos de coisas.
Ele pode hospedar páginas da web, pode ser um servidor de e-mail,
ele pode ser um servidor Skype, ele pode ser um servidor de chat G.
>> Todos estes diferentes serviços que podem ser fornecidos em um servidor
tudo pode, fisicamente, estar na mesma máquina.
Assim, além de endereços IP,
o mundo tem coisas chamadas portas na Internet.
Uma porta é apenas um número, por isso não é um número único para HTTP.
O seu número é de 80.
HTTP também usa o número 443, mas, mais especificamente, para HTTPS criptografadas.
Sempre que você vê o s, de seguro, que está usando um número diferente.
Existem outros números, como o 25, usado para algo chamado de SMTP, também conhecido como e-mail.
Há algo chamado 22 para SSH,
e há um monte de outras portas lá fora.
Agora, nós, seres humanos raramente vê estes números.
No entanto, quando você digita um endereço como http://www.facebook.com,
o navegador é secretamente inserindo 80, porque você está usando HTTP.
Se, em vez disso, HTTPS tipo, ele é secretamente inserindo 443.
E nós podemos ver esse tipo de manualmente se eu puxar uma brower
e vá para http://www.facebook.com:80.
Portanto, explicitamente, não citando apenas o nome do site
mas a porta que eu quero falar, e tecle enter.
Observe que desapareça, porque o navegador assume,
oh, 80, eu não vou nem incomodar mostrando que para você.
Mas a razão para isto é que se eu realmente queria enviar um e-mail de alguém,
Eu realmente estar enviando a eles na porta 25, que sendo SMTP.
Um pouco de uma simplificação excessiva, mas alguns de vocês têm amigos
que efectivamente trabalham no Facebook, e eles, da mesma forma, tem servidores que recebem e-mail.
>> Toda vez que você enviar um e-mail, o que gmail está fazendo por você
ou o Outlook ou qualquer outro programa que você usa,
é uma espécie de segredo de inserir esse número, bem como, 25, nesse caso.
É esta combinação de endereço IP eo número que identifica
um computador na Internet e um serviço específico no computador.
Agora, é claro, a maioria de nós provavelmente nunca digitado manualmente um endereço IP.
Talvez você tem no aparelho, mas no mundo real, nem tanto.
Por que nós não digite os endereços IP em navegadores?
Ele iria trabalhar, de fato, podemos ver isso, deixe-me mostrar-lhe
um outro comando que deve funcionar mais em qualquer lugar no campus de Harvard, em um Mac ou um PC.
Há este comando chamado nslookup, pesquisa servidor de nome.
Se eu olhar para cima www.cnn.com, verifica-se que a CNN tem - oh, interessante.
CNN começou a usar o Amazon Web Services.
Você pode saber de computação em nuvem, uma Amazônia dos grandes jogadores em computação em nuvem.
O que eu fiz foi, eu disse: 'Dê-me o endereço do servidor web da CNN, "
mas acontece que o servidor web da CNN é gerenciado pela Amazon,
Amazon Web Services, isso sugere.
E o endereço do servidor que é este aqui.
Então, eu não tenho certeza se isso vai funcionar, porque não costumava usar Amazônia.
Mas vamos tentar, endereço, http:// IP, entrar, e -
é que vai funcionar?
Sim. Ele está indo para o trabalho. Internet é super-lento hoje.
Mas, em um momento, você vai ver alguns notícia.
Lá vamos nós. O Bank of America está sendo processado. Tudo bem.
>> Isto porque este endereço IP acontece apenas por sinônimo de www.cnn.com.
É claro, seria de marketing horrível de dizer, visite-nos na Web em 50.112.94.127.
Você nunca me lembraria. Assim, mesmo nos dias de hoje você pode lembrar as coisas
como 1-800-COLLECT ou mnemônicos do mundo veio com números de telefone.
Que, antes de os telefones celulares, foram bastante difícil lembrar
até que você poderia simplesmente inserí-la e esquecê-la.
Assim, a Web, também, tem essa convenção de nomes e endereços IP,
e há estas coisas lá fora, chamados de servidores DNS,
sistemas de servidores de nome de domínio, que traduzem endereços IP em nomes e vice-versa.
Então é isso que está acontecendo debaixo do capô.
No final, temos o TCP / IP, que é este protocolo de nível muito baixo
que, realmente, só fica 0 e 1 em toda a Internet,
e fá-lo, colocando-os em um envelope virtual,
se você quiser, e escrever do lado de fora do envelope
o endereço IP de destino, bem como o número da porta numérico
do serviço em que o destino que ele quer falar.
Enquanto isso, no envelope, há também algo conhecido como um endereço de retorno,
qual é o seu endereço IP, de modo que quando a CNN recebe um pacote de informações sobre você,
abre esse envelope virtual, vê que você quer na página inicial,
ele sabe da parte remetente deste envelope virtual de quem enviar as costas para HTML.
Então, vamos dar uma olhada nisso em detalhes um pouco mais.
Isto é de uma empresa chamada Ericson, de alguns anos atrás.
E tomaram algumas liberdades com a forma como a Internet funciona realmente,
mas pinta um quadro muito mais visual do que giz mera aqui.
Então, eu dar-lhe "um pouco da internet."
>> [Narrador] Pela primeira vez na história,
pessoas e máquinas trabalham em conjunto, realizando um sonho.
A força de união que não conhece limites geográficos.
Sem distinção de raça, cor, credo ou.
Uma nova era onde a comunicação verdadeiramente une as pessoas.
Isto é
O alvorecer da Internet.
Quer saber como funciona? Clique aqui para começar sua jornada para a rede.
Agora, exatamente o que aconteceu quando você clicou no link?
Você começou um fluxo de informações.
Esta informação viaja para baixo em sua sala de correspondência pessoal
onde os pacotes IP Mr. isso, rotula-lo e envia-lo em seu caminho.
Cada pacote é limitada no seu tamanho.
A sala de correio tem de decidir como dividir a informação
e como empacotá-lo.
Agora, o pacote precisa de um rótulo contendo informações importantes
tais como o endereço do remetente, o endereço do receptor, e o tipo de pacote que é.
Porque este pacote especial vai para a Internet,
que também recebe um endereço para o servidor proxy,
que tem uma função especial, como veremos mais tarde.
O pacote é agora lançado em sua rede de área local, ou LAN.
Essa rede é usada para conectar todos os computadores locais '
roteadores, impressoras, etc, para a troca de informações dentro das paredes físicas do edifício.
A LAN é um lugar muito descontrolada, e, infelizmente,
acidentes podem acontecer.
A auto-estrada da LAN é embalado com todos os tipos de informações.
Estes são os pacotes IP, pacotes Novell, pacotes AppleTalk.
Eles estão indo contra o tráfico, como de costume.
O router local lê o endereço e, se necessário,
levanta o pacote para uma outra rede.
Ah, o roteador. Um símbolo de controle em um mundo aparentemente desorganizado.
[Router resmungando e falando para si mesmo]
>> [Narrador] Lá está ele, sistemático, insensível, metódico,
conservador, e às vezes não completamente até a velocidade.
Mas pelo menos ele é exato, para a maior parte.
Como os pacotes deixar o roteador, eles fazem o seu caminho para a Internet corporativa
e de cabeça para o switch, roteador.
Um pouco mais eficiente do que o roteador, o switch, roteador joga rápido e solto com pacotes IP,
habilmente encaminhamento deles ao longo de seu caminho.
A 'Pinball Wizard' digital, se você quiser.
[Switch roteador falando para si mesmo]
[Narrador] Como os pacotes chegam ao seu destino,
eles estão pegou pela interface de rede,
pronta para ser enviada para o nível seguinte.
Neste caso, o proxy.
O proxy é utilizado por muitas empresas como uma espécie de homem de meia
, a fim de diminuir a carga sobre a ligação à Internet
e por razões de segurança, também.
Como você pode ver, os pacotes são de vários tamanhos, dependendo de seu conteúdo.
O proxy abre o pacote e procura o endereço web ou URL.
Dependendo se o endereço for aceitável,
o pacote é enviado para a Internet.
Há, no entanto, alguns endereços que não cumprem com a aprovação do procurador.
Ou seja, as diretrizes corporativas ou de gestão.
Estes são sumariamente tratados.
Nós vamos ter nada disso.
Para aqueles que fazem isso, é na estrada novamente.
>> A seguir, o firewall.
O firewall corporativo serve a dois propósitos.
Ela impede que algumas coisas bastante desagradáveis ​​da Internet de entrar para a Intranet,
e também pode impedir que informações confidenciais da empresa sejam enviadas para a Internet.
Depois de atravessar o firewall, um router recolhe o pacote
e coloca-o em uma estrada muito estreita, ou largura de banda, como se diz.
Obviamente, a estrada não é larga o suficiente para levá-los todos.
Agora, você pode se perguntar o que acontece a todos os pacotes que não o fazem ao longo do caminho.
Bem, quando o Sr. IP não receber uma confirmação
que um pacote foi recebido no devido tempo,
ele simplesmente envia um pacote de substituição.
Agora estamos prontos para entrar no mundo da Internet.
A teia de aranha de redes interligadas que abrangem todo o planeta.
Aqui, roteadores e switches estabelecem ligações entre redes.
Agora, a Internet é um ambiente totalmente diferente do que você vai encontrar
dentro dos muros de proteção da sua rede LAN.
Aqui, é o Velho Oeste.
Muito espaço, muitas oportunidades,
muitas coisas para explorar e lugares para ir.
Graças a muito pouco controle e regulação,
novas idéias encontrar solo fértil para empurrar o envelope de suas possibilidades.
Mas por causa dessa liberdade, também alguns perigos espreitam.
Você nunca sabe quando você vai conhecer o ping temido da morte,
uma versão especial de um pedido normal de ping,
que algum imbecil, que até descontrola os anfitriões incautos.
O caminho tomar nossos pacotes pode ser via satélite,
linhas telefônicas, sem fio ou cabo mesmo transoceânica.
Eles nem sempre tomar as rotas mais rápidas ou mais curta possível,
mas eles vão chegar lá um dia.
Talvez seja por isso que às vezes é chamado de "Wait A World Wide".
Mas quando tudo está funcionando bem,
você pode contornar o mundo cinco vezes mais na queda de um chapéu, literalmente.
E tudo para o custo de uma chamada local ou menos.
Perto do fim do nosso destino, nós vamos encontrar um outro firewall.
>> Dependendo da sua perspectiva, como um pacote de dados,
o firewall pode ser um bastião de segurança ou um adversário temível.
Tudo depende de que lado você está e quais são suas intenções.
O firewall é projetado para deixar entrar só os pacotes que atendam seus critérios.
Este firewall está operando nas portas 80 e 25.
Todas as tentativas de entrar através de outras portas estão fechadas para os negócios.
A porta 25 é utilizada para pacotes de correio,
enquanto a porta 80 é a entrada para os pacotes da internet para o servidor web.
Dentro do firewall, os pacotes são analisados ​​mais profundamente.
Alguns pacotes de torná-lo facilmente pela alfândega,
enquanto outros olham um pouco duvidosa.
Agora, o oficial de firewall não é facilmente enganado,
como quando esse ping de pacote morte tenta se disfarçar como um pacote de ping normal.
[Oficial Firewall conversando com pacotes]
[Narrador] Para aqueles pacotes sortudos o suficiente para torná-lo tão longe,
a viagem está quase no fim.
É apenas uma linha em cima da interface a ser levados para o servidor web.
Hoje em dia, um servidor web pode ser executado em muitas coisas,
a partir de um mainframe para uma web cam para o computador sobre sua mesa.
Por que não o seu refrigerador?
Com a configuração adequada, você pode descobrir se você tem o resultado
para Chicken Cacciatore, ou se você tem que ir às compras.
Lembre-se, este é o início do líquido.
Quase tudo é possível.
Um por um, os pacotes são recebidos,
aberto, e descompactado.
A informação que contêm, isto é, o seu pedido de informações,
é enviado para o servidor de aplicativos web.
O pacote em si é reciclado,
pronto para ser usado novamente, e preenchido com as informações solicitadas,
abordado, e enviado em seu caminho de volta para você.
Voltar passado o firewall, roteadores, e em meio à Internet.
De volta através do firewall corporativo
e para o seu interface,
pronto para fornecer seu navegador com a informação solicitada.
Isto é, este filme.
Satisfeito com os seus esforços, e confiando em um mundo melhor,
nossos pacotes de dados confiáveis ​​cavalgar alegremente no por do sol de um novo dia,
a certeza de terem servido bem seus mestres.
Agora, não é um final feliz?
[Malan] Ok, isso é o suficiente. Vamos ver na próxima semana.
[CS50.TV]