um pluguinho
Archive for February, 2008
Abrindo link em nova aba no Safari
Feb 24th

Neste processo de migração do Linux para Mac uma coisa que me incomoda no Safari e que não existe uma maneira de definir que por padrão links que deveriam abrir em uma nova janela, passem a abrir em uma nova aba.
Procurando um pouco achei esse link que indica dois plugins que podem modificar esse comportamento. O primeiro deles é o Saft, que parece ser o mais completo, mas tem um custo de US $12,00 que não estou dispondo no momento.
O segundo é o SafariStand, que é mais simples, mas é freeware, ou donationware como dizem no site. Entre outro recursos interessantes ele adiciona o comportamento de abrir um link em uma aba. Uma outra coisa interessante desse plugin é que ele utiliza uma “extensão” para Mac OS X, o SIMBL, que ao que parece não tem uma licença definida, mas tem seu código fonte disponível. O SIMBL é uma espécie de hack para aplicações Cocoa que permite definir quando um plugin deve ou não ser carregado, e a maneira com que esse plugin deve ser carregado.
obs: para o screenshot que ilustra o post utilizei esta dica.
Aonde está a inovação?
Feb 23rd
Outro dia via severa criticas aos filmes e a produção de seriados, a critica era bem especifica, e falava sobre erros e exageros tecnológicos encontrado nos filmes de hoje.
É impossível não concorda sobre a questão dos erros, mas espere um minuto! Desde de quanto eles não produzem filmes com erros de gravação? Hoje os blogueiros e sites relacionados a informática, observam isso porque esta relacionado a área deles, ver um computador com sinais de desligado, sendo utilizado com um computador ligado é um erro grotesco, mais ainda sim é um erro como outro qualquer, e que para maioria passa despercebido.
Mas o que me incomoda e ver gente falando mau dos exageros, e desde de quanto a gente não quer ver isso em filmes? Um super computador em uma caneta, um sistema de imersão virtual controlado pelo celular, mundo fictícios controlados por computadores que nos usam como pilhas. Isto não são erros, e a pura imaginação, é esta imaginação que nos trouxe tanta tecnologia, esta imaginação que faz o homens terem sonhos e vontades.
Pensando assim, me vem um pergunta: aonde esta a inovação da web de hoje? Uma vez li uma entrevista na revista Veja, que falava sobre o avanço do mundo sobre a interação do usuário com o computador, não vou conseguir lembrar quem foi o entrevistado, mas se alguém souber, indique e eu modifico o texto. Ele falava entre outras coisas que dificilmente vamos conseguir sair dos ícones, pois nos acostumamos a enxergar o computador assim, e ainda pior, que dificilmente vamos conseguir sair da ideia de disco ou espaços de armazenamento e arquivos, porque foi assim que o primeiro inventou, depois disso nos acomodamos sobre o fato e não conseguimos nos livrar disso para criar novas tecnologias.
Outro exemplo que ele citou foi o motor a combustão, a quantos anos criamos esse tipo de motor? Até hoje não conseguimos inovar nesse âmbito, não digo nem pela questão do combustível, falo pela questão do tipo do motor, todos usam o principio da manivela, do pistão dentre outras características, mesmo os motores a combustível alternativo são motores que tem por função girar e depois movimentar as rodas, cade a real inovação? Não desmereço quem inventou diversos tipos de tecnologia nesse meio, estão certos e de parabéns pelo que fizeram, mas me desculpe, não tem inovação nisso.
O mesmo tem acontecido a web, não existe inovação, o que vemos são aglomerados de tecnologias se junto umas as outras, as vezes de forma mais organizada, as vezes de forma gambiarrada, mas ao meu ver não ha nada de inovação nisso. Temos mais de uma década de html, e queremos dizer que AJAX e tantas outras letrinhas são inovações?
Desde da epoca em que eu comecei a trabalhar com computadores eu penso que precisamos de alguma coisa que substitua o html, que substitua o browser e sua maneira arcaica de juntar tecnologias. Eu ainda não tenhoa solução para essa questão, mas não tem um dia sequer que eu não pense em quanto ainda podemos inovar no ramo de informática e principalmente no ramo de internet.
VirtualHost não é host
Feb 20th
A muito estou trabalhando com desenvolvimento web, e sempre encontrei pelo caminho quem confundisse a configuração dos web servers, commumente chamada de VirtualHost com a configuração do host.
Para quem trabalha com redes ou servidores a definição de hosts, domínio, zonas e tantas outras coisas ligadas ao serviço de DNS são bem simples, mas nem todo desenvolver almeja entender ou querem entender como isso funciona, ao meu ver um erro, pois é muito importante entender pelo menos o básico de redes, para si tornar um bom programador.
Mas essa questão a parte, muitos confundem essa pequena diferença e acaba por não conseguirem configurar seus ambientes de testes corretamente. Para estes ai vai uma pequena explicação:
Como muitos já devem ter percebido ate aqui, VirtualHost não é o mesmo que host. Tente imaginar o seguinte o VirtualHost que você configurou dentro do seu web server é como um if ou um case, que testa por qual host o cliente chegou ao seu serviço. Ou seja ele esta lá analisado o cabeçalho das requisições http, e vê lá a informação de qual host o usuário digitou no browser para que ele conseguisse chegar ate seu servidor.
Já o host é como uma entrada em uma agenda de endereços que diz qual ip está associado a este nome. Existe duas formas de configurar um host, a primeira é através de um servidor de DNS, no caso do Linux commumente se utiliza o bind para tal tarefa, no caso do Windows existe uma implementação desse tipo de serviço em versões server, que por sinal utiliza muito do código do bind, para usuário domésticos ou mesmo programadores há uma serie de software comerciais que desempenham este papel.
Apesar da configuração do servidor de DNS ser a opção com mais características e com mais flexibilidade, se trata de uma configuração complexa, e muitas das vezes inviável ao programador, que quer apenas configurar um ambiente de teste. Em seu lugar podemos utilizar o apelido de ip, que é algo mais simples de ser configurado, com o empecilho de que só funciona na maquina onde for configurado.
Para esta configuração deve se editar o arquivo /etc/hosts no caso de ambientes Posix, como Mac os X, Linux, BSD’s, entre outros, e o arquivo C:/[windows|winnt]/System32/drivers/etc/hosts para máquinas Windows. Para ambos os casos a configuração é a mesma, adicione uma nova linha no arquivo e coloque primeiro o ip, depois o host, ficando assim:
... 127.0.0.1 apolo apolo.nasa.org 127.0.0.1 jupter ...
Observe quê se pode configurar mais de um apelido em uma mesma linha, basta apenas separar eles por um espaços. Algo muito importante que deve se deve entender é que essa configuração não é uma configuração de domínios, o fato de adicionar apolo.nasa.org não faz diferença algum para o domínio nasa.org, a não ser na minha própria maquina, o que estamos fazendo é apelidado o ip com o endereço inteiro: apolo.nasa.org para o ip 127.0.0.1.
Como isso funciona: quando um serviço ou um programa qualquer, como um browser, pede ao kernel do seu sistema para resolver o endereço chamado, o kernel antes de consultar o servidor de dns, verifica se para aquele endereço não existe uma entrada no arquivo hosts, uma vez encontrado um apelido ali, ele nem procura resolver o endereço no servidor, apenas responde com o ip.
Uma vez com o ip na mão o programa ou serviço, monta um cabeçalho http e envia-o ao ip na porta também especificada, o padrão é 80 para serviço de http. Dentre as informações que estão neste cabeçalho esta o nome do host que ser quer ter acesso, o web server recebe esse cabeçalho, e checa em seu “case” qual a configuração para este host.
Espero que isso possa ajudar aos programadores iniciantes que querem montar seus ambientes de teste para o desenvolvimento de aplicações web. Em um próximo post vou falar como é fácil configurar um VirtualHost no apache sobre Ubuntu, até lá!
E-commerce em Rails
Feb 16th

Olá a todos, tem sido uma experiência excepcional, meu primeiro projeto em Ruby on Rails, é sistema de e-commerce.
Não vou negar que esta sendo a tarefa mais difícil pela qual já passei na área de desenvolvimento, a experiência de quase 8 anos de desenvolvimento web não tem ajudado muito no quesito codificação. Já é do conhecimento de todos que o Rails ajuda em muito no desenvolvimento, mas como foi dito neste post, Rails ajuda, mas não corrige o problema de maus programadores.
Meu maior desafio em todo o projeto esta sendo e ainda vai ser por um bom tempo os testes automatizados, eu nunca tive prazer de codificar utilizando testes, isso aconteceu em parte por culpa dos prazos apertados, e da falta de conhecimento sobre o assunto.
Neste projeto o prazo continua apertado, para variar um pouco, mas como a decisão de fazer ou não orientado a testes é minha a coisa ficou mais fácil.
O projeto esta longe do fim, mas as coisas tem corrido relativamente bem, os clientes tem aprovado cada fase do projeto, e já estamos com e-commerce funciona. Espero que a partir de agora postar mais coisas sobre a experiência que estou tento construindo este sistema.
Para começo estou pensando em utilizar o RSpec, me parece uma boa opção para teste, apesar de esta aprendendo com relativa facilidade a trabalhar com os teste nativos do Rails, eu ainda os acho acho chatos de formular, o RSpec me parece uma alternativa mais elegante.


