Nuevo año, nuevas expectativas

Empiezo a escribir esta entrada con una ligera sensación de decepción y tristeza...

  • Decepción: porque este año que acaba, a pesar de que aprendí bastante en algunos aspectos, lamentablemente no ha sido como hubiera querido.
  • Tristeza: por toda la carga emotiva que he tenido estos últimos días, espero que esto se me pase en unas cuantas horas, al menos por un momento... aunque leer cosas como la siguiente te hacen sentir un poco mejor:

    A veces la vida te pega en la cabeza con un ladrillo. No pierdas la fé. Estoy convencido que lo único que me mantuvo en pie era el hecho que amo hacer lo que hago. Tienes que encontrar eso que amas; esto aplica en tu trabajo como en tus relaciones amorosas. Una gran parte de tu vida estará enfocada en tu trabajo y la única manera de sentirte realmente satisfecho es creer que lo que haces es un excelente trabajo. La única manera de lograr un excelente trabajo es amando lo que haces. Si no lo encuentras todavía sigue buscando. No te rindas. Como todas las cosas relacionadas al corazón, sabrás exactamente cuando lo encuentres. Y, como en cualquier gran relación se va poniendo mejor y mejor a medida que el tiempo pasa. Así que sigue buscándolo hasta que lo encuentres, no te rindas.

    (…)

    Tu vida tiene un límite, no la malgastes viviendo la de otra persona. No atrapes a ti mismo por un dogma el cual implica vivir con los resultados de los pensamientos de terceros. No dejes que el ruido de las opiniones de otros ahoguen tu voz interna. Y lo más importante: ten el coraje de seguir tu corazón y tu intuición. Ellos de alguna manera saben lo que realmente quieres ser; el resto es secundario.

Para no cometer los mismos errores del 2006, pongo aquí algunas cosas que tengo que realizar el siguiente año (en especial el punto 1):

  1. Conseguir una beca para realizar un master -fuera de Perú- en Ciencias de la Computación.
  2. Reunir la mayor cantidad de dinero posible para solventar los gastos que impliquen la realización del punto 1. Se agradece de antemano si colaboran con lo de Adsense 😀
  3. Intentar realizar mi tesis de grado. Este punto ha sido la piedra en el zapato del 2006, ya que con el trabajo se me ha hecho dificil avanzar algo.
  4. Mejorar en gramática y ortografía.
  5. Publicar entradas en este blog con regular frecuencia.
  6. Convencer a mis amigas(os) y familiares para que inicien un blog.
  7. Abrir un blog personal.

Finalmente, doy las gracias a cada cada uno(a) de ustedes por haber dedicado parte de su valioso tiempo a leer este pequeño blog, espero que podamos seguir intercambiando algunas ideas/opiniones en el futuro.

Que tengan un feliz y productivo año 2007.

2da Olimpiada “CD de Oro”

Hace algunos minutos me acabo de enterar de la 2da Olimpiada "CD de Oro", organizado por un instituto tecnológico de Perú. Las áreas de competencia de este concurso están divididas en:

  • Diseño de Páginas Web Estáticas
  • Diseño de Páginas Web Dinámicas
  • Desarrollo de Aplicaciones de Escritorio
  • Desarrollo de Aplicaciones Cliente-Servidor
  • Desarrollo de Aplicaciones para Oficina

Dado que últimamente ando algo corto de dinero :D, me puse a leer las bases del concurso para poder participar en la categoría de Diseño de Páginas Web Dinámicas, y miren uno de los -tantos- errores que encontré:

Diseño de Páginas Web Dinámicas

Una página es dinámica cuando se incluye cualquier efecto especial o funcionalidad y para ello será necesario utilizar otros lenguajes de programación, aparte del HTML, como el PHP, ASP y JavaScript o muchos mas como Ajax,Ruby on Rails; estos permiten responder de manera inteligente a las demandas del navegador y que permiten la automatización de determinadas tareas tediosas e irremediables como pueden ser las actualizaciones, el tratamiento de pedidos de una tienda virtual, etc.

En ese sentido, la página web dinámica es aquélla, cuyo contenido se genera a partir de lo que un usuario introduce en un web o formulario.

Me parece bien que hagan este tipo de concursos, pero los organizadores mínimamente deberían preocuparse en poner cosas coherentes en las bases, lo único que logran con este tipo de errores es desprestigiar el concurso y su institución.

¿O será que hoy 28 cambiaron intencionalmente las bases de ese concurso? Oh wait!

Video sobre PostgreSQL

Gavin Sherry, explica sobre el funcionamiento interno de WAL y otras características que pueden ser de interés para los DBA que trabajen con esta base de datos:

In computer science, write ahead logging (WAL) is a family of techniques for providing atomicity and durability (two of the ACID properties) in database systems.

In a system using WAL, all modifications are written to a log before they are applied to the database. Usually both redo and undo information is stored in the log.

The motivation for WAL is to allow updates of the database to be done in-place. The other obvious way to implement atomic update is with shadow paging, which is not in-place. The main advantage of doing updates in-place is it reduces the need to modify indexes and block lists.

Fuente: http://postgresql.fastware.com/blog/fujitsu_advanced_postgresql_talk_1

Y el ganador es…

Bien señores, el sorteo ya tiene un feliz ganador: Karonte

Ganador del sorteo navideño

El código para determinar el ganador ha sido casi el mismo que se empleó en un sorteo anterior, si tienen curiosidad, pueden descargarlo desde esta dirección.

Por favor Karonte, escríbeme a alex at buayacorp dot com indicandome tu nombre completo y cuenta de paypal. Esperaré hasta las 9 p.m. (GMT-5) del 28/12/2006, caso contrario me veré obligado a hacer un nuevo sorteo 😀

Gracias a todos los que participaron!

Problema con los filtros genéricos

Hoy, acabo de encontrar en un foro la siguiente porción de código, que según su autor protege de ataques SQL Injection y XSS:

php:
# Función para evitar ataques SQL injection y XSS
function limpiar_sql($value){
    $value = trim(htmlentities($value)); // Evita introducción código HTML
    if (get_magic_quotes_gpc()) $value = stripslashes($value);
    $value = mysql_real_escape_string($value);
    return $value;
}

El problema con este tipo de funciones es que dan una falsa sensación de seguridad si éstas no son aplicadas en el lugar correcto, por ejemplo si intentamos usar esa función para el siguiente ejemplo:

php:
$url = limpiar_sql($_POST['url']);
// Guardar el valor...

// Mostrar la url
echo '<a href="' . $url . '">enlace</a>";

Veremos que la porción de código mostrada es vulnerable a XSS si el valor de url contiene algo como javascript:alert(document.cookie).

Si recordamos una entrada anterior, el bug en asp.net que permite realizar ataques XSS tiene un problema similar (uso de HttpUtility.HtmlEncode en lugar de HttpUtility.UrlEncode).

Como reflexión final, si queremos hacer uso de este tipo de funciones para validar/filtrar todos nuestros datos, debemos saber realmente que estamos haciendo.