Abr 26

Uno de los mecanismos más potentes provistos por el lenguaje Ruby es la posibilidad de manipular bloques de código que pueden ser pasados como argumentos en la invocación a funciones.

Este mecanismo se denomina “clausura” (”closure“, en inglés), y aunque no es exclusivo de Ruby (es un viejo conocido en Smalltalk y Lisp, encontrándose aún en Perl y Python), la simplicidad de su uso lo transforma en una herramienta muy poderosa y flexible.

Seguir leyendo »

Escrito por Javier

Abr 10

Hace ya casi un mes dije que retomaría la actividad en mi blog, pero lamentablemente los compromisos laborales me lo han impedido.

Y como no puedo conmigo mismo, decidí escribir este pequeño post para mostrar algo de lo que estoy haciendo. Se trata de una herramienta para generar diagramas de clases de aplicaciones Ruby on Rails.

Comencé a escribirla por necesidad (para los desarrollos en los que estoy trabajando), pero luego decidí extenderla un poco más (para, además, extender mis conocimientos de Ruby).

Por ahora, nada más (en los próximos días escribiré con mayor detalle sobre él). Les presento a mi nuevo juguete: RailRoad.

(En InfoQ han publicado una revisión sobre RailRoad.)

Escrito por Javier

Dic 26

Muchos conocen a Edsger Wybe Dijkstra por sus aportes técnicos a las ciencias de la computación (algoritmos sobre grafos, semáforos, su crítica al “goto“, entre tantos otros). Otros quizás hayan leído sobre sus opiniones acerca de la programación como disciplina matemática y su lucha contra el avance de los intereses industriales sobre la ciencia.

Pocos saben, sin embargo, quién fue este gran hombre y su verdadero aporte a través de más de 40 años de actividad académica, científica e industrial. A continuación he traducido el discurso pronunciado por David Gries, otro notable científico de la computación, en oportunidad de un homenaje a poco tiempo de su fallecimiento.

Seguir leyendo »

Escrito por Javier

Dic 24

Releyendo los agresivos comentarios de un personaje pseudo-anónimo respecto del artículo sobre UML, recordé un excelente manuscrito de Edsger Dijkstra llamado “Respuestas a preguntas de estudiantes de Ingeniería de Software” (EWD 1035).

Para facilitar su difusión (y para tenerlo siempre a mano), decidí traducirlo. ¡Que lo disfrute!

Seguir leyendo »

Escrito por Javier

Dic 11

AJAX es uno de los términos de moda en el mundo de la Web 2.0 y las aplicaciones web. Como usualmente ocurre en estos casos, aparece rodeado de un manto de misterio y mucho palabrerío. ¿Es una tecnología? ¿un lenguaje? ¿una librería? Tratar de explicar qué es AJAX me recuerda a un pasaje de la película “The Matrix“:

Niño: No trates de doblar la cuchara, eso es imposible. En cambio, sólo trata de darte cuenta de la verdad.

Neo: ¿Qué verdad?

Niño: La cuchara no existe.

AJAX es simplemente una técnica, o mejor dicho, la combinación de varias técnicas. Si bien su nombre significa “JavaScript y XML asincrónicos“, no tiene necesariamente que ver con Javascript ni con XML. De ahí el título de este artículo.

Seguir leyendo »

Escrito por Javier

Dic 10

Hace ya un tiempo algún alumno de la Universidad Tecnológica Nacional (Fac. Buenos Aires) elaboró un video basado en la grabación de una clase, en la cual el docente a cargo de la cátedra de “Diseño de sistemas, el Lic. Rubén Fernandez Iriart, explicaba qué son los “Enterprise Java Beans“.

Seguir leyendo »

Escrito por Javier

Nov 21

En este tutorial realizaremos la “disección” de una comunicación TCP/IP muy simple, con el fin de analizar qué ocurre a cada nivel.

A través de este sencillo experimento, podremos recorrer los conceptos fundamentales de las redes TCP/IP, para reafirmar la idea de que este protocolo es muy simple. El objetivo es lograr, sin demasiados conocimientos previos, una comprensión profunda de sus mecanismos.

Seguir leyendo »

Escrito por Javier

Nov 17

En el año 1999 cursé una materia de ingeniería de software y tuve la desdicha de encontrarme con el “lenguaje” de moda para el análisis y diseño (supuestamente) orientado a objetos: UML (”Unified Modelling Language” o “Lenguaje Unificado de Modelado“) y su metodología asociada: el “Proceso Unificado“.

Seguir leyendo »

Escrito por Javier

Nov 12

En esta última entrega analizaremos algunos de los problemas que se plantean a la hora de desarrollar programas concurrentes.

La programación concurrente (implementada a través de procesos separados o de threads) plantea una serie de inconvenientes respecto del uso de recursos o datos compartidos, que abren un campo de investigación interesantísimo y con muchos puntos aún no resueltos. Presentaremos aquí solamente una introducción a esta problemática, ejemplificando cada situación con nuestro servidor concurrente.

Nota del 19/11/2006: Ahora puede descargar el tutorial completo.

Seguir leyendo »

Escrito por Javier

Nov 07

Luego de que en la entrega anterior complicáramos un poco las cosas introduciendo concurrencia en el servidor, un amigo me hizo notar que quizás sería mejor dar un ejemplo un tanto más “real” de lo que estábamos haciendo.

Es por eso que dejaremos por un rato el camino planificado para jugar un poco explorando las posibilidades con un cliente en PHP (en una especie de “recreo“).

Seguir leyendo »

Escrito por Javier