El costo de Trim()

Recientemente he estado ayudando a un cliente a mejorar el desempeño de una aplicación crítica hecha con Delphi, que procesa miles de transacciones por hora. Haciendo algunos cambios al código, me topé con la necesidad de evaluar el costo de hacer Trim() de algunas variables.

En concreto, me topé con unas 50 o 60 construcciones que tenían una estructura como esta:

if Variable <> '' then
begin
  VariableA := VariableA + X;
  VariableV := VariableB + Trim(Variable);
end;

Dado que de todas maneras había que re-escribir el código, pensé que era una buena oportunidad para aplicar el principio DRY y que a su vez esto permitiría tener una rutina más fácil de leer.

Por tanto, pensé en hacer una rutina genérica que recibiera las variables (el caso real implicaba cambios más profundos, pero para fines didácticos acá asumiremos que la estructura básica se mantendría):

La nueva rutina sería similar a esta:

procedure AsignaValor(Variable, X: string;
  var VariableA, VariableB: string);
begin
  if Variable <> '' then
  begin
    VariableA := VariableA + X;
    //se ha quitado la llamada a trim
    VariableV := VariableB + Variable;
  end;
end;

De esta manera, la vieja rutina luciría así: Sigue leyendo

¿Te comprometes con la propuesta de sitio de desarrollo de software en español en StackEchange?

Logo StackExchange

En esta ocasión, estimado lector, estoy invitándote a unirte a la propuesta para crear un sitio de preguntas y respuestas sobre desarrollo de software en español, en Area51 de StackExchange. Dejame explicarte.

Primero, un poco de información sobre la red StackExchange, Area51, el proceso y StackOverflow. Si ya lo conoces, puedes ir directamente a la información de la iniciativa

Sigue leyendo

Preguntas y respuestas en StackOverflow

Logotipo StackOverflowStackOverflow es un sitio de preguntas y respuestas, en Inglés, para programadores en general, es decir, se habla de todos los lenguajes de programación, ya que no está ligado o dirigido a alguno en particular. Dado que sus creadores, Joel Spolsky y Jeff Atwood son viejos bloggers reconocidos principalmente en el mundo de .NET, la mayoría de las preguntas giran en torno a esta plataforma, principalmente c#.

La actividad en Delphi es, a mi gusto, aún baja, sin embargo presenta una clara tendencia al alza y eventualmente publico algunas respuestas, también en un esfuerzo por practicar y pulir mi habilidad para escribir en inglés (que aún da pena, pero va mejorando).

Escribo estoy hoy, principalmente porque StackOverflow me parece una idea genial y una comunidad interesante, con sus propias reglas de las que probablemente escriba algo a manera de introducción en el futuro. Si podes leer/escribir en Inglés, seguro vale la pena darte una vuelta por allí, y si podes ayudar con mi (hasta hoy) única pregunta, aún pendiente de una respuesta definitiva, tendré algo más que agradecer al hecho de que leas esta entrada.

Nuevamente, si sabes como hacer una ventana de notificación tipo Windows 7 en Delphi, toda la ayuda es bienvenida.

INDY: Finalmente se hizo el merge del branch Tiburon en el trunk

Indy Sockets, la popular biblioteca de clases para programación TCP/IP que viene con Delphi, finalmente ha completado el merge del branch Tiburon de regreso al trunk.

Si no estás familiarizado con la terminología del control de versiones, particularmente SubVersion, lo que esto significa es que el código fuente, que alguna vez se ramificó del desarrollo principal (branch), para soportar el cambio a Unicode en los tiempos de Delphi 2009 (llamado Tiburon), finalmente ha sido llevado de regreso (merge) a la raíz del desarrollo (trunk).

No es que hasta ahora se terminara de portar el código… en realidad es que luego de realizar las adaptaciones necesarias, quién sabe por qué, el equipo de INDY siguió desarrollando en el branch y el código nunca se integró de vuelta. Ahora lo hacen, en parte, porque estamos próximos a ver el inicio del desarrollo de INDY 11 (probablemente otro release que romperá la compatibilidad con el código existente).

En conclusión

  • Si obtenés el código de INDY directamente de SVN, deberás configurar el cliente para que obtenga el código de trunk y no de branches/tiburon, como lo haces ahora
  • Si obtenés el código de INDY descargando el ZIP del mirror, ahora debes descargar el archivo Indy10_xxxx.zip y no el Indy10Tiburon_xxx.zip
  • Si aún compilas con versiones viejas de SVN, mi consejo es que lo actualicés y te hagás a la idea que es buena idea mantenerlo actualizado ;)

Como es costumbre en INDY, la documentación oficial (incluyendo el sitio de descarga) aún no refleja esta información, y será actualizada pronto.

Vía anuncios de Remy Lebeau en foros Embarcadero y foros Atozed Software

Nueva cara de jachguate.wordpress.com

Si no has visitado esta bitácora en los últimos 2 días, te invito a que veas la nueva cara de jachguate.wordpress.com.

La idea de cambiar el tema es aprovechar mejor el espacio con una plantilla que agrega mas contenido y, en mi opinión aprovecha mejor el espacio disponible. Francamente no le he dedicado mucho tiempo a buscar una plantilla, así que estoy abierto a sugerencias.

A lo que le he dedicado mas tiempo es a configurar lo que se mostrará en la barra lateral, pero si no te gusta o si crees que debo hacer algún cambio, estimado lector, por favor deja un comentario que prometo considerar seriamente, pues la idea de este cambio es que encontres más y mejor información de lo ya contenido en la bitácora y de lo que ocurre en el mundillo de Delphi.

Si no lo sabías, debo confesar que lo gráfico no es lo mio… por lo mismo no tengo todavía una imagen para poner en el encabezado de la página y he decidido, mientras logro la inspiración colaboración de un alma caritativa para diseñar una, el blog estará al aire sin el tal gráfico, que pienso, si existiera, ayudaría a hacer el sitio mas estético y agradable.

De antemano, gracias por el tiempo que tomes para hacer sugerencias. :)

RAD Studio XE, disponible desde hoy

Hace unos minutos he sido informado por Embarcadero que RAD Studio XE está disponible para descarga. Estoy en eso ahora (como puede verse en la imagen), asistiré mañana al webinar de Mike Rozlog, con lo que espero pronto poder comentar acerca de esta nueva versión, aunque adelanto que la presión actual de proyecto la sacaré con el 2010… pero en unas semanas prometo estar totalmente a la carga con XE.

Nuevo Roadmap para RAD Studio

Michael Rozlog, Product Manager for Delphi Solutions en Embarcadero publicó ayer por la noche una actualización al Roadmap para RAD Studio, suerte de “luz al final del túnel” para quienes esperan con ansias ver algunas mejoras masivas al producto, tales como el compilador para 64 bits y el compilador y VCL multi-plataforma (Windows/MacOS/Linux) que se nos ha venido ofreciendo durante ya algún tiempo.
Sigue leyendo

Declaración de Derechos del Programador

Jeff Atwood, de Coding Horror, escribió hace ya casi 4 años el artículo que hoy traduzco y comento libremente: The Programmer’s Bill of Rights. Lo dejo aquí, estimado lector, pues me parece que, al día de hoy, no tiene desperdicio:

Me parece increíble que una empresa pague a un desarrollador entre us$60 a us$100 mil (en Latinoamérica) us$8 a us$25 mil, y aún así mantenerle en terribles condiciones de trabajo y con hardware de segunda mano. Esto no tiene sentido para el negocio, y sin embargo lo veo todo el tiempo. Es sorprendente como muchas empresas siguen sin dar a sus programadores las cosas esenciales que necesitan para triunfar.

Propongo que se adopte una Declaración de Derechos del Programador, que proteja los derechos de los desarrolladores, previniendo que las empresas les priven de los elementos fundamentales necesarios para alcanzar el éxito.
Sigue leyendo

RAD Studio XE

Hoy se supo que la nueva versión de RAD Studio se llamará RAD Studio XE, y no RAD Studio 2011, como algunos esperabamos.

El 10 de agosto estaba destinado a ser el día en que varias personalidades de esta compañía han publicarían artículos en sus blogs, comentando sobre las nuevas características de esta versión.

Hasta ahora, no se ha comentado nada acerca de los esperados proyecto X y commodore 64, por lo que es de esperar que no se incluya ni soporte multi-plataforma ni un compilador de 64 bits por ahora.

Luego de quejas sobre la imposibilidad de ver el video del Sneak Preview #1 detrás de un firewall (el cuál es mi caso en estos días), este ha sido publicado en youtube bajo el título RAD Studio XE 2010 Preview|Productivity enhacements, donde David I. y Mike Rozlog nos cuentan de primera mano lo que veremos en unas semanas en nuestros escritorios (si tenemos la suerte de tener SA)

Lo más relevante que se ha informado ahora sobre las nuevas características es:

  • Integración con Sub-versión: Es el único controlador de versiones soportado por ahora, Mike Rozlog afirma que será muy sencillo integrar otros al IDE
  • Beyond Compare: Producto de Scotter Software integrado al IDE, utilitario para comparar (versiones de) archivos y entender rápidamente que ha cambiado
  • Actualizaciones al formateador de código
  • Muchas pequeñas características de productividad: Se cita como ejemplo que podrá compilarse y ejecutarse un proyecto en el menú contextual del administrador de proyectos, mejor formateo del IDE Insigiht y más…
  • RadPHP -anteriormente Delphi for PHP- ahora incluido en RAD Studio
  • Diagramas de secuencia: Generados automáticamente a partir del código Delphi

Encontrarás más información en:

Escribiendo un sistema de verificación parcial de números de serie en Delphi

Rondando por la Internet encontré, -por casualidad- pues no es el tema que me ocupa por el momento, un artículo que creo que no tiene desperdicio para los desarrolladores de software independientes (ISV):

Implementing a partial serial number verification system in delphi

Contiene ideas prácticas y sencillas para desarrollar un sistema de protección único para nuestros sistemas “públicos”.

Aclaro: No estoy en contra del uso de componentes o soluciones de terceros… solo creo que el artículo no tiene desperdicio y quise compartirlo.