Archivo de la categoría Programación

Mala práctica 1



Ya adelanté hace algunos meses, que la mejor forma de aprender bien a programar es sabiendo que es lo que no se debe hacer.

Hoy inaguro la primera entrega, de lo que serán varios artículos comentando código que encuentro, y que me parece un mal ejemplo en algún sentido

El código, al ir detrás de la funcionalidad, es algo en lo que el cliente no se fija, y suele ser un aspecto descuidado por los programadores.

Una aplicación puede funcionar a las mil maravillas estando mal escrita, y no dará mayores problemas hasta que tenga que ser modificada, ya sea para añadir nuevas funcionalidades, mejorar procesos, o para corregir algún problema que se ha encontrado.…

Continuar leyendo...

Feeds temáticos



He implementado el soporte de categorías en los feeds de Simple PHP Blog.

Ahora es posible sindicar únicamente los contenidos que pertenezcan a la(s) categoría(s) especificadas utilizando el parámetro c.

Por ejemplo www.javiergutierrezchamorro.com/rss.php?c=5,3, lleva los contenidos de informática y coches.

El parámetro n con la cantidad de elementos a obtener sigue funcionando como anteriormente, pero lógicamente, trabaja en combinación con el anterior.

Poniendo www.javiergutierrezchamorro.com/rss.php?c=7&n=50, tendríamos acceso a los 50 últimos artículos de música.…

Continuar leyendo...

Camiseta Flash Lite



Hoy he recibido la camiseta de Macromedia por haber participado en el concurso de desarrollo para Flash Lite.

Como era de esperar, no me he llevado ningún premio, ni siquiera estuve en la short list.

Debo reconocer, que la camiseta es bastante chula, y lo mejor de todo, discreta, lo que me permitirá aprovecharla con más facilidad.…

Continuar leyendo...

Actualización a SPHPBlog 0.4.4e



Aprovechando que el equipo de bitacoras.com, ha estado migrando el servicio a una nueva infraestructura, he decidido complicar todavía más el asunto actualizando el software de mi blog.

He instalado la versión 0.4.4e de Simple PHP Blog, con importantes cambios de código que realicé entre ayer y hoy.

La nueva programación es experimental, ya que por falta de tiempo, no he podido comprobar el funcionamiento tanto como sería deseable.

El objetivo ahora es ir estabilizando la versión 0.4.4, para poderla liberar como final.

Por otro lado, llevaba un tiempo probando funcionalidades en mi servidor de desarrollo, pero sin testearlas expuestas al público.…

Continuar leyendo...

Lentitud de ejecución



Supongo que os habéis dado cuenta de que últimamente mi bitácora tardaba muchísimo en cargar.

Hablo del orden de 45 segundos, o más, el problema estaba con el artículo Weather Pixie, que incluye una imágen remota, y que se genera dinámicamente.

Cuando la imagen se incluye en un tag [ img ], Simple PHP Blog, necesita saber sus dimensiones para reescalarla, y eso es lo que enlentecía tanto toda la operatividad.

La solución ha pasado por reemplazar todos los [ img ] a URL remotas, por <img> de HTML. Había 5 o 6 artículos afectados.

Cuando tenga algo de tiempo para dedicarlo a SPHPBLog, parchearé el código de la función implicada blog_to_html, para que en el caso de que se especifiquen las medidas con los atributos witdh y height, no sea necesario leerlos del propio archivo.…

Continuar leyendo...

strpos vs strstr



Encontrar si una cadena contiene otra subcadena, es una tarea de programación habitual.

En PHP, tenemos dos funciones que nos sirven para este propósito: strpos, que retorna la posición; y strstr, que retorna la subcadena.

He creado un sencillo programa que se encarga de medir los tiempos de ejecución de las dos funciones:

<?php
$sTest='1234567890 1234567890 1234567890
1234567890 1234567890 test
1234567890 1234567890 1234567890
1234567890 1234567890 1234567890';

$fInicio=microtime(true);
for ($iCont=0; $iCont<10000; $iCont++)
{
$iPos=strpos($sTest, 'test');
$iPos=strpos($sTest, 'test');
$iPos=strpos($sTest, 'test');
$iPos=strpos($sTest, 'test');
$iPos=strpos($sTest, 'test');
$iPos=strpos($sTest, 'test');
$iPos=strpos($sTest, 'test');
$iPos=strpos($sTest, 'test');
}
$fFin=microtime(true);
echo 'strpos: ' .…

Continuar leyendo...

Operaciones de bits en PHP



En la actualidad, las operaciones a nivel de bits, no son demasiado utilizadas. En cambio, hace no demasiados años, se utilizaban con gran frecuencia para optimizar operaciones aritméticas.

No quiero entrar en detalles de demasiado bajo nivel, pero a una CPU, le suele costar menos operar con los bits independientes de un número, que realizar una operación como una multiplicación.

Podemos rotar a la izquierda (<<) para multiplicar por potencias de 2; rotar a la derecha (>>) para dividir entre potencias de dos; utilizar la Y a nivel de bits (&) para averigüar el módulo de potencias de dos, …

Hoy en días, los procesadores son cada vez más rápidos, y con lenguajes interpretados, como PHP, tenía la curiosidad de si seguiría siendo más eficaz.…

Continuar leyendo...

El objeto RegExp



El objeto RegExp, disponible para scripts ASP, VBScript, y JScript entre otros, es injustamente poco conocido, a pesar de ser tremendamente útil.

Nos permite manipular cadenas usando expresiones regulares con sintaxis Perl.

No soy un experto en expresiones regulares, aún así, esta clase nos puede solucionar rápidamente muchos problemas, que usando por ejemplo, Replace nos llevaría un buen rato.

Su uso es tan sencillo como:

<%
Option Explicit
Dim sCadena
Dim oRegular

Set oRegular=New RegExp
With oRegular
.Global=True
.Pattern="(.\d{4})"
sCadena=.Replace(sCadena, ".0000")
End With
Set oRegular=Nothing
%>

El código anterior, buscaría dentro de sCadena, cualquier ocurrencia de un punto seguido de 4 dígitos, y lo reemplazaría por el literal .0000.…

Continuar leyendo...

Limpieza y actualización



Tengo 35 megas de espacio reservado en el hosting que gentilmente me ofrecen totalmente gratis, desde bitacoras.com, y me queda menos de 2 megas disponibles.

Hasta marzo, no tienen previsto ampliar los discos, por lo que he tenido que hacer limpieza de lo que tenía almacenado: idiomas adicionales de Simple PHP Blog, copias de seguridad, temas no utilizados, …

Después de toda la criba, he conseguido disponer de 3 megas libres.

En principio no he eliminado ningún contenido, y todo debería seguir funcionando como hasta ahora. Si encontráis algún fallo, o echáis en falta algún contenido, por favor, comunicádmelo para que pueda restaurarlo de mis copias de seguridad locales.…

Continuar leyendo...

Reflexiones Misioneras



¿Es una impresión mía? ¿O es que la gente de Reflexiones Misioneras, ha fusilado todo el diseño de Macromedia?

Al menos el backend lo han programado ellos mismos en ASP… ¡O eso quiero creer!…

Continuar leyendo...