martes, 15 de noviembre de 2005

Visual Studio 2005 Launch Tour

Pues nada, hoy hemos estado en el evento de presentación de Visual Studio 2005 y SQL Server 2005 en Barcelona. Para hacer un resumen: Un evento programado para durar menos de dos horas en el que se tienen que presentar TRES productos que se supone son clave en la estrategia de tu empresa (léase Microsoft)... pues pasa lo que tiene que pasar, que termina alargándose casi una hora más, y recortando por todas partes.
De BizTalk Server no voy a hablar, ya que no presté atención al no tratarse de un producto que me interese (y que sigo sin saber para qué sirve REALMENTE). En cuanto a la presentación de SQL Server 2005, pues tengo bastantes impresiones positivas. Han incorporado cosas al producto que ya existen en la competencia (como el speaker ya se encargó de repetir en un par de ocasiones) y han evolucionado en general hacia un producto más acorde con los tiempos que corren (hay que recordar que SQL Server llevaba 5 años sin actualizarse, sólo los consabidos Service Packs). Más asistentes, más herramientas integradas que antes eran independientes, más bonito estéticamente...
Mención aparte merecen las posibilidades de generar y regenerar índices "al vuelo" o "en caliente", es decir sin tener que detener la base de datos; también se implementan lecturas y escrituras sin bloqueos (intuyo que mediante algun tipo de conciliación o serialización), generación de snapshots que pueden servir de backup casi instantáneos...

En cuanto a Visual Studio 2005, pues parece claro que el camino que se quiere tomar es el de "desarrollo distribuido", es decir, hay un repositorio central de código, gestionado por el Team Foundation Server (licencia aparte, no son listos estos de Redmond) al que atacan todos los programadores de la organización. Este repositorio necesita (ojo al dato) SQL Server para funcionar. Lo que desconozco es qué tipo de instancia de SQL Server se necesitará, ya que por falta de tiempo fue una de las muchas, muchísimas cosas que se quedaron en el tintero. Esperemos que con la Express (antiguo MSDE) ya valga, porque de lo contrario... a ver quien se pone un SQL Server sólo para eso. ¿Se podrá aprovechar cualquier instancia de SQL Server que ya se está ejecutando, por ejemplo la que cualquier empresa tiene como servidor de pruebas?

Seguiremos informando... :-)

lunes, 7 de noviembre de 2005

Ya está aquí, Ya llegó...

La versión 2.0 de la Plataforma .NET ha sido oficialmente lanzada hoy en todo el mundo. Tras muchos, muchos meses desarrollando con betas, puliendo detalles, asimilando los cambios que se producirían (todo ello sin poder implantar nada en un entorno de producción)... hoy por fin, oficialmente, ya podemos "pasarnos" a la versión 2.0 de la plataforma.

Pero no sólo eso: Uno de los productos "buques insignia" de Microsoft, SQL Server, que llevaba la friolera de 5 años sin actualizarse, también ha visto hoy la luz en su nueva versión 2005. Otro producto importante dentro del catálogo de la empresa de Redmond, Biztalk, estrena también versión, en éste caso la 2006.

Se avecinan tiempos interesantes en el mundo del software. Cuando el proyecto LINQ se materialice definitivamente junto con la llegada de la versión 3.0 del lenguaje C#, el cambio en la manera de desarrollar aplicaciones informáticas puede dar un giro radical...

... y estaremos allí para disfrutarlo. :-)

martes, 27 de septiembre de 2005

Una de efemérides

Tal día como hoy hace 22 años (¡veintidos años!), el 27 de septiembre de 1983, un señor que por aquel entonces trabajaba en el MIT (Massachusetts Institute of Technology), tuvo una brillante idea, que compartió en los grupos de noticias sobre Unix de la aún desconocida Internet.

Poco se imaginaba ese buen hombre, la que iba a tener liada hoy en dia. xD

miércoles, 21 de septiembre de 2005

Opera para todos... y gratis

"Para los altos, para los bajos, para los gordos, para los flacos... para todos". ¿Se acuerdan de aquel famoso anuncio de Coca-Cola? Pues podríamos aplicarlo perfectamente a este caso. El navegador Opera acaba de sacar a la luz su versión 8.5 ... pero esta no es la noticia, sino que a partir de ahora es gratuito. Sin registro, sin banners pubicitarios.

Quizás el no haber sido gratuito sea la razón por la cual Opera nunca ha llegado a contar con una base importante de usuarios frente a Mozilla Firefox, el otro navegador "alternativo" al Internet Explorer de Microsoft, siendo Opera en mi opinión mucho mejor navegador. Más rápido y en teoría más seguro (a Opera se le encuentran menos vulnerabilidades, según el sitio Secunia. Por ejemplo la última vulnerabilidad de Firefox se ha publicado ayer), aparte de que para que Firefox tenga alguna funcionalidad interesante, hay que liarse a instalarle plugins.

El negocio de Opera a partir de ahora no está en los navegadores de PC, sino en los navegadores para dispositivos móviles, por los que sí cobran. Su versión de Opera para el sistema Symbian ya hace tiempo que circula, con muy buenos resultados. Ahora que además acaban de publicar la versión para móviles "normales" (que no incorporan Symbian como Sistema Operativo), el mercado se abre ante ellos y el hacer gratuito su software para PC es un magnífico golpe de efecto para ganar muchos nuevos clientes potenciales para sus navegadores de pago.

martes, 20 de septiembre de 2005

Excel, macros y Delphi

Esta mañana he comenzado a hacer un pequeño proyecto en Delphi 7 (no, no uso ni pienso usar Delphi para .NET, creo que existen mejores opciones para desarrollar en Object Pascal para .NET); este pequeño proyecto consiste en crear un componente sencillo, que exporta una Macro, o módulo VBA, a una hoja Excel.

¿El motivo de esta chorrada? El siguiente:

Hoja.Columns.Item['M:T',EmptyParam].ColumnWidth := 6;
Hoja.Columns.Item['V:Y',EmptyParam].ColumnWidth := 6;
Hoja.Columns.Item['B',EmptyParam].ColumnWidth := 22;

Hoja.Cells.Item[4,26].Value := 'TOTALES';
Hoja.Range['Y4','AB4'].HorizontalAlignment := xlCenter;
Hoja.Range['Y4','AB4'].Merge(varNull);

// Dibuja todos los bordecitos, qué bonitos.
sv := inttostr(rowc+5);
Hoja.Range['D5','D'+sv].BorderAround(xlContinuous,xlMedium,xlAutomatic,EmptyParam);
Hoja.Range['F4','J'+sv].BorderAround(xlContinuous,xlMedium,xlAutomatic,EmptyParam);
Hoja.Range['M4','AC'+sv].BorderAround(xlContinuous,xlMedium,xlAutomatic,EmptyParam);

...

with Hoja.Range['P6','P'+sv].Borders.Item[xlEdgeLeft] do
begin
   LineStyle := xlContinuous;
   Weight := xlThin;
   ColorIndex := xlAutomatic;
end;
with Hoja.Range['S6','S'+sv].Borders.Item[xlEdgeLeft] do
begin
   LineStyle := xlContinuous;
   Weight := xlThin;
   ColorIndex := xlAutomatic;
end;
with Hoja.Range['V6','V'+sv].Borders.Item[xlEdgeLeft] do
begin
   LineStyle := xlContinuous;
   ...

Aquí apenas hay una fracción del código que se encarga de hacer "presentable" una hoja Excel. Cuando terminamos la exportación de los datos a la hoja, diseñamos las florituras y los encajes de bolillos, a mano en la misma hoja. Esto en teoría no debe llevar demasiado tiempo, unos minutos como máximo. Pero... luego hay que convertir todas estas florituras a código (bordes, fuentes, colores, formatos, incluso fórmulas) ya sea en Delphi, VisualBasic, VB.NET, C# o lo que sea. Y esto puede llevar un buen rato; una tarde entera en mi caso. Claro, hay que buscar qué tipos de LineStyles, por poner un ejemplo, se pueden aplicar a un rango; yo las constantes tipo xlLoQueSea no me las conozco (suerte que existe esa maravilla llamada MSDN Library, porque todo esto en las ayudas de Delphi no viene).

Y si además, sabes que no va a ser el único informe en Excel que vas a tener que presentar a tus jefes, para que éstos a su vez los presenten a los suyos (y llevarse todo el mérito por supuesto) entonces se necesita una solución drástica. Y la solución en éste caso, nos la da el propio Excel con sus Macros (bueeeno, vale, módulos VBA).

Cuando terminemos la exportación de los datos a la hoja Excel, y vayamos a hacer el diseño previo de los bordes y demás adornos, vamos al menú Herramientas | Macro | Grabar nueva macro. Todas las operaciones que hagamos, las grabaremos en esta macro. La idea es, que desde nuestra aplicación que exporta datos a hojas Excel, exportemos también la macro que hace los adornos y la ejecutemos. El ahorro en tiempo es escandaloso (vamos, el tiempo que nos lleve hacer un Copiar-Pegar desde el editor VBA de Excel al código de nuestra aplicación).

Cuando lo tenga terminado os cuento. :)

miércoles, 31 de agosto de 2005

Detalles del funcionamiento de Firebird

Mi buen amigo Cadetill está escribiendo una serie de artículos en su blog de la web Club Developers, referentes a los detalles de funcionamiento del lenguaje SQL en la versión 1.5 de Firebird.

Aquí está el enlace. Os recomiendo la lectura, hay algún que otro detalle curioso.

martes, 23 de agosto de 2005

Impersonate en ASP.NET

Llamamos "impersonación" (nuevo palabro directamente castellanizado -que no traducido- del inglés "impersonation" que, como suele pasar, tiene traducción al castellano: Personificar), a la acción de ejecutar una aplicación ASP.NET con el usuario que nosotros indiquemos desde nuestra aplicación, y no dejando que sea el servidor IIS quien asigne siempre el mismo usuario (el definido en el fichero machine.config). Esto nos garantiza que cada aplicación se ejecuta con los permisos de usuario que realmente le corresponden, ya que si usamos siempre el mismo usuario, debemos darle todos los privilegios que vayan a tener todas las aplicaciones juntas... con los riesgos que ello conlleva (poder ver los datos de una Base de Datos diferente a la que le corresponde a cada aplicación, por ejemplo).

Aquí hay un artículo, breve pero muy bueno en mi opinión, que lo explica perfectamente.

Por cierto, desde esta humilde bitácora quisiera hacer un llamamiento para que, a la hora de adecuar términos técnicos nuevos a nuestro idioma, no cojamos y castellanicemos a saco, sin pararnos a mirar siquiera si existe traducción para dicho término. Es un defecto muy grande de los que trabajamos en el campo de las tecnologías, y sinceramente creo que no debería ser así. ¿O es que suena mejor, más tésnico el decir "impersonación" en vez de personificación o "autenticación" en lugar de autentificación?

---
Nota: Resulta que "autenticación" es correcto en castellano, según el Diccionario de la Real Academia (www.rae.es):

Autenticar.
(De auténtico).
1. tr. Autorizar o legalizar algo.
2. tr. acreditar (dar fe de la verdad de un hecho o documento con autoridad legal).

A la cama nunca te irás, sin saber una cosa más. :-)

jueves, 4 de agosto de 2005

Herramientas para Firebird

Los usuarios de Interbase / Firebird siempre nos hemos sentido un tanto huérfanos en lo que a herramientas de administración y manejo de BBDDs se refiere. Sí, claro que hay buenas, magníficas herramientas, pero... ¿No es el punto fuerte de Firebird el hecho de ser un motor gratuito? ¿Entonces para qué pagar tanto dinero por esas herramientas?

En este tema, tanto MySQL como PostgreSQL nos han estado ganando por la mano durante mucho tiempo, sin embargo desde hace algunos meses la comunidad OpenSource parece tener la intención de solucionar este problema. Aparte del proyecto FlameRobin que ya mencioné en su día, y que ahora está incluso apadrinado por IBPhoenix (aunque su desarrollo parece estar bastante muerto, todo hay que decirlo), hay dos proyectos más, que tienen poca publicidad dentro de la comunidad oficial Firebird pero son de una calidad muy alta y son muy potentes; lo cual me hace preguntarme a santo de qué tienen tan poca repercusión.

Uno de estos proyectos, del que también hablé en su día y que he estado utilizando hasta hace poco, se llama IBOConsole, desarrollado por un simpático italiano de nombre Lorenzo Mengoni. Esta utilidad lleva bastante tiempo circulando, lo cual le otorga fiabilidad, y además se actualiza más o menos con frecuencia.

El otro proyecto es más reciente, pero su potencia y calidad impresionan. El nombre de esta joya es SQL Hammer y sus creadores son, vaya sorpresa, rusos. ;-)

De hecho SQL Hammer me ha impresionado tanto, que es la herramienta que actualmente utilizo para todos mis desarrollos. Mi dispiace, Lorenzo!

---
Edición (29/08/2005): La página de Lorenzo ha cambiado, de www.mengoni.it a lorenzo.mengoni.com. Los enlaces ya están corregidos.

Edición 2 (2/09/2005) (Estoy triunfando con este post xD ) Resulta que los creadores de SQL Hammer no son rusos como indiqué arriba, sino Ucranianos. Aclarado queda pues.

Paciencia, hijos míos...

Navegando por ahí, he encontrado este buen artículo, relativo a la "facilidad" con la que se puede aprender cualquier cosa en informática, sobre todo en programación, a tenor de la gran cantidad de libros cuyos títulos son del estilo "Aprenda x en 21 días" o "Aprenda n en 24 horas". El autor deduce que la informática debe ser lo más tirao de aprender del mundo, ya que éste tipo de libros no existe para otras materias, como la física cuántica por ejemplo.

En mi opinión, una interesante lectura.

martes, 26 de julio de 2005

Windows Vista

Pues éste viene siendo el nombre oficial del que hasta ahora se había conocido como Longhorn, el que será el sustituto de Windows XP a mediados del año que viene (2006). Y nada más saberse el nombre empiezan a leerse opiniones: Algunos dicen que 'Vista' es más bonito, otros dicen que 'Longhorn' tenía más "gancho", en fin que ya tenemos servida otra nueva polémica que hará correr fútiles ríos de bits en los foros, y en los blogs.

De lo que no cabe duda es de que la gente ya no se cree las repetitivas promesas de fiabilidad, estabilidad, seguridad... y cómo no, los chascarrillos andan a la orden del día, algunos con tanta sutileza como 'mala leche'. Por ejemplo, ¿esta BSOD (Blue Screen Of Death) es auténtica o por el contrario es fruto del Photoshop?



Sólo el tiempo responderá esa pregunta... ;)

viernes, 22 de julio de 2005

Encaje de bolillos

Llevo unas semanas con un proyecto que se trata de generar un "simple" informe, pero que me ha hecho trabajar a fondo con el lenguaje SQL y he "descubierto" cosas bastante chulas. Por ejemplo, de todos es sabido (digo yo) que se pueden combinar dos tablas, así:

select * from Tabla1 t1
join Tabla2 t2
on t2.campo1 = t1.campo1
order by t1.campo2


Y puede también que sepamos cómo hacer una subconsulta:

select * from (
select campo1, campo2, campo3
from Tabla1
group by campo3, campo2
)


El caso es que según te van pidiendo cosas, el tema se complica (evidentemente). Un ejemplo es ésta consulta que averigua qué códigos postales están cubiertos por más de una oficina. Viene siendo (simplificada) algo parecido a esto:

select distinct o.Provincia, o.descripcion, p.Oficina, s1.CPostal
from (
select count(distinct p1.Oficina) Ofic, p1.cppob CPostal
from poblaciones p1 group by p1.cppob) as s1
join poblaciones p on p.cppob = s1.CPostal
join oficinas o on o.codofi = p.Oficina
where s1.Ofic > 1
order by s1.CPostal, p.Oficina


Es decir, estamos haciendo un join con una subconsulta, utilizándola como si de una tabla más se tratase!

Si lo pensamos, tiene toda la lógica del mundo. Una tabla no es más que un conjunto de registros y campos... y una consulta lo que devuelve es exactamente lo mismo. Luego si pensamos en tablas y en consultas no como tales sino como "Datasets", la luz aparece al final del túnel.

Por cierto, pese a lo que comentaba en el primer post del blog, sigo trabajando con ese magnífico lenguaje que es Delphi, al que podríamos llamar sin temor a equivocarnos el "hermano mayor" de C# (cronológicamente hablando, al menos), que para algo son hijos del mismo padre. Sin embargo no pierdo de vista el universo .NET, ya que es hacia donde camina, inevitablemente ya, el mundillo del software.

miércoles, 20 de julio de 2005

¿Hay alguien ahí?

Según parece por lo que he leído en algunos sitios, este blog estaría a día de hoy, casi a mitad de camino de convertirse en un "ciber-cadáver". En la red hay miles, qué digo miles, ¡cientos! de blogs moribundos o ya fenecidos y éste parecía tener el mismo destino, pero intentaré (de nuevo) que no vuelva a suceder.

Las razones por las cuales no he podido actualizar el blog en todo este tiempo (¡ocho meses!) posiblemente ya os las imaginaréis, pues son las mismas que pueden "atacar" a cualquier bloguero, así que no voy a entrar en más detalles. Por el contrario, las razones por las cuales precisamente hoy retomo la actividad en el blog, son dos y muy concretas: La primera, que como podéis comprobar, The Netrix cumple justo hoy un añito, y había que celebrarlo, digo yo. Y la segunda, y no por ello menos importante, es que casualmente (os lo juro, porque entonces aún no la conocía), también hoy es el cumpleaños de mi pareja. Felicidades cuseta!!