Archivo de la categoría Programación

Ofuscador de direcciones de email



He recibido alguna que otra felicitación por la forma en que ofuscamos las direcciones de email en las páginas de comentarios de Simple PHP Blog.

El algoritmo utilizado es el resultado de la combinación entre la idea de Alex y la mía, por lo que no es de extrañar que actualmente sea bastante efectivo.

El funcionamiento es bien sencillo. Partiendo de una dirección de email típica, por ejemplo [email protected], se transformaría en <script language="Javascript" type="text/javascript">s0='&#121;&#111;'; s1='&#109;&#105;&#100;&#111;&#109;&#105;&#110;&#105;&#111;&#46;&#101;&#115;'; document.write('<a href="mailto:' + s0 + '@' + s1 + '">' + s0 + '@' + s1 + '</a>');</script>; en vez de en el tradicional <a href="mailto:[email protected]">[email protected]</a>.…

Continuar leyendo...

Hisoft Basic



El compilador de Basic de Hisoft para el Sinclair ZX Spectrum de 48K, apareció por primera vez en 1986.

Fue escrito por Cameron Hayne, quien estima que empleó en el desarrollo un año hombre, lo cual sería hoy en día un esfuerzo minúsculo para desarrollar un compilador.

Estaba totalmente programado en código máquina del Z80, apenas ocupaba 12 Kb de memoria. Ésta pequeña maravilla era capaz de compilar la mayoría de programas Basic sin ningún cambio. A diferencia de otras herramientas, soportaba totalmente los números en coma flotante.

Posteriormente se fueron corrigiendo errores, y añadiendo nuevas funcionalidades, hasta llegar a la versión 1.2 de 1987.…

Continuar leyendo...

Actualización a Simple PHP Blog 0.4.0



Se ha liberado el nuevo SPHPBlog 0.4.0 final.

Con la cantidad de cambios que incluye, en el último momento Alex ha decidido bautizarla como 0.4.0 en vez de 0.3.8.

Como de costumbre, desde hace unas horas, mi weblog, está ya actualizado a esta nueva versión.

Lo podéis descargar desde sourceforge.net/project/showfiles.php?group_id=106696.



Continuar leyendo...

Documentación de MySQL en CHM



Por fin MySQL AB, ha escuchado nuestras súplicas, y ha decidido distribuir el manual de su base de datos también en formato HTML Compilado (CHM). Lo podéis descargar en dev.mysql.com/get/Downloads/Manual/manual.chm/from/pick.

Utilizar la versión HTML, o PDF era muy engorroso. Ya solamente falta que liberen la versión de MySQL para Windows compilada con el Intel C++, al igual que existe para Linux.

Casi al unísono, los amigos de PHP, han actualizado el manual CHM extendido con anotaciones, ¡el compañero ideal! Está en es2.php.net/get/php_manual_chm.zip/from/a/mirror.



Continuar leyendo...

Lector de feeds RSS 100% Javascript



Después del artículo de HTTPWebRequest, he decidido hacer una mini demostración de sus posibilidades.

El siguiente script, escrito 100% en Javascript, es capaz de procesar los titulares de cualquier feed RSS:

<script language="Javascript">
function GetRSS (psUrl)
{
var oHttp=false;
/*@cc_on @*/
/*@if (@_jscript_version>=5)
{
var asParsers=['Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0',
'Msxml2.XMLHTTP.3.0', 'Msxml2.XMLHTTP', 'Microsoft.XMLHTTP'];
for (var iCont=0; ((!oHttp) && (iCont<asParsers.length)); iCont++)
{
try
{
oHttp=new ActiveXObject(asParsers[iCont]);
}
catch(e)
{
oHttp=false;
}
}
}
@end @*/
if ((!oHttp) && (typeof XMLHttpRequest!='undefined'))
{
oHttp=new XMLHttpRequest();
}
oHttp.open('GET', psUrl, false);
oHttp.send(null);
sDatos=oHttp.responseText + ' ';
iCont=sDatos.indexOf('<item>', 0);
while (iCont!=-1)
{
sTitulo=sDatos.substring(sDatos.indexOf('<title>', iCont)+7,
sDatos.indexOf('</title>', iCont));
sLink=sDatos.substring(sDatos.indexOf('<link>', iCont)+6,
sDatos.indexOf('</link>', iCont));
document.write('<a href="' + sLink + '" target="_blank">' +
sTitulo + '</a><br>');
iCont=sDatos.indexOf('<item>', iCont+1);
}
}
GetRSS('//www.javiergutierrezchamorro.com/rss.php');
</script>

En efecto, el código sería mejorable de muchas maneras, por ejemplo haciendo la lectura de forma asíncrona, o utilizando expresiones regulares para obtener los atributos del artículo.…

Continuar leyendo...

HTTPWebRequest



He estado jugando un rato con los famosos HTTP Web Requests, que desde que se usan en GMail o Google Suggest, para evitar recargas de páginas se han puesto muy de moda.

La forma de utilizarlo es realmente simple, ya que todo se basa en utilizar el correspondiente objeto para leer los datos remotos que necesitemos. La principal dificultad estriba en que para Internet Explorer tenemos diferentes componentes ActiveX que podemos instanciar, y no todos tienen porque estar instalados en el sistema. En cambio los navegadores basados en Gecko, lo soportan nativamente, y Opera solamente a partir de la versión 8.…

Continuar leyendo...

Paralelización de procesos



Cuando se programa un algoritmo, se pueden ir resolviendo sus partes en serie o en paralelo.

La opción de paralelizar, en efecto aumenta el rendimiento cuando hay una etapa que tiene un elevado período de espera, ya que las otras pueden seguir avanzando.

Una de las novedades de Windows XP, era que durante el proceso de arranque se paralelizaban los procesos de comprobación y chequeo. De esta forma no había que esperar hasta que un dispositivo respondiese, o diera timeout, para ir repitiendo el proceso con los otros dispositivos.

Que la aplicación de esta idea es buena, lo demuestra el artículo que leo en Anedonia.net, informando que los desarrolladores de Linux, están trabajando para incorporar esta característica en el proceso de arranque.…

Continuar leyendo...

NOSPAM. Resultados II



En 4 meses, de funcionamiento se han registrado casi 40.000 accesos de buscadores a la página señuelo antispam.

Ya en su versión 1.32, genera más de 20.000 direcciones de email aleatorias.

Si quieres saber como funciona NOSPAM, tienes los detalles aquí.

Para colaborar con la causa, solamente debes colocar un enlace a www.javiergutierrezchamorro.com/_nospam/nospam.php.…

Continuar leyendo...

Actualización a 0.3.7r2



Acabo de actualizar a Simple PHP Blog 0.3.7r2, que incluye algunas mejoras de seguridad respecto a las anteriores versiones.

Es una actualización más que recomendable para usuarios de cualquiera de las versiones 0.3.7e y superiores. Los que tengáis corriendo una versión anterior, seguro que os convencen las nuevas funcionalidades.

Tenéis la 0.3.7r, junto a sus parches (r1, r2, y los idiomas actualizados) en www.bigevilbrain.com/sphpblog/development.

El proceso de instalación es primero la 0.3.7r, luego el parche r1, y después el r2. Después de esto, si además queréis actualizar las traducciones (es lo suyo), procedeis con el paquete r1 de traducciones y después el r2.…

Continuar leyendo...

Error en el plugin de Flash para Firefox



El plugin ActiveX de Macromedia Flash, al menos en la versión 7.0.19, retorna el valor -1, cuándo se invoca a getBytesTotal(), y el sistema todavía no sabe que peso tiene el recurso que estamos intentando cargar. Una vez se han obtenido las cabeceras HTTP, el valor retornado, es ya el tamaño real del archivo.

Por contra, la otra versión del reproductor para Windows, válida para Netscape, Mozilla, Firefox, y Opera, retorna 0 cuando todavía no se conoce el tamaño del archivo.

Esto hace que las típicas fórmulas que se usan en los preloaders para calcular el porcentaje de carga, den un valor NaN (Not a Number), durante el comienzo del proceso de carga en estos navegadores.…

Continuar leyendo...