jQuery.dominator – Criação de elementos usando seletores

Sempre achei um pouco chato criar elementos no DOM usando Javascript, não gosto da idéia de escrever HTML no meio de script e o uso de templates também não me agrada muito.

Então tive a idéia de criar elementos usando seletores CSS e assim nasceu o jquery.dominator, um plugin para jQuery. O código com testes usando QUnit está disponível no meu Github.

Foi um projeto legal de se desenvolver, tive alguns problemas para implementar recursos mais complexos mas tomei por base (copiei) o funcionamento do Sizzle e do jQuery e adaptei (roubei) alguns trechos, isso garantiu a compatibilidade entre os browsers.

Segue alguns exemplos de uso:

// Tags simples
$.dominator('p'); // <p></p> $.dominator('div'); // <div></div> $.dominator('div p'); // <div><p></p></div> $.dominator('div p span a'); // <div><p><span><a></a></span></p></div>
// IDs, Classes
$.dominator('div#myid'); // <div id="myid"></div> $.dominator('div p#myid'); // <div><p id="myid"></p></div> $.dominator('div#myid p'); // <div id="myid"><p></p></div> $.dominator('#myid'); // <div id="myid"></div> $.dominator('div.myclass'); // <div class="myclass"></div> $.dominator('div.my-class'); // <div class="my-class"></div> $.dominator('div.my_class'); // <div class="my_class"></div> $.dominator('.myclass'); // <div class="myclass"></div> $.dominator('div.first.second'); // <div class="first second"></div>
// Múltiplos seletores (paralelos)
$.dominator('div, p'); // <div></div><p></p> $.dominator('div#id, p.class a'); // <div id="id"></div><p class="class"><a></a></p>
// Atributos $.dominator('a[title=simpletitle]'); // <a title="simpletitle"></a> $.dominator('a[title=With Space]'); // <a title="With Space"></a> $.dominator('a[title=With,Comma]'); // <a title="With,Comma"></a> $.dominator('a[title=With#Hash]'); // <a title="With#Hash"></a> $.dominator('a[title=With.Dot]'); // <a title="With.Dot"></a>
// Variáveis
$.dominator('a[rel=${myvar}]', {myvar: 'myvariable'}); // '<a rel="myvariable"></a>' $.dominator('a[rel=${myvar}]', {myvar: 'My Variable'}); // '<a rel="My Variable"></a>' $.dominator('a[name=${myvar}]', {myvar: 'myvar'}); // '<a name="myvar"></a>' $.dominator('a[name=${myvar}]', {myvar: 'My Variable'}); // '<a name="My Variable"></a>'

Se for útil pra você deixe um recado. Também gostaria de idéias para melhorar o plugin!

Anúncios

Frix – Framework em PHP

Coloquei no meu Github o Frix, um framework em PHP baseado no Django (em Python).

Sempre vi um pouco de dificuldade em vender projetos com Django, os clientes costumam ter uma hospedagem que não suporta Python e oferecem resistência em trocar, ou têm receio de investir em uma solução que usa uma linguagem “exótica”. Pensando nisso, há algum tempo atrás desenvolvi o Frix, tentando aplicar algumas boas idéias do Django no PHP.

O projeto foi pouco utilizado e ficou encostado por muito tempo, mas como acredito que existem coisas que podem ser aproveitadas, resolvi liberar o código antes que caísse no meu próprio esquecimento.

Algumas das principais features:

  • Admin (scaffolding): criar, listar, editar e remover objetos:
    • suporte a hierarquia (árvores);
    • ordenação manual;
    • edição de objetos relacionados (inline);
  • Mapeador objeto-relacional: modelos de dados, abstração de consultas:
    • com suporte a MySQL;
  • Roteador de URLs com expressões regulares;
  • Sistema de templates em PHP puro:
    • suporte a herança e blocos;
    • aviso: a performance deixa a desejar;
  • Tratamento de Erros;

Para testar:

  1. clonar o projeto:
  2. git clone git://github.com/ricobl/frix.git
  3. criar o arquivo index.php:
  4. <?
    // Replace the path according to your setup
    require_once('path/to/frix/main.php');
    Frix::start();
    ?>
  5. criar o arquivo config.php:
  6. <?
    $config['DB_URL'] = 'mysql://user:pass@localhost/database';
    ?>
  7. criar o banco de dados no mysql, usando os SQLs das apps para criar as tabelas necessárias.

De qualquer forma, não pretendo manter o projeto, faz algum tempo que não trabalho com PHP e já não o acho mais tão divertido. Um dos motivos que me fez deixá-lo de lado foi a fraca orientação à objetos e dificuldade de instrospecção do PHP.

Gostaria de ouvir as opiniões sobre o framework e mais ainda se alguém achar algum uso para ele ou algum de seus módulos.

IRPF: As informações do recibo foram corrompidas após sua gravação, no registro MC

UPDATE 2011: o problema persiste na nova versão.

Tive esta mensagem ao tentar imprimir o recibo de declaração do IRPF e resolvi o problema corrigindo com um editor de texto os caracteres com acento no arquivo do recibo (.REC) que fica em ~/ProgramasRFB/irpf2010/transmitidas.

A dica é de 2009 mas resolveu o problema,  veio de um comentário do Diego Viegas no blog Ubuntu – Minha Vida.

Como achei em poucos lugares resolvi publicar aqui.

Vaga para desenvolvedor Python em Curitiba

A Orangotoe, empresa que desenvolve portais em Curitiba está procurando prodígios da web para trabalhar em projetos como o Paraná Online e Banda B.

Mais informações no blog da empresa.

Novo portal Rádio Banda B

UPDATE 12/03/2010: eu não trabalho com a equipe da rádio, apenas trabalhei no desenvolvimento do portal. Para falar com a equipe, acesse o portal.

UPDATE 14/07/2010: É engraçado que mesmo depois de colocar o aviso acima continuo recebendo pedidos dos mais variados em relação à rádio. Pessoas elogiando os programas, procurando casa para alugar, comprar, entre outros.

UPDATE 30/08/2010: Desisti! Comentários fechados.

Está no ar mais um portal em que eu tive o prazer de trabalhar aqui na Orangotoe: Rádio Banda B. A rádio é líder no seguimento AM em Curitiba e Região Metropolitana, seu conteúdo é voltado para a informação e entretenimento da comunidade, contendo trechos de programas da rádionotíciasblogs, agenda de programação e vários outros recursos.

O mais interessante deste projeto foi o modo em que foi desenvolvido, usando uma mistura de Scrum com XP. Foi aplicada uma série de boas práticas como desenvolvimento orientado a testes, programação em par e aplicações reutilizáveis. Vários módulos e aplicações de código aberto foram utilizados e outros criados internamente que poderão ser reaproveitados em novos projetos. Tudo isso contribuiu para que o processo fosse mais fluido e rápido.

Um destaque para a aplicação de calendário que suportou o agendamento e recorrência da programação da rádio. Um agradecimento especial ao Gustavo Niemeyer pelo módulo python-dateutil com as classes rrule e rruleset que foram fundamentais para o funcionamento desta aplicação.

Para saber mais basta visitar o portal! Estarei aqui para responder qualquer pergunta ou comentário, qualquer opinião é bem vinda!

Para ter um registro histórico, aqui vai um screenshot da home:

Screenshot da home do portal Rádio Banda B AM 550

ParseException com django-haystack e Whoosh

O haystack, utilitário de buscas para o Django, tem um problema quando se tenta listar todas as ocorrências indexadas para um único model.

Estou usando o Whoosh como backend de busca, não sei se isso acontece com outros backends.

Eu alertei o desenvolvedor, mas ainda não houve tempo de resposta pelo jeito já foi corrigido.

É possível contornar o problema filtrando pelo campo de content-type do índice ao invés de usar o método sugerido “models”. Algo assim:

SearchQuerySet().filter(django_ct='%s.%s' % (SomeModel._meta.app_label,
                                             SomeModel._meta.module_name))

Pesquisa sobre a Comunidade PythonBrasil

O Henrique Bastos vai estar na PyCon deste ano, em Atlanta nos Estados Unidos, e vai apresentar uma palestra “Small acts make great revolutions”.

Para isso está pedindo colaboração para traçar um perfil da comunidade Python no Brasil através de uma pesquisa. Se você é desenvolvedor, faça sua parte e preencha a pesquisa, é rápido e indolor. Não precisa trabalhar com Python, o perfil é geral.

Pesquisa:
http://henriquebastos.wufoo.com/forms/vamos-divulgar-nossa-comunidade-python-na-pycon/

Post inicial:
http://henriquebastos.net/2010/01/08/ajude-a-mostrar-a-pythonbrasil-na-pycon-2010/

Bombando:
http://henriquebastos.net/2010/01/13/a-pesquisa-sobre-a-comunidade-pythonbrasil-esta-bombando/

Como não vi nada no feed da Django Brasil, tomei a liberdade de “taguear” o post para aparecer lá também, sei que tem gente que acompanha novidades do Django mas não do Python em geral.