¡Feliz dia del programador!

Como me indica mi hermana, porque realmente no lo recordaba, el dia 256 del año es el glorioso dia del programador. Los años biciestos cae 12 de septiembre, si no caeria 13.

¡Feliz dia a todos los sufridos creadores de bugs!

AJAX Caching (Cacheo en AJAX)

Como siempre, nuevos problemas, en general, ademas de nuevos dolores de cabeza, traen nuevos aprendizajes. Fue el caso de AJAX en esta ocasión.

Básicamente lo que trataba de hacer era, cada una X cantidad de tiempo, revisar un script PHP externo en busca de un resultado nuevo. Todo iba perfecto, hasta que empece a notar que había un delay importante entre chequeo / resultado, no se reflejaba el estado real con el que traía el Javascript. En vano intente cosas como usar POST en vez de GET, o cosas mas alocadas como Reverse Ajax (como el framework Xaja). La solución era mucho mas simple, el cache.

Parecería que javascript guarda en cache los resultados de URL iguales, y recién los actualiza cuando uno hace un verdadero refresh (CTRL + F5) o cuando pasa un determinado tiempo.

La solucion:

Muy simple, alterar la URL de request, sin alterar nuestro pedido, por ej, si pedis un request a la url:

funcionGetXML("http://192.168.1.1/request.php?id="+id);
 

Simplemente debemos agregarle algún tipo de string que varíe en cada ejecución. Hay 2 opciones, un Math.random() o crear un objeto Date y usar el metodo getTime(), quedando así:

var fecha = new Date();

fecha_ahora = fecha.getTime();

funcionGetXML("http://192.168.1.1/request.php?id="+id+"&time="+fecha_ahora);
 

Voila

Limpiar “messy characters” (o como quitar esos caracteres que agrega Windows)

Una vez mas, vengo a dejar una pizca de sabiduria que voy adquiriendo de casualidad o peleandome con los ordenadores.

Se sabe que al abrir un archivo en Windows, sobre todo codigo fuente de scripts o programas, ese archivo deja de ser el que era antes. Windows reemplaza los espacios por otros caracteres, no profundize mucho en el tema, pero el codigo fuente de tus scripts, magicamente, deja de funcionar.

Por eso vengo a compartir el siguiente script Perl para solventar este problema. Crean un archivo llamado “fixer.pl” y le copian el siguiente codigo:

#!/usr/bin/perl

die "Usage: $0 < files >\n" unless @ARGV;

for $file (@ARGV)
{
open IN, $file or die "$0: Cannot open $file for input!\n";

my @lines = <IN>;

close IN;
open OUT, "> $file" or die "$0: Cannot open $file for output!\n";

s/\r$// for @lines;
print OUT for @lines;
}

Luego, le dan permisos de ejecución:

chmod +x fixer.pl

Y lo usan asi:

./fixer.pl sourcecode.php

EDIT: Me pasan un tip mas rapido para hacer este trabajo, usando el siguiente comando:

sed ’s/\\r//g’ archivo

Resolviendo embrollos ajenos: Reemplazo masivo en MySQL

Hace poco cambie el dominio principal de mi hosting, y luego de resolver todos los pequeños caos que se fueron sucediendo, llegue a algo que me sacaba el sueño.
Las imágenes de mis posts, las viejas, no se mostraban adecuadamente. Luego descubrí que el maravilloso sistema de uploads de fotos en Wordpress usa Paths absolutas directamente en la base de datos, en consecuencia, habían quedado todas las url de imágenes apuntando al viejo dominio.
Antes de agarrar todos los posts, uno por uno, googlie un segundo y encontré esto:

UPDATE table_name SET column_name = REPLACE(column_name,"original_string","replace_string")

Que aplicado a mi caso era algo asi:

UPDATE `posts` SET `post_content` = REPLACE(`post_content`,"fenixforum.com.ar","duckman.com.ar")

Ahora ya lo saben chiquillos, nunca confien en los demas (?)

Mi primer programa en C

#import <stdio.h>

int main(void){

printf("lalala\n");

return 0;

}

Ya vendra mucho mas… agradesco a Aeryus por el lindo pdf que me facilito:

Introduccion a la Programacion en C