17 Jan
Eu sou um grande fã de automatização de tarefas repetitivas. Odeio ter que repetir tarefas.
Isso me torna um grande fã de coisas como integração contínua, deploy contínuo, testes e automatizadores de builds.
Para IC, o cruisecontrol.rb é maravilhoso. Deploy contínuo eu resolvo com um simples script bash. Quanto aos testes, o infinitest (ainda vou falar mais sobre ele, mas ele é demais!) trouxe alegria de volta a minha vida.
Mas quando chega na parte de automatização de build, o mundo desaba. Como minha maior experiência é com Java, vou falar apenas sobre java.
Convenhamos, os dois automatizadores mais usados são terríveis. Tanto ant quanto maven nos fazem perder mais cabelos e mais cedo do que deveria.
Como a gente começa um projeto que vá usar um desses automatizadores? Pegamos um projeto antigo, copiamos o xml de configuração, colamos, apagamos uma parte, mudamos outra e pronto. Temos um novo projeto. Mas porque raios a gente precisa dessas coisas que foram copiadas? No ant porque o ciclo básico de muitos projetos é igual. No maven porque ele exige muita coisa quase inútil.
Eu já não gosto de xml (na verdade, acho xml muito legal, o problema é que usam ele para tudo - e na maioria das vezes, usam mal) e tenho que manter xmls muito parecidos entre todos os meus projetos. Um problema sério que o ant tem é que tudo tem que ser configurado ou ele não faz nada. Você acaba tendo que programar o seu build em xml (o que pra mim já elimina ele da minha vida).
O maven facilita um pouco nesse lado. Como ele tem um mínimo de convenções, com apenas umas 15 linhas de xml eu consigo convencer ele a compilar meu código. Mas são 15 linhas inúteis. Ele simplesmente não funciona sem essas 15 linhas.
Enquanto você apenas usa o maven para compilar seu código, rodar testes unitários, gerênciar suas dependências (sim, como todo usuário de maven eu passo por um classpath hell -em geral causado por projetos com dependências mal configuradas- por mês, mas ainda acho que vale a pena não precisar adicionar na mão), gerar a configuração para sua IDE, gerar seus jar/war, é tudo lindo e maravilhoso. O problema começa quando o projeto começa a ganhar um pouco mais de massa.
Já tentou configurar um build separado para testes de integração? mvn integration-test é uma das maiores mentiras já contadas. Você tem que se matar com o plugin do surefire (test runner que o maven usa) para conseguir separar os testes. E se você quiser um build separado para testes de aceitação? Pior ainda. Não existe mvn acceptance-test. Então ou você roda junto com o integration-test ou apela para profiles e reduz sua vida em alguns anos. E se eu sonhar com um build que rode testes de regressão para segurança (que não faz sentido rodar a cada commit. Uma vez por dia é o suficiente em muitos projetos). Nesse ponto você começa a pensar em suicídio.
E deploy? Ha! Quando você pensa isso alguém pula de trás do monitor, grita “Pegadinha do Malandro!” e te manda procurar o cargo plugin, que não vi funcionar com menos de 100 linhas de xml (quando funcionou).
Um padrão que eu notei que vem acontecendo comigo é que eu uso sempre três automatizadores. O maven para gerênciar dependências, compilar, rodar testes (mesmo com o inferno dos profiles). Scripts bash/ruby/perl/python/o_que_der_na_telha para deploy. E make para juntar tudo isso. Como? Make? Que o pessoal usa pra C? Esse mesmo. O make é simplesmente um monte de alias para um monte de comandos. Perfeito para juntar coisas completamente aleatórias.
Acabo tendo coisas como make test, integration-test, acceptance-test, deploy, etc. Mas o monte de lixo continua ali, escondido, esperando o próximo classpath hell para se auto-destruir.
Meu principal ponto com o maven é que ele tenta fazer muito mais do que deveria. Na boa? Não tem como escrever um plugin genérico para fazer deploy. Todos os sistemas são muito diferentes um do outro. Então não faça algo que vai funcionar mal e que seja difícil. Deixa para o programador se virar. Apenas facilite isso.
Bom, não escrevi esse monte de coisas apenas como um desabafo (embora tenha me feito muito bem :) ). Eu vou começar a desenvolver um automatizador que tenha uma filosofia diferente os atuais e facilite manter a minha zona organizada. Sem configuração alguma (tirando gerênciamento de dependências que não dá para evitar em qualquer projeto que use testes) ele vai ser capaz de compilar seu código, rodar qualquer tipo de teste (unit, integration, acceptance, etc). Ciclo de vida modificável (se eu não quiser que ele rode os testes unitários antes dos de aceitação, ele simplesmente não roda). O deploy fica a cargo do programador, mas o automatizador facilita a execução dos scripts. Ah, eu disse que não será usado xml algum para configuração?
Enfim, o que preciso nesse momento é de pessoas que estejam afim de contribuir com idéias e críticas (do tipo “não gosto de X porque Y”) pra esse planejamento inicial. Não criei uma lista ainda porque não sei se existem outros interessados (eventualmente sou eu que sou incapaz de usar ant e maven). Por enquanto podemos começar pelos comentários mesmo :)
Posts Relacionados:
Acompanhe-nos por
RSS, por Email ou via Twitter.
Veja como ter um desconto no Dreamhost: um excelente servidor web.
19 Nov
Alguns de vocês devem se lembrar que eu fiz um post reclamando do novo Apple Magic Mouse.
Pois bem, outro dia desses estava colocando meus feeds em dia e achei uma recomendação do Fábio Akita para um post onde havia um hack para que o mouse da Apple tivesse acesso ao terceiro botão. A Aplicação chama-se MiddleClick e funciona muito bem. No meu caso, as vezes ela trava depois de alguma hibernação, então eu criei um script que reinicia a aplicação e coloquei no cron.
md-mouse.sh:
#!/usr/bin/env bash
killall MiddleClick
open -a MiddleClick
(usar o comando) crontab -e e adicionar a linha:
10 * * * * /Users/fabsn/Library/Scripts/md-mouse.sh
Isso vai fazer com que o script seja reiniciado no minuto 10 de cada hora (a cada 1 hora).
Posts Relacionados:
Acompanhe-nos por
RSS, por Email ou via Twitter.
Veja como ter um desconto no Dreamhost: um excelente servidor web.
5 Nov
Assim como todos os produtos Apple, que quebram depois de certo tempo de uso determinado (2 anos), meu Apple Might Mouse quebrou. Era um bom mouse, mais por 60 dólares (que foi o que eu paguei por ele em 2007) dava para comprar coisas melhores. Tinha 4 botões e era bluetooth, mas tinhas seus problemas. Com duas pilhas era bem pesado (funcionava com apenas 1), e a cada 30 dias o scroll ficava inutilizável por conta da sujeira e era preciso aplicar uma técnica ninja de limpeza. Enfim, depois de 2 anos de brigas com o scroll ele finalmente quebrou para sempre. Minha primeira idéia era comprar um mouse com fio para trocar apenas o scroll mas me custaria 49 euros, então eu na minha grande ansiedade de consumidor Apple comprei um Apple Magic Mouse (69 euros). Bonito não?

Esse mouse resolveu a maior parte dos problemas do mouse antigo, é leve e não tem o problema do scroll. Na verdade a idéia é bem legal, toda a superfície é sensível e ele aceita alguns movimentos de dedos para o scroll, zoom e Forward e Backward (como em páginas web ou no álbum de fotos). Para fazer funcionar no mac (windows esquece) precisa de um update de 70MB que eu imagino so ser instalável no novo Snow Leopard (o manual do mouse exige OSX 10.6.1).
Mas a pior coisa é eu perdi 2 botões. Eu já esperava não encontrar o quarto botão, mas na verdade nem existe mais o botão do meio :-(, o que torna chato tarefas como “abrir em nova aba” do firefox, e inúmeros outros comandos interessantes de outros programas (já vi vários posts por ai de pessoas que desenham em programas de CAD que falta o botão para a função pan). Eu vou mesmo sentir falta de copiar e colar do linux na minha máquina virtual, ou com o sinergy no meu eeepc. Espero que a apple descubra um jeito de fazer isso funcionar via software nos próximos updates do magic mouse, quem dera fosse Software Livre…
Posts Relacionados:
Acompanhe-nos por
RSS, por Email ou via Twitter.
Veja como ter um desconto no Dreamhost: um excelente servidor web.
19 Aug

Desde o começo de agosto, o vidageek conta com cobertura internacional! Isso mesmo, eu (o Fabs) me mudei para França, e nos próximos 6 meses pretendo escrever uma série de artigos sobre a vida de um geek aqui pela Europa. Por hora, vou falar um pouco das minhas dificuldades tecnológicas, mas você pode ver mais sobre o meu dia a dia, arte, cultura e etc no meu blog pessoal. Tem um monte de fotos no picasa também.
Bom, por hora separei algumas historias.
Comprando um Ordinateur Portable (Notebook):
Três dias depois que cheguei em Paris, meu mac apresentou um problema na NVIDIA (clássico). Procurar uma assitência técnica foi um pouco complicado, e como também queria um eeepc para viajar, no meio do caminho decidi atrasar o concerto do mac e comprar um netbook.
Eu já fui do tipo de defensor do software livre que ficava indignado com aqueles pcs com um linux qualquer coisa que são vendidos no Extra. Depois por um tempo, escolhi ter menos dor de cabeça com computadores e comprei um mac. Pois bem, queria voltar ao mundo Linux, mas o primeiro problema que encontrei foi, diferente do Brasil em que vc ainda pode escolher entre windows e linux mal instalado, aqui, tudo vem com windows.

Segundo problema, pode esquecer o teclado QWERTY q vc está acostumado. Aqui é tudo AZERTY (Fica mais fácil de escrever a palavra fAZER :-). O máximo que consegui foi uns adesivos para colar em cima e ter o layout de teclado que eu uso. Quase dei um pulo em Londres para ver o DtSato e comprar lá.
Linux 9.04 “ne marche pas” (não funciona)
Dois dias depois de comprar meu eeepc 1101HA, ainda estava apanhando das configurações. Atualmente, ele roda Ubuntu 9.10 alpha (para funcionar todos os drivers), quando instalei o netbook-remix 9.04 não o kernel não suportava nem a wireless nem a ethernet.
Escrevendo nos Parques
Estou escrevendo esse artigo do meio do Jardim das Plantas. É incrível como existem lugares aqui para sentar, ler um livro, fazer pique-nique e bater papo. Faz muito sol em Paris, mas é muito legal ter essas sombras. A vantagem? Você pode usar seu notebook neles sem medo. Já vi até umas pessoas andando por ai de computador na mão, no meio da rua, numa boa.
Telefone Móveis
Não tive problema com isso, meu orientador me deu um chip e meu N95 já funcionava quando coloquei os pés no aeroporto. Mas fui comprar celular com a minha amiga e me expantei com o quanto é barato. Por 30-35 euros por mês, há 3G, televisão, gps, ligações ilimitadas para um conjunto de 2-3 celulares e cerca de 3h de ligação por mês. O Serviço 3G é excelente em Paris.
Wifi pela cidade
Qualquer lugar que eu paro na cidade tem Wireless (umas 30 redes). Os provedores de tv a cabo e internet oferecem esse serviço por assinante. A Free, operadora que minha amiga assina, tem uma tal de FreeWifi na cidade toda. Você habilita o seu roteador de casa a servir rede nos arredores de onde você mora, e recebe uma senha para poder usar pela cidade toda, uma ótima forma de colaborar.
Bom, por hoje só essas coisinhas do cotidiano. Em breve devo ir ao Dojo aqui em Paris e outras atividades para contar mais para vocês.
Se tiverem alguma dúvida sobre como algo funciona por aqui, é só deixar nos comentários. Abraços.
Posts Relacionados:
Acompanhe-nos por
RSS, por Email ou via Twitter.
Veja como ter um desconto no Dreamhost: um excelente servidor web.