Programación archivos | Página 38 de 52 | Bitácora de Javier Gutiérrez Chamorro (Guti)

Archivo de la categoría Programación

Turbo C 1.0 el comienzo



Ya sabéis que soy entusiasta de Borland, seguramente por que fue con lo que empecé.

Tras haber trabajado con Turbo Basic 1.0, y con Turbo Pascal 4, vi en un libro de C, del que no recuerdo el título, algunos pantallazos de ésta herramienta.

Era un IDE conocido, pero con características de optimización de nivel profesional, que no estaban disponibles en los otro entornos de programación de la compañía. Además C, sonaba extremadamente potente.

No fue hasta Turbo C 2.0, que añadía capacidades gráficas, mejoraba el entorno en la linea de Turbo Pascal 5, e incluía una ayuda más completa que pude dar mis primeros pasos.…

Continuar leyendo...

Diferentes maneras de crear un Sitemap



El servicio de Google Sitemaps, todavía en beta, pretende acabar con la internet invisible. Es decir todas aquellas páginas que pese a formar parte de la World Wide Web, no son accesibles por los buscadores, y por tanto, tampoco por los usuarios.

El proceso comienza creando un archivo de mapa del sitio, que es procesado por el robot de Google. Al ser el protocolo Creative Commons, es de esperar que el resto de robots acaben soportándolo.

Hay diferentes formas de crear el archivo de mapa:
1) Archivo de texto
Un archivo de texto plano que contiene URL que deben ser indexadas por el robot, separadas por saltos de linea.…

Continuar leyendo...

Corrigiendo al programador



Cuando preparaba mi anterior artículo Bucles invertidos, pude sorprenderme muy agradablemente con el optimizador de Visual C++ 7.1 (2003).

El código:

1 2 3 4 unsigned int i; for (i=0; i<100; i++) { }

Queda compilado a nada. Es evidente que el bucle no realiza ninguna operación, por lo que el optimizador del compilador, lo detecta, y lo elimina.

Más sorprendente es:

1 2 3 4 5 unsigned int i; for (i=0; i<100; i++) { } return(i);

Se transforma a código ensamblador así:

1 2 mov eax, 100 ret

Lo que si lo volviéramos a transcribir en C, sería:

1 return(100);

Como vemos, el propio compilador ha detectado código escrito pobremente, para en la medida de lo posible, mejorarlo.…

Continuar leyendo...

¿Cómo abrir popups accesibles?



Para facilitar la accesibilidad de nuestras páginas, conviene evitar el uso de Javascript en los enlaces.

Esto facilitará la navegación a los robots de los buscadores, a los usuarios con navegadores limitados, y a los usuarios impedidos. Es evidente que las ventajas son múltiples.

¿Pero, si no utilizamos Javascript, como vamos a poder abrir el popup?

El truco es muy sencillo, consiste en hacer que el enlace sea un link normal, que el Javascript (si está disponible) se encarga de abrir.

Algo así:

1 <a href="index.php" onClick="javascript:window.open(this.href, "wndPopup", "width=300,height=300"); return(false);">Abrir popup></a>

Y este sería el resultado: Abrir popup.…

Continuar leyendo...

Bucles invertidos



Estamos acostumbrados a hacer los bucles en forma ascendente, lo cual es conveniente en muchos casos.

En otros en cambio, podemos recorrerlos de mayor a menor. Pero, ¿qué ventaja nos daría hacerlo así?

Muy sencillo, de eficiencia. Los bucles descendentes, suelen ser más eficientes que los ascendentes. En particular lo son en estos dos casos:

1) La expresión de inicio es más sencilla que la de fin.
Es el caso más habitual, reescribiéndolo para que vaya de fin hasta inicio, se evita tener que reevaluar una condición complicada en cada iteración.

Es mejor:
for (i=strlen(a); i>0; i–)

que
for (i=0; i<strlen(a); i++)
Ya que nos ahorramos tener que llamar a strlen(a) 100 veces.…

Continuar leyendo...

Vulnerabilidades en la Web de P.C. Green (Parte V)



Después de unos meses con el tema de las vulnerabilidades en la web de P.C. Green abandonado, continuamos con la quinta entrega. Si te perdiste las anteriores, las tienes accesibles desde aquí.

Me ha alegrado ver que la web es totalmente nueva, tanto a nivel de diseño, como a nivel de tecnología.

La valoración del nuevo diseño, es positiva, mucho mejor que el anterior, pero regular comparado con lo que debería ser.

A nivel técnico, se usa ahora PHP en vez de ASP, lo que la hace más resistente a ataques de SQL Injection, de serie.

Parece que se han tomado mis artículos en serio, y todas las deficiencias comentadas han quedado resueltas.…

Continuar leyendo...

SlickEdit 10



Llevo usando SlickEdit como editor para programar desde la versión 8.

Me parece un entorno de trabajo con excelentes características. Quizás en algunos aspectos, CodeWright fuese mejor, pero ahora que Borland ha decidido abandonarlo, no hay lugar a dudas.

La nueva versión 10, me ha sorprendido con las mejoras en rendimiento, interfaz, y refactorización de código.

Con las mencionadas mejoras, SlickEdit, queda en mi opinión por encima del antiguo rival: CodeWright 7.5.5, manteniendo el soporte multiplatarma, y una mayor configurabilidad. Para variar, lo peor es el precio: A partir de 284 $.…

Continuar leyendo...

Evitar el bloqueador de popups



Por casualidad he descubierto como burlar al bloqueador de popups de Firefox, y Opera. Y así conseguir abrir tantas ventanas emergentes como nos plazca.

En las diferentes configuraciones donde lo he probado, el sistema ha funcionado sin problemas. Siempre bajo Windows, con Flash 7 y diferentes versiones de Firefox y Opera. Sorprendentemente Internet Explorer 6, detecta sin problemas el "truco".

La idea es bien simple. Se trata de hacer que el encargado de abrir el popup no sea directamente la página HTML que estamos visualizando, sino un elemento Shockwave.

Sería algo así:

1) Incrustamos una llamada al Flash que se encargará de abrir el popup.

Continuar leyendo...

Código automodificable en PHP



Recuerdo haber utilizado código automodificable (self modifying code) desde ensamblador, y en menor medica con C/C++.

En cambio jamás he visto utilizar esta técnica con lenguajes que no son nativos de la máquina.

El código automodificable, consiste en alterar directamente el programa que está en ejecución en ese momento, desde el propio programa. Así por ejemplo, podríamos encriptar y desencriptar el código completo en tiempo de ejecución, o hacer que una función que antes incrementaba un contador, ahora lo decremente.

En cualquier caso, la utilidad del código automodificable, ha sido puntual, quedando marginada a técnicas antidepuración, o a optimizaciones de tamaño.…

Continuar leyendo...

Mala práctica 3



Continuamos con la recogida de Malas prácticas de programación, esta vez con su tercera entrega. Tienes las anteriores aquí.

Esta vez el problema vuelve a ser de formateo de código, en este caso, causada por una indentación definciente.

Como se puede apreciar, se ha perdido casi totalmente la estructura de bloques lógicos.

De forma visual, necesitamos aplicar cierto esfuerzo para hacernos una idea de la estructura que sigue el HTML; lo que es peor, el <tr></tr>, pasa desapercibido, de forma que el resto de código que le sigue no es válido.

Las causas que intervienen para llegar a una situación así son:

1) Criterios de indentación no definidos o no consolidados: Da igual si utilizamos una cantidad de espacios o de tabuladores determinada (en mi opinión mejor tabuladores), pero siempre, y todos en el equipo de desarrollo, deberán seguir esa convención.…

Continuar leyendo...