Posts de ‘Tarsis Azevedo’

[Tarsis Azevedo] [review] Pro Git

Thursday, March 15th, 2012


Pro Git é um livro muito bom se voce ja conhece um pouco de git e quer se aprofundar mais, ou se voce nao conhece e quer conhecer bem.

Nele voce vai aprender sobre controle de versao distribuido, workflows para melhor utilização dos recursos do git, melhores praticas com git. Alem disso voce aprenderá a instalar e configurar um servidor git, a como gerenciar e colaborar com projetos e inclusive a extender o git.

O livro pode ser lido capitulo por capitulo se voce nao sabe nada sobre Controle de versao distribuido. Ou voce pode ler somente os capitulos que lhe interessam, se voce ja tem um conhecimento basico do git.

Onde Comprar?

Na amazon.

Ou voce pode ler no proprio site do livro. Ou voce pode baixar do github.

[Tarsis Azevedo] Aprendendo C - formatação do printf

Sunday, March 4th, 2012


Recentemente comecei a aprender C. Sim eu não sei C, não tive na faculdade e sempre senti falta de saber melhor como as coisas funionavam por dentro do computador, já que minha maior experiencia em programação é com python, que é uma linguagem de altissimo nivel.

Com C voce trabalha mais perto da maquina, direto com bytes, alocação de memoria, tem que fazer as estruturas de dados.

E pra aprender eu escolhi estudar pelo livro Learn C The Hard Way do Zed Shaw. É um livro que te instiga a estudar os conceitos por voce mesmo, ensina em cima de exemplos bem praticos e eficientes, te adiciona ao ecossistema da linguagem, apresentando ferramentas e tecnicas que vao te ajudar a pensar em C.

Uma das coisas que ele me instigou a estudar foi todos os possiveis formatos e suas variações para o printf, a função que escreve na saida padrão (o print do python).

#include 

int main() {
    printf("%s\n", "Hello World!");

    return 0;
}

#output

Hello World!

formatando a saida do printf

O printf recebe 2 parametros: uma string com os formatos mapeados e um minimo de valores igual ao mapeado.

#include 

int main() {
    printf("%d %s\n", 1, "Hello again!");

    return 0;
}

#output

1 Hello again!

Esta função é capaz de imprimir diferentes tipos de dados (char, string, int, float, octal, hexa, outros aqui) de acordo com a formatação que voce usar.

#include 

int main() {
    printf("Char: %c %c \n", 'b', 65); // char pode receber um int referente a Tabela ASCII (http://www.asciitable.com/).
    printf("Decimais: %d %ld\n", 1988, 650000L);
    printf("Precedido com espaços em branco: %10d\n", 1988);
    printf("Precedido com zeros: %010d\n", 1988);
    printf("Numeros com base diferente: %d %x %o %#x %#o \n", 100, 100, 100, 100, 100);
    printf("Floats: %4.2f %+.0e %E \n", 3.14554, 3.3214, 3.1234);
    printf("Truque de tamanho: %*d\n", 5, 10);
    printf("String simples %s\n", "Oi!");

    return 0;
}

#output
Char: b A
Decimais: 1988 650000
Precedido com espaços em branco:       1988
Precedido com zeros: 0000001988
Numeros com base diferente: 100 64 144 0x64 0144
Floats: 3.15 +3e+00 3.123400E+00
Truque de tamanho:    10
String simples Oi!

Tabela de Formatos

Os formatos seguem o seguinte prototipo: %[flags][tamanho][.precisao][quantidade]formato

Flags, largura, .precisão, tamanho são opcionais.

Formatos:

Formato Saida Exemplo
c char a
d ou i signed int 1
e Notação Cientifica usando o caracter e 3.9265e+2
E Notação Cientifica usando o caracter E 3.9265E+2
f float 3.4
g usa o menor numero possivel de f e e 3.54
G usa o menor numero possivel de f e E 3.54
o unsigned octal 610
s string Hello World
u unsigned int 2345
x unsigned hexa 7fa
X unsigned hexa com letras maiusculas 7FA
p ponteiro de endereço B800:0000
n Nada impresso. O argumento deve ser um ponteiro para um int assinado, onde o número de caracteres escritos até então é armazenado.
% % seguido de outro % irá printar % na saida %

Flags


Flag Descrição
- Alinhado a esquerda dentro do tamanho definido. Alinhamento a direita é o padrão (veja a tabela de formatação de tamanho).
+ Força a o resultado ser mostrado com um simbolo de + ou -. Por padrão, somente numeros negativos são mostrados com -.
# Usado com o, x e X indica que o valor será precedido de 0, 0x ou 0X respectivamente, para valores diferentes de 0.
Usado com e, E e f, força o output para mostrar um ponto decimal mesmo sem numeros depois dele. Por padrão, se nenhum numero estiver depois do ponto decimal ele nao é mostrado.
Usado com g e G o resultado é mostrado com zeros a direita.
0 Numero 0 é printado ao invés de espaços em branco quando o tamanho é especificado. (veja a tabela de formatação de tamanho).

Modificadores de Tamanho


Tamanho Descrição
(Numero) Número minimo de caracteres a serem printados. Se o valor a ser printado for menor que o numero, será adicionado espaços em branco para atigir o numero limite. O valor nao é trucado caso seja maior que o limite.
* O tamanho nao é especificado na formatação da string, mas é passado como argumento precedendo o argumento a ser formatado

Modificadores de Precisão


.precisão Descrição
.numero Para formatos inteiros (i, d, u, o, x, X): precisão especifica o numero minimo de digitos a serem mostrados. Se a quantidade de digitos for menor que o limite, entao serão acrescentados zeros ao final. O valor nao é truncado se a quantidade de digitos for maior que o limite. Precisão 0 significa que o nenhum valor é printado se o numero for 0.

Para formatos e, E, f: é o numero de digitos que serão mostrados depois do ponto decimal.

Para formatos g e G: é o numero maximo de digitos significantes a serem mostrados.

Para s: é o numero maximo de caracteres a serem mostrados. Por padrão, todos os caracteres serão mostrados até o caracter nulo que finaliza uma string (por exemplo \n)

Para c: não tem efeito.

Quando nenhuma precisão é especificada, o padrão é 1. Se o periodo é especificado sem um valor explicito para precisão, 0 é assumido.

.* A precisão nao é especificada na formatação da string, mas é passado como argumento precedendo o argumento a ser formatado.

Modificadores de Quantidade


quantidade Descrição
h O argumento é interpretado como um short int ou unsigned short int (só se aplica aos formatadores de inteiro: i, d, o, u, x, X).
l O argumento é interpretado como um long int ou unsigned long int (só se aplica aos formatadores de inteiro: i, d, o, u, x, X) e como um caractere de largura ou cadeia de caracteres de largura para formatadores c e s.
L O argumento é interpretado como um long double (somente para formatadores de float: e, E, f, g e G).

O printf é muito poderoso, e espero ter ajudado a conhece-lo melhor.

Obrigado, até a proxima!

[Tarsis Azevedo] [dica rapida] syntax hightlight no seu blog com javascript

Wednesday, February 29th, 2012


se voce tem um blog sobre programação, provavelmente voce postará snippets de codigo e provavelmente voce vai querer que esse snippet tenha syntax highlight como no seu editor de codigo preferido.

mas como faz?

é bem facil, basta voce usar um modulo JS e CSS chamado google code prettify.

para cofigura-lo na pagina. basta voce colocar esses 2 links no seu html.



e depois chamar uma função no load da pagina.

$(function() {prettyPrint();});

obs: para chama-lo assim voce deve carregar o jquery na pagina.

obs 2: mais informaçoes de configuração, veja o readme. do projeto.

e agora?

basta voce colocar seu codigo dentro de uma tag code ou pre com a classe prettyprint e pronto, seu codigo vai ficar bonito na pagina!

um exemplo:

print "Hello World!

é isso, até mais!

[Tarsis Azevedo] Programming Highlight - 2

Sunday, February 12th, 2012


compilação dos melhores links da semana

Leitura

  • Zen Coder or Distraction-Junkie

http://www.componentowl.com/blog/2012/02/zen-coder-vs-distraction-junkie/

  • Jeff Atwood anunciou sua saida da equipe do Stack Overflow.

http://www.codinghorror.com/blog/2012/02/farewell-stack-exchange.html

http://www.dirtymonkey.co.uk/blog/zen-of-python-poster

  • Lembra do Hacker way do Facebook nos Highlights da semana passada? Então, posters sobre o ele em creative commons pra voce baixar

http://www.designforfun.com/facebookposters/

  • Uma otima apresentação sobre como e porque customizar os admin do django. Indica varios pros e contras de cada abordagem

http://www.slideshare.net/lincolnloop/customizing-the-django-admin/

  • Se voce usa vim, veja se está fazendo isso certo!

http://blog.sanctum.geek.nz/vim-anti-patterns/

  • Patterns de ORM

http://techspot.zzzeek.org/2012/02/07/patterns-implemented-by-sqlalchemy/

  • Css Box Model

http://css-tricks.com/the-css-box-model/

  • Podcasts for Hackers

http://designpepper.com/podcasts-for-hackers

Projetos

  • Django-Facebook - o principal destaque desse projeto é a integracao com o Open Graph beta.

[Tarsis Azevedo] [Review] Nao me faça pensar! Uma Abordagem de Bom Senso À Usabilidade na Web

Wednesday, February 8th, 2012


Eu recentemente acabei de ler este livro sensacional sobre usabilidade na web.

Ele trata sobre a arquitetura de informação de uma pagina web, mostrando elementos básicos que toda pagina deve ter, o que fazer e o que não fazer, como montar sua pagina principal e como executar testes de usabilidade. Te abre os olhos pra questões básicas muitas vezes esquecidas por nós em nossos projetos web.

Mas eu sou desenvolvedor!

Por isso mesmo! Você deve ser plural, conhecer um pouco de tudo. Design, infraestrutura, usabilidade, CSS, HTML, semantica, protocolo http e todo o ecosistema que engloba a web.

Neste otimo post o Henrique Bastos fala mais sobre pluralidade para programadores web. Vale a leitura!

Se você quiser ler somente um livro sobre usabilidade na sua vida, LEIA ESTE!

Ok, legal. Onde eu compro?

Voce pode escolher o melhor preço no buscapé, por esse link.

Ou se preferir, pode comprar a versao em ingles, na amazon.

Pode ter certeza, este livro é um otimo investimento para melhorar seus projetos web, e deixar seus usuarios mais felizes! Aproveite e boa leitura.

Até a proxima!

[Tarsis Azevedo] Programming Highlight - 1

Monday, February 6th, 2012


uma compilação dos melhores links que li na semana.

https://www.destroyallsoftware.com/talks/wat

  • O twitter lançou a versao 2.0 do seu bootstrap. Aqui tem uma palestra explicando as principais mudanças.

http://speakerdeck.com/u/mdo/p/bootstrap-2

  • O “Hacker Way” do Facebook, segundo o Mark Zuckerberg. Vale a leitura! Documento original

http://www.startuplessonslearned.com/2012/02/hacker-way.html

  • Tem duvida do que é REST, RESTful e tudo isso? Leia essa thread do stackoverflow.

http://stackoverflow.com/questions/671118/what-exactly-is-restful-programming

  • Teste quais features de css3 seu browser suporta.

http://css3test.com/

[Tarsis Azevedo] Testes em Javascript - Jasmine

Wednesday, February 1st, 2012


Testes automatizados emergiram como uma das boas praticas da engenharia de software, e seus resultados sao comprovadamente eficazes.

Eu utilizo bastante essas tecnicas quando programo em python/django com ferramentas como o splinter, unittest entre outras. Porem quando programava em javacript, eu sempre senti falta desses testes automatizados.

E o Jasmine?

tl;dr - Jasmine is a behavior-driven development framework for testing your JavaScript code.
It does not depend on any other JavaScript frameworks.
It does not require a DOM.
And it has a clean, obvious syntax so that you can easily write tests.

Em setembro do ano passado (2011), comecei a trabalhar no projeto de cobertura de eventos na globo.com. E tinhamos como desafio principal, atualizar uma pagina em tempo real via streaming com fotos, videos e textos. Pra isso os componentes da pagina teriam que interagir muito, recebendo e tratando os dados enviados do streaming. Usamos muito js com o framework mootools, e pra testar usamos o jasmine, o que nos proporcionou uma segurança e qualidade de codigo excelentes!

Agora chega de falar!

Show me the code

Pra começar, vc descreve um cenario que vai testar.

Como exemplo, vamos fazer um fizzbuzz

describe("Fizz Buzz", function(){
    it("numero igual a tres deve retornar fizz", function(){
        expect(fizzbuzz(3)).toEqual("fizz");
    });
});

Depois de escrever o teste, a gente escreve um codigo pra passar:

var fizzbuzz = function(numero) {
    return "fizz";
}

Agora mais um cenario:

it("numero igual a cinco, deve retornar buzz",function() {
    expect(fizzbuzz(5)).toEqual("buzz");
});

mais um pouco de codigo:

var fizzbuzz = function(numero) {
    if (numero === 3) {
        return "fizz";
    }
    return "buzz";
};

Bom ai vcs podem continuar a brincar e terminar o codigo.

E pra rodar?

Bom vc pode carregar os scripts(download aqui) do jasmine numa pagina html estatica e por ultimo carregar o seu teste.
Um exemplo:



        

        

            jasmine.getEnv().addReporter(new jasmine.TrivialReporter());
            jasmine.getEnv().execute();

Se vc tem um projeto em ruby com rails, vc pode usar uma gem pra rodar os testes.

Se vc tem um projeto em python, pode usar o jasmine-test-runner, feito pelo cobrateam.

Se vc tem um projeto em outra linguagem, veja aqui como rodar o jasmine.

Entao é isso!

Até a proxima, []’s

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

Thursday, 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

Thursday, 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. (more…)

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

    Thursday, 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!