Sociedad y todo los que nos rodea - Tecno Internet

Blog sobre Internet, Sociedad y todo los que nos rodea

Archive for the ‘Trucos’ Category

Acelerando por 5 la carga de páginas realizadas con PHP

Written by admin on Feb 23rd, 2008 | Filed under: PHP, Trucos

El título parece venta por TV. pero es cierto se puede acelerar y mucho la carga de páginas atacando 3 problemas fundamentales:

  1. La compresión de las páginas /css / js usando gzip.
  2. Reducir la cantidad de peticiones http realizadas al server.
  3. Colocando cabeceras de expiración en forma correcta.

Leon Chevalier de http://aciddrop.com se tomó el gran trabajo de realizar una clase de php que una vez instalada en sólo 3 líneas de texto nos permite atacar los 3 problemas a la vez.

Cómo lo hace? Usando las funciones de búferes de salida ob_* de php de esta manera abre un buffer con ob_Start() recupera todo la pagina html que estamos componiendo con el script, luego la procesa en busca de cadenas del tipo “script”, “link” y otras para obtener todas las llamadas a los js y los css. Una vez obtenida la lista de .js y .css junta todos archivos generando un archivo con nombre aleatorio (basado en md5() y unas cadenas extras.) . A la vez reemplaza en el código html las llamadas originales por las nuevas a los archivos “rejuntados”. De esta manera solo queda el archivo html, un archivo css y un archivo js.

En mi caso que uso prototypejs y scriptacoulus se nota mucho el cambio en la velocidad de carga. De 22 objetos cargados se pasa a 7, generando menos conexiones al server.
De todas manera el código está medio verde todavía ya que no funciona con error_reporting en E_ALL y tiene algunos bugs de variables no definidas o cambiadas de tipo.
De todas maneras vale la pena ver este trabajo:

http://aciddrop.com/2008/01/23/site-speed-boost-script-updated/


Calendario del WordPress

Written by admin on Feb 12th, 2008 | Filed under: PHP, Trucos

Para hacer que la semana comience el lunes y corregir el error que contiene el calendario de WordPress en español (la cabecera del calendario muestra mal las iniciales de los días de la semana) debemos seguir los siguientes pasos:

  1. Editamos /wp-includes/template-functions-general.php
  2. Modificamos el siguiente código:
  3. $pad = intval(date(”w”, $unixmonth));

    por esto

    $pad = intval(date(”w”, $unixmonth)) - 1;

  4. También debemos cambiar este otro segmento de código:
  5. if (6 == date(”w”, mktime(0, 0 , 0, $thismonth, $day, $thisyear)))
    $newrow = true;

    por:

    if (0 == date(”w”, mktime(0, 0 , 0, $thismonth, $day, $thisyear)))
    $newrow = true;

  6. Por último en este fichero:
  7. $pad = 7 - date(”w”, mktime(0, 0 , 0, $thismonth, $day, $thisyear));

    lo cambiamos para tener:

    $pad = 8 - date(”w”, mktime(0, 0 , 0, $thismonth, $day, $thisyear));

  8. Editamos /wp-includes/locale.php.
  9. En este segmento de código:
  10. $weekday[1] = __(’Monday’);
    $weekday[0] = __(’Sunday’);
    $weekday[2] = __(’Tuesday’);
    $weekday[3] = __(’Wednesday’);
    $weekday[4] = __(’Thursday’);
    $weekday[5] = __(’Friday’);
    $weekday[6] = __(’Saturday’);

    realizamos este cambio:

    $weekday[1] = __(’Monday’);
    $weekday[2] = __(’Tuesday’);
    $weekday[3] = __(’Wednesday’);
    $weekday[4] = __(’Thursday’);
    $weekday[5] = __(’Friday’);
    $weekday[6] = __(’Saturday’);
    $weekday[0] = __(’Sunday’);

  11. Por último:
  12. $weekday_initial[__(’Sunday’)] = __(’S’);
    $weekday_initial[__(’Monday’)] = __(’M’);
    $weekday_initial[__(’Tuesday’)] = __(’T’);
    $weekday_initial[__(’Wednesday’)] = __(’W’);
    $weekday_initial[__(’Thursday’)] = __(’T’);
    $weekday_initial[__(’Friday’)] = __(’F’);
    $weekday_initial[__(’Saturday’)] = __(’S’);

    lo sustituimos por:

    $weekday_initial[__(’Sunday’)] = __(’Do’);
    $weekday_initial[__(’Monday’)] = __(’Lu’);
    $weekday_initial[__(’Tuesday’)] = __(’Ma’);
    $weekday_initial[__(’Wednesday’)] = __(’Mi’);
    $weekday_initial[__(’Thursday’)] = __(’Ju’);
    $weekday_initial[__(’Friday’)] = __(’Vi’);
    $weekday_initial[__(’Saturday’)] = __(’Sa’);

…y ya tendremos el calendario en español y sin errores.
Para resolver este problema me fue de gran ayuda el el foro de Bitacoras.com.
Podéis ver otra solución en Verborea Esporádica


Marcas de agua en tu web

Written by admin on Feb 12th, 2008 | Filed under: PHP, Trucos

Las librerías GD son una herramienta primordial para nuestras galerías fotográficas. Con ellas podemos modificar imágenes, reducirlas y en éste caso también podemos incrustarle marcas de agua para evitar que sean usadas por terceras personas sin nuestro permiso.

Os dejo un script de ejemplo en lenguaje PHP que se encargará de tomar todas las imágenes de una carpeta y nos las copie en otra nueva con nuestra marca de agua en cada imagen.

Nuestra tarea consistirá primeramente en crear la imagen que usaremos para nuestras marcas de agua. Debe ser en formato PNG de 24 bits, os recomiendo ponerle fondo transparente y algo de transparencia en la capa que utilicemos, para que se incruste de manera más profesional. Podéis usar tanto Adobe Photoshop o Gimp (para los que prefieran usar software libre).

Una vez que tenemos nuestra imagen (que no debe ser demasiado grande ni demasiado pequeña puesto que debe ser legible pero tampoco queremos que estorbe) la copiamos en la misma carpeta que las imágenes originales.

Ahora echamos un vistazo al siguiente código y personalizamos las rutas y demás variables a nuestro gusto.

Warning: set_time_limit() [function.set-time-limit]: Cannot set time limit in safe mode in /var/www/vhosts/bitacoradewebmaster.com/httpdocs/wp-content/plugins/exec-php.php(45) : eval()’d code on line 22

Warning: opendir() [function.opendir]: open_basedir restriction in effect. File(/home/httpd/vhosts/midominio.com/httpdocs/imagenes) is not within the allowed path(s): (/var/www/vhosts/bitacoradewebmaster.com/httpdocs:/tmp) in /var/www/vhosts/bitacoradewebmaster.com/httpdocs/wp-content/plugins/exec-php.php(45) : eval()’d code on line 62

Warning: opendir(/home/httpd/vhosts/midominio.com/httpdocs/imagenes) [function.opendir]: failed to open dir: Operation not permitted in /var/www/vhosts/bitacoradewebmaster.com/httpdocs/wp-content/plugins/exec-php.php(45) : eval()’d code on line 62

Warning: readdir(): supplied argument is not a valid Directory resource in /var/www/vhosts/bitacoradewebmaster.com/httpdocs/wp-content/plugins/exec-php.php(45) : eval()’d code on line 64

Warning: closedir(): supplied argument is not a valid Directory resource in /var/www/vhosts/bitacoradewebmaster.com/httpdocs/wp-content/plugins/exec-php.php(45) : eval()’d code on line 71

Si seguimos estos pasos tendremos un resultado parecido a éste fantástico script llamado Oscommerce que aún estoy configurando en PuntoGeriátrico.com. En ella todas las fotos tienen una misma marca de agua, la cual tardé escasos minutos en aplicársela, después de un cambio de planes en el cual a última hora me pidieron que pusiese marcas de agua a todas las imagenes :| un duro trabajo si lo hubiesemos hecho todo a mano no?.