nuxlli
um pluguinho
um pluguinho
Feb 1st
Achei esse vídeo bem interessante mostrando como os widgets do qt podem ser misturados a um ambiente 3D em OpenGL, para saber mais.
Jan 11th
Bom 2008 foi um bom ano, não sou muito de ficar fazendo balanços e promessa de ano novo, mas espero que 2009 seja ainda melhor, e por falar em conquistas de 2008, finalmente saiu o vídeo da Arena do fisl 8.0:
Dec 10th
Juntamente com o plugin anterior, acabei por fazer um outro plugin, o ipythonconsole.
Tenho usado o iPython a um bom tempo, por indicação do Ramiro Luz da comunidade Python do Paraná, ele é uma boa alternativa ao console padrão do Python, oferece uma infinidade de melhorias.
Durante os testes para o desenvolvimento do plugin tabsextend, usei bastante o Python Console que já vem com o gedit, mas ele é bem limitado e meio chatinho de usar, sem falar que ele trabalha com a fonte monospace por padrão, como utilizo a fonte Monaco no editor, acabava ficando meio estranho.
Enquanto pesquisava para desenvolver o plugin acabei trombando com esse artigo que da um exemplo de como colocar o iPython dentro de uma janela gtk, aproveitei o código deles e um pouco do código do próprio Python Console e crieio o plugin ipythonconsole.
Bom o esquema para instalar é o mesmo do outro plugin, baixa o pacotinho, e extrai na pasta ~/.gnome2/gedit/plugins
Dec 10th
Já faz um bom tempo eu venho pensando em melhorar o gedit com algumas coisas que eu sinto falta. Para isso estou construindo uma lista de coisas que gostaria que fosse adicionadas ao editor, e agora vou começar a tirar um tempinho para implementar essa lista.
O primeiro pacote de funcionalidade vem com o plugin tabsextend, com os seguintes recursos:
Para instalar baixe este pacote e extraia os arquivos na pasta ~/.gnome2/gedit/plugins.
Bom é isso, espero que o plugin posso ajudar aguem, instalem, testem e se possível dêem um feedback, que eu fico agradecido!
obs: Jayme seu plugin de fechar tags no html vai sair, tenha um pouco de paciência, rsrs
Nov 14th
Ainda na continuação do post anterior, a troca de idéias com o Cássio acabaram por render mais frutos para o plugin.
Já tinha tempo que eu estava precisando de uma forma de ordenar as opções que no select ou radio gerado pelos helpers select_sym e radio_sym respectivamente. O problema era que o plugin trabalhava com o arrays simples ou com hash para estabelecer os valores possíveis para o atributo.
Bom como hash não tem um ardem certa em que os seus valores possam ser capturados, uma vez que ele seja definido, um simples each sobre o hash pode trazer seus valores em qualquer ordem.
Então agora o plugin conta com a opção de usar um matriz para definição dos valores, mantendo a opção de array simples e hash, sendo que no primeiro é mantido a ordem na qual os valores são definidos e no caso de hash é retornando em ordem alfabética. Vamos há alguns exemplos para claria as idéias:
Então para a definição de model acima, temos o seguintes resultados na view:
Observe que no caso do so, a ordem não é a mesma estabelecida na chamada do symbolize, mas sim em ordem alfabética do humanize do atribute, enquanto no caso de office os valores vem na ordem que foram declaradas dentro do array.
Bom é isso, em breve mais uma opção de ordenação, mas por hora espero que esta opção agrade a quem precisar.
Nov 14th
O Cássio do /* CODIFICANDO */, fez um post dando uma dica de como simular uma funcionalidade de enum no ActiveRecord, para trabalhar com uma faixa de valores em um dos atributos do model. Então dei uma dica para ele do plugin activerecord_symbolize, do qual eu já falei por aqui e acabei por contribui com algumas alterações.
Trocando idéia com o Cássio, ele sugeri o método *_str, para facilitar na hora de transformar a propriedade do model em um valor legível para o usuário. Bom, eu já tinha feito está alteração localmente e acabei por esquecer o commit/push dela.
A diferença do que ele sugeriu para o que eu tinha feito é que dei o nome de *_humanize para o método, o que é mais Ruby mod do que _str, com o _str poderia ser confundido com o método to_str. Passamos a ter:
Com isso espero atender melhor aos usuário desse plugin, facilitando na hora de obter o valor que sera mostrado na view.
Nov 13th
Nos últimos dias tenho andado ocupado com muitos projetos e não esta sobrando muito tempo para escrever, e mesmo revisar os posts que já estão escrito aqui para o blog, faltando apenas a revisão e publicação, então vai um pequeno post sobre uma ferramenta para bash programers de plantão.
Estou trabalhando em uma gem que entre outras coisas vai enviar mensagens aos meus contatos de IM de acordo com o comando executado no shell, em breve ela deve ficar pronta e eu dou mais detalhes por aqui. Mas o importante nisso foi descobrir como monitorar o que é executado no shell.
A principio pensei em varias possibilidades, dês de interagir com o kernel em algum nível, para obter os comandos executados ou mesmo fazer alguma gambiarra com o comando “script”, mas quase todas as tentativas me levavam a um problema: como fazer isso de forma transparente e ainda mais importante em Userspace.
Pesquisando, acabei achando um pequeno truque. Neste site há uma explicação de como usar esse “hook” de bash para abrir uma caixa de aviso com Growl no mac (o que pode ser feito no Linux com o notify), para avisar sobre o termino de comandos muito longos.
A configuração é bem simples, basta baixar para o seu home dir o arquivo http://www.twistedmatrix.com/users/glyph/preexec.bash.txt e adicionar ao seu bash a chamada: “. ~/.preexec.bash”, feito isso você define duas funções a preexec e a precmd, funções que são chamadas antes do comando e depois do comando respectivamente.
As aplicações para este hook são quase que infinitas, mas atente para o fato de que isso aumenta o tempo de execução de um comando, pois ela trabalha em cima de todos os comandos que você executar em shell.
obs: Obrigado ao meu amigo Cássio pelas longas horas perdidas atrás dessa inhaca, se ele tivesse um blog eu linkaria aqui!
Sep 22nd
Se tem uma coisa que me deixa chateado é perde meus arquivos de configuração, infelizmente isto é uma coisa que acontece com um certa frequência. Mas existe solução para o problema, vamos a ela!
Nos últimos meses, uma ferramenta tem feito muito barulho, pelo menos para desenvolvedores que sabem utilizar uma boa ferramenta de controle de versão. Não, não estou falando no git, mas do dropbox. Para quem não conhece o dropbox é um serviço de disco virtual, com cliente multi plataforma e com suporte a controle de versão.
A idéia aqui é simples: usar o dropbox para manter um backup dos arquivos de configuração e ao mesmo tempo ganhar um controle de versão, mesmo que simples, sobre estes arquivos. Estou usando isso em uma máquina com Archlinux, mas o principio é o mesmo pra qualquer distribuição e pode ser adaptado com facilidade.
Para instalar o dropbox no Archlinux será necessário o uso do AUR, existe duas maneira de se fazer isso, a primeira é baixar o pacote direto do AUR e executar a rotina de instalação de um pacote desse tipo, a outra é ter o yaourt instalado e fazer isso com uma linha de comando:
$ sudo yaourt -S nautilus-dropbox && killall nautilus
Com isso deve aparecer na barra de tarefas o ícone do dropbox, aguarde um pouco, ele vai baixar e instalar o dropbox, ate aqui o que foi feito era apenas instalação do instalador, rsrs. Quando o processo terminar ele abre um tela com um wizard de configuração, uma vez configurado ele já faz o primeiro sync com sua pasta remota e já podemos trabalhar.
O processo é simples, vamos supor que quiséssemos manter um backup do rc.conf, podemos fazer:
$ mkdir ~/Documents/etc
$ cp /etc/rc.conf ~/Documents/etc/rc.conf
$ sudo rm /etc/rc.conf
$ ln -s ~/Documents/etc/rc.conf /etc/rc.conf
Atente para o fato de que ~/Documents é o meu diretório de sincronismo com o dropbox, você pode ter configurado outro durante o wizard. Tenha em mente que isso pode ser feito quase com qualquer arquivo de configuração, como arquivos do vim (~/.vim e ~/.vimrc), ~/.bashrc, ~/.ssh, bom acho que você pegou a idéia
Bom, é isso. Tenha cuidado com o que você coloca na dropbox, lembre-se que se trada de um serviço on-line, que poder sofrer quedas e ataques de diferentes tipos, uma vez que alguem obtenha acesso aos arquivos lá, como suas chaves em .ssh sua segurança pode esta comprometida, o uso de chaves com palavra chave é o mais recomentando, mas mesmo assim não é garantia de 100% de segurança, afinal outro dia teve uma falha no Debian eu seus derivados comprometendo varias chaves por ai.
Sep 21st
Estava escrevendo um mega post sobre Archlinux, contando minha odisseia por outras distribuições e como acabei chegando nele, mas resolvi deixar isso de lado, Archlinux não pode ser explicado, ou você experimenta e tem a seção do que todos estão falando (pelo menos os que estão usando
), ou nunca vai saber como é.
A minha recomendação é: leia, leia bastante antes de usar, não ignore o guia de instalação, a simples não abertura de um arquivo, que nem alteração precisara, pode impedir o funcionamento do Arch.
Eu particularmente, estou feliz coma serie de coisas nele:
Bom sem mais delongas lei este Guia em pt e seja feliz
Sep 17th
Bom, uma dica rápida para movimentar isso aqui. Já faz um tempo que estou usando o programa Emesene como cliente do msn. Até a versão anterior do pidgin, ele tinha a vantagem de implementar o protocolo mais novo do msn e permitir mensagem em off entre outras coisinhas. Como o novo pidgin também avançou nessa área, isso deixa de ser vantagem, mas mesmo assim ainda temos os plugins, alguns ao meu ver superiores aos do pidgin.
Mas tinha uns probleminhas bem chatos: tanto o plugin dbus quanto o spell não funcionavel corretamente, agora que formatei o computador e instalei o Archlinux me inspirei a ir atrás da solução.
Para o dbus a solução do problema foi sussa de achar, instalando o python-dbus resolve o problema, agora possa usar o plugin de musicas, que altera minha mensagem de status e ainda troca minha imagem pela capa do cd
Para o spell tive que ir atrás de informação, o problema é que ele reclama da falta do gtkspell, mas mesmo estando instalado não funciona. Procurando por um python spell ou algo parecido não se acha nada, acabei por encontrar nesta thread informação de qual pacote tem o suporte necessário. Para o Archlinux:
$ pacman -Ss gnome-python-extras
Para outras distro pode variar o nome do pacote, no Ubuntu me parece ser python-gnome2-extras.