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 SpolskyLo mejor de todo: la pregunta que formula Ricardo.
viernes, diciembre 28, 2007
Sobre los contenidos universitarios
jueves, diciembre 06, 2007
Java 1.4, los certificados, y la p...
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:
- Suponiendo que el JRE se encuentra en /usr/lib/j2se/1.4/jre/
- Descargar e instalar el jar de BouncyCastle CryptoProvider en $JRE/lib/ext
- Descargar e instalar los archivos de la Unlimited Strength Jurisdiction Policy 1.4.2 en $JRE/lib/security
- Modificar el archivo $JRE/lib/security/java.security estableciendo los proveedores de seguridad como sigue:
security.provider.1=sun.security.provider.Sun
El de BouncyCastle debe ser el segundo.
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
Bueno los dejo por ahora así como algo. Saludos!
sábado, noviembre 17, 2007
Algunos temas clásicos de los 80s
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 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
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
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
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 11, 2007
Estos anuncios antipirateria son cada vez mas fuertes
Un post algo tardío debido a mi fin de semana off-line.
De la hilarante serie The IT Crowd, vía Universo Linux.
martes, septiembre 04, 2007
Nuevas incorporaciones a Debian
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
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
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
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.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]."
"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."
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.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.
"... 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 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
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
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
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:
Para el caso de una placa de video Intel 915/945/9xx:...
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
...
2. Eliminar los paquetes antiguos de Beryl y Compiz...
Section "Device"
...
Option "XAANoOffscreenPixmaps" "True"
...
EndSection
...
Section "Extensions"
Option "Composite" "Enable"
EndSection
...
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
"... é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
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:
- Permitir la creación y modificación de las páginas con herramientas visuales.
- Lo que ve es muy similar a lo que obtiene (WYSIVSTWYG).
- 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).
Minivacaciones en Dudignac
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
Pueden visualizarla haciendo clic aquí (png, 587kb).
martes, junio 26, 2007
Un sencillo método para el desarrollo de sistemas web
- 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.
lunes, junio 25, 2007
Hace 25 años se estrenaba Blade Runner
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."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.
- 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.
lunes, junio 18, 2007
El Congreso español nos enseña cómo NO debe hacerse un sitio web
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
"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."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.
- Gordon Moore, co-fundador de Intel y a quien corresponde la ley de Moore
jueves, mayo 24, 2007
Videos y material de cursos universitarios sobre Ciencias de la Computación (en inglés)
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
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)
- 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
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
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
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
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)
sábado, abril 07, 2007
Pegarle a un maestro
Se llama Pegarle a un maestro y es de lectura obligada.
martes, marzo 13, 2007
CD-ROM de materiales de FLOSSIC 2007
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
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.