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. :)