Javascript: libjsx

jsx

Há algum tempo eu reuni alguns exemplos meus de javascript no Google Code com o nome de libjsx, aonde adicionei outras funcionalidades também como por exemplos métodos para Ajax. Separei em componentes visuais (colorpicker, datagrid, etc.), eventos de mouse e teclado, html elements, próprio ajax, e core com algumas funcionalidades básicas.

Mas devido um outro projeto várias funcionalidades novas que fiz não estão presentes, espero que após concluir o projeto eu possa mesclar as modificações e tornar essa bibilioteca realmente usável. Por enquanto vale a pena dar uma lida por curiosidade.

Javascript Benchmark: replaceAll

Há algum tempo escrevi um post contendo um exemplo de método para fazer replace em toda String. No caso o método que escrevi usava while e realmente é muito menos eficiente do que as alternativas apresentadas nos comentários, a primeira usando Expressão Regular (sugerida pelo Almir Mendes) e a segunda utilizando split e join (sugerida pelo Lucas Ferreira).  Então resolvi (depois de muito tempo) fazer um benchmark utilizando os três métodos para poder chegar a uma conclusão sobre qual seria melhor.

Fiquei muito surpreso com os testes, não porque o método utilizando while foi de longe o pior entre os três, mas sim pelo fato do método que consiste em dividir a String em um vetor e depois junta-la novamente (split+join) ter sido mais rápido do que o próprio método de replace do javascript utilizando Expressão Regular (já que o split também utiliza ER).

Outro fato interessante é que tanto utilizando ER quanto split-join os métodos se mostraram bastante escaláveis, enquanto o com while piora consideravelmente conforme o número de ocorrência aumenta.

Lembrando que fiz os testes através desta página que criei utilizando como browser o Firefox 3.0.5. Caso alguém faça os testes e obtenha resultados diferente gostaria de receber feedbacks.

Javascript: Virtual Keyboard

keyboardBaseado no teclado virtual do Banco do Brasil (feito em Java) resolvi simular um com Javascript. Ainda não sei uma utilização eficaz para ele, mas se usarmos um name dinâmico e funcionando com uma senha complementar (porque permite somente números, ou seja, uma senha fraca) pode acabar ajudando contra Keylogger ou algum robô (script) que alguém possa ter implementado para acessar a página.

Enfim, serve como um exemplo de como podemos aplicar o Javascript (com auxílio de CSS) nas páginas, sistemas.

Python: PyCACIC

Ver post no novo domínio: http://blog.rogeriolino.com/2008/07/03/python-pycacic/

Cacic CACIC: “Primeiro Software Público do Governo Federal, resultado do Consórcio de
Cooperação entre a SLTI – Secretaria de Logística Tecnologia da Informação, do
Ministério do Planejamento, Orçamento e Gestão – MPOG e a DATAPREV – Empresa de
Tecnologia e Informações da Previdência Social, desenvolvido pelo Escritório
Regional da DATAPREV no Espírito Santo.

O Cacic é capaz de fornecer um diagnóstico preciso do parque computacional e
disponibilizar informações como o número de equipamentos e sua distribuição nos mais
diversos órgãos, os tipos de softwares utilizados e licenciados, configurações de
hardware, entre outras. Também pode fornecer informações patrimoniais e a localização
física dos equipamentos, ampliando o controle do parque computacional e a segurança
na rede.”

fonte: http://www.softwarepublico.gov.br/ver-comunidade?community_id=3585

PyCacic

Há bastante tempo existe a versão do Agente Cacic para Windows, versão bastante difundida não só no Brasil quanto no mundo, mas ainda não existia uma versão para GNU/Linux. O que para a comunidade de software livre era uma pena, diante da grande utilidade e compentência do Cacic.

E para felicidade geral foi lançada nesta segunda-feira (30/06/08) a versão rc1 (release candidate 1) do agente para GNU/Linux escrita em Python, no qual tive o prazer de ser um dos principais desenvolvedores junto com toda – excelente – equipe de desenvolvimento da Dataprev (URES – Unidade Regional Espírito Santo).

Esta versão conta com a praticidade de um gerador de pacotes preconfigurados (deb, rpm ou tgz genérico) para facilitar a instação nas estações. Coleta informações de software, hardware, variáveis de ambiente, informações de rede e patrimoniais, partições e unidades de disco.

O código fonte e pacotes podem ser baixados no próprio site da comunidade no Software Público Brasileiro.

Python: PyTETA

PatetaIncentivado por um trabalho de faculdade, no qual teria que fazer um simples sistema de chat (contando com um cliente e um servidor, também cliente) usando socket. Eu e Ulysses resolvemos então criar um protocolo para transferência de mensagem e utilizá-lo em nossos trabalhos para que posteriormente ambos consigam se comunicar. Surgiu então o protocolo P.A.T.E.T.A (Protocolo Aberto de Transferência Especialmente para Trabalhos Acadêmicos).

E tão bobo quanto o nome do protocolo surgiu o PyTETA versão feita em Python do comunicador baseado no protocolo PATETA. Imitando descaradamente o mIRC (só que infinitamente mais humilde), o sistema conta com envios de mensagens privadas (pvt), públicas e notificações de status dos outros usuários (mudança de nick, entrada, saída – exibindo a frase personalizada do usuário).

Para poder utilizar (caso tenha curiosidade) necessita ter além do Python 2.4, o GTK+, pygtk e pyglade. Estes últimos exclusivos da interface gráfica. O servidor pode tanto ser executado no prompt, quando pela interface gráfica.

Para quem é curioso em programação, vale a pena conferir o código. E se interessar, convido a participar lá no Google Code comigo.

JsCC no Assembla

Eu juntamente com meu amigo Ulysses Rangel (que em breve estará com um blog), a partir de uma idéia dele, resolvemos colocar o JsCC no Assembla e trabalharmos juntos para aprimorarmos e dar suporte a outras linguagens.

Outra novidade é que agora você pode escolher quais tags quer que o script colore. Para acessar o space do JsCC, segue o link abaixo:

http://www.assembla.com/space/jscc

E espero que essa parceria renda outros bons frutos. Já que se depender da gente, vontade não falta.