Archivo de la categoría Programación

Microsoft Small Basic



Está disponible Microsoft Small Basic (MSB), que en su versión 0.3.1, me parece un lenguaje magnífico para iniciarse en el mundo de la programación.

Evidentemente, la evolución que ha empujado a BASIC de parte de Microsoft, lo ha convertido en un lenguaje cada vez más potente y serio, pero también más complicado.

Small Basic, viene a compensar este efecto, poniendo en mano de los usuarios un lenguaje de programación de BASIC interpretado, que además de estar basado en objetos, incluye métodos que emulan LOGO, lo que lo convierte en un producto ideal para iniciarse en este maravilloso mundo.…

Continuar leyendo...

Pretty URL en PHP



Por motivos de posicionamiento en buscadores, nos puede interesar que los parámetros pasados por GET, formen parte de la URL.

Así, en vez de invocar a páginas del estilo index.php?parametro=valor podríamos tener index.php/parámetro/valor.

Por supuesto, esta operación la podemos realizar con el conocido mod_rewrite, o cualquiera de sus ports para Windows, aunque quizás pensemos que su configuración es demasiado tediosa, o bien sencillamente no nos sea posible instalar dicho módulo.

En el fondo, la información relativa a los parámetros, existe para PHP en la variable de servidor que contiene la URL, por lo que podríamos sencillamente, escribir una pequeña función, que transformase los parámetros, en parámetros normales de $_GET:

function URL2GetPairs()
{
$sUrl=utf8_decode(urldecode($_SERVER['URL']));

//En algunos casos URL contiene también el nombre de la página, así que si lo hay se lo quitamos.…

Continuar leyendo...

100/100 en Acid3



Aunque fue la gente de Opera, los primeros en crear una versión de su motor, capaz de conseguir los 100 puntos en el test Acid3, parece que finalmente quien pegará primero será la gente de Webkit.

El último Opera disponible (9.61.10463) se conforma con 85 puntos, la última compilación de Chromium 0.3.155.0 build 3972, obtiene los deseados 100 puntos, pero con un aviso de "Linktest failed".

Sin embargo, Safari 3.1.2, combinado con la última compilación de Webkit (37819), si que es capaz de pasar satisfactoriamente el test.

Con todo, parece que la tecnología ya está ahí, lo que queda por ver, es quien lanzará oficialmente en primer lugar, un navegador con este soporte.…

Continuar leyendo...

Secretos en Linuxware



Timpanogas Research Group (TRG), que distribuyen Merkey's LinuxWare (la distribución antes conocida como DR-LX de Lineo/Devicelogics), tienen unos fuentes que merecería la pena analizar con calma, al menos a tenor de los comentarios en su código.

/***************************************************************************
*
* Copyright (c) 1997, 1998 Jeffrey Vernon Merkey All Rights
* Reserved.
*
* This program is an unpublished work of TRG, Inc. and contains
* trade secrets and other proprietary information. Unauthorized
* use, copying, disclosure, or distribution of this file without the
* consent of TRG, Inc.


Continuar leyendo...

Usar o no usar mysql_num_rows



PHP incluye la función para MySQL mysql_num_rows, que en base a un recurso procedente de una consulta MySQL, retorna un numérico que representa el total de registros que se han devuelto.

El sentido común indica que utilizar la consulta SQL usando COUNT(*) será probablemente algo más eficiente, basicamente por aquello de que todo lo relacionado con el manejo de los datos, lo gestiona mejor el propio SGBD.

Lo que yo no sabía, era que la diferencia fuera tan grande… Así, para una tabla con aproximadamente 50.000 artículos, el código con mysql_num_rows siguiente, ha requerido 0,175506 segundos, o un poco más de 5 consultas por segundo:

//Contar usando num_rows
$fInicio=microtime(true);
$sSQL="SELECT * FROM articulo ";
$rstListado=mysql_query($sSQL);
$iRows=mysql_num_rows($rstListado);
mysql_free_result($rstListado);
$fFinal=microtime(true);
echo "Contar num_rows: " .


Continuar leyendo...

Lote óptimo



Gracias al proyecto de digitalización de la Revista ZX, y a raiz de un encuento casual con el listado de programas publicados, me encuentro con que dentro del número 15 de febrero de 1986, en la página 54, aparece lo siguiente:

Lo curioso del caso, es que aunque recuerdo perfectamente haber mandado con cierta periodicidad programas a revistas, aproximadamente de los 10 a los 18 años, empezando con ZX, o Microhobby, y acabando con PC-Actual, mi memoria sólo es consciente de un par de contribuciones que finalmente fueran publicadas. En este caso, en PC-Actual.

Algunos, sobre todo durante la última época, eran pequeños programas en ensamblador o GW-Basic, aunque mi primera época, que fue quizá las más prolífica, consistía unicamente en simples programas para Sinclair BASIC que implementaban ideas propias muy sencillas, o programaban fórmulas que había leído en algún otro sitio.…

Continuar leyendo...

The Ur-Quan Masters



Supongo que todos recordaréis la adictiva saga Star Control de Accolade, que a principios de los 90 se ofreció para la mayoría de sistemas tanto de 8, como de 16 bits, y que continuaría unos años más con Star Control 2 y Star Control 3.

Me gustaba de él, que en su primera versión, era capaz de funcionar en hardware muy limitado, obteniendo el máximo de sus posibilidades en un 286 con 640 Kb. de memoria ejecutando la versión VGA para DOS, y que cabía perfectamente en un disquete, lo que permitía pasar un rato de entretenimiento, en casi cualquier ordenador. Las siguientes versiones, explotaban ya los 32 bits, aunque en el caso de los PC, todavía bajo el socorrido DOS.…

Continuar leyendo...

La sabiduría de Bender



La sabiduría de Bender, llega hoy en día incluso hasta el ámbito de la programación. Y si no, juzgad vosotros mismos.



Continuar leyendo...

Vectores, matrices, registros y otras hierbas



Últimamente, se está propagando el término vector, para definir lo que antes conocíamos como un array, y que en sus comienzos eran denominados arreglos. Tanto es así que hasta para la Wikipedia es uno de los términos preferidos, y la STL de C++ los denomina a su vez de éste modo.

En mi opinión, vector es a veces confuso, pues puede prestarse a equívoco con los vectores matemáticos usados en 3D para realizar representaciones gráficas. Es cierto que un vector matemático es implementable con arrays, pero pienso que para definir el término general de programación, lo adecuado debería ser arreglo o array.…

Continuar leyendo...

Tira del día de Garfield en castellano



Hace algo más de tres años, que publiqué en Tira del día de Garfield, un sencillo script para tener acceso diario la última tira de Garfield publicada.

Hoy os lo traigo actualizado y mejorado, obteniendo el contenido de la página en castellano.

El código está basado en la anterior versión, con un par de añadidos, y no es precisamente un buen ejemplo para nada:

<script language="Javascript" type="text/javascript">
var sUrl='';
var dteToday=new Date();

if (dteToday.getFullYear()<100)
{
sUrl+='http://www.garfield-es.com/tiras/tiras/' + (dteToday.getFullYear() + 2000) + '/';
}
else
{
sUrl+='http://www.garfield-es.com/tiras/tiras/' + dteToday.getFullYear() + '/';
}
if ((dteToday.getMonth() + 1)<10)
{
sUrl+='0' + (dteToday.getMonth() + 1 + '/');
}
else
{
sUrl+=(dteToday.getMonth() + 1) + '/';
}
if (dteToday.getYear()<2000)
{
if (dteToday.getYear()<10)
{
sUrl+='ga0' + dteToday.getYear();
}
else
{
sUrl+='ga' + dteToday.getYear();
}
}
else
{
if (dteToday.getYear()<2010)
{
sUrl+='ga0' + (dteToday.getYear() – 2000);
}
else
{
sUrl+='ga' + (dteToday.getYear() – 2000);
}
}
if ((dteToday.getMonth() + 1)<10)
{
sUrl+='0' + (dteToday.getMonth() + 1);
}
else
{
sUrl+=(dteToday.getMonth() + 1);
}
if (dteToday.getDate()<10)
{
sUrl+='0' + dteToday.getDate();
}
else
{
sUrl+=dteToday.getDate();
}
sUrl+='.gif';
document.write('<img src="' + sUrl + '" title="La tira de Garfield de hoy" border=0>');
</script>

var sUrl=''; var dteToday=new Date();

if (dteToday.getFullYear()…

Continuar leyendo...