Mostrando entradas con la etiqueta ColdFusion10. Mostrar todas las entradas
Mostrando entradas con la etiqueta ColdFusion10. Mostrar todas las entradas

06 julio 2012

ColdFusion para Desarrolladores en Java

Acabo de leer este post de Mike Nimer.   El hombre nos recuerda que "ColdFusion es Java".   ColdFusion no es un lenguaje propietario, algo inventado por Adobe (ni Macromedia ni Allaire), sino una colección de librerias Java, JSP, y otro montón de cosas para aprovechar también jQuery y HTML5.   Por eso es que parece un lenguaje en sí mismo, pero no deja de ser Java.  Adobe ha utilizado una gran cantidad de librerias Open Source y ha adaptado esas funcionalidades a JSP.  Hay un compilador en tiempo de ejecución que traduce de ColdFusion a Java, y también tenemos servlets montados dentro de un Class Loader modificado.  
En el servidor de ColdFusion hay también algunas otras tecnologías de Adobe incluidas, así que el paquete que se obtiene al comprar una licencia de ColdFusion es muy completo.

Ahora bien, lo que yo no sabía es que, si bien por algún tiempo se ha podido integrar código de Java dentro de una aplicación ColdFusion, ahora, con CF10, se puede incluir código ColdFusion dentro de una aplicación Java !!!!.    En ese sentido, un desarrollador de Java puede entender a ColdFusion como una libreria más.

Y las ventajas de ésto para un desarrollador Java?:


  • Integracion con PDF:  ColdFusion maneja muy bien lo que es crear PDF en base a un HTML.  Por esta función nada más, ya se justifica la compra de una licencia de CF Standard, pues es más económica que muchas librerias de PDF para Java (o .NET), y de mejor resultados.   Pero además de imprimir un HTML a PDF, tiene capacidad de crear PDF y manipularlos.  (CFPDF) 
  • Query de Queries.  Parece que no hay otras librerias o servidores que permitan hacer una consulta a un dataset junto con otra consulta de base de datos.  Es decir, poder unir los resultados de una consulta realizada en MS-SQL con los datos obtenidos de otra consulta en ORACLE y después filtrarlos.  Y retornar el resultado como un dataset.
  • Encriptación:  la herramienta de encriptación de ColdFusion es de lo más poderoso que hay.. utiliza la libreria RSA BSafe Crypto-J con la que se obtiene encriptación FIPS-140 Compliant y NSA Compliant .........
  • Manejo de documentos: CF tiene una sola función (CFFILE) para manejo de FTP, manipulación de documentos, ZIP, y ahora también un espacio "virtual" para almacenamiento de documentos.
  • Manejo de imágenes:  CF tiene CFIMAGE que si bien ofrece las mismas funcionalidades que Java, lo hace por medio de una libreria de funciones simplificadas.   Creación de captcha, redimensionado de imágenes, marcas de agua, etc.
  • Indexación y búsqueda utilizando Apache Solr.. no hay mucho que hacer, solo usarlo.
  • Correos:  adaptando las librerias de Java, ColdFusion puede enviar 2 millones de correos por hora.  Además permite conectividad con Exchange, con POP y con IMAP
  • Integración con MS-Office:  Tiene funcionalidad para crear presentaciones Power Point y para llenar hojas de datos Excel. 
  • Integración con .NET.  una misma aplicación que utilice código en ColdFusion, Java y .NET ?.   Una de las funciones más interesantes para un desarrollador de Java sería la posibilidad de permitir que la aplicación Java autentique a los usuarios en los dominios de NT de una red Microsoft. 
  • Reportes:  utiliza la libreria de Jasper Reports. 

02 julio 2012

Múltiples Instancias de ColdFusion: Cómo obtener el nombre de la instancia ?

Esto es útil cuando uno corre múltiples instancias de ColdFusion, si uno tiene un balanceo de servidores por ejemplo; resulta útil saber en cuál instancia está corriendo mi código.

En CF MX a CF 9, como estamos montados sobre JRUN, esto se hacía así:

<cfdump var="#createobject("java","jrunx.kernel.JRun").getServerName()#">

Pero en CF10, como estamos sobre Tomcat, la cosa es así:

<cfdump var="#createobject("component","CFIDE.adminapi.runtime").getinstancename()#">

para más información pueden leer a Charlie Arehart

29 junio 2012

Inicializar un QueryNew con datos en CF10 (y 9.02)

En un post original de Matt Gifford leí sobre la nueva sintaxis de QueryNew que existe desde CF9.02 y CF10.

Los que somos más viejos en esto, nos acostumbramos a que si queremos llenar de datos iniciales un objeto tipo query definido en tiempo de ejecución, teníamos que popularlo dentro de un ciclo, con un QueryAddRow y luego QuerySetCell en cada vuelta del ciclo.

O podemos hacerlo ahora con la funcionalidad extendida del QueryNew:


<cfscript>
qryPeople = queryNew(
'firstname, lastname, email',
'varChar, varChar, varChar',
[
{
firstname : 'Matt',
lastname : 'Gifford',
email : 'me@monkeh.me'
},
{
firstname : 'Dave',
lastname : 'Ferguson',
email : 'never@doingitwrong.com'
},
{
firstname : 'Scott',
lastname : 'Stroz',
email : 'angry@stackover.flow'
}
]
); </cfscript>


25 junio 2012

Recuperar la clave del CFIDE/Administrator de ColdFusion10

Parece que es muy sencillo recuperar o cambiar la clave del CFIDE/Administrator en Coldfusion10.  solo hay que ejecutar el .bat en la carpeta \ColdFusion10\cfusion\bin\ passwordreset.bat (.rsh para linux/mac).   Después de eso, hay que ingresar nuevamente al CFIDE/Administrator para crear una clave nueva.

19 junio 2012

Funcionalidad No Documentada de ColdFusion 10: Arreglos de Form Fields

El artículo original se lo leí a Raymond Camden.
Lo normal cuando se hace submit de un form en ColdFusion, el request que recibe el form scope, lo recibe como una estructura donde el FIELDNAME es el nombre del campo en el formulario, y NAME son los valores, separados con coma, digitados para ese campo.   El conflicto se hace cuando hay varios campos en el formulario que tienen el mismo nombre.  Tenemos casos como este:


<cfdump var="#form#"> <form method="post"> <input type="text" name="name"> <input type="text" name="name"> <input type="submit"> </form>


El ejemplo de Ray Camden dice:
Esto es lo que se recibe en la estructura si en un campo digitan RAY y en el otro CAMDEN.
Pero cómo interpretar si lo que se recibe es:
Qué es lo que digitó el usuario?.  Digitó CAMDEN,RAY en un campo y FOO en otro ?.. o digitó CAMDEN en uno y RAY,FOO en otro ?
Si por la razón que sea, no se nos permite utilizar distintos nombres de campo para cada entrada, entonces ColdFusion 10 ofrece una solución muy sencilla:
En el application.cfc incluimos
this.sameformfieldsasarray=true;
de aquí en adelante, un submit con el anterior nos retornará, en la estructura bajo NAME, un arreglo con todos los valores digitados.  
No lo he probado.. por favor me cuentan como les va.