Javascript: Prototype e suas Funcionalidades

Sempre adotei a biblioteca Prototype em meus projetos. Embora existam outras bibliotecas que fornecem funcionalidades semelhantes, continuo adepto da Prototype. Pode ser por mera preguiça de procurar algo novo, como também pela acomodação, pois tudo que preciso a Prototype faz. Entre as funcionalidades que mais me agradam, a classe Form merece destaque. Como você faria para iterar por todos objetos de um formulário? Normalmente vejo códigos como este: var elementos = documento.getElementById(“idDoForm”).elements; for ( var indice = 0 ; indice < elementos.length; indice++ ) { var elemento = elementos[indice]; // Fazer algo aqui. } A prototype torna este trabalho mais fácil: Form.getElements(“idDoForm”).each( function(elemento) { // Fazer algo aqui. } );
Continuar Lendo

Javascript: Closure

Em um determinado ponto do projeto no qual trabalho havia a necessidade de que a mesma função que fazia a chamada Ajax, fosse também a função de callback. Isto é fácil, eu sei. Mas havia mais um problema: essa função na verdade era um método de uma classe, e eu precisava obter os dados de todo o objeto para trabalhar no callback. Como assim? Vou apresentar um exemplo, entretanto, está totalmente direcionado ao DWR, um framework Java para trabalhar com Ajax. Em DWR você tem uma “classe” Javascript que reflete exatamente os métodos de uma classe Java. Portanto, em Javascript você poderia fazer algo do tipo: MinhaClasse.meuMetodo(“dadosParaEnviar”, funcaoCallback); No meu caso, o parâmetro funcaoCallback era um método de uma classe. Veja este trecho de código: // Classe criada com Prototype.var m = Class.create(); m.prototype = { // Construtor. initialize: function(){…
Continuar Lendo

Javascript: Arrays e Objetos

Sempre tive o costume de utilizar códigos semelhantes a este: var colecao = new Array(); colecao[“teste”] = new UmaClasseQualquer(); Apesar de pouco aparente, esta forma de programar não é a mais indicada. Arrays, em Javascript, devem ser usados preferencialmente com índices numéricos. Mas e se você quiser um array associativo igual ao do código apresentado? Use OBJETOS! Arrays associativos são objetos com atributos definidos dinamicamente. Confuso? É, eu também acho. Mas há diversos inconvenientes em usar Arrays como associativos. Por exemplo: var colecao = new Array(); colecao[“length”] = 200; colecao[0] = “teste”; colecao[1] = “teste2”; alert(colecao.length); O que será apresentado no código acima? O número 3? Errado, será o número 200, pois você acabou de redefinir o método length existente nos objetos Array em Javascript. O melhor seria, então: var colecao = new Object(); colecao[“length”] = 200; foreach ( key…
Continuar Lendo

NHibernate 1.2

NHibernate 1.2

Aqui vão alguns detalhes importantes ao adotar a nova versão, ainda em desenvolvimento, do NHibernate 1.2. Inicialmente, observar o arquivo de mapeamento .hbm, pois requer assembly=”Msc.Media” namespace=”Msc.Media.Video.Objects” default-lazy=”false”> O xmlns agora deve ser 2.2, e não 2.0 como o anterior. Houve também alguns problemas no carregamento de objetos, o qual resolveu com a inclusão do atributo default-lazy=”false”. Abaixo um exemplo de mapeamento utilizado por mim em um projeto:
Continuar Lendo

Conversão de Vídeos em .NET

Este é meu novo desafio: criar um sistema que, tendo como entrada arquivos nos formatos WMV, MPEG e AVI, gere como saída um vídeo no formato FLV. Trata-se de um sistema para uma nova rádio da Bahia, chamada Nova Salvador. Entre diversas pesquisas (no Google, é óbvio), cheguei a algumas opções. Inicialmente, através deste post, encontrei o AvDn, feito pelo Daniel. Logo depois, no mesmo link, encontrei o SharpFFMpeg. Todos são Wrappers para o FFMpeg, um excelente programa freeware para conversão de vídeos de todos os formatos! Infelizmente, ainda não obtive sucesso na utilização destas bibliotecas, mas assim que tiver boas notícias, estarei compartilhando com todos.
Continuar Lendo

×