quarta-feira, 23 de outubro de 2013

Big Data, e eu com isso?

Esse ano (2013) fui um dos coordenadores da Trilha Big Data no TDC (The Developers Conference).

Big Data é um dos meus estudos que tenho feito.

Muita coisa pode-se falar sobre o conceito. Então, fui convidado para palestrar em Leme para alguns estudantes da região, e escolhi esse tema para falar.

Seguem os slides:

quarta-feira, 14 de agosto de 2013

AWS Summit 2013

Seguindo o post sobre Cloud Computing, fiz uma apresentação das palestras assisitidas no AWS Summit 2013 em São Paulo.



segunda-feira, 5 de agosto de 2013

Cloud Computing: Criar um site estático na AWS (Amazon)

Uma das facilidades de hoje em dia é você poder ter quantas máquinas quiser, sem realmente precisar comprar uma.

A nuvem te proporciona isso, a chamada cloud computing.

Cloud Computing



Não vou explicar o conceito de Cloud Computing aqui, mas imagine você precisar testar uma aplicação em um servidor de uma OS específica, de uma versão específica, em uma máquina física específica. Teoricamente você teria que comprar uma máquina, certo? Com a "nuvem", isso não será necessário. Utilizando a Amazon (AWS) por exemplo, você pode ter a máquina, testar e depois descartá-lo.

Existe alguns tipos de serviço na nuvem:

IaaS - Infrastructure as a Service: quando se utiliza uma percentagem de um servidor, geralmente com configuração que se adeque à sua necessidade.
PaaS - Plataform as a Service: utilizando-se apenas uma plataforma como um banco de dados, um web-service, etc. (p.ex.: Windows Azure).
SaaS - Software as a Service: uso de um software em regime de utilização web (p.ex.: Google Docs , Microsoft SharePoint Online).

AWS (Amazon Web Service)



A AWS (http://aws.amazon.com/) é uma das mais completas plataformas para se beneficiar da Nuvem. 

Dentro dela existe vários serviços como:
  • Amazon Simple Storage Service (S3)
  • Amazon CloudFront 
  • Amazon SimpleDB
  • Amazon CloudWatch
  • Amazon Virtual Private Cloud (VPC)
  • Amazon DynamoDB
  • Amazon Elastic Compute Cloud (EC2)
  • Amazon Elastic MapReduce
  • e muitas e muitas outras....
Não vou explicar cada uma delas, pois além de serem muitas, a Amazon lança serviços frequentemente. Alguns serviço vou explicar abaixo ao criar um site estático.

Para ajudar mais ainda, ao cadastrar na AWS, você ganha vários serviços de graça. Dá uma olhada em:


Criar um site estático na AWS

Para criar um site estático na AWS, é preciso enteder alguns serviços:
  • Amazon Simple Storage Service (S3) - Esse é um serviço de armazenamento. Ou seja aqui é que vamos armazenar todos os arquivos estáticos, como o css, js, imagens, etc.
  • Amazon CloudFront - É um serviço web para distribuição de conteúdo. Os arquivos são entregues aos usuários finais usando uma rede global de pontos de presença.

S3



O primeiro passo é entrar no serviço S3 através da console:













1) Crie um bucket no S3 para seus logs
Buket-name: meuprojeto-log (nome do diretório onde vão estar os logs)
Region: São Paulo
Clique em Create e não em Set Up Logging






2) Crie outro bucket no S3
Buket-name: meuprojeto (nome do diretório do seu projeto, do seu site estático)
Region: São Paulo
Clique em: Set Up Logging

Ative o: Enabled
Target Bucket: Referencie ao bucket criado no passo 1
Target Prefix: s3_meuprojeto (ou um prefixo da sua preferência para indentificá-lo)



Não é necessario mudar as configurações dos bucket (permissões) nesse momento se for usar o cloud front.

3) Coloque os arquivos estáticos (html, js, css, imagens, etc) no diretório criado no passo 2

Cloud Front

Entre no serviço Cloud Front


5) Clique em Create Distribution


- Escolha: Download



- Origin Domain Name: referencie o bucket criado (meuprojeto do passo 2), ou se for referenciar fora utilize o dominio de origem (meuprojeto.com.br)
- Origin ID: um nome
- Viewer Protocol Policy: HTTP e HTTPS
- Object Caching: Ao ativar o “Customize” abrirá o campo “minimum TTL”
- Minimum TTL: Coloque em segundos (tempo de cache)
- Forward Cookies: None (imporoves caching) - já que serão objetos estáticos
- Forward Query Strings: No (improves caching)
- Restrict Viewer Access (Use Signed URLs) - nesse local coloque Yes para que os usuário apenas acessem o Cloud Front, e nunca pelo S3 (irá mudar as permissões do S3, que comentei no item 2)
- Trusted Signers: self
- Price Class: Use All Edge Location
- Alternate Domain Names(CNAMEs): Aqui coloque o dominio do seu projeto meuprojeto.com.br - dominio que o usuario irá digitar
- SSL Certificate: default cloud certificate
- Default Root Object: não preencha
- Logging: on (aqui irá habilitar todos os logs de usuários que visitaram a página)
- Bucket for Logs: Referencie o buket criado acima (ex: meuprojeto-log, criado no item 1)
- Log Prefix: cf_meuprojeto (ou qualquer outro prefixo para identificá-los)
- Cookie Logging: off
- Comment: apenas se quiser escrever algo para lembrar



6) Pronto! Agora é só esperar o serviço ir pro ar e testar. Normalmente demora entre 5 a 10 minutos!

quarta-feira, 17 de julho de 2013

Autenticar SSH sem senha

Esse post é mais uma dica que uso há algum tempo, e que algumas pessoas ainda não conhecem. Mas que ajuda muito no dia a dia.

SSH

Antes de mais nada, sabe o que é SSH?

SSH (Secure Shell) é um protocolo para login remoto seguro, ou seja um protocolo que visa fazer a comunicação entre dois hosts distantes através de um autenticação segura e em seguida troca de dados utilizando algoritmos de chave simétrica. Diferente de outras ferramentas como rsh, rcp, rlogin e telnet, o SSH codifica toda a comunicao.


Problema

Uma das coisas mais chatas é ficar acessando ssh e colocar a senha. Principalmente se você tem vários servidores para acessar, e faz isso com muita frequência, ou seja várias vezes ao dia.

Solução

Uma forma de contornar isso é utilizar o:
ssky-keygen e ssh-copy-id


Como Fazer?

Criar as Chaves na máquina local

1) Crie um par de chaves RSA (uma chave privada e uma chave pública) para autenticação, digitando:

 ssh-keygen -t rsa  

2) Será solicitado o local para armazenar a chave.


*Importante: Se você tem várias chaves criadas para cada servidor, é nesse passo que você terá que alterar o nome. Exemplo. Em vez de dar um "ENTER", digite:

 /home/alexandre/.ssh/id_rsa_outroservidor  


3) Será solicitado logo em seguida seu passphrase ou "frase secreta". É uma senha para indentificar que você é o proprietário da chave criada:


*Importante: Guarde essa senha que será usada posteriormente

Após isso sua chave será criada. 2 arquivos serão criados no diretório informado acima:
- id_rsa que é a chave privada
- id_rsa.pub que é a chave pública




Copiar as Chaves para o servidor remoto

Agora será necessário copiar sua chave no servidor remoto:

4) Para fazer a cópia digite:

 ssh-copy-id -i ~/.ssh/id_rsa.pub user@server  

O que ele faz é copiar a chave pública (dá um append) dentro do arquivo "authorized_key". Ou seja ele automatiza esse passo.

5) Será solicitado passphrase (o mesmo que você digitou no passo 3)

6) Pronto! Você já estará acessando seu servidor remoto sem senha. É só testar:


 ssh user@server  

Obs:
Se a chave pública estiver em outro diretório ou você nomeou ele de outra forma passe o parâmetro i:
 ssh -i /home/alexandre/.ssh/id_rsa_outroservidor user@server  


Importante!
Não esqueça de dar as devidas permissões principalmente no servidor que você irá acessar:
chmod 600 /home/servidor/.ssh/authorized_key
chmod 700 /home/servidor/.ssh/


Outras dicas

1) Hostname
Para gerenciar todos os servidores remotos é complicado.
Você pode criar hostname atrelado ao IP, modificando o arquivo:

 sudo vi /etc/hosts  

Colocando IP e depois o hostname.
Assim fica mais fácil lembrar dos servidores.




2) Gerenciador de SSH
Outra dica para não se perder, é usar uma aplicação que é um menu de conexões SSH.

Temos o SSHMenu para GNOME, e achei o Shuttle para Mac.

Ele é simples, pois é só editar um arquivo de configuração (um arquivo Json).




Se tiverem mais dicas, dá uma comentada. Sempre é bom termos opções e saber como outros desenvolvedores trabalham.

quarta-feira, 27 de fevereiro de 2013

CoffeeScript por que não?


Comecei recentemente a usar o CoffeeScript e gostei bastante.



Resumidamente o CoffeeScript é uma linguagem de script que compila para JavaScript.

A vantagem do CoffeeScript sobre o JavaScript é a inserção de uma série de syntatic sugars e também uma sintaxe mais limpa e concisa que a do JavaScript, por exemplo:
  • Blocos através de identação (igual ao Python)
  • Retorno implicito de funções
  • e etc.
Há uma certa polêmica em torno do CoffeeScript e para mim a mais pertinente de todas se refere ao fato do CoffeeScript introduzir o conceito de Heranças sendo que o JavaScript não funciona assim. Acho que a decisão de se vale ou não a pena usar cabe a você sempre testar e se não gostar tirar.

Um outro ponto é em relação ao código JavaScript que é gerado pelo compilador do CoffeeScript, em muitos casos o código compilado é muito legível e bem "escrito"

Eu ainda tenho dificuldade com o JavaScript e se você é como eu já digo que CoffeScript de jeito algum significa que você deve deixar de tentar aprender o JavaScript.
Muito pelo contrário muitas vezes olhando o código CoffeeScript compilado em Javascript você pode  até mesmo aprender como se faz um bom JavaScript.

Você pode testar mesmo usando o website do CoffeScript, e ainda é possível escrever o código e ver a compilação do javascript no próprio browser.
http://coffeescript.org/