Code Kata
No momento estou lendo o The Passionate Programmer, livro muito inspirador do Chad Fowler, com uma série de dicas sobre como construir uma carreira na área de desenvolvimento de software.
Uma das coisas que ele cita, é que assim como músicos (Chad Fowler é músico, também), programadores precisam praticar, a maioria dos programadores pratica/aprende durante o trabalho, mas raramente ensaiam como os músicos profissionais costumam fazer, ensaiar o trabalho de programação, praticar, é algo que poucos programadores fazem, e quando chega a hora da performance, a música não fica boa.
Afinal, você não acharia aceitável um músico que falha durante uma performance, acharia?
No fim do livro, ele recomenda dois sites
Comecei a brincar com o Code Kata hoje, o primeiro Kata é mais um exercício mental, nada para se programar na prática, já o segundo tem um exercício legal, para você desenvolver um algoritmo que busque por um inteiro em específico dentro de uma array, a função é basicamente esta:
chop(int, array) -> int
o primeiro parâmetro é o inteiro que você quer buscar, o segundo é a array, e o resultado é a posição dele. -1 é o valor que a função retorna caso não encontre, ou caso a array esteja vazia. O código para testar a função é o seguinte:
test_chop.rb
require 'test/unit'
require 'chop.rb'
class TestChop < Test::Unit::TestCase
def test_chop
assert_equal(-1, chop(3, []))
assert_equal(-1, chop(3, [1]))
assert_equal(0, chop(1, [1]))
assert_equal(0, chop(1, [1, 3, 5]))
assert_equal(1, chop(3, [1, 3, 5]))
assert_equal(2, chop(5, [1, 3, 5]))
assert_equal(-1, chop(0, [1, 3, 5]))
assert_equal(-1, chop(2, [1, 3, 5]))
assert_equal(-1, chop(4, [1, 3, 5]))
assert_equal(-1, chop(6, [1, 3, 5]))
assert_equal(0, chop(1, [1, 3, 5, 7]))
assert_equal(1, chop(3, [1, 3, 5, 7]))
assert_equal(2, chop(5, [1, 3, 5, 7]))
assert_equal(3, chop(7, [1, 3, 5, 7]))
assert_equal(-1, chop(0, [1, 3, 5, 7]))
assert_equal(-1, chop(2, [1, 3, 5, 7]))
assert_equal(-1, chop(4, [1, 3, 5, 7]))
assert_equal(-1, chop(6, [1, 3, 5, 7]))
assert_equal(-1, chop(8, [1, 3, 5, 7]))
end
end
o meu código (que passa pelos testes acima) ficou assim, amanhã vou tentar outra solução para o problema
chop.rb
def chop(int, ary)
if (ary.class == Array) && ary.size > 0
found = false
ary.each_with_index
{|n,i| found = i if n == int }
found ? found : -1
else
-1
end
end
Rails 2.1!
5 dias atrás saiu a versão 2.1 do Rails, e hoje (agora mesmo) foi anunciado o lançamento do primeiro livro sobre o Rails 2.1, e o livro é brasileiríssimo! Foi escrito pelo Carlos Brando e Marcos Tapajós, e está disponível no site Baú de Arquivos.
Acabei de fazer download da minha cópia, pelo índice de conteúdo do livro, promete ser muito interessante.
segue a introdução do livro:
Por volta do mês de julho de 2004 David Heinemeier Hansson lançou publicamente o framework Ruby on Rails, que havia sido extraído de um software chamado Basecamp. Mais de três anos depois, no dia 7 de dezembro de 2007 o Ruby on Rails chegou a sua versão 2.0 com diversas alterações importantes. De lá para cá se passaram seis meses, e neste tempo mais de 1400 programadores do mundo todo contribuiram criando 1600 patches. E hoje, 1 de junho de 2008 o Ruby on Rails chega à sua versão 2.1.
De acordo com David as principais novidades nesta versão são:
- Timezones
- Dirty tracking
- Gem Dependencies
- Named scope
- UTC-based migrations
- Better caching
Para atualizar ou instalar a nova versão, é o de sempre:
gem install rails
primeiros passos com o Git
acabei de ver um screencast sobre o git+rails, muito interessante.
para utilizar o git com um projeto novo em rails, é necessário seguir os seguintes passos:
1. crie seu projeto:
rails todo
2. depois, inicie o git
git init
3. adicione os arquivos/diretórios a serem ignorados no .gitignore
.DS_Store
conf/database.yml
db/*.sqlite3
tmp//
log/*.log
4. crie alguns arquivos .gitignore
touch tmp/.gitignore vendor/.gitignore log/.gitignore
5. e finalmente adicione o projeto, e dê um commit no projeto
git add .
git commit
talvez seja interessante ignorar o diretório cache/, ainda não usei muito o git, mas pode ser interessante fazer isto.
The Open Source Census
Acabei de ler sobre um projeto chamado "The Open Source Census", é um projeto que visa coletar dados de computadores com software livre (seja windoze ou *nix) para gerar estatísticas sobre os softwares mais utilizados, distribuições de linux, empresas e nacionalidades. Já existem algumas estatísticas disponíveis agora, com os dados de 452 máquinas pesquisadas.
Fiz o meu registro no site OSS Census, baixei o programa, executei-o, e pronto. Simples e indolor :)
Posting results to: https://www.osscensus.org/service/scans/scanpost …please wait
Result: Success! View reports at http://www.osscensus.org
Videos do Rails for Kids
estão disponíveis os videos do Rails for Kids, com as seguintes palestras:
- Ame seu código – Bons hábitos com Ruby on Rails (Eduardo Fiorezi)
- Tomando a pílula vermelha: bem-vindo ao desenvolvimento web sem dor com ROR (Demetrius Nunes)
- Ajax com Rails, interatividade e usabilidade ao alcance de todos (Rodrigo Urubatan F. J.)
- Rails e a onda da adoção tecnológica: Por que agora é uma boa época para adotar o Rails (Carl Anthony Youngblood)
- Domain Specific Languages – Estendendo o Rails para produtividade máxima (Ronaldo Melo Ferraz)
- Desvendando o novo Rails 2.0 (Fabio Akita)
- Ruby on Rails e o Mercado (Julio Santos Monteiro)
- Projeto Lucidus: produtividade ao extremo com XP e Rails (Vinícius Maranhães Teles)
- Um bate papo com Carl, Fabio Akita, Ronaldo Ferraz e o Vinícius Manhães Teles (Mesa redonda)
http://www.egenial.com.br/railsforkids/
email: falecom at egenial.com.br
senha: cotolengo123
Rails 2.0
o DHH anunciou ontem (7/dez) o lançamento do Rails 2.0, infelizmente só pude saber hoje, estou (teoricamente) sem internet, ah… se não fossem as redes wifi abertas :)
pelo visto há uma série de novas features, Carlos Júnior escreveu sobre várias delas, a vida promete ficar muito melhor agora.
leia também a notícia oficial no blog do Ruby on Rails.
Clovisgeyer.com.br

(devia ter diminuido mais essa imagem, blah)
Depois de algum tempo de desenvolvimento, enfim está no ar o site do meu pai, com charges e artigos do mesmo :)
criado com RoR, é claro :P
E a lua brilha.
Ah, eu sei, estou atrasado né?
Tudo bem, mas vim aqui pra falar do Moonlight, a versão do projeto mono do Silverlight, e agora, as coisas ficaram promissoras. Eu estou pensando seriamente em aprender C#.
Já fazia algum tempo, o desenpenho e a portabilidade do C# me chamaram a atenção, aqui mesmo eu utilizo um programinha chamado Tomboy, que é um wiki pessoal. Ele funciona utilizando o C#, Gtk# e Gnome#, e é bem rápido =)
Acima de tudo, o CLI permite que você programe em Ruby, Python e várias outras linguagens de programação. Tudo isso utilizando a estrutura do .NET, que é suportada no Linux/UNIX/cafeteiras pelo Mono. E agora o Moonlight.
Mono Silverlight implementation emerges after epic hackathon
PS: A equipe do Mono Project fez a implementação do Moonlight em 21 dias.
DRYing database.yaml
não se repetindo no database.yaml do Rails,
development: &login adapter: sqlite3 dbfile: db/database.sqlite3 test: <<: *login production: <<: *login
isso é bom pra quando se está com preguiça de fazer um database pra cada environment ;)
Trabalhando com Rails
num passeio matinal pela internet, esbarrei com o site Working With Rails, curiosamente eu encontrei o meu nome lá (ok, eu estava procurando pelo meu nome no Google)
muito bom, já tenho 25% de autoridade, de acordo com o site ;)
“Using Ruby for 6 years
Using Rails for 2 years 6 months”

