jueves, febrero 10, 2011

Crear Excel con Coldfusion

He mirado este tema varias veces y casí siempre terminé haciendo un simple csv.

A veces era necesario hacer un csv con "," y otros con ";", dependiendo del ordenador, así que busqué otra forma y terminé haciendo un .xls en formato excel.



SELECT * FROM Empleados ORDER BY Nombre







MiNombre
MiNombre
2011-02-01T11:22:33Z
2011-02-01T11:22:33Z
MiEmpresa
12.00














Nombre
Apellido
Email
Fecha Incorporacion
Datos



#Nombre#
#Apellidos#
#email#
#DateFormat(fechaincorporacion,"yyyy-mm-dd")#T00:00:00.000
#datos#








viernes, octubre 29, 2010

Taller de Coldfusion 9

Claude Englebert, Adobe ColdFusion Product Specialist, va a hacer un taller de ColdFusion 9 en Barcelona, el 15 de noviembre de 14:00 a 17:00.

jueves, septiembre 02, 2010

Twitter y OAuth

A partir del 1 de septiembre, Twitter obliga a sus usuarios del API conectar con OAuth, en vez del sistema antiguo de conectar con el usuario y contraseña.

La verdad, para que funcionara en Coldfusion, no fue tarea facil pero gracias a un par de blogs le he conseguido.

1. Registra tu applicación con Twitter aqui y guarda los dos valores Consumer Key y Secret. Yo lo guarde en una base de datos.

2. Descarga Twitter4J , es facil instalar, es solo copiar twitter4j.jar en C:\ColdFusion8\lib o tu equivalente y después reinicia CF.

3. Esta parte, solo hay que hacerlo UNA VEZ, para conseguir 2 claves más.

a) Crea un archivo IniciarTwitter.cfm con el codigo siguiente. (Este es el archivo que insertas en Call Back URL, cuando creas la applicación en Twitter en el paso 1)


<cfparam name="Url.oauth_token" default="">
<cfquery name="qTwitterData" datasource="ds">
SELECT TwitterCKey, TwitterCSecret
FROM TwitterData
</cfquery>
<cfif qTwitterData.TwitterCKey NEQ "" and qTwitterData.TwitterCSecret NEQ "">
<cfset TwitterObject=CreateObject("java", "twitter4j.Twitter")>
<cfset TwitterObject.setOAuthConsumer(qTwitterData.TwitterCKey ,qTwitterData.TwitterCSecret)>
<cfif Url.oauth_token EQ "">
<cfset RequestTokenObject=TwitterObject.getOAuthRequestToken()>
<cfset Session.RequestToken=RequestTokenObject.getToken()>
<cfset Session.RequestTokenSecret=RequestTokenObject.getTokenSecret()>
<cflocation url="#RequestTokenObject.getAuthorizationURL()#" addtoken="No">
<cfelse>
<cfset AccessTokenObject=TwitterObject.getOAuthAccessToken(Session.RequestToken,Session.RequestTokenSecret)>
<cfquery name="qInsertarTwitterData" datasource="ds">
UPDATE TwitterData
SET TwitterAccessToken='#AccessTokenObject.getToken()#',
TwitterAccessTokenSecret='#AccessTokenObject.getTokenSecret()#'
</cfquery>
</cfif>
</cfif>


b) Basicamente, lo que hace este código es usar tus Consumer Key y Secret Key, y genera un Access Key y Access Token, y con los cuatro datos, ya puedes empezar a usar Twitter API.
La primera vez tienes que autorizar la cuenta de Twitter manualmente.

4. Con los 4 variable puedes usar los muchos metodos de Twitter.
(CKey,CSecret,AToken,ATokenSecret viene de la base de datos donde grabaste en el paso anterior)


<cfparam name="Url.Message" default="">
<cfif Len(Url.Message)>
<cfset TwitterObject=CreateObject("java", "twitter4j.Twitter")>
<cfset TwitterObject.SetOAuthConsumer(CKey,CSecret)>
<cfset TwitterObject.SetOAuthAccessToken(AToken,ATokenSecret)>
<cfset Answer=TwitterObject.UpdateStatus(Url.Message)>
</cfif>

jueves, septiembre 17, 2009

Problema con CSS en Safari

Este post no tiene nada que ver con Coldfusion, sino con un problema de css en Safari.

Una web tenia el código siguiente para cambiar los links a naranja.

a:link {color: #ff6600; text-decoration: none;}
a:visited {color: #ff6600; text-decoration: none;}
a:hover {color: #ff6600; text-decoration: underline;}
a:active {color: #ff6600; text-decoration: none;}

Funcionaba en Firefox, IE y Google Chrome pero en Safari los links eran rojos!

Despúes de buscar mucho por la web, el problema era que en el <head> habia una referencia a un css externo que no existia. Esta referencia causó a Safari a poner los links in rojo!

lunes, agosto 10, 2009

RSS y XML en Coldfusion

Esta semana decidí poner las noticias de una web en RSS para que los visitantes podian subscribir. Les pongo el códgio para que puedan copiarlo.



<cfquery name="qNoticias" datasource="xxx">
SELECT *
FROM Noticias
ORDER BY NoticiasFecha DESC
</cfquery>
<cfsetting enablecfoutputonly="yes">
<cfsavecontent variable="mixml"><cfoutput><?xml version="1.0" encoding="iso-8859-1"?>
<rss version="2.0" atom="http://www.w3.org/2005/Atom">
<channel>
<title>Mi Titulo</title>
<link>#request.dominio#/rss.cfm</link>
<description>Mi Descripcion</description>
<language>en</language>
<atom:link href="#request.dominio#/rss.cfm" rel="self" type="application/rss+xml">
<cfloop query="qNoticias"><item>
<title>#NoticiasTitle#</title>
<link>#request.dominio##NoticiasUrl#</link>
<guid>#request.dominio##NoticiasUrl#</guid>
<pubdate>#DateFormat(NoticiasFecha,"ddd, dd mmm yyyy")# #TimeFormat(NoticiasFecha,"HH:mm:ss")# GMT</pubdate>
<description>#XmlFormat(NoticiasContenido)#</description>
</item></cfloop>
</channel></rss></cfoutput></cfsavecontent>
<cfcontent type="
text/xml">
<cfoutput>
#mixml#</cfoutput>

miércoles, agosto 05, 2009

XHTML valido con Flash

He estado intentando hacer todas mis páginas web con XHTML valido, pero uno de los problemas que tenia era Flash. El tag <embed> nunca ha formado parte de la estandardización del HTML según W3 http://validator.w3.org/docs/help.html#faq-flash

Leyendo el método Satay, hay una forma de poner flash en su web y manener las normas de XHTML.

<object type="application/x-shockwave-flash" data="movie.swf" width="400" height="300">
<param name="movie" value="movie.swf">
</object>