Popularidad de las distribuciones de GNU/Linux

He realizado un pequeño análisis sobre las cifras publicadas por DistroWatch acerca de la popularidad de las diferentes distribuciones de GNU/Linux en los últimos 6 meses.

Las estadísticas de DistroWatch se basan en la cantidad de visitas diarias al sitio de cada distribución, siendo una fuente bastante respetada a la hora de estimar su cantidad de usuarios. Aunque las cifras publicadas corresponden a cada distribución específica, resulta interesante realizar un agrupamiento de todas aquellas derivadas (por ejemplo, Debian, Ubuntu, etc.).

Sigue leyendo «Popularidad de las distribuciones de GNU/Linux»

Programación para redes y concurrencia (IV)

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.

Sigue leyendo «Programación para redes y concurrencia (IV)»

Programación para redes y concurrencia (III)

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

Sigue leyendo «Programación para redes y concurrencia (III)»

Programación para redes y concurrencia (II)

En la entrega anterior abordamos el diseño de un protocolo y la implementación de un servidor secuencial muy simple y un cliente. Haciendo esto, inspeccionamos los conceptos fundamentales de la programación de aplicaciones usando sockets.

En esta segunda parte, desarrollaremos un servidor capaz de recibir conexiones de varios clientes de manera concurrente (en paralelo). Para ello utilizaremos dos técnicas distintas: procesos múltiples e hilos de ejecución (threads).

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

Sigue leyendo «Programación para redes y concurrencia (II)»

Programación para redes y concurrencia (I)

Este es el inicio de una serie de artículos introductorios sobre programación para redes (usando sockets) y programación concurrente. El objetivo es presentar una serie de conceptos que iremos explorando progresivamente:

  • Programación cliente/servidor usando sockets: Cómo desarrollar programas que se comuniquen a través de la red para realizar distintas tareas.
  • Protocolos de comunicación: Explorar los principios básicos de los protocolos de aplicación (alto nivel) utilizados para intercambiar información.
  • Concurrencia: Cómo construir programas que se ejecuten paralelamente y resolver algunos de los problemas que nos plantea la concurrencia.

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

Sigue leyendo «Programación para redes y concurrencia (I)»

Libre, gratuito, portable y estándar

Discusiones sobre «estándares», «software libre», «software gratuito», «portabilidad» y cuestiones afines se dan muy a menudo. En la mayoría de ellas puede apreciarse que existen grandes confusiones que involucran a estos términos.

Desde varios ámbitos (por ejemplo, el Proyecto GNU) se insiste hasta el hartazgo en marcar diferencias importantes (como la de «gratuidad» y «libertad«), pero esto no parece suficiente para aclarar el equívoco. Este es el por qué de mi pequeño aporte.

Sigue leyendo «Libre, gratuito, portable y estándar»

TCP/IP es simple

Parece increible, pero la realidad nos muestra que muchos informáticos desconocen totalmente los principios del funcionamiento de Internet y las redes IP en general (aún muchos que trabajan en áreas relacionadas).

En muchos casos, no ayudan ni el pésimo nivel de muchas materias universitarias (algunos analistas son formados sin siquiera una introducción a las redes), ni el afán de ocultar la realidad de muchos libros de texto. No me ocuparé del primer caso (al menos por ahora), pero sí quiero hacer hincapié en el segundo.

Sigue leyendo «TCP/IP es simple»

Programación orientada a objetos

Cuando comencé a explorar la programación orientada a objetos (POO u OOP, en inglés), allá por el año 1994, me ocurrió lo que a muchos. Luego de casi 10 años de programar proceduralmente (en Basic, Pascal y Cobol) me encontraba con una nueva visión. Si bien creía entender los conceptos de clase, objeto, herencia y polimorfismo, no lograba ver claramente la diferencia de enfoque a la hora de diseñar un programa. No podía apreciar realmente cuáles eran las diferencias y las similitudes entre el enfoque procedural y el orientado a objetos.

A través de mi experiencia docente varias veces me vi frente a la tarea de introducir los conceptos básicos de la POO, encontrándome con la misma situación, pero desde un lugar diferente: ¿Cómo explicar el nuevo enfoque a personas acostumbradas a programar de forma procedural? ¿Cómo resaltar las similitudes y las diferencias? Fue gracias a un ejemplo del libro «C++ Annotations» que encontré una forma simple de presentar la idea básica detrás de la programación orientada a objetos.

Sigue leyendo «Programación orientada a objetos»

Proyecto de ley sobre delitos informáticos

En el año 2002 a poco estuvo de aprobarse un ridículo proyecto de ley sobre delitos informáticos, que afortunadamente fue desactivado gracias al accionar de distintos grupos sociales.

Recientemente, se ha elaborado un nuevo proyecto de ley con el objetivo de modificar el código penal argentino para cubrir los delitos realizados mediante herramientas informáticas. Si bien este nuevo proyecto está mejor elaborado que el anterior, existen en él varios puntos que, de no ser modificados, implicarían un peligroso avance contra la libertad en nuestro país.

Sigue leyendo «Proyecto de ley sobre delitos informáticos»

Internet con límites

El slogan publicitario del ISP Fibertel es «Internet sin límites«. Esta frase apareció en el marco de una campaña publicitaria, realizada en el momento en que otros proveedores amenazaron con imponer límites a la cantidad de tráfico de los usuarios.

Como podrá verse a continuación, este slogan es totalmente engañoso, ya que Fibertel sí impone límites a sus clientes/usuarios.

Pues bien, analicemos lo que significa «sin límites» para esta empresa.

Sigue leyendo «Internet con límites»