Prototype vs jQuery - combo estado/cidade

Tags: , , — July 31, 2008 @ 2:59 pm

A algum tempo eu vinha utilizando o Prototype JavaScript Framework para criar efeitos de animações simples e, principalmente, fazer requisições AJAX, em meus projetos. Mas após as constantes indicações de um amigo de que o jQuery JavaScript Framework tornava o desenvolvimento de aplicações web com JavaScript bem mais fácil, e as promessas deste de fazer grandes diferenças com poucas linhas de código, resolvi começar a utilizá-lo em meus novos projetos.

Acontece que o jQuery realmente cumpre o que promete, facilitando trabalhos como alteração de objetos em tempo de execução, requisições ajax e também conta com ótimas animações, tudo com poucas linhas de código muito fáceis de entender. Por isso resolvi fazer uma pequena comparação entre o uso de Prototype, jQuery, ou apenas JavaScript sem se utilizar nenhum framework.

Algumas vantagens do jQuery:

  • Tamanho: O jQuery.js (versão 1.2.6) tem apenas 97KB, contando com toda sua API, Ajax e algumas animações básicas (Fade, Slide e o Animate, que pode ser utilizado para se fazeranimações customizadas). Já o prototype.js (versão 1.6.0.2), sem o Script.aculo.us, que provê as animações e efeitos, tem 123KB;
  • Seletores: Enquanto com JavaScript é necessário linhas como elemento = getElementById(’myDiv’); com o jQuery vc pode selecionar qualquer elemento com seletores CSS, utilizando a função $(). Ex: elemento = $(’#myDiv’); Note que, como ele utiliza seletores CSS, é possivel selecionar facilmente quaisquer elementos, como todas as âncoras de uma página, ou todas as ancoras com a classe link, por exemplo: anchor = $(’a'); anchorLink = $(’a.link’);
  • Eventos: O Prototype possui uma função para observar determinado evento em um elemento. Para disparar funções no Evento Click de meu link de id ‘myLink’, por exemplo, é necessário: Event.observe(’myLink’, ‘click’, function(e) { […] } );. Com jQuery basta fazer: $(’myLink’).click( function() { […] });

Vou um exemplo de código para uma aplicação bem comum, dois <select>s relativos de estado e cidade. Não vou postar HTML ou código PHP desnecessário, apenas o código Javascript.

Considere dois <select>, um com id ‘StateId‘ que exibirá os estados para selecionar, e irá atualizar com AJAX as opções do segundo <select>, que terá o id ‘CityId’, contendo as Cidades do estado selecionado previamente.

A url enviada, é uma típica url segmentada, comum em Frameworks MVC, e corresponde ao controle cities, a ação update, e deve receber o id do estado como parâmetro. Seria equivalente a seguinte url: ‘/cities/update.php?state_id=’.

Primeiramente, eis como o código para atualização seria, utilizando-se apenas JavaScript, e nenhum Framework:

//Apenas JavaScript, Nenhum framework
function updateCities(stateId) {
    var httpRequest;
    if (window.XMLHttpRequest) { // Mozilla, Safari, ...
        httpRequest = new XMLHttpRequest();
    } else if (window.ActiveXObject) { // IE
        httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
    }
 
    httpRequest.open("GET", '/cities/update/' + stateId, true);
    httpRequest.onreadystatechange = function() {
        document.getElementById("CityId").innerHTML = httpRequest.responseText;
    }
    httpRequest.send(null);
}

Ainda, como o JavaScript por padrão não possui métodos para observar eventos em elementos diversos, será necessário adicionar explicitamenteuma chamada para a função updateCities() no evento onChange do <select>:

<select id="StateId" name="StateId" onchange="updateCities(this.value)">

Utilizando-se Prototype, o trabalho torna-se bem mas fácil:

//Prototype
Event.observe (
    'StateId',
    'change',
    function(e) {
        new Ajax.Updater('CityId', '/cities/update/' + this.value);
    }
);

Já com jQuery, o código é reduzido significativamente, além de ficar bem mais legível e fácil de entender a uma primeira olhada:

//jQuery
$('#StateId').change(
    function() {
        $('#CityId').load('/cities/update/' + this.value);
    }
);

Este é um exemplo simples de como fica fácil reduzir código e torná-lo mais legível com uso do framework Js jQuery.
Veja a documentação do jQuery para mais métodos e exemplos de uso.

Se você gostou deste artigo, inscreva-se em meu RSS feed!

Usando SSH como um proxy para navegação segura

Tags: , — July 25, 2008 @ 10:44 pm

Quando estiver em um internet café, hotel ou evento, e não tiver certeza do quão segura é a rede local, com ou sem fio, pode ser meio preocupante navegar pela internet livremente, enviando senhas de email e outros serviços que podem ser facilmente “sniffadas“.

Para resolver este problema e navegar através de uma coneção segura, é possível se utilizar do OpenSSH, o aplicativo que provê conexões seguras em Shell remotos e já vem disponível na maioria das distribuições Linux (senão em todas), com a opção -D.

Como já sabemos, o OpenSSH não é apenas um programa para coneções remotas via shell, mas também para tunelar diversos outros serviços através de uma conexão segura, assim, este também pode ser utilizado para criar um proxy localmente, utilizado para navegação, serviços de email e mensagens instatâneas, etc…

Primeiro você deve ter acesso via ssh a um computador remoto, então conecte normalmente, especificando uma porta para o proxy com a opção -D:

$ ssh -D 9999 -l usuario -p 22 192.168.1.1

Aopção “-l usuario” só é necessária caso o usuário no computador remoto não seja o mesmo utilizado localmente, e a opção “-p 22″ apenas se a porta do ssh utilizadanão for a padrão (22). A porta “9999″ pode ser substituída por outra de sua preferência.

Após inserir o comando, entre com sua senha, e mantenha a conexão aberta. O ssh criará um proxy SOCKS localmente na porta 9999 (ou a que você especificou), assim basta configurar seu navegador, cliente de email ou mensagens instantâneas para utilizar um proxy SOCKS:

No Firefox (ou Debian Iceweasel), clique no menu “Editar” e em “Preferências”, selecione o botão “Avançado” e a aba “Rede” e clique em “Configurar” ao lado de “Conexão”. Na nova janela selecione “Configuração manual de proxy” e em“SOCKS” coloque “localhost” ou “127.0.0.1″ e na “Porta” coloque “9999″ (ou a porta que você especificou na opção -D da conexão ssh).

Para o Thunderbird (ou Debian Icedove) o procedimento é o mesmo, e outros navegadores também possuem configurações similares.

Após isso você estará navegando na internet através de uma coneção segura, uma vez que todas as informações que estiver enviando ou recebendo passarão primeiro pelo computador remoto, através da conexão ssh.

Fonte: http://ubuntu.wordpress.com/2006/12/08/ssh-tunnel-socks-proxy-forwarding-secure-browsing/

Se você gostou deste artigo, inscreva-se em meu RSS feed!

QuantumDB Eclipse Plugin - Executando consultas SQL no seu Eclipse

Tags: , — July 24, 2008 @ 3:10 pm

QuantumDB é um plugin para o eclipse que possibilita conexão com diversas bases de dados, além de possuir um editor SQL e a possibilidade de executar scripts diretamente em uma base selecionada.

Com o QuantumDB não há mais necessidade de utilizar uma aplicação externa para testar seus scripts SQL ou executar consultas em geral.

QuantumDB PerspectiveJá a algum tempo utilizo o editor SQL do QuantumDB, mas sempre utilizei o MySQL Query Browser para realizar consultas e executar scritps SQL. Porém, após minha última atualização do Debian, percebi um bug não resolvido, que fazia o Query Browser travar sempre que se selecionava uma base. Assim fui obrigado a procurar uma alternativa.

Eu já sabia que o quantum DB tinha recursos para integrar consultas SQL ao Eclipse, como pode-se ver pela imagem a direita, só me faltava fazer a conexão com o servidor MySQL.

Não vou mensionar a instalação do plugin no eclipse, visto que esta é bem explicada na página do QuantumDB, apenas como conectar a uma base de dados MySQL (ou outra) e utilizá-lo.

Para isto, é necessário instalar conectores Java para o MySQL. No Debian (e variantes, como o Ubuntu) basta instalar o pacote libmysql-java:

# aptitude install libmysql-java

Se você utiliza outras bases de dados, basta procurar o conector correto com o apt-cache. Exemplo:

# apt-cache search postgresql java

Após instalar o conector, clique no “New Bookmark” na aba “Database Bookmarks” do QuantumDB, então clique em “Add Driver” e em “Add external Jar“, selecionando o conector java (/usr/share/java/mysql.jar, por exemplo). Em seguida clique em “Browse” para selecionar a classe, e selecione “com.mysql.jdbc.driver” e clique em “Finish“.

Após adicionar o driver, basta selecioná-lo, e criar a conexão fornecendo os dados da base (servidor, usuário e senha, nome da base e um nome que aparecerá nos bookmarks) utilizando o Assistente (Next, Next[, …]).

Para facilitar ainda mais, podemos utilizar os recursos do Eclipse para integrar a visão de consultas ou outras do QuantumDB a perspectiva de seu plugin mais utilizada, assim não é necessário ficar trocando de telas para realizar consultas ou executar Scripts. Eu, por exemplo, tenho utilizado a visão de consultas do QuantumDB integrada a minha perspective para PHP (veja screenshot abaixo).

Visões de Bookmarks, Consultas e Resultados do Quantum DB integrados a perspectiva PHP (painel inferior) Opção para executar Scripts SQL, a partir do navegador, diretamente em uma base.

Se você gostou deste artigo, inscreva-se em meu RSS feed!

Exchange - temas e aplicativos para o E17

Tags: , , — July 23, 2008 @ 6:06 pm

Além o e17-stuff.org, agora o Enlightenment conta com um novo site de temas, substituindo o antigo get-e.org. Trata-se do exchange.enlightenment.org, um site bem mais completo e organizado, e com um ótimo visual.

Resolvi dar uma passa no get-e.org hoje para ver se haviam novos temas, ou se alguns receberam upgrades, e vejo agrande mensagem indicando que o site foi fechado.

Desde Janeiro de 2001 o get-e.org foi o repositório oficial de temas, entre outras utilizades, para os usuários do E. Sendo neste último dia 20 substituido pelo novo http://exchange.enlightenment.org, que agora contém, não apenas temas, mas também módulos e aplicativos para o E.

Não deixem de dar uma conferida.

Se você gostou deste artigo, inscreva-se em meu RSS feed!

jSMS - Java Short Message Sender

Tags: , , — July 8, 2008 @ 4:12 pm

O jSMS é um pequeno aplicativo em Java utilizado para enviar mensagens SMS para diversas operadoras Brasileiras. Já na versão 3.01, o programa tem chamado atenção pela simplicidade e facilidade de uso, além da vantagem de ser multiplataforma.

Java Short Message Sender

Não é a intenção deste Blog divulgar programas diversos, e muito menos falar sobre Java, mas visto que uso este a mais de 2 anos, achei que seria uma boa idéia falar um pouquinho sobre ele.

Desenvolvido e mantido por Renato F. V. da Costa desde 2004, a pequena aplicação é estável, atualizada com frequência, e bastante útil.

Com a versão genérica (*.jar) que pode ser obtida na página de Downloads, o programa pode ser executado em qualquer sistema que possua uma versão atualizada do Java instalado. Assim, para usuários GNU/Linux, basta executar:

java -jar jSMS-XXX.jar

Onde ‘jSMS-XXX.jar‘ é o caminho completo para o programa e ‘XXX‘ é o número da versão utilizada.

Para quem tiver dúvidas, precisar de ajuda, ou quiser colaborar, basta visitar a página do desenvolvedor, que dispõe inclusive de um FAQ e Forum.

Se você gostou deste artigo, inscreva-se em meu RSS feed!

Executando Aplicações X11 remotas por ssh

Tags: , , — July 3, 2008 @ 2:24 pm

Já pensou na possibilidade de executar seus programas preferidos, instalados em seu computador de casa, a partir de seu computador do trabalho? Não apenas executar o mesmo programa, mas sim com todas as configurações, local de execução e acesso aos arquivos de seu pc de casa, sem precisar ter o mesmo programa instalado no trabalho.

O SSH, ou Secure Shell, é um aplicativo Unix que permite acesso remoto, por terminal, a outros computadores. Porém, o proŕio SSH tem uma opção de tunelar o X Server, possibilitando a execução de aplicativos X11 remotos.

Já a algum tempo eu sabia que era possível fazer esse tunelamento para executar aplicativos X remotos por ssh, mas ainda não havia pesquisado a respeito. Foi então que ontem me surgiu a idéia de rodar os programas que tenho no trabalho (principelmente o Eclipse IDE) para desenvolver a partir de casa, sem precisar copiar todos os fontes ou montardiretórios remotos, e então acabei me surpreendendo com a facilidade disto.

A maioria dos usuários GNU/Linux devem estar acostumados a acessar máquinas remotas por ssh, com comandos como:

ssh user@server.com

ou

ssh -p 22 -l user 192.168.1.1

Nos exemplos acima exibo dois modos básicos para conexões com ssh. a opção -p é necessária apenas caso o servidor remoto ou cliente nãoestejam usando portas padrões para o SSH, a opção -l serve para definir o usuário a logar no servidor remoto, sendo necessário apenas quando os nomes de usuários no servidor e cliente não coincidem, e é equivalente a utilizar user@ antes doendereço do servidor, que pode ser um endereço de ip, ou um nome de domínio.

Agora, para tunelar o X server basta adicionar a opção -X a linha de comando:

ssh -p 22 -l user -X 192.168.1.1

Assim, uma vez conectado ao servidor remoto, basta executar qualquer aplicação normalmente, que as janelas destas gerão criadas em sua máquina local. Veja o screenshot de exemplo:

Aplicações X remotas, rodando através de ssh -X lBreackout2 e Wine Notepad

No primeiro screenshot acima, estão sendo executados localmente (em meu computador de trabalho)  o terminal, com a sessão ssh aberta, o monitor de sistema GKrellm (a direita), o gerenciador de arquivos Thunar, e a calculadora Galculator, acima da qual está um outra calculadora sendo executada a partir do computador remoto (meu laptop, em casa, conectado através de uma rede sem fio de longa distância), note a diferença no tema do GTK2, e mais acima está o aplicativo Eye of Gnome, o qual tenho instalado apenas no Notebook.

No segundo Screenshot estou executando o jogo lBreakout2 e o Wine Notepad (um clone do editor Notepad do windows, para Wine), demonstrando como é possível rodar praticamente qualquer aplicativo remoto, é possivel inclusive executar um gerenciador de janelas ou desktop inteiramente.

Diferente do VNC, que geralmente se conecta a uma sessão X existente, o tunelamento do X sob ssh envia os aplicativos executados para a sessão X existente na máquina cliente (ou seja, não invade a privacidade de quem estiver utilizando a máquina remota).

Infelizmente o ssh não possibilita tunelar sons reproduzidos por aplicativos X, assim se vc executar um player de mídia, quem irá acabar ouvindo é quem estiver perto do servidor remoto. Aplicativos que exijam OpenGL ou outras bibliotecas gráficas podem não ser executados corretamente também.

Fonte: http://www.vanemery.com/Linux/XoverSSH/X-over-SSH2.html

Se você gostou deste artigo, inscreva-se em meu RSS feed!

Next Page >>>