Wagner Andrade

Simplificando a WEB

Wagner Andrade header image 1

Agora também no iMasters

fevereiro 9th, 2009 · Geral

Esse é um artigo um pouco diferente do habitual. Dessa vez quero apenas agradecer o retorno que tenho recebido desde que comecei a escrever aqui.

Na última sexta-feira (06/02) publiquei meu primeiro artigo no iMasters. Para mim é uma grande honra colaborar com um portal que é tão importante para os profissionais brasileiros na área da internet. Espero que essa parceria dure bastante tempo e que seja bem aproveitada por todos.

No mais, sigo escrevendo, respondendo e principalmente ouvindo sugestões e aprendendo. Obrigado.

→ No CommentsTags:

Windows 7 no Macbook

janeiro 28th, 2009 · Ambiente, Geral

Eu sei que não estou escrevendo nada novo aqui, todos já leram sobre primeiras impressões do Windows 7. Mas como instalei no Macbook com 1GB de memória – que é folcloricamente um ambiente hostil para Windows -, o sistema ainda é Beta e principalmente por eu não acreditar em todas boas impressões que li, resolvi instalar e pagar pra ver.

O Windows XP é um excelente sistema, mas já está ultrapassado e o tiu Balmer até quer tirá-lo das lojas. Compare com os jogos que saíram no mesmo período, Outubro de 2001, e as mesmas franquias agora em 2009. Nossa, que diferença! Precisamos de um novo sistema da plataforma Microsoft. Baixei o novo Windows com preconceitos pelas ultimas investidas deles em sistemas operacionais para usuários finais – sem citar nomes – mas no fundo esperançoso.

Queimei o DVD, abri o Boot Camp, partição de 40GB para a Microsoft, coloquei o DVD, reiniciou, bonito design do instalador… na hora de selecionar a partição de instalação já tive o primeiro problema: o Boot Camp criou uma partição FAT32 e o W7 precisa de NTFS.

Aí já me deu medo. Não preciso dizer o quão problemático é a manipulação de partições na instalação do Windows. E esse sistema ainda é Beta, mas esse não é meu computador Beta! Mas tive uma grata surpresa, foi simples e fácil. Não sei se minha mãe faria porque não tem a menor ideia do que é partição, mas é só clicar em alguns botões e está tudo pronto, partição formatada. Não precisei apertar L, D, C, F3, Scroll Lock ou qualquer outro botão que meu Macbook nem tem.

Depois disso só foi esperar ele instalar, respondi algumas perguntas como nome do usuário e outras configurações bem explicadas e comecei a usa-lo sem nenhum problema. Desliguei o note apenas antes de dormir, aí percebi que não precisei reiniciar nenhuma vez depois do termino da instalação. Se tratando de Windows isso é demais! Estava acostumado a instalar o XP e reiniciar várias vezes, até pra colocar o mouse… ta bom, exagerei no mouse. Não cheguei a usar o Boot Camp pra Windows, fiquei com preguiça de baixar a versão pra Vista que não vem no CD do Leopard.

No fim, a instalação do Windows 7 em um Macbook foi bem tranquila. Não vou fazer analise das melhorias do sistema, prós e contras, isso é fácil de achar. Se estão curiosos sugiro que instalem o Windows 7, é uma bela surpresa.

→ 11 CommentsTags:···

Github theme agora para Intype

janeiro 15th, 2009 · Ambiente

Um tempo atrás comentei aqui que sou fã do tema de apresentação de código do Github (aqui vai um exemplo). Acho que também já comentei que quando estou programando Ruby no Windows gosto de usar o Intype, que é um bom editor – ainda em fase alpha – no estilo Textmate, do Mac.

A boa noticia é que encontrei um conversor de temas do Textmate para temas do Intype, peguei o tema do Github que uso no Textmate e fiz a conversão. Ao contrário do que eu esperava, o resultado ficou muito bom. Criei um repositório no Github para manter esse tema atualizado.

Para utilizar basta fazer o download lá do repositório, pegar o arquivo GitHub.itTheme, copia-lo para o diretório themes do Intype e reiniciar o editor.

Falando um pouco mais nesses editor, não uso a ultima versão estável, uso a ultima versão instável que foi disponibilizada (download da versão Unstable 0.3.1.734). Essa versão conta com árvore de projetos, que já é uma “mão na roda” pra quem programa em Rails, principalmente.

Nada como um bom tema para nos sentir mais a vontade escrevendo nossos códigos – bem coisa de nerd mesmo. Até mais!

→ No CommentsTags:····

C# 3.0 Extension Methods

novembro 21st, 2008 · .NET, C#

Quando me propus a iniciar o blog, comentei que iria escrever sobre ASP.NET e Ruby. Nesses quase seis meses nunca escrevi um artigo se quer para a tecnologia do aposentado tio Bill, mas hoje vamos ao primeiro. Neste primeiro post sobre o .NET vou falar especificamente de C# e mais especificamente sobre uma nova funcionalidade que veio com o C# 3.0, os Extension Methods.

Extension Methods é um recurso que quem costuma trabalhar em linguagens de script, como Ruby, já está mais acostumado. Consiste em “inserir” métodos em objetos já compilados, como uma string, por exemplo. Sim, esqueça a sua classe StringHelper ou StringUtil, agora os métodos utilitários que você sempre quis poderão ser inseridos diretamente na fonte.

Vamos à prática, primeiro vou mostrar como um extension é declarado, depois o exemplo de uso. Vou fazer um exemplo que não é tão útil, mas a intenção aqui é apenas mostrar a funcionalidade.

Imaginemos que temos URLs em formato de string na nossa aplicação e precisamos ter o conteúdo destas URLs. Vou criar um extension no objeto string que lê essa URL e retorna o seu conteúdo. Vamos à implementação:

Agora o exemplo de como utilizar o método que criei:

string responseBody = "http://www.google.com".ReadUrl();

É fácil criar um extension. Primeiro precisamos de uma classe e um método static. O método extension tem uma peculiaridade, o primeiro parâmetro possui a palavra chave this seguido pelo objeto no qual o extension será “inserido”. A partir deste parâmetro, os subsequentes serão efetivamente utilizados na chamada do método. Esse primeiro parâmetro é muito importante, perceba que ele representa a instancia do próprio objeto. No exemplo, a string responseBody vai ter o conteúdo HTML da página inicial do Google.

À primeira impressão parece uma implementação complicada, mas nada mais que alguns minutos serão necessários para se familiarizar com isso.

Eu sempre fui fã das linguagens mais dinâmicas, e nessa característica as linguagens de script são a Disney. Esse recurso adicionado ao C# 3.0 nos dá flexibilidade para criar métodos que vão organizar bastante o nosso código. Em breve coloco mais artigos sobre .NET.

→ 1 CommentTags:··

Ruby Snapshot #5: Cronometro de código

novembro 10th, 2008 · Benchmark, Ruby, Snapshot

Não é muito difícil de perceber que estou um pouco afastado do blog nas ultimas semanas. O motivo é sempre o mesmo: falta de tempo. Pra dizer a verdade acho essa uma desculpa esfarrapada, mas como a maioria dos seres humanos, gosto de utilizá-la.

Para retomar os artigos de códigos rápidos e úteis – nem sempre tão úteis – utilizando Ruby (os Snapshots) vou mostrar como fazer um “cronometro” de código. Calma, vou explicar melhor.

Antes de iniciar quero lembrar a existência do modulo Benchmark, que é o mais indicado a ser utilizado neste caso. Levamos em conta então que esse post servirá apenas para estudo.

Muitas vezes quero saber quanto tempo um determinado trecho de código leva para ser executado, assim posso fazer otimizações bem focadas em determinadas linhas.

Ruby é uma linguagem que torna simples a manipulação de blocos de código, por isso criaremos um método que receberá um determinado código que alem de executar essas instruções passadas dirá quanto tempo levou para fazer isso. Seu funcionamento é bem simples, mostrando apenas o tempo real que o código levou para ser executado, não é 100% preciso, mas em linhas gerais é bem eficiente. Segue o método:

Primeiro ele verifica se foi passado o bloco de código que vai ser “analisado”. Em seguida o tempo inicial é armazenado, o código é executado (yield) e por fim diminui-se o tempo inicial do tempo no momento em que o código termina de ser executado. É impresso na tela a identificação do teste (para os casos de haver mais de um) junto com o tempo que o código levou para ser executado, em segundos.

Para testar o método usei o sleep, que faz uma interrupção no código durante um determinado tempo, no caso 318 milissegundos. Ao rodar esse teste é possível notar que nunca dá 318 milissegundos no bechmark. Isso porque os métodos sleep e o bechmark não são exatos.

É possível fazer diversas melhorias nesse método, o que é um bom exercício para estudar a linguagem. Qualquer sugestão é bem vinda.

→ No CommentsTags:··