Your SlideShare is downloading. ×
Introdução ao desenvolvimento web - 2 - iDez 2010
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Introdução ao desenvolvimento web - 2 - iDez 2010

459
views

Published on


0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
459
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
7
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Introdução ao desenvolvimento web - 2
    Maurício Linhares – mauricio.linhares@gmail.com
  • 2. Quemsoueu?
    DesenvolvedornaOfficeDrop.com;
    Instrutor da LinuxFi;
    Consultoremmetodologiaságeis;
    JUG Leader do PBJUG;
  • 3. Vendendo o seu colega - Dinâmica
    Juntem-se em pares;
    Aprenda sobre o seu par (10 minutos);
    Forme uma estratégia para apresentá-lo em uma entrevista de emprego:
    Apresente-o;
    Determine suas capacidades;
    Demonstre porque ele é uma boa contratação;
  • 4. Os protocolos da Internet
    IP
    TCP
    UDP
    DNS
    POP/SMTP/IMAP
    HTTP
  • 5. IP - Internet Protocol - Rede
    Protocolo baseado em datagramas;
    Entrega não garantida (besteffortdelivery);
    Pacotes podem chegar em ordem incorreta;
    Não é necessário haver conexão entre a origem e o destino;
  • 6. TCP – TransmissionControlProtocol - Transporte
    Baseado em conexão;
    Entrega garantida de dados;
    Ordenação dos dados entregues;
    Controle de fluxo;
    Controle de congestionamento;
  • 7. UDP – UserDatagramProtocol - Transporte
    Sem conexão;
    Pacotes podem chegar na ordem incorreta;
    Pacotes podem não chegar do outro lado;
    O controle deve ser feito pela aplicação;
  • 8. DNS – DomainName System - Aplicação
    Transforma nomes (hosts) em endereços IPs (e vice-versa);
    Simplifica a lembrança de endereços em redes (como a internet);
    Pode ser usado como uma forma de balancear a carga entre vários servidores;
    Servidores DNS raízes são a fonte oficial dos hosts, sem eles a internet pára;
  • 9. Qual o ip de www.josé.com?
    Qual o IP do DNS de josé.com?
    Qual o IP de www.jose.com?
    201.1.10.24
    1.1.1.5
  • 10. POP/SMTP/IMAP
    Protocolos de troca de emails;
    Ainda o serviço mais utilizado da internet;
    Possível fonte de dados para aplicações web;
    Provavelmente o meio de comunicação mais eficiente da atualidade;
  • 11. HTTP – HyperTextTransferProtocol
    Protocolo base para transmissão de dados na internet;
    Tudo é transferido em forma de texto (pouco eficiente para dados binários);
    Tudo é transferido em forma de documentos ou recursos;
    É a forma mais simples de transferir dados pela internet;
  • 12. Feramentasdentro do Firefox
    WebDeveloper;
    Yslow;
    Firebug;
    PageSpeed;
  • 13. Tecnologias quentes no desenvolvimento web
    Java?
    ASP.NET?
    PHP?
    Django (Python)?
    RubyonRails (Ruby)?
  • 14. Características Importantes
    Minimalismo;
    Pouca burocracia;
    Resultados rápidos;
    Turnaround rápido;
    Integração com tecnologias RIA;
  • 15. O que está em queda
    Configurações extensas;
    Início lento ou com vários artefatos antes do início do código;
    Poucas opções de componentes/plugins de terceiros;
    Código fechado;
  • 16. Um blog utilizando RubyonRails
    Cuidado pra não se maravilhar demais
  • 17. Dispositivosmóveis?
    Especializaçãoerrada?
  • 18. Ambientes
    Android;
    iOS;
    Widows Mobile 7;
    Blackberry;
    Algumacoisa da Nokia;
  • 19. Usos?
    Aplicaçõesquesincronizam dados entre celulares e apps web;
    Aplicaçõesfeitasespecialmenteparanavegadores de dispositivosmóveis;
    Aplicaçõesparadispositivosmóveisquesãoescritasutilizandotecnologias da web (JavaScript, HTML5, CSS);
  • 20. Twitter for the iPhone
  • 21. Tecnologias RIA – Rich Internet Applications
    Volta dos fatclients;
    Aplicações web que emulam aplicações desktop;
    É possível gravar dados do lado do cliente;
    Runtimes normalmente se atualizam automaticamente nos navegadores;
  • 22. Grooveshark - Flex
  • 23. Problemas?
    Versões de runtimes diferentes == problemas diferentes pra debugar;
    Ocupam um pouco mais de memória e processador nas máquinas clientes;
    Nem sempre estão instalados e atualizados nas máquinas clientes;
    Novas linguagens, IDEs e ferramentas pra integrar ao processo;
  • 24. HTML 5 – RIA sem os plugins
    Suporte nativo a áudio e vídeo (royalties?)
    Engines melhores para JavaScript
    V8 – Chrome
    Spidermonkey – Firefox
    IE9
    CSS 3;
    Suporte nativo a SVG para desenhos vetoriais no browser;
  • 25. Problemas?
    Quando vai ficar pronto?
    O IE vai implementar tudo certinho?
    Quando todos os outros IEs vão morrer?
    E os royalties do H.256?
    Quando tudo vai funcionar igual em todos os browsers? (Youtube ainda quebra no Chrome)
  • 26. Tendências e linguagens de programação
    Programação funcional;
    Programação concorrente;
    Linguagens híbridas;
    Profissionais poliglotas;
    Projetos heterogêneos;
  • 27. Concorrência e o futuro
    O clock dos processadores não consegue mais evoluir na mesma velocidade;
    Máquinas com múltiplos cores já fazem parte do dia a dia do usuário final (chips com 6 cores para computadores comuns saem esse ano pela Intel);
    Aplicações não concorrentes não vão conseguir fazer uso disso e vão continuar eternamente lentas;
  • 28. Problemas de concorrência?
    Linguagens OO não são boas para programas concorrentes porque costumam direcionar as pessoas a utilizar memórias compartilhadas;
    Em linguagens puramente funcionais, não existe memória compartilhada;
    Linguagens que juntam ambos paradigmas são as mais cotadas para o futuro próximo:
    Scala;
    Closure;
  • 29. Quando tudo o que você tem é um martelo, todos os problemas vão parecer pregos
    Profissionais poliglotas e projetos heterogêneos
  • 30. Infraestrutura
    Bancos de dados?
    Servidores web?
    Hosdedagem?
    Sistemas operacionais?
    Ambientes de execução?
  • 31. Bancos de dados
    Bancos relacionais começando a dar sinais de velhice;
    Movimento NoSQL crescendo e aparecendo em grandes empresas;
    Várias opções de bancos de dados não-relacionais para resolver problemas do mundo da internet;
  • 32. Problemas?
    Milhões de usuários produzindo bilhões de dados;
    Os mesmos usuários estão:
    Buscando;
    Alterando;
    Reajustando;
    E produzindo;
    ...ainda mais informação;
  • 33. Bancos de dados relacionais não são escaláveis
    Repositório central de infomações;
    Modelos arcaicos de replicação;
    Modelos arcaicos de conexão e extração de dados;
    Pouco flexíveis quanto a alteração da estrutura das informações (criar uma nova coluna naquela tabela com milhões de linhas? FUUUUUUU!);
  • 34. Bancos de dados do movimento NoSQL
    Nascidos na era da internet com um problema definido para resolver;
    Schema-less ou bem mais flexíveis quanto a alterações nos modelos;
    Replicação é funcionalidade padrão;
    Múltiplos servidores, sharding e particionamento/balanceamento são necessidades básicas;
  • 35. Opções?
    Cassandra
    Facebook
    Twitter
    AmazonSimpleDB
    Precisa dizer? 
    MongoDB
    TheNew York Times
    Justin.tv
    CouchDB
  • 36. Servidores web
    Apache 2
    Panela velha é quem faz comida boa né...
    Lighttpd
    Leve, seguro e bem comum na web
    Nginx
    Direto do gelo da Rússia para o mundo
    Proxies
    Pound
    Varnish
    HAProxy
  • 37. Cadê os outros?
    Tomcat?
    JBoss?
    IIS?
    Jetty?
  • 38. Hospedagem
    Compartilhada (piedade senhor, piedade)
    VPS - Virtual PrivateServers
    Cloud real
    AmazonElastic Compute Cloud
    Cloud VPS
    Rackspace
  • 39. Compartilhada
    O ambiente já está pronto;
    Você compartilha tudo com várias outras pessoas;
    Segurança? Acredite em Papai Noel também;
    Se você precisa de alguma coisa que foge do padrão...
  • 40. VPS – Virtual Private Server
    Você escolhe o que vai ser instalado;
    Você configura o ambiente;
    Você cria contas e instala o que é necessário;
    Você faz tudo, mas o ambiente não é controlado externamente;
    Limites em consumo de memória, transferência e uso de processador;
  • 41. Cloud real - 1
    O mundo é efêmero, você configura uma imagem inicial do servidor e sobe ele para executar um trabalho;
    A instância não tem armazenamento estático, o que estiver gravado nela se perde se ela for “desligada” ou sair do ar;
    É necessário “plugar” serviços de armazenamento as instâncias para manter dados entre a execução delas;
  • 42. Cloud real - 2
    Perfeito para serviços “fireandforget”:
    Cálculos matemáticos longos;
    Processamento de algoritmos complexos;
    Quaisquer serviços que vão demorar um tempo razoável mas costumam ter “prazo” para terminar e que dependam de muito poder computacional para serem executados;
    Hospedagem em um serviço desses não é para os fracos de coração;
  • 43. Cloud VPS
    É um serviço de cloud que funciona como VPS;
    Você contrata uma instância em uma VPS e pode aumentar a instância ou crias novas conforme a sua necessidade;
    Normalmente disponibilizam APIs para acesso e criação de “fazendas de servidores” quando é necessário;
    Mais fácil de trabalhar quando o interesse é hospedagem;
  • 44. Sistemas operacionais
    Windows;
    Linux:
    RedHat
    OpenSUSE
    Madriva
    Ubuntu
    Unix-based
    Solaris
    HP-UX
  • 45. Ambientes de execução
    CLR – Máquina Virtual do .Net
    Mono – Máquina Virtual do .Net multiplataforma
    Java Virtual Machine – Máquina Virtual Java
  • 46. CLR – CommonLanguageRuntime
    Ambiente de execução Microsoft para o ambiente .Net;
    Disponível apenas no Windows;
    Integração forte com APIs disponíveis do Windows e forma preferida para desenvolvimento de aplicações nessa plataforma;
  • 47. Projeto Mono - .Net Multiplataforma
    Leva o runtime do .Net para outras plataformas que não Windows;
    Costuma estar atrasado quando comparado com o CLR da Microsoft;
    Não implementa alguns pedaços do .Net Framework por questões jurídicas da Microsoft;
    Nem sempre apresenta o mesmo comportamento do CLR no Windows;
  • 48. JVM – Java Virtual Machine
    Ambiente de execução comumente relacionado a linguagem de programação Java;
    Já tem um conjunto longo de linguagens executáveis:
    Ruby;
    PHP;
    Scala;
    Closure;
    Python (Jython);
  • 49. Tendências em negócios
    Aplicações sociais;
    Aplicações dentro de redes sociais;
    Jogos em navegadores;
    SAAS – Software as a Service;
  • 50. O mundo social ainda não morreu
    Aplicações sociais continuam surgindo, conseguindo público e ganhando dinheiro:
    http://foursquare.com/
    http://justin.tv/
    http://twitter.com/
    http://shellfari.com/
    Novas aplicações focam em nichos específicos;
    Redes sociais “genéricas” não vão mais chamar a atenção;
  • 51. devefazerU$ 238.65 milhõesde lucroem 2010
  • 52. Aplicações dentro de redes sociais
    Orkut
    BuddyPoke;
    Colheita Feliz;
    MiniFazenda;
    JogaCraque;
    Facebook:
    MafiaWars;
    FarmVille;
  • 53. Jogos em navegadores
    Travian;
    La Brute;
    BiteFight;
    Continua eternamente...
  • 54. Software as a Service - 1
    Modelo de negócio para começar a produzir e vender software;
    Uso do software fica sempre atrelado ao pagamento de uma assinatura mensal ou taxa de uso;
    O fluxo de caixa se mantém constante enquanto os clientes estão usando/pagando;
    Economia de escala barateia os preços de assinatura;
  • 55. Software as a service - 2
    Aplicações com pouca customização, normalmente são produtos de prateleira que são vendidos de forma diferente;
    Normalmente na forma de aplicações web (mais difícil de piratear e mais fácil de implantar atualizações);
    Normalmente voltados a pequenas e médias empresas;
  • 56. Exercício – 30 minutos
    Juntar-se em grupos;
    Pensar em um produto SAAS;
    Definir:
    Público;
    Funcionalidades principais;
    Preços;
    Como atingir os clientes;
    Apresentar o produto;