Não Tem Mosquito

As aventuras de se desenvolver software no nosso Patropi.

Sexta-feira, Junho 19, 2009

Minha própria livraria de informática

Sempre quis ter uma livraria, graças à Amazon, agora tenho minha própria com meus livros técnicos preferidos.

Compre lá que eu ganharei uma comissão que será devidamente gasta em mais livros.

Quinta-feira, Junho 18, 2009

De aprendiz a expert, uma palestra de Dave Thomas

Excelente o vídeo da palestra do Dave Thomas sobre como se aprimorar como um desenvolvedor de software, ou melhor, em qualquer assunto. O mais divertido (ou desesperador) de ser um desenvolvedor é estar sempre aprendendo. A palestra dá várias dicas de como aprender mais rápido.


Dave Thomas é famoso pelo seu livro The Pragmatic Programmer, em co-autoria com Andy Hunt. O Andy acabou de lançar um livro que estava em um dos primeiros lugares de minha lista de desejos, o
.
Depois de ver o vídeo, acho que nem preciso comprar o livro tanto assim.

E além de tudo, o Dave é um palestrante bem divertido.

Marcadores: , ,

Quarta-feira, Junho 03, 2009

Assinando a IEEE Software com desconto

Uma das coisas mais legais (ou desesperadoras) do desenvolvimento de software é que sempre há mais para aprender. Entre livros e o Proggit há um espaço que está definhando mas ainda é muito legal. O das revistas. Minha preferida é a IEEE Software.

Trazendo um bom balanço entre o mundo acadêmico e a indústria, há sempre artigos interessantes para ler. Tem um bom número de artigos peer-reviewed, algumas colunas de opinião e seções específicas como de requisitos, carreira e usabilidade. O mais legal é que há sempre bons artigos de assuntos que eu não leria normalmente. Descobre-se até áreas de pesquisa que você nem imagina que exista. Acaba-se entendendo melhor todos aspectos de desenvolvimento de software. Confira o link ali em cima, toda edição traz uns artigos gratuitos.

Gosto do formato. É leve o bastante para carregar na mochila e fácil de levar para os lugares. As colunas são de um tamanho bom para ler na hora do almoço ou em uma espera de dentista. Os artigos em 2 ou 3 almoços são lidos. O pior defeito é que acabamos com ainda mais coisas interessantes a ler. Assim, só mesmo seguindo as dicas de como ler um artigo técnico do Steve McConnell.

Achei um link para assinar com 25% desconto, saindo a US$62,00 anuais. O preço de 2 livros por 6 revistas. Ótimo custo benefício. Pena só que esta assinatura não dá acesso aos artigos antigos.

Marcadores: ,

Quarta-feira, Maio 27, 2009

Wolfram|Alpha e a velocidade das andorinhas


A última da novidade da Internet é o Wolfram|Alpha. O bicho se intitula um mecanismo de conhecimento computacional. Se também previsse o futuro, uma melhor definição seria oráculo. Acessando várias bases de conhecimento, promete ter ou calcular respostas para tudo.

Já está todo mundo achando coisas interessantes para fazer com o Wolfram|Alpha, mas tenho que confessar o que eu achei mais legal.

Se você perguntar a velocidade de uma andorinha sem carga, ele te perguntará de volta: mas uma andorinha africana ou européia? :-) Tente: velocity of an unladen swallow.

Muito bom! Catando referências para este post achei outras brincadeiras divertidas com o Wolfram.

Marcadores: ,

Domingo, Março 22, 2009

Javascript: 3 livros para adquirir superpoderes

Javascript é um dos mais bem sucedidos bacalhaus da história da informática. Foram misturando funcionalidades de outras linguagens, ignorando a criação de um todo coeso. A implementação foi feita às pressas, sem o necessário tempo de maturação das boas linguagens de programação. Pra terminar de estragar, junte a isto o marqueting infeliz no nome de uma linguagem que não tem nada a ver com Java.

A linguagem sempre foi promovida como uma "programação para não-programadores". Desde então, é uma dificuldade encontrar livros que prestam. Dá-lhe livrecos ensinando o que é uma variável e um loop, ou dando receitas de bolo. Saco! Comprei meu primeiro livro baseado em recomendações da Amazon. Um lixo. Insisti e comprei um livro que era mal recomendado por ser "muito difícil". Foi uma das melhores compras de livro que já fiz.

JavaScript: The Definitive Guide de David Flanagan é tudo que um livro de referência tem que ser. Primeiro vem uma rápida introdução à linguagem para quem já sabe programar. A maior parte do livro é referência da linguagem e da API do browser, onde cada método é dissecado. Tudo preciso e sucinto. As diferenças de implementação nos browsers é explicada, o que era fundamental naquele tempo em que as incompatibilidades chegavam ao ponto de os arrays no IE começarem em 1 e no Netscape em 0.

O trabalho de edição da O'Reilly é um show. Há várias maneiras de achar a informação. A organização das informações é tão boa, que é mais rápido achar o que se quer no livro do que buscar na Internet. Hoje, a linguagem se padronizou e a incompatível API dos clientes cresceu uma ordem de grandeza. O livro também cresceu. A 5ª edição é um calhamaço de mais de 1000 páginas. Ótimo para vencer discussões jogando-o na cabeça de seu adversário. Nestes tempos de poderosas bibliotecas javascript, talvez não seja tão necessário quanto antes. A qualidade do livro permanece. É o alfarrábio onde se esclarece as minúcias da linguagem.

Douglas Crockford é o principal arquiteto da biblioteca javascript do Yahoo e conhecido como Sr. Javascript. Inventou o JSON e o JSLint. A impressão que tenho dele é que um velhinho cheio de manias e opiniões fortes, além de ser um pouco ranzinza. Ao ler JavaScript: The Good Parts mudei de idéia. As manias viraram sabedoria.

O foco do livro é o núcleo da linguagem, portanto nada de DOM, eventos ou CSS. Na verdade é menos do que o núcleo, mas sim o subconjunto das features que o autor considera as "boas partes". O livro tem uma grande qualidade: é sucinto. Apenas 170 páginas para descrever o que Javascript tem de bom e apontar suas armadilhas. A gozação, irresistível, é que bastam estas poucas páginas para descrever tudo o que Javascript tem de bom.

As atrocidades da linguagem são devidamente esculhambadas para que sejam evitadas. Aprende-se um monte de técnicas avançadas, como closures, currying, protótipos e herança. Boas práticas são recomendadas.

Gostei de detalhes como a notação "em trilhos":
O divertido dos diagramas é que eles descrevem apenas a parte boa da linguagem. No exemplo acima inteiros são proibidos de começar com zero. Na verdade a linguagem aceita, mas interpreta o número como um octal. Uma tenebrosa fonte de bugs, já que quando o sujeito entra 09 como o mês de setembro e a linguagem diz que é um número inválido.

A O'Reilly ficou a dever na produção editorial. Como cada exemplo de código é baseado nos exemplos anteriores, eles bem que poderiam ter indexado os nomes das funções.

John Resig é o superprogramador que criou a biblioteca JQuery. Escreveu o Pro JavaScript Techniques, que foca no uso de javascript para interagir com os browsers. É o livro para se atualizar com as mais modernas tecnologias Web. Você vai aprender sobre o DOM, CSS, eventos e ajax, Dá todos os macetes para dominar as incompatibilidades entre navegadores e as deficiências de APIs como o DOM. Este foco no cliente o torna o complemento ideal ao livro do Crockford.

Apesar das origens do autor, o livro é agnóstico em matéria de bibliotecas, descrevendo detalhes de várias. Lendo o livro você verá por que hoje em dia é fundamental usar uma biblioteca para não ter que perder tempo lidando com as manias de cada navegador. Resig promete para este ano um livro ainda mais avançado, o Secrets of the Javascript Ninja. O nome do livro mostra bem como o sujeito é nerd:-)

Lendo estas recomendações, você terá superpoderes (ei, eu também sou nerd). Você não só será capaz de criar aplicações modernas como o Gmail, como de entender os sofisticados códigos das bibliotecas. Javascript é falsamente fácil e cheia de armadilhas. Para ter um um código limpo e fácil de manter é preciso conhecer bem o que e como fazer. Estes livros serão seus melhores mentores.

Marcadores: ,

Terça-feira, Fevereiro 10, 2009

Backup automático no linux em casa

Tá bom, estas coisas acontecem. De repente meu HD deixa de funcionar. Eu ter um sistema de arquivos não muito tradicional, não ajuda. Pior ainda, o fato do criador do sistema de arquivos ter assassinado a mulher e estar na cadeia, me preocupa um pouco mais. Mas na Internet sempre há uns anjos que nos dão dicas de como salvar o dia.

Não era o disco de dados mais importantes, tinha minhas fotos e minhas músicas. Quase todas as fotos têm uma cópia no computador da minha mulher. O backup das músicas é minha coleção de CDs (isto mesmo, crianças, aqueles disquinhos prateados). Só que ao ver o HD morrendo, fiquei tremendo só de pensar que teria que digitalizar novamente mais de 70Gb de músicas. Até hoje não consegui ripar nem metade de minha coleção. Voltar ao zero seria aterrorizador. Ah! E pra piorar descobri que minha mulher não tinha as cópias de todas minhas fotos.

Comprei um novo HD maior. Aproveitei para mudar de distribuição linux (outro post para isto). Com meus dados recuperados resolvi montar um esquema de backup de verdade. Eis como fiz.

Comprei um HD extra de 500Gb (caraca, isto é meio terabyte!!!). Comprei um case (ou enclosure) de HD externo SATA to USB2.0 da Coolermaster modelo X Craft 310. Aqui ficará meu backup. Formatei-o como ext3. Li recomendações de que o melhor filesystem seria o XFS. Só que quando caos baixar, o ext3 tem melhores drivers para ser lido de dentro do Windows. Melhor ser conservador nestes assuntos.

Agora tenho que montar os discos. O de backup e o Meus Documentos do computador Windows de minha mulher. Ela vai ganhar um backup de brinde também. Aprendi uma coisa legal, que agora posso montar discos por UUID. É ótimo para discos USB. Meu disco USB será sempre montado em /mnt/backup. O da chefe será montado via samba em /mnt/chris após ter sido compartilhado sem senha no windows. Ficaram assim suas entradas no /etc/fstab:

UUID=33f7417a-88ff-4570-80f2-3e57731fbb42 /mnt/backup ext3 noatime,users 0 0
//chris/samba-choro /mnt/chris smbfs exec,users,_netdev,rw,b,uid=neves,iocharset=utf8,password= 1 2
O resto agora é mole pro Linux. Só usar o cron, daemon que executa comandos periodicamente, e o rsync, que copia apenas arquivos que foram modificados. São ferramentas padrão do sistema.

Um problema é que o computador da patroa podia estar desligado. Outro é que o disco de backup poderia não estar montado (tive problemas com a montagem automática no Kubuntu). No primeiro caso, pareceria que o diretório estava vazio e todo o backup seria apagado. No segundo, copiaria tudo para meu próprio HD que seria devidamente esmagado pelo peso de tantos arquivos.

Descobri outro prático utilitário, o mountpoint. Ele testa se uma partição está corretamente montada e acessível. Meu simples script de backup ficou assim:
#/bin/sh

if mountpoint -q /mnt/backup
then
#-v verbose
#-a archive (recursivo, permissões, links etc)
#-x no cross filesystem boundaries
#-E mantém executáveis
#--delete apaga os que sumiram
rsync -vaxE --delete --ignore-errors /home/neves/ /mnt/backup/neves/

if mountpoint -q /mnt/chris
then
rsync -vaxE --delete --ignore-errors /mnt/chris/ /mnt/backup/chris/
fi
fi

exit 0
Prontinho. Agora é só dar permissão de execução à ele: "chmod +x backup.sh". Colocá-lo no crontab do root "sudo crontab -e" com:
0 12 * * * /home/neves/bin/backup.sh
Voilá. Backup automático configurado. Todo dia ao meio-dia será feita a cópia de meus dados novos. A primeira é meio demorada, as outras são impressionantemente rápidas.

Ainda não é um sistema à prova de meteoros. Para isto teria que ter mais um HD e um case e guardar as cópias longe. Isto fica quando entrar um dinheirinho. Mas o negócio de backup é probabilidade e Murphy. Por enquanto estou melhor do que estava.

Marcadores: ,

Impressora no Linux com o roteador D-Link 704D

Tenho um roteadorzinho D-Link para compartilhar a conexão Internet. Gosto deste D-Link. É simplezinho, as aplicações pré-configuradas são muito desatualizadas (desconhece torrent), mas tem umas features bem interessantes. Dá pra fazer um QoS para priorizar conexões web e ssh, dá pra usar serviços de DynDNS para conetar de fora de casa, e tem um servidor de impressão.

Isto significa que, em vez de ligar a impressora em um dos computadores, ligo-a direto nele. Os dois computadores podem imprimir sem precisar deixar sempre ligado o "computador da impressora". E ainda economiza uma porta usb do micro.

O roteador funciona como um host LPD padrão do linux. Configurar no Kubuntu é mole
  1. Abra a aplicação "Printer Configuration"

  2. New printer

  3. Selecione "LPD/LPR Host or Printer"

  4. Escolha seu modelo de impressora e use o driver recomendado

  5. Agora vem o macete. No Device URI coloque: lpd://192.168.0.1/lp

  6. Marque a impressora como Default, imprima uma página de testes e seja feliz.

Marcadores:

Terça-feira, Dezembro 02, 2008

Flagrante

Vejam vocês que incrível flagrante. Na véspera eu havia visto notícias sobre a frente fria que invadiam o Rio de Janeiro e o temporal que tudo alagava. Fiquei com saudades de meus queridos amigos e colegas no trabalho e de suas vidas cheias de problemas e preocupações.

É impressionante como algumas fotografias são capazes de registrar nossas emoções interiores. Vejam como a foto abaixxo conseguiu capturar toda tristeza e saudades que eu estava sentido de meus amigos.

Abraços pernambucanos,
Paulo Eduardo Neves