Mostrando postagens com marcador coldfusion. Mostrar todas as postagens
Mostrando postagens com marcador coldfusion. Mostrar todas as postagens

segunda-feira, junho 22, 2009

Agilize Coldfusion Components com Bean Dinâmico (Genérico)

Assisti um vídeo do Terry Ryan em Adobe TV sobre como acelerar o desenvolvimento com Coldfusion Componentes (CFC), achei muito bom e aproveitei para reescrever o Bean dinâmico utilizando cfscript. Testei e funcionou, muito boa a dica! Segue o código fonte:


<cfcomponent displayname="BeanDynamic.cfc">

<cffunction name="init" access="remote" output="false" returntype="Any">
<cfscript>
return this;
</cfscript>
</cffunction>

<cffunction name="onMissingMethod" access="public">
<cfargument name="missingMethodName" type="string" required="false" />
<cfargument name="missingMethodArguments" required="false" />
<cfscript>
var attribute = "";

if( compareNoCase(left(arguments.missingMethodName,3),"get") eq 0 ){

attribute = getMissingMethodName(arguments.missingMethodName);
return get(attribute);

} else

if( compareNoCase(left(arguments.missingMethodName,3),"set") eq 0 ){

attribute = getMissingMethodName(arguments.missingMethodName);
return set(attribute, arguments.missingMethodArguments[1]);
}
</cfscript>
</cffunction>


<cffunction name="getMissingMethodName" access="private" returntype="Any">
<cfargument name="missMethName" type="string" required="false" />
<cfreturn right(arguments.missMethName,len(arguments.missMethName)-3)>
</cffunction>

<cffunction name="get" access="private" output="false" returntype="Any">
<cfargument name="attribute" type="string" required="true" />
<cfreturn variables.instance[arguments.attribute] />
</cffunction>

<cffunction name="set" access="private" output="false" returntype="Any">
<cfargument name="attribute" type="string" required="true" />
<cfargument name="value" type="any" required="true" />

<cfset variables.instance[arguments.attribute] = arguments.value />

<cfreturn this />
</cffunction>

<cffunction name="getVars" access="remote" output="false" returntype="Any">
<cfreturn variables.instance>
</cffunction>

</cfcomponent>



Para Testar em seguida:


<cfscript>
BeanDynamic = createObject('component','BeanDynamic').init();
BeanDynamic.setNome('Fernando');
BeanDynamic.setEmail('fernando@teste.com');
</cfscript>

<cfoutput>
#BeanDynamic.getNome()#<br />
#BeanDynamic.getEmail()#
</cfoutput>

quinta-feira, junho 18, 2009

Instalando certificado digital no Coldfusion com Keytool

Tivemos alguns problemas no Servidor Web, para aproveitar a oportunidade realizei a atualização do Coldfusion 7 para Coldfusion 8 com update 8.02 não tive muita dor de cabeça para liberar o servidor, pois é importado toda configuração para a nova versão. Isso economizou algumas horas, não pensei que estivesse tão fácil para atualizar um servidor Cf7 para Cf8. Lembro que nas versões antigas era necessário reconfigurar.

Com o servidor atualizado e funcionando, tivemos uma falha inesperada em uma aplicação usando CFHTTP post com SSL. O dump da resposta CFHTTP exibia isso:
Com base nisto conclui que a atualização Cf7 para Cf8 copiou tudo com exceção dos certificados digitais que estavam instalados na VM. Portanto, foi necessário a instalação do certificado utilizado nesta aplicação para isso utilizei um arquivo bat que peguei há muito tempo atrás se não me falha a memória foi em: www.talkingtree.com/blog.

Primeiramente copie o arquivo do certificado .cer na pasta do Coldfusion na subpasta: \runtime\jre\lib\security.

Segue o arquivo run_keytool_import.bat que deve ser configurado para instalar o certificado digital utilizando keytool. Altere basicamente o que destaquei em vermelho.

@echo off
echo
echo This will import an X.509 SSL certificate into the keystore for the JVM specified
echo
echo Press Control+C to abort.
pause
SETLOCAL

rem -------------------------------------------------
rem 1) SET COLDFUSION JVM'S JAVA_HOME HERE
rem THIS SHOULD BE THE JVM USED FOR COLDFUSION MX
rem -------------------------------------------------
set JAVA_HOME=C:\ColdFusion8\runtime

rem -------------------------------------------------
rem 2) SET THE CERTIFICATE NAME AND ALIAS HERE
rem -------------------------------------------------
set CERT_NAME=site98.rejasa.com.br.cer
set CERT_ALIAS= site98.rejasa.com.br

rem -------------------------------------------------
rem 3) SET THE KEYTOOL PASSWORD HERE
rem -------------------------------------------------
set KEYTOOL_PASS=changeit

rem -------------------------------------------------
rem DO NOT EDIT BELOW THIS LINE
rem -------------------------------------------------
set JAVA_SECURITY=%JAVA_HOME%\jre\lib\security
set CERT=%JAVA_SECURITY%\%CERT_NAME%
%JAVA_HOME%\jre\bin\keytool -import -trustcacerts -keystore %JAVA_SECURITY%\cacerts -storepass %KEYTOOL_PASS% -noprompt -alias %CERT_ALIAS% -file %CERT%
ENDLOCAL
pause

Depois de executar o arquivo bat e instalar o certificado, o dump da resposta CFHTTP exibe isso:



Já pude perceber que o acesso CFHTTP com SSL funcionou, apenas faltou os parâmetros corretos.

sexta-feira, maio 30, 2008

Snipet que adapta o componente gateway para trabalhar com tabelas de relacionamento

Para quem usa a Extensão Coldfusion para eclipse da Adobe, dentro de RDS Dataview quando clicamos com o botão direito do mouse numa tabela temos a opção: Coldfusion Wizards > Create CFC. Abre então uma janela "Coldfusion CFC Value Object Wizard" com 3 opções, entre elas uma pode gerar automaticamente os arquivos CFC para acesso a dados que prefiro chamar de grupo DAO, que é constituído de 3 arquivos com suas respectivas funções: DAO, TO e Gateway.

Esta plugin para o eclipse pode ser obtido gratuítamente na Adobe
ColdFusion 8 Extensions for Eclipse, também vem junto com o Flex Builder.

O arquivo gateway do grupo DAO, não concebe tratamento para tabelas de relacionamento no banco de dados, então criei esse snipet no Cfeclipse que pode ser usado no arquivo Gateway.cfc sobrescrevendo os métodos gerados, assim permitindo um melhor controle para tabelas de relacionamento. A princípio escrevi para tratar relacionamentos entre duas tabelas, mas é bem fácil adaptá-lo para mais tabelas.



<cffunction name="getById" output="false"
access="remote">
<cfargument name="$${idt1}" required="true" />
<cfargument name="$${idt2}" required="true" />
<cfreturn createObject("component",
"$${DAO}").read(arguments.$${idt1},arguments.$${idt2})>
</cffunction>

<cffunction name="getByIdAndSave" output="false" access="remote"
hint="Insere relacionamento - salva se for novo (insert)">
<cfargument name="$${idt1}" required="true" />
<cfargument name="$${idt2}" required="true" />

<cfscript>
var Obj = getById(arguments.$${idt1},arguments.$${idt2});
if(Obj.get$${idt1}() eq 0 AND Obj.get$${idt2}() eq 0){
Obj.set$${idt1}(arguments.$${idt1});
Obj.set$${idt2}(arguments.$${idt2}); save(obj); }
</cfscript>
</cffunction>

<cffunction name="save" output="false" access="remote">
<cfargument name="obj" required="true" />
<cfscript>
return createObject("component", "$${DAO}").create(arguments.obj);
</cfscript>
</cffunction>

<cffunction name="deleteById" output="false"
access="remote">
<cfargument name="$${idt1}" required="true" />
<cfargument name="$${idt2}" required="true" />

<cfset var obj =
getById(arguments.$${idt1},arguments.$${idt2})>
<cfset createObject("component", "$${DAO}").delete(obj)>
</cffunction>

terça-feira, fevereiro 19, 2008

Scribble Pad no Cfeclipse, como instalar...

Para quem não sabe o que é esse Scribble Pad e como utilizá-lo. Trata-se de uma maneira limpa e fácil de realizar pequenos testes sem ter que criar algo como teste.cfm.. O Scribble Pad faz justamente isso, disponibiliza uma página .cfm para você realizar qualquer tipo testes sem ter que misturar com sua aplicação em produção.

Para instalar:

1. Crie um novo projeto CFML chamado Scribble;

2. Dentro do projeto, crie um arquivo chamado Scribble.cfm;

3. Clique no menu Window --> Preferences, entre em: Cfeclipse -->Scribble Pad

3.1) Na caixa "File name to use as scribble pad" entre Scribble.cfm

3.2) Na caixa "Project to use for scribble pad." entre Scribble

3.3) E em "URL to scribble file." coloque o endereço (http://...) completo para o arquivo


Pronto, agora quando você clica no ícone Load Scribble Pad (F8) é aberto automaticamente a página ScribblePad.cfm e abaixo, no Browser View do eclipse ela é carregada.

Fonte: How to setup the CFEclipse Scribble Pad

terça-feira, janeiro 15, 2008

UDF Coldfusion para converter quebra de linha

Hoje eu tive que desenvolver uma UDF em Coldfusion para resolver esse pequeno problema. A UDF por sua vez faz o seguinte converte o código ASC que representa quebra de linha para o formato de exibição em HTML, no caso <br />.


<cffunction name="converteQuebraDeLinha" returntype="string"
output="false" hint="Converte código ASC de quebra de linha

para <br />">

<cfargument name="s_texto" type="string">

<cfscript>

result = reReplace(arguments.s_texto, chr(13) & chr(10), "<br/>", "ALL");

result = reReplace(result, chr(13), "<br />","ALL");

result = reReplace(result, chr(10), "<br />","ALL");

</cfscript>
<cfreturn result>
</cffunction>

quarta-feira, dezembro 26, 2007

COOP um framework que pensa como o coldfusion

Como já tinha falado num post anterior, o COOP é um framework coldfusion que trabalha com em conjunto com qualquer framework que você já utilize, ele te da a capacidade de simplificar seu código separando completamente o processamento lógico da linguagem de marcação. Assim permite que o designer trabalhe na página de marcação enquando o desenvolvedor têm acesso completo à marcação através de uma estrutura orientada a objeto.

Se você gosta de utilizar uma arquitetura MVC em seus projetos, muito provavemente
você vai adorar COOP. Ele foi feito através de uma mistura de conceitos de custom tags e do emparelhamento de CFC às páginas, onde este CFC é chamado co-processor, que da origem ao nome COOP, ele trabalha lado-a-lado com a página de marcação.

John Farrar fez uma apresentação em 29/11/2007 no Coldfusion Meetup Group.
Reunião URL: http://experts.acrobat.com/p75325859/
Duração: Apróx. 1 hora

Foi apresentado os novo recursos disponíveis neste release do COOP, entre eles:

* integração muito fácil com biblioteca js AJAX
* Tecnologia para manipular conteúdo integrado e adminitrar inclusões limpas de JS e CSS
* Alguns exemplos será demonstrado que não são formas orientada, de forma alguma,
- JQuery exemplo de cantos arredondados
- TinyMCE Editor integração (com coisas como esta que você não tem que esperar a próxima versão do ColdFusion para uma atualização!)
* Como é que esta é uma ótima ferramenta prototyping
* É mostrado como separar completamente o processamento da marcação (Este é o coração do que impulsiona COOP)

Já está programado outra apresentação para o dia 9 de janeiro de 2008 as 10 horas (horário de brasília), John vai mostrar como desenvolver aplicações utilzando COOP.

Fiz o download desta atualização no RiaForge e implementei um sistema administrativo com vários formulários utilzando COOP e jQuery. Tenho que admitir que tive um pouco de dificuldades na integração com o jQuery mas no final tudo funcionou e a aparência, e organização do sistema ficou ótima, as páginas com os formulários ficaram enxutas e de fácil manutenção até para um leigo. Cada formulário possui sua página de marcação (.cfm) e sua página cooprocessada (.cfc) que trabalha junto na mesma pasta, onde ficam todas as consultas de eventos, propriedades e definições dos campos.

A documentação está disponibilizada online neste endereço: http://www.sosensible.com/bundles/products/coop/docs/



terça-feira, outubro 02, 2007

Projeto COOP

Código espagueti nunca mais... Este framework em Coldfusion permite separar praticamente toda a linguagem de marcação(tags) das regras de negócio (processamento lógico), este framework é muito útil e fácil para trabalhar com o processamento de formulários em HTML.

Fiz alguns testes no meu ambiente de trabalho, funcionou perfeitamente, agora vou começar a utilizar em um pequeno projeto onde existe muitos formulários.

Mais informações acesse a vídeo conferência

Vídeo rápido no YouTube

Autor: John Farrar

Licença: Apache License, version 2

Download: Riaforge

quinta-feira, setembro 06, 2007

Estruturas complexas em campos de formulário

Brian demonstra no artigo do seu blog, como utilizar estruras complexas tipo array e struct implicitamente nos campos de formulário. Muito útil e prático..



Implicit Creation of Arrays and Structures from Form Fields



E depois deste artigo você pode baixar o projeto opensource no riaforge em:
Form Utilities CFC


clipped from www.briankotek.com
<input name="user2.id" type="text" value="user2"><br />
<input name="user2.name" type="text" value="user2"><br />
<input name="user2.password" type="text" value="user2"><br />
<input name="user2.permission[2]" type="text" value="user2.permission[2]"><br />
<input name="user2.permission[1]" type="text" value="user2.permission[1]"><br />
<input name="user2.category.11" type="text" value="user2"><br />
<input name="user2.category.8" type="text" value="user2"><br />
<input name="user2.userType" type="text" value="user2type1"><br />
<input name="user2.userType" type="text" value="user2type2"><br />
blog it

quarta-feira, julho 04, 2007

Plum

Já existe faz um bom tempo, mas apenas hoje eu pude testá-lo, para quem não conhece, trata-se de um aplicação com uma metodologia de desenvolvimento, o Plum (Practical Lightweight Universal Methodology) é um IDE para windows standalone que se conecta com o banco de dados e gera código para gerenciar os dados em Coldfusion, sem ter que escrever nenhuma linha do código fonte. Você pode baixar uma versão tryout, mas depois que expirar verifique a licensa.





No início eu achei muito legal, mas depois fui mudando de idéia gradativamente, o IDE Plum gerou o código CF bacaninha, funcionou beleza, mas dai você cai na real que ele só faz isso, e se você precisar implementar algo diferente, ai que a porca torce o rabo... Em resumo, eu achei melhor não utilizar o Plum (não gosto de ficar amarrado).. Mas para quem precisa de algo pronto e rápido talvez ele seja a solução.

terça-feira, julho 03, 2007

Project Tracker

Projeto opensource muito bem desenvolvido, para gerenciamento de projeto de software. Eu particularmente gostei muito e estou usando em meus projetos. Fiz algumas traduções para português para faciltar o uso de outras pessoas. Estou rodando ele aqui em CF7 com SQLServer 2000, mas é compatível com CF6,7,8 (Scorpio) ou Blue Dragon, e pode ser usado em MySql ou SQLServer.



O autor do projeto é Joe Danziger

O projeto está disponível para download em RIAForge

quinta-feira, março 30, 2006

Melhores práticas em Coldfusion

As melhores práticas de desenvolvimento em Coldfusion recomendadas por Benoit Hediard. Ele exemplifica a melhor utilização das UDFs, CustomTags, CFCs e ainda adiciona Pagelets. Na minha opinião era um ótimo conteúdo.

Pena que ele retirou do ar, segue o antigo url: http://www.benorama.com/coldfusion/

Framework Ajax JSMX

Para desenvolvimento fácil utilizando Ajax, para quem usa CF, pode utilizar componentes CFC com o framework.

JSMX URL: http://www.lalabird.com/

terça-feira, setembro 06, 2005

Cfeclipse

Excelente plugin para o Eclipse, permite o desenvolvedor trabalhar com Coldfusion no Eclipse.

• Se quiser saber mais acesse o site oficial CFEclipse.

• Para participar da lista de discussão sobre CFEclipse.