Archivo de la categoría Programación

SFX con WinRAR



El compresor RAR que desde sus inicios ha ofrecido ciertas opciones de personalización en sus archivos autoextraíbles (SelF eXtracting).

Ya en las antiguas versiones 1.5 para DOS, incluían un relativamente potente lenguaje procedural de scripting. En los módulos autoextraíbles para Windows, aquella potencia ha desaparecido, pero a cambio nos permite realizar operaciones muy habituales de manera sencilla.

En muchos casos, no es descartable utilizar el propio WinRAR para reemplazar a programas generadores de instalaciones como NSIS, InnoSetup, Wise o InstallShield; siempre y cuando los procesos a realizar consistan en descompresión y poco más.…

Continuar leyendo...

Insertar saltos de linea en ALT y TITLE



En todo el tiempo que llevo tocando HTML, nunca había tenido la necesidad de insertar saltos de carro en los atributos ALT y TITLE.

Tras probar lo evidente: <br>, \n, he visto que con un retorno de carro físico, la cosa funcionaba. Aunque claro, con algunos problemas en cuanto a validación.

En conclusión, de estas formas no funciona:
<a href="#" title="Linea 1<br>Linea 2">Enlace</a>
<a href="#" title="Linea 1\nLinea 2">Enlace</a>

Y de esta forma, a veces da problemas de validación:
<a href="#" title="Linea 1
Linea 2">Enlace</a>

Finalmente he encontrado la clave.…

Continuar leyendo...

Mala práctica 4



La sección de malas prácticas de programación, la había dejado abandonada desde hace algún tiempo.

Hoy la retomo con un fragmento de código muy simple, que habla de consistencia.

Como podéis ver, es un PHP que se encarga de ir concatenando un string, con el contenido del mensaje que se mandará por email.

La mala práctica está en la falta de coherencia del código. En ese caso, a veces el operador de concatenación (.), va precedidos de espacios, y en otros casos no.

Puede parecer algo tonto, pero ello dificulta la lectura, y lo que es más importante, puede introducir problemas al efectuar búsquedas y reemplazos masivos.…

Continuar leyendo...

GCC y OpenMP



Personalmente no me sorprendieron las limitaciones de OpenMP en Visual C++. De la misma manera tampoco puedo decir que me encaje que el código generado por G++ sea menos eficiente que el de Visual C++.

Lo que no entiendo en absoluto, es por qué la actual versión de 4.1.2 de GCC/GPP, no soporta OpenMP.

Realmente es incompresible que un compilador abierto como GCC, no apoye un estándar también abierto como OpenMP, haciéndonos tener que esperar hasta la revisión 4.2.

Una vez más se demuestra que aunque Microsoft no hace todas las cosas bien, los demás tampoco consiguen hacerlas mejor. En el caso que nos ocupa, siempre nos quedará la ayuda del compilador de C++ de Intel.…

Continuar leyendo...

VS 2005 no es compatible con Vista



A finales de diciembre de 2006 apareció el Service Pack 1 para Visual Studio 2005.

A pesar de la proximidad con el lanzamiento de Windows Vista, incluso con esa actualización daba algunos problemas, por lo que hace pocos días Microsoft lanzó Visual Studio 2005 Service Pack 1 Update for Windows Vista, un parche de 28 Mb para ser aplicado sobre el SP1, que soluciona estos problemas.

Muy mal por los chicos de Redmond… ¡Que la herramienta de desarrollo estrella para Windows, haya necesitado 2 parches para soportar el nuevo sistema operativo!



Continuar leyendo...

Acelerar BDS



Si hay algo que defina los productos de Borland (ahora CodeGear) desde hace mucho tiempo, es la calidad y facilidad de sus IDE, y el pobre rendimiento del código generado.

Tanto Delphi, como C++ Builder, o el nuevo Borland Developer Studio 2006, están programados con Delphi, lo que hace que a no ser que tengamos una máquina muy potente, acaben siendo poco ágiles.

Para solucionar esto tenemos DelphiSpeedUp, que se encarga de aprovechar el trabajo realizado por los proyectos FastCode y FastMove, reemplazando las funciones de Delphi más usadas por versiones optimizadas para nuestra CPU.

DelphiSpeedUp es capaz de acelerar el desempeño de nuestro Delphi/C++ Builder/Borland Developer Studio desde la versión 5 hasta la 2006.…

Continuar leyendo...

Explorer PC



Explorer PC es un gestor de archivos que visto de lejos, tiene un gran parecido con el Explorer de Windows 95 y NT.

Si se entra más en detalle, veremos que en realidad es una aplicación DOS, que imita la apariencia del de Windows. Hasta aquí debemos reconocer el mérito del programador, que ha conseguido (sin toolkits de terceros), darle un increíble parecido. Para mi sorpresa, está escrito enteramente en ensamblador (TASM), lo que explica que el ejecutable no llegue a 12 Kb sin ninguna dependencia externa, y tenga una velocidad de ejecución excelente.

Para funcionar requiere solamente un procesador 80188/80186 con memoria XMS y una tarjeta gráfica VESA.…

Continuar leyendo...

x86 vs x64 (Continuación)



Si te perdiste la primera parte, la puedes leer en el artículo x86 vs x64, si fuiste de los que leyeron recordarás que se dejó como "deberes", optimizar la aplicación para que usase varios hilos de ejecución, y así resultar más veloz en equipos de varios nucleos.

Para no complicarlo demasiado, he optado por usar OpenMP, de forma que añadiendo un par de lineas más al fuente original fuera suficiente:

#include <stdio.h>
#include <time.h>
#include <omp.h>

void __cdecl main (void)
{
__int64 iCount, iRes;
unsigned int iInicio, iFin;

iInicio=clock();

iRes=0;
#pragma omp parallel for
for (iCount=1; iCount<=10000000000; iCount++)
{
iRes+=iCount;
iRes--;
}
iFin=clock();
printf("%I64d %d\n", iRes, iFin-iInicio);
getchar();
}

He omitido la publicación de los listados en ensamblador, pues son bastante extensos debido a los diferentes procedimientos que ejecutan la rutina, y al código necesario para lanzar los threads.…

Continuar leyendo...

x86 vs x64



Para comprobar la ganancia que se podría obtener compilando para Windows 64 bits las aplicaciociones de 32 bits, he hecho un pequeño ejemplo que utiliza aritmética de 64 bits, y que pueda ser utilizado como benchmark comparativo.

Intentando que sea lo más real posible, he configurado el Visual C++ 2005 SP1 para que utilice en x86 instrucciones SSE2 (/arch:SSE2), y así poder manipular la información en bloques de más de 32 bits, aunque como se verá más adelante, el compilador no ha considerado que se obtenga ningún beneficio usándolas.

El programa utilizado, simplemente realiza un bucle de 10 millardos de iteraciones, donde se ejecuta una suma y un decremento.…

Continuar leyendo...

JLC's Internet TV



Tras mucho tiempo de ir probando de forma esporádica programas para ver la televisión por internet, he dado con JLC's Internet TV.

JLC's Internet TV concentra en menos de 200 Kb un completísimo programa para Windows que permite ver la televisión por internet. Es sencillo de utilizar, gratuito e incluye más de 1300 canales preconfigurados (incluso españoles).

El programa no necesita ser instalado, ni escribe en el registro, por lo que es perfecto para los defensores de las aplicaciones mal definidas como portables (aquellas que pueden ser ejecutadas directamente desde un Pendrive sin necesidad de ser instaladas previamente).…

Continuar leyendo...