[Tarsis Azevedo] Palestra ministrada no FISL 12 em 2011 sobre TDD,…

January 26th, 2012

Palestra ministrada no FISL 12 em 2011 sobre TDD, Refactoring e boas praticas de programação!

Feedbacks sao bem vindos!

Até mais!


[Tarsis Azevedo] Aprenda Vim Progressivamente

January 26th, 2012

Sou usuario do vim a algum tempo e sempre estou procurando aprender mais e mais sobre esse excelente editor.

Recentemente encontrei um otimo post no blog do Yann Esposito para iniciantes aprenderem vim rapidamente e tambem para veteranos querendo aprender algumas magicas desse otimo edito de texto.

Gostei tanto do post que resolvi traduzi-lo para divulgar o vim e mostrar como voar com ele.

Então vamos ao post!

Pride-and-prejudice

TL;DR: Quer aprender vim (o melhor editor conhecido pela humanidade) da forma mais rapida possivel. Eu sugiro um caminho. Comece aprendendo o basico pra sobreviver, entao integre todos os truques devagar

Vim, o editor de texto de seis bilhões de dólares

Melhor, mais rapido, mais forte

Aprenda vim e ele será seu ultimo editor de texto. Ele não é o melhor editor de texto, eu sei. É dificil de aprender, mas incrivel de usar.

Eu sugiro aprende-lo em 4 passos:

  1. Sobreviva
  2. Sinta-se confortavel
  3. Sinta-se melhor, mais rapido, mais forte
  4. Use os superpoderes do vim

    No final dessa jornada você se tornará um superstar do vim!

    Mas antes de começar, um aviso. Aprender vim será doloroso no começo. Isso leva tempo. É muito parecido com aprender a tocar um instrumento musical. Não espere ser eficiente com vim do que com outro editor em 3 dias. Na verdade vai levar 2 semanas ao inves de 3 dias. Read the rest of this entry »

    [Tarsis Azevedo] FISL 12 - A segunda vez é ainda melhor

    January 26th, 2012

    Na ultima semana rolou em Porto Alegre mais um FISL na PUC. Foram 4 dias conhecendo e conversando com muita gente, revendo amigos, comendo muito churrasco e sentindo muito frio!

    Esse foi meu segundo FISL, e como dizem: a segunda vez é ainda melhor!

    Fiquei grande parte do tempo no stand da globo.com, conversando com pessoas da comunidade python, conhecendo gente de todo brasil e fazendo novas amizades. Tive contato com muitos alunos e futuros programadores, uns mais interessados e outros só querendo brindes xD

    No stand da globo.com apresentei uma lightning talk sobre Coding Dojo e convidei a galera para participar de um dojo no sabado a tarde!

    Dojo_globocom

    E apareceram mais pessoas que eu esperava.

    Junto com o Israel Teixeira, do dojorio, guiamos um dojo em python colocando em pratica os conceitos de TDD aprensentados por ele na sua palestra. O codigo e o feeback estao no github.

    Tambem nesse FISL tive a oportunidade de apresentar minha primeira palestra em um grande evento, e o resultado nao poderia ser melhor!

    Sala cheia, muitas perguntas e elogios.

    Palestra

    Esse FISL foi inesquecivel, agora que venha a QCON Br e a Python Brasil! Nos vemos lá!

    ps: veja o que o Henrique Bastos tem a dizer sobre o FISL 12!


    [Tarsis Azevedo] Vagrant - Maquinas virtuais leves e rapidas

    January 26th, 2012

    Se voce é programador e precisa subir maquinas virtuais pra testar sites no IE 6/7/8/9, ou quer fazer deploy para ambientes iguais os de produção, e pra mais varias coisas que precisam ser rapidas e são mega chatas e demoradas, e voce usa VirtualBox – Voce esta fazendo isso errado.

    Ok, entao eu uso o que?

    O vagrant é uma ferramenta para a construção e distribuição de ambientes dedesenvolvimento virtualizados, escrita em ruby que usa o VirtualBox da Oracle como base, e prove funcionalidades que permitem criar, distribuir, reproduzir e configurar Maquinas Virtuais(VM) de forma rapida (fonte: github do projeto).

    ComoFas


    Como eu disse anterior mente é muito facil, basta ter o ruby, e a virtualbox instalada, uma internet boa ajuda tambem.

    Tendo isso instalado vamos começar:

    Execute esse comando:

    $ gem install vagrant

    Certifique-se que tudo está instalado corretamente.

    Antes de criar sua maquina, crie uma pasta para abrigar os arquivos de configuraçao:

    $ mkdir vagrant-machine

    Agora vamos criar uma VM com ubuntu 10.04

    $ cd vagrant-machine $ vagrant box add lucid32 http://files.vagrantup.com/lucid32.box $ vagrant init lucid32 $ vagrant up

    Feito isso sua VM ja está pronta para ser acessada!

    Mas é só isso mesmo?!

    Claro que nao!!! Agora vamos configurar seu ambiente! Primeiro, abra o arquivo Vagrantfile na pasta vagrant-machine e deixe ele assim:

    Vagrant::Config.run do |config| # Setup the box config.vm.box = "lucid32" end

    Execute o comando de reload para carregar suas modificações

    $ vagrant reload

    Teste o acesso a sua VM para ver se está funcionando corretamente

    $ vagrant ssh

    OBS: Tudo que voce colocar na pasta onde está seu Vagrantfile, aparecerá na VM na pasta /vagrant. Para ter certeza, execute este comando na VM:

    $ ls /vagrant

    Agora acabou?

    Bom agora voce tem que instalar os pacotes que voce precisa no seu ambiente. Para isso eu escolhi usar o chef para gerenciar a instalação. Esse processo depende muito do seu ambiente, entao deixarei referencias para montagem de ambientes usando o chef.

    Para estudar o vagrant e o chef eu fiz uma VM configurada para ser um servidor de CI

    Nela estao instalados os seguintes pacotes: * Django 1.3 * Apache * git * MySql * Jenkins (servidor de CI)

    Download aqui

    OBS: Execute a VM e acesse o servidor de CI pela url http://localhost:8080/

    Referencias:

    Bom, é isso, divirtam-se com suas novas VMs rapidas e praticas.

    Duvidas e criticas, deixem nos comentarios.

    Até a proxima


    [Tarsis Azevedo] Vagrant - Maquinas virtuais leves e rapidas

    January 26th, 2012

    Se voce é programador e precisa subir maquinas virtuais pra testar sites no IE 6/7/8/9, ou quer fazer deploy para ambientes iguais os de produção, e pra mais varias coisas que precisam ser rapidas e são mega chatas e demoradas, e voce usa VirtualBox – Voce esta fazendo isso errado.

    Ok, entao eu uso o que?

    O vagrant é uma ferramenta para a construção e distribuição de ambientes dedesenvolvimento virtualizados, escrita em ruby que usa o VirtualBox da Oracle como base, e prove funcionalidades que permitem criar, distribuir, reproduzir e configurar Maquinas Virtuais(VM) de forma rapida (fonte: github do projeto).

    ComoFas


    Como eu disse anterior mente é muito facil, basta ter o ruby, e a virtualbox instalada, uma internet boa ajuda tambem.

    Tendo isso instalado vamos começar:

    Execute esse comando:

    $ gem install vagrant

    Certifique-se que tudo está instalado corretamente.

    Antes de criar sua maquina, crie uma pasta para abrigar os arquivos de configuraçao:

    $ mkdir vagrant-machine

    Agora vamos criar uma VM com ubuntu 10.04

    $ cd vagrant-machine $ vagrant box add lucid32 http://files.vagrantup.com/lucid32.box $ vagrant init lucid32 $ vagrant up

    Feito isso sua VM ja está pronta para ser acessada!

    Mas é só isso mesmo?!

    Claro que nao!!! Agora vamos configurar seu ambiente! Primeiro, abra o arquivo Vagrantfile na pasta vagrant-machine e deixe ele assim:

    Vagrant::Config.run do |config| # Setup the box config.vm.box = "lucid32" end

    Execute o comando de reload para carregar suas modificações

    $ vagrant reload

    Teste o acesso a sua VM para ver se está funcionando corretamente

    $ vagrant ssh

    OBS: Tudo que voce colocar na pasta onde está seu Vagrantfile, aparecerá na VM na pasta /vagrant. Para ter certeza, execute este comando na VM:

    $ ls /vagrant

    Agora acabou?

    Bom agora voce tem que instalar os pacotes que voce precisa no seu ambiente. Para isso eu escolhi usar o chef para gerenciar a instalação. Esse processo depende muito do seu ambiente, entao deixarei referencias para montagem de ambientes usando o chef.

    Para estudar o vagrant e o chef eu fiz uma VM configurada para ser um servidor de CI

    Nela estao instalados os seguintes pacotes: * Django 1.3 * Apache * git * MySql * Jenkins (servidor de CI)

    Download aqui

    OBS: Execute a VM e acesse o servidor de CI pela url http://localhost:8080/

    Referencias:

    Bom, é isso, divirtam-se com suas novas VMs rapidas e praticas.

    Duvidas e criticas, deixem nos comentarios.

    Até a proxima


    [Tarsis Azevedo] Scaling Rails - Dicas simples que podem salvar sua vida!

    January 26th, 2012

    Todo dia, toda hora alguém levanta a mesma questão: Rails escala? Djángo escala? escala?Se você ainda faz essas perguntas, fique sabendo que se sua aplicação não escala, a culpa é toda sua provavelmente você esta fazendo merda algo de errado.

    Ok, já que você disse, o que posso fazer pra melhorar?!O Gregg Pollack, criou uma seria de vídeocasts dando dicas super rápidas e simples para escalar uma aplicação rails.

     => VEJA OS VIDEOCAST AQUI <=São dicas como, page cache, expiration, load tests e mais outras coisas legais que podem ser aplicadas facilmente e rapidamente em qualquer projeto rails.

    Para django, existe essa thread no StackOverflow que explica varias formas de escalar uma aplicação djangoLegal, mas eu trabalho com outro framework

    Essas dicas podem ser aplicadas em quase todas as linguagens e frameworks. Basta fazer o paralelo entre a ferramenta mostrada no vídeo|thread e uma similar que pode ser usada com seu framework.Uma simpless pesquisa no google já traz sua resposta!

     

    Se tiver outra indicaçao de material, ou dica, deixa ai nos comentarios,

    Thanks.


    [Tarsis Azevedo] development |should| be_funny - Python e TDD

    January 26th, 2012

    Should o que?!

    O should-dsl é uma ferramenta de teste que tem como principal objetivo tornar o codigo mais legivel e limpo. (http://www.should-dsl.info/)

    Ok, mas #comofas?

    Depois de instalado (o site ensina como fazer) é bem simples começar a escrever os testes. Tá duvidando, então olha só:

    Esse exemplo eh a implementacao das specs da musica Só para Loucos – Ventania

    So Para Loucos Spec Spec

    
    class Pessoa:
    		louco = False
    		careta = True
    
    		def colher_cogumelos(self):
    		    self.cogumelos = ['cogumelo1', 'cogumelo2', 'cogumelo3', 'cogumelo4', 'cogumelo5']
    		    return self.cogumelos
    
    		def fazer_cha(self, *ingredientes):
    		    cha = ingredientes
    		    return cha
    
    		def beber(self, oque):
    		    self.louco = True
    		    self.careta = False
    		    self.versos = ['espinho', 'espinho']
    
    		    return self
    
    		def guardar_cogumelos(self, cogumelos):
    		    self.recanto_espiritual = cogumelos
    		    return self.recanto_espiritual
    
    	class TestSoParaLoucos(unittest.TestCase):
    	    def setUp(self):
    	    	self.pessoa = Pessoa()
    
    	    def test_deve_ser_careta_sem_tomar_nada(self):
    	    	self.pessoa |should| be_careta
    
    	    def test_deve_estar_louco_depois_de_tomar_um_cha_de_cogumelo(self):
    	    	cogumelos = self.pessoa.colher_cogumelos()
    
    	    	cha_de_cogumelo = self.pessoa.fazer_cha(cogumelos)
    	    	cha_de_cogumelo |should| contain(cogumelos)
    
    	    	self.pessoa.beber(cha_de_cogumelo) |should| be_louco
    	    	self.pessoa.versos |should| have(2).espinhos
    
    	    def test_deve_guardar_cogumelos_escondidos(self):
    	        cogumelos = self.pessoa.colher_cogumelos()
    	    	self.pessoa.guardar_cogumelos(cogumelos)
    	    	self.pessoa.recanto_espiritual |should| have(5).cogumelos
    
    	if __name__ == '__main__':
    	    unittest.main()
    
    

    Só isso?

    Isso foi só um exemplo ludico, pra mostrar as possibilidades da ferramneta! Hoje ela contem varios matchers(as funções de teste) para os mais variados objetivos. Voce pode ver a lista completa aqui

    Voce tambem pode fazer seus proprios matchers

    Acabou?

    Se voce gostou do projeto e quer ajudar, aqui vc encontra varias formas de contribuir!

    Entao eh isso, Até a proxima xD


    [Tarsis Azevedo] Django Trick: Hospedagem grátis no Alwaysdata

    January 26th, 2012

    Quem programa em django, sente falta de um Heroku[1], como no rails para fazer deploy e colocar a aplicaçao online mais rapido e de graça.

    Obervação: Existe um serviço que tem essa proposta, ser um Heroku pra Django, é o Djangy (https://www.djangy.com/), Porem ele esta em teste! Voce pode entrar e pedir um convite. Eu ja pedi mas nao foi aceito ainda! =/

     

    Uma Solução…

    … pra esse problema é o alwaysdata.com . Eles tem varios planos de hospedagem, e um deles é totalmente free!!! xD

    Assim, voce pode desenvolver sua aplicação e ja colocar no ar! 

    Facil assim?

    Sim, fácil assim!! A interface deles é muito simples. Você configura seu servidor com a versão do python/django que usa com 1 clique.

    Depois é só enviar a aplicação via ssh para o server, seguir os passos deles pra deploy[2] e pronto, sua aplicação django estará no ar!!!

    Que massa! Isso é perfeito!

    Não!

    Ele tem alguns pequenos problemas:

    1. Algumas partes importantes do site estao em frances
      • pagina da wiki que ensina o deploy e o acesso via ssh
    2. Não tem um script ou deploy automatizado como o Heroku
      • Isso pode ser feito com um shell script simples(No proximo artigo deste blog)
      • Pra agilizar, voce pode habilitar o acesso ao ssh sem senha[3]
    3. O plano é fraco
      1. Mas, se seu objetivo é só “testar” em produção ele te atende!
      2. É uma forma de aprender fazendo 
      3. E é de graça!!!

    Até a proxima pessoal,

    Abraços.

    [1]http://heroku.com/

    [2]http://wiki.alwaysdata.com/wiki/D%C3%A9ployer_une_application_Django

    [3]http://tarsisazevedo.posterous.com/truque-ssh-sem-senha

     

     


    [Tarsis Azevedo] Truque Ssh: Sem Senha

    January 26th, 2012

    Voce tem que acessar um servidor muitas vezes ao dia, e esta cansado de digitar senha toda hora? Voce nao aguenta mais gravar mil senhas? Tem que digitar todas as mil senhas para tentar acessar sua maquina remota?

    Seus problemas acabaram!!!

    Voce só vai precisar de:

    • Um terminal linux
    • Senha da maquina que vc acessa (E só mais uma vez, eu garanto)
    • Alguns comandos linux.
      • Atenção: se voce nao é muito experiente em linux, peça ajuda de um adulto xD,

    Tudo pronto? Entao…

    Abra o terminal e digite:

    ssh-keygen -t rsa

    Bom agora voce vai ver as seguintes mensagens:

    Enter file in which to save the key (/home/user1/.ssh/id_rsa):

    Enter passphrase (empty for no passphrase):

    Enter same passphrase again:

     

    APENAS TECLE ENTER PARA TODAS!!!!


    Agora faça o seguinte:

    scp ~/.ssh/id_rsa.pub root@sua_maquina_remota:~

    Se isso deu certo, agora acesse sua maquina:

    ssh root@sua_maquina_remota

    Estando na maquina faça o seguinte:

    cat id_rsa.pub » .ssh/authorized_keys

    Se o diretorio .ssh nao existir, crie-o assim: mkdir .ssh

    Feito isso, apenas saia da maquina remota e tente acessar novamente.

    Agora voce nao precisa mais de senhas!!!

    Porem

    Existe uma lei do universo que diz o seguinte: se algo pode dar errado, vai dar errado, entao…

    Se depois de seguir todos esses passos, voce encontrar com esse erro:

     

    “agent admitted failure to sign using the key”

    Basta fazer o seguinte na maquina local, nao na maquina remota:

     

    sudo apt-get install ssh-add

    Por fim..

    deixe seu feedback(problemas, sugestoes, etc) nos comentarios.

    Obrigado, e até a proxima pessoal!

    Referencias:

    http://polishlinux.org/apps/ssh-tricks/

    http://www.pedropereira.net/ssh-sem-senha-autenticacao-atraves-de-certificados-rsa/

    http://www.baptiste-wicht.com/2010/07/tip-how-to-solve-agent-admitted-failure-to-sign-using-the-key-error/


    [Igor Sobreira] Book review: Being Geek

    December 29th, 2011

    Published on: 28/12/2011 23:50h

    I’ve finished reading this book, Being Geek, by Michael Lopp, an experienced engineering manager from Silicon Valley. And recommend it…

    It’s a book about geeks professionalism, career. I liked the way the author exposes his ideas, he’s clear and pragmatic. Right in the second chapter there are these three questions I think it’s worth pointing out:

    1. Are you actively defining the technical direction for your product?
    2. Do you understand what you need to do in order to grow?
    3. Are you hitting your dates? Are you meeting your commitments? Are you doing what you say you’re going to do?

    That’s it! That’s what you need to ask yourself every day. Those answers will make you realize if this job is being useful for you to archive your professional goal in your life.

    Later in the book he talks about task management, to-do lists and so on. And a very interesting one he calls “The Trickle List”. This is not a simple to-do list for that day. It’s a list of tasks you do every day with a bigger goal in mind, in the future. If you want to be a better engineer, every day you may want to learn something, improve on something, read something. I suddenly realized I was missing this list…

    Well, I liked the book. I was not very excited reading the first chapters. But as I continued reading it just got better and better. The author writes comfortably about our career, being an engineer or a manager. The book is full of good advices based on experience. Hiring process, remote working, giving presentations, etc.

    By Igor Sobreira