Archivo de la categoría Programación

Benchmark de CPU/FPU en Flash



He desarrollado un pequeño benchmark en Flash, que de forma muy sencilla nos da el rendimiento sintético de nuestro procesador.

Se utilizan operaciones con enteros, coma flotante y cadenas para realizar la simulación, y se retorna un valor cuantitativo calibrado en referencia a mi AMD Athlon XP 2400+.

El resultado es simplemente orientativo, ya que dependiendo de los procesos que tengamos en ejecución en ese momento, el resultado puede variar (habitualmente a la baja).

El objetivo de mi experimento era simplemente ver que arquitecturas favorecen en mayor medida la ejecución de Flash, por lo que agradecería vuestras colaboraciones.…

Continuar leyendo...

Cookies vs Sesiones en PHP



A estas alturas, huelga decir, que es mucho más sencillo y seguro utilizar sesiones en vez de cookies, para almacenar información temporal sobre el usuario conectado al sistema.

Habitualmente necesitamos guardar el estado de datos tales como el ID de usuario conectado, y tenerlos disponibles durante toda la aplicación.

Es evidente que si almacenamos el ID de usuario en una cookie, la manipulación de ese dato, es tan sencilla como editar un en nuestro disco duro.

A nivel de rendimiento, también es mucho más eficiente utilizar sesiones, aproximadamente un 400% más veloces.

Con este artículo, no quiero decir que no debemos usar cookies, ya que son indispensables cuándo lo que se necesita es almacenar información durante más de una sesión, o bien si necesitamos poder leerla y guardarla desde Javascript.…

Continuar leyendo...

Trabajo en SPHPBlog



He tenido algo de tiempo estos días y lo he dedicado a Simple PHP Blog.

Ahora la página de estadísticas, es algo más veloz, además de ofrecer conteos sobre votos y puntuaciones de los artículos.

Lo siguiente que tengo en mente para desarrollar es:
– Búsqueda mejorada: Permitiendo elegir la cantidad de resultados a mostrar, y donde buscar (entradas, comentarios, páginas estáticas, …). Por defecto se retornarán como mucho 10 resultados, centrándose en las entradas. El usuario podrá alterar estos valores.
– Implementar algún tipo de cache permanente en la función blog_entry_listing.…

Continuar leyendo...

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('http://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...