Archivo de la categoría Programación

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.

(adsbygoogle = window.adsbygoogle || []).push({});



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...

Actualizaciones de programillas



Llevaba algunos días sin publicar, y eso se debe a que el poco tiempo libre que tenía, lo he invertido en actualizar algunos de mis programillas.

Primero tenemos el Javascript Benchmark, del cual ya pudísteis leer aquí, y que consiste en una herramienta online para evaluar el rendimiento en la ejecución de código Javascript de nuestros navegadores, acumulando todos los resultados, para finalmente mostrarlos agregadamente por navegador y plataforma.

En segundo lugar está el RealSpeed que también os anuncié aquí, y que recibió posteriormente una revisión menor.

var googletag=googletag || {}; googletag.cmd=googletag.cmd || [];googletag.cmd.push(function() { googletag.defineSlot("/360613911/GenericDFP2017", [728, 90], "div-gpt-ad-1506002846364-4").addService(googletag.pubads()); googletag.pubads().enableSingleRequest(); googletag.enableServices(); });googletag.cmd.push(function() { googletag.display("div-gpt-ad-1506002846364-4"); });

Luego tenemos a Lamark, donde básicamente cogí el antiguo código de 2006 del programa, y lo recompilé con C++ Builder 2009, se cambió la compresión para evitar falsos positivos de antivirus y se generó una ayuda en formato CHM, que es desde hace algún tiempo el nuevo standard, y en principio el único sistema disponible en Vista.…

Continuar leyendo...

Benchmark Javascript



Está disponible mi nuevo Benchmark Javascript, que evalúa el rendimiento del intérprete de Javascript en los navegadores web.

Aunque no aporta casi nada inédito o revelador, es especialmente interesante la posibilidad de consultar en tiempo real los valores agregados obtenidos por otros usuarios.

Si os apetece probarlo, lo tenéis aquí. Como es habitual, se aceptan sugerencias y comentarios.…

Continuar leyendo...

Compilación de HeidiSQL



Poco después de las historias con MySQL-Front/SQL-Front, me pasé a HeidiSQL.

Actualmente sigo con bastante asiduidad sus compilaciones diarias, y de acuerdo a los logs, lo más impresionante es la velocidad con la que se compila el programa completo.

Desde los tiempos de Turbo Pascal, siempre ha sido admirable a la endiablada velocidad que trabajaban estos compiladores, pero en este caso, hablamos de 650.000 líneas de código ObjectPascal, que usando Delphi 2007 generan un binario de 3,2 Mb en ¡menos de 10 segundos!, es decir, una media de más de 80.000 lineas por segundo, o la friolera de 5 millones por minuto.…

Continuar leyendo...

RAD Studio 2009



Después de haber hablado sobre Delphi 2009 en su versión preliminar, le llega el turno a RAD Studio 2009, esta vez, con experiencias extraídas de la versión final.

Como sabéis, la idea era centrarse solamente en los cambios de C++ Builder 2009, aunque aprovechando la disponibilidad de RAD Studio, daré un vistazo global sobre él, para luego centrarme en el C++ Builder.

RAD Studio 2009 (6.0), es el paquete integrado de herramientas de desarrollo de Embarcadero, antes CodeGear, antes Borland, antes Inprise, y antes Borland; sobre un mismo entorno, en este caso realmente común a todas las personalidades, incluye Delphi 2009, C++ Builder 2009, y Delphi for .NET 2009.…

Continuar leyendo...

Tetris en SVG



Ahora que la mayoría de navegadores recientes como Opera 9, Firefox 3, Safari 3.1 o Chrome 0.2 soportan nativamente SVG (Scalable Vector Graphics) en mayor o menor medida es posible disfrutar en nuestro navegador de esta resultona versión de Tetris en apenas 13 Kb.

Podéis comprobarlo vosotros mismos aquí.…

Continuar leyendo...

Google Chromium



Tras una revisión inicial de Chrome, observé que los resultados en cuanto a rendimiento de este navegador, estaban lejos de los de Opera, tanto a nivel de Javascript con V8, como del motor de renderizado de Webkit.

Así que descubrí Chromium, la versión de código abierto de Chrome, disponible para la comunidad de desarrolladores, y me planteé compilarlo estáticamente con las clásicas optimizaciones del compilador, y usando PGO, pues actualmente, la compilabilidad para plataformas de 64 bits es imposible.

Las instrucciones para compilar Chromium, son sencillas y claras. Basicamente debemos descargar el cliente para consola de SVN, y a partir de ahí, bajamos del repositorio los fuentes completos.…

Continuar leyendo...

String o string en C#



En mis programas, acostumbraba a utilizar variables de tipo String, en vez de declararlas del tipo string. Mi razonamiento era que si string, simplemente es un tipo que encapsula a la clase System.String, entonces, iba a ser algo más eficiente utilizar directamente el segundo.

Cabe decir, que el MSDN, secunda esta hipótesis con la frase: "El tipo string representa una secuencia de cero o más caracteres Unicode. string es un alias de String en .NET Framework". Esto quiere decir, que sobre el papel, la implementación de String, debe ser más eficiente que la de string, lo cual se aplicará a todos los lenguajes de la plataforma .NET (VB.NET, C#, J#, …).…

Continuar leyendo...