12 de fevereiro de 2009
13 de janeiro de 2009
Ninguém conhece Shoes
Aos meus 18 leitores (incluindo eu), voltei!
Shoes é um toolkit para desenvolvimento de aplicações GUI multi-plataforma em Ruby. Saiba mais no site oficial, onde é possível fazer o download de um e-book free, aplicações e exemplos.
Aqui vai um exemplo da facilidade do negócio. Este código
Muito bom!
Shoes é um toolkit para desenvolvimento de aplicações GUI multi-plataforma em Ruby. Saiba mais no site oficial, onde é possível fazer o download de um e-book free, aplicações e exemplos.
Aqui vai um exemplo da facilidade do negócio. Este código
renderizaShoes.app do
background "#F3F".."#F90"
title "Shoooes", :top => 60,
:align => "center",
:font => "Trebuchet MS",
:stroke => white
end
Muito bom!
Marcadores:
frameworks,
quick-post,
ruby
30 de outubro de 2008
Diminuindo o consumo de memória do Firefox
É simples:
Pra mim até que melhorou um pouco...
- abra o Firefox
- digite na barra de endereços about:config
- clique com o botão direito do mouse em algum canto da tela
- escolha a opção nova/boolean
- abrirá uma caixa de dialogo
- digite no nome: config.trim_on_minimize
- coloque a opção como true
- reinicie o Firefox
Pra mim até que melhorou um pouco...
Marcadores:
firefox,
gambiarras
21 de outubro de 2008
Utilizando macros no VIM
Este post não será muita novidade pro pessoal "old school", que está bem acostumado com o VI ou o VIM. Como este não é meu caso (sim, sou da geração "click"), recentemente fui obrigado comecei a utilizar mais o VIM e descobri algumas funcionalidades realmente úteis para nós desenvolvedores, neste caso a gravação de teclas (macros), que facilita muito o processamento de textos formatados, scripts, etc.
Neste exeplo vou mostrar uma manipulação de um script SQL que faz o insert com os valores do id, nome e telefone numa tabela cliente. Oirresponsável pela modelagem da tabela não respeitou as n regras formais de normalização, então o DBA resolveu remodelar a tabela, desmembrando em duas: uma para armazenar as informações do cliente e outra para armazenar seus telefones.
Desta forma, precisarei fazer a transformação do script de
para algo parecido com
Como você deve ter percebido, para manipular este script manualmente seria necessário duplicar cada linha, alterar a linha original removendo o número do telefone e alterar a linha copiada adicionando removendo o nome do cliente e mudando o nome da tabela. Para automatizar esta tarefa no VIM ou GVIM, executarei os seguintes comandos:
Um registrador foi gravado na letra "q". Agora basta posicionar o cursor no início do arquivo e digitar "@q" para executar a sequência gravada. Para rodar várias vezes, digite o número de loopings seguido pelo registrador, por exemplo "10@q".
Referências
http://aurelio.net/curso/material/vim-ref.html
http://www.primeirospassos.org/sessao3_4.html
Até o próximo post!
Neste exeplo vou mostrar uma manipulação de um script SQL que faz o insert com os valores do id, nome e telefone numa tabela cliente. O
Desta forma, precisarei fazer a transformação do script de
insert into cliente (id, nome, telefone) values (1, 'Cliente1', 123456);
insert into cliente (id, nome, telefone) values (2, 'Cliente2', 234567);
.
.
.
insert into cliente (id, nome, telefone) values (10, 'Cliente10', 987654);
para algo parecido com
insert into cliente (id, nome) values (1, 'Cliente1');
insert into cliente_fone values (1, 123456);
insert into cliente (id, nome) values (2, 'Cliente2');
insert into cliente_fone values (2, 234567);
.
.
.
insert into cliente (id, nome) values (10, 'Cliente10');
insert into cliente_fone values (10, 987654);
Como você deve ter percebido, para manipular este script manualmente seria necessário duplicar cada linha, alterar a linha original removendo o número do telefone e alterar a linha copiada adicionando removendo o nome do cliente e mudando o nome da tabela. Para automatizar esta tarefa no VIM ou GVIM, executarei os seguintes comandos:
qq - Inicia a gravação no registrador "q"
yy - Copia a linha atual
p - Cola a linha copiada abaixo da linha atual
k - Posiciona o cursor na linha de cima
/) - Posiciona o cursor no parêntese antes de "values"
d, - Apaga a palavra "telefone" até a vírgula
/); - Posiciona o cursor no último parêntese
d, - Apaga a última palavra até a vírgula (o número do telefone)
j - Move o cursor para a linha de baixo
0 - Posiciona o cursor no início da linha
:s/cliente/cliente_fone - Substitui "cliente" por "cliente_fone", o nome da table
/nome - Posiciona o cursor em "nome"
dW - Apaga a palavra "nome"
/( - Posiciona no próximo parêntese
W -Posiciona na próxima palavar
dW - Apaga a palavra inteira, no caso "'Cliente1',"
j - Finalmente, posiciona o cursor na próxima linha, para completar o looping
Um registrador foi gravado na letra "q". Agora basta posicionar o cursor no início do arquivo e digitar "@q" para executar a sequência gravada. Para rodar várias vezes, digite o número de loopings seguido pelo registrador, por exemplo "10@q".
Referências
http://aurelio.net/curso/material/vim-ref.html
http://www.primeirospassos.org/sessao3_4.html
Até o próximo post!
3 de outubro de 2008
O waterfall está entre nós!
O modelo cascata ainda é total ou parcialmente utilizado na maioria dos ramos corporativos, mas em nenhum outro ramo ele fica tão evidente como no bancário. A seguir, segue um relato de como estes "processos" agilizam nossa vida e como, no final das contas, são sempre os "peões" que resolvem as coisas.
Meu pacote de serviços incluí um serviço de courier (moto-boy), então resolvi usá-lo. Como não sabia exatamente como solicitar o serviço, liguei para minha agência. Depois ouvir as opções do atendimento, digitei a opção que parecia ser exatamente o que queria, mas a ligação foi encaminhada para um atendente inicial. Então expliquei o que queria e fui encaminhado para um nível superior de atendimento. Alguns segundos se passaram e a pessoa que me atendeu quis inicialmente conferir se o serviço estava disponível no meu pacote de serviços. Confirmei novamente minha conta e o atendente confirmou o serviço, mas me explicou que deveria solicitá-lo através do "atendimento telefonico".
Pois bem, telefonei para o "atendimento telefonico". Novamente escutei as opções disponíveis, digitei uma opção, mais uma e finalmente outra. Até que uma gravação solicitou meus dados bancários e uma senha para o atendimento telefônico (que senha???). No final da mensagem informou uma opção para o caso de eu não possuir a tal senha para atendimento telefonico. Digitei a opção e segui os procedimentos.
Depois de informar todos os meus dados bancários, minha senha, o número do meu cartão de crédito e confirmar alguns dados pessoais, a tal senha foi soletrada pelo atendente eletrônico. Com posse dessa senha, desliguei e telefonei novamente para o mesmo atendimento. Digitei algumas opções, a tal senha (que é uma senha exclusiva para o atendimento telefonico obtida a partir da minha senha bancária), e a ligação chegou a umvegetal ser humano. Perguntei sobre o serviço de courier mas o atendende nada sabia. Por isso, encaminhou para outro atendente, que encaminhou para outro, que solicitou novamente meus dados bancários (aqueles mesmo que informei quando telefonei para o serviço). Depois de verificar novamente meu pacote de serviços, disse que encaminharia para o "departamento responsável".
Neste ponto preciso transcrever o dialogo:
Atendente: Bom dia, em que posso ajudar?
Eu: Gostaria de solicitar o serviço bla bla bla...
A: Qual seria a finalidade?
Eu: (explico a finalidade num nível macro, pois estava de bom humor aquele dia)
At: Então mano, vou te falar a real: hoje não dá não... tá muita correria aqui.
[silêncio por alguns segundos]
Eu: Como assim não dá?
At: É que eu to sozinho aqui hoje, tá mó correria e não posso sair... só pra amanhã hein...
Eu: Amanhã pela manhã?
At: Não, só de tarde. Isso se o senhor ligar na parte de manhã que eu deixo avisado pros caras aqui...
[mais alguns segundos de silêncio]
Eu: Não precisa. Obrigado por nada!
Com certeza você que está lendo isso já passou por uma situação parecida, não é mesmo? Pois é, são os frutos do waterfall e de uma geração que ainda vive no século XIX em pleno 2008. Sem comentários...
Meu pacote de serviços incluí um serviço de courier (moto-boy), então resolvi usá-lo. Como não sabia exatamente como solicitar o serviço, liguei para minha agência. Depois ouvir as opções do atendimento, digitei a opção que parecia ser exatamente o que queria, mas a ligação foi encaminhada para um atendente inicial. Então expliquei o que queria e fui encaminhado para um nível superior de atendimento. Alguns segundos se passaram e a pessoa que me atendeu quis inicialmente conferir se o serviço estava disponível no meu pacote de serviços. Confirmei novamente minha conta e o atendente confirmou o serviço, mas me explicou que deveria solicitá-lo através do "atendimento telefonico".
Pois bem, telefonei para o "atendimento telefonico". Novamente escutei as opções disponíveis, digitei uma opção, mais uma e finalmente outra. Até que uma gravação solicitou meus dados bancários e uma senha para o atendimento telefônico (que senha???). No final da mensagem informou uma opção para o caso de eu não possuir a tal senha para atendimento telefonico. Digitei a opção e segui os procedimentos.
Depois de informar todos os meus dados bancários, minha senha, o número do meu cartão de crédito e confirmar alguns dados pessoais, a tal senha foi soletrada pelo atendente eletrônico. Com posse dessa senha, desliguei e telefonei novamente para o mesmo atendimento. Digitei algumas opções, a tal senha (que é uma senha exclusiva para o atendimento telefonico obtida a partir da minha senha bancária), e a ligação chegou a um
Neste ponto preciso transcrever o dialogo:
Atendente: Bom dia, em que posso ajudar?
Eu: Gostaria de solicitar o serviço bla bla bla...
A: Qual seria a finalidade?
Eu: (explico a finalidade num nível macro, pois estava de bom humor aquele dia)
At: Então mano, vou te falar a real: hoje não dá não... tá muita correria aqui.
[silêncio por alguns segundos]
Eu: Como assim não dá?
At: É que eu to sozinho aqui hoje, tá mó correria e não posso sair... só pra amanhã hein...
Eu: Amanhã pela manhã?
At: Não, só de tarde. Isso se o senhor ligar na parte de manhã que eu deixo avisado pros caras aqui...
[mais alguns segundos de silêncio]
Eu: Não precisa. Obrigado por nada!
Com certeza você que está lendo isso já passou por uma situação parecida, não é mesmo? Pois é, são os frutos do waterfall e de uma geração que ainda vive no século XIX em pleno 2008. Sem comentários...
28 de setembro de 2008
Abrace um desenvolvedor
Seguem as traduções
Estamos no 4º mês de uma agenda de 5 meses e eu só recebi os requisitos ontem (e eles mudaram denovo!).
Eu gasto metade do meu dia em reuniões sobre como obter mais trabalho realizado (em vez de trabalhar).
Meu chefe leu
Todos os dias o meu chefe muda de idéia sobre o que nós estamos construindo/programando.
As pessoas continuam me pedindo para consertar seus seus e-mails, por isso não tenho tempo para codificar.
Meu pai não tem mais tempo para mim.
Alguns consultores disseram para meu chefe que eles poderiam construir nossa próxima versão na metade do tempo, por metade do dinheiro. Ele acreditou neles e agora eles gastaram todo o orçamento e utilizaram todo o tempo...
...mas continuam pela metade. Agora eles se foram e seus códigos são um desastre. Nós temos que corrigir e terminar o que eles começaram.
Abrace um desenvolvedor hoje.
Acabei de terminar um curso intensivo de 6 semanas de Visual Basic 6.
Tem mais essa campanha da Thoughtworks:
Pois é, triste realidade!
Marcadores:
agilidade,
desenvolvimento,
videos
4 de setembro de 2008
20 de agosto de 2008
Aquela janela quebrada
A fim de obter o mínimo de qualidade e profissionalismo no desenvolvimento de sistemas e sites, seguem algumas dicas que podem evitar janelas quebradas como esta:

Adicione uma página de erros default para a aplicação. Lembre-se que a configuração do ambiente de produção deve ser diferente pois o usuário não precisa receber dados de debug na cara. Nunca se esqueça de fazer testes (automatizados, de preferência) antes de distribuir uma aplicação em produção. E se mesmo assim der algum problema, tenha em mãos um mecanismo de logging eficiente que, por exemplo, envie um email para o administrador da aplicação quando um bug crítico impedir que um usuário acesse o site e efetue uma compra, ou seja, uma falha que dê prejuízo e má imagem para a empresa.
Pense bem antes de "reformular" o site da sua empresa apenas para torná-lo mais "bonitinho" aproveitando para utilizar aquela "tecnologia da moda". Talvez um site não muito "atraente", construido com aquela tecnologia "ultrapassada", mas que funciona e gera lucros para a empresa seja uma forma de evitar janelas quebradas.
Adicione uma página de erros default para a aplicação. Lembre-se que a configuração do ambiente de produção deve ser diferente pois o usuário não precisa receber dados de debug na cara. Nunca se esqueça de fazer testes (automatizados, de preferência) antes de distribuir uma aplicação em produção. E se mesmo assim der algum problema, tenha em mãos um mecanismo de logging eficiente que, por exemplo, envie um email para o administrador da aplicação quando um bug crítico impedir que um usuário acesse o site e efetue uma compra, ou seja, uma falha que dê prejuízo e má imagem para a empresa.
Pense bem antes de "reformular" o site da sua empresa apenas para torná-lo mais "bonitinho" aproveitando para utilizar aquela "tecnologia da moda". Talvez um site não muito "atraente", construido com aquela tecnologia "ultrapassada", mas que funciona e gera lucros para a empresa seja uma forma de evitar janelas quebradas.
Marcadores:
desenvolvimento
4 de agosto de 2008
Desativar foco automático no Ubuntu
Este é um post de utilidade pública. Quantas vezes você estava digitando algo em uma caixa de texto ou janela e então outra janela ganha o foco "automaticamente", aí você se perde ou apaga digita algo que não queria no lugar errado?
Pois então, este é um "recurso" padrão do Compiz e pode ser desativado, agora que você já sabe do que se trata (eu demorei pra descobrir isso).
No gerenciador do Compiz, clique em "General Options", acesse a aba "Focus & Raise Behavior" e desmarque a opção "Auto raise". Pronto!

Fonte: http://janio.sarmento.org/ubuntu-e-o-caso-do-roubo-de-foco/
Pois então, este é um "recurso" padrão do Compiz e pode ser desativado, agora que você já sabe do que se trata (eu demorei pra descobrir isso).
No gerenciador do Compiz, clique em "General Options", acesse a aba "Focus & Raise Behavior" e desmarque a opção "Auto raise". Pronto!

Fonte: http://janio.sarmento.org/ubuntu-e-o-caso-do-roubo-de-foco/
Marcadores:
ubuntu
23 de julho de 2008
Novidades do Eclipse Ganymede
A nova versão do Eclipse, um pacotão de vários projetos da fundação, foi lançada oficialmente no dia 25 de Junho de 2008 com a versão 3.4 e codinome Ganymede, que é o nome de uma lua de Saturno.
Além de alguns bugfixes, a nova versão conta com várias melhorias principalmente no editor. As que eu mais gostei foram:


Uma lista mais detalhada dos novos recursos pode ser vista aqui. Baixe a nova versão e divirta-se!
Além de alguns bugfixes, a nova versão conta com várias melhorias principalmente no editor. As que eu mais gostei foram:
- Novas caixas de debug, onde é possível obter informações de um objeto passando o mouse sobre ele em modo debug:
- Drag and Drop no Outline, sendo possível organizar o código apenas arrastando os métodos:
Uma lista mais detalhada dos novos recursos pode ser vista aqui. Baixe a nova versão e divirta-se!
Assinar:
Postagens (Atom)

