Airport Web Development

Avanzando en PRE mientras espero el avión a Palma, para unas ¿merecidas? mini vacaciones =)

Airport WebDev at Munich

Acompañado de una requisima “helles bier” (una de varias) …

Posted: July 2nd, 2009 | Author: lichi | Filed under: development, personal | No Comments »

Sobrecarga en PHP 4.x

Una de las cosas que mas extraño a la hora de desarrollar en PHP es poder Sobrecargar métodos. Dado que PHP no lo soporta, al menos en sus versiones 4.x.

La sobrecarga es la habilidad que tienen muchos lenguajes OOP para poder definir varios métodos con el mismo nombre pero con diferentes números/tipos de parámetros. De esta manera se ejecuta uno u otro dependiendo la cantidad y los tipos de parámetros pasados.

Sin embargo podemos recurrir a un pequeño truco para poder sobrecargar métodos dependiendo el número de parámetros. La sobrecarga por tipos de datos no se puede hacer dado que no hay tipos de datos en PHP.


class MiClase  {

  function MiClase() {
    $nombre="MiClase".func_num_args();
    $this->$nombre();
  }

  function MiClase1($x) {
    //código;
  }

  function MiClase2($x,$y) {
    //código;
  }

}

De esta manera, con func_num_args() obtenemos el numero de parámetros pasados al constructor de MiClase, y en base a ese valor generamos el nombre de la función a llamar en $nombre. Fácil, no? ;)

Posted: March 26th, 2007 | Author: lichi | Filed under: development, php | Tags: , | No Comments »

EZ Results y Postgre

Desarrollando una aplicación PHP contra una DB Postgre, me encontré con un pequeño problema a la hora de hacer la paginación de resultados.
Dado que estoy usando la clase ezSQL para manipular la base de datos desde una capa abstraída, decidí, también, utilizar la clase de paginación EZ Results. Ambas creadas por JV Multimedia [1].
El problema es que esta clase no tiene soporte para Postgre, dado que el manejo de la clausula LIMIT es distinto a MySQL.
No hubo mucho de que preocuparse. Simplemente buscamos la linea donde se hace referencia al LIMIT de la consulta y la modificamos de la siguiente manera:

Original:
LIMIT {$_REQUEST['BRSR']},$this->num_results_per_page

Modificamos por:
OFFSET {$_REQUEST['BRSR']} LIMIT $this->num_results_per_page

Luego, desde el archivo donde queremos paginar nuestros resultados simplemente:

include_once “lib/ez_results.php”;
$ezr->query_mysql(“select campo1, campo2 from tabla”);
$ezr->display();

Fácil, ¿no? ;)

[1] http://www.woyano.com/jv/ezsql

Lisandro Grassini

Posted: March 9th, 2007 | Author: lichi | Filed under: development, php, postgre | Tags: , , | 1 Comment »

Tipos de cursores con CSS

La propiedad cursor en CSS nos permite seleccionar el tipo de cursor (puntero) que tendrá un determinado elemento en nuestra aplicación.

Por ejemplo:


<div style='cursor: pointer;'>

Contenido aquí...

</div>

Este ejemplo mostrará un cursor de tipo “pointer” (la tradicional manito que aparece sobre los links estándar).

Los tipos de cursores predeterminados disponibles son:

default

pointer

e-resize ó w-resize

n-resize ó s-resize

ne-resize ó sw-resize

nw-resize ó se-resize

crosshair

move

help

text

wait

También es posible definir cursores personalizados. Para ello debemos utilizar el parámetro “url” de la propiedad cursor:


<div style='cursor: url(images/mi-cursor.cur);'>

Este bloque tendrá un cursor personalizado

</div>

Los cursores personalizados no son mas que bitmaps (imágenes BMP) con la extensión “.cur”.

Es recomendable en caso de usar cursores personalizados definir también un cursor estandar, el cual se mostrará en caso de no poder mostrarse el cursor definido:


<div style='cursor: url(images/mi-cursor.cur), pointer;'>

Este bloque tendrá un cursor personalizado.

Si no se puede cargar se mostrará el segundo definido: pointer.

</div>
Posted: November 12th, 2004 | Author: lichi | Filed under: css, development, xhtml | No Comments »

Suma de Números en JavaScript

Me encontré que en algunos casos cuando quiero sumar un valor numérico a una variable en lugar de realizar dicha operación matemática concatena ambos valores como si fueran un string.

Esto no ocurre si ambos valores son enteros puros. El problema se da por ejemplo si alguno de los valores de la suma están almacenados en un array.

Por ejemplo:


var values = "2 4 6 8";

var splitValues = values.split(" ");

var y = 10;

y += splitValues[2];

alert(y);

Este ejemplo devolverá el valor “106″ en lugar del esperado: 16.

Para solucionar este comportamiento no deseado tenemos que indicarle a JavaScript que interprete dicho valor como número y no como cadena. Para eso podemos utilizar la función parseInt :


var values = "2 4 6 8";

var splitValues = values.split(" ");

var y = 10;

y += parseInt(splitValues[2]);

alert(y);

De esta forma le decimos a JavaScript que interprete splitValues[2] como un entero y obtenemos el resultado esperado: 16.

También podemos utilizar parseFloat si queremos que JS interprete un string como decimal en lugar de entero.

Para mas info: http://www.w3schools.com/jsref/jsref_parseInt.asp

Posted: November 2nd, 2004 | Author: lichi | Filed under: development, javascript | Tags: | No Comments »

Split en Javascript

Split, una de las funciones de manipulación de cadenas que mas usaba en VB6 afortunadamente tiene una implementación muy similar en JavaScript.

Esta función es particularmente útil a la hora de “parsear” valores concatenados en un string.

La forma de utilizar split en Javascript es: miCadena.split( Separador, [Limite])

Veamos un ejemplo del mundo real:


var vResult= "value1|value2|value3";

var vSplitResult = vResult.split("|");

alert("El primer valor es " + vSplitResult[0]);
alert("El segundo valor es " + vSplitResult[1]);

Como vemos, la función “split” genera un array con cada uno de los elementos contenidos

en el string vResult concatenados por “|”.

Veamos otro ejemplo: Esta vez recorriendo el array generado mediante un bucle:


var vResult= "value1 value2 value2 value4 value5 value6";
var vSplitResult = vResult.split(" ");

for(i = 0; i < vSplitResult.length; i++){
document.write("* Item " + i + " = " +
vSplitResult[i] + "<br />");
}

Para mas info pueden consultar la referencia de la función en W3 School.

Posted: September 9th, 2004 | Author: lichi | Filed under: development, javascript | Tags: | 1 Comment »