Servidores: apache, nginx, lighttpd, mongrel, ...
Bancos-de-dados: mysql, postgresql, oracle, ...
Versionamento e Deployment: git, svn, ftp, capistrano, ...
Monitoramento: daemons, cronjobs, monit, nagios, ...
Linguagens: PHP, Ruby, Python, ASP, ...
Tecnologia: Web services, autenticação, criptografia, algoritmos ...
Estrutura: HTML, CSS, Javascript, ...
Visual: Imagens, Cores, disposição de elementos
Que recebe requisições de diversos clientes e serve conteúdo para estes. Geralmente multithreaded, preparado para servir diversos arquivos estáticos e com suporte "interno" a linguagens.
Parrudo onde roda um software servidor.
Protocolo usado para comunicar os clientes com os servidores
Uso de verbos e recursos
Verbos mais usados são GET e POST
GET /foo HTTP/1.1
Verbo Recurso Versão
Method Path
POST /foo?name=bar HTTP/1.1
Verbo Recurso Versão
Method Path
200: Ok
302: Found
404: Not Found
500: Server error
Content-Type
Conectando-se a matehackers.org na porta 80
GET / HTTP/1.1
User-Agent: curl/7.22.0 (i686-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
Host: matehackers.org
Accept: */*
HTTP/1.1 302 Found
Date: Fri, 23 Nov 2012 02:34:07 GMT
Server: Apache
X-Powered-By: PHP/5.4.8
Location: doku.php
Content-Length: 0
Content-Type: text/html
HTML, vídeos, músicas, ...
Perfis Facebook e Twitter, RSS, ...
HTML é a Estrutura
CSS é a Aparência
JS é o Comportamento
Testem enquanto o curso rola
Ex.: headers, use <h1>
, <h2>
, <h3>
, ..., sem se preocupar com o tamanho da fonte, mas sim com seu significado (seções e subseções).
Qual a diferença entre <em>
e <i>
? <strong>
e <b>
?
Qual a diferença entre <em>
e <i>
? <strong>
e <b>
?
<em>
e <strong>
agregam um significado, e screen readers podem utilizar para dar entonação a leitura.
Bom material para aprender do zero a 99%
Acessibilidade (Screen Readers)
Portabilidade
Fácil manutenção (Fácil de entender e alterar)
Menor latência (cache de arquivos css e js)
Melhor UX (look and feel)
Melhor organizado
Facil manutenção
Permite browser fazer cache
p { color: blue; }
Absolutos: px
Relativos: %: relativo ao contexto, em: relativo ao valor atual de font-size
Aqui as coisas começam a complicar
Propriedades relacionadas a textos herdam (color, font, ...), propriedades relacionadas a layout não herdam (border, background, ...).
E tem mais: Box model, Display, Position, Float, ...
http://blogs.globallogic.com/cascading-style-sheet-css-%E2%80%93-what-must-web-developer-know
Validações (no cliente)
Drag and drop
Menus
É uma linguagem de programação dinâmica e fracamente tipada.
Uma arvore de objetos que reflete a estrutura do html.
Objetos possuem propriedades e métodos que permitem alterar o html.
document.getElementById('about');
document.getElementByTagName('p');
Percorrer DOM
Lidar com eventos
Animações
Ajax
Conectando-se a meusite.com
GET /segredo?nome=lucas HTTP/1.1
Retorna um arquivo pré-pronto (talvez segredo.html)
Retorna uma página gerada dinamicamente baseado no "parâmetro" segredo?nome=lucas
. Pode rodar um programa ou script, consultar bancos-de-dados e/ou alguns serviços externos, etc...
Experimentem http://www.codeschool.com/courses/try-ruby
models
) da apresentação (view
)ActiveRecord::Base
config/routes.rb
)Extrai informações do verbo + recurso da mensagem HTTP e mapeia para um controller
e uma ação.
Consulta o banco-de-dados, roda lógica nos models
e preenche variáveis para serem usadas pelos views
config/routes.rb
config/initialize.rb
config/application.rb
app/models/foo.rb
app/controllers/foo_controller.rb
app/views/foo/index.html.erb
db/schema.rb
db/migrations
http://matehackers.org