viernes, diciembre 28, 2007

Sobre los contenidos universitarios

Ricardo Galli cita muy oportunamente en su blog a Joel Spolsky durante una conferencia en la Universidad de Yale:
En las instituciones de la Ivy League todo es Unix, programación funcional, y cosas teóricas acerca de máquinas de estados. A medida que bajas en la cadena a escuelas menos selectivas empieza a aparecer Java. Aún más abajo literalmente empiezas a ver clases en tema como introducción a Microsoft Visual Studio, tres créditos. Cuando llegas a instituciones con estudios de dos años ves cosas como cursos de certificación SQL-Server-en-21-días que emiten los fines de semana en la TV por cable. — Joel Spolsky
Lo mejor de todo: la pregunta que formula Ricardo.

jueves, diciembre 06, 2007

Java 1.4, los certificados, y la p...

Ayer estuve una hora tratando de que la herramienta keytool de java 1.4 importe un certificado. Sí, ya sé que esa versión es obsoleta, pero en este caso no hay otra opción. El tema es que luego de miles de pruebas no había forma de que reconociera el certificado como X.509 (aunque realmente fuera así).

Pues bien, importé el certificado en Java 1.5 y ningún drama, entonces armé un nuevo certificado de prueba con una clave de menor longitud y... bingo! la versión 1.4.2 no acepta longitudes de clave mayores a 2048, como era de esperarse debido a restricciones de exportación.

Pero yo quiero mi certificado con clave de 4096 bits! Googleando un poco encontré un hermoso documento donde unos buenos muchachos rusos explican cómo habilitar la utilización de claves de mayor longitud.

Para ello:
  1. Suponiendo que el JRE se encuentra en /usr/lib/j2se/1.4/jre/

  2. Descargar e instalar el jar de BouncyCastle CryptoProvider en $JRE/lib/ext

  3. Descargar e instalar los archivos de la Unlimited Strength Jurisdiction Policy 1.4.2 en $JRE/lib/security

  4. Modificar el archivo $JRE/lib/security/java.security estableciendo los proveedores de seguridad como sigue:
    security.provider.1=sun.security.provider.Sun
    security.provider.2=org.bouncycastle.jce.provider.BouncyCastleProvider
    security.provider.3=com.sun.net.ssl.internal.ssl.Provider
    security.provider.4=com.sun.rsajca.Provider
    security.provider.5=com.sun.crypto.provider.SunJCE
    security.provider.6=sun.security.jgss.SunProvider
    El de BouncyCastle debe ser el segundo.
Y con eso debería alcanzar para poder utilizar certificados con clave de 4096 bits. O eso espero...
Bueno los dejo por ahora así como algo. Saludos!

sábado, noviembre 17, 2007

Algunos temas clásicos de los 80s

Tengo un gusto particular por la música de los '80 y '90 que viene por transfusión musical directa de familia -de mi hermana, particularmente (besos si lees el blog!)- pues yo era bastante pequeño en los 80s como para andar discerniendo los artistas que pasaban por la radio.

De esa época me quedaron montones de temas y bandas favoritas que aún hoy siguen sonando en los medios. Incluso cada tanto me pasa de escuchar un acorde que reconozco y aprender recién ahora el nombre de la canción.

Así que revolviendo un poco en youtube encontré algunos de los buenos clásicos que recuerdo (de los miles de temas más que están buenos y escapan de mi memoria). Como bonus track (sí! hay bonus track!) dejo los links a covers recientes de cada uno de ellos, para tener más variedad.

De Simple Minds, Don't you (forget about me) de la banda de sonido de "The Breakfast Club" y el cover de Yellowcard.

De A-HA, Take on me, mas la parodia por Family Guy, y su versión ska por Reel Big Fish.

Y no podía faltar una de Genesis, Land of Confusion, con su cover por Disturbed (ambos excelentes).

viernes, octubre 26, 2007

CDC UNLUX 2007 :: Conectando puntos

El Grupo de Usuarios de Software Libre de la Universidad Nacional de Luján (UNLUX) invita a toda la comunidad educativa, estudiantes e interesados en Tecnologías de la Información al “Ciclo de charlas UNLUX 2007 :: Conectando Puntos”: una jornada de difusión y capacitación sobre Software Libre, en el cual expertos en diferentes áreas disertan sobre temáticas diversas del S.L.

El ciclo de charlas se llevará a cabo el sábado 3 de noviembre de 2007 en las instalaciones de la sede central de la Universidad Nacional de Luján (¿cómo llegar?).

El cronograma de charlas ya se encuentra disponible en Internet. Los asistentes a la jornada, por favor registrense aquí.

miércoles, octubre 10, 2007

Desplegar la linea número N de un archivo

Para listar un archivo de texto numerando cada línea:

cat -n archivo

Para ver la línea número N de un archivo de texto:

head -N archivo | tail -1

Para buscar archivos según su nombre, en todo un árbol de directorios

find /ruta/al/directorio -iname '*loquesea*'

Para borrar archivos según su nombre de un arbol de directorios

find /ruta/al/directorio -iname 'nombre-archivo' -delete
(mucho ojo con este último pues pueden hacer un desastre)

Es que estos one-liners siempre me son útiles y nunca me los acuerdo.

jueves, septiembre 20, 2007

El Regreso de Soda Stereo

Cómo que no conocen a Soda ?

Pues aquí tienen una Sobredosis de TV con La Ciudad de la Furia, en la conferencia de prensa cortesía de TN para ir palpitando el 19...

Actualización 21/09/2007: Añado el video de la conferencia de prensa, que recién veo en la web de TN (qué grandes estos muchachos).

viernes, septiembre 14, 2007

De las mágicas actualizaciones en línea

Ya lo venia viendo en /. en inglés y luego en /. en español: los muchachos de MS son tan buenos que actualizan tu sistema operativo sin siquiera molestarte para que lo sepas.

Y aducen que ese comportamiento es el esperado, ¡por tu seguridad! ¡Eso es una buena política!

Pues por mi seguridad me gustaría saber quién entra por la puerta de casa, sea mi vecina, un policía o un asaltante...

¿No podrían haber hecho como en Debian? Allí si hay una mejora o un cambio en el "software de actualización" (léase dpkg / apt / aptitude / synaptic), ésta aparece como una actualización más de las aplicaciones del sistema, y no te la aplican de prepo (por no decir otra cosa)...

martes, septiembre 04, 2007

Nuevas incorporaciones a Debian

Parece que la comunidad Debian no se queda quieta y continúa mejorando cada día. Recientemente añadieron al repositorio inestable, entre otros, dos aplicaciones muy interesantes:

La primera es la versión open-source de Virtualbox, una solución de virtualización gratuita que permite correr una amplia variedad de sistemas operativos sobre el sistema Linux. Virtualbox permite correr, como guest, Windows (98, NT 4.0, 2000, XP, Server 2003, Vista), DOS/Windows 3.x, Linux (2.4 and 2.6), FreeBSD, OpenBSD y otros.

La segunda es la implementación de una idea que hace mucho tiempo tuvo un gran amigo mío, que se vé que no es el único loco, y que yo creí irrealizable: Debtorrent.

Qué es debtorrent? DebTorrent es un proxy que permite bajar paquetes con APT, desde otros pares.

El cliente DebTorrent actúa como demonio y escucha peticiones de archivos desde APT. Los archivos que no son paquetes son descargados y servidos a APT en forma similar al resto de los proxies (apt-proxy, etc.).

Cuando se solicitan paquetes, el cliente DebTorrent intentará utilizar cualquier otro cliente DebTorrent que encuentre, utilizando el ancho de banda de subida de sus pares, reduciendo así la demanda a los espejos de la red de Debian. Si un paquete no se encuentra en ningún par, DebTorrent intentará descargarlo desde un mirror estándar.

La configuración es muy simple y sólo involucra prefijar un servidor y puerto al archivo sources.list actual.

En resumen, dos buenos paquetes para probar y tener en cuenta en la instalación de nuestro sistema operativo favorito.

sábado, septiembre 01, 2007

Simulador de Vuelo en Google Earth

Vía Marco's Blog me entero que la última versión de Google Earth (4.2 al momento), incorpora algo más que la vista del cielo denominada Google Sky. Tal parece que los muchachos han añadido, oculto, un sencillo simulador de vuelo a la aplicación, que es accesible en todas las plataformas en las (Linux, Mac o Win). Ojo, nada que ver con el que venía en Microsoft Excel 97.

Luego de iniciar la aplicación Google Earth, y con el mundo en pantalla, presionen Ctrl+Alt+A para activar el modo de vuelo, allí podrán seleccionar aeronave y posición de inicio (entre las que figura el aeropuerto de Buenos Aires). Con las teclas PageUp/PageDown (o RePag/AvPag en los teclados españoles) controlan la potencia, y con las flechas la dirección.

Lo he probado recién y está muy interesante, a la vez que divertido.

En la entrada del blog de Marco tienen más detalles y capturas de pantalla. También hay un video en youtube.
Y en Google tienen la guía de comandos a utilizar.

Bueno los dejo para que lo vayan probando.
Suerte y que tengan un buen vuelo...

sábado, agosto 25, 2007

Según Microsoft, todos los Windows son piratas

Vía slashdot me entero de los problemas que Microsoft ha tenido con los servidores de validación de Windows (WGA servers). Tal parece que si se realizaba una actualización automática o una validación de licencia estos últimos días, las instalaciones legales eran marcadas como no genuinas, perdiendo de esta forma muchas funcionalidades del sistema. En el foro de soporte WGA hay varias quejas al respecto.

Según arstechnica, hay que evitar las actualizaciones automáticas y las activaciones por el momento. Y si la activación se realiza y falla, no reiniciar ni apagar de equipo.

Igual parece que ya está medio arreglado el problema.

No quiero ser insistidor pero... con linux eso no pasa... HA HA!

Update 03/09/2007: Parece que esto sucedió porque inadvertidamente metieron código todavía verde (léase, de desarrollo, no de producción) en los servidores de activación. Ay, muchachos, muchachos...

martes, agosto 21, 2007

Operating System Vulnerability Scorecard y las conclusiones apresuradas

Desde hace unos meses Jeff Jones, el Director de Estrategia en la Microsoft Security Technology Unit, viene publicando un reporte de vulnerabilidades en su blog en Microsoft TechNet. He leído sus reportes y en general presentan a Windows como la plataforma más segura, etc... lo cual no me parece mal, al fin y al cabo todo es marketing y es válido.

No voy a desacreditar los informes que este señor publica, por lo menos no yo pues no soy ningún especialista en el tema. El problema que yo encuentro aquí radica que cualquier desprevenido puede leerlos, sacar conclusiones erradas, y salir muy contento a pregonear que el Windows que tienen en casa es más seguro que todos esos linux que escuchan en la calle. Ya he visto algunos posts en blogs en castellano del estilo "al final teníamos razón", "lo de la seguridad de linux era mentira", bla, bla...

En realidad, voy a hacerles notar algunos recaudos que deben tener en cuenta antes de leer informes de este estilo, para no sacar conclusiones apresuradas y volver a caer siempre en el mismo engaño. Para ello me hago eco de un artículo de opinión de Davey Winder publicado en DaniWeb con el que coincido bastante. Transcribo aquí parte del artículo original (énfasis agregado por mi):
"... La suposición [que los lectores pueden desprender de los informes] está basada en datos de investigación concernientes a vulnerabilidades que requieren un parche, o para ser absolutamente claro luego de revisar la declaración de metodología cómodamente publicada por Jeff en un sitio diferente, que han sido arregladas por el proveedor.

"Y cito: «Las vulnerabilidades incluidas en el análisis solo incluyen aquellas para las cuales el proveedor ha confirmado aplicabilidad, típicamente vía una advertencia de seguridad o un parche. El análisis no incluye las vulnerabilidades reveladas públicamente durante el período que aún no han sido arregladas por el proveedor». Entonces, para ser breve, [el informe incluye] las vulnerabilidades que han sido arregladas por el proveedor, pero no los 0-day exploits ni las vulnerabilidades conocidas pero no oficialmente confirmadas vía advertencia, no importa hace cuanto se conozcan: sólo figuran las que el proveedor ha arreglado."
En el artículo de DaniWeb hacen referencia a Secunia, un sitio que muchos conocemos desde hace bastante, pero que siempre es bueno volver a visitar. Cito: "Secunia publica informes independientes de vulnerabilidades listadas tanto por proveedor como por producto, y mantiene archivos históricos de ello, lo que lo hace una lectura interesante y brinda una perspectiva diferente al cuadro de seguridad [que vimos]."

De allí están tomadas los datos del artículo de opinión, y de ahí surgen los datos que publico a continuación (cabe aclarar que la información es del día 22/08/2007 y puede haber variado a la fecha).

Al día de hoy, Secunia informa que Windows XP Pro, presenta 188 advertencias, de las cuales 29 aún no han sido arregladas -un 15% del total- . En el caso de Windows Server 2003 Standard Edition, 8 vulnerabilidades de 135 aún no tienen parche -un 8% del total-.

Para comparar Red Hat Enterprise Linux 4 presenta en Secunia 314 vulnerabilidades todas ellas arregladas. Debian 4.0 Etch por su parte, presenta 68 advertencias, también todas arregladas.

Vuelvo al artículo de opinión:
"... Esto me sugeriría [dice Davey] que Red Hat es realmente más seguro que Windows, si queremos seguir el consejo de no simplificar la seguridad al punto de la inutilidad, pues la capacidad y voluntad de un proveedor para arreglar rápidamente las fallas encontradas debe tomarse en cuenta en cualquier observación seria al argumento de seguridad. Efectivamente, los tiempos de respuesta del proveedor son la clave cuando todos acuerdan que es prácticamente imposible escribir código 100% seguro. La métrica real de seguridad es cuán rápido llegan los parches al usuario: ignorar las vulnerabilidades que aún no han sido arregladas reduce el informe original a no ser más que FUD.

"... si uno se toma el tiempo de leer entre líneas y hurgar un poco más profundamente en lo que se está informando, puede descubrir que lo que realmente dice [el informe] es que los proveedores de Linux son más eficientes que Microsoft en lo que respecta a anunciar fallas y arreglarlas. "
En concordancia al artículo, es innegable que todos los sistemas operativos tienen fallos (hasta OpenBSD tuvo los suyos), pero creo que no sólo importa cuántos tengan, sino también qué gravedad tienen y cuanto tarda el proveedor en arreglarlos.

En fin, lean dos veces lo que encuentran en Internet, que hasta este post tiene sus errores.

jueves, agosto 16, 2007

La molesta marca de agua del Starter Edition

En la informática siempre un poco de azar oculto en todas partes. A mí, en la lotería de equipos que se venden actualmente en el mercado me tocó uno con Windows Vista Starter Edition. No tardé mucho en instalarle Debian Etch, con lo cual trabajo y anda más que bien, pero dejé el sistema con arranque dual, al fin y al cabo la licencia ya está paga.

Para el que no lo conoce, el Starter Edition esta es una más de las distintas versiones de Windows Vista, precísamente la más recortada en funcionalidades, y sólo disponible en países en vías de desarrollo (como el nuestro). En El Francotirador le dicen "El Windows de los pobres" (y con justa razón).

Como sólo lo uso para probar los sitios con el IE7 (hasta hoy, que instalé ies4linux en el Debian) y jugar algún que otro juego sencillo, las limitaciones de funcionalidad no me han molestado mucho. Anda bastante rápido, salvo en la copia y eliminación de archivos (donde realmente no se sabe bien qué diablos está haciendo el sistema operativo, si eliminando los archivos con martillo o calculando los días que faltan para el próximo eclipse de sol). Hay una cosa que sí me molesta bastante, y es la marca de agua con la bandera o "watermark" que aparece abajo a la derecha de la pantalla. Sale siempre sobre todas las ventanas y no encontré forma de eliminarla.

Recurrí a Google para ver si alguien tenía una solución, pero nada apareció; en realidad, salieron un montón de resultados inservibles. Así que no me quedó otra que hacerlo a mano.

Finalmente terminé con este pequeño y sencillo código que he dado en llamar hideflag y con el cual es posible ocultar la marca de agua así nos queda la pantalla limpia (por ejemplo, para jugar al TypusPocus sin molestias) y sin modificar archivos raros ni nada de eso. Símplemente ejecuten hideflag.exe y desaparecerá la marca de agua. Ejecutándolo nuevamente volverá a aparecer. Lo ideal es ponerlo en el inicio de Windows asi ya la pantalla queda limpia desde el arranque.

Descargar: hideflag.zip (resubido dic-12)

Dado que han surgido diversas versiones de este programa en Internet, les dejo aquí las firmas del archivo original para que puedan validarlo si lo han bajado de otro lado:
MD5: a4111e0e6cc3db8a24e93d92c21b04cd
SHA1: a1e2278fcba475f94474795fafe6a2d67a38ce32

En el paquete les dejo el ejecutable y el código fuente, que está en FreePascal porque no tenía ganas de hacerlo en C. Si alguno tiene tiempo el port es bienvenido, lo mismo que las sugerencias.

Compiz Fusion en Debian Lenny con Nvidia o Intel

Actualización 06/10/2007: Chantanito nos ha acercado un excelente dato al apuntarnos con su comentario que los repositorios shame han sido separados por release. Yo no me había percatado de ello pues ya tengo compiz instalado ;-) En el repository of shame tienen toda la data de cual es la línea que deben agregar al sources.list. Para los impacientes que tenemos Debian Lenny 32 bits, es la siguiente:

deb http://download.tuxfamily.org/shames/debian-lenny/desktopfx/unstable/ ./
Mil gracias!!

Como ustedes saben, por junio de este año los proyectos de escritorios 3d Beryl y Compiz se unieron para dar nacimiento a Compiz Fusion, del cual pueden ver algunos videos, como es usual, en youtube.

Esta semana han dado a conocer la primer release de desarrollo, Compiz Fusion 0.5.2, que he probado en dos equipos y la verdad anda sin problemas incluso con una performance un poco mejor (al menos a mi juicio) que los proyectos originales. Algunas de las novedades que se incorporaron, además de los plugins de Compiz y Beryl originales, son:
  • Efectos de reflexión en el cubo
  • Un plugin de exposición de escritorios
  • Un nuevo selector de aplicaciones
  • Un completo gestor de configuración
Para los impacientes, aquí está la receta para tenerlo andando en Debian Lenny. La publico ahora (un poco tarde, por cierto) pues el repositorio de paquetes está más estable que hace unos días.

1. Instalación de los drivers de video

Para aquellos que poseen tarjetas de video nVidia, deben tener instalado y configurado el driver propietario, de lo cual ya hemos hablado en un post anterior. Con algunas modificaciones, las instrucciones son las mismas.

Por las dudas, si tenemos una placa de video nVidia, en el archivo /etc/X11/xorg.conf deberíamos tener:
...
Section "Device"
Identifier "Tarjeta de vídeo genérica"
Driver "nvidia"
Option "AllowGLXWithComposite" "true"
Option "RenderAccel" "true"
EndSection
...
Section "Screen"
...
Option "AddARGBGLXVisuals" "True"
...
EndSection
...
Section "Extensions"
Option "Composite" "Enable"
EndSection
...
Para el caso de una placa de video Intel 915/945/9xx:
...
Section "Device"
...
Option "XAANoOffscreenPixmaps" "True"
...
EndSection
...
Section "Extensions"
Option "Composite" "Enable"
EndSection
...
2. Eliminar los paquetes antiguos de Beryl y Compiz

He tenido algunas dificultades al intentar actualizar los paquetes desde versiones antiguas, por lo que recomiendo remover y purgar todos los paquetes relacionados con Compiz y Beryl que estén instalados en el equipo.

# aptitude purge beryl... compiz... heliodor... emerald... etc, etc...

3. Agregar el repositorio shame

Esta buen alma caritativa se ha encargado de empaquetar Compiz Fusion para Debian, así que aprovecho para agradecer su laburo.

Agregar, entonces, las líneas siguientes a /etc/apt/sources.list

# Compiz Fusion development (shame)
deb http://download.tuxfamily.org/shames/debian-sid/desktopfx/unstable/ ./

Update 06/09/2007

Agrego dos repos más por si tienen problemas con el anterior. El siguiente es también de shame, pero contiene una versión más antigua y un poco más estable de compiz:

deb http://download.tuxfamily.org/shames/debian-sid/desktopfx/snapshot/ ./

Este último lo encontré de casualidad y proviene del O.S. Revolution Unnoficial Debian Repository:

deb http://download.tuxfamily.org/osrdebian unstable compiz-fusion-git

4. Agregar las llaves del repositorio

# wget http://download.tuxfamily.org/shames/A42A6CF5.gpg -O- | apt-key add -

5. Instalar los paquetes de Compiz Fusion

Dependiendo del entorno escritorio en el cual deseamos ver los efectos gráficos, es conveniente instalar...

# aptitude install compiz-fusion-kde (para KDE)
# aptitude install compiz-fusion-gnome (para Gnome)
# aptitude install compiz-gnome emerald emerald-themes (para XFCE)
# aptitude install compiz-fusion-all (todos los paquetes para cualquier entorno)

6. Iniciar Compiz Fusion

Como usuario normal, una vez iniciada la sesión en el escritorio de preferencia, ejecutar

$ fusion-icon

o bien

$ fusion-manager

Como he tenido algunos inconvenientes con gtk-window-decorator, les recomiendo iniciar con el decorador de ventanas emerald. Para ello en vez de ejecutar fusion-icon, ejecuten compiz y luego inicien emerald, de la siguiente forma:

$ compiz &
$ emerald &

Eso debería andar; o por lo menos en mi modesta pc con 256 de RAM y 256 de video anda muy lindo.
Bien, por ahora es todo, los dejo para que disfruten de los atractivos efectos y saquen sus propias conclusiones.

sábado, agosto 11, 2007

De cómo Linus escribió el fsck y comenzó a usar su propio sistema operativo

Un fragmento del artículo en KernelTrap sobre la release 0.10 [2] de Linux:
"... él [Linus] encontró la inspiración para escribir una utilidad fsck para Linux (originalmente sólo capaz de detectar problemas en el sistema de archivos, pero no arreglarlos) cuando accidentalmente escribió sobre su partición minix, «Escribí sobre mi partición minix ayer (no se les ocurra preguntar porqué - algunas cosas mejor olvidarlas :-), y si bien tuve minix-386 levantado y corriendo de nuevo, está algo flojo (sin bash, sin make). Parece que tendré que escribir fdisk/mkfs/fsck para linux así ya no necesitaría tener minix. Salió algo bueno de eso.» En una entrevista del año 2005 [que pueden ver en el cache de Google] Linus ofreció una explicación completa de lo que le pasó a su partición Minix:
"En los inicios cuando estaba haciendo Linux, una de las cosas que hacía era leer las news en Internet desde la computadora de la universidad. Yo discaba a la universidad y generalmente daba ocupado, así que programé un discador automático. [Ese programa] discaría y, si obtenía señal de ocupado, esperaría un minuto y luego discaría nuevamente. Aún no estaba utilizando Linux constantemente, pero estaba usándolo de todas formas. Por error, hice un discado automático a mi disco rígido y básicamente sobrescribí el sistema operativo con las cadenas de discado. Así que tuve que decidir si reinstalaba el sistema operativo que estaba utilizando, o comenzaba a utilizar Linux constantemente. Dije OK, es una señal, empezaré a usar Linux todo el tiempo."
¿habrá errado entre /dev/tty1 y /dev/hd1? geeeezzz.. nos pasa todo el tiempo...
ATZ
ATQ0 V1 E1 S0=0 &C1 &D2
ATDT06109...

jueves, agosto 09, 2007

PHPTAL: un lenguaje de plantillas para PHP basado en ZPT

Estos días estuve trabajando bastante en Python, Zope y Plone, un conjunto de tecnologías que me parecen atractivas y muy versátiles, y en el transcurso del aprendizaje natural encontré las Zope Page Templates (ZPT), que es un lenguaje para creación de plantillas diferente a los normales, pues en vez de crear tags HTML nuevas, añade atributos a las etiquetas existentes.

Según el Zope Book, "el objetivo de las Page Templates es permitir a los diseñadores y programadores trabajar en conjunto fácilmente. Un diseñador puede utilizar un editor HTML visual (el clásico WYSIWYG como Dreamweaver, NVU o Front*cofff*Page) para crear una plantilla, que luego el programador puede editar para hacerla parte de una aplicación. Si es necesario, el diseñador puede volver a cargar la plantilla en su editor visual y hacer cambios en la estructura y apariencia. Tomando ciertos recaudos, el trabajo de edición se puede realizar sin dificultades y no interfiere con la aplicación.

"Las Page Templates apuntan a lograr este objetivo adoptando tres principios:

  1. Permitir la creación y modificación de las páginas con herramientas visuales.
  2. Lo que ve es muy similar a lo que obtiene (WYSIVSTWYG).
  3. Mantiene el código fuera de las plantillas, salvo la lógica estructural.

Una Page Template es como un modelo de la página que generará. En particular *es HTML válido* (e incluso *XHTML válido*!)

Redondeando, quiere decir que nuestro editor visual no hará desastres con la plantilla, como suele ocurrir con otros lenguajes de plantillas, ya que no hay etiquetas extrañas sino atributos en nuevos las etiquetas actuales (y sólo dos namespaces opcionales).

Como me pareció muy cómodo me puse a buscar si en PHP había algo similar, y efectivamente unos buenos muchachos han portado esta idea creando el PHP Template Attribute Language (PHPTAL) que es una implementación de ZPT para PHP . En resúmen, es una librería de generación de plantillas XML/XHTML para PHP.

PHPTAL actualmente va por la versión 1.1.8 y se distribuye como standalone o empaquetado para PEAR. En la introducción hay un ejemplo muy ilustrativo de como funciona la herramienta.

Algunas ventajas:
  • impone mayor separación entre lógica y presentación,
  • advierte si se olvidó de cerrar alguna etiqueta HTML o si la página está malformada,
  • ya no es necesario utilizar htmlentities,
  • las plantillas quedan limpias y legibles,
  • permite insertar texto de ejemplo para previsualizar la plantilla sin necesidad de ejecutarla con PHP,
  • se integra bastante bien con editores visuales,
  • permite la abstracción de datos con un sistema similar a xpath.

Algunas desventajas:

  • es una dependencia de la aplicación,
  • hay que aprenderse los atributos,
  • hay que producir XHTML límpio (aunque esto no sería una desventaja).
Para mayor información les dejo el enlace a la guía de referencia de PHPTAL.

Minivacaciones en Dudignac

Bien, este último tiempo no he publicado nada ya que estuve de minivacaciones en Dudignac, mi querido pueblo natal. En general viajo seguido para visitar a la familia y amigos, y para respirar un poco de aire fresco de campo y despejarme del ambiente y el trajín de la ciudad (aunque Luján siempre es más tranquilo que Capital Federal).

Para quienes no lo conocen (lo que es, casi todo el mundo), Dudignac es una pequeña localidad de unos 2.500 hab. situada a 11 km. de la Ruta Provincial Nº 65, en el partido de Nueve de Julio, provincia de Buenos Aires, Argentina cuya economía se basa casi totalmente en la agricultura y ganadería.

La localidad data del año 1911 y su nombre es en honor a Don Exequiel Dudignac, dueño original de las tierras de la Estancia "La Avanzada", quien donó parte de las mismas para la construcción de las plazas y edificios públicos.

En este instante no tengo fotos pero postear algunas pronto así se dan idea de lo lindo que es el pueblo. Igual desde allí mucho no puedo postear, no hay banda ancha cableada (ni ADSL ni cablemodem), así que solo me queda revisar correo una vez cada tanto por dial-up. ¿Actualizar el Debian de casa? por red ni de casualidad, por eso siempre llevo los paquetes en DVD.

Por ahora les dejo la vista en Google Maps (lamentablemente en baja resolución) y algunos datos geográficos más, para que lo vayan conociendo y no me miren raro cuando les pronuncio el nombre Dudignac. Ah! y lo van a escuchar como "dudignac" con ge y ene, o con eñe como "dudiñac" o también "dudiñá"; aunque los coterráneos le decimos, más familiarmente, El Dudi.

ACTUALIZACIÓN 2008: Si hacen clic en la vista en Google Maps, muy probablemente vean la etiqueta "Villa Eugenio Necochea" sobre la imagen de Dudignac. Esto se debe a un enorme error en la capa de etiquetas de google maps, donde se han intercambiado los nombres de Dudignac, 9 de Julio, y varias localidades más, por otros pueblos y ciudades de Argentina. Esta curiosa (y grave) falla está detallada en el post Un guía para Google Maps que escribí en septiembre de 2008. Por suerte, esto ya está arreglado.

ACTUALIZACIÓN 2009: En este post de hace dos años prometí poner fotos de la localidad. Promesa incumplida, lamentablemente, pues hasta recientemente no pude disponer de una cámara que saque fotografías de calidad (buena iluminación y mínimo 7 mp). A modo de disculpa, si pueden aceptarlo, dejo las excelentes fotos de Dudignac que unos dedicados coterráneos han publicado en el grupo de Facebook al efecto. Créditos a Sonia, Mariano y demás gente.

lunes, julio 02, 2007

Línea de tiempo de distribuciones GNU/Linux

Leo en la edición 209 de Distrowatch Weekly que Andreas Lundqvist ha actualizado en su web la línea de tiempo de distribuciones GNU/Linux. La última edición publicada es la 7.6 y está disponible en formatos PNG y SVG bajo licencia GFDL.

Pueden visualizarla haciendo clic aquí (png, 587kb).

martes, junio 26, 2007

<lolcat align="right">

Esto es para los que picamos HTML seguido :P



De icanhascheezburger.com vía Fabio.com.ar.

Un sencillo método para el desarrollo de sistemas web

Trevor Turton publicó recientemente en su blog un artículo titulado Use Cases on Steroids en el cual discurre sobre un posible método para encarar el desarrollo de software y no salir herido en el intento. Me tomo el atrevimiento de traducir informalmente una parte del texto de su autoría que resume el procedimiento:
  • Durante la fase de elicitación de requerimientos, los desarrolladores trabajan junto al cliente (como organización) para identificar los elementos debajo enumerados. Los desarrolladores representarán estos elementos en una herramienta de modelado acordada y consultarán al cliente para verificar que esto se ha realizado con precisión (esta parte del modelo es simple de controlar por no-especialistas) :
    • Los actores que juegan un rol en el sistema.
    • Una lista jerárquica de las acciones principales que estos actores ejecutarán.
    • Modelos de cada panel requerido para soportar las acciones identificadas; en HTML, si fuera un sistema basado en el navegador.
    • Casos de uso que describen en palabras las diversas acciones identificadas; en HTML si es un sistema basado en web, con enlaces a los paneles modelo.
    • Un modelo de datos que contiene todos los elementos de datos identificados en las acciones y paneles.
  • Durante la fase de diseño:
    • Los usuarios pueden manejarse a través de los casos de uso, viendo los paneles modelo en cada paso del proceso, pudiendo validarlos o corregirlos.
    • Los desarrolladores refinan el modelo de datos según las formas normales, produciendo un diseño de base de datos.
    • Los diseñadores incorporan al modelo las clases, atributos y métodos que serán necesarios para implementar el sistema.
  • Durante la fase de programación:
    • Los desarrolladores engrosan el modelo con el código requerido para implementar el sistema.
    • Los desarrolladores crean la base de datos y las clases requeridas para administrar los datos en ellas.
    • Puede añadirse lógica estándar sencilla a los paneles para propagar los datos ingresadas por los usuarios a los paneles subsecuentes.
    • Otros miembros del equipo de desarrollo refinan el estilo visual de los paneles modelos a fin de que los usuarios los sientan adecuados.
    • Se toman capturas de los paneles clave, que serán firmadas por los propietarios del sistema quienes acordarán que es el estilo visual que requieren.
    • El equipo de desarrollo debe asegurarse que el estilo acordado sea aplicado uniformemente a todos los paneles, preferentemente mediante hojas de estilo.
    • Los propietarios del sistema prueban y firman (o critican) los paneles modificados para asegurar que poseen la funcionalidad y apariencia requerida.
  • Durante la fase de prueba:
    • A medida que se implementan las distintas partes del sistema, se incorpora a los paneles modelo correspondientes la lógica embebida, según sea necesario.
    • Los casos de uso se convierten ahora en scripts de prueba. Los usuarios los utilizarán como guía para evaluar metódicamente el sistema, sólo que ahora la navegación entre paneles se realizará a través de lógica del software en el sistema de prueba, en vez de hacer clics en los enlaces en el caso de uso (aunque los enlaces de los casos de uso pueden utilizarse para navegar los paneles de software apropiados donde ésto tenga sentido, p.ej. donde no se requiere entrada desde un panel anterior).
    • La navegación entre secciones del sistema que no han sido desarrolladas aún puede realizarse a través de los casos de uso, de forma que los usuarios pueden evaluar los componentes en un contexto plausible, en vez ser en forma aislada.
    • Podría implementarse a través de hojas de estilo un esquema de colores convenido para distinguir los paneles en funcionamiento de los paneles en desarrollo.
En realidad no es nada nuevo, muchos de nosotros hemos optado por una metodología similar al desarrollar un sistema web. Lo bueno es que el muchacho se tomó el tiempo de documentarlo y darnos unos muy buenos consejos. So... Thank you very much, Trevor!

lunes, junio 25, 2007

Hace 25 años se estrenaba Blade Runner

Hace 25 años se estrenaba en los EE.UU. una de mis películas favoritas: Blade Runner, dirigida por Ridley Scott (el mismo de Alien) y basada en la novela ¿Sueñan los androides con ovejas eléctricas? de Philip K. Dick. Para los que nos gusta la ciencia ficción clásica y las oscuras imágenes del cyberpunk, Blade Runner es un film obligado.

La película transcurre en un Los Ángeles distópico y aborda una temática amplia: la dependencia en la tecnología, la ingeniería genética y la clonación, la memoria, los simbolismos, la muerte y la inmortalidad, el ambiente y la globalización, y la búsqueda de la identidad, entre otros. La fotografía y la música juegan un rol fundamental en el film, basta decir que la banda de sonido fue compuesta por Vangelis.

Los que navegan bastante en la red, muy posiblemente hayan visto alguna de estas frases en algún foro o como firma de un email:
"The light that burns twice as bright, burns half as long. And you have burned so very very brightly, Roy."
- Eldon Tyrell, a Roy.

"He visto cosas que la gente no creería. Naves de batalla incendiadas mas allá de Orión. Vi rayos C brillar en la oscuridad cerca de Tanhauser Gate. Todos esos momentos se perderán en el tiempo, como lágrimas en la lluvia. Es hora de morir."
- Roy Batty, a Deckard.
Pues bien, ya saben de donde salieron. Si tienen un rato de ocio y la pueden conseguir, les recomiendo la vean de noche y con un buen equipo de audio. También les recomiendo leer el original de Sueñan los androides... ya que contiene elementos no explorados en la película.

lunes, junio 18, 2007

El Congreso español nos enseña cómo NO debe hacerse un sitio web

Leyendo barrapunto encuentro este artículo sobre la Polémica en torno a la web del Congreso de los Diputados de España, como bien dicen en el texto, resaltando la desastrosa programación del mismo, la ínfima seguridad y la irrisoria cifra (y no en la acepción de irrisorio como pequeño, sino como algo que mueve a la risa) que les ha costado la modernización del sitio a los contribuyentes españoles.

Estas publicaciones en blogs y demás serían algo así como un peer-review en el desarrollo web. En este caso, los muchachos se pasaron de buenos haciendo un excelente how-to de cómo no se debe desarrollar un sitio web.

Por Dios, mi esperanza radica en que no se les ocurra seguir el ejemplo español a los gobernantes locales, pues ya lo han hecho con la reforma educativa y así nos fue.

viernes, junio 15, 2007

Algunas citas sobre programación y computadoras

Leyendo la transcripción del programa "Triumph of the Nerds" encontré algunas frases, cuanto menos divertidas, sobre los nerds, la programación y las computadoras que transcribo a continuación:
"Pienso que un nerd es una persona que utiliza el teléfono para hablar con la gente sobre los teléfonos. Y un nerd de computadoras, por lo tanto, es alguien que utiliza una computadora con el objeto de utilizar una computadora."
- Doglas Adams, escritor de ciencia ficción
"Y la gente tiene diversos grados de pasión y diversos tipos de pasión. A algunos les gustan las bases de datos, y para ellos la quinta forma normal es como el nirvana; van en busca de eso, es lo que los levanta por la mañana."
- Christine Comaford, ingeniera de software
"Ni siquiera obedecíamos un reloj de 24 horas: veníamos y programábamos continuamente por unos días. Cuatro o cinco de nosotros, a la hora del almuerzo, nos subíamos a nuestros autos, corríamos al restaurante y nos sentabamos a charlar sobre lo que estábamos haciendo; algunas veces me entusiasmaba tanto hablando de las cosas que me olvidaba de comer, y luego volvíamos y programábamos un poco más. Eramos nosotros y nuestros amigos - ésos fueron días divertidos."
- Bill Gates (si, si, él mismo... y creo que no necesita presentación)
"Comer, bañarse, tener novia, tener una vida social activa es accesorio, se mete en el tiempo de programación. Escribir código es la fuerza primaria que conduce nuestras vidas, así que cualquier cosa que interrumpa eso es un desperdicio de tiempo."
- Doug Muise, diseñador de software
"Y llevé este libro a casa, que describía la computadora PDP 8 y simplemente... oh, era como una biblia para mí. Es decir, todas esas cosas de las cuales por algún motivo me he enamorado, como cuando uno se enamora de un juego de cartas llamado Magic, o se enamora de hacer crucigramas u otra cosa, o tocar un instrumento musical, yo me enamoré de esas pequeñas descripciones de computadoras en su interior, y era un poco como las matemáticas: podía trabajar algunos problemas en papel, resolverlos, y ver como se resolvía, y luego llegar a mis propias soluciones y sentirme bien interiormente."
- Steve Wozniak, co-fundador de Apple
"Tecleabas esos comandos y luego esperabas un rato y luego la cosa haría dadadadadada y entonces te mostraría algo, pero aún así era extraordinario -especialmente para un niño de diez años- poder escribir un programa en Basic o Fortran y que realmente esta máquina tome tu idea y luego de alguna forma la ejecute y dé algun resultado; y si eran los resultados que uno predijo y el programa realmente funcionaba, era una experiencia increíblemente emocionante."
- Steve Jobs, co-fundador y CEO de Apple
"Mirando hacia atrás, recuerdo una oportunidad donde un ingeniero vino a verme con la idea de una computadora que sería utilizada en el hogar. Por supuesto todavía no se llamaba computador personal. Y mientras que él se sentía muy seguro sobre esto, el único ejemplo que pudo dar fue que una ama de casa podía guardar sus recetas en él. Yo no podría imaginar a mi esposa con sus recetas en una computadora en la cocina. Simplemente no parecía tener ninguna aplicación práctica para nada, así que Intel no persiguió esa idea."
- Gordon Moore, co-fundador de Intel y a quien corresponde la ley de Moore
El programa original está lleno de citas y entrevistas de esta naturaleza, así que les recomiendo que lo vean o lean la transcripción disponible.

jueves, mayo 24, 2007

Videos y material de cursos universitarios sobre Ciencias de la Computación (en inglés)

En el sitio web http://www.aduni.org/courses/ se encuentran disponibles bajo licencia CCA-SA los videos y el material completo (en inglés) de los cursos sobre Ciencias de la Computación dictados por la ArsDigita University durante los años 2000 y 2001.

El ArsDigita University (ADU) fue un programa anual e intensivo de pos-bachillerato en Informática basado en el curso de pre-graduados del Massachusetts Institute of Technology (MIT). El programa no requería el pago de cuotas, fue financiado y apoyado por la ArsDigita Foundation, y la mayoría de los instructores eran profesores del MIT. La misión principal de la ADU y del sitio web de ADUni.org es "... ofrecer la mejor educación en Ciencias de la Computación del mundo, a nivel de pre-graduado, a la gente que actualmente no puede acceder a ella".

Los cursos con material disponible son:

Matemática para ciencias de la computación, dictado por Tara Holm
Una introducción básica al Cálculo y al Álgebra lineal. Comprende cálculo diferencial: gráficas de funciones, límites, derivadas, diferenciación sobre problemas del mundo real; cálculo integral: suma, integración, áreas bajo la curva y cálculo de volúmenes; álgebra lineal: espacios de vector, transformaciones lineales, matrices, operaciones sobre matrices y diagonalización.

Estructura e interpretación de programas de computadora, por Holly Yanco
Una introducción a la programación y al poder de la abstracción, basado en el libro homónimo de Abelson y Sussman. Los conceptos clave incluyen: construcción de abstracciones, procesos computacionales, procedimientos de orden superior, datos compuestos, abstracciones de datos, operaciones genéricas, intercambio de mensajes, flujos, interpretación de lenguajes de programación, modelo de máquina, compilación y lenguajes embebidos.

Matemática discreta , por Shai Simonson
Este curso cubre los tópicos matemáticos más relacionados con la Informática: lógica, relaciones, funciones, teoría de conjuntos, técnicas de demostración, inducción matemática, teoría de grafos, combinatoria, probabilidad discreta, recursividad, relaciones recursivas y teoría numérica.

Cómo funcionan las computadoras, por Gill Pratt
Incluye las bases del diseño lógico digital, arquitectura y organización de computadoras, lenguaje ensamblador, diseño de procesadores, jerarquías de memoria. El conjunto de problemas se basa en la utilización del simulador RISC Beta-Sim.

Diseño orientado a objetos, por David Goddeau
Los conceptos del paradigma orientado a objetos, utilizando Java, con énfasis en Ingeniería de Software.

Algorítmos, por Shai Simonson
Se estudia el diseño de algoritmos de acuerdo a su metodología y aplicación. Las metodologías vistas incluyen: divide y vencerás, programación dinámica y algoritmos voraces. Las aplicaciones comprenden ordenamiento, búsqueda, algoritmos de grafos, algoritmos geométricos, matemáticos y de búsqueda de cadenas.

Sistemas, por Luis Rodriguez
Se centra en la ingeniería de sistemas de software y hardware: técnicas para el control de la complejidad, infraestructura de sistemas, redes y sistemas distribuidos, atomicidad y coordinación de actividades en paralelo, recuperación y confiabilidad, privacidad de la información, y el impacto de los sistemas de computación en la sociedad.

Aplicaciones web, por Philip Greenspun
Trata sobre el diseño de un sitio web dinámico con un back-end de base de datos, incorporando lenguajes de scripting, cookies, SQL y HTML. Enfatiza las interfaces computadora-humano y el despliegue gráfico de la información.

Teoría de la computación, por Shai Simonson
Un tratamiento teórico sobre qué puede hacerse y cuán rapido. Se habla sobre aplicaciones, compiladores, búsqueda de cadenas y diseño de circuitos de control. Se analizan las máquinas de estado finito, gramáticas libres de contexto y máquinas de Turing, con sus variaciones; y se bosquejan las nociones de decibilidad, teoría de la complejidad y problemas NP-Completos.

Inteligencia artificial, por Patrick Winston
Un vistazo rápido sobre la inteligencia artificial desde los puntos de vista técnicos y filosóficos. Los temas incluyen búsqueda, A*, representación del conocimiento y redes neuronales.

Taller de Unix
Un taller de auto-aprendizaje para conocer y/o volver a ver un amplio conjunto de herramientas de Unix tales como shell scripts, awk, lex, yacc, grep, etc.

Sistemas de gestión de bases de datos, por Ravi Jasuja
Discurre sobre los sistemas de base de datos desde la capa física, B-trees y servidores de archivos, hasta la capa abstracta del diseño relacional. Incorpora alternativas y aproximaciones genéricas al diseño y la administración de base de datos relacionales y orientadas a objetos, estándares SQL, lenguajes algebraicos de consulta, restricciones de integridad, disparadores, dependencias funcionales, formas normales, transacciones, seguridad y data warehousing.

Probabilidad aplicada, por Tina Kapur
Se enfoca en el análisis, modelado y cuantificación y de la incertidumbre mediante la enseñanza de variables aleatorias, procesos aleatorios simples y sus distribuciones de probabilidad, procesos de Markov, teoremas de límites, elementos de inferencia estadística y toma de decisiones bajo condiciones de incertidumbre.

Realmente encontré aquí un compendio de recursos muy interesantes sobre ciencias de la computación, disponibles para todo el mundo. Lamentablemente, debido a dificultades para encontrar financiamiento y disputas legales entre los fundadores y miembros de la corporación, el programa fue discontinuado tras la graduación de la primer promoción.

Ojalá que sigan surgiendo proyectos de esta naturaleza, que permitan acercar el conocimiento, en forma libre y gratuita, hacia toda la comunidad. Y si fuera en castellano, mucho mejor...

viernes, mayo 18, 2007

Redes Privadas Virtuales con OpenVPN

Buscando información sobre Redes Privadas Virtuales (VPNs), caí en el sitio de OpenVPN:

OpenVPN es una solución VPN SSL que puede adaptarse a un amplio rango de configuraciones, incluyendo acceso remoto, VPNs sitio-a-sitio, seguridad WiFi, y soluciones de acceso remoto a escala empresarial con balanceo de carga, recuperación ante fallos y controles de acceso granulares. Implementa una extension de red segura en las capas 2 o 3 de OSI usando el protocolo estándar SSL/TLS. Está implementada en espacio de usuario utilizando dispositivos virtuales de red tun/tap y TLS/SSL, entre otras cosas. Y para mejor, es GPL.

Les recomiendo leer la ilustrativa presentación de James Yonan: Understanding the User-Space VPN: History, Conceptual Foundations, and Practical Usage.

viernes, mayo 04, 2007

Come mis datos: por qué todos malinterpretamos la E/S de archivos

En besttechvideos publicaron un video de la última LinuxConf en Australia donde Stewart Smith, un ingeniero de software de MySQL AB, comenta acerca de cómo debemos proceder para mantener la integridad de los datos en disco al desarrollar una aplicación.

El video está disponible aquí (en flash) o aquí (en ogg).
Como la disertación es en inglés, les dejo una síntesis de lo que Smith comenta:

Una breve introducción

Al comienzo de los tiempos, toda la entrada y salida de archivos era sincrónica; es decir, una llamada a grabar implicaba que los datos llegaban al dispositivo físico en el momento, y el procesamiento se detenía hasta finalizar la operación. Por razones obvias la performance de este método es muy baja, de ahí que surgió la llamada entrada/salida asíncrona, que permite continuar la ejecución del código mientras los datos son leídos o escritos a disco.

Lamentablemente, no existe un mundo sin fallas: las computadoras se cuelgan, se corta la luz, se termina la batería, alguien se tropezó con el cable, etc...

Bien, ¿cuando ocurre un corte de energia, qué es lo que se pierde?
  • Lo que está en buffers de la aplicación
  • Lo que está en buffers de las librerías
  • Lo que está en buffers del S.O. (page/buffer cache)
¿Dónde radican los errores que llevan a la pérdida de datos?
  • En el código de la aplicación
  • En el código de la librería utilizada
  • En el código del kernel del sistema operativo
¿Cuál es el flujo de los datos desde una aplicación hacia el disco, al grabar?

En un resumen burdo: con las funciones fwrite, fprint y otras, la aplicación pasa los datos a la librería (p. ej., glibc); la librería a su vez dirige los datos con write y similares al sistema operativo; y este último hacia el disco mediante page out y flushing periódico realizado entre 5 y 30 segundos (o más si se trata de una laptop). En cualquiera de estos momentos nuestros datos son vulnerables ante una falla de energía.

¿Es
write atómico? ¿Qué pasa si se corta la energía en la mitad de una operación write?

Pues no, y si se corta la energía en la mitad de la operación lo más probable es que la información en el archivo sea un conglomerado entre los datos de la versión anterior y los de la que se estaba guardando.

¿Cómo puede evitarse esto?

El truco más viejo consiste en escribir sobre un archivo temporal y luego renombrar al finalizar la operación de escritura. De esa forma, los datos originales estarían seguros aún si se corta la energía durante la etapa de escritura del archivo temporal. Y nunca tenemos que olvidarnos de las excepciones (permiso denegado, espacio en disco agotado).

¿Hummm... por qué dice estarían en la afirmación anterior?

Aquí tenemos una interesante cuestión. Stewart indica en que close y rename no implican sync. Redondeando, nadie asegura que la operación de cambio de nombre rename se realice después del write y consecuente close, aún estando en el orden correcto. Las operaciones sobre los datos de un archivo (tales como la grabación) se almacenan en buffers diferentes a las operaciones sobre los metadatos (tales como el renombrado), por lo que puede ocurrir (y generalmente ocurre) que estas últimas se realicen primero. En el triste caso de un fallo de energía, habremos perdido la información original por haberse efectuado el cambio de nombre primero, y además tendríamos un archivo corrupto, dado que los datos habrían quedado a medio grabar.

Por suerte para nosotros, el modo ordered del sistema de archivos ext3, nos asegura que el orden de prioridad es: primero write, luego close y luego rename. En otras palabras: primero grabar los datos al disco, luego actualizar el inodo y finalmente actualizar la entrada en el directorio.

Bien, ahora sabemos que haciendo fsync mas la técnica del archivo temporal, sobre un sistema de archivos ext3 y efectuando los controles de errores correspondientes, si ocurre un fallo durante una operación de escritura, los datos originales se mantienen seguros...

¿Qué tal en otras plataformas?

El Sr. Smith nos da una advertencia interesante cuando observa que el estándar POSIX define como válida una implementación de fsync nula. En otras palabras, no podemos quedarnos tranquilos al utilizar fsync en nuestras aplicaciones, pues puede que el sistema operativo subyacente implemente dicha función sólo haciendo nada. O sea, que una fsync implementada como sigue es válida en el estándar POSIX:

int fsync (int fd) { return 0; }

¿Y cómo se dio cuenta?

Cuando se cansó de tener páginas corruptas con MySQL, pues el fsync de MacOS X no descarga a disco el contenido del buffer de escritura, sino que se requiere un fcntl adicional. Así que hay que hacer algunas definiciones diferentes dependiendo del sistema operativo para el cual se compile la aplicación...

En el video, Stewart también discurre con bastante detalle sobre el tratamiento de archivos de gran tamaño y las técnicas utilizadas para la recuperación de datos (undo/redo logs) y prealocación de espacio.

En fin, un poco de charla para espabilar las neuronas y refrescarse con en inglés. Espero que lo disfruten...

miércoles, mayo 02, 2007

09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0

A ver...

09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0
09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0
09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0
09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0
...

Ufff... lo tendré que repetir varias veces para poder recordarlo.

Por si no lo saben, es la "llave de procesamiento" que uno requiere para poder desencriptar y poder ver las películas HD-DVD codificadas con AACS. Obviamente también se requiere algo de software, pero es lo de menos. Y por si las libertades fueran muchas ya hay intentos de censurar dicho numerillo, siempre bajo la tutela de la tristemente famosa DMCA.

Por ello, me hago eco de lo dicho por la Asociación Linux Español:

"Gracias a la publicación de este código, dicha práctica ilegal que pretendía poner un freno al desarrollo tecnológico, al crecimiento de la industria, a la libre competencia, y libertad de elección de los usuarios, ha llegado a su fin. La Asociación Linux Español llama a los usuarios a divulgar este código, por el libre desarrollo de la industria, por la libertad de la tecnología, y por la libertad de los usuarios."

Publicado por yo el día 09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0 a las 09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0 horas.

lunes, abril 16, 2007

FLISOL 2007 - Festival Latinoamericano de Instalación de Software Libre

El 28 de abril próximo se realizará una nueva edición del Festival Latinoamericano de Instalación de Software Libre -- FLISOL 2007, el evento de difusión de Software Libre más grande en Latinoamérica que se realiza desde el año 2005 y su principal objetivo es promover el uso del S.L., dando a conocer al público en general su filosofía, alcances, avances y desarrollo.

Para tal fin, las diversas comunidades locales de software libre (en cada país, en cada ciudad/localidad), organizan simultáneamente encuentros en los que se instala de manera gratuita y totalmente legal, software libre en las computadoras que llevan los asistentes. Además, en forma paralela, se ofrecen charlas, ponencias y talleres, sobre temáticas locales, nacionales y latinoamericanas en torno al S.L., en toda su gama de expresiones: artística, académica, empresarial y social.

Luján es una de las ciudades participantes, bajo la organización del Grupo de Usuarios de Software Libre de la Universidad Nacional de Luján (UNLuX). El encuentro será el sábado 28 de abril a las 12:30 hs, en las instalaciones de la Universidad Nacional de Luján, y está dirigido a todo tipo de público: estudiantes, académicos, empresarios, trabajadores, funcionarios públicos, entusiastas y aun personas que no poseen mucho conocimiento informático.

El objetivo principal es compartir conocimientos y ansias de libertad, por ello la asistencia es totalmente libre y gratuita.

Pueden encontrar más información en las direcciones:

http://www.installfest.info/
http://www.installfest.info/FLISOL2007/Argentina/Lujan

Actualización 18/04/2007: Dejo disponibles para descarga el afiche y el folleto de promoción en formato PDF.

domingo, abril 08, 2007

Debian GNU/Linux 4.0 es oficialmente estable

Con esto quiero decir que la versión 4.0 (Etch) de Debian Gnu/Linux fue publicada luego de varios meses de desarrollo y constituye hoy en día la distribución estable de nuestro sistema operativo favorito. Para quienes tienen la versión 3.1 (Sarge) hay novedades, ya que también fue actualizada recientemente.

Las notas de publicación de Etch detallan algunas de las características que podemos encontrar:
  • Entornos de escritorio KDE 3.5 y Gnome 2.14 y Xfce 4.4.
  • Instalación con interfaz gráfica.
  • Gestor de paquetes con verificación de integridad y actualización incremental.
  • Once arquitecturas soportadas, con soporte oficial para Intel y AMD de 64 bits
  • Discos de instalación diferentes para cada entorno de escritorio (como ya habiamos visto)
En síntesis, un sistema operativo altamente recomendable, que ya se puede descargar por bittorrent, http/ftp o jigdo.

sábado, abril 07, 2007

Pegarle a un maestro

Mi docente y buen amigo Fernando nos ha hecho llegar en su blog un sencillo pero iluminador artículo de opinión de Mex Urtizberea publicado en la edición impresa del 6 de abril del diario La Nación.

Se llama Pegarle a un maestro y es de lectura obligada.

martes, marzo 20, 2007

nVidia + AIGLX + Beryl à la Debian

Siguiendo con la temática de los escritorios atractivos y en adición al post previo sobre Compiz, les presento (para los que no lo conocen aún) el proyecto Beryl, que es un fork del anterior, desarrollado por el Beryl Team bajo licencia GPL.

Actualmente va por la versión 0.2.0, pero ya es usable y contiene una multitud de efectos y características, algunas tanto bonitas como útiles, tal como la vista previa de las ventanas en la barra de tareas).

Pueden ver Beryl en acción en este video o este otro. El docker que ven en ambos es kiba-dock que parece estar muy bonito pero aún no lo he probado.

La instalación en Debian como de costumbre no es muy compleja, salvo el hecho de que como el paquete no está en los repositorios oficiales hay que hacer uno o dos pasos más para obtenerlo.

Como primera medida hay que tener instalado el driver nVidia, para ello pueden seguir los pasos 1 a 3 del post previo sobre Compiz. Así que arrancaremos por el paso 4...

4. Instalación del paquete beryl

Abrimos el archivo /etc/apt/sources.list y añadimos el repositorio como sigue:

deb http://debian.beryl-project.org/ etch main
deb-src http://debian.beryl-project.org/ etch main

Luego, actualizamos la lista de paquetes e instalamos los paquetes:

apt-get update
apt-get install beryl beryl-settings-simple emerald emerald-themes

Los muchachos del Beryl Team han desarrollado un gestor de configuración muy completo desde el cual se pueden modificar infinidad de propiedades, pero para hacer las cosas más sencillas les recomiendo utilizar el gestor beryl-settings-simple que va directo al grano. Además de emerald, que es el decorador de ventanas por defecto en Beryl, hay dos opciones más:
  • emerald, que es el más genérico y propio de Beryl.
  • heliodor, que utiliza los temas de metacity, para usuarios de Gnome.
  • aquamarine, que utiliza los temas de kwin, para usuarios de KDE.
5. Añadir beryl al inicio de sesión gráfica

Sólo queda añadir beryl al inicio de sesión gráfica, lo cual podemos hacer en XFCE añadiendo beryl-manager a la lista de aplicaciones para autoarranque (xfce4-autostart-editor) disponible en el menú de configuración.

Y eso es todo. Como posdata les recomiendo que prueben las animaciones de apertura y cierre de ventanas que están excelentes, en especial una donde la ventana se quema por completo (con humo inclusive).

martes, marzo 13, 2007

CD-ROM de materiales de FLOSSIC 2007

En el marco del Congreso Internacional de Sistemas de Software Libre y de Código Abierto desarrollado en Jerez de la Frontera los días 7, 8 y 9 de marzo de 2007 se distribuyó un CD-ROM recopilatorio de documentación digital acerca de software libre.

Entre los contenidos del mismo figuran las actas de los trabajos presentados en el congreso, libros y artículos sobre la filosofía del software libre, documentos, tutoriales, guías y manuales muy completos sobre aplicaciones y sistemas operativos libres.

Pueden acceder a la versión on-line del CD-ROM, aunque les recomiendo que descarguen el contenido del mismo porque es una muy buena compilación.

Van mis felicitaciones a los editores del CD.

jueves, marzo 01, 2007

Back on track

-"Ha sido un largo tiempo, pero valió la pena."

Después de un buen período de vacaciones durante todo enero en el cual estuve lo más alejado posible de una computadora, y luego de retomar las labores diarias en febrero, he ingresado a Blogger con los datos de mi cuenta que apenas recordaba.

Si bien no me mantuve desinformado del todo (creo que revisé los feeds 2 veces el primer mes), la verdad es que no recuerdo haber encontrado algo digno de escribir un post.

Por otro lado, lo que yo esperaba que pasara (¡Que saliera Etch!), no pasó por justas razones.

Una de las pocas buenas nuevas es la liberación de la primer versión estable del driver NTFS-3G del cual ya había hablado un tiempito antes.

El otro motivo, y la razón fundamental de este post, es hacerles llegar el detalle de una encuesta realizada por Pingdom (artículo en inglés), una compañía de monitoreo de disponibilidad, donde se investigó acerca de la tecnología detrás de siete sitios populares: Techcrunch, Feedburner, iStockPhoto, YouSendIt, Meebo, Vimeo y Alexaholic. De todas ellas la que más conozco es Meebo (un webmessenger) por utilizarlo bastante seguido.

Los resultados:
  • Todas utilizan Linux exclusivamente, salvo Alexaholic que esta hosteado sobre Windows.
  • Aquellas sobre plataforma Linux utilizan Apache como servidor web, salvo Meebo que utiliza lighttpd.
  • Todas utilizan MySQL como servidor de base de datos.
  • PHP es el lenguaje de scripting de la mayoría.
  • Cinco de los siete sitios usan clustering para su servicio web, y cuatro de ellos para sus bases de datos.
Todas las respuestas están disponibles en esta matriz de infraestructura (pdf).