Fecha de publicación: 2008/06/18
Si hay que maquetar un HTML y hay que probarlo en ambas versiones de Firefox puede ser un engorro tener que andar abriendo y cerrando una y otra.
La solución sería tener instalado Firefox 3 y otro navegador distinto que sea totalmente equivalente a Firefox 2. La última versión del difunto Netscape (la 9) es Firefox 2 con unos pocos retoques, compatible con todas las extensiones y temas que había para Firefox 2. Y puede estar abierto al mismo tiempo que Firefox 3.
Fecha de publicación: 2008/06/17
Y una semana después que Opera 9.5, aparece Firefox 3.
Fecha de publicación: 2008/06/12
Hoy me he encontrado con una clase PHP para recortar imágenes.
He aquí el código para la clase (solo le he añadido un pequeño detalle para poder elegir el tamaño de la imagen resultante):
class cropImage {
var $imgSrc,$myImage,$cropHeight,$cropWidth,$x,$y,$thumb;
function setImage($image) {
//Your Image
$this->imgSrc = $image;
//getting the image dimensions
list($width, $height) = getimagesize($this->imgSrc);
//create image from the jpeg
$this->myImage = imagecreatefromjpeg($this->imgSrc) or die("Error: Cannot find image!");
if($width > $height) $biggestSide = $width; //find biggest length
else $biggestSide = $height;
//The crop size will be half that of the largest side
$cropPercent = .5; // This will zoom in to 50% zoom (crop)
$this->cropWidth = $biggestSide*$cropPercent;
$this->cropHeight = $biggestSide*$cropPercent;
//getting the top left coordinate
$this->x = ($width-$this->cropWidth)/2;
$this->y = ($height-$this->cropHeight)/2;
}
function createThumb($size) {
$thumbSize = $size; // will create a 250 x 250 thumb
$this->thumb = imagecreatetruecolor($thumbSize, $thumbSize);
imagecopyresampled($this->thumb, $this->myImage, 0, 0,$this->x, $this->y, $thumbSize, $thumbSize, $this->cropWidth, $this->cropHeight);
}
function renderImage() {
header('Content-type: image/jpeg');
imagejpeg($this->thumb);
imagedestroy($this->thumb);
}
}
Y se utiliza con el siguiente código:
$image = new cropImage;
$image->setImage($img);
$image->createThumb($size);
$image->renderImage();
La variable $img es la url de la imagen original, y la variable $size es el tamaño de imagen (sale con forma de cuadrado), tanto de anchura como de altura (ha de ser un número entero).
Fecha de publicación: 2008/06/12
Por fin ha salido Opera 9.5, navegador ligero, con soporte de estándares y multiplataforma (Windows, Linux, Mac, Solaris).

Opera 9.5 en Fedora 8 con KDE 3.5.9
Aparte de las novedades en soporte de estándares, la versión de Linux añade compatibilidad con la versión 9 de Adobe Flash Player.
Puede ser descargado en el sitio web de Opera.
Y la semana que viene (17 de junio de 2008) Firefox 3.
Fecha de publicación: 2008/06/12
Se utilizará un sistema parecido al de reemplazo de fragmentos de una cadena, añadiendo un par de arrays con los caracteres que hay que quitar y los que los van a sustituir, un método toLowerCase para sustituir mayúsculas por minúsculas y un while para hacer los reemplazos uno a uno:
function convierteAlias (nuevoAlias) {
especiales = new Array('á','é','í','ó','ú','ñ',' ','´',':',',',';','.');
normales = new Array('a','e','i','o','u','n','_','_','_','_','_','_');
nuevoAlias = nuevoAlias.toLowerCase();
i=0;
while (i<especiales.length) {
//nuevoAlias = nuevoAlias.replace(especiales[i], normales[i]);
nuevoAlias = nuevoAlias.split(especiales[i]).join(normales[i]);
i++
}
return nuevoAlias;
}
Fecha de publicación: 2008/06/10
Cuando se quiere cambiar caracteres o fragmentos de una cadena se recurre al método replace:
cadenaInicial = 'Texto de la cadena inicial';
cadenaResultante = cadenaInicial.replace('inicial','resultante');
// De forma que obtenemos "Texto de la cadena resultante"
Pero esto tiene el inconveniente de reemplazar solo la primera "inicial" que aparezca:
cadenaInicial = 'Texto inicial de la cadena inicial';
cadenaResultante = cadenaInicial.replace('inicial','resultante');
// De forma que obtenemos "Texto resultante de la cadena inicial"
Esto puede resultar inconveniente.
Pero hay solución, utilizando los métodos split y join:
cadenaInicial = 'Texto inicial de la cadena inicial';
cadenaResultante = cadenaInicial.split('inicial').join('resultante');
// De forma que obtenemos "Texto inicial de la cadena inicial"
Lo que se ha hecho es partir la cadena por el fragmento "inicial" y volver a unirlas, metiendo entre cada parte el fragmento "resultante".
Fecha de publicación: 2008/06/10
Para convertir una cadena a mayúsculas:
cadena = 'Texto De Prueba';
cadena = cadena.toUpperCase();
//Devolvería "TEXTO DE PRUEBA"
Y para convertir una cadena a minúsculas:
cadena = 'Texto De Prueba';
cadena = cadena.toLowerCase();
//Devolvería "texto de prueba"
Fecha de publicación: 2008/06/05
Siempre que se vaya a hacer algo con sesiones debe añadirse este fragmento en el código (antes de cualquier otra cosa que envíe datos al navegador):
session_start();
Posteriormente se pueden definir (o redefinir) variables de sesión, en este caso si el usuario está registrado y el idioma de preferencia:
$_SESSION['logado'] = 'si';
$_SESSION['idioma'] = 'ingles';
O destruir las variables de sesión anteriormente definidas:
$_SESSION = array();
session_destroy();
Se puede definir el tiempo que durará la sesión (hay que ponerlo antes del session_start();), en este caso 1 hora (3600 segundos):
session_set_cookie_params(3600);