viernes, diciembre 02, 2005

Articulo sobre Generics

Mi articulo sobre Generics salio en la revista .code de octubre.

slds

martes, octubre 04, 2005

Merrimack I - EncryptBinary()


Una de las nuevas funciones disponibles desde la ultima actualizacion de ColdFusion (Merrimack) es la funcion EncryptBinary utilizada para encryptar datos binarios utilizando varios algoritmos.

El siguiente fragmento de código muestra un formulario similar al de la figura que permite seleccionar el algoritmo y encriptar el texto ingresado utilizando el algoritmo seleccionado.



<!---
EncryptBinary: Esta funcion encrypta datos binarios utilizando un algoritmo especifico.
Categoria: Funcion de seguridad
Sintaxis: EncryptBinary(bytes, key[, algorithm[, IVorSalt[, iterations]]]))
Algoritmos soportados: CFMX_COMPAT, AES, BLOWFISH, DES, DESEDE
--->

<cfparam name="result" default="">
<cfparam name="form.TextToEncrypt" default="">
<cfparam name="cfmxcompatKey" default="ClaveUtilizadaParaElAlgoritmo_CFMX_COMPAT">
<cfparam name="form.AlgoritmosDisponibles" default="AES">

<!--- Algoritmos --->
<cfset algorithm = ArrayNew(1)>
<cfset algorithms[1] = "CFMX_COMPAT">
<cfset algorithms[2] = "AES">
<cfset algorithms[3] = "BLOWFISH">
<cfset algorithms[4] = "DES">
<cfset algorithms[5] = "DESEDE">

<cfform action="index.cfm" name="frm1" format="flash">

<cfinput type="text" name="TextToEncrypt" width="300" label="Texto a encryptar" value="#form.TextToEncrypt#"> <br />

<cfselect name="AlgoritmosDisponibles"label="Algoritmos" width="200">
<cfloop from="1" to="#ArrayLen(algorithms)#" index="i">
<cfif algorithms[i] eq form.AlgoritmosDisponibles>
<cfoutput>
<option value="#algorithms[i]#" selected>#algorithms[i]#</option>
</cfoutput>
<cfelse>
<cfoutput>
<option value="#algorithms[i]#">#algorithms[i]#</option>
</cfoutput>
</cfif>
</cfloop>
</cfselect>

<!---
Cuando utilizamos CFMX_COMPAT no se puede utilizar la funcion generateSecretKey para
generar una clave.
--->
<cfif form.TextToEncrypt neq "">

<cfif form.AlgoritmosDisponibles eq "CFMX_COMPAT">
<cfset result = encryptBinary(form.TextToEncrypt,cfmxcompatKey, form.AlgoritmosDisponibles)>
<cfelse>
<cfset result = encryptBinary(form.TextToEncrypt,generateSecretKey(form.AlgoritmosDisponibles), form.AlgoritmosDisponibles)>
</cfif>

<cftextarea name="showResult" label="Resultado" width="300" height="100" value="#BinaryEncode(result,'hex')#"/>

</cfif>

<cfinput type="submit" name="Submit" value="Probar">

</cfform>

Nueva direccion parra CFEclipse update

Si utilizas CFEclipse, se acaba de informar de la nueva direccion de actualizacion que incluye la version 1.2. La direccion es www.cfeclipse.org/update.

jueves, septiembre 29, 2005

Merrimack

La ultima actualizacion de ColdFusion lleva el nombre de codigo Merrimack. Los interesados vean http://www.macromedia.com/devnet/logged_in/dcooper_merrimack.html?trackingid=CCOL. Si bien la actualizacion agrega soporte para Mac OS X, trae consigo un monton de features.

Macromedia recomienda a todos la actualizacion a Merrimack. El sitio web promete mejoras en la performance, estabilidad y seguridad. Merrimack incluye tambien los hot fix previos, por lo tanto si aun no instalo los ultimos, esta es quizas la mejor opcion.

Aun no descargo Merrimack (voy por el 23%), mas info pronto.

miércoles, septiembre 21, 2005

Tipos inferidos

C# 3.0 implementa inferencia de tipos. Esto es, la posibilidad que un tipo sea resuelto en funcion del contenido que lo inicializa.

Asi, en vez de escribir:

int a = 5;
string saludo = "Hola !";

podemos escribir:

var a = 5;
var saludo = "Hola !";

con los mismos resultados.

El ejemplo del Hands-On Lab C# 3.0 Language Enhancements muestra como utilizar dicha caracteristica:


class Program
{
static void Main(string[] args)
{
InitAndPrint();
Console.ReadLine();
}

static void InitAndPrint()
{
var i = 5;
var s = "Hello";
var d = 1.0;
var numbers = new int[] {1,2,3};
Console.WriteLine("i: " + i);
Console.WriteLine("s: " + s);
Console.WriteLine("d: " + d);
Console.WriteLine("numbers: ");
foreach(int n in numbers) Console.WriteLine(n);
}
}


El tipo var indica al compilador que infiera el tipo de las variables desde el tipo estatico de la expresion utilizada para inicializar la variable. Esta caracteristica toma su real importancia cuando tratamos con tipos anonimos

object UnTipoAnonimo = new {nombre="Gabriel", Apellido="Bulfon", edad=35};

asi, sera mas conveniente:

var UnTipoAnonimo = new {nombre="Gabriel", Apellido="Bulfon", edad=35};

Para poder utilizar el compilador de C# 3.0 es necesario descargarse el paquete C# LINQ Tech Preview de la pagina http://msdn.microsoft.com/netframework/future/linq/




martes, septiembre 06, 2005

VMWare es mejor para openSuSE

Finalmente descargue una version de evaluacion del VMWare Workstation Ed. Luego de la 2da instalacion (jeje, la primera fallo) todo anduvo bien.

La performance de openSuSE es superior sobre VMWare sin tocar nada.

Instale mono desde el bin.

Descargue xsp/mod_mono desde http://www.go-mono.com/download/suse-93-i586/. Finalmente pude crear con MonoDevelop una pagina web con codebehind (no tuve mas tiempo).

Espero poder hacer funcionar apache con mod_mono y buscar un entorno de desarrollo definitivo (MonoDevelop aun es una opcion).

Tambien descargue el MonoUML (aun no lo pruebo).

mas novedades pronto...

lunes, agosto 29, 2005

Desastre

Mi openSuSE93 se rompio al intentar modificar la configuracion del mouse !. Increible, todavia tengo pedazos desparramados por todo el piso :()

Intente por un rato repararlo...sin exito.

Descargue el VMWare WorkStation 5 para probar si corre mejor. Llevo dos intentos sin exito...Esto se esta poniendo dificil...

MIL

miércoles, agosto 24, 2005

IDEs para mono c# en linux

Probando IDEs para trabajar en linux me encontre con X-Develop. Me parecio excelente. Lastima que no exista una version gratuita, lo hubiese adoptado inmediatamente para mi proyecto.

La otra opcion es MonoDevelop. Esta version es gratuita y es la que apoya la gente de mono.

Aun debo probar Eclipse y el plugin de improve-technologies para c#.

En cuanto al core de mono no fue un obstaculo. OpenSuSE 9.3 lo trae integrado. Si no esta instalado es suficiente con darse una vuelta por Yast y agregarlo (solo minutos).

En resumen, parece que las opciones gratuitas estan entre Eclipse / C# y MonoDevelop.

openSuSE 9.3

Finalmente pude instalar openSuSE9.3. Al parecer los problemas que tenia tratando de instalarlo se provocaban por errores de lectura sobre los ISO (la instalacion la realice sobre las ISO mapeadas).

Ahora tengo SuSE funcionando sobre VPC2K4. Ni bien termine de instalar gnome (lo prefiero) comenzare a instalar mono.

mas info pronto...

sábado, agosto 20, 2005

GB.Net

GBulfon.Net

Instalando openSUSE 9.3

Estuve toda la tarde tratando de installar openSuSE9.3 sobre Virtual PC 2004 sin resultados.
Los errores van desde el cartel rojo hasta el "cuelgue" luego del segundo reboot.

Si alguien ha resuelto un problema similar me gustaria compartiera conmigo como lo ha hecho.

Debo instalar SUSE + MONO + MySQL + APACHE para un trabajo final de la facultad.

Espero tener novedades pronto...