Feb 25
Ya van varias veces que necesito que un iframe se escale automáticamente a la altura de la página que contiene, sobre todo en interfaces de administración. Cuando surgen estas dudas lo mejor es “googlear” en busca de respuestas, pero en éste caso, las primeras 10 páginas que he revisado contienen información errónea, que da errores en uno o varios navegadores.
Despues de varios intentos he dado con un código que funciona tanto en IE, como en Firefox como en Opera y/o Safari. (Requiere Jquery)
Continuar leyendo »
Feb 23
Hace tiempo me encontré en la necesidad de calcular el índice de proporcionalidad de imágenes que eran subidas por los usuarios a través de un formulario web. A continuación explicaré en qué consiste éste índice, qué algoritmo debe aplicarse y cómo realizarlo en php. Pido clemencia en caso de cometer algun error garrafal, no soy matemático
1. Introducción
El índice de proporcionalidad (traducción no literal del inglés “aspect ratio“), es el resultado de la división entre el ancho y el alto de una imagen, y nos indica la relación que hay entre ambas dimensiones.
Continuar leyendo »
Feb 11
La creación y gestión de modelos de datos es una parte fundamental de un arquitecto/administrador de bbdd, el cual dispone de los conocimientos necesarios para desempeñar ésta tarea. Sin embargo, a pequeña escala ésta función suele estar desempeñada por los propios programadores, que en muchos casos tienden a restar importancia al modelado de datos y su tarea se reduce a crear algo que “funcione”.
Son muchos los casos en los que nos encontramos con aplicaciones y sistemas que se encuentran en producción con graves problemas de rendimiento debido a una mala planificación o mal diseño de su base de datos.
Continuar leyendo »
Ene 13

Anteriormente comentamos como crear un sencillo debugger de javascript con Jquery. En ésta ocasión, y partiendo de esa base, crearemos un script para realizar debug de javascript más avanzado siguiendo los mismos principios: que sólo sea necesario incluir el script para habilitar el debugger, que éste nos permita seguir la evolución en tiempo real en la misma ventana de trabajo, y que pueda ser minimizado para que no nos moleste cuando no lo necesitemos.
Entre las características adicionales que he agregado destaca la implementación de un sistema de logging, que nos permitirá enviar información al log de forma muy sencilla al log a mediante la función jsdebugLog(’Texto a enviar al log’);, el debugger se encargará automáticamente de rotar el log para mostrarnos sólo los últimos eventos.
Adicionalmente, he incluido un interesante pero sencillo sistema para sugerir nombres de variables, funciones y objetos. En función de lo que escribamos en el campo de expresiones, se nos sugerirarn posibles valores que podemos añadir al evaluador de expresiones con tan solo hacer click.
Por último, se han incluido botones para poder vaciar tanto el evaluador de expresiones como el log y se han retocado un poco los estilos.
Continuar leyendo »
Ene 12
Me considero un fanático de Jquery, que no es más que un conjunto de librerías de javascript que nos permiten crear aplicaciones dinámicas de forma extremadamente sencilla, además nos libera de la tediosa tarea de tener que utilizar diferentes funciones y métodos en función del navegador. Existen otras librerias (DOJO, Yahoo, Prototype, Moo-tools …), pero para mi Jquery es la mejor de todas con diferencia.
Por ello, he decidido ir creando una serie de tutoriales sobre algunos scripts que voy preparando y que creo que os pueden ser de mucha utilidad. Los tutoriales serán de nivel medio, por lo que no entraré a comentar temas básicos, pero si intentaré explicar el funcionamiento, si tenéis alguna duda, comentadlo y os intentaré echar una mano.
Continuar leyendo »
Ene 07

Es probable que en nuestro grupo de servidores tengamos uno o varios que por seguridad se encuentren en un segmento de red aislado, inaccesible desde internet (es decir, sólo con conexión a la LAN), por lo que en caso de necesitar realizar alguna actualización o instalación de software en dichas máquinas, nos encontraremos con el problema de no poder descargar nada de internet.
En este y otros casos similares, una solución rápida puede ser configurar uno de los servidores web, o cualquier máquina que tenga acceso a la LAN y también a internet a través de 2 interfaces distintos de red, para que pueda actuar también como pasarela de acceso a internet para resto de máquinas de la LAN.
A continuación configuraremos la máquina que tiene acceso a internet como gateway NAT para que enrute a las máquinas que se encuentran dentro de la LAN hacia internet.
Posteriormente, en otra entrada, utilizaremos esto como base para instalar un servicio de VPN en el gateway y poder acceder salir a internet a traves de su conexión, aunque nos estemos conectando de forma remota a la red.
Continuar leyendo »
Dic 23
Navegando por ahí me he encontrado con éste pequeño test, os mostrarán 12 pequeños códigos fuente y tenéis que adivinar a qué lenguaje corresponde cada uno de una lista de 5 posibles.
Yo he obtenido el 83%, a ver si me superáis

Dic 10
Tienen mil nombres distintos en función del país o la región, chuletas, acordeones…, en nuestra época escolar las usabamos para aprobar los exámenes y en términos de programación se conoce como cheat sheet a las guias rápidas de referencia que no suelen ocupar más de una o dos hojas.
La web Added Bytes (En inglés), tiene un montón de Cheat Sheets que podemos descargar e imprimir, personalmente, yo las he impreso y reunido en una carpeta que me acompaña a todos lados, no sabría vivir sin ella.
Algunas Cheat Sheets:
PHP
CSS
Expresiones regulares
Javascript
Mysql
Jquery
Otras Cheat Sheets:
Added Bytes
Dic 04

Hace tiempo que programé un sistema para servir medios publicitarios online a diversas webs y blogs. Si bien al principio no tuvimos problemas, hace semanas el tráfico del script que sirve la publicidad se ha visto cuadruplicado, llegando a las 5.000.000 de impresiones diarias, ésto dejó al servidor mysql al borde del colapso total con un 99% de uso de CPU.
¿Cómo lo solucioné?. Continuar leyendo »
Nov 30
Uno de los problemas que más me han traido de cabeza últimamente ha sido al modificar unos scripts php para que se conecten a una bbdd en un servidor remoto en lugar de al localhost.
Una vez revisada la configuración del servidor remoto, firewall, permisos y la posibilidad de conectarse a la máquina remota desde nuestro servidor (mysql -u user -p -h host_remoto), los scripts simplemente eran incapaces de conectarse si se ejecutaban a través de apache, en cambio, si se ejecutan a través de CLI, funcionan correctamente.
La razón es que tenía instalado SELinux, el cual impide por defecto al apache conectarse a un servidor de bbdd remotas.
Para habilitarlo:
setsebool -P httpd_can_network_connect=1
Más información
Comentarios recientes