2. 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. 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;
5. TCP – TransmissionControlProtocol - Transporte Baseado em conexão; Entrega garantida de dados; Ordenação dos dados entregues; Controle de fluxo; Controle de congestionamento;
6. 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;
7. 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;
8. 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;
9. 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;
10. Tecnologias quentes no desenvolvimento web Java? ASP.NET? PHP? Django (Python)? RubyonRails (Ruby)?
12. 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;
14. 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;
16. 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;
17. 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;
18. 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)
19. Tendências e linguagens de programação Programação funcional; Programação concorrente; Linguagens híbridas; Profissionais poliglotas; Projetos heterogêneos;
20. 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;
21. 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;
22. Quando tudo o que você tem é um martelo, todos os problemas vão parecer pregos Profissionais poliglotas e projetos heterogêneos
23. Infraestrutura Bancos de dados? Servidores web? Hosdedagem? Sistemas operacionais? Ambientes de execução?
24. 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;
25. 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;
26. 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!);
27. 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;
28. Opções? Cassandra Facebook Twitter AmazonSimpleDB Precisa dizer? MongoDB TheNew York Times Justin.tv CouchDB
29. 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
32. 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...
33. 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;
34. 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;
35. 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;
36. 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;
38. Ambientes de execução CLR – Máquina Virtual do .Net Mono – Máquina Virtual do .Net multiplataforma Java Virtual Machine – Máquina Virtual Java
39. 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;
40. 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;
41. 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);
42. Tendências em negócios Aplicações sociais; Aplicações dentro de redes sociais; Jogos em navegadores; SAAS – Software as a Service;
43. 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;
44. Aplicações dentro de redes sociais Orkut BuddyPoke; Colheita Feliz; MiniFazenda; JogaCraque; Facebook: MafiaWars; FarmVille;
46. 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;
47. 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;
48. 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;