martes, 28 de noviembre de 2006

Seguridad en SQL: Truncamiento (MSDN)

En el número de Noviembre de la excelente revista MSDN Magazine, hay un artículo dedicado a la prevención de un nuevo tipo de ataques de intrusión a Bases de Datos, la inyección de SQL por truncamiento. Es curioso que, cuando parecía que ya teníamos superados estos inconvenientes, resulta que aparecen otros nuevos. Y además, provocados por actualizaciones que se le efectúan al software.

Un ejemplo de esto, es éste párrafo del artículo: "una función REPLACE en cada variable de 25 caracteres puede devolver 50 caracteres cuando todos los caracteres son comillas simples. SP4 de SQL Server 2000 y SP1 de SQL Server 2005 truncan de forma silenciosa los datos si la variable no tiene búferes lo suficientemente grandes. Esto proporciona a los posibles atacantes la posibilidad de truncar la cadena de comando."

Supongo que estarán de acuerdo conmigo en que no es precisamente tranquilizador. De todas formas, lo más importante es que se nos muestra cómo identificar, y también cómo evitar, estos ataques. Además está traducido al cristiano. ;)

Enlace al artículo, aquí.

martes, 21 de noviembre de 2006

Boxing y Unboxing

Pues como ya hacía tiempo que no posteaba nada 'útil' en el blog, vamos a arrancarnos por peteneras con un didáctico articulillo sobre esta característica de .NET.

El Boxing no es otra cosa que convertir un tipo "valor" (Int, Double, Structs...) en un tipo "referencia". La utilidad de esto, se puede encontrar si en alguna ocasión necesitamos pasarle un parámetro, que por definición sería "por valor", a un método que requiere parámetros que son tipos por Referencia (esto puede ocurrir con más frecuencia de lo que pensamos, y entonces nos vemos obligados a sobrecargar nuestras funciones, o a crear nuevas -OJO no confundir con el modificador ref de C#, ByRef de VB.NET).

¿Cómo se hace el Box? Muy sencillo, tenemos la siguiente variable:


int i = 35; // Esas rimas fáciles...

Y queremos utilizarla en un método, que podría ser por ejemplo éste:

static void ManejaUnObjeto(object o)
{
...
}

Primer problema: el método recibe un objeto (un tipo por Referencia), y nosotros queremos pasarle un entero (tipo por valor)... Evidentemente no podemos incluir un ref en la llamada al método puesto que no está declarado para aceptarlo. ¿Solución? Nada mejor que "convertir" esa variable, precisamente en un objeto (la Madre De Todos los tipos por Referencia). Así conseguimos pasarle la variable al método:

object objEntero = i;
ManejaUnObjeto(objEntero);

Segundo problema: Ya tengo la variable (o algo parecido) dentro del método. ¿Cómo demonios la utilizo?

static void ManejaUnObjeto(object Objeto)
{
int j = int(Objeto);
}

Para poder utilizar el valor correctamente, debemos hacer el "Unboxing" del parámetro, que no es otra cosa que un Cast al tipo de dato correspondiente. Pero ojo, porque el tipo DEBE ser el mismo de la variable original:

static void ManejaUnObjeto(object Objeto)
{
double j = double(Objeto); // Esto pega un petardazo.
}

Tenemos dos soluciones para ésto: O bien interceptamos la excepción con un try...catch(InvalidCastException) o bien nos aseguramos de que el tipo sea el esperado (es más elegante esta opción, por supuesto):

static void ManejaUnObjeto(object Objeto)
{
if(Objeto is int)
{ int j = int(Objeto); }
}

Otro aspecto a tener en cuenta es cuando le pasamos a ese método un tipo definido por nosotros:

// Definimos esta estructura (recordar que es tipo por VALOR,
// al contrario que la Clase)

struct Estructura
{
public int i, j;
}

// Definimos dentro del Main una variable de ese tipo y la
// pasamos a un método

static void Main(string[] args)
{
Estructura struc;
struc.i = 10;
struc.j = 20;
MetodoEstructura(struc);
}

Vemos aquí que no hemos hecho el Box, es decir, no hemos convertido la estructura en objeto. Esto es perfectamente válido y no es mucho problema, en principio. Por regla general, .NET hace el Boxing automáticamente cuando se encuentra que pasamos un tipo por Valor a un método que espera un objeto ("vaya, ¿entonces para qué lo explicas?" Pues porque nunca está de más saber las cosas :P ).

Proseguimos con el código anterior. Vamos ahora a escribir el método que recibe y utiliza esta estructura:

static void MetodoEstructura(object Objeto)
{
Console.WriteLine("Valor 0 {0}, Valor 1 {1}", Objeto.i,
Objeto.j);
}

Este método ni siquiera compila. ¿Motivo? Que la clase System.Object no tiene ningún miembro llamado 'i' o 'j', y aunque el compilador es capaz de hacer el Box automático del parámetro de entrada, NO hace la acción inversa. Hemos pues de proceder al Unbox manual:

static void MetodoEstructura(object Objeto)
{
// Ahora si...
if(Objeto is Estructura)
{
Estructura s = (Estructura)Objeto;
Console.WriteLine("Valor 0 {0}, Valor 1 {1}", s.i, s.j);
}
else
Console.WriteLine("No has enviado una Estructura!");
}

Una cuestión a tener en cuenta es que las operaciones de Box y Unbox, como cualquier Cast, consumen algo de tiempo de proceso y si se utilizan con demasiada frecuencia, el rendimiento de nuestra Aplicación podría verse afectado (podría). Sin embargo desde la versión 2.0 de la plataforma hay una posible solución a esto, y es el uso de los "nuevos" tipos genéricos (parecido al Variant de toda la vida de los que conocemos Delphi, jeje :P ... Sólo que en principio el uso del tipo Variant en Delphi SI penaliza el rendimiento, y los genéricos en .NET, al parecer, no lo hacen).

miércoles, 15 de noviembre de 2006

CodeGear?? Sí hombre, los del Delphi...

Acabo de leer en el Blog de Rafael Ontivero, que al final en Borland se han tomado al pie de la letra aquello de: "Ni lo uno ni lo otro, sino todo lo contrario". Que de lo de vender la División de Herramientas de Desarrollo, nada de nada (no encontraron un "comprador adecuado", dicen). Pero que tampoco se la quedan, y crean esa "nueva empresa", con ese "nuevo nombre" (y la web es... escueta, por decir algo).

O sea, que había que hacerlo como fuese, pero si de paso se llevaban unos milloncejos pues mejor que mejor. Con lo cual uno de mis temores desde hace tiempo, se confirma: A Borland le "sobraba" su división de Desarrollo. Borland prescinde de quien hizo de Borland lo que hoy es: Los desarrolladores. Borland ha visto una posible gallina de los huevos de oro en dirigir sus productos a gente que por lo general no tiene ni peregrina idea de software (Directivos, etc). Vale, yo entiendo que es más factible cobrar muchísimos miles de dólares por un producto diseñado para que un stakeholder piense que controla la información, o crea que sabe diseñar una aplicación de Software (ah, bendito UML...), que "sólo" unos pocos miles por una herramienta de desarrollo que lleva ya varios años caduca, obsoleta y que la han superado por todas partes... y que encima tus clientes lo saben, porque saben de qué va el tema.

Una cosa que no termino de entender, es ese empecinamiento en mantener la marca Borland para herramientas que no tienen nada que ver con el mundo del desarrollo, cuando PRECISAMENTE toda la vida de Borland como empresa ha sido para y por los desarrolladores. Desde hace más de 15 años, decir "Borland" equivalía a decir "Herramientas de Desarrollo". O mejor dicho: "Las MEJORES Herramientas de Desarrollo". Tirar ésto por la borda, y ningunear a los MILLONES de fieles desarrolladores que con orgullo nos definíamos como "Borlanders", tildándolos como bien dice Rafael de "mierdecillas, ínfimos seres privilegiados capaces de usar sus fantásticas herramientas", a mí me parece el mayor error de esta empresa. Y ha cometido unos cuantos, y gordos, en estos últimos años (¿Alguien recuerda aquello de Inprise?).

Pues, y ésta es sólo mi humilde opinión, podrían haberse quedado con el nombre Inprise para nombrar a la división de Herramientas de gestión de Proyectos (ALM); que ya les venía MUY bien para el lema que tenía Inprise (Integrating the enterprise), y "cederle" el nombre Borland a lo que SIEMPRE había sido Borland. Habría sido sencillamente perfecto.

Pero no, tenían que hacerlo de esta manera, que sólo se me ocurre calificar de... triste.

martes, 14 de noviembre de 2006

The .NETrix ya es la Nº 11 en Google!!

Hoy me he llevado una gran alegría: Resulta que se me ha ocurrido buscar en Google "Netrix", así tal cual... y cuál no sería mi sorpresa que este blog sale en el número 11 de la lista de resultados. O dicho de otra manera (que suena aún mejor :P), el Primero de la segunda página. El total de resultados que devuelve Google para la palabra "Netrix" es de más de 480.000 y hace no mucho (tres o cuatro meses) no figuraba ni en los 500 primeros... así que, creo que tengo muchas razones para estar tan contento :)

Y si encima busco sólo los resultados en español... ¡¡el cuarto lugar absoluto!! uff! Lo dejo ya, que me estoy poniendo burro xDD

Saludos y GRACIAS a los lectores y visitantes de esta humilde página. :)

lunes, 13 de noviembre de 2006

Internet Explorer 7, descarga ya en castellano

Bueno, pues algunos días después de la liberación oficial de la versión final de IE7 en inglés, nos llega hoy la oportunidad por fin de descargárnoslo en español.

Por cierto no quisiera hacer leña del árbol caído, pero es que a veces no sé si lo hacen aposta o qué. Me refiero a la frase que puede leerse en la home de Microsoft Ibérica al respecto de esta noticia: "Actualice sin miedo".

De verdad, yo creo que a alguien dentro del Departamento de Márketing, o Comunicación o lo que corresponda, de ésta empresa, deberían cuando menos "recomendarle" que escoja mejor las palabras...

En fin. Ah otra cosita, recordad que sólo se pueden actualizar los usuarios de Windows XP SP2 y Windows Server 2003 SP1.

martes, 7 de noviembre de 2006

Liberada oficialmente la versión 3.0 de .NET Framework

Hoy 7 de noviembre ha sido oficialmente liberada la versión 3.0 (anteriormente conocida como WinFX) de la plataforma .NET, y se puede descargar, en inglés de momento, desde este enlace (el Runtime) y este otro (el SDK).

Podéis también visitar la página principal de la Plataforma, hay más enlaces, por ejemplo a las extensiones para VS2005 de WWF (Windows Workflow Foundation), información sobre las nuevas tecnologías como CardSpace, y otros.

miércoles, 25 de octubre de 2006

Windows para automóviles...

Hace poco me enteré de que existe una versión de Windows destinada a vehículos. Y no puedo resistirme a publicar aquí una serie de mensajes que dicha versión de Windows muestra (según las malas lenguas, eso sí :P ) de tanto en tanto:

- (Te acabas de dar un leñazo a 120 KMh): Windows ha detectado una colisión. ¿Desea activar el airbag? [Aceptar] [Cancelar]

- (Tras otro leñazo): Se ha detectado un error al activar el airbag. [Reintentar] [Cancelar]

- Windows ha encontrado un problema y ha apagado el vehículo para evitar daños (y ha tenido que hacerlo en medio de una autopista de 6 carriles...)

- Windows Update: Encontrados e instalados nuevos controladores para los frenos. Reinicie el vehículo para que los frenos vuelvan a funcionar. (éste me encanta xDDDD)

- (Te equivocas de camino o bien no sigues las instrucciones del navegador): GPS Explorer ha encontrado un problema en la ruta. Pulse Aceptar para reiniciar (y entonces el coche coge y regresa al punto de origen).

- (Este hay que ponerlo en inglés para entenderlo): Windows has found new drivers for the vehicle. Do you want to replace the current drivers? Al pulsar OK salen, de no sabes dónde, unos hombres estilo Men in Black pero con polos de Microsoft que te sacan del coche, te apalean y luego cogen al primero que pasa y le meten en tu coche.


Saludos

viernes, 20 de octubre de 2006

La primera en la frente.

Get the new IE


Ayer se liberó, por fin, la muy esperada versión final de Internet Explorer 7. Microsoft pretendía apuntarse un tanto después de meses y meses de noticias, y como de costumbre el punto central de esas noticias era el de siempre: la seguridad. De hecho se le da tanta importancia, que es el lema principal de la campaña de promoción de Microsoft: "You wanted it easier and more secure".

Pues bien, tan sólo algunas horas después de anunciarse dicha liberación, los de Redmond reciben su primera 'torta': La primera vulnerabilidad se anunciaba en el conocido sitio Secunia. Y lo bueno es que esta vulnerabilidad se arrastra desde la versión 6 del Explorer.

Pues a ver quién aguanta a los "anti-sistema" a partir de ahora. Lo que yo no entiendo es que en Redmond hayan ignorado olímpicamente, por lo que parece, esta vulnerabilidad en IE6 hasta el punto de arrastrarla al IE7. ¿Así cómo quieres que te tomen en serio? Y claro, encima los que somos "pro-Microsoft" (o al menos así es como nos califican a los que no somos "anti-Microsoft", parece que la imparcialidad es una idea inconcebible para algunos) nos quedamos sin argumentos con los que rebatir muchas sandeces que nos toca escuchar. Hasta el punto, a veces, de pensar si no serán ellos, y no tú, los que mantienen la postura correcta.

En fin, a ver si espabilan...

viernes, 13 de octubre de 2006

Y... ¿cómo he llegado yo hasta aquí?

Leyendo un artículo en el blog de Jorge Serrano en el que "nos cuenta su vida", y siendo consciente de que la extensión de mi respuesta iba a ser excesiva, he preferido hacerlo aquí, y así aparte de como respuesta a ese artículo, queda aquí también como artículo independiente.

Vamos allá...

Nací en el seno de una familia humilde... bueno esto nos lo podemos saltar xDD. Mi primer contacto con la informática fue a través de una videoconsola, a la tierna edad de 11 añitos. La consola en cuestión era una Intellivision de la conocida casa de juguetes Mattel. Aqui en España no se vieron muchas, sin embargo en mi pueblo sí era muy conocida, junto con la Atari 2600 (Anécdota: sin embargo cuando vine a España, mi primer amigo del colegio, en 8º de EGB, casualmente la tenía. Y en 20 años es la única persona que he conocido aquí que la haya tenido). Cuando jugaba a aquellos primitivos juegos, me maravillaba lo que se podía hacer: ¡Ya no solo te limitabas a VER lo que salía por la tele, podías HACER que lo que se veía hiciera LO QUE TU querías y COMO TU querías! ¡podías INFLUIR en las imágenes!

Un par de años después (1984) justo antes de venir a España me apunté a mi primer curso de BASIC. Los ordenadores de la academia eran el no va más de la época: Apple II. Desde el primer día del curso, desde el momento que tecleé mi primer comando y le di al Return, supe que ESTO era a lo que me quería dedicar de mayor. Como "proyecto final" recuerdo que hicimos un juego de marcianos. Muy rústico sí, los pixels eran como garbanzos de grandes... pero era mío :)

Al llegar a España me informé de cuál era el panorama informático local, y afortunadamente elegí la opción buena: El Spectrum. El "grande", el de 48KB. 16KB para mí eran minucias. Empecé a aprender, me empapaba de todo lo que caía en mis manos. La revista Microhobby dio un curso de Assembler y yo me lo estudié enterito. Sí sí, con 15 añitos ya hacía juegos en assembler, con sus sprites, su gestión de interrupciones, etc. Por aquel entonces no existía aún el término "friki" pero yo creo que ya lo era. Yo y algunos más, vamos. Yo era de aquellos que prefería quedarse los fines de semana en casa tecleando antes que salir a "pillarla" a base de cervezas. Recuerdo que había una tienda donde nos juntábamos un montón de críos todas las tardes, en la tienda hacían copias de juegos y te las vendían a 500 "pelas" (eso SI era piratería).

Por avatares de la vida tuve que regresar temporalmente a Venezuela. Allí me apunté a otro curso, esta vez más "serio", de Ofimática (la de la época: WordStar, Multiplan, dBase III+...). Tuve la gran suerte de poder utilizar, aparte de los rústicos PCs de la época, una pequeña maravilla llamada Kaypro que corría el profesionalísimo sistema operativo CP/M. Me pasaba en aquella academia bastantes más horas de las estrictamente necesarias (en parte porque mi profesor a quien tanto debo, era otro auténtico friki e hicimos muy buenas migas), ello hizo que pudiese aprender programación "seria": Turbo Basic, Turbo Pascal, Clipper...

Al volver a la "vieja Europa" ya con 20 añazos a mis espaldas me puse a buscar curro y aquí fue donde hubo un punto de inflexión: Durante 10 años no trabajé de programador, sino de profesor de ofimática en las típicas academias "todo en uno" (mecanografía-inglés-informática), aunque tambien en un par de empresas medianas (una de ellas Microsistemes, filial de formación de IBM). Esto hizo que me desconectase totalmente del mundillo del desarrollo, aunque sí estuve al tanto de la evolución informática: En 1995 me conectaba a varias BBS con mi "meteórico" módem de 33600 bps y en 1996 era de los primeros españolitos en entrar a Internet, pero no a traves de ningún ISP nacional, sino de la norteamericana Compuserve. Tenian varios nodos (uno de los cuales afortunadamente en Barcelona, con lo cual la llamada era a precio local) y de alli te conectaban a servidores que tenian en Francia. Recuerdo haber usado como primer navegador el Mosaic, antes de probar el inefable Netscape. Pero de programación nada de nada. Recuerdo que intenté hacer algunos pinitos con el Visual Basic 3... pero me pareció malísimo. Terriblemente malo, vamos. Y yo al venir de un concepto de programación estructurada, me encontraba con que TODO era ya orientación a objetos. Hasta mi adorado Clipper se había pasado al "lado oscuro" de la OOP. Era todo complicadísimo. La sintaxis había cambiado del amigable dBase al críptico C++ (al que también habia intentado acercarme... sin éxito). Todo eso me desanimó profundamente y pensé que lo de la programación ya no era lo mío.

Más tarde entré a trabajar a una conocida empresa de seguros (a traves de otra empresa) como soporte telefónico. Alli daba soporte de la Aplicación corporativa a los comerciales de la empresa, que estaba desarrollada en Delphi. Este trabajo me hizo "enamorarme" de nuevo de la programación, gracias a ese magnífico, increíblemente productivo lenguaje, evolución de Turbo Pascal (y el "hermano mayor" de C#, que para algo el padre de las criaturas es el mismo ;) ). Corría el año 1998 y decidí que mi carrera profesional necesitaba un giro. Así, aprovechando que el 31 de diciembre de 1999 finalizó mi contrato en aquella empresa, empecé a trabajar de lo que siempre había querido. Y hasta el dia de hoy.

Bueno espero no haber aburrido al hipotético lector con semejante "ladrillo"... je je je. Espero que compartais en los comentarios vuestras vivencias.

martes, 10 de octubre de 2006

¿AJAX Limón o AJAX Pino?

Volvemos a la carga. Antes que nada, perdón por el título, pero si no hago el chistecito reviento. Realmente estaba buscando, para introducir este 'post', cómo decir que antes de AJAX existía xxxx (póngase aquí el nombre de algún arcaico limpiahogar y/o desinfectante: salfumán, lejía, ácido bórico aguafuerte...). Porque, al igual que en el mundo de los limpiadores, "nuestro" AJAX es simplemente algo que ya existía y que mucha gente utilizaba, sin que tuviese nombre conocido, ni se le diese bombo, ni se le considerase el remedio a todos los males del mundo. Un buen ejemplo lo tenemos en esta serie de artículos donde podemos ver una excelente muestra de "Remote Scripting" utilizando ASP 3.0, eso sí, de manera un tanto arcaica y acaso algo compleja. Se necesita además "habilitar" al IIS mediante una serie de ficheros que se le instalan, uno de los cuales sería el motor del scripting.

Para darle un "toque moderno" a las vetustas aplicaciones en ASP 3.0 que aún corren por ahí, no está nada mal. Aunque obviamente, no es comparable al "frescor" del auténtico AJAX (limón o pino, eso ya va a gustos).

miércoles, 19 de julio de 2006

Aplicaciones en 3 capas con ASP.NET

Si en algo se diferencian Borland y Microsoft (aparte del número de ceros que tienen sus cuentas de resultados, claro), es en la abrumadora diferencia de documentación disponible para nosotros, los desarrolladores. Que Borland en todos estos años dedicada a crear software "para programadores" no haya sido capaz de montar nada que se parezca (ni tristemente) a lo que ha construido Microsoft en, relativamente, muy poquito tiempo (léase MSDN) pues, sinceramente; me parece un poco "dejadez" por parte de la empresa de Cupertino. En los "años dorados" de Delphi, y de eso hace ya unos cuantos, se publicaban casi tantos libros del lenguaje de Borland como de Visual Basic. Y eso no es moco de pavo cuando te comparas con "la todopoderosa". Pero ahora... ¿alguien sabe decirme algún libro dedicado a Delphi 2006? Que no sea el de Marco Cantù, por favor, ese no vale. ;-)

Pero los señores de Cupertino, creo yo, se durmieron en los laureles y pensaron que con la literatura impresa había suficiente, y con el trabajo de algún que otro tercero, como el famoso Dr. Bob o bien el menos conocido Zarko en delphi.about.com, y otro par más, pues ya tenían cubierta la parte 'online' del tema.

Hasta que llegó Microsoft y su MSDN, claro. Y literalmente arrasó a Borland. Porque la cantidad de información que contiene MSDN, estoy muy convencido de que no basta una vida entera para leerla y asimilarla toda.

Y cuando se publica una inmensa, inacabable cantidad de información como la que contiene la MSDN, y aparte la igualmente abrumadora literatura impresa publicada, digo yo que debe ser relativamente sencillo caer en tópicos repetidos o que la calidad de lo que publicas sea más que justita. Pues no, todo lo contrario, en esta relativamente nueva serie de tutoriales sobre ASP.NET, la calidad de la información es muy alta. Sinceramente, 100% recomendable estos artículos-tutoriales para cualquier programador que toque ASP.NET, tanto si eres un recién llegado como si ya tienes experiencia. El título de la serie completa de articulos es 3-tier Architecture with ASP.NET 2.0

A disfrutarlos! :-)

lunes, 19 de junio de 2006

CodeCamp 06 - Vic

Llevo desde ayer domingo pensando qué escribir sobre este evento, y cómo hacer para que de cada tres palabras, una no sea un 'taco'. Vamos a ver si lo consigo.

Las primeras palabras (publicables) que acuden a mi cabeza para describir este evento, son: Estafa, engañabobos, mentira, decepción...
-¿¿Cómo??, estará el lector pensando. Bueno, me permito hacer un copy-paste del anuncio del evento:

"MSDN y Spain.NET patrocinan el CodeCamp, un evento de fin de semana dirigido a desarrolladores de software. Si eres inquieto, emprendedor, te gusta lo que haces y además quieres vivir de ello, te proponemos pasar un fin de semana en Vic, y compartir con gente como tú dos días donde sólo se hará una cosa: ¡escribir código!
Tendrás la oportunidad de aprender las últimas tecnologías que más se demandan en la actualidad, con ponentes muy cualificados y con carácter 100% práctico, sin transparencias ni adornos, sólo código."

Yo no sé si estuve en "otro" CodeCamp o qué, pero ni yo ni ninguno de los cerca de 200 asistentes (contados así a ojo) llegamos a escribir una sola línea de código. Sin transparencias ni adornos, dice... Qué cara tienen. Este CodeCamp no fue para nada distinto a cualquier otro evento que haya organizado Microsoft y al que yo haya asistido: El ponente de turno se limitaba a pasarte un Powerpoint por la cara, aderezado de tanto en tanto con alguna muestra de código (eso sí: el 90% eran code snippets que YA tenían guardados y preparados, con lo cual, verles teclear a ellos, pues muy poquito la verdad).

Hay que decir que el tema empezó francamente bien: David Carmona nos dejó a todos boquiabiertos con lo que se podía hacer usando simplemente XAML (y esto SI lo tecleaba él en vivo y en directo) y ni una línea de "código" (entendiendo por código, claro está, sentencias de C#, VB o lo que sea). Pero luego... ay luego.

Luego apareció un señor llamado Carlos Jiménez. Que no discuto que sea el experto Nº 1 en seguridad informática en España (no tengo motivos para pensar lo contrario), pero es que a este hombre no se le puede calificar de otra manera que no sea de charlatán. Y mientras más voy leyendo sobre él, más me da la impresión de que (aparte de todo lo inteligente que sea) no es otra cosa que un vendedor de crecepelo del siglo XXI. Para empezar, tuvo los santos arrestos de soltarse el moco de que él fue el inventor de los antivirus. Ahí es nada, y se quedó más ancho que largo. Que lo creó para combatir "el primer virus de ordenador", el Viernes13 según él, allá por el año 1988. No sé si por educación o por qué sería, pero me abstuve de preguntarle cómo podia venir diciendo semejante sarta de desfachateces. Ni el Viernes13 (realmente "Jerusalem") fue el primer virus "de ordenador" (fue el "Brain"), ni el Anyware fue el "primer antivirus", porque como mínimo el McAfee ya existía en 1987 (tengo aún en casa un disco de 5 1/4" que lo puede atestiguar).

Lo peor no es eso: Lo peor es que éste señor es un magnífico exponente de que "una mentira repetida mil veces acaba por convertirse en verdad". Si a todas las entrevistas que vas te llevas tu propio resumen de tu biografía (porque te la suelen pedir) y en ella destacas muy mucho en ella que fuiste el creador del primer antivirus, pues ya me dirás tú. Encima los "periodistas" que te entrevistan pues no deben tener ni puta idea y hala, a publicar sin contrastar nada. Con lo cual ahí lo tienes: Para el mundo entero ya eres el creador del primer antivirus, lo pone en todos los periódicos. La credibilidad de éste sujeto a partir de ése momento, para mí, es cero. Además LO MISMO que nos dijo a nosotros el sábado lo ha dicho ya antes en un montón de sitios. Que si "la profecia autocumplida", "la historia de los niños superdotados de Utah", que "si el GPS se equivoca quiero que se disculpe y recalcule por mí en lugar de hacerlo yo"... vamos, calcadito. Un tio que presume de haber simultaneado CINCO (!!) especialidades en la Carrera de Telecos debería ser algo más original, digo yo.

Miedo me da pensar que éste charlatán haya sido el encargado de diseñar el DNI electrónico. Ojo: no digo que no pueda ser realmente la persona más idónea. Eso sólo lo sabe él y los que mejor le conozcan. Pero a mí, lo que se dice buena espina no me da precisamente...

Y poco más hay que resaltar de éste evento. Me marché el sábado antes de que empezasen los partidos de fútbol (sinceramente pensé que estaría mejor en mi casa), ya con la idea fija de que "mañana va a venir Rita". Y así fue. Lástima, me perdí las disertaciones de Octavio Hernández y Dino Esposito. A la de Daniel Seara del sábado tampoco asistí, porque estaba perdiendo el tiempo (literalmente) viendo cómo me (nos) pasaban por la cara otro bonito Powerpoint presentando y describiendo Atlas. Craso error del que me arrepiento. Daniel Seara es la única persona con la que pude hablar cara a cara (y durante la comida), y de lo que menos hablamos fue de informática. Del resto de ponentes, no puedo dar una opinión (Daniel Carmona y Unai Zorrilla parecen muy majos, eso si). De los organizadores, sí puedo opinar: Gente más "sobrada" y más egocéntrica no la había visto en mi vida. Vamos, los del "polo de naranja" eran poco menos que la encarnación de Dios en la Tierra. Cometí la herejía de acercarme a uno de ellos, de buen rollito y tal y preguntando "Bueno, ¿habrá polo para todos no?". La respuesta, directa y concisa (sólo faltaba un eco divino de fondo): "Aquí no se dan polos". Pues muy bien hombre, pues yo para tí tengo un Frigo-dedo (pun intended).

Y paso de amargarme más la tarde. Que tengo faena.

martes, 23 de mayo de 2006

Dos excelentes hilos

La bitácora de Ian Marteens está últimamente muy movidita. Dos de los últimos hilos son, a mi juicio, especialmente interesantes: Uno es Gestores de Proyectos, donde, en los comentarios, se nombran varias soluciones al respecto; algunas como Visual Source Safe de Microsoft o el TeamSource de Borland, pero también otras más orientadas a Delphi (JediVCS, FreeVCS etc). El otro hilo que me parece más que interesante es
¿Está desnudo el emperador?. En este hilo se habla de la eterna discusión de si UML sirve o no sirve realmente para algo. La "tertulia" que se puede leer en los comentarios es apasionante.

miércoles, 17 de mayo de 2006

Firebird 2.0 casi listo

Bueno bueno bueno... y otra agradable sorpresita en el día de hoy: La gente de Firebird no para: Ayer dia 16 se liberó la Release Candidate 2 del Motor de Base de Datos, tanto para Windows como para Linux; que según dicen es más que probable que acabe siendo la versión Final (salvo que se cuele algun error mayúsculo inesperado) y también se encuentra disponible la Release Candidate 4 (depuradísima por tanto) del Proveedor de Datos (Data Provider) para .NET 2.0, implementación completamente nativa de la API de Firebird y escrita totalmente en C#.

Se presenta movidito el adelanto del verano... :-)

Liberada RC1 de SharpDevelop 2

SharpDevelop es el IDE OpenSource más popular para desarrollar en .NET, o por lo menos hasta donde yo tengo constancia. Está desarrollado por un grupo de programadores que se hacen llamar "IC#Code" ("I see sharp code"). Este IDE es bastante potente, la apariencia es muy similar a la de Visual Studio, tiene su propio generador de informes, soporta NAnt, NCover, NUnit, PInvoke y otros palabros por el estilo. Además soporta también varias plantillas de proyectos para Mono.

Hoy han liberado la Release Candidate 1 del IDE para la versión 2.0 de .NET.

El enlace a la web: http://www.sharpdevelop.net/OpenSource/SD/Default.aspx

jueves, 4 de mayo de 2006

MSDN Library de Mayo 2006, disponible

Pues eso, desde ayer se encuentra disponible para libre descarga la versión de mayo de 2006 de la MSDN Library. Entre el contenido actualizado hay información para el Visual Studio Team Foundation Server, SQL Server 2005, el SDK del Internet Information Server, etc. Son 3 ficheros .img para tostar en otros tantos CDs (1,8 GB aprox).
Fuente: WillyDev.net que por cierto ha vuelto a actualizar sus contenidos después de varios meses. Buena noticia para la comunidad de habla hispana sin duda ;)

lunes, 3 de abril de 2006

Anda, qué chulo, ¿y quién trabaja?

Como casi cada lunes, me dispuse a echarle una ojeada a los blogs del aún equipo Delphi de Borland, y me encuentro este post donde dicen que desde hace un año aproximadamente, los ingenieros del equipo andan enfrascados en una especie de "concurso" de a ver quién era capaz de hacer una especie de 'port' de la VCL a la plataforma más extraña posible y programar un compilador que la utilice. No voy a decir qué máquina fue la más estrafalaria donde consiguieron la proeza (para eso está el artículo original, jeje) pero sí nombraré al menos dos: Una PlayStation 2 (hasta aqui normal, si se ha conseguido hacer funcionar Linux se puede adaptar la CLX que es la version 'cross-platform' de la libreria)... y también en nada menos que un veterano Commodore 64. Creo que por mucho que os esforcéis no conseguireis ni imaginaros las frikadas que ha conseguido esta peña.

Pero claro... Cuando los programadores que trabajamos con este magnífico lenguaje (que eso nadie, nunca, jamás se lo podrá quitar) vemos que cada nueva versión del entorno de desarrollo es más pesada que la anterior (por poner una de las deficiencias que Delphi lleva arrastrando desde hace unos años) y de repente leemos cosas como ésta, pues qué quereis que os diga. A ver, desconozco el interés y la dedicación que habrán depositado los señores ingenieros en estos 'proyectos', y en principio según la complejidad de la plataforma a la que se quiere 'meter' la VCL, pues seis meses puede ser poco o mucho tiempo. Y que todo el mundo debe tener derecho a tener tiempo para su ocio es innegable; pero... o esta gente no tiene vida social y su "ocio" lo pasan en el mismo sitio y con la misma gente que su "vida laboral" (con lo cual veo peligrar la supervivencia de la especie programadorus informaticus puesto que a ver quién es la guapa que soporta a un friki de éstos)... o bien que los señores ingenieros de Borland tienen mucho, pero mucho tiempo libre.

Y además, se aburren. :)

miércoles, 29 de marzo de 2006

Hombre!

Leyendo los comentarios en un post del blog de Ian Marteens CommaNet, he visto uno que realmente me ha llamado la atención: Parece que en Microsoft son muy conscientes de la enorme cantidad de desarrolladores que aún trabajan (trabajamos) con los lenguajes y herramientas de Borland, y más concretamente Delphi. Tanto es así, que hay una página dentro del Visual Studio Developer Center destinada exclusivamente a informar y responder dudas que podamos tener con respecto al soporte a corto o medio plazo que Microsoft dé a los que aún desarrollamos para Win32/COM con Delphi.

Ya iba siendo hora, caramba... :-)

miércoles, 22 de marzo de 2006

Ya utiliza ud. SQL Server 2005?

¿Lo ha comprado, instalado y probado? ¿Le ha hecho ya el tuning para afinarlo y mejorar el rendimiento? ¿Cuánto lleva con él sin tocarlo? ¿Un mes, quince días...?

Pues vaya pensando ya en actualizarlo.

Está disponible para descargar el Service Pack 1 para SQL Server 2005 (atención, es la CTP o Community Technical Preview, es decir aún no es la versión oficial definitiva).

En Redmond esto ya debe ser una tradición xD

martes, 21 de marzo de 2006

Para qué sirve .NET, pues?

Pues no, no pretende éste ser un artículo introductorio de la plataforma; para ello ya existen multitud de sitios, tanto oficiales como "semi-oficiales", así como no oficiales, en donde se explica el tema muchísimo mejor de lo que yo sería capaz de hacerlo.
Todo lo contrario, el título de este post viene a colación de un extenso artículo en el que se viene a poner en duda la utilidad de toda la plataforma, no sólo ya de cara al desarrollador, sino en la propia Microsoft. Dice el autor entre otras cosas, que las sucesivas Betas y CTPs ("Community Technical Previews") de Windows Vista que han ido apareciendo, cuentan con cada vez menos ensamblados .NET entre los ejecutables y módulos del Sistema Operativo; de hecho relaciona el que WinFX se quitase de Vista a partir del PDC de 2003 con el hecho de que, a partir de la Beta que se presentó en esa feria, .NET ha dejado de formar parte del núcleo. Se apoya por ejemplo en que Windows Explorer, el ejecutable que hace de shell del sistema, antes del PDC de 2003 era una aplicación .NET y ya no lo es. Además nos "desvela" que muchas aplicaciones actuales de Microsoft no son, o no están desarrolladas, usando .NET, incluyendo SQL Server 2005 (que al parecer, según nos vendieron, estaba tan íntimamente ligado a la plataforma) e incluso el mismísimo Visual Studio.

La conclusión que saca este buen hombre es que Microsoft está "perdiendo la fe" en .NET (aunque por otro lado luego dice que "no ataca" a la plataforma y que es lo mejorcito que hay para desarrollar. Con amigos como éste...)

Las conclusiones que saco yo, es que este señor lleva toda la vida "desarrollando" (es un decir) en Visual Basic (el de toda la vida) y parece que no ha conocido nada más fuera de ahí (¿a alguien le suena el mito de la caverna?); es posible que si hubiese conocido otros mundos, mundos diferentes, se habría dado cuenta de qué es, para qué sirve y para qué fue pensada .NET en realidad. Personalmente considero que es inviable basar el core de un Sistema Operativo en .NET o en cualquier otra plataforma, por la sencilla razón de que un Sistema Operativo está tan íntimamente ligado al Hardware donde se ejecuta, que hacerlo así sería estúpido, se enlentecería TODO el sistema sin ninguna necesidad ni motivo, al ejecutarse servicios básicos y vitales del Sistema en capas que no son de bajo nivel. Habría que recordar en éste punto, que Windows empezó siendo un Shell gráfico para MS-DOS, y que sólo Windows NT se escribió desde cero, porque la línea de productos "domésticos" que terminaron con WindowsME, de una manera o de otra, y en mayor o menor medida, seguían basados en MS-DOS. Actualmente, .NET es también una extensión de las APIs Win32, pero quién sabe si para la versión 3 o 4 de la plataforma (cuando el sucesor de Vista, en el que nadie dude que ya se está trabajando, esté listo), se habrá conseguido basar un OS en la plataforma.

De todas maneras, el artículo es muy interesante, yo no digo lo contrario ;)

lunes, 20 de marzo de 2006

Visual Studio 2005 Trial

Hoy he recibido, por fin, el DVD con la versión Trial del Visual Studio 2005 Team Suite, que solicité hará unas tres semanas. El periodo de prueba son 180 días (6 meses), tiempo más que suficiente para, a mi juicio, evaluar en profundidad éste software.
No esperaba encontrar más que un DVD con la instalación del producto y sus accesorios, pero al abrir el pequeño estuche gris me encontré una, o mejor dicho tres gratas sorpresas: Aparte del DVD con el Visual Studio 2005 en sí, vienen además dos DVDs adicionales: Uno con la Beta 3 del Team Foundation Server (vale, hasta aquí era de esperar) y, éste es el que no esperaba, el SQL Server 2005 Enterprise Edition.

Y todo por el módico precio de 12 eurillos en concepto únicamente de shipping & handling. Una ganga señora!

Lo que me ha dejado un poco aturdido es uno de los requisitos que pide la "criatura": Un procesador de nada menos que 2 GHz (no sé que voy a hacer con mi AMD 1900, y de mi portátil Celeron a 1 mísero GHz mejor me olvido). Pero bueno, aparte de esto nada demasiado escandaloso: 384 MB de RAM, 2 GB de disco...

Intentaré encontrar un hueco esta semana para poder instalármelo, y probar sobretodo el Team Foundation Server y el control centralizado de código (por favor, que no sea como el antiguo Visual SourceSafe...).

403 Forbidden???

No sé qué le pasa a Blogger últimamente pero falla más que una escopeta de feria. De hecho el viernes estuve casi todo el dia sin poder siquiera entrar a ver el blog. Me salía el conocido mensaje de error HTTP 403 "No está autorizado a ver esta página". Manda webs, precisamente yo no estoy autorizado. Eso sí, he podido logearme tranquilamente, editar posts, cambiar parámetros (todo esto por probar más que nada); y aunque al principio al darle al botón de "Publicar" me salian errores de que "no se encuentran los archivos" (acojonado me quedé) y otras lindezas, al cabo de un par de minutos sí, puede publicar... Pero de ver luego el blog, nada de nada.

Una cosa muy curiosa, es que Internet Explorer te elimina de la búsqueda en la barra de direcciones una URL que te haya dado tres veces el error 403 (igualito que cuando Pedro negó tres veces a Jesucristo xD). Claro, yo empezaba a escribir la 't' de TheNetrix, luego la 'h', la 'e'... y no me aparecía nada. Bastante curioso.

Hoy lunes ya se ha solucionado el tema. Pero vaya, que falle ésto justo ahora que mi amigo Ian Marteens me iba a enlazar en su Blog...

En fin.

jueves, 9 de marzo de 2006

Cómo "reventar" un compilador.

Resulta que haciendo el mantenimiento de una aplicación Delphi que genera un informe en Excel (sí, esos, los favoritos de mis jefes) tenia que añadir una "mega-Select" (28 KB de texto, más o menos) y por no complicar el tema y hacerlo rápido, puse ésta a continuación de otra tanto o más grande, en el mismo Procedimiento. Al ir a compilar, me encuentro con que Delphi me saca éste mensajito:

Too many local constants. Use shorter procedures.

La explicación de la ayuda es que "Uno o más de sus procedimientos contiene tantas expresiones constantes de cadena, que exceden el límite interno del compilador. Esto puede ocurrir en código que se genera automáticamente. Para corregir esto, puede acortar sus procedimientos o declarar identificadores constantes en vez de usar tantos literales en el código".

Impresionante.

Me siento hasta orgulloso de haber podido "sacarle los colores" a este fabuloso compilador. Soy la leche! :-)

lunes, 20 de febrero de 2006

Borland is no more Borland (reloaded)

No conozco en profundidad la estructura interna de Borland, ni me preocupo demasiado en saber de sus "movidas" internas, es más últimamente ni me molesto en informarme de los nuevos productos o estrategias que adoptan. Soy (sí, aún) simplemente un feliz usuario y desarrollador de lo que de un tiempo a esta parte les ha dado por llamar "Entorno Integrado de Desarrollo" (o IDE para los amigos), concretamente Delphi, aunque no es el único producto de Borland que he usado; he utilizado Turbo Pascal, Turbo C... incluso Turbo Basic (Todos ellos bastante mejores que sus homólogos "Quick" de Microsoft). De hecho se puede decir que soy "Borlander" desde hace 15 años, cuando el "Quattro" me parecía bastante mejor hoja de cálculo que el Lotus 1-2-3 (y trabajando en MSDOS), y Sidekick era lo más de lo más en lo que a agendas se refería.

Comentarios nostálgicos aparte, digo todo esto por la noticia publicada ya oficialmente, y comentada en varios blogs, de que Borland quiere desprenderse de su línea de productos dirigida a desarrolladores, para lo cual está buscando compradores e incluso se rumorea que ya podría tener alguno, sobretodo alguna empresa de capital-riesgo. Es decir: Borland quiere, otra vez, dejar de ser lo que siempre ha sido, la creadora de productos destinados a desarrolladores, para convertirse en creadora de programas de "diseño" de aplicaciones, de "management" del ciclo de vida de proyectos... ALM lo llaman por aquellos lares.

La aún division de IDEs de Borland se convertiría por tanto en una "nueva empresa", y por lo visto contaría con todo o casi todo el capital humano actual de dicha división, incluyendo a David Intersimone. Es por ello que, según dónde se lean los comentarios, uno puede entender que se trata de un spin-off, o de una venta en toda regla.

La mayoría de comentarios que se pueden leer, apuntan a que la noticia es muy positiva, que esto provocará que de nuevo los productos destinados a desarrolladores vuelvan a tener la calidad que tradicionalmente tenían, que es lo mejor para "ambas" empresas, etc. Sin embargo, lo que no he visto que nadie haya dicho aún es que la pérdida del nombre Borland puede significar (al menos en mi opinión) que a esta nueva "marca" bajo la que aparecerán productos como Delphi, le pase lo mismo que pasó cuando los "iluminados" de Borland pensaron que el nombre "Borland" ya no era cool, no representaba la esencia y el espíritu del business, y se les ocurrió la peregrina idea de cambiarlo por Inprise. Y lo que le pasó a Inprise fue que, de no haber dado marcha atrás y recuperado el "viejo" y "vetusto" nombre de Borland, quién sabe dónde hubiesen estado hoy en día.

No quisiera yo ser tildado de cenizo, pero dicen que el hombre es el único animal que tropieza dos veces con la misma piedra.

Habrá que ver pues, qué cariz toman los acontecimientos en las próximas semanas. Por mi parte yo lo tengo clarísimo: Para desarrollos en plataforma Win32, Delphi 7. Y para desarrollos en plataforma .NET, pues C#, que es lo suyo. Pero estoy muy tentado de probar Chrome ahora que tiene versión estable para la versión 2.0 de .NET...

jueves, 2 de febrero de 2006

Gentuza!

Es lo que tiene, el ser jefe.

El jefe no entiende, ni quiere necesita entender de complejidad en los procesos. Le da igual que si lanzas un procedimiento que dura 2 horas, hundes el servidor de BBDD. Le da igual que paralice la empresa. Él lo que quiere es tener su informe de estadísticas en Excel, en su mesa de su despacho a las 9 en punto de la mañana. Luego él llegará a las 10:30 o a las 11, y además ni se mirará tu informe.

También le da igual que todas las incongruencias que pueda haber (y de hecho hay) en el informe (como que no cuadren muchas cifras) sean culpa de otros departamentos, que introducen información duplicada y luego se desentienden del problema. En contadísimas ocasiones, supongo que coincidiendo con alguna alineación astral particular, le escriben un correo "a Informática" para que les borre la información que ellos mismos deberían borrar, ya que tienen una preciosa herramienta para ello. Es decir, que de cualquier manera terminamos solucionando esos problemas.

Pero si esos problemas no se solucionan, tú, que eres el encargado del Informe (así con mayúsculas), el más importante de la Historia, has de ir cargando tu procedimiento con centenares de comprobaciones para que no se pueda dar ni el más mínimo caso de incongruencia (básicamente esas "comprobaciones" son las que hace que tu proceso tarde 2 horas. Si no tuvieses que hacerlas, en 45 minutos estaría listo. Que serían 15 si la base de datos estuviese bien diseñada... pero eso es harina de otro costal).

Sin embargo, como todos los que nos dedicamos a esto sabemos, es IMPOSIBLE pretender ganarle la partida al sr. Murphy... así que el informe seguirá saliendo "mal"... e igualmente todos sabemos por culpa de quién sale "mal" no?

Evidentemente, la culpa es "de Informática", que es que nunca hacen nada bien, oye. Panda inútiles.

Y eso es lo que el jefe acaba deduciendo. Y a veces, vociferando.