Posts de February, 2012

[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!

[Rafael Biriba] 5 bons motivos para você não perder tempo com travian ou outro jogo web browser

Tuesday, February 28th, 2012


Estou para escrever este post há muito tempo, desde que parei de jogar travian.

Joguei travian por mais de 4 anos… Começei em 2005 em servidores americanos, depois fui pros BRs da vida e joguei até meados de 2010…

Fui general de ataque, de defesa, lider de aliança TOP 3 (nunca fui lider de aliança top 1 =/), já cuidei de WW (como sitter), já fui dono de WW, ja tive 500 mil soldados mortos num ataque suicida, ja gastei muito dinheiro pra usar os bonus do travian, ja coloquei despertador pra acordar de madrugada e construir algo, e por ai vai…

Como podem ver, minha experiência com o travian foi muito grande, e lá no jogo eu fiz amigos na qual eu converso até hoje pelo msn/facebook…

Porém, é um jogo que deixa um certo vício, e o que você ganha de um lado, você perde de outro…

Perco as contas de quantas festas, encontros com amigos, futebol, passeios, e até natais em familia eu perdi pra jogar travian, isso sem falar do dinheiro e tempo investido…

Em 2011 eu tentei voltar pro travian, e me deparei com a nova versão (que até então não conhecia), onde o seu herói fazia uma espécie de “missões”…

Por isso eu resolvi publicar alguns motivos bem destacado e explicado para convencer alguns jogadores a mudar sua forma de pensar com relação a esse e outros jogos do mesmo estilo (ikariam, thecrims, imperiaonline, bitefight e por ai vai…)

Vamos lá:

1˚ motivo: Perda de dinheiro

Escolhi começar por este ponto, que pra mim foi o mais marcante… Eu gastava as vezes mais de R$ 100,00 por mês comprando ouro para poder investir na minha conta.

O que muitas pessoas não sabem, é que o objetivo de todos esses jogos online é arrecadar dinheiro… Você achou um jogo muito legal ? É divertido e emocionante ? E ainda é de graça ?? Até pode ser, mas dá uma verificada se não tem a opção de comprar alguma coisa, como ouro por exemplo, para acelerar uma construção ou aumentar seu poder de ataque.

Pra você ter uma ideia… Existe uma plataforma de pagamentos online, para os jogadores do colheita feliz poderem comprar créditos: http://exame.abril.com.br/tecnologia/noticias/criadora-do-jogo-colheita-feliz-lanca-plataforma-de-pagamento-online

No caso do travian, a corrida para crescer a conta logo no inicio do servidor é muito grande… Usei muitas vezes construir imediatamente, bonus de ataque, bonus de defesa, troca npc no mercado e por aí vai…

Agora você já sabe… Todos esses jogos “gratuitos” estão aí para proporcionar muito divertimento e com isso gerar muita ansiedade… Porque esperar muito tempo para passar de nível, produzir mais, crescer sua vila, se você pode comprar algumas moedas (ouro do jogo) e subir “mais rapidamente”… Depois isso vira um vício, e usar dinheiro no jogo passa a ser “essencial”.

2˚ motivo: Perda de tempo

Esse é um ponto muito bom também… Você que ainda joga travian e está lendo isso, já colocou um despertador para acordar de madrugada e construir alguma coisa ??

Eu sei que hoje em dia tem scripts (eu até já postei muita coisa sobre isso), só que antigamente os scripts não eram tão populares, então tinhamos que acordar de madrugada para fazer algumas coisas, ou desviar as tropas de um ataque forte…

O problema não é só as madrugadas não… Quantos sabados eu perdi jogando travian, já passei o natal jogando travian. Como em epocas de natal e ano novo acontece uma trégua no jogo, os jogadores “mais espertos” costumam aproveitar esse tempo e crescer ainda mais as suas vilas…

Agora, no caso do travian, the crims, ou seja, esses jogos onde o servidor é reiniciado de tempos em tempos, é a perda de tempo total !! Você já parou pra pensar que se mata jogando travian, dá quase a sua vida pelo jogo (tem até gente que as vezes acha que é real) e depois de uns 6 meses o servidor é resetado e tudo começa DE NOVO !! Isso mesmo… Joga seu esforço no lixo e começa de novo !!

3˚ motivo: Influência na sua vida pessoal

Este ponto está diretamente ligado ao anterior… Mas preferi tratar como um ponto separado…

Eu jogava travian todo sábado, domingo e feriados… Depois que consegui um telefone com internet, ai as coisas melhoraram… Eu passei a jogar também nos momentos onde eu estaria fora de casa…

Vida pessoal ?? O que é isso ? Pra que amigos se eu sou o lider geral de uma aliança e estou mandando em 500 jogadores ?

Era assim que eu via algumas pessoas agirem, e por muitas vezes eu me pegava fazendo isso… “Ir pra praia ?? Logo hoje que iram liberar os monumentos no travian… Não posso perder essa chance…”

4˚ motivo: Vício no jogo

Acredito que a esta altura você já esteja imaginando que vício pelo jogo são todos os pontos anteriors somados…

Mas ainda pode piorar…

Primeiro vamos ver o que significa vício:
Vício (do latim “vitium”, que significa “falha ou defeito”) é uma tendência habitual para certo mal, sendo oposto à virtude. 

Ou seja, vício é uma coisa que te faz mal, ou que te prejudica… E era isso que estava acontecendo… Matar aulas na faculdade estava sendo frequentes para poder me concentrar no jogo… Ficava horas no laborátorio usando o computador para tentar salvar uma aldeia de um ataque ou capturar a aldeia de alguém…

Eu estava prejudicando meus estudos com esse vício… Será que o jogo é tão bom que vale esse sacrifício ??

5˚ motivo: Sacrifícios em Vão

Isso mesmo… Como último ponto, tudo isso é em vão…

De uns anos pra cá, começou a surgir scripts milagrosos onde você pode fazer uma fila de construção, desviar tropas automaticamente, baby sitter que joga pra você…

Então acordar de madrugada não fazia mais sentido, pois eu estaria me sacrificando para jogar honestamente enquanto gente por ai estava investindo em scripts que são muito mais eficientes…

Agora com as novas versões do travian, alguns scripts vem sido detectados e o jogo tem melhorado quanto a isso. Mas junto com essas novas versões, vem piorado por outro lado.

Logo logo, se já não tiver acontecendo, você poderá usar ouro para comprar itens para seu heroi… Durante muito tempo os beneficios pra que usava dinheiro no jogo vinha sendo pequenos… Só que agora, jogar usando dinheiro pra quem quer ser bem sucedido tem sido quase que uma obrigação.

Foi por esse mesmo motivo que eu parei de jogar GunBound, porque o pessoal com dinheiro investia pesado no jogo e quem jogava sem gastar nada não tinha chances…

Quer fazer um teste ?? Experimente jogar travian sem usar scripts e sem usar dinheiro, sem acordar de madrugada, sem sacrificar a faculdade, e sem se ausentar para sua familia e seus amigos… Sabe o que vai acontecer ?? Sua aldeia não vai crescer, não terá tropas para defender a aldeia, e dentro de alguns dias, alguem vai começar a te atacar, roubar seus recursos, e com isso não vai mais conseguir jogar…

Então fica fácil de fazer a conta… Sem vício = Sem jogo !

Sei que vai ter gente comentando aqui que joga travian, não é viciado e não gasta dinheiro, mas eu tenho certeza absoluta que não é um jogador forte, e que provavelmente está sendo atacado.

O ponto que eu estou querendo colocar aqui, é que por mais que não seja um vício, o tempo que você gasta no travian poderia ser investido em outra coisa (leitura de um livro, esporte, ou até mesmo em um jogo, mas que seja um que não tenha a opcão de ‘gastar dinheiro loucamente’, exemplo: Civilization, GTA ou os mais simples WAR online, xadrez, etc… )…

Apesar de qualquer jogo ser perda de tempo, você jogando Civilization, Call of Duty, etc… você vai estar se divertindo, jogando online, com jogadores que não estão usando dinheiro para ser melhor que você e nem estão roubando (ou ao menos não deveriam, rs). Mesmo assim ainda voto em ler um livro, aprender algo no computador, estudar, etc…

Foi pensando nisso que eu vendi meu XBox, ainda sinto falta dele. Foi uma decisão muito difícil, mas tenho tido mais tempo para aprender coisas novas e para meu lazer (por exemplo, estou começando a entrar na área de Aeromodelos, com helicopteros elétricos, assunto para uma outra ocasião…)

Bom, espero ter conseguido compatilhar bem minha experiência e minha opnião sobre o assunto. Se um dia eu consegui, espero que você, jogador de travian, consiga escapar disso também. =)

Não deixe de comentar… Adoraria ler o que você pensa a respeito disso…

<!–<!–TwitterFacebookShare

Leia também:

[Rafael Biriba] Problemas com o youtube ? Publique no Vimeo.com

Sunday, February 26th, 2012
http://vimeo.com/

http://vimeo.com/

Similar ao youtube, o vimeo é uma ferramenta de publicação de vídeos, lançado em 2004.

Recentemente o youtube vem liberando todas as contas para publicar vídeos com mais de 15 minutos… Porém ainda há contas com limitações e ainda vejo pessoas criando vários videos (parte 1, 2, 3, 4, 5, 6…)

O vimeo vem prestando um serviço muito bom e tem se mostrado um excelente competidor ao youtube.

Mas e agora ? Qual dos dois usar ?

Na minha opnião: Quando alguém fala de vídeo online, eu penso logo em youtube. Quando quero buscar algum vídeo, eu penso logo em youtube…

O que salva o vimeo, são algunas funções que não estão disponíveis no youtube, como customização do player, permitindo você colocar sua própria logo, possui um relatório de visitas ao video mais superior, não limita o tamanho do vídeo e há quem diga que a qualidade do vídeo no vimeo fica melhor…

Quando pesquisava sobre esse assunto, achei até uma frase legal, que vale compartilhar: “O Vimeo tem mais qualidade mas o Youtube tem mais quantidade”.

Agora cabe a você avaliar qual seria a melhor opção para o seu problema :)

Eu faço assim com meus vídeos… O youtube recusou um video meu ? Vimeo nele =)

<!–<!–TwitterFacebookShare

Leia também:


[Rafael Carício] Finalmente entendi o PyPy

Saturday, February 25th, 2012

Olá pessoal, depois de muito tempo sem postar nada aqui estou voltando a escrever alguma coisa. Espero começar a escrever mais por aqui. Vou tentar.

Como muitos sabem, eu curto muito essa parte de implementação de compiladores e interpretadores e etc. E sempre que posso fico lendo coisas legais sobre este assunto. Recentemente Bernardo Heynemann me enviou um post de um cara que estava implementando sua própria linguagem. O autor (Laurence Tratt) percebeu que precisava melhorar ainda mais a performance dessa linguagem, porém escrever um JIT do zero é uma tarefa muito complicada e trabalhosa. Foi ai que Laurence Tratt se deparou com o PyPy e resolveu (depois de alguns testes e estudos) portar a implementação de sua linguagem para o PyPy e obteve ganhos de performance absurdos. Se quiser mais detalhes, é melhor ler o post. O que eu quero destacar aqui é que durante a leitura do post eu entendi, finalmente, o projeto PyPy.

Afinal o que é o PyPy?

Muitas pessoas tentaram me explicar alguns anos atrás, mas só agora que caiu a ficha. O PyPy tem como objetivo ser uma implementação alternativa mais rápida do interpretador da linguagem Python (versão 2.7.2) o CPython. Só que as pessoas sempre me vendiam o PyPy como a implementação de Python em Python. Eu nunca entendia isso direito e deixava pra lá. Até o belo dia em que eu li aquele post e parei para realmente entender. O PyPy (de forma bem abstrata) é um nome para dos projetos diferentes mas que sevem para solucionar um problema: criar uma implementação mais rápida da linguagem Python. São eles:

  • RPython Toolchain - um projeto para implementação de linguagens dinâmicas que usa como DSL um subset da linguagem Python que é chamado de RPython. Seve para implementar interpretadores para qualquer linguagem de programação usando RPython. Essa implementação é usada para gerar código nativo (muito) otimizado.
  • Uma implementação da linguagem Python - esta implementação é compatível com a versão 2.7.2 do CPython e este interpretador é escrito em RPython.

Devido a o nome PyPy se referir a estes “dois” projetos. Muita gente se confunde, e muito, sobre o que é o PyPy (assim como eu). O que eu achei mais interessante depois deste entendimento é que eu posso usar o RPython para implementar interpretadores para qualquer linguagem que eu quiser e com isso ganhar até um JIT de brinde para esta nova linguagem.

O que estou fazendo agora é estudando melhor o RPython para usar-lo em um projeto de linguagem de programação que quero fazer. Estou bastante motivado a fazer isso e espero postar resultados dessa brincadeira por aqui em breve. Para maiores dúvidas e detalhes sobre o PyPy a documentação pode ser encontrada aqui.

[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!

[Davidson Fellipe] Relato sobre o BeagaJS

Wednesday, February 8th, 2012

  No dia 21 de janeiro, Belo Horizonte foi palco de um evento bem legal sobre Javascript, o mesmo reuniu a comunidade mineira e grandes nomes da área, tais como Luciano Ramalho, Diego Fleury, Zeno Rocha, Irae, Eder Frances, Suissa, Milfont, … Continue lendo

[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/

[Rafael Biriba] Ubuntu 11.10 com Ruby on Rails + Nginx + Mysql de forma simples

Friday, February 3rd, 2012

Andei procurando na internet por algum script para fazer uma instalação mais “automatizada” de um ambiente Ruby on Rails numa máquina virtual (VPS) rodando Ubuntu 11.10

Depois de pesquisar muito, só encontrei referências detalhadas  para ubuntu 10.* ou então alguns blogs sugerindo algumas linhas de comando apenas.

Como eu já estava terminando um projeto de um site e precisava de um ambiente de produção, resolvi fazer um script (em bash), onde eu tivesse o controle de tudo que iria acontecer de forma segura e eficaz.

O script está disponível no meu github, use como quiser =)

Lembrando que só testei no Ubuntu 11.10, a instalação instala e configura o seguinte:
- Ruby 1.9.2-p290
-  Nginx Upload Module 2.2.0
- Nginx 1.1.12 
- iptables para as portas principais de ssh(22), http(80), https(443), dns(53)
- Mysql (versão estável do apt-get do ubuntu)
- Postfix (versão estável do apt-get do ubuntu)
- Gem Bundler (última versão pelo rubygems)

Com isso, basta configurar o domínio da sua aplicação corretamente na configuração do nginx, fazer o deploy e ser feliz! =)

Link do projeto: https://github.com/rafaelbiriba/Ubuntu-VPS-Builder 

Abaixo segue uma cópia do código que eu coloquei no git assim você pode tirar suas dúvidas pelos comentários… Caso decida usar o script, baixe ele pelo link do github. Não use o código abaixo pois o mesmo pode já estar desatualizado!

Modo de usar no servidor:
$ chmod +x vps_builder.sh
$ ./vps_builder.sh seudominio.com 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#!/bin/bash
# "Automated VPS Setup for Ubuntu 11.10 - Rails with Nginx"
#
# Created by: Rafael Biriba - www.rafaelbiriba.com - biribarj@gmail.com
# https://github.com/rafaelbiriba/Ubuntu-VPS-Builder/
#
# USAGE:
#
# $ chmod +x vps_builder.sh
# $ ./vps_builder.sh yourdomain.com"
 
echo "Set Hostname"
 
echo $1 > /etc/hostname
echo "127.0.0.1 $1" >> /etc/hosts
hostname -F /etc/hostname
 
echo "Set Timezone"
 
ln -sf /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime
 
echo "Install Essencials"
 
apt-get install build-essential zlib1g-dev libreadline6-dev libssl-dev wget git-core sudo -y
 
echo "Install Ruby 1.9.2"
 
mkdir ~/tmp && cd ~/tmp
wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p290.tar.gz
tar xzvf ruby-1.9.2-p290.tar.gz
cd ruby-1.9.2-p290
./configure
make
make install
cd ~
rm -rf ~/tmp
 
echo "Install Passenger and Nginx"
 
mkdir ~/tmp && cd ~/tmp
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.21.tar.gz
tar xzvf pcre-8.21.tar.gz
cd pcre-8.21
./configure && make && make install
cd ~/tmp
 
wget http://nginx.org/download/nginx-1.1.12.tar.gz
wget http://www.grid.net.ru/nginx/download/nginx_upload_module-2.2.0.tar.gz
tar xzvf nginx-1.1.12.tar.gz
tar xzvf nginx_upload_module-2.2.0.tar.gz
 
gem install passenger
apt-get install libcurl4-openssl-dev -y
passenger-install-nginx-module --prefix=/opt/nginx --nginx-source-dir=/root/tmp/nginx-1.1.12 --extra-configure-flags=--add-module='/root/tmp/nginx_upload_module-2.2.0'
#passenger-install-nginx-module --auto --auto-download
cd ~
rm -rf ~/tmp
 
cd ~
wget https://raw.github.com/rafaelbiriba/Ubuntu-VPS-Builder/master/ubuntu_11-10_desktop/nginx-init.sh
cp nginx-init.sh /etc/init.d/nginx
rm nginx-init.sh
chmod +x /etc/init.d/nginx
/usr/sbin/update-rc.d -f nginx defaults
/etc/init.d/nginx start
 
echo "Configure iptables"
 
apt-get install iptables
 
tee /etc/init.d/firewall <<ENDOFFILE
#!/bin/bash
 
start(){
# Accepting all connections made on the special lo - loopback - 127.0.0.1 - interface
iptables -A INPUT -p tcp -i lo -j ACCEPT
 
# Rule which allows established tcp connections to stay up
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 
# SSH:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
 
# DNS:
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
 
# HTTP e HTTPS:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
 
# Block others ports
iptables -A INPUT -p tcp --syn -j DROP
iptables -A INPUT -p udp --dport 0:1023 -j DROP
 
}
stop(){
iptables -F
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
}
 
case "\$1" in
"start") start ;;
"stop") stop ;;
"restart") stop; start ;;
*) echo "start or stop params"
esac
ENDOFFILE
 
chmod +x /etc/init.d/firewall
update-rc.d firewall defaults 99
/etc/init.d/firewall start
 
echo "Install MySQL"
 
apt-get install mysql-server mysql-client libmysqlclient-dev -y
 
echo "Install postfix"
 
# Install type: Internet Site
# Default email domain name: example.com
apt-get install postfix mailutils telnet -y
/usr/sbin/update-rc.d postfix defaults
/etc/init.d/postfix start
 
echo "Install gem bundler"
 
gem install bundler
 
echo "VPS Setup Complete"

Qualquer dúvida, estamos aí para trocar ideias ;)

<!–<!–TwitterFacebookShare

Leia também:


[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